Function at 0x4017c0
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
push 0xffffffffffffffff
push 0x404c60
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0xd0
mov eax, dword [0x407008]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push ecx
lea ecx, [ebp - 0x20]
call fcn.00401a00
call fcn.00401a50
lea ecx, [ebp - 0x20]
mov dword [ebp - 4], 0
call fcn.00401c60
mov esi, eax
call fcn.00401c50
mov edi, eax
cmp esi, edi
je 0x40187b
nop dword [eax + eax]
push esi
lea ecx, [ebp - 0x38]
call fcn.00401cf0
mov byte [ebp - 4], 1
mov edx, str.Found_Device:
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t___std::wcout]
push 0x402e90
call fcn.00402b80
push ecx
lea edx, [ebp - 0x38]
mov ecx, eax
call fcn.00402e70
add esp, 4
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t______thiscall_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__::operator___class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t_______cdecl___class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t_____]
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0
call fcn.00401cc0
add esi, 0x18
cmp esi, edi
jne 0x401830
push ecx
lea ecx, [ebp - 0xd8]
call fcn.00401a20
sub esp, 0x18
mov edx, esp
push ecx
lea ecx, [ebp - 0x20]
call fcn.00401c40
push eax
mov ecx, edx
call fcn.00401cf0
push 0x200
push 8
push 1
push 0xac44
lea ecx, [ebp - 0xd8]
call fcn.00401b70
push ecx
lea ecx, [ebp - 0xd8]
mov byte [ebp - 4], 2
call fcn.00401a40
or edi, 0xffffffff
nop dword [eax]
mov byte [ebp - 0xd9], 0
xor esi, esi
nop dword [eax]
movzx eax, byte [esi + str.AWSDRFTGHUJIKOL]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x40198d
cmp edi, esi
je 0x401983
mov ecx, esi
call fcn.00402ec0
movaps xmm1, xmm0
mov ecx, 0x407448
mulsd xmm1, qword [0x405348]
call fcn.00401c30
lea ecx, [ebp - 0xd8]
call fcn.00401b20
movaps xmm1, xmm0
call fcn.00401730
mov ecx, 0x407448
call fcn.00401c20
sub esp, 8
lea ecx, [ebp - 0xd8]
movsd qword [esp], xmm0
call fcn.00401b20
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t___std::wcout]
sub esp, 8
mov edx, str._rNote_On_:
movsd qword [esp], xmm0
call fcn.00402b80
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t______thiscall_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__::operator___double_]
mov edx, 0x4052b0
mov ecx, eax
call fcn.00402b80
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t______thiscall_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__::operator___double_]
mov edi, esi
mov al, 1
mov byte [ebp - 0xd9], al
jmp 0x401993
mov al, byte [ebp - 0xd9]
inc esi
cmp esi, 0xf
jl 0x4018e0
test al, al
jne 0x4018d0
cmp edi, 0xffffffff
je 0x4018d0
lea ecx, [ebp - 0xd8]
call fcn.00401b20
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t___std::wcout]
sub esp, 8
mov edx, str._rNote_Off:
movsd qword [esp], xmm0
call fcn.00402b80
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t______thiscall_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__::operator___double_]
mov edx, 0x4052c0
mov ecx, eax
call fcn.00402b80
lea ecx, [ebp - 0xd8]
call fcn.00401b20
movaps xmm1, xmm0
call fcn.00401750
jmp 0x4018c6