Function at 0x1004c640
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
cmp byte [0x100c22e8], 0
je 0x1004c9ea
mov eax, dword [0x100bfda8]
cmp dword [eax], 1
jne 0x1004c9ea
mov eax, dword [0x100c1e80]
cmp byte [eax], 0
je 0x1004c9ea
mov eax, dword [0x100bfda4]
test dword [eax], 0x1000
jne 0x1004c9ea
mov eax, dword [0x100bfdac]
push esi
mov esi, dword [eax + 0x60]
test esi, esi
je 0x1004c9e9
mov ecx, 0x100bfdb4
call fcn.1000eeb0
test al, al
je 0x1004c6a6
xor byte [0x100c438c], 1
mov eax, dword [0x100bfd94]
mov ecx, dword [0x100c45f0]
movss xmm0, dword [eax + 0x80]
mov eax, dword fs:[0x2c]
movss dword [ebp - 8], xmm0
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x100c439c]
cmp eax, dword [ecx + 4]
jg 0x1004c9ee
cmp byte [0x100c438c], 0
jne 0x1004c74a
cmp byte [0x100c4394], 0
jne 0x1004c9e9
mov eax, dword [0x100bfda0]
mov byte [0x100c4394], 1
and dword [eax], 0xffefffff
mov eax, dword [0x100bfda0]
mov ecx, dword [eax]
and ecx, 0xfff7ffff
mov dword [eax], ecx
and ecx, 0xfffeffff
mov eax, dword [0x100bfda0]
mov dword [eax], ecx
mov eax, dword [0x100bfd9c]
and dword [eax + 4], 0xfffffffd
mov eax, dword [0x100bfd9c]
and dword [eax + 4], 0xffffffdf
mov eax, dword [0x100bfda4]
and dword [eax], 0xfffff7ff
mov eax, 0xfffb
and word [esi + 0xa2], ax
pop esi
mov esp, ebp
pop ebp
ret
subss xmm0, dword [0x100c4398]
comiss xmm0, dword [0x10089a44]
jbe 0x1004c9e9
movss xmm0, dword [0x100bdd20]
push ebx
mov ebx, dword [0x100c4390]
push edi
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x10
movss dword [ebp - 4], xmm0
call edi
cwde
shr eax, 0xf
test al, 1
je 0x1004c793
movss xmm0, dword [0x100bdd24]
movss dword [ebp - 4], xmm0
push 0x57
call edi
cwde
shr eax, 0xf
test al, 1
je 0x1004c7e2
movss xmm0, dword [ebx + 0x364]
cvtps2pd xmm0, xmm0
call fcn.10068900
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebp - 4]
addss xmm0, dword [esi + 0x40]
movss dword [esi + 0x40], xmm0
movss xmm0, dword [ebx + 0x364]
cvtps2pd xmm0, xmm0
call fcn.10068740
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebp - 4]
addss xmm0, dword [esi + 0x48]
jmp 0x1004c83d
push 0x53
call edi
cwde
shr eax, 0xf
test al, 1
je 0x1004c842
movss xmm0, dword [ebx + 0x364]
cvtps2pd xmm0, xmm0
call fcn.10068900
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [esi + 0x40]
mulss xmm1, dword [ebp - 4]
subss xmm0, xmm1
movss dword [esi + 0x40], xmm0
movss xmm0, dword [ebx + 0x364]
cvtps2pd xmm0, xmm0
call fcn.10068740
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [esi + 0x48]
mulss xmm1, dword [ebp - 4]
subss xmm0, xmm1
movss dword [esi + 0x48], xmm0
push 0x41
call edi
cwde
shr eax, 0xf
test al, 1
je 0x1004c8af
movss xmm0, dword [ebx + 0x364]
subss xmm0, dword [0x1008e9ac]
cvtps2pd xmm0, xmm0
call fcn.10068900
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [esi + 0x40]
mulss xmm1, dword [ebp - 4]
subss xmm0, xmm1
movss dword [esi + 0x40], xmm0
movss xmm0, dword [ebx + 0x364]
subss xmm0, dword [0x1008e9ac]
cvtps2pd xmm0, xmm0
call fcn.10068740
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [esi + 0x48]
mulss xmm1, dword [ebp - 4]
subss xmm0, xmm1
jmp 0x1004c90c
push 0x44
call edi
cwde
shr eax, 0xf
test al, 1
je 0x1004c911
movss xmm0, dword [ebx + 0x364]
subss xmm0, dword [0x1008e9ac]
cvtps2pd xmm0, xmm0
call fcn.10068900
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebp - 4]
addss xmm0, dword [esi + 0x40]
movss dword [esi + 0x40], xmm0
movss xmm0, dword [ebx + 0x364]
subss xmm0, dword [0x1008e9ac]
cvtps2pd xmm0, xmm0
call fcn.10068740
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebp - 4]
addss xmm0, dword [esi + 0x48]
movss dword [esi + 0x48], xmm0
push 0x20
call edi
cwde
shr eax, 0xf
test al, 1
je 0x1004c929
movss xmm0, dword [ebp - 4]
addss xmm0, dword [esi + 0x44]
jmp 0x1004c93f
push 0x11
call edi
cwde
shr eax, 0xf
test al, 1
je 0x1004c944
movss xmm0, dword [esi + 0x44]
subss xmm0, dword [ebp - 4]
movss dword [esi + 0x44], xmm0
or word [esi + 0xa2], 4
mov eax, dword [0x100bfda0]
movss xmm0, dword [ebp - 8]
pop edi
mov byte [0x100c4394], 0
or dword [eax], 0x80000
mov eax, dword [0x100bfda0]
movss dword [0x100c4398], xmm0
pop ebx
mov ecx, dword [eax]
or ecx, 0x100000
mov dword [eax], ecx
or ecx, 0x10000
mov eax, dword [0x100bfda0]
mov dword [eax], ecx
mov eax, dword [0x100bfd9c]
or dword [eax + 4], 0x20
mov eax, dword [0x100bfd9c]
or dword [eax + 4], 2
mov eax, dword [0x100bfda4]
or dword [eax], 0x800
mov eax, dword [esi + 0x40]
mov dword [esi + 0x50], eax
mov eax, dword [esi + 0x44]
mov dword [esi + 0x54], eax
mov eax, dword [esi + 0x48]
mov dword [esi + 0x58], eax
mov eax, dword [esi + 0x4c]
mov dword [esi + 0x5c], eax
mov eax, dword [esi + 0x764]
mov dword [esi + 0x890], 0
mov dword [esi + 0x894], 0
mov dword [esi + 0x898], 0
mov dword [eax + 0x10], 2
pop esi
mov esp, ebp
pop ebp
ret
push 0x100c439c
call fcn.1004e055
movss xmm0, dword [ebp - 8]
add esp, 4
cmp dword [0x100c439c], 0xffffffff
jne 0x1004c6d8
push 0x100c439c
movss dword [0x100c4398], xmm0
call fcn.1004e00b
movss xmm0, dword [ebp - 8]
add esp, 4
jmp 0x1004c6d8