Function at 0x401230
Capabilities:
Accept command line arguments
Allocate or change rwx memory
Create process on windows
Create thread
Get common file path
Inject thread
Resume thread
Spawn thread to rwx shellcode

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x104
mov eax, dword [0x415004]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0x98], 0
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov dword [ebp - 0xa4], eax
xor eax, eax
mov dword [ebp - 0xb8], eax
mov dword [ebp - 0xb4], eax
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xac], eax
push 0x44
push 0
lea ecx, [ebp - 0x104]
push ecx
call fcn.00404040
add esp, 0xc
lea ecx, [ebp - 0x1c]
call fcn.00401810
lea ecx, [ebp - 0x34]
call fcn.00401810
lea ecx, [ebp - 0x4c]
call fcn.00401810
push 0
push 0x104
lea ecx, [ebp - 0x1c]
call fcn.00401550
push 0
lea ecx, [ebp - 0x1c]
call fcn.00401610
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov dword [ebp - 0xbc], eax
push 0
mov edx, dword [ebp - 0xbc]
push edx
lea ecx, [ebp - 0x1c]
call fcn.00401550
push str._samp.dll
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x7c]
push ecx
call fcn.00401ed0
add esp, 0xc
push eax
lea ecx, [ebp - 0x34]
call fcn.00401690
lea ecx, [ebp - 0x7c]
call fcn.00401640
push str.gta_sa.exe
lea edx, [ebp - 0x1c]
push edx
lea eax, [ebp - 0x94]
push eax
call fcn.00401ed0
add esp, 0xc
push eax
lea ecx, [ebp - 0x4c]
call fcn.00401690
lea ecx, [ebp - 0x94]
call fcn.00401640
cmp dword [ebp - 0xa4], 0
je 0x4014cc
push str.LoadLibraryW
mov ecx, dword [ebp - 0xa4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0xa8], eax
cmp dword [ebp - 0xa8], 0
je 0x4014be
lea edx, [ebp - 0xb8]
push edx
lea eax, [ebp - 0x104]
push eax
push 0
push 0
push 0xc
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
lea ecx, [ebp - 0x4c]
call fcn.004015c0
push eax
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x4014b0
push 0x40
push 0x3000
lea ecx, [ebp - 0x34]
call fcn.004015a0
lea ecx, [eax + eax + 2]
push ecx
push 0
mov edx, dword [ebp - 0xb8]
push edx
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov dword [ebp - 0x9c], eax
cmp dword [ebp - 0x9c], 0
je 0x401488
push 0
lea ecx, [ebp - 0x34]
call fcn.004015a0
lea eax, [eax + eax + 2]
push eax
lea ecx, [ebp - 0x34]
call fcn.004015c0
push eax
mov ecx, dword [ebp - 0x9c]
push ecx
mov edx, dword [ebp - 0xb8]
push edx
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
test eax, eax
je 0x40145f
push 0
push 4
mov eax, dword [ebp - 0x9c]
push eax
mov ecx, dword [ebp - 0xa8]
push ecx
push 0
push 0
mov edx, dword [ebp - 0xb8]
push edx
call dword [sym.imp.KERNEL32.dll_CreateRemoteThread]
mov dword [ebp - 0xa0], eax
cmp dword [ebp - 0xa0], 0
je 0x401451
mov eax, dword [ebp - 0xa0]
push eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
push 0xffffffffffffffff
mov ecx, dword [ebp - 0xa0]
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
jmp 0x40145d
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x98], eax
jmp 0x40146b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x98], eax
push 0x8000
push 0
mov edx, dword [ebp - 0x9c]
push edx
mov eax, dword [ebp - 0xb8]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
jmp 0x401494
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x98], eax
mov ecx, dword [ebp - 0xb4]
push ecx
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov edx, dword [ebp - 0xb8]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4014bc
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x98], eax
jmp 0x4014ca
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x98], eax
jmp 0x4014d8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x98], eax
cmp dword [ebp - 0x98], 0
je 0x401514
mov eax, dword [ebp - 0x98]
push eax
lea ecx, [ebp - 0x64]
push ecx
call fcn.00401150
add esp, 8
push 0x10
push str.Error
lea ecx, [ebp - 0x64]
call fcn.004015c0
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [ebp - 0x64]
call fcn.00401640
mov edx, dword [ebp - 0x98]
mov dword [ebp - 0xc0], edx
lea ecx, [ebp - 0x4c]
call fcn.00401640
lea ecx, [ebp - 0x34]
call fcn.00401640
lea ecx, [ebp - 0x1c]
call fcn.00401640
mov eax, dword [ebp - 0xc0]
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00402bff
mov esp, ebp
pop ebp
ret 0x10