Function at 0x10002fb0
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, ecx
test dword [edi + 8], 0x1c00000
jne 0x100031b9
mov eax, dword [edi + 0x18]
test eax, eax
jne 0x1000301f
mov ecx, dword [edi + 8]
mov eax, ecx
movups xmm0, xmmword [edi + 4]
shr eax, 0x14
movups xmmword [ebp - 0x18], xmm0
test al, 1
je 0x10003003
test dword [edi + 4], 0x1ff8000
jne 0x10003003
cmp dword [edi + 0xc], 2
jne 0x10003003
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x10], 1
movups xmm0, xmmword [ebp - 0x18]
push ecx
push dword [ebp + 0xc]
lea eax, [ebp - 0x18]
mov ecx, esi
push eax
movups xmmword [ebp - 0x18], xmm0
call fcn.10002c90
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp eax, 2
je 0x1000302d
cmp eax, 3
jne 0x100031b0
mov eax, dword [esi + 0x20]
cmp eax, dword [esi + 0x18]
jb 0x10003044
cmp dword [esi + 0xc], 3
jne 0x100030f9
call fcn.10001da0
mov dl, byte [ebp + 0xc]
mov ecx, dword [esi + 0x1c]
and dl, 7
mov eax, dword [esi + 0x20]
shl dl, 3
or dl, 5
mov byte [ecx + eax], dl
mov ecx, dword [esi + 0x20]
inc ecx
mov dword [esi + 0x20], ecx
mov edx, dword [edi + 0x14]
mov ebx, dword [edi + 0x10]
mov dword [ebp - 8], edx
test edx, edx
je 0x10003189
sub ebx, dword [ebp + 0x10]
cmp dword [esi + 0xc], 3
jne 0x1000308c
lea eax, [ecx + 0x10]
cmp eax, dword [esi + 0x18]
jb 0x1000308c
mov ecx, esi
call fcn.10001da0
mov edx, dword [ebp - 8]
mov edx, dword [edx + 4]
mov edi, dword [ebp - 8]
test edx, edx
jne 0x100030a2
mov edx, dword [esi + 0x34]
lea eax, [edx + 1]
mov dword [esi + 0x34], eax
mov dword [edi + 4], edx
movzx eax, dl
xor eax, 0x811c9dc5
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
mov ecx, dword [esi + 0x50]
and ecx, eax
mov eax, dword [esi + 0x44]
lea eax, [eax + ecx*8]
mov ecx, dword [esi + 0x3c]
mov dword [ebp - 8], eax
mov eax, dword [eax + 4]
cmp eax, ecx
jne 0x10003100
xor eax, eax
jmp 0x10003123
push 2
jmp 0x100031bb
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx]
cmp edx, dword [eax + 8]
je 0x10003120
nop word [eax + eax]
cmp eax, ecx
je 0x1000311e
mov eax, dword [eax + 4]
cmp edx, dword [eax + 8]
jne 0x10003110
jmp 0x10003120
xor eax, eax
mov ecx, dword [esi + 0x3c]
test eax, eax
push 4
cmove eax, ecx
cmp eax, ecx
mov ecx, esi
push 0
jne 0x1000316f
push 0
call fcn.10001ee0
mov eax, dword [edi + 4]
lea ecx, [esi + 0x58]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x20]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 8]
mov dword [ebp - 0x14], 4
push eax
mov dword [ebp - 0x10], 0
mov dword [ebp - 0xc], ebx
call fcn.1000a6b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
sub ebx, dword [esi + 0x20]
mov eax, dword [eax + 0xc]
add ebx, 0xfffffffc
add eax, ebx
push eax
call fcn.10001ee0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp dword [edi + 0x18], 3
jne 0x100031a8
cmp dword [esi + 0xc], 3
jne 0x10003199
push 0x2a
jmp 0x100031bb
mov eax, 0xfffffffc
sub eax, dword [esi + 0x1c]
sub eax, ecx
sub eax, dword [ebp + 0x10]
add ebx, eax
push ebx
mov ecx, esi
call fcn.10001f70
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
push 0x1b
lea ecx, [ebp - 0x18]
call fcn.100019b0
push 0x1001952c
mov eax, ecx
push eax
call sub.VCRUNTIME140.dll__CxxThrowException
int3