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

; File Name   :	u:\work\c80d05a4a458b337f85e6e35739e4443_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00110000 (1114112.)
; Section size in file		: 00110000 (1114112.)
; 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	loc_42F630
; ---------------------------------------------------------------------------
		jmp	loc_412CB0

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

; Attributes: thunk


sub_40100F	proc near		; CODE XREF: sub_421AF0+29p
		jmp	sub_422050
sub_40100F	endp

; ---------------------------------------------------------------------------
		jmp	loc_431250
; ---------------------------------------------------------------------------
		jmp	loc_420DA0

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

; Attributes: thunk


sub_40101E	proc near		; CODE XREF: ___:004118E3p
		jmp	sub_411910
sub_40101E	endp


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

; Attributes: thunk


sub_401023	proc near		; CODE XREF: ___:0040B1BDp
					; ___:0040B1CAp ...
		jmp	sub_403C00
sub_401023	endp


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

; Attributes: thunk


sub_401028	proc near		; CODE XREF: ___:0041FAC4p
		jmp	sub_40B000
sub_401028	endp


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

; Attributes: thunk


sub_40102D	proc near		; CODE XREF: ___:00405289p
					; ___:00405348p ...
		jmp	sub_40A030
sub_40102D	endp

; ---------------------------------------------------------------------------
		jmp	loc_42A100

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

; Attributes: thunk


sub_401037	proc near		; CODE XREF: sub_413510+3Bp
					; ___:00414B30p
		jmp	sub_4155E0
sub_401037	endp


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

; Attributes: thunk


sub_40103C	proc near		; CODE XREF: sub_42F840+6Ep
					; sub_42F840+8Ap ...
		jmp	sub_432FE0
sub_40103C	endp


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

; Attributes: thunk


sub_401041	proc near		; CODE XREF: ___:0042EF22p
					; sub_42F840+3Fp ...
		jmp	sub_432E60
sub_401041	endp

; ---------------------------------------------------------------------------
		jmp	loc_423940

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

; Attributes: noreturn thunk


sub_40104B	proc near
		jmp	sub_40D130
sub_40104B	endp


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

; Attributes: thunk


sub_401050	proc near		; CODE XREF: sub_40B000+3Ap
					; sub_40B070+1Ap
		jmp	sub_432980
sub_401050	endp


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

; Attributes: thunk


sub_401055	proc near		; CODE XREF: ___:0041E9DBp
		jmp	sub_421C30
sub_401055	endp


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

; Attributes: thunk


sub_40105A	proc near		; CODE XREF: sub_40C0C0+8p
		jmp	sub_40C280
sub_40105A	endp


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

; Attributes: thunk


sub_40105F	proc near		; CODE XREF: sub_431900+5Ap
					; sub_433710+50p
		jmp	sub_4318C0
sub_40105F	endp

; ---------------------------------------------------------------------------
		jmp	loc_41C610

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

; Attributes: thunk


sub_401069	proc near		; CODE XREF: ___:00416EAAp
		jmp	sub_41FBD0
sub_401069	endp


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

; Attributes: noreturn thunk


sub_40106E	proc near		; CODE XREF: sub_40BF60+32p
		jmp	sub_40C120
sub_40106E	endp


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

; Attributes: thunk


sub_401073	proc near		; CODE XREF: ___:00416EBAp
		jmp	sub_418290
sub_401073	endp


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

; Attributes: noreturn thunk


sub_401078	proc near		; CODE XREF: sub_415830+5Ep
					; sub_416280+32p
		jmp	sub_4161C0
sub_401078	endp


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

; Attributes: thunk


sub_40107D	proc near		; CODE XREF: ___:0041E7C1p
					; sub_4223E0+3p
		jmp	sub_421A50
sub_40107D	endp

; ---------------------------------------------------------------------------
		jmp	loc_41ACE0
; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_7. PRESS KEYPAD	"+" TO EXPAND]

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

; Attributes: thunk


sub_40108C	proc near		; CODE XREF: sub_421C30+3p
					; ___:00421FFFp ...
		jmp	sub_422170
sub_40108C	endp


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

; Attributes: thunk


sub_401091	proc near		; CODE XREF: ___:0040C443p
		jmp	sub_40CAD0
sub_401091	endp

; ---------------------------------------------------------------------------
		jmp	loc_427FF0

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

; Attributes: thunk


sub_40109B	proc near		; CODE XREF: sub_407570+Ap
		jmp	sub_407610
sub_40109B	endp


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

; Attributes: thunk


sub_4010A0	proc near		; CODE XREF: sub_4245F0+23p
					; sub_424790+6p ...
		jmp	sub_424500
sub_4010A0	endp


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

; Attributes: thunk


sub_4010A5	proc near		; CODE XREF: sub_430C00+F5p
					; sub_430C00+14Fp
		jmp	sub_432DF0
sub_4010A5	endp


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

; Attributes: thunk


sub_4010AA	proc near		; CODE XREF: sub_4331D0+C8p
		jmp	sub_430990
sub_4010AA	endp

; ---------------------------------------------------------------------------
		jmp	loc_429DC0
; ---------------------------------------------------------------------------
		jmp	loc_41E2C0

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

; Attributes: thunk


sub_4010B9	proc near		; CODE XREF: sub_418330+D0p
					; sub_418490+2Dp
		jmp	sub_418A20
sub_4010B9	endp


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

; Attributes: thunk


sub_4010BE	proc near		; CODE XREF: ___:00410839p
					; ___:004108F0p ...
		jmp	sub_411860
sub_4010BE	endp


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

; Attributes: thunk


sub_4010C3	proc near		; CODE XREF: ___:0042F336p
					; ___:0042F3A4p ...
		jmp	sub_430F00
sub_4010C3	endp


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

; Attributes: thunk


sub_4010C8	proc near		; CODE XREF: sub_421D50+9p
					; sub_422240+18p
		jmp	sub_4223C0
sub_4010C8	endp


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

; Attributes: thunk


sub_4010CD	proc near		; CODE XREF: sub_40A9F0+58p
					; sub_40A9F0+82p ...
		jmp	sub_40ABE0
sub_4010CD	endp


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

; Attributes: thunk


sub_4010D2	proc near		; CODE XREF: ___:00422E31p
					; ___:00423AA6p ...
		jmp	sub_419AE0
sub_4010D2	endp


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

; Attributes: noreturn thunk


sub_4010D7	proc near		; CODE XREF: sub_416010+7p
		jmp	sub_416640
sub_4010D7	endp


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

; Attributes: thunk


sub_4010DC	proc near		; CODE XREF: sub_415520+4Fp
					; sub_415E70+11p ...
		jmp	sub_4160C0
sub_4010DC	endp


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

; Attributes: thunk


sub_4010E1	proc near		; CODE XREF: ___:00429C88p
		jmp	sub_429AA0
sub_4010E1	endp


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

; Attributes: noreturn thunk


sub_4010E6	proc near		; CODE XREF: sub_421870+1Fp
		jmp	sub_421CB0
sub_4010E6	endp


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

; Attributes: thunk


sub_4010EB	proc near		; CODE XREF: sub_421FB0+11p
					; ___:00421FD7p ...
		jmp	sub_4224D0
sub_4010EB	endp

; ---------------------------------------------------------------------------
		jmp	loc_413D60

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

; Attributes: thunk


sub_4010F5	proc near		; CODE XREF: sub_421A30+3p
					; ___:00421D9Fp ...
		jmp	sub_421F10
sub_4010F5	endp

; ---------------------------------------------------------------------------
		jmp	loc_414400

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

; Attributes: thunk


sub_4010FF	proc near		; CODE XREF: ___:00426F23p
		jmp	sub_426F50
sub_4010FF	endp


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

; Attributes: thunk


sub_401104	proc near		; CODE XREF: sub_415A00+11p
					; ___:00415A27p ...
		jmp	sub_416470
sub_401104	endp

; ---------------------------------------------------------------------------
		jmp	loc_433310

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

; Attributes: thunk


sub_40110E	proc near		; CODE XREF: sub_421B60+5p
					; sub_421C50+6p ...
		jmp	sub_422150
sub_40110E	endp


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

; Attributes: thunk


sub_401113	proc near		; CODE XREF: ___:00416A5Bp
					; ___:00439F5Ej ...
		jmp	sub_417A60
sub_401113	endp


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

; Attributes: thunk


sub_401118	proc near		; CODE XREF: ___:00404CDAp
					; ___:00404E1Fp ...
		jmp	sub_412970
sub_401118	endp

; ---------------------------------------------------------------------------
		jmp	loc_4192C0

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

; Attributes: noreturn thunk


sub_401122	proc near		; CODE XREF: sub_431A20+6p
					; ___:00431A33p ...
		jmp	sub_42F480
sub_401122	endp

; ---------------------------------------------------------------------------
		jmp	loc_42E3D0
; ---------------------------------------------------------------------------
		jmp	loc_429A30

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

; Attributes: thunk


sub_401131	proc near		; CODE XREF: ___:00423C9Dp
		jmp	sub_423760
sub_401131	endp

; ---------------------------------------------------------------------------
		jmp	loc_431F50

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

; Attributes: thunk


sub_40113B	proc near		; CODE XREF: ___:004150A8p
		jmp	sub_415990
sub_40113B	endp


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

; Attributes: thunk


sub_401140	proc near		; CODE XREF: sub_41B950+F7p
					; sub_41B950+10Bp ...
		jmp	sub_409EA0
sub_401140	endp


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

; Attributes: thunk


sub_401145	proc near		; CODE XREF: sub_409910+Ap
		jmp	sub_409A00
sub_401145	endp


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

; Attributes: thunk


sub_40114A	proc near		; CODE XREF: sub_4133D0+55p
					; sub_4133D0+94p ...
		jmp	sub_415770
sub_40114A	endp


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

; Attributes: thunk


sub_40114F	proc near		; CODE XREF: ___:004251A3p
		jmp	sub_4235F0
sub_40114F	endp


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

; Attributes: thunk


sub_401154	proc near		; CODE XREF: ___:00414BBEp
		jmp	sub_415520
sub_401154	endp


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

; Attributes: thunk


sub_401159	proc near		; CODE XREF: ___:00427603p
		jmp	sub_427630
sub_401159	endp

; ---------------------------------------------------------------------------
		jmp	loc_4118E0

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

; Attributes: thunk


sub_401163	proc near		; CODE XREF: sub_415DD0+11p
					; ___:00415DF7p ...
		jmp	sub_4165F0
sub_401163	endp

; ---------------------------------------------------------------------------
		jmp	loc_41D730

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

; Attributes: thunk


sub_40116D	proc near		; CODE XREF: sub_418B10+23p
					; sub_418D80+11p
		jmp	sub_418E60
sub_40116D	endp


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

; Attributes: thunk


sub_401172	proc near		; CODE XREF: sub_418A90+3p
					; sub_418E90+54p ...
		jmp	sub_418CE0
sub_401172	endp


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

; Attributes: thunk


sub_401177	proc near		; CODE XREF: sub_409600+6Ap
					; sub_409600+103p
		jmp	sub_4098A0
sub_401177	endp

; ---------------------------------------------------------------------------
		jmp	loc_432840

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

; Attributes: thunk


sub_401181	proc near		; CODE XREF: ___:00413D7Dp
		jmp	sub_413B70
sub_401181	endp


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

; Attributes: thunk


sub_401186	proc near		; CODE XREF: ___:0041A1E4p
		jmp	sub_41AFE0
sub_401186	endp


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

; Attributes: thunk


sub_40118B	proc near		; CODE XREF: sub_4133D0+88p
					; sub_4147D0+BFp ...
		jmp	sub_415930
sub_40118B	endp


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

; Attributes: noreturn thunk


sub_401190	proc near		; CODE XREF: sub_42F480+7p
					; sub_42F4F0+19p ...
		jmp	sub_4338B0
sub_401190	endp


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

; Attributes: thunk


sub_401195	proc near
		jmp	sub_40DB10
sub_401195	endp


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

; Attributes: thunk


sub_40119A	proc near		; CODE XREF: ___:004310AAp
		jmp	sub_430A50
sub_40119A	endp


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

; Attributes: noreturn thunk


sub_40119F	proc near		; CODE XREF: sub_4071E0+11p
					; sub_407370+1Fp
		jmp	sub_407410
sub_40119F	endp


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

; Attributes: thunk


sub_4011A4	proc near		; CODE XREF: sub_4036D0+3B5p
					; sub_4036D0+3C5p ...
		jmp	sub_403E00
sub_4011A4	endp


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

; Attributes: thunk


sub_4011A9	proc near		; CODE XREF: sub_421C10+3p
		jmp	sub_422190
sub_4011A9	endp


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

; Attributes: thunk


sub_4011AE	proc near		; CODE XREF: sub_40C250+Ap
		jmp	sub_40C310
sub_4011AE	endp


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

; Attributes: thunk


sub_4011B3	proc near		; CODE XREF: sub_4036D0+1Dp
					; sub_407030+1Fp ...
		jmp	sub_403C70
sub_4011B3	endp


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

; Attributes: noreturn thunk


sub_4011B8	proc near		; CODE XREF: ___:00413274p
					; ___:0043998Cj ...
		jmp	sub_4153B0
sub_4011B8	endp


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

; Attributes: thunk


sub_4011BD	proc near		; CODE XREF: ___:0042B353p
		jmp	sub_42B380
sub_4011BD	endp

; ---------------------------------------------------------------------------
		jmp	loc_40AF00

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

; Attributes: noreturn thunk


sub_4011C7	proc near		; CODE XREF: ___:00414BCDp
		jmp	sub_414C70
sub_4011C7	endp


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

; Attributes: thunk


sub_4011CC	proc near		; CODE XREF: sub_407610+7p
					; sub_409A00+7p ...
		jmp	sub_407640
sub_4011CC	endp


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

; Attributes: thunk


sub_4011D1	proc near		; CODE XREF: sub_413510+73p
					; ___:00414B6Dp ...
		jmp	sub_415600
sub_4011D1	endp


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

; Attributes: thunk


sub_4011D6	proc near		; CODE XREF: ___:0041E6B8p
		jmp	sub_420530
sub_4011D6	endp


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

; Attributes: thunk


sub_4011DB	proc near		; CODE XREF: sub_413DA0+84p
		jmp	sub_4137E0
sub_4011DB	endp


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

; Attributes: thunk


sub_4011E0	proc near		; CODE XREF: ___:00432428p
		jmp	sub_42FD70
sub_4011E0	endp


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

; Attributes: thunk


sub_4011E5	proc near		; CODE XREF: sub_4074C0+8p
		jmp	sub_4075A0
sub_4011E5	endp


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

; Attributes: thunk


sub_4011EA	proc near		; CODE XREF: ___:00404D0Fp
					; ___:00404EA0p ...
		jmp	sub_40A430
sub_4011EA	endp


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

; Attributes: noreturn thunk


sub_4011EF	proc near		; CODE XREF: sub_40A790+21p
					; sub_40A9F0+A5p
		jmp	sub_40A9D0
sub_4011EF	endp

; ---------------------------------------------------------------------------
		jmp	loc_40AF70

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

; Attributes: thunk


sub_4011F9	proc near		; CODE XREF: sub_40A430+129p
					; sub_40A810+4p ...
		jmp	sub_40A7E0
sub_4011F9	endp

; ---------------------------------------------------------------------------
		jmp	loc_426650

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

; Attributes: thunk


sub_401203	proc near		; CODE XREF: ___:004322BDp
		jmp	sub_42FA70
sub_401203	endp


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

; Attributes: thunk


sub_401208	proc near		; CODE XREF: sub_4072F0+3p
					; ___:004073BFp ...
		jmp	sub_407480
sub_401208	endp


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

; Attributes: noreturn thunk


sub_40120D	proc near		; CODE XREF: ___:0041DB76p
					; ___:0041DC40p ...
		jmp	sub_421870
sub_40120D	endp


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

; Attributes: noreturn thunk


sub_401212	proc near		; CODE XREF: sub_421AB0+11p
					; sub_421FB0+1Fp
		jmp	sub_4220E0
sub_401212	endp


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

; Attributes: thunk


sub_401217	proc near		; CODE XREF: ___:0042B4F3p
		jmp	sub_42B520
sub_401217	endp


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

; Attributes: noreturn thunk


sub_40121C	proc near
		jmp	sub_407790
sub_40121C	endp


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

; Attributes: thunk


sub_401221	proc near		; CODE XREF: sub_40C120+5Fp
		jmp	sub_40C2F0
sub_401221	endp


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

; Attributes: thunk


sub_401226	proc near		; CODE XREF: sub_4034E0+F6p
					; sub_4034E0+12Ep ...
		jmp	sub_409C30
sub_401226	endp


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

; Attributes: thunk


sub_40122B	proc near		; CODE XREF: ___:0041E773p
					; ___:0041E784p
		jmp	sub_421A30
sub_40122B	endp

; ---------------------------------------------------------------------------
		jmp	loc_41F860

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

; Attributes: thunk


sub_401235	proc near		; CODE XREF: ___:00416AFBp
					; ___:00439ED2j ...
		jmp	sub_4176B0
sub_401235	endp


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

; Attributes: thunk


sub_40123A	proc near		; CODE XREF: sub_40AEC0+Fp
		jmp	sub_42FF50
sub_40123A	endp


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

; Attributes: noreturn thunk


sub_40123F	proc near		; CODE XREF: sub_418B10+32p
		jmp	sub_418D80
sub_40123F	endp

; ---------------------------------------------------------------------------
		jmp	loc_433570

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

; Attributes: thunk


sub_401249	proc near		; CODE XREF: sub_415420+5p
					; sub_415620+6p ...
		jmp	sub_416030
sub_401249	endp


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

; Attributes: thunk


sub_40124E	proc near		; CODE XREF: sub_40BCB0+29p
					; sub_40BDD0+29p
		jmp	sub_40BF60
sub_40124E	endp


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

; Attributes: noreturn thunk


sub_401253	proc near		; CODE XREF: ___:0041EA49p
					; ___:0043B1ABj
		jmp	sub_421AF0
sub_401253	endp


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

; Attributes: thunk


sub_401258	proc near		; CODE XREF: sub_4144D0+BFp
		jmp	sub_415210
sub_401258	endp


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

; Attributes: thunk


sub_40125D	proc near		; CODE XREF: sub_4164E0+Ap
		jmp	sub_416820
sub_40125D	endp


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

; Attributes: noreturn thunk


sub_401262	proc near		; CODE XREF: ___:00416B67p
					; ___:00439E73j ...
		jmp	sub_416FB0
sub_401262	endp


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

; Attributes: thunk


sub_401267	proc near
		jmp	sub_418330
sub_401267	endp

; ---------------------------------------------------------------------------
		jmp	loc_416C30

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

; Attributes: thunk


sub_401271	proc near		; CODE XREF: ___:00416E1Fp
		jmp	sub_417FD0
sub_401271	endp

; ---------------------------------------------------------------------------
		jmp	loc_414690
; ---------------------------------------------------------------------------
		jmp	loc_42F030

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

; Attributes: thunk


sub_401280	proc near		; CODE XREF: ___:004102E7p
					; ___:0041F14Dp ...
		jmp	sub_41B6E0
sub_401280	endp


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

; Attributes: thunk


sub_401285	proc near		; CODE XREF: ___:00416E5Ap
		jmp	sub_418180
sub_401285	endp


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

; Attributes: thunk


sub_40128A	proc near		; CODE XREF: sub_409490+8p
		jmp	sub_4094E0
sub_40128A	endp

; ---------------------------------------------------------------------------
		jmp	loc_429A30

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

; Attributes: noreturn thunk


sub_401294	proc near		; CODE XREF: sub_409600+A5p
					; sub_412BC0+21p
		jmp	sub_409810
sub_401294	endp


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

; Attributes: thunk


sub_401299	proc near		; CODE XREF: ___:00404FF5p
					; ___:0041DDDAp
		jmp	sub_41C030
sub_401299	endp


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

; Attributes: thunk


sub_40129E	proc near		; CODE XREF: ___:00416D6Fp
		jmp	sub_4036D0
sub_40129E	endp


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

; Attributes: thunk


sub_4012A3	proc near		; CODE XREF: sub_418BC0+23p
					; sub_418E90+11p
		jmp	sub_418FE0
sub_4012A3	endp


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

; Attributes: thunk


sub_4012A8	proc near		; CODE XREF: sub_424840+Cp
					; sub_424840+3Ep ...
		jmp	sub_424330
sub_4012A8	endp

; ---------------------------------------------------------------------------
		jmp	loc_42F670

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

; Attributes: thunk


sub_4012B2	proc near		; CODE XREF: ___:004054D0p
					; ___:0040574Cp ...
		jmp	sub_40A290
sub_4012B2	endp


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

; Attributes: thunk


sub_4012B7	proc near		; CODE XREF: ___:0042EB16p
					; ___:0042EB66p ...
		jmp	sub_431490
sub_4012B7	endp


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

; Attributes: thunk


sub_4012BC	proc near		; CODE XREF: ___:0041E9C7p
					; ___:0041EA34p ...
		jmp	sub_421C80
sub_4012BC	endp


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

; Attributes: thunk


sub_4012C1	proc near		; DATA XREF: ___:00426B67o
		jmp	sub_426CE0
sub_4012C1	endp


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

; Attributes: thunk


sub_4012C6	proc near		; CODE XREF: sub_424720+18p
					; sub_424760+Ap ...
		jmp	sub_4246D0
sub_4012C6	endp


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

; Attributes: thunk


sub_4012CB	proc near		; CODE XREF: sub_416120+9p
					; sub_4161C0+18p
		jmp	sub_4167D0
sub_4012CB	endp


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

; Attributes: thunk


sub_4012D0	proc near		; DATA XREF: sub_431280+32o
		jmp	sub_431A80
sub_4012D0	endp

; ---------------------------------------------------------------------------
		jmp	loc_42EB60
; ---------------------------------------------------------------------------
		jmp	loc_419BB0

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

; Attributes: thunk


sub_4012DF	proc near		; CODE XREF: sub_429AA0+67p
		jmp	sub_41FEF0
sub_4012DF	endp


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

; Attributes: noreturn thunk


sub_4012E4	proc near		; CODE XREF: ___:0042EEF8p
					; sub_42F0B0+2p ...
		jmp	sub_430270
sub_4012E4	endp


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

; Attributes: thunk


sub_4012E9	proc near		; CODE XREF: sub_413670+3Fp
					; sub_4144D0+40p ...
		jmp	sub_415160
sub_4012E9	endp


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

; Attributes: thunk


sub_4012EE	proc near		; CODE XREF: sub_404640+19Fp
					; sub_404640+212p ...
		jmp	sub_409EF0
sub_4012EE	endp


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

; Attributes: thunk


sub_4012F3	proc near		; CODE XREF: sub_424E90+B5p
					; sub_424E90+F1p
		jmp	sub_424E20
sub_4012F3	endp


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

; Attributes: thunk


sub_4012F8	proc near		; CODE XREF: ___:00425147p
		jmp	sub_424E90
sub_4012F8	endp


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

; Attributes: thunk


sub_4012FD	proc near		; CODE XREF: ___:00416E3Ap
		jmp	sub_418080
sub_4012FD	endp


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

; Attributes: thunk


sub_401302	proc near		; CODE XREF: ___:00416E0Fp
		jmp	sub_417F10
sub_401302	endp


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

; Attributes: thunk


sub_401307	proc near		; CODE XREF: sub_4303D0+1p
		jmp	sub_430460
sub_401307	endp


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

; Attributes: thunk


sub_40130C	proc near		; CODE XREF: ___:00425F11p
		jmp	sub_426450
sub_40130C	endp


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

; Attributes: thunk


sub_401311	proc near		; CODE XREF: sub_418330+71p
					; sub_418330+BBp ...
		jmp	sub_4189F0
sub_401311	endp


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

; Attributes: thunk


sub_401316	proc near		; CODE XREF: sub_40A0A0+7p
		jmp	sub_40A0C0
sub_401316	endp


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

; Attributes: thunk


sub_40131B	proc near		; CODE XREF: ___:004316D8p
					; sub_431730+2Bp
		jmp	sub_431900
sub_40131B	endp


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

; Attributes: thunk


sub_401320	proc near		; CODE XREF: sub_431280+1p
		jmp	sub_4314C0
sub_401320	endp


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

; Attributes: noreturn thunk


sub_401325	proc near		; CODE XREF: sub_4207E0+37Bp
		jmp	sub_421BD0
sub_401325	endp


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

; Attributes: noreturn thunk


sub_40132A	proc near		; CODE XREF: sub_414360+5Bp
		jmp	sub_415030
sub_40132A	endp


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

; Attributes: thunk


sub_40132F	proc near		; CODE XREF: sub_4153B0+29p
					; sub_4154D0+29p
		jmp	sub_415F30
sub_40132F	endp


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

; Attributes: thunk


sub_401334	proc near		; CODE XREF: ___:00435F42p
					; ___:00435F52p ...
		jmp	sub_435E00
sub_401334	endp


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

; Attributes: thunk


sub_401339	proc near		; CODE XREF: sub_4133D0+5Fp
					; sub_4133D0+9Ep ...
		jmp	sub_415960
sub_401339	endp


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

; Attributes: thunk


sub_40133E	proc near		; CODE XREF: sub_40B520+62p
					; ___:0040B9E8p ...
		jmp	sub_40BE60
sub_40133E	endp

; ---------------------------------------------------------------------------
		jmp	loc_4300C0
; ---------------------------------------------------------------------------
		jmp	loc_42EC40
; ---------------------------------------------------------------------------
		jmp	loc_42B3A0
; ---------------------------------------------------------------------------
		jmp	loc_42B2E0

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

; Attributes: thunk


sub_401357	proc near		; CODE XREF: sub_416090+8p
		jmp	sub_4166B0
sub_401357	endp


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

; Attributes: thunk


sub_40135C	proc near		; CODE XREF: sub_4133D0+71p
					; sub_4133D0:loc_41349Cp ...
		jmp	sub_415910
sub_40135C	endp


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

; Attributes: thunk


sub_401361	proc near		; CODE XREF: sub_418330+AFp
					; sub_418FE0+3p
		jmp	sub_418AB0
sub_401361	endp

; ---------------------------------------------------------------------------
		jmp	loc_426A60

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

; Attributes: thunk


sub_40136B	proc near		; CODE XREF: sub_40B520+39p
					; sub_40B520+78p ...
		jmp	sub_40BE90
sub_40136B	endp


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

; Attributes: thunk


sub_401370	proc near		; CODE XREF: sub_4257A0+29p
					; sub_4257A0+38p
		jmp	sub_4256B0
sub_401370	endp


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

; Attributes: thunk


sub_401375	proc near		; CODE XREF: sub_41A500+1Cp
		jmp	sub_41A540
sub_401375	endp

; ---------------------------------------------------------------------------
		jmp	loc_429C30

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

; Attributes: noreturn thunk


sub_40137F	proc near		; CODE XREF: ___:00408BE6p
					; ___:00414481p
		jmp	sub_414230
sub_40137F	endp


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

; Attributes: noreturn thunk


sub_401384	proc near		; CODE XREF: sub_418490+72p
		jmp	sub_406C30
sub_401384	endp


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

; Attributes: thunk


sub_401389	proc near		; CODE XREF: sub_409D20+7p
					; sub_409E70+7p ...
		jmp	sub_40A700
sub_401389	endp

; ---------------------------------------------------------------------------
		jmp	loc_422A40
; ---------------------------------------------------------------------------
		jmp	loc_413AE0
; ---------------------------------------------------------------------------
		jmp	loc_42B350

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

; Attributes: noreturn thunk


sub_40139D	proc near		; CODE XREF: sub_418900+11p
					; sub_421CB0+1Fp
		jmp	sub_418C50
sub_40139D	endp

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


loc_4013A2:				; CODE XREF: ___:0042B2D3j
		jmp	loc_42A810
; ---------------------------------------------------------------------------
		jmp	loc_42B4F0
; ---------------------------------------------------------------------------
		jmp	loc_42EBB0
; ---------------------------------------------------------------------------
		jmp	loc_414A60

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

; Attributes: noreturn thunk


sub_4013B6	proc near		; CODE XREF: sub_407290+1Fp
		jmp	sub_407370
sub_4013B6	endp

; ---------------------------------------------------------------------------
		jmp	loc_42E7B0

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

; Attributes: noreturn thunk


sub_4013C0	proc near		; CODE XREF: ___:0040FD73p
					; ___:00416AEBp ...
		jmp	sub_40FDA0
sub_4013C0	endp


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

; Attributes: thunk


sub_4013C5	proc near		; CODE XREF: sub_425270+Cp
					; sub_4253E0+Ap ...
		jmp	sub_425230
sub_4013C5	endp

; ---------------------------------------------------------------------------
		jmp	loc_40D2E0

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

; Attributes: thunk


sub_4013CF	proc near		; CODE XREF: sub_40A8C0+20p
		jmp	sub_40A9F0
sub_4013CF	endp


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

; Attributes: thunk


sub_4013D4	proc near		; CODE XREF: ___:00410A5Dp
					; ___:00410DD1p ...
		jmp	sub_40AEC0
sub_4013D4	endp


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

; Attributes: thunk


sub_4013D9	proc near		; CODE XREF: ___:0040555Fp
					; ___:00405568p ...
		jmp	sub_40A270
sub_4013D9	endp


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

; Attributes: thunk


sub_4013DE	proc near		; CODE XREF: ___:0042200Ap
		jmp	sub_422540
sub_4013DE	endp


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

; Attributes: thunk


sub_4013E3	proc near		; CODE XREF: sub_404640+87p
					; ___:00410910p ...
		jmp	sub_40A160
sub_4013E3	endp


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

; Attributes: thunk


sub_4013E8	proc near		; CODE XREF: ___:00426B8Ep
		jmp	sub_419F50
sub_4013E8	endp


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

; Attributes: thunk


sub_4013ED	proc near		; CODE XREF: ___:0041E9BDp
					; ___:0041EA2Ap ...
		jmp	sub_421BA0
sub_4013ED	endp


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

; Attributes: noreturn thunk


sub_4013F2	proc near		; CODE XREF: sub_418CA0+7p
		jmp	sub_418FA0
sub_4013F2	endp


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

; Attributes: thunk


sub_4013F7	proc near		; CODE XREF: sub_4161C0+5Fp
		jmp	sub_416790
sub_4013F7	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B3D0

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

; Attributes: thunk


sub_401401	proc near		; CODE XREF: sub_4156C0+29p
					; sub_4157E0+29p
		jmp	sub_416280
sub_401401	endp


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

; Attributes: noreturn thunk


sub_401406	proc near		; CODE XREF: sub_413DA0+19Ap
		jmp	sub_4157A0
sub_401406	endp


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

; Attributes: noreturn thunk


sub_40140B	proc near		; CODE XREF: ___:0042EF0Fp
					; ___:0042EF38p
		jmp	sub_42F0B0
sub_40140B	endp

; ---------------------------------------------------------------------------
		jmp	loc_42CFC0

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

; Attributes: thunk


sub_401415	proc near		; CODE XREF: ___:00416DFFp
		jmp	sub_417E50
sub_401415	endp


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

; Attributes: thunk


sub_40141A	proc near		; CODE XREF: sub_41B820:loc_41B82Fp
					; sub_41B820+1Fp
		jmp	sub_41B800
sub_40141A	endp

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


loc_40141F:				; DATA XREF: sub_40AEC0+4o
		jmp	loc_40AF90

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

; Attributes: thunk


sub_401424	proc near		; CODE XREF: sub_4034E0+61p
					; sub_403C90+1Dp ...
		jmp	sub_409AE0
sub_401424	endp

; ---------------------------------------------------------------------------
		jmp	loc_435E40

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

; Attributes: thunk


sub_40142E	proc near		; CODE XREF: sub_418890+29p
		jmp	sub_418B10
sub_40142E	endp

; ---------------------------------------------------------------------------
		jmp	loc_433080

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

; Attributes: thunk


sub_401438	proc near		; CODE XREF: ___:0043286Dp
					; sub_4329F0+20p
		jmp	sub_432B20
sub_401438	endp


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

; Attributes: thunk


sub_40143D	proc near		; CODE XREF: ___:00406BD3p
					; ___:00416B58p ...
		jmp	sub_406C00
sub_40143D	endp


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

; Attributes: thunk


sub_401442	proc near		; CODE XREF: sub_404640+370p
					; sub_404640:loc_4049E5p ...
		jmp	sub_404BE0
sub_401442	endp


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

; Attributes: thunk


sub_401447	proc near		; CODE XREF: ___:00404EDBp
					; ___:0040F276p ...
		jmp	sub_40E7A0
sub_401447	endp


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

; Attributes: thunk


sub_40144C	proc near		; CODE XREF: sub_415960+5p
		jmp	sub_416440
sub_40144C	endp


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

; Attributes: thunk


sub_401451	proc near		; CODE XREF: sub_40B520+1Dp
					; ___:0040B94Dp ...
		jmp	sub_40BD20
sub_401451	endp

; ---------------------------------------------------------------------------
		jmp	loc_40B5F0

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

; Attributes: thunk


sub_40145B	proc near		; CODE XREF: ___:0041E9A9p
					; sub_421AF0+1Ap
		jmp	sub_421B60
sub_40145B	endp

; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_2. PRESS KEYPAD	"+" TO EXPAND]

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

; Attributes: thunk


sub_401465	proc near		; CODE XREF: sub_4150F0+29p
		jmp	sub_415BE0
sub_401465	endp


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

; Attributes: thunk


sub_40146A	proc near		; CODE XREF: ___:00408A3Ap
					; ___:00408A63p ...
		jmp	sub_409450
sub_40146A	endp


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

; Attributes: thunk


sub_40146F	proc near		; CODE XREF: sub_404640+30p
					; sub_404640+14Bp ...
		jmp	sub_40A6C0
sub_40146F	endp


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

; Attributes: thunk


sub_401474	proc near		; CODE XREF: ___:00419498p
					; ___:004194AFp
		jmp	sub_419790
sub_401474	endp


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

; Attributes: thunk


sub_401479	proc near		; CODE XREF: sub_4126B0+F8p
		jmp	sub_41BC90
sub_401479	endp


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

; Attributes: noreturn thunk


sub_40147E	proc near		; CODE XREF: sub_413B70+E1p
		jmp	sub_4151D0
sub_40147E	endp


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

; Attributes: thunk


sub_401483	proc near		; CODE XREF: ___:00422A88p
					; ___:00422C53p ...
		jmp	sub_425870
sub_401483	endp


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

; Attributes: thunk


sub_401488	proc near		; CODE XREF: ___:0041B4DAp
					; ___:0041B50Ap
		jmp	sub_41A5B0
sub_401488	endp

; ---------------------------------------------------------------------------
		jmp	loc_431100
; ---------------------------------------------------------------------------
		jmp	loc_42E8E0

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

; Attributes: thunk


sub_401497	proc near		; CODE XREF: sub_40ED70+EAp
		jmp	sub_40EC30
sub_401497	endp

; ---------------------------------------------------------------------------
		jmp	loc_40A6E0
; ---------------------------------------------------------------------------
		jmp	loc_40F140

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

; Attributes: thunk


sub_4014A6	proc near		; CODE XREF: sub_40BD20+16p
					; sub_40BD60+Bp ...
		jmp	sub_40C0C0
sub_4014A6	endp


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

; Attributes: thunk


sub_4014AB	proc near		; CODE XREF: sub_42B1D0+1Dp
		jmp	sub_42B240
sub_4014AB	endp


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

; Attributes: thunk


sub_4014B0	proc near		; CODE XREF: ___:0041CAF7p
					; ___:0041D085p ...
		jmp	sub_41D5D0
sub_4014B0	endp


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

; Attributes: noreturn thunk


sub_4014B5	proc near		; CODE XREF: sub_413220+48p
					; ___:00439997j ...
		jmp	sub_4156C0
sub_4014B5	endp


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

; Attributes: thunk


sub_4014BA	proc near
		jmp	sub_40AE80
sub_4014BA	endp

; ---------------------------------------------------------------------------
		jmp	loc_414D40

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

; Attributes: thunk


sub_4014C4	proc near		; CODE XREF: ___:00426623p sub_426680j ...
		jmp	sub_426560
sub_4014C4	endp


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

; Attributes: thunk


sub_4014C9	proc near		; CODE XREF: sub_4034E0+115p
					; sub_404640+1B8p ...
		jmp	sub_409B80
sub_4014C9	endp


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

; Attributes: noreturn thunk


sub_4014CE	proc near		; CODE XREF: sub_40AC70+7p
		jmp	sub_40AD60
sub_4014CE	endp


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

; Attributes: thunk


sub_4014D3	proc near		; CODE XREF: sub_404B10+9p
					; ___:00404CB5p ...
		jmp	sub_40A740
sub_4014D3	endp


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

; Attributes: thunk


sub_4014D8	proc near		; CODE XREF: ___:0041E741p
					; sub_4218F0+1Ap
		jmp	sub_421960
sub_4014D8	endp


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

; Attributes: thunk


sub_4014DD	proc near		; CODE XREF: sub_41A110+10p
					; sub_41A2B0+47p ...
		jmp	sub_41A500
sub_4014DD	endp


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

; Attributes: noreturn thunk


sub_4014E2	proc near		; CODE XREF: sub_4070B0+24p
		jmp	sub_407290
sub_4014E2	endp


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

; Attributes: thunk


sub_4014E7	proc near		; CODE XREF: ___:0042B0F5p
		jmp	sub_42B1D0
sub_4014E7	endp

; ---------------------------------------------------------------------------
		jmp	loc_427600

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

; Attributes: thunk


sub_4014F1	proc near		; CODE XREF: ___:00416B1Bp
					; ___:00439EB6j ...
		jmp	sub_417540
sub_4014F1	endp


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

; Attributes: thunk


sub_4014F6	proc near		; CODE XREF: sub_415B20+5Fp
		jmp	sub_416510
sub_4014F6	endp


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

; Attributes: thunk


sub_4014FB	proc near		; CODE XREF: sub_424800+Fp
					; sub_424840+1CCp ...
		jmp	sub_424760
sub_4014FB	endp


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

; Attributes: thunk


sub_401500	proc near		; CODE XREF: ___:004283D7p
					; ___:0042849Cp ...
		jmp	sub_409F90
sub_401500	endp

; ---------------------------------------------------------------------------
		jmp	loc_4199B0
; ---------------------------------------------------------------------------
		jmp	loc_432C30
; ---------------------------------------------------------------------------
		jmp	loc_42EC00
; ---------------------------------------------------------------------------
		jmp	loc_42EB10

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

; Attributes: thunk


sub_401519	proc near		; CODE XREF: sub_421F50+8p
		jmp	sub_4223A0
sub_401519	endp

; ---------------------------------------------------------------------------
		jmp	locret_419930

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

; Attributes: thunk


sub_401523	proc near		; CODE XREF: ___:0040CD91p
					; sub_40CF60+143p ...
		jmp	sub_419970
sub_401523	endp


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

; Attributes: thunk


sub_401528	proc near		; CODE XREF: sub_418A70+3p
		jmp	sub_418D00
sub_401528	endp

; ---------------------------------------------------------------------------
		jmp	loc_42B540
; ---------------------------------------------------------------------------
		jmp	loc_432580

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

; Attributes: thunk


sub_401537	proc near		; CODE XREF: ___:0040FFF5p
					; ___:0041252Dp ...
		jmp	sub_414210
sub_401537	endp


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

; Attributes: thunk


sub_40153C	proc near		; CODE XREF: sub_40B520+Bp
					; ___:0040B939p
		jmp	sub_40BE20
sub_40153C	endp


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

; Attributes: thunk


sub_401541	proc near		; CODE XREF: sub_42F540+1Bp
					; sub_431BE0+94p
		jmp	sub_42F6B0
sub_401541	endp


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

; Attributes: noreturn thunk


sub_401546	proc near		; CODE XREF: sub_421ED0+7p
		jmp	sub_422350
sub_401546	endp


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

; Attributes: thunk


sub_40154B	proc near		; CODE XREF: ___:0043285Fp
					; sub_4329F0+Fp
		jmp	sub_432B60
sub_40154B	endp


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

; Attributes: thunk


sub_401550	proc near		; CODE XREF: sub_418940+29p
					; sub_418A20+29p
		jmp	sub_418BC0
sub_401550	endp


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

; Attributes: noreturn thunk


sub_401555	proc near		; CODE XREF: sub_40B170+40p
					; ___:00438B1Aj ...
		jmp	sub_40BCB0
sub_401555	endp

; ---------------------------------------------------------------------------
		jmp	loc_4303B0

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

; Attributes: noreturn thunk


sub_40155F	proc near		; CODE XREF: sub_40BFF0+4p
		jmp	sub_40C200
sub_40155F	endp


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

; Attributes: noreturn thunk


sub_401564	proc near		; CODE XREF: sub_407030+3Cp
		jmp	sub_4071E0
sub_401564	endp

; ---------------------------------------------------------------------------
		jmp	loc_41BC20

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

; Attributes: thunk


sub_40156E	proc near		; CODE XREF: sub_415210+4Fp
					; sub_415B20+11p ...
		jmp	sub_415D70
sub_40156E	endp


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

; Attributes: thunk


sub_401573	proc near		; CODE XREF: ___:00416E8Ap
		jmp	sub_418230
sub_401573	endp


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

; Attributes: noreturn thunk


sub_401578	proc near		; CODE XREF: sub_413670+BEp
					; sub_413670+FCp ...
		jmp	sub_4150F0
sub_401578	endp


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

; Attributes: thunk


sub_40157D	proc near		; CODE XREF: ___:00416D9Fp
		jmp	sub_417BC0
sub_40157D	endp


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

; Attributes: thunk


sub_401582	proc near		; CODE XREF: sub_412900+39p
					; sub_412970+A9p
		jmp	sub_412870
sub_401582	endp

; ---------------------------------------------------------------------------
		jmp	loc_4310D0

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

; Attributes: noreturn thunk


sub_40158C	proc near		; CODE XREF: sub_40A430+16Fp
					; ___:00438A8Aj
		jmp	sub_40A790
sub_40158C	endp


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

; Attributes: noreturn thunk


sub_401591	proc near		; CODE XREF: sub_403FC0+51p
					; ___:00404064p ...
		jmp	sub_4070B0
sub_401591	endp


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

; Attributes: thunk


sub_401596	proc near		; CODE XREF: ___:00408A57p
					; ___:00408A80p ...
		jmp	sub_40B680
sub_401596	endp

; ---------------------------------------------------------------------------
		jmp	loc_431F90
; ---------------------------------------------------------------------------
		jmp	loc_41A180

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

; Attributes: noreturn thunk


sub_4015A5	proc near		; CODE XREF: sub_415FC0+4p
		jmp	sub_416610
sub_4015A5	endp


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

; Attributes: thunk


sub_4015AA	proc near		; CODE XREF: sub_409850+1Ap
					; sub_4098A0+1Ap
		jmp	sub_409910
sub_4015AA	endp

; ---------------------------------------------------------------------------
		jmp	loc_428040
; ---------------------------------------------------------------------------
		jmp	loc_4328F0

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

; Attributes: thunk


sub_4015B9	proc near		; CODE XREF: ___:004191A5p
		jmp	sub_419200
sub_4015B9	endp

; ---------------------------------------------------------------------------
		jmp	loc_4324C0

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

; Attributes: thunk


sub_4015C3	proc near		; CODE XREF: ___:0041D733p
		jmp	sub_41D760
sub_4015C3	endp

; ---------------------------------------------------------------------------
		jmp	loc_432200

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

; Attributes: thunk


sub_4015CD	proc near		; CODE XREF: sub_415340+5p
		jmp	sub_415DA0
sub_4015CD	endp


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

; Attributes: thunk


sub_4015D2	proc near		; CODE XREF: sub_4189B0+5p
					; sub_418AB0+6p ...
		jmp	sub_418CC0
sub_4015D2	endp


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

; Attributes: thunk


sub_4015D7	proc near		; CODE XREF: ___:004055C3p
					; ___:00406E5Cp ...
		jmp	sub_409C80
sub_4015D7	endp


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

; Attributes: thunk


sub_4015DC	proc near		; CODE XREF: ___:00416D5Fp
		jmp	sub_406BA0
sub_4015DC	endp

; ---------------------------------------------------------------------------
		jmp	loc_424350

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

; Attributes: thunk


sub_4015E6	proc near		; CODE XREF: ___:00415E2Ap
		jmp	sub_416660
sub_4015E6	endp


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

; Attributes: thunk


sub_4015EB	proc near		; CODE XREF: ___:0041F0F7p
		jmp	sub_420CD0
sub_4015EB	endp

; ---------------------------------------------------------------------------
		jmp	loc_42B830

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

; Attributes: thunk


sub_4015F5	proc near		; CODE XREF: ___:00427FF3p
		jmp	sub_428020
sub_4015F5	endp


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

; Attributes: noreturn thunk


sub_4015FA	proc near		; CODE XREF: ___:00405B04p
					; sub_40D580+120p ...
		jmp	sub_41FF90
sub_4015FA	endp


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

; Attributes: thunk


sub_4015FF	proc near		; CODE XREF: sub_4314C0+20p
					; sub_4314C0+32p
		jmp	sub_433670
sub_4015FF	endp


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

; Attributes: thunk


sub_401604	proc near		; CODE XREF: ___:00431435p
		jmp	sub_42FF30
sub_401604	endp


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

; Attributes: noreturn thunk


sub_401609	proc near
		jmp	sub_425980
sub_401609	endp


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

; Attributes: thunk


sub_40160E	proc near		; CODE XREF: sub_4163E0+8p
		jmp	sub_4167B0
sub_40160E	endp

; ---------------------------------------------------------------------------
		jmp	loc_41E660
; ---------------------------------------------------------------------------
		jmp	loc_41AAA0

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

; Attributes: thunk


sub_40161D	proc near		; CODE XREF: sub_40AEA0p ___:004300F2p
		jmp	sub_431300
sub_40161D	endp


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

; Attributes: thunk


sub_401622	proc near		; CODE XREF: sub_4070F0+1Ap
					; sub_418890+1Ap
		jmp	sub_407220
sub_401622	endp

; ---------------------------------------------------------------------------
		jmp	loc_416C90
; ---------------------------------------------------------------------------
		jmp	loc_42F070

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

; Attributes: thunk


sub_401631	proc near		; CODE XREF: sub_422240+5Fp
		jmp	sub_4225E0
sub_401631	endp


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

; Attributes: thunk


sub_401636	proc near		; CODE XREF: ___:0041A20Ap
		jmp	sub_41B060
sub_401636	endp


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

; Attributes: thunk


sub_40163B	proc near		; CODE XREF: sub_4314C0:loc_4314FEp
		jmp	sub_431560
sub_40163B	endp


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

; Attributes: noreturn thunk


sub_401640	proc near		; CODE XREF: sub_432E60+12p
					; sub_4335B0+51p
		jmp	sub_430520
sub_401640	endp


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

; Attributes: thunk


sub_401645	proc near		; CODE XREF: ___:00416DAFp
		jmp	sub_417C60
sub_401645	endp

; ---------------------------------------------------------------------------
		jmp	loc_4301F0

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

; Attributes: thunk


sub_40164F	proc near		; CODE XREF: sub_40A850+8p
		jmp	sub_40A8A0
sub_40164F	endp


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

; Attributes: thunk


sub_401654	proc near		; CODE XREF: ___:00412F4Ep
		jmp	sub_4130E0
sub_401654	endp


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

; Attributes: noreturn thunk


sub_401659	proc near		; CODE XREF: sub_42FAA0+ADp
					; ___:004322B0p ...
		jmp	sub_42F4F0
sub_401659	endp

; ---------------------------------------------------------------------------
		db 0E9h	; 
		db  5Dh	; ]
		db 0A1h	; 
		db    2
		db    0

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

; Attributes: thunk


sub_401663	proc near		; CODE XREF: ___:0042B9DEp
		jmp	sub_42B480
sub_401663	endp

; ---------------------------------------------------------------------------
		jmp	loc_406850
; ---------------------------------------------------------------------------
		jmp	loc_42E350

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

; Attributes: thunk


sub_401672	proc near		; CODE XREF: ___:004073CAp
		jmp	sub_407570
sub_401672	endp


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

; Attributes: thunk


sub_401677	proc near		; CODE XREF: sub_422650+3Cp
		jmp	sub_422790
sub_401677	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B4B0

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

; Attributes: thunk


sub_401681	proc near		; CODE XREF: sub_4034E0+BBp
					; ___:00406ECDp ...
		jmp	sub_4036B0
sub_401681	endp


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

; Attributes: thunk


sub_401686	proc near		; CODE XREF: ___:0042EDB0p
					; ___:0042EE2Ep ...
		jmp	sub_432D80
sub_401686	endp


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

; Attributes: thunk


sub_40168B	proc near		; CODE XREF: sub_409490+10p
		jmp	sub_409530
sub_40168B	endp


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

; Attributes: thunk


sub_401690	proc near		; CODE XREF: sub_40A430+4Ap
		jmp	sub_40A760
sub_401690	endp


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

; Attributes: thunk


sub_401695	proc near		; CODE XREF: ___:00416DCFp
		jmp	sub_40F600
sub_401695	endp

; ---------------------------------------------------------------------------
		jmp	loc_4320E0
; ---------------------------------------------------------------------------
		jmp	loc_42E650

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

; Attributes: thunk


sub_4016A4	proc near		; CODE XREF: sub_40BEC0+9p
					; sub_40C120+18p
		jmp	sub_40C2A0
sub_4016A4	endp


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

; Attributes: thunk


sub_4016A9	proc near		; CODE XREF: ___:0041DAB3p
		jmp	sub_42E880
sub_4016A9	endp


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

; Attributes: thunk


sub_4016AE	proc near		; CODE XREF: sub_4034E0+CCp
					; sub_404640+EDp ...
		jmp	sub_40A630
sub_4016AE	endp


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

; Attributes: thunk


sub_4016B3	proc near		; CODE XREF: ___:00416DEFp
		jmp	sub_417E20
sub_4016B3	endp


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

; Attributes: thunk


sub_4016B8	proc near		; CODE XREF: sub_4245F0+7Ep
					; sub_4245F0+92p ...
		jmp	sub_4244C0
sub_4016B8	endp


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

; Attributes: thunk


sub_4016BD	proc near		; CODE XREF: sub_4126B0+E0p
					; sub_4137E0+CEp ...
		jmp	sub_409E70
sub_4016BD	endp

; ---------------------------------------------------------------------------
		jmp	loc_42E130
; ---------------------------------------------------------------------------
		jmp	loc_42E8B0

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

; Attributes: thunk


sub_4016CC	proc near		; CODE XREF: ___:00415099p
		jmp	sub_4159D0
sub_4016CC	endp

; ---------------------------------------------------------------------------
		jmp	loc_426620

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

; Attributes: thunk


sub_4016D6	proc near		; CODE XREF: sub_409600+58p
					; sub_409600+82p ...
		jmp	sub_409850
sub_4016D6	endp

; ---------------------------------------------------------------------------
		jmp	loc_426F20

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

; Attributes: noreturn thunk


sub_4016E0	proc near		; CODE XREF: ___:0041E912p
		jmp	sub_421AB0
sub_4016E0	endp

; ---------------------------------------------------------------------------
		jmp	loc_41AE50
; ---------------------------------------------------------------------------
		jmp	loc_4118E0

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

; Attributes: thunk


sub_4016EF	proc near		; CODE XREF: sub_40A850+10p
		jmp	sub_40A8C0
sub_4016EF	endp


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

; Attributes: noreturn thunk


sub_4016F4	proc near
		jmp	sub_4351E0
sub_4016F4	endp


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

; Attributes: thunk


sub_4016F9	proc near		; CODE XREF: sub_418330+7Bp
					; sub_418330+C5p ...
		jmp	sub_418AE0
sub_4016F9	endp


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

; Attributes: thunk


sub_4016FE	proc near		; CODE XREF: sub_4147D0+FCp
		jmp	sub_4149A0
sub_4016FE	endp


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

; Attributes: thunk


sub_401703	proc near		; CODE XREF: ___:0041E731p
		jmp	sub_421A10
sub_401703	endp


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

; Attributes: thunk


sub_401708	proc near		; CODE XREF: sub_40AE80p
					; ___:loc_4300D5p
		jmp	sub_431280
sub_401708	endp


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

; Attributes: thunk


sub_40170D	proc near		; CODE XREF: sub_409600+91p
					; sub_412BC0+Dp
		jmp	sub_4097D0
sub_40170D	endp

; ---------------------------------------------------------------------------
		jmp	loc_40C400
; ---------------------------------------------------------------------------
		jmp	loc_40ADE0

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

; Attributes: noreturn thunk


sub_40171C	proc near		; CODE XREF: sub_4139B0+4Ep
		jmp	sub_415070
sub_40171C	endp


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

; Attributes: thunk


sub_401721	proc near		; CODE XREF: sub_40F600+13Dp
		jmp	sub_412B90
sub_401721	endp


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

; Attributes: thunk


sub_401726	proc near		; CODE XREF: ___:0040F1C0p
		jmp	sub_40E220
sub_401726	endp


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

; Attributes: thunk


sub_40172B	proc near		; CODE XREF: ___:004150C1p
		jmp	sub_415AA0
sub_40172B	endp


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

; Attributes: thunk


sub_401730	proc near		; CODE XREF: ___:004276E8p
		jmp	sub_4277C0
sub_401730	endp

; ---------------------------------------------------------------------------
		jmp	loc_425410
; ---------------------------------------------------------------------------
		jmp	loc_41AEF0

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

; Attributes: thunk


sub_40173F	proc near		; CODE XREF: sub_4070F0+48p
					; sub_4070F0:loc_407175p
		jmp	sub_4072F0
sub_40173F	endp


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

; Attributes: thunk


sub_401744	proc near		; CODE XREF: sub_40AE10+2Cp
					; sub_418330+8Fp ...
		jmp	sub_40AF40
sub_401744	endp


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

; Attributes: thunk


sub_401749	proc near		; CODE XREF: sub_4036D0+2A5p
					; sub_4036D0+2B5p ...
		jmp	sub_403D90
sub_401749	endp


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

; Attributes: thunk


sub_40174E	proc near		; CODE XREF: sub_42A5F0+7Fp
					; ___:0042AB28p
		jmp	sub_42A400
sub_40174E	endp


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

; Attributes: thunk


sub_401753	proc near		; CODE XREF: sub_415990+16p
					; sub_4159D0+Bp ...
		jmp	sub_416530
sub_401753	endp


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

; Attributes: thunk


sub_401758	proc near		; CODE XREF: sub_40AF40+10p
					; ___:0042F2C1p ...
		jmp	sub_430180
sub_401758	endp


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

; Attributes: thunk


sub_40175D	proc near		; CODE XREF: ___:0040AF14p
		jmp	sub_4335B0
sub_40175D	endp


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

; Attributes: thunk


sub_401762	proc near		; CODE XREF: sub_418D80+5Fp
		jmp	sub_419010
sub_401762	endp


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

; Attributes: noreturn thunk


sub_401767	proc near		; CODE XREF: ___:0041886Cp
		jmp	sub_418490
sub_401767	endp


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

; Attributes: thunk


sub_40176C	proc near		; CODE XREF: ___:00416A1Bp
					; ___:00416CE3p ...
		jmp	sub_416CC0
sub_40176C	endp

; ---------------------------------------------------------------------------
		jmp	loc_420DC0

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

; Attributes: thunk


sub_401776	proc near		; CODE XREF: ___:00416DBFp
		jmp	sub_417D30
sub_401776	endp


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

; Attributes: thunk


sub_40177B	proc near		; CODE XREF: sub_42F840+5Dp
					; sub_430810+2Cp ...
		jmp	sub_430FE0
sub_40177B	endp

; ---------------------------------------------------------------------------
		jmp	loc_42E2A0

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

; Attributes: thunk


sub_401785	proc near		; CODE XREF: ___:00426080p
		jmp	sub_427590
sub_401785	endp


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

; Attributes: thunk


sub_40178A	proc near		; CODE XREF: ___:00425467p
		jmp	sub_425270
sub_40178A	endp


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

; Attributes: thunk


sub_40178F	proc near		; CODE XREF: ___:00416E9Ap
		jmp	sub_418260
sub_40178F	endp

; ---------------------------------------------------------------------------
		jmp	loc_431F10
; ---------------------------------------------------------------------------
		jmp	loc_42EEB0

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

; Attributes: thunk


sub_40179E	proc near		; CODE XREF: ___:00427FC3p sub_428020j ...
		jmp	sub_427EF0
sub_40179E	endp


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

; Attributes: thunk


sub_4017A3	proc near		; CODE XREF: ___:00416ACBp
					; ___:00416C93p ...
		jmp	sub_416C60
sub_4017A3	endp

; ---------------------------------------------------------------------------
		jmp	loc_42A100

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

; Attributes: thunk


sub_4017AD	proc near		; CODE XREF: sub_42FF50+D7p
		jmp	sub_431730
sub_4017AD	endp


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

; Attributes: thunk


sub_4017B2	proc near		; CODE XREF: sub_40AE80+5j
					; ___:loc_4300DDp
		jmp	sub_431380
sub_4017B2	endp

; ---------------------------------------------------------------------------
		jmp	loc_430130

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

; Attributes: thunk


sub_4017BC	proc near		; CODE XREF: sub_4253E0+10p
					; sub_4254E0+3Dp
		jmp	sub_4254B0
sub_4017BC	endp


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

; Attributes: thunk


sub_4017C1	proc near		; CODE XREF: sub_40AEA0+5j
					; ___:loc_4300E5p ...
		jmp	sub_4313A0
sub_4017C1	endp

; ---------------------------------------------------------------------------
		jmp	loc_404C70

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

; Attributes: thunk


sub_4017CB	proc near		; CODE XREF: sub_424800+1Ep
					; sub_424840+A6p ...
		jmp	sub_424790
sub_4017CB	endp


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

; Attributes: thunk


sub_4017D0	proc near		; CODE XREF: ___:00416A8Bp
					; ___:00439F34j ...
		jmp	sub_417960
sub_4017D0	endp


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

; Attributes: thunk


sub_4017D5	proc near		; CODE XREF: sub_416120+11p
					; ___:00416147p ...
		jmp	sub_4166F0
sub_4017D5	endp


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

; Attributes: thunk


sub_4017DA	proc near		; CODE XREF: sub_415910+3p
					; ___:0041616Fp ...
		jmp	sub_4163A0
sub_4017DA	endp


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

; Attributes: noreturn thunk


sub_4017DF	proc near		; CODE XREF: sub_415520+5Ep
					; sub_415F30+32p
		jmp	sub_415E70
sub_4017DF	endp


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

; Attributes: thunk


sub_4017E4	proc near		; CODE XREF: sub_4034E0+DBp
					; sub_403FC0+3Fp ...
		jmp	sub_40A720
sub_4017E4	endp


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

; Attributes: thunk


sub_4017E9	proc near		; CODE XREF: ___:00421DAAp
		jmp	sub_422370
sub_4017E9	endp


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

; Attributes: noreturn thunk


sub_4017EE	proc near
		jmp	sub_40B210
sub_4017EE	endp


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

; Attributes: thunk


sub_4017F3	proc near		; CODE XREF: sub_406890+205p
		jmp	sub_41B820
sub_4017F3	endp

; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_8. PRESS KEYPAD	"+" TO EXPAND]

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

; Attributes: thunk


sub_4017FD	proc near		; CODE XREF: ___:00426A13p
		jmp	sub_426A40
sub_4017FD	endp


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

; Attributes: thunk


sub_401802	proc near		; CODE XREF: ___:0041E75Fp
					; ___:0041E7D9p ...
		jmp	sub_421A80
sub_401802	endp


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

; Attributes: thunk


sub_401807	proc near		; CODE XREF: sub_40A110+7p
		jmp	sub_40A130
sub_401807	endp


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

; Attributes: noreturn thunk


sub_40180C	proc near		; CODE XREF: sub_40B430+76p
		jmp	sub_40B390
sub_40180C	endp

; ---------------------------------------------------------------------------
		jmp	loc_425020

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

; Attributes: noreturn thunk


sub_401816	proc near		; CODE XREF: ___:0041E7EEp
					; ___:0043B183j
		jmp	sub_4218F0
sub_401816	endp

; ---------------------------------------------------------------------------
		jmp	loc_426F20

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

; Attributes: thunk


sub_401820	proc near		; CODE XREF: ___:00416DDFp
		jmp	sub_417DF0
sub_401820	endp

; ---------------------------------------------------------------------------
		jmp	loc_42EC20

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

; Attributes: thunk


sub_40182A	proc near		; CODE XREF: ___:0041EA1Cp
					; sub_4225B0+3p
		jmp	sub_421C50
sub_40182A	endp


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

; Attributes: thunk


sub_40182F	proc near		; CODE XREF: ___:00426730p
		jmp	sub_426960
sub_40182F	endp


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

; Attributes: thunk


sub_401834	proc near		; CODE XREF: ___:0042436Dp
					; sub_424840+135p
		jmp	sub_4243A0
sub_401834	endp


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

; Attributes: thunk


sub_401839	proc near		; CODE XREF: sub_40BE40+3p
					; ___:0040BF0Fp ...
		jmp	sub_40C080
sub_401839	endp


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

; Attributes: thunk


sub_40183E	proc near		; CODE XREF: sub_4070F0+36p
					; sub_4070F0+72p ...
		jmp	sub_407340
sub_40183E	endp


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

; Attributes: noreturn thunk


sub_401843	proc near		; CODE XREF: ___:00413181p
		jmp	sub_415680
sub_401843	endp


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

; Attributes: thunk


sub_401848	proc near		; CODE XREF: ___:0040B9D1p
					; ___:0040BA98p ...
		jmp	sub_412AA0
sub_401848	endp


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

; Attributes: thunk


sub_40184D	proc near		; CODE XREF: ___:00431FEFp
					; ___:004320FFp ...
		jmp	sub_431B30
sub_40184D	endp


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

; Attributes: thunk


sub_401852	proc near		; DATA XREF: ___:004322AAo
					; ___:00432410o
		jmp	sub_431BA0
sub_401852	endp


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

; Attributes: noreturn thunk


sub_401857	proc near		; CODE XREF: sub_416360+7p
		jmp	sub_416740
sub_401857	endp


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

; Attributes: thunk


sub_40185C	proc near		; CODE XREF: sub_418330+34p
		jmp	sub_404C20
sub_40185C	endp


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

; Attributes: thunk


sub_401861	proc near		; CODE XREF: sub_4034E0+7Ap
					; sub_4034E0+9Ep ...
		jmp	sub_409B40
sub_401861	endp


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

; Attributes: thunk


sub_401866	proc near		; CODE XREF: sub_420530+152p
		jmp	sub_4207A0
sub_401866	endp


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

; Attributes: thunk


sub_40186B	proc near		; CODE XREF: ___:0041A228p
					; ___:0041B013p ...
		jmp	sub_41B040
sub_40186B	endp

; ---------------------------------------------------------------------------
		jmp	loc_429D70
; ---------------------------------------------------------------------------
		jmp	loc_41C0E0

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

; Attributes: thunk


sub_40187A	proc near		; CODE XREF: ___:00416A4Bp
					; ___:00439F6Cj ...
		jmp	sub_416D10
sub_40187A	endp


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

; Attributes: thunk


sub_40187F	proc near		; CODE XREF: ___:00410177p
					; sub_41FD90+4Cp ...
		jmp	sub_41FD50
sub_40187F	endp


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

; Attributes: thunk


sub_401884	proc near		; CODE XREF: sub_429AA0+9Dp
		jmp	sub_428160
sub_401884	endp


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

; Attributes: thunk


sub_401889	proc near		; CODE XREF: ___:0042C005p
		jmp	sub_427DC0
sub_401889	endp

; ---------------------------------------------------------------------------
		jmp	loc_42A150

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

; Attributes: thunk


sub_401893	proc near		; CODE XREF: ___:0041B58Dp
		jmp	sub_41AD30
sub_401893	endp


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

; Attributes: thunk


sub_401898	proc near
		jmp	sub_432ED0
sub_401898	endp


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

; Attributes: thunk


sub_40189D	proc near		; CODE XREF: ___:004141C5p
					; ___:00414EF2p
		jmp	sub_413DA0
sub_40189D	endp


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

; Attributes: thunk


sub_4018A2	proc near		; CODE XREF: ___:00412196p
		jmp	sub_40A110
sub_4018A2	endp


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

; Attributes: thunk


sub_4018A7	proc near		; CODE XREF: ___:0041EC0Bp
		jmp	sub_4203D0
sub_4018A7	endp

; ---------------------------------------------------------------------------
		jmp	loc_431D10

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

; Attributes: thunk


sub_4018B1	proc near		; CODE XREF: sub_40A910+14p
		jmp	sub_40ABC0
sub_4018B1	endp


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

; Attributes: thunk


sub_4018B6	proc near		; CODE XREF: sub_413510+B4p
					; ___:00414B90p ...
		jmp	sub_415620
sub_4018B6	endp


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

; Attributes: thunk


sub_4018BB	proc near		; CODE XREF: sub_41A2B0+6Dp
					; sub_41A2B0+1B5p
		jmp	sub_41AF60
sub_4018BB	endp


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

; Attributes: thunk


sub_4018C0	proc near		; CODE XREF: ___:004310DAp
		jmp	sub_430A90
sub_4018C0	endp


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

; Attributes: thunk


sub_4018C5	proc near		; CODE XREF: sub_418E90+5Fp
		jmp	sub_419030
sub_4018C5	endp


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

; Attributes: thunk


sub_4018CA	proc near		; CODE XREF: ___:00416A9Bp
					; ___:00439F26j ...
		jmp	sub_4178F0
sub_4018CA	endp

; ---------------------------------------------------------------------------
		jmp	loc_419DD0
; ---------------------------------------------------------------------------
		jmp	loc_41A0E0

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

; Attributes: noreturn thunk


sub_4018D9	proc near		; CODE XREF: ___:0041E6A6p
		jmp	sub_4218B0
sub_4018D9	endp


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

; Attributes: thunk


sub_4018DE	proc near		; CODE XREF: ___:0042C135p
		jmp	sub_4299C0
sub_4018DE	endp


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

; Attributes: noreturn thunk


sub_4018E3	proc near		; CODE XREF: sub_422130+7p
		jmp	sub_422520
sub_4018E3	endp


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

; Attributes: thunk


sub_4018E8	proc near		; CODE XREF: sub_421FB0+9p
					; sub_422410+18p
		jmp	sub_422590
sub_4018E8	endp


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

; Attributes: thunk


sub_4018ED	proc near		; CODE XREF: sub_4221B0+8p
		jmp	sub_422570
sub_4018ED	endp


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

; Attributes: thunk


sub_4018F2	proc near		; CODE XREF: sub_4133D0+43p
					; sub_4147D0+4Fp ...
		jmp	sub_415730
sub_4018F2	endp

; ---------------------------------------------------------------------------
		jmp	loc_430A10

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

; Attributes: noreturn thunk


sub_4018FC	proc near		; CODE XREF: sub_4219D0+1Fp
		jmp	sub_421D50
sub_4018FC	endp


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

; Attributes: noreturn thunk


sub_401901	proc near		; CODE XREF: sub_4218B0+11p
					; sub_421D50+1Fp
		jmp	sub_421E80
sub_401901	endp


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

; Attributes: noreturn thunk


sub_401906	proc near		; CODE XREF: sub_40B390+6Dp
		jmp	sub_40BD90
sub_401906	endp


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

; Attributes: noreturn thunk


sub_40190B	proc near		; CODE XREF: sub_409450+13p
		jmp	sub_409580
sub_40190B	endp

; ---------------------------------------------------------------------------
		jmp	loc_4365C0
; ---------------------------------------------------------------------------
		jmp	loc_41B010
; ---------------------------------------------------------------------------
		jmp	loc_416CE0

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

; Attributes: thunk


sub_40191F	proc near		; CODE XREF: ___:00413B31p
		jmp	sub_4139B0
sub_40191F	endp


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

; Attributes: thunk


sub_401924	proc near		; CODE XREF: ___:00413193p
					; sub_413220+32p
		jmp	sub_4154D0
sub_401924	endp


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

; Attributes: thunk


sub_401929	proc near		; CODE XREF: ___:00416B4Bp
					; ___:00439E8Cj ...
		jmp	sub_417020
sub_401929	endp

; ---------------------------------------------------------------------------
		jmp	loc_4310A0
; ---------------------------------------------------------------------------
		jmp	loc_4334F0

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

; Attributes: thunk


sub_401938	proc near		; CODE XREF: ___:0041C701p
					; ___:0041C880p ...
		jmp	sub_420E10
sub_401938	endp

; ---------------------------------------------------------------------------
		jmp	loc_40A400

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

; Attributes: thunk


sub_401942	proc near		; CODE XREF: ___:00404EF3p
					; sub_40ED70+D2p ...
		jmp	sub_40EF90
sub_401942	endp


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

; Attributes: noreturn thunk


sub_401947	proc near		; CODE XREF: sub_4218F0+34p
					; sub_422240+67p
		jmp	sub_421ED0
sub_401947	endp


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

; Attributes: thunk


sub_40194C	proc near		; CODE XREF: ___:00405867p
		jmp	sub_4066E0
sub_40194C	endp

; ---------------------------------------------------------------------------
		jmp	loc_432360
; ---------------------------------------------------------------------------


loc_401956:				; DATA XREF: ___:0041FC39o
		jmp	loc_41FB30

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

; Attributes: thunk


sub_40195B	proc near		; CODE XREF: ___:0041A19Ep
					; sub_41A2B0+Bp ...
		jmp	sub_41A290
sub_40195B	endp


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

; Attributes: thunk


sub_401960	proc near		; CODE XREF: ___:0041AB86p
					; ___:0041AC66p
		jmp	sub_41A890
sub_401960	endp


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

; Attributes: noreturn thunk


sub_401965	proc near
		jmp	sub_419220
sub_401965	endp


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

; Attributes: thunk


sub_40196A	proc near		; CODE XREF: sub_411910+2Ep
					; sub_411B10+3p
		jmp	sub_411A50
sub_40196A	endp


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

; Attributes: thunk


sub_40196F	proc near		; CODE XREF: ___:0041E755p
					; ___:0041E7CFp ...
		jmp	sub_4219A0
sub_40196F	endp


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

; Attributes: thunk


sub_401974	proc near		; CODE XREF: sub_409450+4p
					; sub_409600+1Fp ...
		jmp	sub_409500
sub_401974	endp


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

; Attributes: thunk


sub_401979	proc near
		jmp	sub_409A30
sub_401979	endp


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

; Attributes: thunk


sub_40197E	proc near		; CODE XREF: ___:0041F880p
					; sub_429AA0+37p
		jmp	sub_41FE50
sub_40197E	endp


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

; Attributes: thunk


sub_401983	proc near		; CODE XREF: sub_413510+4Ap
					; ___:00414B3Fp ...
		jmp	sub_415420
sub_401983	endp


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

; Attributes: thunk


sub_401988	proc near		; CODE XREF: sub_40A430+A8p
		jmp	sub_40A850
sub_401988	endp


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

; Attributes: thunk


sub_40198D	proc near		; CODE XREF: ___:0040CBF1p
		jmp	sub_40CE60
sub_40198D	endp


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

; Attributes: thunk


sub_401992	proc near		; CODE XREF: ___:00433405p
					; ___:00433505p
		jmp	sub_433160
sub_401992	endp


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

; Attributes: thunk


sub_401997	proc near		; CODE XREF: sub_4218F0+29p
		jmp	sub_421DF0
sub_401997	endp

; ---------------------------------------------------------------------------
		jmp	loc_42ECF0
; ---------------------------------------------------------------------------
		jmp	loc_42ECC0

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

; Attributes: thunk


sub_4019A6	proc near		; CODE XREF: sub_40A790+Dp
					; sub_40A9F0+91p
		jmp	sub_40A910
sub_4019A6	endp


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

; Attributes: thunk


sub_4019AB	proc near		; CODE XREF: sub_422050+23p
					; sub_422410+11p
		jmp	sub_4225B0
sub_4019AB	endp

; ---------------------------------------------------------------------------
		jmp	loc_41AB20

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

; Attributes: thunk


sub_4019B5	proc near		; CODE XREF: sub_403FC0+2Cp
					; ___:0040403Fp ...
		jmp	sub_4034E0
sub_4019B5	endp


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

; Attributes: thunk


sub_4019BA	proc near		; CODE XREF: sub_422750+6p
		jmp	sub_4227C0
sub_4019BA	endp

; ---------------------------------------------------------------------------
		jmp	loc_416C30
; ---------------------------------------------------------------------------
		jmp	loc_40FD70

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

; Attributes: noreturn thunk


sub_4019C9	proc near		; CODE XREF: sub_407410+4p
		jmp	sub_407540
sub_4019C9	endp


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

; Attributes: thunk


sub_4019CE	proc near		; CODE XREF: ___:0040B629p
					; ___:0040BA46p ...
		jmp	sub_40B520
sub_4019CE	endp


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

; Attributes: thunk


sub_4019D3	proc near		; CODE XREF: ___:00410A54p
					; ___:00410DCAp
		jmp	sub_411B10
sub_4019D3	endp

; ---------------------------------------------------------------------------
		jmp	loc_432940

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

; Attributes: thunk


sub_4019DD	proc near		; CODE XREF: sub_4144D0+CEp
		jmp	sub_414640
sub_4019DD	endp

; ---------------------------------------------------------------------------
		jmp	loc_42B880
; ---------------------------------------------------------------------------
		jmp	loc_41D730

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

; Attributes: thunk


sub_4019EC	proc near		; CODE XREF: sub_421A10+3p
		jmp	sub_421F30
sub_4019EC	endp


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

; Attributes: noreturn thunk


sub_4019F1	proc near		; CODE XREF: ___:00416D8Fp
		jmp	sub_40B0B0
sub_4019F1	endp


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

; Attributes: noreturn thunk


sub_4019F6	proc near
		jmp	sub_4132E0
sub_4019F6	endp


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

; Attributes: thunk


sub_4019FB	proc near		; CODE XREF: ___:0041EAD7p
		jmp	sub_4200F0
sub_4019FB	endp

; ---------------------------------------------------------------------------
		jmp	loc_421850
; ---------------------------------------------------------------------------
		jmp	loc_427650

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

; Attributes: noreturn thunk


sub_401A0A	proc near
		jmp	sub_411B40
sub_401A0A	endp


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

; Attributes: thunk


sub_401A0F	proc near		; CODE XREF: sub_4331D0+92p
		jmp	sub_430940
sub_401A0F	endp

; ---------------------------------------------------------------------------
		jmp	loc_427FC0
; ---------------------------------------------------------------------------
		jmp	loc_426A10

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

; Attributes: noreturn thunk


sub_401A1E	proc near		; CODE XREF: sub_421DF0+32p
		jmp	sub_422240
sub_401A1E	endp


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

; Attributes: thunk


sub_401A23	proc near		; CODE XREF: ___:00416ADBp
					; ___:00416C33p ...
		jmp	sub_416C00
sub_401A23	endp


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

; Attributes: thunk


sub_401A28	proc near		; CODE XREF: ___:00423A04p
					; ___:004272F8p ...
		jmp	sub_420D00
sub_401A28	endp


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

; Attributes: thunk


sub_401A2D	proc near		; CODE XREF: sub_422210+Ap
		jmp	sub_422620
sub_401A2D	endp


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

; Attributes: thunk


sub_401A32	proc near		; CODE XREF: ___:00412ECFp
					; ___:00412F84p ...
		jmp	sub_404640
sub_401A32	endp


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

; Attributes: thunk


sub_401A37	proc near		; CODE XREF: sub_409450+1Ap
					; sub_409530+4p ...
		jmp	sub_4094C0
sub_401A37	endp

; ---------------------------------------------------------------------------
		jmp	loc_40FD70
; ---------------------------------------------------------------------------
		jmp	loc_4266A0
; ---------------------------------------------------------------------------
		jmp	loc_409D50

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

; Attributes: thunk


sub_401A4B	proc near		; CODE XREF: sub_415AA0+1Ep
		jmp	sub_416550
sub_401A4B	endp


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

; Attributes: thunk


sub_401A50	proc near		; CODE XREF: ___:0042F2F0p
					; sub_430F00+36p ...
		jmp	sub_430340
sub_401A50	endp


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

; Attributes: thunk


sub_401A55	proc near		; CODE XREF: sub_4137E0+3Ep
		jmp	sub_433900
sub_401A55	endp


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

; Attributes: thunk


sub_401A5A	proc near		; CODE XREF: sub_4149A0+3p
		jmp	sub_4149D0
sub_401A5A	endp


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

; Attributes: thunk


sub_401A5F	proc near		; CODE XREF: ___:004081DDp
					; ___:0040866Ep
		jmp	sub_409490
sub_401A5F	endp

; ---------------------------------------------------------------------------
		jmp	loc_4263D0

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

; Attributes: noreturn thunk


sub_401A69	proc near		; CODE XREF: ___:0041D9DDp
		jmp	sub_42C810
sub_401A69	endp


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

; Attributes: thunk


sub_401A6E	proc near		; CODE XREF: sub_420530+191p
					; sub_4227C0+3p ...
		jmp	sub_4207C0
sub_401A6E	endp

; ---------------------------------------------------------------------------
		jmp	loc_42EFF0

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

; Attributes: thunk


sub_401A78	proc near		; CODE XREF: sub_4225E0+5p
		jmp	sub_422750
sub_401A78	endp


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

; Attributes: thunk


sub_401A7D	proc near		; CODE XREF: ___:00416E4Ap
		jmp	sub_418100
sub_401A7D	endp


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

; Attributes: thunk


sub_401A82	proc near		; CODE XREF: sub_407220+5p
					; sub_407310+6p ...
		jmp	sub_407460
sub_401A82	endp


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

; Attributes: thunk


sub_401A87	proc near		; CODE XREF: sub_4034E0+90p
					; ___:0040507Fp ...
		jmp	sub_40A6A0
sub_401A87	endp


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

; Attributes: thunk


sub_401A8C	proc near		; CODE XREF: ___:0041DB2Fp
					; ___:0041F45Fp
		jmp	sub_41FD90
sub_401A8C	endp


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

; Attributes: thunk


sub_401A91	proc near		; CODE XREF: ___:00431DCAp
		jmp	sub_42F840
sub_401A91	endp


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

; Attributes: noreturn thunk


sub_401A96	proc near		; CODE XREF: sub_415490+1Fp
		jmp	sub_415DD0
sub_401A96	endp


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

; Attributes: thunk


sub_401A9B	proc near		; CODE XREF: sub_4034E0+E5p
					; sub_409E70+Fp ...
		jmp	sub_409DA0
sub_401A9B	endp


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

; Attributes: thunk


sub_401AA0	proc near		; CODE XREF: sub_431560+17p
					; sub_431560+33p
		jmp	sub_433710
sub_401AA0	endp

; ---------------------------------------------------------------------------
		jmp	loc_433480
; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_10. PRESS KEYPAD "+" TO	EXPAND]
; ---------------------------------------------------------------------------
		jmp	loc_426A10

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

; Attributes: thunk


sub_401AB4	proc near		; CODE XREF: sub_424E90+E5p
					; sub_424E90+120p
		jmp	sub_424D40
sub_401AB4	endp

; ---------------------------------------------------------------------------
		jmp	loc_411FE0
; ---------------------------------------------------------------------------


loc_401ABE:				; DATA XREF: ___:0041FB33o
		jmp	loc_41FA90

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

; Attributes: thunk


sub_401AC3	proc near		; CODE XREF: sub_4070F0+Bp
		jmp	sub_4072D0
sub_401AC3	endp

; ---------------------------------------------------------------------------
		jmp	loc_432BA0
; ---------------------------------------------------------------------------
		jmp	loc_40B8D0

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

; Attributes: thunk


sub_401AD2	proc near		; CODE XREF: sub_403EE0+2Bp
					; sub_403EE0+3Bp ...
		jmp	sub_403D10
sub_401AD2	endp


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

; Attributes: thunk


sub_401AD7	proc near		; CODE XREF: sub_413510+66p
					; sub_413510+CAp ...
		jmp	sub_415650
sub_401AD7	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B780

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

; Attributes: noreturn thunk


sub_401AE1	proc near
		jmp	sub_4227F0
sub_401AE1	endp


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

; Attributes: noreturn thunk


sub_401AE6	proc near		; CODE XREF: ___:00416B2Bp
					; ___:00439EA8j ...
		jmp	sub_40B170
sub_401AE6	endp


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

; Attributes: thunk


sub_401AEB	proc near		; CODE XREF: ___:00421764p
					; ___:0042179Ep
		jmp	sub_4215D0
sub_401AEB	endp


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

; Attributes: thunk


sub_401AF0	proc near		; CODE XREF: sub_404BE0+15p
		jmp	sub_4070F0
sub_401AF0	endp

; ---------------------------------------------------------------------------
		jmp	loc_41A0E0

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

; Attributes: noreturn thunk


sub_401AFA	proc near		; CODE XREF: ___:00416F0Fp
		jmp	sub_418900
sub_401AFA	endp

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


loc_401AFF:				; CODE XREF: ___:00438C76j
		jmp	loc_40CAF0
; ---------------------------------------------------------------------------
		jmp	loc_429D70

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

; Attributes: noreturn thunk


sub_401B09	proc near		; CODE XREF: sub_416FB0+28p
		jmp	sub_418890
sub_401B09	endp


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

; Attributes: noreturn thunk


sub_401B0E	proc near		; CODE XREF: ___:004319E7p
		jmp	sub_431A20
sub_401B0E	endp


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

; Attributes: thunk


sub_401B13	proc near		; CODE XREF: sub_42FF50+Bp
		jmp	sub_4303D0
sub_401B13	endp


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

; Attributes: thunk


sub_401B18	proc near
		jmp	sub_40AEA0
sub_401B18	endp


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

; Attributes: thunk


sub_401B1D	proc near		; CODE XREF: ___:00418C7Bp
					; sub_418E90+28p ...
		jmp	sub_418F50
sub_401B1D	endp

; ---------------------------------------------------------------------------
		jmp	loc_42B4F0

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

; Attributes: thunk


sub_401B27	proc near		; CODE XREF: ___:00416A7Bp
					; ___:00439F42j ...
		jmp	sub_4179D0
sub_401B27	endp


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

; Attributes: noreturn thunk


sub_401B2C	proc near		; CODE XREF: ___:00408713p
					; ___:00408734p ...
		jmp	sub_407660
sub_401B2C	endp

; ---------------------------------------------------------------------------
		jmp	loc_414AF0

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

; Attributes: thunk


sub_401B36	proc near		; CODE XREF: ___:0041C693p
					; ___:004282FFp
		jmp	sub_41D540
sub_401B36	endp


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

; Attributes: thunk


sub_401B3B	proc near		; CODE XREF: sub_41A890+11p
		jmp	sub_41A8C0
sub_401B3B	endp


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

; Attributes: thunk


sub_401B40	proc near		; CODE XREF: ___:0041E999p
		jmp	sub_421C10
sub_401B40	endp


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

; Attributes: noreturn thunk


sub_401B45	proc near		; CODE XREF: sub_414C70+3p
		jmp	sub_414CA0
sub_401B45	endp

; ---------------------------------------------------------------------------
		jmp	loc_432CA0

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

; Attributes: thunk


sub_401B4F	proc near		; CODE XREF: sub_42FAA0+29p
		jmp	sub_42F540
sub_401B4F	endp


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

; Attributes: noreturn thunk


sub_401B54	proc near		; CODE XREF: sub_40FDA0+38p
					; ___:00439158j
		jmp	sub_412BC0
sub_401B54	endp


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

; Attributes: noreturn thunk


sub_401B59	proc near
		jmp	sub_40D580
sub_401B59	endp


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

; Attributes: noreturn thunk


sub_401B5E	proc near		; CODE XREF: sub_407660+3Bp
					; sub_4076F0+43p
		jmp	sub_40B430
sub_401B5E	endp


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

; Attributes: thunk


sub_401B63	proc near		; CODE XREF: sub_4072D0+3p
		jmp	sub_4074A0
sub_401B63	endp


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

; Attributes: thunk


sub_401B68	proc near		; CODE XREF: sub_424840+9Dp
					; sub_424840+FBp ...
		jmp	sub_4245F0
sub_401B68	endp

; ---------------------------------------------------------------------------
		jmp	loc_425BD0

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

; Attributes: thunk


sub_401B72	proc near		; CODE XREF: ___:00410373p
					; ___:00410EC9p ...
		jmp	sub_409F60
sub_401B72	endp


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

; Attributes: thunk


sub_401B77	proc near		; CODE XREF: ___:00425474p
		jmp	sub_4254E0
sub_401B77	endp


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

; Attributes: noreturn thunk


sub_401B7C	proc near		; CODE XREF: sub_422050+32p
		jmp	sub_422410
sub_401B7C	endp


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

; Attributes: thunk


sub_401B81	proc near		; CODE XREF: ___:0041B555p
		jmp	sub_41A6D0
sub_401B81	endp


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

; Attributes: thunk


sub_401B86	proc near		; CODE XREF: sub_40BF60+23p
					; sub_40C120+11p
		jmp	sub_40C2C0
sub_401B86	endp


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

; Attributes: thunk


sub_401B8B	proc near		; CODE XREF: ___:0042B833p
		jmp	sub_42B860
sub_401B8B	endp


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

; Attributes: noreturn thunk


sub_401B90	proc near
		jmp	sub_41E140
sub_401B90	endp

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


loc_401B95:				; DATA XREF: sub_42FF50+86o
		jmp	loc_431650

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

; Attributes: thunk


sub_401B9A	proc near		; CODE XREF: sub_409530+20p
		jmp	sub_409600
sub_401B9A	endp

; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_9. PRESS KEYPAD	"+" TO EXPAND]
; ---------------------------------------------------------------------------
		jmp	loc_40CBB0
; ---------------------------------------------------------------------------
		jmp	loc_4309D0

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

; Attributes: noreturn thunk


sub_401BAE	proc near		; CODE XREF: sub_421BD0+1Fp
		jmp	sub_421FB0
sub_401BAE	endp


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

; Attributes: noreturn thunk


sub_401BB3	proc near		; CODE XREF: sub_427520+39p
		jmp	sub_4270E0
sub_401BB3	endp


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

; Attributes: thunk


sub_401BB8	proc near		; CODE XREF: sub_415730+5p
					; sub_415930+6p ...
		jmp	sub_416380
sub_401BB8	endp


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

; Attributes: thunk


sub_401BBD	proc near		; CODE XREF: sub_4303D0+5Dp
					; sub_431730+3Ep
		jmp	sub_4304D0
sub_401BBD	endp


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

; Attributes: thunk


sub_401BC2	proc near		; CODE XREF: ___:00432129p
					; ___:0043214Ap ...
		jmp	sub_430C00
sub_401BC2	endp


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

; Attributes: thunk


sub_401BC7	proc near		; CODE XREF: ___:00425DA2p
		jmp	sub_4269A0
sub_401BC7	endp


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

; Attributes: thunk


sub_401BCC	proc near		; CODE XREF: ___:0041B3D3p
		jmp	sub_41B400
sub_401BCC	endp


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

; Attributes: thunk


sub_401BD1	proc near		; CODE XREF: ___:00428223p
		jmp	sub_428250
sub_401BD1	endp


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

; Attributes: thunk


sub_401BD6	proc near		; CODE XREF: ___:00423364p
					; ___:0042408Ap
		jmp	sub_4258E0
sub_401BD6	endp


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

; Attributes: thunk


sub_401BDB	proc near		; CODE XREF: sub_42D2C0+18Dp
					; sub_42D2C0+1CDp ...
		jmp	sub_42DFD0
sub_401BDB	endp


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

; Attributes: noreturn thunk


sub_401BE0	proc near		; CODE XREF: ___:0041426Cp
		jmp	sub_414360
sub_401BE0	endp


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

; Attributes: noreturn thunk


sub_401BE5	proc near
		jmp	sub_40C360
sub_401BE5	endp


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

; Attributes: thunk


sub_401BEA	proc near		; CODE XREF: ___:004250ABp
		jmp	sub_424840
sub_401BEA	endp


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

; Attributes: thunk


sub_401BEF	proc near		; CODE XREF: ___:0040B11Ep
					; sub_40B170+34p ...
		jmp	sub_40BDD0
sub_401BEF	endp


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

; Attributes: noreturn thunk


sub_401BF4	proc near		; CODE XREF: sub_40B0B0+5Cp
		jmp	sub_40BC70
sub_401BF4	endp

; ---------------------------------------------------------------------------
		jmp	loc_4327C0
; ---------------------------------------------------------------------------
		jmp	loc_431120

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

; Attributes: thunk


sub_401C03	proc near		; CODE XREF: sub_430AD0+20p
					; sub_430C00+20p ...
		jmp	sub_430690
sub_401C03	endp

; ---------------------------------------------------------------------------
		jmp	loc_42ED30

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

; Attributes: noreturn thunk


sub_401C0D	proc near
		jmp	sub_4347B0
sub_401C0D	endp


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

; Attributes: thunk


sub_401C12	proc near		; CODE XREF: sub_4137E0+84p
					; sub_433A20+3Cp ...
		jmp	sub_433940
sub_401C12	endp


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

; Attributes: thunk


sub_401C17	proc near		; CODE XREF: ___:0042C4D8p
		jmp	sub_42B060
sub_401C17	endp


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

; Attributes: thunk


sub_401C1C	proc near		; CODE XREF: ___:0042AC56p
		jmp	sub_42A5F0
sub_401C1C	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B620

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

; Attributes: thunk


sub_401C26	proc near		; CODE XREF: ___:00431256p
					; sub_4331D0+23p
		jmp	sub_431AC0
sub_401C26	endp

; ---------------------------------------------------------------------------
		jmp	loc_427FF0
; ---------------------------------------------------------------------------
		jmp	loc_41FC80

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

; Attributes: thunk


sub_401C35	proc near		; CODE XREF: sub_41AFE0+8p
					; ___:0041B39Dp ...
		jmp	sub_41A010
sub_401C35	endp


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

; Attributes: thunk


sub_401C3A	proc near		; CODE XREF: ___:0042A103p
		jmp	sub_42A130
sub_401C3A	endp

; ---------------------------------------------------------------------------
		jmp	loc_41AD80
; ---------------------------------------------------------------------------
		jmp	loc_416990

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

; Attributes: noreturn thunk


sub_401C49	proc near		; CODE XREF: sub_40BD90+1Fp
		jmp	sub_40BEC0
sub_401C49	endp


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

; Attributes: thunk


sub_401C4E	proc near		; CODE XREF: sub_415A00+9p
					; sub_415B20+18p
		jmp	sub_4165D0
sub_401C4E	endp


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

; Attributes: noreturn thunk


sub_401C53	proc near		; CODE XREF: sub_418C50+4p
		jmp	sub_418F70
sub_401C53	endp


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

; Attributes: thunk


sub_401C58	proc near		; CODE XREF: sub_407370+11p
					; ___:00407397p ...
		jmp	sub_407520
sub_401C58	endp


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

; Attributes: thunk


sub_401C5D	proc near		; CODE XREF: ___:00404D81p
					; sub_40D580+42p ...
		jmp	sub_40A1F0
sub_401C5D	endp


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

; Attributes: thunk


sub_401C62	proc near		; CODE XREF: ___:0041319Ap
					; sub_413220+3Cp ...
		jmp	sub_4157E0
sub_401C62	endp

; ---------------------------------------------------------------------------
		jmp	loc_42E9C0

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

; Attributes: thunk


sub_401C6C	proc near		; CODE XREF: sub_4256B0+69p
		jmp	sub_425820
sub_401C6C	endp


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

; Attributes: thunk


sub_401C71	proc near		; CODE XREF: sub_40B520+2Fp
					; sub_40B520+6Ep ...
		jmp	sub_40BD60
sub_401C71	endp


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

; Attributes: thunk


sub_401C76	proc near		; CODE XREF: ___:0042ED88p
					; ___:0042ED9Dp ...
		jmp	sub_432CC0
sub_401C76	endp


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

; Attributes: noreturn thunk


sub_401C7B	proc near		; CODE XREF: sub_415370+11p
					; sub_415DD0+1Fp
		jmp	sub_415FC0
sub_401C7B	endp

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

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

; Attributes: thunk


sub_401C8A	proc near		; CODE XREF: sub_407370+9p
					; sub_418D80+18p
		jmp	sub_4075C0
sub_401C8A	endp


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

; Attributes: noreturn thunk


sub_401C8F	proc near		; CODE XREF: ___:004131F3p
					; ___:00416B3Bp ...
		jmp	sub_413220
sub_401C8F	endp

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

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

; Attributes: thunk


sub_401CA3	proc near		; CODE XREF: ___:00416E6Ap
		jmp	sub_4181B0
sub_401CA3	endp


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

; Attributes: thunk


sub_401CA8	proc near		; CODE XREF: sub_415AA0+Cp
					; sub_415AA0+43p
		jmp	sub_4165A0
sub_401CA8	endp


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

; Attributes: noreturn thunk


sub_401CAD	proc near		; CODE XREF: sub_409600+45p
		jmp	sub_4098E0
sub_401CAD	endp

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

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

; Attributes: thunk


sub_401CBC	proc near		; CODE XREF: ___:00410304p
		jmp	sub_40A000
sub_401CBC	endp


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

; Attributes: noreturn thunk


sub_401CC1	proc near		; CODE XREF: sub_407790+653p
					; ___:00407E8Ap ...
		jmp	sub_4076F0
sub_401CC1	endp


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

; Attributes: thunk


sub_401CC6	proc near		; CODE XREF: sub_415420+16p
					; sub_415460+Bp ...
		jmp	sub_416090
sub_401CC6	endp


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

; Attributes: thunk


sub_401CCB	proc near		; CODE XREF: sub_409600+144p
		jmp	sub_409970
sub_401CCB	endp


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

; Attributes: thunk


sub_401CD0	proc near		; CODE XREF: sub_404640+1C2p
					; sub_404B10+36p ...
		jmp	sub_4133D0
sub_401CD0	endp


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

; Attributes: noreturn thunk


sub_401CD5	proc near		; CODE XREF: sub_4150F0+34p
					; sub_415B20+67p
		jmp	sub_415CC0
sub_401CD5	endp


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

; Attributes: thunk


sub_401CDA	proc near
		jmp	sub_409AA0
sub_401CDA	endp

; ---------------------------------------------------------------------------
		jmp	loc_41FC00
; ---------------------------------------------------------------------------
		jmp	loc_42E0B0

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

; Attributes: thunk


sub_401CE9	proc near		; CODE XREF: sub_40BE90+5p
		jmp	sub_40C0F0
sub_401CE9	endp


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

; Attributes: noreturn thunk


sub_401CEE	proc near		; CODE XREF: ___:0043113Fp
		jmp	sub_42F230
sub_401CEE	endp


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

; Attributes: thunk


sub_401CF3	proc near		; CODE XREF: sub_421D50+11p
					; ___:00421D77p ...
		jmp	sub_422300
sub_401CF3	endp

; ---------------------------------------------------------------------------
		jmp	loc_4131F0

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

; Attributes: noreturn thunk


sub_401CFD	proc near		; CODE XREF: sub_4157A0+1Fp
		jmp	sub_416120
sub_401CFD	endp


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

; Attributes: thunk


sub_401D02	proc near		; CODE XREF: sub_40F600+1ACp
					; sub_40F600+1EDp ...
		jmp	sub_40F590
sub_401D02	endp


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

; Attributes: thunk


sub_401D07	proc near		; CODE XREF: sub_413DA0+15Cp
		jmp	sub_414090
sub_401D07	endp


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

; Attributes: thunk


sub_401D0C	proc near		; CODE XREF: sub_404C20+23p
					; ___:00411322p
		jmp	sub_412B20
sub_401D0C	endp


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

; Attributes: thunk


sub_401D11	proc near		; CODE XREF: ___:00416E2Fp
		jmp	sub_418050
sub_401D11	endp


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

; Attributes: noreturn thunk


sub_401D16	proc near		; CODE XREF: sub_407540+7p
					; sub_40C200+7p ...
		jmp	sub_4075E0
sub_401D16	endp


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

; Attributes: thunk


sub_401D1B	proc near		; CODE XREF: sub_40A810+1Ap
					; sub_40A8C0+4p ...
		jmp	sub_40A880
sub_401D1B	endp


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

; Attributes: thunk


sub_401D20	proc near		; CODE XREF: sub_404640+289p
					; sub_404640+2ADp ...
		jmp	sub_40A0A0
sub_401D20	endp

; ---------------------------------------------------------------------------
		jmp	loc_42F2B0
; ---------------------------------------------------------------------------
		jmp	loc_4282C0
; ---------------------------------------------------------------------------
		jmp	loc_42E680

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

; Attributes: noreturn thunk


sub_401D34	proc near
		jmp	sub_403FC0
sub_401D34	endp


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

; Attributes: thunk


sub_401D39	proc near		; CODE XREF: ___:00412103p
					; ___:004121C2p
		jmp	sub_4126B0
sub_401D39	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B470
; ---------------------------------------------------------------------------
		jmp	loc_40B790

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

; Attributes: thunk


sub_401D48	proc near		; CODE XREF: sub_421C80+5p
		jmp	sub_4221E0
sub_401D48	endp


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

; Attributes: thunk


sub_401D4D	proc near		; CODE XREF: sub_415E70+5Fp
		jmp	sub_416690
sub_401D4D	endp


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

; Attributes: thunk


sub_401D52	proc near		; CODE XREF: ___:0041DAF7p
		jmp	sub_42EA40
sub_401D52	endp


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

; Attributes: noreturn thunk


sub_401D57	proc near		; CODE XREF: sub_418BA0+7p
		jmp	sub_418E40
sub_401D57	endp


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

; Attributes: thunk


sub_401D5C	proc near		; CODE XREF: sub_413670+5Dp
					; sub_413670+9Bp ...
		jmp	sub_415340
sub_401D5C	endp

; ---------------------------------------------------------------------------
		jmp	loc_4360A0

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

; Attributes: thunk


sub_401D66	proc near		; CODE XREF: sub_415730+16p
					; sub_415770+Bp ...
		jmp	sub_4163E0
sub_401D66	endp

; ---------------------------------------------------------------------------
		jmp	loc_40B880

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

; Attributes: noreturn thunk


sub_401D70	proc near		; CODE XREF: sub_432ED0+98p
		jmp	sub_430660
sub_401D70	endp


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

; Attributes: thunk


sub_401D75	proc near		; CODE XREF: sub_421B60+16p
					; sub_421BA0+Bp ...
		jmp	sub_4221B0
sub_401D75	endp

; ---------------------------------------------------------------------------
		jmp	loc_42C7E0

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

; Attributes: noreturn thunk


sub_401D7F	proc near
		jmp	sub_41C390
sub_401D7F	endp


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

; Attributes: thunk


sub_401D84	proc near		; CODE XREF: sub_4189B0+16p
					; sub_4189F0+Bp ...
		jmp	sub_418D20
sub_401D84	endp


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

; Attributes: thunk


sub_401D89	proc near		; CODE XREF: sub_413670+53p
					; sub_413670+91p ...
		jmp	sub_4151A0
sub_401D89	endp


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

; Attributes: thunk


sub_401D8E	proc near		; CODE XREF: ___:00422A96p
		jmp	sub_4258A0
sub_401D8E	endp


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

; Attributes: thunk


sub_401D93	proc near		; CODE XREF: ___:00422BCAp
		jmp	sub_4257A0
sub_401D93	endp

; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_6. PRESS KEYPAD	"+" TO EXPAND]

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

; Attributes: thunk


sub_401D9D	proc near		; CODE XREF: ___:004280C1p
		jmp	sub_427AD0
sub_401D9D	endp


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

; Attributes: noreturn thunk


sub_401DA2	proc near		; CODE XREF: sub_415680+11p
					; sub_416120+1Fp
		jmp	sub_416310
sub_401DA2	endp


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

; Attributes: thunk


sub_401DA7	proc near		; CODE XREF: sub_415160+16p
					; sub_4151A0+Bp ...
		jmp	sub_415D40
sub_401DA7	endp


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

; Attributes: thunk


sub_401DAC	proc near		; CODE XREF: ___:00414713p
		jmp	sub_4144D0
sub_401DAC	endp

; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_3. PRESS KEYPAD	"+" TO EXPAND]

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

; Attributes: noreturn thunk


sub_401DB6	proc near		; CODE XREF: ___:00427000p
		jmp	sub_427520
sub_401DB6	endp


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

; Attributes: thunk


sub_401DBB	proc near		; CODE XREF: ___:0042B178p
		jmp	sub_42AEC0
sub_401DBB	endp

; ---------------------------------------------------------------------------
		jmp	loc_414120

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

; Attributes: thunk


sub_401DC5	proc near		; CODE XREF: sub_4337E0+74p
		jmp	sub_4317F0
sub_401DC5	endp


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

; Attributes: thunk


sub_401DCA	proc near		; CODE XREF: ___:0041FAADp
		jmp	sub_40B070
sub_401DCA	endp


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

; Attributes: noreturn thunk


sub_401DCF	proc near		; CODE XREF: sub_40A9F0+45p
		jmp	sub_40AC70
sub_401DCF	endp


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

; Attributes: noreturn thunk


sub_401DD4	proc near		; CODE XREF: ___:0042F33Dp
					; ___:0042F462p ...
		jmp	sub_431990
sub_401DD4	endp


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

; Attributes: thunk


sub_401DD9	proc near		; CODE XREF: ___:00425C34p
		jmp	sub_426EB0
sub_401DD9	endp

; ---------------------------------------------------------------------------
		jmp	loc_431A60

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

; Attributes: thunk


sub_401DE3	proc near		; CODE XREF: ___:00410A47p
					; ___:00410DBDp
		jmp	sub_41EE70
sub_401DE3	endp


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

; Attributes: thunk


sub_401DE8	proc near		; CODE XREF: sub_40ACA0+Ap
		jmp	sub_40AD90
sub_401DE8	endp


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

; Attributes: thunk


sub_401DED	proc near		; CODE XREF: ___:00416A3Bp
					; ___:00439F7Aj ...
		jmp	sub_417AE0
sub_401DED	endp


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

; Attributes: noreturn thunk


sub_401DF2	proc near		; CODE XREF: sub_421E80+4p
		jmp	sub_422320
sub_401DF2	endp


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

; Attributes: thunk


sub_401DF7	proc near		; CODE XREF: ___:0040C671p
					; ___:00425070p
		jmp	sub_423660
sub_401DF7	endp


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

; Attributes: thunk


sub_401DFC	proc near		; CODE XREF: ___:0041617Ap
		jmp	sub_416760
sub_401DFC	endp


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

; Attributes: noreturn thunk


sub_401E01	proc near		; CODE XREF: sub_415CC0+7p
		jmp	sub_4164C0
sub_401E01	endp


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

; Attributes: noreturn thunk


sub_401E06	proc near		; CODE XREF: ___:0041D9CBp
		jmp	sub_42C790
sub_401E06	endp


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

; Attributes: thunk


sub_401E0B	proc near		; CODE XREF: ___:004054ABp
					; ___:004057D8p ...
		jmp	sub_412900
sub_401E0B	endp

; ---------------------------------------------------------------------------
		jmp	loc_4131F0
; ---------------------------------------------------------------------------
		jmp	loc_428220

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

; Attributes: noreturn thunk


sub_401E1A	proc near		; CODE XREF: sub_4153B0+34p
					; sub_415E70+67p
		jmp	sub_416010
sub_401E1A	endp


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

; Attributes: thunk


sub_401E1F	proc near		; CODE XREF: sub_413670+31p
					; sub_4144D0+2Dp
		jmp	sub_4152D0
sub_401E1F	endp


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

; Attributes: thunk


sub_401E24	proc near		; CODE XREF: ___:0040CD9Ep
					; ___:00423EC5p ...
		jmp	sub_425640
sub_401E24	endp


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

; Attributes: thunk


sub_401E29	proc near		; CODE XREF: sub_4158F0+3p
		jmp	sub_4163C0
sub_401E29	endp


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

; Attributes: thunk


sub_401E2E	proc near		; CODE XREF: sub_404640+97p
					; sub_404640+107p ...
		jmp	sub_40A3C0
sub_401E2E	endp

; [00000005 BYTES: COLLAPSED FUNCTION j_nullsub_5. PRESS KEYPAD	"+" TO EXPAND]

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

; Attributes: thunk


sub_401E38	proc near		; CODE XREF: ___:00423CFDp
		jmp	sub_423850
sub_401E38	endp


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

; Attributes: thunk


sub_401E3D	proc near		; CODE XREF: ___:00421D0Ap
		jmp	sub_422210
sub_401E3D	endp

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

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

; Attributes: noreturn thunk


sub_401E47	proc near
		jmp	sub_4355E0
sub_401E47	endp

; ---------------------------------------------------------------------------
		jmp	loc_4356F0

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

; Attributes: thunk


sub_401E51	proc near		; CODE XREF: ___:0043250Fp
		jmp	sub_42FDB0
sub_401E51	endp


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

; Attributes: thunk


sub_401E56	proc near		; CODE XREF: sub_4165A0+5p
		jmp	sub_4167F0
sub_401E56	endp


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

; Attributes: thunk


sub_401E5B	proc near		; CODE XREF: ___:00404EFDp
					; ___:0041DED6p
		jmp	sub_40DB40
sub_401E5B	endp


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

; Attributes: thunk


sub_401E60	proc near		; CODE XREF: sub_422410+5Fp
		jmp	sub_422600
sub_401E60	endp

; ---------------------------------------------------------------------------
		jmp	loc_419E90

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

; Attributes: thunk


sub_401E6A	proc near		; CODE XREF: sub_40F600+22p
					; sub_411860+1Dp ...
		jmp	sub_40ADC0
sub_401E6A	endp


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

; Attributes: thunk


sub_401E6F	proc near		; CODE XREF: sub_40A9F0+112p
					; sub_40A9F0+153p
		jmp	sub_40ACD0
sub_401E6F	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B010

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

; Attributes: thunk


sub_401E79	proc near		; CODE XREF: sub_4155E0+3p
		jmp	sub_416070
sub_401E79	endp


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

; Attributes: thunk


sub_401E7E	proc near		; CODE XREF: sub_426960+1Ap
		jmp	sub_426820
sub_401E7E	endp


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

; Attributes: thunk


sub_401E83	proc near		; CODE XREF: ___:00416B0Bp
					; ___:00439EC4j ...
		jmp	sub_4175E0
sub_401E83	endp

; ---------------------------------------------------------------------------
		jmp	loc_431EC0

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

; Attributes: thunk


sub_401E8D	proc near		; CODE XREF: sub_4200F0+3Ap
		jmp	sub_420300
sub_401E8D	endp

; ---------------------------------------------------------------------------
		jmp	loc_426F70
; ---------------------------------------------------------------------------
		jmp	loc_432800

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

; Attributes: noreturn thunk


sub_401E9C	proc near		; CODE XREF: sub_416310+4p
		jmp	sub_416710
sub_401E9C	endp


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

; Attributes: thunk


sub_401EA1	proc near		; CODE XREF: sub_415830+4Fp
					; sub_4161C0+11p ...
		jmp	sub_416410
sub_401EA1	endp


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

; Attributes: thunk


sub_401EA6	proc near		; CODE XREF: sub_415650+5p
		jmp	sub_4160F0
sub_401EA6	endp


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

; Attributes: thunk


sub_401EAB	proc near		; CODE XREF: sub_424840+151p
		jmp	sub_424800
sub_401EAB	endp


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

; Attributes: thunk


sub_401EB0	proc near		; CODE XREF: ___:00416AABp
					; ___:00439F18j ...
		jmp	sub_417830
sub_401EB0	endp


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

; Attributes: thunk


sub_401EB5	proc near		; CODE XREF: sub_4152D0+3p
		jmp	sub_415D20
sub_401EB5	endp


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

; Attributes: noreturn thunk


sub_401EBA	proc near		; CODE XREF: sub_415030+11p
					; sub_415070+13p ...
		jmp	sub_415C70
sub_401EBA	endp


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

; Attributes: thunk


sub_401EBF	proc near		; CODE XREF: sub_421960+16p
					; sub_4219A0+Bp ...
		jmp	sub_421F50
sub_401EBF	endp

; ---------------------------------------------------------------------------
		jmp	loc_418860
; ---------------------------------------------------------------------------
		jmp	loc_41C250

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

; Attributes: thunk


sub_401ECE	proc near		; CODE XREF: sub_418E90+18p
					; sub_421CB0+9p
		jmp	sub_419050
sub_401ECE	endp


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

; Attributes: thunk


sub_401ED3	proc near		; CODE XREF: sub_422540+Ap
		jmp	sub_4226E0
sub_401ED3	endp

; ---------------------------------------------------------------------------
		jmp	loc_41BC50
; ---------------------------------------------------------------------------
		jmp	loc_4328B0

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

; Attributes: thunk


sub_401EE2	proc near		; CODE XREF: ___:00416A0Bp
					; ___:00439FA4j ...
		jmp	sub_417B20
sub_401EE2	endp


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

; Attributes: thunk


sub_401EE7	proc near		; CODE XREF: sub_40A810+13p
		jmp	loc_40A950
sub_401EE7	endp


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

; Attributes: thunk


sub_401EEC	proc near		; CODE XREF: sub_41B060:loc_41B0ACp
					; sub_41B950+54p ...
		jmp	sub_4198A0
sub_401EEC	endp


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

; Attributes: noreturn thunk


sub_401EF1	proc near		; CODE XREF: ___:004142C5p
		jmp	sub_415490
sub_401EF1	endp


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

; Attributes: noreturn thunk


sub_401EF6	proc near		; CODE XREF: sub_4156C0+34p
					; sub_4161C0+67p
		jmp	sub_416360
sub_401EF6	endp


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

; Attributes: thunk


sub_401EFB	proc near		; CODE XREF: sub_4152F0+3p
					; ___:00415A4Fp ...
		jmp	sub_415D00
sub_401EFB	endp


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

; Attributes: noreturn thunk


sub_401F00	proc near
		jmp	sub_412C10
sub_401F00	endp


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

; Attributes: noreturn thunk


sub_401F05	proc near		; CODE XREF: sub_413120+4Dp
		jmp	sub_415370
sub_401F05	endp


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

; Attributes: thunk


sub_401F0A	proc near		; CODE XREF: sub_4070F0+5Cp
					; sub_418E60+3p
		jmp	sub_407310
sub_401F0A	endp


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

; Attributes: noreturn thunk


sub_401F0F	proc near		; CODE XREF: ___:00419103p
		jmp	sub_419170
sub_401F0F	endp


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

; Attributes: thunk


sub_401F14	proc near		; CODE XREF: ___:0040BF1Ap
		jmp	sub_40C250
sub_401F14	endp


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

; Attributes: thunk


sub_401F19	proc near		; CODE XREF: ___:0042B15Fp
		jmp	sub_42ADB0
sub_401F19	endp

; ---------------------------------------------------------------------------
		jmp	loc_4348A0
; ---------------------------------------------------------------------------


loc_401F23:				; DATA XREF: ___:004240B4o
		jmp	loc_423C10

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

; Attributes: thunk


sub_401F28	proc near		; CODE XREF: ___:00416A6Bp
					; ___:00439F50j ...
		jmp	sub_417A40
sub_401F28	endp


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

; Attributes: thunk


sub_401F2D	proc near		; CODE XREF: sub_413B70+99p
		jmp	sub_413D40
sub_401F2D	endp


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

; Attributes: thunk


sub_401F32	proc near		; CODE XREF: sub_40B390+3Dp
					; ___:0040BB2Dp ...
		jmp	sub_40B700
sub_401F32	endp


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

; Attributes: thunk


sub_401F37	proc near		; CODE XREF: ___:loc_423CA7p
		jmp	sub_423720
sub_401F37	endp


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

; Attributes: thunk


sub_401F3C	proc near		; CODE XREF: ___:004056AEp
		jmp	sub_406890
sub_401F3C	endp

; ---------------------------------------------------------------------------
		jmp	loc_42B350

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

; Attributes: noreturn thunk


sub_401F46	proc near		; CODE XREF: sub_4139B0+72p
		jmp	sub_413670
sub_401F46	endp


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

; Attributes: thunk


sub_401F4B	proc near		; CODE XREF: sub_418330+5Fp
					; sub_418940+1Ap ...
		jmp	sub_4189B0
sub_401F4B	endp

; ---------------------------------------------------------------------------
		jmp	loc_42EFA0

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

; Attributes: thunk


sub_401F55	proc near		; CODE XREF: sub_42E400+B5p
		jmp	sub_42D2C0
sub_401F55	endp


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

; Attributes: thunk


sub_401F5A	proc near		; CODE XREF: sub_40B520+4Bp
					; sub_40B520:loc_40B5ABp ...
		jmp	sub_40BE40
sub_401F5A	endp


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

; Attributes: noreturn thunk


sub_401F5F	proc near
		jmp	sub_41E400
sub_401F5F	endp


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

; Attributes: thunk


sub_401F64	proc near		; CODE XREF: sub_40A430+142p
		jmp	sub_40A810
sub_401F64	endp


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

; Attributes: thunk


sub_401F69	proc near		; CODE XREF: sub_404640+35Dp
					; sub_404640+39Ep
		jmp	sub_404B10
sub_401F69	endp


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

; Attributes: thunk


sub_401F6E	proc near		; CODE XREF: sub_415DD0+9p
					; sub_415E70+18p
		jmp	sub_4166D0
sub_401F6E	endp


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

; Attributes: thunk


sub_401F73	proc near		; CODE XREF: sub_431B30+1Bp
		jmp	sub_431BE0
sub_401F73	endp

; ---------------------------------------------------------------------------
		jmp	loc_42AFD0

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

; Attributes: thunk


sub_401F7D	proc near		; CODE XREF: sub_426450+1Dp
					; sub_4269A0+1Dp ...
		jmp	sub_4264C0
sub_401F7D	endp


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

; Attributes: thunk


sub_401F82	proc near		; CODE XREF: sub_427DC0+1Dp
					; sub_428160+1Fp ...
		jmp	sub_427E30
sub_401F82	endp


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

; Attributes: thunk


sub_401F87	proc near		; CODE XREF: ___:00429D73p
		jmp	sub_429DA0
sub_401F87	endp

; ---------------------------------------------------------------------------
		jmp	loc_406BD0
; ---------------------------------------------------------------------------
		jmp	loc_40D460

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

; Attributes: thunk


sub_401F96	proc near		; CODE XREF: sub_409600+112p
					; sub_409600+153p
		jmp	sub_409940
sub_401F96	endp


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

; Attributes: thunk


sub_401F9B	proc near		; CODE XREF: sub_422600+5p
		jmp	sub_422770
sub_401F9B	endp


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

; Attributes: thunk


sub_401FA0	proc near		; CODE XREF: sub_407340+5p
		jmp	sub_4074F0
sub_401FA0	endp


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

; Attributes: thunk


sub_401FA5	proc near		; CODE XREF: sub_413670+6Fp
					; sub_413670+DBp ...
		jmp	sub_4152F0
sub_401FA5	endp

; ---------------------------------------------------------------------------
		jmp	loc_42B830

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

; Attributes: noreturn thunk


sub_401FAF	proc near		; CODE XREF: sub_415210+5Ep
					; sub_415BE0+32p
		jmp	sub_415B20
sub_401FAF	endp


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

; Attributes: thunk


sub_401FB4	proc near
		jmp	sub_40F030
sub_401FB4	endp


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

; Attributes: thunk


sub_401FB9	proc near		; CODE XREF: sub_412B20+3p
		jmp	sub_412B50
sub_401FB9	endp


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

; Attributes: thunk


sub_401FBE	proc near		; CODE XREF: sub_404640+48p
					; sub_404640+5Dp ...
		jmp	sub_409D20
sub_401FBE	endp

; ---------------------------------------------------------------------------
		jmp	loc_419950

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

; Attributes: thunk


sub_401FC8	proc near		; CODE XREF: ___:0041A0E3p
					; sub_41B040+9j ...
		jmp	sub_41A110
sub_401FC8	endp


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

; Attributes: noreturn thunk


sub_401FCD	proc near		; CODE XREF: sub_40BCB0+34p
					; sub_40C120+67p
		jmp	sub_40C040
sub_401FCD	endp

; ---------------------------------------------------------------------------
		jmp	loc_432690
; ---------------------------------------------------------------------------
		jmp	loc_435280

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

; Attributes: thunk


sub_401FDC	proc near
		jmp	sub_40F0B0
sub_401FDC	endp

; ---------------------------------------------------------------------------
		jmp	loc_436300
; ---------------------------------------------------------------------------
		jmp	loc_41EDB0

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

; Attributes: thunk


sub_401FEB	proc near		; CODE XREF: ___:0041F8BAp
		jmp	sub_41FF40
sub_401FEB	endp

; ---------------------------------------------------------------------------
		jmp	loc_430380

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

; Attributes: thunk


sub_401FF5	proc near		; CODE XREF: ___:00416A2Bp
					; ___:00439F88j ...
		jmp	sub_417B00
sub_401FF5	endp


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

; Attributes: noreturn thunk


sub_401FFA	proc near		; CODE XREF: ___:00416D7Fp
		jmp	sub_413120
sub_401FFA	endp


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

; Attributes: thunk


sub_401FFF	proc near		; CODE XREF: sub_421A80+5p
		jmp	sub_421F80
sub_401FFF	endp


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

; Attributes: thunk


sub_402004	proc near		; CODE XREF: ___:00421654p
		jmp	sub_41BFA0
sub_402004	endp

; ---------------------------------------------------------------------------
		jmp	loc_406BD0

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

; Attributes: thunk


sub_40200E	proc near		; CODE XREF: sub_404640+2CEp
					; ___:004050E2p ...
		jmp	sub_40A670
sub_40200E	endp

; ---------------------------------------------------------------------------
		jmp	loc_433120
; ---------------------------------------------------------------------------
		jmp	loc_41B3D0

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

; Attributes: thunk


sub_40201D	proc near		; CODE XREF: sub_422370+Ap
		jmp	sub_422650
sub_40201D	endp


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

; Attributes: thunk


sub_402022	proc near		; CODE XREF: ___:0040545Ap
		jmp	sub_41B950
sub_402022	endp

; ---------------------------------------------------------------------------
		jmp	loc_40ADE0
; ---------------------------------------------------------------------------
		jmp	loc_42BE60

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

; Attributes: thunk


sub_402031	proc near		; CODE XREF: ___:0040ADE3p
					; ___:0040FEDEp ...
		jmp	sub_40AE10
sub_402031	endp


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

; Attributes: thunk


sub_402036	proc near		; CODE XREF: sub_424840+109p
					; sub_424840+178p ...
		jmp	sub_424720
sub_402036	endp


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

; Attributes: noreturn thunk


sub_40203B	proc near		; CODE XREF: sub_4098E0+7p
		jmp	sub_4099D0
sub_40203B	endp


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

; Attributes: thunk


sub_402040	proc near		; CODE XREF: sub_416660+Ap
		jmp	sub_416870
sub_402040	endp


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

; Attributes: noreturn thunk


sub_402045	proc near
		jmp	sub_40CB10
sub_402045	endp


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

; Attributes: thunk


sub_40204A	proc near		; CODE XREF: ___:0042EEEBp
					; sub_42FDD0+EAp
		jmp	sub_433030
sub_40204A	endp


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

; Attributes: thunk


sub_40204F	proc near		; CODE XREF: sub_421960+5p
					; sub_421A50+6p ...
		jmp	sub_421EF0
sub_40204F	endp


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

; Attributes: thunk


sub_402054	proc near		; CODE XREF: ___:0041080Dp
					; ___:004108BEp ...
		jmp	sub_411990
sub_402054	endp


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

; Attributes: noreturn thunk


sub_402059	proc near		; CODE XREF: sub_40C040+7p
		jmp	sub_40C230
sub_402059	endp


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

; Attributes: noreturn thunk


sub_40205E	proc near		; CODE XREF: sub_418940+34p
					; sub_418E90+67p
		jmp	sub_418CA0
sub_40205E	endp

; ---------------------------------------------------------------------------
		jmp	loc_409B10
; ---------------------------------------------------------------------------
		jmp	loc_427FC0

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

; Attributes: thunk


sub_40206D	proc near		; CODE XREF: sub_417020+2Bp
					; sub_417020+3Bp ...
		jmp	sub_403EE0
sub_40206D	endp


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

; Attributes: thunk


sub_402072	proc near		; CODE XREF: sub_4097D0+14p
		jmp	sub_409830
sub_402072	endp

; ---------------------------------------------------------------------------
		jmp	loc_431FD0

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

; Attributes: thunk


sub_40207C	proc near		; CODE XREF: sub_427AD0:loc_427CDBp
		jmp	sub_4279F0
sub_40207C	endp

; ---------------------------------------------------------------------------
		jmp	loc_426650

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

; Attributes: thunk


sub_402086	proc near		; CODE XREF: sub_418330+4Dp
		jmp	sub_418A70
sub_402086	endp


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

; Attributes: thunk


sub_40208B	proc near		; CODE XREF: sub_415160+5p
					; sub_415310+6p ...
		jmp	sub_415CE0
sub_40208B	endp


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

; Attributes: thunk


sub_402090	proc near		; CODE XREF: ___:00426653p
		jmp	sub_426680
sub_402090	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B0F0
; ---------------------------------------------------------------------------
		jmp	loc_421620

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

; Attributes: noreturn thunk


sub_40209F	proc near		; CODE XREF: ___:00416D4Fp
		jmp	sub_407030
sub_40209F	endp


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

; Attributes: thunk


sub_4020A4	proc near		; CODE XREF: sub_413670+83p
					; sub_4144D0+91p ...
		jmp	sub_415310
sub_4020A4	endp

; ---------------------------------------------------------------------------
		jmp	loc_41EF30

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

; Attributes: thunk


sub_4020AE	proc near		; CODE XREF: sub_40A9F0+144p
		jmp	sub_40AD00
sub_4020AE	endp


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

; Attributes: thunk


sub_4020B3	proc near		; CODE XREF: sub_42FF50+BAp
					; sub_432980+36p
		jmp	sub_4329F0
sub_4020B3	endp


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

; Attributes: thunk


sub_4020B8	proc near		; CODE XREF: sub_421DF0+23p
					; sub_422240+11p
		jmp	sub_4223E0
sub_4020B8	endp


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

; Attributes: noreturn thunk


sub_4020BD	proc near		; CODE XREF: sub_4220E0+4p
		jmp	sub_4224F0
sub_4020BD	endp


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

; Attributes: thunk


sub_4020C2	proc near		; CODE XREF: ___:0042ABCBp
		jmp	sub_42A440
sub_4020C2	endp


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

; Attributes: thunk


sub_4020C7	proc near		; CODE XREF: ___:0041A212p
		jmp	sub_41A2B0
sub_4020C7	endp


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

; Attributes: thunk


sub_4020CC	proc near		; CODE XREF: sub_416760+Ap
		jmp	sub_4168C0
sub_4020CC	endp

; ---------------------------------------------------------------------------
		jmp	loc_42B2D0

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

; Attributes: noreturn thunk


sub_4020D6	proc near		; CODE XREF: sub_415C70+4p
		jmp	sub_416490
sub_4020D6	endp


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

; Attributes: noreturn thunk


sub_4020DB	proc near		; CODE XREF: ___:0042F4B6p
					; ___:0042F518p ...
		jmp	sub_4337E0
sub_4020DB	endp


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

; Attributes: thunk


sub_4020E0	proc near		; CODE XREF: sub_418D20+8p
		jmp	sub_418FC0
sub_4020E0	endp


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

; Attributes: noreturn thunk


sub_4020E5	proc near		; CODE XREF: sub_418890+34p
					; sub_418D80+67p
		jmp	sub_418BA0
sub_4020E5	endp


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

; Attributes: thunk


sub_4020EA	proc near		; CODE XREF: sub_41A6D0+117p
		jmp	sub_41A860
sub_4020EA	endp


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

; Attributes: thunk


sub_4020EF	proc near		; CODE XREF: sub_415AA0+35p
		jmp	sub_416570
sub_4020EF	endp


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

; Attributes: thunk


sub_4020F4	proc near		; CODE XREF: ___:004050CCp
					; sub_4066E0+43p ...
		jmp	sub_409BC0
sub_4020F4	endp


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

; Attributes: thunk


sub_4020F9	proc near		; CODE XREF: sub_40BD20+5p
					; sub_40BE60+6p ...
		jmp	sub_40C060
sub_4020F9	endp

; ---------------------------------------------------------------------------
		jmp	loc_42F5B0

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

; Attributes: noreturn thunk


sub_402103	proc near		; CODE XREF: ___:00416E7Ap
		jmp	sub_4190B0
sub_402103	endp


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

; Attributes: thunk


sub_402108	proc near		; CODE XREF: ___:00429A33p
		jmp	sub_429A60
sub_402108	endp


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

; Attributes: thunk


sub_40210D	proc near		; CODE XREF: ___:00410E9Dp
					; ___:004112F2p ...
		jmp	sub_4147D0
sub_40210D	endp


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

; Attributes: thunk


sub_402112	proc near		; CODE XREF: sub_4139B0+38p
					; sub_413DA0+5Fp
		jmp	sub_413510
sub_402112	endp


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

; Attributes: thunk


sub_402117	proc near		; CODE XREF: sub_40A130+14p
					; sub_40A160+7p ...
		jmp	sub_40A180
sub_402117	endp


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

; Attributes: thunk


sub_40211C	proc near		; CODE XREF: ___:0042A2A7p
		jmp	sub_429D00
sub_40211C	endp


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

; Attributes: thunk


sub_402121	proc near		; CODE XREF: sub_40ABE0+1Ap
					; sub_40AC30+1Ap
		jmp	sub_40ACA0
sub_402121	endp


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

; Attributes: thunk


sub_402126	proc near		; CODE XREF: sub_415600+3p
					; ___:00415E1Fp ...
		jmp	sub_416050
sub_402126	endp

; ---------------------------------------------------------------------------
		jmp	loc_40FF60

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

; Attributes: thunk


sub_402130	proc near		; CODE XREF: sub_4147D0+EDp
		jmp	sub_415830
sub_402130	endp

; ---------------------------------------------------------------------------
		jmp	loc_41B390

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

; Attributes: thunk


sub_40213A	proc near		; CODE XREF: sub_40BE20+3p
		jmp	sub_40C0A0
sub_40213A	endp


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

; Attributes: thunk


sub_40213F	proc near		; CODE XREF: sub_40BEC0+11p
					; ___:0040BEE7p ...
		jmp	sub_40C1E0
sub_40213F	endp


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

; Attributes: thunk


sub_402144	proc near		; CODE XREF: ___:0041E925p
		jmp	sub_4207E0
sub_402144	endp


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

; Attributes: thunk


sub_402149	proc near		; CODE XREF: ___:0041DE82p
		jmp	sub_41C070
sub_402149	endp


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

; Attributes: noreturn thunk


sub_40214E	proc near		; CODE XREF: sub_418BC0+32p
		jmp	sub_418E90
sub_40214E	endp


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

; Attributes: thunk


sub_402153	proc near		; CODE XREF: sub_40EC30+ACp
					; ___:0040F35Dp
		jmp	sub_40ED70
sub_402153	endp


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

; Attributes: thunk


sub_402158	proc near		; CODE XREF: sub_4137E0+93p
		jmp	sub_433A20
sub_402158	endp


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

; Attributes: noreturn thunk


sub_40215D	proc near		; CODE XREF: sub_4151D0+1Fp
					; sub_415AA0+2Cp
		jmp	sub_415A00
sub_40215D	endp


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

; Attributes: thunk


sub_402162	proc near		; CODE XREF: ___:0042541Dp
		jmp	sub_4253E0
sub_402162	endp


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

; Attributes: noreturn thunk


sub_402167	proc near		; CODE XREF: sub_420530+17Dp
		jmp	sub_4219D0
sub_402167	endp


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

; Attributes: thunk


sub_40216C	proc near		; CODE XREF: ___:0042C261p
		jmp	sub_42A090
sub_40216C	endp

; ---------------------------------------------------------------------------
		jmp	loc_409B10

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

; Attributes: thunk


sub_402176	proc near		; CODE XREF: sub_40A9F0+6Ap
					; sub_40A9F0+103p
		jmp	sub_40AC30
sub_402176	endp

; ---------------------------------------------------------------------------
		jmp	loc_426620
; ---------------------------------------------------------------------------
		jmp	loc_41AC00

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

; Attributes: thunk


sub_402185	proc near		; CODE XREF: sub_407220+16p
					; sub_407260+Bp ...
		jmp	sub_4074C0
sub_402185	endp

; ---------------------------------------------------------------------------
		jmp	loc_416CE0

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

; Attributes: thunk


sub_40218F	proc near		; CODE XREF: sub_40B000+1Bp
		jmp	sub_432AD0
sub_40218F	endp


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

; Attributes: thunk


sub_402194	proc near		; CODE XREF: ___:00415A5Ap
		jmp	sub_4164E0
sub_402194	endp


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

; Attributes: thunk


sub_402199	proc near		; CODE XREF: sub_42F6B0+ABp
					; sub_430690+1Bp ...
		jmp	sub_430700
sub_402199	endp

; ---------------------------------------------------------------------------
		jmp	loc_42EA90

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

; Attributes: noreturn thunk


sub_4021A3	proc near		; CODE XREF: ___:004086B7p
					; ___:004086DCp ...
		jmp	sub_4198C0
sub_4021A3	endp

; ---------------------------------------------------------------------------
		jmp	loc_42C710

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

; Attributes: thunk


sub_4021AD	proc near		; CODE XREF: sub_40B520+55p
		jmp	sub_409FD0
sub_4021AD	endp

; ---------------------------------------------------------------------------
		jmp	loc_428220

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

; Attributes: noreturn thunk


sub_4021B7	proc near		; CODE XREF: sub_421AF0+34p
					; sub_422410+67p
		jmp	sub_422130
sub_4021B7	endp


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

; Attributes: thunk


sub_4021BC	proc near		; CODE XREF: sub_4070F0+2Cp
					; sub_4070F0+68p ...
		jmp	sub_407260
sub_4021BC	endp

; ---------------------------------------------------------------------------
		jmp	loc_4333F0

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

; Attributes: thunk


sub_4021C6	proc near		; CODE XREF: ___:0041C7C3p
					; ___:0041C942p ...
		jmp	sub_41D670
sub_4021C6	endp


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

; Attributes: noreturn thunk


sub_4021CB	proc near		; CODE XREF: sub_40BC70+11p
					; sub_40BEC0+1Fp
		jmp	sub_40BFF0
sub_4021CB	endp

; ---------------------------------------------------------------------------
		jmp	loc_42F5F0

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

; Attributes: thunk


sub_4021D5	proc near		; CODE XREF: sub_4245F0+1Ap
					; sub_4246D0+1Bp ...
		jmp	sub_424420
sub_4021D5	endp


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

; Attributes: noreturn thunk


sub_4021DA	proc near		; CODE XREF: ___:004169BBp
		jmp	sub_418940
sub_4021DA	endp


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

; Attributes: noreturn thunk


sub_4021DF	proc near
		jmp	sub_42BB70
sub_4021DF	endp

; ---------------------------------------------------------------------------
		jmp	loc_42EC80
; ---------------------------------------------------------------------------
		jmp	loc_42EE10

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

; Attributes: thunk


sub_4021EE	proc near		; CODE XREF: sub_433160+1Bp
		jmp	sub_4331D0
sub_4021EE	endp


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

; Attributes: thunk


sub_4021F3	proc near		; CODE XREF: sub_42E400+101p
		jmp	sub_42DD50
sub_4021F3	endp

; ---------------------------------------------------------------------------
		jmp	loc_4071C0
; ---------------------------------------------------------------------------
		jmp	loc_42E2D0
; ---------------------------------------------------------------------------
		jmp	locret_418840

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

; Attributes: thunk


sub_402207	proc near		; CODE XREF: sub_4036D0+25p
					; sub_4036D0+35p ...
		jmp	sub_403C90
sub_402207	endp

; ---------------------------------------------------------------------------
		jmp	loc_433100

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

; Attributes: thunk


sub_402211	proc near		; CODE XREF: sub_418330+88p
					; sub_418330+98p
		jmp	sub_418A90
sub_402211	endp


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

; Attributes: thunk


sub_402216	proc near		; CODE XREF: ___:00416ABBp
					; ___:00439F0Aj ...
		jmp	sub_417770
sub_402216	endp


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

; Attributes: thunk


sub_40221B	proc near		; CODE XREF: sub_418AE0+5p
		jmp	sub_418D50
sub_40221B	endp


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

; Attributes: thunk


sub_402220	proc near		; CODE XREF: sub_414640+3p
		jmp	sub_414670
sub_402220	endp


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

; Attributes: thunk


sub_402225	proc near		; CODE XREF: ___:0042F2FBp
					; ___:0042FC27p ...
		jmp	sub_430AD0
sub_402225	endp

; ---------------------------------------------------------------------------
		jmp	loc_427600

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

; Attributes: thunk


sub_40222F	proc near		; CODE XREF: sub_42F840+102p
					; sub_431730+5Dp ...
		jmp	sub_430810
sub_40222F	endp


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

; Attributes: thunk


sub_402234	proc near		; CODE XREF: sub_413510+5Cp
					; sub_413510+C0p ...
		jmp	sub_415460
sub_402234	endp

; ---------------------------------------------------------------------------
		jmp	loc_431410
; ---------------------------------------------------------------------------
		jmp	loc_42F170

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

; Attributes: thunk


sub_402243	proc near		; CODE XREF: ___:0041DA33p
		jmp	sub_42D0D0
sub_402243	endp


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

; Attributes: thunk


sub_402248	proc near		; CODE XREF: sub_42E400+148p
					; sub_42E400+173p
		jmp	sub_42DC70
sub_402248	endp

; ---------------------------------------------------------------------------
		jmp	loc_42E1A0

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

; Attributes: thunk


sub_402252	proc near		; CODE XREF: sub_4133D0+34p
					; sub_4147D0+40p
		jmp	sub_4158F0
sub_402252	endp


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

; Attributes: thunk


sub_402257	proc near		; CODE XREF: ___:0040CD54p
					; sub_40CF60+ADp
		jmp	sub_40CF60
sub_402257	endp

; ---------------------------------------------------------------------------
		jmp	loc_42E220

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

; Attributes: thunk


sub_402261	proc near		; CODE XREF: ___:00423378p
		jmp	loc_423FA0
sub_402261	endp

; ---------------------------------------------------------------------------
		jmp	loc_419A90
; ---------------------------------------------------------------------------


loc_40226B:				; CODE XREF: ___:00438CE6j
		jmp	loc_40CEE0
; ---------------------------------------------------------------------------
		db 1270h dup(0CCh)

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



sub_4034E0	proc near		; CODE XREF: sub_4019B5j

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_4034E0
		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_403539
		lea	edx, [esp+478h+arg_8]
		lea	ecx, [esp+478h+var_404]


loc_40352A:				; CODE XREF: sub_4034E0+57j
		add	edx, 4
		mov	[ecx], eax
		inc	esi
		add	ecx, 4
		mov	eax, [edx]
		cmp	eax, edi
		jnz	short loc_40352A


loc_403539:				; CODE XREF: sub_4034E0+3Dj
		lea	ecx, [esp+478h+var_468]
		mov	[esp+esi*4+478h+var_408], edi
		call	sub_401424
		push	offset dword_4435EC
		lea	ecx, [esp+47Ch+var_438]
		mov	[esp+47Ch+var_4], 1
		call	sub_401861
		push	offset dword_443520
		lea	ecx, [esp+47Ch+var_468]
		mov	byte ptr [esp+47Ch+var_4], 2
		call	sub_401A87
		push	offset byte_446F60
		lea	ecx, [esp+47Ch+var_450]
		call	sub_401861
		mov	byte ptr [esp+478h+var_4], 3
		xor	esi, esi
		lea	edi, [esp+478h+var_408]


loc_403591:				; CODE XREF: sub_4034E0+105j
		mov	ebp, [edi]
		test	ebp, ebp
		jz	short loc_4035E7
		lea	ecx, [esp+478h+var_438]
		call	sub_401681
		dec	ebp
		push	eax
		lea	ecx, [esp+47Ch+var_420]
		push	ebp
		push	ecx
		lea	ecx, [esp+484h+var_468]
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+478h+var_4], 4
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+47Ch+var_450]
		call	sub_401A9B
		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_403591


loc_4035E7:				; CODE XREF: sub_4034E0+B5j
		mov	esi, [esp+478h+arg_0]
		lea	edx, [esp+478h+var_450]
		push	edx
		mov	ecx, esi
		call	sub_4014C9
		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_4034E0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 60h dup(0CCh)

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



sub_4036B0	proc near		; CODE XREF: sub_401681j
		mov	eax, [ecx+9]
		retn
sub_4036B0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_4036D0	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_4036D0
		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_402207
		lea	ecx, [esi+52h]
		mov	[esp+14h+var_4], 0
		call	sub_402207
		lea	ecx, [esi+9Bh]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_402207
		lea	ecx, [esi+0E4h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_402207
		lea	ecx, [esi+12Dh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_402207
		lea	ecx, [esi+176h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_402207
		lea	ecx, [esi+1BFh]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_402207
		lea	ecx, [esi+208h]
		mov	byte ptr [esp+14h+var_4], 6
		call	sub_402207
		lea	ecx, [esi+251h]
		mov	byte ptr [esp+14h+var_4], 7
		call	sub_402207
		lea	ecx, [esi+29Ah]
		mov	byte ptr [esp+14h+var_4], 8
		call	sub_402207
		lea	ecx, [esi+2E3h]
		mov	byte ptr [esp+14h+var_4], 9
		call	sub_402207
		lea	ecx, [esi+32Ch]
		mov	byte ptr [esp+14h+var_4], 0Ah
		call	sub_402207
		lea	ecx, [esi+375h]
		mov	byte ptr [esp+14h+var_4], 0Bh
		call	sub_402207
		lea	ecx, [esi+3BEh]
		mov	byte ptr [esp+14h+var_4], 0Ch
		call	sub_402207
		lea	ecx, [esi+407h]
		mov	byte ptr [esp+14h+var_4], 0Dh
		call	sub_402207
		lea	ecx, [esi+450h]
		mov	byte ptr [esp+14h+var_4], 0Eh
		call	sub_402207
		lea	ecx, [esi+499h]
		mov	byte ptr [esp+14h+var_4], 0Fh
		call	sub_402207
		lea	ecx, [esi+4E2h]
		mov	byte ptr [esp+14h+var_4], 10h
		call	sub_402207
		lea	ecx, [esi+52Bh]
		mov	byte ptr [esp+14h+var_4], 11h
		call	sub_402207
		mov	byte ptr [esp+14h+var_4], 12h
		lea	ecx, [esi+574h]
		call	sub_402207
		lea	ecx, [esi+5BDh]
		mov	byte ptr [esp+14h+var_4], 13h
		call	sub_402207
		lea	ecx, [esi+606h]
		mov	byte ptr [esp+14h+var_4], 14h
		call	sub_402207
		lea	ecx, [esi+64Fh]
		mov	byte ptr [esp+14h+var_4], 15h
		call	sub_402207
		lea	ecx, [esi+698h]
		mov	byte ptr [esp+14h+var_4], 16h
		call	sub_402207
		lea	ecx, [esi+6E1h]
		mov	byte ptr [esp+14h+var_4], 17h
		call	sub_402207
		lea	ecx, [esi+72Ah]
		mov	byte ptr [esp+14h+var_4], 18h
		call	sub_402207
		lea	ecx, [esi+773h]
		mov	byte ptr [esp+14h+var_4], 19h
		call	sub_402207
		lea	ecx, [esi+7BCh]
		mov	byte ptr [esp+14h+var_4], 1Ah
		call	sub_402207
		lea	ecx, [esi+805h]
		mov	byte ptr [esp+14h+var_4], 1Bh
		call	sub_402207
		lea	ecx, [esi+84Eh]
		mov	byte ptr [esp+14h+var_4], 1Ch
		call	sub_402207
		lea	ecx, [esi+897h]
		mov	byte ptr [esp+14h+var_4], 1Dh
		call	sub_402207
		lea	ecx, [esi+8E0h]
		mov	byte ptr [esp+14h+var_4], 1Eh
		call	sub_402207
		lea	ecx, [esi+929h]
		mov	byte ptr [esp+14h+var_4], 1Fh
		call	sub_402207
		lea	ecx, [esi+972h]
		mov	byte ptr [esp+14h+var_4], 20h
		call	sub_402207
		lea	ecx, [esi+9BBh]
		mov	byte ptr [esp+14h+var_4], 21h
		call	sub_402207
		lea	ecx, [esi+0A04h]
		mov	byte ptr [esp+14h+var_4], 22h
		call	sub_402207
		lea	ecx, [esi+0A4Dh]
		mov	byte ptr [esp+14h+var_4], 23h
		call	sub_402207
		lea	ecx, [esi+0A96h]
		mov	byte ptr [esp+14h+var_4], 24h
		call	sub_402207
		lea	ecx, [esi+0ADFh]
		mov	byte ptr [esp+14h+var_4], 25h
		call	sub_402207
		lea	ecx, [esi+0B28h]
		mov	byte ptr [esp+14h+var_4], 26h
		call	sub_402207
		lea	ecx, [esi+0B71h]
		mov	byte ptr [esp+14h+var_4], 27h
		call	sub_401749
		lea	ecx, [esi+0B9Fh]
		mov	byte ptr [esp+14h+var_4], 28h
		call	sub_401749
		lea	ecx, [esi+0BCDh]
		mov	byte ptr [esp+14h+var_4], 29h
		call	sub_401749
		lea	ecx, [esi+0BFBh]
		mov	byte ptr [esp+14h+var_4], 2Ah
		call	sub_401749
		lea	ecx, [esi+0C29h]
		mov	byte ptr [esp+14h+var_4], 2Bh
		call	sub_401749
		lea	ecx, [esi+0C57h]
		mov	byte ptr [esp+14h+var_4], 2Ch
		call	sub_401749
		lea	ecx, [esi+0C85h]
		mov	byte ptr [esp+14h+var_4], 2Dh
		call	sub_401749
		lea	ecx, [esi+0CB3h]
		mov	byte ptr [esp+14h+var_4], 2Eh
		call	sub_401749
		lea	ecx, [esi+0CE1h]
		mov	byte ptr [esp+14h+var_4], 2Fh
		call	sub_401749
		lea	ecx, [esi+0D0Fh]
		mov	byte ptr [esp+14h+var_4], 30h
		call	sub_401749
		lea	ecx, [esi+0D3Dh]
		mov	byte ptr [esp+14h+var_4], 31h
		call	sub_401749
		lea	ecx, [esi+0D6Bh]
		mov	byte ptr [esp+14h+var_4], 32h
		call	sub_401749
		lea	ecx, [esi+0D99h]
		mov	byte ptr [esp+14h+var_4], 33h
		call	sub_401749
		lea	ecx, [esi+0DC7h]
		mov	byte ptr [esp+14h+var_4], 34h
		call	sub_401749
		lea	ecx, [esi+0DF5h]
		mov	byte ptr [esp+14h+var_4], 35h
		call	sub_401749
		lea	ecx, [esi+0E23h]
		mov	byte ptr [esp+14h+var_4], 36h
		call	sub_401749
		lea	ecx, [esi+0E51h]
		mov	byte ptr [esp+14h+var_4], 37h
		call	sub_401749
		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_43E000
		mov	byte ptr [esi+4], 0
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4036D0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 110h	dup(0CCh)

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



sub_403C00	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_403C00
		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_403C00	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

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



sub_403C70	proc near		; CODE XREF: sub_4011B3j
		mov	eax, ecx
		mov	dword ptr [eax], offset	dword_43E004
		retn
sub_403C70	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_403C90	proc near		; CODE XREF: sub_402207j

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

		push	0FFFFFFFFh
		push	offset SEH_403C90
		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_401424
		lea	ecx, [esi+1Eh]
		mov	[esp+14h+var_4], 0
		call	sub_401424
		lea	ecx, [esi+33h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401424
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403C90	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)

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



sub_403D10	proc near		; CODE XREF: sub_401AD2j

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

		push	0FFFFFFFFh
		push	offset SEH_403D10
		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_403D10	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

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



sub_403D90	proc near		; CODE XREF: sub_401749j

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

		push	0FFFFFFFFh
		push	offset SEH_403D90
		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_401424
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_401424
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403D90	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 20h dup(0CCh)

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



sub_403E00	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_403E00
		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_402207
		lea	ecx, [esi+49h]
		mov	[esp+14h+var_4], 0
		call	sub_402207
		lea	ecx, [esi+92h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_402207
		lea	ecx, [esi+0DBh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_402207
		lea	ecx, [esi+124h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_402207
		lea	ecx, [esi+16Dh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_402207
		lea	ecx, [esi+1B6h]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_402207
		lea	ecx, [esi+1FFh]
		mov	byte ptr [esp+14h+var_4], 6
		call	sub_402207
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403E00	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

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



sub_403EE0	proc near		; CODE XREF: sub_40206Dj

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

		push	0FFFFFFFFh
		push	offset SEH_403EE0
		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_401AD2
		lea	ecx, [esi+1B6h]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_401AD2
		lea	ecx, [esi+16Dh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401AD2
		lea	ecx, [esi+124h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401AD2
		lea	ecx, [esi+0DBh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401AD2
		lea	ecx, [esi+92h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401AD2
		lea	ecx, [esi+49h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401AD2
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401AD2
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_403EE0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 30h dup(0CCh)

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

; Attributes: noreturn


sub_403FC0	proc near		; CODE XREF: sub_401D34j

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_403FC0
		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_4019B5
		add	esp, 18h
		push	esi
		mov	ecx, eax
		mov	[esp+64h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+0C29h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_403FC0	endp

; ---------------------------------------------------------------------------
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], 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+48h]
		push	2
		push	edx
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 1
		call	sub_4017E4
		push	eax
		lea	eax, [esi+0BCDh]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	0
		push	14h
		push	15h
		push	0Fh
		push	2
		push	1
		push	4Fh
		lea	ecx, [esp+40h]
		push	2
		push	ecx
		call	sub_4019B5
		add	esp, 24h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 2
		call	sub_4017E4
		lea	edx, [esi+0C57h]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	0
		push	5
		push	12h
		push	15h
		push	3
		push	5
		push	13h
		push	4Fh
		lea	eax, [esp+44h]
		push	2
		push	eax
		call	sub_4019B5
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 3
		call	sub_4017E4
		lea	ecx, [esi+0DF5h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], 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+48h]
		push	2
		push	edx
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 4
		call	sub_4017E4
		push	eax
		lea	eax, [esi+0C85h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	0
		push	10h
		push	13h
		push	0Ch
		push	4Fh
		lea	ecx, [esp+38h]
		push	2
		push	ecx
		call	sub_4019B5
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 5
		call	sub_4017E4
		lea	edx, [esi+0B71h]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], 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+4Ch]
		push	2
		push	eax
		call	sub_4019B5
		add	esp, 30h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 6
		call	sub_4017E4
		lea	ecx, [esi+0DC7h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	0
		push	0Eh
		push	5
		push	10h
		push	0Fh
		push	4Fh
		lea	edx, [esp+3Ch]
		push	2
		push	edx
		call	sub_4019B5
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 7
		call	sub_4017E4
		push	eax
		lea	eax, [esi+0D0Fh]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	0
		push	14h
		push	9
		push	15h
		push	11h
		push	4Fh
		lea	ecx, [esp+3Ch]
		push	2
		push	ecx
		call	sub_4019B5
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 8
		call	sub_4017E4
		lea	edx, [esi+0D99h]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	0
		push	4
		push	0Dh
		push	3
		push	4Fh
		lea	eax, [esp+38h]
		push	2
		push	eax
		call	sub_4019B5
		add	esp, 1Ch
		mov	dword ptr [esp+5Ch], 9
		push	esi
		mov	ecx, eax
		call	sub_4017E4
		lea	ecx, [esi+0E23h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Fh
		lea	edx, [esp+38h]
		push	2
		push	edx
		call	sub_4019B5
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 0Ah
		call	sub_4017E4
		push	eax
		lea	eax, [esi+0D6Bh]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	0
		push	13h
		push	0Eh
		push	4
		push	4Fh
		lea	ecx, [esp+38h]
		push	2
		push	ecx
		call	sub_4019B5
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 0Bh
		call	sub_4017E4
		lea	edx, [esi+0D3Dh]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], 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+48h]
		push	2
		push	eax
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 0Ch
		call	sub_4017E4
		lea	ecx, [esi+0CB3h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	0
		push	0Bh
		push	3
		push	9
		push	0Eh
		push	4Fh
		lea	edx, [esp+3Ch]
		push	2
		push	edx
		call	sub_4019B5
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+60h], 0Dh
		call	sub_4017E4
		push	eax
		lea	eax, [esi+0CE1h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		db 8Dh
		dd 8924244Ch, 0E85C247Ch, 0FFFFCE26h, 0E8094E8Dh, 0FFFFD3DCh
		dd 0C244C8Dh, 0FE85150h, 83FFFFDCh, 6A08C4h, 1D6A256Ah
		dd 548D236Ah, 286A3424h, 2444C752h, 0E74h, 0D583E800h
		dd 0C483FFFFh, 8DE88B18h, 0C60C244Ch, 0F5C2444h, 0FFD39FE8h
		dd 0CD8B50FFh, 0FFD397E8h, 0F46850FFh, 68004435h, 4D60A5h
		dd 0FFD9AEE8h, 10C483FFh, 24244C8Dh, 5C2444C6h,	0CDB8E80Eh
		dd 206AFFFFh, 4024448Dh, 8D50006Ah, 0E818244Ch,	0FFFFCE32h
		dd 44C6C88Bh, 0E8105C24h, 0FFFFD358h, 35F06850h, 75680044h
		dd 0E8004E6Eh, 0FFFFCB91h, 8D0CC483h, 0C63C244Ch, 0E5C2444h
		dd 0FFCD79E8h, 0E3E890FFh, 8B023DC2h, 4DD3B8C8h, 7C891062h
		dd 0E1F75C24h, 8D06EAC1h, 890C244Ch, 57E80556h,	8BFFFFCDh
		dd 5F54244Ch, 89645D5Eh, 0Dh, 54C48300h, 909090C3h, 3 dup(90909090h)
		dd 54h dup(0CCCCCCCCh)

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



sub_404640	proc near		; CODE XREF: sub_401A32j

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_404640
		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_40146F
		mov	cl, [eax]
		lea	edi, [esi+69h]
		cmp	cl, 23h
		jnz	short loc_404682
		push	ebx
		jmp	short loc_404686
; ---------------------------------------------------------------------------


loc_404682:				; CODE XREF: sub_404640+3Dj
		lea	eax, [esi+15h]
		push	eax


loc_404686:				; CODE XREF: sub_404640+40j
		mov	ecx, edi
		call	sub_401FBE
		mov	al, [esi+94h]
		test	al, al
		jz	short loc_4046A2
		lea	ecx, [esi+15h]
		push	ecx
		mov	ecx, edi
		call	sub_401FBE


loc_4046A2:				; CODE XREF: sub_404640+55j
		mov	al, [esi+95h]
		test	al, al
		jz	short loc_40471F
		lea	ecx, [esp+98h+var_6C]
		call	sub_401424
		push	offset dword_443604
		mov	ecx, esi
		mov	[esp+9Ch+var_4], 0
		call	sub_4013E3
		add	eax, 3
		lea	edx, [esp+98h+var_54]
		push	eax
		push	edx
		mov	ecx, esi
		call	sub_401E2E
		push	eax
		lea	ecx, [esp+9Ch+var_6C]
		mov	byte ptr [esp+9Ch+var_4], 1
		call	sub_401FBE
		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_401FBE
		lea	ecx, [esp+98h+var_6C]
		mov	[esp+98h+var_4], 0FFFFFFFFh
		call	sub_401226


loc_40471F:				; CODE XREF: sub_404640+6Aj
		push	offset dword_443600
		lea	ecx, [esp+9Ch+var_6C]
		push	0
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		lea	edx, [esp+98h+var_54]
		mov	ebx, 2
		push	1
		push	edx
		mov	ecx, eax
		mov	[esp+0A0h+var_4], ebx
		call	sub_401E2E
		lea	edi, [esi+7Eh]
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+9Ch+var_4], 3
		call	sub_401FBE
		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_40146F
		push	0
		mov	ecx, esi
		mov	ebp, eax
		call	sub_40146F
		mov	al, [eax]
		mov	cl, [ebp+0]
		cmp	al, cl
		jnz	loc_4049EA
		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_4019B5
		add	esp, 30h
		mov	ecx, eax
		mov	[esp+98h+var_4], 4
		call	sub_4017E4
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_40480F
		sub	esp, 18h
		lea	edx, [esi+15h]
		mov	ecx, esp
		mov	[esp+0B0h+arg_0], esp
		push	edx
		call	sub_4014C9
		mov	ecx, offset word_448C8E
		call	sub_401CD0
		test	eax, eax
		jz	short loc_40480F
		mov	bl, 1
		jmp	short loc_404811
; ---------------------------------------------------------------------------


loc_40480F:				; CODE XREF: sub_404640+1A6j
					; sub_404640+1C9j
		xor	bl, bl


loc_404811:				; CODE XREF: sub_404640+1CDj
		lea	ecx, [esp+98h+var_54]
		mov	[esp+98h+var_4], 0FFFFFFFFh
		call	sub_401226
		test	bl, bl
		jz	loc_4049CE
		push	offset dword_443600
		lea	eax, [esp+9Ch+var_54]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		push	offset byte_446F60
		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_4049EA
		push	offset dword_443600
		lea	ecx, [esp+9Ch+var_54]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	[esp+98h+var_4], 6
		call	sub_4017E4
		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_4049EA
		push	20h
		mov	ecx, esi
		call	sub_401D20
		lea	edx, [esp+98h+var_84]
		push	eax
		push	edx
		mov	ecx, esi
		call	sub_401E2E
		mov	ebx, 7
		push	20h
		lea	ecx, [esp+9Ch+var_84]
		mov	[esp+9Ch+var_4], ebx
		call	sub_401D20
		push	eax
		lea	eax, [esp+9Ch+var_54]
		push	eax
		lea	ecx, [esp+0A0h+var_84]
		call	sub_401E2E
		push	eax
		lea	ecx, [esp+9Ch+var_84]
		mov	byte ptr [esp+9Ch+var_4], 8
		call	sub_40200E
		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_401FBE
		push	offset dword_443600
		lea	edx, [esp+9Ch+var_24]
		push	0
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		lea	ecx, [esp+98h+var_3C]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+0A0h+var_4], 9
		call	sub_401E2E
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+9Ch+var_4], 0Ah
		call	sub_401FBE
		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_4049A7
		test	ebp, ebp
		jle	short loc_4049B8


loc_404998:				; CODE XREF: sub_404640+363j
		mov	ecx, [esp+98h+var_88]
		push	esi
		call	sub_401F69
		dec	ebp
		jnz	short loc_404998
		jmp	short loc_4049B8
; ---------------------------------------------------------------------------


loc_4049A7:				; CODE XREF: sub_404640+352j
		test	ebp, ebp
		jle	short loc_4049B8


loc_4049AB:				; CODE XREF: sub_404640+376j
		mov	ecx, [esp+98h+var_88]
		push	esi
		call	sub_401442
		dec	ebp
		jnz	short loc_4049AB


loc_4049B8:				; CODE XREF: sub_404640+356j
					; sub_404640+365j ...
		lea	ecx, [esp+98h+var_84]
		mov	[esp+98h+var_4], 0FFFFFFFFh
		call	sub_401226
		jmp	short loc_4049EA
; ---------------------------------------------------------------------------


loc_4049CE:				; CODE XREF: sub_404640+1E7j
		mov	al, [esp+98h+arg_4]
		mov	ecx, [esp+98h+var_88]
		test	al, al
		push	esi
		jnz	short loc_4049E5
		call	sub_401F69
		jmp	short loc_4049EA
; ---------------------------------------------------------------------------


loc_4049E5:				; CODE XREF: sub_404640+39Cj
		call	sub_401442


loc_4049EA:				; CODE XREF: sub_404640+162j
					; sub_404640+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_404640	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 100h	dup(0CCh)

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



sub_404B10	proc near		; CODE XREF: sub_401F69j

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, ecx
		mov	ecx, offset word_448C92
		call	sub_4014D3
		mov	esi, [esp+8+arg_0]
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jz	short loc_404B56
		sub	esp, 18h
		lea	eax, [esi+15h]
		mov	ecx, esp
		mov	[esp+20h+arg_0], esp
		push	eax
		call	sub_4014C9
		mov	ecx, offset word_448C8E
		call	sub_401CD0
		test	eax, eax
		jnz	short loc_404B56
		xor	al, al
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_404B56:				; CODE XREF: sub_404B10+1Dj
					; sub_404B10+3Dj
		sub	esp, 18h
		lea	edx, [esi+15h]
		mov	ecx, esp
		mov	[esp+20h+arg_0], esp
		push	edx
		call	sub_4014C9
		mov	ecx, offset word_448C8E
		call	sub_401CD0
		test	eax, eax
		jnz	short loc_404B96
		mov	al, [edi+469h]
		test	al, al
		jz	short loc_404B96
		push	0
		lea	ecx, [esi+2Ah]
		call	sub_40146F
		cmp	byte ptr [eax],	23h
		jz	short loc_404B96
		xor	al, al
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_404B96:				; CODE XREF: sub_404B10+64j
					; sub_404B10+6Ej ...
		push	esi
		mov	ecx, edi
		call	sub_401442
		pop	edi
		pop	esi
		retn	4
sub_404B10	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)

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



sub_404BE0	proc near		; CODE XREF: sub_401442j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	1
		lea	ecx, [esi+7Eh]
		call	sub_4017E4
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401AF0
		test	eax, eax
		jz	short loc_404C0A
		mov	ecx, [eax+2Ah]
		push	esi
		mov	eax, [ecx]
		call	dword ptr [eax]
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_404C0A:				; CODE XREF: sub_404BE0+1Cj
		xor	al, al
		pop	esi
		retn	4
sub_404BE0	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

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



sub_404C20	proc near		; CODE XREF: sub_40185Cj
		push	esi
		push	edi
		mov	edi, dword_50F8A4
		mov	esi, ecx
		call	edi
		mov	edx, dword_4D60C9
		mov	ecx, [esi+421h]
		sub	eax, edx
		cmp	eax, ecx
		jbe	short loc_404C4F
		mov	ecx, offset byte_4D60A5
		call	sub_401D0C
		call	edi
		mov	dword_4D60C9, eax


loc_404C4F:				; CODE XREF: sub_404C20+1Cj
		pop	edi
		mov	al, 1
		pop	esi
		retn
sub_404C20	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_404C70:				; CODE XREF: ___:004017C6j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_43849B
		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_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_404CE4
		lea	ecx, [esi+69h]
		call	sub_4014D3
		push	eax
		lea	ecx, [edi+2E3h]
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		jmp	loc_405675
; ---------------------------------------------------------------------------


loc_404CE4:				; CODE XREF: ___:00404CB0j
		lea	ecx, [edi+0D6Bh]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_404E75
		push	1
		push	offset dword_443600
		lea	edx, [esp+34h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		push	offset dword_443600
		lea	eax, [esp+7Ch]
		push	1
		push	eax
		mov	ecx, esi
		mov	dword ptr [esp+180h], 0
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+174h], 1
		call	sub_4017E4
		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_401424
		push	2000h
		push	2000h
		lea	ecx, [esp+1Ch]
		mov	byte ptr [esp+17Ch], 2
		call	sub_401C5D
		push	eax
		lea	ecx, [esp+34h]
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 2800000h
		lea	ecx, [esp+14h]
		push	ecx
		lea	ecx, [esp+30h]
		call	sub_401FBE
		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_4014D3
		push	eax
		push	0
		nop
		call	near ptr 27F0000h
		test	eax, eax
		jnz	short loc_404E49
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	offset dword_4436FC
		push	ecx
		push	edx
		mov	ecx, offset byte_4D60A5
		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_40566E
; ---------------------------------------------------------------------------


loc_404E49:				; CODE XREF: ___:00404DFCj
		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_405675
; ---------------------------------------------------------------------------


loc_404E75:				; CODE XREF: ___:00404CF9j
		lea	ecx, [edi+0B71h]
		call	sub_4014D3
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_404F24
		push	1
		push	offset dword_443600
		lea	eax, [esp+1Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4011EA
		mov	ecx, offset byte_4E6E75
		mov	dword ptr [esp+174h], 3
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+18h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_404F10
		mov	al, byte_4478C6
		test	al, al
		jz	short loc_404EE0
		push	offset dword_447864
		mov	ecx, offset dword_448DA0
		call	sub_401447


loc_404EE0:				; CODE XREF: ___:00404ECFj
		mov	al, byte_44790F
		test	al, al
		jz	short loc_404EF8
		push	offset byte_44793F
		mov	ecx, offset dword_448DA0
		call	sub_401942


loc_404EF8:				; CODE XREF: ___:00404EE7j
		mov	ecx, offset dword_448DA0
		call	sub_401E5B
		mov	byte_4D60BC, 0
		mov	byte_4E6E74, 0


loc_404F10:				; CODE XREF: ___:00404EC6j
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		lea	ecx, [esp+14h]
		jmp	loc_40566E
; ---------------------------------------------------------------------------


loc_404F24:				; CODE XREF: ___:00404E8Aj
		lea	ecx, [edi+0C57h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_404F6C
		lea	ecx, [esi+69h]
		call	sub_4014D3
		push	eax
		mov	ecx, offset word_4E6E8A
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		jmp	loc_405675
; ---------------------------------------------------------------------------


loc_404F6C:				; CODE XREF: ___:00404F39j
		lea	ecx, [edi+0DC7h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_405029
		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_4019B5
		add	esp, 2Ch
		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+44h]
		push	9
		push	ecx
		mov	dword ptr [esp+1ACh], 4
		call	sub_4019B5
		add	esp, 38h
		mov	edi, eax
		mov	ecx, esi
		mov	byte ptr [esp+174h], 5
		call	sub_4017E4
		push	eax
		mov	ecx, edi
		call	sub_4017E4
		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_405675
; ---------------------------------------------------------------------------


loc_405029:				; CODE XREF: ___:00404F81j
		lea	ecx, [edi+0D0Fh]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_405147
		lea	ecx, [esp+2Ch]
		call	sub_401424
		push	offset dword_443600
		lea	edx, [esp+60h]
		push	1
		push	edx
		mov	ecx, esi
		mov	dword ptr [esp+180h], 6
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+174h], 7
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+30h]
		call	sub_401A87
		lea	ecx, [esp+5Ch]
		mov	byte ptr [esp+174h], 6
		call	sub_401226
		lea	ecx, [esp+14h]
		call	sub_401424
		push	1
		mov	bl, 8
		push	0
		push	0
		lea	ecx, [esp+38h]
		mov	[esp+180h], bl
		call	sub_4017E4
		push	eax
		push	offset dword_4436F4
		push	0
		nop
		call	near ptr 7CA41110h
		movsx	eax, al
		push	eax
		lea	ecx, [esp+60h]
		call	sub_4020F4
		lea	ecx, [esp+5Ch]
		mov	byte ptr [esp+174h], 9
		push	ecx
		lea	ecx, [esp+18h]
		call	sub_40200E
		lea	ecx, [esp+5Ch]
		mov	[esp+174h], bl
		call	sub_401226
		lea	ecx, [esi+69h]
		call	sub_4014D3
		push	eax
		lea	ecx, [esp+18h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D60A5
		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_40566E
; ---------------------------------------------------------------------------


loc_405147:				; CODE XREF: ___:0040503Ej
		lea	ecx, [edi+0D99h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_40516A
		mov	byte_4D60BC, al
		mov	al, 1
		jmp	loc_405675
; ---------------------------------------------------------------------------


loc_40516A:				; CODE XREF: ___:0040515Cj
		lea	ecx, [edi+0D3Dh]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_405431
		lea	ecx, [esp+5Ch]
		call	sub_401424
		push	offset dword_443600
		lea	ecx, [esp+18h]
		push	1
		mov	ebx, 0Ah
		push	ecx
		mov	ecx, esi
		mov	[esp+180h], ebx
		call	sub_4016AE
		push	offset byte_446F60
		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_4051F4
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		lea	ecx, [esp+5Ch]
		jmp	loc_40566E
; ---------------------------------------------------------------------------


loc_4051F4:				; CODE XREF: ___:004051DEj
		push	offset dword_443600
		lea	edx, [esp+18h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+174h], 0Ch
		call	sub_4017E4
		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_4052C7
		push	2
		lea	eax, [esp+78h]
		push	4
		push	eax
		call	near ptr 71ABE479h
		nop
		mov	edi, eax
		test	edi, edi
		jz	loc_4053A8
		push	offset dword_443600
		lea	ecx, [esp+18h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	edx, [edi]
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+178h], 0Dh
		call	sub_4017E4
		push	eax
		lea	eax, [esp+64h]
		push	offset dword_4436E0
		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_4014D3
		push	eax
		lea	ecx, [esp+60h]
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		jmp	loc_40540E
; ---------------------------------------------------------------------------


loc_4052C7:				; CODE XREF: ___:0040523Aj
		push	offset dword_443600
		lea	eax, [esp+18h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+174h], 0Eh
		call	sub_4017E4
		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_4053A8
		mov	ecx, [edi+0Ch]
		push	offset dword_443600
		lea	eax, [esp+18h]
		push	1
		mov	edx, [ecx]
		push	eax
		mov	ecx, esi
		mov	edi, [edx]
		call	sub_4016AE
		mov	ebp, eax
		push	edi
		mov	byte ptr [esp+178h], 0Fh
		nop
		call	near ptr 71AB3F41h
		push	eax
		mov	ecx, ebp
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+64h]
		push	offset dword_4436D4
		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_4014D3
		push	eax
		lea	ecx, [esp+60h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	ecx, [esp+5Ch]
		mov	bl, al
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		call	sub_401226
		mov	al, bl
		jmp	loc_405675
; ---------------------------------------------------------------------------


loc_4053A8:				; CODE XREF: ___:00405253j
					; ___:00405304j
		push	offset dword_443600
		lea	ecx, [esp+18h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+174h], 10h
		call	sub_4017E4
		push	eax
		lea	edx, [esp+60h]
		push	offset dword_4436BC
		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_4014D3
		push	eax
		lea	ecx, [esp+60h]
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx


loc_40540E:				; CODE XREF: ___:004052C2j
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	ecx, [esp+5Ch]
		mov	bl, al
		mov	[esp+174h], ebp
		call	sub_401226
		mov	al, bl
		jmp	loc_405675
; ---------------------------------------------------------------------------


loc_405431:				; CODE XREF: ___:0040517Fj
		lea	ecx, [edi+0BCDh]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_405522
		lea	ecx, [edi+9]
		call	sub_4017E4
		lea	edx, [esp+14h]
		push	eax
		push	edx
		call	sub_402022
		add	esp, 8
		push	0
		push	25h
		push	1Dh
		push	23h
		lea	eax, [esp+3Ch]
		mov	ebx, 11h
		push	28h
		push	eax
		mov	[esp+18Ch], ebx
		call	sub_4019B5
		add	esp, 18h
		mov	esi, eax
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 12h
		call	sub_4017E4
		push	eax
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		push	offset dword_4435F4
		push	offset byte_4D60A5
		call	sub_401E0B
		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_4017E4
		push	eax
		push	offset dword_4435F0
		push	offset byte_4E6E75
		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_405675
; ---------------------------------------------------------------------------


loc_405522:				; CODE XREF: ___:00405446j
		lea	ecx, [edi+0E23h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_405690
		push	offset dword_443600
		lea	edx, [esp+60h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		mov	edi, eax
		mov	ecx, ebp
		mov	dword ptr [esp+174h], 14h
		call	sub_4013D9
		mov	ecx, edi
		mov	ebx, eax
		call	sub_4013D9
		mov	ecx, esi
		lea	edi, [ebx+eax+3]
		call	sub_4013D9
		cmp	eax, edi
		lea	ecx, [esp+5Ch]
		setle	bl
		or	edi, 0FFFFFFFFh
		mov	[esp+174h], edi
		call	sub_401226
		test	bl, bl
		jnz	loc_405673
		lea	ecx, [esp+2Ch]
		call	sub_401424
		mov	ecx, ebp
		mov	dword ptr [esp+174h], 15h
		call	sub_4013D9
		add	eax, 2
		mov	ecx, esi
		push	eax
		call	sub_40146F
		push	eax
		lea	ecx, [esp+30h]
		call	sub_4015D7
		lea	ecx, [esp+14h]
		call	sub_401424
		lea	ecx, [esp+2Ch]
		mov	byte ptr [esp+174h], 16h
		call	sub_4017E4
		push	eax
		lea	eax, [esp+18h]
		push	offset dword_4436AC
		push	eax
		call	sub_40102D
		add	esp, 0Ch
		lea	ecx, [esp+2Ch]
		call	sub_4017E4
		push	eax
		call	near ptr 77C293C7h
		nop
		add	esp, 4
		cmp	eax, edi
		lea	ecx, [esi+69h]
		jnz	short loc_40562A
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	offset dword_4436FC
		push	ecx
		push	edx
		jmp	short loc_405648
; ---------------------------------------------------------------------------


loc_40562A:				; CODE XREF: ___:0040560Dj
		call	sub_4014D3
		push	eax
		lea	ecx, [esp+18h]
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx


loc_405648:				; CODE XREF: ___:00405628j
		mov	ecx, offset byte_4D60A5
		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_40566E:				; CODE XREF: ___:00404E44j
					; ___:00404F1Fj ...
		call	sub_401226


loc_405673:				; CODE XREF: ___:00405592j
					; ___:004058E0j
		xor	al, al


loc_405675:				; CODE XREF: ___:00404CDFj
					; ___:00404E70j ...
		mov	ecx, [esp+16Ch]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 168h
		retn	4
; ---------------------------------------------------------------------------


loc_405690:				; CODE XREF: ___:00405537j
		lea	ecx, [edi+0C85h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_405706
		lea	edx, [esp+14h]
		mov	ecx, edi
		push	edx
		call	sub_401F3C
		mov	edi, eax
		lea	ecx, [esi+69h]
		mov	dword ptr [esp+174h], 17h
		call	sub_4014D3
		push	eax
		mov	ecx, edi
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	ecx, [esp+14h]
		mov	bl, al
		mov	dword ptr [esp+174h], 0FFFFFFFFh
		call	sub_401226
		mov	al, bl
		jmp	loc_405675
; ---------------------------------------------------------------------------


loc_405706:				; CODE XREF: ___:004056A5j
		lea	ecx, [edi+0CE1h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4057F7
		push	1
		push	offset dword_443600
		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_4017E4
		push	eax
		push	offset dword_4435F0
		push	offset byte_4E6E75
		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_4019B5
		add	esp, 18h
		mov	esi, eax
		mov	ecx, offset byte_4E6E75
		mov	dword ptr [esp+174h], 1Ah
		call	sub_4017E4
		push	eax
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		push	offset dword_4435F4
		push	offset byte_4D60A5
		call	sub_401E0B
		add	esp, 10h
		lea	ecx, [esp+14h]
		mov	[esp+174h], edi
		call	sub_401226
		mov	al, 1
		jmp	loc_405675
; ---------------------------------------------------------------------------


loc_4057F7:				; CODE XREF: ___:0040571Bj
		lea	ecx, [edi+0CB3h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4058CB
		push	offset dword_443600
		lea	eax, [esp+30h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+174h], 1Bh
		call	sub_4017E4
		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_40585F
		mov	ebx, 7


loc_40585F:				; CODE XREF: ___:00405858j
		lea	ecx, [esp+14h]
		push	ebx
		push	ecx
		mov	ecx, edi
		call	sub_40194C
		push	offset byte_446F60
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+178h], 1Ch
		call	sub_4012EE
		test	eax, eax
		jz	short loc_4058B4
		lea	ecx, [esi+69h]
		call	sub_4014D3
		push	eax
		lea	ecx, [esp+18h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D60A5
		call	sub_401118


loc_4058B4:				; CODE XREF: ___:00405887j
		lea	ecx, [esp+14h]
		mov	[esp+174h], ebp
		call	sub_401226
		mov	al, 1
		jmp	loc_405675
; ---------------------------------------------------------------------------


loc_4058CB:				; CODE XREF: ___:0040580Cj
		lea	ecx, [edi+0DF5h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_405673
		lea	ecx, [esp+78h]
		call	sub_401424
		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_4019B5
		add	esp, 0BCh
		mov	ecx, eax
		mov	byte ptr [esp+174h], 1Eh
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+7Ch]
		call	sub_401A87
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 1Dh
		call	sub_401226
		mov	edi, offset dword_4436A8
		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_50F75C
		mov	edi, ecx
		lea	ecx, [esp+10h]
		push	ecx
		push	20019h
		push	eax
		push	offset dword_44368C
		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_4019B5
		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_4017E4
		mov	edx, [esp+20h]
		push	eax
		push	edx
		nop
		call	near ptr 2940000h
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+174h], 1Dh
		call	sub_401226
		mov	eax, [esp+10h]
		mov	edi, dword_50F738
		push	eax
		call	edi
		lea	ecx, [esp+10h]
		push	ecx
		push	0F003Fh
		push	0
		lea	ecx, [esp+84h]
		call	sub_4017E4
		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_4019B5
		add	esp, 2Ch
		mov	ecx, eax
		mov	byte ptr [esp+174h], 20h
		call	sub_4017E4
		mov	ebp, dword_50F764
		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_4019B5
		add	esp, 2Ch
		mov	ecx, eax
		mov	byte ptr [esp+174h], 21h
		call	sub_4017E4
		push	eax
		call	sub_4015FA
; ---------------------------------------------------------------------------
		db 83h,	0C4h, 4
		dd 14244C8Dh, 742484C6h, 1D000001h, 0FFB709E8h,	244C8DFFh
		dd 0B8FEE844h, 22B3FFFFh, 10468h, 1046800h, 4C8D0000h
		dd 9C884C24h, 17C24h, 0C11BE800h, 0E850FFFFh, 23DAE81h
		dd 6A006A90h, 6A186A05h, 6A4E6A05h, 6A0E6A48h, 8D126A15h
		dd 6A382444h, 4EE85009h, 83FFFFBEh, 0C88B2CC4h,	742484C6h
		dd 23000001h, 0FFBC6BE8h, 4C8D50FFh, 61E84824h,	50FFFFBCh
		dd 4C244C8Dh, 44368468h, 9AE85100h, 83FFFFB4h, 4C8D10C4h
		dd 9C881424h, 17424h, 0B680E800h, 4C8DFFFFh, 0D2E84424h
		dd 50FFFFBAh, 3DAC2EE8h, 548D9002h, 4C8D1024h, 68527824h
		dd 0F003Fh, 19E8006Ah, 50FFFFBCh, 268h,	6AD6FF80h, 6A056A00h
		dd 6A056A18h, 6A056A4Eh, 8D016A14h, 6A342444h, 0C6E85012h
		dd 83FFFFBDh, 0C88B28C4h, 742484C6h, 24000001h,	0FFBBE3E8h
		dd 244C8BFFh, 0FF515010h, 244C8DD5h, 249C8814h,	174h, 0FFB60DE8h
		dd 24548BFFh, 0D7FF5210h, 56A006Ah, 56A186Ah, 486A4E6Ah
		dd 486A0E6Ah, 126A496Ah, 456A456Ah, 4424448Dh, 0E850096Ah
		dd 0FFFFBD71h, 8B38C483h, 2484C6C8h, 174h, 0BB8EE825h
		dd 0E850FFFFh, 0FFFFB99Eh, 8D04C483h, 8814244Ch, 174249Ch
		dd 0B7E80000h, 68FFFFB5h, 104h,	10468h,	244C8D00h, 0BFDBE84Ch
		dd 9050FFFFh, 3DAD40E8h, 6A006A02h, 6A186A05h, 6A4E6A05h
		dd 6A0E6A48h, 6A496A48h, 6A456A12h, 244C8D45h, 51096A44h
		dd 0FFBD08E8h, 38C483FFh, 84C6C88Bh, 17424h, 25E82600h
		dd 50FFFFBBh, 48244C8Dh, 0FFBB1BE8h, 548D50FFh,	84684C24h
		dd 52004436h, 0FFB354E8h, 10C483FFh, 14244C8Dh,	74249C88h
		dd 0E8000001h, 0FFFFB53Ah, 44244C8Dh, 0FFB98CE8h, 0E89050FFh
		dd 23DAAE7h, 1024448Dh,	78244C8Dh, 3F6850h, 6A000Fh, 0FFBAD3E8h
		dd 26850FFh, 0FF800000h, 6A006AD6h, 6A186A05h, 6A4E6A05h
		dd 6A146A05h, 8D136A01h, 6A38244Ch, 7EE85113h, 83FFFFBCh
		dd 0C88B2CC4h, 742484C6h, 27000001h, 0FFBA9BE8h, 24548BFFh
		dd 0FF525010h, 244C8DD5h, 249C8814h, 174h, 0FFB4C5E8h
		dd 24448BFFh, 0D7FF5010h, 56A006Ah, 56A186Ah, 136A4E6Ah
		dd 136A196Ah, 96A0E6Ah,	3C244C8Dh, 0E851176Ah, 0FFFFBC2Dh
		dd 8B30C483h, 2484C6C8h, 174h, 0BA4AE828h, 0E850FFFFh
		dd 0FFFFB85Ah, 8D04C483h, 8814244Ch, 174249Ch, 73E80000h
		dd 68FFFFB4h, 104h, 10468h, 244C8D00h, 0BE97E84Ch, 9050FFFFh
		dd 3DABFCE8h, 6A006A02h, 6A186A05h, 6A4E6A05h, 6A196A13h
		dd 6A0E6A13h, 24548D09h, 52176A3Ch, 0FFBBC8E8h,	30C483FFh
		dd 84C6C88Bh, 17424h, 0E5E82900h, 50FFFFB9h, 48244C8Dh
		dd 0FFB9DBE8h, 448D50FFh, 84684C24h, 50004436h,	0FFB214E8h
		dd 10C483FFh, 14244C8Dh, 74249C88h, 0E8000001h,	0FFFFB3FAh
		dd 44244C8Dh, 0FFB84CE8h, 0A8E850FFh, 90023DA9h, 10244C8Dh
		dd 3F6851h, 6A000Fh, 84248C8Dh,	0E8000000h, 0FFFFB990h
		dd 26850h, 0D6FF8000h, 56A006Ah, 56A186Ah, 56A4E6Ah, 16A146Ah
		dd 106A046Ah, 46A156Ah,	548D476Ah, 46A4824h, 0BB33E852h
		dd 0C483FFFFh, 0C6C88B3Ch, 1742484h, 0E82A0000h, 0FFFFB950h
		dd 24448B50h, 0D5FF5014h, 14244C8Dh, 74249C88h,	0E8000001h
		dd 0FFFFB37Ah, 10244C8Bh, 6AD7FF51h, 6A056A00h,	6A056A18h
		dd 6A056A4Eh, 6A076A0Ch, 6A056A01h, 24548D02h, 52026A40h
		dd 0FFBAE0E8h, 34C483FFh, 84C6C88Bh, 17424h, 0FDE82B00h
		dd 50FFFFB8h, 0FFB70DE8h, 4C483FFh, 14244C8Dh, 74249C88h
		dd 0E8000001h, 0FFFFB326h, 10468h, 1046800h, 4C8D0000h
		dd 4AE84C24h, 50FFFFBDh, 0AAAFE890h, 6A023Dh, 186A056Ah
		dd 4E6A056Ah, 0C6A056Ah, 16A076Ah, 26A056Ah, 4024448Dh
		dd 0E850026Ah, 0FFFFBA79h, 8B34C483h, 2484C6C8h, 174h
		dd 0B896E82Ch, 8D50FFFFh, 0E848244Ch, 0FFFFB88Ch, 244C8D50h
		dd 3684684Ch, 0E8510044h, 0FFFFB0C5h, 8D10C483h, 8814244Ch
		dd 174249Ch, 0ABE80000h, 8DFFFFB2h, 0E844244Ch,	0FFFFB6FDh
		dd 58E89050h, 8D023DA8h, 8D102454h, 5278244Ch, 0F003F68h
		dd 0E8006A00h, 0FFFFB844h, 26850h, 0D6FF8000h, 0E6A006Ah
		dd 276A0F6Ah, 136A0B6Ah, 448D016Ah, 2E6A3024h, 0B9F3E850h
		dd 0C483FFFFh, 0C6C88B24h, 1742484h, 0E82D0000h, 0FFFFB810h
		dd 10244C8Bh, 0D5FF5150h, 14244C8Dh, 74249C88h,	0E8000001h
		dd 0FFFFB23Ah, 1024548Bh, 6AD7FF52h, 6A056A00h,	6A056A18h
		dd 6A0E6A4Eh, 6A0D6A0Fh, 6A136A0Bh, 24448D01h, 50146A40h
		dd 0FFB9A0E8h, 34C483FFh, 84C6C88Bh, 17424h, 0BDE82E00h
		dd 50FFFFB7h, 0FFB5CDE8h, 4C483FFh, 14244C8Dh, 74249C88h
		dd 0E8000001h, 0FFFFB1E6h, 10468h, 1046800h, 4C8D0000h
		dd 0AE84C24h, 50FFFFBCh, 0A96FE890h, 6A023Dh, 186A056Ah
		dd 4E6A056Ah, 0F6A0E6Ah, 0B6A0D6Ah, 16A136Ah, 40244C8Dh
		dd 0E851146Ah, 0FFFFB939h, 8B34C483h, 2484C6C8h, 174h
		dd 0B756E82Fh, 8D50FFFFh, 0E848244Ch, 0FFFFB74Ch, 36846850h
		dd 548D0044h, 0E8525024h, 0FFFFAF85h, 8D10C483h, 8814244Ch
		dd 174249Ch, 6BE80000h,	8DFFFFB1h, 0E844244Ch, 0FFFFB5BDh
		dd 0A719E850h, 8D90023Dh, 8D102444h, 5078244Ch,	0F003F68h
		dd 0E8006A00h, 0FFFFB704h, 26850h, 0D6FF8000h, 126A006Ah
		dd 126A056Ah, 0C6A0F6Ah, 186A106Ah, 0B0248C8Dh,	6A000000h
		dd 0AEE8511Fh, 83FFFFB8h, 0C88B28C4h, 742484C6h, 30000001h
		dd 0FFB6CBE8h, 24548BFFh, 0FF525010h, 248C8DD5h, 90h, 74249C88h
		dd 0E8000001h, 0FFFFB0F2h, 1024448Bh, 8BD7FF50h, 50FB0435h
		dd 36686800h, 0D6FF0044h, 44364C68h, 68D6FF00h,	44362Ch
		dd 868D6FFh, 0FF004436h, 10C483D6h, 44244C8Dh, 742484C6h
		dd 1D000001h, 0FFB0B5E8h, 244C8DFFh, 2484C778h,	174h, 0FFFFFFFFh
		dd 0FFB0A1E8h, 0E901B0FFh, 0FFFFF4E9h, 90909090h, 154h dup(0CCCCCCCCh)

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



sub_4066E0	proc near		; CODE XREF: sub_40194Cj

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_4066E0
		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_401424
		mov	esi, [esp+38h+arg_4]
		mov	ebp, 1
		cmp	esi, ebx
		mov	[esp+38h+var_4], ebp
		jnz	short loc_406731
		mov	esi, [esp+38h+arg_0]
		push	ebx
		mov	ecx, esi
		call	sub_4020F4
		mov	[esp+38h+var_28], ebp
		jmp	loc_4067D7
; ---------------------------------------------------------------------------


loc_406731:				; CODE XREF: sub_4066E0+3Aj
		call	near ptr 27E0796h
		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_4067C3
		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_44370C
		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_4014C9
		jmp	short loc_4067D3
; ---------------------------------------------------------------------------


loc_4067C3:				; CODE XREF: sub_4066E0+7Cj
		mov	esi, [esp+38h+arg_0]
		push	offset byte_446F60
		mov	ecx, esi
		call	sub_401861


loc_4067D3:				; CODE XREF: sub_4066E0+E1j
		mov	[esp+38h+var_28], ebp


loc_4067D7:				; CODE XREF: sub_4066E0+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_4066E0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_406850:				; CODE XREF: ___:00401668j
		push	ecx
		push	esi
		mov	esi, [esp+0Ch]
		push	offset byte_446F60
		mov	ecx, esi
		mov	dword ptr [esp+8], 0
		call	sub_401861
		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_406890	proc near		; CODE XREF: sub_401F3Cj

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_406890
		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_401424
		mov	[esp+1A4h+var_4], 1
		nop
		call	near ptr 27E0796h
		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
		nop
		call	near ptr 2810000h
		mov	eax, [esp+1A4h+var_128]
		cmp	eax, 4
		jnz	short loc_40695E
		mov	eax, [esp+1A4h+var_124]
		test	eax, eax
		jnz	short loc_406946
		mov	eax, [esp+1A4h+var_11C]
		cmp	eax, 1
		jnz	short loc_406936
		mov	ebp, offset dword_4437C8
		jmp	loc_4069D1
; ---------------------------------------------------------------------------


loc_406936:				; CODE XREF: sub_406890+9Aj
		cmp	eax, 2
		jnz	loc_4069CD
		mov	ebp, offset dword_4437C4
		jmp	short loc_40699A
; ---------------------------------------------------------------------------


loc_406946:				; CODE XREF: sub_406890+8Ej
		cmp	eax, 0Ah
		jnz	short loc_406952
		mov	ebp, offset dword_4437C0
		jmp	short loc_406990
; ---------------------------------------------------------------------------


loc_406952:				; CODE XREF: sub_406890+B9j
		cmp	eax, 5Ah
		jnz	short loc_40698B
		mov	ebp, offset dword_4437BC
		jmp	short loc_406990
; ---------------------------------------------------------------------------


loc_40695E:				; CODE XREF: sub_406890+83j
		cmp	eax, 5
		jnz	short loc_40698B
		mov	eax, [esp+1A4h+var_124]
		test	eax, eax
		jnz	short loc_406975
		mov	ebp, offset dword_4437B4
		jmp	short loc_406990
; ---------------------------------------------------------------------------


loc_406975:				; CODE XREF: sub_406890+DCj
		cmp	eax, 1
		jnz	short loc_406981
		mov	ebp, offset dword_4437B0
		jmp	short loc_406990
; ---------------------------------------------------------------------------


loc_406981:				; CODE XREF: sub_406890+E8j
		cmp	eax, 2
		mov	ebp, offset dword_4437A8
		jz	short loc_406990


loc_40698B:				; CODE XREF: sub_406890+C5j
					; sub_406890+D1j
		mov	ebp, offset dword_4437A4


loc_406990:				; CODE XREF: sub_406890+C0j
					; sub_406890+CCj ...
		cmp	[esp+1A4h+var_11C], 2
		jnz	short loc_4069D1


loc_40699A:				; CODE XREF: sub_406890+B4j
		mov	al, [esp+1A4h+var_118]
		test	al, al
		jz	short loc_4069D1
		lea	ecx, [esp+1A4h+var_118]
		lea	edx, [esp+1A4h+var_98]
		push	ecx
		push	ebp
		push	offset dword_443798
		push	edx
		call	near ptr byte_5EA1BD
		nop
		add	esp, 10h
		lea	ebp, [esp+1A4h+var_98]
		jmp	short loc_4069D1
; ---------------------------------------------------------------------------


loc_4069CD:				; CODE XREF: sub_406890+A9j
		mov	ebp, [esp+1A4h+var_198]


loc_4069D1:				; CODE XREF: sub_406890+A1j
					; sub_406890+108j ...
		lea	eax, [esp+1A4h+var_190]
		lea	ecx, [esp+1A4h+var_174]
		push	eax
		push	ecx
		nop
		call	near ptr 2801165h
		lea	edx, [esp+1A4h+var_194]
		lea	eax, [esp+1A4h+var_164]
		push	edx
		push	eax
		call	near ptr 2920CD9h
		nop
		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_4017F3
		push	eax
		lea	ecx, [esp+1D4h+var_18C]
		push	offset dword_443720
		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_4014C9
		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_406890	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 0A0h	dup(0CCh)

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



sub_406BA0	proc near		; CODE XREF: sub_4015DCj
		mov	eax, ecx
		mov	dword ptr [eax], offset	dword_43E008
		mov	dword ptr [eax+110h], 0
		retn
sub_406BA0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_406BD0:				; CODE XREF: ___:00401F8Cj
					; ___:00402009j
		push	esi
		mov	esi, ecx
		call	sub_40143D
		test	byte ptr [esp+8], 1
		jz	short loc_406BE8
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_406BE8:				; CODE XREF: ___:00406BDDj
		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_406C00	proc near		; CODE XREF: sub_40143Dj
		mov	dword ptr [ecx], offset	dword_43E008
		mov	ecx, [ecx+110h]
		test	ecx, ecx
		jz	short locret_406C17
		push	ecx
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx

locret_406C17:				; CODE XREF: sub_406C00+Ej
		retn
sub_406C00	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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

; Attributes: noreturn


sub_406C30	proc near		; CODE XREF: sub_401384j

arg_0		= dword	ptr  4

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_406C30
		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_406C61
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_406C61:				; CODE XREF: sub_406C30+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	sub_4367FA
sub_406C30	endp

; ---------------------------------------------------------------------------
		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	sub_4367FA
; ---------------------------------------------------------------------------
		mov	edi, [ebx+110h]
		mov	edx, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	ebp, dword_50FAF4
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		push	offset dword_443600
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		push	edx
		and	ecx, 3
		rep movsb
		call	ebp
		add	esp, 10h
		mov	[esp+58h], eax
		lea	esi, [esp+5Ch]
		mov	edi, 0FFh


loc_406D12:				; CODE XREF: ___:00406D24j
		push	offset dword_443600
		push	0
		call	ebp
		mov	[esi], eax
		add	esp, 8
		add	esi, 4
		dec	edi
		jnz	short loc_406D12
		mov	eax, [esp+58h]
		xor	ecx, ecx
		cmp	eax, ecx
		jz	loc_406F18
		lea	ebp, [esp+58h]


loc_406D38:				; CODE XREF: ___:00406F10j
		mov	edi, [ebp+0]
		mov	esi, offset dword_4437EC
		mov	eax, edi


loc_406D42:				; CODE XREF: ___:00406D60j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_406D66
		test	cl, cl
		jz	short loc_406D62
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_406D66
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_406D42


loc_406D62:				; CODE XREF: ___:00406D4Cj
		xor	eax, eax
		jmp	short loc_406D6B
; ---------------------------------------------------------------------------


loc_406D66:				; CODE XREF: ___:00406D48j
					; ___:00406D56j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_406D6B:				; CODE XREF: ___:00406D64j
		test	eax, eax
		jz	loc_406F08
		mov	esi, offset dword_4437E0
		mov	eax, edi


loc_406D7A:				; CODE XREF: ___:00406D98j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_406D9E
		test	cl, cl
		jz	short loc_406D9A
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_406D9E
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_406D7A


loc_406D9A:				; CODE XREF: ___:00406D84j
		xor	eax, eax
		jmp	short loc_406DA3
; ---------------------------------------------------------------------------


loc_406D9E:				; CODE XREF: ___:00406D80j
					; ___:00406D8Ej
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_406DA3:				; CODE XREF: ___:00406D9Cj
		test	eax, eax
		jnz	short loc_406DB0
		mov	byte ptr [ebx+9], 1
		jmp	loc_406F08
; ---------------------------------------------------------------------------


loc_406DB0:				; CODE XREF: ___:00406DA5j
		mov	esi, offset dword_4437D4
		mov	eax, edi


loc_406DB7:				; CODE XREF: ___:00406DD5j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_406DDB
		test	cl, cl
		jz	short loc_406DD7
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_406DDB
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_406DB7


loc_406DD7:				; CODE XREF: ___:00406DC1j
		xor	eax, eax
		jmp	short loc_406DE0
; ---------------------------------------------------------------------------


loc_406DDB:				; CODE XREF: ___:00406DBDj
					; ___:00406DCBj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_406DE0:				; CODE XREF: ___:00406DD9j
		test	eax, eax
		jnz	short loc_406DED
		mov	byte ptr [ebx+0Ah], 1
		jmp	loc_406F08
; ---------------------------------------------------------------------------


loc_406DED:				; CODE XREF: ___:00406DE2j
		mov	esi, offset dword_4437CC
		mov	eax, edi


loc_406DF4:				; CODE XREF: ___:00406E12j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_406E18
		test	cl, cl
		jz	short loc_406E14
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_406E18
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_406DF4


loc_406E14:				; CODE XREF: ___:00406DFEj
		xor	eax, eax
		jmp	short loc_406E1D
; ---------------------------------------------------------------------------


loc_406E18:				; CODE XREF: ___:00406DFAj
					; ___:00406E08j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_406E1D:				; CODE XREF: ___:00406E16j
		test	eax, eax
		jnz	loc_406F08
		lea	ecx, [esp+10h]
		call	sub_401424
		mov	eax, [esp+468h]
		push	offset dword_4437CC
		push	eax
		mov	dword ptr [esp+468h], 0
		nop
		call	near ptr 77C47C60h
		add	esp, 8
		test	eax, eax
		jz	loc_406EF4
		push	eax
		lea	ecx, [esp+14h]
		call	sub_4015D7
		push	1
		push	offset dword_443600
		lea	ecx, [esp+30h]
		push	1
		push	ecx
		lea	ecx, [esp+20h]
		call	sub_4011EA
		push	offset byte_446F60
		mov	ecx, eax
		mov	byte ptr [esp+464h], 1
		call	sub_4012EE
		lea	ecx, [esp+28h]
		mov	esi, eax
		mov	byte ptr [esp+460h], 0
		call	sub_401226
		test	esi, esi
		jz	short loc_406EF4
		push	1
		push	offset dword_443600
		lea	edx, [esp+48h]
		push	1
		push	edx
		lea	ecx, [esp+20h]
		mov	byte ptr [ebx+0Bh], 1
		call	sub_4011EA
		push	104h
		mov	ecx, eax
		mov	byte ptr [esp+464h], 2
		call	sub_401681
		push	eax
		lea	eax, [ebx+0Ch]
		push	eax
		nop
		call	near ptr 77C47A90h
		add	esp, 0Ch
		lea	ecx, [esp+40h]
		mov	byte ptr [esp+460h], 0
		call	sub_401226
		add	ebp, 4


loc_406EF4:				; CODE XREF: ___:00406E51j
					; ___:00406EA1j
		lea	ecx, [esp+10h]
		mov	dword ptr [esp+460h], 0FFFFFFFFh
		call	sub_401226


loc_406F08:				; CODE XREF: ___:00406D6Dj
					; ___:00406DABj ...
		mov	eax, [ebp+4]
		add	ebp, 4
		test	eax, eax
		jnz	loc_406D38
		xor	ecx, ecx


loc_406F18:				; CODE XREF: ___:00406D2Ej
		mov	al, [ebx+4]
		pop	edi
		pop	esi
		pop	ebp
		test	al, al
		jnz	short loc_406F25
		mov	[ebx+5], ecx


loc_406F25:				; CODE XREF: ___:00406F20j
		cmp	[ebx+5], ecx
		jnz	short loc_406F35
		test	al, al
		jz	short loc_406F35
		mov	dword ptr [ebx+5], 0Ah


loc_406F35:				; CODE XREF: ___:00406F28j
					; ___:00406F2Cj
		mov	[ebx+5], ecx
		mov	ecx, [esp+44Ch]
		mov	byte ptr [ebx+4], 0
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 454h
		retn	4
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 0D0h	dup(0CCh)

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

; Attributes: noreturn


sub_407030	proc near		; CODE XREF: sub_40209Fj

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_407030
		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_401749
		lea	eax, [esp+18h+var_11]
		lea	ecx, [esi+32h]
		push	eax
		mov	[esp+1Ch+var_4], 0
		call	sub_401564
sub_407030	endp

; ---------------------------------------------------------------------------
		mov	ecx, [esp+0Ch]
		mov	dword ptr [esi], offset	dword_43E00C
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

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

; Attributes: noreturn


sub_4070B0	proc near		; CODE XREF: sub_401591j

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_4015D7
		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_4014E2
sub_4070B0	endp

; ---------------------------------------------------------------------------
		pop	esi
		retn	0Ch
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)

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



sub_4070F0	proc near		; CODE XREF: sub_401AF0j

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_401AC3
		add	esi, 32h
		lea	eax, [esp+10h+var_4]
		push	eax
		mov	ecx, esi
		call	sub_401622
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_4]
		mov	[esp+10h+var_8], ecx
		push	edx
		mov	ecx, esi
		call	sub_4021BC
		push	eax
		lea	ecx, [esp+14h+var_8]
		call	sub_40183E
		test	al, al
		jz	short loc_40716B
		mov	edi, [esp+10h+arg_0]


loc_407133:				; CODE XREF: sub_4070F0+79j
		push	edi
		lea	ecx, [esp+14h+var_8]
		call	sub_40173F
		mov	ecx, [eax]
		call	sub_4012EE
		test	eax, eax
		lea	ecx, [esp+10h+var_8]
		jz	short loc_407175
		call	sub_401F0A
		lea	eax, [esp+10h+var_4]
		mov	ecx, esi
		push	eax
		call	sub_4021BC
		push	eax
		lea	ecx, [esp+14h+var_8]
		call	sub_40183E
		test	al, al
		jnz	short loc_407133


loc_40716B:				; CODE XREF: sub_4070F0+3Dj
		pop	edi
		xor	eax, eax
		pop	esi
		add	esp, 8
		retn	8
; ---------------------------------------------------------------------------


loc_407175:				; CODE XREF: sub_4070F0+5Aj
		call	sub_40173F
		mov	eax, [eax]
		pop	edi
		pop	esi
		add	esp, 8
		retn	8
sub_4070F0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4071C0:				; CODE XREF: ___:004021F8j
		xor	al, al
		retn	4
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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

; Attributes: noreturn


sub_4071E0	proc near		; CODE XREF: sub_401564j

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

; ---------------------------------------------------------------------------
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_407220	proc near		; CODE XREF: sub_401622j

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		push	eax
		call	sub_401A82
		mov	ecx, [eax]
		mov	esi, [esp+8+arg_0]
		add	esp, 4
		push	ecx
		mov	ecx, esi
		call	sub_402185
		mov	eax, esi
		pop	esi
		retn	4
sub_407220	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

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



sub_407260	proc near		; CODE XREF: sub_4021BCj

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_402185
		mov	eax, esi
		pop	esi
		retn	4
sub_407260	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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

; Attributes: noreturn


sub_407290	proc near		; CODE XREF: sub_4014E2j

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_4021BC
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_4013B6
sub_407290	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_4072D0	proc near		; CODE XREF: sub_401AC3j
		push	esi
		mov	esi, ecx
		call	sub_401B63
		mov	eax, esi
		pop	esi
		retn
sub_4072D0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_4072F0	proc near		; CODE XREF: sub_40173Fj
		mov	eax, [ecx]
		push	eax
		call	sub_401208
		add	esp, 4
		retn
sub_4072F0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_407310	proc near		; CODE XREF: sub_401F0Aj
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_401A82
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_407310	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_407340	proc near		; CODE XREF: sub_40183Ej

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401FA0
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_407340	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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

; Attributes: noreturn


sub_407370	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_401C8A
		mov	edi, eax
		push	edi
		call	sub_401C58
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_40119F
sub_407370	endp

; ---------------------------------------------------------------------------
		push	edi
		mov	ebx, eax
		call	sub_401C58
		push	edi
		mov	[eax], ebx
		call	sub_401C58
		mov	edi, [eax]
		push	edi
		call	sub_401C58
		mov	ecx, [eax]
		push	ecx
		call	sub_401A82
		mov	edx, [esp+28h]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_401208
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_401672
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		mov	esi, [esp+14h]
		mov	ecx, esi
		call	sub_402185
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

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

; Attributes: noreturn


sub_407410	proc near		; CODE XREF: sub_40119Fj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_4019C9
sub_407410	endp

; ---------------------------------------------------------------------------
		mov	edi, [esp+0Ch]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_407425
		mov	edi, esi


loc_407425:				; CODE XREF: ___:00407421j
		push	esi
		call	sub_401A82
		mov	[eax], edi
		mov	edi, [esp+14h]
		add	esp, 4
		test	edi, edi
		jnz	short loc_40743A
		mov	edi, esi


loc_40743A:				; CODE XREF: ___:00407436j
		push	esi
		call	sub_401C58
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_407460	proc near		; CODE XREF: sub_401A82j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_407460	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_407480	proc near		; CODE XREF: sub_401208j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_407480	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_4074A0	proc near		; CODE XREF: sub_401B63j
		mov	eax, ecx
		retn
sub_4074A0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_4074C0	proc near		; CODE XREF: sub_402185j

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

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_4074F0	proc near		; CODE XREF: sub_401FA0j

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

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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



sub_407520	proc near		; CODE XREF: sub_401C58j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_407520	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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

; Attributes: noreturn


sub_407540	proc near		; CODE XREF: sub_4019C9j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D16
sub_407540	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_407570	proc near		; CODE XREF: sub_401672j

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

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_4075A0	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_4075A0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

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



sub_4075C0	proc near		; CODE XREF: sub_401C8Aj
		mov	eax, [ecx]
		retn
sub_4075C0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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

; Attributes: noreturn


sub_4075E0	proc near		; CODE XREF: sub_401D16j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jge	short loc_4075EA
		xor	eax, eax


loc_4075EA:				; CODE XREF: sub_4075E0+6j
		push	eax
		call	sub_4367FA
sub_4075E0	endp

; ---------------------------------------------------------------------------
		add	esp, 4
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_407610	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_40762B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_40762B:				; CODE XREF: sub_407610+11j
		retn
sub_407610	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_407640	proc near		; CODE XREF: sub_4011CCj

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		retn
sub_407640	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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

; Attributes: noreturn


sub_407660	proc near		; CODE XREF: sub_401B2Cj

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_407660
		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_4017E4
		push	eax
		mov	eax, [esp+20h+arg_0]
		push	0
		push	eax
		mov	ecx, offset word_448D06
		call	sub_401B5E
sub_407660	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+8], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+0]
		mov	large fs:0, ecx
		add	esp, 0Ch
		retn	1Ch
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

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

; Attributes: noreturn


sub_4076F0	proc near		; CODE XREF: sub_401CC1j

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_4076F0
		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_4017E4
		push	eax
		lea	ecx, [esp+20h+arg_4]
		call	sub_4017E4
		push	eax
		mov	eax, [esp+24h+arg_0]
		push	eax
		mov	ecx, offset word_448D06
		call	sub_401B5E
sub_4076F0	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+8], 0
		call	sub_401226
		lea	ecx, [esp+2Ch]
		mov	dword ptr [esp+8], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+0]
		mov	large fs:0, ecx
		add	esp, 0Ch
		retn	34h
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)

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

; Attributes: noreturn


sub_407790	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_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_114		= byte ptr -114h
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_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_407790
		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_174]
		call	sub_401424
		lea	ecx, [esp+35Ch+var_2DC]
		mov	[esp+35Ch+var_4], 0
		call	sub_401424
		lea	ecx, [esp+35Ch+var_1A4]
		mov	byte ptr [esp+35Ch+var_4], 1
		call	sub_401424
		lea	ecx, [esp+35Ch+var_1D4]
		mov	byte ptr [esp+35Ch+var_4], 2
		call	sub_401424
		lea	ecx, [esp+35Ch+var_2C4]
		mov	byte ptr [esp+35Ch+var_4], 3
		call	sub_401424
		lea	ecx, [esp+35Ch+var_2AC]
		mov	byte ptr [esp+35Ch+var_4], 4
		call	sub_401424
		lea	ecx, [esp+35Ch+var_204]
		mov	byte ptr [esp+35Ch+var_4], 5
		call	sub_401424
		lea	ecx, [esp+35Ch+var_234]
		mov	byte ptr [esp+35Ch+var_4], 6
		call	sub_401424
		lea	ecx, [esp+35Ch+var_2F4]
		mov	byte ptr [esp+35Ch+var_4], 7
		call	sub_401424
		lea	ecx, [esp+35Ch+var_24]
		mov	byte ptr [esp+35Ch+var_4], 8
		call	sub_401424
		lea	ecx, [esp+35Ch+var_54]
		mov	byte ptr [esp+35Ch+var_4], 9
		call	sub_401424
		lea	ecx, [esp+35Ch+var_84]
		mov	byte ptr [esp+35Ch+var_4], 0Ah
		call	sub_401424
		lea	ecx, [esp+35Ch+var_3C]
		mov	byte ptr [esp+35Ch+var_4], 0Bh
		call	sub_401424
		lea	ecx, [esp+35Ch+var_6C]
		mov	byte ptr [esp+35Ch+var_4], 0Ch
		call	sub_401424
		lea	ecx, [esp+35Ch+var_264]
		mov	byte ptr [esp+35Ch+var_4], 0Dh
		call	sub_401424
		lea	ecx, [esp+35Ch+var_27C]
		mov	byte ptr [esp+35Ch+var_4], 0Eh
		call	sub_401424
		lea	ecx, [esp+35Ch+var_15C]
		mov	byte ptr [esp+35Ch+var_4], 0Fh
		call	sub_401424
		lea	ecx, [esp+35Ch+var_114]
		mov	byte ptr [esp+35Ch+var_4], 10h
		call	sub_401424
		lea	ecx, [esp+35Ch+var_18C]
		mov	byte ptr [esp+35Ch+var_4], 11h
		call	sub_401424
		mov	byte ptr [esp+35Ch+var_4], 12h
		lea	ecx, [esp+35Ch+var_144]
		call	sub_401424
		lea	ecx, [esp+35Ch+var_1BC]
		mov	byte ptr [esp+35Ch+var_4], 13h
		call	sub_401424
		lea	ecx, [esp+35Ch+var_294]
		mov	byte ptr [esp+35Ch+var_4], 14h
		call	sub_401424
		lea	ecx, [esp+35Ch+var_1EC]
		mov	byte ptr [esp+35Ch+var_4], 15h
		call	sub_401424
		lea	ecx, [esp+35Ch+var_CC]
		mov	byte ptr [esp+35Ch+var_4], 16h
		call	sub_401424
		lea	ecx, [esp+35Ch+var_21C]
		mov	byte ptr [esp+35Ch+var_4], 17h
		call	sub_401424
		lea	ecx, [esp+35Ch+var_B4]
		mov	byte ptr [esp+35Ch+var_4], 18h
		call	sub_401424
		lea	ecx, [esp+35Ch+var_24C]
		mov	byte ptr [esp+35Ch+var_4], 19h
		call	sub_401424
		lea	ecx, [esp+35Ch+var_9C]
		mov	byte ptr [esp+35Ch+var_4], 1Ah
		call	sub_401424
		lea	ecx, [esp+35Ch+var_E4]
		mov	byte ptr [esp+35Ch+var_4], 1Bh
		call	sub_401424
		lea	ecx, [esp+35Ch+var_330]
		mov	byte ptr [esp+35Ch+var_4], 1Ch
		call	sub_401424
		lea	ecx, [esp+35Ch+var_318]
		mov	byte ptr [esp+35Ch+var_4], 1Dh
		call	sub_401424
		mov	bl, 1Eh
		push	offset dword_443898
		lea	ecx, [esp+360h+var_174]
		mov	byte ptr [esp+360h+var_4], bl
		call	sub_401A87
		push	offset dword_443890
		lea	ecx, [esp+360h+var_2DC]
		call	sub_401A87
		push	offset byte_446F60
		lea	ecx, [esp+360h+var_1BC]
		call	sub_401A87
		push	offset dword_443898
		lea	ecx, [esp+360h+var_1A4]
		call	sub_401A87
		lea	eax, [esp+35Ch+var_2DC]
		lea	ecx, [esp+35Ch+var_1D4]
		push	eax
		call	sub_40200E
		push	offset byte_446F60
		lea	ecx, [esp+360h+var_294]
		call	sub_401A87
		push	offset dword_443888
		lea	ecx, [esp+360h+var_2C4]
		call	sub_401A87
		push	offset dword_443884
		lea	ecx, [esp+360h+var_E4]
		call	sub_401A87
		push	offset dword_44387C
		lea	ecx, [esp+360h+var_2AC]
		call	sub_401A87
		push	offset dword_44386C
		lea	ecx, [esp+360h+var_204]
		call	sub_401A87
		push	offset dword_443864
		lea	ecx, [esp+360h+var_234]
		call	sub_401A87
		push	offset dword_44385C
		lea	ecx, [esp+360h+var_2F4]
		call	sub_401A87
		push	offset dword_443850
		lea	ecx, [esp+360h+var_264]
		call	sub_401A87
		push	offset dword_443828
		lea	ecx, [esp+360h+var_27C]
		call	sub_401A87
		push	offset dword_44381C
		lea	ecx, [esp+360h+var_15C]
		call	sub_401A87
		push	offset dword_443808
		lea	ecx, [esp+360h+var_114]
		call	sub_401A87
		push	offset dword_4437FC
		lea	ecx, [esp+360h+var_18C]
		call	sub_401A87
		push	offset dword_4437F8
		lea	ecx, [esp+360h+var_1EC]
		call	sub_401A87
		push	0
		push	4Bh
		push	48h
		push	4Ah
		push	47h
		push	4Ch
		push	48h
		push	4Bh
		push	48h
		push	45h
		lea	ecx, [esp+384h+var_348]
		push	46h
		push	ecx
		call	sub_4019B5
		add	esp, 30h
		push	eax
		lea	ecx, [esp+360h+var_144]
		mov	byte ptr [esp+360h+var_4], 1Fh
		call	sub_40200E
		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	0Fh
		push	13h
		push	0Fh
		push	12h
		push	3
		push	9
		push	0Dh
		push	4Fh
		push	18h
		push	9
		push	6
		push	14h
		push	0Fh
		lea	edx, [esp+3B0h+var_348]
		push	8
		push	edx
		call	sub_4019B5
		add	esp, 5Ch
		push	eax
		lea	ecx, [esp+360h+var_CC]
		mov	byte ptr [esp+360h+var_4], 20h
		call	sub_40200E
		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_4019B5
		add	esp, 18h
		push	eax
		lea	ecx, [esp+360h+var_21C]
		mov	byte ptr [esp+360h+var_4], 21h
		call	sub_40200E
		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	ecx, [esp+36Ch+var_348]
		push	45h
		push	ecx
		call	sub_4019B5
		add	esp, 18h
		push	eax
		lea	ecx, [esp+360h+var_24C]
		mov	byte ptr [esp+360h+var_4], 22h
		call	sub_40200E
		lea	ecx, [esp+35Ch+var_348]
		mov	byte ptr [esp+35Ch+var_4], bl
		call	sub_401226
		push	0
		push	44h
		push	49h
		lea	edx, [esp+368h+var_348]
		push	46h
		push	edx
		call	sub_4019B5
		add	esp, 14h
		push	eax
		lea	ecx, [esp+360h+var_B4]
		mov	byte ptr [esp+360h+var_4], 23h
		call	sub_40200E
		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_4019B5
		add	esp, 18h
		push	eax
		lea	ecx, [esp+360h+var_9C]
		mov	byte ptr [esp+360h+var_4], 24h
		call	sub_40200E
		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	ecx, [esp+36Ch+var_348]
		push	14h
		push	ecx
		call	sub_4019B5
		add	esp, 18h
		push	eax
		lea	ecx, [esp+360h+var_330]
		mov	byte ptr [esp+360h+var_4], 25h
		call	sub_40200E
		mov	byte ptr [esp+35Ch+var_4], bl
		lea	ecx, [esp+35Ch+var_348]
		call	sub_401226
		push	0
		push	5
		push	13h
		push	0Ch
		push	1
		lea	edx, [esp+370h+var_348]
		push	6
		push	edx
		call	sub_4019B5
		add	esp, 1Ch
		push	eax
		lea	ecx, [esp+360h+var_318]
		mov	byte ptr [esp+360h+var_4], 26h
		call	sub_40200E
		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_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+374h+var_34C], esp
		push	eax
		call	sub_401861
		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	eax, [esp+3D0h+var_348]
		push	13h
		push	eax
		mov	byte ptr [esp+3D8h+var_4], 27h
		call	sub_4019B5
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+374h+var_4], 28h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+38Ch+var_350], esp
		push	eax
		call	sub_401861
		lea	ecx, [esi+0FECh]
		mov	byte ptr [esp+38Ch+var_4], 29h
		push	ecx
		mov	ecx, esi
		call	sub_401CC1
sub_407790	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+98h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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	edx, [esp+88h]
		push	13h
		push	edx
		mov	byte ptr [esp+3D4h], 2Ah
		call	sub_4019B5
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+370h], 2Bh
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	eax, [esi+1035h]
		mov	ecx, esi
		push	eax
		mov	byte ptr [esp+38Ch], 2Ch
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+80h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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	ecx, [esp+78h]
		push	13h
		push	ecx
		mov	byte ptr [esp+3C4h], 2Dh
		call	sub_4019B5
		add	esp, 54h
		mov	ecx, eax
		mov	byte ptr [esp+370h], 2Eh
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	edx, [esi+0FA3h]
		mov	ecx, esi
		push	edx
		mov	byte ptr [esp+38Ch], 2Fh
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+1E8h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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	eax, [esp+80h]
		push	13h
		push	eax
		mov	byte ptr [esp+3CCh], 30h
		call	sub_4019B5
		add	esp, 5Ch
		mov	ecx, eax
		mov	byte ptr [esp+370h], 31h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	ecx, [esi+0F5Ah]
		mov	byte ptr [esp+388h], 32h
		push	ecx
		mov	ecx, esi
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+68h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		mov	byte ptr [esp+370h], 33h
		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	edx, [esp+90h]
		push	13h
		push	edx
		call	sub_4019B5
		add	esp, 6Ch
		mov	ecx, eax
		mov	byte ptr [esp+370h], 34h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	edi, [esi+0E7Fh]
		mov	ecx, esi
		push	edi
		mov	byte ptr [esp+38Ch], 35h
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+1A0h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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
		mov	byte ptr [esp+3CCh], 36h
		push	13h
		lea	eax, [esp+8Ch]
		push	eax
		call	sub_4019B5
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+370h], 37h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	ecx, [esi+0F11h]
		mov	byte ptr [esp+388h], 38h
		push	ecx
		mov	ecx, esi
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+44h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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	edx, [esp+84h]
		push	13h
		push	edx
		mov	byte ptr [esp+3D0h], 39h
		call	sub_4019B5
		add	esp, 60h
		mov	ecx, eax
		mov	byte ptr [esp+370h], 3Ah
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	eax, [esi+107Eh]
		mov	ecx, esi
		push	eax
		mov	byte ptr [esp+38Ch], 3Bh
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+10h]
		mov	[esp+10h], edi
		push	ecx
		mov	ecx, offset byte_4D637F
		call	sub_401A5F
		lea	ecx, [esp+0B0h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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	edx, [esp+88h]
		push	13h
		push	edx
		mov	byte ptr [esp+3D4h], 3Ch
		call	sub_4019B5
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+370h], 3Dh
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	eax, [esi+1234h]
		mov	ecx, esi
		push	eax
		mov	byte ptr [esp+38Ch], 3Eh
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+98h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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
		mov	byte ptr [esp+3B4h], 3Fh
		push	16h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	ecx, [esp+88h]
		push	13h
		push	ecx
		call	sub_4019B5
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+370h], 40h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	edx, [esi+127Dh]
		mov	ecx, esi
		push	edx
		mov	byte ptr [esp+38Ch], 41h
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+188h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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+78h]
		push	13h
		push	eax
		mov	byte ptr [esp+3C4h], 42h
		call	sub_4019B5
		add	esp, 54h
		mov	ecx, eax
		mov	byte ptr [esp+370h], 43h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	ecx, [esi+11EBh]
		mov	byte ptr [esp+388h], 44h
		push	ecx
		mov	ecx, esi
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+1B8h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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	edx, [esp+80h]
		push	13h
		push	edx
		mov	byte ptr [esp+3CCh], 45h
		call	sub_4019B5
		add	esp, 5Ch
		mov	ecx, eax
		mov	byte ptr [esp+370h], 46h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	eax, [esi+11A2h]
		mov	ecx, esi
		push	eax
		mov	byte ptr [esp+38Ch], 47h
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+68h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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
		mov	byte ptr [esp+3C0h], 48h
		push	12h
		push	5
		push	13h
		push	3Fh
		push	9
		lea	ecx, [esp+90h]
		push	13h
		push	ecx
		call	sub_4019B5
		add	esp, 6Ch
		mov	ecx, eax
		mov	byte ptr [esp+370h], 49h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	edi, [esi+10C7h]
		mov	ecx, esi
		push	edi
		mov	byte ptr [esp+38Ch], 4Ah
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+0C8h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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+88h]
		push	13h
		push	edx
		mov	byte ptr [esp+3D4h], 4Bh
		call	sub_4019B5
		add	esp, 64h
		mov	ecx, eax
		mov	byte ptr [esp+370h], 4Ch
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	eax, [esi+1159h]
		mov	ecx, esi
		push	eax
		mov	byte ptr [esp+38Ch], 4Dh
		call	sub_401CC1
; ---------------------------------------------------------------------------
		mov	[esp+358h], bl
		lea	ecx, [esp+14h]
		call	sub_401226
		lea	ecx, [esp+44h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		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	ecx, [esp+84h]
		push	13h
		push	ecx
		mov	byte ptr [esp+3D0h], 4Eh
		call	sub_4019B5
		add	esp, 60h
		mov	ecx, eax
		mov	byte ptr [esp+370h], 4Fh
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h], esp
		push	eax
		call	sub_401861
		lea	edx, [esi+12C6h]
		mov	ecx, esi
		push	edx
		mov	byte ptr [esp+38Ch], 50h
		call	sub_401CC1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	eax, [esp+10h]
		mov	ecx, offset byte_4D637F
		push	eax
		mov	[esp+14h], edi
		call	sub_401A5F
		push	offset byte_446F60
		push	offset word_4E6E8A
		call	sub_40102D
		add	esp, 8
		lea	ecx, [esp+230h]
		call	sub_401424
		lea	ecx, [esp+260h]
		mov	byte ptr [esp+358h], 51h
		call	sub_401424
		push	56D2h
		push	539h
		mov	byte ptr [esp+360h], 52h
		call	sub_4021A3
; ---------------------------------------------------------------------------
		add	esp, 8
		lea	ecx, [esp+230h]
		push	eax
		push	offset dword_4437F4
		push	ecx
		call	sub_40102D
		push	56D2h
		push	539h
		call	sub_4021A3
; ---------------------------------------------------------------------------
		add	esp, 14h
		lea	edx, [esp+260h]
		push	eax
		push	offset dword_4437F4
		push	edx
		call	sub_40102D
		sub	esp, 0Ch
		lea	eax, [esp+44h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_4014C9
		lea	ecx, [esi+606h]
		push	ecx
		mov	ecx, esi
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+44h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+64Fh]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+44h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+805h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+44h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+84Eh]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+44h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+897h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+44h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+450h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+5Ch]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+499h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		mov	ecx, esp
		lea	edx, [esp+44h]
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+52Bh]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+44h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+574h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+44h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+0B28h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+5Ch]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+8E0h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+278h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+3BEh]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+230h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+407h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+1E8h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+5BDh]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+2A8h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+698h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		lea	edx, [esp+2C0h]
		push	edx
		call	sub_4014C9
		lea	eax, [esi+72Ah]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+290h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+6E1h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+128h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+773h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+158h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+7BCh]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	offset word_4E6E8A
		call	sub_4014C9
		lea	ecx, [esi+251h]
		push	ecx
		mov	ecx, esi
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+170h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+29Ah]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+140h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+2E3h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+188h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+32Ch]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+248h]
		mov	ecx, esp
		mov	[esp+24h], esp
		push	edx
		call	sub_4014C9
		lea	eax, [esi+375h]
		mov	ecx, esi
		push	eax
		call	sub_401B2C
; ---------------------------------------------------------------------------
		push	0
		mov	ecx, offset byte_4D637F
		call	sub_40146A
		mov	ecx, [eax]
		add	ecx, 16Dh
		call	sub_4017E4
		push	eax
		push	offset byte_44741D
		mov	ecx, offset word_448D06
		call	sub_401596
		push	0
		mov	ecx, offset byte_4D637F
		call	sub_40146A
		mov	ecx, [eax]
		add	ecx, 1B6h
		call	sub_4017E4
		push	eax
		push	offset dword_4473D4
		mov	ecx, offset word_448D06
		call	sub_401596
		push	0
		mov	ecx, offset byte_4D637F
		call	sub_40146A
		mov	ecx, [eax]
		call	sub_4017E4
		push	eax
		push	offset dword_4472B0
		mov	ecx, offset word_448D06
		call	sub_401596
		push	0
		mov	ecx, offset byte_4D637F
		call	sub_40146A
		mov	ecx, [eax]
		add	ecx, 124h
		call	sub_4017E4
		push	eax
		push	offset word_447342
		mov	ecx, offset word_448D06
		call	sub_401596
		push	0
		mov	ecx, offset byte_4D637F
		call	sub_40146A
		mov	ecx, [eax]
		add	ecx, 0DBh
		call	sub_4017E4
		push	eax
		push	offset byte_4472F9
		mov	ecx, offset word_448D06
		call	sub_401596
		push	0
		mov	ecx, offset byte_4D637F
		call	sub_40146A
		mov	ecx, [eax]
		add	ecx, 92h
		call	sub_4017E4
		push	eax
		push	offset byte_44738B
		mov	ecx, offset word_448D06
		call	sub_401596
		push	0
		mov	ecx, offset byte_4D637F
		call	sub_40146A
		mov	ecx, [eax]
		add	ecx, 1FFh
		call	sub_4017E4
		push	eax
		push	offset byte_4474AF
		mov	ecx, offset word_448D06
		call	sub_401596
		lea	ecx, [esp+248h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+24h], esp
		push	eax
		call	sub_401861
		lea	ecx, [esp+218h]
		mov	byte ptr [esp+370h], 53h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+8Ch], esp
		push	eax
		call	sub_401861
		lea	ecx, [esp+110h]
		mov	byte ptr [esp+388h], 54h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+0A8h], esp
		push	eax
		call	sub_401861
		lea	ecx, [esp+140h]
		mov	byte ptr [esp+3A0h], 55h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+0C4h], esp
		push	eax
		call	sub_401861
		mov	ecx, offset word_448C8E
		mov	byte ptr [esp+3B8h], 52h
		call	sub_40137F
; ---------------------------------------------------------------------------
		lea	ecx, [esp+260h]
		mov	byte ptr [esp+358h], 51h
		call	sub_401226
		lea	ecx, [esp+230h]
		mov	[esp+358h], bl
		call	sub_401226
		lea	ecx, [esp+44h]
		mov	byte ptr [esp+358h], 1Dh
		call	sub_401226
		lea	ecx, [esp+2Ch]
		mov	byte ptr [esp+358h], 1Ch
		call	sub_401226
		lea	ecx, [esp+278h]
		mov	byte ptr [esp+358h], 1Bh
		call	sub_401226
		lea	ecx, [esp+2C0h]
		mov	byte ptr [esp+358h], 1Ah
		call	sub_401226
		lea	ecx, [esp+110h]
		mov	byte ptr [esp+358h], 19h
		call	sub_401226
		lea	ecx, [esp+2A8h]
		mov	byte ptr [esp+358h], 18h
		call	sub_401226
		lea	ecx, [esp+140h]
		mov	byte ptr [esp+358h], 17h
		call	sub_401226
		lea	ecx, [esp+290h]
		mov	byte ptr [esp+358h], 16h
		call	sub_401226
		lea	ecx, [esp+170h]
		mov	byte ptr [esp+358h], 15h
		call	sub_401226
		lea	ecx, [esp+0C8h]
		mov	byte ptr [esp+358h], 14h
		call	sub_401226
		lea	ecx, [esp+1A0h]
		mov	byte ptr [esp+358h], 13h
		call	sub_401226
		lea	ecx, [esp+218h]
		mov	byte ptr [esp+358h], 12h
		call	sub_401226
		lea	ecx, [esp+1D0h]
		mov	byte ptr [esp+358h], 11h
		call	sub_401226
		lea	ecx, [esp+248h]
		mov	byte ptr [esp+358h], 10h
		call	sub_401226
		lea	ecx, [esp+200h]
		mov	byte ptr [esp+358h], 0Fh
		call	sub_401226
		lea	ecx, [esp+0E0h]
		mov	byte ptr [esp+358h], 0Eh
		call	sub_401226
		lea	ecx, [esp+0F8h]
		mov	byte ptr [esp+358h], 0Dh
		call	sub_401226
		lea	ecx, [esp+2F0h]
		mov	byte ptr [esp+358h], 0Ch
		call	sub_401226
		lea	ecx, [esp+320h]
		mov	byte ptr [esp+358h], 0Bh
		call	sub_401226
		lea	ecx, [esp+2D8h]
		mov	byte ptr [esp+358h], 0Ah
		call	sub_401226
		lea	ecx, [esp+308h]
		mov	byte ptr [esp+358h], 9
		call	sub_401226
		lea	ecx, [esp+338h]
		mov	byte ptr [esp+358h], 8
		call	sub_401226
		lea	ecx, [esp+68h]
		mov	byte ptr [esp+358h], 7
		call	sub_401226
		lea	ecx, [esp+128h]
		mov	byte ptr [esp+358h], 6
		call	sub_401226
		lea	ecx, [esp+158h]
		mov	byte ptr [esp+358h], 5
		call	sub_401226
		lea	ecx, [esp+0B0h]
		mov	byte ptr [esp+358h], 4
		call	sub_401226
		lea	ecx, [esp+98h]
		mov	byte ptr [esp+358h], 3
		call	sub_401226
		lea	ecx, [esp+188h]
		mov	byte ptr [esp+358h], 2
		call	sub_401226
		lea	ecx, [esp+1B8h]
		mov	byte ptr [esp+358h], 1
		call	sub_401226
		lea	ecx, [esp+80h]
		mov	byte ptr [esp+358h], 0
		call	sub_401226
		lea	ecx, [esp+1E8h]
		mov	dword ptr [esp+358h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+350h]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 350h
		retn
; ---------------------------------------------------------------------------
		db 5C0h	dup(0CCh)

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



sub_409450	proc near		; CODE XREF: sub_40146Aj

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_401974
		mov	edi, [esp+8+arg_0]
		cmp	eax, edi
		ja	short loc_409468
		mov	ecx, esi
		call	sub_40190B
; ---------------------------------------------------------------------------


loc_409468:				; CODE XREF: sub_409450+Fj
		mov	ecx, esi
		call	sub_401A37
		lea	eax, [eax+edi*4]
		pop	edi
		pop	esi
		retn	4
sub_409450	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

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



sub_409490	proc near		; CODE XREF: sub_401A5Fj

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_40168B
		pop	esi
		retn	4
sub_409490	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_4094C0	proc near		; CODE XREF: sub_401A37j
		mov	eax, [ecx+4]
		retn
sub_4094C0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_4094E0	proc near		; CODE XREF: sub_40128Aj
		mov	eax, [ecx+8]
		retn
sub_4094E0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_409500	proc near		; CODE XREF: sub_401974j
		mov	edx, [ecx+4]
		test	edx, edx
		jnz	short loc_40950A
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40950A:				; CODE XREF: sub_409500+5j
		mov	eax, [ecx+8]
		sub	eax, edx
		sar	eax, 2
		retn
sub_409500	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

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



sub_409530	proc near		; CODE XREF: sub_40168Bj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, ecx
		call	sub_401A37
		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_401B9A
		mov	ecx, edi
		call	sub_401A37
		lea	eax, [eax+esi*4]
		pop	edi
		pop	esi
		retn	8
sub_409530	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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

; Attributes: noreturn


sub_409580	proc near		; CODE XREF: sub_40190Bj

var_40		= byte ptr -40h
var_39		= byte ptr -39h
var_38		= byte ptr -38h
var_34		= byte ptr -34h
var_30		= byte ptr -30h
var_C		= dword	ptr -0Ch

		push	0FFFFFFFFh
		push	offset SEH_409580
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		lea	eax, [esp+3Ch+var_39]
		lea	ecx, [esp+3Ch+var_38]
		push	eax
		push	offset dword_443920
		nop
		call	near ptr 76081F67h
		lea	ecx, [esp+44h+var_40]
		mov	[esp+44h+var_C], 0
		push	ecx
		lea	ecx, [esp+48h+var_30]
		call	near ptr 760A0430h
		nop
		lea	edx, [esp+48h+var_34]
		push	offset dword_43F080
		push	edx
		call	sub_436832
sub_409580	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

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



sub_409600	proc near		; CODE XREF: sub_401B9Aj

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_4096CB
		mov	ecx, esi
		call	sub_401974
		cmp	edi, eax
		jnb	short loc_409633
		mov	ecx, esi
		call	sub_401974
		mov	ebp, eax
		jmp	short loc_409635
; ---------------------------------------------------------------------------


loc_409633:				; CODE XREF: sub_409600+26j
		mov	ebp, edi


loc_409635:				; CODE XREF: sub_409600+31j
		mov	ecx, esi
		call	sub_401974
		mov	ebx, eax
		push	0
		add	ebx, ebp
		mov	ecx, esi
		push	ebx
		call	sub_401CAD
; ---------------------------------------------------------------------------
		mov	edx, [esp+10h+arg_0]
		mov	ebp, eax
		mov	eax, [esi+4]
		push	ebp
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_4016D6
		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_4016D6
		mov	eax, [esi+8]
		mov	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40170D
		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_401974
		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_4096CB:				; CODE XREF: sub_409600+17j
		mov	ebx, [esp+10h+arg_0]
		mov	edx, eax
		sub	edx, ebx
		sar	edx, 2
		cmp	edx, edi
		jnb	short loc_409729
		lea	ebp, ds:0[edi*4]
		lea	ecx, [ebx+ebp]
		push	ecx
		push	eax
		push	ebx
		mov	ecx, esi
		call	sub_4016D6
		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_401F96
		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_409729:				; CODE XREF: sub_409600+D8j
		test	edi, edi
		jbe	short loc_409763
		shl	edi, 2
		push	eax
		push	eax
		sub	eax, edi
		mov	ecx, esi
		push	eax
		call	sub_4016D6
		mov	eax, [esi+8]
		push	eax
		sub	eax, edi
		push	eax
		push	ebx
		call	sub_401CCB
		mov	ecx, [esp+1Ch+arg_8]
		lea	edx, [edi+ebx]
		push	ecx
		push	edx
		push	ebx
		call	sub_401F96
		mov	eax, [esi+8]
		add	esp, 18h
		add	eax, edi
		mov	[esi+8], eax


loc_409763:				; CODE XREF: sub_409600+12Bj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
sub_409600	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 60h dup(0CCh)

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



sub_4097D0	proc near		; CODE XREF: sub_40170Dj

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_4097F0


loc_4097E1:				; CODE XREF: sub_4097D0+1Ej
		push	esi
		mov	ecx, edi
		call	sub_402072
		add	esi, 4
		cmp	esi, ebx
		jnz	short loc_4097E1


loc_4097F0:				; CODE XREF: sub_4097D0+Fj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_4097D0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

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

; Attributes: noreturn


sub_409810	proc near		; CODE XREF: sub_401294j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4367E2
sub_409810	endp

; ---------------------------------------------------------------------------
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_409830	proc near		; CODE XREF: sub_402072j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_7
		pop	ecx
		retn	4
sub_409830	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_409850	proc near		; CODE XREF: sub_4016D6j

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_409882
		push	edi
		mov	edi, [esp+10h+arg_8]


loc_409866:				; CODE XREF: sub_409850+27j
		push	esi
		push	edi
		mov	ecx, ebx
		call	sub_4015AA
		add	esi, 4
		add	edi, 4
		cmp	esi, ebp
		jnz	short loc_409866
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_409882:				; CODE XREF: sub_409850+Fj
		mov	eax, [esp+0Ch+arg_8]
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
sub_409850	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_4098A0	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_4098C7
		push	ebx
		mov	ebx, [esp+0Ch+arg_8]
		push	esi
		mov	esi, [esp+10h+arg_0]


loc_4098B6:				; CODE XREF: sub_4098A0+23j
		push	ebx
		push	esi
		mov	ecx, ebp
		call	sub_4015AA
		add	esi, 4
		dec	edi
		jnz	short loc_4098B6
		pop	esi
		pop	ebx


loc_4098C7:				; CODE XREF: sub_4098A0+Aj
		pop	edi
		pop	ebp
		retn	0Ch
sub_4098A0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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

; Attributes: noreturn


sub_4098E0	proc near		; CODE XREF: sub_401CADj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_40203B
sub_4098E0	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn	8
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

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



sub_409910	proc near		; CODE XREF: sub_4015AAj

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

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_409940	proc near		; CODE XREF: sub_401F96j

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_40995D
		mov	edx, [esp+arg_8]
		push	esi


loc_409951:				; CODE XREF: sub_409940+1Aj
		mov	esi, [edx]
		mov	[eax], esi
		add	eax, 4
		cmp	eax, ecx
		jnz	short loc_409951
		pop	esi

locret_40995D:				; CODE XREF: sub_409940+Aj
		retn
sub_409940	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

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



sub_409970	proc near		; CODE XREF: sub_401CCBj

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_409992
		mov	eax, [esp+arg_8]
		push	esi


loc_409981:				; CODE XREF: sub_409970+1Ej
		mov	esi, [ecx-4]
		sub	ecx, 4
		sub	eax, 4
		cmp	ecx, edx
		mov	[eax], esi
		jnz	short loc_409981
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_409992:				; CODE XREF: sub_409970+Aj
		mov	eax, [esp+arg_8]
		retn
sub_409970	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 =======================================

; Attributes: noreturn


sub_4099D0	proc near		; CODE XREF: sub_40203Bj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jge	short loc_4099DA
		xor	eax, eax


loc_4099DA:				; CODE XREF: sub_4099D0+6j
		shl	eax, 2
		push	eax
		call	sub_4367FA
sub_4099D0	endp

; ---------------------------------------------------------------------------
		add	esp, 4
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

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



sub_409A00	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_409A1B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_409A1B:				; CODE XREF: sub_409A00+11j
		retn
sub_409A00	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_409A30	proc near		; CODE XREF: sub_401979j

arg_0		= dword	ptr  4

		mov	al, byte_44718A
		push	esi
		test	al, al
		mov	esi, ecx
		jz	short loc_409A66
		push	edi
		nop
		call	near ptr 282181Ch
		mov	edi, dword_50F8C4
		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_409A66:				; CODE XREF: sub_409A30+Aj
		mov	ecx, [esp+4+arg_0]
		mov	byte ptr [esi+8], 1
		mov	[esi+9], ecx
		pop	esi
		retn	4
sub_409A30	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)

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



sub_409AA0	proc near		; CODE XREF: sub_401CDAj
		mov	al, byte_44718A
		push	esi
		test	al, al
		mov	esi, ecx
		jz	short loc_409ABF
		nop
		call	near ptr 2821BA8h
		mov	dword ptr [esi], 0FFFFFFFFh
		mov	dword ptr [esi+4], 0FFFFFFFFh


loc_409ABF:				; CODE XREF: sub_409AA0+Aj
		mov	byte ptr [esi+8], 0
		pop	esi
		retn
sub_409AA0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

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



sub_409AE0	proc near		; CODE XREF: sub_401424j
		mov	eax, ecx
		xor	ecx, ecx
		mov	dword ptr [eax], offset	dword_43E010
		mov	[eax+9], ecx
		mov	[eax+11h], ecx
		mov	[eax+4], cl
		mov	[eax+0Dh], ecx
		retn
sub_409AE0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_409B10:				; CODE XREF: ___:00402063j
					; ___:00402171j
		push	esi
		mov	esi, ecx
		call	sub_401226
		test	byte ptr [esp+8], 1
		jz	short loc_409B28
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_409B28:				; CODE XREF: ___:00409B1Dj
		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_409B40	proc near		; CODE XREF: sub_401861j

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_43E010
		mov	[esi+9], ebx
		mov	[esi+11h], ebx
		call	sub_4015D7
		mov	[esi+4], bl
		mov	[esi+0Dh], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_409B40	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_409B80	proc near		; CODE XREF: sub_4014C9j

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_43E010
		mov	[esi+9], ebx
		mov	[esi+11h], ebx
		call	sub_401FBE
		mov	[esi+4], bl
		mov	[esi+0Dh], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_409B80	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

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



sub_409BC0	proc near		; CODE XREF: sub_4020F4j

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_4437F4
		push	ecx
		mov	dword ptr [esi], offset	dword_43E010
		nop
		call	near ptr byte_5EA1BD
		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_4015D7
		mov	[esi+4], bl
		mov	[esi+0Dh], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		add	esp, 10h
		retn	4
sub_409BC0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

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



sub_409C30	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_43E010
		cmp	eax, edi
		jz	short loc_409C4C
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_409C4C:				; CODE XREF: sub_409C30+11j
		mov	eax, [esi+0Dh]
		mov	[esi+9], edi
		cmp	eax, edi
		jz	short loc_409C5F
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_409C5F:				; CODE XREF: sub_409C30+24j
		mov	[esi+0Dh], edi
		mov	[esi+11h], edi
		pop	edi
		pop	esi
		retn
sub_409C30	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_409C80	proc near		; CODE XREF: sub_4015D7j

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_409CEA
		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_409CAA
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_409CAA:				; CODE XREF: sub_409C80+1Fj
		lea	ebx, [ebp+2]
		push	ebx
		call	sub_4367FA
; ---------------------------------------------------------------------------
		db 8Bh
		dd 4C483F8h, 7E89FF85h,	8B2B7409h, 8BC033CBh, 116E89D1h
		dd 0F302E9C1h, 83CA8BABh, 0AAF303E1h, 8B11468Bh, 8B14244Ch
		dd 51500956h, 0DDAAE852h, 83907783h
		db 0C4h, 0Ch
; ---------------------------------------------------------------------------


loc_409CEA:				; CODE XREF: sub_409C80+Cj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_409C80	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)

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



sub_409D20	proc near		; CODE XREF: sub_401FBEj

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_4015D7
		pop	esi
		retn	4
sub_409D20	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_409D50:				; CODE XREF: ___:00401A46j
		mov	eax, [esp+4]
		sub	esp, 10h
		push	esi
		mov	esi, ecx
		push	eax
		lea	ecx, [esp+8]
		push	offset dword_4437F4
		push	ecx
		nop
		call	near ptr byte_5EA1BD
		add	esp, 0Ch
		lea	edx, [esp+4]
		mov	ecx, esi
		push	edx
		call	sub_4015D7
		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_409DA0	proc near		; CODE XREF: sub_401A9Bj

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_409E32
		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	sub_4367FA
; ---------------------------------------------------------------------------
		mov	edi, [ebx+9]
		add	esp, 4
		test	edi, edi
		mov	ebp, eax
		jz	short loc_409E32
		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_409E2F
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_409E2F:				; CODE XREF: sub_409DA0+84j
		mov	[ebx+9], ebp


loc_409E32:				; CODE XREF: sub_409DA0+Cj
					; sub_409DA0+36j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_409DA0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 30h dup(0CCh)

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



sub_409E70	proc near		; CODE XREF: sub_4016BDj

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_401A9B
		pop	esi
		retn	4
sub_409E70	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_409EA0	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_4437F4
		push	ecx
		nop
		call	near ptr byte_5EA1BD
		add	esp, 0Ch
		lea	edx, [esp+14h+var_10]
		mov	ecx, esi
		push	edx
		call	sub_401A9B
		pop	esi
		add	esp, 10h
		retn	4
sub_409EA0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

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



sub_409EF0	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_409F07
		mov	edx, [ecx+9]
		xor	eax, eax
		test	edx, edx
		setnz	al
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_409F07:				; CODE XREF: sub_409EF0+7j
		mov	eax, [ecx+9]
		push	ebx


loc_409F0B:				; CODE XREF: sub_409EF0+3Dj
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_409F36
		test	cl, cl
		jz	short loc_409F2F
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_409F36
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_409F0B


loc_409F2F:				; CODE XREF: sub_409EF0+27j
		pop	ebx
		xor	eax, eax
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_409F36:				; CODE XREF: sub_409EF0+23j
					; sub_409EF0+33j
		sbb	eax, eax
		pop	ebx
		sbb	eax, 0FFFFFFFFh
		pop	esi
		retn	4
sub_409EF0	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

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



sub_409F60	proc near		; CODE XREF: sub_401B72j

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

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_409F90	proc near		; CODE XREF: sub_401500j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jnz	short loc_409FA3
		mov	edx, [ecx+9]
		test	edx, edx
		setnz	al
		retn	4
; ---------------------------------------------------------------------------


loc_409FA3:				; CODE XREF: sub_409F90+6j
		push	eax
		mov	eax, [ecx+9]
		push	eax
		call	near ptr 77C4624Eh
		nop
		add	esp, 8
		retn	4
sub_409F90	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_409FD0	proc near		; CODE XREF: sub_4021ADj

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

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_40A000	proc near		; CODE XREF: sub_401CBCj
		push	esi
		mov	esi, ecx
		mov	eax, [esi+9]
		test	eax, eax
		jz	short loc_40A013
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_40A013:				; CODE XREF: sub_40A000+8j
		mov	dword ptr [esi+9], 0
		pop	esi
		retn
sub_40A000	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

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



sub_40A030	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	sub_436840
		mov	eax, [esp+arg_2004]
		test	eax, eax
		jz	short loc_40A072
		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_4015D7


loc_40A072:				; CODE XREF: sub_40A030+13j
		add	esp, 2000h
		retn
sub_40A030	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

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



sub_40A0A0	proc near		; CODE XREF: sub_401D20j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401316
		retn	4
sub_40A0A0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

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



sub_40A0C0	proc near		; CODE XREF: sub_401316j

arg_0		= byte ptr  4

		push	ebx
		mov	ebx, dword_50FAE0
		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_40A0E4
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40A0E4:				; CODE XREF: sub_40A0C0+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_40A0C0	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

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



sub_40A110	proc near		; CODE XREF: sub_4018A2j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401807
		retn	4
sub_40A110	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

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



sub_40A130	proc near		; CODE XREF: sub_401807j

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_402117
		pop	esi
		retn	8
sub_40A130	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)

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



sub_40A160	proc near		; CODE XREF: sub_4013E3j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_402117
		retn	4
sub_40A160	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

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



sub_40A180	proc near		; CODE XREF: sub_402117j

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_40A195
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40A195:				; CODE XREF: sub_40A180+Bj
		mov	eax, [esi+9]
		mov	ebx, dword_50FAF8
		push	edi
		push	eax
		call	ebx
		add	esp, 8
		test	eax, eax
		jnz	short loc_40A1AF
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40A1AF:				; CODE XREF: sub_40A180+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_40A180	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

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



sub_40A1F0	proc near		; CODE XREF: sub_401C5Dj

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		test	edi, edi
		jnz	short loc_40A203
		pop	edi
		xor	eax, eax
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40A203:				; CODE XREF: sub_40A1F0+Aj
		mov	eax, [esi+9]
		mov	[esi+11h], edi
		test	eax, eax
		jz	short loc_40A216
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_40A216:				; CODE XREF: sub_40A1F0+1Bj
		push	ebx
		lea	ebx, [edi+1]
		push	ebx
		call	sub_4367FA
sub_40A1F0	endp

; ---------------------------------------------------------------------------
		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
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 20h dup(0CCh)

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



sub_40A270	proc near		; CODE XREF: sub_4013D9j
		mov	eax, [ecx+11h]
		retn
sub_40A270	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40A290	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_8		= dword	ptr  0Ch

		push	0FFFFFFFFh
		push	offset SEH_40A290
		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_40A2E2
		mov	esi, [esp+34h+arg_0]
		push	offset byte_446F60
		mov	ecx, esi
		call	sub_401861
		mov	eax, esi
		pop	esi
		pop	ebp
		mov	ecx, [esp+2Ch+var_C]
		mov	large fs:0, ecx
		add	esp, 2Ch
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40A2E2:				; CODE XREF: sub_40A290+2Bj
		push	ebx
		push	edi
		lea	ecx, [esp+3Ch+var_24]
		call	sub_401424
		mov	[esp+3Ch+var_4], esi
		lea	esi, [ebp+1]
		push	esi
		call	sub_4367FA
sub_40A290	endp

; ---------------------------------------------------------------------------
		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+44h]
		and	ecx, 3
		push	ebx
		rep stosb
		mov	eax, [esp+14h]
		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+1Ch]
		call	sub_4015D7
		push	ebx
		call	sub_4367E2
; ---------------------------------------------------------------------------
		mov	esi, [esp+44h]
		add	esp, 4
		lea	eax, [esp+18h]
		mov	ecx, esi
		push	eax
		call	sub_4014C9
		lea	ecx, [esp+18h]
		call	sub_401226
		mov	ecx, [esp+30h]
		pop	edi
		mov	eax, esi
		pop	ebx
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		add	esp, 2Ch
		retn	0Ch
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 40h dup(0CCh)

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



sub_40A3C0	proc near		; CODE XREF: sub_401E2Ej

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_4013D9
		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_40A3C0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40A400:				; CODE XREF: ___:0040193Dj
		push	ecx
		push	esi
		mov	esi, [esp+0Ch]
		push	1
		mov	ecx, esi
		mov	dword ptr [esp+8], 0
		call	sub_4020F4
		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_40A430	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_40A430
		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_40A471
		mov	esi, [esp+44h+arg_0]
		push	offset byte_446F60
		mov	ecx, esi
		call	sub_401861
		jmp	loc_40A5A4
; ---------------------------------------------------------------------------


loc_40A471:				; CODE XREF: sub_40A430+2Aj
		lea	eax, [esp+44h+arg_8]
		lea	ecx, [esp+44h+var_34]
		push	eax
		call	sub_401690
		mov	ecx, [esi+9]
		mov	[esp+44h+var_4], 1
		push	ecx
		lea	ecx, [esp+48h+var_24]
		call	sub_401861
		lea	ecx, [esp+44h+var_24]
		mov	byte ptr [esp+44h+var_4], 2
		call	sub_4014D3
		mov	[esp+44h+var_3C], eax
		mov	cl, [eax]
		test	cl, cl
		jz	loc_40A555
		push	ebx


loc_40A4B1:				; CODE XREF: sub_40A430+11Ej
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_40A4C0


loc_40A4B7:				; CODE XREF: sub_40A430+8Ej
		inc	eax
		mov	[esp+48h+var_3C], eax
		cmp	[eax], dl
		jz	short loc_40A4B7


loc_40A4C0:				; CODE XREF: sub_40A430+85j
		cmp	byte ptr [eax],	22h
		setz	bl
		test	bl, bl
		jz	short loc_40A4CF
		inc	eax
		mov	[esp+48h+var_3C], eax


loc_40A4CF:				; CODE XREF: sub_40A430+98j
		lea	edx, [esp+48h+var_3C]
		lea	ecx, [esp+48h+var_34]
		push	edx
		call	sub_401988
		mov	eax, [esp+48h+var_3C]
		test	bl, bl
		mov	cl, [eax]
		jz	short loc_40A51F
		test	cl, cl
		jz	short loc_40A507


loc_40A4EB:				; CODE XREF: sub_40A430+D5j
		cmp	cl, 22h
		jnz	short loc_40A4FC
		mov	cl, [eax+1]
		cmp	cl, 20h
		jz	short loc_40A507
		test	cl, cl
		jz	short loc_40A507


loc_40A4FC:				; CODE XREF: sub_40A430+BEj
		inc	eax
		mov	[esp+48h+var_3C], eax
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_40A4EB


loc_40A507:				; CODE XREF: sub_40A430+B9j
					; sub_40A430+C6j ...
		cmp	byte ptr [eax],	0
		jz	short loc_40A54A
		mov	byte ptr [eax],	0
		mov	eax, [esp+48h+var_3C]
		mov	cl, [eax+1]
		test	cl, cl
		jz	short loc_40A54A
		add	eax, 2
		jmp	short loc_40A546
; ---------------------------------------------------------------------------


loc_40A51F:				; CODE XREF: sub_40A430+B5j
		test	cl, cl
		jz	short loc_40A534
		mov	dl, [edi]


loc_40A525:				; CODE XREF: sub_40A430+102j
		cmp	cl, dl
		jz	short loc_40A534
		inc	eax
		mov	[esp+48h+var_3C], eax
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_40A525


loc_40A534:				; CODE XREF: sub_40A430+F1j
					; sub_40A430+F7j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_40A54A
		cmp	cl, [edi]
		jnz	short loc_40A54A
		mov	byte ptr [eax],	0
		mov	eax, [esp+48h+var_3C]
		inc	eax


loc_40A546:				; CODE XREF: sub_40A430+EDj
		mov	[esp+48h+var_3C], eax


loc_40A54A:				; CODE XREF: sub_40A430+DAj
					; sub_40A430+E8j ...
		mov	cl, [eax]
		test	cl, cl
		jnz	loc_40A4B1
		pop	ebx


loc_40A555:				; CODE XREF: sub_40A430+7Aj
		lea	ecx, [esp+44h+var_34]
		call	sub_4011F9
		mov	ecx, [esp+44h+arg_4]
		cmp	ecx, eax
		jb	short loc_40A56D
		push	offset byte_446F60
		jmp	short loc_40A57A
; ---------------------------------------------------------------------------


loc_40A56D:				; CODE XREF: sub_40A430+134j
		push	ecx
		lea	ecx, [esp+48h+var_34]
		call	sub_401F64
		mov	eax, [eax]
		push	eax


loc_40A57A:				; CODE XREF: sub_40A430+13Bj
		mov	esi, [esp+48h+arg_0]
		mov	ecx, esi
		call	sub_401861
		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_40158C
; ---------------------------------------------------------------------------


loc_40A5A4:				; CODE XREF: sub_40A430+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_40A430	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 70h dup(0CCh)

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



sub_40A630	proc near		; CODE XREF: sub_4016AEj

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

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

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



sub_40A670	proc near		; CODE XREF: sub_40200Ej

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_4015D7
		pop	esi
		retn	4
sub_40A670	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

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



sub_40A6A0	proc near		; CODE XREF: sub_401A87j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4015D7
		retn	4
sub_40A6A0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)

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



sub_40A6C0	proc near		; CODE XREF: sub_40146Fj

arg_0		= dword	ptr  4

		mov	eax, [ecx+9]
		mov	ecx, [esp+arg_0]
		add	eax, ecx
		retn	4
sub_40A6C0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40A6E0:				; CODE XREF: ___:0040149Cj
		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_40A700	proc near		; CODE XREF: sub_401389j
		mov	eax, [ecx+9]
		retn
sub_40A700	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

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



sub_40A720	proc near		; CODE XREF: sub_4017E4j
		mov	eax, [ecx+9]
		retn
sub_40A720	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40A740	proc near		; CODE XREF: sub_4014D3j
		mov	eax, [ecx+9]
		retn
sub_40A740	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40A760	proc near		; CODE XREF: sub_401690j

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_40A760	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40A790	proc near		; CODE XREF: sub_40158Cj
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_4019A6
		mov	eax, [esi+4]
		mov	edx, [esi+0Ch]
		sub	edx, eax
		mov	ecx, esi
		sar	edx, 2
		push	edx
		push	eax
		call	sub_4011EF
sub_40A790	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		mov	[esi+0Ch], eax
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40A7E0	proc near		; CODE XREF: sub_4011F9j
		mov	edx, [ecx+4]
		test	edx, edx
		jnz	short loc_40A7EA
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_40A7EA:				; CODE XREF: sub_40A7E0+5j
		mov	eax, [ecx+8]
		sub	eax, edx
		sar	eax, 2
		retn
sub_40A7E0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40A810	proc near		; CODE XREF: sub_401F64j

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_40A828
		mov	ecx, esi
		call	sub_401EE7


loc_40A828:				; CODE XREF: sub_40A810+Fj
		mov	ecx, esi
		call	sub_401D1B
		lea	eax, [eax+edi*4]
		pop	edi
		pop	esi
		retn	4
sub_40A810	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40A850	proc near		; CODE XREF: sub_401988j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_40164F
		push	eax
		mov	ecx, esi
		call	sub_4016EF
		pop	esi
		retn	4
sub_40A850	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40A880	proc near		; CODE XREF: sub_401D1Bj
		mov	eax, [ecx+4]
		retn
sub_40A880	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40A8A0	proc near		; CODE XREF: sub_40164Fj
		mov	eax, [ecx+8]
		retn
sub_40A8A0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40A8C0	proc near		; CODE XREF: sub_4016EFj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, ecx
		call	sub_401D1B
		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_4013CF
		mov	ecx, edi
		call	sub_401D1B
		lea	eax, [eax+esi*4]
		pop	edi
		pop	esi
		retn	8
sub_40A8C0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40A910	proc near		; CODE XREF: sub_4019A6j

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_40A930


loc_40A921:				; CODE XREF: sub_40A910+1Ej
		push	esi
		mov	ecx, edi
		call	sub_4018B1
		add	esi, 4
		cmp	esi, ebx
		jnz	short loc_40A921


loc_40A930:				; CODE XREF: sub_40A910+Fj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_40A910	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40A950:				; CODE XREF: sub_401EE7j
		push	0FFFFFFFFh
		push	offset loc_438AB9
		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_443920
		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_43F080
		push	edx
		call	sub_436832
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40A9D0	proc near		; CODE XREF: sub_4011EFj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4367E2
sub_40A9D0	endp

; ---------------------------------------------------------------------------
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40A9F0	proc near		; CODE XREF: sub_4013CFj

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_40AABB
		mov	ecx, esi
		call	sub_4011F9
		cmp	edi, eax
		jnb	short loc_40AA23
		mov	ecx, esi
		call	sub_4011F9
		mov	ebp, eax
		jmp	short loc_40AA25
; ---------------------------------------------------------------------------


loc_40AA23:				; CODE XREF: sub_40A9F0+26j
		mov	ebp, edi


loc_40AA25:				; CODE XREF: sub_40A9F0+31j
		mov	ecx, esi
		call	sub_4011F9
		mov	ebx, eax
		push	0
		add	ebx, ebp
		mov	ecx, esi
		push	ebx
		call	sub_401DCF
; ---------------------------------------------------------------------------
		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_402176
		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_4019A6
		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_40AABB:				; CODE XREF: sub_40A9F0+17j
		mov	ebx, [esp+10h+arg_0]
		mov	edx, eax
		sub	edx, ebx
		sar	edx, 2
		cmp	edx, edi
		jnb	short loc_40AB19
		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_402176
		mov	edx, [esp+10h+arg_8]
		mov	eax, [esi+8]
		push	edx
		push	eax
		push	ebx
		call	sub_401E6F
		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_40AB19:				; CODE XREF: sub_40A9F0+D8j
		test	edi, edi
		jbe	short loc_40AB53
		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_4020AE
		mov	ecx, [esp+1Ch+arg_8]
		lea	edx, [edi+ebx]
		push	ecx
		push	edx
		push	ebx
		call	sub_401E6F
		mov	eax, [esi+8]
		add	esp, 18h
		add	eax, edi
		mov	[esi+8], eax


loc_40AB53:				; CODE XREF: sub_40A9F0+12Bj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
sub_40A9F0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 60h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40ABC0	proc near		; CODE XREF: sub_4018B1j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_1
		pop	ecx
		retn	4
sub_40ABC0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40ABE0	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_40AC12
		push	edi
		mov	edi, [esp+10h+arg_8]


loc_40ABF6:				; CODE XREF: sub_40ABE0+27j
		push	esi
		push	edi
		mov	ecx, ebx
		call	sub_402121
		add	esi, 4
		add	edi, 4
		cmp	esi, ebp
		jnz	short loc_40ABF6
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40AC12:				; CODE XREF: sub_40ABE0+Fj
		mov	eax, [esp+0Ch+arg_8]
		pop	esi
		pop	ebp
		pop	ebx
		retn	0Ch
sub_40ABE0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40AC30	proc near		; CODE XREF: sub_402176j

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_40AC57
		push	ebx
		mov	ebx, [esp+0Ch+arg_8]
		push	esi
		mov	esi, [esp+10h+arg_0]


loc_40AC46:				; CODE XREF: sub_40AC30+23j
		push	ebx
		push	esi
		mov	ecx, ebp
		call	sub_402121
		add	esi, 4
		dec	edi
		jnz	short loc_40AC46
		pop	esi
		pop	ebx


loc_40AC57:				; CODE XREF: sub_40AC30+Aj
		pop	edi
		pop	ebp
		retn	0Ch
sub_40AC30	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40AC70	proc near		; CODE XREF: sub_401DCFj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_4014CE
sub_40AC70	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn	8
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40ACA0	proc near		; CODE XREF: sub_402121j

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_401DE8
		add	esp, 8
		retn	8
sub_40ACA0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40ACD0	proc near		; CODE XREF: sub_401E6Fj

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_40ACED
		mov	edx, [esp+arg_8]
		push	esi


loc_40ACE1:				; CODE XREF: sub_40ACD0+1Aj
		mov	esi, [edx]
		mov	[eax], esi
		add	eax, 4
		cmp	eax, ecx
		jnz	short loc_40ACE1
		pop	esi

locret_40ACED:				; CODE XREF: sub_40ACD0+Aj
		retn
sub_40ACD0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40AD00	proc near		; CODE XREF: sub_4020AEj

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_40AD22
		mov	eax, [esp+arg_8]
		push	esi


loc_40AD11:				; CODE XREF: sub_40AD00+1Ej
		mov	esi, [ecx-4]
		sub	ecx, 4
		sub	eax, 4
		cmp	ecx, edx
		mov	[eax], esi
		jnz	short loc_40AD11
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40AD22:				; CODE XREF: sub_40AD00+Aj
		mov	eax, [esp+arg_8]
		retn
sub_40AD00	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 =======================================

; Attributes: noreturn


sub_40AD60	proc near		; CODE XREF: sub_4014CEj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jge	short loc_40AD6A
		xor	eax, eax


loc_40AD6A:				; CODE XREF: sub_40AD60+6j
		shl	eax, 2
		push	eax
		call	sub_4367FA
sub_40AD60	endp

; ---------------------------------------------------------------------------
		add	esp, 4
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40AD90	proc near		; CODE XREF: sub_401DE8j

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_40ADAB
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_40ADAB:				; CODE XREF: sub_40AD90+11j
		retn
sub_40AD90	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40ADC0	proc near		; CODE XREF: sub_401E6Aj
		mov	eax, ecx
		mov	dword ptr [eax], offset	dword_43E014
		retn
sub_40ADC0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40ADE0:				; CODE XREF: ___:00401717j
					; ___:00402027j
		push	esi
		mov	esi, ecx
		call	sub_402031
		test	byte ptr [esp+8], 1
		jz	short loc_40ADF8
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_40ADF8:				; CODE XREF: ___:0040ADEDj
		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_40AE10	proc near		; CODE XREF: sub_402031j

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_40AE10
		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_43E014
		mov	[ebp+var_10], esp
		mov	[ebp+var_4], 0
		call	sub_401744


loc_40AE41:				; DATA XREF: ___:0040AE52o
		mov	ecx, [ebp+var_C]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_40AE10	endp

; ---------------------------------------------------------------------------
		mov	eax, offset loc_40AE41
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40AE80	proc near		; CODE XREF: sub_4014BAj
		call	sub_401708
		jmp	sub_4017B2
sub_40AE80	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40AEA0	proc near		; CODE XREF: sub_401B18j
		call	sub_40161D
		jmp	sub_4017C1
sub_40AEA0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40AEC0	proc near		; CODE XREF: sub_4013D4j
		push	esi
		mov	esi, ecx
		push	esi
		push	offset loc_40141F
		lea	eax, [esi+0Ch]
		push	0
		push	eax
		call	sub_40123A
		add	esp, 10h
		test	eax, eax
		jnz	short loc_40AEE2
		mov	al, 1
		mov	[esi+10h], al
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40AEE2:				; CODE XREF: sub_40AEC0+19j
		mov	byte ptr [esi+10h], 0
		xor	al, al
		pop	esi
		retn
sub_40AEC0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40AF00:				; CODE XREF: ___:004011C2j
		push	ecx
		push	esi
		mov	esi, ecx
		mov	al, [esi+10h]
		test	al, al
		jz	short loc_40AF27
		mov	ecx, [esi+0Ch]
		lea	eax, [esp+4]
		push	eax
		push	ecx
		call	sub_40175D
		mov	eax, [esp+0Ch]
		add	esp, 8
		mov	byte ptr [esi+10h], 0
		pop	esi
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_40AF27:				; CODE XREF: ___:0040AF09j
		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_40AF40	proc near		; CODE XREF: sub_401744j
		push	esi
		mov	esi, ecx
		mov	al, [esi+10h]
		test	al, al
		jz	short loc_40AF5C
		mov	eax, [esi+0Ch]
		push	0Fh
		push	eax
		call	sub_401758
		add	esp, 8
		mov	byte ptr [esi+10h], 0


loc_40AF5C:				; CODE XREF: sub_40AF40+8j
		pop	esi
		retn
sub_40AF40	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40AF70:				; CODE XREF: ___:004011F4j
		mov	eax, [ecx+0Ch]
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40AF90:				; CODE XREF: ___:loc_40141Fj
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset loc_438AE0
		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_40AFBE:				; DATA XREF: ___:0040AFD1o
		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_40AFBE
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40B000	proc near		; CODE XREF: sub_401028j

var_8		= dword	ptr -8
var_4		= byte ptr -4

		sub	esp, 8
		push	esi
		mov	esi, ecx
		mov	al, [esi+10h]
		test	al, al
		jz	short loc_40B042
		mov	edx, [esi+0Ch]
		lea	eax, [esp+0Ch+var_8]
		lea	ecx, [esp+0Ch+var_4]
		push	eax
		push	ecx
		push	edx
		call	sub_40218F
		mov	edx, [esi+0Ch]
		mov	eax, [esp+18h+var_8]
		lea	ecx, [esp+18h+var_8]
		mov	[esi+8], eax
		push	ecx
		push	1
		push	edx
		mov	[esp+24h+var_8], 0
		call	sub_401050
		add	esp, 18h


loc_40B042:				; CODE XREF: sub_40B000+Bj
		pop	esi
		add	esp, 8
		retn
sub_40B000	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40B070	proc near		; CODE XREF: sub_401DCAj

var_4		= dword	ptr -4

		push	ecx
		mov	al, [ecx+10h]
		test	al, al
		jz	short loc_40B092
		mov	eax, [ecx+8]
		lea	edx, [esp+4+var_4]
		mov	[esp+4+var_4], eax
		mov	eax, [ecx+0Ch]
		push	edx
		push	1
		push	eax
		call	sub_401050
		add	esp, 0Ch


loc_40B092:				; CODE XREF: sub_40B070+6j
		pop	ecx
		retn
sub_40B070	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40B0B0	proc near		; CODE XREF: sub_4019F1j

var_11		= byte ptr -11h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40B0B0
		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_401749
		lea	ecx, [esi+32h]
		mov	[esp+1Ch+var_4], 0
		call	sub_401749
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+1Ch+var_4], 1
		call	sub_401749
		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_401BF4
sub_40B0B0	endp

; ---------------------------------------------------------------------------
		mov	ecx, edi
		mov	byte ptr [esp+18h], 3
		mov	dword ptr [esi], offset	dword_43E020
		call	sub_401BEF
		mov	ecx, [esp+10h]
		mov	eax, esi
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40B170	proc near		; CODE XREF: sub_401AE6j

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40B170
		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_43E020
		lea	edi, [esi+8Eh]
		mov	[esp+18h+var_4], 3
		mov	ecx, edi
		call	sub_401BEF
		mov	ecx, edi
		mov	byte ptr [esp+18h+var_4], 2
		call	sub_401555
sub_40B170	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h], 1
		call	sub_401023
		lea	ecx, [esi+32h]
		mov	byte ptr [esp+14h], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	dword ptr [esp+14h], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+0Ch]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40B210	proc near		; CODE XREF: sub_4017EEj

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40B210
		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_401BEF
		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_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	[esp+44h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_40B210	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	14h
		push	5
		push	7
		push	4Fh
		push	12h
		push	1
		push	16h
		lea	edx, [esp+24h]
		push	3
		push	edx
		call	sub_4019B5
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+40h], 1
		call	sub_4017E4
		push	eax
		lea	eax, [esi+32h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	14h
		push	5
		push	13h
		push	4Eh
		push	12h
		push	1
		push	16h
		lea	ecx, [esp+3Ch]
		push	3
		push	ecx
		call	sub_4019B5
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+40h], 2
		call	sub_4017E4
		add	esi, 60h
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		lea	ecx, [esp+1Ch]
		call	sub_401226
		mov	ecx, [esp+34h]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40B390	proc near		; CODE XREF: sub_40180Cj

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_401FBE
		mov	eax, [esp+8+arg_0]
		mov	edx, [esp+8+arg_C]
		push	edx
		lea	ecx, [eax+33h]
		call	sub_401FBE
		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_401F32
		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_401FBE
		lea	edx, [esp+8+arg_0]
		lea	ecx, [esi+8Eh]
		push	edx
		call	sub_401906
sub_40B390	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		retn	1Ch
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40B430	proc near		; CODE XREF: sub_401B5Ej

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_40B430
		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_401861
		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_401861
		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_401861
		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_40180C
sub_40B430	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch]
		mov	byte ptr [esp+5Ch], 1
		call	sub_401226
		lea	ecx, [esp+24h]
		mov	byte ptr [esp+5Ch], 0
		call	sub_401226
		lea	ecx, [esp+3Ch]
		mov	dword ptr [esp+5Ch], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+54h]
		pop	edi
		pop	esi
		pop	ebp
		mov	large fs:0, ecx
		add	esp, 54h
		retn	1Ch
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40B520	proc near		; CODE XREF: sub_4019CEj

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_40153C
		add	esi, 8Eh
		lea	eax, [esp+10h+var_4]
		push	eax
		mov	ecx, esi
		call	sub_401451
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_4]
		mov	[esp+10h+var_8], ecx
		push	edx
		mov	ecx, esi
		call	sub_401C71
		push	eax
		lea	ecx, [esp+14h+var_8]
		call	sub_40136B
		test	al, al
		jz	short loc_40B5A1
		mov	edi, [esp+10h+arg_0]


loc_40B566:				; CODE XREF: sub_40B520+7Fj
		push	edi
		lea	ecx, [esp+14h+var_8]
		call	sub_401F5A
		mov	ecx, [eax]
		add	ecx, 1Eh
		call	sub_4021AD
		test	eax, eax
		lea	ecx, [esp+10h+var_8]
		jz	short loc_40B5AB
		call	sub_40133E
		lea	eax, [esp+10h+var_4]
		mov	ecx, esi
		push	eax
		call	sub_401C71
		push	eax
		lea	ecx, [esp+14h+var_8]
		call	sub_40136B
		test	al, al
		jnz	short loc_40B566


loc_40B5A1:				; CODE XREF: sub_40B520+40j
		pop	edi
		xor	eax, eax
		pop	esi
		add	esp, 8
		retn	8
; ---------------------------------------------------------------------------


loc_40B5AB:				; CODE XREF: sub_40B520+60j
		call	sub_401F5A
		mov	eax, [eax]
		pop	edi
		pop	esi
		add	esp, 8
		retn	8
sub_40B520	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B5F0:				; CODE XREF: ___:00401456j
		push	0FFFFFFFFh
		push	offset loc_438BF8
		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_401861
		mov	ecx, [esp+30h]
		mov	dword ptr [esp+24h], 0
		push	ecx
		push	eax
		mov	ecx, esi
		call	sub_4019CE
		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_40B680	proc near		; CODE XREF: sub_401596j

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_4015D7
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 77C1CF90h
		fstp	dword ptr [esi+15h]
		add	esp, 4
		mov	ecx, esi
		call	sub_4017E4
		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_443944
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_40B6D1
		mov	byte ptr [esi+19h], 1


loc_40B6D1:				; CODE XREF: sub_40B680+4Bj
		pop	esi
		retn	8
sub_40B680	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40B700	proc near		; CODE XREF: sub_401F32j

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_4015D7
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 77C1CF90h
		fstp	dword ptr [esi+15h]
		add	esp, 4
		mov	ecx, esi
		call	sub_4017E4
		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_443944
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_40B755
		mov	byte ptr [esi+19h], 1


loc_40B755:				; CODE XREF: sub_40B700+4Fj
		mov	cl, [edi+4]
		mov	[esi+4], cl
		mov	edx, [edi+5]
		mov	[esi+5], edx
		pop	edi
		pop	esi
		retn	8
sub_40B700	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B790:				; CODE XREF: ___:00401D43j
		fld	dword ptr [esp+8]
		push	esi
		mov	esi, [esp+8]
		sub	esp, 8
		fstp	qword ptr [esp]
		push	offset dword_44394C
		push	esi
		call	sub_40102D
		mov	eax, [esp+1Ch]
		add	esp, 10h
		mov	ecx, esi
		mov	[esi+15h], eax
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 77C1BF18h
		fld	dword ptr [esp+10h]
		fcomp	flt_43E024
		mov	[esi+1Ah], eax
		add	esp, 4
		mov	byte ptr [esi+19h], 0
		fnstsw	ax
		test	ah, 1
		jnz	short loc_40B7E1
		mov	byte ptr [esi+19h], 1


loc_40B7E1:				; CODE XREF: ___:0040B7DBj
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B810:				; CODE XREF: ___:00401C94j
		push	ebx
		mov	bl, [esp+0Ch]
		test	bl, bl
		push	esi
		jz	short loc_40B840
		mov	esi, [esp+0Ch]
		push	offset dword_443944
		mov	ecx, esi
		call	sub_4015D7
		mov	dword ptr [esi+15h], 3F800000h
		mov	dword ptr [esi+1Ah], 1
		mov	[esi+19h], bl
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_40B840:				; CODE XREF: ___:0040B818j
		mov	esi, [esp+0Ch]
		push	offset dword_443950
		mov	ecx, esi
		call	sub_4015D7
		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_40B880:				; CODE XREF: ___:00401D6Bj
		push	esi
		mov	esi, [esp+8]
		push	edi
		mov	edi, [esp+10h]
		push	edi
		push	offset dword_4437F4
		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_40B8B0
		mov	byte ptr [esi+19h], 1


loc_40B8B0:				; CODE XREF: ___:0040B8AAj
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40B8D0:				; CODE XREF: ___:00401ACDj
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_438C30
		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_4014D3
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40BA12
		lea	ebx, [esi+69h]
		mov	ecx, ebx
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	offset dword_44399C
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	ecx, [esp+6Ch]
		call	sub_40153C
		add	ebp, 8Eh
		lea	edx, [esp+10h]
		push	edx
		mov	ecx, ebp
		xor	edi, edi
		call	sub_401451
		mov	eax, [eax]
		lea	ecx, [esp+10h]
		push	ecx
		mov	ecx, ebp
		mov	[esp+70h], eax
		call	sub_401C71
		push	eax
		lea	ecx, [esp+70h]
		call	sub_40136B
		test	al, al
		jz	loc_40BA0B


loc_40B976:				; CODE XREF: ___:0040BA05j
		lea	ecx, [esp+6Ch]
		inc	edi
		call	sub_401F5A
		mov	ecx, [eax]
		add	ecx, 33h
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+70h]
		call	sub_401F5A
		mov	ecx, [eax]
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+74h]
		call	sub_401F5A
		mov	ecx, [eax]
		add	ecx, 1Eh
		call	sub_4017E4
		push	eax
		push	edi
		push	offset dword_443980
		mov	ecx, ebx
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 24h
		push	5DCh
		nop
		call	near ptr 2821E84h
		lea	ecx, [esp+6Ch]
		call	sub_40133E
		lea	ecx, [esp+10h]
		push	ecx
		mov	ecx, ebp
		call	sub_401C71
		push	eax
		lea	ecx, [esp+70h]
		call	sub_40136B
		test	al, al
		jnz	loc_40B976


loc_40BA0B:				; CODE XREF: ___:0040B970j
		mov	al, 1
		jmp	loc_40BB9A
; ---------------------------------------------------------------------------


loc_40BA12:				; CODE XREF: ___:0040B907j
		lea	ecx, [ebp+32h]
		call	sub_4017E4
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_40BAA5
		push	offset dword_443600
		lea	edx, [esp+30h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		push	1
		push	eax
		mov	ecx, ebp
		mov	dword ptr [esp+6Ch], 0
		call	sub_4019CE
		lea	ecx, [esp+2Ch]
		mov	edi, eax
		mov	dword ptr [esp+64h], 0FFFFFFFFh
		call	sub_401226
		test	edi, edi
		jz	loc_40BB98
		mov	ecx, edi
		call	sub_4017E4
		push	eax
		lea	ecx, [edi+1Eh]
		call	sub_4017E4
		push	eax
		push	offset dword_443974
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 1Ch
		jmp	loc_40BB9A
; ---------------------------------------------------------------------------


loc_40BAA5:				; CODE XREF: ___:0040BA24j
		lea	ecx, [ebp+60h]
		call	sub_4014D3
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40BB98
		push	offset dword_443600
		lea	edx, [esp+30h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		push	1
		push	eax
		mov	ecx, ebp
		mov	dword ptr [esp+6Ch], 1
		call	sub_4019CE
		lea	ecx, [esp+2Ch]
		mov	edi, eax
		mov	dword ptr [esp+64h], 0FFFFFFFFh
		call	sub_401226
		test	edi, edi
		jz	loc_40BB98
		push	edi
		lea	ecx, [esp+18h]
		call	sub_4014C9
		mov	ebx, 2
		push	1
		push	offset dword_443600
		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_401F32
		lea	ecx, [esp+44h]
		mov	[esp+64h], bl
		call	sub_401226
		lea	ecx, [esp+14h]
		call	sub_4017E4
		push	eax
		mov	ecx, edi
		call	sub_4017E4
		push	eax
		lea	ecx, [edi+1Eh]
		call	sub_4017E4
		push	eax
		push	offset dword_443958
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 20h
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+64h], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		jmp	short loc_40BB9A
; ---------------------------------------------------------------------------


loc_40BB98:				; CODE XREF: ___:0040BA60j
					; ___:0040BAB7j ...
		xor	al, al


loc_40BB9A:				; CODE XREF: ___:0040BA0Dj
					; ___:0040BAA0j ...
		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 =======================================

; Attributes: noreturn


sub_40BC70	proc near		; CODE XREF: sub_401BF4j

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_4021CB
sub_40BC70	endp

; ---------------------------------------------------------------------------
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40BCB0	proc near		; CODE XREF: sub_401555j

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_401C71
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401451
		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_401FCD
sub_40BCB0	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40BD20	proc near		; CODE XREF: sub_401451j

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		push	eax
		call	sub_4020F9
		mov	ecx, [eax]
		mov	esi, [esp+8+arg_0]
		add	esp, 4
		push	ecx
		mov	ecx, esi
		call	sub_4014A6
		mov	eax, esi
		pop	esi
		retn	4
sub_40BD20	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40BD60	proc near		; CODE XREF: sub_401C71j

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_4014A6
		mov	eax, esi
		pop	esi
		retn	4
sub_40BD60	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40BD90	proc near		; CODE XREF: sub_401906j

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_401C71
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401C49
sub_40BD90	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40BDD0	proc near		; CODE XREF: sub_401BEFj

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_401C71
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401451
		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_40BDD0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40BE20	proc near		; CODE XREF: sub_40153Cj
		push	esi
		mov	esi, ecx
		call	sub_40213A
		mov	eax, esi
		pop	esi
		retn
sub_40BE20	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40BE40	proc near		; CODE XREF: sub_401F5Aj
		mov	eax, [ecx]
		push	eax
		call	sub_401839
		add	esp, 4
		retn
sub_40BE40	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40BE60	proc near		; CODE XREF: sub_40133Ej
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_4020F9
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_40BE60	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40BE90	proc near		; CODE XREF: sub_40136Bj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401CE9
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_40BE90	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40BEC0	proc near		; CODE XREF: sub_401C49j

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_4016A4
		mov	edi, eax
		push	edi
		call	sub_40213F
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_4021CB
sub_40BEC0	endp

; ---------------------------------------------------------------------------
		push	edi
		mov	ebx, eax
		call	sub_40213F
		push	edi
		mov	[eax], ebx
		call	sub_40213F
		mov	edi, [eax]
		push	edi
		call	sub_40213F
		mov	ecx, [eax]
		push	ecx
		call	sub_4020F9
		mov	edx, [esp+28h]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_401839
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_401F14
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		mov	esi, [esp+14h]
		mov	ecx, esi
		call	sub_4014A6
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40BF60	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_40BFBA


loc_40BF78:				; CODE XREF: sub_40BF60+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_401B86
		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_40BF78
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_40BFBA:				; CODE XREF: sub_40BF60+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_40BF60	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40BFF0	proc near		; CODE XREF: sub_4021CBj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_40155F
sub_40BFF0	endp

; ---------------------------------------------------------------------------
		mov	edi, [esp+0Ch]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_40C005
		mov	edi, esi


loc_40C005:				; CODE XREF: ___:0040C001j
		push	esi
		call	sub_4020F9
		mov	[eax], edi
		mov	edi, [esp+14h]
		add	esp, 4
		test	edi, edi
		jnz	short loc_40C01A
		mov	edi, esi


loc_40C01A:				; CODE XREF: ___:0040C016j
		push	esi
		call	sub_40213F
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40C040	proc near		; CODE XREF: sub_401FCDj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_402059
sub_40C040	endp

; ---------------------------------------------------------------------------
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C060	proc near		; CODE XREF: sub_4020F9j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_40C060	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C080	proc near		; CODE XREF: sub_401839j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_40C080	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C0A0	proc near		; CODE XREF: sub_40213Aj
		mov	eax, ecx
		retn
sub_40C0A0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C0C0	proc near		; CODE XREF: sub_4014A6j

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_40C0C0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C0F0	proc near		; CODE XREF: sub_401CE9j

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_40C0F0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40C120	proc near		; CODE XREF: sub_40106Ej

var_4		= byte ptr -4
arg_4		= byte 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_401B86
		mov	ecx, eax
		call	sub_4016A4
		mov	esi, eax
		push	esi
		call	sub_4020F9
		push	esi
		mov	ebx, eax
		call	sub_40213F
		mov	ecx, [eax]
		push	ecx
		call	sub_4020F9
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_40213F
		push	esi
		mov	ebx, eax
		call	sub_4020F9
		mov	eax, [eax]
		push	eax
		call	sub_40213F
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_401839
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_401221
		push	esi
		mov	ecx, edi
		call	sub_401FCD
sub_40C120	endp

; ---------------------------------------------------------------------------
		mov	eax, [edi+8]
		mov	edx, [esp+18h]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+14h]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C1E0	proc near		; CODE XREF: sub_40213Fj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_40C1E0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40C200	proc near		; CODE XREF: sub_40155Fj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D16
sub_40C200	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40C230	proc near		; CODE XREF: sub_402059j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4367E2
sub_40C230	endp

; ---------------------------------------------------------------------------
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C250	proc near		; CODE XREF: sub_401F14j

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_40C250	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C280	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_40C280	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C2A0	proc near		; CODE XREF: sub_4016A4j
		mov	eax, [ecx]
		retn
sub_40C2A0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C2C0	proc near		; CODE XREF: sub_401B86j

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_40C2C0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C2F0	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_40C2F0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40C310	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_40C32B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_40C32B:				; CODE XREF: sub_40C310+11j
		retn
sub_40C310	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 =======================================

; Attributes: noreturn


sub_40C360	proc near		; CODE XREF: sub_401BE5j

var_24		= byte ptr -24h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40C360
		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_4019B5
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	[esp+2Ch+var_4], 0
		call	sub_401681
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
sub_40C360	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+24h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+1Ch]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 24h
		retn
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40C400:				; CODE XREF: ___:00401712j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_438C9C
		push	eax
		mov	large fs:0, esp
		sub	esp, 0AA0h
		add	ecx, 4
		push	ebx
		push	ebp
		push	esi
		push	edi
		call	sub_4014D3
		mov	ebp, [esp+0AC0h]
		push	eax
		lea	ecx, [ebp+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40C94E
		lea	ecx, [esp+44h]
		call	sub_401091
		push	1
		push	offset dword_443600
		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_40200E
		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
		nop
		call	near ptr 71AB3B91h
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		mov	[esp+10h], ebx
		jnz	short loc_40C4CC
		lea	ecx, [esp+3ACh]
		push	offset dword_443AB8
		push	ecx
		nop
		call	near ptr byte_5EA1BD
		add	esp, 8
		jmp	loc_40C8F5
; ---------------------------------------------------------------------------


loc_40C4CC:				; CODE XREF: ___:0040C4AFj
		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_40C51A
		lea	ecx, [ebp+69h]
		call	sub_4014D3
		push	eax
		push	offset dword_443A98
		jmp	loc_40C5C0
; ---------------------------------------------------------------------------


loc_40C51A:				; CODE XREF: ___:0040C505j
		lea	eax, [esp+34h]
		lea	ecx, [esp+1Ch]
		push	eax
		push	ecx
		push	ebx
		mov	dword ptr [esp+40h], 10h
		call	near ptr 71AB951Eh
		nop
		mov	edx, [esp+1Eh]
		push	edx
		nop
		call	near ptr 71AB2B66h
		lea	ecx, [esp+4Ch]
		mov	[esp+30h], eax
		call	sub_4014D3
		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_40C573:				; CODE XREF: ___:0040C5A3j
		mov	al, [esp+edx+1ACh]
		cmp	al, 20h
		jnz	short loc_40C585
		mov	eax, 5Fh
		jmp	short loc_40C588
; ---------------------------------------------------------------------------


loc_40C585:				; CODE XREF: ___:0040C57Cj
		movsx	eax, al


loc_40C588:				; CODE XREF: ___:0040C583j
		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_40C573
		push	1
		push	ebx
		call	near ptr 71AB88D3h
		nop
		test	eax, eax
		jz	short loc_40C5DD
		lea	ecx, [ebp+69h]
		call	sub_4014D3
		push	eax
		push	offset dword_443A78


loc_40C5C0:				; CODE XREF: ___:0040C515j
		mov	cl, [ebp+94h]
		mov	dl, [ebp+93h]
		push	ecx
		push	edx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		jmp	loc_40C8EF
; ---------------------------------------------------------------------------


loc_40C5DD:				; CODE XREF: ___:0040C5B0j
		push	0
		push	0
		push	3
		push	0
		push	1
		push	80000000h
		lea	ecx, [esp+64h]
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 2840D70h
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_40C644
		lea	ecx, [ebp+69h]
		call	sub_4014D3
		mov	cl, [ebp+93h]
		push	eax
		mov	al, [ebp+94h]
		push	offset dword_443A5C
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	edx, [esp+3ACh]
		push	offset dword_443A3C
		push	edx
		nop
		call	near ptr byte_5EA1BD
		add	esp, 8
		jmp	loc_40C8EF
; ---------------------------------------------------------------------------


loc_40C644:				; CODE XREF: ___:0040C601j
		push	0
		push	esi
		nop
		call	near ptr 2840A2Fh
		lea	ecx, [esp+68h]
		mov	ebx, eax
		call	sub_401424
		mov	eax, [esp+30h]
		push	ebx
		and	eax, 0FFFFh
		mov	byte ptr [esp+0ABCh], 2
		push	eax
		mov	eax, dword_4D60BD
		push	eax
		call	sub_401DF7
		add	esp, 4
		push	eax
		nop
		call	near ptr 71AB2BF4h
		push	eax
		nop
		call	near ptr 71AB2BC0h
		push	eax
		lea	ecx, [esp+58h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+78h]
		push	offset dword_443A20
		push	ecx
		call	sub_40102D
		add	esp, 18h
		lea	ecx, [ebp+15h]
		call	sub_401681
		push	eax
		lea	ecx, [esp+6Ch]
		call	sub_4014D3
		mov	dl, [ebp+94h]
		push	eax
		mov	al, [ebp+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D60A5
		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
		nop
		call	near ptr 71AB2DC0h
		test	eax, eax
		jg	short loc_40C73D
		lea	ecx, [ebp+69h]
		call	sub_4014D3
		mov	cl, [ebp+93h]
		push	eax
		mov	al, [ebp+94h]
		push	offset dword_443A10
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		jmp	loc_40C8DA
; ---------------------------------------------------------------------------


loc_40C73D:				; CODE XREF: ___:0040C710j
		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_40C78D
		lea	ecx, [ebp+69h]
		call	sub_4014D3
		mov	cl, [ebp+94h]
		mov	dl, [ebp+93h]
		push	eax
		push	offset dword_4439F0
		push	ecx
		push	edx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		jmp	loc_40C8DA
; ---------------------------------------------------------------------------


loc_40C78D:				; CODE XREF: ___:0040C760j
		push	edi
		call	near ptr 71AB9639h
		nop
		test	ebx, ebx
		jz	loc_40C845


loc_40C79C:				; CODE XREF: ___:0040C838j
		mov	ebp, 400h
		cmp	ebx, ebp
		jge	short loc_40C7A7
		mov	ebp, ebx


loc_40C7A7:				; CODE XREF: ___:0040C7A3j
		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 2830B5Eh
		mov	eax, [esp+48h]
		push	0
		lea	edx, [esp+6B4h]
		push	ebp
		push	edx
		push	eax
		nop
		call	near ptr 71AB428Ah
		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_40C90E
		cmp	edi, 1
		jl	loc_40C90E
		sub	ebx, edi
		jnz	loc_40C79C
		mov	ebp, [esp+0AC0h]


loc_40C845:				; CODE XREF: ___:0040C796j
		push	esi
		nop
		call	near ptr 28306C9h
		lea	ecx, [esp+80h]
		call	sub_401424
		mov	eax, [esp+18h]
		mov	ecx, [esp+14h]
		push	eax
		push	ecx
		lea	ecx, [esp+54h]
		mov	byte ptr [esp+0AC0h], 3
		call	sub_4014D3
		mov	edx, [esp+0A4h]
		push	eax
		push	edx
		nop
		call	near ptr 71AB3F41h
		push	eax
		lea	eax, [esp+90h]
		push	offset dword_4439BC
		push	eax
		call	sub_40102D
		add	esp, 18h
		lea	ecx, [ebp+69h]
		call	sub_4014D3
		push	eax
		lea	ecx, [esp+84h]
		call	sub_4014D3
		mov	cl, [ebp+94h]
		mov	dl, [ebp+93h]
		push	eax
		push	ecx
		push	edx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	ecx, [esp+80h]
		mov	byte ptr [esp+0AB8h], 2
		call	sub_401226


loc_40C8DA:				; CODE XREF: ___:0040C738j
					; ___:0040C788j
		lea	ecx, [esp+68h]
		mov	byte ptr [esp+0AB8h], 0
		call	sub_401226
		mov	ebx, [esp+10h]


loc_40C8EF:				; CODE XREF: ___:0040C5D8j
					; ___:0040C63Fj
		xor	esi, esi
		cmp	ebx, esi
		jbe	short loc_40C8FC


loc_40C8F5:				; CODE XREF: ___:0040C4C7j
		push	ebx
		call	near ptr 71AB9639h
		nop


loc_40C8FC:				; CODE XREF: ___:0040C8F3j
		mov	eax, [esp+48h]
		push	eax
		nop
		call	near ptr 71AB9639h
		push	esi
		nop
		call	near ptr 2830000h


loc_40C90E:				; CODE XREF: ___:0040C827j
					; ___:0040C830j
		mov	esi, [esp+0AC0h]
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	offset dword_4439A4
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		mov	edx, [esp+48h]
		push	edx
		call	near ptr 71AB9639h
		nop
		push	1
		nop
		call	near ptr 2830000h


loc_40C94E:				; CODE XREF: ___:0040C439j
		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_40CAD0	proc near		; CODE XREF: sub_401091j
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+8]
		call	sub_401424
		mov	eax, esi
		pop	esi
		retn
sub_40CAD0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40CAF0:				; CODE XREF: ___:loc_401AFFj
		add	ecx, 8
		jmp	sub_401226
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40CB10	proc near		; CODE XREF: sub_402045j

var_24		= byte ptr -24h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40CB10
		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_4019B5
		add	esp, 18h
		push	esi
		mov	ecx, eax
		mov	[esp+2Ch+var_4], 0
		call	sub_4017E4
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
sub_40CB10	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+24h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+1Ch]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 24h
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40CBB0:				; CODE XREF: ___:00401BA4j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_438D17
		push	eax
		mov	large fs:0, esp
		sub	esp, 270h
		add	ecx, 4
		push	esi
		call	sub_4014D3
		mov	esi, [esp+284h]
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40CDAE
		push	ebx
		lea	ecx, [esp+24h]
		call	sub_40198D
		lea	eax, [esi+2Ah]
		xor	ebx, ebx
		push	eax
		lea	ecx, [esp+2Ch]
		mov	[esp+284h], ebx
		mov	[esp+28h], ebx
		call	sub_40200E
		push	1
		push	offset dword_443600
		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_4017E4
		push	eax
		lea	ecx, [esp+41h]
		call	sub_401A87
		lea	ecx, [esp+0Ch]
		mov	[esp+280h], bl
		call	sub_401226
		push	1
		push	offset dword_443600
		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_4017E4
		push	eax
		lea	ecx, [esp+56h]
		call	sub_401A87
		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_401E2E
		push	offset dword_443AF4
		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_40CD2B
		mov	ecx, [esp+63h]
		lea	edx, [esp+0Ch]
		push	ecx
		push	edx
		lea	ecx, [esp+5Ah]
		call	sub_401E2E
		push	offset dword_446F64
		mov	ecx, eax
		mov	byte ptr [esp+284h], 4
		call	sub_401A87
		lea	ecx, [esp+0Ch]
		mov	[esp+280h], bl
		call	sub_401226


loc_40CD2B:				; CODE XREF: ___:0040CCF2j
		push	ebx
		lea	ecx, [esp+56h]
		call	sub_4014D3
		push	eax
		lea	ecx, [esp+45h]
		call	sub_4014D3
		push	eax
		mov	eax, [esp+77h]
		push	eax
		lea	ecx, [esp+38h]
		call	sub_401681
		mov	ecx, [esp+34h]
		push	eax
		push	ecx
		call	sub_402257
		add	esp, 18h
		lea	edx, [esp+78h]
		push	eax
		push	offset dword_443AE0
		push	edx
		nop
		call	near ptr byte_5EA1BD
		mov	eax, [esp+7Bh]
		add	esp, 0Ch
		cmp	eax, ebx
		jnz	short loc_40CD99
		mov	eax, [esp+6Bh]
		lea	ecx, [esp+78h]
		push	eax
		push	ecx
		lea	ecx, [esp+30h]
		call	sub_401681
		mov	edx, [esp+2Ch]
		push	eax
		push	edx
		call	sub_401523
		add	esp, 10h


loc_40CD99:				; CODE XREF: ___:0040CD76j
		mov	eax, [esp+67h]
		push	eax
		call	sub_401E24
		add	esp, 4
		push	ebx
		call	near ptr 2830000h
		nop
		pop	ebx


loc_40CDAE:				; CODE XREF: ___:0040CBE6j
		mov	ecx, [esp+274h]
		mov	al, 1
		pop	esi
		mov	large fs:0, ecx
		add	esp, 27Ch
		retn	4
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 90h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40CE60	proc near		; CODE XREF: sub_40198Dj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40CE60
		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_401424
		lea	ecx, [esi+19h]
		mov	[esp+14h+var_4], 0
		call	sub_401424
		lea	ecx, [esi+2Eh]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401424
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_40CE60	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40CEE0:				; CODE XREF: ___:loc_40226Bj
		push	0FFFFFFFFh
		push	offset loc_438D86
		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_40CF60	proc near		; CODE XREF: sub_402257j

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_50FAD8
		push	esi
		push	offset dword_443B08
		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
		call	near ptr 2870000h
		nop
		mov	ebp, [esp+558h+arg_14]
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_40D027


loc_40CFB0:				; CODE XREF: sub_40CF60+C5j
		test	[esp+558h+var_548], 10h
		jz	short loc_40D017
		cmp	[esp+558h+var_51C], 2Eh
		jnz	short loc_40CFCA
		mov	al, [esp+558h+var_51B]
		test	al, al
		jz	short loc_40D017
		cmp	al, 2Eh
		jz	short loc_40D017


loc_40CFCA:				; CODE XREF: sub_40CF60+5Cj
		lea	eax, [esp+558h+var_51C]
		lea	ecx, [esp+558h+var_304]
		push	eax
		push	esi
		push	offset dword_443684
		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_402257
		add	esp, 2Ch
		mov	ebp, eax


loc_40D017:				; CODE XREF: sub_40CF60+55j
					; sub_40CF60+64j ...
		lea	ecx, [esp+558h+var_548]
		push	ecx
		push	ebx
		nop
		call	near ptr 2860000h
		test	eax, eax
		jnz	short loc_40CFB0


loc_40D027:				; CODE XREF: sub_40CF60+4Ej
		push	ebx
		nop
		call	near ptr 2850000h
		mov	edx, [esp+558h+arg_C]
		lea	eax, [esp+558h+var_408]
		push	edx
		push	esi
		push	offset dword_443684
		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_40D0BB


loc_40D068:				; CODE XREF: sub_40CF60+159j
		lea	eax, [esp+558h+var_51C]
		lea	ecx, [esp+558h+var_200]
		push	eax
		push	esi
		push	offset dword_443AF8
		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_401523
		add	esp, 24h
		lea	eax, [esp+558h+var_548]
		push	eax
		push	ebx
		nop
		call	near ptr 2860000h
		test	eax, eax
		jnz	short loc_40D068


loc_40D0BB:				; CODE XREF: sub_40CF60+106j
		push	ebx
		call	near ptr 2850000h
		nop
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 548h
		retn
sub_40CF60	endp

; ---------------------------------------------------------------------------
		db 90h
		db 60h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_40D130	proc near		; CODE XREF: sub_40104Bj

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40D130
		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_4019B5
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+19h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_40D130	endp

; ---------------------------------------------------------------------------
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	0Ch
		push	5
		push	4
		push	13h
		lea	edx, [esp+1Ch]
		push	1
		push	edx
		call	sub_4019B5
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 1
		call	sub_4017E4
		push	eax
		lea	eax, [esi+47h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	4
		push	4
		push	1
		push	3
		push	16h
		lea	ecx, [esp+20h]
		push	13h
		push	ecx
		call	sub_4019B5
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 2
		call	sub_4017E4
		lea	edx, [esi+75h]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	0Ch
		push	5
		push	4
		push	3
		push	16h
		push	13h
		lea	eax, [esp+3Ch]
		push	eax
		call	sub_4019B5
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 3
		call	sub_4017E4
		add	esi, 0A3h
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+20h]
		mov	[esp+40h], edi
		call	sub_401226
		mov	ecx, [esp+38h]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 60h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40D2E0:				; CODE XREF: ___:004013CAj
		sub	esp, 104h
		lea	eax, [esp+0]
		push	104h
		push	eax
		push	0
		nop
		call	near ptr 2880C9Eh
		push	eax
		nop
		call	near ptr 2880000h
		mov	eax, dword_4470A0
		test	eax, eax
		jz	loc_40D403
		mov	ecx, dword_44709C
		test	ecx, ecx
		jz	loc_40D403
		mov	ecx, dword_446F68
		test	ecx, ecx
		jz	loc_40D403
		push	0
		push	2
		call	eax
		cmp	eax, 0FFFFFFFFh
		mov	dword_447098, eax
		jz	loc_40D403
		push	ebp
		push	offset dword_446F70
		push	eax
		xor	ebp, ebp
		mov	dword_446F70, 128h
		call	dword_44709C
		test	eax, eax
		jz	loc_40D3EC
		push	ebx
		mov	ebx, [esp+110h]
		push	esi
		mov	esi, dword_50FAD4
		push	edi


loc_40D36D:				; CODE XREF: ___:0040D3E7j
		mov	edi, offset dword_446F94
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [esp+10h]
		repne scasb
		not	ecx
		dec	ecx
		mov	edi, offset dword_446F94
		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_446F94
		add	edx, ecx
		push	edx
		call	esi
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_40D3D3
		mov	edi, offset dword_446F94
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	offset dword_446F94
		mov	ecx, ebx
		call	sub_401681
		push	eax
		call	esi
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_40D3D4


loc_40D3D3:				; CODE XREF: ___:0040D3ABj
		inc	ebp


loc_40D3D4:				; CODE XREF: ___:0040D3D1j
		mov	eax, dword_447098
		push	offset dword_446F70
		push	eax
		call	dword_446F68
		test	eax, eax
		jnz	short loc_40D36D
		pop	edi
		pop	esi
		pop	ebx


loc_40D3EC:				; CODE XREF: ___:0040D357j
		mov	ecx, dword_447098
		push	ecx
		nop
		call	near ptr 28306C9h
		mov	eax, ebp
		pop	ebp
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------


loc_40D403:				; CODE XREF: ___:0040D306j
					; ___:0040D314j ...
		xor	eax, eax
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40D460:				; CODE XREF: ___:00401F91j
		sub	esp, 11Ch
		lea	eax, [esp+18h]
		push	ebx
		push	esi
		push	edi
		push	104h
		push	eax
		nop
		call	near ptr 2890B48h
		mov	edi, offset dword_443B10
		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_50F8E8
		lea	eax, [esp+38h]
		push	80000000h
		push	eax
		call	edi
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40D526
		lea	ecx, [esp+1Ch]
		lea	edx, [esp+0Ch]
		push	ecx
		lea	eax, [esp+18h]
		push	edx
		push	eax
		push	esi
		call	near ptr 2890720h
		nop
		mov	ebx, dword_50F8D8
		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_40D526
		lea	edx, [esp+1Ch]
		lea	eax, [esp+0Ch]
		push	edx
		lea	ecx, [esp+18h]
		push	eax
		push	ecx
		push	esi
		call	near ptr 2890000h
		nop
		push	esi
		call	ebx


loc_40D526:				; CODE XREF: ___:0040D4C9j
					; ___:0040D50Bj
		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 =======================================

; Attributes: noreturn


sub_40D580	proc near		; CODE XREF: sub_401B59j

var_19C		= byte ptr -19Ch
var_184		= byte ptr -184h
var_16C		= byte ptr -16Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	0FFFFFFFFh
		push	offset SEH_40D580
		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_401424
		push	104h
		push	104h
		lea	ecx, [esp+1B0h+var_16C]
		mov	[esp+1B0h+var_4], 0
		call	sub_401C5D
		push	eax
		nop
		call	near ptr 27E09C9h
		lea	ecx, [esp+1A8h+var_16C]
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+4]
		call	sub_4015D7
		lea	ecx, [esp+1A8h+var_184]
		call	sub_401424
		mov	ebx, 1
		push	104h
		push	104h
		lea	ecx, [esp+1B0h+var_184]
		mov	byte ptr [esp+1B0h+var_4], bl
		call	sub_401C5D
		push	eax
		push	0
		nop
		call	near ptr 2880C9Eh
		push	eax
		call	near ptr 2880000h
		nop
		push	offset dword_443B90
		nop
		call	near ptr 27D090Ah
		mov	esi, eax
		test	esi, esi
		jz	short loc_40D671
		mov	edi, dword_50F8A0
		push	offset dword_443B74
		push	esi
		call	edi
		push	offset dword_443B54
		push	esi
		mov	dword_4470A4, eax
		call	edi
		push	offset dword_443B40
		push	esi
		mov	dword_4470A0, eax
		call	edi
		push	offset dword_443B30
		push	esi
		mov	dword_44709C, eax
		call	edi
		mov	dword_446F68, eax
		mov	eax, dword_4470A4
		test	eax, eax
		jz	short loc_40D671
		push	ebx
		push	0
		call	eax


loc_40D671:				; CODE XREF: sub_40D580+A7j
					; sub_40D580+EAj
		mov	esi, [esp+1A8h+arg_0]
		push	0
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+1B0h+var_184]
		call	sub_402117
		test	eax, eax
		jnz	short loc_40D6A8
		mov	al, byte_44718F
		test	al, al
		jz	short loc_40D6A8
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		call	sub_4015FA
; ---------------------------------------------------------------------------
		add	esp, 4


loc_40D6A8:				; CODE XREF: sub_40D580+10Dj
					; sub_40D580+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_4019B5
		add	esp, 38h
		mov	ecx, eax
		mov	byte ptr [esp+1A8h+var_4], 2
		call	sub_4017E4
		push	eax
		call	sub_4015FA
sub_40D580	endp

; ---------------------------------------------------------------------------
		add	esp, 4
		lea	ecx, [esp+0Ch]
		mov	[esp+1A4h], 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+38h]
		push	4
		push	ecx
		call	sub_4019B5
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+1A4h], 3
		call	sub_4017E4
		push	eax
		call	sub_4015FA
; ---------------------------------------------------------------------------
		add	esp, 4
		lea	ecx, [esp+0Ch]
		mov	[esp+1A4h], 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+30h]
		push	14h
		push	edx
		call	sub_4019B5
		add	esp, 2Ch
		mov	ecx, eax
		mov	byte ptr [esp+1A4h], 4
		call	sub_4017E4
		push	eax
		call	sub_4015FA
; ---------------------------------------------------------------------------
		add	esp, 4
		lea	ecx, [esp+0Ch]
		mov	[esp+1A4h], 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+38h]
		push	0Dh
		push	eax
		call	sub_4019B5
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+1A4h], 5
		call	sub_4017E4
		push	eax
		call	sub_4015FA
; ---------------------------------------------------------------------------
		add	esp, 4
		lea	ecx, [esp+0Ch]
		mov	[esp+1A4h], 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+38h]
		push	10h
		push	ecx
		call	sub_4019B5
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+1A4h], 6
		call	sub_4017E4
		push	eax
		call	sub_4015FA
; ---------------------------------------------------------------------------
		add	esp, 4
		lea	ecx, [esp+0Ch]
		mov	[esp+1A4h], 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+38h]
		push	0Dh
		push	edx
		call	sub_4019B5
		add	esp, 34h
		mov	ecx, eax
		mov	byte ptr [esp+1A4h], 7
		call	sub_4017E4
		push	eax
		call	sub_4015FA
; ---------------------------------------------------------------------------
		db 83h
		dd 4C8D04C4h, 9C880C24h, 1A424h, 39B4E800h, 448DFFFFh
		dd 6A3C24h, 244C8D50h, 3F85E82Ch, 0C085FFFFh, 116850Fh
		dd 8B550000h, 3F52E8CEh, 6A50FFFFh, 244C8D5Ch, 3F46E848h
		dd 8D50FFFFh, 0A8248Ch,	28680000h, 5100443Bh, 1DC90CE8h
		dd 3D8B9000h, 50F8A4h, 0FF14C483h, 24948DD7h, 9Ch, 8D52006Ah
		dd 8B30244Ch, 3DAFE8E8h, 358BFFFFh, 50F90Ch, 85D6FF50h
		dd 0FF3075C0h, 3DC52BD7h, 61A8h, 0D0682573h, 90000007h
		dd 41458FE8h, 24848D02h, 9Ch, 8D50006Ah, 0E830244Ch, 0FFFF3D79h
		dd 85D6FF50h, 0A0D074C0h, 4477EBh, 74C0845Dh, 0CC358B39h
		dd 680050FAh, 104h, 9C248C8Dh, 68000000h, 443B20h, 83D6FF51h
		dd 4C8D0CC4h, 4682424h,	0E8000001h, 0FFFF3EA0h,	9C24948Dh
		dd 50000000h, 83D6FF52h, 11B90CC4h, 33000000h, 247C8DC0h
		dd 24948D54h, 98h, 8966ABF3h, 842484h, 448D0000h, 4C8D0C24h
		dd 51505424h, 6A006Ah, 6A53286Ah, 52006A00h, 44C7006Ah
		dd 447C24h, 0E8900000h,	23E266Ch, 874C085h, 0E890006Ah
		dd 7782C4DEh, 24244C8Dh, 0A42484C6h, 1,	0FF3875E8h, 244C8DFFh
		dd 2484C73Ch, 1A4h, 0FFFFFFFFh,	0FF3861E8h, 248C8BFFh
		dd 19Ch, 5EC38A5Fh, 0D89645Bh, 0
; ---------------------------------------------------------------------------
		add	esp, 19Ch
		retn	4
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 120h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40DB10	proc near		; CODE XREF: sub_401195j
		mov	al, byte_447191
		test	al, al
		jz	short loc_40DB24
		push	offset word_447192
		nop
		call	near ptr 27E07E3h


loc_40DB24:				; CODE XREF: sub_40DB10+7j
		mov	al, 1
		retn
sub_40DB10	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40DB40	proc near		; CODE XREF: sub_401E5Bj

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_40DB40
		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 2880C9Eh
		push	eax
		nop
		call	near ptr 2880000h
		lea	ecx, [esp+6D4h+var_318]
		push	ecx
		push	104h
		nop
		call	near ptr 27C0000h
		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_4019B5
		add	esp, 28h
		mov	ecx, eax
		mov	[esp+6D4h+var_4], 0
		call	sub_4017E4
		push	eax
		lea	eax, [esp+6D8h+var_318]
		push	eax
		lea	ecx, [esp+6DCh+var_520]
		push	offset dword_443684
		push	ecx
		nop
		call	near ptr byte_5EA1BD
		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 2840D70h
		nop
		mov	esi, eax
		test	esi, esi
		jbe	loc_40E0A1
		push	ebx
		push	ebp
		push	edi
		lea	ecx, [esp+6E0h+var_6AC]
		call	sub_401424
		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_4019B5
		add	esp, 18h
		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+708h+var_634]
		push	4
		push	ecx
		mov	byte ptr [esp+710h+var_4], 2
		call	sub_4019B5
		add	esp, 30h
		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_4019B5
		add	esp, 18h
		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+714h+var_67C]
		push	4
		push	eax
		mov	byte ptr [esp+71Ch+var_4], 4
		call	sub_4019B5
		add	esp, 3Ch
		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_4019B5
		add	esp, 1Ch
		mov	[esp+6E0h+var_6C8], eax
		push	0
		push	14h
		push	12h
		push	1
		push	14h
		push	13h
		push	4Eh
		push	0Fh
		push	14h
		push	0Fh
		lea	edx, [esp+708h+var_5D4]
		push	7
		push	edx
		mov	byte ptr [esp+710h+var_4], 6
		call	sub_4019B5
		add	esp, 30h
		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_4019B5
		add	esp, 30h
		mov	[esp+6E0h+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+714h+var_58C]
		push	4
		push	ecx
		mov	byte ptr [esp+71Ch+var_4], 8
		call	sub_4019B5
		add	esp, 3Ch
		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
		mov	byte ptr [esp+734h+var_4], 9
		push	18h
		push	5
		push	4Eh
		push	14h
		push	0Fh
		push	0Eh
		push	4Eh
		push	6
		lea	edx, [esp+754h+var_694]
		push	9
		push	edx
		call	sub_4019B5
		add	esp, 7Ch
		mov	[esp+6E0h+var_6CC], eax
		push	0
		push	14h
		push	12h
		push	1
		push	14h
		push	13h
		lea	eax, [esp+6F8h+var_5BC]
		push	53h
		push	eax
		mov	byte ptr [esp+700h+var_4], 0Ah
		call	sub_4019B5
		add	esp, 20h
		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_4019B5
		add	esp, 2Ch
		mov	[esp+6E0h+var_6BC], eax
		mov	ecx, edi
		mov	byte ptr [esp+6E0h+var_4], 0Ch
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		mov	ecx, [esp+6E8h+var_6B4]
		push	eax
		call	sub_4017E4
		mov	ecx, [esp+6ECh+var_6C8]
		push	eax
		call	sub_4017E4
		mov	ecx, [esp+6F0h+var_6B8]
		push	eax
		call	sub_4017E4
		mov	ecx, [esp+6F4h+var_6C0]
		push	eax
		call	sub_4017E4
		mov	ecx, [esp+6F8h+var_6D0]
		push	eax
		call	sub_4017E4
		mov	ecx, [esp+6FCh+var_6CC]
		push	eax
		call	sub_4017E4
		mov	ecx, [esp+700h+var_6C4]
		push	eax
		call	sub_4017E4
		mov	ecx, [esp+704h+var_6BC]
		push	eax
		call	sub_4017E4
		push	eax
		push	offset dword_443BBC
		lea	edx, [esp+710h+var_6AC]
		push	edx
		call	sub_40102D
		add	esp, 34h
		lea	ecx, [esp+6E0h+var_64C]
		mov	byte ptr [esp+6E0h+var_4], 0Bh
		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_4017E4
		push	eax
		push	esi
		nop
		call	near ptr 27D0000h
		push	esi
		nop
		call	near ptr 28306C9h
		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
		nop
		call	near ptr 2880C9Eh
		push	eax
		nop
		call	near ptr 2880000h
		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_443BA0
		push	ecx
		nop
		call	near ptr byte_5EA1BD
		add	esp, 10h
		lea	edx, [esp+6E0h+var_110]
		lea	eax, [esp+6E0h+var_214]
		push	104h
		push	edx
		push	eax
		call	near ptr 2800000h
		nop
		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
		lea	eax, [esp+6FCh+var_110]
		push	0
		push	eax
		push	0
		nop
		call	near ptr 27F0000h
		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_40E0A1:				; CODE XREF: sub_40DB40+D6j
		mov	ecx, [esp+6D4h+var_C]
		mov	al, 1
		pop	esi
		mov	large fs:0, ecx
		add	esp, 6D0h
		retn
sub_40DB40	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 160h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40E220	proc near		; CODE XREF: sub_401726j

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_40E220
		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_401424
		lea	ecx, [esp+80h+var_6C]
		mov	[esp+80h+var_4], 0
		call	sub_401424
		lea	ecx, [esp+80h+var_3C]
		mov	byte ptr [esp+80h+var_4], 1
		call	sub_401424
		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_4019B5
		add	esp, 0CCh
		push	eax
		lea	ecx, [esp+84h+var_6C]
		mov	byte ptr [esp+84h+var_4], 3
		call	sub_40200E
		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_4019B5
		add	esp, 0DCh
		push	eax
		lea	ecx, [esp+84h+var_3C]
		mov	byte ptr [esp+84h+var_4], 4
		call	sub_40200E
		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_4019B5
		add	esp, 0BCh
		push	eax
		lea	ecx, [esp+84h+var_54]
		mov	byte ptr [esp+84h+var_4], 5
		call	sub_40200E
		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_4017E4
		mov	ebp, dword_50F754
		push	eax
		push	80000002h
		call	ebp
		mov	esi, [esp+80h+arg_4]
		mov	ecx, esi
		call	sub_401681
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, esi
		call	sub_401681
		mov	ebx, [esp+84h+arg_0]
		push	eax
		push	1
		push	0
		mov	ecx, ebx
		call	sub_401681
		mov	ecx, [esp+90h+var_70]
		push	eax
		push	ecx
		call	near ptr 2940000h
		nop
		mov	edx, [esp+80h+var_70]
		push	edx
		nop
		call	near ptr 2900000h
		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_4017E4
		push	eax
		push	80000002h
		call	ebp
		mov	ecx, esi
		call	sub_401681
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, esi
		call	sub_401681
		push	eax
		push	1
		push	0
		mov	ecx, ebx
		call	sub_401681
		mov	ecx, [esp+90h+var_70]
		push	eax
		push	ecx
		nop
		call	near ptr 2940000h
		mov	edx, [esp+80h+var_70]
		push	edx
		nop
		call	near ptr 2900000h
		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_4017E4
		push	eax
		push	80000001h
		call	ebp
		mov	ecx, esi
		call	sub_401681
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, esi
		call	sub_401681
		push	eax
		push	1
		push	0
		mov	ecx, ebx
		call	sub_401681
		mov	ecx, [esp+90h+var_70]
		push	eax
		push	ecx
		call	near ptr 2940000h
		nop
		mov	edx, [esp+80h+var_70]
		push	edx
		nop
		call	near ptr 2900000h
		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_4017E4
		push	eax
		push	80000001h
		call	ebp
		mov	ecx, esi
		call	sub_401681
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, esi
		call	sub_401681
		push	eax
		push	1
		push	0
		mov	ecx, ebx
		call	sub_401681
		mov	ecx, [esp+90h+var_70]
		push	eax
		push	ecx
		call	near ptr 2940000h
		nop
		mov	edx, [esp+80h+var_70]
		push	edx
		nop
		call	near ptr 2900000h
		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_4017E4
		push	eax
		push	80000002h
		call	ebp
		mov	ecx, esi
		call	sub_401681
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, esi
		call	sub_401681
		push	eax
		push	1
		push	0
		mov	ecx, ebx
		call	sub_401681
		mov	ecx, [esp+90h+var_70]
		push	eax
		push	ecx
		call	near ptr 2940000h
		nop
		mov	edx, [esp+80h+var_70]
		push	edx
		nop
		call	near ptr 2900000h
		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_40E220	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 120h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40E7A0	proc near		; CODE XREF: sub_401447j

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_40E7A0
		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_401424
		lea	ecx, [esp+80h+var_3C]
		mov	[esp+80h+var_4], 0
		call	sub_401424
		lea	ecx, [esp+80h+var_54]
		mov	byte ptr [esp+80h+var_4], 1
		call	sub_401424
		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_4019B5
		add	esp, 0CCh
		push	eax
		lea	ecx, [esp+84h+var_3C]
		mov	byte ptr [esp+84h+var_4], 3
		call	sub_40200E
		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_4019B5
		add	esp, 0DCh
		push	eax
		lea	ecx, [esp+84h+var_54]
		mov	byte ptr [esp+84h+var_4], 4
		call	sub_40200E
		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_4019B5
		add	esp, 0BCh
		push	eax
		lea	ecx, [esp+84h+var_6C]
		mov	byte ptr [esp+84h+var_4], 5
		call	sub_40200E
		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_4017E4
		mov	esi, dword_50F754
		push	eax
		push	80000002h
		call	esi
		mov	edi, [esp+80h+arg_0]
		mov	ecx, edi
		call	sub_401681
		mov	ecx, [esp+80h+var_70]
		mov	ebp, dword_50F764
		push	eax
		push	ecx
		call	ebp
		mov	edx, [esp+80h+var_70]
		mov	ebx, dword_50F738
		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_4017E4
		push	eax
		push	80000002h
		call	esi
		mov	ecx, edi
		call	sub_401681
		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_4017E4
		push	eax
		push	80000002h
		call	esi
		mov	ecx, edi
		call	sub_401681
		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_4017E4
		push	eax
		push	80000001h
		call	esi
		mov	ecx, edi
		call	sub_401681
		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_4017E4
		push	eax
		push	80000001h
		call	esi
		mov	ecx, edi
		call	sub_401681
		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_40E7A0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 0F0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40EC30	proc near		; CODE XREF: sub_401497j

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_40EC30
		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_401424
		push	104h
		push	104h
		lea	ecx, [esp+64h+var_24]
		mov	[esp+64h+var_4], 0
		call	sub_401C5D
		push	eax
		call	near ptr 27E09C9h
		nop
		lea	ecx, [esp+5Ch+var_3C]
		call	sub_401424
		mov	ecx, [esp+5Ch+arg_4]
		mov	byte ptr [esp+5Ch+var_4], 1
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+60h+var_24]
		call	sub_4017E4
		push	eax
		lea	eax, [esp+64h+var_3C]
		push	offset dword_443684
		push	eax
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+5Ch+var_54]
		call	sub_401424
		lea	ecx, [esp+5Ch+var_54]
		push	offset dword_4437D4
		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_402153
		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_40EC30	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40ED70	proc near		; CODE XREF: sub_402153j

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_40ED70
		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_443BF8
		mov	[esp+5Ch+var_44], ecx
		push	0
		nop
		call	near ptr 29009BDh
		mov	edi, eax
		test	edi, edi
		jnz	short loc_40EDAF
		xor	al, al
		jmp	loc_40EF00
; ---------------------------------------------------------------------------


loc_40EDAF:				; CODE XREF: sub_40ED70+36j
		lea	ecx, [esp+54h+var_24]
		call	sub_401424
		mov	ecx, [esp+54h+arg_8]
		mov	[esp+54h+var_4], 0
		call	sub_4017E4
		mov	ebx, [esp+54h+arg_4]
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		lea	eax, [esp+5Ch+var_24]
		push	offset dword_443BEC
		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_4017E4
		push	eax
		push	1
		push	2
		push	20h
		push	0F01FFh
		mov	ecx, offset dword_447864
		call	sub_4017E4
		mov	ebp, [esp+7Ch+arg_0]
		push	eax
		mov	ecx, ebp
		call	sub_4017E4
		push	eax
		push	edi
		call	near ptr 2910000h
		nop
		mov	esi, eax
		xor	ecx, ecx
		cmp	esi, ecx
		jnz	short loc_40EE95
		call	near ptr 27B07B3h
		nop
		cmp	eax, 431h
		jnz	short loc_40EE79
		mov	ecx, [esp+54h+var_44]
		push	ebp
		call	sub_401942
		mov	esi, dword_50F74C
		push	0
		call	esi
		push	edi
		call	esi
		mov	ecx, [esp+54h+var_44]
		push	ebx
		push	ebp
		call	sub_401497
		lea	ecx, [esp+54h+var_24]
		mov	bl, al
		mov	[esp+54h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	al, bl
		jmp	loc_40EF00
; ---------------------------------------------------------------------------


loc_40EE79:				; CODE XREF: sub_40ED70+CBj
		push	edi
		call	near ptr 291034Ch
		nop
		lea	ecx, [esp+54h+var_24]
		mov	[esp+54h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	al, al
		jmp	short loc_40EF00
; ---------------------------------------------------------------------------


loc_40EE95:				; CODE XREF: sub_40ED70+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
		call	near ptr 291064Eh
		nop
		test	eax, eax
		push	esi
		mov	esi, dword_50F74C
		jnz	short loc_40EEEC
		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_40EF00
; ---------------------------------------------------------------------------


loc_40EEEC:				; CODE XREF: sub_40ED70+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_40EF00:				; CODE XREF: sub_40ED70+3Aj
					; sub_40ED70+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_40ED70	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 70h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40EF90	proc near		; CODE XREF: sub_401942j

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  4

		sub	esp, 1Ch
		push	esi
		push	edi
		push	0F003Fh
		push	offset dword_443BF8
		push	0
		nop
		call	near ptr 29009BDh
		mov	edi, eax
		test	edi, edi
		jnz	short loc_40EFB7
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 1Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40EFB7:				; CODE XREF: sub_40EF90+1Bj
		mov	ecx, [esp+24h+arg_0]
		push	0F01FFh
		call	sub_4017E4
		push	eax
		push	edi
		nop
		call	near ptr 28A078Ch
		mov	esi, eax
		test	esi, esi
		jnz	short loc_40EFE4
		push	edi
		nop
		call	near ptr 291034Ch
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 1Ch
		retn	4
; ---------------------------------------------------------------------------


loc_40EFE4:				; CODE XREF: sub_40EF90+41j
		lea	eax, [esp+24h+var_1C]
		push	eax
		push	1
		push	esi
		nop
		call	near ptr 29004CBh
		push	esi
		nop
		call	near ptr 2900787h
		push	esi
		mov	esi, dword_50F74C
		call	esi
		push	edi
		call	esi
		pop	edi
		mov	al, 1
		pop	esi
		add	esp, 1Ch
		retn	4
sub_40EF90	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40F030	proc near		; CODE XREF: sub_401FB4j

arg_0		= dword	ptr  4

		push	esi
		push	0F003Fh
		push	offset dword_443BF8
		push	0
		nop
		call	near ptr 29009BDh
		mov	esi, eax
		test	esi, esi
		jnz	short loc_40F04F
		xor	al, al
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40F04F:				; CODE XREF: sub_40F030+17j
		mov	ecx, [esp+4+arg_0]
		push	0F01FFh
		call	sub_4017E4
		push	eax
		push	esi
		call	near ptr 28A078Ch
		nop
		test	eax, eax
		jnz	short loc_40F076
		push	esi
		call	near ptr 291034Ch
		nop
		xor	al, al
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40F076:				; CODE XREF: sub_40F030+37j
		push	edi
		mov	edi, dword_50F74C
		push	eax
		call	edi
		push	esi
		call	edi
		pop	edi
		mov	al, 1
		pop	esi
		retn	4
sub_40F030	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40F0B0	proc near		; CODE XREF: sub_401FDCj

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	0F003Fh
		push	offset dword_443BF8
		push	0
		call	near ptr 29009BDh
		nop
		mov	edi, eax
		test	edi, edi
		jnz	short loc_40F0D1
		pop	edi
		xor	al, al
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40F0D1:				; CODE XREF: sub_40F0B0+18j
		mov	ecx, [esp+8+arg_0]
		push	0F01FFh
		call	sub_4017E4
		push	eax
		push	edi
		nop
		call	near ptr 28A078Ch
		mov	esi, eax
		test	esi, esi
		jnz	short loc_40F0FB
		push	edi
		nop
		call	near ptr 291034Ch
		pop	edi
		xor	al, al
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_40F0FB:				; CODE XREF: sub_40F0B0+3Bj
		push	0
		push	0
		push	esi
		nop
		call	near ptr 28F0AF2h
		push	esi
		mov	esi, dword_50F74C
		call	esi
		push	edi
		call	esi
		pop	edi
		mov	al, 1
		pop	esi
		retn	4
sub_40F0B0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40F140:				; CODE XREF: ___:004014A1j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_439048
		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_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40F23A
		push	1
		push	offset dword_443600
		lea	eax, [esp+2Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4011EA
		push	1
		push	offset dword_443600
		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_401726
		test	al, al
		jz	short loc_40F206
		lea	ecx, [esp+0Ch]
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+28h]
		call	sub_4017E4
		push	eax
		push	offset dword_443C58
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 1Ch


loc_40F206:				; CODE XREF: ___:0040F1C7j
		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_40F23A:				; CODE XREF: ___:0040F176j
		lea	ecx, [edi+47h]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40F2D9
		push	1
		push	offset dword_443600
		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_401447
		test	al, al
		jz	short loc_40F2B2
		lea	ecx, [esp+24h]
		call	sub_4017E4
		push	eax
		push	offset dword_443C44
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_40F2B2:				; CODE XREF: ___:0040F27Dj
		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_40F2D9:				; CODE XREF: ___:0040F24Cj
		lea	ecx, [edi+75h]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40F3EF
		push	1
		push	offset dword_443600
		lea	ecx, [esp+44h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4011EA
		push	1
		push	offset dword_443600
		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_443600
		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_402153
		test	al, al
		jz	short loc_40F3AD
		lea	ecx, [esp+24h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+10h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+44h]
		call	sub_4017E4
		push	eax
		push	offset dword_443C20
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 20h


loc_40F3AD:				; CODE XREF: ___:0040F364j
		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_40F3EF:				; CODE XREF: ___:0040F2EBj
		lea	ecx, [edi+0A3h]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_40F491
		push	1
		push	offset dword_443600
		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_401942
		test	al, al
		jz	short loc_40F46A
		lea	ecx, [esp+54h]
		call	sub_4017E4
		push	eax
		push	offset dword_443C0C
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_40F46A:				; CODE XREF: ___:0040F435j
		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_40F491:				; CODE XREF: ___:0040F404j
		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_40F590	proc near		; CODE XREF: sub_401D02j

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_40F590	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_40F600	proc near		; CODE XREF: sub_401695j

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_40F600
		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_401E6A
		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_401424
		lea	ecx, [esi+3Dh]
		mov	byte ptr [esp+3Ch+var_4], 1
		call	sub_401424
		lea	ecx, [esi+56h]
		mov	byte ptr [esp+3Ch+var_4], 2
		call	sub_401749
		lea	ecx, [esi+84h]
		mov	byte ptr [esp+3Ch+var_4], 3
		call	sub_401749
		lea	ecx, [esi+0B2h]
		mov	byte ptr [esp+3Ch+var_4], 4
		call	sub_401749
		lea	ecx, [esi+0E0h]
		mov	byte ptr [esp+3Ch+var_4], 5
		call	sub_401749
		lea	ecx, [esi+10Eh]
		mov	byte ptr [esp+3Ch+var_4], 6
		call	sub_401749
		lea	ecx, [esi+13Ch]
		mov	byte ptr [esp+3Ch+var_4], 7
		call	sub_401749
		lea	ecx, [esi+16Ah]
		mov	byte ptr [esp+3Ch+var_4], 8
		call	sub_401749
		lea	ecx, [esi+198h]
		mov	byte ptr [esp+3Ch+var_4], 9
		call	sub_401749
		lea	ecx, [esi+1C6h]
		mov	byte ptr [esp+3Ch+var_4], 0Ah
		call	sub_401749
		lea	ecx, [esi+1F4h]
		mov	byte ptr [esp+3Ch+var_4], 0Bh
		call	sub_401749
		lea	ecx, [esi+222h]
		mov	byte ptr [esp+3Ch+var_4], 0Ch
		call	sub_401749
		lea	ecx, [esi+250h]
		mov	byte ptr [esp+3Ch+var_4], 0Dh
		call	sub_401749
		lea	ecx, [esi+27Eh]
		mov	byte ptr [esp+3Ch+var_4], 0Eh
		call	sub_401749
		lea	ecx, [esi+2ACh]
		mov	byte ptr [esp+3Ch+var_4], 0Fh
		call	sub_401749
		lea	eax, [esp+3Ch+var_29]
		lea	ecx, [esi+2DAh]
		push	eax
		mov	byte ptr [esp+40h+var_4], 10h
		call	sub_401721
		mov	dword ptr [edi], offset	dword_43E034
		mov	bl, 11h
		xor	edi, edi
		push	offset byte_446F60
		mov	ecx, ebp
		mov	byte ptr [esp+40h+var_4], bl
		mov	dword ptr [esi], offset	dword_43E028
		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_4015D7
		nop
		call	near ptr 27E0796h
		push	edi
		push	21h
		push	28h
		push	23h
		lea	ecx, [esp+4Ch+var_24]
		push	2Ah
		push	ecx
		mov	[esi+24h], eax
		call	sub_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 12h
		call	sub_4017E4
		push	eax
		push	offset dword_4470EC
		call	sub_401D02
		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_4019B5
		add	esp, 20h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 13h
		call	sub_4017E4
		push	eax
		push	offset dword_4470F0
		call	sub_401D02
		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_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 14h
		call	sub_4017E4
		push	eax
		push	offset dword_4470F4
		call	sub_401D02
		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_4019B5
		add	esp, 24h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 15h
		call	sub_4017E4
		push	eax
		push	offset dword_4470F8
		call	sub_401D02
		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_4019B5
		add	esp, 28h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 16h
		call	sub_4017E4
		push	eax
		push	offset dword_4470FC
		call	sub_401D02
		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_4019B5
		add	esp, 14h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 17h
		call	sub_4017E4
		push	eax
		push	offset dword_447100
		call	sub_401D02
		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_4019B5
		add	esp, 14h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 18h
		call	sub_4017E4
		push	eax
		push	offset dword_447104
		call	sub_401D02
		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_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 19h
		call	sub_4017E4
		push	eax
		push	offset dword_447108
		call	sub_401D02
		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_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Ah
		call	sub_4017E4
		push	eax
		push	offset dword_44710C
		call	sub_401D02
		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_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Bh
		call	sub_4017E4
		push	eax
		push	offset dword_447110
		call	sub_401D02
		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_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Ch
		call	sub_4017E4
		push	eax
		push	offset dword_447114
		call	sub_401D02
		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_4019B5
		add	esp, 14h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Dh
		call	sub_4017E4
		push	eax
		push	offset dword_447118
		call	sub_401D02
		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_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Eh
		call	sub_4017E4
		push	eax
		push	offset dword_44711C
		call	sub_401D02
		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_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 1Fh
		call	sub_4017E4
		push	eax
		push	offset dword_447120
		call	sub_401D02
		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_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 20h
		call	sub_4017E4
		push	eax
		push	offset dword_447124
		call	sub_401D02
		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_4019B5
		add	esp, 14h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 21h
		call	sub_4017E4
		push	eax
		push	offset dword_447128
		call	sub_401D02
		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_4019B5
		add	esp, 14h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 22h
		call	sub_4017E4
		push	eax
		push	offset dword_44712C
		call	sub_401D02
		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_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+3Ch+var_4], 23h
		call	sub_4017E4
		push	eax
		push	offset dword_447130
		call	sub_401D02
		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_40F600	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 180h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_40FD70:				; CODE XREF: ___:004019C4j
					; ___:00401A3Cj
		push	esi
		mov	esi, ecx
		call	sub_4013C0
; ---------------------------------------------------------------------------
		test	byte ptr [esp+8], 1
		jz	short loc_40FD88
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_40FD88:				; CODE XREF: ___:0040FD7Dj
		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: noreturn


sub_40FDA0	proc near		; CODE XREF: sub_4013C0j

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_40FDA0
		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_43E028
		mov	dword ptr [esi+11h], offset dword_43E034
		lea	ecx, [esi+2DAh]
		mov	[esp+14h+var_4], 10h
		call	sub_401B54
sub_40FDA0	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esi+2ACh]
		mov	byte ptr [esp+10h], 0Fh
		call	sub_401023
		lea	ecx, [esi+27Eh]
		mov	byte ptr [esp+10h], 0Eh
		call	sub_401023
		lea	ecx, [esi+250h]
		mov	byte ptr [esp+10h], 0Dh
		call	sub_401023
		lea	ecx, [esi+222h]
		mov	byte ptr [esp+10h], 0Ch
		call	sub_401023
		lea	ecx, [esi+1F4h]
		mov	byte ptr [esp+10h], 0Bh
		call	sub_401023
		lea	ecx, [esi+1C6h]
		mov	byte ptr [esp+10h], 0Ah
		call	sub_401023
		lea	ecx, [esi+198h]
		mov	byte ptr [esp+10h], 9
		call	sub_401023
		lea	ecx, [esi+16Ah]
		mov	byte ptr [esp+10h], 8
		call	sub_401023
		lea	ecx, [esi+13Ch]
		mov	byte ptr [esp+10h], 7
		call	sub_401023
		lea	ecx, [esi+10Eh]
		mov	byte ptr [esp+10h], 6
		call	sub_401023
		lea	ecx, [esi+0E0h]
		mov	byte ptr [esp+10h], 5
		call	sub_401023
		lea	ecx, [esi+0B2h]
		mov	byte ptr [esp+10h], 4
		call	sub_401023
		lea	ecx, [esi+84h]
		mov	byte ptr [esp+10h], 3
		call	sub_401023
		lea	ecx, [esi+56h]
		mov	byte ptr [esp+10h], 2
		call	sub_401023
		lea	ecx, [esi+3Dh]
		mov	byte ptr [esp+10h], 1
		call	sub_401226
		lea	ecx, [esi+28h]
		mov	byte ptr [esp+10h], 0
		call	sub_401226
		mov	ecx, esi
		mov	dword ptr [esp+10h], 0FFFFFFFFh
		call	sub_402031
		mov	ecx, [esp+8]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 60h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40FF60:				; CODE XREF: ___:0040212Bj
		push	0FFFFFFFFh
		mov	eax, large fs:0
		push	offset loc_4395D3
		push	eax
		mov	eax, 2478h
		mov	large fs:0, esp
		call	sub_436840
		push	ebx
		push	ebp
		mov	ebp, ecx
		push	esi
		push	edi
		lea	ecx, [esp+18h]
		call	sub_401424
		mov	al, [ebp+17h]
		xor	ebx, ebx
		cmp	al, bl
		mov	[esp+2490h], ebx
		jz	loc_411330


loc_40FFA2:				; CODE XREF: ___:0041132Aj
		mov	al, byte_4E6E74
		mov	edi, dword_50F8A4
		cmp	al, bl
		jz	loc_411330
		mov	eax, [ebp+20h]
		cmp	eax, ebx
		jnz	short loc_40FFCA
		cmp	dword ptr [ebp+1Ch], 5
		jg	short loc_40FFD4
		cmp	eax, ebx
		jz	loc_41010E


loc_40FFCA:				; CODE XREF: ___:0040FFBAj
		cmp	dword ptr [ebp+1Ch], 2
		jle	loc_41010E


loc_40FFD4:				; CODE XREF: ___:0040FFC0j
		mov	eax, [ebp+18h]
		mov	[ebp+16h], bl
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+15h], bl
		jz	short loc_40FFE9
		push	eax
		nop
		call	near ptr 71AB9639h


loc_40FFE9:				; CODE XREF: ___:0040FFE0j
		mov	ecx, offset word_448C8E
		mov	dword ptr [ebp+18h], 0FFFFFFFFh
		call	sub_401537
		mov	esi, [ebp+20h]
		inc	esi
		mov	[ebp+20h], esi
		lea	esi, [ebp+2DAh]
		mov	ecx, esi
		call	sub_401974
		mov	ecx, [ebp+20h]
		dec	eax
		cmp	ecx, eax
		jbe	short loc_410019
		mov	[ebp+20h], ebx


loc_410019:				; CODE XREF: ___:00410014j
		mov	eax, [ebp+20h]
		mov	ecx, esi
		push	eax
		mov	[ebp+1Ch], ebx
		call	sub_40146A
		mov	ecx, [eax]
		add	ecx, 16Dh
		push	ecx
		push	offset byte_44741D
		mov	ecx, offset word_448D06
		call	sub_401F32
		mov	edx, [ebp+20h]
		mov	ecx, esi
		push	edx
		call	sub_40146A
		mov	eax, [eax]
		mov	ecx, offset word_448D06
		add	eax, 1B6h
		push	eax
		push	offset dword_4473D4
		call	sub_401F32
		mov	ecx, [ebp+20h]
		push	ecx
		mov	ecx, esi
		call	sub_40146A
		mov	edx, [eax]
		mov	ecx, offset word_448D06
		push	edx
		push	offset dword_4472B0
		call	sub_401F32
		mov	eax, [ebp+20h]
		mov	ecx, esi
		push	eax
		call	sub_40146A
		mov	ecx, [eax]
		add	ecx, 124h
		push	ecx
		push	offset word_447342
		mov	ecx, offset word_448D06
		call	sub_401F32
		mov	edx, [ebp+20h]
		mov	ecx, esi
		push	edx
		call	sub_40146A
		mov	eax, [eax]
		mov	ecx, offset word_448D06
		add	eax, 0DBh
		push	eax
		push	offset byte_4472F9
		call	sub_401F32
		mov	ecx, [ebp+20h]
		push	ecx
		mov	ecx, esi
		call	sub_40146A
		mov	edx, [eax]
		mov	ecx, offset word_448D06
		add	edx, 92h
		push	edx
		push	offset byte_44738B
		call	sub_401F32
		mov	eax, [ebp+20h]
		mov	ecx, esi
		push	eax
		call	sub_40146A
		mov	ecx, [eax]
		add	ecx, 1FFh
		push	ecx
		push	offset byte_4474AF
		mov	ecx, offset word_448D06
		call	sub_401F32
		call	edi
		mov	[ebp+24h], eax


loc_41010E:				; CODE XREF: ___:0040FFC4j
					; ___:0040FFCEj
		mov	edx, [ebp+18h]
		cmp	edx, 0FFFFFFFFh
		jnz	short loc_410138
		push	6
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		push	7D0h
		mov	[ebp+18h], eax
		mov	[ebp+15h], bl
		call	near ptr 2821E84h
		nop
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_410138:				; CODE XREF: ___:00410114j
		cmp	[ebp+15h], bl
		jnz	loc_4102C8
		mov	ax, word_44735C
		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_4472F9
		mov	[esp+46h], ax
		call	sub_4017E4
		push	eax
		call	sub_40187F
		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_4101B8
		push	2710h
		call	near ptr 2821E84h
		nop
		mov	eax, [ebp+1Ch]
		mov	[ebp+15h], bl
		inc	eax
		mov	[ebp+1Ch], eax
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_4101B8:				; CODE XREF: ___:0041019Cj
		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
		nop
		call	near ptr 71AB951Eh
		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_443CB4
		push	edx
		nop
		call	near ptr byte_5EA1BD
		add	esp, 18h
		lea	eax, [esp+448h]
		lea	ecx, [ebp+3Dh]
		push	eax
		call	sub_4015D7
		lea	ecx, [esp+448h]
		push	ecx
		call	near ptr 71AB2BF4h
		nop
		push	offset byte_446F60
		mov	ecx, offset byte_44738B
		mov	[ebp+52h], eax
		call	sub_4012EE
		test	eax, eax
		jz	short loc_410287
		mov	ecx, offset byte_44738B
		call	sub_4017E4
		mov	edx, dword_44710C
		push	eax
		push	edx
		push	offset dword_4435F4
		push	ebp
		call	sub_401E0B
		add	esp, 10h


loc_410287:				; CODE XREF: ___:00410265j
		mov	ecx, offset byte_4E6E75
		call	sub_4017E4
		push	eax
		mov	ecx, offset byte_4E6E75
		call	sub_4017E4
		push	eax
		mov	eax, dword_447114
		push	eax
		mov	ecx, offset byte_4E6E75
		call	sub_4017E4
		mov	ecx, dword_447110
		push	eax
		push	ecx
		push	offset dword_443C98
		push	ebp
		call	sub_401E0B
		add	esp, 1Ch
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_4102C8:				; CODE XREF: ___:0041013Bj
		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_411320
		nop
		call	near ptr 27E0796h
		lea	ecx, [esp+18h]
		mov	[ebp+24h], eax
		call	sub_401CBC
		lea	ecx, [esp+488h]
		push	ecx
		lea	ecx, [esp+1Ch]
		call	sub_401A87
		push	offset dword_443600
		lea	edx, [esp+38Ch]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, dword_447118
		mov	byte ptr [esp+2490h], 1
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_4103A0
		push	offset dword_443600
		lea	edx, [esp+41Ch]
		push	4
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	offset dword_4473D4
		mov	ecx, eax
		mov	byte ptr [esp+2494h], 2
		call	sub_401B72
		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_4103A4


loc_4103A0:				; CODE XREF: ___:0041034Aj
		mov	[esp+13h], bl


loc_4103A4:				; CODE XREF: ___:0041039Ej
		lea	ecx, [esp+388h]
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	[esp+13h], bl
		jz	short loc_4103C6
		mov	byte ptr [ebp+16h], 1
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_4103C6:				; CODE XREF: ___:004103BBj
		push	offset dword_443600
		lea	eax, [esp+11Ch]
		push	ebx
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, dword_4470EC
		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_443600
		cmp	al, bl
		push	1
		jz	short loc_410464
		lea	edx, [esp+2D0h]
		lea	ecx, [esp+20h]
		push	edx
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+2490h], 4
		call	sub_4017E4
		push	eax
		mov	eax, dword_447108
		push	eax
		push	offset dword_4435F4
		push	ebp
		call	sub_401E0B
		add	esp, 10h
		mov	[esp+2490h], bl
		lea	ecx, [esp+2C8h]
		jmp	loc_410592
; ---------------------------------------------------------------------------


loc_410464:				; CODE XREF: ___:0041041Aj
		lea	edx, [esp+150h]
		lea	ecx, [esp+20h]
		push	edx
		call	sub_4016AE
		mov	ecx, dword_4470F0
		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_443600
		cmp	al, bl
		jz	loc_4105D0
		lea	edx, [esp+434h]
		push	12h
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	offset byte_446F60
		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_411327
		push	offset dword_443600
		lea	eax, [esp+17Ch]
		push	11h
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, dword_447108
		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_410597
		push	offset dword_443600
		lea	edx, [esp+2FCh]
		push	12h
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+2490h], 8
		call	sub_4017E4
		push	eax
		mov	eax, dword_447108
		push	eax
		push	offset dword_4435F4
		push	ebp
		call	sub_401E0B
		add	esp, 10h
		mov	[esp+2490h], bl
		lea	ecx, [esp+2F8h]


loc_410592:				; CODE XREF: ___:0041045Fj
		call	sub_401226


loc_410597:				; CODE XREF: ___:00410546j
		cmp	[ebp+16h], bl
		jnz	loc_411327
		mov	ecx, offset byte_44741D
		call	sub_4017E4
		push	eax
		mov	ecx, offset dword_4473D4
		call	sub_4017E4
		mov	ecx, dword_4470F4
		push	eax
		push	ecx
		push	offset dword_443C88
		push	ebp
		call	sub_401E0B
		add	esp, 14h
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_4105D0:				; CODE XREF: ___:004104B0j
		lea	edx, [esp+3BCh]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, dword_447128
		mov	byte ptr [esp+2490h], 9
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		jz	short loc_410652
		push	offset dword_443600
		lea	edx, [esp+1ACh]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, dword_44712C
		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_410657


loc_410652:				; CODE XREF: ___:004105FBj
		mov	byte ptr [esp+13h], 1


loc_410657:				; CODE XREF: ___:00410650j
		lea	ecx, [esp+3B8h]
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	[esp+13h], bl
		jz	short loc_4106C4
		cmp	[ebp+16h], bl
		jnz	short loc_4106A0
		mov	ecx, offset byte_44741D
		call	sub_4017E4
		push	eax
		mov	ecx, offset dword_4473D4
		call	sub_4017E4
		mov	edx, dword_4470F4
		push	eax
		push	edx
		push	offset dword_443C88
		push	ebp
		call	sub_401E0B
		add	esp, 14h


loc_4106A0:				; CODE XREF: ___:00410673j
		mov	ecx, offset byte_4E6E75
		call	sub_4017E4
		push	eax
		mov	eax, dword_4470FC
		push	eax
		push	offset dword_4435F4
		push	ebp
		call	sub_401E0B
		add	esp, 10h
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_4106C4:				; CODE XREF: ___:0041066Ej
		push	offset dword_443600
		lea	ecx, [esp+1DCh]
		push	1
		push	ecx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	edx, dword_447104
		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_443600
		cmp	al, bl
		jz	short loc_410775
		lea	eax, [esp+0BCh]
		push	3
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	offset dword_4437F8
		lea	ecx, [esp+0BCh]
		mov	byte ptr [esp+2494h], 0Ch
		call	sub_4014D3
		push	eax
		nop
		call	near ptr 77C47C60h
		add	esp, 8
		cmp	eax, ebx
		jz	short loc_41075D
		inc	eax
		lea	ecx, [ebp+28h]
		push	eax
		call	sub_4015D7


loc_41075D:				; CODE XREF: ___:00410751j
		lea	ecx, [esp+0B8h]
		mov	[esp+2490h], bl
		call	sub_401226
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_410775:				; CODE XREF: ___:00410717j
		lea	ecx, [esp+32Ch]
		push	1
		push	ecx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	edx, dword_447100
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+2494h], 0Dh
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_4107B0
		mov	al, byte_447834
		mov	byte ptr [esp+13h], 1
		cmp	al, bl
		jnz	short loc_4107B4


loc_4107B0:				; CODE XREF: ___:004107A0j
		mov	[esp+13h], bl


loc_4107B4:				; CODE XREF: ___:004107AEj
		lea	ecx, [esp+328h]
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	[esp+13h], bl
		jz	loc_410AC1
		push	offset dword_443C84
		lea	eax, [esp+74h]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	96h
		mov	byte ptr [esp+2494h], 0Eh
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 0Fh
		jz	short loc_410812
		mov	ecx, eax
		call	sub_402054


loc_410812:				; CODE XREF: ___:00410809j
		push	0ADh
		mov	byte ptr [esp+2494h], 0Eh
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 10h
		jz	short loc_41083E
		mov	ecx, eax
		call	sub_4010BE


loc_41083E:				; CODE XREF: ___:00410835j
		push	offset dword_4435EC
		lea	ecx, [esp+74h]
		mov	byte ptr [esp+2494h], 0Eh
		call	sub_401A9B
		push	offset dword_4435EC
		lea	ecx, [esp+0A4h]
		push	ebx
		push	ecx
		lea	ecx, [esp+7Ch]
		xor	edi, edi
		call	sub_4016AE
		push	offset byte_446F60
		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_410AAC


loc_41089F:				; CODE XREF: ___:00410AA6j
		push	96h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 12h
		jz	short loc_4108C7
		mov	ecx, eax
		call	sub_402054
		mov	esi, eax
		jmp	short loc_4108C9
; ---------------------------------------------------------------------------


loc_4108C7:				; CODE XREF: ___:004108BAj
		xor	esi, esi


loc_4108C9:				; CODE XREF: ___:004108C5j
		push	0ADh
		mov	byte ptr [esp+2494h], 0Eh
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 13h
		jz	short loc_4108FB
		mov	ecx, eax
		call	sub_4010BE
		mov	[esp+14h], eax
		jmp	short loc_4108FF
; ---------------------------------------------------------------------------


loc_4108FB:				; CODE XREF: ___:004108ECj
		mov	[esp+14h], ebx


loc_4108FF:				; CODE XREF: ___:004108F9j
		push	offset dword_443C80
		lea	ecx, [esp+1Ch]
		mov	byte ptr [esp+2494h], 0Eh
		call	sub_4013E3
		test	eax, eax
		jz	short loc_410922
		mov	byte ptr [esi+93h], 1
		jmp	short loc_410928
; ---------------------------------------------------------------------------


loc_410922:				; CODE XREF: ___:00410917j
		mov	[esi+93h], bl


loc_410928:				; CODE XREF: ___:00410920j
		push	offset dword_443C7C
		lea	ecx, [esp+1Ch]
		call	sub_4013E3
		test	eax, eax
		jz	short loc_410943
		mov	byte ptr [esi+94h], 1
		jmp	short loc_410949
; ---------------------------------------------------------------------------


loc_410943:				; CODE XREF: ___:00410938j
		mov	[esi+94h], bl


loc_410949:				; CODE XREF: ___:00410941j
		push	offset dword_443604
		lea	ecx, [esp+1Ch]
		call	sub_4013E3
		test	eax, eax
		jz	short loc_410964
		mov	byte ptr [esi+95h], 1
		jmp	short loc_41096A
; ---------------------------------------------------------------------------


loc_410964:				; CODE XREF: ___:00410959j
		mov	[esi+95h], bl


loc_41096A:				; CODE XREF: ___:00410962j
		push	offset dword_443600
		lea	edx, [esp+20Ch]
		push	3
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	eax
		lea	ecx, [esi+15h]
		mov	byte ptr [esp+2494h], 14h
		call	sub_401FBE
		lea	ecx, [esp+208h]
		mov	byte ptr [esp+2490h], 0Eh
		call	sub_401226
		push	offset byte_446F60
		lea	ecx, [esi+54h]
		call	sub_4015D7
		push	offset byte_446F60
		lea	ecx, [esi+3Fh]
		call	sub_4015D7
		push	offset dword_443600
		lea	eax, [esp+0D4h]
		push	3
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	eax
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+2494h], 15h
		call	sub_401FBE
		lea	ecx, [esp+0D0h]
		mov	byte ptr [esp+2490h], 0Eh
		call	sub_401226
		push	offset dword_4435EC
		lea	ecx, [esp+23Ch]
		push	edi
		push	ecx
		lea	ecx, [esp+7Ch]
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+2490h], 16h
		call	sub_4017E4
		push	eax
		mov	ecx, esi
		call	sub_4015D7
		lea	ecx, [esp+238h]
		mov	byte ptr [esp+2490h], 0Eh
		call	sub_401226
		mov	ecx, [esp+14h]
		push	1
		push	esi
		call	sub_401DE3
		cmp	esi, ebx
		jz	short loc_410A59
		push	1
		mov	ecx, esi
		call	sub_4019D3


loc_410A59:				; CODE XREF: ___:00410A4Ej
		mov	ecx, [esp+14h]
		call	sub_4013D4
		inc	edi
		push	offset dword_4435EC
		lea	edx, [esp+0A4h]
		push	edi
		push	edx
		lea	ecx, [esp+7Ch]
		call	sub_4016AE
		push	offset byte_446F60
		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_41089F


loc_410AAC:				; CODE XREF: ___:00410899j
		lea	ecx, [esp+70h]
		mov	[esp+2490h], bl
		call	sub_401226
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_410AC1:				; CODE XREF: ___:004107CBj
		push	offset dword_443600
		lea	eax, [esp+35Ch]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, dword_4470F8
		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_410DDB
		push	96h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 18h
		jz	short loc_410B3B
		mov	ecx, eax
		call	sub_402054
		mov	esi, eax
		jmp	short loc_410B3D
; ---------------------------------------------------------------------------


loc_410B3B:				; CODE XREF: ___:00410B2Ej
		xor	esi, esi


loc_410B3D:				; CODE XREF: ___:00410B39j
		push	0ADh
		mov	[esp+2494h], bl
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, ebx
		mov	byte ptr [esp+2490h], 19h
		jz	short loc_410B6C
		mov	ecx, eax
		call	sub_4010BE
		mov	edi, eax
		jmp	short loc_410B6E
; ---------------------------------------------------------------------------


loc_410B6C:				; CODE XREF: ___:00410B5Fj
		xor	edi, edi


loc_410B6E:				; CODE XREF: ___:00410B6Aj
		push	offset dword_443604
		lea	ecx, [esp+1Ch]
		mov	[esp+2494h], bl
		call	sub_4013E3
		test	eax, eax
		jz	short loc_410B90
		mov	byte ptr [esi+95h], 1
		jmp	short loc_410B96
; ---------------------------------------------------------------------------


loc_410B90:				; CODE XREF: ___:00410B85j
		mov	[esi+95h], bl


loc_410B96:				; CODE XREF: ___:00410B8Ej
		push	offset dword_443C80
		lea	ecx, [esp+1Ch]
		call	sub_4013E3
		test	eax, eax
		jz	short loc_410BB1
		mov	byte ptr [esi+93h], 1
		jmp	short loc_410BB7
; ---------------------------------------------------------------------------


loc_410BB1:				; CODE XREF: ___:00410BA6j
		mov	[esi+93h], bl


loc_410BB7:				; CODE XREF: ___:00410BAFj
		push	offset dword_443C7C
		lea	ecx, [esp+1Ch]
		call	sub_4013E3
		test	eax, eax
		jz	short loc_410BD2
		mov	byte ptr [esi+94h], 1
		jmp	short loc_410BD8
; ---------------------------------------------------------------------------


loc_410BD2:				; CODE XREF: ___:00410BC7j
		mov	[esi+94h], bl


loc_410BD8:				; CODE XREF: ___:00410BD0j
		push	offset dword_443C84
		lea	edx, [esp+29Ch]
		push	ebx
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	offset dword_443600
		lea	ecx, [esp+3ECh]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 1Ah
		call	sub_4016AE
		push	offset dword_443C78
		lea	edx, [esp+26Ch]
		push	ebx
		push	edx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 1Bh
		call	sub_4016AE
		push	eax
		lea	ecx, [esi+15h]
		mov	byte ptr [esp+2494h], 1Ch
		call	sub_401FBE
		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_443C78
		lea	eax, [esp+104h]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	offset dword_4437F8
		lea	ecx, [esp+0ECh]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 1Dh
		call	sub_4016AE
		push	eax
		lea	ecx, [esi+54h]
		mov	byte ptr [esp+2494h], 1Eh
		call	sub_401FBE
		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_4437F8
		lea	edx, [esp+164h]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	offset dword_443600
		lea	ecx, [esp+134h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 1Fh
		call	sub_4016AE
		push	eax
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+2494h], 20h
		call	sub_401FBE
		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_443600
		lea	edx, [esp+194h]
		push	2
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	eax
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+2494h], 21h
		call	sub_401FBE
		lea	ecx, [esp+190h]
		mov	[esp+2490h], bl
		call	sub_401226
		push	offset dword_443C74
		lea	ecx, [esp+1Ch]
		call	sub_4014D3
		push	eax
		nop
		call	near ptr 77C47C60h
		add	esp, 8
		cmp	eax, ebx
		jz	short loc_410DAD
		add	eax, 2
		push	eax
		jmp	short loc_410DB2
; ---------------------------------------------------------------------------


loc_410DAD:				; CODE XREF: ___:00410DA5j
		push	offset byte_446F60


loc_410DB2:				; CODE XREF: ___:00410DABj
		mov	ecx, esi
		call	sub_4015D7
		push	ebx
		push	esi
		mov	ecx, edi
		call	sub_401DE3
		cmp	esi, ebx
		jz	short loc_410DCF
		push	1
		mov	ecx, esi
		call	sub_4019D3


loc_410DCF:				; CODE XREF: ___:00410DC4j
		mov	ecx, edi
		call	sub_4013D4
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_410DDB:				; CODE XREF: ___:00410B0Dj
		push	offset dword_443600
		lea	eax, [esp+1C4h]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, dword_44711C
		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_410FB0
		sub	esp, 18h
		lea	ecx, [esp+30h]
		mov	edx, esp
		mov	[esp+2Ch], esp
		push	offset dword_443600
		push	3
		push	edx
		call	sub_4016AE
		mov	ecx, offset word_448C8E
		call	sub_401CD0
		cmp	eax, ebx
		jz	short loc_410EA2
		sub	esp, 18h
		lea	ecx, [esp+30h]
		mov	eax, esp
		mov	[esp+2Ch], esp
		push	offset dword_443600
		push	3
		push	eax
		call	sub_4016AE
		sub	esp, 18h
		mov	byte ptr [esp+24C0h], 23h
		mov	ecx, esp
		mov	[esp+60h], esp
		push	offset dword_443600
		push	3
		push	ecx
		lea	ecx, [esp+54h]
		call	sub_4016AE
		mov	ecx, offset word_448C8E
		mov	[esp+24C0h], bl
		call	sub_40210D


loc_410EA2:				; CODE XREF: ___:00410E53j
		push	offset dword_443600
		lea	edx, [esp+1F4h]
		push	3
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	offset byte_4E6E75
		mov	ecx, eax
		mov	byte ptr [esp+2494h], 24h
		call	sub_401B72
		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_411327
		push	offset dword_443C84
		lea	eax, [esp+254h]
		push	ebx
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	offset dword_443C78
		lea	ecx, [esp+224h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 25h
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+2490h], 26h
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+284h]
		call	sub_401861
		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_44741D
		mov	[ebp+16h], bl
		call	sub_4017E4
		push	eax
		mov	ecx, offset dword_4473D4
		call	sub_4017E4
		mov	edx, dword_4470F4
		push	eax
		push	edx
		push	offset dword_443C88
		push	ebp
		call	sub_401E0B
		add	esp, 14h
		lea	ecx, [esp+280h]
		mov	[esp+2490h], bl
		call	sub_401226
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_410FB0:				; CODE XREF: ___:00410E27j
		push	offset dword_443600
		lea	eax, [esp+2B4h]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, dword_447110
		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_411168
		push	offset dword_443C84
		lea	edx, [esp+314h]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		push	offset dword_443C78
		lea	ecx, [esp+2E4h]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+249Ch], 2Bh
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+2490h], 2Ch
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+5Ch]
		call	sub_401861
		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_443C74
		lea	ecx, [esp+1Ch]
		call	sub_4014D3
		mov	esi, dword_50FAF8
		push	eax
		call	esi
		add	esp, 8
		test	eax, eax
		jz	loc_411153
		push	offset dword_443C74
		lea	ecx, [esp+1Ch]
		call	sub_4014D3
		push	eax
		call	esi
		add	esp, 8
		lea	ecx, [esp+88h]
		push	eax
		call	sub_401861
		push	offset byte_446F60
		lea	ecx, [esp+5Ch]
		mov	byte ptr [esp+2494h], 30h
		call	sub_4012EE
		test	eax, eax
		jz	short loc_41113F
		push	offset byte_446F60
		lea	ecx, [esp+8Ch]
		call	sub_4012EE
		test	eax, eax
		jz	short loc_41113F
		sub	esp, 18h
		lea	edx, [esp+70h]
		mov	ecx, esp
		mov	[esp+48h], esp
		push	edx
		call	sub_4014C9
		mov	ecx, offset word_448C8E
		call	sub_401CD0
		cmp	eax, ebx
		jz	short loc_41111B
		lea	ecx, [esp+88h]
		push	ecx
		lea	ecx, [eax+19h]
		call	sub_401FBE


loc_41111B:				; CODE XREF: ___:00411109j
		push	offset byte_4E6E75
		lea	ecx, [esp+5Ch]
		call	sub_401B72
		test	eax, eax
		jnz	short loc_41113F
		lea	edx, [esp+88h]
		mov	ecx, offset byte_4E6E75
		push	edx
		call	sub_401FBE


loc_41113F:				; CODE XREF: ___:004110D3j
					; ___:004110E8j ...
		lea	ecx, [esp+88h]
		mov	byte ptr [esp+2490h], 2Eh
		call	sub_401226


loc_411153:				; CODE XREF: ___:00411094j
		lea	ecx, [esp+58h]
		mov	[esp+2490h], bl
		call	sub_401226
		jmp	loc_411327
; ---------------------------------------------------------------------------


loc_411168:				; CODE XREF: ___:00410FFCj
		push	offset dword_443600
		lea	eax, [esp+374h]
		push	1
		push	eax
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, dword_447120
		mov	byte ptr [esp+2490h], 31h
		push	ecx
		mov	ecx, eax
		call	sub_4012EE
		test	eax, eax
		jz	short loc_4111EF
		push	offset dword_443600
		lea	edx, [esp+344h]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		mov	ecx, dword_447130
		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_4111F4


loc_4111EF:				; CODE XREF: ___:00411198j
		mov	byte ptr [esp+13h], 1


loc_4111F4:				; CODE XREF: ___:004111EDj
		lea	ecx, [esp+370h]
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	[esp+13h], bl
		jz	loc_411327
		push	offset dword_443C84
		lea	edx, [esp+3A4h]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		sub	esp, 18h
		mov	byte ptr [esp+24A8h], 33h
		mov	ecx, esp
		mov	[esp+48h], esp
		push	offset dword_443C78
		push	ebx
		push	ecx
		mov	ecx, eax
		call	sub_4016AE
		mov	ecx, offset word_448C8E
		call	sub_401CD0
		lea	ecx, [esp+3A0h]
		mov	esi, eax
		mov	[esp+2490h], bl
		call	sub_401226
		cmp	esi, ebx
		jz	loc_411327
		push	offset dword_443C84
		lea	edx, [esp+404h]
		push	1
		push	edx
		lea	ecx, [esp+24h]
		call	sub_4016AE
		sub	esp, 18h
		mov	byte ptr [esp+24A8h], 34h
		mov	ecx, esp
		mov	[esp+48h], esp
		push	offset dword_443C78
		push	ebx
		push	ecx
		mov	ecx, eax
		call	sub_4016AE
		push	offset dword_443C84
		lea	edx, [esp+3ECh]
		push	1
		push	edx
		lea	ecx, [esp+3Ch]
		mov	byte ptr [esp+24B4h], 35h
		call	sub_4016AE
		sub	esp, 18h
		mov	byte ptr [esp+24C0h], 36h
		mov	ecx, esp
		mov	[esp+44h], esp
		push	offset dword_443C78
		push	ebx
		push	ecx
		mov	ecx, eax
		call	sub_4016AE
		mov	ecx, offset word_448C8E
		mov	byte ptr [esp+24C0h], 37h
		call	sub_40210D
		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_411327
; ---------------------------------------------------------------------------


loc_411320:				; CODE XREF: ___:004102F1j
		mov	ecx, ebp
		call	sub_401D0C


loc_411327:				; CODE XREF: ___:00410133j
					; ___:004101B3j ...
		cmp	[ebp+17h], bl
		jnz	loc_40FFA2


loc_411330:				; CODE XREF: ___:0040FF9Cj
					; ___:0040FFAFj
		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_411860	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_411860
		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_401E6A
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_402054
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E038
		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_411860	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4118E0:				; CODE XREF: ___:0040115Ej
					; ___:004016EAj
		push	esi
		mov	esi, ecx
		call	sub_40101E
		test	byte ptr [esp+8], 1
		jz	short loc_4118F8
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_4118F8:				; CODE XREF: ___:004118EDj
		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_411910	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_411910
		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_43E038
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_40196A
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_402031
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_411910	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_411990	proc near		; CODE XREF: sub_402054j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_411990
		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_401424
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_401424
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401424
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401424
		lea	ecx, [esi+54h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401424
		lea	ecx, [esi+69h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401424
		lea	ecx, [esi+7Eh]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_401424
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_411990	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_411A50	proc near		; CODE XREF: sub_40196Aj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_411A50
		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_411A50	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_411B10	proc near		; CODE XREF: sub_4019D3j

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_40196A
		test	[esp+4+arg_0], 1
		jz	short loc_411B28
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_411B28:				; CODE XREF: sub_411B10+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_411B10	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_411B40	proc near		; CODE XREF: sub_401A0Aj

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_411B40
		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_411B66
		lea	edi, [esi+11h]
		jmp	short loc_411B68
; ---------------------------------------------------------------------------


loc_411B66:				; CODE XREF: sub_411B40+1Fj
		xor	edi, edi


loc_411B68:				; CODE XREF: sub_411B40+24j
		push	0
		push	17h
		push	1
		push	12h
		push	4Fh
		lea	eax, [esp+5Ch+var_3C]
		push	9
		push	eax
		call	sub_4019B5
		add	esp, 1Ch
		push	edi
		mov	ecx, eax
		mov	[esp+4Ch+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+250h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_411B40	endp

; ---------------------------------------------------------------------------
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+0Ch]
		mov	[esp+44h], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411BBC
		lea	ebx, [esi+11h]
		jmp	short loc_411BBE
; ---------------------------------------------------------------------------


loc_411BBC:				; CODE XREF: ___:00411BB5j
		xor	ebx, ebx


loc_411BBE:				; CODE XREF: ___:00411BBAj
		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+38h]
		push	9
		push	edx
		call	sub_4019B5
		add	esp, 34h
		push	ebx
		mov	ecx, eax
		mov	dword ptr [esp+48h], 1
		call	sub_4017E4
		push	eax
		lea	eax, [esi+27Eh]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch]
		mov	[esp+44h], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411C1B
		lea	ebx, [esi+11h]
		jmp	short loc_411C1D
; ---------------------------------------------------------------------------


loc_411C1B:				; CODE XREF: ___:00411C14j
		xor	ebx, ebx


loc_411C1D:				; CODE XREF: ___:00411C19j
		push	0
		push	14h
		push	12h
		push	1
		push	10h
		push	4Fh
		lea	ecx, [esp+24h]
		push	9
		push	ecx
		call	sub_4019B5
		add	esp, 20h
		push	ebx
		mov	ecx, eax
		mov	dword ptr [esp+48h], 2
		call	sub_4017E4
		lea	edx, [esi+1C6h]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch]
		mov	[esp+44h], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411C70
		lea	ebx, [esi+11h]
		jmp	short loc_411C72
; ---------------------------------------------------------------------------


loc_411C70:				; CODE XREF: ___:00411C69j
		xor	ebx, ebx


loc_411C72:				; CODE XREF: ___:00411C6Ej
		push	0
		push	5
		push	4
		push	0Fh
		push	0Dh
		push	4Fh
		lea	eax, [esp+24h]
		push	9
		push	eax
		call	sub_4019B5
		add	esp, 20h
		push	ebx
		mov	ecx, eax
		mov	dword ptr [esp+48h], 3
		call	sub_4017E4
		lea	ecx, [esi+16Ah]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch]
		mov	[esp+44h], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411CC5
		lea	ebx, [esi+11h]
		jmp	short loc_411CC7
; ---------------------------------------------------------------------------


loc_411CC5:				; CODE XREF: ___:00411CBEj
		xor	ebx, ebx


loc_411CC7:				; CODE XREF: ___:00411CC3j
		push	0
		push	7
		push	13h
		push	0Dh
		push	4Fh
		lea	edx, [esp+20h]
		push	9
		push	edx
		call	sub_4019B5
		add	esp, 1Ch
		push	ebx
		mov	ecx, eax
		mov	dword ptr [esp+48h], 4
		call	sub_4017E4
		push	eax
		lea	eax, [esi+1F4h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch]
		mov	[esp+44h], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411D18
		lea	ebx, [esi+11h]
		jmp	short loc_411D1A
; ---------------------------------------------------------------------------


loc_411D18:				; CODE XREF: ___:00411D11j
		xor	ebx, ebx


loc_411D1A:				; CODE XREF: ___:00411D16j
		push	0
		push	5
		push	3
		push	9
		push	14h
		push	0Fh
		push	0Eh
		push	4Fh
		lea	ecx, [esp+2Ch]
		push	9
		push	ecx
		call	sub_4019B5
		add	esp, 28h
		push	ebx
		mov	ecx, eax
		mov	dword ptr [esp+48h], 5
		call	sub_4017E4
		lea	edx, [esi+0B2h]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch]
		mov	[esp+44h], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411D71
		lea	ebx, [esi+11h]
		jmp	short loc_411D73
; ---------------------------------------------------------------------------


loc_411D71:				; CODE XREF: ___:00411D6Aj
		xor	ebx, ebx


loc_411D73:				; CODE XREF: ___:00411D6Fj
		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+3Ch]
		push	9
		push	eax
		call	sub_4019B5
		add	esp, 38h
		push	ebx
		mov	ecx, eax
		mov	dword ptr [esp+48h], 6
		call	sub_4017E4
		lea	ecx, [esi+56h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch]
		mov	[esp+44h], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411DCF
		lea	ebx, [esi+11h]
		jmp	short loc_411DD1
; ---------------------------------------------------------------------------


loc_411DCF:				; CODE XREF: ___:00411DC8j
		xor	ebx, ebx


loc_411DD1:				; CODE XREF: ___:00411DCDj
		push	0
		push	14h
		push	13h
		push	0Fh
		push	8
		push	14h
		push	5
		push	7
		push	4Fh
		lea	edx, [esp+30h]
		push	9
		push	edx
		call	sub_4019B5
		add	esp, 2Ch
		push	ebx
		mov	ecx, eax
		mov	dword ptr [esp+48h], 7
		call	sub_4017E4
		push	eax
		lea	eax, [esi+10Eh]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch]
		mov	[esp+44h], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411E2A
		lea	ebx, [esi+11h]
		jmp	short loc_411E2C
; ---------------------------------------------------------------------------


loc_411E2A:				; CODE XREF: ___:00411E23j
		xor	ebx, ebx


loc_411E2C:				; CODE XREF: ___:00411E28j
		push	0
		push	0Fh
		push	6
		push	0Eh
		push	9
		push	14h
		push	5
		push	0Eh
		push	4Fh
		lea	ecx, [esp+30h]
		push	9
		push	ecx
		call	sub_4019B5
		add	esp, 2Ch
		push	ebx
		mov	ecx, eax
		mov	dword ptr [esp+48h], 8
		call	sub_4017E4
		lea	edx, [esi+198h]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch]
		mov	[esp+44h], edi
		call	sub_401226
		test	esi, esi
		jz	short loc_411E85
		lea	ebx, [esi+11h]
		jmp	short loc_411E87
; ---------------------------------------------------------------------------


loc_411E85:				; CODE XREF: ___:00411E7Ej
		xor	ebx, ebx


loc_411E87:				; CODE XREF: ___:00411E83j
		push	0
		push	0Eh
		push	9
		push	0Fh
		push	0Ah
		push	4Fh
		lea	eax, [esp+3Ch]
		push	9
		push	eax
		call	sub_4019B5
		add	esp, 20h
		push	ebx
		mov	ecx, eax
		mov	dword ptr [esp+48h], 9
		call	sub_4017E4
		add	esi, 13Ch
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+24h]
		mov	[esp+44h], edi
		call	sub_401226
		mov	ecx, [esp+3Ch]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 0F0h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_411FE0:				; CODE XREF: ___:00401AB9j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_439859
		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_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jz	loc_412509
		lea	ecx, [edi+26Dh]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jz	loc_412509
		lea	ecx, [edi+0A1h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4120E2
		push	offset dword_443600
		lea	eax, [esp+2Ch]
		push	2
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ebp, eax
		push	offset dword_443600
		lea	ecx, [esp+14h]
		push	1
		xor	ebx, ebx
		push	ecx
		mov	ecx, esi
		mov	[esp+9Ch], ebx
		call	sub_4016AE
		mov	esi, eax
		mov	ecx, ebp
		mov	byte ptr [esp+90h], 1
		call	sub_4017E4
		push	eax
		mov	ecx, esi
		call	sub_4017E4
		mov	edx, dword_4470F0
		push	eax
		push	edx
		add	edi, 0FFFFFFEFh
		push	offset dword_443CDC
		push	edi
		call	sub_401E0B
		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_412532
; ---------------------------------------------------------------------------


loc_4120E2:				; CODE XREF: ___:00412050j
		lea	ecx, [edi+187h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412159
		add	edi, 0FFFFFFEFh
		lea	eax, [esp+28h]
		push	eax
		mov	ecx, edi
		call	sub_401D39
		mov	ecx, eax
		mov	dword ptr [esp+90h], 2
		call	sub_4017E4
		push	eax
		push	offset dword_4435F0
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	edi
		call	sub_401848
		add	esp, 18h
		lea	ecx, [esp+28h]
		mov	dword ptr [esp+90h], 0FFFFFFFFh
		call	sub_401226
		jmp	loc_412532
; ---------------------------------------------------------------------------


loc_412159:				; CODE XREF: ___:004120F7j
		lea	ecx, [edi+0FDh]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_412214
		push	offset dword_443600
		lea	eax, [esp+2Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		push	eax
		lea	ecx, [edi+17h]
		mov	dword ptr [esp+94h], 3
		call	sub_4018A2
		or	ebp, 0FFFFFFFFh
		lea	ecx, [esp+28h]
		mov	ebx, eax
		mov	[esp+90h], ebp
		call	sub_401226
		test	ebx, ebx
		jz	loc_412532
		lea	ecx, [esp+28h]
		add	edi, 0FFFFFFEFh
		push	ecx
		mov	ecx, edi
		call	sub_401D39
		mov	ecx, eax
		mov	dword ptr [esp+90h], 4
		call	sub_4017E4
		push	eax
		push	offset dword_4435F0
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	edi
		call	sub_401848
		add	esp, 18h
		lea	ecx, [esp+28h]
		mov	[esp+90h], ebp
		call	sub_401226
		jmp	loc_412532
; ---------------------------------------------------------------------------


loc_412214:				; CODE XREF: ___:0041216Ej
		lea	ecx, [edi+12Bh]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4122BD
		push	offset dword_443600
		lea	ecx, [esp+14h]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ebp, eax
		push	offset dword_443600
		lea	edx, [esp+2Ch]
		mov	ebx, 5
		push	1
		push	edx
		mov	ecx, esi
		mov	[esp+9Ch], ebx
		call	sub_4016AE
		mov	esi, eax
		mov	ecx, ebp
		mov	byte ptr [esp+90h], 6
		call	sub_4017E4
		push	eax
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		mov	eax, dword_4470F4
		push	eax
		add	edi, 0FFFFFFEFh
		push	offset dword_443C88
		push	edi
		call	sub_401E0B
		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_412532
; ---------------------------------------------------------------------------


loc_4122BD:				; CODE XREF: ___:00412229j
		lea	ecx, [edi+1B5h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_41232B
		push	offset dword_443600
		lea	ecx, [esp+2Ch]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+90h], 7
		call	sub_4017E4
		mov	edx, dword_447120
		push	eax
		push	edx
		add	edi, 0FFFFFFEFh
		push	offset dword_4435F4
		push	edi
		call	sub_401E0B
		add	esp, 10h
		lea	ecx, [esp+28h]
		mov	dword ptr [esp+90h], 0FFFFFFFFh
		call	sub_401226
		jmp	loc_412532
; ---------------------------------------------------------------------------


loc_41232B:				; CODE XREF: ___:004122D2j
		lea	ecx, [edi+23Fh]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_41238D
		lea	eax, [esp+28h]
		push	9
		push	eax
		mov	ecx, esi
		call	sub_401E2E
		mov	ecx, eax
		mov	dword ptr [esp+90h], 8
		call	sub_4017E4
		push	eax
		add	edi, 0FFFFFFEFh
		push	offset dword_443CD4
		push	edi
		call	sub_401E0B
		add	esp, 0Ch
		lea	ecx, [esp+28h]
		mov	dword ptr [esp+90h], 0FFFFFFFFh
		call	sub_401226
		jmp	loc_412532
; ---------------------------------------------------------------------------


loc_41238D:				; CODE XREF: ___:00412340j
		lea	ecx, [edi+1E3h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41242D
		push	offset dword_443600
		lea	ecx, [esp+14h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ebp, eax
		push	1
		push	offset dword_443600
		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_4014D3
		push	eax
		mov	ecx, esi
		call	sub_4014D3
		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_412532
; ---------------------------------------------------------------------------


loc_41242D:				; CODE XREF: ___:004123A2j
		lea	ecx, [edi+159h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_412532
		push	offset dword_443600
		lea	eax, [esp+74h]
		push	3
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ebp, eax
		push	offset dword_443600
		lea	ecx, [esp+5Ch]
		push	2
		push	ecx
		mov	ecx, esi
		mov	dword ptr [esp+9Ch], 0Bh
		call	sub_4016AE
		mov	ebx, eax
		push	offset dword_443600
		lea	edx, [esp+44h]
		push	1
		push	edx
		mov	ecx, esi
		mov	byte ptr [esp+9Ch], 0Ch
		call	sub_4016AE
		mov	esi, eax
		mov	ecx, ebp
		mov	byte ptr [esp+90h], 0Dh
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		mov	eax, dword_447124
		push	eax
		add	edi, 0FFFFFFEFh
		push	offset dword_443CC4
		push	edi
		call	sub_401E0B
		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_412532
; ---------------------------------------------------------------------------


loc_412509:				; CODE XREF: ___:0041201Aj
					; ___:00412035j
		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_448C8E
		mov	dword ptr [edi+7], 0FFFFFFFFh
		call	sub_401537


loc_412532:				; CODE XREF: ___:004120DDj
					; ___:00412154j ...
		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_4126B0	proc near		; CODE XREF: sub_401D39j

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_4126B0
		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_401424
		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_443CB4
		push	edx
		nop
		call	near ptr byte_5EA1BD
		add	esp, 18h
		lea	ecx, [esp+50h+var_24]
		push	offset byte_446F60
		call	sub_4015D7
		push	offset dword_443D08
		lea	ecx, [esp+54h+var_24]
		call	sub_401A9B
		lea	eax, [esp+50h+var_34]
		lea	ecx, [esp+50h+var_24]
		push	eax
		call	sub_401A9B
		push	offset dword_443D04
		lea	ecx, [esp+54h+var_24]
		call	sub_401A9B
		add	esi, 28h
		lea	ecx, [esp+50h+var_24]
		push	esi
		call	sub_4016BD
		push	offset dword_443D04
		lea	ecx, [esp+54h+var_24]
		call	sub_401A9B
		lea	ecx, [esp+50h+var_34]
		push	ecx
		call	sub_401479
		add	esp, 4
		test	al, al
		jz	short loc_4127BB
		push	offset dword_443CF8
		jmp	short loc_4127C0
; ---------------------------------------------------------------------------


loc_4127BB:				; CODE XREF: sub_4126B0+102j
		push	offset dword_443CEC


loc_4127C0:				; CODE XREF: sub_4126B0+109j
		lea	ecx, [esp+54h+var_24]
		call	sub_401A9B
		mov	esi, [esp+50h+arg_0]
		lea	edx, [esp+50h+var_24]
		push	edx
		mov	ecx, esi
		call	sub_4014C9
		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_4126B0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 60h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_412870	proc near		; CODE XREF: sub_401582j

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_4128CE
		mov	[esi+16h], al
		mov	[esi+15h], al
		mov	eax, [esi+18h]
		push	eax
		nop
		call	near ptr 71AB9639h
		mov	ecx, offset word_448C8E
		mov	dword ptr [esi+18h], 0FFFFFFFFh
		call	sub_401537
		pop	edi
		pop	esi
		xor	al, al
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_4128CE:				; CODE XREF: sub_412870+33j
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebp
		retn	4
sub_412870	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_412900	proc near		; CODE XREF: sub_401E0Bj

arg_2000	= dword	ptr  2004h
arg_2004	= dword	ptr  2008h
arg_2008	= byte ptr  200Ch

		mov	eax, 2000h
		call	sub_436840
		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_401582
		add	esp, 2000h
		retn
sub_412900	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_412970	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_412970
		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_4129A7
		xor	al, al
		pop	esi
		mov	ecx, [esp+3Ch+var_C]
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_4129A7:				; CODE XREF: sub_412970+21j
		lea	ecx, [esp+40h+var_3C]
		call	sub_401424
		mov	al, [esp+40h+arg_4]
		mov	[esp+40h+var_4], 0
		test	al, al
		jz	short loc_4129C8
		mov	eax, dword_4470F0
		push	eax
		jmp	short loc_4129CF
; ---------------------------------------------------------------------------


loc_4129C8:				; CODE XREF: sub_412970+4Ej
		mov	ecx, dword_4470F8
		push	ecx


loc_4129CF:				; CODE XREF: sub_412970+56j
		lea	ecx, [esp+44h+var_3C]
		call	sub_4015D7
		push	ebx
		lea	ecx, [esp+44h+var_24]
		call	sub_401424
		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_4017E4
		push	eax
		lea	ecx, [esp+50h+var_24]
		push	offset dword_443CDC
		push	ecx
		call	sub_40102D
		add	esp, 14h
		lea	ecx, [esp+44h+var_24]
		call	sub_4014D3
		push	eax
		mov	ecx, esi
		call	sub_401582
		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_412970	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_412AA0	proc near		; CODE XREF: sub_401848j

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	sub_436840
		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_412AA0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_412B20	proc near		; CODE XREF: sub_401D0Cj
		push	esi
		mov	esi, ecx
		call	sub_401FB9
		mov	eax, [esi+1Ch]
		inc	eax
		mov	[esi+1Ch], eax
		pop	esi
		retn
sub_412B20	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_412B50	proc near		; CODE XREF: sub_401FB9j
		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_448C8E
		mov	dword ptr [esi+18h], 0FFFFFFFFh
		call	sub_401537
		pop	esi
		retn
sub_412B50	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_412B90	proc near		; CODE XREF: sub_401721j

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_412B90	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_412BC0	proc near		; CODE XREF: sub_401B54j
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40170D
		mov	eax, [esi+4]
		mov	edx, [esi+0Ch]
		sub	edx, eax
		mov	ecx, esi
		sar	edx, 2
		push	edx
		push	eax
		call	sub_401294
sub_412BC0	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		mov	[esi+0Ch], eax
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_412C10	proc near		; CODE XREF: sub_401F00j

var_24		= byte ptr -24h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_412C10
		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_4019B5
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	[esp+2Ch+var_4], 0
		call	sub_4017E4
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
sub_412C10	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+24h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+1Ch]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 24h
		retn
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_412CB0:				; CODE XREF: ___:0040100Aj
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_43994E
		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_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_412FD6
		push	ebx
		push	edi
		push	offset dword_443600
		lea	eax, [esp+44h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		push	offset dword_443600
		lea	ecx, [esp+2Ch]
		push	2
		push	ecx
		mov	ecx, esi
		mov	dword ptr [esp+0B4h], 0
		call	sub_4016AE
		push	offset dword_443600
		lea	edx, [esp+14h]
		push	3
		push	edx
		mov	ecx, esi
		mov	byte ptr [esp+0B4h], 1
		call	sub_4016AE
		push	offset dword_443600
		lea	eax, [esp+74h]
		push	0
		push	eax
		mov	ecx, esi
		mov	byte ptr [esp+0B4h], 2
		call	sub_4016AE
		mov	edi, eax
		lea	ecx, [esp+10h]
		mov	byte ptr [esp+0A8h], 3
		call	sub_4013D9
		lea	ecx, [esp+28h]
		mov	ebx, eax
		call	sub_4013D9
		lea	ecx, [esp+40h]
		add	ebx, eax
		call	sub_4013D9
		mov	ecx, edi
		add	ebx, eax
		call	sub_4013D9
		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_401E2E
		push	offset dword_443600
		lea	edx, [esp+8Ch]
		push	4
		push	edx
		mov	ecx, esi
		mov	byte ptr [esp+0B4h], 4
		call	sub_4016AE
		lea	ecx, [esp+70h]
		push	1
		mov	bl, 5
		push	ecx
		mov	ecx, eax
		mov	[esp+0B0h], bl
		call	sub_401E2E
		push	eax
		mov	ecx, ebp
		mov	byte ptr [esp+0ACh], 6
		call	sub_40200E
		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_40200E
		push	offset dword_443D30
		lea	ecx, [esp+2Ch]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412E35
		xor	edi, edi


loc_412E35:				; CODE XREF: ___:00412E31j
		push	offset dword_443D2C
		lea	ecx, [esp+2Ch]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412E4C
		mov	edi, 1


loc_412E4C:				; CODE XREF: ___:00412E45j
		push	offset dword_443D28
		lea	ecx, [esp+2Ch]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412E63
		mov	edi, 2


loc_412E63:				; CODE XREF: ___:00412E5Cj
		push	offset dword_443D24
		lea	ecx, [esp+2Ch]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412E7A
		mov	edi, 3


loc_412E7A:				; CODE XREF: ___:00412E73j
		push	offset dword_443D20
		lea	ecx, [esp+44h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412ED4
		test	edi, edi
		jnz	short loc_412EAA
		lea	ecx, [esp+10h]
		call	sub_4017E4
		push	eax
		mov	ecx, offset word_44758A
		call	sub_4012EE
		test	eax, eax
		jz	short loc_412ED4
		jmp	short loc_412EC7
; ---------------------------------------------------------------------------


loc_412EAA:				; CODE XREF: ___:00412E8Ej
		cmp	edi, 1
		jnz	short loc_412ED4
		lea	ecx, [esp+10h]
		call	sub_4017E4
		push	eax
		mov	ecx, offset word_44758A
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412ED4


loc_412EC7:				; CODE XREF: ___:00412EA8j
		push	0
		push	esi
		mov	ecx, offset byte_4472A7
		call	sub_401A32


loc_412ED4:				; CODE XREF: ___:00412E8Aj
					; ___:00412EA6j ...
		push	offset dword_443D18
		lea	ecx, [esp+44h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412F27
		test	edi, edi
		jnz	short loc_412F08
		lea	ecx, [esp+10h]
		call	sub_4017E4
		push	eax
		mov	ecx, offset byte_4D60CD
		call	sub_4013E3
		test	eax, eax
		jnz	loc_412F89
		jmp	short loc_412F7C
; ---------------------------------------------------------------------------


loc_412F08:				; CODE XREF: ___:00412EE8j
		cmp	edi, 1
		jnz	short loc_412F89
		lea	ecx, [esp+10h]
		call	sub_4017E4
		push	eax
		mov	ecx, offset byte_4D60CD
		call	sub_4013E3
		test	eax, eax
		jz	short loc_412F89
		jmp	short loc_412F7C
; ---------------------------------------------------------------------------


loc_412F27:				; CODE XREF: ___:00412EE4j
		push	offset dword_443D10
		lea	ecx, [esp+44h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_412F89
		lea	ecx, [esp+10h]
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		mov	ebx, eax
		call	sub_401654
		test	edi, edi
		jnz	short loc_412F5D
		cmp	eax, ebx
		jz	short loc_412F89
		jmp	short loc_412F7C
; ---------------------------------------------------------------------------


loc_412F5D:				; CODE XREF: ___:00412F55j
		cmp	edi, 1
		jnz	short loc_412F68
		cmp	eax, ebx
		jnz	short loc_412F89
		jmp	short loc_412F7C
; ---------------------------------------------------------------------------


loc_412F68:				; CODE XREF: ___:00412F60j
		cmp	edi, 2
		jnz	short loc_412F73
		cmp	eax, ebx
		jle	short loc_412F89
		jmp	short loc_412F7C
; ---------------------------------------------------------------------------


loc_412F73:				; CODE XREF: ___:00412F6Bj
		cmp	edi, 3
		jnz	short loc_412F89
		cmp	eax, ebx
		jge	short loc_412F89


loc_412F7C:				; CODE XREF: ___:00412F06j
					; ___:00412F25j ...
		push	0
		push	esi
		mov	ecx, offset byte_4472A7
		call	sub_401A32


loc_412F89:				; CODE XREF: ___:00412F00j
					; ___:00412F0Bj ...
		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_412FD8
; ---------------------------------------------------------------------------


loc_412FD6:				; CODE XREF: ___:00412CE9j
		mov	al, 1


loc_412FD8:				; CODE XREF: ___:00412FD4j
		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_4130E0	proc near		; CODE XREF: sub_401654j
		nop
		call	near ptr 27E0796h
		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_4130E0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_413120	proc near		; CODE XREF: sub_401FFAj

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_413120
		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_401749
		lea	ecx, [esi+32h]
		mov	[esp+20h+var_4], 0
		call	sub_401749
		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_401F05
sub_413120	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Fh]
		lea	ebx, [esi+6Ch]
		push	ecx
		mov	ecx, ebx
		mov	byte ptr [esp+20h], 2
		call	sub_401843
; ---------------------------------------------------------------------------
		mov	ecx, edi
		mov	byte ptr [esp+1Ch], 3
		mov	dword ptr [esi], offset	dword_43E044
		call	sub_401924
		mov	ecx, ebx
		call	sub_401C62
		mov	ecx, [esp+14h]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4131F0:				; CODE XREF: ___:00401CF8j
					; ___:00401E10j
		push	esi
		mov	esi, ecx
		call	sub_401C8F
; ---------------------------------------------------------------------------
		test	byte ptr [esp+8], 1
		jz	short loc_413208
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_413208:				; CODE XREF: ___:004131FDj
		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: noreturn


sub_413220	proc near		; CODE XREF: sub_401C8Fj

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_413220
		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_43E044
		lea	edi, [esi+60h]
		mov	[esp+1Ch+var_4], 3
		mov	ecx, edi
		call	sub_401924
		lea	ebx, [esi+6Ch]
		mov	ecx, ebx
		call	sub_401C62
		mov	ecx, ebx
		mov	byte ptr [esp+1Ch+var_4], 2
		call	sub_4014B5
sub_413220	endp

; ---------------------------------------------------------------------------
		mov	ecx, edi
		mov	byte ptr [esp+18h], 1
		call	sub_4011B8
; ---------------------------------------------------------------------------
		lea	ecx, [esi+32h]
		mov	byte ptr [esp+18h], 0
		call	sub_401023
		lea	ecx, [esi+4]
		mov	dword ptr [esp+18h], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+10h]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4132E0	proc near		; CODE XREF: sub_4019F6j

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4132E0
		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_4019B5
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+44h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+32h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_4132E0	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	0Ch
		push	9
		push	1
		lea	edx, [esp+2Ch]
		push	8
		push	edx
		call	sub_4019B5
		add	esp, 18h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+40h], 1
		call	sub_4017E4
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+1Ch]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+34h]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4133D0	proc near		; CODE XREF: sub_401CD0j

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_4133D0
		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_4017E4
		test	eax, eax
		jz	short loc_413477
		lea	ecx, [esp+18h+var_14]
		call	sub_402252
		add	esi, 6Ch
		lea	eax, [esp+18h+var_10]
		push	eax
		mov	ecx, esi
		call	sub_4018F2
		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_413477


loc_413438:				; CODE XREF: sub_4133D0+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_401B72
		test	eax, eax
		lea	ecx, [esp+18h+var_14]
		jz	short loc_41349C
		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_413438


loc_413477:				; CODE XREF: sub_4133D0+2Ej
					; sub_4133D0+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_41349C:				; CODE XREF: sub_4133D0+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_4133D0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_413510	proc near		; CODE XREF: sub_402112j

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_413510
		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_4017E4
		test	eax, eax
		jz	loc_4135E3
		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_401983
		mov	ecx, [eax]
		lea	edx, [esp+28h+var_14]
		mov	[esp+28h+var_18], ecx
		push	edx
		mov	ecx, ebp
		call	sub_402234
		push	eax
		lea	ecx, [esp+2Ch+var_18]
		call	sub_401AD7
		test	al, al
		jz	short loc_4135E3


loc_41357F:				; CODE XREF: sub_413510+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_4014C9
		mov	ecx, ebx
		call	sub_401CD0
		mov	esi, eax
		test	esi, esi
		jz	short loc_4135AC
		mov	edi, [esi]


loc_4135AC:				; CODE XREF: sub_413510+98j
		lea	ecx, [esp+28h+arg_0]
		push	ecx
		mov	ecx, edi
		call	sub_401B72
		test	eax, eax
		jz	short loc_41360B
		test	esi, esi
		jnz	short loc_41360B
		lea	ecx, [esp+28h+var_18]
		call	sub_4018B6
		lea	edx, [esp+28h+var_14]
		mov	ecx, ebp
		push	edx
		call	sub_402234
		push	eax
		lea	ecx, [esp+2Ch+var_18]
		call	sub_401AD7
		test	al, al
		jnz	short loc_41357F


loc_4135E3:				; CODE XREF: sub_413510+31j
					; sub_413510+6Dj
		lea	ecx, [esp+28h+arg_0]
		mov	[esp+28h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	eax, eax


loc_4135F6:				; CODE XREF: sub_413510+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_41360B:				; CODE XREF: sub_413510+AAj
					; sub_413510+AEj
		lea	ecx, [esp+28h+arg_0]
		mov	[esp+28h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	eax, edi
		jmp	short loc_4135F6
sub_413510	endp

; ---------------------------------------------------------------------------
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_413670	proc near		; CODE XREF: sub_401F46j

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_413670
		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_4017E4
		test	eax, eax
		jz	short loc_413714
		lea	ecx, [esp+14h+var_14]
		call	sub_401E1F
		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_401D89
		push	eax
		lea	ecx, [esp+18h+var_14]
		call	sub_401D5C
		test	al, al
		jz	short loc_413714


loc_4136D6:				; CODE XREF: sub_413670+A2j
		lea	eax, [esp+14h+arg_0]
		lea	ecx, [esp+14h+var_14]
		push	eax
		call	sub_401FA5
		mov	ecx, [eax]
		call	sub_401B72
		test	eax, eax
		jz	short loc_413746
		lea	ecx, [esp+14h+var_14]
		call	sub_4020A4
		lea	ecx, [esp+14h+var_10]
		push	ecx
		lea	ecx, [esp+18h+arg_18]
		call	sub_401D89
		push	eax
		lea	ecx, [esp+18h+var_14]
		call	sub_401D5C
		test	al, al
		jnz	short loc_4136D6


loc_413714:				; CODE XREF: sub_413670+2Bj
					; sub_413670+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_401578
; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	ecx, [esp+14h+var_C]
		mov	large fs:0, ecx
		add	esp, 14h
		retn	24h
; ---------------------------------------------------------------------------


loc_413746:				; CODE XREF: sub_413670+7Dj
		push	esi
		lea	ecx, [esp+18h+var_14]
		call	sub_401FA5
		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_401578
sub_413670	endp

; ---------------------------------------------------------------------------
		mov	ecx, [esp+0Ch]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn	24h
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4137E0	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_4137E0
		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_4017E4
		test	eax, eax
		jz	loc_413913
		lea	eax, [esp+0A8h+var_64]
		push	eax
		call	sub_401A55
		add	esp, 4
		lea	ecx, [esp+0A8h+var_A4]
		call	sub_401424
		push	offset byte_446F60
		lea	ecx, [esp+0ACh+var_A4]
		mov	byte ptr [esp+0ACh+var_4], 1
		call	sub_4015D7
		lea	ecx, [esp+0A8h+arg_0]
		call	sub_4013D9
		push	eax
		lea	ecx, [esp+0ACh+arg_0]
		call	sub_4014D3
		lea	ecx, [esp+0ACh+var_64]
		push	eax
		push	ecx
		call	sub_401C12
		lea	edx, [esp+0B4h+var_64]
		lea	eax, [esp+0B4h+var_74]
		push	edx
		push	eax
		call	sub_402158
		add	esp, 14h


loc_41387B:				; CODE XREF: sub_4137E0+E8j
		lea	ecx, [esp+0A8h+var_8C]
		call	sub_401424
		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_443D34
		push	edx
		call	sub_40102D
		add	esp, 0Ch
		lea	eax, [esp+0A8h+var_8C]
		lea	ecx, [esp+0A8h+var_A4]
		push	eax
		call	sub_4016BD
		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_41387B
		mov	edx, [esp+0A8h+arg_18]
		lea	ecx, [esp+0A8h+var_A4]
		push	ecx
		lea	ecx, [edx+15h]
		call	sub_401B72
		test	eax, eax
		mov	byte ptr [esp+0A8h+var_4], 0
		lea	ecx, [esp+0A8h+var_A4]
		jnz	short loc_41390E
		call	sub_401226
		lea	ecx, [esp+0A8h+arg_0]
		mov	[esp+0A8h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		jmp	short loc_41392C
; ---------------------------------------------------------------------------


loc_41390E:				; CODE XREF: sub_4137E0+10Cj
		call	sub_401226


loc_413913:				; CODE XREF: sub_4137E0+33j
		lea	ecx, [esp+0A8h+arg_0]
		mov	[esp+0A8h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	al, al


loc_41392C:				; CODE XREF: sub_4137E0+12Cj
		mov	ecx, [esp+0A8h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 0A4h
		retn	1Ch
sub_4137E0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 60h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4139B0	proc near		; CODE XREF: sub_40191Fj

var_34		= dword	ptr -34h
var_2C		= dword	ptr -2Ch
var_24		= byte ptr -24h
var_14		= dword	ptr -14h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_18		= byte ptr  1Ch

		push	0FFFFFFFFh
		push	offset SEH_4139B0
		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_4014C9
		mov	ecx, esi
		call	sub_402112
		test	eax, eax
		jz	short loc_413A5E
		sub	esp, 0Ch
		add	eax, 54h
		mov	ecx, esp
		mov	[esp+24h+var_14], esp
		push	eax
		call	sub_40171C
; ---------------------------------------------------------------------------
		sub	esp, 18h
		lea	edx, [esp+40h]
		mov	ecx, esp
		mov	[esp+40h+var_14], esp
		push	edx
		mov	[esp+44h+var_8], 2
		call	sub_4014C9
		mov	ecx, esi
		mov	[esp+40h+var_8], 1
		call	sub_401F46
; ---------------------------------------------------------------------------
		test	eax, eax
		jz	short loc_413A5E
		lea	ecx, [esp+40h+var_24]
		mov	byte ptr [esp+40h+var_2C], 0
		call	sub_401226
		lea	ecx, [esp+40h+var_C]
		mov	[esp+40h+var_2C], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		mov	ecx, [esp+40h+var_34]
		mov	large fs:0, ecx
		pop	esi
		add	esp, 14h
		retn	30h
; ---------------------------------------------------------------------------


loc_413A5E:				; CODE XREF: sub_4139B0+3Fj
					; sub_4139B0+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_4139B0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_413AE0:				; CODE XREF: ___:00401393j
		push	0FFFFFFFFh
		push	offset loc_439B08
		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_401861
		mov	edx, [esp+30h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+4Ch], esp
		push	edx
		mov	dword ptr [esp+44h], 0
		call	sub_401861
		mov	ecx, esi
		mov	dword ptr [esp+40h], 0FFFFFFFFh
		call	sub_40191F
		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_413B70	proc near		; CODE XREF: sub_401181j

var_3C		= byte ptr -3Ch
var_20		= byte ptr -20h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_4		= byte ptr  8
arg_18		= dword	ptr  1Ch
arg_1C		= dword	ptr  20h

		push	0FFFFFFFFh
		push	offset SEH_413B70
		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_413CB9
		lea	ecx, [esp+48h+arg_0]
		call	sub_4017E4
		test	eax, eax
		jz	loc_413CB9
		push	esi
		push	edi
		push	offset dword_443C84
		lea	eax, [esp+54h+var_3C]
		push	ebx
		push	eax
		lea	ecx, [esp+5Ch+arg_0]
		xor	esi, esi
		call	sub_4016AE
		push	offset byte_446F60
		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_413C93
		add	ebp, 54h


loc_413BF0:				; CODE XREF: sub_413B70+11Dj
		push	15h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	dword ptr [esp+4Ch+var_3C], eax
		cmp	eax, ebx
		mov	byte ptr [esp+4Ch], 2
		jz	short loc_413C10
		mov	ecx, eax
		call	sub_401F2D
		jmp	short loc_413C12
; ---------------------------------------------------------------------------


loc_413C10:				; CODE XREF: sub_413B70+95j
		xor	eax, eax


loc_413C12:				; CODE XREF: sub_413B70+9Ej
		push	offset dword_443C84
		lea	ecx, [esp+50h+var_20]
		push	esi
		push	ecx
		lea	ecx, [esp+58h+arg_4]
		mov	[esp+58h], bl
		mov	[esp+58h+arg_1C], eax
		call	sub_4016AE
		mov	ecx, [esp+4Ch+arg_1C]
		push	eax
		mov	byte ptr [esp+50h], 3
		call	sub_40200E
		lea	ecx, [esp+4Ch+var_20]
		mov	[esp+4Ch], bl
		call	sub_401226
		lea	edx, [esp+4Ch+arg_1C]
		mov	ecx, ebp
		push	edx
		call	sub_40147E
; ---------------------------------------------------------------------------
		inc	esi
		push	offset dword_443C84
		lea	eax, [esp+54h+var_3C]
		push	esi
		push	eax
		lea	ecx, [esp+5Ch+arg_0]
		call	sub_4016AE
		push	offset byte_446F60
		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_413BF0


loc_413C93:				; CODE XREF: sub_413B70+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_413CB9:				; CODE XREF: sub_413B70+26j
					; sub_413B70+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_413B70	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 60h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_413D40	proc near		; CODE XREF: sub_401F2Dj
		push	esi
		mov	esi, ecx
		call	sub_401424
		mov	eax, esi
		pop	esi
		retn
sub_413D40	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_413D60:				; 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_401861
		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_413DA0	proc near		; CODE XREF: sub_40189Dj

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_14		= byte ptr  18h
arg_18		= byte ptr  1Ch
arg_2C		= byte ptr  30h
arg_30		= byte ptr  34h
arg_44		= byte ptr  48h
arg_48		= byte ptr  4Ch
arg_5C		= byte ptr  60h
arg_60		= byte ptr  64h

		push	0FFFFFFFFh
		push	offset SEH_413DA0
		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_4014C9
		mov	ecx, ebp
		call	sub_401CD0
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	loc_413F8E
		sub	esp, 18h
		lea	edx, [esp+3Ch+arg_0]
		mov	ecx, esp
		mov	[esp+3Ch+var_14], esp
		push	edx
		call	sub_4014C9
		mov	ecx, ebp
		call	sub_402112
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_413F8E
		push	edi
		lea	eax, [esp+28h+arg_18]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+40h+var_14], esp
		push	eax
		call	sub_4014C9
		mov	ecx, ebp
		call	sub_4011DB
		cmp	al, bl
		jz	loc_413F8E
		push	offset byte_446F60
		lea	ecx, [esp+28h+arg_48]
		call	sub_4012EE
		test	eax, eax
		jz	short loc_413E87
		lea	ecx, [edi+2Ah]
		call	sub_4017E4
		lea	ecx, [esp+24h+arg_48]
		mov	esi, eax
		call	sub_4017E4


loc_413E56:				; CODE XREF: sub_413DA0+D4j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_413E7A
		cmp	cl, bl
		jz	short loc_413E76
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_413E7A
		add	eax, 2
		add	esi, 2
		cmp	cl, bl
		jnz	short loc_413E56


loc_413E76:				; CODE XREF: sub_413DA0+C0j
		xor	eax, eax
		jmp	short loc_413E7F
; ---------------------------------------------------------------------------


loc_413E7A:				; CODE XREF: sub_413DA0+BCj
					; sub_413DA0+CAj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_413E7F:				; CODE XREF: sub_413DA0+D8j
		cmp	eax, ebx
		jnz	loc_413F8E


loc_413E87:				; CODE XREF: sub_413DA0+A1j
		push	offset byte_446F60
		lea	ecx, [esp+28h+arg_60]
		call	sub_4012EE
		test	eax, eax
		jz	short loc_413EE3
		lea	ecx, [edi+3Fh]
		call	sub_4017E4
		lea	ecx, [esp+24h+arg_60]
		mov	esi, eax
		call	sub_4017E4


loc_413EB2:				; CODE XREF: sub_413DA0+130j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_413ED6
		cmp	cl, bl
		jz	short loc_413ED2
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_413ED6
		add	eax, 2
		add	esi, 2
		cmp	cl, bl
		jnz	short loc_413EB2


loc_413ED2:				; CODE XREF: sub_413DA0+11Cj
		xor	eax, eax
		jmp	short loc_413EDB
; ---------------------------------------------------------------------------


loc_413ED6:				; CODE XREF: sub_413DA0+118j
					; sub_413DA0+126j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_413EDB:				; CODE XREF: sub_413DA0+134j
		cmp	eax, ebx
		jnz	loc_413F8E


loc_413EE3:				; CODE XREF: sub_413DA0+FAj
		push	58h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+24h+var_10], eax
		cmp	eax, ebx
		mov	byte ptr [esp+24h+var_4], 5
		jz	short loc_413F03
		mov	ecx, eax
		call	sub_401D07
		jmp	short loc_413F05
; ---------------------------------------------------------------------------


loc_413F03:				; CODE XREF: sub_413DA0+158j
		xor	eax, eax


loc_413F05:				; CODE XREF: sub_413DA0+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_40200E
		mov	eax, [esp+24h+var_14]
		lea	edx, [esp+24h+arg_30]
		push	edx
		lea	ecx, [eax+19h]
		call	sub_40200E
		lea	ecx, [esp+24h+var_14]
		push	ecx
		lea	ecx, [ebp+6Ch]
		call	sub_401406
; ---------------------------------------------------------------------------
		lea	ecx, [esp+28h]
		mov	byte ptr [esp+28h+var_8], 3
		call	sub_401226
		lea	ecx, [esp+28h+arg_14]
		mov	byte ptr [esp+28h+var_8], 2
		call	sub_401226
		lea	ecx, [esp+28h+arg_2C]
		mov	byte ptr [esp+28h+var_8], 1
		call	sub_401226
		lea	ecx, [esp+28h+arg_44]
		mov	byte ptr [esp+28h+var_8], bl
		call	sub_401226
		lea	ecx, [esp+28h+arg_5C]
		mov	[esp+28h+var_8], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1
		jmp	short loc_413FDB
; ---------------------------------------------------------------------------


loc_413F8E:				; CODE XREF: sub_413DA0+44j
					; sub_413DA0+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_413FDB:				; CODE XREF: sub_413DA0+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_413DA0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0A0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_414090	proc near		; CODE XREF: sub_401D07j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_414090
		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_401424
		lea	ecx, [esi+19h]
		mov	[esp+14h+var_4], 0
		call	sub_401424
		lea	ecx, [esi+2Eh]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401424
		lea	ecx, [esi+43h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401424
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_414090	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_414120:				; CODE XREF: ___:00401DC0j
		push	0FFFFFFFFh
		push	offset loc_439C10
		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_401861
		mov	edx, [esp+3Ch]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+58h], esp
		push	edx
		mov	dword ptr [esp+44h], 0
		call	sub_401861
		mov	eax, [esp+50h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+6Ch], esp
		push	eax
		mov	byte ptr [esp+5Ch], 1
		call	sub_401861
		mov	edx, [esp+64h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+80h], esp
		push	edx
		mov	byte ptr [esp+74h], 2
		call	sub_401861
		mov	eax, [esp+78h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+94h], esp
		push	eax
		mov	byte ptr [esp+8Ch], 3
		call	sub_401861
		mov	ecx, esi
		mov	dword ptr [esp+88h], 0FFFFFFFFh
		call	sub_40189D
		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_414210	proc near		; CODE XREF: sub_401537j
		add	ecx, 6Ch
		jmp	sub_401C62
sub_414210	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_414230	proc near		; CODE XREF: sub_40137Fj

var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_414230
		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	sub_4367FA
sub_414230	endp

; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+8], eax
		test	eax, eax
		mov	byte ptr [esp+14h], 4
		jz	short loc_414273
		mov	ecx, eax
		call	sub_401BE0
; ---------------------------------------------------------------------------
		jmp	short loc_414275
; ---------------------------------------------------------------------------


loc_414273:				; CODE XREF: ___:00414268j
		xor	eax, eax


loc_414275:				; CODE XREF: ___:00414271j
		lea	ecx, [esp+1Ch]
		mov	byte ptr [esp+14h], 3
		push	ecx
		mov	ecx, eax
		mov	[esp+8], eax
		call	sub_40200E
		mov	eax, [esp+4]
		lea	edx, [esp+34h]
		push	edx
		lea	ecx, [eax+15h]
		call	sub_40200E
		mov	edx, [esp+4]
		lea	ecx, [esp+4Ch]
		push	ecx
		lea	ecx, [edx+2Ah]
		call	sub_40200E
		mov	ecx, [esp+4]
		lea	eax, [esp+64h]
		push	eax
		add	ecx, 3Fh
		call	sub_40200E
		lea	edx, [esp+4]
		lea	ecx, [esi+60h]
		push	edx
		call	sub_401EF1
; ---------------------------------------------------------------------------
		lea	ecx, [esp+1Ch]
		mov	byte ptr [esp+14h], 2
		call	sub_401226
		lea	ecx, [esp+34h]
		mov	byte ptr [esp+14h], 1
		call	sub_401226
		lea	ecx, [esp+4Ch]
		mov	byte ptr [esp+14h], 0
		call	sub_401226
		lea	ecx, [esp+64h]
		mov	dword ptr [esp+14h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+0Ch]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn	60h
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_414360	proc near		; CODE XREF: sub_401BE0j

var_11		= byte ptr -11h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_414360
		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_401424
		lea	ecx, [esi+15h]
		mov	[esp+18h+var_4], 0
		call	sub_401424
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+18h+var_4], 1
		call	sub_401424
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+18h+var_4], 2
		call	sub_401424
		lea	eax, [esp+18h+var_11]
		lea	ecx, [esi+54h]
		push	eax
		mov	byte ptr [esp+1Ch+var_4], 3
		call	sub_40132A
sub_414360	endp

; ---------------------------------------------------------------------------
		mov	ecx, [esp+0Ch]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_414400:				; CODE XREF: ___:004010FAj
		push	0FFFFFFFFh
		push	offset loc_439CD8
		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_401861
		mov	edx, [esp+38h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+54h], esp
		push	edx
		mov	dword ptr [esp+44h], 0
		call	sub_401861
		mov	eax, [esp+4Ch]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+68h], esp
		push	eax
		mov	byte ptr [esp+5Ch], 1
		call	sub_401861
		mov	edx, [esp+60h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+7Ch], esp
		push	edx
		mov	byte ptr [esp+74h], 2
		call	sub_401861
		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_4144D0	proc near		; CODE XREF: sub_401DACj

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_4144D0
		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_401E1F
		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_401D89
		push	eax
		lea	ecx, [esp+1Ch+var_14]
		call	sub_401D5C
		test	al, al
		jz	short loc_414580


loc_414535:				; CODE XREF: sub_4144D0+AEj
		lea	ecx, [esp+18h+arg_0]
		push	ecx
		lea	ecx, [esp+1Ch+var_14]
		call	sub_401FA5
		mov	ecx, [eax]
		call	sub_401B72
		test	eax, eax
		jnz	short loc_41455D
		lea	ecx, [esp+18h+var_14]
		call	sub_401FA5
		mov	edx, [eax]
		mov	[esp+18h+var_10], edx


loc_41455D:				; CODE XREF: sub_4144D0+7Cj
		lea	ecx, [esp+18h+var_14]
		call	sub_4020A4
		lea	eax, [esp+18h+arg_18]
		mov	ecx, esi
		push	eax
		call	sub_401D89
		push	eax
		lea	ecx, [esp+1Ch+var_14]
		call	sub_401D5C
		test	al, al
		jnz	short loc_414535


loc_414580:				; CODE XREF: sub_4144D0+63j
		mov	eax, [esp+18h+var_10]
		test	eax, eax
		jz	short loc_4145C8
		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_4145A3
		push	1
		call	sub_4019DD


loc_4145A3:				; CODE XREF: sub_4144D0+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_4145C8:				; CODE XREF: sub_4144D0+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_4144D0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_414640	proc near		; CODE XREF: sub_4019DDj

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_402220
		test	[esp+4+arg_0], 1
		jz	short loc_414658
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_414658:				; CODE XREF: sub_414640+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_414640	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_414670	proc near		; CODE XREF: sub_402220j
		jmp	sub_401226
sub_414670	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_414690:				; CODE XREF: ___:00401276j
		push	0FFFFFFFFh
		push	offset loc_439D20
		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_443C84
		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_4016AE
		push	offset byte_446F60
		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_414759


loc_4146F3:				; CODE XREF: ___:00414757j
		mov	ecx, [esp+58h]
		push	ecx
		lea	ecx, [esp+44h]
		sub	esp, 18h
		mov	edx, esp
		mov	[esp+30h], esp
		push	offset dword_443C84
		push	esi
		push	edx
		call	sub_4016AE
		mov	ecx, ebp
		call	sub_401DAC
		cmp	al, bl
		jnz	short loc_414720
		mov	[esp+13h], bl


loc_414720:				; CODE XREF: ___:0041471Aj
		inc	esi
		push	offset dword_443C84
		lea	eax, [esp+1Ch]
		push	esi
		push	eax
		lea	ecx, [esp+4Ch]
		call	sub_4016AE
		push	offset byte_446F60
		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_4146F3


loc_414759:				; CODE XREF: ___:004146F1j
		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_4147D0	proc near		; CODE XREF: sub_40210Dj

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_4147D0
		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_4017E4
		test	eax, eax
		jz	loc_414904
		lea	ecx, [esp+1Ch+var_18]
		mov	[esp+1Ch+var_14], 0
		call	sub_402252
		add	esi, 6Ch
		lea	eax, [esp+1Ch+var_10]
		push	eax
		mov	ecx, esi
		call	sub_4018F2
		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_4148AE


loc_414844:				; CODE XREF: sub_4147D0+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_401B72
		test	eax, eax
		jz	short loc_41487C
		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_401B72
		test	eax, eax
		jnz	short loc_41488B


loc_41487C:				; CODE XREF: sub_4147D0+8Ej
		lea	ecx, [esp+1Ch+var_18]
		call	sub_40135C
		mov	edx, [eax]
		mov	[esp+1Ch+var_14], edx


loc_41488B:				; CODE XREF: sub_4147D0+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_414844


loc_4148AE:				; CODE XREF: sub_4147D0+72j
		mov	eax, [esp+1Ch+var_14]
		test	eax, eax
		jz	short loc_414904
		lea	ecx, [esp+1Ch+var_14]
		push	ecx
		mov	ecx, esi
		call	sub_402130
		mov	ecx, [esp+1Ch+var_14]
		test	ecx, ecx
		jz	short loc_4148D1
		push	1
		call	sub_4016FE


loc_4148D1:				; CODE XREF: sub_4147D0+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_414904:				; CODE XREF: sub_4147D0+2Ej
					; sub_4147D0+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_4147D0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 60h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4149A0	proc near		; CODE XREF: sub_4016FEj

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_401A5A
		test	[esp+4+arg_0], 1
		jz	short loc_4149B8
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_4149B8:				; CODE XREF: sub_4149A0+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_4149A0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4149D0	proc near		; CODE XREF: sub_401A5Aj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4149D0
		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_4149D0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_414A60:				; CODE XREF: ___:004013B1j
		push	0FFFFFFFFh
		push	offset loc_439D98
		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_401861
		mov	edx, [esp+30h]
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+4Ch], esp
		push	edx
		mov	dword ptr [esp+44h], 0
		call	sub_401861
		mov	ecx, esi
		mov	dword ptr [esp+40h], 0FFFFFFFFh
		call	sub_40210D
		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_414AF0:				; CODE XREF: ___:00401B31j
		push	0FFFFFFFFh
		push	offset loc_439DB8
		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_4017E4
		test	eax, eax
		jz	loc_414BF7
		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_401983
		mov	ecx, [eax]
		lea	edx, [esp+0Ch]
		mov	[esp+4], ecx
		push	edx
		mov	ecx, esi
		call	sub_402234
		push	eax
		lea	ecx, [esp+8]
		call	sub_401AD7
		test	al, al
		jz	short loc_414BAF


loc_414B64:				; CODE XREF: ___:00414BADj
		lea	eax, [esp+20h]
		lea	ecx, [esp+4]
		push	eax
		call	sub_4011D1
		mov	ecx, [eax]
		call	sub_401B72
		test	eax, eax
		jnz	short loc_414B8C
		lea	ecx, [esp+4]
		call	sub_4011D1
		mov	ecx, [eax]
		mov	[esp+8], ecx


loc_414B8C:				; CODE XREF: ___:00414B7Bj
		lea	ecx, [esp+4]
		call	sub_4018B6
		lea	edx, [esp+0Ch]
		mov	ecx, esi
		push	edx
		call	sub_402234
		push	eax
		lea	ecx, [esp+8]
		call	sub_401AD7
		test	al, al
		jnz	short loc_414B64


loc_414BAF:				; CODE XREF: ___:00414B62j
		mov	eax, [esp+8]
		test	eax, eax
		jz	short loc_414BF7
		lea	eax, [esp+8]
		mov	ecx, esi
		push	eax
		call	sub_401154
		mov	ecx, [esp+8]
		test	ecx, ecx
		jz	short loc_414BD2
		push	1
		call	sub_4011C7
; ---------------------------------------------------------------------------


loc_414BD2:				; CODE XREF: ___:00414BC9j
		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_414BF7:				; CODE XREF: ___:00414B1Ej
					; ___:00414BB5j
		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 =======================================

; Attributes: noreturn


sub_414C70	proc near		; CODE XREF: sub_4011C7j
		push	esi
		mov	esi, ecx
		call	sub_401B45
sub_414C70	endp

; ---------------------------------------------------------------------------
		test	byte ptr [esp+8], 1
		jz	short loc_414C88
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_414C88:				; CODE XREF: ___:00414C7Dj
		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: noreturn


sub_414CA0	proc near		; CODE XREF: sub_401B45j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_414CA0
		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_401578
sub_414CA0	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+10h], 2
		call	sub_401226
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+10h], 1
		call	sub_401226
		lea	ecx, [esi+15h]
		mov	byte ptr [esp+10h], 0
		call	sub_401226
		mov	ecx, esi
		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 0Dh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_414D40:				; CODE XREF: ___:004014BFj
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_439E48
		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_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_414E3B
		sub	esp, 18h
		lea	eax, [esi+15h]
		mov	ecx, esp
		mov	[esp+74h], esp
		push	eax
		call	sub_4014C9
		sub	esp, 18h
		mov	dword ptr [esp+84h], 0
		mov	ecx, esp
		mov	[esp+3Ch], esp
		push	offset byte_446F60
		call	sub_401861
		or	ebx, 0FFFFFFFFh
		mov	ecx, offset word_448C8E
		mov	[esp+84h], ebx
		call	sub_40210D
		test	al, al
		jz	loc_414F70
		push	0
		push	5
		push	19h
		push	2
		push	4
		push	0Fh
		push	0Fh
		lea	ecx, [esp+38h]
		push	21h
		push	ecx
		call	sub_4019B5
		add	esp, 24h
		mov	edi, eax
		lea	ecx, [esi+69h]
		mov	dword ptr [esp+54h], 1
		call	sub_4014D3
		push	eax
		mov	ecx, edi
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D60A5
		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_414E3B:				; CODE XREF: ___:00414D76j
		lea	ecx, [edi+4]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_414F70
		sub	esp, 18h
		lea	edx, [esi+54h]
		mov	ecx, esp
		mov	[esp+74h], esp
		push	edx
		call	sub_4014C9
		sub	esp, 18h
		lea	eax, [esi+3Fh]
		mov	ecx, esp
		mov	[esp+3Ch], esp
		push	eax
		mov	dword ptr [esp+88h], 2
		call	sub_4014C9
		sub	esp, 18h
		lea	edx, [esi+15h]
		mov	ecx, esp
		mov	[esp+58h], esp
		push	edx
		mov	byte ptr [esp+0A0h], 3
		call	sub_4014C9
		sub	esp, 18h
		mov	ecx, esi
		mov	eax, esp
		mov	[esp+74h], esp
		push	1
		push	offset dword_443600
		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_443600
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4011EA
		or	ebx, 0FFFFFFFFh
		mov	ecx, offset word_448C8E
		mov	[esp+0CCh], ebx
		call	sub_40189D
		test	al, al
		jz	short loc_414F70
		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_4019B5
		add	esp, 28h
		mov	edi, eax
		lea	ecx, [esi+69h]
		mov	dword ptr [esp+54h], 6
		call	sub_4014D3
		push	eax
		mov	ecx, edi
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		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_414F70:				; CODE XREF: ___:00414DC2j
					; ___:00414E4Dj ...
		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 =======================================

; Attributes: noreturn


sub_415030	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_401EBA
sub_415030	endp

; ---------------------------------------------------------------------------
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415070	proc near		; CODE XREF: sub_40171Cj

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_401EBA
sub_415070	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+14h]
		mov	[esi+4], eax
		push	ecx
		mov	ecx, edi
		mov	dword ptr [esi+8], 0
		call	sub_4016CC
		mov	edx, [eax]
		lea	eax, [esp+8]
		push	edx
		push	eax
		mov	ecx, edi
		call	sub_40113B
		mov	ecx, [eax]
		lea	edx, [esp+10h]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_4012E9
		mov	eax, [eax]
		mov	ecx, esi
		push	eax
		call	sub_40172B
		mov	eax, esi
		pop	edi
		pop	esi
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4150F0	proc near		; CODE XREF: sub_401578j

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_401D89
		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_401465
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_401CD5
sub_4150F0	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415160	proc near		; CODE XREF: sub_4012E9j

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		push	eax
		call	sub_40208B
		mov	ecx, [eax]
		mov	esi, [esp+8+arg_0]
		add	esp, 4
		push	ecx
		mov	ecx, esi
		call	sub_401DA7
		mov	eax, esi
		pop	esi
		retn	4
sub_415160	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4151A0	proc near		; CODE XREF: sub_401D89j

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_401DA7
		mov	eax, esi
		pop	esi
		retn	4
sub_4151A0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4151D0	proc near		; CODE XREF: sub_40147Ej

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_401D89
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_40215D
sub_4151D0	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415210	proc near		; CODE XREF: sub_401258j

var_C		= byte ptr -0Ch
var_8		= byte ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  4

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_8]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401D89
		lea	ecx, [esp+10h+var_C]
		push	ecx
		mov	ecx, esi
		call	sub_4012E9
		lea	edx, [esp+10h+var_8]
		lea	ecx, [esp+10h+var_C]
		push	edx
		call	sub_401D5C
		test	al, al
		jz	short loc_415291
		push	edi
		mov	edi, [esp+14h+arg_0]


loc_415243:				; CODE XREF: sub_415210+7Ej
		lea	ecx, [esp+14h+var_C]
		call	sub_401FA5
		mov	eax, [eax]
		mov	ecx, [edi]
		cmp	eax, ecx
		jnz	short loc_415275
		lea	ecx, [esp+14h+arg_0]
		push	0
		push	ecx
		lea	ecx, [esp+1Ch+var_C]
		call	sub_40156E
		mov	edx, [eax]
		lea	eax, [esp+14h+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401FAF
; ---------------------------------------------------------------------------
		jmp	short loc_41527E
; ---------------------------------------------------------------------------


loc_415275:				; CODE XREF: sub_415210+42j
		lea	ecx, [esp+14h+var_C]
		call	sub_4020A4


loc_41527E:				; CODE XREF: sub_415210+63j
		lea	ecx, [esp+14h+var_8]
		push	ecx
		lea	ecx, [esp+18h+var_C]
		call	sub_401D5C
		test	al, al
		jnz	short loc_415243
		pop	edi


loc_415291:				; CODE XREF: sub_415210+2Cj
		pop	esi
		add	esp, 0Ch
		retn	4
sub_415210	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4152D0	proc near		; CODE XREF: sub_401E1Fj
		push	esi
		mov	esi, ecx
		call	sub_401EB5
		mov	eax, esi
		pop	esi
		retn
sub_4152D0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4152F0	proc near		; CODE XREF: sub_401FA5j
		mov	eax, [ecx]
		push	eax
		call	sub_401EFB
		add	esp, 4
		retn
sub_4152F0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415310	proc near		; CODE XREF: sub_4020A4j
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_40208B
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_415310	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415340	proc near		; CODE XREF: sub_401D5Cj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4015CD
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_415340	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415370	proc near		; CODE XREF: sub_401F05j

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_401C7B
sub_415370	endp

; ---------------------------------------------------------------------------
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4153B0	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_402234
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401983
		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_401E1A
sub_4153B0	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415420	proc near		; CODE XREF: sub_401983j

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		push	eax
		call	sub_401249
		mov	ecx, [eax]
		mov	esi, [esp+8+arg_0]
		add	esp, 4
		push	ecx
		mov	ecx, esi
		call	sub_401CC6
		mov	eax, esi
		pop	esi
		retn	4
sub_415420	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415460	proc near		; CODE XREF: sub_402234j

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_401CC6
		mov	eax, esi
		pop	esi
		retn	4
sub_415460	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415490	proc near		; CODE XREF: sub_401EF1j

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_402234
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401A96
sub_415490	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4154D0	proc near		; CODE XREF: sub_401924j

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_402234
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401983
		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_4154D0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415520	proc near		; CODE XREF: sub_401154j

var_C		= byte ptr -0Ch
var_8		= byte ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  4

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_8]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_402234
		lea	ecx, [esp+10h+var_C]
		push	ecx
		mov	ecx, esi
		call	sub_401983
		lea	edx, [esp+10h+var_8]
		lea	ecx, [esp+10h+var_C]
		push	edx
		call	sub_401AD7
		test	al, al
		jz	short loc_4155A1
		push	edi
		mov	edi, [esp+14h+arg_0]


loc_415553:				; CODE XREF: sub_415520+7Ej
		lea	ecx, [esp+14h+var_C]
		call	sub_4011D1
		mov	eax, [eax]
		mov	ecx, [edi]
		cmp	eax, ecx
		jnz	short loc_415585
		lea	ecx, [esp+14h+arg_0]
		push	0
		push	ecx
		lea	ecx, [esp+1Ch+var_C]
		call	sub_4010DC
		mov	edx, [eax]
		lea	eax, [esp+14h+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_4017DF
; ---------------------------------------------------------------------------
		jmp	short loc_41558E
; ---------------------------------------------------------------------------


loc_415585:				; CODE XREF: sub_415520+42j
		lea	ecx, [esp+14h+var_C]
		call	sub_4018B6


loc_41558E:				; CODE XREF: sub_415520+63j
		lea	ecx, [esp+14h+var_8]
		push	ecx
		lea	ecx, [esp+18h+var_C]
		call	sub_401AD7
		test	al, al
		jnz	short loc_415553
		pop	edi


loc_4155A1:				; CODE XREF: sub_415520+2Cj
		pop	esi
		add	esp, 0Ch
		retn	4
sub_415520	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4155E0	proc near		; CODE XREF: sub_401037j
		push	esi
		mov	esi, ecx
		call	sub_401E79
		mov	eax, esi
		pop	esi
		retn
sub_4155E0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415600	proc near		; CODE XREF: sub_4011D1j
		mov	eax, [ecx]
		push	eax
		call	sub_402126
		add	esp, 4
		retn
sub_415600	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415620	proc near		; CODE XREF: sub_4018B6j
		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_415620	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415650	proc near		; CODE XREF: sub_401AD7j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401EA6
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_415650	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415680	proc near		; CODE XREF: sub_401843j

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_401DA2
sub_415680	endp

; ---------------------------------------------------------------------------
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4156C0	proc near		; CODE XREF: sub_4014B5j

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_4018F2
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_401401
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_401EF6
sub_4156C0	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415730	proc near		; CODE XREF: sub_4018F2j

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		push	eax
		call	sub_401BB8
		mov	ecx, [eax]
		mov	esi, [esp+8+arg_0]
		add	esp, 4
		push	ecx
		mov	ecx, esi
		call	sub_401D66
		mov	eax, esi
		pop	esi
		retn	4
sub_415730	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415770	proc near		; CODE XREF: sub_40114Aj

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_401D66
		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 =======================================

; Attributes: noreturn


sub_4157A0	proc near		; CODE XREF: sub_401406j

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_401CFD
sub_4157A0	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4157E0	proc near		; CODE XREF: sub_401C62j

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_4018F2
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_401401
		pop	esi
		add	esp, 0Ch
		retn
sub_4157E0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415830	proc near		; CODE XREF: sub_402130j

var_C		= byte ptr -0Ch
var_8		= byte ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  4

		sub	esp, 0Ch
		lea	eax, [esp+0Ch+var_8]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_40114A
		lea	ecx, [esp+10h+var_C]
		push	ecx
		mov	ecx, esi
		call	sub_4018F2
		lea	edx, [esp+10h+var_8]
		lea	ecx, [esp+10h+var_C]
		push	edx
		call	sub_401339
		test	al, al
		jz	short loc_4158B1
		push	edi
		mov	edi, [esp+14h+arg_0]


loc_415863:				; CODE XREF: sub_415830+7Ej
		lea	ecx, [esp+14h+var_C]
		call	sub_40135C
		mov	eax, [eax]
		mov	ecx, [edi]
		cmp	eax, ecx
		jnz	short loc_415895
		lea	ecx, [esp+14h+arg_0]
		push	0
		push	ecx
		lea	ecx, [esp+1Ch+var_C]
		call	sub_401EA1
		mov	edx, [eax]
		lea	eax, [esp+14h+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401078
; ---------------------------------------------------------------------------
		jmp	short loc_41589E
; ---------------------------------------------------------------------------


loc_415895:				; CODE XREF: sub_415830+42j
		lea	ecx, [esp+14h+var_C]
		call	sub_40118B


loc_41589E:				; CODE XREF: sub_415830+63j
		lea	ecx, [esp+14h+var_8]
		push	ecx
		lea	ecx, [esp+18h+var_C]
		call	sub_401339
		test	al, al
		jnz	short loc_415863
		pop	edi


loc_4158B1:				; CODE XREF: sub_415830+2Cj
		pop	esi
		add	esp, 0Ch
		retn	4
sub_415830	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4158F0	proc near		; CODE XREF: sub_402252j
		push	esi
		mov	esi, ecx
		call	sub_401E29
		mov	eax, esi
		pop	esi
		retn
sub_4158F0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415910	proc near		; CODE XREF: sub_40135Cj
		mov	eax, [ecx]
		push	eax
		call	sub_4017DA
		add	esp, 4
		retn
sub_415910	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415930	proc near		; CODE XREF: sub_40118Bj
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_401BB8
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_415930	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415960	proc near		; CODE XREF: sub_401339j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_40144C
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_415960	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415990	proc near		; CODE XREF: sub_40113Bj

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		push	eax
		call	sub_40208B
		mov	ecx, [eax]
		mov	esi, [esp+8+arg_0]
		add	esp, 4
		push	ecx
		mov	ecx, esi
		call	sub_401753
		mov	eax, esi
		pop	esi
		retn	4
sub_415990	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4159D0	proc near		; CODE XREF: sub_4016CCj

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_401753
		mov	eax, esi
		pop	esi
		retn	4
sub_4159D0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415A00	proc near		; CODE XREF: sub_40215Dj

arg_4		= byte ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+0Ch+arg_4]
		call	sub_401C4E
		mov	edi, eax
		push	edi
		call	sub_401104
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_401EBA
sub_415A00	endp

; ---------------------------------------------------------------------------
		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_40208B
		mov	edx, [esp+28h]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_401EFB
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_402194
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		mov	esi, [esp+14h]
		mov	ecx, esi
		call	sub_401DA7
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415AA0	proc near		; CODE XREF: sub_40172Bj

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_401CA8
		test	al, al
		jz	short loc_415AED
		push	edi
		mov	edi, [esp+8+arg_0]


loc_415ABA:				; CODE XREF: sub_415AA0+4Aj
		lea	ecx, [esp+8+arg_4]
		call	sub_401A4B
		push	eax
		lea	ecx, [esp+0Ch+arg_0]
		push	edi
		push	ecx
		mov	ecx, esi
		call	sub_40215D
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8+arg_4]
		call	sub_4020EF
		lea	edx, [esp+8+arg_8]
		lea	ecx, [esp+8+arg_4]
		push	edx
		call	sub_401CA8
		test	al, al
		jnz	short loc_415ABA
		pop	edi


loc_415AED:				; CODE XREF: sub_415AA0+13j
		pop	esi
		retn	0Ch
sub_415AA0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415B20	proc near		; CODE XREF: sub_401FAFj

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_40156E
		mov	ecx, eax
		call	sub_401C4E
		mov	esi, eax
		push	esi
		call	sub_40208B
		push	esi
		mov	ebx, eax
		call	sub_401104
		mov	ecx, [eax]
		push	ecx
		call	sub_40208B
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_401104
		push	esi
		mov	ebx, eax
		call	sub_40208B
		mov	eax, [eax]
		push	eax
		call	sub_401104
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_401EFB
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_4014F6
		push	esi
		mov	ecx, edi
		call	sub_401CD5
sub_415B20	endp

; ---------------------------------------------------------------------------
		mov	eax, [edi+8]
		mov	edx, [esp+18h]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+14h]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415BE0	proc near		; CODE XREF: sub_401465j

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_401D5C
		test	al, al
		jz	short loc_415C3A


loc_415BF8:				; CODE XREF: sub_415BE0+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_40156E
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401FAF
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_401D5C
		test	al, al
		jnz	short loc_415BF8
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_415C3A:				; CODE XREF: sub_415BE0+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_415BE0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415C70	proc near		; CODE XREF: sub_401EBAj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_4020D6
sub_415C70	endp

; ---------------------------------------------------------------------------
		mov	edi, [esp+0Ch]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_415C85
		mov	edi, esi


loc_415C85:				; CODE XREF: ___:00415C81j
		push	esi
		call	sub_40208B
		mov	[eax], edi
		mov	edi, [esp+14h]
		add	esp, 4
		test	edi, edi
		jnz	short loc_415C9A
		mov	edi, esi


loc_415C9A:				; CODE XREF: ___:00415C96j
		push	esi
		call	sub_401104
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415CC0	proc near		; CODE XREF: sub_401CD5j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_401E01
sub_415CC0	endp

; ---------------------------------------------------------------------------
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415CE0	proc near		; CODE XREF: sub_40208Bj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_415CE0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415D00	proc near		; CODE XREF: sub_401EFBj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_415D00	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415D20	proc near		; CODE XREF: sub_401EB5j
		mov	eax, ecx
		retn
sub_415D20	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415D40	proc near		; CODE XREF: sub_401DA7j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401753
		mov	eax, esi
		pop	esi
		retn	4
sub_415D40	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415D70	proc near		; CODE XREF: sub_40156Ej

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_4020A4
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_415D70	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415DA0	proc near		; CODE XREF: sub_4015CDj

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_415DA0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415DD0	proc near		; CODE XREF: sub_401A96j

arg_4		= byte ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+0Ch+arg_4]
		call	sub_401F6E
		mov	edi, eax
		push	edi
		call	sub_401163
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_401C7B
sub_415DD0	endp

; ---------------------------------------------------------------------------
		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+28h]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_402126
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_4015E6
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		mov	esi, [esp+14h]
		mov	ecx, esi
		call	sub_401CC6
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415E70	proc near		; CODE XREF: sub_4017DFj

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_401F6E
		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_402126
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_401D4D
		push	esi
		mov	ecx, edi
		call	sub_401E1A
sub_415E70	endp

; ---------------------------------------------------------------------------
		mov	eax, [edi+8]
		mov	edx, [esp+18h]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+14h]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_415F30	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_401AD7
		test	al, al
		jz	short loc_415F8A


loc_415F48:				; CODE XREF: sub_415F30+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_4017DF
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_401AD7
		test	al, al
		jnz	short loc_415F48
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_415F8A:				; CODE XREF: sub_415F30+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_415F30	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_415FC0	proc near		; CODE XREF: sub_401C7Bj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_4015A5
sub_415FC0	endp

; ---------------------------------------------------------------------------
		mov	edi, [esp+0Ch]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_415FD5
		mov	edi, esi


loc_415FD5:				; CODE XREF: ___:00415FD1j
		push	esi
		call	sub_401249
		mov	[eax], edi
		mov	edi, [esp+14h]
		add	esp, 4
		test	edi, edi
		jnz	short loc_415FEA
		mov	edi, esi


loc_415FEA:				; CODE XREF: ___:00415FE6j
		push	esi
		call	sub_401163
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_416010	proc near		; CODE XREF: sub_401E1Aj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_4010D7
sub_416010	endp

; ---------------------------------------------------------------------------
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416030	proc near		; CODE XREF: sub_401249j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_416030	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416050	proc near		; CODE XREF: sub_402126j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_416050	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416070	proc near		; CODE XREF: sub_401E79j
		mov	eax, ecx
		retn
sub_416070	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416090	proc near		; CODE XREF: sub_401CC6j

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_416090	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4160C0	proc near		; CODE XREF: sub_4010DCj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_4018B6
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_4160C0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4160F0	proc near		; CODE XREF: sub_401EA6j

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_4160F0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_416120	proc near		; CODE XREF: sub_401CFDj

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_4017D5
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_401DA2
sub_416120	endp

; ---------------------------------------------------------------------------
		push	edi
		mov	ebx, eax
		call	sub_4017D5
		push	edi
		mov	[eax], ebx
		call	sub_4017D5
		mov	edi, [eax]
		push	edi
		call	sub_4017D5
		mov	ecx, [eax]
		push	ecx
		call	sub_401BB8
		mov	edx, [esp+28h]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_4017DA
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_401DFC
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		mov	esi, [esp+14h]
		mov	ecx, esi
		call	sub_401D66
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4161C0	proc near		; CODE XREF: sub_401078j

var_4		= byte ptr -4
arg_4		= byte 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_401EA1
		mov	ecx, eax
		call	sub_4012CB
		mov	esi, eax
		push	esi
		call	sub_401BB8
		push	esi
		mov	ebx, eax
		call	sub_4017D5
		mov	ecx, [eax]
		push	ecx
		call	sub_401BB8
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_4017D5
		push	esi
		mov	ebx, eax
		call	sub_401BB8
		mov	eax, [eax]
		push	eax
		call	sub_4017D5
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_4017DA
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_4013F7
		push	esi
		mov	ecx, edi
		call	sub_401EF6
sub_4161C0	endp

; ---------------------------------------------------------------------------
		mov	eax, [edi+8]
		mov	edx, [esp+18h]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+14h]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416280	proc near		; CODE XREF: sub_401401j

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_4162DA


loc_416298:				; CODE XREF: sub_416280+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_401EA1
		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_416298
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4162DA:				; CODE XREF: sub_416280+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_416280	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_416310	proc near		; CODE XREF: sub_401DA2j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_401E9C
sub_416310	endp

; ---------------------------------------------------------------------------
		mov	edi, [esp+0Ch]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_416325
		mov	edi, esi


loc_416325:				; CODE XREF: ___:00416321j
		push	esi
		call	sub_401BB8
		mov	[eax], edi
		mov	edi, [esp+14h]
		add	esp, 4
		test	edi, edi
		jnz	short loc_41633A
		mov	edi, esi


loc_41633A:				; CODE XREF: ___:00416336j
		push	esi
		call	sub_4017D5
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_416360	proc near		; CODE XREF: sub_401EF6j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_401857
sub_416360	endp

; ---------------------------------------------------------------------------
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416380	proc near		; CODE XREF: sub_401BB8j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_416380	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4163A0	proc near		; CODE XREF: sub_4017DAj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_4163A0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4163C0	proc near		; CODE XREF: sub_401E29j
		mov	eax, ecx
		retn
sub_4163C0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4163E0	proc near		; CODE XREF: sub_401D66j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_40160E
		mov	eax, esi
		pop	esi
		retn	4
sub_4163E0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416410	proc near		; CODE XREF: sub_401EA1j

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_416410	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416440	proc near		; CODE XREF: sub_40144Cj

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_416440	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416470	proc near		; CODE XREF: sub_401104j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_416470	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_416490	proc near		; CODE XREF: sub_4020D6j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D16
sub_416490	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4164C0	proc near		; CODE XREF: sub_401E01j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4367E2
sub_4164C0	endp

; ---------------------------------------------------------------------------
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4164E0	proc near		; CODE XREF: sub_402194j

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_4164E0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416510	proc near		; CODE XREF: sub_4014F6j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_6
		pop	ecx
		retn	4
sub_416510	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416530	proc near		; CODE XREF: sub_401753j

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		retn	4
sub_416530	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416550	proc near		; CODE XREF: sub_401A4Bj
		mov	eax, [ecx]
		push	eax
		call	sub_401EFB
		add	esp, 4
		retn
sub_416550	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416570	proc near		; CODE XREF: sub_4020EFj
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_40208B
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_416570	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4165A0	proc near		; CODE XREF: sub_401CA8j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401E56
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_4165A0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4165D0	proc near		; CODE XREF: sub_401C4Ej
		mov	eax, [ecx]
		retn
sub_4165D0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4165F0	proc near		; CODE XREF: sub_401163j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_4165F0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_416610	proc near		; CODE XREF: sub_4015A5j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D16
sub_416610	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_416640	proc near		; CODE XREF: sub_4010D7j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4367E2
sub_416640	endp

; ---------------------------------------------------------------------------
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416660	proc near		; CODE XREF: sub_4015E6j

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_402040
		add	esp, 8
		retn	8
sub_416660	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416690	proc near		; CODE XREF: sub_401D4Dj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_5
		pop	ecx
		retn	4
sub_416690	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4166B0	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_4166B0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4166D0	proc near		; CODE XREF: sub_401F6Ej
		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_4017D5j

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 =======================================

; Attributes: noreturn


sub_416710	proc near		; CODE XREF: sub_401E9Cj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D16
sub_416710	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_416740	proc near		; CODE XREF: sub_401857j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4367E2
sub_416740	endp

; ---------------------------------------------------------------------------
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		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_401DFCj

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_4020CC
		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_4013F7j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_3
		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_40160Ej

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_4012CBj
		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_401E56j

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_4167F0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_416820	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_41683B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_41683B:				; CODE XREF: sub_416820+11j
		retn
sub_416820	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_416870	proc near		; CODE XREF: sub_402040j

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_41688B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_41688B:				; CODE XREF: sub_416870+11j
		retn
sub_416870	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_4168C0	proc near		; CODE XREF: sub_4020CCj

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_4168DB
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_4168DB:				; CODE XREF: sub_4168C0+11j
		retn
sub_4168C0	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), 447148B9h
		dd 0B508E900h, 9090FFFEh, 90909090h, 4 dup(0CCCCCCCCh)
		dd 41697068h, 0FF6CE800h, 0C3590001h, 90909090h, 4 dup(0CCCCCCCCh)
		dd 447148B9h, 0B2CAE900h, 9090FFFEh, 90909090h,	4 dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------


loc_416990:				; CODE XREF: ___:00401C44j
		push	0FFFFFFFFh
		push	offset loc_439FE1
		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_4021DA
; ---------------------------------------------------------------------------
		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_401EE2
		lea	ecx, [esi+9FC31h]
		mov	byte ptr [esp+10h], 14h
		call	sub_40176C
		lea	ecx, [esi+9FBFFh]
		mov	byte ptr [esp+10h], 13h
		call	sub_401FF5
		lea	ecx, [esi+9FBCDh]
		mov	byte ptr [esp+10h], 12h
		call	sub_401DED
		lea	ecx, [esi+9FB93h]
		mov	byte ptr [esp+10h], 11h
		call	sub_40187A
		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_401F28
		lea	ecx, [esi+9FA73h]
		mov	byte ptr [esp+10h], 0Eh
		call	sub_401B27
		lea	ecx, [esi+9FA13h]
		mov	byte ptr [esp+10h], 0Dh
		call	sub_4017D0
		lea	ecx, [esi+8F4BFh]
		mov	byte ptr [esp+10h], 0Ch
		call	sub_4018CA
		lea	ecx, [esi+8F3A2h]
		mov	byte ptr [esp+10h], 0Bh
		call	sub_401EB0
		lea	ecx, [esi+8F285h]
		mov	byte ptr [esp+10h], 0Ah
		call	sub_402216
		lea	ecx, [esi+8F270h]
		mov	byte ptr [esp+10h], 9
		call	sub_4017A3
		lea	ecx, [esi+8F247h]
		mov	byte ptr [esp+10h], 8
		call	sub_401A23
		lea	ecx, [esi+8EF5Dh]
		mov	byte ptr [esp+10h], 7
		call	sub_4013C0
; ---------------------------------------------------------------------------
		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_401E83
		lea	ecx, [esi+1C58h]
		mov	byte ptr [esp+10h], 4
		call	sub_4014F1
		lea	ecx, [esi+1BBEh]
		mov	byte ptr [esp+10h], 3
		call	sub_401AE6
; ---------------------------------------------------------------------------
		lea	ecx, [esi+1B46h]
		mov	byte ptr [esp+10h], 2
		call	sub_401C8F
; ---------------------------------------------------------------------------
		lea	ecx, [esi+15Fh]
		mov	byte ptr [esp+10h], 1
		call	sub_401929
		lea	ecx, [esi+3Eh]
		mov	byte ptr [esp+10h], 0
		call	sub_40143D
		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_416C00	proc near		; CODE XREF: sub_401A23j
		push	esi
		mov	esi, ecx
		mov	eax, [esi+15h]
		mov	dword ptr [esi], offset	dword_43E050
		test	eax, eax
		jle	short loc_416C17
		push	eax
		call	near ptr 71AB9639h
		nop


loc_416C17:				; CODE XREF: sub_416C00+Ej
		mov	ecx, esi
		call	sub_402031
		pop	esi
		retn
sub_416C00	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_416C30:				; CODE XREF: ___:0040126Cj
					; ___:004019BFj
		push	esi
		mov	esi, ecx
		call	sub_401A23
		test	byte ptr [esp+8], 1
		jz	short loc_416C48
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_416C48:				; CODE XREF: ___:00416C3Dj
		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_416C60	proc near		; CODE XREF: sub_4017A3j
		push	esi
		mov	esi, ecx
		mov	eax, [esi+11h]
		mov	dword ptr [esi], offset	dword_43E05C
		test	eax, eax
		jle	short loc_416C77
		push	eax
		nop
		call	near ptr 71AB9639h


loc_416C77:				; CODE XREF: sub_416C60+Ej
		mov	ecx, esi
		call	sub_402031
		pop	esi
		retn
sub_416C60	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_416C90:				; CODE XREF: ___:00401627j
					; ___:00401C99j
		push	esi
		mov	esi, ecx
		call	sub_4017A3
		test	byte ptr [esp+8], 1
		jz	short loc_416CA8
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_416CA8:				; CODE XREF: ___:00416C9Dj
		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_416CC0	proc near		; CODE XREF: sub_40176Cj
		mov	dword ptr [ecx], offset	dword_43E068
		jmp	sub_402031
sub_416CC0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_416CE0:				; CODE XREF: ___:0040191Aj
					; ___:0040218Aj
		push	esi
		mov	esi, ecx
		call	sub_40176C
		test	byte ptr [esp+8], 1
		jz	short loc_416CF8
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_416CF8:				; CODE XREF: ___:00416CEDj
		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_416D10	proc near		; CODE XREF: sub_40187Aj
		mov	dword ptr [ecx], offset	dword_43E074
		add	ecx, 4
		jmp	sub_401023
sub_416D10	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_416D30:				; CODE XREF: ___:00401E42j
		push	0FFFFFFFFh
		push	offset loc_43A1C1
		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_40209F
; ---------------------------------------------------------------------------
		lea	ecx, [esi+3Eh]
		mov	dword ptr [esp+14h], 0
		call	sub_4015DC
		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_401FFA
; ---------------------------------------------------------------------------
		lea	ecx, [esi+1BBEh]
		mov	byte ptr [esp+14h], 3
		call	sub_4019F1
; ---------------------------------------------------------------------------
		lea	ecx, [esi+1C58h]
		mov	byte ptr [esp+14h], 4
		call	sub_40157D
		lea	ecx, [esi+1D29h]
		mov	byte ptr [esp+14h], 5
		call	sub_401645
		lea	ecx, [esi+1E6Fh]
		mov	byte ptr [esp+14h], 6
		call	sub_401776
		lea	ecx, [esi+8EF5Dh]
		mov	byte ptr [esp+14h], 7
		call	sub_401695
		lea	ecx, [esi+8F247h]
		mov	byte ptr [esp+14h], 8
		call	sub_401820
		lea	ecx, [esi+8F270h]
		mov	byte ptr [esp+14h], 9
		call	sub_4016B3
		lea	ecx, [esi+8F285h]
		mov	byte ptr [esp+14h], 0Ah
		call	sub_401415
		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_401D11
		lea	ecx, [esi+9FA13h]
		call	sub_4012FD
		lea	ecx, [esi+9FA73h]
		mov	byte ptr [esp+14h], 0Eh
		call	sub_401A7D
		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_401CA3
		lea	ecx, [esi+9FB93h]
		mov	byte ptr [esp+14h], 11h
		call	sub_402103
; ---------------------------------------------------------------------------
		mov	byte ptr [esp+14h], 12h
		lea	ecx, [esi+9FBCDh]
		call	sub_401573
		lea	ecx, [esi+9FBFFh]
		mov	byte ptr [esp+14h], 13h
		call	sub_40178F
		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_401424
		lea	ecx, [esi+9FD42h]
		mov	byte ptr [esp+14h], 17h
		call	sub_401424
		lea	ecx, [esi+9FD57h]
		mov	byte ptr [esp+14h], 18h
		call	sub_401424
		lea	ecx, [esi+9FD6Ch]
		mov	byte ptr [esp+14h], 19h
		call	sub_401424
		lea	eax, [esp+7]
		lea	ecx, [esi+9FD83h]
		push	eax
		mov	byte ptr [esp+18h], 1Ah
		call	sub_401AFA
; ---------------------------------------------------------------------------
		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 =======================================

; Attributes: noreturn


sub_416FB0	proc near		; CODE XREF: sub_401262j

var_10		= dword	ptr -10h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_416FB0
		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_401B09
sub_416FB0	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esi+4]
		mov	dword ptr [esp+10h], 0FFFFFFFFh
		call	sub_401023
		mov	ecx, [esp+8]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417020	proc near		; CODE XREF: sub_401929j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417020
		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_40206D
		lea	ecx, [esi+1557h]
		mov	byte ptr [esp+14h+var_4], 3Bh
		call	sub_40206D
		lea	ecx, [esi+130Fh]
		mov	byte ptr [esp+14h+var_4], 3Ah
		call	sub_40206D
		lea	ecx, [esi+10C7h]
		mov	byte ptr [esp+14h+var_4], 39h
		call	sub_40206D
		lea	ecx, [esi+0E7Fh]
		mov	byte ptr [esp+14h+var_4], 38h
		call	sub_40206D
		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_401AD2
		lea	ecx, [esi+0ADFh]
		mov	byte ptr [esp+14h+var_4], 25h
		call	sub_401AD2
		lea	ecx, [esi+0A96h]
		mov	byte ptr [esp+14h+var_4], 24h
		call	sub_401AD2
		lea	ecx, [esi+0A4Dh]
		mov	byte ptr [esp+14h+var_4], 23h
		call	sub_401AD2
		lea	ecx, [esi+0A04h]
		mov	byte ptr [esp+14h+var_4], 22h
		call	sub_401AD2
		lea	ecx, [esi+9BBh]
		mov	byte ptr [esp+14h+var_4], 21h
		call	sub_401AD2
		lea	ecx, [esi+972h]
		mov	byte ptr [esp+14h+var_4], 20h
		call	sub_401AD2
		lea	ecx, [esi+929h]
		mov	byte ptr [esp+14h+var_4], 1Fh
		call	sub_401AD2
		lea	ecx, [esi+8E0h]
		mov	byte ptr [esp+14h+var_4], 1Eh
		call	sub_401AD2
		lea	ecx, [esi+897h]
		mov	byte ptr [esp+14h+var_4], 1Dh
		call	sub_401AD2
		mov	byte ptr [esp+14h+var_4], 1Ch
		lea	ecx, [esi+84Eh]
		call	sub_401AD2
		lea	ecx, [esi+805h]
		mov	byte ptr [esp+14h+var_4], 1Bh
		call	sub_401AD2
		lea	ecx, [esi+7BCh]
		mov	byte ptr [esp+14h+var_4], 1Ah
		call	sub_401AD2
		lea	ecx, [esi+773h]
		mov	byte ptr [esp+14h+var_4], 19h
		call	sub_401AD2
		lea	ecx, [esi+72Ah]
		mov	byte ptr [esp+14h+var_4], 18h
		call	sub_401AD2
		lea	ecx, [esi+6E1h]
		mov	byte ptr [esp+14h+var_4], 17h
		call	sub_401AD2
		lea	ecx, [esi+698h]
		mov	byte ptr [esp+14h+var_4], 16h
		call	sub_401AD2
		lea	ecx, [esi+64Fh]
		mov	byte ptr [esp+14h+var_4], 15h
		call	sub_401AD2
		lea	ecx, [esi+606h]
		mov	byte ptr [esp+14h+var_4], 14h
		call	sub_401AD2
		lea	ecx, [esi+5BDh]
		mov	byte ptr [esp+14h+var_4], 13h
		call	sub_401AD2
		lea	ecx, [esi+574h]
		mov	byte ptr [esp+14h+var_4], 12h
		call	sub_401AD2
		lea	ecx, [esi+52Bh]
		mov	byte ptr [esp+14h+var_4], 11h
		call	sub_401AD2
		lea	ecx, [esi+4E2h]
		mov	byte ptr [esp+14h+var_4], 10h
		call	sub_401AD2
		lea	ecx, [esi+499h]
		mov	byte ptr [esp+14h+var_4], 0Fh
		call	sub_401AD2
		lea	ecx, [esi+450h]
		mov	byte ptr [esp+14h+var_4], 0Eh
		call	sub_401AD2
		lea	ecx, [esi+407h]
		mov	byte ptr [esp+14h+var_4], 0Dh
		call	sub_401AD2
		lea	ecx, [esi+3BEh]
		mov	byte ptr [esp+14h+var_4], 0Ch
		call	sub_401AD2
		lea	ecx, [esi+375h]
		mov	byte ptr [esp+14h+var_4], 0Bh
		call	sub_401AD2
		lea	ecx, [esi+32Ch]
		mov	byte ptr [esp+14h+var_4], 0Ah
		call	sub_401AD2
		lea	ecx, [esi+2E3h]
		mov	byte ptr [esp+14h+var_4], 9
		call	sub_401AD2
		lea	ecx, [esi+29Ah]
		mov	byte ptr [esp+14h+var_4], 8
		call	sub_401AD2
		lea	ecx, [esi+251h]
		mov	byte ptr [esp+14h+var_4], 7
		call	sub_401AD2
		lea	ecx, [esi+208h]
		mov	byte ptr [esp+14h+var_4], 6
		call	sub_401AD2
		lea	ecx, [esi+1BFh]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_401AD2
		lea	ecx, [esi+176h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401AD2
		lea	ecx, [esi+12Dh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401AD2
		lea	ecx, [esi+0E4h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401AD2
		mov	byte ptr [esp+14h+var_4], 1
		lea	ecx, [esi+9Bh]
		call	sub_401AD2
		lea	ecx, [esi+52h]
		mov	byte ptr [esp+14h+var_4], 0
		call	sub_401AD2
		lea	ecx, [esi+9]
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_401AD2
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417020	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 110h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417540	proc near		; CODE XREF: sub_4014F1j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417540
		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_417540	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4175E0	proc near		; CODE XREF: sub_401E83j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4175E0
		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_4175E0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4176B0	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_4176B0
		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_4176B0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417770	proc near		; CODE XREF: sub_402216j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417770
		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_417770	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417830	proc near		; CODE XREF: sub_401EB0j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417830
		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_417830	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4178F0	proc near		; CODE XREF: sub_4018CAj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4178F0
		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_4178F0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417960	proc near		; CODE XREF: sub_4017D0j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417960
		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_417960	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4179D0	proc near		; CODE XREF: sub_401B27j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4179D0
		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_4179D0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417A40	proc near		; CODE XREF: sub_401F28j
		add	ecx, 4
		jmp	sub_401023
sub_417A40	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417A60	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_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+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_417A60	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417AE0	proc near		; CODE XREF: sub_401DEDj
		add	ecx, 4
		jmp	sub_401023
sub_417AE0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417B00	proc near		; CODE XREF: sub_401FF5j
		add	ecx, 4
		jmp	sub_401023
sub_417B00	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417B20	proc near		; CODE XREF: sub_401EE2j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417B20
		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_417B20	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417BC0	proc near		; CODE XREF: sub_40157Dj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417BC0
		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_401424
		lea	ecx, [esi+19h]
		mov	[esp+14h+var_4], 0
		call	sub_401749
		lea	ecx, [esi+47h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401749
		lea	ecx, [esi+75h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401749
		lea	ecx, [esi+0A3h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401749
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E078
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417BC0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417C60	proc near		; CODE XREF: sub_401645j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417C60
		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_401749
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401749
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401749
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401749
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401749
		lea	ecx, [esi+0EAh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401749
		lea	ecx, [esi+118h]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_401749
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E07C
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417C60	endp

; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417D30	proc near		; CODE XREF: sub_401776j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417D30
		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_401749
		lea	ecx, [esi+8D036h]
		mov	[esp+14h+var_4], 0
		call	sub_401749
		lea	ecx, [esi+8D064h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401749
		lea	ecx, [esi+8D092h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401749
		lea	ecx, [esi+8D0C0h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401749
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E080
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417D30	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417DF0	proc near		; CODE XREF: sub_401820j
		push	esi
		mov	esi, ecx
		call	sub_401E6A
		mov	dword ptr [esi], offset	dword_43E050
		mov	eax, esi
		pop	esi
		retn
sub_417DF0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417E20	proc near		; CODE XREF: sub_4016B3j
		push	esi
		mov	esi, ecx
		call	sub_401E6A
		mov	dword ptr [esi], offset	dword_43E05C
		mov	eax, esi
		pop	esi
		retn
sub_417E20	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417E50	proc near		; CODE XREF: sub_401415j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_417E50
		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_401749
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401749
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401749
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401749
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401749
		lea	ecx, [esi+0EAh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401749
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E084
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417E50	endp

; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417F10	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_417F10
		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_401749
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401749
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401749
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401749
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401749
		lea	ecx, [esi+0EAh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401749
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E088
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417F10	endp

; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_417FD0	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_417FD0
		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_401749
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401749
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E08C
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_417FD0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418050	proc near		; CODE XREF: sub_401D11j
		push	esi
		mov	esi, ecx
		call	sub_4011B3
		mov	dword ptr [esi], offset	dword_43E090
		mov	eax, esi
		pop	esi
		retn
sub_418050	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418080	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_418080
		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_401749
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401749
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E094
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_418080	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418100	proc near		; CODE XREF: sub_401A7Dj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_418100
		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_401749
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401749
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E098
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_418100	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418180	proc near		; CODE XREF: sub_401285j
		push	esi
		mov	esi, ecx
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401749
		mov	dword ptr [esi], offset	dword_43E09C
		mov	eax, esi
		pop	esi
		retn
sub_418180	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4181B0	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_4181B0
		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_401749
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401749
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401749
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E0A0
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4181B0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418230	proc near		; CODE XREF: sub_401573j
		push	esi
		mov	esi, ecx
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401749
		mov	dword ptr [esi], offset	dword_43E0A4
		mov	eax, esi
		pop	esi
		retn
sub_418230	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418260	proc near		; CODE XREF: sub_40178Fj
		push	esi
		mov	esi, ecx
		call	sub_4011B3
		lea	ecx, [esi+4]
		call	sub_401749
		mov	dword ptr [esi], offset	dword_43E0A8
		mov	eax, esi
		pop	esi
		retn
sub_418260	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418290	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_418290
		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_401749
		lea	ecx, [esi+32h]
		mov	[esp+14h+var_4], 0
		call	sub_401749
		lea	ecx, [esi+60h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401749
		lea	ecx, [esi+8Eh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401749
		lea	ecx, [esi+0BCh]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401749
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E0AC
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_418290	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418330	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_50F8D0
		push	esi
		mov	esi, ecx
		push	edi
		xor	bl, bl
		mov	byte ptr [esi+9FD2Ch], 1


loc_418348:				; CODE XREF: sub_418330+E4j
		test	bl, bl
		jnz	loc_41841E
		mov	al, [esi+8EF74h]
		test	al, al
		jnz	short loc_41835E
		mov	bl, 1
		jmp	short loc_418372
; ---------------------------------------------------------------------------


loc_41835E:				; CODE XREF: sub_418330+28j
		lea	ecx, [esi+15Fh]
		call	sub_40185C
		test	al, al
		setz	bl
		test	bl, bl
		jz	short loc_418379


loc_418372:				; CODE XREF: sub_418330+2Cj
		mov	byte ptr [esi+9FD2Ch], 0


loc_418379:				; CODE XREF: sub_418330+40j
		lea	ecx, [esp+1Ch+var_C]
		call	sub_402086
		lea	edi, [esi+9FD83h]
		lea	eax, [esp+1Ch+var_4]
		push	eax
		mov	ecx, edi
		call	sub_401F4B
		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_4016F9
		test	al, al
		jz	short loc_4183FE


loc_4183B4:				; CODE XREF: sub_418330+CCj
		lea	ecx, [esp+1Ch+var_C]
		call	sub_402211
		mov	ecx, [eax]
		call	sub_401744
		lea	ecx, [esp+1Ch+var_C]
		call	sub_402211
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_4183DB
		mov	edx, [eax]
		push	1
		mov	ecx, eax
		call	dword ptr [edx]


loc_4183DB:				; CODE XREF: sub_418330+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_4016F9
		test	al, al
		jnz	short loc_4183B4


loc_4183FE:				; CODE XREF: sub_418330+82j
		mov	ecx, edi
		call	sub_4010B9
		push	0FAh
		call	ebp
		mov	al, [esi+9FD2Ch]
		test	al, al
		jnz	loc_418348
		test	bl, bl
		jz	short loc_41842B


loc_41841E:				; CODE XREF: sub_418330+1Aj
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_41842B:				; CODE XREF: sub_418330+ECj
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 0Ch
		retn
sub_418330	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418490	proc near		; CODE XREF: sub_401767j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_418490
		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_4E6ECB
		mov	byte ptr [esi+9FD2Ch], 1
		call	sub_4010B9
		mov	eax, [esp+1C4h+arg_4]
		test	eax, eax
		jz	short loc_4184D0
		push	eax
		jmp	short loc_4184D5
; ---------------------------------------------------------------------------


loc_4184D0:				; CODE XREF: sub_418490+3Bj
		push	offset byte_446F60


loc_4184D5:				; CODE XREF: sub_418490+3Ej
		lea	ecx, [esi+9FD57h]
		call	sub_4015D7
		mov	edi, [esp+1C4h+arg_0]
		test	edi, edi
		jz	short loc_4184EE
		push	edi
		jmp	short loc_4184F3
; ---------------------------------------------------------------------------


loc_4184EE:				; CODE XREF: sub_418490+59j
		push	offset byte_446F60


loc_4184F3:				; CODE XREF: sub_418490+5Cj
		lea	ecx, [esi+9FD6Ch]
		call	sub_4015D7
		push	edi
		lea	ecx, [esi+3Eh]
		call	sub_401384
sub_418490	endp

; ---------------------------------------------------------------------------
		db 8Ah
		dd 0C0844246h, 468B0F74h, 528E8D43h, 50000001h,	0FE945CE8h
		dd 244C8DFFh, 2685128h,	90000002h, 69E120E8h, 8F88E871h
		dd 8E8DFFFEh, 1BBEh, 0FE92B1E8h, 468E8DFFh, 0E800001Bh
		dd 0FFFE94AEh, 15FBE8Dh, 0CF8B0000h, 0FE97DFE8h, 0D01D8BFFh
		dd 680050F8h, 3E8h, 0CF8BD3FFh,	0FE8CB3E8h, 3E868FFh, 0D3FF0000h
		dd 8448468Ah, 8A0A75C0h, 7C786h, 74C08400h, 318E8D0Bh
		dd 0E80009FCh, 0FFFE8E48h, 3E868h, 8DD3FF00h, 3F99Eh, 58BE8D00h
		dd 5300001Ch, 0B2E8CF8Bh, 8BFFFE95h, 8BE7E8CFh,	868AFFFEh
		dd 77Eh, 0F74C084h, 71C968Dh, 52530000h, 5FE8CF8Bh, 8AFFFE91h
		dd 7C786h, 74C08400h, 0F7AE8D1Dh, 8B000007h, 0D5E855CFh
		dd 84FFFE99h, 530B75C0h, 0E8CF8B55h, 0FFFE8EABh, 0AE8D0EEBh
		dd 7F7h, 0E855CF8Bh, 0FFFE9346h, 7C7868Ah, 0C0840000h
		dd 468A1B74h, 75C08448h, 0CF8B5514h, 0FE99C7E8h, 74C084FFh
		dd 0E8006A08h, 7782185Eh, 98C6E890h, 8E8DFFFEh,	168h, 0FE91B3E8h
		dd 448D50FFh, 0E8501424h, 0FFFE99E6h, 5008C483h, 0FD2D8E8Dh
		dd 84C70009h, 1C424h, 0
		dd 99B8E800h, 4C8DFFFEh, 84C71024h, 1C024h, 0FFFFFF00h
		dd 8BBCE8FFh, 9E8DFFFEh, 8EF5Dh, 5DE8CB8Bh, 8DFFFE8Dh
		dd 8F2478Eh, 8D52E800h,	8E8DFFFEh, 1D29h, 0FE96F2E8h, 6F8E8DFFh
		dd 0E800001Eh, 0FFFE9449h, 0F2858E8Dh, 66E80008h, 8DFFFE8Fh
		dd 9FA138Eh, 9046E800h,	8E8DFFFEh, 8F3A2h, 0FE9B26E8h
		dd 738E8DFFh, 0E80009FAh, 0FFFE9783h, 3FE8CB8Bh, 8DFFFE93h
		dd 9FC428Eh, 9889E800h,	0CF8BFFFEh, 0FE896EE8h,	0BF8E8DFFh
		dd 0E80008F4h, 0FFFE9525h, 0FB058E8Dh, 9DE80009h, 8DFFFE94h
		dd 9FAD38Eh, 9802E800h,	8E8DFFFEh, 9FB93h, 0FE925CE8h
		dd 0CD8E8DFFh, 0E80009FBh, 0FFFE9931h, 0FBFF8E8Dh, 0C6E80009h
		dd 8BFFFE94h, 8B41E8CEh, 8E8DFFFEh, 8F270h, 11E8F88Bh
		dd 8BFFFE90h, 900AE8CBh, 0D9E8FFFEh, 90FFFE93h,	69BCE3E8h
		dd 42468A71h, 0B74C084h, 1528E8Dh, 83E80000h, 8BFFFE95h
		dd 1B8248Ch, 0C78B0000h, 5B5D5E5Fh, 0D8964h, 81000000h
		dd 1B4C4h, 8C200h, 3 dup(90909090h), 30h dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------

locret_418840:				; CODE XREF: ___:00402202j
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_418860:				; CODE XREF: ___:00401EC4j
		mov	eax, [esp+0Ch]
		push	0
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401767
; ---------------------------------------------------------------------------
		retn	10h
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418890	proc near		; CODE XREF: sub_401B09j

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_4021BC
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401622
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_40142E
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_4020E5
sub_418890	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418900	proc near		; CODE XREF: sub_401AFAj

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
sub_418900	endp

; ---------------------------------------------------------------------------
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418940	proc near		; CODE XREF: sub_4021DAj

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_401F4B
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_401550
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_40205E
sub_418940	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4189B0	proc near		; CODE XREF: sub_401F4Bj

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		push	eax
		call	sub_4015D2
		mov	ecx, [eax]
		mov	esi, [esp+8+arg_0]
		add	esp, 4
		push	ecx
		mov	ecx, esi
		call	sub_401D84
		mov	eax, esi
		pop	esi
		retn	4
sub_4189B0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4189F0	proc near		; CODE XREF: sub_401311j

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_401D84
		mov	eax, esi
		pop	esi
		retn	4
sub_4189F0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418A20	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_401F4B
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_401550
		pop	esi
		add	esp, 0Ch
		retn
sub_418A20	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418A70	proc near		; CODE XREF: sub_402086j
		push	esi
		mov	esi, ecx
		call	sub_401528
		mov	eax, esi
		pop	esi
		retn
sub_418A70	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418A90	proc near		; CODE XREF: sub_402211j
		mov	eax, [ecx]
		push	eax
		call	sub_401172
		add	esp, 4
		retn
sub_418A90	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418AB0	proc near		; CODE XREF: sub_401361j
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_4015D2
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_418AB0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418AE0	proc near		; CODE XREF: sub_4016F9j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_40221B
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_418AE0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418B10	proc near		; CODE XREF: sub_40142Ej

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_40183E
		test	al, al
		jz	short loc_418B6A


loc_418B28:				; CODE XREF: sub_418B10+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_40183E
		test	al, al
		jnz	short loc_418B28
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_418B6A:				; CODE XREF: sub_418B10+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_418B10	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418BA0	proc near		; CODE XREF: sub_4020E5j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_401D57
sub_418BA0	endp

; ---------------------------------------------------------------------------
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418BC0	proc near		; CODE XREF: sub_401550j

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_4016F9
		test	al, al
		jz	short loc_418C1A


loc_418BD8:				; CODE XREF: sub_418BC0+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_40214E
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_4016F9
		test	al, al
		jnz	short loc_418BD8
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_418C1A:				; CODE XREF: sub_418BC0+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_418BC0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418C50	proc near		; CODE XREF: sub_40139Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	0Ch
		call	sub_401C53
sub_418C50	endp

; ---------------------------------------------------------------------------
		mov	edi, [esp+0Ch]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_418C65
		mov	edi, esi


loc_418C65:				; CODE XREF: ___:00418C61j
		push	esi
		call	sub_4015D2
		mov	[eax], edi
		mov	edi, [esp+14h]
		add	esp, 4
		test	edi, edi
		jnz	short loc_418C7A
		mov	edi, esi


loc_418C7A:				; CODE XREF: ___:00418C76j
		push	esi
		call	sub_401B1D
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418CA0	proc near		; CODE XREF: sub_40205Ej

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_4013F2
sub_418CA0	endp

; ---------------------------------------------------------------------------
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418CC0	proc near		; CODE XREF: sub_4015D2j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_418CC0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418CE0	proc near		; CODE XREF: sub_401172j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_418CE0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418D00	proc near		; CODE XREF: sub_401528j
		mov	eax, ecx
		retn
sub_418D00	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418D20	proc near		; CODE XREF: sub_401D84j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_4020E0
		mov	eax, esi
		pop	esi
		retn	4
sub_418D20	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418D50	proc near		; CODE XREF: sub_40221Bj

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_418D50	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418D80	proc near		; CODE XREF: sub_40123Fj

var_4		= byte ptr -4
arg_4		= byte 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_401C8A
		mov	esi, eax
		push	esi
		call	sub_401A82
		push	esi
		mov	ebx, eax
		call	sub_401C58
		mov	ecx, [eax]
		push	ecx
		call	sub_401A82
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_401C58
		push	esi
		mov	ebx, eax
		call	sub_401A82
		mov	eax, [eax]
		push	eax
		call	sub_401C58
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_401208
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_401762
		push	esi
		mov	ecx, edi
		call	sub_4020E5
sub_418D80	endp

; ---------------------------------------------------------------------------
		mov	eax, [edi+8]
		mov	edx, [esp+18h]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+14h]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418E40	proc near		; CODE XREF: sub_401D57j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4367E2
sub_418E40	endp

; ---------------------------------------------------------------------------
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418E60	proc near		; CODE XREF: sub_40116Dj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_401F0A
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_418E60	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418E90	proc near		; CODE XREF: sub_40214Ej

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_401ECE
		mov	esi, eax
		push	esi
		call	sub_4015D2
		push	esi
		mov	ebx, eax
		call	sub_401B1D
		mov	ecx, [eax]
		push	ecx
		call	sub_4015D2
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_401B1D
		push	esi
		mov	ebx, eax
		call	sub_4015D2
		mov	eax, [eax]
		push	eax
		call	sub_401B1D
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_401172
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_4018C5
		push	esi
		mov	ecx, edi
		call	sub_40205E
sub_418E90	endp

; ---------------------------------------------------------------------------
		mov	eax, [edi+8]
		mov	edx, [esp+18h]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+14h]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418F50	proc near		; CODE XREF: sub_401B1Dj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_418F50	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418F70	proc near		; CODE XREF: sub_401C53j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D16
sub_418F70	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_418FA0	proc near		; CODE XREF: sub_4013F2j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4367E2
sub_418FA0	endp

; ---------------------------------------------------------------------------
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418FC0	proc near		; CODE XREF: sub_4020E0j

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		retn	4
sub_418FC0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_418FE0	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_418FE0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419010	proc near		; CODE XREF: sub_401762j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_8
		pop	ecx
		retn	4
sub_419010	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419030	proc near		; CODE XREF: sub_4018C5j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	j_nullsub_4
		pop	ecx
		retn	4
sub_419030	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419050	proc near		; CODE XREF: sub_401ECEj
		mov	eax, [ecx]
		retn
sub_419050	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 =======================================

; Attributes: noreturn


sub_4190B0	proc near		; CODE XREF: sub_402103j

var_14		= dword	ptr -14h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4190B0
		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_401749
		push	9
		mov	[esp+1Ch+var_4], 0
		mov	dword ptr [esi], offset	dword_43E074
		call	sub_4367FA
sub_4190B0	endp

; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+8], eax
		test	eax, eax
		mov	byte ptr [esp+14h], 1
		jz	short loc_41911D
		mov	ecx, eax
		call	sub_401F0F
; ---------------------------------------------------------------------------
		mov	[esi+32h], eax
		mov	eax, esi
		pop	esi
		mov	ecx, [esp+8]
		mov	large fs:0, ecx
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------


loc_41911D:				; CODE XREF: ___:004190FFj
		mov	ecx, [esp+0Ch]
		xor	eax, eax
		mov	[esi+32h], eax
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_419170	proc near		; CODE XREF: sub_401F0Fj
		push	0FFFFFFFFh
		push	offset SEH_419170
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		push	14h
		call	sub_4367FA
sub_419170	endp

; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+4], eax
		test	eax, eax
		mov	dword ptr [esp+10h], 0
		jz	short loc_4191BE
		mov	ecx, eax
		call	sub_4015B9
		mov	[esi], eax
		mov	eax, esi
		pop	esi
		mov	ecx, [esp+4]
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_4191BE:				; CODE XREF: ___:004191A1j
		mov	ecx, [esp+8]
		xor	eax, eax
		mov	[esi], eax
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419200	proc near		; CODE XREF: sub_4015B9j
		mov	eax, ecx
		retn
sub_419200	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_419220	proc near		; CODE XREF: sub_401965j

var_24		= byte ptr -24h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_419220
		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_4019B5
		add	esp, 24h
		push	esi
		mov	ecx, eax
		mov	[esp+2Ch+var_4], 0
		call	sub_401681
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
sub_419220	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+24h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+1Ch]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 24h
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4192C0:				; CODE XREF: ___:0040111Dj
		push	0FFFFFFFFh
		push	offset loc_43ACA6
		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_4017E4
		mov	esi, [esp+2B0h]
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_419669
		push	ebp
		push	edi
		push	offset dword_443600
		lea	eax, [esp+7Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		call	sub_401681
		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_4017E4
		push	eax
		lea	ecx, [esp+44h]
		call	sub_401861
		xor	ebp, ebp
		push	offset dword_443D84
		lea	ecx, [esp+44h]
		mov	[esp+2B4h], ebp
		mov	[esp+18h], ebp
		call	sub_4013E3
		test	eax, eax
		jz	short loc_41936F
		mov	dword ptr [esp+14h], 2
		jmp	short loc_419389
; ---------------------------------------------------------------------------


loc_41936F:				; CODE XREF: ___:00419363j
		push	offset dword_443D80
		lea	ecx, [esp+44h]
		call	sub_4013E3
		test	eax, eax
		jz	short loc_419389
		mov	dword ptr [esp+14h], 1


loc_419389:				; CODE XREF: ___:0041936Dj
					; ___:0041937Fj
		mov	ecx, [ebx+32h]
		mov	edi, offset dword_443D74
		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_419418
		mov	esi, dword_50FA9C
		add	eax, 2
		push	offset dword_443D74
		push	eax
		call	esi
		add	esp, 8
		test	eax, eax
		jz	short loc_419418
		mov	ecx, [ebx+32h]
		push	offset dword_443D70
		mov	edx, [ecx]
		add	edx, 2
		push	edx
		call	esi
		add	esp, 8
		test	eax, eax
		jnz	loc_41964F


loc_419418:				; CODE XREF: ___:004193E3j
					; ___:004193FBj
		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	sub_436C60
; ---------------------------------------------------------------------------
		mov	eax, [esi]
		mov	[esp+1Ch], ebp
		cmp	eax, ebp
		jle	loc_419645
		lea	ebp, [esi+14h]


loc_419454:				; CODE XREF: ___:0041963Fj
		cmp	dword ptr [ebp-10h], 2
		jnz	short loc_419468
		mov	ecx, [ebx+32h]
		mov	edx, [ecx]
		cmp	byte ptr [edx],	0
		jz	loc_41962F


loc_419468:				; CODE XREF: ___:00419458j
		mov	ax, [ebp-8]
		mov	esi, dword_50FC20
		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_401474
		mov	edx, [ebp-4]
		push	0
		lea	ecx, [esp+1A0h]
		push	7Fh
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_401474
		mov	eax, [ebp-10h]
		sub	eax, 2
		jz	short loc_4194CC
		sub	eax, 3
		jnz	short loc_4194F2
		lea	edx, [esp+58h]
		mov	edi, offset dword_443D60
		jmp	short loc_4194D5
; ---------------------------------------------------------------------------


loc_4194CC:				; CODE XREF: ___:004194BAj
		lea	edx, [esp+58h]
		mov	edi, offset dword_443D54


loc_4194D5:				; CODE XREF: ___:004194CAj
		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_4194F2:				; CODE XREF: ___:004194BFj
		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_419518
		xor	ebx, ebx


loc_419518:				; CODE XREF: ___:00419514j
		mov	esi, [esp+24h]
		lea	ecx, [esp+11Ch]
		and	esi, 0FFFFh
		lea	edx, [esp+21Ch]
		push	esi
		push	ecx
		push	offset dword_443D4C
		push	8Bh
		push	edx
		call	near ptr 77C3FA76h
		nop
		mov	edi, ebx
		add	esp, 14h
		and	edi, 0FFFFh
		lea	eax, [esp+19Ch]
		push	edi
		push	eax
		push	offset dword_443D4C
		lea	ecx, [esp+9Ch]
		push	8Bh
		push	ecx
		nop
		call	near ptr 77C3FA76h
		add	esp, 14h
		lea	ecx, [esp+28h]
		call	sub_401424
		mov	eax, [esp+14h]
		mov	byte ptr [esp+2B0h], 1
		test	bx, bx
		jnz	short loc_4195B1
		cmp	eax, 1
		jz	loc_419616
		mov	edx, [esp+10h]
		mov	eax, [edx+36h]
		test	eax, eax
		jz	short loc_4195A4
		cmp	eax, esi
		jnz	short loc_419616


loc_4195A4:				; CODE XREF: ___:0041959Ej
		lea	eax, [esp+58h]
		push	esi
		push	eax
		push	offset dword_443D44
		jmp	short loc_4195D7
; ---------------------------------------------------------------------------


loc_4195B1:				; CODE XREF: ___:0041958Aj
		cmp	eax, 2
		jz	short loc_419616
		mov	ecx, [esp+10h]
		mov	eax, [ecx+36h]
		test	eax, eax
		jz	short loc_4195C5
		cmp	eax, edi
		jnz	short loc_419616


loc_4195C5:				; CODE XREF: ___:004195BFj
		lea	edx, [esp+90h]
		lea	eax, [esp+58h]
		push	edx
		push	eax
		push	offset dword_443D3C


loc_4195D7:				; CODE XREF: ___:004195AFj
		lea	ecx, [esp+34h]
		push	ecx
		call	sub_40102D
		mov	esi, [esp+2C8h]
		add	esp, 10h
		lea	ecx, [esi+69h]
		call	sub_4014D3
		push	eax
		lea	ecx, [esp+2Ch]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D60A5
		call	sub_401118


loc_419616:				; CODE XREF: ___:0041958Fj
					; ___:004195A2j ...
		lea	ecx, [esp+28h]
		mov	byte ptr [esp+2B0h], 0
		call	sub_401226
		mov	esi, [esp+18h]
		mov	ebx, [esp+10h]


loc_41962F:				; CODE XREF: ___:00419462j
		mov	eax, [esp+1Ch]
		mov	ecx, [esi]
		inc	eax
		add	ebp, 14h
		cmp	eax, ecx
		mov	[esp+1Ch], eax
		jl	loc_419454


loc_419645:				; CODE XREF: ___:0041944Bj
		push	esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4


loc_41964F:				; CODE XREF: ___:00419412j
		lea	ecx, [esp+40h]
		mov	dword ptr [esp+2B0h], 0FFFFFFFFh
		call	sub_401226
		pop	edi
		mov	al, 1
		pop	ebp
		jmp	short loc_41966B
; ---------------------------------------------------------------------------


loc_419669:				; CODE XREF: ___:004192FDj
		mov	al, 1


loc_41966B:				; CODE XREF: ___:00419667j
		mov	ecx, [esp+2A0h]
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 2A4h
		retn	4
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 100h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419790	proc near		; CODE XREF: sub_401474j

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_443CB4
		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_419850
		mov	al, [esp+2Ch+arg_C]
		test	al, al
		jnz	short loc_41981E
		mov	eax, [esp+30h]
		test	eax, eax
		jz	short loc_41981E
		push	2
		lea	edx, [esp+30h+arg_0]
		push	4
		push	edx
		nop
		call	near ptr 71ABE479h
		test	eax, eax
		jz	short loc_419850
		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_41981E:				; CODE XREF: sub_419790+5Aj
					; sub_419790+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
		nop
		call	near ptr 71AB50C8h
		test	eax, eax
		pop	edi
		jnz	short loc_419850
		lea	edx, [esp+2Ch+var_20]
		push	ebx
		push	edx
		push	ebp
		nop
		call	near ptr 77C47A90h
		add	esp, 0Ch


loc_419850:				; CODE XREF: sub_419790+52j
					; sub_419790+75j ...
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 20h
		retn	10h
sub_419790	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4198A0	proc near		; CODE XREF: sub_401EECj
		nop
		call	near ptr 27E0796h
		push	eax
		nop
		call	near ptr 77C371BCh
		pop	ecx
		retn
sub_4198A0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4198C0	proc near		; CODE XREF: sub_4021A3j

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ecx
		push	esi
		nop
		call	near ptr 77C371D3h
		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_43E0B0
		call	sub_4368EA
sub_4198C0	endp

; ---------------------------------------------------------------------------
		sub	esi, eax
		mov	eax, esi
		pop	esi
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419910:				; CODE XREF: ___:00401C85j
		call	near ptr 77C371D3h
		nop
		cdq
		idiv	dword ptr [esp+4]
		mov	eax, edx
		retn
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------

locret_419930:				; CODE XREF: ___:0040151Ej
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419950:				; CODE XREF: ___:00401FC3j
		xor	al, al
		retn	4
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419970	proc near		; CODE XREF: sub_401523j

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_4D60A5
		call	sub_401118
		retn
sub_419970	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4199B0:				; CODE XREF: ___:00401505j
		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_4199E3
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		cmp	eax, esi
		mov	[esp+10h], eax
		jz	short loc_4199E3
		mov	[esp+18h], eax


loc_4199E3:				; CODE XREF: ___:004199CBj
					; ___:004199DDj
		mov	edi, [esp+28h]
		mov	ebx, [esp+24h]
		mov	ebp, [esp+20h]
		mov	[esp+14h], esi
		mov	esi, offset dword_506E5C


loc_4199F8:				; CODE XREF: ___:00419A49j
		mov	ecx, [esp+14h]
		mov	eax, [esp+18h]
		cmp	ecx, eax
		jge	short loc_419A4B
		cmp	byte ptr [esi],	0
		jz	short loc_419A34
		mov	eax, [esp+30h]
		test	eax, eax
		jz	short loc_419A28
		mov	ecx, [esp+10h]
		test	ecx, ecx
		jnz	short loc_419A28
		push	eax
		push	esi
		call	near ptr 77C47C60h
		nop
		add	esp, 8
		test	eax, eax
		jz	short loc_419A34


loc_419A28:				; CODE XREF: ___:00419A0Fj
					; ___:00419A17j
		push	edi
		push	esi
		push	ebx
		push	ebp
		call	sub_401523
		add	esp, 10h


loc_419A34:				; CODE XREF: ___:00419A07j
					; ___:00419A26j
		mov	edx, [esp+14h]
		add	esi, 80h
		inc	edx
		cmp	esi, offset dword_50AE5C
		mov	[esp+14h], edx
		jl	short loc_4199F8


loc_419A4B:				; CODE XREF: ___:00419A02j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419A90:				; CODE XREF: ___:00402266j
		push	ebx
		mov	ebx, dword_50FAF8
		push	esi
		push	edi
		mov	edi, [esp+10h]
		mov	esi, offset dword_506E5C


loc_419AA2:				; CODE XREF: ___:00419ABEj
		cmp	byte ptr [esi],	0
		jz	short loc_419AB2
		push	edi
		push	esi
		call	ebx
		add	esp, 8
		test	eax, eax
		jnz	short loc_419AC6


loc_419AB2:				; CODE XREF: ___:00419AA5j
		add	esi, 80h
		cmp	esi, offset dword_50AE5C
		jl	short loc_419AA2
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_419AC6:				; CODE XREF: ___:00419AB0j
		pop	edi
		pop	esi
		mov	eax, 1
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419AE0	proc near		; CODE XREF: sub_4010D2j

var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		sub	esp, 10h
		lea	eax, [esp+10h+var_10]
		push	esi
		push	edi
		push	eax
		call	near ptr 27B0000h
		nop
		mov	edi, dword_50FAFC
		mov	esi, offset dword_50AE5C


loc_419AFB:				; CODE XREF: sub_419AE0+3Bj
		cmp	byte ptr [esi],	0
		jz	short loc_419B0F
		push	7Fh
		lea	ecx, [esi+80h]
		push	esi
		push	ecx
		call	edi
		add	esp, 0Ch


loc_419B0F:				; CODE XREF: sub_419AE0+1Ej
		sub	esi, 80h
		cmp	esi, offset dword_506E5C
		jge	short loc_419AFB
		mov	edx, [esp+18h+arg_0]
		mov	eax, [esp+18h+var_4]
		mov	ecx, [esp+12h]
		push	edx
		mov	edx, [esp+1Ch+var_8]
		and	eax, 0FFFFh
		and	ecx, 0FFFFh
		push	eax
		mov	eax, [esp+20h+var_10]
		and	edx, 0FFFFh
		push	ecx
		mov	ecx, [esp+1Ah]
		push	edx
		mov	edx, [esp+28h+var_10+2]
		and	eax, 0FFFFh
		and	ecx, 0FFFFh
		push	eax
		and	edx, 0FFFFh
		push	ecx
		push	edx
		push	offset dword_443D88
		push	80h
		push	offset dword_506E5C
		call	near ptr 77C3FA76h
		nop
		add	esp, 28h
		pop	edi
		pop	esi
		add	esp, 10h
		retn
sub_419AE0	endp

; ---------------------------------------------------------------------------
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419BB0:				; 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_50FAFC
		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_419C21
		mov	[edx+180h], al


loc_419C21:				; CODE XREF: ___:00419C19j
		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_419D32


loc_419C3F:				; CODE XREF: ___:00419D25j
		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_419D00
		lea	eax, [ebx-1]
		test	eax, eax
		jz	short loc_419D00
		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_419CDD
		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_443DB8
		push	ecx
		nop
		call	near ptr byte_5EA1BD
		add	esp, 14h
		jmp	short loc_419D00
; ---------------------------------------------------------------------------


loc_419CDD:				; CODE XREF: ___:00419CAEj
		mov	edx, [esp+61Ch]
		lea	eax, [esp+210h]
		push	edx
		push	eax
		lea	ecx, [esp+18h]
		push	offset dword_443DB0
		push	ecx
		nop
		call	near ptr byte_5EA1BD
		add	esp, 10h


loc_419D00:				; CODE XREF: ___:00419C8Aj
					; ___:00419C91j ...
		mov	edx, [esp+61Ch]
		mov	esi, dword_50FAF8
		push	edx
		push	ebx
		call	esi
		add	esp, 8
		test	eax, eax
		jnz	short loc_419D2B
		lea	eax, [esp+10h]
		push	ebx
		push	eax
		call	esi
		add	esp, 8
		test	eax, eax
		jnz	loc_419C3F


loc_419D2B:				; CODE XREF: ___:00419D16j
		mov	esi, [esp+614h]


loc_419D32:				; CODE XREF: ___:00419C39j
		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_419DD0:				; CODE XREF: ___:004018CFj
		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_419DEE
		or	eax, eax
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_419DEE:				; CODE XREF: ___:00419DE5j
		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
		call	near ptr 71AB3E00h
		nop
		test	eax, eax
		jz	short loc_419E39
		or	eax, 0FFFFFFFFh
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_419E39:				; CODE XREF: ___:00419E2Fj
		push	7FFFFFFFh
		push	esi
		nop
		call	near ptr 71AB88D3h
		test	eax, eax
		jz	short loc_419E51
		or	eax, 0FFFFFFFFh
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_419E51:				; CODE XREF: ___:00419E47j
		mov	eax, esi
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_419E90:				; CODE XREF: ___:00401E65j
		push	edi
		xor	edi, edi
		mov	eax, offset byte_4DE2D5


loc_419E98:				; CODE XREF: ___:00419EA8j
		cmp	dword ptr [eax], 0
		jz	short loc_419EAA
		add	eax, 316h
		inc	edi
		cmp	eax, offset byte_4E5E45
		jle	short loc_419E98


loc_419EAA:				; CODE XREF: ___:00419E9Bj
		cmp	edi, 13h
		jle	short loc_419EB4
		or	eax, 0FFFFFFFFh
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_419EB4:				; CODE XREF: ___:00419EADj
		lea	eax, [edi+edi*4]
		push	ebx
		shl	eax, 4
		sub	eax, edi
		mov	ebx, dword_50FBF0
		push	esi
		lea	eax, [eax+eax*4]
		lea	esi, ds:4DE1DBh[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
		add	esp, 8
		mov	[esi+106h], edx
		mov	[esi+10Ah], eax
		add	esi, 10Eh
		push	ecx
		push	esi
		call	ebx
		add	esp, 8
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_419F50	proc near		; CODE XREF: sub_4013E8j

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

		push	edi
		xor	edi, edi
		mov	eax, offset dword_4D6765


loc_419F58:				; CODE XREF: sub_419F50+18j
		cmp	dword ptr [eax], 0
		jz	short loc_419F6A
		add	eax, 316h
		inc	edi
		cmp	eax, offset byte_4DE2D5
		jle	short loc_419F58


loc_419F6A:				; CODE XREF: sub_419F50+Bj
		cmp	edi, 13h
		jle	short loc_419F74
		or	eax, 0FFFFFFFFh
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_419F74:				; CODE XREF: sub_419F50+1Dj
		lea	eax, [edi+edi*4]
		push	ebx
		shl	eax, 4
		sub	eax, edi
		mov	ebx, dword_50FBF0
		push	esi
		lea	eax, [eax+eax*4]
		lea	esi, ds:4D666Bh[eax*2]
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		push	esi
		call	ebx
		mov	ecx, [esp+14h+arg_C]
		mov	edx, [esp+14h+arg_4]
		mov	eax, [esp+14h+arg_8]
		mov	[esi+0FAh], ecx
		mov	ecx, [esp+14h+arg_10]
		mov	[esi+0FEh], edi
		add	esp, 8
		mov	[esi+106h], edx
		mov	[esi+10Ah], eax
		add	esi, 10Eh
		push	ecx
		push	esi
		call	ebx
		add	esp, 8
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_419F50	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A010	proc near		; CODE XREF: sub_401C35j

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_43E0BC
		mov	eax, dword_50BB28
		test	eax, eax
		jnz	short loc_41A048
		mov	eax, dword_50BB28
		inc	eax
		mov	dword_50BB28, eax
		lea	ecx, [esp+19Ch+var_190]
		push	ecx
		push	202h
		nop
		call	near ptr 71AB664Dh
		jmp	short loc_41A055
; ---------------------------------------------------------------------------


loc_41A048:				; CODE XREF: sub_41A010+19j
		mov	edx, dword_50BB28
		inc	edx
		mov	dword_50BB28, edx


loc_41A055:				; CODE XREF: sub_41A010+36j
		mov	al, [esp+19Ch+arg_0]
		or	ecx, 0FFFFFFFFh
		mov	[ebp+80Ah], al
		mov	edi, offset byte_446F60
		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_41A010	endp

; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41A0E0:				; CODE XREF: ___:004018D4j
					; ___:00401AF5j
		push	esi
		mov	esi, ecx
		call	sub_401FC8
		test	byte ptr [esp+8], 1
		jz	short loc_41A0F8
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_41A0F8:				; CODE XREF: ___:0041A0EDj
		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_41A110	proc near		; CODE XREF: sub_401FC8j
		mov	al, [ecx+80Ah]
		mov	dword ptr [ecx], offset	dword_43E0BC
		test	al, al
		jnz	short loc_41A125
		call	sub_4014DD


loc_41A125:				; CODE XREF: sub_41A110+Ej
		mov	eax, 1
		mov	ecx, dword_50BB28
		cmp	ecx, eax
		jle	short loc_41A140
		mov	eax, dword_50BB28
		dec	eax
		mov	dword_50BB28, eax

locret_41A13F:				; CODE XREF: sub_41A110:loc_41A140j
		retn
; ---------------------------------------------------------------------------


loc_41A140:				; CODE XREF: sub_41A110+22j
		jnz	short locret_41A13F
		mov	ecx, dword_50BB28
		dec	ecx
		mov	dword_50BB28, ecx
		nop
		jmp	near ptr 71AB4428h
sub_41A110	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41A180:				; CODE XREF: ___:004015A0j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_43ACCB
		push	eax
		mov	large fs:0, esp
		sub	esp, 814h
		push	esi
		mov	esi, ecx
		call	sub_40195B
		test	al, al
		jz	loc_41A231
		mov	al, [esi+80Bh]
		test	al, al
		jz	short loc_41A1B9
		mov	al, 1
		jmp	short loc_41A231
; ---------------------------------------------------------------------------


loc_41A1B9:				; CODE XREF: ___:0041A1B3j
		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_401636
		push	eax
		mov	ecx, esi
		call	sub_4020C7
		lea	ecx, [esp+0Ch]
		mov	bl, al
		mov	dword ptr [esp+828h], 0FFFFFFFFh
		call	sub_40186B
		mov	al, bl
		pop	edi
		pop	ebx


loc_41A231:				; CODE XREF: ___:0041A1A5j
					; ___:0041A1B7j
		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_41A290	proc near		; CODE XREF: sub_40195Bj
		mov	al, byte_443DC0
		retn
sub_41A290	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A2B0	proc near		; CODE XREF: sub_4020C7j

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_40195B
		test	al, al
		jnz	short loc_41A2D0
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 11Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_41A2D0:				; CODE XREF: sub_41A2B0+12j
		mov	al, [esi+80Bh]
		test	al, al
		jnz	loc_41A471
		push	6
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		cmp	eax, 0FFFFFFFFh
		mov	[esi+806h], eax
		jnz	short loc_41A30A
		mov	ecx, esi
		call	sub_4014DD
		pop	edi
		pop	esi
		xor	al, al
		pop	ebp
		add	esp, 11Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_41A30A:				; CODE XREF: sub_41A2B0+43j
		mov	al, [esp+128h+arg_C]
		test	al, al
		jnz	short loc_41A319
		push	1
		jmp	short loc_41A31B
; ---------------------------------------------------------------------------


loc_41A319:				; CODE XREF: sub_41A2B0+63j
		push	0


loc_41A31B:				; CODE XREF: sub_41A2B0+67j
		mov	ecx, esi
		call	sub_4018BB
		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
		call	near ptr 71AB2B66h
		nop
		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
		call	near ptr 71AB406Ah
		nop
		mov	ebp, dword_50FC44
		test	eax, eax
		jge	short loc_41A3BC
		call	ebp
		cmp	eax, 2733h
		jz	short loc_41A3AD
		call	ebp
		cmp	eax, 0Bh
		jz	short loc_41A3AD
		call	ebp
		cmp	eax, 2733h
		jz	short loc_41A3AD
		mov	byte ptr [esi+80Bh], 0
		pop	edi
		pop	esi
		xor	al, al
		pop	ebp
		add	esp, 11Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_41A3AD:				; CODE XREF: sub_41A2B0+D6j
					; sub_41A2B0+DDj ...
		mov	al, byte ptr [esp+128h+arg_8]
		test	al, al
		jnz	loc_41A46A


loc_41A3BC:				; CODE XREF: sub_41A2B0+CDj
		mov	eax, [esi+806h]
		xor	ecx, ecx
		lea	edx, [esp+128h+var_11C]
		mov	edi, dword_50FC80
		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_41A430


loc_41A3FB:				; CODE XREF: sub_41A2B0+17Ej
		call	ebp
		call	ebp
		cmp	eax, 4
		jnz	short loc_41A445
		mov	eax, [esp+128h+var_11C]
		test	eax, eax
		jnz	short loc_41A414
		mov	eax, [esp+128h+var_118]
		test	eax, eax
		jz	short loc_41A445


loc_41A414:				; CODE XREF: sub_41A2B0+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_41A3FB


loc_41A430:				; CODE XREF: sub_41A2B0+149j
		mov	al, [esp+128h+arg_C]
		test	al, al
		jnz	short loc_41A461
		mov	edx, [esp+128h+arg_8]
		push	edx
		jmp	short loc_41A463
; ---------------------------------------------------------------------------


loc_41A445:				; CODE XREF: sub_41A2B0+152j
					; sub_41A2B0+162j
		mov	ecx, esi
		call	sub_4014DD
		mov	byte ptr [esi+80Bh], 0
		pop	edi
		pop	esi
		xor	al, al
		pop	ebp
		add	esp, 11Ch
		retn	10h
; ---------------------------------------------------------------------------


loc_41A461:				; CODE XREF: sub_41A2B0+189j
		push	0


loc_41A463:				; CODE XREF: sub_41A2B0+193j
		mov	ecx, esi
		call	sub_4018BB


loc_41A46A:				; CODE XREF: sub_41A2B0+106j
		mov	byte ptr [esi+80Bh], 1


loc_41A471:				; CODE XREF: sub_41A2B0+28j
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebp
		add	esp, 11Ch
		retn	10h
sub_41A2B0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 80h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A500	proc near		; CODE XREF: sub_4014DDj
		push	esi
		mov	esi, ecx
		mov	eax, [esi+806h]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41A51A
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41A51A
		push	eax
		nop
		call	near ptr 71AB9639h


loc_41A51A:				; CODE XREF: sub_41A500+Cj
					; sub_41A500+11j
		mov	ecx, esi
		call	sub_401375
		mov	byte ptr [esi+80Bh], 0
		pop	esi
		retn
sub_41A500	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A540	proc near		; CODE XREF: sub_401375j
		push	ebp
		mov	edx, ecx
		push	esi
		push	edi
		or	ecx, 0FFFFFFFFh
		mov	edi, offset byte_446F60
		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_41A540	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A5B0	proc near		; CODE XREF: sub_401488j

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_40195B
		test	al, al
		jnz	short loc_41A5C6
		pop	esi
		add	esp, 10h
		retn	4
; ---------------------------------------------------------------------------


loc_41A5C6:				; CODE XREF: sub_41A5B0+Dj
		mov	al, [esi+80Bh]
		test	al, al
		jnz	loc_41A67F
		push	6
		push	1
		push	2
		call	near ptr 71AB3B91h
		nop
		cmp	eax, 0FFFFFFFFh
		mov	[esi+806h], eax
		jnz	short loc_41A5FB
		mov	ecx, esi
		call	sub_4014DD
		xor	al, al
		pop	esi
		add	esp, 10h
		retn	4
; ---------------------------------------------------------------------------


loc_41A5FB:				; CODE XREF: sub_41A5B0+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_41A654
		mov	ecx, esi
		call	sub_4014DD
		xor	al, al
		pop	esi
		add	esp, 10h
		retn	4
; ---------------------------------------------------------------------------


loc_41A654:				; CODE XREF: sub_41A5B0+92j
		mov	ecx, [esi+806h]
		push	32h
		push	ecx
		call	near ptr 71AB88D3h
		nop
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41A678
		mov	ecx, esi
		call	sub_4014DD
		xor	al, al
		pop	esi
		add	esp, 10h
		retn	4
; ---------------------------------------------------------------------------


loc_41A678:				; CODE XREF: sub_41A5B0+B6j
		mov	byte ptr [esi+80Bh], 1


loc_41A67F:				; CODE XREF: sub_41A5B0+1Ej
		mov	al, 1
		pop	esi
		add	esp, 10h
		retn	4
sub_41A5B0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A6D0	proc near		; CODE XREF: sub_401B81j

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_40195B
		test	al, al
		jnz	short loc_41A6EE
		pop	edi
		pop	esi
		add	esp, 120h
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41A6EE:				; CODE XREF: sub_41A6D0+11j
		mov	al, [esi+80Bh]
		test	al, al
		jnz	short loc_41A705
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 120h
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41A705:				; CODE XREF: sub_41A6D0+26j
		mov	al, [esi+80Ch]
		test	al, al
		jnz	short loc_41A781
		call	sub_40195B
		test	al, al
		jz	short loc_41A774
		mov	edi, dword_50FC80


loc_41A71E:				; CODE XREF: sub_41A6D0+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_41A76B
		mov	ecx, [esi+806h]
		lea	eax, [esp+128h+var_104]
		push	eax
		push	ecx
		call	sub_436F60
; ---------------------------------------------------------------------------
		test	eax, eax
		jnz	short loc_41A781


loc_41A76B:				; CODE XREF: sub_41A6D0+84j
		call	sub_40195B
		test	al, al
		jnz	short loc_41A71E


loc_41A774:				; CODE XREF: sub_41A6D0+46j
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 120h
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41A781:				; CODE XREF: sub_41A6D0+3Dj
					; sub_41A6D0+99j
		mov	eax, [esp+128h+arg_4]
		mov	[esp+128h+var_120], 0FFFFFFFFh
		test	eax, eax
		jz	short loc_41A7A4
		lea	edx, [esp+128h+var_11C]
		mov	[esp+128h+var_11C], 10h
		push	edx
		push	eax
		jmp	short loc_41A7B6
; ---------------------------------------------------------------------------


loc_41A7A4:				; CODE XREF: sub_41A6D0+C2j
		lea	ecx, [esp+128h+var_11C]
		lea	edx, [esp+128h+var_114]
		push	ecx
		mov	[esp+12Ch+var_11C], 10h
		push	edx


loc_41A7B6:				; CODE XREF: sub_41A6D0+D2j
		mov	eax, [esi+806h]
		push	eax
		call	near ptr 71AC1028h
		nop
		cmp	eax, 0FFFFFFFFh
		mov	[esp+128h+var_120], eax
		jnz	short loc_41A7D9
		pop	edi
		xor	al, al
		pop	esi
		add	esp, 120h
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41A7D9:				; CODE XREF: sub_41A6D0+FAj
		mov	esi, [esp+128h+arg_0]
		lea	ecx, [esp+128h+var_120]
		push	ecx
		mov	ecx, esi
		call	sub_4020EA
		mov	dl, [esp+128h+arg_8]
		pop	edi
		mov	[esi+80Dh], dl
		mov	al, 1
		pop	esi
		add	esp, 120h
		retn	0Ch
sub_41A6D0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A860	proc near		; CODE XREF: sub_4020EAj

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_41A860	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A890	proc near		; CODE XREF: sub_401960j

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_401B3B
		retn	0Ch
sub_41A890	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41A8C0	proc near		; CODE XREF: sub_401B3Bj

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_41AA24
		mov	al, [esi+80Bh]
		test	al, al
		jz	loc_41AA24
		mov	edi, dword_50F8A4
		call	edi
		mov	ebp, eax
		mov	al, [esi+80Dh]
		test	al, al
		jnz	loc_41A9BC
		mov	ebx, [esp+220h+arg_8]
		test	ebx, ebx
		jz	loc_41A9BC
		call	sub_40195B
		test	al, al
		jz	loc_41A9BC


loc_41A91B:				; CODE XREF: sub_41A8C0+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_41AA24
		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
		call	near ptr 71AB2DC0h
		nop
		test	eax, eax
		jz	short loc_41A9AF
		mov	edx, [esi+806h]
		lea	ecx, [esp+220h+var_208]
		push	ecx
		push	edx
		call	sub_436F60
; ---------------------------------------------------------------------------
		test	eax, eax
		jnz	loc_41AA24
		mov	ecx, [esi+806h]
		lea	eax, [esp+220h+var_104]
		push	eax
		push	ecx
		call	sub_436F60
; ---------------------------------------------------------------------------
		test	eax, eax
		jnz	short loc_41A9BC


loc_41A9AF:				; CODE XREF: sub_41A8C0+BCj
		call	sub_40195B
		test	al, al
		jnz	loc_41A91B


loc_41A9BC:				; CODE XREF: sub_41A8C0+39j
					; sub_41A8C0+48j ...
		call	sub_40195B
		test	al, al
		jz	short loc_41AA24
		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_41A9F1
		mov	[ecx], eax


loc_41A9F1:				; CODE XREF: sub_41A8C0+12Dj
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41AA09
		test	eax, eax
		jz	short loc_41AA09
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 210h
		retn	10h
; ---------------------------------------------------------------------------


loc_41AA09:				; CODE XREF: sub_41A8C0+134j
					; sub_41A8C0+138j
		nop
		call	near ptr 71AB94DCh
		pop	edi
		cmp	eax, 2733h
		pop	esi
		pop	ebp
		setz	al
		pop	ebx
		add	esp, 210h
		retn	10h
; ---------------------------------------------------------------------------


loc_41AA24:				; CODE XREF: sub_41A8C0+13j
					; sub_41A8C0+21j ...
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 210h
		retn	10h
sub_41A8C0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 60h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41AAA0:				; CODE XREF: ___:00401618j
		mov	eax, [ecx+806h]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41AAF1
		mov	dl, [ecx+80Bh]
		test	dl, dl
		jz	short loc_41AAF1
		mov	ecx, [esp+8]
		mov	edx, [esp+4]
		push	0
		push	ecx
		push	edx
		push	eax
		nop
		call	near ptr 71AB428Ah
		mov	ecx, [esp+0Ch]
		test	ecx, ecx
		jz	short loc_41AAD2
		mov	[ecx], eax


loc_41AAD2:				; CODE XREF: ___:0041AACEj
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41AAE0
		test	eax, eax
		jz	short loc_41AAE0
		mov	al, 1
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41AAE0:				; CODE XREF: ___:0041AAD5j
					; ___:0041AAD9j
		nop
		call	near ptr 71AB94DCh
		cmp	eax, 2733h
		setz	al
		retn	0Ch
; ---------------------------------------------------------------------------


loc_41AAF1:				; CODE XREF: ___:0041AAA9j
					; ___:0041AAB3j
		xor	al, al
		retn	0Ch
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41AB20:				; CODE XREF: ___:004019B0j
		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esp+10h], esi
		call	sub_40195B
		test	al, al
		jnz	short loc_41AB3C
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_41AB3C:				; CODE XREF: ___:0041AB32j
		mov	al, [esi+80Bh]
		xor	ebx, ebx
		cmp	al, bl
		jnz	short loc_41AB52


loc_41AB48:				; CODE XREF: ___:0041AB8Dj
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_41AB52:				; CODE XREF: ___:0041AB46j
		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_41ABB6
		mov	edi, ebp


loc_41AB6B:				; CODE XREF: ___:0041ABB4j
		cmp	edi, ebx
		jz	short loc_41ABB6
		cmp	[esp+18h], bl
		jz	short loc_41ABB6
		call	sub_40195B
		test	al, al
		jz	short loc_41ABB6
		mov	ecx, [esp+10h]
		push	ebx
		push	1
		push	edi
		call	sub_401960
		test	al, al
		jz	short loc_41AB48
		mov	[esi+ebp+1], bl
		mov	al, [edi]
		cmp	al, 0Ah
		jz	short loc_41ABA1
		cmp	al, 0Dh
		jz	short loc_41ABA1
		cmp	al, bl
		jnz	short loc_41ABA9


loc_41ABA1:				; CODE XREF: ___:0041AB97j
					; ___:0041AB9Bj
		mov	[esi+ebp-1], bl
		mov	[esp+18h], bl


loc_41ABA9:				; CODE XREF: ___:0041AB9Fj
		mov	ecx, [esp+1Ch]
		inc	esi
		inc	edi
		lea	eax, [ecx-1]
		cmp	esi, eax
		jl	short loc_41AB6B


loc_41ABB6:				; CODE XREF: ___:0041AB67j
					; ___:0041AB6Dj ...
		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_41AC00:				; CODE XREF: ___:00402180j
		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esp+10h], esi
		call	sub_40195B
		test	al, al
		jnz	short loc_41AC1C
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_41AC1C:				; CODE XREF: ___:0041AC12j
		mov	al, [esi+80Bh]
		xor	ebx, ebx
		cmp	al, bl
		jnz	short loc_41AC32


loc_41AC28:				; CODE XREF: ___:0041AC6Dj
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_41AC32:				; CODE XREF: ___:0041AC26j
		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_41AC9D
		mov	edi, ebp


loc_41AC4B:				; CODE XREF: ___:0041AC9Bj
		cmp	edi, ebx
		jz	short loc_41AC9D
		cmp	[esp+18h], bl
		jz	short loc_41AC9D
		call	sub_40195B
		test	al, al
		jz	short loc_41AC9D
		mov	ecx, [esp+10h]
		push	ebx
		push	1
		push	edi
		call	sub_401960
		test	al, al
		jz	short loc_41AC28
		mov	[esi+ebp+1], bl
		mov	al, [edi]
		cmp	al, 0Ah
		jz	short loc_41AC7D
		cmp	al, bl
		jnz	short loc_41AC90


loc_41AC7D:				; CODE XREF: ___:0041AC77j
		cmp	byte ptr [esi+ebp-1], 0Dh
		jnz	short loc_41AC8A
		mov	[esi+ebp-1], bl
		jmp	short loc_41AC8C
; ---------------------------------------------------------------------------


loc_41AC8A:				; CODE XREF: ___:0041AC82j
		mov	[edi], bl


loc_41AC8C:				; CODE XREF: ___:0041AC88j
		mov	[esp+18h], bl


loc_41AC90:				; CODE XREF: ___:0041AC7Bj
		mov	ecx, [esp+1Ch]
		inc	esi
		inc	edi
		lea	eax, [ecx-1]
		cmp	esi, eax
		jl	short loc_41AC4B


loc_41AC9D:				; CODE XREF: ___:0041AC47j
					; ___:0041AC4Dj ...
		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_41ACE0:				; CODE XREF: ___:00401082j
		push	esi
		mov	esi, ecx
		call	sub_40195B
		test	al, al
		jnz	short loc_41ACF2
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_41ACF2:				; CODE XREF: ___:0041ACEAj
		mov	eax, [esi+806h]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41AD03
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_41AD03:				; CODE XREF: ___:0041ACFBj
		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_41AD30	proc near		; CODE XREF: sub_401893j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		call	sub_40195B
		test	al, al
		jnz	short loc_41AD42
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_41AD42:				; CODE XREF: sub_41AD30+Aj
		mov	eax, [esi+806h]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41AD53
		xor	eax, eax
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_41AD53:				; CODE XREF: sub_41AD30+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_41AD30	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41AD80:				; CODE XREF: ___:00401C3Fj
		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_41ADBF
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41ADB5
		cmp	[esi+80Bh], cl
		jz	short loc_41ADB5
		mov	eax, 1
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_41ADB5:				; CODE XREF: ___:0041AD9Ej
					; ___:0041ADA6j
		xor	eax, eax
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_41ADBF:				; CODE XREF: ___:0041AD99j
		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_41ADF5
		xor	al, al
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_41ADF5:				; CODE XREF: ___:0041ADE9j
		mov	ecx, [esi+806h]
		lea	eax, [esp+0Ch]
		push	eax
		push	ecx
		call	sub_436F60
; ---------------------------------------------------------------------------
		test	eax, eax
		setnz	al
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41AE50:				; CODE XREF: ___:004016E5j
		sub	esp, 10Ch
		push	esi
		mov	esi, ecx
		xor	ecx, ecx
		cmp	[esi+80Ch], cl
		jnz	short loc_41AE6D
		xor	al, al
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_41AE6D:				; CODE XREF: ___:0041AE61j
		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_41AEA9
		xor	al, al
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_41AEA9:				; CODE XREF: ___:0041AE9Dj
		mov	ecx, [esi+806h]
		lea	eax, [esp+0Ch]
		push	eax
		push	ecx
		call	sub_436F60
; ---------------------------------------------------------------------------
		test	eax, eax
		setnz	al
		pop	esi
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41AEF0:				; CODE XREF: ___:0040173Aj
		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_41AF60	proc near		; CODE XREF: sub_4018BBj

arg_0		= dword	ptr  4

		mov	al, byte ptr [esp+arg_0]
		test	al, al
		mov	[ecx+80Ch], al
		jz	short loc_41AF90
		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_41AF90:				; CODE XREF: sub_41AF60+Cj
		mov	eax, [ecx+806h]
		lea	edx, [esp+arg_0]
		push	edx
		push	8004667Eh
		push	eax
		mov	[esp+0Ch+arg_0], 0
		call	near ptr 71AB4519h
		nop
		retn	4
sub_41AF60	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41AFE0	proc near		; CODE XREF: sub_401186j
		push	esi
		mov	esi, ecx
		push	0
		lea	ecx, [esi+4]
		call	sub_401C35
		mov	dword ptr [esi], offset	dword_43E0C0
		mov	eax, esi
		pop	esi
		retn
sub_41AFE0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B010:				; CODE XREF: ___:00401915j
					; ___:00401E74j
		push	esi
		mov	esi, ecx
		call	sub_40186B
		test	byte ptr [esp+8], 1
		jz	short loc_41B028
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_41B028:				; CODE XREF: ___:0041B01Dj
		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_41B040	proc near		; CODE XREF: sub_40186Bj
		mov	dword ptr [ecx], offset	dword_43E0C0
		add	ecx, 4
		jmp	sub_401FC8
sub_41B040	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B060	proc near		; CODE XREF: sub_401636j

arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	sub_40195B
		test	al, al
		jnz	short loc_41B072
		pop	edi
		xor	eax, eax
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_41B072:				; CODE XREF: sub_41B060+9j
		mov	esi, [esp+8+arg_0]
		push	esi
		nop
		call	near ptr 71AB2BF4h
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41B0C5
		push	esi
		nop
		call	near ptr 71AB4FD4h
		mov	edi, eax
		test	edi, edi
		jnz	short loc_41B097
		pop	edi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_41B097:				; CODE XREF: sub_41B060+2Dj
		mov	eax, [edi+0Ch]
		xor	esi, esi
		cmp	dword ptr [eax], 0
		jz	short loc_41B0AC


loc_41B0A1:				; CODE XREF: sub_41B060+4Aj
		mov	ecx, [eax+4]
		add	eax, 4
		inc	esi
		test	ecx, ecx
		jnz	short loc_41B0A1


loc_41B0AC:				; CODE XREF: sub_41B060+3Fj
		call	sub_401EEC
		dec	esi
		push	esi
		push	0
		call	sub_4021A3
; ---------------------------------------------------------------------------
		mov	ecx, [edi+0Ch]
		add	esp, 8
		mov	edx, [ecx+eax*4]
		mov	eax, [edx]


loc_41B0C5:				; CODE XREF: sub_41B060+20j
		pop	edi
		pop	esi
		retn	4
sub_41B060	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B0F0:				; CODE XREF: ___:00402095j
		push	0FFFFFFFFh
		push	offset loc_43AD07
		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_40195B
		test	al, al
		jnz	short loc_41B12F
		mov	eax, [esp+58h]
		mov	esi, [esp+54h]
		push	eax
		mov	ecx, esi
		call	sub_401861
		jmp	loc_41B2DB
; ---------------------------------------------------------------------------


loc_41B12F:				; CODE XREF: ___:0041B118j
		mov	ecx, [esp+58h]
		push	ecx
		lea	ecx, [esp+30h]
		call	sub_401861
		mov	edi, 1
		lea	ecx, [esp+2Ch]
		mov	[esp+4Ch], edi
		call	sub_4017E4
		test	eax, eax
		push	offset byte_446F60
		jnz	short loc_41B16C
		mov	esi, [esp+58h]
		mov	ecx, esi
		call	sub_401861
		mov	[esp+0Ch], edi
		jmp	loc_41B2CE
; ---------------------------------------------------------------------------


loc_41B16C:				; CODE XREF: ___:0041B156j
		lea	ecx, [esp+30h]
		call	sub_4012EE
		test	eax, eax
		push	offset byte_446F60
		jnz	short loc_41B192
		mov	esi, [esp+58h]
		mov	ecx, esi
		call	sub_401861
		mov	[esp+0Ch], edi
		jmp	loc_41B2CE
; ---------------------------------------------------------------------------


loc_41B192:				; CODE XREF: ___:0041B17Cj
		lea	ecx, [esp+18h]
		call	sub_401861
		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_4017E4
		push	eax
		call	sub_436FC6
; ---------------------------------------------------------------------------
		cmp	eax, ebx
		jz	short loc_41B1D6
		mov	esi, [esp+54h]
		lea	eax, [esp+14h]
		push	eax
		mov	ecx, esi
		call	sub_4014C9
		mov	[esp+0Ch], edi
		jmp	loc_41B2C0
; ---------------------------------------------------------------------------


loc_41B1D6:				; CODE XREF: ___:0041B1BBj
		mov	edi, [esp+10h]
		mov	esi, offset dword_443DC4
		mov	ecx, [edi]
		mov	eax, [ecx+4]


loc_41B1E4:				; CODE XREF: ___:0041B202j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_41B208
		cmp	cl, bl
		jz	short loc_41B204
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_41B208
		add	eax, 2
		add	esi, 2
		cmp	cl, bl
		jnz	short loc_41B1E4


loc_41B204:				; CODE XREF: ___:0041B1EEj
		xor	eax, eax
		jmp	short loc_41B20D
; ---------------------------------------------------------------------------


loc_41B208:				; CODE XREF: ___:0041B1EAj
					; ___:0041B1F8j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41B20D:				; CODE XREF: ___:0041B206j
		cmp	eax, ebx
		jz	short loc_41B27B
		push	ebp


loc_41B212:				; CODE XREF: ___:0041B265j
					; ___:0041B269j
		nop
		call	near ptr 27E0796h
		and	eax, 0Fh
		cmp	al, 8
		jnz	short loc_41B226
		cmp	word ptr [edi+8], 0Fh
		jz	short loc_41B26B


loc_41B226:				; CODE XREF: ___:0041B21Dj
		mov	edi, [edi]
		mov	ebp, [esp+14h]
		cmp	edi, ebx
		jnz	short loc_41B232
		mov	edi, ebp


loc_41B232:				; CODE XREF: ___:0041B22Ej
		mov	eax, [edi+4]
		mov	esi, offset dword_443DC4


loc_41B23A:				; CODE XREF: ___:0041B258j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_41B25E
		cmp	cl, bl
		jz	short loc_41B25A
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_41B25E
		add	eax, 2
		add	esi, 2
		cmp	cl, bl
		jnz	short loc_41B23A


loc_41B25A:				; CODE XREF: ___:0041B244j
		xor	eax, eax
		jmp	short loc_41B263
; ---------------------------------------------------------------------------


loc_41B25E:				; CODE XREF: ___:0041B240j
					; ___:0041B24Ej
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41B263:				; CODE XREF: ___:0041B25Cj
		cmp	eax, ebx
		jnz	short loc_41B212
		mov	edi, ebp
		jmp	short loc_41B212
; ---------------------------------------------------------------------------


loc_41B26B:				; CODE XREF: ___:0041B224j
		mov	eax, [edi+18h]
		lea	ecx, [esp+18h]
		push	eax
		call	sub_4015D7
		pop	ebp
		jmp	short loc_41B288
; ---------------------------------------------------------------------------


loc_41B27B:				; CODE XREF: ___:0041B20Fj
		mov	ecx, [edi+18h]
		push	ecx
		lea	ecx, [esp+18h]
		call	sub_4015D7


loc_41B288:				; CODE XREF: ___:0041B279j
		push	offset byte_446F60
		lea	ecx, [esp+18h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_41B2A8
		mov	edx, [esp+58h]
		lea	ecx, [esp+14h]
		push	edx
		call	sub_4015D7


loc_41B2A8:				; CODE XREF: ___:0041B298j
		mov	esi, [esp+54h]
		lea	eax, [esp+14h]
		push	eax
		mov	ecx, esi
		call	sub_4014C9
		mov	dword ptr [esp+0Ch], 1


loc_41B2C0:				; CODE XREF: ___:0041B1D1j
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+4Ch], 1
		call	sub_401226


loc_41B2CE:				; CODE XREF: ___:0041B167j
					; ___:0041B18Dj
		lea	ecx, [esp+2Ch]
		mov	[esp+4Ch], bl
		call	sub_401226


loc_41B2DB:				; CODE XREF: ___:0041B12Aj
		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_41B390:				; CODE XREF: ___:00402135j
		push	esi
		mov	esi, ecx
		call	sub_401E6A
		push	0
		lea	ecx, [esi+15h]
		call	sub_401C35
		mov	dword ptr [esi], offset	dword_43E0C4
		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_41B3D0:				; CODE XREF: ___:004013FCj
					; ___:00402018j
		push	esi
		mov	esi, ecx
		call	sub_401BCC
		test	byte ptr [esp+8], 1
		jz	short loc_41B3E8
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_41B3E8:				; CODE XREF: ___:0041B3DDj
		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_41B400	proc near		; CODE XREF: sub_401BCCj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41B400
		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_401FC8
		mov	ecx, esi
		mov	[esp+14h+var_4], 0FFFFFFFFh
		call	sub_402031
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_41B400	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B470:				; CODE XREF: ___:00401D3Ej
		push	esi
		mov	esi, ecx
		call	sub_401E6A
		push	0
		lea	ecx, [esi+15h]
		call	sub_401C35
		mov	eax, [esp+8]
		mov	ecx, [esp+0Ch]
		mov	[esi+11h], eax
		mov	dword ptr [esi], offset	dword_43E0C4
		mov	[esi+823h], ecx
		mov	eax, esi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B4B0:				; CODE XREF: ___:0040167Cj
		sub	esp, 14h
		push	edi
		mov	edi, ecx
		mov	eax, [edi+11h]
		test	eax, eax
		jz	loc_41B5C0
		mov	ecx, [edi+823h]
		test	ecx, ecx
		jz	loc_41B5C0
		push	ebx
		push	ebp
		lea	ebx, [edi+15h]
		push	esi
		push	eax
		mov	ecx, ebx
		xor	esi, esi
		call	sub_401488
		mov	ebp, dword_50F8D0
		test	al, al
		jnz	short loc_41B513


loc_41B4E9:				; CODE XREF: ___:0041B511j
		mov	al, [edi+10h]
		test	al, al
		jz	loc_41B5AF
		mov	al, byte_4E6E74
		test	al, al
		jz	short loc_41B513
		push	7D0h
		call	ebp
		mov	eax, [edi+11h]
		mov	ecx, ebx
		push	eax
		call	sub_401488
		test	al, al
		jz	short loc_41B4E9


loc_41B513:				; CODE XREF: ___:0041B4E7j
					; ___:0041B4FBj
		mov	al, [edi+10h]
		test	al, al
		jz	loc_41B5AF


loc_41B51E:				; CODE XREF: ___:0041B5A9j
		mov	al, byte_4E6E74
		test	al, al
		jz	loc_41B5AF
		test	esi, esi
		jnz	short loc_41B54E
		push	80Eh
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		test	eax, eax
		jz	short loc_41B54A
		push	esi
		mov	ecx, eax
		call	sub_401C35
		jmp	short loc_41B54C
; ---------------------------------------------------------------------------


loc_41B54A:				; CODE XREF: ___:0041B53Ej
		xor	eax, eax


loc_41B54C:				; CODE XREF: ___:0041B548j
		mov	esi, eax


loc_41B54E:				; CODE XREF: ___:0041B52Dj
		push	0
		push	0
		push	esi
		mov	ecx, ebx
		call	sub_401B81
		test	al, al
		jnz	short loc_41B567
		push	7D0h
		call	ebp
		jmp	short loc_41B5A4
; ---------------------------------------------------------------------------


loc_41B567:				; CODE XREF: ___:0041B55Cj
		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_401893
		mov	al, [esp+18h]
		test	al, al
		jz	short loc_41B5A4
		push	esi
		call	dword ptr [edi+823h]
		add	esp, 4


loc_41B5A4:				; CODE XREF: ___:0041B565j
					; ___:0041B598j
		mov	al, [edi+10h]
		test	al, al
		jnz	loc_41B51E


loc_41B5AF:				; CODE XREF: ___:0041B4EEj
					; ___:0041B518j ...
		mov	ecx, ebx
		call	sub_4014DD
		pop	esi
		pop	ebp
		pop	ebx
		xor	eax, eax
		pop	edi
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------


loc_41B5C0:				; CODE XREF: ___:0041B4BBj
					; ___:0041B4C9j
		xor	eax, eax
		pop	edi
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B620:				; CODE XREF: ___:00401C21j
		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_41B695
		mov	esi, ebp


loc_41B63F:				; CODE XREF: ___:0041B693j
		cmp	esi, ebx
		jz	short loc_41B695
		cmp	[esp+18h], bl
		jz	short loc_41B695
		mov	ecx, [esp+14h]
		push	ebx
		push	1
		push	esi
		push	ecx
		nop
		call	near ptr 71AB615Ah
		cmp	eax, ebx
		jz	short loc_41B6A4
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41B6A4
		call	near ptr 71AB94DCh
		nop
		cmp	eax, 2733h
		jz	short loc_41B69D
		mov	[edi+ebp+1], bl
		mov	al, [esi]
		cmp	al, 0Ah
		jz	short loc_41B680
		cmp	al, 0Dh
		jz	short loc_41B680
		cmp	al, bl
		jnz	short loc_41B688


loc_41B680:				; CODE XREF: ___:0041B676j
					; ___:0041B67Aj
		mov	[edi+ebp-1], bl
		mov	[esp+18h], bl


loc_41B688:				; CODE XREF: ___:0041B67Ej
		mov	edx, [esp+1Ch]
		inc	edi
		inc	esi
		lea	eax, [edx-1]
		cmp	edi, eax
		jl	short loc_41B63F


loc_41B695:				; CODE XREF: ___:0041B63Bj
					; ___:0041B641j ...
		mov	eax, [esp+1Ch]
		mov	[eax+ebp-1], bl


loc_41B69D:				; CODE XREF: ___:0041B66Cj
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41B6A4:				; CODE XREF: ___:0041B65Aj
					; ___:0041B65Fj
		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_41B6E0	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_41B74A
		mov	edi, ebp


loc_41B6FF:				; CODE XREF: sub_41B6E0+68j
		cmp	edi, ebx
		jz	short loc_41B74A
		cmp	byte ptr [esp+10h+arg_4], bl
		jz	short loc_41B74A
		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_41B759
		mov	[esi+ebp+1], bl
		mov	al, [edi]
		cmp	al, 0Ah
		jz	short loc_41B72A
		cmp	al, bl
		jnz	short loc_41B73D


loc_41B72A:				; CODE XREF: sub_41B6E0+44j
		cmp	byte ptr [esi+ebp-1], 0Dh
		jnz	short loc_41B737
		mov	[esi+ebp-1], bl
		jmp	short loc_41B739
; ---------------------------------------------------------------------------


loc_41B737:				; CODE XREF: sub_41B6E0+4Fj
		mov	[edi], bl


loc_41B739:				; CODE XREF: sub_41B6E0+55j
		mov	byte ptr [esp+10h+arg_4], bl


loc_41B73D:				; CODE XREF: sub_41B6E0+48j
		mov	edx, [esp+10h+arg_8]
		inc	esi
		inc	edi
		lea	eax, [edx-1]
		cmp	esi, eax
		jl	short loc_41B6FF


loc_41B74A:				; CODE XREF: sub_41B6E0+1Bj
					; sub_41B6E0+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_41B759:				; CODE XREF: sub_41B6E0+3Aj
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		retn
sub_41B6E0	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41B780:				; CODE XREF: ___:00401ADCj
		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_41B7DB


loc_41B7A6:				; CODE XREF: ___:0041B7D9j
		push	3
		push	1
		call	sub_4021A3
; ---------------------------------------------------------------------------
		add	esp, 8
		dec	eax
		jz	short loc_41B7C7
		dec	eax
		jz	short loc_41B7C1
		dec	eax
		jnz	short loc_41B7D6
		push	7Ah
		push	61h
		jmp	short loc_41B7CB
; ---------------------------------------------------------------------------


loc_41B7C1:				; CODE XREF: ___:0041B7B6j
		push	5Ah
		push	41h
		jmp	short loc_41B7CB
; ---------------------------------------------------------------------------


loc_41B7C7:				; CODE XREF: ___:0041B7B3j
		push	39h
		push	30h


loc_41B7CB:				; CODE XREF: ___:0041B7BFj
					; ___:0041B7C5j
		call	sub_4021A3
; ---------------------------------------------------------------------------
		add	esp, 8
		mov	[esi+ebx], al


loc_41B7D6:				; CODE XREF: ___:0041B7B9j
		inc	esi
		cmp	esi, ebp
		jl	short loc_41B7A6


loc_41B7DB:				; CODE XREF: ___:0041B7A4j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B800	proc near		; CODE XREF: sub_40141Aj
		rdtsc
		retn
sub_41B800	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B820	proc near		; CODE XREF: sub_4017F3j

var_4		= dword	ptr -4

		sub	esp, 8
		push	ebx
		mov	ebx, dword_50F8D0
		push	ebp
		push	esi
		push	edi
		xor	ebp, ebp


loc_41B82F:				; CODE XREF: sub_41B820+43j
					; sub_41B820+4Dj
		call	sub_40141A
		push	3E8h
		mov	esi, eax
		mov	edi, edx
		call	ebx
		call	sub_40141A
		sub	eax, esi
		push	ebp
		sbb	edx, edi
		push	186A0h
		push	edx
		push	eax
		call	sub_436970
		push	ebp
		push	0Ah
		push	edx
		push	eax
		call	sub_436970
		cmp	edx, ebp
		mov	esi, eax
		ja	short loc_41B82F
		jb	short loc_41B86F
		cmp	esi, 0F4240h
		ja	short loc_41B82F


loc_41B86F:				; CODE XREF: sub_41B820+45j
		push	ebp
		push	64h
		push	edx
		push	esi
		call	sub_4368F0
		mov	ecx, eax
		cmp	edx, ebp
		mov	eax, 64h
		mov	[esp+18h+var_4], ebp
		ja	short loc_41B8F9
		jb	short loc_41B88F
		cmp	ecx, 50h
		jnb	short loc_41B898


loc_41B88F:				; CODE XREF: sub_41B820+68j
		mov	eax, 4Bh
		mov	[esp+18h+var_4], ebp


loc_41B898:				; CODE XREF: sub_41B820+6Dj
		cmp	edx, ebp
		ja	short loc_41B8F9
		jb	short loc_41B8A3
		cmp	ecx, 47h
		jnb	short loc_41B8AC


loc_41B8A3:				; CODE XREF: sub_41B820+7Cj
		mov	eax, 42h
		mov	[esp+18h+var_4], ebp


loc_41B8AC:				; CODE XREF: sub_41B820+81j
		cmp	edx, ebp
		ja	short loc_41B8F9
		jb	short loc_41B8B7
		cmp	ecx, 37h
		jnb	short loc_41B8C0


loc_41B8B7:				; CODE XREF: sub_41B820+90j
		mov	eax, 32h
		mov	[esp+18h+var_4], ebp


loc_41B8C0:				; CODE XREF: sub_41B820+95j
		cmp	edx, ebp
		ja	short loc_41B8F9
		jb	short loc_41B8CB
		cmp	ecx, 26h
		jnb	short loc_41B8D4


loc_41B8CB:				; CODE XREF: sub_41B820+A4j
		mov	eax, 21h
		mov	[esp+18h+var_4], ebp


loc_41B8D4:				; CODE XREF: sub_41B820+A9j
		cmp	edx, ebp
		ja	short loc_41B8F9
		jb	short loc_41B8DF
		cmp	ecx, 1Eh
		jnb	short loc_41B8E8


loc_41B8DF:				; CODE XREF: sub_41B820+B8j
		mov	eax, 19h
		mov	[esp+18h+var_4], ebp


loc_41B8E8:				; CODE XREF: sub_41B820+BDj
		cmp	edx, ebp
		ja	short loc_41B8F9
		jb	short loc_41B8F3
		cmp	ecx, 0Ah
		jnb	short loc_41B8F9


loc_41B8F3:				; CODE XREF: sub_41B820+CCj
		xor	eax, eax
		mov	[esp+18h+var_4], ebp


loc_41B8F9:				; CODE XREF: sub_41B820+66j
					; sub_41B820+7Aj ...
		sub	eax, ecx
		pop	edi
		add	eax, esi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 8
		retn
sub_41B820	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41B950	proc near		; CODE XREF: sub_402022j

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_41B950
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 34h
		mov	al, byte_447759
		push	ebx
		push	esi
		push	edi
		test	al, al
		mov	[esp+4Ch+var_40], 0
		jz	loc_41BAAF
		push	ebp
		lea	ecx, [esp+50h+var_3C]
		call	sub_401424
		push	400h
		lea	ecx, [esp+54h+var_3C]
		mov	[esp+54h+var_4], 1
		xor	bl, bl
		call	sub_401C5D
		mov	ebp, eax
		call	sub_401EEC
		lea	ecx, [esp+50h+var_3C]
		call	sub_4013D9
		mov	[esp+50h+arg_4], eax
		lea	eax, [esp+50h+arg_4]
		push	eax
		push	ebp
		nop
		call	near ptr 2801165h
		test	eax, eax
		jnz	short loc_41B9E6
		mov	edi, offset byte_446F60
		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_41B9E6:				; CODE XREF: sub_41B950+74j
		movsx	ecx, byte ptr [ebp+0]
		mov	eax, 41h


loc_41B9EF:				; CODE XREF: sub_41B950+A9j
		cmp	ecx, eax
		jnz	short loc_41B9F5
		mov	bl, 1


loc_41B9F5:				; CODE XREF: sub_41B950+A1j
		inc	eax
		cmp	eax, 5Bh
		jl	short loc_41B9EF
		mov	eax, 61h


loc_41BA00:				; CODE XREF: sub_41B950+BAj
		cmp	ecx, eax
		jnz	short loc_41BA06
		mov	bl, 1


loc_41BA06:				; CODE XREF: sub_41B950+B2j
		inc	eax
		cmp	eax, 7Bh
		jl	short loc_41BA00
		test	bl, bl
		jnz	short loc_41BA32
		mov	edi, offset byte_446F60
		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_41BA32:				; CODE XREF: sub_41B950+BEj
		mov	esi, dword_50FABC
		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_4014C9
		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_41BAAF:				; CODE XREF: sub_41B950+2Aj
		lea	ecx, [esp+4Ch+var_24]
		call	sub_401424
		mov	ebx, 2
		mov	[esp+4Ch+var_4], ebx
		nop
		call	near ptr 27E0796h
		push	eax
		nop
		call	near ptr 77C371BCh
		mov	edi, dword_50FABC
		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_4015D7
		test	esi, esi
		jle	short loc_41BB4E


loc_41BAF8:				; CODE XREF: sub_41B950+1FCj
		lea	ecx, [esp+4Ch+var_3C]
		call	sub_401424
		lea	eax, [esp+4Ch+var_24]
		lea	ecx, [esp+4Ch+var_3C]
		push	eax
		mov	byte ptr [esp+50h+var_4], 3
		call	sub_401FBE
		call	edi
		cdq
		mov	ecx, 1Ah
		idiv	ecx
		lea	ecx, [esp+4Ch+var_3C]
		add	edx, 61h
		push	edx
		call	sub_4017E4
		push	eax
		lea	edx, [esp+54h+var_24]
		push	offset dword_443E74
		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_41BAF8


loc_41BB4E:				; CODE XREF: sub_41B950+1A6j
		mov	esi, [esp+4Ch+arg_0]
		lea	eax, [esp+4Ch+var_24]
		push	eax
		mov	ecx, esi
		call	sub_4014C9
		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_41B950	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 90h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41BC20:				; CODE XREF: ___:00401569j
		mov	al, [esp+4]
		cmp	al, 20h
		jz	short loc_41BC2F
		cmp	al, 9
		jz	short loc_41BC2F
		xor	al, al
		retn
; ---------------------------------------------------------------------------


loc_41BC2F:				; CODE XREF: ___:0041BC26j
					; ___:0041BC2Aj
		mov	al, 1
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41BC50:				; CODE XREF: ___:00401ED8j
		mov	eax, [esp+4]
		push	offset dword_443E7C
		push	eax
		nop
		call	near ptr 77C3F010h
		add	esp, 8
		test	eax, eax
		jz	short loc_41BC74
		push	eax
		call	near ptr 77C40AB1h
		nop
		add	esp, 4
		mov	al, 1
		retn
; ---------------------------------------------------------------------------


loc_41BC74:				; CODE XREF: ___:0041BC65j
		xor	al, al
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41BC90	proc near		; CODE XREF: sub_401479j

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_41BEEE
		mov	esi, offset byte_446F60
		mov	eax, edi


loc_41BCAA:				; CODE XREF: sub_41BC90+3Cj
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_41BCD2
		test	cl, cl
		jz	short loc_41BCCE
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_41BCD2
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_41BCAA


loc_41BCCE:				; CODE XREF: sub_41BC90+26j
		xor	eax, eax
		jmp	short loc_41BCD7
; ---------------------------------------------------------------------------


loc_41BCD2:				; CODE XREF: sub_41BC90+22j
					; sub_41BC90+32j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41BCD7:				; CODE XREF: sub_41BC90+40j
		test	eax, eax
		jz	loc_41BEEE
		push	20h
		lea	eax, [esp+44h+var_20]
		push	edi
		push	eax
		nop
		call	near ptr 77C47A90h
		mov	edi, dword_50FAF4
		lea	ecx, [esp+4Ch+var_20]
		push	offset dword_443DC4
		push	ecx
		call	edi
		add	esp, 14h
		mov	[esp+40h+var_30], eax
		test	eax, eax
		jz	loc_41BEEE
		mov	ebx, 1
		lea	esi, [esp+40h+var_2C]


loc_41BD17:				; CODE XREF: sub_41BC90+A4j
		push	offset dword_443DC4
		push	0
		call	edi
		add	esp, 8
		mov	[esi], eax
		test	eax, eax
		jz	loc_41BEEE
		inc	ebx
		add	esi, 4
		cmp	ebx, 4
		jl	short loc_41BD17
		mov	ebp, [esp+40h+var_30]
		mov	esi, offset dword_443E98
		mov	eax, ebp


loc_41BD41:				; CODE XREF: sub_41BC90+D3j
		mov	cl, [eax]
		mov	bl, [esi]
		mov	dl, cl
		cmp	cl, bl
		jnz	short loc_41BD69
		test	dl, dl
		jz	short loc_41BD65
		mov	cl, [eax+1]
		mov	bl, [esi+1]
		mov	dl, cl
		cmp	cl, bl
		jnz	short loc_41BD69
		add	eax, 2
		add	esi, 2
		test	dl, dl
		jnz	short loc_41BD41


loc_41BD65:				; CODE XREF: sub_41BC90+BDj
		xor	eax, eax
		jmp	short loc_41BD6E
; ---------------------------------------------------------------------------


loc_41BD69:				; CODE XREF: sub_41BC90+B9j
					; sub_41BC90+C9j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41BD6E:				; CODE XREF: sub_41BC90+D7j
		test	eax, eax
		jnz	short loc_41BD7C
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 30h
		retn
; ---------------------------------------------------------------------------


loc_41BD7C:				; CODE XREF: sub_41BC90+E0j
		mov	esi, offset dword_443E94
		mov	eax, ebp


loc_41BD83:				; CODE XREF: sub_41BC90+115j
		mov	cl, [eax]
		mov	bl, [esi]
		mov	dl, cl
		cmp	cl, bl
		jnz	short loc_41BDAB
		test	dl, dl
		jz	short loc_41BDA7
		mov	cl, [eax+1]
		mov	bl, [esi+1]
		mov	dl, cl
		cmp	cl, bl
		jnz	short loc_41BDAB
		add	eax, 2
		add	esi, 2
		test	dl, dl
		jnz	short loc_41BD83


loc_41BDA7:				; CODE XREF: sub_41BC90+FFj
		xor	eax, eax
		jmp	short loc_41BDB0
; ---------------------------------------------------------------------------


loc_41BDAB:				; CODE XREF: sub_41BC90+FBj
					; sub_41BC90+10Bj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41BDB0:				; CODE XREF: sub_41BC90+119j
		mov	edi, [esp+40h+var_2C]
		test	eax, eax
		jnz	short loc_41BDFA
		mov	esi, offset dword_443E90
		mov	edx, edi


loc_41BDBF:				; CODE XREF: sub_41BC90+151j
		mov	al, [edx]
		mov	cl, [esi]
		mov	bl, al
		cmp	al, cl
		jnz	short loc_41BDE7
		test	bl, bl
		jz	short loc_41BDE3
		mov	cl, [edx+1]
		mov	al, [esi+1]
		mov	bl, cl
		cmp	cl, al
		jnz	short loc_41BDE7
		add	edx, 2
		add	esi, 2
		test	bl, bl
		jnz	short loc_41BDBF


loc_41BDE3:				; CODE XREF: sub_41BC90+13Bj
		xor	edx, edx
		jmp	short loc_41BDEC
; ---------------------------------------------------------------------------


loc_41BDE7:				; CODE XREF: sub_41BC90+137j
					; sub_41BC90+147j
		sbb	edx, edx
		sbb	edx, 0FFFFFFFFh


loc_41BDEC:				; CODE XREF: sub_41BC90+155j
		test	edx, edx
		jnz	short loc_41BDFA
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 30h
		retn
; ---------------------------------------------------------------------------


loc_41BDFA:				; CODE XREF: sub_41BC90+126j
					; sub_41BC90+15Ej
		mov	esi, offset dword_443E8C
		mov	edx, ebp


loc_41BE01:				; CODE XREF: sub_41BC90+193j
		mov	al, [edx]
		mov	cl, [esi]
		mov	bl, al
		cmp	al, cl
		jnz	short loc_41BE29
		test	bl, bl
		jz	short loc_41BE25
		mov	cl, [edx+1]
		mov	al, [esi+1]
		mov	bl, cl
		cmp	cl, al
		jnz	short loc_41BE29
		add	edx, 2
		add	esi, 2
		test	bl, bl
		jnz	short loc_41BE01


loc_41BE25:				; CODE XREF: sub_41BC90+17Dj
		xor	edx, edx
		jmp	short loc_41BE2E
; ---------------------------------------------------------------------------


loc_41BE29:				; CODE XREF: sub_41BC90+179j
					; sub_41BC90+189j
		sbb	edx, edx
		sbb	edx, 0FFFFFFFFh


loc_41BE2E:				; CODE XREF: sub_41BC90+197j
		test	edx, edx
		jnz	short loc_41BE74
		mov	esi, offset dword_443E88
		mov	edx, edi


loc_41BE39:				; CODE XREF: sub_41BC90+1CBj
		mov	al, [edx]
		mov	cl, [esi]
		mov	bl, al
		cmp	al, cl
		jnz	short loc_41BE61
		test	bl, bl
		jz	short loc_41BE5D
		mov	cl, [edx+1]
		mov	al, [esi+1]
		mov	bl, cl
		cmp	cl, al
		jnz	short loc_41BE61
		add	edx, 2
		add	esi, 2
		test	bl, bl
		jnz	short loc_41BE39


loc_41BE5D:				; CODE XREF: sub_41BC90+1B5j
		xor	edx, edx
		jmp	short loc_41BE66
; ---------------------------------------------------------------------------


loc_41BE61:				; CODE XREF: sub_41BC90+1B1j
					; sub_41BC90+1C1j
		sbb	edx, edx
		sbb	edx, 0FFFFFFFFh


loc_41BE66:				; CODE XREF: sub_41BC90+1CFj
		test	edx, edx
		jnz	short loc_41BE74
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 30h
		retn
; ---------------------------------------------------------------------------


loc_41BE74:				; CODE XREF: sub_41BC90+1A0j
					; sub_41BC90+1D8j
		mov	esi, offset dword_443E84
		mov	ecx, ebp


loc_41BE7B:				; CODE XREF: sub_41BC90+20Dj
		mov	al, [ecx]
		mov	bl, [esi]
		mov	dl, al
		cmp	al, bl
		jnz	short loc_41BEA3
		test	dl, dl
		jz	short loc_41BE9F
		mov	al, [ecx+1]
		mov	bl, [esi+1]
		mov	dl, al
		cmp	al, bl
		jnz	short loc_41BEA3
		add	ecx, 2
		add	esi, 2
		test	dl, dl
		jnz	short loc_41BE7B


loc_41BE9F:				; CODE XREF: sub_41BC90+1F7j
		xor	ecx, ecx
		jmp	short loc_41BEA8
; ---------------------------------------------------------------------------


loc_41BEA3:				; CODE XREF: sub_41BC90+1F3j
					; sub_41BC90+203j
		sbb	ecx, ecx
		sbb	ecx, 0FFFFFFFFh


loc_41BEA8:				; CODE XREF: sub_41BC90+211j
		test	ecx, ecx
		jnz	short loc_41BEEE
		mov	esi, offset dword_443E80
		mov	eax, edi


loc_41BEB3:				; CODE XREF: sub_41BC90+245j
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_41BEDB
		test	cl, cl
		jz	short loc_41BED7
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_41BEDB
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_41BEB3


loc_41BED7:				; CODE XREF: sub_41BC90+22Fj
		xor	eax, eax
		jmp	short loc_41BEE0
; ---------------------------------------------------------------------------


loc_41BEDB:				; CODE XREF: sub_41BC90+22Bj
					; sub_41BC90+23Bj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_41BEE0:				; CODE XREF: sub_41BC90+249j
		test	eax, eax
		jnz	short loc_41BEEE
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 30h
		retn
; ---------------------------------------------------------------------------


loc_41BEEE:				; CODE XREF: sub_41BC90+Dj
					; sub_41BC90+49j ...
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 30h
		retn
sub_41BC90	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 0A0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41BFA0	proc near		; CODE XREF: sub_402004j

var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		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_41C008
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41C008
		mov	eax, [esp+18h+arg_0]
		push	eax
		call	near ptr 71AB2BF4h
		nop
		mov	ecx, [esp+18h+arg_4]
		mov	[esp+18h+var_C], eax
		push	ecx
		nop
		call	near ptr 71AB2B66h
		lea	edx, [esp+18h+var_10]
		push	10h
		push	edx
		push	esi
		mov	[esp+24h+var_E], ax
		mov	[esp+24h+var_10], 2
		call	near ptr 71AB406Ah
		nop
		test	eax, eax
		jnz	short loc_41BFF9
		mov	bl, 1


loc_41BFF9:				; CODE XREF: sub_41BFA0+55j
		push	esi
		call	near ptr 71AB9639h
		nop
		mov	al, bl
		pop	esi
		pop	ebx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_41C008:				; CODE XREF: sub_41BFA0+18j
					; sub_41BFA0+1Dj
		pop	esi
		xor	al, al
		pop	ebx
		add	esp, 10h
		retn
sub_41BFA0	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41C030	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_4436F4
		push	0
		nop
		call	near ptr 7CA41110h
		cmp	eax, 20h
		setnl	al
		retn
sub_41C030	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41C070	proc near		; CODE XREF: sub_402149j

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 27F0000h
		test	eax, eax
		setnle	al
		pop	edi
		add	esp, 54h
		retn
sub_41C070	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41C0E0:				; CODE XREF: ___:00401875j
		sub	esp, 354h
		mov	eax, dword_443EA4
		mov	ecx, dword_443EA8
		mov	[esp+0], eax
		mov	al, byte_446F60
		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_443EAC
		rep stosd
		mov	ecx, dword_443E9C
		mov	[esp+10h], edx
		mov	dx, word_443EA0
		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
		nop
		call	near ptr 27A0000h
		mov	esi, dword_50FAAC
		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_50BB7C
		push	offset dword_50BB7C
		push	esi
		mov	[esi+4], edi
		mov	[esi+10h], edi
		mov	[esi+14h], eax
		mov	[esi+1Ch], edi
		call	sub_436FA8
; ---------------------------------------------------------------------------
		cmp	eax, 5
		jz	short loc_41C1C8
		cmp	eax, 4C3h
		jnz	short loc_41C1D1


loc_41C1C8:				; CODE XREF: ___:0041C1BFj
		push	edi
		push	edi
		push	edi
		push	esi
		call	sub_436FA8
; ---------------------------------------------------------------------------


loc_41C1D1:				; CODE XREF: ___:0041C1C6j
		pop	edi
		cmp	eax, 5
		pop	esi
		jz	short loc_41C1E8
		cmp	eax, 4C3h
		jz	short loc_41C1E8
		mov	al, 1
		add	esp, 354h
		retn
; ---------------------------------------------------------------------------


loc_41C1E8:				; CODE XREF: ___:0041C1D6j
					; ___:0041C1DDj
		xor	al, al
		add	esp, 354h
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41C250:				; CODE XREF: ___:00401EC9j
		sub	esp, 354h
		mov	eax, dword_443EA4
		mov	ecx, dword_443EA8
		mov	[esp+0], eax
		mov	al, byte_446F60
		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_443EAC
		rep stosd
		mov	ecx, dword_443E9C
		mov	[esp+10h], edx
		mov	dx, word_443EA0
		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 27A0000h
		nop
		mov	esi, dword_50FAAC
		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	sub_436FAE
; ---------------------------------------------------------------------------
		test	eax, eax
		jz	short loc_41C338
		mov	esi, dword_50F8D0


loc_41C31C:				; CODE XREF: ___:0041C336j
		push	7D0h
		call	esi
		push	0
		lea	ecx, [esp+130h]
		push	0
		push	ecx
		call	sub_436FAE
; ---------------------------------------------------------------------------
		test	eax, eax
		jnz	short loc_41C31C


loc_41C338:				; CODE XREF: ___:0041C314j
		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 =======================================

; Attributes: noreturn


sub_41C390	proc near		; CODE XREF: sub_401D7Fj

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41C390
		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_4019B5
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+0BCh]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_41C390	endp

; ---------------------------------------------------------------------------
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Fh
		push	10h
		push	14h
		lea	edx, [esp+24h]
		push	6
		push	edx
		call	sub_4019B5
		add	esp, 24h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 1
		call	sub_4017E4
		push	eax
		lea	eax, [esi+118h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	10h
		push	15h
		push	4Fh
		push	10h
		push	14h
		lea	ecx, [esp+20h]
		push	6
		push	ecx
		call	sub_4019B5
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 2
		call	sub_4017E4
		lea	edx, [esi+0EAh]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	7
		push	4
		push	0Ch
		push	10h
		push	0Ah
		push	4Fh
		push	10h
		push	14h
		push	14h
		lea	eax, [esp+30h]
		push	8
		push	eax
		call	sub_4019B5
		add	esp, 30h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 3
		call	sub_4017E4
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	5
		push	18h
		push	5
		push	4Fh
		push	10h
		push	14h
		push	14h
		lea	edx, [esp+28h]
		push	8
		push	edx
		call	sub_4019B5
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 4
		call	sub_4017E4
		push	eax
		lea	eax, [esi+60h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	5
		push	4
		push	43h
		push	10h
		push	0Ah
		push	4Fh
		push	10h
		push	14h
		push	14h
		lea	ecx, [esp+48h]
		push	8
		push	ecx
		call	sub_4019B5
		add	esp, 30h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 5
		call	sub_4017E4
		add	esi, 32h
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+20h]
		mov	[esp+40h], edi
		call	sub_401226
		mov	ecx, [esp+38h]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 80h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41C610:				; CODE XREF: ___:00401064j
		push	0FFFFFFFFh
		push	offset loc_43AF0D
		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_401424
		lea	ecx, [esp+48h]
		mov	dword ptr [esp+120h], 0
		call	sub_401424
		lea	ecx, [esp+78h]
		mov	byte ptr [esp+120h], 1
		call	sub_401424
		lea	ecx, [esp+90h]
		mov	byte ptr [esp+120h], 2
		call	sub_401424
		lea	ecx, [esp+60h]
		mov	byte ptr [esp+120h], 3
		call	sub_401424
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 4
		call	sub_401B36
		mov	esi, [esp+128h]
		mov	bl, 5
		lea	ecx, [ebp+8Eh]
		mov	[esp+120h], bl
		lea	edi, [esi+7Eh]
		call	sub_4017E4
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		lea	ecx, [ebp+4]
		call	sub_4017E4
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41C83C
		push	offset dword_443600
		lea	eax, [esp+34h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 6
		push	ecx
		mov	ecx, eax
		call	sub_401681
		push	eax
		call	sub_401938
		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_41D1A1
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FBE
		push	offset dword_443C84
		lea	ecx, [esp+1Ch]
		call	sub_401A9B
		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_401FBE
		push	1
		push	offset dword_443600
		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_401FBE
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	94h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 8
		jz	short loc_41C7CC
		mov	ecx, eax
		call	sub_4021C6
		mov	edi, eax
		jmp	short loc_41C7CE
; ---------------------------------------------------------------------------


loc_41C7CC:				; CODE XREF: ___:0041C7BFj
		xor	edi, edi


loc_41C7CE:				; CODE XREF: ___:0041C7CAj
		lea	eax, [esp+18h]
		lea	ecx, [edi+11h]
		push	eax
		mov	[esp+124h], bl
		call	sub_401FBE
		lea	ecx, [esp+48h]
		push	ecx
		lea	ecx, [edi+26h]
		call	sub_401FBE
		lea	edx, [esp+60h]
		lea	ecx, [edi+65h]
		push	edx
		call	sub_401FBE
		lea	eax, [esi+69h]
		lea	ecx, [edi+7Ah]
		push	eax
		call	sub_401FBE
		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_4013D4


loc_41C83C:				; CODE XREF: ___:0041C6D0j
		lea	ecx, [ebp+60h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41C9BB
		push	offset dword_443600
		lea	eax, [esp+34h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 9
		push	ecx
		mov	ecx, eax
		call	sub_401681
		push	eax
		call	sub_401938
		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_41D1A1
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FBE
		push	offset dword_443C84
		lea	ecx, [esp+1Ch]
		call	sub_401A9B
		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_401FBE
		push	1
		push	offset dword_443600
		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_401FBE
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	94h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 0Bh
		jz	short loc_41C94B
		mov	ecx, eax
		call	sub_4021C6
		mov	edi, eax
		jmp	short loc_41C94D
; ---------------------------------------------------------------------------


loc_41C94B:				; CODE XREF: ___:0041C93Ej
		xor	edi, edi


loc_41C94D:				; CODE XREF: ___:0041C949j
		lea	eax, [esp+18h]
		lea	ecx, [edi+11h]
		push	eax
		mov	[esp+124h], bl
		call	sub_401FBE
		lea	ecx, [esp+48h]
		push	ecx
		lea	ecx, [edi+26h]
		call	sub_401FBE
		lea	edx, [esp+60h]
		lea	ecx, [edi+65h]
		push	edx
		call	sub_401FBE
		lea	eax, [esi+69h]
		lea	ecx, [edi+7Ah]
		push	eax
		call	sub_401FBE
		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_4013D4


loc_41C9BB:				; CODE XREF: ___:0041C84Fj
		lea	ecx, [ebp+32h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41CBF6
		push	offset dword_443600
		lea	eax, [esp+34h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 0Ch
		push	ecx
		mov	ecx, eax
		call	sub_401681
		push	eax
		call	sub_401938
		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_41D1A1
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FBE
		push	offset dword_443C84
		lea	ecx, [esp+1Ch]
		call	sub_401A9B
		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_401FBE
		push	1
		push	offset dword_443600
		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_401FBE
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	offset dword_443600
		lea	eax, [esp+34h]
		push	3
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		push	offset word_44758A
		mov	ecx, eax
		mov	byte ptr [esp+124h], 0Eh
		call	sub_401B72
		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_41CB5E
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 4
		call	sub_4014B0
		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_41D212
; ---------------------------------------------------------------------------


loc_41CB5E:				; CODE XREF: ___:0041CAE6j
		push	94h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 0Fh
		jz	short loc_41CB86
		mov	ecx, eax
		call	sub_4021C6
		mov	edi, eax
		jmp	short loc_41CB88
; ---------------------------------------------------------------------------


loc_41CB86:				; CODE XREF: ___:0041CB79j
		xor	edi, edi


loc_41CB88:				; CODE XREF: ___:0041CB84j
		lea	ecx, [esp+18h]
		mov	[esp+120h], bl
		push	ecx
		lea	ecx, [edi+11h]
		call	sub_401FBE
		lea	edx, [esp+48h]
		lea	ecx, [edi+26h]
		push	edx
		call	sub_401FBE
		lea	eax, [esp+60h]
		lea	ecx, [edi+65h]
		push	eax
		call	sub_401FBE
		lea	ecx, [esi+69h]
		push	ecx
		lea	ecx, [edi+7Ah]
		call	sub_401FBE
		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_4013D4


loc_41CBF6:				; CODE XREF: ___:0041C9CEj
		lea	ecx, [ebp+0BCh]
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41CD9B
		push	offset dword_443600
		lea	ecx, [esp+34h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		lea	edx, [esp+0A8h]
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+124h], 10h
		call	sub_401681
		push	eax
		call	sub_401938
		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_41D1A1
		lea	eax, [esp+0D2h]
		lea	ecx, [esp+78h]
		push	eax
		call	sub_401FBE
		lea	ecx, [esp+0E7h]
		push	ecx
		lea	ecx, [esp+94h]
		call	sub_401FBE
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FBE
		lea	eax, [esp+100h]
		lea	ecx, [esp+48h]
		push	eax
		call	sub_401FBE
		push	1
		push	offset dword_443600
		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_401FBE
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	94h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 12h
		jz	short loc_41CD0E
		mov	ecx, eax
		call	sub_4021C6
		mov	edi, eax
		jmp	short loc_41CD10
; ---------------------------------------------------------------------------


loc_41CD0E:				; CODE XREF: ___:0041CD01j
		xor	edi, edi


loc_41CD10:				; CODE XREF: ___:0041CD0Cj
		lea	edx, [esp+18h]
		lea	ecx, [edi+11h]
		push	edx
		mov	[esp+124h], bl
		call	sub_401FBE
		lea	eax, [esp+48h]
		lea	ecx, [edi+26h]
		push	eax
		call	sub_401FBE
		lea	ecx, [esp+60h]
		push	ecx
		lea	ecx, [edi+65h]
		call	sub_401FBE
		lea	edx, [esp+78h]
		lea	ecx, [edi+3Bh]
		push	edx
		call	sub_401FBE
		lea	eax, [esp+90h]
		lea	ecx, [edi+50h]
		push	eax
		call	sub_401FBE
		lea	ecx, [esi+69h]
		push	ecx
		lea	ecx, [edi+7Ah]
		call	sub_401FBE
		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_4013D4


loc_41CD9B:				; CODE XREF: ___:0041CC0Cj
		lea	ecx, [ebp+118h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41CF40
		push	offset dword_443600
		lea	ecx, [esp+34h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		lea	edx, [esp+0A8h]
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+124h], 13h
		call	sub_401681
		push	eax
		call	sub_401938
		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_41D1A1
		lea	eax, [esp+0D2h]
		lea	ecx, [esp+78h]
		push	eax
		call	sub_401FBE
		lea	ecx, [esp+0E7h]
		push	ecx
		lea	ecx, [esp+94h]
		call	sub_401FBE
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FBE
		lea	eax, [esp+100h]
		lea	ecx, [esp+48h]
		push	eax
		call	sub_401FBE
		push	1
		push	offset dword_443600
		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_401FBE
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	94h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 15h
		jz	short loc_41CEB3
		mov	ecx, eax
		call	sub_4021C6
		mov	edi, eax
		jmp	short loc_41CEB5
; ---------------------------------------------------------------------------


loc_41CEB3:				; CODE XREF: ___:0041CEA6j
		xor	edi, edi


loc_41CEB5:				; CODE XREF: ___:0041CEB1j
		lea	edx, [esp+18h]
		lea	ecx, [edi+11h]
		push	edx
		mov	[esp+124h], bl
		call	sub_401FBE
		lea	eax, [esp+48h]
		lea	ecx, [edi+26h]
		push	eax
		call	sub_401FBE
		lea	ecx, [esp+60h]
		push	ecx
		lea	ecx, [edi+65h]
		call	sub_401FBE
		lea	edx, [esp+78h]
		lea	ecx, [edi+3Bh]
		push	edx
		call	sub_401FBE
		lea	eax, [esp+90h]
		lea	ecx, [edi+50h]
		push	eax
		call	sub_401FBE
		lea	ecx, [esi+69h]
		push	ecx
		lea	ecx, [edi+7Ah]
		call	sub_401FBE
		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_4013D4


loc_41CF40:				; CODE XREF: ___:0041CDB1j
		lea	ecx, [ebp+0EAh]
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41D1A1
		push	offset dword_443600
		lea	ecx, [esp+34h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		lea	edx, [esp+0A8h]
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+124h], 16h
		call	sub_401681
		push	eax
		call	sub_401938
		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_41D1A1
		lea	eax, [esp+0D2h]
		lea	ecx, [esp+78h]
		push	eax
		call	sub_401FBE
		lea	ecx, [esp+0E7h]
		push	ecx
		lea	ecx, [esp+94h]
		call	sub_401FBE
		lea	edx, [esp+0BDh]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_401FBE
		lea	eax, [esp+100h]
		lea	ecx, [esp+48h]
		push	eax
		call	sub_401FBE
		push	1
		push	offset dword_443600
		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_401FBE
		lea	ecx, [esp+30h]
		mov	[esp+120h], bl
		call	sub_401226
		push	offset dword_443600
		lea	edx, [esp+34h]
		push	3
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		push	offset word_44758A
		mov	ecx, eax
		mov	byte ptr [esp+124h], 18h
		call	sub_401B72
		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_41D0EC
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 4
		call	sub_4014B0
		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_41D212
; ---------------------------------------------------------------------------


loc_41D0EC:				; CODE XREF: ___:0041D074j
		push	94h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		test	eax, eax
		mov	byte ptr [esp+120h], 19h
		jz	short loc_41D114
		mov	ecx, eax
		call	sub_4021C6
		mov	edi, eax
		jmp	short loc_41D116
; ---------------------------------------------------------------------------


loc_41D114:				; CODE XREF: ___:0041D107j
		xor	edi, edi


loc_41D116:				; CODE XREF: ___:0041D112j
		lea	eax, [esp+18h]
		lea	ecx, [edi+11h]
		push	eax
		mov	[esp+124h], bl
		call	sub_401FBE
		lea	ecx, [esp+48h]
		push	ecx
		lea	ecx, [edi+26h]
		call	sub_401FBE
		lea	edx, [esp+60h]
		lea	ecx, [edi+65h]
		push	edx
		call	sub_401FBE
		lea	eax, [esp+78h]
		lea	ecx, [edi+3Bh]
		push	eax
		call	sub_401FBE
		lea	ecx, [esp+90h]
		push	ecx
		lea	ecx, [edi+50h]
		call	sub_401FBE
		lea	edx, [esi+69h]
		lea	ecx, [edi+7Ah]
		push	edx
		call	sub_401FBE
		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_4013D4


loc_41D1A1:				; CODE XREF: ___:0041C726j
					; ___:0041C8A5j ...
		lea	ecx, [esp+0A8h]
		mov	byte ptr [esp+120h], 4
		call	sub_4014B0
		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_41D212:				; CODE XREF: ___:0041CB59j
					; ___:0041D0E7j
		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_41D540	proc near		; CODE XREF: sub_401B36j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41D540
		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_401424
		lea	ecx, [esi+15h]
		mov	[esp+14h+var_4], 0
		call	sub_401424
		lea	ecx, [esi+2Ah]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401424
		lea	ecx, [esi+3Fh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401424
		lea	ecx, [esi+58h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401424
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_41D540	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41D5D0	proc near		; CODE XREF: sub_4014B0j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41D5D0
		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_41D5D0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41D670	proc near		; CODE XREF: sub_4021C6j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41D670
		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_401E6A
		lea	ecx, [esi+11h]
		mov	[esp+14h+var_4], 0
		call	sub_401424
		lea	ecx, [esi+26h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401424
		lea	ecx, [esi+3Bh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401424
		lea	ecx, [esi+50h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401424
		lea	ecx, [esi+65h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401424
		lea	ecx, [esi+7Ah]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_401424
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E0D0
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_41D670	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41D730:				; CODE XREF: ___:00401168j
					; ___:004019E7j
		push	esi
		mov	esi, ecx
		call	sub_4015C3
		test	byte ptr [esp+8], 1
		jz	short loc_41D748
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_41D748:				; CODE XREF: ___:0041D73Dj
		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_41D760	proc near		; CODE XREF: sub_4015C3j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41D760
		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_43E0D0
		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_402031
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_41D760	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41D830:				; CODE XREF: ___:00401C80j
		push	0FFFFFFFFh
		mov	eax, large fs:0
		push	offset loc_43B0F2
		push	eax
		mov	eax, 1158h
		mov	large fs:0, esp
		call	sub_436840
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		push	offset byte_446F60
		lea	edi, [esi+11h]
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jz	loc_41DF38
		lea	ebx, [esi+65h]
		push	offset byte_446F60
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jz	loc_41DF38
		lea	ecx, [esi+26h]
		push	offset byte_446F60
		call	sub_4012EE
		test	eax, eax
		jz	loc_41DF38
		mov	al, [esi+91h]
		test	al, al
		jz	short loc_41D8D1
		push	offset byte_446F60
		lea	ecx, [esi+3Bh]
		call	sub_4012EE
		test	eax, eax
		jz	short loc_41D8C4
		push	offset byte_446F60
		lea	ecx, [esi+50h]
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_41D8D1


loc_41D8C4:				; CODE XREF: ___:0041D8B1j
		mov	[esp+14h], esi
		lea	eax, [esp+14h]
		jmp	loc_41DF40
; ---------------------------------------------------------------------------


loc_41D8D1:				; CODE XREF: ___:0041D8A0j
					; ___:0041D8C2j
		push	offset dword_443C84
		lea	ecx, [esp+20h]
		push	1
		push	ecx
		mov	ecx, edi
		call	sub_4016AE
		push	offset byte_446F60
		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_41D95E
		push	offset dword_443C84
		lea	edx, [esp+20h]
		push	1
		push	edx
		mov	ecx, edi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+1170h], 1
		call	sub_4017E4
		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_41D96F


loc_41D95E:				; CODE XREF: ___:0041D913j
		mov	al, [esi+91h]
		neg	al
		sbb	eax, eax
		and	al, 0C5h
		add	eax, 50h
		mov	ebp, eax


loc_41D96F:				; CODE XREF: ___:0041D95Cj
		push	offset dword_443C84
		lea	ecx, [esp+38h]
		push	0
		push	ecx
		mov	ecx, edi
		call	sub_4016AE
		lea	edx, [esp+34h]
		mov	ecx, edi
		push	edx
		mov	dword ptr [esp+1174h], 2
		call	sub_401FBE
		lea	eax, [esp+64h]
		push	104h
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 2800000h
		lea	ecx, [esp+64h]
		push	ecx
		mov	ecx, ebx
		call	sub_4015D7
		mov	al, [esi+91h]
		test	al, al
		jz	loc_41DB04
		call	sub_401E06
; ---------------------------------------------------------------------------
		lea	edx, [esp+14h]
		mov	ecx, edi
		push	edx
		call	sub_4017E4
		push	eax
		call	sub_401A69
; ---------------------------------------------------------------------------
		add	esp, 8
		test	eax, eax
		jnz	short loc_41DA1C
		lea	ecx, [esi+7Ah]
		call	sub_401681
		mov	cl, [esi+92h]
		push	eax
		mov	al, [esi+93h]
		push	offset dword_443FBC
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		mov	[esp+10h], esi
		lea	edx, [esp+10h]
		jmp	loc_41DF17
; ---------------------------------------------------------------------------


loc_41DA1C:				; CODE XREF: ___:0041D9E7j
		mov	eax, [esp+14h]
		lea	ecx, [esi+50h]
		push	eax
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+3Bh]
		call	sub_4017E4
		push	eax
		call	sub_402243
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41DA73
		lea	ecx, [esi+7Ah]
		call	sub_401681
		mov	cl, [esi+93h]
		mov	dl, [esi+92h]
		push	eax
		push	offset dword_443FAC
		push	ecx
		push	edx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	eax, [esp+10h]
		mov	[esp+10h], esi
		push	eax
		jmp	loc_41DF18
; ---------------------------------------------------------------------------


loc_41DA73:				; CODE XREF: ___:0041DA3Dj
		lea	edi, [esi+7Ah]
		mov	ecx, edi
		call	sub_401681
		mov	cl, [esi+93h]
		mov	dl, [esi+92h]
		push	eax
		push	offset dword_443F9C
		push	ecx
		push	edx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		mov	eax, [esp+14h]
		lea	ecx, [esi+26h]
		push	eax
		push	49h
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		call	sub_4016A9
		add	esp, 10h
		test	eax, eax
		jnz	short loc_41DAF2
		mov	ecx, edi
		call	sub_401681
		mov	cl, [esi+93h]
		mov	dl, [esi+92h]
		push	eax
		push	offset dword_443F8C
		push	ecx
		push	edx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	eax, [esp+10h]
		mov	[esp+10h], esi
		push	eax
		jmp	loc_41DF18
; ---------------------------------------------------------------------------


loc_41DAF2:				; CODE XREF: ___:0041DABDj
		mov	ecx, [esp+14h]
		push	ecx
		call	sub_401D52
		add	esp, 4
		jmp	loc_41DD7B
; ---------------------------------------------------------------------------


loc_41DB04:				; CODE XREF: ___:0041D9C5j
		lea	ecx, [esp+4Ch]
		call	sub_401424
		lea	ecx, [esp+1Ch]
		mov	byte ptr [esp+1170h], 3
		call	sub_401424
		push	ebp
		mov	ecx, edi
		mov	byte ptr [esp+1174h], 4
		call	sub_4017E4
		push	eax
		call	sub_401A8C
		mov	ebx, eax
		add	esp, 8
		cmp	ebx, 0FFFFFFFFh
		mov	[esp+14h], ebx
		jnz	short loc_41DB87
		lea	ecx, [esi+7Ah]
		call	sub_401681
		mov	dl, [esi+93h]
		push	eax
		mov	al, [esi+92h]
		push	offset dword_443F78
		push	edx
		push	eax
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	ecx, [esp+10h]
		mov	[esp+10h], esi
		push	ecx
		mov	ecx, offset byte_4E6ECB
		call	sub_40120D
; ---------------------------------------------------------------------------
		db 53h
		db 90h
		db 0E8h, 0B7h, 0BAh
; ---------------------------------------------------------------------------
		imul	esi, [ecx-17h],	0BEh


loc_41DB87:				; CODE XREF: ___:0041DB40j
		push	ebp
		mov	ecx, edi
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+26h]
		call	sub_4017E4
		push	eax
		lea	edx, [esp+58h]
		push	offset dword_443F14
		push	edx
		call	sub_40102D
		add	esp, 14h
		lea	ecx, [esp+4Ch]
		push	0
		call	sub_4013D9
		push	eax
		lea	ecx, [esp+54h]
		call	sub_4017E4
		push	eax
		push	ebx
		nop
		call	near ptr 71AB428Ah
		lea	edi, [esi+7Ah]
		mov	ecx, edi
		call	sub_401681
		mov	cl, [esi+92h]
		push	eax
		mov	al, [esi+93h]
		push	offset dword_443F04
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		push	offset dword_443F00
		lea	ecx, [esi+65h]
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 77C3F010h
		mov	ebx, eax
		add	esp, 8
		test	ebx, ebx
		jnz	short loc_41DC80
		mov	ecx, edi
		call	sub_401681
		mov	dl, [esi+93h]
		push	eax
		mov	al, [esi+92h]
		push	offset dword_443EF0
		push	edx
		push	eax
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	ecx, [esp+10h]
		mov	[esp+10h], esi
		push	ecx
		mov	ecx, offset byte_4E6ECB
		call	sub_40120D
; ---------------------------------------------------------------------------
		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	loc_41DF4B
; ---------------------------------------------------------------------------


loc_41DC80:				; CODE XREF: ___:0041DC0Bj
					; ___:0041DCB4j ...
		mov	eax, [esp+14h]
		push	0
		lea	edx, [esp+16Ch]
		push	1000h
		push	edx
		push	eax
		nop
		call	near ptr 71AB615Ah
		mov	ebp, eax
		test	ebp, ebp
		jle	short loc_41DCF8
		cmp	ebp, 1000h
		jge	short loc_41DCB0
		mov	byte ptr [esp+ebp+168h], 0


loc_41DCB0:				; CODE XREF: ___:0041DCA6j
		xor	edi, edi
		test	ebp, ebp
		jle	short loc_41DC80


loc_41DCB6:				; CODE XREF: ___:0041DCD5j
		push	4
		lea	ecx, [esp+edi+16Ch]
		push	offset dword_443EE8
		push	ecx
		call	near ptr 77C47A50h
		nop
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41DCD9
		inc	edi
		cmp	edi, ebp
		jl	short loc_41DCB6
		jmp	short loc_41DC80
; ---------------------------------------------------------------------------


loc_41DCD9:				; CODE XREF: ___:0041DCD0j
		add	edi, 4
		cmp	edi, ebp
		jge	short loc_41DCF8


loc_41DCE0:				; CODE XREF: ___:0041DCF6j
		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_41DCE0


loc_41DCF8:				; CODE XREF: ___:0041DC9Ej
					; ___:0041DCDEj ...
		mov	edi, [esp+14h]
		push	0
		lea	eax, [esp+16Ch]
		push	1000h
		push	eax
		push	edi
		call	near ptr 71AB615Ah
		nop
		mov	ebp, eax
		test	ebp, ebp
		jle	short loc_41DD48
		cmp	ebp, 1000h
		jge	short loc_41DD28
		mov	byte ptr [esp+ebp+168h], 0


loc_41DD28:				; CODE XREF: ___:0041DD1Ej
		xor	edi, edi
		test	ebp, ebp
		jle	short loc_41DCF8


loc_41DD2E:				; CODE XREF: ___:0041DD44j
		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_41DD2E
		jmp	short loc_41DCF8
; ---------------------------------------------------------------------------


loc_41DD48:				; CODE XREF: ___:0041DD16j
		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_41DD7B:				; CODE XREF: ___:0041DAFFj
		mov	al, [esi+90h]
		test	al, al
		jnz	loc_41DE17
		lea	ebp, [esi+65h]
		mov	ecx, ebp
		call	sub_4017E4
		lea	edi, [esi+7Ah]
		push	eax
		push	offset dword_443ED4
		mov	ecx, edi
		call	sub_401681
		mov	dl, [esi+93h]
		push	eax
		mov	al, [esi+92h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		mov	al, [esi+8Fh]
		add	esp, 18h
		test	al, al
		jz	loc_41DF0F
		push	offset byte_446F60
		mov	ecx, ebp
		call	sub_4017E4
		push	eax
		call	sub_401299
		add	esp, 8
		mov	ecx, ebp
		call	sub_4017E4
		push	eax
		push	offset dword_443EC8
		mov	ecx, edi
		call	sub_401681
		mov	cl, [esi+93h]
		mov	dl, [esi+92h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h
		jmp	loc_41DF0F
; ---------------------------------------------------------------------------


loc_41DE17:				; CODE XREF: ___:0041DD83j
		lea	ebx, [esi+65h]
		mov	ecx, ebx
		call	sub_4017E4
		lea	edi, [esi+7Ah]
		push	eax
		push	offset dword_443EB4
		mov	ecx, edi
		call	sub_401681
		mov	cl, [esi+92h]
		push	eax
		mov	al, [esi+93h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h
		lea	edx, [esp+1Ch]
		push	0
		push	5
		push	14h
		push	1
		push	4
		push	10h
		push	15h
		push	51h
		push	edx
		call	sub_4019B5
		add	esp, 24h
		mov	ecx, eax
		mov	byte ptr [esp+1170h], 5
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4014D3
		push	eax
		call	sub_402149
		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_41DEEA
		mov	al, byte_4478C6
		test	al, al
		jz	short loc_41DEB9
		push	offset dword_447864
		mov	ecx, offset dword_448DA0
		call	sub_401447


loc_41DEB9:				; CODE XREF: ___:0041DEA8j
		mov	al, byte_44790F
		test	al, al
		jz	short loc_41DED1
		push	offset byte_44793F
		mov	ecx, offset dword_448DA0
		call	sub_401942


loc_41DED1:				; CODE XREF: ___:0041DEC0j
		mov	ecx, offset dword_448DA0
		call	sub_401E5B
		push	1
		mov	byte_4E6E74, 0
		nop
		call	near ptr 77C39E7Eh


loc_41DEEA:				; CODE XREF: ___:0041DE9Fj
		mov	ecx, edi
		call	sub_4014D3
		mov	cl, [esi+92h]
		push	eax
		mov	al, [esi+93h]
		push	offset dword_4436FC
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118


loc_41DF0F:				; CODE XREF: ___:0041DDC7j
					; ___:0041DE12j
		mov	[esp+18h], esi
		lea	edx, [esp+18h]


loc_41DF17:				; CODE XREF: ___:0041DA17j
		push	edx


loc_41DF18:				; CODE XREF: ___:0041DA6Ej
					; ___:0041DAEDj
		mov	ecx, offset byte_4E6ECB
		call	sub_40120D
; ---------------------------------------------------------------------------
		lea	ecx, [esp+34h]
		mov	dword ptr [esp+1170h], 0FFFFFFFFh
		call	sub_401226
		jmp	short loc_41DF4B
; ---------------------------------------------------------------------------


loc_41DF38:				; CODE XREF: ___:0041D866j
					; ___:0041D87Dj ...
		mov	[esp+10h], esi
		lea	eax, [esp+10h]


loc_41DF40:				; CODE XREF: ___:0041D8CCj
		push	eax
		mov	ecx, offset byte_4E6ECB
		call	sub_40120D
; ---------------------------------------------------------------------------


loc_41DF4B:				; CODE XREF: ___:0041DC7Bj
					; ___:0041DF36j
		mov	ecx, [esp+1168h]
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 1164h
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 1D0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_41E140	proc near		; CODE XREF: sub_401B90j

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41E140
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	0
		push	14h
		push	0Fh
		push	0Fh
		push	2
		push	5
		push	12h
		push	4Fh
		push	3
		lea	eax, [esp+64h+var_3C]
		push	10h
		mov	esi, ecx
		push	eax
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	[esp+44h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_41E140	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	0Eh
		push	17h
		push	0Fh
		push	4
		push	14h
		push	15h
		push	8
		push	13h
		push	4Fh
		push	3
		lea	edx, [esp+30h]
		push	10h
		push	edx
		call	sub_4019B5
		add	esp, 34h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+40h], 1
		call	sub_4017E4
		push	eax
		lea	eax, [esi+32h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	6
		push	6
		push	0Fh
		push	7
		push	0Fh
		push	0Ch
		push	4Fh
		push	3
		lea	ecx, [esp+40h]
		push	10h
		push	ecx
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+40h], 2
		call	sub_4017E4
		add	esi, 60h
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+1Ch]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+34h]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41E2C0:				; CODE XREF: ___:004010B4j
		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+10h]
		mov	esi, ecx
		lea	ebx, [edi+7Eh]
		lea	ecx, [esi+4]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_41E31B
		push	offset dword_443FEC
		lea	ecx, [edi+69h]
		call	sub_401681
		mov	cl, [edi+93h]
		push	eax
		mov	al, [edi+94h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 14h
		push	0
		push	6
		nop
		call	near ptr 28A0484h
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_41E31B:				; CODE XREF: ___:0041E2DEj
		lea	ecx, [esi+32h]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_41E36A
		push	offset dword_443FE0
		lea	ecx, [edi+69h]
		call	sub_401681
		mov	dl, [edi+94h]
		push	eax
		mov	al, [edi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 14h
		push	0
		push	5
		nop
		call	near ptr 28A0484h
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_41E36A:				; CODE XREF: ___:0041E32Dj
		lea	ecx, [esi+60h]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_41E3B1
		push	offset dword_443FD0
		lea	ecx, [edi+69h]
		call	sub_401681
		mov	cl, [edi+94h]
		mov	dl, [edi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 14h
		push	0
		push	4
		call	near ptr 28A0484h
		nop


loc_41E3B1:				; CODE XREF: ___:0041E37Cj
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_41E400	proc near		; CODE XREF: sub_401F5Fj

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_41E400
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	edi
		push	0
		push	14h
		push	13h
		push	9
		push	0Ch
		push	4Fh
		push	0Ch
		push	12h
		push	14h
		push	3
		lea	eax, [esp+6Ch+var_3C]
		push	10h
		mov	esi, ecx
		push	eax
		call	sub_4019B5
		add	esp, 30h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_41E400	endp

; ---------------------------------------------------------------------------
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	0Ch
		push	0Ch
		push	9
		push	0Bh
		push	4Fh
		push	0Ch
		push	12h
		push	14h
		push	3
		lea	edx, [esp+30h]
		push	10h
		push	edx
		call	sub_4019B5
		add	esp, 30h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 1
		call	sub_4017E4
		push	eax
		lea	eax, [esi+32h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	3
		push	16h
		push	13h
		push	14h
		push	13h
		push	9
		push	0Ch
		push	4Fh
		push	0Ch
		push	12h
		push	14h
		push	3
		lea	ecx, [esp+3Ch]
		push	10h
		push	ecx
		call	sub_4019B5
		add	esp, 3Ch
		mov	dword ptr [esp+40h], 2
		push	esi
		mov	ecx, eax
		call	sub_4017E4
		lea	edx, [esi+8Eh]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	3
		push	16h
		push	13h
		push	0Ch
		push	0Ch
		push	9
		push	0Bh
		push	4Fh
		push	0Ch
		push	12h
		push	14h
		push	3
		lea	eax, [esp+3Ch]
		push	10h
		push	eax
		call	sub_4019B5
		add	esp, 3Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 3
		call	sub_4017E4
		lea	ecx, [esi+0BCh]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	4
		push	9
		push	10h
		push	0Ch
		push	0Ch
		push	9
		push	0Bh
		push	4Fh
		push	0Ch
		push	12h
		push	14h
		push	3
		lea	edx, [esp+54h]
		push	10h
		push	edx
		call	sub_4019B5
		add	esp, 3Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 4
		call	sub_4017E4
		add	esi, 60h
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+20h]
		mov	[esp+40h], edi
		call	sub_401226
		mov	ecx, [esp+38h]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 80h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41E660:				; CODE XREF: ___:00401613j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_43B1E0
		push	eax
		mov	large fs:0, esp
		sub	esp, 44h
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+60h]
		push	edi
		mov	edi, ecx
		lea	ebx, [esi+7Eh]
		lea	ecx, [edi+4]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41E7FA
		lea	eax, [esp+64h]
		lea	ecx, [esp+18h]
		push	eax
		call	sub_4018D9
; ---------------------------------------------------------------------------
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+5Ch], 0
		push	ecx
		call	sub_4011D6
		add	esp, 4
		test	al, al
		jz	loc_41E7E2
		push	0
		push	7Bh
		push	25h
		push	9
		push	25h
		push	25h
		push	9
		push	5
		push	1Dh
		push	23h
		push	1Fh
		lea	edx, [esp+50h]
		push	79h
		push	edx
		call	sub_4019B5
		add	esp, 34h
		mov	edi, eax
		lea	ebx, [esi+69h]
		mov	byte ptr [esp+5Ch], 1
		mov	ecx, ebx
		call	sub_4014D3
		push	eax
		mov	ecx, edi
		call	sub_401681
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	ecx, [esp+24h]
		mov	byte ptr [esp+5Ch], 0
		call	sub_401226
		lea	ecx, [esp+10h]
		call	sub_401703
		lea	edx, [esp+14h]
		lea	ecx, [esp+18h]
		push	edx
		xor	edi, edi
		call	sub_4014D8
		mov	eax, [eax]
		lea	ecx, [esp+14h]
		push	ecx
		lea	ecx, [esp+1Ch]
		mov	[esp+14h], eax
		call	sub_40196F
		push	eax
		lea	ecx, [esp+14h]
		call	sub_401802
		test	al, al
		jz	short loc_41E7E2
		mov	ebp, dword_50F8D0


loc_41E76E:				; CODE XREF: ___:0041E7E0j
		lea	ecx, [esp+10h]
		inc	edi
		call	sub_40122B
		mov	ecx, eax
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+14h]
		call	sub_40122B
		mov	edx, [eax+15h]
		mov	ecx, ebx
		push	edx
		push	edi
		push	offset dword_444024
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 20h
		push	5DCh
		call	ebp
		lea	ecx, [esp+10h]
		call	sub_40107D
		lea	edx, [esp+14h]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_40196F
		push	eax
		lea	ecx, [esp+14h]
		call	sub_401802
		test	al, al
		jnz	short loc_41E76E


loc_41E7E2:				; CODE XREF: ___:0041E6C2j
					; ___:0041E766j
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+5Ch], 0FFFFFFFFh
		call	sub_401816
; ---------------------------------------------------------------------------
		mov	al, 1
		jmp	loc_41EC17
; ---------------------------------------------------------------------------


loc_41E7FA:				; CODE XREF: ___:0041E697j
		lea	ecx, [edi+32h]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41E8EE
		push	offset dword_443600
		lea	eax, [esp+28h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		push	offset byte_446F60
		mov	ecx, eax
		mov	dword ptr [esp+60h], 2
		call	sub_4012EE
		test	eax, eax
		setz	bl
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		test	bl, bl
		jnz	loc_41EC15
		push	offset dword_443600
		lea	ecx, [esp+28h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+5Ch], 3
		call	sub_4017E4
		push	eax
		call	sub_4015FA
; ---------------------------------------------------------------------------
		add	esp, 4
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+5Ch], 4
		call	sub_4014D3
		push	eax
		push	offset dword_44401C
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		mov	al, 1
		jmp	loc_41EC17
; ---------------------------------------------------------------------------


loc_41E8EE:				; CODE XREF: ___:0041E80Cj
		lea	ecx, [edi+8Eh]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41EA55
		lea	edx, [esp+64h]
		lea	ecx, [esp+18h]
		push	edx
		call	sub_4016E0
; ---------------------------------------------------------------------------
		lea	eax, [esp+18h]
		mov	ebx, 5
		push	eax
		mov	[esp+60h], ebx
		call	sub_402144
		add	esp, 4
		test	al, al
		jz	loc_41EA3D
		push	0
		push	3Eh
		push	13h
		push	ebx
		push	3
		push	9
		push	16h
		push	12h
		push	ebx
		push	13h
		lea	ecx, [esp+4Ch]
		push	3Dh
		push	ecx
		call	sub_4019B5
		add	esp, 30h
		mov	edi, eax
		lea	ebp, [esi+69h]
		mov	byte ptr [esp+5Ch], 6
		mov	ecx, ebp
		call	sub_4014D3
		push	eax
		mov	ecx, edi
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], bl
		call	sub_401226
		lea	ecx, [esp+10h]
		call	sub_401B40
		lea	ecx, [esp+14h]
		xor	edi, edi
		push	ecx
		lea	ecx, [esp+1Ch]
		call	sub_40145B
		mov	edx, [eax]
		lea	eax, [esp+14h]
		push	eax
		lea	ecx, [esp+1Ch]
		mov	[esp+14h], edx
		call	sub_4013ED
		push	eax
		lea	ecx, [esp+14h]
		call	sub_4012BC
		test	al, al
		jz	short loc_41EA3D
		mov	ebx, dword_50F8D0


loc_41E9D6:				; CODE XREF: ___:0041EA3Bj
		lea	ecx, [esp+10h]
		inc	edi
		call	sub_401055
		mov	ecx, eax
		call	sub_4017E4
		push	eax
		push	edi
		push	offset dword_444010
		mov	ecx, ebp
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 1Ch
		push	5DCh
		call	ebx
		lea	ecx, [esp+10h]
		call	sub_40182A
		lea	eax, [esp+14h]
		lea	ecx, [esp+18h]
		push	eax
		call	sub_4013ED
		push	eax
		lea	ecx, [esp+14h]
		call	sub_4012BC
		test	al, al
		jnz	short loc_41E9D6


loc_41EA3D:				; CODE XREF: ___:0041E92Fj
					; ___:0041E9CEj
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+5Ch], 0FFFFFFFFh
		call	sub_401253
; ---------------------------------------------------------------------------
		mov	al, 1
		jmp	loc_41EC17
; ---------------------------------------------------------------------------


loc_41EA55:				; CODE XREF: ___:0041E903j
		lea	ecx, [edi+0BCh]
		call	sub_4014D3
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41EB4C
		push	offset dword_443600
		lea	ecx, [esp+28h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		push	offset byte_446F60
		mov	ecx, eax
		mov	dword ptr [esp+60h], 7
		call	sub_4012EE
		test	eax, eax
		setz	bl
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		test	bl, bl
		jnz	loc_41EC15
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+5Ch], 8
		call	sub_4017E4
		push	eax
		call	sub_4019FB
		add	esp, 4
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		push	offset dword_443600
		lea	eax, [esp+28h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+5Ch], 9
		call	sub_4014D3
		push	eax
		push	offset dword_444008
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		mov	al, 1
		jmp	loc_41EC17
; ---------------------------------------------------------------------------


loc_41EB4C:				; CODE XREF: ___:0041EA6Aj
		lea	ecx, [edi+60h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_41EC15
		push	offset dword_443600
		lea	eax, [esp+28h]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		push	offset byte_446F60
		mov	ecx, eax
		mov	dword ptr [esp+60h], 0Ah
		call	sub_4012EE
		test	eax, eax
		setz	bl
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+24h]
		mov	[esp+5Ch], edi
		call	sub_401226
		test	bl, bl
		jnz	short loc_41EC15
		push	offset dword_443600
		lea	ecx, [esp+40h]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+5Ch], 0Bh
		call	sub_4017E4
		push	eax
		call	near ptr 77C1BF18h
		nop
		add	esp, 4
		lea	ecx, [esp+3Ch]
		mov	ebx, eax
		mov	[esp+5Ch], edi
		call	sub_401226
		test	ebx, ebx
		jz	short loc_41EC15
		push	ebx
		push	offset dword_443FFC
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		push	ebx
		call	sub_4018A7
		add	esp, 1Ch
		jmp	short loc_41EC17
; ---------------------------------------------------------------------------


loc_41EC15:				; CODE XREF: ___:0041E850j
					; ___:0041EAAEj ...
		xor	al, al


loc_41EC17:				; CODE XREF: ___:0041E7F5j
					; ___:0041E8E9j ...
		mov	ecx, [esp+54h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 50h
		retn	4
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 180h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_41EDB0:				; CODE XREF: ___:00401FE6j
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset loc_43B210
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		mov	edi, dword_50F8D0
		mov	[ebp-10h], esp
		mov	esi, ecx
		mov	dword ptr [ebp-4], 0


loc_41EDE0:				; CODE XREF: ___:0041EDF1j
		mov	al, [esi+0ABh]
		test	al, al
		jnz	short loc_41EDF3
		push	3E8h
		call	edi
		jmp	short loc_41EDE0
; ---------------------------------------------------------------------------


loc_41EDF3:				; CODE XREF: ___:0041EDE8j
		mov	al, [esi+0ACh]
		lea	ecx, [esi+15h]
		push	eax
		push	ecx
		mov	ecx, offset byte_4472A7
		call	sub_401A32
		lea	edx, [ebp-14h]
		mov	ecx, offset byte_4E6ECB
		push	edx
		mov	[ebp-14h], esi
		call	sub_40120D
; ---------------------------------------------------------------------------


loc_41EE19:				; DATA XREF: ___:0041EE2Co
		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_41EE19
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41EE70	proc near		; CODE XREF: sub_401DE3j

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		mov	[esi+11h], eax
		mov	cl, [eax+94h]
		mov	[esi+0A9h], cl
		mov	dl, [eax+93h]
		mov	[esi+0A8h], dl
		mov	cl, [eax+95h]
		add	eax, 15h
		mov	[esi+0AAh], cl
		push	eax
		lea	ecx, [esi+2Ah]
		call	sub_401FBE
		mov	edx, [esi+11h]
		lea	ecx, [esi+69h]
		add	edx, 54h
		push	edx
		call	sub_401FBE
		mov	eax, [esi+11h]
		lea	ecx, [esi+54h]
		add	eax, 3Fh
		push	eax
		call	sub_401FBE
		mov	ecx, [esi+11h]
		add	ecx, 2Ah
		push	ecx
		lea	ecx, [esi+3Fh]
		call	sub_401FBE
		mov	edx, [esi+11h]
		lea	ecx, [esi+15h]
		push	edx
		call	sub_401FBE
		mov	al, [esp+4+arg_4]
		mov	byte ptr [esi+0ABh], 1
		mov	[esi+0ACh], al
		pop	esi
		retn	8
sub_41EE70	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41EF30:				; CODE XREF: ___:004020A9j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_43B28E
		push	eax
		mov	eax, 19B4h
		mov	large fs:0, esp
		call	sub_436840
		push	esi
		push	edi
		mov	edi, ecx
		xor	eax, eax
		mov	[esp+0Ch], edi
		mov	dword ptr [esp+2Ch], 10h
		lea	esi, [edi+19h]
		mov	ecx, esi
		mov	[ecx], eax
		mov	[ecx+4], eax
		mov	[ecx+8], eax
		mov	[ecx+0Ch], eax
		mov	word ptr [esi],	2
		mov	[edi+1Dh], eax
		mov	dx, word ptr dword_44767F
		push	edx
		nop
		call	near ptr 71AB2B66h
		push	6
		push	1
		push	2
		mov	[edi+1Bh], ax
		nop
		call	near ptr 71AB3B91h
		cmp	eax, 0FFFFFFFFh
		mov	[edi+15h], eax
		jnz	short loc_41EFB7
		lea	eax, [esp+0Ch]
		mov	ecx, offset byte_4E6ECB
		push	eax
		mov	[esp+10h], edi
		call	sub_40120D
; ---------------------------------------------------------------------------
		jmp	loc_41F65A
; ---------------------------------------------------------------------------


loc_41EFB7:				; CODE XREF: ___:0041EF9Dj
		push	10h
		push	esi
		push	eax
		call	near ptr 71AB3E00h
		nop
		test	eax, eax
		jz	short loc_41EFE7
		mov	ecx, [edi+15h]
		push	ecx
		nop
		call	near ptr 71AB9639h
		lea	edx, [esp+0Ch]
		mov	ecx, offset byte_4E6ECB
		push	edx
		mov	[esp+10h], edi
		call	sub_40120D
; ---------------------------------------------------------------------------
		jmp	loc_41F65A
; ---------------------------------------------------------------------------


loc_41EFE7:				; CODE XREF: ___:0041EFC3j
		mov	al, byte_4E6E74
		test	al, al
		jz	loc_41F650
		push	ebx
		mov	ebx, dword_50FB08
		push	ebp
		mov	ebp, dword_50FC8C


loc_41F002:				; CODE XREF: ___:0041F648j
		mov	eax, [edi+15h]
		push	0Ah
		push	eax
		call	near ptr 71AB88D3h
		nop
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41F01D
		push	0FAh
		jmp	loc_41F63B
; ---------------------------------------------------------------------------


loc_41F01D:				; CODE XREF: ___:0041F011j
		mov	eax, [edi+15h]
		lea	ecx, [esp+34h]
		lea	edx, [esp+134h]
		push	ecx
		push	edx
		push	eax
		call	near ptr 71AC1028h
		nop
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	loc_41F636
		xor	ecx, ecx
		lea	edx, [esp+38h]
		mov	[esp+20h], ecx
		lea	eax, [esp+20h]
		mov	[esp+24h], ecx
		push	edx
		mov	[esp+2Ch], ecx
		push	eax
		push	esi
		mov	dword ptr [esp+44h], 10h
		mov	[esp+38h], ecx
		nop
		call	near ptr 71AC0B50h
		mov	eax, [esp+24h]
		test	al, al
		jz	loc_41F641
		mov	cl, byte_447DE8
		test	cl, cl
		jz	short loc_41F0CF
		mov	edx, [esp+27h]
		mov	ecx, dword_44767F
		and	edx, 0FFh
		push	ecx
		mov	ecx, [esp+2Ah]
		push	edx
		mov	edx, [esp+2Dh]
		and	ecx, 0FFh
		and	edx, 0FFh
		push	ecx
		and	eax, 0FFh
		push	edx
		push	eax
		push	offset dword_4440BC
		mov	ecx, offset dword_447988
		call	sub_4014D3
		push	eax
		push	0
		push	0
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 28h


loc_41F0CF:				; CODE XREF: ___:0041F07Ej
		lea	ecx, [esp+5Ch]
		call	sub_401424
		push	1000h
		push	1000h
		lea	ecx, [esp+64h]
		mov	dword ptr [esp+19D4h], 0
		call	sub_401C5D
		push	eax
		call	sub_4015EB
		add	esp, 8
		lea	eax, [esp+5Ch]
		lea	ecx, [esp+74h]
		push	eax
		call	sub_4014C9
		lea	ecx, [esp+5Ch]
		mov	byte ptr [esp+19CCh], 1
		push	ecx
		lea	ecx, [esp+78h]
		call	sub_401FBE
		mov	edi, offset dword_4440B4
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	offset dword_4440B4
		push	esi
		call	ebp
		push	0
		lea	edx, [esp+1C8h]
		push	800h
		push	edx
		push	esi
		call	sub_401280
		mov	edi, offset dword_4440AC
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 10h
		repne scasb
		not	ecx
		dec	ecx
		push	0
		push	ecx
		push	offset dword_4440AC
		push	esi
		call	ebp
		push	0
		lea	eax, [esp+1C8h]
		push	800h
		push	eax
		push	esi
		call	sub_401280
		mov	edi, offset dword_4440A4
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 10h
		repne scasb
		not	ecx
		dec	ecx
		push	0
		push	ecx
		push	offset dword_4440A4
		push	esi
		call	ebp
		push	0
		lea	ecx, [esp+1C8h]
		push	800h
		push	ecx
		push	esi
		call	sub_401280
		mov	edi, offset dword_44409C
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 10h
		repne scasb
		push	0
		not	ecx
		dec	ecx
		push	ecx
		push	offset dword_44409C
		push	esi
		call	ebp
		push	0
		lea	edx, [esp+1C8h]
		push	800h
		push	edx
		push	esi
		call	sub_401280
		add	esp, 10h
		lea	eax, [esp+1C4h]
		lea	ecx, [esp+8Ch]
		push	eax
		call	sub_401861
		push	offset dword_443600
		lea	ecx, [esp+48h]
		push	1
		push	ecx
		lea	ecx, [esp+98h]
		mov	byte ptr [esp+19D8h], 2
		call	sub_4016AE
		push	offset dword_444098
		lea	edx, [esp+0D8h]
		push	0
		push	edx
		lea	ecx, [esp+50h]
		mov	byte ptr [esp+19D8h], 3
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+19CCh], 4
		call	sub_4017E4
		push	eax
		call	ebx
		add	esp, 4
		lea	ecx, [esp+0D4h]
		mov	edi, eax
		mov	byte ptr [esp+19CCh], 3
		call	sub_401226
		push	offset dword_444098
		lea	eax, [esp+120h]
		push	1
		push	eax
		lea	ecx, [esp+50h]
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+19CCh], 5
		call	sub_4017E4
		push	eax
		call	ebx
		add	esp, 4
		lea	ecx, [esp+11Ch]
		mov	[esp+1Ch], eax
		mov	byte ptr [esp+19CCh], 3
		call	sub_401226
		push	offset dword_444098
		lea	ecx, [esp+0A8h]
		push	2
		push	ecx
		lea	ecx, [esp+50h]
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+19CCh], 6
		call	sub_4017E4
		push	eax
		call	ebx
		add	esp, 4
		lea	ecx, [esp+0A4h]
		mov	[esp+3Ch], eax
		mov	byte ptr [esp+19CCh], 3
		call	sub_401226
		push	offset dword_444098
		lea	edx, [esp+108h]
		push	3
		push	edx
		lea	ecx, [esp+50h]
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+19CCh], 7
		call	sub_4017E4
		push	eax
		call	ebx
		add	esp, 4
		lea	ecx, [esp+104h]
		mov	[esp+40h], eax
		mov	byte ptr [esp+19CCh], 3
		call	sub_401226
		push	offset dword_444098
		lea	eax, [esp+0C0h]
		push	4
		push	eax
		lea	ecx, [esp+50h]
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+19CCh], 8
		call	sub_4017E4
		push	eax
		call	ebx
		add	esp, 4
		lea	ecx, [esp+0BCh]
		mov	[esp+10h], eax
		mov	byte ptr [esp+19CCh], 3
		call	sub_401226
		push	offset dword_444098
		lea	ecx, [esp+0F0h]
		push	5
		push	ecx
		lea	ecx, [esp+50h]
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+19CCh], 9
		call	sub_4017E4
		push	eax
		call	ebx
		add	esp, 4
		lea	ecx, [esp+0ECh]
		mov	[esp+18h], eax
		mov	byte ptr [esp+19CCh], 3
		call	sub_401226
		mov	dl, [esp+10h]
		mov	al, [esp+18h]
		mov	ecx, [esp+40h]
		mov	[esp+31h], dl
		mov	edx, [esp+3Ch]
		mov	[esp+30h], al
		mov	eax, [esp+30h]
		push	ecx
		and	eax, 0FFFFh
		push	edx
		mov	[esp+18h], eax
		mov	eax, [esp+24h]
		push	eax
		push	edi
		lea	ecx, [esp+154h]
		push	offset dword_443CB4
		push	ecx
		nop
		call	near ptr byte_5EA1BD
		mov	edi, offset dword_44409C
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 18h
		repne scasb
		not	ecx
		dec	ecx
		push	0
		push	ecx
		push	offset dword_44409C
		push	esi
		call	ebp
		push	0
		lea	edx, [esp+1C8h]
		push	800h
		push	edx
		push	esi
		call	sub_401280
		mov	edi, offset dword_444090
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 10h
		repne scasb
		not	ecx
		dec	ecx
		push	0
		push	ecx
		push	offset dword_444090
		push	esi
		call	ebp
		mov	eax, [esp+10h]
		lea	ecx, [esp+144h]
		push	eax
		push	ecx
		call	sub_401A8C
		add	esp, 8
		lea	ecx, [esp+74h]
		mov	[esp+10h], eax
		push	offset dword_44408C
		call	sub_4017E4
		push	eax
		call	near ptr 77C3F010h
		nop
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		mov	[esp+18h], edi
		jz	loc_41F595
		cmp	dword ptr [esp+10h], 0FFFFFFFFh
		jz	loc_41F595
		push	2
		push	0
		push	edi
		call	near ptr 77C4139Ch
		nop
		push	edi
		nop
		call	near ptr 77C41574h
		push	0
		push	0
		push	edi
		mov	[esp+38h], eax
		call	near ptr 77C4139Ch
		nop
		add	esp, 1Ch


loc_41F4C0:				; CODE XREF: ___:0041F511j
		mov	edx, [esp+18h]
		mov	ecx, 400h
		xor	eax, eax
		lea	edi, [esp+9C4h]
		rep stosd
		push	edx
		push	1000h
		lea	eax, [esp+9CCh]
		push	1
		push	eax
		call	near ptr 77C411FBh
		nop
		mov	ecx, [esp+28h]
		mov	edi, eax
		add	esp, 10h
		test	byte ptr [ecx+0Ch], 20h
		jnz	short loc_41F513
		mov	eax, [esp+10h]
		push	0
		lea	edx, [esp+9C8h]
		push	edi
		push	edx
		push	eax
		call	ebp
		cmp	edi, 1000h
		jz	short loc_41F4C0


loc_41F513:				; CODE XREF: ___:0041F4F7j
		mov	eax, [esp+14h]
		mov	edx, [eax+11h]
		inc	edx
		mov	[eax+11h], edx
		mov	cl, byte_447DE8
		test	cl, cl
		mov	eax, edx
		jz	short loc_41F57C
		mov	edx, [esp+27h]
		mov	ecx, [esp+1Ch]
		push	eax
		mov	eax, [esp+2Ah]
		and	edx, 0FFh
		push	ecx
		mov	ecx, [esp+2Dh]
		push	edx
		mov	edx, [esp+30h]
		and	eax, 0FFh
		and	ecx, 0FFh
		push	eax
		and	edx, 0FFh
		push	ecx
		push	edx
		push	offset dword_444050
		mov	ecx, offset dword_447988
		call	sub_4014D3
		push	eax
		push	0
		push	0
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 2Ch


loc_41F57C:				; CODE XREF: ___:0041F528j
		mov	eax, [esp+18h]
		push	eax
		call	near ptr 77C40AB1h
		nop
		mov	ecx, [esp+14h]
		add	esp, 4
		push	ecx
		call	near ptr 71AB9639h
		nop


loc_41F595:				; CODE XREF: ___:0041F48Bj
					; ___:0041F496j
		mov	edi, offset dword_444048
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	0
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	offset dword_444048
		push	esi
		call	ebp
		push	0
		lea	edx, [esp+1C8h]
		push	800h
		push	edx
		push	esi
		call	sub_401280
		mov	edi, offset dword_444040
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 10h
		repne scasb
		not	ecx
		dec	ecx
		push	0
		push	ecx
		push	offset dword_444040
		push	esi
		call	ebp
		push	esi
		nop
		call	near ptr 71AB9639h
		lea	ecx, [esp+44h]
		mov	byte ptr [esp+19CCh], 2
		call	sub_401226
		lea	ecx, [esp+8Ch]
		mov	byte ptr [esp+19CCh], 1
		call	sub_401226
		lea	ecx, [esp+74h]
		mov	byte ptr [esp+19CCh], 0
		call	sub_401226
		lea	ecx, [esp+5Ch]
		mov	dword ptr [esp+19CCh], 0FFFFFFFFh
		call	sub_401226
		mov	edi, [esp+14h]


loc_41F636:				; CODE XREF: ___:0041F039j
		push	9C4h


loc_41F63B:				; CODE XREF: ___:0041F018j
		nop
		call	near ptr 2821E84h


loc_41F641:				; CODE XREF: ___:0041F070j
		mov	al, byte_4E6E74
		test	al, al
		jnz	loc_41F002
		pop	ebp
		pop	ebx


loc_41F650:				; CODE XREF: ___:0041EFEEj
		mov	eax, [edi+15h]
		push	eax
		nop
		call	near ptr 71AB9639h


loc_41F65A:				; CODE XREF: ___:0041EFB2j
					; ___:0041EFE2j
		mov	ecx, [esp+19BCh]
		pop	edi
		xor	eax, eax
		pop	esi
		mov	large fs:0, ecx
		add	esp, 19C0h
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 1E0h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_41F860:				; CODE XREF: ___:00401230j
		push	0FFFFFFFFh
		push	offset loc_43B2D0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 84h
		push	ebx
		push	ebp
		push	esi
		push	71h
		call	sub_40197E
		add	esp, 4
		cmp	eax, 0FFFFFFFFh
		mov	[esp+0Ch], eax
		jnz	short loc_41F89D
		mov	byte_4E6EC9, 0
		jmp	loc_41FA01
; ---------------------------------------------------------------------------


loc_41F89D:				; CODE XREF: ___:0041F88Fj
		mov	cl, byte_4472AB
		xor	ebx, ebx
		cmp	cl, bl
		mov	byte_4E6EC9, 1
		jnz	loc_41F9F4
		lea	ecx, [esp+10h]
		push	ecx
		push	eax
		call	sub_401FEB
		mov	ebp, eax
		add	esp, 8
		cmp	ebp, 0FFFFFFFFh
		jz	loc_41F9E7
		push	edi
		lea	ecx, [esp+24h]
		call	sub_401424
		mov	[esp+9Ch], ebx
		call	sub_401EEC
		mov	esi, dword_50FABC
		call	esi
		cdq
		mov	ecx, 3
		push	offset byte_446F60
		idiv	ecx
		lea	ecx, [esp+28h]
		mov	edi, edx
		add	edi, 0Ah
		call	sub_4015D7
		cmp	edi, ebx
		jle	short loc_41F966


loc_41F90A:				; CODE XREF: ___:0041F964j
		lea	ecx, [esp+3Ch]
		call	sub_401424
		lea	edx, [esp+24h]
		lea	ecx, [esp+3Ch]
		push	edx
		mov	byte ptr [esp+0A0h], 1
		call	sub_401FBE
		call	esi
		cdq
		mov	ecx, 1Ah
		idiv	ecx
		lea	ecx, [esp+3Ch]
		add	edx, 61h
		push	edx
		call	sub_4017E4
		push	eax
		lea	edx, [esp+2Ch]
		push	offset dword_443E74
		push	edx
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+3Ch]
		mov	[esp+9Ch], bl
		call	sub_401226
		dec	edi
		jnz	short loc_41F90A


loc_41F966:				; CODE XREF: ___:0041F908j
		push	0Ah
		lea	ecx, [esp+28h]
		call	sub_40146F
		mov	[eax], bl
		mov	ecx, 10h
		xor	eax, eax
		lea	edi, [esp+54h]
		rep stosd
		lea	ecx, [esp+24h]
		call	sub_4017E4
		push	eax
		push	71h
		call	esi
		cdq
		mov	ecx, 1770h
		idiv	ecx
		inc	edx
		push	edx
		lea	edx, [esp+60h]
		push	offset dword_4440D8
		push	edx
		nop
		call	near ptr byte_5EA1BD
		add	esp, 14h
		lea	eax, [esp+54h]
		push	ebx
		push	40h
		push	eax
		push	ebp
		nop
		call	near ptr 71AB428Ah
		mov	esi, dword_50FC88
		push	ebp
		call	esi
		lea	ecx, [esp+24h]
		mov	dword ptr [esp+9Ch], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+10h]
		push	ecx
		call	esi
		mov	byte_4E6EC9, bl
		pop	edi
		jmp	short loc_41F9FE
; ---------------------------------------------------------------------------


loc_41F9E7:				; CODE XREF: ___:0041F8C7j
		push	7D0h
		nop
		call	near ptr 2821E84h
		jmp	short loc_41FA01
; ---------------------------------------------------------------------------


loc_41F9F4:				; CODE XREF: ___:0041F8AEj
		mov	ebp, [esp+0Ch]
		mov	esi, dword_50FC88


loc_41F9FE:				; CODE XREF: ___:0041F9E5j
		push	ebp
		call	esi


loc_41FA01:				; CODE XREF: ___:0041F898j
					; ___:0041F9F2j
		mov	ecx, [esp+90h]
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 90h
		retn
; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 70h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41FA90:				; CODE XREF: ___:loc_401ABEj
		mov	eax, [esp+4]
		dec	eax
		jz	short loc_41FACB
		dec	eax
		jz	short loc_41FAB4
		dec	eax
		jnz	short loc_41FAF1
		mov	ecx, dword_50BB58
		mov	dword_50BB3C, 4
		call	sub_401DCA
		jmp	short loc_41FAF1
; ---------------------------------------------------------------------------


loc_41FAB4:				; CODE XREF: ___:0041FA98j
		mov	ecx, dword_50BB58
		mov	dword_50BB3C, 7
		call	sub_401028
		jmp	short loc_41FAF1
; ---------------------------------------------------------------------------


loc_41FACB:				; CODE XREF: ___:0041FA95j
		mov	ecx, dword_50BB58
		xor	eax, eax
		mov	dword_50BB44, eax
		mov	dword_50BB3C, 1
		mov	dword_50BB4C, eax
		mov	dword_50BB50, eax
		call	sub_401744


loc_41FAF1:				; CODE XREF: ___:0041FA9Bj
					; ___:0041FAB2j ...
		mov	eax, dword_50BB5C
		push	offset dword_50BB38
		push	eax
		mov	dword_50BB3C, 4
		call	near ptr 28F06F6h
		nop
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41FB30:				; CODE XREF: ___:loc_401956j
		push	esi
		xor	esi, esi
		push	offset loc_401ABE
		mov	ecx, offset byte_44793F
		mov	dword_50BB38, 20h
		mov	dword_50BB3C, 2
		mov	dword_50BB40, 3
		mov	dword_50BB44, esi
		mov	dword_50BB48, esi
		mov	dword_50BB4C, esi
		mov	dword_50BB50, esi
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 28F0426h
		cmp	eax, esi
		mov	dword_50BB5C, eax
		jz	short loc_41FBAA
		push	offset dword_50BB38
		push	eax
		mov	dword_50BB3C, 4
		mov	dword_50BB4C, esi
		mov	dword_50BB50, esi
		nop
		call	near ptr 28F06F6h


loc_41FBAA:				; CODE XREF: ___:0041FB86j
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41FBD0	proc near		; CODE XREF: sub_401069j
		push	esi
		mov	esi, ecx
		call	sub_401E6A
		mov	dword ptr [esi], offset	dword_43E068
		mov	eax, esi
		pop	esi
		retn
sub_41FBD0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41FC00:				; CODE XREF: ___:00401CDFj
		sub	esp, 110h
		mov	dword_50BB58, ecx
		push	100h
		mov	ecx, offset byte_44793F
		call	sub_4017E4
		push	eax
		lea	eax, [esp+18h]
		push	eax
		nop
		call	near ptr 77C47A90h
		add	esp, 0Ch
		lea	edx, [esp+0]
		lea	ecx, [esp+10h]
		xor	eax, eax
		push	edx
		mov	[esp+4], ecx
		mov	dword ptr [esp+8], offset loc_401956
		mov	[esp+0Ch], eax
		mov	[esp+10h], eax
		nop
		call	near ptr 28F0000h
		xor	eax, eax
		add	esp, 110h
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41FC80:				; CODE XREF: ___:00401C30j
		mov	eax, [esp+4]
		push	ebx
		push	esi
		push	edi
		push	offset dword_443F00
		push	eax
		nop
		call	near ptr 77C3F010h
		mov	ebx, eax
		add	esp, 8
		test	ebx, ebx
		jnz	short loc_41FCA2
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41FCA2:				; CODE XREF: ___:0041FC9Aj
		mov	ecx, [esp+18h]
		push	ecx
		nop
		call	near ptr 2880C9Eh
		mov	esi, eax
		test	esi, esi
		jnz	short loc_41FCB9
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41FCB9:				; CODE XREF: ___:0041FCB1j
		mov	edx, [esp+14h]
		push	offset dword_4440FC
		and	edx, 0FFFFh
		push	edx
		push	esi
		nop
		call	near ptr 2780570h
		mov	edi, eax
		test	edi, edi
		jnz	short loc_41FCDC
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41FCDC:				; CODE XREF: ___:0041FCD4j
		push	ebp
		push	edi
		push	esi
		nop
		call	near ptr 2790000h
		push	edi
		push	esi
		mov	ebp, eax
		call	near ptr 279045Fh
		nop
		push	ebp
		mov	esi, eax
		nop
		call	near ptr 2790813h
		push	ebx
		push	esi
		push	1
		push	eax
		nop
		call	near ptr 77C4173Bh
		push	ebx
		nop
		call	near ptr 77C40AB1h
		add	esp, 14h
		mov	al, 1
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41FD50	proc near		; CODE XREF: sub_40187Fj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		nop
		call	near ptr 71AB2BF4h
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41FD78
		push	esi
		nop
		call	near ptr 71AB4FD4h
		test	eax, eax
		jnz	short loc_41FD71
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41FD71:				; CODE XREF: sub_41FD50+1Aj
		mov	eax, [eax+0Ch]
		mov	ecx, [eax]
		mov	eax, [ecx]


loc_41FD78:				; CODE XREF: sub_41FD50+Fj
		pop	esi
		retn
sub_41FD50	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41FD90	proc near		; CODE XREF: sub_401A8Cj

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
arg_4		= dword	ptr  8

		sub	esp, 10h
		push	esi
		push	6
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_41FDAE
		or	eax, eax
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_41FDAE:				; CODE XREF: sub_41FD90+15j
		mov	ecx, [esp+14h+arg_4]
		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
		call	near ptr 71AB2B66h
		nop
		mov	edx, [esp+14h+arg_0]
		mov	word ptr [esp+14h+var_10+2], ax
		push	edx
		call	sub_40187F
		add	esp, 4
		mov	[esp+14h+var_C], eax
		lea	eax, [esp+14h+var_10]
		push	10h
		push	eax
		push	esi
		nop
		call	near ptr 71AB406Ah
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41FE0A
		push	esi
		nop
		call	near ptr 71AB9639h
		or	eax, 0FFFFFFFFh
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_41FE0A:				; CODE XREF: sub_41FD90+69j
		mov	eax, esi
		pop	esi
		add	esp, 10h
		retn
sub_41FD90	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41FE50	proc near		; CODE XREF: sub_40197Ej

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
		push	6
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_41FE6E
		or	eax, eax
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_41FE6E:				; CODE XREF: sub_41FE50+15j
		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
		lea	edx, [esp+14h+var_10]
		push	10h
		push	edx
		push	esi
		mov	word ptr [esp+20h+var_10+2], ax
		mov	[esp+20h+var_C], 0
		nop
		call	near ptr 71AB3E00h
		test	eax, eax
		jz	short loc_41FEC0
		push	esi
		call	near ptr 71AB9639h
		nop
		or	eax, 0FFFFFFFFh
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_41FEC0:				; CODE XREF: sub_41FE50+5Fj
		mov	eax, esi
		pop	esi
		add	esp, 10h
		retn
sub_41FE50	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41FEF0	proc near		; CODE XREF: sub_4012DFj

var_10		= byte ptr -10h
arg_0		= dword	ptr  4

		sub	esp, 10h
		push	esi
		mov	esi, [esp+14h+arg_0]
		push	0Ah
		push	esi
		nop
		call	near ptr 71AB88D3h
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41FF24
		lea	eax, [esp+14h+arg_0]
		lea	ecx, [esp+14h+var_10]
		push	eax
		push	ecx
		push	esi
		mov	[esp+20h+arg_0], 10h
		call	near ptr 71AC1028h
		nop
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41FF27


loc_41FF24:				; CODE XREF: sub_41FEF0+14j
		or	eax, 0FFFFFFFFh


loc_41FF27:				; CODE XREF: sub_41FEF0+32j
		pop	esi
		add	esp, 10h
		retn
sub_41FEF0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_41FF40	proc near		; CODE XREF: sub_401FEBj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		test	edi, edi
		jz	short loc_41FF76
		mov	esi, [esp+8+arg_0]
		push	0Ah
		push	esi
		nop
		call	near ptr 71AB88D3h
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41FF76
		lea	eax, [esp+8+arg_4]
		mov	[esp+8+arg_4], 10h
		push	eax
		push	edi
		push	esi
		call	near ptr 71AC1028h
		nop
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41FF79


loc_41FF76:				; CODE XREF: sub_41FF40+8j
					; sub_41FF40+1Aj
		or	eax, 0FFFFFFFFh


loc_41FF79:				; CODE XREF: sub_41FF40+34j
		pop	edi
		pop	esi
		retn
sub_41FF40	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_41FF90	proc near		; CODE XREF: sub_4015FAj

arg_4		= byte ptr  8
arg_110		= byte ptr  114h

		mov	eax, 1114h
		call	sub_436840
		lea	eax, [esp+arg_4]
		lea	ecx, [esp+arg_110]
		push	eax
		push	1000h
		push	ecx
		mov	byte ptr [esp+0Fh], 0
		call	sub_436FC0
sub_41FF90	endp

; ---------------------------------------------------------------------------
		test	eax, eax
		jnz	short loc_41FFC3
		xor	al, al
		add	esp, 1114h
		retn
; ---------------------------------------------------------------------------


loc_41FFC3:				; CODE XREF: ___:0041FFB8j
		mov	eax, [esp+8]
		shr	eax, 2
		jz	loc_42008D
		push	ebx
		mov	ebx, dword_50F874
		push	ebp
		push	esi
		push	edi
		lea	ebp, [esp+124h]
		mov	[esp+14h], eax


loc_41FFE5:				; CODE XREF: ___:00420083j
		mov	edi, offset dword_444104
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [esp+20h]
		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, [ebp+0]
		push	ecx
		push	0
		push	411h
		call	ebx
		mov	esi, eax
		test	esi, esi
		jz	short loc_420077
		lea	edx, [esp+18h]
		lea	eax, [esp+1Ch]
		push	edx
		push	4
		push	eax
		push	esi
		call	sub_436FBA
; ---------------------------------------------------------------------------
		test	eax, eax
		jz	short loc_420070
		mov	edx, [esp+1Ch]
		lea	ecx, [esp+20h]
		push	104h
		push	ecx
		push	edx
		push	esi
		call	sub_436FB4
; ---------------------------------------------------------------------------
		db 8Bh,	84h, 24h
		dd 1128h, 20244C8Dh, 0F3E85150h, 90778261h, 8508C483h
		dd 500D75C0h, 95E89056h, 0C6022DFFh, 1132444h
; ---------------------------------------------------------------------------


loc_420070:				; CODE XREF: ___:00420032j
		push	esi
		nop
		call	near ptr 28306C9h


loc_420077:				; CODE XREF: ___:0042001Cj
		mov	eax, [esp+14h]
		add	ebp, 4
		dec	eax
		mov	[esp+14h], eax
		jnz	loc_41FFE5
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx


loc_42008D:				; CODE XREF: ___:0041FFCAj
		mov	al, [esp+3]
		add	esp, 1114h
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4200F0	proc near		; CODE XREF: sub_4019FBj

var_490		= byte ptr -490h
var_488		= byte ptr -488h
var_482		= byte ptr -482h
var_480		= byte ptr -480h
var_478		= byte ptr -478h
var_468		= dword	ptr -468h
var_464		= byte ptr -464h
var_454		= dword	ptr -454h
var_450		= dword	ptr -450h
var_43C		= byte ptr -43Ch
var_438		= byte ptr -438h
var_424		= byte ptr -424h
var_420		= byte ptr -420h
var_38		= byte ptr -38h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	0FFFFFFFFh
		push	offset SEH_4200F0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 44Ch
		push	ebx
		push	esi
		mov	esi, [esp+460h+arg_0]
		lea	ecx, [esp+460h+var_424]
		push	esi
		call	sub_401861
		push	eax
		mov	[esp+464h+var_4], 0
		call	sub_401E8D
		add	esp, 4
		lea	ecx, [esp+460h+var_424]
		mov	bl, al
		mov	[esp+460h+var_4], 0FFFFFFFFh
		call	sub_401226
		test	bl, bl
		jz	loc_42026A
		lea	ecx, [esp+460h+var_43C]
		call	sub_401424
		push	esi
		lea	eax, [esp+464h+var_43C]
		mov	ebx, 1
		push	offset dword_44411C
		push	eax
		mov	[esp+46Ch+var_4], ebx
		mov	[esp+46Ch+var_454], 0
		mov	[esp+46Ch+var_450], 80h
		call	sub_40102D
		add	esp, 0Ch
		lea	ecx, [esp+460h+var_454]
		push	ecx
		push	20019h
		push	0
		lea	ecx, [esp+46Ch+var_43C]
		call	sub_401681
		push	eax
		push	80000002h
		nop
		call	near ptr 2930000h
		mov	ecx, [esp+474h+var_468]
		lea	edx, [esp+474h+var_464]
		lea	eax, [esp+474h+var_420]
		push	edx
		push	eax
		push	0
		push	0
		push	offset dword_444110
		push	ecx
		nop
		call	near ptr 28E0000h
		lea	edx, [esp+0Bh]
		lea	eax, [esp+48Ch+var_438]
		push	edx
		push	eax
		lea	ecx, [esp+494h+var_478]
		nop
		call	near ptr 76081F67h
		mov	ecx, dword_50F9AC
		mov	[esp+494h+var_38], 2
		mov	edx, [ecx]
		lea	ecx, [esp+494h+var_480]
		push	edx
		push	offset dword_443AF4
		nop
		call	near ptr 76085AE4h
		inc	eax
		lea	ecx, [esp+49Ch+var_488]
		push	eax
		push	0
		call	near ptr 760976AFh
		nop
		lea	ecx, [esp+4A4h+var_490]
		call	near ptr 7608B84Ch
		nop
		push	eax
		call	sub_4015FA
; ---------------------------------------------------------------------------
		db 83h,	0C4h, 4
		dd 24244C8Dh, 0FE145CE8h, 0E89050FFh, 23C05B7h,	14244C8Dh
		dd 5C249C88h, 0E8000004h, 75C6F249h, 244C8D90h,	2484C724h
		dd 45Ch, 0FFFFFFFFh, 0FE0FD5E8h, 5EC38AFFh, 248C8B5Bh
		dd 44Ch, 0D8964h, 81000000h, 458C4h
		db 0, 0C3h
; ---------------------------------------------------------------------------


loc_42026A:				; CODE XREF: sub_4200F0+5Aj
		mov	ecx, [esp+460h+var_C]
		pop	esi
		xor	al, al
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 458h
		retn
sub_4200F0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 70h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_420300	proc near		; CODE XREF: sub_401E8Dj

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  4

		sub	esp, 1Ch
		push	ebx
		push	esi
		push	0F003Fh
		push	offset dword_443BF8
		push	0
		nop
		call	near ptr 29009BDh
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_420325
		pop	esi
		xor	al, al
		pop	ebx
		add	esp, 1Ch
		retn
; ---------------------------------------------------------------------------


loc_420325:				; CODE XREF: sub_420300+1Bj
		mov	ecx, [esp+24h+arg_0]
		push	0F01FFh
		call	sub_4017E4
		push	eax
		push	ebx
		call	near ptr 28A078Ch
		nop
		mov	esi, eax
		test	esi, esi
		jnz	short loc_420350
		push	ebx
		nop
		call	near ptr 291034Ch
		pop	esi
		xor	al, al
		pop	ebx
		add	esp, 1Ch
		retn
; ---------------------------------------------------------------------------


loc_420350:				; CODE XREF: sub_420300+3Fj
		push	ebp
		push	edi
		mov	edi, dword_50F740
		push	esi
		call	edi
		push	esi
		call	edi
		mov	ebp, dword_50F73C
		lea	eax, [esp+2Ch+var_1C]
		push	eax
		push	1
		push	esi
		call	ebp
		push	esi
		call	edi
		lea	ecx, [esp+2Ch+var_1C]
		push	ecx
		push	1
		push	esi
		call	ebp
		push	esi
		mov	esi, dword_50F74C
		call	esi
		push	ebx
		call	esi
		pop	edi
		pop	ebp
		pop	esi
		mov	al, 1
		pop	ebx
		add	esp, 1Ch
		retn
sub_420300	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4203D0	proc near		; CODE XREF: sub_4018A7j

var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
arg_0		= dword	ptr  4

		sub	esp, 28h
		push	ebx
		push	ebp
		push	esi
		lea	eax, [esp+34h+var_28]
		push	edi
		xor	esi, esi
		push	eax
		push	esi
		push	28h
		xor	bl, bl
		mov	[esp+44h+var_24], 10h
		nop
		call	near ptr 2770BE5h
		push	eax
		nop
		call	near ptr 28C161Bh
		mov	ebp, dword_50F718
		mov	edi, dword_50F8D8
		test	eax, eax
		jnz	short loc_420420
		lea	ecx, [esp+38h+var_28]
		push	ecx
		push	28h
		call	near ptr 2770C56h
		nop
		push	eax
		nop
		call	near ptr 28C1B3Bh
		test	eax, eax
		jz	short loc_42047F


loc_420420:				; CODE XREF: sub_4203D0+36j
		cmp	[esp+38h+var_28], esi
		jz	short loc_420483
		lea	edx, [esp+38h+var_1C]
		mov	[esp+38h+var_20], 1
		push	edx
		push	offset dword_444148
		push	esi
		mov	[esp+44h+var_14], 2
		nop
		call	near ptr 28D0000h
		lea	eax, [esp+38h+var_24]
		lea	ecx, [esp+38h+var_10]
		push	eax
		mov	eax, [esp+3Ch+var_28]
		push	ecx
		lea	edx, [esp+40h+var_20]
		push	10h
		push	edx
		push	esi
		push	eax
		call	ebp
		test	eax, eax
		jz	short loc_420478
		nop
		call	near ptr 27B07B3h
		cmp	eax, 514h
		jnz	short loc_420483
		mov	ecx, [esp+38h+var_28]
		push	ecx
		jmp	short loc_42047D
; ---------------------------------------------------------------------------


loc_420478:				; CODE XREF: sub_4203D0+92j
		mov	edx, [esp+38h+var_28]
		push	edx


loc_42047D:				; CODE XREF: sub_4203D0+A6j
		call	edi


loc_42047F:				; CODE XREF: sub_4203D0+4Ej
		mov	[esp+38h+var_28], esi


loc_420483:				; CODE XREF: sub_4203D0+54j
					; sub_4203D0+9Fj
		mov	eax, [esp+38h+arg_0]
		push	eax
		push	esi
		push	411h
		nop
		call	near ptr 2780000h
		mov	esi, eax
		test	esi, esi
		jz	short loc_4204A8
		push	0
		push	esi
		nop
		call	near ptr 2700000h
		push	esi
		mov	bl, 1
		call	edi


loc_4204A8:				; CODE XREF: sub_4203D0+C8j
		mov	eax, [esp+38h+var_28]
		test	eax, eax
		jz	short loc_4204C7
		push	0
		push	0
		lea	ecx, [esp+40h+var_10]
		push	10h
		push	ecx
		push	0
		push	eax
		call	ebp
		mov	edx, [esp+38h+var_28]
		push	edx
		call	edi


loc_4204C7:				; CODE XREF: sub_4203D0+DEj
		pop	edi
		pop	esi
		mov	al, bl
		pop	ebp
		pop	ebx
		add	esp, 28h
		retn
sub_4203D0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_420530	proc near		; CODE XREF: sub_4011D6j

var_54		= dword	ptr -54h
var_4C		= dword	ptr -4Ch
var_3C		= byte ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_28		= byte ptr -28h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_F4		= byte ptr  0F8h
arg_100		= byte ptr  104h
arg_10D0	= dword	ptr  10D4h
arg_10D8	= dword	ptr  10DCh
arg_1104	= dword	ptr  1108h
arg_1118	= dword	ptr  111Ch

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_420530
		push	eax
		mov	eax, 1130h
		mov	large fs:0, esp
		call	sub_436840
		push	esi
		push	offset dword_4441A0
		nop
		call	near ptr 2880C9Eh
		test	eax, eax
		mov	dword_50BB60, eax
		jnz	short loc_42057C
		push	offset dword_4441A0
		nop
		call	near ptr 27D090Ah
		test	eax, eax
		mov	dword_50BB60, eax
		jz	loc_4206FA


loc_42057C:				; CODE XREF: sub_420530+32j
		mov	esi, dword_50F8A0
		push	offset dword_444190
		push	eax
		call	esi
		mov	dword_50BB64, eax
		mov	eax, dword_50BB60
		push	offset dword_444178
		push	eax
		call	esi
		mov	ecx, dword_50BB60
		push	offset dword_44415C
		push	ecx
		mov	dword_50BB68, eax
		call	esi
		mov	ecx, dword_50BB64
		mov	dword_50BB6C, eax
		test	ecx, ecx
		jz	loc_4206FA
		mov	edx, dword_50BB68
		test	edx, edx
		jz	loc_4206FA
		test	eax, eax
		jz	loc_4206FA
		lea	edx, [esp+30h+var_28]
		lea	eax, [esp+30h+arg_100]
		push	edx
		push	1000h
		push	eax
		call	ecx
		test	eax, eax
		jz	loc_4206FA
		mov	ecx, dword_444104
		mov	eax, dword_444108
		mov	edx, [esp+3Ch+var_34]
		push	edi
		mov	[esp+40h+var_C], ecx
		mov	[esp+40h+var_8], eax
		mov	ecx, 3Fh
		mov	eax, 0
		lea	edi, [esp+40h+var_4]
		shr	edx, 2
		rep stosd
		jz	loc_4206E1
		push	ebx
		mov	ebx, [esp+44h+arg_1104]
		push	ebp
		mov	ebp, dword_50F874
		lea	edi, [esp+48h+arg_F4]
		mov	[esp+48h+var_38], edx


loc_42063F:				; CODE XREF: sub_420530+1A9j
		mov	ecx, [edi]
		push	ecx
		push	0
		push	410h
		call	ebp
		mov	esi, eax
		test	esi, esi
		jz	short loc_4206CD
		lea	edx, [esp+54h+var_38]
		lea	eax, [esp+54h+var_3C]
		push	edx
		push	4
		push	eax
		push	esi
		call	dword_50BB68
		test	eax, eax
		jz	short loc_4206C6
		mov	edx, [esp+64h+var_4C]
		lea	ecx, [esp+64h+var_28]
		push	104h
		push	ecx
		push	edx
		push	esi
		call	dword_50BB6C
		lea	ecx, [esp+74h+var_54]
		call	sub_401866
		lea	eax, [esp+74h+var_38]
		lea	ecx, [esp+74h+var_54]
		push	eax
		mov	[esp+78h+arg_10D0], 0
		call	sub_4015D7
		mov	ecx, [edi]
		lea	edx, [esp+74h+var_54]
		mov	[esp+35h], ecx
		push	edx
		mov	ecx, ebx
		call	sub_402167
; ---------------------------------------------------------------------------
		lea	ecx, [esp+74h+var_54]
		mov	[esp+74h+arg_10D0], 0FFFFFFFFh
		call	sub_401A6E


loc_4206C6:				; CODE XREF: sub_420530+136j
		push	esi
		nop
		call	near ptr 28306C9h


loc_4206CD:				; CODE XREF: sub_420530+11Fj
		mov	eax, [esp+10h]
		add	edi, 4
		dec	eax
		mov	[esp+10h], eax
		jnz	loc_42063F
		pop	ebp
		pop	ebx


loc_4206E1:				; CODE XREF: sub_420530+EFj
		pop	edi
		mov	al, 1
		pop	esi
		mov	ecx, [esp+1130h]
		mov	large fs:0, ecx
		add	esp, 113Ch
		retn
; ---------------------------------------------------------------------------


loc_4206FA:				; CODE XREF: sub_420530+46j
					; sub_420530+8Cj ...
		mov	ecx, [esp+18h+arg_1118]
		xor	al, al
		pop	esi
		mov	large fs:0, ecx
		add	esp, 113Ch
		retn
sub_420530	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 80h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4207A0	proc near		; CODE XREF: sub_401866j
		push	esi
		mov	esi, ecx
		call	sub_401424
		mov	eax, esi
		pop	esi
		retn
sub_4207A0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_4207C0	proc near		; CODE XREF: sub_401A6Ej
		jmp	sub_401226
sub_4207C0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4207E0	proc near		; CODE XREF: sub_402144j

var_518		= byte ptr -518h
var_514		= dword	ptr -514h
var_510		= dword	ptr -510h
var_50C		= dword	ptr -50Ch
var_508		= byte ptr -508h
var_504		= dword	ptr -504h
var_500		= dword	ptr -500h
var_4FC		= dword	ptr -4FCh
var_4F8		= byte ptr -4F8h
var_4F4		= byte ptr -4F4h
var_4E4		= dword	ptr -4E4h
var_4E0		= dword	ptr -4E0h
var_4DC		= dword	ptr -4DCh
var_4D8		= dword	ptr -4D8h
var_4D4		= dword	ptr -4D4h
var_4D0		= dword	ptr -4D0h
var_4CC		= dword	ptr -4CCh
var_4C8		= dword	ptr -4C8h
var_4C4		= dword	ptr -4C4h
var_4C0		= dword	ptr -4C0h
var_4BC		= dword	ptr -4BCh
var_4B8		= dword	ptr -4B8h
var_4B4		= dword	ptr -4B4h
var_4B0		= dword	ptr -4B0h
var_4AC		= dword	ptr -4ACh
var_4A8		= dword	ptr -4A8h
var_4A4		= dword	ptr -4A4h
var_4A0		= dword	ptr -4A0h
var_49C		= dword	ptr -49Ch
var_498		= dword	ptr -498h
var_494		= dword	ptr -494h
var_490		= dword	ptr -490h
var_48C		= dword	ptr -48Ch
var_488		= dword	ptr -488h
var_484		= dword	ptr -484h
var_480		= dword	ptr -480h
var_47C		= dword	ptr -47Ch
var_478		= dword	ptr -478h
var_474		= dword	ptr -474h
var_470		= dword	ptr -470h
var_46C		= dword	ptr -46Ch
var_468		= dword	ptr -468h
var_464		= dword	ptr -464h
var_460		= dword	ptr -460h
var_45C		= dword	ptr -45Ch
var_458		= dword	ptr -458h
var_454		= dword	ptr -454h
var_450		= dword	ptr -450h
var_44C		= dword	ptr -44Ch
var_448		= dword	ptr -448h
var_444		= dword	ptr -444h
var_440		= dword	ptr -440h
var_43C		= dword	ptr -43Ch
var_438		= dword	ptr -438h
var_430		= byte ptr -430h
var_42C		= byte ptr -42Ch
var_41C		= byte ptr -41Ch
var_404		= byte ptr -404h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= byte ptr  4
arg_8		= dword	ptr  0Ch

		push	0FFFFFFFFh
		push	offset SEH_4207E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 50Ch
		push	ebx
		push	ebp
		xor	ebx, ebx
		push	80000000h
		push	ebx
		push	ebx
		nop
		call	near ptr 29009BDh
		mov	ebp, eax
		cmp	ebp, ebx
		mov	[esp+520h+var_500], ebp
		jnz	short loc_42082F
		pop	ebp
		xor	al, al
		pop	ebx
		mov	ecx, [esp+518h+var_C]
		mov	large fs:0, ecx
		add	esp, 518h
		retn
; ---------------------------------------------------------------------------


loc_42082F:				; CODE XREF: sub_4207E0+34j
		push	esi
		push	edi
		lea	ecx, [esp+528h+var_4FC]
		mov	[esp+528h+var_4E4], offset dword_4443F4
		mov	[esp+528h+var_4E0], offset dword_4443E8
		mov	[esp+528h+var_4DC], offset dword_4443DC
		mov	[esp+528h+var_4D8], offset dword_4443D4
		mov	[esp+528h+var_4D4], offset dword_4443C8
		mov	[esp+528h+var_4D0], offset dword_4443BC
		mov	[esp+528h+var_4CC], offset dword_4443B4
		mov	[esp+528h+var_4C8], offset dword_4443A8
		mov	[esp+528h+var_4C4], offset dword_444398
		mov	[esp+528h+var_4C0], offset dword_444370
		mov	[esp+528h+var_4BC], offset dword_444364
		mov	[esp+528h+var_4B8], offset dword_444354
		mov	[esp+528h+var_4B4], offset dword_44433C
		mov	[esp+528h+var_4B0], offset dword_444330
		mov	[esp+528h+var_4AC], offset dword_44432C
		mov	[esp+528h+var_4A8], offset dword_444320
		mov	[esp+528h+var_4A4], offset dword_444318
		mov	[esp+528h+var_4A0], offset dword_444314
		mov	[esp+528h+var_49C], offset dword_444308
		mov	[esp+528h+var_498], offset dword_4442F8
		mov	[esp+528h+var_494], offset dword_4442E4
		mov	[esp+528h+var_490], offset dword_4442DC
		mov	[esp+528h+var_48C], offset dword_4442D4
		mov	[esp+528h+var_488], offset dword_4442CC
		mov	[esp+528h+var_484], offset dword_4442C0
		mov	[esp+528h+var_480], offset dword_4442B4
		mov	[esp+528h+var_47C], offset dword_4442AC
		mov	[esp+528h+var_478], offset dword_444298
		mov	[esp+528h+var_474], offset dword_44428C
		mov	[esp+528h+var_470], offset dword_444280
		mov	[esp+528h+var_46C], offset dword_444278
		mov	[esp+528h+var_468], offset dword_44426C
		mov	[esp+528h+var_464], offset dword_44425C
		mov	[esp+528h+var_460], offset dword_444254
		mov	[esp+528h+var_45C], offset dword_444248
		mov	[esp+528h+var_458], offset dword_44423C
		mov	[esp+528h+var_454], offset dword_444230
		mov	[esp+528h+var_450], offset dword_444224
		mov	[esp+528h+var_44C], offset dword_444218
		mov	[esp+528h+var_448], offset dword_444210
		mov	[esp+528h+var_444], offset dword_444204
		mov	[esp+528h+var_440], offset dword_4441F8
		mov	[esp+528h+var_43C], offset dword_4441F0
		mov	[esp+528h+var_438], ebx
		mov	[esp+528h+var_510], ebx
		call	sub_401424
		lea	eax, [esp+528h+var_510]
		lea	ecx, [esp+528h+var_514]
		mov	esi, dword_50F710
		push	eax
		lea	edx, [esp+52Ch+var_518]
		push	ecx
		push	edx
		lea	eax, [esp+534h+var_41C]
		push	ebx
		push	eax
		push	1
		push	30h
		push	ebp
		mov	[esp+548h+var_4], ebx
		mov	[esp+548h+var_50C], ebx
		mov	[esp+548h+var_504], 80h
		call	esi
		mov	ecx, [esp+524h+var_514]
		push	ecx
		nop
		call	near ptr 77C2C407h
		add	esp, 4
		mov	edi, eax
		lea	edx, [esp+524h+var_50C]
		lea	eax, [esp+524h+var_510]
		push	edx
		mov	edx, [esp+528h+var_514]
		lea	ecx, [esp+528h+var_514]
		push	eax
		push	ecx
		push	edx
		push	edi
		push	1
		push	30h
		push	ebp
		call	esi
		mov	eax, [esp+524h+var_510]
		mov	[esp+524h+var_504], ebx
		cmp	eax, ebx
		jbe	loc_420B8F
		mov	ebp, dword_50F75C


loc_420A6B:				; CODE XREF: sub_4207E0+3A5j
		mov	eax, offset dword_4443F4
		test	eax, eax
		jz	short loc_420A97
		lea	esi, [esp+524h+var_4E0]


loc_420A78:				; CODE XREF: sub_4207E0+2B5j
		mov	ecx, [edi]
		push	ecx
		push	eax
		nop
		call	near ptr 77C4624Eh
		add	esp, 8
		test	eax, eax
		jz	loc_420B73
		mov	eax, [esi+4]
		add	esi, 4
		cmp	eax, ebx
		jnz	short loc_420A78


loc_420A97:				; CODE XREF: sub_4207E0+292j
		mov	edx, [edi]
		lea	eax, [esp+524h+var_4F8]
		push	edx
		push	offset dword_44411C
		push	eax
		call	sub_40102D
		add	esp, 0Ch
		lea	ecx, [esp+524h+var_508]
		push	ecx
		push	20019h
		push	ebx
		lea	ecx, [esp+530h+var_4F8]
		call	sub_401681
		push	eax
		push	80000002h
		call	ebp
		cmp	eax, ebx
		jz	short loc_420AE3
		mov	edx, [edi]
		lea	eax, [esp+520h+var_4F4]
		push	edx
		push	offset dword_4441CC
		push	eax
		call	sub_40102D
		add	esp, 0Ch
		jmp	short loc_420B3A
; ---------------------------------------------------------------------------


loc_420AE3:				; CODE XREF: sub_4207E0+2EAj
		mov	eax, [esp+520h+var_504]
		lea	ecx, [esp+520h+var_4FC]
		lea	edx, [esp+520h+var_404]
		push	ecx
		push	edx
		push	ebx
		push	ebx
		push	offset dword_444110
		push	eax
		nop
		call	near ptr 28E0000h
		cmp	eax, ebx
		jz	short loc_420B1D
		mov	ecx, [edi]
		lea	edx, [esp+520h+var_4F4]
		push	ecx
		push	offset dword_4441B8
		push	edx
		call	sub_40102D
		add	esp, 0Ch
		jmp	short loc_420B3A
; ---------------------------------------------------------------------------


loc_420B1D:				; CODE XREF: sub_4207E0+324j
		mov	ecx, [edi]
		lea	eax, [esp+520h+var_404]
		push	eax
		push	ecx
		lea	edx, [esp+528h+var_4F4]
		push	offset dword_4441AC
		push	edx
		call	sub_40102D
		add	esp, 10h


loc_420B3A:				; CODE XREF: sub_4207E0+301j
					; sub_4207E0+33Bj
		lea	eax, [esp+520h+var_4F4]
		lea	ecx, [esp+520h+var_42C]
		push	eax
		call	sub_4014C9
		mov	ecx, [esp+520h+arg_8]
		push	eax
		mov	[esp+524h+arg_0], 1
		call	sub_401325
; ---------------------------------------------------------------------------
		lea	ecx, [esp+524h+var_430]
		mov	[esp+524h], bl
		call	sub_401226


loc_420B73:				; CODE XREF: sub_4207E0+2A7j
		mov	eax, [esp+524h+var_504]
		mov	ecx, [esp+524h+var_510]
		inc	eax
		add	edi, 24h
		cmp	eax, ecx
		mov	[esp+524h+var_504], eax
		jb	loc_420A6B
		mov	ebp, [esp+524h+var_4FC]


loc_420B8F:				; CODE XREF: sub_4207E0+27Fj
		push	ebp
		nop
		call	near ptr 291034Ch
		lea	ecx, [esp+528h+var_4FC]
		mov	[esp+528h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+528h+var_C]
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 518h
		retn
sub_4207E0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 100h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_420CD0	proc near		; CODE XREF: sub_4015EBj

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
		push	esi
		push	0
		call	near ptr 2880C9Eh
		nop
		push	eax
		nop
		call	near ptr 2880000h
		mov	eax, esi
		pop	esi
		retn
sub_420CD0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_420D00	proc near		; CODE XREF: sub_401A28j

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	[ebp+var_4], 0
		mov	[ebp+arg_4], eax
		femms
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+arg_0]
		mov	ebx, [ebp+var_4]
		cmp	ecx, 2
		js	short loc_420D39


loc_420D22:				; CODE XREF: sub_420D00+32j
		xor	eax, eax
		mov	ax, [edx]
		add	ebx, eax
		sub	ecx, 2
		add	edx, 2
		cmp	ecx, 1
		jg	short loc_420D22
		cmp	ecx, 0
		jz	short loc_420D4A


loc_420D39:				; CODE XREF: sub_420D00+20j
					; sub_420D00+48j
		xor	eax, eax
		mov	al, [edx]
		add	ebx, eax
		sub	ecx, 1
		add	edx, 1
		cmp	ecx, 0
		jg	short loc_420D39


loc_420D4A:				; CODE XREF: sub_420D00+37j
		mov	[ebp+var_4], ebx
		mov	eax, [ebp+var_4]
		shr	eax, 10h
		mov	ebx, [ebp+var_4]
		and	ebx, 0FFFFh
		add	eax, ebx
		mov	ebx, eax
		shr	ebx, 10h
		add	eax, ebx
		mov	[ebp+var_4], eax
		femms
		mov	eax, [ebp+var_4]
		pop	ebx
		not	eax
		mov	esp, ebp
		pop	ebp
		retn
sub_420D00	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_420DA0:				; CODE XREF: ___:00401019j
		mov	eax, [esp+4]
		mov	dword_50BB54, eax
		mov	eax, offset dword_50BB54
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_420DC0:				; CODE XREF: ___:00401771j
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+10h]
		push	edi
		mov	edi, dword_50FAA0
		push	esi
		call	edi
		mov	ebp, dword_50FA98
		push	2
		push	0
		push	esi
		mov	ebx, eax
		call	ebp
		push	esi
		call	edi
		push	0
		push	ebx
		push	esi
		mov	edi, eax
		call	ebp
		add	esp, 20h
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_420E10	proc near		; CODE XREF: sub_401938j

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		= dword	ptr  8

		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset SEH_420E10
		push	eax
		mov	large fs:0, esp
		sub	esp, 78h
		push	ebx
		push	esi
		mov	esi, [esp+8Ch+arg_0]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		jnz	short loc_420E3F
		xor	al, al
		jmp	loc_421419
; ---------------------------------------------------------------------------


loc_420E3F:				; CODE XREF: sub_420E10+26j
		lea	ecx, [esp+90h+var_84]
		call	sub_401424
		push	esi
		lea	ecx, [esp+94h+var_84]
		mov	[esp+94h+var_4], ebx
		call	sub_4015D7
		push	offset dword_443C84
		lea	eax, [esp+94h+var_54]
		push	ebx
		push	eax
		lea	ecx, [esp+9Ch+var_84]
		call	sub_4016AE
		mov	esi, [esp+90h+arg_4]
		push	eax
		mov	ecx, esi
		mov	byte ptr [esp+94h+var_4], 1
		call	sub_401FBE
		lea	ecx, [esp+90h+var_54]
		mov	byte ptr [esp+90h+var_4], bl
		call	sub_401226
		push	offset dword_444408
		mov	ecx, esi
		call	sub_4012EE
		test	eax, eax
		jz	short loc_420ECF
		push	offset dword_444404
		mov	ecx, esi
		call	sub_4012EE
		test	eax, eax
		jz	short loc_420ECF
		lea	ecx, [esp+90h+var_84]
		mov	[esp+90h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	al, al
		jmp	loc_421419
; ---------------------------------------------------------------------------


loc_420ECF:				; CODE XREF: sub_420E10+92j
					; sub_420E10+A2j
		push	offset dword_444400
		lea	ecx, [esp+94h+var_54]
		push	1
		push	ecx
		lea	ecx, [esp+9Ch+var_84]
		call	sub_4016AE
		push	40h
		mov	ecx, eax
		mov	byte ptr [esp+94h+var_4], 2
		call	sub_401D20
		lea	ecx, [esp+90h+var_54]
		mov	edi, eax
		mov	byte ptr [esp+90h+var_4], bl
		call	sub_401226
		cmp	edi, ebx
		push	offset dword_444400
		push	1
		jz	loc_42120C
		lea	edx, [esp+98h+var_24]
		lea	ecx, [esp+98h+var_84]
		push	edx
		call	sub_4016AE
		push	offset dword_4437F8
		lea	ecx, [esp+94h+var_3C]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+9Ch+var_4], 3
		call	sub_4016AE
		push	offset dword_443C84
		lea	edx, [esp+94h+var_54]
		push	ebx
		push	edx
		mov	ecx, eax
		mov	byte ptr [esp+9Ch+var_4], 4
		call	sub_4016AE
		lea	edi, [esi+15h]
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+94h+var_4], 5
		call	sub_401FBE
		lea	ecx, [esp+90h+var_54]
		mov	byte ptr [esp+90h+var_4], 4
		call	sub_401226
		lea	ecx, [esp+90h+var_3C]
		mov	byte ptr [esp+90h+var_4], 3
		call	sub_401226
		lea	ecx, [esp+90h+var_24]
		mov	byte ptr [esp+90h+var_4], bl
		call	sub_401226
		push	offset byte_446F60
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_420FC9
		lea	ecx, [esp+90h+var_84]
		mov	[esp+90h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	al, al
		jmp	loc_421419
; ---------------------------------------------------------------------------


loc_420FC9:				; CODE XREF: sub_420E10+19Cj
		push	offset dword_444400
		lea	eax, [esp+94h+var_54]
		push	1
		push	eax
		lea	ecx, [esp+9Ch+var_84]
		call	sub_4016AE
		push	offset dword_4437F8
		lea	ecx, [esp+94h+var_3C]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+9Ch+var_4], 6
		call	sub_4016AE
		push	offset dword_443C84
		lea	edx, [esp+94h+var_24]
		push	1
		push	edx
		mov	ecx, eax
		mov	byte ptr [esp+9Ch+var_4], 7
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+90h+var_4], 8
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		lea	ecx, [esp+90h+var_24]
		mov	[esi+54h], eax
		mov	byte ptr [esp+90h+var_4], 7
		call	sub_401226
		lea	ecx, [esp+90h+var_3C]
		mov	byte ptr [esp+90h+var_4], 6
		call	sub_401226
		lea	ecx, [esp+90h+var_54]
		mov	byte ptr [esp+90h+var_4], bl
		call	sub_401226
		cmp	[esi+54h], ebx
		jnz	short loc_421095
		push	offset dword_444408
		mov	ecx, esi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_42107E
		mov	dword ptr [esi+54h], 50h


loc_42107E:				; CODE XREF: sub_420E10+265j
		push	offset dword_444404
		mov	ecx, esi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_421095
		mov	dword ptr [esi+54h], 15h


loc_421095:				; CODE XREF: sub_420E10+255j
					; sub_420E10+27Cj
		push	offset dword_444400
		lea	eax, [esp+94h+var_54]
		push	1
		push	eax
		lea	ecx, [esp+9Ch+var_84]
		call	sub_4016AE
		push	offset dword_4437F8
		lea	ecx, [esp+94h+var_3C]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+9Ch+var_4], 9
		call	sub_4016AE
		push	offset dword_443C84
		lea	edx, [esp+94h+var_24]
		push	ebx
		push	edx
		mov	ecx, eax
		mov	byte ptr [esp+9Ch+var_4], 0Ah
		call	sub_4016AE
		lea	edi, [esi+2Ah]
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+94h+var_4], 0Bh
		call	sub_401FBE
		lea	ecx, [esp+90h+var_24]
		mov	byte ptr [esp+90h+var_4], 0Ah
		call	sub_401226
		lea	ecx, [esp+90h+var_3C]
		mov	byte ptr [esp+90h+var_4], 9
		call	sub_401226
		lea	ecx, [esp+90h+var_54]
		mov	byte ptr [esp+90h+var_4], bl
		call	sub_401226
		push	offset byte_446F60
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_42114E
		lea	ecx, [esp+90h+var_84]
		mov	[esp+90h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	al, al
		jmp	loc_421419
; ---------------------------------------------------------------------------


loc_42114E:				; CODE XREF: sub_420E10+321j
		push	offset dword_444400
		lea	eax, [esp+94h+var_54]
		push	1
		push	eax
		lea	ecx, [esp+9Ch+var_84]
		call	sub_4016AE
		push	offset dword_4437F8
		lea	ecx, [esp+94h+var_3C]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+9Ch+var_4], 0Ch
		call	sub_4016AE
		push	offset dword_443C84
		lea	edx, [esp+94h+var_24]
		push	1
		push	edx
		mov	ecx, eax
		mov	byte ptr [esp+9Ch+var_4], 0Dh
		call	sub_4016AE
		lea	edi, [esi+3Fh]
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+94h+var_4], 0Eh
		call	sub_401FBE
		lea	ecx, [esp+90h+var_24]
		mov	byte ptr [esp+90h+var_4], 0Dh
		call	sub_401226
		lea	ecx, [esp+90h+var_3C]
		mov	byte ptr [esp+90h+var_4], 0Ch
		call	sub_401226
		lea	ecx, [esp+90h+var_54]
		mov	byte ptr [esp+90h+var_4], bl
		call	sub_401226
		push	offset byte_446F60
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	loc_421333
		lea	ecx, [esp+90h+var_84]
		mov	[esp+90h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	al, al
		jmp	loc_421419
; ---------------------------------------------------------------------------


loc_42120C:				; CODE XREF: sub_420E10+100j
		lea	eax, [esp+98h+var_3C]
		lea	ecx, [esp+98h+var_84]
		push	eax
		call	sub_4016AE
		push	offset dword_443C84
		lea	ecx, [esp+94h+var_24]
		push	ebx
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+9Ch+var_4], 0Fh
		call	sub_4016AE
		lea	edi, [esi+15h]
		push	eax
		mov	ecx, edi
		mov	byte ptr [esp+94h+var_4], 10h
		call	sub_401FBE
		lea	ecx, [esp+90h+var_24]
		mov	byte ptr [esp+90h+var_4], 0Fh
		call	sub_401226
		lea	ecx, [esp+90h+var_3C]
		mov	byte ptr [esp+90h+var_4], bl
		call	sub_401226
		push	offset byte_446F60
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_421293
		lea	ecx, [esp+90h+var_84]
		mov	[esp+90h+var_4], 0FFFFFFFFh
		call	sub_401226
		xor	al, al
		jmp	loc_421419
; ---------------------------------------------------------------------------


loc_421293:				; CODE XREF: sub_420E10+466j
		push	offset dword_444400
		lea	edx, [esp+94h+var_3C]
		push	1
		push	edx
		lea	ecx, [esp+9Ch+var_84]
		call	sub_4016AE
		push	offset dword_443C84
		lea	ecx, [esp+94h+var_24]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+9Ch+var_4], 11h
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+90h+var_4], 12h
		call	sub_4017E4
		push	eax
		call	near ptr 77C1BF18h
		nop
		add	esp, 4
		lea	ecx, [esp+90h+var_24]
		mov	[esi+54h], eax
		mov	byte ptr [esp+90h+var_4], 11h
		call	sub_401226
		lea	ecx, [esp+90h+var_3C]
		mov	byte ptr [esp+90h+var_4], bl
		call	sub_401226
		cmp	[esi+54h], ebx
		jnz	short loc_421333
		push	offset dword_444408
		mov	ecx, esi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_42131C
		mov	dword ptr [esi+54h], 50h


loc_42131C:				; CODE XREF: sub_420E10+503j
		push	offset dword_444404
		mov	ecx, esi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_421333
		mov	dword ptr [esi+54h], 15h


loc_421333:				; CODE XREF: sub_420E10+3DBj
					; sub_420E10+4F3j ...
		push	offset dword_444400
		lea	ecx, [esp+94h+var_84]
		call	sub_4013E3
		lea	edx, [esp+90h+var_6C]
		push	eax
		push	edx
		lea	ecx, [esp+98h+var_84]
		call	sub_401E2E
		push	offset dword_444400
		lea	ecx, [esp+94h+var_6C]
		mov	byte ptr [esp+94h+var_4], 13h
		call	sub_4013E3
		push	eax
		lea	eax, [esp+94h+var_24]
		push	eax
		lea	ecx, [esp+98h+var_6C]
		call	sub_401E2E
		push	eax
		lea	ecx, [esp+94h+var_6C]
		mov	byte ptr [esp+94h+var_4], 14h
		call	sub_40200E
		lea	ecx, [esp+90h+var_24]
		mov	byte ptr [esp+90h+var_4], 13h
		call	sub_401226
		push	offset dword_444400
		lea	ecx, [esp+94h+var_6C]
		call	sub_4013E3
		lea	ecx, [esp+90h+var_24]
		push	eax
		push	ecx
		lea	ecx, [esp+98h+var_6C]
		call	sub_401E2E
		push	eax
		lea	ecx, [esp+94h+var_6C]
		mov	byte ptr [esp+94h+var_4], 15h
		call	sub_40200E
		lea	ecx, [esp+90h+var_24]
		mov	byte ptr [esp+90h+var_4], 13h
		call	sub_401226
		add	esi, 58h
		push	offset dword_444400
		mov	ecx, esi
		call	sub_4015D7
		lea	edx, [esp+90h+var_6C]
		mov	ecx, esi
		push	edx
		call	sub_4016BD
		lea	ecx, [esp+90h+var_6C]
		mov	byte ptr [esp+90h+var_4], bl
		call	sub_401226
		lea	ecx, [esp+90h+var_84]
		mov	[esp+90h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	al, 1


loc_421419:				; CODE XREF: sub_420E10+2Aj
					; sub_420E10+BAj ...
		mov	ecx, [esp+90h+var_C]
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 84h
		retn
sub_420E10	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 190h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4215D0	proc near		; CODE XREF: sub_401AEBj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	edx, [esp+arg_4]
		push	ebx
		mov	ebx, [esp+4+arg_C]
		push	ebp
		sub	edx, ebx
		xor	eax, eax
		push	esi
		push	edi
		test	edx, edx
		jle	short loc_4215FB


loc_4215E4:				; CODE XREF: sub_4215D0+29j
		mov	esi, [esp+10h+arg_0]
		mov	edi, [esp+10h+arg_8]
		add	esi, eax
		mov	ecx, ebx
		xor	ebp, ebp
		repe cmpsb
		jz	short loc_421602
		inc	eax
		cmp	eax, edx
		jl	short loc_4215E4


loc_4215FB:				; CODE XREF: sub_4215D0+12j
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_421602:				; CODE XREF: sub_4215D0+24j
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		retn
sub_4215D0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_421620:				; CODE XREF: ___:0040209Aj
		mov	eax, 2010h
		call	sub_436840
		mov	eax, [esp+2018h]
		push	ebp
		push	esi
		dec	eax
		push	edi
		jz	short loc_42166D
		dec	eax
		jz	short loc_421647
		dec	eax
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebp
		add	esp, 2010h
		retn
; ---------------------------------------------------------------------------


loc_421647:				; CODE XREF: ___:00421638j
		mov	eax, [esp+2020h]
		push	1388h
		push	eax
		call	sub_402004
		add	esp, 8
		neg	al
		sbb	eax, eax
		pop	edi
		pop	esi
		and	eax, 3
		pop	ebp
		add	esp, 2010h
		retn
; ---------------------------------------------------------------------------


loc_42166D:				; CODE XREF: ___:00421635j
		push	6
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	loc_4217C9
		cmp	esi, 0FFFFFFFFh
		jz	loc_4217C9
		xor	ecx, ecx
		push	87h
		mov	[esp+10h], ecx
		mov	word ptr [esp+10h], 2
		mov	[esp+14h], ecx
		mov	[esp+18h], ecx
		mov	[esp+1Ch], ecx
		nop
		call	near ptr 71AB2B66h
		mov	edx, [esp+2020h]
		mov	[esp+0Eh], ax
		push	edx
		call	sub_40187F
		add	esp, 4
		mov	[esp+10h], eax
		lea	eax, [esp+0Ch]
		push	10h
		push	eax
		push	esi
		nop
		call	near ptr 71AB406Ah
		cmp	eax, 0FFFFFFFFh
		jz	loc_4217C2
		mov	ebp, dword_50FC8C
		push	0
		push	48h
		push	offset dword_443DC8
		push	esi
		call	ebp
		cmp	eax, 0FFFFFFFFh
		jz	loc_4217C2
		mov	edi, dword_50FC90
		push	0
		lea	ecx, [esp+20h]
		push	2000h
		push	ecx
		push	esi
		call	edi
		cmp	eax, 0FFFFFFFFh
		jz	loc_4217C2
		cmp	byte ptr [esp+1Eh], 0Ch
		jnz	loc_4217C2
		push	0
		push	18h
		push	offset dword_443E3C
		push	esi
		call	ebp
		cmp	eax, 0FFFFFFFFh
		jz	loc_4217C2
		push	0
		lea	edx, [esp+20h]
		push	2000h
		push	edx
		push	esi
		call	edi
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_4217C2
		cmp	byte ptr [esp+1Eh], 2
		jnz	short loc_4217C2
		push	10h
		push	offset dword_443E14
		lea	eax, [esp+24h]
		push	edi
		push	eax
		call	sub_401AEB
		add	esp, 10h
		test	al, al
		jz	short loc_421791
		xor	ecx, ecx
		cmp	edi, 12Ch
		setnl	cl
		inc	ecx
		push	esi
		mov	edi, ecx
		call	near ptr 71AB9639h
		nop
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 2010h
		retn
; ---------------------------------------------------------------------------


loc_421791:				; CODE XREF: ___:0042176Ej
		push	10h
		push	offset dword_443E28
		lea	edx, [esp+24h]
		push	edi
		push	edx
		call	sub_401AEB
		add	esp, 10h
		neg	al
		sbb	eax, eax
		push	esi
		and	eax, 3
		mov	edi, eax
		nop
		call	near ptr 71AB9639h
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 2010h
		retn
; ---------------------------------------------------------------------------


loc_4217C2:				; CODE XREF: ___:004216DBj
					; ___:004216F6j ...
		push	esi
		call	near ptr 71AB9639h
		nop


loc_4217C9:				; CODE XREF: ___:0042167Ej
					; ___:00421687j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebp
		add	esp, 2010h
		retn
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 70h dup(0CCh)
; ---------------------------------------------------------------------------


loc_421850:				; CODE XREF: ___:00401A00j
		xor	al, al
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_421870	proc near		; CODE XREF: sub_40120Dj

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_401311
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_4010E6
sub_421870	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4218B0	proc near		; CODE XREF: sub_4018D9j

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_401901
sub_4218B0	endp

; ---------------------------------------------------------------------------
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4218F0	proc near		; CODE XREF: sub_401816j

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_40196F
		mov	ecx, [eax]
		lea	edx, [esp+10h+var_8]
		push	ecx
		push	edx
		mov	ecx, esi
		call	sub_4014D8
		mov	eax, [eax]
		lea	ecx, [esp+14h+var_4]
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_401997
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_401947
sub_4218F0	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421960	proc near		; CODE XREF: sub_4014D8j

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		push	eax
		call	sub_40204F
		mov	ecx, [eax]
		mov	esi, [esp+8+arg_0]
		add	esp, 4
		push	ecx
		mov	ecx, esi
		call	sub_401EBF
		mov	eax, esi
		pop	esi
		retn	4
sub_421960	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4219A0	proc near		; CODE XREF: sub_40196Fj

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_401EBF
		mov	eax, esi
		pop	esi
		retn	4
sub_4219A0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4219D0	proc near		; CODE XREF: sub_402167j

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_40196F
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_4018FC
sub_4219D0	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421A10	proc near		; CODE XREF: sub_401703j
		push	esi
		mov	esi, ecx
		call	sub_4019EC
		mov	eax, esi
		pop	esi
		retn
sub_421A10	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421A30	proc near		; CODE XREF: sub_40122Bj
		mov	eax, [ecx]
		push	eax
		call	sub_4010F5
		add	esp, 4
		retn
sub_421A30	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421A50	proc near		; CODE XREF: sub_40107Dj
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_40204F
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_421A50	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421A80	proc near		; CODE XREF: sub_401802j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401FFF
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_421A80	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_421AB0	proc near		; CODE XREF: sub_4016E0j

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_401212
sub_421AB0	endp

; ---------------------------------------------------------------------------
		mov	[esi+4], eax
		mov	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_421AF0	proc near		; CODE XREF: sub_401253j

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_4013ED
		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_40100F
		mov	edx, [esi+4]
		mov	ecx, esi
		push	edx
		call	sub_4021B7
sub_421AF0	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421B60	proc near		; CODE XREF: sub_40145Bj

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		push	eax
		call	sub_40110E
		mov	ecx, [eax]
		mov	esi, [esp+8+arg_0]
		add	esp, 4
		push	ecx
		mov	ecx, esi
		call	sub_401D75
		mov	eax, esi
		pop	esi
		retn	4
sub_421B60	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421BA0	proc near		; CODE XREF: sub_4013EDj

arg_0		= dword	ptr  4

		mov	eax, [ecx+4]
		push	esi
		mov	esi, [esp+4+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_401D75
		mov	eax, esi
		pop	esi
		retn	4
sub_421BA0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_421BD0	proc near		; CODE XREF: sub_401325j

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_4013ED
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401BAE
sub_421BD0	endp

; ---------------------------------------------------------------------------
		pop	esi
		pop	ecx
		retn	4
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421C10	proc near		; CODE XREF: sub_401B40j
		push	esi
		mov	esi, ecx
		call	sub_4011A9
		mov	eax, esi
		pop	esi
		retn
sub_421C10	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421C30	proc near		; CODE XREF: sub_401055j
		mov	eax, [ecx]
		push	eax
		call	sub_40108C
		add	esp, 4
		retn
sub_421C30	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421C50	proc near		; CODE XREF: sub_40182Aj
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	eax
		call	sub_40110E
		mov	ecx, [eax]
		add	esp, 4
		mov	[esi], ecx
		mov	eax, esi
		pop	esi
		retn
sub_421C50	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421C80	proc near		; CODE XREF: sub_4012BCj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401D48
		neg	al
		sbb	eax, eax
		inc	eax
		retn	4
sub_421C80	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_421CB0	proc near		; CODE XREF: sub_4010E6j

arg_4		= byte ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esp+0Ch+arg_4]
		call	sub_401ECE
		mov	edi, eax
		push	edi
		call	sub_401B1D
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_40139D
sub_421CB0	endp

; ---------------------------------------------------------------------------
		push	edi
		mov	ebx, eax
		call	sub_401B1D
		push	edi
		mov	[eax], ebx
		call	sub_401B1D
		mov	edi, [eax]
		push	edi
		call	sub_401B1D
		mov	ecx, [eax]
		push	ecx
		call	sub_4015D2
		mov	edx, [esp+28h]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_401172
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_401E3D
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		mov	esi, [esp+14h]
		mov	ecx, esi
		call	sub_401D84
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_421D50	proc near		; CODE XREF: sub_4018FCj

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_4010C8
		mov	edi, eax
		push	edi
		call	sub_401CF3
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_401901
sub_421D50	endp

; ---------------------------------------------------------------------------
		push	edi
		mov	ebx, eax
		call	sub_401CF3
		push	edi
		mov	[eax], ebx
		call	sub_401CF3
		mov	edi, [eax]
		push	edi
		call	sub_401CF3
		mov	ecx, [eax]
		push	ecx
		call	sub_40204F
		mov	edx, [esp+28h]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_4010F5
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_4017E9
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		mov	esi, [esp+14h]
		mov	ecx, esi
		call	sub_401EBF
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421DF0	proc near		; CODE XREF: sub_401997j

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_401802
		test	al, al
		jz	short loc_421E4A


loc_421E08:				; CODE XREF: sub_421DF0+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_4020B8
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401A1E
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_401802
		test	al, al
		jnz	short loc_421E08
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_421E4A:				; CODE XREF: sub_421DF0+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_421DF0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_421E80	proc near		; CODE XREF: sub_401901j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	24h
		call	sub_401DF2
sub_421E80	endp

; ---------------------------------------------------------------------------
		mov	edi, [esp+0Ch]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_421E95
		mov	edi, esi


loc_421E95:				; CODE XREF: ___:00421E91j
		push	esi
		call	sub_40204F
		mov	[eax], edi
		mov	edi, [esp+14h]
		add	esp, 4
		test	edi, edi
		jnz	short loc_421EAA
		mov	edi, esi


loc_421EAA:				; CODE XREF: ___:00421EA6j
		push	esi
		call	sub_401CF3
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_421ED0	proc near		; CODE XREF: sub_401947j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_401546
sub_421ED0	endp

; ---------------------------------------------------------------------------
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421EF0	proc near		; CODE XREF: sub_40204Fj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_421EF0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421F10	proc near		; CODE XREF: sub_4010F5j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_421F10	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421F30	proc near		; CODE XREF: sub_4019ECj
		mov	eax, ecx
		retn
sub_421F30	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421F50	proc near		; CODE XREF: sub_401EBFj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_401519
		mov	eax, esi
		pop	esi
		retn	4
sub_421F50	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_421F80	proc near		; CODE XREF: sub_401FFFj

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_421F80	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_421FB0	proc near		; CODE XREF: sub_401BAEj

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_4018E8
		mov	edi, eax
		push	edi
		call	sub_4010EB
		mov	eax, [eax]
		add	esp, 4
		mov	ecx, esi
		push	eax
		push	edi
		call	sub_401212
sub_421FB0	endp

; ---------------------------------------------------------------------------
		push	edi
		mov	ebx, eax
		call	sub_4010EB
		push	edi
		mov	[eax], ebx
		call	sub_4010EB
		mov	edi, [eax]
		push	edi
		call	sub_4010EB
		mov	ecx, [eax]
		push	ecx
		call	sub_40110E
		mov	edx, [esp+28h]
		add	esp, 10h
		mov	[eax], edi
		push	edx
		push	edi
		call	sub_40108C
		add	esp, 4
		mov	ecx, esi
		push	eax
		call	sub_4013DE
		mov	ecx, [esi+8]
		push	edi
		inc	ecx
		mov	[esi+8], ecx
		mov	esi, [esp+14h]
		mov	ecx, esi
		call	sub_401D75
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422050	proc near		; CODE XREF: sub_40100Fj

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_4012BC
		test	al, al
		jz	short loc_4220AA


loc_422068:				; CODE XREF: sub_422050+47j
		lea	ecx, [esp+0Ch+var_8]
		push	0
		push	ecx
		lea	ecx, [esp+14h+arg_4]
		call	sub_4019AB
		mov	edx, [eax]
		lea	eax, [esp+0Ch+var_4]
		push	edx
		push	eax
		mov	ecx, esi
		call	sub_401B7C
; ---------------------------------------------------------------------------
		lea	ecx, [esp+0Ch+arg_8]
		push	ecx
		lea	ecx, [esp+10h+arg_4]
		call	sub_4012BC
		test	al, al
		jnz	short loc_422068
		mov	eax, [esp+0Ch+arg_0]
		mov	edx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], edx
		add	esp, 8
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4220AA:				; CODE XREF: sub_422050+16j
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esp+0Ch+arg_4]
		pop	esi
		mov	[eax], ecx
		add	esp, 8
		retn	0Ch
sub_422050	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4220E0	proc near		; CODE XREF: sub_401212j
		push	esi
		push	edi
		push	20h
		call	sub_4020BD
sub_4220E0	endp

; ---------------------------------------------------------------------------
		mov	edi, [esp+0Ch]
		mov	esi, eax
		test	edi, edi
		jnz	short loc_4220F5
		mov	edi, esi


loc_4220F5:				; CODE XREF: ___:004220F1j
		push	esi
		call	sub_40110E
		mov	[eax], edi
		mov	edi, [esp+14h]
		add	esp, 4
		test	edi, edi
		jnz	short loc_42210A
		mov	edi, esi


loc_42210A:				; CODE XREF: ___:00422106j
		push	esi
		call	sub_4010EB
		add	esp, 4
		mov	[eax], edi
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_422130	proc near		; CODE XREF: sub_4021B7j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_4018E3
sub_422130	endp

; ---------------------------------------------------------------------------
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422150	proc near		; CODE XREF: sub_40110Ej

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn
sub_422150	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422170	proc near		; CODE XREF: sub_40108Cj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		retn
sub_422170	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422190	proc near		; CODE XREF: sub_4011A9j
		mov	eax, ecx
		retn
sub_422190	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4221B0	proc near		; CODE XREF: sub_401D75j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	eax
		call	sub_4018ED
		mov	eax, esi
		pop	esi
		retn	4
sub_4221B0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4221E0	proc near		; CODE XREF: sub_401D48j

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_4221E0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422210	proc near		; CODE XREF: sub_401E3Dj

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_401A2D
		add	esp, 8
		retn	8
sub_422210	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_422240	proc near		; CODE XREF: sub_401A1Ej

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_4020B8
		mov	ecx, eax
		call	sub_4010C8
		mov	esi, eax
		push	esi
		call	sub_40204F
		push	esi
		mov	ebx, eax
		call	sub_401CF3
		mov	ecx, [eax]
		push	ecx
		call	sub_40204F
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_401CF3
		push	esi
		mov	ebx, eax
		call	sub_40204F
		mov	eax, [eax]
		push	eax
		call	sub_401CF3
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_4010F5
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_401631
		push	esi
		mov	ecx, edi
		call	sub_401947
sub_422240	endp

; ---------------------------------------------------------------------------
		mov	eax, [edi+8]
		mov	edx, [esp+18h]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+14h]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422300	proc near		; CODE XREF: sub_401CF3j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_422300	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_422320	proc near		; CODE XREF: sub_401DF2j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D16
sub_422320	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_422350	proc near		; CODE XREF: sub_401546j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4367E2
sub_422350	endp

; ---------------------------------------------------------------------------
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422370	proc near		; CODE XREF: sub_4017E9j

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_40201D
		add	esp, 8
		retn	8
sub_422370	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4223A0	proc near		; CODE XREF: sub_401519j

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		retn	4
sub_4223A0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4223C0	proc near		; CODE XREF: sub_4010C8j
		mov	eax, [ecx]
		retn
sub_4223C0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4223E0	proc near		; CODE XREF: sub_4020B8j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_40107D
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_4223E0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_422410	proc near		; CODE XREF: sub_401B7Cj

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_4019AB
		mov	ecx, eax
		call	sub_4018E8
		mov	esi, eax
		push	esi
		call	sub_40110E
		push	esi
		mov	ebx, eax
		call	sub_4010EB
		mov	ecx, [eax]
		push	ecx
		call	sub_40110E
		mov	edx, [ebx]
		push	esi
		mov	[eax], edx
		call	sub_4010EB
		push	esi
		mov	ebx, eax
		call	sub_40110E
		mov	eax, [eax]
		push	eax
		call	sub_4010EB
		mov	ecx, [ebx]
		push	esi
		mov	[eax], ecx
		call	sub_40108C
		add	esp, 1Ch
		mov	ecx, edi
		push	eax
		call	sub_401E60
		push	esi
		mov	ecx, edi
		call	sub_4021B7
sub_422410	endp

; ---------------------------------------------------------------------------
		mov	eax, [edi+8]
		mov	edx, [esp+18h]
		dec	eax
		mov	[edi+8], eax
		mov	eax, [esp+14h]
		pop	edi
		pop	esi
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4224D0	proc near		; CODE XREF: sub_4010EBj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		retn
sub_4224D0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4224F0	proc near		; CODE XREF: sub_4020BDj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_401D16
sub_4224F0	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_422520	proc near		; CODE XREF: sub_4018E3j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_4367E2
sub_422520	endp

; ---------------------------------------------------------------------------
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422540	proc near		; CODE XREF: sub_4013DEj

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_401ED3
		add	esp, 8
		retn	8
sub_422540	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422570	proc near		; CODE XREF: sub_4018EDj

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		retn	4
sub_422570	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422590	proc near		; CODE XREF: sub_4018E8j
		mov	eax, [ecx]
		retn
sub_422590	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4225B0	proc near		; CODE XREF: sub_4019ABj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx]
		call	sub_40182A
		mov	eax, [esp+4+arg_0]
		mov	[eax], esi
		pop	esi
		retn	8
sub_4225B0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4225E0	proc near		; CODE XREF: sub_401631j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401A78
		pop	ecx
		retn	4
sub_4225E0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422600	proc near		; CODE XREF: sub_401E60j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_401F9B
		pop	ecx
		retn	4
sub_422600	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422620	proc near		; CODE XREF: sub_401A2Dj

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_42263B
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		mov	[eax], edx

locret_42263B:				; CODE XREF: sub_422620+11j
		retn
sub_422620	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422650	proc near		; CODE XREF: sub_40201Dj

var_10		= dword	ptr -10h
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_422650
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, [esp+10h+arg_0]
		push	eax
		push	19h
		call	sub_4011CC
		add	esp, 8
		mov	[esp+10h+var_10], eax
		test	eax, eax
		mov	[esp+10h+var_4], 0
		jz	short loc_422691
		mov	ecx, [esp+10h+arg_4]
		push	ecx
		mov	ecx, eax
		call	sub_401677


loc_422691:				; CODE XREF: sub_422650+33j
		mov	ecx, [esp+10h+var_C]
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_422650	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_10. PRESS	KEYPAD "+" TO EXPAND]
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4226E0	proc near		; CODE XREF: sub_401ED3j

var_10		= dword	ptr -10h
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_4226E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		mov	eax, [esp+10h+arg_0]
		push	eax
		push	15h
		call	sub_4011CC
		add	esp, 8
		mov	[esp+10h+var_10], eax
		test	eax, eax
		mov	[esp+10h+var_4], 0
		jz	short loc_422721
		mov	ecx, [esp+10h+arg_4]
		push	ecx
		mov	ecx, eax
		call	sub_4014C9


loc_422721:				; CODE XREF: sub_4226E0+33j
		mov	ecx, [esp+10h+var_C]
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4226E0	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422750	proc near		; CODE XREF: sub_401A78j

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	0
		call	sub_4019BA
		retn
sub_422750	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422770	proc near		; CODE XREF: sub_401F9Bj

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	0
		mov	eax, [ecx]
		call	dword ptr [eax]
		retn
sub_422770	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_422790	proc near		; CODE XREF: sub_401677j

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		push	edi
		call	sub_4014C9
		mov	eax, [edi+15h]
		pop	edi
		mov	[esi+15h], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_422790	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4227C0	proc near		; CODE XREF: sub_4019BAj

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_401A6E
		test	[esp+4+arg_0], 1
		jz	short loc_4227D8
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_4227D8:				; CODE XREF: sub_4227C0+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_4227C0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4227F0	proc near		; CODE XREF: sub_401AE1j

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4227F0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	edi
		push	0
		push	10h
		push	9
		push	3
		push	4Fh
		push	16h
		push	4
		lea	eax, [esp+60h+var_3C]
		push	1
		mov	esi, ecx
		push	eax
		mov	dword_4D5FBB, offset dword_444410
		call	sub_4019B5
		add	esp, 24h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+8D008h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_4227F0	endp

; ---------------------------------------------------------------------------
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	14h
		push	12h
		push	1
		push	14h
		push	13h
		push	4Fh
		push	16h
		push	4
		lea	edx, [esp+2Ch]
		push	1
		push	edx
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 1
		call	sub_4017E4
		push	eax
		lea	eax, [esi+8D036h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	10h
		push	0Fh
		push	14h
		push	13h
		push	4Fh
		push	0Eh
		push	1
		push	3
		lea	ecx, [esp+2Ch]
		push	13h
		push	ecx
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 2
		call	sub_4017E4
		lea	edx, [esi+8D064h]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	13h
		push	14h
		push	1
		push	14h
		push	13h
		push	4Fh
		push	16h
		push	4
		lea	eax, [esp+2Ch]
		push	1
		push	eax
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 3
		call	sub_4017E4
		lea	ecx, [esi+8D092h]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	13h
		push	14h
		push	1
		push	14h
		push	13h
		push	4Fh
		push	10h
		push	14h
		lea	edx, [esp+44h]
		push	6
		push	edx
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 4
		call	sub_4017E4
		add	esi, 8D0C0h
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+20h]
		mov	[esp+40h], edi
		call	sub_401226
		mov	ecx, [esp+38h]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 80h dup(0CCh)
; ---------------------------------------------------------------------------


loc_422A40:				; CODE XREF: ___:0040138Ej
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_43B579
		push	eax
		mov	large fs:0, esp
		sub	esp, 784h
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+7A0h]
		mov	ebp, ecx
		push	edi
		lea	edi, [esi+7Eh]
		lea	ecx, [ebp+8D008h]
		call	sub_4014D3
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	loc_422B0A
		push	3
		call	sub_401483
		add	esp, 4
		test	eax, eax
		jle	short loc_422ADD
		push	3
		call	sub_401D8E
		mov	eax, dword_50BB80[eax*8]
		add	esp, 4
		push	eax
		nop
		call	near ptr 71AB3F41h
		push	eax
		push	offset dword_444658
		lea	ecx, [esi+2Ah]
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h
		mov	al, 1
		jmp	loc_422E3B
; ---------------------------------------------------------------------------


loc_422ADD:				; CODE XREF: ___:00422A92j
		lea	ecx, [esi+2Ah]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	offset dword_444640
		push	edx
		push	eax
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		mov	al, 1
		jmp	loc_422E3B
; ---------------------------------------------------------------------------


loc_422B0A:				; CODE XREF: ___:00422A80j
		lea	ecx, [ebp+8D0C0h]
		call	sub_4014D3
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	loc_422BB0
		mov	edi, dword_4D63A0
		push	offset dword_443600
		lea	ecx, [esp+1Ch]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+79Ch], 0
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		lea	ecx, [esp+18h]
		mov	ebx, eax
		mov	dword ptr [esp+79Ch], 0FFFFFFFFh
		call	sub_401226
		cmp	edi, ebx
		jl	loc_4231BD
		mov	edx, dword_44767F
		push	edi
		push	edx
		push	offset dword_444618
		lea	ecx, [esi+2Ah]
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 1Ch
		mov	al, 1
		jmp	loc_422E3B
; ---------------------------------------------------------------------------


loc_422BB0:				; CODE XREF: ___:00422B1Fj
		lea	ecx, [ebp+8D064h]
		call	sub_4014D3
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_422C30
		push	eax
		push	3
		call	sub_401D93
		add	esp, 8
		test	eax, eax
		jle	short loc_422C05
		push	eax
		push	offset dword_4445F8
		lea	ecx, [esi+2Ah]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h
		jmp	loc_422E39
; ---------------------------------------------------------------------------


loc_422C05:				; CODE XREF: ___:00422BD4j
		lea	ecx, [esi+2Ah]
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	offset dword_4445E0
		push	ecx
		push	edx
		mov	ecx, offset byte_4D60A5
		call	sub_401118
		jmp	loc_422E39
; ---------------------------------------------------------------------------


loc_422C30:				; CODE XREF: ___:00422BC5j
		lea	ecx, [ebp+8D036h]
		call	sub_4014D3
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		mov	edi, dword_50FB08
		test	eax, eax
		jnz	loc_422CDE
		push	3
		call	sub_401483
		add	esp, 4
		mov	ebx, eax
		lea	eax, [esp+18h]
		mov	ecx, esi
		push	offset dword_443600
		push	2
		push	eax
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+79Ch], 1
		call	sub_4017E4
		push	eax
		call	edi
		add	eax, ebx
		add	esp, 4
		cmp	eax, 1F4h
		lea	ecx, [esp+18h]
		setnle	byte ptr [esp+13h]
		mov	dword ptr [esp+79Ch], 0FFFFFFFFh
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jz	loc_422E56
		push	ebx
		push	offset dword_4445BC
		lea	ecx, [esi+2Ah]
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_422CDE:				; CODE XREF: ___:00422C4Bj
		lea	ecx, [ebp+8D092h]
		call	sub_4014D3
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_422E39
		push	offset dword_443600
		lea	eax, [esp+180h]
		push	1
		push	eax
		mov	ecx, esi
		xor	ebx, ebx
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+79Ch], 0Ah
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+17Ch]
		mov	edi, eax
		mov	dword ptr [esp+79Ch], 0FFFFFFFFh
		call	sub_401226
		mov	eax, dword_444438
		mov	[esp+13h], bl
		test	eax, eax
		jz	short loc_422D69
		mov	eax, offset dword_444438


loc_422D55:				; CODE XREF: ___:00422D67j
		cmp	[eax+8], edi
		jb	short loc_422D5F
		mov	byte ptr [esp+13h], 1


loc_422D5F:				; CODE XREF: ___:00422D58j
		mov	ecx, [eax+3Ch]
		add	eax, 3Ch
		test	ecx, ecx
		jnz	short loc_422D55


loc_422D69:				; CODE XREF: ___:00422D4Ej
		mov	ebp, dword_50FBF0
		lea	ecx, [esp+194h]
		push	offset dword_4445AC
		push	ecx
		call	ebp
		mov	eax, dword_444438
		add	esp, 8
		test	eax, eax
		jz	short loc_422DCF
		mov	edi, offset dword_444440


loc_422D8F:				; CODE XREF: ___:00422DCDj
		mov	eax, [edi]
		lea	edx, [edi-26h]
		add	ebx, eax
		push	eax
		push	edx
		lea	eax, [esp+39Ch]
		push	offset dword_4445A0
		push	eax
		call	ebp
		lea	ecx, [esp+3A4h]
		push	200h
		lea	edx, [esp+1A8h]
		push	ecx
		push	edx
		nop
		call	near ptr 77C47920h
		mov	eax, [edi+34h]
		add	edi, 3Ch
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_422D8F


loc_422DCF:				; CODE XREF: ___:00422D88j
		push	ebx
		lea	eax, [esp+398h]
		push	offset dword_444590
		push	eax
		call	ebp
		lea	ecx, [esp+3A0h]
		push	200h
		lea	edx, [esp+1A4h]
		push	ecx
		push	edx
		call	near ptr 77C47920h
		nop
		mov	al, [esp+2Bh]
		add	esp, 18h
		test	al, al
		jz	short loc_422E29
		xor	eax, eax
		lea	ecx, [esp+194h]
		mov	al, [esi+94h]
		push	eax
		push	ecx
		lea	ecx, [esi+2Ah]
		call	sub_4014D3
		push	eax
		push	0
		call	sub_401523
		add	esp, 10h


loc_422E29:				; CODE XREF: ___:00422E03j
		lea	edx, [esp+194h]
		push	edx
		call	sub_4010D2
		add	esp, 4


loc_422E39:				; CODE XREF: ___:00422C00j
					; ___:00422C2Bj ...
		xor	al, al


loc_422E3B:				; CODE XREF: ___:00422AD8j
					; ___:00422B05j ...
		mov	ecx, [esp+794h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 790h
		retn	4
; ---------------------------------------------------------------------------


loc_422E56:				; CODE XREF: ___:00422CAEj
		push	offset dword_443600
		lea	eax, [esp+1Ch]
		push	1
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+79Ch], 2
		call	sub_4017E4
		push	eax
		call	edi
		or	ebx, 0FFFFFFFFh
		add	esp, 4
		lea	ecx, [esp+18h]
		mov	[esp+144h], eax
		mov	[esp+79Ch], ebx
		call	sub_401226
		push	offset dword_443600
		lea	ecx, [esp+1Ch]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ebp, 3
		mov	ecx, eax
		mov	[esp+79Ch], ebp
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+18h]
		mov	[esp+15Ch], eax
		mov	[esp+79Ch], ebx
		call	sub_401226
		push	offset dword_443600
		lea	edx, [esp+1Ch]
		push	ebp
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+79Ch], 4
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+18h]
		mov	[esp+148h], eax
		mov	[esp+79Ch], ebx
		call	sub_401226
		mov	eax, [esp+148h]
		cmp	eax, ebp
		jnb	short loc_422F33
		mov	[esp+148h], ebp
		jmp	short loc_422F43
; ---------------------------------------------------------------------------


loc_422F33:				; CODE XREF: ___:00422F28j
		cmp	eax, 3Ch
		jbe	short loc_422F43
		mov	dword ptr [esp+148h], 3Ch


loc_422F43:				; CODE XREF: ___:00422F31j
					; ___:00422F36j
		push	offset dword_443600
		lea	eax, [esp+1Ch]
		push	4
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+79Ch], 5
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+18h]
		mov	[esp+14Ch], eax
		mov	[esp+79Ch], ebx
		call	sub_401226
		mov	ecx, [esp+14Ch]
		mov	eax, 960h
		cmp	ecx, eax
		jbe	short loc_422F9C
		mov	[esp+14Ch], eax


loc_422F9C:				; CODE XREF: ___:00422F93j
		mov	eax, dword_444438
		mov	[esp+160h], ebx
		test	eax, eax
		mov	dword ptr [esp+14h], 0
		jz	loc_42306C
		mov	ebp, offset dword_444438
		jmp	short loc_422FC2
; ---------------------------------------------------------------------------


loc_422FBF:				; CODE XREF: ___:00423042j
		or	ebx, 0FFFFFFFFh


loc_422FC2:				; CODE XREF: ___:00422FBDj
		push	offset dword_443600
		lea	ecx, [esp+1Ch]
		push	1
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+79Ch], 6
		call	sub_4017E4
		mov	edi, eax
		lea	ecx, [ebp-28h]


loc_422FEC:				; CODE XREF: ___:0042300Aj
		mov	dl, [ecx]
		mov	al, dl
		cmp	dl, [edi]
		jnz	short loc_423010
		test	al, al
		jz	short loc_42300C
		mov	dl, [ecx+1]
		mov	al, dl
		cmp	dl, [edi+1]
		jnz	short loc_423010
		add	ecx, 2
		add	edi, 2
		test	al, al
		jnz	short loc_422FEC


loc_42300C:				; CODE XREF: ___:00422FF6j
		xor	eax, eax
		jmp	short loc_423014
; ---------------------------------------------------------------------------


loc_423010:				; CODE XREF: ___:00422FF2j
					; ___:00423000j
		sbb	eax, eax
		sbb	eax, ebx


loc_423014:				; CODE XREF: ___:0042300Ej
		test	eax, eax
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+79Ch], 0FFFFFFFFh
		setz	bl
		call	sub_401226
		test	bl, bl
		jnz	short loc_42304A
		mov	edx, [esp+14h]
		mov	eax, [ebp+3Ch]
		add	ebp, 3Ch
		inc	edx
		test	eax, eax
		mov	[esp+14h], edx
		jnz	loc_422FBF
		jmp	short loc_423069
; ---------------------------------------------------------------------------


loc_42304A:				; CODE XREF: ___:0042302Fj
		mov	ecx, [esp+14h]
		mov	[esp+160h], ecx
		lea	eax, [ecx+ecx*2]
		lea	eax, [eax+eax*4]
		mov	edx, dword_444438[eax*4]
		mov	[esp+144h], edx


loc_423069:				; CODE XREF: ___:00423048j
		or	ebx, 0FFFFFFFFh


loc_42306C:				; CODE XREF: ___:00422FB2j
		mov	eax, [esp+144h]
		test	eax, eax
		jnz	short loc_42308A
		lea	ecx, [esi+2Ah]
		call	sub_4014D3
		push	eax
		push	offset dword_444578
		jmp	loc_4231A5
; ---------------------------------------------------------------------------


loc_42308A:				; CODE XREF: ___:00423075j
		push	offset dword_443600
		lea	edx, [esp+1Ch]
		push	5
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		push	offset dword_443DC4
		mov	ecx, eax
		mov	dword ptr [esp+7A0h], 7
		call	sub_4013E3
		lea	ecx, [esp+18h]
		mov	edi, eax
		mov	[esp+79Ch], ebx
		call	sub_401226
		test	edi, edi
		jz	loc_423167
		push	offset dword_443600
		lea	eax, [esp+1Ch]
		push	5
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+79Ch], 8
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+34h]
		push	10h
		push	ecx
		nop
		call	near ptr 77C3FA76h
		add	esp, 0Ch
		lea	ecx, [esp+18h]
		mov	[esp+79Ch], ebx
		call	sub_401226
		push	offset dword_443600
		lea	edx, [esp+1Ch]
		push	5
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		push	78h
		mov	ecx, eax
		mov	dword ptr [esp+7A0h], 9
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 77C47660h
		add	esp, 8
		lea	ecx, [esp+18h]
		neg	eax
		sbb	eax, eax
		mov	[esp+79Ch], ebx
		neg	eax
		mov	[esp+170h], eax
		call	sub_401226
		jmp	loc_423296
; ---------------------------------------------------------------------------


loc_423167:				; CODE XREF: ___:004230C8j
		push	offset dword_444574
		mov	ecx, esi
		call	sub_4013E3
		test	eax, eax
		jnz	short loc_4231C4
		push	offset dword_444570
		mov	ecx, esi
		call	sub_4013E3
		test	eax, eax
		jnz	short loc_4231C4
		push	offset dword_44456C
		mov	ecx, esi
		call	sub_4013E3
		test	eax, eax
		jnz	short loc_4231C4
		lea	ecx, [esi+2Ah]
		call	sub_4014D3
		push	eax
		push	offset dword_444550


loc_4231A5:				; CODE XREF: ___:00423085j
		mov	al, [esi+94h]
		mov	cl, [esi+93h]
		push	eax
		push	ecx
		mov	ecx, offset byte_4D60A5
		call	sub_401118


loc_4231BD:				; CODE XREF: ___:00422B72j
		mov	al, 1
		jmp	loc_422E3B
; ---------------------------------------------------------------------------


loc_4231C4:				; CODE XREF: ___:00423175j
					; ___:00423185j ...
		mov	ecx, dword_4D60BD
		lea	edx, [esp+14h]
		lea	eax, [esp+18h]
		push	edx
		push	eax
		push	ecx
		mov	dword ptr [esp+20h], 10h
		nop
		call	near ptr 71AB951Eh
		push	offset dword_444570
		mov	ecx, esi
		call	sub_4013E3
		mov	edx, eax
		mov	eax, [esp+1Ch]
		neg	edx
		sbb	edx, edx
		push	10h
		and	edx, 0FFFF0100h
		add	edx, 0FFFFh
		and	eax, edx
		push	eax
		mov	[esp+24h], eax
		nop
		call	near ptr 71AB3F41h
		push	eax
		lea	eax, [esp+38h]
		push	eax
		call	near ptr 77C47A90h
		nop
		add	esp, 0Ch
		mov	ecx, esi
		push	offset dword_444574
		call	sub_4013E3
		test	eax, eax
		jz	short loc_42328B
		push	offset dword_444570
		mov	ecx, esi
		call	sub_4013E3
		mov	ebp, dword_50FA90
		mov	edi, eax
		neg	edi
		sbb	edi, edi
		lea	ecx, [esp+30h]
		neg	edi
		push	30h
		push	ecx
		add	edi, 2
		call	ebp
		add	esp, 8
		xor	bl, bl
		test	edi, edi
		jle	short loc_42327E


loc_423262:				; CODE XREF: ___:0042327Cj
		test	eax, eax
		jz	short loc_42327E
		lea	edx, [esp+30h]
		push	30h
		push	edx
		mov	byte ptr [eax],	78h
		call	ebp
		add	esp, 8
		inc	bl
		movsx	ecx, bl
		cmp	ecx, edi
		jl	short loc_423262


loc_42327E:				; CODE XREF: ___:00423260j
					; ___:00423264j
		mov	dword ptr [esp+170h], 1
		jmp	short loc_423296
; ---------------------------------------------------------------------------


loc_42328B:				; CODE XREF: ___:00423231j
		mov	dword ptr [esp+170h], 0


loc_423296:				; CODE XREF: ___:00423162j
					; ___:00423289j
		mov	edx, dword_4D60BD
		xor	eax, eax
		mov	al, [esi+93h]
		lea	edi, [esi+2Ah]
		mov	ecx, edi
		mov	[esp+140h], edx
		mov	dword ptr [esp+168h], 0
		mov	[esp+16Ch], eax
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+44h]
		push	80h
		push	ecx
		nop
		call	near ptr 77C3FA76h
		mov	eax, [esp+17Ch]
		add	esp, 0Ch
		test	eax, eax
		mov	byte ptr [esp+0C0h], 0
		mov	eax, offset dword_444548
		jnz	short loc_4232F8
		mov	eax, offset dword_444538


loc_4232F8:				; CODE XREF: ___:004232F1j
		mov	edx, [esp+15Ch]
		mov	ecx, [esp+14Ch]
		push	edx
		mov	edx, [esp+14Ch]
		push	ecx
		mov	ecx, [esp+14Ch]
		push	edx
		lea	edx, [esp+3Ch]
		push	ecx
		push	edx
		push	eax
		mov	eax, [esp+178h]
		lea	eax, [eax+eax*2]
		lea	eax, [eax+eax*4]
		lea	ecx, ds:44441Ah[eax*4]
		push	ecx
		push	offset dword_4444E8
		mov	ecx, edi
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		push	0
		lea	ecx, [esp+5C8h]
		push	3
		push	ecx
		call	sub_401BD6
		add	esp, 3Ch
		lea	edx, [esp+30h]
		mov	[esp+150h], eax
		push	edx
		call	sub_402261
		mov	al, 1
		jmp	loc_422E3B
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 260h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4235F0	proc near		; CODE XREF: sub_40114Fj

arg_A6		= dword	ptr  0AAh
arg_AE		= dword	ptr  0B2h

		mov	ecx, [esp+arg_AE]
		push	ebx
		test	ecx, ecx
		push	offset byte_446F60
		mov	ecx, offset dword_447988
		setnz	bl
		call	sub_4014D3
		push	eax
		push	ebx
		push	ebx
		push	offset byte_4D60A5
		call	sub_401848
		mov	eax, [esp+18h+arg_A6]
		add	esp, 14h
		lea	eax, [eax+eax*2]
		pop	ebx
		lea	eax, [eax+eax*4]
		mov	ecx, dword_444440[eax*4]
		inc	ecx
		mov	dword_444440[eax*4], ecx
		mov	al, 1
		retn
sub_4235F0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_423660	proc near		; CODE XREF: sub_401DF7j

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		sub	esp, 14h
		xor	eax, eax
		lea	ecx, [esp+14h+var_14]
		mov	[esp+14h+var_10], eax
		lea	edx, [esp+14h+var_10]
		mov	[esp+14h+var_C], eax
		push	ecx
		mov	[esp+18h+var_8], eax
		push	edx
		mov	[esp+1Ch+var_4], eax
		mov	eax, [esp+1Ch+arg_0]
		push	eax
		mov	[esp+20h+var_14], 10h
		nop
		call	near ptr 71AB951Eh
		mov	ecx, [esp+14h+var_C+3]
		mov	edx, [esp+14h+var_C+2]
		mov	eax, [esp+14h+var_C+1]
		and	ecx, 0FFh
		push	ecx
		mov	ecx, [esp+18h+var_C]
		and	edx, 0FFh
		and	eax, 0FFh
		push	edx
		and	ecx, 0FFh
		push	eax
		push	ecx
		push	offset dword_443CB4
		push	offset dword_50DAD8
		nop
		call	near ptr byte_5EA1BD
		mov	eax, offset dword_50DAD8
		add	esp, 2Ch
		retn
sub_423660	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_9. PRESS KEYPAD "+" TO EXPAND]
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_423720	proc near		; CODE XREF: sub_401F37j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, dword_50BB80[esi*8]
		push	eax
		nop
		call	near ptr 71AB2BC0h
		inc	eax
		push	eax
		call	near ptr 71AB2BC0h
		nop
		mov	dword_50BB80[esi*8], eax
		pop	esi
		retn
sub_423720	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_423760	proc near		; CODE XREF: sub_401131j

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
arg_4		= dword	ptr  8

		sub	esp, 10h
		mov	edx, [esp+10h+arg_0]
		push	ebx
		or	ebx, 0FFFFFFFFh
		push	edi
		mov	edi, edx
		mov	ecx, ebx
		xor	eax, eax
		mov	[esp+18h+var_8], ebx
		repne scasb
		not	ecx
		dec	ecx
		mov	[esp+18h+var_C], ebx
		cmp	ecx, 0Fh
		mov	[esp+18h+var_10], ebx
		mov	[esp+18h+var_4], ebx
		jbe	short loc_423792
		pop	edi
		pop	ebx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_423792:				; CODE XREF: sub_423760+2Aj
		lea	eax, [esp+18h+var_4]
		push	esi
		lea	ecx, [esp+1Ch+var_10]
		push	eax
		push	ecx
		lea	eax, [esp+24h+var_C]
		lea	ecx, [esp+24h+var_8]
		push	eax
		push	ecx
		push	offset dword_443CB4
		push	edx
		nop
		call	near ptr 77C41B72h
		mov	eax, [esp+34h+var_8]
		mov	esi, dword_50FABC
		add	esp, 18h
		cmp	eax, ebx
		jnz	short loc_4237CA
		call	esi
		mov	[esp+1Ch+var_8], eax


loc_4237CA:				; CODE XREF: sub_423760+62j
		cmp	[esp+1Ch+var_C], ebx
		jnz	short loc_4237D6
		call	esi
		mov	[esp+1Ch+var_C], eax


loc_4237D6:				; CODE XREF: sub_423760+6Ej
		cmp	[esp+1Ch+var_10], ebx
		jnz	short loc_4237E2
		call	esi
		mov	[esp+1Ch+var_10], eax


loc_4237E2:				; CODE XREF: sub_423760+7Aj
		mov	eax, [esp+1Ch+var_4]
		cmp	eax, ebx
		jnz	short loc_4237EC
		call	esi


loc_4237EC:				; CODE XREF: sub_423760+88j
		mov	edi, [esp+1Ch+var_10]
		mov	edx, [esp+1Ch+var_C]
		shl	eax, 8
		mov	ecx, [esp+1Ch+arg_4]
		add	eax, edi
		shl	eax, 8
		add	eax, edx
		mov	edx, [esp+1Ch+var_8]
		shl	eax, 8
		add	eax, edx
		pop	esi
		pop	edi
		mov	dword_50BB80[ecx*8], eax
		pop	ebx
		add	esp, 10h
		retn
sub_423760	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_423850	proc near		; CODE XREF: sub_401E38j

var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_114		= word ptr -114h
var_112		= word ptr -112h
var_110		= dword	ptr -110h
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

		sub	esp, 120h
		push	esi
		push	edi
		mov	edi, 1
		push	0
		push	edi
		push	2
		mov	[esp+134h+var_120], edi
		nop
		call	near ptr 71AB3B91h
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_42387E
		pop	edi
		xor	eax, eax
		pop	esi
		add	esp, 120h
		retn
; ---------------------------------------------------------------------------


loc_42387E:				; CODE XREF: sub_423850+21j
		mov	ecx, [esp+128h+arg_4]
		mov	eax, [esp+128h+arg_0]
		push	ecx
		mov	[esp+12Ch+var_114], 2
		mov	[esp+12Ch+var_110], eax
		nop
		call	near ptr 71AB2B66h
		lea	edx, [esp+128h+var_120]
		mov	[esp+128h+var_112], ax
		push	edx
		push	8004667Eh
		push	esi
		nop
		call	near ptr 71AB4519h
		lea	eax, [esp+128h+var_114]
		push	10h
		push	eax
		push	esi
		nop
		call	near ptr 71AB406Ah
		mov	ecx, [esp+128h+arg_8]
		lea	edx, [esp+128h+var_11C]
		push	edx
		lea	eax, [esp+12Ch+var_104]
		push	0
		push	eax
		push	0
		push	0
		mov	[esp+13Ch+var_11C], ecx
		mov	[esp+13Ch+var_118], 0
		mov	[esp+13Ch+var_100], esi
		mov	[esp+13Ch+var_104], edi
		nop
		call	near ptr 71AB2DC0h
		push	esi
		mov	edi, eax
		nop
		call	near ptr 71AB9639h
		xor	eax, eax
		test	edi, edi
		pop	edi
		pop	esi
		setnle	al
		add	esp, 120h
		retn
sub_423850	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_423940:				; CODE XREF: ___:00401046j
		mov	eax, 10110h
		call	sub_436840
		push	ebx
		push	ebp
		mov	ebp, dword_50FC2C
		push	esi
		push	edi
		push	2649h
		call	ebp
		mov	[esp+24h], ax
		mov	eax, [esp+1012Ch]
		push	eax
		call	ebp
		mov	[esp+26h], ax
		nop
		call	near ptr 77C371D3h
		xor	ebx, ebx
		push	200h
		mov	[esp+2Ch], eax
		mov	[esp+30h], ebx
		mov	[esp+34h], bx
		mov	[esp+44h], bx
		mov	word ptr [esp+36h], 5
		mov	[esp+38h], bx
		mov	word ptr [esp+3Ah], 1
		mov	[esp+3Ch], bx
		mov	[esp+3Eh], bx
		mov	[esp+40h], bx
		mov	[esp+42h], bx
		call	ebp
		mov	ecx, [esp+10124h]
		mov	edx, [esp+10128h]
		push	24h
		mov	[esp+46h], ax
		mov	[esp+48h], bx
		mov	[esp+4Ah], bx
		mov	[esp+4Ch], ecx
		mov	[esp+50h], edx
		mov	[esp+54h], bl
		mov	byte ptr [esp+55h], 6
		call	ebp
		mov	[esp+52h], ax
		mov	ecx, 9
		lea	esi, [esp+24h]
		lea	edi, [esp+54h]
		lea	eax, [esp+48h]
		push	20h
		rep movsd
		push	eax
		call	sub_401A28
		mov	edx, [esp+10134h]
		xor	ecx, ecx
		mov	[esp+1Ch], ecx
		add	esp, 8
		mov	[esp+18h], ecx
		mov	[esp+44h], ax
		mov	[esp+1Ch], ecx
		push	edx
		mov	[esp+24h], ecx
		mov	word ptr [esp+18h], 2
		call	ebp
		mov	[esp+16h], ax
		mov	eax, [esp+10128h]
		push	6
		push	3
		push	2
		mov	[esp+24h], eax
		mov	dword ptr [esp+1Ch], 10h
		nop
		call	near ptr 71AB3B91h
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_423A69
		push	offset dword_4446E0
		jmp	loc_423B68
; ---------------------------------------------------------------------------


loc_423A69:				; CODE XREF: ___:00423A5Dj
		mov	ecx, [esp+10h]
		lea	edx, [esp+14h]
		push	ecx
		push	edx
		push	ebx
		lea	eax, [esp+30h]
		push	24h
		push	eax
		push	esi
		nop
		call	near ptr 71AB2C69h
		mov	edi, eax
		cmp	edi, 14h
		jz	short loc_423AC2
		nop
		call	near ptr 71AB94DCh
		push	eax
		push	edi
		lea	ecx, [esp+70h]
		push	offset dword_4446B0
		push	ecx
		call	near ptr byte_5EA1BD
		nop
		lea	edx, [esp+78h]
		push	edx
		call	sub_4010D2
		add	esp, 14h
		push	esi
		nop
		call	near ptr 71AB9639h
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 10110h
		retn
; ---------------------------------------------------------------------------


loc_423AC2:				; CODE XREF: ___:00423A87j
		mov	ecx, 400Dh
		xor	eax, eax
		lea	edi, [esp+0E8h]
		mov	ebp, 2649h
		rep stosd
		stosw
		stosb
		cmp	[esp+0FEh], bp
		jz	short loc_423B13
		mov	edi, dword_50FC58


loc_423AEA:				; CODE XREF: ___:00423B11j
		lea	eax, [esp+10h]
		lea	ecx, [esp+14h]
		push	eax
		push	ecx
		push	ebx
		lea	edx, [esp+0F4h]
		push	10037h
		push	edx
		push	esi
		call	edi
		test	eax, eax
		jl	short loc_423B42
		cmp	[esp+0FEh], bp
		jnz	short loc_423AEA


loc_423B13:				; CODE XREF: ___:00423AE2j
		push	esi
		nop
		call	near ptr 71AB9639h
		cmp	word ptr [esp+10Eh], 1
		jnz	short loc_423B63
		push	offset dword_4446A0
		call	sub_4010D2
		add	esp, 4
		mov	eax, 1
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 10110h
		retn
; ---------------------------------------------------------------------------


loc_423B42:				; CODE XREF: ___:00423B07j
		push	offset dword_444680
		call	sub_4010D2
		add	esp, 4
		push	esi
		nop
		call	near ptr 71AB9639h
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 10110h
		retn
; ---------------------------------------------------------------------------


loc_423B63:				; CODE XREF: ___:00423B23j
		push	offset dword_44466C


loc_423B68:				; CODE XREF: ___:00423A64j
		call	sub_4010D2
		add	esp, 4
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 10110h
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 90h dup(0CCh)
; ---------------------------------------------------------------------------


loc_423C10:				; CODE XREF: ___:loc_401F23j
		sub	esp, 290h
		mov	eax, [esp+294h]
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ecx, 53h
		mov	esi, eax
		lea	edi, [esp+18h]
		rep movsd
		mov	esi, [esp+13Ch]
		mov	ecx, [esp+140h]
		mov	[esp+10h], esi
		mov	[esp+14h], ecx
		mov	dword ptr [eax+148h], 1
		nop
		call	near ptr 27E0796h
		push	eax
		nop
		call	near ptr 77C371BCh
		lea	eax, [esi+esi*2]
		add	esp, 4
		shl	eax, 4
		sub	eax, esi
		lea	eax, [eax+eax*2]
		lea	ebp, ds:448FBBh[eax*4]
		mov	eax, dword_4491BF[eax*4]
		mov	ecx, dword_50BB84[eax*8]
		test	ecx, ecx
		jz	loc_423EC4
		mov	ebx, dword_50FBF0


loc_423C8C:				; CODE XREF: ___:00423EBAj
		mov	ecx, [esp+158h]
		push	eax
		test	ecx, ecx
		jz	short loc_423CA7
		lea	edx, [esp+1Ch]
		push	edx
		call	sub_401131
		add	esp, 8
		jmp	short loc_423CAF
; ---------------------------------------------------------------------------


loc_423CA7:				; CODE XREF: ___:00423C96j
		call	sub_401F37
		add	esp, 4


loc_423CAF:				; CODE XREF: ___:00423CA5j
		mov	ecx, [ebp+204h]
		mov	edx, [esp+12Ch]
		mov	edi, dword_50FC78
		mov	esi, eax
		mov	eax, [esp+14h]
		push	eax
		push	ecx
		push	edx
		push	esi
		call	edi
		push	eax
		lea	eax, [esp+230h]
		push	offset dword_444720
		push	eax
		call	ebx
		add	esp, 18h
		lea	ecx, [esp+220h]
		push	ecx
		push	ebp
		call	ebx
		mov	edx, [esp+138h]
		mov	eax, [esp+134h]
		push	edx
		push	eax
		push	esi
		call	sub_401E38
		add	esp, 14h
		cmp	eax, 1
		jnz	loc_423EA0
		cmp	dword ptr [esp+148h], 0FFFFFFFFh
		jnz	loc_423DC2
		push	offset dword_50DAC0
		nop
		call	near ptr 7C901005h
		mov	ecx, [esp+12Ch]
		push	ecx
		push	esi
		call	edi
		push	eax
		lea	edx, [esp+228h]
		push	offset dword_4446F8
		push	edx
		call	ebx
		mov	eax, [esp+164h]
		add	esp, 10h
		test	eax, eax
		jnz	short loc_423DA2
		mov	al, [esp+0A8h]
		test	al, al
		jz	short loc_423D7D
		mov	eax, [esp+150h]
		lea	ecx, [esp+220h]
		push	eax
		mov	eax, [esp+12Ch]
		lea	edx, [esp+0ACh]
		push	ecx
		push	edx
		push	eax
		jmp	short loc_423D9A
; ---------------------------------------------------------------------------


loc_423D7D:				; CODE XREF: ___:00423D59j
		mov	ecx, [esp+150h]
		lea	edx, [esp+220h]
		push	ecx
		mov	ecx, [esp+12Ch]
		lea	eax, [esp+2Ch]
		push	edx
		push	eax
		push	ecx


loc_423D9A:				; CODE XREF: ___:00423D7Bj
		call	sub_401523
		add	esp, 10h


loc_423DA2:				; CODE XREF: ___:00423D4Ej
		lea	edx, [esp+220h]
		push	edx
		call	sub_4010D2
		add	esp, 4
		push	offset dword_50DAC0
		call	near ptr 7C9010EDh
		nop
		jmp	loc_423EA0
; ---------------------------------------------------------------------------


loc_423DC2:				; CODE XREF: ___:00423D16j
		push	esi
		call	edi
		push	eax
		lea	eax, [esp+16Ch]
		push	eax
		call	ebx
		mov	eax, [esp+150h]
		add	esp, 8
		lea	eax, [eax+eax*2]
		lea	ecx, [eax+eax*4]
		lea	eax, [esp+1F8h]
		lea	edx, ds:444410h[ecx*4]
		push	edx
		push	eax
		call	ebx
		mov	al, [esp+0B0h]
		add	esp, 8
		test	al, al
		jz	short loc_423E12
		lea	ecx, [esp+0A8h]
		lea	edx, [esp+178h]
		push	ecx
		push	edx
		jmp	short loc_423E1F
; ---------------------------------------------------------------------------


loc_423E12:				; CODE XREF: ___:00423DFEj
		lea	eax, [esp+28h]
		lea	ecx, [esp+178h]
		push	eax
		push	ecx


loc_423E1F:				; CODE XREF: ___:00423E10j
		call	ebx
		mov	eax, [esp+158h]
		mov	edx, [esp+130h]
		mov	ecx, [esp+15Ch]
		mov	[esp+21Ah], eax
		mov	eax, [esp+18h]
		add	esp, 8
		mov	[esp+164h], edx
		mov	edx, [esp+12Ch]
		mov	[esp+206h], eax
		mov	eax, [esp+148h]
		sub	esp, 0BCh
		mov	[esp+2D2h], ecx
		mov	ecx, 2Eh
		lea	esi, [esp+220h]
		mov	edi, esp
		mov	[esp+2BEh], edx
		mov	[esp+2C6h], eax
		lea	eax, [eax+eax*2]
		rep movsd
		lea	edx, [eax+eax*4]
		movsw
		call	dword_44443C[edx*4]
		add	esp, 0BCh


loc_423EA0:				; CODE XREF: ___:00423D08j
					; ___:00423DBDj
		push	7D0h
		nop
		call	near ptr 2821E84h
		mov	eax, [ebp+204h]
		mov	ecx, dword_50BB84[eax*8]
		test	ecx, ecx
		jnz	loc_423C8C
		mov	esi, [esp+10h]


loc_423EC4:				; CODE XREF: ___:00423C80j
		push	esi
		call	sub_401E24
		add	esp, 4
		push	0
		call	near ptr 2830000h
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
; ---------------------------------------------------------------------------
		db 0C0h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_423FA0:				; CODE XREF: sub_402261j
		mov	eax, [esp+4]
		sub	esp, 1CCh
		mov	ecx, 53h
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, eax
		lea	edi, [esp+10h]
		mov	ebx, 1
		rep movsd
		mov	[eax+144h], ebx
		lea	eax, [esp+10h]
		push	eax
		nop
		call	near ptr 71AB2BF4h
		sub	esp, 14Ch
		lea	esi, [esp+15Ch]
		mov	ecx, [esp+27Ch]
		mov	edi, esp
		mov	dword_50BB80[ecx*8], eax
		mov	ecx, 53h
		rep movsd
		call	j_nullsub_9
		push	3
		call	sub_401483
		add	esp, 150h
		cmp	eax, ebx
		jnz	short loc_424021
		push	offset dword_50DAC0
		nop
		call	near ptr 2770000h
		push	offset dword_50DAC0
		nop
		call	near ptr 2770823h


loc_424021:				; CODE XREF: ___:00424009j
		mov	edx, [esp+130h]
		mov	eax, [esp+13Ch]
		mov	ebp, dword_50F8D0
		mov	esi, ebx
		mov	dword_50BB84[edx*8], ebx
		cmp	eax, ebx
		mov	ebx, dword_50FBF0
		jb	loc_424150
		mov	edi, dword_50F860


loc_424052:				; CODE XREF: ___:0042414Aj
		mov	eax, [esp+130h]
		mov	ecx, [esp+124h]
		push	esi
		push	eax
		lea	edx, [esp+18h]
		push	ecx
		push	edx
		lea	eax, [esp+16Ch]
		push	offset dword_4447E8
		push	eax
		mov	[esp+150h], esi
		call	ebx
		push	0
		lea	ecx, [esp+178h]
		push	3
		push	ecx
		call	sub_401BD6
		lea	ecx, [eax+eax*2]
		add	esp, 24h
		shl	ecx, 4
		sub	ecx, eax
		push	0
		push	0
		mov	[esp+13Ch], eax
		mov	eax, [esp+138h]
		lea	edx, [ecx+ecx*2]
		lea	ecx, [esp+18h]
		push	ecx
		push	offset loc_401F23
		push	0
		push	0
		mov	dword_4491BF[edx*4], eax
		call	edi
		mov	edx, [esp+134h]
		lea	ecx, [edx+edx*2]
		shl	ecx, 4
		sub	ecx, edx
		lea	edx, [ecx+ecx*2]
		mov	dword_4491CF[edx*4], eax
		mov	ecx, [esp+134h]
		lea	eax, [ecx+ecx*2]
		shl	eax, 4
		sub	eax, ecx
		lea	eax, [eax+eax*2]
		mov	ecx, dword_4491CF[eax*4]
		test	ecx, ecx
		jz	short loc_424118
		mov	eax, [esp+158h]
		test	eax, eax
		jnz	short loc_42413E


loc_424107:				; CODE XREF: ___:00424114j
		push	1Eh
		call	ebp
		mov	eax, [esp+158h]
		test	eax, eax
		jz	short loc_424107
		jmp	short loc_42413E
; ---------------------------------------------------------------------------


loc_424118:				; CODE XREF: ___:004240FAj
		call	near ptr 27B07B3h
		nop
		push	eax
		lea	ecx, [esp+160h]
		push	offset dword_4447A8
		push	ecx
		call	ebx
		lea	edx, [esp+168h]
		push	edx
		call	sub_4010D2
		add	esp, 10h


loc_42413E:				; CODE XREF: ___:00424105j
					; ___:00424116j
		push	1Eh
		call	ebp
		inc	esi
		cmp	esi, [esp+13Ch]
		jbe	loc_424052


loc_424150:				; CODE XREF: ___:00424046j
		mov	eax, [esp+12Ch]
		test	eax, eax
		jz	short loc_42417E
		lea	eax, [eax+eax*2]
		lea	eax, [eax+eax*4]
		lea	eax, [eax+eax*4]
		lea	eax, [eax+eax*4]
		lea	eax, [eax+eax*4]
		shl	eax, 5
		push	eax
		call	ebp
		mov	esi, 1
		mov	eax, [esp+12Ch]
		jmp	short loc_4241B1
; ---------------------------------------------------------------------------


loc_42417E:				; CODE XREF: ___:00424159j
		mov	ecx, [esp+130h]
		mov	esi, 1
		cmp	dword_50BB84[ecx*8], esi
		jnz	short loc_4241B1


loc_424193:				; CODE XREF: ___:004241A8j
		push	7D0h
		call	ebp
		mov	edx, [esp+130h]
		cmp	dword_50BB84[edx*8], esi
		jz	short loc_424193
		mov	eax, [esp+12Ch]


loc_4241B1:				; CODE XREF: ___:0042417Cj
					; ___:00424191j
		mov	ecx, [esp+130h]
		mov	edx, [esp+124h]
		push	eax
		push	edx
		mov	ecx, dword_50BB80[ecx*8]
		push	ecx
		call	near ptr 71AB3F41h
		nop
		push	eax
		lea	eax, [esp+168h]
		push	offset dword_444760
		push	eax
		call	ebx
		mov	eax, [esp+160h]
		add	esp, 14h
		test	eax, eax
		jnz	short loc_424212
		mov	ecx, [esp+148h]
		lea	edx, [esp+15Ch]
		push	ecx
		mov	ecx, [esp+124h]
		lea	eax, [esp+24h]
		push	edx
		push	eax
		push	ecx
		call	sub_401523
		add	esp, 10h


loc_424212:				; CODE XREF: ___:004241EBj
		lea	edx, [esp+15Ch]
		push	edx
		call	sub_4010D2
		mov	eax, [esp+134h]
		add	esp, 4
		push	0BB8h
		mov	dword_50BB84[eax*8], 0
		call	ebp
		push	3
		call	sub_401483
		add	esp, 4
		cmp	eax, esi
		jnz	short loc_424254
		push	offset dword_50DAC0
		nop
		call	near ptr 2770000h


loc_424254:				; CODE XREF: ___:00424247j
		mov	ecx, [esp+130h]
		push	ecx
		call	sub_401E24
		add	esp, 4
		push	0
		nop
		call	near ptr 2830000h
		nop
		nop
		nop
		nop
; ---------------------------------------------------------------------------
		db 0C0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424330	proc near		; CODE XREF: sub_4012A8j
		mov	eax, ecx
		mov	dword ptr [eax+4], 0
		mov	dword ptr [eax], 0
		retn
sub_424330	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_424350:				; CODE XREF: ___:004015E1j
		mov	edx, [esp+4]
		sub	esp, 8
		xor	eax, eax
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, edx
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	edx
		lea	ecx, [esp+10h]
		call	sub_401834
		mov	ecx, [eax]
		pop	edi
		mov	[esi], ecx
		mov	edx, [eax+4]
		mov	eax, esi
		mov	[esi+4], edx
		pop	esi
		add	esp, 8
		retn	4
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4243A0	proc near		; CODE XREF: sub_401834j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_4]
		mov	ebx, ecx
		push	ebp
		call	near ptr 77C2C407h
		nop
		mov	edx, eax
		add	esp, 4
		test	edx, edx
		jz	short loc_4243F2
		mov	ecx, ebp
		push	esi
		mov	esi, ecx
		push	edi
		xor	eax, eax
		mov	edi, edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		mov	esi, [esp+10h+arg_0]
		and	ecx, 3
		rep stosb
		mov	ecx, ebp
		mov	edi, edx
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, ebx
		and	ecx, 3
		rep movsb
		pop	edi
		mov	[ebx+4], ebp
		pop	esi
		mov	[ebx], edx
		pop	ebp
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_4243F2:				; CODE XREF: sub_4243A0+16j
		mov	eax, ebx
		pop	ebp
		pop	ebx
		retn	8
sub_4243A0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424420	proc near		; CODE XREF: sub_4021D5j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_4]
		push	ebx
		mov	ebx, ecx
		push	ebp
		mov	ecx, [esp+8+arg_C]
		lea	ebp, [eax+ecx]
		push	ebp
		call	near ptr 77C2C407h
		nop
		mov	edx, eax
		add	esp, 4
		test	edx, edx
		jz	short loc_424494
		mov	ecx, ebp
		push	esi
		mov	esi, ecx
		push	edi
		xor	eax, eax
		mov	edi, edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		mov	esi, [esp+10h+arg_0]
		and	ecx, 3
		rep stosb
		mov	ecx, [esp+10h+arg_4]
		mov	edi, edx
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+10h+arg_C]
		mov	esi, [esp+10h+arg_8]
		lea	edi, [edx+eax]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, ebx
		and	ecx, 3
		rep movsb
		pop	edi
		mov	[ebx+4], ebp
		pop	esi
		mov	[ebx], edx
		pop	ebp
		pop	ebx
		retn	10h
; ---------------------------------------------------------------------------


loc_424494:				; CODE XREF: sub_424420+1Dj
		mov	eax, ebx
		pop	ebp
		pop	ebx
		retn	10h
sub_424420	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4244C0	proc near		; CODE XREF: sub_4016B8j
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4244D3
		push	eax
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4


loc_4244D3:				; CODE XREF: sub_4244C0+7j
		mov	dword ptr [esi+4], 0
		mov	dword ptr [esi], 0
		pop	esi
		retn
sub_4244C0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424500	proc near		; CODE XREF: sub_4010A0j

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		mov	ebx, ecx
		push	ebp
		push	esi
		mov	eax, [ebx+4]
		cmp	eax, 0FFFFh
		jl	short loc_424517
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_424517:				; CODE XREF: sub_424500+Ej
		xor	ecx, ecx
		cmp	eax, 7Fh
		setnl	cl
		dec	ecx
		and	ecx, 0FFFFFFFEh
		add	ecx, 3
		mov	esi, ecx
		add	eax, esi
		mov	[esp+10h+var_4], esi
		push	eax
		nop
		call	near ptr 77C2C407h
		mov	ebp, eax
		add	esp, 4
		test	ebp, ebp
		jnz	short loc_424545
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_424545:				; CODE XREF: sub_424500+3Cj
		push	edi
		mov	edi, [ebx+4]
		mov	ecx, esi
		xor	eax, eax
		add	ecx, edi
		mov	edi, ebp
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		cmp	esi, 1
		rep stosb
		jnz	short loc_424574
		mov	al, [ebx+4]
		lea	edi, [ebp+1]
		mov	[ebp+0], al
		mov	ecx, [ebx+4]
		mov	esi, [ebx]
		jmp	short loc_42458F
; ---------------------------------------------------------------------------


loc_424574:				; CODE XREF: sub_424500+62j
		mov	byte ptr [ebp+0], 82h
		mov	eax, [ebx+4]
		sar	eax, 8
		mov	[ebp+1], al
		mov	cl, [ebx+4]
		mov	[ebp+2], cl
		mov	ecx, [ebx+4]
		mov	esi, [ebx]
		lea	edi, [ebp+3]


loc_42458F:				; CODE XREF: sub_424500+72j
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	eax, [ebx]
		push	eax
		nop
		call	near ptr 77C2C21Bh
		mov	ecx, [esp+18h+var_4]
		mov	eax, [ebx+4]
		add	esp, 4
		add	eax, ecx
		mov	[ebx], ebp
		mov	[ebx+4], eax
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		pop	ecx
		retn
sub_424500	endp

; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4245F0	proc near		; CODE XREF: sub_401B68j

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		sub	esp, 8
		push	ebx
		push	ebp
		mov	ebp, ecx
		mov	eax, [ebp+4]
		mov	ecx, [ebp+0]
		push	eax
		push	ecx
		push	1
		push	offset dword_446F64
		lea	ecx, [esp+20h+var_8]
		call	sub_4021D5
		lea	ecx, [esp+10h+var_8]
		call	sub_4010A0
		mov	edx, [esp+10h+var_4]
		inc	edx
		push	edx
		nop
		call	near ptr 77C2C407h
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jnz	short loc_424635
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_424635:				; CODE XREF: sub_4245F0+3Bj
		mov	eax, [esp+10h+var_4]
		push	esi
		push	edi
		mov	edi, ebx
		lea	ecx, [eax+1]
		xor	eax, eax
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	byte ptr [ebx],	3
		mov	ecx, [esp+18h+var_4]
		mov	esi, [esp+18h+var_8]
		mov	eax, ecx
		lea	edi, [ebx+1]
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, ebp
		call	sub_4016B8
		mov	ecx, [esp+18h+var_4]
		mov	[ebp+0], ebx
		inc	ecx
		mov	[ebp+4], ecx
		lea	ecx, [esp+18h+var_8]
		call	sub_4016B8
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 8
		retn
sub_4245F0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4246D0	proc near		; CODE XREF: sub_4012C6j

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		sub	esp, 8
		push	esi
		mov	esi, ecx
		mov	ecx, [esp+0Ch+arg_0]
		push	eax
		mov	edx, [esi+4]
		mov	eax, [esi]
		push	ecx
		push	edx
		push	eax
		lea	ecx, [esp+1Ch+var_8]
		call	sub_4021D5
		mov	ecx, esi
		call	sub_4016B8
		mov	ecx, [esp+0Ch+var_8]
		mov	edx, [esp+0Ch+var_4]
		mov	[esi], ecx
		mov	[esi+4], edx
		mov	al, 1
		pop	esi
		add	esp, 8
		retn	8
sub_4246D0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424720	proc near		; CODE XREF: sub_402036j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	edx, ecx
		push	edi
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		push	esi
		mov	ecx, edx
		call	sub_4012C6
		pop	edi
		pop	esi
		retn	4
sub_424720	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424760	proc near		; CODE XREF: sub_4014FBj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_0]
		push	eax
		push	edx
		call	sub_4012C6
		retn	8
sub_424760	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424790	proc near		; CODE XREF: sub_4017CBj

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		sub	esp, 8
		push	esi
		mov	esi, ecx
		call	sub_4010A0
		test	al, al
		jnz	short loc_4247A4
		pop	esi
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_4247A4:				; CODE XREF: sub_424790+Dj
		mov	eax, [esi+4]
		mov	ecx, [esi]
		push	eax
		push	ecx
		push	1
		push	offset dword_444B94
		lea	ecx, [esp+1Ch+var_8]
		call	sub_4021D5
		mov	ecx, esi
		call	sub_4016B8
		mov	edx, [esp+0Ch+var_8]
		mov	eax, [esp+0Ch+var_4]
		mov	[esi], edx
		mov	[esi+4], eax
		mov	al, 1
		pop	esi
		add	esp, 8
		retn
sub_424790	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424800	proc near		; CODE XREF: sub_401EABj

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]
		push	ecx
		mov	ecx, esi
		call	sub_4014FB
		test	al, al
		jnz	short loc_42481C
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_42481C:				; CODE XREF: sub_424800+16j
		mov	ecx, esi
		call	sub_4017CB
		pop	esi
		retn	8
sub_424800	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424840	proc near		; CODE XREF: sub_401BEAj

var_858		= dword	ptr -858h
var_854		= dword	ptr -854h
var_850		= dword	ptr -850h
var_84C		= dword	ptr -84Ch
var_848		= dword	ptr -848h
var_844		= dword	ptr -844h
var_840		= dword	ptr -840h
var_83C		= dword	ptr -83Ch
var_838		= dword	ptr -838h
var_834		= dword	ptr -834h
var_830		= dword	ptr -830h
var_82C		= dword	ptr -82Ch
var_828		= dword	ptr -828h
var_824		= dword	ptr -824h
var_820		= dword	ptr -820h
var_81C		= dword	ptr -81Ch
var_818		= dword	ptr -818h
var_814		= dword	ptr -814h
var_810		= dword	ptr -810h
var_80C		= dword	ptr -80Ch
var_808		= dword	ptr -808h
var_804		= dword	ptr -804h
var_800		= byte ptr -800h
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

		sub	esp, 858h
		lea	ecx, [esp+858h+var_818]
		push	ebx
		push	esi
		call	sub_4012A8
		mov	esi, [esp+860h+arg_8]
		cmp	esi, 408h
		jg	loc_424C15
		mov	ebx, [esp+860h+arg_10]
		lea	eax, [ebx+8]
		cmp	eax, 408h
		ja	loc_424C15
		push	edi
		lea	ecx, [esp+864h+var_830]
		call	sub_4012A8
		lea	ecx, [esp+864h+var_840]
		call	sub_4012A8
		lea	ecx, [esp+864h+var_810]
		call	sub_4012A8
		lea	ecx, [esp+864h+var_848]
		call	sub_4012A8
		lea	ecx, [esp+864h+var_820]
		call	sub_4012A8
		lea	ecx, [esp+864h+var_828]
		call	sub_4012A8
		lea	ecx, [esp+864h+var_838]
		call	sub_4012A8
		push	4
		push	offset dword_444830
		lea	ecx, [esp+86Ch+var_830]
		call	sub_4012C6
		push	3
		push	offset dword_444838
		lea	ecx, [esp+86Ch+var_830]
		call	sub_4012C6
		lea	ecx, [esp+864h+var_830]
		call	sub_401B68
		lea	ecx, [esp+864h+var_830]
		call	sub_4017CB
		mov	ecx, 200h
		mov	eax, 42424242h
		lea	edi, [esp+864h+var_800]
		push	8
		rep stosd
		push	offset dword_444824
		lea	ecx, [esp+86Ch+var_840]
		call	sub_4012C6
		mov	ecx, [esp+864h+arg_C]
		push	ebx
		push	ecx
		lea	ecx, [esp+86Ch+var_840]
		call	sub_4012C6
		mov	ebx, [esp+864h+var_83C]
		mov	edx, 409h
		sub	edx, ebx
		lea	eax, [esp+864h+var_800]
		push	edx
		push	eax
		lea	ecx, [esp+86Ch+var_840]
		call	sub_4012C6
		lea	ecx, [esp+864h+var_840]
		call	sub_401B68
		push	offset dword_444BB8
		lea	ecx, [esp+868h+var_810]
		call	sub_402036
		lea	ecx, [esp+864h+var_810]
		call	sub_401B68
		mov	ecx, 200h
		mov	eax, 44444444h
		lea	edi, [esp+864h+var_800]
		push	410h
		rep stosd
		lea	ecx, [esp+868h+var_800]
		push	ecx
		lea	ecx, [esp+86Ch+var_808]
		call	sub_401834
		lea	ecx, [esp+864h+var_808]
		call	sub_401B68
		mov	edx, [esp+864h+var_804]
		mov	eax, [esp+864h+var_808]
		push	edx
		push	eax
		lea	ecx, [esp+86Ch+var_810]
		call	sub_401EAB
		lea	ecx, [esp+864h+var_808]
		call	sub_4016B8
		mov	ecx, 200h
		mov	eax, 43434343h
		lea	edi, [esp+864h+var_800]
		push	offset dword_444BB0
		rep stosd
		lea	ecx, [esp+868h+var_848]
		call	sub_402036
		push	4
		push	offset dword_44483C
		lea	ecx, [esp+86Ch+var_848]
		call	sub_4012C6
		mov	ecx, [esp+864h+arg_4]
		push	esi
		push	ecx
		lea	ecx, [esp+86Ch+var_848]
		call	sub_4012C6
		mov	edx, 408h
		lea	eax, [esp+864h+var_800]
		sub	edx, esi
		lea	ecx, [esp+864h+var_848]
		push	edx
		push	eax
		call	sub_4012C6
		lea	ecx, [esp+864h+var_848]
		call	sub_401B68
		mov	ecx, [esp+864h+var_844]
		mov	edx, [esp+864h+var_848]
		push	ecx
		push	edx
		lea	ecx, [esp+86Ch+var_820]
		call	sub_4014FB
		mov	eax, [esp+864h+var_80C]
		mov	ecx, [esp+864h+var_810]
		push	eax
		push	ecx
		lea	ecx, [esp+86Ch+var_820]
		call	sub_4014FB
		lea	ecx, [esp+864h+var_820]
		call	sub_4017CB
		lea	ecx, [esp+864h+var_848]
		call	sub_4016B8
		lea	ecx, [esp+864h+var_810]
		call	sub_4016B8
		mov	edx, [esp+864h+var_83C]
		mov	eax, [esp+864h+var_840]
		push	edx
		push	eax
		lea	ecx, [esp+86Ch+var_828]
		call	sub_4014FB
		mov	ecx, [esp+864h+var_82C]
		mov	edx, [esp+864h+var_830]
		push	ecx
		push	edx
		lea	ecx, [esp+86Ch+var_828]
		call	sub_4014FB
		mov	eax, [esp+864h+var_81C]
		mov	ecx, [esp+864h+var_820]
		push	eax
		push	ecx
		lea	ecx, [esp+86Ch+var_828]
		call	sub_4014FB
		lea	ecx, [esp+864h+var_828]
		call	sub_4017CB
		lea	ecx, [esp+864h+var_840]
		call	sub_4016B8
		lea	ecx, [esp+864h+var_830]
		call	sub_4016B8
		lea	ecx, [esp+864h+var_820]
		call	sub_4016B8
		mov	ecx, 200h
		mov	eax, 41414141h
		lea	edi, [esp+864h+var_800]
		lea	edx, [esp+864h+var_800]
		rep stosd
		push	400h
		push	edx
		lea	ecx, [esp+86Ch+var_838]
		call	sub_4012C6
		lea	ecx, [esp+864h+var_838]
		call	sub_401B68
		push	2
		push	offset dword_444BAC
		lea	ecx, [esp+86Ch+var_838]
		call	sub_4012C6
		mov	eax, [esp+864h+var_824]
		mov	ecx, [esp+864h+var_828]
		push	eax
		push	ecx
		lea	ecx, [esp+86Ch+var_838]
		call	sub_4014FB
		lea	ecx, [esp+864h+var_838]
		call	sub_4017CB
		lea	ecx, [esp+864h+var_828]
		call	sub_4016B8
		lea	ecx, [esp+864h+var_850]
		call	sub_4012A8
		lea	ecx, [esp+864h+var_858]
		call	sub_4012A8
		mov	edx, [esp+864h+var_834]
		mov	eax, [esp+864h+var_838]
		push	edx
		push	eax
		lea	ecx, [esp+86Ch+var_850]
		call	sub_4014FB
		lea	ecx, [esp+864h+var_850]
		call	sub_4010A0
		lea	ecx, [esp+864h+var_838]
		call	sub_4016B8
		push	offset dword_444BA8
		lea	ecx, [esp+868h+var_858]
		call	sub_402036
		mov	ecx, [esp+864h+var_84C]
		mov	edx, [esp+864h+var_850]
		push	ecx
		push	edx
		lea	ecx, [esp+86Ch+var_858]
		call	sub_4014FB
		lea	ecx, [esp+864h+var_858]
		call	sub_4010A0
		lea	ecx, [esp+864h+var_850]
		call	sub_4016B8
		push	offset dword_443E80
		lea	ecx, [esp+868h+var_850]
		call	sub_402036
		mov	eax, [esp+864h+var_854]
		mov	ecx, [esp+864h+var_858]
		push	eax
		push	ecx
		lea	ecx, [esp+86Ch+var_850]
		call	sub_4014FB
		lea	ecx, [esp+864h+var_850]
		call	sub_4010A0
		lea	ecx, [esp+864h+var_858]
		call	sub_4016B8
		push	offset dword_444B9C
		lea	ecx, [esp+868h+var_858]
		call	sub_402036
		mov	edx, [esp+864h+var_84C]
		mov	eax, [esp+864h+var_850]
		push	edx
		push	eax
		lea	ecx, [esp+86Ch+var_858]
		call	sub_4014FB
		lea	ecx, [esp+864h+var_858]
		call	sub_4010A0
		lea	ecx, [esp+864h+var_850]
		call	sub_4016B8
		push	offset dword_444B98
		lea	ecx, [esp+868h+var_818]
		call	sub_402036
		mov	ecx, [esp+864h+var_854]
		mov	edx, [esp+864h+var_858]
		push	ecx
		push	edx
		lea	ecx, [esp+86Ch+var_818]
		call	sub_4014FB
		lea	ecx, [esp+864h+var_858]
		call	sub_4016B8
		mov	eax, [esp+864h+arg_0]
		mov	ecx, [esp+864h+var_818]
		mov	edx, [esp+864h+var_814]
		pop	edi
		mov	[eax], ecx
		pop	esi
		mov	[eax+4], edx
		pop	ebx
		add	esp, 858h
		retn
; ---------------------------------------------------------------------------


loc_424C15:				; CODE XREF: sub_424840+1Ej
					; sub_424840+33j
		mov	eax, [esp+860h+arg_0]
		mov	ecx, [esp+860h+var_818]
		mov	edx, [esp+860h+var_814]
		pop	esi
		mov	[eax], ecx
		mov	[eax+4], edx
		pop	ebx
		add	esp, 858h
		retn
sub_424840	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 100h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424D40	proc near		; CODE XREF: sub_401AB4j

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

		sub	esp, 210h
		push	esi
		mov	esi, [esp+214h+arg_0]
		lea	eax, [esp+214h+var_210]
		lea	ecx, [esp+214h+var_104]
		push	eax
		push	ecx
		lea	edx, [esp+21Ch+var_208]
		push	0
		lea	eax, [esi+1]
		push	edx
		push	eax
		mov	[esp+228h+var_204], esi
		mov	[esp+228h+var_208], 1
		mov	[esp+228h+var_100], esi
		mov	[esp+228h+var_104], 1
		mov	[esp+228h+var_210], 0Ah
		mov	[esp+228h+var_20C], 0
		nop
		call	near ptr 71AB2DC0h
		cmp	eax, 1
		jz	short loc_424DA9
		xor	eax, eax
		pop	esi
		add	esp, 210h
		retn
; ---------------------------------------------------------------------------


loc_424DA9:				; CODE XREF: sub_424D40+5Dj
		lea	ecx, [esp+214h+var_208]
		push	ecx
		push	esi
		call	sub_436F60
sub_424D40	endp

; ---------------------------------------------------------------------------
		test	eax, eax
		jnz	short loc_424DC0
		pop	esi
		add	esp, 210h
		retn
; ---------------------------------------------------------------------------


loc_424DC0:				; CODE XREF: ___:00424DB6j
		mov	edx, [esp+224h]
		mov	eax, [esp+220h]
		mov	ecx, [esp+21Ch]
		push	edx
		push	eax
		push	ecx
		push	esi
		nop
		call	near ptr 71AB615Ah
		pop	esi
		add	esp, 210h
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424E20	proc near		; CODE XREF: sub_4012F3j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_8]
		push	edi
		push	esi
		nop
		call	near ptr 71AB2BC0h
		mov	edi, [esp+0Ch+arg_0]
		mov	ebx, dword_50FC8C
		mov	[esp+0Ch+arg_8], eax
		push	0
		lea	eax, [esp+10h+arg_8]
		push	4
		push	eax
		push	edi
		call	ebx
		cmp	eax, 4
		jz	short loc_424E53
		pop	edi
		pop	esi
		xor	al, al
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_424E53:				; CODE XREF: sub_424E20+2Bj
		mov	ecx, [esp+0Ch+arg_4]
		push	0
		push	esi
		push	ecx
		push	edi
		call	ebx
		xor	edx, edx
		cmp	eax, esi
		setz	dl
		pop	edi
		pop	esi
		mov	al, dl
		pop	ebx
		retn
sub_424E20	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_424E90	proc near		; CODE XREF: sub_4012F8j

var_104		= dword	ptr -104h
var_100		= byte ptr -100h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 104h
		push	ebx
		push	ebp
		mov	ebp, [esp+10Ch+arg_8]
		push	esi
		lea	esi, [ebp+41h]
		push	esi
		mov	[esp+114h+var_104], esi
		call	near ptr 77C2C407h
		nop
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jnz	short loc_424EC3
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------


loc_424EC3:				; CODE XREF: sub_424E90+25j
		mov	ecx, esi
		push	edi
		mov	edx, ecx
		xor	eax, eax
		mov	edi, ebx
		mov	esi, offset dword_4448CC
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		push	85h
		and	ecx, 3
		push	offset dword_444844
		rep stosb
		mov	ecx, 0Bh
		mov	edi, ebx
		rep movsd
		movsw
		movsb
		mov	[ebx+2Fh], bp
		mov	eax, dword_4448FC
		mov	[ebx+31h], eax
		mov	ecx, dword_444900
		mov	esi, [esp+11Ch+arg_4]
		mov	[ebx+35h], ecx
		mov	ecx, ebp
		lea	eax, [ebx+3Bh]
		mov	edx, ecx
		mov	edi, eax
		shr	ecx, 2
		mov	[ebx+39h], bp
		add	eax, ebp
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, dword_50E130
		mov	esi, [esp+11Ch+arg_0]
		mov	[eax], ecx
		mov	dx, word_50E134
		push	esi
		mov	[eax+4], dx
		call	sub_4012F3
		add	esp, 0Ch
		test	al, al
		pop	edi
		jnz	short loc_424F68
		push	ebx
		call	near ptr 77C2C21Bh
		nop
		add	esp, 4
		xor	al, al
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------


loc_424F68:				; CODE XREF: sub_424E90+C0j
		push	0
		lea	eax, [esp+114h+var_100]
		push	100h
		push	eax
		push	esi
		call	sub_401AB4
		mov	ecx, [esp+120h+var_104]
		push	ecx
		push	ebx
		push	esi
		call	sub_4012F3
		add	esp, 1Ch
		test	al, al
		jnz	short loc_424FA3
		push	ebx
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4
		xor	al, al
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 104h
		retn
; ---------------------------------------------------------------------------


loc_424FA3:				; CODE XREF: sub_424E90+FBj
		push	0
		lea	edx, [esp+114h+var_100]
		push	100h
		push	edx
		push	esi
		call	sub_401AB4
		push	ebx
		call	near ptr 77C2C21Bh
		nop
		add	esp, 14h
		mov	al, 1
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 104h
		retn
sub_424E90	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_425020:				; CODE XREF: ___:00401811j
		sub	esp, 41Ch
		mov	ecx, 0FFh
		xor	eax, eax
		push	ebp
		push	esi
		push	edi
		lea	edi, [esp+29h]
		rep stosd
		stosw
		stosb
		mov	ecx, 23h
		mov	esi, offset dword_444A70
		lea	edi, [esp+28h]
		rep movsd
		movsw
		mov	ecx, offset byte_447541
		movsb
		call	sub_4017E4
		push	eax
		mov	ecx, offset byte_447541
		call	sub_4017E4
		mov	ecx, [esp+430h]
		push	eax
		mov	eax, dword_44767F
		push	eax
		push	ecx
		call	sub_401DF7
		add	esp, 4
		lea	edx, [esp+0C3h]
		push	eax
		push	offset dword_444BC4
		push	400h
		push	edx
		nop
		call	near ptr 77C3FA76h
		add	eax, 90h
		lea	ecx, [esp+2Ch]
		push	eax
		lea	eax, [esp+48h]
		push	eax
		push	164h
		push	offset dword_444908
		push	ecx
		call	sub_401BEA
		mov	eax, [esp+44h]
		xor	edi, edi
		add	esp, 30h
		cmp	eax, edi
		jnz	short loc_4250C9
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 41Ch
		retn
; ---------------------------------------------------------------------------


loc_4250C9:				; CODE XREF: ___:004250BBj
		mov	ebp, dword_50FC2C
		mov	[esp+0Ch], edi


loc_4250D3:				; CODE XREF: ___:00425178j
		test	edi, edi
		jnz	loc_42517E
		push	6
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_425161
		mov	eax, [esp+4CAh]
		xor	edx, edx
		mov	[esp+1Ah], edx
		push	eax
		mov	[esp+22h], edx
		mov	word ptr [esp+1Ch], 2
		mov	[esp+26h], edx
		mov	[esp+2Ah], dx
		call	ebp
		lea	ecx, [esp+430h]
		mov	[esp+1Ah], ax
		push	ecx
		call	near ptr 71AB2BF4h
		nop
		lea	edx, [esp+18h]
		push	10h
		push	edx
		push	esi
		mov	[esp+28h], eax
		nop
		call	near ptr 71AB406Ah
		cmp	eax, 0FFFFFFFFh
		jz	short loc_425156
		mov	eax, [esp+14h]
		mov	ecx, [esp+10h]
		push	eax
		push	ecx
		push	esi
		call	sub_4012F8
		add	esp, 0Ch
		and	eax, 0FFh
		mov	edi, eax


loc_425156:				; CODE XREF: ___:0042513Aj
		push	esi
		call	near ptr 71AB9639h
		nop
		test	edi, edi
		jnz	short loc_42516C


loc_425161:				; CODE XREF: ___:004250ECj
		push	3E8h
		nop
		call	near ptr 2821E84h


loc_42516C:				; CODE XREF: ___:0042515Fj
		mov	eax, [esp+0Ch]
		inc	eax
		cmp	eax, 2
		mov	[esp+0Ch], eax
		jl	loc_4250D3


loc_42517E:				; CODE XREF: ___:004250D5j
		lea	ecx, [esp+10h]
		call	sub_4016B8
		test	edi, edi
		jz	short loc_4251AE
		sub	esp, 0BCh
		mov	ecx, 2Eh
		lea	esi, [esp+4E8h]
		mov	edi, esp
		rep movsd
		movsw
		call	sub_40114F
		add	esp, 0BCh


loc_4251AE:				; CODE XREF: ___:00425189j
		pop	edi
		pop	esi
		mov	eax, 1
		pop	ebp
		add	esp, 41Ch
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 70h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_425230	proc near		; CODE XREF: sub_4013C5j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	edi
		mov	edi, [esp+4+arg_4]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		mov	edi, [esp+4+arg_0]
		not	ecx
		dec	ecx
		mov	edx, ecx
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		pop	edi
		lea	eax, [ecx+edx*2+0C1h]
		retn
sub_425230	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_425270	proc near		; CODE XREF: sub_40178Aj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	ebx
		mov	ebx, [esp+4+arg_8]
		push	esi
		mov	esi, [esp+8+arg_C]
		push	esi
		push	ebx
		call	sub_4013C5
		mov	ecx, [esp+10h+arg_4]
		add	esp, 8
		cmp	eax, ecx
		mov	[esp+8+arg_8], eax
		jbe	short loc_425295
		pop	esi
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_425295:				; CODE XREF: sub_425270+1Ej
		push	ebp
		push	edi
		or	ecx, 0FFFFFFFFh
		mov	edi, ebx
		xor	eax, eax
		mov	ebp, [esp+10h+arg_0]
		repne scasb
		not	ecx
		dec	ecx
		mov	edi, esi
		mov	edx, ecx
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		mov	esi, offset dword_444C98
		mov	eax, ecx
		mov	edi, ebp
		lea	ecx, [eax+edx+12h]
		mov	dword_444CFC, ecx
		lea	ecx, [eax+1]
		mov	dword_444D1D, ecx
		lea	ecx, [eax+17h]
		mov	dword_444D15, ecx
		mov	ecx, 0FFFFFFEDh
		sub	ecx, eax
		mov	dword_444D2B, ecx
		mov	ecx, 1Dh
		rep movsd
		mov	ecx, edx
		mov	esi, ebx
		mov	ebx, ecx
		lea	edi, [ebp+74h]
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		add	edx, 74h
		and	ecx, 3
		rep movsb
		mov	esi, dword_444D0C
		lea	ecx, [edx+ebp]
		add	edx, 5
		mov	[ecx], esi
		mov	bl, byte_444D10
		mov	esi, [esp+10h+arg_C]
		lea	edi, [edx+ebp]
		mov	[ecx+4], bl
		mov	ecx, eax
		mov	ebx, ecx
		add	edx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	esi, dword_444D11
		lea	ecx, [edx+ebp]
		add	edx, 10h
		mov	[ecx], esi
		mov	esi, dword_444D15
		lea	edi, [edx+ebp]
		mov	[ecx+4], esi
		mov	esi, dword_444D19
		mov	[ecx+8], esi
		mov	esi, dword_444D1D
		mov	[ecx+0Ch], esi
		mov	esi, [esp+10h+arg_C]
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		lea	edi, [edx+eax]
		mov	eax, [esp+10h+arg_8]
		add	edi, ebp
		mov	ecx, 0Eh
		mov	esi, offset byte_444D21
		rep movsd
		pop	edi
		pop	ebp
		pop	esi
		pop	ebx
		retn
sub_425270	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4253E0	proc near		; CODE XREF: sub_402162j

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_4013C5
		push	eax
		call	sub_4017BC
		add	esp, 0Ch
		retn
sub_4253E0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_425410:				; CODE XREF: ___:00401735j
		push	ebx
		mov	ebx, [esp+10h]
		push	ebp
		push	edi
		mov	edi, [esp+1Ch]
		push	edi
		push	ebx
		call	sub_402162
		mov	ebp, [esp+1Ch]
		add	esp, 8
		cmp	eax, ebp
		jbe	short loc_425433
		pop	edi
		pop	ebp
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_425433:				; CODE XREF: ___:0042542Bj
		cmp	eax, 0FFFFh
		jbe	short loc_425440
		pop	edi
		pop	ebp
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_425440:				; CODE XREF: ___:00425438j
		push	esi
		push	edi
		push	ebx
		call	sub_4013C5
		add	eax, 101h
		push	eax
		nop
		call	near ptr 77C2C407h
		add	esp, 0Ch
		mov	esi, eax
		push	edi
		push	ebx
		push	edi
		push	ebx
		call	sub_4013C5
		add	esp, 8
		push	eax
		push	esi
		call	sub_40178A
		push	eax
		mov	eax, [esp+28h]
		push	esi
		push	ebp
		push	eax
		call	sub_401B77
		push	esi
		mov	edi, eax
		nop
		call	near ptr 77C2C21Bh
		add	esp, 24h
		mov	eax, edi
		pop	esi
		pop	edi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4254B0	proc near		; CODE XREF: sub_4017BCj

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	cl, cl
		jnz	short loc_4254B9
		inc	ecx


loc_4254B9:				; CODE XREF: sub_4254B0+6j
		mov	eax, 0FFh
		cmp	eax, ecx
		sbb	eax, eax
		and	eax, 2
		add	eax, 15h
		add	eax, ecx
		retn
sub_4254B0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4254E0	proc near		; CODE XREF: sub_401B77j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	ebx
		mov	ebx, [esp+4+arg_C]
		cmp	bl, 0Ah
		jz	short loc_4254F8
		cmp	bl, 0Dh
		jz	short loc_4254F8
		cmp	bl, 5Ch
		jz	short loc_4254F8
		test	bl, bl
		jnz	short loc_4254F9


loc_4254F8:				; CODE XREF: sub_4254E0+8j
					; sub_4254E0+Dj ...
		inc	ebx


loc_4254F9:				; CODE XREF: sub_4254E0+16j
		cmp	ebx, 0FFh
		jbe	short loc_42551C
		mov	eax, ebx
		shr	eax, 8
		cmp	al, 0Ah
		jz	short loc_425516
		cmp	al, 0Dh
		jz	short loc_425516
		cmp	al, 5Ch
		jz	short loc_425516
		test	al, al
		jnz	short loc_42551C


loc_425516:				; CODE XREF: sub_4254E0+28j
					; sub_4254E0+2Cj ...
		add	ebx, 100h


loc_42551C:				; CODE XREF: sub_4254E0+1Fj
					; sub_4254E0+34j
		push	ebx
		call	sub_4017BC
		mov	ecx, [esp+8+arg_4]
		add	esp, 4
		cmp	eax, ecx
		mov	[esp+4+arg_C], eax
		jbe	short loc_425535
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_425535:				; CODE XREF: sub_4254E0+4Fj
		cmp	eax, 0FFFFh
		jbe	short loc_425540
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_425540:				; CODE XREF: sub_4254E0+5Aj
		mov	al, byte_50E138
		xor	edx, edx
		push	ebp
		mov	ebp, [esp+8+arg_8]
		test	ebx, ebx
		push	esi
		jbe	short loc_425570


loc_425551:				; CODE XREF: sub_4254E0+8Ej
		mov	cl, [edx+ebp]
		xor	cl, al
		jz	short loc_425567
		cmp	cl, 0Ah
		jz	short loc_425567
		cmp	cl, 0Dh
		jz	short loc_425567
		cmp	cl, 5Ch
		jnz	short loc_42556B


loc_425567:				; CODE XREF: sub_4254E0+76j
					; sub_4254E0+7Bj ...
		inc	al
		xor	edx, edx


loc_42556B:				; CODE XREF: sub_4254E0+85j
		inc	edx
		cmp	edx, ebx
		jb	short loc_425551


loc_425570:				; CODE XREF: sub_4254E0+6Fj
		cmp	ebx, 0FFh
		push	edi
		mov	byte_50E138, al
		ja	short loc_4255A3
		mov	edx, [esp+10h+arg_0]
		mov	ecx, 5
		mov	esi, offset dword_444C80
		mov	edi, edx
		mov	byte_444C8D, bl
		mov	byte_444C91, al
		rep movsd
		movsb
		mov	esi, 15h
		jmp	short loc_4255C9
; ---------------------------------------------------------------------------


loc_4255A3:				; CODE XREF: sub_4254E0+9Cj
		mov	edx, [esp+10h+arg_0]
		mov	ecx, 5
		mov	esi, offset dword_444C68
		mov	edi, edx
		mov	word_444C76, bx
		mov	byte_444C7B, al
		rep movsd
		movsw
		movsb
		mov	esi, 17h


loc_4255C9:				; CODE XREF: sub_4254E0+C1j
		xor	ecx, ecx
		pop	edi
		test	ebx, ebx
		jbe	short loc_4255DF
		add	esi, edx


loc_4255D2:				; CODE XREF: sub_4254E0+FDj
		mov	dl, [ecx+ebp]
		xor	dl, al
		mov	[esi+ecx], dl
		inc	ecx
		cmp	ecx, ebx
		jb	short loc_4255D2


loc_4255DF:				; CODE XREF: sub_4254E0+EEj
		mov	eax, [esp+0Ch+arg_C]
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4254E0	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_425640	proc near		; CODE XREF: sub_401E24j

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		lea	eax, [ecx+ecx*2]
		shl	eax, 4
		sub	eax, ecx
		xor	ecx, ecx
		lea	eax, [eax+eax*2]
		mov	dword_4491CF[eax*4], ecx
		mov	dword_4491BB[eax*4], ecx
		mov	dword_4491BF[eax*4], ecx
		mov	dword_4491C3[eax*4], ecx
		mov	dword_4491C7[eax*4], ecx
		mov	dword_4491CB[eax*4], ecx
		mov	byte_448FBB[eax*4], cl
		mov	byte_4491D3[eax*4], cl
		retn
sub_425640	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4256B0	proc near		; CODE XREF: sub_401370j

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	ebx
		push	ebp
		xor	ebx, ebx
		xor	ebp, ebp
		cmp	ecx, ebx
		jle	loc_425767
		cmp	ecx, 400h
		jge	loc_425767
		lea	eax, [ecx+ecx*2]
		push	esi
		shl	eax, 4
		sub	eax, ecx
		push	edi
		push	ebx
		lea	esi, [eax+eax*2]
		mov	eax, dword_4491CF[esi*4]
		push	eax
		call	near ptr 27607AFh
		nop
		cmp	dword_4491CF[esi*4], ebx
		jz	short loc_4256F8
		mov	ebp, 1


loc_4256F8:				; CODE XREF: sub_4256B0+41j
		mov	dword_4491CF[esi*4], ebx
		mov	dword_4491BB[esi*4], ebx
		mov	dword_4491BF[esi*4], ebx
		mov	eax, dword_4491C3[esi*4]
		cmp	eax, ebx
		jbe	short loc_425721
		push	eax
		call	sub_401C6C
		add	esp, 4


loc_425721:				; CODE XREF: sub_4256B0+66j
		mov	edi, dword_50FC88
		mov	dword_4491C3[esi*4], ebx
		mov	byte_448FBB[esi*4], bl
		mov	byte_4491D3[esi*4], bl
		mov	ecx, dword_4491C7[esi*4]
		push	ecx
		call	edi
		mov	dword_4491C7[esi*4], ebx
		mov	edx, dword_4491CB[esi*4]
		lea	esi, ds:4491CBh[esi*4]
		push	edx
		call	edi
		mov	[esi], ebx
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_425767:				; CODE XREF: sub_4256B0+Cj
					; sub_4256B0+18j
		mov	eax, ebp
		pop	ebp
		pop	ebx
		retn
sub_4256B0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4257A0	proc near		; CODE XREF: sub_401D93j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	ebp
		push	esi
		push	edi
		xor	ebp, ebp
		xor	edi, edi
		mov	esi, offset dword_4491BF


loc_4257B1:				; CODE XREF: sub_4257A0+52j
		mov	eax, [esp+10h+arg_0]
		mov	ecx, [esi-4]
		cmp	ecx, eax
		jnz	short loc_4257E5
		test	ebx, ebx
		jle	short loc_4257D7
		cmp	[esi], ebx
		jz	short loc_4257C8
		cmp	edi, ebx
		jnz	short loc_4257E5


loc_4257C8:				; CODE XREF: sub_4257A0+22j
		push	edi
		call	sub_401370
		add	esp, 4
		test	eax, eax
		jz	short loc_4257E5
		jmp	short loc_4257E4
; ---------------------------------------------------------------------------


loc_4257D7:				; CODE XREF: sub_4257A0+1Ej
		push	edi
		call	sub_401370
		add	esp, 4
		test	eax, eax
		jz	short loc_4257E5


loc_4257E4:				; CODE XREF: sub_4257A0+35j
		inc	ebp


loc_4257E5:				; CODE XREF: sub_4257A0+1Aj
					; sub_4257A0+26j ...
		add	esi, 234h
		inc	edi
		cmp	esi, offset byte_4D61BF
		jl	short loc_4257B1
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4257A0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_425820	proc near		; CODE XREF: sub_401C6Cj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		push	eax
		push	0
		push	1F0FFFh
		mov	edi, 1
		nop
		call	near ptr 2780000h
		mov	esi, eax
		test	esi, esi
		jz	short loc_425855
		push	0
		push	esi
		call	near ptr 2700000h
		nop
		test	eax, eax
		jnz	short loc_425855
		push	esi
		xor	edi, edi
		nop
		call	near ptr 28306C9h


loc_425855:				; CODE XREF: sub_425820+1Dj
					; sub_425820+2Aj
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_425820	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_425870	proc near		; CODE XREF: sub_401483j

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		xor	eax, eax
		mov	ecx, offset dword_4491BB


loc_42587B:				; CODE XREF: sub_425870+1Cj
		cmp	[ecx], edx
		jnz	short loc_425880
		inc	eax


loc_425880:				; CODE XREF: sub_425870+Dj
		add	ecx, 234h
		cmp	ecx, offset byte_4D61BB
		jl	short loc_42587B
		retn
sub_425870	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4258A0	proc near		; CODE XREF: sub_401D8Ej

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		push	esi
		xor	esi, esi
		xor	eax, eax
		mov	ecx, offset dword_4491BB


loc_4258AE:				; CODE XREF: sub_4258A0+1Fj
		cmp	[ecx], edx
		jz	short loc_4258C3
		add	ecx, 234h
		inc	eax
		cmp	ecx, offset byte_4D61BB
		jl	short loc_4258AE
		mov	eax, esi


loc_4258C3:				; CODE XREF: sub_4258A0+10j
		pop	esi
		retn
sub_4258A0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4258E0	proc near		; CODE XREF: sub_401BD6j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	edi
		xor	edi, edi
		mov	eax, offset byte_448FBB


loc_4258E8:				; CODE XREF: sub_4258E0+18j
		cmp	byte ptr [eax],	0
		jz	short loc_4258FE
		add	eax, 234h
		inc	edi
		cmp	eax, offset dword_4D5FBB
		jl	short loc_4258E8
		mov	eax, edi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4258FE:				; CODE XREF: sub_4258E0+Bj
		lea	eax, [edi+edi*2]
		push	esi
		shl	eax, 4
		sub	eax, edi
		push	1FFh
		lea	eax, [eax+eax*2]
		lea	esi, ds:448FBBh[eax*4]
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		push	esi
		call	near ptr 77C47A90h
		nop
		mov	ecx, [esp+14h+arg_4]
		mov	edx, [esp+14h+arg_8]
		mov	[esi+200h], ecx
		mov	dword ptr [esi+204h], 0
		add	esp, 0Ch
		mov	dword ptr [esi+208h], 0
		mov	[esi+20Ch], edx
		mov	byte ptr [esi+218h], 0
		mov	eax, edi
		pop	esi
		pop	edi
		retn
sub_4258E0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_425980	proc near		; CODE XREF: sub_401609j

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_425980
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	edi
		push	0
		push	7
		push	0Eh
		push	9
		push	10h
		push	4Fh
		push	13h
		push	0Fh
		mov	esi, ecx
		push	4
		lea	eax, [esp+68h+var_3C]
		push	4
		push	eax
		mov	dword ptr [esi+118h], 0
		mov	byte ptr [esi+11Ch], 0
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_425980	endp

; ---------------------------------------------------------------------------
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	10h
		push	4
		push	15h
		push	4Fh
		push	13h
		push	0Fh
		push	4
		lea	edx, [esp+28h]
		push	4
		push	edx
		call	sub_4019B5
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 1
		call	sub_4017E4
		push	eax
		lea	eax, [esi+32h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	0Eh
		push	19h
		push	13h
		push	4Fh
		push	13h
		push	0Fh
		push	4
		lea	ecx, [esp+28h]
		push	4
		push	ecx
		call	sub_4019B5
		add	esp, 28h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 2
		call	sub_4017E4
		lea	edx, [esi+60h]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	10h
		push	0Fh
		push	14h
		push	13h
		push	4Fh
		push	13h
		push	0Fh
		push	4
		lea	eax, [esp+2Ch]
		push	4
		push	eax
		call	sub_4019B5
		add	esp, 2Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 3
		call	sub_4017E4
		lea	ecx, [esi+0EAh]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	0Eh
		push	19h
		push	13h
		push	4
		push	13h
		push	4Fh
		push	13h
		push	0Fh
		push	4
		lea	edx, [esp+48h]
		push	4
		push	edx
		call	sub_4019B5
		add	esp, 30h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 4
		call	sub_4017E4
		add	esi, 8Eh
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+20h]
		mov	[esp+40h], edi
		call	sub_401226
		mov	ecx, [esp+38h]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 80h dup(0CCh)
; ---------------------------------------------------------------------------


loc_425BD0:				; CODE XREF: ___:00401B6Dj
		push	0FFFFFFFFh
		push	offset loc_43B6A4
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 34h
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+50h]
		mov	ebx, ecx
		push	edi
		lea	ebp, [esi+7Eh]
		lea	ecx, [ebx+60h]
		mov	[esp+54h], ebp
		call	sub_4014D3
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		mov	edi, dword_50FB08
		test	eax, eax
		jnz	loc_425D68
		push	95h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+10h], eax
		xor	ebp, ebp
		cmp	eax, ebp
		mov	[esp+4Ch], ebp
		jz	short loc_425C3B
		mov	ecx, eax
		call	sub_401DD9
		mov	ebp, eax


loc_425C3B:				; CODE XREF: ___:00425C30j
		push	offset dword_443600
		lea	eax, [esp+18h]
		push	1
		mov	byte ptr [ebx+11Ch], 1
		push	eax
		mov	ecx, esi
		mov	dword ptr [esp+58h], 0FFFFFFFFh
		mov	[ebp+91h], ebx
		call	sub_4016AE
		push	eax
		lea	ecx, [ebp+3Bh]
		mov	dword ptr [esp+50h], 1
		call	sub_401FBE
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	ecx, [esp+18h]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 2
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+50h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	edx, [esp+18h]
		push	3
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 3
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+54h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	eax, [esp+18h]
		push	4
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 4
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+58h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		lea	ecx, [esi+69h]
		push	ecx
		lea	ecx, [ebp+26h]
		call	sub_401FBE
		mov	dl, [esi+93h]
		mov	ecx, ebp
		mov	[ebp+8Fh], dl
		mov	al, [esi+94h]
		mov	[ebp+90h], al
		call	sub_4013D4
		mov	ebp, [esp+54h]


loc_425D68:				; CODE XREF: ___:00425C11j
		lea	ecx, [ebx+8Eh]
		call	sub_4014D3
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_425EDA
		push	95h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+10h], eax
		test	eax, eax
		mov	dword ptr [esp+4Ch], 5
		jz	short loc_425DAB
		mov	ecx, eax
		call	sub_401BC7
		mov	ebp, eax
		jmp	short loc_425DAD
; ---------------------------------------------------------------------------


loc_425DAB:				; CODE XREF: ___:00425D9Ej
		xor	ebp, ebp


loc_425DAD:				; CODE XREF: ___:00425DA9j
		push	offset dword_443600
		lea	ecx, [esp+18h]
		push	1
		push	ecx
		mov	byte ptr [ebx+11Ch], 1
		mov	ecx, esi
		mov	dword ptr [esp+58h], 0FFFFFFFFh
		mov	[ebp+91h], ebx
		call	sub_4016AE
		push	eax
		lea	ecx, [ebp+3Bh]
		mov	dword ptr [esp+50h], 6
		call	sub_401FBE
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	edx, [esp+18h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 7
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+50h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	eax, [esp+18h]
		push	3
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 8
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+54h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	ecx, [esp+18h]
		push	4
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 9
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+58h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		lea	edx, [esi+69h]
		lea	ecx, [ebp+26h]
		push	edx
		call	sub_401FBE
		mov	al, [esi+93h]
		mov	[ebp+8Fh], al
		mov	cl, [esi+94h]
		mov	[ebp+90h], cl
		mov	ecx, ebp
		call	sub_4013D4
		mov	ebp, [esp+54h]


loc_425EDA:				; CODE XREF: ___:00425D7Dj
		lea	ecx, [ebx+4]
		call	sub_4014D3
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_426049
		push	95h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+10h], eax
		test	eax, eax
		mov	dword ptr [esp+4Ch], 0Ah
		jz	short loc_425F1A
		mov	ecx, eax
		call	sub_40130C
		mov	ebp, eax
		jmp	short loc_425F1C
; ---------------------------------------------------------------------------


loc_425F1A:				; CODE XREF: ___:00425F0Dj
		xor	ebp, ebp


loc_425F1C:				; CODE XREF: ___:00425F18j
		push	offset dword_443600
		lea	edx, [esp+18h]
		push	1
		mov	byte ptr [ebx+11Ch], 1
		push	edx
		mov	ecx, esi
		mov	dword ptr [esp+58h], 0FFFFFFFFh
		mov	[ebp+91h], ebx
		call	sub_4016AE
		push	eax
		lea	ecx, [ebp+3Bh]
		mov	dword ptr [esp+50h], 0Bh
		call	sub_401FBE
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	eax, [esp+18h]
		push	2
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 0Ch
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+5Ch], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	ecx, [esp+18h]
		push	3
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 0Dh
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+60h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	edx, [esp+18h]
		push	4
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 0Eh
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+54h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		lea	eax, [esi+69h]
		lea	ecx, [ebp+26h]
		push	eax
		call	sub_401FBE
		mov	cl, [esi+93h]
		mov	[ebp+8Fh], cl
		mov	dl, [esi+94h]
		mov	ecx, ebp
		mov	[ebp+90h], dl
		call	sub_4013D4
		mov	ebp, [esp+54h]


loc_426049:				; CODE XREF: ___:00425EECj
		lea	ecx, [ebx+32h]
		call	sub_4014D3
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4261F4
		push	95h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+10h], eax
		test	eax, eax
		mov	dword ptr [esp+4Ch], 0Fh
		jz	short loc_426089
		mov	ecx, eax
		call	sub_401785
		mov	ebp, eax
		jmp	short loc_42608B
; ---------------------------------------------------------------------------


loc_426089:				; CODE XREF: ___:0042607Cj
		xor	ebp, ebp


loc_42608B:				; CODE XREF: ___:00426087j
		push	offset dword_443600
		lea	eax, [esp+18h]
		push	1
		mov	byte ptr [ebx+11Ch], 1
		push	eax
		mov	ecx, esi
		mov	dword ptr [esp+58h], 0FFFFFFFFh
		mov	[ebp+91h], ebx
		call	sub_4016AE
		push	eax
		lea	ecx, [ebp+3Bh]
		mov	dword ptr [esp+50h], 10h
		call	sub_401FBE
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	ecx, [esp+18h]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 11h
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+5Ch], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	edx, [esp+18h]
		push	3
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 12h
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+60h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	eax, [esp+18h]
		push	4
		push	eax
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 13h
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+14h]
		mov	[ebp+54h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		push	offset dword_443600
		lea	ecx, [esp+30h]
		push	5
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+4Ch], 14h
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esp+2Ch]
		mov	[ebp+58h], eax
		mov	dword ptr [esp+4Ch], 0FFFFFFFFh
		call	sub_401226
		lea	edx, [esi+69h]
		lea	ecx, [ebp+26h]
		push	edx
		call	sub_401FBE
		mov	al, [esi+93h]
		mov	[ebp+8Fh], al
		mov	cl, [esi+94h]
		mov	[ebp+90h], cl
		mov	ecx, ebp
		call	sub_4013D4
		mov	ebp, [esp+54h]


loc_4261F4:				; CODE XREF: ___:0042605Bj
		lea	ecx, [ebx+0EAh]
		call	sub_4014D3
		push	eax
		mov	ecx, ebp
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_426211
		mov	[ebx+11Ch], al


loc_426211:				; CODE XREF: ___:00426209j
		mov	ecx, [esp+44h]
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 40h
		retn	4
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 1A0h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_4263D0:				; CODE XREF: ___:00401A64j
		push	ecx
		mov	edx, dword_447A34
		push	esi
		mov	esi, ecx
		mov	eax, [esi+91h]
		mov	ecx, [eax+118h]
		cmp	edx, ecx
		jl	short loc_4263F1
		inc	ecx
		mov	[eax+118h], ecx


loc_4263F1:				; CODE XREF: ___:004263E8j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+8]
		mov	eax, [esi+91h]
		mov	[esp+4], esi
		mov	ecx, [eax+118h]
		dec	ecx
		mov	[eax+118h], ecx
		lea	ecx, [esp+4]
		push	ecx
		mov	ecx, offset byte_4E6ECB
		call	sub_40120D
; ---------------------------------------------------------------------------
		xor	eax, eax
		pop	esi
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_426450	proc near		; CODE XREF: sub_40130Cj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_426450
		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_401F7D
		push	offset dword_444D8C
		lea	ecx, [esi+11h]
		mov	[esp+18h+var_4], 0
		mov	dword ptr [esi], offset	dword_43E0DC
		call	sub_4015D7
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_426450	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4264C0	proc near		; CODE XREF: sub_401F7Dj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4264C0
		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_401E6A
		lea	ecx, [esi+11h]
		mov	[esp+14h+var_4], 0
		call	sub_401424
		lea	ecx, [esi+26h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401424
		lea	ecx, [esi+3Bh]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401424
		lea	ecx, [esi+64h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401424
		lea	ecx, [esi+79h]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401424
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E0EC
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4264C0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_426560	proc near		; CODE XREF: sub_4014C4j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_426560
		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_43E0EC
		lea	ecx, [esi+79h]
		mov	[esp+14h+var_4], 4
		call	sub_401226
		lea	ecx, [esi+64h]
		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_402031
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_426560	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_426620:				; CODE XREF: ___:004016D1j
					; ___:0040217Bj
		push	esi
		mov	esi, ecx
		call	sub_4014C4
		test	byte ptr [esp+8], 1
		jz	short loc_426638
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_426638:				; CODE XREF: ___:0042662Dj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_426650:				; CODE XREF: ___:004011FEj
					; ___:00402081j
		push	esi
		mov	esi, ecx
		call	sub_402090
		test	byte ptr [esp+8], 1
		jz	short loc_426668
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_426668:				; CODE XREF: ___:0042665Dj
		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: thunk


sub_426680	proc near		; CODE XREF: sub_402090j
		jmp	sub_4014C4
sub_426680	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4266A0:				; CODE XREF: ___:00401A41j
		push	0FFFFFFFFh
		push	offset loc_43B7A8
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+54h]
		mov	ecx, [esi+60h]
		mov	edx, [esi+5Ch]
		lea	edi, [esi+3Bh]
		push	eax
		push	ecx
		push	edx
		mov	ecx, edi
		lea	ebx, [esi+11h]
		lea	ebp, [esi+26h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		push	offset dword_444DF4
		mov	ecx, ebp
		call	sub_4014D3
		mov	cl, [esi+8Fh]
		push	eax
		mov	al, [esi+90h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 28h
		lea	ecx, [esp+10h]
		call	sub_401424
		mov	edx, [esi+54h]
		mov	eax, [esi+60h]
		mov	ecx, [esi+5Ch]
		push	edx
		push	eax
		push	ecx
		mov	ecx, edi
		mov	dword ptr [esp+3Ch], 0
		call	sub_4014D3
		push	eax
		call	sub_40182F
		add	esp, 10h
		test	eax, eax
		jz	short loc_426764
		mov	edx, [esi+5Ch]
		mov	ecx, edi
		push	edx
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		lea	eax, [esp+1Ch]
		push	offset dword_444DC8
		push	eax
		call	sub_40102D
		add	esp, 14h
		jmp	short loc_42677E
; ---------------------------------------------------------------------------


loc_426764:				; CODE XREF: ___:0042673Aj
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+14h]
		push	offset dword_444D94
		push	ecx
		call	sub_40102D
		add	esp, 0Ch


loc_42677E:				; CODE XREF: ___:00426762j
		lea	ecx, [esp+10h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4014D3
		mov	dl, [esi+90h]
		push	eax
		mov	al, [esi+8Fh]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 14h
		lea	ecx, [esp+10h]
		mov	dword ptr [esp+30h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+28h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 24h
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_426820	proc near		; CODE XREF: sub_401E7Ej

var_1A		= byte ptr -1Ah
var_18		= byte ptr -18h
arg_0		= byte ptr  4
arg_FFE0	= dword	ptr  0FFE4h
arg_FFE4	= dword	ptr  0FFE8h
arg_FFE8	= dword	ptr  0FFECh
arg_FFEC	= dword	ptr  0FFF0h

		mov	eax, 0FFFCh
		call	sub_436840
		push	esi
		push	edi
		push	offset dword_444E50
		nop
		call	near ptr 27D090Ah
		mov	esi, eax
		test	esi, esi
		jz	short loc_42688A
		mov	edi, dword_50F8A0
		push	offset dword_444E3C
		push	esi
		call	edi
		push	offset dword_444E28
		push	esi
		mov	dword_50E140, eax
		call	edi
		push	offset dword_444E18
		push	esi
		mov	dword_50E144, eax
		call	edi
		mov	ecx, dword_50E140
		mov	dword_50E13C, eax
		test	ecx, ecx
		jz	short loc_42688A
		mov	edx, dword_50E144
		test	edx, edx
		jz	short loc_42688A
		test	eax, eax
		jz	short loc_42688A
		mov	al, [esp+0Bh]
		test	al, al
		jz	short loc_426895


loc_42688A:				; CODE XREF: sub_426820+1Bj
					; sub_426820+52j ...
		pop	edi
		xor	eax, eax
		pop	esi
		add	esp, 0FFFCh
		retn
; ---------------------------------------------------------------------------


loc_426895:				; CODE XREF: sub_426820+68j
		mov	edx, [esp+24h+arg_FFE8]
		mov	eax, 0FFDCh
		cmp	edx, eax
		jle	short loc_4268AC
		mov	[esp+24h+arg_FFE8], eax


loc_4268AC:				; CODE XREF: sub_426820+83j
		push	ebx
		push	ebp
		mov	ebp, [esp+2Ch+arg_FFEC]
		cmp	ebp, 1
		jge	short loc_4268BF
		mov	ebp, 1


loc_4268BF:				; CODE XREF: sub_426820+98j
		call	ecx
		mov	ebx, [esp+2Ch+arg_FFE4]
		xor	esi, esi
		test	ebx, ebx
		mov	edi, eax
		jle	short loc_426904


loc_4268D0:				; CODE XREF: sub_426820+E2j
		mov	al, byte_4D64E9
		test	al, al
		jz	short loc_426904
		mov	ecx, [esp+2Ch+arg_FFE8]
		push	ebp
		lea	eax, [esp+30h+var_18]
		push	1Ch
		push	eax
		mov	eax, [esp+38h+arg_FFE0]
		push	0
		lea	edx, [esp+3Ch+arg_0]
		push	ecx
		push	edx
		push	eax
		push	edi
		call	dword_50E13C
		inc	esi
		cmp	esi, ebx
		jl	short loc_4268D0


loc_426904:				; CODE XREF: sub_426820+AEj
					; sub_426820+B7j
		push	edi
		call	dword_50E144
		pop	ebp
		pop	ebx
		pop	edi
		mov	eax, 1
		pop	esi
		add	esp, 0FFFCh
		retn
sub_426820	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_426960	proc near		; CODE XREF: sub_40182Fj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_0]
		push	eax
		call	sub_40187F
		mov	ecx, [esp+4+arg_C]
		mov	edx, [esp+4+arg_8]
		push	ecx
		mov	ecx, [esp+8+arg_4]
		push	edx
		push	ecx
		push	eax
		call	sub_401E7E
		add	esp, 14h
		retn
sub_426960	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4269A0	proc near		; CODE XREF: sub_401BC7j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4269A0
		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_401F7D
		push	offset dword_444E5C
		lea	ecx, [esi+11h]
		mov	[esp+18h+var_4], 0
		mov	dword ptr [esi], offset	dword_43E0FC
		call	sub_4015D7
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4269A0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_426A10:				; CODE XREF: ___:00401A19j
					; ___:00401AAFj
		push	esi
		mov	esi, ecx
		call	sub_4017FD
		test	byte ptr [esp+8], 1
		jz	short loc_426A28
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_426A28:				; CODE XREF: ___:00426A1Dj
		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: thunk


sub_426A40	proc near		; CODE XREF: sub_4017FDj
		jmp	sub_4014C4
sub_426A40	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_426A60:				; CODE XREF: ___:00401366j
		push	0FFFFFFFFh
		push	offset loc_43B7E8
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		mov	ebx, ecx
		xor	eax, eax
		mov	ecx, offset byte_4E5DBF
		mov	[esp+4], eax


loc_426A86:				; CODE XREF: ___:00426A95j
		cmp	dword ptr [ecx], 0
		jz	short loc_426A97
		add	ecx, 78h
		inc	eax
		cmp	ecx, offset byte_4E671F
		jl	short loc_426A86


loc_426A97:				; CODE XREF: ___:00426A89j
		cmp	eax, 13h
		mov	[esp+4], eax
		jg	loc_426C49
		lea	eax, [eax+eax*2]
		push	ebp
		push	esi
		push	edi
		lea	eax, [eax+eax*4]
		lea	ecx, [ebx+3Bh]
		lea	ebp, ds:4E5D4Bh[eax*8]
		call	sub_4017E4
		mov	edi, eax
		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
		mov	cx, [ebx+58h]
		push	ecx
		nop
		call	near ptr 71AB2B66h
		and	eax, 0FFFFh
		mov	[ebp+64h], eax
		mov	eax, [ebx+54h]
		cmp	eax, 5
		mov	[ebp+68h], eax
		jge	short loc_426B00
		mov	dword ptr [ebp+68h], 5


loc_426B00:				; CODE XREF: ___:00426AF7j
		mov	edx, [ebx+50h]
		mov	ecx, 80h
		xor	eax, eax
		mov	edi, offset dword_50E14C
		mov	[ebp+6Ch], edx
		lea	esi, [ebx+11h]
		rep stosd
		mov	eax, [ebx+50h]
		mov	ecx, [ebx+58h]
		push	eax
		push	ecx
		lea	ecx, [ebx+3Bh]
		lea	edi, [ebx+26h]
		call	sub_4017E4
		push	eax
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		push	offset dword_444EA0
		mov	ecx, edi
		call	sub_4014D3
		mov	dl, [ebx+90h]
		push	eax
		mov	al, [ebx+8Fh]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		mov	ecx, [esp+34h]
		add	esp, 24h
		push	offset dword_50E34C
		push	0
		push	ecx
		push	offset sub_4012C1
		push	0
		push	0
		nop
		call	near ptr 277092Eh
		test	eax, eax
		mov	dword_50E350, eax
		jz	short loc_426B9B
		push	offset dword_446F64
		push	5
		push	eax
		push	0
		push	offset dword_50E14C
		call	sub_4013E8
		add	esp, 14h
		mov	[ebp+70h], eax
		jmp	short loc_426BCB
; ---------------------------------------------------------------------------


loc_426B9B:				; CODE XREF: ___:00426B7Dj
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		push	offset dword_444E80
		mov	ecx, edi
		call	sub_4014D3
		mov	dl, [ebx+90h]
		push	eax
		mov	al, [ebx+8Fh]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_426BCB:				; CODE XREF: ___:00426B99j
		lea	ecx, [esp+14h]
		call	sub_401424
		mov	ecx, [ebx+58h]
		mov	dword ptr [esp+34h], 0
		push	ecx
		lea	ecx, [ebx+3Bh]
		call	sub_4017E4
		push	eax
		mov	ecx, esi
		call	sub_4017E4
		push	eax
		lea	edx, [esp+20h]
		push	offset dword_444E64
		push	edx
		call	sub_40102D
		add	esp, 14h
		lea	ecx, [esp+14h]
		call	sub_4017E4
		push	eax
		push	offset dword_4435F0
		mov	ecx, edi
		call	sub_4014D3
		mov	cl, [ebx+8Fh]
		push	eax
		mov	al, [ebx+90h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+34h], 0FFFFFFFFh
		call	sub_401226
		pop	edi
		pop	esi
		pop	ebp


loc_426C49:				; CODE XREF: ___:00426A9Ej
		mov	ecx, [esp+20h]
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 28h
		retn
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 80h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_426CE0	proc near		; CODE XREF: sub_4012C1j

var_338		= dword	ptr -338h
var_334		= dword	ptr -334h
var_330		= dword	ptr -330h
var_32C		= dword	ptr -32Ch
var_328		= dword	ptr -328h
var_324		= dword	ptr -324h
var_320		= byte ptr -320h
arg_0		= dword	ptr  4

		sub	esp, 338h
		mov	eax, [esp+338h+arg_0]
		push	ebp
		push	esi
		mov	esi, 1
		lea	eax, [eax+eax*2]
		lea	eax, [eax+eax*4]
		lea	ebp, ds:4E5D4Bh[eax*8]
		xor	eax, eax
		mov	[esp+340h+var_334], eax
		mov	word ptr [esp+340h+var_334], 2
		mov	[ebp+74h], esi
		mov	cx, [ebp+64h]
		mov	[esp+340h+var_330], eax
		push	ecx
		mov	[esp+344h+var_32C], eax
		mov	[esp+344h+var_328], eax
		nop
		call	near ptr 71AB2B66h
		push	ebp
		mov	[esp+344h+var_324], esi
		mov	word ptr [esp+344h+var_334+2], ax
		nop
		call	near ptr 71AB2BF4h
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_426D76
		push	ebp
		nop
		call	near ptr 71AB4FD4h
		xor	edx, edx
		cmp	eax, edx
		jnz	short loc_426D6F
		mov	[ebp+74h], edx
		mov	ecx, [ebp+70h]
		pop	esi
		pop	ebp
		lea	eax, [ecx+ecx*4]
		shl	eax, 4
		sub	eax, ecx
		lea	eax, [eax+eax*4]
		mov	dword_4D6765[eax*2], edx
		xor	eax, eax
		add	esp, 338h
		retn	4
; ---------------------------------------------------------------------------


loc_426D6F:				; CODE XREF: sub_426CE0+68j
		mov	ecx, [eax+0Ch]
		mov	edx, [ecx]
		mov	eax, [edx]


loc_426D76:				; CODE XREF: sub_426CE0+5Bj
		mov	[esp+340h+var_330], eax
		mov	eax, [ebp+6Ch]
		push	ebx
		push	edi
		test	eax, eax
		mov	[esp+348h+var_338], 0
		jle	loc_426E26
		mov	ebx, dword_50FC30


loc_426D95:				; CODE XREF: sub_426CE0+140j
		mov	al, byte_4D64E9
		test	al, al
		jz	loc_426E26
		lea	esi, [esp+348h+var_320]
		mov	edi, 0C8h


loc_426DAB:				; CODE XREF: sub_426CE0+EFj
		push	0
		push	1
		push	2
		call	ebx
		cmp	eax, 0FFFFFFFFh
		mov	[esi], eax
		jz	short loc_426DCB
		lea	ecx, [esp+348h+var_324]
		push	ecx
		push	8004667Eh
		push	eax
		call	near ptr 71AB4519h
		nop


loc_426DCB:				; CODE XREF: sub_426CE0+D8j
		add	esi, 4
		dec	edi
		jnz	short loc_426DAB
		lea	esi, [esp+348h+var_320]
		mov	edi, 0C8h


loc_426DDA:				; CODE XREF: sub_426CE0+10Ej
		mov	eax, [esi]
		lea	edx, [esp+348h+var_334]
		push	10h
		push	edx
		push	eax
		call	near ptr 71AB406Ah
		nop
		add	esi, 4
		dec	edi
		jnz	short loc_426DDA
		mov	ecx, [ebp+68h]
		push	ecx
		nop
		call	near ptr 2821E84h
		lea	esi, [esp+348h+var_320]
		mov	edi, 0C8h


loc_426E03:				; CODE XREF: sub_426CE0+130j
		mov	edx, [esi]
		push	edx
		nop
		call	near ptr 71AB9639h
		add	esi, 4
		dec	edi
		jnz	short loc_426E03
		mov	eax, [esp+348h+var_338]
		mov	ecx, [ebp+6Ch]
		inc	eax
		cmp	eax, ecx
		mov	[esp+348h+var_338], eax
		jl	loc_426D95


loc_426E26:				; CODE XREF: sub_426CE0+A9j
					; sub_426CE0+BCj
		xor	edx, edx
		pop	edi
		mov	[ebp+74h], edx
		mov	ecx, [ebp+70h]
		pop	ebx
		pop	esi
		lea	eax, [ecx+ecx*4]
		pop	ebp
		shl	eax, 4
		sub	eax, ecx
		lea	eax, [eax+eax*4]
		mov	dword_4D6765[eax*2], edx
		xor	eax, eax
		add	esp, 338h
		retn	4
sub_426CE0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 60h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_426EB0	proc near		; CODE XREF: sub_401DD9j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_426EB0
		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_401F7D
		push	offset dword_444EBC
		lea	ecx, [esi+11h]
		mov	[esp+18h+var_4], 0
		mov	dword ptr [esi], offset	dword_43E10C
		call	sub_4015D7
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_426EB0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_426F20:				; CODE XREF: ___:004016DBj
					; ___:0040181Bj
		push	esi
		mov	esi, ecx
		call	sub_4010FF
		test	byte ptr [esp+8], 1
		jz	short loc_426F38
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_426F38:				; CODE XREF: ___:00426F2Dj
		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: thunk


sub_426F50	proc near		; CODE XREF: sub_4010FFj
		jmp	sub_4014C4
sub_426F50	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_426F70:				; CODE XREF: ___:00401E92j
		push	0FFFFFFFFh
		push	offset loc_43B828
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+54h]
		mov	ecx, [esi+50h]
		mov	edx, [esi+58h]
		lea	edi, [esi+3Bh]
		push	eax
		push	ecx
		push	edx
		mov	ecx, edi
		lea	ebx, [esi+11h]
		lea	ebp, [esi+26h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		push	offset dword_444EDC
		mov	ecx, ebp
		call	sub_4014D3
		mov	cl, [esi+8Fh]
		push	eax
		mov	al, [esi+90h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 28h
		lea	ecx, [esp+10h]
		call	sub_401424
		mov	edx, [esi+54h]
		mov	eax, [esi+50h]
		mov	ecx, [esi+58h]
		push	edx
		push	eax
		push	ecx
		mov	ecx, edi
		mov	dword ptr [esp+3Ch], 0
		call	sub_4014D3
		push	eax
		call	sub_401DB6
; ---------------------------------------------------------------------------
		cdq
		and	edx, 3FFh
		add	esp, 10h
		add	eax, edx
		mov	ecx, edi
		sar	eax, 0Ah
		cdq
		idiv	dword ptr [esi+50h]
		mov	edx, [esi+58h]
		push	eax
		push	edx
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		lea	eax, [esp+20h]
		push	offset dword_444EC0
		push	eax
		call	sub_40102D
		add	esp, 18h
		lea	ecx, [esp+10h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4014D3
		mov	cl, [esi+90h]
		mov	dl, [esi+8Fh]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 14h
		mov	dword ptr [esp+30h], 0FFFFFFFFh
		lea	ecx, [esp+10h]
		call	sub_401226
		mov	ecx, [esp+28h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 24h
		retn
; ---------------------------------------------------------------------------
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4270E0	proc near		; CODE XREF: sub_401BB3j

var_95		= byte ptr -95h
var_8C		= dword	ptr -8Ch
var_3C		= byte ptr -3Ch
var_3B		= byte ptr -3Bh

		sub	esp, 98h
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ecx, 0Eh
		xor	eax, eax
		lea	edi, [esp+0A8h+var_3B]
		mov	[esp+0A8h+var_3C], 0
		rep stosd
		stosw
		xor	esi, esi
		push	0FFh
		push	esi
		mov	[esp+0B0h+var_8C], esi
		stosb
		mov	[esp+0B0h+var_95], 0
		call	sub_4021A3
sub_4270E0	endp

; ---------------------------------------------------------------------------
		push	0FFh
		push	esi
		mov	[esp+24h], al
		call	sub_4021A3
; ---------------------------------------------------------------------------
		push	0FFh
		push	esi
		mov	[esp+2Dh], al
		call	sub_4021A3
; ---------------------------------------------------------------------------
		push	0FFh
		push	esi
		mov	[esp+36h], al
		call	sub_4021A3
; ---------------------------------------------------------------------------
		add	esp, 20h
		cmp	[esp+0B4h], si
		mov	[esp+17h], al
		jnz	short loc_427171
		push	2710h
		push	3E8h
		mov	byte ptr [esp+1Bh], 1
		call	sub_4021A3
; ---------------------------------------------------------------------------
		add	esp, 8
		mov	[esp+0B4h], eax


loc_427171:				; CODE XREF: ___:00427151j
		push	1
		push	esi
		push	esi
		push	0FFh
		push	3
		push	2
		mov	dword ptr [esp+64h], 1
		call	near ptr 71AB8769h
		nop
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[esp+18h], edi
		jnz	short loc_4271A4
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 98h
		retn
; ---------------------------------------------------------------------------


loc_4271A4:				; CODE XREF: ___:00427195j
		lea	eax, [esp+4Ch]
		push	4
		push	eax
		push	2
		push	esi
		push	edi
		nop
		call	near ptr 71AB3EA1h
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4271C7


loc_4271BA:				; CODE XREF: ___:0042736Fj
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 98h
		retn
; ---------------------------------------------------------------------------


loc_4271C7:				; CODE XREF: ___:004271B8j
		mov	ecx, [esp+0B4h]
		mov	ebp, dword_50FC2C
		push	ecx
		mov	word ptr [esp+60h], 2
		call	ebp
		mov	ebx, [esp+0ACh]
		push	28h
		mov	[esp+62h], ax
		mov	[esp+64h], ebx
		mov	byte ptr [esp+24h], 45h
		call	ebp
		push	4000h
		mov	[esp+26h], ax
		mov	word ptr [esp+28h], 1
		mov	[esp+2Ah], si
		mov	byte ptr [esp+2Ch], 80h
		mov	byte ptr [esp+2Dh], 6
		mov	[esp+2Eh], si
		mov	[esp+34h], ebx
		mov	byte ptr [esp+44h], 50h
		mov	byte ptr [esp+45h], 2
		call	ebp
		mov	[esp+42h], ax
		mov	[esp+46h], si
		mov	[esp+3Ch], esi
		nop
		call	near ptr 27E0796h
		mov	[esp+48h], eax
		mov	al, byte_4D64E9
		test	al, al
		jz	loc_42741B
		mov	ebx, dword_50FABC
		mov	byte ptr [esp+58h], 0
		mov	byte ptr [esp+59h], 6
		jmp	short loc_427265
; ---------------------------------------------------------------------------
		xor	esi, esi


loc_427265:				; CODE XREF: ___:00427261j
		mov	edi, [esp+1Ch]
		mov	edx, [esp+0B4h]
		inc	edi
		push	edx
		mov	[esp+20h], edi
		mov	[esp+48h], si
		call	ebp
		push	14h
		mov	[esp+3Ah], ax
		call	ebp
		mov	[esp+5Ah], ax
		mov	eax, [esp+14h]
		push	eax
		nop
		call	near ptr 71AB2BC0h
		mov	esi, eax
		mov	[esp+2Ch], esi
		call	ebx
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		call	ebp
		mov	[esp+34h], ax
		call	ebx
		mov	edi, eax
		shl	edi, 10h
		call	ebx
		or	edi, eax
		push	edi
		call	ebp
		mov	edx, [esp+0ACh]
		and	eax, 0FFFFh
		mov	[esp+38h], eax
		mov	eax, [esp+58h]
		mov	[esp+6Ch], esi
		mov	ecx, 5
		lea	esi, [esp+34h]
		lea	edi, [esp+78h]
		mov	[esp+70h], edx
		mov	[esp+74h], eax
		rep movsd
		lea	ecx, [esp+6Ch]
		push	20h
		push	ecx
		call	sub_401A28
		mov	ecx, 5
		lea	esi, [esp+28h]
		lea	edi, [esp+74h]
		lea	edx, [esp+74h]
		rep movsd
		mov	ecx, 5
		lea	esi, [esp+3Ch]
		lea	edi, [esp+88h]
		mov	[esp+4Ch], ax
		push	28h
		push	edx
		rep movsd
		mov	dword ptr [esp+0A4h], 0
		call	sub_401A28
		mov	edx, [esp+28h]
		add	esp, 10h
		mov	[esp+2Ah], ax
		mov	ecx, 5
		lea	esi, [esp+20h]
		lea	edi, [esp+6Ch]
		lea	eax, [esp+5Ch]
		push	10h
		rep movsd
		push	eax
		push	0
		lea	ecx, [esp+78h]
		push	28h
		push	ecx
		push	edx
		nop
		call	near ptr 71AB2C69h
		cmp	eax, 0FFFFFFFFh
		jz	loc_4271BA
		nop
		call	near ptr 27E0796h
		mov	edx, [esp+48h]
		mov	ecx, eax
		sub	ecx, edx
		mov	eax, 10624DD3h
		mul	ecx
		mov	eax, [esp+0B8h]
		shr	edx, 6
		cmp	edx, eax
		ja	short loc_427417
		mov	al, [esp+13h]
		test	al, al
		jz	short loc_4273B9
		push	2710h
		push	3E8h
		call	sub_4021A3
; ---------------------------------------------------------------------------
		add	esp, 8
		mov	[esp+0B4h], eax


loc_4273B9:				; CODE XREF: ___:0042739Ej
		push	0FFh
		push	0
		call	sub_4021A3
; ---------------------------------------------------------------------------
		push	0FFh
		push	0
		mov	[esp+24h], al
		call	sub_4021A3
; ---------------------------------------------------------------------------
		push	0FFh
		push	0
		mov	[esp+2Dh], al
		call	sub_4021A3
; ---------------------------------------------------------------------------
		push	0FFh
		push	0
		mov	[esp+36h], al
		call	sub_4021A3
; ---------------------------------------------------------------------------
		db 8Bh,	94h, 24h
		dd 0DCh, 8820C483h, 52172444h, 3FAA7BE8h, 0E9A09002h, 84004D64h
		dd 4C850FC0h
		db 0FEh, 2 dup(0FFh)
; ---------------------------------------------------------------------------


loc_427417:				; CODE XREF: ___:00427396j
		mov	edi, [esp+18h]


loc_42741B:				; CODE XREF: ___:0042724Bj
		push	edi
		nop
		call	near ptr 71AB9639h
		mov	eax, [esp+1Ch]
		pop	edi
		pop	esi
		pop	ebp
		lea	eax, [eax+eax*4+5]
		pop	ebx
		shl	eax, 2
		add	esp, 98h
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 0E0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_427520	proc near		; CODE XREF: sub_401DB6j

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		mov	eax, [esp+arg_0]
		push	esi
		push	eax
		call	sub_40187F
		mov	esi, eax
		nop
		call	near ptr 77C371D3h
		and	eax, 800001FFh
		jns	short loc_427541
		dec	eax
		or	eax, 0FFFFFE00h
		inc	eax


loc_427541:				; CODE XREF: sub_427520+18j
		mov	ecx, [esp+4+arg_10]
		mov	edx, [esp+4+arg_C]
		push	ecx
		mov	ecx, [esp+8+arg_8]
		lea	eax, [eax+esi+100h]
		push	edx
		push	ecx
		push	eax
		push	esi
		call	sub_401BB3
sub_427520	endp

; ---------------------------------------------------------------------------
		add	esp, 18h
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_427590	proc near		; CODE XREF: sub_401785j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_427590
		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_401F7D
		push	offset dword_444EF8
		lea	ecx, [esi+11h]
		mov	[esp+18h+var_4], 0
		mov	dword ptr [esi], offset	dword_43E11C
		call	sub_4015D7
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_427590	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_427600:				; CODE XREF: ___:004014ECj
					; ___:0040222Aj
		push	esi
		mov	esi, ecx
		call	sub_401159
		test	byte ptr [esp+8], 1
		jz	short loc_427618
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_427618:				; CODE XREF: ___:0042760Dj
		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: thunk


sub_427630	proc near		; CODE XREF: sub_401159j
		jmp	sub_4014C4
sub_427630	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_427650:				; CODE XREF: ___:00401A05j
		push	0FFFFFFFFh
		push	offset loc_43B868
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+54h]
		mov	ecx, [esi+60h]
		mov	edx, [esi+5Ch]
		push	eax
		mov	eax, [esi+58h]
		lea	edi, [esi+3Bh]
		push	ecx
		push	edx
		push	eax
		mov	ecx, edi
		lea	ebx, [esi+11h]
		lea	ebp, [esi+26h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		push	offset dword_444F10
		mov	ecx, ebp
		call	sub_4014D3
		mov	cl, [esi+90h]
		mov	dl, [esi+8Fh]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 2Ch
		lea	ecx, [esp+10h]
		call	sub_401424
		mov	eax, [esi+58h]
		mov	ecx, [esi+54h]
		mov	edx, [esi+60h]
		push	eax
		mov	eax, [esi+5Ch]
		push	ecx
		push	edx
		push	eax
		mov	ecx, edi
		mov	dword ptr [esp+40h], 0
		call	sub_4014D3
		push	eax
		call	sub_401730
		add	esp, 14h
		test	eax, eax
		jz	short loc_42771E
		mov	ecx, [esi+5Ch]
		mov	edx, [esi+58h]
		push	ecx
		push	edx
		mov	ecx, edi
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		lea	eax, [esp+20h]
		push	offset dword_444EFC
		push	eax
		call	sub_40102D
		add	esp, 18h


loc_42771E:				; CODE XREF: ___:004276F2j
		lea	ecx, [esp+10h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4014D3
		mov	cl, [esi+90h]
		mov	dl, [esi+8Fh]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 14h
		lea	ecx, [esp+10h]
		mov	dword ptr [esp+30h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+28h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 24h
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4277C0	proc near		; CODE XREF: sub_401730j

var_36		= word ptr -36h
var_18		= byte ptr -18h
var_16		= word ptr -16h
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
arg_FFBC	= dword	ptr  0FFC0h
arg_FFCC	= dword	ptr  0FFD0h
arg_FFDC	= dword	ptr  0FFE0h
arg_FFE0	= dword	ptr  0FFE4h
arg_FFE4	= dword	ptr  0FFE8h
arg_FFE8	= dword	ptr  0FFECh
arg_FFEC	= dword	ptr  0FFF0h

		mov	eax, 0FFF0h
		call	sub_436840
		push	esi
		push	11h
		push	2
		push	2
		nop
		call	near ptr 71AB3B91h
		mov	esi, [esp+10h+arg_FFE4]
		mov	[esp+10h+arg_0], eax
		xor	eax, eax
		push	esi
		mov	[esp+14h+var_C], eax
		mov	word ptr [esp+14h+var_C], 2
		mov	[esp+14h+var_8], eax
		mov	[esp+14h+var_4], eax
		mov	[esp+14h], eax
		nop
		call	near ptr 71AB2BF4h
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_427821
		push	esi
		nop
		call	near ptr 71AB4FD4h
		test	eax, eax
		jnz	short loc_42781A
		pop	esi
		add	esp, 0FFF0h
		retn
; ---------------------------------------------------------------------------


loc_42781A:				; CODE XREF: sub_4277C0+50j
		mov	ecx, [eax+0Ch]
		mov	edx, [ecx]
		mov	eax, [edx]


loc_427821:				; CODE XREF: sub_4277C0+45j
		mov	esi, [esp+18h+arg_FFEC]
		push	ebx
		mov	ebx, dword_50FABC
		push	ebp
		test	esi, esi
		mov	[esp+20h+var_10], eax
		push	edi
		jnz	short loc_42785D
		call	ebx
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		nop
		call	near ptr 71AB2B66h
		mov	[esp+28h+var_16], ax
		mov	[esp+28h+arg_FFE8], 1
		jmp	short loc_42788E
; ---------------------------------------------------------------------------


loc_42785D:				; CODE XREF: sub_4277C0+77j
		push	esi
		nop
		call	near ptr 71AB2B66h
		cmp	esi, 1
		mov	[esp+28h+var_16], ax
		jge	short loc_42787B
		mov	[esp+28h+arg_FFE8], 1
		jmp	short loc_42788E
; ---------------------------------------------------------------------------


loc_42787B:				; CODE XREF: sub_4277C0+ACj
		cmp	esi, 0FFFFh
		jle	short loc_42788E
		mov	[esp+28h+arg_FFE8], 0FFFFh


loc_42788E:				; CODE XREF: sub_4277C0+9Bj
					; sub_4277C0+B9j ...
		mov	eax, [esp+28h+arg_FFE4]
		test	eax, eax
		jnz	short loc_4278A4
		mov	[esp+28h+arg_FFE4], 1


loc_4278A4:				; CODE XREF: sub_4277C0+D7j
		mov	ecx, [esp+28h+arg_FFDC]
		mov	eax, 66666667h
		imul	ecx
		mov	edi, [esp+28h+arg_FFE0]
		xor	esi, esi
		sar	edx, 2
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		test	edi, edi
		mov	ebp, edx
		jle	short loc_4278DE


loc_4278CB:				; CODE XREF: sub_4277C0+11Cj
		call	ebx
		cdq
		mov	ecx, 0FFh
		idiv	ecx
		inc	esi
		cmp	esi, edi
		mov	byte ptr [esp+esi+28h+var_8+3],	dl
		jl	short loc_4278CB


loc_4278DE:				; CODE XREF: sub_4277C0+109j
		mov	edx, ebp
		dec	ebp
		test	edx, edx
		mov	[esp+28h+arg_FFDC], ebp
		jle	loc_427970
		mov	ebp, dword_50FC5C


loc_4278F6:				; CODE XREF: sub_4277C0+1AEj
		mov	al, byte_4D64E9
		test	al, al
		jz	short loc_427970
		mov	esi, 0Bh


loc_427904:				; CODE XREF: sub_4277C0+177j
		lea	eax, [esp+28h+var_18]
		push	10h
		push	eax
		push	0
		call	ebx
		cdq
		mov	ecx, 0Ah
		idiv	ecx
		mov	eax, edi
		lea	ecx, [esp+34h+var_4]
		sub	eax, edx
		mov	edx, [esp+34h+var_8]
		push	eax
		push	ecx
		push	edx
		call	ebp
		mov	eax, [esp+40h+arg_FFCC]
		push	eax
		call	near ptr 2821E84h
		nop
		dec	esi
		jnz	short loc_427904
		mov	eax, [esp+44h+arg_FFCC]
		test	eax, eax
		jnz	short loc_42795B
		call	ebx
		cdq
		mov	ecx, 0FFDCh
		idiv	ecx
		inc	edx
		push	edx
		nop
		call	near ptr 71AB2B66h
		mov	[esp+48h+var_36], ax


loc_42795B:				; CODE XREF: sub_4277C0+182j
		mov	eax, [esp+48h+arg_FFBC]
		mov	edx, eax
		dec	eax
		test	edx, edx
		mov	[esp+48h+arg_FFBC], eax
		jg	short loc_4278F6


loc_427970:				; CODE XREF: sub_4277C0+12Aj
					; sub_4277C0+13Dj
		pop	edi
		pop	ebp
		pop	ebx
		mov	eax, 1
		pop	esi
		add	esp, 0FFF0h
		retn
sub_4277C0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 70h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4279F0	proc near		; CODE XREF: sub_40207Cj

var_10		= word ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 10h
		push	ebx
		mov	ebx, [esp+14h+arg_4]
		push	esi
		push	edi
		mov	edi, [esp+1Ch+arg_0]
		lea	eax, [ebx-14h]
		push	eax
		lea	ecx, [edi+28h]
		push	ecx
		call	sub_401A28
		mov	edx, [edi+10h]
		add	esp, 8
		mov	[edi+0Ah], ax
		mov	[esp+1Ch+var_10], 2
		push	1
		push	0
		push	0
		push	0FFh
		push	3
		push	2
		mov	[esp+34h+var_C], edx
		mov	[esp+34h+arg_4], 1
		call	near ptr 71AB8769h
		nop
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_427A4D
		pop	edi
		pop	esi
		or	eax, eax
		pop	ebx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_427A4D:				; CODE XREF: sub_4279F0+52j
		lea	eax, [esp+1Ch+arg_4]
		push	4
		push	eax
		push	2
		push	0
		push	esi
		nop
		call	near ptr 71AB3EA1h
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_427A6D
		pop	edi
		pop	esi
		or	eax, eax
		pop	ebx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_427A6D:				; CODE XREF: sub_4279F0+72j
		lea	ecx, [esp+1Ch+var_10]
		push	10h
		push	ecx
		push	0
		push	ebx
		push	edi
		push	esi
		call	near ptr 71AB2C69h
		nop
		push	esi
		mov	edi, eax
		nop
		call	near ptr 71AB9639h
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 10h
		retn
sub_4279F0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_427AD0	proc near		; CODE XREF: sub_401D9Dj

var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_28		= dword	ptr -28h
var_18		= byte ptr -18h
var_14		= byte ptr -14h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_10		= word ptr  14h
arg_12		= word ptr  16h
arg_14		= dword	ptr  18h
arg_1C		= byte ptr  20h
arg_24		= byte ptr  28h
arg_25		= byte ptr  29h
arg_B8		= byte ptr  0BCh
arg_C1		= byte ptr  0C5h
arg_C4		= dword	ptr  0C8h
arg_C8		= dword	ptr  0CCh
arg_100C8	= dword	ptr  100CCh
arg_100D8	= dword	ptr  100DCh
arg_10128	= dword	ptr  1012Ch
arg_1012C	= dword	ptr  10130h
arg_10130	= dword	ptr  10134h

		mov	eax, 10128h
		call	sub_436840
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ecx, 3Fh
		xor	eax, eax
		lea	edi, [esp+10h+arg_25]
		mov	[esp+10h+arg_24], 0
		rep stosd
		stosw
		mov	eax, [esp+10h+arg_10128]
		push	eax
		call	sub_40187F
		mov	ecx, [esp+14h+arg_1012C]
		mov	[esp+14h+arg_4], eax
		push	ecx
		call	sub_40187F
		mov	edi, [esp+18h+arg_10130]
		add	esp, 8
		xor	ebx, ebx
		mov	[esp+10h+arg_0], eax
		mov	[esp+10h+arg_10], 2
		mov	[esp+10h+arg_12], bx
		mov	[esp+10h+arg_14], ebx
		mov	esi, offset byte_446F60
		mov	eax, edi


loc_427B37:				; CODE XREF: sub_427AD0+85j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_427B5B
		test	cl, cl
		jz	short loc_427B57
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_427B5B
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_427B37


loc_427B57:				; CODE XREF: sub_427AD0+71j
		xor	eax, eax
		jmp	short loc_427B60
; ---------------------------------------------------------------------------


loc_427B5B:				; CODE XREF: sub_427AD0+6Dj
					; sub_427AD0+7Bj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_427B60:				; CODE XREF: sub_427AD0+89j
		cmp	eax, ebx
		jnz	short loc_427BB3
		mov	ebp, dword_4D60F7
		cmp	ebp, ebx
		mov	[esp+10h], ebp
		jz	short loc_427B77
		cmp	ebp, 0FFFFFFFFh
		jnz	short loc_427BBE


loc_427B77:				; CODE XREF: sub_427AD0+A0j
		lea	eax, [esp+10h+arg_24]
		push	0FFh
		push	eax
		call	near ptr 71AB50C8h
		nop
		lea	ecx, [esp+18h+arg_1C]
		push	ecx
		call	near ptr 71AB4FD4h
		nop
		movsx	ecx, word ptr [eax+0Ah]
		mov	edx, [eax+0Ch]
		mov	eax, ecx
		lea	edi, [esp+1Ch+var_C]
		mov	esi, [edx]
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ebp, [esp+1Ch+var_C]
		jmp	short loc_427BBE
; ---------------------------------------------------------------------------


loc_427BB3:				; CODE XREF: sub_427AD0+92j
		push	edi
		call	sub_40187F
		add	esp, 4
		mov	ebp, eax


loc_427BBE:				; CODE XREF: sub_427AD0+A5j
					; sub_427AD0+E1j
		cmp	ebp, ebx
		jz	short loc_427BC7
		cmp	ebp, 0FFFFFFFFh
		jnz	short loc_427BCD


loc_427BC7:				; CODE XREF: sub_427AD0+F0j
		mov	ebp, dword_4D60F7


loc_427BCD:				; CODE XREF: sub_427AD0+F5j
		mov	edi, 1
		mov	[esp+10h+arg_14], ebp
		push	edi
		push	ebx
		push	ebx
		push	ebx
		push	3
		push	2
		mov	[esp+28h+arg_8], edi
		nop
		call	near ptr 71AB8769h
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	loc_427D0D
		lea	ecx, [esp+28h+var_C]
		push	4
		push	ecx
		push	2
		push	ebx
		push	esi
		nop
		call	near ptr 71AB3EA1h
		cmp	eax, 0FFFFFFFFh
		jz	loc_427D0D
		lea	edx, [esp+3Ch+var_18]
		push	10h
		push	edx
		push	esi
		nop
		call	near ptr 71AB3E00h
		cmp	eax, 0FFFFFFFFh
		jz	loc_427D0D
		push	ebx
		lea	eax, [esp+4Ch+var_14]
		push	ebx
		push	eax
		push	ebx
		push	ebx
		lea	ecx, [esp+5Ch+var_28]
		push	4
		push	ecx
		push	98000001h
		push	esi
		mov	[esp+6Ch+var_28], edi
		nop
		call	near ptr 71AB4489h
		cmp	eax, 0FFFFFFFFh
		jz	loc_427D0D
		mov	edx, [esp+6Ch+arg_100D8]
		cmp	byte ptr [edx],	0
		jz	loc_427CF3
		mov	ebx, dword_50FC90


loc_427C63:				; CODE XREF: sub_427AD0+21Dj
		mov	ecx, 3FFFh
		xor	eax, eax
		lea	edi, [esp+6Ch+arg_C8]
		push	0
		rep stosd
		stosw
		stosb
		lea	eax, [esp+70h+arg_C8]
		push	0FFFFh
		push	eax
		push	esi
		call	ebx
		cmp	[esp+7Ch+arg_C1], 2Fh
		jnz	short loc_427CE3
		mov	ecx, [esp+7Ch+arg_C4]
		mov	edx, [esp+7Ch+var_64]
		cmp	ecx, edx
		jnz	short loc_427CBE
		mov	ecx, [esp+7Ch+var_68]
		lea	edx, [esp+7Ch+arg_B8]
		push	eax
		mov	[esp+80h+arg_C4], ebp
		mov	[esp+80h+arg_C8], ecx
		push	edx
		jmp	short loc_427CDB
; ---------------------------------------------------------------------------


loc_427CBE:				; CODE XREF: sub_427AD0+1CFj
		cmp	ecx, [esp+7Ch+var_68]
		jnz	short loc_427CE3
		push	eax
		lea	eax, [esp+80h+arg_B8]
		mov	[esp+80h+arg_C4], ebp
		mov	[esp+80h+arg_C8], edx
		push	eax


loc_427CDB:				; CODE XREF: sub_427AD0+1ECj
		call	sub_40207C
		add	esp, 8


loc_427CE3:				; CODE XREF: sub_427AD0+1C0j
					; sub_427AD0+1F2j
		mov	ecx, [esp+7Ch+arg_100C8]
		cmp	byte ptr [ecx],	0
		jnz	loc_427C63


loc_427CF3:				; CODE XREF: sub_427AD0+187j
		mov	edx, dword_50FA84
		add	edx, 20h
		push	edx
		nop
		call	near ptr 77C3EEF6h
		add	esp, 4
		push	esi
		call	near ptr 71AB9639h
		nop


loc_427D0D:				; CODE XREF: sub_427AD0+11Dj
					; sub_427AD0+137j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 10128h
		retn
sub_427AD0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 0A0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_427DC0	proc near		; CODE XREF: sub_401889j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_427DC0
		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_401F82
		push	offset dword_444F30
		lea	ecx, [esi+11h]
		mov	[esp+18h+var_4], 0
		mov	dword ptr [esi], offset	dword_43E12C
		call	sub_4015D7
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_427DC0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_427E30	proc near		; CODE XREF: sub_401F82j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_427E30
		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_401E6A
		lea	ecx, [esi+11h]
		mov	[esp+14h+var_4], 0
		call	sub_401424
		lea	ecx, [esi+26h]
		mov	byte ptr [esp+14h+var_4], 1
		call	sub_401424
		lea	ecx, [esi+43h]
		mov	byte ptr [esp+14h+var_4], 2
		call	sub_401424
		lea	ecx, [esi+58h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401424
		lea	ecx, [esi+6Dh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401424
		lea	ecx, [esi+82h]
		mov	byte ptr [esp+14h+var_4], 5
		call	sub_401424
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E13C
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_427E30	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_427EF0	proc near		; CODE XREF: sub_40179Ej

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_427EF0
		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_43E13C
		lea	ecx, [esi+82h]
		mov	[esp+14h+var_4], 5
		call	sub_401226
		lea	ecx, [esi+6Dh]
		mov	byte ptr [esp+14h+var_4], 4
		call	sub_401226
		lea	ecx, [esi+58h]
		mov	byte ptr [esp+14h+var_4], 3
		call	sub_401226
		lea	ecx, [esi+43h]
		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_402031
		mov	ecx, [esp+14h+var_C]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_427EF0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_427FC0:				; CODE XREF: ___:00401A14j
					; ___:00402068j
		push	esi
		mov	esi, ecx
		call	sub_40179E
		test	byte ptr [esp+8], 1
		jz	short loc_427FD8
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_427FD8:				; CODE XREF: ___:00427FCDj
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_427FF0:				; CODE XREF: ___:00401096j
					; ___:00401C2Bj
		push	esi
		mov	esi, ecx
		call	sub_4015F5
		test	byte ptr [esp+8], 1
		jz	short loc_428008
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_428008:				; CODE XREF: ___:00427FFDj
		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: thunk


sub_428020	proc near		; CODE XREF: sub_4015F5j
		jmp	sub_40179E
sub_428020	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_428040:				; CODE XREF: ___:004015AFj
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+82h]
		lea	ebx, [esi+58h]
		mov	ecx, edi
		lea	ebp, [esi+6Dh]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+11h]
		call	sub_4017E4
		push	eax
		push	offset dword_444F74
		lea	ecx, [esi+26h]
		call	sub_4014D3
		mov	cl, [esi+97h]
		push	eax
		mov	al, [esi+98h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		mov	edx, [esi+99h]
		add	esp, 24h
		add	edx, 11Ch
		mov	ecx, edi
		push	edx
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		call	sub_401D9D
		add	esp, 10h
		mov	ecx, edi
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4017E4
		push	eax
		mov	ecx, ebp
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+11h]
		call	sub_4017E4
		push	eax
		push	offset dword_444F34
		lea	ecx, [esi+26h]
		call	sub_4014D3
		mov	cl, [esi+97h]
		push	eax
		mov	al, [esi+98h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 24h
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_428160	proc near		; CODE XREF: sub_401884j

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_428160
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	esi
		mov	esi, ecx
		mov	[esp+2Ch+var_28], esi
		call	sub_401F82
		lea	ecx, [esi+0A1h]
		mov	[esp+2Ch+var_4], 0
		call	sub_401424
		push	0
		push	2Ah
		push	2Eh
		push	2Eh
		lea	eax, [esp+3Ch+var_24]
		push	22h
		push	eax
		mov	byte ptr [esp+44h+var_4], 1
		mov	dword ptr [esi], offset	dword_43E14C
		call	sub_4019B5
		add	esp, 18h
		mov	ecx, eax
		mov	byte ptr [esp+2Ch+var_4], 2
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+11h]
		call	sub_4015D7
		lea	ecx, [esp+2Ch+var_24]
		mov	byte ptr [esp+2Ch+var_4], 1
		call	sub_401226
		mov	ecx, [esp+2Ch+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 28h
		retn
sub_428160	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_428220:				; CODE XREF: ___:00401E15j
					; ___:004021B2j
		push	esi
		mov	esi, ecx
		call	sub_401BD1
		test	byte ptr [esp+8], 1
		jz	short loc_428238
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_428238:				; CODE XREF: ___:0042822Dj
		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_428250	proc near		; CODE XREF: sub_401BD1j
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, dword_50FC88
		mov	eax, [esi+0BFh]
		mov	dword ptr [esi], offset	dword_43E14C
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42826E
		push	eax
		call	edi


loc_42826E:				; CODE XREF: sub_428250+19j
		mov	eax, [esi+0BBh]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42827C
		push	eax
		call	edi


loc_42827C:				; CODE XREF: sub_428250+27j
		lea	ecx, [esi+0A1h]
		call	sub_401226
		mov	ecx, esi
		call	sub_40179E
		pop	edi
		pop	esi
		retn
sub_428250	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4282C0:				; CODE XREF: ___:00401D2Aj
		push	0FFFFFFFFh
		mov	eax, large fs:0
		push	offset loc_43BA92
		push	eax
		mov	eax, 5488h
		mov	large fs:0, esp
		call	sub_436840
		push	ebx
		push	ebp
		push	esi
		mov	ebp, ecx
		or	esi, 0FFFFFFFFh
		push	edi
		mov	[ebp+0BFh], esi
		mov	byte ptr [esp+11h], 0
		mov	byte ptr [esp+12h], 0


loc_4282F8:				; CODE XREF: ___:00429286j
		lea	ecx, [esp+0B8h]
		call	sub_401B36
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+54A0h], 0
		mov	byte ptr [esp+13h], 0
		call	sub_401424
		mov	ecx, [ebp+0BBh]
		push	0
		lea	eax, [esp+398h]
		push	104h
		push	eax
		push	ecx
		mov	byte ptr [esp+54B0h], 1
		call	sub_401280
		add	esp, 10h
		test	al, al
		jz	loc_429310
		lea	edx, [esp+394h]
		lea	ecx, [esp+30h]
		push	edx
		call	sub_401861
		push	offset byte_446F60
		lea	ecx, [esp+34h]
		mov	byte ptr [esp+54A4h], 2
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_4283B0
		lea	ecx, [esp+30h]
		mov	byte ptr [esp+54A0h], 1
		call	sub_401226
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+54A0h], 0
		call	sub_401226
		lea	ecx, [esp+0B8h]
		mov	[esp+54A0h], esi
		call	sub_4014B0
		jmp	loc_429280
; ---------------------------------------------------------------------------


loc_4283B0:				; CODE XREF: ___:00428374j
		push	offset dword_443600
		lea	eax, [esp+234h]
		push	0
		push	eax
		lea	ecx, [esp+3Ch]
		call	sub_4016AE
		push	offset dword_445248
		mov	ecx, eax
		mov	byte ptr [esp+54A4h], 3
		call	sub_401500
		test	eax, eax
		lea	ecx, [esp+230h]
		mov	byte ptr [esp+54A0h], 2
		setz	bl
		call	sub_401226
		test	bl, bl
		jz	short loc_428475
		push	offset dword_443600
		lea	ecx, [esp+21Ch]
		push	1
		push	ecx
		lea	ecx, [esp+3Ch]
		mov	byte ptr [esp+1Fh], 1
		call	sub_4016AE
		lea	edx, [esp+0B8h]
		mov	ecx, eax
		push	edx
		mov	byte ptr [esp+54A4h], 4
		call	sub_4017E4
		push	eax
		call	sub_401938
		add	esp, 8
		lea	ecx, [esp+218h]
		test	al, al
		setz	bl
		mov	byte ptr [esp+54A0h], 2
		call	sub_401226
		test	bl, bl
		jnz	loc_4292FF
		push	offset dword_444408
		lea	ecx, [esp+0BCh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_4292FF
		jmp	loc_42866A
; ---------------------------------------------------------------------------


loc_428475:				; CODE XREF: ___:004283F7j
		push	offset dword_443600
		lea	eax, [esp+24Ch]
		push	0
		push	eax
		lea	ecx, [esp+3Ch]
		call	sub_4016AE
		push	offset dword_44523C
		mov	ecx, eax
		mov	byte ptr [esp+54A4h], 5
		call	sub_401500
		test	eax, eax
		lea	ecx, [esp+248h]
		mov	byte ptr [esp+54A0h], 2
		setz	bl
		call	sub_401226
		test	bl, bl
		jz	loc_42866A
		push	offset dword_445230
		lea	ecx, [esp+0BCh]
		mov	byte ptr [esp+17h], 0
		call	sub_4015D7
		push	offset byte_446F60
		lea	ecx, [esp+114h]
		call	sub_4015D7
		push	offset dword_443600
		lea	ecx, [esp+12Ch]
		push	1
		push	ecx
		lea	ecx, [esp+3Ch]
		call	sub_4016AE
		push	offset dword_443C84
		lea	edx, [esp+174h]
		push	0
		push	edx
		mov	ecx, eax
		mov	byte ptr [esp+54ACh], 6
		call	sub_4016AE
		push	eax
		lea	ecx, [esp+0D1h]
		mov	byte ptr [esp+54A4h], 7
		call	sub_401FBE
		lea	ecx, [esp+170h]
		mov	byte ptr [esp+54A0h], 6
		call	sub_401226
		lea	ecx, [esp+128h]
		mov	byte ptr [esp+54A0h], 2
		call	sub_401226
		push	offset dword_443600
		lea	eax, [esp+27Ch]
		push	1
		push	eax
		lea	ecx, [esp+3Ch]
		call	sub_4016AE
		push	offset dword_443C84
		lea	ecx, [esp+1A4h]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+54ACh], 8
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+54A0h], 9
		call	sub_4017E4
		test	eax, eax
		lea	ecx, [esp+1A0h]
		mov	byte ptr [esp+54A0h], 8
		setz	bl
		call	sub_401226
		lea	ecx, [esp+278h]
		mov	byte ptr [esp+54A0h], 2
		call	sub_401226
		test	bl, bl
		jnz	loc_4292FF
		push	offset dword_443600
		lea	edx, [esp+264h]
		push	1
		push	edx
		lea	ecx, [esp+3Ch]
		call	sub_4016AE
		push	offset dword_443C84
		lea	ecx, [esp+1D4h]
		push	1
		push	ecx
		mov	ecx, eax
		mov	byte ptr [esp+54ACh], 0Ah
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+54A0h], 0Bh
		call	sub_4017E4
		push	eax
		call	near ptr 77C1BF18h
		nop
		add	esp, 4
		lea	ecx, [esp+1D0h]
		mov	[esp+10Ch], eax
		mov	byte ptr [esp+54A0h], 0Ah
		call	sub_401226
		lea	ecx, [esp+260h]
		mov	byte ptr [esp+54A0h], 2
		call	sub_401226
		mov	eax, [esp+10Ch]
		test	eax, eax
		jnz	short loc_42866A
		mov	dword ptr [esp+10Ch], 50h


loc_42866A:				; CODE XREF: ___:00428470j
					; ___:004284BCj ...
		push	offset dword_443600
		lea	edx, [esp+4Ch]
		push	0
		push	edx
		lea	ecx, [esp+3Ch]
		call	sub_4016AE
		push	offset byte_446F60
		lea	ecx, [esp+4Ch]
		mov	byte ptr [esp+54A4h], 0Ch
		call	sub_4012EE
		test	eax, eax
		jz	loc_4292EE
		push	offset dword_443600
		lea	eax, [esp+64h]
		push	2
		push	eax
		lea	ecx, [esp+3Ch]
		call	sub_4016AE
		push	offset byte_446F60
		lea	ecx, [esp+64h]
		mov	byte ptr [esp+54A4h], 0Dh
		call	sub_4012EE
		test	eax, eax
		jz	loc_4292DD
		lea	ecx, [esp+0CDh]
		push	ecx
		lea	ecx, [esp+8Ch]
		call	sub_4014C9
		mov	ecx, 1000h
		xor	eax, eax
		lea	edi, [esp+498h]
		or	ebx, 0FFFFFFFFh
		rep stosd
		mov	edi, offset dword_445224
		mov	ecx, ebx
		repne scasb
		not	ecx
		sub	edi, ecx
		lea	edx, [esp+4498h]
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		mov	byte ptr [esp+54A0h], 0Eh
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		lea	eax, [esp+4498h]
		and	ecx, 3
		rep movsb
		mov	esi, offset dword_445220


loc_428731:				; CODE XREF: ___:0042874Fj
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_428755
		test	cl, cl
		jz	short loc_428751
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_428755
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_428731


loc_428751:				; CODE XREF: ___:0042873Bj
		xor	eax, eax
		jmp	short loc_428759
; ---------------------------------------------------------------------------


loc_428755:				; CODE XREF: ___:00428737j
					; ___:00428745j
		sbb	eax, eax
		sbb	eax, ebx


loc_428759:				; CODE XREF: ___:00428753j
		test	eax, eax
		jz	loc_428833
		mov	edi, dword_50FACC


loc_428767:				; CODE XREF: ___:0042882Dj
		mov	esi, offset byte_446F60
		lea	eax, [esp+4498h]


loc_428773:				; CODE XREF: ___:00428791j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_428797
		test	cl, cl
		jz	short loc_428793
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_428797
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_428773


loc_428793:				; CODE XREF: ___:0042877Dj
		xor	eax, eax
		jmp	short loc_42879B
; ---------------------------------------------------------------------------


loc_428797:				; CODE XREF: ___:00428779j
					; ___:00428787j
		sbb	eax, eax
		sbb	eax, ebx


loc_42879B:				; CODE XREF: ___:00428795j
		test	eax, eax
		jz	loc_428833
		mov	ecx, [ebp+0BBh]
		push	0
		lea	eax, [esp+449Ch]
		push	1000h
		push	eax
		push	ecx
		call	sub_401280
		add	esp, 10h
		test	al, al
		jz	loc_429339
		lea	edx, [esp+4498h]
		push	4000h
		lea	eax, [esp+49Ch]
		push	edx
		push	eax
		call	edi
		push	4000h
		lea	ecx, [esp+4A8h]
		push	offset dword_445220
		push	ecx
		call	edi
		add	esp, 18h
		mov	esi, offset dword_445220
		lea	eax, [esp+4498h]


loc_428803:				; CODE XREF: ___:00428821j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_428827
		test	cl, cl
		jz	short loc_428823
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_428827
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_428803


loc_428823:				; CODE XREF: ___:0042880Dj
		xor	eax, eax
		jmp	short loc_42882B
; ---------------------------------------------------------------------------


loc_428827:				; CODE XREF: ___:00428809j
					; ___:00428817j
		sbb	eax, eax
		sbb	eax, ebx


loc_42882B:				; CODE XREF: ___:00428825j
		test	eax, eax
		jnz	loc_428767


loc_428833:				; CODE XREF: ___:0042875Bj
					; ___:0042879Dj
		mov	esi, dword_50FAF8
		lea	eax, [esp+498h]
		push	offset dword_445208
		push	eax
		call	esi
		add	esp, 8
		test	eax, eax
		jz	short loc_428887
		push	offset dword_443C84
		push	eax
		call	esi
		add	esp, 8
		inc	eax
		jz	short loc_428887
		cmp	byte ptr [eax],	20h
		jnz	short loc_42886B


loc_428862:				; CODE XREF: ___:00428869j
		mov	cl, [eax+1]
		inc	eax
		cmp	cl, 20h
		jz	short loc_428862


loc_42886B:				; CODE XREF: ___:00428860j
		push	offset dword_4451F8
		push	eax
		nop
		call	near ptr 77C4624Eh
		add	esp, 8
		test	eax, eax
		jz	short loc_428887
		mov	byte ptr [ebp+0BAh], 1
		jmp	short loc_42888E
; ---------------------------------------------------------------------------


loc_428887:				; CODE XREF: ___:0042884Dj
					; ___:0042885Bj ...
		mov	byte ptr [ebp+0BAh], 0


loc_42888E:				; CODE XREF: ___:00428885j
		cmp	[ebp+0BFh], ebx
		jnz	loc_428926
		push	6
		push	1
		push	2
		call	near ptr 71AB3B91h
		nop
		cmp	eax, ebx
		mov	[ebp+0BFh], eax
		jz	loc_42940D
		mov	edx, [esp+10Ch]
		xor	ecx, ecx
		mov	[esp+78h], ecx
		push	edx
		mov	[esp+80h], ecx
		mov	word ptr [esp+7Ch], 2
		mov	[esp+84h], ecx
		mov	[esp+88h], ecx
		nop
		call	near ptr 71AB2B66h
		lea	ecx, [esp+0CDh]
		mov	[esp+7Ah], ax
		call	sub_4017E4
		push	eax
		call	sub_40187F
		add	esp, 4
		cmp	eax, ebx
		mov	[esp+7Ch], eax
		jz	loc_42934B
		mov	ecx, [ebp+0BFh]
		lea	eax, [esp+78h]
		push	10h
		push	eax
		push	ecx
		nop
		call	near ptr 71AB406Ah
		cmp	eax, ebx
		jz	loc_4293A8


loc_428926:				; CODE XREF: ___:00428894j
		mov	al, [esp+13h]
		test	al, al
		jz	loc_428FCE
		mov	al, [ebp+0BAh]
		test	al, al
		jz	short loc_428971
		lea	edx, [esp+498h]
		lea	ecx, [esp+60h]
		push	edx
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+118h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+54h]
		call	sub_4017E4
		push	eax
		lea	eax, [esp+24h]
		push	offset dword_4451CC
		push	eax
		jmp	short loc_4289A4
; ---------------------------------------------------------------------------


loc_428971:				; CODE XREF: ___:0042893Aj
		lea	ecx, [esp+498h]
		push	ecx
		lea	ecx, [esp+64h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+118h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+54h]
		call	sub_4017E4
		push	eax
		lea	edx, [esp+24h]
		push	offset dword_4451A4
		push	edx


loc_4289A4:				; CODE XREF: ___:0042896Fj
		call	sub_40102D
		add	esp, 18h
		lea	ecx, [esp+14h]
		push	0
		call	sub_4013D9
		push	eax
		lea	ecx, [esp+1Ch]
		call	sub_4017E4
		push	eax
		mov	eax, [ebp+0BFh]
		push	eax
		call	near ptr 71AB428Ah
		nop
		test	eax, eax
		jz	loc_4293F2
		cmp	eax, ebx
		jz	loc_4293F2
		mov	edx, [ebp+0BFh]
		push	0
		lea	ecx, [esp+49Ch]
		push	4000h
		push	ecx
		push	edx
		call	sub_401280
		add	esp, 10h
		test	al, al
		jz	loc_42941F
		mov	edi, offset dword_445220
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [esp+498h]
		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
		and	ecx, 3
		rep movsb
		lea	edi, [esp+49Ch]
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		lea	eax, [esp+49Ch]
		push	ecx
		mov	ecx, [ebp+0BBh]
		push	eax
		push	ecx
		nop
		call	near ptr 71AB428Ah
		xor	ebx, ebx
		mov	esi, offset dword_445220
		mov	[esp+2Ch], ebx
		lea	eax, [esp+498h]


loc_428A6E:				; CODE XREF: ___:00428A8Cj
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_428A92
		test	cl, cl
		jz	short loc_428A8E
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_428A92
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_428A6E


loc_428A8E:				; CODE XREF: ___:00428A78j
		xor	eax, eax
		jmp	short loc_428A97
; ---------------------------------------------------------------------------


loc_428A92:				; CODE XREF: ___:00428A74j
					; ___:00428A82j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_428A97:				; CODE XREF: ___:00428A90j
		test	eax, eax
		jz	loc_428E19


loc_428A9F:				; CODE XREF: ___:00428E08j
		mov	esi, offset byte_446F60
		lea	eax, [esp+498h]


loc_428AAB:				; CODE XREF: ___:00428ACDj
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_428AD3
		test	cl, cl
		jz	short loc_428ACF
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_428AD3
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_428AAB


loc_428ACF:				; CODE XREF: ___:00428AB7j
		xor	eax, eax
		jmp	short loc_428AD8
; ---------------------------------------------------------------------------


loc_428AD3:				; CODE XREF: ___:00428AB3j
					; ___:00428AC3j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_428AD8:				; CODE XREF: ___:00428AD1j
		test	eax, eax
		jz	loc_428E15
		mov	ecx, [ebp+0BFh]
		push	0
		lea	eax, [esp+49Ch]
		push	4000h
		push	eax
		push	ecx
		call	sub_401280
		add	esp, 10h
		test	al, al
		jz	loc_428E10
		lea	edx, [esp+498h]
		lea	ecx, [esp+0A0h]
		push	edx
		call	sub_401861
		push	offset dword_443600
		lea	eax, [esp+204h]
		push	0
		push	eax
		lea	ecx, [esp+0ACh]
		mov	byte ptr [esp+54ACh], 0Fh
		call	sub_4016AE
		push	offset dword_445190
		mov	ecx, eax
		mov	byte ptr [esp+54A4h], 10h
		call	sub_401500
		test	eax, eax
		lea	ecx, [esp+200h]
		mov	byte ptr [esp+54A0h], 0Fh
		setz	bl
		call	sub_401226
		test	bl, bl
		jz	short loc_428BBA
		push	offset dword_443600
		lea	ecx, [esp+144h]
		push	1
		push	ecx
		lea	ecx, [esp+0ACh]
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+54A0h], 11h
		call	sub_4017E4
		push	eax
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		lea	ecx, [esp+140h]
		mov	[esp+2Ch], eax
		mov	byte ptr [esp+54A0h], 0Fh
		call	sub_401226


loc_428BBA:				; CODE XREF: ___:00428B6Cj
		push	offset dword_443600
		lea	edx, [esp+15Ch]
		push	0
		push	edx
		lea	ecx, [esp+0ACh]
		call	sub_4016AE
		push	offset dword_445178
		mov	ecx, eax
		mov	byte ptr [esp+54A4h], 12h
		call	sub_401500
		test	eax, eax
		lea	ecx, [esp+158h]
		mov	byte ptr [esp+54A0h], 0Fh
		setz	bl
		call	sub_401226
		test	bl, bl
		jz	short loc_428C49
		push	offset dword_443600
		lea	eax, [esp+18Ch]
		push	1
		push	eax
		lea	ecx, [esp+0ACh]
		call	sub_4016AE
		push	offset dword_44516C
		mov	ecx, eax
		mov	byte ptr [esp+54A4h], 13h
		call	sub_401500
		lea	ecx, [esp+188h]
		mov	byte ptr [esp+54A0h], 0Fh
		call	sub_401226


loc_428C49:				; CODE XREF: ___:00428C04j
		push	offset dword_443600
		lea	ecx, [esp+1BCh]
		push	0
		push	ecx
		lea	ecx, [esp+0ACh]
		call	sub_4016AE
		push	offset dword_44515C
		mov	ecx, eax
		mov	byte ptr [esp+54A4h], 14h
		call	sub_401500
		test	eax, eax
		lea	ecx, [esp+1B8h]
		mov	byte ptr [esp+54A0h], 0Fh
		setz	bl
		call	sub_401226
		test	bl, bl
		jz	short loc_428CE4
		push	offset dword_443600
		lea	edx, [esp+1ECh]
		push	1
		push	edx
		lea	ecx, [esp+0ACh]
		call	sub_4016AE
		push	offset dword_4451F8
		mov	ecx, eax
		mov	byte ptr [esp+54A4h], 15h
		call	sub_401500
		test	eax, eax
		lea	ecx, [esp+1E8h]
		mov	byte ptr [esp+54A0h], 0Fh
		setz	bl
		call	sub_401226
		test	bl, bl
		setnz	byte ptr [esp+11h]


loc_428CE4:				; CODE XREF: ___:00428C93j
		mov	esi, offset dword_445220
		lea	eax, [esp+498h]


loc_428CF0:				; CODE XREF: ___:00428D12j
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_428D18
		test	cl, cl
		jz	short loc_428D14
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_428D18
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_428CF0


loc_428D14:				; CODE XREF: ___:00428CFCj
		xor	eax, eax
		jmp	short loc_428D1D
; ---------------------------------------------------------------------------


loc_428D18:				; CODE XREF: ___:00428CF8j
					; ___:00428D08j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_428D1D:				; CODE XREF: ___:00428D16j
		test	eax, eax
		jz	loc_428DB9
		mov	esi, offset byte_446F60
		lea	eax, [esp+498h]


loc_428D31:				; CODE XREF: ___:00428D53j
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_428D59
		test	cl, cl
		jz	short loc_428D55
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_428D59
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_428D31


loc_428D55:				; CODE XREF: ___:00428D3Dj
		xor	eax, eax
		jmp	short loc_428D5E
; ---------------------------------------------------------------------------


loc_428D59:				; CODE XREF: ___:00428D39j
					; ___:00428D49j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_428D5E:				; CODE XREF: ___:00428D57j
		test	eax, eax
		jz	short loc_428DB9
		mov	edi, offset dword_445220
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [esp+498h]
		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
		and	ecx, 3
		rep movsb
		lea	edi, [esp+49Ch]
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		lea	eax, [esp+49Ch]
		push	ecx
		mov	ecx, [ebp+0BBh]
		push	eax
		push	ecx
		call	near ptr 71AB428Ah
		nop


loc_428DB9:				; CODE XREF: ___:00428D1Fj
					; ___:00428D60j
		lea	ecx, [esp+0A0h]
		mov	byte ptr [esp+54A0h], 0Eh
		call	sub_401226
		mov	esi, offset dword_445220
		lea	eax, [esp+498h]


loc_428DD9:				; CODE XREF: ___:00428DFBj
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_428E01
		test	cl, cl
		jz	short loc_428DFD
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_428E01
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_428DD9


loc_428DFD:				; CODE XREF: ___:00428DE5j
		xor	eax, eax
		jmp	short loc_428E06
; ---------------------------------------------------------------------------


loc_428E01:				; CODE XREF: ___:00428DE1j
					; ___:00428DF1j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_428E06:				; CODE XREF: ___:00428DFFj
		test	eax, eax
		jnz	loc_428A9F
		jmp	short loc_428E15
; ---------------------------------------------------------------------------


loc_428E10:				; CODE XREF: ___:00428B00j
		mov	byte ptr [esp+12h], 1


loc_428E15:				; CODE XREF: ___:00428ADAj
					; ___:00428E0Ej
		mov	ebx, [esp+2Ch]


loc_428E19:				; CODE XREF: ___:00428A99j
		mov	al, [esp+11h]
		push	0
		test	al, al
		jz	short loc_428E41
		mov	edi, offset dword_44513C
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		mov	eax, [ebp+0BBh]
		not	ecx
		dec	ecx
		push	ecx
		push	offset dword_44513C
		push	eax
		jmp	short loc_428E5D
; ---------------------------------------------------------------------------


loc_428E41:				; CODE XREF: ___:00428E21j
		mov	edi, offset dword_445124
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		mov	ecx, [ebp+0BBh]
		push	offset dword_445124
		push	ecx


loc_428E5D:				; CODE XREF: ___:00428E3Fj
		nop
		call	near ptr 71AB428Ah
		mov	edi, offset dword_445220
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [esp+498h]
		repne scasb
		not	ecx
		sub	edi, ecx
		push	0
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		mov	edx, [ebp+0BBh]
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		xor	eax, eax
		and	ecx, 3
		rep movsb
		lea	edi, [esp+49Ch]
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		push	ecx
		lea	ecx, [esp+4A0h]
		push	ecx
		push	edx
		nop
		call	near ptr 71AB428Ah
		test	ebx, ebx
		jz	loc_428F8C
		xor	edi, edi
		test	ebx, ebx
		jle	short loc_428F14


loc_428EC3:				; CODE XREF: ___:00428F12j
		mov	eax, ebx
		sub	eax, edi
		cmp	eax, 4000h
		jbe	short loc_428F14
		mov	edx, [ebp+0BFh]
		push	0
		lea	ecx, [esp+49Ch]
		push	4000h
		push	ecx
		push	edx
		call	near ptr 71AB615Ah
		nop
		mov	esi, eax
		cmp	esi, 1
		jl	short loc_428F14
		cmp	esi, 0FFFFFFFFh
		jz	short loc_428F14
		mov	ecx, [ebp+0BBh]
		push	0
		lea	eax, [esp+49Ch]
		push	esi
		push	eax
		push	ecx
		nop
		call	near ptr 71AB428Ah
		add	edi, esi
		cmp	edi, ebx
		jl	short loc_428EC3


loc_428F14:				; CODE XREF: ___:00428EC1j
					; ___:00428ECCj ...
		mov	eax, ebx
		sub	eax, edi
		jz	short loc_428F5E


loc_428F1A:				; CODE XREF: ___:00428F5Cj
		push	0
		push	eax
		mov	eax, [ebp+0BFh]
		lea	edx, [esp+4A0h]
		push	edx
		push	eax
		nop
		call	near ptr 71AB615Ah
		mov	esi, eax
		cmp	esi, 1
		jl	short loc_428F5E
		cmp	esi, 0FFFFFFFFh
		jz	short loc_428F5E
		mov	edx, [ebp+0BBh]
		push	0
		lea	ecx, [esp+49Ch]
		push	esi
		push	ecx
		push	edx
		call	near ptr 71AB428Ah
		nop
		add	edi, esi
		mov	eax, ebx
		sub	eax, edi
		jnz	short loc_428F1A


loc_428F5E:				; CODE XREF: ___:00428F18j
					; ___:00428F37j ...
		mov	al, [ebp+0BAh]
		test	al, al
		jnz	loc_4291EF
		mov	ecx, [ebp+0BBh]
		push	ecx
		nop
		call	near ptr 71AB9639h
		or	esi, 0FFFFFFFFh
		mov	byte ptr [esp+12h], 1
		mov	[ebp+0BBh], esi
		jmp	loc_4291F2
; ---------------------------------------------------------------------------


loc_428F8C:				; CODE XREF: ___:00428EB7j
		mov	esi, dword_50FC90


loc_428F92:				; CODE XREF: ___:00428FCCj
		mov	ecx, [ebp+0BFh]
		push	0
		lea	eax, [esp+49Ch]
		push	4000h
		push	eax
		push	ecx
		call	esi
		cmp	eax, 1
		jl	short loc_428F5E
		cmp	eax, 0FFFFFFFFh
		jz	short loc_428F5E
		push	0
		push	eax
		mov	eax, [ebp+0BBh]
		lea	edx, [esp+4A0h]
		push	edx
		push	eax
		call	near ptr 71AB428Ah
		nop
		jmp	short loc_428F92
; ---------------------------------------------------------------------------


loc_428FCE:				; CODE XREF: ___:0042892Cj
		lea	ecx, [esp+14h]
		push	offset dword_4450F4
		push	ecx
		call	sub_40102D
		add	esp, 8
		lea	ecx, [esp+14h]
		push	0
		call	sub_4013D9
		push	eax
		lea	ecx, [esp+1Ch]
		call	sub_4017E4
		mov	edx, [ebp+0BBh]
		push	eax
		push	edx
		nop
		call	near ptr 71AB428Ah
		test	eax, eax
		jz	loc_429492
		cmp	eax, ebx
		jz	loc_429492
		mov	ebx, dword_50FC90
		mov	eax, [ebp+0BBh]
		mov	edx, [ebp+0BFh]
		mov	[esp+294h], eax
		mov	dword ptr [esp+290h], 1
		xor	eax, eax
		lea	ecx, [esp+294h]


loc_429040:				; CODE XREF: ___:0042904Bj
		cmp	[ecx], edx
		jz	short loc_42904D
		inc	eax
		add	ecx, 4
		cmp	eax, 1
		jb	short loc_429040


loc_42904D:				; CODE XREF: ___:00429042j
		cmp	eax, 1
		jnz	short loc_429064
		mov	[esp+298h], edx
		mov	dword ptr [esp+290h], 2


loc_429064:				; CODE XREF: ___:00429050j
		mov	ecx, 1000h
		xor	eax, eax
		lea	edi, [esp+498h]
		push	eax
		rep stosd
		push	eax
		lea	ecx, [esp+298h]
		push	eax
		push	ecx
		push	eax
		nop
		call	near ptr 71AB2DC0h
		mov	eax, [ebp+0BBh]
		lea	edx, [esp+290h]
		push	edx
		push	eax
		call	sub_436F60
; ---------------------------------------------------------------------------
		dw 0C085h
		dd 958B4274h, 0BBh, 8C8D006Ah, 49C24h, 40006800h, 52510000h
		dd 0F883D3FFh, 9F840FFFh, 8BFFFFFEh, 0BF8Dh, 50006A00h
		dd 0A024848Dh, 50000004h, 0B1B4E851h, 83907168h, 840FFFF8h
		dd 0FFFFFE7Eh, 0BF858Bh, 948D0000h, 29024h, 0E8505200h
		dd 0DE6Ch, 4274C085h, 0BF958Bh,	6A0000h, 9C248C8Dh, 68000004h
		dd 4000h, 0D3FF5251h, 0FFFF883h, 0FFFE4584h, 0BB8D8BFFh
		dd 6A000000h, 848D5000h, 4A024h, 0E8515000h, 7168B15Ah
		dd 0FFF88390h, 0FE24840Fh, 3D8BFFFFh, 50F8D0h, 0D7FF056Ah
		dd 0BB858Bh, 6A0000h, 9C24948Dh, 68000004h, 4000h, 0D3FF5052h
		dd 0F685F08Bh, 0FDF8840Fh, 167DFFFFh, 36EE890h,	333D7169h
		dd 75000027h, 0FF016A09h, 0FE9BE9D7h, 958BFFFFh, 0BFh
		dd 0FC8C3D8Bh, 6A0050h,	9C248C8Dh, 56000004h, 0D7FF5251h
		dd 0BF8D8Bh, 6A0000h, 9C24848Dh, 68000004h, 4000h, 0D3FF5150h
		dd 0F685F08Bh, 0FDA4840Fh, 1A7DFFFFh, 31AE890h,	333D7169h
		dd 75000027h, 90016A0Dh, 3F8CB3E8h, 0FE43E902h,	858BFFFFh
		dd 0BBh, 948D006Ah, 49C24h, 50525600h, 2AE9D7FFh
		db 0FEh, 2 dup(0FFh)
; ---------------------------------------------------------------------------


loc_4291EF:				; CODE XREF: ___:00428F66j
		or	esi, 0FFFFFFFFh


loc_4291F2:				; CODE XREF: ___:00428F87j
		mov	al, [esp+11h]
		test	al, al
		jnz	short loc_429212
		mov	edx, [ebp+0BFh]
		push	edx
		call	near ptr 71AB9639h
		nop
		mov	[ebp+0BFh], esi
		mov	byte ptr [esp+12h], 1


loc_429212:				; CODE XREF: ___:004291F8j
		lea	ecx, [esp+88h]
		mov	byte ptr [esp+54A0h], 0Dh
		call	sub_401226
		lea	ecx, [esp+60h]
		mov	byte ptr [esp+54A0h], 0Ch
		call	sub_401226
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+54A0h], 2
		call	sub_401226
		lea	ecx, [esp+30h]
		mov	byte ptr [esp+54A0h], 1
		call	sub_401226
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+54A0h], 0
		call	sub_401226
		lea	ecx, [esp+0B8h]
		mov	[esp+54A0h], esi
		call	sub_4014B0
		or	esi, 0FFFFFFFFh


loc_429280:				; CODE XREF: ___:004283ABj
		mov	al, [esp+12h]
		test	al, al
		jz	loc_4282F8


loc_42928C:				; CODE XREF: ___:00429334j
					; ___:0042948Dj
		mov	al, [ebp+0BAh]
		test	al, al
		jz	short loc_4292A9
		mov	eax, [ebp+0BBh]
		push	eax
		call	near ptr 71AB9639h
		nop
		mov	[ebp+0BBh], esi


loc_4292A9:				; CODE XREF: ___:00429294j
		mov	al, [esp+11h]
		test	al, al
		jz	short loc_4292C4
		mov	ecx, [ebp+0BFh]
		push	ecx
		call	near ptr 71AB9639h
		nop
		mov	[ebp+0BFh], esi


loc_4292C4:				; CODE XREF: ___:004292AFj
					; ___:00429515j
		mov	ecx, [esp+5498h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 5494h
		retn
; ---------------------------------------------------------------------------


loc_4292DD:				; CODE XREF: ___:004286CAj
		lea	ecx, [esp+60h]
		mov	byte ptr [esp+54A0h], 0Ch
		call	sub_401226


loc_4292EE:				; CODE XREF: ___:00428697j
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+54A0h], 2
		call	sub_401226


loc_4292FF:				; CODE XREF: ___:00428451j
					; ___:0042846Aj ...
		lea	ecx, [esp+30h]
		mov	byte ptr [esp+54A0h], 1
		call	sub_401226


loc_429310:				; CODE XREF: ___:00428345j
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+54A0h], 0
		call	sub_401226
		lea	ecx, [esp+0B8h]
		mov	[esp+54A0h], esi
		call	sub_4014B0
		jmp	loc_42928C
; ---------------------------------------------------------------------------


loc_429339:				; CODE XREF: ___:004287C3j
		mov	eax, [ebp+0BBh]
		push	eax
		call	near ptr 71AB9639h
		nop
		jmp	loc_4294AA
; ---------------------------------------------------------------------------


loc_42934B:				; CODE XREF: ___:00428904j
		lea	ecx, [esp+0CDh]
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+18h]
		push	offset dword_44505C
		push	ecx
		call	sub_40102D
		add	esp, 0Ch
		lea	ecx, [esp+14h]
		push	0
		call	sub_4013D9
		push	eax
		lea	ecx, [esp+1Ch]
		call	sub_4017E4
		mov	edx, [ebp+0BBh]
		push	eax
		push	edx
		nop
		call	near ptr 71AB428Ah
		mov	eax, [ebp+0BBh]
		mov	esi, dword_50FC88
		push	eax
		call	esi
		mov	ecx, [ebp+0BFh]
		push	ecx
		jmp	loc_4294A8
; ---------------------------------------------------------------------------


loc_4293A8:				; CODE XREF: ___:00428920j
		mov	edx, [esp+10Ch]
		lea	ecx, [esp+0CDh]
		push	edx
		call	sub_4017E4
		push	eax
		lea	eax, [esp+1Ch]
		push	offset dword_444FB4
		push	eax
		call	sub_40102D
		add	esp, 10h
		lea	ecx, [esp+14h]
		push	0
		call	sub_4013D9
		push	eax
		lea	ecx, [esp+1Ch]
		call	sub_4017E4
		mov	ecx, [ebp+0BBh]
		push	eax
		push	ecx
		nop
		call	near ptr 71AB428Ah


loc_4293F2:				; CODE XREF: ___:004289D1j
					; ___:004289D9j
		mov	edx, [ebp+0BBh]
		mov	esi, dword_50FC88
		push	edx
		call	esi
		mov	eax, [ebp+0BFh]
		push	eax
		jmp	loc_4294A8
; ---------------------------------------------------------------------------


loc_42940D:				; CODE XREF: ___:004288AEj
		mov	ecx, [ebp+0BBh]
		push	ecx
		nop
		call	near ptr 71AB9639h
		jmp	loc_4294AA
; ---------------------------------------------------------------------------


loc_42941F:				; CODE XREF: ___:004289FFj
		lea	ecx, [esp+88h]
		mov	byte ptr [esp+54A0h], 0Dh
		call	sub_401226
		lea	ecx, [esp+60h]
		mov	byte ptr [esp+54A0h], 0Ch
		call	sub_401226
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+54A0h], 2
		call	sub_401226
		lea	ecx, [esp+30h]
		mov	byte ptr [esp+54A0h], 1
		call	sub_401226
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+54A0h], 0
		call	sub_401226
		lea	ecx, [esp+0B8h]
		mov	[esp+54A0h], ebx
		call	sub_4014B0
		or	esi, 0FFFFFFFFh
		jmp	loc_42928C
; ---------------------------------------------------------------------------


loc_429492:				; CODE XREF: ___:00429005j
					; ___:0042900Dj
		mov	ecx, [ebp+0BBh]
		mov	esi, dword_50FC88
		push	ecx
		call	esi
		mov	edx, [ebp+0BFh]
		push	edx


loc_4294A8:				; CODE XREF: ___:004293A3j
					; ___:00429408j
		call	esi


loc_4294AA:				; CODE XREF: ___:00429346j
					; ___:0042941Aj
		lea	ecx, [esp+88h]
		mov	byte ptr [esp+54A0h], 0Dh
		call	sub_401226
		lea	ecx, [esp+60h]
		mov	byte ptr [esp+54A0h], 0Ch
		call	sub_401226
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+54A0h], 2
		call	sub_401226
		lea	ecx, [esp+30h]
		mov	byte ptr [esp+54A0h], 1
		call	sub_401226
		lea	ecx, [esp+14h]
		mov	byte ptr [esp+54A0h], 0
		call	sub_401226
		lea	ecx, [esp+0B8h]
		mov	[esp+54A0h], ebx
		call	sub_4014B0
		jmp	loc_4292C4
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 4A0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4299C0	proc near		; CODE XREF: sub_4018DEj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4299C0
		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_401F82
		push	offset dword_44524C
		lea	ecx, [esi+11h]
		mov	[esp+18h+var_4], 0
		mov	dword ptr [esi], offset	dword_43E15C
		call	sub_4015D7
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_4299C0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_429A30:				; CODE XREF: ___:0040112Cj
					; ___:0040128Fj
		push	esi
		mov	esi, ecx
		call	sub_402108
		test	byte ptr [esp+8], 1
		jz	short loc_429A48
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_429A48:				; CODE XREF: ___:00429A3Dj
		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_429A60	proc near		; CODE XREF: sub_402108j
		push	esi
		mov	esi, ecx
		mov	eax, [esi+9Eh]
		mov	dword ptr [esi], offset	dword_43E15C
		cmp	eax, 0FFFFFFFFh
		jz	short loc_429A7B
		push	eax
		nop
		call	near ptr 71AB9639h


loc_429A7B:				; CODE XREF: sub_429A60+12j
		mov	ecx, esi
		call	sub_40179E
		pop	esi
		retn
sub_429A60	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_429AA0	proc near		; CODE XREF: sub_4010E1j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_429AA0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	edi
		mov	edi, ecx
		mov	dword ptr [edi+9Eh], 0FFFFFFFFh


loc_429AC3:				; CODE XREF: sub_429AA0+48j
		mov	eax, [edi+99h]
		mov	cl, [eax+11Ch]
		test	cl, cl
		jz	short loc_429AEA
		mov	ecx, [edi+3Bh]
		push	ecx
		call	sub_40197E
		add	esp, 4
		cmp	eax, 0FFFFFFFFh
		mov	[edi+9Eh], eax
		jz	short loc_429AC3


loc_429AEA:				; CODE XREF: sub_429AA0+31j
		mov	edx, [edi+99h]
		mov	al, [edx+11Ch]
		test	al, al
		jz	loc_429BBC
		push	ebp
		push	esi


loc_429B00:				; CODE XREF: sub_429AA0+114j
		mov	eax, [edi+9Eh]
		push	eax
		call	sub_4012DF
		mov	ebp, eax
		add	esp, 4
		cmp	ebp, 0FFFFFFFFh
		jz	loc_429B9B
		test	ebp, ebp
		jz	short loc_429B9B
		push	0C3h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+1Ch+var_10], eax
		test	eax, eax
		mov	[esp+1Ch+var_4], 0
		jz	short loc_429B46
		mov	ecx, eax
		call	sub_401884
		mov	esi, eax
		jmp	short loc_429B48
; ---------------------------------------------------------------------------


loc_429B46:				; CODE XREF: sub_429AA0+99j
		xor	esi, esi


loc_429B48:				; CODE XREF: sub_429AA0+A4j
		mov	ecx, [edi+99h]
		mov	[esi+9Dh], edi
		mov	[esi+99h], ecx
		mov	edx, [edi+3Bh]
		lea	eax, [edi+26h]
		lea	ecx, [esi+26h]
		push	eax
		mov	[esp+20h+var_4], 0FFFFFFFFh
		mov	[esi+3Bh], edx
		mov	[esi+0BBh], ebp
		call	sub_401FBE
		mov	cl, [edi+97h]
		mov	[esi+97h], cl
		mov	dl, [edi+98h]
		mov	ecx, esi
		mov	[esi+98h], dl
		call	sub_4013D4
		jmp	short loc_429BA6
; ---------------------------------------------------------------------------


loc_429B9B:				; CODE XREF: sub_429AA0+74j
					; sub_429AA0+7Cj
		push	0FAh
		call	near ptr 2821E84h
		nop


loc_429BA6:				; CODE XREF: sub_429AA0+F9j
		mov	eax, [edi+99h]
		mov	cl, [eax+11Ch]
		test	cl, cl
		jnz	loc_429B00
		pop	esi
		pop	ebp


loc_429BBC:				; CODE XREF: sub_429AA0+58j
		mov	edi, [edi+9Eh]
		cmp	edi, 0FFFFFFFFh
		jz	short loc_429BCE
		push	edi
		nop
		call	near ptr 71AB9639h


loc_429BCE:				; CODE XREF: sub_429AA0+125j
		mov	ecx, [esp+14h+var_C]
		pop	edi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_429AA0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_429C30:				; CODE XREF: ___:0040137Aj
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	al, [esi+9Dh]
		lea	edi, [esi+11h]
		test	al, al
		mov	eax, [esi+3Bh]
		lea	ebx, [esi+26h]
		push	eax
		mov	ecx, edi
		jz	short loc_429C58
		call	sub_4017E4
		push	eax
		push	offset dword_4452A4
		jmp	short loc_429C63
; ---------------------------------------------------------------------------


loc_429C58:				; CODE XREF: ___:00429C49j
		call	sub_4017E4
		push	eax
		push	offset dword_44527C


loc_429C63:				; CODE XREF: ___:00429C56j
		mov	ecx, ebx
		call	sub_4014D3
		mov	cl, [esi+98h]
		mov	dl, [esi+97h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 1Ch
		mov	ecx, esi
		call	sub_4010E1
		mov	eax, [esi+3Bh]
		mov	ecx, edi
		push	eax
		call	sub_4017E4
		push	eax
		push	offset dword_445254
		mov	ecx, ebx
		call	sub_4014D3
		mov	cl, [esi+98h]
		mov	dl, [esi+97h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 1Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_429D00	proc near		; CODE XREF: sub_40211Cj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_429D00
		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_401F82
		push	offset dword_4452D0
		lea	ecx, [esi+11h]
		mov	[esp+18h+var_4], 0
		mov	dword ptr [esi], offset	dword_43E16C
		call	sub_4015D7
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_429D00	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_429D70:				; CODE XREF: ___:00401870j
					; ___:00401B04j
		push	esi
		mov	esi, ecx
		call	sub_401F87
		test	byte ptr [esp+8], 1
		jz	short loc_429D88
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_429D88:				; CODE XREF: ___:00429D7Dj
		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: thunk


sub_429DA0	proc near		; CODE XREF: sub_401F87j
		jmp	sub_40179E
sub_429DA0	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_429DC0:				; CODE XREF: ___:004010AFj
		sub	esp, 820h
		lea	eax, [esp+3]
		push	ebx
		push	ebp
		push	esi
		mov	esi, dword_50FC90
		mov	ebp, ecx
		push	edi
		push	0
		push	1
		mov	ecx, [ebp+0A1h]
		push	eax
		push	ecx
		call	esi
		cmp	eax, 1
		jge	short loc_429E01
		mov	edx, [ebp+0A1h]
		push	edx
		nop
		call	near ptr 71AB9639h
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 820h
		retn
; ---------------------------------------------------------------------------


loc_429E01:				; CODE XREF: ___:00429DE7j
		cmp	byte ptr [esp+13h], 4
		jnz	loc_429FEC
		mov	ecx, [ebp+0A1h]
		push	0
		lea	eax, [esp+2Dh]
		push	406h
		push	eax
		push	ecx
		call	esi
		cmp	eax, 1
		jge	short loc_429E3E
		mov	edx, [ebp+0A1h]
		push	edx
		nop
		call	near ptr 71AB9639h
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 820h
		retn
; ---------------------------------------------------------------------------


loc_429E3E:				; CODE XREF: ___:00429E24j
		cmp	byte ptr [esp+29h], 1
		jnz	loc_429FEC
		mov	cx, [esp+2Ah]
		mov	edx, [esp+2Ch]
		xor	eax, eax
		push	6
		mov	[esp+1Ch], eax
		push	1
		mov	[esp+24h], eax
		push	2
		mov	[esp+2Ch], eax
		mov	word ptr [esp+24h], 2
		mov	[esp+30h], eax
		mov	[esp+26h], cx
		mov	[esp+28h], edx
		nop
		call	near ptr 71AB3B91h
		mov	ebx, eax
		lea	eax, [esp+18h]
		push	10h
		push	eax
		push	ebx
		nop
		call	near ptr 71AB406Ah
		cmp	eax, 0FFFFFFFFh
		mov	byte ptr [esp+28h], 0
		jnz	short loc_429ED9
		mov	edx, [ebp+0A1h]
		mov	ecx, 100h
		xor	eax, eax
		lea	edi, [esp+30h]
		mov	byte ptr [esp+29h], 5Bh
		push	eax
		rep stosd
		lea	ecx, [esp+2Ch]
		push	8
		push	ecx
		push	edx
		call	near ptr 71AB428Ah
		nop
		mov	eax, [ebp+0A1h]
		push	eax
		call	near ptr 71AB9639h
		nop
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 820h
		retn
; ---------------------------------------------------------------------------


loc_429ED9:				; CODE XREF: ___:00429E98j
		mov	edx, [ebp+0A1h]
		mov	ecx, 100h
		xor	eax, eax
		lea	edi, [esp+30h]
		mov	byte ptr [esp+29h], 5Ah
		push	eax
		rep stosd
		lea	ecx, [esp+2Ch]
		push	8
		push	ecx
		push	edx
		nop
		call	near ptr 71AB428Ah
		mov	ecx, [ebp+0A1h]
		mov	esi, dword_50FC50
		lea	eax, [esp+14h]
		mov	dword ptr [esp+14h], 1
		push	eax
		push	8004667Eh
		push	ecx
		call	esi
		lea	edx, [esp+14h]
		mov	dword ptr [esp+14h], 1
		push	edx
		push	8004667Eh
		push	ebx
		call	esi


loc_429F36:				; CODE XREF: ___:00429F6Fj
					; ___:00429FBEj ...
		mov	edi, dword_50FC90
		push	0
		lea	eax, [esp+434h]
		push	400h
		push	eax
		push	ebx
		call	edi
		mov	esi, eax
		test	esi, esi
		jz	loc_429FDA
		jge	short loc_429F71
		call	near ptr 71AB94DCh
		nop
		cmp	eax, 2733h
		jz	short loc_429F71
		push	0Ah
		nop
		call	near ptr 2821E84h
		jmp	short loc_429F36
; ---------------------------------------------------------------------------


loc_429F71:				; CODE XREF: ___:00429F58j
					; ___:00429F65j
		mov	edx, [ebp+0A1h]
		push	0
		lea	ecx, [esp+434h]
		push	esi
		push	ecx
		push	edx
		nop
		call	near ptr 71AB428Ah
		mov	ecx, [ebp+0A1h]
		push	0
		lea	eax, [esp+434h]
		push	400h
		push	eax
		push	ecx
		call	edi
		mov	esi, eax
		test	esi, esi
		jz	short loc_429FDA
		jge	short loc_429FC3
		call	near ptr 71AB94DCh
		nop
		cmp	eax, 2733h
		jz	short loc_429FC3
		push	0Ah
		nop
		call	near ptr 2821E84h
		jmp	loc_429F36
; ---------------------------------------------------------------------------


loc_429FC3:				; CODE XREF: ___:00429FA7j
					; ___:00429FB4j
		push	0
		lea	edx, [esp+434h]
		push	esi
		push	edx
		push	ebx
		nop
		call	near ptr 71AB428Ah
		jmp	loc_429F36
; ---------------------------------------------------------------------------


loc_429FDA:				; CODE XREF: ___:00429F52j
					; ___:00429FA5j
		mov	eax, [ebp+0A1h]
		mov	esi, dword_50FC88
		push	eax
		call	esi
		push	ebx
		call	esi


loc_429FEC:				; CODE XREF: ___:00429E06j
					; ___:00429E43j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 820h
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 90h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42A090	proc near		; CODE XREF: sub_40216Cj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_42A090
		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_401F82
		push	offset dword_4452D0
		lea	ecx, [esi+11h]
		mov	[esp+18h+var_4], 0
		mov	dword ptr [esi], offset	dword_43E17C
		call	sub_4015D7
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_42A090	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42A100:				; CODE XREF: ___:00401032j
					; ___:004017A8j
		push	esi
		mov	esi, ecx
		call	sub_401C3A
		test	byte ptr [esp+8], 1
		jz	short loc_42A118
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_42A118:				; CODE XREF: ___:0042A10Dj
		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: thunk


sub_42A130	proc near		; CODE XREF: sub_401C3Aj
		jmp	sub_40179E
sub_42A130	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42A150:				; CODE XREF: ___:0040188Ej
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_43BB6B
		push	eax
		mov	large fs:0, esp
		sub	esp, 28h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+3Bh]
		lea	ecx, [esi+11h]
		push	eax
		lea	ebx, [esi+26h]
		call	sub_4017E4
		push	eax
		push	offset dword_4452F8
		mov	ecx, ebx
		call	sub_4014D3
		mov	cl, [esi+98h]
		mov	dl, [esi+97h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 1Ch
		push	6
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		cmp	eax, 0FFFFFFFFh
		mov	[esi+9Dh], eax
		jz	loc_42A359
		mov	cx, [esi+3Bh]
		xor	eax, eax
		mov	[esp+10h], eax
		push	ecx
		mov	[esp+18h], eax
		mov	word ptr [esp+14h], 2
		mov	[esp+1Ch], eax
		mov	[esp+20h], eax
		nop
		call	near ptr 71AB2B66h
		mov	[esp+12h], ax
		mov	eax, [esi+9Dh]
		lea	edx, [esp+10h]
		push	10h
		push	edx
		push	eax
		mov	dword ptr [esp+14h], 10h
		nop
		call	near ptr 71AB3E00h
		test	eax, eax
		jz	short loc_42A226
		mov	ecx, [esi+9Dh]
		push	ecx
		nop
		call	near ptr 71AB9639h
		pop	esi
		pop	ebx
		mov	ecx, [esp+28h]
		mov	large fs:0, ecx
		add	esp, 34h
		retn
; ---------------------------------------------------------------------------


loc_42A226:				; CODE XREF: ___:0042A206j
		mov	edx, [esi+99h]
		push	ebp
		push	edi
		mov	al, [edx+11Ch]
		test	al, al
		jz	loc_42A310


loc_42A23C:				; CODE XREF: ___:0042A30Aj
		mov	eax, [esi+9Dh]
		push	0Ah
		push	eax
		call	near ptr 71AB88D3h
		nop
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_42A260
		push	0FAh
		call	near ptr 2821E84h
		nop
		jmp	loc_42A2FC
; ---------------------------------------------------------------------------


loc_42A260:				; CODE XREF: ___:0042A24Ej
		mov	eax, [esi+9Dh]
		lea	ecx, [esp+10h]
		lea	edx, [esp+28h]
		push	ecx
		push	edx
		push	eax
		call	near ptr 71AC1028h
		nop
		mov	ebp, eax
		cmp	ebp, 0FFFFFFFFh
		jz	loc_42A310
		xor	edi, edi
		cmp	ebp, edi
		jz	loc_42A310
		push	0A5h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, edi
		mov	[esp+40h], edi
		jz	short loc_42A2AE
		mov	ecx, eax
		call	sub_40211C
		mov	edi, eax


loc_42A2AE:				; CODE XREF: ___:0042A2A3j
		mov	ecx, [esi+99h]
		mov	[edi+9Dh], esi
		mov	[edi+99h], ecx
		mov	edx, [esi+3Bh]
		push	ebx
		lea	ecx, [edi+26h]
		mov	dword ptr [esp+44h], 0FFFFFFFFh
		mov	[edi+3Bh], edx
		mov	[edi+0A1h], ebp
		call	sub_401FBE
		mov	al, [esi+97h]
		mov	[edi+97h], al
		mov	cl, [esi+98h]
		mov	[edi+98h], cl
		mov	ecx, edi
		call	sub_4013D4


loc_42A2FC:				; CODE XREF: ___:0042A25Bj
		mov	edx, [esi+99h]
		mov	al, [edx+11Ch]
		test	al, al
		jnz	loc_42A23C


loc_42A310:				; CODE XREF: ___:0042A236j
					; ___:0042A27Cj ...
		mov	eax, [esi+9Dh]
		pop	edi
		cmp	eax, 0FFFFFFFFh
		pop	ebp
		jz	short loc_42A324
		push	eax
		nop
		call	near ptr 71AB9639h


loc_42A324:				; CODE XREF: ___:0042A31Bj
		mov	eax, [esi+3Bh]
		lea	ecx, [esi+11h]
		push	eax
		call	sub_4017E4
		push	eax
		push	offset dword_4452D8
		mov	ecx, ebx
		call	sub_4014D3
		mov	cl, [esi+98h]
		mov	dl, [esi+97h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 1Ch


loc_42A359:				; CODE XREF: ___:0042A1B9j
		mov	ecx, [esp+30h]
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 34h
		retn
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 90h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42A400	proc near		; CODE XREF: sub_40174Ej

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	eax
		nop
		call	near ptr 71AB4FD4h
		test	eax, eax
		jz	short loc_42A421
		mov	ecx, [eax+0Ch]
		mov	edx, [ecx]
		mov	ecx, [esp+arg_4]
		mov	eax, [edx]
		mov	[ecx], eax
		mov	al, 1
		retn	8
; ---------------------------------------------------------------------------


loc_42A421:				; CODE XREF: sub_42A400+Dj
		xor	al, al
		retn	8
sub_42A400	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42A440	proc near		; CODE XREF: sub_4020C2j

var_50C		= dword	ptr -50Ch
var_508		= dword	ptr -508h
var_504		= dword	ptr -504h
var_500		= dword	ptr -500h
var_4FC		= dword	ptr -4FCh
var_400		= byte ptr -400h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 50Ch
		push	ebx
		mov	ebx, [esp+510h+arg_4]
		push	ebp
		push	esi
		push	edi
		mov	[esp+51Ch+var_50C], 0
		mov	[esp+51Ch+var_508], 0


loc_42A461:				; CODE XREF: sub_42A440+12Cj
		mov	ebp, [esp+51Ch+arg_0]
		mov	[esp+51Ch+var_504], 1
		mov	[esp+51Ch+var_500], ebp
		xor	eax, eax
		lea	ecx, [esp+51Ch+var_500]


loc_42A47A:				; CODE XREF: sub_42A440+45j
		cmp	[ecx], ebx
		jz	short loc_42A487
		inc	eax
		add	ecx, 4
		cmp	eax, 1
		jb	short loc_42A47A


loc_42A487:				; CODE XREF: sub_42A440+3Cj
		cmp	eax, 1
		jnz	short loc_42A498
		mov	[esp+51Ch+var_4FC], ebx
		mov	[esp+51Ch+var_504], 2


loc_42A498:				; CODE XREF: sub_42A440+4Aj
		lea	eax, [esp+51Ch+var_50C]
		lea	ecx, [esp+51Ch+var_504]
		push	eax
		push	0
		push	0
		push	ecx
		push	2
		nop
		call	near ptr 71AB2DC0h
		test	eax, eax
		jbe	short loc_42A523
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42A523
		lea	edx, [esp+51Ch+var_504]
		push	edx
		push	ebp
		call	sub_436F60
; ---------------------------------------------------------------------------
		test	eax, eax
		jz	short loc_42A4CC
		mov	eax, ebp
		mov	ebp, ebx
		jmp	short loc_42A4CE
; ---------------------------------------------------------------------------


loc_42A4CC:				; CODE XREF: sub_42A440+84j
		mov	eax, ebx


loc_42A4CE:				; CODE XREF: sub_42A440+8Aj
		push	0
		lea	ecx, [esp+520h+var_400]
		push	3FFh
		push	ecx
		push	eax
		nop
		call	near ptr 71AB615Ah
		mov	edi, eax
		xor	esi, esi
		cmp	edi, 0FFFFFFFFh
		mov	[esp+edi+51Ch+var_400],	0
		jz	short loc_42A572
		test	edi, edi
		jz	short loc_42A572
		jbe	short loc_42A51C


loc_42A4FB:				; CODE XREF: sub_42A440+DAj
		mov	edx, edi
		push	0
		sub	edx, esi
		lea	eax, [esp+esi+520h+var_400]
		push	edx
		push	eax
		push	ebp
		call	near ptr 71AB428Ah
		nop
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42A572
		add	esi, eax
		cmp	esi, edi
		jb	short loc_42A4FB


loc_42A51C:				; CODE XREF: sub_42A440+B9j
		mov	ebp, [esp+51Ch+arg_0]


loc_42A523:				; CODE XREF: sub_42A440+70j
					; sub_42A440+75j
		mov	[esp+51Ch+var_500], ebp
		mov	[esp+51Ch+var_504], 1
		xor	eax, eax
		lea	ecx, [esp+51Ch+var_500]


loc_42A535:				; CODE XREF: sub_42A440+100j
		cmp	[ecx], ebx
		jz	short loc_42A542
		inc	eax
		add	ecx, 4
		cmp	eax, 1
		jb	short loc_42A535


loc_42A542:				; CODE XREF: sub_42A440+F7j
		cmp	eax, 1
		jnz	short loc_42A554
		mov	[esp+eax*4+51Ch+var_500], ebx
		mov	eax, [esp+51Ch+var_504]
		inc	eax
		mov	[esp+51Ch+var_504], eax


loc_42A554:				; CODE XREF: sub_42A440+105j
		lea	ecx, [esp+51Ch+var_50C]
		lea	edx, [esp+51Ch+var_504]
		push	ecx
		push	edx
		push	0
		push	0
		push	2
		call	near ptr 71AB2DC0h
		nop
		test	eax, eax
		jle	loc_42A461


loc_42A572:				; CODE XREF: sub_42A440+B3j
					; sub_42A440+B7j ...
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 50Ch
		retn	8
sub_42A440	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 60h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42A5F0	proc near		; CODE XREF: sub_401C1Cj

var_51C		= word ptr -51Ch
var_51A		= word ptr -51Ah
var_518		= dword	ptr -518h
var_50C		= dword	ptr -50Ch
var_508		= dword	ptr -508h
var_504		= dword	ptr -504h
var_500		= dword	ptr -500h
var_400		= dword	ptr -400h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 51Ch
		push	ebx
		push	ebp
		mov	ebp, [esp+524h+arg_4]
		push	esi
		push	edi
		mov	edx, ecx
		movsx	eax, byte ptr [ebp+3]
		dec	eax
		mov	[esp+52Ch+var_508], 0
		mov	[esp+52Ch+var_50C], 7
		mov	[esp+52Ch+var_51C], 2
		jz	short loc_42A68F
		dec	eax
		jz	short loc_42A63A
		dec	eax
		jnz	loc_42A782
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 51Ch
		retn	0Ch
; ---------------------------------------------------------------------------


loc_42A63A:				; CODE XREF: sub_42A5F0+32j
		movsx	eax, byte ptr [ebp+4]
		mov	ecx, eax
		lea	esi, [ebp+5]
		mov	ebx, ecx
		lea	edi, [esp+52Ch+var_400]
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	byte ptr [esp+eax+52Ch+var_400], 0
		lea	eax, [esp+52Ch+var_518]
		lea	ecx, [esp+52Ch+var_400]
		push	eax
		push	ecx
		mov	ecx, edx
		call	sub_40174E
		test	al, al
		jz	loc_42A782
		movsx	esi, byte ptr [ebp+4]
		mov	dx, [esi+ebp+5]
		add	esi, 7
		mov	[esp+52Ch+var_51A], dx
		jmp	short loc_42A6AB
; ---------------------------------------------------------------------------


loc_42A68F:				; CODE XREF: sub_42A5F0+2Fj
		mov	eax, [ebp+4]
		mov	esi, 0Ah
		mov	[esp+52Ch+var_400], eax
		mov	[esp+52Ch+var_518], eax
		mov	ax, [ebp+8]
		mov	[esp+52Ch+var_51A], ax


loc_42A6AB:				; CODE XREF: sub_42A5F0+9Dj
		mov	ebx, dword_50FC30
		push	11h
		push	2
		push	2
		call	ebx
		push	11h
		push	2
		push	2
		mov	edi, eax
		call	ebx
		cmp	edi, 0FFFFFFFFh
		jz	loc_42A782
		cmp	eax, 0FFFFFFFFh
		jnz	loc_42A782
		mov	edx, [esp+52Ch+arg_8]
		lea	ecx, [esp+52Ch+var_51C]
		push	10h
		push	ecx
		sub	edx, esi
		push	0
		add	esi, ebp
		mov	ebp, dword_50FC5C
		push	edx
		push	esi
		push	edi
		call	ebp
		mov	ebx, [esp+52Ch+arg_0]
		push	10h
		push	ebx
		push	edi
		call	near ptr 71AB3E00h
		nop
		test	eax, eax
		jnz	short loc_42A782


loc_42A709:				; CODE XREF: sub_42A5F0+174j
		lea	eax, [esp+52Ch+var_50C]
		lea	ecx, [esp+52Ch+var_504]
		push	eax
		push	0
		push	0
		push	ecx
		push	1
		mov	[esp+540h+var_500], 0FFFFFFFFh
		mov	[esp+540h+var_504], 1
		call	near ptr 71AB2DC0h
		nop
		push	0
		push	0
		push	0
		lea	edx, [esp+538h+var_400]
		push	3FFh
		push	edx
		push	edi
		nop
		call	near ptr 71AB2D0Fh
		push	10h
		mov	esi, eax
		push	ebx
		push	0
		lea	eax, [esp+538h+var_400]
		push	esi
		push	eax
		push	0FFFFFFFFh
		call	ebp
		test	esi, esi
		jbe	short loc_42A766
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_42A709


loc_42A766:				; CODE XREF: sub_42A5F0+16Fj
		mov	esi, dword_50FC88
		push	edi
		call	esi
		push	0FFFFFFFFh
		call	esi
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 51Ch
		retn	0Ch
; ---------------------------------------------------------------------------


loc_42A782:				; CODE XREF: sub_42A5F0+35j
					; sub_42A5F0+86j ...
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 51Ch
		retn	0Ch
sub_42A5F0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 70h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42A810:				; CODE XREF: ___:loc_4013A2j
		sub	esp, 82Ch
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+83Ch]
		cmp	esi, 0FFFFFFFFh
		push	edi
		mov	ebp, ecx
		mov	dword ptr [esp+14h], 0
		mov	dword ptr [esp+10h], 0Bh
		mov	[esp+34h], esi
		mov	dword ptr [esp+30h], 1
		jz	loc_42AACA
		mov	eax, [ebp-8]
		mov	ecx, [eax+4]
		mov	ax, [ecx+ebp-2]
		cmp	ax, 1
		jnz	loc_42ABE6
		mov	edi, dword_50FC80
		lea	edx, [esp+10h]
		push	edx
		push	0
		lea	eax, [esp+38h]
		push	0
		push	eax
		push	1
		call	edi
		test	eax, eax
		jle	loc_42AC73
		lea	ecx, [esp+30h]
		push	ecx
		push	esi
		call	sub_436F60
; ---------------------------------------------------------------------------
		dd 840FC085h, 3E3h, 16A066Ah, 0F6E8026Ah, 90716892h, 89FFF883h
		dd 0F1C2444h, 22184h, 901D8B00h, 6A0050FCh, 24948D00h
		dd 240h, 5652026Ah, 0BC80D3FFh,	23C24h,	850F0500h, 1FEh
		dd 2484BE0Fh, 23Dh, 948DC933h, 23C24h, 248C8900h, 23Ch
		dd 40248C89h, 66000002h, 44248C89h, 51000002h, 88565250h
		dd 256248Ch, 0D3FF0000h, 26A006Ah, 44533468h, 0E8905600h
		dd 7168997Ah, 1024448Dh, 30244C8Dh, 6A006A50h, 16A5100h
		dd 282444C7h, 0
; ---------------------------------------------------------------------------
		mov	dword ptr [esp+24h], 7
		mov	[esp+48h], esi
		mov	dword ptr [esp+44h], 1
		call	edi
		xor	eax, eax
		lea	edx, [esp+23Ch]
		push	eax
		mov	ecx, 20h
		lea	edi, [esp+240h]
		push	2
		push	edx
		push	esi
		rep stosd
		call	ebx
		cmp	byte ptr [esp+23Ch], 1
		jnz	loc_42AACA
		movsx	eax, byte ptr [esp+23Dh]
		push	0
		lea	ecx, [esp+640h]
		push	eax
		push	ecx
		push	esi
		call	ebx
		movsx	edx, byte ptr [esp+23Dh]
		push	0
		lea	eax, [esp+240h]
		push	1
		push	eax
		push	esi
		mov	byte ptr [esp+edx+64Ch], 0
		call	ebx
		movsx	ecx, byte ptr [esp+23Ch]
		push	0
		lea	edx, [esp+740h]
		push	ecx
		push	edx
		push	esi
		call	ebx
		movsx	eax, byte ptr [esp+23Ch]
		mov	ecx, [ebp-8]
		mov	byte ptr [esp+eax+73Ch], 0
		mov	ecx, [ecx+4]
		add	ecx, ebp
		call	sub_4017E4
		mov	edi, eax
		lea	ecx, [esp+63Ch]


loc_42A9DB:				; CODE XREF: ___:0042A9F9j
		mov	dl, [ecx]
		mov	al, dl
		cmp	dl, [edi]
		jnz	short loc_42A9FF
		test	al, al
		jz	short loc_42A9FB
		mov	dl, [ecx+1]
		mov	al, dl
		cmp	dl, [edi+1]
		jnz	short loc_42A9FF
		add	ecx, 2
		add	edi, 2
		test	al, al
		jnz	short loc_42A9DB


loc_42A9FB:				; CODE XREF: ___:0042A9E5j
		xor	eax, eax
		jmp	short loc_42AA04
; ---------------------------------------------------------------------------


loc_42A9FF:				; CODE XREF: ___:0042A9E1j
					; ___:0042A9EFj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_42AA04:				; CODE XREF: ___:0042A9FDj
		test	eax, eax
		jz	short loc_42AA61
		mov	eax, [ebp-8]
		mov	ecx, [eax+4]
		lea	ecx, [ecx+ebp+15h]
		call	sub_4017E4
		lea	edi, [esp+73Ch]


loc_42AA1E:				; CODE XREF: ___:0042AA3Cj
		mov	dl, [edi]
		mov	cl, dl
		cmp	dl, [eax]
		jnz	short loc_42AA42
		test	cl, cl
		jz	short loc_42AA3E
		mov	dl, [edi+1]
		mov	cl, dl
		cmp	dl, [eax+1]
		jnz	short loc_42AA42
		add	edi, 2
		add	eax, 2
		test	cl, cl
		jnz	short loc_42AA1E


loc_42AA3E:				; CODE XREF: ___:0042AA28j
		xor	eax, eax
		jmp	short loc_42AA47
; ---------------------------------------------------------------------------


loc_42AA42:				; CODE XREF: ___:0042AA24j
					; ___:0042AA32j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_42AA47:				; CODE XREF: ___:0042AA40j
		test	eax, eax
		jz	short loc_42AA61
		push	esi
		call	near ptr 71AB9639h
		nop
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 82Ch
		retn	4
; ---------------------------------------------------------------------------


loc_42AA61:				; CODE XREF: ___:0042AA06j
					; ___:0042AA49j
		mov	edi, dword_50FC8C
		push	0
		push	2
		push	offset dword_445330
		push	esi
		call	edi
		lea	eax, [esp+10h]
		lea	ecx, [esp+30h]
		push	eax
		push	0
		push	0
		push	ecx
		push	1
		mov	[esp+48h], esi
		mov	dword ptr [esp+44h], 1
		nop
		call	near ptr 71AB2DC0h
		lea	edx, [esp+30h]
		push	edx
		push	esi
		call	sub_436F60
; ---------------------------------------------------------------------------
		test	eax, eax
		jz	short loc_42AACA
		push	0
		lea	eax, [esp+138h]
		push	4
		push	eax
		push	esi
		call	ebx
		mov	eax, [esp+137h]
		and	eax, 0FFh
		dec	eax
		jz	short loc_42AB31
		sub	eax, 2
		jz	short loc_42AAD9
		dec	eax


loc_42AAC8:				; CODE XREF: ___:0042AB2Fj
		jnz	short loc_42AB40


loc_42AACA:				; CODE XREF: ___:0042A842j
					; ___:0042A964j ...
		pop	edi
		pop	esi
		pop	ebp
		xor	al, al
		pop	ebx
		add	esp, 82Ch
		retn	4
; ---------------------------------------------------------------------------


loc_42AAD9:				; CODE XREF: ___:0042AAC5j
		push	0
		lea	ecx, [esp+240h]
		push	1
		push	ecx
		push	esi
		call	ebx
		movsx	edx, byte ptr [esp+23Ch]
		push	0
		lea	eax, [esp+13Ch]
		push	edx
		push	eax
		push	esi
		call	ebx
		movsx	ecx, byte ptr [esp+23Ch]
		lea	edx, [esp+23Ch]
		lea	eax, [esp+138h]
		mov	byte ptr [esp+ecx+138h], 0
		mov	ecx, [ebp-8]
		push	edx
		push	eax
		mov	edx, [ecx+4]
		lea	ecx, [edx+ebp-8]
		call	sub_40174E
		test	al, al
		jmp	short loc_42AAC8
; ---------------------------------------------------------------------------


loc_42AB31:				; CODE XREF: ___:0042AAC0j
		push	0
		lea	eax, [esp+240h]
		push	4
		push	eax
		push	esi
		call	ebx


loc_42AB40:				; CODE XREF: ___:loc_42AAC8j
		push	0
		lea	ecx, [esp+23Ch]
		push	2
		push	ecx
		push	esi
		call	ebx
		cmp	byte ptr [esp+135h], 1
		jnz	loc_42AACA
		mov	ebx, [esp+1Ch]
		mov	dx, [esp+238h]
		mov	eax, [esp+23Ch]
		lea	ecx, [esp+20h]
		push	10h
		push	ecx
		push	ebx
		mov	word ptr [esp+2Ch], 2
		mov	[esp+2Eh], dx
		mov	[esp+30h], eax
		nop
		call	near ptr 71AB406Ah
		test	eax, eax
		jnz	loc_42AACA
		push	eax
		push	4
		push	offset dword_445328
		push	esi
		call	edi
		push	0
		lea	edx, [esp+240h]
		push	4
		push	edx
		push	esi
		call	edi
		push	0
		lea	eax, [esp+23Ch]
		push	2
		push	eax
		push	esi
		call	edi
		mov	ecx, [ebp-8]
		push	ebx
		push	esi
		mov	edx, [ecx+4]
		lea	ecx, [edx+ebp-8]
		call	sub_4020C2
		push	ebx
		call	near ptr 71AB9639h
		nop
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 82Ch
		retn	4
; ---------------------------------------------------------------------------


loc_42ABE6:				; CODE XREF: ___:0042A857j
		cmp	ax, 2
		jnz	loc_42AC73
		mov	ebx, dword_50FC80


loc_42ABF6:				; CODE XREF: ___:0042AC71j
		lea	eax, [esp+10h]
		lea	ecx, [esp+30h]
		push	eax
		push	0
		push	0
		push	ecx
		push	1
		mov	[esp+48h], esi
		mov	dword ptr [esp+44h], 1
		call	ebx
		lea	edx, [esp+18h]
		lea	eax, [esp+20h]
		push	edx
		push	eax
		push	0
		lea	ecx, [esp+248h]
		push	3FFh
		push	ecx
		push	esi
		mov	dword ptr [esp+30h], 10h
		nop
		call	near ptr 71AB2D0Fh
		mov	ecx, [ebp-8]
		mov	edi, eax
		lea	edx, [esp+23Ch]
		push	edi
		push	edx
		mov	edx, [ecx+4]
		lea	eax, [esp+28h]
		push	eax
		lea	ecx, [edx+ebp-8]
		call	sub_401C1C
		test	edi, edi
		jz	short loc_42AC73
		cmp	edi, 0FFFFFFFFh
		jz	short loc_42AC73
		lea	eax, [esp+30h]
		push	eax
		push	esi
		call	sub_436F60
; ---------------------------------------------------------------------------
		test	eax, eax
		jnz	short loc_42ABF6


loc_42AC73:				; CODE XREF: ___:0042A877j
					; ___:0042ABEAj ...
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 82Ch
		retn	4
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 120h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42ADB0	proc near		; CODE XREF: sub_401F19j

var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch

		sub	esp, 10h
		push	esi
		mov	esi, ecx
		mov	eax, [esi+32h]
		test	eax, eax
		jz	short loc_42ADC4
		xor	al, al
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_42ADC4:				; CODE XREF: sub_42ADB0+Bj
		xor	eax, eax
		mov	ax, [esi+6]
		dec	eax
		jz	short loc_42ADD6
		dec	eax
		jz	short loc_42ADF8
		mov	word ptr [esi+6], 1


loc_42ADD6:				; CODE XREF: sub_42ADB0+1Bj
		mov	eax, 1
		mov	ecx, 6


loc_42ADE0:				; CODE XREF: sub_42ADB0+52j
		push	ecx
		push	eax
		push	2
		nop
		call	near ptr 71AB3B91h
		test	eax, eax
		mov	[esi+32h], eax
		jnz	short loc_42AE04
		xor	al, al
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_42ADF8:				; CODE XREF: sub_42ADB0+1Ej
		mov	eax, 2
		mov	ecx, 11h
		jmp	short loc_42ADE0
; ---------------------------------------------------------------------------


loc_42AE04:				; CODE XREF: sub_42ADB0+3Fj
		mov	ax, [esi+4]
		mov	[esp+14h+var_10], 2
		push	eax
		mov	[esp+18h+var_C], 0
		call	near ptr 71AB2B66h
		nop
		mov	edx, [esi+32h]
		lea	ecx, [esp+14h+var_10]
		push	10h
		push	ecx
		push	edx
		mov	[esp+20h+var_E], ax
		nop
		call	near ptr 71AB3E00h
		test	eax, eax
		jz	short loc_42AE49
		mov	eax, [esi+32h]
		push	eax
		call	near ptr 71AB9639h
		nop
		xor	al, al
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_42AE49:				; CODE XREF: sub_42ADB0+86j
		cmp	word ptr [esi+6], 1
		jnz	short loc_42AE71
		mov	ecx, [esi+32h]
		push	3
		push	ecx
		nop
		call	near ptr 71AB88D3h
		test	eax, eax
		jz	short loc_42AE71
		mov	edx, [esi+32h]
		push	edx
		nop
		call	near ptr 71AB9639h
		xor	al, al
		pop	esi
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------


loc_42AE71:				; CODE XREF: sub_42ADB0+9Ej
					; sub_42ADB0+AEj
		mov	al, 1
		pop	esi
		add	esp, 10h
		retn
sub_42ADB0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_42AEC0	proc near		; CODE XREF: sub_401DBBj

var_24		= byte ptr -24h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset SEH_42AEC0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	[ebp+var_10], esp
		mov	ax, [edi+6]
		cmp	ax, 1
		jnz	short loc_42AF5A
		mov	eax, [edi+32h]
		mov	[ebp+var_14], 10h
		test	eax, eax
		jz	short loc_42AF41
		mov	ebx, dword_50FC84
		lea	ecx, [ebp+var_14]
		lea	edx, [ebp+var_24]
		push	ecx
		push	edx
		push	eax
		call	ebx
		mov	esi, eax
		test	esi, esi
		jnz	short loc_42AF26


loc_42AF12:				; CODE XREF: sub_42AEC0+64j
		mov	edx, [edi+32h]
		lea	eax, [ebp+var_14]
		lea	ecx, [ebp+var_24]
		push	eax
		push	ecx
		push	edx
		call	ebx
		mov	esi, eax
		test	esi, esi
		jz	short loc_42AF12


loc_42AF26:				; CODE XREF: sub_42AEC0+50j
		mov	eax, [edi]
		push	esi
		mov	ecx, edi
		mov	[ebp+var_4], 0
		call	dword ptr [eax]
		push	esi
		mov	bl, al
		nop
		call	near ptr 71AB9639h
		test	bl, bl
		jnz	short loc_42AF7A


loc_42AF41:				; CODE XREF: sub_42AEC0+39j
					; sub_42AEC0+9Ej ...
		xor	al, al
		mov	ecx, [ebp+var_C]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		mov	eax, offset loc_42AF41
		retn
; ---------------------------------------------------------------------------


loc_42AF5A:				; CODE XREF: sub_42AEC0+2Bj
		cmp	ax, 2
		jnz	short loc_42AF41
		mov	eax, [edi+32h]
		mov	edx, [edi]
		push	eax
		mov	ecx, edi
		call	dword ptr [edx]
		mov	ecx, [edi+32h]
		mov	bl, al
		push	ecx
		nop
		call	near ptr 71AB9639h
		test	bl, bl
		jz	short loc_42AF41


loc_42AF7A:				; CODE XREF: sub_42AEC0+7Fj
		mov	ecx, [ebp+var_C]
		pop	edi
		pop	esi
		mov	al, 1
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_42AEC0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42AFD0:				; CODE XREF: ___:00401F78j
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset loc_43BB90
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+8]
		push	edi
		mov	[ebp-10h], esp
		mov	dword ptr [ebp-4], 0
		mov	eax, [esi]
		mov	ecx, [eax+4]
		mov	eax, [ecx+esi+32h]
		add	ecx, esi
		push	eax
		mov	edx, [ecx]
		call	dword ptr [edx]
		mov	ecx, [esi]
		mov	edx, [ecx+4]
		mov	eax, [edx+esi+32h]
		push	eax
		nop
		call	near ptr 71AB9639h


loc_42B019:				; DATA XREF: ___:0042B031o
		mov	ecx, [ebp-0Ch]
		pop	edi
		pop	esi
		mov	eax, 1
		mov	large fs:0, ecx
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		mov	eax, offset loc_42B019
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42B060	proc near		; CODE XREF: sub_401C17j

var_19C		= byte ptr -19Ch
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_4		= byte ptr  8
arg_1C		= byte ptr  20h

		push	0FFFFFFFFh
		push	offset SEH_42B060
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 194h
		lea	eax, [esp+1A0h+var_19C]
		mov	[esp+1A0h+var_4], 1
		push	eax
		push	2
		nop
		call	near ptr 71AB664Dh
		test	eax, eax
		jz	short loc_42B0D7


loc_42B097:				; CODE XREF: ___:0042B166j
		lea	ecx, [esp+1A0h+arg_4]
		mov	byte ptr [esp+1A0h+var_4], 0
		call	sub_401226
		lea	ecx, [esp+1A0h+arg_1C]
		mov	[esp+1A0h+var_4], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+1A0h+var_C]
		mov	large fs:0, ecx
		add	esp, 1A0h
		retn
; ---------------------------------------------------------------------------


loc_42B0D7:				; CODE XREF: sub_42B060+35j
		push	42h
		call	sub_4367FA
sub_42B060	endp

; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+0], eax
		test	eax, eax
		mov	byte ptr [esp+19Ch], 2
		jz	short loc_42B0FC
		push	1
		mov	ecx, eax
		call	sub_4014E7
		jmp	short loc_42B0FE
; ---------------------------------------------------------------------------


loc_42B0FC:				; CODE XREF: ___:0042B0EFj
		xor	eax, eax


loc_42B0FE:				; CODE XREF: ___:0042B0FAj
		mov	dword_50E3C8, eax
		mov	ecx, [eax]
		mov	byte ptr [esp+19Ch], 1
		mov	edx, [ecx+4]
		mov	cx, [esp+1A4h]
		mov	[edx+eax+4], cx
		mov	eax, dword_50E3C8
		lea	edx, [esp+1A8h]
		mov	ecx, [eax]
		push	edx
		mov	edx, [ecx+4]
		lea	ecx, [edx+eax+8]
		call	sub_40200E
		lea	eax, [esp+1C0h]
		push	eax
		mov	eax, dword_50E3C8
		mov	ecx, [eax]
		mov	edx, [ecx+4]
		lea	ecx, [edx+eax+1Dh]
		call	sub_40200E
		mov	eax, dword_50E3C8
		mov	ecx, [eax]
		mov	ecx, [ecx+4]
		add	ecx, eax
		call	sub_401F19
		test	al, al
		jz	loc_42B097


loc_42B16C:				; CODE XREF: ___:0042B17Dj
		mov	eax, dword_50E3C8
		mov	edx, [eax]
		mov	ecx, [edx+4]
		add	ecx, eax
		call	sub_401DBB
		jmp	short loc_42B16C
; ---------------------------------------------------------------------------
		db 90h
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42B1D0	proc near		; CODE XREF: sub_4014E7j

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		mov	eax, [esp+4+arg_0]
		push	esi
		test	eax, eax
		mov	esi, ecx
		mov	[esp+8+var_4], 0
		jz	short loc_42B1F2
		lea	ecx, [esi+8]
		mov	dword ptr [esi], offset	dword_43E190
		call	sub_4014AB


loc_42B1F2:				; CODE XREF: sub_42B1D0+12j
		mov	eax, [esi]
		mov	ecx, [eax+4]
		mov	dword ptr [ecx+esi], offset dword_43E18C
		mov	edx, [esi]
		mov	eax, [edx+4]
		lea	ecx, [eax-8]
		mov	[eax+esi-4], ecx
		mov	eax, esi
		pop	esi
		pop	ecx
		retn	4
sub_42B1D0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42B240	proc near		; CODE XREF: sub_4014ABj

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_42B240
		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+8]
		call	sub_401424
		lea	ecx, [esi+1Dh]
		mov	[esp+14h+var_4], 0
		call	sub_401424
		mov	ecx, [esp+14h+var_C]
		mov	dword ptr [esi], offset	dword_43E19C
		mov	dword ptr [esi+32h], 0
		mov	word ptr [esi+6], 1
		mov	word ptr [esi+4], 0
		mov	dword ptr [esi+36h], 1000h
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_42B240	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42B2D0:				; CODE XREF: ___:004020D1j
		sub	ecx, [ecx-4]
		jmp	loc_4013A2
; ---------------------------------------------------------------------------
		align 10h


loc_42B2E0:				; CODE XREF: ___:00401352j
		push	0FFFFFFFFh
		push	offset loc_43BC08
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[esp+4], esi
		call	sub_401F82
		push	offset dword_443D70
		lea	ecx, [esi+11h]
		mov	dword ptr [esp+14h], 0
		mov	dword ptr [esi], offset	dword_43E1A0
		call	sub_4015D7
		mov	ecx, [esp+8]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42B350:				; CODE XREF: ___:00401398j
					; ___:00401F41j
		push	esi
		mov	esi, ecx
		call	sub_4011BD
		test	byte ptr [esp+8], 1
		jz	short loc_42B368
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_42B368:				; CODE XREF: ___:0042B35Dj
		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: thunk


sub_42B380	proc near		; CODE XREF: sub_4011BDj
		jmp	sub_40179E
sub_42B380	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42B3A0:				; CODE XREF: ___:0040134Dj
		mov	eax, 1000h
		call	sub_436840
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+99h]
		mov	cl, [eax+11Ch]
		test	cl, cl
		jz	short loc_42B42C
		mov	ebx, dword_50FC90
		mov	ebp, dword_50FC8C


loc_42B3CC:				; CODE XREF: ___:0042B42Aj
		mov	edx, [esi+9Dh]
		mov	ecx, 400h
		xor	eax, eax
		lea	edi, [esp+10h]
		rep stosd
		push	eax
		mov	eax, [edx+0A5h]
		lea	ecx, [esp+14h]
		push	1000h
		push	ecx
		push	eax
		call	ebx
		test	eax, eax
		jz	short loc_42B42C
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42B42C
		mov	edx, [esi+9Dh]
		push	0
		push	eax
		lea	ecx, [esp+18h]
		mov	eax, [edx+0A1h]
		push	ecx
		push	eax
		call	ebp
		test	eax, eax
		jz	short loc_42B42C
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42B42C
		mov	ecx, [esi+99h]
		mov	al, [ecx+11Ch]
		test	al, al
		jnz	short loc_42B3CC


loc_42B42C:				; CODE XREF: ___:0042B3BEj
					; ___:0042B3F5j ...
		mov	edx, [esi+9Dh]
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, [edx+0A1h]
		pop	ebx
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42B448
		push	eax
		nop
		call	near ptr 71AB9639h


loc_42B448:				; CODE XREF: ___:0042B43Fj
		add	esp, 1000h
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42B480	proc near		; CODE XREF: sub_401663j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_42B480
		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_401F82
		push	offset dword_443D70
		lea	ecx, [esi+11h]
		mov	[esp+18h+var_4], 0
		mov	dword ptr [esi], offset	dword_43E1B0
		call	sub_4015D7
		mov	ecx, [esp+14h+var_C]
		mov	eax, esi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 10h
		retn
sub_42B480	endp

; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42B4F0:				; CODE XREF: ___:004013A7j
					; ___:00401B22j
		push	esi
		mov	esi, ecx
		call	sub_401217
		test	byte ptr [esp+8], 1
		jz	short loc_42B508
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_42B508:				; CODE XREF: ___:0042B4FDj
		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: thunk


sub_42B520	proc near		; CODE XREF: sub_401217j
		jmp	sub_40179E
sub_42B520	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42B540:				; CODE XREF: ___:0040152Dj
		mov	eax, 1014h
		call	sub_436840
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		or	edi, 0FFFFFFFFh
		mov	eax, [esi+99h]
		mov	[esi+0A5h], edi
		mov	cl, [eax+11Ch]
		test	cl, cl
		jz	loc_42B70A
		mov	ebx, 1
		push	6
		push	ebx
		push	2
		nop
		call	near ptr 71AB3B91h
		cmp	eax, edi
		mov	[esi+0A5h], eax
		jnz	short loc_42B598
		mov	[esi+0A5h], edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 1014h
		retn
; ---------------------------------------------------------------------------


loc_42B598:				; CODE XREF: ___:0042B585j
		mov	dx, [esi+3Fh]
		xor	ecx, ecx
		mov	[esp+14h], ecx
		push	edx
		mov	[esp+1Ch], ecx
		mov	word ptr [esp+18h], 2
		mov	[esp+20h], ecx
		mov	[esp+24h], ecx
		nop
		call	near ptr 71AB2B66h
		lea	ecx, [esi+43h]
		mov	[esp+16h], ax
		call	sub_4017E4
		push	eax
		call	sub_40187F
		add	esp, 4
		cmp	eax, edi
		mov	[esp+18h], eax
		jnz	short loc_42B5F2
		mov	eax, [esi+0A5h]
		push	eax
		nop
		call	near ptr 71AB9639h
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 1014h
		retn
; ---------------------------------------------------------------------------


loc_42B5F2:				; CODE XREF: ___:0042B5D8j
		mov	edx, [esi+0A5h]
		lea	ecx, [esp+14h]
		push	10h
		push	ecx
		push	edx
		nop
		call	near ptr 71AB406Ah
		cmp	eax, edi
		jnz	short loc_42B622
		mov	eax, [esi+0A5h]
		push	eax
		nop
		call	near ptr 71AB9639h
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 1014h
		retn
; ---------------------------------------------------------------------------


loc_42B622:				; CODE XREF: ___:0042B608j
		mov	edx, [esi+0A1h]
		mov	edi, dword_50FC50
		lea	ecx, [esp+10h]
		mov	[esp+10h], ebx
		push	ecx
		push	8004667Eh
		push	edx
		call	edi
		mov	ecx, [esi+0A5h]
		lea	eax, [esp+10h]
		push	eax
		push	8004667Eh
		push	ecx
		mov	[esp+1Ch], ebx
		call	edi
		mov	edx, [esi+99h]
		mov	al, [edx+11Ch]
		test	al, al
		jz	loc_42B70A
		mov	ebx, dword_50FC90
		mov	ebp, dword_50FC8C


loc_42B676:				; CODE XREF: ___:0042B6FAj
		mov	ecx, [esi+0A5h]
		push	0
		lea	eax, [esp+28h]
		push	1000h
		push	eax
		push	ecx
		call	ebx
		mov	edi, eax
		test	edi, edi
		jz	short loc_42B70A
		jge	short loc_42B6A0
		nop
		call	near ptr 71AB94DCh
		cmp	eax, 2733h
		jnz	short loc_42B702


loc_42B6A0:				; CODE XREF: ___:0042B691j
		mov	eax, [esi+0A1h]
		push	0
		lea	edx, [esp+28h]
		push	edi
		push	edx
		push	eax
		call	ebp
		mov	edx, [esi+0A1h]
		push	0
		lea	ecx, [esp+28h]
		push	1000h
		push	ecx
		push	edx
		call	ebx
		mov	edi, eax
		test	edi, edi
		jz	short loc_42B70A
		jge	short loc_42B6DB
		nop
		call	near ptr 71AB94DCh
		cmp	eax, 2733h
		jnz	short loc_42B702


loc_42B6DB:				; CODE XREF: ___:0042B6CCj
		mov	ecx, [esi+0A5h]
		push	0
		lea	eax, [esp+28h]
		push	edi
		push	eax
		push	ecx
		call	ebp
		mov	edx, [esi+99h]
		mov	al, [edx+11Ch]
		test	al, al
		jnz	loc_42B676
		jmp	short loc_42B70A
; ---------------------------------------------------------------------------


loc_42B702:				; CODE XREF: ___:0042B69Ej
					; ___:0042B6D9j
		push	0Ah
		call	near ptr 2821E84h
		nop


loc_42B70A:				; CODE XREF: ___:0042B567j
					; ___:0042B664j ...
		mov	eax, [esi+0A1h]
		mov	edi, dword_50FC88
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42B71E
		push	eax
		call	edi


loc_42B71E:				; CODE XREF: ___:0042B719j
		mov	esi, [esi+0A5h]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_42B72C
		push	esi
		call	edi


loc_42B72C:				; CODE XREF: ___:0042B727j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 1014h
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 80h dup(0CCh)
		db  6Ah	; j
		db 0FFh
		db  68h	; h
		db  48h	; H
		db 0BCh	; 
		db  43h	; C
		db    0
		db  64h	; d
		db 0A1h	; 
		db    0
		db    0
		db    0
		db    0
		db  50h	; P
		db  64h	; d
		db  89h	; 
		db  25h	; %
		db    0
		db    0
		db    0
		db    0
		db  51h	; Q
		db  56h	; V
		db  8Bh	; 
		db 0F1h	; 
		db  89h	; 
		db  74h	; t
		db  24h	; $
		db    4
		db 0E8h	; 
		db 0A0h	; 
		db  67h	; g
		db 0FDh	; 
		db 0FFh
		db  68h	; h
		db  70h	; p
		db  3Dh	; =
		db  44h	; D
		db    0
		db  8Dh	; 
		db  4Eh	; N
		db  11h
		db 0C7h	; 
		db  44h	; D
		db  24h	; $
		db  14h
		db    0
		db    0
		db    0
		db    0
		db 0C7h	; 
		db    6
		db 0C0h	; 
		db 0E1h	; 
		db  43h	; C
		db    0
		db 0E8h	; 
		db 0DAh	; 
		db  5Dh	; ]
		db 0FDh	; 
		db 0FFh
		db  8Bh	; 
		db  4Ch	; L
		db  24h	; $
		db    8
		db  8Bh	; 
		db 0C6h	; 
		db  5Eh	; ^
		db  64h	; d
		db  89h	; 
		db  0Dh
		db    0
		db    0
		db    0
		db    0
		db  83h	; 
		db 0C4h	; 
		db  10h
		db 0C3h	; 
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42B830:				; CODE XREF: ___:004015F0j
					; ___:00401FAAj
		push	esi
		mov	esi, ecx
		call	sub_401B8B
		test	byte ptr [esp+8], 1
		jz	short loc_42B848
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		add	esp, 4


loc_42B848:				; CODE XREF: ___:0042B83Dj
		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: thunk


sub_42B860	proc near		; CODE XREF: sub_401B8Bj
		jmp	sub_40179E
sub_42B860	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42B880:				; CODE XREF: ___:004019E2j
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_43BC6B
		push	eax
		mov	large fs:0, esp
		sub	esp, 28h
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+3Fh]
		lea	ebx, [esi+43h]
		push	eax
		mov	ecx, ebx
		lea	edi, [esi+11h]
		lea	ebp, [esi+26h]
		call	sub_4017E4
		mov	ecx, [esi+3Bh]
		push	eax
		push	ecx
		mov	ecx, edi
		call	sub_4017E4
		push	eax
		push	offset dword_445378
		mov	ecx, ebp
		call	sub_4014D3
		mov	dl, [esi+98h]
		push	eax
		mov	al, [esi+97h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 24h
		push	6
		push	1
		push	2
		nop
		call	near ptr 71AB3B91h
		cmp	eax, 0FFFFFFFFh
		mov	[esi+9Dh], eax
		jz	loc_42BAB8
		mov	dx, [esi+3Bh]
		xor	ecx, ecx
		mov	[esp+18h], ecx
		push	edx
		mov	[esp+20h], ecx
		mov	word ptr [esp+1Ch], 2
		mov	[esp+24h], ecx
		mov	[esp+28h], ecx
		call	near ptr 71AB2B66h
		nop
		mov	ecx, [esi+9Dh]
		mov	[esp+1Ah], ax
		lea	eax, [esp+18h]
		push	10h
		push	eax
		push	ecx
		mov	dword ptr [esp+1Ch], 10h
		call	near ptr 71AB3E00h
		nop
		test	eax, eax
		jz	short loc_42B96B
		mov	edx, [esi+9Dh]
		push	edx
		nop
		call	near ptr 71AB9639h
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	ecx, [esp+28h]
		mov	large fs:0, ecx
		add	esp, 34h
		retn
; ---------------------------------------------------------------------------


loc_42B96B:				; CODE XREF: ___:0042B949j
		mov	eax, [esi+99h]
		mov	cl, [eax+11Ch]
		test	cl, cl
		jz	loc_42BA64


loc_42B97F:				; CODE XREF: ___:0042BA5Ej
		mov	ecx, [esi+9Dh]
		push	0Ah
		push	ecx
		nop
		call	near ptr 71AB88D3h
		cmp	eax, 0FFFFFFFFh
		jz	loc_42BA45
		mov	ecx, [esi+9Dh]
		lea	edx, [esp+10h]
		lea	eax, [esp+28h]
		push	edx
		push	eax
		push	ecx
		nop
		call	near ptr 71AC1028h
		mov	ebp, eax
		cmp	ebp, 0FFFFFFFFh
		jz	loc_42BA45
		xor	edi, edi
		cmp	ebp, edi
		jz	loc_42BA45
		push	0A9h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+14h], eax
		cmp	eax, edi
		mov	[esp+40h], edi
		jz	short loc_42B9E5
		mov	ecx, eax
		call	sub_401663
		mov	edi, eax


loc_42B9E5:				; CODE XREF: ___:0042B9DAj
		mov	edx, [esi+99h]
		mov	[edi+9Dh], esi
		mov	[edi+99h], edx
		mov	eax, [esi+3Bh]
		mov	[edi+3Bh], eax
		mov	ecx, [esi+3Fh]
		mov	[edi+3Fh], ecx
		push	ebx
		lea	ecx, [edi+43h]
		mov	dword ptr [esp+44h], 0FFFFFFFFh
		call	sub_401FBE
		lea	eax, [esi+26h]
		lea	ecx, [edi+26h]
		push	eax
		mov	[edi+0A1h], ebp
		call	sub_401FBE
		mov	dl, [esi+97h]
		mov	ecx, edi
		mov	[edi+97h], dl
		mov	al, [esi+98h]
		mov	[edi+98h], al
		call	sub_4013D4


loc_42BA45:				; CODE XREF: ___:0042B991j
					; ___:0042B9B3j ...
		push	0FAh
		call	near ptr 2821E84h
		nop
		mov	ecx, [esi+99h]
		mov	al, [ecx+11Ch]
		test	al, al
		jnz	loc_42B97F


loc_42BA64:				; CODE XREF: ___:0042B979j
		mov	eax, [esi+9Dh]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42BA76
		push	eax
		nop
		call	near ptr 71AB9639h


loc_42BA76:				; CODE XREF: ___:0042BA6Dj
		mov	edx, [esi+3Fh]
		mov	ecx, ebx
		push	edx
		call	sub_4017E4
		push	eax
		mov	eax, [esi+3Bh]
		push	eax
		lea	ecx, [esi+11h]
		call	sub_4017E4
		push	eax
		push	offset dword_445338
		lea	ecx, [esi+26h]
		call	sub_4014D3
		mov	cl, [esi+98h]
		mov	dl, [esi+97h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 24h


loc_42BAB8:				; CODE XREF: ___:0042B8FCj
		mov	ecx, [esp+38h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 34h
		retn
; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 0A0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_42BB70	proc near		; CODE XREF: sub_4021DFj

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_42BB70
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	edi
		push	0
		push	10h
		push	3
		push	14h
		push	4Fh
		push	14h
		push	3
		push	5
		push	12h
		push	9
		push	4
		mov	esi, ecx
		push	5
		lea	eax, [esp+74h+var_3C]
		push	12h
		push	eax
		mov	dword ptr [esi+118h], 0
		call	sub_4019B5
		add	esp, 38h
		push	esi
		mov	ecx, eax
		mov	[esp+48h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_42BB70	endp

; ---------------------------------------------------------------------------
		or	edi, 0FFFFFFFFh
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	5
		push	12h
		push	7
		push	4Fh
		push	14h
		push	3
		push	5
		push	12h
		push	9
		push	4
		push	5
		lea	edx, [esp+38h]
		push	12h
		push	edx
		call	sub_4019B5
		add	esp, 38h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 1
		call	sub_4017E4
		push	eax
		lea	eax, [esi+32h]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	10h
		push	14h
		push	14h
		push	8
		push	4Fh
		push	14h
		push	3
		push	5
		push	12h
		push	9
		push	4
		push	5
		lea	ecx, [esp+3Ch]
		push	12h
		push	ecx
		call	sub_4019B5
		add	esp, 3Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 2
		call	sub_4017E4
		lea	edx, [esi+60h]
		push	eax
		push	edx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	13h
		push	0Bh
		push	3
		push	0Fh
		push	13h
		push	4Fh
		push	14h
		push	3
		push	5
		push	12h
		push	9
		push	4
		push	5
		lea	eax, [esp+40h]
		push	12h
		push	eax
		call	sub_4019B5
		add	esp, 40h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 3
		call	sub_4017E4
		lea	ecx, [esi+8Eh]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	49h
		push	13h
		push	0Bh
		push	3
		push	0Fh
		push	13h
		push	4Fh
		push	14h
		push	3
		push	5
		push	12h
		push	9
		push	4
		push	5
		lea	edx, [esp+44h]
		push	12h
		push	edx
		call	sub_4019B5
		add	esp, 44h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 4
		call	sub_4017E4
		push	eax
		lea	eax, [esi+0BCh]
		push	eax
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+8]
		mov	[esp+40h], edi
		call	sub_401226
		push	0
		push	10h
		push	0Fh
		push	14h
		push	13h
		push	4Fh
		push	14h
		push	3
		push	5
		push	12h
		push	9
		push	4
		push	5
		lea	ecx, [esp+54h]
		push	12h
		push	ecx
		call	sub_4019B5
		add	esp, 3Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+44h], 5
		call	sub_4017E4
		add	esi, 0EAh
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+20h]
		mov	[esp+40h], edi
		call	sub_401226
		mov	ecx, [esp+38h]
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 0A0h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_42BE60:				; CODE XREF: ___:0040202Cj
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_43BD84
		push	eax
		mov	large fs:0, esp
		sub	esp, 68h
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+84h]
		mov	ebp, ecx
		push	edi
		lea	edi, [esi+7Eh]
		lea	ecx, [ebp+4]
		call	sub_4017E4
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		or	ebx, 0FFFFFFFFh
		test	eax, eax
		jnz	loc_42BFC7
		push	0A1h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		db 83h,	0C4h, 4
		dd 88248489h, 33000000h, 89C73BFFh, 8024BCh, 9740000h
		dd 93E8C88Bh, 8BFFFD57h, 360068F8h, 448D0044h, 16A4C24h
		dd 11C85C6h, 50010000h,	9C89CE8Bh, 8C24h, 99AF8900h, 0E8000000h
		dd 0FFFD57BAh, 84C7C88Bh, 8024h, 100h, 58DEE800h, 9050FFFDh
		dd 7F000BE8h, 4C48377h,	48244C8Dh, 893B4789h, 80249Ch
		dd 3E80000h, 68FFFD53h,	443600h, 4C244C8Dh, 8B51026Ah
		dd 5778E8CEh, 8D50FFFDh, 84C7434Fh, 8424h, 200h, 6074E800h
		dd 4C8DFFFDh, 9C894824h, 8024h,	52CCE800h, 68FFFDh, 8D004436h
		dd 6A4C2454h, 0CE8B5203h, 0FD5741E8h, 0C7C88BFFh, 802484h
		dd 30000h, 65E80000h, 50FFFD58h, 0FF92E890h, 0C483777Eh
		dd 244C8D04h, 3F478948h, 80249C89h, 0E8000000h,	0FFFD528Ah
		dd 8D69468Dh, 0E850264Fh, 0FFFD6016h, 938E8Ah, 8F880000h
		dd 97h,	94968Ah, 0CF8B0000h, 989788h, 0DE80000h
		db 54h,	0FDh, 0FFh
; ---------------------------------------------------------------------------


loc_42BFC7:				; CODE XREF: ___:0042BE9Dj
		lea	ecx, [ebp+32h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_42C0F7
		push	9Dh
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+88h], eax
		test	eax, eax
		mov	dword ptr [esp+80h], 4
		jz	short loc_42C00E
		mov	ecx, eax
		call	sub_401889
		mov	edi, eax
		jmp	short loc_42C010
; ---------------------------------------------------------------------------


loc_42C00E:				; CODE XREF: ___:0042C001j
		xor	edi, edi


loc_42C010:				; CODE XREF: ___:0042C00Cj
		push	offset dword_443600
		lea	eax, [esp+4Ch]
		push	1
		mov	byte ptr [ebp+11Ch], 1
		push	eax
		mov	ecx, esi
		mov	[esp+8Ch], ebx
		mov	[edi+99h], ebp
		call	sub_4016AE
		push	eax
		lea	ecx, [edi+58h]
		mov	dword ptr [esp+84h], 5
		call	sub_401FBE
		lea	ecx, [esp+48h]
		mov	[esp+80h], ebx
		call	sub_401226
		push	offset dword_443600
		lea	ecx, [esp+4Ch]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		push	eax
		lea	ecx, [edi+6Dh]
		mov	dword ptr [esp+84h], 6
		call	sub_401FBE
		lea	ecx, [esp+48h]
		mov	[esp+80h], ebx
		call	sub_401226
		push	offset dword_443600
		lea	edx, [esp+4Ch]
		push	3
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		push	eax
		lea	ecx, [edi+82h]
		mov	dword ptr [esp+84h], 7
		call	sub_401FBE
		lea	ecx, [esp+48h]
		mov	[esp+80h], ebx
		call	sub_401226
		lea	eax, [esi+69h]
		lea	ecx, [edi+26h]
		push	eax
		call	sub_401FBE
		mov	cl, [esi+93h]
		mov	[edi+97h], cl
		mov	dl, [esi+94h]
		mov	ecx, edi
		mov	[edi+98h], dl
		call	sub_4013D4


loc_42C0F7:				; CODE XREF: ___:0042BFDAj
		lea	ecx, [ebp+60h]
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_42C220
		push	0A2h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+88h], eax
		test	eax, eax
		mov	dword ptr [esp+80h], 8
		jz	short loc_42C13E
		mov	ecx, eax
		call	sub_4018DE
		mov	edi, eax
		jmp	short loc_42C140
; ---------------------------------------------------------------------------


loc_42C13E:				; CODE XREF: ___:0042C131j
		xor	edi, edi


loc_42C140:				; CODE XREF: ___:0042C13Cj
		push	offset dword_443600
		lea	eax, [esp+4Ch]
		push	1
		mov	byte ptr [ebp+11Ch], 1
		push	eax
		mov	ecx, esi
		mov	[esp+8Ch], ebx
		mov	[edi+99h], ebp
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+80h], 9
		call	sub_4017E4
		push	eax
		call	near ptr 77C1BF18h
		nop
		add	esp, 4
		lea	ecx, [esp+48h]
		mov	[edi+3Bh], eax
		mov	[esp+80h], ebx
		call	sub_401226
		push	offset dword_443600
		lea	ecx, [esp+4Ch]
		push	2
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		push	offset dword_443944
		mov	ecx, eax
		mov	dword ptr [esp+84h], 0Ah
		call	sub_401500
		test	eax, eax
		lea	ecx, [esp+48h]
		mov	[esp+80h], ebx
		setz	byte ptr [esp+88h]
		call	sub_401226
		mov	al, [esp+88h]
		test	al, al
		jz	short loc_42C1EE
		mov	byte ptr [edi+9Dh], 1
		jmp	short loc_42C1F5
; ---------------------------------------------------------------------------


loc_42C1EE:				; CODE XREF: ___:0042C1E3j
		mov	byte ptr [edi+9Dh], 0


loc_42C1F5:				; CODE XREF: ___:0042C1ECj
		lea	edx, [esi+69h]
		lea	ecx, [edi+26h]
		push	edx
		call	sub_401FBE
		mov	al, [esi+93h]
		mov	[edi+97h], al
		mov	cl, [esi+94h]
		mov	[edi+98h], cl
		mov	ecx, edi
		call	sub_4013D4


loc_42C220:				; CODE XREF: ___:0042C10Aj
		lea	ecx, [ebp+8Eh]
		call	sub_4017E4
		push	eax
		lea	ecx, [esi+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_42C2ED
		push	0A1h
		call	sub_4367FA
; ---------------------------------------------------------------------------
		add	esp, 4
		mov	[esp+88h], eax
		test	eax, eax
		mov	dword ptr [esp+80h], 0Bh
		jz	short loc_42C26A
		mov	ecx, eax
		call	sub_40216C
		mov	edi, eax
		jmp	short loc_42C26C
; ---------------------------------------------------------------------------


loc_42C26A:				; CODE XREF: ___:0042C25Dj
		xor	edi, edi


loc_42C26C:				; CODE XREF: ___:0042C268j
		push	offset dword_443600
		lea	edx, [esp+4Ch]
		push	1
		mov	byte ptr [ebp+11Ch], 1
		push	edx
		mov	ecx, esi
		mov	[esp+8Ch], ebx
		mov	[edi+99h], ebp
		call	sub_4016AE
		mov	ecx, eax
		mov	dword ptr [esp+80h], 0Ch
		call	sub_4017E4
		push	eax
		call	near ptr 77C1BF18h
		nop
		add	esp, 4
		lea	ecx, [esp+48h]
		mov	[edi+3Bh], eax
		mov	[esp+80h], ebx
		call	sub_401226
		lea	eax, [esi+69h]
		lea	ecx, [edi+26h]
		push	eax
		call	sub_401FBE
		mov	cl, [esi+93h]
		mov	[edi+97h], cl
		mov	dl, [esi+94h]
		mov	ecx, edi
		mov	[edi+98h], dl
		call	sub_4013D4


loc_42C2ED:				; CODE XREF: ___:0042C236j
		lea	ecx, [ebp+0BCh]
		call	sub_4014D3
		lea	edi, [esi+7Eh]
		push	eax
		mov	ecx, edi
		mov	[esp+8Ch], edi
		call	sub_4012EE
		test	eax, eax
		jnz	loc_42C519
		lea	ecx, [esp+30h]
		call	sub_401424
		lea	ecx, [esp+18h]
		mov	dword ptr [esp+80h], 0Dh
		call	sub_401424
		push	offset dword_443600
		lea	eax, [esp+4Ch]
		push	2
		push	eax
		mov	ecx, esi
		mov	byte ptr [esp+8Ch], 0Eh
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+80h], 0Fh
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+34h]
		call	sub_401A87
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+80h], 0Eh
		call	sub_401226
		push	offset dword_443600
		lea	ecx, [esp+4Ch]
		push	3
		push	ecx
		mov	ecx, esi
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+80h], 10h
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+1Ch]
		call	sub_401A87
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+80h], 0Eh
		call	sub_401226
		lea	ecx, [esp+30h]
		call	sub_4014D3
		cmp	eax, offset byte_446F60
		jnz	short loc_42C3CF
		push	offset dword_4453F0
		lea	ecx, [esp+1Ch]
		call	sub_401A87


loc_42C3CF:				; CODE XREF: ___:0042C3BFj
		lea	ecx, [esp+18h]
		call	sub_4014D3
		cmp	eax, offset byte_446F60
		jnz	short loc_42C3ED
		push	offset byte_446F60
		lea	ecx, [esp+1Ch]
		call	sub_401A87


loc_42C3ED:				; CODE XREF: ___:0042C3DDj
		push	offset dword_443600
		lea	edx, [esp+4Ch]
		push	1
		push	edx
		mov	ecx, esi
		call	sub_4016AE
		mov	edi, eax
		lea	ecx, [esp+18h]
		mov	byte ptr [esp+80h], 11h
		call	sub_4017E4
		push	eax
		lea	ecx, [esp+34h]
		call	sub_4017E4
		push	eax
		mov	ecx, edi
		call	sub_4017E4
		mov	edi, dword_50FB08
		push	eax
		call	edi
		add	esp, 4
		lea	ecx, [esi+69h]
		push	eax
		push	offset dword_4453AC
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 20h
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+80h], 0Eh
		call	sub_401226
		lea	ecx, [esp+18h]
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+28h], esp
		push	eax
		call	sub_401861
		lea	ecx, [esp+48h]
		mov	byte ptr [esp+98h], 12h
		call	sub_4017E4
		sub	esp, 18h
		mov	ecx, esp
		mov	[esp+44h], esp
		push	eax
		call	sub_401861
		push	offset dword_443600
		lea	edx, [esp+94h]
		push	1
		push	edx
		mov	ecx, esi
		mov	byte ptr [esp+0BCh], 13h
		call	sub_4016AE
		mov	ecx, eax
		mov	byte ptr [esp+0B0h], 15h
		call	sub_4017E4
		push	eax
		call	edi
		add	esp, 4
		push	eax
		call	sub_401C17
		add	esp, 34h
		lea	ecx, [esp+60h]
		mov	byte ptr [esp+80h], 0Eh
		call	sub_401226
		lea	ecx, [esp+18h]
		mov	byte ptr [esp+80h], 0Dh
		call	sub_401226
		lea	ecx, [esp+30h]
		mov	[esp+80h], ebx
		call	sub_401226
		mov	edi, [esp+88h]


loc_42C519:				; CODE XREF: ___:0042C30Cj
		lea	ecx, [ebp+0EAh]
		call	sub_4017E4
		push	eax
		mov	ecx, edi
		call	sub_4012EE
		test	eax, eax
		jnz	short loc_42C536
		mov	[ebp+11Ch], al


loc_42C536:				; CODE XREF: ___:0042C52Ej
		mov	ecx, [esp+78h]
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		mov	large fs:0, ecx
		pop	ebx
		add	esp, 74h
		retn	4
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 1C0h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_42C710:				; CODE XREF: ___:004021A8j
		push	ecx
		mov	edx, dword_447A7D
		push	esi
		mov	esi, ecx
		mov	eax, [esi+99h]
		mov	ecx, [eax+118h]
		cmp	edx, ecx
		jl	short loc_42C731
		inc	ecx
		mov	[eax+118h], ecx


loc_42C731:				; CODE XREF: ___:0042C728j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+8]
		mov	eax, [esi+99h]
		mov	[esp+4], esi
		mov	ecx, [eax+118h]
		dec	ecx
		mov	[eax+118h], ecx
		lea	ecx, [esp+4]
		push	ecx
		mov	ecx, offset byte_4E6ECB
		call	sub_40120D
; ---------------------------------------------------------------------------
		xor	eax, eax
		pop	esi
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_42C790	proc near		; CODE XREF: sub_401E06j

var_190		= byte ptr -190h

		sub	esp, 190h
		lea	eax, [esp+190h+var_190]
		push	eax
		push	101h
		call	sub_436F4E
sub_42C790	endp

; ---------------------------------------------------------------------------
		db 85h,	0C0h, 74h
		dd 840D8B19h, 500050FAh, 6840C183h, 445404h, 54E89051h
		dd 83778146h, 0C4810CC4h, 190h,	909090C3h, 90909090h, 4	dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------


loc_42C7E0:				; CODE XREF: ___:00401D7Aj
		mov	eax, [esp+4]
		test	eax, eax
		jz	short loc_42C7F3
		mov	ecx, [eax+18h]
		test	ecx, ecx
		jnz	short loc_42C7F3
		add	eax, 44h
		retn
; ---------------------------------------------------------------------------


loc_42C7F3:				; CODE XREF: ___:0042C7E6j
					; ___:0042C7EDj
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_42C810	proc near		; CODE XREF: sub_401A69j

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_12		= word ptr  16h

		sub	esp, 14h
		mov	ecx, [esp+14h+arg_0]
		xor	eax, eax
		mov	[esp+14h+var_10], eax
		push	ebx
		push	ebp
		mov	[esp+1Ch+var_C], eax
		push	esi
		push	edi
		mov	[esp+24h+var_8], eax
		push	ecx
		mov	[esp+28h+var_14], 1
		mov	[esp+28h+var_4], eax
		mov	word ptr [esp+28h+var_10], 2
		call	near ptr 77C46125h
		nop
		mov	ebp, eax
		push	3Ah
		push	ebp
		nop
		call	near ptr 77C47660h
		mov	esi, eax
		xor	ebx, ebx
		add	esp, 0Ch
		cmp	esi, ebx
		jnz	short loc_42C884
		push	offset dword_445468
		push	offset dword_444404
		call	sub_436F96
; ---------------------------------------------------------------------------
		dd 6C75C33Bh, 44545868h, 7BE89000h, 837780A5h, 0C03304C4h
		dd 5B5D5E5Fh, 0C314C483h
; ---------------------------------------------------------------------------


loc_42C884:				; CODE XREF: sub_42C810+47j
		mov	[esi], bl
		mov	eax, dword_50FB14
		inc	esi
		cmp	dword ptr [eax], 1
		jle	short loc_42C8A2
		movsx	ecx, byte ptr [esi]
		push	4
		push	ecx
		call	near ptr 77C1C561h
		nop
		add	esp, 8
		jmp	short loc_42C8B2
; ---------------------------------------------------------------------------


loc_42C8A2:				; CODE XREF: sub_42C810+7Fj
		mov	eax, dword_50FA78
		movsx	edx, byte ptr [esi]
		mov	ecx, [eax]
		mov	al, [ecx+edx*2]
		and	eax, 4


loc_42C8B2:				; CODE XREF: sub_42C810+90j
		cmp	eax, ebx
		jz	short loc_42C8CD
		push	esi
		nop
		call	near ptr 77C1BF18h
		add	esp, 4
		push	eax
		call	sub_436F36
; ---------------------------------------------------------------------------
		mov	[esp+arg_12], ax
		jmp	short sub_42C8E1
; ---------------------------------------------------------------------------


loc_42C8CD:				; CODE XREF: sub_42C810+A4j
		push	offset dword_445468
		push	esi
		call	sub_436F96
sub_42C810	endp

; ---------------------------------------------------------------------------
		mov	dx, [eax+8]
		mov	[esp+16h], dx

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_42C8E1	proc near		; CODE XREF: sub_42C810+BBj
		push	ebp
		call	sub_436EF4
sub_42C8E1	endp

; ---------------------------------------------------------------------------
		cmp	eax, 0FFFFFFFFh
		mov	[esp+18h], eax
		jnz	short loc_42C92D
		push	ebp
		call	sub_436EE8
; ---------------------------------------------------------------------------
		dw 0C33Bh
		dd 48681875h, 0E8004454h, 7780A4EEh, 4C48390h, 5E5FC033h
		dd 0C4835B5Dh, 0BF0FC314h, 408B0A48h, 8DD18B0Ch, 8B18247Ch
		dd 2E9C130h, 0CA8BA5F3h, 0F303E183h
; ---------------------------------------------------------------------------
		movsb


loc_42C92D:				; CODE XREF: ___:0042C8EEj
		push	ebp
		mov	ebp, dword_50FAC4
		call	ebp
		add	esp, 4
		push	6
		push	1
		push	2
		call	sub_436F3C
; ---------------------------------------------------------------------------
		dd 0FF83F88Bh, 681875FFh, 445440h, 80A49DE8h, 0C4839077h
		dd 5FC03304h, 835B5D5Eh, 8DC314C4h, 6A102444h, 46A5004h
		dd 0FFFF68h, 0DE85700h,	830000A6h, 775FFF8h, 44543068h
		dd 8D34EB00h, 6A14244Ch, 0E8575110h, 0A5B2h, 75FFF883h
		dd 52306807h, 1BEB0044h, 14468h, 90016A00h, 7FF71AE8h
		dd 83F08B77h, 0F33B08C4h, 28681E75h, 90004454h,	80A435E8h
		dd 4C48377h, 0A540E857h, 5E5F0000h, 5BC0335Dh, 0C314C483h
		dd 200068h, 2CE89000h, 83777FFAh, 0C33B04C4h, 75144689h
		dd 54286824h, 3E80044h,	907780A4h, 5704C483h, 0A50DE8h
		dd 0D5FF5600h, 3304C483h, 5D5E5FC0h, 14C4835Bh,	326A56C3h
		dd 89087E89h, 5E89185Eh, 2446C71Ch, 1, 89305E89h, 5E892C5Eh
		dd 345E8928h, 89385E89h, 5E89405Eh, 0DAE83Ch, 0C4830000h
		dd 75C08508h, 0C3E8571Ch, 8B0000A4h, 0FF521456h, 0D5FF56D5h
		dd 3308C483h, 5D5E5FC0h, 14C4835Bh, 24448BC3h, 30895F2Ch
		dd 1B85D5Eh, 5B000000h,	0C314C483h, 90909090h, 28h dup(0CCCCCCCCh)

; =============== S U B	R O U T	I N E =======================================



sub_42CB10	proc near		; CODE XREF: ___:0042D266p
					; sub_42DFD0+70p

var_8		= byte ptr -8
var_5		= byte ptr -5
var_4		= byte ptr -4
arg_0		= byte ptr  4
arg_4		= dword	ptr  8

		sub	esp, 8
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+18h+arg_4]
		push	edi
		push	100h
		lea	esi, [edi+44h]
		push	esi
		call	sub_42CC50
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_42CB4A


loc_42CB32:				; CODE XREF: sub_42CB10+8Ej
					; sub_42CB10+D9j
		push	offset dword_44546C
		nop
		call	near ptr 77C36DF2h
		add	esp, 4
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_42CB4A:				; CODE XREF: sub_42CB10+20j
		mov	eax, dword_50E3CC
		mov	ebx, dword_50FA80
		cmp	eax, 1
		jle	short loc_42CB6E
		mov	eax, dword_50FA84
		push	esi
		add	eax, 40h
		push	offset dword_4435F0
		push	eax
		call	ebx
		add	esp, 0Ch


loc_42CB6E:				; CODE XREF: sub_42CB10+48j
		cmp	byte ptr [edi+47h], 2Dh
		jnz	short loc_42CBEE
		push	3
		lea	ecx, [esp+1Ch+var_8]
		push	esi
		push	ecx
		nop
		call	near ptr 77C47A90h
		push	edi
		push	100h
		push	esi
		mov	[esp+30h+var_5], 20h
		mov	[esp+30h+var_4], 0
		call	sub_42CC50
		add	esp, 18h
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42CB32
		mov	ebp, dword_50FAD4


loc_42CBA6:				; CODE XREF: sub_42CB10+D7j
		cmp	dword_50E3CC, 1
		jle	short loc_42CBC4
		mov	edx, dword_50FA84
		push	esi
		add	edx, 40h
		push	offset dword_4435F0
		push	edx
		call	ebx
		add	esp, 0Ch


loc_42CBC4:				; CODE XREF: sub_42CB10+9Dj
		lea	eax, [esp+18h+var_8]
		push	4
		push	eax
		push	esi
		call	ebp
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_42CBEE
		push	edi
		push	100h
		push	esi
		call	sub_42CC50
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_42CBA6
		jmp	loc_42CB32
; ---------------------------------------------------------------------------


loc_42CBEE:				; CODE XREF: sub_42CB10+62j
					; sub_42CB10+C3j
		mov	cl, [esi]
		mov	dl, [esp+18h+arg_0]
		xor	eax, eax
		pop	edi
		cmp	cl, dl
		pop	esi
		pop	ebp
		pop	ebx
		setz	al
		add	esp, 8
		retn
sub_42CB10	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42CC50	proc near		; CODE XREF: sub_42CB10+15p
					; sub_42CB10+83p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		sub	esp, 8
		push	ebx
		push	ebp
		mov	ebp, [esp+10h+arg_0]
		push	esi
		mov	esi, [esp+14h+arg_8]
		xor	ecx, ecx
		push	edi
		mov	[esp+18h+var_8], ecx
		mov	eax, [esi+18h]
		mov	[esp+18h+var_4], ecx
		cmp	eax, ecx
		jz	short loc_42CC80
		cmp	eax, 1
		jz	short loc_42CC80
		pop	edi
		pop	esi
		pop	ebp
		or	eax, 0FFFFFFFFh
		pop	ebx
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_42CC80:				; CODE XREF: sub_42CC50+1Ej
					; sub_42CC50+23j
		mov	ebx, [esp+18h+arg_4]
		cmp	ebx, ecx
		jnz	short loc_42CC92
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_42CC92:				; CODE XREF: sub_42CC50+36j
					; sub_42CC50+115j
		mov	edi, [esi+0Ch]
		test	edi, edi
		jle	short loc_42CCE3
		cmp	ebx, edi
		jge	short loc_42CCA0
		lea	edi, [ebx-1]


loc_42CCA0:				; CODE XREF: sub_42CC50+4Bj
		mov	eax, [esi+4]
		push	edi
		push	0Ah
		push	eax
		push	ebp
		nop
		call	near ptr 77C46170h
		add	esp, 10h
		test	eax, eax
		jz	short loc_42CCB9
		mov	edi, eax
		sub	edi, ebp


loc_42CCB9:				; CODE XREF: sub_42CC50+63j
		mov	edx, [esp+18h+var_8]
		add	ebp, edi
		add	edx, edi
		sub	ebx, edi
		mov	[esp+18h+var_8], edx
		mov	byte ptr [ebp+0], 0
		mov	ecx, [esi+4]
		mov	edx, [esi+0Ch]
		add	ecx, edi
		sub	edx, edi
		test	eax, eax
		mov	[esi+4], ecx
		mov	[esi+0Ch], edx
		jnz	loc_42CD6A


loc_42CCE3:				; CODE XREF: sub_42CC50+47j
		cmp	ebx, 1
		jz	loc_42CDBD
		mov	ecx, [esi]
		mov	eax, [esi+4]
		cmp	ecx, eax
		jnz	short loc_42CD0B
		mov	eax, [esi+14h]
		mov	dword ptr [esi+0Ch], 0
		mov	[esi+4], eax
		mov	[esi], eax
		mov	dword ptr [esi+10h], 2000h


loc_42CD0B:				; CODE XREF: sub_42CC50+A3j
		mov	eax, [esp+18h+var_4]
		test	eax, eax
		jnz	loc_42CDD0
		push	esi
		call	sub_42CE80
		add	esp, 4
		test	eax, eax
		jz	loc_42CE02
		mov	edx, [esi+10h]
		mov	eax, [esi]
		mov	ecx, [esi+8]
		push	0
		push	edx
		push	eax
		push	ecx
		call	sub_436EFA
; ---------------------------------------------------------------------------
		cmp	eax, 0FFFFFFFFh
		jz	loc_42CDEC
		test	eax, eax
		jnz	short loc_42CD4F
		mov	[esp+18h+var_4], 1


loc_42CD4F:				; CODE XREF: sub_42CC50+F5j
		mov	edi, [esi+10h]
		mov	edx, [esi+0Ch]
		mov	ecx, [esi]
		sub	edi, eax
		add	edx, eax
		add	ecx, eax
		mov	[esi+10h], edi
		mov	[esi+0Ch], edx
		mov	[esi], ecx
		jmp	loc_42CC92
; ---------------------------------------------------------------------------


loc_42CD6A:				; CODE XREF: sub_42CC50+8Dj
		sub	ebp, 2
		mov	esi, offset dword_445220
		mov	eax, ebp


loc_42CD74:				; CODE XREF: sub_42CC50+146j
		mov	dl, [eax]
		mov	bl, [esi]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_42CD9C
		test	cl, cl
		jz	short loc_42CD98
		mov	dl, [eax+1]
		mov	bl, [esi+1]
		mov	cl, dl
		cmp	dl, bl
		jnz	short loc_42CD9C
		add	eax, 2
		add	esi, 2
		test	cl, cl
		jnz	short loc_42CD74


loc_42CD98:				; CODE XREF: sub_42CC50+130j
		xor	eax, eax
		jmp	short loc_42CDA1
; ---------------------------------------------------------------------------


loc_42CD9C:				; CODE XREF: sub_42CC50+12Cj
					; sub_42CC50+13Cj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_42CDA1:				; CODE XREF: sub_42CC50+14Aj
		test	eax, eax
		jnz	short loc_42CE02
		mov	byte ptr [ebp+0], 0Ah
		mov	[ebp+1], al
		mov	eax, [esp+18h+var_8]
		pop	edi
		dec	eax
		pop	esi
		pop	ebp
		mov	[esp+0Ch+var_8], eax
		pop	ebx
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_42CDBD:				; CODE XREF: sub_42CC50+96j
		mov	eax, [esp+18h+arg_0]
		pop	edi
		pop	esi
		pop	ebp
		mov	byte ptr [eax],	0
		mov	eax, [esp+0Ch+var_8]
		pop	ebx
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_42CDD0:				; CODE XREF: sub_42CC50+C1j
		mov	eax, [esp+18h+var_8]
		test	eax, eax
		jnz	short loc_42CE02
		pop	edi
		mov	[esp+14h+var_8], 0FFFFFFFFh
		mov	eax, [esp+14h+var_8]
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_42CDEC:				; CODE XREF: sub_42CC50+EDj
		push	offset dword_44548C
		nop
		call	near ptr 77C36DF2h
		add	esp, 4
		mov	[esp+18h+var_8], 0FFFFFFFFh


loc_42CE02:				; CODE XREF: sub_42CC50+D2j
					; sub_42CC50+153j ...
		mov	eax, [esp+18h+var_8]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 8
		retn
sub_42CC50	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 70h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42CE80	proc near		; CODE XREF: sub_42CC50+C8p
					; sub_42DC70:loc_42DC9Dp ...

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

		sub	esp, 10Ch
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+118h+arg_0]
		xor	ebx, ebx
		xor	ebp, ebp
		mov	eax, [esi+18h]
		test	eax, eax
		jz	loc_42CF63
		mov	ecx, [esi+30h]
		test	ecx, ecx
		jz	loc_42CF63
		cmp	eax, 2
		jnz	short loc_42CEB5
		lea	ebp, [esp+118h+var_104]
		jmp	short loc_42CEB9
; ---------------------------------------------------------------------------


loc_42CEB5:				; CODE XREF: sub_42CE80+2Dj
		lea	ebx, [esp+118h+var_104]


loc_42CEB9:				; CODE XREF: sub_42CE80+33j
		xor	eax, eax
		push	edi
		mov	[esp+11Ch+var_104], eax


loc_42CEC0:				; CODE XREF: sub_42CE80+98j
		cmp	eax, 40h
		jnb	short loc_42CED5
		mov	ecx, [esi+8]
		mov	[esp+eax*4+11Ch+var_100], ecx
		mov	eax, [esp+11Ch+var_104]
		inc	eax
		mov	[esp+11Ch+var_104], eax


loc_42CED5:				; CODE XREF: sub_42CE80+43j
		mov	edx, [esi+28h]
		mov	eax, [esi+2Ch]
		lea	ecx, [esp+11Ch+var_10C]
		mov	[esp+11Ch+var_10C], edx
		mov	edx, [esi+8]
		push	ecx
		push	0
		push	ebp
		inc	edx
		push	ebx
		push	edx
		mov	[esp+130h+var_108], eax
		call	sub_436F12
; ---------------------------------------------------------------------------
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42CF1A
		test	eax, eax
		jg	short loc_42CF51
		mov	eax, [esi+34h]
		mov	ecx, [esi+38h]
		push	eax
		push	ecx
		push	esi
		call	dword ptr [esi+30h]
		mov	edi, eax
		add	esp, 0Ch
		test	edi, edi
		jz	short loc_42CF56
		mov	eax, [esp+11Ch+var_104]
		jmp	short loc_42CEC0
; ---------------------------------------------------------------------------


loc_42CF1A:				; CODE XREF: sub_42CE80+79j
		push	100h
		xor	edi, edi
		nop
		call	near ptr 77C1F2BCh
		mov	edx, [eax]
		push	edx
		call	near ptr 77C371FAh
		nop
		add	esp, 4
		push	eax
		mov	eax, [esi+1Ch]
		add	eax, 44h
		push	eax
		call	near ptr 77C47A90h
		nop
		add	esp, 0Ch
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_42CF51:				; CODE XREF: sub_42CE80+7Dj
		mov	edi, 1


loc_42CF56:				; CODE XREF: sub_42CE80+92j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 10Ch
		retn
; ---------------------------------------------------------------------------


loc_42CF63:				; CODE XREF: sub_42CE80+19j
					; sub_42CE80+24j
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 10Ch
		retn
sub_42CE80	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42CFC0:				; CODE XREF: ___:00401410j
		mov	eax, [esp+4]
		xor	ecx, ecx
		dec	eax
		cmp	eax, 4		; switch 5 cases
		ja	loc_42D06F	; default
		jmp	off_42D074[eax*4] ; switch jump


loc_42CFD7:				; DATA XREF: ___:off_42D074o
		mov	eax, [esp+8]	; jumptable 0042CFD0 case 0
		cmp	eax, 1
		jz	short loc_42CFE9
		cmp	eax, 2
		jnz	loc_42D06F	; default


loc_42CFE9:				; CODE XREF: ___:0042CFDEj
		mov	ecx, [esp+0Ch]
		mov	[ecx+24h], eax
		mov	ecx, 1
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_42CFF8:				; CODE XREF: ___:0042CFD0j
					; DATA XREF: ___:off_42D074o
		mov	edx, [esp+0Ch]	; jumptable 0042CFD0 case 1
		mov	eax, [esp+8]
		mov	ecx, 1
		mov	[edx+30h], eax
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_42D00B:				; CODE XREF: ___:0042CFD0j
					; DATA XREF: ___:off_42D074o
		push	esi		; jumptable 0042CFD0 case 2
		mov	esi, [esp+0Ch]
		mov	eax, 10624DD3h
		push	edi
		imul	esi
		mov	edi, [esp+14h]
		mov	ecx, 1
		sar	edx, 6
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		mov	eax, esi
		mov	[edi+28h], edx
		mov	esi, 3E8h
		cdq
		idiv	esi
		lea	eax, [edx+edx*4]
		lea	eax, [eax+eax*4]
		lea	edx, [eax+eax*4]
		mov	eax, ecx
		shl	edx, 3
		mov	[edi+2Ch], edx
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42D04C:				; CODE XREF: ___:0042CFD0j
					; DATA XREF: ___:off_42D074o
		mov	eax, [esp+0Ch]	; jumptable 0042CFD0 case 3
		mov	edx, [esp+8]
		mov	ecx, 1
		mov	[eax+34h], edx
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_42D05F:				; CODE XREF: ___:0042CFD0j
					; DATA XREF: ___:off_42D074o
		mov	eax, [esp+0Ch]	; jumptable 0042CFD0 case 4
		mov	edx, [esp+8]
		mov	ecx, 1
		mov	[eax+3Ch], edx


loc_42D06F:				; CODE XREF: ___:0042CFCAj
					; ___:0042CFE3j
		mov	eax, ecx	; default
		retn
; ---------------------------------------------------------------------------
		align 4
off_42D074	dd offset loc_42CFD7	; DATA XREF: ___:0042CFD0r
		dd offset loc_42CFF8	; jump table for switch	statement
		dd offset loc_42D00B
		dd offset loc_42D04C
		dd offset loc_42D05F
		db 8 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42D0D0	proc near		; CODE XREF: sub_402243j

var_40		= byte ptr -40h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	edx, [esp+arg_0]
		sub	esp, 40h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		repne scasb
		not	ecx
		add	ecx, 6
		cmp	ecx, 40h
		ja	short loc_42D161
		mov	ebx, [esp+4Ch+arg_4]
		or	ecx, 0FFFFFFFFh
		mov	edi, ebx
		repne scasb
		not	ecx
		add	ecx, 6
		cmp	ecx, 40h
		ja	short loc_42D161
		mov	edi, dword_50FA60
		push	edx
		lea	eax, [esp+50h+var_40]
		push	offset dword_4454A0
		push	eax
		call	edi
		mov	esi, [esp+58h+arg_8]
		lea	ecx, [esp+58h+var_40]
		push	esi
		push	33h
		push	ecx
		call	sub_42D1A0
		add	esp, 18h
		test	eax, eax
		jnz	short loc_42D13D
		mov	cl, [esi+44h]
		pop	edi
		cmp	cl, 32h
		pop	esi
		setz	al
		pop	ebx
		add	esp, 40h
		retn
; ---------------------------------------------------------------------------


loc_42D13D:				; CODE XREF: sub_42D0D0+5Bj
		push	ebx
		lea	edx, [esp+50h+var_40]
		push	offset dword_445494
		push	edx
		call	edi
		push	esi
		lea	eax, [esp+5Ch+var_40]
		push	32h
		push	eax
		call	sub_42D1A0
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 40h
		retn
; ---------------------------------------------------------------------------


loc_42D161:				; CODE XREF: sub_42D0D0+1Bj
					; sub_42D0D0+30j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		add	esp, 40h
		retn
sub_42D0D0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42D1A0	proc near		; CODE XREF: sub_42D0D0+51p
					; sub_42D0D0+82p ...

var_100		= byte ptr -100h
arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch

		sub	esp, 100h
		push	ebx
		mov	ebx, [esp+104h+arg_8]
		push	esi
		push	edi
		mov	eax, [ebx+18h]
		test	eax, eax
		jz	short loc_42D1C3
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42D1C3:				; CODE XREF: sub_42D1A0+15j
		mov	eax, dword_50E3CC
		mov	esi, [esp+10Ch+arg_0]
		cmp	eax, 2


loc_42D1D2:				; CODE XREF: ___:0042D24Dj
		jle	short loc_42D1EC
		mov	eax, dword_50FA84
		push	esi
		add	eax, 40h
		push	offset dword_4454B4
		push	eax
		nop
		call	near ptr 77C40E13h
		add	esp, 0Ch


loc_42D1EC:				; CODE XREF: sub_42D1A0:loc_42D1D2j
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		add	ecx, 2
		cmp	ecx, 100h
		jbe	short loc_42D20C
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42D20C:				; CODE XREF: sub_42D1A0+60j
		push	esi
		lea	ecx, [esp+110h+var_100]
		push	offset dword_443CD4
		push	ecx
		nop
		call	near ptr 77C3F931h
		lea	edi, [esp+118h+var_100]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		add	esp, 0Ch
		repne scasb
		mov	eax, [ebx+8]
		push	0
		not	ecx
		dec	ecx
		lea	edx, [esp+110h+var_100]
		push	ecx
		push	edx
		push	eax
		call	sub_436F00
sub_42D1A0	endp

; ---------------------------------------------------------------------------
		db 85h
; ---------------------------------------------------------------------------
		sar	byte ptr [edi+1Ah], 68h
		lodsb
		push	esp
		inc	esp
		add	[eax-7F645B18h], dl
		ja	short loc_42D1D2
		les	eax, [ebx+esi]
		rcr	byte ptr [edi+5Eh], 5Bh
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------
		mov	ecx, [esp+114h]
		push	ebx
		push	ecx
		call	sub_42CB10
		add	esp, 8
		pop	edi
		pop	esi
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42D2C0	proc near		; CODE XREF: sub_401F55j

var_100		= dword	ptr -100h
var_FC		= byte ptr -0FCh
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

		sub	esp, 100h
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+10Ch+arg_0]
		push	edi
		mov	edi, [esp+110h+arg_4]
		test	esi, esi
		jnz	short loc_42D30C
		cmp	edi, 4
		jz	short loc_42D2E6
		cmp	edi, 3
		jnz	short loc_42D30C


loc_42D2E6:				; CODE XREF: sub_42D2C0+1Fj
		mov	eax, [esp+110h+arg_C]
		push	offset dword_445500
		add	eax, 44h
		push	eax
		nop
		call	near ptr 77C3F931h
		add	esp, 8
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42D30C:				; CODE XREF: sub_42D2C0+1Aj
					; sub_42D2C0+24j
		mov	ecx, [esp+110h+arg_8]
		mov	ebp, dword_50FA60
		push	ecx
		lea	edx, [esp+114h+var_100]
		push	offset dword_4454F4
		push	edx
		call	ebp
		mov	ebx, [esp+11Ch+arg_C]
		lea	eax, [esp+11Ch+var_100]
		push	ebx
		push	32h
		push	eax
		call	sub_42D1A0
		add	esp, 18h
		test	eax, eax
		jz	loc_42D4CE
		lea	eax, [edi-1]	; switch 4 cases
		cmp	eax, 3
		ja	loc_42D4BF	; default
		jmp	off_42D4DC[eax*4] ; switch jump


loc_42D358:				; DATA XREF: ___:off_42D4DCo
		mov	ecx, dword_4454EC ; jumptable 0042D351 case 1
		mov	dl, byte_4454F0
		mov	[esp+110h+var_100], ecx
		mov	[esp+110h+var_FC], dl
		mov	ebp, 1
		jmp	short loc_42D3C0
; ---------------------------------------------------------------------------


loc_42D373:				; CODE XREF: sub_42D2C0+91j
					; DATA XREF: ___:off_42D4DCo
		mov	eax, dword_4454E4 ; jumptable 0042D351 case 2
		mov	cl, byte_4454E8
		mov	[esp+110h+var_100], eax
		mov	[esp+110h+var_FC], cl
		mov	ebp, 1
		jmp	short loc_42D3C0
; ---------------------------------------------------------------------------


loc_42D38D:				; CODE XREF: sub_42D2C0+91j
					; DATA XREF: ___:off_42D4DCo
		mov	edx, dword_4454DC ; jumptable 0042D351 case 3
		mov	al, byte_4454E0
		mov	[esp+110h+var_100], edx
		mov	[esp+110h+var_FC], al
		mov	ebp, 1
		jmp	short loc_42D3C0
; ---------------------------------------------------------------------------


loc_42D3A7:				; CODE XREF: sub_42D2C0+91j
					; DATA XREF: ___:off_42D4DCo
		mov	ecx, dword_4454D4 ; jumptable 0042D351 case 4
		mov	dl, byte_4454D8
		mov	[esp+110h+var_100], ecx
		mov	[esp+110h+var_FC], dl
		mov	ebp, 2


loc_42D3C0:				; CODE XREF: sub_42D2C0+B1j
					; sub_42D2C0+CBj ...
		test	esi, esi
		jz	short loc_42D413
		lea	edi, [esp+110h+var_100]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		mov	edi, esi
		mov	edx, ecx
		or	ecx, 0FFFFFFFFh
		mov	byte ptr [esp+edx+110h+var_100], 20h
		inc	edx
		repne scasb
		not	ecx
		dec	ecx
		add	ecx, edx
		cmp	ecx, 100h
		jnb	loc_42D4CE
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		sub	edi, ecx
		lea	edx, [esp+edx+110h+var_100]
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb


loc_42D413:				; CODE XREF: sub_42D2C0+102j
		mov	ecx, [esp+110h+arg_8]
		mov	esi, [esp+110h+arg_10]
		push	ebp
		push	ecx
		push	esi
		push	ebx
		call	sub_42D580
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	loc_42D4CE
		push	ebx
		lea	edx, [esp+114h+var_100]
		push	31h
		push	edx
		call	sub_42D1A0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42D468
		mov	eax, [esi]
		push	eax
		call	sub_401BDB
		add	esp, 4
		mov	dword ptr [esi], 0
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42D468:				; CODE XREF: sub_42D2C0+188j
		mov	ecx, [esi]
		mov	[ecx+1Ch], ebx
		mov	eax, [ebx+24h]
		mov	edx, [esi]
		cmp	eax, 2
		mov	[ebx+20h], edx
		jnz	short loc_42D4AF
		mov	eax, [esi]
		push	ebx
		push	eax
		call	sub_42DA60
; ---------------------------------------------------------------------------
		add	esp, 8
		test	eax, eax
		jnz	short loc_42D4AF
		mov	ecx, [esi]
		push	ecx
		call	sub_401BDB
		add	esp, 4
		mov	dword ptr [esi], 0
		mov	dword ptr [ebx+20h], 0
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42D4AF:				; CODE XREF: sub_42D2C0+1B8j
					; sub_42D2C0+1C8j
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 1
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42D4BF:				; CODE XREF: sub_42D2C0+8Bj
		push	edi		; default
		add	ebx, 44h
		push	offset dword_4454B8
		push	ebx
		call	ebp
		add	esp, 0Ch


loc_42D4CE:				; CODE XREF: sub_42D2C0+7Fj
					; sub_42D2C0+12Cj ...
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 100h
		retn
sub_42D2C0	endp

; ---------------------------------------------------------------------------
		align 4
off_42D4DC	dd offset loc_42D358	; DATA XREF: sub_42D2C0+91r
		dd offset loc_42D373	; jump table for switch	statement
		dd offset loc_42D38D
		dd offset loc_42D3A7
		db 4 dup(90h)
		db 90h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42D580	proc near		; CODE XREF: sub_42D2C0+165p

var_134		= dword	ptr -134h
var_130		= dword	ptr -130h
var_12C		= dword	ptr -12Ch
var_128		= dword	ptr -128h
var_124		= dword	ptr -124h
var_120		= word ptr -120h
var_11E		= word ptr -11Eh
var_11C		= dword	ptr -11Ch
var_118		= byte ptr -118h
var_114		= byte ptr -114h
var_110		= byte ptr -110h
var_10C		= byte ptr -10Ch
var_108		= byte ptr -108h
var_104		= byte ptr -104h
arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		sub	esp, 134h
		push	ebx
		mov	ebx, [esp+138h+arg_0]
		push	ebp
		push	esi
		mov	eax, [ebx+18h]
		xor	ebp, ebp
		mov	esi, 1
		cmp	eax, ebp
		push	edi
		mov	[esp+144h+var_120], bp
		mov	[esp+144h+var_11E], bp
		mov	[esp+144h+var_11C], esi
		jnz	loc_42D8A4
		mov	eax, [esp+144h+arg_C]
		cmp	eax, esi
		jz	short loc_42D5E2
		cmp	eax, 2
		jz	short loc_42D5E2
		push	eax
		add	ebx, 44h
		push	offset dword_4455A4
		push	ebx
		nop
		call	near ptr 77C3F931h
		add	esp, 0Ch
		or	eax, 0FFFFFFFFh
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 134h
		retn
; ---------------------------------------------------------------------------


loc_42D5E2:				; CODE XREF: sub_42D580+3Aj
					; sub_42D580+3Fj
		mov	eax, [esp+144h+arg_8]
		cmp	eax, 41h
		jz	short loc_42D614
		cmp	eax, 49h
		jz	short loc_42D614
		push	eax
		add	ebx, 44h
		push	offset dword_445590
		push	ebx
		nop
		call	near ptr 77C3F931h
		add	esp, 0Ch
		or	eax, 0FFFFFFFFh
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 134h
		retn
; ---------------------------------------------------------------------------


loc_42D614:				; CODE XREF: sub_42D580+6Cj
					; sub_42D580+71j
		mov	eax, [ebx+24h]
		mov	[esp+144h+var_124], 10h
		cmp	eax, esi
		jnz	loc_42D6F9
		xor	eax, eax
		push	ebx
		mov	[esp+148h+var_134], eax
		push	32h
		mov	[esp+14Ch+var_130], eax
		push	offset dword_445588
		mov	[esp+150h+var_12C], eax
		mov	word ptr [esp+150h+var_134], 2
		mov	[esp+150h+var_128], eax
		call	sub_42D1A0
		add	esp, 0Ch
		test	eax, eax
		jz	loc_42D8A4
		lea	ecx, [ebx+44h]
		push	28h
		push	ecx
		nop
		call	near ptr 77C47660h
		add	esp, 8
		cmp	eax, ebp
		jz	loc_42D8A4
		lea	edx, [esp+144h+var_114]
		lea	ecx, [esp+144h+var_118]
		push	edx
		push	ecx
		lea	edx, [esp+14Ch+var_104]
		lea	ecx, [esp+14Ch+var_108]
		push	edx
		push	ecx
		lea	edx, [esp+154h+var_10C]
		lea	ecx, [esp+154h+var_110]
		push	edx
		push	ecx
		inc	eax
		push	offset dword_445570
		push	eax
		nop
		call	near ptr 77C41B72h
		mov	dl, [esp+164h+var_110]
		mov	al, [esp+164h+var_10C]
		mov	cl, [esp+164h+var_108]
		mov	byte ptr [esp+164h+var_130], dl
		mov	dl, [esp+164h+var_104]
		mov	byte ptr [esp+164h+var_130+1], al
		mov	al, [esp+164h+var_118]
		mov	byte ptr [esp+164h+var_130+2], cl
		mov	cl, [esp+164h+var_114]
		add	esp, 20h
		mov	byte ptr [esp+144h+var_130+3], dl
		mov	byte ptr [esp+144h+var_134+2], al
		mov	byte ptr [esp+144h+var_134+3], cl
		push	6
		push	esi
		push	2
		call	sub_436F3C
; ---------------------------------------------------------------------------
		db 8Bh
		dd 0FFFF83F8h, 40684D75h, 90004454h, 809709E8h,	4C48377h
		dd 5E5FC70Bh, 0C4815B5Dh, 134h
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------


loc_42D6F9:				; CODE XREF: sub_42D580+A1j
		mov	ecx, [ebx+8]
		lea	edx, [esp+144h+var_124]
		lea	eax, [esp+144h+var_134]
		push	edx
		push	eax
		push	ecx
		call	sub_436F2A
; ---------------------------------------------------------------------------
		dd 0BD7DC085h, 44556068h, 96D8E800h, 83907780h,	0C03304C4h
		dd 5B5D5E5Fh, 134C481h,	8DC30000h, 6A282454h, 46A5204h
		dd 0FFFF68h, 45E85700h,	83000098h, 0A75FFF8h, 44543068h
		dd 147E900h, 448D0000h,	46A2424h, 806850h, 0FF680000h
		dd 570000FFh, 981FE8h, 0FFF88300h, 30680A75h, 0E9004454h
		dd 121h, 75247339h, 244C8D20h, 51106A10h, 97BCE857h, 0F8830000h
		dd 0EC850FFFh, 68000000h, 445230h, 0FCE9h, 24548D00h, 52106A10h
		dd 6C896657h, 85E81E24h, 83000097h, 775FFF8h, 44555868h
		dd 5610EB00h, 9760E857h, 0C0850000h, 5068217Dh,	90004455h
		dd 809625E8h, 4C48377h,	9730E857h, 5E5F0000h, 5BC0335Dh
		dd 134C481h, 8DC30000h,	8D202444h, 5010244Ch, 37E85751h
		dd 85000097h, 5F0D7DC0h, 0C0335D5Eh, 34C4815Bh,	0C3000001h
		dd 1324548Bh, 1224448Bh, 17244C8Bh, 0FFE281h, 0FF250000h
		dd 52000000h, 1A24548Bh, 0FFE181h, 8B500000h, 511D2444h
		dd 20244C8Bh, 0FFE281h,	0FF250000h, 52000000h, 0FFE181h
		dd 51500000h, 5C24548Dh, 44553468h, 0DEE85200h,	90778120h
		dd 24448D53h, 50326A68h, 0FFF93FE8h, 2CC483FFh,	1375C085h
		dd 9698E857h, 5E5F0000h, 5BC0335Dh, 134C481h, 68C30000h
		dd 144h, 3CE89056h, 8B777FE8h, 8C483F0h, 2275F53Bh, 44542868h
		dd 57E89000h, 83778095h, 0E85704C4h, 9662h
; ---------------------------------------------------------------------------


loc_42D8A4:				; CODE XREF: sub_42D580+2Bj
					; sub_42D580+D2j ...
		pop	edi
		pop	esi
		pop	ebp
		or	eax, 0FFFFFFFFh
		pop	ebx
		add	esp, 134h
		retn
sub_42D580	endp

; ---------------------------------------------------------------------------
		dw 0BC83h
		dd 15024h, 41754100h, 200068h, 40E89000h, 83777FEBh, 0C53B04C4h
		dd 75144689h, 5428682Ch, 0E8900044h, 77809516h,	5704C483h
		dd 9621E8h, 0E8905600h,	777FE92Fh, 8304C483h, 5E5FFFC8h
		dd 0C4815B5Dh, 134h, 248C8BC3h,	154h, 89087E89h, 538B184Eh
		dd 28568928h, 892C438Bh, 4B8B2C46h, 344E8934h, 89284E8Bh
		dd 6E89386Eh, 3C438B40h, 4689CD3Bh, 390E753Ch, 9752C6Eh
		dd 575C53Bh, 0EB306E89h, 30538B06h, 8B305689h, 14C2484h
		dd 895F0000h, 0B85D5E30h, 1, 34C4815Bh,	0C3000001h, 90909090h
		dd 40h dup(0CCCCCCCCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_42DA60	proc near		; CODE XREF: sub_42D2C0+1BEp

var_11C		= dword	ptr -11Ch
var_118		= dword	ptr -118h
var_104		= dword	ptr -104h
var_100		= dword	ptr -100h
var_FC		= dword	ptr -0FCh
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 124h
		push	ebx
		mov	ebx, [esp+128h+arg_0]
		push	ebp
		push	esi
		mov	esi, [esp+130h+arg_4]
		mov	eax, [ebx+8]
		xor	ebp, ebp
		push	edi
		mov	ecx, [esi+8]
		mov	[esp+134h+var_FC], eax
		cmp	ecx, eax
		mov	[esp+134h+var_100], ecx
		mov	[esp+134h+var_104], 2
		mov	[esp+134h+var_118], ebp
		mov	[esp+134h+var_11C], 1Eh
		jge	short loc_42DAA2
		mov	ecx, eax


loc_42DAA2:				; CODE XREF: sub_42DA60+3Ej
		lea	eax, [esp+134h+var_11C]
		lea	edx, [esp+134h+var_104]
		push	eax
		push	ebp
		push	ebp
		inc	ecx
		push	edx
		push	ecx
		call	sub_436F12
sub_42DA60	endp

; ---------------------------------------------------------------------------
		db 83h,	0F8h, 0FFh
		dd 683E75h, 90000001h, 7F17F7E8h, 50008B77h, 972CE890h
		dd 0C4837780h, 44C68304h, 0E8905650h, 77819FB4h, 83084B8Bh
		dd 0E8510CC4h, 941Eh, 86B895Fh,	0C0335D5Eh, 24C4815Bh
		dd 0C3000001h, 2975C53Bh, 0B9447E8Dh, 8, 4455C0BEh, 0A4A5F300h
		dd 5208538Bh, 93F1E8h, 6B895F00h, 335D5E08h, 0C4815BC0h
		dd 124h, 84B8BC3h, 3024448Dh, 2DE85150h, 85000094h, 8B7A74C0h
		dd 548D084Bh, 448D1424h, 50522024h, 2444C751h, 1020h, 93BAE800h
		dd 0F88B0000h, 1762E890h, 108B777Fh, 5008438Bh,	14245489h
		dd 939DE8h, 7EFD3B00h, 87B8913h, 0B85D5E5Fh, 1,	24C4815Bh
		dd 0C3000001h, 10244C8Bh, 10068h, 6BE85100h, 90778096h
		dd 8304C483h, 565044C6h, 9EF2E890h, 0C4837781h,	86B890Ch
		dd 5E5FC033h, 0C4815B5Dh, 124h,	8468BC3h, 3024548Dh, 0A1E85052h
		dd 85000093h, 8B2474C0h, 0E851084Bh, 933Ah, 89326A56h
		dd 39E8086Bh, 83FFFFEFh, 0C03308C4h, 5B5D5E5Fh,	124C481h
		dd 8BC30000h, 5F102444h, 815B5D5Eh, 124C4h, 9090C300h
		dd 2 dup(90909090h), 1Ch dup(0CCCCCCCCh)

; =============== S U B	R O U T	I N E =======================================



sub_42DC70	proc near		; CODE XREF: sub_402248j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_8]
		push	edi
		cmp	dword ptr [esi+18h], 1
		jz	short loc_42DC81
		pop	edi
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42DC81:				; CODE XREF: sub_42DC70+Aj
		mov	eax, [esi+14h]
		push	esi
		test	eax, eax
		jz	short loc_42DC9D
		mov	eax, [esp+0Ch+arg_4]
		mov	ecx, [esp+0Ch+arg_0]
		push	eax
		push	ecx
		call	sub_42CC50
		add	esp, 0Ch
		jmp	short loc_42DCC4
; ---------------------------------------------------------------------------


loc_42DC9D:				; CODE XREF: sub_42DC70+17j
		call	sub_42CE80
		add	esp, 4
		cmp	eax, 1
		jz	short loc_42DCAF
		pop	edi
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42DCAF:				; CODE XREF: sub_42DC70+38j
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]
		mov	ecx, [esi+8]
		push	0
		push	edx
		push	eax
		push	ecx
		call	sub_436EFA
; ---------------------------------------------------------------------------


loc_42DCC4:				; CODE XREF: sub_42DC70+2Bj
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_42DCD0
		pop	edi
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42DCD0:				; CODE XREF: sub_42DC70+59j
		mov	ecx, [esi+38h]
		add	ecx, edi
		mov	[esi+38h], ecx
		mov	edx, ecx
		mov	ecx, [esi+30h]
		test	ecx, ecx
		jz	short loc_42DD0F
		mov	eax, [esi+3Ch]
		test	eax, eax
		jz	short loc_42DD0F
		push	ebx
		mov	ebx, [esi+40h]
		add	ebx, edi
		mov	[esi+40h], ebx
		cmp	ebx, eax
		pop	ebx
		jle	short loc_42DD0F
		mov	eax, [esi+34h]
		push	eax
		push	edx
		push	esi
		call	ecx
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42DD08
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42DD08:				; CODE XREF: sub_42DC70+93j
		mov	dword ptr [esi+40h], 0


loc_42DD0F:				; CODE XREF: sub_42DC70+6Fj
					; sub_42DC70+76j ...
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_42DC70	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42DD50	proc near		; CODE XREF: sub_4021F3j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_8]
		push	edi
		cmp	dword ptr [esi+18h], 2
		jz	short loc_42DD61
		pop	edi
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42DD61:				; CODE XREF: sub_42DD50+Aj
		mov	eax, [esi+14h]
		push	esi
		test	eax, eax
		jz	short loc_42DD7D
		mov	eax, [esp+0Ch+arg_4]
		mov	ecx, [esp+0Ch+arg_0]
		push	eax
		push	ecx
		call	sub_42DE20
		add	esp, 0Ch
		jmp	short loc_42DD9A
; ---------------------------------------------------------------------------


loc_42DD7D:				; CODE XREF: sub_42DD50+17j
		call	sub_42CE80
		mov	edx, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [esi+8]
		add	esp, 4
		push	0
		push	edx
		push	eax
		push	ecx
		call	sub_436F00
; ---------------------------------------------------------------------------


loc_42DD9A:				; CODE XREF: sub_42DD50+2Bj
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_42DDA6
		pop	edi
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42DDA6:				; CODE XREF: sub_42DD50+4Fj
		mov	edx, [esi+38h]
		mov	eax, [esi+30h]
		add	edx, edi
		test	eax, eax
		mov	[esi+38h], edx
		jz	short loc_42DDDC
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jz	short loc_42DDDC
		push	ebx
		mov	ebx, [esi+40h]
		add	ebx, edi
		mov	[esi+40h], ebx
		cmp	ebx, ecx
		pop	ebx
		jle	short loc_42DDDC
		mov	ecx, [esi+34h]
		push	ecx
		push	edx
		push	esi
		call	eax
		add	esp, 0Ch
		mov	dword ptr [esi+40h], 0


loc_42DDDC:				; CODE XREF: sub_42DD50+63j
					; sub_42DD50+6Aj ...
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_42DD50	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42DE20	proc near		; CODE XREF: sub_42DD50+23p
					; sub_42DFD0+28p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_8]
		push	esi
		xor	esi, esi
		xor	al, al
		mov	ecx, [ebp+18h]
		push	edi
		cmp	ecx, 2
		jz	short loc_42DE3C
		pop	edi
		pop	esi
		pop	ebp
		or	eax, 0FFFFFFFFh
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42DE3C:				; CODE XREF: sub_42DE20+12j
		mov	ecx, [esp+10h+arg_4]
		mov	edi, [ebp+14h]
		xor	ebx, ebx
		test	ecx, ecx
		jle	loc_42DF64


loc_42DE4D:				; CODE XREF: sub_42DE20+AFj
		mov	ecx, [esp+10h+arg_0]
		cmp	byte ptr [ebx+ecx], 0Ah
		jnz	short loc_42DE8E
		cmp	al, 0Dh
		jz	short loc_42DE8E
		cmp	esi, 2000h
		jnz	short loc_42DE89
		push	ebp
		call	sub_42CE80
		add	esp, 4
		test	eax, eax
		jz	short loc_42DEEA
		mov	edx, [ebp+8]
		push	0
		push	esi
		push	edi
		push	edx
		call	sub_436F00
; ---------------------------------------------------------------------------
		mov	esi, eax
		cmp	esi, 2000h
		jnz	short loc_42DEF1
		xor	esi, esi


loc_42DE89:				; CODE XREF: sub_42DE20+41j
		mov	byte ptr [edi+esi], 0Dh
		inc	esi


loc_42DE8E:				; CODE XREF: sub_42DE20+35j
					; sub_42DE20+39j
		cmp	esi, 2000h
		jnz	short loc_42DEBC
		push	ebp
		call	sub_42CE80
		add	esp, 4
		test	eax, eax
		jz	short loc_42DEEA
		mov	eax, [ebp+8]
		push	0
		push	esi
		push	edi
		push	eax
		call	sub_436F00
; ---------------------------------------------------------------------------
		mov	esi, eax
		cmp	esi, 2000h
		jnz	short loc_42DF11
		xor	esi, esi


loc_42DEBC:				; CODE XREF: sub_42DE20+74j
		mov	ecx, [esp+10h+arg_0]
		inc	esi
		mov	al, [ebx+ecx]
		mov	ecx, [esp+10h+arg_4]
		mov	[edi+esi-1], al
		inc	ebx
		cmp	ebx, ecx
		jl	loc_42DE4D
		test	esi, esi
		jz	loc_42DF64
		push	ebp
		call	sub_42CE80
		add	esp, 4
		test	eax, eax
		jnz	short loc_42DF31


loc_42DEEA:				; CODE XREF: sub_42DE20+4Ej
					; sub_42DE20+81j
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42DEF1:				; CODE XREF: sub_42DE20+65j
		nop
		call	near ptr 77C1F2BCh
		mov	edx, [eax]
		push	edx
		push	esi
		push	offset dword_445648
		nop
		call	near ptr 77C4186Ah
		add	esp, 0Ch
		or	eax, 0FFFFFFFFh
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42DF11:				; CODE XREF: sub_42DE20+98j
		nop
		call	near ptr 77C1F2BCh
		mov	eax, [eax]
		push	eax
		push	esi
		push	offset dword_445618
		nop
		call	near ptr 77C4186Ah
		add	esp, 0Ch
		or	eax, 0FFFFFFFFh
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42DF31:				; CODE XREF: sub_42DE20+C8j
		mov	ecx, [ebp+8]
		push	0
		push	esi
		push	edi
		push	ecx
		call	sub_436F00
; ---------------------------------------------------------------------------
		dw 0F88Bh
		dd 2074FE3Bh, 1372E890h, 108B777Fh, 0E8685752h,	90004455h
		dd 813911E8h, 0CC48377h, 5FFFC883h, 0C35B5D5Eh
; ---------------------------------------------------------------------------


loc_42DF64:				; CODE XREF: sub_42DE20+27j
					; sub_42DE20+B7j
		mov	eax, [esp+10h+arg_4]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_42DE20	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 60h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42DFD0	proc near		; CODE XREF: sub_401BDBj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	eax, [esi+18h]
		sub	eax, 0
		jz	short loc_42E04B
		dec	eax
		jz	short loc_42E000
		dec	eax
		jz	short loc_42DFEC


loc_42DFE4:				; CODE XREF: sub_42DFD0+64j
		pop	edi
		mov	eax, 1
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42DFEC:				; CODE XREF: sub_42DFD0+12j
		mov	eax, [esi+14h]
		test	eax, eax
		jz	short loc_42E000
		push	esi
		push	0
		push	0
		call	sub_42DE20
		add	esp, 0Ch


loc_42E000:				; CODE XREF: sub_42DFD0+Fj
					; sub_42DFD0+21j
		mov	eax, [esi+14h]
		push	ebx
		mov	ebx, dword_50FAC4
		test	eax, eax
		jz	short loc_42E014
		push	eax
		call	ebx
		add	esp, 4


loc_42E014:				; CODE XREF: sub_42DFD0+3Cj
		mov	eax, [esi+8]
		push	2
		push	eax
		call	sub_436F9C
; ---------------------------------------------------------------------------
		mov	ecx, [esi+8]
		push	ecx
		call	sub_436F06
; ---------------------------------------------------------------------------
		mov	edi, [esi+1Ch]
		push	esi
		call	ebx
		add	esp, 4
		test	edi, edi
		pop	ebx
		jz	short loc_42DFE4
		push	edi
		push	32h
		mov	dword ptr [edi+20h], 0
		call	sub_42CB10
		add	esp, 8
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42E04B:				; CODE XREF: sub_42DFD0+Cj
		mov	eax, [esi+20h]
		test	eax, eax
		jz	short loc_42E062
		push	esi
		mov	dword ptr [esi+1Ch], 0
		call	sub_401BDB
		add	esp, 4


loc_42E062:				; CODE XREF: sub_42DFD0+80j
		mov	edx, [esi+8]
		push	edx
		call	sub_436F06
sub_42DFD0	endp

; ---------------------------------------------------------------------------
		db 56h
		db 90h
		db 0E8h, 0A9h, 0E1h
; ---------------------------------------------------------------------------
		jg	short loc_42E0E9
		add	esp, 4
		xor	eax, eax
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E0B0:				; CODE XREF: ___:00401CE4j
		mov	edx, [esp+4]
		sub	esp, 100h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	edi
		mov	edi, edx
		repne scasb
		not	ecx
		add	ecx, 6
		pop	edi
		cmp	ecx, 100h
		jbe	short loc_42E0D9
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42E0D9:				; CODE XREF: ___:0042E0D0j
		push	edx
		lea	eax, [esp+4]
		push	offset dword_445678
		push	eax
		call	near ptr 77C3F931h


loc_42E0E9:				; CODE XREF: ___:0042E070j
		nop
		mov	ecx, [esp+114h]
		lea	edx, [esp+0Ch]
		push	ecx
		push	32h
		push	edx
		call	sub_42D1A0
		add	esp, 18h
		neg	eax
		sbb	eax, eax
		neg	eax
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E130:				; CODE XREF: ___:004016C2j
		push	esi
		mov	esi, [esp+8]
		push	edi
		mov	edi, [esp+14h]
		push	edi
		push	32h
		push	offset dword_445684
		call	sub_42D1A0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42E151
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42E151:				; CODE XREF: ___:0042E14Cj
		mov	eax, [esp+10h]
		lea	ecx, [edi+48h]
		lea	edx, [eax-1]
		test	edx, edx
		jz	short loc_42E16C


loc_42E15F:				; CODE XREF: ___:0042E16Aj
		mov	al, [ecx]
		cmp	al, 20h
		jz	short loc_42E16C
		mov	[esi], al
		inc	esi
		inc	ecx
		dec	edx
		jnz	short loc_42E15F


loc_42E16C:				; CODE XREF: ___:0042E15Dj
					; ___:0042E163j
		mov	byte ptr [esi],	0
		pop	edi
		mov	eax, 1
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E1A0:				; CODE XREF: ___:0040224Dj
		mov	edx, [esp+4]
		sub	esp, 100h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	edi
		mov	edi, edx
		repne scasb
		not	ecx
		add	ecx, 5
		pop	edi
		cmp	ecx, 100h
		jbe	short loc_42E1C9
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42E1C9:				; CODE XREF: ___:0042E1C0j
		push	edx
		lea	eax, [esp+4]
		push	offset dword_44568C
		push	eax
		nop
		call	near ptr 77C3F931h
		mov	ecx, [esp+114h]
		lea	edx, [esp+0Ch]
		push	ecx
		push	32h
		push	edx
		call	sub_42D1A0
		add	esp, 18h
		neg	eax
		sbb	eax, eax
		neg	eax
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E220:				; CODE XREF: ___:0040225Cj
		mov	edx, [esp+4]
		sub	esp, 100h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	edi
		mov	edi, edx
		repne scasb
		not	ecx
		add	ecx, 5
		pop	edi
		cmp	ecx, 100h
		jbe	short loc_42E249
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42E249:				; CODE XREF: ___:0042E240j
		push	edx
		lea	eax, [esp+4]
		push	offset dword_445694
		push	eax
		nop
		call	near ptr 77C3F931h
		mov	ecx, [esp+114h]
		lea	edx, [esp+0Ch]
		push	ecx
		push	32h
		push	edx
		call	sub_42D1A0
		add	esp, 18h
		neg	eax
		sbb	eax, eax
		neg	eax
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E2A0:				; CODE XREF: ___:00401780j
		mov	eax, [esp+4]
		push	eax
		push	32h
		push	offset dword_44569C
		call	sub_42D1A0
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E2D0:				; CODE XREF: ___:004021FDj
		mov	edx, [esp+4]
		sub	esp, 100h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	edi
		mov	edi, edx
		repne scasb
		not	ecx
		add	ecx, 5
		pop	edi
		cmp	ecx, 100h
		jbe	short loc_42E2F9
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42E2F9:				; CODE XREF: ___:0042E2F0j
		push	edx
		lea	eax, [esp+4]
		push	offset dword_4456A4
		push	eax
		nop
		call	near ptr 77C3F931h
		mov	ecx, [esp+114h]
		lea	edx, [esp+0Ch]
		push	ecx
		push	32h
		push	edx
		call	sub_42D1A0
		add	esp, 18h
		neg	eax
		sbb	eax, eax
		neg	eax
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E350:				; CODE XREF: ___:0040166Dj
		push	esi
		mov	esi, [esp+8]
		push	edi
		mov	edi, [esp+14h]
		push	edi
		push	32h
		push	offset dword_4456AC
		call	sub_42D1A0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42E371
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42E371:				; CODE XREF: ___:0042E36Cj
		add	edi, 44h
		push	22h
		push	edi
		nop
		call	near ptr 77C47660h
		add	esp, 8
		test	eax, eax
		jnz	short loc_42E387
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42E387:				; CODE XREF: ___:0042E382j
		mov	ecx, [esp+10h]
		inc	eax
		lea	edx, [ecx-1]
		test	edx, edx
		jz	short loc_42E3A5


loc_42E393:				; CODE XREF: ___:0042E3A3j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_42E3A5
		cmp	cl, 22h
		jz	short loc_42E3A5
		mov	[esi], cl
		inc	esi
		inc	eax
		dec	edx
		jnz	short loc_42E393


loc_42E3A5:				; CODE XREF: ___:0042E391j
					; ___:0042E397j ...
		mov	byte ptr [esi],	0
		pop	edi
		mov	eax, 1
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E3D0:				; CODE XREF: ___:00401127j
		mov	eax, [esp+0Ch]
		mov	ecx, [esp+8]
		mov	edx, [esp+4]
		push	41h
		push	1
		push	eax
		push	ecx
		push	edx
		call	sub_42E400
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42E400	proc near		; CODE XREF: ___:0042E3E3p
					; ___:0042E663p ...

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

		push	ecx
		mov	eax, [esp+4+arg_0]
		push	ebx
		push	ebp
		xor	ebp, ebp
		push	esi
		push	edi
		mov	edi, [esp+14h+arg_10]
		cmp	eax, ebp
		mov	[esp+14h+var_4], 1
		jz	short loc_42E48A
		mov	esi, [esp+14h+arg_C]
		mov	cx, word_4456EC
		cmp	esi, 4
		mov	word ptr [esp+14h+arg_10], cx
		mov	word ptr [esp+14h+arg_10+2], bp
		jnz	short loc_42E43A
		mov	byte ptr [esp+14h+arg_10], 72h


loc_42E43A:				; CODE XREF: sub_42E400+33j
		cmp	edi, 49h
		jnz	short loc_42E444
		mov	byte ptr [esp+14h+arg_10+1], 62h


loc_42E444:				; CODE XREF: sub_42E400+3Dj
		lea	edx, [esp+14h+arg_10]
		push	edx
		push	eax
		call	near ptr 77C3F010h
		nop
		mov	ebx, eax
		add	esp, 8
		cmp	ebx, ebp
		jnz	short loc_42E4A4
		push	100h
		call	near ptr 77C1F2BCh
		nop
		mov	eax, [eax]
		push	eax
		nop
		call	near ptr 77C371FAh
		mov	ecx, [esp+1Ch+arg_8]
		add	esp, 4
		add	ecx, 44h
		push	eax
		push	ecx
		call	near ptr 77C47A90h
		nop
		add	esp, 0Ch
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42E48A:				; CODE XREF: sub_42E400+19j
		mov	esi, [esp+14h+arg_C]
		cmp	esi, 4
		jnz	short loc_42E49B
		mov	ebx, dword_50FA84
		jmp	short loc_42E4A4
; ---------------------------------------------------------------------------


loc_42E49B:				; CODE XREF: sub_42E400+91j
		mov	edx, dword_50FA84
		lea	ebx, [edx+20h]


loc_42E4A4:				; CODE XREF: sub_42E400+57j
					; sub_42E400+99j
		mov	ecx, [esp+14h+arg_8]
		mov	edx, [esp+14h+arg_4]
		lea	eax, [esp+14h+arg_C]
		push	eax
		push	ecx
		push	edi
		push	esi
		push	edx
		call	sub_401F55
		add	esp, 14h
		test	eax, eax
		jnz	short loc_42E4C7
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42E4C7:				; CODE XREF: sub_42E400+BFj
		push	2000h
		nop
		call	near ptr 77C2C407h
		add	esp, 4
		cmp	esi, 4
		mov	edi, eax
		jnz	short loc_42E53D
		mov	ebp, dword_50FAA4
		push	ebx
		push	2000h
		push	1
		push	edi
		call	ebp
		mov	esi, eax
		add	esp, 10h
		test	esi, esi
		jle	loc_42E593


loc_42E4FA:				; CODE XREF: sub_42E400+11Fj
		mov	eax, [esp+14h+arg_C]
		push	eax
		push	esi
		push	edi
		call	sub_4021F3
		add	esp, 0Ch
		cmp	eax, esi
		jl	short loc_42E523
		push	ebx
		push	2000h
		push	1
		push	edi
		call	ebp
		mov	esi, eax
		add	esp, 10h
		test	esi, esi
		jg	short loc_42E4FA
		jmp	short loc_42E593
; ---------------------------------------------------------------------------


loc_42E523:				; CODE XREF: sub_42E400+10Bj
		push	eax
		push	esi
		push	offset dword_4456C4
		call	near ptr 77C4186Ah
		nop
		add	esp, 0Ch
		mov	[esp+14h+var_4], 0
		jmp	short loc_42E593
; ---------------------------------------------------------------------------


loc_42E53D:				; CODE XREF: sub_42E400+DAj
		mov	ecx, [esp+14h+arg_C]
		push	ecx
		push	2000h
		push	edi
		call	sub_402248
		add	esp, 0Ch
		cmp	eax, ebp
		jle	short loc_42E593
		mov	esi, dword_50FA94


loc_42E55A:				; CODE XREF: sub_42E400+17Dj
		push	ebx
		push	eax
		push	1
		push	edi
		call	esi
		add	esp, 10h
		test	eax, eax
		jbe	short loc_42E581
		mov	edx, [esp+14h+arg_C]
		push	edx
		push	2000h
		push	edi
		call	sub_402248
		add	esp, 0Ch
		cmp	eax, ebp
		jg	short loc_42E55A
		jmp	short loc_42E593
; ---------------------------------------------------------------------------


loc_42E581:				; CODE XREF: sub_42E400+166j
		push	offset dword_4456B0
		call	near ptr 77C36DF2h
		nop
		add	esp, 4
		mov	[esp+14h+var_4], ebp


loc_42E593:				; CODE XREF: sub_42E400+F4j
					; sub_42E400+121j ...
		push	edi
		nop
		call	near ptr 77C2C21Bh
		push	ebx
		nop
		call	near ptr 77C3EEF6h
		mov	eax, [esp+1Ch+arg_0]
		add	esp, 8
		test	eax, eax
		jz	short loc_42E5B6
		push	ebx
		call	near ptr 77C40AB1h
		nop
		add	esp, 4


loc_42E5B6:				; CODE XREF: sub_42E400+1AAj
		mov	eax, [esp+14h+arg_C]
		push	eax
		call	sub_401BDB
		mov	eax, [esp+18h+var_4]
		add	esp, 4
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_42E400	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 80h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E650:				; CODE XREF: ___:0040169Fj
		mov	eax, [esp+0Ch]
		mov	ecx, [esp+8]
		mov	edx, [esp+4]
		push	41h
		push	2
		push	eax
		push	ecx
		push	edx
		call	sub_42E400
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E680:				; CODE XREF: ___:00401D2Fj
		sub	esp, 108h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	ebx
		mov	ebx, [esp+110h]
		push	ebp
		push	esi
		push	edi
		mov	edi, ebx
		repne scasb
		not	ecx
		add	ecx, 6
		mov	ebp, 1
		cmp	ecx, 100h
		jbe	short loc_42E6B7
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 108h
		retn
; ---------------------------------------------------------------------------


loc_42E6B7:				; CODE XREF: ___:0042E6AAj
		movsx	eax, byte ptr [esp+124h]
		mov	edi, dword_50FA60
		push	eax
		lea	ecx, [esp+1Ch]
		push	offset dword_4454F4
		push	ecx
		call	edi
		mov	esi, [esp+134h]
		lea	edx, [esp+24h]
		push	esi
		push	32h
		push	edx
		call	sub_42D1A0
		add	esp, 18h
		test	eax, eax
		jnz	short loc_42E6F8
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 108h
		retn
; ---------------------------------------------------------------------------


loc_42E6F8:				; CODE XREF: ___:0042E6EBj
		push	ebx
		lea	eax, [esp+1Ch]
		push	offset dword_4456F8
		push	eax
		call	edi
		push	esi
		lea	ecx, [esp+28h]
		push	32h
		push	ecx
		call	sub_42D1A0
		add	esp, 18h
		test	eax, eax
		jz	short loc_42E754
		lea	edx, [esp+10h]
		lea	eax, [esp+14h]
		push	edx
		push	eax
		add	esi, 44h
		push	offset dword_4456F0
		push	esi
		nop
		call	near ptr 77C41B72h
		add	esp, 10h
		cmp	eax, 2
		jnz	short loc_42E754
		mov	ecx, [esp+120h]
		mov	edx, [esp+10h]
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		mov	[ecx], edx
		pop	ebx
		add	esp, 108h
		retn
; ---------------------------------------------------------------------------


loc_42E754:				; CODE XREF: ___:0042E717j
					; ___:0042E738j
		xor	ebp, ebp
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 108h
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E7B0:				; CODE XREF: ___:004013BBj
		mov	edx, [esp+4]
		sub	esp, 100h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	ebx
		push	edi
		mov	edi, edx
		mov	ebx, 1
		repne scasb
		not	ecx
		add	ecx, 6
		cmp	ecx, 100h
		jbe	short loc_42E7E0
		pop	edi
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42E7E0:				; CODE XREF: ___:0042E7D5j
		push	esi
		push	edx
		lea	eax, [esp+10h]
		push	offset dword_445704
		push	eax
		call	near ptr 77C3F931h
		nop
		mov	esi, [esp+128h]
		lea	ecx, [esp+18h]
		push	esi
		push	32h
		push	ecx
		call	sub_42D1A0
		add	esp, 18h
		test	eax, eax
		jnz	short loc_42E81B
		xor	ebx, ebx
		pop	esi
		mov	eax, ebx
		pop	edi
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42E81B:				; CODE XREF: ___:0042E80Bj
		mov	edx, [esp+118h]
		mov	eax, [esp+114h]
		add	esi, 48h
		push	edx
		push	esi
		push	eax
		call	near ptr 77C47A90h
		nop
		add	esp, 0Ch
		mov	eax, ebx
		pop	esi
		pop	edi
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42E880	proc near		; CODE XREF: sub_4016A9j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch
arg_C		= dword	ptr  10h

		movsx	eax, [esp+arg_8]
		mov	ecx, [esp+arg_C]
		mov	edx, [esp+arg_4]
		push	eax
		mov	eax, [esp+4+arg_0]
		push	3
		push	ecx
		push	edx
		push	eax
		call	sub_42E400
		add	esp, 14h
		retn
sub_42E880	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E8B0:				; CODE XREF: ___:004016C7j
		movsx	eax, byte ptr [esp+0Ch]
		mov	ecx, [esp+10h]
		mov	edx, [esp+8]
		push	eax
		mov	eax, [esp+8]
		push	4
		push	ecx
		push	edx
		push	eax
		call	sub_42E400
		add	esp, 14h
		retn
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E8E0:				; CODE XREF: ___:00401492j
		mov	edx, [esp+4]
		sub	esp, 100h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	ebx
		push	esi
		push	edi
		mov	edi, edx
		repne scasb
		not	ecx
		add	ecx, 6
		cmp	ecx, 100h
		ja	short loc_42E979
		mov	ebx, [esp+114h]
		or	ecx, 0FFFFFFFFh
		mov	edi, ebx
		repne scasb
		not	ecx
		add	ecx, 6
		cmp	ecx, 100h
		ja	short loc_42E979
		mov	esi, dword_50FA60
		push	edx
		lea	eax, [esp+10h]
		push	offset dword_44571C
		push	eax
		call	esi
		mov	edi, [esp+124h]
		lea	ecx, [esp+18h]
		push	edi
		push	33h
		push	ecx
		call	sub_42D1A0
		add	esp, 18h
		test	eax, eax
		jz	short loc_42E979
		push	ebx
		lea	edx, [esp+10h]
		push	offset dword_445710
		push	edx
		call	esi
		push	edi
		lea	eax, [esp+1Ch]
		push	32h
		push	eax
		call	sub_42D1A0
		add	esp, 18h
		neg	eax
		sbb	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		neg	eax
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42E979:				; CODE XREF: ___:0042E901j
					; ___:0042E91Cj ...
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42E9C0:				; CODE XREF: ___:00401C67j
		mov	edx, [esp+4]
		sub	esp, 100h
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	edi
		mov	edi, edx
		repne scasb
		not	ecx
		add	ecx, 6
		pop	edi
		cmp	ecx, 100h
		jbe	short loc_42E9E9
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------


loc_42E9E9:				; CODE XREF: ___:0042E9E0j
		push	edx
		lea	eax, [esp+4]
		push	offset dword_445728
		push	eax
		nop
		call	near ptr 77C3F931h
		mov	ecx, [esp+114h]
		lea	edx, [esp+0Ch]
		push	ecx
		push	32h
		push	edx
		call	sub_42D1A0
		add	esp, 18h
		neg	eax
		sbb	eax, eax
		neg	eax
		add	esp, 100h
		retn
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42EA40	proc near		; CODE XREF: sub_401D52j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+18h]
		test	eax, eax
		jnz	short loc_42EA79
		push	edi
		push	esi
		push	32h
		push	offset dword_445734
		call	sub_42D1A0
		mov	eax, [esi+8]
		add	esp, 0Ch
		push	eax
		call	sub_436F06
; ---------------------------------------------------------------------------
		mov	ecx, [esi+14h]
		mov	edi, dword_50FAC4
		push	ecx
		call	edi
		push	esi
		call	edi
		add	esp, 8
		pop	edi


loc_42EA79:				; CODE XREF: sub_42EA40+Aj
		pop	esi
		retn
sub_42EA40	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EA90:				; CODE XREF: ___:0040219Ej
		push	edi
		mov	edi, [esp+8]
		test	edi, edi
		jnz	short loc_42EAA0
		mov	eax, 16h
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_42EAA0:				; CODE XREF: ___:0042EA97j
		push	1Ch
		nop
		call	near ptr 77C2C407h
		add	esp, 4
		test	eax, eax
		jnz	short loc_42EAB6
		mov	eax, 0Ch
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_42EAB6:				; CODE XREF: ___:0042EAADj
		mov	ecx, 1
		mov	dword ptr [eax+8], 0
		mov	dword ptr [eax+0Ch], 0
		mov	dword ptr [eax+10h], 0
		mov	[eax+14h], ecx
		mov	[eax+18h], ecx
		mov	dword ptr [eax], 0C4C0FFEEh
		mov	[edi], eax
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EB10:				; CODE XREF: ___:00401514j
		push	esi
		mov	esi, [esp+8]
		push	esi
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		jz	short loc_42EB29
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42EB29:				; CODE XREF: ___:0042EB20j
		mov	eax, [esi]
		mov	dword ptr [eax], 0
		mov	ecx, [esi]
		push	ecx
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4
		mov	dword ptr [esi], 0
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EB60:				; CODE XREF: ___:004012D5j
		push	esi
		mov	esi, [esp+8]
		push	esi
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		mov	eax, [esp+0Ch]
		jnz	short loc_42EB85
		test	eax, eax
		jz	short loc_42EB85
		mov	ecx, [esi]
		pop	esi
		mov	edx, [ecx+0Ch]
		mov	[eax], edx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_42EB85:				; CODE XREF: ___:0042EB74j
					; ___:0042EB78j
		mov	dword ptr [eax], 1
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EBB0:				; CODE XREF: ___:004013ACj
		push	esi
		mov	esi, [esp+8]
		push	esi
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		jz	short loc_42EBC9
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42EBC9:				; CODE XREF: ___:0042EBC0j
		mov	eax, [esp+0Ch]
		test	eax, eax
		jz	short loc_42EBDD
		cmp	eax, 1
		jz	short loc_42EBDD
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42EBDD:				; CODE XREF: ___:0042EBCFj
					; ___:0042EBD4j
		mov	ecx, [esi]
		pop	esi
		mov	[ecx+0Ch], eax
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EC00:				; CODE XREF: ___:0040150Fj
		mov	eax, 28h
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EC20:				; CODE XREF: ___:00401825j
		mov	eax, 28h
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EC40:				; CODE XREF: ___:00401348j
		push	esi
		mov	esi, [esp+8]
		push	esi
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		jz	short loc_42EC59
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42EC59:				; CODE XREF: ___:0042EC50j
		mov	eax, [esi]
		mov	edx, [esp+0Ch]
		pop	esi
		mov	ecx, [eax+8]
		xor	eax, eax
		mov	[edx], ecx
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EC80:				; CODE XREF: ___:004021E4j
		push	esi
		mov	esi, [esp+8]
		push	esi
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		jz	short loc_42EC99
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42EC99:				; CODE XREF: ___:0042EC90j
		mov	eax, [esi]
		mov	ecx, [esp+0Ch]
		pop	esi
		mov	[eax+8], ecx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42ECC0:				; CODE XREF: ___:004019A1j
		mov	eax, [esp+4]
		mov	ecx, [eax]
		mov	eax, [esp+8]
		mov	edx, [ecx+18h]
		mov	[eax], edx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42ECF0:				; CODE XREF: ___:0040199Cj
		mov	eax, [esp+8]
		sub	eax, 0
		jz	short loc_42ED12
		dec	eax
		jz	short loc_42ED02
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------


loc_42ED02:				; CODE XREF: ___:0042ECFAj
		mov	eax, [esp+4]
		mov	ecx, [eax]
		xor	eax, eax
		mov	dword ptr [ecx+18h], 1
		retn
; ---------------------------------------------------------------------------


loc_42ED12:				; CODE XREF: ___:0042ECF7j
		mov	eax, 30h
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42ED30:				; CODE XREF: ___:00401C08j
		push	ebx
		mov	ebx, [esp+8]
		push	esi
		push	edi
		test	ebx, ebx
		jz	loc_42EDCB
		mov	edi, [esp+18h]
		test	edi, edi
		jz	loc_42EDCB
		push	18h
		push	1
		nop
		call	near ptr 77C2C0C3h
		mov	esi, eax
		add	esp, 8
		test	esi, esi
		jz	short loc_42EDC2
		mov	eax, [esp+14h]
		test	eax, eax
		jz	short loc_42ED70
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_42ED70
		mov	eax, [eax]
		jmp	short loc_42ED72
; ---------------------------------------------------------------------------


loc_42ED70:				; CODE XREF: ___:0042ED64j
					; ___:0042ED6Aj
		xor	eax, eax


loc_42ED72:				; CODE XREF: ___:0042ED6Ej
		mov	[esi+4], edi
		mov	[esi], edi
		lea	edi, [esi+10h]
		push	0
		push	eax
		push	edi
		mov	[esi+0Ch], eax
		mov	dword ptr [esi+8], 0
		call	sub_401C76
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42EDB8
		push	eax
		mov	eax, [esi+0Ch]
		lea	ecx, [esi+14h]
		push	eax
		push	ecx
		call	sub_401C76
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_42EDAF
		mov	[ebx], esi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42EDAF:				; CODE XREF: ___:0042EDA7j
		push	edi
		call	sub_401686
		add	esp, 4


loc_42EDB8:				; CODE XREF: ___:0042ED92j
		push	esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4


loc_42EDC2:				; CODE XREF: ___:0042ED5Cj
		pop	edi
		pop	esi
		mov	eax, 0Ch
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42EDCB:				; CODE XREF: ___:0042ED39j
					; ___:0042ED45j
		pop	edi
		pop	esi
		mov	eax, 16h
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EE10:				; CODE XREF: ___:004021E9j
		push	ebx
		push	ebp
		mov	ebp, [esp+0Ch]
		push	esi
		test	ebp, ebp
		push	edi
		jz	short loc_42EE78
		mov	esi, [ebp+0]
		test	esi, esi
		jz	short loc_42EE78
		lea	ebx, [esi+10h]
		mov	dword ptr [ebp+0], 0
		push	ebx
		call	sub_401686
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jnz	short loc_42EE6E
		lea	eax, [esi+14h]
		push	eax
		call	sub_401686
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jnz	short loc_42EE5F
		push	esi
		call	near ptr 77C2C21Bh
		nop
		add	esp, 4
		xor	eax, eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42EE5F:				; CODE XREF: ___:0042EE4Cj
		mov	ecx, [esi+0Ch]
		push	0
		push	ecx
		push	ebx
		call	sub_401C76
		add	esp, 0Ch


loc_42EE6E:				; CODE XREF: ___:0042EE3Aj
		mov	eax, edi
		mov	[ebp+0], esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42EE78:				; CODE XREF: ___:0042EE1Aj
					; ___:0042EE21j
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 16h
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EEB0:				; CODE XREF: ___:00401799j
		mov	eax, [esp+4]
		push	esi
		test	eax, eax
		jz	loc_42EF64
		mov	esi, [eax]
		test	esi, esi
		jz	loc_42EF64
		push	ebp
		lea	ebp, [esi+8]
		push	edi
		push	esi
		mov	edi, [ebp+0]
		nop
		call	near ptr 276074Fh
		test	eax, eax
		jnz	short loc_42EEF7
		mov	eax, [esi+4]
		cmp	eax, 1
		mov	[esi], eax
		jbe	short loc_42EF44
		dec	eax
		push	eax
		lea	eax, [esi+edi*4+10h]
		push	eax
		call	sub_40204A
		add	esp, 8
		mov	esi, eax
		jmp	short loc_42EF40
; ---------------------------------------------------------------------------


loc_42EEF7:				; CODE XREF: ___:0042EED8j
		push	ebx
		call	sub_4012E4
; ---------------------------------------------------------------------------
		mov	ecx, [eax+34h]
		mov	ebx, 1
		cmp	ecx, ebx
		jnz	short loc_42EF1B
		lea	ecx, [esp+14h]
		push	ecx
		push	ebx
		call	sub_40140B
; ---------------------------------------------------------------------------
		add	esp, 8
		test	eax, eax
		jz	short loc_42EF1D


loc_42EF1B:				; CODE XREF: ___:0042EF07j
		xor	ebx, ebx


loc_42EF1D:				; CODE XREF: ___:0042EF19j
		lea	edx, [esi+edi*4+10h]
		push	edx
		call	sub_401041
		add	esp, 4
		mov	esi, eax
		test	ebx, ebx
		pop	ebx
		jz	short loc_42EF40
		mov	eax, [esp+10h]
		push	0
		push	eax
		call	sub_40140B
; ---------------------------------------------------------------------------
		add	esp, 8


loc_42EF40:				; CODE XREF: ___:0042EEF5j
					; ___:0042EF2Fj
		test	esi, esi
		jnz	short loc_42EF5E


loc_42EF44:				; CODE XREF: ___:0042EEE2j
		mov	ecx, 1
		push	edi
		sub	ecx, edi
		push	ecx
		push	ebp
		call	dword_50E3EC
		xor	edx, edx
		cmp	edi, eax
		setnz	dl
		dec	edx
		mov	esi, edx


loc_42EF5E:				; CODE XREF: ___:0042EF42j
		pop	edi
		mov	eax, esi
		pop	ebp
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42EF64:				; CODE XREF: ___:0042EEB7j
					; ___:0042EEC1j
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EFA0:				; CODE XREF: ___:00401F50j
		push	esi
		push	4
		push	1
		xor	esi, esi
		nop
		call	near ptr 77C2C0C3h
		add	esp, 8
		test	eax, eax
		jnz	short loc_42EFC3
		mov	edx, [esp+8]
		mov	ecx, 0Ch
		pop	esi
		mov	[edx], eax
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_42EFC3:				; CODE XREF: ___:0042EFB2j
		mov	ecx, [esp+8]
		mov	dword ptr [eax], 0
		mov	[ecx], eax
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42EFF0:				; CODE XREF: ___:00401A73j
		mov	ecx, [esp+4]
		push	esi
		xor	esi, esi
		test	ecx, ecx
		jz	short loc_42F011
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_42F011
		push	eax
		mov	[ecx], esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42F011:				; CODE XREF: ___:0042EFF9j
					; ___:0042EFFFj
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42F030:				; CODE XREF: ___:0040127Bj
		mov	eax, [esp+4]
		test	eax, eax
		jz	short loc_42F04D
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_42F04D
		mov	ecx, [esp+8]
		test	ecx, ecx
		jz	short loc_42F04D
		mov	eax, [eax]
		mov	[ecx], eax
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_42F04D:				; CODE XREF: ___:0042F036j
					; ___:0042F03Cj ...
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42F070:				; CODE XREF: ___:0040162Cj
		mov	eax, [esp+4]
		test	eax, eax
		jz	short loc_42F09A
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_42F09A
		mov	eax, [esp+8]
		cmp	eax, 1
		jz	short loc_42F08E
		test	eax, eax
		jnz	short loc_42F09A
		mov	[ecx], eax
		retn
; ---------------------------------------------------------------------------


loc_42F08E:				; CODE XREF: ___:0042F085j
		mov	eax, 28h
		mov	dword ptr [ecx], 0
		retn
; ---------------------------------------------------------------------------


loc_42F09A:				; CODE XREF: ___:0042F076j
					; ___:0042F07Cj ...
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_42F0B0	proc near		; CODE XREF: sub_40140Bj
		push	esi
		push	edi
		call	sub_4012E4
sub_42F0B0	endp

; ---------------------------------------------------------------------------
		db 8Bh
		dd 74F685F0h, 247C8B7Bh, 74FF850Ch, 1FF8305h, 8D536E75h
		dd 0E8532C5Eh, 0FFFD3151h, 1824448Bh, 8504C483h, 8B0574C0h
		dd 889304Eh, 7E89FF85h,	8B3E7530h, 0C0853446h, 568B3775h
		dd 90525738h, 3312E3E8h, 75C08502h, 38468B28h, 30C46C7h
		dd 50000000h, 13046C7h,	90000000h, 331465E8h, 0A4E85302h
		dd 6AFFFD1Fh, 2CAEE802h, 0C483FFFDh, 94E85308h,	83FFFD1Fh
		dd 0C03304C4h, 0C35E5F5Bh, 16B85Fh, 0C35E0000h,	0Ch dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------


loc_42F170:				; CODE XREF: ___:0040223Ej
		push	ebx
		push	esi
		call	sub_4012E4
; ---------------------------------------------------------------------------
		db 8Bh
		dd 74F685F0h, 245C8B7Bh, 1FB830Ch, 0DB850474h, 8D576E75h
		dd 0E8572C7Eh, 0FFFD3091h, 1824448Bh, 8504C483h, 8B0574C0h
		dd 889344Eh, 8930468Bh,	0C085345Eh, 0DB853B75h,	568B3775h
		dd 90525338h, 331223E8h, 75C08502h, 38468B28h, 30C46C7h
		dd 50000000h, 13046C7h,	90000000h, 3313A5E8h, 0E4E85702h
		dd 6AFFFD1Eh, 2BEEE802h, 0C483FFFDh, 0D4E85708h, 83FFFD1Eh
		dd 0C03304C4h, 0C35B5E5Fh, 16B85Eh, 0C35B0000h,	0Ch dup(0CCCCCCCCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_42F230	proc near		; CODE XREF: sub_401CEEj
		push	esi
		push	edi
		call	sub_4012E4
sub_42F230	endp

; ---------------------------------------------------------------------------
		db 8Bh
		dd 2C7E8DF0h, 2FE3E857h, 0C483FFFDh, 74F68504h,	307E8334h
		dd 8B2E7401h, 6A3846h, 85E89050h, 85023311h, 571E75C0h
		dd 30C46C7h, 0C7000000h, 13046h, 50E80000h, 6AFFFD1Eh
		dd 2B5AE802h, 0C483FFFDh, 40E85708h, 83FFFD1Eh,	5E5F04C4h
		dd 909090C3h, 90909090h, 8 dup(0CCCCCCCCh)
; ---------------------------------------------------------------------------


loc_42F2B0:				; CODE XREF: ___:00401D25j
		sub	esp, 2D0h
		push	esi
		mov	esi, [esp+2D8h]
		push	0
		push	esi
		call	sub_401758
		add	esp, 8
		mov	[esp+4], eax
		test	eax, eax
		jnz	loc_42F3E9
		call	sub_4012E4
; ---------------------------------------------------------------------------
		test	eax, eax
		jnz	short loc_42F2EB
		mov	eax, 0Ch
		pop	esi
		add	esp, 2D0h
		retn
; ---------------------------------------------------------------------------


loc_42F2EB:				; CODE XREF: ___:0042F2DCj
		push	ebx
		push	ebp
		push	edi
		push	eax
		push	esi
		call	sub_401A50
		lea	ebx, [esi+2Ch]
		mov	edi, eax
		push	ebx
		call	sub_402225
		mov	eax, [esi+34h]
		add	esp, 0Ch
		test	eax, eax
		mov	ebp, 3
		jnz	loc_42F3C2
		mov	eax, [esi+30h]
		test	eax, eax
		jnz	loc_42F3C2
		cmp	[esi+0Ch], ebp
		jge	loc_42F3D5
		test	edi, edi
		jz	short loc_42F354
		push	ebx
		mov	[esi+0Ch], ebp
		mov	dword ptr [esi+30h], 1
		call	sub_4010C3
		push	2
		call	sub_401DD4
; ---------------------------------------------------------------------------
		mov	eax, [esp+18h]
		add	esp, 8
		pop	edi
		pop	ebp
		pop	ebx
		pop	esi
		add	esp, 2D0h
		retn
; ---------------------------------------------------------------------------


loc_42F354:				; CODE XREF: ___:0042F329j
		mov	edi, [esi+4]
		push	edi
		nop
		call	near ptr 2750960h
		push	0
		push	edi
		call	near ptr 27603E0h
		nop
		cmp	eax, 102h
		jnz	short loc_42F3E2
		lea	eax, [esp+14h]
		mov	[esi+0Ch], ebp
		push	eax
		push	edi
		mov	dword ptr [esi+30h], 1
		mov	dword ptr [esp+1Ch], 10001h
		nop
		call	near ptr 2750B33h
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+0CCh], offset loc_42F460
		push	ecx
		push	edi
		nop
		call	near ptr 2750D03h
		push	ebx
		call	sub_4010C3
		add	esp, 4
		push	edi
		nop
		call	near ptr 2760000h
		mov	eax, [esp+10h]
		pop	edi
		pop	ebp
		pop	ebx
		pop	esi
		add	esp, 2D0h
		retn
; ---------------------------------------------------------------------------


loc_42F3C2:				; CODE XREF: ___:0042F30Dj
					; ___:0042F318j
		cmp	[esi+0Ch], ebp
		jge	short loc_42F3D5
		mov	edx, [esi+38h]
		push	edx
		call	near ptr 2760232h
		nop
		test	eax, eax
		jnz	short loc_42F3D9


loc_42F3D5:				; CODE XREF: ___:0042F321j
					; ___:0042F3C5j
		mov	[esp+10h], ebp


loc_42F3D9:				; CODE XREF: ___:0042F3D3j
		push	ebx
		call	sub_4010C3
		add	esp, 4


loc_42F3E2:				; CODE XREF: ___:0042F36Cj
		mov	eax, [esp+10h]
		pop	edi
		pop	ebp
		pop	ebx


loc_42F3E9:				; CODE XREF: ___:0042F2CFj
		pop	esi
		add	esp, 2D0h
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 60h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42F460:				; DATA XREF: ___:0042F390o
		push	2
		call	sub_401DD4
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_42F480	proc near		; CODE XREF: sub_401122j
		mov	eax, dword_50E3DC
		push	esi
		push	eax
		call	sub_401190
sub_42F480	endp

; ---------------------------------------------------------------------------
		mov	esi, eax
		add	esp, 4
		test	esi, esi
		jz	short loc_42F4BE
		mov	eax, [esp+8]
		test	eax, eax
		jz	short loc_42F4AC
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_42F4AC
		mov	ecx, [esi+4]
		push	ecx
		call	eax
		add	esp, 4


loc_42F4AC:				; CODE XREF: ___:0042F49Bj
					; ___:0042F4A1j
		mov	edx, [esi+8]
		mov	eax, dword_50E3DC
		push	edx
		push	eax
		call	sub_4020DB
; ---------------------------------------------------------------------------
		add	esp, 8


loc_42F4BE:				; CODE XREF: ___:0042F493j
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_42F4F0	proc near		; CODE XREF: sub_401659j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_8]
		push	esi
		mov	esi, [esp+4+arg_0]
		mov	[esi], eax
		mov	[esi+4], ecx
		mov	edx, dword_50E3DC
		push	edx
		call	sub_401190
sub_42F4F0	endp

; ---------------------------------------------------------------------------
		mov	[esi+8], eax
		mov	eax, dword_50E3DC
		push	esi
		push	eax
		call	sub_4020DB
; ---------------------------------------------------------------------------
		add	esp, 0Ch
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42F540	proc near		; CODE XREF: sub_401B4Fj

arg_0		= dword	ptr  4

		push	esi
		push	offset dword_50E920
		xor	esi, esi
		call	near ptr 7C901005h
		nop
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_42F574
		push	esi
		push	ecx
		call	sub_401541
		add	esp, 8
		mov	esi, eax
		push	offset dword_50E920
		nop
		call	near ptr 7C9010EDh
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42F574:				; CODE XREF: sub_42F540+17j
		test	eax, eax
		jnz	short loc_42F57D
		mov	esi, 16h


loc_42F57D:				; CODE XREF: sub_42F540+36j
		push	offset dword_50E920
		nop
		call	near ptr 7C9010EDh
		mov	eax, esi
		pop	esi
		retn
sub_42F540	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42F5B0:				; CODE XREF: ___:004020FEj
		push	esi
		push	4
		push	1
		xor	esi, esi
		call	near ptr 77C2C0C3h
		nop
		add	esp, 8
		test	eax, eax
		jnz	short loc_42F5D3
		mov	edx, [esp+8]
		mov	ecx, 0Ch
		pop	esi
		mov	[edx], eax
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_42F5D3:				; CODE XREF: ___:0042F5C2j
		mov	ecx, [esp+8]
		mov	[ecx], eax
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42F5F0:				; CODE XREF: ___:004021D0j
		push	esi
		mov	esi, [esp+8]
		test	esi, esi
		jz	short loc_42F613
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_42F613
		push	eax
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4
		mov	dword ptr [esi], 0
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42F613:				; CODE XREF: ___:0042F5F7j
					; ___:0042F5FDj
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42F630:				; CODE XREF: ___:00401005j
		mov	eax, [esp+4]
		test	eax, eax
		jz	short loc_42F64D
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_42F64D
		mov	ecx, [esp+8]
		test	ecx, ecx
		jz	short loc_42F64D
		mov	eax, [eax]
		mov	[ecx], eax
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_42F64D:				; CODE XREF: ___:0042F636j
					; ___:0042F63Cj ...
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42F670:				; CODE XREF: ___:004012ADj
		mov	eax, [esp+4]
		test	eax, eax
		jz	short loc_42F69A
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_42F69A
		mov	eax, [esp+8]
		cmp	eax, 1
		jz	short loc_42F68E
		test	eax, eax
		jnz	short loc_42F69A
		mov	[ecx], eax
		retn
; ---------------------------------------------------------------------------


loc_42F68E:				; CODE XREF: ___:0042F685j
		mov	eax, 28h
		mov	dword ptr [ecx], 0
		retn
; ---------------------------------------------------------------------------


loc_42F69A:				; CODE XREF: ___:0042F676j
					; ___:0042F67Cj ...
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42F6B0	proc near		; CODE XREF: sub_401541j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		xor	edi, edi
		xor	esi, esi
		cmp	eax, edi
		jnz	short loc_42F6C6
		pop	edi
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42F6C6:				; CODE XREF: sub_42F6B0+Cj
		mov	eax, [esp+8+arg_4]
		push	ebx
		cmp	eax, edi
		push	ebp
		jz	short loc_42F6ED
		mov	eax, [eax]
		cmp	eax, edi
		jz	short loc_42F6ED
		cmp	dword ptr [eax], 1
		jnz	short loc_42F6ED
		mov	edx, [esp+10h+arg_0]
		mov	edi, 28h
		pop	ebp
		mov	eax, edi
		pop	ebx
		mov	[edx], esi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42F6ED:				; CODE XREF: sub_42F6B0+1Ej
					; sub_42F6B0+24j ...
		push	20h
		push	1
		nop
		call	near ptr 77C2C0C3h
		mov	esi, eax
		add	esp, 8
		cmp	esi, edi
		jnz	short loc_42F712
		mov	edx, [esp+10h+arg_0]
		mov	edi, 0Ch
		pop	ebp
		mov	eax, edi
		pop	ebx
		mov	[edx], esi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42F712:				; CODE XREF: sub_42F6B0+4Ej
		lea	ebp, [esi+10h]
		push	1
		push	edi
		push	ebp
		mov	[esi], edi
		mov	[esi+8], edi
		mov	[esi+4], edi
		call	sub_401C76
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_42F737
		nop
		call	near ptr 77C1F2BCh
		mov	edi, [eax]
		jmp	short loc_42F77B
; ---------------------------------------------------------------------------


loc_42F737:				; CODE XREF: sub_42F6B0+7Bj
		lea	ebx, [esi+0Ch]
		push	0
		push	0
		push	ebx
		call	sub_401C76
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_42F755
		nop
		call	near ptr 77C1F2BCh
		mov	edi, [eax]
		jmp	short loc_42F772
; ---------------------------------------------------------------------------


loc_42F755:				; CODE XREF: sub_42F6B0+99j
		lea	eax, [esi+14h]
		push	0
		push	eax
		call	sub_402199
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jz	short loc_42F7DF
		push	ebx
		call	sub_401686
		add	esp, 4


loc_42F772:				; CODE XREF: sub_42F6B0+A3j
		push	ebp
		call	sub_401686
		add	esp, 4


loc_42F77B:				; CODE XREF: sub_42F6B0+85j
		push	esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4
		xor	esi, esi
		test	edi, edi
		jnz	short loc_42F7D2


loc_42F78B:				; CODE XREF: sub_42F6B0+131j
		push	offset dword_50E9A0
		nop
		call	near ptr 7C901005h
		mov	dword ptr [esi+18h], 0
		mov	ecx, dword_50E3E4
		mov	[esi+1Ch], ecx
		mov	eax, dword_50E3E4
		test	eax, eax
		jz	short loc_42F7B2
		mov	[eax+18h], esi


loc_42F7B2:				; CODE XREF: sub_42F6B0+FDj
		mov	eax, dword_50E3E0
		mov	dword_50E3E4, esi
		test	eax, eax
		jnz	short loc_42F7C7
		mov	dword_50E3E0, esi


loc_42F7C7:				; CODE XREF: sub_42F6B0+10Fj
		push	offset dword_50E9A0
		nop
		call	near ptr 7C9010EDh


loc_42F7D2:				; CODE XREF: sub_42F6B0+D9j
		mov	edx, [esp+10h+arg_0]
		pop	ebp
		mov	eax, edi
		pop	ebx
		mov	[edx], esi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_42F7DF:				; CODE XREF: sub_42F6B0+B7j
		xor	edi, edi
		jmp	short loc_42F78B
sub_42F6B0	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42F840	proc near		; CODE XREF: sub_401A91j

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+14h+arg_0]
		xor	esi, esi
		xor	ebp, ebp
		xor	ebx, ebx
		test	edi, edi
		mov	[esp+14h+var_4], ebp
		jz	loc_42F9EC
		mov	eax, [edi]
		test	eax, eax
		jz	loc_42F9EC
		cmp	eax, 0FFFFFFFFh
		jz	loc_42F9A3
		push	offset dword_50E9A0
		nop
		call	near ptr 7C901005h
		mov	esi, [edi]
		lea	ebx, [esi+10h]
		push	ebx
		call	sub_401041
		add	esp, 4
		test	eax, eax
		jz	short loc_42F899
		call	near ptr 77C1F2BCh
		nop
		mov	eax, [eax]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42F899:				; CODE XREF: sub_42F840+49j
		lea	ebp, [esi+14h]
		push	ebp
		call	sub_40177B
		add	esp, 4
		mov	[esp+14h+arg_0], eax
		test	eax, eax
		jz	short loc_42F8C0
		push	ebx
		call	sub_40103C
		mov	eax, [esp+18h+arg_0]
		add	esp, 4
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42F8C0:				; CODE XREF: sub_42F840+6Bj
		mov	eax, [esi]
		mov	ecx, [esi+4]
		cmp	eax, ecx
		jle	short loc_42F8F9
		push	ebx
		call	sub_40103C
		add	esp, 4
		test	eax, eax
		jz	short loc_42F8E2
		nop
		call	near ptr 77C1F2BCh
		mov	ecx, [eax]
		mov	[esp+14h+arg_0], ecx


loc_42F8E2:				; CODE XREF: sub_42F840+94j
		push	ebp
		call	sub_4010C3
		add	esp, 4
		mov	[esp+14h+var_4], eax
		mov	ebx, 10h
		jmp	loc_42F98E
; ---------------------------------------------------------------------------


loc_42F8F9:				; CODE XREF: sub_42F840+87j
		push	ebx
		mov	dword ptr [edi], 0
		call	sub_401686
		mov	edi, dword_50FA64
		add	esp, 4
		test	eax, eax
		jz	short loc_42F91A
		call	edi
		mov	edx, [eax]
		mov	[esp+14h+arg_0], edx


loc_42F91A:				; CODE XREF: sub_42F840+D0j
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_401686
		add	esp, 4
		test	eax, eax
		jz	short loc_42F932
		call	edi
		mov	ecx, [eax]
		mov	[esp+14h+var_4], ecx


loc_42F932:				; CODE XREF: sub_42F840+E8j
		push	ebp
		call	sub_4010C3
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jnz	short loc_42F94C
		push	ebp
		call	sub_40222F
		add	esp, 4
		mov	ebx, eax


loc_42F94C:				; CODE XREF: sub_42F840+FFj
		cmp	dword_50E3E0, esi
		jnz	short loc_42F95F
		mov	edx, [esi+18h]
		mov	dword_50E3E0, edx
		jmp	short loc_42F968
; ---------------------------------------------------------------------------


loc_42F95F:				; CODE XREF: sub_42F840+112j
		mov	eax, [esi+1Ch]
		mov	ecx, [esi+18h]
		mov	[eax+18h], ecx


loc_42F968:				; CODE XREF: sub_42F840+11Dj
		cmp	dword_50E3E4, esi
		jnz	short loc_42F97B
		mov	edx, [esi+1Ch]
		mov	dword_50E3E4, edx
		jmp	short loc_42F984
; ---------------------------------------------------------------------------


loc_42F97B:				; CODE XREF: sub_42F840+12Ej
		mov	eax, [esi+18h]
		mov	ecx, [esi+1Ch]
		mov	[eax+1Ch], ecx


loc_42F984:				; CODE XREF: sub_42F840+139j
		push	esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4


loc_42F98E:				; CODE XREF: sub_42F840+B4j
		push	offset dword_50E9A0
		nop
		call	near ptr 7C9010EDh
		mov	esi, [esp+14h+arg_0]
		mov	ebp, [esp+14h+var_4]
		jmp	short loc_42F9D2
; ---------------------------------------------------------------------------


loc_42F9A3:				; CODE XREF: sub_42F840+28j
		push	offset dword_50E920
		nop
		call	near ptr 7C901005h
		cmp	dword ptr [edi], 0FFFFFFFFh
		jnz	short loc_42F9BB
		mov	dword ptr [edi], 0
		jmp	short loc_42F9C7
; ---------------------------------------------------------------------------


loc_42F9BB:				; CODE XREF: sub_42F840+171j
		mov	[esp+14h+arg_0], 10h
		mov	esi, [esp+14h+arg_0]


loc_42F9C7:				; CODE XREF: sub_42F840+179j
		push	offset dword_50E920
		nop
		call	near ptr 7C9010EDh


loc_42F9D2:				; CODE XREF: sub_42F840+161j
		test	esi, esi
		jz	short loc_42F9DE
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42F9DE:				; CODE XREF: sub_42F840+194j
		test	ebp, ebp
		mov	eax, ebp
		jnz	short loc_42F9F1
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42F9EC:				; CODE XREF: sub_42F840+15j
					; sub_42F840+1Fj
		mov	eax, 16h


loc_42F9F1:				; CODE XREF: sub_42F840+1A2j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_42F840	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 70h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42FA70	proc near		; CODE XREF: sub_401203j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	0
		push	eax
		push	ecx
		call	sub_42FAA0
		add	esp, 0Ch
		retn
sub_42FA70	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42FAA0	proc near		; CODE XREF: sub_42FA70+Cp
					; sub_42FD70+19p

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
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
arg_4		= dword	ptr  8

		sub	esp, 20h
		push	esi
		mov	esi, [esp+24h+arg_0]
		test	esi, esi
		push	edi
		mov	[esp+28h+var_20], 0
		jz	loc_42FBA9
		mov	eax, [esi]
		test	eax, eax
		jz	loc_42FBA9
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_42FAE2
		push	esi
		call	sub_401B4F
		add	esp, 4
		mov	[esp+28h+var_20], eax
		test	eax, eax
		jz	short loc_42FAE2
		cmp	eax, 10h
		jnz	loc_42FBAE


loc_42FAE2:				; CODE XREF: sub_42FAA0+26j
					; sub_42FAA0+37j
		mov	esi, [esi]
		lea	edi, [esi+10h]
		push	edi
		call	sub_401041
		add	esp, 4
		test	eax, eax
		jz	short loc_42FB02
		nop
		call	near ptr 77C1F2BCh
		mov	eax, [eax]
		pop	edi
		pop	esi
		add	esp, 20h
		retn
; ---------------------------------------------------------------------------


loc_42FB02:				; CODE XREF: sub_42FAA0+52j
		mov	ecx, [esi]
		push	edi
		inc	ecx
		mov	[esi], ecx
		call	sub_40103C
		add	esp, 4
		test	eax, eax
		jz	short loc_42FB22
		nop
		call	near ptr 77C1F2BCh
		mov	eax, [eax]
		pop	edi
		pop	esi
		add	esp, 20h
		retn
; ---------------------------------------------------------------------------


loc_42FB22:				; CODE XREF: sub_42FAA0+72j
		mov	edi, [esp+28h+arg_4]
		lea	ecx, [esp+28h+var_10]
		push	ecx
		lea	edx, [esp+2Ch+var_1C]
		lea	eax, [esp+2Ch+var_20]
		push	offset loc_42FC10
		push	edx
		mov	[esp+34h+var_10], edi
		mov	[esp+34h+var_C], esi
		mov	[esp+34h+var_8], eax
		mov	[esp+34h+var_4], 0
		call	sub_401659
; ---------------------------------------------------------------------------
		dw 0E857h
		dd 0FFFD156Bh, 8910C483h, 85082444h, 8B2775C0h,	83342444h
		dd 56500CC6h, 0FD1D27E8h, 8C483FFh, 0E74C085h, 0F73EE890h
		dd 8B777Eh, 8244489h, 448B04EBh, 0C9330824h, 0C085016Ah
		dd 89C1940Fh, 0E828244Ch, 0FFFD1586h, 0C24448Bh, 5F04C483h
		dd 20C4835Eh
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------


loc_42FBA9:				; CODE XREF: sub_42FAA0+13j
					; sub_42FAA0+1Dj
		mov	eax, 16h


loc_42FBAE:				; CODE XREF: sub_42FAA0+3Cj
		pop	edi
		pop	esi
		add	esp, 20h
		retn
sub_42FAA0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_42FC10:				; DATA XREF: sub_42FAA0+93o
		push	ecx
		push	ebx
		push	ebp
		mov	ebp, [esp+10h]
		push	esi
		push	edi
		mov	esi, [ebp+4]
		mov	ebx, [ebp+8]
		mov	[esp+18h], ebx
		lea	edi, [esi+14h]
		push	edi
		call	sub_402225
		add	esp, 4
		test	eax, eax
		jz	short loc_42FC3B
		pop	edi
		pop	esi
		mov	[ebx], eax
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42FC3B:				; CODE XREF: ___:0042FC31j
		mov	ebx, [esi+8]
		test	ebx, ebx
		mov	[esp+10h], ebx
		jz	short loc_42FC4E
		lea	eax, [ebx-1]
		mov	[esi+8], eax
		jmp	short loc_42FCB7
; ---------------------------------------------------------------------------


loc_42FC4E:				; CODE XREF: ___:0042FC44j
		mov	ecx, [esi+4]
		inc	ecx
		mov	eax, ecx
		mov	[esi+4], ecx
		cmp	eax, 3FFFFFFFh
		jnz	short loc_42FCB7
		lea	ebx, [esi+10h]
		push	ebx
		call	sub_401041
		add	esp, 4
		test	eax, eax
		jz	short loc_42FC82
		call	near ptr 77C1F2BCh
		nop
		mov	edx, [esp+18h]
		mov	ecx, [eax]
		pop	edi
		pop	esi
		pop	ebp
		mov	[edx], ecx
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42FC82:				; CODE XREF: ___:0042FC6Cj
		mov	eax, [esi+4]
		mov	ecx, [esi]
		sub	ecx, eax
		push	ebx
		mov	[esi], ecx
		call	sub_40103C
		add	esp, 4
		test	eax, eax
		jz	short loc_42FCAC
		call	near ptr 77C1F2BCh
		nop
		mov	edx, [esp+18h]
		mov	ecx, [eax]
		pop	edi
		pop	esi
		pop	ebp
		mov	[edx], ecx
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42FCAC:				; CODE XREF: ___:0042FC96j
		mov	ebx, [esp+10h]
		mov	dword ptr [esi+4], 0


loc_42FCB7:				; CODE XREF: ___:0042FC4Cj
					; ___:0042FC5Cj
		push	edi
		call	sub_4010C3
		add	esp, 4
		test	eax, eax
		jz	short loc_42FCD0
		mov	ecx, [esp+18h]
		pop	edi
		pop	esi
		pop	ebp
		mov	[ecx], eax
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42FCD0:				; CODE XREF: ___:0042FCC2j
		cmp	ebx, 1
		jnz	short loc_42FCF9
		add	esi, 10h
		push	esi
		call	sub_40103C
		add	esp, 4
		test	eax, eax
		jz	short loc_42FCF9
		nop
		call	near ptr 77C1F2BCh
		mov	edx, [eax]
		mov	eax, [esp+18h]
		pop	edi
		pop	esi
		pop	ebp
		mov	[eax], edx
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_42FCF9:				; CODE XREF: ___:0042FCD3j
					; ___:0042FCE3j
		mov	ecx, [ebp+0]
		push	ecx
		call	sub_402225
		add	esp, 4
		test	eax, eax
		jz	short loc_42FD0F
		mov	edx, [esp+18h]
		mov	[edx], eax


loc_42FD0F:				; CODE XREF: ___:0042FD07j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42FD70	proc near		; CODE XREF: sub_4011E0j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		test	eax, eax
		jnz	short loc_42FD7E
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------


loc_42FD7E:				; CODE XREF: sub_42FD70+6j
		mov	ecx, [esp+arg_0]
		push	eax
		mov	eax, [esp+4+arg_4]
		push	eax
		push	ecx
		call	sub_42FAA0
		add	esp, 0Ch
		retn
sub_42FD70	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42FDB0	proc near		; CODE XREF: sub_401E51j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0
		push	eax
		call	sub_42FDD0
		add	esp, 8
		retn
sub_42FDB0	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42FDD0	proc near		; CODE XREF: sub_42FDB0+7p
					; sub_42FF30+7p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		push	edi
		test	eax, eax
		jz	loc_42FED4
		mov	esi, [eax]
		test	esi, esi
		jz	loc_42FED4
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_42FDF4
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42FDF4:				; CODE XREF: sub_42FDD0+1Cj
		lea	ebx, [esi+14h]
		push	ebx
		call	sub_402225
		add	esp, 4
		test	eax, eax
		jnz	loc_42FED9
		mov	ecx, [esi+8]
		mov	eax, [esi]
		test	ecx, ecx
		jz	short loc_42FE44
		test	eax, eax
		jnz	short loc_42FE22


loc_42FE15:				; CODE XREF: sub_42FDD0+77j
		push	ebx
		call	sub_4010C3
		add	esp, 4
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42FE22:				; CODE XREF: sub_42FDD0+43j
		mov	edx, [esp+0Ch+arg_4]
		test	edx, edx
		jz	short loc_42FE39
		mov	edi, eax
		mov	dword ptr [esi], 0
		add	ecx, edi
		mov	[esi+8], ecx
		jmp	short loc_42FEA6
; ---------------------------------------------------------------------------


loc_42FE39:				; CODE XREF: sub_42FDD0+58j
		inc	ecx
		mov	edi, 1
		mov	[esi+8], ecx
		jmp	short loc_42FEA3
; ---------------------------------------------------------------------------


loc_42FE44:				; CODE XREF: sub_42FDD0+3Fj
		cmp	eax, [esi+4]
		jle	short loc_42FE15
		lea	ecx, [esi+10h]
		push	ecx
		call	sub_401041
		add	esp, 4
		test	eax, eax
		jz	short loc_42FE70
		nop
		call	near ptr 77C1F2BCh
		mov	esi, [eax]
		push	ebx
		call	sub_4010C3
		add	esp, 4
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42FE70:				; CODE XREF: sub_42FDD0+87j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_42FE84
		mov	ecx, [esi]
		mov	dword ptr [esi+4], 0
		sub	ecx, eax
		mov	[esi], ecx


loc_42FE84:				; CODE XREF: sub_42FDD0+A5j
		mov	eax, [esp+0Ch+arg_4]
		test	eax, eax
		jz	short loc_42FE99
		mov	edi, [esi]
		mov	dword ptr [esi], 0
		mov	[esi+8], edi
		jmp	short loc_42FEA6
; ---------------------------------------------------------------------------


loc_42FE99:				; CODE XREF: sub_42FDD0+BAj
		mov	eax, [esi]
		mov	edi, 1
		mov	[esi+8], edi


loc_42FEA3:				; CODE XREF: sub_42FDD0+72j
		dec	eax
		mov	[esi], eax


loc_42FEA6:				; CODE XREF: sub_42FDD0+67j
					; sub_42FDD0+C7j
		push	ebx
		call	sub_4010C3
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jnz	short loc_42FECE
		add	esi, 0Ch
		push	edi
		push	esi
		call	sub_40204A
		add	esp, 8
		test	eax, eax
		jz	short loc_42FECE
		nop
		call	near ptr 77C1F2BCh
		mov	ebx, [eax]


loc_42FECE:				; CODE XREF: sub_42FDD0+E3j
					; sub_42FDD0+F4j
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_42FED4:				; CODE XREF: sub_42FDD0+9j
					; sub_42FDD0+13j
		mov	eax, 16h


loc_42FED9:				; CODE XREF: sub_42FDD0+32j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_42FDD0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 50h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42FF30	proc near		; CODE XREF: sub_401604j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	1
		push	eax
		call	sub_42FDD0
		add	esp, 8
		retn
sub_42FF30	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_42FF50	proc near		; CODE XREF: sub_40123Aj

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

		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, 0Bh
		xor	ebx, ebx
		call	sub_401B13
		mov	esi, eax
		test	esi, esi
		jz	loc_430026
		mov	eax, [esi+28h]
		push	0Ch
		mov	[esp+14h+var_4], eax
		nop
		call	near ptr 77C2C407h
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jz	loc_430026
		mov	ecx, [esp+10h+arg_8]
		mov	edx, [esp+10h+arg_C]
		push	ebp
		mov	ebp, [esp+14h+arg_4]
		test	ebp, ebp
		mov	[ebx], esi
		mov	[ebx+4], ecx
		mov	[ebx+8], edx
		jz	short loc_42FFCE
		mov	eax, [ebp+0]
		test	eax, eax
		jz	short loc_42FFCE
		mov	edi, [eax+8]
		mov	eax, [eax+0Ch]
		mov	[esi+20h], eax
		mov	eax, [ebp+0]
		mov	ecx, [eax+10h]
		mov	[esp+14h+var_4], ecx
		mov	ecx, [eax+14h]
		test	ecx, ecx
		jnz	short loc_42FFD0
		call	sub_4012E4
; ---------------------------------------------------------------------------
		mov	edx, [eax+28h]
		mov	[esp+14h+var_4], edx
		jmp	short loc_42FFD0
; ---------------------------------------------------------------------------


loc_42FFCE:				; CODE XREF: sub_42FF50+4Dj
					; sub_42FF50+54j
		xor	edi, edi


loc_42FFD0:				; CODE XREF: sub_42FF50+6Ej
					; sub_42FF50+7Cj
		push	esi
		push	4
		push	ebx
		xor	eax, eax
		push	offset loc_401B95
		push	edi
		push	eax
		mov	[esi+0Ch], eax
		mov	[esi+80h], eax
		nop
		call	near ptr 77C3A3DBh
		mov	edi, eax
		add	esp, 18h
		test	edi, edi
		mov	[esi+4], edi
		jz	short loc_430019
		test	ebp, ebp
		jz	short loc_430012
		cmp	dword ptr [ebp+0], 0
		jz	short loc_430012
		mov	eax, [esp+14h+var_4]
		push	eax
		push	0
		push	esi
		call	sub_4020B3
		add	esp, 0Ch


loc_430012:				; CODE XREF: sub_42FF50+AAj
					; sub_42FF50+B0j
		push	edi
		call	near ptr 2760000h
		nop


loc_430019:				; CODE XREF: sub_42FF50+A6j
		neg	edi
		sbb	edi, edi
		pop	ebp
		and	edi, 0FFFFFFF5h
		add	edi, 0Bh
		jz	short loc_430059


loc_430026:				; CODE XREF: sub_42FF50+14j
					; sub_42FF50+30j
		push	esi
		call	sub_4017AD
		add	esp, 4
		xor	esi, esi
		test	ebx, ebx
		jz	short loc_43004C
		push	ebx
		nop
		call	near ptr 77C2C21Bh
		mov	ecx, [esp+14h+arg_0]
		add	esp, 4
		mov	eax, edi
		mov	[ecx], esi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_43004C:				; CODE XREF: sub_42FF50+E3j
		mov	edx, [esp+10h+arg_0]
		mov	eax, edi
		pop	edi
		mov	[edx], esi
		pop	esi
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_430059:				; CODE XREF: sub_42FF50+D4j
		mov	eax, [esp+10h+arg_0]
		mov	[eax], esi
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		retn
sub_42FF50	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4300C0:				; CODE XREF: ___:00401343j
		mov	ecx, [esp+8]
		mov	eax, 1
		cmp	ecx, 3		; switch 4 cases
		ja	short locret_4300F7 ; default
		jmp	off_4300FC[ecx*4] ; switch jump


loc_4300D5:				; DATA XREF: ___:off_4300FCo
		call	sub_401708	; jumptable 004300CE case 1
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4300DD:				; CODE XREF: ___:004300CEj
					; DATA XREF: ___:off_4300FCo
		call	sub_4017B2	; jumptable 004300CE case 2
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4300E5:				; CODE XREF: ___:004300CEj
					; DATA XREF: ___:off_4300FCo
		call	sub_4017C1	; jumptable 004300CE case 3
		retn	0Ch
; ---------------------------------------------------------------------------


loc_4300ED:				; CODE XREF: ___:004300CEj
					; DATA XREF: ___:off_4300FCo
		call	sub_4017C1	; jumptable 004300CE case 0
		call	sub_40161D

locret_4300F7:				; CODE XREF: ___:004300CCj
		retn	0Ch		; default
; ---------------------------------------------------------------------------
		align 4
off_4300FC	dd offset loc_4300ED	; DATA XREF: ___:004300CEr
		dd offset loc_4300D5	; jump table for switch	statement
		dd offset loc_4300DD
		dd offset loc_4300E5
		db 4 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_430130:				; CODE XREF: ___:004017B7j
		mov	eax, dword_50E3D8
		push	esi
		push	edi
		push	eax
		call	sub_401190
; ---------------------------------------------------------------------------
		db 8Bh,	7Ch, 24h
		dd 83F08B10h, 0F68504C4h, 0E8570A75h, 7780A1B7h, 4C48390h
		dd 7E89016Ah, 1C76E814h, 0C483FFFDh, 0C35E5F04h, 3 dup(90909090h)
		dd 4 dup(0CCCCCCCCh)

; =============== S U B	R O U T	I N E =======================================



sub_430180	proc near		; CODE XREF: sub_401758j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	offset dword_50E8E0
		xor	esi, esi
		call	near ptr 7C901005h
		nop
		mov	eax, [esp+4+arg_0]
		test	eax, eax
		jz	short loc_4301AB
		mov	eax, [eax+4]
		test	eax, eax
		jz	short loc_4301AB
		push	eax
		nop
		call	near ptr 27506D8h
		cmp	eax, 7FFFFFFFh
		jnz	short loc_4301B0


loc_4301AB:				; CODE XREF: sub_430180+14j
					; sub_430180+1Bj
		mov	esi, 3


loc_4301B0:				; CODE XREF: sub_430180+29j
		push	offset dword_50E8E0
		nop
		call	near ptr 7C9010EDh
		test	esi, esi
		jnz	short loc_4301CC
		mov	eax, [esp+4+arg_4]
		test	eax, eax
		mov	eax, 16h
		jnz	short loc_4301CE


loc_4301CC:				; CODE XREF: sub_430180+3Dj
		mov	eax, esi


loc_4301CE:				; CODE XREF: sub_430180+4Aj
		pop	esi
		retn
sub_430180	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4301F0:				; CODE XREF: ___:0040164Aj
		push	ebx
		push	esi
		mov	esi, [esp+0Ch]
		push	edi
		test	esi, esi
		jz	short loc_430241
		mov	edi, [esp+14h]
		test	edi, edi
		jz	short loc_430241
		mov	eax, [esi]
		xor	ebx, ebx
		test	eax, eax
		jnz	short loc_430221
		lea	eax, [esi+4]
		push	eax
		nop
		call	near ptr 2750620h
		test	eax, eax
		jnz	short loc_430227
		call	edi
		mov	dword ptr [esi], 1


loc_430221:				; CODE XREF: ___:00430209j
					; ___:0043022Aj
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_430227:				; CODE XREF: ___:00430217j
		cmp	dword ptr [esi], 0
		jnz	short loc_430221
		mov	edi, dword_50F8D0


loc_430232:				; CODE XREF: ___:00430239j
		push	0
		call	edi
		cmp	dword ptr [esi], 0
		jz	short loc_430232
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_430241:				; CODE XREF: ___:004301F9j
					; ___:00430201j
		pop	edi
		pop	esi
		mov	eax, 16h
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_430270	proc near		; CODE XREF: sub_4012E4j
		mov	eax, dword_50E3D8
		push	esi
		push	edi
		push	eax
		call	sub_401190
sub_430270	endp

; ---------------------------------------------------------------------------
		db 8Bh,	0F0h, 83h
		dd 0F68504C4h, 88E87675h, 8BFFFD18h, 74F685F0h,	7C7E8B5Bh
		dd 1B8h, 53F80B00h, 897C7E89h, 0E8902046h, 231087Eh, 0F8701D8Bh
		dd 26A0050h, 6A047E8Dh,	57006A00h, 0D3FF0689h, 22E89050h
		dd 50023409h, 9050D3FFh, 31FD33E8h, 5BC08502h, 0E8560E75h
		dd 0FFFD18E5h, 3304C483h, 0C35E5FC0h, 90510F8Bh, 3203EFE8h
		dd 28468902h, 0E3D8158Bh, 52560050h, 0FD1DE2E8h, 8C483FFh
		dd 5E5FC68Bh, 909090C3h, 3 dup(90909090h), 0Ch dup(0CCCCCCCCh)

; =============== S U B	R O U T	I N E =======================================



sub_430340	proc near		; CODE XREF: sub_401A50j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		cmp	eax, ecx
		jnz	short loc_43035E
		test	eax, eax
		jz	short loc_430358
		mov	eax, [eax]
		mov	edx, [ecx]
		cmp	eax, edx
		jnz	short loc_43035E


loc_430358:				; CODE XREF: sub_430340+Ej
		mov	eax, 1
		retn
; ---------------------------------------------------------------------------


loc_43035E:				; CODE XREF: sub_430340+Aj
					; sub_430340+16j
		xor	eax, eax
		retn
sub_430340	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_430380:				; CODE XREF: ___:00401FF0j
		mov	eax, [esp+4]
		test	eax, eax
		jge	short loc_43038E
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------


loc_43038E:				; CODE XREF: ___:00430386j
		mov	dword_50E3E8, eax
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4303B0:				; CODE XREF: ___:0040155Aj
		mov	eax, dword_50E3E8
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4303D0	proc near		; CODE XREF: sub_401B13j
		push	esi
		call	sub_401307
		mov	esi, eax
		test	esi, esi
		jnz	short loc_4303F2
		push	84h
		push	1
		nop
		call	near ptr 77C2C0C3h
		mov	esi, eax
		add	esp, 8
		test	esi, esi
		jz	short loc_430439


loc_4303F2:				; CODE XREF: sub_4303D0+Aj
		push	0
		push	0
		or	eax, 0FFFFFFFFh
		push	1
		push	0
		mov	dword ptr [esi+28h], 0
		mov	dword ptr [esi+20h], 0
		mov	dword ptr [esi+30h], 0
		mov	dword ptr [esi+34h], 1
		mov	[esi+2Ch], eax
		mov	[esi+24h], eax
		nop
		call	near ptr 2740801h
		test	eax, eax
		mov	[esi+38h], eax
		jnz	short loc_430439
		push	esi
		call	sub_401BBD
		add	esp, 4
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_430439:				; CODE XREF: sub_4303D0+20j
					; sub_4303D0+5Aj
		mov	eax, esi
		pop	esi
		retn
sub_4303D0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430460	proc near		; CODE XREF: sub_401307j
		push	esi
		push	offset dword_50E8E0
		nop
		call	near ptr 7C901005h
		mov	esi, dword_44573C
		cmp	esi, 1
		jz	short loc_430495
		mov	eax, [esi+8]
		push	offset dword_50E8E0
		mov	dword_44573C, eax
		mov	dword ptr [esi+8], 0
		nop
		call	near ptr 7C9010EDh
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_430495:				; CODE XREF: sub_430460+15j
		push	offset dword_50E8E0
		xor	esi, esi
		nop
		call	near ptr 7C9010EDh
		mov	eax, esi
		pop	esi
		retn
sub_430460	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4304D0	proc near		; CODE XREF: sub_401BBDj

arg_0		= dword	ptr  4

		push	edi
		push	offset dword_50E8E0
		call	near ptr 7C901005h
		nop
		mov	edx, [esp+4+arg_0]
		mov	ecx, 21h
		xor	eax, eax
		mov	edi, edx
		rep stosd
		mov	eax, dword_44573C
		push	offset dword_50E8E0
		mov	[edx+8], eax
		mov	dword_44573C, edx
		nop
		call	near ptr 7C9010EDh
		pop	edi
		retn
sub_4304D0	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_430520	proc near		; CODE XREF: sub_401640j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0FFFFFFFFh
		push	eax
		call	sub_430540
sub_430520	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_430540	proc near		; CODE XREF: sub_430520+7p
					; sub_430660+Ap

var_8		= dword	ptr -8
arg_0		= dword	ptr  4

		sub	esp, 8
		mov	eax, [esp+8+arg_0]
		push	esi
		push	edi
		mov	edi, 1
		mov	[esp+10h+var_8], eax
		call	sub_4012E4
sub_430540	endp

; ---------------------------------------------------------------------------
		mov	esi, eax
		test	esi, esi
		jz	short loc_430576
		mov	eax, [esi+30h]
		test	eax, eax
		jnz	short loc_43057E
		mov	eax, [esi+38h]
		test	eax, eax
		mov	[esp+0Ch], eax
		jz	short loc_43057E
		mov	edi, 2
		jmp	short loc_43057E
; ---------------------------------------------------------------------------


loc_430576:				; CODE XREF: ___:0043055Bj
		mov	dword ptr [esp+0Ch], 0


loc_43057E:				; CODE XREF: ___:00430562j
					; ___:0043056Dj ...
		mov	ecx, [esp+18h]
		lea	edx, [esp+8]
		push	ecx
		push	0
		push	edx
		push	edi
		call	near ptr 2740690h
		nop
		mov	ecx, eax
		sub	ecx, 0
		jz	short loc_430609
		dec	ecx
		jz	short loc_4305B4
		sub	eax, 102h
		pop	edi
		neg	eax
		sbb	eax, eax
		pop	esi
		and	eax, 0FFFFD8CAh
		add	eax, 274Ch
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_4305B4:				; CODE XREF: ___:00430599j
		mov	eax, [esp+0Ch]
		push	eax
		nop
		call	near ptr 276057Eh
		test	esi, esi
		jz	short loc_4305FE
		lea	edi, [esi+2Ch]
		push	edi
		call	sub_402225
		mov	ecx, [esi+0Ch]
		mov	eax, 3
		add	esp, 4
		cmp	ecx, eax
		jge	short loc_4305F5
		push	edi
		mov	[esi+0Ch], eax
		mov	dword ptr [esi+30h], 1
		call	sub_4010C3
		push	2
		call	sub_401DD4
; ---------------------------------------------------------------------------
		add	esp, 8


loc_4305F5:				; CODE XREF: ___:004305D9j
		push	edi
		call	sub_4010C3
		add	esp, 4


loc_4305FE:				; CODE XREF: ___:004305C1j
		pop	edi
		mov	eax, 16h
		pop	esi
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_430609:				; CODE XREF: ___:00430596j
		pop	edi
		xor	eax, eax
		pop	esi
		add	esp, 8
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_430660	proc near		; CODE XREF: sub_401D70j

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_430540
sub_430660	endp

; ---------------------------------------------------------------------------
		add	esp, 8
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430690	proc near		; CODE XREF: sub_401C03j

arg_0		= dword	ptr  4

		push	esi
		push	offset dword_50E940
		xor	esi, esi
		call	near ptr 7C901005h
		nop
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4306C4
		push	esi
		push	ecx
		call	sub_402199
		add	esp, 8
		mov	esi, eax
		push	offset dword_50E940
		nop
		call	near ptr 7C9010EDh
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4306C4:				; CODE XREF: sub_430690+17j
		test	eax, eax
		jnz	short loc_4306CD
		mov	esi, 16h


loc_4306CD:				; CODE XREF: sub_430690+36j
		push	offset dword_50E940
		nop
		call	near ptr 7C9010EDh
		mov	eax, esi
		pop	esi
		retn
sub_430690	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430700	proc near		; CODE XREF: sub_402199j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebp
		xor	ebp, ebp
		push	edi
		test	eax, eax
		jnz	short loc_430714
		pop	edi
		mov	eax, 16h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_430714:				; CODE XREF: sub_430700+Aj
		mov	edi, [esp+8+arg_4]
		test	edi, edi
		jz	short loc_43072F
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_43072F
		cmp	dword ptr [eax], 1
		jnz	short loc_43072F
		pop	edi
		mov	eax, 28h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_43072F:				; CODE XREF: sub_430700+1Aj
					; sub_430700+20j ...
		push	esi
		push	2Ch
		push	1
		call	near ptr 77C2C0C3h
		nop
		mov	esi, eax
		add	esp, 8
		test	esi, esi
		jnz	short loc_430754
		mov	edx, [esp+0Ch+arg_0]
		mov	ebp, 0Ch
		mov	eax, ebp
		mov	[edx], esi
		pop	esi
		pop	edi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_430754:				; CODE XREF: sub_430700+41j
		test	edi, edi
		mov	dword ptr [esi], 0FFFFFFFFh
		mov	dword ptr [esi+4], 0
		jz	short loc_430770
		mov	edi, [edi]
		test	edi, edi
		jz	short loc_430770
		mov	edi, [edi+4]
		jmp	short loc_430772
; ---------------------------------------------------------------------------


loc_430770:				; CODE XREF: sub_430700+63j
					; sub_430700+69j
		xor	edi, edi


loc_430772:				; CODE XREF: sub_430700+6Ej
		push	0
		lea	eax, [esi+10h]
		push	0
		push	eax
		mov	[esi+8], edi
		mov	dword ptr [esi+0Ch], 0
		call	sub_401C76
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4307AD
		push	esi
		mov	ebp, 0Bh
		nop
		call	near ptr 77C2C21Bh
		mov	edx, [esp+10h+arg_0]
		add	esp, 4
		xor	esi, esi
		mov	eax, ebp
		mov	[edx], esi
		pop	esi
		pop	edi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4307AD:				; CODE XREF: sub_430700+8Ej
		lea	ecx, [esi+14h]
		push	ecx
		nop
		call	near ptr 2770823h
		mov	edx, [esp+0Ch+arg_0]
		mov	eax, ebp
		mov	[edx], esi
		pop	esi
		pop	edi
		pop	ebp
		retn
sub_430700	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430810	proc near		; CODE XREF: sub_40222Fj

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		xor	esi, esi
		test	edi, edi
		jz	loc_4308F0
		mov	eax, [edi]
		test	eax, eax
		jz	loc_4308F0
		cmp	eax, 0FFFFFFFFh
		jz	loc_4308B5
		mov	[esp+8+arg_0], eax
		lea	eax, [esp+8+arg_0]
		push	eax
		call	sub_40177B
		mov	esi, eax
		add	esp, 4
		test	esi, esi
		jnz	loc_4308EB
		mov	ecx, [esp+8+arg_0]
		mov	eax, [ecx+4]
		cmp	eax, 1
		jnz	short loc_4308A7
		lea	ecx, [esp+8+arg_0]
		mov	[edi], esi
		push	ecx
		call	sub_4010C3
		mov	edx, [esp+0Ch+arg_0]
		mov	esi, eax
		add	esp, 4
		test	esi, esi
		jnz	short loc_4308A0
		add	edx, 10h
		push	edx
		call	sub_401686
		mov	eax, [esp+0Ch+arg_0]
		add	esp, 4
		add	eax, 14h
		push	eax
		call	near ptr 2770000h
		nop
		mov	ecx, [esp+8+arg_0]
		push	ecx
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4
		mov	eax, esi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4308A0:				; CODE XREF: sub_430810+61j
		mov	[edi], edx
		mov	eax, esi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4308A7:				; CODE XREF: sub_430810+48j
		dec	eax
		mov	esi, 10h
		mov	[ecx+4], eax
		mov	eax, esi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4308B5:				; CODE XREF: sub_430810+1Dj
		push	offset dword_50E940
		call	near ptr 7C901005h
		nop
		cmp	dword ptr [edi], 0FFFFFFFFh
		jnz	short loc_4308DB
		push	offset dword_50E940
		mov	dword ptr [edi], 0
		nop
		call	near ptr 7C9010EDh
		mov	eax, esi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4308DB:				; CODE XREF: sub_430810+B3j
		push	offset dword_50E940
		mov	esi, 10h
		nop
		call	near ptr 7C9010EDh


loc_4308EB:				; CODE XREF: sub_430810+38j
		mov	eax, esi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4308F0:				; CODE XREF: sub_430810+Aj
					; sub_430810+14j
		pop	edi
		mov	eax, 16h
		pop	esi
		retn
sub_430810	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 40h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430940	proc near		; CODE XREF: sub_401A0Fj

arg_0		= dword	ptr  4

		push	esi
		push	8
		push	1
		xor	esi, esi
		call	near ptr 77C2C0C3h
		nop
		add	esp, 8
		cmp	eax, esi
		jnz	short loc_430963
		mov	edx, [esp+4+arg_0]
		mov	ecx, 0Ch
		pop	esi
		mov	[edx], eax
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_430963:				; CODE XREF: sub_430940+12j
		mov	ecx, [esp+4+arg_0]
		mov	[eax], esi
		mov	[eax+4], esi
		mov	[ecx], eax
		mov	eax, esi
		pop	esi
		retn
sub_430940	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430990	proc near		; CODE XREF: sub_4010AAj

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		xor	esi, esi
		test	ecx, ecx
		jz	short loc_4309B1
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_4309B1
		push	eax
		mov	[ecx], esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4309B1:				; CODE XREF: sub_430990+9j
					; sub_430990+Fj
		mov	eax, 16h
		pop	esi
		retn
sub_430990	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4309D0:				; CODE XREF: ___:00401BA9j
		mov	eax, [esp+4]
		test	eax, eax
		jz	short loc_4309ED
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_4309ED
		mov	ecx, [esp+8]
		test	ecx, ecx
		jz	short loc_4309ED
		mov	eax, [eax]
		mov	[ecx], eax
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4309ED:				; CODE XREF: ___:004309D6j
					; ___:004309DCj ...
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_430A10:				; CODE XREF: ___:004018F7j
		mov	eax, [esp+4]
		test	eax, eax
		jz	short loc_430A3A
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_430A3A
		mov	eax, [esp+8]
		cmp	eax, 1
		jz	short loc_430A2E
		test	eax, eax
		jnz	short loc_430A3A
		mov	[ecx], eax
		retn
; ---------------------------------------------------------------------------


loc_430A2E:				; CODE XREF: ___:00430A25j
		mov	eax, 28h
		mov	dword ptr [ecx], 0
		retn
; ---------------------------------------------------------------------------


loc_430A3A:				; CODE XREF: ___:00430A16j
					; ___:00430A1Cj ...
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430A50	proc near		; CODE XREF: sub_40119Aj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		xor	eax, eax
		test	ecx, ecx
		jz	short loc_430A71
		mov	ecx, [ecx]
		test	ecx, ecx
		jz	short loc_430A71
		mov	edx, [esp+arg_4]
		test	edx, edx
		jl	short loc_430A71
		cmp	edx, 2
		jg	short loc_430A71
		mov	[ecx+4], edx
		retn
; ---------------------------------------------------------------------------


loc_430A71:				; CODE XREF: sub_430A50+8j
					; sub_430A50+Ej ...
		mov	eax, 16h
		retn
sub_430A50	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430A90	proc near		; CODE XREF: sub_4018C0j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		xor	eax, eax
		test	ecx, ecx
		jz	short loc_430AAE
		mov	ecx, [ecx]
		test	ecx, ecx
		jz	short loc_430AAE
		mov	edx, [esp+arg_4]
		test	edx, edx
		jz	short loc_430AAE
		mov	ecx, [ecx+4]
		mov	[edx], ecx
		retn
; ---------------------------------------------------------------------------


loc_430AAE:				; CODE XREF: sub_430A90+8j
					; sub_430A90+Ej ...
		mov	eax, 16h
		retn
sub_430A90	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430AD0	proc near		; CODE XREF: sub_402225j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		xor	edi, edi
		test	esi, esi
		jz	loc_430B87
		mov	eax, [esi]
		test	eax, eax
		jz	loc_430B87
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_430B01
		push	esi
		call	sub_401C03
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jz	short loc_430B01
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_430B01:				; CODE XREF: sub_430AD0+1Dj
					; sub_430AD0+2Cj
		mov	esi, [esi]
		push	esi
		call	near ptr 2750620h
		nop
		test	eax, eax
		jnz	short loc_430B2A


loc_430B0E:				; CODE XREF: sub_430AD0+A8j
		mov	ecx, [esi+8]
		mov	eax, 1
		test	ecx, ecx
		mov	[esi+4], eax
		jz	short loc_430B22
		call	sub_4012E4
; ---------------------------------------------------------------------------


loc_430B22:				; CODE XREF: sub_430AD0+4Bj
		mov	[esi+0Ch], eax
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_430B2A:				; CODE XREF: sub_430AD0+3Cj
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_430B6A
		call	sub_4012E4
; ---------------------------------------------------------------------------
		dw 8B50h
		dd 0E8500C46h, 0FFFD0F10h, 8508C483h, 562374C0h, 0FC01E890h
		dd 7E830232h, 0C750108h, 4004468Bh, 8B044689h, 0C35E5FC7h
		dd 24BFh, 5FC78B00h
; ---------------------------------------------------------------------------
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_430B6A:				; CODE XREF: sub_430AD0+5Fj
		lea	ecx, [esi+10h]
		push	ecx
		call	sub_430BC0
		add	esp, 4
		test	eax, eax
		jz	short loc_430B0E
		nop
		call	near ptr 77C1F2BCh
		mov	edi, [eax]
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_430B87:				; CODE XREF: sub_430AD0+Aj
					; sub_430AD0+14j
		pop	edi
		mov	eax, 16h
		pop	esi
		retn
sub_430AD0	endp

; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430BC0	proc near		; CODE XREF: sub_430AD0+9Ep

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_430BDA
		mov	eax, [eax]
		push	0FFFFFFFFh
		mov	ecx, [eax]
		push	ecx
		call	near ptr 27603E0h
		nop
		test	eax, eax
		jnz	short loc_430BDA
		retn
; ---------------------------------------------------------------------------


loc_430BDA:				; CODE XREF: sub_430BC0+6j
					; sub_430BC0+17j
		nop
		call	near ptr 77C1F2BCh
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh
		retn
sub_430BC0	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430C00	proc near		; CODE XREF: sub_401BC2j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebp
		push	esi
		mov	esi, [esp+8+arg_0]
		xor	ebp, ebp
		test	esi, esi
		jz	loc_430D98
		mov	eax, [esi]
		test	eax, eax
		jz	loc_430D98
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_430C31
		push	esi
		call	sub_401C03
		mov	ebp, eax
		add	esp, 4
		test	ebp, ebp
		jz	short loc_430C31
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_430C31:				; CODE XREF: sub_430C00+1Dj
					; sub_430C00+2Cj
		mov	esi, [esi]
		push	ebx
		push	edi
		push	esi
		call	near ptr 2750620h
		nop
		test	eax, eax
		jnz	short loc_430C62


loc_430C40:				; CODE XREF: sub_430C00+175j
		mov	ecx, [esi+8]
		mov	eax, 1
		test	ecx, ecx
		mov	[esi+4], eax
		jz	loc_430D8E
		call	sub_4012E4
; ---------------------------------------------------------------------------
		pop	edi
		mov	[esi+0Ch], eax
		pop	ebx
		mov	eax, ebp
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_430C62:				; CODE XREF: sub_430C00+3Ej
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_430CA6
		call	sub_4012E4
; ---------------------------------------------------------------------------
		dw 8B50h
		dd 0E8500C46h, 0FFFD0DD8h, 8508C483h, 562774C0h, 32FACAE8h
		dd 7E839002h, 0E750108h, 5F04468Bh, 46895B40h, 5EC58B04h
		dd 24BDC35Dh, 5F000000h, 5EC58B5Bh
; ---------------------------------------------------------------------------
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_430CA6:				; CODE XREF: sub_430C00+67j
		mov	eax, [esp+10h+arg_4]
		test	eax, eax
		jnz	short loc_430CBA
		mov	ebp, 16h
		pop	edi
		pop	ebx
		mov	eax, ebp
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_430CBA:				; CODE XREF: sub_430C00+ACj
		lea	edi, [esi+10h]
		push	eax
		push	edi
		call	sub_430E10
		add	esp, 8
		sub	eax, 0
		jz	loc_430D7A
		dec	eax
		jz	short loc_430D44
		dec	eax
		jz	short loc_430CE5
		call	near ptr 77C1F2BCh
		nop
		mov	ebp, [eax]
		pop	edi
		pop	ebx
		mov	eax, ebp
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_430CE5:				; CODE XREF: sub_430C00+D4j
		lea	ebx, [esi+14h]
		push	ebx
		call	near ptr 7C901005h
		nop
		push	edi
		mov	ebp, 274Ch
		call	sub_4010A5
		add	esp, 4
		cmp	eax, 0FFFFFFFFh
		push	esi
		jnz	short loc_430D17
		call	near ptr 276074Fh
		nop
		push	ebx
		nop
		call	near ptr 7C9010EDh
		pop	edi
		pop	ebx
		mov	eax, ebp
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_430D17:				; CODE XREF: sub_430C00+101j
		nop
		call	near ptr 276074Fh
		test	eax, eax
		jl	short loc_430D36
		push	edi
		call	sub_40103C
		add	esp, 4
		test	eax, eax
		jz	short loc_430D36
		call	near ptr 77C1F2BCh
		nop
		mov	ebp, [eax]


loc_430D36:				; CODE XREF: sub_430C00+11Fj
					; sub_430C00+12Cj
		push	ebx
		nop
		call	near ptr 7C9010EDh
		pop	edi
		pop	ebx
		mov	eax, ebp
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_430D44:				; CODE XREF: sub_430C00+D1j
		lea	ebx, [esi+14h]
		push	ebx
		nop
		call	near ptr 7C901005h
		push	edi
		call	sub_4010A5
		mov	edi, eax
		add	esp, 4
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_430D6A
		push	esi
		nop
		call	near ptr 276074Fh
		mov	ebp, 274Ch


loc_430D6A:				; CODE XREF: sub_430C00+15Cj
		push	ebx
		call	near ptr 7C9010EDh
		nop
		test	edi, edi
		jnz	short loc_430D91
		jmp	loc_430C40
; ---------------------------------------------------------------------------


loc_430D7A:				; CODE XREF: sub_430C00+CAj
		mov	ecx, [esi+8]
		mov	eax, 1
		test	ecx, ecx
		mov	[esi+4], eax
		jz	short loc_430D8E
		call	sub_4012E4
; ---------------------------------------------------------------------------


loc_430D8E:				; CODE XREF: sub_430C00+4Dj
					; sub_430C00+187j
		mov	[esi+0Ch], eax


loc_430D91:				; CODE XREF: sub_430C00+173j
		pop	edi
		pop	ebx
		mov	eax, ebp
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_430D98:				; CODE XREF: sub_430C00+Aj
					; sub_430C00+14j
		pop	esi
		mov	eax, 16h
		pop	ebp
		retn
sub_430C00	endp

; ---------------------------------------------------------------------------
		db 70h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430E10	proc near		; CODE XREF: sub_430C00+BFp

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 0Ch
		push	esi
		push	edi
		mov	edi, [esp+14h+arg_0]
		test	edi, edi
		jz	loc_430EAE
		mov	esi, [esp+14h+arg_4]
		test	esi, esi
		jnz	short loc_430E42
		or	eax, 0FFFFFFFFh


loc_430E2C:				; CODE XREF: sub_430E10+7Fj
		push	eax
		mov	eax, [edi]
		mov	ecx, [eax]
		push	ecx
		nop
		call	near ptr 27603E0h
		test	eax, eax
		jnz	short loc_430E9C
		pop	edi
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_430E42:				; CODE XREF: sub_430E10+17j
		lea	eax, [esp+14h+var_C]
		push	eax
		nop
		call	near ptr 77C49113h
		mov	ecx, [esi+4]
		mov	eax, 431BDE83h
		add	ecx, 7A120h
		add	esp, 4
		mul	ecx
		mov	eax, [esi]
		mov	ecx, [esp+14h+var_C]
		shr	edx, 12h
		lea	eax, [eax+eax*4]
		lea	ecx, [ecx+ecx*4]
		lea	eax, [eax+eax*4]
		lea	ecx, [ecx+ecx*4]
		lea	eax, [eax+eax*4]
		lea	ecx, [ecx+ecx*4]
		shl	ecx, 3
		lea	eax, [edx+eax*8]
		mov	edx, [esp+14h+var_8]
		sub	eax, ecx
		and	edx, 0FFFFh
		sub	eax, edx
		jns	short loc_430E2C
		pop	edi
		mov	eax, 2
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_430E9C:				; CODE XREF: sub_430E10+2Aj
		cmp	eax, 102h
		jnz	short loc_430EAE
		pop	edi
		mov	eax, 1
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_430EAE:				; CODE XREF: sub_430E10+Bj
					; sub_430E10+91j
		nop
		call	near ptr 77C1F2BCh
		mov	dword ptr [eax], 16h
		pop	edi
		or	eax, 0FFFFFFFFh
		pop	esi
		add	esp, 0Ch
		retn
sub_430E10	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430F00	proc near		; CODE XREF: sub_4010C3j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		xor	ebx, ebx
		push	esi
		cmp	eax, ebx
		jz	loc_430FA0
		mov	esi, [eax]
		cmp	esi, ebx
		jz	loc_430FA0
		cmp	esi, 0FFFFFFFFh
		push	edi
		jz	short loc_430F95
		mov	eax, [esi+0Ch]
		mov	edi, 1
		cmp	eax, edi
		jz	short loc_430F4A
		call	sub_4012E4
; ---------------------------------------------------------------------------
		push	eax
		mov	eax, [esi+0Ch]
		push	eax
		call	sub_401A50
		add	esp, 8
		test	eax, eax
		jnz	short loc_430F4A
		mov	ebx, edi
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_430F4A:				; CODE XREF: sub_430F00+2Aj
					; sub_430F00+40j
		cmp	[esi+8], edi
		jnz	short loc_430F58
		mov	eax, [esi+4]
		dec	eax
		mov	[esi+4], eax
		jnz	short loc_430F9A


loc_430F58:				; CODE XREF: sub_430F00+4Dj
		lea	edi, [esi+14h]
		mov	[esi+0Ch], ebx
		push	edi
		nop
		call	near ptr 7C901005h
		push	esi
		nop
		call	near ptr 276074Fh
		test	eax, eax
		jl	short loc_430F88
		add	esi, 10h
		push	esi
		call	sub_40103C
		add	esp, 4
		test	eax, eax
		jz	short loc_430F88
		call	near ptr 77C1F2BCh
		nop
		mov	ebx, [eax]


loc_430F88:				; CODE XREF: sub_430F00+6Ej
					; sub_430F00+7Ej
		push	edi
		nop
		call	near ptr 7C9010EDh
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_430F95:				; CODE XREF: sub_430F00+1Ej
		mov	ebx, 16h


loc_430F9A:				; CODE XREF: sub_430F00+56j
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_430FA0:				; CODE XREF: sub_430F00+Aj
					; sub_430F00+14j
		pop	esi
		mov	eax, 16h
		pop	ebx
		retn
sub_430F00	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_430FE0	proc near		; CODE XREF: sub_40177Bj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		xor	edi, edi
		test	esi, esi
		jz	short loc_431065
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_431065
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_431002
		push	esi
		call	sub_401C03
		add	esp, 4
		mov	edi, eax


loc_431002:				; CODE XREF: sub_430FE0+15j
		mov	esi, [esi]
		test	edi, edi
		jnz	short loc_431060
		push	0FFFFFFFFh
		push	edi
		push	esi
		call	dword_50E3EC
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_431033
		mov	ecx, [esi+8]
		mov	eax, 1
		test	ecx, ecx
		mov	[esi+4], eax
		jz	short loc_43102B
		call	sub_4012E4
; ---------------------------------------------------------------------------


loc_43102B:				; CODE XREF: sub_430FE0+44j
		mov	[esi+0Ch], eax
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_431033:				; CODE XREF: sub_430FE0+35j
		cmp	dword ptr [esi+8], 1
		jnz	short loc_43105B
		call	sub_4012E4
; ---------------------------------------------------------------------------
		push	eax
		mov	eax, [esi+0Ch]
		push	eax
		call	sub_401A50
		add	esp, 8
		test	eax, eax
		jz	short loc_43105B
		mov	eax, [esi+4]
		inc	eax
		mov	[esi+4], eax
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_43105B:				; CODE XREF: sub_430FE0+57j
					; sub_430FE0+6Dj
		mov	edi, 10h


loc_431060:				; CODE XREF: sub_430FE0+26j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_431065:				; CODE XREF: sub_430FE0+Aj
					; sub_430FE0+10j
		pop	edi
		mov	eax, 16h
		pop	esi
		retn
sub_430FE0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4310A0:				; CODE XREF: ___:0040192Ej
		mov	eax, [esp+8]
		mov	ecx, [esp+4]
		push	eax
		push	ecx
		call	sub_40119A
		add	esp, 8
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4310D0:				; CODE XREF: ___:00401587j
		mov	eax, [esp+8]
		mov	ecx, [esp+4]
		push	eax
		push	ecx
		call	sub_4018C0
		add	esp, 8
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431100:				; CODE XREF: ___:0040148Dj
		mov	eax, [esp+4]
		test	eax, eax
		jz	short loc_43110C
		mov	eax, [eax+4]
		retn
; ---------------------------------------------------------------------------


loc_43110C:				; CODE XREF: ___:00431106j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431120:				; CODE XREF: ___:00401BFEj
		mov	eax, [esp+4]
		push	esi
		test	eax, eax
		push	edi
		jnz	short loc_431132
		pop	edi
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_431132:				; CODE XREF: ___:00431128j
		mov	esi, [eax]
		test	esi, esi
		jnz	short loc_431155
		mov	ecx, [eax+4]
		test	ecx, ecx
		jnz	short loc_431155
		call	sub_401CEE
; ---------------------------------------------------------------------------
		dd 0D3AE856h, 0E890023Fh, 0FFFD0B9Eh, 5EC0335Fh
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------


loc_431155:				; CODE XREF: ___:00431136j
					; ___:0043113Dj
		mov	ecx, [eax+4]
		mov	eax, 431BDE83h
		add	ecx, 0F423Fh
		imul	ecx
		sar	edx, 12h
		mov	eax, edx
		shr	eax, 1Fh
		add	edx, eax
		lea	eax, [esi+esi*4]
		lea	eax, [eax+eax*4]
		lea	ecx, [eax+eax*4]
		lea	edi, [edx+ecx*8]
		call	sub_4012E4
; ---------------------------------------------------------------------------
		mov	esi, eax
		test	esi, esi
		jnz	short loc_43118E
		pop	edi
		mov	eax, 0Ch
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_43118E:				; CODE XREF: ___:00431184j
		mov	eax, [esi+30h]
		push	edi
		test	eax, eax
		jnz	short loc_4311F6
		mov	edx, [esi+38h]
		push	edx
		call	near ptr 27603E0h
		nop
		test	eax, eax
		jnz	short loc_4311E7
		lea	edi, [esi+2Ch]
		push	edi
		call	sub_402225
		mov	eax, [esi+0Ch]
		add	esp, 4
		cmp	eax, 3
		jge	short loc_4311D6
		push	edi
		mov	dword ptr [esi+0Ch], 3
		mov	dword ptr [esi+30h], 1
		call	sub_4010C3
		push	2
		call	sub_401DD4
; ---------------------------------------------------------------------------
		add	esp, 8


loc_4311D6:				; CODE XREF: ___:004311B6j
		push	edi
		call	sub_4010C3
		add	esp, 4
		mov	eax, 3
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4311E7:				; CODE XREF: ___:004311A2j
		cmp	eax, 102h
		jz	short loc_4311FC
		pop	edi
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4311F6:				; CODE XREF: ___:00431194j
		call	near ptr 2821E84h
		nop


loc_4311FC:				; CODE XREF: ___:004311ECj
		pop	edi
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431250:				; CODE XREF: ___:00401014j
		push	ecx
		lea	eax, [esp+0]
		push	eax
		call	sub_401C26
		add	esp, 4
		test	eax, eax
		mov	eax, 1
		jnz	short loc_43126B
		mov	eax, [esp+0]


loc_43126B:				; CODE XREF: ___:00431265j
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431280	proc near		; CODE XREF: sub_401708j
		push	esi
		call	sub_401320
		push	offset dword_445760
		mov	esi, eax
		nop
		call	near ptr 27D090Ah
		push	offset dword_445740
		push	eax
		mov	dword_50E3D0, eax
		nop
		call	near ptr 27E0000h
		test	eax, eax
		mov	dword_50E3EC, eax
		jnz	short loc_4312CD
		mov	eax, dword_50E3D0
		mov	dword_50E3EC, offset sub_4012D0
		push	eax
		call	near ptr 2740344h
		nop
		mov	dword_50E3D0, 0


loc_4312CD:				; CODE XREF: sub_431280+2Bj
		mov	eax, esi
		pop	esi
		retn
sub_431280	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431300	proc near		; CODE XREF: sub_40161Dj
		mov	eax, dword_50E3D4
		test	eax, eax
		jz	short loc_431350
		mov	eax, dword_50E3D8
		push	eax
		call	sub_401190
; ---------------------------------------------------------------------------
		dd 8504C483h, 832074C0h, 75012078h, 86E8501Ah, 8BFFFD04h
		dd 50E3D80Dh, 4C48300h,	6A118Bh, 0C5E89052h, 0E80230ECh
		dd 0FFFD02FBh, 50E3D0A1h, 74C08500h, 0E8905007h, 230EFF4h
; ---------------------------------------------------------------------------


loc_431350:				; CODE XREF: sub_431300+7j
		mov	eax, 1
		retn
sub_431300	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431380	proc near		; CODE XREF: sub_4017B2j
		mov	eax, 1
		retn
sub_431380	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4313A0	proc near		; CODE XREF: sub_4017C1j
		mov	eax, dword_50E3D4
		test	eax, eax
		jz	short loc_4313DB
		mov	eax, dword_50E3D8
		push	eax
		call	sub_401190
; ---------------------------------------------------------------------------
		dd 8504C483h, 832074C0h, 75012078h, 0E6E8501Ah,	8BFFFD03h
		dd 50E3D80Dh, 4C48300h,	6A118Bh, 25E89052h
		db 0ECh, 30h, 2
; ---------------------------------------------------------------------------


loc_4313DB:				; CODE XREF: sub_4313A0+7j
		mov	eax, 1
		retn
sub_4313A0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431410:				; CODE XREF: ___:00402239j
		push	ecx
		push	esi
		push	offset dword_50E9A0
		xor	esi, esi
		nop
		call	near ptr 7C901005h
		mov	eax, dword_50E3E0
		test	eax, eax
		mov	[esp+4], eax
		jz	short loc_43144E


loc_43142C:				; CODE XREF: ___:0043144Cj
		test	esi, esi
		jnz	short loc_43144E
		lea	eax, [esp+4]
		push	eax
		call	sub_401604
		mov	ecx, [esp+8]
		mov	esi, eax
		add	esp, 4
		mov	eax, [ecx+18h]
		test	eax, eax
		mov	[esp+4], eax
		jnz	short loc_43142C


loc_43144E:				; CODE XREF: ___:0043142Aj
					; ___:0043142Ej
		push	offset dword_50E9A0
		call	near ptr 7C9010EDh
		nop
		mov	eax, esi
		pop	esi
		neg	eax
		sbb	eax, eax
		and	eax, 0Bh
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431490	proc near		; CODE XREF: sub_4012B7j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_4314A9
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_4314A9
		cmp	dword ptr [eax], 0C4C0FFEEh
		jnz	short loc_4314A9
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4314A9:				; CODE XREF: sub_431490+6j
					; sub_431490+Cj ...
		mov	eax, 1
		retn
sub_431490	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4314C0	proc near		; CODE XREF: sub_401320j
		mov	eax, dword_50E3D4
		test	eax, eax
		jz	short loc_4314CF
		mov	eax, 1
		retn
; ---------------------------------------------------------------------------


loc_4314CF:				; CODE XREF: sub_4314C0+7j
		push	0
		push	offset dword_50E3D8
		mov	dword_50E3D4, 1
		call	sub_4015FF
		add	esp, 8
		test	eax, eax
		jnz	short loc_4314FE
		push	eax
		push	offset dword_50E3DC
		call	sub_4015FF
		add	esp, 8
		test	eax, eax
		jz	short loc_431503


loc_4314FE:				; CODE XREF: sub_4314C0+2Aj
		call	sub_40163B


loc_431503:				; CODE XREF: sub_4314C0+3Cj
		push	esi
		mov	esi, dword_50F85C
		push	offset dword_50E8E0
		call	esi
		push	offset dword_50E940
		call	esi
		push	offset dword_50E9A0
		call	esi
		push	offset dword_50E920
		call	esi
		push	offset dword_50E980
		call	esi
		push	offset dword_50E960
		call	esi
		mov	eax, dword_50E3D4
		pop	esi
		retn
sub_4314C0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431560	proc near		; CODE XREF: sub_40163Bj
		mov	eax, dword_50E3D4
		test	eax, eax
		jz	locret_431619
		mov	eax, dword_50E3D8
		test	eax, eax
		jz	short loc_431589
		push	eax
		call	sub_401AA0
		add	esp, 4
		mov	dword_50E3D8, 0


loc_431589:				; CODE XREF: sub_431560+14j
		mov	eax, dword_50E3DC
		test	eax, eax
		jz	short loc_4315A5
		push	eax
		call	sub_401AA0
		add	esp, 4
		mov	dword_50E3DC, 0


loc_4315A5:				; CODE XREF: sub_431560+30j
		push	esi
		push	offset dword_50E8E0
		nop
		call	near ptr 7C901005h
		mov	eax, dword_44573C
		cmp	eax, 1
		jz	short loc_4315D3
		push	edi
		mov	edi, dword_50FAC4


loc_4315C2:				; CODE XREF: sub_431560+70j
		mov	esi, [eax+8]
		push	eax
		call	edi
		add	esp, 4
		cmp	esi, 1
		mov	eax, esi
		jnz	short loc_4315C2
		pop	edi


loc_4315D3:				; CODE XREF: sub_431560+59j
		push	offset dword_50E8E0
		nop
		call	near ptr 7C9010EDh
		mov	esi, dword_50F858
		push	offset dword_50E960
		call	esi
		push	offset dword_50E980
		call	esi
		push	offset dword_50E920
		call	esi
		push	offset dword_50E9A0
		call	esi
		push	offset dword_50E940
		call	esi
		push	offset dword_50E8E0
		call	esi
		mov	dword_50E3D4, 0
		pop	esi

locret_431619:				; CODE XREF: sub_431560+7j
		retn
sub_431560	endp

; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431650:				; CODE XREF: ___:loc_401B95j
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+8]
		push	esi
		push	edi
		push	eax
		mov	esi, [eax]
		mov	ecx, [eax+4]
		mov	edx, [eax+8]
		mov	[ebp-4], esi
		mov	[ebp-0Ch], ecx
		mov	[ebp-8], edx
		nop
		call	near ptr 77C2C21Bh
		mov	eax, dword_50E3D8
		push	esi
		push	eax
		call	sub_4020DB
; ---------------------------------------------------------------------------
		mov	dword ptr [esi+0Ch], 1
		add	esi, 3Ch
		push	0
		push	esi
		call	sub_436A5C
; ---------------------------------------------------------------------------
		mov	edi, [ebp-4]
		add	esp, 14h
		test	eax, eax
		jnz	short loc_4316AC
		mov	ecx, [ebp-8]
		push	ecx
		call	dword ptr [ebp-0Ch]
		add	esp, 4
		mov	[edi+14h], eax
		mov	esi, eax
		jmp	short loc_4316B8
; ---------------------------------------------------------------------------


loc_4316AC:				; CODE XREF: ___:00431699j
		dec	eax
		jz	short loc_4316B5
		dec	eax
		or	esi, 0FFFFFFFFh
		jmp	short loc_4316B8
; ---------------------------------------------------------------------------


loc_4316B5:				; CODE XREF: ___:004316ADj
		mov	esi, [edi+14h]


loc_4316B8:				; CODE XREF: ___:004316AAj
					; ___:004316B3j
		cmp	dword ptr [edi+20h], 1
		jnz	short loc_4316D7
		call	sub_4017C1
		push	esi
		nop
		call	near ptr 77C3A307h
		add	esp, 4
		mov	eax, esi
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_4316D7:				; CODE XREF: ___:004316BCj
		push	edi
		call	sub_40131B
		add	esp, 4
		push	esi
		nop
		call	near ptr 77C3A307h
		add	esp, 4
		mov	eax, esi
		pop	edi
		pop	esi
		mov	esp, ebp
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431730	proc near		; CODE XREF: sub_4017ADj

var_84		= byte ptr -84h
var_80		= dword	ptr -80h
var_58		= byte ptr -58h
var_4C		= dword	ptr -4Ch
var_8		= byte ptr -8
arg_0		= dword	ptr  4

		sub	esp, 84h
		push	ebx
		mov	ebx, [esp+88h+arg_0]
		test	ebx, ebx
		push	esi
		jz	short loc_4317AA
		lea	esi, [ebx+2Ch]
		push	edi
		push	esi
		call	sub_402225
		push	esi
		mov	dword ptr [ebx+0Ch], 5
		call	sub_4010C3
		push	ebx
		call	sub_40131B
		mov	ecx, 21h
		mov	esi, ebx
		lea	edi, [esp+9Ch+var_84]
		push	ebx
		rep movsd
		call	sub_401BBD
		mov	eax, [esp+0A0h+var_4C]
		mov	esi, dword_50F8D8
		add	esp, 10h
		test	eax, eax
		pop	edi
		jz	short loc_431788
		push	eax
		call	esi


loc_431788:				; CODE XREF: sub_431730+53j
		lea	eax, [esp+8Ch+var_58]
		push	eax
		call	sub_40222F
		mov	eax, [esp+90h+var_80]
		add	esp, 4
		test	eax, eax
		jz	short loc_4317AA
		test	[esp+8Ch+var_8], 1
		jnz	short loc_4317AA
		push	eax
		call	esi


loc_4317AA:				; CODE XREF: sub_431730+11j
					; sub_431730+6Bj ...
		pop	esi
		pop	ebx
		add	esp, 84h
		retn
sub_431730	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4317F0	proc near		; CODE XREF: sub_401DC5j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	ebp
		push	esi
		push	edi
		push	14h
		push	1
		call	near ptr 77C2C0C3h
		nop
		mov	esi, eax
		add	esp, 8
		test	esi, esi
		jnz	short loc_431811
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 0Ch
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_431811:				; CODE XREF: sub_4317F0+15j
		mov	edi, [esp+10h+arg_8]
		mov	ebp, [esp+10h+arg_4]
		mov	dword ptr [esi], 0FFFFFFFFh
		mov	[esi+4], ebp
		lea	ebx, [edi+8]
		mov	[esi+8], edi
		push	ebx
		call	sub_402225
		add	esp, 4
		mov	[esp+10h+arg_4], eax
		test	eax, eax
		jz	short loc_431852
		push	esi
		call	sub_40222F
		push	esi
		call	near ptr 77C2C21Bh
		nop
		mov	eax, [esp+18h+arg_4]
		add	esp, 8
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_431852:				; CODE XREF: sub_4317F0+47j
		mov	eax, [edi+0Ch]
		push	ebx
		mov	[esi+10h], eax
		mov	[edi+0Ch], esi
		call	sub_4010C3
		add	esp, 4
		test	ebp, ebp
		jz	short loc_431877
		mov	ecx, [ebp+80h]
		mov	[esi+0Ch], ecx
		mov	[ebp+80h], esi


loc_431877:				; CODE XREF: sub_4317F0+76j
		mov	edx, [esp+10h+arg_0]
		pop	edi
		xor	eax, eax
		mov	[edx], esi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_4317F0	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4318C0	proc near		; CODE XREF: sub_40105Fj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_4318E7
		mov	eax, [esi+8]
		test	eax, eax
		jnz	short loc_4318E7
		mov	eax, [esi+4]
		test	eax, eax
		jnz	short loc_4318E7
		push	esi
		call	sub_40222F
		push	esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 8


loc_4318E7:				; CODE XREF: sub_4318C0+7j
					; sub_4318C0+Ej ...
		pop	esi
		retn
sub_4318C0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431900	proc near		; CODE XREF: sub_40131Bj

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		test	ebx, ebx
		push	esi
		jz	short loc_43196D
		mov	esi, [ebx+80h]
		test	esi, esi
		jz	short loc_43196D
		push	edi


loc_431915:				; CODE XREF: sub_431900+6Aj
		push	esi
		call	sub_402225
		add	esp, 4
		test	eax, eax
		jnz	short loc_431968
		mov	edi, [esi+8]
		test	edi, edi
		jz	short loc_431943
		push	edi
		call	sub_401190
; ---------------------------------------------------------------------------
		add	esp, 4
		test	eax, eax
		jz	short loc_431943
		mov	edi, [edi+4]
		test	edi, edi
		jz	short loc_431943
		push	eax


loc_43193E:				; CODE XREF: ___:004319B7j
		call	edi
		add	esp, 4


loc_431943:				; CODE XREF: sub_431900+27j
					; sub_431900+34j ...
		mov	eax, [esi+0Ch]
		mov	dword ptr [esi+4], 0
		push	esi
		mov	[ebx+80h], eax
		call	sub_4010C3
		push	esi
		call	sub_40105F
		mov	esi, [ebx+80h]
		add	esp, 8


loc_431968:				; CODE XREF: sub_431900+20j
		test	esi, esi
		jnz	short loc_431915
		pop	edi


loc_43196D:				; CODE XREF: sub_431900+8j
					; sub_431900+12j
		pop	esi
		pop	ebx
		retn
sub_431900	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_431990	proc near		; CODE XREF: sub_401DD4j
		mov	eax, dword_50E3D8
		push	ebx
		push	edi
		push	eax
		call	sub_401190
sub_431990	endp

; ---------------------------------------------------------------------------
		db 8Bh,	5Ch, 24h
; ---------------------------------------------------------------------------
		adc	[ebx-47CFB3Ch],	al
		add	cl, [ebx-7CF28B08h]
		sti
		add	[eax+ecx+6Ah], esi
		add	[eax-7F7B3918h], edx
		ja	short loc_43193E
		push	dword ptr [esi+eax-0Ah]
		inc	edi
		jl	short near ptr loc_4319C0+1


loc_4319C0:				; CODE XREF: ___:004319BEj
		jz	short loc_4319E5
		push	esi
		mov	eax, ebx
		xor	esi, esi
		dec	eax
		jz	short loc_4319D2
		dec	eax
		jnz	short loc_4319D5
		or	esi, 0FFFFFFFFh
		jmp	short loc_4319D5
; ---------------------------------------------------------------------------


loc_4319D2:				; CODE XREF: ___:004319C8j
		mov	esi, [edi+14h]


loc_4319D5:				; CODE XREF: ___:004319CBj
					; ___:004319D0j
		call	sub_4017C1
		push	esi
		call	near ptr 77C3A307h
		nop
		add	esp, 4
		pop	esi


loc_4319E5:				; CODE XREF: ___:loc_4319C0j
		push	1
		call	sub_401B0E
; ---------------------------------------------------------------------------
		dd 8304C483h, 57533CC7h, 537AE890h, 90907780h, 90909090h
		dd 8 dup(0CCCCCCCCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_431A20	proc near		; CODE XREF: sub_401B0Ej

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_401122
sub_431A20	endp

; ---------------------------------------------------------------------------
		add	esp, 4
		test	eax, eax
		jz	short loc_431A3F


loc_431A32:				; CODE XREF: ___:00431A3Dj
		push	esi
		call	sub_401122
; ---------------------------------------------------------------------------
		add	esp, 4
		test	eax, eax
		jnz	short loc_431A32


loc_431A3F:				; CODE XREF: ___:00431A30j
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431A60:				; CODE XREF: ___:00401DDEj
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_431A80	proc near		; CODE XREF: sub_4012D0j

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	edx
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_4]
		mov	eax, [ebp+arg_8]
		lock cmpxchg [ecx], edx
		mov	[ebp+var_4], eax
		pop	edx
		pop	ecx
		mov	eax, [ebp+var_4]
		mov	esp, ebp
		pop	ebp
		retn	0Ch
sub_431A80	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431AC0	proc near		; CODE XREF: sub_401C26j

var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  4

		sub	esp, 8
		lea	eax, [esp+8+var_4]
		lea	ecx, [esp+8+var_8]
		push	esi
		push	eax
		push	ecx
		xor	esi, esi
		nop
		call	near ptr 2770C56h
		push	eax
		nop
		call	near ptr 2730A1Fh
		test	eax, eax
		jz	short loc_431B02
		mov	edx, [esp+0Ch+var_8]
		xor	ecx, ecx
		mov	eax, 1


loc_431AEC:				; CODE XREF: sub_431AC0+33j
		test	eax, edx
		jz	short loc_431AF1
		inc	ecx


loc_431AF1:				; CODE XREF: sub_431AC0+2Ej
		shl	eax, 1
		jnz	short loc_431AEC
		mov	edx, [esp+0Ch+arg_0]
		mov	eax, esi
		pop	esi
		mov	[edx], ecx
		add	esp, 8
		retn
; ---------------------------------------------------------------------------


loc_431B02:				; CODE XREF: sub_431AC0+1Fj
		mov	eax, 0Bh
		pop	esi
		add	esp, 8
		retn
sub_431AC0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431B30	proc near		; CODE XREF: sub_40184Dj

arg_0		= dword	ptr  4

		push	esi
		push	offset dword_50E980
		xor	esi, esi
		nop
		call	near ptr 7C901005h
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_431B64
		push	esi
		push	ecx
		call	sub_401F73
		add	esp, 8
		mov	esi, eax
		push	offset dword_50E980
		nop
		call	near ptr 7C9010EDh
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_431B64:				; CODE XREF: sub_431B30+17j
		test	eax, eax
		jnz	short loc_431B6D
		mov	esi, 16h


loc_431B6D:				; CODE XREF: sub_431B30+36j
		push	offset dword_50E980
		nop
		call	near ptr 7C9010EDh
		mov	eax, esi
		pop	esi
		retn
sub_431B30	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431BA0	proc near		; CODE XREF: sub_401852j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+14h]
		lea	ecx, [esi+4]
		neg	eax
		push	ecx
		mov	[esi+0Ch], eax
		mov	dword ptr [esi+14h], 0
		call	sub_4010C3
		push	esi
		call	sub_4010C3
		add	esp, 8
		pop	esi
		retn
sub_431BA0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_431BE0	proc near		; CODE XREF: sub_401F73j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		xor	esi, esi
		test	eax, eax
		jnz	short loc_431BF2
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_431BF2:				; CODE XREF: sub_431BE0+9j
		mov	eax, [esp+4+arg_4]
		push	ebx
		test	eax, eax
		push	edi
		jz	short loc_431C12
		cmp	dword ptr [eax], 0
		jz	short loc_431C12
		mov	ecx, [esp+0Ch+arg_0]
		mov	edi, 16h
		mov	eax, edi
		pop	edi
		mov	[ecx], esi
		pop	ebx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_431C12:				; CODE XREF: sub_431BE0+1Aj
					; sub_431BE0+1Fj
		push	1Ch
		push	1
		nop
		call	near ptr 77C2C0C3h
		mov	esi, eax
		add	esp, 8
		test	esi, esi
		jnz	short loc_431C36
		mov	ecx, [esp+0Ch+arg_0]
		mov	edi, 0Ch
		mov	eax, edi
		pop	edi
		mov	[ecx], esi
		pop	ebx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_431C36:				; CODE XREF: sub_431BE0+43j
		push	0
		push	esi
		mov	dword ptr [esi+0Ch], 0
		mov	dword ptr [esi+10h], 0
		mov	dword ptr [esi+14h], 0
		call	sub_402199
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jnz	short loc_431C94
		lea	ebx, [esi+4]
		push	eax
		push	ebx
		call	sub_402199
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jnz	short loc_431C8B
		push	eax
		lea	eax, [esi+8]
		push	eax
		call	sub_401541
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jz	short loc_431CAC
		push	ebx
		call	sub_40222F
		add	esp, 4


loc_431C8B:				; CODE XREF: sub_431BE0+8Dj
		push	esi
		call	sub_40222F
		add	esp, 4


loc_431C94:				; CODE XREF: sub_431BE0+7Aj
		push	esi
		nop
		call	near ptr 77C2C21Bh
		mov	ecx, [esp+10h+arg_0]
		add	esp, 4
		xor	esi, esi
		mov	eax, edi
		pop	edi
		mov	[ecx], esi
		pop	ebx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_431CAC:				; CODE XREF: sub_431BE0+A0j
		mov	ecx, [esp+0Ch+arg_0]
		xor	edi, edi
		mov	eax, edi
		mov	dword ptr [esi+18h], 0FACADE2h
		pop	edi
		mov	[ecx], esi
		pop	ebx
		pop	esi
		retn
sub_431BE0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431D10:				; CODE XREF: ___:004018ACj
		mov	eax, [esp+4]
		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		xor	ebp, ebp
		test	eax, eax
		jz	loc_431E4B
		mov	esi, [eax]
		test	esi, esi
		jz	loc_431E4B
		cmp	esi, 0FFFFFFFFh
		jz	loc_431E07
		cmp	dword ptr [esi+18h], 0FACADE2h
		jnz	loc_431E4B
		push	esi
		call	sub_402225
		add	esp, 4
		test	eax, eax
		jnz	loc_431E50
		lea	edi, [esi+4]
		push	edi
		call	sub_402225
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jz	short loc_431D79
		push	esi
		call	sub_4010C3
		add	esp, 4
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_431D79:				; CODE XREF: ___:00431D67j
		mov	eax, [esi+10h]
		test	eax, eax
		jg	short loc_431DED
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+14h]
		cmp	eax, ecx
		jg	short loc_431DED
		push	edi
		mov	dword ptr [esi+18h], 0
		call	sub_4010C3
		add	esp, 4
		mov	ebx, eax
		test	ebx, ebx
		push	esi
		jz	short loc_431DB0
		call	sub_4010C3
		add	esp, 4
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_431DB0:				; CODE XREF: ___:00431D9Fj
		call	sub_4010C3
		add	esp, 4
		test	eax, eax
		jnz	loc_431E50
		mov	ecx, [esp+14h]
		lea	edx, [esi+8]
		push	edx
		mov	[ecx], eax
		call	sub_401A91
		push	edi
		mov	ebx, eax
		call	sub_40222F
		push	esi
		mov	edi, eax
		call	sub_40222F
		push	esi
		mov	ebp, eax
		call	near ptr 77C2C21Bh
		nop
		add	esp, 10h
		jmp	short loc_431E33
; ---------------------------------------------------------------------------


loc_431DED:				; CODE XREF: ___:00431D7Ej
					; ___:00431D88j
		push	edi
		call	sub_4010C3
		push	esi
		mov	ebx, eax
		call	sub_4010C3
		add	esp, 8
		mov	edi, eax
		mov	ebp, 10h
		jmp	short loc_431E33
; ---------------------------------------------------------------------------


loc_431E07:				; CODE XREF: ___:00431D33j
		push	offset dword_50E980
		call	near ptr 7C901005h
		nop
		mov	eax, [esp+14h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_431E23
		mov	dword ptr [eax], 0
		jmp	short loc_431E28
; ---------------------------------------------------------------------------


loc_431E23:				; CODE XREF: ___:00431E19j
		mov	ebx, 10h


loc_431E28:				; CODE XREF: ___:00431E21j
		push	offset dword_50E980
		call	near ptr 7C9010EDh
		nop


loc_431E33:				; CODE XREF: ___:00431DEBj
					; ___:00431E05j
		test	ebx, ebx
		jz	short loc_431E3E
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_431E3E:				; CODE XREF: ___:00431E35j
		test	edi, edi
		mov	eax, edi
		jnz	short loc_431E50
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_431E4B:				; CODE XREF: ___:00431D20j
					; ___:00431D2Aj ...
		mov	eax, 16h


loc_431E50:				; CODE XREF: ___:00431D51j
					; ___:00431DBAj ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 60h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431EC0:				; CODE XREF: ___:00401E88j
		push	esi
		push	4
		push	1
		xor	esi, esi
		nop
		call	near ptr 77C2C0C3h
		add	esp, 8
		test	eax, eax
		jnz	short loc_431EE3
		mov	edx, [esp+8]
		mov	ecx, 0Ch
		pop	esi
		mov	[edx], eax
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_431EE3:				; CODE XREF: ___:00431ED2j
		mov	ecx, [esp+8]
		mov	dword ptr [eax], 0
		mov	[ecx], eax
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431F10:				; CODE XREF: ___:00401794j
		mov	ecx, [esp+4]
		push	esi
		xor	esi, esi
		test	ecx, ecx
		jz	short loc_431F31
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_431F31
		push	eax
		mov	[ecx], esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_431F31:				; CODE XREF: ___:00431F19j
					; ___:00431F1Fj
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431F50:				; CODE XREF: ___:00401136j
		mov	eax, [esp+4]
		test	eax, eax
		jz	short loc_431F6D
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_431F6D
		mov	ecx, [esp+8]
		test	ecx, ecx
		jz	short loc_431F6D
		mov	eax, [eax]
		mov	[ecx], eax
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_431F6D:				; CODE XREF: ___:00431F56j
					; ___:00431F5Cj ...
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431F90:				; CODE XREF: ___:0040159Bj
		mov	eax, [esp+4]
		test	eax, eax
		jz	short loc_431FBA
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_431FBA
		mov	eax, [esp+8]
		cmp	eax, 1
		jz	short loc_431FAE
		test	eax, eax
		jnz	short loc_431FBA
		mov	[ecx], eax
		retn
; ---------------------------------------------------------------------------


loc_431FAE:				; CODE XREF: ___:00431FA5j
		mov	eax, 28h
		mov	dword ptr [ecx], 0
		retn
; ---------------------------------------------------------------------------


loc_431FBA:				; CODE XREF: ___:00431F96j
					; ___:00431F9Cj ...
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_431FD0:				; CODE XREF: ___:00402077j
		push	ebx
		push	esi
		mov	esi, [esp+0Ch]
		push	edi
		test	esi, esi
		jz	loc_43208A
		mov	eax, [esi]
		test	eax, eax
		jz	loc_43208A
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_432004
		push	esi
		call	sub_40184D
		add	esp, 4
		test	eax, eax
		jz	short loc_432004
		cmp	eax, 10h
		jnz	loc_43208F


loc_432004:				; CODE XREF: ___:00431FECj
					; ___:00431FF9j
		mov	esi, [esi]
		cmp	dword ptr [esi+18h], 0FACADE2h
		jnz	short loc_43208A
		push	esi
		call	sub_402225
		add	esp, 4
		test	eax, eax
		jnz	short loc_43208F
		mov	ecx, [esi+0Ch]
		inc	ecx
		mov	eax, ecx
		mov	[esi+0Ch], ecx
		cmp	eax, 7FFFFFFFh
		jnz	short loc_43207D
		lea	edi, [esi+4]
		push	edi
		call	sub_402225
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jz	short loc_43204D
		push	esi
		call	sub_4010C3
		add	esp, 4
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_43204D:				; CODE XREF: ___:0043203Cj
		mov	eax, [esi+14h]
		mov	ebx, [esi+0Ch]
		sub	ebx, eax
		push	edi
		mov	[esi+0Ch], ebx
		mov	dword ptr [esi+14h], 0
		call	sub_4010C3
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jz	short loc_43207D
		push	esi
		call	sub_4010C3
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_43207D:				; CODE XREF: ___:0043202Aj
					; ___:0043206Cj
		push	esi
		call	sub_4010C3
		add	esp, 4
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_43208A:				; CODE XREF: ___:00431FD9j
					; ___:00431FE3j ...
		mov	eax, 16h


loc_43208F:				; CODE XREF: ___:00431FFEj
					; ___:0043201Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4320E0:				; CODE XREF: ___:0040169Aj
		push	ebx
		push	esi
		mov	esi, [esp+0Ch]
		push	edi
		test	esi, esi
		jz	loc_4321AF
		mov	eax, [esi]
		test	eax, eax
		jz	loc_4321AF
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_432114
		push	esi
		call	sub_40184D
		add	esp, 4
		test	eax, eax
		jz	short loc_432114
		cmp	eax, 10h
		jnz	loc_4321B4


loc_432114:				; CODE XREF: ___:004320FCj
					; ___:00432109j
		mov	esi, [esi]
		cmp	dword ptr [esi+18h], 0FACADE2h
		jnz	loc_4321AF
		mov	ebx, [esp+14h]
		push	ebx
		push	esi
		call	sub_401BC2
		add	esp, 8
		test	eax, eax
		jnz	short loc_4321B4
		mov	ecx, [esi+0Ch]
		inc	ecx
		mov	eax, ecx
		mov	[esi+0Ch], ecx
		cmp	eax, 7FFFFFFFh
		jnz	short loc_4321A2
		lea	edi, [esi+4]
		push	ebx
		push	edi
		call	sub_401BC2
		mov	ebx, eax
		add	esp, 8
		test	ebx, ebx
		jz	short loc_432172
		cmp	ebx, 274Ch
		jnz	short loc_432163
		inc	dword ptr [esi+14h]


loc_432163:				; CODE XREF: ___:0043215Ej
		push	esi
		call	sub_4010C3
		add	esp, 4
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_432172:				; CODE XREF: ___:00432156j
		mov	eax, [esi+14h]
		mov	ebx, [esi+0Ch]
		sub	ebx, eax
		push	edi
		mov	[esi+0Ch], ebx
		mov	dword ptr [esi+14h], 0
		call	sub_4010C3
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jz	short loc_4321A2
		push	esi
		call	sub_4010C3
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4321A2:				; CODE XREF: ___:00432143j
					; ___:00432191j
		push	esi
		call	sub_4010C3
		add	esp, 4
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4321AF:				; CODE XREF: ___:004320E9j
					; ___:004320F3j ...
		mov	eax, 16h


loc_4321B4:				; CODE XREF: ___:0043210Ej
					; ___:00432133j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_432200:				; CODE XREF: ___:004015C8j
		sub	esp, 0Ch
		push	ebp
		push	esi
		mov	esi, [esp+18h]
		push	edi
		test	esi, esi
		jz	loc_4322F6
		mov	eax, [esi]
		test	eax, eax
		jz	loc_4322F6
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_432237
		push	esi
		call	sub_40184D
		add	esp, 4
		test	eax, eax
		jz	short loc_432237
		cmp	eax, 10h
		jnz	loc_4322FB


loc_432237:				; CODE XREF: ___:0043221Fj
					; ___:0043222Cj
		mov	esi, [esi]
		cmp	dword ptr [esi+18h], 0FACADE2h
		jnz	loc_4322F6
		push	esi
		call	sub_402225
		add	esp, 4
		test	eax, eax
		jnz	loc_4322FB
		lea	ebp, [esi+4]
		push	ebp
		call	sub_402225
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jz	short loc_43227B
		push	esi
		call	sub_4010C3
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_43227B:				; CODE XREF: ___:00432267j
		mov	eax, [esi+10h]
		test	eax, eax
		jnz	short loc_4322EA
		mov	eax, [esi+14h]
		test	eax, eax
		jle	short loc_432298
		mov	ecx, [esi+0Ch]
		mov	dword ptr [esi+14h], 0
		sub	ecx, eax
		mov	[esi+0Ch], ecx


loc_432298:				; CODE XREF: ___:00432287j
		mov	eax, [esi+0Ch]
		test	eax, eax
		jle	short loc_4322EA
		neg	eax
		push	ebx
		mov	[esi+14h], eax
		push	esi
		lea	eax, [esp+14h]
		push	offset sub_401852
		push	eax
		call	sub_401659
; ---------------------------------------------------------------------------
		add	esp, 0Ch
		lea	ebx, [esi+8]


loc_4322BB:				; CODE XREF: ___:004322D0j
		push	ebp
		push	ebx
		call	sub_401203
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jnz	short loc_4322D2
		mov	eax, [esi+14h]
		test	eax, eax
		jl	short loc_4322BB


loc_4322D2:				; CODE XREF: ___:004322C9j
		xor	ecx, ecx
		test	edi, edi
		setnz	cl
		push	ecx
		call	sub_401122
; ---------------------------------------------------------------------------
		add	esp, 4
		test	edi, edi
		pop	ebx
		jnz	short loc_4322ED
		mov	[esi+0Ch], edi


loc_4322EA:				; CODE XREF: ___:00432280j
					; ___:0043229Dj
		inc	dword ptr [esi+10h]


loc_4322ED:				; CODE XREF: ___:004322E5j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_4322F6:				; CODE XREF: ___:0043220Cj
					; ___:00432216j ...
		mov	eax, 16h


loc_4322FB:				; CODE XREF: ___:00432231j
					; ___:00432251j
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_432360:				; CODE XREF: ___:00401951j
		sub	esp, 0Ch
		push	ebp
		push	esi
		mov	esi, [esp+18h]
		push	edi
		test	esi, esi
		jz	loc_432461
		mov	eax, [esi]
		test	eax, eax
		jz	loc_432461
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_432397
		push	esi
		call	sub_40184D
		add	esp, 4
		test	eax, eax
		jz	short loc_432397
		cmp	eax, 10h
		jnz	loc_432466


loc_432397:				; CODE XREF: ___:0043237Fj
					; ___:0043238Cj
		mov	esi, [esi]
		cmp	dword ptr [esi+18h], 0FACADE2h
		jnz	loc_432461
		mov	edi, [esp+20h]
		push	edi
		push	esi
		call	sub_401BC2
		add	esp, 8
		test	eax, eax
		jnz	loc_432466
		lea	ebp, [esi+4]
		push	edi
		push	ebp
		call	sub_401BC2
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jz	short loc_4323E1
		push	esi
		call	sub_4010C3
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_4323E1:				; CODE XREF: ___:004323CDj
		mov	eax, [esi+10h]
		test	eax, eax
		jnz	short loc_432455
		mov	eax, [esi+14h]
		test	eax, eax
		jle	short loc_4323FE
		mov	ecx, [esi+0Ch]
		mov	dword ptr [esi+14h], 0
		sub	ecx, eax
		mov	[esi+0Ch], ecx


loc_4323FE:				; CODE XREF: ___:004323EDj
		mov	eax, [esi+0Ch]
		test	eax, eax
		jle	short loc_432455
		neg	eax
		push	ebx
		mov	[esi+14h], eax
		push	esi
		lea	eax, [esp+14h]
		push	offset sub_401852
		push	eax
		call	sub_401659
; ---------------------------------------------------------------------------
		add	esp, 0Ch
		lea	ebx, [esi+8]


loc_432421:				; CODE XREF: ___:0043243Bj
		mov	ecx, [esp+24h]
		push	ecx
		push	ebp
		push	ebx
		call	sub_4011E0
		mov	edi, eax
		add	esp, 0Ch
		test	edi, edi
		jnz	short loc_43243D
		mov	eax, [esi+14h]
		test	eax, eax
		jl	short loc_432421


loc_43243D:				; CODE XREF: ___:00432434j
		xor	edx, edx
		test	edi, edi
		setnz	dl
		push	edx
		call	sub_401122
; ---------------------------------------------------------------------------
		add	esp, 4
		test	edi, edi
		pop	ebx
		jnz	short loc_432458
		mov	[esi+0Ch], edi


loc_432455:				; CODE XREF: ___:004323E6j
					; ___:00432403j
		inc	dword ptr [esi+10h]


loc_432458:				; CODE XREF: ___:00432450j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_432461:				; CODE XREF: ___:0043236Cj
					; ___:00432376j ...
		mov	eax, 16h


loc_432466:				; CODE XREF: ___:00432391j
					; ___:004323B6j
		pop	edi
		pop	esi
		pop	ebp
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 50h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4324C0:				; CODE XREF: ___:004015BEj
		mov	eax, [esp+4]
		push	ebx
		push	esi
		push	edi
		test	eax, eax
		jz	short loc_432546
		mov	esi, [eax]
		test	esi, esi
		jz	short loc_432546
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_4324DC
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4324DC:				; CODE XREF: ___:004324D4j
		cmp	dword ptr [esi+18h], 0FACADE2h
		jnz	short loc_432546
		mov	eax, [esi+10h]
		test	eax, eax
		jnz	short loc_432524
		lea	ebx, [esi+4]
		push	ebx
		call	sub_402225
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jz	short loc_432502
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_432502:				; CODE XREF: ___:004324FCj
		mov	eax, [esi+14h]
		inc	eax
		mov	[esi+14h], eax
		jnz	short loc_432519
		add	esi, 8
		push	esi
		call	sub_401E51
		add	esp, 4
		mov	edi, eax


loc_432519:				; CODE XREF: ___:00432509j
		push	ebx
		call	sub_4010C3
		add	esp, 4
		jmp	short loc_43253C
; ---------------------------------------------------------------------------


loc_432524:				; CODE XREF: ___:004324EAj
		dec	eax
		mov	[esi+10h], eax
		lea	eax, [esi+4]
		push	eax
		call	sub_4010C3
		push	esi
		mov	edi, eax
		call	sub_4010C3
		add	esp, 8


loc_43253C:				; CODE XREF: ___:00432522j
		test	edi, edi
		jz	short loc_43254B
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_432546:				; CODE XREF: ___:004324C9j
					; ___:004324CFj ...
		mov	eax, 16h


loc_43254B:				; CODE XREF: ___:0043253Ej
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_432580:				; CODE XREF: ___:00401532j
		push	ebx
		push	esi
		mov	esi, [esp+0Ch]
		push	edi
		test	esi, esi
		jz	loc_43263A
		mov	eax, [esi]
		test	eax, eax
		jz	loc_43263A
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4325B4
		push	esi
		call	sub_40184D
		add	esp, 4
		test	eax, eax
		jz	short loc_4325B4
		cmp	eax, 10h
		jnz	loc_43263F


loc_4325B4:				; CODE XREF: ___:0043259Cj
					; ___:004325A9j
		mov	esi, [esi]
		cmp	dword ptr [esi+18h], 0FACADE2h
		jnz	short loc_43263A
		push	esi
		call	sub_40177B
		add	esp, 4
		test	eax, eax
		jnz	short loc_43263F
		mov	ecx, [esi+0Ch]
		inc	ecx
		mov	eax, ecx
		mov	[esi+0Ch], ecx
		cmp	eax, 7FFFFFFFh
		jnz	short loc_43262D
		lea	edi, [esi+4]
		push	edi
		call	sub_402225
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jz	short loc_4325FD
		push	esi
		call	sub_4010C3
		add	esp, 4
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4325FD:				; CODE XREF: ___:004325ECj
		mov	eax, [esi+14h]
		mov	ebx, [esi+0Ch]
		sub	ebx, eax
		push	edi
		mov	[esi+0Ch], ebx
		mov	dword ptr [esi+14h], 0
		call	sub_4010C3
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jz	short loc_43262D
		push	esi
		call	sub_4010C3
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_43262D:				; CODE XREF: ___:004325DAj
					; ___:0043261Cj
		push	esi
		call	sub_4010C3
		add	esp, 4
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_43263A:				; CODE XREF: ___:00432589j
					; ___:00432593j ...
		mov	eax, 16h


loc_43263F:				; CODE XREF: ___:004325AEj
					; ___:004325CAj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_432690:				; CODE XREF: ___:00401FD2j
		push	ebx
		push	esi
		mov	esi, [esp+0Ch]
		push	edi
		test	esi, esi
		jz	loc_432771
		mov	eax, [esi]
		test	eax, eax
		jz	loc_432771
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4326C4
		push	esi
		call	sub_40184D
		add	esp, 4
		test	eax, eax
		jz	short loc_4326C4
		cmp	eax, 10h
		jnz	loc_432776


loc_4326C4:				; CODE XREF: ___:004326ACj
					; ___:004326B9j
		mov	esi, [esi]
		cmp	dword ptr [esi+18h], 0FACADE2h
		jnz	loc_432771
		push	esi
		call	sub_40177B
		add	esp, 4
		test	eax, eax
		jnz	loc_432776
		lea	ebx, [esi+4]
		push	ebx
		call	sub_40177B
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jz	short loc_432709
		push	esi
		call	sub_4010C3
		add	esp, 4
		test	eax, eax
		jnz	short loc_432776
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_432709:				; CODE XREF: ___:004326F4j
		mov	eax, [esi+10h]
		test	eax, eax
		jnz	short loc_432759
		mov	eax, [esi+14h]
		test	eax, eax
		jle	short loc_432726
		mov	ecx, [esi+0Ch]
		mov	dword ptr [esi+14h], 0
		sub	ecx, eax
		mov	[esi+0Ch], ecx


loc_432726:				; CODE XREF: ___:00432715j
		mov	eax, [esi+0Ch]
		test	eax, eax
		jle	short loc_432764
		push	ebx
		call	sub_4010C3
		add	esp, 4
		mov	edi, eax
		test	edi, edi
		push	esi
		jz	short loc_43274B
		call	sub_4010C3
		add	esp, 4
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_43274B:				; CODE XREF: ___:0043273Bj
		call	sub_4010C3
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jnz	short loc_43275E


loc_432759:				; CODE XREF: ___:0043270Ej
		mov	edi, 10h


loc_43275E:				; CODE XREF: ___:00432757j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_432764:				; CODE XREF: ___:0043272Bj
		mov	eax, edi
		mov	dword ptr [esi+10h], 1
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_432771:				; CODE XREF: ___:00432699j
					; ___:004326A3j ...
		mov	eax, 16h


loc_432776:				; CODE XREF: ___:004326BEj
					; ___:004326DEj ...
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 6 dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4327C0:				; CODE XREF: ___:00401BF9j
		mov	eax, [esp+4]
		push	eax
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		jz	short loc_4327D7
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------


loc_4327D7:				; CODE XREF: ___:004327CFj
		mov	eax, [esp+8]
		neg	eax
		sbb	eax, eax
		and	eax, 30h
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_432800:				; CODE XREF: ___:00401E97j
		mov	eax, [esp+4]
		push	eax
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		jnz	short loc_432827
		mov	eax, [esp+8]
		test	eax, eax
		jz	short loc_432827
		cmp	eax, 2
		jbe	short loc_432827
		mov	dword ptr [eax], 0
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_432827:				; CODE XREF: ___:0043280Fj
					; ___:00432817j ...
		mov	eax, 16h
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_432840:				; CODE XREF: ___:0040117Cj
		push	ebx
		mov	ebx, [esp+8]
		push	esi
		push	edi
		push	ebx
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		jnz	short loc_432886
		mov	edi, [esp+14h]
		test	edi, edi
		jz	short loc_432886
		mov	esi, [edi]
		push	eax
		call	sub_40154B
		add	esp, 4
		cmp	esi, eax
		jl	short loc_432886
		push	0
		call	sub_401438
		add	esp, 4
		cmp	esi, eax
		jg	short loc_432886
		mov	eax, [ebx]
		mov	ecx, [edi]
		pop	edi
		pop	esi
		mov	[eax+10h], ecx
		xor	eax, eax
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_432886:				; CODE XREF: ___:00432852j
					; ___:0043285Aj ...
		pop	edi
		pop	esi
		mov	eax, 16h
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4328B0:				; CODE XREF: ___:00401EDDj
		push	esi
		mov	esi, [esp+8]
		push	esi
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		jnz	short loc_4328D5
		mov	eax, [esp+0Ch]
		test	eax, eax
		jz	short loc_4328D5
		mov	ecx, [esi]
		pop	esi
		mov	edx, [ecx+10h]
		mov	[eax], edx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4328D5:				; CODE XREF: ___:004328C0j
					; ___:004328C8j
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4328F0:				; CODE XREF: ___:004015B4j
		push	esi
		mov	esi, [esp+8]
		push	esi
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		jz	short loc_432909
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432909:				; CODE XREF: ___:00432900j
		mov	eax, [esp+0Ch]
		test	eax, eax
		jz	short loc_43291D
		cmp	eax, 1
		jz	short loc_43291D
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_43291D:				; CODE XREF: ___:0043290Fj
					; ___:00432914j
		mov	ecx, [esi]
		pop	esi
		mov	[ecx+14h], eax
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_432940:				; CODE XREF: ___:004019D8j
		push	esi
		mov	esi, [esp+8]
		push	esi
		call	sub_4012B7
		add	esp, 4
		test	eax, eax
		jnz	short loc_432965
		mov	eax, [esp+0Ch]
		test	eax, eax
		jz	short loc_432965
		mov	ecx, [esi]
		pop	esi
		mov	edx, [ecx+14h]
		mov	[eax], edx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_432965:				; CODE XREF: ___:00432950j
					; ___:00432958j
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_432980	proc near		; CODE XREF: sub_401050j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0
		push	esi
		call	sub_401758
		add	esp, 8
		test	eax, eax
		jnz	short loc_4329C5
		mov	eax, [esp+4+arg_4]
		test	eax, eax
		jl	short loc_4329C0
		cmp	eax, 2
		jg	short loc_4329C0
		test	eax, eax
		jz	short loc_4329AC
		mov	eax, 30h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4329AC:				; CODE XREF: sub_432980+23j
		mov	eax, [esp+4+arg_8]
		mov	ecx, [eax]
		push	ecx
		push	0
		push	esi
		call	sub_4020B3
		add	esp, 0Ch
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4329C0:				; CODE XREF: sub_432980+1Aj
					; sub_432980+1Fj
		mov	eax, 16h


loc_4329C5:				; CODE XREF: sub_432980+12j
		pop	esi
		retn
sub_432980	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4329F0	proc near		; CODE XREF: sub_4020B3j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_8]
		push	edi
		mov	edi, [esp+8+arg_4]
		push	edi
		mov	[esp+0Ch+arg_8], esi
		call	sub_40154B
		add	esp, 4
		cmp	esi, eax
		jl	loc_432A95
		push	edi
		call	sub_401438
		add	esp, 4
		cmp	esi, eax
		jg	short loc_432A95
		cmp	esi, 0FFFFFFF1h
		jle	short loc_432A30
		cmp	esi, 0FFFFFFFEh
		jge	short loc_432A30
		mov	[esp+8+arg_8], 0FFFFFFFEh
		jmp	short loc_432A42
; ---------------------------------------------------------------------------


loc_432A30:				; CODE XREF: sub_4329F0+2Fj
					; sub_4329F0+34j
		cmp	esi, 0Fh
		jge	short loc_432A42
		cmp	esi, 2
		jle	short loc_432A42
		mov	[esp+8+arg_8], 2


loc_432A42:				; CODE XREF: sub_4329F0+3Ej
					; sub_4329F0+43j ...
		mov	edi, [esp+8+arg_0]
		push	ebx
		push	ebp
		lea	ebp, [edi+24h]
		push	ebp
		call	sub_402225
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jnz	short loc_432A8E
		mov	eax, [esp+10h+arg_8]
		mov	ecx, [edi+4]
		push	eax
		push	ecx
		nop
		call	near ptr 27306C1h
		test	eax, eax
		jnz	short loc_432A82
		push	ebp
		mov	ebx, 16h
		call	sub_4010C3
		add	esp, 4
		mov	eax, ebx
		pop	ebp
		pop	ebx
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432A82:				; CODE XREF: sub_4329F0+7Bj
		push	ebp
		mov	[edi+28h], esi
		call	sub_4010C3
		add	esp, 4


loc_432A8E:				; CODE XREF: sub_4329F0+68j
		mov	eax, ebx
		pop	ebp
		pop	ebx
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432A95:				; CODE XREF: sub_4329F0+19j
					; sub_4329F0+2Aj
		pop	edi
		mov	eax, 16h
		pop	esi
		retn
sub_4329F0	endp

; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_432AD0	proc near		; CODE XREF: sub_40218Fj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0
		push	esi
		call	sub_401758
		add	esp, 8
		test	eax, eax
		jnz	short loc_432B09
		mov	ecx, [esp+4+arg_4]
		cmp	ecx, 2
		jbe	short loc_432B04
		mov	eax, [esp+4+arg_8]
		test	eax, eax
		jz	short loc_432B04
		mov	dword ptr [ecx], 0
		mov	ecx, [esi+28h]
		mov	[eax], ecx
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432B04:				; CODE XREF: sub_432AD0+1Bj
					; sub_432AD0+23j
		mov	eax, 16h


loc_432B09:				; CODE XREF: sub_432AD0+12j
		pop	esi
		retn
sub_432AD0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_432B20	proc near		; CODE XREF: sub_401438j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jl	short loc_432B33
		cmp	eax, 2
		jg	short loc_432B33
		mov	eax, 0Fh
		retn
; ---------------------------------------------------------------------------


loc_432B33:				; CODE XREF: sub_432B20+6j
					; sub_432B20+Bj
		nop
		call	near ptr 77C1F2BCh
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh
		retn
sub_432B20	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_432B60	proc near		; CODE XREF: sub_40154Bj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jl	short loc_432B73
		cmp	eax, 2
		jg	short loc_432B73
		mov	eax, 0FFFFFFF1h
		retn
; ---------------------------------------------------------------------------


loc_432B73:				; CODE XREF: sub_432B60+6j
					; sub_432B60+Bj
		nop
		call	near ptr 77C1F2BCh
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh
		retn
sub_432B60	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_432BA0:				; CODE XREF: ___:00401AC8j
		push	esi
		mov	esi, [esp+8]
		test	esi, esi
		jz	short loc_432BE5
		nop
		call	near ptr 2730654h
		cmp	esi, eax
		jz	short loc_432BE5
		push	esi
		push	0
		push	200h
		call	near ptr 2780000h
		nop
		test	eax, eax
		jnz	short loc_432BE5
		nop
		call	near ptr 27B07B3h
		mov	esi, eax
		sub	esi, 5
		neg	esi
		sbb	esi, esi
		and	esi, 2
		inc	esi
		call	near ptr 77C1F2BCh
		nop
		mov	[eax], esi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432BE5:				; CODE XREF: ___:00432BA7j
					; ___:00432BB1j ...
		mov	eax, [esp+0Ch]
		test	eax, eax
		jz	short loc_432BFE
		call	near ptr 77C1F2BCh
		nop
		mov	dword ptr [eax], 28h
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432BFE:				; CODE XREF: ___:00432BEBj
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_432C30:				; CODE XREF: ___:0040150Aj
		push	esi
		mov	esi, [esp+8]
		test	esi, esi
		jz	short loc_432C75
		nop
		call	near ptr 2730654h
		cmp	esi, eax
		jz	short loc_432C75
		push	esi
		push	0
		push	400h
		nop
		call	near ptr 2780000h
		test	eax, eax
		jnz	short loc_432C75
		nop
		call	near ptr 27B07B3h
		mov	esi, eax
		sub	esi, 5
		neg	esi
		sbb	esi, esi
		and	esi, 2
		inc	esi
		call	near ptr 77C1F2BCh
		nop
		mov	[eax], esi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432C75:				; CODE XREF: ___:00432C37j
					; ___:00432C41j ...
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_432CA0:				; CODE XREF: ___:00401B4Aj
		push	0
		nop
		call	near ptr 2821E84h
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_432CC0	proc near		; CODE XREF: sub_401C76j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		push	esi
		push	edi
		xor	edi, edi
		test	eax, eax
		jz	short loc_432CDF
		mov	edi, 1
		call	near ptr 77C1F2BCh
		nop
		mov	[eax], edi
		pop	edi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432CDF:				; CODE XREF: sub_432CC0+Aj
		push	4
		push	1
		nop
		call	near ptr 77C2C0C3h
		mov	esi, eax
		add	esp, 8
		test	esi, esi
		jnz	short loc_432CF7
		mov	edi, 0Ch


loc_432CF7:				; CODE XREF: sub_432CC0+30j
		mov	eax, [esp+8+arg_8]
		push	0
		push	3FFFFFFFh
		push	eax
		push	0
		nop
		call	near ptr 2730000h
		test	eax, eax
		mov	[esi], eax
		jnz	short loc_432D24
		mov	edi, 1Ch
		call	near ptr 77C1F2BCh
		nop
		mov	[eax], edi
		pop	edi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432D24:				; CODE XREF: sub_432CC0+4Fj
		test	edi, edi
		jz	short loc_432D36
		nop
		call	near ptr 77C1F2BCh
		mov	[eax], edi
		pop	edi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432D36:				; CODE XREF: sub_432CC0+66j
		mov	ecx, [esp+8+arg_0]
		pop	edi
		xor	eax, eax
		mov	[ecx], esi
		pop	esi
		retn
sub_432CC0	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_432D80	proc near		; CODE XREF: sub_401686j

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		jz	short loc_432DA5
		mov	esi, [edi]
		test	esi, esi
		jz	short loc_432DA5
		mov	dword ptr [edi], 0
		mov	eax, [esi]
		push	eax
		nop
		call	near ptr 28306C9h
		test	eax, eax
		jnz	short loc_432DB7
		mov	[edi], esi


loc_432DA5:				; CODE XREF: sub_432D80+8j
					; sub_432D80+Ej
		call	near ptr 77C1F2BCh
		nop
		mov	dword ptr [eax], 16h
		pop	edi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432DB7:				; CODE XREF: sub_432D80+21j
		push	esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4
		xor	eax, eax
		pop	edi
		pop	esi
		retn
sub_432D80	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_432DF0	proc near		; CODE XREF: sub_4010A5j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		test	eax, eax
		jz	short loc_432E23
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_432E23
		mov	eax, [eax]
		push	0
		push	eax
		nop
		call	near ptr 27603E0h
		cmp	eax, 102h
		jnz	short loc_432E35
		mov	esi, 0Bh
		call	near ptr 77C1F2BCh
		nop
		mov	[eax], esi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432E23:				; CODE XREF: sub_432DF0+7j
					; sub_432DF0+Dj
		mov	esi, 16h
		call	near ptr 77C1F2BCh
		nop
		mov	[eax], esi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_432E35:				; CODE XREF: sub_432DF0+1Fj
		xor	eax, eax
		pop	esi
		retn
sub_432DF0	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_432E60	proc near		; CODE XREF: sub_401041j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		test	eax, eax
		jz	short loc_432E8D
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_432E8D
		mov	eax, [eax]
		push	eax
		call	sub_401640
; ---------------------------------------------------------------------------
		db 8Bh
		dd 4C483F0h, 1F74F685h,	7EC437E8h, 30899077h, 5EFFC883h
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------


loc_432E8D:				; CODE XREF: sub_432E60+7j
					; sub_432E60+Dj
		mov	esi, 16h
		nop
		call	near ptr 77C1F2BCh
		mov	[eax], esi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_432E60	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_432ED0	proc near		; CODE XREF: sub_401898j

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 0Ch
		push	ebp
		mov	ebp, [esp+10h+arg_0]
		test	ebp, ebp
		push	esi
		jnz	short loc_432EF3
		mov	esi, 16h
		call	near ptr 77C1F2BCh
		nop
		mov	[eax], esi
		pop	esi
		or	eax, 0FFFFFFFFh
		pop	ebp
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_432EF3:				; CODE XREF: sub_432ED0+Bj
		push	ebx
		push	edi
		mov	edi, [esp+1Ch+arg_4]
		test	edi, edi
		jnz	short loc_432F02
		or	ebx, 0FFFFFFFFh
		jmp	short loc_432F61
; ---------------------------------------------------------------------------


loc_432F02:				; CODE XREF: sub_432ED0+2Bj
		lea	eax, [esp+1Ch+var_C]
		xor	ebx, ebx
		push	eax
		nop
		call	near ptr 77C49113h
		mov	ecx, [edi]
		mov	esi, [esp+20h+var_C]
		add	esp, 4
		cmp	ecx, esi
		jl	short loc_432F61
		mov	edx, [edi+4]
		mov	eax, 431BDE83h
		add	edx, 7A120h
		mul	edx
		lea	eax, [ecx+ecx*4]
		lea	ecx, [esi+esi*4]
		shr	edx, 12h
		lea	eax, [eax+eax*4]
		lea	ecx, [ecx+ecx*4]
		lea	eax, [eax+eax*4]
		lea	ecx, [ecx+ecx*4]
		shl	ecx, 3
		lea	eax, [edx+eax*8]
		sub	eax, ecx
		mov	ecx, [esp+1Ch+var_8]
		and	ecx, 0FFFFh
		cmp	eax, ecx
		jbe	short loc_432F61
		sub	eax, ecx
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_432F61
		dec	ebx


loc_432F61:				; CODE XREF: sub_432ED0+30j
					; sub_432ED0+4Aj ...
		mov	edx, [ebp+0]
		push	ebx
		mov	eax, [edx]
		push	eax
		call	sub_401D70
sub_432ED0	endp

; ---------------------------------------------------------------------------
		db 83h,	0C4h, 8
		dd 0F685F08Bh, 11745B5Fh, 0C33EE890h, 3089777Eh, 0FFC8835Eh
		dd 0CC4835Dh, 0C0335EC3h, 0CC4835Dh, 909090C3h,	3 dup(90909090h)
		dd 10h dup(0CCCCCCCCh)

; =============== S U B	R O U T	I N E =======================================



sub_432FE0	proc near		; CODE XREF: sub_40103Cj

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_432FFF
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_432FFF
		mov	eax, [eax]
		push	0
		push	1
		push	eax
		nop
		call	near ptr 2720E0Eh
		test	eax, eax
		jnz	short loc_43300F


loc_432FFF:				; CODE XREF: sub_432FE0+6j
					; sub_432FE0+Cj
		nop
		call	near ptr 77C1F2BCh
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_43300F:				; CODE XREF: sub_432FE0+1Dj
		xor	eax, eax
		retn
sub_432FE0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_433030	proc near		; CODE XREF: sub_40204Aj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_433056
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_433056
		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jle	short loc_433056
		mov	eax, [eax]
		push	0
		push	ecx
		push	eax
		call	near ptr 2720E0Eh
		nop
		test	eax, eax
		jnz	short loc_433066


loc_433056:				; CODE XREF: sub_433030+6j
					; sub_433030+Cj ...
		nop
		call	near ptr 77C1F2BCh
		mov	dword ptr [eax], 16h
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_433066:				; CODE XREF: sub_433030+24j
		xor	eax, eax
		retn
sub_433030	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_433080:				; CODE XREF: ___:00401433j
		mov	eax, [esp+4]
		push	esi
		test	eax, eax
		push	edi
		jz	short loc_4330CD
		mov	esi, [eax]
		test	esi, esi
		jz	short loc_4330CD
		mov	edi, [esp+10h]
		test	edi, edi
		jz	short loc_4330CD
		mov	eax, [esi]
		push	0
		push	eax
		nop
		call	near ptr 27603E0h
		cmp	eax, 102h
		jnz	short loc_4330B1
		xor	eax, eax
		mov	[edi], eax
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4330B1:				; CODE XREF: ___:004330A8j
		mov	edx, [esi]
		lea	ecx, [esp+0Ch]
		push	ecx
		push	1
		push	edx
		nop
		call	near ptr 2720E0Eh
		mov	eax, [esp+0Ch]
		inc	eax
		mov	[edi], eax
		pop	edi
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4330CD:				; CODE XREF: ___:00433088j
					; ___:0043308Ej ...
		nop
		call	near ptr 77C1F2BCh
		mov	dword ptr [eax], 16h
		pop	edi
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_433100:				; CODE XREF: ___:0040220Cj
		call	near ptr 77C1F2BCh
		nop
		mov	dword ptr [eax], 28h
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_433120:				; CODE XREF: ___:00402013j
		nop
		call	near ptr 77C1F2BCh
		mov	dword ptr [eax], 28h
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_433140:				; CODE XREF: ___:00401CB2j
		nop
		call	near ptr 77C1F2BCh
		mov	dword ptr [eax], 28h
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_433160	proc near		; CODE XREF: sub_401992j

arg_0		= dword	ptr  4

		push	esi
		push	offset dword_50E960
		xor	esi, esi
		nop
		call	near ptr 7C901005h
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_433194
		push	esi
		push	ecx
		call	sub_4021EE
		add	esp, 8
		mov	esi, eax
		push	offset dword_50E960
		call	near ptr 7C9010EDh
		nop
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_433194:				; CODE XREF: sub_433160+17j
		test	eax, eax
		jnz	short loc_43319D
		mov	esi, 16h


loc_43319D:				; CODE XREF: sub_433160+36j
		push	offset dword_50E960
		nop
		call	near ptr 7C9010EDh
		mov	eax, esi
		pop	esi
		retn
sub_433160	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4331D0	proc near		; CODE XREF: sub_4021EEj

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ecx
		push	ebx
		push	ebp
		mov	ebp, [esp+0Ch+arg_0]
		push	esi
		push	edi
		xor	edi, edi
		cmp	ebp, edi
		mov	[esp+14h+var_4], edi
		jnz	short loc_4331EE
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 16h
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_4331EE:				; CODE XREF: sub_4331D0+11j
		lea	eax, [esp+14h+var_4]
		push	eax
		call	sub_401C26
		mov	ebx, [esp+18h+arg_4]
		add	esp, 4
		test	eax, eax
		jz	short loc_433229
		mov	[esp+14h+var_4], 1


loc_43320B:				; CODE XREF: sub_4331D0+5Ej
					; sub_4331D0+63j
		push	8
		push	1
		nop
		call	near ptr 77C2C0C3h
		mov	esi, eax
		add	esp, 8
		test	esi, esi
		jnz	short loc_433240
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 0Ch
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_433229:				; CODE XREF: sub_4331D0+31j
		cmp	[esp+14h+var_4], 1
		jle	short loc_43320B
		cmp	ebx, 1
		jnz	short loc_43320B
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, 28h
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_433240:				; CODE XREF: sub_4331D0+4Cj
		mov	eax, [esp+14h+var_4]
		cmp	eax, 1
		jle	short loc_43325D
		mov	[esi+4], eax
		mov	dword ptr [esi], 1
		mov	eax, edi
		mov	[ebp+0], esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_43325D:				; CODE XREF: sub_4331D0+77j
		lea	ecx, [esp+14h+arg_0]
		push	ecx
		call	sub_401A0F
		mov	edi, eax
		add	esp, 4
		test	edi, edi
		jnz	short loc_433293
		mov	edx, [esp+14h+arg_0]
		lea	eax, [esp+14h+arg_0]
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	[edx], ebx
		call	sub_402199
		mov	edi, eax
		add	esp, 8
		test	edi, edi
		jnz	short loc_433293
		mov	dword ptr [esi], 3


loc_433293:				; CODE XREF: sub_4331D0+9Ej
					; sub_4331D0+BBj
		lea	edx, [esp+14h+arg_0]
		push	edx
		call	sub_4010AA
		add	esp, 4
		test	edi, edi
		jnz	short loc_4332AF
		mov	eax, edi
		mov	[ebp+0], esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_4332AF:				; CODE XREF: sub_4331D0+D2j
		push	esi
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4
		mov	eax, edi
		mov	dword ptr [ebp+0], 0
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_4331D0	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_433310:				; CODE XREF: ___:00401109j
		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+10h]
		xor	ebx, ebx
		test	edi, edi
		jz	loc_4333B5
		mov	esi, [edi]
		test	esi, esi
		jz	loc_4333B5
		cmp	esi, 0FFFFFFFFh
		jz	short loc_433378
		cmp	dword ptr [esi], 3
		jnz	short loc_43335D
		lea	eax, [esi+4]
		push	eax
		call	sub_40222F
		mov	ebx, eax
		add	esp, 4
		test	ebx, ebx
		jnz	short loc_4333AF


loc_433347:				; CODE XREF: ___:0043336Bj
		push	esi
		mov	dword ptr [edi], 0
		call	near ptr 77C2C21Bh
		nop
		add	esp, 4
		mov	eax, ebx
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_43335D:				; CODE XREF: ___:00433333j
		push	1
		push	0
		push	esi
		call	dword_50E3EC
		cmp	eax, 1
		jz	short loc_433347
		mov	ebx, 16h
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_433378:				; CODE XREF: ___:0043332Ej
		push	offset dword_50E960
		nop
		call	near ptr 7C901005h
		cmp	dword ptr [edi], 0FFFFFFFFh
		jnz	short loc_43339F
		push	offset dword_50E960
		mov	dword ptr [edi], 0
		call	near ptr 7C9010EDh
		nop
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_43339F:				; CODE XREF: ___:00433386j
		push	offset dword_50E960
		mov	ebx, 10h
		call	near ptr 7C9010EDh
		nop


loc_4333AF:				; CODE XREF: ___:00433345j
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_4333B5:				; CODE XREF: ___:0043331Bj
					; ___:00433325j
		pop	edi
		pop	esi
		mov	eax, 16h
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4333F0:				; CODE XREF: ___:004021C1j
		push	esi
		mov	esi, [esp+8]
		test	esi, esi
		jz	short loc_433451
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_433451
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_433411
		push	esi
		call	sub_401992
		add	esp, 4
		test	eax, eax
		jnz	short loc_433456


loc_433411:				; CODE XREF: ___:00433402j
		mov	esi, [esi]
		push	1
		push	2
		push	esi
		call	dword_50E3EC
		cmp	eax, 2
		jnz	short loc_433433


loc_433423:				; CODE XREF: ___:00433431j
		push	1
		push	2
		push	esi
		call	dword_50E3EC
		cmp	eax, 2
		jz	short loc_433423


loc_433433:				; CODE XREF: ___:00433421j
		mov	eax, [esi]
		cmp	eax, 2
		jnz	short loc_43343E
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_43343E:				; CODE XREF: ___:00433438j
		cmp	eax, 3
		jnz	short loc_433451
		add	esi, 4
		push	esi
		call	sub_402225
		add	esp, 4
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_433451:				; CODE XREF: ___:004333F7j
					; ___:004333FDj ...
		mov	eax, 16h


loc_433456:				; CODE XREF: ___:0043340Fj
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_433480:				; CODE XREF: ___:00401AA5j
		mov	eax, [esp+4]
		push	esi
		test	eax, eax
		jz	short loc_4334C1
		mov	esi, [eax]
		test	esi, esi
		jz	short loc_4334C1
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_43349B


loc_433494:				; CODE XREF: ___:004334A7j
		mov	eax, 1
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_43349B:				; CODE XREF: ___:00433492j
		push	2
		push	1
		push	esi
		call	dword_50E3EC
		dec	eax
		jz	short loc_433494
		dec	eax
		jz	short loc_4334BD
		dec	eax
		jnz	short loc_4334C1
		add	esi, 4
		push	esi
		call	sub_4010C3
		add	esp, 4
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4334BD:				; CODE XREF: ___:004334AAj
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4334C1:				; CODE XREF: ___:00433487j
					; ___:0043348Dj ...
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4334F0:				; CODE XREF: ___:00401933j
		push	esi
		mov	esi, [esp+8]
		test	esi, esi
		jz	short loc_433540
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_433540
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_433511
		push	esi
		call	sub_401992
		add	esp, 4
		test	eax, eax
		jnz	short loc_433545


loc_433511:				; CODE XREF: ___:00433502j
		mov	esi, [esi]
		push	1
		push	2
		push	esi
		call	dword_50E3EC
		dec	eax
		jz	short loc_43353C
		dec	eax
		jz	short loc_433535
		dec	eax
		jnz	short loc_433540
		add	esi, 4
		push	esi
		call	sub_40177B
		add	esp, 4
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_433535:				; CODE XREF: ___:00433522j
		mov	eax, 10h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_43353C:				; CODE XREF: ___:0043351Fj
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_433540:				; CODE XREF: ___:004334F7j
					; ___:004334FDj ...
		mov	eax, 16h


loc_433545:				; CODE XREF: ___:0043350Fj
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_433570:				; CODE XREF: ___:00401244j
		push	esi
		mov	esi, [esp+8]
		push	0
		push	esi
		call	sub_401758
		add	esp, 8
		test	eax, eax
		jnz	short loc_43359C
		mov	eax, [esi+20h]
		mov	ecx, 1
		cmp	eax, ecx
		jnz	short loc_433597
		mov	eax, 16h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_433597:				; CODE XREF: ___:0043358Ej
		xor	eax, eax
		mov	[esi+20h], ecx


loc_43359C:				; CODE XREF: ___:00433582j
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4335B0	proc near		; CODE XREF: sub_40175Dj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0
		push	esi
		call	sub_401758
		add	esp, 8
		test	eax, eax
		jnz	short loc_43363C
		call	sub_4012E4
; ---------------------------------------------------------------------------
		test	eax, eax
		jnz	short loc_4335D4
		mov	eax, 2
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4335D4:				; CODE XREF: sub_4335B0+1Bj
		push	edi
		push	esi
		push	eax
		call	sub_401A50
		add	esp, 8
		test	eax, eax
		jz	short loc_4335ED
		mov	edi, 24h
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4335ED:				; CODE XREF: sub_4335B0+31j
		cmp	dword ptr [esi+20h], 1
		jnz	short loc_4335FD
		mov	edi, 16h
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4335FD:				; CODE XREF: sub_4335B0+41j
		mov	eax, [esi+4]
		push	eax
		call	sub_401640
; ---------------------------------------------------------------------------
		dw 0F88Bh
		dd 8504C483h, 8B2575FFh, 85102444h, 8B0F74C0h, 5150044Eh
		dd 0D4DDE890h, 0C085022Eh, 0E8560E74h, 0FFFCE181h, 8B04C483h
		dd 0C35E5FC7h, 3BFh, 5FC78B00h
; ---------------------------------------------------------------------------


loc_43363C:				; CODE XREF: sub_4335B0+12j
		pop	esi
		retn
sub_4335B0	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_433670	proc near		; CODE XREF: sub_4015FFj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	10h
		push	1
		xor	edi, edi
		nop
		call	near ptr 77C2C0C3h
		mov	esi, eax
		add	esp, 8
		test	esi, esi
		jnz	short loc_433695
		mov	ecx, [esp+8+arg_0]
		pop	edi
		mov	eax, 0Ch
		mov	[ecx], esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_433695:				; CODE XREF: sub_433670+15j
		nop
		call	near ptr 272071Bh
		cmp	eax, 0FFFFFFFFh
		mov	[esi], eax
		jnz	short loc_4336BE
		push	esi
		mov	edi, 0Bh
		nop
		call	near ptr 77C2C21Bh
		mov	edx, [esp+0Ch+arg_0]
		add	esp, 4
		xor	eax, eax
		mov	[edx], eax
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4336BE:				; CODE XREF: sub_433670+30j
		mov	eax, [esp+8+arg_4]
		test	eax, eax
		jz	short loc_4336DB
		mov	[esi+4], eax
		mov	eax, [esp+8+arg_0]
		mov	dword ptr [esi+8], 0FFFFFFFFh
		mov	[eax], esi
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4336DB:				; CODE XREF: sub_433670+54j
		mov	ecx, [esp+8+arg_0]
		mov	eax, edi
		pop	edi
		mov	[ecx], esi
		pop	esi
		retn
sub_433670	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_433710	proc near		; CODE XREF: sub_401AA0j

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	ebp
		xor	ebp, ebp
		cmp	ebx, ebp
		jz	loc_4337A0
		cmp	[ebx+0Ch], ebp
		jz	short loc_43377C
		cmp	[ebx+4], ebp
		jz	short loc_43377C
		lea	eax, [ebx+8]
		push	eax
		call	sub_402225
		add	esp, 4
		test	eax, eax
		jnz	short loc_43377C
		push	esi
		mov	esi, [ebx+0Ch]
		cmp	esi, ebp
		jz	short loc_43376F
		push	edi


loc_433743:				; CODE XREF: sub_433710+5Cj
		push	esi
		call	sub_402225
		add	esp, 4
		test	eax, eax
		jnz	short loc_43376A
		mov	edi, [esi+10h]
		push	esi
		mov	[esi+8], ebp
		mov	[esi+10h], ebp
		call	sub_4010C3
		push	esi
		call	sub_40105F
		add	esp, 8
		mov	esi, edi


loc_43376A:				; CODE XREF: sub_433710+3Ej
		cmp	esi, ebp
		jnz	short loc_433743
		pop	edi


loc_43376F:				; CODE XREF: sub_433710+30j
		lea	eax, [ebx+8]
		push	eax
		call	sub_4010C3
		add	esp, 4
		pop	esi


loc_43377C:				; CODE XREF: sub_433710+13j
					; sub_433710+18j ...
		mov	eax, [ebx]
		push	eax
		nop
		call	near ptr 2720000h
		cmp	[ebx+4], ebp
		jz	short loc_433796
		lea	ecx, [ebx+8]
		push	ecx
		call	sub_40222F
		add	esp, 4


loc_433796:				; CODE XREF: sub_433710+78j
		push	ebx
		nop
		call	near ptr 77C2C21Bh
		add	esp, 4


loc_4337A0:				; CODE XREF: sub_433710+Aj
		pop	ebp
		xor	eax, eax
		pop	ebx
		retn
sub_433710	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4337E0	proc near		; CODE XREF: sub_4020DBj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, dword_50E3D8
		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, [esp+8+arg_0]
		cmp	esi, eax
		jz	short loc_433804
		call	sub_4012E4
; ---------------------------------------------------------------------------
		test	eax, eax
		jnz	short loc_433813
		pop	esi
		mov	eax, 2
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_433804:				; CODE XREF: sub_4337E0+11j
		push	eax
		call	sub_401190
; ---------------------------------------------------------------------------
		add	esp, 4
		test	eax, eax
		jnz	short loc_433813
		mov	eax, ebx


loc_433813:				; CODE XREF: sub_4337E0+1Aj
					; sub_4337E0+2Fj
		push	edi
		xor	edi, edi
		test	esi, esi
		jz	short loc_433875
		test	eax, eax
		jz	short loc_433862
		mov	ecx, [esi+4]
		test	ecx, ecx
		jz	short loc_433862
		test	ebx, ebx
		jz	short loc_433862
		mov	ecx, [eax+80h]
		test	ecx, ecx
		mov	[esp+0Ch+arg_0], ecx
		jz	short loc_43384D


loc_433837:				; CODE XREF: sub_4337E0+65j
		cmp	[ecx+8], esi
		jz	short loc_433849
		mov	ecx, [ecx+0Ch]
		test	ecx, ecx
		mov	[esp+0Ch+arg_0], ecx
		jnz	short loc_433837
		jmp	short loc_43384D
; ---------------------------------------------------------------------------


loc_433849:				; CODE XREF: sub_4337E0+5Aj
		test	ecx, ecx
		jnz	short loc_433862


loc_43384D:				; CODE XREF: sub_4337E0+55j
					; sub_4337E0+67j
		push	esi
		push	eax
		lea	eax, [esp+14h+arg_0]
		push	eax
		call	sub_401DC5
		mov	edi, eax
		add	esp, 0Ch
		test	edi, edi
		jnz	short loc_433875


loc_433862:				; CODE XREF: sub_4337E0+3Cj
					; sub_4337E0+43j ...
		mov	ecx, [esi]
		push	ebx
		push	ecx
		nop
		call	near ptr 2740000h
		test	eax, eax
		jnz	short loc_433875
		mov	edi, 0Bh


loc_433875:				; CODE XREF: sub_4337E0+38j
					; sub_4337E0+80j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4337E0	endp

; ---------------------------------------------------------------------------
		db 5 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4338B0	proc near		; CODE XREF: sub_401190j
		push	ebx
		push	esi
		push	edi
		call	near ptr 27B07B3h
		nop
		mov	esi, eax
		call	sub_436F5A
sub_4338B0	endp

; ---------------------------------------------------------------------------
		dd 448BF88Bh, 88B1024h,	0E2E89051h, 56022DD2h, 0E890D88Bh
		dd 22DD4C9h, 36C4E857h,	8B5F0000h, 0C35B5EC3h, 3 dup(90909090h)
		dd 4 dup(0CCCCCCCCh)

; =============== S U B	R O U T	I N E =======================================



sub_433900	proc near		; CODE XREF: sub_401A55j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		mov	[eax+14h], ecx
		mov	[eax+10h], ecx
		mov	dword ptr [eax], 67452301h
		mov	dword ptr [eax+4], 0EFCDAB89h
		mov	dword ptr [eax+8], 98BADCFEh
		mov	dword ptr [eax+0Ch], 10325476h
		retn
sub_433900	endp

; ---------------------------------------------------------------------------
		db 8 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_433940	proc near		; CODE XREF: sub_401C12j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		mov	edi, [esp+10h+arg_8]
		mov	ecx, [esi+10h]
		mov	eax, ecx
		lea	edx, ds:0[edi*8]
		shr	eax, 3
		lea	ecx, [ecx+edi*8]
		and	eax, 3Fh
		cmp	ecx, edx
		mov	[esi+10h], ecx
		jnb	short loc_43396B
		inc	dword ptr [esi+14h]


loc_43396B:				; CODE XREF: sub_433940+26j
		mov	ebx, [esi+14h]
		mov	ecx, edi
		shr	ecx, 1Dh
		add	ebx, ecx
		mov	[esi+14h], ebx
		mov	ebx, 40h
		sub	ebx, eax
		cmp	edi, ebx
		jb	short loc_4339C9
		mov	edx, [esp+10h+arg_4]
		push	ebx
		lea	eax, [eax+esi+18h]
		push	edx
		push	eax
		call	sub_434740
		lea	ecx, [esi+18h]
		push	ecx
		push	esi
		call	sub_433AB0
		mov	ebp, ebx
		add	ebx, 3Fh
		add	esp, 14h
		cmp	ebx, edi
		jnb	short loc_4339C5


loc_4339A9:				; CODE XREF: sub_433940+83j
		mov	edx, [esp+10h+arg_4]
		lea	eax, [edx+ebx-3Fh]
		push	eax
		push	esi
		call	sub_433AB0
		add	ebx, 40h
		add	esp, 8
		add	ebp, 40h
		cmp	ebx, edi
		jb	short loc_4339A9


loc_4339C5:				; CODE XREF: sub_433940+67j
		xor	eax, eax
		jmp	short loc_4339CB
; ---------------------------------------------------------------------------


loc_4339C9:				; CODE XREF: sub_433940+41j
		xor	ebp, ebp


loc_4339CB:				; CODE XREF: sub_433940+87j
		mov	ecx, [esp+10h+arg_4]
		sub	edi, ebp
		add	ebp, ecx
		push	edi
		lea	edx, [eax+esi+18h]
		push	ebp
		push	edx
		call	sub_434740
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_433940	endp

; ---------------------------------------------------------------------------
		db 9 dup(90h)
		db 30h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_433A20	proc near		; CODE XREF: sub_402158j

var_8		= byte ptr -8
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 8
		lea	eax, [esp+8+var_8]
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_4]
		push	8
		lea	esi, [edi+10h]
		push	esi
		push	eax
		call	sub_434660
		mov	eax, [esi]
		add	esp, 0Ch
		shr	eax, 3
		and	eax, 3Fh
		mov	ecx, 38h
		cmp	eax, 38h
		jb	short loc_433A53
		mov	ecx, 78h


loc_433A53:				; CODE XREF: sub_433A20+2Cj
		sub	ecx, eax
		push	ecx
		push	offset dword_445770
		push	edi
		call	sub_401C12
		lea	ecx, [esp+1Ch+var_8]
		push	8
		push	ecx
		push	edi
		call	sub_401C12
		mov	edx, [esp+28h+arg_0]
		push	10h
		push	edi
		push	edx
		call	sub_434660
		push	58h
		push	0
		push	edi
		call	sub_434770
		add	esp, 30h
		pop	edi
		pop	esi
		add	esp, 8
		retn
sub_433A20	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_433AB0	proc near		; CODE XREF: sub_433940+58p
					; sub_433940+73p

var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		sub	esp, 40h
		mov	ecx, [esp+40h+arg_4]
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+4Ch+arg_0]
		push	edi
		push	40h
		lea	edx, [esp+54h+var_40]
		mov	eax, [esi]
		mov	edi, [esi+4]
		mov	ebx, [esi+8]
		mov	ebp, [esi+0Ch]
		push	ecx
		push	edx
		mov	[esp+5Ch+arg_0], eax
		call	sub_4346D0
		mov	eax, edi
		mov	edx, [esp+5Ch+arg_0]
		not	eax
		mov	ecx, ebx
		and	eax, ebp
		and	ecx, edi
		or	eax, ecx
		mov	ecx, [esp+5Ch+var_40]
		add	eax, ecx
		lea	ecx, [edx+eax-28955B88h]
		mov	edx, edi
		mov	eax, ecx
		shr	eax, 19h
		shl	ecx, 7
		or	eax, ecx
		add	eax, edi
		mov	ecx, eax
		and	edx, eax
		not	ecx
		and	ecx, ebx
		or	ecx, edx
		mov	edx, [esp+5Ch+var_3C]
		add	ecx, edx
		lea	edx, [ecx+ebp-173848AAh]
		mov	ecx, edx
		shr	ecx, 14h
		shl	edx, 0Ch
		or	ecx, edx
		add	ecx, eax
		mov	edx, ecx
		mov	ebp, ecx
		not	edx
		and	edx, edi
		and	ebp, eax
		or	edx, ebp
		mov	ebp, [esp+5Ch+var_38]
		add	edx, ebp
		mov	ebp, ecx
		lea	ebx, [ebx+edx+242070DBh]
		mov	edx, ebx
		shr	edx, 0Fh
		shl	ebx, 11h
		or	edx, ebx
		add	edx, ecx
		mov	ebx, edx
		and	ebp, edx
		not	ebx
		and	ebx, eax
		or	ebx, ebp
		mov	ebp, [esp+5Ch+var_34]
		add	ebx, ebp
		lea	ebx, [edi+ebx-3E423112h]
		mov	edi, ebx
		shl	edi, 16h
		shr	ebx, 0Ah
		or	edi, ebx
		mov	ebx, edx
		add	edi, edx
		mov	[esp+5Ch+arg_0], edi
		mov	ebp, [esp+5Ch+arg_0]
		not	edi
		and	edi, ecx
		and	ebx, ebp
		mov	ebp, [esp+5Ch+var_30]
		or	edi, ebx
		add	edi, ebp
		mov	ebx, [esp+5Ch+arg_0]
		mov	ebp, ebx
		lea	eax, [eax+edi-0A83F051h]
		mov	edi, eax
		shr	edi, 19h
		shl	eax, 7
		or	edi, eax
		add	edi, ebx
		mov	eax, edi
		and	ebp, edi
		not	eax
		and	eax, edx
		or	eax, ebp
		mov	ebp, [esp+5Ch+var_2C]
		add	eax, ebp
		lea	ecx, [ecx+eax+4787C62Ah]
		mov	eax, ecx
		shr	eax, 14h
		shl	ecx, 0Ch
		or	eax, ecx
		add	eax, edi
		mov	ecx, eax
		mov	ebp, eax
		not	ecx
		and	ecx, ebx
		and	ebp, edi
		or	ecx, ebp
		mov	ebp, [esp+5Ch+var_28]
		add	ecx, ebp
		mov	ebp, eax
		lea	edx, [edx+ecx-57CFB9EDh]
		mov	ecx, edx
		shr	ecx, 0Fh
		shl	edx, 11h
		or	ecx, edx
		add	ecx, eax
		mov	edx, ecx
		and	ebp, ecx
		not	edx
		and	edx, edi
		or	edx, ebp
		mov	ebp, [esp+5Ch+var_24]
		add	edx, ebp
		lea	ebx, [ebx+edx-2B96AFFh]
		mov	edx, ebx
		shl	edx, 16h
		shr	ebx, 0Ah
		or	edx, ebx
		mov	ebx, ecx
		add	edx, ecx
		mov	[esp+5Ch+arg_0], edx
		mov	ebp, [esp+5Ch+arg_0]
		not	edx
		and	edx, eax
		and	ebx, ebp
		mov	ebp, [esp+5Ch+var_20]
		or	edx, ebx
		add	edx, ebp
		mov	ebx, [esp+5Ch+arg_0]
		mov	ebp, ebx
		lea	edi, [edi+edx+698098D8h]
		mov	edx, edi
		shr	edx, 19h
		shl	edi, 7
		or	edx, edi
		add	edx, ebx
		mov	edi, edx
		and	ebp, edx
		not	edi
		and	edi, ecx
		or	edi, ebp
		mov	ebp, [esp+5Ch+var_1C]
		add	edi, ebp
		lea	eax, [eax+edi-74BB0851h]
		mov	edi, eax
		shr	edi, 14h
		shl	eax, 0Ch
		or	edi, eax
		add	edi, edx
		mov	eax, edi
		not	eax
		mov	ebp, edi
		and	eax, ebx
		and	ebp, edx
		or	eax, ebp
		mov	ebp, [esp+5Ch+var_18]
		add	eax, ebp
		mov	ebp, edi
		lea	ecx, [ecx+eax-0A44Fh]
		mov	eax, ecx
		shr	eax, 0Fh
		shl	ecx, 11h
		or	eax, ecx
		add	eax, edi
		mov	ecx, eax
		and	ebp, eax
		not	ecx
		and	ecx, edx
		or	ecx, ebp
		mov	ebp, [esp+5Ch+var_14]
		add	ecx, ebp
		lea	ebx, [ebx+ecx-76A32842h]
		mov	ecx, ebx
		shl	ecx, 16h
		shr	ebx, 0Ah
		or	ecx, ebx
		mov	ebx, eax
		add	ecx, eax
		mov	[esp+5Ch+arg_0], ecx
		mov	ebp, [esp+5Ch+arg_0]
		not	ecx
		and	ecx, edi
		and	ebx, ebp
		mov	ebp, [esp+5Ch+var_10]
		or	ecx, ebx
		add	ecx, ebp
		mov	ebx, [esp+5Ch+arg_0]
		mov	ebp, ebx
		lea	edx, [edx+ecx+6B901122h]
		mov	ecx, edx
		shr	ecx, 19h
		shl	edx, 7
		or	ecx, edx
		add	ecx, ebx
		mov	edx, ecx
		and	ebp, ecx
		not	edx
		and	edx, eax
		or	edx, ebp
		mov	ebp, [esp+5Ch+var_C]
		add	edx, ebp
		lea	edi, [edi+edx-2678E6Dh]
		mov	edx, edi
		shr	edx, 14h
		shl	edi, 0Ch
		or	edx, edi
		add	edx, ecx
		mov	ebp, edx
		mov	edi, edx
		not	ebp
		and	edi, ecx
		and	ebx, ebp
		or	edi, ebx
		mov	ebx, [esp+5Ch+var_8]
		add	edi, ebx
		mov	ebx, edx
		lea	eax, [eax+edi-5986BC72h]
		mov	edi, eax
		shr	edi, 0Fh
		shl	eax, 11h
		or	edi, eax
		add	edi, edx
		mov	eax, edi
		and	ebx, edi
		not	eax
		mov	[esp+5Ch+arg_4], eax
		and	eax, ecx
		or	eax, ebx
		mov	ebx, [esp+5Ch+var_4]
		add	eax, ebx
		mov	ebx, [esp+5Ch+arg_0]
		lea	ebx, [ebx+eax+49B40821h]
		mov	eax, ebx
		shl	eax, 16h
		shr	ebx, 0Ah
		or	eax, ebx
		mov	ebx, edx
		add	eax, edi
		mov	[esp+5Ch+arg_0], eax
		and	ebx, eax
		mov	eax, edi
		and	eax, ebp
		mov	ebp, [esp+5Ch+var_3C]
		or	ebx, eax
		add	ebx, ebp
		mov	ebp, edi
		lea	ecx, [ecx+ebx-9E1DA9Eh]
		mov	ebx, [esp+5Ch+arg_0]
		mov	eax, ecx
		shr	eax, 1Bh
		shl	ecx, 5
		or	eax, ecx
		mov	ecx, [esp+5Ch+arg_4]
		add	eax, ebx
		and	ecx, ebx
		and	ebp, eax
		or	ecx, ebp
		mov	ebp, [esp+5Ch+var_28]
		add	ecx, ebp
		mov	ebp, [esp+5Ch+arg_0]
		not	ebx
		lea	edx, [edx+ecx-3FBF4CC0h]
		and	ebx, eax
		mov	ecx, edx
		shr	ecx, 17h
		shl	edx, 9
		or	ecx, edx
		add	ecx, eax
		mov	edx, ecx
		and	edx, ebp
		mov	ebp, [esp+5Ch+var_14]
		or	ebx, edx
		add	ebx, ebp
		lea	edi, [edi+ebx+265E5A51h]
		mov	edx, edi
		shr	edx, 12h
		shl	edi, 0Eh
		or	edx, edi
		mov	edi, eax
		add	edx, ecx
		not	edi
		mov	ebx, edx
		and	edi, ecx
		and	ebx, eax
		or	edi, ebx
		mov	ebx, [esp+5Ch+var_40]
		add	edi, ebx
		mov	ebx, [esp+5Ch+arg_0]
		lea	ebx, [ebx+edi-16493856h]
		mov	edi, ebx
		shl	edi, 14h
		shr	ebx, 0Ch
		or	edi, ebx
		mov	ebx, ecx
		add	edi, edx
		mov	[esp+5Ch+arg_0], edi
		mov	edi, ecx
		mov	ebp, [esp+5Ch+arg_0]
		not	edi
		and	edi, edx
		and	ebx, ebp
		mov	ebp, [esp+5Ch+var_2C]
		or	edi, ebx
		add	edi, ebp
		mov	ebx, [esp+5Ch+arg_0]
		lea	eax, [eax+edi-29D0EFA3h]
		mov	edi, eax
		shr	edi, 1Bh
		shl	eax, 5
		or	edi, eax
		mov	eax, edx
		add	edi, ebx
		not	eax
		mov	ebp, edx
		and	eax, ebx
		and	ebp, edi
		or	eax, ebp
		mov	ebp, [esp+5Ch+var_18]
		add	eax, ebp
		mov	ebp, [esp+5Ch+arg_0]
		not	ebx
		lea	ecx, [ecx+eax+2441453h]
		and	ebx, edi
		mov	eax, ecx
		shr	eax, 17h
		shl	ecx, 9
		or	eax, ecx
		add	eax, edi
		mov	ecx, eax
		and	ecx, ebp
		mov	ebp, [esp+5Ch+var_4]
		or	ebx, ecx
		add	ebx, ebp
		lea	edx, [edx+ebx-275E197Fh]
		mov	ecx, edx
		shr	ecx, 12h
		shl	edx, 0Eh
		or	ecx, edx
		mov	edx, edi
		add	ecx, eax
		not	edx
		mov	ebx, ecx
		and	edx, eax
		and	ebx, edi
		or	edx, ebx
		mov	ebx, [esp+5Ch+var_30]
		add	edx, ebx
		mov	ebx, [esp+5Ch+arg_0]
		lea	ebx, [ebx+edx-182C0438h]
		mov	edx, ebx
		shl	edx, 14h
		shr	ebx, 0Ch
		or	edx, ebx
		mov	ebx, eax
		add	edx, ecx
		mov	[esp+5Ch+arg_0], edx
		mov	edx, eax
		mov	ebp, [esp+5Ch+arg_0]
		not	edx
		and	edx, ecx
		and	ebx, ebp
		mov	ebp, [esp+5Ch+var_1C]
		or	edx, ebx
		add	edx, ebp
		mov	ebx, [esp+5Ch+arg_0]
		mov	ebp, ecx
		lea	edi, [edi+edx+21E1CDE6h]
		mov	edx, edi
		shr	edx, 1Bh
		shl	edi, 5
		or	edx, edi
		mov	edi, ecx
		add	edx, ebx
		not	edi
		and	edi, ebx
		and	ebp, edx
		or	edi, ebp
		mov	ebp, [esp+5Ch+var_8]
		add	edi, ebp
		mov	ebp, [esp+5Ch+arg_0]
		not	ebx
		lea	eax, [eax+edi-3CC8F82Ah]
		and	ebx, edx
		mov	edi, eax
		shr	edi, 17h
		shl	eax, 9
		or	edi, eax
		add	edi, edx
		mov	eax, edi
		and	eax, ebp
		mov	ebp, [esp+5Ch+var_34]
		or	ebx, eax
		add	ebx, ebp
		lea	ecx, [ecx+ebx-0B2AF279h]
		mov	eax, ecx
		shr	eax, 12h
		shl	ecx, 0Eh
		or	eax, ecx
		mov	ecx, edx
		add	eax, edi
		not	ecx
		mov	ebx, eax
		and	ecx, edi
		and	ebx, edx
		or	ecx, ebx
		mov	ebx, [esp+5Ch+var_20]
		add	ecx, ebx
		mov	ebx, [esp+5Ch+arg_0]
		lea	ebx, [ebx+ecx+455A14EDh]
		mov	ecx, ebx
		shl	ecx, 14h
		shr	ebx, 0Ch
		or	ecx, ebx
		mov	ebx, edi
		add	ecx, eax
		mov	[esp+5Ch+arg_0], ecx
		mov	ecx, edi
		mov	ebp, [esp+5Ch+arg_0]
		not	ecx
		and	ecx, eax
		and	ebx, ebp
		mov	ebp, [esp+5Ch+var_C]
		or	ecx, ebx
		add	ecx, ebp
		mov	ebx, [esp+5Ch+arg_0]
		mov	ebp, eax
		lea	edx, [edx+ecx-561C16FBh]
		mov	ecx, edx
		shr	ecx, 1Bh
		shl	edx, 5
		or	ecx, edx
		mov	edx, eax
		add	ecx, ebx
		not	edx
		and	edx, ebx
		and	ebp, ecx
		or	edx, ebp
		mov	ebp, [esp+5Ch+var_38]
		add	edx, ebp
		mov	ebp, [esp+5Ch+arg_0]
		not	ebx
		lea	edi, [edi+edx-3105C08h]
		and	ebx, ecx
		mov	edx, edi
		shr	edx, 17h
		shl	edi, 9
		or	edx, edi
		add	edx, ecx
		mov	edi, edx
		and	edi, ebp
		mov	ebp, [esp+5Ch+var_24]
		or	ebx, edi
		add	ebx, ebp
		lea	eax, [eax+ebx+676F02D9h]
		mov	edi, eax
		shr	edi, 12h
		shl	eax, 0Eh
		or	edi, eax
		mov	eax, ecx
		add	edi, edx
		not	eax
		mov	ebx, edi
		and	eax, edx
		and	ebx, ecx
		or	eax, ebx
		mov	ebx, [esp+5Ch+var_10]
		add	eax, ebx
		mov	ebx, [esp+5Ch+arg_0]
		lea	ebx, [ebx+eax-72D5B376h]
		mov	eax, ebx
		shl	eax, 14h
		shr	ebx, 0Ch
		or	eax, ebx
		add	eax, edi
		mov	ebp, [esp+5Ch+var_2C]
		mov	ebx, edx
		xor	ebx, edi
		xor	ebx, eax
		add	ebx, ebp
		mov	ebp, [esp+5Ch+var_20]
		lea	ecx, [ecx+ebx-5C6BEh]
		mov	ebx, ecx
		shr	ebx, 1Ch
		shl	ecx, 4
		or	ebx, ecx
		mov	ecx, edi
		add	ebx, eax
		xor	ecx, eax
		xor	ecx, ebx
		add	ecx, ebp
		mov	ebp, [esp+5Ch+var_14]
		lea	ecx, [edx+ecx-788E097Fh]
		mov	edx, ecx
		shr	edx, 15h
		shl	ecx, 0Bh
		or	edx, ecx
		add	edx, ebx
		mov	ecx, edx
		xor	ecx, eax
		xor	ecx, ebx
		add	ecx, ebp
		mov	ebp, [esp+5Ch+var_8]
		lea	ecx, [edi+ecx+6D9D6122h]
		mov	edi, ecx
		shr	edi, 10h
		shl	ecx, 10h
		or	edi, ecx
		mov	ecx, edx
		add	edi, edx
		xor	ecx, edi
		mov	[esp+5Ch+arg_0], ecx
		xor	ecx, ebx
		add	ecx, ebp
		mov	ebp, [esp+5Ch+var_3C]
		lea	eax, [eax+ecx-21AC7F4h]
		mov	ecx, eax
		shl	ecx, 17h
		shr	eax, 9
		or	ecx, eax
		mov	eax, [esp+5Ch+arg_0]
		add	ecx, edi
		xor	eax, ecx
		add	eax, ebp
		mov	ebp, [esp+5Ch+var_30]
		lea	ebx, [ebx+eax-5B4115BCh]
		mov	eax, ebx
		shr	eax, 1Ch
		shl	ebx, 4
		or	eax, ebx
		mov	ebx, edi
		add	eax, ecx
		xor	ebx, ecx
		xor	ebx, eax
		add	ebx, ebp
		mov	ebp, [esp+5Ch+var_24]
		lea	edx, [edx+ebx+4BDECFA9h]
		mov	ebx, edx
		shr	ebx, 15h
		shl	edx, 0Bh
		or	ebx, edx
		add	ebx, eax
		mov	edx, ebx
		xor	edx, ecx
		xor	edx, eax
		add	edx, ebp
		lea	edi, [edi+edx-944B4A0h]
		mov	edx, edi
		shr	edx, 10h
		shl	edi, 10h
		or	edx, edi
		mov	edi, ebx
		add	edx, ebx
		xor	edi, edx
		mov	ebp, edi
		xor	ebp, eax
		add	ebp, [esp+5Ch+var_18]
		lea	ebp, [ecx+ebp-41404390h]
		mov	ecx, ebp
		shl	ecx, 17h
		shr	ebp, 9
		or	ecx, ebp
		mov	ebp, [esp+5Ch+var_C]
		add	ecx, edx
		xor	edi, ecx
		add	edi, ebp
		mov	ebp, [esp+5Ch+var_40]
		lea	edi, [eax+edi+289B7EC6h]
		mov	eax, edi
		shr	eax, 1Ch
		shl	edi, 4
		or	eax, edi
		mov	edi, edx
		add	eax, ecx
		xor	edi, ecx
		xor	edi, eax
		add	edi, ebp
		mov	ebp, [esp+5Ch+var_34]
		lea	ebx, [ebx+edi-155ED806h]
		mov	edi, ebx
		shr	edi, 15h
		shl	ebx, 0Bh
		or	edi, ebx
		add	edi, eax
		mov	ebx, edi
		xor	ebx, ecx
		xor	ebx, eax
		add	ebx, ebp
		lea	edx, [edx+ebx-2B10CF7Bh]
		mov	ebx, edx
		shr	ebx, 10h
		shl	edx, 10h
		or	ebx, edx
		mov	edx, edi
		add	ebx, edi
		xor	edx, ebx
		mov	ebp, edx
		xor	ebp, eax
		add	ebp, [esp+5Ch+var_28]
		lea	ebp, [ecx+ebp+4881D05h]
		mov	ecx, ebp
		shl	ecx, 17h
		shr	ebp, 9
		or	ecx, ebp
		mov	ebp, [esp+5Ch+var_1C]
		add	ecx, ebx
		xor	edx, ecx
		add	edx, ebp
		lea	edx, [eax+edx-262B2FC7h]
		mov	eax, edx
		shr	eax, 1Ch
		shl	edx, 4
		or	eax, edx
		mov	edx, ebx
		add	eax, ecx
		xor	edx, ecx
		xor	edx, eax
		add	edx, [esp+5Ch+var_10]
		lea	edi, [edi+edx-1924661Bh]
		mov	edx, edi
		shr	edx, 15h
		shl	edi, 0Bh
		or	edx, edi
		add	edx, eax
		mov	edi, edx
		xor	edi, ecx
		xor	edi, eax
		add	edi, [esp+5Ch+var_4]
		lea	ebx, [ebx+edi+1FA27CF8h]
		mov	edi, ebx
		shr	edi, 10h
		shl	ebx, 10h
		or	edi, ebx
		mov	ebx, edx
		add	edi, edx
		xor	ebx, edi
		xor	ebx, eax
		add	ebx, [esp+5Ch+var_38]
		lea	ecx, [ecx+ebx-3B53A99Bh]
		mov	ebx, ecx
		shl	ebx, 17h
		shr	ecx, 9
		or	ebx, ecx
		mov	ecx, edx
		add	ebx, edi
		not	ecx
		or	ecx, ebx
		xor	ecx, edi
		add	ecx, [esp+5Ch+var_40]
		lea	eax, [eax+ecx-0BD6DDBCh]
		mov	ecx, eax
		shr	ecx, 1Ah
		shl	eax, 6
		or	ecx, eax
		mov	eax, edi
		add	ecx, ebx
		not	eax
		or	eax, ecx
		xor	eax, ebx
		add	eax, [esp+5Ch+var_24]
		lea	edx, [edx+eax+432AFF97h]
		mov	eax, edx
		shr	eax, 16h
		shl	edx, 0Ah
		or	eax, edx
		mov	edx, ebx
		add	eax, ecx
		not	edx
		or	edx, eax
		xor	edx, ecx
		add	edx, [esp+5Ch+var_8]
		lea	edi, [edi+edx-546BDC59h]
		mov	edx, edi
		shr	edx, 11h
		shl	edi, 0Fh
		or	edx, edi
		mov	edi, ecx
		add	edx, eax
		not	edi
		or	edi, edx
		xor	edi, eax
		add	edi, [esp+5Ch+var_2C]
		lea	ebx, [ebx+edi-36C5FC7h]
		mov	edi, ebx
		shl	edi, 15h
		shr	ebx, 0Bh
		or	edi, ebx
		mov	ebx, eax
		add	edi, edx
		not	ebx
		or	ebx, edi
		xor	ebx, edx
		add	ebx, [esp+5Ch+var_10]
		lea	ecx, [ecx+ebx+655B59C3h]
		mov	ebx, ecx
		shr	ebx, 1Ah
		shl	ecx, 6
		or	ebx, ecx
		mov	ecx, edx
		add	ebx, edi
		not	ecx
		or	ecx, ebx
		xor	ecx, edi
		add	ecx, [esp+5Ch+var_34]
		lea	eax, [eax+ecx-70F3336Eh]
		mov	ecx, eax
		shr	ecx, 16h
		shl	eax, 0Ah
		or	ecx, eax
		mov	eax, edi
		add	ecx, ebx
		not	eax
		or	eax, ecx
		xor	eax, ebx
		add	eax, [esp+5Ch+var_18]
		lea	edx, [edx+eax-100B83h]
		mov	eax, edx
		shr	eax, 11h
		shl	edx, 0Fh
		or	eax, edx
		mov	edx, ebx
		add	eax, ecx
		not	edx
		or	edx, eax
		xor	edx, ecx
		add	edx, [esp+5Ch+var_3C]
		lea	edi, [edi+edx-7A7BA22Fh]
		mov	edx, edi
		shl	edx, 15h
		shr	edi, 0Bh
		or	edx, edi
		mov	edi, ecx
		add	edx, eax
		not	edi
		or	edi, edx
		xor	edi, eax
		add	edi, [esp+5Ch+var_20]
		lea	ebx, [ebx+edi+6FA87E4Fh]
		mov	edi, ebx
		shr	edi, 1Ah
		shl	ebx, 6
		or	edi, ebx
		mov	ebx, eax
		add	edi, edx
		not	ebx
		or	ebx, edi
		xor	ebx, edx
		add	ebx, [esp+5Ch+var_4]
		lea	ecx, [ecx+ebx-1D31920h]
		mov	ebx, ecx
		shr	ebx, 16h
		shl	ecx, 0Ah
		or	ebx, ecx
		mov	ecx, edx
		add	ebx, edi
		not	ecx
		or	ecx, ebx
		xor	ecx, edi
		add	ecx, [esp+5Ch+var_28]
		lea	eax, [eax+ecx-5CFEBCECh]
		mov	ecx, eax
		shr	ecx, 11h
		shl	eax, 0Fh
		or	ecx, eax
		mov	eax, edi
		add	ecx, ebx
		not	eax
		or	eax, ecx
		xor	eax, ebx
		add	eax, [esp+5Ch+var_C]
		lea	edx, [edx+eax+4E0811A1h]
		mov	eax, edx
		shl	eax, 15h
		shr	edx, 0Bh
		or	eax, edx
		mov	edx, ebx
		add	eax, ecx
		not	edx
		or	edx, eax
		xor	edx, ecx
		add	edx, [esp+5Ch+var_30]
		lea	edi, [edi+edx-8AC817Eh]
		mov	edx, edi
		shr	edx, 1Ah
		shl	edi, 6
		or	edx, edi
		mov	edi, ecx
		add	edx, eax
		not	edi
		or	edi, edx
		xor	edi, eax
		add	edi, [esp+5Ch+var_14]
		lea	ebx, [ebx+edi-42C50DCBh]
		mov	edi, ebx
		shr	edi, 16h
		shl	ebx, 0Ah
		or	edi, ebx
		mov	ebx, eax
		add	edi, edx
		not	ebx
		or	ebx, edi
		push	40h
		xor	ebx, edx
		push	0
		add	ebx, [esp+64h+var_38]
		lea	ecx, [ecx+ebx+2AD7D2BBh]
		mov	ebx, ecx
		shr	ebx, 11h
		shl	ecx, 0Fh
		or	ebx, ecx
		mov	ecx, edx
		add	ebx, edi
		not	ecx
		or	ecx, ebx
		xor	ecx, edi
		add	ecx, ebp
		mov	ebp, [esi+8]
		add	ebp, ebx
		lea	eax, [eax+ecx-14792C6Fh]
		mov	ecx, [esi]
		add	ecx, edx
		mov	edx, eax
		shl	edx, 15h
		shr	eax, 0Bh
		or	edx, eax
		mov	eax, [esi+4]
		add	edx, ebx
		mov	ebx, [esi+0Ch]
		add	eax, edx
		add	ebx, edi
		mov	[esi+4], eax
		lea	eax, [esp+64h+var_40]
		push	eax
		mov	[esi], ecx
		mov	[esi+8], ebp
		mov	[esi+0Ch], ebx
		call	sub_434770
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 40h
		retn
sub_433AB0	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 260h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_434660	proc near		; CODE XREF: sub_433A20+14p
					; sub_433A20+56p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	edi
		mov	edi, [esp+4+arg_8]
		test	edi, edi
		jbe	short loc_4346A7
		mov	edx, [esp+4+arg_0]
		mov	ecx, [esp+4+arg_4]
		push	esi
		or	esi, 0FFFFFFFFh
		lea	eax, [edx+1]
		sub	esi, edx


loc_43467A:				; CODE XREF: sub_434660+44j
		mov	dl, [ecx]
		add	ecx, 4
		mov	[eax-1], dl
		mov	edx, [ecx-4]
		shr	edx, 8
		mov	[eax], dl
		mov	edx, [ecx-4]
		shr	edx, 10h
		mov	[eax+1], dl
		mov	edx, [ecx-4]
		shr	edx, 18h
		mov	[eax+2], dl
		add	eax, 4
		lea	edx, [esi+eax]
		cmp	edx, edi
		jb	short loc_43467A
		pop	esi


loc_4346A7:				; CODE XREF: sub_434660+7j
		pop	edi
		retn
sub_434660	endp

; ---------------------------------------------------------------------------
		db 7 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_4346D0	proc near		; CODE XREF: sub_433AB0+26p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebp
		mov	ebp, [esp+4+arg_8]
		test	ebp, ebp
		jbe	short loc_43471A
		mov	ecx, [esp+4+arg_4]
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, 0FFFFFFFEh
		lea	eax, [ecx+2]
		sub	edi, ecx


loc_4346ED:				; CODE XREF: sub_4346D0+46j
		xor	ecx, ecx
		xor	edx, edx
		mov	ch, [eax+1]
		mov	dl, [eax-1]
		mov	cl, [eax]
		add	eax, 4
		shl	ecx, 8
		or	ecx, edx
		xor	edx, edx
		mov	dl, [eax-6]
		add	esi, 4
		shl	ecx, 8
		or	ecx, edx
		mov	[esi-4], ecx
		lea	ecx, [edi+eax]
		cmp	ecx, ebp
		jb	short loc_4346ED
		pop	edi
		pop	esi


loc_43471A:				; CODE XREF: sub_4346D0+7j
		pop	ebp
		retn
sub_4346D0	endp

; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 20h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_434740	proc near		; CODE XREF: sub_433940+4Ep
					; sub_433940+9Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_8]
		test	esi, esi
		jbe	short loc_43475C
		mov	eax, [esp+4+arg_0]
		mov	ecx, [esp+4+arg_4]
		sub	ecx, eax


loc_434753:				; CODE XREF: sub_434740+1Aj
		mov	dl, [ecx+eax]
		mov	[eax], dl
		inc	eax
		dec	esi
		jnz	short loc_434753


loc_43475C:				; CODE XREF: sub_434740+7j
		pop	esi
		retn
sub_434740	endp

; ---------------------------------------------------------------------------
		db 2 dup(90h)
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_434770	proc near		; CODE XREF: sub_433A20+60p
					; sub_433AB0+932p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_8]
		test	ecx, ecx
		jbe	short locret_43479E
		mov	al, [esp+arg_4]
		push	ebx
		mov	bl, al
		mov	edx, ecx
		mov	bh, bl
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, ebx
		shl	eax, 10h
		mov	ax, bx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		pop	edi
		pop	ebx

locret_43479E:				; CODE XREF: sub_434770+6j
		retn
sub_434770	endp

; ---------------------------------------------------------------------------
		db 90h
		db 10h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4347B0	proc near		; CODE XREF: sub_401C0Dj

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4347B0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	0
		push	0Bh
		push	3
		push	4Fh
		push	14h
		push	5
		lea	eax, [esp+58h+var_3C]
		push	7
		mov	esi, ecx
		push	eax
		call	sub_4019B5
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	[esp+44h+var_4], 0
		call	sub_4017E4
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_4347B0	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	0Dh
		push	4Fh
		push	14h
		push	5
		lea	edx, [esp+30h]
		push	7
		push	edx
		call	sub_4019B5
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+40h], 1
		call	sub_4017E4
		add	esi, 32h
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+1Ch]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+34h]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 90h
		db 30h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4348A0:				; CODE XREF: ___:00401F1Ej
		push	0FFFFFFFFh
		mov	eax, large fs:0
		push	offset loc_43BDF6
		push	eax
		mov	eax, 16D4h
		mov	large fs:0, esp
		call	sub_436840
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+16F0h]
		push	edi
		mov	edi, ecx
		lea	ebx, [esi+7Eh]
		lea	ecx, [edi+4]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_434E5E
		push	80h
		mov	dword ptr [esp+1Ch], 800h
		call	near ptr 77C2C407h
		nop
		add	esp, 4
		mov	ebp, eax
		lea	eax, [esp+64h]
		mov	ecx, esi
		push	offset dword_443600
		push	1
		push	eax
		call	sub_4016AE
		push	800h
		mov	dword ptr [esp+16F0h], 0
		call	sub_4367FA
; ---------------------------------------------------------------------------
		db 8Bh
		dd 50F7241Dh, 4C48300h,	0B9F88Bh, 33000002h, 0F83D89C0h
		dd 0F30050E3h, 57C4BEABh, 4E8B0044h, 4C8D51FCh,	0EE85024h
		dd 8DFFFCCFh, 0C664244Ch, 16EC2484h, 0E8010000h, 0FFFCCB6Fh
		dd 0FB1C3D8Bh, 0FF500050h, 4C483D7h, 4C244C8Dh,	0CB59E850h
		dd 0FF50FFFCh, 4C483D7h, 32DAE850h, 83907781h, 0C08508C4h
		dd 26A840Fh, 3E810000h,	80000001h, 9B840Fh, 568B0000h
		dd 0F0685204h, 55004435h, 580FE890h, 0B9001Bh, 33000002h
		dd 24BC8DC0h, 6F0h, 0F30CC483h,	100B9ABh, 0FCBF0000h, 0F30050E3h
		dd 0E3F8A1ABh, 4C8D0050h, 948D1824h, 6E424h, 0C75100h
		dd 0
		dd 5208468Bh, 6A006Ah, 0FF006A50h, 75C085D3h, 0FC568B3Ch
		dd 0F424BC8Bh, 8D000016h, 6E4248Ch, 52510000h, 443D3C68h
		dd 694F8D00h, 0FCCABEE8h, 938F8AFFh, 50000000h,	94878Ah
		dd 51500000h, 4D60A568h, 0CE1AE800h, 0C483FFFCh, 90006A1Ch
		dd 4CB5C7E8h, 81168B02h, 1FAh, 0B5850F80h, 0A0000001h
		dd 446F60h, 40B9h, 24848800h, 0E0h, 0BC8DC033h,	0E124h
		dd 2444C700h, 10428h, 66ABF300h, 4C8DAAABh, 448D4424h
		dd 50513024h, 48244C8Dh, 4024448Dh, 4C8D5051h, 448D3C24h
		dd 50514424h, 54244C8Dh, 2C24448Dh, 4C8D5051h, 6A4824h
		dd 424848Dh, 51000001h,	44C75250h, 4424h, 0E8900000h, 247B54Ch
		dd 1424448Bh, 840FC085h, 13Ch, 0C085FF33h, 24247C89h, 12E860Fh
		dd 4C8D0000h, 548D4424h, 6A512024h, 6A006A00h, 24848D00h
		dd 0EF4h, 68575052h, 80000003h,	402444C7h, 800h, 0B506E890h
		dd 0C0850248h, 0E9850Fh, 4E8B0000h, 24948D04h, 0EE4h, 84685251h
		dd 55004436h, 20244489h, 569FE890h, 0B9001Bh, 33000002h
		dd 24BC8DC0h, 6F4h, 0F310C483h,	100B9ABh, 0FCBF0000h, 0F30050E3h
		dd 24448DABh, 19685010h, 6A000200h, 3685500h, 0E8800000h
		dd 24FB4ACh, 8468B90h, 18244C8Dh, 0E424948Dh, 51000006h
		dd 14244C8Bh, 6A006A52h, 0FF515000h, 74C085D3h,	24548B0Bh
		dd 81E85210h, 90024CB4h, 8D08568Bh, 8D182444h, 6E4248Ch
		dd 8B500000h, 51142444h, 6A006Ah, 0D3FF5052h, 3C75C085h
		dd 8BFC568Bh, 16F424BCh, 8C8D0000h, 6E424h, 68525100h
		dd 443D3Ch, 0E8694F8Dh,	0FFFCC913h, 938F8Ah, 8A500000h
		dd 9487h, 68515000h, 4D60A5h, 0FCCC6FE8h, 1CC483FFh, 1024548Bh
		dd 19E89052h, 8B024CB4h, 8B24247Ch, 47142444h, 7C89F83Bh
		dd 820F2424h, 0FFFFFED2h, 4C244C8Dh, 0EC2484C6h, 16h, 0FCC619E8h
		dd 10C683FFh, 5A14FE81h, 820F0044h, 0FFFFFD2Ah,	0F75C2D8Bh
		dd 448D0050h, 68501C24h, 20019h, 0A068006Ah, 6800445Bh
		dd 80000002h, 302444C7h, 0
		dd 2C2444C7h, 80h, 448BD5FFh, 4C8D1C24h, 948D1824h, 2E424h
		dd 6A525100h, 68006A00h, 446A5Ch, 85D3FF50h, 0C1850FC0h
		dd 68000000h, 104h, 7F778EE8h, 0C4839077h, 248C8D04h, 2E4h
		dd 9468F08Bh, 5100445Bh, 446A4C68h, 26E85600h, 90001B55h
		dd 443E7C68h, 0E8905600h, 7780A36Ch, 0C483F88Bh, 74FF8518h
		dd 948D5775h, 8024h, 52646A00h,	80BEF4E8h, 0C4839077h
		dd 74C0850Ch, 24448D53h, 6A34687Ch, 90500044h, 812F8BE8h
		dd 8C48377h, 3C75C085h,	0F424948Bh, 8D000016h, 517C244Ch
		dd 446A1868h, 694A8D00h, 0FCC7DEE8h, 848B50FFh,	170024h
		dd 94888A00h, 8A000000h, 9390h,	68525100h, 4D60A5h, 0FCCB33E8h
		dd 18C483FFh, 92E89057h, 837780BDh, 0F68504C4h,	0E8560A74h
		dd 777F74EFh, 4C48390h,	1C24448Bh, 0B2C6E850h, 8D90024Ch
		dd 0C71C244Ch, 80182444h, 51000000h, 2001968h, 68006A00h
		dd 4469F0h, 268h, 8BD5FF80h, 8D1C244Ch,	8D182454h, 2E42484h
		dd 50520000h, 6A006Ah, 446A5C68h, 0D3FF5100h, 850FC085h
		dd 0BAh, 10468h, 7CE89000h, 83777F76h, 948D04C4h, 2E424h
		dd 68F08B00h, 4469E8h, 69D86852h, 90560044h, 1B5414E8h
		dd 3E7C6800h, 90560044h, 80A25BE8h, 83F88B77h, 0FF8518C4h
		dd 8D576E74h, 802484h, 646A0000h, 0BDE3E850h, 83907780h
		dd 0C0850CC4h, 4C8D4C74h, 0BC687C24h, 51004469h, 2E7AE890h
		dd 0C4837781h, 75C08508h, 249C8B35h, 16F4h, 7C24548Dh
		dd 69A06852h, 4B8D0044h, 0C6CDE869h, 8B8AFFFCh,	93h, 94838A50h
		dd 50000000h, 60A56851h, 29E8004Dh, 83FFFCCAh, 905718C4h
		dd 80BC88E8h, 4C48377h,	0A74F685h, 73E5E856h, 8390777Fh
		dd 548B04C4h, 90521C24h, 4CB1BBE8h, 244C8D02h, 2484C764h
		dd 16ECh, 0FFFFFFFFh, 0FCC3CDE8h, 184E9FFh
		db 2 dup(0)
; ---------------------------------------------------------------------------


loc_434E5E:				; CODE XREF: ___:004348E1j
		lea	ecx, [edi+32h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_434FE2
		lea	eax, [esp+10h]
		push	eax
		push	0F003Fh
		push	0
		push	offset dword_446948
		push	80000001h
		nop
		call	near ptr 2930000h
		test	eax, eax
		jnz	loc_434FE2
		mov	ecx, 40h
		lea	edi, [esp+1E4h]
		rep stosd
		lea	ecx, [esp+14h]
		lea	edx, [esp+1E4h]
		push	ecx
		mov	ecx, [esp+14h]
		lea	eax, [esp+24h]
		push	edx
		push	eax
		push	0
		push	offset dword_446938
		push	ecx
		mov	dword ptr [esp+2Ch], 100h
		call	near ptr 28E0000h
		nop
		test	eax, eax
		jz	short loc_434EE8
		mov	edx, [esp+10h]
		push	edx
		nop
		call	near ptr 2900000h
		jmp	loc_434FE2
; ---------------------------------------------------------------------------


loc_434EE8:				; CODE XREF: ___:00434ED6j
		mov	eax, [esp+14h]
		mov	ecx, [esp+10h]
		mov	ebp, dword_50F738
		push	ecx
		mov	byte ptr [esp+eax+1E8h], 0
		call	ebp
		lea	edx, [esp+1E4h]
		lea	ebx, [esi+69h]
		push	edx
		push	offset dword_44692C
		mov	ecx, ebx
		call	sub_4014D3
		mov	cl, [esi+93h]
		push	eax
		mov	al, [esi+94h]
		push	eax
		push	ecx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h
		lea	edx, [esp+10h]
		push	edx
		push	0F003Fh
		push	0
		push	offset dword_446910
		push	80000001h
		nop
		call	near ptr 2930000h
		test	eax, eax
		jnz	loc_434FE2
		mov	ecx, 40h
		lea	edi, [esp+0E0h]
		rep stosd
		lea	eax, [esp+14h]
		lea	ecx, [esp+0E0h]
		push	eax
		mov	eax, [esp+14h]
		lea	edx, [esp+24h]
		push	ecx
		push	edx
		push	0
		push	offset dword_4468FC
		push	eax
		mov	dword ptr [esp+2Ch], 100h
		nop
		call	near ptr 28E0000h
		test	eax, eax
		jz	short loc_434F9F
		mov	ecx, [esp+10h]
		push	ecx
		call	ebp
		jmp	short loc_434FE2
; ---------------------------------------------------------------------------


loc_434F9F:				; CODE XREF: ___:00434F94j
		mov	edx, [esp+14h]
		mov	eax, [esp+10h]
		push	eax
		mov	byte ptr [esp+edx+1E8h], 0
		call	ebp
		lea	ecx, [esp+0E0h]
		push	ecx
		push	offset dword_4468F0
		mov	ecx, ebx
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_434FE2:				; CODE XREF: ___:00434E70j
					; ___:00434E94j ...
		mov	ecx, [esp+16E4h]
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 16E0h
		retn	4
; ---------------------------------------------------------------------------
		db 90h
		db 1E0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4351E0	proc near		; CODE XREF: sub_4016F4j

var_24		= byte ptr -24h
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4351E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	esi
		push	0
		push	5
		push	4Fh
		push	14h
		push	5
		lea	eax, [esp+3Ch+var_24]
		push	7
		mov	esi, ecx
		push	eax
		call	sub_4019B5
		add	esp, 1Ch
		push	esi
		mov	ecx, eax
		mov	[esp+2Ch+var_4], 0
		call	sub_4017E4
		add	esi, 4
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
sub_4351E0	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+24h], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+1Ch]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 24h
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(90h)
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------


loc_435280:				; CODE XREF: ___:00401FD7j
		sub	esp, 6CCh
		add	ecx, 4
		push	ebx
		push	ebp
		push	esi
		push	edi
		call	sub_4017E4
		mov	ebp, [esp+6E0h]
		push	eax
		lea	ecx, [ebp+7Eh]
		call	sub_4012EE
		test	eax, eax
		jnz	loc_43551E
		lea	eax, [esp+14h]
		mov	dword ptr [esp+20h], 320h
		push	eax
		push	0F003Fh
		push	0
		push	offset dword_446AF0
		push	80000001h
		call	near ptr 2930000h
		nop
		mov	eax, [esp+14h]
		test	eax, eax
		jz	loc_43551E
		lea	ecx, [esp+20h]
		lea	edx, [esp+1D8h]
		push	ecx
		push	edx
		push	0
		push	0
		push	offset byte_446F60
		push	eax
		nop
		call	near ptr 28E0000h
		mov	eax, [esp+14h]
		push	eax
		nop
		call	near ptr 2900000h
		push	0
		push	80h
		push	4
		push	0
		push	1
		lea	ecx, [esp+1ECh]
		push	80000000h
		push	ecx
		nop
		call	near ptr 2840D70h
		push	0
		push	0
		push	0
		mov	edi, eax
		push	2
		push	0
		push	edi
		mov	[esp+34h], edi
		nop
		call	near ptr 2710000h
		mov	ebx, eax
		test	ebx, ebx
		mov	[esp+24h], ebx
		jnz	short loc_435359
		push	edi
		call	near ptr 28306C9h
		nop
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 6CCh
		retn	4
; ---------------------------------------------------------------------------


loc_435359:				; CODE XREF: ___:00435341j
		push	0
		push	0
		push	0
		push	4
		push	ebx
		nop
		call	near ptr 271070Fh
		mov	esi, eax
		test	esi, esi
		jnz	short loc_435389
		mov	esi, dword_50F8D8
		push	ebx
		call	esi
		push	edi
		call	esi
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 6CCh
		retn	4
; ---------------------------------------------------------------------------


loc_435389:				; CODE XREF: ___:0043536Cj
		xor	edx, edx
		xor	eax, eax
		mov	dh, [esi+63h]
		mov	ah, [esi+61h]
		mov	dl, [esi+62h]
		and	eax, 0FFFFh
		movsx	ecx, byte ptr [esi+64h]
		shl	edx, 10h
		or	edx, eax
		xor	eax, eax
		mov	al, [esi+60h]
		or	edx, eax
		mov	eax, ecx
		shl	eax, 4
		add	eax, ecx
		shl	eax, 2
		test	eax, eax
		jle	short loc_435428
		lea	ecx, [eax+43h]
		mov	eax, 0F0F0F0F1h
		lea	edi, [edx+esi]
		mul	ecx
		mov	ebx, edx
		shr	ebx, 6


loc_4353CB:				; CODE XREF: ___:0043541Ej
		xor	eax, eax
		mov	ecx, edi


loc_4353CF:				; CODE XREF: ___:004353DFj
		mov	dl, [ecx]
		add	ecx, 2
		mov	[esp+eax+0ACh],	dl
		inc	eax
		cmp	eax, 44h
		jle	short loc_4353CF
		lea	eax, [esp+0ACh]
		lea	ecx, [ebp+69h]
		push	eax
		push	offset dword_446AD8
		mov	byte ptr [esp+0F8h], 0
		call	sub_4014D3
		mov	cl, [ebp+94h]
		mov	dl, [ebp+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h
		add	edi, 44h
		dec	ebx
		jnz	short loc_4353CB
		mov	ebx, [esp+24h]
		mov	edi, [esp+1Ch]


loc_435428:				; CODE XREF: ___:004353B7j
		push	edi
		mov	edi, dword_50F8D8
		call	edi
		push	esi
		nop
		call	near ptr 2710893h
		push	ebx
		call	edi
		lea	eax, [esp+18h]
		push	eax
		push	0F003Fh
		push	0
		push	offset dword_446A84
		push	80000001h
		nop
		call	near ptr 2930000h
		test	eax, eax
		jnz	loc_43551E
		mov	ebx, dword_50FBF0
		mov	dword ptr [esp+10h], 400h
		mov	dword ptr [esp+28h], 3
		xor	esi, esi


loc_435477:				; CODE XREF: ___:0043550Ej
		mov	ecx, 20h
		xor	eax, eax
		lea	edi, [esp+2Ch]
		push	esi
		rep stosd
		lea	ecx, [esp+30h]
		push	offset dword_446A78
		push	ecx
		call	ebx
		mov	ecx, 100h
		xor	eax, eax
		lea	edi, [esp+2E8h]
		add	esp, 0Ch
		rep stosd
		lea	edx, [esp+10h]
		lea	eax, [esp+2DCh]
		push	edx
		lea	ecx, [esp+2Ch]
		push	eax
		mov	eax, [esp+20h]
		push	ecx
		lea	edx, [esp+38h]
		push	0
		push	edx
		push	eax
		inc	esi
		mov	dword ptr [esp+28h], 400h
		nop
		call	near ptr 28E0000h
		test	eax, eax
		jnz	short loc_435513
		lea	ecx, [esp+2DCh]
		push	ecx
		push	offset dword_446A6C
		lea	ecx, [ebp+69h]
		call	sub_4014D3
		mov	dl, [ebp+94h]
		push	eax
		mov	al, [ebp+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h
		push	64h
		call	near ptr 2821E84h
		nop
		jmp	loc_435477
; ---------------------------------------------------------------------------


loc_435513:				; CODE XREF: ___:004354D3j
		mov	ecx, [esp+18h]
		push	ecx
		nop
		call	near ptr 2900000h


loc_43551E:				; CODE XREF: ___:004352A4j
					; ___:004352D4j ...
		pop	edi
		pop	esi
		pop	ebp
		mov	al, 1
		pop	ebx
		add	esp, 6CCh
		retn	4
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 0B0h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4355E0	proc near		; CODE XREF: sub_401E47j

var_3C		= byte ptr -3Ch
var_4		= dword	ptr -4

		push	0FFFFFFFFh
		push	offset SEH_4355E0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	esi
		push	0
		push	7
		push	5
		push	12h
		push	4Fh
		push	14h
		push	5
		lea	eax, [esp+5Ch+var_3C]
		push	7
		mov	esi, ecx
		push	eax
		call	sub_4019B5
		add	esp, 24h
		push	esi
		mov	ecx, eax
		mov	[esp+44h+var_4], 0
		call	sub_401681
		lea	ecx, [esi+4]
		push	eax
		push	ecx
		mov	ecx, offset dword_447148
		call	sub_401591
sub_4355E0	endp

; ---------------------------------------------------------------------------
		lea	ecx, [esp+4]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		push	0
		push	0Bh
		push	17h
		push	4Fh
		push	14h
		push	5
		lea	edx, [esp+34h]
		push	7
		push	edx
		call	sub_4019B5
		add	esp, 20h
		push	esi
		mov	ecx, eax
		mov	dword ptr [esp+40h], 1
		call	sub_401681
		add	esi, 32h
		push	eax
		push	esi
		mov	ecx, offset dword_447148
		call	sub_401591
; ---------------------------------------------------------------------------
		lea	ecx, [esp+1Ch]
		mov	dword ptr [esp+3Ch], 0FFFFFFFFh
		call	sub_401226
		mov	ecx, [esp+34h]
		pop	esi
		mov	large fs:0, ecx
		add	esp, 3Ch
		retn
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 40h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4356F0:				; CODE XREF: ___:00401E4Cj
		mov	eax, large fs:0
		push	0FFFFFFFFh
		push	offset loc_43BEBE
		push	eax
		mov	large fs:0, esp
		sub	esp, 12Ch
		push	ebx
		push	esi
		mov	esi, [esp+144h]
		push	edi
		mov	edi, ecx
		lea	ebx, [esi+7Eh]
		lea	ecx, [edi+4]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_435BC7
		push	ebp
		xor	ebp, ebp
		push	ebp
		push	offset dword_443600
		lea	eax, [esp+28h]
		push	1
		push	eax
		mov	ecx, esi
		mov	[esp+24h], ebp
		mov	dword ptr [esp+28h], 80h
		call	sub_4011EA
		lea	ecx, [esp+14h]
		mov	[esp+144h], ebp
		push	ecx
		push	20019h
		push	ebp
		mov	ecx, eax
		call	sub_4017E4
		mov	edi, dword_50F75C
		push	eax
		push	80000001h
		call	edi
		or	ebx, 0FFFFFFFFh
		lea	ecx, [esp+20h]
		mov	[esp+144h], ebx
		call	sub_401226
		push	ebp
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		lea	ecx, [esp+18h]
		lea	edx, [esp+3Ch]
		push	ecx
		push	edx
		push	ebp
		push	ebp
		mov	ecx, eax
		mov	dword ptr [esp+154h], 1
		call	sub_4017E4
		mov	ebp, dword_50F724
		push	eax
		mov	eax, [esp+28h]
		push	eax
		call	ebp
		test	eax, eax
		lea	ecx, [esp+20h]
		mov	[esp+144h], ebx
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jz	short loc_43581C
		lea	ecx, [esp+3Ch]
		push	ecx
		push	offset dword_446BBC
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_43581C:				; CODE XREF: ___:004357ECj
		mov	ecx, [esp+14h]
		push	ecx
		nop
		call	near ptr 2900000h
		push	0
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	1
		push	edx
		mov	ecx, esi
		mov	dword ptr [esp+28h], 80h
		call	sub_4011EA
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+144h], 2
		push	ecx
		push	20019h
		push	0
		mov	ecx, eax
		call	sub_4017E4
		push	eax
		push	80000002h
		call	edi
		lea	ecx, [esp+20h]
		mov	[esp+144h], ebx
		call	sub_401226
		push	0
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		lea	ecx, [esp+18h]
		lea	edx, [esp+3Ch]
		push	ecx
		push	edx
		push	0
		push	0
		mov	ecx, eax
		mov	dword ptr [esp+154h], 3
		call	sub_4017E4
		push	eax
		mov	eax, [esp+28h]
		push	eax
		call	ebp
		test	eax, eax
		lea	ecx, [esp+20h]
		mov	[esp+144h], ebx
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jz	short loc_435904
		lea	ecx, [esp+3Ch]
		push	ecx
		push	offset dword_446BB0
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_435904:				; CODE XREF: ___:004358D4j
		mov	ecx, [esp+14h]
		push	ecx
		nop
		call	near ptr 2900000h
		push	0
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	1
		push	edx
		mov	ecx, esi
		mov	dword ptr [esp+28h], 80h
		call	sub_4011EA
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+144h], 4
		push	ecx
		push	20019h
		push	0
		mov	ecx, eax
		call	sub_4017E4
		push	eax
		push	80000005h
		call	edi
		lea	ecx, [esp+20h]
		mov	[esp+144h], ebx
		call	sub_401226
		push	0
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		lea	ecx, [esp+18h]
		lea	edx, [esp+3Ch]
		push	ecx
		push	edx
		push	0
		push	0
		mov	ecx, eax
		mov	dword ptr [esp+154h], 5
		call	sub_4017E4
		push	eax
		mov	eax, [esp+28h]
		push	eax
		call	ebp
		test	eax, eax
		lea	ecx, [esp+20h]
		mov	[esp+144h], ebx
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jz	short loc_4359EC
		lea	ecx, [esp+3Ch]
		push	ecx
		push	offset dword_446BA4
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_4359EC:				; CODE XREF: ___:004359BCj
		mov	ecx, [esp+14h]
		push	ecx
		call	near ptr 2900000h
		nop
		push	0
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	1
		push	edx
		mov	ecx, esi
		mov	dword ptr [esp+28h], 80h
		call	sub_4011EA
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+144h], 6
		push	ecx
		push	20019h
		push	0
		mov	ecx, eax
		call	sub_4017E4
		push	eax
		push	80000000h
		call	edi
		lea	ecx, [esp+20h]
		mov	[esp+144h], ebx
		call	sub_401226
		push	0
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		lea	ecx, [esp+18h]
		lea	edx, [esp+3Ch]
		push	ecx
		push	edx
		push	0
		push	0
		mov	ecx, eax
		mov	dword ptr [esp+154h], 7
		call	sub_4017E4
		push	eax
		mov	eax, [esp+28h]
		push	eax
		call	ebp
		test	eax, eax
		lea	ecx, [esp+20h]
		mov	[esp+144h], ebx
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		test	al, al
		jz	short loc_435AD4
		lea	ecx, [esp+3Ch]
		push	ecx
		push	offset dword_446B98
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_435AD4:				; CODE XREF: ___:00435AA4j
		mov	ecx, [esp+14h]
		push	ecx
		nop
		call	near ptr 2900000h
		push	0
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	1
		push	edx
		mov	ecx, esi
		mov	dword ptr [esp+28h], 80h
		call	sub_4011EA
		lea	ecx, [esp+14h]
		mov	dword ptr [esp+144h], 8
		push	ecx
		push	20019h
		push	0
		mov	ecx, eax
		call	sub_4017E4
		push	eax
		push	80000003h
		call	edi
		lea	ecx, [esp+20h]
		mov	[esp+144h], ebx
		call	sub_401226
		push	0
		push	offset dword_443600
		lea	edx, [esp+28h]
		push	2
		push	edx
		mov	ecx, esi
		call	sub_4011EA
		lea	ecx, [esp+18h]
		lea	edx, [esp+3Ch]
		push	ecx
		push	edx
		push	0
		push	0
		mov	ecx, eax
		mov	dword ptr [esp+154h], 9
		call	sub_4017E4
		push	eax
		mov	eax, [esp+28h]
		push	eax
		call	ebp
		test	eax, eax
		lea	ecx, [esp+20h]
		mov	[esp+144h], ebx
		setz	byte ptr [esp+13h]
		call	sub_401226
		mov	al, [esp+13h]
		pop	ebp
		test	al, al
		jz	short loc_435BBD
		lea	ecx, [esp+38h]
		push	ecx
		push	offset dword_446B8C
		lea	ecx, [esi+69h]
		call	sub_4014D3
		mov	dl, [esi+94h]
		push	eax
		mov	al, [esi+93h]
		push	edx
		push	eax
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_435BBD:				; CODE XREF: ___:00435B8Dj
		mov	ecx, [esp+10h]
		push	ecx
		jmp	loc_435C61
; ---------------------------------------------------------------------------


loc_435BC7:				; CODE XREF: ___:0043572Cj
		lea	ecx, [edi+32h]
		call	sub_4017E4
		push	eax
		mov	ecx, ebx
		call	sub_4012EE
		test	eax, eax
		jnz	loc_435C67
		lea	edx, [esp+18h]
		mov	[esp+18h], eax
		push	edx
		push	20019h
		push	eax
		push	offset dword_446B58
		push	80000002h
		mov	dword ptr [esp+48h], 80h
		nop
		call	near ptr 2930000h
		mov	edx, [esp+18h]
		lea	eax, [esp+34h]
		lea	ecx, [esp+0B8h]
		push	eax
		push	ecx
		push	0
		push	0
		push	offset dword_446B4C
		push	edx
		call	near ptr 28E0000h
		nop
		test	eax, eax
		jnz	short loc_435C5C
		lea	eax, [esp+0B8h]
		lea	ecx, [esi+69h]
		push	eax
		push	offset dword_446B24
		call	sub_4014D3
		mov	cl, [esi+94h]
		mov	dl, [esi+93h]
		push	eax
		push	ecx
		push	edx
		push	offset byte_4D60A5
		call	sub_401848
		add	esp, 18h


loc_435C5C:				; CODE XREF: ___:00435C29j
		mov	eax, [esp+18h]
		push	eax


loc_435C61:				; CODE XREF: ___:00435BC2j
		nop
		call	near ptr 2900000h


loc_435C67:				; CODE XREF: ___:00435BD9j
		mov	ecx, [esp+138h]
		pop	edi
		pop	esi
		mov	al, 1
		pop	ebx
		mov	large fs:0, ecx
		add	esp, 138h
		retn	4
; ---------------------------------------------------------------------------
		db 0Dh dup(90h)
		db 170h	dup(0CCh)

; =============== S U B	R O U T	I N E =======================================



sub_435E00	proc near		; CODE XREF: sub_401334j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_4]
		xor	eax, eax
		test	esi, esi
		jle	short loc_435E1D
		mov	cl, [esp+4+arg_8]
		mov	edx, [esp+4+arg_0]


loc_435E13:				; CODE XREF: sub_435E00+1Bj
		cmp	[eax+edx], cl
		jz	short loc_435E21
		inc	eax
		cmp	eax, esi
		jl	short loc_435E13


loc_435E1D:				; CODE XREF: sub_435E00+9j
		pop	esi
		xor	al, al
		retn
; ---------------------------------------------------------------------------


loc_435E21:				; CODE XREF: sub_435E00+16j
		pop	esi
		mov	al, 1
		retn
sub_435E00	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(90h)
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_435E40:				; CODE XREF: ___:00401429j
		push	ecx
		mov	eax, [esp+18h]
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	eax
		mov	dword ptr [esp+14h], 98h
		nop
		call	near ptr 71AB2B66h
		mov	ebx, [esp+1Ch]
		and	eax, 0FFFFh
		push	ebx
		mov	[esp+2Ch], eax
		nop
		call	near ptr 77C2C407h
		mov	ecx, ebx
		mov	ebp, eax
		mov	edx, ecx
		xor	eax, eax
		mov	edi, ebp
		mov	esi, [esp+1Ch]
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		push	18h
		and	ecx, 3
		rep stosb
		mov	ecx, ebx
		mov	edi, ebp
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		nop
		call	near ptr 77C2C407h
		mov	edx, eax
		mov	ecx, 6
		xor	eax, eax
		mov	edi, edx
		rep stosd
		mov	eax, [esp+38h]
		mov	ecx, 6
		mov	esi, offset dword_446BC8
		mov	edi, edx
		rep movsd
		mov	ecx, [esp+30h]
		add	esp, 8
		mov	[eax+ebp], cl
		mov	[eax+ebp+1], ch
		mov	eax, [esp+34h]
		mov	ecx, [esp+2Ch]
		mov	[esp+1Ch], edx
		mov	[eax+ebp], cl
		mov	[eax+ebp+1], ch
		mov	cx, [esp+2Eh]
		mov	[eax+ebp+2], cl
		mov	[eax+ebp+3], ch
		mov	eax, [esp+38h]
		test	eax, eax
		jz	short loc_435EFC
		push	ebx
		push	ebp
		call	eax
		add	esp, 8


loc_435EFC:				; CODE XREF: ___:00435EF3j
		push	ebx
		call	near ptr 77C2C407h
		nop
		mov	ecx, ebx
		mov	edx, eax
		mov	esi, ecx
		xor	eax, eax
		mov	edi, edx
		mov	[esp+2Ch], edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		mov	esi, ebp
		and	ecx, 3
		add	esp, 4
		rep stosb
		mov	ecx, ebx
		mov	edi, edx
		mov	edx, ecx
		mov	eax, [esp+1Ch]
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	[eax+0Eh], bl
		mov	[eax+0Fh], bh


loc_435F3E:				; CODE XREF: ___:00435FB7j
		push	5Ch
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_435F7E
		push	0
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_435F7E
		push	0Ah
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_435F7E
		push	0Dh
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jz	short loc_435FB9


loc_435F7E:				; CODE XREF: ___:00435F4Cj
					; ___:00435F5Cj ...
		mov	esi, [esp+28h]
		mov	ecx, ebx
		mov	eax, ecx
		mov	edi, ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		xor	eax, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+10h]
		inc	ecx
		test	ebx, ebx
		mov	[esp+10h], ecx
		jle	short loc_435FB0


loc_435FA3:				; CODE XREF: ___:00435FAEj
		mov	dl, [eax+ebp]
		xor	dl, cl
		mov	[eax+ebp], dl
		inc	eax
		cmp	eax, ebx
		jl	short loc_435FA3


loc_435FB0:				; CODE XREF: ___:00435FA1j
		mov	edx, [esp+1Ch]
		mov	[edx+13h], cl
		jmp	short loc_435F3E
; ---------------------------------------------------------------------------


loc_435FB9:				; CODE XREF: ___:00435F7Cj
		mov	eax, [esp+28h]
		push	eax
		nop
		call	near ptr 77C2C21Bh
		mov	ecx, [esp+28h]
		mov	edx, [esp+24h]
		mov	esi, ecx
		xor	eax, eax
		mov	edi, edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		mov	esi, [esp+20h]
		and	ecx, 3
		rep stosb
		mov	ecx, 6
		mov	edi, edx
		rep movsd
		mov	ecx, ebx
		lea	edi, [edx+17h]
		mov	edx, ecx
		mov	esi, ebp
		shr	ecx, 2
		rep movsd
		mov	eax, [esp+20h]
		mov	ecx, edx
		and	ecx, 3
		push	eax
		rep movsb
		mov	esi, dword_50FAC4
		call	esi
		push	ebp
		call	esi
		add	esp, 0Ch
		lea	eax, [ebx+18h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 4 dup(90h)
		db 80h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4360A0:				; CODE XREF: ___:00401D61j
		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+28h]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		mov	dword ptr [esp+10h], 98h
		repne scasb
		mov	eax, [esp+1Ch]
		not	ecx
		dec	ecx
		lea	ebx, [ecx+eax+1]
		push	ebx
		nop
		call	near ptr 77C2C407h
		mov	ecx, ebx
		mov	ebp, eax
		mov	edx, ecx
		xor	eax, eax
		mov	edi, ebp
		mov	esi, [esp+1Ch]
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		push	18h
		and	ecx, 3
		rep stosb
		mov	ecx, ebx
		mov	edi, ebp
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		nop
		call	near ptr 77C2C407h
		mov	edx, eax
		mov	ecx, 6
		xor	eax, eax
		mov	edi, edx
		rep stosd
		mov	ecx, 6
		mov	esi, offset dword_446BC8
		mov	edi, edx
		add	esp, 8
		rep movsd
		mov	esi, [esp+28h]
		or	ecx, 0FFFFFFFFh
		mov	edi, esi
		mov	[esp+18h], edx
		repne scasb
		mov	edx, [esp+1Ch]
		not	ecx
		mov	eax, ecx
		lea	edi, [edx+ebp-2]
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, [esp+2Ch]
		and	ecx, 3
		test	eax, eax
		rep movsb
		jz	short loc_436152
		push	ebx
		push	ebp
		call	eax
		add	esp, 8


loc_436152:				; CODE XREF: ___:00436149j
		push	ebx
		nop
		call	near ptr 77C2C407h
		mov	ecx, ebx
		mov	edx, eax
		mov	esi, ecx
		xor	eax, eax
		mov	edi, edx
		mov	[esp+2Ch], edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		mov	esi, ebp
		and	ecx, 3
		add	esp, 4
		rep stosb
		mov	ecx, ebx
		mov	edi, edx
		mov	edx, ecx
		mov	eax, [esp+18h]
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	[eax+0Eh], bl
		mov	[eax+0Fh], bh


loc_436194:				; CODE XREF: ___:0043620Dj
		push	5Ch
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_4361D4
		push	0
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_4361D4
		push	0Ah
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_4361D4
		push	0Dh
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jz	short loc_43620F


loc_4361D4:				; CODE XREF: ___:004361A2j
					; ___:004361B2j ...
		mov	esi, [esp+28h]
		mov	ecx, ebx
		mov	eax, ecx
		mov	edi, ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		xor	eax, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+10h]
		inc	ecx
		test	ebx, ebx
		mov	[esp+10h], ecx
		jle	short loc_436206


loc_4361F9:				; CODE XREF: ___:00436204j
		mov	dl, [eax+ebp]
		xor	dl, cl
		mov	[eax+ebp], dl
		inc	eax
		cmp	eax, ebx
		jl	short loc_4361F9


loc_436206:				; CODE XREF: ___:004361F7j
		mov	edx, [esp+18h]
		mov	[edx+13h], cl
		jmp	short loc_436194
; ---------------------------------------------------------------------------


loc_43620F:				; CODE XREF: ___:004361D2j
		mov	eax, [esp+28h]
		push	eax
		nop
		call	near ptr 77C2C21Bh
		mov	ecx, [esp+28h]
		mov	edx, [esp+24h]
		mov	esi, ecx
		xor	eax, eax
		mov	edi, edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		mov	esi, [esp+1Ch]
		and	ecx, 3
		rep stosb
		mov	ecx, 6
		mov	edi, edx
		rep movsd
		mov	ecx, ebx
		lea	edi, [edx+17h]
		mov	edx, ecx
		mov	esi, ebp
		shr	ecx, 2
		rep movsd
		mov	eax, [esp+1Ch]
		mov	ecx, edx
		and	ecx, 3
		push	eax
		rep movsb
		mov	esi, dword_50FAC4
		call	esi
		push	ebp
		call	esi
		add	esp, 0Ch
		lea	eax, [ebx+18h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 0Eh dup(90h)
		db 80h dup(0CCh)
; ---------------------------------------------------------------------------


loc_436300:				; CODE XREF: ___:00401FE1j
		mov	eax, 200Ch
		call	sub_436840
		mov	eax, [esp+2028h]
		mov	ecx, [esp+202Ch]
		push	ebx
		mov	edx, [esp+2028h]
		push	ebp
		push	esi
		push	edi
		push	eax
		push	eax
		mov	eax, [esp+2048h]
		push	eax
		mov	eax, [esp+203Ch]
		push	ecx
		push	edx
		push	eax
		lea	ecx, [esp+34h]
		push	offset dword_446BE4
		push	ecx
		mov	dword ptr [esp+34h], 98h
		nop
		call	near ptr byte_5EA1BD
		lea	edi, [esp+3Ch]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		mov	edx, [esp+2044h]
		repne scasb
		not	ecx
		dec	ecx
		lea	ebx, [ecx+edx+1]
		push	ebx
		call	near ptr 77C2C407h
		nop
		mov	ecx, ebx
		mov	ebp, eax
		mov	edx, ecx
		xor	eax, eax
		mov	edi, ebp
		mov	esi, [esp+2044h]
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		push	18h
		and	ecx, 3
		rep stosb
		mov	ecx, ebx
		mov	edi, ebp
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	near ptr 77C2C407h
		nop
		mov	edx, eax
		mov	ecx, 6
		xor	eax, eax
		mov	edi, edx
		rep stosd
		mov	ecx, 6
		mov	esi, offset dword_446BC8
		mov	edi, edx
		add	esp, 28h
		rep movsd
		lea	edi, [esp+1Ch]
		or	ecx, 0FFFFFFFFh
		repne scasb
		mov	[esp+10h], edx
		mov	edx, [esp+2024h]
		not	ecx
		mov	eax, ecx
		lea	esi, [esp+1Ch]
		lea	edi, [edx+ebp-2]
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, [esp+2044h]
		and	ecx, 3
		test	eax, eax
		rep movsb
		jz	short loc_436402
		push	ebx
		push	ebp
		call	eax
		add	esp, 8


loc_436402:				; CODE XREF: ___:004363F9j
		push	ebx
		nop
		call	near ptr 77C2C407h
		mov	ecx, ebx
		mov	edx, eax
		mov	esi, ecx
		xor	eax, eax
		mov	edi, edx
		mov	[esp+1Ch], edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		mov	esi, ebp
		and	ecx, 3
		add	esp, 4
		rep stosb
		mov	ecx, ebx
		mov	edi, edx
		mov	edx, ecx
		mov	eax, [esp+10h]
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	[eax+0Eh], bl
		mov	[eax+0Fh], bh


loc_436444:				; CODE XREF: ___:004364BDj
		push	5Ch
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_436484
		push	0
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_436484
		push	0Ah
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_436484
		push	0Dh
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jz	short loc_4364BF


loc_436484:				; CODE XREF: ___:00436452j
					; ___:00436462j ...
		mov	esi, [esp+18h]
		mov	ecx, ebx
		mov	eax, ecx
		mov	edi, ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		xor	eax, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+14h]
		inc	ecx
		test	ebx, ebx
		mov	[esp+14h], ecx
		jle	short loc_4364B6


loc_4364A9:				; CODE XREF: ___:004364B4j
		mov	dl, [eax+ebp]
		xor	dl, cl
		mov	[eax+ebp], dl
		inc	eax
		cmp	eax, ebx
		jl	short loc_4364A9


loc_4364B6:				; CODE XREF: ___:004364A7j
		mov	edx, [esp+10h]
		mov	[edx+13h], cl
		jmp	short loc_436444
; ---------------------------------------------------------------------------


loc_4364BF:				; CODE XREF: ___:00436482j
		mov	eax, [esp+18h]
		push	eax
		nop
		call	near ptr 77C2C21Bh
		mov	ecx, [esp+2030h]
		mov	edx, [esp+202Ch]
		mov	esi, ecx
		xor	eax, eax
		mov	edi, edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		mov	esi, [esp+14h]
		and	ecx, 3
		rep stosb
		mov	ecx, 6
		mov	edi, edx
		rep movsd
		mov	ecx, ebx
		lea	edi, [edx+17h]
		mov	edx, ecx
		mov	esi, ebp
		shr	ecx, 2
		rep movsd
		mov	eax, [esp+14h]
		mov	ecx, edx
		and	ecx, 3
		push	eax
		rep movsb
		mov	esi, dword_50FAC4
		call	esi
		push	ebp
		call	esi
		add	esp, 0Ch
		lea	eax, [ebx+18h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 200Ch
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 90h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4365C0:				; CODE XREF: ___:00401910j
		push	ecx
		push	ebx
		mov	ebx, [esp+10h]
		push	ebp
		push	esi
		push	edi
		push	ebx
		mov	dword ptr [esp+14h], 98h
		nop
		call	near ptr 77C2C407h
		mov	ecx, ebx
		mov	ebp, eax
		mov	edx, ecx
		xor	eax, eax
		mov	edi, ebp
		mov	esi, [esp+1Ch]
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		push	18h
		and	ecx, 3
		rep stosb
		mov	ecx, ebx
		mov	edi, ebp
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		nop
		call	near ptr 77C2C407h
		mov	edx, eax
		mov	ecx, 6
		xor	eax, eax
		mov	edi, edx
		rep stosd
		mov	eax, [esp+30h]
		add	esp, 8
		mov	ecx, 6
		mov	esi, offset dword_446BC8
		mov	edi, edx
		mov	[esp+1Ch], edx
		test	eax, eax
		rep movsd
		jz	short loc_43663D
		push	ebx
		push	ebp
		call	eax
		add	esp, 8


loc_43663D:				; CODE XREF: ___:00436634j
		push	ebx
		call	near ptr 77C2C407h
		nop
		mov	ecx, ebx
		mov	edx, eax
		mov	esi, ecx
		xor	eax, eax
		mov	edi, edx
		mov	[esp+1Ch], edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		mov	esi, ebp
		and	ecx, 3
		add	esp, 4
		rep stosb
		mov	ecx, ebx
		mov	edi, edx
		mov	edx, ecx
		mov	eax, [esp+1Ch]
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	[eax+0Eh], bl
		mov	[eax+0Fh], bh


loc_43667F:				; CODE XREF: ___:004366F8j
		push	5Ch
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_4366BF
		push	0
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_4366BF
		push	0Ah
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jnz	short loc_4366BF
		push	0Dh
		push	ebx
		push	ebp
		call	sub_401334
		add	esp, 0Ch
		test	al, al
		jz	short loc_4366FA


loc_4366BF:				; CODE XREF: ___:0043668Dj
					; ___:0043669Dj ...
		mov	esi, [esp+18h]
		mov	ecx, ebx
		mov	eax, ecx
		mov	edi, ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		xor	eax, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [esp+10h]
		inc	ecx
		test	ebx, ebx
		mov	[esp+10h], ecx
		jle	short loc_4366F1


loc_4366E4:				; CODE XREF: ___:004366EFj
		mov	dl, [eax+ebp]
		xor	dl, cl
		mov	[eax+ebp], dl
		inc	eax
		cmp	eax, ebx
		jl	short loc_4366E4


loc_4366F1:				; CODE XREF: ___:004366E2j
		mov	edx, [esp+1Ch]
		mov	[edx+13h], cl
		jmp	short loc_43667F
; ---------------------------------------------------------------------------


loc_4366FA:				; CODE XREF: ___:004366BDj
		mov	eax, [esp+18h]
		push	eax
		nop
		call	near ptr 77C2C21Bh
		mov	ecx, [esp+28h]
		mov	edx, [esp+24h]
		mov	esi, ecx
		xor	eax, eax
		mov	edi, edx
		shr	ecx, 2
		rep stosd
		mov	ecx, esi
		mov	esi, [esp+20h]
		and	ecx, 3
		rep stosb
		mov	ecx, 6
		mov	edi, edx
		rep movsd
		mov	ecx, ebx
		lea	edi, [edx+17h]
		mov	edx, ecx
		mov	esi, ebp
		shr	ecx, 2
		rep movsd
		mov	eax, [esp+20h]
		mov	ecx, edx
		and	ecx, 3
		push	eax
		rep movsb
		mov	esi, dword_50FAC4
		call	esi
		push	ebp
		call	esi
		add	esp, 0Ch
		lea	eax, [ebx+18h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		db 68h dup(0CCh)

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_4367C8	proc near		; CODE XREF: SEH_4034E0+5j
					; SEH_4036D0+5j ...
		jmp	near ptr 77C227FAh
sub_4367C8	endp

; ---------------------------------------------------------------------------
		db 95h,	2 dup(0CCh)
		db 90h
		db 0E9h, 37h, 0F7h
		dd 3DE9777Fh, 0B3777E57h, 7F2BE6E9h
; ---------------------------------------------------------------------------
		ja	short loc_43680A

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_4367E2	proc near		; CODE XREF: ___:00406BE0p
					; sub_406C00+11p ...
		jmp	near ptr 77C29CDDh
sub_4367E2	endp

; ---------------------------------------------------------------------------
		db 0C5h
		dd 8112A3E9h, 0E9902F77h, 7781146Ch, 14EBE990h
		db 81h,	77h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4367FA	proc near		; CODE XREF: sub_406C30+47p
					; ___:00406CCAp ...
		nop
		jmp	near ptr 77C29CC5h
sub_4367FA	endp

; ---------------------------------------------------------------------------
		db 90h
		db 0E9h, 0E1h, 0ACh
		dd 0C18B777Eh
		db 0C7h, 0
; ---------------------------------------------------------------------------


loc_43680A:				; CODE XREF: ___:004367E0j
		aam	0E1h
		inc	ebx
		add	dl, al
		add	al, 0
		push	esi
		mov	esi, ecx
		call	sub_436BCC
; ---------------------------------------------------------------------------
		test	byte ptr [esp+8], 1
		jz	short loc_436827
		push	esi
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx


loc_436827:				; CODE XREF: ___:0043681Ej
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		mov	eax, ecx
		retn	4

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_436832	proc near		; CODE XREF: sub_409580+4Dp
					; ___:0040A99Dp
		jmp	near ptr 77C226F6h
sub_436832	endp

; ---------------------------------------------------------------------------
		db 0DCh
		dd 80974DE9h, 0CCCCAE77h

; =============== S U B	R O U T	I N E =======================================



sub_436840	proc near		; CODE XREF: sub_40A030+5p
					; ___:0040FF7Ap ...

arg_0		= byte ptr  4

		push	ecx
		cmp	eax, 1000h
		lea	ecx, [esp+4+arg_0]
		jb	short loc_436860


loc_43684C:				; CODE XREF: sub_436840+1Ej
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_43684C


loc_436860:				; CODE XREF: sub_436840+Aj
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_436840	endp

; ---------------------------------------------------------------------------
		align 10h
		dd 810DEBE9h, 15E92D77h, 7B777E67h, 91F4E990h, 0E9907780h
		dd 778111C8h, 35F0E990h, 8DE97780h, 6F778110h, 7F5B6EE9h
		dd 3D831377h, 50E9D4h, 0FF0C75FFh, 90042474h, 7FE54BE8h
		dd 68C35977h, 50E9C4h, 50E9D468h, 2474FF00h, 310E80Ch
		dd 0C4830000h, 74FFC30Ch, 0CBE80424h, 0F7FFFFFFh, 59C01BD8h
		dd 0C348D8F7h, 7F593EE9h, 0E990F077h, 778008D8h, 8E9E990h
		db 80h,	77h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_4368EA	proc near		; CODE XREF: sub_4198C0+28p
		nop
		jmp	near ptr 77C4FA10h
sub_4368EA	endp


; =============== S U B	R O U T	I N E =======================================



sub_4368F0	proc near		; CODE XREF: sub_41B820+54p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	ebx
		mov	eax, [esp+4+arg_C]
		or	eax, eax
		jnz	short loc_436911
		mov	ecx, [esp+4+arg_8]
		mov	eax, [esp+4+arg_4]
		xor	edx, edx
		div	ecx
		mov	eax, [esp+4+arg_0]
		div	ecx
		mov	eax, edx
		xor	edx, edx
		jmp	short loc_436961
; ---------------------------------------------------------------------------


loc_436911:				; CODE XREF: sub_4368F0+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_43691F:				; CODE XREF: sub_4368F0+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_43691F
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_43694A
		cmp	edx, [esp+4+arg_4]
		ja	short loc_43694A
		jb	short loc_436952
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_436952


loc_43694A:				; CODE XREF: sub_4368F0+4Aj
					; sub_4368F0+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_436952:				; CODE XREF: sub_4368F0+52j
					; sub_4368F0+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0


loc_436961:				; CODE XREF: sub_4368F0+1Fj
		pop	ebx
		retn	10h
sub_4368F0	endp

; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================



sub_436970	proc near		; CODE XREF: sub_41B820+30p
					; sub_41B820+3Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	ebx
		push	esi
		mov	eax, [esp+8+arg_C]
		or	eax, eax
		jnz	short loc_436992
		mov	ecx, [esp+8+arg_8]
		mov	eax, [esp+8+arg_4]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+8+arg_0]
		div	ecx
		mov	edx, ebx
		jmp	short loc_4369D3
; ---------------------------------------------------------------------------


loc_436992:				; CODE XREF: sub_436970+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]


loc_4369A0:				; CODE XREF: sub_436970+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_4369A0
		div	ebx
		mov	esi, eax
		mul	[esp+8+arg_C]
		mov	ecx, eax
		mov	eax, [esp+8+arg_8]
		mul	esi
		add	edx, ecx
		jb	short loc_4369CE
		cmp	edx, [esp+8+arg_4]
		ja	short loc_4369CE
		jb	short loc_4369CF
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_4369CF


loc_4369CE:				; CODE XREF: sub_436970+4Ej
					; sub_436970+54j
		dec	esi


loc_4369CF:				; CODE XREF: sub_436970+56j
					; sub_436970+5Cj
		xor	edx, edx
		mov	eax, esi


loc_4369D3:				; CODE XREF: sub_436970+20j
		pop	esi
		pop	ebx
		retn	10h
sub_436970	endp

; ---------------------------------------------------------------------------
		dd 80A0D4E9h, 0E9909277h, 7780862Ch, 1477E990h,	0E9907781h
		dd 7780A486h, 0A805E990h, 0E9907780h, 7780AB78h, 0A99AE990h
		dd 0E9907780h, 7780AD33h, 8111D3E9h, 5FE9A677h,	0E87780B1h
		dd 84DCE990h, 0E9907780h, 7780A3F3h, 569DE990h,	36E9777Fh
		dd 5D777E5Bh, 3C0E990h,	0E9907780h, 778007C2h, 7E887FE9h
		dd 0EEE96C77h, 0DC77808Eh, 0AE20E990h, 0E9907780h, 7780398Bh
		dd 38B1E990h, 0B8E97780h, 67778126h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436A5C	proc near		; CODE XREF: ___:0043168Cp
		nop
		jmp	near ptr 77C3619Ch
sub_436A5C	endp

; ---------------------------------------------------------------------------
		dw 0DE9h
		dd 5A778003h, 0A143E990h, 0A06C7780h, 2DABB33Ch, 5626025Ch
		dd 4C13B1E7h, 0A164D2h,	50000000h, 258964h, 83000000h
		dd 565368ECh, 0E8658957h, 5D89DB33h, 90026AFCh,	7FE8DBE8h
		dd 0D835977h, 50E9C4h, 0D40D83FFh, 0FF0050E9h, 8725E890h
		dd 0D8B777Eh, 50E8D8h, 0E1E80889h, 90777E86h, 0E8D40D8Bh
		dd 8890050h, 50FA1CA1h,	0A3008B00h, 50E9B8h, 12EE8h, 0F01D3900h
		dd 7500446Ch, 6C08680Ch, 0E8900043h, 77816B85h,	0FAE859h
		dd 10680000h, 68004434h, 44330Ch, 0E5E8h, 0E8D0A100h, 45890050h
		dd 94458D94h, 0CC35FF50h, 8D0050E8h, 8D509C45h,	8D509045h
		dd 9050A045h, 7E83C2E8h, 32086877h, 680044h, 0E8004430h
		dd 0B2h, 0A124C483h, 50FA2Ch, 7589308Bh, 223E808Ch, 89463A75h
		dd 68A8C75h, 474C33Ah, 0F275223Ch, 75223E80h, 75894604h
		dd 3A068A8Ch, 3C0474C3h, 89F27620h, 458DD05Dh, 0E89050A4h
		dd 22C95E4h, 1D045F6h, 0B70F1174h, 0EEBD445h, 76203E80h
		dd 758946D8h, 6AF5EB8Ch, 5650580Ah, 0E8905353h,	244A102h
		dd 0B322E850h, 4589FFFCh, 0E8905098h, 778032D2h, 8BEC458Bh
		dd 89098B08h, 5150884Dh, 21E8h,	0C3595900h, 0FFE8658Bh
		dd 0E8908875h, 778032CEh

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_436BCC	proc near		; CODE XREF: ___:00436814p
		jmp	near ptr 77C21868h
sub_436BCC	endp

; ---------------------------------------------------------------------------
		db 50h,	0E9h, 7Ah
		dd 2777FE2h, 32BCE990h,	0CBE97780h, 11777FC1h, 8301E990h
		dd 78E9777Eh, 46778031h, 3000068h, 6800h, 25E80001h, 59000000h
		dd 0E990C359h, 77816A6Dh, 0C3C3C033h, 7E8593E9h, 0E990D977h
		dd 777E85C3h, 0E75EE990h, 0E990777Fh, 777FF070h, 818206E9h
		dd 0E990A177h, 75C6973Bh, 9819E990h, 0E99075C6h, 75C5B3F2h
		dd 0C58844E9h, 0E9901B75h, 75C697E8h, 0B319E990h, 0E99075C4h
		dd 75C54BF8h, 0C60A56E9h, 85E90775h, 8875C4EEh

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436C60	proc near		; CODE XREF: ___:0041943Ep
		nop
		jmp	near ptr 76D6AC1Dh
sub_436C60	endp

; ---------------------------------------------------------------------------
		dw 2BE9h
		dd 8D023A9Bh, 9B71E990h, 52E9023Ah, 0A4023A9Dh,	9382E990h
		dd 7DE9023Bh, 0DC023C93h, 0A4DBE990h, 71E9023Ch, 88023D93h
		dd 3E936BE9h, 0E9901602h, 23EAA2Bh, 0AB7AE990h,	0E990023Eh
		dd 23EAF00h, 3EB1D7E9h,	0E9902802h, 23F934Ch, 9A0FE990h
		dd 0E990023Fh, 23F9E9Eh, 40933BE9h, 0E9902802h,	2409D63h
		dd 0A09EE990h, 0E9900240h, 2419328h, 429323E9h,	0E9907102h
		dd 243931Ch, 449317E9h,	0AFE90402h, 5302449Fh, 930AE990h
		dd 0E9900245h, 2459A24h, 459E47E9h, 0E9900C02h,	24692F8h
		dd 3A92F3E9h, 0E9908802h, 2399BF6h, 92E6E990h, 0E9900239h
		dd 23892E0h, 379A8EE9h,	0E9900E02h, 23792D4h, 3692CFE9h
		dd 0E9902802h, 2359ADBh, 9721E990h, 0BDE90235h,	0BB023592h
		dd 9826E990h, 0E9900234h, 22C92B0h, 92AAE990h, 0E9900234h
		dd 2339EFAh, 339E84E9h,	0E9901102h, 7C4CA385h, 4CA298E9h
		dd 0E9902A7Ch, 2339BBAh, 339AAAE9h, 81E9AE02h, 0A4023392h
		dd 9A29E990h, 0C4E90232h, 0AE023299h, 97ECE990h, 49E90232h
		dd 9023296h, 9494E990h,	0E9900232h, 232925Ch, 9F59E990h
		dd 0E9900231h, 2319D83h, 9BAAE990h, 1DE90231h, 71023199h
		dd 31985FE9h, 0E9903402h, 2319238h, 309D59E9h, 2EE99A02h
		dd 0E802309Ah, 3098B7E9h, 65E9FA02h, 0CF023095h, 30921BE9h
		dd 0E990C002h, 22F9C33h, 98CFE990h, 5DE9022Fh, 67022F98h
		dd 2F9203E9h, 0E990DE02h, 22EA00Ah, 9CF5E990h, 0CE9022Eh
		dd 88022E99h, 91EAE990h, 0E990022Eh, 22D9F85h, 2D9D90E9h
		dd 0E9906702h, 22D9A6Bh, 98E1E990h, 0CDE9022Dh,	0E8022D91h
		dd 9322E990h, 0E990022Ch, 1B337Dh, 963EE990h, 90E90246h
		dd 390250A2h, 91AEE990h, 0A9E9024Ch, 5D025091h,	91A2E990h
		dd 76E9024Fh, 0B8024E9Eh, 4E9197E9h, 0E990D902h, 24D97DEh
		dd 4D94D7E9h, 85E9EB02h, 62024D91h, 9B3BE990h, 0E9024Ch
		dd 16024C99h, 963DE990h, 0E990024Ch, 24698F8h, 9C58E990h
		dd 0E990024Bh, 24B9856h, 9580E990h, 0E990024Bh,	24B9154h
		dd 914EE990h, 0E990024Ah, 2499148h, 0AC7DE990h,	40E90248h
		dd 1B0248A9h, 0A751E990h, 6E90248h, 0AE0248A6h,	912AE990h
		dd 25E90248h, 0AE024791h, 60A22FE9h, 0E990F57Ch, 7167D059h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_436EE8	proc near		; CODE XREF: ___:0042C8F1p
		jmp	near ptr 71AB4FD4h
sub_436EE8	endp

; ---------------------------------------------------------------------------
		db 53h,	90h, 0E9h
		dd 71687585h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436EF4	proc near		; CODE XREF: sub_42C8E1+1p
		nop
		jmp	near ptr 71AB2BF4h
sub_436EF4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436EFA	proc near		; CODE XREF: sub_42CC50+E5p
					; sub_42DC70+4Fp
		nop
		jmp	near ptr 71AB615Ah
sub_436EFA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436F00	proc near		; CODE XREF: sub_42D1A0+9Ap
					; sub_42DD50+45p ...
		nop
		jmp	near ptr 71AB428Ah
sub_436F00	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436F06	proc near		; CODE XREF: sub_42DFD0+53p
					; sub_42DFD0+96p ...
		nop
		jmp	near ptr 71AB9639h
sub_436F06	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_436F0C	proc near
		jmp	near ptr 71AC1028h
sub_436F0C	endp

; ---------------------------------------------------------------------------
		dec	ebx

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_436F12	proc near		; CODE XREF: sub_42CE80+71p
					; sub_42DA60+50p
		jmp	near ptr 71AB2DC0h
sub_436F12	endp

; ---------------------------------------------------------------------------
		retn	0E990h
; ---------------------------------------------------------------------------
		dw 0BCA2h
		db 67h,	71h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436F1E	proc near
		nop
		jmp	near ptr 71AB88D3h
sub_436F1E	endp

; ---------------------------------------------------------------------------
		db 90h
		db 0E9h, 3Ch, 0BCh
		db 67h,	71h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436F2A	proc near		; CODE XREF: sub_42D580+187p
		nop
		jmp	near ptr 71AB951Eh
sub_436F2A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436F30	proc near
		nop
		jmp	near ptr 71AB3E00h
sub_436F30	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436F36	proc near		; CODE XREF: sub_42C810+B1p
		nop
		jmp	near ptr 71AB2B66h
sub_436F36	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_436F3C	proc near		; CODE XREF: ___:0042C93Fp
					; sub_42D580+152p
		jmp	near ptr 71AB3B91h
sub_436F3C	endp

; ---------------------------------------------------------------------------
		db 0BBh

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_436F42	proc near
		jmp	near ptr 71AB406Ah
sub_436F42	endp

; ---------------------------------------------------------------------------
		db 25h
		dd 67D4DBE9h
		db 71h,	0A1h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436F4E	proc near		; CODE XREF: sub_42C790+10p
		nop
		jmp	near ptr 71AB664Dh
sub_436F4E	endp

; ---------------------------------------------------------------------------
		dd 67E16FE9h
		db 71h,	0D9h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436F5A	proc near		; CODE XREF: sub_4338B0+Bp
		nop
		jmp	near ptr 71AB94DCh
sub_436F5A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_436F60	proc near		; CODE XREF: sub_41A6D0+92p
					; sub_41A8C0+CAp ...
		jmp	near ptr 71AB4544h
sub_436F60	endp

; ---------------------------------------------------------------------------
		db 2, 90h, 0E9h
		dd 71689BE4h, 0D5A7E990h, 49E97167h, 807167BCh,	0BD91E990h
		dd 0E9907167h, 7167BCE5h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436F84	proc near
		nop
		jmp	near ptr 71AB3EA1h
sub_436F84	endp

; ---------------------------------------------------------------------------
		db 90h
		db 0E9h
		dd 716817D9h, 67D4F4E9h
		db 71h,	0AEh

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_436F96	proc near		; CODE XREF: sub_42C810+53p
					; sub_42C810+C3p
		jmp	near ptr 71ABE6EBh
sub_436F96	endp

; ---------------------------------------------------------------------------
		db 0DCh

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436F9C	proc near		; CODE XREF: sub_42DFD0+4Ap
		nop
		jmp	near ptr 71AC0BDEh
sub_436F9C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436FA2	proc near
		nop
		jmp	near ptr 71AB2A5Eh
sub_436FA2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436FA8	proc near		; CODE XREF: ___:0041C1B7p
					; ___:0041C1CCp
		nop
		jmp	near ptr 71B2578Ch
sub_436FA8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436FAE	proc near		; CODE XREF: ___:0041C30Dp
					; ___:0041C32Fp
		nop
		jmp	near ptr 71B25099h
sub_436FAE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436FB4	proc near		; CODE XREF: ___:00420044p
		nop
		jmp	near ptr 76BF215Ah
sub_436FB4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436FBA	proc near		; CODE XREF: ___:0042002Bp
		nop
		jmp	near ptr 76BF1F1Ch
sub_436FBA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


sub_436FC0	proc near		; CODE XREF: sub_41FF90+21p
		nop
		jmp	near ptr 76BF3A9Ah
sub_436FC0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn thunk


sub_436FC6	proc near		; CODE XREF: ___:0041B1B4p
		jmp	near ptr 76F36C5Bh
sub_436FC6	endp

; ---------------------------------------------------------------------------
		db 9Ah
		dd 80F27DE9h, 0E990F577h, 7780F14Dh, 0F192E990h, 0E9907780h
		dd 7780F33Ch, 2C7h dup(0CCCCCCCCh), 0FB988D8Dh,	1BE9FFFFh
		dd 8DFFFC97h, 0FFFBC88Dh, 9710E9FFh, 8D8DFFFCh,	0FFFFFBB0h
		dd 0FC9705E9h, 0E08D8DFFh, 0E9FFFFFBh, 0FFFC96FAh, 0FB94858Bh
		dd 0E083FFFFh, 0FC08501h, 884h,	44D8B00h, 0FC96E1E9h
; ---------------------------------------------------------------------------
		inc	ebx

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4034E0	proc near		; DATA XREF: sub_4034E0+2o
		mov	eax, offset dword_43E470
		jmp	sub_4367C8
SEH_4034E0	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 52h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9Bh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0E4h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 12Dh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 176h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1BFh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 208h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 251h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 29Ah
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2E3h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32Ch
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 375h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3BEh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 407h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 450h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 499h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4E2h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 52Bh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 574h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 5BDh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 606h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 64Fh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 698h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 6E1h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 72Ah
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 773h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 7BCh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 805h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 84Eh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 897h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8E0h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 929h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 972h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9BBh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0A04h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0A4Dh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0A96h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0ADFh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0B28h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0B71h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0B9Fh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0BCDh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0BFBh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0C29h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0C57h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0C85h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0CB3h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0CE1h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0D0Fh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0D3Dh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0D6Bh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0D99h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0DC7h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0DF5h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0E23h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0E51h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0E7Fh
		jmp	sub_40206D
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 10C7h
		jmp	sub_40206D
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 130Fh
		jmp	sub_40206D
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1557h
		jmp	sub_40206D

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4036D0	proc near		; DATA XREF: sub_4036D0+2o
		mov	eax, offset dword_43E4C0
		jmp	sub_4367C8
SEH_4036D0	endp

; ---------------------------------------------------------------------------
		db 0D6h	dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_403C00	proc near		; DATA XREF: sub_403C00+2o
		mov	eax, offset dword_43E700
		jmp	sub_4367C8
SEH_403C00	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1Eh
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_403C90	proc near		; DATA XREF: sub_403C90+2o
		mov	eax, offset dword_43E730
		jmp	sub_4367C8
SEH_403C90	endp

; ---------------------------------------------------------------------------
		db 13h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1Eh
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_403D10	proc near		; DATA XREF: sub_403D10+2o
		mov	eax, offset dword_43E768
		jmp	sub_4367C8
SEH_403D10	endp

; ---------------------------------------------------------------------------
		db 13h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_403D90	proc near		; DATA XREF: sub_403D90+2o
		mov	eax, offset dword_43E7A0
		jmp	sub_4367C8
SEH_403D90	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 49h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 92h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0DBh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 124h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 16Dh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1B6h
		jmp	sub_401AD2

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_403E00	proc near		; DATA XREF: sub_403E00+2o
		mov	eax, offset dword_43E7D0
		jmp	sub_4367C8
SEH_403E00	endp

; ---------------------------------------------------------------------------
		db 1Dh dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 49h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 92h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0DBh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 124h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 16Dh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1B6h
		jmp	sub_401AD2

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_403EE0	proc near		; DATA XREF: sub_403EE0+2o
		mov	eax, offset dword_43E830
		jmp	sub_4367C8
SEH_403EE0	endp

; ---------------------------------------------------------------------------
		db 1Dh dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_403FC0	proc near		; DATA XREF: sub_403FC0+2o
		mov	eax, offset dword_43E890
		jmp	sub_4367C8
SEH_403FC0	endp

; ---------------------------------------------------------------------------
		db 2Eh dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-84h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_404640	proc near		; DATA XREF: sub_404640+2o
		mov	eax, offset dword_43E948
		jmp	sub_4367C8
SEH_404640	endp

; ---------------------------------------------------------------------------
		db 1Bh dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-14Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-100h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-14Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-14Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-11Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-11Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-11Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-14Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-14Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-11Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-14Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-14Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-14Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-100h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-134h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-164h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0E8h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43849B:				; DATA XREF: ___:00404C78o
		mov	eax, offset dword_43E9D0
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 8Bh dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-28h]
		and	eax, 1
		test	eax, eax
		jz	locret_43854E
		mov	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------

locret_43854E:				; CODE XREF: ___:00438540j
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4066E0	proc near		; DATA XREF: sub_4066E0+2o
		mov	eax, offset dword_43EBA8
		jmp	sub_4367C8
SEH_4066E0	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-18Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-198h]
		and	eax, 1
		test	eax, eax
		jz	locret_438594
		mov	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------

locret_438594:				; CODE XREF: ___:00438586j
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_406890	proc near		; DATA XREF: sub_406890+2o
		mov	eax, offset dword_43EBE0
		jmp	sub_4367C8
SEH_406890	endp

; ---------------------------------------------------------------------------
		db 11h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-454h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-43Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-424h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_406C30	proc near		; DATA XREF: sub_406C30+8o
		mov	eax, offset dword_43EC18
		jmp	sub_4367C8
SEH_406C30	endp

; ---------------------------------------------------------------------------
		db 15h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_407030	proc near		; DATA XREF: sub_407030+2o
		mov	eax, offset dword_43EC58
		jmp	sub_4367C8
SEH_407030	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+8]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_407660	proc near		; DATA XREF: sub_407660+8o
		mov	eax, offset dword_43EC88
		jmp	sub_4367C8
SEH_407660	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+20h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+8]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4076F0	proc near		; DATA XREF: sub_4076F0+8o
		mov	eax, offset dword_43ECB8
		jmp	sub_4367C8
SEH_4076F0	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-174h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2DCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1A4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1D4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2C4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2ACh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-204h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-234h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-84h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-264h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-27Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-15Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-114h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-18Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-144h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1BCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-294h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1ECh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0CCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-21Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0B4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-9Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0E4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-330h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-318h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-34Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-348h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-12Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0FCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-350h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-300h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-2FCh]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_407790	proc near		; DATA XREF: sub_407790+2o
		mov	eax, offset dword_43ECF0
		jmp	sub_4367C8
SEH_407790	endp

; ---------------------------------------------------------------------------
		db 0CAh	dup(0CCh)
		dd 90C84D8Dh, 0C56A4CE9h
		db 75h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_409580	proc near		; DATA XREF: sub_409580+2o
		mov	eax, offset dword_43F098
		jmp	sub_4367C8
SEH_409580	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40A290	proc near		; DATA XREF: sub_40A290+2o
		mov	eax, offset dword_43F0C8
		jmp	sub_4367C8
SEH_40A290	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [ebp-38h]
		and	eax, 1
		test	eax, eax
		jz	locret_438A86
		mov	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------

locret_438A86:				; CODE XREF: ___:00438A78j
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-34h]
		jmp	sub_40158C
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40A430	proc near		; DATA XREF: sub_40A430+2o
		mov	eax, offset dword_43F0F8
		jmp	sub_4367C8
SEH_40A430	endp

; ---------------------------------------------------------------------------
		align 10h
		dd 90C84D8Dh, 0C569CCE9h
		db 75h
; ---------------------------------------------------------------------------


loc_438AB9:				; DATA XREF: ___:0040A952o
		mov	eax, offset dword_43F138
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40AE10	proc near		; DATA XREF: sub_40AE10+5o
		mov	eax, offset dword_43F168
		jmp	sub_4367C8
SEH_40AE10	endp

; ---------------------------------------------------------------------------
		align 10h


loc_438AE0:				; DATA XREF: ___:0040AF95o
		mov	eax, offset dword_43F1C8
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8Eh
		jmp	sub_401555

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40B0B0	proc near		; DATA XREF: sub_40B0B0+2o
		mov	eax, offset dword_43F228
		jmp	sub_4367C8
SEH_40B0B0	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8Eh
		jmp	sub_401555

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40B170	proc near		; DATA XREF: sub_40B170+2o
		mov	eax, offset dword_43F270
		jmp	sub_4367C8
SEH_40B170	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40B210	proc near		; DATA XREF: sub_40B210+2o
		mov	eax, offset dword_43F2B8
		jmp	sub_4367C8
SEH_40B210	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40B430	proc near		; DATA XREF: sub_40B430+2o
		mov	eax, offset dword_43F2F8
		jmp	sub_4367C8
SEH_40B430	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_438BF8:				; DATA XREF: ___:0040B5F2o
		mov	eax, offset dword_43F338
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_438C30:				; DATA XREF: ___:0040B8D8o
		mov	eax, offset dword_43F368
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 16h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40C360	proc near		; DATA XREF: sub_40C360+2o
		mov	eax, offset dword_43F3B0
		jmp	sub_4367C8
SEH_40C360	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-0A78h]
		jmp	loc_401AFF
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0A3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0A54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0A3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_438C9C:				; DATA XREF: ___:0040C408o
		mov	eax, offset dword_43F3E0
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 1Ah dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40CB10	proc near		; DATA XREF: sub_40CB10+2o
		mov	eax, offset dword_43F428
		jmp	sub_4367C8
SEH_40CB10	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-260h]
		jmp	loc_40226B
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-278h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-278h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-278h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-278h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_438D17:				; DATA XREF: ___:0040CBB8o
		mov	eax, offset dword_43F458
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 1Fh dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 19h
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40CE60	proc near		; DATA XREF: sub_40CE60+2o
		mov	eax, offset dword_43F4A8
		jmp	sub_4367C8
SEH_40CE60	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 19h
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_438D86:				; DATA XREF: ___:0040CEE2o
		mov	eax, offset dword_43F4E0
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40D130	proc near		; DATA XREF: sub_40D130+2o
		mov	eax, offset dword_43F518
		jmp	sub_4367C8
SEH_40D130	endp

; ---------------------------------------------------------------------------
		db 16h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-16Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-184h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-19Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-19Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-19Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-19Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-19Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-19Ch]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40D580	proc near		; DATA XREF: sub_40D580+2o
		mov	eax, offset dword_43F560
		jmp	sub_4367C8
SEH_40D580	endp

; ---------------------------------------------------------------------------
		db 1Eh dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5ECh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6ACh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-604h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-634h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-664h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-67Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-61Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5D4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5A4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-58Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-694h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5BCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-64Ch]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40DB40	proc near		; DATA XREF: sub_40DB40+2o
		mov	eax, offset dword_43F5D0
		jmp	sub_4367C8
SEH_40DB40	endp

; ---------------------------------------------------------------------------
		db 27h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40E220	proc near		; DATA XREF: sub_40E220+2o
		mov	eax, offset dword_43F668
		jmp	sub_4367C8
SEH_40E220	endp

; ---------------------------------------------------------------------------
		db 16h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40E7A0	proc near		; DATA XREF: sub_40E7A0+2o
		mov	eax, offset dword_43F6C0
		jmp	sub_4367C8
SEH_40E7A0	endp

; ---------------------------------------------------------------------------
		db 16h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40EC30	proc near		; DATA XREF: sub_40EC30+2o
		mov	eax, offset dword_43F718
		jmp	sub_4367C8
SEH_40EC30	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40ED70	proc near		; DATA XREF: sub_40ED70+2o
		mov	eax, offset dword_43F758
		jmp	sub_4367C8
SEH_40ED70	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_439048:				; DATA XREF: ___:0040F148o
		mov	eax, offset dword_43F788
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 1Eh dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		jmp	sub_402031
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 28h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 3Dh
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 56h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 84h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 0B2h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 0E0h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 10Eh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 13Ch
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 16Ah
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 198h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 1C6h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 1F4h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 222h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 250h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 27Eh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 2ACh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 2DAh
		jmp	sub_401B54
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40F600	proc near		; DATA XREF: sub_40F600+2o
		mov	eax, offset dword_43F7E8
		jmp	sub_4367C8
SEH_40F600	endp

; ---------------------------------------------------------------------------
		db 69h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_402031
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 28h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Dh
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 56h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 84h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0B2h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0E0h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 10Eh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 13Ch
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 16Ah
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 198h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1C6h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1F4h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 222h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 250h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 27Eh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2ACh
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_40FDA0	proc near		; DATA XREF: sub_40FDA0+2o
		mov	eax, offset dword_43F948
		jmp	sub_4367C8
SEH_40FDA0	endp

; ---------------------------------------------------------------------------
		db 47h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-247Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-210Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-207Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-237Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-21CCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-234Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2064h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-231Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-219Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20DCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-22ECh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-22BCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-23DCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-216Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2424h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-2480h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	eax, [ebp-2480h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-23F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-2480h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	eax, [ebp-2480h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-228Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-23C4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-225Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-213Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-2480h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	eax, [ebp-2480h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-21FCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20ACh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-222Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2394h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-23ACh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2334h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2364h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2304h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-22D4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-2480h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-22A4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2244h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2274h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2214h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-21E4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2184h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-21B4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-243Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-240Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2124h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2154h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-2094h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-2464h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-20C4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_4395D3:				; DATA XREF: ___:0040FF68o
		mov	eax, offset dword_43FA00
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 93h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_402031

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_411860	proc near		; DATA XREF: sub_411860+2o
		mov	eax, offset dword_43FC10
		jmp	sub_4367C8
SEH_411860	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_402031

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_411910	proc near		; DATA XREF: sub_411910+2o
		mov	eax, offset dword_43FC40
		jmp	sub_4367C8
SEH_411910	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 15h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2Ah
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Fh
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 54h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 69h
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_411990	proc near		; DATA XREF: sub_411990+2o
		mov	eax, offset dword_43FC70
		jmp	sub_4367C8
SEH_411990	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 15h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2Ah
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Fh
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 54h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 69h
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_411A50	proc near		; DATA XREF: sub_411A50+2o
		mov	eax, offset dword_43FCC8
		jmp	sub_4367C8
SEH_411A50	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_411B40	proc near		; DATA XREF: sub_411B40+8o
		mov	eax, offset dword_43FD20
		jmp	sub_4367C8
SEH_411B40	endp

; ---------------------------------------------------------------------------
		db 16h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-84h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-84h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-84h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_439859:				; DATA XREF: ___:00411FE8o
		mov	eax, offset dword_43FDA0
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 2Dh dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-48h]
		and	eax, 1
		test	eax, eax
		jz	locret_4398AE
		mov	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------

locret_4398AE:				; CODE XREF: ___:004398A0j
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4126B0	proc near		; DATA XREF: sub_4126B0+2o
		mov	eax, offset dword_43FE40
		jmp	sub_4367C8
SEH_4126B0	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_412970	proc near		; DATA XREF: sub_412970+8o
		mov	eax, offset dword_43FE78
		jmp	sub_4367C8
SEH_412970	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_412C10	proc near		; DATA XREF: sub_412C10+2o
		mov	eax, offset dword_43FEB0
		jmp	sub_4367C8
SEH_412C10	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-84h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-9Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43994E:				; DATA XREF: ___:00412CB8o
		mov	eax, offset dword_43FEE0
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 18h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_4011B8
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 6Ch
		jmp	sub_4014B5

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_413120	proc near		; DATA XREF: sub_413120+2o
		mov	eax, offset dword_43FF40
		jmp	sub_4367C8
SEH_413120	endp

; ---------------------------------------------------------------------------
		db 1Ah dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_4011B8
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 6Ch
		jmp	sub_4014B5

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_413220	proc near		; DATA XREF: sub_413220+2o
		mov	eax, offset dword_43FF88
		jmp	sub_4367C8
SEH_413220	endp

; ---------------------------------------------------------------------------
		db 1Ah dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4132E0	proc near		; DATA XREF: sub_4132E0+2o
		mov	eax, offset dword_43FFD0
		jmp	sub_4367C8
SEH_4132E0	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+4]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4133D0	proc near		; DATA XREF: sub_4133D0+2o
		mov	eax, offset dword_440008
		jmp	sub_4367C8
SEH_4133D0	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+4]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_413510	proc near		; DATA XREF: sub_413510+2o
		mov	eax, offset dword_440038
		jmp	sub_4367C8
SEH_413510	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+1Ch]
		jmp	sub_401578
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+4]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_413670	proc near		; DATA XREF: sub_413670+2o
		mov	eax, offset dword_440068
		jmp	sub_4367C8
SEH_413670	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0A4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-8Ch]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4137E0	proc near		; DATA XREF: sub_4137E0+2o
		mov	eax, offset dword_4400A0
		jmp	sub_4367C8
SEH_4137E0	endp

; ---------------------------------------------------------------------------
		db 18h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+1Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-14h]
		jmp	sub_401578

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4139B0	proc near		; DATA XREF: sub_4139B0+2o
		mov	eax, offset dword_4400E0
		jmp	sub_4367C8
SEH_4139B0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_439B08:				; DATA XREF: ___:00413AE2o
		mov	eax, offset dword_440120
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-40h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_413B70	proc near		; DATA XREF: sub_413B70+2o
		mov	eax, offset dword_440150
		jmp	sub_4367C8
SEH_413B70	endp

; ---------------------------------------------------------------------------
		db 13h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+64h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+4Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+34h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+1Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-10h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_413DA0	proc near		; DATA XREF: sub_413DA0+2o
		mov	eax, offset dword_440198
		jmp	sub_4367C8
SEH_413DA0	endp

; ---------------------------------------------------------------------------
		db 13h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 19h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2Eh
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_414090	proc near		; DATA XREF: sub_414090+2o
		mov	eax, offset dword_4401F0
		jmp	sub_4367C8
SEH_414090	endp

; ---------------------------------------------------------------------------
		db 15h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+14h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+0Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_439C10:				; DATA XREF: ___:00414122o
		mov	eax, offset dword_440230
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 16h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+4Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+34h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+1Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-10h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_414230	proc near		; DATA XREF: sub_414230+2o
		mov	eax, offset dword_440278
		jmp	sub_4367C8
SEH_414230	endp

; ---------------------------------------------------------------------------
		db 1Bh dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 15h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2Ah
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Fh
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_414360	proc near		; DATA XREF: sub_414360+2o
		mov	eax, offset dword_4402C8
		jmp	sub_4367C8
SEH_414360	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+0Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_439CD8:				; DATA XREF: ___:00414402o
		mov	eax, offset dword_440310
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+4]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4144D0	proc near		; DATA XREF: sub_4144D0+2o
		mov	eax, offset dword_440350
		jmp	sub_4367C8
SEH_4144D0	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_439D20:				; DATA XREF: ___:00414692o
		mov	eax, offset dword_440380
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+1Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+4]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4147D0	proc near		; DATA XREF: sub_4147D0+2o
		mov	eax, offset dword_4403B8
		jmp	sub_4367C8
SEH_4147D0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 19h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2Eh
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4149D0	proc near		; DATA XREF: sub_4149D0+2o
		mov	eax, offset dword_4403F0
		jmp	sub_4367C8
SEH_4149D0	endp

; ---------------------------------------------------------------------------
		db 15h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_439D98:				; DATA XREF: ___:00414A62o
		mov	eax, offset dword_440430
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_439DB8:				; DATA XREF: ___:00414AF2o
		mov	eax, offset dword_440460
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 15h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2Ah
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Fh
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_414CA0	proc near		; DATA XREF: sub_414CA0+2o
		mov	eax, offset dword_440490
		jmp	sub_4367C8
SEH_414CA0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-4Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-48h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-44h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_439E48:				; DATA XREF: ___:00414D48o
		mov	eax, offset dword_4404D8
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 1Eh dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401262
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Eh
		jmp	sub_40143D
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 15Fh
		jmp	sub_401929
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1B46h
		jmp	sub_401C8F
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1BBEh
		jmp	sub_401AE6
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1C58h
		jmp	sub_4014F1
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1D29h
		jmp	sub_401E83
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1E6Fh
		jmp	sub_401235
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8EF5Dh
		jmp	sub_4013C0
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8F247h
		jmp	sub_401A23
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8F270h
		jmp	sub_4017A3
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8F285h
		jmp	sub_402216
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8F3A2h
		jmp	sub_401EB0
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8F4BFh
		jmp	sub_4018CA
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FA13h
		jmp	sub_4017D0
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FA73h
		jmp	sub_401B27
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FAD3h
		jmp	sub_401F28
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FB05h
		jmp	sub_401113
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FB93h
		jmp	sub_40187A
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FBCDh
		jmp	sub_401DED
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FBFFh
		jmp	sub_401FF5
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FC31h
		jmp	sub_40176C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FC42h
		jmp	sub_401EE2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FD2Dh
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FD42h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FD57h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FD6Ch
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_439FE1:				; DATA XREF: ___:00416992o
		mov	eax, offset dword_440538
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 65h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401262
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Eh
		jmp	sub_40143D
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 15Fh
		jmp	sub_401929
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1B46h
		jmp	sub_401C8F
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1BBEh
		jmp	sub_401AE6
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1C58h
		jmp	sub_4014F1
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1D29h
		jmp	sub_401E83
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1E6Fh
		jmp	sub_401235
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8EF5Dh
		jmp	sub_4013C0
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8F247h
		jmp	sub_401A23
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8F270h
		jmp	sub_4017A3
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8F285h
		jmp	sub_402216
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8F3A2h
		jmp	sub_401EB0
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8F4BFh
		jmp	sub_4018CA
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FA13h
		jmp	sub_4017D0
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FA73h
		jmp	sub_401B27
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FAD3h
		jmp	sub_401F28
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FB05h
		jmp	sub_401113
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FB93h
		jmp	sub_40187A
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FBCDh
		jmp	sub_401DED
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FBFFh
		jmp	sub_401FF5
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FC31h
		jmp	sub_40176C
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FC42h
		jmp	sub_401EE2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FD2Dh
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FD42h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FD57h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9FD6Ch
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43A1C1:				; DATA XREF: ___:00416D32o
		mov	eax, offset dword_440648
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 65h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_416FB0	proc near		; DATA XREF: sub_416FB0+2o
		mov	eax, offset dword_440758
		jmp	sub_4367C8
SEH_416FB0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		add	ecx, 9
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 52h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9Bh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0E4h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 12Dh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 176h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1BFh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 208h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 251h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 29Ah
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2E3h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32Ch
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 375h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3BEh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 407h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 450h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 499h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4E2h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 52Bh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 574h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 5BDh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 606h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 64Fh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 698h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 6E1h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 72Ah
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 773h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 7BCh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 805h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 84Eh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 897h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8E0h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 929h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 972h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 9BBh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0A04h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0A4Dh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0A96h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0ADFh
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0B28h
		jmp	sub_401AD2
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0B71h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0B9Fh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0BCDh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0BFBh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0C29h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0C57h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0C85h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0CB3h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0CE1h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0D0Fh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0D3Dh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0D6Bh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0D99h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0DC7h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0DF5h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0E23h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0E51h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0E7Fh
		jmp	sub_40206D
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 10C7h
		jmp	sub_40206D
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 130Fh
		jmp	sub_40206D
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 1557h
		jmp	sub_40206D

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417020	proc near		; DATA XREF: sub_417020+2o
		mov	eax, offset dword_440788
		jmp	sub_4367C8
SEH_417020	endp

; ---------------------------------------------------------------------------
		db 0D6h	dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 19h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 47h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 75h
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417540	proc near		; DATA XREF: sub_417540+2o
		mov	eax, offset dword_4409C8
		jmp	sub_4367C8
SEH_417540	endp

; ---------------------------------------------------------------------------
		db 1Ah dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8Eh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0BCh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0EAh
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4175E0	proc near		; DATA XREF: sub_4175E0+2o
		mov	eax, offset dword_440A10
		jmp	sub_4367C8
SEH_4175E0	endp

; ---------------------------------------------------------------------------
		db 1Bh dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8D008h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8D036h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8D064h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8D092h
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4176B0	proc near		; DATA XREF: sub_4176B0+2o
		mov	eax, offset dword_440A68
		jmp	sub_4367C8
SEH_4176B0	endp

; ---------------------------------------------------------------------------
		db 1Eh dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8Eh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0BCh
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417770	proc near		; DATA XREF: sub_417770+2o
		mov	eax, offset dword_440AB0
		jmp	sub_4367C8
SEH_417770	endp

; ---------------------------------------------------------------------------
		db 19h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8Eh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0BCh
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417830	proc near		; DATA XREF: sub_417830+2o
		mov	eax, offset dword_440B00
		jmp	sub_4367C8
SEH_417830	endp

; ---------------------------------------------------------------------------
		db 19h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4178F0	proc near		; DATA XREF: sub_4178F0+2o
		mov	eax, offset dword_440B50
		jmp	sub_4367C8
SEH_4178F0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417960	proc near		; DATA XREF: sub_417960+2o
		mov	eax, offset dword_440B80
		jmp	sub_4367C8
SEH_417960	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4179D0	proc near		; DATA XREF: sub_4179D0+2o
		mov	eax, offset dword_440BB0
		jmp	sub_4367C8
SEH_4179D0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417A60	proc near		; DATA XREF: sub_417A60+2o
		mov	eax, offset dword_440BE0
		jmp	sub_4367C8
SEH_417A60	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8Eh
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417B20	proc near		; DATA XREF: sub_417B20+2o
		mov	eax, offset dword_440C18
		jmp	sub_4367C8
SEH_417B20	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 19h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 47h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 75h
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417BC0	proc near		; DATA XREF: sub_417BC0+2o
		mov	eax, offset dword_440C60
		jmp	sub_4367C8
SEH_417BC0	endp

; ---------------------------------------------------------------------------
		db 1Ah dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8Eh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0BCh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0EAh
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417C60	proc near		; DATA XREF: sub_417C60+2o
		mov	eax, offset dword_440CA8
		jmp	sub_4367C8
SEH_417C60	endp

; ---------------------------------------------------------------------------
		db 1Bh dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8D008h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8D036h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8D064h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8D092h
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417D30	proc near		; DATA XREF: sub_417D30+2o
		mov	eax, offset dword_440D00
		jmp	sub_4367C8
SEH_417D30	endp

; ---------------------------------------------------------------------------
		db 1Eh dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8Eh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0BCh
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417E50	proc near		; DATA XREF: sub_417E50+2o
		mov	eax, offset dword_440D48
		jmp	sub_4367C8
SEH_417E50	endp

; ---------------------------------------------------------------------------
		db 19h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8Eh
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 0BCh
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417F10	proc near		; DATA XREF: sub_417F10+2o
		mov	eax, offset dword_440D98
		jmp	sub_4367C8
SEH_417F10	endp

; ---------------------------------------------------------------------------
		db 19h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_417FD0	proc near		; DATA XREF: sub_417FD0+2o
		mov	eax, offset dword_440DE8
		jmp	sub_4367C8
SEH_417FD0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_418080	proc near		; DATA XREF: sub_418080+2o
		mov	eax, offset dword_440E18
		jmp	sub_4367C8
SEH_418080	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_418100	proc near		; DATA XREF: sub_418100+2o
		mov	eax, offset dword_440E48
		jmp	sub_4367C8
SEH_418100	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4181B0	proc near		; DATA XREF: sub_4181B0+2o
		mov	eax, offset dword_440E78
		jmp	sub_4367C8
SEH_4181B0	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 32h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 60h
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8Eh
		jmp	sub_401023

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_418290	proc near		; DATA XREF: sub_418290+2o
		mov	eax, offset dword_440EB0
		jmp	sub_4367C8
SEH_418290	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1B4h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_418490	proc near		; DATA XREF: sub_418490+8o
		mov	eax, offset dword_440EF8
		jmp	sub_4367C8
SEH_418490	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-14h]
		add	ecx, 4
		jmp	sub_401023
; ---------------------------------------------------------------------------
		mov	eax, [ebp-10h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4190B0	proc near		; DATA XREF: sub_4190B0+2o
		mov	eax, offset dword_440F28
		jmp	sub_4367C8
SEH_4190B0	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	eax, [ebp-10h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_419170	proc near		; DATA XREF: sub_419170+2o
		mov	eax, offset dword_440F60
		jmp	sub_4367C8
SEH_419170	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_419220	proc near		; DATA XREF: sub_419220+2o
		mov	eax, offset dword_440F90
		jmp	sub_4367C8
SEH_419220	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-274h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-28Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43ACA6:				; DATA XREF: ___:004192C2o
		mov	eax, offset dword_440FC0
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-820h]
		jmp	sub_40186B
; ---------------------------------------------------------------------------


loc_43ACCB:				; DATA XREF: ___:0041A188o
		mov	eax, offset dword_440FF8
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [ebp-44h]
		and	eax, 1
		test	eax, eax
		jz	locret_43ACF6
		mov	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------

locret_43ACF6:				; CODE XREF: ___:0043ACE8j
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43AD07:				; DATA XREF: ___:0041B0F2o
		mov	eax, offset dword_441028
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_402031

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_41B400	proc near		; DATA XREF: sub_41B400+2o
		mov	eax, offset dword_441068
		jmp	sub_4367C8
SEH_41B400	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-40h]
		and	eax, 1
		test	eax, eax
		jz	locret_43AD5E
		mov	ecx, [ebp+4]
		jmp	sub_401226
; ---------------------------------------------------------------------------

locret_43AD5E:				; CODE XREF: ___:0043AD50j
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_41B950	proc near		; DATA XREF: sub_41B950+2o
		mov	eax, offset dword_441098
		jmp	sub_4367C8
SEH_41B950	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_41C390	proc near		; DATA XREF: sub_41C390+2o
		mov	eax, offset dword_4410E0
		jmp	sub_4367C8
SEH_41C390	endp

; ---------------------------------------------------------------------------
		db 16h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-10Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0DCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0ACh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-94h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0C4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-7Ch]
		jmp	sub_4014B0
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-110h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-110h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-110h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-110h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-110h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-0F4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-110h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_43AF0D:				; DATA XREF: ___:0041C612o
		mov	eax, offset dword_441138
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 59h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 15h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2Ah
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Fh
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_41D540	proc near		; DATA XREF: sub_41D540+2o
		mov	eax, offset dword_441240
		jmp	sub_4367C8
SEH_41D540	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 15h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 2Ah
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Fh
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_41D5D0	proc near		; DATA XREF: sub_41D5D0+2o
		mov	eax, offset dword_441288
		jmp	sub_4367C8
SEH_41D5D0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_402031
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 11h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 26h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Bh
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 50h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 65h
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_41D670	proc near		; DATA XREF: sub_41D670+2o
		mov	eax, offset dword_4412D0
		jmp	sub_4367C8
SEH_41D670	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_402031
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 11h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 26h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Bh
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 50h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 65h
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_41D760	proc near		; DATA XREF: sub_41D760+2o
		mov	eax, offset dword_441328
		jmp	sub_4367C8
SEH_41D760	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1158h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1158h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1140h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1158h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1158h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43B0F2:				; DATA XREF: ___:0041D838o
		mov	eax, offset dword_441380
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 14h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_41E140	proc near		; DATA XREF: sub_41E140+2o
		mov	eax, offset dword_4413D8
		jmp	sub_4367C8
SEH_41E140	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_41E400	proc near		; DATA XREF: sub_41E400+2o
		mov	eax, offset dword_441418
		jmp	sub_4367C8
SEH_41E400	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-48h]
		jmp	sub_401816
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-48h]
		jmp	sub_401253
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43B1E0:				; DATA XREF: ___:0041E668o
		mov	eax, offset dword_441468
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 26h dup(0CCh)
; ---------------------------------------------------------------------------


loc_43B210:				; DATA XREF: ___:0041EDB5o
		mov	eax, offset dword_4414F8
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-1974h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-195Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1944h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-198Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-18FCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-18B4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-192Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-18CCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-1914h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-18E4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43B28E:				; DATA XREF: ___:0041EF38o
		mov	eax, offset dword_441558
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 28h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-7Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-64h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43B2D0:				; DATA XREF: ___:0041F862o
		mov	eax, offset dword_4415D8
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-424h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-43Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		dw 8D8Dh
		dd 0FFFFFBB4h, 4183E990h
		db 0C5h, 75h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4200F0	proc near		; DATA XREF: sub_4200F0+2o
		mov	eax, offset dword_441610
		jmp	sub_4367C8
SEH_4200F0	endp

; ---------------------------------------------------------------------------
		db 14h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-112Ch]
		jmp	sub_401A6E

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_420530	proc near		; DATA XREF: sub_420530+8o
		mov	eax, offset dword_441650
		jmp	sub_4367C8
SEH_420530	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-4FCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-434h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4207E0	proc near		; DATA XREF: sub_4207E0+2o
		mov	eax, offset dword_441680
		jmp	sub_4367C8
SEH_4207E0	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-84h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_420E10	proc near		; DATA XREF: sub_420E10+8o
		mov	eax, offset dword_4416B8
		jmp	sub_4367C8
SEH_420E10	endp

; ---------------------------------------------------------------------------
		db 33h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	eax, [ebp+4]
		push	eax
		mov	ecx, [ebp-10h]
		push	ecx
		call	j_nullsub_10
		add	esp, 8
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_422650	proc near		; DATA XREF: sub_422650+2o
		mov	eax, offset dword_4417A0
		jmp	sub_4367C8
SEH_422650	endp

; ---------------------------------------------------------------------------
		db 15h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	eax, [ebp+4]
		push	eax
		mov	ecx, [ebp-10h]
		push	ecx
		call	j_nullsub_10
		add	esp, 8
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4226E0	proc near		; DATA XREF: sub_4226E0+2o
		mov	eax, offset dword_4417D0
		jmp	sub_4367C8
SEH_4226E0	endp

; ---------------------------------------------------------------------------
		db 15h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4227F0	proc near		; DATA XREF: sub_4227F0+2o
		mov	eax, offset dword_441800
		jmp	sub_4367C8
SEH_4227F0	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-788h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-788h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-624h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-788h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-788h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-788h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-788h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-788h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-788h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-788h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-788h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43B579:				; DATA XREF: ___:00422A48o
		mov	eax, offset dword_441850
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 2Dh dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_425980	proc near		; DATA XREF: sub_425980+2o
		mov	eax, offset dword_4418D8
		jmp	sub_4367C8
SEH_425980	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [ebp-40h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-40h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-40h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-40h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43B6A4:				; DATA XREF: ___:00425BD2o
		mov	eax, offset dword_441928
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 32h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_4014C4

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_426450	proc near		; DATA XREF: sub_426450+2o
		mov	eax, offset dword_441A08
		jmp	sub_4367C8
SEH_426450	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_402031
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 11h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 26h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Bh
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 64h
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4264C0	proc near		; DATA XREF: sub_4264C0+2o
		mov	eax, offset dword_441A38
		jmp	sub_4367C8
SEH_4264C0	endp

; ---------------------------------------------------------------------------
		db 12h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_402031
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 11h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 26h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 3Bh
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 64h
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_426560	proc near		; DATA XREF: sub_426560+2o
		mov	eax, offset dword_441A88
		jmp	sub_4367C8
SEH_426560	endp

; ---------------------------------------------------------------------------
		db 12h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43B7A8:				; DATA XREF: ___:004266A2o
		mov	eax, offset dword_441AD8
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_4014C4

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4269A0	proc near		; DATA XREF: sub_4269A0+2o
		mov	eax, offset dword_441B08
		jmp	sub_4367C8
SEH_4269A0	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43B7E8:				; DATA XREF: ___:00426A62o
		mov	eax, offset dword_441B38
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_4014C4

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_426EB0	proc near		; DATA XREF: sub_426EB0+2o
		mov	eax, offset dword_441B68
		jmp	sub_4367C8
SEH_426EB0	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43B828:				; DATA XREF: ___:00426F72o
		mov	eax, offset dword_441B98
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_4014C4

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_427590	proc near		; DATA XREF: sub_427590+2o
		mov	eax, offset dword_441BC8
		jmp	sub_4367C8
SEH_427590	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43B868:				; DATA XREF: ___:00427652o
		mov	eax, offset dword_441BF8
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_40179E

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_427DC0	proc near		; DATA XREF: sub_427DC0+2o
		mov	eax, offset dword_441C28
		jmp	sub_4367C8
SEH_427DC0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_402031
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 11h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 26h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 43h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 58h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 6Dh
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_427E30	proc near		; DATA XREF: sub_427E30+2o
		mov	eax, offset dword_441C58
		jmp	sub_4367C8
SEH_427E30	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_402031
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 11h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 26h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 43h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 58h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 6Dh
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_427EF0	proc near		; DATA XREF: sub_427EF0+2o
		mov	eax, offset dword_441CB0
		jmp	sub_4367C8
SEH_427EF0	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		jmp	sub_40179E
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-28h]
		add	ecx, 0A1h
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_428160	proc near		; DATA XREF: sub_428160+2o
		mov	eax, offset dword_441D08
		jmp	sub_4367C8
SEH_428160	endp

; ---------------------------------------------------------------------------
		db 18h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-53ECh]
		jmp	sub_4014B0
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5490h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5474h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5274h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-528Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-525Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-537Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5334h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-522Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5304h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5244h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-52D4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-545Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5444h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-541Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5404h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-52A4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-5364h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-534Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-531Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-52ECh]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-52BCh]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43BA92:				; DATA XREF: ___:004282C8o
		mov	eax, offset dword_441D48
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 44h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		jmp	sub_40179E

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4299C0	proc near		; DATA XREF: sub_4299C0+2o
		mov	eax, offset dword_441E30
		jmp	sub_4367C8
SEH_4299C0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [ebp-10h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_429AA0	proc near		; DATA XREF: sub_429AA0+2o
		mov	eax, offset dword_441E60
		jmp	sub_4367C8
SEH_429AA0	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_40179E

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_429D00	proc near		; DATA XREF: sub_429D00+2o
		mov	eax, offset dword_441E90
		jmp	sub_4367C8
SEH_429D00	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_40179E

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_42A090	proc near		; DATA XREF: sub_42A090+2o
		mov	eax, offset dword_441EC0
		jmp	sub_4367C8
SEH_42A090	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [ebp-30h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_43BB6B:				; DATA XREF: ___:0042A158o
		mov	eax, offset dword_441EF0
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_42AEC0	proc near		; DATA XREF: sub_42AEC0+5o
		mov	eax, offset dword_441F20
		jmp	sub_4367C8
SEH_42AEC0	endp

; ---------------------------------------------------------------------------
		align 10h


loc_43BB90:				; DATA XREF: ___:0042AFD5o
		mov	eax, offset dword_441F80
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp+20h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+8]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp-1A0h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_42B060	proc near		; DATA XREF: sub_42B060+2o
		mov	eax, offset dword_441FE0
		jmp	sub_4367C8
SEH_42B060	endp

; ---------------------------------------------------------------------------
		db 18h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-10h]
		add	ecx, 8
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_42B240	proc near		; DATA XREF: sub_42B240+2o
		mov	eax, offset dword_442020
		jmp	sub_4367C8
SEH_42B240	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_40179E
; ---------------------------------------------------------------------------


loc_43BC08:				; DATA XREF: ___:0042B2E2o
		mov	eax, offset dword_442050
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_40179E

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_42B480	proc near		; DATA XREF: sub_42B480+2o
		mov	eax, offset dword_442080
		jmp	sub_4367C8
SEH_42B480	endp

; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_40179E
; ---------------------------------------------------------------------------
		mov	eax, offset dword_4420B0
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		mov	eax, [ebp-30h]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_43BC6B:				; DATA XREF: ___:0042B888o
		mov	eax, offset dword_4420E0
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_42BB70	proc near		; DATA XREF: sub_42BB70+2o
		mov	eax, offset dword_442110
		jmp	sub_4367C8
SEH_42BB70	endp

; ---------------------------------------------------------------------------
		db 16h dup(0CCh)
; ---------------------------------------------------------------------------
		mov	eax, [ebp+4]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp+4]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp+4]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	eax, [ebp+4]
		push	eax
		call	sub_4367E2
; ---------------------------------------------------------------------------
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-54h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-6Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-74h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		mov	ecx, [ebp-70h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43BD84:				; DATA XREF: ___:0042BE68o
		mov	eax, offset dword_442168
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 32h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4347B0	proc near		; DATA XREF: sub_4347B0+2o
		mov	eax, offset dword_442250
		jmp	sub_4367C8
SEH_4347B0	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-168Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-16A4h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43BDF6:				; DATA XREF: ___:004348A8o
		mov	eax, offset dword_442288
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4351E0	proc near		; DATA XREF: sub_4351E0+2o
		mov	eax, offset dword_4422C0
		jmp	sub_4367C8
SEH_4351E0	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-3Ch]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-24h]
		jmp	sub_401226

; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn


SEH_4355E0	proc near		; DATA XREF: sub_4355E0+2o
		mov	eax, offset dword_4422F0
		jmp	sub_4367C8
SEH_4355E0	endp

; ---------------------------------------------------------------------------
		align 10h
		lea	ecx, [ebp-128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------
		lea	ecx, [ebp-128h]
		jmp	sub_401226
; ---------------------------------------------------------------------------


loc_43BEBE:				; DATA XREF: ___:004356F8o
		mov	eax, offset dword_442328
		jmp	sub_4367C8
; ---------------------------------------------------------------------------
		db '面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面'
		db '面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面'
		db '面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面'
		db '面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面面'
		db '面面面面面面面面面面面面面面面面面面面面面面面面面面',0
		align 4
		dd 7FFh	dup(0)
dword_43E000	dd 0		dword_43E004	dd 0		dword_43E008	dd 0		dword_43E00C	dd 0		dword_43E010	dd 0							; sub_409B40+Bo ...
dword_43E014	dd 3 dup(0)						; sub_40AE10+1Co
dword_43E020	dd 0							; sub_40B170+1Eo
flt_43E024	dd 0.0			; DATA XREF: ___:0040B7C6r
dword_43E028	dd 3 dup(0)						; sub_40FDA0+1Do
dword_43E034	dd 0							; sub_40FDA0+23o
dword_43E038	dd 3 dup(0)						; sub_411910+1Do
dword_43E044	dd 3 dup(0)						; sub_413220+1Fo
dword_43E050	dd 3 dup(0)						; sub_417DF0+8o
dword_43E05C	dd 3 dup(0)						; sub_417E20+8o
dword_43E068	dd 3 dup(0)	dword_43E074	dd 0							; sub_4190B0+36o
dword_43E078	dd 0		dword_43E07C	dd 0		dword_43E080	dd 0		dword_43E084	dd 0		dword_43E088	dd 0		dword_43E08C	dd 0		dword_43E090	dd 0		dword_43E094	dd 0		dword_43E098	dd 0		dword_43E09C	dd 0		dword_43E0A0	dd 0		dword_43E0A4	dd 0		dword_43E0A8	dd 0		dword_43E0AC	dd 0		dbl_43E0B0	dq 0.0			; DATA XREF: sub_4198C0+22r
		dd 0
dword_43E0BC	dd 0							; sub_41A110+6o
dword_43E0C0	dd 0		dword_43E0C4	dd 3 dup(0)						; ___:0041B48Do
dword_43E0D0	dd 3 dup(0)						; sub_41D760+1Do
dword_43E0DC	dd 4 dup(0)	dword_43E0EC	dd 4 dup(0)						; sub_426560+1Do
dword_43E0FC	dd 4 dup(0)	dword_43E10C	dd 4 dup(0)	dword_43E11C	dd 4 dup(0)	dword_43E12C	dd 4 dup(0)	dword_43E13C	dd 4 dup(0)						; sub_427EF0+1Do
dword_43E14C	dd 4 dup(0)						; sub_428250+10o
dword_43E15C	dd 4 dup(0)						; sub_429A60+9o
dword_43E16C	dd 4 dup(0)	dword_43E17C	dd 4 dup(0)	dword_43E18C	dd 0		dword_43E190	dd 3 dup(0)	dword_43E19C	dd 0		dword_43E1A0	dd 4 dup(0)	dword_43E1B0	dd 0B0h	dup(0)	dword_43E470	dd 14h dup(0)	dword_43E4C0	dd 90h dup(0)	dword_43E700	dd 0Ch dup(0)	dword_43E730	dd 0Eh dup(0)	dword_43E768	dd 0Eh dup(0)	dword_43E7A0	dd 0Ch dup(0)	dword_43E7D0	dd 18h dup(0)	dword_43E830	dd 18h dup(0)	dword_43E890	dd 2Eh dup(0)	dword_43E948	dd 22h dup(0)	dword_43E9D0	dd 76h dup(0)	dword_43EBA8	dd 0Eh dup(0)	dword_43EBE0	dd 0Eh dup(0)	dword_43EC18	dd 10h dup(0)	dword_43EC58	dd 0Ch dup(0)	dword_43EC88	dd 0Ch dup(0)	dword_43ECB8	dd 0Eh dup(0)	dword_43ECF0	dd 0E4h	dup(0)	dword_43F080	dd 6 dup(0)						; ___:0040A997o
dword_43F098	dd 0Ch dup(0)	dword_43F0C8	dd 0Ch dup(0)	dword_43F0F8	dd 10h dup(0)	dword_43F138	dd 0Ch dup(0)	dword_43F168	dd 18h dup(0)	dword_43F1C8	dd 18h dup(0)	dword_43F228	dd 12h dup(0)	dword_43F270	dd 12h dup(0)	dword_43F2B8	dd 10h dup(0)	dword_43F2F8	dd 10h dup(0)	dword_43F338	dd 0Ch dup(0)	dword_43F368	dd 12h dup(0)	dword_43F3B0	dd 0Ch dup(0)	dword_43F3E0	dd 12h dup(0)	dword_43F428	dd 0Ch dup(0)	dword_43F458	dd 14h dup(0)	dword_43F4A8	dd 0Eh dup(0)	dword_43F4E0	dd 0Eh dup(0)	dword_43F518	dd 12h dup(0)	dword_43F560	dd 1Ch dup(0)	dword_43F5D0	dd 26h dup(0)	dword_43F668	dd 16h dup(0)	dword_43F6C0	dd 16h dup(0)	dword_43F718	dd 10h dup(0)	dword_43F758	dd 0Ch dup(0)	dword_43F788	dd 18h dup(0)	dword_43F7E8	dd 58h dup(0)	dword_43F948	dd 2Eh dup(0)	dword_43FA00	dd 84h dup(0)	dword_43FC10	dd 0Ch dup(0)	dword_43FC40	dd 0Ch dup(0)	dword_43FC70	dd 16h dup(0)	dword_43FCC8	dd 16h dup(0)	dword_43FD20	dd 20h dup(0)	dword_43FDA0	dd 28h dup(0)	dword_43FE40	dd 0Eh dup(0)	dword_43FE78	dd 0Eh dup(0)	dword_43FEB0	dd 0Ch dup(0)	dword_43FEE0	dd 18h dup(0)	dword_43FF40	dd 12h dup(0)	dword_43FF88	dd 12h dup(0)	dword_43FFD0	dd 0Eh dup(0)	dword_440008	dd 0Ch dup(0)	dword_440038	dd 0Ch dup(0)	dword_440068	dd 0Eh dup(0)	dword_4400A0	dd 10h dup(0)	dword_4400E0	dd 10h dup(0)	dword_440120	dd 0Ch dup(0)	dword_440150	dd 12h dup(0)	dword_440198	dd 16h dup(0)	dword_4401F0	dd 10h dup(0)	dword_440230	dd 12h dup(0)	dword_440278	dd 14h dup(0)	dword_4402C8	dd 12h dup(0)	dword_440310	dd 10h dup(0)	dword_440350	dd 0Ch dup(0)	dword_440380	dd 0Eh dup(0)	dword_4403B8	dd 0Eh dup(0)	dword_4403F0	dd 10h dup(0)	dword_440430	dd 0Ch dup(0)	dword_440460	dd 0Ch dup(0)	dword_440490	dd 12h dup(0)	dword_4404D8	dd 18h dup(0)	dword_440538	dd 44h dup(0)	dword_440648	dd 44h dup(0)	dword_440758	dd 0Ch dup(0)	dword_440788	dd 90h dup(0)	dword_4409C8	dd 12h dup(0)	dword_440A10	dd 16h dup(0)	dword_440A68	dd 12h dup(0)	dword_440AB0	dd 14h dup(0)	dword_440B00	dd 14h dup(0)	dword_440B50	dd 0Ch dup(0)	dword_440B80	dd 0Ch dup(0)	dword_440BB0	dd 0Ch dup(0)	dword_440BE0	dd 0Eh dup(0)	dword_440C18	dd 12h dup(0)	dword_440C60	dd 12h dup(0)	dword_440CA8	dd 16h dup(0)	dword_440D00	dd 12h dup(0)	dword_440D48	dd 14h dup(0)	dword_440D98	dd 14h dup(0)	dword_440DE8	dd 0Ch dup(0)	dword_440E18	dd 0Ch dup(0)	dword_440E48	dd 0Ch dup(0)	dword_440E78	dd 0Eh dup(0)	dword_440EB0	dd 12h dup(0)	dword_440EF8	dd 0Ch dup(0)	dword_440F28	dd 0Eh dup(0)	dword_440F60	dd 0Ch dup(0)	dword_440F90	dd 0Ch dup(0)	dword_440FC0	dd 0Eh dup(0)	dword_440FF8	dd 0Ch dup(0)	dword_441028	dd 10h dup(0)	dword_441068	dd 0Ch dup(0)	dword_441098	dd 12h dup(0)	dword_4410E0	dd 16h dup(0)	dword_441138	dd 42h dup(0)	dword_441240	dd 12h dup(0)	dword_441288	dd 12h dup(0)	dword_4412D0	dd 16h dup(0)	dword_441328	dd 16h dup(0)	dword_441380	dd 16h dup(0)	dword_4413D8	dd 10h dup(0)	dword_441418	dd 14h dup(0)	dword_441468	dd 24h dup(0)	dword_4414F8	dd 18h dup(0)	dword_441558	dd 20h dup(0)	dword_4415D8	dd 0Eh dup(0)	dword_441610	dd 10h dup(0)	dword_441650	dd 0Ch dup(0)	dword_441680	dd 0Eh dup(0)	dword_4416B8	dd 3Ah dup(0)	dword_4417A0	dd 0Ch dup(0)	dword_4417D0	dd 0Ch dup(0)	dword_441800	dd 14h dup(0)	dword_441850	dd 22h dup(0)	dword_4418D8	dd 14h dup(0)	dword_441928	dd 38h dup(0)	dword_441A08	dd 0Ch dup(0)	dword_441A38	dd 14h dup(0)	dword_441A88	dd 14h dup(0)	dword_441AD8	dd 0Ch dup(0)	dword_441B08	dd 0Ch dup(0)	dword_441B38	dd 0Ch dup(0)	dword_441B68	dd 0Ch dup(0)	dword_441B98	dd 0Ch dup(0)	dword_441BC8	dd 0Ch dup(0)	dword_441BF8	dd 0Ch dup(0)	dword_441C28	dd 0Ch dup(0)	dword_441C58	dd 16h dup(0)	dword_441CB0	dd 16h dup(0)	dword_441D08	dd 10h dup(0)	dword_441D48	dd 3Ah dup(0)	dword_441E30	dd 0Ch dup(0)	dword_441E60	dd 0Ch dup(0)	dword_441E90	dd 0Ch dup(0)	dword_441EC0	dd 0Ch dup(0)	dword_441EF0	dd 0Ch dup(0)	dword_441F20	dd 18h dup(0)	dword_441F80	dd 18h dup(0)	dword_441FE0	dd 10h dup(0)	dword_442020	dd 0Ch dup(0)	dword_442050	dd 0Ch dup(0)	dword_442080	dd 0Ch dup(0)	dword_4420B0	dd 0Ch dup(0)	dword_4420E0	dd 0Ch dup(0)	dword_442110	dd 16h dup(0)	dword_442168	dd 3Ah dup(0)	dword_442250	dd 0Eh dup(0)	dword_442288	dd 0Eh dup(0)	dword_4422C0	dd 0Ch dup(0)	dword_4422F0	dd 0Eh dup(0)	dword_442328	dd 47Eh	dup(0)	dword_443520	dd 33h dup(0)	dword_4435EC	dd 0							; ___:loc_41083Eo ...
dword_4435F0	dd 0							; ___:00405761o ...
dword_4435F4	dd 3 dup(0)						; ___:004057CEo ...
dword_443600	dd 0							; sub_404640+1EDo ...
dword_443604	dd 20h dup(0)						; ___:loc_410949o ...
dword_443684	dd 2 dup(0)						; sub_40CF60+DEo ...
dword_44368C	dd 7 dup(0)	dword_4436A8	dd 0		dword_4436AC	dd 4 dup(0)	dword_4436BC	dd 6 dup(0)	dword_4436D4	dd 3 dup(0)	dword_4436E0	dd 5 dup(0)	dword_4436F4	dd 2 dup(0)						; sub_41C030+Eo
dword_4436FC	dd 4 dup(0)						; ___:00405621o ...
dword_44370C	dd 5 dup(0)	dword_443720	dd 1Eh dup(0)	dword_443798	dd 3 dup(0)	dword_4437A4	dd 0		dword_4437A8	dd 2 dup(0)	dword_4437B0	dd 0		dword_4437B4	dd 2 dup(0)	dword_4437BC	dd 0		dword_4437C0	dd 0		dword_4437C4	dd 0		dword_4437C8	dd 0		dword_4437CC	dd 2 dup(0)						; ___:00406E35o
dword_4437D4	dd 3 dup(0)						; sub_40EC30+88o
dword_4437E0	dd 3 dup(0)	dword_4437EC	dd 2 dup(0)	dword_4437F4	dd 0							; ___:004086ECo ...
dword_4437F8	dd 0							; ___:0041072Co ...
dword_4437FC	dd 3 dup(0)	dword_443808	dd 5 dup(0)	dword_44381C	dd 3 dup(0)	dword_443828	dd 0Ah dup(0)	dword_443850	dd 3 dup(0)	dword_44385C	dd 2 dup(0)	dword_443864	dd 2 dup(0)	dword_44386C	dd 4 dup(0)	dword_44387C	dd 2 dup(0)	dword_443884	dd 0		dword_443888	dd 2 dup(0)	dword_443890	dd 2 dup(0)	dword_443898	dd 22h dup(0)						; sub_407790+2BAo
dword_443920	dd 9 dup(0)						; ___:0040A971o
dword_443944	dd 2 dup(0)						; sub_40B700+43o ...
dword_44394C	dd 0		dword_443950	dd 2 dup(0)	dword_443958	dd 7 dup(0)	dword_443974	dd 3 dup(0)	dword_443980	dd 7 dup(0)	dword_44399C	dd 2 dup(0)	dword_4439A4	dd 6 dup(0)	dword_4439BC	dd 0Dh dup(0)	dword_4439F0	dd 8 dup(0)	dword_443A10	dd 4 dup(0)	dword_443A20	dd 7 dup(0)	dword_443A3C	dd 8 dup(0)	dword_443A5C	dd 7 dup(0)	dword_443A78	dd 8 dup(0)	dword_443A98	dd 8 dup(0)	dword_443AB8	dd 0Ah dup(0)	dword_443AE0	dd 5 dup(0)	dword_443AF4	dd 0							; sub_4200F0+100o
dword_443AF8	dd 4 dup(0)	dword_443B08	dd 2 dup(0)	dword_443B10	dd 8 dup(0)	dword_443B30	dd 4 dup(0)	dword_443B40	dd 5 dup(0)	dword_443B54	dd 8 dup(0)	dword_443B74	dd 7 dup(0)	dword_443B90	dd 4 dup(0)	dword_443BA0	dd 7 dup(0)	dword_443BBC	dd 0Ch dup(0)	dword_443BEC	dd 3 dup(0)	dword_443BF8	dd 5 dup(0)						; sub_40EF90+Ao ...
dword_443C0C	dd 5 dup(0)	dword_443C20	dd 9 dup(0)	dword_443C44	dd 5 dup(0)	dword_443C58	dd 7 dup(0)	dword_443C74	dd 0							; ___:00411078o ...
dword_443C78	dd 0							; ___:00410C75o ...
dword_443C7C	dd 0							; ___:loc_410BB7o
dword_443C80	dd 0							; ___:loc_410B96o
dword_443C84	dd 0							; ___:loc_410BD8o ...
dword_443C88	dd 4 dup(0)						; ___:00410692o ...
dword_443C98	dd 7 dup(0)	dword_443CB4	dd 4 dup(0)						; sub_4126B0+91o ...
dword_443CC4	dd 4 dup(0)	dword_443CD4	dd 2 dup(0)						; sub_42D1A0+71o
dword_443CDC	dd 4 dup(0)						; sub_412970+8Fo
dword_443CEC	dd 3 dup(0)	dword_443CF8	dd 3 dup(0)	dword_443D04	dd 0							; sub_4126B0+E5o
dword_443D08	dd 2 dup(0)	dword_443D10	dd 2 dup(0)	dword_443D18	dd 2 dup(0)	dword_443D20	dd 0		dword_443D24	dd 0		dword_443D28	dd 0		dword_443D2C	dd 0		dword_443D30	dd 0		dword_443D34	dd 2 dup(0)	dword_443D3C	dd 2 dup(0)	dword_443D44	dd 2 dup(0)	dword_443D4C	dd 2 dup(0)						; ___:00419557o
dword_443D54	dd 3 dup(0)	dword_443D60	dd 4 dup(0)	dword_443D70	dd 0							; ___:0042B302o ...
dword_443D74	dd 3 dup(0)						; ___:004193EEo
dword_443D80	dd 0		dword_443D84	dd 0		dword_443D88	dd 0Ah dup(0)	dword_443DB0	dd 2 dup(0)	dword_443DB8	dd 2 dup(0)	byte_443DC0	db 0			; DATA XREF: sub_41A290r
		align 4
dword_443DC4	dd 0							; ___:0041B235o ...
dword_443DC8	dd 13h dup(0)	dword_443E14	dd 5 dup(0)	dword_443E28	dd 5 dup(0)	dword_443E3C	dd 0Eh dup(0)	dword_443E74	dd 2 dup(0)						; ___:0041F945o
dword_443E7C	dd 0		dword_443E80	dd 0							; sub_424840+327o
dword_443E84	dd 0		dword_443E88	dd 0		dword_443E8C	dd 0		dword_443E90	dd 0		dword_443E94	dd 0		dword_443E98	dd 0		dword_443E9C	dd 0							; ___:0041C287r
word_443EA0	dw 0			; DATA XREF: ___:0041C121r
					; ___:0041C291r
		align 4
dword_443EA4	dd 0							; ___:0041C256r
dword_443EA8	dd 0							; ___:0041C25Br
dword_443EAC	dd 0							; ___:0041C27Fr
		dd 0
dword_443EB4	dd 5 dup(0)	dword_443EC8	dd 3 dup(0)	dword_443ED4	dd 5 dup(0)	dword_443EE8	dd 2 dup(0)	dword_443EF0	dd 4 dup(0)	dword_443F00	dd 0							; ___:0041FC87o
dword_443F04	dd 4 dup(0)	dword_443F14	dd 19h dup(0)	dword_443F78	dd 5 dup(0)	dword_443F8C	dd 4 dup(0)	dword_443F9C	dd 4 dup(0)	dword_443FAC	dd 4 dup(0)	dword_443FBC	dd 5 dup(0)	dword_443FD0	dd 4 dup(0)	dword_443FE0	dd 3 dup(0)	dword_443FEC	dd 4 dup(0)	dword_443FFC	dd 3 dup(0)	dword_444008	dd 2 dup(0)	dword_444010	dd 3 dup(0)	dword_44401C	dd 2 dup(0)	dword_444024	dd 7 dup(0)	dword_444040	dd 2 dup(0)						; ___:0041F5D9o
dword_444048	dd 2 dup(0)						; ___:0041F5A7o
dword_444050	dd 0Fh dup(0)	dword_44408C	dd 0		dword_444090	dd 2 dup(0)						; ___:0041F44Ao
dword_444098	dd 0							; ___:0041F26Ao ...
dword_44409C	dd 2 dup(0)						; ___:0041F1CBo ...
dword_4440A4	dd 2 dup(0)						; ___:0041F199o
dword_4440AC	dd 2 dup(0)						; ___:0041F167o
dword_4440B4	dd 2 dup(0)						; ___:0041F135o
dword_4440BC	dd 7 dup(0)	dword_4440D8	dd 9 dup(0)	dword_4440FC	dd 2 dup(0)	dword_444104	dd 0							; sub_420530+C4r
dword_444108	dd 0				align 10h
dword_444110	dd 3 dup(0)						; sub_4207E0+316o
dword_44411C	dd 0Bh dup(0)						; sub_4207E0+2BEo
dword_444148	dd 5 dup(0)	dword_44415C	dd 7 dup(0)	dword_444178	dd 6 dup(0)	dword_444190	dd 4 dup(0)	dword_4441A0	dd 3 dup(0)						; sub_420530+34o
dword_4441AC	dd 3 dup(0)	dword_4441B8	dd 5 dup(0)	dword_4441CC	dd 9 dup(0)	dword_4441F0	dd 2 dup(0)	dword_4441F8	dd 3 dup(0)	dword_444204	dd 3 dup(0)	dword_444210	dd 2 dup(0)	dword_444218	dd 3 dup(0)	dword_444224	dd 3 dup(0)	dword_444230	dd 3 dup(0)	dword_44423C	dd 3 dup(0)	dword_444248	dd 3 dup(0)	dword_444254	dd 2 dup(0)	dword_44425C	dd 4 dup(0)	dword_44426C	dd 3 dup(0)	dword_444278	dd 2 dup(0)	dword_444280	dd 3 dup(0)	dword_44428C	dd 3 dup(0)	dword_444298	dd 5 dup(0)	dword_4442AC	dd 2 dup(0)	dword_4442B4	dd 3 dup(0)	dword_4442C0	dd 3 dup(0)	dword_4442CC	dd 2 dup(0)	dword_4442D4	dd 2 dup(0)	dword_4442DC	dd 2 dup(0)	dword_4442E4	dd 5 dup(0)	dword_4442F8	dd 4 dup(0)	dword_444308	dd 3 dup(0)	dword_444314	dd 0		dword_444318	dd 2 dup(0)	dword_444320	dd 3 dup(0)	dword_44432C	dd 0		dword_444330	dd 3 dup(0)	dword_44433C	dd 6 dup(0)	dword_444354	dd 4 dup(0)	dword_444364	dd 3 dup(0)	dword_444370	dd 0Ah dup(0)	dword_444398	dd 4 dup(0)	dword_4443A8	dd 3 dup(0)	dword_4443B4	dd 2 dup(0)	dword_4443BC	dd 3 dup(0)	dword_4443C8	dd 3 dup(0)	dword_4443D4	dd 2 dup(0)	dword_4443DC	dd 3 dup(0)	dword_4443E8	dd 3 dup(0)	dword_4443F4	dd 3 dup(0)						; sub_4207E0:loc_420A6Bo
dword_444400	dd 0							; sub_420E10+F9o ...
dword_444404	dd 0							; sub_420E10:loc_42107Eo ...
dword_444408	dd 2 dup(0)						; sub_420E10+257o ...
dword_444410	dd 0Ah dup(0)	dword_444438	dd 0							; ___:00422D50o ...
dword_44443C	dd 0		dword_444440	dd 0							; sub_4235F0+3Ar ...
		dd 29h dup(0)
dword_4444E8	dd 14h dup(0)	dword_444538	dd 4 dup(0)	dword_444548	dd 2 dup(0)	dword_444550	dd 7 dup(0)	dword_44456C	dd 0		dword_444570	dd 0							; ___:004231E3o ...
dword_444574	dd 0							; ___:00423225o
dword_444578	dd 6 dup(0)	dword_444590	dd 4 dup(0)	dword_4445A0	dd 3 dup(0)	dword_4445AC	dd 4 dup(0)	dword_4445BC	dd 9 dup(0)	dword_4445E0	dd 6 dup(0)	dword_4445F8	dd 8 dup(0)	dword_444618	dd 0Ah dup(0)	dword_444640	dd 6 dup(0)	dword_444658	dd 5 dup(0)	dword_44466C	dd 5 dup(0)	dword_444680	dd 8 dup(0)	dword_4446A0	dd 4 dup(0)	dword_4446B0	dd 0Ch dup(0)	dword_4446E0	dd 6 dup(0)	dword_4446F8	dd 0Ah dup(0)	dword_444720	dd 10h dup(0)	dword_444760	dd 12h dup(0)	dword_4447A8	dd 10h dup(0)	dword_4447E8	dd 0Fh dup(0)	dword_444824	dd 3 dup(0)	dword_444830	dd 2 dup(0)	dword_444838	dd 0		dword_44483C	dd 2 dup(0)	dword_444844	dd 22h dup(0)	dword_4448CC	dd 0Ch dup(0)	dword_4448FC	dd 0		dword_444900	dd 0				align 8
dword_444908	dd 5Ah dup(0)	dword_444A70	dd 49h dup(0)	dword_444B94	dd 0		dword_444B98	dd 0		dword_444B9C	dd 3 dup(0)	dword_444BA8	dd 0		dword_444BAC	dd 0		dword_444BB0	dd 2 dup(0)	dword_444BB8	dd 3 dup(0)	dword_444BC4	dd 29h dup(0)	dword_444C68	dd 3 dup(0)			db 2 dup(0)
word_444C76	dw 0			; DATA XREF: sub_4254E0+D3w
		db 3 dup(0)
byte_444C7B	db 0			; DATA XREF: sub_4254E0+DAw
		align 10h
dword_444C80	dd 3 dup(0)			db 0
byte_444C8D	db 0			; DATA XREF: sub_4254E0+AEw
		align 10h
		db 0
byte_444C91	db 0			; DATA XREF: sub_4254E0+B4w
		align 8
dword_444C98	dd 19h dup(0)	dword_444CFC	dd 0				dd 3 dup(0)
dword_444D0C	dd 0		byte_444D10	db 0			; DATA XREF: sub_425270+A2r
dword_444D11	dd 0		dword_444D15	dd 0							; sub_425270+D2r
dword_444D19	dd 0		dword_444D1D	dd 0							; sub_425270+E7r
byte_444D21	db 3 dup(0)		; DATA XREF: sub_425270+110o
		dd 0
		db 3 dup(0)
dword_444D2B	dd 0				align 10h
		dd 17h dup(0)
dword_444D8C	dd 2 dup(0)	dword_444D94	dd 0Dh dup(0)	dword_444DC8	dd 0Bh dup(0)	dword_444DF4	dd 9 dup(0)	dword_444E18	dd 4 dup(0)	dword_444E28	dd 5 dup(0)	dword_444E3C	dd 5 dup(0)	dword_444E50	dd 3 dup(0)	dword_444E5C	dd 2 dup(0)	dword_444E64	dd 7 dup(0)	dword_444E80	dd 8 dup(0)	dword_444EA0	dd 7 dup(0)	dword_444EBC	dd 0		dword_444EC0	dd 7 dup(0)	dword_444EDC	dd 7 dup(0)	dword_444EF8	dd 0		dword_444EFC	dd 5 dup(0)	dword_444F10	dd 8 dup(0)	dword_444F30	dd 0		dword_444F34	dd 10h dup(0)	dword_444F74	dd 10h dup(0)	dword_444FB4	dd 2Ah dup(0)	dword_44505C	dd 26h dup(0)	dword_4450F4	dd 0Ch dup(0)	dword_445124	dd 6 dup(0)						; ___:00428E57o
dword_44513C	dd 8 dup(0)						; ___:00428E39o
dword_44515C	dd 4 dup(0)	dword_44516C	dd 3 dup(0)	dword_445178	dd 6 dup(0)	dword_445190	dd 5 dup(0)	dword_4451A4	dd 0Ah dup(0)	dword_4451CC	dd 0Bh dup(0)	dword_4451F8	dd 4 dup(0)						; ___:00428CB0o
dword_445208	dd 6 dup(0)	dword_445220	dd 0							; ___:004287ECo ...
dword_445224	dd 3 dup(0)	dword_445230	dd 3 dup(0)	dword_44523C	dd 3 dup(0)	dword_445248	dd 0		dword_44524C	dd 2 dup(0)	dword_445254	dd 0Ah dup(0)	dword_44527C	dd 0Ah dup(0)	dword_4452A4	dd 0Bh dup(0)	dword_4452D0	dd 2 dup(0)						; sub_42A090+22o
dword_4452D8	dd 8 dup(0)	dword_4452F8	dd 0Ch dup(0)	dword_445328	dd 2 dup(0)	dword_445330	dd 2 dup(0)	dword_445338	dd 10h dup(0)	dword_445378	dd 0Dh dup(0)	dword_4453AC	dd 11h dup(0)	dword_4453F0	dd 1Eh dup(0)	dword_445468	dd 0							; sub_42C810:loc_42C8CDo
dword_44546C	dd 8 dup(0)	dword_44548C	dd 2 dup(0)	dword_445494	dd 3 dup(0)	dword_4454A0	dd 5 dup(0)	dword_4454B4	dd 0		dword_4454B8	dd 7 dup(0)	dword_4454D4	dd 0		byte_4454D8	db 0			; DATA XREF: sub_42D2C0+EDr
		align 4
dword_4454DC	dd 0		byte_4454E0	db 0			; DATA XREF: sub_42D2C0+D3r
		align 4
dword_4454E4	dd 0		byte_4454E8	db 0			; DATA XREF: sub_42D2C0+B8r
		align 4
dword_4454EC	dd 0		byte_4454F0	db 0			; DATA XREF: sub_42D2C0+9Er
		align 4
dword_4454F4	dd 3 dup(0)						; ___:0042E6CAo
dword_445500	dd 1Ch dup(0)	dword_445570	dd 6 dup(0)	dword_445588	dd 2 dup(0)	dword_445590	dd 5 dup(0)	dword_4455A4	dd 1Dh dup(0)	dword_445618	dd 0Ch dup(0)	dword_445648	dd 0Ch dup(0)	dword_445678	dd 3 dup(0)	dword_445684	dd 2 dup(0)	dword_44568C	dd 2 dup(0)	dword_445694	dd 2 dup(0)	dword_44569C	dd 2 dup(0)	dword_4456A4	dd 2 dup(0)	dword_4456AC	dd 0		dword_4456B0	dd 5 dup(0)	dword_4456C4	dd 0Ah dup(0)	word_4456EC	dw 0			; DATA XREF: sub_42E400+1Fr
		align 10h
dword_4456F0	dd 2 dup(0)	dword_4456F8	dd 3 dup(0)	dword_445704	dd 3 dup(0)	dword_445710	dd 3 dup(0)	dword_44571C	dd 3 dup(0)	dword_445728	dd 3 dup(0)	dword_445734	dd 2 dup(0)	dword_44573C	dd 0							; sub_430460+1Fw ...
dword_445740	dd 8 dup(0)	dword_445760	dd 4 dup(0)	dword_445770	dd 460h	dup(0)	dword_4468F0	dd 3 dup(0)	dword_4468FC	dd 5 dup(0)	dword_446910	dd 7 dup(0)	dword_44692C	dd 3 dup(0)	dword_446938	dd 4 dup(0)	dword_446948	dd 49h dup(0)	dword_446A6C	dd 3 dup(0)	dword_446A78	dd 3 dup(0)	dword_446A84	dd 15h dup(0)	dword_446AD8	dd 6 dup(0)	dword_446AF0	dd 0Dh dup(0)	dword_446B24	dd 0Ah dup(0)	dword_446B4C	dd 3 dup(0)	dword_446B58	dd 0Dh dup(0)	dword_446B8C	dd 3 dup(0)	dword_446B98	dd 3 dup(0)	dword_446BA4	dd 3 dup(0)	dword_446BB0	dd 3 dup(0)	dword_446BBC	dd 3 dup(0)	dword_446BC8	dd 7 dup(0)						; ___:00436110o ...
dword_446BE4	dd 0DFh	dup(0)	byte_446F60	db 0			; DATA XREF: sub_4034E0+95o
					; sub_404640+200o ...
		align 4
dword_446F64	dd 0							; sub_4245F0+11o ...
dword_446F68	dd 0							; ___:0040D3DFr ...
		align 10h
dword_446F70	dd 0							; ___:0040D345w ...
		dd 8 dup(0)
dword_446F94	dd 41h dup(0)						; ___:0040D380o ...
dword_447098	dd 0							; ___:loc_40D3D4r ...
dword_44709C	dd 0							; ___:0040D34Fr ...
dword_4470A0	dd 0							; sub_40D580+CAw
dword_4470A4	dd 0							; sub_40D580+E3r
		dd 11h dup(0)
dword_4470EC	dd 0							; ___:004103DDr
dword_4470F0	dd 0							; ___:00410475r ...
dword_4470F4	dd 0							; ___:004105B5r ...
dword_4470F8	dd 0							; ___:00410AD9r ...
dword_4470FC	dd 0							; ___:004106ABr
dword_447100	dd 0							; ___:00410788r
dword_447104	dd 0							; ___:004106DCr
dword_447108	dd 0							; ___:0041043Dr ...
dword_44710C	dd 0							; ___:00410271r
dword_447110	dd 0							; ___:004102ADr ...
dword_447114	dd 0							; ___:0041029Dr
dword_447118	dd 0							; ___:00410332r
dword_44711C	dd 0							; ___:00410DF3r
dword_447120	dd 0							; ___:00411180r ...
dword_447124	dd 0							; ___:004124BAr
dword_447128	dd 0							; ___:004105E3r
dword_44712C	dd 0							; ___:00410615r
dword_447130	dd 0							; ___:004111B2r
		dd 5 dup(0)
dword_447148	dd 10h dup(0)						; ___:0040405Fo ...
		db 2 dup(0)
byte_44718A	db 0			; DATA XREF: sub_409A30r sub_409AA0r
		align 4
		db 3 dup(0)
byte_44718F	db 0			; DATA XREF: sub_40D580+10Fr
		db 0
byte_447191	db 0			; DATA XREF: sub_40DB10r
word_447192	dw 0			; DATA XREF: sub_40DB10+9o
		dd 44h dup(0)
		db 3 dup(0)
byte_4472A7	db 0			; DATA XREF: ___:00412ECAo
					; ___:00412F7Fo ...
		db 3 dup(0)
byte_4472AB	db 0			; DATA XREF: ___:loc_41F89Dr
		align 10h
dword_4472B0	dd 12h dup(0)						; ___:00410074o
		db 0
byte_4472F9	db 3 dup(0)		; DATA XREF: ___:00408AEBo
					; ___:004100B9o ...
		dd 11h dup(0)
		db 2 dup(0)
word_447342	dw 0			; DATA XREF: ___:00408AC2o
					; ___:00410092o
		dd 6 dup(0)
word_44735C	dw 0			; DATA XREF: ___:00410141r
		align 10h
		dd 0Ah dup(0)
		db 3 dup(0)
byte_44738B	db 0			; DATA XREF: ___:00408B14o
					; ___:004100DCo ...
		dd 12h dup(0)
dword_4473D4	dd 12h dup(0)						; ___:00410057o ...
		db 0
byte_44741D	db 3 dup(0)		; DATA XREF: ___:00408A4Do
					; ___:00410030o ...
		dd 23h dup(0)
		db 3 dup(0)
byte_4474AF	db 0			; DATA XREF: ___:00408B3Do
					; ___:004100FAo
		dd 24h dup(0)
		db 0
byte_447541	db 3 dup(0)		; DATA XREF: ___:0042504Bo
					; ___:00425057o
		dd 11h dup(0)
		db 2 dup(0)
word_44758A	dw 0			; DATA XREF: ___:00412E9Ao
					; ___:00412EB9o ...
		dd 3Ch dup(0)
		db 3 dup(0)
dword_44767F	dd 0							; ___:0041F084r ...
		align 4
		dd 35h dup(0)
		db 0
byte_447759	db 0			; DATA XREF: sub_41B950+18r
		align 4
		dd 36h dup(0)
byte_447834	db 0			; DATA XREF: ___:004107A2r
		align 4
		dd 0Bh dup(0)
dword_447864	dd 18h dup(0)						; sub_40ED70+97o ...
		db 2 dup(0)
byte_4478C6	db 0			; DATA XREF: ___:00404EC8r
					; ___:0041DEA1r
		align 4
		dd 11h dup(0)
		db 3 dup(0)
byte_44790F	db 0			; DATA XREF: ___:loc_404EE0r
					; ___:loc_41DEB9r
		dd 0Bh dup(0)
		db 3 dup(0)
byte_44793F	db 0			; DATA XREF: ___:00404EE9o
					; ___:0041DEC2o ...
		dd 12h dup(0)
dword_447988	dd 2Bh dup(0)						; ___:0041F560o ...
dword_447A34	dd 0				dd 11h dup(0)
		db 0
dword_447A7D	dd 0				align 4
		dd 0D9h	dup(0)
byte_447DE8	db 0			; DATA XREF: ___:0041F076r
					; ___:0041F51Er
		align 4
		dd 3A8h	dup(0)
		db 2 dup(0)
word_448C8E	dw 0			; DATA XREF: sub_404640+1BDo
					; sub_404B10+31o ...
		db 2 dup(0)
word_448C92	dw 0			; DATA XREF: sub_404B10+4o
		dd 1Ch dup(0)
		db 2 dup(0)
word_448D06	dw 0			; DATA XREF: sub_407660+36o
					; sub_4076F0+3Eo ...
		dd 26h dup(0)
dword_448DA0	dd 86h dup(0)						; ___:00404EEEo ...
		db 3 dup(0)
byte_448FBB	db 0			; DATA XREF: sub_425640+3Bw
					; sub_4256B0+7Ew ...
		dd 7Fh dup(0)
		db 3 dup(0)
dword_4491BB	dd 0							; sub_4256B0+4Fw ...
dword_4491BF	dd 0							; ___:004240BDw ...
dword_4491C3	dd 0							; sub_4256B0+5Dr ...
dword_4491C7	dd 0							; sub_4256B0+8Cr ...
dword_4491CB	dd 0							; sub_4256B0+9Dr
dword_4491CF	dd 0							; ___:004240F1r ...
byte_4491D3	db 0			; DATA XREF: sub_425640+42w
					; sub_4256B0+85w
		dd 23379h dup(0)
		db 3 dup(0)
dword_4D5FBB	dd 0							; sub_4258E0+13o
		align 10h
		dd 39h dup(0)
		db 0
byte_4D60A5	db 3 dup(0)		; DATA XREF: sub_404C20+1Eo
					; ___:00404CD5o ...
		dd 5 dup(0)
byte_4D60BC	db 0			; DATA XREF: ___:00404F02w
					; ___:0040515Ew
dword_4D60BD	dd 0							; ___:loc_4231C4r ...
		align 4
		dd 0
		db 0
dword_4D60C9	dd 0							; sub_404C20+2Aw
byte_4D60CD	db 3 dup(0)		; DATA XREF: ___:00412EF4o
					; ___:00412F17o
		dd 9 dup(0)
		db 3 dup(0)
dword_4D60F7	dd 0							; sub_427AD0:loc_427BC7r
		align 4
		dd 2Fh dup(0)
		db 3 dup(0)
byte_4D61BB	db 0			; DATA XREF: sub_425870+16o
					; sub_4258A0+19o
		db 3 dup(0)
byte_4D61BF	db 0			; DATA XREF: sub_4257A0+4Co
		dd 6Fh dup(0)
		db 3 dup(0)
byte_4D637F	db 0			; DATA XREF: ___:004081D8o
					; ___:00408664o ...
		dd 8 dup(0)
dword_4D63A0	dd 0				dd 51h dup(0)
		db 0
byte_4D64E9	db 0			; DATA XREF: sub_426820:loc_4268D0r
					; sub_426CE0:loc_426D95r ...
		align 4
		dd 9Eh dup(0)
		db 0
dword_4D6765	dd 0							; sub_426CE0+7Dw ...
		align 4
		dd 1EDAh dup(0)
		db 0
byte_4DE2D5	db 3 dup(0)		; DATA XREF: ___:00419E93o
					; sub_419F50+13o
		dd 1EB9h dup(0)
		db 3 dup(0)
byte_4E5DBF	db 0			; DATA XREF: ___:00426A7Do
		dd 21h dup(0)
		db 0
byte_4E5E45	db 3 dup(0)		; DATA XREF: ___:00419EA3o
		dd 235h	dup(0)
		db 3 dup(0)
byte_4E671F	db 0			; DATA XREF: ___:00426A8Fo
		dd 1D5h	dup(0)
byte_4E6E74	db 0			; DATA XREF: ___:00404F09w
					; ___:loc_40FFA2r ...
byte_4E6E75	db 3 dup(0)		; DATA XREF: ___:00404EA5o
					; ___:004054EAo ...
		dd 4 dup(0)
		db 2 dup(0)
word_4E6E8A	dw 0			; DATA XREF: ___:00404F44o
					; ___:00408678o ...
		dd 0Fh dup(0)
		db 0
byte_4E6EC9	db 0			; DATA XREF: ___:0041F891w
					; ___:0041F8A7w ...
		db 0
byte_4E6ECB	db 0			; DATA XREF: sub_418490+21o
					; ___:0041DB71o ...
		dd 7FE4h dup(0)
dword_506E5C	dd 1000h dup(0)						; ___:00419A9Do ...
dword_50AE5C	dd 333h	dup(0)						; ___:00419AB8o ...
dword_50BB28	dd 0							; sub_41A010+1Br ...
		dd 3 dup(0)
dword_50BB38	dd 0							; ___:0041FB3Dw ...
dword_50BB3C	dd 0							; ___:0041FABAw ...
dword_50BB40	dd 0		dword_50BB44	dd 0							; ___:0041FB5Bw
dword_50BB48	dd 0		dword_50BB4C	dd 0							; ___:0041FB67w ...
dword_50BB50	dd 0							; ___:0041FB6Dw ...
dword_50BB54	dd 0							; ___:00420DA9o
dword_50BB58	dd 0							; ___:loc_41FAB4r ...
dword_50BB5C	dd 0							; ___:0041FB81w
dword_50BB60	dd 0							; sub_420530+41w ...
dword_50BB64	dd 0							; sub_420530+7Fr
dword_50BB68	dd 0							; sub_420530+92r ...
dword_50BB6C	dd 0							; sub_420530+148r
		dd 3 dup(0)
dword_50BB7C	dd 0							; ___:0041C1A5o
dword_50BB80	dd 0							; sub_423720+5r ...
dword_50BB84	dd 0							; ___:00423EB1r ...
		dd 7CEh	dup(0)
dword_50DAC0	dd 6 dup(0)						; ___:00423DB2o ...
dword_50DAD8	dd 196h	dup(0)						; sub_423660+6Do
dword_50E130	dd 0		word_50E134	dw 0			; DATA XREF: sub_424E90+A9r
		align 4
byte_50E138	db 0			; DATA XREF: sub_4254E0:loc_425540r
					; sub_4254E0+97w
		align 4
dword_50E13C	dd 0							; sub_426820+D9r
dword_50E140	dd 0							; sub_426820+45r
dword_50E144	dd 0							; sub_426820+54r ...
		dd 0
dword_50E14C	dd 80h dup(0)						; ___:00426B89o
dword_50E34C	dd 0		dword_50E350	dd 0				dd 1Dh dup(0)
dword_50E3C8	dd 0							; ___:0042B11Dr ...
dword_50E3CC	dd 0							; sub_42CB10:loc_42CBA6r ...
dword_50E3D0	dd 0							; sub_431280+2Dr ...
dword_50E3D4	dd 0		dword_50E3D8	dd 0							; sub_430270r ...
dword_50E3DC	dd 0		dword_50E3E0	dd 0							; sub_42F6B0+111w ...
dword_50E3E4	dd 0							; sub_42F6B0+F6r ...
dword_50E3E8	dd 0							; ___:loc_4303B0r
dword_50E3EC	dd 0							; sub_430FE0+2Cr ...
		dd 2 dup(0)
		dd 0
		dd 139h	dup(0)
dword_50E8E0	dd 10h dup(0)						; sub_430180:loc_4301B0o ...
dword_50E920	dd 8 dup(0)						; sub_42F540+25o ...
dword_50E940	dd 8 dup(0)						; sub_430690+25o ...
dword_50E960	dd 8 dup(0)						; sub_431560+84o ...
dword_50E980	dd 8 dup(0)						; sub_431560+8Bo ...
dword_50E9A0	dd 35Ch	dup(0)						; sub_42F6B0:loc_42F7C7o ...
dword_50F710	dd 0				align 8
dword_50F718	dd 0				dd 2 dup(0)
dword_50F724	dd 0				dd 4 dup(0)
dword_50F738	dd 0							; sub_40E7A0+25Ar ...
dword_50F73C	dd 0		dword_50F740	dd 0				dd 2 dup(0)
dword_50F74C	dd 0							; sub_40ED70+15Er ...
		dd 0
dword_50F754	dd 0							; sub_40E7A0+22Cr
		dd 0
dword_50F75C	dd 0							; sub_4207E0+285r ...
		dd 0
dword_50F764	dd 0							; sub_40E7A0+24Cr
		dd 3Ch dup(0)
dword_50F858	dd 0		dword_50F85C	dd 0		dword_50F860	dd 0				align 10h
		dd 0
dword_50F874	dd 0							; sub_420530+FEr
		dd 0Ah dup(0)
dword_50F8A0	dd 0							; sub_420530:loc_42057Cr ...
dword_50F8A4	dd 0							; ___:0040FFA7r ...
		dd 7 dup(0)
dword_50F8C4	dd 0				align 10h
dword_50F8D0	dd 0							; ___:0041B4DFr ...
		align 8
dword_50F8D8	dd 0							; sub_4203D0+2Er ...
		dd 3 dup(0)
dword_50F8E8	dd 0				dd 8 dup(0)
		dd 0
		dd 27h dup(0)
dword_50F9AC	dd 0				dd 2Ch dup(0)
dword_50FA60	dd 0							; sub_42D2C0+53r ...
dword_50FA64	dd 0				dd 4 dup(0)
dword_50FA78	dd 0				align 10h
dword_50FA80	dd 0		dword_50FA84	dd 0							; sub_42CB10+4Ar ...
		align 10h
dword_50FA90	dd 0		dword_50FA94	dd 0		dword_50FA98	dd 0		dword_50FA9C	dd 0		dword_50FAA0	dd 0		dword_50FAA4	dd 0				dd 0
dword_50FAAC	dd 0							; ___:0041C2DAr
		dd 3 dup(0)
dword_50FABC	dd 0							; sub_41B950+17Er ...
		dd 0
dword_50FAC4	dd 0							; sub_42DFD0+34r ...
		dd 0
dword_50FACC	dd 0				dd 0
dword_50FAD4	dd 0							; sub_42CB10+90r
dword_50FAD8	dd 0				align 10h
dword_50FAE0	dd 0				dd 4 dup(0)
dword_50FAF4	dd 0							; sub_41BC90+5Dr
dword_50FAF8	dd 0							; ___:00411086r ...
dword_50FAFC	dd 0							; ___:00419BDAr
		dd 2 dup(0)
dword_50FB08	dd 0							; ___:00422C43r ...
		dd 2 dup(0)
dword_50FB14	dd 0				dd 0
		dd 0
		dd 34h dup(0)
dword_50FBF0	dd 0							; sub_419F50+2Dr ...
		dd 0Bh dup(0)
dword_50FC20	dd 0				dd 2 dup(0)
dword_50FC2C	dd 0							; ___:loc_4250C9r ...
dword_50FC30	dd 0							; sub_42A5F0:loc_42A6ABr
		dd 4 dup(0)
dword_50FC44	dd 0				align 10h
dword_50FC50	dd 0							; ___:0042B628r
		align 8
dword_50FC58	dd 0		dword_50FC5C	dd 0							; sub_42A5F0+F9r
		dd 6 dup(0)
dword_50FC78	dd 0				align 10h
dword_50FC80	dd 0							; sub_41A6D0+48r ...
dword_50FC84	dd 0		dword_50FC88	dd 0							; ___:0041F9F8r ...
dword_50FC8C	dd 0							; ___:004216E1r ...
dword_50FC90	dd 0							; sub_427AD0+18Dr ...
		dd 4DBh	dup(0)
___		ends

; Section 2. (virtual address 00111000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00001000 (   4096.)
; Offset to raw	data for section: 00111000
; 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 511000h
		align 2000h
_rsrc___	ends

; Section 3. (virtual address 00112000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00001000 (   4096.)
; Offset to raw	data for section: 00112000
; 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 512000h
		dd 400h	dup(0)
_idata__	ends

; Section 4. (virtual address 00113000)
; Virtual size			: 0010A000 (1089536.)
; Section size in file		: 0010A000 (1089536.)
; Offset to raw	data for section: 00113000
; Flags	E0000060: Text Data Executable Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
Themida_	segment	para public 'CODE' use32
		assume cs:Themida_
		;org 513000h
		assume es:nothing, ss:nothing, ds:___, fs:nothing, gs:nothing
		dd 35C6Fh dup(0)
		db 0
byte_5EA1BD	db 3 dup(0)		; CODE XREF: sub_406890+12Bp
					; sub_409BC0+1Dp ...
		dd 0AB90h dup(0)
		public start
start		dd 2000h dup(0)
Themida_	ends

; Section 5. (virtual address 0021D000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 0021D000
; 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 61D000h
		align 2000h
_idata2		ends


		end start