Function at 0x403520
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
mov eax, dword [0x427010]
xor eax, esp
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x18]
push ebx
mov ebx, dword [ebp + 0x14]
test ebx, ebx
mov dword [esp + 0x24], eax
setne al
mov word [esp + 0x28], 0xb000
push esi
push edi
mov edi, ecx
mov ecx, dword [ebp + 8]
lea eax, [eax*4 + 0xd]
mov byte [esp + 0x34], cl
mov byte [esp + 0x32], al
mov eax, ecx
sar eax, 8
mov ecx, dword [edi + 0x898]
mov byte [esp + 0x33], al
mov eax, dword [edi + 0x89c]
sub eax, ecx
cmp eax, 5
jbe 0x403582
mov al, byte [ecx + 5]
jmp 0x403584
mov al, 0xc1
mov edx, dword [edi + 0x888]
mov esi, 8
mov byte [esp + 0x35], al
mov word [esp + 0x36], 0
mov dword [esp + 0x20], esi
cmp edx, ebx
je 0x4036ee
movzx eax, dl
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
mov eax, edx
shr eax, 8
movzx eax, al
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, dword [edi + 0x860]
and ecx, eax
mov eax, dword [edi + 0x854]
mov dword [esp + 0x14], ecx
mov edx, dword [eax + ecx*8 + 4]
mov eax, dword [edi + 0x84c]
mov dword [esp + 0x18], eax
cmp edx, eax
je 0x40369b
mov eax, dword [edi + 0x854]
mov ecx, dword [eax + ecx*8]
mov eax, dword [edi + 0x888]
cmp eax, dword [edx + 8]
je 0x40362c
nop dword [eax]
cmp edx, ecx
je 0x40369b
mov edx, dword [edx + 4]
cmp eax, dword [edx + 8]
jne 0x403620
test edx, edx
je 0x40369b
mov ecx, dword [esp + 0x14]
mov ebx, dword [edi + 0x854]
mov eax, dword [ebx + ecx*8]
cmp dword [ebx + ecx*8 + 4], edx
jne 0x40365d
cmp eax, edx
jne 0x403654
mov eax, dword [esp + 0x18]
mov dword [ebx + ecx*8], eax
mov dword [ebx + ecx*8 + 4], eax
jmp 0x403666
mov eax, dword [edx + 4]
mov dword [ebx + ecx*8 + 4], eax
jmp 0x403666
cmp eax, edx
jne 0x403666
mov eax, dword [edx]
mov dword [ebx + ecx*8], eax
mov ecx, dword [edx]
dec dword [edi + 0x850]
mov eax, dword [edx + 4]
mov dword [eax], ecx
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov ecx, dword [edx - 4]
sub edx, ecx
lea eax, [edx - 4]
cmp eax, 0x1f
ja 0x403895
push 0x103b
push ecx
call fcn.004081dc
mov ebx, dword [ebp + 0x14]
add esp, 8
test ebx, ebx
je 0x4036e8
lea eax, [ebp + 0x14]
push eax
lea eax, [esp + 0x1c]
push eax
lea ecx, [edi + 0x848]
call fcn.00404530
push 0x100c
push 0x423c60
mov eax, dword [eax]
add eax, 0xc
push eax
call fcn.0040ac00
add esp, 0xc
lea eax, [ebp + 0x14]
lea ecx, [edi + 0x848]
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.00404530
mov eax, dword [eax]
mov byte [eax + 0xc], 1
mov ebx, dword [ebp + 0x14]
mov dword [edi + 0x888], ebx
test ebx, ebx
je 0x403711
mov eax, ebx
mov word [esp + 0x38], 0
sar eax, 8
mov esi, 0xc
or al, 0xe0
mov byte [esp + 0x3b], bl
mov byte [esp + 0x3a], al
mov dword [esp + 0x20], esi
mov ecx, dword [ebp + 0xc]
mov eax, ecx
mov edx, dword [edi + 0x898]
sar eax, 8
mov byte [esp + esi + 0x30], al
mov byte [esp + esi + 0x31], cl
mov ecx, dword [ebp + 0x10]
mov eax, ecx
sar eax, 8
or al, 0xe0
mov dword [esp + 0x18], edx
mov byte [esp + esi + 0x32], al
mov eax, dword [edi + 0x89c]
mov byte [esp + esi + 0x33], cl
sub eax, edx
add esi, 4
lea ebx, [esi + 4]
cmp eax, ebx
jne 0x4037b8
lea ecx, [esp + 0x30]
sub esi, 4
jb 0x403769
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x40376e
add ecx, 4
add edx, 4
sub esi, 4
jae 0x403758
cmp esi, 0xfffffffc
je 0x40379b
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x4037b8
cmp esi, 0xfffffffd
je 0x40379b
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x4037b8
cmp esi, 0xfffffffe
je 0x40379b
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x4037b8
cmp esi, 0xffffffff
je 0x40379b
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x4037b8
mov ecx, dword [edi + 0x89c]
mov edx, dword [esp + 0x20]
lea eax, [ecx - 4]
sub ecx, eax
push ecx
push eax
lea eax, [esp + edx + 0x3c]
push eax
call fcn.0040ac00
jmp 0x403832
mov al, byte [esp + 0x35]
mov ebx, dword [esp + 0x20]
shr al, 1
inc al
add al, al
or al, 0xc1
lea edx, [ebx + 4]
push ecx
lea ecx, [esp + 0x34]
mov byte [esp + 0x39], al
call fcn.00407b80
mov esi, dword [esp + 0x1c]
mov ecx, eax
shr ecx, 0x18
add esp, 4
mov byte [esp + ebx + 0x34], cl
mov ecx, eax
shr ecx, 0x10
mov byte [esp + ebx + 0x35], cl
mov ecx, eax
shr ecx, 8
mov byte [esp + ebx + 0x36], cl
lea ecx, [edi + 0x898]
mov byte [esp + ebx + 0x37], al
add ebx, 8
mov eax, dword [ecx + 8]
sub eax, esi
cmp ebx, eax
jbe 0x40381d
push ebx
call fcn.00402af0
mov esi, dword [edi + 0x898]
push ebx
lea eax, [esp + 0x34]
push eax
push esi
call fcn.0040ac00
lea eax, [ebx + esi]
mov dword [edi + 0x89c], eax
mov ecx, dword [edi + 0x894]
lea eax, [esp + 0x3c]
mov dword [esp + 0x30], ecx
add esp, 0xc
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x890]
mov dword [esp + 0x14], ebx
mov ecx, dword [ecx + 0x24]
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], 0
test ecx, ecx
je 0x40389a
mov eax, dword [ecx]
lea edx, [esp + 0x18]
push edx
lea edx, [esp + 0x18]
push edx
lea edx, [esp + 0x28]
push edx
lea edx, [esp + 0x1c]
push edx
call dword [eax + 8]
mov ecx, dword [esp + 0x44]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040819e
mov esp, ebp
pop ebp
ret 0x14
call fcn.0040bb3e
call fcn.00408099
int3