Function at 0x410f80
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, 0x4a4
push ebx
push esi
push edi
lea edi, [ebp - 0x4a4]
mov ecx, 0x129
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
mov eax, dword [0x47406c]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, 0x477066
call fcn.004140c0
mov esi, esp
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_DisableThreadLibraryCalls]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0xc], 0
mov esi, esp
push 0x455940
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0x18], eax
xor eax, eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], eax
push 0x44
push 0
lea eax, [ebp - 0x94]
push eax
call fcn.00416410
add esp, 0xc
lea ecx, [ebp - 0xc4]
call fcn.00404a80
lea ecx, [ebp - 0xe8]
call fcn.00404a80
lea ecx, [ebp - 0x10c]
call fcn.00404a80
lea ecx, [ebp - 0x130]
call fcn.00404a80
push 0
push 0x104
lea ecx, [ebp - 0xc4]
call fcn.0040f370
push 0
lea ecx, [ebp - 0xc4]
call fcn.00407620
mov esi, esp
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0x13c], eax
push 0
mov eax, dword [ebp - 0x13c]
push eax
lea ecx, [ebp - 0xc4]
call fcn.0040f370
push str._samp.dll
lea eax, [ebp - 0xc4]
push eax
lea ecx, [ebp - 0x3f0]
push ecx
call fcn.00402430
add esp, 0xc
push eax
lea ecx, [ebp - 0xe8]
call fcn.00407400
lea ecx, [ebp - 0x3f0]
call fcn.00406580
push str.imrp.dll
lea eax, [ebp - 0xc4]
push eax
lea ecx, [ebp - 0x414]
push ecx
call fcn.00402430
add esp, 0xc
push eax
lea ecx, [ebp - 0x130]
call fcn.00407400
lea ecx, [ebp - 0x414]
call fcn.00406580
push str.gta_sa.exe
lea eax, [ebp - 0xc4]
push eax
lea ecx, [ebp - 0x438]
push ecx
call fcn.00402430
add esp, 0xc
push eax
lea ecx, [ebp - 0x10c]
call fcn.00407400
lea ecx, [ebp - 0x438]
call fcn.00406580
cmp dword [ebp - 0x18], 0
je 0x411697
mov esi, esp
push str.LoadLibraryW
mov eax, dword [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
je 0x411683
mov esi, esp
lea eax, [ebp - 0x48]
push eax
lea ecx, [ebp - 0x94]
push ecx
push 0
push 0
push 0xc
push 0
push 0
push 0
mov edi, esp
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
cmp edi, esp
call fcn.00414080
push eax
lea ecx, [ebp - 0x10c]
call fcn.0040c3b0
push eax
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
cmp esi, esp
call fcn.00414080
test eax, eax
je 0x41166f
mov esi, esp
push 0x40
push 0x3000
lea ecx, [ebp - 0xe8]
call fcn.0040dde0
lea eax, [eax + eax + 2]
push eax
push 0
mov ecx, dword [ebp - 0x48]
push ecx
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0
je 0x4112a7
mov esi, esp
push 0
lea ecx, [ebp - 0xe8]
call fcn.0040dde0
lea eax, [eax + eax + 2]
push eax
lea ecx, [ebp - 0xe8]
call fcn.0040c3b0
push eax
mov ecx, dword [ebp - 0x30]
push ecx
mov edx, dword [ebp - 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
cmp esi, esp
call fcn.00414080
test eax, eax
je 0x411275
mov esi, esp
push 0
push 4
mov eax, dword [ebp - 0x30]
push eax
mov ecx, dword [ebp - 0x24]
push ecx
push 0
push 0
mov edx, dword [ebp - 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_CreateRemoteThread]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0xa0], eax
cmp dword [ebp - 0xa0], 0
je 0x411261
mov esi, esp
mov eax, dword [ebp - 0xa0]
push eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
cmp esi, esp
call fcn.00414080
mov esi, esp
push 0xffffffffffffffff
mov eax, dword [ebp - 0xa0]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp esi, esp
call fcn.00414080
jmp 0x411273
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0xc], eax
jmp 0x411287
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0xc], eax
mov esi, esp
push 0x8000
push 0
mov eax, dword [ebp - 0x30]
push eax
mov ecx, dword [ebp - 0x48]
push ecx
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
cmp esi, esp
call fcn.00414080
jmp 0x4112b9
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0xc], eax
push 1
push 0x40
push 0x24
lea eax, [ebp - 0x130]
push eax
lea ecx, [ebp - 0x1fc]
call fcn.004042d0
mov eax, dword [ebp - 0x1fc]
mov ecx, dword [eax + 4]
lea ecx, [ebp + ecx - 0x1fc]
call fcn.0040d570
movzx edx, al
test edx, edx
je 0x411395
mov esi, esp
push 0x10
push 0x4559ac
push str.failed1
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp esi, esp
call fcn.00414080
mov eax, dword [ebp - 0x1fc]
mov ecx, dword [eax + 4]
lea ecx, [ebp + ecx - 0x1fc]
call fcn.0040efe0
push eax
push str.Opening_the_file_failed:__X_n
call fcn.004118e0
add esp, 8
lea ecx, [ebp - 0x1fc]
call fcn.0040c770
push str.PAUSE
call fcn.0041b334
add esp, 4
mov dword [ebp - 0x444], 0xfffffffb
lea ecx, [ebp - 0x1fc]
call fcn.00407f80
lea ecx, [ebp - 0x130]
call fcn.00406580
lea ecx, [ebp - 0x10c]
call fcn.00406580
lea ecx, [ebp - 0xe8]
call fcn.00406580
lea ecx, [ebp - 0xc4]
call fcn.00406580
mov eax, dword [ebp - 0x444]
jmp 0x41172c
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x1fc]
call fcn.0040ff50
lea ecx, [ebp - 0x21c]
call fcn.004076e0
mov dword [ebp - 0x4a4], eax
mov dword [ebp - 0x4a0], edx
cmp dword [ebp - 0x4a0], 0
jg 0x41146b
jl 0x4113dd
cmp dword [ebp - 0x4a4], 0x1000
jae 0x41146b
mov esi, esp
push 0x10
push 0x4559ac
push str.failed2
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp esi, esp
call fcn.00414080
push str.Filesize_invalid._n
call fcn.004118e0
add esp, 4
lea ecx, [ebp - 0x1fc]
call fcn.0040c770
push str.PAUSE
call fcn.0041b334
add esp, 4
mov dword [ebp - 0x450], 0xfffffffa
lea ecx, [ebp - 0x1fc]
call fcn.00407f80
lea ecx, [ebp - 0x130]
call fcn.00406580
lea ecx, [ebp - 0x10c]
call fcn.00406580
lea ecx, [ebp - 0xe8]
call fcn.00406580
lea ecx, [ebp - 0xc4]
call fcn.00406580
mov eax, dword [ebp - 0x450]
jmp 0x41172c
lea ecx, [ebp - 0x21c]
call fcn.004076e0
push eax
call fcn.00414170
add esp, 4
mov dword [ebp - 0x45c], eax
mov eax, dword [ebp - 0x45c]
mov dword [ebp - 0x228], eax
cmp dword [ebp - 0x228], 0
jne 0x41152c
mov esi, esp
push 0x10
push 0x4559ac
push str.failed3
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp esi, esp
call fcn.00414080
push str.Cant_allocate_dll_file._n
call fcn.004118e0
add esp, 4
lea ecx, [ebp - 0x1fc]
call fcn.0040c770
push str.PAUSE
call fcn.0041b334
add esp, 4
mov dword [ebp - 0x468], 0xfffffff9
lea ecx, [ebp - 0x1fc]
call fcn.00407f80
lea ecx, [ebp - 0x130]
call fcn.00406580
lea ecx, [ebp - 0x10c]
call fcn.00406580
lea ecx, [ebp - 0xe8]
call fcn.00406580
lea ecx, [ebp - 0xc4]
call fcn.00406580
mov eax, dword [ebp - 0x468]
jmp 0x41172c
push 0
push 0
push 0
lea ecx, [ebp - 0x1fc]
call fcn.0040f4a0
lea ecx, [ebp - 0x21c]
call fcn.004076e0
push edx
push eax
mov eax, dword [ebp - 0x228]
push eax
lea ecx, [ebp - 0x1fc]
call fcn.0040f030
lea ecx, [ebp - 0x1fc]
call fcn.0040c770
push 0
push 1
push 1
push 1
push 1
push 1
lea ecx, [ebp - 0x21c]
call fcn.004076e0
push eax
mov eax, dword [ebp - 0x228]
push eax
mov ecx, dword [ebp - 0x48]
push ecx
call fcn.004015c0
add esp, 0x24
movzx edx, al
test edx, edx
jne 0x411621
mov eax, dword [ebp - 0x228]
mov dword [ebp - 0x474], eax
mov ecx, dword [ebp - 0x474]
push ecx
call fcn.00414150
add esp, 4
mov esi, esp
push 0x10
push 0x4559ac
push str.failed
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0x480], 0xfffffff8
lea ecx, [ebp - 0x1fc]
call fcn.00407f80
lea ecx, [ebp - 0x130]
call fcn.00406580
lea ecx, [ebp - 0x10c]
call fcn.00406580
lea ecx, [ebp - 0xe8]
call fcn.00406580
lea ecx, [ebp - 0xc4]
call fcn.00406580
mov eax, dword [ebp - 0x480]
jmp 0x41172c
mov eax, dword [ebp - 0x228]
mov dword [ebp - 0x48c], eax
mov ecx, dword [ebp - 0x48c]
push ecx
call fcn.00414150
add esp, 4
mov esi, esp
mov eax, dword [ebp - 0x44]
push eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
cmp esi, esp
call fcn.00414080
mov esi, esp
mov eax, dword [ebp - 0x48]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp esi, esp
call fcn.00414080
lea ecx, [ebp - 0x1fc]
call fcn.00407f80
jmp 0x411681
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0xc], eax
jmp 0x411695
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0xc], eax
jmp 0x4116a9
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.00414080
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
je 0x4116f1
mov eax, dword [ebp - 0xc]
push eax
lea ecx, [ebp - 0x24c]
push ecx
call fcn.00408830
add esp, 8
mov esi, esp
push 0x10
push 0x4559ac
lea ecx, [ebp - 0x24c]
call fcn.0040c3b0
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp esi, esp
call fcn.00414080
lea ecx, [ebp - 0x24c]
call fcn.00406580
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x498], eax
lea ecx, [ebp - 0x130]
call fcn.00406580
lea ecx, [ebp - 0x10c]
call fcn.00406580
lea ecx, [ebp - 0xe8]
call fcn.00406580
lea ecx, [ebp - 0xc4]
call fcn.00406580
mov eax, dword [ebp - 0x498]
push edx
mov ecx, ebp
push eax
lea edx, [0x411760]
call fcn.00414010
pop eax
pop edx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00414190
add esp, 0x4a4
cmp ebp, esp
call fcn.00414080
mov esp, ebp
pop ebp
ret 0x10