Function at 0x140040390
Capabilities:
Hash data using fnv

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xf20]
mov eax, 0x1020
call fcn.14026d3b0
sub rsp, rax
movaps xmmword [rsp + 0x1010], xmm6
movaps xmmword [rsp + 0x1000], xmm7
movaps xmmword [rsp + 0xff0], xmm8
mov rax, qword [0x140332240]
xor rax, rsp
mov qword [rbp + 0xee0], rax
movaps xmm8, xmm3
movaps xmm7, xmm2
movaps xmm6, xmm1
mov r13, rcx
xor edx, edx
mov r8d, 0xe80
lea rcx, [rbp + 0x60]
call sub.VCRUNTIME140.dll_memset
movss xmm2, dword [rbp + 0xf70]
subss xmm2, xmm7
subss xmm8, xmm6
movss dword [rbp - 0x28], xmm6
movaps xmm0, xmm8
addss xmm0, xmm6
movss dword [rbp - 0x24], xmm0
movss dword [rbp - 0x20], xmm7
movaps xmm1, xmm2
addss xmm1, xmm7
movss dword [rbp - 0x1c], xmm1
movss dword [rbp - 0x18], xmm8
movss dword [rbp - 0x14], xmm2
lea rdx, [rbp - 0x28]
lea rcx, [rbp + 0x60]
call fcn.1400449d0
nop
mov rdi, qword [r13 + 0xd8]
mov rbx, qword [rdi]
cmp rbx, rdi
je 0x1400404db
movss xmm6, dword [0x1402f3154]
nop dword [rax]
mov rcx, qword [rbx + 0x28]
test rcx, rcx
je 0x1400404d0
mov r8, qword [rbx + 0x18]
test r8, r8
je 0x1400404d0
mov rax, qword [rbx + 0x20]
test rax, rax
je 0x140040491
cmp byte [rax + 2], 0
je 0x1400404d0
mov rax, qword [rcx]
lea rdx, [rbp - 0x28]
call qword [rax + 0x10]
mov eax, dword [rbx + 0x10]
mov dword [rbp - 0x10], eax
movups xmm0, xmmword [rbp - 0x28]
movups xmmword [rbp - 0xc], xmm0
movsd xmm1, qword [rbp - 0x18]
movsd qword [rbp + 4], xmm1
movss dword [rsp + 0x20], xmm6
lea r9, [rbp + 0xec8]
xor r8d, r8d
lea rdx, [rbp - 0x10]
lea rcx, [rbp + 0x60]
call fcn.140044120
mov rax, qword [rbx]
mov rbx, rax
cmp rax, rdi
jne 0x140040470
cmp byte [0x14035809b], 0
je 0x140040692
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp - 0x28], xmm0
mov qword [rbp - 0x18], rax
lea rdx, [rbp - 0x28]
lea rcx, [rbp + 0x60]
call fcn.140043710
nop
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0x18], xmm0
mov qword [rbp + 0x28], rax
lea rdx, [rbp + 0x18]
call fcn.140032020
nop
mov rax, qword [rbp + 0x20]
mov rbx, qword [rbp + 0x18]
sub rax, rbx
sar rax, 2
cmp rax, 1
jne 0x140040625
call fcn.14002fe50
mov edi, eax
mov rdx, rbx
lea rcx, [0x140359300]
call fcn.14002efc0
test al, al
jne 0x140040551
xor ebx, ebx
jmp 0x140040596
mov r8, rbx
lea rdx, [rsp + 0x70]
lea rcx, [0x140359300]
call fcn.140030a90
mov rcx, qword [rax]
mov rdx, qword [rcx + 0x18]
test rdx, rdx
jne 0x140040575
xor ebx, ebx
jmp 0x140040596
mov rax, qword [rdx]
cmp dword [rax + rdi*4], 0
jne 0x140040582
xor ebx, ebx
jmp 0x140040596
mov rdx, qword [rdx + 0x18]
mov rax, qword [rcx + 0x20]
lea rcx, [rax + rax*2]
mov rax, qword [rdx + rdi*8]
lea rbx, [rax + rcx*8]
xorps xmm0, xmm0
movups xmmword [rbp - 0x10], xmm0
mov qword [rbp], 0
mov qword [rbp + 8], 0
mov r8d, 0x10
lea rdx, str.CameraController
lea rcx, [rbp - 0x10]
call fcn.140016ce0
lea rdx, [rbp - 0x10]
mov rcx, rbx
call fcn.14002fc70
lea rdi, [rax + 0x38]
mov rax, qword [rdi]
cmp rax, qword [rdi + 8]
je 0x1400405e0
mov qword [rdi + 8], rax
mov rsi, qword [rbp - 0x20]
mov rbx, qword [rbp - 0x28]
cmp rbx, rsi
je 0x140040625
nop dword [rax]
mov rdx, qword [rdi + 8]
cmp rdx, qword [rdi + 0x10]
je 0x140040611
movups xmm0, xmmword [rbx]
movups xmmword [rdx], xmm0
movsd xmm1, qword [rbx + 0x10]
movsd qword [rdx + 0x10], xmm1
add qword [rdi + 8], 0x18
jmp 0x14004061c
mov r8, rbx
mov rcx, rdi
call fcn.1400431b0
add rbx, 0x18
cmp rbx, rsi
jne 0x1400405f0
lea rcx, [rbp + 0x18]
call fcn.140016ab0
nop
mov r8, qword [rbp - 0x28]
test r8, r8
je 0x140040692
mov rcx, qword [rbp - 0x18]
sub rcx, r8
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
sar rdx, 2
mov rax, rdx
shr rax, 0x3f
add rdx, rax
lea rdx, [rdx + rdx*2]
shl rdx, 3
mov rax, r8
cmp rdx, 0x1000
jb 0x14004068a
add rdx, 0x27
mov r8, qword [r8 - 8]
sub rax, r8
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14004068a
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rcx, r8
call fcn.14026cc4c
mov rbx, qword [r13]
mov rdi, qword [r13 + 8]
cmp rbx, rdi
je 0x1400406ba
nop
lea rcx, [rbx + 0x28]
call fcn.1400153e0
add rbx, 0x50
cmp rbx, rdi
jne 0x1400406a0
mov rax, qword [r13]
mov qword [r13 + 8], rax
lea r14, [r13 + 0x20]
mov rcx, r14
call fcn.140041070
lea rcx, [r13 + 0x60]
call fcn.140040fb0
lea rbx, [r13 + 0xa0]
mov rax, qword [rbx]
cmp rax, qword [rbx + 8]
je 0x1400406e3
mov qword [rbx + 8], rax
lea r15, [r13 + 0xb8]
mov rax, qword [r15]
cmp rax, qword [r15 + 8]
je 0x1400406f7
mov qword [r15 + 8], rax
mov r8, rbx
xor edx, edx
lea rcx, [rbp + 0x60]
call fcn.140043110
mov rax, qword [rbx]
mov qword [rsp + 0x58], rax
mov rcx, qword [rbx + 8]
mov qword [rsp + 0x60], rcx
cmp rax, rcx
je 0x140040c18
movabs r10, 0xcbf29ce484222325
movabs r9, 0x100000001b3
movss xmm6, dword [0x1402f3304]
nop dword [rax + rax]
mov eax, dword [rax]
cmp eax, 0xffffffff
je 0x140040c01
nop dword [rax + rax]
movsxd rcx, eax
mov qword [rsp + 0x68], rcx
mov rax, qword [rbp + 0xeb0]
movsxd rax, dword [rax + rcx*8 + 4]
imul rcx, rax, 0x1c
add rcx, qword [rbp + 0xe80]
mov r8d, dword [rcx]
mov dword [rbp - 0x30], r8d
mov eax, r8d
shr eax, 8
movzx edx, al
movzx eax, r8b
xor rax, r10
imul rax, r9
xor rdx, rax
imul rdx, r9
mov eax, r8d
shr eax, 0x10
movzx ecx, al
xor rdx, rcx
imul rdx, r9
mov eax, r8d
shr rax, 0x18
xor rdx, rax
imul rdx, r9
mov r9, qword [r13 + 0x90]
and r9, rdx
add r9, r9
mov rdx, qword [r13 + 0x78]
mov rcx, qword [rdx + r9*8 + 8]
mov rax, qword [r13 + 0x68]
cmp rcx, rax
je 0x1400407e9
mov rdx, qword [rdx + r9*8]
cmp r8d, dword [rcx + 0x10]
je 0x1400407eb
cmp rcx, rdx
je 0x1400407e9
mov rcx, qword [rcx + 8]
cmp r8d, dword [rcx + 0x10]
jne 0x1400407d8
jmp 0x1400407eb
xor ecx, ecx
test rcx, rcx
je 0x1400407f9
cmp rcx, rax
jne 0x140040bda
lea rsi, [r13 + 0xd0]
lea r8, [rbp - 0x30]
lea rdx, [rbp - 0x80]
mov rcx, rsi
call fcn.140041ff0
mov r12, qword [rax]
add r12, 0x18
mov r8, qword [r12]
test r8, r8
je 0x140040bd0
mov rcx, qword [r12 + 0x10]
test rcx, rcx
je 0x140040bd0
mov rax, qword [rcx]
lea rdx, [rbp - 0x10]
call qword [rax + 0x10]
movss xmm0, dword [rbp]
ucomiss xmm0, xmm6
jp 0x14004084c
je 0x140040bd0
lea rdx, [rbp - 0x10]
lea rcx, [rbp + 0x60]
call fcn.140042c10
mov rdx, rax
mov rcx, r15
call fcn.140030df0
mov rdi, qword [r15]
mov rbx, qword [r15 + 8]
mov qword [rsp + 0x50], rbx
cmp rdi, rbx
je 0x140040bbf
mov edx, dword [rbp - 0x30]
nop dword [rax]
mov r8d, dword [rdi]
cmp edx, r8d
je 0x140040bab
mov eax, r8d
cmovbe eax, edx
imul eax, eax, 0xf4240
cmp edx, r8d
cmovbe edx, r8d
add eax, edx
mov qword [rbp + 0x10], rax
lea r8, [rbp + 0x10]
lea rdx, [rsp + 0x70]
mov rcx, r14
call fcn.1400422a0
cmp byte [rsp + 0x78], 0
je 0x140040ba8
mov r8, rdi
lea rdx, [rbp - 0x70]
mov rcx, rsi
call fcn.140041ff0
mov r15, qword [rax]
add r15, 0x18
mov rax, qword [r15]
test rax, rax
je 0x140040ba8
mov r9, qword [r15 + 0x10]
test r9, r9
je 0x140040ba8
mov qword [rsp + 0x20], rax
mov r8, qword [r12]
mov rdx, qword [r12 + 0x10]
lea rcx, [rbp + 0x30]
call fcn.14008faa0
nop
cmp byte [rbp + 0x54], 0
je 0x140040b9f
call fcn.1400307e0
mov ebx, eax
lea rdx, [rbp - 0x30]
lea rcx, [0x140359300]
call fcn.14002efc0
test al, al
jne 0x140040931
xor ebx, ebx
jmp 0x140040979
lea r8, [rbp - 0x30]
lea rdx, [rbp - 0x60]
lea rcx, [0x140359300]
call fcn.140030a90
mov rdx, qword [rax]
mov rcx, qword [rdx + 0x18]
test rcx, rcx
jne 0x140040955
xor ebx, ebx
jmp 0x140040979
mov r8, rbx
mov rax, qword [rcx]
cmp dword [rax + rbx*4], 0
jne 0x140040965
xor ebx, ebx
jmp 0x140040979
mov rcx, qword [rcx + 0x18]
mov rax, qword [rdx + 0x20]
lea rbx, [rax + rax*2]
shl rbx, 4
add rbx, qword [rcx + r8*8]
call fcn.1400307e0
mov esi, eax
mov rdx, rdi
lea rcx, [0x140359300]
call fcn.14002efc0
test al, al
jne 0x140040997
xor eax, eax
jmp 0x1400409db
mov r8, rdi
lea rdx, [rbp - 0x50]
lea rcx, [0x140359300]
call fcn.140030a90
mov rdx, qword [rax]
mov rcx, qword [rdx + 0x18]
test rcx, rcx
jne 0x1400409ba
xor eax, eax
jmp 0x1400409db
mov rax, qword [rcx]
cmp dword [rax + rsi*4], 0
jne 0x1400409c7
xor eax, eax
jmp 0x1400409db
mov rcx, qword [rcx + 0x18]
mov rax, qword [rdx + 0x20]
lea rax, [rax + rax*2]
shl rax, 4
add rax, qword [rcx + rsi*8]
test rbx, rbx
je 0x140040b11
test rax, rax
je 0x140040b11
cmp byte [rbx + 0x24], 0
je 0x140040b11
cmp byte [rax + 0x24], 0
je 0x140040b11
call fcn.14002fe50
mov ebx, eax
lea rdx, [rbp - 0x30]
lea rcx, [0x140359300]
call fcn.14002efc0
test al, al
je 0x140040a8b
lea r8, [rbp - 0x30]
lea rdx, [rbp - 0x40]
lea rcx, [0x140359300]
call fcn.140030a90
mov rcx, qword [rax]
mov rdx, qword [rcx + 0x18]
test rdx, rdx
je 0x140040a8b
mov rax, qword [rdx]
cmp dword [rax + rbx*4], 0
je 0x140040a8b
mov rdx, qword [rdx + 0x18]
mov rax, qword [rcx + 0x20]
lea rcx, [rax + rax*2]
mov rax, qword [rdx + rbx*8]
lea rbx, [rax + rcx*8]
test rbx, rbx
je 0x140040a8b
mov r14d, dword [rdi]
mov rsi, qword [rbx + 8]
mov rbx, qword [rbx]
cmp rbx, rsi
je 0x140040a8b
nop dword [rax]
mov rcx, qword [rbx + 0x20]
test rcx, rcx
je 0x140040a82
mov rax, qword [rcx]
mov edx, r14d
call qword [rax + 0x20]
add rbx, 0x38
cmp rbx, rsi
jne 0x140040a70
call fcn.14002fe50
mov ebx, eax
mov rdx, rdi
lea rcx, [0x140359300]
call fcn.14002efc0
test al, al
je 0x140040b11
mov r8, rdi
lea rdx, [rbp + 0x18]
lea rcx, [0x140359300]
call fcn.140030a90
mov rcx, qword [rax]
mov rdx, qword [rcx + 0x18]
test rdx, rdx
je 0x140040b11
mov rax, qword [rdx]
cmp dword [rax + rbx*4], 0
je 0x140040b11
mov rdx, qword [rdx + 0x18]
mov rax, qword [rcx + 0x20]
lea rcx, [rax + rax*2]
mov rax, qword [rdx + rbx*8]
lea rbx, [rax + rcx*8]
test rbx, rbx
je 0x140040b11
mov r14d, dword [rbp - 0x30]
mov rsi, qword [rbx + 8]
mov rbx, qword [rbx]
cmp rbx, rsi
je 0x140040b11
mov rcx, qword [rbx + 0x20]
test rcx, rcx
je 0x140040b08
mov rax, qword [rcx]
mov edx, r14d
call qword [rax + 0x20]
add rbx, 0x38
cmp rbx, rsi
jne 0x140040af6
lea rcx, [r15 + 8]
lea r8, [r12 + 8]
mov rdx, qword [r13 + 8]
cmp rdx, qword [r13 + 0x10]
je 0x140040b63
mov qword [rbp + 0x10], rdx
mov eax, dword [rbp - 0x30]
mov dword [rdx], eax
mov eax, dword [rdi]
mov dword [rdx + 4], eax
mov rax, qword [r8]
mov qword [rdx + 8], rax
mov rax, qword [rcx]
mov qword [rdx + 0x10], rax
mov rax, qword [r12]
mov qword [rdx + 0x18], rax
mov rax, qword [r15]
mov qword [rdx + 0x20], rax
lea rcx, [rdx + 0x28]
lea rdx, [rbp + 0x30]
call fcn.140042ad0
add qword [r13 + 8], 0x50
jmp 0x140040b8f
lea rax, [rbp + 0x30]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x30], r12
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], r8
mov r9, rdi
lea r8, [rbp - 0x30]
mov rcx, r13
call fcn.1400425c0
lea r14, [r13 + 0x20]
lea rsi, [r13 + 0xd0]
mov rbx, qword [rsp + 0x50]
lea rcx, [rbp + 0x30]
call fcn.1400153e0
mov edx, dword [rbp - 0x30]
add rdi, 4
cmp rdi, rbx
jne 0x140040880
lea r15, [r13 + 0xb8]
lea r8, [rbp - 0x30]
lea rdx, [rbp - 0x28]
lea rcx, [r13 + 0x60]
call fcn.14003a1e0
movabs r10, 0xcbf29ce484222325
mov rax, qword [rbp + 0xeb0]
mov rcx, qword [rsp + 0x68]
mov eax, dword [rax + rcx*8]
cmp eax, 0xffffffff
movabs r9, 0x100000001b3
jne 0x140040750
mov rcx, qword [rsp + 0x60]
mov rax, qword [rsp + 0x58]
add rax, 8
mov qword [rsp + 0x58], rax
cmp rax, rcx
jne 0x140040740
mov rcx, r13
call fcn.140140680
mov r9, qword [r13 + 8]
mov rcx, qword [r13]
cmp rcx, r9
je 0x140040d4f
movss xmm7, dword [0x1402f3030]
xorps xmm6, xmm6
movss xmm8, dword [0x1402f2f70]
mov rdx, qword [rcx + 8]
mov r8, qword [rcx + 0x10]
test rdx, rdx
je 0x140040d42
test r8, r8
je 0x140040d42
cmp byte [rdx + 2], 0
je 0x140040d42
cmp byte [r8 + 2], 0
je 0x140040d42
movss xmm1, dword [rdx + 0x20]
movss xmm5, dword [r8 + 0x20]
movss xmm4, dword [rcx + 0x44]
mulss xmm4, xmm7
mov dword [rbp - 0x30], 0
movss xmm0, dword [rcx + 0x48]
subss xmm0, xmm8
movss dword [rsp + 0x50], xmm0
lea rax, [rbp - 0x30]
lea r10, [rsp + 0x50]
comiss xmm6, xmm0
cmovbe rax, r10
mulss xmm4, dword [rax]
movss xmm3, dword [rcx + 0x40]
mulss xmm3, xmm7
mulss xmm3, dword [rax]
movaps xmm2, xmm5
addss xmm2, xmm1
ucomiss xmm2, xmm6
jp 0x140040cd6
jne 0x140040cd6
movaps xmm3, xmm6
movaps xmm4, xmm6
jmp 0x140040cde
divss xmm4, xmm2
divss xmm3, xmm2
cmp byte [rdx + 1], 0
je 0x140040d13
cmp byte [rdx + 4], 0
jne 0x140040d13
movaps xmm2, xmm1
mulss xmm2, xmm4
mov rax, qword [rcx + 0x18]
mulss xmm1, xmm3
movss xmm0, dword [rax]
subss xmm0, xmm1
movss dword [rax], xmm0
movss xmm1, dword [rax + 4]
subss xmm1, xmm2
movss dword [rax + 4], xmm1
cmp byte [r8 + 1], 0
je 0x140040d42
cmp byte [r8 + 4], 0
jne 0x140040d42
movaps xmm0, xmm5
mulss xmm0, xmm4
mov rax, qword [rcx + 0x20]
mulss xmm5, xmm3
addss xmm5, dword [rax]
movss dword [rax], xmm5
addss xmm0, dword [rax + 4]
movss dword [rax + 4], xmm0
add rcx, 0x50
cmp rcx, r9
jne 0x140040c45
lea rcx, [rbp + 0x60]
call fcn.140040da0
mov rcx, qword [rbp + 0xee0]
xor rcx, rsp
call fcn.14026cac0
lea r11, [rsp + 0x1020]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret