Function at 0x100d8a90
Capabilities:
Log keystrokes via polling

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
sub esp, 0x10
mov dl, 1
push esi
push edi
mov edi, ecx
call fcn.100d83b0
test al, al
jne 0x100d8d59
cmp dword [0x101e984c], 0
je 0x100d8b70
mov eax, dword [edi + 0x30]
test al, 1
jne 0x100d8b70
test eax, 0x800
jne 0x100d8b70
mov esi, dword [0x101e6788]
mov ecx, dword [0x101edeec]
mov edx, dword [esi + 8]
cmp ecx, edx
jg 0x100d8b70
test ecx, ecx
js 0x100d8b70
mov ecx, eax
and ecx, 0x618
test al, 4
jne 0x100d8b15
cmp byte [0x101eddfc], 0
jne 0x100d8b15
movss xmm0, dword [0x1017f15c]
jmp 0x100d8b1d
movss xmm0, dword [0x1017f1f0]
test ecx, ecx
jne 0x100d8b70
mov cl, byte [0x101edee8]
test cl, cl
je 0x100d8b32
xorps xmm0, xmmword [0x1017fa30]
mov eax, dword [0x101e6760]
movss dword [esi + 0x28], xmm0
mov esi, dword [eax + 0x4d30]
cmp esi, 1
jne 0x100d8b4c
lea eax, [edx + 2]
jmp 0x100d8b62
mov eax, dword [0x101e9834]
add edx, 4
dec eax
mov dword [0x101edeec], edx
cmp esi, eax
jge 0x100d8b67
lea eax, [edx - 1]
mov dword [0x101edeec], eax
test cl, cl
sete byte [0x101edee8]
push dword [0x101e9870]
call dword [sym.imp.USER32.dll_GetKeyState]
movsx esi, ax
shr esi, 0x10
test si, si
je 0x100d8ba8
cmp byte [0x101edef8], 0
jne 0x100d8ba8
mov eax, dword [0x1018b0f4]
neg eax
mov byte [0x101edef8], 1
sbb eax, eax
neg eax
dec eax
mov dword [0x1018b0f4], eax
push dword [0x101e9878]
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
mov dword [ebp - 8], eax
test ax, ax
je 0x100d8be8
cmp byte [0x101edef8], 0
jne 0x100d8be8
xor eax, eax
mov byte [0x101edef8], 1
cmp dword [0x1018b0f4], 1
setne al
lea eax, [eax*2 - 1]
mov dword [0x1018b0f4], eax
push dword [0x101e9880]
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
je 0x100d8c24
cmp byte [0x101edef8], 0
jne 0x100d8c37
mov eax, 2
mov byte [0x101edef8], 1
or ecx, 0xffffffff
cmp dword [0x1018b0f4], eax
cmove eax, ecx
mov dword [0x1018b0f4], eax
jmp 0x100d8c37
cmp word [ebp - 8], 0
jne 0x100d8c37
test si, si
jne 0x100d8c37
mov byte [0x101edef8], 0
push dword [0x101e986c]
push dword [0x101e9868]
call fcn.10143990
test al, al
je 0x100d8c59
cmp dword [0x101e9868], 0
mov byte [ebp - 1], 1
jne 0x100d8c5d
mov byte [ebp - 1], 0
mov dl, byte [0x101edef0]
test dl, dl
je 0x100d8c6e
mov eax, dword [0x101e9860]
jmp 0x100d8c75
mov eax, dword [0x101e9864]
neg eax
movd xmm2, eax
xorps xmm0, xmm0
mov eax, dword [0x101e9850]
cvtdq2ps xmm2, xmm2
movss dword [ebp - 0xc], xmm2
sub eax, 1
je 0x100d8c9d
sub eax, 1
jne 0x100d8ca5
movss xmm0, dword [0x1017f404]
jmp 0x100d8ca5
movss xmm0, dword [0x1017f2c0]
movss dword [edi + 0xc], xmm0
call fcn.100d8920
cmp dword [0x101e985c], 1
jne 0x100d8ce0
movss dword [ebp - 8], xmm0
call fcn.100d7e60
movss xmm1, dword [ebp - 8]
mov dl, byte [0x101edef0]
addss xmm1, xmm0
movss xmm2, dword [ebp - 0xc]
subss xmm1, dword [0x1017f320]
jmp 0x100d8ce8
movaps xmm1, xmm0
addss xmm1, dword [edi + 0x10]
movss xmm0, dword [0x101edee4]
ucomiss xmm0, xmm1
movss dword [edi + 0x10], xmm1
lahf
test ah, 0x44
jnp 0x100d8d06
movss dword [0x101edee4], xmm1
mov eax, dword [0x101e6784]
mov cl, byte [0x101edef9]
cmp byte [eax], 0
jne 0x100d8d44
mov eax, dword [0x101e984c]
sub eax, 1
je 0x100d8d3b
sub eax, 1
jne 0x100d8d44
test cl, cl
je 0x100d8d30
xorps xmm2, xmmword [0x1017fa30]
addss xmm2, xmm1
movss dword [edi + 0x10], xmm2
jmp 0x100d8d44
addss xmm1, xmm2
movss dword [edi + 0x10], xmm1
mov al, byte [ebp - 1]
cmp dl, al
je 0x100d8d50
mov byte [0x101edef0], al
test cl, cl
sete byte [0x101edef9]
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret