Function at 0x1004e3c0
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x34
push ebx
mov ebx, ecx
push esi
push edi
mov dword [esp + 0x20], ebx
mov ecx, dword [ebx + 0x14]
mov al, byte [ebx + 0x1c]
mov byte [esp + 0xf], al
mov eax, dword [ecx + 0x7640c]
mov edx, dword [ecx + 0x76408]
sub eax, edx
sar eax, 2
imul eax, eax, 0xba2e8ba3
cmp byte [esp + 0xf], al
jb 0x1004e402
movzx eax, byte [ecx + 0x76418]
jmp 0x1004e407
movzx eax, byte [esp + 0xf]
movzx esi, word [ebp + 8]
imul ecx, eax, 0x2c
mov eax, dword [ecx + edx + 4]
sub eax, dword [ecx + edx]
sar eax, 1
mov dword [esp + 0x18], esi
add ecx, edx
cmp esi, eax
jae 0x1004e706
lfence
mov eax, dword [ecx]
movzx ecx, word [eax + esi*2]
mov eax, dword [ebx + 0x14]
mov edx, dword [eax + 0x763f8]
mov eax, dword [eax + 0x763fc]
sub eax, edx
sar eax, 6
cmp cx, ax
jae 0x1004e459
shl ecx, 6
mov eax, dword [ecx + edx]
cmp eax, dword [ecx + edx + 4]
je 0x1004e459
mov eax, dword [ecx + edx + 0xc]
jmp 0x1004e45e
mov eax, 1
mov edx, dword [ebp + 0xc]
cmp edx, eax
jae 0x1004e706
mov eax, dword [ebx + 4]
mov ecx, dword [ebx]
sub eax, ecx
sar eax, 4
cmp esi, eax
jae 0x1004e481
mov eax, esi
add eax, eax
cmp edx, dword [ecx + eax*8 + 0xc]
jb 0x1004e49a
push 0
mov ecx, ebx
call fcn.1004dbe0
mov eax, dword [ebx + 4]
sub eax, dword [ebx]
sar eax, 4
cmp esi, eax
jae 0x1004e706
cmp byte [ebp + 0x14], 0
mov edx, 0xcbf29ce4
mov eax, dword [ebp + 0x10]
mov esi, 0x84222325
mov dword [esp + 0x10], edx
mov ecx, dword [eax]
mov eax, dword [ebx + 0x14]
movzx eax, word [eax + 0x753bc]
mov dword [esp + 0x1c], eax
je 0x1004e4cf
mov edx, 0xaf64724c
mov esi, 0x8602eb6e
mov dword [esp + 0x10], edx
xor edi, edi
test eax, eax
je 0x1004e539
lea ebx, [ecx + 0x349]
nop dword [eax + eax]
mov al, byte [ebx]
mov byte [esp + 0xf], al
test al, al
je 0x1004e524
push 0x100
xor eax, eax
mov ecx, edi
push 0x1b3
xor eax, edx
xor ecx, esi
push eax
push ecx
call fcn.101540e0
mov esi, eax
mov ecx, edx
movzx eax, byte [esp + 0xf]
push 0x100
cdq
push 0x1b3
xor ecx, edx
xor esi, eax
push ecx
push esi
call fcn.101540e0
mov esi, eax
inc edi
add ebx, 0x368
cmp edi, dword [esp + 0x1c]
jb 0x1004e4e0
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x10], edx
mov cx, word [ebp + 8]
lea eax, [ebx + 0xc]
mov edi, dword [ebp + 0xc]
mov word [esp + 0x20], cx
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esp + 0x38]
mov dword [esp + 0x2c], esi
push ecx
mov ecx, eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x2c], edi
call fcn.1004efd0
mov ecx, dword [esp + 0x3c]
cmp byte [ecx + 0xd], 0
jne 0x1004e596
movzx eax, word [ecx + 0x10]
cmp word [ebp + 8], ax
jb 0x1004e596
ja 0x1004e580
cmp edi, dword [ecx + 0x14]
jb 0x1004e596
mov edx, ecx
cmp ecx, dword [ebx + 0xc]
je 0x1004e599
mov eax, dword [ecx + 0x18]
cmp eax, dword [ecx + 0x1c]
je 0x1004e599
mov byte [esp + 0xf], 1
jmp 0x1004e59e
mov edx, dword [ebx + 0xc]
mov byte [esp + 0xf], 0
mov edi, dword [esp + 0x10]
cmp esi, 0x84222325
jne 0x1004e5ba
cmp edi, 0xcbf29ce4
jne 0x1004e5ba
xor al, al
mov byte [esp + 0xe], al
jmp 0x1004e5bf
mov byte [esp + 0xe], 1
mov ecx, dword [ebp + 0xc]
mov eax, dword [esp + 0x18]
shr ecx, 5
shl ecx, 2
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebx]
shl eax, 4
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 1
mov eax, dword [eax + ecx]
mov ecx, dword [ebp + 0xc]
add eax, dword [esp + 0x1c]
and ecx, 0x1f
shl dword [esp + 0x10], cl
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x10]
and ecx, dword [eax]
cmp byte [esp + 0xf], 0
mov dword [esp + 0x10], ecx
jne 0x1004e622
mov al, byte [esp + 0xe]
test al, al
jne 0x1004e65b
test ecx, ecx
je 0x1004e6ee
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [edx + 0x1c]
mov eax, dword [edx + 0x18]
cmp eax, ecx
je 0x1004e64f
nop dword [eax]
cmp dword [eax], esi
jne 0x1004e639
cmp dword [eax + 4], edi
je 0x1004e640
add eax, 8
cmp eax, ecx
jne 0x1004e630
cmp eax, ecx
je 0x1004e64f
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov al, byte [esp + 0xe]
test al, al
je 0x1004e6b1
mov ecx, dword [esp + 0x10]
inc dword [ebx + 0x18]
cmp byte [esp + 0xf], 0
jne 0x1004e6b1
test al, al
je 0x1004e6ee
test ecx, ecx
je 0x1004e6b1
mov ax, word [ebp + 8]
lea ecx, [ebx + 0xc]
mov word [esp + 0x10], ax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x10]
push eax
call fcn.1004eb00
mov ecx, dword [eax + 4]
cmp ecx, dword [eax + 8]
je 0x1004e6a9
mov dword [ecx], 0x84222325
mov dword [ecx + 4], 0xcbf29ce4
add dword [eax + 4], 8
jmp 0x1004e6b1
push ecx
mov ecx, eax
call fcn.1004edb0
mov ax, word [ebp + 8]
lea ecx, [ebx + 0xc]
mov word [esp + 0x10], ax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x10]
push eax
call fcn.1004eb00
mov ecx, dword [eax + 4]
cmp ecx, dword [eax + 8]
je 0x1004e6e1
mov dword [ecx], esi
mov dword [ecx + 4], edi
add dword [eax + 4], 8
jmp 0x1004e6ee
lea edx, [esp + 0x28]
push edx
push ecx
mov ecx, eax
call fcn.1004eec0
mov eax, dword [ebx]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
mov ecx, dword [ecx + eax]
add ecx, dword [esp + 0x1c]
mov eax, dword [ecx]
bts eax, edx
mov dword [ecx], eax
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 0x10