Function at 0x519fd0
Capabilities:
Hash data using fnv

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
mov eax, 0x10a8
call fcn.005eced0
push esi
push edi
mov edi, ecx
mov ecx, dword [edi + 0x78]
mov eax, ecx
shr eax, 8
test al, 1
je 0x51a00d
mov eax, ecx
mov byte [ebp - 5], 1
shr eax, 3
test al, 1
jne 0x51a011
mov byte [ebp - 5], 0
mov esi, dword [ebx + 8]
lea edx, [edi + 0x2b8]
mov al, byte [edx]
test esi, esi
mov dword [ebp - 0xc], edx
sete cl
and al, 0xfe
or cl, al
cmp esi, 1
mov byte [edx], cl
mov eax, 0xf0
mov ecx, 0x128
cmove eax, ecx
lea esi, [eax + edi]
mov eax, dword [edi + 0x78]
and eax, 0x3000
mov dword [ebp - 4], esi
cmp eax, 0x2000
jne 0x51a1f2
mov edx, dword [edi + 0x170]
mov ecx, dword [esi + 4]
sub ecx, dword [esi]
mov dword [ebp - 0xc], edx
mov edx, dword [edi + 0x16c]
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0xc]
sub edx, dword [edi + 0x16c]
sar ecx, 2
sar edx, 2
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x1c], edx
cmp ecx, edx
jae 0x51a08e
mov eax, dword [ebp - 0x14]
lea eax, [eax + ecx*4]
jmp 0x51a14b
jbe 0x51a151
mov esi, dword [edi + 0x174]
sub esi, dword [ebp - 0x14]
sar esi, 2
cmp ecx, esi
jbe 0x51a12c
cmp ecx, 0x3fffffff
ja 0x51a6de
mov edx, esi
mov eax, 0x3fffffff
shr edx, 1
sub eax, edx
cmp esi, eax
jbe 0x51a0ca
mov eax, 0x3fffffff
jmp 0x51a0d2
lea eax, [esi + edx]
cmp eax, ecx
cmovb eax, ecx
lea edx, [ebp - 0xc]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0xc], eax
call fcn.0042c790
mov ecx, dword [ebp - 0x24]
mov esi, eax
mov eax, dword [ebp - 0x1c]
sub ecx, eax
shl ecx, 2
push ecx
push 0
lea edx, [esi + eax*4]
push edx
call fcn.005c3040
mov ecx, dword [edi + 0x16c]
add esp, 0xc
mov eax, dword [edi + 0x170]
sub eax, ecx
push eax
push ecx
push esi
call fcn.005c3580
add esp, 0xc
lea ecx, [edi + 0x16c]
push dword [ebp - 0x14]
push dword [ebp - 0x24]
push esi
call fcn.0042cb00
mov esi, dword [ebp - 4]
jmp 0x51a151
sub ecx, edx
lea esi, [ecx*4]
push esi
push 0
push dword [ebp - 0xc]
call fcn.005c3040
mov eax, dword [ebp - 0xc]
add esp, 0xc
add eax, esi
mov esi, dword [ebp - 4]
mov dword [edi + 0x170], eax
mov ecx, dword [esi]
mov eax, dword [esi + 4]
lea esi, [edi + 0x16c]
sub eax, ecx
and eax, 0xfffffffc
push eax
push ecx
push dword [esi]
call fcn.005c3580
mov edx, dword [edi + 0x170]
add esp, 0xc
mov eax, dword [esi]
mov ecx, edx
sub ecx, eax
mov dword [ebp - 4], edx
sar ecx, 2
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x1c], ecx
cmp ecx, 0x20
jg 0x51a198
push 0x517540
mov ecx, eax
call fcn.00525010
jmp 0x51a1e6
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
push ecx
lea ecx, [ebp - 0x10a8]
call fcn.005250c0
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 0x24]
push 0x517540
push dword [ebp - 0x10a4]
push dword [ebp - 0x10a8]
push dword [ebp - 0x1c]
call fcn.00525160
add esp, 0x10
cmp dword [ebp - 0x10a4], 0x400
jbe 0x51a1e9
push dword [ebp - 0x10a8]
call fcn.005ab86a
add esp, 4
lea eax, [edi + 0x2b8]
mov dword [ebp - 0xc], eax
mov eax, dword [edi + 0x74]
mov dword [ebp - 0x1c], eax
cmp byte [eax + 0x161], 0
lea ecx, [eax + 0xbb0]
mov dword [ebp - 4], ecx
je 0x51a217
mov ecx, eax
call fcn.004a5e00
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 4]
add eax, 0x8b0
push eax
call fcn.005162e0
cmp byte [ebp - 5], 0
jne 0x51a508
mov ecx, dword [edi + 0x78]
mov eax, ecx
shr eax, 3
test al, 1
jne 0x51a481
test ecx, 0x1000
je 0x51a478
mov edx, dword [esi + 4]
mov ecx, dword [esi]
mov dword [ebp - 0x14], edx
mov dword [ebp - 4], ecx
cmp ecx, edx
je 0x51a34c
lea esi, [edi + 0x108]
mov edx, dword [ecx]
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 0x24], edx
imul ecx, eax, 0x1000193
mov eax, edx
shr eax, 8
movzx eax, al
mov dword [ebp - 0x1c], edx
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x10
movzx eax, al
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, esi
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.004301e0
mov eax, dword [eax + 4]
test eax, eax
jne 0x51a2be
mov eax, dword [esi + 4]
cmp eax, dword [edi + 0x10c]
je 0x51a2d0
mov eax, dword [edi + 0x78]
shr eax, 3
test al, 1
je 0x51a33a
mov esi, dword [ebp - 0x24]
mov al, byte [esi + 0xb8]
shr al, 1
test al, 1
jne 0x51a334
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x34]
call eax
test al, al
je 0x51a334
cmp dword [ebx + 8], 2
jne 0x51a306
mov ax, word [esi + 0xb8]
mov edx, 0xc00
and ax, dx
cmp ax, dx
jne 0x51a334
test byte [edi + 0x2b8], 1
je 0x51a32d
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x30]
call eax
cmp eax, 6
je 0x51a32d
test byte [edi + 0x2b8], 4
je 0x51a32d
mov ecx, edi
call fcn.005203d0
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x28]
lea esi, [edi + 0x108]
mov ecx, dword [ebp - 4]
add ecx, 4
mov dword [ebp - 4], ecx
cmp ecx, dword [ebp - 0x14]
jne 0x51a261
mov esi, dword [edi + 0x100]
lea eax, [edi + 0x88]
mov edx, dword [edi + 0xfc]
mov ecx, dword [edi + 0x74]
mov dword [ebp - 4], esi
add ecx, 0x10c
sub esi, edx
mov dword [ebp - 0x24], edx
sar esi, 2
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], eax
cmp esi, 0x20
jg 0x51a38e
mov edx, dword [ebp - 4]
lea eax, [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
push eax
call fcn.00525210
jmp 0x51a3db
mov eax, esi
mov ecx, esi
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
push ecx
lea ecx, [ebp - 0x10a8]
call fcn.005250c0
mov edx, dword [ebp - 4]
lea eax, [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
push eax
push dword [ebp - 0x10a4]
push dword [ebp - 0x10a8]
push esi
call fcn.005252f0
add esp, 0x10
cmp dword [ebp - 0x10a4], 0x400
jbe 0x51a3de
push dword [ebp - 0x10a8]
call fcn.005ab86a
add esp, 4
mov esi, dword [edi + 0x100]
mov eax, dword [edi + 0xfc]
mov dword [ebp - 0xc], esi
mov dword [ebp - 4], eax
cmp eax, esi
je 0x51a6c3
mov ecx, esi
nop word [eax + eax]
mov esi, dword [eax]
mov al, byte [esi + 0xb8]
shr al, 1
test al, 1
jne 0x51a466
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x34]
call eax
test al, al
je 0x51a463
cmp dword [ebx + 8], 2
jne 0x51a435
mov ax, word [esi + 0xb8]
mov ecx, 0xc00
and ax, cx
cmp ax, cx
jne 0x51a463
test byte [edi + 0x2b8], 1
je 0x51a45c
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x30]
call eax
cmp eax, 6
je 0x51a45c
test byte [edi + 0x2b8], 4
je 0x51a45c
mov ecx, edi
call fcn.005203d0
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x28]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
add eax, 4
mov dword [ebp - 4], eax
cmp eax, ecx
jne 0x51a400
jmp 0x51a6c3
lea eax, [edi + 0x2b8]
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 4]
mov esi, dword [esi]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], esi
cmp esi, eax
je 0x51a6c3
mov esi, dword [esi]
mov al, byte [esi + 0xb8]
shr al, 1
test al, 1
jne 0x51a4f5
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x34]
call eax
test al, al
je 0x51a4f5
cmp dword [ebx + 8], 2
jne 0x51a4c9
mov ax, word [esi + 0xb8]
mov ecx, 0xc00
and ax, cx
cmp ax, cx
jne 0x51a4f5
mov eax, dword [ebp - 0xc]
test byte [eax], 1
je 0x51a4ee
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x30]
call eax
cmp eax, 6
je 0x51a4ee
mov eax, dword [ebp - 0xc]
test byte [eax], 4
je 0x51a4ee
mov ecx, edi
call fcn.005203d0
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x28]
mov esi, dword [ebp - 4]
add esi, 4
mov dword [ebp - 4], esi
cmp esi, dword [ebp - 0x1c]
jne 0x51a494
jmp 0x51a6c3
mov ecx, dword [esi + 4]
mov eax, dword [esi]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 4], eax
cmp eax, ecx
je 0x51a6c3
nop dword [eax + eax]
mov esi, dword [eax]
mov ecx, esi
mov eax, dword [esi]
mov eax, dword [eax + 0x34]
call eax
test al, al
je 0x51a6b1
mov eax, dword [ebp - 0xc]
test byte [eax], 1
je 0x51a558
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x30]
call eax
cmp eax, 6
je 0x51a558
mov eax, dword [ebp - 0xc]
test byte [eax], 4
je 0x51a558
mov ecx, edi
call fcn.005203d0
mov eax, dword [edi + 0x74]
mov ecx, dword [eax + 4]
mov byte [eax + 0x161], 1
lea edx, [ecx + 0x40]
mov dword [eax + 4], edx
movups xmm0, xmmword [ecx]
movups xmmword [edx], xmm0
movups xmm0, xmmword [ecx + 0x10]
movups xmmword [edx + 0x10], xmm0
movups xmm0, xmmword [ecx + 0x20]
movups xmmword [edx + 0x20], xmm0
movups xmm0, xmmword [ecx + 0x30]
mov ecx, esi
movups xmmword [edx + 0x30], xmm0
mov eax, dword [esi + 0x134]
test eax, eax
je 0x51a5a1
mov ecx, eax
mov eax, dword [ecx + 0x134]
test eax, eax
jne 0x51a595
movss xmm1, dword [ecx + 0xc0]
subss xmm1, dword [edi + 0x1e8]
movss xmm7, dword [ecx + 0xc4]
subss xmm7, dword [edi + 0x1ec]
movss xmm0, dword [edi + 0x1dc]
movups xmmword [ebp - 0x50], xmm0
mulss xmm1, xmm0
mulss xmm7, xmm0
mulss xmm1, dword [ecx + 0x124]
mulss xmm7, dword [ecx + 0x128]
movss dword [ebp - 0x28], xmm1
mov eax, dword [ebp - 0x28]
mov dword [esi + 0x12c], eax
movss dword [ebp - 0x24], xmm7
mov ecx, dword [ebp - 0x24]
mov dword [esi + 0x130], ecx
mov eax, dword [edi + 0x74]
movaps xmmword [ebp - 0x40], xmm1
shufps xmm7, xmm7, 0
mov eax, dword [eax + 4]
movups xmm4, xmmword [eax]
movups xmm0, xmmword [eax + 0x30]
movups xmm1, xmmword [eax + 0x10]
movups xmm3, xmmword [eax + 0x20]
movups xmm2, xmmword [eax + 0x30]
movaps xmmword [ebp - 0x60], xmm4
movaps xmm4, xmmword [ebp - 0x40]
movups xmm5, xmmword [eax + 0x10]
movups xmmword [ebp - 0x70], xmm0
movups xmm0, xmmword [eax]
movups xmm6, xmmword [eax + 0x20]
shufps xmm4, xmm4, 0
mulps xmm4, xmm0
movups xmm0, xmmword [ebp - 0x50]
mulps xmm7, xmm1
movaps xmmword [ebp - 0x40], xmm4
xorps xmm4, xmm4
movaps xmm1, xmmword [ebp - 0x40]
mulss xmm0, xmm4
movaps xmm4, xmmword [ebp - 0x60]
addps xmm1, xmm7
movups xmmword [eax], xmm4
shufps xmm0, xmm0, 0
mulps xmm0, xmm3
movups xmmword [eax + 0x10], xmm5
movups xmmword [eax + 0x20], xmm6
addps xmm1, xmm0
addps xmm1, xmm2
movups xmmword [eax + 0x30], xmm1
movzx ecx, word [esi + 0xb8]
mov al, cl
shr al, 1
test al, 1
jne 0x51a6a3
cmp dword [ebx + 8], 2
jne 0x51a69c
and ecx, 0xc00
cmp ecx, 0xc00
jne 0x51a6a3
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x28]
mov eax, dword [edi + 0x74]
add dword [eax + 4], 0xffffffc0
mov byte [eax + 0x161], 1
mov eax, dword [ebp - 4]
add eax, 4
mov dword [ebp - 4], eax
cmp eax, dword [ebp - 0x1c]
jne 0x51a520
test byte [edi + 0x2b8], 4
je 0x51a6d3
mov ecx, edi
call fcn.005203d0
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4
call fcn.00410570
int3