Function at 0x14018e5c0
Capabilities:
Hash data using fnv

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x48
mov rbx, r8
mov rsi, rdx
mov rdx, rcx
cmp rsi, r8
je 0x14018e3bf
mov r15, qword [rcx + 8]
mov r8, qword [rcx + 0x18]
mov qword [rsp + 0xa8], r8
lea rbp, [rcx + 8]
mov qword [rsp + 0x28], rbp
mov rax, qword [rsi + 8]
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], rsi
mov rax, qword [rsi + 8]
mov qword [rsp + 0xa0], rax
movzx ecx, byte [rsi + 0x10]
movabs rax, 0xcbf29ce484222325
xor rcx, rax
movabs r9, 0x100000001b3
imul rcx, r9
movzx eax, byte [rsi + 0x11]
xor rcx, rax
imul rcx, r9
movzx eax, byte [rsi + 0x12]
xor rcx, rax
imul rcx, r9
movzx eax, byte [rsi + 0x13]
xor rcx, rax
imul rcx, r9
movzx eax, byte [rsi + 0x14]
xor rcx, rax
imul rcx, r9
movzx eax, byte [rsi + 0x15]
xor rcx, rax
imul rcx, r9
movzx eax, byte [rsi + 0x16]
xor rcx, rax
imul rcx, r9
movzx eax, byte [rsi + 0x17]
xor rcx, rax
imul rcx, r9
mov rax, qword [rdx + 0x30]
and rax, rcx
mov r12, rax
shl r12, 4
add r12, r8
add rax, rax
inc rax
lea rax, [r8 + rax*8]
mov qword [rsp + 0x98], rax
cmp qword [r12], rsi
sete r13b
mov r14, qword [rax]
nop dword [rax]
cmp rsi, r14
sete dil
mov rcx, rsi
mov rsi, qword [rsi]
mov qword [rsp + 0x38], rsi
mov edx, SafeArrayPutElement
call fcn.140096c70
dec qword [rbp + 8]
test dil, dil
jne 0x14018e3d3
cmp rsi, rbx
jne 0x14018e380
test r13b, r13b
je 0x14018e3b3
mov qword [r12], rsi
mov rax, qword [rsp + 0x20]
mov qword [rax], rsi
mov qword [rsi + 8], rax
mov rax, rbx
add rsp, 0x48
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov rax, qword [rsp + 0x98]
test r13b, r13b
je 0x14018e3e9
mov qword [r12], r15
mov qword [rax], r15
jmp 0x14018e3f4
mov rcx, qword [rsp + 0xa0]
mov qword [rax], rcx
cmp rsi, rbx
je 0x14018e3b3
movzx ecx, byte [rsi + 0x10]
movabs rax, 0xcbf29ce484222325
xor rcx, rax
movabs rdx, 0x100000001b3
imul rcx, rdx
movzx eax, byte [rsi + 0x11]
xor rcx, rax
imul rcx, rdx
movzx eax, byte [rsi + 0x12]
xor rcx, rax
imul rcx, rdx
movzx eax, byte [rsi + 0x13]
xor rcx, rax
imul rcx, rdx
movzx eax, byte [rsi + 0x14]
xor rcx, rax
imul rcx, rdx
movzx eax, byte [rsi + 0x15]
xor rcx, rax
imul rcx, rdx
movzx eax, byte [rsi + 0x16]
xor rcx, rax
imul rcx, rdx
movzx eax, byte [rsi + 0x17]
xor rcx, rax
imul rcx, rdx
mov rax, qword [rsp + 0x90]
mov rax, qword [rax + 0x30]
and rax, rcx
mov r12, rax
shl r12, 4
mov rcx, qword [rsp + 0xa8]
add r12, rcx
add rax, rax
lea r13, [rcx + rax*8]
mov r14, qword [r13 + 8]
cmp rsi, r14
sete dil
mov rcx, rsi
mov rsi, qword [rsi]
mov qword [rsp + 0x38], rsi
mov edx, SafeArrayPutElement
call fcn.140096c70
dec qword [rbp + 8]
test dil, dil
jne 0x14018e4c1
cmp rsi, rbx
je 0x14018e3af
jmp 0x14018e491
mov qword [r12], r15
mov qword [r13 + 8], r15
jmp 0x14018e3f4
mov qword [rsp + 0x10], rbx
push rdi
sub rsp, 0x20
mov rdi, rcx
mov rcx, qword [rcx + 0x10]
test rcx, rcx
je 0x14018e668
mov rax, qword [rdi + 0x38]
shr rax, 3
cmp rax, rcx
jbe 0x14018e603
mov rdx, qword [rdi + 8]
mov r8, rdx
mov rdx, qword [rdx]
mov rcx, rdi
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
jmp 0x14018e280
mov rcx, qword [rdi + 8]
mov rax, qword [rcx + 8]
mov qword [rax], 0
mov rcx, qword [rcx]
test rcx, rcx
je 0x14018e635
nop word [rax + rax]
mov rbx, qword [rcx]
mov edx, SafeArrayPutElement
call fcn.140096c70
mov rcx, rbx
test rbx, rbx
jne 0x14018e620
mov rax, qword [rdi + 8]
mov qword [rax], rax
mov rcx, qword [rdi + 8]
mov qword [rcx + 8], rcx
mov qword [rdi + 0x10], 0
mov rax, qword [rdi + 8]
mov qword [rsp + 0x30], rax
lea r8, [rsp + 0x30]
mov rdx, qword [rdi + 0x20]
mov rcx, qword [rdi + 0x18]
call fcn.140040500
nop
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret