Function at 0x101dbc30
Capabilities:
Hash data using fnv

Disassembly:
sub esp, 0x98
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0xb0]
mov ebp, ecx
mov dword [esp + 0x24], ebp
inc dword [ebp + 0x50]
mov ebx, dword [edi]
mov edx, dword [edi + 0x74]
mov eax, edx
shl eax, 7
shl edx, 7
mov esi, dword [ebx]
add edx, dword [ebx]
push edx
mov dword [esp + 0x8c], ebx
mov esi, dword [eax + esi + 0x7c]
lea eax, [esp + 0x14]
push eax
call fcn.101d6600
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x101dbc96
mov eax, dword [esp + 0xac]
mov dword [eax], 0
dec dword [ebp + 0x50]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x98
ret 8
mov ecx, dword [eax + 0xc]
mov eax, dword [ebp + 8]
add ecx, 0xc
mov eax, dword [eax + 0x44]
push dword [eax + 0x10]
push dword [eax + 0xc]
call fcn.101179d0
test al, al
je 0x101dbd18
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0xc]
cmp dword [eax + 0x2c], 1
je 0x101dbd18
mov eax, dword [ebp + 8]
push dword [eax + 0x54]
mov dword [esp + 0x14], 0
push ecx
mov eax, esp
mov dword [eax], ecx
lea eax, [esp + 0x24]
push eax
mov ecx, ebp
call fcn.101d3960
lea ecx, [esp + 0x10]
cmp ecx, eax
je 0x101dbcff
mov edx, dword [eax]
mov dword [eax], 0
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x10], edx
test ecx, ecx
je 0x101dbcff
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x101dbd0d
mov eax, dword [ecx]
push 1
call dword [eax]
cmp dword [esp + 0x10], 0
je 0x101dbc79
mov ecx, dword [ebp + 0x44]
mov dword [esp + 0x50], ebp
test ecx, ecx
je 0x101dbd2a
lock inc dword [ecx + 4]
mov ecx, dword [ebp + 0x44]
mov eax, dword [ebp + 0x40]
mov dword [esp + 0x58], ecx
mov ecx, ebp
mov dword [esp + 0x54], eax
call fcn.101e3510
push 0xc
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
call fcn.1037dfb9
add esp, 4
lea ecx, [esp + 0x5c]
mov dword [eax], eax
mov dword [eax + 4], eax
push 8
mov dword [esp + 0x64], eax
mov dword [esp + 0x6c], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x60], 0x3f800000
call fcn.10120230
xor eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x34], eax
test esi, esi
js 0x101dc1e6
mov eax, dword [ebx]
xor edi, edi
shl esi, 7
add eax, esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x28], eax
mov esi, dword [eax + 0x74]
mov eax, dword [eax]
shl esi, 7
mov dword [esp + 0x18], eax
mov ecx, dword [eax]
cmp dword [ecx + esi + 0x70], 0x16
lea eax, [ecx + esi]
je 0x101dbf7b
push eax
lea eax, [esp + 0x80]
mov ecx, ebp
push eax
call fcn.101d6600
lea ecx, [esp + 0x80]
xor ebx, ebx
cmp ecx, eax
je 0x101dbdfe
mov ebx, dword [eax]
mov dword [eax], edi
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x101dbe0c
mov eax, dword [ecx]
push 1
call dword [eax]
test ebx, ebx
je 0x101dc2b3
mov eax, dword [esp + 0x10]
push dword [eax + 0xc]
push ecx
mov eax, esp
mov ecx, ebp
mov dword [eax], ebx
lea eax, [esp + 0x8c]
push eax
call fcn.101d3960
xor ebx, ebx
lea ecx, [esp + 0x80]
mov dword [esp + 0x14], ebx
cmp ecx, eax
je 0x101dbe4a
mov edi, dword [eax]
mov dword [eax], ebx
mov ebx, edi
mov dword [esp + 0x14], edi
mov ecx, dword [esp + 0x84]
test ecx, ecx
je 0x101dbe5b
mov eax, dword [ecx]
push 1
call dword [eax]
test ebx, ebx
je 0x101dc2a4
mov eax, dword [ebx]
mov ecx, ebx
mov eax, dword [eax + 8]
call eax
test al, al
je 0x101dc256
lea eax, [esp + 0x8c]
mov ecx, ebp
push eax
push edi
call fcn.101e27e0
mov ebx, dword [esp + 0x8c]
movzx eax, bl
xor eax, 0x811c9dc5
mov edx, dword [esp + 0x60]
imul ecx, eax, 0x1000193
mov eax, ebx
sar eax, 8
movzx eax, al
xor ecx, eax
mov eax, ebx
sar eax, 0x10
imul ecx, ecx, 0x1000193
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 [esp + 0x74]
and ecx, eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x14], ecx
mov eax, dword [eax + ecx*8]
nop
mov ebp, dword [esp + 0x68]
cmp dword [ebp + ecx*8], edx
mov ebp, dword [esp + 0x24]
jne 0x101dbef2
mov ecx, edx
jmp 0x101dbf03
mov ebx, dword [esp + 0x68]
mov ecx, dword [ebx + ecx*8 + 4]
mov ebx, dword [esp + 0x8c]
mov ecx, dword [ecx]
cmp eax, ecx
je 0x101dbf57
cmp dword [eax + 8], ebx
je 0x101dbf14
mov eax, dword [eax]
mov ecx, dword [esp + 0x14]
jmp 0x101dbee0
cmp eax, edx
je 0x101dbf57
mov eax, dword [ebp + 0x54]
sub esp, 0x18
mov ebx, dword [edi + 4]
mov ecx, esp
mov dword [esp + 0x2c], eax
mov eax, dword [eax]
push 0x14
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
mov ebp, dword [eax + 4]
push str.duplicate_case_value
mov byte [ecx], 0
call fcn.10084d80
mov ecx, dword [esp + 0x2c]
push ebx
call ebp
mov ebx, dword [esp + 0x8c]
push dword [esp + 0x4c]
lea eax, [esp + 0x18]
mov dword [esp + 0x18], ebx
push eax
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0x68]
call fcn.10119360
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov esi, dword [esi + ecx + 0x7c]
xor eax, eax
mov dword [esp + 0x48], eax
xor ebx, ebx
mov dword [esp + 0x3c], eax
xor ebp, ebp
mov eax, esi
mov dword [esp + 0x40], ebp
shr eax, 0x1f
xor al, 1
mov dword [esp + 0x14], ebx
mov dword [esp + 0x44], ebx
je 0x101dc025
shl esi, 7
lea eax, [ecx + esi]
mov ecx, dword [esp + 0x24]
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.101db690
mov eax, dword [esp + 0x38]
test eax, eax
je 0x101dc2be
cmp ebx, ebp
je 0x101dbfdf
mov dword [esp + 0x38], 0
mov dword [ebp], eax
add ebp, 4
mov dword [esp + 0x40], ebp
jmp 0x101dbffa
lea eax, [esp + 0x38]
push eax
push ebp
lea ecx, [esp + 0x44]
call fcn.10118e50
mov ebx, dword [esp + 0x44]
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x101dc008
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov esi, dword [ecx + esi + 0x7c]
mov eax, esi
shr eax, 0x1f
xor al, 1
jne 0x101dbfa6
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x48], esi
jmp 0x101dc027
xor esi, esi
push 0x1c
call fcn.1037dfb9
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
je 0x101dc0a5
mov ecx, dword [esp + 0x28]
mov eax, edi
mov edx, dword [esp + 0x18]
xor edi, edi
mov dword [esp + 0x28], esi
mov esi, ebp
xor ebp, ebp
mov dword [esp + 0x48], 0
mov ecx, dword [ecx + 0x6c]
mov dword [edx + 4], ecx
mov ecx, edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x94], edi
mov dword [ecx + 8], 0xb
mov dword [ecx], 0x103a2dcc
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], edx
mov dword [ecx + 0x14], esi
mov dword [ecx + 0x18], ebx
lea ecx, [esp + 0x94]
mov dword [esp + 0x98], edi
mov dword [esp + 0x9c], edi
call fcn.1011e450
mov esi, dword [esp + 0x18]
jmp 0x101dc0a7
xor esi, esi
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
cmp ecx, eax
je 0x101dc0c1
mov dword [eax], esi
add eax, 4
mov dword [esp + 0x30], eax
jmp 0x101dc164
mov ebx, dword [esp + 0x1c]
sub eax, ebx
sar eax, 2
mov dword [esp + 0x28], eax
cmp eax, 0x3fffffff
je 0x101dc365
sub ecx, ebx
lea edx, [eax + 1]
sar ecx, 2
mov eax, 0x3fffffff
mov dword [esp + 0x20], ecx
shr ecx, 1
sub eax, ecx
mov dword [esp + 0x1c], edx
cmp dword [esp + 0x20], eax
jbe 0x101dc100
mov eax, edx
mov dword [esp + 0x18], edx
jmp 0x101dc10f
mov eax, dword [esp + 0x20]
add eax, ecx
cmp eax, edx
cmovb eax, edx
mov dword [esp + 0x18], eax
push eax
lea ecx, [esp + 0x30]
call fcn.1000ce60
mov ecx, dword [esp + 0x28]
mov edx, eax
mov dword [edx + ecx*4], esi
mov esi, dword [esp + 0x30]
cmp ebx, esi
je 0x101dc142
mov ecx, edx
sub ecx, ebx
nop
mov eax, dword [ebx]
mov dword [ebx], 0
mov dword [ecx + ebx], eax
add ebx, 4
cmp ebx, esi
jne 0x101dc130
push dword [esp + 0x18]
lea ecx, [esp + 0x30]
push dword [esp + 0x20]
push edx
call fcn.101cfe30
mov eax, dword [esp + 0x34]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x48]
test ebx, ebx
je 0x101dc1b1
mov esi, ebx
cmp esi, ebp
je 0x101dc185
mov ecx, dword [esi]
test ecx, ecx
je 0x101dc17e
mov eax, dword [ecx]
push 1
call dword [eax]
add esi, 4
cmp esi, ebp
jne 0x101dc172
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x3c]
sub eax, ebx
sar eax, 2
push eax
push ebx
call fcn.10008050
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
test edi, edi
je 0x101dc1bd
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax]
mov ebx, dword [esp + 0x88]
mov esi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x24]
mov eax, dword [ebx]
mov esi, dword [esi + eax + 0x7c]
mov eax, esi
shr eax, 0x1f
xor al, 1
jne 0x101dbdb0
mov edi, dword [esp + 0xb0]
push 0x28
call fcn.1037dfb9
mov esi, eax
add esp, 4
test esi, esi
je 0x101dc31f
mov bl, byte [edi + 4]
sub esp, 8
mov edi, dword [edi + 0x6c]
mov ecx, esp
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [ebp + 0x44]
test eax, eax
je 0x101dc21d
lock inc dword [eax + 4]
mov eax, dword [ebp + 0x40]
sub esp, 0xc
mov dword [ecx], eax
mov eax, dword [ebp + 0x44]
mov dword [ecx + 4], eax
lea eax, [esp + 0x40]
mov ecx, esp
push eax
call fcn.1000d920
mov eax, dword [esp + 0x24]
push ecx
mov ecx, esp
mov dword [esp + 0x28], 0
push ebx
push edi
mov dword [ecx], eax
mov ecx, esi
call fcn.101cf2e0
jmp 0x101dc321
mov ebx, dword [ebp + 0x54]
sub esp, 0x18
mov esi, dword [edi + 4]
mov ecx, esp
mov eax, dword [ebx]
push 0x1d
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
mov edi, dword [eax + 4]
push str.case_value_must_be_a_constant
mov byte [ecx], 0
call fcn.10084d80
push esi
mov ecx, ebx
call edi
mov esi, dword [esp + 0xac]
mov ecx, dword [esp + 0x14]
push 1
mov dword [esi], 0
mov eax, dword [ecx]
call dword [eax]
jmp 0x101dc32a
mov esi, dword [esp + 0xac]
mov dword [esi], 0
jmp 0x101dc32a
mov esi, dword [esp + 0xac]
mov dword [esi], edi
jmp 0x101dc32a
mov esi, dword [esp + 0xac]
lea ecx, [esp + 0x3c]
mov dword [esi], 0
call fcn.1011e450
test edi, edi
je 0x101dc2e0
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax]
lea ecx, [esp + 0x2c]
call fcn.1011e450
lea ecx, [esp + 0x5c]
call fcn.1011df50
lea ecx, [esp + 0x50]
call fcn.101cf670
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x101dc309
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x24]
dec dword [eax + 0x50]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x98
ret 8
xor eax, eax
mov esi, dword [esp + 0xac]
mov dword [esi], eax
lea ecx, [esp + 0x2c]
call fcn.1011e450
lea ecx, [esp + 0x5c]
call fcn.1011df50
lea ecx, [esp + 0x50]
call fcn.101cf670
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x101dc353
mov edx, dword [ecx]
push 1
call dword [edx]
dec dword [ebp + 0x50]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x98
ret 8
call fcn.10007230
int3