Function at 0x10031200
Capabilities:
Hash data using fnv

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100d9ac2
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x98
mov eax, dword [0x1010f16c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x70], edi
mov eax, dword [ebx + 8]
mov esi, dword [ebx + 0xc]
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x74], eax
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0x6c], eax
xor eax, eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x94], eax
test esi, esi
je 0x100317d0
mov eax, dword [esi + 4]
add edi, 0x248
push edi
mov dword [ebp - 0x94], eax
mov dword [ebp - 0x98], edi
call fcn.10079ba3
add esp, 4
test eax, eax
je 0x1003129c
push eax
call fcn.10079c5b
add esp, 4
mov dword [ebp - 4], 1
mov edx, dword [esi + 4]
mov eax, edx
shr eax, 8
movzx ecx, al
movzx eax, dl
xor eax, 0x811c9dc5
imul eax, eax, 0x1000193
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x10
movzx eax, al
xor ecx, eax
mov eax, edx
mov edx, dword [ebp - 0x70]
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [edx + 0x290]
and ecx, eax
mov eax, dword [edx + 0x284]
mov eax, dword [eax + ecx*8]
lea ecx, [ecx*8 + 4]
mov dword [ebp - 0x90], ecx
mov esi, eax
mov ecx, dword [edx + 0x27c]
mov dword [ebp - 0x8c], eax
cmp eax, ecx
jne 0x10031318
mov eax, ecx
jmp 0x1003132f
mov edi, dword [ebp - 0x90]
mov eax, dword [edx + 0x284]
mov eax, dword [edi + eax]
lea edi, [edx + 0x248]
mov eax, dword [eax]
cmp esi, eax
je 0x1003134e
mov edi, dword [ebp - 0x68]
mov eax, dword [edi + 4]
lea edi, [edx + 0x248]
cmp dword [esi + 8], eax
je 0x10031350
mov esi, dword [esi]
mov eax, dword [ebp - 0x8c]
jmp 0x10031310
mov esi, ecx
lea eax, [edx + 0x278]
mov dword [ebp - 0x90], eax
cmp esi, ecx
je 0x1003140a
lea eax, [ebp - 0xa4]
lea ecx, [esi + 0xc]
push eax
call fcn.10032be0
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0xa4]
test eax, eax
je 0x100313cb
mov esi, dword [ebp - 0x74]
mov dword [ebp - 0xa4], 0
mov dword [esi], eax
mov eax, dword [ebp - 0xa0]
mov dword [esi + 4], eax
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x60], 1
mov byte [ebp - 4], 0
push edi
call fcn.10079bc8
add esp, 4
test eax, eax
je 0x100313c4
push eax
call fcn.10079c5b
add esp, 4
mov eax, esi
jmp 0x100319c1
mov ecx, dword [ebp - 0x90]
lea eax, [ebp - 0x7c]
push esi
push eax
call fcn.10034c50
mov byte [ebp - 4], 1
mov esi, dword [ebp - 0xa0]
test esi, esi
je 0x1003140a
or eax, 0xffffffff
lock xadd dword [esi + 4], eax
jne 0x1003140a
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
jne 0x1003140a
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov byte [ebp - 4], 0
push edi
call fcn.10079bc8
add esp, 4
test eax, eax
je 0x10031424
push eax
call fcn.10079c5b
add esp, 4
mov edx, dword [ebp - 0x70]
mov eax, dword [edx + 0x234]
mov ecx, dword [edx + 0x230]
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], ecx
cmp ecx, eax
jne 0x10031460
mov eax, dword [ebp - 0x74]
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x60], 1
jmp 0x100319c1
mov edi, dword [ebp - 0x68]
mov esi, dword [ecx + 4]
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x84], 0
test esi, esi
je 0x10031485
lock inc dword [esi + 4]
mov esi, dword [ecx + 4]
mov eax, dword [ecx]
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], esi
mov dword [ebp - 4], 3
mov edx, dword [edi + 4]
mov dword [ebp - 0x9c], edx
mov edx, dword [eax + 0x90]
mov dword [ebp - 0x8c], edx
mov byte [ebp - 4], 0
test esi, esi
je 0x100314e1
or eax, 0xffffffff
lock xadd dword [esi + 4], eax
jne 0x100314e1
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
jne 0x100314d8
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov edx, dword [ebp - 0x8c]
mov ecx, dword [ebp - 0x78]
cmp edx, dword [ebp - 0x9c]
je 0x100314f8
add ecx, 8
mov dword [ebp - 0x78], ecx
cmp ecx, dword [ebp - 0x7c]
jne 0x10031463
mov edx, dword [ebp - 0x70]
mov edi, dword [ebp - 0x98]
cmp ecx, dword [edx + 0x234]
jne 0x1003143d
mov eax, dword [ebp - 0x6c]
cmp dword [eax + 0x10], 0
jne 0x10031547
mov eax, dword [ebp - 0x68]
mov ecx, dword [edx + 0x298]
mov eax, dword [eax + 4]
mov dword [ebp - 0x6c], eax
lea eax, [ebp - 0x6c]
push eax
call fcn.100195d0
push eax
lea ecx, [ebp - 0x5c]
call fcn.10005920
mov ecx, eax
mov dword [ebp - 4], 4
mov eax, 2
jmp 0x1003155e
push eax
lea ecx, [ebp - 0x44]
call fcn.100180e0
mov ecx, eax
mov dword [ebp - 4], 5
mov eax, 4
push ecx
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x60], eax
call fcn.100180e0
mov dword [ebp - 4], 7
mov eax, dword [ebp - 0x60]
test al, 4
je 0x100315c7
and eax, 0xfffffffb
mov dword [ebp - 0x60], eax
mov edx, dword [ebp - 0x30]
cmp edx, 0x10
jb 0x100315b5
mov ecx, dword [ebp - 0x44]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100315a8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100319e1
push edx
push ecx
call fcn.1009091b
mov eax, dword [ebp - 0x60]
add esp, 8
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0xf
mov byte [ebp - 0x44], 0
mov byte [ebp - 4], 8
test al, 2
je 0x1003161b
and eax, 0xfffffffd
mov dword [ebp - 0x60], eax
mov edx, dword [ebp - 0x48]
cmp edx, 0x10
jb 0x10031609
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100315ff
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100319e6
push edx
push ecx
call fcn.1009091b
add esp, 8
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
mov ecx, dword [ebp - 0x70]
mov edx, dword [ebp - 0x68]
mov dword [ebp - 0x88], edx
lea edx, [ebp - 0x2c]
mov dword [ebp - 0x84], edx
mov esi, dword [ecx + 0x240]
mov eax, dword [ecx + 0x23c]
cmp eax, esi
je 0x10031699
mov edi, eax
sub esp, 8
mov ecx, esp
mov dword [ebp - 0x6c], esp
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [edi + 4]
test eax, eax
je 0x10031662
lock inc dword [eax + 4]
mov eax, dword [edi]
mov dword [ecx], eax
mov eax, dword [edi + 4]
mov dword [ecx + 4], eax
mov byte [ebp - 4], 9
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x88]
call fcn.10031a00
test al, al
jne 0x1003168a
add edi, 8
cmp edi, esi
jne 0x10031642
mov ecx, dword [ebp - 0x70]
mov dword [ebp - 0x78], edi
mov edi, dword [ebp - 0x98]
mov eax, dword [ebp - 0x78]
cmp eax, dword [ecx + 0x240]
je 0x10031783
push eax
push dword [ecx + 0x234]
push dword [ecx + 0x230]
lea ecx, [ebp - 0x9c]
call fcn.10034d50
add esp, 0xc
mov esi, dword [eax]
mov eax, dword [ebp - 0x70]
cmp esi, dword [eax + 0x234]
je 0x10031783
push edi
lea ecx, [ebp - 0x7c]
call fcn.100166d0
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0x68]
push esi
push ecx
mov ecx, dword [ebp - 0x90]
mov eax, dword [eax + 4]
mov dword [ebp - 0x6c], eax
lea eax, [ebp - 0x6c]
push eax
call fcn.10032750
add esp, 4
mov ecx, eax
call fcn.10034ee0
push esi
mov esi, dword [ebp - 0x74]
mov ecx, esi
call fcn.10005330
mov eax, dword [ebp - 0x60]
or eax, 1
mov dword [ebp - 0x60], eax
mov byte [ebp - 4], 8
push dword [ebp - 0x7c]
call fcn.10079bc8
add esp, 4
test eax, eax
je 0x10031732
push eax
call fcn.10079c5b
add esp, 4
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x18]
cmp edx, 0x10
jb 0x1003176a
mov ecx, dword [ebp - 0x2c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x10031760
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100319eb
push edx
push ecx
call fcn.1009091b
add esp, 8
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], 0
mov eax, esi
jmp 0x100319c1
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x18]
cmp edx, 0x10
jb 0x100317bb
mov ecx, dword [ebp - 0x2c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100317b1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100319f0
push edx
push ecx
call fcn.1009091b
add esp, 8
mov edi, dword [ebp - 0x70]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], 0
mov eax, dword [edi + 0x230]
mov esi, dword [edi + 0x234]
mov dword [ebp - 0x68], eax
cmp eax, esi
je 0x10031899
nop word [eax + eax]
mov edi, dword [eax + 4]
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x84], 0
test edi, edi
je 0x10031812
lock inc dword [edi + 4]
mov edi, dword [eax + 4]
mov eax, dword [eax]
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], edi
mov dword [ebp - 4], 0xb
add eax, 0xc
cmp dword [eax + 0x14], 0x10
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x7c], ecx
jb 0x10031838
mov eax, dword [eax]
mov ecx, dword [ebx + 0x14]
cmp dword [ecx + 0x14], 0x10
mov edx, dword [ecx + 0x10]
jb 0x10031846
mov ecx, dword [ecx]
push dword [ebp - 0x7c]
push eax
call fcn.1001a630
add esp, 8
mov byte [ebp - 0x61], al
mov byte [ebp - 4], 0
test edi, edi
je 0x10031881
or ecx, 0xffffffff
lock xadd dword [edi + 4], ecx
jne 0x10031881
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
or eax, 0xffffffff
lock xadd dword [edi + 8], eax
jne 0x1003187e
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
mov al, byte [ebp - 0x61]
test al, al
mov eax, dword [ebp - 0x68]
jne 0x10031896
add eax, 8
mov dword [ebp - 0x68], eax
cmp eax, esi
jne 0x100317f0
mov edi, dword [ebp - 0x70]
lea esi, [edi + 0x248]
mov dword [ebp - 0x6c], esi
push esi
cmp eax, dword [edi + 0x234]
je 0x10031937
call fcn.10079ba3
add esp, 4
test eax, eax
je 0x100318c4
push eax
call fcn.10079c5b
add esp, 4
mov dword [ebp - 4], 0xc
lea ecx, [edi + 0x278]
mov edi, dword [ebp - 0x68]
lea eax, [ebp - 0x94]
push edi
push ecx
push eax
call fcn.10032750
add esp, 4
mov ecx, eax
call fcn.10034ee0
mov ecx, dword [ebp - 0x74]
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [edi + 4]
test eax, eax
je 0x10031907
lock inc dword [eax + 4]
mov eax, dword [edi]
mov dword [ecx], eax
mov eax, dword [edi + 4]
or dword [ebp - 0x60], 1
mov dword [ecx + 4], eax
mov byte [ebp - 4], 0
push esi
call fcn.10079bc8
add esp, 4
test eax, eax
je 0x1003192f
push eax
call fcn.10079c5b
add esp, 4
mov eax, dword [ebp - 0x74]
jmp 0x100319c1
call fcn.10079ba3
add esp, 4
test eax, eax
je 0x1003194c
push eax
call fcn.10079c5b
add esp, 4
mov dword [ebp - 4], 0xd
lea ecx, [edi + 0x278]
push dword [edi + 0x230]
lea eax, [ebp - 0x94]
push ecx
push eax
call fcn.10032750
add esp, 4
mov ecx, eax
call fcn.10034ee0
mov ecx, dword [edi + 0x230]
mov edi, dword [ebp - 0x74]
mov dword [edi], 0
mov dword [edi + 4], 0
mov eax, dword [ecx + 4]
test eax, eax
je 0x10031997
lock inc dword [eax + 4]
mov eax, dword [ecx]
mov dword [edi], eax
mov eax, dword [ecx + 4]
or dword [ebp - 0x60], 1
mov dword [edi + 4], eax
mov byte [ebp - 4], 0
push esi
call fcn.10079bc8
add esp, 4
test eax, eax
je 0x100319bf
push eax
call fcn.10079c5b
add esp, 4
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100908e7
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x10
call fcn.100abcda
call fcn.100abcda
call fcn.100abcda
call fcn.100abcda
int3