Function at 0x18001c8f0
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, 0xe8
movdqa xmmword [rsp + 0xd0], xmm8
movdqa xmmword [rsp + 0xc0], xmm7
movaps xmmword [rsp + 0xb0], xmm6
mov rdi, qword [r8 + 8]
mov r15, qword [r8 + 0x10]
test r15, r15
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], r9
mov qword [rsp + 0x20], r8
je 0x18001c967
lea rbp, [r15 - 1]
mov r10d, r15d
and r10d, 7
movabs rax, 0x100000001b3
cmp rbp, 7
jae 0x18001c976
movabs rsi, 0xcbf29ce484222325
mov rcx, rdi
jmp 0x18001c9f1
movabs r13, 0xaf64724c8602eb6e
jmp 0x18001ca22
mov rbx, r15
and rbx, 0xfffffffffffffff8
movabs rsi, 0xcbf29ce484222325
mov rcx, rdi
nop word [rax + rax]
movzx ebp, byte [rcx]
xor rbp, rsi
imul rbp, rax
movzx esi, byte [rcx + 1]
xor rsi, rbp
imul rsi, rax
movzx ebp, byte [rcx + 2]
xor rbp, rsi
imul rbp, rax
movzx esi, byte [rcx + 3]
xor rsi, rbp
imul rsi, rax
movzx ebp, byte [rcx + 4]
xor rbp, rsi
imul rbp, rax
movzx esi, byte [rcx + 5]
xor rsi, rbp
imul rsi, rax
movzx ebp, byte [rcx + 6]
xor rbp, rsi
imul rbp, rax
movzx esi, byte [rcx + 7]
add rcx, 8
xor rsi, rbp
imul rsi, rax
add rbx, 0xfffffffffffffff8
jne 0x18001c990
mov r13, rsi
test r10, r10
je 0x18001ca17
xor ebp, ebp
nop dword [rax + rax]
movzx r13d, byte [rcx + rbp]
xor r13, rsi
imul r13, rax
inc rbp
mov rsi, r13
cmp r10, rbp
jne 0x18001ca00
xor r13, 0xff
imul r13, rax
mov rbp, qword [rdx]
mov qword [rsp + 0x40], rdx
mov rcx, qword [rdx + 0x18]
mov rax, r13
shr rax, 0x39
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm6, xmm0, 0
mov qword [rsp + 0x48], rcx
lea r14, [rcx - 0x58]
xor eax, eax
mov qword [rsp + 0x38], rax
pcmpeqd xmm8, xmm8
mov rsi, r13
and rsi, rbp
mov rax, qword [rsp + 0x48]
movdqu xmm7, xmmword [rax + rsi]
movdqa xmm0, xmm6
pcmpeqb xmm0, xmm7
pmovmskb ebx, xmm0
test ebx, ebx
jne 0x18001cabc
pcmpeqb xmm7, xmm8
pmovmskb eax, xmm7
test eax, eax
jne 0x18001cb95
mov rax, qword [rsp + 0x38]
add rsi, rax
add rsi, 0x10
add rax, 0x10
mov qword [rsp + 0x38], rax
jmp 0x18001ca5f
lea eax, [rbx - 1]
and eax, ebx
mov ebx, eax
test ax, ax
je 0x18001ca7c
bsf ax, bx
movzx eax, ax
add rax, rsi
and rax, rbp
neg rax
imul r12, rax, 0x58
cmp r15, qword [r14 + r12 + 0x10]
jne 0x18001cab0
add r12, r14
mov rdx, qword [r12 + 8]
mov rcx, rdi
mov r8, r15
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x18001cab0
movups xmm0, xmmword [r12 + 0x18]
movups xmm1, xmmword [r12 + 0x28]
movups xmm2, xmmword [r12 + 0x38]
movups xmm3, xmmword [r12 + 0x48]
mov rsi, qword [rsp + 0x30]
movups xmmword [rsi + 0x30], xmm3
movups xmmword [rsi + 0x20], xmm2
movups xmmword [rsi + 0x10], xmm1
movups xmmword [rsi], xmm0
mov rax, qword [rsp + 0x28]
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmm2, xmmword [rax + 0x20]
movups xmm3, xmmword [rax + 0x30]
movups xmmword [r12 + 0x48], xmm3
movups xmmword [r12 + 0x38], xmm2
movups xmmword [r12 + 0x28], xmm1
movups xmmword [r12 + 0x18], xmm0
mov rax, qword [rsp + 0x20]
mov rdx, qword [rax]
test rdx, rdx
je 0x18001cb65
mov r8, rdx
not r8
shr r8, 0x3f
mov rcx, rdi
call fcn.1800035f0
mov rax, rsi
movaps xmm6, xmmword [rsp + 0xb0]
movaps xmm7, xmmword [rsp + 0xc0]
movaps xmm8, xmmword [rsp + 0xd0]
add rsp, 0xe8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, qword [rsp + 0x20]
mov rax, qword [rcx + 0x10]
mov qword [rsp + 0x60], rax
movups xmm0, xmmword [rcx]
movaps xmmword [rsp + 0x50], xmm0
mov rax, qword [rsp + 0x28]
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmm2, xmmword [rax + 0x20]
movups xmm3, xmmword [rax + 0x30]
movups xmmword [rsp + 0x68], xmm0
movups xmmword [rsp + 0x78], xmm1
movups xmmword [rsp + 0x88], xmm2
movups xmmword [rsp + 0x98], xmm3
lea r8, [rsp + 0x50]
mov rcx, qword [rsp + 0x40]
mov rdx, r13
mov r9, rcx
call fcn.18002c260
mov rsi, qword [rsp + 0x30]
mov qword [rsi + 0x38], 6
jmp 0x18001cb65