Function at 0x100d8be0
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.100d8500
test al, al
jne 0x100d8ea9
cmp dword [0x101e984c], 0
je 0x100d8cc0
mov eax, dword [edi + 0x30]
test al, 1
jne 0x100d8cc0
test eax, 0x800
jne 0x100d8cc0
mov esi, dword [0x101e6788]
mov ecx, dword [0x101edeec]
mov edx, dword [esi + 8]
cmp ecx, edx
jg 0x100d8cc0
test ecx, ecx
js 0x100d8cc0
mov ecx, eax
and ecx, 0x618
test al, 4
jne 0x100d8c65
cmp byte [0x101eddfc], 0
jne 0x100d8c65
movss xmm0, dword [0x1017f0dc]
jmp 0x100d8c6d
movss xmm0, dword [0x1017f170]
test ecx, ecx
jne 0x100d8cc0
mov cl, byte [0x101edee8]
test cl, cl
je 0x100d8c82
xorps xmm0, xmmword [0x1017f9a0]
mov eax, dword [0x101e6760]
movss dword [esi + 0x28], xmm0
mov esi, dword [eax + 0x4d30]
cmp esi, 1
jne 0x100d8c9c
lea eax, [edx + 2]
jmp 0x100d8cb2
mov eax, dword [0x101e9834]
add edx, 4
dec eax
mov dword [0x101edeec], edx
cmp esi, eax
jge 0x100d8cb7
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 0x100d8cf8
cmp byte [0x101edef8], 0
jne 0x100d8cf8
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 0x100d8d38
cmp byte [0x101edef8], 0
jne 0x100d8d38
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 0x100d8d74
cmp byte [0x101edef8], 0
jne 0x100d8d87
mov eax, 2
mov byte [0x101edef8], 1
or ecx, 0xffffffff
cmp dword [0x1018b0f4], eax
cmove eax, ecx
mov dword [0x1018b0f4], eax
jmp 0x100d8d87
cmp word [ebp - 8], 0
jne 0x100d8d87
test si, si
jne 0x100d8d87
mov byte [0x101edef8], 0
push dword [0x101e986c]
push dword [0x101e9868]
call fcn.10143a80
test al, al
je 0x100d8da9
cmp dword [0x101e9868], 0
mov byte [ebp - 1], 1
jne 0x100d8dad
mov byte [ebp - 1], 0
mov dl, byte [0x101edef0]
test dl, dl
je 0x100d8dbe
mov eax, dword [0x101e9860]
jmp 0x100d8dc5
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 0x100d8ded
sub eax, 1
jne 0x100d8df5
movss xmm0, dword [0x1017f374]
jmp 0x100d8df5
movss xmm0, dword [0x1017f240]
movss dword [edi + 0xc], xmm0
call fcn.100d8a70
cmp dword [0x101e985c], 1
jne 0x100d8e30
movss dword [ebp - 8], xmm0
call fcn.100d7fb0
movss xmm1, dword [ebp - 8]
mov dl, byte [0x101edef0]
addss xmm1, xmm0
movss xmm2, dword [ebp - 0xc]
subss xmm1, dword [0x1017f2a0]
jmp 0x100d8e38
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 0x100d8e56
movss dword [0x101edee4], xmm1
mov eax, dword [0x101e6784]
mov cl, byte [0x101edef9]
cmp byte [eax], 0
jne 0x100d8e94
mov eax, dword [0x101e984c]
sub eax, 1
je 0x100d8e8b
sub eax, 1
jne 0x100d8e94
test cl, cl
je 0x100d8e80
xorps xmm2, xmmword [0x1017f9a0]
addss xmm2, xmm1
movss dword [edi + 0x10], xmm2
jmp 0x100d8e94
addss xmm1, xmm2
movss dword [edi + 0x10], xmm1
mov al, byte [ebp - 1]
cmp dl, al
je 0x100d8ea0
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