Function at 0x140016d20
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], r9
mov dword [rsp + 0x18], r8d
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x70
cmp dword [rcx + 0x8b60], 0
mov rbp, rdx
mov r15, rcx
jne 0x14001748d
mov r10, qword [rcx + 0x8b58]
test r10, r10
je 0x14001748d
mov r9, qword [r15 + 0x8630]
mov rcx, rdx
mov edx, 0x10
mov rax, qword [r9 + 0x38]
mov rsi, qword [r9 + 0x28]
mov edi, 1
shl edi, cl
mov rcx, qword [r15 + 0x86d0]
dec rcx
shl rcx, 4
sub rax, rcx
inc rax
cmp rax, rdx
cmovb rdx, rax
mov rax, qword [r9 + 0x30]
inc rsi
mov qword [rsp + 0x30], rdx
cmp rcx, rax
jbe 0x140016daf
xor eax, eax
jmp 0x140016db2
and eax, 0xf
mov r12d, dword [r15 + 0x18]
movzx r14d, byte [r10 + 0x80d0]
mov r11, qword [r9 + 0x40]
mov r8d, dword [r15 + 0x1c]
dec rax
xor edx, edx
add rax, rdi
xor r13d, r13d
mov byte [rsp + 0x20], r14b
div rdi
xor edx, edx
mov qword [rsp + 0x40], r11
mov rbx, rax
mov rax, qword [r9 + 0x20]
dec rax
add rax, rdi
div rdi
imul rbx, rdi
mov qword [rsp + 0x28], rbx
imul rax, rdi
cmp r12d, 4
sete r13b
mov qword [rsp + 0x38], rax
mov rax, qword [r10 + 0x8830]
movzx r10d, byte [r10 + 0x80d1]
mov qword [rsp + 0x48], rax
xor edx, edx
mov rax, rcx
mov rcx, qword [r9 + 0x48]
add r13, 3
add r13, qword [r15 + 0x28]
div rdi
mov byte [rsp + 0xb0], r10b
lea r9, [rcx + rax*8]
mov qword [rsp + 0x50], r9
cmp r12d, 7
je 0x140016e57
cmp r12d, 4
je 0x140016e57
or eax, 0xffffffff
jmp 0x14001748f
cmp r8d, 1
jne 0x140016f62
mov r14, qword [rsp + 0xc8]
mov eax, 0x80
mov rcx, r14
shl eax, cl
cdq
idiv dword [rsp + 0xc0]
mov dword [rsp + 0xb0], eax
cmp rbx, qword [rsp + 0x30]
jae 0x14001748d
mov rdx, qword [rsp + 0x38]
mov r9, rbx
mov rax, rdi
shl r9, 4
shl rax, 4
lea r12, [0x140265fb0]
mov qword [rsp + 0x40], rax
nop dword [rax]
mov rcx, rbp
mov rax, rbx
mov r8, rdx
shr rax, cl
mov rcx, qword [rsp + 0x50]
mov r10, qword [rcx + rax*8]
cmp rdx, rsi
jae 0x140016f45
mov ebx, dword [rsp + 0xc0]
mov rax, r8
and eax, 0xf
add rax, r9
movzx ecx, byte [rax + r12]
mov rax, r8
and rax, 0xfffffffffffffff0
shl rax, 4
add rcx, rax
mov rax, qword [rsp + 0x48]
mov edx, dword [rax + rcx*4]
mov rcx, r14
add edx, dword [rsp + 0xb0]
imul edx, ebx
sar edx, cl
test edx, edx
jns 0x140016f0c
xor edx, edx
jmp 0x140016f16
mov eax, 0xff
cmp edx, eax
cmovg edx, eax
mov rax, r8
mov rcx, rbp
add r8, rdi
shr rax, cl
mov rcx, qword [r11 + rax*8]
mov rax, qword [r15 + 0x80f0]
add rcx, r10
add rcx, r13
mov byte [rcx + rax], dl
cmp r8, rsi
jb 0x140016ed1
mov rbx, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x38]
add r9, qword [rsp + 0x40]
add rbx, rdi
mov qword [rsp + 0x28], rbx
cmp rbx, qword [rsp + 0x30]
jb 0x140016eb0
jmp 0x14001748d
cmp r8d, 2
jne 0x14001708c
mov rcx, qword [rsp + 0xc8]
mov eax, 0x8000
shl eax, cl
cdq
idiv dword [rsp + 0xc0]
mov dword [rsp + 0xb0], eax
cmp rbx, qword [rsp + 0x30]
jae 0x14001748d
mov rdx, qword [rsp + 0x38]
mov r9, rbx
mov rax, rdi
shl r9, 4
shl rax, 4
movzx r14d, r14b
mov qword [rsp + 0x40], rax
lea r12, [0x140265fb0]
nop dword [rax + rax]
mov rcx, rbp
mov rax, rbx
mov r8, rdx
shr rax, cl
mov rcx, qword [rsp + 0x50]
mov r10, qword [rcx + rax*8]
cmp rdx, rsi
jae 0x14001706f
mov rbx, qword [rsp + 0xc8]
nop word [rax + rax]
mov rax, r8
and eax, 0xf
add rax, r9
movzx ecx, byte [rax + r12]
mov rax, r8
and rax, 0xfffffffffffffff0
shl rax, 4
add rcx, rax
mov rax, qword [rsp + 0x48]
mov edx, dword [rax + rcx*4]
mov rcx, rbx
add edx, dword [rsp + 0xb0]
imul edx, dword [rsp + 0xc0]
sar edx, cl
mov ecx, r14d
shl edx, cl
test edx, edx
jns 0x140017035
xor edx, edx
jmp 0x14001703f
mov eax, 0xffff
cmp edx, eax
cmovg edx, eax
mov rax, r8
mov rcx, rbp
add r8, rdi
shr rax, cl
mov rcx, qword [r11 + rax*8]
mov rax, qword [r15 + 0x80f0]
add rcx, r10
add rcx, r13
mov word [rax + rcx*2], dx
cmp r8, rsi
jb 0x140016ff0
mov rbx, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x38]
add r9, qword [rsp + 0x40]
add rbx, rdi
mov qword [rsp + 0x28], rbx
cmp rbx, qword [rsp + 0x30]
jb 0x140016fc0
jmp 0x14001748d
cmp r8d, 3
jne 0x14001719d
cmp rbx, qword [rsp + 0x30]
jae 0x14001748d
mov rdx, qword [rsp + 0x38]
movzx eax, r14b
mov r10, rbx
mov dword [rsp + 0xb0], eax
mov rax, rdi
shl r10, 4
shl rax, 4
lea r12, [0x140265fb0]
mov r9d, 0x7fff
mov qword [rsp + 0x40], rax
mov rcx, rbp
mov rax, rbx
mov r8, rdx
shr rax, cl
mov rcx, qword [rsp + 0x50]
mov r14, qword [rcx + rax*8]
cmp rdx, rsi
jae 0x140017180
mov rbx, qword [rsp + 0xc8]
nop word [rax + rax]
mov rax, r8
and eax, 0xf
add rax, r10
movzx ecx, byte [rax + r12]
mov rax, r8
and rax, 0xfffffffffffffff0
shl rax, 4
add rcx, rax
mov rax, qword [rsp + 0x48]
mov edx, dword [rax + rcx*4]
mov rcx, rbx
imul edx, dword [rsp + 0xc0]
sar edx, cl
mov ecx, dword [rsp + 0xb0]
shl edx, cl
cmp edx, 0xffff8000
jge 0x140017149
mov edx, 0xffff8000
jmp 0x140017150
cmp edx, r9d
cmovg edx, r9d
mov rax, r8
mov rcx, rbp
add r8, rdi
shr rax, cl
mov rcx, qword [r11 + rax*8]
mov rax, qword [r15 + 0x80f0]
add rcx, r14
add rcx, r13
mov word [rax + rcx*2], dx
cmp r8, rsi
jb 0x140017100
mov rbx, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x38]
add r10, qword [rsp + 0x40]
add rbx, rdi
mov qword [rsp + 0x28], rbx
cmp rbx, qword [rsp + 0x30]
jb 0x1400170d1
jmp 0x14001748d
cmp r8d, 4
jne 0x140017292
cmp rbx, qword [rsp + 0x30]
jae 0x14001748d
mov rdx, qword [rsp + 0x38]
mov r10, rbx
mov rax, rdi
shl r10, 4
shl rax, 4
lea r12, [0x140265fb0]
mov qword [rsp + 0xb0], rax
mov r9d, 0x7fff
nop word [rax + rax]
mov rcx, rbp
mov rax, rbx
mov r8, rdx
shr rax, cl
mov rcx, qword [rsp + 0x50]
mov r14, qword [rcx + rax*8]
cmp rdx, rsi
jae 0x140017272
mov rbx, qword [rsp + 0xc8]
mov rax, r8
and eax, 0xf
add rax, r10
movzx ecx, byte [rax + r12]
mov rax, r8
and rax, 0xfffffffffffffff0
shl rax, 4
add rcx, rax
mov rax, qword [rsp + 0x48]
mov edx, dword [rax + rcx*4]
mov rcx, rbx
imul edx, dword [rsp + 0xc0]
sar edx, cl
mov rcx, rbp
mov eax, edx
and dx, r9w
sar eax, 0x1f
xor dx, ax
sub dx, ax
mov rax, r8
add r8, rdi
shr rax, cl
mov rcx, qword [r11 + rax*8]
mov rax, qword [r15 + 0x80f0]
add rcx, r14
add rcx, r13
mov word [rax + rcx*2], dx
cmp r8, rsi
jb 0x140017202
mov rbx, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x38]
add r10, qword [rsp + 0xb0]
add rbx, rdi
mov qword [rsp + 0x28], rbx
cmp rbx, qword [rsp + 0x30]
jb 0x1400171e0
jmp 0x14001748d
cmp r8d, 6
jne 0x140017377
cmp rbx, qword [rsp + 0x30]
jae 0x14001748d
mov rdx, qword [rsp + 0x38]
mov r9, rbx
mov rax, rdi
shl r9, 4
shl rax, 4
movzx r14d, r14b
mov qword [rsp + 0xb0], rax
lea r12, [0x140265fb0]
nop dword [rax]
mov rcx, rbp
mov rax, rbx
mov r8, rdx
shr rax, cl
mov rcx, qword [rsp + 0x50]
mov r10, qword [rcx + rax*8]
cmp rdx, rsi
jae 0x140017357
mov rbx, qword [rsp + 0xc8]
mov rax, r8
and eax, 0xf
add rax, r9
movzx ecx, byte [rax + r12]
mov rax, r8
and rax, 0xfffffffffffffff0
shl rax, 4
add rcx, rax
mov rax, qword [rsp + 0x48]
mov edx, dword [rax + rcx*4]
mov rcx, rbx
mov rax, r8
add r8, rdi
imul edx, dword [rsp + 0xc0]
sar edx, cl
mov ecx, r14d
shl edx, cl
mov rcx, rbp
shr rax, cl
mov rcx, qword [r11 + rax*8]
mov rax, qword [r15 + 0x80f0]
add rcx, r10
add rcx, r13
mov dword [rax + rcx*4], edx
cmp r8, rsi
jb 0x1400172f2
mov rbx, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x38]
add r9, qword [rsp + 0xb0]
add rbx, rdi
mov qword [rsp + 0x28], rbx
cmp rbx, qword [rsp + 0x30]
jb 0x1400172d0
jmp 0x14001748d
cmp r8d, 7
jne 0x140016e4f
cmp rbx, qword [rsp + 0x30]
jae 0x14001748d
mov r8, qword [rsp + 0x38]
mov r12, rbx
mov rax, rdi
shl r12, 4
shl rax, 4
lea rdx, [0x140265fb0]
mov qword [rsp + 0x60], rax
nop dword [rax + rax]
mov rax, rbx
mov rcx, rbp
mov r14, r8
shr rax, cl
mov rax, qword [r9 + rax*8]
mov qword [rsp + 0x58], rax
cmp r8, rsi
jae 0x140017475
mov rbx, qword [rsp + 0x40]
nop dword [rax]
nop word [rax + rax]
movzx r8d, byte [rsp + 0x20]
mov rax, r14
and eax, 0xf
add rax, r12
movzx ecx, byte [rax + rdx]
mov rax, r14
movzx edx, r10b
and rax, 0xfffffffffffffff0
shl rax, 4
add rcx, rax
mov rax, qword [rsp + 0x48]
mov eax, dword [rax + rcx*4]
mov rcx, qword [rsp + 0xc8]
imul eax, dword [rsp + 0xc0]
sar eax, cl
mov ecx, eax
call fcn.1400118d0
movzx r10d, byte [rsp + 0xb0]
mov rax, r14
mov rcx, rbp
add r14, rdi
lea rdx, [0x140265fb0]
shr rax, cl
mov rcx, qword [rbx + rax*8]
mov rax, qword [r15 + 0x80f0]
add rcx, qword [rsp + 0x58]
add rcx, r13
movss dword [rax + rcx*4], xmm0
cmp r14, rsi
jb 0x1400173e0
mov rbx, qword [rsp + 0x28]
mov r8, qword [rsp + 0x38]
mov r9, qword [rsp + 0x50]
lea rdx, [0x140265fb0]
add r12, qword [rsp + 0x60]
add rbx, rdi
mov qword [rsp + 0x28], rbx
cmp rbx, qword [rsp + 0x30]
jb 0x1400173b0
xor eax, eax
mov rbx, qword [rsp + 0xb8]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret