Function at 0x14000175c
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], rbp
mov qword [rsp + 0x18], r8
push rsi
push rdi
push r12
push r13
push r14
push r15
mov r10d, dword [0x14016aa8c]
mov r12, rcx
movzx eax, word [0x14016aa5c]
mov r14, rdx
mov rbp, qword [rsp + 0x78]
mov ecx, eax
mov r8d, dword [0x14016aab0]
and ecx, 0x11a0
movsxd rdi, dword [rsp + 0x60]
inc r8d
mov qword [rsp + 0x78], rcx
mov r15, r9
movzx r11d, word [r9 + rbp*4]
mov ecx, 0xffff
add ax, cx
mov dword [0x14016aab0], r8d
mov word [0x14016aa5c], ax
add r11w, di
movsxd rbx, dword [rdx + 0x4d48]
mov eax, r10d
movzx edx, word [0x14016aa70]
inc r10d
add dx, cx
shl eax, 2
movsxd rcx, eax
mov word [0x14016aa70], dx
movzx eax, dx
mov edx, dword [r14 + rcx*4]
mov rcx, qword [0x14016aa60]
imul edx, eax
movabs rax, 0x36bc37614b5eb70f
mov dword [0x14016aa8c], r10d
dec r10d
movsxd rsi, edx
mul rcx
mov rax, qword [0x14016aa48]
sub rcx, rdx
shr rcx, 1
add rcx, rdx
shr rcx, 0xc
mov qword [rsp + 0x38], rcx
mov rcx, qword [rsp + 0x68]
mov r13, qword [rcx + rax*8 + 0x10]
mov al, byte [rcx + rax*8]
imul r13, qword [0x14016aaa8]
sub al, r8b
mov r8, qword [rsp + 0x58]
mov byte [rsp + 0x60], al
lea eax, [r10 + 0x22]
movsxd rcx, eax
movzx r9d, byte [r8 + 0x7318]
mov dword [0x14016aa8c], r10d
mov r10, qword [rsp + 0x78]
mov eax, dword [r10 + rcx*4]
cdq
idiv dword [r8 + rbp*4]
mov dword [r8 + rbp*4], eax
mov eax, dword [0x14016aa8c]
inc eax
mov dword [0x14016aa8c], eax
add eax, 0xe
movzx r8d, word [r13]
movsxd rcx, eax
mov rax, qword [0x14016aa68]
movsxd rdx, dword [r10 + rcx*4]
or rdx, qword [rax + rbp*8]
dec rbp
movzx eax, word [0x14016aa5c]
imul rdx, rax
movzx ecx, r11w
mov r11d, r9d
add qword [r8*8 + 0x8b5], rdx
movsxd rax, dword [0x14016aa8c]
mov rdx, qword [rsp + 0x48]
mov dword [rdx + rax*4], ecx
mov eax, r9d
imul eax, dword [0x14016aab4]
xor edx, edx
cdqe
div qword [0x14016aa60]
mov qword [0x14016aa60], rax
mov r10, qword [rsp + 0x68]
mov eax, 0xffff
add word [rsi], ax
movzx r9d, word [rsi]
mov rax, qword [0x14016aa68]
mov r8, qword [0x14016aa48]
lea rcx, [r9 + 3]
add r9, r9
add rcx, rcx
imul edx, dword [rax + rcx*8], 0x3ea
movzx eax, byte [0x14016aa40]
sub edx, eax
xor edx, dword [r10 + r9*8 + 0x10]
or dword [r12 + r8*4], edx
movzx eax, word [rsi]
movzx eax, word [rsi + rax*2 + 0xc]
sub eax, 0x1868
cdqe
add qword [0x14016aa38], rax
movzx eax, word [rsi]
mov ecx, dword [rbx + rax*4]
cmp ecx, r11d
jge 0x1400019ba
sub r11d, ecx
lea r10, [r15 + rdi*4]
mov r9d, r11d
add edi, r11d
mov r11d, 1
movzx ecx, word [rsi]
movzx eax, word [r13 + rcx*8 + 2]
movzx r8d, byte [rcx + 0xf4f]
sub eax, 0x4a1
cdq
idiv r8d
mov dword [r10], eax
lea r10, [r10 + 4]
movzx eax, word [0x14016aa58]
add ax, r11w
mov word [0x14016aa58], ax
movzx edx, ax
movzx eax, word [rsi]
add edx, 0x19
movzx ecx, word [rsi + rax*8 + 4]
xor ecx, 0x241
or dword [r12 + rdx*4], ecx
sub r9, r11
jne 0x140001963
mov r10, qword [rsp + 0x68]
jmp 0x1400019c0
mov r11d, 1
movzx eax, byte [rsp + 0x38]
cmp dword [r14 + rbp*4], eax
jle 0x140001b02
movzx eax, word [0x14016aa58]
cmp dword [r14 + rbp*4], eax
jge 0x140001b02
movzx ecx, word [rsi]
xor edx, edx
mov rax, qword [rsp + 0x70]
movzx r8d, byte [rcx + rax]
mov eax, 0xa8d
div r8d
mov rcx, qword [rsp + 0x48]
add byte [rbp + 0xf3b], al
movzx r8d, word [rsi]
movzx eax, word [r13 + 2]
add rax, rax
movsxd rdx, dword [rcx + rax*8 + 0x4c]
mov rax, qword [r8*8 + 0x885]
movsxd rcx, edi
sub edi, r11d
or rax, rcx
sub rax, rdx
xor edx, edx
or rax, 0x458
div qword [r10 + r8*8 + 0xf8]
mov qword [r10 + r8*8 + 0xf8], rdx
mov r10d, 0xffff
mov eax, dword [0x14016aa8c]
movzx r8d, word [0x14016aa58]
shl eax, 2
movsxd rcx, eax
movzx eax, word [rsi + rbp*8]
sub rbp, r11
mov edx, dword [r12 + rcx*4]
mov rcx, rbp
and edx, eax
add rcx, rcx
add dword [r15 + r8*4], edx
add word [0x14016aa58], r10w
add dword [0x14016aa8c], r11d
mov rax, qword [0x14016aa50]
movsxd rdx, dword [0x14016aab0]
mov qword [rax + rcx*8], rdx
mov eax, dword [0x14016aaa0]
movsxd rdx, edi
mov dword [r14 + rdx*4], eax
movzx ecx, word [rsi]
mov rax, qword [rsp + 0x78]
movsxd rax, dword [rax + rbp*4]
xor rax, rdx
or qword [rcx*8 + 0x905], rax
movzx ecx, word [rsi]
mov rax, qword [rsp + 0x80]
movzx edx, word [0x14016aa70]
mov r9, qword [rax]
mov rax, qword [0x14016aa68]
mov r8d, dword [rax + rcx*8 + 0xf8]
movzx eax, word [0x14016aa5c]
add r8d, edx
imul r8d, eax
lea eax, [rdi + rdi]
movsxd rcx, eax
movzx eax, word [r13 + rcx*2 + 2]
xor r8d, eax
xor dword [r15 + r9*4], r8d
add word [0x14016aa5c], r10w
movzx ecx, byte [rsp + 0x60]
mov eax, dword [r14 + 0x4960]
mov rbx, qword [rsp + 0x40]
sub eax, ecx
mov rbp, qword [rsp + 0x50]
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
ret