Function at 0x401580
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x64
mov eax, dword [0x405004]
xor eax, esp
mov dword [esp + 0x60], eax
push ebx
mov eax, 0xf4240
mov byte [esp + 0xb], 0
push esi
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov bl, 1
mov dword [esp + 0x14], eax
mov dword [esp + 0x4c], eax
xor eax, eax
push edi
mov edi, dword [sym.imp.USER32.dll_mouse_event]
mov byte [esp + 0x1c], bl
mov dword [esp + 0x20], 1
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0x3e8
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0xf4240
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0x3b9aca00
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 1
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], 0x1dcd6500
mov dword [esp + 0x4c], 0
mov dword [esp + 0x58], 0xf4240
mov dword [esp + 0x5c], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x54], eax
push 0xa2
call esi
test ax, ax
je 0x401679
push 0xbe
call esi
test ax, ax
je 0x401679
push 0x64
cmp bl, 1
jne 0x40165d
xor bl, bl
push 0x1f4
jmp 0x401664
mov bl, 1
push 0xfa
mov byte [esp + 0x24], bl
call dword [sym.imp.KERNEL32.dll_Beep]
push 0xc8
call dword [sym.imp.KERNEL32.dll_Sleep]
test bl, bl
jne 0x401710
cmp byte [esp + 0x13], bl
je 0x4016aa
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
call fcn.00402a20
divsd xmm0, qword [0x403200]
push 0
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm0
call fcn.004014b0
push 0xa4
call esi
test ax, ax
je 0x4016e3
push 0
push 0
push 0
push 0
push 2
call edi
push 0
push 0
push 0
push 0
push 4
call edi
lea ecx, [esp + 0x58]
call section..text
push 0xa4
call esi
test ax, ax
jne 0x4016b6
push 0xa2
call esi
push 0xbe
call esi
push 0xa4
call esi
push 0xbc
call esi
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
mov byte [esp + 0x13], bl
jmp 0x401635
push 0xa2
call esi
test ax, ax
je 0x40180c
push 0xbc
call esi
test ax, ax
je 0x40180c
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
mov edx, str.Please_input_delay_between_clicks_in_miliseconds:_n
call fcn.004011b0
mov edx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
xorps xmm0, xmm0
movsd qword [esp + 0x60], xmm0
push 0
push 0
mov eax, dword [edx]
mov ecx, dword [eax + 4]
add ecx, edx
call dword [sym.imp.MSVCP140.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::clear_int__bool_]
mov ecx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
lea eax, [esp + 0x60]
push eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______thiscall_std::basic_istream_char__struct_std::char_traits_char__::operator___double__]
mov edx, dword [sym.imp.MSVCP140.dll_class_std::basic_istream_char__struct_std::char_traits_char___std::cin]
push 0
push 0
mov eax, dword [edx]
mov ecx, dword [eax + 4]
add ecx, edx
call dword [sym.imp.MSVCP140.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::clear_int__bool_]
movsd xmm0, qword [esp + 0x60]
mulsd xmm0, qword [0x403200]
call fcn.0040290b
mov ecx, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
test ecx, ecx
jg 0x4017bf
jl 0x4017b0
cmp eax, 1
ja 0x4017bf
mov eax, 1
xor ecx, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x54], ecx
mov edx, ecx
mov dword [esp + 0x5c], ecx
mov ecx, eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], eax
call fcn.00402a20
divsd xmm0, qword [0x403200]
push dword [esp + 0x1c]
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm0
call fcn.004014b0
push 0xa2
call esi
push 0xbe
call esi
push 0xa4
call esi
push 0xbc
call esi
cmp byte [esp + 0x13], bl
je 0x401837
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
call fcn.00402a20
divsd xmm0, qword [0x403200]
push dword [esp + 0x1c]
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm0
call fcn.004014b0
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
mov byte [esp + 0x13], bl
jmp 0x401635