Function at 0x140031660
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
movaps xmmword [rsp + 0x70], xmm6
mov rdi, r8
mov rbx, rdx
mov r15, rcx
test r8, r8
je 0x1400316b1
lea rdx, [rdi - 1]
mov eax, edi
and eax, 7
movabs rcx, 0x100000001b3
cmp rdx, 7
jae 0x1400316c0
movabs r11, 0xcbf29ce484222325
mov rdx, rbx
jmp 0x140031749
movabs r12, 0xcbf29ce484222325
jmp 0x140031777
mov r8, rdi
and r8, 0xfffffffffffffff8
movabs r11, 0xcbf29ce484222325
mov rdx, rbx
nop word cs:[rax + rax]
movzx r10d, byte [rdx]
xor r10, r11
imul r10, rcx
movzx r11d, byte [rdx + 1]
xor r11, r10
imul r11, rcx
movzx r10d, byte [rdx + 2]
xor r10, r11
imul r10, rcx
movzx r11d, byte [rdx + 3]
xor r11, r10
imul r11, rcx
movzx r10d, byte [rdx + 4]
xor r10, r11
imul r10, rcx
movzx r11d, byte [rdx + 5]
xor r11, r10
imul r11, rcx
movzx r10d, byte [rdx + 6]
xor r10, r11
imul r10, rcx
movzx r11d, byte [rdx + 7]
add rdx, 8
xor r11, r10
imul r11, rcx
add r8, 0xfffffffffffffff8
jne 0x1400316e0
mov r12, r11
test rax, rax
je 0x140031777
xor r8d, r8d
nop word cs:[rax + rax]
movzx r12d, byte [rdx + r8]
xor r12, r11
imul r12, rcx
inc r8
mov r11, r12
cmp rax, r8
jne 0x140031760
mov rax, qword [r15 + 0x10]
test rax, rax
je 0x140031898
mov qword [rsp + 0x28], r9
mov qword [rsp + 0x20], rax
mov r14, qword [r15 + 8]
xor esi, esi
mov rbp, r14
jmp 0x1400317b7
mov rax, qword [rbp + 0x58]
test rax, rax
je 0x140031921
imul rbp, rax, 0x68
add rbp, r14
mov rsi, rax
mov r13, qword [rbp + 0x50]
cmp r12, r13
jne 0x1400317dd
cmp qword [rbp + 0x40], rdi
jne 0x1400317dd
mov rdx, qword [rbp + 0x48]
mov rcx, rbx
mov r8, rdi
call fcn.140068ef0
test eax, eax
je 0x140031a0d
cmp r12, r13
jb 0x1400317a0
mov rax, qword [rbp + 0x60]
test rax, rax
jne 0x1400317ad
mov rax, qword [r15]
mov r13, qword [rsp + 0x20]
cmp r13, rax
jae 0x140031a7e
xorps xmm0, xmm0
movaps xmmword [rsp + 0x60], xmm0
movaps xmmword [rsp + 0x50], xmm0
mov rax, qword [rsp + 0x28]
movups xmm1, xmmword [rax]
movups xmm2, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x30], xmm1
movaps xmmword [rsp + 0x40], xmm2
lea rax, [r13 + 1]
mov rbp, rax
mov qword [r15 + 0x10], rax
imul rax, r13, 0x68
movaps xmm1, xmmword [rsp + 0x30]
movaps xmm2, xmmword [rsp + 0x40]
movaps xmm3, xmmword [rsp + 0x50]
movaps xmm4, xmmword [rsp + 0x60]
movups xmmword [r14 + rax + 0x30], xmm4
movups xmmword [r14 + rax + 0x20], xmm3
movups xmmword [r14 + rax + 0x10], xmm2
movups xmmword [r14 + rax], xmm1
lea r15, [r14 + rax + 0x20]
mov qword [r14 + rax + 0x40], rdi
mov qword [r14 + rax + 0x48], 0
mov qword [r14 + rax + 0x50], r12
movups xmmword [r14 + rax + 0x58], xmm0
cmp rdi, 0x21
jae 0x140031bd0
mov rcx, r15
mov rdx, rbx
mov r8, rdi
call fcn.1400684b0
mov qword [r15 + 0x28], r15
jmp 0x140031c08
xorps xmm6, xmm6
movaps xmmword [rsp + 0x60], xmm6
movaps xmmword [rsp + 0x50], xmm6
movups xmm0, xmmword [r9]
movups xmm1, xmmword [r9 + 0x10]
movaps xmmword [rsp + 0x40], xmm1
movaps xmmword [rsp + 0x30], xmm0
cmp qword [r15], 0
jne 0x1400318c6
mov rcx, r15
call fcn.140032b10
mov r14, qword [r15 + 8]
movaps xmm0, xmmword [rsp + 0x30]
movaps xmm1, xmmword [rsp + 0x40]
movaps xmm2, xmmword [rsp + 0x50]
movaps xmm3, xmmword [rsp + 0x60]
movups xmmword [r14 + 0x30], xmm3
movups xmmword [r14 + 0x20], xmm2
movups xmmword [r14 + 0x10], xmm1
movups xmmword [r14], xmm0
mov qword [r14 + 0x40], rdi
mov qword [r14 + 0x48], 0
mov qword [r14 + 0x50], r12
movups xmmword [r14 + 0x58], xmm6
mov qword [r15 + 0x10], 1
cmp rdi, 0x21
jae 0x1400319ce
lea rsi, [r14 + 0x20]
jmp 0x1400319f4
mov rax, qword [r15]
mov r13, qword [rsp + 0x20]
cmp r13, rax
jae 0x140031b27
xorps xmm0, xmm0
movaps xmmword [rsp + 0x60], xmm0
movaps xmmword [rsp + 0x50], xmm0
mov rax, qword [rsp + 0x28]
movups xmm1, xmmword [rax]
movups xmm2, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x30], xmm1
movaps xmmword [rsp + 0x40], xmm2
lea rax, [r13 + 1]
mov rbp, rax
mov qword [r15 + 0x10], rax
imul rax, r13, 0x68
movaps xmm1, xmmword [rsp + 0x30]
movaps xmm2, xmmword [rsp + 0x40]
movaps xmm3, xmmword [rsp + 0x50]
movaps xmm4, xmmword [rsp + 0x60]
movups xmmword [r14 + rax + 0x30], xmm4
movups xmmword [r14 + rax + 0x20], xmm3
movups xmmword [r14 + rax + 0x10], xmm2
movups xmmword [r14 + rax], xmm1
lea r15, [r14 + rax + 0x20]
mov qword [r14 + rax + 0x40], rdi
mov qword [r14 + rax + 0x48], 0
mov qword [r14 + rax + 0x50], r12
movups xmmword [r14 + rax + 0x58], xmm0
cmp rdi, 0x21
jae 0x140031ca6
mov rcx, r15
mov rdx, rbx
mov r8, rdi
call fcn.1400684b0
test rdi, rdi
js 0x140031dee
movzx eax, byte [0x140090df8]
xor ecx, ecx
mov rdx, rdi
call fcn.14004a280
test rax, rax
je 0x140031df8
mov rsi, rax
mov rcx, rsi
mov rdx, rbx
mov r8, rdi
call fcn.1400684b0
mov qword [r14 + 0x48], rsi
xor esi, esi
jmp 0x140031dd2
movzx eax, byte [rbp]
cmp eax, 5
ja 0x140031d83
mov ecx, 0x1b
bt ecx, eax
jb 0x140031dbe
cmp eax, 2
je 0x140031da1
mov rbx, qword [rbp + 0x18]
test rbx, rbx
test ebx, ebx
xorps xmm6, xmm6
movaps xmmword [rsp + 0x60], xmm6
movaps xmmword [rsp + 0x50], xmm6
mov rax, qword [rsp + 0x28]
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x30], xmm0
and al, 0x30
xorps xmm6, xmm6
movaps xmmword [rsp + 0x60], xmm6
movaps xmmword [rsp + 0x50], xmm6
mov rax, qword [rsp + 0x28]
and al, 0x28
test rdi, rdi
js 0x140031dee
movzx eax, byte [0x140090df8]
xor ecx, ecx
test rdi, rdi
js 0x140031dee
movzx eax, byte [0x140090df8]
xor ecx, ecx
mov rdx, rdi
call fcn.14004a280
test rax, rax
je 0x140031df8
mov r12, rax
mov rcx, rax
mov rdx, rbx
mov rbx, qword [rbp + 0x18]
test rbx, rbx
je 0x140031da1
mov rdi, qword [rbp + 0x10]
mov rcx, rdi
call fcn.140033bb0
add rdi, 0x20
dec rbx
jne 0x140031d90