Function at 0x100684e0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push ecx
push ebx
push esi
push edi
mov edi, ecx
call fcn.100671b0
call fcn.10067920
mov eax, dword [edi + 4]
mov ecx, dword [eax]
mov eax, dword [ecx + 4]
sub eax, 1
je 0x100685f8
sub eax, 1
je 0x10068591
sub eax, 1
jne 0x1006860f
mov eax, dword fs:[0x2c]
mov ecx, dword [0x101e14f0]
mov esi, dword [0x101e0948]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x101e29dc]
cmp eax, dword [ecx + 4]
jle 0x10068568
push 0x101e29dc
call fcn.100b5535
add esp, 4
cmp dword [0x101e29dc], 0xffffffff
jne 0x10068568
mov eax, dword [0x101e292c]
push 0x101e29dc
mov dword [0x101e29d8], eax
call fcn.100b54eb
add esp, 4
mov eax, dword [edi + 4]
mov ecx, dword [0x101e07bc]
mov eax, dword [eax]
movd xmm0, dword [eax + 0x18]
mov eax, dword [0x101e29d8]
cvtdq2ps xmm0, xmm0
addss xmm0, dword [eax + esi]
addss xmm0, dword [ecx + 0x10]
movss dword [ecx + 0x10], xmm0
jmp 0x1006860f
cmp byte [ecx + 0x20], 0
je 0x100685a0
mov eax, dword [edi]
movss xmm0, dword [eax + 0x1c]
jmp 0x100685a8
movd xmm0, dword [ecx + 0x1c]
cvtdq2ps xmm0, xmm0
movss dword [esp + 0xc], xmm0
call fcn.1011b211
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [esp + 0xc]
mulss xmm0, dword [0x1016d464]
call fcn.10132d1c
mov eax, dword [edi + 4]
mov ecx, dword [0x101e07bc]
mov eax, dword [eax]
movd xmm1, dword [eax + 0x14]
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm0
addss xmm1, dword [0x1016d73c]
addss xmm1, dword [ecx + 0x10]
movss dword [ecx + 0x10], xmm1
jmp 0x1006860f
mov eax, dword [0x101e07bc]
movss xmm0, dword [eax + 0x10]
addss xmm0, dword [0x1016d73c]
movss dword [eax + 0x10], xmm0
mov eax, dword [edi + 4]
mov ecx, dword [eax]
mov eax, dword [ecx + 0xc]
sub eax, 1
je 0x1006864f
sub eax, 1
je 0x10068640
sub eax, 1
jne 0x10068672
mov eax, dword [ecx + 0x10]
movd xmm1, eax
neg eax
cvtdq2ps xmm1, xmm1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
call fcn.10059de0
jmp 0x10068663
mov eax, dword [edi]
cmp byte [eax + 2], 0
je 0x10068672
movd xmm0, dword [ecx + 0x10]
jmp 0x10068660
mov eax, dword [edi]
mov ecx, dword [ecx + 0x10]
cmp byte [eax + 2], 0
jne 0x1006865c
neg ecx
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mov eax, dword [0x101e07bc]
addss xmm0, dword [eax + 0x10]
movss dword [eax + 0x10], xmm0
mov eax, dword [0x101dff54]
mov esi, dword [edi]
inc eax
mov ebx, dword [sym.imp.USER32.dll_GetAsyncKeyState]
cmp eax, 3
ja case.default.0x10068685
jmp dword [eax*4 + 0x10068838]
push dword [0x101dff50]
call ebx
jmp 0x100686a2
push dword [0x101dff50]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
je case.default.0x10068685
mov word [esi + 4], 1
mov byte [esi + 6], 0
mov eax, dword [0x101dff74]
inc eax
cmp eax, 3
ja case.default.0x100686c1
jmp dword [eax*4 + 0x10068848]
push dword [0x101dff70]
call ebx
jmp 0x100686de
push dword [0x101dff70]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
je case.default.0x100686c1
mov word [esi + 4], 0x100
mov byte [esi + 6], 0
mov eax, dword [0x101dff94]
inc eax
cmp eax, 3
ja case.default.0x100686fd
jmp dword [eax*4 + 0x10068858]
push dword [0x101dff90]
call ebx
jmp 0x1006871a
push dword [0x101dff90]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
je case.default.0x100686fd
mov word [esi + 4], 0
mov byte [esi + 6], 1
cmp byte [esi + 4], 0
movss xmm1, dword [0x1016d6f4]
je 0x1006874f
mov eax, dword [0x101e07bc]
movss xmm0, dword [eax + 0x10]
subss xmm0, xmm1
movss dword [eax + 0x10], xmm0
cmp byte [esi + 5], 0
je 0x10068768
mov eax, dword [0x101e07bc]
movss xmm0, dword [eax + 0x10]
addss xmm0, xmm1
movss dword [eax + 0x10], xmm0
mov eax, dword [0x101dff54]
inc eax
cmp eax, 3
ja case.default.0x10068773
jmp dword [eax*4 + 0x10068868]
push dword [0x101dff50]
call ebx
jmp 0x10068790
push dword [0x101dff50]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
jne case.0x100687db.0
mov eax, dword [0x101dff74]
inc eax
cmp eax, 3
ja case.default.0x100687a9
jmp dword [eax*4 + 0x10068878]
push dword [0x101dff70]
call ebx
jmp 0x100687c6
push dword [0x101dff70]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
jne case.0x100687db.0
mov eax, dword [0x101dff94]
inc eax
cmp eax, 3
ja case.default.0x100687db
jmp dword [eax*4 + 0x10068888]
push dword [0x101dff90]
call ebx
jmp 0x100687f8
push dword [0x101dff90]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
test al, al
jne case.0x100687db.0
mov eax, dword [edi + 4]
mov ecx, dword [0x101e07bc]
mov eax, dword [eax]
movd xmm0, dword [eax + 0x24]
cvtdq2ps xmm0, xmm0
addss xmm0, dword [ecx + 0x10]
movss dword [ecx + 0x10], xmm0
mov eax, dword [0x101e07bc]
pop edi
pop esi
pop ebx
movss xmm0, dword [eax + 0x10]
movss dword [0x101e0818], xmm0
mov esp, ebp
pop ebp
ret