Function at 0x140001650
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov dword [rax + 0x20], r9d
mov qword [rax + 0x18], r8
push rsi
push rdi
push r12
push r13
push r14
push r15
mov r10, qword [rcx]
mov rbx, rcx
mov r11, qword [0x1402c7648]
movabs rax, 0xc9714fbcda3ac11
movsxd rdi, dword [0x1402c75c0]
mov ecx, 0x659
mov r14, qword [rsp + 0x60]
add rdi, rdx
movsxd rbp, dword [0x1402c765c]
mov r9, qword [0x1402c75f8]
movzx r12d, word [0x1402c7610]
movzx r15d, word [r14 + r10*8]
add r10, r10
sub r12d, dword [0x1402c7644]
mul r11
mov rax, r11
sub rax, rdx
shr rax, 1
add rax, rdx
mov rdx, qword [0x1402c7630]
shr rax, 9
imul rax, rax, 0x3d0
sub r11, rax
mov rax, qword [rsp + 0x78]
sub ecx, dword [rax + 0x1ebc]
mov rax, qword [rsp + 0x58]
movsxd r8, ecx
movzx r13d, byte [rax + 0x907]
mov rax, qword [0x1402c75b8]
or r13, qword [0x1402c7650]
movsxd rsi, dword [rax + r10*8]
movsxd r10, dword [0x1402c763c]
lea eax, [r10 + r10*2]
movsxd rcx, eax
mov rax, rbp
xor rax, 0x56d
mov qword [rsp + 0x78], rax
movsxd rax, dword [0x1402c75c4]
imul rsi, qword [rdx + rcx*8]
cmp qword [rdx + r9*8], rax
jbe 0x140001830
inc ebp
mov dword [0x1402c765c], ebp
movsxd rax, dword [r11]
movzx r8d, word [r8 + rax*2]
mov rax, qword [rsp + 0x70]
movzx ecx, word [rax + 0x1b72]
imul eax, ecx, 0x1130
add eax, ebp
cdq
idiv r8d
movsxd rax, edx
xor r9, rax
mov rax, qword [rsp + 0x78]
mov qword [0x1402c75f8], r9
movzx ecx, word [rax + 0x1252]
and rcx, r10
inc r10d
xor qword [0x1402c7600], rcx
mov dword [0x1402c763c], r10d
mov rax, qword [rbx]
movsxd r8, dword [r11]
mov edx, dword [r13 + rax*8]
mov eax, 0x5ef666d9
add edx, r10d
imul edx
mov ecx, edx
sar ecx, 0xb
mov eax, ecx
shr eax, 0x1f
add ecx, eax
mov eax, 0x8f2179f5
imul ecx
add edx, ecx
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add edx, eax
imul eax, edx, 0x1c9e
xor edx, edx
sub ecx, eax
movsxd rax, ecx
sub rax, qword [r8*8 + 0xf51]
mov qword [r8*8 + 0xf51], rax
mov eax, 0x82
sub eax, dword [0x1402c7644]
mov dword [0x1402c7644], eax
mov r8, qword [rbx]
movsxd rcx, r12d
movzx eax, word [r14 + r8*2]
sub rax, qword [rbx + r8*8]
div rcx
shl r8, 5
mov rcx, rax
sub rbx, 8
mov rax, qword [0x1402c7630]
mov qword [r8 + rax + 0x90], rcx
mov ebp, dword [0x1402c765c]
mov r9, qword [0x1402c75f8]
movzx r10d, word [r14 + r9*2]
dec r9
mov qword [0x1402c75f8], r9
cmp r10d, dword [rsi + 0xaf0]
jle 0x140001946
mov r14, qword [rsp + 0x48]
lea r9, [r10*8 + 0xf51]
movsxd rcx, ebp
mov eax, 0x67
cdq
idiv r10d
movsxd rax, edx
and rax, qword [0x1402c75e0]
xor qword [r15 + rcx*8], rax
inc qword [0x1402c75e0]
movsxd rdx, dword [r11]
movzx eax, word [0x1402c7638]
mov ecx, dword [r11 + rax*4 + 0x7c]
xor ecx, r10d
sub ecx, r10d
xor dword [rdx*4 + 0xd33], ecx
xor edx, edx
mov eax, dword [r11]
add eax, 8
lea eax, [rax + rax*2]
movsxd r8, eax
mov rax, qword [rbx]
movzx eax, word [rax + rax + 0xd12]
imul eax, dword [0x1402c7614]
cdqe
sub rax, qword [r9]
lea r9, [r9 + 8]
div qword [0x1402c75e8]
xor dword [rsi + r8*4], eax
mov rax, qword [0x1402c75f8]
movsxd rdx, dword [0x1402c765c]
mov cl, byte [rax + rax + 0xd12]
mov eax, 0x1f0e
xor byte [rdx + r14], cl
xor edx, edx
inc qword [0x1402c75f8]
and dword [0x1402c7644], 0xde4
mov ebp, dword [0x1402c765c]
inc ebp
mov dword [0x1402c765c], ebp
mov rcx, qword [rbx]
add rcx, 9
shl rcx, 5
div qword [rcx + r15]
movsxd rcx, r10d
inc r10d
mov rax, rdx
xor edx, edx
div rcx
sub rdx, qword [0x1402c75d0]
mov qword [0x1402c75d0], rdx
cmp r10d, dword [rsi + 0xaf0]
jg 0x140001859
mov r14, qword [rsp + 0x60]
mov ecx, dword [r11]
xor edx, edx
lea eax, [rcx*4 + 6]
cdqe
mov rax, qword [r15 + rax*8]
div qword [0x1402c75f0]
mov qword [0x1402c75f0], rdx
dec qword [rbx]
mov rax, qword [0x1402c75f8]
movsxd r9, dword [0x1402c765c]
movsxd rcx, dword [rax*4 + 0xd87]
cmp qword [0x1402c75e8], rcx
jbe 0x1400019a5
mov eax, dword [r11 - 4]
movzx edx, word [0x1402c7638]
add eax, 0x17
movsxd rcx, eax
movzx eax, word [r14 + rcx*2]
cmp word [rdi + rdx*8 + 0xf], ax
jb 0x1400019b5
mov eax, dword [r11 - 4]
add eax, 0x20
movsxd rcx, eax
cmp qword [rbx + rcx*8], r9
jne 0x1400019ea
mov rax, qword [0x1402c7648]
xor rax, 0xb25
or qword [0x1402c7608], rax
mov r8, qword [rbx]
mov eax, dword [0x1402c75c8]
sub eax, r9d
cdq
movzx ecx, word [rdi + r8*2 - 1]
idiv ecx
mov word [rdi + r8*2 - 1], dx
dec dword [0x1402c765c]
mov eax, dword [rsp + 0x50]
mov rbx, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x40]
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
ret