Function at 0x422870
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4881cd
mov eax, dword fs:[0]
push eax
sub esp, 0x44
mov eax, dword [0x4a701c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ecx*4 + 0x4b5420]
mov ecx, dword [eax + 0x20]
mov eax, dword [eax + 8]
mov edx, dword [ecx + eax + 2]
mov al, byte [ecx + eax + 6]
mov byte [ebp - 0x2d], al
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 0x40], edx
imul ecx, eax, 0x1000193
mov eax, edx
sar eax, 8
movzx eax, al
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x38], edx
xor eax, ecx
mov dword [ebp - 0x3c], ecx
imul ecx, eax, 0x1000193
mov eax, edx
sar eax, 0x10
movzx eax, al
xor ecx, eax
mov eax, edx
sar eax, 0x18
imul ecx, ecx, 0x1000193
movzx eax, al
xor ecx, eax
imul eax, ecx, 0x1000193
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.004243e0
mov edi, dword [eax + 4]
test edi, edi
je 0x42292d
cmp edi, dword [0x4cf784]
je 0x42292d
mov eax, dword [edi + 0x10]
test eax, eax
je 0x422925
lock inc dword [eax + 4]
mov eax, dword [edi + 0xc]
mov edi, dword [edi + 0x10]
jmp 0x422931
xor eax, eax
xor edi, edi
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x48], eax
or ebx, 0xffffffff
mov dword [ebp - 4], 0
test eax, eax
je 0x422a7b
dec dword [eax + 8]
cmp dword [eax + 8], 0
jle 0x42295c
cmp byte [ebp - 0x2d], 1
je 0x422a7b
mov ecx, dword [eax + 4]
mov edx, 0x17
mov dword [ebp - 0x38], ecx
mov ecx, 0x3802
mov word [ebp - 0x2c], cx
lea ecx, [ebp - 0x2a]
mov esi, ecx
mov byte [ebp - 0x13], 0
sub eax, esi
lea esi, [eax + 0x20]
nop
mov al, byte [ecx + esi]
dec edx
mov byte [ecx], al
inc ecx
test al, al
je 0x422991
test edx, edx
jne 0x422980
jmp 0x4229a1
test edx, edx
je 0x4229a1
push edx
push 0
push ecx
call fcn.00461440
add esp, 0xc
mov al, byte [ebp - 0x2d]
lea edx, [ebp - 0x2c]
mov ecx, dword [ebp - 0x38]
push 0x1b
mov byte [ebp - 0x12], al
call fcn.00419200
mov eax, dword [ebp - 0x40]
add esp, 4
movzx eax, ah
xor eax, dword [ebp - 0x3c]
imul ecx, eax, 0x1000193
movzx eax, byte [ebp - 0x32]
xor ecx, eax
movzx eax, byte [ebp - 0x31]
imul ecx, ecx, 0x1000193
xor ecx, eax
imul eax, ecx, 0x1000193
push eax
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.004243e0
mov esi, dword [eax + 4]
test esi, esi
je 0x422a7b
mov ecx, dword [ebp - 0x3c]
and ecx, dword [0x4cf798]
mov eax, dword [0x4cf78c]
lea ecx, [eax + ecx*8]
mov eax, dword [ecx]
cmp dword [ecx + 4], esi
jne 0x422a2a
cmp eax, esi
jne 0x422a22
mov eax, dword [0x4cf784]
mov dword [ecx], eax
mov dword [ecx + 4], eax
jmp 0x422a32
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
jmp 0x422a32
cmp eax, esi
jne 0x422a32
mov eax, dword [esi]
mov dword [ecx], eax
mov ecx, dword [esi]
dec dword [0x4cf788]
mov eax, dword [esi + 4]
mov dword [eax], ecx
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
mov ebx, dword [esi + 0x10]
test ebx, ebx
je 0x422a6d
or eax, 0xffffffff
lock xadd dword [ebx + 4], eax
jne 0x422a6d
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
or eax, 0xffffffff
lock xadd dword [ebx + 8], eax
jne 0x422a6d
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
push 0x14
push esi
call fcn.0045fa95
add esp, 8
or ebx, 0xffffffff
test edi, edi
je 0x422a9d
mov eax, ebx
lock xadd dword [edi + 4], eax
jne 0x422a9d
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
lock xadd dword [edi + 8], ebx
dec ebx
jne 0x422a9d
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0045f6f1
mov esp, ebp
pop ebp
ret