Function at 0x1009e190
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
cmp byte [0x10161cc8], 0
push ebx
push esi
push edi
je 0x1009e5dd
mov eax, dword [0x101621ec]
mov ebx, dword [eax + 0x30]
mov cl, byte [eax + 0x30]
shr ebx, 0xb
and cl, 1
and bl, 1
mov byte [ebp - 1], cl
cmp dword [0x10162180], 0
je 0x1009e205
cmp byte [0x10162190], 0
je 0x1009e205
cmp dword [0x1016218c], 0
mov eax, dword [0x10162184]
jne 0x1009e1e6
cmp eax, 0x1f
je 0x1009e1e6
mov dl, 1
jmp 0x1009e1e8
xor dl, dl
test cl, cl
jne 0x1009e5dd
test bl, bl
je 0x1009e205
test dl, dl
jne 0x1009e5dd
cmp eax, 0x40
je 0x1009e5dd
mov ecx, dword [0x101c340c]
mov esi, dword [0x101c3498]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x1009e22d
mov eax, dword [esi]
test eax, eax
je 0x1009e22d
mov al, byte [eax + 0x20]
test al, al
jne 0x1009e5dd
test byte [0x10162108], 0x40
jne 0x1009e5dd
cmp byte [0x101621ac], 0
jne 0x1009e5dd
mov edx, dword [0x101621ec]
test byte [edx + 0x30], 0x20
jne 0x1009e5dd
cmp dword [0x1016218c], 9
xorps xmm0, xmm0
jne 0x1009e2b4
mov eax, dword [0x101c3768]
mov ecx, dword [0x10162180]
add eax, 0xffffff7f
xor eax, 0xd5b8f5c
cmp byte [eax + ecx], 0
je 0x1009e288
cmp byte [ebp - 1], 0
jne 0x1009e288
test bl, bl
je 0x1009e2b4
mov eax, dword [0x101c376c]
add eax, 0xffffff7e
xor eax, 0xd5b8f5d
movss xmm1, dword [eax + ecx]
comiss xmm1, xmm0
jbe 0x1009e2b4
mov eax, dword [0x101c346c]
movss xmm0, dword [eax + 0x10]
comiss xmm0, xmm1
ja 0x1009e5dd
movd xmm0, dword [0x10161cd8]
cvtdq2ps xmm0, xmm0
mov ecx, dword [0x10161cd0]
mov eax, dword [0x10161cd4]
mov dword [0x10172d58], eax
mov eax, dword [0x10161ce8]
mov dword [0x10172d54], ecx
dec ecx
movss dword [0x10172d5c], xmm0
movd xmm0, dword [0x10161cdc]
mov dword [0x10172d6c], eax
mov eax, dword [0x10161cf8]
mov dword [0x10172d74], eax
cvtdq2ps xmm0, xmm0
movss dword [0x10172d60], xmm0
movd xmm0, dword [0x10161ce0]
cvtdq2ps xmm0, xmm0
movss dword [0x10172d64], xmm0
movd xmm0, dword [0x10161ce4]
cvtdq2ps xmm0, xmm0
movss dword [0x10172d68], xmm0
movd xmm0, dword [0x10161cf0]
cvtdq2ps xmm0, xmm0
movss dword [0x10172d70], xmm0
movd xmm0, dword [0x10161cec]
cvtdq2ps xmm0, xmm0
movss dword [0x10172d78], xmm0
cmp ecx, 3
ja case.default.0x1009e356
jmp dword [ecx*4 + 0x1009e5e4]
mov dword [edx + 0xc], 0x42b20000
jmp 0x1009e3be
mov dword [edx + 0xc], 0xc2b20000
jmp 0x1009e3be
mov eax, dword [0x101c3534]
sub esp, 8
mov dword [ebp - 8], eax
mov dword [esp + 4], 0x42b20000
mov dword [esp], 0xc2b20000
call dword [ebp - 8]
mov eax, dword [0x101621ec]
add esp, 8
fstp dword [ebp - 8]
movss xmm0, dword [ebp - 8]
movss dword [eax + 0xc], xmm0
jmp 0x1009e3be
mov ecx, dword [0x101c35a0]
mov eax, dword [0x10162100]
mov eax, dword [ecx + eax]
test eax, eax
je case.default.0x1009e356
mov eax, dword [eax + 0x33c]
mov dword [edx + 0xc], eax
mov edx, dword [0x101621ec]
cmp dword [0x10172d58], 0
jle 0x1009e3d4
call fcn.1009c770
jmp 0x1009e3ea
cmp dword [0x10161d00], 0
jle 0x1009e3ea
movss xmm0, dword [edx + 0x10]
movss dword [0x10172d8c], xmm0
mov eax, dword [0x101c3600]
add eax, 0xffffffd9
xor eax, 0xd5b8f02
add eax, dword [0x10162100]
movss xmm1, dword [eax + 4]
movss xmm0, dword [eax]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.1001c2a0
movss xmm1, dword [0x100e0af0]
comiss xmm1, xmm0
jb 0x1009e592
push dword [0x10161fbc]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
je 0x1009e592
mov ecx, dword [0x101621ec]
xorps xmm1, xmm1
movss xmm0, dword [ecx + 0x24]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009e589
movss xmm0, dword [ecx + 0x28]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009e589
mov eax, dword [0x101c3600]
add eax, 0xffffffd9
xor eax, 0xd5b8f02
add eax, dword [0x10162100]
movss xmm1, dword [eax + 4]
movss xmm0, dword [eax]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.1001c2a0
comiss xmm0, dword [0x100e0b44]
ja 0x1009e5dd
mov eax, dword [0x101621c0]
mov cl, byte [ecx + 8]
and cl, 1
mov byte [eax], cl
mov eax, dword [0x101621ec]
test byte [eax + 8], 1
jne 0x1009e584
call fcn.1009da80
mov esi, dword [0x101c9814]
inc esi
mov dword [0x101c9814], esi
cmp esi, 7
je 0x1009e50e
cmp esi, 1
je 0x1009e50e
cmp byte [0x101c9812], 0
je 0x1009e5dd
mov eax, dword [0x101621ec]
mov byte [0x101c9812], 0
movss xmm0, dword [eax + 0x10]
subss xmm0, dword [0x100e0bd0]
movss dword [eax + 0x10], xmm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [0x101c9813], 0
mov edi, 0xffffff88
mov ecx, dword [0x101621ec]
mov eax, 0x6e
sete dl
mov byte [0x101c9812], 1
test dl, dl
mov byte [0x101c9813], dl
cmovne eax, edi
mov edi, 0x15
movd xmm0, eax
mov eax, 0xffffffeb
cvtdq2ps xmm0, xmm0
cmovne eax, edi
addss xmm0, dword [ecx + 0x10]
movss dword [ecx + 0x10], xmm0
mov ecx, dword [0x101621ec]
movd xmm0, eax
xor eax, eax
cvtdq2ps xmm0, xmm0
cmp esi, 7
cmove esi, eax
mov dword [0x101c9814], esi
addss xmm0, dword [ecx + 0x24]
movss dword [ecx + 0x24], xmm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.1009dfc0
cmp dword [0x10172d50], 0
je 0x1009e5dd
cmp dword [0x10161d00], 0
je 0x1009e5d8
mov eax, dword [0x101621c0]
cmp byte [eax], 0
je 0x1009e5b1
cmp byte [0x101621c8], 0
je 0x1009e5c2
mov byte [eax], 0
call fcn.1009da80
call fcn.1009b790
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [0x101621c4]
cmp byte [eax], 0
je 0x1009e5b1
call fcn.1009dfc0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.1009da80
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret