Function at 0x40f57e
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
sub esp, 0x64
push fcn.0040f57e
xor esi, esi
mov ecx, 0x22
push esi
dec ecx
jne 0x40f593
push 0
push 0x14
push 2
push 0x1080010
push 0
lea ebx, [ebp - 0xfc]
call fcn.004232a2
mov word [0x42aa60], 0
mov word [0x42aaa0], 0
cmp dword [0x42aa6c], 0x28
jne 0x40f5d3
mov word [0x42aaa0], 1
cmp dword [0x42aa6c], 0x26
jne 0x40f5e5
mov word [0x42aaa0], 2
cmp dword [0x42aa6c], 0x27
jne 0x40f5f7
mov word [0x42aaa0], 3
push 0x25
call dword [sym.imp.USER32.DLL_GetKeyState]
call fcn.004271a4
cwde
mov si, ax
xor eax, eax
movsx ecx, si
cmp ecx, eax
jge 0x40f642
xor eax, eax
mov ecx, 8
add ecx, dword [ebp - 0xfc]
movsx ecx, word [ecx]
cmp ecx, eax
jne 0x40f642
mov eax, 8
add eax, dword [ebp - 0xfc]
mov word [eax], 1
mov word [0x42aaa0], 4
xor eax, eax
movsx ecx, si
cmp ecx, eax
jle 0x40f67f
mov eax, 1
mov ecx, 8
add ecx, dword [ebp - 0xfc]
movsx ecx, word [ecx]
cmp ecx, eax
jne 0x40f67f
mov eax, 8
add eax, dword [ebp - 0xfc]
mov word [eax], 0
mov word [0x42aaa0], 4
cmp dword [0x42aa6c], 0x21
jne 0x40f691
mov word [0x42aaa0], 5
cmp dword [0x42aa6c], 0x22
jne 0x40f6a3
mov word [0x42aaa0], 6
cmp dword [0x42aa6c], 0x23
jne 0x40f6b5
mov word [0x42aaa0], 7
push 0x24
call dword [sym.imp.USER32.DLL_GetKeyState]
call fcn.004271a4
cwde
mov si, ax
xor eax, eax
movsx ecx, si
cmp ecx, eax
jge 0x40f700
xor eax, eax
mov ecx, 0x10
add ecx, dword [ebp - 0xfc]
movsx ecx, word [ecx]
cmp ecx, eax
jne 0x40f700
mov eax, 0x10
add eax, dword [ebp - 0xfc]
mov word [eax], 1
mov word [0x42aaa0], 8
xor eax, eax
movsx ecx, si
cmp ecx, eax
jle 0x40f73d
mov eax, 1
mov ecx, 0x10
add ecx, dword [ebp - 0xfc]
movsx ecx, word [ecx]
cmp ecx, eax
jne 0x40f73d
mov eax, 0x10
add eax, dword [ebp - 0xfc]
mov word [eax], 0
mov word [0x42aaa0], 8
cmp dword [0x42aa6c], 0x2d
jne 0x40f760
fld qword [0x42aa84]
ficomp word [0x42aa9c]
fnstsw ax
sahf
je 0x40f760
mov word [0x42aaa0], 9
cmp dword [0x42aa6c], 0x2e
jne 0x40f772
mov word [0x42aaa0], 0xa
cmp dword [0x42aa6c], 0x90
jne 0x40f787
mov word [0x42aaa0], 0xd
push 0x12
call dword [sym.imp.USER32.DLL_GetKeyState]
call fcn.004271a4
cwde
mov si, ax
xor eax, eax
movsx ecx, si
cmp ecx, eax
jge 0x40f7d2
xor eax, eax
mov ecx, 0x16
add ecx, dword [ebp - 0xfc]
movsx ecx, word [ecx]
cmp ecx, eax
jne 0x40f7d2
mov eax, 0x16
add eax, dword [ebp - 0xfc]
mov word [eax], 1
mov word [0x42aaa0], 0xb
xor eax, eax
movsx ecx, si
cmp ecx, eax
jle 0x40f80f
mov eax, 1
mov ecx, 0x16
add ecx, dword [ebp - 0xfc]
movsx ecx, word [ecx]
cmp ecx, eax
jne 0x40f80f
mov eax, 0x16
add eax, dword [ebp - 0xfc]
mov word [eax], 0
mov word [0x42aaa0], 0xb
mov edx, dword [0x42aa80]
call fcn.00427847
mov eax, 1
mov edx, 0x42ec48
call fcn.0042785b
call fcn.0042421f
cmp eax, 0
jne 0x40f861
cmp dword [0x42aa6c], 0x20
jne 0x40f861
mov edx, dword [0x42aa80]
call fcn.00427847
mov edx, 0x42effc
call fcn.0042785b
call fcn.00427102
je 0x40f861
mov word [0x42aa60], 1
cmp dword [0x42aa6c], 0x78
jne 0x40f873
mov word [0x42aaa0], 0xf
cmp dword [0x42aa6c], 0x72
jne 0x40f885
mov word [0x42aaa0], 0x11
cmp dword [0x42aa6c], 0x70
jne 0x40f897
mov word [0x42aaa0], 0x12
push 0x70
call dword [sym.imp.USER32.DLL_GetKeyState]
call fcn.004271a4
cwde
mov si, ax
xor eax, eax
movsx ecx, si
cmp ecx, eax
jle 0x40f8ca
mov eax, 1
movsx ecx, word [0x42ae00]
cmp ecx, eax
jne 0x40f8ca
mov word [0x42ae00], 0
xor eax, eax
movsx ecx, si
cmp ecx, eax
jg 0x40f8e9
xor eax, eax
movsx ecx, word [0x42ae00]
cmp ecx, eax
jne 0x40f8e9
mov word [0x42ae00], 1
cmp dword [0x42aa6c], 9
jne 0x40f904
mov word [0x42adf8], 0
mov word [0x42ae04], 0
cmp dword [0x42aa6c], 0x73
jne 0x40f916
mov word [0x42aaa0], 0x15
cmp dword [0x42aa6c], 0x74
jne 0x40f928
mov word [0x42aaa0], 0x16
cmp dword [0x42aa6c], 0x7e
jne 0x40f93a
mov word [0x42aa60], 1
cmp dword [0x42aa6c], 0x1b
jne 0x40f980
xor eax, eax
movsx ecx, word [0x42ae04]
cmp ecx, eax
jne 0x40f95e
mov dword [0x42aa6c], 0x7e
mov eax, 1
movsx ecx, word [0x42ae04]
cmp ecx, eax
jne 0x40f977
mov word [0x42ae04], 0
mov word [0x42aaa0], 0xc
mov eax, 1
movsx ecx, word [0x42aaa0]
cmp ecx, eax
mov eax, 0xffffffff
je 0x40f996
inc eax
mov ecx, 2
mov dword [ebp - 0x2c], eax
movsx eax, word [0x42aaa0]
cmp eax, ecx
mov eax, 0xffffffff
je 0x40f9af
inc eax
or eax, dword [ebp - 0x2c]
mov ecx, 6
mov dword [ebp - 0x2c], eax
movsx eax, word [0x42aaa0]
cmp eax, ecx
mov eax, 0xffffffff
je 0x40f9cb
inc eax
or eax, dword [ebp - 0x2c]
mov ecx, 5
mov dword [ebp - 0x2c], eax
movsx eax, word [0x42aaa0]
cmp eax, ecx
mov eax, 0xffffffff
je 0x40f9e7
inc eax
or eax, dword [ebp - 0x2c]
test eax, eax
je 0x40fa05
xor eax, eax
movsx ecx, word [0x42aec0]
cmp ecx, eax
jne 0x40fa05
mov dword [0x42aa6c], 0x1b
mov eax, 0xe
movsx ecx, word [0x42aaa0]
cmp ecx, eax
mov eax, 0xffffffff
je 0x40fa1b
inc eax
mov ecx, 0x10
mov dword [ebp - 0x2c], eax
movsx eax, word [0x42aaa0]
cmp eax, ecx
mov eax, 0xffffffff
je 0x40fa34
inc eax
or eax, dword [ebp - 0x2c]
test eax, eax
je 0x40fa5b
xor eax, eax
movsx ecx, word [0x42aec0]
cmp ecx, eax
jne 0x40fa5b
cmp dword [0x42aa6c], 0x79
je 0x40fa5b
mov dword [0x42aa6c], 0x1b
mov eax, 0xb
movsx ecx, word [0x42aaa0]
cmp ecx, eax
jne 0x40fac0
mov edx, dword [0x42aa98]
call fcn.00427847
mov eax, 1
mov ebx, 0x4290bc
call fcn.004276e1
call fcn.0042421f
cmp eax, 0
jne 0x40fac0
mov edx, dword [0x42b9d8]
call fcn.00427847
mov eax, 1
mov ebx, 0x4290bc
call fcn.004276e1
call fcn.0042421f
cmp eax, 0
jne 0x40fac0
mov word [0x42aaa0], 0
xor eax, eax
movsx ecx, word [0x42aaa0]
cmp ecx, eax
jne 0x40fc00
xor eax, eax
movsx ecx, word [0x42aec0]
cmp ecx, eax
jne 0x40fc00
cmp dword [0x42aa6c], 0x79
je 0x40fc00
mov edx, dword [0x42aa80]
call fcn.00427847
mov eax, 1
mov ebx, 0x4290bc
call fcn.004276e1
call fcn.0042421f
cmp eax, 0
jne 0x40fb80
mov eax, 1
mov ebx, 0x4290bc
call fcn.004276e1
mov dword [ebp - 0x2c], eax
call fcn.0042782f
cmp eax, dword [ebp - 0x2c]
jne 0x40fb80
mov edx, dword [0x42aa8c]
call fcn.00427847
mov eax, 1
mov ebx, 0x4290bc
call fcn.004276e1
call fcn.0042421f
cmp eax, 0
jne 0x40fb80
mov edx, dword [0x42aa80]
call fcn.00427847
mov edx, 0x42effc
call fcn.0042785b
call fcn.00427102
je 0x40fb80
mov word [0x42aa60], 1
xor eax, eax
movsx ecx, word [0x42aa60]
cmp ecx, eax
jne 0x40fc00
fld qword [0x42aa84]
ficomp word [0x42aa9c]
fnstsw ax
sahf
jne 0x40fc00
mov eax, 1
mov ebx, 0x4290bc
call fcn.004276e1
mov dword [ebp - 0x2c], eax
call fcn.0042782f
cmp eax, dword [ebp - 0x2c]
jne 0x40fc00
mov edx, dword [0x42aa8c]
call fcn.00427847
mov eax, 1
mov ebx, 0x4290bc
call fcn.004276e1
call fcn.0042421f
cmp eax, 0
jne 0x40fc00
xor eax, eax
movsx ecx, word [0x42aaa0]
cmp ecx, eax
jne 0x40fc00
mov word [0x42aa60], 1
cmp dword [0x42aa6c], 2
jne 0x40fc2b
fldz
mov edx, dword [0x42ae7c]
call fcn.00427847
call fcn.0042615a
fcompp
fnstsw ax
sahf
jne 0x40fc2b
mov word [0x42aa60], 1
call fcn.00427777
lea esp, [ebp - 0xc]
pop edi
pop esi
pop ebx
pop ebp
ret