Function at 0x14031e680
Capabilities:
Hash data using fnv

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
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 r12, rdx
mov rbx, r9
mov r9, r8
mov rbp, r8
sub r9, rdx
movabs r8, 0x2aaaaaaaaaaaaaab
mov rax, r8
imul r9
lea r15, [rbp - 0x18]
mov rax, r8
sar rdx, 2
mov r9, rdx
shr r9, 0x3f
add rdx, r9
mov r9, rbx
sar rdx, 1
lea rcx, [rdx + rdx*2]
lea r14, [r12 + rcx*8]
mov rcx, r15
sub rcx, r12
mov qword [rsp + 0x20], r14
imul rcx
mov rcx, r12
sar rdx, 2
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rdx, 0x28
jle 0x14031e78f
lea rax, [rdx + 1]
sar rax, 3
lea r14, [rax + rax*2]
lea rax, [rax + rax*2]
shl r14, 4
lea rsi, [rax*8]
lea rbp, [rsi + r12]
mov rdx, rbp
lea r8, [r14 + r12]
call fcn.14031e580
mov r10, qword [rsp + 0x20]
mov r9, rbx
mov rcx, r10
mov rdx, r10
sub rcx, rsi
lea r8, [rsi + r10]
call fcn.14031e580
mov rdi, r15
mov rcx, r15
sub rdi, rsi
sub rcx, r14
mov rdx, rdi
mov r9, rbx
mov r8, r15
call fcn.14031e580
mov r14, qword [rsp + 0x20]
mov r9, rbx
mov rdx, r14
mov r8, rdi
mov rcx, rbp
call fcn.14031e580
mov rbp, qword [rsp + 0xa0]
jmp 0x14031e79a
mov r8, r15
mov rdx, r14
call fcn.14031e580
lea rsi, [r14 + 0x18]
mov qword [rsp + 0x28], rsi
cmp r12, r14
jae 0x14031e7ef
nop dword [rax + rax]
lea rdi, [r14 - 0x18]
mov r8, r14
mov rdx, rdi
lea rcx, [rsp + 0xa8]
call fcn.14031f7b0
test al, al
jne 0x14031e7ea
mov r8, rdi
lea rcx, [rsp + 0xa8]
mov rdx, r14
call fcn.14031f7b0
test al, al
jne 0x14031e7ea
mov r14, rdi
cmp r12, rdi
jb 0x14031e7b0
mov qword [rsp + 0x20], r14
cmp rsi, rbp
jae 0x14031e83c
nop dword [rax]
nop dword [rax + rax]
mov r8, r14
lea rcx, [rsp + 0xa8]
mov rdx, rsi
call fcn.14031f7b0
test al, al
jne 0x14031e837
mov r8, rsi
lea rcx, [rsp + 0xa8]
mov rdx, r14
call fcn.14031f7b0
test al, al
jne 0x14031e837
add rsi, 0x18
cmp rsi, rbp
jb 0x14031e800
mov qword [rsp + 0x28], rsi
mov r10, rsi
mov qword [rsp + 0xa8], rsi
mov r9, r14
mov qword [rsp + 0x30], r14
nop
movabs rdx, 0x100000001b3
movabs r8, 0xcbf29ce484222325
cmp r10, rbp
jae 0x14031eccc
jmp 0x14031e884
movabs rdx, 0x100000001b3
movabs r8, 0xcbf29ce484222325
mov r13, qword [r14]
xor r11d, r11d
mov rax, qword [r14 + 8]
mov rcx, r13
mov rbp, rax
mov r14, rax
sub rbp, r13
sar rbp, 2
test rbp, rbp
je 0x14031ea3f
mov r15, qword [r10 + 8]
lea r9, [r13 + 2]
sub r15, qword [r10]
mov r12, qword [r10]
sar r15, 2
sub r12, r13
nop dword [rax]
cmp r11, r15
jae 0x14031ea34
movzx eax, byte [r9 - 1]
movzx ecx, byte [r9 - 2]
mov rdi, qword [rbx + 0x30]
xor rcx, r8
mov rsi, qword [rbx + 0x18]
mov r8, qword [rbx + 8]
imul rcx, rdx
xor rcx, rax
movzx eax, byte [r9]
imul rcx, rdx
xor rcx, rax
movzx eax, byte [r9 + 1]
imul rcx, rdx
xor rcx, rax
imul rcx, rdx
mov rdx, rdi
and rdx, rcx
add rdx, rdx
mov rax, qword [rsi + rdx*8 + 8]
cmp rax, r8
je 0x14031e934
mov ecx, dword [r9 - 2]
mov rdx, qword [rsi + rdx*8]
cmp ecx, dword [rax + 0x10]
je 0x14031e936
cmp rax, rdx
je 0x14031e934
mov rax, qword [rax + 8]
cmp ecx, dword [rax + 0x10]
jne 0x14031e924
jmp 0x14031e936
xor eax, eax
movzx ecx, byte [r12 + r9 - 1]
test rax, rax
movabs rdx, 0xcbf29ce484222325
mov r10, r8
cmovne r10, rax
movzx eax, byte [r12 + r9 - 2]
xor rax, rdx
movabs rdx, 0x100000001b3
imul rax, rdx
xor rcx, rax
movzx eax, byte [r12 + r9]
imul rcx, rdx
xor rcx, rax
movzx eax, byte [r12 + r9 + 1]
imul rcx, rdx
xor rcx, rax
imul rcx, rdx
and rdi, rcx
add rdi, rdi
mov rax, qword [rsi + rdi*8 + 8]
cmp rax, r8
jne 0x14031e99b
xor eax, eax
jmp 0x14031e9cc
mov ecx, dword [r12 + r9 - 2]
mov rdx, qword [rsi + rdi*8]
cmp ecx, dword [rax + 0x10]
je 0x14031e9c2
nop dword [rax]
cmp rax, rdx
je 0x14031e9c0
mov rax, qword [rax + 8]
cmp ecx, dword [rax + 0x10]
jne 0x14031e9b0
jmp 0x14031e9c2
xor eax, eax
movabs rdx, 0x100000001b3
test rax, rax
cmovne r8, rax
mov rax, qword [rbx + 8]
cmp r10, rax
je 0x14031e9fc
cmp r8, rax
je 0x14031ec93
mov eax, dword [r10 + 0x14]
cmp eax, dword [r8 + 0x14]
je 0x14031ea10
mov r10, qword [rsp + 0xa8]
setl al
jmp 0x14031ea57
cmp r8, rax
jne 0x14031ea5f
mov eax, dword [r9 - 2]
cmp eax, dword [r12 + r9 - 2]
jne 0x14031eb33
inc r11
add r9, 4
cmp r11, rbp
jae 0x14031ea2b
movabs r8, 0xcbf29ce484222325
jmp 0x14031e8c0
mov r10, qword [rsp + 0x20]
mov r14, qword [r10 + 8]
mov r10, qword [rsp + 0xa8]
mov rcx, r13
mov rax, qword [r10 + 8]
sub r14, rcx
sub rax, qword [r10]
sar rax, 2
sar r14, 2
cmp r14, rax
setb al
test al, al
jne 0x14031ec9b
mov rdi, qword [rsp + 0xa8]
xor r11d, r11d
mov r13, qword [rsp + 0x20]
mov rbp, qword [rdi + 8]
mov rdi, qword [rdi]
mov rsi, rbp
sub rsi, rdi
mov rcx, rbp
sar rsi, 2
mov rdx, rdi
test rsi, rsi
je 0x14031ec24
mov r12, qword [r13]
mov r15, rdi
mov r14, qword [r13 + 8]
mov r9, r12
sub r14, r12
sar r14, 2
sub r15, r12
cmp r11, r14
jae 0x14031ec24
movabs rcx, 0x100000001b3
movabs rax, 0xcbf29ce484222325
mov r10, r9
sub r10, r12
add r10, rdx
movzx edx, byte [r10]
xor rdx, rax
movzx eax, byte [r10 + 1]
imul rdx, rcx
xor rdx, rax
movzx eax, byte [r10 + 2]
imul rdx, rcx
xor rdx, rax
movzx eax, byte [r10 + 3]
imul rdx, rcx
xor rdx, rax
mov rax, qword [rbx + 0x18]
imul rdx, rcx
mov rcx, qword [rbx + 0x30]
and rcx, rdx
add rcx, rcx
mov r8, qword [rax + rcx*8 + 8]
cmp r8, qword [rbx + 8]
je 0x14031eb4a
mov rcx, qword [rax + rcx*8]
mov eax, dword [r10]
cmp eax, dword [r8 + 0x10]
je 0x14031eb4d
cmp r8, rcx
je 0x14031eb4a
mov r8, qword [r8 + 8]
cmp eax, dword [r8 + 0x10]
jne 0x14031eb22
jmp 0x14031eb4d
mov r10, qword [rsp + 0xa8]
mov rcx, qword [r10]
cmp eax, dword [rcx + r11*4]
setl al
jmp 0x14031ea57
xor r8d, r8d
test r8, r8
jne 0x14031eb60
mov r8, qword [rbx + 8]
nop word [rax + rax]
movzx edx, byte [r9]
movabs rcx, 0x100000001b3
movabs rax, 0xcbf29ce484222325
xor rdx, rax
movzx eax, byte [r9 + 1]
imul rdx, rcx
xor rdx, rax
movzx eax, byte [r9 + 2]
imul rdx, rcx
xor rdx, rax
movzx eax, byte [r9 + 3]
imul rdx, rcx
xor rdx, rax
imul rdx, rcx
and rdx, qword [rbx + 0x30]
shl rdx, 4
add rdx, qword [rbx + 0x18]
mov rax, qword [rdx + 8]
cmp rax, qword [rbx + 8]
je 0x14031ebd4
mov ecx, dword [r9]
mov rdx, qword [rdx]
cmp ecx, dword [rax + 0x10]
je 0x14031ebd6
cmp rax, rdx
je 0x14031ebd4
mov rax, qword [rax + 8]
cmp ecx, dword [rax + 0x10]
jne 0x14031ebc4
jmp 0x14031ebd6
xor eax, eax
test rax, rax
jne 0x14031ebdf
mov rax, qword [rbx + 8]
mov rcx, qword [rbx + 8]
cmp r8, rcx
je 0x14031ec00
cmp rax, rcx
je 0x14031ecba
mov ecx, dword [r8 + 0x14]
cmp ecx, dword [rax + 0x14]
jne 0x14031ec8e
jmp 0x14031ec0e
cmp rax, rcx
jne 0x14031ec41
mov eax, dword [r9]
cmp dword [r9 + r15], eax
jne 0x14031ec8a
inc r11
add r9, 4
mov rdx, rdi
mov rcx, rbp
cmp r11, rsi
jb 0x14031eaa7
mov rax, qword [r13 + 8]
sub rcx, rdx
sub rax, qword [r13]
sar rax, 2
sar rcx, 2
cmp rcx, rax
setb al
test al, al
jne 0x14031ecba
mov r10, qword [rsp + 0xa8]
mov rsi, qword [rsp + 0x28]
cmp rsi, r10
je 0x14031ec7f
mov rax, qword [r10]
mov rcx, qword [rsi]
mov qword [rsi], rax
mov rax, qword [r10 + 8]
mov qword [r10], rcx
mov rcx, qword [rsi + 8]
mov qword [rsi + 8], rax
mov rax, qword [r10 + 0x10]
mov qword [r10 + 8], rcx
mov rcx, qword [rsi + 0x10]
mov qword [rsi + 0x10], rax
mov qword [r10 + 0x10], rcx
add rsi, 0x18
mov qword [rsp + 0x28], rsi
jmp 0x14031ec9b
cmp dword [rdi + r11*4], eax
setl al
jmp 0x14031ec3d
mov r10, qword [rsp + 0xa8]
mov r14, qword [rsp + 0x20]
add r10, 0x18
mov qword [rsp + 0xa8], r10
cmp r10, qword [rsp + 0xa0]
jb 0x14031e870
mov r14, qword [rsp + 0x20]
mov r9, qword [rsp + 0x30]
mov r12, qword [rsp + 0x98]
cmp r9, r12
jbe 0x14031f0e9
nop word [rax + rax]
mov rbp, qword [r9 - 0x10]
lea r13, [r9 - 0x18]
mov rdi, qword [r13]
mov rsi, rbp
sub rsi, rdi
xor r11d, r11d
sar rsi, 2
mov rcx, rbp
mov rdx, rdi
test rsi, rsi
je 0x14031ee82
mov r12, qword [r14]
mov r15, rdi
mov r14, qword [r14 + 8]
mov r9, r12
sub r14, r12
sar r14, 2
sub r15, r12
nop
cmp r11, r14
jae 0x14031ee82
movabs rcx, 0x100000001b3
movabs rax, 0xcbf29ce484222325
mov r10, r9
sub r10, r12
add r10, rdx
movzx edx, byte [r10]
xor rdx, rax
movzx eax, byte [r10 + 1]
imul rdx, rcx
xor rdx, rax
movzx eax, byte [r10 + 2]
imul rdx, rcx
xor rdx, rax
movzx eax, byte [r10 + 3]
imul rdx, rcx
xor rdx, rax
mov rax, qword [rbx + 0x18]
imul rdx, rcx
mov rcx, qword [rbx + 0x30]
and rcx, rdx
add rcx, rcx
mov r8, qword [rax + rcx*8 + 8]
cmp r8, qword [rbx + 8]
je 0x14031edb1
mov rcx, qword [rax + rcx*8]
mov eax, dword [r10]
cmp eax, dword [r8 + 0x10]
je 0x14031edb4
nop dword [rax + rax]
cmp r8, rcx
je 0x14031edb1
mov r8, qword [r8 + 8]
cmp eax, dword [r8 + 0x10]
jne 0x14031eda0
jmp 0x14031edb4
xor r8d, r8d
test r8, r8
jne 0x14031edc0
mov r8, qword [rbx + 8]
nop dword [rax]
movzx edx, byte [r9]
movabs r10, 0x100000001b3
movabs rax, 0xcbf29ce484222325
xor rdx, rax
movzx eax, byte [r9 + 1]
imul rdx, r10
xor rdx, rax
movzx eax, byte [r9 + 2]
imul rdx, r10
xor rdx, rax
movzx eax, byte [r9 + 3]
imul rdx, r10
xor rdx, rax
imul rdx, r10
and rdx, qword [rbx + 0x30]
shl rdx, 4
add rdx, qword [rbx + 0x18]
mov rax, qword [rdx + 8]
cmp rax, qword [rbx + 8]
je 0x14031ee34
mov ecx, dword [r9]
mov rdx, qword [rdx]
cmp ecx, dword [rax + 0x10]
je 0x14031ee36
cmp rax, rdx
je 0x14031ee34
mov rax, qword [rax + 8]
cmp ecx, dword [rax + 0x10]
jne 0x14031ee24
jmp 0x14031ee36
xor eax, eax
test rax, rax
jne 0x14031ee3f
mov rax, qword [rbx + 8]
mov rcx, qword [rbx + 8]
cmp r8, rcx
je 0x14031ee5a
cmp rax, rcx
je 0x14031f0b3
mov ecx, dword [r8 + 0x14]
cmp ecx, dword [rax + 0x14]
jmp 0x14031ee66
cmp rax, rcx
jne 0x14031eea7
mov eax, dword [r15 + r9]
cmp eax, dword [r9]
jne 0x14031ef73
inc r11
add r9, 4
mov rdx, rdi
mov rcx, rbp
cmp r11, rsi
jb 0x14031ed20
mov r10, qword [rsp + 0x20]
sub rcx, rdx
sar rcx, 2
mov rax, qword [r10 + 8]
sub rax, qword [r10]
sar rax, 2
cmp rcx, rax
setb al
test al, al
jne 0x14031f0b3
mov rax, qword [rsp + 0x20]
xor r11d, r11d
mov rbp, qword [rax + 8]
mov rdi, qword [rax]
mov rsi, rbp
sub rsi, rdi
mov rcx, rbp
sar rsi, 2
mov rdx, rdi
test rsi, rsi
je 0x14031f04e
mov r12, qword [r13]
mov r15, rdi
mov r14, qword [r13 + 8]
mov r9, r12
sub r14, r12
sar r14, 2
sub r15, r12
cmp r11, r14
jae 0x14031f04e
movabs rcx, 0x100000001b3
movabs rax, 0xcbf29ce484222325
mov r10, r9
sub r10, r12
add r10, rdx
movzx edx, byte [r10]
xor rdx, rax
movzx eax, byte [r10 + 1]
imul rdx, rcx
xor rdx, rax
movzx eax, byte [r10 + 2]
imul rdx, rcx
xor rdx, rax
movzx eax, byte [r10 + 3]
imul rdx, rcx
xor rdx, rax
mov rax, qword [rbx + 0x18]
imul rdx, rcx
mov rcx, qword [rbx + 0x30]
and rcx, rdx
add rcx, rcx
mov r8, qword [rax + rcx*8 + 8]
cmp r8, qword [rbx + 8]
je 0x14031ef7b
mov rcx, qword [rax + rcx*8]
mov eax, dword [r10]
cmp eax, dword [r8 + 0x10]
je 0x14031ef7e
cmp r8, rcx
je 0x14031ef7b
mov r8, qword [r8 + 8]
cmp eax, dword [r8 + 0x10]
jne 0x14031ef62
jmp 0x14031ef7e
setl al
jmp 0x14031ee9f
xor r8d, r8d
test r8, r8
jne 0x14031ef90
mov r8, qword [rbx + 8]
nop word [rax + rax]
movzx edx, byte [r9]
movabs rcx, 0x100000001b3
movabs rax, 0xcbf29ce484222325
xor rdx, rax
movzx eax, byte [r9 + 1]
imul rdx, rcx
xor rdx, rax
movzx eax, byte [r9 + 2]
imul rdx, rcx
xor rdx, rax
movzx eax, byte [r9 + 3]
imul rdx, rcx
xor rdx, rax
imul rdx, rcx
and rdx, qword [rbx + 0x30]
shl rdx, 4
add rdx, qword [rbx + 0x18]
mov rax, qword [rdx + 8]
cmp rax, qword [rbx + 8]
je 0x14031f004
mov ecx, dword [r9]
mov rdx, qword [rdx]
cmp ecx, dword [rax + 0x10]
je 0x14031f006
cmp rax, rdx
je 0x14031f004
mov rax, qword [rax + 8]
cmp ecx, dword [rax + 0x10]
jne 0x14031eff4
jmp 0x14031f006
xor eax, eax
test rax, rax
jne 0x14031f00f
mov rax, qword [rbx + 8]
mov rcx, qword [rbx + 8]
cmp r8, rcx
je 0x14031f02a
cmp rax, rcx
je 0x14031f0d9
mov ecx, dword [r8 + 0x14]
cmp ecx, dword [rax + 0x14]
jmp 0x14031f036
cmp rax, rcx
jne 0x14031f06b
mov eax, dword [r15 + r9]
cmp eax, dword [r9]
jne 0x14031f0ae
inc r11
add r9, 4
mov rdx, rdi
mov rcx, rbp
cmp r11, rsi
jb 0x14031eee7
mov rax, qword [r13 + 8]
sub rcx, rdx
sub rax, qword [r13]
sar rax, 2
sar rcx, 2
cmp rcx, rax
setb al
test al, al
jne 0x14031f0d9
mov r14, qword [rsp + 0x20]
sub r14, 0x18
mov qword [rsp + 0x20], r14
cmp r14, r13
je 0x14031f0b8
mov rax, qword [r13]
mov rcx, qword [r14]
mov qword [r14], rax
mov rax, qword [r13 + 8]
mov qword [r13], rcx
mov rcx, qword [r14 + 8]
mov qword [r14 + 8], rax
mov rax, qword [r13 + 0x10]
mov qword [r13 + 8], rcx
mov rcx, qword [r14 + 0x10]
mov qword [r14 + 0x10], rax
mov qword [r13 + 0x10], rcx
jmp 0x14031f0b8
setl al
jmp 0x14031f067
mov r14, qword [rsp + 0x20]
mov r9, qword [rsp + 0x30]
mov r12, qword [rsp + 0x98]
sub r9, 0x18
mov qword [rsp + 0x30], r9
cmp r12, r9
jb 0x14031ece0
jmp 0x14031f0e6
mov r12, qword [rsp + 0x98]
mov r9, qword [rsp + 0x30]
cmp r9, r12
mov r10, qword [rsp + 0xa8]
mov rbp, qword [rsp + 0xa0]
jne 0x14031f19c
cmp r10, rbp
je 0x14031f281
mov rsi, qword [rsp + 0x28]
mov r14, qword [rsp + 0x20]
cmp rsi, r10
je 0x14031f148
cmp r14, rsi
je 0x14031f148
mov rax, qword [rsi]
mov rcx, qword [r14]
mov qword [r14], rax
mov rax, qword [rsi + 8]
mov qword [rsi], rcx
mov rcx, qword [r14 + 8]
mov qword [r14 + 8], rax
mov rax, qword [rsi + 0x10]
mov qword [rsi + 8], rcx
mov rcx, qword [r14 + 0x10]
mov qword [r14 + 0x10], rax
mov qword [rsi + 0x10], rcx
add rsi, 0x18
mov qword [rsp + 0x28], rsi
cmp r14, r10
je 0x14031f182
mov rax, qword [r10]
mov rcx, qword [r14]
mov qword [r14], rax
mov rax, qword [r10 + 8]
mov qword [r10], rcx
mov rcx, qword [r14 + 8]
mov qword [r14 + 8], rax
mov rax, qword [r10 + 0x10]
mov qword [r10 + 8], rcx
mov rcx, qword [r14 + 0x10]
mov qword [r14 + 0x10], rax
mov qword [r10 + 0x10], rcx
add r14, 0x18
add r10, 0x18
mov qword [rsp + 0x20], r14
mov qword [rsp + 0xa8], r10
jmp 0x14031e850
add r9, 0xffffffffffffffe8
mov qword [rsp + 0x30], r9
cmp r10, rbp
jne 0x14031f235
mov r14, qword [rsp + 0x20]
sub r14, 0x18
mov qword [rsp + 0x20], r14
cmp r9, r14
je 0x14031f1ed
mov rax, qword [r14]
mov rcx, qword [r9]
mov qword [r9], rax
mov rax, qword [r14 + 8]
mov qword [r14], rcx
mov rcx, qword [r9 + 8]
mov qword [r9 + 8], rax
mov rax, qword [r14 + 0x10]
mov qword [r14 + 8], rcx
mov rcx, qword [r9 + 0x10]
mov qword [r9 + 0x10], rax
mov qword [r14 + 0x10], rcx
mov rsi, qword [rsp + 0x28]
sub rsi, 0x18
mov qword [rsp + 0x28], rsi
cmp r14, rsi
je 0x14031e850
mov rax, qword [rsi]
mov rcx, qword [r14]
mov qword [r14], rax
mov rax, qword [rsi + 8]
mov qword [rsi], rcx
mov rcx, qword [r14 + 8]
mov qword [r14 + 8], rax
mov rax, qword [rsi + 0x10]
mov qword [rsi + 8], rcx
mov rcx, qword [r14 + 0x10]
mov qword [r14 + 0x10], rax
mov qword [rsi + 0x10], rcx
jmp 0x14031e850
mov qword [rsp + 0x30], r9
cmp r10, r9
je 0x14031f26b
mov rax, qword [r9]
mov rcx, qword [r10]
mov qword [r10], rax
mov rax, qword [r9 + 8]
mov qword [r9], rcx
mov rcx, qword [r10 + 8]
mov qword [r10 + 8], rax
mov rax, qword [r9 + 0x10]
mov qword [r9 + 8], rcx
mov rcx, qword [r10 + 0x10]
mov qword [r10 + 0x10], rax
mov qword [r9 + 0x10], rcx
mov r14, qword [rsp + 0x20]
add r10, 0x18
mov qword [rsp + 0xa8], r10
jmp 0x14031e850
mov rcx, qword [rsp + 0x90]
mov rax, qword [rsp + 0x28]
mov r10, qword [rsp + 0x20]
mov qword [rcx + 8], rax
mov rax, rcx
mov qword [rcx], r10
add rsp, 0x48
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret