Function at 0x4586e0
Capabilities:
Hash data using fnv

Disassembly:
sub esp, 0x10
push ebx
mov ebx, dword [esp + 0x20]
mov eax, dword [ebx + 0x18]
cmp eax, 0x10
push ebp
push esi
push edi
lea esi, [ebx + 4]
jb 0x4e223d
mov edx, dword [esi]
mov ecx, dword [ebx + 0x14]
lea edi, [ecx + edx]
test edi, edi
mov dword [esp + 0x10], edi
je 0x4e2252
cmp eax, 0x10
jb 0x4e2244
mov edx, dword [esi]
cmp edx, edi
ja 0x4e2252
cmp eax, 0x10
jb 0x4e224b
mov eax, dword [esi]
add ecx, eax
cmp edi, ecx
ja 0x4e2252
mov eax, dword [ebx + 0x18]
cmp eax, 0x10
jb 0x4e225c
mov edi, dword [esi]
test edi, edi
je 0x4e226a
cmp eax, 0x10
jb 0x4e2263
mov ecx, dword [esi]
cmp ecx, edi
ja 0x4e226a
cmp eax, 0x10
jb 0x458766
mov esi, dword [esi]
mov eax, dword [ebx + 0x14]
add eax, esi
cmp edi, eax
ja 0x4e226a
mov esi, ebx
mov ebp, 0x811c9dc5
lea ebx, [ebx]
cmp esi, 0xfffffffe
je 0x458795
test esi, esi
je 0x4e2274
cmp esi, ebx
jne 0x4e2274
cmp edi, dword [esp + 0x10]
je 0x458807
cmp esi, 0xfffffffe
mov ebx, edi
je 0x4e2295
test esi, esi
je 0x4e227e
mov ecx, 0x10
cmp dword [esi + 0x18], ecx
jb 0x4e2288
mov eax, dword [esi + 4]
mov edx, dword [esi + 0x14]
add edx, eax
cmp edi, edx
jae 0x4e2290
add edi, 1
cmp esi, 0xfffffffe
je 0x4587f5
test esi, esi
je 0x4e229f
cmp dword [esi + 0x18], ecx
jb 0x4e22ae
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x14]
add ecx, eax
cmp ebx, ecx
jae 0x4e22b6
movsx edx, byte [ebx]
imul ebp, ebp, 0x1000193
xor ebp, edx
mov ebx, esi
jmp 0x458780
push 0x1f31d
push ebp
call fcn.004acd6e
imul edx, edx, 0x41a7
imul eax, eax, 0xb14
add esp, 8
sub edx, eax
js 0x458968
mov edi, dword [esp + 0x24]
mov eax, dword [edi + 0x20]
mov esi, eax
and esi, edx
cmp dword [edi + 0x24], esi
jbe 0x458973
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x4e22c0
mov eax, dword [edi + 0x18]
sub eax, ecx
sar eax, 3
cmp esi, eax
jae 0x4e22c0
mov eax, dword [edi + 0x14]
mov ebp, dword [eax + esi*8]
mov ebx, dword [eax + esi*8 + 4]
add esi, 1
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], esi
lea ecx, [ecx]
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x4e22ca
mov eax, dword [edi + 0x18]
sub eax, ecx
sar eax, 3
cmp esi, eax
jae 0x4e22ca
test ebp, ebp
mov edx, dword [edi + 0x14]
lea esi, [edx + esi*8]
je 0x4e22d4
cmp ebp, dword [esi]
jne 0x4e22d4
cmp ebx, dword [esi + 4]
je 0x458999
test ebp, ebp
je 0x4e22de
cmp ebx, dword [ebp + 4]
je 0x4e22e8
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + 0x14]
mov esi, 0x10
cmp dword [eax + 0x18], esi
jb 0x4e22f2
add eax, 4
mov eax, dword [eax]
mov ecx, dword [ebx + 0x1c]
cmp ecx, edx
jb 0x4588de
mov ecx, edx
cmp dword [ebx + 0x20], esi
jb 0x4e22fa
mov esi, dword [ebx + 0xc]
mov edi, eax
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x4588f7
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x458915
jge 0x45891a
cmp ebx, dword [ebp + 4]
je 0x4e2302
mov ebx, dword [ebx]
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x10]
jmp 0x458870
cmp dword [ebx + 0x1c], edx
jb 0x4588fd
cmp ebx, dword [ebp + 4]
mov dword [esp + 0x1c], ebx
je 0x4e230c
cmp dword [ebx + 0x20], 0x10
mov eax, dword [ebx + 0x1c]
jb 0x4e2316
mov ebx, dword [ebx + 0xc]
push eax
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x14]
push ebx
push ecx
push 0
call fcn.00451950
test eax, eax
jl 0x458981
lea ecx, [esp + 0x18]
mov edx, dword [ecx]
mov eax, dword [esp + 0x28]
mov ecx, dword [ecx + 4]
mov dword [eax], edx
mov dword [eax + 4], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret 0xc
add edx, 0x7fffffff
jmp 0x458829
shr eax, 1
or ecx, 0xffffffff
sub ecx, eax
add esi, ecx
jmp 0x45883d
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 8]
add eax, 4
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x10]
jmp 0x458950
mov eax, dword [esp + 0x28]
mov edx, dword [edi + 8]
lea ecx, [edi + 4]
pop edi
pop esi
pop ebp
mov dword [eax + 4], edx
mov dword [eax], ecx
pop ebx
add esp, 0x10
ret 0xc
mov edx, esi
jmp 0x4586fc
mov edx, esi
jmp 0x458719
mov eax, esi
jmp 0x45872c
call fcn.004aaae6
jmp 0x458736
mov edi, esi
jmp 0x458744
mov ecx, esi
jmp 0x458757
call fcn.004aaae6
jmp 0x458773
call fcn.004aaae6
jmp 0x458795
call fcn.004aaae6
jmp 0x4587ae
lea eax, [esi + 4]
jmp 0x4587bf
call fcn.004aaae6
mov ecx, 0x10
jmp 0x4587cc
call fcn.004aaae6
mov ecx, 0x10
jmp 0x4587dc
lea eax, [esi + 4]
jmp 0x4587e8
call fcn.004aaae6
jmp 0x4587f5
call fcn.004aaae6
jmp 0x458858
call fcn.004aaae6
jmp 0x45888b
call fcn.004aaae6
jmp 0x4588a1
call fcn.004aaae6
jmp 0x4588b2
call fcn.004aaae6
jmp 0x4588bb
add eax, 4
jmp 0x4588d5
lea esi, [ebx + 0xc]
jmp 0x4588ea
call fcn.004aaae6
jmp 0x458906
call fcn.004aaae6
jmp 0x458927
add ebx, 0xc
jmp 0x458937