Function at 0x458bb0
Capabilities:
Hash data using fnv

Disassembly:
sub esp, 0x38
push ebx
push ebp
mov ebp, dword [esp + 0x44]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x24]
shr ecx, 2
cmp eax, ecx
push esi
push edi
jbe 0x458eef
mov ebx, dword [esp + 0x54]
mov edx, dword [ebx + 0x18]
cmp edx, 0x10
lea esi, [ebx + 4]
jb 0x4ea72d
mov ecx, dword [esi]
mov eax, dword [ebx + 0x14]
lea ebp, [ecx + eax]
test ebp, ebp
mov dword [esp + 0x1c], ebp
je 0x4ea742
cmp edx, 0x10
jb 0x4ea734
mov ecx, dword [esi]
cmp ecx, ebp
ja 0x4ea742
cmp edx, 0x10
jb 0x4ea73b
mov ecx, dword [esi]
add ecx, eax
cmp ebp, ecx
ja 0x4ea742
mov eax, dword [ebx + 0x18]
cmp eax, 0x10
jb 0x4ea74c
mov edi, dword [esi]
test edi, edi
je 0x4ea75a
cmp eax, 0x10
jb 0x4ea753
mov ecx, dword [esi]
cmp ecx, edi
ja 0x4ea75a
cmp eax, 0x10
jb 0x458c4b
mov esi, dword [esi]
mov ecx, dword [ebx + 0x14]
add ecx, esi
cmp edi, ecx
ja 0x4ea75a
mov esi, ebx
mov dword [esp + 0x18], 0x811c9dc5
cmp esi, 0xfffffffe
je 0x458c77
test esi, esi
je 0x4ea764
cmp esi, ebx
jne 0x4ea764
cmp edi, ebp
je 0x458cf5
cmp esi, 0xfffffffe
mov ebx, edi
je 0x4ea78a
test esi, esi
je 0x4ea76e
mov ebp, 0x10
cmp dword [esi + 0x18], ebp
jb 0x4ea778
mov eax, dword [esi + 4]
mov edx, dword [esi + 0x14]
add edx, eax
cmp edi, edx
jae 0x4ea780
add edi, 1
cmp esi, 0xfffffffe
je 0x458cd5
test esi, esi
je 0x4ea794
cmp dword [esi + 0x18], ebp
jb 0x4ea79e
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x14]
add ecx, eax
cmp ebx, ecx
jae 0x4ea7a6
mov edx, dword [esp + 0x18]
movsx eax, byte [ebx]
imul edx, edx, 0x1000193
mov ebx, dword [esp + 0x54]
mov ebp, dword [esp + 0x1c]
xor edx, eax
mov dword [esp + 0x18], edx
jmp 0x458c62
mov ecx, dword [esp + 0x18]
push 0x1f31d
push ecx
call fcn.004acd6e
imul eax, eax, 0xb14
imul edx, edx, 0x41a7
add esp, 8
sub edx, eax
js 0x458ed6
mov edi, dword [esp + 0x4c]
mov eax, dword [edi + 0x20]
and edx, eax
mov ebp, edx
cmp dword [edi + 0x24], ebp
jbe 0x458ee1
mov ecx, dword [edi + 0x14]
add edi, 0x10
test ecx, ecx
mov dword [esp + 0x18], ebp
lea esi, [ebp + 1]
je 0x4ea7b0
mov eax, dword [edi + 8]
sub eax, ecx
sar eax, 3
cmp esi, eax
jae 0x4ea7b0
mov eax, dword [edi + 4]
mov ebx, dword [eax + esi*8]
mov esi, dword [eax + esi*8 + 4]
mov edi, edi
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x4ea7ba
mov eax, dword [edi + 8]
sub eax, ecx
sar eax, 3
cmp ebp, eax
jae 0x4ea7ba
mov eax, dword [edi + 4]
lea ecx, [ebp*8]
add eax, ecx
test ebx, ebx
mov dword [esp + 0x1c], eax
je 0x4ea7c4
cmp ebx, dword [eax]
jne 0x4ea7c4
cmp esi, dword [eax + 4]
je 0x458e1b
test ebx, ebx
je 0x4ea7d2
mov esi, dword [esi + 4]
cmp esi, dword [ebx + 4]
je 0x4ea7dc
cmp dword [esi + 0x20], 0x10
mov eax, dword [esi + 0x1c]
jb 0x4ea7f4
mov ecx, dword [esi + 0xc]
push eax
mov eax, dword [esp + 0x58]
push ecx
mov ecx, dword [eax + 0x14]
push ecx
push 0
call fcn.00451950
test eax, eax
jl 0x458d60
cmp esi, dword [ebx + 4]
je 0x4ea7fc
mov ecx, dword [esp + 0x54]
cmp dword [ecx + 0x18], 0x10
mov edx, dword [ecx + 0x14]
lea eax, [esi + 8]
jb 0x4ea806
add ecx, 4
mov ecx, dword [ecx]
push edx
mov edx, dword [eax + 0x14]
push ecx
push edx
push 0
call fcn.00451950
test eax, eax
jge 0x4ea818
cmp esi, dword [ebx + 4]
je 0x4ea80e
mov esi, dword [esi]
mov eax, dword [esp + 0x54]
mov ecx, dword [esi + 4]
push eax
push ecx
push esi
mov dword [esp + 0x2c], ebx
call fcn.0045f020
mov ecx, dword [esp + 0x4c]
mov ebp, eax
mov eax, dword [ecx + 0xc]
mov edx, 0x7ffffff
sub edx, eax
cmp edx, 1
jb 0x4ea82a
add eax, 1
mov dword [ecx + 0xc], eax
test ebx, ebx
mov dword [esi + 4], ebp
mov eax, dword [ebp + 4]
mov dword [eax], ebp
je 0x4ea83a
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x20]
cmp eax, dword [ecx + 4]
mov dword [esp + 0x24], eax
je 0x4ea844
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x4ea84e
mov eax, dword [edi + 8]
sub eax, ecx
sar eax, 3
cmp dword [esp + 0x18], eax
jae 0x4ea84e
mov eax, dword [esp + 0x18]
mov ebp, dword [edi + 4]
add eax, eax
add eax, eax
add eax, eax
add ebp, eax
test ebx, ebx
je 0x4ea858
cmp ebx, dword [ebp]
jne 0x4ea858
cmp esi, dword [ebp + 4]
je 0x459368
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov dword [eax], edx
mov dword [eax + 4], ecx
mov byte [eax + 8], 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret 0xc
add edx, 0x7fffffff
jmp 0x458d1b
shr eax, 1
or edx, 0xffffffff
sub edx, eax
add ebp, edx
jmp 0x458d2f
mov edx, dword [ebp + 0x14]
test edx, edx
lea esi, [ebp + 0x10]
je 0x4ea5bb
mov ecx, dword [esi + 8]
sub ecx, edx
sar ecx, 3
add ecx, 0xffffffff
cmp ecx, eax
jbe 0x45939f
mov ecx, dword [ebp + 0x20]
cmp ecx, eax
jb 0x4593d3
mov eax, dword [ebp + 0x20]
mov edi, dword [ebp + 0x24]
mov ecx, dword [esi + 4]
shr eax, 1
sub edi, eax
sub edi, 1
test ecx, ecx
mov dword [esp + 0x18], edi
je 0x4ea5c2
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 3
cmp edi, eax
jae 0x4ea5c2
mov esi, dword [esi + 4]
mov edx, dword [esi + edi*8]
mov ebx, dword [esi + edi*8 + 4]
mov dword [esp + 0x20], edx
mov ecx, dword [ebp + 0x14]
test ecx, ecx
lea esi, [ebp + 0x10]
mov dword [esp + 0x24], ebx
je 0x4ea5cc
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 3
lea ecx, [edi + 1]
cmp ecx, eax
jae 0x4ea5cc
mov ecx, dword [esi + 4]
add edi, 1
test edx, edx
lea esi, [ecx + edi*8]
je 0x4ea5da
cmp edx, dword [esi]
jne 0x4ea5da
cmp ebx, dword [esi + 4]
je 0x45931c
mov esi, dword [esp + 0x20]
test esi, esi
je 0x4ea5e4
cmp ebx, dword [esi + 4]
je 0x4ea5ee
mov ecx, dword [ebx + 0x20]
cmp ecx, 0x10
lea edi, [ebx + 8]
jb 0x4ea5f8
mov ebp, dword [edi + 4]
mov eax, dword [edi + 0x14]
add ebp, eax
mov dword [esp + 0x1c], ebp
je 0x4ea607
cmp ecx, 0x10
lea edx, [edi + 4]
jb 0x4ea600
mov esi, dword [edx]
cmp esi, ebp
ja 0x4ea607
cmp ecx, 0x10
jb 0x458fef
mov edx, dword [edx]
add edx, eax
cmp ebp, edx
ja 0x4ea607
mov eax, dword [edi + 0x18]
cmp eax, 0x10
jb 0x4ea611
mov esi, dword [edi + 4]
test esi, esi
je 0x4ea620
cmp eax, 0x10
lea ecx, [edi + 4]
jb 0x4ea619
mov edx, dword [ecx]
cmp edx, esi
ja 0x4ea620
cmp eax, 0x10
jb 0x45902d
mov ecx, dword [ecx]
mov edx, dword [edi + 0x14]
add edx, ecx
cmp esi, edx
ja 0x4ea620
mov dword [esp + 0x14], 0x811c9dc5
cmp edi, 0xfffffffe
je 0x45905a
test edi, edi
je 0x4ea62a
lea eax, [ebx + 8]
cmp edi, eax
jne 0x4ea62a
cmp esi, ebp
je 0x4590da
cmp edi, 0xfffffffe
mov ebp, edi
mov ebx, esi
je 0x4ea64b
test edi, edi
je 0x4ea634
mov ecx, 0x10
cmp dword [edi + 0x18], ecx
jb 0x4ea63e
mov eax, dword [edi + 4]
mov edx, dword [edi + 0x14]
add edx, eax
cmp esi, edx
jae 0x4ea646
add esi, 1
cmp ebp, 0xfffffffe
je 0x4590ba
test ebp, ebp
je 0x4ea655
cmp dword [ebp + 0x18], ecx
jb 0x4ea664
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 0x14]
add ecx, eax
cmp ebx, ecx
jae 0x4ea66c
mov edx, dword [esp + 0x14]
movsx eax, byte [ebx]
imul edx, edx, 0x1000193
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x1c]
xor edx, eax
mov dword [esp + 0x14], edx
jmp 0x459042
mov ecx, dword [esp + 0x14]
push 0x1f31d
push ecx
call fcn.004acd6e
imul eax, eax, 0xb14
imul edx, edx, 0x41a7
add esp, 8
sub edx, eax
js 0x4592c5
mov edi, dword [esp + 0x4c]
and edx, dword [edi + 0x20]
cmp edx, dword [esp + 0x18]
je 0x4592a7
mov eax, dword [esp + 0x20]
cmp ebx, dword [eax + 4]
mov ecx, dword [edi + 8]
lea esi, [edi + 4]
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], ecx
je 0x4ea680
cmp dword [esp + 0x28], esi
mov ebp, dword [ebx]
jne 0x4ea68a
cmp ebp, dword [esp + 0x34]
je 0x45920c
mov edx, dword [esp + 0x18]
mov dword [esp + 0x14], edx
lea ebx, [ebx]
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x4ea694
mov eax, dword [edi + 0x18]
sub eax, ecx
sar eax, 3
cmp edx, eax
jae 0x4ea694
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x4c]
mov edi, dword [eax + 0x14]
lea ecx, [edx*8]
add edi, ecx
mov ecx, dword [esp + 0x20]
cmp ecx, dword [edi]
jne 0x4ea69e
cmp ebx, dword [edi + 4]
je 0x4592d0
cmp esi, esi
mov edi, dword [esi + 4]
jne 0x4ea6c2
mov edx, dword [ebx + 4]
mov dword [edx], ebp
mov ecx, dword [ebp + 4]
mov dword [ecx], edi
mov edx, dword [edi + 4]
mov dword [edx], ebx
mov edx, dword [ebp + 4]
mov ecx, dword [edi + 4]
mov dword [edi + 4], edx
mov edx, dword [ebx + 4]
mov dword [ebp + 4], edx
mov dword [ebx + 4], ecx
mov ecx, dword [esi + 4]
mov ebx, dword [ecx + 4]
cmp ebx, ecx
je 0x4ea6d5
mov ecx, dword [esi + 4]
mov edi, dword [eax + 0x24]
mov dword [esp + 0x3c], ecx
mov ecx, dword [eax + 0x14]
add edi, 1
test ecx, ecx
mov dword [esp + 0x20], esi
je 0x4ea6e3
mov edx, dword [eax + 0x18]
sub edx, ecx
sar edx, 3
cmp edi, edx
jae 0x4ea6e3
mov eax, dword [eax + 0x14]
mov edx, dword [esp + 0x3c]
mov dword [eax + edi*8], esi
mov dword [eax + edi*8 + 4], edx
mov edi, dword [esp + 0x4c]
mov edi, dword [edi + 0x24]
cmp dword [esp + 0x18], edi
jae 0x45927b
mov dword [esp + 0x14], edi
lea esp, [esp]
mov eax, dword [esi + 4]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 0x14]
test ecx, ecx
je 0x4ea6f1
mov eax, dword [eax + 0x18]
sub eax, ecx
sar eax, 3
cmp dword [esp + 0x14], eax
jae 0x4ea6f1
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x4c]
mov edi, dword [edx + 0x14]
lea eax, [ecx*8]
add edi, eax
mov eax, dword [edi]
test eax, eax
je 0x4ea6fb
cmp eax, esi
jne 0x4ea6fb
mov eax, dword [esp + 0x44]
cmp dword [edi + 4], eax
je 0x459329
mov eax, dword [esp + 0x28]
cmp eax, esi
mov edi, dword [esi + 4]
jne 0x4ea71f
cmp ebp, edi
je 0x45931c
mov edi, dword [esp + 0x18]
mov ebx, ebp
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x20], eax
mov edx, eax
jmp 0x458f55
mov edx, dword [esp + 0x20]
cmp ebx, dword [edx + 4]
je 0x4ea676
mov ebx, dword [ebx]
mov edx, dword [esp + 0x20]
mov ebp, edi
mov edi, dword [esp + 0x18]
jmp 0x458f55
add edx, 0x7fffffff
jmp 0x459100
mov edi, dword [eax + 0x14]
test edi, edi
je 0x4ea6b0
mov ecx, dword [eax + 0x18]
sub ecx, edi
sar ecx, 3
cmp edx, ecx
jae 0x4ea6b0
mov ecx, dword [eax + 0x14]
mov edi, dword [esp + 0x28]
add edx, edx
add edx, edx
add edx, edx
cmp dword [esp + 0x14], 0
mov dword [edx + ecx], edi
mov dword [edx + ecx + 4], ebp
je 0x459194
sub dword [esp + 0x14], 1
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x14]
jmp 0x459150
mov eax, dword [esp + 0x4c]
add dword [eax + 0x24], 1
jmp 0x458bcc
mov edi, dword [edx + 0x14]
test edi, edi
je 0x4ea70d
mov eax, dword [edx + 0x18]
sub eax, edi
sar eax, 3
cmp ecx, eax
jae 0x4ea70d
mov edx, dword [edx + 0x14]
mov eax, dword [esp + 0x20]
mov dword [edx + ecx*8], eax
mov dword [edx + ecx*8 + 4], ebx
sub ecx, 1
cmp dword [esp + 0x18], ecx
mov dword [esp + 0x14], ecx
jb 0x459220
jmp 0x45927b
mov eax, edi
call fcn.0048d540
mov ebp, dword [esp + 0x18]
cmp ebp, eax
jae 0x4ea862
test ebp, ebp
mov eax, dword [edi + 4]
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov dword [eax + ebp*8], edx
mov dword [eax + ebp*8 + 4], ecx
je 0x458eb7
sub dword [esp + 0x18], 1
jmp 0x458e71
mov eax, esi
call fcn.0048d540
lea edx, [eax + eax - 3]
lea ecx, [ebp + 4]
lea eax, [esp + 0x28]
mov dword [ebp + 0x20], edx
call fcn.0040a100
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
mov edi, dword [ebp + 0x20]
push eax
push ecx
add edi, 2
call fcn.0048b110
jmp 0x458f1b
lea edx, [ecx + ecx + 1]
mov dword [ebp + 0x20], edx
jmp 0x458f1b
xor ecx, ecx
jmp 0x458f05
call fcn.004aaae6
jmp 0x458f47
call fcn.004aaae6
mov edx, dword [esp + 0x20]
jmp 0x458f7a
call fcn.004aaae6
jmp 0x458f93
call fcn.004aaae6
jmp 0x458fa8
call fcn.004aaae6
jmp 0x458fb1
lea ebp, [edi + 4]
jmp 0x458fc3
mov esi, edx
jmp 0x458fe0
call fcn.004aaae6
jmp 0x458ff9
lea esi, [edi + 4]
jmp 0x459008
mov edx, ecx
jmp 0x45901e
call fcn.004aaae6
jmp 0x45903a
call fcn.004aaae6
jmp 0x45905a
call fcn.004aaae6
jmp 0x459073
lea eax, [edi + 4]
jmp 0x459084
call fcn.004aaae6
mov ecx, 0x10
jmp 0x459091
call fcn.004aaae6
mov ecx, 0x10
jmp 0x4590a1
lea eax, [ebp + 4]
jmp 0x4590ad
call fcn.004aaae6
jmp 0x4590ba
call fcn.004aaae6
jmp 0x4592b4
call fcn.004aaae6
jmp 0x45912c
call fcn.004aaae6
jmp 0x459138
call fcn.004aaae6
jmp 0x45916b
call fcn.004aaae6
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x14]
jmp 0x45918b
call fcn.004aaae6
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x14]
jmp 0x4592eb
push 0
push 0
push esi
call fcn.00520894
mov eax, dword [esp + 0x4c]
jmp 0x45919f
call fcn.004aaae6
mov eax, dword [esp + 0x4c]
jmp 0x4591ce
call fcn.004aaae6
mov eax, dword [esp + 0x4c]
jmp 0x4591fa
call fcn.004aaae6
jmp 0x459248
call fcn.004aaae6
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x14]
jmp 0x45926e
call fcn.004aaae6
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x14]
jmp 0x459344
call fcn.004aaae6
mov eax, dword [esp + 0x28]
jmp 0x45928a
mov ecx, esi
jmp 0x458be1
mov ecx, esi
jmp 0x458bfe
mov ecx, esi
jmp 0x458c11
call fcn.004aaae6
jmp 0x458c1b
mov edi, esi
jmp 0x458c29
mov ecx, esi
jmp 0x458c3c
call fcn.004aaae6
jmp 0x458c58
call fcn.004aaae6
jmp 0x458c77
call fcn.004aaae6
jmp 0x458c8e
lea eax, [esi + 4]
jmp 0x458c9f
call fcn.004aaae6
jmp 0x458cac
mov ebp, 0x10
jmp 0x458cac
call fcn.004aaae6
jmp 0x458cbc
lea eax, [esi + 4]
jmp 0x458cc8
call fcn.004aaae6
jmp 0x458cd5
call fcn.004aaae6
jmp 0x458d54
call fcn.004aaae6
jmp 0x458d7b
call fcn.004aaae6
mov eax, dword [esp + 0x1c]
jmp 0x458d9b
call fcn.004aaae6
jmp 0x458da8
call fcn.004aaae6
cmp esi, dword [ebx + 4]
jne 0x458db4
call fcn.004aaae6
jmp 0x458db4
lea ecx, [esi + 0xc]
jmp 0x458dc4
call fcn.004aaae6
jmp 0x458de2
add ecx, 4
jmp 0x458dfb
call fcn.004aaae6
jmp 0x458e19
mov eax, dword [esp + 0x50]
mov dword [eax], ebx
mov dword [eax + 4], esi
mov byte [eax + 8], 0
jmp 0x458ecc
push 1
push 0
push 0
call fcn.00520894
jmp 0x458e4d
call fcn.004aaae6
jmp 0x458e5d
call fcn.004aaae6
jmp 0x458e71
call fcn.004aaae6
jmp 0x458e8e
call fcn.004aaae6
jmp 0x458eae
call fcn.004aaae6
jmp 0x45937b