;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; |		  Licensed to: SRI, 1 computer,	std, 05/2007		    |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; |		  Licensed to: SRI, 1 computer,	std, 05/2007		    |
; +-------------------------------------------------------------------------+
;
; Input	MD5   :	9C4C27B7B2E19C1C60654D0EF6C1A88C

; File Name   :	u:\work\9c4c27b7b2e19c1c60654d0ef6c1a88c_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00112000 (1122304.)
; Section size in file		: 00112000 (1122304.)
; Offset to raw	data for section: 00001000
; Flags	E0000040: Data Executable Readable Writable
; Alignment	: default

		.686p
		.mmx
		.model flat

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

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
___		segment	para public 'CODE' use32
		assume cs:___
		;org 401000h
		assume es:nothing, ss:nothing, ds:___, fs:nothing, gs:nothing
		db 5 dup(0CCh)
; ---------------------------------------------------------------------------
		jmp	near ptr dword_430920
; ---------------------------------------------------------------------------
		jmp	loc_412D80
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422150
; ---------------------------------------------------------------------------
		jmp	near ptr dword_432540
; ---------------------------------------------------------------------------
		jmp	near ptr dword_420EA0

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

; Attributes: thunk


sub_40101E	proc near		; CODE XREF: ___:004119B3p
		jmp	sub_4119E0
sub_40101E	endp


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

; Attributes: thunk


sub_401023	proc near		; CODE XREF: sub_40B250+4Dp
					; sub_40B250+5Ap ...
		jmp	sub_403C50
sub_401023	endp

; ---------------------------------------------------------------------------
		jmp	loc_40B0E0

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

; Attributes: thunk


sub_40102D	proc near		; CODE XREF: sub_404010+4DAp
					; ___:004052D6p ...
		jmp	sub_40A110
sub_40102D	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B3F0

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

; Attributes: thunk


sub_401037	proc near		; CODE XREF: sub_4135E0+3Bp
					; ___:00414C00p
		jmp	sub_4156D0
sub_401037	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4342D0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_434150
; ---------------------------------------------------------------------------
		jmp	near ptr dword_423A40

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

; Attributes: thunk


sub_40104B	proc near		; CODE XREF: sub_418590+248p
		jmp	sub_40D210
sub_40104B	endp


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

; Attributes: thunk


sub_401050	proc near		; CODE XREF: ___:0040B11Ap
					; ___:0040B16Ap
		jmp	near ptr dword_433C70
sub_401050	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_421D30

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

; Attributes: thunk


sub_40105A	proc near		; CODE XREF: sub_40C1A0+8p
		jmp	sub_40C360
sub_40105A	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432BB0
; ---------------------------------------------------------------------------
		jmp	loc_41C710

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

; Attributes: thunk


sub_401069	proc near		; CODE XREF: ___:00416FAAp
		jmp	near ptr dword_41FCD0
sub_401069	endp


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

; Attributes: thunk


sub_40106E	proc near		; CODE XREF: sub_40C040+32p
		jmp	sub_40C200
sub_40106E	endp


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

; Attributes: thunk


sub_401073	proc near		; CODE XREF: ___:00416FBAp
		jmp	sub_418390
sub_401073	endp


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

; Attributes: thunk


sub_401078	proc near		; CODE XREF: sub_415920+6Ap
					; sub_416380+32p
		jmp	sub_4162C0
sub_401078	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_421B50
; ---------------------------------------------------------------------------
		jmp	loc_41ADE0
; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_7. PRESS KEYPAD	"+" TO EXPAND]
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422270

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

; Attributes: thunk


sub_401091	proc near		; CODE XREF: ___:0040C523p
		jmp	sub_40CBB0
sub_401091	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4292E0

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

; Attributes: thunk


sub_40109B	proc near		; CODE XREF: sub_4075C0+Ap
		jmp	sub_407660
sub_40109B	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4245E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4340E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431C80
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B0B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_41E3C0

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

; Attributes: thunk


sub_4010B9	proc near		; CODE XREF: sub_418430+D0p
					; sub_418590+2Dp
		jmp	sub_418B20
sub_4010B9	endp


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

; Attributes: thunk


sub_4010BE	proc near		; CODE XREF: ___:00410909p
					; ___:004109C0p ...
		jmp	sub_411930
sub_4010BE	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4321F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4224C0

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

; Attributes: thunk


sub_4010CD	proc near		; CODE XREF: sub_40AAD0+58p
					; sub_40AAD0+82p ...
		jmp	sub_40ACC0
sub_4010CD	endp

; ---------------------------------------------------------------------------
		jmp	loc_419BE0

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

; Attributes: thunk


sub_4010D7	proc near		; CODE XREF: sub_416110+7p
		jmp	sub_416740
sub_4010D7	endp


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

; Attributes: thunk


sub_4010DC	proc near		; CODE XREF: sub_415600+5Bp
					; sub_415F70+11p ...
		jmp	sub_4161C0
sub_4010DC	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42AD90
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421DB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4225D0
; ---------------------------------------------------------------------------
		jmp	loc_413E30
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422010
; ---------------------------------------------------------------------------
		jmp	loc_4144D0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_428240

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

; Attributes: thunk


sub_401104	proc near		; CODE XREF: sub_415B00+11p
					; sub_415B00+27p ...
		jmp	sub_416570
sub_401104	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434600
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422250

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

; Attributes: thunk


sub_401113	proc near		; CODE XREF: ___:00416B5Bp
		jmp	sub_417B60
sub_401113	endp


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

; Attributes: thunk


sub_401118	proc near		; CODE XREF: ___:00404D2Ap
					; ___:00404E6Fp ...
		jmp	sub_412A40
sub_401118	endp

; ---------------------------------------------------------------------------
		jmp	loc_4193C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_430770
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F6C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42AD20
; ---------------------------------------------------------------------------
		jmp	near ptr dword_423860
; ---------------------------------------------------------------------------
		jmp	near ptr dword_433240

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

; Attributes: thunk


sub_40113B	proc near		; CODE XREF: sub_415140+38p
		jmp	sub_415A90
sub_40113B	endp


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

; Attributes: thunk


sub_401140	proc near		; CODE XREF: sub_41BA50+F7p
					; sub_41BA50+10Bp ...
		jmp	sub_409F80
sub_401140	endp


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

; Attributes: thunk


sub_401145	proc near		; CODE XREF: sub_4099F0+Ap
		jmp	sub_409AE0
sub_401145	endp


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

; Attributes: thunk


sub_40114A	proc near		; CODE XREF: sub_4134A0+55p
					; sub_4134A0+94p ...
		jmp	sub_415860
sub_40114A	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4236F0

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

; Attributes: thunk


sub_401154	proc near		; CODE XREF: ___:00414C8Ep
		jmp	sub_415600
sub_401154	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_428920
; ---------------------------------------------------------------------------
		jmp	loc_4119B0

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

; Attributes: thunk


sub_401163	proc near		; CODE XREF: sub_415ED0+11p
					; sub_415ED0+27p ...
		jmp	sub_4166F0
sub_401163	endp

; ---------------------------------------------------------------------------
		jmp	loc_41D830

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

; Attributes: thunk


sub_40116D	proc near		; CODE XREF: sub_418C10+23p
					; sub_418E80+11p
		jmp	sub_418F60
sub_40116D	endp


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

; Attributes: thunk


sub_401172	proc near		; CODE XREF: sub_418B90+3p
					; sub_418F90+54p
		jmp	sub_418DE0
sub_401172	endp


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

; Attributes: thunk


sub_401177	proc near		; CODE XREF: sub_4096E0+6Ap
					; sub_4096E0+103p
		jmp	sub_409980
sub_401177	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433B30

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

; Attributes: thunk


sub_401181	proc near		; CODE XREF: ___:00413E4Dp
		jmp	sub_413C40
sub_401181	endp


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

; Attributes: thunk


sub_401186	proc near		; CODE XREF: ___:0041A2E4p
		jmp	sub_41B0E0
sub_401186	endp


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

; Attributes: thunk


sub_40118B	proc near		; CODE XREF: sub_4134A0+88p
					; sub_4148A0+BFp ...
		jmp	sub_415A30
sub_40118B	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434BA0

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

; Attributes: thunk


sub_401195	proc near		; CODE XREF: sub_418590+119p
		jmp	sub_40DBF0
sub_401195	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_431D40

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

; Attributes: thunk


sub_40119F	proc near		; CODE XREF: sub_407230+11p
					; sub_4073C0+1Fp
		jmp	sub_407460
sub_40119F	endp


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

; Attributes: thunk


sub_4011A4	proc near		; CODE XREF: sub_403720+3B5p
					; sub_403720+3C5p ...
		jmp	sub_403E50
sub_4011A4	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_422290

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

; Attributes: thunk


sub_4011AE	proc near		; CODE XREF: sub_40C330+Ap
		jmp	sub_40C3F0
sub_4011AE	endp


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

; Attributes: thunk


sub_4011B3	proc near		; CODE XREF: sub_403720+1Dp
					; sub_407080+1Fp ...
		jmp	sub_403CC0
sub_4011B3	endp


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

; Attributes: thunk


sub_4011B8	proc near		; CODE XREF: sub_4132F0+54p
		jmp	sub_415490
sub_4011B8	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C670
; ---------------------------------------------------------------------------
		jmp	loc_40AFE0

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

; Attributes: thunk


sub_4011C7	proc near		; CODE XREF: ___:00414C9Dp
		jmp	sub_414D40
sub_4011C7	endp


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

; Attributes: thunk


sub_4011CC	proc near		; CODE XREF: sub_407660+7p
					; sub_409AE0+7p ...
		jmp	sub_407690
sub_4011CC	endp


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

; Attributes: thunk


sub_4011D1	proc near		; CODE XREF: sub_4135E0+73p
					; ___:00414C3Dp ...
		jmp	sub_4156F0
sub_4011D1	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_420630

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

; Attributes: thunk


sub_4011DB	proc near		; CODE XREF: sub_413E70+84p
		jmp	sub_4138B0
sub_4011DB	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_431060

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

; Attributes: thunk


sub_4011E5	proc near		; CODE XREF: sub_407510+8p
		jmp	sub_4075F0
sub_4011E5	endp


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

; Attributes: thunk


sub_4011EA	proc near		; CODE XREF: ___:00404D5Fp
					; ___:00404EF0p ...
		jmp	sub_40A510
sub_4011EA	endp


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

; Attributes: thunk


sub_4011EF	proc near		; CODE XREF: sub_40A870+21p
					; sub_40AAD0+A5p
		jmp	sub_40AAB0
sub_4011EF	endp

; ---------------------------------------------------------------------------
		jmp	loc_40B050

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

; Attributes: thunk


sub_4011F9	proc near		; CODE XREF: sub_40A510+129p
					; sub_40A8F0+4p ...
		jmp	sub_40A8C0
sub_4011F9	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_427940
; ---------------------------------------------------------------------------
		jmp	near ptr dword_430D60

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

; Attributes: thunk


sub_401208	proc near		; CODE XREF: sub_407340+3p
					; sub_4073C0+4Fp ...
		jmp	sub_4074D0
sub_401208	endp


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

; Attributes: thunk


sub_40120D	proc near		; CODE XREF: ___:0041DC76p
					; ___:0041DD40p
		jmp	near ptr dword_421970
sub_40120D	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4221E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C810

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

; Attributes: thunk


sub_40121C	proc near		; CODE XREF: sub_418590+D4p
		jmp	sub_4077E0
sub_40121C	endp


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

; Attributes: thunk


sub_401221	proc near		; CODE XREF: sub_40C200+5Fp
		jmp	sub_40C3D0
sub_401221	endp


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

; Attributes: thunk


sub_401226	proc near		; CODE XREF: sub_403530+F6p
					; sub_403530+12Ep ...
		jmp	sub_409D10
sub_401226	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_421B30
; ---------------------------------------------------------------------------
		jmp	near ptr dword_41F960

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

; Attributes: thunk


sub_401235	proc near		; CODE XREF: ___:00416BFBp
		jmp	sub_4177B0
sub_401235	endp


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

; Attributes: thunk


sub_40123A	proc near		; CODE XREF: sub_40AFA0+Fp
		jmp	near ptr dword_431240
sub_40123A	endp


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

; Attributes: thunk


sub_40123F	proc near		; CODE XREF: sub_418C10+32p
		jmp	sub_418E80
sub_40123F	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434860

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

; Attributes: thunk


sub_401249	proc near		; CODE XREF: sub_415500+5p
					; sub_415710+6p ...
		jmp	sub_416130
sub_401249	endp


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

; Attributes: thunk


sub_40124E	proc near		; CODE XREF: sub_40BD90+29p
					; sub_40BEB0+29p
		jmp	sub_40C040
sub_40124E	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_421BF0

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

; Attributes: thunk


sub_401258	proc near		; CODE XREF: sub_4145A0+BFp
		jmp	sub_4152E0
sub_401258	endp


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

; Attributes: thunk


sub_40125D	proc near		; CODE XREF: sub_4165E0+Ap
		jmp	sub_416920
sub_40125D	endp


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

; Attributes: thunk


sub_401262	proc near		; CODE XREF: ___:00416C67p
		jmp	sub_4170B0
sub_401262	endp


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

; Attributes: thunk


sub_401267	proc near		; CODE XREF: sub_418590+291p
		jmp	sub_418430
sub_401267	endp

; ---------------------------------------------------------------------------
		jmp	loc_416D30

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

; Attributes: thunk


sub_401271	proc near		; CODE XREF: ___:00416F1Fp
		jmp	sub_4180D0
sub_401271	endp

; ---------------------------------------------------------------------------
		jmp	loc_414760
; ---------------------------------------------------------------------------
		jmp	near ptr dword_430320

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

; Attributes: thunk


sub_401280	proc near		; CODE XREF: ___:004103B7p
		jmp	sub_41B7E0
sub_401280	endp


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

; Attributes: thunk


sub_401285	proc near		; CODE XREF: ___:00416F5Ap
		jmp	sub_418280
sub_401285	endp


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

; Attributes: thunk


sub_40128A	proc near		; CODE XREF: sub_409570+8p
		jmp	sub_4095C0
sub_40128A	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42AD20

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

; Attributes: thunk


sub_401294	proc near		; CODE XREF: sub_4096E0+A5p
					; sub_412C90+21p
		jmp	sub_4098F0
sub_401294	endp


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

; Attributes: thunk


sub_401299	proc near		; CODE XREF: ___:00405042p
					; ___:0041DEDAp
		jmp	sub_41C130
sub_401299	endp


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

; Attributes: thunk


sub_40129E	proc near		; CODE XREF: ___:00416E6Fp
		jmp	sub_403720
sub_40129E	endp


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

; Attributes: thunk


sub_4012A3	proc near		; CODE XREF: sub_418CC0+23p
					; sub_418F90+11p
		jmp	sub_4190E0
sub_4012A3	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_424410
; ---------------------------------------------------------------------------
		jmp	near ptr dword_430960

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

; Attributes: thunk


sub_4012B2	proc near		; CODE XREF: sub_404010+4BEp
					; ___:0040551Ap ...
		jmp	sub_40A370
sub_4012B2	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432780
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421D80
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427FD0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4247B0

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

; Attributes: thunk


sub_4012CB	proc near		; CODE XREF: sub_416220+9p
					; sub_4162C0+18p
		jmp	sub_4168D0
sub_4012CB	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432D70
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FE50
; ---------------------------------------------------------------------------
		jmp	loc_419CB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_41FFF0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431560

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

; Attributes: thunk


sub_4012E9	proc near		; CODE XREF: sub_413740+3Fp
					; sub_4145A0+40p ...
		jmp	sub_415230
sub_4012E9	endp


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

; Attributes: thunk


sub_4012EE	proc near		; CODE XREF: sub_404690+19Fp
					; sub_404690+212p ...
		jmp	sub_409FD0
sub_4012EE	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_424F00
; ---------------------------------------------------------------------------
		jmp	near ptr dword_424F70

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

; Attributes: thunk


sub_4012FD	proc near		; CODE XREF: ___:00416F3Ap
		jmp	sub_418180
sub_4012FD	endp


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

; Attributes: thunk


sub_401302	proc near		; CODE XREF: ___:00416F0Fp
		jmp	sub_418010
sub_401302	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_431750
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427740

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

; Attributes: thunk


sub_401311	proc near		; CODE XREF: sub_418430+71p
					; sub_418430+BBp ...
		jmp	sub_418AF0
sub_401311	endp


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

; Attributes: thunk


sub_401316	proc near		; CODE XREF: sub_40A180+7p
		jmp	sub_40A1A0
sub_401316	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432BF0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4327B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421CD0

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

; Attributes: thunk


sub_40132A	proc near		; CODE XREF: sub_414430+5Bp
		jmp	sub_415100
sub_40132A	endp


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

; Attributes: thunk


sub_40132F	proc near		; CODE XREF: sub_415490+29p
					; sub_4155B0+29p
		jmp	sub_416030
sub_40132F	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4370F0

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

; Attributes: thunk


sub_401339	proc near		; CODE XREF: sub_4134A0+5Fp
					; sub_4134A0+9Ep ...
		jmp	sub_415A60
sub_401339	endp


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

; Attributes: thunk


sub_40133E	proc near		; CODE XREF: sub_40B600+62p
					; ___:0040BAC8p ...
		jmp	sub_40BF40
sub_40133E	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4313B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FF30
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C690
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C5D0

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

; Attributes: thunk


sub_401357	proc near		; CODE XREF: sub_416190+8p
		jmp	sub_4167B0
sub_401357	endp


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

; Attributes: thunk


sub_40135C	proc near		; CODE XREF: sub_4134A0+71p
					; sub_4134A0:loc_41356Cp ...
		jmp	sub_415A10
sub_40135C	endp


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

; Attributes: thunk


sub_401361	proc near		; CODE XREF: sub_418430+AFp
					; sub_4190E0+3p
		jmp	sub_418BB0
sub_401361	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_427D50

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

; Attributes: thunk


sub_40136B	proc near		; CODE XREF: sub_40B600+39p
					; sub_40B600+78p ...
		jmp	sub_40BF70
sub_40136B	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4269A0

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

; Attributes: thunk


sub_401375	proc near		; CODE XREF: sub_41A600+1Cp
		jmp	sub_41A640
sub_401375	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42AF20

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

; Attributes: thunk


sub_40137F	proc near		; CODE XREF: sub_4077E0+14BCp
					; ___:00414551p
		jmp	sub_414300
sub_40137F	endp


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

; Attributes: thunk


sub_401384	proc near		; CODE XREF: sub_418590+72p
		jmp	sub_406C80
sub_401384	endp


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

; Attributes: thunk


sub_401389	proc near		; CODE XREF: sub_409E00+7p
					; sub_409F50+7p ...
		jmp	sub_40A7E0
sub_401389	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_422B40
; ---------------------------------------------------------------------------
		jmp	loc_413BB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C640

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

; Attributes: thunk


sub_40139D	proc near		; CODE XREF: sub_418A00+11p
		jmp	sub_418D50
sub_40139D	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42BB00
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C7E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FEA0
; ---------------------------------------------------------------------------
		jmp	loc_414B30

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

; Attributes: thunk


sub_4013B6	proc near		; CODE XREF: sub_4072E0+1Fp
		jmp	sub_4073C0
sub_4013B6	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4253C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FAA0

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

; Attributes: thunk


sub_4013C5	proc near		; CODE XREF: ___:0040FE43p
					; ___:00416BEBp
		jmp	sub_40FE70
sub_4013C5	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_426520
; ---------------------------------------------------------------------------
		jmp	loc_40D3C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_425370

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

; Attributes: thunk


sub_4013D9	proc near		; CODE XREF: sub_40A9A0+20p
		jmp	sub_40AAD0
sub_4013D9	endp


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

; Attributes: thunk


sub_4013DE	proc near		; CODE XREF: ___:00410B2Dp
					; ___:00410EA1p ...
		jmp	sub_40AFA0
sub_4013DE	endp


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

; Attributes: thunk


sub_4013E3	proc near		; CODE XREF: ___:004055A9p
					; ___:004055B2p ...
		jmp	sub_40A350
sub_4013E3	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_422640

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

; Attributes: thunk


sub_4013ED	proc near		; CODE XREF: sub_404690+87p
					; ___:004109E0p ...
		jmp	sub_40A240
sub_4013ED	endp

; ---------------------------------------------------------------------------
		jmp	loc_41A050
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421CA0

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

; Attributes: thunk


sub_4013FC	proc near		; CODE XREF: sub_418DA0+7p
		jmp	sub_4190A0
sub_4013FC	endp


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

; Attributes: thunk


sub_401401	proc near		; CODE XREF: sub_4162C0+5Fp
		jmp	sub_416890
sub_401401	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B4D0

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

; Attributes: thunk


sub_40140B	proc near		; CODE XREF: sub_4157B0+29p
					; sub_4158D0+29p
		jmp	sub_416380
sub_40140B	endp


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

; Attributes: thunk


sub_401410	proc near		; CODE XREF: sub_413E70+19Ap
		jmp	sub_415890
sub_401410	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4303A0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42E2B0

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

; Attributes: thunk


sub_40141F	proc near		; CODE XREF: ___:00416EFFp
		jmp	sub_417F50
sub_40141F	endp


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

; Attributes: thunk


sub_401424	proc near		; CODE XREF: sub_41B920:loc_41B92Fp
					; sub_41B920+1Fp
		jmp	sub_41B900
sub_401424	endp

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


loc_401429:				; DATA XREF: sub_40AFA0+4o
		jmp	loc_40B070

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

; Attributes: thunk


sub_40142E	proc near		; CODE XREF: sub_403530+61p
					; sub_403CE0+1Dp ...
		jmp	sub_409BC0
sub_40142E	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_437130

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

; Attributes: thunk


sub_401438	proc near		; CODE XREF: sub_418990+29p
		jmp	sub_418C10
sub_401438	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434370
; ---------------------------------------------------------------------------
		jmp	near ptr dword_433E10

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

; Attributes: thunk


sub_401447	proc near		; CODE XREF: ___:00406C23p
					; ___:00416C58p
		jmp	sub_406C50
sub_401447	endp


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

; Attributes: thunk


sub_40144C	proc near		; CODE XREF: sub_404690+370p
					; sub_404690:loc_404A35p ...
		jmp	sub_404C30
sub_40144C	endp


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

; Attributes: thunk


sub_401451	proc near		; CODE XREF: ___:00404F2Bp
					; ___:0040F346p ...
		jmp	sub_40E870
sub_401451	endp


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

; Attributes: thunk


sub_401456	proc near		; CODE XREF: sub_415A60+5p
		jmp	sub_416540
sub_401456	endp


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

; Attributes: thunk


sub_40145B	proc near		; CODE XREF: sub_40B600+1Dp
					; ___:0040BA2Dp ...
		jmp	sub_40BE00
sub_40145B	endp

; ---------------------------------------------------------------------------
		jmp	loc_40B6D0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421C60
; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_2. PRESS KEYPAD	"+" TO EXPAND]

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

; Attributes: thunk


sub_40146F	proc near		; CODE XREF: sub_4151C0+29p
		jmp	sub_415CE0
sub_40146F	endp


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

; Attributes: thunk


sub_401474	proc near		; CODE XREF: sub_4077E0+1310p
					; sub_4077E0+1339p ...
		jmp	sub_409530
sub_401474	endp


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

; Attributes: thunk


sub_401479	proc near		; CODE XREF: sub_404690+30p
					; sub_404690+14Bp ...
		jmp	sub_40A7A0
sub_401479	endp


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

; Attributes: thunk


sub_40147E	proc near		; CODE XREF: ___:00419598p
					; ___:004195AFp
		jmp	sub_419890
sub_40147E	endp


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

; Attributes: thunk


sub_401483	proc near		; CODE XREF: sub_412780+F8p
		jmp	sub_41BD90
sub_401483	endp


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

; Attributes: thunk


sub_401488	proc near		; CODE XREF: sub_413C40+E1p
		jmp	sub_4152A0
sub_401488	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_426B60

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

; Attributes: thunk


sub_401492	proc near		; CODE XREF: ___:0041B5DAp
					; ___:0041B60Ap
		jmp	sub_41A6B0
sub_401492	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4323F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FBD0

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

; Attributes: thunk


sub_4014A1	proc near		; CODE XREF: sub_40EE40+EAp
					; sub_418590+157p
		jmp	sub_40ED00
sub_4014A1	endp

; ---------------------------------------------------------------------------
		jmp	loc_40A7C0
; ---------------------------------------------------------------------------
		jmp	loc_40F210

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

; Attributes: thunk


sub_4014B0	proc near		; CODE XREF: sub_40BE00+14p
					; sub_40BE40+9p ...
		jmp	sub_40C1A0
sub_4014B0	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C530

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

; Attributes: thunk


sub_4014BA	proc near		; CODE XREF: ___:0041CBF7p
					; ___:0041D185p ...
		jmp	sub_41D6D0
sub_4014BA	endp


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

; Attributes: thunk


sub_4014BF	proc near		; CODE XREF: sub_4132F0+48p
		jmp	sub_4157B0
sub_4014BF	endp


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

; Attributes: thunk


sub_4014C4	proc near		; CODE XREF: sub_418590+9Dp
		jmp	sub_40AF60
sub_4014C4	endp

; ---------------------------------------------------------------------------
		jmp	loc_414E10
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427850

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

; Attributes: thunk


sub_4014D3	proc near		; CODE XREF: sub_403530+115p
					; sub_404690+1B8p ...
		jmp	sub_409C60
sub_4014D3	endp


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

; Attributes: thunk


sub_4014D8	proc near		; CODE XREF: sub_40AD50+7p
		jmp	sub_40AE40
sub_4014D8	endp


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

; Attributes: thunk


sub_4014DD	proc near		; CODE XREF: sub_404B60+9p
					; ___:00404D05p ...
		jmp	sub_40A820
sub_4014DD	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_421A60

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

; Attributes: thunk


sub_4014E7	proc near		; CODE XREF: sub_41A210+10p
					; sub_41A3B0+47p ...
		jmp	sub_41A600
sub_4014E7	endp


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

; Attributes: thunk


sub_4014EC	proc near		; CODE XREF: sub_407100+24p
		jmp	sub_4072E0
sub_4014EC	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C4C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4288F0

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

; Attributes: thunk


sub_4014FB	proc near		; CODE XREF: ___:00416C1Bp
		jmp	sub_417640
sub_4014FB	endp


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

; Attributes: thunk


sub_401500	proc near		; CODE XREF: sub_415C20+5Fp
		jmp	sub_416610
sub_401500	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_424840
; ---------------------------------------------------------------------------
		jmp	loc_40A070
; ---------------------------------------------------------------------------
		jmp	loc_419AB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_433F20
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FEF0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FE00
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4224A0
; ---------------------------------------------------------------------------
		jmp	locret_419A30

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

; Attributes: thunk


sub_40152D	proc near		; CODE XREF: ___:0040CE74p
					; sub_40D040+143p ...
		jmp	sub_419A70
sub_40152D	endp


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

; Attributes: thunk


sub_401532	proc near		; CODE XREF: sub_418B70+3p
		jmp	sub_418E00
sub_401532	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C830
; ---------------------------------------------------------------------------
		jmp	near ptr dword_433870

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

; Attributes: thunk


sub_401541	proc near		; CODE XREF: ___:004100C5p
					; ___:004125FDp ...
		jmp	sub_4142E0
sub_401541	endp


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

; Attributes: thunk


sub_401546	proc near		; CODE XREF: sub_40B600+Bp
					; ___:0040BA19p
		jmp	sub_40BF00
sub_401546	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4309A0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422450
; ---------------------------------------------------------------------------
		jmp	near ptr dword_433E50

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

; Attributes: thunk


sub_40155A	proc near		; CODE XREF: sub_418A40+29p
					; sub_418B20+29p
		jmp	sub_418CC0
sub_40155A	endp


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

; Attributes: thunk


sub_40155F	proc near		; CODE XREF: sub_40B250+40p
		jmp	sub_40BD90
sub_40155F	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4316A0

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

; Attributes: thunk


sub_401569	proc near		; CODE XREF: sub_40C0D0+4p
		jmp	sub_40C2E0
sub_401569	endp


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

; Attributes: thunk


sub_40156E	proc near		; CODE XREF: sub_407080+3Cp
		jmp	sub_407230
sub_40156E	endp

; ---------------------------------------------------------------------------
		jmp	loc_41BD20

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

; Attributes: thunk


sub_401578	proc near		; CODE XREF: sub_4152E0+5Bp
					; sub_415C20+11p ...
		jmp	sub_415E70
sub_401578	endp


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

; Attributes: thunk


sub_40157D	proc near		; CODE XREF: ___:00416F8Ap
		jmp	sub_418330
sub_40157D	endp


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

; Attributes: thunk


sub_401582	proc near		; CODE XREF: sub_413740+BEp
					; sub_413740+FCp ...
		jmp	sub_4151C0
sub_401582	endp


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

; Attributes: thunk


sub_401587	proc near		; CODE XREF: ___:00416E9Fp
		jmp	sub_417CC0
sub_401587	endp


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

; Attributes: thunk


sub_40158C	proc near		; CODE XREF: sub_4129D0+39p
					; sub_412A40+A9p
		jmp	sub_412940
sub_40158C	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4323C0

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

; Attributes: thunk


sub_401596	proc near		; CODE XREF: sub_40A510+16Fp
		jmp	sub_40A870
sub_401596	endp


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

; Attributes: thunk


sub_40159B	proc near		; CODE XREF: sub_404010+51p
					; sub_404010+A4p ...
		jmp	sub_407100
sub_40159B	endp


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

; Attributes: thunk


sub_4015A0	proc near		; CODE XREF: sub_4077E0+132Dp
					; sub_4077E0+1356p ...
		jmp	sub_40B760
sub_4015A0	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433280
; ---------------------------------------------------------------------------
		jmp	loc_41A280

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

; Attributes: thunk


sub_4015AF	proc near		; CODE XREF: sub_4160C0+4p
		jmp	sub_416710
sub_4015AF	endp


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

; Attributes: thunk


sub_4015B4	proc near		; CODE XREF: sub_409930+1Ap
					; sub_409980+1Ap
		jmp	sub_4099F0
sub_4015B4	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_429330
; ---------------------------------------------------------------------------
		jmp	near ptr dword_433BE0

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

; Attributes: thunk


sub_4015C3	proc near		; CODE XREF: sub_419270+35p
		jmp	sub_419300
sub_4015C3	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4337B0

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

; Attributes: thunk


sub_4015CD	proc near		; CODE XREF: ___:0041D833p
		jmp	sub_41D860
sub_4015CD	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4334F0

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

; Attributes: thunk


sub_4015D7	proc near		; CODE XREF: sub_415420+5p
		jmp	sub_415EA0
sub_4015D7	endp


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

; Attributes: thunk


sub_4015DC	proc near		; CODE XREF: sub_418AB0+5p
					; sub_418BB0+6p ...
		jmp	sub_418DC0
sub_4015DC	endp


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

; Attributes: thunk


sub_4015E1	proc near		; CODE XREF: ___:0040560Dp
					; sub_406C80+22Cp ...
		jmp	sub_409D60
sub_4015E1	endp


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

; Attributes: thunk


sub_4015E6	proc near		; CODE XREF: ___:00416E5Fp
		jmp	sub_406BF0
sub_4015E6	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_424430

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

; Attributes: thunk


sub_4015F0	proc near		; CODE XREF: sub_415ED0+5Ap
		jmp	sub_416760
sub_4015F0	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_420DD0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42CB20
; ---------------------------------------------------------------------------
		jmp	near ptr dword_429310

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

; Attributes: thunk


sub_401604	proc near		; CODE XREF: ___:00405B4Ep
					; ___:00405CA1p ...
		jmp	near ptr dword_420090
sub_401604	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434960
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431220

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

; Attributes: thunk


sub_401613	proc near		; CODE XREF: sub_418590+20Ep
		jmp	near ptr dword_426C70
sub_401613	endp


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

; Attributes: thunk


sub_401618	proc near		; CODE XREF: sub_4164E0+8p
		jmp	sub_4168B0
sub_401618	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_41E760
; ---------------------------------------------------------------------------
		jmp	loc_41ABA0

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

; Attributes: thunk


sub_401627	proc near		; CODE XREF: sub_40AF80p
		jmp	near ptr dword_4325F0
sub_401627	endp


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

; Attributes: thunk


sub_40162C	proc near		; CODE XREF: sub_407140+1Ap
					; sub_418990+1Ap
		jmp	sub_407270
sub_40162C	endp

; ---------------------------------------------------------------------------
		jmp	loc_416D90
; ---------------------------------------------------------------------------
		jmp	near ptr dword_430360
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4226E0

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

; Attributes: thunk


sub_401640	proc near		; CODE XREF: ___:0041A30Ap
		jmp	sub_41B160
sub_401640	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432850
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431810

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

; Attributes: thunk


sub_40164F	proc near		; CODE XREF: ___:00416EAFp
		jmp	sub_417D60
sub_40164F	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4314E0

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

; Attributes: thunk


sub_401659	proc near		; CODE XREF: sub_40A930+8p
		jmp	sub_40A980
sub_401659	endp


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

; Attributes: thunk


sub_40165E	proc near		; CODE XREF: ___:0041301Ep
		jmp	sub_4131B0
sub_40165E	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4307E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42CAB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C770
; ---------------------------------------------------------------------------
		jmp	loc_4068A0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F640

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

; Attributes: thunk


sub_40167C	proc near		; CODE XREF: sub_4073C0+5Ap
		jmp	sub_4075C0
sub_40167C	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_422890
; ---------------------------------------------------------------------------
		jmp	loc_41B5B0

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

; Attributes: thunk


sub_40168B	proc near		; CODE XREF: sub_403530+BBp
					; ___:00405BF4p ...
		jmp	sub_403700
sub_40168B	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434070

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

; Attributes: thunk


sub_401695	proc near		; CODE XREF: sub_409570+10p
		jmp	sub_409610
sub_401695	endp


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

; Attributes: thunk


sub_40169A	proc near		; CODE XREF: sub_40A510+4Ap
		jmp	sub_40A840
sub_40169A	endp


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

; Attributes: thunk


sub_40169F	proc near		; CODE XREF: ___:00416ECFp
		jmp	sub_40F6D0
sub_40169F	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4333D0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F940

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

; Attributes: thunk


sub_4016AE	proc near		; CODE XREF: sub_40BFA0+9p
					; sub_40C200+18p
		jmp	sub_40C380
sub_4016AE	endp


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

; Attributes: thunk


sub_4016B3	proc near		; CODE XREF: ___:0041DBB3p
		jmp	near ptr dword_42FB70
sub_4016B3	endp


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

; Attributes: thunk


sub_4016B8	proc near		; CODE XREF: sub_403530+CCp
					; sub_404690+EDp ...
		jmp	sub_40A710
sub_4016B8	endp


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

; Attributes: thunk


sub_4016BD	proc near		; CODE XREF: ___:00416EEFp
		jmp	sub_417F20
sub_4016BD	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4245A0

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

; Attributes: thunk


sub_4016C7	proc near		; CODE XREF: sub_412780+E0p
					; sub_4138B0+CEp
		jmp	sub_409F50
sub_4016C7	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F420
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FBA0

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

; Attributes: thunk


sub_4016D6	proc near		; CODE XREF: sub_415140+29p
		jmp	sub_415AD0
sub_4016D6	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_427910

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

; Attributes: thunk


sub_4016E0	proc near		; CODE XREF: sub_4096E0+58p
					; sub_4096E0+82p ...
		jmp	sub_409930
sub_4016E0	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_428210
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421BB0
; ---------------------------------------------------------------------------
		jmp	loc_41AF50
; ---------------------------------------------------------------------------
		jmp	loc_4119B0

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

; Attributes: thunk


sub_4016F9	proc near		; CODE XREF: sub_40A930+10p
		jmp	sub_40A9A0
sub_4016F9	endp


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

; Attributes: thunk


sub_4016FE	proc near		; CODE XREF: sub_418590+219p
		jmp	near ptr dword_4364D0
sub_4016FE	endp


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

; Attributes: thunk


sub_401703	proc near		; CODE XREF: sub_418430+7Bp
					; sub_418430+C5p ...
		jmp	sub_418BE0
sub_401703	endp


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

; Attributes: thunk


sub_401708	proc near		; CODE XREF: sub_4148A0+FCp
		jmp	sub_414A70
sub_401708	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_421B10

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

; Attributes: thunk


sub_401712	proc near		; CODE XREF: sub_40AF60p
		jmp	near ptr dword_432570
sub_401712	endp


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

; Attributes: thunk


sub_401717	proc near		; CODE XREF: sub_4096E0+91p
					; sub_412C90+Dp
		jmp	sub_4098B0
sub_401717	endp

; ---------------------------------------------------------------------------
		jmp	loc_40C4E0
; ---------------------------------------------------------------------------
		jmp	loc_40AEC0

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

; Attributes: thunk


sub_401726	proc near		; CODE XREF: sub_413A80+4Ep
		jmp	sub_415140
sub_401726	endp


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

; Attributes: thunk


sub_40172B	proc near		; CODE XREF: sub_40F6D0+13Dp
		jmp	sub_412C60
sub_40172B	endp


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

; Attributes: thunk


sub_401730	proc near		; CODE XREF: ___:0040F290p
					; sub_418590+132p
		jmp	sub_40E2F0
sub_401730	endp


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

; Attributes: thunk


sub_401735	proc near		; CODE XREF: sub_415140+51p
		jmp	sub_415BA0
sub_401735	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_428AB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_426700
; ---------------------------------------------------------------------------
		jmp	loc_41AFF0

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

; Attributes: thunk


sub_401749	proc near		; CODE XREF: sub_407140+48p
					; sub_407140:loc_4071C5p
		jmp	sub_407340
sub_401749	endp


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

; Attributes: thunk


sub_40174E	proc near		; CODE XREF: sub_40AEF0+2Cp
					; sub_418430+8Fp ...
		jmp	sub_40B020
sub_40174E	endp


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

; Attributes: thunk


sub_401753	proc near		; CODE XREF: sub_403720+2A5p
					; sub_403720+2B5p ...
		jmp	sub_403DE0
sub_401753	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B6F0

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

; Attributes: thunk


sub_40175D	proc near		; CODE XREF: sub_415A90+14p
					; sub_415AD0+9p ...
		jmp	sub_416630
sub_40175D	endp


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

; Attributes: thunk


sub_401762	proc near		; CODE XREF: sub_40B020+10p
		jmp	near ptr dword_431470
sub_401762	endp


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

; Attributes: thunk


sub_401767	proc near		; CODE XREF: ___:0040AFF4p
		jmp	near ptr dword_4348A0
sub_401767	endp


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

; Attributes: thunk


sub_40176C	proc near		; CODE XREF: sub_418E80+5Fp
		jmp	sub_419110
sub_40176C	endp


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

; Attributes: thunk


sub_401771	proc near		; CODE XREF: ___:0041896Cp
		jmp	sub_418590
sub_401771	endp


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

; Attributes: thunk


sub_401776	proc near		; CODE XREF: ___:00416B1Bp
					; ___:00416DE3p
		jmp	sub_416DC0
sub_401776	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_420EC0

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

; Attributes: thunk


sub_401780	proc near		; CODE XREF: ___:00416EBFp
		jmp	sub_417E30
sub_401780	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4322D0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F590
; ---------------------------------------------------------------------------
		jmp	near ptr dword_428880
; ---------------------------------------------------------------------------
		jmp	near ptr dword_426560

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

; Attributes: thunk


sub_401799	proc near		; CODE XREF: ___:00416F9Ap
		jmp	sub_418360
sub_401799	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433200
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4301A0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4291E0

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

; Attributes: thunk


sub_4017AD	proc near		; CODE XREF: ___:00416BCBp
					; ___:00416D93p
		jmp	sub_416D60
sub_4017AD	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B3F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_432A20
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_40AF60


loc_4017BC:				; CODE XREF: sub_40AF60+5j
		jmp	near ptr dword_432670
; END OF FUNCTION CHUNK	FOR sub_40AF60
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431420
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4267A0
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_40AF80


loc_4017CB:				; CODE XREF: sub_40AF80+5j
		jmp	near ptr dword_432690
; END OF FUNCTION CHUNK	FOR sub_40AF80
; ---------------------------------------------------------------------------
		jmp	loc_404CC0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_424870

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

; Attributes: thunk


sub_4017DA	proc near		; CODE XREF: ___:00416B8Bp
		jmp	sub_417A60
sub_4017DA	endp


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

; Attributes: thunk


sub_4017DF	proc near		; CODE XREF: sub_416220+11p
					; sub_416220+27p ...
		jmp	sub_4167F0
sub_4017DF	endp


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

; Attributes: thunk


sub_4017E4	proc near		; CODE XREF: sub_415A10+3p
					; sub_416220+4Fp ...
		jmp	sub_4164A0
sub_4017E4	endp


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

; Attributes: thunk


sub_4017E9	proc near		; CODE XREF: sub_415600+6Ap
					; sub_416030+32p
		jmp	sub_415F70
sub_4017E9	endp


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

; Attributes: thunk


sub_4017EE	proc near		; CODE XREF: sub_403530+DBp
					; sub_404010+3Fp ...
		jmp	sub_40A800
sub_4017EE	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_422470

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

; Attributes: thunk


sub_4017F8	proc near		; CODE XREF: sub_418590+A8p
		jmp	sub_40B2F0
sub_4017F8	endp


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

; Attributes: thunk


sub_4017FD	proc near		; CODE XREF: sub_4068E0+205p
		jmp	sub_41B920
sub_4017FD	endp

; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_8. PRESS KEYPAD	"+" TO EXPAND]
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427D30
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4257F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421B80

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

; Attributes: thunk


sub_401816	proc near		; CODE XREF: sub_40A1F0+7p
					; sub_40D660+2FDp
		jmp	sub_40A210
sub_401816	endp


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

; Attributes: thunk


sub_40181B	proc near		; CODE XREF: sub_40B510+76p
		jmp	sub_40B470
sub_40181B	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_425100
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4219F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_428210

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

; Attributes: thunk


sub_40182F	proc near		; CODE XREF: ___:00416EDFp
		jmp	sub_417EF0
sub_40182F	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FF10
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421D50
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427C50
; ---------------------------------------------------------------------------
		jmp	near ptr dword_424480

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

; Attributes: thunk


sub_401848	proc near		; CODE XREF: sub_40BF20+3p
					; sub_40BFA0+4Fp ...
		jmp	sub_40C160
sub_401848	endp


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

; Attributes: thunk


sub_40184D	proc near		; CODE XREF: sub_407140+36p
					; sub_407140+72p ...
		jmp	sub_407390
sub_40184D	endp


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

; Attributes: thunk


sub_401852	proc near		; CODE XREF: sub_4131F0+61p
		jmp	sub_415770
sub_401852	endp


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

; Attributes: thunk


sub_401857	proc near		; CODE XREF: ___:0040BAB1p
					; ___:0040BB78p ...
		jmp	sub_412B70
sub_401857	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432E20
; ---------------------------------------------------------------------------
		jmp	near ptr dword_432E90

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

; Attributes: thunk


sub_401866	proc near		; CODE XREF: sub_416460+7p
		jmp	sub_416840
sub_401866	endp


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

; Attributes: thunk


sub_40186B	proc near		; CODE XREF: sub_418430+34p
		jmp	sub_404C70
sub_40186B	endp


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

; Attributes: thunk


sub_401870	proc near		; CODE XREF: sub_403530+7Ap
					; sub_403530+9Ep ...
		jmp	sub_409C20
sub_401870	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4208A0

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

; Attributes: thunk


sub_40187A	proc near		; CODE XREF: ___:0041A328p
					; ___:0041B113p
		jmp	sub_41B140
sub_40187A	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B060
; ---------------------------------------------------------------------------
		jmp	loc_41C1E0

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

; Attributes: thunk


sub_401889	proc near		; CODE XREF: ___:00416B4Bp
		jmp	sub_416E10
sub_401889	endp


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

; Attributes: thunk


sub_40188E	proc near		; CODE XREF: ___:00410247p
		jmp	near ptr dword_41FE50
sub_40188E	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_429450
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4290B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B440

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

; Attributes: thunk


sub_4018A2	proc near		; CODE XREF: ___:0041B68Dp
		jmp	sub_41AE30
sub_4018A2	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4341C0

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

; Attributes: thunk


sub_4018AC	proc near		; CODE XREF: ___:00414295p
					; ___:00414FC2p
		jmp	sub_413E70
sub_4018AC	endp


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

; Attributes: thunk


sub_4018B1	proc near		; CODE XREF: ___:00412266p
		jmp	sub_40A1F0
sub_4018B1	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4204D0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_433000

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

; Attributes: thunk


sub_4018C0	proc near		; CODE XREF: sub_40A9F0+14p
		jmp	sub_40ACA0
sub_4018C0	endp


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

; Attributes: thunk


sub_4018C5	proc near		; CODE XREF: sub_4135E0+B4p
					; ___:00414C60p ...
		jmp	sub_415710
sub_4018C5	endp


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

; Attributes: thunk


sub_4018CA	proc near		; CODE XREF: sub_41A3B0+6Dp
					; sub_41A3B0+1B5p
		jmp	sub_41B060
sub_4018CA	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_431D80

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

; Attributes: thunk


sub_4018D4	proc near		; CODE XREF: sub_418F90+5Fp
		jmp	sub_419130
sub_4018D4	endp


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

; Attributes: thunk


sub_4018D9	proc near		; CODE XREF: ___:00416B9Bp
		jmp	sub_4179F0
sub_4018D9	endp

; ---------------------------------------------------------------------------
		jmp	loc_419ED0
; ---------------------------------------------------------------------------
		jmp	loc_41A1E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4219B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42ACB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422620
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422690
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422670

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

; Attributes: thunk


sub_401901	proc near		; CODE XREF: sub_4134A0+43p
					; sub_4148A0+4Fp ...
		jmp	sub_415820
sub_401901	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_431D00
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421E50
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421F80

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

; Attributes: thunk


sub_401915	proc near		; CODE XREF: sub_40B470+6Dp
		jmp	sub_40BE70
sub_401915	endp


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

; Attributes: thunk


sub_40191A	proc near		; CODE XREF: sub_409530+13p
		jmp	loc_409660
sub_40191A	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4378B0
; ---------------------------------------------------------------------------
		jmp	loc_41B110
; ---------------------------------------------------------------------------
		jmp	loc_416DE0

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

; Attributes: thunk


sub_40192E	proc near		; CODE XREF: ___:00413C01p
		jmp	sub_413A80
sub_40192E	endp


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

; Attributes: thunk


sub_401933	proc near		; CODE XREF: sub_4131F0+73p
					; sub_4132F0+32p
		jmp	sub_4155B0
sub_401933	endp


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

; Attributes: thunk


sub_401938	proc near		; CODE XREF: ___:00416C4Bp
		jmp	sub_417120
sub_401938	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432390
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4347E0

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

; Attributes: thunk


sub_401947	proc near		; CODE XREF: ___:0041C801p
					; ___:0041C980p ...
		jmp	near ptr dword_420F10
sub_401947	endp

; ---------------------------------------------------------------------------
		jmp	loc_40A4E0

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

; Attributes: thunk


sub_401951	proc near		; CODE XREF: ___:00404F43p
					; sub_40EE40+D2p ...
		jmp	sub_40F060
sub_401951	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_421FD0

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

; Attributes: thunk


sub_40195B	proc near		; CODE XREF: ___:004058B1p
		jmp	sub_406730
sub_40195B	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433650
; ---------------------------------------------------------------------------
		jmp	near ptr dword_41FC30

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

; Attributes: thunk


sub_40196A	proc near		; CODE XREF: ___:0041A29Ep
					; sub_41A3B0+Bp ...
		jmp	sub_41A390
sub_40196A	endp


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

; Attributes: thunk


sub_40196F	proc near		; CODE XREF: ___:0041AC86p
					; ___:0041AD66p
		jmp	sub_41A990
sub_40196F	endp


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

; Attributes: thunk


sub_401974	proc near		; CODE XREF: sub_418590+274p
		jmp	sub_419320
sub_401974	endp


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

; Attributes: thunk


sub_401979	proc near		; CODE XREF: sub_4119E0+2Ep
					; sub_411BE0+3p
		jmp	sub_411B20
sub_401979	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_421AA0

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

; Attributes: thunk


sub_401983	proc near		; CODE XREF: sub_409530+4p
					; sub_4096E0+1Fp ...
		jmp	sub_4095E0
sub_401983	endp


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

; Attributes: thunk


sub_401988	proc near		; CODE XREF: sub_418590+88p
		jmp	sub_409B10
sub_401988	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_41FF50

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

; Attributes: thunk


sub_401992	proc near		; CODE XREF: sub_4135E0+4Ap
					; ___:00414C0Fp ...
		jmp	sub_415500
sub_401992	endp


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

; Attributes: thunk


sub_401997	proc near		; CODE XREF: sub_40A510+A8p
		jmp	sub_40A930
sub_401997	endp


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

; Attributes: thunk


sub_40199C	proc near		; CODE XREF: ___:0040CCD1p
		jmp	sub_40CF40
sub_40199C	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434450
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421EF0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FFE0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FFB0

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

; Attributes: thunk


sub_4019B5	proc near		; CODE XREF: sub_40A870+Dp
					; sub_40AAD0+91p
		jmp	sub_40A9F0
sub_4019B5	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4226B0
; ---------------------------------------------------------------------------
		jmp	loc_41AC20

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

; Attributes: thunk


sub_4019C4	proc near		; CODE XREF: sub_404010+2Cp
					; sub_404010+7Fp ...
		jmp	sub_403530
sub_4019C4	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4228C0
; ---------------------------------------------------------------------------
		jmp	loc_416D30
; ---------------------------------------------------------------------------
		jmp	loc_40FE40

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

; Attributes: thunk


sub_4019D8	proc near		; CODE XREF: sub_407460+4p
		jmp	sub_407590
sub_4019D8	endp


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

; Attributes: thunk


sub_4019DD	proc near		; CODE XREF: ___:0040B709p
					; ___:0040BB26p ...
		jmp	sub_40B600
sub_4019DD	endp


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

; Attributes: thunk


sub_4019E2	proc near		; CODE XREF: ___:00410B24p
					; ___:00410E9Ap
		jmp	sub_411BE0
sub_4019E2	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433C30

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

; Attributes: thunk


sub_4019EC	proc near		; CODE XREF: sub_4145A0+CEp
		jmp	sub_414710
sub_4019EC	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42CB70
; ---------------------------------------------------------------------------
		jmp	loc_41D830
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422030

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

; Attributes: thunk


sub_401A00	proc near		; CODE XREF: ___:00416E8Fp
		jmp	sub_40B190
sub_401A00	endp


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

; Attributes: thunk


sub_401A05	proc near		; CODE XREF: sub_418590+B3p
		jmp	sub_4133B0
sub_401A05	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4201F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421950
; ---------------------------------------------------------------------------
		jmp	near ptr dword_428940

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

; Attributes: thunk


sub_401A19	proc near		; CODE XREF: sub_418590+236p
		jmp	sub_411C10
sub_401A19	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_431C30
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4292B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427D00
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422340

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

; Attributes: thunk


sub_401A32	proc near		; CODE XREF: ___:00416BDBp
					; ___:00416D33p
		jmp	sub_416D00
sub_401A32	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_420E00
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422720

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

; Attributes: thunk


sub_401A41	proc near		; CODE XREF: ___:00412F9Fp
					; ___:00413054p
		jmp	sub_404690
sub_401A41	endp


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

; Attributes: thunk


sub_401A46	proc near		; CODE XREF: sub_409530+1Ap
					; sub_409610+4p ...
		jmp	sub_4095A0
sub_401A46	endp

; ---------------------------------------------------------------------------
		jmp	loc_40FE40
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427990
; ---------------------------------------------------------------------------
		jmp	near ptr dword_426070
; ---------------------------------------------------------------------------
		jmp	loc_409E30

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

; Attributes: thunk


sub_401A5F	proc near		; CODE XREF: sub_415BA0+1Ep
		jmp	sub_416650
sub_401A5F	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_431630

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

; Attributes: thunk


sub_401A69	proc near		; CODE XREF: sub_4138B0+3Ep
		jmp	near ptr dword_434BF0
sub_401A69	endp


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

; Attributes: thunk


sub_401A6E	proc near		; CODE XREF: sub_414A70+3p
		jmp	sub_414AA0
sub_401A6E	endp


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

; Attributes: thunk


sub_401A73	proc near		; CODE XREF: sub_4077E0+AB9p
					; sub_4077E0+F4Ap
		jmp	sub_409570
sub_401A73	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4276C0

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

; Attributes: thunk


sub_401A7D	proc near		; CODE XREF: ___:0041DADDp
		jmp	near ptr dword_42DB00
sub_401A7D	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4208C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4302E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422850

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

; Attributes: thunk


sub_401A91	proc near		; CODE XREF: ___:00416F4Ap
		jmp	sub_418200
sub_401A91	endp


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

; Attributes: thunk


sub_401A96	proc near		; CODE XREF: sub_407270+5p
					; sub_407360+6p ...
		jmp	sub_4074B0
sub_401A96	endp


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

; Attributes: thunk


sub_401A9B	proc near		; CODE XREF: sub_403530+90p
					; ___:004050CCp ...
		jmp	sub_40A780
sub_401A9B	endp


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

; Attributes: thunk


sub_401AA0	proc near		; CODE XREF: ___:0041DC2Fp
		jmp	near ptr dword_41FE90
sub_401AA0	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_430B30

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

; Attributes: thunk


sub_401AAA	proc near		; CODE XREF: sub_415570+1Fp
		jmp	sub_415ED0
sub_401AAA	endp


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

; Attributes: thunk


sub_401AAF	proc near		; CODE XREF: sub_403530+E5p
					; sub_409F50+Fp ...
		jmp	sub_409E80
sub_401AAF	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434A00
; ---------------------------------------------------------------------------
		jmp	near ptr dword_434770
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4227C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427D00
; ---------------------------------------------------------------------------
		jmp	near ptr dword_424E20
; ---------------------------------------------------------------------------
		jmp	loc_4120B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_41FB90

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

; Attributes: thunk


sub_401AD7	proc near		; CODE XREF: sub_407140+Bp
		jmp	sub_407320
sub_401AD7	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433E90
; ---------------------------------------------------------------------------
		jmp	loc_40B9B0

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

; Attributes: thunk


sub_401AE6	proc near		; CODE XREF: sub_403F30+2Bp
					; sub_403F30+3Bp ...
		jmp	sub_403D60
sub_401AE6	endp


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

; Attributes: thunk


sub_401AEB	proc near		; CODE XREF: sub_4135E0+66p
					; sub_4135E0+CAp ...
		jmp	sub_415740
sub_401AEB	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B880

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

; Attributes: thunk


sub_401AF5	proc near		; CODE XREF: sub_418590+203p
		jmp	near ptr dword_4228F0
sub_401AF5	endp


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

; Attributes: thunk


sub_401AFA	proc near		; CODE XREF: ___:00416C2Bp
		jmp	sub_40B250
sub_401AFA	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4216D0

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

; Attributes: thunk


sub_401B04	proc near		; CODE XREF: sub_404C30+15p
		jmp	sub_407140
sub_401B04	endp

; ---------------------------------------------------------------------------
		jmp	loc_41A1E0

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

; Attributes: thunk


sub_401B0E	proc near		; CODE XREF: ___:0041700Fp
		jmp	sub_418A00
sub_401B0E	endp

; ---------------------------------------------------------------------------
		jmp	loc_40CBD0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B060

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

; Attributes: thunk


sub_401B1D	proc near		; CODE XREF: sub_4170B0+28p
		jmp	sub_418990
sub_401B1D	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432D10
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4316C0

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

; Attributes: thunk


sub_401B2C	proc near		; CODE XREF: sub_418590+2AAp
		jmp	sub_40AF80
sub_401B2C	endp


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

; Attributes: thunk


sub_401B31	proc near		; CODE XREF: sub_418D50+2Bp
					; sub_418F90+28p ...
		jmp	sub_419050
sub_401B31	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C7E0

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

; Attributes: thunk


sub_401B3B	proc near		; CODE XREF: ___:00416B7Bp
		jmp	sub_417AD0
sub_401B3B	endp


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

; Attributes: thunk


sub_401B40	proc near		; CODE XREF: sub_4077E0+FE9p
					; sub_4077E0+100Ap ...
		jmp	sub_4076B0
sub_401B40	endp

; ---------------------------------------------------------------------------
		jmp	loc_414BC0

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

; Attributes: thunk


sub_401B4A	proc near		; CODE XREF: ___:0041C793p
		jmp	sub_41D640
sub_401B4A	endp


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

; Attributes: thunk


sub_401B4F	proc near		; CODE XREF: sub_41A990+11p
		jmp	sub_41A9C0
sub_401B4F	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_421D10

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

; Attributes: thunk


sub_401B59	proc near		; CODE XREF: sub_414D40+3p
		jmp	sub_414D70
sub_401B59	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433F90
; ---------------------------------------------------------------------------
		jmp	near ptr dword_430830

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

; Attributes: thunk


sub_401B68	proc near		; CODE XREF: sub_40FE70+38p
		jmp	sub_412C90
sub_401B68	endp


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

; Attributes: thunk


sub_401B6D	proc near		; CODE XREF: sub_418590+112p
		jmp	sub_40D660
sub_401B6D	endp


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

; Attributes: thunk


sub_401B72	proc near		; CODE XREF: sub_4076B0+3Bp
					; sub_407740+43p
		jmp	sub_40B510
sub_401B72	endp


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

; Attributes: thunk


sub_401B77	proc near		; CODE XREF: sub_407320+3p
		jmp	sub_4074F0
sub_401B77	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4246D0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_426EC0

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

; Attributes: thunk


sub_401B86	proc near		; CODE XREF: ___:00410443p
					; ___:00410F99p ...
		jmp	sub_40A040
sub_401B86	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4267D0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422510

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

; Attributes: thunk


sub_401B95	proc near		; CODE XREF: ___:0041B655p
		jmp	sub_41A7D0
sub_401B95	endp


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

; Attributes: thunk


sub_401B9A	proc near		; CODE XREF: sub_40C040+23p
					; sub_40C200+11p
		jmp	sub_40C3A0
sub_401B9A	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42CB50

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

; Attributes: thunk


sub_401BA4	proc near		; CODE XREF: sub_418590+25Ep
		jmp	near ptr dword_41E240
sub_401BA4	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432940

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

; Attributes: thunk


sub_401BAE	proc near		; CODE XREF: sub_409610+20p
		jmp	sub_4096E0
sub_401BAE	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_423800
; ---------------------------------------------------------------------------
		jmp	loc_40CC90
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431CC0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4220B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4283D0

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

; Attributes: thunk


sub_401BCC	proc near		; CODE XREF: sub_415820+5p
					; sub_415A30+6p ...
		jmp	sub_416480
sub_401BCC	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4317C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431EF0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427C90

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

; Attributes: thunk


sub_401BE0	proc near		; CODE XREF: ___:0041B4D3p
		jmp	sub_41B500
sub_401BE0	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_429540
; ---------------------------------------------------------------------------
		jmp	near ptr dword_426BD0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F2C0

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

; Attributes: thunk


sub_401BF4	proc near		; CODE XREF: sub_414300+3Cp
		jmp	sub_414430
sub_401BF4	endp


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

; Attributes: thunk


sub_401BF9	proc near		; CODE XREF: sub_418590+28Ap
		jmp	sub_40C440
sub_401BF9	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_424920

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

; Attributes: thunk


sub_401C03	proc near		; CODE XREF: sub_40B190+6Ep
					; sub_40B250+34p ...
		jmp	sub_40BEB0
sub_401C03	endp


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

; Attributes: thunk


sub_401C08	proc near		; CODE XREF: sub_40B190+5Cp
		jmp	sub_40BD50
sub_401C08	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433AB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_432410
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431980
; ---------------------------------------------------------------------------
		jmp	near ptr dword_430020

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

; Attributes: thunk


sub_401C21	proc near		; CODE XREF: sub_418590+253p
		jmp	near ptr dword_435AA0
sub_401C21	endp


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

; Attributes: thunk


sub_401C26	proc near		; CODE XREF: sub_4138B0+84p
		jmp	near ptr dword_434C30
sub_401C26	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C350
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B8E0
; ---------------------------------------------------------------------------
		jmp	loc_41B720
; ---------------------------------------------------------------------------
		jmp	near ptr dword_432DB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4292E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_41FD80

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

; Attributes: thunk


sub_401C49	proc near		; CODE XREF: sub_41B0E0+8p
					; ___:0041B49Dp ...
		jmp	sub_41A110
sub_401C49	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B420
; ---------------------------------------------------------------------------
		jmp	loc_41AE80
; ---------------------------------------------------------------------------
		jmp	loc_416A90

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

; Attributes: thunk


sub_401C5D	proc near		; CODE XREF: sub_40BE70+1Fp
		jmp	sub_40BFA0
sub_401C5D	endp


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

; Attributes: thunk


sub_401C62	proc near		; CODE XREF: sub_415B00+9p
					; sub_415C20+18p
		jmp	sub_4166D0
sub_401C62	endp


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

; Attributes: thunk


sub_401C67	proc near		; CODE XREF: sub_418D50+4p
		jmp	sub_419070
sub_401C67	endp


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

; Attributes: thunk


sub_401C6C	proc near		; CODE XREF: sub_4073C0+11p
					; sub_4073C0+27p ...
		jmp	sub_407570
sub_401C6C	endp


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

; Attributes: thunk


sub_401C71	proc near		; CODE XREF: ___:00404DD1p
					; ___:00405B87p ...
		jmp	sub_40A2D0
sub_401C71	endp


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

; Attributes: thunk


sub_401C76	proc near		; CODE XREF: sub_4131F0+7Ap
					; sub_4132F0+3Cp ...
		jmp	sub_4158D0
sub_401C76	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FCB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_426B10

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

; Attributes: thunk


sub_401C85	proc near		; CODE XREF: sub_40B600+2Fp
					; sub_40B600+6Ep ...
		jmp	sub_40BE40
sub_401C85	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433FB0

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

; Attributes: thunk


sub_401C8F	proc near		; CODE XREF: sub_415450+11p
					; sub_415ED0+1Fp
		jmp	sub_4160C0
sub_401C8F	endp

; ---------------------------------------------------------------------------
		jmp	loc_41D930
; ---------------------------------------------------------------------------
		jmp	loc_419A10

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

; Attributes: thunk


sub_401C9E	proc near		; CODE XREF: sub_4073C0+9p
					; sub_418E80+18p
		jmp	sub_407610
sub_401C9E	endp


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

; Attributes: thunk


sub_401CA3	proc near		; CODE XREF: ___:004132C3p
					; ___:00416C3Bp
		jmp	sub_4132F0
sub_401CA3	endp

; ---------------------------------------------------------------------------
		jmp	loc_40B8F0
; ---------------------------------------------------------------------------
		jmp	loc_416D90
; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_4. PRESS KEYPAD	"+" TO EXPAND]

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

; Attributes: thunk


sub_401CB7	proc near		; CODE XREF: ___:00416F6Ap
		jmp	sub_4182B0
sub_401CB7	endp


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

; Attributes: thunk


sub_401CBC	proc near		; CODE XREF: sub_415BA0+Cp
					; sub_415BA0+43p
		jmp	sub_4166A0
sub_401CBC	endp


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

; Attributes: thunk


sub_401CC1	proc near		; CODE XREF: sub_4096E0+45p
		jmp	sub_4099C0
sub_401CC1	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434430
; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_1. PRESS KEYPAD	"+" TO EXPAND]

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

; Attributes: thunk


sub_401CD0	proc near		; CODE XREF: ___:004103D4p
		jmp	sub_40A0E0
sub_401CD0	endp


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

; Attributes: thunk


sub_401CD5	proc near		; CODE XREF: sub_4077E0+6BCp
					; sub_4077E0+763p ...
		jmp	sub_407740
sub_401CD5	endp


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

; Attributes: thunk


sub_401CDA	proc near		; CODE XREF: sub_415500+14p
					; sub_415540+9p ...
		jmp	sub_416190
sub_401CDA	endp


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

; Attributes: thunk


sub_401CDF	proc near		; CODE XREF: sub_4096E0+144p
		jmp	sub_409A50
sub_401CDF	endp


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

; Attributes: thunk


sub_401CE4	proc near		; CODE XREF: sub_404690+1C2p
					; sub_404B60+36p ...
		jmp	sub_4134A0
sub_401CE4	endp


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

; Attributes: thunk


sub_401CE9	proc near		; CODE XREF: sub_4151C0+34p
					; sub_415C20+67p
		jmp	sub_415DC0
sub_401CE9	endp


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

; Attributes: thunk


sub_401CEE	proc near		; CODE XREF: sub_418590+2C2p
		jmp	sub_409B80
sub_401CEE	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_41FD00
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F3A0

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

; Attributes: thunk


sub_401CFD	proc near		; CODE XREF: sub_40BF70+5p
		jmp	sub_40C1D0
sub_401CFD	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_430520
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422400
; ---------------------------------------------------------------------------
		jmp	loc_4132C0

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

; Attributes: thunk


sub_401D11	proc near		; CODE XREF: sub_415890+1Fp
		jmp	sub_416220
sub_401D11	endp


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

; Attributes: thunk


sub_401D16	proc near		; CODE XREF: sub_40F6D0+1ACp
					; sub_40F6D0+1EDp ...
		jmp	sub_40F660
sub_401D16	endp


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

; Attributes: thunk


sub_401D1B	proc near		; CODE XREF: sub_413E70+15Cp
		jmp	sub_414160
sub_401D1B	endp


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

; Attributes: thunk


sub_401D20	proc near		; CODE XREF: sub_404C70+23p
					; ___:004113F2p
		jmp	sub_412BF0
sub_401D20	endp


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

; Attributes: thunk


sub_401D25	proc near		; CODE XREF: ___:00416F2Fp
		jmp	sub_418150
sub_401D25	endp


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

; Attributes: thunk


sub_401D2A	proc near		; CODE XREF: sub_407590+7p
					; sub_40C2E0+7p ...
		jmp	sub_407630
sub_401D2A	endp


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

; Attributes: thunk


sub_401D2F	proc near		; CODE XREF: sub_40A8F0+1Ap
					; sub_40A9A0+4p ...
		jmp	sub_40A960
sub_401D2F	endp


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

; Attributes: thunk


sub_401D34	proc near		; CODE XREF: sub_404690+289p
					; sub_404690+2ADp
		jmp	sub_40A180
sub_401D34	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4305A0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4295B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F970

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

; Attributes: thunk


sub_401D48	proc near		; CODE XREF: sub_418590+C0p
		jmp	sub_404010
sub_401D48	endp


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

; Attributes: thunk


sub_401D4D	proc near		; CODE XREF: ___:004121D3p
					; ___:00412292p
		jmp	sub_412780
sub_401D4D	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B570
; ---------------------------------------------------------------------------
		jmp	loc_40B870
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4222E0

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

; Attributes: thunk


sub_401D61	proc near		; CODE XREF: sub_415F70+5Fp
		jmp	sub_416790
sub_401D61	endp


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

; Attributes: thunk


sub_401D66	proc near		; CODE XREF: ___:0041DBF7p
		jmp	near ptr dword_42FD30
sub_401D66	endp


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

; Attributes: thunk


sub_401D6B	proc near		; CODE XREF: sub_418CA0+7p
		jmp	sub_418F40
sub_401D6B	endp


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

; Attributes: thunk


sub_401D70	proc near		; CODE XREF: sub_413740+5Dp
					; sub_413740+9Bp ...
		jmp	sub_415420
sub_401D70	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_437390

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

; Attributes: thunk


sub_401D7A	proc near		; CODE XREF: sub_415820+14p
					; sub_415860+9p ...
		jmp	sub_4164E0
sub_401D7A	endp

; ---------------------------------------------------------------------------
		jmp	loc_40B960
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431950
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4222B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42DAD0

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

; Attributes: thunk


sub_401D93	proc near		; CODE XREF: sub_418590+1F8p
		jmp	sub_41C490
sub_401D93	endp


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

; Attributes: thunk


sub_401D98	proc near		; CODE XREF: sub_418AB0+14p
					; sub_418AF0+9p
		jmp	sub_418E20
sub_401D98	endp


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

; Attributes: thunk


sub_401D9D	proc near		; CODE XREF: sub_413740+53p
					; sub_413740+91p ...
		jmp	sub_415270
sub_401D9D	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_426B90
; ---------------------------------------------------------------------------
		jmp	near ptr dword_426A90
; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_6. PRESS KEYPAD	"+" TO EXPAND]
; ---------------------------------------------------------------------------
		jmp	near ptr dword_428DC0

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

; Attributes: thunk


sub_401DB6	proc near		; CODE XREF: sub_415770+11p
					; sub_416220+1Fp
		jmp	sub_416410
sub_401DB6	endp


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

; Attributes: thunk


sub_401DBB	proc near		; CODE XREF: sub_415230+14p
					; sub_415270+9p ...
		jmp	sub_415E40
sub_401DBB	endp


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

; Attributes: thunk


sub_401DC0	proc near		; CODE XREF: ___:004147E3p
		jmp	sub_4145A0
sub_401DC0	endp

; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_3. PRESS KEYPAD	"+" TO EXPAND]
; ---------------------------------------------------------------------------
		jmp	near ptr dword_425DC0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_428810
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C1B0
; ---------------------------------------------------------------------------
		jmp	loc_4141F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_432AE0
; ---------------------------------------------------------------------------
		jmp	loc_40B150

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

; Attributes: thunk


sub_401DE8	proc near		; CODE XREF: sub_40AAD0+45p
		jmp	sub_40AD50
sub_401DE8	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432C80
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4281A0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_432D50

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

; Attributes: thunk


sub_401DFC	proc near		; CODE XREF: ___:00410B17p
					; ___:00410E8Dp
		jmp	near ptr dword_41EF70
sub_401DFC	endp


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

; Attributes: thunk


sub_401E01	proc near		; CODE XREF: sub_40AD80+Ap
		jmp	sub_40AE70
sub_401E01	endp


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

; Attributes: thunk


sub_401E06	proc near		; CODE XREF: ___:00416B3Bp
		jmp	sub_417BE0
sub_401E06	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_422420

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

; Attributes: thunk


sub_401E10	proc near		; CODE XREF: ___:0040C751p
		jmp	near ptr dword_423760
sub_401E10	endp


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

; Attributes: thunk


sub_401E15	proc near		; CODE XREF: sub_416220+5Ap
		jmp	sub_416860
sub_401E15	endp


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

; Attributes: thunk


sub_401E1A	proc near		; CODE XREF: sub_415DC0+7p
		jmp	sub_4165C0
sub_401E1A	endp


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

; Attributes: thunk


sub_401E1F	proc near		; CODE XREF: ___:0041DACBp
		jmp	near ptr dword_42DA80
sub_401E1F	endp


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

; Attributes: thunk


sub_401E24	proc near		; CODE XREF: sub_404010+49Bp
					; ___:004054F5p ...
		jmp	sub_4129D0
sub_401E24	endp

; ---------------------------------------------------------------------------
		jmp	loc_4132C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_429510

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

; Attributes: thunk


sub_401E33	proc near		; CODE XREF: sub_415490+34p
					; sub_415F70+67p
		jmp	sub_416110
sub_401E33	endp


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

; Attributes: thunk


sub_401E38	proc near		; CODE XREF: sub_413740+31p
					; sub_4145A0+2Dp
		jmp	sub_4153B0
sub_401E38	endp


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

; Attributes: thunk


sub_401E3D	proc near		; CODE XREF: ___:0040CE81p
		jmp	near ptr dword_426930
sub_401E3D	endp


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

; Attributes: thunk


sub_401E42	proc near		; CODE XREF: sub_4159F0+3p
		jmp	sub_4164C0
sub_401E42	endp


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

; Attributes: thunk


sub_401E47	proc near		; CODE XREF: sub_404690+97p
					; sub_404690+107p ...
		jmp	sub_40A4A0
sub_401E47	endp

; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_5. PRESS KEYPAD	"+" TO EXPAND]
; ---------------------------------------------------------------------------
		jmp	near ptr dword_426020
; ---------------------------------------------------------------------------
		jmp	near ptr dword_423950
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422310
; ---------------------------------------------------------------------------
		jmp	loc_416E30

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

; Attributes: thunk


sub_401E65	proc near		; CODE XREF: sub_418590+22Fp
		jmp	near ptr dword_4368D0
sub_401E65	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4369E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4310A0

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

; Attributes: thunk


sub_401E74	proc near		; CODE XREF: sub_4166A0+5p
		jmp	sub_4168F0
sub_401E74	endp


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

; Attributes: thunk


sub_401E79	proc near		; CODE XREF: ___:00404F4Dp
					; ___:0041DFD3p
		jmp	sub_40DC20
sub_401E79	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_422700
; ---------------------------------------------------------------------------
		jmp	loc_419F90

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

; Attributes: thunk


sub_401E88	proc near		; CODE XREF: sub_40F6D0+22p
					; sub_411930+1Dp ...
		jmp	sub_40AEA0
sub_401E88	endp


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

; Attributes: thunk


sub_401E8D	proc near		; CODE XREF: sub_40AAD0+112p
					; sub_40AAD0+153p
		jmp	sub_40ADB0
sub_401E8D	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B110

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

; Attributes: thunk


sub_401E97	proc near		; CODE XREF: sub_4156D0+3p
		jmp	sub_416170
sub_401E97	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_427B10

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

; Attributes: thunk


sub_401EA1	proc near		; CODE XREF: ___:00416C0Bp
		jmp	sub_4176E0
sub_401EA1	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4331B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_420400
; ---------------------------------------------------------------------------
		jmp	near ptr dword_428260
; ---------------------------------------------------------------------------
		jmp	near ptr dword_433AF0

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

; Attributes: thunk


sub_401EBA	proc near		; CODE XREF: sub_416410+4p
		jmp	sub_416810
sub_401EBA	endp


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

; Attributes: thunk


sub_401EBF	proc near		; CODE XREF: sub_415920+5Bp
					; sub_4162C0+11p ...
		jmp	sub_416510
sub_401EBF	endp


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

; Attributes: thunk


sub_401EC4	proc near		; CODE XREF: sub_415740+5p
		jmp	sub_4161F0
sub_401EC4	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4248E0

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

; Attributes: thunk


sub_401ECE	proc near		; CODE XREF: ___:00416BABp
		jmp	sub_417930
sub_401ECE	endp


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

; Attributes: thunk


sub_401ED3	proc near		; CODE XREF: sub_4153B0+3p
		jmp	sub_415E20
sub_401ED3	endp


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

; Attributes: thunk


sub_401ED8	proc near		; CODE XREF: sub_415100+11p
					; sub_415140+13p ...
		jmp	sub_415D70
sub_401ED8	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_422050
; ---------------------------------------------------------------------------
		jmp	loc_418960
; ---------------------------------------------------------------------------
		jmp	loc_41C350

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

; Attributes: thunk


sub_401EEC	proc near		; CODE XREF: sub_418F90+18p
		jmp	sub_419150
sub_401EEC	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4227E0
; ---------------------------------------------------------------------------
		jmp	loc_41BD50
; ---------------------------------------------------------------------------
		jmp	near ptr dword_433BA0

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

; Attributes: thunk


sub_401F00	proc near		; CODE XREF: ___:00416B0Bp
		jmp	sub_417C20
sub_401F00	endp


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

; Attributes: thunk


sub_401F05	proc near		; CODE XREF: sub_40A8F0+13p
		jmp	loc_40AA30
sub_401F05	endp


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

; Attributes: thunk


sub_401F0A	proc near		; CODE XREF: sub_418590:loc_418721p
					; sub_41B160:loc_41B1ACp ...
		jmp	sub_4199A0
sub_401F0A	endp


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

; Attributes: thunk


sub_401F0F	proc near		; CODE XREF: sub_414300+95p
		jmp	sub_415570
sub_401F0F	endp


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

; Attributes: thunk


sub_401F14	proc near		; CODE XREF: sub_4157B0+34p
					; sub_4162C0+67p
		jmp	sub_416460
sub_401F14	endp


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

; Attributes: thunk


sub_401F19	proc near		; CODE XREF: sub_4153D0+3p
					; sub_415B00+4Fp ...
		jmp	sub_415E00
sub_401F19	endp


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

; Attributes: thunk


sub_401F1E	proc near		; CODE XREF: sub_418590+269p
		jmp	sub_412CE0
sub_401F1E	endp


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

; Attributes: thunk


sub_401F23	proc near		; CODE XREF: sub_4131F0+4Dp
		jmp	sub_415450
sub_401F23	endp


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

; Attributes: thunk


sub_401F28	proc near		; CODE XREF: sub_407140+5Cp
					; sub_418F60+3p
		jmp	sub_407360
sub_401F28	endp


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

; Attributes: thunk


sub_401F2D	proc near		; CODE XREF: sub_4191B0+53p
		jmp	sub_419270
sub_401F2D	endp


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

; Attributes: thunk


sub_401F32	proc near		; CODE XREF: sub_40BFA0+5Ap
		jmp	sub_40C330
sub_401F32	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C0A0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_435B90
; ---------------------------------------------------------------------------
		jmp	near ptr dword_423D10

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

; Attributes: thunk


sub_401F46	proc near		; CODE XREF: ___:00416B6Bp
		jmp	sub_417B40
sub_401F46	endp


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

; Attributes: thunk


sub_401F4B	proc near		; CODE XREF: sub_413C40+99p
		jmp	sub_413E10
sub_401F4B	endp


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

; Attributes: thunk


sub_401F50	proc near		; CODE XREF: sub_40B470+3Dp
					; ___:0040BC0Dp ...
		jmp	sub_40B7E0
sub_401F50	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_423820

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

; Attributes: thunk


sub_401F5A	proc near		; CODE XREF: ___:004056F8p
		jmp	sub_4068E0
sub_401F5A	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C640

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

; Attributes: thunk


sub_401F64	proc near		; CODE XREF: sub_413A80+72p
		jmp	sub_413740
sub_401F64	endp


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

; Attributes: thunk


sub_401F69	proc near		; CODE XREF: sub_418430+5Fp
					; sub_418A40+1Ap ...
		jmp	sub_418AB0
sub_401F69	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_430290
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42E5B0

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

; Attributes: thunk


sub_401F78	proc near		; CODE XREF: sub_40B600+4Bp
					; sub_40B600:loc_40B68Bp ...
		jmp	sub_40BF20
sub_401F78	endp


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

; Attributes: thunk


sub_401F7D	proc near		; CODE XREF: sub_418590+241p
		jmp	near ptr dword_41E500
sub_401F7D	endp


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

; Attributes: thunk


sub_401F82	proc near		; CODE XREF: sub_40A510+142p
		jmp	sub_40A8F0
sub_401F82	endp


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

; Attributes: thunk


sub_401F87	proc near		; CODE XREF: sub_404690+35Dp
					; sub_404690+39Ep
		jmp	sub_404B60
sub_401F87	endp


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

; Attributes: thunk


sub_401F8C	proc near		; CODE XREF: sub_415ED0+9p
					; sub_415F70+18p
		jmp	sub_4167D0
sub_401F8C	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432ED0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C2C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4277B0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_429120
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B090
; ---------------------------------------------------------------------------
		jmp	loc_406C20
; ---------------------------------------------------------------------------
		jmp	loc_40D540

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

; Attributes: thunk


sub_401FB4	proc near		; CODE XREF: sub_4096E0+112p
					; sub_4096E0+153p
		jmp	sub_409A20
sub_401FB4	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_422870

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

; Attributes: thunk


sub_401FBE	proc near		; CODE XREF: sub_407390+5p
		jmp	sub_407540
sub_401FBE	endp


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

; Attributes: thunk


sub_401FC3	proc near		; CODE XREF: sub_413740+6Fp
					; sub_413740+DBp ...
		jmp	sub_4153D0
sub_401FC3	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42CB20

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

; Attributes: thunk


sub_401FCD	proc near		; CODE XREF: sub_4152E0+6Ap
					; sub_415CE0+32p
		jmp	sub_415C20
sub_401FCD	endp


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

; Attributes: thunk


sub_401FD2	proc near		; CODE XREF: sub_418590+14Ap
		jmp	sub_40F100
sub_401FD2	endp


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

; Attributes: thunk


sub_401FD7	proc near		; CODE XREF: sub_412BF0+3p
		jmp	sub_412C20
sub_401FD7	endp


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

; Attributes: thunk


sub_401FDC	proc near		; CODE XREF: sub_404690+48p
					; sub_404690+5Dp ...
		jmp	sub_409E00
sub_401FDC	endp

; ---------------------------------------------------------------------------
		jmp	loc_419A50

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

; Attributes: thunk


sub_401FE6	proc near		; CODE XREF: ___:0041A1E3p
					; sub_41B140+9j ...
		jmp	sub_41A210
sub_401FE6	endp


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

; Attributes: thunk


sub_401FEB	proc near		; CODE XREF: sub_40BD90+34p
					; sub_40C200+67p
		jmp	sub_40C120
sub_401FEB	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433980
; ---------------------------------------------------------------------------
		jmp	near ptr dword_436570

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

; Attributes: thunk


sub_401FFA	proc near		; CODE XREF: sub_418590+180p
		jmp	sub_40F180
sub_401FFA	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4375F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_41EEB0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_420040
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431670

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

; Attributes: thunk


sub_402013	proc near		; CODE XREF: ___:00416B2Bp
		jmp	sub_417C00
sub_402013	endp


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

; Attributes: thunk


sub_402018	proc near		; CODE XREF: ___:00416E7Fp
		jmp	sub_4131F0
sub_402018	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_422080
; ---------------------------------------------------------------------------
		jmp	loc_41C0A0
; ---------------------------------------------------------------------------
		jmp	loc_406C20

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

; Attributes: thunk


sub_40202C	proc near		; CODE XREF: sub_404690+2CEp
					; ___:0040512Fp ...
		jmp	sub_40A750
sub_40202C	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434410
; ---------------------------------------------------------------------------
		jmp	loc_41B4D0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422750

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

; Attributes: thunk


sub_402040	proc near		; CODE XREF: sub_404010+454p
					; ___:004054A7p ...
		jmp	sub_41BA50
sub_402040	endp

; ---------------------------------------------------------------------------
		jmp	loc_40AEC0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42D150

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

; Attributes: thunk


sub_40204F	proc near		; CODE XREF: ___:0040AEC3p
					; sub_40FE70+13Ep ...
		jmp	sub_40AEF0
sub_40204F	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_424800

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

; Attributes: thunk


sub_402059	proc near		; CODE XREF: sub_4099C0+7p
		jmp	sub_409AB0
sub_402059	endp


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

; Attributes: thunk


sub_40205E	proc near		; CODE XREF: sub_416760+Ap
		jmp	sub_416970
sub_40205E	endp


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

; Attributes: thunk


sub_402063	proc near		; CODE XREF: sub_418590+27Fp
		jmp	sub_40CBF0
sub_402063	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434320
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421FF0

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

; Attributes: thunk


sub_402072	proc near		; CODE XREF: ___:004108DDp
					; ___:0041098Ep ...
		jmp	sub_411A60
sub_402072	endp


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

; Attributes: thunk


sub_402077	proc near		; CODE XREF: sub_40C120+7p
		jmp	sub_40C310
sub_402077	endp


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

; Attributes: thunk


sub_40207C	proc near		; CODE XREF: sub_418A40+34p
					; sub_418F90+67p
		jmp	sub_418DA0
sub_40207C	endp

; ---------------------------------------------------------------------------
		jmp	loc_409BF0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4292B0

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

; Attributes: thunk


sub_40208B	proc near		; CODE XREF: sub_417120+2Bp
					; sub_417120+3Bp ...
		jmp	sub_403F30
sub_40208B	endp


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

; Attributes: thunk


sub_402090	proc near		; CODE XREF: sub_4098B0+14p
		jmp	sub_409910
sub_402090	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4332C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_428CE0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427940

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

; Attributes: thunk


sub_4020A4	proc near		; CODE XREF: sub_418430+4Dp
		jmp	sub_418B70
sub_4020A4	endp


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

; Attributes: thunk


sub_4020A9	proc near		; CODE XREF: sub_415230+5p
					; sub_4153F0+6p ...
		jmp	sub_415DE0
sub_4020A9	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_427970
; ---------------------------------------------------------------------------
		jmp	loc_41B1F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421720

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

; Attributes: thunk


sub_4020BD	proc near		; CODE XREF: ___:00416E4Fp
		jmp	sub_407080
sub_4020BD	endp


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

; Attributes: thunk


sub_4020C2	proc near		; CODE XREF: sub_413740+83p
					; sub_4145A0+91p ...
		jmp	sub_4153F0
sub_4020C2	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_41F030

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

; Attributes: thunk


sub_4020CC	proc near		; CODE XREF: sub_40AAD0+144p
		jmp	sub_40ADE0
sub_4020CC	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_433CE0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4224E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4225F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B730

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

; Attributes: thunk


sub_4020E5	proc near		; CODE XREF: ___:0041A312p
		jmp	sub_41A3B0
sub_4020E5	endp


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

; Attributes: thunk


sub_4020EA	proc near		; CODE XREF: sub_416860+Ap
		jmp	sub_4169C0
sub_4020EA	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42C5C0

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

; Attributes: thunk


sub_4020F4	proc near		; CODE XREF: sub_415D70+4p
		jmp	sub_416590
sub_4020F4	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_434AD0

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

; Attributes: thunk


sub_4020FE	proc near		; CODE XREF: sub_418E20+8p
		jmp	sub_4190C0
sub_4020FE	endp


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

; Attributes: thunk


sub_402103	proc near		; CODE XREF: sub_418990+34p
					; sub_418E80+67p
		jmp	sub_418CA0
sub_402103	endp


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

; Attributes: thunk


sub_402108	proc near		; CODE XREF: sub_41A7D0+117p
		jmp	sub_41A960
sub_402108	endp


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

; Attributes: thunk


sub_40210D	proc near		; CODE XREF: sub_415BA0+35p
		jmp	sub_416670
sub_40210D	endp


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

; Attributes: thunk


sub_402112	proc near		; CODE XREF: ___:00405119p
					; sub_406730+43p ...
		jmp	sub_409CA0
sub_402112	endp


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

; Attributes: thunk


sub_402117	proc near		; CODE XREF: sub_40BE00+5p
					; sub_40BF40+6p ...
		jmp	sub_40C140
sub_402117	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4308A0

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

; Attributes: thunk


sub_402121	proc near		; CODE XREF: ___:00416F7Ap
		jmp	sub_4191B0
sub_402121	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42AD50

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

; Attributes: thunk


sub_40212B	proc near		; CODE XREF: ___:00410F6Dp
					; ___:004113C2p ...
		jmp	sub_4148A0
sub_40212B	endp


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

; Attributes: thunk


sub_402130	proc near		; CODE XREF: sub_413A80+38p
					; sub_413E70+5Fp
		jmp	sub_4135E0
sub_402130	endp


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

; Attributes: thunk


sub_402135	proc near		; CODE XREF: sub_40A210+14p
					; sub_40A240+7p ...
		jmp	sub_40A260
sub_402135	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42AFF0

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

; Attributes: thunk


sub_40213F	proc near		; CODE XREF: sub_40ACC0+1Ap
					; sub_40AD10+1Ap
		jmp	sub_40AD80
sub_40213F	endp


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

; Attributes: thunk


sub_402144	proc near		; CODE XREF: sub_4156F0+3p
					; sub_415ED0+4Fp ...
		jmp	sub_416150
sub_402144	endp

; ---------------------------------------------------------------------------
		jmp	loc_410030

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

; Attributes: thunk


sub_40214E	proc near		; CODE XREF: sub_4148A0+EDp
		jmp	sub_415920
sub_40214E	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B490

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

; Attributes: thunk


sub_402158	proc near		; CODE XREF: sub_40BF00+3p
		jmp	sub_40C180
sub_402158	endp


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

; Attributes: thunk


sub_40215D	proc near		; CODE XREF: sub_40BFA0+11p
					; sub_40BFA0+27p ...
		jmp	sub_40C2C0
sub_40215D	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4208E0

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

; Attributes: thunk


sub_402167	proc near		; CODE XREF: ___:0041DF7Fp
		jmp	sub_41C170
sub_402167	endp


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

; Attributes: thunk


sub_40216C	proc near		; CODE XREF: sub_418CC0+32p
		jmp	sub_418F90
sub_40216C	endp


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

; Attributes: thunk


sub_402171	proc near		; CODE XREF: sub_40ED00+ACp
					; ___:0040F42Dp
		jmp	sub_40EE40
sub_402171	endp


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

; Attributes: thunk


sub_402176	proc near		; CODE XREF: sub_4138B0+93p
		jmp	near ptr dword_434D10
sub_402176	endp


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

; Attributes: thunk


sub_40217B	proc near		; CODE XREF: sub_4152A0+1Fp
					; sub_415BA0+2Cp
		jmp	sub_415B00
sub_40217B	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4266D0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_421AD0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42B380
; ---------------------------------------------------------------------------
		jmp	loc_409BF0

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

; Attributes: thunk


sub_402194	proc near		; CODE XREF: sub_40AAD0+6Ap
					; sub_40AAD0+103p
		jmp	sub_40AD10
sub_402194	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_426280
; ---------------------------------------------------------------------------
		jmp	near ptr dword_427910
; ---------------------------------------------------------------------------
		jmp	loc_41AD00

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

; Attributes: thunk


sub_4021A8	proc near		; CODE XREF: sub_407270+14p
					; sub_4072B0+9p ...
		jmp	sub_407510
sub_4021A8	endp

; ---------------------------------------------------------------------------
		jmp	loc_416DE0

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

; Attributes: thunk


sub_4021B2	proc near		; CODE XREF: ___:0040B0FBp
		jmp	near ptr dword_433DC0
sub_4021B2	endp


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

; Attributes: thunk


sub_4021B7	proc near		; CODE XREF: sub_415B00+5Ap
		jmp	sub_4165E0
sub_4021B7	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4319F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FD80

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

; Attributes: thunk


sub_4021C6	proc near		; CODE XREF: sub_4077E0+F93p
					; sub_4077E0+FB5p ...
		jmp	sub_4199C0
sub_4021C6	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42DA00

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

; Attributes: thunk


sub_4021D0	proc near		; CODE XREF: sub_40B600+55p
		jmp	sub_40A0B0
sub_4021D0	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_429510
; ---------------------------------------------------------------------------
		jmp	near ptr dword_422230

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

; Attributes: thunk


sub_4021DF	proc near		; CODE XREF: sub_407140+2Cp
					; sub_407140+68p ...
		jmp	sub_4072B0
sub_4021DF	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4346E0

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

; Attributes: thunk


sub_4021E9	proc near		; CODE XREF: ___:0041C8C3p
					; ___:0041CA42p ...
		jmp	sub_41D770
sub_4021E9	endp


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

; Attributes: thunk


sub_4021EE	proc near		; CODE XREF: sub_40BD50+11p
					; sub_40BFA0+1Fp
		jmp	sub_40C0D0
sub_4021EE	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4308E0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_424500

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

; Attributes: thunk


sub_4021FD	proc near		; CODE XREF: ___:00416ABBp
		jmp	sub_418A40
sub_4021FD	endp


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

; Attributes: thunk


sub_402202	proc near		; CODE XREF: sub_418590+224p
		jmp	near ptr dword_42CE60
sub_402202	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42FF70
; ---------------------------------------------------------------------------
		jmp	near ptr dword_430100
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4344C0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F040
; ---------------------------------------------------------------------------
		jmp	loc_407210
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F5C0
; ---------------------------------------------------------------------------
		jmp	locret_418940

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

; Attributes: thunk


sub_40222A	proc near		; CODE XREF: sub_403720+25p
					; sub_403720+35p ...
		jmp	sub_403CE0
sub_40222A	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_4343F0

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

; Attributes: thunk


sub_402234	proc near		; CODE XREF: sub_418430+88p
					; sub_418430+98p
		jmp	sub_418B90
sub_402234	endp


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

; Attributes: thunk


sub_402239	proc near		; CODE XREF: ___:00416BBBp
		jmp	sub_417870
sub_402239	endp


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

; Attributes: thunk


sub_40223E	proc near		; CODE XREF: sub_418BE0+5p
		jmp	sub_418E50
sub_40223E	endp


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

; Attributes: thunk


sub_402243	proc near		; CODE XREF: sub_414710+3p
		jmp	sub_414740
sub_402243	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_431DC0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_4288F0
; ---------------------------------------------------------------------------
		jmp	near ptr dword_431B00

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

; Attributes: thunk


sub_402257	proc near		; CODE XREF: sub_4135E0+5Cp
					; sub_4135E0+C0p ...
		jmp	sub_415540
sub_402257	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_432700
; ---------------------------------------------------------------------------
		jmp	near ptr dword_430460

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

; Attributes: thunk


sub_402266	proc near		; CODE XREF: ___:0041DB33p
		jmp	near ptr dword_42E3C0
sub_402266	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42EF60
; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F490

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

; Attributes: thunk


sub_402275	proc near		; CODE XREF: sub_4134A0+34p
					; sub_4148A0+40p
		jmp	sub_4159F0
sub_402275	endp


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

; Attributes: thunk


sub_40227A	proc near		; CODE XREF: ___:0040CE34p
					; sub_40D040+ADp
		jmp	sub_40D040
sub_40227A	endp

; ---------------------------------------------------------------------------
		jmp	near ptr dword_42F510
; ---------------------------------------------------------------------------
		jmp	near ptr dword_424080
; ---------------------------------------------------------------------------
		jmp	loc_419B90
; ---------------------------------------------------------------------------
		jmp	loc_40CFC0
; ---------------------------------------------------------------------------
		db 129Dh dup(0CCh)

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



sub_403530	proc near		; CODE XREF: sub_4019C4j

var_46C		= dword	ptr -46Ch
var_468		= byte ptr -468h
var_450		= byte ptr -450h
var_438		= byte ptr -438h
var_420		= byte ptr -420h
var_408		= dword	ptr -408h
var_404		= byte ptr -404h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	0FFFFFFFFh
		push	offset SEH_403530
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 460h
		mov	eax, [esp+46Ch+arg_4]
		push	ebp
		push	esi
		push	edi
		mov	[esp+478h+var_408], eax
		mov	eax, [esp+478h+arg_8]
		xor	edi, edi
		mov	esi, 1
		cmp	eax, edi
		mov	[esp+478h+var_46C], edi
		jz	short loc_403589
		lea	edx, [esp+478h+arg_8]
		lea	ecx, [esp+478h+var_404]


loc_40357A:				; CODE XREF: sub_403530+57j
		add	edx, 4
		mov	[ecx], eax
		inc	esi
		add	ecx, 4
		mov	eax, [edx]
		cmp	eax, edi
		jnz	short loc_40357A


loc_403589:				; CODE XREF: sub_403530+3Dj
		lea	ecx, [esp+478h+var_468]
		mov	[esp+esi*4+478h+var_408], edi
		call	sub_40142E
		push	offset dword_4445EC
		lea	ecx, [esp+47Ch+var_438]
		mov	[esp+47Ch+var_4], 1
		call	sub_401870
		push	offset dword_444520
		lea	ecx, [esp+47Ch+var_468]
		mov	byte ptr [esp+47Ch+var_4], 2
		call	sub_401A9B
		push	offset byte_448F30
		lea	ecx, [esp+47Ch+var_450]
		call	sub_401870
		mov	byte ptr [esp+478h+var_4], 3
		xor	esi, esi
		lea	edi, [esp+478h+var_408]


loc_4035E1:				; CODE XREF: sub_403530+105j
		mov	ebp, [edi]
		test	ebp, ebp
		jz	short loc_403637
		lea	ecx, [esp+478h+var_438]
		call	sub_40168B
		dec	ebp
		push	eax
		lea	ecx, [esp+47Ch+var_420]
		push	ebp
		push	ecx
		lea	ecx, [esp+484h+var_468]
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+478h+var_4], 4
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+47Ch+var_450]
		call	sub_401AAF
		lea	ecx, [esp+478h+var_420]
		mov	byte ptr [esp+478h+var_4], 3
		call	sub_401226
		inc	esi
		add	edi, 4
		cmp	esi, 0FFh
		jb	short loc_4035E1


loc_403637:				; CODE XREF: sub_403530+B5j
		mov	esi, [esp+478h+arg_0]
		lea	edx, [esp+478h+var_450]
		push	edx
		mov	ecx, esi
		call	sub_4014D3
		mov	[esp+478h+var_46C], 1
		lea	ecx, [esp+478h+var_450]
		mov	byte ptr [esp+478h+var_4], 2
		call	sub_401226
		lea	ecx, [esp+478h+var_438]
		mov	byte ptr [esp+478h+var_4], 1
		call	sub_401226
		lea	ecx, [esp+478h+var_468]
		mov	byte ptr [esp+478h+var_4], 0
		call	sub_401226
		mov	ecx, [esp+478h+var_C]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		add	esp, 46Ch
		retn
sub_403530	endp

; ---------------------------------------------------------------------------
		db 90h
		db 60h dup(0CCh)

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



sub_403700	proc near		; CODE XREF: sub_40168Bj
		mov	eax, [ecx+9]
		retn
sub_403700	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_403720	proc near		; CODE XREF: sub_40129Ej

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

		push	0FFFFFFFFh
		push	offset SEH_403720
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+9]
		call	sub_40222A
		lea	ecx, [esi+52h]
		mov	[esp+14h+var_4], 0
		call	sub_40222A
		lea	ecx, [esi+9Bh]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_40222A
		lea	ecx, [esi+0E4h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_40222A
		lea	ecx, [esi+12Dh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_40222A
		lea	ecx, [esi+176h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_40222A
		lea	ecx, [esi+1BFh]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_40222A
		lea	ecx, [esi+208h]
		mov	byte ptr [esp+14h+var_4], 6
		call	sub_40222A
		lea	ecx, [esi+251h]
		mov	byte ptr [esp+14h+var_4], 7
		call	sub_40222A
		lea	ecx, [esi+29Ah]
		mov	byte ptr [esp+14h+var_4], 8
		call	sub_40222A
		lea	ecx, [esi+2E3h]
		mov	byte ptr [esp+14h+var_4], 9
		call	sub_40222A
		lea	ecx, [esi+32Ch]
		mov	byte ptr [esp+14h+var_4], 0Ah
		call	sub_40222A
		lea	ecx, [esi+375h]
		mov	byte ptr [esp+14h+var_4], 0Bh
		call	sub_40222A
		lea	ecx, [esi+3BEh]
		mov	byte ptr [esp+14h+var_4], 0Ch
		call	sub_40222A
		lea	ecx, [esi+407h]
		mov	byte ptr [esp+14h+var_4], 0Dh
		call	sub_40222A
		lea	ecx, [esi+450h]
		mov	byte ptr [esp+14h+var_4], 0Eh
		call	sub_40222A
		lea	ecx, [esi+499h]
		mov	byte ptr [esp+14h+var_4], 0Fh
		call	sub_40222A
		lea	ecx, [esi+4E2h]
		mov	byte ptr [esp+14h+var_4], 10h
		call	sub_40222A
		lea	ecx, [esi+52Bh]
		mov	byte ptr [esp+14h+var_4], 11h
		call	sub_40222A
		mov	byte ptr [esp+14h+var_4], 12h
		lea	ecx, [esi+574h]
		call	sub_40222A
		lea	ecx, [esi+5BDh]
		mov	byte ptr [esp+14h+var_4], 13h
		call	sub_40222A
		lea	ecx, [esi+606h]
		mov	byte ptr [esp+14h+var_4], 14h
		call	sub_40222A
		lea	ecx, [esi+64Fh]
		mov	byte ptr [esp+14h+var_4], 15h
		call	sub_40222A
		lea	ecx, [esi+698h]
		mov	byte ptr [esp+14h+var_4], 16h
		call	sub_40222A
		lea	ecx, [esi+6E1h]
		mov	byte ptr [esp+14h+var_4], 17h
		call	sub_40222A
		lea	ecx, [esi+72Ah]
		mov	byte ptr [esp+14h+var_4], 18h
		call	sub_40222A
		lea	ecx, [esi+773h]
		mov	byte ptr [esp+14h+var_4], 19h
		call	sub_40222A
		lea	ecx, [esi+7BCh]
		mov	byte ptr [esp+14h+var_4], 1Ah
		call	sub_40222A
		lea	ecx, [esi+805h]
		mov	byte ptr [esp+14h+var_4], 1Bh
		call	sub_40222A
		lea	ecx, [esi+84Eh]
		mov	byte ptr [esp+14h+var_4], 1Ch
		call	sub_40222A
		lea	ecx, [esi+897h]
		mov	byte ptr [esp+14h+var_4], 1Dh
		call	sub_40222A
		lea	ecx, [esi+8E0h]
		mov	byte ptr [esp+14h+var_4], 1Eh
		call	sub_40222A
		lea	ecx, [esi+929h]
		mov	byte ptr [esp+14h+var_4], 1Fh
		call	sub_40222A
		lea	ecx, [esi+972h]
		mov	byte ptr [esp+14h+var_4], 20h
		call	sub_40222A
		lea	ecx, [esi+9BBh]
		mov	byte ptr [esp+14h+var_4], 21h
		call	sub_40222A
		lea	ecx, [esi+0A04h]
		mov	byte ptr [esp+14h+var_4], 22h
		call	sub_40222A
		lea	ecx, [esi+0A4Dh]
		mov	byte ptr [esp+14h+var_4], 23h
		call	sub_40222A
		lea	ecx, [esi+0A96h]
		mov	byte ptr [esp+14h+var_4], 24h
		call	sub_40222A
		lea	ecx, [esi+0ADFh]
		mov	byte ptr [esp+14h+var_4], 25h
		call	sub_40222A
		lea	ecx, [esi+0B28h]
		mov	byte ptr [esp+14h+var_4], 26h
		call	sub_40222A
		lea	ecx, [esi+0B71h]
		mov	byte ptr [esp+14h+var_4], 27h
		call	sub_401753
		lea	ecx, [esi+0B9Fh]
		mov	byte ptr [esp+14h+var_4], 28h
		call	sub_401753
		lea	ecx, [esi+0BCDh]
		mov	byte ptr [esp+14h+var_4], 29h
		call	sub_401753
		lea	ecx, [esi+0BFBh]
		mov	byte ptr [esp+14h+var_4], 2Ah
		call	sub_401753
		lea	ecx, [esi+0C29h]
		mov	byte ptr [esp+14h+var_4], 2Bh
		call	sub_401753
		lea	ecx, [esi+0C57h]
		mov	byte ptr [esp+14h+var_4], 2Ch
		call	sub_401753
		lea	ecx, [esi+0C85h]
		mov	byte ptr [esp+14h+var_4], 2Dh
		call	sub_401753
		lea	ecx, [esi+0CB3h]
		mov	byte ptr [esp+14h+var_4], 2Eh
		call	sub_401753
		lea	ecx, [esi+0CE1h]
		mov	byte ptr [esp+14h+var_4], 2Fh
		call	sub_401753
		lea	ecx, [esi+0D0Fh]
		mov	byte ptr [esp+14h+var_4], 30h
		call	sub_401753
		lea	ecx, [esi+0D3Dh]
		mov	byte ptr [esp+14h+var_4], 31h
		call	sub_401753
		lea	ecx, [esi+0D6Bh]
		mov	byte ptr [esp+14h+var_4], 32h
		call	sub_401753
		lea	ecx, [esi+0D99h]
		mov	byte ptr [esp+14h+var_4], 33h
		call	sub_401753
		lea	ecx, [esi+0DC7h]
		mov	byte ptr [esp+14h+var_4], 34h
		call	sub_401753
		lea	ecx, [esi+0DF5h]
		mov	byte ptr [esp+14h+var_4], 35h
		call	sub_401753
		lea	ecx, [esi+0E23h]
		mov	byte ptr [esp+14h+var_4], 36h
		call	sub_401753
		lea	ecx, [esi+0E51h]
		mov	byte ptr [esp+14h+var_4], 37h
		call	sub_401753
		lea	ecx, [esi+0E7Fh]
		mov	byte ptr [esp+14h+var_4], 38h
		call	sub_4011A4
		lea	ecx, [esi+10C7h]
		mov	byte ptr [esp+14h+var_4], 39h
		call	sub_4011A4
		lea	ecx, [esi+130Fh]
		mov	byte ptr [esp+14h+var_4], 3Ah
		call	sub_4011A4
		lea	ecx, [esi+1557h]
		mov	byte ptr [esp+14h+var_4], 3Bh
		call	sub_4011A4
		lea	ecx, [esi+179Fh]
		mov	byte ptr [esp+14h+var_4], 3Ch
		call	sub_4011A4
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F000
		mov	byte ptr [esi+4], 0
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403720	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 110h	dup(0CCh)

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



sub_403C50	proc near		; CODE XREF: sub_401023j

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

		push	0FFFFFFFFh
		push	offset SEH_403C50
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_401226
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403C50	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

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



sub_403CC0	proc near		; CODE XREF: sub_4011B3j
		mov	eax, ecx
		mov	dword ptr [eax], offset	dword_43F004
		retn
sub_403CC0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_403CE0	proc near		; CODE XREF: sub_40222Aj

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

		push	0FFFFFFFFh
		push	offset SEH_403CE0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_40142E
		lea	ecx, [esi+1Eh]
		mov	[esp+14h+var_4], 0
		call	sub_40142E
		lea	ecx, [esi+33h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_40142E
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403CE0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)

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



sub_403D60	proc near		; CODE XREF: sub_401AE6j

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

		push	0FFFFFFFFh
		push	offset SEH_403D60
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+33h]
		mov	[esp+14h+var_4], 1
		call	sub_401226
		lea	ecx, [esi+1Eh]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401226
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403D60	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

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



sub_403DE0	proc near		; CODE XREF: sub_401753j

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

		push	0FFFFFFFFh
		push	offset SEH_403DE0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_40142E
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_40142E
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403DE0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 20h dup(0CCh)

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



sub_403E50	proc near		; CODE XREF: sub_4011A4j

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

		push	0FFFFFFFFh
		push	offset SEH_403E50
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_40222A
		lea	ecx, [esi+49h]
		mov	[esp+14h+var_4], 0
		call	sub_40222A
		lea	ecx, [esi+92h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_40222A
		lea	ecx, [esi+0DBh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_40222A
		lea	ecx, [esi+124h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_40222A
		lea	ecx, [esi+16Dh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_40222A
		lea	ecx, [esi+1B6h]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_40222A
		lea	ecx, [esi+1FFh]
		mov	byte ptr [esp+14h+var_4], 6
		call	sub_40222A
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403E50	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

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



sub_403F30	proc near		; CODE XREF: sub_40208Bj

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

		push	0FFFFFFFFh
		push	offset SEH_403F30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+1FFh]
		mov	[esp+14h+var_4], 6
		call	sub_401AE6
		lea	ecx, [esi+1B6h]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_401AE6
		lea	ecx, [esi+16Dh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401AE6
		lea	ecx, [esi+124h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401AE6
		lea	ecx, [esi+0DBh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401AE6
		lea	ecx, [esi+92h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401AE6
		lea	ecx, [esi+49h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401AE6
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401AE6
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403F30	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 30h dup(0CCh)

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



sub_404010	proc near		; CODE XREF: sub_401D48j

var_54		= byte ptr -54h
var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_404010
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 48h
		push	ebp
		push	esi
		push	edi
		push	0
		push	4
		push	9
		push	4Fh
		lea	eax, [esp+70h+var_3C]
		push	2
		mov	esi, ecx
		push	eax
		call	sub_4019C4
		add	esp, 18h
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 0
		call	sub_4017EE
		lea	ecx, [esi+0C29h]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	0Bh
		push	3
		push	9
		push	0Eh
		push	4
		push	0Eh
		push	12h
		push	4Fh
		lea	edx, [esp+84h+var_3C]
		push	2
		push	edx
		call	sub_4019C4
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 1
		call	sub_4017EE
		push	eax
		lea	eax, [esi+0BCDh]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	14h
		push	15h
		push	0Fh
		push	2
		push	1
		push	4Fh
		lea	ecx, [esp+7Ch+var_3C]
		push	2
		push	ecx
		call	sub_4019C4
		add	esp, 24h
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 2
		call	sub_4017EE
		lea	edx, [esi+0C57h]
		push	eax
		push	edx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	5
		push	12h
		push	15h
		push	3
		push	5
		push	13h
		push	4Fh
		lea	eax, [esp+80h+var_3C]
		push	2
		push	eax
		call	sub_4019C4
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 3
		call	sub_4017EE
		lea	ecx, [esi+0DF5h]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	0Fh
		push	6
		push	0Eh
		push	9
		push	13h
		push	19h
		push	13h
		push	4Fh
		lea	edx, [esp+84h+var_3C]
		push	2
		push	edx
		call	sub_4019C4
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 4
		call	sub_4017EE
		push	eax
		lea	eax, [esi+0C85h]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	5
		push	16h
		push	0Fh
		push	0Dh
		push	5
		push	12h
		push	4Fh
		lea	ecx, [esp+80h+var_3C]
		push	2
		push	ecx
		call	sub_4019C4
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 5
		call	sub_4017EE
		lea	edx, [esi+0B71h]
		push	eax
		push	edx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	13h
		push	0Eh
		push	4
		push	8
		push	13h
		push	15h
		push	0Ch
		push	6
		push	4Fh
		lea	eax, [esp+88h+var_3C]
		push	2
		push	eax
		call	sub_4019C4
		add	esp, 30h
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 6
		call	sub_4017EE
		lea	ecx, [esi+0DC7h]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	0Eh
		push	5
		push	10h
		push	0Fh
		push	4Fh
		lea	edx, [esp+78h+var_3C]
		push	2
		push	edx
		call	sub_4019C4
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 7
		call	sub_4017EE
		push	eax
		lea	eax, [esi+0D0Fh]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	14h
		push	9
		push	15h
		push	11h
		push	4Fh
		lea	ecx, [esp+78h+var_3C]
		push	2
		push	ecx
		call	sub_4019C4
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 8
		call	sub_4017EE
		lea	edx, [esi+0D99h]
		push	eax
		push	edx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	4
		push	0Dh
		push	3
		push	4Fh
		lea	eax, [esp+74h+var_3C]
		push	2
		push	eax
		call	sub_4019C4
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 9
		call	sub_4017EE
		lea	ecx, [esi+0E23h]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Fh
		lea	edx, [esp+74h+var_3C]
		push	2
		push	edx
		call	sub_4019C4
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 0Ah
		call	sub_4017EE
		push	eax
		lea	eax, [esi+0D6Bh]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	13h
		push	0Eh
		push	4
		push	4Fh
		lea	ecx, [esp+74h+var_3C]
		push	2
		push	ecx
		call	sub_4019C4
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 0Bh
		call	sub_4017EE
		lea	edx, [esi+0D3Dh]
		push	eax
		push	edx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	5
		push	0Dh
		push	9
		push	14h
		push	10h
		push	15h
		push	0Ch
		push	4Fh
		lea	eax, [esp+84h+var_3C]
		push	2
		push	eax
		call	sub_4019C4
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 0Ch
		call	sub_4017EE
		push	eax
		lea	ecx, [esi+0CB3h]
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		push	0
		push	0Bh
		push	3
		push	9
		push	0Eh
		push	4Fh
		lea	edx, [esp+78h+var_3C]
		push	2
		push	edx
		call	sub_4019C4
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 0Dh
		call	sub_4017EE
		push	eax
		lea	eax, [esi+0CE1h]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+60h+var_3C]
		mov	[esp+60h+var_4], edi
		call	sub_401226
		lea	ecx, [esi+9]
		call	sub_4017EE
		lea	ecx, [esp+60h+var_54]
		push	eax
		push	ecx
		call	sub_402040
		push	0
		push	25h
		push	1Dh
		push	23h
		lea	edx, [esp+78h+var_3C]
		push	28h
		push	edx
		mov	[esp+80h+var_4], 0Eh
		call	sub_4019C4
		add	esp, 20h
		mov	ebp, eax
		lea	ecx, [esp+60h+var_54]
		mov	byte ptr [esp+60h+var_4], 0Fh
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4017EE
		push	eax
		push	offset dword_4445F4
		push	offset byte_4D8075
		call	sub_401E24
		add	esp, 10h
		lea	ecx, [esp+60h+var_3C]
		mov	byte ptr [esp+60h+var_4], 0Eh
		call	sub_401226
		push	20h
		lea	eax, [esp+64h+var_24]
		push	0
		push	eax
		lea	ecx, [esp+6Ch+var_54]
		call	sub_4012B2
		mov	ecx, eax
		mov	byte ptr [esp+60h+var_4], 10h
		call	sub_4017EE
		push	eax
		push	offset dword_4445F0
		push	offset byte_4E8E45
		call	sub_40102D
		add	esp, 0Ch
		lea	ecx, [esp+60h+var_24]
		mov	byte ptr [esp+60h+var_4], 0Eh
		call	sub_401226
		nop
		call	near ptr 27D0B1Ah
		mov	ecx, eax
		mov	eax, 10624DD3h
		mul	ecx
		shr	edx, 6
		lea	ecx, [esp+60h+var_54]
		mov	[esi+5], edx
		mov	[esp+60h+var_4], edi
		call	sub_401226
		mov	ecx, [esp+60h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		add	esp, 54h
		retn
sub_404010	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 150h	dup(0CCh)

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



sub_404690	proc near		; CODE XREF: sub_401A41j

var_88		= dword	ptr -88h
var_84		= byte ptr -84h
var_6C		= byte ptr -6Ch
var_54		= byte ptr -54h
var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	0FFFFFFFFh
		push	offset SEH_404690
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 7Ch
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+94h+arg_0]
		mov	ebp, ecx
		push	edi
		lea	ebx, [esi+2Ah]
		push	0
		mov	ecx, ebx
		mov	[esp+9Ch+var_88], ebp
		call	sub_401479
		mov	cl, [eax]
		lea	edi, [esi+69h]
		cmp	cl, 23h
		jnz	short loc_4046D2
		push	ebx
		jmp	short loc_4046D6
; ---------------------------------------------------------------------------


loc_4046D2:				; CODE XREF: sub_404690+3Dj
		lea	eax, [esi+15h]
		push	eax


loc_4046D6:				; CODE XREF: sub_404690+40j
		mov	ecx, edi
		call	sub_401FDC
		mov	al, [esi+94h]
		test	al, al
		jz	short loc_4046F2
		lea	ecx, [esi+15h]
		push	ecx
		mov	ecx, edi
		call	sub_401FDC


loc_4046F2:				; CODE XREF: sub_404690+55j
		mov	al, [esi+95h]
		test	al, al
		jz	short loc_40476F
		lea	ecx, [esp+98h+var_6C]
		call	sub_40142E
		push	offset dword_444604
		mov	ecx, esi
		mov	[esp+9Ch+var_4], 0
		call	sub_4013ED
		add	eax, 3
		lea	edx, [esp+98h+var_54]
		push	eax
		push	edx
		mov	ecx, esi
		call	sub_401E47
		push	eax
		lea	ecx, [esp+9Ch+var_6C]
		mov	byte ptr [esp+9Ch+var_4], 1
		call	sub_401FDC
		lea	ecx, [esp+98h+var_54]
		mov	byte ptr [esp+98h+var_4], 0
		call	sub_401226
		lea	eax, [esp+98h+var_6C]
		mov	ecx, edi
		push	eax
		call	sub_401FDC
		lea	ecx, [esp+98h+var_6C]
		mov	[esp+98h+var_4], 0FFFFFFFFh
		call	sub_401226


loc_40476F:				; CODE XREF: sub_404690+6Aj
		push	offset dword_444600
		lea	ecx, [esp+9Ch+var_6C]
		push	0
		push	ecx
		mov	ecx, esi
		call	sub_4016B8
		lea	edx, [esp+98h+var_54]
		mov	ebx, 2
		push	1
		push	edx
		mov	ecx, eax
		mov	[esp+0A0h+var_4], ebx
		call	sub_401E47
		lea	edi, [esi+7Eh]
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+9Ch+var_4], 3
		call	sub_401FDC
		lea	ecx, [esp+98h+var_54]
		mov	byte ptr [esp+98h+var_4], bl
		call	sub_401226
		lea	ecx, [esp+98h+var_6C]
		mov	[esp+98h+var_4], 0FFFFFFFFh
		call	sub_401226
		push	0
		lea	ecx, [ebp+32Ch]
		call	sub_401479
		push	0
		mov	ecx, esi
		mov	ebp, eax
		call	sub_401479
		mov	al, [eax]
		mov	cl, [ebp+0]
		cmp	al, cl
		jnz	loc_404A3A
		push	0
		push	14h
		push	1
		push	5
		push	10h
		push	5
		push	12h
		push	4Eh
		push	14h
		push	0Fh
		lea	ecx, [esp+0C0h+var_54]
		push	ebx
		push	ecx
		call	sub_4019C4
		add	esp, 30h
		mov	ecx, eax
		mov	[esp+98h+var_4], 4
		call	sub_4017EE
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_40485F
		sub	esp, 18h
		lea	edx, [esi+15h]
		mov	ecx, esp
		mov	[esp+0B0h+arg_0], esp
		push	edx
		call	sub_4014D3
		mov	ecx, offset word_44AC5E
		call	sub_401CE4
		test	eax, eax
		jz	short loc_40485F
		mov	bl, 1
		jmp	short loc_404861
; ---------------------------------------------------------------------------


loc_40485F:				; CODE XREF: sub_404690+1A6j
					; sub_404690+1C9j
		xor	bl, bl


loc_404861:				; CODE XREF: sub_404690+1CDj
		lea	ecx, [esp+98h+var_54]
		mov	[esp+98h+var_4], 0FFFFFFFFh
		call	sub_401226
		test	bl, bl
		jz	loc_404A1E
		push	offset dword_444600
		lea	eax, [esp+9Ch+var_54]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		push	offset byte_448F30
		mov	ecx, eax
		mov	[esp+9Ch+var_4], 5
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+98h+var_54]
		mov	[esp+98h+var_4], 0FFFFFFFFh
		setz	bl
		call	sub_401226
		test	bl, bl
		jnz	loc_404A3A
		push	offset dword_444600
		lea	ecx, [esp+9Ch+var_54]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016B8
		mov	ecx, eax
		mov	[esp+98h+var_4], 6
		call	sub_4017EE
		push	eax
		call	near ptr 77C1BF18h
		nop
		add	esp, 4
		lea	ecx, [esp+98h+var_54]
		mov	ebp, eax
		mov	[esp+98h+var_4], 0FFFFFFFFh
		call	sub_401226
		test	ebp, ebp
		jz	loc_404A3A
		push	20h
		mov	ecx, esi
		call	sub_401D34
		lea	edx, [esp+98h+var_84]
		push	eax
		push	edx
		mov	ecx, esi
		call	sub_401E47
		mov	ebx, 7
		push	20h
		lea	ecx, [esp+9Ch+var_84]
		mov	[esp+9Ch+var_4], ebx
		call	sub_401D34
		push	eax
		lea	eax, [esp+9Ch+var_54]
		push	eax
		lea	ecx, [esp+0A0h+var_84]
		call	sub_401E47
		push	eax
		lea	ecx, [esp+9Ch+var_84]
		mov	byte ptr [esp+9Ch+var_4], 8
		call	sub_40202C
		lea	ecx, [esp+98h+var_54]
		mov	byte ptr [esp+98h+var_4], bl
		call	sub_401226
		lea	ecx, [esp+98h+var_84]
		push	ecx
		mov	ecx, esi
		call	sub_401FDC
		push	offset dword_444600
		lea	edx, [esp+9Ch+var_24]
		push	0
		push	edx
		mov	ecx, esi
		call	sub_4016B8
		lea	ecx, [esp+98h+var_3C]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+0A0h+var_4], 9
		call	sub_401E47
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+9Ch+var_4], 0Ah
		call	sub_401FDC
		lea	ecx, [esp+98h+var_3C]
		mov	byte ptr [esp+98h+var_4], 9
		call	sub_401226
		lea	ecx, [esp+98h+var_24]
		mov	byte ptr [esp+98h+var_4], bl
		call	sub_401226
		mov	al, [esp+98h+arg_4]
		test	al, al
		jnz	short loc_4049F7
		test	ebp, ebp
		jle	short loc_404A08


loc_4049E8:				; CODE XREF: sub_404690+363j
		mov	ecx, [esp+98h+var_88]
		push	esi
		call	sub_401F87
		dec	ebp
		jnz	short loc_4049E8
		jmp	short loc_404A08
; ---------------------------------------------------------------------------


loc_4049F7:				; CODE XREF: sub_404690+352j
		test	ebp, ebp
		jle	short loc_404A08


loc_4049FB:				; CODE XREF: sub_404690+376j
		mov	ecx, [esp+98h+var_88]
		push	esi
		call	sub_40144C
		dec	ebp
		jnz	short loc_4049FB


loc_404A08:				; CODE XREF: sub_404690+356j
					; sub_404690+365j ...
		lea	ecx, [esp+98h+var_84]
		mov	[esp+98h+var_4], 0FFFFFFFFh
		call	sub_401226
		jmp	short loc_404A3A
; ---------------------------------------------------------------------------


loc_404A1E:				; CODE XREF: sub_404690+1E7j
		mov	al, [esp+98h+arg_4]
		mov	ecx, [esp+98h+var_88]
		test	al, al
		push	esi
		jnz	short loc_404A35
		call	sub_401F87
		jmp	short loc_404A3A
; ---------------------------------------------------------------------------


loc_404A35:				; CODE XREF: sub_404690+39Cj
		call	sub_40144C


loc_404A3A:				; CODE XREF: sub_404690+162j
					; sub_404690+232j ...
		mov	ecx, [esp+98h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 88h
		retn	8
sub_404690	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 100h	dup(0CCh)

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



sub_404B60	proc near		; CODE XREF: sub_401F87j

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, ecx
		mov	ecx, offset word_44AC62
		call	sub_4014DD
		mov	esi, [esp+8+arg_0]
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jz	short loc_404BA6
		sub	esp, 18h
		lea	eax, [esi+15h]
		mov	ecx, esp
		mov	[esp+20h+arg_0], esp
		push	eax
		call	sub_4014D3
		mov	ecx, offset word_44AC5E
		call	sub_401CE4
		test	eax, eax
		jnz	short loc_404BA6
		xor	al, al
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_404BA6:				; CODE XREF: sub_404B60+1Dj
					; sub_404B60+3Dj
		sub	esp, 18h
		lea	edx, [esi+15h]
		mov	ecx, esp
		mov	[esp+20h+arg_0], esp
		push	edx
		call	sub_4014D3
		mov	ecx, offset word_44AC5E
		call	sub_401CE4
		test	eax, eax
		jnz	short loc_404BE6
		mov	al, [edi+469h]
		test	al, al
		jz	short loc_404BE6
		push	0
		lea	ecx, [esi+2Ah]
		call	sub_401479
		cmp	byte ptr [eax],	23h
		jz	short loc_404BE6
		xor	al, al
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_404BE6:				; CODE XREF: sub_404B60+64j
					; sub_404B60+6Ej ...
		push	esi
		mov	ecx, edi
		call	sub_40144C
		pop	edi
		pop	esi
		retn	4
sub_404B60	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)

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



sub_404C30	proc near		; CODE XREF: sub_40144Cj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	1
		lea	ecx, [esi+7Eh]
		call	sub_4017EE
		push	eax
		mov	ecx, offset dword_449118
		call	sub_401B04
		test	eax, eax
		jz	short loc_404C5A
		mov	ecx, [eax+2Ah]
		push	esi
		mov	eax, [ecx]
		call	dword ptr [eax]
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_404C5A:				; CODE XREF: sub_404C30+1Cj
		xor	al, al
		pop	esi
		retn	4
sub_404C30	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

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



sub_404C70	proc near		; CODE XREF: sub_40186Bj
		push	esi
		push	edi
		mov	edi, dword_5118AC
		mov	esi, ecx
		call	edi
		mov	edx, dword_4D8099
		mov	ecx, [esi+421h]
		sub	eax, edx
		cmp	eax, ecx
		jbe	short loc_404C9F
		mov	ecx, offset byte_4D8075
		call	sub_401D20
		call	edi
		mov	dword_4D8099, eax


loc_404C9F:				; CODE XREF: sub_404C70+1Cj
		pop	edi
		mov	al, 1
		pop	esi
		retn
sub_404C70	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_404CC0:				; CODE XREF: ___:004017D0j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset byte_43978B
		push	eax
		mov	large fs:0, esp
		sub	esp, 15Ch
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+178h]
		push	edi
		mov	edi, ecx
		lea	ebp, [esi+7Eh]
		lea	ecx, [edi+0C29h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_404D34
		lea	ecx, [esi+69h]
		call	sub_4014DD
		push	eax
		lea	ecx, [edi+2E3h]
		call	sub_4014DD
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_404D34:				; CODE XREF: ___:00404D00j
		lea	ecx, [edi+0D6Bh]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_404EC5
		push	1
		push	offset dword_444600
		lea	edx, [esp+34h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		push	offset dword_444600
		lea	eax, [esp+7Ch]
		push	1
		push	eax
		mov	ecx, esi
		mov	dword ptr [esp+180h], 0
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+174h], 1
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		cmp	eax, 1
		lea	ecx, [esp+78h]
		mov	byte ptr [esp+174h], 0
		setz	bl
		call	sub_401226
		lea	ecx, [esp+14h]
		call	sub_40142E
		push	2000h
		push	2000h
		lea	ecx, [esp+1Ch]
		mov	byte ptr [esp+17Ch], 2
		call	sub_401C71
		push	eax
		lea	ecx, [esp+34h]
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 27F0000h
		lea	ecx, [esp+14h]
		push	ecx
		lea	ecx, [esp+30h]
		call	sub_401FDC
		mov	ecx, 11h
		xor	eax, eax
		lea	edi, [esp+0A8h]
		lea	edx, [esp+5Ch]
		rep stosd
		lea	eax, [esp+0A8h]
		push	edx
		push	eax
		push	0
		neg	bl
		push	0
		push	28h
		sbb	ebx, ebx
		push	1
		and	ebx, 5
		push	0
		push	0
		lea	ecx, [esp+4Ch]
		mov	dword ptr [esp+0C8h], 44h
		mov	[esp+0F8h], bx
		call	sub_4014DD
		push	eax
		push	0
		nop
		call	near ptr 27E042Eh
		test	eax, eax
		jnz	short loc_404E99
		lea	ecx, [esi+69h]
		call	sub_4014DD
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	offset dword_4446FC
		push	ecx
		push	edx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 0
		call	sub_401226
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		lea	ecx, [esp+2Ch]
		jmp	loc_4056B8
; ---------------------------------------------------------------------------


loc_404E99:				; CODE XREF: ___:00404E4Cj
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 0
		call	sub_401226
		lea	ecx, [esp+2Ch]
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_404EC5:				; CODE XREF: ___:00404D49j
		lea	ecx, [edi+0B71h]
		call	sub_4014DD
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_404F74
		push	1
		push	offset dword_444600
		lea	eax, [esp+1Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4011EA
		mov	ecx, offset byte_4E8E45
		mov	dword ptr [esp+174h], 3
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+18h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_404F60
		mov	al, byte_449896
		test	al, al
		jz	short loc_404F30
		push	offset dword_449834
		mov	ecx, offset dword_44AD70
		call	sub_401451


loc_404F30:				; CODE XREF: ___:00404F1Fj
		mov	al, byte_4498DF
		test	al, al
		jz	short loc_404F48
		push	offset byte_44990F
		mov	ecx, offset dword_44AD70
		call	sub_401951


loc_404F48:				; CODE XREF: ___:00404F37j
		mov	ecx, offset dword_44AD70
		call	sub_401E79
		mov	byte_4D808C, 0
		mov	byte_4E8E44, 0


loc_404F60:				; CODE XREF: ___:00404F16j
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		lea	ecx, [esp+14h]
		jmp	loc_4056B8
; ---------------------------------------------------------------------------


loc_404F74:				; CODE XREF: ___:00404EDAj
		lea	ecx, [edi+0C57h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_404FBC
		lea	ecx, [esi+69h]
		call	sub_4014DD
		push	eax
		mov	ecx, offset word_4E8E5A
		call	sub_4014DD
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_404FBC:				; CODE XREF: ___:00404F89j
		lea	ecx, [edi+0DC7h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_405076
		push	eax
		push	13h
		push	0Eh
		push	4
		push	8
		push	13h
		push	15h
		push	0Ch
		push	6
		lea	eax, [esp+50h]
		push	50h
		push	eax
		call	sub_4019C4
		mov	esi, eax
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	7
		push	9
		push	6
		push	0Eh
		push	0Fh
		push	3
		push	10h
		lea	ecx, [esp+70h]
		push	9
		push	ecx
		mov	dword ptr [esp+1D8h], 4
		call	sub_4019C4
		add	esp, 64h
		mov	edi, eax
		mov	ecx, esi
		mov	byte ptr [esp+174h], 5
		call	sub_4017EE
		push	eax
		mov	ecx, edi
		call	sub_4017EE
		push	eax
		call	sub_401299
		add	esp, 8
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 4
		call	sub_401226
		lea	ecx, [esp+2Ch]
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_405076:				; CODE XREF: ___:00404FD1j
		lea	ecx, [edi+0D0Fh]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_405194
		lea	ecx, [esp+2Ch]
		call	sub_40142E
		push	offset dword_444600
		lea	edx, [esp+60h]
		push	1
		push	edx
		mov	ecx, esi
		mov	dword ptr [esp+180h], 6
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+174h], 7
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+30h]
		call	sub_401A9B
		lea	ecx, [esp+5Ch]
		mov	byte ptr [esp+174h], 6
		call	sub_401226
		lea	ecx, [esp+14h]
		call	sub_40142E
		push	1
		mov	bl, 8
		push	0
		push	0
		lea	ecx, [esp+38h]
		mov	[esp+180h], bl
		call	sub_4017EE
		push	eax
		push	offset dword_4446F4
		push	0
		call	near ptr 7CA41110h
		nop
		movsx	eax, al
		push	eax
		lea	ecx, [esp+60h]
		call	sub_402112
		lea	ecx, [esp+5Ch]
		mov	byte ptr [esp+174h], 9
		push	ecx
		lea	ecx, [esp+18h]
		call	sub_40202C
		lea	ecx, [esp+5Ch]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esi+69h]
		call	sub_4014DD
		push	eax
		lea	ecx, [esp+18h]
		call	sub_4014DD
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 6
		call	sub_401226
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		lea	ecx, [esp+2Ch]
		jmp	loc_4056B8
; ---------------------------------------------------------------------------


loc_405194:				; CODE XREF: ___:0040508Bj
		lea	ecx, [edi+0D99h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_4051B7
		mov	byte_4D808C, al
		mov	al, 1
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_4051B7:				; CODE XREF: ___:004051A9j
		lea	ecx, [edi+0D3Dh]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40547E
		lea	ecx, [esp+5Ch]
		call	sub_40142E
		push	offset dword_444600
		lea	ecx, [esp+18h]
		push	1
		mov	ebx, 0Ah
		push	ecx
		mov	ecx, esi
		mov	[esp+180h], ebx
		call	sub_4016B8
		push	offset byte_448F30
		mov	ecx, eax
		mov	byte ptr [esp+178h], 0Bh
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		setz	byte ptr [esp+2Bh]
		call	sub_401226
		mov	al, [esp+2Bh]
		test	al, al
		jz	short loc_405241
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		lea	ecx, [esp+5Ch]
		jmp	loc_4056B8
; ---------------------------------------------------------------------------


loc_405241:				; CODE XREF: ___:0040522Bj
		push	offset dword_444600
		lea	edx, [esp+18h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+174h], 0Ch
		call	sub_4017EE
		push	eax
		call	near ptr 71AB2BF4h
		nop
		lea	ecx, [esp+14h]
		mov	[esp+74h], eax
		mov	[esp+174h], bl
		call	sub_401226
		mov	eax, [esp+74h]
		or	ebp, 0FFFFFFFFh
		cmp	eax, ebp
		jz	loc_405314
		push	2
		lea	eax, [esp+78h]
		push	4
		push	eax
		nop
		call	near ptr 71ABE479h
		mov	edi, eax
		test	edi, edi
		jz	loc_4053F5
		push	offset dword_444600
		lea	ecx, [esp+18h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016B8
		mov	edx, [edi]
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+178h], 0Dh
		call	sub_4017EE
		push	eax
		lea	eax, [esp+64h]
		push	offset dword_4446E0
		push	eax
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esi+69h]
		call	sub_4014DD
		push	eax
		lea	ecx, [esp+60h]
		call	sub_4014DD
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		jmp	loc_40545B
; ---------------------------------------------------------------------------


loc_405314:				; CODE XREF: ___:00405287j
		push	offset dword_444600
		lea	eax, [esp+18h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+174h], 0Eh
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 71AB4FD4h
		lea	ecx, [esp+14h]
		mov	edi, eax
		mov	[esp+174h], bl
		call	sub_401226
		test	edi, edi
		jz	loc_4053F5
		mov	ecx, [edi+0Ch]
		push	offset dword_444600
		lea	eax, [esp+18h]
		push	1
		mov	edx, [ecx]
		push	eax
		mov	ecx, esi
		mov	edi, [edx]
		call	sub_4016B8
		mov	ebp, eax
		push	edi
		mov	byte ptr [esp+178h], 0Fh
		call	near ptr 71AB3F41h
		nop
		push	eax
		mov	ecx, ebp
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+64h]
		push	offset dword_4446D4
		push	ecx
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esi+69h]
		call	sub_4014DD
		push	eax
		lea	ecx, [esp+60h]
		call	sub_4014DD
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+5Ch]
		mov	bl, al
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		call	sub_401226
		mov	al, bl
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_4053F5:				; CODE XREF: ___:004052A0j
					; ___:00405351j
		push	offset dword_444600
		lea	ecx, [esp+18h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+174h], 10h
		call	sub_4017EE
		push	eax
		lea	edx, [esp+60h]
		push	offset dword_4446BC
		push	edx
		call	sub_40102D
		add	esp, 0Ch
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esi+69h]
		call	sub_4014DD
		push	eax
		lea	ecx, [esp+60h]
		call	sub_4014DD
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx


loc_40545B:				; CODE XREF: ___:0040530Fj
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+5Ch]
		mov	bl, al
		mov	[esp+174h], ebp
		call	sub_401226
		mov	al, bl
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_40547E:				; CODE XREF: ___:004051CCj
		lea	ecx, [edi+0BCDh]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40556C
		lea	ecx, [edi+9]
		call	sub_4017EE
		lea	edx, [esp+14h]
		push	eax
		push	edx
		call	sub_402040
		push	0
		push	25h
		push	1Dh
		push	23h
		lea	eax, [esp+44h]
		mov	ebx, 11h
		push	28h
		push	eax
		mov	[esp+194h], ebx
		call	sub_4019C4
		add	esp, 20h
		mov	esi, eax
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 12h
		call	sub_4017EE
		push	eax
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		push	offset dword_4445F4
		push	offset byte_4D8075
		call	sub_401E24
		add	esp, 10h
		lea	ecx, [esp+2Ch]
		mov	[esp+174h], bl
		call	sub_401226
		push	20h
		lea	ecx, [esp+30h]
		push	0
		push	ecx
		lea	ecx, [esp+20h]
		call	sub_4012B2
		mov	ecx, eax
		mov	byte ptr [esp+174h], 13h
		call	sub_4017EE
		push	eax
		push	offset dword_4445F0
		push	offset byte_4E8E45
		call	sub_40102D
		add	esp, 0Ch
		lea	ecx, [esp+2Ch]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_40556C:				; CODE XREF: ___:00405493j
		lea	ecx, [edi+0E23h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4056DA
		push	offset dword_444600
		lea	edx, [esp+60h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016B8
		mov	edi, eax
		mov	ecx, ebp
		mov	dword ptr [esp+174h], 14h
		call	sub_4013E3
		mov	ecx, edi
		mov	ebx, eax
		call	sub_4013E3
		mov	ecx, esi
		lea	edi, [ebx+eax+3]
		call	sub_4013E3
		cmp	eax, edi
		lea	ecx, [esp+5Ch]
		setle	bl
		or	edi, 0FFFFFFFFh
		mov	[esp+174h], edi
		call	sub_401226
		test	bl, bl
		jnz	loc_4056BD
		lea	ecx, [esp+2Ch]
		call	sub_40142E
		mov	ecx, ebp
		mov	dword ptr [esp+174h], 15h
		call	sub_4013E3
		add	eax, 2
		mov	ecx, esi
		push	eax
		call	sub_401479
		push	eax
		lea	ecx, [esp+30h]
		call	sub_4015E1
		lea	ecx, [esp+14h]
		call	sub_40142E
		lea	ecx, [esp+2Ch]
		mov	byte ptr [esp+174h], 16h
		call	sub_4017EE
		push	eax
		lea	eax, [esp+18h]
		push	offset dword_4446AC
		push	eax
		call	sub_40102D
		add	esp, 0Ch
		lea	ecx, [esp+2Ch]
		call	sub_4017EE
		push	eax
		call	near ptr 77C293C7h
		nop
		add	esp, 4
		cmp	eax, edi
		lea	ecx, [esi+69h]
		jnz	short loc_405674
		call	sub_4014DD
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	offset dword_4446FC
		push	ecx
		push	edx
		jmp	short loc_405692
; ---------------------------------------------------------------------------


loc_405674:				; CODE XREF: ___:00405657j
		call	sub_4014DD
		push	eax
		lea	ecx, [esp+18h]
		call	sub_4014DD
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx


loc_405692:				; CODE XREF: ___:00405672j
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 15h
		call	sub_401226
		mov	[esp+174h], edi
		lea	ecx, [esp+2Ch]


loc_4056B8:				; CODE XREF: ___:00404E94j
					; ___:00404F6Fj ...
		call	sub_401226


loc_4056BD:				; CODE XREF: ___:004055DCj
					; ___:0040592Aj
		xor	al, al


loc_4056BF:				; CODE XREF: ___:00404D2Fj
					; ___:00404EC0j ...
		mov	ecx, [esp+16Ch]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 168h
		retn	4
; ---------------------------------------------------------------------------


loc_4056DA:				; CODE XREF: ___:00405581j
		lea	ecx, [edi+0C85h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_405750
		lea	edx, [esp+14h]
		mov	ecx, edi
		push	edx
		call	sub_401F5A
		mov	edi, eax
		lea	ecx, [esi+69h]
		mov	dword ptr [esp+174h], 17h
		call	sub_4014DD
		push	eax
		mov	ecx, edi
		call	sub_4014DD
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+14h]
		mov	bl, al
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		call	sub_401226
		mov	al, bl
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_405750:				; CODE XREF: ___:004056EFj
		lea	ecx, [edi+0CE1h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_405841
		push	1
		push	offset dword_444600
		lea	edx, [esp+34h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		push	20h
		lea	ecx, [esp+18h]
		push	0
		push	ecx
		mov	ecx, eax
		mov	dword ptr [esp+180h], 18h
		call	sub_4012B2
		mov	ecx, eax
		mov	byte ptr [esp+174h], 19h
		call	sub_4017EE
		push	eax
		push	offset dword_4445F0
		push	offset byte_4E8E45
		call	sub_40102D
		add	esp, 0Ch
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 18h
		call	sub_401226
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+2Ch]
		mov	[esp+174h], edi
		call	sub_401226
		push	0
		push	25h
		push	1Dh
		push	23h
		lea	edx, [esp+24h]
		push	28h
		push	edx
		call	sub_4019C4
		add	esp, 18h
		mov	esi, eax
		mov	ecx, offset byte_4E8E45
		mov	dword ptr [esp+174h], 1Ah
		call	sub_4017EE
		push	eax
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		push	offset dword_4445F4
		push	offset byte_4D8075
		call	sub_401E24
		add	esp, 10h
		lea	ecx, [esp+14h]
		mov	[esp+174h], edi
		call	sub_401226
		mov	al, 1
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_405841:				; CODE XREF: ___:00405765j
		lea	ecx, [edi+0CB3h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_405915
		push	offset dword_444600
		lea	eax, [esp+30h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		mov	ecx, eax
		mov	dword ptr [esp+174h], 1Bh
		call	sub_4017EE
		push	eax
		call	near ptr 77C1BF18h
		nop
		or	ebp, 0FFFFFFFFh
		add	esp, 4
		lea	ecx, [esp+2Ch]
		mov	ebx, eax
		mov	[esp+174h], ebp
		call	sub_401226
		test	ebx, ebx
		jnz	short loc_4058A9
		mov	ebx, 7


loc_4058A9:				; CODE XREF: ___:004058A2j
		lea	ecx, [esp+14h]
		push	ebx
		push	ecx
		mov	ecx, edi
		call	sub_40195B
		push	offset byte_448F30
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+178h], 1Ch
		call	sub_4012EE
		test	eax, eax
		jz	short loc_4058FE
		lea	ecx, [esi+69h]
		call	sub_4014DD
		push	eax
		lea	ecx, [esp+18h]
		call	sub_4014DD
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D8075
		call	sub_401118


loc_4058FE:				; CODE XREF: ___:004058D1j
		lea	ecx, [esp+14h]
		mov	[esp+174h], ebp
		call	sub_401226
		mov	al, 1
		jmp	loc_4056BF
; ---------------------------------------------------------------------------


loc_405915:				; CODE XREF: ___:00405856j
		lea	ecx, [edi+0DF5h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4056BD
		lea	ecx, [esp+78h]
		call	sub_40142E
		push	0
		push	0Eh
		push	15h
		push	2Ch
		push	50h
		push	0Eh
		push	0Fh
		push	9
		push	13h
		push	12h
		push	5
		push	30h
		push	14h
		push	0Eh
		push	5
		push	12h
		push	12h
		push	15h
		push	1Dh
		push	50h
		push	13h
		push	17h
		push	0Fh
		push	4
		push	0Eh
		push	9
		push	31h
		push	50h
		push	14h
		push	6
		push	0Fh
		push	13h
		push	0Fh
		push	12h
		push	3
		push	9
		push	27h
		push	50h
		push	5
		push	12h
		push	1
		push	17h
		push	14h
		push	6
		push	0Fh
		lea	ecx, [esp+0C8h]
		push	2Dh
		push	ecx
		mov	dword ptr [esp+230h], 1Dh
		call	sub_4019C4
		add	esp, 0BCh
		mov	ecx, eax
		mov	byte ptr [esp+174h], 1Eh
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+7Ch]
		call	sub_401A9B
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 1Dh
		call	sub_401226
		mov	edi, offset dword_4446A8
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [esp+0ECh]
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	dword ptr [esp+10h], 0
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		lea	edi, [esp+0ECh]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	esi, dword_511764
		mov	edi, ecx
		lea	ecx, [esp+10h]
		push	ecx
		push	20019h
		push	eax
		push	offset dword_44468C
		push	80000002h
		call	esi
		push	0
		push	27h
		push	29h
		push	1Dh
		push	1Eh
		push	5
		push	0Ch
		push	2
		push	1
		push	0Eh
		lea	edx, [esp+3Ch]
		push	1Fh
		push	edx
		call	sub_4019C4
		add	esp, 30h
		lea	ecx, [esp+0ECh]
		push	edi
		push	ecx
		push	1
		push	0
		mov	ecx, eax
		mov	byte ptr [esp+184h], 1Fh
		call	sub_4017EE
		mov	edx, [esp+20h]
		push	eax
		push	edx
		call	near ptr 2930000h
		nop
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 1Dh
		call	sub_401226
		mov	eax, [esp+10h]
		mov	edi, dword_511740
		push	eax
		call	edi
		lea	ecx, [esp+10h]
		push	ecx
		push	0F003Fh
		push	0
		lea	ecx, [esp+84h]
		call	sub_4017EE
		push	eax
		push	80000002h
		call	esi
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	5
		push	14h
		push	1
		push	13h
		lea	edx, [esp+38h]
		push	2Dh
		push	edx
		call	sub_4019C4
		add	esp, 2Ch
		mov	ecx, eax
		mov	byte ptr [esp+174h], 20h
		call	sub_4017EE
		mov	ebp, dword_51176C
		push	eax
		mov	eax, [esp+14h]
		push	eax
		call	ebp
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 1Dh
		call	sub_401226
		mov	ecx, [esp+10h]
		push	ecx
		call	edi
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	48h
		push	0Eh
		push	15h
		push	12h
		lea	edx, [esp+38h]
		push	9
		push	edx
		call	sub_4019C4
		add	esp, 2Ch
		mov	ecx, eax
		mov	byte ptr [esp+174h], 21h
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 1Dh
		call	sub_401226
		lea	ecx, [esp+44h]
		call	sub_40142E
		mov	bl, 22h
		push	104h
		push	104h
		lea	ecx, [esp+4Ch]
		mov	[esp+17Ch], bl
		call	sub_401C71
		push	eax
		nop
		call	near ptr 27E0000h
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	48h
		push	0Eh
		push	15h
		push	12h
		lea	eax, [esp+38h]
		push	9
		push	eax
		call	sub_4019C4
		add	esp, 2Ch
		mov	ecx, eax
		mov	byte ptr [esp+174h], 23h
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+48h]
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+4Ch]
		push	offset dword_444684
		push	ecx
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esp+44h]
		call	sub_40168B
		push	eax
		nop
		call	near ptr 27D0C02h
		lea	edx, [esp+10h]
		lea	ecx, [esp+78h]
		push	edx
		push	0F003Fh
		push	0
		call	sub_4017EE
		push	eax
		push	80000002h
		call	esi
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	5
		push	14h
		push	1
		lea	eax, [esp+34h]
		push	12h
		push	eax
		call	sub_4019C4
		add	esp, 28h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 24h
		call	sub_4017EE
		mov	ecx, [esp+10h]
		push	eax
		push	ecx
		call	ebp
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		mov	edx, [esp+10h]
		push	edx
		call	edi
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	48h
		push	0Eh
		push	48h
		push	49h
		push	12h
		push	45h
		push	45h
		lea	eax, [esp+44h]
		push	9
		push	eax
		call	sub_4019C4
		add	esp, 38h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 25h
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		push	104h
		push	104h
		lea	ecx, [esp+4Ch]
		call	sub_401C71
		push	eax
		nop
		call	near ptr 27E0000h
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	48h
		push	0Eh
		push	48h
		push	49h
		push	12h
		push	45h
		push	45h
		lea	ecx, [esp+44h]
		push	9
		push	ecx
		call	sub_4019C4
		add	esp, 38h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 26h
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+48h]
		call	sub_4017EE
		push	eax
		lea	edx, [esp+4Ch]
		push	offset dword_444684
		push	edx
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esp+44h]
		call	sub_40168B
		push	eax
		nop
		call	near ptr 27D0C02h
		lea	eax, [esp+10h]
		lea	ecx, [esp+78h]
		push	eax
		push	0F003Fh
		push	0
		call	sub_4017EE
		push	eax
		push	80000002h
		call	esi
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	5
		push	14h
		push	1
		push	13h
		lea	ecx, [esp+38h]
		push	13h
		push	ecx
		call	sub_4019C4
		add	esp, 2Ch
		mov	ecx, eax
		mov	byte ptr [esp+174h], 27h
		call	sub_4017EE
		mov	edx, [esp+10h]
		push	eax
		push	edx
		call	ebp
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		mov	eax, [esp+10h]
		push	eax
		call	edi
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	13h
		push	19h
		push	13h
		push	0Eh
		push	9
		lea	ecx, [esp+3Ch]
		push	17h
		push	ecx
		call	sub_4019C4
		add	esp, 30h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 28h
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		push	104h
		push	104h
		lea	ecx, [esp+4Ch]
		call	sub_401C71
		push	eax
		nop
		call	near ptr 27E0000h
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	13h
		push	19h
		push	13h
		push	0Eh
		push	9
		lea	edx, [esp+3Ch]
		push	17h
		push	edx
		call	sub_4019C4
		add	esp, 30h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 29h
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+48h]
		call	sub_4017EE
		push	eax
		lea	eax, [esp+4Ch]
		push	offset dword_444684
		push	eax
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esp+44h]
		call	sub_40168B
		push	eax
		nop
		call	near ptr 27D0C02h
		lea	ecx, [esp+10h]
		push	ecx
		push	0F003Fh
		push	0
		lea	ecx, [esp+84h]
		call	sub_4017EE
		push	eax
		push	80000002h
		call	esi
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	5
		push	14h
		push	1
		push	4
		push	10h
		push	15h
		push	4
		push	47h
		lea	edx, [esp+48h]
		push	4
		push	edx
		call	sub_4019C4
		add	esp, 3Ch
		mov	ecx, eax
		mov	byte ptr [esp+174h], 2Ah
		call	sub_4017EE
		push	eax
		mov	eax, [esp+14h]
		push	eax
		call	ebp
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		mov	ecx, [esp+10h]
		push	ecx
		call	edi
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	5
		push	0Ch
		push	7
		push	1
		push	5
		push	2
		lea	edx, [esp+40h]
		push	2
		push	edx
		call	sub_4019C4
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 2Bh
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		push	104h
		push	104h
		lea	ecx, [esp+4Ch]
		call	sub_401C71
		push	eax
		call	near ptr 27E0000h
		nop
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	5
		push	0Ch
		push	7
		push	1
		push	5
		push	2
		lea	eax, [esp+40h]
		push	2
		push	eax
		call	sub_4019C4
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 2Ch
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+48h]
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+4Ch]
		push	offset dword_444684
		push	ecx
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esp+44h]
		call	sub_40168B
		push	eax
		call	near ptr 27D0C02h
		nop
		lea	edx, [esp+10h]
		lea	ecx, [esp+78h]
		push	edx
		push	0F003Fh
		push	0
		call	sub_4017EE
		push	eax
		push	80000002h
		call	esi
		push	0
		push	0Eh
		push	0Fh
		push	27h
		push	0Bh
		push	13h
		push	1
		lea	eax, [esp+30h]
		push	2Eh
		push	eax
		call	sub_4019C4
		add	esp, 24h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 2Dh
		call	sub_4017EE
		mov	ecx, [esp+10h]
		push	eax
		push	ecx
		call	ebp
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		mov	edx, [esp+10h]
		push	edx
		call	edi
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	0Eh
		push	0Fh
		push	0Dh
		push	0Bh
		push	13h
		push	1
		lea	eax, [esp+40h]
		push	14h
		push	eax
		call	sub_4019C4
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 2Eh
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		push	104h
		push	104h
		lea	ecx, [esp+4Ch]
		call	sub_401C71
		push	eax
		nop
		call	near ptr 27E0000h
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	0Eh
		push	0Fh
		push	0Dh
		push	0Bh
		push	13h
		push	1
		lea	ecx, [esp+40h]
		push	14h
		push	ecx
		call	sub_4019C4
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 2Fh
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+48h]
		call	sub_4017EE
		push	eax
		push	offset dword_444684
		lea	edx, [esp+50h]
		push	edx
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+14h]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esp+44h]
		call	sub_40168B
		push	eax
		call	near ptr 27D0C02h
		nop
		lea	eax, [esp+10h]
		lea	ecx, [esp+78h]
		push	eax
		push	0F003Fh
		push	0
		call	sub_4017EE
		push	eax
		push	80000002h
		call	esi
		push	0
		push	12h
		push	5
		push	12h
		push	0Fh
		push	0Ch
		push	10h
		push	18h
		lea	ecx, [esp+0B0h]
		push	1Fh
		push	ecx
		call	sub_4019C4
		add	esp, 28h
		mov	ecx, eax
		mov	byte ptr [esp+174h], 30h
		call	sub_4017EE
		mov	edx, [esp+10h]
		push	eax
		push	edx
		call	ebp
		lea	ecx, [esp+90h]
		mov	[esp+174h], bl
		call	sub_401226
		mov	eax, [esp+10h]
		push	eax
		call	edi
		mov	esi, dword_511B10
		push	offset dword_444668
		call	esi
		push	offset dword_44464C
		call	esi
		push	offset dword_44462C
		call	esi
		push	offset dword_444608
		call	esi
		add	esp, 10h
		lea	ecx, [esp+44h]
		mov	byte ptr [esp+174h], 1Dh
		call	sub_401226
		lea	ecx, [esp+78h]
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		jmp	loc_4056BF
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 550h	dup(0CCh)

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



sub_406730	proc near		; CODE XREF: sub_40195Bj

var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	0FFFFFFFFh
		push	offset SEH_406730
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	ebp
		push	esi
		xor	ebx, ebx
		push	edi
		lea	ecx, [esp+38h+var_24]
		mov	[esp+38h+var_28], ebx
		call	sub_40142E
		mov	esi, [esp+38h+arg_4]
		mov	ebp, 1
		cmp	esi, ebx
		mov	[esp+38h+var_4], ebp
		jnz	short loc_406781
		mov	esi, [esp+38h+arg_0]
		push	ebx
		mov	ecx, esi
		call	sub_402112
		mov	[esp+38h+var_28], ebp
		jmp	loc_406827
; ---------------------------------------------------------------------------


loc_406781:				; CODE XREF: sub_406730+3Aj
		call	near ptr 27D0B1Ah
		nop
		mov	ecx, eax
		mov	eax, 10624DD3h
		mul	ecx
		mov	ecx, edx
		mov	eax, 0C22E4507h
		shr	ecx, 6
		imul	ecx
		add	edx, ecx
		sar	edx, 10h
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		mov	edi, edx
		cmp	edi, esi
		jl	short loc_406813
		mov	eax, ecx
		mov	ecx, 15180h
		cdq
		idiv	ecx
		mov	esi, 0E10h
		mov	ecx, edx
		mov	eax, ecx
		cdq
		idiv	esi
		mov	eax, 88888889h
		mov	esi, edx
		imul	esi
		add	edx, esi
		sar	edx, 5
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		mov	eax, 91A2B3C5h
		push	edx
		imul	ecx
		add	edx, ecx
		sar	edx, 0Bh
		mov	ecx, edx
		shr	ecx, 1Fh
		add	edx, ecx
		push	edx
		push	edi
		lea	edx, [esp+44h+var_24]
		push	offset dword_44470C
		push	edx
		call	sub_40102D
		mov	esi, [esp+4Ch+arg_0]
		add	esp, 14h
		lea	eax, [esp+38h+var_24]
		mov	ecx, esi
		push	eax
		call	sub_4014D3
		jmp	short loc_406823
; ---------------------------------------------------------------------------


loc_406813:				; CODE XREF: sub_406730+7Cj
		mov	esi, [esp+38h+arg_0]
		push	offset byte_448F30
		mov	ecx, esi
		call	sub_401870


loc_406823:				; CODE XREF: sub_406730+E1j
		mov	[esp+38h+var_28], ebp


loc_406827:				; CODE XREF: sub_406730+4Cj
		lea	ecx, [esp+38h+var_24]
		mov	byte ptr [esp+38h+var_4], bl
		call	sub_401226
		mov	ecx, [esp+38h+var_C]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 28h
		retn	8
sub_406730	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4068A0:				; CODE XREF: ___:00401672j
		push	ecx
		push	esi
		mov	esi, [esp+0Ch]
		push	offset byte_448F30
		mov	ecx, esi
		mov	dword ptr [esp+8], 0
		call	sub_401870
		mov	eax, esi
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

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



sub_4068E0	proc near		; CODE XREF: sub_401F5Aj

var_198		= dword	ptr -198h
var_194		= dword	ptr -194h
var_190		= dword	ptr -190h
var_18C		= byte ptr -18Ch
var_174		= byte ptr -174h
var_164		= byte ptr -164h
var_14C		= byte ptr -14Ch
var_144		= dword	ptr -144h
var_140		= dword	ptr -140h
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_98		= byte ptr -98h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	0FFFFFFFFh
		push	offset SEH_4068E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18Ch
		push	ebp
		push	esi
		push	edi
		lea	ecx, [esp+1A4h+var_18C]
		mov	[esp+1A4h+var_198], 0
		call	sub_40142E
		mov	[esp+1A4h+var_4], 1
		nop
		call	near ptr 27D0B1Ah
		mov	ecx, eax
		mov	eax, 10624DD3h
		mul	ecx
		mov	esi, edx
		lea	edx, [esp+1A4h+var_14C]
		push	edx
		mov	[esp+1A8h+var_190], 10h
		shr	esi, 6
		mov	[esp+1A8h+var_194], 15h
		nop
		call	near ptr 2820000h
		lea	eax, [esp+1A4h+var_12C]
		mov	[esp+1A4h+var_12C], 94h
		push	eax
		call	near ptr 2810000h
		nop
		mov	eax, [esp+1A4h+var_128]
		cmp	eax, 4
		jnz	short loc_4069AE
		mov	eax, [esp+1A4h+var_124]
		test	eax, eax
		jnz	short loc_406996
		mov	eax, [esp+1A4h+var_11C]
		cmp	eax, 1
		jnz	short loc_406986
		mov	ebp, offset dword_4447C8
		jmp	loc_406A21
; ---------------------------------------------------------------------------


loc_406986:				; CODE XREF: sub_4068E0+9Aj
		cmp	eax, 2
		jnz	loc_406A1D
		mov	ebp, offset dword_4447C4
		jmp	short loc_4069EA
; ---------------------------------------------------------------------------


loc_406996:				; CODE XREF: sub_4068E0+8Ej
		cmp	eax, 0Ah
		jnz	short loc_4069A2
		mov	ebp, offset dword_4447C0
		jmp	short loc_4069E0
; ---------------------------------------------------------------------------


loc_4069A2:				; CODE XREF: sub_4068E0+B9j
		cmp	eax, 5Ah
		jnz	short loc_4069DB
		mov	ebp, offset dword_4447BC
		jmp	short loc_4069E0
; ---------------------------------------------------------------------------


loc_4069AE:				; CODE XREF: sub_4068E0+83j
		cmp	eax, 5
		jnz	short loc_4069DB
		mov	eax, [esp+1A4h+var_124]
		test	eax, eax
		jnz	short loc_4069C5
		mov	ebp, offset dword_4447B4
		jmp	short loc_4069E0
; ---------------------------------------------------------------------------


loc_4069C5:				; CODE XREF: sub_4068E0+DCj
		cmp	eax, 1
		jnz	short loc_4069D1
		mov	ebp, offset dword_4447B0
		jmp	short loc_4069E0
; ---------------------------------------------------------------------------


loc_4069D1:				; CODE XREF: sub_4068E0+E8j
		cmp	eax, 2
		mov	ebp, offset dword_4447A8
		jz	short loc_4069E0


loc_4069DB:				; CODE XREF: sub_4068E0+C5j
					; sub_4068E0+D1j
		mov	ebp, offset dword_4447A4


loc_4069E0:				; CODE XREF: sub_4068E0+C0j
					; sub_4068E0+CCj ...
		cmp	[esp+1A4h+var_11C], 2
		jnz	short loc_406A21


loc_4069EA:				; CODE XREF: sub_4068E0+B4j
		mov	al, [esp+1A4h+var_118]
		test	al, al
		jz	short loc_406A21
		lea	ecx, [esp+1A4h+var_118]
		lea	edx, [esp+1A4h+var_98]
		push	ecx
		push	ebp
		push	offset dword_444798
		push	edx
		nop
		call	near ptr byte_5FC011
		add	esp, 10h
		lea	ebp, [esp+1A4h+var_98]
		jmp	short loc_406A21
; ---------------------------------------------------------------------------


loc_406A1D:				; CODE XREF: sub_4068E0+A9j
		mov	ebp, [esp+1A4h+var_198]


loc_406A21:				; CODE XREF: sub_4068E0+A1j
					; sub_4068E0+108j ...
		lea	eax, [esp+1A4h+var_190]
		lea	ecx, [esp+1A4h+var_174]
		push	eax
		push	ecx
		nop
		call	near ptr 2800000h
		lea	edx, [esp+1A4h+var_194]
		lea	eax, [esp+1A4h+var_164]
		push	edx
		push	eax
		nop
		call	near ptr 2910DB3h
		mov	eax, esi
		mov	ecx, 15180h
		cdq
		idiv	ecx
		lea	eax, [esp+1A4h+var_174]
		mov	edi, 0E10h
		mov	ecx, edx
		lea	edx, [esp+1A4h+var_164]
		push	edx
		push	eax
		mov	eax, ecx
		cdq
		idiv	edi
		mov	eax, 88888889h
		mov	edi, edx
		imul	edi
		add	edx, edi
		sar	edx, 5
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		mov	eax, 91A2B3C5h
		push	edx
		imul	ecx
		add	edx, ecx
		mov	eax, 0C22E4507h
		sar	edx, 0Bh
		mov	ecx, edx
		shr	ecx, 1Fh
		add	edx, ecx
		mov	ecx, [esp+1B0h+var_120]
		push	edx
		imul	esi
		add	edx, esi
		sar	edx, 10h
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		mov	eax, [esp+1B4h+var_128]
		push	edx
		mov	edx, [esp+1B8h+var_124]
		push	ecx
		mov	ecx, [esp+1BCh+var_144]
		push	edx
		push	eax
		mov	eax, 804021h
		push	ebp
		mul	ecx
		sub	ecx, edx
		mov	eax, 804021h
		shr	ecx, 1
		add	ecx, edx
		shr	ecx, 13h
		push	ecx
		mov	ecx, [esp+1CCh+var_140]
		mul	ecx
		sub	ecx, edx
		shr	ecx, 1
		add	ecx, edx
		shr	ecx, 13h
		push	ecx
		call	sub_4017FD
		push	eax
		lea	ecx, [esp+1D4h+var_18C]
		push	offset dword_444720
		push	ecx
		call	sub_40102D
		mov	esi, [esp+1DCh+arg_0]
		add	esp, 38h
		lea	edx, [esp+1A4h+var_18C]
		push	edx
		mov	ecx, esi
		call	sub_4014D3
		mov	[esp+1A4h+var_198], 1
		lea	ecx, [esp+1A4h+var_18C]
		mov	byte ptr [esp+1A4h+var_4], 0
		call	sub_401226
		mov	ecx, [esp+1A4h+var_C]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		add	esp, 198h
		retn	4
sub_4068E0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 0A0h	dup(0CCh)

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



sub_406BF0	proc near		; CODE XREF: sub_4015E6j
		mov	eax, ecx
		mov	dword ptr [eax], offset	dword_43F008
		mov	dword ptr [eax+110h], 0
		retn
sub_406BF0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_406C20:				; CODE XREF: ___:00401FAAj
					; ___:00402027j
		push	esi
		mov	esi, ecx
		call	sub_401447
		test	byte ptr [esp+8], 1
		jz	short loc_406C38
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_406C38:				; CODE XREF: ___:00406C2Dj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_406C50	proc near		; CODE XREF: sub_401447j
		mov	dword ptr [ecx], offset	dword_43F008
		mov	ecx, [ecx+110h]
		test	ecx, ecx
		jz	short locret_406C67
		push	ecx
		call	near ptr word_437AD2
		pop	ecx

locret_406C67:				; CODE XREF: sub_406C50+Ej
		retn
sub_406C50	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_406C80	proc near		; CODE XREF: sub_401384j

var_454		= byte ptr -454h
var_43C		= byte ptr -43Ch
var_424		= byte ptr -424h
var_40C		= dword	ptr -40Ch
var_408		= byte ptr -408h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_406C80
		push	eax
		mov	large fs:0, esp
		sub	esp, 448h
		push	ebx
		mov	ebx, ecx
		mov	eax, [ebx+110h]
		test	eax, eax
		jz	short loc_406CB1
		push	eax
		call	near ptr word_437AD2
		add	esp, 4


loc_406CB1:				; CODE XREF: sub_406C80+26j
		push	ebp
		push	esi
		mov	esi, [esp+460h+arg_0]
		push	edi
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		push	ecx
		call	near ptr word_437AEA
		mov	edx, eax
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		mov	[ebx+110h], edx
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		xor	eax, eax
		and	ecx, 3
		rep movsb
		mov	edi, [ebx+110h]
		or	ecx, 0FFFFFFFFh
		mov	byte ptr [ebx+4], 0
		mov	dword ptr [ebx+5], 0
		mov	byte ptr [ebx+9], 0
		mov	byte ptr [ebx+0Ah], 0
		mov	byte ptr [ebx+0Bh], 0
		repne scasb
		not	ecx
		push	ecx
		call	near ptr word_437AEA
		mov	edi, [ebx+110h]
		mov	edx, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	ebp, dword_511B00
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		push	offset dword_444600
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		push	edx
		and	ecx, 3
		rep movsb
		call	ebp
		add	esp, 10h
		mov	[esp+464h+var_40C], eax
		lea	esi, [esp+464h+var_408]
		mov	edi, 0FFh


loc_406D62:				; CODE XREF: sub_406C80+F4j
		push	offset dword_444600
		push	0
		call	ebp
		mov	[esi], eax
		add	esp, 8
		add	esi, 4
		dec	edi
		jnz	short loc_406D62
		mov	eax, [esp+464h+var_40C]
		xor	ecx, ecx
		cmp	eax, ecx
		jz	loc_406F68
		lea	ebp, [esp+464h+var_40C]


loc_406D88:				; CODE XREF: sub_406C80+2E0j
		mov	edi, [ebp+0]
		mov	esi, offset dword_4447EC
		mov	eax, edi


loc_406D92:				; CODE XREF: sub_406C80+130j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_406DB6
		test	cl, cl
		jz	short loc_406DB2
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_406DB6
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_406D92


loc_406DB2:				; CODE XREF: sub_406C80+11Cj
		xor	eax, eax
		jmp	short loc_406DBB
; ---------------------------------------------------------------------------


loc_406DB6:				; CODE XREF: sub_406C80+118j
					; sub_406C80+126j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_406DBB:				; CODE XREF: sub_406C80+134j
		test	eax, eax
		jz	loc_406F58
		mov	esi, offset dword_4447E0
		mov	eax, edi


loc_406DCA:				; CODE XREF: sub_406C80+168j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_406DEE
		test	cl, cl
		jz	short loc_406DEA
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_406DEE
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_406DCA


loc_406DEA:				; CODE XREF: sub_406C80+154j
		xor	eax, eax
		jmp	short loc_406DF3
; ---------------------------------------------------------------------------


loc_406DEE:				; CODE XREF: sub_406C80+150j
					; sub_406C80+15Ej
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_406DF3:				; CODE XREF: sub_406C80+16Cj
		test	eax, eax
		jnz	short loc_406E00
		mov	byte ptr [ebx+9], 1
		jmp	loc_406F58
; ---------------------------------------------------------------------------


loc_406E00:				; CODE XREF: sub_406C80+175j
		mov	esi, offset dword_4447D4
		mov	eax, edi


loc_406E07:				; CODE XREF: sub_406C80+1A5j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_406E2B
		test	cl, cl
		jz	short loc_406E27
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_406E2B
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_406E07


loc_406E27:				; CODE XREF: sub_406C80+191j
		xor	eax, eax
		jmp	short loc_406E30
; ---------------------------------------------------------------------------


loc_406E2B:				; CODE XREF: sub_406C80+18Dj
					; sub_406C80+19Bj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_406E30:				; CODE XREF: sub_406C80+1A9j
		test	eax, eax
		jnz	short loc_406E3D
		mov	byte ptr [ebx+0Ah], 1
		jmp	loc_406F58
; ---------------------------------------------------------------------------


loc_406E3D:				; CODE XREF: sub_406C80+1B2j
		mov	esi, offset dword_4447CC
		mov	eax, edi


loc_406E44:				; CODE XREF: sub_406C80+1E2j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_406E68
		test	cl, cl
		jz	short loc_406E64
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_406E68
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_406E44


loc_406E64:				; CODE XREF: sub_406C80+1CEj
		xor	eax, eax
		jmp	short loc_406E6D
; ---------------------------------------------------------------------------


loc_406E68:				; CODE XREF: sub_406C80+1CAj
					; sub_406C80+1D8j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_406E6D:				; CODE XREF: sub_406C80+1E6j
		test	eax, eax
		jnz	loc_406F58
		lea	ecx, [esp+464h+var_454]
		call	sub_40142E
		mov	eax, [esp+464h+arg_0]
		push	offset dword_4447CC
		push	eax
		mov	[esp+46Ch+var_4], 0
		nop
		call	near ptr 77C47C60h
		add	esp, 8
		test	eax, eax
		jz	loc_406F44
		push	eax
		lea	ecx, [esp+468h+var_454]
		call	sub_4015E1
		push	1
		push	offset dword_444600
		lea	ecx, [esp+46Ch+var_43C]
		push	1
		push	ecx
		lea	ecx, [esp+474h+var_454]
		call	sub_4011EA
		push	offset byte_448F30
		mov	ecx, eax
		mov	byte ptr [esp+468h+var_4], 1
		call	sub_4012EE
		lea	ecx, [esp+464h+var_43C]
		mov	esi, eax
		mov	byte ptr [esp+464h+var_4], 0
		call	sub_401226
		test	esi, esi
		jz	short loc_406F44
		push	1
		push	offset dword_444600
		lea	edx, [esp+46Ch+var_424]
		push	1
		push	edx
		lea	ecx, [esp+474h+var_454]
		mov	byte ptr [ebx+0Bh], 1
		call	sub_4011EA
		push	104h
		mov	ecx, eax
		mov	byte ptr [esp+468h+var_4], 2
		call	sub_40168B
		push	eax
		lea	eax, [ebx+0Ch]
		push	eax
		nop
		call	near ptr 77C47A90h
		add	esp, 0Ch
		lea	ecx, [esp+464h+var_424]
		mov	byte ptr [esp+464h+var_4], 0
		call	sub_401226
		add	ebp, 4


loc_406F44:				; CODE XREF: sub_406C80+221j
					; sub_406C80+271j
		lea	ecx, [esp+464h+var_454]
		mov	[esp+464h+var_4], 0FFFFFFFFh
		call	sub_401226


loc_406F58:				; CODE XREF: sub_406C80+13Dj
					; sub_406C80+17Bj ...
		mov	eax, [ebp+4]
		add	ebp, 4
		test	eax, eax
		jnz	loc_406D88
		xor	ecx, ecx


loc_406F68:				; CODE XREF: sub_406C80+FEj
		mov	al, [ebx+4]
		pop	edi
		pop	esi
		pop	ebp
		test	al, al
		jnz	short loc_406F75
		mov	[ebx+5], ecx


loc_406F75:				; CODE XREF: sub_406C80+2F0j
		cmp	[ebx+5], ecx
		jnz	short loc_406F85
		test	al, al
		jz	short loc_406F85
		mov	dword ptr [ebx+5], 0Ah


loc_406F85:				; CODE XREF: sub_406C80+2F8j
					; sub_406C80+2FCj
		mov	[ebx+5], ecx
		mov	ecx, [esp+458h+var_C]
		mov	byte ptr [ebx+4], 0
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 454h
		retn	4
sub_406C80	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 0D0h	dup(0CCh)

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



sub_407080	proc near		; CODE XREF: sub_4020BDj

var_11		= byte ptr -11h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_407080
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	esi
		mov	esi, ecx
		mov	[esp+18h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	eax, [esp+18h+var_11]
		lea	ecx, [esi+32h]
		push	eax
		mov	[esp+1Ch+var_4], 0
		call	sub_40156E
		mov	ecx, [esp+18h+var_C]
		mov	dword ptr [esi], offset	dword_43F00C
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn
sub_407080	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

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



sub_407100	proc near		; CODE XREF: sub_40159Bj

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

		mov	eax, [esp+arg_4]
		push	esi
		mov	esi, ecx
		push	eax
		mov	ecx, [esp+8+arg_0]
		call	sub_4015E1
		mov	edx, [esp+4+arg_0]
		mov	ecx, [esp+4+arg_8]
		lea	eax, [esp+4+arg_0]
		mov	[edx+2Ah], ecx
		push	eax
		lea	ecx, [esi+32h]
		call	sub_4014EC
		pop	esi
		retn	0Ch
sub_407100	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)

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



sub_407140	proc near		; CODE XREF: sub_401B04j

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

		sub	esp, 8
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+10h+var_8]
		call	sub_401AD7
		add	esi, 32h
		lea	eax, [esp+10h+var_4]
		push	eax
		mov	ecx, esi
		call	sub_40162C
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_4]
		mov	[esp+10h+var_8], ecx
		push	edx
		mov	ecx, esi
		call	sub_4021DF
		push	eax
		lea	ecx, [esp+14h+var_8]
		call	sub_40184D
		test	al, al
		jz	short loc_4071BB
		mov	edi, [esp+10h+arg_0]


loc_407183:				; CODE XREF: sub_407140+79j
		push	edi
		lea	ecx, [esp+14h+var_8]
		call	sub_401749
		mov	ecx, [eax]
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+10h+var_8]
		jz	short loc_4071C5
		call	sub_401F28
		lea	eax, [esp+10h+var_4]
		mov	ecx, esi
		push	eax
		call	sub_4021DF
		push	eax
		lea	ecx, [esp+14h+var_8]
		call	sub_40184D
		test	al, al
		jnz	short loc_407183


loc_4071BB:				; CODE XREF: sub_407140+3Dj
		pop	edi
		xor	eax, eax
		pop	esi
		add	esp, 8
		retn	8
; ---------------------------------------------------------------------------


loc_4071C5:				; CODE XREF: sub_407140+5Aj
		call	sub_401749
		mov	eax, [eax]
		pop	edi
		pop	esi
		add	esp, 8
		retn	8
sub_407140	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_407210:				; CODE XREF: ___:0040221Bj
		xor	al, al
		retn	4
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_407230	proc near		; CODE XREF: sub_40156Ej

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	0
		mov	cl, [eax]
		push	0
		mov	[esi], cl
		mov	ecx, esi
		call	sub_40119F
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_407230	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_407270	proc near		; CODE XREF: sub_40162Cj

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		push	eax
		call	sub_401A96
		mov	ecx, [eax]
		add	esp, 4
		push	ecx
		lea	ecx, [esp+8+var_4]
		call	sub_4021A8
		mov	edx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], edx
		pop	ecx
		retn	4
sub_407270	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_4072B0	proc near		; CODE XREF: sub_4021DFj

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		lea	ecx, [esp+4+var_4]
		push	eax
		call	sub_4021A8
		mov	ecx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], ecx
		pop	ecx
		retn	4
sub_4072B0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

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



sub_4072E0	proc near		; CODE XREF: sub_4014ECj

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+0Ch+arg_0]
		push	ecx
		mov	ecx, esi
		call	sub_4021DF
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_4013B6
		pop	esi
		pop	ecx
		retn	4
sub_4072E0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_407320	proc near		; CODE XREF: sub_401AD7j
		push	esi
		mov	esi, ecx
		call	sub_401B77
		mov	eax, esi
		pop	esi
		retn
sub_407320	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_407340	proc near		; CODE XREF: sub_401749j
		mov	eax, [ecx]
		push	eax
		call	sub_401208
		add	esp, 4
		retn
sub_407340	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_407360	proc near		; CODE XREF: sub_401F28j
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_401A96
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_407360	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_407390	proc near		; CODE XREF: sub_40184Dj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401FBE
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_407390	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_4073C0	proc near		; CODE XREF: sub_4013B6j

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

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+0Ch+arg_4]
		call	sub_401C9E
		mov	edi, eax
		push	edi
		call	sub_401C6C
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_40119F
		push	edi
		mov	ebx, eax
		call	sub_401C6C
		push	edi
		mov	[eax], ebx
		call	sub_401C6C
		mov	edi, [eax]
		push	edi
		call	sub_401C6C
		mov	ecx, [eax]
		push	ecx
		call	sub_401A96
		mov	edx, [esp+1Ch+arg_8]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_401208
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_40167C
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		lea	ecx, [esp+10h+arg_8]
		call	sub_4021A8
		mov	ecx, [eax]
		mov	eax, [esp+0Ch+arg_0]
		pop	edi
		pop	esi
		mov	[eax], ecx
		pop	ebx
		retn	0Ch
sub_4073C0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)

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



sub_407460	proc near		; CODE XREF: sub_40119Fj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_4019D8
		mov	edi, [esp+8+arg_0]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_407475
		mov	edi, esi


loc_407475:				; CODE XREF: sub_407460+11j
		push	esi
		call	sub_401A96
		mov	[eax], edi
		mov	edi, [esp+0Ch+arg_4]
		add	esp, 4
		test	edi, edi
		jnz	short loc_40748A
		mov	edi, esi


loc_40748A:				; CODE XREF: sub_407460+26j
		push	esi
		call	sub_401C6C
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_407460	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_4074B0	proc near		; CODE XREF: sub_401A96j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_4074B0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_4074D0	proc near		; CODE XREF: sub_401208j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_4074D0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_4074F0	proc near		; CODE XREF: sub_401B77j
		mov	eax, ecx
		retn
sub_4074F0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_407510	proc near		; CODE XREF: sub_4021A8j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_4011E5
		mov	eax, esi
		pop	esi
		retn	4
sub_407510	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_407540	proc near		; CODE XREF: sub_401FBEj

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, [ecx]
		push	esi
		xor	ecx, ecx
		mov	esi, [edx]
		cmp	eax, esi
		pop	esi
		setz	cl
		mov	al, cl
		retn	4
sub_407540	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_407570	proc near		; CODE XREF: sub_401C6Cj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_407570	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_407590	proc near		; CODE XREF: sub_4019D8j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D2A
		add	esp, 8
		retn	4
sub_407590	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_4075C0	proc near		; CODE XREF: sub_40167Cj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	eax
		push	ecx
		call	sub_40109B
		add	esp, 8
		retn	8
sub_4075C0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_4075F0	proc near		; CODE XREF: sub_4011E5j

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		retn	4
sub_4075F0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

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



sub_407610	proc near		; CODE XREF: sub_401C9Ej
		mov	eax, [ecx]
		retn
sub_407610	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_407630	proc near		; CODE XREF: sub_401D2Aj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jge	short loc_40763A
		xor	eax, eax


loc_40763A:				; CODE XREF: sub_407630+6j
		push	eax
		call	near ptr word_437AEA
		add	esp, 4
		retn
sub_407630	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_407660	proc near		; CODE XREF: sub_40109Bj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	eax
		push	4
		call	sub_4011CC
		add	esp, 8
		test	eax, eax
		jz	short locret_40767B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_40767B:				; CODE XREF: sub_407660+11j
		retn
sub_407660	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_407690	proc near		; CODE XREF: sub_4011CCj

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		retn
sub_407690	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_4076B0	proc near		; CODE XREF: sub_401B40j

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

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_4076B0
		push	eax
		mov	large fs:0, esp
		push	0
		push	0
		push	0
		push	0
		lea	ecx, [esp+1Ch+arg_4]
		mov	[esp+1Ch+var_4], 0
		call	sub_4017EE
		push	eax
		mov	eax, [esp+20h+arg_0]
		push	0
		push	eax
		mov	ecx, offset word_44ACD6
		call	sub_401B72
		lea	ecx, [esp+0Ch+arg_4]
		mov	[esp+0Ch+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+0Ch+var_C]
		mov	large fs:0, ecx
		add	esp, 0Ch
		retn	1Ch
sub_4076B0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

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



sub_407740	proc near		; CODE XREF: sub_401CD5j

var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= byte ptr  8
arg_1C		= byte ptr  20h

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_407740
		push	eax
		mov	large fs:0, esp
		push	0
		push	0
		push	0
		push	0
		lea	ecx, [esp+1Ch+arg_1C]
		mov	[esp+1Ch+var_4], 1
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+20h+arg_4]
		call	sub_4017EE
		push	eax
		mov	eax, [esp+24h+arg_0]
		push	eax
		mov	ecx, offset word_44ACD6
		call	sub_401B72
		lea	ecx, [esp+0Ch+arg_4]
		mov	byte ptr [esp+0Ch+var_4], 0
		call	sub_401226
		lea	ecx, [esp+0Ch+arg_1C]
		mov	[esp+0Ch+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+0Ch+var_C]
		mov	large fs:0, ecx
		add	esp, 0Ch
		retn	34h
sub_407740	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)

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



sub_4077E0	proc near		; CODE XREF: sub_40121Cj

var_350		= dword	ptr -350h
var_34C		= dword	ptr -34Ch
var_348		= byte ptr -348h
var_330		= byte ptr -330h
var_318		= byte ptr -318h
var_300		= dword	ptr -300h
var_2FC		= dword	ptr -2FCh
var_2F8		= dword	ptr -2F8h
var_2F4		= byte ptr -2F4h
var_2DC		= byte ptr -2DCh
var_2C4		= byte ptr -2C4h
var_2AC		= byte ptr -2ACh
var_294		= byte ptr -294h
var_27C		= byte ptr -27Ch
var_264		= byte ptr -264h
var_24C		= byte ptr -24Ch
var_234		= byte ptr -234h
var_21C		= byte ptr -21Ch
var_204		= byte ptr -204h
var_1EC		= byte ptr -1ECh
var_1D4		= byte ptr -1D4h
var_1BC		= byte ptr -1BCh
var_1A4		= byte ptr -1A4h
var_18C		= byte ptr -18Ch
var_174		= byte ptr -174h
var_15C		= byte ptr -15Ch
var_144		= byte ptr -144h
var_12C		= byte ptr -12Ch
var_114		= byte ptr -114h
var_FC		= byte ptr -0FCh
var_E4		= byte ptr -0E4h
var_CC		= byte ptr -0CCh
var_B4		= byte ptr -0B4h
var_9C		= byte ptr -9Ch
var_84		= byte ptr -84h
var_6C		= byte ptr -6Ch
var_54		= byte ptr -54h
var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4077E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 344h
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+35Ch+var_2C4]
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_2DC]
		mov	[esp+35Ch+var_4], 0
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_174]
		mov	byte ptr [esp+35Ch+var_4], 1
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_1A4]
		mov	byte ptr [esp+35Ch+var_4], 2
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_2AC]
		mov	byte ptr [esp+35Ch+var_4], 3
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_2F4]
		mov	byte ptr [esp+35Ch+var_4], 4
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_1D4]
		mov	byte ptr [esp+35Ch+var_4], 5
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_204]
		mov	byte ptr [esp+35Ch+var_4], 6
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_294]
		mov	byte ptr [esp+35Ch+var_4], 7
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_24]
		mov	byte ptr [esp+35Ch+var_4], 8
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_54]
		mov	byte ptr [esp+35Ch+var_4], 9
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_84]
		mov	byte ptr [esp+35Ch+var_4], 0Ah
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_3C]
		mov	byte ptr [esp+35Ch+var_4], 0Bh
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_6C]
		mov	byte ptr [esp+35Ch+var_4], 0Ch
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_234]
		mov	byte ptr [esp+35Ch+var_4], 0Dh
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_264]
		mov	byte ptr [esp+35Ch+var_4], 0Eh
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_E4]
		mov	byte ptr [esp+35Ch+var_4], 0Fh
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_15C]
		mov	byte ptr [esp+35Ch+var_4], 10h
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_114]
		mov	byte ptr [esp+35Ch+var_4], 11h
		call	sub_40142E
		mov	byte ptr [esp+35Ch+var_4], 12h
		lea	ecx, [esp+35Ch+var_18C]
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_144]
		mov	byte ptr [esp+35Ch+var_4], 13h
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_1BC]
		mov	byte ptr [esp+35Ch+var_4], 14h
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_27C]
		mov	byte ptr [esp+35Ch+var_4], 15h
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_1EC]
		mov	byte ptr [esp+35Ch+var_4], 16h
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_CC]
		mov	byte ptr [esp+35Ch+var_4], 17h
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_21C]
		mov	byte ptr [esp+35Ch+var_4], 18h
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_B4]
		mov	byte ptr [esp+35Ch+var_4], 19h
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_9C]
		mov	byte ptr [esp+35Ch+var_4], 1Ah
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_24C]
		mov	byte ptr [esp+35Ch+var_4], 1Bh
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_330]
		mov	byte ptr [esp+35Ch+var_4], 1Ch
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_318]
		mov	byte ptr [esp+35Ch+var_4], 1Dh
		call	sub_40142E
		mov	ebx, 1Eh
		push	offset dword_444880
		lea	ecx, [esp+360h+var_2C4]
		mov	byte ptr [esp+360h+var_4], bl
		call	sub_401A9B
		push	offset dword_444878
		lea	ecx, [esp+360h+var_2DC]
		call	sub_401A9B
		push	offset byte_448F30
		lea	ecx, [esp+360h+var_144]
		call	sub_401A9B
		lea	eax, [esp+35Ch+var_2C4]
		lea	ecx, [esp+35Ch+var_174]
		push	eax
		call	sub_40202C
		lea	ecx, [esp+35Ch+var_2DC]
		push	ecx
		lea	ecx, [esp+360h+var_1A4]
		call	sub_40202C
		push	offset byte_448F30
		lea	ecx, [esp+360h+var_1BC]
		call	sub_401A9B
		push	offset dword_44486C
		lea	ecx, [esp+360h+var_2AC]
		call	sub_401A9B
		push	offset dword_444864
		lea	ecx, [esp+360h+var_24C]
		call	sub_401A9B
		push	offset dword_44485C
		lea	ecx, [esp+360h+var_2F4]
		call	sub_401A9B
		push	offset dword_44484C
		lea	ecx, [esp+360h+var_1D4]
		call	sub_401A9B
		push	offset dword_444838
		lea	ecx, [esp+360h+var_204]
		call	sub_401A9B
		push	offset dword_444834
		lea	ecx, [esp+360h+var_294]
		call	sub_401A9B
		push	offset dword_444830
		lea	ecx, [esp+360h+var_234]
		call	sub_401A9B
		push	0
		push	4Ah
		push	20h
		push	48h
		push	1Ch
		push	4Bh
		push	46h
		push	4Ah
		push	46h
		push	47h
		push	4Ch
		push	1Fh
		push	48h
		push	1Fh
		push	ebx
		push	1Bh
		push	1Dh
		push	47h
		push	4Bh
		push	47h
		push	ebx
		push	45h
		push	46h
		push	4Ah
		push	48h
		push	ebx
		push	1Dh
		push	1Ch
		push	4Ah
		push	20h
		push	4Ch
		push	4Dh
		lea	edx, [esp+3DCh+var_348]
		push	44h
		push	edx
		call	sub_4019C4
		add	esp, 88h
		push	eax
		lea	ecx, [esp+360h+var_264]
		mov	byte ptr [esp+360h+var_4], 1Fh
		call	sub_40202C
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		push	offset dword_444820
		lea	ecx, [esp+360h+var_E4]
		call	sub_401A9B
		push	offset dword_444818
		lea	ecx, [esp+360h+var_15C]
		call	sub_401A9B
		push	offset dword_4447FC
		lea	ecx, [esp+360h+var_114]
		call	sub_401A9B
		push	offset dword_4447F8
		lea	ecx, [esp+360h+var_27C]
		call	sub_401A9B
		push	0
		push	4Bh
		push	48h
		push	4Ah
		push	47h
		push	4Ch
		push	48h
		push	4Bh
		push	48h
		push	45h
		lea	eax, [esp+384h+var_348]
		push	46h
		push	eax
		call	sub_4019C4
		add	esp, 30h
		push	eax
		lea	ecx, [esp+360h+var_18C]
		mov	byte ptr [esp+360h+var_4], 20h
		call	sub_40202C
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		push	0
		push	0Dh
		push	0Fh
		push	3
		push	4Fh
		push	14h
		push	6
		push	0Fh
		push	13h
		push	0Fh
		push	12h
		push	3
		push	9
		push	0Dh
		push	4Fh
		push	46h
		push	19h
		push	14h
		push	0Fh
		push	2
		push	12h
		lea	ecx, [esp+3B0h+var_348]
		push	13h
		push	ecx
		call	sub_4019C4
		add	esp, 5Ch
		push	eax
		lea	ecx, [esp+360h+var_1EC]
		mov	byte ptr [esp+360h+var_4], 21h
		call	sub_40202C
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		push	0
		push	48h
		push	46h
		push	44h
		lea	edx, [esp+36Ch+var_348]
		push	45h
		push	edx
		call	sub_4019C4
		add	esp, 18h
		push	eax
		lea	ecx, [esp+360h+var_CC]
		mov	byte ptr [esp+360h+var_4], 22h
		call	sub_40202C
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		push	0
		push	48h
		push	46h
		push	44h
		lea	eax, [esp+36Ch+var_348]
		push	45h
		push	eax
		call	sub_4019C4
		add	esp, 18h
		push	eax
		lea	ecx, [esp+360h+var_B4]
		mov	byte ptr [esp+360h+var_4], 23h
		call	sub_40202C
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		push	0
		push	44h
		push	49h
		lea	ecx, [esp+368h+var_348]
		push	46h
		push	ecx
		call	sub_4019C4
		add	esp, 14h
		push	eax
		lea	ecx, [esp+360h+var_21C]
		mov	byte ptr [esp+360h+var_4], 24h
		call	sub_40202C
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		push	0
		push	48h
		push	46h
		push	44h
		lea	edx, [esp+36Ch+var_348]
		push	45h
		push	edx
		call	sub_4019C4
		add	esp, 18h
		push	eax
		lea	ecx, [esp+360h+var_9C]
		mov	byte ptr [esp+360h+var_4], 25h
		call	sub_40202C
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		push	0
		push	5
		push	15h
		push	12h
		lea	eax, [esp+36Ch+var_348]
		push	14h
		push	eax
		call	sub_4019C4
		add	esp, 18h
		push	eax
		lea	ecx, [esp+360h+var_330]
		mov	byte ptr [esp+360h+var_4], 26h
		call	sub_40202C
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		push	0
		push	5
		push	13h
		push	0Ch
		push	1
		lea	ecx, [esp+370h+var_348]
		push	6
		push	ecx
		call	sub_4019C4
		add	esp, 1Ch
		push	eax
		lea	ecx, [esp+360h+var_318]
		mov	byte ptr [esp+360h+var_4], 27h
		call	sub_40202C
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_2F4]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_34C], esp
		push	eax
		call	sub_401870
		push	0
		push	13h
		push	13h
		push	1
		push	10h
		push	0Eh
		push	1
		push	8
		push	3
		mov	byte ptr [esp+398h+var_4], 28h
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	edx, [esp+3D0h+var_348]
		push	13h
		push	edx
		call	sub_4019C4
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 29h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_350], esp
		push	eax
		call	sub_401870
		lea	eax, [esi+0FECh]
		mov	ecx, esi
		push	eax
		mov	byte ptr [esp+390h+var_4], 2Ah
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_2AC]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	0Eh
		push	1
		push	8
		push	3
		push	0Eh
		push	9
		push	1
		push	0Dh
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	ecx, [esp+3D0h+var_348]
		push	13h
		push	ecx
		mov	byte ptr [esp+3D8h+var_4], 2Bh
		call	sub_4019C4
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 2Ch
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	edx, [esi+1035h]
		mov	ecx, esi
		push	edx
		mov	byte ptr [esp+390h+var_4], 2Dh
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_2DC]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	14h
		push	12h
		push	0Fh
		push	10h
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	eax, [esp+3C0h+var_348]
		push	13h
		push	eax
		mov	byte ptr [esp+3C8h+var_4], 2Eh
		call	sub_4019C4
		add	esp, 54h
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 2Fh
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	ecx, [esi+0FA3h]
		mov	byte ptr [esp+38Ch+var_4], 30h
		push	ecx
		mov	ecx, esi
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_2C4]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	4Eh
		push	14h
		push	0Fh
		mov	byte ptr [esp+39Ch+var_4], 31h
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	edx, [esp+3C8h+var_348]
		push	13h
		push	edx
		call	sub_4019C4
		add	esp, 5Ch
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 32h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	eax, [esi+0F5Ah]
		mov	ecx, esi
		push	eax
		mov	byte ptr [esp+390h+var_4], 33h
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_294]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	18h
		push	9
		push	6
		push	5
		push	12h
		push	10h
		push	0Bh
		push	3
		push	9
		push	0Eh
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	ecx, [esp+3D8h+var_348]
		push	13h
		push	ecx
		mov	byte ptr [esp+3E0h+var_4], 34h
		call	sub_4019C4
		add	esp, 6Ch
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 35h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	edi, [esi+0E7Fh]
		mov	ecx, esi
		push	edi
		mov	byte ptr [esp+390h+var_4], 36h
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_144]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	13h
		push	13h
		push	1
		push	10h
		push	16h
		push	12h
		push	5
		push	13h
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	edx, [esp+3D0h+var_348]
		push	13h
		push	edx
		mov	byte ptr [esp+3D8h+var_4], 37h
		call	sub_4019C4
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 38h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	eax, [esi+0F11h]
		mov	ecx, esi
		push	eax
		mov	byte ptr [esp+390h+var_4], 39h
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_318]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	0Ch
		push	13h
		push	13h
		push	3Fh
		push	5
		push	13h
		mov	byte ptr [esp+390h+var_4], 3Ah
		push	15h
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	ecx, [esp+3CCh+var_348]
		push	13h
		push	ecx
		call	sub_4019C4
		add	esp, 60h
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 3Bh
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	edx, [esi+107Eh]
		mov	ecx, esi
		push	edx
		mov	byte ptr [esp+390h+var_4], 3Ch
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	eax, [esp+35Ch+var_34C]
		mov	ecx, offset byte_4D834F
		push	eax
		mov	[esp+360h+var_34C], edi
		call	sub_401A73
		lea	ecx, [esp+35Ch+var_2F4]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	13h
		push	13h
		push	1
		push	10h
		push	0Eh
		push	1
		push	8
		push	3
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	ecx, [esp+3D0h+var_348]
		push	13h
		push	ecx
		mov	byte ptr [esp+3D8h+var_4], 3Dh
		call	sub_4019C4
		add	esp, 64h
		mov	byte ptr [esp+374h+var_4], 3Eh
		mov	ecx, eax
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	edx, [esi+1234h]
		mov	ecx, esi
		push	edx
		mov	byte ptr [esp+390h+var_4], 3Fh
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_2AC]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	0Eh
		push	1
		push	8
		push	3
		push	0Eh
		push	9
		push	1
		push	0Dh
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	eax, [esp+3D0h+var_348]
		push	13h
		push	eax
		mov	byte ptr [esp+3D8h+var_4], 40h
		call	sub_4019C4
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 41h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	ecx, [esi+127Dh]
		mov	byte ptr [esp+38Ch+var_4], 42h
		push	ecx
		mov	ecx, esi
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_1A4]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		mov	byte ptr [esp+374h+var_4], 43h
		push	0
		push	14h
		push	12h
		push	0Fh
		push	10h
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	edx, [esp+3C0h+var_348]
		push	13h
		push	edx
		call	sub_4019C4
		add	esp, 54h
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 44h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	eax, [esi+11EBh]
		mov	ecx, esi
		push	eax
		mov	byte ptr [esp+390h+var_4], 45h
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_174]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	ecx, [esp+3C8h+var_348]
		push	13h
		push	ecx
		mov	byte ptr [esp+3D0h+var_4], 46h
		call	sub_4019C4
		add	esp, 5Ch
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 47h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	edx, [esi+11A2h]
		mov	ecx, esi
		push	edx
		mov	byte ptr [esp+390h+var_4], 48h
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_294]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	18h
		push	9
		push	6
		push	5
		push	12h
		push	10h
		push	0Bh
		push	3
		push	9
		push	0Eh
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	eax, [esp+3D8h+var_348]
		push	13h
		push	eax
		mov	byte ptr [esp+3E0h+var_4], 49h
		call	sub_4019C4
		add	esp, 6Ch
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 4Ah
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	edi, [esi+10C7h]
		mov	ecx, esi
		push	edi
		mov	byte ptr [esp+390h+var_4], 4Bh
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_1BC]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		mov	byte ptr [esp+378h+var_4], 4Ch
		push	13h
		push	13h
		push	1
		push	10h
		push	16h
		push	12h
		push	5
		push	13h
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	ecx, [esp+3D0h+var_348]
		push	13h
		push	ecx
		call	sub_4019C4
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 4Dh
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	edx, [esi+1159h]
		mov	ecx, esi
		push	edx
		mov	byte ptr [esp+390h+var_4], 4Eh
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_318]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		push	0
		push	0Ch
		push	13h
		push	13h
		push	3Fh
		push	5
		push	13h
		push	15h
		push	4Eh
		push	14h
		push	0Fh
		push	0Fh
		push	12h
		push	3Fh
		push	12h
		push	5
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	eax, [esp+3CCh+var_348]
		push	13h
		push	eax
		mov	byte ptr [esp+3D4h+var_4], 4Fh
		call	sub_4019C4
		add	esp, 60h
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 50h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_34C], esp
		push	eax
		call	sub_401870
		lea	ecx, [esi+12C6h]
		mov	byte ptr [esp+38Ch+var_4], 51h
		push	ecx
		mov	ecx, esi
		call	sub_401CD5
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	edx, [esp+35Ch+var_34C]
		mov	ecx, offset byte_4D834F
		push	edx
		mov	[esp+360h+var_34C], edi
		call	sub_401A73
		push	offset byte_448F30
		push	offset word_4E8E5A
		call	sub_40102D
		add	esp, 8
		lea	ecx, [esp+35Ch+var_12C]
		call	sub_40142E
		lea	ecx, [esp+35Ch+var_FC]
		mov	byte ptr [esp+35Ch+var_4], 52h
		call	sub_40142E
		push	56D2h
		push	539h
		mov	byte ptr [esp+364h+var_4], 53h
		call	sub_4021C6
		push	eax
		lea	eax, [esp+368h+var_12C]
		push	offset dword_4447F4
		push	eax
		call	sub_40102D
		push	56D2h
		push	539h
		call	sub_4021C6
		push	eax
		lea	ecx, [esp+37Ch+var_FC]
		push	offset dword_4447F4
		push	ecx
		call	sub_40102D
		add	esp, 10h
		lea	edx, [esp+374h+var_330]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+606h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_330]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+64Fh]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_330]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+805h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_330]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+84Eh]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_330]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+897h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_330]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+450h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_318]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+499h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_330]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+52Bh]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_330]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+574h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_330]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+0B28h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_318]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+8E0h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		mov	ecx, esp
		lea	edx, [esp+374h+var_FC]
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+3BEh]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_18C]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+407h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_114]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+5BDh]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_1EC]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+698h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_21C]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+72Ah]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_24C]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+6E1h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_B4]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+773h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_CC]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+7BCh]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	offset word_4E8E5A
		call	sub_4014D3
		lea	ecx, [esi+251h]
		push	ecx
		mov	ecx, esi
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_1D4]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+29Ah]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_204]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+2E3h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_27C]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+32Ch]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		sub	esp, 18h
		lea	edx, [esp+374h+var_12C]
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	edx
		call	sub_4014D3
		lea	eax, [esi+375h]
		mov	ecx, esi
		push	eax
		call	sub_401B40
		push	0
		mov	ecx, offset byte_4D834F
		call	sub_401474
		mov	ecx, [eax]
		add	ecx, 16Dh
		call	sub_4017EE
		push	eax
		push	offset byte_4493ED
		mov	ecx, offset word_44ACD6
		call	sub_4015A0
		push	0
		mov	ecx, offset byte_4D834F
		call	sub_401474
		mov	ecx, [eax]
		add	ecx, 1B6h
		call	sub_4017EE
		push	eax
		push	offset dword_4493A4
		mov	ecx, offset word_44ACD6
		call	sub_4015A0
		push	0
		mov	ecx, offset byte_4D834F
		call	sub_401474
		mov	ecx, [eax]
		call	sub_4017EE
		push	eax
		push	offset dword_449280
		mov	ecx, offset word_44ACD6
		call	sub_4015A0
		push	0
		mov	ecx, offset byte_4D834F
		call	sub_401474
		mov	ecx, [eax]
		add	ecx, 124h
		call	sub_4017EE
		push	eax
		push	offset word_449312
		mov	ecx, offset word_44ACD6
		call	sub_4015A0
		push	0
		mov	ecx, offset byte_4D834F
		call	sub_401474
		mov	ecx, [eax]
		add	ecx, 0DBh
		call	sub_4017EE
		push	eax
		push	offset byte_4492C9
		mov	ecx, offset word_44ACD6
		call	sub_4015A0
		push	0
		mov	ecx, offset byte_4D834F
		call	sub_401474
		mov	ecx, [eax]
		add	ecx, 92h
		call	sub_4017EE
		push	eax
		push	offset byte_44935B
		mov	ecx, offset word_44ACD6
		call	sub_4015A0
		push	0
		mov	ecx, offset byte_4D834F
		call	sub_401474
		mov	ecx, [eax]
		add	ecx, 1FFh
		call	sub_4017EE
		push	eax
		push	offset byte_44947F
		mov	ecx, offset word_44ACD6
		call	sub_4015A0
		lea	ecx, [esp+35Ch+var_15C]
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_350], esp
		push	eax
		call	sub_401870
		lea	ecx, [esp+374h+var_E4]
		mov	byte ptr [esp+374h+var_4], 54h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_2F8], esp
		push	eax
		call	sub_401870
		lea	ecx, [esp+38Ch+var_264]
		mov	byte ptr [esp+38Ch+var_4], 55h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+3A4h+var_300], esp
		push	eax
		call	sub_401870
		lea	ecx, [esp+3A4h+var_234]
		mov	byte ptr [esp+3A4h+var_4], 56h
		call	sub_4017EE
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+3BCh+var_2FC], esp
		push	eax
		call	sub_401870
		mov	ecx, offset word_44AC5E
		mov	byte ptr [esp+3BCh+var_4], 53h
		call	sub_40137F
		lea	ecx, [esp+35Ch+var_FC]
		mov	byte ptr [esp+35Ch+var_4], 52h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_12C]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		lea	ecx, [esp+35Ch+var_318]
		mov	byte ptr [esp+35Ch+var_4], 1Dh
		call	sub_401226
		mov	byte ptr [esp+35Ch+var_4], 1Ch
		lea	ecx, [esp+35Ch+var_330]
		call	sub_401226
		lea	ecx, [esp+35Ch+var_24C]
		mov	byte ptr [esp+35Ch+var_4], 1Bh
		call	sub_401226
		lea	ecx, [esp+35Ch+var_9C]
		mov	byte ptr [esp+35Ch+var_4], 1Ah
		call	sub_401226
		lea	ecx, [esp+35Ch+var_B4]
		mov	byte ptr [esp+35Ch+var_4], 19h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_21C]
		mov	byte ptr [esp+35Ch+var_4], 18h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_CC]
		mov	byte ptr [esp+35Ch+var_4], 17h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_1EC]
		mov	byte ptr [esp+35Ch+var_4], 16h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_27C]
		mov	byte ptr [esp+35Ch+var_4], 15h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_1BC]
		mov	byte ptr [esp+35Ch+var_4], 14h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_144]
		mov	byte ptr [esp+35Ch+var_4], 13h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_18C]
		mov	byte ptr [esp+35Ch+var_4], 12h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_114]
		mov	byte ptr [esp+35Ch+var_4], 11h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_15C]
		mov	byte ptr [esp+35Ch+var_4], 10h
		call	sub_401226
		lea	ecx, [esp+35Ch+var_E4]
		mov	byte ptr [esp+35Ch+var_4], 0Fh
		call	sub_401226
		lea	ecx, [esp+35Ch+var_264]
		mov	byte ptr [esp+35Ch+var_4], 0Eh
		call	sub_401226
		lea	ecx, [esp+35Ch+var_234]
		mov	byte ptr [esp+35Ch+var_4], 0Dh
		call	sub_401226
		lea	ecx, [esp+35Ch+var_6C]
		mov	byte ptr [esp+35Ch+var_4], 0Ch
		call	sub_401226
		lea	ecx, [esp+35Ch+var_3C]
		mov	byte ptr [esp+35Ch+var_4], 0Bh
		call	sub_401226
		lea	ecx, [esp+35Ch+var_84]
		mov	byte ptr [esp+35Ch+var_4], 0Ah
		call	sub_401226
		lea	ecx, [esp+35Ch+var_54]
		mov	byte ptr [esp+35Ch+var_4], 9
		call	sub_401226
		lea	ecx, [esp+35Ch+var_24]
		mov	byte ptr [esp+35Ch+var_4], 8
		call	sub_401226
		lea	ecx, [esp+35Ch+var_294]
		mov	byte ptr [esp+35Ch+var_4], 7
		call	sub_401226
		lea	ecx, [esp+35Ch+var_204]
		mov	byte ptr [esp+35Ch+var_4], 6
		call	sub_401226
		lea	ecx, [esp+35Ch+var_1D4]
		mov	byte ptr [esp+35Ch+var_4], 5
		call	sub_401226
		lea	ecx, [esp+35Ch+var_2F4]
		mov	byte ptr [esp+35Ch+var_4], 4
		call	sub_401226
		lea	ecx, [esp+35Ch+var_2AC]
		mov	byte ptr [esp+35Ch+var_4], 3
		call	sub_401226
		lea	ecx, [esp+35Ch+var_1A4]
		mov	byte ptr [esp+35Ch+var_4], 2
		call	sub_401226
		mov	byte ptr [esp+35Ch+var_4], 1
		lea	ecx, [esp+35Ch+var_174]
		call	sub_401226
		lea	ecx, [esp+35Ch+var_2DC]
		mov	byte ptr [esp+35Ch+var_4], 0
		call	sub_401226
		lea	ecx, [esp+35Ch+var_2C4]
		mov	[esp+35Ch+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+35Ch+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 350h
		retn
sub_4077E0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 5E0h	dup(0CCh)

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



sub_409530	proc near		; CODE XREF: sub_401474j

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_401983
		mov	edi, [esp+8+arg_0]
		cmp	eax, edi
		ja	short loc_409548
		mov	ecx, esi
		call	sub_40191A


loc_409548:				; CODE XREF: sub_409530+Fj
		mov	ecx, esi
		call	sub_401A46
		lea	eax, [eax+edi*4]
		pop	edi
		pop	esi
		retn	4
sub_409530	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

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



sub_409570	proc near		; CODE XREF: sub_401A73j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_40128A
		push	eax
		mov	ecx, esi
		call	sub_401695
		pop	esi
		retn	4
sub_409570	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_4095A0	proc near		; CODE XREF: sub_401A46j
		mov	eax, [ecx+4]
		retn
sub_4095A0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_4095C0	proc near		; CODE XREF: sub_40128Aj
		mov	eax, [ecx+8]
		retn
sub_4095C0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_4095E0	proc near		; CODE XREF: sub_401983j
		mov	edx, [ecx+4]
		test	edx, edx
		jnz	short loc_4095EA
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4095EA:				; CODE XREF: sub_4095E0+5j
		mov	eax, [ecx+8]
		sub	eax, edx
		sar	eax, 2
		retn
sub_4095E0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_409610	proc near		; CODE XREF: sub_401695j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, ecx
		call	sub_401A46
		mov	edx, [esp+8+arg_4]
		mov	ecx, eax
		mov	eax, [esp+8+arg_0]
		push	edx
		mov	esi, eax
		push	1
		sub	esi, ecx
		push	eax
		mov	ecx, edi
		sar	esi, 2
		call	sub_401BAE
		mov	ecx, edi
		call	sub_401A46
		lea	eax, [eax+esi*4]
		pop	edi
		pop	esi
		retn	8
sub_409610	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_409660:				; CODE XREF: sub_40191Aj
		push	0FFFFFFFFh
		push	offset byte_439D39
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		lea	eax, [esp+3]
		lea	ecx, [esp+4]
		push	eax
		push	offset dword_444908
		nop
		call	near ptr 76081F67h
		lea	ecx, [esp+4]
		mov	dword ptr [esp+38h], 0
		push	ecx
		lea	ecx, [esp+18h]
		nop
		call	near ptr 760A0430h
		lea	edx, [esp+14h]
		push	offset dword_440088
		push	edx
		call	near ptr word_437B22
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

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



sub_4096E0	proc near		; CODE XREF: sub_401BAEj

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

		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esp+10h+arg_4]
		mov	eax, [esi+8]
		mov	ecx, [esi+0Ch]
		sub	ecx, eax
		sar	ecx, 2
		cmp	ecx, edi
		jnb	loc_4097AB
		mov	ecx, esi
		call	sub_401983
		cmp	edi, eax
		jnb	short loc_409713
		mov	ecx, esi
		call	sub_401983
		mov	ebp, eax
		jmp	short loc_409715
; ---------------------------------------------------------------------------


loc_409713:				; CODE XREF: sub_4096E0+26j
		mov	ebp, edi


loc_409715:				; CODE XREF: sub_4096E0+31j
		mov	ecx, esi
		call	sub_401983
		mov	ebx, eax
		push	0
		add	ebx, ebp
		mov	ecx, esi
		push	ebx
		call	sub_401CC1
		mov	edx, [esp+10h+arg_0]
		mov	ebp, eax
		mov	eax, [esi+4]
		push	ebp
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_4016E0
		mov	ecx, [esp+10h+arg_8]
		mov	[esp+10h+arg_4], eax
		push	ecx
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_401177
		mov	edx, [esp+10h+arg_4]
		mov	ecx, [esi+8]
		lea	eax, [edx+edi*4]
		mov	edx, [esp+10h+arg_0]
		push	eax
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_4016E0
		mov	eax, [esi+8]
		mov	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_401717
		mov	eax, [esi+4]
		mov	edx, [esi+0Ch]
		sub	edx, eax
		mov	ecx, esi
		sar	edx, 2
		push	edx
		push	eax
		call	sub_401294
		lea	eax, [ebp+ebx*4+0]
		mov	ecx, esi
		mov	[esi+0Ch], eax
		call	sub_401983
		add	eax, edi
		mov	[esi+4], ebp
		pop	edi
		lea	ecx, [ebp+eax*4+0]
		mov	[esi+8], ecx
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4097AB:				; CODE XREF: sub_4096E0+17j
		mov	ebx, [esp+10h+arg_0]
		mov	edx, eax
		sub	edx, ebx
		sar	edx, 2
		cmp	edx, edi
		jnb	short loc_409809
		lea	ebp, ds:0[edi*4]
		lea	ecx, [ebx+ebp]
		push	ecx
		push	eax
		push	ebx
		mov	ecx, esi
		call	sub_4016E0
		mov	eax, [esi+8]
		mov	edx, [esp+10h+arg_8]
		mov	ecx, eax
		push	edx
		sub	ecx, ebx
		sar	ecx, 2
		sub	edi, ecx
		mov	ecx, esi
		push	edi
		push	eax
		call	sub_401177
		mov	edx, [esp+10h+arg_8]
		mov	eax, [esi+8]
		push	edx
		push	eax
		push	ebx
		call	sub_401FB4
		mov	eax, [esi+8]
		add	esp, 0Ch
		add	eax, ebp
		mov	[esi+8], eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_409809:				; CODE XREF: sub_4096E0+D8j
		test	edi, edi
		jbe	short loc_409843
		shl	edi, 2
		push	eax
		push	eax
		sub	eax, edi
		mov	ecx, esi
		push	eax
		call	sub_4016E0
		mov	eax, [esi+8]
		push	eax
		sub	eax, edi
		push	eax
		push	ebx
		call	sub_401CDF
		mov	ecx, [esp+1Ch+arg_8]
		lea	edx, [edi+ebx]
		push	ecx
		push	edx
		push	ebx
		call	sub_401FB4
		mov	eax, [esi+8]
		add	esp, 18h
		add	eax, edi
		mov	[esi+8], eax


loc_409843:				; CODE XREF: sub_4096E0+12Bj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
sub_4096E0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 60h dup(0CCh)

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



sub_4098B0	proc near		; CODE XREF: sub_401717j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		cmp	esi, ebx
		mov	edi, ecx
		jz	short loc_4098D0


loc_4098C1:				; CODE XREF: sub_4098B0+1Ej
		push	esi
		mov	ecx, edi
		call	sub_402090
		add	esi, 4
		cmp	esi, ebx
		jnz	short loc_4098C1


loc_4098D0:				; CODE XREF: sub_4098B0+Fj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_4098B0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_4098F0	proc near		; CODE XREF: sub_401294j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	near ptr word_437AD2
		pop	ecx
		retn	8
sub_4098F0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_409910	proc near		; CODE XREF: sub_402090j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_7
		pop	ecx
		retn	4
sub_409910	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_409930	proc near		; CODE XREF: sub_4016E0j

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

		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		mov	ebx, ecx
		cmp	esi, ebp
		jz	short loc_409962
		push	edi
		mov	edi, [esp+10h+arg_8]


loc_409946:				; CODE XREF: sub_409930+27j
		push	esi
		push	edi
		mov	ecx, ebx
		call	sub_4015B4
		add	esi, 4
		add	edi, 4
		cmp	esi, ebp
		jnz	short loc_409946
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_409962:				; CODE XREF: sub_409930+Fj
		mov	eax, [esp+0Ch+arg_8]
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
sub_409930	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_409980	proc near		; CODE XREF: sub_401177j

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

		push	ebp
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	ebp, ecx
		test	edi, edi
		jbe	short loc_4099A7
		push	ebx
		mov	ebx, [esp+0Ch+arg_8]
		push	esi
		mov	esi, [esp+10h+arg_0]


loc_409996:				; CODE XREF: sub_409980+23j
		push	ebx
		push	esi
		mov	ecx, ebp
		call	sub_4015B4
		add	esi, 4
		dec	edi
		jnz	short loc_409996
		pop	esi
		pop	ebx


loc_4099A7:				; CODE XREF: sub_409980+Aj
		pop	edi
		pop	ebp
		retn	0Ch
sub_409980	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_4099C0	proc near		; CODE XREF: sub_401CC1j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_402059
		add	esp, 8
		retn	8
sub_4099C0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_4099F0	proc near		; CODE XREF: sub_4015B4j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	eax
		push	ecx
		call	sub_401145
		add	esp, 8
		retn	8
sub_4099F0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_409A20	proc near		; CODE XREF: sub_401FB4j

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

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		cmp	eax, ecx
		jz	short locret_409A3D
		mov	edx, [esp+arg_8]
		push	esi


loc_409A31:				; CODE XREF: sub_409A20+1Aj
		mov	esi, [edx]
		mov	[eax], esi
		add	eax, 4
		cmp	eax, ecx
		jnz	short loc_409A31
		pop	esi

locret_409A3D:				; CODE XREF: sub_409A20+Aj
		retn
sub_409A20	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_409A50	proc near		; CODE XREF: sub_401CDFj

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

		mov	edx, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		cmp	edx, ecx
		jz	short loc_409A72
		mov	eax, [esp+arg_8]
		push	esi


loc_409A61:				; CODE XREF: sub_409A50+1Ej
		mov	esi, [ecx-4]
		sub	ecx, 4
		sub	eax, 4
		cmp	ecx, edx
		mov	[eax], esi
		jnz	short loc_409A61
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_409A72:				; CODE XREF: sub_409A50+Aj
		mov	eax, [esp+arg_8]
		retn
sub_409A50	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_7. PRESS KEYPAD "+" TO EXPAND]
		db 0Fh dup(90h)
		db 10h dup(0CCh)

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



sub_409AB0	proc near		; CODE XREF: sub_402059j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jge	short loc_409ABA
		xor	eax, eax


loc_409ABA:				; CODE XREF: sub_409AB0+6j
		shl	eax, 2
		push	eax
		call	near ptr word_437AEA
		add	esp, 4
		retn
sub_409AB0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

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



sub_409AE0	proc near		; CODE XREF: sub_401145j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	eax
		push	4
		call	sub_4011CC
		add	esp, 8
		test	eax, eax
		jz	short locret_409AFB
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_409AFB:				; CODE XREF: sub_409AE0+11j
		retn
sub_409AE0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_409B10	proc near		; CODE XREF: sub_401988j

arg_0		= dword	ptr  4

		mov	al, byte_44915A
		push	esi
		test	al, al
		mov	esi, ecx
		jz	short loc_409B46
		push	edi
		call	near ptr 28216CDh
		nop
		mov	edi, dword_5118CC
		push	0FFFFFFF5h
		call	edi
		push	0FFFFFFF4h
		mov	[esi], eax
		call	edi
		mov	[esi+4], eax
		mov	eax, [esp+8+arg_0]
		mov	byte ptr [esi+8], 1
		mov	[esi+9], eax
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_409B46:				; CODE XREF: sub_409B10+Aj
		mov	ecx, [esp+4+arg_0]
		mov	byte ptr [esi+8], 1
		mov	[esi+9], ecx
		pop	esi
		retn	4
sub_409B10	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)

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



sub_409B80	proc near		; CODE XREF: sub_401CEEj
		mov	al, byte_44915A
		push	esi
		test	al, al
		mov	esi, ecx
		jz	short loc_409B9F
		nop
		call	near ptr 2821A5Bh
		mov	dword ptr [esi], 0FFFFFFFFh
		mov	dword ptr [esi+4], 0FFFFFFFFh


loc_409B9F:				; CODE XREF: sub_409B80+Aj
		mov	byte ptr [esi+8], 0
		pop	esi
		retn
sub_409B80	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_409BC0	proc near		; CODE XREF: sub_40142Ej
		mov	eax, ecx
		xor	ecx, ecx
		mov	dword ptr [eax], offset	dword_43F010
		mov	[eax+9], ecx
		mov	[eax+11h], ecx
		mov	[eax+4], cl
		mov	[eax+0Dh], ecx
		retn
sub_409BC0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_409BF0:				; CODE XREF: ___:00402081j
					; ___:0040218Fj
		push	esi
		mov	esi, ecx
		call	sub_401226
		test	byte ptr [esp+8], 1
		jz	short loc_409C08
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_409C08:				; CODE XREF: ___:00409BFDj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_409C20	proc near		; CODE XREF: sub_401870j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		push	eax
		mov	dword ptr [esi], offset	dword_43F010
		mov	[esi+9], ebx
		mov	[esi+11h], ebx
		call	sub_4015E1
		mov	[esi+4], bl
		mov	[esi+0Dh], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_409C20	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_409C60	proc near		; CODE XREF: sub_4014D3j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		push	eax
		mov	dword ptr [esi], offset	dword_43F010
		mov	[esi+9], ebx
		mov	[esi+11h], ebx
		call	sub_401FDC
		mov	[esi+4], bl
		mov	[esi+0Dh], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_409C60	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_409CA0	proc near		; CODE XREF: sub_402112j

var_10		= byte ptr -10h
arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+1Ch+var_10]
		push	offset dword_4447F4
		push	ecx
		mov	dword ptr [esi], offset	dword_43F010
		nop
		call	near ptr byte_5FC011
		add	esp, 0Ch
		lea	edx, [esp+18h+var_10]
		xor	ebx, ebx
		mov	ecx, esi
		push	edx
		mov	[esi+9], ebx
		mov	[esi+11h], ebx
		call	sub_4015E1
		mov	[esi+4], bl
		mov	[esi+0Dh], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		add	esp, 10h
		retn	4
sub_409CA0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

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



sub_409D10	proc near		; CODE XREF: sub_401226j
		push	esi
		mov	esi, ecx
		push	edi
		xor	edi, edi
		mov	eax, [esi+9]
		mov	dword ptr [esi], offset	dword_43F010
		cmp	eax, edi
		jz	short loc_409D2C
		push	eax
		call	near ptr word_437AD2
		add	esp, 4


loc_409D2C:				; CODE XREF: sub_409D10+11j
		mov	eax, [esi+0Dh]
		mov	[esi+9], edi
		cmp	eax, edi
		jz	short loc_409D3F
		push	eax
		call	near ptr word_437AD2
		add	esp, 4


loc_409D3F:				; CODE XREF: sub_409D10+24j
		mov	[esi+0Dh], edi
		mov	[esi+11h], edi
		pop	edi
		pop	esi
		retn
sub_409D10	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_409D60	proc near		; CODE XREF: sub_4015E1j

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		mov	esi, ecx
		test	edi, edi
		jz	short loc_409DCA
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		mov	eax, [esi+9]
		not	ecx
		dec	ecx
		test	eax, eax
		mov	ebp, ecx
		jz	short loc_409D8A
		push	eax
		call	near ptr word_437AD2
		add	esp, 4


loc_409D8A:				; CODE XREF: sub_409D60+1Fj
		lea	ebx, [ebp+2]
		push	ebx
		call	near ptr word_437AEA
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		mov	[esi+9], edi
		jz	short loc_409DCA
		mov	ecx, ebx
		xor	eax, eax
		mov	edx, ecx
		mov	[esi+11h], ebp
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	eax, [esi+11h]
		mov	ecx, [esp+10h+arg_0]
		mov	edx, [esi+9]
		push	eax
		push	ecx
		push	edx
		call	near ptr 77C47A90h
		nop
		add	esp, 0Ch


loc_409DCA:				; CODE XREF: sub_409D60+Cj
					; sub_409D60+3Dj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_409D60	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)

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



sub_409E00	proc near		; CODE XREF: sub_401FDCj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		call	sub_401389
		push	eax
		mov	ecx, esi
		call	sub_4015E1
		pop	esi
		retn	4
sub_409E00	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_409E30:				; CODE XREF: ___:00401A5Aj
		mov	eax, [esp+4]
		sub	esp, 10h
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+8]
		push	offset dword_4447F4
		push	ecx
		call	near ptr byte_5FC011
		nop
		add	esp, 0Ch
		lea	edx, [esp+4]
		mov	ecx, esi
		push	edx
		call	sub_4015E1
		pop	esi
		add	esp, 10h
		retn	4
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

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



sub_409E80	proc near		; CODE XREF: sub_401AAFj

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		mov	ebx, ecx
		test	edi, edi
		jz	loc_409F12
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		mov	edi, [ebx+11h]
		not	ecx
		dec	ecx
		mov	esi, ecx
		add	esi, edi
		lea	eax, [esi+1]
		push	eax
		call	near ptr word_437AEA
		mov	edi, [ebx+9]
		add	esp, 4
		test	edi, edi
		mov	ebp, eax
		jz	short loc_409F12
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		mov	[ebx+11h], esi
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	edx, ecx
		mov	esi, edi
		mov	edi, ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	edi, [esp+10h+arg_0]
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	edx, ecx
		mov	edi, ebp
		or	ecx, 0FFFFFFFFh
		repne scasb
		mov	ecx, edx
		dec	edi
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	eax, [ebx+9]
		test	eax, eax
		jz	short loc_409F0F
		push	eax
		call	near ptr word_437AD2
		add	esp, 4


loc_409F0F:				; CODE XREF: sub_409E80+84j
		mov	[ebx+9], ebp


loc_409F12:				; CODE XREF: sub_409E80+Cj
					; sub_409E80+36j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_409E80	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 30h dup(0CCh)

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



sub_409F50	proc near		; CODE XREF: sub_4016C7j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		call	sub_401389
		push	eax
		mov	ecx, esi
		call	sub_401AAF
		pop	esi
		retn	4
sub_409F50	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_409F80	proc near		; CODE XREF: sub_401140j

var_10		= byte ptr -10h
arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	esp, 10h
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+18h+var_10]
		push	offset dword_4447F4
		push	ecx
		nop
		call	near ptr byte_5FC011
		add	esp, 0Ch
		lea	edx, [esp+14h+var_10]
		mov	ecx, esi
		push	edx
		call	sub_401AAF
		pop	esi
		add	esp, 10h
		retn	4
sub_409F80	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

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



sub_409FD0	proc near		; CODE XREF: sub_4012EEj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_409FE7
		mov	edx, [ecx+9]
		xor	eax, eax
		test	edx, edx
		setnz	al
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_409FE7:				; CODE XREF: sub_409FD0+7j
		mov	eax, [ecx+9]
		push	ebx


loc_409FEB:				; CODE XREF: sub_409FD0+3Dj
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_40A016
		test	cl, cl
		jz	short loc_40A00F
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_40A016
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_409FEB


loc_40A00F:				; CODE XREF: sub_409FD0+27j
		pop	ebx
		xor	eax, eax
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40A016:				; CODE XREF: sub_409FD0+23j
					; sub_409FD0+33j
		sbb	eax, eax
		pop	ebx
		sbb	eax, 0FFFFFFFFh
		pop	esi
		retn	4
sub_409FD0	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

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



sub_40A040	proc near		; CODE XREF: sub_401B86j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		call	sub_401389
		push	eax
		mov	ecx, esi
		call	sub_4012EE
		pop	esi
		retn	4
sub_40A040	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40A070:				; CODE XREF: ___:0040150Aj
		mov	eax, [esp+4]
		test	eax, eax
		jnz	short loc_40A083
		mov	edx, [ecx+9]
		test	edx, edx
		setnz	al
		retn	4
; ---------------------------------------------------------------------------


loc_40A083:				; CODE XREF: ___:0040A076j
		push	eax
		mov	eax, [ecx+9]
		push	eax
		nop
		call	near ptr 77C4624Eh
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40A0B0	proc near		; CODE XREF: sub_4021D0j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		call	sub_401389
		push	eax
		mov	ecx, esi
		call	sub_4012EE
		pop	esi
		retn	4
sub_40A0B0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_40A0E0	proc near		; CODE XREF: sub_401CD0j
		push	esi
		mov	esi, ecx
		mov	eax, [esi+9]
		test	eax, eax
		jz	short loc_40A0F3
		push	eax
		call	near ptr word_437AD2
		add	esp, 4


loc_40A0F3:				; CODE XREF: sub_40A0E0+8j
		mov	dword ptr [esi+9], 0
		pop	esi
		retn
sub_40A0E0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_40A110	proc near		; CODE XREF: sub_40102Dj

arg_2000	= dword	ptr  2004h
arg_2004	= dword	ptr  2008h
arg_2008	= byte ptr  200Ch

		mov	eax, 2000h
		call	near ptr dword_437B30
		mov	eax, [esp+arg_2004]
		test	eax, eax
		jz	short loc_40A152
		lea	ecx, [esp+arg_2008]
		lea	edx, [esp+0]
		push	ecx
		push	eax
		push	2000h
		push	edx
		nop
		call	near ptr 77C3FF8Ah
		mov	ecx, [esp+10h+arg_2000]
		add	esp, 10h
		lea	eax, [esp+0]
		push	eax
		call	sub_4015E1


loc_40A152:				; CODE XREF: sub_40A110+13j
		add	esp, 2000h
		retn
sub_40A110	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

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



sub_40A180	proc near		; CODE XREF: sub_401D34j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401316
		retn	4
sub_40A180	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

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



sub_40A1A0	proc near		; CODE XREF: sub_401316j

arg_0		= byte ptr  4

		push	ebx
		mov	ebx, dword_511AEC
		push	esi
		push	edi
		movsx	edi, [esp+0Ch+arg_0]
		mov	esi, ecx
		push	edi
		mov	eax, [esi+9]
		push	eax
		call	ebx
		add	esp, 8
		test	eax, eax
		jnz	short loc_40A1C4
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40A1C4:				; CODE XREF: sub_40A1A0+1Cj
		mov	ecx, [esi+9]
		push	edi
		push	ecx
		call	ebx
		mov	edi, [esi+9]
		add	esp, 8
		mov	edx, 1
		sub	edx, edi
		pop	edi
		pop	esi
		add	eax, edx
		pop	ebx
		retn	8
sub_40A1A0	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

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



sub_40A1F0	proc near		; CODE XREF: sub_4018B1j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401816
		retn	4
sub_40A1F0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

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



sub_40A210	proc near		; CODE XREF: sub_401816j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		mov	esi, ecx
		push	eax
		mov	ecx, [esp+8+arg_0]
		call	sub_401389
		push	eax
		mov	ecx, esi
		call	sub_402135
		pop	esi
		retn	8
sub_40A210	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)

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



sub_40A240	proc near		; CODE XREF: sub_4013EDj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_402135
		retn	4
sub_40A240	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

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



sub_40A260	proc near		; CODE XREF: sub_402135j

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		test	edi, edi
		mov	esi, ecx
		jnz	short loc_40A275
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40A275:				; CODE XREF: sub_40A260+Bj
		mov	eax, [esi+9]
		mov	ebx, dword_511B04
		push	edi
		push	eax
		call	ebx
		add	esp, 8
		test	eax, eax
		jnz	short loc_40A28F
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40A28F:				; CODE XREF: sub_40A260+27j
		mov	ecx, [esi+9]
		push	edi
		push	ecx
		call	ebx
		mov	edi, [esi+9]
		add	esp, 8
		mov	edx, 1
		sub	edx, edi
		pop	edi
		pop	esi
		add	eax, edx
		pop	ebx
		retn	8
sub_40A260	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

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



sub_40A2D0	proc near		; CODE XREF: sub_401C71j

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		test	edi, edi
		jnz	short loc_40A2E3
		pop	edi
		xor	eax, eax
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40A2E3:				; CODE XREF: sub_40A2D0+Aj
		mov	eax, [esi+9]
		mov	[esi+11h], edi
		test	eax, eax
		jz	short loc_40A2F6
		push	eax
		call	near ptr word_437AD2
		add	esp, 4


loc_40A2F6:				; CODE XREF: sub_40A2D0+1Bj
		push	ebx
		lea	ebx, [edi+1]
		push	ebx
		call	near ptr word_437AEA
		mov	ecx, ebx
		mov	edi, eax
		mov	edx, ecx
		xor	eax, eax
		shr	ecx, 2
		mov	[esi+9], edi
		add	esp, 4
		rep stosd
		mov	ecx, edx
		pop	ebx
		and	ecx, 3
		rep stosb
		mov	eax, [esi+9]
		pop	edi
		pop	esi
		retn	4
sub_40A2D0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 20h dup(0CCh)

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



sub_40A350	proc near		; CODE XREF: sub_4013E3j
		mov	eax, [ecx+11h]
		retn
sub_40A350	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40A370	proc near		; CODE XREF: sub_4012B2j

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	0FFFFFFFFh
		push	offset SEH_40A370
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 20h
		push	ebp
		mov	ebp, [esp+30h+arg_8]
		push	esi
		xor	esi, esi
		cmp	ebp, 1
		mov	[esp+34h+var_2C], ecx
		mov	[esp+34h+var_28], esi
		jge	short loc_40A3C2
		mov	esi, [esp+34h+arg_0]
		push	offset byte_448F30
		mov	ecx, esi
		call	sub_401870
		mov	eax, esi
		pop	esi
		pop	ebp
		mov	ecx, [esp+2Ch+var_C]
		mov	large fs:0, ecx
		add	esp, 2Ch
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40A3C2:				; CODE XREF: sub_40A370+2Bj
		push	ebx
		push	edi
		lea	ecx, [esp+3Ch+var_24]
		call	sub_40142E
		mov	[esp+3Ch+var_4], esi
		lea	esi, [ebp+1]
		push	esi
		call	near ptr word_437AEA
		mov	ecx, esi
		mov	ebx, eax
		mov	edx, ecx
		xor	eax, eax
		mov	edi, ebx
		add	esp, 4
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		mov	edx, [esp+3Ch+arg_4]
		and	ecx, 3
		push	ebx
		rep stosb
		mov	eax, [esp+40h+var_2C]
		mov	ecx, ebp
		mov	edi, ebx
		mov	esi, [eax+9]
		add	esi, edx
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		lea	ecx, [esp+40h+var_24]
		call	sub_4015E1
		push	ebx
		call	near ptr word_437AD2
		mov	esi, [esp+40h+arg_0]
		add	esp, 4
		lea	eax, [esp+3Ch+var_24]
		mov	ecx, esi
		push	eax
		call	sub_4014D3
		lea	ecx, [esp+3Ch+var_24]
		call	sub_401226
		mov	ecx, [esp+3Ch+var_C]
		pop	edi
		mov	eax, esi
		pop	ebx
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		add	esp, 2Ch
		retn	0Ch
sub_40A370	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 40h dup(0CCh)

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



sub_40A4A0	proc near		; CODE XREF: sub_401E47j

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

		push	ecx
		push	esi
		push	edi
		mov	esi, ecx
		mov	[esp+0Ch+var_4], 0
		call	sub_4013E3
		mov	ecx, [esp+0Ch+arg_4]
		mov	edi, [esp+0Ch+arg_0]
		sub	eax, ecx
		push	eax
		push	ecx
		push	edi
		mov	ecx, esi
		call	sub_4012B2
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ecx
		retn	8
sub_40A4A0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40A4E0:				; CODE XREF: ___:0040194Cj
		push	ecx
		push	esi
		mov	esi, [esp+0Ch]
		push	1
		mov	ecx, esi
		mov	dword ptr [esp+8], 0
		call	sub_402112
		mov	eax, esi
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_40A510	proc near		; CODE XREF: sub_4011EAj

var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= byte ptr -34h
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	0FFFFFFFFh
		push	offset SEH_40A510
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	edi
		mov	edi, [esp+44h+arg_8]
		mov	esi, ecx
		test	edi, edi
		mov	[esp+44h+var_38], 0
		jnz	short loc_40A551
		mov	esi, [esp+44h+arg_0]
		push	offset byte_448F30
		mov	ecx, esi
		call	sub_401870
		jmp	loc_40A684
; ---------------------------------------------------------------------------


loc_40A551:				; CODE XREF: sub_40A510+2Aj
		lea	eax, [esp+44h+arg_8]
		lea	ecx, [esp+44h+var_34]
		push	eax
		call	sub_40169A
		mov	ecx, [esi+9]
		mov	[esp+44h+var_4], 1
		push	ecx
		lea	ecx, [esp+48h+var_24]
		call	sub_401870
		lea	ecx, [esp+44h+var_24]
		mov	byte ptr [esp+44h+var_4], 2
		call	sub_4014DD
		mov	[esp+44h+var_3C], eax
		mov	cl, [eax]
		test	cl, cl
		jz	loc_40A635
		push	ebx


loc_40A591:				; CODE XREF: sub_40A510+11Ej
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_40A5A0


loc_40A597:				; CODE XREF: sub_40A510+8Ej
		inc	eax
		mov	[esp+48h+var_3C], eax
		cmp	[eax], dl
		jz	short loc_40A597


loc_40A5A0:				; CODE XREF: sub_40A510+85j
		cmp	byte ptr [eax],	22h
		setz	bl
		test	bl, bl
		jz	short loc_40A5AF
		inc	eax
		mov	[esp+48h+var_3C], eax


loc_40A5AF:				; CODE XREF: sub_40A510+98j
		lea	edx, [esp+48h+var_3C]
		lea	ecx, [esp+48h+var_34]
		push	edx
		call	sub_401997
		mov	eax, [esp+48h+var_3C]
		test	bl, bl
		mov	cl, [eax]
		jz	short loc_40A5FF
		test	cl, cl
		jz	short loc_40A5E7


loc_40A5CB:				; CODE XREF: sub_40A510+D5j
		cmp	cl, 22h
		jnz	short loc_40A5DC
		mov	cl, [eax+1]
		cmp	cl, 20h
		jz	short loc_40A5E7
		test	cl, cl
		jz	short loc_40A5E7


loc_40A5DC:				; CODE XREF: sub_40A510+BEj
		inc	eax
		mov	[esp+48h+var_3C], eax
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_40A5CB


loc_40A5E7:				; CODE XREF: sub_40A510+B9j
					; sub_40A510+C6j ...
		cmp	byte ptr [eax],	0
		jz	short loc_40A62A
		mov	byte ptr [eax],	0
		mov	eax, [esp+48h+var_3C]
		mov	cl, [eax+1]
		test	cl, cl
		jz	short loc_40A62A
		add	eax, 2
		jmp	short loc_40A626
; ---------------------------------------------------------------------------


loc_40A5FF:				; CODE XREF: sub_40A510+B5j
		test	cl, cl
		jz	short loc_40A614
		mov	dl, [edi]


loc_40A605:				; CODE XREF: sub_40A510+102j
		cmp	cl, dl
		jz	short loc_40A614
		inc	eax
		mov	[esp+48h+var_3C], eax
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_40A605


loc_40A614:				; CODE XREF: sub_40A510+F1j
					; sub_40A510+F7j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_40A62A
		cmp	cl, [edi]
		jnz	short loc_40A62A
		mov	byte ptr [eax],	0
		mov	eax, [esp+48h+var_3C]
		inc	eax


loc_40A626:				; CODE XREF: sub_40A510+EDj
		mov	[esp+48h+var_3C], eax


loc_40A62A:				; CODE XREF: sub_40A510+DAj
					; sub_40A510+E8j ...
		mov	cl, [eax]
		test	cl, cl
		jnz	loc_40A591
		pop	ebx


loc_40A635:				; CODE XREF: sub_40A510+7Aj
		lea	ecx, [esp+44h+var_34]
		call	sub_4011F9
		mov	ecx, [esp+44h+arg_4]
		cmp	ecx, eax
		jb	short loc_40A64D
		push	offset byte_448F30
		jmp	short loc_40A65A
; ---------------------------------------------------------------------------


loc_40A64D:				; CODE XREF: sub_40A510+134j
		push	ecx
		lea	ecx, [esp+48h+var_34]
		call	sub_401F82
		mov	eax, [eax]
		push	eax


loc_40A65A:				; CODE XREF: sub_40A510+13Bj
		mov	esi, [esp+48h+arg_0]
		mov	ecx, esi
		call	sub_401870
		lea	ecx, [esp+44h+var_24]
		mov	[esp+44h+var_38], 1
		call	sub_401226
		lea	ecx, [esp+44h+var_34]
		mov	byte ptr [esp+44h+var_4], 0
		call	sub_401596


loc_40A684:				; CODE XREF: sub_40A510+3Cj
		mov	ecx, [esp+44h+var_C]
		mov	eax, esi
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn	10h
sub_40A510	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 70h dup(0CCh)

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



sub_40A710	proc near		; CODE XREF: sub_4016B8j

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

		push	ecx
		mov	eax, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		push	esi
		mov	esi, [esp+8+arg_0]
		push	0
		push	eax
		push	edx
		push	esi
		mov	[esp+18h+var_4], 0
		call	sub_4011EA
		mov	eax, esi
		pop	esi
		pop	ecx
		retn	0Ch
sub_40A710	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

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



sub_40A750	proc near		; CODE XREF: sub_40202Cj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		call	sub_401389
		push	eax
		mov	ecx, esi
		call	sub_4015E1
		pop	esi
		retn	4
sub_40A750	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_40A780	proc near		; CODE XREF: sub_401A9Bj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4015E1
		retn	4
sub_40A780	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)

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



sub_40A7A0	proc near		; CODE XREF: sub_401479j

arg_0		= dword	ptr  4

		mov	eax, [ecx+9]
		mov	ecx, [esp+arg_0]
		add	eax, ecx
		retn	4
sub_40A7A0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40A7C0:				; CODE XREF: ___:004014A6j
		mov	eax, [ecx+9]
		mov	ecx, [esp+4]
		add	eax, ecx
		retn	4
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_40A7E0	proc near		; CODE XREF: sub_401389j
		mov	eax, [ecx+9]
		retn
sub_40A7E0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40A800	proc near		; CODE XREF: sub_4017EEj
		mov	eax, [ecx+9]
		retn
sub_40A800	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40A820	proc near		; CODE XREF: sub_4014DDj
		mov	eax, [ecx+9]
		retn
sub_40A820	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40A840	proc near		; CODE XREF: sub_40169Aj

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	dl, [ecx]
		xor	ecx, ecx
		mov	[eax], dl
		mov	[eax+4], ecx
		mov	[eax+8], ecx
		mov	[eax+0Ch], ecx
		retn	4
sub_40A840	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_40A870	proc near		; CODE XREF: sub_401596j
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_4019B5
		mov	eax, [esi+4]
		mov	edx, [esi+0Ch]
		sub	edx, eax
		mov	ecx, esi
		sar	edx, 2
		push	edx
		push	eax
		call	sub_4011EF
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		mov	[esi+0Ch], eax
		pop	esi
		retn
sub_40A870	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_40A8C0	proc near		; CODE XREF: sub_4011F9j
		mov	edx, [ecx+4]
		test	edx, edx
		jnz	short loc_40A8CA
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40A8CA:				; CODE XREF: sub_40A8C0+5j
		mov	eax, [ecx+8]
		sub	eax, edx
		sar	eax, 2
		retn
sub_40A8C0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_40A8F0	proc near		; CODE XREF: sub_401F82j

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_4011F9
		mov	edi, [esp+8+arg_0]
		cmp	eax, edi
		ja	short loc_40A908
		mov	ecx, esi
		call	sub_401F05


loc_40A908:				; CODE XREF: sub_40A8F0+Fj
		mov	ecx, esi
		call	sub_401D2F
		lea	eax, [eax+edi*4]
		pop	edi
		pop	esi
		retn	4
sub_40A8F0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

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



sub_40A930	proc near		; CODE XREF: sub_401997j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401659
		push	eax
		mov	ecx, esi
		call	sub_4016F9
		pop	esi
		retn	4
sub_40A930	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_40A960	proc near		; CODE XREF: sub_401D2Fj
		mov	eax, [ecx+4]
		retn
sub_40A960	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40A980	proc near		; CODE XREF: sub_401659j
		mov	eax, [ecx+8]
		retn
sub_40A980	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40A9A0	proc near		; CODE XREF: sub_4016F9j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, ecx
		call	sub_401D2F
		mov	edx, [esp+8+arg_4]
		mov	ecx, eax
		mov	eax, [esp+8+arg_0]
		push	edx
		mov	esi, eax
		push	1
		sub	esi, ecx
		push	eax
		mov	ecx, edi
		sar	esi, 2
		call	sub_4013D9
		mov	ecx, edi
		call	sub_401D2F
		lea	eax, [eax+esi*4]
		pop	edi
		pop	esi
		retn	8
sub_40A9A0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40A9F0	proc near		; CODE XREF: sub_4019B5j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		cmp	esi, ebx
		mov	edi, ecx
		jz	short loc_40AA10


loc_40AA01:				; CODE XREF: sub_40A9F0+1Ej
		push	esi
		mov	ecx, edi
		call	sub_4018C0
		add	esi, 4
		cmp	esi, ebx
		jnz	short loc_40AA01


loc_40AA10:				; CODE XREF: sub_40A9F0+Fj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_40A9F0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40AA30:				; CODE XREF: sub_401F05j
		push	0FFFFFFFFh
		push	offset byte_439DB9
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		lea	eax, [esp+3]
		lea	ecx, [esp+4]
		push	eax
		push	offset dword_444908
		nop
		call	near ptr 76081F67h
		lea	ecx, [esp+4]
		mov	dword ptr [esp+38h], 0
		push	ecx
		lea	ecx, [esp+18h]
		call	near ptr 760A0430h
		nop
		lea	edx, [esp+14h]
		push	offset dword_440088
		push	edx
		call	near ptr word_437B22
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

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



sub_40AAB0	proc near		; CODE XREF: sub_4011EFj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	near ptr word_437AD2
		pop	ecx
		retn	8
sub_40AAB0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_40AAD0	proc near		; CODE XREF: sub_4013D9j

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

		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esp+10h+arg_4]
		mov	eax, [esi+8]
		mov	ecx, [esi+0Ch]
		sub	ecx, eax
		sar	ecx, 2
		cmp	ecx, edi
		jnb	loc_40AB9B
		mov	ecx, esi
		call	sub_4011F9
		cmp	edi, eax
		jnb	short loc_40AB03
		mov	ecx, esi
		call	sub_4011F9
		mov	ebp, eax
		jmp	short loc_40AB05
; ---------------------------------------------------------------------------


loc_40AB03:				; CODE XREF: sub_40AAD0+26j
		mov	ebp, edi


loc_40AB05:				; CODE XREF: sub_40AAD0+31j
		mov	ecx, esi
		call	sub_4011F9
		mov	ebx, eax
		push	0
		add	ebx, ebp
		mov	ecx, esi
		push	ebx
		call	sub_401DE8
		mov	edx, [esp+10h+arg_0]
		mov	ebp, eax
		mov	eax, [esi+4]
		push	ebp
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_4010CD
		mov	ecx, [esp+10h+arg_8]
		mov	[esp+10h+arg_4], eax
		push	ecx
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_402194
		mov	edx, [esp+10h+arg_4]
		mov	ecx, [esi+8]
		lea	eax, [edx+edi*4]
		mov	edx, [esp+10h+arg_0]
		push	eax
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_4010CD
		mov	eax, [esi+8]
		mov	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_4019B5
		mov	eax, [esi+4]
		mov	edx, [esi+0Ch]
		sub	edx, eax
		mov	ecx, esi
		sar	edx, 2
		push	edx
		push	eax
		call	sub_4011EF
		lea	eax, [ebp+ebx*4+0]
		mov	ecx, esi
		mov	[esi+0Ch], eax
		call	sub_4011F9
		add	eax, edi
		mov	[esi+4], ebp
		pop	edi
		lea	ecx, [ebp+eax*4+0]
		mov	[esi+8], ecx
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40AB9B:				; CODE XREF: sub_40AAD0+17j
		mov	ebx, [esp+10h+arg_0]
		mov	edx, eax
		sub	edx, ebx
		sar	edx, 2
		cmp	edx, edi
		jnb	short loc_40ABF9
		lea	ebp, ds:0[edi*4]
		lea	ecx, [ebx+ebp]
		push	ecx
		push	eax
		push	ebx
		mov	ecx, esi
		call	sub_4010CD
		mov	eax, [esi+8]
		mov	edx, [esp+10h+arg_8]
		mov	ecx, eax
		push	edx
		sub	ecx, ebx
		sar	ecx, 2
		sub	edi, ecx
		mov	ecx, esi
		push	edi
		push	eax
		call	sub_402194
		mov	edx, [esp+10h+arg_8]
		mov	eax, [esi+8]
		push	edx
		push	eax
		push	ebx
		call	sub_401E8D
		mov	eax, [esi+8]
		add	esp, 0Ch
		add	eax, ebp
		mov	[esi+8], eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40ABF9:				; CODE XREF: sub_40AAD0+D8j
		test	edi, edi
		jbe	short loc_40AC33
		shl	edi, 2
		push	eax
		push	eax
		sub	eax, edi
		mov	ecx, esi
		push	eax
		call	sub_4010CD
		mov	eax, [esi+8]
		push	eax
		sub	eax, edi
		push	eax
		push	ebx
		call	sub_4020CC
		mov	ecx, [esp+1Ch+arg_8]
		lea	edx, [edi+ebx]
		push	ecx
		push	edx
		push	ebx
		call	sub_401E8D
		mov	eax, [esi+8]
		add	esp, 18h
		add	eax, edi
		mov	[esi+8], eax


loc_40AC33:				; CODE XREF: sub_40AAD0+12Bj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
sub_40AAD0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 60h dup(0CCh)

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



sub_40ACA0	proc near		; CODE XREF: sub_4018C0j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_1
		pop	ecx
		retn	4
sub_40ACA0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_40ACC0	proc near		; CODE XREF: sub_4010CDj

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

		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		mov	ebx, ecx
		cmp	esi, ebp
		jz	short loc_40ACF2
		push	edi
		mov	edi, [esp+10h+arg_8]


loc_40ACD6:				; CODE XREF: sub_40ACC0+27j
		push	esi
		push	edi
		mov	ecx, ebx
		call	sub_40213F
		add	esi, 4
		add	edi, 4
		cmp	esi, ebp
		jnz	short loc_40ACD6
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40ACF2:				; CODE XREF: sub_40ACC0+Fj
		mov	eax, [esp+0Ch+arg_8]
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
sub_40ACC0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_40AD10	proc near		; CODE XREF: sub_402194j

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

		push	ebp
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	ebp, ecx
		test	edi, edi
		jbe	short loc_40AD37
		push	ebx
		mov	ebx, [esp+0Ch+arg_8]
		push	esi
		mov	esi, [esp+10h+arg_0]


loc_40AD26:				; CODE XREF: sub_40AD10+23j
		push	ebx
		push	esi
		mov	ecx, ebp
		call	sub_40213F
		add	esi, 4
		dec	edi
		jnz	short loc_40AD26
		pop	esi
		pop	ebx


loc_40AD37:				; CODE XREF: sub_40AD10+Aj
		pop	edi
		pop	ebp
		retn	0Ch
sub_40AD10	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_40AD50	proc near		; CODE XREF: sub_401DE8j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_4014D8
		add	esp, 8
		retn	8
sub_40AD50	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_40AD80	proc near		; CODE XREF: sub_40213Fj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	eax
		push	ecx
		call	sub_401E01
		add	esp, 8
		retn	8
sub_40AD80	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_40ADB0	proc near		; CODE XREF: sub_401E8Dj

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

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		cmp	eax, ecx
		jz	short locret_40ADCD
		mov	edx, [esp+arg_8]
		push	esi


loc_40ADC1:				; CODE XREF: sub_40ADB0+1Aj
		mov	esi, [edx]
		mov	[eax], esi
		add	eax, 4
		cmp	eax, ecx
		jnz	short loc_40ADC1
		pop	esi

locret_40ADCD:				; CODE XREF: sub_40ADB0+Aj
		retn
sub_40ADB0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_40ADE0	proc near		; CODE XREF: sub_4020CCj

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

		mov	edx, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		cmp	edx, ecx
		jz	short loc_40AE02
		mov	eax, [esp+arg_8]
		push	esi


loc_40ADF1:				; CODE XREF: sub_40ADE0+1Ej
		mov	esi, [ecx-4]
		sub	ecx, 4
		sub	eax, 4
		cmp	ecx, edx
		mov	[eax], esi
		jnz	short loc_40ADF1
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40AE02:				; CODE XREF: sub_40ADE0+Aj
		mov	eax, [esp+arg_8]
		retn
sub_40ADE0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
		db 0Fh dup(90h)
		db 10h dup(0CCh)

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



sub_40AE40	proc near		; CODE XREF: sub_4014D8j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jge	short loc_40AE4A
		xor	eax, eax


loc_40AE4A:				; CODE XREF: sub_40AE40+6j
		shl	eax, 2
		push	eax
		call	near ptr word_437AEA
		add	esp, 4
		retn
sub_40AE40	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

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



sub_40AE70	proc near		; CODE XREF: sub_401E01j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	eax
		push	4
		call	sub_4011CC
		add	esp, 8
		test	eax, eax
		jz	short locret_40AE8B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_40AE8B:				; CODE XREF: sub_40AE70+11j
		retn
sub_40AE70	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_40AEA0	proc near		; CODE XREF: sub_401E88j
		mov	eax, ecx
		mov	dword ptr [eax], offset	dword_43F014
		retn
sub_40AEA0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40AEC0:				; CODE XREF: ___:00401721j
					; ___:00402045j
		push	esi
		mov	esi, ecx
		call	sub_40204F
		test	byte ptr [esp+8], 1
		jz	short loc_40AED8
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_40AED8:				; CODE XREF: ___:0040AECDj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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

; Attributes: bp-based frame


sub_40AEF0	proc near		; CODE XREF: sub_40204Fj

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_40AEF0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	dword ptr [ecx], offset	dword_43F014
		mov	[ebp+var_10], esp
		mov	[ebp+var_4], 0
		call	sub_40174E


loc_40AF21:				; DATA XREF: ___:0040AF32o
		mov	ecx, [ebp+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_40AEF0	endp

; ---------------------------------------------------------------------------
		mov	eax, offset loc_40AF21
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)

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



sub_40AF60	proc near		; CODE XREF: sub_4014C4j

; FUNCTION CHUNK AT 004017BC SIZE 00000005 BYTES

		call	sub_401712
		jmp	loc_4017BC
sub_40AF60	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

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



sub_40AF80	proc near		; CODE XREF: sub_401B2Cj

; FUNCTION CHUNK AT 004017CB SIZE 00000005 BYTES

		call	sub_401627
		jmp	loc_4017CB
sub_40AF80	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

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



sub_40AFA0	proc near		; CODE XREF: sub_4013DEj
		push	esi
		mov	esi, ecx
		push	esi
		push	offset loc_401429
		lea	eax, [esi+0Ch]
		push	0
		push	eax
		call	sub_40123A
		add	esp, 10h
		test	eax, eax
		jnz	short loc_40AFC2
		mov	al, 1
		mov	[esi+10h], al
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40AFC2:				; CODE XREF: sub_40AFA0+19j
		mov	byte ptr [esi+10h], 0
		xor	al, al
		pop	esi
		retn
sub_40AFA0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40AFE0:				; CODE XREF: ___:004011C2j
		push	ecx
		push	esi
		mov	esi, ecx
		mov	al, [esi+10h]
		test	al, al
		jz	short loc_40B007
		mov	ecx, [esi+0Ch]
		lea	eax, [esp+4]
		push	eax
		push	ecx
		call	sub_401767
		mov	eax, [esp+0Ch]
		add	esp, 8
		mov	byte ptr [esi+10h], 0
		pop	esi
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_40B007:				; CODE XREF: ___:0040AFE9j
		xor	eax, eax
		pop	esi
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_40B020	proc near		; CODE XREF: sub_40174Ej
		push	esi
		mov	esi, ecx
		mov	al, [esi+10h]
		test	al, al
		jz	short loc_40B03C
		mov	eax, [esi+0Ch]
		push	0Fh
		push	eax
		call	sub_401762
		add	esp, 8
		mov	byte ptr [esi+10h], 0


loc_40B03C:				; CODE XREF: sub_40B020+8j
		pop	esi
		retn
sub_40B020	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B050:				; CODE XREF: ___:004011F4j
		mov	eax, [ecx+0Ch]
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B070:				; CODE XREF: ___:loc_401429j
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_439DE0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	ecx, [ebp+8]
		push	ebx
		push	esi
		push	edi
		mov	eax, [ecx]
		mov	[ebp-10h], esp
		mov	dword ptr [ebp-4], 0
		call	dword ptr [eax+4]


loc_40B09E:				; DATA XREF: ___:0040B0B1o
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		xor	eax, eax
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		mov	eax, offset loc_40B09E
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B0E0:				; CODE XREF: ___:00401028j
		sub	esp, 8
		push	esi
		mov	esi, ecx
		mov	al, [esi+10h]
		test	al, al
		jz	short loc_40B122
		mov	edx, [esi+0Ch]
		lea	eax, [esp+4]
		lea	ecx, [esp+8]
		push	eax
		push	ecx
		push	edx
		call	sub_4021B2
		mov	edx, [esi+0Ch]
		mov	eax, [esp+10h]
		lea	ecx, [esp+10h]
		mov	[esi+8], eax
		push	ecx
		push	1
		push	edx
		mov	dword ptr [esp+1Ch], 0
		call	sub_401050
		add	esp, 18h


loc_40B122:				; CODE XREF: ___:0040B0EBj
		pop	esi
		add	esp, 8
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B150:				; CODE XREF: ___:00401DE3j
		push	ecx
		mov	al, [ecx+10h]
		test	al, al
		jz	short loc_40B172
		mov	eax, [ecx+8]
		lea	edx, [esp+0]
		mov	[esp+0], eax
		mov	eax, [ecx+0Ch]
		push	edx
		push	1
		push	eax
		call	sub_401050
		add	esp, 0Ch


loc_40B172:				; CODE XREF: ___:0040B156j
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40B190	proc near		; CODE XREF: sub_401A00j

var_11		= byte ptr -11h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40B190
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esp+1Ch+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	ecx, [esi+32h]
		mov	[esp+1Ch+var_4], 0
		call	sub_401753
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+1Ch+var_4], 1
		call	sub_401753
		lea	edi, [esi+8Eh]
		lea	eax, [esp+1Ch+var_11]
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+20h+var_4], 2
		call	sub_401C08
		mov	ecx, edi
		mov	byte ptr [esp+1Ch+var_4], 3
		mov	dword ptr [esi], offset	dword_43F020
		call	sub_401C03
		mov	ecx, [esp+1Ch+var_C]
		mov	eax, esi
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn
sub_40B190	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 30h dup(0CCh)

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



sub_40B250	proc near		; CODE XREF: sub_401AFAj

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

		push	0FFFFFFFFh
		push	offset SEH_40B250
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esp+18h+var_10], esi
		mov	dword ptr [esi], offset	dword_43F020
		lea	edi, [esi+8Eh]
		mov	[esp+18h+var_4], 3
		mov	ecx, edi
		call	sub_401C03
		mov	ecx, edi
		mov	byte ptr [esp+18h+var_4], 2
		call	sub_40155F
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+18h+var_4], 1
		call	sub_401023
		lea	ecx, [esi+32h]
		mov	byte ptr [esp+18h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+18h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+18h+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_40B250	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

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



sub_40B2F0	proc near		; CODE XREF: sub_4017F8j

var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40B2F0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+8Eh]
		call	sub_401C03
		push	0
		push	14h
		push	13h
		push	9
		push	0Ch
		push	4Eh
		push	12h
		push	1
		push	16h
		lea	eax, [esp+64h+var_3C]
		push	3
		push	eax
		call	sub_4019C4
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	[esp+44h+var_4], 0
		call	sub_4017EE
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+40h+var_3C]
		mov	[esp+40h+var_4], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	14h
		push	5
		push	7
		push	4Fh
		push	12h
		push	1
		push	16h
		lea	edx, [esp+60h+var_3C]
		push	3
		push	edx
		call	sub_4019C4
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	[esp+44h+var_4], 1
		call	sub_4017EE
		push	eax
		lea	eax, [esi+32h]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+40h+var_3C]
		mov	[esp+40h+var_4], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	14h
		push	5
		push	13h
		push	4Eh
		push	12h
		push	1
		push	16h
		lea	ecx, [esp+60h+var_24]
		push	3
		push	ecx
		call	sub_4019C4
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	[esp+44h+var_4], 2
		call	sub_4017EE
		add	esi, 60h
		push	eax
		push	esi
		mov	ecx, offset dword_449118
		call	sub_40159B
		mov	[esp+40h+var_4], 0FFFFFFFFh
		lea	ecx, [esp+40h+var_24]
		call	sub_401226
		mov	ecx, [esp+40h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
sub_40B2F0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 50h dup(0CCh)

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



sub_40B470	proc near		; CODE XREF: sub_40181Bj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= byte ptr  14h
arg_14		= byte ptr  18h
arg_18		= dword	ptr  1Ch

		mov	eax, [esp+arg_4]
		push	esi
		mov	esi, ecx
		push	edi
		mov	ecx, [esp+8+arg_0]
		push	eax
		add	ecx, 1Eh
		call	sub_401FDC
		mov	eax, [esp+8+arg_0]
		mov	edx, [esp+8+arg_C]
		push	edx
		lea	ecx, [eax+33h]
		call	sub_401FDC
		mov	ecx, [esp+8+arg_0]
		mov	dl, [esp+8+arg_10]
		mov	edi, [esp+8+arg_8]
		mov	[ecx+48h], dl
		mov	eax, [esp+8+arg_0]
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_401F50
		mov	ecx, [esp+8+arg_0]
		mov	dl, [esp+8+arg_14]
		push	edi
		mov	[ecx+4], dl
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_18]
		mov	[eax+5], ecx
		mov	ecx, [esp+0Ch+arg_0]
		call	sub_401FDC
		lea	edx, [esp+8+arg_0]
		lea	ecx, [esi+8Eh]
		push	edx
		call	sub_401915
		pop	edi
		pop	esi
		retn	1Ch
sub_40B470	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)

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



sub_40B510	proc near		; CODE XREF: sub_401B72j

var_54		= byte ptr -54h
var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h
arg_18		= dword	ptr  1Ch

		push	0FFFFFFFFh
		push	offset SEH_40B510
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 48h
		mov	eax, [esp+54h+arg_C]
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		push	eax
		lea	ecx, [esp+64h+var_24]
		call	sub_401870
		mov	edi, eax
		mov	ecx, [esp+60h+arg_8]
		mov	[esp+60h+var_4], 0
		push	ecx
		lea	ecx, [esp+64h+var_3C]
		call	sub_401870
		mov	ebp, eax
		mov	edx, [esp+60h+arg_4]
		lea	ecx, [esp+60h+var_54]
		push	edx
		mov	byte ptr [esp+64h+var_4], 1
		call	sub_401870
		mov	ecx, [esp+60h+arg_18]
		mov	edx, [esp+60h+arg_14]
		push	ecx
		mov	ecx, [esp+64h+arg_10]
		push	edx
		mov	edx, [esp+68h+arg_0]
		push	ecx
		push	edi
		push	ebp
		push	eax
		push	edx
		mov	ecx, esi
		mov	byte ptr [esp+7Ch+var_4], 2
		call	sub_40181B
		lea	ecx, [esp+60h+var_54]
		mov	byte ptr [esp+60h+var_4], 1
		call	sub_401226
		lea	ecx, [esp+60h+var_3C]
		mov	byte ptr [esp+60h+var_4], 0
		call	sub_401226
		lea	ecx, [esp+60h+var_24]
		mov	[esp+60h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+60h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		add	esp, 54h
		retn	1Ch
sub_40B510	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 30h dup(0CCh)

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



sub_40B600	proc near		; CODE XREF: sub_4019DDj

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

		sub	esp, 8
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+10h+var_8]
		call	sub_401546
		add	esi, 8Eh
		lea	eax, [esp+10h+var_4]
		push	eax
		mov	ecx, esi
		call	sub_40145B
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_4]
		mov	[esp+10h+var_8], ecx
		push	edx
		mov	ecx, esi
		call	sub_401C85
		push	eax
		lea	ecx, [esp+14h+var_8]
		call	sub_40136B
		test	al, al
		jz	short loc_40B681
		mov	edi, [esp+10h+arg_0]


loc_40B646:				; CODE XREF: sub_40B600+7Fj
		push	edi
		lea	ecx, [esp+14h+var_8]
		call	sub_401F78
		mov	ecx, [eax]
		add	ecx, 1Eh
		call	sub_4021D0
		test	eax, eax
		lea	ecx, [esp+10h+var_8]
		jz	short loc_40B68B
		call	sub_40133E
		lea	eax, [esp+10h+var_4]
		mov	ecx, esi
		push	eax
		call	sub_401C85
		push	eax
		lea	ecx, [esp+14h+var_8]
		call	sub_40136B
		test	al, al
		jnz	short loc_40B646


loc_40B681:				; CODE XREF: sub_40B600+40j
		pop	edi
		xor	eax, eax
		pop	esi
		add	esp, 8
		retn	8
; ---------------------------------------------------------------------------


loc_40B68B:				; CODE XREF: sub_40B600+60j
		call	sub_401F78
		mov	eax, [eax]
		pop	edi
		pop	esi
		add	esp, 8
		retn	8
sub_40B600	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B6D0:				; CODE XREF: ___:00401460j
		push	0FFFFFFFFh
		push	offset dword_439EF8
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		mov	eax, [esp+28h]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+8]
		call	sub_401870
		mov	ecx, [esp+30h]
		mov	dword ptr [esp+24h], 0
		push	ecx
		push	eax
		mov	ecx, esi
		call	sub_4019DD
		lea	ecx, [esp+4]
		mov	esi, eax
		mov	dword ptr [esp+24h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+1Ch]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 24h
		retn	8
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)

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



sub_40B760	proc near		; CODE XREF: sub_4015A0j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_4015E1
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 77C1CF90h
		fstp	dword ptr [esi+15h]
		add	esp, 4
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		mov	ecx, esi
		mov	[esi+1Ah], eax
		mov	byte ptr [esi+19h], 0
		push	offset dword_44492C
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_40B7B1
		mov	byte ptr [esi+19h], 1


loc_40B7B1:				; CODE XREF: sub_40B760+4Bj
		pop	esi
		retn	8
sub_40B760	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)

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



sub_40B7E0	proc near		; CODE XREF: sub_401F50j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	ecx, esi
		mov	eax, [edi+9]
		push	eax
		call	sub_4015E1
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 77C1CF90h
		fstp	dword ptr [esi+15h]
		add	esp, 4
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		mov	ecx, esi
		mov	[esi+1Ah], eax
		mov	byte ptr [esi+19h], 0
		push	offset dword_44492C
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_40B835
		mov	byte ptr [esi+19h], 1


loc_40B835:				; CODE XREF: sub_40B7E0+4Fj
		mov	cl, [edi+4]
		mov	[esi+4], cl
		mov	edx, [edi+5]
		mov	[esi+5], edx
		pop	edi
		pop	esi
		retn	8
sub_40B7E0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B870:				; CODE XREF: ___:00401D57j
		fld	dword ptr [esp+8]
		push	esi
		mov	esi, [esp+8]
		sub	esp, 8
		fstp	qword ptr [esp]
		push	offset dword_444934
		push	esi
		call	sub_40102D
		mov	eax, [esp+1Ch]
		add	esp, 10h
		mov	ecx, esi
		mov	[esi+15h], eax
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 77C1BF18h
		fld	dword ptr [esp+10h]
		fcomp	flt_43F024
		mov	[esi+1Ah], eax
		add	esp, 4
		mov	byte ptr [esi+19h], 0
		fnstsw	ax
		test	ah, 1
		jnz	short loc_40B8C1
		mov	byte ptr [esi+19h], 1


loc_40B8C1:				; CODE XREF: ___:0040B8BBj
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B8F0:				; CODE XREF: ___:00401CA8j
		push	ebx
		mov	bl, [esp+0Ch]
		test	bl, bl
		push	esi
		jz	short loc_40B920
		mov	esi, [esp+0Ch]
		push	offset dword_44492C
		mov	ecx, esi
		call	sub_4015E1
		mov	dword ptr [esi+15h], 3F800000h
		mov	dword ptr [esi+1Ah], 1
		mov	[esi+19h], bl
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40B920:				; CODE XREF: ___:0040B8F8j
		mov	esi, [esp+0Ch]
		push	offset dword_444938
		mov	ecx, esi
		call	sub_4015E1
		xor	eax, eax
		mov	[esi+19h], bl
		mov	[esi+15h], eax
		mov	[esi+1Ah], eax
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B960:				; CODE XREF: ___:00401D7Fj
		push	esi
		mov	esi, [esp+8]
		push	edi
		mov	edi, [esp+10h]
		push	edi
		push	offset dword_4447F4
		push	esi
		call	sub_40102D
		fild	dword ptr [esp+1Ch]
		add	esp, 0Ch
		cmp	edi, 1
		mov	[esi+1Ah], edi
		mov	byte ptr [esi+19h], 0
		fstp	dword ptr [esi+15h]
		jl	short loc_40B990
		mov	byte ptr [esi+19h], 1


loc_40B990:				; CODE XREF: ___:0040B98Aj
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B9B0:				; CODE XREF: ___:00401AE1j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset dword_439F30
		push	eax
		mov	large fs:0, esp
		sub	esp, 4Ch
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+68h]
		mov	ebp, ecx
		push	edi
		lea	edi, [esi+7Eh]
		lea	ecx, [ebp+4]
		call	sub_4014DD
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40BAF2
		lea	ebx, [esi+69h]
		mov	ecx, ebx
		call	sub_4014DD
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	offset dword_444984
		push	eax
		push	ecx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+6Ch]
		call	sub_401546
		add	ebp, 8Eh
		lea	edx, [esp+10h]
		push	edx
		mov	ecx, ebp
		xor	edi, edi
		call	sub_40145B
		mov	eax, [eax]
		lea	ecx, [esp+10h]
		push	ecx
		mov	ecx, ebp
		mov	[esp+70h], eax
		call	sub_401C85
		push	eax
		lea	ecx, [esp+70h]
		call	sub_40136B
		test	al, al
		jz	loc_40BAEB


loc_40BA56:				; CODE XREF: ___:0040BAE5j
		lea	ecx, [esp+6Ch]
		inc	edi
		call	sub_401F78
		mov	ecx, [eax]
		add	ecx, 33h
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+70h]
		call	sub_401F78
		mov	ecx, [eax]
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+74h]
		call	sub_401F78
		mov	ecx, [eax]
		add	ecx, 1Eh
		call	sub_4017EE
		push	eax
		push	edi
		push	offset dword_444968
		mov	ecx, ebx
		call	sub_4014DD
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D8075
		call	sub_401857
		add	esp, 24h
		push	5DCh
		nop
		call	near ptr 2821D1Ah
		lea	ecx, [esp+6Ch]
		call	sub_40133E
		lea	ecx, [esp+10h]
		push	ecx
		mov	ecx, ebp
		call	sub_401C85
		push	eax
		lea	ecx, [esp+70h]
		call	sub_40136B
		test	al, al
		jnz	loc_40BA56


loc_40BAEB:				; CODE XREF: ___:0040BA50j
		mov	al, 1
		jmp	loc_40BC7A
; ---------------------------------------------------------------------------


loc_40BAF2:				; CODE XREF: ___:0040B9E7j
		lea	ecx, [ebp+32h]
		call	sub_4017EE
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_40BB85
		push	offset dword_444600
		lea	edx, [esp+30h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016B8
		push	1
		push	eax
		mov	ecx, ebp
		mov	dword ptr [esp+6Ch], 0
		call	sub_4019DD
		lea	ecx, [esp+2Ch]
		mov	edi, eax
		mov	dword ptr [esp+64h], 0FFFFFFFFh
		call	sub_401226
		test	edi, edi
		jz	loc_40BC78
		mov	ecx, edi
		call	sub_4017EE
		push	eax
		lea	ecx, [edi+1Eh]
		call	sub_4017EE
		push	eax
		push	offset dword_44495C
		lea	ecx, [esi+69h]
		call	sub_4014DD
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		push	offset byte_4D8075
		call	sub_401857
		add	esp, 1Ch
		jmp	loc_40BC7A
; ---------------------------------------------------------------------------


loc_40BB85:				; CODE XREF: ___:0040BB04j
		lea	ecx, [ebp+60h]
		call	sub_4014DD
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40BC78
		push	offset dword_444600
		lea	edx, [esp+30h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016B8
		push	1
		push	eax
		mov	ecx, ebp
		mov	dword ptr [esp+6Ch], 1
		call	sub_4019DD
		lea	ecx, [esp+2Ch]
		mov	edi, eax
		mov	dword ptr [esp+64h], 0FFFFFFFFh
		call	sub_401226
		test	edi, edi
		jz	loc_40BC78
		push	edi
		lea	ecx, [esp+18h]
		call	sub_4014D3
		mov	ebx, 2
		push	1
		push	offset dword_444600
		lea	eax, [esp+4Ch]
		push	ebx
		push	eax
		mov	ecx, esi
		mov	[esp+74h], ebx
		call	sub_4011EA
		push	eax
		push	edi
		mov	ecx, ebp
		mov	byte ptr [esp+6Ch], 3
		call	sub_401F50
		lea	ecx, [esp+44h]
		mov	[esp+64h], bl
		call	sub_401226
		lea	ecx, [esp+14h]
		call	sub_4017EE
		push	eax
		mov	ecx, edi
		call	sub_4017EE
		push	eax
		lea	ecx, [edi+1Eh]
		call	sub_4017EE
		push	eax
		push	offset dword_444940
		lea	ecx, [esi+69h]
		call	sub_4014DD
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D8075
		call	sub_401857
		add	esp, 20h
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+64h], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		jmp	short loc_40BC7A
; ---------------------------------------------------------------------------


loc_40BC78:				; CODE XREF: ___:0040BB40j
					; ___:0040BB97j ...
		xor	al, al


loc_40BC7A:				; CODE XREF: ___:0040BAEDj
					; ___:0040BB80j ...
		mov	ecx, [esp+5Ch]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 58h
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 0C0h	dup(0CCh)

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



sub_40BD50	proc near		; CODE XREF: sub_401C08j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	0
		mov	cl, [eax]
		push	0
		mov	[esi], cl
		mov	ecx, esi
		call	sub_4021EE
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_40BD50	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_40BD90	proc near		; CODE XREF: sub_40155Fj

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

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_C]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401C85
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_40145B
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40124E
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_401FEB
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
sub_40BD90	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

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



sub_40BE00	proc near		; CODE XREF: sub_40145Bj

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		push	eax
		call	sub_402117
		mov	ecx, [eax]
		add	esp, 4
		push	ecx
		lea	ecx, [esp+8+var_4]
		call	sub_4014B0
		mov	edx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], edx
		pop	ecx
		retn	4
sub_40BE00	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_40BE40	proc near		; CODE XREF: sub_401C85j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		lea	ecx, [esp+4+var_4]
		push	eax
		call	sub_4014B0
		mov	ecx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], ecx
		pop	ecx
		retn	4
sub_40BE40	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

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



sub_40BE70	proc near		; CODE XREF: sub_401915j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+0Ch+arg_0]
		push	ecx
		mov	ecx, esi
		call	sub_401C85
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401C5D
		pop	esi
		pop	ecx
		retn	4
sub_40BE70	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_40BEB0	proc near		; CODE XREF: sub_401C03j

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

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_C]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401C85
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_40145B
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40124E
		pop	esi
		add	esp, 0Ch
		retn
sub_40BEB0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_40BF00	proc near		; CODE XREF: sub_401546j
		push	esi
		mov	esi, ecx
		call	sub_402158
		mov	eax, esi
		pop	esi
		retn
sub_40BF00	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_40BF20	proc near		; CODE XREF: sub_401F78j
		mov	eax, [ecx]
		push	eax
		call	sub_401848
		add	esp, 4
		retn
sub_40BF20	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_40BF40	proc near		; CODE XREF: sub_40133Ej
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_402117
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_40BF40	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_40BF70	proc near		; CODE XREF: sub_40136Bj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401CFD
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_40BF70	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_40BFA0	proc near		; CODE XREF: sub_401C5Dj

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

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+0Ch+arg_4]
		call	sub_4016AE
		mov	edi, eax
		push	edi
		call	sub_40215D
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_4021EE
		push	edi
		mov	ebx, eax
		call	sub_40215D
		push	edi
		mov	[eax], ebx
		call	sub_40215D
		mov	edi, [eax]
		push	edi
		call	sub_40215D
		mov	ecx, [eax]
		push	ecx
		call	sub_402117
		mov	edx, [esp+1Ch+arg_8]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_401848
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_401F32
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		lea	ecx, [esp+10h+arg_8]
		call	sub_4014B0
		mov	ecx, [eax]
		mov	eax, [esp+0Ch+arg_0]
		pop	edi
		pop	esi
		mov	[eax], ecx
		pop	ebx
		retn	0Ch
sub_40BFA0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)

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



sub_40C040	proc near		; CODE XREF: sub_40124Ej

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

		sub	esp, 8
		lea	eax, [esp+8+arg_8]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+10h+arg_4]
		call	sub_40136B
		test	al, al
		jz	short loc_40C09A


loc_40C058:				; CODE XREF: sub_40C040+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_401B9A
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_40106E
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_40136B
		test	al, al
		jnz	short loc_40C058
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40C09A:				; CODE XREF: sub_40C040+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_40C040	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

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



sub_40C0D0	proc near		; CODE XREF: sub_4021EEj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_401569
		mov	edi, [esp+8+arg_0]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_40C0E5
		mov	edi, esi


loc_40C0E5:				; CODE XREF: sub_40C0D0+11j
		push	esi
		call	sub_402117
		mov	[eax], edi
		mov	edi, [esp+0Ch+arg_4]
		add	esp, 4
		test	edi, edi
		jnz	short loc_40C0FA
		mov	edi, esi


loc_40C0FA:				; CODE XREF: sub_40C0D0+26j
		push	esi
		call	sub_40215D
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_40C0D0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_40C120	proc near		; CODE XREF: sub_401FEBj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_402077
		retn	4
sub_40C120	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

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



sub_40C140	proc near		; CODE XREF: sub_402117j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_40C140	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_40C160	proc near		; CODE XREF: sub_401848j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_40C160	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_40C180	proc near		; CODE XREF: sub_402158j
		mov	eax, ecx
		retn
sub_40C180	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_40C1A0	proc near		; CODE XREF: sub_4014B0j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_40105A
		mov	eax, esi
		pop	esi
		retn	4
sub_40C1A0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_40C1D0	proc near		; CODE XREF: sub_401CFDj

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, [ecx]
		push	esi
		xor	ecx, ecx
		mov	esi, [edx]
		cmp	eax, esi
		pop	esi
		setz	cl
		mov	al, cl
		retn	4
sub_40C1D0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_40C200	proc near		; CODE XREF: sub_40106Ej

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

		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	eax, [esp+10h+var_4]
		push	0
		push	eax
		lea	ecx, [esp+18h+arg_4]
		call	sub_401B9A
		mov	ecx, eax
		call	sub_4016AE
		mov	esi, eax
		push	esi
		call	sub_402117
		push	esi
		mov	ebx, eax
		call	sub_40215D
		mov	ecx, [eax]
		push	ecx
		call	sub_402117
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_40215D
		push	esi
		mov	ebx, eax
		call	sub_402117
		mov	eax, [eax]
		push	eax
		call	sub_40215D
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_401848
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_401221
		push	esi
		mov	ecx, edi
		call	sub_401FEB
		mov	eax, [edi+8]
		mov	edx, [esp+10h+arg_4]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+10h+arg_0]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
sub_40C200	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

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



sub_40C2C0	proc near		; CODE XREF: sub_40215Dj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_40C2C0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_40C2E0	proc near		; CODE XREF: sub_401569j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D2A
		add	esp, 8
		retn	4
sub_40C2E0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_40C310	proc near		; CODE XREF: sub_402077j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	near ptr word_437AD2
		pop	ecx
		retn	8
sub_40C310	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_40C330	proc near		; CODE XREF: sub_401F32j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	eax
		push	ecx
		call	sub_4011AE
		add	esp, 8
		retn	8
sub_40C330	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_40C360	proc near		; CODE XREF: sub_40105Aj

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		retn	4
sub_40C360	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

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



sub_40C380	proc near		; CODE XREF: sub_4016AEj
		mov	eax, [ecx]
		retn
sub_40C380	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_40C3A0	proc near		; CODE XREF: sub_401B9Aj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_40133E
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_40C3A0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_40C3D0	proc near		; CODE XREF: sub_401221j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_2
		pop	ecx
		retn	4
sub_40C3D0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_40C3F0	proc near		; CODE XREF: sub_4011AEj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	eax
		push	4
		call	sub_4011CC
		add	esp, 8
		test	eax, eax
		jz	short locret_40C40B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_40C40B:				; CODE XREF: sub_40C3F0+11j
		retn
sub_40C3F0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
		db 0Fh dup(90h)
		db 10h dup(0CCh)

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



sub_40C440	proc near		; CODE XREF: sub_401BF9j

var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40C440
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	esi
		push	0
		push	4
		push	0Eh
		push	5
		push	13h
		push	4Fh
		push	3
		push	3
		lea	eax, [esp+48h+var_24]
		push	4
		mov	esi, ecx
		push	eax
		call	sub_4019C4
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	[esp+2Ch+var_4], 0
		call	sub_40168B
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+28h+var_24]
		mov	[esp+28h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+28h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 24h
		retn
sub_40C440	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40C4E0:				; CODE XREF: ___:0040171Cj
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset dword_439F9C
		push	eax
		mov	large fs:0, esp
		sub	esp, 0AA0h
		add	ecx, 4
		push	ebx
		push	ebp
		push	esi
		push	edi
		call	sub_4014DD
		mov	ebp, [esp+0AC0h]
		push	eax
		lea	ecx, [ebp+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40CA2E
		lea	ecx, [esp+44h]
		call	sub_401091
		push	1
		push	offset dword_444600
		lea	eax, [esp+88h]
		xor	esi, esi
		push	1
		push	eax
		mov	ecx, ebp
		mov	[esp+0AC8h], esi
		call	sub_4011EA
		push	eax
		lea	ecx, [esp+50h]
		mov	byte ptr [esp+0ABCh], 1
		call	sub_40202C
		lea	ecx, [esp+80h]
		mov	byte ptr [esp+0AB8h], 0
		call	sub_401226
		push	esi
		push	1
		push	2
		mov	[esp+20h], esi
		mov	[esp+24h], esi
		mov	[esp+38h], esi
		call	near ptr 71AB3B91h
		nop
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		mov	[esp+10h], ebx
		jnz	short loc_40C5AC
		lea	ecx, [esp+3ACh]
		push	offset dword_444AA0
		push	ecx
		call	near ptr byte_5FC011
		nop
		add	esp, 8
		jmp	loc_40C9D5
; ---------------------------------------------------------------------------


loc_40C5AC:				; CODE XREF: ___:0040C58Fj
		xor	edx, edx
		push	esi
		mov	[esp+20h], edx
		mov	word ptr [esp+20h], 2
		mov	[esp+24h], edx
		mov	[esp+28h], edx
		mov	[esp+2Ch], edx
		call	near ptr 71AB2B66h
		nop
		mov	[esp+1Eh], ax
		lea	eax, [esp+1Ch]
		push	10h
		push	eax
		push	ebx
		mov	[esp+2Ch], esi
		nop
		call	near ptr 71AB3E00h
		test	eax, eax
		jz	short loc_40C5FA
		lea	ecx, [ebp+69h]
		call	sub_4014DD
		push	eax
		push	offset dword_444A80
		jmp	loc_40C6A0
; ---------------------------------------------------------------------------


loc_40C5FA:				; CODE XREF: ___:0040C5E5j
		lea	eax, [esp+34h]
		lea	ecx, [esp+1Ch]
		push	eax
		push	ecx
		push	ebx
		mov	dword ptr [esp+40h], 10h
		nop
		call	near ptr 71AB951Eh
		mov	edx, [esp+1Eh]
		push	edx
		nop
		call	near ptr 71AB2B66h
		lea	ecx, [esp+4Ch]
		mov	[esp+30h], eax
		call	sub_4014DD
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [esp+1ACh]
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		xor	edx, edx
		rep movsb


loc_40C653:				; CODE XREF: ___:0040C683j
		mov	al, [esp+edx+1ACh]
		cmp	al, 20h
		jnz	short loc_40C665
		mov	eax, 5Fh
		jmp	short loc_40C668
; ---------------------------------------------------------------------------


loc_40C665:				; CODE XREF: ___:0040C65Cj
		movsx	eax, al


loc_40C668:				; CODE XREF: ___:0040C663j
		mov	[esp+edx+5ACh],	al
		lea	edi, [esp+1ACh]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		inc	edx
		repne scasb
		not	ecx
		dec	ecx
		cmp	edx, ecx
		jbe	short loc_40C653
		push	1
		push	ebx
		call	near ptr 71AB88D3h
		nop
		test	eax, eax
		jz	short loc_40C6BD
		lea	ecx, [ebp+69h]
		call	sub_4014DD
		push	eax
		push	offset dword_444A60


loc_40C6A0:				; CODE XREF: ___:0040C5F5j
		mov	cl, [ebp+94h]
		mov	dl, [ebp+93h]
		push	ecx
		push	edx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		jmp	loc_40C9CF
; ---------------------------------------------------------------------------


loc_40C6BD:				; CODE XREF: ___:0040C690j
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		lea	ecx, [esp+64h]
		call	sub_4017EE
		push	eax
		call	near ptr 2850000h
		nop
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40C724
		lea	ecx, [ebp+69h]
		call	sub_4014DD
		mov	cl, [ebp+93h]
		push	eax
		mov	al, [ebp+94h]
		push	offset dword_444A44
		push	eax
		push	ecx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	edx, [esp+3ACh]
		push	offset dword_444A24
		push	edx
		nop
		call	near ptr byte_5FC011
		add	esp, 8
		jmp	loc_40C9CF
; ---------------------------------------------------------------------------


loc_40C724:				; CODE XREF: ___:0040C6E1j
		push	0
		push	esi
		nop
		call	near ptr 2840B52h
		lea	ecx, [esp+68h]
		mov	ebx, eax
		call	sub_40142E
		mov	eax, [esp+30h]
		push	ebx
		and	eax, 0FFFFh
		mov	byte ptr [esp+0ABCh], 2
		push	eax
		mov	eax, dword_4D808D
		push	eax
		call	sub_401E10
		add	esp, 4
		push	eax
		nop
		call	near ptr 71AB2BF4h
		push	eax
		call	near ptr 71AB2BC0h
		nop
		push	eax
		lea	ecx, [esp+58h]
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+78h]
		push	offset dword_444A08
		push	ecx
		call	sub_40102D
		add	esp, 18h
		lea	ecx, [ebp+15h]
		call	sub_40168B
		push	eax
		lea	ecx, [esp+6Ch]
		call	sub_4014DD
		mov	dl, [ebp+94h]
		push	eax
		mov	al, [ebp+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D8075
		call	sub_401118
		mov	edi, [esp+10h]
		lea	ecx, [esp+3Ch]
		push	ecx
		push	0
		lea	edx, [esp+0B0h]
		push	0
		push	edx
		push	0
		mov	dword ptr [esp+50h], 3Ch
		mov	dword ptr [esp+54h], 0
		mov	[esp+0C0h], edi
		mov	dword ptr [esp+0BCh], 1
		call	near ptr 71AB2DC0h
		nop
		test	eax, eax
		jg	short loc_40C81D
		lea	ecx, [ebp+69h]
		call	sub_4014DD
		mov	cl, [ebp+93h]
		push	eax
		mov	al, [ebp+94h]
		push	offset dword_4449F8
		push	eax
		push	ecx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		jmp	loc_40C9BA
; ---------------------------------------------------------------------------


loc_40C81D:				; CODE XREF: ___:0040C7F0j
		lea	edx, [esp+38h]
		lea	eax, [esp+98h]
		push	edx
		push	eax
		push	edi
		mov	dword ptr [esp+44h], 10h
		nop
		call	near ptr 71AC1028h
		cmp	eax, 0FFFFFFFFh
		mov	[esp+48h], eax
		jnz	short loc_40C86D
		lea	ecx, [ebp+69h]
		call	sub_4014DD
		mov	cl, [ebp+94h]
		mov	dl, [ebp+93h]
		push	eax
		push	offset dword_4449D8
		push	ecx
		push	edx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		jmp	loc_40C9BA
; ---------------------------------------------------------------------------


loc_40C86D:				; CODE XREF: ___:0040C840j
		push	edi
		call	near ptr 71AB9639h
		nop
		test	ebx, ebx
		jz	loc_40C925


loc_40C87C:				; CODE XREF: ___:0040C918j
		mov	ebp, 400h
		cmp	ebx, ebp
		jge	short loc_40C887
		mov	ebp, ebx


loc_40C887:				; CODE XREF: ___:0040C883j
		mov	edx, ebx
		xor	eax, eax
		neg	edx
		push	2
		mov	ecx, 100h
		lea	edi, [esp+6B4h]
		push	eax
		push	edx
		push	esi
		rep stosd
		call	near ptr 2840000h
		nop
		lea	eax, [esp+2Ch]
		push	0
		push	eax
		lea	ecx, [esp+6B8h]
		push	ebp
		push	ecx
		push	esi
		nop
		call	near ptr 28309B3h
		mov	eax, [esp+48h]
		push	0
		lea	edx, [esp+6B4h]
		push	ebp
		push	edx
		push	eax
		call	near ptr 71AB428Ah
		nop
		mov	ecx, [esp+14h]
		mov	ebp, [esp+18h]
		mov	edi, eax
		push	0
		cdq
		add	ecx, eax
		push	400h
		mov	[esp+1Ch], ecx
		lea	ecx, [esp+6B8h]
		adc	ebp, edx
		mov	edx, [esp+50h]
		push	ecx
		push	edx
		mov	[esp+28h], ebp
		nop
		call	near ptr 71AB615Ah
		cmp	eax, 1
		jl	loc_40C9EE
		cmp	edi, 1
		jl	loc_40C9EE
		sub	ebx, edi
		jnz	loc_40C87C
		mov	ebp, [esp+0AC0h]


loc_40C925:				; CODE XREF: ___:0040C876j
		push	esi
		nop
		call	near ptr 2830608h
		lea	ecx, [esp+80h]
		call	sub_40142E
		mov	eax, [esp+18h]
		mov	ecx, [esp+14h]
		push	eax
		push	ecx
		lea	ecx, [esp+54h]
		mov	byte ptr [esp+0AC0h], 3
		call	sub_4014DD
		mov	edx, [esp+0A4h]
		push	eax
		push	edx
		call	near ptr 71AB3F41h
		nop
		push	eax
		lea	eax, [esp+90h]
		push	offset dword_4449A4
		push	eax
		call	sub_40102D
		add	esp, 18h
		lea	ecx, [ebp+69h]
		call	sub_4014DD
		push	eax
		lea	ecx, [esp+84h]
		call	sub_4014DD
		mov	cl, [ebp+94h]
		mov	dl, [ebp+93h]
		push	eax
		push	ecx
		push	edx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+80h]
		mov	byte ptr [esp+0AB8h], 2
		call	sub_401226


loc_40C9BA:				; CODE XREF: ___:0040C818j
					; ___:0040C868j
		lea	ecx, [esp+68h]
		mov	byte ptr [esp+0AB8h], 0
		call	sub_401226
		mov	ebx, [esp+10h]


loc_40C9CF:				; CODE XREF: ___:0040C6B8j
					; ___:0040C71Fj
		xor	esi, esi
		cmp	ebx, esi
		jbe	short loc_40C9DC


loc_40C9D5:				; CODE XREF: ___:0040C5A7j
		push	ebx
		call	near ptr 71AB9639h
		nop


loc_40C9DC:				; CODE XREF: ___:0040C9D3j
		mov	eax, [esp+48h]
		push	eax
		call	near ptr 71AB9639h
		nop
		push	esi
		nop
		call	near ptr 2830000h


loc_40C9EE:				; CODE XREF: ___:0040C907j
					; ___:0040C910j
		mov	esi, [esp+0AC0h]
		lea	ecx, [esi+69h]
		call	sub_4014DD
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	offset dword_44498C
		push	eax
		push	ecx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		mov	edx, [esp+48h]
		push	edx
		call	near ptr 71AB9639h
		nop
		push	1
		call	near ptr 2830000h
		nop


loc_40CA2E:				; CODE XREF: ___:0040C519j
		mov	ecx, [esp+0AB0h]
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 0AACh
		retn	4
; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 160h	dup(0CCh)

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



sub_40CBB0	proc near		; CODE XREF: sub_401091j
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+8]
		call	sub_40142E
		mov	eax, esi
		pop	esi
		retn
sub_40CBB0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40CBD0:				; CODE XREF: ___:00401B13j
		add	ecx, 8
		jmp	sub_401226
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_40CBF0	proc near		; CODE XREF: sub_402063j

var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40CBF0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	esi
		push	0
		push	5
		push	0Ch
		push	9
		lea	eax, [esp+38h+var_24]
		push	6
		mov	esi, ecx
		push	eax
		call	sub_4019C4
		add	esp, 18h
		push	esi
		mov	ecx, eax
		mov	[esp+2Ch+var_4], 0
		call	sub_4017EE
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+28h+var_24]
		mov	[esp+28h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+28h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 24h
		retn
sub_40CBF0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40CC90:				; CODE XREF: ___:00401BB8j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset byte_43A017
		push	eax
		mov	large fs:0, esp
		sub	esp, 270h
		add	ecx, 4
		push	esi
		call	sub_4014DD
		mov	esi, [esp+284h]
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40CE91
		push	ebx
		lea	ecx, [esp+24h]
		call	sub_40199C
		lea	eax, [esi+2Ah]
		xor	ebx, ebx
		push	eax
		lea	ecx, [esp+2Ch]
		mov	[esp+284h], ebx
		mov	[esp+28h], ebx
		call	sub_40202C
		push	1
		push	offset dword_444600
		lea	ecx, [esp+14h]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4011EA
		mov	ecx, eax
		mov	byte ptr [esp+280h], 1
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+41h]
		call	sub_401A9B
		lea	ecx, [esp+0Ch]
		mov	[esp+280h], bl
		call	sub_401226
		push	1
		push	offset dword_444600
		lea	edx, [esp+14h]
		push	3
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		mov	ecx, eax
		mov	byte ptr [esp+280h], 2
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+56h]
		call	sub_401A9B
		lea	ecx, [esp+0Ch]
		mov	[esp+280h], bl
		call	sub_401226
		mov	edx, [esp+63h]
		xor	eax, eax
		mov	al, [esi+94h]
		xor	ecx, ecx
		mov	cl, [esi+93h]
		mov	[esp+6Bh], eax
		lea	eax, [esp+0Ch]
		mov	[esp+6Fh], ecx
		push	edx
		push	eax
		lea	ecx, [esp+5Ah]
		mov	[esp+6Fh], ebx
		mov	dword ptr [esp+7Bh], 1
		call	sub_401E47
		push	offset dword_444ADC
		mov	ecx, eax
		mov	byte ptr [esp+284h], 3
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+0Ch]
		mov	[esp+280h], bl
		setz	byte ptr [esp+0Bh]
		call	sub_401226
		cmp	[esp+0Bh], bl
		jz	short loc_40CE0B
		mov	ecx, [esp+63h]
		lea	edx, [esp+0Ch]
		push	ecx
		push	edx
		lea	ecx, [esp+5Ah]
		call	sub_401E47
		push	offset dword_448F34
		mov	ecx, eax
		mov	byte ptr [esp+284h], 4
		call	sub_401A9B
		lea	ecx, [esp+0Ch]
		mov	[esp+280h], bl
		call	sub_401226


loc_40CE0B:				; CODE XREF: ___:0040CDD2j
		push	ebx
		lea	ecx, [esp+56h]
		call	sub_4014DD
		push	eax
		lea	ecx, [esp+45h]
		call	sub_4014DD
		push	eax
		mov	eax, [esp+77h]
		push	eax
		lea	ecx, [esp+38h]
		call	sub_40168B
		mov	ecx, [esp+34h]
		push	eax
		push	ecx
		call	sub_40227A
		push	eax
		lea	edx, [esp+94h]
		push	offset dword_444AC8
		push	edx
		nop
		call	near ptr byte_5FC011
		mov	eax, [esp+93h]
		add	esp, 24h
		cmp	eax, ebx
		jnz	short loc_40CE7C
		mov	eax, [esp+6Bh]
		lea	ecx, [esp+78h]
		push	eax
		push	ecx
		lea	ecx, [esp+30h]
		call	sub_40168B
		mov	edx, [esp+2Ch]
		push	eax
		push	edx
		call	sub_40152D
		add	esp, 10h


loc_40CE7C:				; CODE XREF: ___:0040CE59j
		mov	eax, [esp+67h]
		push	eax
		call	sub_401E3D
		add	esp, 4
		push	ebx
		nop
		call	near ptr 2830000h
		pop	ebx


loc_40CE91:				; CODE XREF: ___:0040CCC6j
		mov	ecx, [esp+274h]
		mov	al, 1
		pop	esi
		mov	large fs:0, ecx
		add	esp, 27Ch
		retn	4
; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 90h dup(0CCh)

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



sub_40CF40	proc near		; CODE XREF: sub_40199Cj

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

		push	0FFFFFFFFh
		push	offset SEH_40CF40
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+4]
		call	sub_40142E
		lea	ecx, [esi+19h]
		mov	[esp+14h+var_4], 0
		call	sub_40142E
		lea	ecx, [esi+2Eh]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_40142E
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_40CF40	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40CFC0:				; CODE XREF: ___:0040228Ej
		push	0FFFFFFFFh
		push	offset word_43A086
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+4], esi
		lea	ecx, [esi+2Eh]
		mov	dword ptr [esp+10h], 1
		call	sub_401226
		lea	ecx, [esi+19h]
		mov	byte ptr [esp+10h], 0
		call	sub_401226
		lea	ecx, [esi+4]
		mov	dword ptr [esp+10h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+8]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

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



sub_40D040	proc near		; CODE XREF: sub_40227Aj

var_548		= byte ptr -548h
var_51C		= byte ptr -51Ch
var_51B		= byte ptr -51Bh
var_408		= byte ptr -408h
var_304		= byte ptr -304h
var_200		= byte ptr -200h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h

		sub	esp, 548h
		lea	eax, [esp+548h+var_408]
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+554h+arg_10]
		push	edi
		mov	edi, dword_511AE4
		push	esi
		push	offset dword_444AF0
		push	104h
		push	eax
		call	edi
		add	esp, 10h
		lea	ecx, [esp+558h+var_548]
		lea	edx, [esp+558h+var_408]
		push	ecx
		push	edx
		nop
		call	near ptr 2870000h
		mov	ebp, [esp+558h+arg_14]
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_40D107


loc_40D090:				; CODE XREF: sub_40D040+C5j
		test	[esp+558h+var_548], 10h
		jz	short loc_40D0F7
		cmp	[esp+558h+var_51C], 2Eh
		jnz	short loc_40D0AA
		mov	al, [esp+558h+var_51B]
		test	al, al
		jz	short loc_40D0F7
		cmp	al, 2Eh
		jz	short loc_40D0F7


loc_40D0AA:				; CODE XREF: sub_40D040+5Cj
		lea	eax, [esp+558h+var_51C]
		lea	ecx, [esp+558h+var_304]
		push	eax
		push	esi
		push	offset dword_444684
		push	104h
		push	ecx
		call	edi
		mov	eax, [esp+56Ch+arg_C]
		mov	ecx, [esp+56Ch+arg_8]
		lea	edx, [esp+56Ch+var_304]
		push	ebp
		push	edx
		mov	edx, [esp+574h+arg_4]
		push	eax
		mov	eax, [esp+578h+arg_0]
		push	ecx
		push	edx
		push	eax
		call	sub_40227A
		add	esp, 2Ch
		mov	ebp, eax


loc_40D0F7:				; CODE XREF: sub_40D040+55j
					; sub_40D040+64j ...
		lea	ecx, [esp+558h+var_548]
		push	ecx
		push	ebx
		call	near ptr 2860000h
		nop
		test	eax, eax
		jnz	short loc_40D090


loc_40D107:				; CODE XREF: sub_40D040+4Ej
		push	ebx
		call	near ptr 285023Ah
		nop
		mov	edx, [esp+558h+arg_C]
		lea	eax, [esp+558h+var_408]
		push	edx
		push	esi
		push	offset dword_444684
		push	104h
		push	eax
		call	edi
		add	esp, 14h
		lea	ecx, [esp+558h+var_548]
		lea	edx, [esp+558h+var_408]
		push	ecx
		push	edx
		nop
		call	near ptr 2870000h
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_40D19B


loc_40D148:				; CODE XREF: sub_40D040+159j
		lea	eax, [esp+558h+var_51C]
		lea	ecx, [esp+558h+var_200]
		push	eax
		push	esi
		push	offset dword_444AE0
		push	200h
		push	ecx
		inc	ebp
		call	edi
		mov	edx, [esp+56Ch+arg_8]
		mov	ecx, [esp+56Ch+arg_4]
		lea	eax, [esp+56Ch+var_200]
		push	edx
		mov	edx, [esp+570h+arg_0]
		push	eax
		push	ecx
		push	edx
		call	sub_40152D
		add	esp, 24h
		lea	eax, [esp+558h+var_548]
		push	eax
		push	ebx
		nop
		call	near ptr 2860000h
		test	eax, eax
		jnz	short loc_40D148


loc_40D19B:				; CODE XREF: sub_40D040+106j
		push	ebx
		nop
		call	near ptr 285023Ah
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 548h
		retn
sub_40D040	endp

; ---------------------------------------------------------------------------
		db 90h
		db 60h dup(0CCh)

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



sub_40D210	proc near		; CODE XREF: sub_40104Bj

var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40D210
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	edi
		push	0
		push	4
		push	4
		push	1
		push	13h
		lea	eax, [esp+58h+var_3C]
		push	1
		mov	esi, ecx
		push	eax
		call	sub_4019C4
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 0
		call	sub_4017EE
		lea	ecx, [esi+19h]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+44h+var_3C]
		mov	[esp+44h+var_4], edi
		call	sub_401226
		push	0
		push	0Ch
		push	5
		push	4
		push	13h
		lea	edx, [esp+58h+var_3C]
		push	1
		push	edx
		call	sub_4019C4
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 1
		call	sub_4017EE
		push	eax
		lea	eax, [esi+47h]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+44h+var_3C]
		mov	[esp+44h+var_4], edi
		call	sub_401226
		push	0
		push	4
		push	4
		push	1
		push	3
		push	16h
		lea	ecx, [esp+5Ch+var_3C]
		push	13h
		push	ecx
		call	sub_4019C4
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 2
		call	sub_4017EE
		lea	edx, [esi+75h]
		push	eax
		push	edx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+44h+var_3C]
		mov	[esp+44h+var_4], edi
		call	sub_401226
		push	0
		push	0Ch
		push	5
		push	4
		push	3
		push	16h
		push	13h
		lea	eax, [esp+60h+var_24]
		push	eax
		call	sub_4019C4
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 3
		call	sub_4017EE
		add	esi, 0A3h
		push	eax
		push	esi
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+44h+var_24]
		mov	[esp+44h+var_4], edi
		call	sub_401226
		mov	ecx, [esp+44h+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
sub_40D210	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 60h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40D3C0:				; CODE XREF: ___:004013CFj
		sub	esp, 104h
		lea	eax, [esp+0]
		push	104h
		push	eax
		push	0
		nop
		call	near ptr 2871C55h
		push	eax
		nop
		call	near ptr 2871186h
		mov	eax, dword_449070
		test	eax, eax
		jz	loc_40D4E3
		mov	ecx, dword_44906C
		test	ecx, ecx
		jz	loc_40D4E3
		mov	ecx, dword_448F38
		test	ecx, ecx
		jz	loc_40D4E3
		push	0
		push	2
		call	eax
		cmp	eax, 0FFFFFFFFh
		mov	dword_449068, eax
		jz	loc_40D4E3
		push	ebp
		push	offset dword_448F40
		push	eax
		xor	ebp, ebp
		mov	dword_448F40, 128h
		call	dword_44906C
		test	eax, eax
		jz	loc_40D4CC
		push	ebx
		mov	ebx, [esp+110h]
		push	esi
		mov	esi, dword_511AE0
		push	edi


loc_40D44D:				; CODE XREF: ___:0040D4C7j
		mov	edi, offset dword_448F64
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [esp+10h]
		repne scasb
		not	ecx
		dec	ecx
		mov	edi, offset dword_448F64
		push	ecx
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		lea	edi, [esp+14h]
		sub	edx, ecx
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		push	offset dword_448F64
		add	edx, ecx
		push	edx
		call	esi
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40D4B3
		mov	edi, offset dword_448F64
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	offset dword_448F64
		mov	ecx, ebx
		call	sub_40168B
		push	eax
		call	esi
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40D4B4


loc_40D4B3:				; CODE XREF: ___:0040D48Bj
		inc	ebp


loc_40D4B4:				; CODE XREF: ___:0040D4B1j
		mov	eax, dword_449068
		push	offset dword_448F40
		push	eax
		call	dword_448F38
		test	eax, eax
		jnz	short loc_40D44D
		pop	edi
		pop	esi
		pop	ebx


loc_40D4CC:				; CODE XREF: ___:0040D437j
		mov	ecx, dword_449068
		push	ecx
		nop
		call	near ptr 2830608h
		mov	eax, ebp
		pop	ebp
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------


loc_40D4E3:				; CODE XREF: ___:0040D3E6j
					; ___:0040D3F4j ...
		xor	eax, eax
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40D540:				; CODE XREF: ___:00401FAFj
		sub	esp, 11Ch
		lea	eax, [esp+18h]
		push	ebx
		push	esi
		push	edi
		push	104h
		push	eax
		nop
		call	near ptr 2880BB2h
		mov	edi, offset dword_444AF8
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [esp+24h]
		repne scasb
		not	ecx
		sub	edi, ecx
		push	eax
		mov	esi, edi
		mov	ebx, ecx
		mov	edi, edx
		or	ecx, 0FFFFFFFFh
		repne scasb
		mov	ecx, ebx
		dec	edi
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		push	80h
		and	ecx, 3
		push	3
		push	eax
		push	1
		rep movsb
		mov	edi, dword_5118F0
		lea	eax, [esp+38h]
		push	80000000h
		push	eax
		call	edi
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40D606
		lea	ecx, [esp+1Ch]
		lea	edx, [esp+0Ch]
		push	ecx
		lea	eax, [esp+18h]
		push	edx
		push	eax
		push	esi
		nop
		call	near ptr 2880769h
		mov	ebx, dword_5118E0
		push	esi
		call	ebx
		mov	ecx, [esp+12Ch]
		push	0
		push	80h
		push	3
		push	0
		push	2
		push	40000000h
		push	ecx
		call	edi
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40D606
		lea	edx, [esp+1Ch]
		lea	eax, [esp+0Ch]
		push	edx
		lea	ecx, [esp+18h]
		push	eax
		push	ecx
		push	esi
		nop
		call	near ptr 2880000h
		push	esi
		call	ebx


loc_40D606:				; CODE XREF: ___:0040D5A9j
					; ___:0040D5EBj
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 11Ch
		retn	4
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 40h dup(0CCh)

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



sub_40D660	proc near		; CODE XREF: sub_401B6Dj

var_19C		= byte ptr -19Ch
var_184		= byte ptr -184h
var_16C		= byte ptr -16Ch
var_154		= byte ptr -154h
var_124		= word ptr -124h
var_110		= byte ptr -110h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	0FFFFFFFFh
		push	offset SEH_40D660
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 190h
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+1A8h+var_16C]
		call	sub_40142E
		push	104h
		push	104h
		lea	ecx, [esp+1B0h+var_16C]
		mov	[esp+1B0h+var_4], 0
		call	sub_401C71
		push	eax
		nop
		call	near ptr 27E0000h
		lea	ecx, [esp+1A8h+var_16C]
		call	sub_4017EE
		push	eax
		lea	ecx, [esi+4]
		call	sub_4015E1
		lea	ecx, [esp+1A8h+var_184]
		call	sub_40142E
		mov	ebx, 1
		push	104h
		push	104h
		lea	ecx, [esp+1B0h+var_184]
		mov	byte ptr [esp+1B0h+var_4], bl
		call	sub_401C71
		push	eax
		push	0
		nop
		call	near ptr 2871C55h
		push	eax
		call	near ptr 2871186h
		nop
		push	offset dword_444B78
		nop
		call	near ptr 27D0866h
		mov	esi, eax
		test	esi, esi
		jz	short loc_40D751
		mov	edi, dword_511918
		push	offset dword_444B5C
		push	esi
		call	edi
		push	offset dword_444B3C
		push	esi
		mov	dword_449074, eax
		call	edi
		push	offset dword_444B28
		push	esi
		mov	dword_449070, eax
		call	edi
		push	offset dword_444B18
		push	esi
		mov	dword_44906C, eax
		call	edi
		mov	dword_448F38, eax
		mov	eax, dword_449074
		test	eax, eax
		jz	short loc_40D751
		push	ebx
		push	0
		call	eax


loc_40D751:				; CODE XREF: sub_40D660+A7j
					; sub_40D660+EAj
		mov	esi, [esp+1A8h+arg_0]
		push	0
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+1B0h+var_184]
		call	sub_402135
		test	eax, eax
		jnz	short loc_40D788
		mov	al, byte_44915F
		test	al, al
		jz	short loc_40D788
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4


loc_40D788:				; CODE XREF: sub_40D660+10Dj
					; sub_40D660+116j
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	46h
		push	47h
		push	12h
		push	10h
		push	10h
		push	0Eh
		push	9
		lea	eax, [esp+1D8h+var_19C]
		push	17h
		push	eax
		call	sub_4019C4
		add	esp, 38h
		mov	ecx, eax
		mov	byte ptr [esp+1A8h+var_4], 2
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+1A8h+var_19C]
		mov	byte ptr [esp+1A8h+var_4], bl
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	14h
		push	13h
		push	0Fh
		push	8
		push	0Ch
		push	0Ch
		lea	ecx, [esp+1D4h+var_19C]
		push	4
		push	ecx
		call	sub_4019C4
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+1A8h+var_4], 3
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+1A8h+var_19C]
		mov	byte ptr [esp+1A8h+var_4], bl
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	4
		push	10h
		push	14h
		push	6
		lea	edx, [esp+1CCh+var_19C]
		push	14h
		push	edx
		call	sub_4019C4
		add	esp, 2Ch
		mov	ecx, eax
		mov	byte ptr [esp+1A8h+var_4], 4
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+1A8h+var_19C]
		mov	byte ptr [esp+1A8h+var_4], bl
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	14h
		push	13h
		push	ebx
		push	0Ch
		push	2
		push	13h
		lea	eax, [esp+1D4h+var_19C]
		push	0Dh
		push	eax
		call	sub_4019C4
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+1A8h+var_4], 5
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+1A8h+var_19C]
		mov	byte ptr [esp+1A8h+var_4], bl
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	46h
		push	47h
		push	13h
		push	9
		push	0Eh
		push	5
		lea	ecx, [esp+1D4h+var_19C]
		push	10h
		push	ecx
		call	sub_4019C4
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+1A8h+var_4], 6
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+1A8h+var_19C]
		mov	byte ptr [esp+1A8h+var_4], bl
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Eh
		push	8
		push	3
		push	14h
		push	ebx
		push	10h
		push	13h
		lea	edx, [esp+1D4h+var_19C]
		push	0Dh
		push	edx
		call	sub_4019C4
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+1A8h+var_4], 7
		call	sub_4017EE
		push	eax
		call	sub_401604
		add	esp, 4
		lea	ecx, [esp+1A8h+var_19C]
		mov	byte ptr [esp+1A8h+var_4], bl
		call	sub_401226
		lea	eax, [esp+1A8h+var_16C]
		push	0
		push	eax
		lea	ecx, [esp+1B0h+var_184]
		call	sub_401816
		test	eax, eax
		jnz	loc_40DA80
		push	ebp
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		push	5Ch
		lea	ecx, [esp+1B4h+var_16C]
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+1B8h+var_110]
		push	offset dword_444B10
		push	ecx
		nop
		call	near ptr byte_5FC011
		mov	edi, dword_5118AC
		add	esp, 14h
		call	edi
		lea	edx, [esp+1ACh+var_110]
		push	0
		push	edx
		lea	ecx, [esp+1B4h+var_184]
		mov	ebp, eax
		call	sub_40168B
		mov	esi, dword_511914
		push	eax
		call	esi
		test	eax, eax
		jnz	short loc_40D9EF


loc_40D9BF:				; CODE XREF: sub_40D660+38Dj
		call	edi
		sub	eax, ebp
		cmp	eax, 61A8h
		jnb	short loc_40D9EF
		push	7D0h
		nop
		call	near ptr 2821D1Ah
		lea	eax, [esp+1ACh+var_110]
		push	0
		push	eax
		lea	ecx, [esp+1B4h+var_184]
		call	sub_40168B
		push	eax
		call	esi
		test	eax, eax
		jz	short loc_40D9BF


loc_40D9EF:				; CODE XREF: sub_40D660+35Dj
					; sub_40D660+368j
		mov	al, byte_4497BB
		pop	ebp
		test	al, al
		jz	short loc_40DA32
		mov	esi, dword_511AD8
		push	104h
		lea	ecx, [esp+1ACh+var_110]
		push	offset dword_444B08
		push	ecx
		call	esi
		add	esp, 0Ch
		lea	ecx, [esp+1A8h+var_184]
		push	104h
		call	sub_4017EE
		lea	edx, [esp+1ACh+var_110]
		push	eax
		push	edx
		call	esi
		add	esp, 0Ch


loc_40DA32:				; CODE XREF: sub_40D660+397j
		mov	ecx, 11h
		xor	eax, eax
		lea	edi, [esp+1A8h+var_154]
		lea	edx, [esp+1A8h+var_110]
		rep stosd
		mov	[esp+1A8h+var_124], ax
		lea	eax, [esp+1A8h+var_19C]
		lea	ecx, [esp+1A8h+var_154]
		push	eax
		push	ecx
		push	0
		push	0
		push	28h
		push	ebx
		push	0
		push	0
		push	edx
		push	0
		mov	dword ptr [esp+1D0h+var_154], 44h
		nop
		call	near ptr 27E042Eh
		test	eax, eax
		jz	short loc_40DA80
		push	0
		nop
		call	near ptr 77C39E7Eh


loc_40DA80:				; CODE XREF: sub_40D660+304j
					; sub_40D660+416j
		lea	ecx, [esp+1A8h+var_184]
		mov	byte ptr [esp+1A8h+var_4], 0
		call	sub_401226
		lea	ecx, [esp+1A8h+var_16C]
		mov	[esp+1A8h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+1A8h+var_C]
		pop	edi
		mov	al, bl
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 19Ch
		retn	4
sub_40D660	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 120h	dup(0CCh)

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



sub_40DBF0	proc near		; CODE XREF: sub_401195j
		mov	al, byte_449161
		test	al, al
		jz	short loc_40DC04
		push	offset word_449162
		nop
		call	near ptr 27D0C02h


loc_40DC04:				; CODE XREF: sub_40DBF0+7j
		mov	al, 1
		retn
sub_40DBF0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

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



sub_40DC20	proc near		; CODE XREF: sub_401E79j

var_6D0		= dword	ptr -6D0h
var_6CC		= dword	ptr -6CCh
var_6C8		= dword	ptr -6C8h
var_6C4		= dword	ptr -6C4h
var_6C0		= dword	ptr -6C0h
var_6BC		= dword	ptr -6BCh
var_6B8		= dword	ptr -6B8h
var_6B4		= dword	ptr -6B4h
var_6B0		= byte ptr -6B0h
var_6AC		= byte ptr -6ACh
var_694		= byte ptr -694h
var_67C		= byte ptr -67Ch
var_664		= byte ptr -664h
var_64C		= byte ptr -64Ch
var_634		= byte ptr -634h
var_61C		= byte ptr -61Ch
var_604		= byte ptr -604h
var_5EC		= byte ptr -5ECh
var_5D4		= byte ptr -5D4h
var_5BC		= byte ptr -5BCh
var_5A4		= byte ptr -5A4h
var_58C		= byte ptr -58Ch
var_574		= byte ptr -574h
var_564		= dword	ptr -564h
var_534		= word ptr -534h
var_520		= byte ptr -520h
var_41C		= byte ptr -41Ch
var_318		= byte ptr -318h
var_214		= byte ptr -214h
var_110		= byte ptr -110h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40DC20
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 6C4h
		push	esi
		lea	eax, [esp+6D4h+var_41C]
		push	104h
		push	eax
		push	0
		nop
		call	near ptr 2871C55h
		push	eax
		nop
		call	near ptr 2871186h
		lea	ecx, [esp+6D4h+var_318]
		push	ecx
		push	104h
		call	near ptr 27C0000h
		nop
		push	0
		push	14h
		push	1
		push	2
		push	4Fh
		push	0Fh
		push	12h
		push	6
		lea	edx, [esp+6F4h+var_5EC]
		push	1
		push	edx
		call	sub_4019C4
		add	esp, 28h
		mov	ecx, eax
		mov	[esp+6D4h+var_4], 0
		call	sub_4017EE
		push	eax
		lea	eax, [esp+6D8h+var_318]
		push	eax
		lea	ecx, [esp+6DCh+var_520]
		push	offset dword_444684
		push	ecx
		nop
		call	near ptr byte_5FC011
		add	esp, 10h
		lea	ecx, [esp+6D4h+var_5EC]
		mov	[esp+6D4h+var_4], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	0
		push	2
		push	0
		push	0
		lea	edx, [esp+6E8h+var_520]
		push	40000000h
		push	edx
		call	near ptr 2850000h
		nop
		mov	esi, eax
		test	esi, esi
		jbe	loc_40E178
		push	ebx
		push	ebp
		push	edi
		lea	ecx, [esp+6E0h+var_6AC]
		call	sub_40142E
		push	0
		push	14h
		push	1
		push	2
		lea	eax, [esp+6F0h+var_604]
		push	4Fh
		push	eax
		mov	[esp+6F8h+var_4], 1
		call	sub_4019C4
		mov	edi, eax
		push	0
		push	39h
		push	10h
		push	0Dh
		push	5
		push	14h
		push	39h
		push	4Eh
		push	0Ch
		push	5
		lea	ecx, [esp+720h+var_634]
		push	4
		push	ecx
		mov	byte ptr [esp+728h+var_4], 2
		call	sub_4019C4
		add	esp, 48h
		mov	ebp, eax
		push	0
		push	14h
		push	1
		push	2
		lea	edx, [esp+6F0h+var_664]
		push	4Fh
		push	edx
		mov	byte ptr [esp+6F8h+var_4], 3
		call	sub_4019C4
		mov	ebx, eax
		push	0
		push	39h
		push	10h
		push	0Dh
		push	5
		push	14h
		push	39h
		push	4Eh
		push	20h
		push	52h
		push	4Eh
		push	0Ch
		push	5
		lea	eax, [esp+72Ch+var_67C]
		push	4
		push	eax
		mov	byte ptr [esp+734h+var_4], 4
		call	sub_4019C4
		add	esp, 54h
		mov	[esp+6E0h+var_6B4], eax
		push	0
		push	5
		push	0Eh
		push	0Fh
		push	4
		lea	ecx, [esp+6F4h+var_61C]
		push	53h
		push	ecx
		mov	byte ptr [esp+6FCh+var_4], 5
		call	sub_4019C4
		mov	[esp+6FCh+var_6C8], eax
		mov	byte ptr [esp+6FCh+var_4], 6
		push	0
		push	14h
		push	12h
		push	1
		push	14h
		push	13h
		push	4Eh
		push	0Fh
		push	14h
		push	0Fh
		lea	edx, [esp+724h+var_5D4]
		push	7
		push	edx
		call	sub_4019C4
		add	esp, 4Ch
		mov	[esp+6E0h+var_6B8], eax
		push	0
		push	54h
		push	54h
		push	45h
		push	39h
		push	54h
		push	54h
		push	4Eh
		push	0Ch
		push	5
		lea	eax, [esp+708h+var_5A4]
		push	4
		push	eax
		mov	byte ptr [esp+710h+var_4], 7
		call	sub_4019C4
		mov	[esp+710h+var_6C0], eax
		push	0
		push	54h
		push	54h
		push	45h
		push	39h
		push	54h
		push	54h
		push	4Eh
		push	20h
		push	52h
		push	4Eh
		push	0Ch
		push	5
		lea	ecx, [esp+744h+var_58C]
		push	4
		push	ecx
		mov	byte ptr [esp+74Ch+var_4], 8
		call	sub_4019C4
		add	esp, 6Ch
		mov	[esp+6E0h+var_6D0], eax
		push	0
		push	5
		push	0Eh
		push	0Fh
		push	4
		push	4Eh
		push	0Fh
		push	14h
		push	0Fh
		push	7
		push	4Eh
		push	54h
		push	54h
		push	45h
		push	39h
		push	54h
		push	54h
		push	4Eh
		push	14h
		push	13h
		push	9
		push	18h
		push	5
		push	4Eh
		push	14h
		mov	byte ptr [esp+744h+var_4], 9
		push	0Fh
		push	0Eh
		push	4Eh
		push	6
		lea	edx, [esp+754h+var_694]
		push	9
		push	edx
		call	sub_4019C4
		mov	[esp+75Ch+var_6CC], eax
		push	0
		push	14h
		push	12h
		push	1
		push	14h
		push	13h
		lea	eax, [esp+774h+var_5BC]
		push	53h
		push	eax
		mov	byte ptr [esp+77Ch+var_4], 0Ah
		call	sub_4019C4
		add	esp, 9Ch
		mov	[esp+6E0h+var_6C4], eax
		push	0
		push	6
		push	6
		push	0Fh
		push	4Eh
		push	0Fh
		push	8
		push	3
		push	5
		lea	ecx, [esp+704h+var_64C]
		push	56h
		push	ecx
		mov	byte ptr [esp+70Ch+var_4], 0Bh
		call	sub_4019C4
		add	esp, 2Ch
		mov	[esp+6E0h+var_6BC], eax
		mov	ecx, edi
		mov	byte ptr [esp+6E0h+var_4], 0Ch
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4017EE
		mov	ecx, [esp+6E8h+var_6B4]
		push	eax
		call	sub_4017EE
		mov	ecx, [esp+6ECh+var_6C8]
		push	eax
		call	sub_4017EE
		mov	ecx, [esp+6F0h+var_6B8]
		push	eax
		call	sub_4017EE
		mov	ecx, [esp+6F4h+var_6C0]
		push	eax
		call	sub_4017EE
		mov	ecx, [esp+6F8h+var_6D0]
		push	eax
		call	sub_4017EE
		mov	ecx, [esp+6FCh+var_6CC]
		push	eax
		call	sub_4017EE
		mov	ecx, [esp+700h+var_6C4]
		push	eax
		call	sub_4017EE
		mov	ecx, [esp+704h+var_6BC]
		push	eax
		call	sub_4017EE
		push	eax
		lea	edx, [esp+70Ch+var_6AC]
		push	offset dword_444BA4
		push	edx
		call	sub_40102D
		add	esp, 34h
		mov	byte ptr [esp+6E0h+var_4], 0Bh
		lea	ecx, [esp+6E0h+var_64C]
		call	sub_401226
		lea	ecx, [esp+6E0h+var_5BC]
		mov	byte ptr [esp+6E0h+var_4], 0Ah
		call	sub_401226
		lea	ecx, [esp+6E0h+var_694]
		mov	byte ptr [esp+6E0h+var_4], 9
		call	sub_401226
		lea	ecx, [esp+6E0h+var_58C]
		mov	byte ptr [esp+6E0h+var_4], 8
		call	sub_401226
		lea	ecx, [esp+6E0h+var_5A4]
		mov	byte ptr [esp+6E0h+var_4], 7
		call	sub_401226
		lea	ecx, [esp+6E0h+var_5D4]
		mov	byte ptr [esp+6E0h+var_4], 6
		call	sub_401226
		lea	ecx, [esp+6E0h+var_61C]
		mov	byte ptr [esp+6E0h+var_4], 5
		call	sub_401226
		lea	ecx, [esp+6E0h+var_67C]
		mov	byte ptr [esp+6E0h+var_4], 4
		call	sub_401226
		lea	ecx, [esp+6E0h+var_664]
		mov	byte ptr [esp+6E0h+var_4], 3
		call	sub_401226
		lea	ecx, [esp+6E0h+var_634]
		mov	byte ptr [esp+6E0h+var_4], 2
		call	sub_401226
		lea	ecx, [esp+6E0h+var_604]
		mov	byte ptr [esp+6E0h+var_4], 1
		call	sub_401226
		lea	eax, [esp+6E0h+var_6B0]
		push	0
		push	eax
		push	69h
		lea	ecx, [esp+6ECh+var_6AC]
		call	sub_4017EE
		push	eax
		push	esi
		nop
		call	near ptr 27D0000h
		push	esi
		nop
		call	near ptr 2830608h
		mov	ecx, 11h
		xor	eax, eax
		lea	edi, [esp+6E0h+var_564]
		push	104h
		rep stosd
		lea	ecx, [esp+6E4h+var_41C]
		mov	[esp+6E4h+var_564], 44h
		push	ecx
		push	eax
		mov	[esp+6ECh+var_534], ax
		call	near ptr 2871C55h
		nop
		push	eax
		call	near ptr 2871186h
		nop
		lea	edx, [esp+6E0h+var_41C]
		lea	eax, [esp+6E0h+var_520]
		push	edx
		push	eax
		lea	ecx, [esp+6E8h+var_214]
		push	offset dword_444B88
		push	ecx
		nop
		call	near ptr byte_5FC011
		add	esp, 10h
		lea	edx, [esp+6E0h+var_110]
		lea	eax, [esp+6E0h+var_214]
		push	104h
		push	edx
		push	eax
		nop
		call	near ptr 27F0000h
		lea	ecx, [esp+6E0h+var_574]
		lea	edx, [esp+6E0h+var_564]
		push	ecx
		push	edx
		push	0
		push	0
		push	28h
		push	1
		push	0
		push	0
		lea	eax, [esp+700h+var_110]
		push	eax
		push	0
		nop
		call	near ptr 27E042Eh
		lea	ecx, [esp+6E0h+var_6AC]
		mov	[esp+6E0h+var_4], 0FFFFFFFFh
		call	sub_401226
		pop	edi
		pop	ebp
		pop	ebx
		mov	al, 1
		pop	esi
		mov	ecx, [esp+6D0h+var_C]
		mov	large fs:0, ecx
		add	esp, 6D0h
		retn
; ---------------------------------------------------------------------------


loc_40E178:				; CODE XREF: sub_40DC20+D6j
		mov	ecx, [esp+6D4h+var_C]
		mov	al, 1
		pop	esi
		mov	large fs:0, ecx
		add	esp, 6D0h
		retn
sub_40DC20	endp

; ---------------------------------------------------------------------------
		db 160h	dup(0CCh)

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



sub_40E2F0	proc near		; CODE XREF: sub_401730j

var_70		= dword	ptr -70h
var_6C		= byte ptr -6Ch
var_54		= byte ptr -54h
var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	0FFFFFFFFh
		push	offset SEH_40E2F0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 64h
		push	ebx
		push	ebp
		push	esi
		push	edi
		lea	ecx, [esp+80h+var_54]
		call	sub_40142E
		lea	ecx, [esp+80h+var_6C]
		mov	[esp+80h+var_4], 0
		call	sub_40142E
		lea	ecx, [esp+80h+var_3C]
		mov	byte ptr [esp+80h+var_4], 1
		call	sub_40142E
		push	0
		push	5
		push	3
		push	0Eh
		push	29h
		push	0Eh
		push	15h
		push	2Ch
		push	50h
		push	0Eh
		push	0Fh
		push	9
		push	13h
		push	12h
		push	5
		push	30h
		push	14h
		push	0Eh
		push	5
		push	12h
		push	12h
		push	15h
		push	1Dh
		push	50h
		push	13h
		push	17h
		push	0Fh
		push	4
		push	0Eh
		push	9
		push	31h
		push	50h
		push	14h
		push	6
		push	0Fh
		push	13h
		push	0Fh
		push	12h
		push	3
		push	9
		push	27h
		push	50h
		push	5
		push	12h
		push	1
		push	17h
		push	14h
		push	6
		push	0Fh
		lea	eax, [esp+144h+var_24]
		mov	bl, 2
		push	2Dh
		push	eax
		mov	byte ptr [esp+14Ch+var_4], bl
		call	sub_4019C4
		add	esp, 0CCh
		push	eax
		lea	ecx, [esp+84h+var_6C]
		mov	byte ptr [esp+84h+var_4], 3
		call	sub_40202C
		lea	ecx, [esp+80h+var_24]
		mov	byte ptr [esp+80h+var_4], bl
		call	sub_401226
		push	0
		push	13h
		push	5
		push	3
		push	9
		push	16h
		push	12h
		push	5
		push	2Dh
		push	0Eh
		push	15h
		push	2Ch
		push	50h
		push	0Eh
		push	0Fh
		push	9
		push	13h
		push	12h
		push	5
		push	30h
		push	14h
		push	0Eh
		push	5
		push	12h
		push	12h
		push	15h
		push	1Dh
		push	50h
		push	13h
		push	17h
		push	0Fh
		push	4
		push	0Eh
		push	9
		push	31h
		push	50h
		push	14h
		push	6
		push	0Fh
		push	13h
		push	0Fh
		push	12h
		push	3
		push	9
		push	27h
		push	50h
		push	5
		push	12h
		push	1
		push	17h
		push	14h
		push	6
		push	0Fh
		lea	ecx, [esp+154h+var_24]
		push	2Dh
		push	ecx
		call	sub_4019C4
		add	esp, 0DCh
		push	eax
		lea	ecx, [esp+84h+var_3C]
		mov	byte ptr [esp+84h+var_4], 4
		call	sub_40202C
		lea	ecx, [esp+80h+var_24]
		mov	byte ptr [esp+80h+var_4], bl
		call	sub_401226
		push	0
		push	0Eh
		push	15h
		push	2Ch
		push	50h
		push	0Eh
		push	0Fh
		push	9
		push	13h
		push	12h
		push	5
		push	30h
		push	14h
		push	0Eh
		push	5
		push	12h
		push	12h
		push	15h
		push	1Dh
		push	50h
		push	13h
		push	17h
		push	0Fh
		push	4
		push	0Eh
		push	9
		push	31h
		push	50h
		push	14h
		push	6
		push	0Fh
		push	13h
		push	0Fh
		push	12h
		push	3
		push	9
		push	27h
		push	50h
		push	5
		push	12h
		push	1
		push	17h
		push	14h
		push	6
		push	0Fh
		lea	edx, [esp+134h+var_24]
		push	2Dh
		push	edx
		call	sub_4019C4
		add	esp, 0BCh
		push	eax
		lea	ecx, [esp+84h+var_54]
		mov	byte ptr [esp+84h+var_4], 5
		call	sub_40202C
		lea	ecx, [esp+80h+var_24]
		mov	byte ptr [esp+80h+var_4], bl
		call	sub_401226
		lea	eax, [esp+80h+var_70]
		push	0
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		lea	ecx, [esp+9Ch+var_54]
		call	sub_4017EE
		mov	ebp, dword_51175C
		push	eax
		push	80000002h
		call	ebp
		mov	esi, [esp+80h+arg_4]
		mov	ecx, esi
		call	sub_40168B
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, esi
		call	sub_40168B
		mov	ebx, [esp+84h+arg_0]
		push	eax
		push	1
		push	0
		mov	ecx, ebx
		call	sub_40168B
		mov	ecx, [esp+90h+var_70]
		push	eax
		push	ecx
		nop
		call	near ptr 2930000h
		mov	edx, [esp+80h+var_70]
		push	edx
		call	near ptr 28F0000h
		nop
		push	0
		lea	eax, [esp+84h+var_70]
		lea	ecx, [esp+84h+var_6C]
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		call	sub_4017EE
		push	eax
		push	80000002h
		call	ebp
		mov	ecx, esi
		call	sub_40168B
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, esi
		call	sub_40168B
		push	eax
		push	1
		push	0
		mov	ecx, ebx
		call	sub_40168B
		mov	ecx, [esp+90h+var_70]
		push	eax
		push	ecx
		nop
		call	near ptr 2930000h
		mov	edx, [esp+80h+var_70]
		push	edx
		call	near ptr 28F0000h
		nop
		lea	eax, [esp+80h+var_70]
		push	0
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		lea	ecx, [esp+9Ch+var_54]
		call	sub_4017EE
		push	eax
		push	80000001h
		call	ebp
		mov	ecx, esi
		call	sub_40168B
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, esi
		call	sub_40168B
		push	eax
		push	1
		push	0
		mov	ecx, ebx
		call	sub_40168B
		mov	ecx, [esp+90h+var_70]
		push	eax
		push	ecx
		nop
		call	near ptr 2930000h
		mov	edx, [esp+80h+var_70]
		push	edx
		nop
		call	near ptr 28F0000h
		lea	eax, [esp+80h+var_70]
		push	0
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		lea	ecx, [esp+9Ch+var_6C]
		call	sub_4017EE
		push	eax
		push	80000001h
		call	ebp
		mov	ecx, esi
		call	sub_40168B
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, esi
		call	sub_40168B
		push	eax
		push	1
		push	0
		mov	ecx, ebx
		call	sub_40168B
		mov	ecx, [esp+90h+var_70]
		push	eax
		push	ecx
		nop
		call	near ptr 2930000h
		mov	edx, [esp+80h+var_70]
		push	edx
		nop
		call	near ptr 28F0000h
		lea	eax, [esp+80h+var_70]
		push	0
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		lea	ecx, [esp+9Ch+var_3C]
		call	sub_4017EE
		push	eax
		push	80000002h
		call	ebp
		mov	ecx, esi
		call	sub_40168B
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, esi
		call	sub_40168B
		push	eax
		push	1
		push	0
		mov	ecx, ebx
		call	sub_40168B
		mov	ecx, [esp+90h+var_70]
		push	eax
		push	ecx
		nop
		call	near ptr 2930000h
		mov	edx, [esp+80h+var_70]
		push	edx
		nop
		call	near ptr 28F0000h
		lea	ecx, [esp+80h+var_3C]
		mov	byte ptr [esp+80h+var_4], 1
		call	sub_401226
		lea	ecx, [esp+80h+var_6C]
		mov	byte ptr [esp+80h+var_4], 0
		call	sub_401226
		lea	ecx, [esp+80h+var_54]
		mov	[esp+80h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+80h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 70h
		retn	8
sub_40E2F0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 120h	dup(0CCh)

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



sub_40E870	proc near		; CODE XREF: sub_401451j

var_70		= dword	ptr -70h
var_6C		= byte ptr -6Ch
var_54		= byte ptr -54h
var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	0FFFFFFFFh
		push	offset SEH_40E870
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 64h
		push	ebx
		push	ebp
		push	esi
		push	edi
		lea	ecx, [esp+80h+var_6C]
		call	sub_40142E
		lea	ecx, [esp+80h+var_3C]
		mov	[esp+80h+var_4], 0
		call	sub_40142E
		lea	ecx, [esp+80h+var_54]
		mov	byte ptr [esp+80h+var_4], 1
		call	sub_40142E
		push	0
		push	5
		push	3
		push	0Eh
		push	29h
		push	0Eh
		push	15h
		push	2Ch
		push	50h
		push	0Eh
		push	0Fh
		push	9
		push	13h
		push	12h
		push	5
		push	30h
		push	14h
		push	0Eh
		push	5
		push	12h
		push	12h
		push	15h
		push	1Dh
		push	50h
		push	13h
		push	17h
		push	0Fh
		push	4
		push	0Eh
		push	9
		push	31h
		push	50h
		push	14h
		push	6
		push	0Fh
		push	13h
		push	0Fh
		push	12h
		push	3
		push	9
		push	27h
		push	50h
		push	5
		push	12h
		push	1
		push	17h
		push	14h
		push	6
		push	0Fh
		lea	eax, [esp+144h+var_24]
		mov	bl, 2
		push	2Dh
		push	eax
		mov	byte ptr [esp+14Ch+var_4], bl
		call	sub_4019C4
		add	esp, 0CCh
		push	eax
		lea	ecx, [esp+84h+var_3C]
		mov	byte ptr [esp+84h+var_4], 3
		call	sub_40202C
		lea	ecx, [esp+80h+var_24]
		mov	byte ptr [esp+80h+var_4], bl
		call	sub_401226
		push	0
		push	13h
		push	5
		push	3
		push	9
		push	16h
		push	12h
		push	5
		push	2Dh
		push	0Eh
		push	15h
		push	2Ch
		push	50h
		push	0Eh
		push	0Fh
		push	9
		push	13h
		push	12h
		push	5
		push	30h
		push	14h
		push	0Eh
		push	5
		push	12h
		push	12h
		push	15h
		push	1Dh
		push	50h
		push	13h
		push	17h
		push	0Fh
		push	4
		push	0Eh
		push	9
		push	31h
		push	50h
		push	14h
		push	6
		push	0Fh
		push	13h
		push	0Fh
		push	12h
		push	3
		push	9
		push	27h
		push	50h
		push	5
		push	12h
		push	1
		push	17h
		push	14h
		push	6
		push	0Fh
		lea	ecx, [esp+154h+var_24]
		push	2Dh
		push	ecx
		call	sub_4019C4
		add	esp, 0DCh
		push	eax
		lea	ecx, [esp+84h+var_54]
		mov	byte ptr [esp+84h+var_4], 4
		call	sub_40202C
		lea	ecx, [esp+80h+var_24]
		mov	byte ptr [esp+80h+var_4], bl
		call	sub_401226
		push	0
		push	0Eh
		push	15h
		push	2Ch
		push	50h
		push	0Eh
		push	0Fh
		push	9
		push	13h
		push	12h
		push	5
		push	30h
		push	14h
		push	0Eh
		push	5
		push	12h
		push	12h
		push	15h
		push	1Dh
		push	50h
		push	13h
		push	17h
		push	0Fh
		push	4
		push	0Eh
		push	9
		push	31h
		push	50h
		push	14h
		push	6
		push	0Fh
		push	13h
		push	0Fh
		push	12h
		push	3
		push	9
		push	27h
		push	50h
		push	5
		push	12h
		push	1
		push	17h
		push	14h
		push	6
		push	0Fh
		lea	edx, [esp+134h+var_24]
		push	2Dh
		push	edx
		call	sub_4019C4
		add	esp, 0BCh
		push	eax
		lea	ecx, [esp+84h+var_6C]
		mov	byte ptr [esp+84h+var_4], 5
		call	sub_40202C
		lea	ecx, [esp+80h+var_24]
		mov	byte ptr [esp+80h+var_4], bl
		call	sub_401226
		lea	eax, [esp+80h+var_70]
		push	0
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		lea	ecx, [esp+9Ch+var_6C]
		call	sub_4017EE
		mov	esi, dword_51175C
		push	eax
		push	80000002h
		call	esi
		mov	edi, [esp+80h+arg_0]
		mov	ecx, edi
		call	sub_40168B
		mov	ecx, [esp+80h+var_70]
		mov	ebp, dword_51176C
		push	eax
		push	ecx
		call	ebp
		mov	edx, [esp+80h+var_70]
		mov	ebx, dword_511740
		push	edx
		call	ebx
		lea	eax, [esp+80h+var_70]
		push	0
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		lea	ecx, [esp+9Ch+var_54]
		call	sub_4017EE
		push	eax
		push	80000002h
		call	esi
		mov	ecx, edi
		call	sub_40168B
		mov	ecx, [esp+80h+var_70]
		push	eax
		push	ecx
		call	ebp
		mov	edx, [esp+80h+var_70]
		push	edx
		call	ebx
		lea	eax, [esp+80h+var_70]
		push	0
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		lea	ecx, [esp+9Ch+var_6C]
		call	sub_4017EE
		push	eax
		push	80000002h
		call	esi
		mov	ecx, edi
		call	sub_40168B
		mov	ecx, [esp+80h+var_70]
		push	eax
		push	ecx
		call	ebp
		mov	edx, [esp+80h+var_70]
		push	edx
		call	ebx
		lea	eax, [esp+80h+var_70]
		push	0
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		lea	ecx, [esp+9Ch+var_6C]
		call	sub_4017EE
		push	eax
		push	80000001h
		call	esi
		mov	ecx, edi
		call	sub_40168B
		mov	ecx, [esp+80h+var_70]
		push	eax
		push	ecx
		call	ebp
		mov	edx, [esp+80h+var_70]
		push	edx
		call	ebx
		lea	eax, [esp+80h+var_70]
		push	0
		push	eax
		push	0
		push	0F003Fh
		push	0
		push	0
		push	0
		lea	ecx, [esp+9Ch+var_3C]
		call	sub_4017EE
		push	eax
		push	80000001h
		call	esi
		mov	ecx, edi
		call	sub_40168B
		mov	ecx, [esp+80h+var_70]
		push	eax
		push	ecx
		call	ebp
		mov	edx, [esp+80h+var_70]
		push	edx
		call	ebx
		lea	ecx, [esp+80h+var_54]
		mov	byte ptr [esp+80h+var_4], 1
		call	sub_401226
		lea	ecx, [esp+80h+var_3C]
		mov	byte ptr [esp+80h+var_4], 0
		call	sub_401226
		mov	[esp+80h+var_4], 0FFFFFFFFh
		lea	ecx, [esp+80h+var_6C]
		call	sub_401226
		mov	ecx, [esp+80h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 70h
		retn	4
sub_40E870	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 0F0h	dup(0CCh)

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



sub_40ED00	proc near		; CODE XREF: sub_4014A1j

var_54		= byte ptr -54h
var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	0FFFFFFFFh
		push	offset SEH_40ED00
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 48h
		push	ebx
		push	esi
		mov	esi, ecx
		lea	ecx, [esp+5Ch+var_24]
		call	sub_40142E
		push	104h
		push	104h
		lea	ecx, [esp+64h+var_24]
		mov	[esp+64h+var_4], 0
		call	sub_401C71
		push	eax
		nop
		call	near ptr 27E0000h
		lea	ecx, [esp+5Ch+var_3C]
		call	sub_40142E
		mov	ecx, [esp+5Ch+arg_4]
		mov	byte ptr [esp+5Ch+var_4], 1
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+60h+var_24]
		call	sub_4017EE
		push	eax
		lea	eax, [esp+64h+var_3C]
		push	offset dword_444684
		push	eax
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+5Ch+var_54]
		call	sub_40142E
		lea	ecx, [esp+5Ch+var_54]
		push	offset dword_4447D4
		push	ecx
		mov	byte ptr [esp+64h+var_4], 2
		call	sub_40102D
		mov	ecx, [esp+64h+arg_0]
		add	esp, 8
		lea	edx, [esp+5Ch+var_54]
		lea	eax, [esp+5Ch+var_3C]
		push	edx
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_402171
		lea	ecx, [esp+5Ch+var_54]
		mov	bl, al
		mov	byte ptr [esp+5Ch+var_4], 1
		call	sub_401226
		lea	ecx, [esp+5Ch+var_3C]
		mov	byte ptr [esp+5Ch+var_4], 0
		call	sub_401226
		lea	ecx, [esp+5Ch+var_24]
		mov	[esp+5Ch+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+5Ch+var_C]
		mov	al, bl
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 54h
		retn	8
sub_40ED00	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 40h dup(0CCh)

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



sub_40EE40	proc near		; CODE XREF: sub_402171j

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_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	0FFFFFFFFh
		push	offset SEH_40EE40
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 38h
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	0F003Fh
		push	offset dword_444BE0
		mov	[esp+5Ch+var_44], ecx
		push	0
		call	near ptr 28F07B5h
		nop
		mov	edi, eax
		test	edi, edi
		jnz	short loc_40EE7F
		xor	al, al
		jmp	loc_40EFD0
; ---------------------------------------------------------------------------


loc_40EE7F:				; CODE XREF: sub_40EE40+36j
		lea	ecx, [esp+54h+var_24]
		call	sub_40142E
		mov	ecx, [esp+54h+arg_8]
		mov	[esp+54h+var_4], 0
		call	sub_4017EE
		mov	ebx, [esp+54h+arg_4]
		push	eax
		mov	ecx, ebx
		call	sub_4017EE
		push	eax
		lea	eax, [esp+5Ch+var_24]
		push	offset dword_444BD4
		push	eax
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+54h+var_24]
		push	0
		push	0
		push	0
		push	0
		push	0
		call	sub_4017EE
		push	eax
		push	1
		push	2
		push	20h
		push	0F01FFh
		mov	ecx, offset dword_449834
		call	sub_4017EE
		mov	ebp, [esp+7Ch+arg_0]
		push	eax
		mov	ecx, ebp
		call	sub_4017EE
		push	eax
		push	edi
		call	near ptr 28F0BF4h
		nop
		mov	esi, eax
		xor	ecx, ecx
		cmp	esi, ecx
		jnz	short loc_40EF65
		call	near ptr 27B0778h
		nop
		cmp	eax, 431h
		jnz	short loc_40EF49
		mov	ecx, [esp+54h+var_44]
		push	ebp
		call	sub_401951
		mov	esi, dword_511754
		push	0
		call	esi
		push	edi
		call	esi
		mov	ecx, [esp+54h+var_44]
		push	ebx
		push	ebp
		call	sub_4014A1
		lea	ecx, [esp+54h+var_24]
		mov	bl, al
		mov	[esp+54h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	al, bl
		jmp	loc_40EFD0
; ---------------------------------------------------------------------------


loc_40EF49:				; CODE XREF: sub_40EE40+CBj
		push	edi
		nop
		call	near ptr 2900000h
		lea	ecx, [esp+54h+var_24]
		mov	[esp+54h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	al, al
		jmp	short loc_40EFD0
; ---------------------------------------------------------------------------


loc_40EF65:				; CODE XREF: sub_40EE40+BEj
		lea	edx, [esp+54h+var_38]
		mov	[esp+54h+var_34], ecx
		mov	dword ptr [esp+54h+var_30], ecx
		push	edx
		mov	eax, 1
		or	ebx, 0FFFFFFFFh
		lea	ecx, [esp+58h+var_40]
		push	2
		push	esi
		mov	[esp+60h+var_3C], eax
		mov	[esp+60h+var_40], eax
		mov	[esp+60h+var_38], ebx
		mov	[esp+60h+var_2C], eax
		mov	[esp+60h+var_28], ecx
		nop
		call	near ptr 2900254h
		test	eax, eax
		push	esi
		mov	esi, dword_511754
		jnz	short loc_40EFBC
		call	esi
		push	edi
		call	esi
		lea	ecx, [esp+54h+var_24]
		mov	[esp+54h+var_4], ebx
		call	sub_401226
		xor	al, al
		jmp	short loc_40EFD0
; ---------------------------------------------------------------------------


loc_40EFBC:				; CODE XREF: sub_40EE40+164j
		call	esi
		push	edi
		call	esi
		lea	ecx, [esp+54h+var_24]
		mov	[esp+54h+var_4], ebx
		call	sub_401226
		mov	al, 1


loc_40EFD0:				; CODE XREF: sub_40EE40+3Aj
					; sub_40EE40+104j ...
		mov	ecx, [esp+54h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 44h
		retn	0Ch
sub_40EE40	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 70h dup(0CCh)

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



sub_40F060	proc near		; CODE XREF: sub_401951j

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  4

		sub	esp, 1Ch
		push	esi
		push	edi
		push	0F003Fh
		push	offset dword_444BE0
		push	0
		nop
		call	near ptr 28F07B5h
		mov	edi, eax
		test	edi, edi
		jnz	short loc_40F087
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 1Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40F087:				; CODE XREF: sub_40F060+1Bj
		mov	ecx, [esp+24h+arg_0]
		push	0F01FFh
		call	sub_4017EE
		push	eax
		push	edi
		nop
		call	near ptr 2890AB0h
		mov	esi, eax
		test	esi, esi
		jnz	short loc_40F0B4
		push	edi
		nop
		call	near ptr 2900000h
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 1Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40F0B4:				; CODE XREF: sub_40F060+41j
		lea	eax, [esp+24h+var_1C]
		push	eax
		push	1
		push	esi
		call	near ptr 28F0451h
		nop
		push	esi
		nop
		call	near ptr 28F0695h
		push	esi
		mov	esi, dword_511754
		call	esi
		push	edi
		call	esi
		pop	edi
		mov	al, 1
		pop	esi
		add	esp, 1Ch
		retn	4
sub_40F060	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)

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



sub_40F100	proc near		; CODE XREF: sub_401FD2j

arg_0		= dword	ptr  4

		push	esi
		push	0F003Fh
		push	offset dword_444BE0
		push	0
		nop
		call	near ptr 28F07B5h
		mov	esi, eax
		test	esi, esi
		jnz	short loc_40F11F
		xor	al, al
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40F11F:				; CODE XREF: sub_40F100+17j
		mov	ecx, [esp+4+arg_0]
		push	0F01FFh
		call	sub_4017EE
		push	eax
		push	esi
		call	near ptr 2890AB0h
		nop
		test	eax, eax
		jnz	short loc_40F146
		push	esi
		call	near ptr 2900000h
		nop
		xor	al, al
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40F146:				; CODE XREF: sub_40F100+37j
		push	edi
		mov	edi, dword_511754
		push	eax
		call	edi
		push	esi
		call	edi
		pop	edi
		mov	al, 1
		pop	esi
		retn	4
sub_40F100	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

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



sub_40F180	proc near		; CODE XREF: sub_401FFAj

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	0F003Fh
		push	offset dword_444BE0
		push	0
		nop
		call	near ptr 28F07B5h
		mov	edi, eax
		test	edi, edi
		jnz	short loc_40F1A1
		pop	edi
		xor	al, al
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40F1A1:				; CODE XREF: sub_40F180+18j
		mov	ecx, [esp+8+arg_0]
		push	0F01FFh
		call	sub_4017EE
		push	eax
		push	edi
		nop
		call	near ptr 2890AB0h
		mov	esi, eax
		test	esi, esi
		jnz	short loc_40F1CB
		push	edi
		call	near ptr 2900000h
		nop
		pop	edi
		xor	al, al
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40F1CB:				; CODE XREF: sub_40F180+3Bj
		push	0
		push	0
		push	esi
		nop
		call	near ptr 28E0C7Dh
		push	esi
		mov	esi, dword_511754
		call	esi
		push	edi
		call	esi
		pop	edi
		mov	al, 1
		pop	esi
		retn	4
sub_40F180	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40F210:				; CODE XREF: ___:004014ABj
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset dword_43A348
		push	eax
		mov	large fs:0, esp
		sub	esp, 60h
		push	ebx
		push	esi
		mov	esi, [esp+78h]
		push	edi
		mov	edi, ecx
		lea	ebx, [esi+7Eh]
		lea	ecx, [edi+19h]
		call	sub_4014DD
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40F30A
		push	1
		push	offset dword_444600
		lea	eax, [esp+2Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4011EA
		push	1
		push	offset dword_444600
		lea	ecx, [esp+14h]
		push	2
		xor	ebx, ebx
		push	ecx
		mov	ecx, esi
		mov	[esp+84h], ebx
		call	sub_4011EA
		lea	edx, [esp+0Ch]
		lea	eax, [esp+24h]
		push	edx
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+7Ch], 1
		call	sub_401730
		test	al, al
		jz	short loc_40F2D6
		lea	ecx, [esp+0Ch]
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+28h]
		call	sub_4017EE
		push	eax
		push	offset dword_444C40
		lea	ecx, [esi+69h]
		call	sub_4014DD
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D8075
		call	sub_401857
		add	esp, 1Ch


loc_40F2D6:				; CODE XREF: ___:0040F297j
		lea	ecx, [esp+0Ch]
		mov	[esp+74h], bl
		call	sub_401226
		lea	ecx, [esp+24h]
		mov	dword ptr [esp+74h], 0FFFFFFFFh
		call	sub_401226
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebx
		mov	ecx, [esp+60h]
		mov	large fs:0, ecx
		add	esp, 6Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40F30A:				; CODE XREF: ___:0040F246j
		lea	ecx, [edi+47h]
		call	sub_4014DD
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40F3A9
		push	1
		push	offset dword_444600
		lea	eax, [esp+2Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4011EA
		lea	ecx, [esp+24h]
		mov	dword ptr [esp+74h], 2
		push	ecx
		mov	ecx, edi
		call	sub_401451
		test	al, al
		jz	short loc_40F382
		lea	ecx, [esp+24h]
		call	sub_4017EE
		push	eax
		push	offset dword_444C2C
		lea	ecx, [esi+69h]
		call	sub_4014DD
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D8075
		call	sub_401857
		add	esp, 18h


loc_40F382:				; CODE XREF: ___:0040F34Dj
		lea	ecx, [esp+24h]
		mov	dword ptr [esp+74h], 0FFFFFFFFh
		call	sub_401226
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebx
		mov	ecx, [esp+60h]
		mov	large fs:0, ecx
		add	esp, 6Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40F3A9:				; CODE XREF: ___:0040F31Cj
		lea	ecx, [edi+75h]
		call	sub_4014DD
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40F4BF
		push	1
		push	offset dword_444600
		lea	ecx, [esp+44h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4011EA
		push	1
		push	offset dword_444600
		lea	edx, [esp+14h]
		push	2
		push	edx
		mov	ecx, esi
		mov	dword ptr [esp+84h], 3
		call	sub_4011EA
		push	1
		push	offset dword_444600
		lea	eax, [esp+2Ch]
		mov	bl, 4
		push	3
		push	eax
		mov	ecx, esi
		mov	[esp+84h], bl
		call	sub_4011EA
		lea	ecx, [esp+24h]
		lea	edx, [esp+0Ch]
		push	ecx
		lea	eax, [esp+40h]
		push	edx
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+80h], 5
		call	sub_402171
		test	al, al
		jz	short loc_40F47D
		lea	ecx, [esp+24h]
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+10h]
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+44h]
		call	sub_4017EE
		push	eax
		push	offset dword_444C08
		lea	ecx, [esi+69h]
		call	sub_4014DD
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D8075
		call	sub_401857
		add	esp, 20h


loc_40F47D:				; CODE XREF: ___:0040F434j
		lea	ecx, [esp+24h]
		mov	[esp+74h], bl
		call	sub_401226
		lea	ecx, [esp+0Ch]
		mov	byte ptr [esp+74h], 3
		call	sub_401226
		lea	ecx, [esp+3Ch]
		mov	dword ptr [esp+74h], 0FFFFFFFFh
		call	sub_401226
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebx
		mov	ecx, [esp+60h]
		mov	large fs:0, ecx
		add	esp, 6Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40F4BF:				; CODE XREF: ___:0040F3BBj
		lea	ecx, [edi+0A3h]
		call	sub_4014DD
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40F561
		push	1
		push	offset dword_444600
		lea	eax, [esp+5Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4011EA
		lea	ecx, [esp+54h]
		mov	dword ptr [esp+74h], 6
		push	ecx
		mov	ecx, edi
		call	sub_401951
		test	al, al
		jz	short loc_40F53A
		lea	ecx, [esp+54h]
		call	sub_4017EE
		push	eax
		push	offset dword_444BF4
		lea	ecx, [esi+69h]
		call	sub_4014DD
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D8075
		call	sub_401857
		add	esp, 18h


loc_40F53A:				; CODE XREF: ___:0040F505j
		lea	ecx, [esp+54h]
		mov	dword ptr [esp+74h], 0FFFFFFFFh
		call	sub_401226
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebx
		mov	ecx, [esp+60h]
		mov	large fs:0, ecx
		add	esp, 6Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40F561:				; CODE XREF: ___:0040F4D4j
		mov	ecx, [esp+6Ch]
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 6Ch
		retn	4
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 0E0h	dup(0CCh)

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



sub_40F660	proc near		; CODE XREF: sub_401D16j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		push	ecx
		nop
		call	near ptr 77C2C407h
		mov	edx, eax
		mov	eax, [esp+0Ch+arg_0]
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		mov	[eax], edx
		xor	eax, eax
		add	esp, 4
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn
sub_40F660	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)

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



sub_40F6D0	proc near		; CODE XREF: sub_40169Fj

var_29		= byte ptr -29h
var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40F6D0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 20h
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esp+3Ch+var_28], esi
		call	sub_401E88
		lea	edi, [esi+11h]
		mov	[esp+3Ch+var_4], 0
		mov	ecx, edi
		call	sub_4011B3
		lea	ebp, [esi+28h]
		mov	ecx, ebp
		call	sub_40142E
		lea	ecx, [esi+3Dh]
		mov	byte ptr [esp+3Ch+var_4], 1
		call	sub_40142E
		lea	ecx, [esi+56h]
		mov	byte ptr [esp+3Ch+var_4], 2
		call	sub_401753
		lea	ecx, [esi+84h]
		mov	byte ptr [esp+3Ch+var_4], 3
		call	sub_401753
		lea	ecx, [esi+0B2h]
		mov	byte ptr [esp+3Ch+var_4], 4
		call	sub_401753
		lea	ecx, [esi+0E0h]
		mov	byte ptr [esp+3Ch+var_4], 5
		call	sub_401753
		lea	ecx, [esi+10Eh]
		mov	byte ptr [esp+3Ch+var_4], 6
		call	sub_401753
		lea	ecx, [esi+13Ch]
		mov	byte ptr [esp+3Ch+var_4], 7
		call	sub_401753
		lea	ecx, [esi+16Ah]
		mov	byte ptr [esp+3Ch+var_4], 8
		call	sub_401753
		lea	ecx, [esi+198h]
		mov	byte ptr [esp+3Ch+var_4], 9
		call	sub_401753
		lea	ecx, [esi+1C6h]
		mov	byte ptr [esp+3Ch+var_4], 0Ah
		call	sub_401753
		lea	ecx, [esi+1F4h]
		mov	byte ptr [esp+3Ch+var_4], 0Bh
		call	sub_401753
		lea	ecx, [esi+222h]
		mov	byte ptr [esp+3Ch+var_4], 0Ch
		call	sub_401753
		lea	ecx, [esi+250h]
		mov	byte ptr [esp+3Ch+var_4], 0Dh
		call	sub_401753
		lea	ecx, [esi+27Eh]
		mov	byte ptr [esp+3Ch+var_4], 0Eh
		call	sub_401753
		lea	ecx, [esi+2ACh]
		mov	byte ptr [esp+3Ch+var_4], 0Fh
		call	sub_401753
		lea	eax, [esp+3Ch+var_29]
		lea	ecx, [esi+2DAh]
		push	eax
		mov	byte ptr [esp+40h+var_4], 10h
		call	sub_40172B
		mov	dword ptr [edi], offset	dword_43F034
		mov	bl, 11h
		xor	edi, edi
		push	offset byte_448F30
		mov	ecx, ebp
		mov	byte ptr [esp+40h+var_4], bl
		mov	dword ptr [esi], offset	dword_43F028
		mov	byte ptr [esi+17h], 1
		mov	byte ptr [esi+15h], 0
		mov	byte ptr [esi+16h], 0
		mov	dword ptr [esi+18h], 0FFFFFFFFh
		mov	[esi+1Ch], edi
		mov	[esi+20h], edi
		call	sub_4015E1
		call	near ptr 27D0B1Ah
		nop
		push	edi
		push	21h
		push	28h
		push	23h
		lea	ecx, [esp+4Ch+var_24]
		push	2Ah
		push	ecx
		mov	[esi+24h], eax
		call	sub_4019C4
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 12h
		call	sub_4017EE
		push	eax
		push	offset dword_4490BC
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	1Fh
		push	1Dh
		push	23h
		push	2Eh
		push	29h
		lea	edx, [esp+54h+var_24]
		push	28h
		push	edx
		call	sub_4019C4
		add	esp, 20h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 13h
		call	sub_4017EE
		push	eax
		push	offset dword_4490C0
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	28h
		push	23h
		push	29h
		lea	eax, [esp+4Ch+var_24]
		push	24h
		push	eax
		call	sub_4019C4
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 14h
		call	sub_4017EE
		push	eax
		push	offset dword_4490C4
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	21h
		push	2Dh
		push	27h
		push	30h
		push	23h
		push	2Ch
		lea	ecx, [esp+58h+var_24]
		push	2Ah
		push	ecx
		call	sub_4019C4
		add	esp, 24h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 15h
		call	sub_4017EE
		push	eax
		push	offset dword_4490C8
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	2Eh
		push	2Dh
		push	29h
		push	22h
		push	2Ch
		push	1Fh
		push	2Dh
		lea	edx, [esp+5Ch+var_24]
		push	2Fh
		push	edx
		call	sub_4019C4
		add	esp, 28h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 16h
		call	sub_4017EE
		push	eax
		push	offset dword_4490CC
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	46h
		push	47h
		lea	eax, [esp+48h+var_24]
		push	47h
		push	eax
		call	sub_4019C4
		add	esp, 14h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 17h
		call	sub_4017EE
		push	eax
		push	offset dword_4490D0
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	46h
		push	44h
		lea	ecx, [esp+48h+var_24]
		push	47h
		push	ecx
		call	sub_4019C4
		add	esp, 14h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 18h
		call	sub_4017EE
		push	eax
		push	offset dword_4490D4
		call	sub_401D16
		add	esp, 8
		mov	byte ptr [esp+3Ch+var_4], bl
		lea	ecx, [esp+3Ch+var_24]
		call	sub_401226
		push	edi
		push	21h
		push	28h
		push	29h
		lea	edx, [esp+4Ch+var_24]
		push	2Ah
		push	edx
		call	sub_4019C4
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 19h
		call	sub_4017EE
		push	eax
		push	offset dword_4490D8
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	2Dh
		push	2Dh
		push	1Bh
		lea	eax, [esp+4Ch+var_24]
		push	2Ah
		push	eax
		call	sub_4019C4
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Ah
		call	sub_4017EE
		push	eax
		push	offset dword_4490DC
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	25h
		push	1Dh
		push	23h
		lea	ecx, [esp+4Ch+var_24]
		push	28h
		push	ecx
		call	sub_4019C4
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Bh
		call	sub_4017EE
		push	eax
		push	offset dword_4490E0
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	2Ch
		push	1Fh
		push	2Dh
		lea	edx, [esp+4Ch+var_24]
		push	2Fh
		push	edx
		call	sub_4019C4
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Ch
		call	sub_4017EE
		push	eax
		push	offset dword_4490E4
		call	sub_401D16
		add	esp, 8
		mov	byte ptr [esp+3Ch+var_4], bl
		lea	ecx, [esp+3Ch+var_24]
		call	sub_401226
		push	edi
		push	47h
		push	49h
		lea	eax, [esp+48h+var_24]
		push	47h
		push	eax
		call	sub_4019C4
		add	esp, 14h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Dh
		call	sub_4017EE
		push	eax
		push	offset dword_4490E8
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	25h
		push	1Dh
		push	23h
		lea	ecx, [esp+4Ch+var_24]
		push	25h
		push	ecx
		call	sub_4019C4
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Eh
		call	sub_4017EE
		push	eax
		push	offset dword_4490EC
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	2Eh
		push	2Ch
		push	1Bh
		lea	edx, [esp+4Ch+var_24]
		push	2Ah
		push	edx
		call	sub_4019C4
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Fh
		call	sub_4017EE
		push	eax
		push	offset dword_4490F0
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	1Fh
		push	1Eh
		push	29h
		lea	eax, [esp+4Ch+var_24]
		push	27h
		push	eax
		call	sub_4019C4
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 20h
		call	sub_4017EE
		push	eax
		push	offset dword_4490F4
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	45h
		push	44h
		lea	ecx, [esp+48h+var_24]
		push	44h
		push	ecx
		call	sub_4019C4
		add	esp, 14h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 21h
		call	sub_4017EE
		push	eax
		push	offset dword_4490F8
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	49h
		push	44h
		lea	edx, [esp+48h+var_24]
		push	44h
		push	edx
		call	sub_4019C4
		add	esp, 14h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 22h
		call	sub_4017EE
		push	eax
		push	offset dword_4490FC
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		push	edi
		push	2Eh
		push	23h
		push	2Fh
		lea	eax, [esp+4Ch+var_24]
		push	2Bh
		push	eax
		call	sub_4019C4
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 23h
		call	sub_4017EE
		push	eax
		push	offset dword_449100
		call	sub_401D16
		add	esp, 8
		lea	ecx, [esp+3Ch+var_24]
		mov	byte ptr [esp+3Ch+var_4], bl
		call	sub_401226
		mov	ecx, [esp+3Ch+var_C]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 2Ch
		retn
sub_40F6D0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 180h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_40FE40:				; CODE XREF: ___:004019D3j
					; ___:00401A4Bj
		push	esi
		mov	esi, ecx
		call	sub_4013C5
		test	byte ptr [esp+8], 1
		jz	short loc_40FE58
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_40FE58:				; CODE XREF: ___:0040FE4Dj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_40FE70	proc near		; CODE XREF: sub_4013C5j

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

		push	0FFFFFFFFh
		push	offset SEH_40FE70
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		mov	dword ptr [esi], offset	dword_43F028
		mov	dword ptr [esi+11h], offset dword_43F034
		lea	ecx, [esi+2DAh]
		mov	[esp+14h+var_4], 10h
		call	sub_401B68
		lea	ecx, [esi+2ACh]
		mov	byte ptr [esp+14h+var_4], 0Fh
		call	sub_401023
		lea	ecx, [esi+27Eh]
		mov	byte ptr [esp+14h+var_4], 0Eh
		call	sub_401023
		lea	ecx, [esi+250h]
		mov	byte ptr [esp+14h+var_4], 0Dh
		call	sub_401023
		lea	ecx, [esi+222h]
		mov	byte ptr [esp+14h+var_4], 0Ch
		call	sub_401023
		lea	ecx, [esi+1F4h]
		mov	byte ptr [esp+14h+var_4], 0Bh
		call	sub_401023
		lea	ecx, [esi+1C6h]
		mov	byte ptr [esp+14h+var_4], 0Ah
		call	sub_401023
		lea	ecx, [esi+198h]
		mov	byte ptr [esp+14h+var_4], 9
		call	sub_401023
		lea	ecx, [esi+16Ah]
		mov	byte ptr [esp+14h+var_4], 8
		call	sub_401023
		lea	ecx, [esi+13Ch]
		mov	byte ptr [esp+14h+var_4], 7
		call	sub_401023
		lea	ecx, [esi+10Eh]
		mov	byte ptr [esp+14h+var_4], 6
		call	sub_401023
		lea	ecx, [esi+0E0h]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_401023
		lea	ecx, [esi+0B2h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401023
		lea	ecx, [esi+84h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401023
		lea	ecx, [esi+56h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401023
		lea	ecx, [esi+3Dh]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401226
		lea	ecx, [esi+28h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401226
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_40204F
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_40FE70	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 60h dup(0CCh)
; ---------------------------------------------------------------------------


loc_410030:				; CODE XREF: ___:00402149j
		push	0FFFFFFFFh
		mov	eax, large fs:0
		push	offset byte_43A8D3
		push	eax
		mov	eax, 2478h
		mov	large fs:0, esp
		call	near ptr dword_437B30
		push	ebx
		push	ebp
		mov	ebp, ecx
		push	esi
		push	edi
		lea	ecx, [esp+18h]
		call	sub_40142E
		mov	al, [ebp+17h]
		xor	ebx, ebx
		cmp	al, bl
		mov	[esp+2490h], ebx
		jz	loc_411400


loc_410072:				; CODE XREF: ___:004113FAj
		mov	al, byte_4E8E44
		mov	edi, dword_5118AC
		cmp	al, bl
		jz	loc_411400
		mov	eax, [ebp+20h]
		cmp	eax, ebx
		jnz	short loc_41009A
		cmp	dword ptr [ebp+1Ch], 5
		jg	short loc_4100A4
		cmp	eax, ebx
		jz	loc_4101DE


loc_41009A:				; CODE XREF: ___:0041008Aj
		cmp	dword ptr [ebp+1Ch], 2
		jle	loc_4101DE


loc_4100A4:				; CODE XREF: ___:00410090j
		mov	eax, [ebp+18h]
		mov	[ebp+16h], bl
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+15h], bl
		jz	short loc_4100B9
		push	eax
		nop
		call	near ptr 71AB9639h


loc_4100B9:				; CODE XREF: ___:004100B0j
		mov	ecx, offset word_44AC5E
		mov	dword ptr [ebp+18h], 0FFFFFFFFh
		call	sub_401541
		mov	esi, [ebp+20h]
		inc	esi
		mov	[ebp+20h], esi
		lea	esi, [ebp+2DAh]
		mov	ecx, esi
		call	sub_401983
		mov	ecx, [ebp+20h]
		dec	eax
		cmp	ecx, eax
		jbe	short loc_4100E9
		mov	[ebp+20h], ebx


loc_4100E9:				; CODE XREF: ___:004100E4j
		mov	eax, [ebp+20h]
		mov	ecx, esi
		push	eax
		mov	[ebp+1Ch], ebx
		call	sub_401474
		mov	ecx, [eax]
		add	ecx, 16Dh
		push	ecx
		push	offset byte_4493ED
		mov	ecx, offset word_44ACD6
		call	sub_401F50
		mov	edx, [ebp+20h]
		mov	ecx, esi
		push	edx
		call	sub_401474
		mov	eax, [eax]
		mov	ecx, offset word_44ACD6
		add	eax, 1B6h
		push	eax
		push	offset dword_4493A4
		call	sub_401F50
		mov	ecx, [ebp+20h]
		push	ecx
		mov	ecx, esi
		call	sub_401474
		mov	edx, [eax]
		mov	ecx, offset word_44ACD6
		push	edx
		push	offset dword_449280
		call	sub_401F50
		mov	eax, [ebp+20h]
		mov	ecx, esi
		push	eax
		call	sub_401474
		mov	ecx, [eax]
		add	ecx, 124h
		push	ecx
		push	offset word_449312
		mov	ecx, offset word_44ACD6
		call	sub_401F50
		mov	edx, [ebp+20h]
		mov	ecx, esi
		push	edx
		call	sub_401474
		mov	eax, [eax]
		mov	ecx, offset word_44ACD6
		add	eax, 0DBh
		push	eax
		push	offset byte_4492C9
		call	sub_401F50
		mov	ecx, [ebp+20h]
		push	ecx
		mov	ecx, esi
		call	sub_401474
		mov	edx, [eax]
		mov	ecx, offset word_44ACD6
		add	edx, 92h
		push	edx
		push	offset byte_44935B
		call	sub_401F50
		mov	eax, [ebp+20h]
		mov	ecx, esi
		push	eax
		call	sub_401474
		mov	ecx, [eax]
		add	ecx, 1FFh
		push	ecx
		push	offset byte_44947F
		mov	ecx, offset word_44ACD6
		call	sub_401F50
		call	edi
		mov	[ebp+24h], eax


loc_4101DE:				; CODE XREF: ___:00410094j
					; ___:0041009Ej
		mov	edx, [ebp+18h]
		cmp	edx, 0FFFFFFFFh
		jnz	short loc_410208
		push	6
		push	1
		push	2
		call	near ptr 71AB3B91h
		nop
		push	7D0h
		mov	[ebp+18h], eax
		mov	[ebp+15h], bl
		call	near ptr 2821D1Ah
		nop
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_410208:				; CODE XREF: ___:004101E4j
		cmp	[ebp+15h], bl
		jnz	loc_410398
		mov	ax, word_44932C
		xor	edx, edx
		mov	[esp+44h], edx
		push	eax
		mov	[esp+4Ch], edx
		mov	word ptr [esp+48h], 2
		mov	[esp+50h], edx
		mov	[esp+54h], edx
		nop
		call	near ptr 71AB2B66h
		mov	ecx, offset byte_4492C9
		mov	[esp+46h], ax
		call	sub_4017EE
		push	eax
		call	sub_40188E
		add	esp, 4
		mov	[esp+48h], eax
		call	edi
		mov	edx, [ebp+18h]
		lea	ecx, [esp+44h]
		push	10h
		push	ecx
		push	edx
		mov	[ebp+24h], eax
		nop
		call	near ptr 71AB406Ah
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_410288
		push	2710h
		nop
		call	near ptr 2821D1Ah
		mov	eax, [ebp+1Ch]
		mov	[ebp+15h], bl
		inc	eax
		mov	[ebp+1Ch], eax
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_410288:				; CODE XREF: ___:0041026Cj
		mov	byte ptr [ebp+15h], 1
		mov	[ebp+16h], bl
		call	edi
		mov	[ebp+24h], eax
		xor	eax, eax
		mov	[esp+34h], eax
		lea	ecx, [esp+54h]
		mov	[esp+38h], eax
		lea	edx, [esp+34h]
		mov	[esp+3Ch], eax
		push	ecx
		mov	[esp+44h], eax
		mov	eax, [ebp+18h]
		push	edx
		push	eax
		mov	dword ptr [esp+60h], 10h
		call	near ptr 71AB951Eh
		nop
		mov	ecx, [esp+3Bh]
		mov	edx, [esp+3Ah]
		mov	eax, [esp+39h]
		and	ecx, 0FFh
		push	ecx
		mov	ecx, [esp+3Ch]
		and	edx, 0FFh
		and	eax, 0FFh
		push	edx
		and	ecx, 0FFh
		push	eax
		push	ecx
		lea	edx, [esp+458h]
		push	offset dword_444CA0
		push	edx
		nop
		call	near ptr byte_5FC011
		add	esp, 18h
		lea	eax, [esp+448h]
		lea	ecx, [ebp+3Dh]
		push	eax
		call	sub_4015E1
		lea	ecx, [esp+448h]
		push	ecx
		nop
		call	near ptr 71AB2BF4h
		push	offset byte_448F30
		mov	ecx, offset byte_44935B
		mov	[ebp+52h], eax
		call	sub_4012EE
		test	eax, eax
		jz	short loc_410357
		mov	ecx, offset byte_44935B
		call	sub_4017EE
		mov	edx, dword_4490DC
		push	eax
		push	edx
		push	offset dword_4445F4
		push	ebp
		call	sub_401E24
		add	esp, 10h


loc_410357:				; CODE XREF: ___:00410335j
		mov	ecx, offset byte_4E8E45
		call	sub_4017EE
		push	eax
		mov	ecx, offset byte_4E8E45
		call	sub_4017EE
		push	eax
		mov	eax, dword_4490E4
		push	eax
		mov	ecx, offset byte_4E8E45
		call	sub_4017EE
		mov	ecx, dword_4490E0
		push	eax
		push	ecx
		push	offset dword_444C84
		push	ebp
		call	sub_401E24
		add	esp, 1Ch
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_410398:				; CODE XREF: ___:0041020Bj
		mov	ecx, 800h
		xor	eax, eax
		lea	edi, [esp+488h]
		push	ebx
		rep stosd
		lea	eax, [esp+48Ch]
		push	2000h
		push	eax
		push	edx
		call	sub_401280
		add	esp, 10h
		cmp	al, bl
		jz	loc_4113F0
		nop
		call	near ptr 27D0B1Ah
		lea	ecx, [esp+18h]
		mov	[ebp+24h], eax
		call	sub_401CD0
		lea	ecx, [esp+488h]
		push	ecx
		lea	ecx, [esp+1Ch]
		call	sub_401A9B
		push	offset dword_444600
		lea	edx, [esp+38Ch]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, dword_4490E8
		mov	byte ptr [esp+2490h], 1
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_410470
		push	offset dword_444600
		lea	edx, [esp+41Ch]
		push	4
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	offset dword_4493A4
		mov	ecx, eax
		mov	byte ptr [esp+2494h], 2
		call	sub_401B86
		test	eax, eax
		lea	ecx, [esp+418h]
		mov	byte ptr [esp+2490h], 1
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		mov	byte ptr [esp+13h], 1
		cmp	al, bl
		jnz	short loc_410474


loc_410470:				; CODE XREF: ___:0041041Aj
		mov	[esp+13h], bl


loc_410474:				; CODE XREF: ___:0041046Ej
		lea	ecx, [esp+388h]
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	[esp+13h], bl
		jz	short loc_410496
		mov	byte ptr [ebp+16h], 1
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_410496:				; CODE XREF: ___:0041048Bj
		push	offset dword_444600
		lea	eax, [esp+11Ch]
		push	ebx
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, dword_4490BC
		mov	byte ptr [esp+2490h], 3
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+118h]
		mov	[esp+2490h], bl
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		push	offset dword_444600
		cmp	al, bl
		push	1
		jz	short loc_410534
		lea	edx, [esp+2D0h]
		lea	ecx, [esp+20h]
		push	edx
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+2490h], 4
		call	sub_4017EE
		push	eax
		mov	eax, dword_4490D8
		push	eax
		push	offset dword_4445F4
		push	ebp
		call	sub_401E24
		add	esp, 10h
		mov	[esp+2490h], bl
		lea	ecx, [esp+2C8h]
		jmp	loc_410662
; ---------------------------------------------------------------------------


loc_410534:				; CODE XREF: ___:004104EAj
		lea	edx, [esp+150h]
		lea	ecx, [esp+20h]
		push	edx
		call	sub_4016B8
		mov	ecx, dword_4490C0
		mov	byte ptr [esp+2490h], 5
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+148h]
		mov	[esp+2490h], bl
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		push	offset dword_444600
		cmp	al, bl
		jz	loc_4106A0
		lea	edx, [esp+434h]
		push	12h
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	offset byte_448F30
		mov	ecx, eax
		mov	byte ptr [esp+2494h], 6
		call	sub_4012EE
		lea	ecx, [esp+430h]
		mov	esi, eax
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	esi, ebx
		jz	loc_4113F7
		push	offset dword_444600
		lea	eax, [esp+17Ch]
		push	11h
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, dword_4490D8
		mov	byte ptr [esp+2490h], 7
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+178h]
		mov	[esp+2490h], bl
		setz	byte ptr [esp+13h]
		call	sub_401226
		cmp	[esp+13h], bl
		jz	short loc_410667
		push	offset dword_444600
		lea	edx, [esp+2FCh]
		push	12h
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+2490h], 8
		call	sub_4017EE
		push	eax
		mov	eax, dword_4490D8
		push	eax
		push	offset dword_4445F4
		push	ebp
		call	sub_401E24
		add	esp, 10h
		mov	[esp+2490h], bl
		lea	ecx, [esp+2F8h]


loc_410662:				; CODE XREF: ___:0041052Fj
		call	sub_401226


loc_410667:				; CODE XREF: ___:00410616j
		cmp	[ebp+16h], bl
		jnz	loc_4113F7
		mov	ecx, offset byte_4493ED
		call	sub_4017EE
		push	eax
		mov	ecx, offset dword_4493A4
		call	sub_4017EE
		mov	ecx, dword_4490C4
		push	eax
		push	ecx
		push	offset dword_444C74
		push	ebp
		call	sub_401E24
		add	esp, 14h
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_4106A0:				; CODE XREF: ___:00410580j
		lea	edx, [esp+3BCh]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, dword_4490F8
		mov	byte ptr [esp+2490h], 9
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		jz	short loc_410722
		push	offset dword_444600
		lea	edx, [esp+1ACh]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, dword_4490FC
		mov	byte ptr [esp+2490h], 0Ah
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+1A8h]
		mov	byte ptr [esp+2490h], 9
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		mov	[esp+13h], bl
		cmp	al, bl
		jz	short loc_410727


loc_410722:				; CODE XREF: ___:004106CBj
		mov	byte ptr [esp+13h], 1


loc_410727:				; CODE XREF: ___:00410720j
		lea	ecx, [esp+3B8h]
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	[esp+13h], bl
		jz	short loc_410794
		cmp	[ebp+16h], bl
		jnz	short loc_410770
		mov	ecx, offset byte_4493ED
		call	sub_4017EE
		push	eax
		mov	ecx, offset dword_4493A4
		call	sub_4017EE
		mov	edx, dword_4490C4
		push	eax
		push	edx
		push	offset dword_444C74
		push	ebp
		call	sub_401E24
		add	esp, 14h


loc_410770:				; CODE XREF: ___:00410743j
		mov	ecx, offset byte_4E8E45
		call	sub_4017EE
		push	eax
		mov	eax, dword_4490CC
		push	eax
		push	offset dword_4445F4
		push	ebp
		call	sub_401E24
		add	esp, 10h
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_410794:				; CODE XREF: ___:0041073Ej
		push	offset dword_444600
		lea	ecx, [esp+1DCh]
		push	1
		push	ecx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	edx, dword_4490D4
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+2494h], 0Bh
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+1D8h]
		mov	[esp+2490h], bl
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		push	offset dword_444600
		cmp	al, bl
		jz	short loc_410845
		lea	eax, [esp+0BCh]
		push	3
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	offset dword_444C70
		lea	ecx, [esp+0BCh]
		mov	byte ptr [esp+2494h], 0Ch
		call	sub_4014DD
		push	eax
		nop
		call	near ptr 77C47C60h
		add	esp, 8
		cmp	eax, ebx
		jz	short loc_41082D
		inc	eax
		lea	ecx, [ebp+28h]
		push	eax
		call	sub_4015E1


loc_41082D:				; CODE XREF: ___:00410821j
		lea	ecx, [esp+0B8h]
		mov	[esp+2490h], bl
		call	sub_401226
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_410845:				; CODE XREF: ___:004107E7j
		lea	ecx, [esp+32Ch]
		push	1
		push	ecx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	edx, dword_4490D0
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+2494h], 0Dh
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_410880
		mov	al, byte_449804
		mov	byte ptr [esp+13h], 1
		cmp	al, bl
		jnz	short loc_410884


loc_410880:				; CODE XREF: ___:00410870j
		mov	[esp+13h], bl


loc_410884:				; CODE XREF: ___:0041087Ej
		lea	ecx, [esp+328h]
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	[esp+13h], bl
		jz	loc_410B91
		push	offset dword_444C6C
		lea	eax, [esp+74h]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	96h
		mov	byte ptr [esp+2494h], 0Eh
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 0Fh
		jz	short loc_4108E2
		mov	ecx, eax
		call	sub_402072


loc_4108E2:				; CODE XREF: ___:004108D9j
		push	0ADh
		mov	byte ptr [esp+2494h], 0Eh
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 10h
		jz	short loc_41090E
		mov	ecx, eax
		call	sub_4010BE


loc_41090E:				; CODE XREF: ___:00410905j
		push	offset dword_4445EC
		lea	ecx, [esp+74h]
		mov	byte ptr [esp+2494h], 0Eh
		call	sub_401AAF
		push	offset dword_4445EC
		lea	ecx, [esp+0A4h]
		push	ebx
		push	ecx
		lea	ecx, [esp+7Ch]
		xor	edi, edi
		call	sub_4016B8
		push	offset byte_448F30
		mov	ecx, eax
		mov	byte ptr [esp+2494h], 11h
		call	sub_4012EE
		lea	ecx, [esp+0A0h]
		mov	esi, eax
		mov	byte ptr [esp+2490h], 0Eh
		call	sub_401226
		cmp	esi, ebx
		jz	loc_410B7C


loc_41096F:				; CODE XREF: ___:00410B76j
		push	96h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 12h
		jz	short loc_410997
		mov	ecx, eax
		call	sub_402072
		mov	esi, eax
		jmp	short loc_410999
; ---------------------------------------------------------------------------


loc_410997:				; CODE XREF: ___:0041098Aj
		xor	esi, esi


loc_410999:				; CODE XREF: ___:00410995j
		push	0ADh
		mov	byte ptr [esp+2494h], 0Eh
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 13h
		jz	short loc_4109CB
		mov	ecx, eax
		call	sub_4010BE
		mov	[esp+14h], eax
		jmp	short loc_4109CF
; ---------------------------------------------------------------------------


loc_4109CB:				; CODE XREF: ___:004109BCj
		mov	[esp+14h], ebx


loc_4109CF:				; CODE XREF: ___:004109C9j
		push	offset dword_444C68
		lea	ecx, [esp+1Ch]
		mov	byte ptr [esp+2494h], 0Eh
		call	sub_4013ED
		test	eax, eax
		jz	short loc_4109F2
		mov	byte ptr [esi+93h], 1
		jmp	short loc_4109F8
; ---------------------------------------------------------------------------


loc_4109F2:				; CODE XREF: ___:004109E7j
		mov	[esi+93h], bl


loc_4109F8:				; CODE XREF: ___:004109F0j
		push	offset dword_444C64
		lea	ecx, [esp+1Ch]
		call	sub_4013ED
		test	eax, eax
		jz	short loc_410A13
		mov	byte ptr [esi+94h], 1
		jmp	short loc_410A19
; ---------------------------------------------------------------------------


loc_410A13:				; CODE XREF: ___:00410A08j
		mov	[esi+94h], bl


loc_410A19:				; CODE XREF: ___:00410A11j
		push	offset dword_444604
		lea	ecx, [esp+1Ch]
		call	sub_4013ED
		test	eax, eax
		jz	short loc_410A34
		mov	byte ptr [esi+95h], 1
		jmp	short loc_410A3A
; ---------------------------------------------------------------------------


loc_410A34:				; CODE XREF: ___:00410A29j
		mov	[esi+95h], bl


loc_410A3A:				; CODE XREF: ___:00410A32j
		push	offset dword_444600
		lea	edx, [esp+20Ch]
		push	3
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	eax
		lea	ecx, [esi+15h]
		mov	byte ptr [esp+2494h], 14h
		call	sub_401FDC
		lea	ecx, [esp+208h]
		mov	byte ptr [esp+2490h], 0Eh
		call	sub_401226
		push	offset byte_448F30
		lea	ecx, [esi+54h]
		call	sub_4015E1
		push	offset byte_448F30
		lea	ecx, [esi+3Fh]
		call	sub_4015E1
		push	offset dword_444600
		lea	eax, [esp+0D4h]
		push	3
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	eax
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+2494h], 15h
		call	sub_401FDC
		lea	ecx, [esp+0D0h]
		mov	byte ptr [esp+2490h], 0Eh
		call	sub_401226
		push	offset dword_4445EC
		lea	ecx, [esp+23Ch]
		push	edi
		push	ecx
		lea	ecx, [esp+7Ch]
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+2490h], 16h
		call	sub_4017EE
		push	eax
		mov	ecx, esi
		call	sub_4015E1
		lea	ecx, [esp+238h]
		mov	byte ptr [esp+2490h], 0Eh
		call	sub_401226
		mov	ecx, [esp+14h]
		push	1
		push	esi
		call	sub_401DFC
		cmp	esi, ebx
		jz	short loc_410B29
		push	1
		mov	ecx, esi
		call	sub_4019E2


loc_410B29:				; CODE XREF: ___:00410B1Ej
		mov	ecx, [esp+14h]
		call	sub_4013DE
		inc	edi
		push	offset dword_4445EC
		lea	edx, [esp+0A4h]
		push	edi
		push	edx
		lea	ecx, [esp+7Ch]
		call	sub_4016B8
		push	offset byte_448F30
		mov	ecx, eax
		mov	byte ptr [esp+2494h], 11h
		call	sub_4012EE
		lea	ecx, [esp+0A0h]
		mov	esi, eax
		mov	byte ptr [esp+2490h], 0Eh
		call	sub_401226
		cmp	esi, ebx
		jnz	loc_41096F


loc_410B7C:				; CODE XREF: ___:00410969j
		lea	ecx, [esp+70h]
		mov	[esp+2490h], bl
		call	sub_401226
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_410B91:				; CODE XREF: ___:0041089Bj
		push	offset dword_444600
		lea	eax, [esp+35Ch]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, dword_4490C8
		mov	byte ptr [esp+2490h], 17h
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+358h]
		mov	[esp+2490h], bl
		setz	byte ptr [esp+13h]
		call	sub_401226
		cmp	[esp+13h], bl
		jz	loc_410EAB
		push	96h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 18h
		jz	short loc_410C0B
		mov	ecx, eax
		call	sub_402072
		mov	esi, eax
		jmp	short loc_410C0D
; ---------------------------------------------------------------------------


loc_410C0B:				; CODE XREF: ___:00410BFEj
		xor	esi, esi


loc_410C0D:				; CODE XREF: ___:00410C09j
		push	0ADh
		mov	[esp+2494h], bl
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 19h
		jz	short loc_410C3C
		mov	ecx, eax
		call	sub_4010BE
		mov	edi, eax
		jmp	short loc_410C3E
; ---------------------------------------------------------------------------


loc_410C3C:				; CODE XREF: ___:00410C2Fj
		xor	edi, edi


loc_410C3E:				; CODE XREF: ___:00410C3Aj
		push	offset dword_444604
		lea	ecx, [esp+1Ch]
		mov	[esp+2494h], bl
		call	sub_4013ED
		test	eax, eax
		jz	short loc_410C60
		mov	byte ptr [esi+95h], 1
		jmp	short loc_410C66
; ---------------------------------------------------------------------------


loc_410C60:				; CODE XREF: ___:00410C55j
		mov	[esi+95h], bl


loc_410C66:				; CODE XREF: ___:00410C5Ej
		push	offset dword_444C68
		lea	ecx, [esp+1Ch]
		call	sub_4013ED
		test	eax, eax
		jz	short loc_410C81
		mov	byte ptr [esi+93h], 1
		jmp	short loc_410C87
; ---------------------------------------------------------------------------


loc_410C81:				; CODE XREF: ___:00410C76j
		mov	[esi+93h], bl


loc_410C87:				; CODE XREF: ___:00410C7Fj
		push	offset dword_444C64
		lea	ecx, [esp+1Ch]
		call	sub_4013ED
		test	eax, eax
		jz	short loc_410CA2
		mov	byte ptr [esi+94h], 1
		jmp	short loc_410CA8
; ---------------------------------------------------------------------------


loc_410CA2:				; CODE XREF: ___:00410C97j
		mov	[esi+94h], bl


loc_410CA8:				; CODE XREF: ___:00410CA0j
		push	offset dword_444C6C
		lea	edx, [esp+29Ch]
		push	ebx
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	offset dword_444600
		lea	ecx, [esp+3ECh]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 1Ah
		call	sub_4016B8
		push	offset dword_444C60
		lea	edx, [esp+26Ch]
		push	ebx
		push	edx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 1Bh
		call	sub_4016B8
		push	eax
		lea	ecx, [esi+15h]
		mov	byte ptr [esp+2494h], 1Ch
		call	sub_401FDC
		lea	ecx, [esp+268h]
		mov	byte ptr [esp+2490h], 1Bh
		call	sub_401226
		lea	ecx, [esp+3E8h]
		mov	byte ptr [esp+2490h], 1Ah
		call	sub_401226
		lea	ecx, [esp+298h]
		mov	[esp+2490h], bl
		call	sub_401226
		push	offset dword_444C60
		lea	eax, [esp+104h]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	offset dword_444C70
		lea	ecx, [esp+0ECh]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 1Dh
		call	sub_4016B8
		push	eax
		lea	ecx, [esi+54h]
		mov	byte ptr [esp+2494h], 1Eh
		call	sub_401FDC
		lea	ecx, [esp+0E8h]
		mov	byte ptr [esp+2490h], 1Dh
		call	sub_401226
		lea	ecx, [esp+100h]
		mov	[esp+2490h], bl
		call	sub_401226
		push	offset dword_444C70
		lea	edx, [esp+164h]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	offset dword_444600
		lea	ecx, [esp+134h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 1Fh
		call	sub_4016B8
		push	eax
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+2494h], 20h
		call	sub_401FDC
		mov	byte ptr [esp+2490h], 1Fh
		lea	ecx, [esp+130h]
		call	sub_401226
		lea	ecx, [esp+160h]
		mov	[esp+2490h], bl
		call	sub_401226
		push	offset dword_444600
		lea	edx, [esp+194h]
		push	2
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	eax
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+2494h], 21h
		call	sub_401FDC
		lea	ecx, [esp+190h]
		mov	[esp+2490h], bl
		call	sub_401226
		push	offset dword_444C5C
		lea	ecx, [esp+1Ch]
		call	sub_4014DD
		push	eax
		nop
		call	near ptr 77C47C60h
		add	esp, 8
		cmp	eax, ebx
		jz	short loc_410E7D
		add	eax, 2
		push	eax
		jmp	short loc_410E82
; ---------------------------------------------------------------------------


loc_410E7D:				; CODE XREF: ___:00410E75j
		push	offset byte_448F30


loc_410E82:				; CODE XREF: ___:00410E7Bj
		mov	ecx, esi
		call	sub_4015E1
		push	ebx
		push	esi
		mov	ecx, edi
		call	sub_401DFC
		cmp	esi, ebx
		jz	short loc_410E9F
		push	1
		mov	ecx, esi
		call	sub_4019E2


loc_410E9F:				; CODE XREF: ___:00410E94j
		mov	ecx, edi
		call	sub_4013DE
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_410EAB:				; CODE XREF: ___:00410BDDj
		push	offset dword_444600
		lea	eax, [esp+1C4h]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, dword_4490EC
		mov	byte ptr [esp+2490h], 22h
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+1C0h]
		mov	[esp+2490h], bl
		setz	byte ptr [esp+13h]
		call	sub_401226
		cmp	[esp+13h], bl
		jz	loc_411080
		sub	esp, 18h
		lea	ecx, [esp+30h]
		mov	edx, esp
		mov	[esp+2Ch], esp
		push	offset dword_444600
		push	3
		push	edx
		call	sub_4016B8
		mov	ecx, offset word_44AC5E
		call	sub_401CE4
		cmp	eax, ebx
		jz	short loc_410F72
		sub	esp, 18h
		lea	ecx, [esp+30h]
		mov	eax, esp
		mov	[esp+2Ch], esp
		push	offset dword_444600
		push	3
		push	eax
		call	sub_4016B8
		sub	esp, 18h
		mov	byte ptr [esp+24C0h], 23h
		mov	ecx, esp
		mov	[esp+60h], esp
		push	offset dword_444600
		push	3
		push	ecx
		lea	ecx, [esp+54h]
		call	sub_4016B8
		mov	ecx, offset word_44AC5E
		mov	[esp+24C0h], bl
		call	sub_40212B


loc_410F72:				; CODE XREF: ___:00410F23j
		push	offset dword_444600
		lea	edx, [esp+1F4h]
		push	3
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	offset byte_4E8E45
		mov	ecx, eax
		mov	byte ptr [esp+2494h], 24h
		call	sub_401B86
		test	eax, eax
		lea	ecx, [esp+1F0h]
		mov	[esp+2490h], bl
		setz	byte ptr [esp+13h]
		call	sub_401226
		cmp	[esp+13h], bl
		jz	loc_4113F7
		push	offset dword_444C6C
		lea	eax, [esp+254h]
		push	ebx
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	offset dword_444C60
		lea	ecx, [esp+224h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 25h
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+2490h], 26h
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+284h]
		call	sub_401870
		lea	ecx, [esp+220h]
		mov	byte ptr [esp+2490h], 29h
		call	sub_401226
		lea	ecx, [esp+250h]
		mov	byte ptr [esp+2490h], 28h
		call	sub_401226
		mov	ecx, offset byte_4493ED
		mov	[ebp+16h], bl
		call	sub_4017EE
		push	eax
		mov	ecx, offset dword_4493A4
		call	sub_4017EE
		mov	edx, dword_4490C4
		push	eax
		push	edx
		push	offset dword_444C74
		push	ebp
		call	sub_401E24
		add	esp, 14h
		lea	ecx, [esp+280h]
		mov	[esp+2490h], bl
		call	sub_401226
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_411080:				; CODE XREF: ___:00410EF7j
		push	offset dword_444600
		lea	eax, [esp+2B4h]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, dword_4490E0
		mov	byte ptr [esp+2490h], 2Ah
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+2B0h]
		mov	[esp+2490h], bl
		setz	byte ptr [esp+13h]
		call	sub_401226
		cmp	[esp+13h], bl
		jz	loc_411238
		push	offset dword_444C6C
		lea	edx, [esp+314h]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		push	offset dword_444C60
		lea	ecx, [esp+2E4h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 2Bh
		call	sub_4016B8
		mov	ecx, eax
		mov	byte ptr [esp+2490h], 2Ch
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+5Ch]
		call	sub_401870
		lea	ecx, [esp+2E0h]
		mov	byte ptr [esp+2490h], 2Fh
		call	sub_401226
		lea	ecx, [esp+310h]
		mov	byte ptr [esp+2490h], 2Eh
		call	sub_401226
		push	offset dword_444C5C
		lea	ecx, [esp+1Ch]
		call	sub_4014DD
		mov	esi, dword_511B04
		push	eax
		call	esi
		add	esp, 8
		test	eax, eax
		jz	loc_411223
		push	offset dword_444C5C
		lea	ecx, [esp+1Ch]
		call	sub_4014DD
		push	eax
		call	esi
		add	esp, 8
		lea	ecx, [esp+88h]
		push	eax
		call	sub_401870
		push	offset byte_448F30
		lea	ecx, [esp+5Ch]
		mov	byte ptr [esp+2494h], 30h
		call	sub_4012EE
		test	eax, eax
		jz	short loc_41120F
		push	offset byte_448F30
		lea	ecx, [esp+8Ch]
		call	sub_4012EE
		test	eax, eax
		jz	short loc_41120F
		sub	esp, 18h
		lea	edx, [esp+70h]
		mov	ecx, esp
		mov	[esp+48h], esp
		push	edx
		call	sub_4014D3
		mov	ecx, offset word_44AC5E
		call	sub_401CE4
		cmp	eax, ebx
		jz	short loc_4111EB
		lea	ecx, [esp+88h]
		push	ecx
		lea	ecx, [eax+19h]
		call	sub_401FDC


loc_4111EB:				; CODE XREF: ___:004111D9j
		push	offset byte_4E8E45
		lea	ecx, [esp+5Ch]
		call	sub_401B86
		test	eax, eax
		jnz	short loc_41120F
		lea	edx, [esp+88h]
		mov	ecx, offset byte_4E8E45
		push	edx
		call	sub_401FDC


loc_41120F:				; CODE XREF: ___:004111A3j
					; ___:004111B8j ...
		lea	ecx, [esp+88h]
		mov	byte ptr [esp+2490h], 2Eh
		call	sub_401226


loc_411223:				; CODE XREF: ___:00411164j
		lea	ecx, [esp+58h]
		mov	[esp+2490h], bl
		call	sub_401226
		jmp	loc_4113F7
; ---------------------------------------------------------------------------


loc_411238:				; CODE XREF: ___:004110CCj
		push	offset dword_444600
		lea	eax, [esp+374h]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, dword_4490F0
		mov	byte ptr [esp+2490h], 31h
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		jz	short loc_4112BF
		push	offset dword_444600
		lea	edx, [esp+344h]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		mov	ecx, dword_449100
		mov	byte ptr [esp+2490h], 32h
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+340h]
		mov	byte ptr [esp+2490h], 31h
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		mov	[esp+13h], bl
		cmp	al, bl
		jz	short loc_4112C4


loc_4112BF:				; CODE XREF: ___:00411268j
		mov	byte ptr [esp+13h], 1


loc_4112C4:				; CODE XREF: ___:004112BDj
		lea	ecx, [esp+370h]
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	[esp+13h], bl
		jz	loc_4113F7
		push	offset dword_444C6C
		lea	edx, [esp+3A4h]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		sub	esp, 18h
		mov	byte ptr [esp+24A8h], 33h
		mov	ecx, esp
		mov	[esp+48h], esp
		push	offset dword_444C60
		push	ebx
		push	ecx
		mov	ecx, eax
		call	sub_4016B8
		mov	ecx, offset word_44AC5E
		call	sub_401CE4
		lea	ecx, [esp+3A0h]
		mov	esi, eax
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	esi, ebx
		jz	loc_4113F7
		push	offset dword_444C6C
		lea	edx, [esp+404h]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016B8
		sub	esp, 18h
		mov	byte ptr [esp+24A8h], 34h
		mov	ecx, esp
		mov	[esp+48h], esp
		push	offset dword_444C60
		push	ebx
		push	ecx
		mov	ecx, eax
		call	sub_4016B8
		push	offset dword_444C6C
		lea	edx, [esp+3ECh]
		push	1
		push	edx
		lea	ecx, [esp+3Ch]
		mov	byte ptr [esp+24B4h], 35h
		call	sub_4016B8
		sub	esp, 18h
		mov	byte ptr [esp+24C0h], 36h
		mov	ecx, esp
		mov	[esp+44h], esp
		push	offset dword_444C60
		push	ebx
		push	ecx
		mov	ecx, eax
		call	sub_4016B8
		mov	ecx, offset word_44AC5E
		mov	byte ptr [esp+24C0h], 37h
		call	sub_40212B
		lea	ecx, [esp+3D0h]
		mov	byte ptr [esp+2490h], 34h
		call	sub_401226
		lea	ecx, [esp+400h]
		mov	[esp+2490h], bl
		call	sub_401226
		jmp	short loc_4113F7
; ---------------------------------------------------------------------------


loc_4113F0:				; CODE XREF: ___:004103C1j
		mov	ecx, ebp
		call	sub_401D20


loc_4113F7:				; CODE XREF: ___:00410203j
					; ___:00410283j ...
		cmp	[ebp+17h], bl
		jnz	loc_410072


loc_411400:				; CODE XREF: ___:0041006Cj
					; ___:0041007Fj
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+2490h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+2488h]
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 2484h
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 500h	dup(0CCh)

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



sub_411930	proc near		; CODE XREF: sub_4010BEj

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

		push	0FFFFFFFFh
		push	offset SEH_411930
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_401E88
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_402072
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F038
		mov	dword ptr [esi+11h], 0
		mov	byte ptr [esi+0ABh], 0
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_411930	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4119B0:				; CODE XREF: ___:0040115Ej
					; ___:004016F4j
		push	esi
		mov	esi, ecx
		call	sub_40101E
		test	byte ptr [esp+8], 1
		jz	short loc_4119C8
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_4119C8:				; CODE XREF: ___:004119BDj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_4119E0	proc near		; CODE XREF: sub_40101Ej

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

		push	0FFFFFFFFh
		push	offset SEH_4119E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		mov	dword ptr [esi], offset	dword_43F038
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_401979
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_40204F
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4119E0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

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



sub_411A60	proc near		; CODE XREF: sub_402072j

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

		push	0FFFFFFFFh
		push	offset SEH_411A60
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_40142E
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_40142E
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_40142E
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_40142E
		lea	ecx, [esi+54h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_40142E
		lea	ecx, [esi+69h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_40142E
		lea	ecx, [esi+7Eh]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_40142E
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_411A60	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 30h dup(0CCh)

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



sub_411B20	proc near		; CODE XREF: sub_401979j

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

		push	0FFFFFFFFh
		push	offset SEH_411B20
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+7Eh]
		mov	[esp+14h+var_4], 5
		call	sub_401226
		lea	ecx, [esi+69h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401226
		lea	ecx, [esi+54h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401226
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401226
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401226
		lea	ecx, [esi+15h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401226
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_411B20	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 30h dup(0CCh)

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



sub_411BE0	proc near		; CODE XREF: sub_4019E2j

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_401979
		test	[esp+4+arg_0], 1
		jz	short loc_411BF8
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_411BF8:				; CODE XREF: sub_411BE0+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_411BE0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_411C10	proc near		; CODE XREF: sub_401A19j

var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_411C10
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		test	esi, esi
		jz	short loc_411C36
		lea	edi, [esi+11h]
		jmp	short loc_411C38
; ---------------------------------------------------------------------------


loc_411C36:				; CODE XREF: sub_411C10+1Fj
		xor	edi, edi


loc_411C38:				; CODE XREF: sub_411C10+24j
		push	0
		push	17h
		push	1
		push	12h
		push	4Fh
		lea	eax, [esp+5Ch+var_3C]
		push	9
		push	eax
		call	sub_4019C4
		add	esp, 1Ch
		push	edi
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 0
		call	sub_4017EE
		lea	ecx, [esi+250h]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+48h+var_3C]
		mov	[esp+48h+var_4], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411C8C
		lea	ebx, [esi+11h]
		jmp	short loc_411C8E
; ---------------------------------------------------------------------------


loc_411C8C:				; CODE XREF: sub_411C10+75j
		xor	ebx, ebx


loc_411C8E:				; CODE XREF: sub_411C10+7Aj
		push	0
		push	14h
		push	3
		push	5
		push	0Eh
		push	0Eh
		push	0Fh
		push	3
		push	5
		push	12h
		push	4Fh
		lea	edx, [esp+74h+var_3C]
		push	9
		push	edx
		call	sub_4019C4
		add	esp, 34h
		push	ebx
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 1
		call	sub_4017EE
		push	eax
		lea	eax, [esi+27Eh]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+48h+var_3C]
		mov	[esp+48h+var_4], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411CEB
		lea	ebx, [esi+11h]
		jmp	short loc_411CED
; ---------------------------------------------------------------------------


loc_411CEB:				; CODE XREF: sub_411C10+D4j
		xor	ebx, ebx


loc_411CED:				; CODE XREF: sub_411C10+D9j
		push	0
		push	14h
		push	12h
		push	1
		push	10h
		push	4Fh
		lea	ecx, [esp+60h+var_3C]
		push	9
		push	ecx
		call	sub_4019C4
		add	esp, 20h
		push	ebx
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 2
		call	sub_4017EE
		lea	edx, [esi+1C6h]
		push	eax
		push	edx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+48h+var_3C]
		mov	[esp+48h+var_4], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411D40
		lea	ebx, [esi+11h]
		jmp	short loc_411D42
; ---------------------------------------------------------------------------


loc_411D40:				; CODE XREF: sub_411C10+129j
		xor	ebx, ebx


loc_411D42:				; CODE XREF: sub_411C10+12Ej
		push	0
		push	5
		push	4
		push	0Fh
		push	0Dh
		push	4Fh
		lea	eax, [esp+60h+var_3C]
		push	9
		push	eax
		call	sub_4019C4
		add	esp, 20h
		push	ebx
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 3
		call	sub_4017EE
		lea	ecx, [esi+16Ah]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+48h+var_3C]
		mov	[esp+48h+var_4], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411D95
		lea	ebx, [esi+11h]
		jmp	short loc_411D97
; ---------------------------------------------------------------------------


loc_411D95:				; CODE XREF: sub_411C10+17Ej
		xor	ebx, ebx


loc_411D97:				; CODE XREF: sub_411C10+183j
		push	0
		push	7
		push	13h
		push	0Dh
		push	4Fh
		lea	edx, [esp+5Ch+var_3C]
		push	9
		push	edx
		call	sub_4019C4
		add	esp, 1Ch
		push	ebx
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 4
		call	sub_4017EE
		push	eax
		lea	eax, [esi+1F4h]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+48h+var_3C]
		mov	[esp+48h+var_4], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411DE8
		lea	ebx, [esi+11h]
		jmp	short loc_411DEA
; ---------------------------------------------------------------------------


loc_411DE8:				; CODE XREF: sub_411C10+1D1j
		xor	ebx, ebx


loc_411DEA:				; CODE XREF: sub_411C10+1D6j
		push	0
		push	5
		push	3
		push	9
		push	14h
		push	0Fh
		push	0Eh
		push	4Fh
		lea	ecx, [esp+68h+var_3C]
		push	9
		push	ecx
		call	sub_4019C4
		add	esp, 28h
		push	ebx
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 5
		call	sub_4017EE
		lea	edx, [esi+0B2h]
		push	eax
		push	edx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+48h+var_3C]
		mov	[esp+48h+var_4], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411E41
		lea	ebx, [esi+11h]
		jmp	short loc_411E43
; ---------------------------------------------------------------------------


loc_411E41:				; CODE XREF: sub_411C10+22Aj
		xor	ebx, ebx


loc_411E43:				; CODE XREF: sub_411C10+22Fj
		push	0
		push	14h
		push	3
		push	5
		push	0Eh
		push	0Eh
		push	0Fh
		push	3
		push	13h
		push	9
		push	4
		push	4Fh
		lea	eax, [esp+78h+var_3C]
		push	9
		push	eax
		call	sub_4019C4
		add	esp, 38h
		push	ebx
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 6
		call	sub_4017EE
		lea	ecx, [esi+56h]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+48h+var_3C]
		mov	[esp+48h+var_4], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411E9F
		lea	ebx, [esi+11h]
		jmp	short loc_411EA1
; ---------------------------------------------------------------------------


loc_411E9F:				; CODE XREF: sub_411C10+288j
		xor	ebx, ebx


loc_411EA1:				; CODE XREF: sub_411C10+28Dj
		push	0
		push	14h
		push	13h
		push	0Fh
		push	8
		push	14h
		push	5
		push	7
		push	4Fh
		lea	edx, [esp+6Ch+var_3C]
		push	9
		push	edx
		call	sub_4019C4
		add	esp, 2Ch
		push	ebx
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 7
		call	sub_4017EE
		push	eax
		lea	eax, [esi+10Eh]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+48h+var_3C]
		mov	[esp+48h+var_4], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411EFA
		lea	ebx, [esi+11h]
		jmp	short loc_411EFC
; ---------------------------------------------------------------------------


loc_411EFA:				; CODE XREF: sub_411C10+2E3j
		xor	ebx, ebx


loc_411EFC:				; CODE XREF: sub_411C10+2E8j
		push	0
		push	0Fh
		push	6
		push	0Eh
		push	9
		push	14h
		push	5
		push	0Eh
		push	4Fh
		lea	ecx, [esp+6Ch+var_3C]
		push	9
		push	ecx
		call	sub_4019C4
		add	esp, 2Ch
		push	ebx
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 8
		call	sub_4017EE
		lea	edx, [esi+198h]
		push	eax
		push	edx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+48h+var_3C]
		mov	[esp+48h+var_4], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411F55
		lea	ebx, [esi+11h]
		jmp	short loc_411F57
; ---------------------------------------------------------------------------


loc_411F55:				; CODE XREF: sub_411C10+33Ej
		xor	ebx, ebx


loc_411F57:				; CODE XREF: sub_411C10+343j
		push	0
		push	0Eh
		push	9
		push	0Fh
		push	0Ah
		push	4Fh
		lea	eax, [esp+60h+var_24]
		push	9
		push	eax
		call	sub_4019C4
		add	esp, 20h
		push	ebx
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 9
		call	sub_4017EE
		add	esi, 13Ch
		push	eax
		push	esi
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+48h+var_24]
		mov	[esp+48h+var_4], edi
		call	sub_401226
		mov	ecx, [esp+48h+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
sub_411C10	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 0F0h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_4120B0:				; CODE XREF: ___:00401ACDj
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset byte_43AB59
		push	eax
		mov	large fs:0, esp
		sub	esp, 78h
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+94h]
		push	edi
		mov	edi, ecx
		lea	ebx, [esi+7Eh]
		lea	ecx, [edi+45h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jz	loc_4125D9
		lea	ecx, [edi+26Dh]
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jz	loc_4125D9
		lea	ecx, [edi+0A1h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4121B2
		push	offset dword_444600
		lea	eax, [esp+2Ch]
		push	2
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		mov	ebp, eax
		push	offset dword_444600
		lea	ecx, [esp+14h]
		push	1
		xor	ebx, ebx
		push	ecx
		mov	ecx, esi
		mov	[esp+9Ch], ebx
		call	sub_4016B8
		mov	esi, eax
		mov	ecx, ebp
		mov	byte ptr [esp+90h], 1
		call	sub_4017EE
		push	eax
		mov	ecx, esi
		call	sub_4017EE
		mov	edx, dword_4490C0
		push	eax
		push	edx
		add	edi, 0FFFFFFEFh
		push	offset dword_444CC8
		push	edi
		call	sub_401E24
		add	esp, 14h
		lea	ecx, [esp+10h]
		mov	[esp+90h], bl
		call	sub_401226
		lea	ecx, [esp+28h]
		mov	dword ptr [esp+90h], 0FFFFFFFFh
		call	sub_401226
		jmp	loc_412602
; ---------------------------------------------------------------------------


loc_4121B2:				; CODE XREF: ___:00412120j
		lea	ecx, [edi+187h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412229
		add	edi, 0FFFFFFEFh
		lea	eax, [esp+28h]
		push	eax
		mov	ecx, edi
		call	sub_401D4D
		mov	ecx, eax
		mov	dword ptr [esp+90h], 2
		call	sub_4017EE
		push	eax
		push	offset dword_4445F0
		lea	ecx, [esi+69h]
		call	sub_4014DD
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	edi
		call	sub_401857
		add	esp, 18h
		lea	ecx, [esp+28h]
		mov	dword ptr [esp+90h], 0FFFFFFFFh
		call	sub_401226
		jmp	loc_412602
; ---------------------------------------------------------------------------


loc_412229:				; CODE XREF: ___:004121C7j
		lea	ecx, [edi+0FDh]
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4122E4
		push	offset dword_444600
		lea	eax, [esp+2Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		push	eax
		lea	ecx, [edi+17h]
		mov	dword ptr [esp+94h], 3
		call	sub_4018B1
		or	ebp, 0FFFFFFFFh
		lea	ecx, [esp+28h]
		mov	ebx, eax
		mov	[esp+90h], ebp
		call	sub_401226
		test	ebx, ebx
		jz	loc_412602
		lea	ecx, [esp+28h]
		add	edi, 0FFFFFFEFh
		push	ecx
		mov	ecx, edi
		call	sub_401D4D
		mov	ecx, eax
		mov	dword ptr [esp+90h], 4
		call	sub_4017EE
		push	eax
		push	offset dword_4445F0
		lea	ecx, [esi+69h]
		call	sub_4014DD
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	edi
		call	sub_401857
		add	esp, 18h
		lea	ecx, [esp+28h]
		mov	[esp+90h], ebp
		call	sub_401226
		jmp	loc_412602
; ---------------------------------------------------------------------------


loc_4122E4:				; CODE XREF: ___:0041223Ej
		lea	ecx, [edi+12Bh]
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41238D
		push	offset dword_444600
		lea	ecx, [esp+14h]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4016B8
		mov	ebp, eax
		push	offset dword_444600
		lea	edx, [esp+2Ch]
		mov	ebx, 5
		push	1
		push	edx
		mov	ecx, esi
		mov	[esp+9Ch], ebx
		call	sub_4016B8
		mov	esi, eax
		mov	ecx, ebp
		mov	byte ptr [esp+90h], 6
		call	sub_4017EE
		push	eax
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		mov	eax, dword_4490C4
		push	eax
		add	edi, 0FFFFFFEFh
		push	offset dword_444C74
		push	edi
		call	sub_401E24
		add	esp, 14h
		lea	ecx, [esp+28h]
		mov	[esp+90h], bl
		call	sub_401226
		lea	ecx, [esp+10h]
		mov	dword ptr [esp+90h], 0FFFFFFFFh
		call	sub_401226
		jmp	loc_412602
; ---------------------------------------------------------------------------


loc_41238D:				; CODE XREF: ___:004122F9j
		lea	ecx, [edi+1B5h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_4123FB
		push	offset dword_444600
		lea	ecx, [esp+2Ch]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016B8
		mov	ecx, eax
		mov	dword ptr [esp+90h], 7
		call	sub_4017EE
		mov	edx, dword_4490F0
		push	eax
		push	edx
		add	edi, 0FFFFFFEFh
		push	offset dword_4445F4
		push	edi
		call	sub_401E24
		add	esp, 10h
		lea	ecx, [esp+28h]
		mov	dword ptr [esp+90h], 0FFFFFFFFh
		call	sub_401226
		jmp	loc_412602
; ---------------------------------------------------------------------------


loc_4123FB:				; CODE XREF: ___:004123A2j
		lea	ecx, [edi+23Fh]
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_41245D
		lea	eax, [esp+28h]
		push	9
		push	eax
		mov	ecx, esi
		call	sub_401E47
		mov	ecx, eax
		mov	dword ptr [esp+90h], 8
		call	sub_4017EE
		push	eax
		add	edi, 0FFFFFFEFh
		push	offset dword_444CC0
		push	edi
		call	sub_401E24
		add	esp, 0Ch
		lea	ecx, [esp+28h]
		mov	dword ptr [esp+90h], 0FFFFFFFFh
		call	sub_401226
		jmp	loc_412602
; ---------------------------------------------------------------------------


loc_41245D:				; CODE XREF: ___:00412410j
		lea	ecx, [edi+1E3h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4124FD
		push	offset dword_444600
		lea	ecx, [esp+14h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016B8
		mov	ebp, eax
		push	1
		push	offset dword_444600
		lea	edx, [esp+30h]
		push	2
		push	edx
		mov	ecx, esi
		mov	dword ptr [esp+0A0h], 9
		call	sub_4011EA
		mov	esi, eax
		mov	ecx, ebp
		mov	byte ptr [esp+90h], 0Ah
		call	sub_4014DD
		push	eax
		mov	ecx, esi
		call	sub_4014DD
		xor	ebx, ebx
		push	eax
		push	ebx
		push	ebx
		lea	ecx, [edi-11h]
		call	sub_401118
		lea	ecx, [esp+28h]
		mov	byte ptr [esp+90h], 9
		call	sub_401226
		lea	ecx, [esp+10h]
		mov	dword ptr [esp+90h], 0FFFFFFFFh
		call	sub_401226
		jmp	loc_412602
; ---------------------------------------------------------------------------


loc_4124FD:				; CODE XREF: ___:00412472j
		lea	ecx, [edi+159h]
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_412602
		push	offset dword_444600
		lea	eax, [esp+74h]
		push	3
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		mov	ebp, eax
		push	offset dword_444600
		lea	ecx, [esp+5Ch]
		push	2
		push	ecx
		mov	ecx, esi
		mov	dword ptr [esp+9Ch], 0Bh
		call	sub_4016B8
		mov	ebx, eax
		push	offset dword_444600
		lea	edx, [esp+44h]
		push	1
		push	edx
		mov	ecx, esi
		mov	byte ptr [esp+9Ch], 0Ch
		call	sub_4016B8
		mov	esi, eax
		mov	ecx, ebp
		mov	byte ptr [esp+90h], 0Dh
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4017EE
		push	eax
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		mov	eax, dword_4490F4
		push	eax
		add	edi, 0FFFFFFEFh
		push	offset dword_444CB0
		push	edi
		call	sub_401E24
		add	esp, 18h
		lea	ecx, [esp+40h]
		mov	byte ptr [esp+90h], 0Ch
		call	sub_401226
		lea	ecx, [esp+58h]
		mov	byte ptr [esp+90h], 0Bh
		call	sub_401226
		lea	ecx, [esp+70h]
		mov	dword ptr [esp+90h], 0FFFFFFFFh
		call	sub_401226
		jmp	short loc_412602
; ---------------------------------------------------------------------------


loc_4125D9:				; CODE XREF: ___:004120EAj
					; ___:00412105j
		xor	ebx, ebx
		mov	[edi+0Fh], ebx
		mov	[edi+0Bh], ebx
		mov	[edi+5], bl
		mov	[edi+4], bl
		mov	ecx, [edi+7]
		push	ecx
		nop
		call	near ptr 71AB9639h
		mov	ecx, offset word_44AC5E
		mov	dword ptr [edi+7], 0FFFFFFFFh
		call	sub_401541


loc_412602:				; CODE XREF: ___:004121ADj
					; ___:00412224j ...
		mov	ecx, [esp+88h]
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 84h
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 160h	dup(0CCh)

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



sub_412780	proc near		; CODE XREF: sub_401D4Dj

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		= byte ptr -34h
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	0FFFFFFFFh
		push	offset SEH_412780
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 40h
		push	esi
		mov	esi, ecx
		lea	ecx, [esp+50h+var_24]
		mov	[esp+50h+var_48], 0
		call	sub_40142E
		xor	eax, eax
		lea	ecx, [esp+50h+var_4C]
		mov	[esp+50h+var_44], eax
		lea	edx, [esp+50h+var_44]
		mov	[esp+50h+var_40], eax
		push	ecx
		mov	[esp+54h+var_3C], eax
		push	edx
		mov	[esp+58h+var_38], eax
		mov	eax, [esi+18h]
		push	eax
		mov	[esp+5Ch+var_4], 1
		mov	[esp+5Ch+var_4C], 10h
		nop
		call	near ptr 71AB951Eh
		mov	ecx, [esp+50h+var_40+3]
		mov	edx, [esp+50h+var_40+2]
		mov	eax, [esp+50h+var_40+1]
		and	ecx, 0FFh
		push	ecx
		mov	ecx, [esp+54h+var_40]
		and	edx, 0FFh
		and	eax, 0FFh
		push	edx
		and	ecx, 0FFh
		push	eax
		push	ecx
		lea	edx, [esp+60h+var_34]
		push	offset dword_444CA0
		push	edx
		call	near ptr byte_5FC011
		nop
		add	esp, 18h
		lea	ecx, [esp+50h+var_24]
		push	offset byte_448F30
		call	sub_4015E1
		push	offset dword_444CF4
		lea	ecx, [esp+54h+var_24]
		call	sub_401AAF
		lea	eax, [esp+50h+var_34]
		lea	ecx, [esp+50h+var_24]
		push	eax
		call	sub_401AAF
		push	offset dword_444CF0
		lea	ecx, [esp+54h+var_24]
		call	sub_401AAF
		add	esi, 28h
		lea	ecx, [esp+50h+var_24]
		push	esi
		call	sub_4016C7
		push	offset dword_444CF0
		lea	ecx, [esp+54h+var_24]
		call	sub_401AAF
		lea	ecx, [esp+50h+var_34]
		push	ecx
		call	sub_401483
		add	esp, 4
		test	al, al
		jz	short loc_41288B
		push	offset dword_444CE4
		jmp	short loc_412890
; ---------------------------------------------------------------------------


loc_41288B:				; CODE XREF: sub_412780+102j
		push	offset dword_444CD8


loc_412890:				; CODE XREF: sub_412780+109j
		lea	ecx, [esp+54h+var_24]
		call	sub_401AAF
		mov	esi, [esp+50h+arg_0]
		lea	edx, [esp+50h+var_24]
		push	edx
		mov	ecx, esi
		call	sub_4014D3
		mov	[esp+50h+var_48], 1
		lea	ecx, [esp+50h+var_24]
		mov	byte ptr [esp+50h+var_4], 0
		call	sub_401226
		mov	ecx, [esp+50h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 4Ch
		retn	4
sub_412780	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 60h dup(0CCh)

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



sub_412940	proc near		; CODE XREF: sub_40158Cj

arg_0		= dword	ptr  4

		push	ebp
		mov	ebp, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, ebp
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		mov	eax, [esi+18h]
		push	0
		not	ecx
		dec	ecx
		push	ecx
		push	ebp
		push	eax
		nop
		call	near ptr 71AB428Ah
		mov	edx, eax
		mov	edi, ebp
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		cmp	edx, ecx
		jnb	short loc_41299E
		mov	[esi+16h], al
		mov	[esi+15h], al
		mov	eax, [esi+18h]
		push	eax
		nop
		call	near ptr 71AB9639h
		mov	ecx, offset word_44AC5E
		mov	dword ptr [esi+18h], 0FFFFFFFFh
		call	sub_401541
		pop	edi
		pop	esi
		xor	al, al
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_41299E:				; CODE XREF: sub_412940+33j
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebp
		retn	4
sub_412940	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

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



sub_4129D0	proc near		; CODE XREF: sub_401E24j

arg_2000	= dword	ptr  2004h
arg_2004	= dword	ptr  2008h
arg_2008	= byte ptr  200Ch

		mov	eax, 2000h
		call	near ptr dword_437B30
		mov	ecx, [esp+arg_2004]
		lea	eax, [esp+arg_2008]
		push	eax
		push	ecx
		lea	edx, [esp+8]
		push	2000h
		push	edx
		nop
		call	near ptr 77C3FF8Ah
		mov	ecx, [esp+10h+arg_2000]
		add	esp, 10h
		lea	eax, [esp+0]
		push	eax
		call	sub_40158C
		add	esp, 2000h
		retn
sub_4129D0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)

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



sub_412A40	proc near		; CODE XREF: sub_401118j

var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_4		= byte ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_412A40
		push	eax
		mov	al, [esp+0Ch+arg_0]
		mov	large fs:0, esp
		sub	esp, 30h
		test	al, al
		push	esi
		mov	esi, ecx
		jz	short loc_412A77
		xor	al, al
		pop	esi
		mov	ecx, [esp+3Ch+var_C]
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_412A77:				; CODE XREF: sub_412A40+21j
		lea	ecx, [esp+40h+var_3C]
		call	sub_40142E
		mov	al, [esp+40h+arg_4]
		mov	[esp+40h+var_4], 0
		test	al, al
		jz	short loc_412A98
		mov	eax, dword_4490C0
		push	eax
		jmp	short loc_412A9F
; ---------------------------------------------------------------------------


loc_412A98:				; CODE XREF: sub_412A40+4Ej
		mov	ecx, dword_4490C8
		push	ecx


loc_412A9F:				; CODE XREF: sub_412A40+56j
		lea	ecx, [esp+44h+var_3C]
		call	sub_4015E1
		push	ebx
		lea	ecx, [esp+44h+var_24]
		call	sub_40142E
		mov	edx, [esp+44h+arg_8]
		mov	eax, [esp+44h+arg_C]
		push	edx
		push	eax
		lea	ecx, [esp+4Ch+var_3C]
		mov	byte ptr [esp+4Ch+var_4], 1
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+50h+var_24]
		push	offset dword_444CC8
		push	ecx
		call	sub_40102D
		add	esp, 14h
		lea	ecx, [esp+44h+var_24]
		call	sub_4014DD
		push	eax
		mov	ecx, esi
		call	sub_40158C
		lea	ecx, [esp+44h+var_24]
		mov	bl, al
		mov	byte ptr [esp+44h+var_4], 0
		call	sub_401226
		lea	ecx, [esp+44h+var_3C]
		mov	[esp+44h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+44h+var_C]
		mov	al, bl
		pop	ebx
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn	10h
sub_412A40	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 40h dup(0CCh)

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



sub_412B70	proc near		; CODE XREF: sub_401857j

arg_2000	= dword	ptr  2004h
arg_2004	= dword	ptr  2008h
arg_2008	= dword	ptr  200Ch
arg_200C	= dword	ptr  2010h
arg_2010	= dword	ptr  2014h
arg_2014	= byte ptr  2018h

		mov	eax, 2000h
		call	near ptr dword_437B30
		mov	ecx, [esp+arg_2010]
		lea	eax, [esp+arg_2014]
		push	eax
		push	ecx
		lea	edx, [esp+8]
		push	2000h
		push	edx
		nop
		call	near ptr 77C3FF8Ah
		mov	eax, [esp+10h+arg_200C]
		mov	edx, [esp+10h+arg_2008]
		add	esp, 10h
		lea	ecx, [esp+0]
		push	eax
		mov	eax, [esp+4+arg_2004]
		push	ecx
		mov	ecx, [esp+8+arg_2000]
		push	edx
		push	eax
		call	sub_401118
		add	esp, 2000h
		retn
sub_412B70	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

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



sub_412BF0	proc near		; CODE XREF: sub_401D20j
		push	esi
		mov	esi, ecx
		call	sub_401FD7
		mov	eax, [esi+1Ch]
		inc	eax
		mov	[esi+1Ch], eax
		pop	esi
		retn
sub_412BF0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

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



sub_412C20	proc near		; CODE XREF: sub_401FD7j
		push	esi
		mov	esi, ecx
		xor	al, al
		mov	[esi+16h], al
		mov	[esi+15h], al
		mov	eax, [esi+18h]
		push	eax
		nop
		call	near ptr 71AB9639h
		mov	ecx, offset word_44AC5E
		mov	dword ptr [esi+18h], 0FFFFFFFFh
		call	sub_401541
		pop	esi
		retn
sub_412C20	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_412C60	proc near		; CODE XREF: sub_40172Bj

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	dl, [ecx]
		xor	ecx, ecx
		mov	[eax], dl
		mov	[eax+4], ecx
		mov	[eax+8], ecx
		mov	[eax+0Ch], ecx
		retn	4
sub_412C60	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_412C90	proc near		; CODE XREF: sub_401B68j
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_401717
		mov	eax, [esi+4]
		mov	edx, [esi+0Ch]
		sub	edx, eax
		mov	ecx, esi
		sar	edx, 2
		push	edx
		push	eax
		call	sub_401294
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		mov	[esi+0Ch], eax
		pop	esi
		retn
sub_412C90	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_412CE0	proc near		; CODE XREF: sub_401F1Ej

var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_412CE0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	esi
		push	0
		push	6
		push	9
		push	4Fh
		push	3
		push	9
		push	7
		push	0Fh
		lea	eax, [esp+48h+var_24]
		push	0Ch
		mov	esi, ecx
		push	eax
		call	sub_4019C4
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	[esp+2Ch+var_4], 0
		call	sub_4017EE
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+28h+var_24]
		mov	[esp+28h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+28h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 24h
		retn
sub_412CE0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_412D80:				; CODE XREF: ___:0040100Aj
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset word_43AC4E
		push	eax
		mov	large fs:0, esp
		sub	esp, 90h
		add	ecx, 4
		push	ebp
		push	esi
		mov	esi, [esp+0A8h]
		lea	ebp, [esi+7Eh]
		call	sub_4017EE
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4130A6
		push	ebx
		push	edi
		push	offset dword_444600
		lea	eax, [esp+44h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		push	offset dword_444600
		lea	ecx, [esp+2Ch]
		push	2
		push	ecx
		mov	ecx, esi
		mov	dword ptr [esp+0B4h], 0
		call	sub_4016B8
		push	offset dword_444600
		lea	edx, [esp+14h]
		push	3
		push	edx
		mov	ecx, esi
		mov	byte ptr [esp+0B4h], 1
		call	sub_4016B8
		push	offset dword_444600
		lea	eax, [esp+74h]
		push	0
		push	eax
		mov	ecx, esi
		mov	byte ptr [esp+0B4h], 2
		call	sub_4016B8
		mov	edi, eax
		lea	ecx, [esp+10h]
		mov	byte ptr [esp+0A8h], 3
		call	sub_4013E3
		lea	ecx, [esp+28h]
		mov	ebx, eax
		call	sub_4013E3
		lea	ecx, [esp+40h]
		add	ebx, eax
		call	sub_4013E3
		mov	ecx, edi
		add	ebx, eax
		call	sub_4013E3
		lea	ecx, [esp+70h]
		lea	edi, [ebx+eax+4]
		mov	byte ptr [esp+0A8h], 2
		call	sub_401226
		lea	ecx, [esp+58h]
		push	edi
		push	ecx
		mov	ecx, esi
		call	sub_401E47
		push	offset dword_444600
		lea	edx, [esp+8Ch]
		push	4
		push	edx
		mov	ecx, esi
		mov	byte ptr [esp+0B4h], 4
		call	sub_4016B8
		lea	ecx, [esp+70h]
		push	1
		mov	bl, 5
		push	ecx
		mov	ecx, eax
		mov	[esp+0B0h], bl
		call	sub_401E47
		push	eax
		mov	ecx, ebp
		mov	byte ptr [esp+0ACh], 6
		call	sub_40202C
		lea	ecx, [esp+70h]
		mov	[esp+0A8h], bl
		call	sub_401226
		mov	byte ptr [esp+0A8h], 4
		lea	ecx, [esp+88h]
		call	sub_401226
		lea	edx, [esp+58h]
		mov	ecx, esi
		push	edx
		call	sub_40202C
		push	offset dword_444D1C
		lea	ecx, [esp+2Ch]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412F05
		xor	edi, edi


loc_412F05:				; CODE XREF: ___:00412F01j
		push	offset dword_444D18
		lea	ecx, [esp+2Ch]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412F1C
		mov	edi, 1


loc_412F1C:				; CODE XREF: ___:00412F15j
		push	offset dword_444D14
		lea	ecx, [esp+2Ch]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412F33
		mov	edi, 2


loc_412F33:				; CODE XREF: ___:00412F2Cj
		push	offset dword_444D10
		lea	ecx, [esp+2Ch]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412F4A
		mov	edi, 3


loc_412F4A:				; CODE XREF: ___:00412F43j
		push	offset dword_444D0C
		lea	ecx, [esp+44h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412FA4
		test	edi, edi
		jnz	short loc_412F7A
		lea	ecx, [esp+10h]
		call	sub_4017EE
		push	eax
		mov	ecx, offset word_44955A
		call	sub_4012EE
		test	eax, eax
		jz	short loc_412FA4
		jmp	short loc_412F97
; ---------------------------------------------------------------------------


loc_412F7A:				; CODE XREF: ___:00412F5Ej
		cmp	edi, 1
		jnz	short loc_412FA4
		lea	ecx, [esp+10h]
		call	sub_4017EE
		push	eax
		mov	ecx, offset word_44955A
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412FA4


loc_412F97:				; CODE XREF: ___:00412F78j
		push	0
		push	esi
		mov	ecx, offset byte_449277
		call	sub_401A41


loc_412FA4:				; CODE XREF: ___:00412F5Aj
					; ___:00412F76j ...
		push	offset dword_444D04
		lea	ecx, [esp+44h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412FF7
		test	edi, edi
		jnz	short loc_412FD8
		lea	ecx, [esp+10h]
		call	sub_4017EE
		push	eax
		mov	ecx, offset byte_4D809D
		call	sub_4013ED
		test	eax, eax
		jnz	loc_413059
		jmp	short loc_41304C
; ---------------------------------------------------------------------------


loc_412FD8:				; CODE XREF: ___:00412FB8j
		cmp	edi, 1
		jnz	short loc_413059
		lea	ecx, [esp+10h]
		call	sub_4017EE
		push	eax
		mov	ecx, offset byte_4D809D
		call	sub_4013ED
		test	eax, eax
		jz	short loc_413059
		jmp	short loc_41304C
; ---------------------------------------------------------------------------


loc_412FF7:				; CODE XREF: ___:00412FB4j
		push	offset dword_444CFC
		lea	ecx, [esp+44h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_413059
		lea	ecx, [esp+10h]
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		mov	ebx, eax
		call	sub_40165E
		test	edi, edi
		jnz	short loc_41302D
		cmp	eax, ebx
		jz	short loc_413059
		jmp	short loc_41304C
; ---------------------------------------------------------------------------


loc_41302D:				; CODE XREF: ___:00413025j
		cmp	edi, 1
		jnz	short loc_413038
		cmp	eax, ebx
		jnz	short loc_413059
		jmp	short loc_41304C
; ---------------------------------------------------------------------------


loc_413038:				; CODE XREF: ___:00413030j
		cmp	edi, 2
		jnz	short loc_413043
		cmp	eax, ebx
		jle	short loc_413059
		jmp	short loc_41304C
; ---------------------------------------------------------------------------


loc_413043:				; CODE XREF: ___:0041303Bj
		cmp	edi, 3
		jnz	short loc_413059
		cmp	eax, ebx
		jge	short loc_413059


loc_41304C:				; CODE XREF: ___:00412FD6j
					; ___:00412FF5j ...
		push	0
		push	esi
		mov	ecx, offset byte_449277
		call	sub_401A41


loc_413059:				; CODE XREF: ___:00412FD0j
					; ___:00412FDBj ...
		lea	ecx, [esp+58h]
		mov	byte ptr [esp+0A8h], 2
		call	sub_401226
		lea	ecx, [esp+10h]
		mov	byte ptr [esp+0A8h], 1
		call	sub_401226
		lea	ecx, [esp+28h]
		mov	byte ptr [esp+0A8h], 0
		call	sub_401226
		lea	ecx, [esp+40h]
		mov	dword ptr [esp+0A8h], 0FFFFFFFFh
		call	sub_401226
		pop	edi
		mov	al, 1
		pop	ebx
		jmp	short loc_4130A8
; ---------------------------------------------------------------------------


loc_4130A6:				; CODE XREF: ___:00412DB9j
		mov	al, 1


loc_4130A8:				; CODE XREF: ___:004130A4j
		mov	ecx, [esp+98h]
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		add	esp, 9Ch
		retn	4
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 0E0h	dup(0CCh)

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



sub_4131B0	proc near		; CODE XREF: sub_40165Ej
		nop
		call	near ptr 27D0B1Ah
		mov	ecx, eax
		mov	eax, 10624DD3h
		mul	ecx
		mov	ecx, edx
		mov	eax, 0C22E4507h
		shr	ecx, 6
		imul	ecx
		mov	eax, edx
		add	eax, ecx
		sar	eax, 10h
		mov	edx, eax
		shr	edx, 1Fh
		add	eax, edx
		retn
sub_4131B0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

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



sub_4131F0	proc near		; CODE XREF: sub_402018j

var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4131F0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esp+20h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	ecx, [esi+32h]
		mov	[esp+20h+var_4], 0
		call	sub_401753
		lea	edi, [esi+60h]
		lea	eax, [esp+20h+var_12]
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+24h+var_4], 1
		call	sub_401F23
		lea	ecx, [esp+20h+var_11]
		lea	ebx, [esi+6Ch]
		push	ecx
		mov	ecx, ebx
		mov	byte ptr [esp+24h+var_4], 2
		call	sub_401852
		mov	ecx, edi
		mov	byte ptr [esp+20h+var_4], 3
		mov	dword ptr [esi], offset	dword_43F044
		call	sub_401933
		mov	ecx, ebx
		call	sub_401C76
		mov	ecx, [esp+20h+var_C]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 14h
		retn
sub_4131F0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4132C0:				; CODE XREF: ___:00401D0Cj
					; ___:00401E29j
		push	esi
		mov	esi, ecx
		call	sub_401CA3
		test	byte ptr [esp+8], 1
		jz	short loc_4132D8
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_4132D8:				; CODE XREF: ___:004132CDj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_4132F0	proc near		; CODE XREF: sub_401CA3j

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

		push	0FFFFFFFFh
		push	offset SEH_4132F0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esp+1Ch+var_10], esi
		mov	dword ptr [esi], offset	dword_43F044
		lea	edi, [esi+60h]
		mov	[esp+1Ch+var_4], 3
		mov	ecx, edi
		call	sub_401933
		lea	ebx, [esi+6Ch]
		mov	ecx, ebx
		call	sub_401C76
		mov	ecx, ebx
		mov	byte ptr [esp+1Ch+var_4], 2
		call	sub_4014BF
		mov	ecx, edi
		mov	byte ptr [esp+1Ch+var_4], 1
		call	sub_4011B8
		lea	ecx, [esi+32h]
		mov	byte ptr [esp+1Ch+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+1Ch+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+1Ch+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4132F0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)

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



sub_4133B0	proc near		; CODE XREF: sub_401A05j

var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4133B0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	0
		push	14h
		push	15h
		push	0Fh
		push	7
		push	0Fh
		lea	eax, [esp+58h+var_3C]
		push	0Ch
		mov	esi, ecx
		push	eax
		call	sub_4019C4
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+44h+var_4], 0
		call	sub_4017EE
		lea	ecx, [esi+32h]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+40h+var_3C]
		mov	[esp+40h+var_4], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	14h
		push	5
		lea	edx, [esp+4Ch+var_24]
		push	13h
		push	edx
		call	sub_4019C4
		add	esp, 14h
		push	esi
		mov	ecx, eax
		mov	[esp+44h+var_4], 1
		call	sub_4017EE
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+40h+var_24]
		mov	[esp+40h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+40h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
sub_4133B0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 30h dup(0CCh)

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



sub_4134A0	proc near		; CODE XREF: sub_401CE4j

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4

		push	0FFFFFFFFh
		push	offset SEH_4134A0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	esi
		mov	esi, ecx
		lea	ecx, [esp+18h+arg_0]
		mov	[esp+18h+var_4], 0
		call	sub_4017EE
		test	eax, eax
		jz	short loc_413547
		lea	ecx, [esp+18h+var_14]
		call	sub_402275
		add	esi, 6Ch
		lea	eax, [esp+18h+var_10]
		push	eax
		mov	ecx, esi
		call	sub_401901
		mov	ecx, [eax]
		lea	edx, [esp+18h+var_10]
		mov	[esp+18h+var_14], ecx
		push	edx
		mov	ecx, esi
		call	sub_40114A
		push	eax
		lea	ecx, [esp+1Ch+var_14]
		call	sub_401339
		test	al, al
		jz	short loc_413547


loc_413508:				; CODE XREF: sub_4134A0+A5j
		lea	eax, [esp+18h+arg_0]
		lea	ecx, [esp+18h+var_14]
		push	eax
		call	sub_40135C
		mov	ecx, [eax]
		add	ecx, 19h
		call	sub_401B86
		test	eax, eax
		lea	ecx, [esp+18h+var_14]
		jz	short loc_41356C
		call	sub_40118B
		lea	ecx, [esp+18h+var_10]
		push	ecx
		mov	ecx, esi
		call	sub_40114A
		push	eax
		lea	ecx, [esp+1Ch+var_14]
		call	sub_401339
		test	al, al
		jnz	short loc_413508


loc_413547:				; CODE XREF: sub_4134A0+2Ej
					; sub_4134A0+66j
		lea	ecx, [esp+18h+arg_0]
		mov	[esp+18h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	eax, eax
		pop	esi
		mov	ecx, [esp+14h+var_C]
		mov	large fs:0, ecx
		add	esp, 14h
		retn	18h
; ---------------------------------------------------------------------------


loc_41356C:				; CODE XREF: sub_4134A0+86j
		call	sub_40135C
		mov	esi, [eax]
		lea	ecx, [esp+18h+arg_0]
		mov	[esp+18h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+18h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn	18h
sub_4134A0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 40h dup(0CCh)

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



sub_4135E0	proc near		; CODE XREF: sub_402130j

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

		push	0FFFFFFFFh
		push	offset SEH_4135E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ebx, ecx
		lea	ecx, [esp+28h+arg_0]
		mov	[esp+28h+var_4], 0
		call	sub_4017EE
		test	eax, eax
		jz	loc_4136B3
		lea	ecx, [esp+28h+var_18]
		call	sub_401037
		lea	ebp, [ebx+60h]
		lea	eax, [esp+28h+var_14]
		push	eax
		mov	ecx, ebp
		call	sub_401992
		mov	ecx, [eax]
		lea	edx, [esp+28h+var_14]
		mov	[esp+28h+var_18], ecx
		push	edx
		mov	ecx, ebp
		call	sub_402257
		push	eax
		lea	ecx, [esp+2Ch+var_18]
		call	sub_401AEB
		test	al, al
		jz	short loc_4136B3


loc_41364F:				; CODE XREF: sub_4135E0+D1j
		lea	ecx, [esp+28h+var_18]
		call	sub_4011D1
		mov	edi, [eax]
		sub	esp, 18h
		lea	eax, [esp+40h+arg_0]
		mov	ecx, esp
		mov	[esp+40h+var_10], esp
		push	eax
		call	sub_4014D3
		mov	ecx, ebx
		call	sub_401CE4
		mov	esi, eax
		test	esi, esi
		jz	short loc_41367C
		mov	edi, [esi]


loc_41367C:				; CODE XREF: sub_4135E0+98j
		lea	ecx, [esp+28h+arg_0]
		push	ecx
		mov	ecx, edi
		call	sub_401B86
		test	eax, eax
		jz	short loc_4136DB
		test	esi, esi
		jnz	short loc_4136DB
		lea	ecx, [esp+28h+var_18]
		call	sub_4018C5
		lea	edx, [esp+28h+var_14]
		mov	ecx, ebp
		push	edx
		call	sub_402257
		push	eax
		lea	ecx, [esp+2Ch+var_18]
		call	sub_401AEB
		test	al, al
		jnz	short loc_41364F


loc_4136B3:				; CODE XREF: sub_4135E0+31j
					; sub_4135E0+6Dj
		lea	ecx, [esp+28h+arg_0]
		mov	[esp+28h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	eax, eax


loc_4136C6:				; CODE XREF: sub_4135E0+10Ej
		mov	ecx, [esp+28h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 18h
		retn	18h
; ---------------------------------------------------------------------------


loc_4136DB:				; CODE XREF: sub_4135E0+AAj
					; sub_4135E0+AEj
		lea	ecx, [esp+28h+arg_0]
		mov	[esp+28h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	eax, edi
		jmp	short loc_4136C6
sub_4135E0	endp

; ---------------------------------------------------------------------------
		db 50h dup(0CCh)

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



sub_413740	proc near		; CODE XREF: sub_401F64j

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_18		= byte ptr  1Ch

		push	0FFFFFFFFh
		push	offset SEH_413740
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		lea	ecx, [esp+14h+arg_0]
		mov	[esp+14h+var_4], 1
		call	sub_4017EE
		test	eax, eax
		jz	short loc_4137E4
		lea	ecx, [esp+14h+var_14]
		call	sub_401E38
		lea	eax, [esp+14h+var_10]
		lea	ecx, [esp+14h+arg_18]
		push	eax
		call	sub_4012E9
		mov	ecx, [eax]
		lea	edx, [esp+14h+var_10]
		mov	[esp+14h+var_14], ecx
		push	edx
		lea	ecx, [esp+18h+arg_18]
		call	sub_401D9D
		push	eax
		lea	ecx, [esp+18h+var_14]
		call	sub_401D70
		test	al, al
		jz	short loc_4137E4


loc_4137A6:				; CODE XREF: sub_413740+A2j
		lea	eax, [esp+14h+arg_0]
		lea	ecx, [esp+14h+var_14]
		push	eax
		call	sub_401FC3
		mov	ecx, [eax]
		call	sub_401B86
		test	eax, eax
		jz	short loc_413816
		lea	ecx, [esp+14h+var_14]
		call	sub_4020C2
		lea	ecx, [esp+14h+var_10]
		push	ecx
		lea	ecx, [esp+18h+arg_18]
		call	sub_401D9D
		push	eax
		lea	ecx, [esp+18h+var_14]
		call	sub_401D70
		test	al, al
		jnz	short loc_4137A6


loc_4137E4:				; CODE XREF: sub_413740+2Bj
					; sub_413740+64j
		lea	ecx, [esp+14h+arg_0]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401226
		lea	ecx, [esp+14h+arg_18]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401582
		xor	eax, eax
		mov	ecx, [esp+14h+var_C]
		mov	large fs:0, ecx
		add	esp, 14h
		retn	24h
; ---------------------------------------------------------------------------


loc_413816:				; CODE XREF: sub_413740+7Dj
		push	esi
		lea	ecx, [esp+18h+var_14]
		call	sub_401FC3
		mov	esi, [eax]
		lea	ecx, [esp+18h+arg_0]
		mov	byte ptr [esp+18h+var_4], 0
		call	sub_401226
		lea	ecx, [esp+18h+arg_18]
		mov	[esp+18h+var_4], 0FFFFFFFFh
		call	sub_401582
		mov	ecx, [esp+18h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn	24h
sub_413740	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 50h dup(0CCh)

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



sub_4138B0	proc near		; CODE XREF: sub_4011DBj

var_A4		= byte ptr -0A4h
var_8C		= byte ptr -8Ch
var_74		= byte ptr -74h
var_64		= byte ptr -64h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_18		= dword	ptr  1Ch

		push	0FFFFFFFFh
		push	offset SEH_4138B0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 98h
		push	esi
		xor	esi, esi
		lea	ecx, [esp+0A8h+arg_0]
		mov	[esp+0A8h+var_4], esi
		call	sub_4017EE
		test	eax, eax
		jz	loc_4139E3
		lea	eax, [esp+0A8h+var_64]
		push	eax
		call	sub_401A69
		add	esp, 4
		lea	ecx, [esp+0A8h+var_A4]
		call	sub_40142E
		push	offset byte_448F30
		lea	ecx, [esp+0ACh+var_A4]
		mov	byte ptr [esp+0ACh+var_4], 1
		call	sub_4015E1
		lea	ecx, [esp+0A8h+arg_0]
		call	sub_4013E3
		push	eax
		lea	ecx, [esp+0ACh+arg_0]
		call	sub_4014DD
		lea	ecx, [esp+0ACh+var_64]
		push	eax
		push	ecx
		call	sub_401C26
		lea	edx, [esp+0B4h+var_64]
		lea	eax, [esp+0B4h+var_74]
		push	edx
		push	eax
		call	sub_402176
		add	esp, 14h


loc_41394B:				; CODE XREF: sub_4138B0+E8j
		lea	ecx, [esp+0A8h+var_8C]
		call	sub_40142E
		xor	ecx, ecx
		lea	edx, [esp+0A8h+var_8C]
		mov	cl, [esp+esi+0A8h+var_74]
		mov	byte ptr [esp+0A8h+var_4], 2
		push	ecx
		push	offset dword_444D20
		push	edx
		call	sub_40102D
		add	esp, 0Ch
		lea	eax, [esp+0A8h+var_8C]
		lea	ecx, [esp+0A8h+var_A4]
		push	eax
		call	sub_4016C7
		lea	ecx, [esp+0A8h+var_8C]
		mov	byte ptr [esp+0A8h+var_4], 1
		call	sub_401226
		inc	esi
		cmp	esi, 10h
		jl	short loc_41394B
		mov	edx, [esp+0A8h+arg_18]
		lea	ecx, [esp+0A8h+var_A4]
		push	ecx
		lea	ecx, [edx+15h]
		call	sub_401B86
		test	eax, eax
		mov	byte ptr [esp+0A8h+var_4], 0
		lea	ecx, [esp+0A8h+var_A4]
		jnz	short loc_4139DE
		call	sub_401226
		lea	ecx, [esp+0A8h+arg_0]
		mov	[esp+0A8h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		jmp	short loc_4139FC
; ---------------------------------------------------------------------------


loc_4139DE:				; CODE XREF: sub_4138B0+10Cj
		call	sub_401226


loc_4139E3:				; CODE XREF: sub_4138B0+33j
		lea	ecx, [esp+0A8h+arg_0]
		mov	[esp+0A8h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	al, al


loc_4139FC:				; CODE XREF: sub_4138B0+12Cj
		mov	ecx, [esp+0A8h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 0A4h
		retn	1Ch
sub_4138B0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 60h dup(0CCh)

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



sub_413A80	proc near		; CODE XREF: sub_40192Ej

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_18		= byte ptr  1Ch

		push	0FFFFFFFFh
		push	offset SEH_413A80
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	esi
		mov	esi, ecx
		sub	esp, 18h
		lea	eax, [esp+30h+arg_18]
		mov	ecx, esp
		mov	[esp+30h+var_14], esp
		push	eax
		mov	[esp+34h+var_4], 1
		call	sub_4014D3
		mov	ecx, esi
		call	sub_402130
		test	eax, eax
		jz	short loc_413B2E
		sub	esp, 0Ch
		add	eax, 54h
		mov	ecx, esp
		mov	[esp+24h+var_14], esp
		push	eax
		call	sub_401726
		sub	esp, 18h
		lea	edx, [esp+3Ch+arg_0]
		mov	ecx, esp
		mov	[esp+3Ch+var_10], esp
		push	edx
		mov	byte ptr [esp+40h+var_4], 2
		call	sub_4014D3
		mov	ecx, esi
		mov	byte ptr [esp+3Ch+var_4], 1
		call	sub_401F64
		test	eax, eax
		jz	short loc_413B2E
		lea	ecx, [esp+18h+arg_0]
		mov	byte ptr [esp+18h+var_4], 0
		call	sub_401226
		lea	ecx, [esp+18h+arg_18]
		mov	[esp+18h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		mov	ecx, [esp+18h+var_C]
		mov	large fs:0, ecx
		pop	esi
		add	esp, 14h
		retn	30h
; ---------------------------------------------------------------------------


loc_413B2E:				; CODE XREF: sub_413A80+3Fj
					; sub_413A80+79j
		lea	ecx, [esp+18h+arg_0]
		mov	byte ptr [esp+18h+var_4], 0
		call	sub_401226
		lea	ecx, [esp+18h+arg_18]
		mov	[esp+18h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+18h+var_C]
		xor	al, al
		mov	large fs:0, ecx
		pop	esi
		add	esp, 14h
		retn	30h
sub_413A80	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_413BB0:				; CODE XREF: ___:00401393j
		push	0FFFFFFFFh
		push	offset dword_43AE08
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, [esp+18h]
		push	esi
		mov	esi, ecx
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+1Ch], esp
		push	eax
		call	sub_401870
		mov	edx, [esp+30h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+4Ch], esp
		push	edx
		mov	dword ptr [esp+44h], 0
		call	sub_401870
		mov	ecx, esi
		mov	dword ptr [esp+40h], 0FFFFFFFFh
		call	sub_40192E
		mov	ecx, [esp+8]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn	8
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)

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



sub_413C40	proc near		; CODE XREF: sub_401181j

var_40		= dword	ptr -40h
var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_18		= dword	ptr  1Ch

		push	0FFFFFFFFh
		push	offset SEH_413C40
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 34h
		push	ebx
		push	ebp
		mov	ebp, [esp+48h+arg_18]
		xor	ebx, ebx
		cmp	ebp, ebx
		mov	[esp+48h+var_4], ebx
		jz	loc_413D89
		lea	ecx, [esp+48h+arg_0]
		call	sub_4017EE
		test	eax, eax
		jz	loc_413D89
		push	esi
		push	edi
		push	offset dword_444C6C
		lea	eax, [esp+54h+var_3C]
		push	ebx
		push	eax
		lea	ecx, [esp+5Ch+arg_0]
		xor	esi, esi
		call	sub_4016B8
		push	offset byte_448F30
		mov	ecx, eax
		mov	byte ptr [esp+54h+var_4], 1
		call	sub_4012EE
		lea	ecx, [esp+50h+var_3C]
		mov	edi, eax
		mov	byte ptr [esp+50h+var_4], bl
		call	sub_401226
		cmp	edi, ebx
		jz	loc_413D63
		add	ebp, 54h


loc_413CC0:				; CODE XREF: sub_413C40+11Dj
		push	15h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+50h+var_40], eax
		cmp	eax, ebx
		mov	byte ptr [esp+50h+var_4], 2
		jz	short loc_413CE0
		mov	ecx, eax
		call	sub_401F4B
		jmp	short loc_413CE2
; ---------------------------------------------------------------------------


loc_413CE0:				; CODE XREF: sub_413C40+95j
		xor	eax, eax


loc_413CE2:				; CODE XREF: sub_413C40+9Ej
		push	offset dword_444C6C
		lea	ecx, [esp+54h+var_24]
		push	esi
		push	ecx
		lea	ecx, [esp+5Ch+arg_0]
		mov	byte ptr [esp+5Ch+var_4], bl
		mov	[esp+5Ch+arg_18], eax
		call	sub_4016B8
		mov	ecx, [esp+50h+arg_18]
		push	eax
		mov	byte ptr [esp+54h+var_4], 3
		call	sub_40202C
		lea	ecx, [esp+50h+var_24]
		mov	byte ptr [esp+50h+var_4], bl
		call	sub_401226
		lea	edx, [esp+50h+arg_18]
		mov	ecx, ebp
		push	edx
		call	sub_401488
		inc	esi
		push	offset dword_444C6C
		lea	eax, [esp+54h+var_3C]
		push	esi
		push	eax
		lea	ecx, [esp+5Ch+arg_0]
		call	sub_4016B8
		push	offset byte_448F30
		mov	ecx, eax
		mov	byte ptr [esp+54h+var_4], 1
		call	sub_4012EE
		lea	ecx, [esp+50h+var_3C]
		mov	edi, eax
		mov	byte ptr [esp+50h+var_4], bl
		call	sub_401226
		cmp	edi, ebx
		jnz	loc_413CC0


loc_413D63:				; CODE XREF: sub_413C40+77j
		lea	ecx, [esp+50h+arg_0]
		mov	[esp+50h+var_4], 0FFFFFFFFh
		call	sub_401226
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	ecx, [esp+40h+var_C]
		mov	large fs:0, ecx
		add	esp, 40h
		retn	1Ch
; ---------------------------------------------------------------------------


loc_413D89:				; CODE XREF: sub_413C40+26j
					; sub_413C40+37j
		lea	ecx, [esp+48h+arg_0]
		mov	[esp+48h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+48h+var_C]
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 40h
		retn	1Ch
sub_413C40	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 60h dup(0CCh)

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



sub_413E10	proc near		; CODE XREF: sub_401F4Bj
		push	esi
		mov	esi, ecx
		call	sub_40142E
		mov	eax, esi
		pop	esi
		retn
sub_413E10	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_413E30:				; CODE XREF: ___:004010F0j
		mov	eax, [esp+8]
		mov	edx, [esp+4]
		push	esi
		push	eax
		mov	esi, ecx
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+28h], esp
		push	edx
		call	sub_401870
		mov	ecx, esi
		call	sub_401181
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_413E70	proc near		; CODE XREF: sub_4018ACj

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_18		= byte ptr  1Ch
arg_30		= byte ptr  34h
arg_48		= byte ptr  4Ch
arg_60		= byte ptr  64h

		push	0FFFFFFFFh
		push	offset SEH_413E70
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ebp, ecx
		sub	esp, 18h
		lea	eax, [esp+3Ch+arg_30]
		mov	ecx, esp
		mov	[esp+3Ch+var_14], esp
		push	eax
		mov	[esp+40h+var_4], 4
		call	sub_4014D3
		mov	ecx, ebp
		call	sub_401CE4
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	loc_41405E
		sub	esp, 18h
		lea	edx, [esp+3Ch+arg_0]
		mov	ecx, esp
		mov	[esp+3Ch+var_14], esp
		push	edx
		call	sub_4014D3
		mov	ecx, ebp
		call	sub_402130
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_41405E
		push	edi
		lea	eax, [esp+28h+arg_18]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h+var_14], esp
		push	eax
		call	sub_4014D3
		mov	ecx, ebp
		call	sub_4011DB
		cmp	al, bl
		jz	loc_41405E
		push	offset byte_448F30
		lea	ecx, [esp+28h+arg_48]
		call	sub_4012EE
		test	eax, eax
		jz	short loc_413F57
		lea	ecx, [edi+2Ah]
		call	sub_4017EE
		lea	ecx, [esp+24h+arg_48]
		mov	esi, eax
		call	sub_4017EE


loc_413F26:				; CODE XREF: sub_413E70+D4j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_413F4A
		cmp	cl, bl
		jz	short loc_413F46
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_413F4A
		add	eax, 2
		add	esi, 2
		cmp	cl, bl
		jnz	short loc_413F26


loc_413F46:				; CODE XREF: sub_413E70+C0j
		xor	eax, eax
		jmp	short loc_413F4F
; ---------------------------------------------------------------------------


loc_413F4A:				; CODE XREF: sub_413E70+BCj
					; sub_413E70+CAj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_413F4F:				; CODE XREF: sub_413E70+D8j
		cmp	eax, ebx
		jnz	loc_41405E


loc_413F57:				; CODE XREF: sub_413E70+A1j
		push	offset byte_448F30
		lea	ecx, [esp+28h+arg_60]
		call	sub_4012EE
		test	eax, eax
		jz	short loc_413FB3
		lea	ecx, [edi+3Fh]
		call	sub_4017EE
		lea	ecx, [esp+24h+arg_60]
		mov	esi, eax
		call	sub_4017EE


loc_413F82:				; CODE XREF: sub_413E70+130j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_413FA6
		cmp	cl, bl
		jz	short loc_413FA2
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_413FA6
		add	eax, 2
		add	esi, 2
		cmp	cl, bl
		jnz	short loc_413F82


loc_413FA2:				; CODE XREF: sub_413E70+11Cj
		xor	eax, eax
		jmp	short loc_413FAB
; ---------------------------------------------------------------------------


loc_413FA6:				; CODE XREF: sub_413E70+118j
					; sub_413E70+126j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_413FAB:				; CODE XREF: sub_413E70+134j
		cmp	eax, ebx
		jnz	loc_41405E


loc_413FB3:				; CODE XREF: sub_413E70+FAj
		push	58h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+24h+var_10], eax
		cmp	eax, ebx
		mov	byte ptr [esp+24h+var_4], 5
		jz	short loc_413FD3
		mov	ecx, eax
		call	sub_401D1B
		jmp	short loc_413FD5
; ---------------------------------------------------------------------------


loc_413FD3:				; CODE XREF: sub_413E70+158j
		xor	eax, eax


loc_413FD5:				; CODE XREF: sub_413E70+161j
		mov	[esp+24h+var_14], eax
		mov	[eax], edi
		mov	ecx, [esp+24h+var_14]
		lea	eax, [esp+24h+arg_0]
		push	eax
		add	ecx, 4
		mov	byte ptr [esp+28h+var_4], 4
		call	sub_40202C
		mov	eax, [esp+24h+var_14]
		lea	edx, [esp+24h+arg_30]
		push	edx
		lea	ecx, [eax+19h]
		call	sub_40202C
		lea	ecx, [esp+24h+var_14]
		push	ecx
		lea	ecx, [ebp+6Ch]
		call	sub_401410
		lea	ecx, [esp+24h+arg_0]
		mov	byte ptr [esp+24h+var_4], 3
		call	sub_401226
		lea	ecx, [esp+24h+arg_18]
		mov	byte ptr [esp+24h+var_4], 2
		call	sub_401226
		lea	ecx, [esp+24h+arg_30]
		mov	byte ptr [esp+24h+var_4], 1
		call	sub_401226
		lea	ecx, [esp+24h+arg_48]
		mov	byte ptr [esp+24h+var_4], bl
		call	sub_401226
		lea	ecx, [esp+24h+arg_60]
		mov	[esp+24h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		jmp	short loc_4140AB
; ---------------------------------------------------------------------------


loc_41405E:				; CODE XREF: sub_413E70+44j
					; sub_413E70+68j ...
		lea	ecx, [esp+24h+arg_0]
		mov	byte ptr [esp+24h+var_4], 3
		call	sub_401226
		lea	ecx, [esp+24h+arg_18]
		mov	byte ptr [esp+24h+var_4], 2
		call	sub_401226
		lea	ecx, [esp+24h+arg_30]
		mov	byte ptr [esp+24h+var_4], 1
		call	sub_401226
		lea	ecx, [esp+24h+arg_48]
		mov	byte ptr [esp+24h+var_4], bl
		call	sub_401226
		lea	ecx, [esp+24h+arg_60]
		mov	[esp+24h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	al, al


loc_4140AB:				; CODE XREF: sub_413E70+1ECj
		mov	ecx, [esp+24h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 14h
		retn	78h
sub_413E70	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0A0h	dup(0CCh)

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



sub_414160	proc near		; CODE XREF: sub_401D1Bj

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

		push	0FFFFFFFFh
		push	offset SEH_414160
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+4]
		call	sub_40142E
		lea	ecx, [esi+19h]
		mov	[esp+14h+var_4], 0
		call	sub_40142E
		lea	ecx, [esi+2Eh]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_40142E
		lea	ecx, [esi+43h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_40142E
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_414160	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4141F0:				; CODE XREF: ___:00401DD9j
		push	0FFFFFFFFh
		push	offset dword_43AF10
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, [esp+24h]
		push	esi
		mov	esi, ecx
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+1Ch], esp
		push	eax
		call	sub_401870
		mov	edx, [esp+3Ch]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+58h], esp
		push	edx
		mov	dword ptr [esp+44h], 0
		call	sub_401870
		mov	eax, [esp+50h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+6Ch], esp
		push	eax
		mov	byte ptr [esp+5Ch], 1
		call	sub_401870
		mov	edx, [esp+64h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+80h], esp
		push	edx
		mov	byte ptr [esp+74h], 2
		call	sub_401870
		mov	eax, [esp+78h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+94h], esp
		push	eax
		mov	byte ptr [esp+8Ch], 3
		call	sub_401870
		mov	ecx, esi
		mov	dword ptr [esp+88h], 0FFFFFFFFh
		call	sub_4018AC
		mov	ecx, [esp+8]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn	14h
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 30h dup(0CCh)

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



sub_4142E0	proc near		; CODE XREF: sub_401541j
		add	ecx, 6Ch
		jmp	sub_401C76
sub_4142E0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_414300	proc near		; CODE XREF: sub_40137Fj

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_18		= byte ptr  1Ch
arg_30		= byte ptr  34h
arg_48		= byte ptr  4Ch

		push	0FFFFFFFFh
		push	offset SEH_414300
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	esi
		mov	esi, ecx
		push	60h
		mov	[esp+1Ch+var_4], 3
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+18h+var_10], eax
		test	eax, eax
		mov	byte ptr [esp+18h+var_4], 4
		jz	short loc_414343
		mov	ecx, eax
		call	sub_401BF4
		jmp	short loc_414345
; ---------------------------------------------------------------------------


loc_414343:				; CODE XREF: sub_414300+38j
		xor	eax, eax


loc_414345:				; CODE XREF: sub_414300+41j
		lea	ecx, [esp+18h+arg_0]
		mov	byte ptr [esp+18h+var_4], 3
		push	ecx
		mov	ecx, eax
		mov	[esp+1Ch+var_14], eax
		call	sub_40202C
		mov	eax, [esp+18h+var_14]
		lea	edx, [esp+18h+arg_18]
		push	edx
		lea	ecx, [eax+15h]
		call	sub_40202C
		mov	edx, [esp+18h+var_14]
		lea	ecx, [esp+18h+arg_30]
		push	ecx
		lea	ecx, [edx+2Ah]
		call	sub_40202C
		mov	ecx, [esp+18h+var_14]
		lea	eax, [esp+18h+arg_48]
		push	eax
		add	ecx, 3Fh
		call	sub_40202C
		lea	edx, [esp+18h+var_14]
		lea	ecx, [esi+60h]
		push	edx
		call	sub_401F0F
		lea	ecx, [esp+18h+arg_0]
		mov	byte ptr [esp+18h+var_4], 2
		call	sub_401226
		lea	ecx, [esp+18h+arg_18]
		mov	byte ptr [esp+18h+var_4], 1
		call	sub_401226
		lea	ecx, [esp+18h+arg_30]
		mov	byte ptr [esp+18h+var_4], 0
		call	sub_401226
		lea	ecx, [esp+18h+arg_48]
		mov	[esp+18h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+18h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn	60h
sub_414300	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 40h dup(0CCh)

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



sub_414430	proc near		; CODE XREF: sub_401BF4j

var_11		= byte ptr -11h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_414430
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	esi
		mov	esi, ecx
		mov	[esp+18h+var_10], esi
		call	sub_40142E
		lea	ecx, [esi+15h]
		mov	[esp+18h+var_4], 0
		call	sub_40142E
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+18h+var_4], 1
		call	sub_40142E
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+18h+var_4], 2
		call	sub_40142E
		lea	eax, [esp+18h+var_11]
		lea	ecx, [esi+54h]
		push	eax
		mov	byte ptr [esp+1Ch+var_4], 3
		call	sub_40132A
		mov	ecx, [esp+18h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn
sub_414430	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4144D0:				; CODE XREF: ___:004010FAj
		push	0FFFFFFFFh
		push	offset dword_43AFD8
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, [esp+20h]
		push	esi
		mov	esi, ecx
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+1Ch], esp
		push	eax
		call	sub_401870
		mov	edx, [esp+38h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+54h], esp
		push	edx
		mov	dword ptr [esp+44h], 0
		call	sub_401870
		mov	eax, [esp+4Ch]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+68h], esp
		push	eax
		mov	byte ptr [esp+5Ch], 1
		call	sub_401870
		mov	edx, [esp+60h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+7Ch], esp
		push	edx
		mov	byte ptr [esp+74h], 2
		call	sub_401870
		mov	ecx, esi
		mov	dword ptr [esp+70h], 0FFFFFFFFh
		call	sub_40137F
		mov	ecx, [esp+8]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn	10h
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)

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



sub_4145A0	proc near		; CODE XREF: sub_401DC0j

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_18		= dword	ptr  1Ch

		push	0FFFFFFFFh
		push	offset SEH_4145A0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	esi
		lea	ecx, [esp+18h+var_14]
		mov	[esp+18h+var_4], 0
		mov	[esp+18h+var_10], 0
		call	sub_401E38
		mov	eax, [esp+18h+arg_18]
		lea	ecx, [esp+18h+arg_18]
		push	ecx
		lea	esi, [eax+54h]
		mov	ecx, esi
		call	sub_4012E9
		mov	edx, [eax]
		lea	eax, [esp+18h+arg_18]
		push	eax
		mov	ecx, esi
		mov	[esp+1Ch+var_14], edx
		call	sub_401D9D
		push	eax
		lea	ecx, [esp+1Ch+var_14]
		call	sub_401D70
		test	al, al
		jz	short loc_414650


loc_414605:				; CODE XREF: sub_4145A0+AEj
		lea	ecx, [esp+18h+arg_0]
		push	ecx
		lea	ecx, [esp+1Ch+var_14]
		call	sub_401FC3
		mov	ecx, [eax]
		call	sub_401B86
		test	eax, eax
		jnz	short loc_41462D
		lea	ecx, [esp+18h+var_14]
		call	sub_401FC3
		mov	edx, [eax]
		mov	[esp+18h+var_10], edx


loc_41462D:				; CODE XREF: sub_4145A0+7Cj
		lea	ecx, [esp+18h+var_14]
		call	sub_4020C2
		lea	eax, [esp+18h+arg_18]
		mov	ecx, esi
		push	eax
		call	sub_401D9D
		push	eax
		lea	ecx, [esp+1Ch+var_14]
		call	sub_401D70
		test	al, al
		jnz	short loc_414605


loc_414650:				; CODE XREF: sub_4145A0+63j
		mov	eax, [esp+18h+var_10]
		test	eax, eax
		jz	short loc_414698
		lea	ecx, [esp+18h+var_10]
		push	ecx
		mov	ecx, esi
		call	sub_401258
		mov	ecx, [esp+18h+var_10]
		test	ecx, ecx
		jz	short loc_414673
		push	1
		call	sub_4019EC


loc_414673:				; CODE XREF: sub_4145A0+CAj
		lea	ecx, [esp+18h+arg_0]
		mov	[esp+18h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		pop	esi
		mov	ecx, [esp+14h+var_C]
		mov	large fs:0, ecx
		add	esp, 14h
		retn	1Ch
; ---------------------------------------------------------------------------


loc_414698:				; CODE XREF: sub_4145A0+B6j
		lea	ecx, [esp+18h+arg_0]
		mov	[esp+18h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+18h+var_C]
		xor	al, al
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn	1Ch
sub_4145A0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 50h dup(0CCh)

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



sub_414710	proc near		; CODE XREF: sub_4019ECj

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_402243
		test	[esp+4+arg_0], 1
		jz	short loc_414728
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_414728:				; CODE XREF: sub_414710+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_414710	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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

; Attributes: thunk


sub_414740	proc near		; CODE XREF: sub_402243j
		jmp	sub_401226
sub_414740	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_414760:				; CODE XREF: ___:00401276j
		push	0FFFFFFFFh
		push	offset dword_43B020
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 20h
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ebp, ecx
		xor	ebx, ebx
		push	offset dword_444C6C
		lea	eax, [esp+1Ch]
		push	ebx
		push	eax
		lea	ecx, [esp+4Ch]
		mov	[esp+44h], ebx
		mov	byte ptr [esp+1Fh], 1
		xor	esi, esi
		call	sub_4016B8
		push	offset byte_448F30
		mov	ecx, eax
		mov	byte ptr [esp+3Ch], 1
		call	sub_4012EE
		lea	ecx, [esp+18h]
		mov	edi, eax
		mov	[esp+38h], bl
		call	sub_401226
		cmp	edi, ebx
		jz	short loc_414829


loc_4147C3:				; CODE XREF: ___:00414827j
		mov	ecx, [esp+58h]
		push	ecx
		lea	ecx, [esp+44h]
		sub	esp, 18h
		mov	edx, esp
		mov	[esp+30h], esp
		push	offset dword_444C6C
		push	esi
		push	edx
		call	sub_4016B8
		mov	ecx, ebp
		call	sub_401DC0
		cmp	al, bl
		jnz	short loc_4147F0
		mov	[esp+13h], bl


loc_4147F0:				; CODE XREF: ___:004147EAj
		inc	esi
		push	offset dword_444C6C
		lea	eax, [esp+1Ch]
		push	esi
		push	eax
		lea	ecx, [esp+4Ch]
		call	sub_4016B8
		push	offset byte_448F30
		mov	ecx, eax
		mov	byte ptr [esp+3Ch], 1
		call	sub_4012EE
		lea	ecx, [esp+18h]
		mov	edi, eax
		mov	[esp+38h], bl
		call	sub_401226
		cmp	edi, ebx
		jnz	short loc_4147C3


loc_414829:				; CODE XREF: ___:004147C1j
		lea	ecx, [esp+40h]
		mov	dword ptr [esp+38h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+30h]
		mov	al, [esp+13h]
		pop	edi
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 2Ch
		retn	1Ch
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 40h dup(0CCh)

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



sub_4148A0	proc near		; CODE XREF: sub_40212Bj

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_18		= byte ptr  1Ch

		push	0FFFFFFFFh
		push	offset SEH_4148A0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	esi
		mov	esi, ecx
		lea	ecx, [esp+1Ch+arg_0]
		mov	[esp+1Ch+var_4], 1
		call	sub_4017EE
		test	eax, eax
		jz	loc_4149D4
		lea	ecx, [esp+1Ch+var_18]
		mov	[esp+1Ch+var_14], 0
		call	sub_402275
		add	esi, 6Ch
		lea	eax, [esp+1Ch+var_10]
		push	eax
		mov	ecx, esi
		call	sub_401901
		mov	ecx, [eax]
		lea	edx, [esp+1Ch+var_10]
		mov	[esp+1Ch+var_18], ecx
		push	edx
		mov	ecx, esi
		call	sub_40114A
		push	eax
		lea	ecx, [esp+20h+var_18]
		call	sub_401339
		test	al, al
		jz	short loc_41497E


loc_414914:				; CODE XREF: sub_4148A0+DCj
		lea	eax, [esp+1Ch+arg_0]
		lea	ecx, [esp+1Ch+var_18]
		push	eax
		call	sub_40135C
		mov	ecx, [eax]
		add	ecx, 4
		call	sub_401B86
		test	eax, eax
		jz	short loc_41494C
		lea	ecx, [esp+1Ch+arg_18]
		push	ecx
		lea	ecx, [esp+20h+var_18]
		call	sub_40135C
		mov	ecx, [eax]
		add	ecx, 19h
		call	sub_401B86
		test	eax, eax
		jnz	short loc_41495B


loc_41494C:				; CODE XREF: sub_4148A0+8Ej
		lea	ecx, [esp+1Ch+var_18]
		call	sub_40135C
		mov	edx, [eax]
		mov	[esp+1Ch+var_14], edx


loc_41495B:				; CODE XREF: sub_4148A0+AAj
		lea	ecx, [esp+1Ch+var_18]
		call	sub_40118B
		lea	eax, [esp+1Ch+var_10]
		mov	ecx, esi
		push	eax
		call	sub_40114A
		push	eax
		lea	ecx, [esp+20h+var_18]
		call	sub_401339
		test	al, al
		jnz	short loc_414914


loc_41497E:				; CODE XREF: sub_4148A0+72j
		mov	eax, [esp+1Ch+var_14]
		test	eax, eax
		jz	short loc_4149D4
		lea	ecx, [esp+1Ch+var_14]
		push	ecx
		mov	ecx, esi
		call	sub_40214E
		mov	ecx, [esp+1Ch+var_14]
		test	ecx, ecx
		jz	short loc_4149A1
		push	1
		call	sub_401708


loc_4149A1:				; CODE XREF: sub_4148A0+F8j
		lea	ecx, [esp+1Ch+arg_0]
		mov	byte ptr [esp+1Ch+var_4], 0
		call	sub_401226
		lea	ecx, [esp+1Ch+arg_18]
		mov	[esp+1Ch+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		pop	esi
		mov	ecx, [esp+18h+var_C]
		mov	large fs:0, ecx
		add	esp, 18h
		retn	30h
; ---------------------------------------------------------------------------


loc_4149D4:				; CODE XREF: sub_4148A0+2Ej
					; sub_4148A0+E4j
		lea	ecx, [esp+1Ch+arg_0]
		mov	byte ptr [esp+1Ch+var_4], 0
		call	sub_401226
		lea	ecx, [esp+1Ch+arg_18]
		mov	[esp+1Ch+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+1Ch+var_C]
		xor	al, al
		pop	esi
		mov	large fs:0, ecx
		add	esp, 18h
		retn	30h
sub_4148A0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 60h dup(0CCh)

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



sub_414A70	proc near		; CODE XREF: sub_401708j

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_401A6E
		test	[esp+4+arg_0], 1
		jz	short loc_414A88
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_414A88:				; CODE XREF: sub_414A70+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_414A70	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_414AA0	proc near		; CODE XREF: sub_401A6Ej

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

		push	0FFFFFFFFh
		push	offset SEH_414AA0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+43h]
		mov	[esp+14h+var_4], 2
		call	sub_401226
		lea	ecx, [esi+2Eh]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401226
		lea	ecx, [esi+19h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401226
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_414AA0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_414B30:				; CODE XREF: ___:004013B1j
		push	0FFFFFFFFh
		push	offset dword_43B098
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, [esp+18h]
		push	esi
		mov	esi, ecx
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+1Ch], esp
		push	eax
		call	sub_401870
		mov	edx, [esp+30h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+4Ch], esp
		push	edx
		mov	dword ptr [esp+44h], 0
		call	sub_401870
		mov	ecx, esi
		mov	dword ptr [esp+40h], 0FFFFFFFFh
		call	sub_40212B
		mov	ecx, [esp+8]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn	8
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_414BC0:				; CODE XREF: ___:00401B45j
		push	0FFFFFFFFh
		push	offset dword_43B0B8
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	esi
		mov	esi, ecx
		lea	ecx, [esp+20h]
		mov	dword ptr [esp+18h], 0
		call	sub_4017EE
		test	eax, eax
		jz	loc_414CC7
		lea	ecx, [esp+4]
		mov	dword ptr [esp+8], 0
		call	sub_401037
		add	esi, 60h
		lea	eax, [esp+0Ch]
		push	eax
		mov	ecx, esi
		call	sub_401992
		mov	ecx, [eax]
		lea	edx, [esp+0Ch]
		mov	[esp+4], ecx
		push	edx
		mov	ecx, esi
		call	sub_402257
		push	eax
		lea	ecx, [esp+8]
		call	sub_401AEB
		test	al, al
		jz	short loc_414C7F


loc_414C34:				; CODE XREF: ___:00414C7Dj
		lea	eax, [esp+20h]
		lea	ecx, [esp+4]
		push	eax
		call	sub_4011D1
		mov	ecx, [eax]
		call	sub_401B86
		test	eax, eax
		jnz	short loc_414C5C
		lea	ecx, [esp+4]
		call	sub_4011D1
		mov	ecx, [eax]
		mov	[esp+8], ecx


loc_414C5C:				; CODE XREF: ___:00414C4Bj
		lea	ecx, [esp+4]
		call	sub_4018C5
		lea	edx, [esp+0Ch]
		mov	ecx, esi
		push	edx
		call	sub_402257
		push	eax
		lea	ecx, [esp+8]
		call	sub_401AEB
		test	al, al
		jnz	short loc_414C34


loc_414C7F:				; CODE XREF: ___:00414C32j
		mov	eax, [esp+8]
		test	eax, eax
		jz	short loc_414CC7
		lea	eax, [esp+8]
		mov	ecx, esi
		push	eax
		call	sub_401154
		mov	ecx, [esp+8]
		test	ecx, ecx
		jz	short loc_414CA2
		push	1
		call	sub_4011C7


loc_414CA2:				; CODE XREF: ___:00414C99j
		lea	ecx, [esp+20h]
		mov	dword ptr [esp+18h], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		pop	esi
		mov	ecx, [esp+0Ch]
		mov	large fs:0, ecx
		add	esp, 18h
		retn	18h
; ---------------------------------------------------------------------------


loc_414CC7:				; CODE XREF: ___:00414BEEj
					; ___:00414C85j
		lea	ecx, [esp+20h]
		mov	dword ptr [esp+18h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+10h]
		xor	al, al
		pop	esi
		mov	large fs:0, ecx
		add	esp, 18h
		retn	18h
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 50h dup(0CCh)

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



sub_414D40	proc near		; CODE XREF: sub_4011C7j

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_401B59
		test	[esp+4+arg_0], 1
		jz	short loc_414D58
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_414D58:				; CODE XREF: sub_414D40+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_414D40	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_414D70	proc near		; CODE XREF: sub_401B59j

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

		push	0FFFFFFFFh
		push	offset SEH_414D70
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+54h]
		mov	[esp+14h+var_4], 3
		call	sub_401582
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401226
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401226
		lea	ecx, [esi+15h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401226
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_414D70	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_414E10:				; CODE XREF: ___:004014C9j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset dword_43B148
		push	eax
		mov	large fs:0, esp
		sub	esp, 40h
		push	ebx
		push	esi
		mov	esi, [esp+58h]
		push	edi
		mov	edi, ecx
		lea	ebx, [esi+7Eh]
		lea	ecx, [edi+32h]
		call	sub_4014DD
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_414F0B
		sub	esp, 18h
		lea	eax, [esi+15h]
		mov	ecx, esp
		mov	[esp+74h], esp
		push	eax
		call	sub_4014D3
		sub	esp, 18h
		mov	dword ptr [esp+84h], 0
		mov	ecx, esp
		mov	[esp+3Ch], esp
		push	offset byte_448F30
		call	sub_401870
		or	ebx, 0FFFFFFFFh
		mov	ecx, offset word_44AC5E
		mov	[esp+84h], ebx
		call	sub_40212B
		test	al, al
		jz	loc_415040
		push	0
		push	5
		push	19h
		push	2
		push	4
		push	0Fh
		push	0Fh
		lea	ecx, [esp+38h]
		push	21h
		push	ecx
		call	sub_4019C4
		add	esp, 24h
		mov	edi, eax
		lea	ecx, [esi+69h]
		mov	dword ptr [esp+54h], 1
		call	sub_4014DD
		push	eax
		mov	ecx, edi
		call	sub_4014DD
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+1Ch]
		mov	[esp+54h], ebx
		call	sub_401226
		mov	al, 1
		mov	ecx, [esp+4Ch]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4Ch
		retn	4
; ---------------------------------------------------------------------------


loc_414F0B:				; CODE XREF: ___:00414E46j
		lea	ecx, [edi+4]
		call	sub_4014DD
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_415040
		sub	esp, 18h
		lea	edx, [esi+54h]
		mov	ecx, esp
		mov	[esp+74h], esp
		push	edx
		call	sub_4014D3
		sub	esp, 18h
		lea	eax, [esi+3Fh]
		mov	ecx, esp
		mov	[esp+3Ch], esp
		push	eax
		mov	dword ptr [esp+88h], 2
		call	sub_4014D3
		sub	esp, 18h
		lea	edx, [esi+15h]
		mov	ecx, esp
		mov	[esp+58h], esp
		push	edx
		mov	byte ptr [esp+0A0h], 3
		call	sub_4014D3
		sub	esp, 18h
		mov	ecx, esi
		mov	eax, esp
		mov	[esp+74h], esp
		push	1
		push	offset dword_444600
		push	2
		push	eax
		mov	byte ptr [esp+0C4h], 4
		call	sub_4011EA
		sub	esp, 18h
		mov	byte ptr [esp+0CCh], 5
		mov	ecx, esp
		mov	[esp+90h], esp
		push	1
		push	offset dword_444600
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4011EA
		or	ebx, 0FFFFFFFFh
		mov	ecx, offset word_44AC5E
		mov	[esp+0CCh], ebx
		call	sub_4018AC
		test	al, al
		jz	short loc_415040
		push	0
		push	4
		push	5
		push	14h
		push	10h
		push	5
		push	3
		push	3
		lea	edx, [esp+54h]
		push	1Bh
		push	edx
		call	sub_4019C4
		add	esp, 28h
		mov	edi, eax
		lea	ecx, [esi+69h]
		mov	dword ptr [esp+54h], 6
		call	sub_4014DD
		push	eax
		mov	ecx, edi
		call	sub_4014DD
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+34h]
		mov	[esp+54h], ebx
		call	sub_401226
		mov	al, 1
		mov	ecx, [esp+4Ch]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 4Ch
		retn	4
; ---------------------------------------------------------------------------


loc_415040:				; CODE XREF: ___:00414E92j
					; ___:00414F1Dj ...
		mov	ecx, [esp+4Ch]
		pop	edi
		pop	esi
		xor	al, al
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 4Ch
		retn	4
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 0A0h	dup(0CCh)

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



sub_415100	proc near		; CODE XREF: sub_40132Aj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	0
		mov	cl, [eax]
		push	0
		mov	[esi], cl
		mov	ecx, esi
		call	sub_401ED8
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_415100	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_415140	proc near		; CODE XREF: sub_401726j

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

		sub	esp, 8
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		mov	esi, ecx
		push	0
		push	0
		mov	al, [edi]
		mov	[esi], al
		call	sub_401ED8
		lea	ecx, [esp+10h+arg_0]
		mov	[esi+4], eax
		push	ecx
		mov	ecx, edi
		mov	dword ptr [esi+8], 0
		call	sub_4016D6
		mov	edx, [eax]
		lea	eax, [esp+10h+var_8]
		push	edx
		push	eax
		mov	ecx, edi
		call	sub_40113B
		mov	ecx, [eax]
		lea	edx, [esp+14h+var_4]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_4012E9
		mov	eax, [eax]
		mov	ecx, esi
		push	eax
		call	sub_401735
		mov	eax, esi
		pop	edi
		pop	esi
		add	esp, 8
		retn	4
sub_415140	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

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



sub_4151C0	proc near		; CODE XREF: sub_401582j

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

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_C]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401D9D
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_4012E9
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40146F
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_401CE9
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
sub_4151C0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

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



sub_415230	proc near		; CODE XREF: sub_4012E9j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		push	eax
		call	sub_4020A9
		mov	ecx, [eax]
		add	esp, 4
		push	ecx
		lea	ecx, [esp+8+var_4]
		call	sub_401DBB
		mov	edx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], edx
		pop	ecx
		retn	4
sub_415230	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_415270	proc near		; CODE XREF: sub_401D9Dj

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		lea	ecx, [esp+4+var_4]
		push	eax
		call	sub_401DBB
		mov	ecx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], ecx
		pop	ecx
		retn	4
sub_415270	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

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



sub_4152A0	proc near		; CODE XREF: sub_401488j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+0Ch+arg_0]
		push	ecx
		mov	ecx, esi
		call	sub_401D9D
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_40217B
		pop	esi
		pop	ecx
		retn	4
sub_4152A0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_4152E0	proc near		; CODE XREF: sub_401258j

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

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_4]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401D9D
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_4]
		mov	[esp+10h+var_8], ecx
		push	edx
		mov	ecx, esi
		call	sub_4012E9
		mov	eax, [eax]
		lea	ecx, [esp+10h+var_8]
		push	ecx
		lea	ecx, [esp+14h+var_C]
		mov	[esp+14h+var_C], eax
		call	sub_401D70
		test	al, al
		jz	short loc_41536D
		push	edi
		mov	edi, [esp+14h+arg_0]


loc_41531F:				; CODE XREF: sub_4152E0+8Aj
		lea	ecx, [esp+14h+var_C]
		call	sub_401FC3
		mov	edx, [eax]
		mov	eax, [edi]
		cmp	edx, eax
		jnz	short loc_415351
		lea	eax, [esp+14h+arg_0]
		push	0
		push	eax
		lea	ecx, [esp+1Ch+var_C]
		call	sub_401578
		mov	ecx, [eax]
		lea	edx, [esp+14h+var_4]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401FCD
		jmp	short loc_41535A
; ---------------------------------------------------------------------------


loc_415351:				; CODE XREF: sub_4152E0+4Ej
		lea	ecx, [esp+14h+var_C]
		call	sub_4020C2


loc_41535A:				; CODE XREF: sub_4152E0+6Fj
		lea	eax, [esp+14h+var_8]
		lea	ecx, [esp+14h+var_C]
		push	eax
		call	sub_401D70
		test	al, al
		jnz	short loc_41531F
		pop	edi


loc_41536D:				; CODE XREF: sub_4152E0+38j
		pop	esi
		add	esp, 0Ch
		retn	4
sub_4152E0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

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



sub_4153B0	proc near		; CODE XREF: sub_401E38j
		push	esi
		mov	esi, ecx
		call	sub_401ED3
		mov	eax, esi
		pop	esi
		retn
sub_4153B0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_4153D0	proc near		; CODE XREF: sub_401FC3j
		mov	eax, [ecx]
		push	eax
		call	sub_401F19
		add	esp, 4
		retn
sub_4153D0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_4153F0	proc near		; CODE XREF: sub_4020C2j
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_4020A9
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_4153F0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_415420	proc near		; CODE XREF: sub_401D70j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4015D7
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_415420	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_415450	proc near		; CODE XREF: sub_401F23j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	0
		mov	cl, [eax]
		push	0
		mov	[esi], cl
		mov	ecx, esi
		call	sub_401C8F
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_415450	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_415490	proc near		; CODE XREF: sub_4011B8j

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

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_C]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_402257
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401992
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40132F
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_401E33
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
sub_415490	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

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



sub_415500	proc near		; CODE XREF: sub_401992j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		push	eax
		call	sub_401249
		mov	ecx, [eax]
		add	esp, 4
		push	ecx
		lea	ecx, [esp+8+var_4]
		call	sub_401CDA
		mov	edx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], edx
		pop	ecx
		retn	4
sub_415500	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_415540	proc near		; CODE XREF: sub_402257j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		lea	ecx, [esp+4+var_4]
		push	eax
		call	sub_401CDA
		mov	ecx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], ecx
		pop	ecx
		retn	4
sub_415540	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

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



sub_415570	proc near		; CODE XREF: sub_401F0Fj

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+0Ch+arg_0]
		push	ecx
		mov	ecx, esi
		call	sub_402257
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401AAA
		pop	esi
		pop	ecx
		retn	4
sub_415570	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_4155B0	proc near		; CODE XREF: sub_401933j

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

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_C]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_402257
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401992
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40132F
		pop	esi
		add	esp, 0Ch
		retn
sub_4155B0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_415600	proc near		; CODE XREF: sub_401154j

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

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_4]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_402257
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_4]
		mov	[esp+10h+var_8], ecx
		push	edx
		mov	ecx, esi
		call	sub_401992
		mov	eax, [eax]
		lea	ecx, [esp+10h+var_8]
		push	ecx
		lea	ecx, [esp+14h+var_C]
		mov	[esp+14h+var_C], eax
		call	sub_401AEB
		test	al, al
		jz	short loc_41568D
		push	edi
		mov	edi, [esp+14h+arg_0]


loc_41563F:				; CODE XREF: sub_415600+8Aj
		lea	ecx, [esp+14h+var_C]
		call	sub_4011D1
		mov	edx, [eax]
		mov	eax, [edi]
		cmp	edx, eax
		jnz	short loc_415671
		lea	eax, [esp+14h+arg_0]
		push	0
		push	eax
		lea	ecx, [esp+1Ch+var_C]
		call	sub_4010DC
		mov	ecx, [eax]
		lea	edx, [esp+14h+var_4]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_4017E9
		jmp	short loc_41567A
; ---------------------------------------------------------------------------


loc_415671:				; CODE XREF: sub_415600+4Ej
		lea	ecx, [esp+14h+var_C]
		call	sub_4018C5


loc_41567A:				; CODE XREF: sub_415600+6Fj
		lea	eax, [esp+14h+var_8]
		lea	ecx, [esp+14h+var_C]
		push	eax
		call	sub_401AEB
		test	al, al
		jnz	short loc_41563F
		pop	edi


loc_41568D:				; CODE XREF: sub_415600+38j
		pop	esi
		add	esp, 0Ch
		retn	4
sub_415600	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

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



sub_4156D0	proc near		; CODE XREF: sub_401037j
		push	esi
		mov	esi, ecx
		call	sub_401E97
		mov	eax, esi
		pop	esi
		retn
sub_4156D0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_4156F0	proc near		; CODE XREF: sub_4011D1j
		mov	eax, [ecx]
		push	eax
		call	sub_402144
		add	esp, 4
		retn
sub_4156F0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_415710	proc near		; CODE XREF: sub_4018C5j
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_401249
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_415710	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_415740	proc near		; CODE XREF: sub_401AEBj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401EC4
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_415740	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_415770	proc near		; CODE XREF: sub_401852j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	0
		mov	cl, [eax]
		push	0
		mov	[esi], cl
		mov	ecx, esi
		call	sub_401DB6
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_415770	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_4157B0	proc near		; CODE XREF: sub_4014BFj

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

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_C]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_40114A
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401901
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40140B
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_401F14
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
sub_4157B0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

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



sub_415820	proc near		; CODE XREF: sub_401901j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		push	eax
		call	sub_401BCC
		mov	ecx, [eax]
		add	esp, 4
		push	ecx
		lea	ecx, [esp+8+var_4]
		call	sub_401D7A
		mov	edx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], edx
		pop	ecx
		retn	4
sub_415820	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_415860	proc near		; CODE XREF: sub_40114Aj

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		lea	ecx, [esp+4+var_4]
		push	eax
		call	sub_401D7A
		mov	ecx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], ecx
		pop	ecx
		retn	4
sub_415860	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

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



sub_415890	proc near		; CODE XREF: sub_401410j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+0Ch+arg_0]
		push	ecx
		mov	ecx, esi
		call	sub_40114A
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401D11
		pop	esi
		pop	ecx
		retn	4
sub_415890	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_4158D0	proc near		; CODE XREF: sub_401C76j

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

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_C]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_40114A
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401901
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40140B
		pop	esi
		add	esp, 0Ch
		retn
sub_4158D0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_415920	proc near		; CODE XREF: sub_40214Ej

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

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_4]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_40114A
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_4]
		mov	[esp+10h+var_8], ecx
		push	edx
		mov	ecx, esi
		call	sub_401901
		mov	eax, [eax]
		lea	ecx, [esp+10h+var_8]
		push	ecx
		lea	ecx, [esp+14h+var_C]
		mov	[esp+14h+var_C], eax
		call	sub_401339
		test	al, al
		jz	short loc_4159AD
		push	edi
		mov	edi, [esp+14h+arg_0]


loc_41595F:				; CODE XREF: sub_415920+8Aj
		lea	ecx, [esp+14h+var_C]
		call	sub_40135C
		mov	edx, [eax]
		mov	eax, [edi]
		cmp	edx, eax
		jnz	short loc_415991
		lea	eax, [esp+14h+arg_0]
		push	0
		push	eax
		lea	ecx, [esp+1Ch+var_C]
		call	sub_401EBF
		mov	ecx, [eax]
		lea	edx, [esp+14h+var_4]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401078
		jmp	short loc_41599A
; ---------------------------------------------------------------------------


loc_415991:				; CODE XREF: sub_415920+4Ej
		lea	ecx, [esp+14h+var_C]
		call	sub_40118B


loc_41599A:				; CODE XREF: sub_415920+6Fj
		lea	eax, [esp+14h+var_8]
		lea	ecx, [esp+14h+var_C]
		push	eax
		call	sub_401339
		test	al, al
		jnz	short loc_41595F
		pop	edi


loc_4159AD:				; CODE XREF: sub_415920+38j
		pop	esi
		add	esp, 0Ch
		retn	4
sub_415920	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

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



sub_4159F0	proc near		; CODE XREF: sub_402275j
		push	esi
		mov	esi, ecx
		call	sub_401E42
		mov	eax, esi
		pop	esi
		retn
sub_4159F0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_415A10	proc near		; CODE XREF: sub_40135Cj
		mov	eax, [ecx]
		push	eax
		call	sub_4017E4
		add	esp, 4
		retn
sub_415A10	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_415A30	proc near		; CODE XREF: sub_40118Bj
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_401BCC
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_415A30	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_415A60	proc near		; CODE XREF: sub_401339j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401456
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_415A60	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_415A90	proc near		; CODE XREF: sub_40113Bj

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		push	eax
		call	sub_4020A9
		mov	ecx, [eax]
		add	esp, 4
		push	ecx
		lea	ecx, [esp+8+var_4]
		call	sub_40175D
		mov	edx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], edx
		pop	ecx
		retn	4
sub_415A90	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_415AD0	proc near		; CODE XREF: sub_4016D6j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		lea	ecx, [esp+4+var_4]
		push	eax
		call	sub_40175D
		mov	ecx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], ecx
		pop	ecx
		retn	4
sub_415AD0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

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



sub_415B00	proc near		; CODE XREF: sub_40217Bj

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

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+0Ch+arg_4]
		call	sub_401C62
		mov	edi, eax
		push	edi
		call	sub_401104
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_401ED8
		push	edi
		mov	ebx, eax
		call	sub_401104
		push	edi
		mov	[eax], ebx
		call	sub_401104
		mov	edi, [eax]
		push	edi
		call	sub_401104
		mov	ecx, [eax]
		push	ecx
		call	sub_4020A9
		mov	edx, [esp+1Ch+arg_8]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_401F19
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_4021B7
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		lea	ecx, [esp+10h+arg_8]
		call	sub_401DBB
		mov	ecx, [eax]
		mov	eax, [esp+0Ch+arg_0]
		pop	edi
		pop	esi
		mov	[eax], ecx
		pop	ebx
		retn	0Ch
sub_415B00	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)

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



sub_415BA0	proc near		; CODE XREF: sub_401735j

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

		push	esi
		mov	esi, ecx
		lea	eax, [esp+4+arg_8]
		lea	ecx, [esp+4+arg_4]
		push	eax
		call	sub_401CBC
		test	al, al
		jz	short loc_415BED
		push	edi
		mov	edi, [esp+8+arg_0]


loc_415BBA:				; CODE XREF: sub_415BA0+4Aj
		lea	ecx, [esp+8+arg_4]
		call	sub_401A5F
		push	eax
		lea	ecx, [esp+0Ch+arg_0]
		push	edi
		push	ecx
		mov	ecx, esi
		call	sub_40217B
		lea	ecx, [esp+8+arg_4]
		call	sub_40210D
		lea	edx, [esp+8+arg_8]
		lea	ecx, [esp+8+arg_4]
		push	edx
		call	sub_401CBC
		test	al, al
		jnz	short loc_415BBA
		pop	edi


loc_415BED:				; CODE XREF: sub_415BA0+13j
		pop	esi
		retn	0Ch
sub_415BA0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)

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



sub_415C20	proc near		; CODE XREF: sub_401FCDj

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

		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	eax, [esp+10h+var_4]
		push	0
		push	eax
		lea	ecx, [esp+18h+arg_4]
		call	sub_401578
		mov	ecx, eax
		call	sub_401C62
		mov	esi, eax
		push	esi
		call	sub_4020A9
		push	esi
		mov	ebx, eax
		call	sub_401104
		mov	ecx, [eax]
		push	ecx
		call	sub_4020A9
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_401104
		push	esi
		mov	ebx, eax
		call	sub_4020A9
		mov	eax, [eax]
		push	eax
		call	sub_401104
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_401F19
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_401500
		push	esi
		mov	ecx, edi
		call	sub_401CE9
		mov	eax, [edi+8]
		mov	edx, [esp+10h+arg_4]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+10h+arg_0]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
sub_415C20	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

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



sub_415CE0	proc near		; CODE XREF: sub_40146Fj

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

		sub	esp, 8
		lea	eax, [esp+8+arg_8]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+10h+arg_4]
		call	sub_401D70
		test	al, al
		jz	short loc_415D3A


loc_415CF8:				; CODE XREF: sub_415CE0+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_401578
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401FCD
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_401D70
		test	al, al
		jnz	short loc_415CF8
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_415D3A:				; CODE XREF: sub_415CE0+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_415CE0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

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



sub_415D70	proc near		; CODE XREF: sub_401ED8j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_4020F4
		mov	edi, [esp+8+arg_0]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_415D85
		mov	edi, esi


loc_415D85:				; CODE XREF: sub_415D70+11j
		push	esi
		call	sub_4020A9
		mov	[eax], edi
		mov	edi, [esp+0Ch+arg_4]
		add	esp, 4
		test	edi, edi
		jnz	short loc_415D9A
		mov	edi, esi


loc_415D9A:				; CODE XREF: sub_415D70+26j
		push	esi
		call	sub_401104
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_415D70	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_415DC0	proc near		; CODE XREF: sub_401CE9j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_401E1A
		retn	4
sub_415DC0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

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



sub_415DE0	proc near		; CODE XREF: sub_4020A9j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_415DE0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_415E00	proc near		; CODE XREF: sub_401F19j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_415E00	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_415E20	proc near		; CODE XREF: sub_401ED3j
		mov	eax, ecx
		retn
sub_415E20	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_415E40	proc near		; CODE XREF: sub_401DBBj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_40175D
		mov	eax, esi
		pop	esi
		retn	4
sub_415E40	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_415E70	proc near		; CODE XREF: sub_401578j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_4020C2
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_415E70	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_415EA0	proc near		; CODE XREF: sub_4015D7j

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, [ecx]
		push	esi
		xor	ecx, ecx
		mov	esi, [edx]
		cmp	eax, esi
		pop	esi
		setz	cl
		mov	al, cl
		retn	4
sub_415EA0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_415ED0	proc near		; CODE XREF: sub_401AAAj

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

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+0Ch+arg_4]
		call	sub_401F8C
		mov	edi, eax
		push	edi
		call	sub_401163
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_401C8F
		push	edi
		mov	ebx, eax
		call	sub_401163
		push	edi
		mov	[eax], ebx
		call	sub_401163
		mov	edi, [eax]
		push	edi
		call	sub_401163
		mov	ecx, [eax]
		push	ecx
		call	sub_401249
		mov	edx, [esp+1Ch+arg_8]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_402144
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_4015F0
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		lea	ecx, [esp+10h+arg_8]
		call	sub_401CDA
		mov	ecx, [eax]
		mov	eax, [esp+0Ch+arg_0]
		pop	edi
		pop	esi
		mov	[eax], ecx
		pop	ebx
		retn	0Ch
sub_415ED0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)

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



sub_415F70	proc near		; CODE XREF: sub_4017E9j

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

		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	eax, [esp+10h+var_4]
		push	0
		push	eax
		lea	ecx, [esp+18h+arg_4]
		call	sub_4010DC
		mov	ecx, eax
		call	sub_401F8C
		mov	esi, eax
		push	esi
		call	sub_401249
		push	esi
		mov	ebx, eax
		call	sub_401163
		mov	ecx, [eax]
		push	ecx
		call	sub_401249
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_401163
		push	esi
		mov	ebx, eax
		call	sub_401249
		mov	eax, [eax]
		push	eax
		call	sub_401163
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_402144
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_401D61
		push	esi
		mov	ecx, edi
		call	sub_401E33
		mov	eax, [edi+8]
		mov	edx, [esp+10h+arg_4]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+10h+arg_0]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
sub_415F70	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

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



sub_416030	proc near		; CODE XREF: sub_40132Fj

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

		sub	esp, 8
		lea	eax, [esp+8+arg_8]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+10h+arg_4]
		call	sub_401AEB
		test	al, al
		jz	short loc_41608A


loc_416048:				; CODE XREF: sub_416030+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_4010DC
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_4017E9
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_401AEB
		test	al, al
		jnz	short loc_416048
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41608A:				; CODE XREF: sub_416030+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_416030	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

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



sub_4160C0	proc near		; CODE XREF: sub_401C8Fj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_4015AF
		mov	edi, [esp+8+arg_0]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_4160D5
		mov	edi, esi


loc_4160D5:				; CODE XREF: sub_4160C0+11j
		push	esi
		call	sub_401249
		mov	[eax], edi
		mov	edi, [esp+0Ch+arg_4]
		add	esp, 4
		test	edi, edi
		jnz	short loc_4160EA
		mov	edi, esi


loc_4160EA:				; CODE XREF: sub_4160C0+26j
		push	esi
		call	sub_401163
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_4160C0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_416110	proc near		; CODE XREF: sub_401E33j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_4010D7
		retn	4
sub_416110	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

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



sub_416130	proc near		; CODE XREF: sub_401249j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_416130	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_416150	proc near		; CODE XREF: sub_402144j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_416150	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_416170	proc near		; CODE XREF: sub_401E97j
		mov	eax, ecx
		retn
sub_416170	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416190	proc near		; CODE XREF: sub_401CDAj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401357
		mov	eax, esi
		pop	esi
		retn	4
sub_416190	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4161C0	proc near		; CODE XREF: sub_4010DCj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_4018C5
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_4161C0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4161F0	proc near		; CODE XREF: sub_401EC4j

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, [ecx]
		push	esi
		xor	ecx, ecx
		mov	esi, [edx]
		cmp	eax, esi
		pop	esi
		setz	cl
		mov	al, cl
		retn	4
sub_4161F0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416220	proc near		; CODE XREF: sub_401D11j

arg_0		= dword	ptr  4
arg_4		= byte ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+0Ch+arg_4]
		call	sub_4012CB
		mov	edi, eax
		push	edi
		call	sub_4017DF
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_401DB6
		push	edi
		mov	ebx, eax
		call	sub_4017DF
		push	edi
		mov	[eax], ebx
		call	sub_4017DF
		mov	edi, [eax]
		push	edi
		call	sub_4017DF
		mov	ecx, [eax]
		push	ecx
		call	sub_401BCC
		mov	edx, [esp+1Ch+arg_8]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_4017E4
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_401E15
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		lea	ecx, [esp+10h+arg_8]
		call	sub_401D7A
		mov	ecx, [eax]
		mov	eax, [esp+0Ch+arg_0]
		pop	edi
		pop	esi
		mov	[eax], ecx
		pop	ebx
		retn	0Ch
sub_416220	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4162C0	proc near		; CODE XREF: sub_401078j

var_4		= byte ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	eax, [esp+10h+var_4]
		push	0
		push	eax
		lea	ecx, [esp+18h+arg_4]
		call	sub_401EBF
		mov	ecx, eax
		call	sub_4012CB
		mov	esi, eax
		push	esi
		call	sub_401BCC
		push	esi
		mov	ebx, eax
		call	sub_4017DF
		mov	ecx, [eax]
		push	ecx
		call	sub_401BCC
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_4017DF
		push	esi
		mov	ebx, eax
		call	sub_401BCC
		mov	eax, [eax]
		push	eax
		call	sub_4017DF
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_4017E4
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_401401
		push	esi
		mov	ecx, edi
		call	sub_401F14
		mov	eax, [edi+8]
		mov	edx, [esp+10h+arg_4]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+10h+arg_0]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
sub_4162C0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416380	proc near		; CODE XREF: sub_40140Bj

var_8		= byte ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		sub	esp, 8
		lea	eax, [esp+8+arg_8]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+10h+arg_4]
		call	sub_401339
		test	al, al
		jz	short loc_4163DA


loc_416398:				; CODE XREF: sub_416380+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_401EBF
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401078
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_401339
		test	al, al
		jnz	short loc_416398
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4163DA:				; CODE XREF: sub_416380+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_416380	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416410	proc near		; CODE XREF: sub_401DB6j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_401EBA
		mov	edi, [esp+8+arg_0]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_416425
		mov	edi, esi


loc_416425:				; CODE XREF: sub_416410+11j
		push	esi
		call	sub_401BCC
		mov	[eax], edi
		mov	edi, [esp+0Ch+arg_4]
		add	esp, 4
		test	edi, edi
		jnz	short loc_41643A
		mov	edi, esi


loc_41643A:				; CODE XREF: sub_416410+26j
		push	esi
		call	sub_4017DF
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_416410	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416460	proc near		; CODE XREF: sub_401F14j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_401866
		retn	4
sub_416460	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416480	proc near		; CODE XREF: sub_401BCCj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_416480	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4164A0	proc near		; CODE XREF: sub_4017E4j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_4164A0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4164C0	proc near		; CODE XREF: sub_401E42j
		mov	eax, ecx
		retn
sub_4164C0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4164E0	proc near		; CODE XREF: sub_401D7Aj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401618
		mov	eax, esi
		pop	esi
		retn	4
sub_4164E0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416510	proc near		; CODE XREF: sub_401EBFj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_40118B
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_416510	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416540	proc near		; CODE XREF: sub_401456j

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, [ecx]
		push	esi
		xor	ecx, ecx
		mov	esi, [edx]
		cmp	eax, esi
		pop	esi
		setz	cl
		mov	al, cl
		retn	4
sub_416540	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416570	proc near		; CODE XREF: sub_401104j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_416570	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416590	proc near		; CODE XREF: sub_4020F4j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D2A
		add	esp, 8
		retn	4
sub_416590	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4165C0	proc near		; CODE XREF: sub_401E1Aj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	near ptr word_437AD2
		pop	ecx
		retn	8
sub_4165C0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4165E0	proc near		; CODE XREF: sub_4021B7j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	eax
		push	ecx
		call	sub_40125D
		add	esp, 8
		retn	8
sub_4165E0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416610	proc near		; CODE XREF: sub_401500j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_6
		pop	ecx
		retn	4
sub_416610	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416630	proc near		; CODE XREF: sub_40175Dj

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		retn	4
sub_416630	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416650	proc near		; CODE XREF: sub_401A5Fj
		mov	eax, [ecx]
		push	eax
		call	sub_401F19
		add	esp, 4
		retn
sub_416650	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416670	proc near		; CODE XREF: sub_40210Dj
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_4020A9
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_416670	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4166A0	proc near		; CODE XREF: sub_401CBCj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401E74
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_4166A0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4166D0	proc near		; CODE XREF: sub_401C62j
		mov	eax, [ecx]
		retn
sub_4166D0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4166F0	proc near		; CODE XREF: sub_401163j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_4166F0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416710	proc near		; CODE XREF: sub_4015AFj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D2A
		add	esp, 8
		retn	4
sub_416710	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416740	proc near		; CODE XREF: sub_4010D7j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	near ptr word_437AD2
		pop	ecx
		retn	8
sub_416740	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416760	proc near		; CODE XREF: sub_4015F0j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	eax
		push	ecx
		call	sub_40205E
		add	esp, 8
		retn	8
sub_416760	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416790	proc near		; CODE XREF: sub_401D61j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_5
		pop	ecx
		retn	4
sub_416790	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4167B0	proc near		; CODE XREF: sub_401357j

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		retn	4
sub_4167B0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4167D0	proc near		; CODE XREF: sub_401F8Cj
		mov	eax, [ecx]
		retn
sub_4167D0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4167F0	proc near		; CODE XREF: sub_4017DFj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_4167F0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416810	proc near		; CODE XREF: sub_401EBAj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D2A
		add	esp, 8
		retn	4
sub_416810	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416840	proc near		; CODE XREF: sub_401866j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	near ptr word_437AD2
		pop	ecx
		retn	8
sub_416840	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416860	proc near		; CODE XREF: sub_401E15j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	eax
		push	ecx
		call	sub_4020EA
		add	esp, 8
		retn	8
sub_416860	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416890	proc near		; CODE XREF: sub_401401j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_3
		pop	ecx
		retn	4
sub_416890	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4168B0	proc near		; CODE XREF: sub_401618j

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		retn	4
sub_4168B0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4168D0	proc near		; CODE XREF: sub_4012CBj
		mov	eax, [ecx]
		retn
sub_4168D0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4168F0	proc near		; CODE XREF: sub_401E74j

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, [ecx]
		push	esi
		xor	ecx, ecx
		mov	esi, [edx]
		cmp	eax, esi
		pop	esi
		setz	cl
		mov	al, cl
		retn	4
sub_4168F0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416920	proc near		; CODE XREF: sub_40125Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	eax
		push	4
		call	sub_4011CC
		add	esp, 8
		test	eax, eax
		jz	short locret_41693B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_41693B:				; CODE XREF: sub_416920+11j
		retn
sub_416920	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_6. PRESS KEYPAD "+" TO EXPAND]
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416970	proc near		; CODE XREF: sub_40205Ej

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	eax
		push	4
		call	sub_4011CC
		add	esp, 8
		test	eax, eax
		jz	short locret_41698B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_41698B:				; CODE XREF: sub_416970+11j
		retn
sub_416970	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_5. PRESS KEYPAD "+" TO EXPAND]
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4169C0	proc near		; CODE XREF: sub_4020EAj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	eax
		push	4
		call	sub_4011CC
		add	esp, 8
		test	eax, eax
		jz	short locret_4169DB
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_4169DB:				; CODE XREF: sub_4169C0+11j
		retn
sub_4169C0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND]
aRrrrrrrrrrrrrr	db 'ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌè',1Bh,0
		align 4
		dd 36E900h, 90900000h, 90909090h, 4 dup(0CCCCCCCCh), 449118B9h
		dd 0B426E900h, 9090FFFEh, 90909090h, 4 dup(0CCCCCCCCh)
		dd 416A7068h, 115CE800h, 0C3590002h, 90909090h,	4 dup(0CCCCCCCCh)
		dd 449118B9h, 0B1DEE900h, 9090FFFEh, 90909090h,	4 dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------


loc_416A90:				; CODE XREF: ___:00401C58j
		push	0FFFFFFFFh
		push	offset byte_43B2E1
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+4], esi
		lea	ecx, [esi+9FD83h]
		mov	dword ptr [esp+10h], 1Ah
		call	sub_4021FD
		lea	ecx, [esi+9FD6Ch]
		mov	byte ptr [esp+10h], 19h
		call	sub_401226
		lea	ecx, [esi+9FD57h]
		mov	byte ptr [esp+10h], 18h
		call	sub_401226
		lea	ecx, [esi+9FD42h]
		mov	byte ptr [esp+10h], 17h
		call	sub_401226
		lea	ecx, [esi+9FD2Dh]
		mov	byte ptr [esp+10h], 16h
		call	sub_401226
		lea	ecx, [esi+9FC42h]
		mov	byte ptr [esp+10h], 15h
		call	sub_401F00
		lea	ecx, [esi+9FC31h]
		mov	byte ptr [esp+10h], 14h
		call	sub_401776
		lea	ecx, [esi+9FBFFh]
		mov	byte ptr [esp+10h], 13h
		call	sub_402013
		lea	ecx, [esi+9FBCDh]
		mov	byte ptr [esp+10h], 12h
		call	sub_401E06
		lea	ecx, [esi+9FB93h]
		mov	byte ptr [esp+10h], 11h
		call	sub_401889
		lea	ecx, [esi+9FB05h]
		mov	byte ptr [esp+10h], 10h
		call	sub_401113
		lea	ecx, [esi+9FAD3h]
		mov	byte ptr [esp+10h], 0Fh
		call	sub_401F46
		lea	ecx, [esi+9FA73h]
		mov	byte ptr [esp+10h], 0Eh
		call	sub_401B3B
		lea	ecx, [esi+9FA13h]
		mov	byte ptr [esp+10h], 0Dh
		call	sub_4017DA
		lea	ecx, [esi+8F4BFh]
		mov	byte ptr [esp+10h], 0Ch
		call	sub_4018D9
		lea	ecx, [esi+8F3A2h]
		mov	byte ptr [esp+10h], 0Bh
		call	sub_401ECE
		lea	ecx, [esi+8F285h]
		mov	byte ptr [esp+10h], 0Ah
		call	sub_402239
		lea	ecx, [esi+8F270h]
		mov	byte ptr [esp+10h], 9
		call	sub_4017AD
		lea	ecx, [esi+8F247h]
		mov	byte ptr [esp+10h], 8
		call	sub_401A32
		lea	ecx, [esi+8EF5Dh]
		mov	byte ptr [esp+10h], 7
		call	sub_4013C5
		lea	ecx, [esi+1E6Fh]
		mov	byte ptr [esp+10h], 6
		call	sub_401235
		lea	ecx, [esi+1D29h]
		mov	byte ptr [esp+10h], 5
		call	sub_401EA1
		lea	ecx, [esi+1C58h]
		mov	byte ptr [esp+10h], 4
		call	sub_4014FB
		lea	ecx, [esi+1BBEh]
		mov	byte ptr [esp+10h], 3
		call	sub_401AFA
		lea	ecx, [esi+1B46h]
		mov	byte ptr [esp+10h], 2
		call	sub_401CA3
		lea	ecx, [esi+15Fh]
		mov	byte ptr [esp+10h], 1
		call	sub_401938
		lea	ecx, [esi+3Eh]
		mov	byte ptr [esp+10h], 0
		call	sub_401447
		mov	ecx, esi
		mov	dword ptr [esp+10h], 0FFFFFFFFh
		call	sub_401262
		mov	ecx, [esp+8]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 80h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416D00	proc near		; CODE XREF: sub_401A32j
		push	esi
		mov	esi, ecx
		mov	eax, [esi+15h]
		mov	dword ptr [esi], offset	dword_43F050
		test	eax, eax
		jle	short loc_416D17
		push	eax
		nop
		call	near ptr 71AB9639h


loc_416D17:				; CODE XREF: sub_416D00+Ej
		mov	ecx, esi
		call	sub_40204F
		pop	esi
		retn
sub_416D00	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_416D30:				; CODE XREF: ___:0040126Cj
					; ___:004019CEj
		push	esi
		mov	esi, ecx
		call	sub_401A32
		test	byte ptr [esp+8], 1
		jz	short loc_416D48
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_416D48:				; CODE XREF: ___:00416D3Dj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416D60	proc near		; CODE XREF: sub_4017ADj
		push	esi
		mov	esi, ecx
		mov	eax, [esi+11h]
		mov	dword ptr [esi], offset	dword_43F05C
		test	eax, eax
		jle	short loc_416D77
		push	eax
		call	near ptr 71AB9639h
		nop


loc_416D77:				; CODE XREF: sub_416D60+Ej
		mov	ecx, esi
		call	sub_40204F
		pop	esi
		retn
sub_416D60	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_416D90:				; CODE XREF: ___:00401631j
					; ___:00401CADj
		push	esi
		mov	esi, ecx
		call	sub_4017AD
		test	byte ptr [esp+8], 1
		jz	short loc_416DA8
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_416DA8:				; CODE XREF: ___:00416D9Dj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416DC0	proc near		; CODE XREF: sub_401776j
		mov	dword ptr [ecx], offset	dword_43F068
		jmp	sub_40204F
sub_416DC0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_416DE0:				; CODE XREF: ___:00401929j
					; ___:004021ADj
		push	esi
		mov	esi, ecx
		call	sub_401776
		test	byte ptr [esp+8], 1
		jz	short loc_416DF8
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_416DF8:				; CODE XREF: ___:00416DEDj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416E10	proc near		; CODE XREF: sub_401889j
		mov	dword ptr [ecx], offset	dword_43F074
		add	ecx, 4
		jmp	sub_401023
sub_416E10	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_416E30:				; CODE XREF: ___:00401E60j
		push	0FFFFFFFFh
		push	offset byte_43B4C1
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	esi
		mov	esi, ecx
		mov	[esp+8], esi
		call	sub_4020BD
		lea	ecx, [esi+3Eh]
		mov	dword ptr [esp+14h], 0
		call	sub_4015E6
		lea	ecx, [esi+15Fh]
		mov	byte ptr [esp+14h], 1
		call	sub_40129E
		lea	ecx, [esi+1B46h]
		mov	byte ptr [esp+14h], 2
		call	sub_402018
		lea	ecx, [esi+1BBEh]
		mov	byte ptr [esp+14h], 3
		call	sub_401A00
		lea	ecx, [esi+1C58h]
		mov	byte ptr [esp+14h], 4
		call	sub_401587
		lea	ecx, [esi+1D29h]
		mov	byte ptr [esp+14h], 5
		call	sub_40164F
		lea	ecx, [esi+1E6Fh]
		mov	byte ptr [esp+14h], 6
		call	sub_401780
		lea	ecx, [esi+8EF5Dh]
		mov	byte ptr [esp+14h], 7
		call	sub_40169F
		lea	ecx, [esi+8F247h]
		mov	byte ptr [esp+14h], 8
		call	sub_40182F
		lea	ecx, [esi+8F270h]
		mov	byte ptr [esp+14h], 9
		call	sub_4016BD
		lea	ecx, [esi+8F285h]
		mov	byte ptr [esp+14h], 0Ah
		call	sub_40141F
		lea	ecx, [esi+8F3A2h]
		mov	byte ptr [esp+14h], 0Bh
		call	sub_401302
		lea	ecx, [esi+8F4BFh]
		mov	byte ptr [esp+14h], 0Ch
		call	sub_401271
		lea	ecx, [esi+8F51Fh]
		mov	byte ptr [esp+14h], 0Dh
		call	sub_401D25
		lea	ecx, [esi+9FA13h]
		call	sub_4012FD
		lea	ecx, [esi+9FA73h]
		mov	byte ptr [esp+14h], 0Eh
		call	sub_401A91
		lea	ecx, [esi+9FAD3h]
		mov	byte ptr [esp+14h], 0Fh
		call	sub_401285
		lea	ecx, [esi+9FB05h]
		mov	byte ptr [esp+14h], 10h
		call	sub_401CB7
		lea	ecx, [esi+9FB93h]
		mov	byte ptr [esp+14h], 11h
		call	sub_402121
		mov	byte ptr [esp+14h], 12h
		lea	ecx, [esi+9FBCDh]
		call	sub_40157D
		lea	ecx, [esi+9FBFFh]
		mov	byte ptr [esp+14h], 13h
		call	sub_401799
		lea	ecx, [esi+9FC31h]
		mov	byte ptr [esp+14h], 14h
		call	sub_401069
		lea	ecx, [esi+9FC42h]
		mov	byte ptr [esp+14h], 15h
		call	sub_401073
		lea	ecx, [esi+9FD2Dh]
		mov	byte ptr [esp+14h], 16h
		call	sub_40142E
		lea	ecx, [esi+9FD42h]
		mov	byte ptr [esp+14h], 17h
		call	sub_40142E
		lea	ecx, [esi+9FD57h]
		mov	byte ptr [esp+14h], 18h
		call	sub_40142E
		lea	ecx, [esi+9FD6Ch]
		mov	byte ptr [esp+14h], 19h
		call	sub_40142E
		lea	eax, [esp+7]
		lea	ecx, [esi+9FD83h]
		push	eax
		mov	byte ptr [esp+18h], 1Ah
		call	sub_401B0E
		mov	ecx, [esp+0Ch]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 80h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4170B0	proc near		; CODE XREF: sub_401262j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4170B0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401B1D
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4170B0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417120	proc near		; CODE XREF: sub_401938j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417120
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+179Fh]
		mov	[esp+14h+var_4], 3Ch
		call	sub_40208B
		lea	ecx, [esi+1557h]
		mov	byte ptr [esp+14h+var_4], 3Bh
		call	sub_40208B
		lea	ecx, [esi+130Fh]
		mov	byte ptr [esp+14h+var_4], 3Ah
		call	sub_40208B
		lea	ecx, [esi+10C7h]
		mov	byte ptr [esp+14h+var_4], 39h
		call	sub_40208B
		lea	ecx, [esi+0E7Fh]
		mov	byte ptr [esp+14h+var_4], 38h
		call	sub_40208B
		mov	byte ptr [esp+14h+var_4], 37h
		lea	ecx, [esi+0E51h]
		call	sub_401023
		lea	ecx, [esi+0E23h]
		mov	byte ptr [esp+14h+var_4], 36h
		call	sub_401023
		lea	ecx, [esi+0DF5h]
		mov	byte ptr [esp+14h+var_4], 35h
		call	sub_401023
		lea	ecx, [esi+0DC7h]
		mov	byte ptr [esp+14h+var_4], 34h
		call	sub_401023
		lea	ecx, [esi+0D99h]
		mov	byte ptr [esp+14h+var_4], 33h
		call	sub_401023
		lea	ecx, [esi+0D6Bh]
		mov	byte ptr [esp+14h+var_4], 32h
		call	sub_401023
		lea	ecx, [esi+0D3Dh]
		mov	byte ptr [esp+14h+var_4], 31h
		call	sub_401023
		lea	ecx, [esi+0D0Fh]
		mov	byte ptr [esp+14h+var_4], 30h
		call	sub_401023
		lea	ecx, [esi+0CE1h]
		mov	byte ptr [esp+14h+var_4], 2Fh
		call	sub_401023
		lea	ecx, [esi+0CB3h]
		mov	byte ptr [esp+14h+var_4], 2Eh
		call	sub_401023
		lea	ecx, [esi+0C85h]
		mov	byte ptr [esp+14h+var_4], 2Dh
		call	sub_401023
		lea	ecx, [esi+0C57h]
		mov	byte ptr [esp+14h+var_4], 2Ch
		call	sub_401023
		lea	ecx, [esi+0C29h]
		mov	byte ptr [esp+14h+var_4], 2Bh
		call	sub_401023
		lea	ecx, [esi+0BFBh]
		mov	byte ptr [esp+14h+var_4], 2Ah
		call	sub_401023
		lea	ecx, [esi+0BCDh]
		mov	byte ptr [esp+14h+var_4], 29h
		call	sub_401023
		lea	ecx, [esi+0B9Fh]
		mov	byte ptr [esp+14h+var_4], 28h
		call	sub_401023
		lea	ecx, [esi+0B71h]
		mov	byte ptr [esp+14h+var_4], 27h
		call	sub_401023
		lea	ecx, [esi+0B28h]
		mov	byte ptr [esp+14h+var_4], 26h
		call	sub_401AE6
		lea	ecx, [esi+0ADFh]
		mov	byte ptr [esp+14h+var_4], 25h
		call	sub_401AE6
		lea	ecx, [esi+0A96h]
		mov	byte ptr [esp+14h+var_4], 24h
		call	sub_401AE6
		lea	ecx, [esi+0A4Dh]
		mov	byte ptr [esp+14h+var_4], 23h
		call	sub_401AE6
		lea	ecx, [esi+0A04h]
		mov	byte ptr [esp+14h+var_4], 22h
		call	sub_401AE6
		lea	ecx, [esi+9BBh]
		mov	byte ptr [esp+14h+var_4], 21h
		call	sub_401AE6
		lea	ecx, [esi+972h]
		mov	byte ptr [esp+14h+var_4], 20h
		call	sub_401AE6
		lea	ecx, [esi+929h]
		mov	byte ptr [esp+14h+var_4], 1Fh
		call	sub_401AE6
		lea	ecx, [esi+8E0h]
		mov	byte ptr [esp+14h+var_4], 1Eh
		call	sub_401AE6
		lea	ecx, [esi+897h]
		mov	byte ptr [esp+14h+var_4], 1Dh
		call	sub_401AE6
		mov	byte ptr [esp+14h+var_4], 1Ch
		lea	ecx, [esi+84Eh]
		call	sub_401AE6
		lea	ecx, [esi+805h]
		mov	byte ptr [esp+14h+var_4], 1Bh
		call	sub_401AE6
		lea	ecx, [esi+7BCh]
		mov	byte ptr [esp+14h+var_4], 1Ah
		call	sub_401AE6
		lea	ecx, [esi+773h]
		mov	byte ptr [esp+14h+var_4], 19h
		call	sub_401AE6
		lea	ecx, [esi+72Ah]
		mov	byte ptr [esp+14h+var_4], 18h
		call	sub_401AE6
		lea	ecx, [esi+6E1h]
		mov	byte ptr [esp+14h+var_4], 17h
		call	sub_401AE6
		lea	ecx, [esi+698h]
		mov	byte ptr [esp+14h+var_4], 16h
		call	sub_401AE6
		lea	ecx, [esi+64Fh]
		mov	byte ptr [esp+14h+var_4], 15h
		call	sub_401AE6
		lea	ecx, [esi+606h]
		mov	byte ptr [esp+14h+var_4], 14h
		call	sub_401AE6
		lea	ecx, [esi+5BDh]
		mov	byte ptr [esp+14h+var_4], 13h
		call	sub_401AE6
		lea	ecx, [esi+574h]
		mov	byte ptr [esp+14h+var_4], 12h
		call	sub_401AE6
		lea	ecx, [esi+52Bh]
		mov	byte ptr [esp+14h+var_4], 11h
		call	sub_401AE6
		lea	ecx, [esi+4E2h]
		mov	byte ptr [esp+14h+var_4], 10h
		call	sub_401AE6
		lea	ecx, [esi+499h]
		mov	byte ptr [esp+14h+var_4], 0Fh
		call	sub_401AE6
		lea	ecx, [esi+450h]
		mov	byte ptr [esp+14h+var_4], 0Eh
		call	sub_401AE6
		lea	ecx, [esi+407h]
		mov	byte ptr [esp+14h+var_4], 0Dh
		call	sub_401AE6
		lea	ecx, [esi+3BEh]
		mov	byte ptr [esp+14h+var_4], 0Ch
		call	sub_401AE6
		lea	ecx, [esi+375h]
		mov	byte ptr [esp+14h+var_4], 0Bh
		call	sub_401AE6
		lea	ecx, [esi+32Ch]
		mov	byte ptr [esp+14h+var_4], 0Ah
		call	sub_401AE6
		lea	ecx, [esi+2E3h]
		mov	byte ptr [esp+14h+var_4], 9
		call	sub_401AE6
		lea	ecx, [esi+29Ah]
		mov	byte ptr [esp+14h+var_4], 8
		call	sub_401AE6
		lea	ecx, [esi+251h]
		mov	byte ptr [esp+14h+var_4], 7
		call	sub_401AE6
		lea	ecx, [esi+208h]
		mov	byte ptr [esp+14h+var_4], 6
		call	sub_401AE6
		lea	ecx, [esi+1BFh]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_401AE6
		lea	ecx, [esi+176h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401AE6
		lea	ecx, [esi+12Dh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401AE6
		lea	ecx, [esi+0E4h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401AE6
		mov	byte ptr [esp+14h+var_4], 1
		lea	ecx, [esi+9Bh]
		call	sub_401AE6
		lea	ecx, [esi+52h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401AE6
		lea	ecx, [esi+9]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401AE6
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417120	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 110h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417640	proc near		; CODE XREF: sub_4014FBj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417640
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+0A3h]
		mov	[esp+14h+var_4], 3
		call	sub_401023
		lea	ecx, [esi+75h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401023
		lea	ecx, [esi+47h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401023
		lea	ecx, [esi+19h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417640	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4176E0	proc near		; CODE XREF: sub_401EA1j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4176E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+118h]
		mov	[esp+14h+var_4], 5
		call	sub_401023
		lea	ecx, [esi+0EAh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401023
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401023
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401023
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401023
		lea	ecx, [esi+32h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4176E0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4177B0	proc near		; CODE XREF: sub_401235j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4177B0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+8D0C0h]
		mov	[esp+14h+var_4], 3
		call	sub_401023
		lea	ecx, [esi+8D092h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401023
		lea	ecx, [esi+8D064h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401023
		lea	ecx, [esi+8D036h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+8D008h]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4177B0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417870	proc near		; CODE XREF: sub_402239j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417870
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+0EAh]
		mov	[esp+14h+var_4], 4
		call	sub_401023
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401023
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401023
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401023
		lea	ecx, [esi+32h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417870	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417930	proc near		; CODE XREF: sub_401ECEj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417930
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+0EAh]
		mov	[esp+14h+var_4], 4
		call	sub_401023
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401023
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401023
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401023
		lea	ecx, [esi+32h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417930	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4179F0	proc near		; CODE XREF: sub_4018D9j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4179F0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4179F0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417A60	proc near		; CODE XREF: sub_4017DAj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417A60
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417A60	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417AD0	proc near		; CODE XREF: sub_401B3Bj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417AD0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417AD0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417B40	proc near		; CODE XREF: sub_401F46j
		add	ecx, 4
		jmp	sub_401023
sub_417B40	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417B60	proc near		; CODE XREF: sub_401113j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417B60
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+60h]
		mov	[esp+14h+var_4], 1
		call	sub_401023
		lea	ecx, [esi+32h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417B60	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417BE0	proc near		; CODE XREF: sub_401E06j
		add	ecx, 4
		jmp	sub_401023
sub_417BE0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417C00	proc near		; CODE XREF: sub_402013j
		add	ecx, 4
		jmp	sub_401023
sub_417C00	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417C20	proc near		; CODE XREF: sub_401F00j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417C20
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+0BCh]
		mov	[esp+14h+var_4], 3
		call	sub_401023
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401023
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401023
		lea	ecx, [esi+32h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417C20	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417CC0	proc near		; CODE XREF: sub_401587j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417CC0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_40142E
		lea	ecx, [esi+19h]
		mov	[esp+14h+var_4], 0
		call	sub_401753
		lea	ecx, [esi+47h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401753
		lea	ecx, [esi+75h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401753
		lea	ecx, [esi+0A3h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401753
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F078
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417CC0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417D60	proc near		; CODE XREF: sub_40164Fj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417D60
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401753
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401753
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401753
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401753
		lea	ecx, [esi+0EAh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401753
		lea	ecx, [esi+118h]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_401753
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F07C
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417D60	endp

; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417E30	proc near		; CODE XREF: sub_401780j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417E30
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+8D008h]
		call	sub_401753
		lea	ecx, [esi+8D036h]
		mov	[esp+14h+var_4], 0
		call	sub_401753
		lea	ecx, [esi+8D064h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401753
		lea	ecx, [esi+8D092h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401753
		lea	ecx, [esi+8D0C0h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401753
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F080
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417E30	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417EF0	proc near		; CODE XREF: sub_40182Fj
		push	esi
		mov	esi, ecx
		call	sub_401E88
		mov	dword ptr [esi], offset	dword_43F050
		mov	eax, esi
		pop	esi
		retn
sub_417EF0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417F20	proc near		; CODE XREF: sub_4016BDj
		push	esi
		mov	esi, ecx
		call	sub_401E88
		mov	dword ptr [esi], offset	dword_43F05C
		mov	eax, esi
		pop	esi
		retn
sub_417F20	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417F50	proc near		; CODE XREF: sub_40141Fj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417F50
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401753
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401753
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401753
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401753
		lea	ecx, [esi+0EAh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401753
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F084
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417F50	endp

; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418010	proc near		; CODE XREF: sub_401302j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_418010
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401753
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401753
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401753
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401753
		lea	ecx, [esi+0EAh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401753
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F088
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_418010	endp

; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4180D0	proc near		; CODE XREF: sub_401271j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4180D0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401753
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F08C
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4180D0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418150	proc near		; CODE XREF: sub_401D25j
		push	esi
		mov	esi, ecx
		call	sub_4011B3
		mov	dword ptr [esi], offset	dword_43F090
		mov	eax, esi
		pop	esi
		retn
sub_418150	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418180	proc near		; CODE XREF: sub_4012FDj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_418180
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401753
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F094
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_418180	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418200	proc near		; CODE XREF: sub_401A91j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_418200
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401753
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F098
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_418200	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418280	proc near		; CODE XREF: sub_401285j
		push	esi
		mov	esi, ecx
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		mov	dword ptr [esi], offset	dword_43F09C
		mov	eax, esi
		pop	esi
		retn
sub_418280	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4182B0	proc near		; CODE XREF: sub_401CB7j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4182B0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401753
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401753
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F0A0
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4182B0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418330	proc near		; CODE XREF: sub_40157Dj
		push	esi
		mov	esi, ecx
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		mov	dword ptr [esi], offset	dword_43F0A4
		mov	eax, esi
		pop	esi
		retn
sub_418330	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418360	proc near		; CODE XREF: sub_401799j
		push	esi
		mov	esi, ecx
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		mov	dword ptr [esi], offset	dword_43F0A8
		mov	eax, esi
		pop	esi
		retn
sub_418360	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418390	proc near		; CODE XREF: sub_401073j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_418390
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401753
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401753
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401753
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401753
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F0AC
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_418390	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418430	proc near		; CODE XREF: sub_401267j

var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= byte ptr -4

		sub	esp, 0Ch
		push	ebx
		push	ebp
		mov	ebp, dword_5118D8
		push	esi
		mov	esi, ecx
		push	edi
		xor	bl, bl
		mov	byte ptr [esi+9FD2Ch], 1


loc_418448:				; CODE XREF: sub_418430+E4j
		test	bl, bl
		jnz	loc_41851E
		mov	al, [esi+8EF74h]
		test	al, al
		jnz	short loc_41845E
		mov	bl, 1
		jmp	short loc_418472
; ---------------------------------------------------------------------------


loc_41845E:				; CODE XREF: sub_418430+28j
		lea	ecx, [esi+15Fh]
		call	sub_40186B
		test	al, al
		setz	bl
		test	bl, bl
		jz	short loc_418479


loc_418472:				; CODE XREF: sub_418430+2Cj
		mov	byte ptr [esi+9FD2Ch], 0


loc_418479:				; CODE XREF: sub_418430+40j
		lea	ecx, [esp+1Ch+var_C]
		call	sub_4020A4
		lea	edi, [esi+9FD83h]
		lea	eax, [esp+1Ch+var_4]
		push	eax
		mov	ecx, edi
		call	sub_401F69
		mov	ecx, [eax]
		lea	edx, [esp+1Ch+var_8]
		mov	[esp+1Ch+var_C], ecx
		push	edx
		mov	ecx, edi
		call	sub_401311
		push	eax
		lea	ecx, [esp+20h+var_C]
		call	sub_401703
		test	al, al
		jz	short loc_4184FE


loc_4184B4:				; CODE XREF: sub_418430+CCj
		lea	ecx, [esp+1Ch+var_C]
		call	sub_402234
		mov	ecx, [eax]
		call	sub_40174E
		lea	ecx, [esp+1Ch+var_C]
		call	sub_402234
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_4184DB
		mov	edx, [eax]
		push	1
		mov	ecx, eax
		call	dword ptr [edx]


loc_4184DB:				; CODE XREF: sub_418430+A1j
		lea	ecx, [esp+1Ch+var_C]
		call	sub_401361
		lea	eax, [esp+1Ch+var_8]
		mov	ecx, edi
		push	eax
		call	sub_401311
		push	eax
		lea	ecx, [esp+20h+var_C]
		call	sub_401703
		test	al, al
		jnz	short loc_4184B4


loc_4184FE:				; CODE XREF: sub_418430+82j
		mov	ecx, edi
		call	sub_4010B9
		push	0FAh
		call	ebp
		mov	al, [esi+9FD2Ch]
		test	al, al
		jnz	loc_418448
		test	bl, bl
		jz	short loc_41852B


loc_41851E:				; CODE XREF: sub_418430+1Aj
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_41852B:				; CODE XREF: sub_418430+ECj
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 0Ch
		retn
sub_418430	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418590	proc near		; CODE XREF: sub_401771j

var_1B4		= byte ptr -1B4h
var_19C		= byte ptr -19Ch
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_418590
		push	eax
		mov	large fs:0, esp
		sub	esp, 1A8h
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	ecx, offset byte_4E8E9B
		mov	byte ptr [esi+9FD2Ch], 1
		call	sub_4010B9
		mov	eax, [esp+1C4h+arg_4]
		test	eax, eax
		jz	short loc_4185D0
		push	eax
		jmp	short loc_4185D5
; ---------------------------------------------------------------------------


loc_4185D0:				; CODE XREF: sub_418590+3Bj
		push	offset byte_448F30


loc_4185D5:				; CODE XREF: sub_418590+3Ej
		lea	ecx, [esi+9FD57h]
		call	sub_4015E1
		mov	edi, [esp+1C4h+arg_0]
		test	edi, edi
		jz	short loc_4185EE
		push	edi
		jmp	short loc_4185F3
; ---------------------------------------------------------------------------


loc_4185EE:				; CODE XREF: sub_418590+59j
		push	offset byte_448F30


loc_4185F3:				; CODE XREF: sub_418590+5Cj
		lea	ecx, [esi+9FD6Ch]
		call	sub_4015E1
		push	edi
		lea	ecx, [esi+3Eh]
		call	sub_401384
		mov	al, [esi+42h]
		test	al, al
		jz	short loc_41861D
		mov	eax, [esi+43h]
		lea	ecx, [esi+152h]
		push	eax
		call	sub_401988


loc_41861D:				; CODE XREF: sub_418590+7Cj
		lea	ecx, [esp+1C4h+var_19C]
		push	ecx
		push	202h
		nop
		call	near ptr 71AB664Dh
		call	sub_4014C4
		lea	ecx, [esi+1BBEh]
		call	sub_4017F8
		lea	ecx, [esi+1B46h]
		call	sub_401A05
		lea	edi, [esi+15Fh]
		mov	ecx, edi
		call	sub_401D48
		mov	ebx, dword_5118D8
		push	3E8h
		call	ebx
		mov	ecx, edi
		call	sub_40121C
		push	3E8h
		call	ebx
		mov	al, [esi+48h]
		test	al, al
		jnz	short loc_418681
		mov	al, [esi+7C7h]
		test	al, al
		jz	short loc_41868C


loc_418681:				; CODE XREF: sub_418590+E5j
		lea	ecx, [esi+9FC31h]
		call	sub_4013DE


loc_41868C:				; CODE XREF: sub_418590+EFj
		push	3E8h
		call	ebx
		lea	ebx, [esi+3F9h]
		lea	edi, [esi+1C58h]
		push	ebx
		mov	ecx, edi
		call	sub_401B6D
		mov	ecx, edi
		call	sub_401195
		mov	al, [esi+77Eh]
		test	al, al
		jz	short loc_4186C7
		lea	edx, [esi+71Ch]
		push	ebx
		push	edx
		mov	ecx, edi
		call	sub_401730


loc_4186C7:				; CODE XREF: sub_418590+126j
		mov	al, [esi+7C7h]
		test	al, al
		jz	short loc_4186EE
		lea	ebp, [esi+7F7h]
		mov	ecx, edi
		push	ebp
		call	sub_401FD2
		test	al, al
		jnz	short loc_4186EE
		push	ebx
		push	ebp
		mov	ecx, edi
		call	sub_4014A1
		jmp	short loc_4186FC
; ---------------------------------------------------------------------------


loc_4186EE:				; CODE XREF: sub_418590+13Fj
					; sub_418590+151j
		lea	ebp, [esi+7F7h]
		mov	ecx, edi
		push	ebp
		call	sub_401951


loc_4186FC:				; CODE XREF: sub_418590+15Cj
		mov	al, [esi+7C7h]
		test	al, al
		jz	short loc_418721
		mov	al, [esi+48h]
		test	al, al
		jnz	short loc_418721
		push	ebp
		mov	ecx, edi
		call	sub_401FFA
		test	al, al
		jz	short loc_418721
		push	0
		call	near ptr 77C39E7Eh
		nop


loc_418721:				; CODE XREF: sub_418590+174j
					; sub_418590+17Bj ...
		call	sub_401F0A
		lea	ecx, [esi+168h]
		call	sub_4017EE
		push	eax
		lea	eax, [esp+1C8h+var_1B4]
		push	eax
		call	sub_402040
		add	esp, 8
		push	eax
		lea	ecx, [esi+9FD2Dh]
		mov	[esp+1C8h+var_4], 0
		call	sub_40202C
		lea	ecx, [esp+1C4h+var_1B4]
		mov	[esp+1C4h+var_4], 0FFFFFFFFh
		call	sub_401226
		lea	ebx, [esi+8EF5Dh]
		mov	ecx, ebx
		call	sub_4013DE
		lea	ecx, [esi+8F247h]
		call	sub_4013DE
		lea	ecx, [esi+1D29h]
		call	sub_401D93
		lea	ecx, [esi+1E6Fh]
		call	sub_401AF5
		lea	ecx, [esi+8F285h]
		call	sub_401613
		lea	ecx, [esi+9FA13h]
		call	sub_4016FE
		lea	ecx, [esi+8F3A2h]
		call	sub_402202
		lea	ecx, [esi+9FA73h]
		call	sub_401E65
		mov	ecx, ebx
		call	sub_401A19
		lea	ecx, [esi+9FC42h]
		call	sub_401F7D
		mov	ecx, edi
		call	sub_40104B
		lea	ecx, [esi+8F4BFh]
		call	sub_401C21
		lea	ecx, [esi+9FB05h]
		call	sub_401BA4
		lea	ecx, [esi+9FAD3h]
		call	sub_401F1E
		lea	ecx, [esi+9FB93h]
		call	sub_401974
		lea	ecx, [esi+9FBCDh]
		call	sub_402063
		lea	ecx, [esi+9FBFFh]
		call	sub_401BF9
		mov	ecx, esi
		call	sub_401267
		lea	ecx, [esi+8F270h]
		mov	edi, eax
		call	sub_40174E
		mov	ecx, ebx
		call	sub_40174E
		call	sub_401B2C
		nop
		call	near ptr 71AB4428h
		mov	al, [esi+42h]
		test	al, al
		jz	short loc_418857
		lea	ecx, [esi+152h]
		call	sub_401CEE


loc_418857:				; CODE XREF: sub_418590+2BAj
		mov	ecx, [esp+1C4h+var_C]
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 1B4h
		retn	8
sub_418590	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 0C0h	dup(0CCh)
; ---------------------------------------------------------------------------

locret_418940:				; CODE XREF: ___:00402225j
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_418960:				; CODE XREF: ___:00401EE2j
		mov	eax, [esp+0Ch]
		push	0
		push	eax
		mov	ecx, offset dword_449118
		call	sub_401771
		retn	10h
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418990	proc near		; CODE XREF: sub_401B1Dj

var_C		= byte ptr -0Ch
var_8		= byte ptr -8
var_4		= byte ptr -4

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_C]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_4021DF
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_40162C
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_401438
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_402103
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
sub_418990	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418A00	proc near		; CODE XREF: sub_401B0Ej

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	0
		mov	cl, [eax]
		push	0
		mov	[esi], cl
		mov	ecx, esi
		call	sub_40139D
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_418A00	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418A40	proc near		; CODE XREF: sub_4021FDj

var_C		= byte ptr -0Ch
var_8		= byte ptr -8
var_4		= byte ptr -4

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_C]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401311
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401F69
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40155A
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_40207C
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
sub_418A40	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418AB0	proc near		; CODE XREF: sub_401F69j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		push	eax
		call	sub_4015DC
		mov	ecx, [eax]
		add	esp, 4
		push	ecx
		lea	ecx, [esp+8+var_4]
		call	sub_401D98
		mov	edx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], edx
		pop	ecx
		retn	4
sub_418AB0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418AF0	proc near		; CODE XREF: sub_401311j

var_4		= byte ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [ecx+4]
		lea	ecx, [esp+4+var_4]
		push	eax
		call	sub_401D98
		mov	ecx, [eax]
		mov	eax, [esp+4+arg_0]
		mov	[eax], ecx
		pop	ecx
		retn	4
sub_418AF0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418B20	proc near		; CODE XREF: sub_4010B9j

var_C		= byte ptr -0Ch
var_8		= byte ptr -8
var_4		= byte ptr -4

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_C]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401311
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401F69
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40155A
		pop	esi
		add	esp, 0Ch
		retn
sub_418B20	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418B70	proc near		; CODE XREF: sub_4020A4j
		push	esi
		mov	esi, ecx
		call	sub_401532
		mov	eax, esi
		pop	esi
		retn
sub_418B70	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418B90	proc near		; CODE XREF: sub_402234j
		mov	eax, [ecx]
		push	eax
		call	sub_401172
		add	esp, 4
		retn
sub_418B90	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418BB0	proc near		; CODE XREF: sub_401361j
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_4015DC
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_418BB0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418BE0	proc near		; CODE XREF: sub_401703j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_40223E
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_418BE0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418C10	proc near		; CODE XREF: sub_401438j

var_8		= byte ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		sub	esp, 8
		lea	eax, [esp+8+arg_8]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+10h+arg_4]
		call	sub_40184D
		test	al, al
		jz	short loc_418C6A


loc_418C28:				; CODE XREF: sub_418C10+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_40116D
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_40123F
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_40184D
		test	al, al
		jnz	short loc_418C28
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_418C6A:				; CODE XREF: sub_418C10+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_418C10	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418CA0	proc near		; CODE XREF: sub_402103j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_401D6B
		retn	4
sub_418CA0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418CC0	proc near		; CODE XREF: sub_40155Aj

var_8		= byte ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		sub	esp, 8
		lea	eax, [esp+8+arg_8]
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+10h+arg_4]
		call	sub_401703
		test	al, al
		jz	short loc_418D1A


loc_418CD8:				; CODE XREF: sub_418CC0+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_4012A3
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_40216C
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_401703
		test	al, al
		jnz	short loc_418CD8
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_418D1A:				; CODE XREF: sub_418CC0+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_418CC0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418D50	proc near		; CODE XREF: sub_40139Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_401C67
		mov	edi, [esp+8+arg_0]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_418D65
		mov	edi, esi


loc_418D65:				; CODE XREF: sub_418D50+11j
		push	esi
		call	sub_4015DC
		mov	[eax], edi
		mov	edi, [esp+0Ch+arg_4]
		add	esp, 4
		test	edi, edi
		jnz	short loc_418D7A
		mov	edi, esi


loc_418D7A:				; CODE XREF: sub_418D50+26j
		push	esi
		call	sub_401B31
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_418D50	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418DA0	proc near		; CODE XREF: sub_40207Cj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_4013FC
		retn	4
sub_418DA0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418DC0	proc near		; CODE XREF: sub_4015DCj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_418DC0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418DE0	proc near		; CODE XREF: sub_401172j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_418DE0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418E00	proc near		; CODE XREF: sub_401532j
		mov	eax, ecx
		retn
sub_418E00	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418E20	proc near		; CODE XREF: sub_401D98j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_4020FE
		mov	eax, esi
		pop	esi
		retn	4
sub_418E20	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418E50	proc near		; CODE XREF: sub_40223Ej

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, [ecx]
		push	esi
		xor	ecx, ecx
		mov	esi, [edx]
		cmp	eax, esi
		pop	esi
		setz	cl
		mov	al, cl
		retn	4
sub_418E50	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418E80	proc near		; CODE XREF: sub_40123Fj

var_4		= byte ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	eax, [esp+10h+var_4]
		push	0
		push	eax
		lea	ecx, [esp+18h+arg_4]
		call	sub_40116D
		mov	ecx, eax
		call	sub_401C9E
		mov	esi, eax
		push	esi
		call	sub_401A96
		push	esi
		mov	ebx, eax
		call	sub_401C6C
		mov	ecx, [eax]
		push	ecx
		call	sub_401A96
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_401C6C
		push	esi
		mov	ebx, eax
		call	sub_401A96
		mov	eax, [eax]
		push	eax
		call	sub_401C6C
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_401208
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_40176C
		push	esi
		mov	ecx, edi
		call	sub_402103
		mov	eax, [edi+8]
		mov	edx, [esp+10h+arg_4]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+10h+arg_0]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
sub_418E80	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418F40	proc near		; CODE XREF: sub_401D6Bj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	near ptr word_437AD2
		pop	ecx
		retn	8
sub_418F40	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418F60	proc near		; CODE XREF: sub_40116Dj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_401F28
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_418F60	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418F90	proc near		; CODE XREF: sub_40216Cj

var_4		= byte ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	eax, [esp+10h+var_4]
		push	0
		push	eax
		lea	ecx, [esp+18h+arg_4]
		call	sub_4012A3
		mov	ecx, eax
		call	sub_401EEC
		mov	esi, eax
		push	esi
		call	sub_4015DC
		push	esi
		mov	ebx, eax
		call	sub_401B31
		mov	ecx, [eax]
		push	ecx
		call	sub_4015DC
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_401B31
		push	esi
		mov	ebx, eax
		call	sub_4015DC
		mov	eax, [eax]
		push	eax
		call	sub_401B31
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_401172
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_4018D4
		push	esi
		mov	ecx, edi
		call	sub_40207C
		mov	eax, [edi+8]
		mov	edx, [esp+10h+arg_4]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+10h+arg_0]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
sub_418F90	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419050	proc near		; CODE XREF: sub_401B31j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_419050	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419070	proc near		; CODE XREF: sub_401C67j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D2A
		add	esp, 8
		retn	4
sub_419070	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4190A0	proc near		; CODE XREF: sub_4013FCj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	near ptr word_437AD2
		pop	ecx
		retn	8
sub_4190A0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4190C0	proc near		; CODE XREF: sub_4020FEj

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		retn	4
sub_4190C0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4190E0	proc near		; CODE XREF: sub_4012A3j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_401361
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_4190E0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419110	proc near		; CODE XREF: sub_40176Cj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_8
		pop	ecx
		retn	4
sub_419110	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419130	proc near		; CODE XREF: sub_4018D4j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_4
		pop	ecx
		retn	4
sub_419130	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419150	proc near		; CODE XREF: sub_401EECj
		mov	eax, [ecx]
		retn
sub_419150	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_8. PRESS KEYPAD "+" TO EXPAND]
		db 0Fh dup(90h)
		db 10h dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND]
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4191B0	proc near		; CODE XREF: sub_402121j

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4191B0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	esi
		mov	esi, ecx
		mov	[esp+18h+var_14], esi
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401753
		push	9
		mov	[esp+1Ch+var_4], 0
		mov	dword ptr [esi], offset	dword_43F074
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+18h+var_10], eax
		test	eax, eax
		mov	byte ptr [esp+18h+var_4], 1
		jz	short loc_41921D
		mov	ecx, eax
		call	sub_401F2D
		mov	[esi+32h], eax
		mov	eax, esi
		pop	esi
		mov	ecx, [esp+14h+var_C]
		mov	large fs:0, ecx
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------


loc_41921D:				; CODE XREF: sub_4191B0+4Fj
		mov	ecx, [esp+18h+var_C]
		xor	eax, eax
		mov	[esi+32h], eax
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn
sub_4191B0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419270	proc near		; CODE XREF: sub_401F2Dj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_419270
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		push	14h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h+var_10], eax
		test	eax, eax
		mov	[esp+14h+var_4], 0
		jz	short loc_4192BE
		mov	ecx, eax
		call	sub_4015C3
		mov	[esi], eax
		mov	eax, esi
		pop	esi
		mov	ecx, [esp+10h+var_C]
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_4192BE:				; CODE XREF: sub_419270+31j
		mov	ecx, [esp+14h+var_C]
		xor	eax, eax
		mov	[esi], eax
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_419270	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419300	proc near		; CODE XREF: sub_4015C3j
		mov	eax, ecx
		retn
sub_419300	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419320	proc near		; CODE XREF: sub_401974j

var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_419320
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	esi
		push	0
		push	14h
		push	1
		push	14h
		push	13h
		push	14h
		push	5
		lea	eax, [esp+44h+var_24]
		push	0Eh
		mov	esi, ecx
		push	eax
		call	sub_4019C4
		add	esp, 24h
		push	esi
		mov	ecx, eax
		mov	[esp+2Ch+var_4], 0
		call	sub_40168B
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+28h+var_24]
		mov	[esp+28h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+28h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 24h
		retn
sub_419320	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4193C0:				; CODE XREF: ___:0040111Dj
		push	0FFFFFFFFh
		push	offset word_43BFA6
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 298h
		push	ebx
		mov	ebx, ecx
		push	esi
		mov	[esp+8], ebx
		lea	ecx, [ebx+4]
		call	sub_4017EE
		mov	esi, [esp+2B0h]
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_419766
		push	ebp
		push	edi
		push	offset dword_444600
		lea	eax, [esp+7Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		mov	ecx, eax
		call	sub_40168B
		push	eax
		call	near ptr 77C1BF18h
		nop
		add	esp, 4
		lea	ecx, [esp+78h]
		mov	[ebx+36h], eax
		call	sub_401226
		mov	ecx, esi
		call	sub_4017EE
		push	eax
		lea	ecx, [esp+44h]
		call	sub_401870
		xor	ebp, ebp
		push	offset dword_444D70
		lea	ecx, [esp+44h]
		mov	[esp+2B4h], ebp
		mov	[esp+18h], ebp
		call	sub_4013ED
		test	eax, eax
		jz	short loc_41946F
		mov	dword ptr [esp+14h], 2
		jmp	short loc_419489
; ---------------------------------------------------------------------------


loc_41946F:				; CODE XREF: ___:00419463j
		push	offset dword_444D6C
		lea	ecx, [esp+44h]
		call	sub_4013ED
		test	eax, eax
		jz	short loc_419489
		mov	dword ptr [esp+14h], 1


loc_419489:				; CODE XREF: ___:0041946Dj
					; ___:0041947Fj
		mov	ecx, [ebx+32h]
		mov	edi, offset dword_444D60
		xor	eax, eax
		mov	edx, [ecx]
		or	ecx, 0FFFFFFFFh
		add	edx, 2
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebx+32h]
		mov	edx, [ecx]
		mov	byte ptr [edx],	1
		mov	eax, [ebx+32h]
		mov	byte ptr [esp+19Bh], 0
		mov	byte ptr [esp+21Bh], 0
		mov	byte ptr [esp+2A7h], 0
		mov	byte ptr [esp+11Bh], 0
		mov	eax, [eax]
		cmp	byte ptr [eax],	0
		jnz	short loc_419518
		mov	esi, dword_511AA8
		add	eax, 2
		push	offset dword_444D60
		push	eax
		call	esi
		add	esp, 8
		test	eax, eax
		jz	short loc_419518
		mov	ecx, [ebx+32h]
		push	offset dword_444D5C
		mov	edx, [ecx]
		add	edx, 2
		push	edx
		call	esi
		add	esp, 8
		test	eax, eax
		jnz	loc_41974C


loc_419518:				; CODE XREF: ___:004194E3j
					; ___:004194FBj
		push	0C00h
		mov	dword ptr [esp+24h], 0C00h
		nop
		call	near ptr 77C2C407h
		add	esp, 4
		mov	esi, eax
		lea	eax, [esp+20h]
		mov	[esp+18h], esi
		push	1
		push	eax
		push	esi
		mov	[esi], ebp
		call	near ptr dword_437F50
		mov	eax, [esi]
		mov	[esp+1Ch], ebp
		cmp	eax, ebp
		jle	loc_419742
		lea	ebp, [esi+14h]


loc_419554:				; CODE XREF: ___:0041973Cj
		cmp	dword ptr [ebp-10h], 2
		jnz	short loc_419568
		mov	ecx, [ebx+32h]
		mov	edx, [ecx]
		cmp	byte ptr [edx],	0
		jz	loc_41972C


loc_419568:				; CODE XREF: ___:00419558j
		mov	ax, [ebp-8]
		mov	esi, dword_511C5C
		push	eax
		call	esi
		mov	cx, [ebp+0]
		mov	[esp+24h], eax
		push	ecx
		call	esi
		mov	esi, [esp+10h]
		mov	ebx, eax
		mov	eax, [ebp-0Ch]
		push	1
		lea	edx, [esp+120h]
		push	7Fh
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_40147E
		mov	edx, [ebp-4]
		push	0
		lea	ecx, [esp+1A0h]
		push	7Fh
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_40147E
		mov	eax, [ebp-10h]
		sub	eax, 2
		jz	short loc_4195CC
		sub	eax, 3
		jnz	short loc_4195F2
		lea	edx, [esp+58h]
		mov	edi, offset dword_444D4C
		jmp	short loc_4195D5
; ---------------------------------------------------------------------------


loc_4195CC:				; CODE XREF: ___:004195BAj
		lea	edx, [esp+58h]
		mov	edi, offset dword_444D40


loc_4195D5:				; CODE XREF: ___:004195CAj
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb


loc_4195F2:				; CODE XREF: ___:004195BFj
		mov	ecx, 23h
		xor	eax, eax
		lea	edi, [esp+21Ch]
		rep stosd
		mov	ecx, 23h
		lea	edi, [esp+90h]
		rep stosd
		cmp	dword ptr [ebp-10h], 2
		jnz	short loc_419618
		xor	ebx, ebx


loc_419618:				; CODE XREF: ___:00419614j
		mov	esi, [esp+24h]
		lea	ecx, [esp+11Ch]
		and	esi, 0FFFFh
		lea	edx, [esp+21Ch]
		push	esi
		push	ecx
		push	offset dword_444D38
		push	8Bh
		push	edx
		call	near ptr 77C3FA76h
		nop
		mov	edi, ebx
		lea	eax, [esp+1B0h]
		and	edi, 0FFFFh
		lea	ecx, [esp+0A4h]
		push	edi
		push	eax
		push	offset dword_444D38
		push	8Bh
		push	ecx
		nop
		call	near ptr 77C3FA76h
		add	esp, 28h
		lea	ecx, [esp+28h]
		call	sub_40142E
		mov	eax, [esp+14h]
		mov	byte ptr [esp+2B0h], 1
		test	bx, bx
		jnz	short loc_4196AE
		cmp	eax, 1
		jz	loc_419713
		mov	edx, [esp+10h]
		mov	eax, [edx+36h]
		test	eax, eax
		jz	short loc_4196A1
		cmp	eax, esi
		jnz	short loc_419713


loc_4196A1:				; CODE XREF: ___:0041969Bj
		lea	eax, [esp+58h]
		push	esi
		push	eax
		push	offset dword_444D30
		jmp	short loc_4196D4
; ---------------------------------------------------------------------------


loc_4196AE:				; CODE XREF: ___:00419687j
		cmp	eax, 2
		jz	short loc_419713
		mov	ecx, [esp+10h]
		mov	eax, [ecx+36h]
		test	eax, eax
		jz	short loc_4196C2
		cmp	eax, edi
		jnz	short loc_419713


loc_4196C2:				; CODE XREF: ___:004196BCj
		lea	edx, [esp+90h]
		lea	eax, [esp+58h]
		push	edx
		push	eax
		push	offset dword_444D28


loc_4196D4:				; CODE XREF: ___:004196ACj
		lea	ecx, [esp+34h]
		push	ecx
		call	sub_40102D
		mov	esi, [esp+2C8h]
		add	esp, 10h
		lea	ecx, [esi+69h]
		call	sub_4014DD
		push	eax
		lea	ecx, [esp+2Ch]
		call	sub_4014DD
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D8075
		call	sub_401118


loc_419713:				; CODE XREF: ___:0041968Cj
					; ___:0041969Fj ...
		lea	ecx, [esp+28h]
		mov	byte ptr [esp+2B0h], 0
		call	sub_401226
		mov	esi, [esp+18h]
		mov	ebx, [esp+10h]


loc_41972C:				; CODE XREF: ___:00419562j
		mov	eax, [esp+1Ch]
		mov	ecx, [esi]
		inc	eax
		add	ebp, 14h
		cmp	eax, ecx
		mov	[esp+1Ch], eax
		jl	loc_419554


loc_419742:				; CODE XREF: ___:0041954Bj
		push	esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4


loc_41974C:				; CODE XREF: ___:00419512j
		lea	ecx, [esp+40h]
		mov	dword ptr [esp+2B0h], 0FFFFFFFFh
		call	sub_401226
		pop	edi
		mov	al, 1
		pop	ebp
		jmp	short loc_419768
; ---------------------------------------------------------------------------


loc_419766:				; CODE XREF: ___:004193FDj
		mov	al, 1


loc_419768:				; CODE XREF: ___:00419764j
		mov	ecx, [esp+2A0h]
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 2A4h
		retn	4
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 100h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419890	proc near		; CODE XREF: sub_40147Ej

var_20		= byte ptr -20h
arg_0		= byte ptr  4
arg_3		= dword	ptr  7
arg_8		= dword	ptr  0Ch
arg_C		= byte ptr  10h

		mov	eax, [esp+arg_3]
		sub	esp, 20h
		mov	edx, [esp+25h]
		and	eax, 0FFh
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		mov	ecx, [esp+32h]
		mov	ebx, [esp+2Ch+arg_8]
		mov	ebp, [esp+2Ch+arg_3+1]
		push	eax
		mov	eax, [esp+34h]
		and	ecx, 0FFh
		and	edx, 0FFh
		push	ecx
		and	eax, 0FFh
		push	edx
		push	eax
		push	offset dword_444CA0
		push	ebx
		push	ebp
		nop
		call	near ptr 77C3FA76h
		mov	ecx, [esi+32h]
		add	esp, 1Ch
		mov	al, [ecx+4]
		test	al, al
		jnz	short loc_419950
		mov	al, [esp+2Ch+arg_C]
		test	al, al
		jnz	short loc_41991E
		mov	eax, [esp+30h]
		test	eax, eax
		jz	short loc_41991E
		push	2
		lea	edx, [esp+30h+arg_0]
		push	4
		push	edx
		nop
		call	near ptr 71ABE479h
		test	eax, eax
		jz	short loc_419950
		mov	eax, [eax]
		push	ebx
		push	eax
		push	ebp
		call	near ptr 77C47A90h
		nop
		add	esp, 0Ch
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 20h
		retn	10h
; ---------------------------------------------------------------------------


loc_41991E:				; CODE XREF: sub_419890+5Aj
					; sub_419890+62j
		push	edi
		mov	ecx, 7
		xor	eax, eax
		lea	edi, [esp+30h+var_20]
		rep stosd
		lea	ecx, [esp+30h+var_20]
		push	1Dh
		push	ecx
		stosw
		call	near ptr 71AB50C8h
		nop
		test	eax, eax
		pop	edi
		jnz	short loc_419950
		lea	edx, [esp+2Ch+var_20]
		push	ebx
		push	edx
		push	ebp
		nop
		call	near ptr 77C47A90h
		add	esp, 0Ch


loc_419950:				; CODE XREF: sub_419890+52j
					; sub_419890+75j ...
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 20h
		retn	10h
sub_419890	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4199A0	proc near		; CODE XREF: sub_401F0Aj
		nop
		call	near ptr 27D0B1Ah
		push	eax
		nop
		call	near ptr 77C371BCh
		pop	ecx
		retn
sub_4199A0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4199C0	proc near		; CODE XREF: sub_4021C6j

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ecx
		push	esi
		call	near ptr 77C371D3h
		nop
		mov	esi, [esp+8+arg_0]
		mov	[esp+8+var_4], eax
		mov	eax, [esp+8+arg_4]
		fild	[esp+8+var_4]
		sub	eax, esi
		mov	[esp+8+arg_4], eax
		fimul	[esp+8+arg_4]
		fmul	dbl_43F0B0
		call	near ptr word_437BDA
		sub	esi, eax
		mov	eax, esi
		pop	esi
		pop	ecx
		retn
sub_4199C0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419A10:				; CODE XREF: ___:00401C99j
		nop
		call	near ptr 77C371D3h
		cdq
		idiv	dword ptr [esp+4]
		mov	eax, edx
		retn
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------

locret_419A30:				; CODE XREF: ___:00401528j
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419A50:				; CODE XREF: ___:00401FE1j
		xor	al, al
		retn	4
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419A70	proc near		; CODE XREF: sub_40152Dj

arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_C]
		mov	ecx, [esp+arg_4]
		mov	edx, [esp+arg_8]
		cmp	eax, 1
		setnl	al
		mov	byte ptr [esp+arg_C], al
		push	ecx
		mov	eax, [esp+4+arg_C]
		push	edx
		push	eax
		push	0
		mov	ecx, offset byte_4D8075
		call	sub_401118
		retn
sub_419A70	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419AB0:				; CODE XREF: ___:0040150Fj
		sub	esp, 0Ch
		mov	eax, [esp+20h]
		push	ebx
		push	ebp
		push	esi
		xor	esi, esi
		push	edi
		cmp	eax, esi
		mov	dword ptr [esp+18h], 80h
		mov	[esp+10h], esi
		jz	short loc_419AE3
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		cmp	eax, esi
		mov	[esp+10h], eax
		jz	short loc_419AE3
		mov	[esp+18h], eax


loc_419AE3:				; CODE XREF: ___:00419ACBj
					; ___:00419ADDj
		mov	edi, [esp+28h]
		mov	ebx, [esp+24h]
		mov	ebp, [esp+20h]
		mov	[esp+14h], esi
		mov	esi, offset dword_508E2C


loc_419AF8:				; CODE XREF: ___:00419B49j
		mov	ecx, [esp+14h]
		mov	eax, [esp+18h]
		cmp	ecx, eax
		jge	short loc_419B4B
		cmp	byte ptr [esi],	0
		jz	short loc_419B34
		mov	eax, [esp+30h]
		test	eax, eax
		jz	short loc_419B28
		mov	ecx, [esp+10h]
		test	ecx, ecx
		jnz	short loc_419B28
		push	eax
		push	esi
		call	near ptr 77C47C60h
		nop
		add	esp, 8
		test	eax, eax
		jz	short loc_419B34


loc_419B28:				; CODE XREF: ___:00419B0Fj
					; ___:00419B17j
		push	edi
		push	esi
		push	ebx
		push	ebp
		call	sub_40152D
		add	esp, 10h


loc_419B34:				; CODE XREF: ___:00419B07j
					; ___:00419B26j
		mov	edx, [esp+14h]
		add	esi, 80h
		inc	edx
		cmp	esi, offset dword_50CE2C
		mov	[esp+14h], edx
		jl	short loc_419AF8


loc_419B4B:				; CODE XREF: ___:00419B02j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419B90:				; CODE XREF: ___:00402289j
		push	ebx
		mov	ebx, dword_511B04
		push	esi
		push	edi
		mov	edi, [esp+10h]
		mov	esi, offset dword_508E2C


loc_419BA2:				; CODE XREF: ___:00419BBEj
		cmp	byte ptr [esi],	0
		jz	short loc_419BB2
		push	edi
		push	esi
		call	ebx
		add	esp, 8
		test	eax, eax
		jnz	short loc_419BC6


loc_419BB2:				; CODE XREF: ___:00419BA5j
		add	esi, 80h
		cmp	esi, offset dword_50CE2C
		jl	short loc_419BA2
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_419BC6:				; CODE XREF: ___:00419BB0j
		pop	edi
		pop	esi
		mov	eax, 1
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419BE0:				; CODE XREF: ___:004010D2j
		sub	esp, 10h
		lea	eax, [esp+0]
		push	esi
		push	edi
		push	eax
		nop
		call	near ptr 27B0000h
		mov	edi, dword_511B08
		mov	esi, offset dword_50CE2C


loc_419BFB:				; CODE XREF: ___:00419C1Bj
		cmp	byte ptr [esi],	0
		jz	short loc_419C0F
		push	7Fh
		lea	ecx, [esi+80h]
		push	esi
		push	ecx
		call	edi
		add	esp, 0Ch


loc_419C0F:				; CODE XREF: ___:00419BFEj
		sub	esi, 80h
		cmp	esi, offset dword_508E2C
		jge	short loc_419BFB
		mov	edx, [esp+1Ch]
		mov	eax, [esp+14h]
		mov	ecx, [esp+12h]
		push	edx
		mov	edx, [esp+14h]
		and	eax, 0FFFFh
		and	ecx, 0FFFFh
		push	eax
		mov	eax, [esp+10h]
		and	edx, 0FFFFh
		push	ecx
		mov	ecx, [esp+1Ah]
		push	edx
		mov	edx, [esp+1Ah]
		and	eax, 0FFFFh
		and	ecx, 0FFFFh
		push	eax
		and	edx, 0FFFFh
		push	ecx
		push	edx
		push	offset dword_444D74
		push	80h
		push	offset dword_508E2C
		call	near ptr 77C3FA76h
		nop
		add	esp, 28h
		pop	edi
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419CB0:				; CODE XREF: ___:004012DAj
		sub	esp, 600h
		mov	ecx, 80h
		xor	eax, eax
		push	ebx
		push	ebp
		push	esi
		push	edi
		lea	edi, [esp+10h]
		mov	esi, [esp+614h]
		rep stosd
		mov	ecx, 80h
		lea	edi, [esp+210h]
		mov	ebp, dword_511B08
		push	1FFh
		rep stosd
		mov	ecx, 80h
		lea	edi, [esp+414h]
		rep stosd
		lea	eax, [esp+14h]
		push	esi
		push	eax
		call	ebp
		mov	edx, [esp+628h]
		or	ecx, 0FFFFFFFFh
		mov	edi, edx
		xor	eax, eax
		add	esp, 0Ch
		repne scasb
		not	ecx
		dec	ecx
		cmp	ecx, 180h
		jbe	short loc_419D21
		mov	[edx+180h], al


loc_419D21:				; CODE XREF: ___:00419D19j
		mov	ebx, [esp+618h]
		lea	ecx, [esp+10h]
		push	ebx
		push	ecx
		nop
		call	near ptr 77C47C60h
		add	esp, 8
		test	eax, eax
		jz	loc_419E32


loc_419D3F:				; CODE XREF: ___:00419E25j
		lea	edx, [esp+10h]
		push	ebx
		push	edx
		nop
		call	near ptr 77C47C60h
		mov	esi, eax
		mov	edi, ebx
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	1FFh
		add	ecx, esi
		lea	eax, [esp+41Ch]
		push	ecx
		push	eax
		call	ebp
		lea	ecx, [esp+24h]
		push	1FFh
		lea	edx, [esp+228h]
		push	ecx
		push	edx
		mov	byte ptr [esi],	0
		call	ebp
		lea	edx, [esi+1]
		add	esp, 20h
		test	edx, edx
		jz	short loc_419E00
		lea	eax, [ebx-1]
		test	eax, eax
		jz	short loc_419E00
		lea	edi, [ebx-1]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	edi, edx
		mov	esi, ecx
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		cmp	ecx, esi
		jbe	short loc_419DDD
		mov	edx, [esp+61Ch]
		lea	ecx, [esp+410h]
		push	ecx
		lea	eax, [esp+214h]
		push	edx
		push	eax
		lea	ecx, [esp+1Ch]
		push	offset dword_444DA4
		push	ecx
		nop
		call	near ptr byte_5FC011
		add	esp, 14h
		jmp	short loc_419E00
; ---------------------------------------------------------------------------


loc_419DDD:				; CODE XREF: ___:00419DAEj
		mov	edx, [esp+61Ch]
		lea	eax, [esp+210h]
		push	edx
		push	eax
		lea	ecx, [esp+18h]
		push	offset dword_444D9C
		push	ecx
		nop
		call	near ptr byte_5FC011
		add	esp, 10h


loc_419E00:				; CODE XREF: ___:00419D8Aj
					; ___:00419D91j ...
		mov	edx, [esp+61Ch]
		mov	esi, dword_511B04
		push	edx
		push	ebx
		call	esi
		add	esp, 8
		test	eax, eax
		jnz	short loc_419E2B
		lea	eax, [esp+10h]
		push	ebx
		push	eax
		call	esi
		add	esp, 8
		test	eax, eax
		jnz	loc_419D3F


loc_419E2B:				; CODE XREF: ___:00419E16j
		mov	esi, [esp+614h]


loc_419E32:				; CODE XREF: ___:00419D39j
		lea	edi, [esp+10h]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		push	ecx
		lea	ecx, [esp+14h]
		push	ecx
		push	esi
		call	ebp
		add	esp, 0Ch
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 600h
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 70h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419ED0:				; CODE XREF: ___:004018DEj
		sub	esp, 10h
		push	esi
		push	0
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_419EEE
		or	eax, eax
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_419EEE:				; CODE XREF: ___:00419EE5j
		mov	ecx, [esp+18h]
		xor	eax, eax
		mov	[esp+4], eax
		push	ecx
		mov	[esp+0Ch], eax
		mov	word ptr [esp+8], 2
		mov	[esp+10h], eax
		mov	[esp+14h], eax
		nop
		call	near ptr 71AB2B66h
		lea	edx, [esp+4]
		push	10h
		push	edx
		push	esi
		mov	[esp+12h], ax
		mov	dword ptr [esp+14h], 0
		nop
		call	near ptr 71AB3E00h
		test	eax, eax
		jz	short loc_419F39
		or	eax, 0FFFFFFFFh
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_419F39:				; CODE XREF: ___:00419F2Fj
		push	7FFFFFFFh
		push	esi
		call	near ptr 71AB88D3h
		nop
		test	eax, eax
		jz	short loc_419F51
		or	eax, 0FFFFFFFFh
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_419F51:				; CODE XREF: ___:00419F47j
		mov	eax, esi
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419F90:				; CODE XREF: ___:00401E83j
		push	edi
		xor	edi, edi
		mov	eax, offset byte_4E02A5


loc_419F98:				; CODE XREF: ___:00419FA8j
		cmp	dword ptr [eax], 0
		jz	short loc_419FAA
		add	eax, 316h
		inc	edi
		cmp	eax, offset byte_4E7E15
		jle	short loc_419F98


loc_419FAA:				; CODE XREF: ___:00419F9Bj
		cmp	edi, 13h
		jle	short loc_419FB4
		or	eax, 0FFFFFFFFh
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_419FB4:				; CODE XREF: ___:00419FADj
		lea	eax, [edi+edi*4]
		push	ebx
		shl	eax, 4
		sub	eax, edi
		mov	ebx, dword_511C00
		push	esi
		lea	eax, [eax+eax*4]
		lea	esi, ds:4E01ABh[eax*2]
		mov	eax, [esp+10h]
		push	eax
		push	esi
		call	ebx
		mov	ecx, [esp+24h]
		mov	edx, [esp+1Ch]
		mov	eax, [esp+20h]
		mov	[esi+0FAh], ecx
		mov	ecx, [esp+28h]
		mov	[esi+0FEh], edi
		mov	[esi+106h], edx
		mov	[esi+10Ah], eax
		add	esi, 10Eh
		push	ecx
		push	esi
		call	ebx
		add	esp, 10h
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41A050:				; CODE XREF: ___:004013F2j
		push	edi
		xor	edi, edi
		mov	eax, offset byte_4D8735


loc_41A058:				; CODE XREF: ___:0041A068j
		cmp	dword ptr [eax], 0
		jz	short loc_41A06A
		add	eax, 316h
		inc	edi
		cmp	eax, offset byte_4E02A5
		jle	short loc_41A058


loc_41A06A:				; CODE XREF: ___:0041A05Bj
		cmp	edi, 13h
		jle	short loc_41A074
		or	eax, 0FFFFFFFFh
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_41A074:				; CODE XREF: ___:0041A06Dj
		lea	eax, [edi+edi*4]
		push	ebx
		shl	eax, 4
		sub	eax, edi
		mov	ebx, dword_511C00
		push	esi
		lea	eax, [eax+eax*4]
		lea	esi, ds:4D863Bh[eax*2]
		mov	eax, [esp+10h]
		push	eax
		push	esi
		call	ebx
		mov	ecx, [esp+24h]
		mov	edx, [esp+1Ch]
		mov	eax, [esp+20h]
		mov	[esi+0FAh], ecx
		mov	ecx, [esp+28h]
		mov	[esi+0FEh], edi
		mov	[esi+106h], edx
		mov	[esi+10Ah], eax
		add	esi, 10Eh
		push	ecx
		push	esi
		call	ebx
		add	esp, 10h
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A110	proc near		; CODE XREF: sub_401C49j

var_190		= byte ptr -190h
arg_0		= byte ptr  4

		sub	esp, 190h
		push	ebp
		mov	ebp, ecx
		push	esi
		push	edi
		mov	dword ptr [ebp+0], offset dword_43F0BC
		mov	eax, dword_50DAF8
		test	eax, eax
		jnz	short loc_41A148
		mov	eax, dword_50DAF8
		inc	eax
		mov	dword_50DAF8, eax
		lea	ecx, [esp+19Ch+var_190]
		push	ecx
		push	202h
		nop
		call	near ptr 71AB664Dh
		jmp	short loc_41A155
; ---------------------------------------------------------------------------


loc_41A148:				; CODE XREF: sub_41A110+19j
		mov	edx, dword_50DAF8
		inc	edx
		mov	dword_50DAF8, edx


loc_41A155:				; CODE XREF: sub_41A110+36j
		mov	al, [esp+19Ch+arg_0]
		or	ecx, 0FFFFFFFFh
		mov	[ebp+80Ah], al
		mov	edi, offset byte_448F30
		xor	eax, eax
		mov	[ebp+806h], ecx
		mov	byte ptr [ebp+80Ch], 0
		mov	word ptr [ebp+4], 0
		repne scasb
		not	ecx
		sub	edi, ecx
		lea	edx, [ebp+6]
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, ebp
		and	ecx, 3
		rep movsb
		pop	edi
		mov	byte ptr [ebp+80Bh], 0
		pop	esi
		pop	ebp
		add	esp, 190h
		retn	4
sub_41A110	endp

; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41A1E0:				; CODE XREF: ___:004018E3j
					; ___:00401B09j
		push	esi
		mov	esi, ecx
		call	sub_401FE6
		test	byte ptr [esp+8], 1
		jz	short loc_41A1F8
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_41A1F8:				; CODE XREF: ___:0041A1EDj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A210	proc near		; CODE XREF: sub_401FE6j
		mov	al, [ecx+80Ah]
		mov	dword ptr [ecx], offset	dword_43F0BC
		test	al, al
		jnz	short loc_41A225
		call	sub_4014E7


loc_41A225:				; CODE XREF: sub_41A210+Ej
		mov	eax, 1
		mov	ecx, dword_50DAF8
		cmp	ecx, eax
		jle	short loc_41A240
		mov	eax, dword_50DAF8
		dec	eax
		mov	dword_50DAF8, eax

locret_41A23F:				; CODE XREF: sub_41A210:loc_41A240j
		retn
; ---------------------------------------------------------------------------


loc_41A240:				; CODE XREF: sub_41A210+22j
		jnz	short locret_41A23F
		mov	ecx, dword_50DAF8
		dec	ecx
		mov	dword_50DAF8, ecx
		nop
		jmp	near ptr 71AB4428h
sub_41A210	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41A280:				; CODE XREF: ___:004015AAj
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset byte_43BFCB
		push	eax
		mov	large fs:0, esp
		sub	esp, 814h
		push	esi
		mov	esi, ecx
		call	sub_40196A
		test	al, al
		jz	loc_41A331
		mov	al, [esi+80Bh]
		test	al, al
		jz	short loc_41A2B9
		mov	al, 1
		jmp	short loc_41A331
; ---------------------------------------------------------------------------


loc_41A2B9:				; CODE XREF: ___:0041A2B3j
		push	ebx
		push	edi
		mov	edi, [esp+830h]
		push	800h
		lea	eax, [esi+6]
		push	edi
		push	eax
		nop
		call	near ptr 77C47A90h
		mov	ebx, [esp+840h]
		add	esp, 0Ch
		lea	ecx, [esp+0Ch]
		mov	[esi+4], bx
		call	sub_401186
		mov	ecx, [esp+83Ch]
		mov	edx, [esp+838h]
		push	ecx
		push	edx
		push	ebx
		push	edi
		lea	ecx, [esp+1Ch]
		mov	dword ptr [esp+838h], 0
		call	sub_401640
		push	eax
		mov	ecx, esi
		call	sub_4020E5
		lea	ecx, [esp+0Ch]
		mov	bl, al
		mov	dword ptr [esp+828h], 0FFFFFFFFh
		call	sub_40187A
		mov	al, bl
		pop	edi
		pop	ebx


loc_41A331:				; CODE XREF: ___:0041A2A5j
					; ___:0041A2B7j
		mov	ecx, [esp+818h]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 820h
		retn	10h
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A390	proc near		; CODE XREF: sub_40196Aj
		mov	al, byte_444DAC
		retn
sub_41A390	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A3B0	proc near		; CODE XREF: sub_4020E5j

var_11C		= dword	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
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= byte ptr  10h

		sub	esp, 11Ch
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_40196A
		test	al, al
		jnz	short loc_41A3D0
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 11Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_41A3D0:				; CODE XREF: sub_41A3B0+12j
		mov	al, [esi+80Bh]
		test	al, al
		jnz	loc_41A571
		push	6
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		cmp	eax, 0FFFFFFFFh
		mov	[esi+806h], eax
		jnz	short loc_41A40A
		mov	ecx, esi
		call	sub_4014E7
		pop	edi
		pop	esi
		xor	al, al
		pop	ebp
		add	esp, 11Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_41A40A:				; CODE XREF: sub_41A3B0+43j
		mov	al, [esp+128h+arg_C]
		test	al, al
		jnz	short loc_41A419
		push	1
		jmp	short loc_41A41B
; ---------------------------------------------------------------------------


loc_41A419:				; CODE XREF: sub_41A3B0+63j
		push	0


loc_41A41B:				; CODE XREF: sub_41A3B0+67j
		mov	ecx, esi
		call	sub_4018CA
		mov	edi, [esp+128h+arg_4]
		xor	eax, eax
		mov	[esp+128h+var_114], eax
		push	edi
		mov	[esp+12Ch+var_110], eax
		mov	[esi+4], di
		mov	[esp+12Ch+var_10C], eax
		mov	word ptr [esp+12Ch+var_114], 2
		mov	[esp+12Ch+var_108], eax
		nop
		call	near ptr 71AB2B66h
		mov	ecx, [esp+128h+arg_0]
		mov	word ptr [esp+128h+var_114+2], ax
		mov	eax, [esi+806h]
		lea	edx, [esp+128h+var_114]
		push	10h
		push	edx
		push	eax
		mov	[esp+134h+var_110], ecx
		mov	[esi+4], di
		nop
		call	near ptr 71AB406Ah
		mov	ebp, dword_511C50
		test	eax, eax
		jge	short loc_41A4BC
		call	ebp
		cmp	eax, 2733h
		jz	short loc_41A4AD
		call	ebp
		cmp	eax, 0Bh
		jz	short loc_41A4AD
		call	ebp
		cmp	eax, 2733h
		jz	short loc_41A4AD
		mov	byte ptr [esi+80Bh], 0
		pop	edi
		pop	esi
		xor	al, al
		pop	ebp
		add	esp, 11Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_41A4AD:				; CODE XREF: sub_41A3B0+D6j
					; sub_41A3B0+DDj ...
		mov	al, byte ptr [esp+128h+arg_8]
		test	al, al
		jnz	loc_41A56A


loc_41A4BC:				; CODE XREF: sub_41A3B0+CDj
		mov	eax, [esi+806h]
		xor	ecx, ecx
		lea	edx, [esp+128h+var_11C]
		mov	edi, dword_511C94
		mov	[esp+128h+var_11C], ecx
		push	edx
		mov	[esp+12Ch+var_118], ecx
		push	ecx
		lea	ecx, [esp+130h+var_104]
		mov	[esp+130h+var_100], eax
		push	ecx
		inc	eax
		push	0
		push	eax
		mov	[esp+13Ch+var_11C], 0Ah
		mov	[esp+13Ch+var_104], 1
		call	edi
		test	eax, eax
		jge	short loc_41A530


loc_41A4FB:				; CODE XREF: sub_41A3B0+17Ej
		call	ebp
		call	ebp
		cmp	eax, 4
		jnz	short loc_41A545
		mov	eax, [esp+128h+var_11C]
		test	eax, eax
		jnz	short loc_41A514
		mov	eax, [esp+128h+var_118]
		test	eax, eax
		jz	short loc_41A545


loc_41A514:				; CODE XREF: sub_41A3B0+15Aj
		mov	ecx, [esi+806h]
		lea	edx, [esp+128h+var_11C]
		push	edx
		lea	eax, [esp+12Ch+var_104]
		push	0
		push	eax
		inc	ecx
		push	0
		push	ecx
		call	edi
		test	eax, eax
		jl	short loc_41A4FB


loc_41A530:				; CODE XREF: sub_41A3B0+149j
		mov	al, [esp+128h+arg_C]
		test	al, al
		jnz	short loc_41A561
		mov	edx, [esp+128h+arg_8]
		push	edx
		jmp	short loc_41A563
; ---------------------------------------------------------------------------


loc_41A545:				; CODE XREF: sub_41A3B0+152j
					; sub_41A3B0+162j
		mov	ecx, esi
		call	sub_4014E7
		mov	byte ptr [esi+80Bh], 0
		pop	edi
		pop	esi
		xor	al, al
		pop	ebp
		add	esp, 11Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_41A561:				; CODE XREF: sub_41A3B0+189j
		push	0


loc_41A563:				; CODE XREF: sub_41A3B0+193j
		mov	ecx, esi
		call	sub_4018CA


loc_41A56A:				; CODE XREF: sub_41A3B0+106j
		mov	byte ptr [esi+80Bh], 1


loc_41A571:				; CODE XREF: sub_41A3B0+28j
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebp
		add	esp, 11Ch
		retn	10h
sub_41A3B0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 80h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A600	proc near		; CODE XREF: sub_4014E7j
		push	esi
		mov	esi, ecx
		mov	eax, [esi+806h]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41A61A
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41A61A
		push	eax
		nop
		call	near ptr 71AB9639h


loc_41A61A:				; CODE XREF: sub_41A600+Cj
					; sub_41A600+11j
		mov	ecx, esi
		call	sub_401375
		mov	byte ptr [esi+80Bh], 0
		pop	esi
		retn
sub_41A600	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A640	proc near		; CODE XREF: sub_401375j
		push	ebp
		mov	edx, ecx
		push	esi
		push	edi
		or	ecx, 0FFFFFFFFh
		mov	edi, offset byte_448F30
		xor	eax, eax
		mov	[edx+806h], ecx
		mov	word ptr [edx+4], 0
		lea	ebp, [edx+6]
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		mov	byte ptr [edx+80Bh], 0
		mov	byte ptr [edx+80Ch], 0
		pop	ebp
		retn
sub_41A640	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A6B0	proc near		; CODE XREF: sub_401492j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		sub	esp, 10h
		push	esi
		mov	esi, ecx
		call	sub_40196A
		test	al, al
		jnz	short loc_41A6C6
		pop	esi
		add	esp, 10h
		retn	4
; ---------------------------------------------------------------------------


loc_41A6C6:				; CODE XREF: sub_41A6B0+Dj
		mov	al, [esi+80Bh]
		test	al, al
		jnz	loc_41A77F
		push	6
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		cmp	eax, 0FFFFFFFFh
		mov	[esi+806h], eax
		jnz	short loc_41A6FB
		mov	ecx, esi
		call	sub_4014E7
		xor	al, al
		pop	esi
		add	esp, 10h
		retn	4
; ---------------------------------------------------------------------------


loc_41A6FB:				; CODE XREF: sub_41A6B0+39j
		mov	ecx, [esp+14h+arg_0]
		xor	eax, eax
		mov	[esp+14h+var_10], eax
		push	ecx
		mov	[esp+18h+var_C], eax
		mov	word ptr [esp+18h+var_10], 2
		mov	[esp+18h+var_8], eax
		mov	[esp+18h+var_4], eax
		nop
		call	near ptr 71AB2B66h
		mov	word ptr [esp+14h+var_10+2], ax
		mov	eax, [esi+806h]
		lea	edx, [esp+14h+var_10]
		push	10h
		push	edx
		push	eax
		mov	[esp+20h+var_C], 0
		nop
		call	near ptr 71AB3E00h
		test	eax, eax
		jz	short loc_41A754
		mov	ecx, esi
		call	sub_4014E7
		xor	al, al
		pop	esi
		add	esp, 10h
		retn	4
; ---------------------------------------------------------------------------


loc_41A754:				; CODE XREF: sub_41A6B0+92j
		mov	ecx, [esi+806h]
		push	32h
		push	ecx
		call	near ptr 71AB88D3h
		nop
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41A778
		mov	ecx, esi
		call	sub_4014E7
		xor	al, al
		pop	esi
		add	esp, 10h
		retn	4
; ---------------------------------------------------------------------------


loc_41A778:				; CODE XREF: sub_41A6B0+B6j
		mov	byte ptr [esi+80Bh], 1


loc_41A77F:				; CODE XREF: sub_41A6B0+1Ej
		mov	al, 1
		pop	esi
		add	esp, 10h
		retn	4
sub_41A6B0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A7D0	proc near		; CODE XREF: sub_401B95j

var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_114		= byte ptr -114h
var_104		= dword	ptr -104h
var_100		= dword	ptr -100h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		sub	esp, 120h
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_40196A
		test	al, al
		jnz	short loc_41A7EE
		pop	edi
		pop	esi
		add	esp, 120h
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41A7EE:				; CODE XREF: sub_41A7D0+11j
		mov	al, [esi+80Bh]
		test	al, al
		jnz	short loc_41A805
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 120h
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41A805:				; CODE XREF: sub_41A7D0+26j
		mov	al, [esi+80Ch]
		test	al, al
		jnz	short loc_41A881
		call	sub_40196A
		test	al, al
		jz	short loc_41A874
		mov	edi, dword_511C94


loc_41A81E:				; CODE XREF: sub_41A7D0+A2j
		mov	eax, [esi+806h]
		lea	ecx, [esp+128h+var_11C]
		push	ecx
		mov	[esp+12Ch+var_100], eax
		push	0
		lea	edx, [esp+130h+var_104]
		push	0
		inc	eax
		push	edx
		push	eax
		mov	[esp+13Ch+var_104], 1
		mov	[esp+13Ch+var_11C], 0
		mov	[esp+13Ch+var_118], 64h
		call	edi
		test	eax, eax
		jz	short loc_41A86B
		mov	ecx, [esi+806h]
		lea	eax, [esp+128h+var_104]
		push	eax
		push	ecx
		call	near ptr word_438256
		test	eax, eax
		jnz	short loc_41A881


loc_41A86B:				; CODE XREF: sub_41A7D0+84j
		call	sub_40196A
		test	al, al
		jnz	short loc_41A81E


loc_41A874:				; CODE XREF: sub_41A7D0+46j
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 120h
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41A881:				; CODE XREF: sub_41A7D0+3Dj
					; sub_41A7D0+99j
		mov	eax, [esp+128h+arg_4]
		mov	[esp+128h+var_120], 0FFFFFFFFh
		test	eax, eax
		jz	short loc_41A8A4
		lea	edx, [esp+128h+var_11C]
		mov	[esp+128h+var_11C], 10h
		push	edx
		push	eax
		jmp	short loc_41A8B6
; ---------------------------------------------------------------------------


loc_41A8A4:				; CODE XREF: sub_41A7D0+C2j
		lea	ecx, [esp+128h+var_11C]
		lea	edx, [esp+128h+var_114]
		push	ecx
		mov	[esp+12Ch+var_11C], 10h
		push	edx


loc_41A8B6:				; CODE XREF: sub_41A7D0+D2j
		mov	eax, [esi+806h]
		push	eax
		nop
		call	near ptr 71AC1028h
		cmp	eax, 0FFFFFFFFh
		mov	[esp+128h+var_120], eax
		jnz	short loc_41A8D9
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 120h
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41A8D9:				; CODE XREF: sub_41A7D0+FAj
		mov	esi, [esp+128h+arg_0]
		lea	ecx, [esp+128h+var_120]
		push	ecx
		mov	ecx, esi
		call	sub_402108
		mov	dl, [esp+128h+arg_8]
		pop	edi
		mov	[esi+80Dh], dl
		mov	al, 1
		pop	esi
		add	esp, 120h
		retn	0Ch
sub_41A7D0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A960	proc near		; CODE XREF: sub_402108j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, [eax]
		mov	[ecx+806h], edx
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		setnz	al
		mov	[ecx+80Bh], al
		retn	4
sub_41A960	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A990	proc near		; CODE XREF: sub_40196Fj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		mov	edx, [esp+arg_4]
		push	eax
		mov	eax, [esp+4+arg_0]
		push	0
		push	edx
		push	eax
		call	sub_401B4F
		retn	0Ch
sub_41A990	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A9C0	proc near		; CODE XREF: sub_401B4Fj

var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_208		= dword	ptr -208h
var_204		= dword	ptr -204h
var_104		= dword	ptr -104h
var_100		= dword	ptr -100h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		sub	esp, 210h
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		cmp	dword ptr [esi+806h], 0FFFFFFFFh
		jz	loc_41AB24
		mov	al, [esi+80Bh]
		test	al, al
		jz	loc_41AB24
		mov	edi, dword_5118AC
		call	edi
		mov	ebp, eax
		mov	al, [esi+80Dh]
		test	al, al
		jnz	loc_41AABC
		mov	ebx, [esp+220h+arg_8]
		test	ebx, ebx
		jz	loc_41AABC
		call	sub_40196A
		test	al, al
		jz	loc_41AABC


loc_41AA1B:				; CODE XREF: sub_41A9C0+F6j
		mov	eax, [esi+806h]
		mov	ecx, 1
		mov	[esp+220h+var_100], eax
		mov	[esp+220h+var_104], ecx
		mov	[esp+220h+var_204], eax
		mov	[esp+220h+var_208], ecx
		mov	[esp+220h+var_210], 0
		mov	[esp+220h+var_20C], 64h
		call	edi
		sub	eax, ebp
		cmp	eax, ebx
		ja	loc_41AB24
		lea	eax, [esp+220h+var_210]
		lea	ecx, [esp+220h+var_208]
		push	eax
		mov	eax, [esi+806h]
		push	ecx
		lea	edx, [esp+228h+var_104]
		push	0
		inc	eax
		push	edx
		push	eax
		nop
		call	near ptr 71AB2DC0h
		test	eax, eax
		jz	short loc_41AAAF
		mov	edx, [esi+806h]
		lea	ecx, [esp+220h+var_208]
		push	ecx
		push	edx
		call	near ptr word_438256
		test	eax, eax
		jnz	loc_41AB24
		mov	ecx, [esi+806h]
		lea	eax, [esp+220h+var_104]
		push	eax
		push	ecx
		call	near ptr word_438256
		test	eax, eax
		jnz	short loc_41AABC


loc_41AAAF:				; CODE XREF: sub_41A9C0+BCj
		call	sub_40196A
		test	al, al
		jnz	loc_41AA1B


loc_41AABC:				; CODE XREF: sub_41A9C0+39j
					; sub_41A9C0+48j ...
		call	sub_40196A
		test	al, al
		jz	short loc_41AB24
		mov	edx, [esp+220h+arg_4]
		mov	eax, [esp+220h+arg_0]
		mov	ecx, [esi+806h]
		push	0
		push	edx
		push	eax
		push	ecx
		nop
		call	near ptr 71AB615Ah
		mov	ecx, [esp+220h+arg_C]
		test	ecx, ecx
		jz	short loc_41AAF1
		mov	[ecx], eax


loc_41AAF1:				; CODE XREF: sub_41A9C0+12Dj
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41AB09
		test	eax, eax
		jz	short loc_41AB09
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 210h
		retn	10h
; ---------------------------------------------------------------------------


loc_41AB09:				; CODE XREF: sub_41A9C0+134j
					; sub_41A9C0+138j
		call	near ptr 71AB94DCh
		nop
		pop	edi
		cmp	eax, 2733h
		pop	esi
		pop	ebp
		setz	al
		pop	ebx
		add	esp, 210h
		retn	10h
; ---------------------------------------------------------------------------


loc_41AB24:				; CODE XREF: sub_41A9C0+13j
					; sub_41A9C0+21j ...
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 210h
		retn	10h
sub_41A9C0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 60h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41ABA0:				; CODE XREF: ___:00401622j
		mov	eax, [ecx+806h]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41ABF1
		mov	dl, [ecx+80Bh]
		test	dl, dl
		jz	short loc_41ABF1
		mov	ecx, [esp+8]
		mov	edx, [esp+4]
		push	0
		push	ecx
		push	edx
		push	eax
		call	near ptr 71AB428Ah
		nop
		mov	ecx, [esp+0Ch]
		test	ecx, ecx
		jz	short loc_41ABD2
		mov	[ecx], eax


loc_41ABD2:				; CODE XREF: ___:0041ABCEj
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41ABE0
		test	eax, eax
		jz	short loc_41ABE0
		mov	al, 1
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41ABE0:				; CODE XREF: ___:0041ABD5j
					; ___:0041ABD9j
		nop
		call	near ptr 71AB94DCh
		cmp	eax, 2733h
		setz	al
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41ABF1:				; CODE XREF: ___:0041ABA9j
					; ___:0041ABB3j
		xor	al, al
		retn	0Ch
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41AC20:				; CODE XREF: ___:004019BFj
		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esp+10h], esi
		call	sub_40196A
		test	al, al
		jnz	short loc_41AC3C
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_41AC3C:				; CODE XREF: ___:0041AC32j
		mov	al, [esi+80Bh]
		xor	ebx, ebx
		cmp	al, bl
		jnz	short loc_41AC52


loc_41AC48:				; CODE XREF: ___:0041AC8Dj
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_41AC52:				; CODE XREF: ___:0041AC46j
		mov	eax, [esp+1Ch]
		mov	ebp, [esp+18h]
		xor	esi, esi
		dec	eax
		cmp	eax, ebx
		mov	[ebp+0], bl
		mov	byte ptr [esp+18h], 1
		jle	short loc_41ACB6
		mov	edi, ebp


loc_41AC6B:				; CODE XREF: ___:0041ACB4j
		cmp	edi, ebx
		jz	short loc_41ACB6
		cmp	[esp+18h], bl
		jz	short loc_41ACB6
		call	sub_40196A
		test	al, al
		jz	short loc_41ACB6
		mov	ecx, [esp+10h]
		push	ebx
		push	1
		push	edi
		call	sub_40196F
		test	al, al
		jz	short loc_41AC48
		mov	[esi+ebp+1], bl
		mov	al, [edi]
		cmp	al, 0Ah
		jz	short loc_41ACA1
		cmp	al, 0Dh
		jz	short loc_41ACA1
		cmp	al, bl
		jnz	short loc_41ACA9


loc_41ACA1:				; CODE XREF: ___:0041AC97j
					; ___:0041AC9Bj
		mov	[esi+ebp-1], bl
		mov	[esp+18h], bl


loc_41ACA9:				; CODE XREF: ___:0041AC9Fj
		mov	ecx, [esp+1Ch]
		inc	esi
		inc	edi
		lea	eax, [ecx-1]
		cmp	esi, eax
		jl	short loc_41AC6B


loc_41ACB6:				; CODE XREF: ___:0041AC67j
					; ___:0041AC6Dj ...
		mov	edx, [esp+1Ch]
		pop	edi
		pop	esi
		mov	al, 1
		mov	[edx+ebp-1], bl
		pop	ebp
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41AD00:				; CODE XREF: ___:004021A3j
		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esp+10h], esi
		call	sub_40196A
		test	al, al
		jnz	short loc_41AD1C
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_41AD1C:				; CODE XREF: ___:0041AD12j
		mov	al, [esi+80Bh]
		xor	ebx, ebx
		cmp	al, bl
		jnz	short loc_41AD32


loc_41AD28:				; CODE XREF: ___:0041AD6Dj
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_41AD32:				; CODE XREF: ___:0041AD26j
		mov	eax, [esp+1Ch]
		mov	ebp, [esp+18h]
		xor	esi, esi
		dec	eax
		cmp	eax, ebx
		mov	[ebp+0], bl
		mov	byte ptr [esp+18h], 1
		jle	short loc_41AD9D
		mov	edi, ebp


loc_41AD4B:				; CODE XREF: ___:0041AD9Bj
		cmp	edi, ebx
		jz	short loc_41AD9D
		cmp	[esp+18h], bl
		jz	short loc_41AD9D
		call	sub_40196A
		test	al, al
		jz	short loc_41AD9D
		mov	ecx, [esp+10h]
		push	ebx
		push	1
		push	edi
		call	sub_40196F
		test	al, al
		jz	short loc_41AD28
		mov	[esi+ebp+1], bl
		mov	al, [edi]
		cmp	al, 0Ah
		jz	short loc_41AD7D
		cmp	al, bl
		jnz	short loc_41AD90


loc_41AD7D:				; CODE XREF: ___:0041AD77j
		cmp	byte ptr [esi+ebp-1], 0Dh
		jnz	short loc_41AD8A
		mov	[esi+ebp-1], bl
		jmp	short loc_41AD8C
; ---------------------------------------------------------------------------


loc_41AD8A:				; CODE XREF: ___:0041AD82j
		mov	[edi], bl


loc_41AD8C:				; CODE XREF: ___:0041AD88j
		mov	[esp+18h], bl


loc_41AD90:				; CODE XREF: ___:0041AD7Bj
		mov	ecx, [esp+1Ch]
		inc	esi
		inc	edi
		lea	eax, [ecx-1]
		cmp	esi, eax
		jl	short loc_41AD4B


loc_41AD9D:				; CODE XREF: ___:0041AD47j
					; ___:0041AD4Dj ...
		mov	edx, [esp+1Ch]
		pop	edi
		pop	esi
		mov	al, 1
		mov	[edx+ebp-1], bl
		pop	ebp
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41ADE0:				; CODE XREF: ___:00401082j
		push	esi
		mov	esi, ecx
		call	sub_40196A
		test	al, al
		jnz	short loc_41ADF2
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_41ADF2:				; CODE XREF: ___:0041ADEAj
		mov	eax, [esi+806h]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41AE03
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_41AE03:				; CODE XREF: ___:0041ADFBj
		mov	ecx, [esp+0Ch]
		mov	edx, [esp+8]
		push	ecx
		push	edx
		push	eax
		nop
		call	near ptr 71AB951Eh
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41AE30	proc near		; CODE XREF: sub_4018A2j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		call	sub_40196A
		test	al, al
		jnz	short loc_41AE42
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_41AE42:				; CODE XREF: sub_41AE30+Aj
		mov	eax, [esi+806h]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41AE53
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_41AE53:				; CODE XREF: sub_41AE30+1Bj
		mov	ecx, [esp+4+arg_4]
		mov	edx, [esp+4+arg_0]
		push	ecx
		push	edx
		push	eax
		nop
		call	near ptr 71AC0B50h
		pop	esi
		retn	8
sub_41AE30	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41AE80:				; CODE XREF: ___:00401C53j
		sub	esp, 10Ch
		push	esi
		mov	esi, ecx
		xor	ecx, ecx
		mov	al, [esi+80Ch]
		cmp	al, cl
		mov	eax, [esi+806h]
		jnz	short loc_41AEBF
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41AEB5
		cmp	[esi+80Bh], cl
		jz	short loc_41AEB5
		mov	eax, 1
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_41AEB5:				; CODE XREF: ___:0041AE9Ej
					; ___:0041AEA6j
		xor	eax, eax
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_41AEBF:				; CODE XREF: ___:0041AE99j
		lea	edx, [esp+4]
		mov	[esp+10h], eax
		push	edx
		lea	edx, [esp+10h]
		push	ecx
		push	edx
		inc	eax
		push	ecx
		push	eax
		mov	dword ptr [esp+20h], 1
		mov	[esp+18h], ecx
		mov	[esp+1Ch], ecx
		call	near ptr 71AB2DC0h
		nop
		test	eax, eax
		jnz	short loc_41AEF5
		xor	al, al
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_41AEF5:				; CODE XREF: ___:0041AEE9j
		mov	ecx, [esi+806h]
		lea	eax, [esp+0Ch]
		push	eax
		push	ecx
		call	near ptr word_438256
		test	eax, eax
		setnz	al
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41AF50:				; CODE XREF: ___:004016EFj
		sub	esp, 10Ch
		push	esi
		mov	esi, ecx
		xor	ecx, ecx
		cmp	[esi+80Ch], cl
		jnz	short loc_41AF6D
		xor	al, al
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_41AF6D:				; CODE XREF: ___:0041AF61j
		mov	eax, [esi+806h]
		lea	edx, [esp+4]
		push	edx
		lea	edx, [esp+10h]
		mov	[esp+14h], eax
		push	edx
		push	ecx
		inc	eax
		push	ecx
		push	eax
		mov	dword ptr [esp+20h], 1
		mov	[esp+18h], ecx
		mov	[esp+1Ch], ecx
		nop
		call	near ptr 71AB2DC0h
		test	eax, eax
		jnz	short loc_41AFA9
		xor	al, al
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_41AFA9:				; CODE XREF: ___:0041AF9Dj
		mov	ecx, [esi+806h]
		lea	eax, [esp+0Ch]
		push	eax
		push	ecx
		call	near ptr word_438256
		test	eax, eax
		setnz	al
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41AFF0:				; CODE XREF: ___:00401744j
		push	esi
		mov	esi, [esp+8]
		push	edi
		mov	edi, ecx
		push	800h
		lea	edx, [esi+6]
		mov	ax, [edi+4]
		lea	ecx, [edi+6]
		push	ecx
		push	edx
		mov	[esi+4], ax
		nop
		call	near ptr 77C47A90h
		xor	al, al
		add	esp, 0Ch
		mov	dword ptr [esi+806h], 0FFFFFFFFh
		mov	[esi+80Ch], al
		mov	[esi+80Bh], al
		mov	al, [edi+80Dh]
		mov	[esi+80Dh], al
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B060	proc near		; CODE XREF: sub_4018CAj

arg_0		= dword	ptr  4

		mov	al, byte ptr [esp+arg_0]
		test	al, al
		mov	[ecx+80Ch], al
		jz	short loc_41B090
		mov	ecx, [ecx+806h]
		lea	eax, [esp+arg_0]
		push	eax
		push	8004667Eh
		push	ecx
		mov	[esp+0Ch+arg_0], 1
		nop
		call	near ptr 71AB4519h
		retn	4
; ---------------------------------------------------------------------------


loc_41B090:				; CODE XREF: sub_41B060+Cj
		mov	eax, [ecx+806h]
		lea	edx, [esp+arg_0]
		push	edx
		push	8004667Eh
		push	eax
		mov	[esp+0Ch+arg_0], 0
		nop
		call	near ptr 71AB4519h
		retn	4
sub_41B060	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B0E0	proc near		; CODE XREF: sub_401186j
		push	esi
		mov	esi, ecx
		push	0
		lea	ecx, [esi+4]
		call	sub_401C49
		mov	dword ptr [esi], offset	dword_43F0C0
		mov	eax, esi
		pop	esi
		retn
sub_41B0E0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B110:				; CODE XREF: ___:00401924j
					; ___:00401E92j
		push	esi
		mov	esi, ecx
		call	sub_40187A
		test	byte ptr [esp+8], 1
		jz	short loc_41B128
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_41B128:				; CODE XREF: ___:0041B11Dj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B140	proc near		; CODE XREF: sub_40187Aj
		mov	dword ptr [ecx], offset	dword_43F0C0
		add	ecx, 4
		jmp	sub_401FE6
sub_41B140	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B160	proc near		; CODE XREF: sub_401640j

arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	sub_40196A
		test	al, al
		jnz	short loc_41B172
		pop	edi
		xor	eax, eax
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_41B172:				; CODE XREF: sub_41B160+9j
		mov	esi, [esp+8+arg_0]
		push	esi
		call	near ptr 71AB2BF4h
		nop
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41B1C5
		push	esi
		nop
		call	near ptr 71AB4FD4h
		mov	edi, eax
		test	edi, edi
		jnz	short loc_41B197
		pop	edi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_41B197:				; CODE XREF: sub_41B160+2Dj
		mov	eax, [edi+0Ch]
		xor	esi, esi
		cmp	dword ptr [eax], 0
		jz	short loc_41B1AC


loc_41B1A1:				; CODE XREF: sub_41B160+4Aj
		mov	ecx, [eax+4]
		add	eax, 4
		inc	esi
		test	ecx, ecx
		jnz	short loc_41B1A1


loc_41B1AC:				; CODE XREF: sub_41B160+3Fj
		call	sub_401F0A
		dec	esi
		push	esi
		push	0
		call	sub_4021C6
		mov	ecx, [edi+0Ch]
		add	esp, 8
		mov	edx, [ecx+eax*4]
		mov	eax, [edx]


loc_41B1C5:				; CODE XREF: sub_41B160+20j
		pop	edi
		pop	esi
		retn	4
sub_41B160	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B1F0:				; CODE XREF: ___:004020B3j
		push	0FFFFFFFFh
		push	offset byte_43C007
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 38h
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	[esp+0Ch], ebx
		call	sub_40196A
		test	al, al
		jnz	short loc_41B22F
		mov	eax, [esp+58h]
		mov	esi, [esp+54h]
		push	eax
		mov	ecx, esi
		call	sub_401870
		jmp	loc_41B3DB
; ---------------------------------------------------------------------------


loc_41B22F:				; CODE XREF: ___:0041B218j
		mov	ecx, [esp+58h]
		push	ecx
		lea	ecx, [esp+30h]
		call	sub_401870
		mov	edi, 1
		lea	ecx, [esp+2Ch]
		mov	[esp+4Ch], edi
		call	sub_4017EE
		test	eax, eax
		push	offset byte_448F30
		jnz	short loc_41B26C
		mov	esi, [esp+58h]
		mov	ecx, esi
		call	sub_401870
		mov	[esp+0Ch], edi
		jmp	loc_41B3CE
; ---------------------------------------------------------------------------


loc_41B26C:				; CODE XREF: ___:0041B256j
		lea	ecx, [esp+30h]
		call	sub_4012EE
		test	eax, eax
		push	offset byte_448F30
		jnz	short loc_41B292
		mov	esi, [esp+58h]
		mov	ecx, esi
		call	sub_401870
		mov	[esp+0Ch], edi
		jmp	loc_41B3CE
; ---------------------------------------------------------------------------


loc_41B292:				; CODE XREF: ___:0041B27Cj
		lea	ecx, [esp+18h]
		call	sub_401870
		lea	edx, [esp+10h]
		push	ebx
		push	edx
		push	ebx
		push	ebx
		push	0Fh
		lea	ecx, [esp+40h]
		mov	byte ptr [esp+60h], 2
		call	sub_4017EE
		push	eax
		call	near ptr word_4382C2
		cmp	eax, ebx
		jz	short loc_41B2D6
		mov	esi, [esp+54h]
		lea	eax, [esp+14h]
		push	eax
		mov	ecx, esi
		call	sub_4014D3
		mov	[esp+0Ch], edi
		jmp	loc_41B3C0
; ---------------------------------------------------------------------------


loc_41B2D6:				; CODE XREF: ___:0041B2BBj
		mov	edi, [esp+10h]
		mov	esi, offset dword_4447F8
		mov	ecx, [edi]
		mov	eax, [ecx+4]


loc_41B2E4:				; CODE XREF: ___:0041B302j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_41B308
		cmp	cl, bl
		jz	short loc_41B304
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_41B308
		add	eax, 2
		add	esi, 2
		cmp	cl, bl
		jnz	short loc_41B2E4


loc_41B304:				; CODE XREF: ___:0041B2EEj
		xor	eax, eax
		jmp	short loc_41B30D
; ---------------------------------------------------------------------------


loc_41B308:				; CODE XREF: ___:0041B2EAj
					; ___:0041B2F8j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41B30D:				; CODE XREF: ___:0041B306j
		cmp	eax, ebx
		jz	short loc_41B37B
		push	ebp


loc_41B312:				; CODE XREF: ___:0041B365j
					; ___:0041B369j
		call	near ptr 27D0B1Ah
		nop
		and	eax, 0Fh
		cmp	al, 8
		jnz	short loc_41B326
		cmp	word ptr [edi+8], 0Fh
		jz	short loc_41B36B


loc_41B326:				; CODE XREF: ___:0041B31Dj
		mov	edi, [edi]
		mov	ebp, [esp+14h]
		cmp	edi, ebx
		jnz	short loc_41B332
		mov	edi, ebp


loc_41B332:				; CODE XREF: ___:0041B32Ej
		mov	eax, [edi+4]
		mov	esi, offset dword_4447F8


loc_41B33A:				; CODE XREF: ___:0041B358j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_41B35E
		cmp	cl, bl
		jz	short loc_41B35A
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_41B35E
		add	eax, 2
		add	esi, 2
		cmp	cl, bl
		jnz	short loc_41B33A


loc_41B35A:				; CODE XREF: ___:0041B344j
		xor	eax, eax
		jmp	short loc_41B363
; ---------------------------------------------------------------------------


loc_41B35E:				; CODE XREF: ___:0041B340j
					; ___:0041B34Ej
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41B363:				; CODE XREF: ___:0041B35Cj
		cmp	eax, ebx
		jnz	short loc_41B312
		mov	edi, ebp
		jmp	short loc_41B312
; ---------------------------------------------------------------------------


loc_41B36B:				; CODE XREF: ___:0041B324j
		mov	eax, [edi+18h]
		lea	ecx, [esp+18h]
		push	eax
		call	sub_4015E1
		pop	ebp
		jmp	short loc_41B388
; ---------------------------------------------------------------------------


loc_41B37B:				; CODE XREF: ___:0041B30Fj
		mov	ecx, [edi+18h]
		push	ecx
		lea	ecx, [esp+18h]
		call	sub_4015E1


loc_41B388:				; CODE XREF: ___:0041B379j
		push	offset byte_448F30
		lea	ecx, [esp+18h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_41B3A8
		mov	edx, [esp+58h]
		lea	ecx, [esp+14h]
		push	edx
		call	sub_4015E1


loc_41B3A8:				; CODE XREF: ___:0041B398j
		mov	esi, [esp+54h]
		lea	eax, [esp+14h]
		push	eax
		mov	ecx, esi
		call	sub_4014D3
		mov	dword ptr [esp+0Ch], 1


loc_41B3C0:				; CODE XREF: ___:0041B2D1j
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+4Ch], 1
		call	sub_401226


loc_41B3CE:				; CODE XREF: ___:0041B267j
					; ___:0041B28Dj
		lea	ecx, [esp+2Ch]
		mov	[esp+4Ch], bl
		call	sub_401226


loc_41B3DB:				; CODE XREF: ___:0041B22Aj
		mov	ecx, [esp+44h]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 44h
		retn	8
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 90h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B490:				; CODE XREF: ___:00402153j
		push	esi
		mov	esi, ecx
		call	sub_401E88
		push	0
		lea	ecx, [esi+15h]
		call	sub_401C49
		mov	dword ptr [esi], offset	dword_43F0C4
		mov	dword ptr [esi+11h], 0
		mov	dword ptr [esi+823h], 0
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B4D0:				; CODE XREF: ___:00401406j
					; ___:00402036j
		push	esi
		mov	esi, ecx
		call	sub_401BE0
		test	byte ptr [esp+8], 1
		jz	short loc_41B4E8
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_41B4E8:				; CODE XREF: ___:0041B4DDj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B500	proc near		; CODE XREF: sub_401BE0j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41B500
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_401FE6
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_40204F
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_41B500	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B570:				; CODE XREF: ___:00401D52j
		push	esi
		mov	esi, ecx
		call	sub_401E88
		push	0
		lea	ecx, [esi+15h]
		call	sub_401C49
		mov	eax, [esp+8]
		mov	ecx, [esp+0Ch]
		mov	[esi+11h], eax
		mov	dword ptr [esi], offset	dword_43F0C4
		mov	[esi+823h], ecx
		mov	eax, esi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B5B0:				; CODE XREF: ___:00401686j
		sub	esp, 14h
		push	edi
		mov	edi, ecx
		mov	eax, [edi+11h]
		test	eax, eax
		jz	loc_41B6C0
		mov	ecx, [edi+823h]
		test	ecx, ecx
		jz	loc_41B6C0
		push	ebx
		push	ebp
		lea	ebx, [edi+15h]
		push	esi
		push	eax
		mov	ecx, ebx
		xor	esi, esi
		call	sub_401492
		mov	ebp, dword_5118D8
		test	al, al
		jnz	short loc_41B613


loc_41B5E9:				; CODE XREF: ___:0041B611j
		mov	al, [edi+10h]
		test	al, al
		jz	loc_41B6AF
		mov	al, byte_4E8E44
		test	al, al
		jz	short loc_41B613
		push	7D0h
		call	ebp
		mov	eax, [edi+11h]
		mov	ecx, ebx
		push	eax
		call	sub_401492
		test	al, al
		jz	short loc_41B5E9


loc_41B613:				; CODE XREF: ___:0041B5E7j
					; ___:0041B5FBj
		mov	al, [edi+10h]
		test	al, al
		jz	loc_41B6AF


loc_41B61E:				; CODE XREF: ___:0041B6A9j
		mov	al, byte_4E8E44
		test	al, al
		jz	loc_41B6AF
		test	esi, esi
		jnz	short loc_41B64E
		push	80Eh
		call	near ptr word_437AEA
		add	esp, 4
		test	eax, eax
		jz	short loc_41B64A
		push	esi
		mov	ecx, eax
		call	sub_401C49
		jmp	short loc_41B64C
; ---------------------------------------------------------------------------


loc_41B64A:				; CODE XREF: ___:0041B63Ej
		xor	eax, eax


loc_41B64C:				; CODE XREF: ___:0041B648j
		mov	esi, eax


loc_41B64E:				; CODE XREF: ___:0041B62Dj
		push	0
		push	0
		push	esi
		mov	ecx, ebx
		call	sub_401B95
		test	al, al
		jnz	short loc_41B667
		push	7D0h
		call	ebp
		jmp	short loc_41B6A4
; ---------------------------------------------------------------------------


loc_41B667:				; CODE XREF: ___:0041B65Cj
		xor	ecx, ecx
		lea	edx, [esp+10h]
		mov	[esp+14h], ecx
		lea	eax, [esp+14h]
		mov	[esp+18h], ecx
		push	edx
		mov	[esp+20h], ecx
		push	eax
		mov	[esp+28h], ecx
		mov	ecx, esi
		mov	dword ptr [esp+18h], 10h
		call	sub_4018A2
		mov	al, [esp+18h]
		test	al, al
		jz	short loc_41B6A4
		push	esi
		call	dword ptr [edi+823h]
		add	esp, 4


loc_41B6A4:				; CODE XREF: ___:0041B665j
					; ___:0041B698j
		mov	al, [edi+10h]
		test	al, al
		jnz	loc_41B61E


loc_41B6AF:				; CODE XREF: ___:0041B5EEj
					; ___:0041B618j ...
		mov	ecx, ebx
		call	sub_4014E7
		pop	esi
		pop	ebp
		pop	ebx
		xor	eax, eax
		pop	edi
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------


loc_41B6C0:				; CODE XREF: ___:0041B5BBj
					; ___:0041B5C9j
		xor	eax, eax
		pop	edi
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B720:				; CODE XREF: ___:00401C35j
		mov	eax, [esp+0Ch]
		push	ebx
		push	ebp
		mov	ebp, [esp+10h]
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		dec	eax
		mov	[ebp+0], bl
		cmp	eax, ebx
		mov	byte ptr [esp+18h], 1
		jle	short loc_41B795
		mov	esi, ebp


loc_41B73F:				; CODE XREF: ___:0041B793j
		cmp	esi, ebx
		jz	short loc_41B795
		cmp	[esp+18h], bl
		jz	short loc_41B795
		mov	ecx, [esp+14h]
		push	ebx
		push	1
		push	esi
		push	ecx
		nop
		call	near ptr 71AB615Ah
		cmp	eax, ebx
		jz	short loc_41B7A4
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41B7A4
		nop
		call	near ptr 71AB94DCh
		cmp	eax, 2733h
		jz	short loc_41B79D
		mov	[edi+ebp+1], bl
		mov	al, [esi]
		cmp	al, 0Ah
		jz	short loc_41B780
		cmp	al, 0Dh
		jz	short loc_41B780
		cmp	al, bl
		jnz	short loc_41B788


loc_41B780:				; CODE XREF: ___:0041B776j
					; ___:0041B77Aj
		mov	[edi+ebp-1], bl
		mov	[esp+18h], bl


loc_41B788:				; CODE XREF: ___:0041B77Ej
		mov	edx, [esp+1Ch]
		inc	edi
		inc	esi
		lea	eax, [edx-1]
		cmp	edi, eax
		jl	short loc_41B73F


loc_41B795:				; CODE XREF: ___:0041B73Bj
					; ___:0041B741j ...
		mov	eax, [esp+1Ch]
		mov	[eax+ebp-1], bl


loc_41B79D:				; CODE XREF: ___:0041B76Cj
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41B7A4:				; CODE XREF: ___:0041B75Aj
					; ___:0041B75Fj
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B7E0	proc near		; CODE XREF: sub_401280j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		xor	ebx, ebx
		xor	esi, esi
		dec	eax
		cmp	eax, ebx
		push	edi
		mov	[ebp+0], bl
		mov	byte ptr [esp+10h+arg_4], 1
		jle	short loc_41B84A
		mov	edi, ebp


loc_41B7FF:				; CODE XREF: sub_41B7E0+68j
		cmp	edi, ebx
		jz	short loc_41B84A
		cmp	byte ptr [esp+10h+arg_4], bl
		jz	short loc_41B84A
		mov	ecx, [esp+10h+arg_0]
		push	ebx
		push	1
		push	edi
		push	ecx
		nop
		call	near ptr 71AB615Ah
		test	eax, eax
		jz	short loc_41B859
		mov	[esi+ebp+1], bl
		mov	al, [edi]
		cmp	al, 0Ah
		jz	short loc_41B82A
		cmp	al, bl
		jnz	short loc_41B83D


loc_41B82A:				; CODE XREF: sub_41B7E0+44j
		cmp	byte ptr [esi+ebp-1], 0Dh
		jnz	short loc_41B837
		mov	[esi+ebp-1], bl
		jmp	short loc_41B839
; ---------------------------------------------------------------------------


loc_41B837:				; CODE XREF: sub_41B7E0+4Fj
		mov	[edi], bl


loc_41B839:				; CODE XREF: sub_41B7E0+55j
		mov	byte ptr [esp+10h+arg_4], bl


loc_41B83D:				; CODE XREF: sub_41B7E0+48j
		mov	edx, [esp+10h+arg_8]
		inc	esi
		inc	edi
		lea	eax, [edx-1]
		cmp	esi, eax
		jl	short loc_41B7FF


loc_41B84A:				; CODE XREF: sub_41B7E0+1Bj
					; sub_41B7E0+21j ...
		mov	eax, [esp+10h+arg_8]
		pop	edi
		pop	esi
		mov	[eax+ebp-1], bl
		pop	ebp
		mov	al, 1
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41B859:				; CODE XREF: sub_41B7E0+3Aj
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		retn
sub_41B7E0	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B880:				; CODE XREF: ___:00401AF0j
		push	ebx
		mov	ebx, [esp+8]
		push	ebp
		mov	ebp, [esp+10h]
		mov	ecx, ebp
		push	esi
		mov	edx, ecx
		push	edi
		xor	eax, eax
		mov	edi, ebx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		xor	esi, esi
		and	ecx, 3
		test	ebp, ebp
		rep stosb
		jle	short loc_41B8DB


loc_41B8A6:				; CODE XREF: ___:0041B8D9j
		push	3
		push	1
		call	sub_4021C6
		add	esp, 8
		dec	eax
		jz	short loc_41B8C7
		dec	eax
		jz	short loc_41B8C1
		dec	eax
		jnz	short loc_41B8D6
		push	7Ah
		push	61h
		jmp	short loc_41B8CB
; ---------------------------------------------------------------------------


loc_41B8C1:				; CODE XREF: ___:0041B8B6j
		push	5Ah
		push	41h
		jmp	short loc_41B8CB
; ---------------------------------------------------------------------------


loc_41B8C7:				; CODE XREF: ___:0041B8B3j
		push	39h
		push	30h


loc_41B8CB:				; CODE XREF: ___:0041B8BFj
					; ___:0041B8C5j
		call	sub_4021C6
		add	esp, 8
		mov	[esi+ebx], al


loc_41B8D6:				; CODE XREF: ___:0041B8B9j
		inc	esi
		cmp	esi, ebp
		jl	short loc_41B8A6


loc_41B8DB:				; CODE XREF: ___:0041B8A4j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B900	proc near		; CODE XREF: sub_401424j
		rdtsc
		retn
sub_41B900	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B920	proc near		; CODE XREF: sub_4017FDj

var_4		= dword	ptr -4

		sub	esp, 8
		push	ebx
		mov	ebx, dword_5118D8
		push	ebp
		push	esi
		push	edi
		xor	ebp, ebp


loc_41B92F:				; CODE XREF: sub_41B920+43j
					; sub_41B920+4Dj
		call	sub_401424
		push	3E8h
		mov	esi, eax
		mov	edi, edx
		call	ebx
		call	sub_401424
		sub	eax, esi
		push	ebp
		sbb	edx, edi
		push	186A0h
		push	edx
		push	eax
		call	near ptr dword_437C60
		push	ebp
		push	0Ah
		push	edx
		push	eax
		call	near ptr dword_437C60
		cmp	edx, ebp
		mov	esi, eax
		ja	short loc_41B92F
		jb	short loc_41B96F
		cmp	esi, 0F4240h
		ja	short loc_41B92F


loc_41B96F:				; CODE XREF: sub_41B920+45j
		push	ebp
		push	64h
		push	edx
		push	esi
		call	near ptr dword_437BE0
		mov	ecx, eax
		cmp	edx, ebp
		mov	eax, 64h
		mov	[esp+18h+var_4], ebp
		ja	short loc_41B9F9
		jb	short loc_41B98F
		cmp	ecx, 50h
		jnb	short loc_41B998


loc_41B98F:				; CODE XREF: sub_41B920+68j
		mov	eax, 4Bh
		mov	[esp+18h+var_4], ebp


loc_41B998:				; CODE XREF: sub_41B920+6Dj
		cmp	edx, ebp
		ja	short loc_41B9F9
		jb	short loc_41B9A3
		cmp	ecx, 47h
		jnb	short loc_41B9AC


loc_41B9A3:				; CODE XREF: sub_41B920+7Cj
		mov	eax, 42h
		mov	[esp+18h+var_4], ebp


loc_41B9AC:				; CODE XREF: sub_41B920+81j
		cmp	edx, ebp
		ja	short loc_41B9F9
		jb	short loc_41B9B7
		cmp	ecx, 37h
		jnb	short loc_41B9C0


loc_41B9B7:				; CODE XREF: sub_41B920+90j
		mov	eax, 32h
		mov	[esp+18h+var_4], ebp


loc_41B9C0:				; CODE XREF: sub_41B920+95j
		cmp	edx, ebp
		ja	short loc_41B9F9
		jb	short loc_41B9CB
		cmp	ecx, 26h
		jnb	short loc_41B9D4


loc_41B9CB:				; CODE XREF: sub_41B920+A4j
		mov	eax, 21h
		mov	[esp+18h+var_4], ebp


loc_41B9D4:				; CODE XREF: sub_41B920+A9j
		cmp	edx, ebp
		ja	short loc_41B9F9
		jb	short loc_41B9DF
		cmp	ecx, 1Eh
		jnb	short loc_41B9E8


loc_41B9DF:				; CODE XREF: sub_41B920+B8j
		mov	eax, 19h
		mov	[esp+18h+var_4], ebp


loc_41B9E8:				; CODE XREF: sub_41B920+BDj
		cmp	edx, ebp
		ja	short loc_41B9F9
		jb	short loc_41B9F3
		cmp	ecx, 0Ah
		jnb	short loc_41B9F9


loc_41B9F3:				; CODE XREF: sub_41B920+CCj
		xor	eax, eax
		mov	[esp+18h+var_4], ebp


loc_41B9F9:				; CODE XREF: sub_41B920+66j
					; sub_41B920+7Aj ...
		sub	eax, ecx
		pop	edi
		add	eax, esi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 8
		retn
sub_41B920	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41BA50	proc near		; CODE XREF: sub_402040j

var_40		= dword	ptr -40h
var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	0FFFFFFFFh
		push	offset SEH_41BA50
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 34h
		mov	al, byte_449729
		push	ebx
		push	esi
		push	edi
		test	al, al
		mov	[esp+4Ch+var_40], 0
		jz	loc_41BBAF
		push	ebp
		lea	ecx, [esp+50h+var_3C]
		call	sub_40142E
		push	400h
		lea	ecx, [esp+54h+var_3C]
		mov	[esp+54h+var_4], 1
		xor	bl, bl
		call	sub_401C71
		mov	ebp, eax
		call	sub_401F0A
		lea	ecx, [esp+50h+var_3C]
		call	sub_4013E3
		mov	[esp+50h+arg_4], eax
		lea	eax, [esp+50h+arg_4]
		push	eax
		push	ebp
		nop
		call	near ptr 2800000h
		test	eax, eax
		jnz	short loc_41BAE6
		mov	edi, offset byte_448F30
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	edx, ecx
		mov	esi, edi
		mov	edi, ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb


loc_41BAE6:				; CODE XREF: sub_41BA50+74j
		movsx	ecx, byte ptr [ebp+0]
		mov	eax, 41h


loc_41BAEF:				; CODE XREF: sub_41BA50+A9j
		cmp	ecx, eax
		jnz	short loc_41BAF5
		mov	bl, 1


loc_41BAF5:				; CODE XREF: sub_41BA50+A1j
		inc	eax
		cmp	eax, 5Bh
		jl	short loc_41BAEF
		mov	eax, 61h


loc_41BB00:				; CODE XREF: sub_41BA50+BAj
		cmp	ecx, eax
		jnz	short loc_41BB06
		mov	bl, 1


loc_41BB06:				; CODE XREF: sub_41BA50+B2j
		inc	eax
		cmp	eax, 7Bh
		jl	short loc_41BB00
		test	bl, bl
		jnz	short loc_41BB32
		mov	edi, offset byte_448F30
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb


loc_41BB32:				; CODE XREF: sub_41BA50+BEj
		mov	esi, dword_511AC8
		call	esi
		cdq
		mov	ecx, 0Ah
		idiv	ecx
		lea	ecx, [esp+50h+var_3C]
		push	edx
		call	sub_401140
		call	esi
		cdq
		mov	ecx, 0Ah
		idiv	ecx
		lea	ecx, [esp+50h+var_3C]
		push	edx
		call	sub_401140
		call	esi
		cdq
		mov	ecx, 0Ah
		idiv	ecx
		lea	ecx, [esp+50h+var_3C]
		push	edx
		call	sub_401140
		mov	esi, [esp+50h+arg_0]
		lea	edx, [esp+50h+var_3C]
		push	edx
		mov	ecx, esi
		call	sub_4014D3
		mov	[esp+50h+var_40], 1
		lea	ecx, [esp+50h+var_3C]
		mov	byte ptr [esp+50h+var_4], 0
		call	sub_401226
		pop	ebp
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	ecx, [esp+40h+var_C]
		mov	large fs:0, ecx
		add	esp, 40h
		retn
; ---------------------------------------------------------------------------


loc_41BBAF:				; CODE XREF: sub_41BA50+2Aj
		lea	ecx, [esp+4Ch+var_24]
		call	sub_40142E
		mov	ebx, 2
		mov	[esp+4Ch+var_4], ebx
		call	near ptr 27D0B1Ah
		nop
		push	eax
		nop
		call	near ptr 77C371BCh
		mov	edi, dword_511AC8
		add	esp, 4
		call	edi
		cdq
		mov	ecx, 3
		idiv	ecx
		lea	ecx, [esp+4Ch+var_24]
		mov	esi, edx
		mov	edx, [esp+4Ch+arg_4]
		push	edx
		add	esi, 6
		call	sub_4015E1
		test	esi, esi
		jle	short loc_41BC4E


loc_41BBF8:				; CODE XREF: sub_41BA50+1FCj
		lea	ecx, [esp+4Ch+var_3C]
		call	sub_40142E
		lea	eax, [esp+4Ch+var_24]
		lea	ecx, [esp+4Ch+var_3C]
		push	eax
		mov	byte ptr [esp+50h+var_4], 3
		call	sub_401FDC
		call	edi
		cdq
		mov	ecx, 1Ah
		idiv	ecx
		lea	ecx, [esp+4Ch+var_3C]
		add	edx, 61h
		push	edx
		call	sub_4017EE
		push	eax
		lea	edx, [esp+54h+var_24]
		push	offset dword_444E5C
		push	edx
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+4Ch+var_3C]
		mov	byte ptr [esp+4Ch+var_4], bl
		call	sub_401226
		dec	esi
		jnz	short loc_41BBF8


loc_41BC4E:				; CODE XREF: sub_41BA50+1A6j
		mov	esi, [esp+4Ch+arg_0]
		lea	eax, [esp+4Ch+var_24]
		push	eax
		mov	ecx, esi
		call	sub_4014D3
		lea	ecx, [esp+4Ch+var_24]
		mov	[esp+4Ch+var_40], 1
		mov	byte ptr [esp+4Ch+var_4], 0
		call	sub_401226
		mov	ecx, [esp+4Ch+var_C]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 40h
		retn
sub_41BA50	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 90h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41BD20:				; CODE XREF: ___:00401573j
		mov	al, [esp+4]
		cmp	al, 20h
		jz	short loc_41BD2F
		cmp	al, 9
		jz	short loc_41BD2F
		xor	al, al
		retn
; ---------------------------------------------------------------------------


loc_41BD2F:				; CODE XREF: ___:0041BD26j
					; ___:0041BD2Aj
		mov	al, 1
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41BD50:				; CODE XREF: ___:00401EF6j
		mov	eax, [esp+4]
		push	offset dword_444E64
		push	eax
		call	near ptr 77C3F010h
		nop
		add	esp, 8
		test	eax, eax
		jz	short loc_41BD74
		push	eax
		call	near ptr 77C40AB1h
		nop
		add	esp, 4
		mov	al, 1
		retn
; ---------------------------------------------------------------------------


loc_41BD74:				; CODE XREF: ___:0041BD65j
		xor	al, al
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41BD90	proc near		; CODE XREF: sub_401483j

var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_20		= byte ptr -20h
arg_0		= dword	ptr  4

		sub	esp, 30h
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+40h+arg_0]
		test	edi, edi
		jz	loc_41BFEE
		mov	esi, offset byte_448F30
		mov	eax, edi


loc_41BDAA:				; CODE XREF: sub_41BD90+3Cj
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_41BDD2
		test	cl, cl
		jz	short loc_41BDCE
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_41BDD2
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_41BDAA


loc_41BDCE:				; CODE XREF: sub_41BD90+26j
		xor	eax, eax
		jmp	short loc_41BDD7
; ---------------------------------------------------------------------------


loc_41BDD2:				; CODE XREF: sub_41BD90+22j
					; sub_41BD90+32j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41BDD7:				; CODE XREF: sub_41BD90+40j
		test	eax, eax
		jz	loc_41BFEE
		push	20h
		lea	eax, [esp+44h+var_20]
		push	edi
		push	eax
		nop
		call	near ptr 77C47A90h
		mov	edi, dword_511B00
		lea	ecx, [esp+4Ch+var_20]
		push	offset dword_4447F8
		push	ecx
		call	edi
		add	esp, 14h
		mov	[esp+40h+var_30], eax
		test	eax, eax
		jz	loc_41BFEE
		mov	ebx, 1
		lea	esi, [esp+40h+var_2C]


loc_41BE17:				; CODE XREF: sub_41BD90+A4j
		push	offset dword_4447F8
		push	0
		call	edi
		add	esp, 8
		mov	[esi], eax
		test	eax, eax
		jz	loc_41BFEE
		inc	ebx
		add	esi, 4
		cmp	ebx, 4
		jl	short loc_41BE17
		mov	ebp, [esp+40h+var_30]
		mov	esi, offset dword_444E80
		mov	eax, ebp


loc_41BE41:				; CODE XREF: sub_41BD90+D3j
		mov	cl, [eax]
		mov	bl, [esi]
		mov	dl, cl
		cmp	cl, bl
		jnz	short loc_41BE69
		test	dl, dl
		jz	short loc_41BE65
		mov	cl, [eax+1]
		mov	bl, [esi+1]
		mov	dl, cl
		cmp	cl, bl
		jnz	short loc_41BE69
		add	eax, 2
		add	esi, 2
		test	dl, dl
		jnz	short loc_41BE41


loc_41BE65:				; CODE XREF: sub_41BD90+BDj
		xor	eax, eax
		jmp	short loc_41BE6E
; ---------------------------------------------------------------------------


loc_41BE69:				; CODE XREF: sub_41BD90+B9j
					; sub_41BD90+C9j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41BE6E:				; CODE XREF: sub_41BD90+D7j
		test	eax, eax
		jnz	short loc_41BE7C
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 30h
		retn
; ---------------------------------------------------------------------------


loc_41BE7C:				; CODE XREF: sub_41BD90+E0j
		mov	esi, offset dword_444E7C
		mov	eax, ebp


loc_41BE83:				; CODE XREF: sub_41BD90+115j
		mov	cl, [eax]
		mov	bl, [esi]
		mov	dl, cl
		cmp	cl, bl
		jnz	short loc_41BEAB
		test	dl, dl
		jz	short loc_41BEA7
		mov	cl, [eax+1]
		mov	bl, [esi+1]
		mov	dl, cl
		cmp	cl, bl
		jnz	short loc_41BEAB
		add	eax, 2
		add	esi, 2
		test	dl, dl
		jnz	short loc_41BE83


loc_41BEA7:				; CODE XREF: sub_41BD90+FFj
		xor	eax, eax
		jmp	short loc_41BEB0
; ---------------------------------------------------------------------------


loc_41BEAB:				; CODE XREF: sub_41BD90+FBj
					; sub_41BD90+10Bj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41BEB0:				; CODE XREF: sub_41BD90+119j
		mov	edi, [esp+40h+var_2C]
		test	eax, eax
		jnz	short loc_41BEFA
		mov	esi, offset dword_444E78
		mov	edx, edi


loc_41BEBF:				; CODE XREF: sub_41BD90+151j
		mov	al, [edx]
		mov	cl, [esi]
		mov	bl, al
		cmp	al, cl
		jnz	short loc_41BEE7
		test	bl, bl
		jz	short loc_41BEE3
		mov	cl, [edx+1]
		mov	al, [esi+1]
		mov	bl, cl
		cmp	cl, al
		jnz	short loc_41BEE7
		add	edx, 2
		add	esi, 2
		test	bl, bl
		jnz	short loc_41BEBF


loc_41BEE3:				; CODE XREF: sub_41BD90+13Bj
		xor	edx, edx
		jmp	short loc_41BEEC
; ---------------------------------------------------------------------------


loc_41BEE7:				; CODE XREF: sub_41BD90+137j
					; sub_41BD90+147j
		sbb	edx, edx
		sbb	edx, 0FFFFFFFFh


loc_41BEEC:				; CODE XREF: sub_41BD90+155j
		test	edx, edx
		jnz	short loc_41BEFA
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 30h
		retn
; ---------------------------------------------------------------------------


loc_41BEFA:				; CODE XREF: sub_41BD90+126j
					; sub_41BD90+15Ej
		mov	esi, offset dword_444E74
		mov	edx, ebp


loc_41BF01:				; CODE XREF: sub_41BD90+193j
		mov	al, [edx]
		mov	cl, [esi]
		mov	bl, al
		cmp	al, cl
		jnz	short loc_41BF29
		test	bl, bl
		jz	short loc_41BF25
		mov	cl, [edx+1]
		mov	al, [esi+1]
		mov	bl, cl
		cmp	cl, al
		jnz	short loc_41BF29
		add	edx, 2
		add	esi, 2
		test	bl, bl
		jnz	short loc_41BF01


loc_41BF25:				; CODE XREF: sub_41BD90+17Dj
		xor	edx, edx
		jmp	short loc_41BF2E
; ---------------------------------------------------------------------------


loc_41BF29:				; CODE XREF: sub_41BD90+179j
					; sub_41BD90+189j
		sbb	edx, edx
		sbb	edx, 0FFFFFFFFh


loc_41BF2E:				; CODE XREF: sub_41BD90+197j
		test	edx, edx
		jnz	short loc_41BF74
		mov	esi, offset dword_444E70
		mov	edx, edi


loc_41BF39:				; CODE XREF: sub_41BD90+1CBj
		mov	al, [edx]
		mov	cl, [esi]
		mov	bl, al
		cmp	al, cl
		jnz	short loc_41BF61
		test	bl, bl
		jz	short loc_41BF5D
		mov	cl, [edx+1]
		mov	al, [esi+1]
		mov	bl, cl
		cmp	cl, al
		jnz	short loc_41BF61
		add	edx, 2
		add	esi, 2
		test	bl, bl
		jnz	short loc_41BF39


loc_41BF5D:				; CODE XREF: sub_41BD90+1B5j
		xor	edx, edx
		jmp	short loc_41BF66
; ---------------------------------------------------------------------------


loc_41BF61:				; CODE XREF: sub_41BD90+1B1j
					; sub_41BD90+1C1j
		sbb	edx, edx
		sbb	edx, 0FFFFFFFFh


loc_41BF66:				; CODE XREF: sub_41BD90+1CFj
		test	edx, edx
		jnz	short loc_41BF74
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 30h
		retn
; ---------------------------------------------------------------------------


loc_41BF74:				; CODE XREF: sub_41BD90+1A0j
					; sub_41BD90+1D8j
		mov	esi, offset dword_444E6C
		mov	ecx, ebp


loc_41BF7B:				; CODE XREF: sub_41BD90+20Dj
		mov	al, [ecx]
		mov	bl, [esi]
		mov	dl, al
		cmp	al, bl
		jnz	short loc_41BFA3
		test	dl, dl
		jz	short loc_41BF9F
		mov	al, [ecx+1]
		mov	bl, [esi+1]
		mov	dl, al
		cmp	al, bl
		jnz	short loc_41BFA3
		add	ecx, 2
		add	esi, 2
		test	dl, dl
		jnz	short loc_41BF7B


loc_41BF9F:				; CODE XREF: sub_41BD90+1F7j
		xor	ecx, ecx
		jmp	short loc_41BFA8
; ---------------------------------------------------------------------------


loc_41BFA3:				; CODE XREF: sub_41BD90+1F3j
					; sub_41BD90+203j
		sbb	ecx, ecx
		sbb	ecx, 0FFFFFFFFh


loc_41BFA8:				; CODE XREF: sub_41BD90+211j
		test	ecx, ecx
		jnz	short loc_41BFEE
		mov	esi, offset dword_444E68
		mov	eax, edi


loc_41BFB3:				; CODE XREF: sub_41BD90+245j
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_41BFDB
		test	cl, cl
		jz	short loc_41BFD7
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_41BFDB
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_41BFB3


loc_41BFD7:				; CODE XREF: sub_41BD90+22Fj
		xor	eax, eax
		jmp	short loc_41BFE0
; ---------------------------------------------------------------------------


loc_41BFDB:				; CODE XREF: sub_41BD90+22Bj
					; sub_41BD90+23Bj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41BFE0:				; CODE XREF: sub_41BD90+249j
		test	eax, eax
		jnz	short loc_41BFEE
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 30h
		retn
; ---------------------------------------------------------------------------


loc_41BFEE:				; CODE XREF: sub_41BD90+Dj
					; sub_41BD90+49j ...
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 30h
		retn
sub_41BD90	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 0A0h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_41C0A0:				; CODE XREF: ___:00402022j
		sub	esp, 10h
		push	ebx
		push	esi
		push	6
		push	1
		push	2
		xor	bl, bl
		nop
		call	near ptr 71AB3B91h
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41C108
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41C108
		mov	eax, [esp+1Ch]
		push	eax
		nop
		call	near ptr 71AB2BF4h
		mov	ecx, [esp+20h]
		mov	[esp+0Ch], eax
		push	ecx
		nop
		call	near ptr 71AB2B66h
		lea	edx, [esp+8]
		push	10h
		push	edx
		push	esi
		mov	[esp+16h], ax
		mov	word ptr [esp+14h], 2
		call	near ptr 71AB406Ah
		nop
		test	eax, eax
		jnz	short loc_41C0F9
		mov	bl, 1


loc_41C0F9:				; CODE XREF: ___:0041C0F5j
		push	esi
		nop
		call	near ptr 71AB9639h
		mov	al, bl
		pop	esi
		pop	ebx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_41C108:				; CODE XREF: ___:0041C0B8j
					; ___:0041C0BDj
		pop	esi
		xor	al, al
		pop	ebx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41C130	proc near		; CODE XREF: sub_401299j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	0
		push	0
		push	eax
		push	ecx
		push	offset dword_4446F4
		push	0
		nop
		call	near ptr 7CA41110h
		cmp	eax, 20h
		setnl	al
		retn
sub_41C130	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41C170	proc near		; CODE XREF: sub_402167j

var_54		= byte ptr -54h
var_44		= dword	ptr -44h
var_14		= word ptr -14h
arg_0		= dword	ptr  4

		sub	esp, 54h
		push	edi
		mov	ecx, 11h
		xor	eax, eax
		lea	edi, [esp+58h+var_44]
		rep stosd
		mov	[esp+58h+var_14], ax
		lea	eax, [esp+58h+var_54]
		mov	edx, [esp+58h+arg_0]
		lea	ecx, [esp+58h+var_44]
		push	eax
		push	ecx
		push	0
		push	0
		push	28h
		push	0
		push	0
		push	0
		push	edx
		push	0
		mov	[esp+80h+var_44], 44h
		nop
		call	near ptr 27E042Eh
		test	eax, eax
		setnle	al
		pop	edi
		add	esp, 54h
		retn
sub_41C170	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41C1E0:				; CODE XREF: ___:00401884j
		sub	esp, 354h
		mov	eax, dword_444E8C
		mov	ecx, dword_444E90
		mov	[esp+0], eax
		mov	al, byte_448F30
		push	esi
		push	edi
		mov	[esp+0Ch], ecx
		mov	[esp+14h], al
		mov	ecx, 45h
		xor	eax, eax
		lea	edi, [esp+15h]
		mov	edx, dword_444E94
		rep stosd
		mov	ecx, dword_444E84
		mov	[esp+10h], edx
		mov	dx, word_444E88
		mov	[esp+12Ch], ecx
		stosw
		stosb
		mov	ecx, 8Ah
		xor	eax, eax
		lea	edi, [esp+132h]
		mov	[esp+130h], dx
		rep stosd
		mov	ecx, [esp+360h]
		push	0FFh
		stosw
		lea	eax, [esp+18h]
		xor	edi, edi
		push	eax
		push	0FFFFFFFFh
		push	ecx
		push	edi
		push	edi
		call	near ptr 27A0131h
		nop
		mov	esi, dword_511AB8
		lea	edx, [esp+14h]
		lea	eax, [esp+12Ch]
		push	edx
		push	eax
		call	esi
		lea	ecx, [esp+10h]
		lea	edx, [esp+134h]
		push	ecx
		push	edx
		call	esi
		mov	esi, [esp+374h]
		add	esp, 10h
		lea	eax, [esp+12Ch]
		push	edi
		push	offset dword_50DB4C
		push	offset dword_50DB4C
		push	esi
		mov	[esi+4], edi
		mov	[esi+10h], edi
		mov	[esi+14h], eax
		mov	[esi+1Ch], edi
		call	near ptr word_43829E
		cmp	eax, 5
		jz	short loc_41C2C8
		cmp	eax, 4C3h
		jnz	short loc_41C2D1


loc_41C2C8:				; CODE XREF: ___:0041C2BFj
		push	edi
		push	edi
		push	edi
		push	esi
		call	near ptr word_43829E


loc_41C2D1:				; CODE XREF: ___:0041C2C6j
		pop	edi
		cmp	eax, 5
		pop	esi
		jz	short loc_41C2E8
		cmp	eax, 4C3h
		jz	short loc_41C2E8
		mov	al, 1
		add	esp, 354h
		retn
; ---------------------------------------------------------------------------


loc_41C2E8:				; CODE XREF: ___:0041C2D6j
					; ___:0041C2DDj
		xor	al, al
		add	esp, 354h
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41C350:				; CODE XREF: ___:00401EE7j
		sub	esp, 354h
		mov	eax, dword_444E8C
		mov	ecx, dword_444E90
		mov	[esp+0], eax
		mov	al, byte_448F30
		push	esi
		push	edi
		mov	[esp+0Ch], ecx
		mov	[esp+14h], al
		mov	ecx, 45h
		xor	eax, eax
		lea	edi, [esp+15h]
		mov	edx, dword_444E94
		rep stosd
		mov	ecx, dword_444E84
		mov	[esp+10h], edx
		mov	dx, word_444E88
		mov	[esp+12Ch], ecx
		stosw
		stosb
		mov	ecx, 8Ah
		xor	eax, eax
		lea	edi, [esp+132h]
		mov	[esp+130h], dx
		rep stosd
		mov	ecx, [esp+360h]
		push	0FFh
		stosw
		lea	eax, [esp+18h]
		push	eax
		push	0FFFFFFFFh
		push	ecx
		push	0
		push	0
		call	near ptr 27A0131h
		nop
		mov	esi, dword_511AB8
		lea	edx, [esp+14h]
		lea	eax, [esp+12Ch]
		push	edx
		push	eax
		call	esi
		lea	ecx, [esp+10h]
		lea	edx, [esp+134h]
		push	ecx
		push	edx
		call	esi
		add	esp, 10h
		lea	eax, [esp+12Ch]
		push	0
		push	0
		push	eax
		call	near ptr dword_4382A4
		test	eax, eax
		jz	short loc_41C438
		mov	esi, dword_5118D8


loc_41C41C:				; CODE XREF: ___:0041C436j
		push	7D0h
		call	esi
		push	0
		lea	ecx, [esp+130h]
		push	0
		push	ecx
		call	near ptr dword_4382A4
		test	eax, eax
		jnz	short loc_41C41C


loc_41C438:				; CODE XREF: ___:0041C414j
		pop	edi
		mov	al, 1
		pop	esi
		add	esp, 354h
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41C490	proc near		; CODE XREF: sub_401D93j

var_3C		= byte ptr -3Ch
var_24		= byte ptr -24h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41C490
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	edi
		push	0
		push	0Ch
		push	4
		push	4Fh
		push	10h
		push	14h
		lea	eax, [esp+5Ch+var_3C]
		push	6
		mov	esi, ecx
		push	eax
		call	sub_4019C4
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 0
		call	sub_4017EE
		lea	ecx, [esi+0BCh]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+44h+var_3C]
		mov	[esp+44h+var_4], edi
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Fh
		push	10h
		push	14h
		lea	edx, [esp+60h+var_3C]
		push	6
		push	edx
		call	sub_4019C4
		add	esp, 24h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 1
		call	sub_4017EE
		push	eax
		lea	eax, [esi+118h]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+44h+var_3C]
		mov	[esp+44h+var_4], edi
		call	sub_401226
		push	0
		push	10h
		push	15h
		push	4Fh
		push	10h
		push	14h
		lea	ecx, [esp+5Ch+var_3C]
		push	6
		push	ecx
		call	sub_4019C4
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 2
		call	sub_4017EE
		lea	edx, [esi+0EAh]
		push	eax
		push	edx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+44h+var_3C]
		mov	[esp+44h+var_4], edi
		call	sub_401226
		push	0
		push	0Ch
		push	4
		push	4Fh
		push	10h
		push	14h
		push	14h
		lea	eax, [esp+60h+var_3C]
		push	8
		push	eax
		call	sub_4019C4
		add	esp, 24h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 3
		call	sub_4017EE
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+44h+var_3C]
		mov	[esp+44h+var_4], edi
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Fh
		push	10h
		push	14h
		push	14h
		lea	edx, [esp+64h+var_3C]
		push	8
		push	edx
		call	sub_4019C4
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 4
		call	sub_4017EE
		push	eax
		lea	eax, [esi+60h]
		push	eax
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+44h+var_3C]
		mov	[esp+44h+var_4], edi
		call	sub_401226
		push	0
		push	5
		push	14h
		push	1
		push	4
		push	10h
		push	15h
		push	4Fh
		push	10h
		push	14h
		push	14h
		lea	ecx, [esp+70h+var_24]
		push	8
		push	ecx
		call	sub_4019C4
		add	esp, 34h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 5
		call	sub_4017EE
		add	esi, 32h
		push	eax
		push	esi
		mov	ecx, offset dword_449118
		call	sub_40159B
		lea	ecx, [esp+44h+var_24]
		mov	[esp+44h+var_4], edi
		call	sub_401226
		mov	ecx, [esp+44h+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
sub_41C490	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 80h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41C710:				; CODE XREF: ___:00401064j
		push	0FFFFFFFFh
		push	offset byte_43C20D
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 108h
		push	ebx
		push	ebp
		mov	ebp, ecx
		push	esi
		push	edi
		lea	ecx, [esp+18h]
		call	sub_40142E
		lea	ecx, [esp+48h]
		mov	dword ptr [esp+120h], 0
		call	sub_40142E
		lea	ecx, [esp+78h]
		mov	byte ptr [esp+120h], 1
		call	sub_40142E
		lea	ecx, [esp+90h]
		mov	byte ptr [esp+120h], 2
		call	sub_40142E
		lea	ecx, [esp+60h]
		mov	byte ptr [esp+120h], 3
		call	sub_40142E
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 4
		call	sub_401B4A
		mov	esi, [esp+128h]
		mov	bl, 5
		lea	ecx, [ebp+8Eh]
		mov	[esp+120h], bl
		lea	edi, [esi+7Eh]
		call	sub_4017EE
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		lea	ecx, [ebp+4]
		call	sub_4017EE
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41C93C
		push	offset dword_444600
		lea	eax, [esp+34h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 6
		push	ecx
		mov	ecx, eax
		call	sub_40168B
		push	eax
		call	sub_401947
		add	esp, 8
		lea	ecx, [esp+30h]
		test	al, al
		setz	byte ptr [esp+13h]
		mov	[esp+120h], bl
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jnz	loc_41D2A1
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FDC
		push	offset dword_444C6C
		lea	ecx, [esp+1Ch]
		call	sub_401AAF
		mov	eax, [esp+0FCh]
		lea	ecx, [esp+18h]
		push	eax
		call	sub_401140
		lea	ecx, [esp+100h]
		push	ecx
		lea	ecx, [esp+4Ch]
		call	sub_401FDC
		push	1
		push	offset dword_444600
		lea	edx, [esp+38h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		push	eax
		lea	ecx, [esp+64h]
		mov	byte ptr [esp+124h], 7
		call	sub_401FDC
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	94h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 8
		jz	short loc_41C8CC
		mov	ecx, eax
		call	sub_4021E9
		mov	edi, eax
		jmp	short loc_41C8CE
; ---------------------------------------------------------------------------


loc_41C8CC:				; CODE XREF: ___:0041C8BFj
		xor	edi, edi


loc_41C8CE:				; CODE XREF: ___:0041C8CAj
		lea	eax, [esp+18h]
		lea	ecx, [edi+11h]
		push	eax
		mov	[esp+124h], bl
		call	sub_401FDC
		lea	ecx, [esp+48h]
		push	ecx
		lea	ecx, [edi+26h]
		call	sub_401FDC
		lea	edx, [esp+60h]
		lea	ecx, [edi+65h]
		push	edx
		call	sub_401FDC
		lea	eax, [esi+69h]
		lea	ecx, [edi+7Ah]
		push	eax
		call	sub_401FDC
		mov	byte ptr [edi+8Fh], 0
		mov	byte ptr [edi+90h], 0
		mov	byte ptr [edi+91h], 0
		mov	cl, [esi+93h]
		mov	[edi+92h], cl
		mov	dl, [esi+94h]
		mov	ecx, edi
		mov	[edi+93h], dl
		call	sub_4013DE


loc_41C93C:				; CODE XREF: ___:0041C7D0j
		lea	ecx, [ebp+60h]
		call	sub_4017EE
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41CABB
		push	offset dword_444600
		lea	eax, [esp+34h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 9
		push	ecx
		mov	ecx, eax
		call	sub_40168B
		push	eax
		call	sub_401947
		add	esp, 8
		lea	ecx, [esp+30h]
		test	al, al
		setz	byte ptr [esp+13h]
		mov	[esp+120h], bl
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jnz	loc_41D2A1
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FDC
		push	offset dword_444C6C
		lea	ecx, [esp+1Ch]
		call	sub_401AAF
		mov	eax, [esp+0FCh]
		lea	ecx, [esp+18h]
		push	eax
		call	sub_401140
		lea	ecx, [esp+100h]
		push	ecx
		lea	ecx, [esp+4Ch]
		call	sub_401FDC
		push	1
		push	offset dword_444600
		lea	edx, [esp+38h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		push	eax
		lea	ecx, [esp+64h]
		mov	byte ptr [esp+124h], 0Ah
		call	sub_401FDC
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	94h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 0Bh
		jz	short loc_41CA4B
		mov	ecx, eax
		call	sub_4021E9
		mov	edi, eax
		jmp	short loc_41CA4D
; ---------------------------------------------------------------------------


loc_41CA4B:				; CODE XREF: ___:0041CA3Ej
		xor	edi, edi


loc_41CA4D:				; CODE XREF: ___:0041CA49j
		lea	eax, [esp+18h]
		lea	ecx, [edi+11h]
		push	eax
		mov	[esp+124h], bl
		call	sub_401FDC
		lea	ecx, [esp+48h]
		push	ecx
		lea	ecx, [edi+26h]
		call	sub_401FDC
		lea	edx, [esp+60h]
		lea	ecx, [edi+65h]
		push	edx
		call	sub_401FDC
		lea	eax, [esi+69h]
		lea	ecx, [edi+7Ah]
		push	eax
		call	sub_401FDC
		mov	byte ptr [edi+8Fh], 1
		mov	byte ptr [edi+90h], 0
		mov	byte ptr [edi+91h], 0
		mov	cl, [esi+93h]
		mov	[edi+92h], cl
		mov	dl, [esi+94h]
		mov	ecx, edi
		mov	[edi+93h], dl
		call	sub_4013DE


loc_41CABB:				; CODE XREF: ___:0041C94Fj
		lea	ecx, [ebp+32h]
		call	sub_4017EE
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41CCF6
		push	offset dword_444600
		lea	eax, [esp+34h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 0Ch
		push	ecx
		mov	ecx, eax
		call	sub_40168B
		push	eax
		call	sub_401947
		add	esp, 8
		lea	ecx, [esp+30h]
		test	al, al
		setz	byte ptr [esp+13h]
		mov	[esp+120h], bl
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jnz	loc_41D2A1
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FDC
		push	offset dword_444C6C
		lea	ecx, [esp+1Ch]
		call	sub_401AAF
		mov	eax, [esp+0FCh]
		lea	ecx, [esp+18h]
		push	eax
		call	sub_401140
		lea	ecx, [esp+100h]
		push	ecx
		lea	ecx, [esp+4Ch]
		call	sub_401FDC
		push	1
		push	offset dword_444600
		lea	edx, [esp+38h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		push	eax
		lea	ecx, [esp+64h]
		mov	byte ptr [esp+124h], 0Dh
		call	sub_401FDC
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	offset dword_444600
		lea	eax, [esp+34h]
		push	3
		push	eax
		mov	ecx, esi
		call	sub_4016B8
		push	offset word_44955A
		mov	ecx, eax
		mov	byte ptr [esp+124h], 0Eh
		call	sub_401B86
		test	eax, eax
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jz	short loc_41CC5E
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 4
		call	sub_4014BA
		lea	ecx, [esp+60h]
		mov	byte ptr [esp+120h], 3
		call	sub_401226
		lea	ecx, [esp+90h]
		mov	byte ptr [esp+120h], 2
		call	sub_401226
		lea	ecx, [esp+78h]
		mov	byte ptr [esp+120h], 1
		call	sub_401226
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+120h], 0
		call	sub_401226
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+120h], 0FFFFFFFFh
		call	sub_401226
		xor	al, al
		jmp	loc_41D312
; ---------------------------------------------------------------------------


loc_41CC5E:				; CODE XREF: ___:0041CBE6j
		push	94h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 0Fh
		jz	short loc_41CC86
		mov	ecx, eax
		call	sub_4021E9
		mov	edi, eax
		jmp	short loc_41CC88
; ---------------------------------------------------------------------------


loc_41CC86:				; CODE XREF: ___:0041CC79j
		xor	edi, edi


loc_41CC88:				; CODE XREF: ___:0041CC84j
		lea	ecx, [esp+18h]
		mov	[esp+120h], bl
		push	ecx
		lea	ecx, [edi+11h]
		call	sub_401FDC
		lea	edx, [esp+48h]
		lea	ecx, [edi+26h]
		push	edx
		call	sub_401FDC
		lea	eax, [esp+60h]
		lea	ecx, [edi+65h]
		push	eax
		call	sub_401FDC
		lea	ecx, [esi+69h]
		push	ecx
		lea	ecx, [edi+7Ah]
		call	sub_401FDC
		mov	byte ptr [edi+8Fh], 0
		mov	byte ptr [edi+90h], 1
		mov	byte ptr [edi+91h], 0
		mov	dl, [esi+93h]
		mov	[edi+92h], dl
		mov	al, [esi+94h]
		mov	ecx, edi
		mov	[edi+93h], al
		call	sub_4013DE


loc_41CCF6:				; CODE XREF: ___:0041CACEj
		lea	ecx, [ebp+0BCh]
		call	sub_4017EE
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41CE9B
		push	offset dword_444600
		lea	ecx, [esp+34h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016B8
		lea	edx, [esp+0A8h]
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+124h], 10h
		call	sub_40168B
		push	eax
		call	sub_401947
		add	esp, 8
		lea	ecx, [esp+30h]
		test	al, al
		setz	byte ptr [esp+13h]
		mov	[esp+120h], bl
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jnz	loc_41D2A1
		lea	eax, [esp+0D2h]
		lea	ecx, [esp+78h]
		push	eax
		call	sub_401FDC
		lea	ecx, [esp+0E7h]
		push	ecx
		lea	ecx, [esp+94h]
		call	sub_401FDC
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FDC
		lea	eax, [esp+100h]
		lea	ecx, [esp+48h]
		push	eax
		call	sub_401FDC
		push	1
		push	offset dword_444600
		lea	ecx, [esp+38h]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4011EA
		push	eax
		lea	ecx, [esp+64h]
		mov	byte ptr [esp+124h], 11h
		call	sub_401FDC
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	94h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 12h
		jz	short loc_41CE0E
		mov	ecx, eax
		call	sub_4021E9
		mov	edi, eax
		jmp	short loc_41CE10
; ---------------------------------------------------------------------------


loc_41CE0E:				; CODE XREF: ___:0041CE01j
		xor	edi, edi


loc_41CE10:				; CODE XREF: ___:0041CE0Cj
		lea	edx, [esp+18h]
		lea	ecx, [edi+11h]
		push	edx
		mov	[esp+124h], bl
		call	sub_401FDC
		lea	eax, [esp+48h]
		lea	ecx, [edi+26h]
		push	eax
		call	sub_401FDC
		lea	ecx, [esp+60h]
		push	ecx
		lea	ecx, [edi+65h]
		call	sub_401FDC
		lea	edx, [esp+78h]
		lea	ecx, [edi+3Bh]
		push	edx
		call	sub_401FDC
		lea	eax, [esp+90h]
		lea	ecx, [edi+50h]
		push	eax
		call	sub_401FDC
		lea	ecx, [esi+69h]
		push	ecx
		lea	ecx, [edi+7Ah]
		call	sub_401FDC
		mov	byte ptr [edi+8Fh], 0
		mov	byte ptr [edi+90h], 0
		mov	byte ptr [edi+91h], 1
		mov	dl, [esi+93h]
		mov	[edi+92h], dl
		mov	al, [esi+94h]
		mov	ecx, edi
		mov	[edi+93h], al
		call	sub_4013DE


loc_41CE9B:				; CODE XREF: ___:0041CD0Cj
		lea	ecx, [ebp+118h]
		call	sub_4017EE
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41D040
		push	offset dword_444600
		lea	ecx, [esp+34h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016B8
		lea	edx, [esp+0A8h]
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+124h], 13h
		call	sub_40168B
		push	eax
		call	sub_401947
		add	esp, 8
		lea	ecx, [esp+30h]
		test	al, al
		setz	byte ptr [esp+13h]
		mov	[esp+120h], bl
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jnz	loc_41D2A1
		lea	eax, [esp+0D2h]
		lea	ecx, [esp+78h]
		push	eax
		call	sub_401FDC
		lea	ecx, [esp+0E7h]
		push	ecx
		lea	ecx, [esp+94h]
		call	sub_401FDC
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FDC
		lea	eax, [esp+100h]
		lea	ecx, [esp+48h]
		push	eax
		call	sub_401FDC
		push	1
		push	offset dword_444600
		lea	ecx, [esp+38h]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4011EA
		push	eax
		lea	ecx, [esp+64h]
		mov	byte ptr [esp+124h], 14h
		call	sub_401FDC
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	94h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 15h
		jz	short loc_41CFB3
		mov	ecx, eax
		call	sub_4021E9
		mov	edi, eax
		jmp	short loc_41CFB5
; ---------------------------------------------------------------------------


loc_41CFB3:				; CODE XREF: ___:0041CFA6j
		xor	edi, edi


loc_41CFB5:				; CODE XREF: ___:0041CFB1j
		lea	edx, [esp+18h]
		lea	ecx, [edi+11h]
		push	edx
		mov	[esp+124h], bl
		call	sub_401FDC
		lea	eax, [esp+48h]
		lea	ecx, [edi+26h]
		push	eax
		call	sub_401FDC
		lea	ecx, [esp+60h]
		push	ecx
		lea	ecx, [edi+65h]
		call	sub_401FDC
		lea	edx, [esp+78h]
		lea	ecx, [edi+3Bh]
		push	edx
		call	sub_401FDC
		lea	eax, [esp+90h]
		lea	ecx, [edi+50h]
		push	eax
		call	sub_401FDC
		lea	ecx, [esi+69h]
		push	ecx
		lea	ecx, [edi+7Ah]
		call	sub_401FDC
		mov	byte ptr [edi+8Fh], 1
		mov	byte ptr [edi+90h], 0
		mov	byte ptr [edi+91h], 1
		mov	dl, [esi+93h]
		mov	[edi+92h], dl
		mov	al, [esi+94h]
		mov	ecx, edi
		mov	[edi+93h], al
		call	sub_4013DE


loc_41D040:				; CODE XREF: ___:0041CEB1j
		lea	ecx, [ebp+0EAh]
		call	sub_4017EE
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41D2A1
		push	offset dword_444600
		lea	ecx, [esp+34h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016B8
		lea	edx, [esp+0A8h]
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+124h], 16h
		call	sub_40168B
		push	eax
		call	sub_401947
		add	esp, 8
		lea	ecx, [esp+30h]
		test	al, al
		setz	byte ptr [esp+13h]
		mov	[esp+120h], bl
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jnz	loc_41D2A1
		lea	eax, [esp+0D2h]
		lea	ecx, [esp+78h]
		push	eax
		call	sub_401FDC
		lea	ecx, [esp+0E7h]
		push	ecx
		lea	ecx, [esp+94h]
		call	sub_401FDC
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FDC
		lea	eax, [esp+100h]
		lea	ecx, [esp+48h]
		push	eax
		call	sub_401FDC
		push	1
		push	offset dword_444600
		lea	ecx, [esp+38h]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4011EA
		push	eax
		lea	ecx, [esp+64h]
		mov	byte ptr [esp+124h], 17h
		call	sub_401FDC
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	offset dword_444600
		lea	edx, [esp+34h]
		push	3
		push	edx
		mov	ecx, esi
		call	sub_4016B8
		push	offset word_44955A
		mov	ecx, eax
		mov	byte ptr [esp+124h], 18h
		call	sub_401B86
		test	eax, eax
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jz	short loc_41D1EC
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 4
		call	sub_4014BA
		lea	ecx, [esp+60h]
		mov	byte ptr [esp+120h], 3
		call	sub_401226
		lea	ecx, [esp+90h]
		mov	byte ptr [esp+120h], 2
		call	sub_401226
		lea	ecx, [esp+78h]
		mov	byte ptr [esp+120h], 1
		call	sub_401226
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+120h], 0
		call	sub_401226
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+120h], 0FFFFFFFFh
		call	sub_401226
		xor	al, al
		jmp	loc_41D312
; ---------------------------------------------------------------------------


loc_41D1EC:				; CODE XREF: ___:0041D174j
		push	94h
		call	near ptr word_437AEA
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 19h
		jz	short loc_41D214
		mov	ecx, eax
		call	sub_4021E9
		mov	edi, eax
		jmp	short loc_41D216
; ---------------------------------------------------------------------------


loc_41D214:				; CODE XREF: ___:0041D207j
		xor	edi, edi


loc_41D216:				; CODE XREF: ___:0041D212j
		lea	eax, [esp+18h]
		lea	ecx, [edi+11h]
		push	eax
		mov	[esp+124h], bl
		call	sub_401FDC
		lea	ecx, [esp+48h]
		push	ecx
		lea	ecx, [edi+26h]
		call	sub_401FDC
		lea	edx, [esp+60h]
		lea	ecx, [edi+65h]
		push	edx
		call	sub_401FDC
		lea	eax, [esp+78h]
		lea	ecx, [edi+3Bh]
		push	eax
		call	sub_401FDC
		lea	ecx, [esp+90h]
		push	ecx
		lea	ecx, [edi+50h]
		call	sub_401FDC
		lea	edx, [esi+69h]
		lea	ecx, [edi+7Ah]
		push	edx
		call	sub_401FDC
		mov	byte ptr [edi+8Fh], 0
		mov	byte ptr [edi+90h], 1
		mov	byte ptr [edi+91h], 1
		mov	al, [esi+93h]
		mov	[edi+92h], al
		mov	cl, [esi+94h]
		mov	[edi+93h], cl
		mov	ecx, edi
		call	sub_4013DE


loc_41D2A1:				; CODE XREF: ___:0041C826j
					; ___:0041C9A5j ...
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 4
		call	sub_4014BA
		lea	ecx, [esp+60h]
		mov	byte ptr [esp+120h], 3
		call	sub_401226
		lea	ecx, [esp+90h]
		mov	byte ptr [esp+120h], 2
		call	sub_401226
		lea	ecx, [esp+78h]
		mov	byte ptr [esp+120h], 1
		call	sub_401226
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+120h], 0
		call	sub_401226
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+120h], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1


loc_41D312:				; CODE XREF: ___:0041CC59j
					; ___:0041D1E7j
		mov	ecx, [esp+118h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 114h
		retn	4
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 310h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41D640	proc near		; CODE XREF: sub_401B4Aj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41D640
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_40142E
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_40142E
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_40142E
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_40142E
		lea	ecx, [esi+58h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_40142E
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_41D640	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41D6D0	proc near		; CODE XREF: sub_4014BAj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41D6D0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		lea	ecx, [esi+58h]
		mov	[esp+14h+var_4], 3
		call	sub_401226
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401226
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401226
		lea	ecx, [esi+15h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401226
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_41D6D0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41D770	proc near		; CODE XREF: sub_4021E9j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41D770
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		call	sub_401E88
		lea	ecx, [esi+11h]
		mov	[esp+14h+var_4], 0
		call	sub_40142E
		lea	ecx, [esi+26h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_40142E
		lea	ecx, [esi+3Bh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_40142E
		lea	ecx, [esi+50h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_40142E
		lea	ecx, [esi+65h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_40142E
		lea	ecx, [esi+7Ah]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_40142E
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43F0D0
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_41D770	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41D830:				; CODE XREF: ___:00401168j
					; ___:004019F6j
		push	esi
		mov	esi, ecx
		call	sub_4015CD
		test	byte ptr [esp+8], 1
		jz	short loc_41D848
		push	esi
		call	near ptr word_437AD2
		add	esp, 4


loc_41D848:				; CODE XREF: ___:0041D83Dj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41D860	proc near		; CODE XREF: sub_4015CDj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41D860
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+14h+var_10], esi
		mov	dword ptr [esi], offset	dword_43F0D0
		lea	ecx, [esi+7Ah]
		mov	[esp+14h+var_4], 5
		call	sub_401226
		lea	ecx, [esi+65h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401226
		lea	ecx, [esi+50h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401226
		lea	ecx, [esi+3Bh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401226
		lea	ecx, [esi+26h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401226
		lea	ecx, [esi+11h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401226
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_40204F
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_41D860	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41D930:				; CODE XREF: ___:00401C94j
		push	0FFFFFFFFh
		mov	eax, large fs:0
		push	offset word_43C3F2
		push	eax
		mov	eax, 1158h
		mov	large fs:0, esp
		call	near ptr dword_437B30
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		push	offset byte_448F30
		lea	edi, [esi+11h]
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jz	near ptr byte_41E035
		lea	ebx, [esi+65h]
		push	offset byte_448F30
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jz	near ptr byte_41E035
		lea	ecx, [esi+26h]
		push	offset byte_448F30
		call	sub_4012EE
		test	eax, eax
		jz	near ptr byte_41E035
		mov	al, [esi+91h]
		test	al, al
		jz	short loc_41D9D1
		push	offset byte_448F30
		lea	ecx, [esi+3Bh]
		call	sub_4012EE
		test	eax, eax
		jz	short loc_41D9C4
		push	offset byte_448F30
		lea	ecx, [esi+50h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_41D9D1


loc_41D9C4:				; CODE XREF: ___:0041D9B1j
		mov	[esp+14h], esi
		lea	eax, [esp+14h]
		jmp	near ptr byte_41E03D
; ---------------------------------------------------------------------------


loc_41D9D1:				; CODE XREF: ___:0041D9A0j
					; ___:0041D9C2j
		push	offset dword_444C6C
		lea	ecx, [esp+20h]
		push	1
		push	ecx
		mov	ecx, edi
		call	sub_4016B8
		push	offset byte_448F30
		mov	ecx, eax
		mov	dword ptr [esp+1174h], 0
		call	sub_4012EE
		lea	ecx, [esp+1Ch]
		mov	ebp, eax
		mov	dword ptr [esp+1170h], 0FFFFFFFFh
		call	sub_401226
		test	ebp, ebp
		jz	short loc_41DA5E
		push	offset dword_444C6C
		lea	edx, [esp+20h]
		push	1
		push	edx
		mov	ecx, edi
		call	sub_4016B8
		mov	ecx, eax
		mov	dword ptr [esp+1170h], 1
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		lea	ecx, [esp+1Ch]
		mov	ebp, eax
		mov	dword ptr [esp+1170h], 0FFFFFFFFh
		call	sub_401226
		test	ebp, ebp
		jnz	short loc_41DA6F


loc_41DA5E:				; CODE XREF: ___:0041DA13j
		mov	al, [esi+91h]
		neg	al
		sbb	eax, eax
		and	al, 0C5h
		add	eax, 50h
		mov	ebp, eax


loc_41DA6F:				; CODE XREF: ___:0041DA5Cj
		push	offset dword_444C6C
		lea	ecx, [esp+38h]
		push	0
		push	ecx
		mov	ecx, edi
		call	sub_4016B8
		lea	edx, [esp+34h]
		mov	ecx, edi
		push	edx
		mov	dword ptr [esp+1174h], 2
		call	sub_401FDC
		lea	eax, [esp+64h]
		push	104h
		push	eax
		mov	ecx, ebx
		call	sub_4017EE
		push	eax
		call	near ptr 27F0000h
		nop
		lea	ecx, [esp+64h]
		push	ecx
		mov	ecx, ebx
		call	sub_4015E1
		mov	al, [esi+91h]
		test	al, al
		jz	loc_41DC04
		call	sub_401E1F
		lea	edx, [esp+14h]
		mov	ecx, edi
		push	edx
		call	sub_4017EE
		push	eax
		call	sub_401A7D
		add	esp, 8
		test	eax, eax
		jnz	short loc_41DB1C
		lea	ecx, [esi+7Ah]
		call	sub_40168B
		mov	cl, [esi+92h]
		push	eax
		mov	al, [esi+93h]
		push	offset dword_444FA4
		push	eax
		push	ecx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		mov	[esp+10h], esi
		lea	edx, [esp+10h]
		jmp	near ptr byte_41E014
; ---------------------------------------------------------------------------


loc_41DB1C:				; CODE XREF: ___:0041DAE7j
		mov	eax, [esp+14h]
		lea	ecx, [esi+50h]
		push	eax
		call	sub_4017EE
		push	eax
		lea	ecx, [esi+3Bh]
		call	sub_4017EE
		push	eax
		call	sub_402266
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41DB73
		lea	ecx, [esi+7Ah]
		call	sub_40168B
		mov	cl, [esi+93h]
		mov	dl, [esi+92h]
		push	eax
		push	offset dword_444F94
		push	ecx
		push	edx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	eax, [esp+10h]
		mov	[esp+10h], esi
		push	eax
		jmp	near ptr byte_41E015
; ---------------------------------------------------------------------------


loc_41DB73:				; CODE XREF: ___:0041DB3Dj
		lea	edi, [esi+7Ah]
		mov	ecx, edi
		call	sub_40168B
		mov	cl, [esi+93h]
		mov	dl, [esi+92h]
		push	eax
		push	offset dword_444F84
		push	ecx
		push	edx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		mov	eax, [esp+14h]
		lea	ecx, [esi+26h]
		push	eax
		push	49h
		call	sub_4017EE
		push	eax
		mov	ecx, ebx
		call	sub_4017EE
		push	eax
		call	sub_4016B3
		add	esp, 10h
		test	eax, eax
		jnz	short loc_41DBF2
		mov	ecx, edi
		call	sub_40168B
		mov	cl, [esi+93h]
		mov	dl, [esi+92h]
		push	eax
		push	offset dword_444F74
		push	ecx
		push	edx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	eax, [esp+10h]
		mov	[esp+10h], esi
		push	eax
		jmp	near ptr byte_41E015
; ---------------------------------------------------------------------------


loc_41DBF2:				; CODE XREF: ___:0041DBBDj
		mov	ecx, [esp+14h]
		push	ecx
		call	sub_401D66
		add	esp, 4
		jmp	loc_41DE7B
; ---------------------------------------------------------------------------


loc_41DC04:				; CODE XREF: ___:0041DAC5j
		lea	ecx, [esp+4Ch]
		call	sub_40142E
		lea	ecx, [esp+1Ch]
		mov	byte ptr [esp+1170h], 3
		call	sub_40142E
		push	ebp
		mov	ecx, edi
		mov	byte ptr [esp+1174h], 4
		call	sub_4017EE
		push	eax
		call	sub_401AA0
		mov	ebx, eax
		add	esp, 8
		cmp	ebx, 0FFFFFFFFh
		mov	[esp+14h], ebx
		jnz	short loc_41DC87
		lea	ecx, [esi+7Ah]
		call	sub_40168B
		mov	dl, [esi+93h]
		push	eax
		mov	al, [esi+92h]
		push	offset dword_444F60
		push	edx
		push	eax
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+10h]
		mov	[esp+10h], esi
		push	ecx
		mov	ecx, offset byte_4E8E9B
		call	sub_40120D
		push	ebx
		call	near ptr 71AB9639h
		nop
		jmp	loc_41DD45
; ---------------------------------------------------------------------------


loc_41DC87:				; CODE XREF: ___:0041DC40j
		push	ebp
		mov	ecx, edi
		call	sub_4017EE
		push	eax
		lea	ecx, [esi+26h]
		call	sub_4017EE
		push	eax
		lea	edx, [esp+58h]
		push	offset dword_444EFC
		push	edx
		call	sub_40102D
		add	esp, 14h
		lea	ecx, [esp+4Ch]
		push	0
		call	sub_4013E3
		push	eax
		lea	ecx, [esp+54h]
		call	sub_4017EE
		push	eax
		push	ebx
		nop
		call	near ptr 71AB428Ah
		lea	edi, [esi+7Ah]
		mov	ecx, edi
		call	sub_40168B
		mov	cl, [esi+92h]
		push	eax
		mov	al, [esi+93h]
		push	offset dword_444EEC
		push	eax
		push	ecx
		mov	ecx, offset byte_4D8075
		call	sub_401118
		push	offset dword_444EE8
		lea	ecx, [esi+65h]
		call	sub_4017EE
		push	eax
		nop
		call	near ptr 77C3F010h
		mov	ebx, eax
		add	esp, 8
		test	ebx, ebx
		jnz	short loc_41DD80
		mov	ecx, edi
		call	sub_40168B
		mov	dl, [esi+93h]
		push	eax
		mov	al, [esi+92h]
		push	offset dword_444ED8
		push	edx
		push	eax
		mov	ecx, offset byte_4D8075
		call	sub_401118
		lea	ecx, [esp+10h]
		mov	[esp+10h], esi
		push	ecx
		mov	ecx, offset byte_4E8E9B
		call	sub_40120D


loc_41DD45:				; CODE XREF: ___:0041DC82j
		lea	ecx, [esp+1Ch]
		mov	byte ptr [esp+1170h], 3
		call	sub_401226
		lea	ecx, [esp+4Ch]
		mov	byte ptr [esp+1170h], 2
		call	sub_401226
		lea	ecx, [esp+34h]
		mov	dword ptr [esp+1170h], 0FFFFFFFFh
		call	sub_401226
		jmp	near ptr dword_41E048
; ---------------------------------------------------------------------------


loc_41DD80:				; CODE XREF: ___:0041DD0Bj
					; ___:0041DDB4j ...
		mov	eax, [esp+14h]
		push	0
		lea	edx, [esp+16Ch]
		push	1000h
		push	edx
		push	eax
		call	near ptr 71AB615Ah
		nop
		mov	ebp, eax
		test	ebp, ebp
		jle	short loc_41DDF8
		cmp	ebp, 1000h
		jge	short loc_41DDB0
		mov	byte ptr [esp+ebp+168h], 0


loc_41DDB0:				; CODE XREF: ___:0041DDA6j
		xor	edi, edi
		test	ebp, ebp
		jle	short loc_41DD80


loc_41DDB6:				; CODE XREF: ___:0041DDD5j
		push	4
		lea	ecx, [esp+edi+16Ch]
		push	offset dword_444ED0
		push	ecx
		call	near ptr 77C47A50h
		nop
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41DDD9
		inc	edi
		cmp	edi, ebp
		jl	short loc_41DDB6
		jmp	short loc_41DD80
; ---------------------------------------------------------------------------


loc_41DDD9:				; CODE XREF: ___:0041DDD0j
		add	edi, 4
		cmp	edi, ebp
		jge	short loc_41DDF8


loc_41DDE0:				; CODE XREF: ___:0041DDF6j
		movsx	edx, byte ptr [esp+edi+168h]
		push	ebx
		push	edx
		nop
		call	near ptr 77C40E76h
		add	esp, 8
		inc	edi
		cmp	edi, ebp
		jl	short loc_41DDE0


loc_41DDF8:				; CODE XREF: ___:0041DD9Ej
					; ___:0041DDDEj ...
		mov	edi, [esp+14h]
		push	0
		lea	eax, [esp+16Ch]
		push	1000h
		push	eax
		push	edi
		nop
		call	near ptr 71AB615Ah
		mov	ebp, eax
		test	ebp, ebp
		jle	short loc_41DE48
		cmp	ebp, 1000h
		jge	short loc_41DE28
		mov	byte ptr [esp+ebp+168h], 0


loc_41DE28:				; CODE XREF: ___:0041DE1Ej
		xor	edi, edi
		test	ebp, ebp
		jle	short loc_41DDF8


loc_41DE2E:				; CODE XREF: ___:0041DE44j
		movsx	ecx, byte ptr [esp+edi+168h]
		push	ebx
		push	ecx
		nop
		call	near ptr 77C40E76h
		add	esp, 8
		inc	edi
		cmp	edi, ebp
		jl	short loc_41DE2E
		jmp	short loc_41DDF8
; ---------------------------------------------------------------------------


loc_41DE48:				; CODE XREF: ___:0041DE16j
		push	ebx
		nop
		call	near ptr 77C40AB1h
		add	esp, 4
		push	edi
		call	near ptr 71AB9639h
		nop
		lea	ecx, [esp+1Ch]
		mov	byte ptr [esp+1170h], 3
		call	sub_401226
		lea	ecx, [esp+4Ch]
		mov	byte ptr [esp+1170h], 2
		call	sub_401226


loc_41DE7B:				; CODE XREF: ___:0041DBFFj
		mov	al, [esi+90h]
		test	al, al
		jnz	loc_41DF17
		lea	ebp, [esi+65h]
		mov	ecx, ebp
		call	sub_4017EE
		lea	edi, [esi+7Ah]
		push	eax
		push	offset dword_444EBC
		mov	ecx, edi
		call	sub_40168B
		mov	dl, [esi+93h]
		push	eax
		mov	al, [esi+92h]
		push	edx
		push	eax
		push	offset byte_4D8075
		call	sub_401857
		mov	al, [esi+8Fh]
		add	esp, 18h
		test	al, al
		jz	near ptr dword_41E00C
		push	offset byte_448F30
		mov	ecx, ebp
		call	sub_4017EE
		push	eax
		call	sub_401299
		add	esp, 8
		mov	ecx, ebp
		call	sub_4017EE
		push	eax
		push	offset dword_444EB0
		mov	ecx, edi
		call	sub_40168B
		mov	cl, [esi+93h]
		mov	dl, [esi+92h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D8075
		call	sub_401857
		add	esp, 18h
		jmp	near ptr dword_41E00C
; ---------------------------------------------------------------------------


loc_41DF17:				; CODE XREF: ___:0041DE83j
		lea	ebx, [esi+65h]
		mov	ecx, ebx
		call	sub_4017EE
		lea	edi, [esi+7Ah]
		push	eax
		push	offset dword_444E9C
		mov	ecx, edi
		call	sub_40168B
		mov	cl, [esi+92h]
		push	eax
		mov	al, [esi+93h]
		push	eax
		push	ecx
		push	offset byte_4D8075
		call	sub_401857
		push	0
		push	5
		push	14h
		push	1
		push	4
		push	10h
		push	15h
		lea	edx, [esp+50h]
		push	51h
		push	edx
		call	sub_4019C4
		add	esp, 3Ch
		mov	ecx, eax
		mov	byte ptr [esp+1170h], 5
		call	sub_4014DD
		push	eax
		mov	ecx, ebx
		call	sub_4014DD
		push	eax
		call	sub_402167
		add	esp, 8
		lea	ecx, [esp+1Ch]
		mov	bl, al
		mov	byte ptr [esp+1170h], 2
		call	sub_401226
		test	bl, bl
		jz	short loc_41DFE7
		mov	al, byte_449896
		test	al, al
		jz	short loc_41DFB6
		push	offset dword_449834
		mov	ecx, offset dword_44AD70
		call	sub_401451


loc_41DFB6:				; CODE XREF: ___:0041DFA5j
		mov	al, byte_4498DF
		test	al, al
		jz	short loc_41DFCE
		push	offset byte_44990F
		mov	ecx, offset dword_44AD70
		call	sub_401951


loc_41DFCE:				; CODE XREF: ___:0041DFBDj
		mov	ecx, offset dword_44AD70
		call	sub_401E79
		push	1
		mov	byte_4E8E44, 0
		nop
		call	near ptr 77C39E7Eh


loc_41DFE7:				; CODE XREF: ___:0041DF9Cj
		mov	ecx, edi
		call	sub_4014DD
		mov	cl, [esi+92h]
		push	eax
		mov	al, [esi+93h]
		push	offset dword_4446FC
; ---------------------------------------------------------------------------
		dd 3 dup(0)
dword_41E00C	dd 2 dup(0)						; ___:0041DF12j
byte_41E014	db 0			; CODE XREF: ___:0041DB17j
byte_41E015	db 3 dup(0)		; CODE XREF: ___:0041DB6Ej
					; ___:0041DBEDj
		dd 7 dup(0)
		db 0
byte_41E035	db 3 dup(0)		; CODE XREF: ___:0041D966j
					; ___:0041D97Dj ...
		dd 0
		db 0
byte_41E03D	db 3 dup(0)		; CODE XREF: ___:0041D9CCj
		dd 2 dup(0)
dword_41E048	dd 7Eh dup(0)	dword_41E240	dd 60h dup(0)	dword_41E3C0	dd 50h dup(0)	dword_41E500	dd 98h dup(0)	dword_41E760	dd 1D4h	dup(0)	dword_41EEB0	dd 30h dup(0)	dword_41EF70	dd 30h dup(0)	dword_41F030	dd 24Ch	dup(0)	dword_41F960	dd 8Ch dup(0)	dword_41FB90	dd 28h dup(0)	dword_41FC30	dd 28h dup(0)	dword_41FCD0	dd 0Ch dup(0)	dword_41FD00	dd 20h dup(0)	dword_41FD80	dd 34h dup(0)	dword_41FE50	dd 10h dup(0)	dword_41FE90	dd 30h dup(0)	dword_41FF50	dd 28h dup(0)	dword_41FFF0	dd 14h dup(0)	dword_420040	dd 14h dup(0)	dword_420090	dd 58h dup(0)	dword_4201F0	dd 84h dup(0)	dword_420400	dd 34h dup(0)	dword_4204D0	dd 58h dup(0)	dword_420630	dd 9Ch dup(0)	dword_4208A0	dd 8 dup(0)	dword_4208C0	dd 8 dup(0)	dword_4208E0	dd 13Ch	dup(0)	dword_420DD0	dd 0Ch dup(0)	dword_420E00	dd 28h dup(0)	dword_420EA0	dd 8 dup(0)	dword_420EC0	dd 14h dup(0)	dword_420F10	dd 1F0h	dup(0)	dword_4216D0	dd 14h dup(0)	dword_421720	dd 8Ch dup(0)	dword_421950	dd 8 dup(0)	dword_421970	dd 10h dup(0)	dword_4219B0	dd 10h dup(0)	dword_4219F0	dd 1Ch dup(0)	dword_421A60	dd 10h dup(0)	dword_421AA0	dd 0Ch dup(0)	dword_421AD0	dd 10h dup(0)	dword_421B10	dd 8 dup(0)	dword_421B30	dd 8 dup(0)	dword_421B50	dd 0Ch dup(0)	dword_421B80	dd 0Ch dup(0)	dword_421BB0	dd 10h dup(0)	dword_421BF0	dd 1Ch dup(0)	dword_421C60	dd 10h dup(0)	dword_421CA0	dd 0Ch dup(0)	dword_421CD0	dd 10h dup(0)	dword_421D10	dd 8 dup(0)	dword_421D30	dd 8 dup(0)	dword_421D50	dd 0Ch dup(0)	dword_421D80	dd 0Ch dup(0)	dword_421DB0	dd 28h dup(0)	dword_421E50	dd 28h dup(0)	dword_421EF0	dd 24h dup(0)	dword_421F80	dd 14h dup(0)	dword_421FD0	dd 8 dup(0)	dword_421FF0	dd 8 dup(0)	dword_422010	dd 8 dup(0)	dword_422030	dd 8 dup(0)	dword_422050	dd 0Ch dup(0)	dword_422080	dd 0Ch dup(0)	dword_4220B0	dd 28h dup(0)	dword_422150	dd 24h dup(0)	dword_4221E0	dd 14h dup(0)	dword_422230	dd 8 dup(0)	dword_422250	dd 8 dup(0)	dword_422270	dd 8 dup(0)	dword_422290	dd 8 dup(0)	dword_4222B0	dd 0Ch dup(0)	dword_4222E0	dd 0Ch dup(0)	dword_422310	dd 0Ch dup(0)	dword_422340	dd 30h dup(0)	dword_422400	dd 8 dup(0)	dword_422420	dd 0Ch dup(0)	dword_422450	dd 8 dup(0)	dword_422470	dd 0Ch dup(0)	dword_4224A0	dd 8 dup(0)	dword_4224C0	dd 8 dup(0)	dword_4224E0	dd 0Ch dup(0)	dword_422510	dd 30h dup(0)	dword_4225D0	dd 8 dup(0)	dword_4225F0	dd 0Ch dup(0)	dword_422620	dd 8 dup(0)	dword_422640	dd 0Ch dup(0)	dword_422670	dd 8 dup(0)	dword_422690	dd 8 dup(0)	dword_4226B0	dd 0Ch dup(0)	dword_4226E0	dd 8 dup(0)	dword_422700	dd 8 dup(0)	dword_422720	dd 0Ch dup(0)	dword_422750	dd 1Ch dup(0)	dword_4227C0	dd 8 dup(0)	dword_4227E0	dd 1Ch dup(0)	dword_422850	dd 8 dup(0)	dword_422870	dd 8 dup(0)	dword_422890	dd 0Ch dup(0)	dword_4228C0	dd 0Ch dup(0)	dword_4228F0	dd 94h dup(0)	dword_422B40	dd 2ECh	dup(0)	dword_4236F0	dd 1Ch dup(0)	dword_423760	dd 28h dup(0)	dword_423800	dd 8 dup(0)	dword_423820	dd 10h dup(0)	dword_423860	dd 3Ch dup(0)	dword_423950	dd 3Ch dup(0)	dword_423A40	dd 0B4h	dup(0)	dword_423D10	dd 0DCh	dup(0)	dword_424080	dd 0E4h	dup(0)	dword_424410	dd 8 dup(0)	dword_424430	dd 14h dup(0)	dword_424480	dd 20h dup(0)	dword_424500	dd 28h dup(0)	dword_4245A0	dd 10h dup(0)	dword_4245E0	dd 3Ch dup(0)	dword_4246D0	dd 38h dup(0)	dword_4247B0	dd 14h dup(0)	dword_424800	dd 10h dup(0)	dword_424840	dd 0Ch dup(0)	dword_424870	dd 1Ch dup(0)	dword_4248E0	dd 10h dup(0)	dword_424920	dd 140h	dup(0)	dword_424E20	dd 38h dup(0)	dword_424F00	dd 1Ch dup(0)	dword_424F70	dd 64h dup(0)	dword_425100	dd 9Ch dup(0)	dword_425370	dd 14h dup(0)	dword_4253C0	dd 10Ch	dup(0)	dword_4257F0	dd 174h	dup(0)	dword_425DC0	dd 98h dup(0)	dword_426020	dd 14h dup(0)	dword_426070	dd 84h dup(0)	dword_426280	dd 0A8h	dup(0)	dword_426520	dd 10h dup(0)	dword_426560	dd 5Ch dup(0)	dword_4266D0	dd 0Ch dup(0)	dword_426700	dd 28h dup(0)	dword_4267A0	dd 0Ch dup(0)	dword_4267D0	dd 58h dup(0)	dword_426930	dd 1Ch dup(0)	dword_4269A0	dd 3Ch dup(0)	dword_426A90	dd 20h dup(0)	dword_426B10	dd 14h dup(0)	dword_426B60	dd 0Ch dup(0)	dword_426B90	dd 10h dup(0)	dword_426BD0	dd 28h dup(0)	dword_426C70	dd 94h dup(0)	dword_426EC0	dd 200h	dup(0)	dword_4276C0	dd 20h dup(0)	dword_427740	dd 1Ch dup(0)	dword_4277B0	dd 28h dup(0)	dword_427850	dd 30h dup(0)	dword_427910	dd 0Ch dup(0)						; ___:0040219Ej
dword_427940	dd 0Ch dup(0)						; ___:0040209Fj
dword_427970	dd 8 dup(0)	dword_427990	dd 60h dup(0)	dword_427B10	dd 50h dup(0)	dword_427C50	dd 10h dup(0)	dword_427C90	dd 1Ch dup(0)	dword_427D00	dd 0Ch dup(0)						; ___:00401AC3j
dword_427D30	dd 8 dup(0)	dword_427D50	dd 0A0h	dup(0)	dword_427FD0	dd 74h dup(0)	dword_4281A0	dd 1Ch dup(0)	dword_428210	dd 0Ch dup(0)						; ___:0040182Aj
dword_428240	dd 8 dup(0)	dword_428260	dd 5Ch dup(0)	dword_4283D0	dd 110h	dup(0)	dword_428810	dd 1Ch dup(0)	dword_428880	dd 1Ch dup(0)	dword_4288F0	dd 0Ch dup(0)						; ___:0040224Dj
dword_428920	dd 8 dup(0)	dword_428940	dd 5Ch dup(0)	dword_428AB0	dd 8Ch dup(0)	dword_428CE0	dd 38h dup(0)	dword_428DC0	dd 0BCh	dup(0)	dword_4290B0	dd 1Ch dup(0)	dword_429120	dd 30h dup(0)	dword_4291E0	dd 34h dup(0)	dword_4292B0	dd 0Ch dup(0)						; ___:00402086j
dword_4292E0	dd 0Ch dup(0)						; ___:00401C3Fj
dword_429310	dd 8 dup(0)	dword_429330	dd 48h dup(0)	dword_429450	dd 30h dup(0)	dword_429510	dd 0Ch dup(0)						; ___:004021D5j
dword_429540	dd 1Ch dup(0)	dword_4295B0	dd 5C0h	dup(0)	dword_42ACB0	dd 1Ch dup(0)	dword_42AD20	dd 0Ch dup(0)						; ___:0040128Fj
dword_42AD50	dd 10h dup(0)	dword_42AD90	dd 64h dup(0)	dword_42AF20	dd 34h dup(0)	dword_42AFF0	dd 1Ch dup(0)	dword_42B060	dd 0Ch dup(0)						; ___:00401B18j
dword_42B090	dd 8 dup(0)	dword_42B0B0	dd 0B4h	dup(0)	dword_42B380	dd 1Ch dup(0)	dword_42B3F0	dd 0Ch dup(0)						; ___:004017B2j
dword_42B420	dd 8 dup(0)	dword_42B440	dd 0ACh	dup(0)	dword_42B6F0	dd 10h dup(0)	dword_42B730	dd 6Ch dup(0)	dword_42B8E0	dd 88h dup(0)	dword_42BB00	dd 168h	dup(0)	dword_42C0A0	dd 44h dup(0)	dword_42C1B0	dd 44h dup(0)	dword_42C2C0	dd 24h dup(0)	dword_42C350	dd 5Ch dup(0)	dword_42C4C0	dd 1Ch dup(0)	dword_42C530	dd 24h dup(0)	dword_42C5C0	dd 4 dup(0)	dword_42C5D0	dd 1Ch dup(0)	dword_42C640	dd 0Ch dup(0)						; ___:00401F5Fj
dword_42C670	dd 8 dup(0)	dword_42C690	dd 38h dup(0)	dword_42C770	dd 1Ch dup(0)	dword_42C7E0	dd 0Ch dup(0)						; ___:00401B36j
dword_42C810	dd 8 dup(0)	dword_42C830	dd 0A0h	dup(0)	dword_42CAB0	dd 1Ch dup(0)	dword_42CB20	dd 0Ch dup(0)						; ___:00401FC8j
dword_42CB50	dd 8 dup(0)	dword_42CB70	dd 0BCh	dup(0)	dword_42CE60	dd 0BCh	dup(0)	dword_42D150	dd 22Ch	dup(0)	dword_42DA00	dd 20h dup(0)	dword_42DA80	dd 14h dup(0)	dword_42DAD0	dd 0Ch dup(0)	dword_42DB00	dd 1ECh	dup(0)	dword_42E2B0	dd 44h dup(0)	dword_42E3C0	dd 7Ch dup(0)	dword_42E5B0	dd 26Ch	dup(0)	dword_42EF60	dd 38h dup(0)	dword_42F040	dd 0A0h	dup(0)	dword_42F2C0	dd 38h dup(0)	dword_42F3A0	dd 20h dup(0)	dword_42F420	dd 1Ch dup(0)	dword_42F490	dd 20h dup(0)	dword_42F510	dd 20h dup(0)	dword_42F590	dd 0Ch dup(0)	dword_42F5C0	dd 20h dup(0)	dword_42F640	dd 20h dup(0)	dword_42F6C0	dd 0A0h	dup(0)	dword_42F940	dd 0Ch dup(0)	dword_42F970	dd 4Ch dup(0)	dword_42FAA0	dd 34h dup(0)	dword_42FB70	dd 0Ch dup(0)	dword_42FBA0	dd 0Ch dup(0)	dword_42FBD0	dd 38h dup(0)	dword_42FCB0	dd 20h dup(0)	dword_42FD30	dd 14h dup(0)	dword_42FD80	dd 20h dup(0)	dword_42FE00	dd 14h dup(0)	dword_42FE50	dd 14h dup(0)	dword_42FEA0	dd 14h dup(0)	dword_42FEF0	dd 8 dup(0)	dword_42FF10	dd 8 dup(0)	dword_42FF30	dd 10h dup(0)	dword_42FF70	dd 10h dup(0)	dword_42FFB0	dd 0Ch dup(0)	dword_42FFE0	dd 10h dup(0)	dword_430020	dd 38h dup(0)	dword_430100	dd 28h dup(0)	dword_4301A0	dd 3Ch dup(0)	dword_430290	dd 14h dup(0)	dword_4302E0	dd 10h dup(0)	dword_430320	dd 10h dup(0)	dword_430360	dd 10h dup(0)	dword_4303A0	dd 30h dup(0)	dword_430460	dd 30h dup(0)	dword_430520	dd 20h dup(0)	dword_4305A0	dd 74h dup(0)	dword_430770	dd 1Ch dup(0)	dword_4307E0	dd 14h dup(0)	dword_430830	dd 1Ch dup(0)	dword_4308A0	dd 10h dup(0)	dword_4308E0	dd 10h dup(0)	dword_430920	dd 10h dup(0)	dword_430960	dd 10h dup(0)	dword_4309A0	dd 64h dup(0)	dword_430B30	dd 8Ch dup(0)	dword_430D60	dd 0C0h	dup(0)	dword_431060	dd 10h dup(0)	dword_4310A0	dd 60h dup(0)	dword_431220	dd 8 dup(0)	dword_431240	dd 5Ch dup(0)	dword_4313B0	dd 1Ch dup(0)	dword_431420	dd 14h dup(0)	dword_431470	dd 1Ch dup(0)	dword_4314E0	dd 20h dup(0)	dword_431560	dd 34h dup(0)	dword_431630	dd 10h dup(0)	dword_431670	dd 0Ch dup(0)	dword_4316A0	dd 8 dup(0)	dword_4316C0	dd 24h dup(0)	dword_431750	dd 1Ch dup(0)	dword_4317C0	dd 14h dup(0)	dword_431810	dd 50h dup(0)	dword_431950	dd 0Ch dup(0)	dword_431980	dd 1Ch dup(0)	dword_4319F0	dd 44h dup(0)	dword_431B00	dd 4Ch dup(0)	dword_431C30	dd 14h dup(0)	dword_431C80	dd 10h dup(0)	dword_431CC0	dd 10h dup(0)	dword_431D00	dd 10h dup(0)	dword_431D40	dd 10h dup(0)	dword_431D80	dd 10h dup(0)	dword_431DC0	dd 4Ch dup(0)	dword_431EF0	dd 0C0h	dup(0)	dword_4321F0	dd 38h dup(0)	dword_4322D0	dd 30h dup(0)	dword_432390	dd 0Ch dup(0)	dword_4323C0	dd 0Ch dup(0)	dword_4323F0	dd 8 dup(0)	dword_432410	dd 4Ch dup(0)	dword_432540	dd 0Ch dup(0)	dword_432570	dd 20h dup(0)	dword_4325F0	dd 20h dup(0)	dword_432670	dd 8 dup(0)	dword_432690	dd 1Ch dup(0)	dword_432700	dd 20h dup(0)	dword_432780	dd 0Ch dup(0)	dword_4327B0	dd 28h dup(0)	dword_432850	dd 3Ch dup(0)	dword_432940	dd 38h dup(0)	dword_432A20	dd 30h dup(0)	dword_432AE0	dd 34h dup(0)	dword_432BB0	dd 10h dup(0)	dword_432BF0	dd 24h dup(0)	dword_432C80	dd 24h dup(0)	dword_432D10	dd 10h dup(0)	dword_432D50	dd 8 dup(0)	dword_432D70	dd 10h dup(0)	dword_432DB0	dd 1Ch dup(0)	dword_432E20	dd 1Ch dup(0)	dword_432E90	dd 10h dup(0)	dword_432ED0	dd 4Ch dup(0)	dword_433000	dd 6Ch dup(0)	dword_4331B0	dd 14h dup(0)	dword_433200	dd 10h dup(0)	dword_433240	dd 10h dup(0)	dword_433280	dd 10h dup(0)	dword_4332C0	dd 44h dup(0)	dword_4333D0	dd 48h dup(0)	dword_4334F0	dd 58h dup(0)	dword_433650	dd 58h dup(0)	dword_4337B0	dd 30h dup(0)	dword_433870	dd 44h dup(0)	dword_433980	dd 4Ch dup(0)	dword_433AB0	dd 10h dup(0)	dword_433AF0	dd 10h dup(0)	dword_433B30	dd 1Ch dup(0)	dword_433BA0	dd 10h dup(0)	dword_433BE0	dd 14h dup(0)	dword_433C30	dd 10h dup(0)	dword_433C70	dd 1Ch dup(0)	dword_433CE0	dd 38h dup(0)	dword_433DC0	dd 14h dup(0)	dword_433E10	dd 10h dup(0)	dword_433E50	dd 10h dup(0)	dword_433E90	dd 24h dup(0)	dword_433F20	dd 1Ch dup(0)	dword_433F90	dd 8 dup(0)	dword_433FB0	dd 30h dup(0)	dword_434070	dd 1Ch dup(0)	dword_4340E0	dd 1Ch dup(0)	dword_434150	dd 1Ch dup(0)	dword_4341C0	dd 44h dup(0)	dword_4342D0	dd 14h dup(0)	dword_434320	dd 14h dup(0)	dword_434370	dd 20h dup(0)	dword_4343F0	dd 8 dup(0)	dword_434410	dd 8 dup(0)	dword_434430	dd 8 dup(0)	dword_434450	dd 1Ch dup(0)	dword_4344C0	dd 50h dup(0)	dword_434600	dd 38h dup(0)	dword_4346E0	dd 24h dup(0)	dword_434770	dd 1Ch dup(0)	dword_4347E0	dd 20h dup(0)	dword_434860	dd 10h dup(0)	dword_4348A0	dd 30h dup(0)	dword_434960	dd 28h dup(0)	dword_434A00	dd 34h dup(0)	dword_434AD0	dd 34h dup(0)	dword_434BA0	dd 14h dup(0)	dword_434BF0	dd 10h dup(0)	dword_434C30	dd 38h dup(0)	dword_434D10	dd 364h	dup(0)	dword_435AA0	dd 3Ch dup(0)	dword_435B90	dd 250h	dup(0)	dword_4364D0	dd 28h dup(0)	dword_436570	dd 0D8h	dup(0)	dword_4368D0	dd 44h dup(0)	dword_4369E0	dd 1C4h	dup(0)	dword_4370F0	dd 10h dup(0)	dword_437130	dd 98h dup(0)	dword_437390	dd 98h dup(0)	dword_4375F0	dd 0B0h	dup(0)	dword_4378B0	dd 88h dup(0)			db 2 dup(0)
word_437AD2	dw 0			; CODE XREF: ___:00406C30p
					; sub_406C50+11p ...
		dd 5 dup(0)
		db 2 dup(0)
word_437AEA	dw 0			; CODE XREF: sub_406C80+47p
					; sub_406C80+9Ap ...
		dd 0Dh dup(0)
		db 2 dup(0)
word_437B22	dw 0			; CODE XREF: ___:004096ADp
					; ___:0040AA7Dp
		align 10h
dword_437B30	dd 2Ah dup(0)						; ___:0041004Ap ...
		db 2 dup(0)
word_437BDA	dw 0			; CODE XREF: sub_4199C0+28p
		align 10h
dword_437BE0	dd 20h dup(0)	dword_437C60	dd 0BCh	dup(0)						; sub_41B920+3Ap
dword_437F50	dd 0C1h	dup(0)			db 2 dup(0)
word_438256	dw 0			; CODE XREF: sub_41A7D0+92p
					; sub_41A9C0+CAp ...
		dd 11h dup(0)
		db 2 dup(0)
word_43829E	dw 0			; CODE XREF: ___:0041C2B7p
					; ___:0041C2CCp
		dd 0
dword_4382A4	dd 7 dup(0)						; ___:0041C42Fp
		db 2 dup(0)
word_4382C2	dw 0			; CODE XREF: ___:0041B2B4p
		dd 2DCh	dup(0)
		db 2 dup(0)
SEH_403530	dw 0			; DATA XREF: sub_403530+2o
		dd 0DEh	dup(0)
SEH_403720	dd 3Ah dup(0)		; DATA XREF: sub_403720+2o
SEH_403C50	dd 0Ah dup(0)		; DATA XREF: sub_403C50+2o
		db 3 dup(0)
SEH_403CE0	db 0			; DATA XREF: sub_403CE0+2o
		dd 0Bh dup(0)
		db 3 dup(0)
SEH_403D60	db 0			; DATA XREF: sub_403D60+2o
		dd 9 dup(0)
SEH_403DE0	dd 1Ch dup(0)		; DATA XREF: sub_403DE0+2o
		db 0
SEH_403E50	db 3 dup(0)		; DATA XREF: sub_403E50+2o
		dd 1Fh dup(0)
		db 0
SEH_403F30	db 3 dup(0)		; DATA XREF: sub_403F30+2o
		dd 2Bh dup(0)
SEH_404010	dd 24h dup(0)		; DATA XREF: sub_404010+2o
		db 3 dup(0)
SEH_404690	db 0			; DATA XREF: sub_404690+2o
		dd 8Fh dup(0)
		db 3 dup(0)
byte_43978B	db 0			; DATA XREF: ___:00404CC8o
		dd 2Ch dup(0)
		db 3 dup(0)
SEH_406730	db 0			; DATA XREF: sub_406730+2o
		dd 11h dup(0)
		db 0
SEH_4068E0	db 3 dup(0)		; DATA XREF: sub_4068E0+2o
		dd 0Eh dup(0)
		db 0
SEH_406C80	db 3 dup(0)		; DATA XREF: sub_406C80+8o
		dd 9 dup(0)
		db 3 dup(0)
SEH_407080	db 0			; DATA XREF: sub_407080+2o
		dd 7 dup(0)
SEH_4076B0	dd 0Ah dup(0)		; DATA XREF: sub_4076B0+8o
SEH_407740	dd 0C9h	dup(0)		; DATA XREF: sub_407740+8o
		db 3 dup(0)
SEH_4077E0	db 0			; DATA XREF: sub_4077E0+2o
		dd 38h dup(0)
		db 0
byte_439D39	db 3 dup(0)		; DATA XREF: ___:00409662o
		dd 7 dup(0)
SEH_40A370	dd 0Fh dup(0)		; DATA XREF: sub_40A370+2o
		db 3 dup(0)
SEH_40A510	db 0			; DATA XREF: sub_40A510+2o
		dd 8 dup(0)
		db 0
byte_439DB9	db 3 dup(0)		; DATA XREF: ___:0040AA32o
		dd 5 dup(0)
SEH_40AEF0	dd 4 dup(0)		; DATA XREF: sub_40AEF0+5o
dword_439DE0	dd 0Fh dup(0)			db 3 dup(0)
SEH_40B190	db 0			; DATA XREF: sub_40B190+2o
		dd 13h dup(0)
		db 3 dup(0)
SEH_40B250	db 0			; DATA XREF: sub_40B250+2o
		dd 0Eh dup(0)
SEH_40B2F0	dd 0Ch dup(0)		; DATA XREF: sub_40B2F0+2o
SEH_40B510	dd 8 dup(0)		; DATA XREF: sub_40B510+2o
dword_439EF8	dd 0Eh dup(0)	dword_439F30	dd 0Ah dup(0)	SEH_40C440	dd 11h dup(0)		; DATA XREF: sub_40C440+2o
dword_439F9C	dd 0Bh dup(0)	SEH_40CBF0	dd 13h dup(0)		; DATA XREF: sub_40CBF0+2o
		db 3 dup(0)
byte_43A017	db 0			; DATA XREF: ___:0040CC98o
		dd 0Fh dup(0)
		db 2 dup(0)
SEH_40CF40	dw 0			; DATA XREF: sub_40CF40+2o
		dd 0Bh dup(0)
		db 2 dup(0)
word_43A086	dw 0			; DATA XREF: ___:0040CFC2o
		dd 0Eh dup(0)
SEH_40D210	dd 1Eh dup(0)		; DATA XREF: sub_40D210+2o
SEH_40D660	dd 2Dh dup(0)		; DATA XREF: sub_40D660+2o
		db 3 dup(0)
SEH_40DC20	db 0			; DATA XREF: sub_40DC20+2o
		dd 18h dup(0)
SEH_40E2F0	dd 14h dup(0)		; DATA XREF: sub_40E2F0+2o
SEH_40E870	dd 0Eh dup(0)		; DATA XREF: sub_40E870+2o
SEH_40ED00	dd 8 dup(0)		; DATA XREF: sub_40ED00+2o
SEH_40EE40	dd 14h dup(0)		; DATA XREF: sub_40EE40+2o
dword_43A348	dd 69h dup(0)			db 0
SEH_40F6D0	db 3 dup(0)		; DATA XREF: sub_40F6D0+2o
		dd 53h dup(0)
		db 3 dup(0)
SEH_40FE70	db 0			; DATA XREF: sub_40FE70+2o
		dd 0A4h	dup(0)
		db 3 dup(0)
byte_43A8D3	db 0			; DATA XREF: ___:00410038o
		dd 29h dup(0)
SEH_411930	dd 8 dup(0)		; DATA XREF: sub_411930+2o
SEH_4119E0	dd 15h dup(0)		; DATA XREF: sub_4119E0+2o
		db 3 dup(0)
SEH_411A60	db 0			; DATA XREF: sub_411A60+2o
		dd 17h dup(0)
		db 3 dup(0)
SEH_411B20	db 0			; DATA XREF: sub_411B20+2o
		dd 1Ch dup(0)
SEH_411C10	dd 26h dup(0)		; DATA XREF: sub_411C10+8o
		db 0
byte_43AB59	db 3 dup(0)		; DATA XREF: ___:004120B8o
		dd 14h dup(0)
		db 3 dup(0)
SEH_412780	db 0			; DATA XREF: sub_412780+2o
		dd 0Ch dup(0)
SEH_412A40	dd 6 dup(0)		; DATA XREF: sub_412A40+8o
SEH_412CE0	dd 15h dup(0)		; DATA XREF: sub_412CE0+2o
		db 2 dup(0)
word_43AC4E	dw 0			; DATA XREF: ___:00412D88o
		dd 13h dup(0)
SEH_4131F0	dd 14h dup(0)		; DATA XREF: sub_4131F0+2o
SEH_4132F0	dd 0Dh dup(0)		; DATA XREF: sub_4132F0+2o
SEH_4133B0	dd 6 dup(0)		; DATA XREF: sub_4133B0+2o
SEH_4134A0	dd 8 dup(0)		; DATA XREF: sub_4134A0+2o
SEH_4135E0	dd 0Ah dup(0)		; DATA XREF: sub_4135E0+2o
SEH_413740	dd 0Bh dup(0)		; DATA XREF: sub_413740+2o
		db 2 dup(0)
SEH_4138B0	dw 0			; DATA XREF: sub_4138B0+2o
		dd 0Eh dup(0)
SEH_413A80	dd 8 dup(0)		; DATA XREF: sub_413A80+2o
dword_43AE08	dd 0Eh dup(0)			db 3 dup(0)
SEH_413C40	db 0			; DATA XREF: sub_413C40+2o
		dd 13h dup(0)
		db 3 dup(0)
SEH_413E70	db 0			; DATA XREF: sub_413E70+2o
		dd 0Fh dup(0)
		db 0
SEH_414160	db 3 dup(0)		; DATA XREF: sub_414160+2o
		dd 0Fh dup(0)
dword_43AF10	dd 12h dup(0)			db 3 dup(0)
SEH_414300	db 0			; DATA XREF: sub_414300+2o
		dd 13h dup(0)
		db 0
SEH_414430	db 3 dup(0)		; DATA XREF: sub_414430+2o
		dd 0Bh dup(0)
dword_43AFD8	dd 8 dup(0)	SEH_4145A0	dd 0Ah dup(0)		; DATA XREF: sub_4145A0+2o
dword_43B020	dd 8 dup(0)	SEH_4148A0	dd 0Ch dup(0)		; DATA XREF: sub_4148A0+2o
		db 0
SEH_414AA0	db 3 dup(0)		; DATA XREF: sub_414AA0+2o
		dd 9 dup(0)
dword_43B098	dd 8 dup(0)	dword_43B0B8	dd 10h dup(0)			db 0
SEH_414D70	db 3 dup(0)		; DATA XREF: sub_414D70+2o
		dd 13h dup(0)
dword_43B148	dd 66h dup(0)			db 0
byte_43B2E1	db 3 dup(0)		; DATA XREF: ___:00416A92o
		dd 77h dup(0)
		db 0
byte_43B4C1	db 3 dup(0)		; DATA XREF: ___:00416E32o
		dd 1Dh dup(0)
		db 3 dup(0)
SEH_4170B0	db 0			; DATA XREF: sub_4170B0+2o
		dd 0D9h	dup(0)
SEH_417120	dd 43h dup(0)		; DATA XREF: sub_417120+2o
SEH_417640	dd 1Bh dup(0)		; DATA XREF: sub_417640+2o
		db 3 dup(0)
SEH_4176E0	db 0			; DATA XREF: sub_4176E0+2o
		dd 17h dup(0)
SEH_4177B0	dd 19h dup(0)		; DATA XREF: sub_4177B0+2o
		db 0
SEH_417870	db 3 dup(0)		; DATA XREF: sub_417870+2o
		dd 17h dup(0)
		db 0
SEH_417930	db 3 dup(0)		; DATA XREF: sub_417930+2o
		dd 0Ah dup(0)
		db 3 dup(0)
SEH_4179F0	db 0			; DATA XREF: sub_4179F0+2o
		dd 7 dup(0)
		db 3 dup(0)
SEH_417A60	db 0			; DATA XREF: sub_417A60+2o
		dd 7 dup(0)
		db 3 dup(0)
SEH_417AD0	db 0			; DATA XREF: sub_417AD0+2o
		dd 0Ah dup(0)
		db 2 dup(0)
SEH_417B60	dw 0			; DATA XREF: sub_417B60+2o
		dd 11h dup(0)
		db 3 dup(0)
SEH_417C20	db 0			; DATA XREF: sub_417C20+2o
		dd 13h dup(0)
SEH_417CC0	dd 1Bh dup(0)		; DATA XREF: sub_417CC0+2o
		db 3 dup(0)
SEH_417D60	db 0			; DATA XREF: sub_417D60+2o
		dd 17h dup(0)
SEH_417E30	dd 19h dup(0)		; DATA XREF: sub_417E30+2o
		db 0
SEH_417F50	db 3 dup(0)		; DATA XREF: sub_417F50+2o
		dd 17h dup(0)
		db 0
SEH_418010	db 3 dup(0)		; DATA XREF: sub_418010+2o
		dd 0Ah dup(0)
		db 3 dup(0)
SEH_4180D0	db 0			; DATA XREF: sub_4180D0+2o
		dd 7 dup(0)
		db 3 dup(0)
SEH_418180	db 0			; DATA XREF: sub_418180+2o
		dd 7 dup(0)
		db 3 dup(0)
SEH_418200	db 0			; DATA XREF: sub_418200+2o
		dd 0Ah dup(0)
		db 2 dup(0)
SEH_4182B0	dw 0			; DATA XREF: sub_4182B0+2o
		dd 11h dup(0)
		db 3 dup(0)
SEH_418390	db 0			; DATA XREF: sub_418390+2o
		dd 0Ah dup(0)
		db 3 dup(0)
SEH_418590	db 0			; DATA XREF: sub_418590+8o
		dd 0Ah dup(0)
		db 2 dup(0)
SEH_4191B0	dw 0			; DATA XREF: sub_4191B0+2o
		dd 8 dup(0)
		db 3 dup(0)
SEH_419270	db 0			; DATA XREF: sub_419270+2o
		dd 7 dup(0)
SEH_419320	dd 0Bh dup(0)		; DATA XREF: sub_419320+2o
		db 2 dup(0)
word_43BFA6	dw 0			; DATA XREF: ___:004193C2o
		dd 8 dup(0)
		db 3 dup(0)
byte_43BFCB	db 0			; DATA XREF: ___:0041A288o
		dd 0Eh dup(0)
		db 3 dup(0)
byte_43C007	db 0			; DATA XREF: ___:0041B1F2o
		dd 8 dup(0)
SEH_41B500	dd 11h dup(0)		; DATA XREF: sub_41B500+2o
		db 3 dup(0)
SEH_41BA50	db 0			; DATA XREF: sub_41BA50+2o
		dd 14h dup(0)
SEH_41C490	dd 53h dup(0)		; DATA XREF: sub_41C490+2o
		db 0
byte_43C20D	db 3 dup(0)		; DATA XREF: ___:0041C712o
		dd 22h dup(0)
		db 0
SEH_41D640	db 3 dup(0)		; DATA XREF: sub_41D640+2o
		dd 0Fh dup(0)
		db 0
SEH_41D6D0	db 3 dup(0)		; DATA XREF: sub_41D6D0+2o
		dd 14h dup(0)
		db 3 dup(0)
SEH_41D770	db 0			; DATA XREF: sub_41D770+2o
		dd 17h dup(0)
		db 3 dup(0)
SEH_41D860	db 0			; DATA XREF: sub_41D860+2o
		dd 18h dup(0)
		db 2 dup(0)
word_43C3F2	dw 0			; DATA XREF: ___:0041D938o
		dd 0B03h dup(0)
dword_43F000	dd 0		dword_43F004	dd 0		dword_43F008	dd 0		dword_43F00C	dd 0		dword_43F010	dd 0							; sub_409C20+Bo ...
dword_43F014	dd 3 dup(0)						; sub_40AEF0+1Co
dword_43F020	dd 0							; sub_40B250+1Eo
flt_43F024	dd 0.0			; DATA XREF: ___:0040B8A6r
dword_43F028	dd 3 dup(0)						; sub_40FE70+1Do
dword_43F034	dd 0							; sub_40FE70+23o
dword_43F038	dd 3 dup(0)						; sub_4119E0+1Do
dword_43F044	dd 3 dup(0)						; sub_4132F0+1Fo
dword_43F050	dd 3 dup(0)						; sub_417EF0+8o
dword_43F05C	dd 3 dup(0)						; sub_417F20+8o
dword_43F068	dd 3 dup(0)	dword_43F074	dd 0							; sub_4191B0+36o
dword_43F078	dd 0		dword_43F07C	dd 0		dword_43F080	dd 0		dword_43F084	dd 0		dword_43F088	dd 0		dword_43F08C	dd 0		dword_43F090	dd 0		dword_43F094	dd 0		dword_43F098	dd 0		dword_43F09C	dd 0		dword_43F0A0	dd 0		dword_43F0A4	dd 0		dword_43F0A8	dd 0		dword_43F0AC	dd 0		dbl_43F0B0	dq 0.0			; DATA XREF: sub_4199C0+22r
		dd 0
dword_43F0BC	dd 0							; sub_41A210+6o
dword_43F0C0	dd 0		dword_43F0C4	dd 3 dup(0)						; ___:0041B58Do
dword_43F0D0	dd 3EEh	dup(0)						; sub_41D860+1Do
dword_440088	dd 1126h dup(0)						; ___:0040AA77o
dword_444520	dd 33h dup(0)	dword_4445EC	dd 0							; ___:loc_41090Eo ...
dword_4445F0	dd 0							; ___:0040552Fo ...
dword_4445F4	dd 3 dup(0)						; ___:004054EBo ...
dword_444600	dd 0							; sub_404690+1EDo ...
dword_444604	dd 0							; ___:loc_410A19o ...
dword_444608	dd 9 dup(0)	dword_44462C	dd 8 dup(0)	dword_44464C	dd 7 dup(0)	dword_444668	dd 7 dup(0)	dword_444684	dd 2 dup(0)						; ___:00405D18o ...
dword_44468C	dd 7 dup(0)	dword_4446A8	dd 0		dword_4446AC	dd 4 dup(0)	dword_4446BC	dd 6 dup(0)	dword_4446D4	dd 3 dup(0)	dword_4446E0	dd 5 dup(0)	dword_4446F4	dd 2 dup(0)						; sub_41C130+Eo
dword_4446FC	dd 4 dup(0)						; ___:0040566Bo ...
dword_44470C	dd 5 dup(0)	dword_444720	dd 1Eh dup(0)	dword_444798	dd 3 dup(0)	dword_4447A4	dd 0		dword_4447A8	dd 2 dup(0)	dword_4447B0	dd 0		dword_4447B4	dd 2 dup(0)	dword_4447BC	dd 0		dword_4447C0	dd 0		dword_4447C4	dd 0		dword_4447C8	dd 0		dword_4447CC	dd 2 dup(0)						; sub_406C80+205o
dword_4447D4	dd 3 dup(0)						; sub_40ED00+88o
dword_4447E0	dd 3 dup(0)	dword_4447EC	dd 2 dup(0)	dword_4447F4	dd 0							; sub_4077E0+FC2o ...
dword_4447F8	dd 0							; ___:0041B2DAo ...
dword_4447FC	dd 7 dup(0)	dword_444818	dd 2 dup(0)	dword_444820	dd 4 dup(0)	dword_444830	dd 0		dword_444834	dd 0		dword_444838	dd 5 dup(0)	dword_44484C	dd 4 dup(0)	dword_44485C	dd 2 dup(0)	dword_444864	dd 2 dup(0)	dword_44486C	dd 3 dup(0)	dword_444878	dd 2 dup(0)	dword_444880	dd 22h dup(0)	dword_444908	dd 9 dup(0)						; ___:0040AA51o
dword_44492C	dd 2 dup(0)						; sub_40B7E0+43o ...
dword_444934	dd 0		dword_444938	dd 2 dup(0)	dword_444940	dd 7 dup(0)	dword_44495C	dd 3 dup(0)	dword_444968	dd 7 dup(0)	dword_444984	dd 2 dup(0)	dword_44498C	dd 6 dup(0)	dword_4449A4	dd 0Dh dup(0)	dword_4449D8	dd 8 dup(0)	dword_4449F8	dd 4 dup(0)	dword_444A08	dd 7 dup(0)	dword_444A24	dd 8 dup(0)	dword_444A44	dd 7 dup(0)	dword_444A60	dd 8 dup(0)	dword_444A80	dd 8 dup(0)	dword_444AA0	dd 0Ah dup(0)	dword_444AC8	dd 5 dup(0)	dword_444ADC	dd 0		dword_444AE0	dd 4 dup(0)	dword_444AF0	dd 2 dup(0)	dword_444AF8	dd 4 dup(0)	dword_444B08	dd 2 dup(0)	dword_444B10	dd 2 dup(0)	dword_444B18	dd 4 dup(0)	dword_444B28	dd 5 dup(0)	dword_444B3C	dd 8 dup(0)	dword_444B5C	dd 7 dup(0)	dword_444B78	dd 4 dup(0)	dword_444B88	dd 7 dup(0)	dword_444BA4	dd 0Ch dup(0)	dword_444BD4	dd 3 dup(0)	dword_444BE0	dd 5 dup(0)						; sub_40F060+Ao ...
dword_444BF4	dd 5 dup(0)	dword_444C08	dd 9 dup(0)	dword_444C2C	dd 5 dup(0)	dword_444C40	dd 7 dup(0)	dword_444C5C	dd 0							; ___:00411148o ...
dword_444C60	dd 0							; ___:00410D45o ...
dword_444C64	dd 0							; ___:loc_410C87o
dword_444C68	dd 0							; ___:loc_410C66o
dword_444C6C	dd 0							; ___:loc_410CA8o ...
dword_444C70	dd 0							; ___:00410D5Do ...
dword_444C74	dd 4 dup(0)						; ___:00410762o ...
dword_444C84	dd 7 dup(0)	dword_444CA0	dd 4 dup(0)						; sub_412780+91o ...
dword_444CB0	dd 4 dup(0)	dword_444CC0	dd 2 dup(0)	dword_444CC8	dd 4 dup(0)						; sub_412A40+8Fo
dword_444CD8	dd 3 dup(0)	dword_444CE4	dd 3 dup(0)	dword_444CF0	dd 0							; sub_412780+E5o
dword_444CF4	dd 2 dup(0)	dword_444CFC	dd 2 dup(0)	dword_444D04	dd 2 dup(0)	dword_444D0C	dd 0		dword_444D10	dd 0		dword_444D14	dd 0		dword_444D18	dd 0		dword_444D1C	dd 0		dword_444D20	dd 2 dup(0)	dword_444D28	dd 2 dup(0)	dword_444D30	dd 2 dup(0)	dword_444D38	dd 2 dup(0)						; ___:0041965Bo
dword_444D40	dd 3 dup(0)	dword_444D4C	dd 4 dup(0)	dword_444D5C	dd 0		dword_444D60	dd 3 dup(0)						; ___:004194EEo
dword_444D6C	dd 0		dword_444D70	dd 0		dword_444D74	dd 0Ah dup(0)	dword_444D9C	dd 2 dup(0)	dword_444DA4	dd 2 dup(0)	byte_444DAC	db 0			; DATA XREF: sub_41A390r
		align 10h
		dd 2Bh dup(0)
dword_444E5C	dd 2 dup(0)	dword_444E64	dd 0		dword_444E68	dd 0		dword_444E6C	dd 0		dword_444E70	dd 0		dword_444E74	dd 0		dword_444E78	dd 0		dword_444E7C	dd 0		dword_444E80	dd 0		dword_444E84	dd 0							; ___:0041C387r
word_444E88	dw 0			; DATA XREF: ___:0041C221r
					; ___:0041C391r
		align 4
dword_444E8C	dd 0							; ___:0041C356r
dword_444E90	dd 0							; ___:0041C35Br
dword_444E94	dd 0							; ___:0041C37Fr
		dd 0
dword_444E9C	dd 5 dup(0)	dword_444EB0	dd 3 dup(0)	dword_444EBC	dd 5 dup(0)	dword_444ED0	dd 2 dup(0)	dword_444ED8	dd 4 dup(0)	dword_444EE8	dd 0		dword_444EEC	dd 4 dup(0)	dword_444EFC	dd 19h dup(0)	dword_444F60	dd 5 dup(0)	dword_444F74	dd 4 dup(0)	dword_444F84	dd 4 dup(0)	dword_444F94	dd 4 dup(0)	dword_444FA4	dd 0FE3h dup(0)	byte_448F30	db 0			; DATA XREF: sub_403530+95o
					; sub_404690+200o ...
		align 4
dword_448F34	dd 0		dword_448F38	dd 0							; ___:0040D4BFr ...
		align 10h
dword_448F40	dd 0							; ___:0040D425w ...
		dd 8 dup(0)
dword_448F64	dd 41h dup(0)						; ___:0040D460o ...
dword_449068	dd 0							; ___:loc_40D4B4r ...
dword_44906C	dd 0							; ___:0040D42Fr ...
dword_449070	dd 0							; sub_40D660+CAw
dword_449074	dd 0							; sub_40D660+E3r
		dd 11h dup(0)
dword_4490BC	dd 0							; ___:004104ADr
dword_4490C0	dd 0							; ___:00410545r ...
dword_4490C4	dd 0							; ___:00410685r ...
dword_4490C8	dd 0							; ___:00410BA9r ...
dword_4490CC	dd 0							; ___:0041077Br
dword_4490D0	dd 0							; ___:00410858r
dword_4490D4	dd 0							; ___:004107ACr
dword_4490D8	dd 0							; ___:0041050Dr ...
dword_4490DC	dd 0							; ___:00410341r
dword_4490E0	dd 0							; ___:0041037Dr ...
dword_4490E4	dd 0							; ___:0041036Dr
dword_4490E8	dd 0							; ___:00410402r
dword_4490EC	dd 0							; ___:00410EC3r
dword_4490F0	dd 0							; ___:00411250r ...
dword_4490F4	dd 0							; ___:0041258Ar
dword_4490F8	dd 0							; ___:004106B3r
dword_4490FC	dd 0							; ___:004106E5r
dword_449100	dd 0							; ___:00411282r
		dd 5 dup(0)
dword_449118	dd 10h dup(0)						; sub_404010+9Fo ...
		db 2 dup(0)
byte_44915A	db 0			; DATA XREF: sub_409B10r sub_409B80r
		align 4
		db 3 dup(0)
byte_44915F	db 0			; DATA XREF: sub_40D660+10Fr
		db 0
byte_449161	db 0			; DATA XREF: sub_40DBF0r
word_449162	dw 0			; DATA XREF: sub_40DBF0+9o
		dd 44h dup(0)
		db 3 dup(0)
byte_449277	db 0			; DATA XREF: ___:00412F9Ao
					; ___:0041304Fo
		align 10h
dword_449280	dd 12h dup(0)						; ___:00410144o
		db 0
byte_4492C9	db 3 dup(0)		; DATA XREF: sub_4077E0+13C1o
					; ___:00410189o ...
		dd 11h dup(0)
		db 2 dup(0)
word_449312	dw 0			; DATA XREF: sub_4077E0+1398o
					; ___:00410162o
		dd 6 dup(0)
word_44932C	dw 0			; DATA XREF: ___:00410211r
		align 10h
		dd 0Ah dup(0)
		db 3 dup(0)
byte_44935B	db 0			; DATA XREF: sub_4077E0+13EAo
					; ___:004101ACo ...
		dd 12h dup(0)
dword_4493A4	dd 12h dup(0)						; ___:00410127o ...
		db 0
byte_4493ED	db 3 dup(0)		; DATA XREF: sub_4077E0+1323o
					; ___:00410100o ...
		dd 23h dup(0)
		db 3 dup(0)
byte_44947F	db 0			; DATA XREF: sub_4077E0+1413o
					; ___:004101CAo
		dd 36h dup(0)
		db 2 dup(0)
word_44955A	dw 0			; DATA XREF: ___:00412F6Ao
					; ___:00412F89o ...
		dd 73h dup(0)
		db 0
byte_449729	db 0			; DATA XREF: sub_41BA50+18r
		align 4
		dd 23h dup(0)
		db 3 dup(0)
byte_4497BB	db 0			; DATA XREF: sub_40D660:loc_40D9EFr
		dd 12h dup(0)
byte_449804	db 0			; DATA XREF: ___:00410872r
		align 4
		dd 0Bh dup(0)
dword_449834	dd 18h dup(0)						; sub_40EE40+97o ...
		db 2 dup(0)
byte_449896	db 0			; DATA XREF: ___:00404F18r
					; ___:0041DF9Er
		align 4
		dd 11h dup(0)
		db 3 dup(0)
byte_4498DF	db 0			; DATA XREF: ___:loc_404F30r
					; ___:loc_41DFB6r
		dd 0Bh dup(0)
		db 3 dup(0)
byte_44990F	db 0			; DATA XREF: ___:00404F39o
					; ___:0041DFBFo
		dd 4D3h	dup(0)
		db 2 dup(0)
word_44AC5E	dw 0			; DATA XREF: sub_404690+1BDo
					; sub_404B60+31o ...
		db 2 dup(0)
word_44AC62	dw 0			; DATA XREF: sub_404B60+4o
		dd 1Ch dup(0)
		db 2 dup(0)
word_44ACD6	dw 0			; DATA XREF: sub_4076B0+36o
					; sub_407740+3Eo ...
		dd 26h dup(0)
dword_44AD70	dd 234C1h dup(0)					; ___:00404F3Eo ...
		db 0
byte_4D8075	db 3 dup(0)		; DATA XREF: sub_404010+496o
					; sub_404C70+1Eo ...
		dd 5 dup(0)
byte_4D808C	db 0			; DATA XREF: ___:00404F52w
					; ___:004051ABw
dword_4D808D	dd 0				align 4
		dd 0
		db 0
dword_4D8099	dd 0							; sub_404C70+2Aw
byte_4D809D	db 3 dup(0)		; DATA XREF: ___:00412FC4o
					; ___:00412FE7o
		dd 0ABh	dup(0)
		db 3 dup(0)
byte_4D834F	db 0			; DATA XREF: sub_4077E0+AAFo
					; sub_4077E0+F40o ...
		dd 0F9h	dup(0)
		db 0
byte_4D8735	db 3 dup(0)		; DATA XREF: ___:0041A053o
		dd 1EDBh dup(0)
		db 0
byte_4E02A5	db 3 dup(0)		; DATA XREF: ___:00419F93o
					; ___:0041A063o
		dd 1EDBh dup(0)
		db 0
byte_4E7E15	db 3 dup(0)		; DATA XREF: ___:00419FA3o
		dd 40Bh	dup(0)
byte_4E8E44	db 0			; DATA XREF: ___:00404F59w
					; ___:loc_410072r ...
byte_4E8E45	db 3 dup(0)		; DATA XREF: sub_404010+4D5o
					; ___:00404EF5o ...
		dd 4 dup(0)
		db 2 dup(0)
word_4E8E5A	dw 0			; DATA XREF: ___:00404F94o
					; sub_4077E0+F54o ...
		dd 0Fh dup(0)
		db 3 dup(0)
byte_4E8E9B	db 0			; DATA XREF: sub_418590+21o
					; ___:0041DC71o ...
		dd 7FE4h dup(0)
dword_508E2C	dd 1000h dup(0)						; ___:00419B9Do ...
dword_50CE2C	dd 333h	dup(0)						; ___:00419BB8o ...
dword_50DAF8	dd 0							; sub_41A110+1Br ...
		dd 14h dup(0)
dword_50DB4C	dd 0EFDh dup(0)						; ___:0041C2A5o
dword_511740	dd 0							; sub_40E870+25Ar
		dd 4 dup(0)
dword_511754	dd 0							; sub_40EE40+15Er ...
		dd 0
dword_51175C	dd 0							; sub_40E870+22Cr
		dd 0
dword_511764	dd 0				dd 0
dword_51176C	dd 0							; sub_40E870+24Cr
		dd 4Fh dup(0)
dword_5118AC	dd 0							; sub_40D660+332r ...
		dd 7 dup(0)
dword_5118CC	dd 0				dd 2 dup(0)
dword_5118D8	dd 0							; sub_418590+C5r ...
		align 10h
dword_5118E0	dd 0				align 10h
dword_5118F0	dd 0				dd 8 dup(0)
dword_511914	dd 0		dword_511918	dd 0				dd 63h dup(0)
dword_511AA8	dd 0				dd 3 dup(0)
dword_511AB8	dd 0							; ___:0041C3DAr
		dd 3 dup(0)
dword_511AC8	dd 0							; sub_41BA50+17Er
		dd 3 dup(0)
dword_511AD8	dd 0				align 10h
dword_511AE0	dd 0		dword_511AE4	dd 0				dd 0
dword_511AEC	dd 0				dd 4 dup(0)
dword_511B00	dd 0							; sub_41BD90+5Dr
dword_511B04	dd 0							; ___:00411156r ...
dword_511B08	dd 0							; ___:00419CDAr
		align 10h
dword_511B10	dd 0				dd 3Bh dup(0)
dword_511C00	dd 0							; ___:0041A07Dr
		dd 13h dup(0)
dword_511C50	dd 0				dd 2 dup(0)
dword_511C5C	dd 0				dd 0Dh dup(0)
dword_511C94	dd 0							; sub_41A7D0+48r
		dd 4DAh	dup(0)
___		ends

; Section 2. (virtual address 00113000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00001000 (   4096.)
; Offset to raw	data for section: 00113000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_rsrc___	segment	para public 'DATA' use32
		assume cs:_rsrc___
		;org 513000h
		align 2000h
_rsrc___	ends

; Section 3. (virtual address 00114000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00001000 (   4096.)
; Offset to raw	data for section: 00114000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_idata__	segment	para public 'DATA' use32
		assume cs:_idata__
		;org 514000h
		dd 400h	dup(0)
_idata__	ends

; Section 4. (virtual address 00115000)
; Virtual size			: 0010A000 (1089536.)
; Section size in file		: 0010A000 (1089536.)
; Offset to raw	data for section: 00115000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
Themida_	segment	para public 'DATA' use32
		assume cs:Themida_
		;org 515000h
		dd 5 dup(0)
		public start
start		dd 39BFFh dup(0)
		db 0
byte_5FC011	db 3 dup(0)		; CODE XREF: sub_4068E0+12Cp
					; sub_409CA0+1Dp ...
		dd 8BFBh dup(0)
Themida_	ends

; Section 5. (virtual address 0021F000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 0021F000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_idata2		segment	para public 'DATA' use32
		assume cs:_idata2
		;org 61F000h
		align 2000h
_idata2		ends


		end start