Function at 0x4020b0
Capabilities:
Allocate or change rwx memory
Create thread
Inject thread
Spawn thread to rwx shellcode

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x458
mov esi, esp
mov dword [esi + 0x440], ebp
mov dword [esi + 0x444], esp
mov dword [esi + 0x450], 0xffffffff
lea eax, [esi + 0x448]
mov dword [esi + 0x44c], 0x402340
mov ecx, dword fs:[0]
mov dword [esi + 0x448], ecx
mov dword fs:[0], eax
lea edi, [esi + 0x40]
push 0x400
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x5c
push edi
call fcn.00408cc0
add esp, 8
mov dword [eax + 1], 0x67726174
mov dword [eax + 5], 0x642e7465
mov dword [eax + 8], 0x6c6c64
push edi
call fcn.0040a8a0
add esp, 4
mov edi, eax
call fcn.00407b75
lea ebx, [esi + 8]
push edi
lea ecx, [esi + 0x40]
push ecx
push eax
push ebx
call fcn.00406a30
add esp, 0x10
cmp dword [esi + 0x1c], 8
jb 0x402156
mov ebx, dword [esi + 8]
lea eax, [esi + 0x20]
push 0xffffffffffffffff
push 3
push eax
push ebx
call fcn.00407d60
cmp eax, 0x34
jg 0x4021a0
lea ecx, [eax - 2]
cmp ecx, 2
mov ebx, 0
jb 0x4021cd
test eax, eax
jne 0x4021af
mov eax, dword [esi + 0x30]
test eax, 0x400
je 0x402199
xor ebx, ebx
mov ecx, dword [esi + 0x34]
cmp ecx, 0xa0000003
je 0x4021cd
cmp ecx, 0xa000000c
je 0x4021cd
test al, 0x10
sete bl
jmp 0x4021cd
cmp eax, 0x35
je 0x4021cb
cmp eax, 0x7b
mov ebx, 0
je 0x4021cd
mov dword [esi + 0x450], 1
lea ecx, [esi + 8]
push ecx
push eax
push str.status
call fcn.00404f10
add esp, 0xc
xor ebx, ebx
mov eax, dword [esi + 0x1c]
cmp eax, 8
jb 0x40220a
mov ecx, dword [esi + 8]
lea edi, [eax + eax]
add edi, 2
cmp edi, 0x1000
jb 0x402200
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x4022d0
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.00406e70
add esp, 8
test bl, bl
je 0x4022a0
call section..text
mov edi, eax
lea ebx, [esi + 0x40]
push ebx
push eax
call fcn.00401100
add esp, 8
push ebx
call fcn.0040a8a0
add esp, 4
mov ebx, eax
inc ebx
push 4
push 0x1000
push ebx
push 0
push edi
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
push 0
push ebx
lea ecx, [esi + 0x40]
push ecx
mov ebx, eax
mov dword [esi + 4], eax
push eax
push edi
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
mov eax, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push 0
push 0
push ebx
push eax
push 0
push 0
push edi
call dword [sym.imp.KERNEL32.dll_CreateRemoteThread]
mov ebx, eax
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x8000
push 0
push dword [esi + 4]
push edi
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call fcn.00401410
xor eax, eax
jmp 0x4022b9
push 0x10
push str.Error
push str.DLL
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, 1
mov ecx, dword [esi + 0x448]
mov dword fs:[0], ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov dword [esi + 0x450], 0
call fcn.0040ac47
nop
push ebp
sub esp, 0x1c
lea esi, [ebp - 0x454]
mov ebp, dword [esi + 0x440]
call fcn.00408733
nop word cs:[eax + eax]
push ebp
sub esp, 0x1c
lea esi, [ebp - 0x454]
mov ebp, dword [esi + 0x440]
lea ecx, [esi + 8]
call fcn.00402590
add esp, 0x1c
pop ebp
ret