Function at 0x474b20
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5218a1
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xf4
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ecx
mov dword [ebp - 0x1c], esi
push esi
lea ecx, [ebp - 0x100]
call fcn.00465430
push eax
lea ecx, [ebp - 0xac]
mov dword [ebp - 4], 0
mov dword [ebp - 0xb0], esi
call fcn.00472090
lea eax, [ebp - 0xb0]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0x2c]
push eax
lea ecx, [edi + 0x18]
call fcn.00471bf0
lea ecx, [ebp - 0xac]
call fcn.00472970
lea ecx, [ebp - 0x100]
mov dword [ebp - 4], 0xffffffff
call fcn.00472970
cmp byte [ebp - 0x28], 0
lea eax, [edi + 0x44]
mov dword [ebp - 0x14], eax
je 0x474bbe
lea ecx, [ebp - 0x1c]
push ecx
lea ecx, [ebp - 0x2c]
push ecx
mov ecx, eax
call fcn.00476110
jmp 0x474bc1
mov dword [ebp - 0x14], eax
mov esi, dword [ebp + 0xc]
lea ecx, [ebp - 0x100]
push esi
mov dword [ebp - 0x1c], esi
call fcn.00465430
push eax
lea ecx, [ebp - 0xac]
mov dword [ebp - 4], 2
mov dword [ebp - 0xb0], esi
call fcn.00472090
lea eax, [ebp - 0xb0]
mov byte [ebp - 4], 3
push eax
lea eax, [ebp - 0x2c]
push eax
lea ecx, [edi + 0x18]
call fcn.00471bf0
lea ecx, [ebp - 0xac]
call fcn.00472970
lea ecx, [ebp - 0x100]
mov dword [ebp - 4], 0xffffffff
call fcn.00472970
cmp byte [ebp - 0x28], 0
je 0x474c36
mov ecx, dword [ebp - 0x14]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.00476110
lea eax, [ebp + 8]
push eax
lea ecx, [edi + 0x18]
call fcn.0046f9d0
mov esi, eax
lea ecx, [edi + 0x18]
lea eax, [ebp + 0xc]
mov dword [ebp - 0x14], esi
push eax
call fcn.0046f9d0
mov ecx, dword [esi + 0x3c]
mov dword [ebp + 8], eax
mov eax, dword [edi + 0x64]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], esi
mov dword [ebp + 0xc], eax
cmp ecx, dword [esi + 0x40]
je 0x474c72
mov dword [ecx], eax
add dword [esi + 0x3c], 4
jmp 0x474c82
lea eax, [ebp + 0xc]
push eax
push ecx
lea ecx, [esi + 0x38]
call fcn.00401f20
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax + 0x48]
lea edx, [eax + 0x44]
cmp ecx, dword [eax + 0x4c]
je 0x474c95
mov dword [ecx], esi
add dword [eax + 0x48], 4
jmp 0x474ca1
lea eax, [ebp - 0x20]
push eax
push ecx
mov ecx, edx
call fcn.00401f20
mov ecx, dword [ebp + 8]
mov esi, dword [edi + 0x64]
mov dword [ebp - 0x20], ecx
mov dword [ebp + 0xc], esi
mov eax, dword [ecx + 0x3c]
lea edx, [ecx + 0x38]
cmp eax, dword [ecx + 0x40]
je 0x474cc0
mov dword [eax], esi
add dword [ecx + 0x3c], 4
jmp 0x474ccf
lea ecx, [ebp + 0xc]
push ecx
push eax
mov ecx, edx
call fcn.00401f20
mov ecx, dword [ebp + 8]
mov eax, dword [esi + 0x48]
cmp eax, dword [esi + 0x4c]
je 0x474cdf
mov dword [eax], ecx
add dword [esi + 0x48], 4
jmp 0x474cef
lea ecx, [ebp - 0x20]
push ecx
push eax
lea ecx, [esi + 0x44]
call fcn.00401f20
mov ecx, dword [ebp + 8]
mov eax, dword [edi + 0x64]
sub esp, 0xc
mov edx, dword [ebp - 0x14]
or dword [eax + 0x28], 4
mov eax, esp
or dword [edx + 0x28], 8
or dword [ecx + 0x28], 0x20
mov ecx, dword [edi + 0x64]
push edx
push ecx
push 3
lea ecx, [ebp - 0x44]
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0
call fcn.0046af80
lea eax, [ebp - 0x44]
mov dword [ebp - 4], 4
push eax
mov ecx, edi
call fcn.00472ea0
mov edx, dword [ebp - 0x40]
mov esi, eax
mov dword [ebp - 0x28], esi
mov dword [ebp - 4], 0xffffffff
test edx, edx
je 0x474d93
mov ecx, dword [ebp - 0x38]
mov eax, edx
sub ecx, edx
and ecx, 0xfffffffc
cmp ecx, 0x1000
jb 0x474d74
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4750cb
push ecx
push edx
call fcn.004fa253
add esp, 8
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x38], 0
sub esp, 0xc
lea ecx, [ebp - 0x5c]
mov eax, esp
push 0
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov eax, dword [ebp + 8]
push eax
push 2
call fcn.0046af80
lea eax, [ebp - 0x5c]
mov dword [ebp - 4], 5
push eax
mov ecx, edi
call fcn.00472ea0
mov edx, dword [ebp - 0x58]
mov dword [ebp - 0x10], eax
mov dword [ebp - 4], 0xffffffff
test edx, edx
je 0x474e24
mov ecx, dword [ebp - 0x50]
mov eax, edx
sub ecx, edx
and ecx, 0xfffffffc
cmp ecx, 0x1000
jb 0x474e05
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4750d0
push ecx
push edx
call fcn.004fa253
add esp, 8
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], 0
mov dword [ebp + 0xc], esi
lea ecx, [ebp + 0xc]
lea eax, [ebp + 0x10]
sub esp, 0xc
mov esi, esp
sub eax, ecx
mov dword [ebp - 0x20], eax
sar eax, 2
mov dword [ebp - 0x24], esi
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x474e7e
push eax
mov ecx, esi
call fcn.00475590
push dword [ebp - 0x20]
mov esi, dword [esi]
lea eax, [ebp + 0xc]
push eax
push esi
call fcn.004fbbd0
mov eax, dword [ebp - 0x1c]
add esp, 0xc
mov ecx, dword [ebp - 0x24]
lea eax, [esi + eax*4]
mov dword [ecx + 4], eax
mov esi, dword [ebp - 0x10]
mov ecx, esi
call fcn.0046b5e0
mov dword [ebp + 0xc], esi
lea ecx, [ebp + 0xc]
lea eax, [ebp + 0x10]
sub esp, 0xc
mov esi, esp
sub eax, ecx
mov dword [ebp - 0x10], eax
sar eax, 2
mov dword [ebp - 0x20], esi
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [ebp - 0x24], eax
test eax, eax
je 0x474ee2
push eax
mov ecx, esi
call fcn.00475590
push dword [ebp - 0x10]
mov esi, dword [esi]
lea eax, [ebp + 0xc]
push eax
push esi
call fcn.004fbbd0
mov eax, dword [ebp - 0x24]
add esp, 0xc
mov ecx, dword [ebp - 0x20]
lea eax, [esi + eax*4]
mov dword [ecx + 4], eax
mov ecx, dword [ebp - 0x28]
call fcn.0046b5e0
mov eax, dword [ebp - 0x14]
lea ecx, [edi + 0x1a8]
mov esi, dword [edi + 0x64]
mov dword [ebp + 0xc], eax
lea eax, [ebp + 0xc]
push eax
call fcn.00472c10
mov edx, dword [ebp + 8]
mov dword [eax], esi
lea esi, [edi + 0x1c8]
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 0x14], esi
imul ecx, eax, 0x1000193
mov eax, edx
shr eax, 8
movzx eax, al
mov dword [ebp + 0xc], 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 + 0xc]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.00465c40
mov eax, dword [eax + 4]
test eax, eax
jne 0x474f68
mov eax, dword [esi + 4]
lea esi, [edi + 0x64]
mov ecx, dword [ebp - 0x14]
cmp eax, dword [edi + 0x1cc]
jne 0x47507b
mov eax, dword [esi]
lea edi, [ebp + 0x10]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x28]
push eax
call fcn.00472d50
mov esi, eax
lea eax, [ebp + 0xc]
sub edi, eax
mov dword [ebp + 8], esi
sar edi, 2
mov dword [ebp - 0x10], edi
mov edx, dword [esi]
mov ecx, dword [esi + 8]
sub ecx, edx
mov dword [ebp - 0x24], edx
sar ecx, 2
cmp edi, ecx
jbe 0x474fed
push edi
mov ecx, esi
call fcn.00475680
mov edi, dword [esi]
lea eax, [ebp + 0xc]
mov esi, dword [ebp - 0x10]
shl esi, 2
push esi
push eax
push edi
call fcn.004fbbd0
lea eax, [edi + esi]
add esp, 0xc
mov esi, dword [ebp + 8]
mov dword [esi + 4], eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8
mov eax, dword [esi + 4]
sub eax, edx
sar eax, 2
mov dword [ebp - 0x10], eax
cmp edi, eax
jbe 0x475047
lea esi, [eax*4]
push esi
lea eax, [ebp + 0xc]
push eax
push edx
call fcn.004fbbd0
sub edi, dword [ebp - 0x10]
lea eax, [ebp + 0xc]
add eax, esi
shl edi, 2
mov esi, dword [ebp + 8]
push edi
push eax
mov esi, dword [esi + 4]
push esi
call fcn.004fbbd0
mov ecx, dword [ebp + 8]
lea eax, [esi + edi]
add esp, 0x18
mov dword [ecx + 4], eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8
lea esi, [edi*4]
push esi
lea eax, [ebp + 0xc]
push eax
push edx
call fcn.004fbbd0
mov ecx, dword [ebp + 8]
add esp, 0xc
mov eax, dword [ebp - 0x24]
add eax, esi
mov dword [ecx + 4], eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebp + 8]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x10]
push eax
call fcn.00472d50
mov edx, dword [eax + 4]
cmp edx, dword [eax + 8]
je 0x4750ae
mov ecx, dword [esi]
mov dword [edx], ecx
add dword [eax + 4], 4
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8
push esi
push edx
mov ecx, eax
call fcn.00401f20
mov ecx, dword [ebp - 0xc]
xor eax, eax
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
ret 8
call fcn.004ff45f
call fcn.004ff45f
int3