Function at 0x14016c8a0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rdi
push r12
lea rbp, [rsp - 0x20]
mov eax, 0x120
call fcn.1401ef830
sub rsp, rax
mov r12, rdx
mov rdi, rcx
cmp r9, 0x40000000
jbe 0x14016c8d4
xor eax, eax
add rsp, 0x120
pop r12
pop rdi
pop rbp
ret
mov qword [rsp + 0x140], rbx
lea rax, [rbp - 0x78]
mov qword [rbp - 0x28], rax
xor ebx, ebx
lea rax, [rbp - 0x30]
mov qword [rsp + 0x150], r13
mov qword [rbp - 0x18], rax
lea r13, [0x140323354]
mov rax, qword [rbp + 0x60]
mov qword [rsp + 0x110], r15
mov qword [rbp - 0x70], r13
mov dword [rbp - 0x78], 4
mov dword [rbp - 0x68], ebx
mov dword [rbp - 0x74], 4
mov dword [rbp - 0x30], 4
mov qword [rbp - 0x20], r8
test rax, rax
je 0x14016c948
mov qword [rbp - 0x58], rax
lea rdx, [rbp - 0x60]
mov eax, dword [rbp + 0x68]
mov dword [rbp - 0x60], eax
mov dword [rbp - 0x5c], 4
mov dword [rbp - 0x50], ebx
jmp 0x14016c94b
mov rdx, rbx
lea ecx, [r9*8]
mov qword [rbp - 8], rdx
mov eax, ecx
mov byte [rbp + 0x5b], cl
sar eax, 0x18
lea r8, [0x1402c8500]
mov byte [rbp + 0x58], al
xor r9d, r9d
mov eax, ecx
mov dword [rbp - 0x48], 4
sar eax, 0x10
mov rdx, rdi
mov byte [rbp + 0x59], al
mov eax, ecx
sar eax, 8
lea rcx, [rbp - 0x10]
mov byte [rbp + 0x5a], al
lea rax, [rbp + 0x58]
mov qword [rbp - 0x40], rax
lea rax, [rbp - 0x20]
mov qword [rbp - 0x10], rax
lea rax, [rbp - 0x48]
mov qword [rbp], rax
mov dword [rbp - 0x44], 4
mov dword [rbp - 0x38], ebx
call fcn.1400e4bf0
mov r15d, eax
test eax, eax
jle 0x14016cb55
mov rdi, qword [rdi]
lea r9, [rsp + 0x34]
lea r8, [rsp + 0x30]
mov qword [rsp + 0x60], rdi
lea rdx, [rsp + 0x78]
mov dword [rsp + 0x20], eax
lea rcx, [rsp + 0x60]
call fcn.1400a1dd0
test al, al
js 0x14016cb55
cmp dword [rsp + 0x30], 0x10
jne 0x14016cb55
cmp dword [rsp + 0x34], ebx
jne 0x14016cb55
mov qword [rsp + 0x148], rsi
lea r9, [rsp + 0x3c]
mov rsi, qword [rsp + 0x60]
lea r8, [rsp + 0x38]
sub edi, esi
mov qword [rsp + 0x68], rsi
add edi, r15d
lea rdx, [rsp + 0x7c]
lea rcx, [rsp + 0x68]
mov dword [rsp + 0x20], edi
call fcn.1400a1dd0
test al, al
js 0x14016cb51
cmp dword [rsp + 0x38], 0x10
jne 0x14016cb51
cmp dword [rsp + 0x3c], ebx
jne 0x14016cb51
mov qword [rsp + 0x118], r14
lea r9, [rsp + 0x44]
mov r14, qword [rsp + 0x68]
lea r8, [rsp + 0x40]
sub esi, r14d
mov qword [rsp + 0x70], r14
add edi, esi
lea rdx, [rsp + 0x48]
lea rcx, [rsp + 0x70]
mov dword [rsp + 0x20], edi
call fcn.1400a1dd0
test al, al
js 0x14016cb4d
cmp dword [rsp + 0x40], 6
jne 0x14016cb4d
cmp dword [rsp + 0x44], ebx
jne 0x14016cb4d
movsxd rax, dword [rsp + 0x48]
lea r9, [rsp + 0x50]
mov rcx, qword [rsp + 0x70]
lea r8, [rsp + 0x4c]
add rcx, rax
lea rdx, [rbp - 0x80]
sub r14d, ecx
mov qword [rsp + 0x58], rcx
add edi, r14d
lea rcx, [rsp + 0x58]
mov dword [rsp + 0x20], edi
call fcn.1400a1dd0
test al, al
js 0x14016cb4d
cmp dword [rsp + 0x4c], 4
jne 0x14016cb4d
cmp dword [rsp + 0x50], ebx
jne 0x14016cb4d
mov r8, qword [rsp + 0x58]
xor dl, dl
sub r8, r13
nop
lea rax, [rbx + r13]
inc rbx
movzx ecx, byte [r8 + rax]
movzx eax, byte [rax]
xor cl, al
or dl, cl
cmp rbx, 4
jb 0x14016caf0
test dl, dl
jne 0x14016cb4d
mov rax, qword [rsp + 0x58]
mov qword [r12], rax
mov eax, r15d
mov r14, qword [rsp + 0x118]
mov rsi, qword [rsp + 0x148]
mov r13, qword [rsp + 0x150]
mov rbx, qword [rsp + 0x140]
mov r15, qword [rsp + 0x110]
add rsp, 0x120
pop r12
pop rdi
pop rbp
ret
xor eax, eax
jmp 0x14016cb19
xor eax, eax
jmp 0x14016cb21
xor eax, eax
jmp 0x14016cb29