Function at 0x4876d0
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x56bdb5
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x4c
push ebx
push esi
push edi
mov esi, ecx
xor ebx, ebx
xor edi, edi
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x38], edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x14], edi
mov eax, dword [esi]
mov dword [ebp - 0x10], eax
test eax, eax
je 0x487719
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 2
call dword [ecx + 4]
mov eax, dword [ebp - 0x10]
mov byte [ebp - 4], 3
test eax, eax
je 0x48776e
mov ecx, dword [eax]
lea edx, [ebp - 0x14]
push edx
push eax
call dword [ecx + 0xc]
test eax, eax
jns 0x4877b6
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
mov dword [esi], 0
test eax, eax
je 0x487754
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 5
call dword [ecx + 8]
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x487adb
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 6
call dword [ecx + 8]
jmp 0x487adb
mov ecx, dword [ebp + 0xc]
sub esp, 8
mov eax, esp
mov ecx, dword [ecx + 0x20]
mov dword [eax], str.std:local
mov dword [eax + 4], 9
lea eax, [ebp - 0x24]
push eax
call fcn.004896b0
mov ecx, dword [ebp - 0x24]
mov ebx, 2
mov eax, dword [ebp - 0x14]
cmp eax, ecx
je 0x4877a8
mov edx, ecx
mov ecx, eax
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x14], edx
test ecx, ecx
je 0x4877b6
mov eax, dword [ecx]
push ecx
mov byte [ebp - 4], 8
call dword [eax + 8]
mov eax, dword [ebp - 0x1c]
mov esi, dword [esi + 4]
mov dword [ebp - 0x24], 0
mov eax, dword [eax + 8]
sub eax, esi
sar eax, 3
test eax, eax
je 0x487a92
jmp 0x4877e0
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 9
mov ecx, dword [eax]
mov edx, dword [ecx + 0x4c]
mov ecx, dword [ebp - 0x24]
shl ecx, 3
mov dword [ebp - 0x20], ecx
mov ecx, dword [esi + ecx]
lea esi, [ebp - 0x18]
push esi
push dword [ebp - 0x10]
push 0
push dword [ecx]
push eax
call edx
test eax, eax
js 0x487bbd
push dword [ebp - 0x18]
lea eax, [ebp - 0x28]
push dword [ebp - 0x14]
push eax
call fcn.00488c20
add esp, 0xc
mov ecx, dword [eax]
cmp edi, ecx
je 0x487834
mov dword [eax], edi
mov edi, ecx
mov dword [ebp - 0x38], edi
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x487850
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0xf
call dword [ecx + 8]
mov byte [ebp - 4], 9
mov dword [ebp - 0x28], 0
test edi, edi
je 0x487b6a
mov eax, dword [ebp + 0xc]
sub esp, 8
mov esi, esp
mov ecx, dword [eax + 0x20]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 4]
add eax, dword [ebp - 0x20]
mov eax, dword [eax]
mov edx, dword [eax + 8]
mov eax, dword [eax + 4]
and edx, 0x7fffffff
mov dword [esi], eax
lea eax, [ebp - 0x2c]
push eax
mov dword [esi + 4], edx
call fcn.004896b0
mov ecx, eax
mov eax, dword [ebp - 0x14]
mov edx, dword [ecx]
cmp eax, edx
je 0x487898
mov dword [ecx], eax
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x4878b4
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x15
call dword [ecx + 8]
mov byte [ebp - 4], 9
mov dword [ebp - 0x2c], 0
cmp dword [ebp - 0x14], 0
je 0x487b50
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 4]
add eax, dword [ebp - 0x20]
mov eax, dword [eax]
mov edx, dword [eax]
mov eax, edx
shr eax, 8
movzx ecx, al
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 0x3c], edx
imul eax, eax, 0x1000193
xor ecx, eax
mov eax, edx
shr eax, 0x10
imul ecx, ecx, 0x1000193
movzx eax, al
shr edx, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [ebp + 0xc]
xor eax, edx
imul eax, eax, 0x1000193
push eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.00414be0
mov esi, dword [eax + 4]
test esi, esi
je 0x487946
mov eax, dword [ebp + 0xc]
cmp esi, dword [eax + 4]
je 0x487946
mov esi, dword [esi + 0xc]
test esi, esi
je 0x48793c
mov eax, dword [esi]
push esi
mov byte [ebp - 4], 0x17
call dword [eax + 4]
mov byte [ebp - 4], 9
lea eax, [ebp - 0x34]
mov ecx, 0x14
jmp 0x487950
lea eax, [ebp - 0x30]
xor esi, esi
mov ecx, 0x18
or ebx, ecx
mov dword [ebp - 0x3c], esi
mov dword [eax], 0
test bl, 8
je 0x48797f
mov eax, dword [ebp - 0x30]
and ebx, 0xfffffff7
test eax, eax
je 0x48797f
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x19
call dword [ecx + 8]
mov byte [ebp - 4], 9
mov dword [ebp - 0x30], 0
test bl, 4
je 0x4879a3
mov eax, dword [ebp - 0x34]
and ebx, 0xfffffffb
test eax, eax
je 0x4879a3
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x1a
call dword [ecx + 8]
mov byte [ebp - 4], 9
mov dword [ebp - 0x34], 0
mov eax, dword [ebp - 0x10]
cmp eax, esi
je 0x4879af
mov dword [ebp - 0x10], esi
jmp 0x4879b2
mov eax, dword [ebp - 0x3c]
and ebx, 0xffffffef
test eax, eax
je 0x4879c7
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x1b
call dword [ecx + 8]
mov byte [ebp - 4], 9
cmp dword [ebp - 0x10], 0
jne 0x487a64
mov eax, dword [ebp - 0x14]
lea edx, [ebp - 0x10]
push edx
push 0
push 0
mov ecx, dword [eax]
push 0
push 0
push edi
push eax
call dword [ecx + 0x3c]
test eax, eax
js 0x487af0
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x10]
mov eax, dword [eax + 4]
add eax, dword [ebp - 0x20]
mov dword [ebp - 0x20], esi
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [ebp - 0x3c], eax
test esi, esi
je 0x487a16
mov eax, dword [esi]
push esi
mov byte [ebp - 4], 0x21
call dword [eax + 4]
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], esi
test esi, esi
je 0x487a2a
mov eax, dword [esi]
push esi
mov byte [ebp - 4], 0x23
call dword [eax + 4]
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x58]
mov byte [ebp - 4], 0x24
push eax
call fcn.004843d0
mov ecx, dword [ebp - 0x44]
test ecx, ecx
je 0x487a56
mov eax, dword [ecx]
push ecx
mov byte [ebp - 4], 0x25
call dword [eax + 8]
mov dword [ebp - 0x44], 0
test esi, esi
je 0x487a64
mov eax, dword [esi]
push esi
mov byte [ebp - 4], 0x26
call dword [eax + 8]
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x487a75
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x27
call dword [ecx + 8]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x24]
inc ecx
mov dword [ebp - 0x24], ecx
mov esi, dword [eax + 4]
mov eax, dword [eax + 8]
sub eax, esi
sar eax, 3
cmp ecx, eax
jb 0x4877e0
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x38], 0
mov dword [esi], 0
mov dword [esi], edi
test eax, eax
je 0x487abc
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x28
call dword [ecx + 8]
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x487ad4
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x29
call dword [ecx + 8]
mov dword [ebp - 0x14], 0
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 8
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x18]
mov dword [esi], 0
test eax, eax
je 0x487b11
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x1d
call dword [ecx + 8]
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x487b29
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x1e
call dword [ecx + 8]
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x487b41
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x1f
call dword [ecx + 8]
mov dword [ebp - 0x14], 0
mov ecx, dword [edi]
push edi
mov dword [ebp - 4], 0x20
call dword [ecx + 8]
jmp 0x487adb
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x487a92
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x16
call dword [ecx + 8]
jmp 0x487a92
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x18]
mov dword [esi], 0
test eax, eax
je 0x487b8b
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x11
call dword [ecx + 8]
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x487ba3
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x12
call dword [ecx + 8]
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x487adb
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0x13
call dword [ecx + 8]
jmp 0x487adb
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x18]
mov dword [esi], 0
test eax, eax
je 0x487bde
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0xb
call dword [ecx + 8]
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x487bf6
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0xc
call dword [ecx + 8]
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x487c0e
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 0xd
call dword [ecx + 8]
mov dword [ebp - 0x14], 0
mov dword [ebp - 4], 0xffffffff
test edi, edi
je 0x487adb
mov eax, dword [edi]
push edi
mov dword [ebp - 4], 0xe
call dword [eax + 8]
jmp 0x487adb