Function at 0x14001b6c0
Capabilities:
Encode data using xor

Disassembly:
push rbx
push r15
sub rsp, 0xb8
mov r15, r9
mov r10, r8
mov r11, rdx
mov rbx, rcx
cmp rdx, 0x10
ja 0x14001b877
cmp rdx, 8
jbe 0x14001b744
mov r8, qword [rcx]
mov rcx, qword [rdx + rcx - 8]
xor rcx, qword [r10 + 0x30]
xor rcx, qword [r10 + 0x28]
xor r8, qword [r10 + 0x20]
mov rax, rcx
xor r8, qword [r10 + 0x18]
mul r8
bswap r8
add rcx, r8
xor rax, rdx
add rax, rcx
add rax, r11
mov rcx, rax
shr rcx, 0x25
xor rcx, rax
movabs rax, 0x165667919e3779f9
imul rcx, rax
mov r8, rcx
shr r8, 0x20
xor r8, rcx
mov rax, r8
add rsp, 0xb8
pop r15
pop rbx
ret
cmp r11, 4
jb 0x14001b7aa
mov eax, dword [rdx + rbx - 4]
mov ecx, dword [rcx]
shl rcx, 0x20
add rcx, rax
xor rcx, qword [r8 + 0x10]
xor rcx, qword [r8 + 8]
mov rdx, rcx
mov rax, rcx
rol rax, 0x18
rol rdx, 0x31
xor rdx, rax
xor rdx, rcx
movabs rcx, 0x9fb21c651e98df25
imul rdx, rcx
mov rax, rdx
shr rax, 0x23
add rax, r11
xor rax, rdx
imul rax, rcx
mov r8, rax
shr r8, 0x1c
xor r8, rax
mov rax, r8
add rsp, 0xb8
pop r15
pop rbx
ret
test r11, r11
je 0x14001b827
mov rax, r11
shr rax, 1
movzx ecx, byte [rax + rcx]
movzx eax, byte [rbx]
shl rcx, 8
or rcx, rax
movzx eax, byte [rdx + rbx - 1]
shl rcx, 8
or rcx, r11
and ecx, 0xffffff
shl rcx, 8
or rcx, rax
mov eax, dword [r8 + 4]
xor rcx, rax
mov eax, dword [r8]
xor rcx, rax
movabs rax, 0xc2b2ae3d27d4eb4f
imul rcx, rax
mov rax, rcx
shr rax, 0x1d
xor rax, rcx
movabs rcx, 0x165667b19e3779f9
imul rax, rcx
mov r8, rax
shr r8, 0x20
xor r8, rax
mov rax, r8
add rsp, 0xb8
pop r15
pop rbx
ret
mov rax, qword [r8 + 0x40]
xor rax, qword [r8 + 0x38]
mov rcx, rax
shr rcx, 0x21
xor rcx, rax
movabs rax, 0xc2b2ae3d27d4eb4f
imul rcx, rax
mov rdx, rcx
shr rdx, 0x1d
xor rdx, rcx
movabs rcx, 0x165667b19e3779f9
imul rdx, rcx
mov r8, rdx
shr r8, 0x20
xor r8, rdx
mov rax, r8
add rsp, 0xb8
pop r15
pop rbx
ret
mov qword [rsp + 0xa0], rdi
mov qword [rsp + 0x98], r12
cmp r11, 0x80
ja 0x14001b9b0
movabs r12, 0x9e3779b185ebca87
mov rdi, r11
imul rdi, r12
cmp r11, 0x20
jbe 0x14001b969
cmp r11, 0x40
jbe 0x14001b92f
cmp r11, 0x60
jbe 0x14001b8f5
mov rax, qword [r8 + 0x68]
xor rax, qword [rcx + 0x38]
mov rcx, qword [r8 + 0x60]
xor rcx, qword [rbx + 0x30]
mul rcx
mov rcx, qword [r10 + 0x70]
xor rcx, qword [r11 + rbx - 0x40]
mov r8, rax
mov rax, qword [r10 + 0x78]
mov r9, rdx
xor rax, qword [r11 + rbx - 0x38]
xor r9, r8
mul rcx
add rdi, r9
xor rdx, rax
add rdi, rdx
mov rax, qword [r10 + 0x48]
xor rax, qword [rbx + 0x28]
mov rcx, qword [r10 + 0x40]
xor rcx, qword [rbx + 0x20]
mul rcx
mov rcx, qword [r10 + 0x50]
xor rcx, qword [r11 + rbx - 0x30]
mov r8, rax
mov rax, qword [r10 + 0x58]
mov r9, rdx
xor rax, qword [r11 + rbx - 0x28]
xor r9, r8
mul rcx
add rdi, r9
xor rdx, rax
add rdi, rdx
mov rax, qword [r10 + 0x28]
xor rax, qword [rbx + 0x18]
mov rcx, qword [r10 + 0x20]
xor rcx, qword [rbx + 0x10]
mul rcx
mov rcx, qword [r10 + 0x30]
xor rcx, qword [r11 + rbx - 0x20]
mov r8, rax
mov rax, qword [r10 + 0x38]
mov r9, rdx
xor rax, qword [r11 + rbx - 0x18]
xor r9, r8
mul rcx
add rdi, r9
xor rdx, rax
add rdi, rdx
mov rax, qword [r10 + 8]
xor rax, qword [rbx + 8]
mov rcx, qword [r10]
xor rcx, qword [rbx]
mul rcx
mov rcx, qword [r10 + 0x10]
xor rcx, qword [r11 + rbx - 0x10]
mov r8, rax
mov rax, qword [r10 + 0x18]
mov r9, rdx
xor rax, qword [r11 + rbx - 8]
xor r9, r8
mul rcx
xor rax, rdx
add rax, rdi
add r9, rax
mov rcx, r9
shr rcx, 0x25
xor rcx, r9
jmp 0x14001be8a
cmp r11, 0xf0
ja 0x14001b9ca
xor edi, edi
mov qword [rsp + 0x20], rdi
call fcn.14001a6f0
jmp 0x14001bea2
mov qword [rsp + 0xb0], rbp
lea r8, [r9 - 0x40]
mov eax, 0xc2b2ae3d
shr r8, 3
mov qword [rsp + 0x30], rax
mov rbp, r8
movabs rax, 0xc2b2ae3d27d4eb4f
shl rbp, 6
mov qword [rsp + 0x40], rax
xor edi, edi
movabs rax, 0x85ebca77c2b2ae63
mov qword [rsp + 0xa8], rsi
mov qword [rsp + 0x50], rax
movabs r12, 0x9e3779b185ebca87
mov eax, 0x85ebca77
mov qword [rsp + 0x90], r14
mov qword [rsp + 0x58], rax
movabs rcx, 0x165667b19e3779f9
movabs rax, 0x27d4eb2f165667c5
movaps xmmword [rsp + 0x80], xmm6
mov qword [rsp + 0x60], rax
mov r14d, edi
mov eax, 0x9e3779b1
mov qword [rsp + 0x38], r12
movdqa xmm4, xmmword [rsp + 0x30]
mov qword [rsp + 0x68], rax
lea rax, [rdx - 1]
movdqa xmm6, xmmword [rsp + 0x60]
xor edx, edx
div rbp
mov qword [rsp + 0x48], rcx
movdqa xmm5, xmmword [rsp + 0x40]
mov rsi, rax
movaps xmmword [rsp + 0x70], xmm7
movdqa xmm7, xmmword [rsp + 0x50]
test rax, rax
je 0x14001bc36
mov r9, rbx
nop dword [rax]
mov rdx, rdi
test r8, r8
je 0x14001bb6f
lea rcx, [r10 + 0x20]
lea rax, [r9 + 0x10]
nop dword [rax]
nop dword [rax + rax]
prefetcht0 byte [rax + 0x170]
movdqu xmm2, xmmword [rax - 0x10]
inc rdx
lea rax, [rax + 0x40]
movdqu xmm0, xmmword [rcx - 0x20]
lea rcx, [rcx + 8]
xorps xmm0, xmm2
pshufd xmm1, xmm0, 0x31
pmuludq xmm1, xmm0
pshufd xmm0, xmm2, 0x4e
paddq xmm0, xmm4
movdqu xmm2, xmmword [rcx - 0x18]
movdqa xmm4, xmm1
paddq xmm4, xmm0
movdqu xmm0, xmmword [rax - 0x40]
xorps xmm2, xmm0
pshufd xmm0, xmm0, 0x4e
pshufd xmm1, xmm2, 0x31
paddq xmm5, xmm0
pmuludq xmm1, xmm2
movdqu xmm0, xmmword [rcx - 8]
paddq xmm5, xmm1
movdqu xmm1, xmmword [rax - 0x30]
movdqa xmm2, xmm1
xorps xmm2, xmm0
pshufd xmm0, xmm1, 0x4e
pshufd xmm1, xmm2, 0x31
paddq xmm7, xmm0
pmuludq xmm1, xmm2
movdqu xmm0, xmmword [rcx + 8]
paddq xmm7, xmm1
movdqu xmm1, xmmword [rax - 0x20]
xorps xmm0, xmm1
pshufd xmm2, xmm0, 0x31
pmuludq xmm2, xmm0
pshufd xmm0, xmm1, 0x4e
paddq xmm6, xmm0
paddq xmm6, xmm2
cmp rdx, r8
jb 0x14001bac0
movdqa xmm2, xmmword [0x1400bb970]
movdqa xmm1, xmm4
movdqu xmm0, xmmword [r15 + r10 - 0x40]
inc r14
add r9, rbp
psrlq xmm1, 0x2f
xorps xmm1, xmm4
xorps xmm1, xmm0
pshufd xmm4, xmm1, 0x31
pmuludq xmm1, xmm2
pmuludq xmm4, xmm2
movdqu xmm0, xmmword [r15 + r10 - 0x30]
psllq xmm4, 0x20
paddq xmm4, xmm1
movdqa xmm1, xmm5
psrlq xmm1, 0x2f
xorps xmm1, xmm5
xorps xmm1, xmm0
pshufd xmm5, xmm1, 0x31
pmuludq xmm1, xmm2
pmuludq xmm5, xmm2
movdqu xmm0, xmmword [r15 + r10 - 0x20]
psllq xmm5, 0x20
paddq xmm5, xmm1
movdqa xmm1, xmm7
psrlq xmm1, 0x2f
xorps xmm1, xmm7
xorps xmm1, xmm0
movdqa xmm0, xmm6
psrlq xmm0, 0x2f
pshufd xmm7, xmm1, 0x31
xorps xmm0, xmm6
pmuludq xmm7, xmm2
pmuludq xmm1, xmm2
movdqu xmm6, xmmword [r15 + r10 - 0x10]
psllq xmm7, 0x20
xorps xmm6, xmm0
pshufd xmm0, xmm6, 0x31
paddq xmm7, xmm1
pmuludq xmm0, xmm2
pmuludq xmm6, xmm2
psllq xmm0, 0x20
paddq xmm6, xmm0
cmp r14, rsi
jb 0x14001baa0
mov r14, qword [rsp + 0x90]
mov rdx, r11
imul rsi, rbp
mov rbp, qword [rsp + 0xb0]
sub rdx, rsi
dec rdx
shr rdx, 6
test rdx, rdx
je 0x14001bd1f
lea rax, [rbx + 0x10]
add rax, rsi
lea rcx, [r10 + 0x20]
nop dword [rax + rax]
prefetcht0 byte [rax + 0x170]
movdqu xmm2, xmmword [rax - 0x10]
inc rdi
lea rax, [rax + 0x40]
movdqu xmm0, xmmword [rcx - 0x20]
lea rcx, [rcx + 8]
xorps xmm0, xmm2
pshufd xmm1, xmm0, 0x31
pmuludq xmm1, xmm0
pshufd xmm0, xmm2, 0x4e
paddq xmm0, xmm4
movdqu xmm2, xmmword [rcx - 0x18]
movdqa xmm4, xmm1
paddq xmm4, xmm0
movdqu xmm0, xmmword [rax - 0x40]
xorps xmm2, xmm0
pshufd xmm0, xmm0, 0x4e
pshufd xmm1, xmm2, 0x31
paddq xmm5, xmm0
pmuludq xmm1, xmm2
movdqu xmm0, xmmword [rcx - 8]
paddq xmm5, xmm1
movdqu xmm1, xmmword [rax - 0x30]
movdqa xmm2, xmm1
xorps xmm2, xmm0
pshufd xmm0, xmm1, 0x4e
pshufd xmm1, xmm2, 0x31
paddq xmm7, xmm0
pmuludq xmm1, xmm2
movdqu xmm0, xmmword [rcx + 8]
paddq xmm7, xmm1
movdqu xmm1, xmmword [rax - 0x20]
xorps xmm0, xmm1
pshufd xmm2, xmm0, 0x31
pmuludq xmm2, xmm0
pshufd xmm0, xmm1, 0x4e
paddq xmm6, xmm0
paddq xmm6, xmm2
cmp rdi, rdx
jb 0x14001bc70
movdqu xmm2, xmmword [r11 + rbx - 0x40]
mov rax, qword [r10 + 0x13]
movdqu xmm0, xmmword [r15 + r10 - 0x47]
mov rdx, qword [r10 + 0xb]
movdqa xmm1, xmm2
xorps xmm1, xmm0
pshufd xmm0, xmm2, 0x4e
paddq xmm0, xmm4
pshufd xmm3, xmm1, 0x31
pmuludq xmm3, xmm1
movdqu xmm1, xmmword [r15 + r10 - 0x37]
paddq xmm3, xmm0
movdqu xmm0, xmmword [r11 + rbx - 0x30]
xorps xmm1, xmm0
pshufd xmm4, xmm0, 0x4e
pshufd xmm0, xmm1, 0x31
paddq xmm4, xmm5
pmuludq xmm0, xmm1
movdqu xmm1, xmmword [r15 + r10 - 0x27]
paddq xmm4, xmm0
movdqu xmm0, xmmword [r11 + rbx - 0x20]
xorps xmm1, xmm0
pshufd xmm5, xmm0, 0x4e
pshufd xmm0, xmm1, 0x31
paddq xmm5, xmm7
pmuludq xmm0, xmm1
movdqu xmm1, xmmword [r11 + rbx - 0x10]
imul r11, r12
paddq xmm5, xmm0
movdqu xmm0, xmmword [r15 + r10 - 0x17]
xorps xmm0, xmm1
pshufd xmm2, xmm0, 0x31
pmuludq xmm2, xmm0
pshufd xmm0, xmm1, 0x4e
paddq xmm6, xmm0
movdqa xmm0, xmm3
psrldq xmm0, 8
movq rcx, xmm0
movdqa xmm0, xmm4
xor rax, rcx
psrldq xmm0, 8
movq rcx, xmm3
paddq xmm6, xmm2
xor rdx, rcx
movq rcx, xmm0
mul rdx
movdqa xmm0, xmm5
psrldq xmm0, 8
xor rdx, rax
mov rax, qword [r10 + 0x23]
add r11, rdx
xor rax, rcx
mov rdx, qword [r10 + 0x1b]
movq rcx, xmm4
xor rdx, rcx
movq rcx, xmm0
mul rdx
movdqa xmm0, xmm6
psrldq xmm0, 8
xor rdx, rax
mov rax, qword [r10 + 0x33]
add r11, rdx
xor rax, rcx
mov rdx, qword [r10 + 0x2b]
movq rcx, xmm5
xor rdx, rcx
movq rcx, xmm0
mul rdx
xor rdx, rax
mov rax, qword [r10 + 0x43]
add r11, rdx
xor rax, rcx
mov rdx, qword [r10 + 0x3b]
movq rcx, xmm6
xor rdx, rcx
mul rdx
xor rdx, rax
add r11, rdx
mov rcx, r11
shr rcx, 0x25
xor rcx, r11
movaps xmm7, xmmword [rsp + 0x70]
movaps xmm6, xmmword [rsp + 0x80]
mov rsi, qword [rsp + 0xa8]
movabs rax, 0x165667919e3779f9
imul rcx, rax
mov rax, rcx
shr rax, 0x20
xor rax, rcx
mov rdi, qword [rsp + 0xa0]
mov r12, qword [rsp + 0x98]
add rsp, 0xb8
pop r15
pop rbx
ret