Function at 0x18003c780
Capabilities:
Hash data using fnv

Disassembly:
mov qword [rsp + 0x20], rsi
push rbp
push r14
push r15
lea rbp, [rsp - 0x140]
sub rsp, 0x240
mov r14, r8
mov rsi, rdx
mov r15, rcx
test rdx, rdx
jne 0x18003c7cb
lea rdx, str._entity
lea rcx, [0x1802ecc10]
call fcn.180044770
lea rcx, [0x1802ecc10]
call fcn.180081b50
jmp 0x18003cfb4
mov eax, dword [r8]
and eax, 0x7fff
mov edx, eax
cmp eax, 0x4000
jae 0x18003cfb4
mov r8, qword [r15 + 0x20]
mov eax, edx
shr rax, 8
mov qword [rsp + 0x260], rbx
mov qword [rsp + 0x268], rdi
movabs rdi, 0xcbf29ce484222325
movzx ecx, dl
xor rcx, rdi
mov qword [rsp + 0x270], r13
movabs r13, 0x100000001b3
imul rcx, r13
xor rcx, rax
movabs rax, 0x8a97b0004e7feab
imul rcx, rax
mov rax, qword [r15 + 0x30]
and rcx, qword [r15 + 0x48]
add rcx, rcx
mov rbx, qword [rax + rcx*8 + 8]
cmp rbx, r8
je 0x18003c860
mov rax, qword [rax + rcx*8]
cmp edx, dword [rbx + 0x10]
je 0x18003c862
nop
cmp rbx, rax
je 0x18003c860
mov rbx, qword [rbx + 8]
cmp edx, dword [rbx + 0x10]
jne 0x18003c850
jmp 0x18003c862
xor ebx, ebx
test rbx, rbx
cmove rbx, r8
cmp rbx, r8
je 0x18003c8a4
lea rdx, str.remove_entry_to_replace_it
lea rcx, [0x1802ecc10]
call fcn.180044770
lea rcx, [0x1802ecc10]
call fcn.180081b50
mov rdx, qword [rbx + 0x18]
mov r8, r14
mov rcx, r15
mov rdx, qword [rdx + 8]
call fcn.18003dc60
mov r8, qword [r15 + 0x20]
mov eax, dword [r14]
mov r9, qword [r15 + 0x30]
and eax, 0x7fff
movzx ecx, al
xor rcx, rdi
mov edx, eax
imul rcx, r13
mov r13, qword [rsp + 0x270]
shr rax, 8
xor rcx, rax
movabs rax, 0x8a97b0004e7feab
imul rcx, rax
and rcx, qword [r15 + 0x48]
add rcx, rcx
mov rax, qword [r9 + rcx*8 + 8]
cmp rax, r8
je 0x18003c903
mov r9, qword [r9 + rcx*8]
cmp edx, dword [rax + 0x10]
je 0x18003c905
cmp rax, r9
je 0x18003c903
mov rax, qword [rax + 8]
cmp edx, dword [rax + 0x10]
jne 0x18003c8f3
jmp 0x18003c905
xor eax, eax
test rax, rax
cmove rax, r8
cmp rax, r8
je 0x18003c935
lea rdx, str.entry_still_existing_after_removal_:_
lea rcx, [0x1802ecc10]
call fcn.180044770
lea rcx, [0x1802ecc10]
call fcn.180081b50
jmp 0x18003cfa4
mov rax, qword [0x1802ec1c8]
xor r9d, r9d
mov qword [rsp + 0x40], rax
xor r8d, r8d
mov rax, qword [rsi]
xor edx, edx
mov rcx, qword [rax + 0x480]
xor eax, eax
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x50], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x48], rcx
mov rcx, rsi
mov qword [rsp + 0x20], rax
call fcn.180082560
test al, al
je 0x18003c9e6
mov ecx, 0x20
call fcn.180042b80
mov rdi, rax
test rax, rax
je 0x18003c9ad
mov eax, dword [r14]
mov dword [rdi + 0x14], eax
lea rax, fcn.18000adf0
mov qword [rdi], rax
mov qword [rdi + 8], rsi
mov dword [rdi + 0x10], 2
mov byte [rdi + 0x18], 0
jmp 0x18003c9af
xor edi, edi
mov ecx, 0x18
call fcn.180042b80
mov rbx, rax
test rax, rax
je 0x18003cf27
mov dword [rax + 8], 1
mov dword [rax + 0xc], 1
lea rax, [0x180083f00]
mov qword [rbx], rax
mov qword [rbx + 0x10], rdi
jmp 0x18003cf29
mov rcx, rsi
call fcn.18003d880
mov rbx, rax
test rax, rax
je 0x18003ca16
call fcn.180031dd0
cmp rbx, rax
je 0x18003cb27
mov rbx, qword [rbx + 0x38]
test rbx, rbx
je 0x18003ca16
mov rbx, qword [rbx + 8]
test rbx, rbx
jne 0x18003c9f6
mov rax, qword [0x1802ec1c8]
xor r9d, r9d
mov qword [rsp + 0x58], rax
xor r8d, r8d
mov rax, qword [rsi]
xor edx, edx
mov rcx, qword [rax + 0x4b0]
xor eax, eax
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x68], rax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x60], rcx
mov rcx, rsi
mov qword [rsp + 0x20], rax
call fcn.180082560
test al, al
je 0x18003cbe3
mov ecx, 0xa8
call fcn.180042b80
mov rdi, rax
test rax, rax
je 0x18003cb9d
xorps xmm0, xmm0
mov qword [rdi + 8], rsi
movups xmmword [rbp - 0x20], xmm0
lea rax, fcn.18000adf0
mov dword [rdi + 0x10], 3
movups xmmword [rsp + 0x7c], xmm0
mov qword [rdi], rax
mov eax, dword [r14]
movups xmmword [rbp - 0x74], xmm0
mov dword [rdi + 0x14], eax
lea rax, [0x180083c30]
movups xmmword [rbp - 0x64], xmm0
mov qword [rdi], rax
xor eax, eax
mov dword [rbp - 0x10], eax
mov qword [rsp + 0x70], rax
mov dword [rsp + 0x78], eax
mov dword [rbp - 0x24], eax
lea rax, [rsp + 0x70]
movups xmmword [rbp - 0x54], xmm0
mov byte [rdi + 0x18], 0
movups xmmword [rbp - 0x44], xmm0
movups xmmword [rbp - 0x34], xmm0
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rdi + 0x20], xmm0
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rdi + 0x30], xmm1
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rdi + 0x40], xmm0
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rdi + 0x50], xmm1
movups xmm1, xmmword [rax + 0x50]
movups xmmword [rdi + 0x60], xmm0
movups xmm0, xmmword [rax + 0x60]
movups xmmword [rdi + 0x70], xmm1
movups xmmword [rdi + 0x80], xmm0
movups xmm0, xmmword [rax + 0x70]
mov eax, dword [rax + 0x80]
movups xmmword [rdi + 0x90], xmm0
mov dword [rdi + 0xa0], eax
jmp 0x18003cb9f
mov ecx, 0x20
call fcn.180042b80
mov rdi, rax
test rax, rax
je 0x18003cb64
lea rax, fcn.18000adf0
mov qword [rdi + 8], rsi
mov qword [rdi], rax
mov dword [rdi + 0x10], 4
mov eax, dword [r14]
mov dword [rdi + 0x14], eax
lea rax, fcn.18000adf0
mov qword [rdi], rax
mov byte [rdi + 0x18], 0
jmp 0x18003cb66
xor edi, edi
mov ecx, 0x18
call fcn.180042b80
mov rbx, rax
test rax, rax
je 0x18003cf27
mov dword [rax + 8], 1
mov dword [rax + 0xc], 1
lea rax, [0x180083f00]
mov qword [rbx], rax
mov qword [rbx + 0x10], rdi
jmp 0x18003cf29
xor edi, edi
mov ecx, 0x18
call fcn.180042b80
mov rbx, rax
test rax, rax
je 0x18003cbd7
mov dword [rax + 8], 1
mov edx, 0xa8
mov dword [rax + 0xc], 1
lea rax, [0x180083f20]
mov qword [rbx], rax
mov qword [rbx + 0x10], rdi
jmp 0x18003cf2e
xor ebx, ebx
mov edx, 0xa8
jmp 0x18003cf2e
mov rcx, rsi
call fcn.180033b10
test al, al
je 0x18003cec2
mov ecx, 0x1e8
call fcn.180042b80
mov rdi, rax
test rax, rax
je 0x18003ce89
xorps xmm0, xmm0
mov qword [rdi + 8], rsi
lea rax, fcn.18000adf0
mov dword [rdi + 0x10], 1
mov qword [rdi], rax
lea rcx, [rbp]
mov eax, dword [r14]
xorps xmm1, xmm1
mov dword [rdi + 0x14], eax
xor edx, edx
lea rax, [0x180083c28]
mov byte [rdi + 0x18], 0
mov qword [rdi], rax
mov r8d, 0x12c
xor eax, eax
mov qword [rbp + 0x12c], rax
mov dword [rbp + 0x134], eax
mov dword [rbp - 0x70], eax
mov qword [rbp - 0x5c], rax
mov qword [rbp - 0x54], rax
mov dword [rbp - 0x3c], eax
mov dword [rbp - 0x18], eax
movups xmmword [rsp + 0x70], xmm0
movups xmmword [rbp - 0x80], xmm0
movups xmmword [rbp - 0x4c], xmm0
movups xmmword [rbp - 0x38], xmm1
movups xmmword [rbp - 0x28], xmm0
movdqu xmmword [rbp - 0x10], xmm1
call fcn.1800432c0
movzx eax, byte [rsp + 0x70]
movups xmm0, xmmword [rbp - 0x6c]
mov byte [rdi + 0x20], al
mov rax, qword [rsp + 0x78]
movss xmm1, dword [rbp - 0x3c]
mov qword [rdi + 0x28], rax
mov rax, qword [rbp - 0x80]
mov qword [rdi + 0x30], rax
mov eax, dword [rbp - 0x78]
mov dword [rdi + 0x38], eax
movzx eax, byte [rbp - 0x74]
mov byte [rdi + 0x3c], al
movzx eax, byte [rbp - 0x73]
mov byte [rdi + 0x3d], al
movzx eax, byte [rbp - 0x72]
mov byte [rdi + 0x3e], al
movzx eax, byte [rbp - 0x71]
mov byte [rdi + 0x3f], al
movzx eax, byte [rbp - 0x70]
mov byte [rdi + 0x40], al
movzx eax, byte [rbp - 0x6f]
mov byte [rdi + 0x41], al
movzx eax, byte [rbp - 0x6e]
mov byte [rdi + 0x42], al
movzx eax, byte [rbp - 0x6d]
movups xmmword [rdi + 0x44], xmm0
mov byte [rdi + 0x43], al
movsd xmm0, qword [rbp - 0x58]
movzx eax, byte [rbp - 0x5c]
movsd qword [rdi + 0x58], xmm0
movss xmm0, dword [rbp - 0x4c]
mov byte [rdi + 0x54], al
mov eax, dword [rbp - 0x50]
movss dword [rdi + 0x64], xmm0
movss xmm0, dword [rbp - 0x40]
mov dword [rdi + 0x60], eax
mov eax, dword [rbp - 0x48]
movss dword [rdi + 0x70], xmm0
movsd xmm0, qword [rbp - 0x38]
mov dword [rdi + 0x68], eax
mov eax, dword [rbp - 0x44]
movsd qword [rdi + 0x78], xmm0
movsd xmm0, qword [rbp - 0x2c]
mov dword [rdi + 0x6c], eax
mov eax, dword [rbp - 0x30]
movsd qword [rdi + 0x84], xmm0
movsd xmm0, qword [rbp - 0x20]
mov dword [rdi + 0x80], eax
mov eax, dword [rbp - 0x24]
mov dword [rdi + 0x8c], eax
movss dword [rdi + 0x74], xmm1
movsd qword [rdi + 0x90], xmm0
mov eax, dword [rbp - 0x18]
lea rcx, [rdi + 0xc0]
mov dword [rdi + 0x98], eax
mov rax, qword [rbp - 0x10]
mov qword [rdi + 0xa0], rax
mov rax, qword [rbp - 8]
mov qword [rdi + 0xa8], rax
mov rax, qword [rbp]
mov qword [rdi + 0xb0], rax
movzx eax, byte [rbp + 8]
mov byte [rdi + 0xb8], al
lea rax, [rbp + 0x10]
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rcx], xmm0
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rcx + 0x10], xmm1
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rcx + 0x20], xmm0
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rcx + 0x30], xmm1
movups xmm1, xmmword [rax + 0x50]
movups xmmword [rcx + 0x40], xmm0
movups xmm0, xmmword [rax + 0x60]
movups xmmword [rcx + 0x50], xmm1
movups xmm1, xmmword [rax + 0x80]
movups xmmword [rcx + 0x60], xmm0
movups xmm0, xmmword [rax + 0x70]
movups xmmword [rcx + 0x70], xmm0
movups xmm0, xmmword [rax + 0x90]
movups xmmword [rcx + 0x80], xmm1
movups xmm1, xmmword [rax + 0xa0]
mov rax, qword [rax + 0xb0]
movups xmmword [rcx + 0x90], xmm0
movups xmm0, xmmword [rbp + 0xc8]
movups xmmword [rcx + 0xa0], xmm1
mov qword [rcx + 0xb0], rax
mov eax, dword [rbp + 0x128]
movups xmm1, xmmword [rbp + 0xd8]
movups xmmword [rdi + 0x178], xmm0
movups xmm0, xmmword [rbp + 0xe8]
movups xmmword [rdi + 0x188], xmm1
movups xmm1, xmmword [rbp + 0xf8]
movups xmmword [rdi + 0x198], xmm0
movups xmm0, xmmword [rbp + 0x108]
movups xmmword [rdi + 0x1a8], xmm1
movups xmm1, xmmword [rbp + 0x118]
movups xmmword [rdi + 0x1b8], xmm0
movups xmmword [rdi + 0x1c8], xmm1
mov dword [rdi + 0x1d8], eax
movzx eax, byte [rbp + 0x12c]
mov byte [rdi + 0x1dc], al
mov eax, dword [rbp + 0x130]
mov dword [rdi + 0x1e0], eax
jmp 0x18003ce8b
xor edi, edi
mov ecx, 0x18
call fcn.180042b80
mov rbx, rax
test rax, rax
je 0x18003cebe
mov dword [rax + 8], 1
mov dword [rax + 0xc], 1
lea rax, [0x180083f40]
mov qword [rbx], rax
mov qword [rbx + 0x10], rdi
jmp 0x18003cf35
xor ebx, ebx
jmp 0x18003cf35
mov ecx, 0x20
call fcn.180042b80
mov rdi, rax
test rax, rax
je 0x18003cef5
lea rax, fcn.18000adf0
mov qword [rdi + 8], rsi
mov qword [rdi], rax
mov dword [rdi + 0x10], 0
mov eax, dword [r14]
mov dword [rdi + 0x14], eax
mov byte [rdi + 0x18], 0
jmp 0x18003cef7
xor edi, edi
mov ecx, 0x18
call fcn.180042b80
mov rbx, rax
test rax, rax
je 0x18003cf27
mov dword [rax + 8], 1
mov dword [rax + 0xc], 1
lea rax, [0x180083f00]
mov qword [rbx], rax
mov qword [rbx + 0x10], rdi
jmp 0x18003cf29
xor ebx, ebx
mov edx, 0x20
xor ecx, ecx
call fcn.180042b90
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax]
mov r8d, dword [r14]
lea rdx, [rsp + 0x30]
and r8d, 0x7fff
mov rcx, r15
test rbx, rbx
je 0x18003cf95
lock inc dword [rbx + 8]
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x38], rbx
call fcn.18003cfd0
mov edi, 0xffffffff
mov eax, edi
lock xadd dword [rbx + 8], eax
cmp eax, 1
jne 0x18003cfa4
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock xadd dword [rbx + 0xc], edi
cmp edi, 1
jne 0x18003cfa4
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
jmp 0x18003cfa4
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x38], rbx
call fcn.18003cfd0
mov rbx, qword [rsp + 0x260]
mov rdi, qword [rsp + 0x268]
mov rsi, qword [rsp + 0x278]
add rsp, 0x240
pop r15
pop r14
pop rbp
ret