Function at 0x1009e850
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
cmp byte [0x10164cc0], 0
push ebx
push esi
push edi
je 0x1009ec9d
mov eax, dword [0x101651e4]
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 [0x10165178], 0
je 0x1009e8c5
cmp byte [0x10165188], 0
je 0x1009e8c5
cmp dword [0x10165184], 0
mov eax, dword [0x1016517c]
jne 0x1009e8a6
cmp eax, 0x1f
je 0x1009e8a6
mov dl, 1
jmp 0x1009e8a8
xor dl, dl
test cl, cl
jne 0x1009ec9d
test bl, bl
je 0x1009e8c5
test dl, dl
jne 0x1009ec9d
cmp eax, 0x40
je 0x1009ec9d
mov ecx, dword [0x101c643c]
mov esi, dword [0x101c64c8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x1009e8ed
mov eax, dword [esi]
test eax, eax
je 0x1009e8ed
mov al, byte [eax + 0x20]
test al, al
jne 0x1009ec9d
test byte [0x10165100], 0x40
jne 0x1009ec9d
cmp byte [0x101651a4], 0
jne 0x1009ec9d
mov edx, dword [0x101651e4]
test byte [edx + 0x30], 0x20
jne 0x1009ec9d
cmp dword [0x10165184], 9
xorps xmm0, xmm0
jne 0x1009e974
mov eax, dword [0x101c67a0]
mov ecx, dword [0x10165178]
add eax, 0xffffff7f
xor eax, 0x9ad08921
cmp byte [eax + ecx], 0
je 0x1009e948
cmp byte [ebp - 1], 0
jne 0x1009e948
test bl, bl
je 0x1009e974
mov eax, dword [0x101c67a4]
add eax, 0xffffff7e
xor eax, 0x9ad08922
movss xmm1, dword [eax + ecx]
comiss xmm1, xmm0
jbe 0x1009e974
mov eax, dword [0x101c649c]
movss xmm0, dword [eax + 0x10]
comiss xmm0, xmm1
ja 0x1009ec9d
movd xmm0, dword [0x10164cd0]
cvtdq2ps xmm0, xmm0
mov ecx, dword [0x10164cc8]
mov eax, dword [0x10164ccc]
mov dword [0x10175d88], eax
mov eax, dword [0x10164ce0]
mov dword [0x10175d84], ecx
dec ecx
movss dword [0x10175d8c], xmm0
movd xmm0, dword [0x10164cd4]
mov dword [0x10175d9c], eax
mov eax, dword [0x10164cf0]
mov dword [0x10175da4], eax
cvtdq2ps xmm0, xmm0
movss dword [0x10175d90], xmm0
movd xmm0, dword [0x10164cd8]
cvtdq2ps xmm0, xmm0
movss dword [0x10175d94], xmm0
movd xmm0, dword [0x10164cdc]
cvtdq2ps xmm0, xmm0
movss dword [0x10175d98], xmm0
movd xmm0, dword [0x10164ce8]
cvtdq2ps xmm0, xmm0
movss dword [0x10175da0], xmm0
movd xmm0, dword [0x10164ce4]
cvtdq2ps xmm0, xmm0
movss dword [0x10175da8], xmm0
cmp ecx, 3
ja case.default.0x1009ea16
jmp dword [ecx*4 + 0x1009eca4]
mov dword [edx + 0xc], 0x42b20000
jmp 0x1009ea7e
mov dword [edx + 0xc], 0xc2b20000
jmp 0x1009ea7e
mov eax, dword [0x101c6568]
sub esp, 8
mov dword [ebp - 8], eax
mov dword [esp + 4], 0x42b20000
mov dword [esp], 0xc2b20000
call dword [ebp - 8]
mov eax, dword [0x101651e4]
add esp, 8
fstp dword [ebp - 8]
movss xmm0, dword [ebp - 8]
movss dword [eax + 0xc], xmm0
jmp 0x1009ea7e
mov ecx, dword [0x101c65d4]
mov eax, dword [0x101650f8]
mov eax, dword [ecx + eax]
test eax, eax
je case.default.0x1009ea16
mov eax, dword [eax + 0x33c]
mov dword [edx + 0xc], eax
mov edx, dword [0x101651e4]
cmp dword [0x10175d88], 0
jle 0x1009ea94
call fcn.1009ce30
jmp 0x1009eaaa
cmp dword [0x10164cf8], 0
jle 0x1009eaaa
movss xmm0, dword [edx + 0x10]
movss dword [0x10175dbc], xmm0
mov eax, dword [0x101c6638]
add eax, 0xffffffd9
xor eax, 0x9ad088c7
add eax, dword [0x101650f8]
movss xmm1, dword [eax + 4]
movss xmm0, dword [eax]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.1001c2a0
movss xmm1, dword [0x100e2c88]
comiss xmm1, xmm0
jb 0x1009ec52
push dword [0x10164fb4]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
je 0x1009ec52
mov ecx, dword [0x101651e4]
xorps xmm1, xmm1
movss xmm0, dword [ecx + 0x24]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009ec49
movss xmm0, dword [ecx + 0x28]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1009ec49
mov eax, dword [0x101c6638]
add eax, 0xffffffd9
xor eax, 0x9ad088c7
add eax, dword [0x101650f8]
movss xmm1, dword [eax + 4]
movss xmm0, dword [eax]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.1001c2a0
comiss xmm0, dword [0x100e2cdc]
ja 0x1009ec9d
mov eax, dword [0x101651b8]
mov cl, byte [ecx + 8]
and cl, 1
mov byte [eax], cl
mov eax, dword [0x101651e4]
test byte [eax + 8], 1
jne 0x1009ec44
call fcn.1009e140
mov esi, dword [0x101cc854]
inc esi
mov dword [0x101cc854], esi
cmp esi, 7
je 0x1009ebce
cmp esi, 1
je 0x1009ebce
cmp byte [0x101cc852], 0
je 0x1009ec9d
mov eax, dword [0x101651e4]
mov byte [0x101cc852], 0
movss xmm0, dword [eax + 0x10]
subss xmm0, dword [0x100e2d68]
movss dword [eax + 0x10], xmm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [0x101cc853], 0
mov edi, 0xffffff88
mov ecx, dword [0x101651e4]
mov eax, 0x6e
sete dl
mov byte [0x101cc852], 1
test dl, dl
mov byte [0x101cc853], 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 [0x101651e4]
movd xmm0, eax
xor eax, eax
cvtdq2ps xmm0, xmm0
cmp esi, 7
cmove esi, eax
mov dword [0x101cc854], 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.1009e680
cmp dword [0x10175d80], 0
je 0x1009ec9d
cmp dword [0x10164cf8], 0
je 0x1009ec98
mov eax, dword [0x101651b8]
cmp byte [eax], 0
je 0x1009ec71
cmp byte [0x101651c0], 0
je 0x1009ec82
mov byte [eax], 0
call fcn.1009e140
call fcn.1009be50
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [0x101651bc]
cmp byte [eax], 0
je 0x1009ec71
call fcn.1009e680
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.1009e140
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret