Function at 0x449500
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
push ebx
push esi
push edi
mov edi, edx
mov eax, ecx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], eax
call fcn.0045ea80
mov ebx, eax
mov byte [esp + 0x13], 1
mov esi, edx
mov dword [esp + 0x30], ebx
mov ecx, ebx
mov dword [esp + 0x34], esi
mov eax, esi
mov dword [esp + 0x14], esi
shrd ecx, eax, 8
movzx eax, bl
xor eax, 0x811c9dc5
movzx ecx, cl
imul eax, eax, 0x1000193
xor ecx, eax
mov eax, esi
imul edx, ecx, 0x1000193
mov ecx, ebx
shrd ecx, eax, 0x10
movzx eax, cl
xor edx, eax
imul ecx, edx, 0x1000193
mov edx, esi
mov eax, esi
mov esi, dword [ebp + 8]
shrd ebx, eax, 0x18
movzx eax, bl
xor ecx, eax
movzx eax, dl
imul ecx, ecx, 0x1000193
xor ecx, eax
mov eax, edx
shr eax, 8
movzx eax, al
imul ecx, ecx, 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, esi
xor eax, edx
imul eax, eax, 0x1000193
push eax
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x30]
push eax
call fcn.00449889
mov eax, dword [esi + 0xc]
add eax, dword [esi]
cmp dword [esp + 0x28], eax
jne 0x4497ba
mov al, 1
mov ebx, dword [ebp + 0x10]
test al, al
je 0x4497c1
mov byte [esp + 0x13], 0
mov ecx, dword [esi + 0x1c]
mov eax, ecx
mov edi, dword [esp + 0x30]
and eax, edi
cmp eax, dword [esi + 0x18]
jb 0x4977f2
mov ecx, dword [esi + 0x34]
mov edx, eax
shr edx, cl
mov ecx, dword [esi + 0x30]
and ecx, eax
cmp byte [esp + 0x13], 0
mov eax, dword [esi + 0x40]
mov eax, dword [eax + edx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [eax]
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], ecx
jne 0x497800
cmp byte [ebp + 0xc], 0
je 0x4497af
mov eax, dword [ebp + 0x14]
mov ecx, dword [0x5a10f8]
add ecx, 0x10
cmp byte [esi + 0x3a], 0
mov dword [esp + 0x14], ecx
mov byte [eax], 1
jne 0x449867
mov edi, dword [esi + 0x44]
mov dword [esp + 0x24], edi
test edi, edi
je 0x49784d
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 4]
sub eax, edx
cmp ecx, eax
ja 0x49784d
mov eax, dword [edi + 8]
sub eax, edx
cmp ecx, eax
ja 0x4497fb
mov ecx, dword [edi + 4]
mov eax, dword [esp + 0x14]
add eax, ecx
mov dword [edi + 4], eax
add edi, ecx
mov eax, dword [ebx + 8]
mov ecx, dword [ebx + 4]
sub eax, ecx
cmp eax, 4
jb 0x449855
mov eax, dword [ebx]
mov edx, dword [esp + 0x1c]
mov dword [ecx + eax], edx
add dword [ebx + 4], 4
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov dword [edi + 8], eax
mov dword [edi + 0xc], ecx
lea ecx, [edx + 1]
mov eax, dword [ebx + 8]
mov edx, dword [ebx + 4]
sub eax, edx
mov dword [esp + 0x24], ecx
cmp ecx, eax
ja 0x449840
mov eax, dword [ebx]
push ecx
push dword [esp + 0x1c]
add eax, edx
push eax
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebx + 4]
add esp, 0xc
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x40], edi
add eax, ecx
mov dword [ebx + 4], eax
mov dword [edi + 0x14], ecx
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx]
mov dword [edi], eax
mov dword [ecx], edi
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
movzx eax, dl
xor eax, 0x811c9dc5
inc dword [esi + 0x24]
imul ecx, eax, 0x1000193
movzx eax, dh
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], ebx
xor ecx, eax
movzx eax, byte [esp + 0x32]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [esp + 0x33]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, bl
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, bh
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [esp + 0x36]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [esp + 0x37]
imul ecx, ecx, 0x1000193
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, esi
push eax
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x30]
push eax
call fcn.004499ca
cmp byte [esp + 0x2c], 0
je 0x4497a4
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
shl edx, 4
add edx, dword [esi + 4]
mov dword [edx], eax
mov dword [edx + 4], ecx
mov eax, dword [esp + 0x40]
mov dword [edx + 8], eax
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
xor al, al
jmp 0x4495d5
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 8]
mov dword [esp + 0x14], eax
mov ecx, dword [eax + 0x14]
add ecx, dword [ebx]
mov eax, dword [ecx - 4]
cmp eax, edi
jne 0x4495e5
mov edx, dword [esp + 0x18]
push eax
call fcn.0046ee7e
test eax, eax
jne 0x4495e5
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
lea eax, [edx + ecx]
push 4
lea ecx, [edx + edi]
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x18]
push 0x1000
call fcn.0046211a
test eax, eax
je 0x449882
mov edi, dword [edi + 8]
xor edx, edx
mov eax, dword [esp + 0x20]
mov ecx, dword [0x5a3e5c]
sub eax, edi
dec eax
add eax, ecx
div ecx
imul eax, ecx
add eax, edi
mov edi, dword [esp + 0x24]
mov dword [edi + 8], eax
jmp 0x449676
add edx, ecx
mov ecx, ebx
call fcn.0042fd23
mov edx, dword [ebx + 4]
mov ecx, dword [esp + 0x24]
jmp 0x4496c7
lea edx, [ecx + 4]
mov ecx, ebx
call fcn.0042fd23
mov ecx, dword [ebx + 4]
jmp 0x449695
call fcn.0044ef2b
push dword [esp + 0x14]
mov edi, eax
push 0
push edi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
jmp 0x449684
call fcn.004fd4dc
jmp 0x449819
lea eax, [ecx*2 + 1]
and eax, edi
jmp 0x4495f9
test ecx, ecx
je 0x449623
cmp dword [ecx + 8], edi
jne 0x49783e
mov eax, dword [ecx + 0xc]
cmp eax, dword [esp + 0x34]
jne 0x49783e
mov edx, dword [ecx + 0x14]
add edx, dword [ebx]
mov eax, dword [esp + 0x1c]
cmp dword [edx - 4], eax
jne 0x49783e
mov ecx, dword [esp + 0x18]
push eax
call fcn.0046ee7e
test eax, eax
je 0x4497ee
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx]
mov dword [esp + 0x14], ecx
test ecx, ecx
jne 0x497808
jmp 0x449623
mov edx, dword [esp + 0x14]
add ecx, 0x40000f
and ecx, 0xffc00000
call fcn.004620b1
test edi, edi
je 0x497868
mov dword [eax], edi
mov dword [esi + 0x44], eax
mov edi, eax
jmp 0x449676