Function at 0x5165b0
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
mov dword [ebp - 8], 0
mov edx, ecx
mov ebx, dword [ebp + 0xc]
push esi
push edi
test ebx, ebx
je 0x5166bf
movzx eax, bl
lea esi, [edx + 0x90]
xor eax, 0x811c9dc5
mov edx, dword [esi + 0xc]
imul ecx, eax, 0x1000193
mov eax, ebx
sar eax, 8
movzx eax, al
mov dword [ebp - 4], esi
xor ecx, eax
mov eax, ebx
imul ecx, ecx, 0x1000193
sar eax, 0x10
movzx eax, al
xor ecx, eax
mov eax, ebx
imul ecx, ecx, 0x1000193
sar eax, 0x18
movzx eax, al
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [esi + 0x18]
mov esi, dword [esi + 4]
and ecx, eax
mov eax, dword [edx + ecx*8]
add ecx, ecx
mov edi, dword [edx + ecx*4]
lea edx, [edx + ecx*4]
nop word [eax + eax]
cmp edi, esi
jne 0x516638
mov ecx, esi
jmp 0x51663d
mov ecx, dword [edx + 4]
mov ecx, dword [ecx]
cmp eax, ecx
je 0x51664a
cmp dword [eax + 8], ebx
je 0x51664c
mov eax, dword [eax]
jmp 0x516630
mov eax, esi
cmp eax, esi
jne 0x5166b7
mov esi, dword [esi]
push 0x10
mov edi, dword [esi + 4]
call fcn.004db11c
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x5167e1
mov dword [ecx], esi
mov dword [ecx + 4], edi
mov eax, dword [ebp + 0xc]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], 0
mov ebx, dword [ebp - 4]
mov eax, 0xffffffe
mov edx, dword [ebx + 8]
sub eax, edx
cmp eax, 1
jb 0x5167e6
lea eax, [edx + 1]
mov dword [ebx + 8], eax
mov dword [esi + 4], ecx
mov dword [edi], ecx
mov ecx, ebx
mov eax, dword [ebx + 4]
mov eax, dword [eax]
push eax
add eax, 8
push eax
lea eax, [ebp - 0xc]
push eax
call fcn.005150b0
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp + 0x10]
lea edi, [eax + 0xc]
jmp 0x5166cb
mov ecx, dword [ebp + 0x10]
mov edi, dword [ecx + 0xc]
add edi, 0x2c
lea edi, [edx + edi*4]
cmp dword [edi], 0
jne 0x5167c1
push ecx
test ebx, ebx
je 0x5166f7
lea eax, [ebp - 8]
push eax
call fcn.0051a660
mov ebx, 3
mov ecx, dword [eax]
mov dword [eax], 0
lea eax, [ebp + 0x10]
mov dword [ebp + 0x10], ecx
jmp 0x516705
lea eax, [ebp - 4]
push eax
call fcn.0051a6d0
mov ebx, 4
mov ecx, dword [eax]
add esp, 8
mov dword [eax], 0
or esi, 0xffffffff
mov eax, dword [edi]
mov dword [edi], ecx
test eax, eax
je 0x516739
lea edx, [eax + 4]
mov ecx, esi
lock xadd dword [edx], ecx
cmp ecx, 1
jne 0x516739
xor ecx, ecx
test edx, edx
cmove eax, ecx
push eax
call fcn.00503980
add esp, 4
test bl, 4
je 0x516768
mov eax, dword [ebp - 4]
and ebx, 0xfffffffb
test eax, eax
je 0x516768
lea ecx, [eax + 4]
mov eax, esi
lock xadd dword [ecx], eax
cmp eax, 1
jne 0x516768
lea eax, [ecx - 4]
neg ecx
sbb ecx, ecx
and ecx, eax
push ecx
call fcn.00503980
add esp, 4
test bl, 2
je 0x516797
mov eax, dword [ebp + 0x10]
and ebx, 0xfffffffd
test eax, eax
je 0x516797
lea ecx, [eax + 4]
mov eax, esi
lock xadd dword [ecx], eax
cmp eax, 1
jne 0x516797
lea eax, [ecx - 4]
neg ecx
sbb ecx, ecx
and ecx, eax
push ecx
call fcn.00503980
add esp, 4
test bl, 1
je 0x5167c1
mov eax, dword [ebp - 8]
test eax, eax
je 0x5167c1
lea ecx, [eax + 4]
lock xadd dword [ecx], esi
cmp esi, 1
jne 0x5167c1
lea eax, [ecx - 4]
neg ecx
sbb ecx, ecx
and ecx, eax
push ecx
call fcn.00503980
add esp, 4
mov eax, dword [ebp + 8]
mov edx, dword [edi]
mov dword [eax], edx
test edx, edx
je 0x5167d8
add edx, 4
mov ecx, 1
lock xadd dword [edx], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
call fcn.00525588
push str.list_T__too_long
call fcn.004d93ca
int3