Function at 0x10095210
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 0x100ddb99
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ebx
sub esp, 0x98
push esi
push edi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x20], 0
mov dword [ebp - 4], 0
mov edx, dword [ebx + 0x14]
push ecx
lea ecx, [ebp - 0xa4]
mov byte [ebp - 0x11], 0
call fcn.1009c1e0
add esp, 4
mov byte [ebp - 4], 1
xorps xmm2, xmm2
mov esi, dword [0x1012a528]
mov edi, dword [0x1012a524]
mov ecx, dword [0x1012a520]
dec ecx
lea edx, [esi + edi]
mov dword [ebp - 0x94], edx
dec edx
mov eax, edx
and edx, 3
shr eax, 2
and ecx, eax
mov eax, dword [0x1012a51c]
mov eax, dword [eax + ecx*4]
xor ecx, ecx
mov eax, dword [eax + edx*4]
mov dword [ebp - 0x28], eax
lea eax, [esi - 1]
mov esi, dword [0x1012a514]
test eax, eax
mov dword [0x1012a528], eax
cmove edi, ecx
mov ecx, dword [0x1012a50c]
mov dword [0x1012a524], edi
dec ecx
mov edi, dword [0x1012a510]
lea edx, [esi + edi]
mov dword [ebp - 0x94], edx
dec edx
mov eax, edx
and edx, 1
shr eax, 1
and ecx, eax
mov eax, dword [0x1012a508]
mov eax, dword [eax + ecx*4]
xor ecx, ecx
movss xmm1, dword [eax + edx*8]
movss xmm0, dword [eax + edx*8 + 4]
lea eax, [esi - 1]
addss xmm0, dword [0x1012a53c]
movss dword [ebp - 0x94], xmm1
test eax, eax
addss xmm1, dword [0x1012a538]
cmove edi, ecx
mov dword [0x1012a514], eax
mov ecx, dword [ebp - 0xa4]
subss xmm0, dword [0x100f8730]
mov dword [0x1012a510], edi
subss xmm1, xmm2
movd xmm2, dword [0x1012a55c]
mov esi, dword [ecx + 0x10]
cvtdq2ps xmm2, xmm2
movss dword [ebp - 0x18], xmm0
movss dword [ebp - 0x1c], xmm1
movss dword [ebp - 0x24], xmm2
test esi, esi
je 0x10095458
cmp dword [ecx + 0x14], 0x10
jb 0x10095361
mov ecx, dword [ecx]
mov edx, dword [ebp - 0x28]
lea edi, [ebp - 0x48]
push 0
push 0x400
push edi
mov eax, dword [edx]
xorps xmm0, xmm0
push esi
push ecx
push 0
push edx
movups xmmword [ebp - 0x48], xmm0
call dword [eax + 0x38]
mov eax, dword [ebp - 0xa4]
mov esi, dword [ebp - 0x3c]
sub esi, dword [ebp - 0x44]
mov dword [ebp - 0x2c], eax
cmp dword [eax + 0x14], 0x10
jb 0x1009539a
mov eax, dword [eax]
mov dword [ebp - 0x2c], eax
mov cx, word [0x1010e582]
xorps xmm0, xmm0
movups xmmword [ebp - 0x48], xmm0
movzx eax, cx
movss xmm0, dword [ebp - 0x18]
xorps xmm1, xmm1
subss xmm0, xmm1
movzx edi, ch
mov dword [ebp - 0x8c], eax
mov eax, dword [0x1010e580]
mov dword [ebp - 0x20], eax
shr eax, 8
cvttss2si ecx, xmm0
mov dword [ebp - 0x30], eax
movss xmm0, dword [ebp - 0x1c]
subss xmm0, dword [0x100f86dc]
push ecx
cvttss2si eax, xmm0
push eax
push ecx
push eax
lea eax, [ebp - 0x48]
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov edx, dword [ebp - 0x28]
shl edi, 8
mov eax, dword [edx]
mov ecx, dword [eax + 0x38]
mov eax, dword [ebp - 0x20]
movzx eax, al
or edi, eax
mov eax, dword [ebp - 0x30]
movzx eax, al
shl edi, 8
or edi, eax
mov eax, dword [ebp - 0x8c]
movzx eax, al
shl edi, 8
or edi, eax
lea eax, [ebp - 0x48]
push edi
push 0x100
push eax
push 0xffffffffffffffff
push dword [ebp - 0x2c]
push 0
push edx
call ecx
movss xmm0, dword [ebp - 0x18]
movss xmm2, dword [ebp - 0x24]
movd xmm1, esi
cvtdq2ps xmm1, xmm1
addss xmm1, dword [0x100f873c]
addss xmm0, xmm1
movss xmm1, dword [ebp - 0x1c]
movss dword [ebp - 0x18], xmm0
push dword [0x1010e584]
mov cl, 1
push dword [0x1010e588]
sub esp, 8
mov eax, esp
sub esp, 8
movss dword [eax], xmm2
mov dword [eax + 4], 0x41600000
mov eax, esp
movss dword [eax], xmm1
movss dword [eax + 4], xmm0
call fcn.1006c3c0
movss xmm0, dword [ebp - 0x24]
add esp, 0x18
subss xmm0, dword [0x100f8708]
push dword [0x1010e58c]
sub esp, 8
movss dword [ebp - 0x3c], xmm0
mov eax, esp
sub esp, 8
movss dword [eax], xmm0
movss xmm0, dword [ebp - 0x1c]
addss xmm0, dword [0x100f86dc]
mov dword [eax + 4], 0x41400000
mov eax, esp
movss dword [ebp - 0x8c], xmm0
movss dword [eax], xmm0
movss xmm0, dword [ebp - 0x18]
addss xmm0, dword [0x100f86dc]
movss dword [ebp - 0x20], xmm0
movss dword [eax + 4], xmm0
call fcn.1006c2d0
mov eax, dword [ebp - 0x34]
add esp, 0x14
mov edx, dword [ebx + 8]
mov ecx, dword [eax]
mov eax, dword [ebx + 0xc]
sub eax, edx
sar eax, 3
cmp eax, ecx
jbe 0x10095c14
push dword [edx + ecx*8 + 4]
movss xmm0, dword [ebp - 0x24]
mulss xmm0, dword [0x100f86c4]
mov eax, dword [0x1010e580]
push dword [edx + ecx*8]
movss xmm1, dword [ebp - 0x1c]
mov edx, 0xc
addss xmm1, xmm0
sub esp, 8
movss xmm0, dword [ebp - 0x18]
mov ecx, esp
addss xmm0, dword [0x100f874c]
push eax
movss dword [ecx], xmm1
movss dword [ebp - 0x2c], xmm1
movss dword [ecx + 4], xmm0
mov ecx, dword [ebp - 0x28]
movss dword [ebp - 0x30], xmm0
call fcn.1006c810
mov edi, dword [ebx + 0x14]
add esp, 0x14
mov al, byte [edi]
test al, al
je 0x10095582
movsx eax, al
lea ecx, [edi + 1]
xor eax, 0x811c9dc5
imul edx, eax, 0x1000193
call fcn.1009c420
jmp 0x10095587
mov eax, 0x811c9dc5
mov esi, dword [0x1012a500]
mov ecx, dword [ebx + 0xc]
movss xmm5, dword [0x1012a59c]
movss xmm7, dword [0x1012a598]
mov dl, byte [0x10133421]
mov dh, byte [0x10133521]
movss xmm4, dword [0x100f8760]
movss xmm3, dword [ebp - 0x1c]
cmp esi, eax
jne 0x1009561b
mov eax, ecx
sub eax, dword [ebx + 8]
sar eax, 3
inc eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
comiss xmm7, xmm3
addsd xmm0, qword [eax*8 + 0x100f8f90]
cvtpd2ps xmm2, xmm0
mulss xmm2, xmm4
jbe 0x1009560a
movss xmm1, dword [ebp - 0x18]
comiss xmm5, xmm1
jbe 0x1009560a
movaps xmm0, xmm3
addss xmm0, dword [ebp - 0x24]
comiss xmm0, xmm7
jbe 0x1009560a
movaps xmm0, xmm1
addss xmm0, xmm2
comiss xmm0, xmm5
ja 0x1009561b
test dl, dl
je 0x1009561b
xor eax, eax
test dh, dh
cmove esi, eax
mov dword [0x1012a500], esi
comiss xmm7, xmm3
movss xmm2, dword [ebp - 0x18]
movss xmm6, dword [ebp - 0x24]
jbe 0x1009574b
comiss xmm5, xmm2
jbe 0x1009574b
movaps xmm0, xmm3
addss xmm0, xmm6
comiss xmm0, xmm7
jbe 0x1009574b
movaps xmm0, xmm2
addss xmm0, xmm4
comiss xmm0, xmm5
jbe 0x1009574b
test dl, dl
je 0x1009574b
test dh, dh
jne 0x1009574b
mov al, byte [edi]
test esi, esi
jne 0x10095713
test al, al
je 0x10095707
movsx eax, al
lea ecx, [edi + 1]
xor eax, 0x811c9dc5
imul edx, eax, 0x1000193
call fcn.1009c420
mov dword [0x1012a500], eax
movss xmm1, dword [ebp - 0x18]
sub esp, 8
subss xmm1, dword [0x1012a53c]
movd xmm0, dword [0x100f25b0]
mov edx, esp
cvtdq2ps xmm0, xmm0
addss xmm1, dword [0x100f8760]
addss xmm1, xmm0
movss xmm0, dword [ebp - 0x94]
movss dword [edx], xmm0
movss dword [edx + 4], xmm1
call fcn.1009c440
mov ecx, dword [ebp - 0x28]
add esp, 8
call fcn.1009c4f0
lea ecx, [ebp - 0xa4]
call fcn.10053c70
lea ecx, [ebx + 8]
call fcn.1009bea0
mov ecx, dword [ebp - 0xc]
mov al, byte [ebp - 0x11]
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov dword [0x1012a500], 0x811c9dc5
jmp 0x10095694
test al, al
je 0x1009572f
movsx eax, al
lea ecx, [edi + 1]
xor eax, 0x811c9dc5
imul edx, eax, 0x1000193
call fcn.1009c420
jmp 0x10095734
mov eax, 0x811c9dc5
cmp esi, eax
jne 0x10095694
mov dword [0x1012a500], 0
jmp 0x10095694
mov al, byte [edi]
test al, al
je 0x1009576c
movsx eax, al
lea ecx, [edi + 1]
xor eax, 0x811c9dc5
imul edx, eax, 0x1000193
call fcn.1009c420
mov ecx, dword [ebx + 0xc]
jmp 0x10095771
mov eax, 0x811c9dc5
cmp esi, eax
jne 0x10095694
sub ecx, dword [ebx + 8]
sar ecx, 3
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0xf
mov dword [ebp - 0x88], 2
lea eax, [ecx + 1]
movss dword [ebp - 0x84], xmm3
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
mov byte [ebp - 0x70], 1
movss dword [ebp - 0x80], xmm2
addsd xmm0, qword [eax*8 + 0x100f8f90]
mov eax, dword [0x1010e588]
mov dword [ebp - 0x74], eax
mov eax, dword [0x1010e584]
movss dword [ebp - 0x7c], xmm6
cvtpd2ps xmm1, xmm0
mov dword [ebp - 0x6f], eax
xorps xmm0, xmm0
mulss xmm1, xmm4
movups xmmword [ebp - 0x68], xmm0
mov byte [ebp - 0x68], 0
movss dword [ebp - 0x78], xmm1
mov byte [ebp - 4], 2
lea eax, [ebp - 0x88]
mov ecx, dword [0x1012a530]
push eax
cmp ecx, dword [0x1012a534]
je 0x10095813
call fcn.10093890
add dword [0x1012a530], 0x40
jmp 0x1009581e
push ecx
mov ecx, 0x1012a52c
call fcn.1009bf00
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x54]
cmp ecx, 0x10
jb 0x10095856
mov edx, dword [ebp - 0x68]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1009584c
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10095c19
push ecx
push edx
call fcn.100b0b76
add esp, 8
mov eax, dword [ebx + 0xc]
sub eax, dword [ebx + 8]
sar eax, 3
inc eax
mov dword [ebp - 0x6f], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0xf
mov dword [ebp - 0x88], 1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x100f8f90]
mov eax, dword [0x1010e58c]
mov dword [ebp - 0x74], eax
cvtpd2ps xmm1, xmm0
xorps xmm0, xmm0
mulss xmm1, dword [0x100f8760]
movups xmmword [ebp - 0x68], xmm0
mov byte [ebp - 0x68], 0
movss xmm0, dword [ebp - 0x8c]
subss xmm1, dword [0x100f8708]
movss dword [ebp - 0x84], xmm0
movss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0x80], xmm0
movss xmm0, dword [ebp - 0x3c]
movss dword [ebp - 0x7c], xmm0
movss dword [ebp - 0x78], xmm1
mov byte [ebp - 4], 3
lea eax, [ebp - 0x88]
mov ecx, dword [0x1012a530]
push eax
cmp ecx, dword [0x1012a534]
je 0x1009590a
call fcn.10093890
add dword [0x1012a530], 0x40
jmp 0x10095915
push ecx
mov ecx, 0x1012a52c
call fcn.1009bf00
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x54]
cmp ecx, 0x10
jb 0x1009594d
mov edx, dword [ebp - 0x68]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10095943
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10095c19
push ecx
push edx
call fcn.100b0b76
add esp, 8
mov eax, dword [ebp - 0x34]
mov esi, dword [ebx + 8]
mov edx, dword [eax]
mov eax, dword [ebx + 0xc]
sub eax, esi
sar eax, 3
cmp eax, edx
jbe 0x10095c14
mov eax, dword [esi + edx*8 + 4]
mov ecx, dword [esi + edx*8]
mov esi, dword [0x1010e580]
mov dword [ebp - 0x3c], eax
mov byte [ebp - 4], 4
xorps xmm0, xmm0
movups xmmword [ebp - 0x68], xmm0
push eax
movss xmm0, dword [ebp - 0x2c]
movss dword [ebp - 0x84], xmm0
movss xmm0, dword [ebp - 0x30]
push ecx
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x6f], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0xf
mov byte [ebp - 0x68], 0
mov dword [ebp - 0x20], 2
mov dword [ebp - 0x88], 3
movss dword [ebp - 0x80], xmm0
call fcn.100777a0
mov eax, dword [ebp - 0x28]
mov ecx, dword [0x1012a530]
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x88]
mov dword [ebp - 0x74], esi
mov dword [ebp - 0x4c], 0xc
push eax
cmp ecx, dword [0x1012a534]
je 0x10095a05
call fcn.10093890
add dword [0x1012a530], 0x40
jmp 0x10095a10
push ecx
mov ecx, 0x1012a52c
call fcn.1009bf00
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x20], 0
cmp ecx, 0x10
jb 0x10095a4f
mov edx, dword [ebp - 0x68]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10095a45
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10095c19
push ecx
push edx
call fcn.100b0b76
add esp, 8
mov edx, dword [ebx + 0xc]
xor edi, edi
mov esi, dword [ebx + 8]
mov eax, edx
sub eax, esi
sar eax, 3
test eax, eax
je 0x10095694
movss xmm3, dword [ebp - 0x1c]
xorps xmm0, xmm0
addss xmm3, xmm0
movss dword [ebp - 0x1c], xmm3
nop word [eax + eax]
movss xmm6, dword [0x100f8760]
lea eax, [edi + 1]
movss xmm5, dword [0x1012a598]
comiss xmm5, xmm3
mov dword [ebp - 0x3c], eax
movss xmm1, dword [ebp - 0x18]
movd xmm2, eax
cvtdq2ps xmm2, xmm2
mulss xmm2, xmm6
addss xmm1, xmm2
jbe 0x10095af1
movss xmm4, dword [0x1012a59c]
comiss xmm4, xmm1
jbe 0x10095af1
movss xmm0, dword [ebp - 0x24]
addss xmm0, xmm3
comiss xmm0, xmm5
jbe 0x10095aee
addss xmm1, xmm6
comiss xmm1, xmm4
jbe 0x10095aee
mov ecx, 1
call fcn.1009c1c0
xorps xmm0, xmm0
test al, al
je 0x10095af1
mov eax, dword [ebp - 0x34]
mov byte [ebp - 0x11], cl
mov dword [eax], edi
jmp 0x10095af1
xorps xmm0, xmm0
sub edx, esi
sar edx, 3
cmp edx, edi
jbe 0x10095c14
mov edx, dword [ebp - 0x34]
mov ecx, dword [esi + edi*8]
mov eax, dword [esi + edi*8 + 4]
mov esi, dword [0x1010e598]
cmp edi, dword [edx]
movss xmm1, dword [ebp - 0x2c]
cmove esi, dword [0x1010e580]
addss xmm1, xmm0
addss xmm2, dword [ebp - 0x30]
mov byte [ebp - 4], 5
mov edi, dword [ebp - 0x20]
push eax
push ecx
movups xmmword [ebp - 0x68], xmm0
or edi, 1
mov dword [ebp - 0x74], 0
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x6f], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0xf
mov byte [ebp - 0x68], 0
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x88], 3
movss dword [ebp - 0x84], xmm1
movss dword [ebp - 0x80], xmm2
call fcn.100777a0
mov eax, dword [ebp - 0x28]
mov ecx, dword [0x1012a530]
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x88]
mov dword [ebp - 0x74], esi
mov dword [ebp - 0x4c], 0xc
push eax
cmp ecx, dword [0x1012a534]
je 0x10095baa
call fcn.10093890
add dword [0x1012a530], 0x40
jmp 0x10095bb5
push ecx
mov ecx, 0x1012a52c
call fcn.1009bf00
and edi, 0xfffffffe
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x20], edi
cmp ecx, 0x10
jb 0x10095bef
mov edx, dword [ebp - 0x68]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10095be5
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10095c19
push ecx
push edx
call fcn.100b0b76
add esp, 8
mov edx, dword [ebx + 0xc]
mov eax, edx
mov esi, dword [ebx + 8]
sub eax, esi
mov edi, dword [ebp - 0x3c]
sar eax, 3
cmp edi, eax
jae 0x10095694
movss xmm3, dword [ebp - 0x1c]
xorps xmm0, xmm0
jmp 0x10095a80
call fcn.1004b750
call fcn.100b7b82
int3