Function at 0x10040e70
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
mov eax, dword [0x10187080]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x1018b0fb], 0
je 0x100412fd
push esi
lea eax, [ebp - 0x50]
mov byte [ebp - 0x29], 0
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x44], 0
push eax
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x40], 0
xorps xmm3, xmm3
lea edx, [ebp - 0x48]
push eax
movss dword [ebp - 0x38], xmm3
call fcn.10042530
mov dword [ebp - 0x34], 0
call fcn.10027530
mov ecx, eax
call fcn.10041420
lea edx, [ebp - 0x34]
mov ecx, eax
call fcn.100414c0
push dword [ebp - 0x34]
lea ecx, [ebp - 0x40]
call fcn.10029d10
lea ecx, [ebp - 0x44]
call fcn.1002b1c0
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x44]
lea edx, [ebp - 0x24]
lea ecx, [ebp - 0x28]
call fcn.1003cfd0
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x44]
lea edx, [ebp - 0x18]
lea ecx, [ebp - 0x1c]
call fcn.1003cf20
movss xmm1, dword [0x1018b0e8]
lea ecx, [ebp - 0x3c]
movss xmm0, dword [0x1018b0f4]
add esp, 0x20
subss xmm1, dword [ebp - 0x18]
subss xmm0, dword [ebp - 0x1c]
call fcn.1003d6c0
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x57
call esi
movss xmm0, dword [0x1017e468]
movss dword [ebp - 0x30], xmm0
test ax, ax
jns 0x10040f5a
mov byte [0x1018af17], 0
jmp 0x10040f7a
cmp dword [ebp - 0x48], 0
xorps xmm0, xmm0
mov byte [0x1018af17], 1
movss dword [ebp - 0x34], xmm0
jne 0x10040fa6
cmp dword [ebp - 0x4c], 0xffffff81
movss dword [ebp - 0x34], xmm0
jne 0x10040fa6
push 0xa0
mov byte [ebp - 0x29], 1
call esi
test ax, ax
jns 0x10040fb8
mov byte [0x1018afa9], 0
movss xmm0, dword [0x1017e4a8]
addss xmm0, dword [0x1017e290]
movss dword [ebp - 0x34], xmm0
push 0x53
call esi
test ax, ax
jns 0x10040fd7
mov byte [0x1018af0f], 0
jmp 0x10040fea
mov edx, 7
mov byte [0x1018afa9], 1
call fcn.10032960
test al, al
jne 0x10040f91
movss xmm0, dword [0x1017e468]
jmp 0x10040f99
cmp dword [ebp - 0x48], 0
mov byte [0x1018af0f], 1
jne 0x10041017
cmp dword [ebp - 0x4c], 0x7f
jne 0x10041017
push 0xa0
mov byte [ebp - 0x29], 1
call esi
test ax, ax
jns 0x10041029
mov byte [0x1018afa9], 0
movss xmm1, dword [0x1017e4a8]
movss xmm0, dword [ebp - 0x34]
subss xmm0, xmm1
movss dword [ebp - 0x34], xmm0
push 0x20
call esi
test ax, ax
jns 0x10041048
mov byte [0x1018aea9], 0
jmp 0x1004105d
mov edx, 7
mov byte [0x1018afa9], 1
call fcn.10032960
test al, al
jne 0x10041001
movss xmm1, dword [0x1017e468]
jmp 0x10041009
mov edx, 6
mov byte [0x1018aea9], 1
call fcn.10032960
test al, al
je 0x10041089
push 0xa0
mov byte [ebp - 0x29], 1
call esi
test ax, ax
jns 0x1004109e
mov byte [0x1018afa9], 0
movss xmm0, dword [0x1017e4a8]
addss xmm0, dword [0x1017e290]
movss dword [ebp - 0x38], xmm0
push 0xa2
call esi
test ax, ax
jns 0x100410bd
mov byte [0x1018afad], 0
jmp 0x100410d2
mov edx, 7
mov byte [0x1018afa9], 1
call fcn.10032960
test al, al
jne 0x10041074
movss xmm0, dword [0x1017e468]
jmp 0x1004107c
mov edx, 4
mov byte [0x1018afad], 1
call fcn.10032960
test al, al
je 0x1004111c
push 0xa0
mov byte [ebp - 0x29], 1
call esi
test ax, ax
jns 0x100410eb
mov byte [0x1018afa9], 0
jmp 0x10041100
mov edx, 7
mov byte [0x1018afa9], 1
call fcn.10032960
test al, al
je 0x1004110d
movss xmm0, dword [0x1017e4a8]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [ebp - 0x38]
subss xmm0, dword [ebp - 0x30]
movss dword [ebp - 0x38], xmm0
movss xmm0, dword [ebp - 0x3c]
subss xmm0, dword [0x1017e498]
mov eax, dword [ebp - 0x40]
pop esi
movss dword [ebp - 0x3c], xmm0
test eax, eax
jne 0x10041276
mov dword [ebp - 0x30], eax
call fcn.10027530
mov ecx, eax
call fcn.10041420
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.100414c0
push dword [ebp - 0x30]
xor cl, cl
call fcn.1002cd40
mov dword [ebp - 0x30], 0
call fcn.10027530
mov ecx, eax
call fcn.10041420
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.100414c0
push dword [ebp - 0x30]
mov cl, 1
call fcn.10027e90
mov dword [ebp - 0x30], 0
call fcn.10027530
mov ecx, eax
call fcn.10041420
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.100414c0
push dword [ebp - 0x30]
call fcn.10027d40
add esp, 0xc
cmp byte [ebp - 0x29], 0
je 0x1004123b
movss xmm0, dword [ebp - 0x38]
subss xmm0, dword [0x1017e464]
mov dword [ebp - 0x30], 0
movss dword [ebp - 0x38], xmm0
call fcn.10027530
mov ecx, eax
call fcn.10041420
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.100414c0
movss xmm3, dword [ebp - 0x38]
lea eax, [ebp - 8]
movss xmm2, dword [ebp - 0x34]
lea edx, [ebp - 0xc]
push eax
push dword [ebp - 0x30]
lea ecx, [ebp - 0x10]
xorps xmm1, xmm1
call fcn.10028810
mov dword [ebp - 0x30], 0
call fcn.10027530
mov ecx, eax
call fcn.10041420
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.100414c0
push dword [ebp - 0x30]
movss xmm3, dword [ebp - 8]
movss xmm2, dword [ebp - 0xc]
movss xmm1, dword [ebp - 0x10]
call fcn.10028ea0
add esp, 0xc
mov dword [ebp - 0x30], 0
call fcn.10027530
mov ecx, eax
call fcn.10041420
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.100414c0
push dword [ebp - 0x30]
movss xmm1, dword [ebp - 0x3c]
call fcn.10029000
add esp, 4
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004ecf8
mov esp, ebp
pop ebp
ret
push eax
xor cl, cl
call fcn.1002ce90
add esp, 4
cmp byte [ebp - 0x29], 0
je 0x100412c8
movss xmm3, dword [ebp - 0x38]
lea eax, [ebp - 8]
subss xmm3, dword [0x1017e3f8]
movss xmm2, dword [ebp - 0x34]
lea edx, [ebp - 0xc]
push eax
push dword [ebp - 0x40]
lea ecx, [ebp - 0x10]
xorps xmm1, xmm1
call fcn.1002a1d0
push dword [ebp - 0x40]
movss xmm3, dword [ebp - 8]
movss xmm2, dword [ebp - 0xc]
movss xmm1, dword [ebp - 0x10]
call fcn.100420b0
add esp, 0xc
movss xmm1, dword [ebp - 0x3c]
movss xmm0, dword [0x1017e504]
comiss xmm1, xmm0
jbe 0x100412f2
subss xmm1, xmm0
andps xmm1, xmmword [0x1017e720]
addss xmm1, dword [0x1017e290]
movss dword [ebp - 0x3c], xmm1
push dword [ebp - 0x40]
call fcn.10042160
add esp, 4
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004ecf8
mov esp, ebp
pop ebp
ret