Function at 0x10064840
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
mov ebx, ecx
push esi
push edi
mov dword [ebp - 8], ebx
cmp byte [ebx + 4], 0
je 0x10064860
lock inc dword [ebx]
cmp byte [ebx + 4], 0
jne 0x1006486b
lock dec dword [ebx]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov edi, dword [ebp + 0xc]
lea edx, [ebx + 0x40]
push edi
push dword [ebp + 8]
lea ecx, [ebx + 0x38]
call fcn.10063ce0
mov esi, eax
add esp, 8
test esi, esi
jne 0x10064a45
test di, di
je 0x10064967
lea eax, [ebx + 0x78]
push eax
call fcn.100b7375
mov edx, dword [ebp + 8]
add esp, 4
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp + 0xc], edx
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
lea ecx, [ebx + 0x7c]
push eax
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.10069370
mov edx, dword [eax + 4]
test edx, edx
je 0x10064939
cmp edx, dword [ebx + 0x80]
je 0x10064939
mov esi, dword [edx + 0xc]
mov edx, dword [edx + 0x10]
cmp esi, edx
je 0x10064939
nop word [eax + eax]
movzx ecx, word [esi + 0x18]
cmp cx, di
ja 0x10064923
cmp di, word [esi + 0x1a]
jbe 0x10064a39
cmp cx, word [esi + 0x1a]
jne 0x10064932
test cx, cx
je 0x10064a39
add esi, 0x1c
cmp esi, edx
jne 0x10064910
lea eax, [ebx + 0x78]
push eax
call fcn.100b7391
mov esi, dword [ebx + 0x2c]
add esp, 4
mov eax, dword [ebx + 0x30]
cmp esi, eax
je 0x10064967
nop
cmp word [esi + 0x18], di
ja 0x10064960
cmp di, word [esi + 0x1a]
jbe 0x10064a45
add esi, 0x1c
cmp esi, eax
jne 0x10064950
mov esi, dword [ebx + 0x70]
mov dword [ebp - 4], esi
cmp esi, dword [esi]
je 0x10064a35
lea ecx, [ebp + 0xc]
mov dword [ebp + 0xc], esi
call fcn.100654c0
mov eax, dword [ebp + 0xc]
mov ecx, 0x20
sub ecx, dword [eax + 0x10]
or eax, 0xffffffff
shl eax, cl
push eax
call dword [sym.imp.WS2_32.dll_htonl]
mov ebx, eax
mov dword [ebp + 0xc], esi
and ebx, dword [ebp + 8]
lea ecx, [ebp + 0xc]
mov dword [ebp - 0xc], ebx
call fcn.100654c0
movzx eax, bl
xor eax, 0x811c9dc5
mov edx, dword [ebp + 0xc]
imul ecx, eax, 0x1000193
add edx, 0x14
mov eax, ebx
mov dword [ebp + 0xc], edx
shr eax, 8
movzx eax, al
xor ecx, eax
mov eax, ebx
shr eax, 0x10
imul ecx, ecx, 0x1000193
movzx eax, al
shr ebx, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, edx
xor eax, ebx
imul eax, eax, 0x1000193
push eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.10069370
mov edi, dword [eax + 4]
test edi, edi
jne 0x10064a09
mov edi, dword [ebp + 0xc]
mov edi, dword [edi + 4]
lea ecx, [ebp + 0xc]
mov dword [ebp + 0xc], esi
call fcn.100654c0
mov eax, dword [ebp + 0xc]
cmp edi, dword [eax + 0x18]
jne 0x10064a89
lea ecx, [ebp - 4]
call fcn.100654c0
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 4]
mov eax, dword [ebx + 0x70]
cmp esi, dword [eax]
jne 0x10064975
xor edi, edi
jmp 0x10064a7b
lea eax, [ebx + 0x78]
push eax
call fcn.100b7391
add esp, 4
xor edi, edi
test esi, esi
je 0x10064a7b
lea eax, [ebx + 8]
push eax
call fcn.100b7375
add esp, 4
lea eax, [ebp + 8]
lea ecx, [ebx + 0xc]
push esi
push eax
call fcn.10066af0
mov eax, dword [ebp + 8]
cmp eax, dword [ebx + 0x10]
je 0x10064a6f
mov edi, dword [eax + 0x20]
lea eax, [ebx + 8]
push eax
call fcn.100b7391
add esp, 4
lock dec dword [ebx]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ebx, dword [ebp - 8]
lea esi, [edi + 0xc]
jmp 0x10064a45