Function at 0x408860
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
sub esp, 0x168
mov eax, dword [0x10fcb40]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
mov dword [ebp - 0x118], 0x9c5b1e1f
mov dword [ebp - 0x114], 0x9e417e40
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0x140], eax
mov dword [ebp - 0x13c], ecx
mov dword [ebp - 0x118], 0x77b18984
mov dword [ebp - 0x114], 0x4e0190d
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0x138], eax
mov dword [ebp - 0x134], ecx
mov dword [ebp - 0x118], 0xff2f7f4f
mov dword [ebp - 0x114], 0xb0331b28
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x114]
mov edi, dword [ebx + 8]
mov dword [ebp - 0x130], eax
mov dword [ebp - 0x118], 0x77dde5e0
mov dword [ebp - 0x114], 0x4e0190d
mov eax, dword [ebp - 0x118]
mov dword [ebp - 0x128], eax
lea eax, [ebp - 0x110]
mov dword [ebp - 0x12c], ecx
mov ecx, dword [ebp - 0x114]
push 0
push eax
mov dword [ebp - 0x124], ecx
lea eax, [ebp - 0x140]
movaps xmm1, xmmword [ebp - 0x130]
xorps xmm1, xmmword [ebp - 0x140]
push 0x104
push eax
movaps xmmword [ebp - 0x140], xmm1
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
test eax, eax
jne 0x40899c
push str.ldr:_failed_to_get_patcher.dll.
push 0x10fdf00
call fcn.00401280
push eax
call fcn.00402890
add esp, 0xc
xor al, al
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040e963
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push 0x40
push 0x3000
lea eax, [ebp - 0x110]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
push 0
push edi
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov esi, eax
test esi, esi
jne 0x4089c8
push str.ldr:_failed_to_allocate_memory_for_patcher_path.
jmp 0x408974
push 0
lea eax, [ebp - 0x110]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
lea eax, [ebp - 0x110]
push eax
push esi
push edi
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
test eax, eax
jne 0x4089f3
push str.ldr:_failed_to_write_patcher_path.
jmp 0x408974
mov dword [ebp - 0x118], 0x915d1a24
mov dword [ebp - 0x114], 0x8200774d
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x14c], ecx
mov dword [ebp - 0x118], 0x1bb181ce
mov dword [ebp - 0x114], 0x4e0190d
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0x148], eax
mov dword [ebp - 0x144], ecx
mov dword [ebp - 0x118], 0xff2f7f4f
mov dword [ebp - 0x114], 0xb0331b28
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0x130], eax
mov dword [ebp - 0x118], 0x77dde5e0
mov dword [ebp - 0x12c], ecx
mov dword [ebp - 0x114], 0x4e0190d
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0x128], eax
lea eax, [ebp - 0x150]
mov dword [ebp - 0x124], ecx
movaps xmm1, xmmword [ebp - 0x130]
xorps xmm1, xmmword [ebp - 0x150]
push eax
movaps xmmword [ebp - 0x150], xmm1
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov edx, eax
cmp edx, 0xffffffff
je 0x408987
test edx, edx
je 0x408987
mov dword [ebp - 0x118], 0x9b4e1003
mov dword [ebp - 0x114], 0xc2517264
mov ecx, dword [ebp - 0x118]
mov eax, dword [ebp - 0x114]
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x160], ecx
mov dword [ebp - 0x118], 0x36a49781
mov dword [ebp - 0x114], 0x4e0190d
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0x158], eax
mov dword [ebp - 0x154], ecx
mov dword [ebp - 0x118], 0xff2f7f4f
mov dword [ebp - 0x114], 0xb0331b28
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0x130], eax
mov dword [ebp - 0x118], 0x77dde5e0
mov dword [ebp - 0x12c], ecx
mov dword [ebp - 0x114], 0x4e0190d
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0x128], eax
lea eax, [ebp - 0x160]
mov dword [ebp - 0x124], ecx
movaps xmm1, xmmword [ebp - 0x130]
xorps xmm1, xmmword [ebp - 0x160]
push eax
push edx
movaps xmmword [ebp - 0x160], xmm1
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x408bb9
push str.ldr:_failed_to_get_address.
jmp 0x408974
push 0
push 0
push esi
push eax
push 0
push 0
push edi
call dword [sym.imp.KERNEL32.dll_CreateRemoteThread]
cmp eax, 0xffffffff
jne 0x408bd9
push str.ldr:_failed_to_create_remote_thread.
jmp 0x408974
mov ecx, dword [ebp - 4]
mov al, 1
pop edi
xor ecx, ebp
pop esi
call fcn.0040e963
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret