Function at 0x1400027c0
Capabilities:
Get keyboard layout
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xa0]
sub rsp, 0x1a0
mov r12, rdx
xor r13d, r13d
mov r15d, r13d
mov dword [rbp + 0xe0], r13d
xorps xmm0, xmm0
movups xmmword [rsp + 0x20], xmm0
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x38], r13
mov rsi, rcx
cmp qword [rcx + 0x18], 7
jbe 0x14000280e
mov rsi, qword [rcx]
mov rdi, qword [rcx + 0x10]
movabs rbx, 0x7ffffffffffffffe
cmp rdi, rbx
ja 0x140002deb
mov ecx, 0xa
mov qword [rsp + 0x38], 7
cmp rdi, 7
ja 0x14000284b
mov qword [rsp + 0x30], rdi
movups xmm0, xmmword [rsi]
movups xmmword [rsp + 0x20], xmm0
jmp 0x1400028f9
mov rax, rdi
or rax, 7
cmp rax, rbx
jbe 0x140002867
movabs rax, 0x7fffffffffffffff
lea rcx, [rax + rax]
jmp 0x140002894
mov rbx, rax
cmp rax, rcx
cmovb rbx, rcx
lea rcx, [rbx + 1]
movabs rax, 0x7fffffffffffffff
cmp rcx, rax
ja 0x140002de5
add rcx, rcx
cmp rcx, 0x1000
jb 0x1400028c3
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x140002de5
mov rcx, rax
call fcn.1400061ac
mov rcx, rax
test rax, rax
je 0x140002db5
add rax, 0x27
and rax, 0xffffffffffffffe0
mov qword [rax - 8], rcx
jmp 0x1400028d2
test rcx, rcx
je 0x1400028cf
call fcn.1400061ac
jmp 0x1400028d2
mov rax, r13
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x38], rbx
lea r8, [rdi*2 + 2]
mov rdx, rsi
mov rcx, rax
call sub.VCRUNTIME140.dll_memcpy
mov rdi, qword [rsp + 0x30]
lea rsi, [rsp + 0x20]
mov rdx, qword [rsp + 0x20]
cmp qword [rsp + 0x38], 7
cmova rsi, rdx
lea rax, [rsp + 0x20]
cmova rax, rdx
lea r14, [rax + rdi*2]
lea rbx, [rsp + 0x20]
cmova rbx, rdx
cmp rbx, r14
je 0x14000294b
sub rsi, rbx
nop dword [rax + rax]
movzx ecx, word [rbx]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_towupper]
mov word [rsi + rbx], ax
add rbx, 2
cmp rbx, r14
jne 0x140002930
mov rdi, qword [rsp + 0x30]
cmp rdi, 1
jne 0x1400029ac
lea rcx, [rsp + 0x20]
cmp qword [rsp + 0x38], 7
cmova rcx, qword [rsp + 0x20]
movzx ecx, word [rcx]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_iswalpha]
test eax, eax
je 0x1400029a7
lea rbx, [rsp + 0x20]
cmp qword [rsp + 0x38], 7
cmova rbx, qword [rsp + 0x20]
movzx ebx, word [rbx]
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetKeyboardLayout]
mov rdx, rax
movzx ecx, bx
call qword [sym.imp.USER32.dll_VkKeyScanExW]
movzx ecx, al
mov dword [r12], ecx
movzx ebx, dil
jmp 0x140002d7c
mov rdi, qword [rsp + 0x30]
cmp rdi, 2
jb 0x140002aee
lea rax, [rsp + 0x20]
mov rdx, qword [rsp + 0x20]
mov rcx, qword [rsp + 0x38]
cmp rcx, 7
cmova rax, rdx
cmp word [rax], 0x46
jne 0x140002aee
lea rax, [rsp + 0x20]
cmp rcx, 7
cmova rax, rdx
movzx ecx, word [rax + 2]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isdigit]
test eax, eax
je 0x140002ae9
xorps xmm0, xmm0
movups xmmword [rbp - 0x80], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x70], xmm1
mov rax, qword [rsp + 0x30]
cmp rax, 1
jb 0x140002df1
dec rax
mov r8, 0xffffffffffffffff
cmp rax, r8
cmovb r8, rax
lea rdx, [rsp + 0x20]
cmp qword [rsp + 0x38], 7
cmova rdx, qword [rsp + 0x20]
add rdx, 2
lea rcx, [rbp - 0x80]
call fcn.1400016f0
nop
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
mov rsi, rax
lea rbx, [rbp - 0x80]
cmp qword [rbp - 0x68], 7
cmova rbx, qword [rbp - 0x80]
mov dword [rax], r13d
mov r8d, 0xa
lea rdx, [rbp + 0xe0]
mov rcx, rbx
call qword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_wcstol]
mov edi, eax
cmp rbx, qword [rbp + 0xe0]
je 0x140002df7
cmp dword [rsi], 0x22
je 0x140002e04
mov rdx, qword [rbp - 0x68]
cmp rdx, 7
jbe 0x140002acf
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x80]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140002aca
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140002aca
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1400061e8
lea eax, [rdi - 1]
cmp eax, 0xb
ja 0x140002d7a
lea ecx, [rdi + 0x6f]
mov dword [r12], ecx
mov bl, 1
jmp 0x140002d7c
mov rdi, qword [rsp + 0x30]
cmp rdi, 3
jb 0x140002b88
xorps xmm0, xmm0
movups xmmword [rsp + 0x40], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
mov r8d, 2
cmp rdi, r8
cmovb r8, rdi
lea rdx, [rsp + 0x20]
cmp qword [rsp + 0x38], 7
cmova rdx, qword [rsp + 0x20]
lea rcx, [rsp + 0x40]
call fcn.1400016f0
mov r15d, 3
lea r8, [rsp + 0x40]
mov r9, qword [rsp + 0x40]
mov r10, qword [rsp + 0x58]
cmp r10, 7
cmova r8, r9
mov rdx, qword [rsp + 0x50]
cmp rdx, 2
jne 0x140002b92
lea rcx, [0x140008740]
test rdx, rdx
je 0x140002b84
sub r8, rcx
nop dword [rax + rax]
movzx eax, word [rcx]
cmp word [rcx + r8], ax
jne 0x140002b92
add rcx, 2
sub rdx, 1
jne 0x140002b70
mov bl, 1
jmp 0x140002b94
mov r10, qword [rsp + 0x58]
mov r9, qword [rsp + 0x40]
xor bl, bl
test r15b, 1
je 0x140002bdc
and r15d, 0xfffffffe
cmp r10, 7
jbe 0x140002bdc
lea rdx, [r10*2 + 2]
mov rax, r9
cmp rdx, 0x1000
jb 0x140002bd4
add rdx, 0x27
mov r9, qword [r9 - 8]
sub rax, r9
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140002bd4
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rcx, r9
call fcn.1400061e8
test bl, bl
je 0x140002d7a
lea rax, [0x140008730]
mov qword [rbp - 0x60], rax
lea rax, [0x140008738]
mov qword [rbp - 0x50], rax
lea rcx, [rbp + 0x38]
call qword [sym.imp.MSVCP140.dll_protected:_void___cdecl_std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__::constructor_void____ptr64]
nop
or r15d, 4
mov dword [rbp + 0xe0], r15d
xor r8d, r8d
lea rdx, [rbp - 0x48]
lea rcx, [rbp - 0x60]
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__::constructor_class_std::basic_streambuf_wchar_t__struct_std::char_traits_wchar_t______ptr64____ptr64]
nop
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea rbx, vtable.std::basic_stringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov qword [rbp + rcx - 0x60], rbx
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x98]
mov dword [rbp + rcx - 0x64], edx
lea rcx, [rbp - 0x48]
call qword [sym.imp.MSVCP140.dll_protected:_void___cdecl_std::basic_streambuf_wchar_t__struct_std::char_traits_wchar_t__::constructor_void____ptr64]
lea rax, vtable.std::basic_stringbuf_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov qword [rbp - 0x48], rax
mov qword [rbp + 0x20], r13
mov dword [rbp + 0x28], r13d
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x70], xmm1
mov rax, qword [rsp + 0x30]
cmp rax, 2
jb 0x140002ddf
add rax, 0xfffffffffffffffe
mov r8, 0xffffffffffffffff
cmp rax, r8
cmovb r8, rax
lea rdx, [rsp + 0x20]
cmp qword [rsp + 0x38], 7
cmova rdx, qword [rsp + 0x20]
add rdx, 4
lea rcx, [rsp + 0x60]
call fcn.1400016f0
nop
lea rdx, [0x140003380]
lea rcx, [rbp - 0x50]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t______ptr64___cdecl_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
lea rdx, [rsp + 0x60]
cmp qword [rsp + 0x78], 7
cmova rdx, qword [rsp + 0x60]
mov r8, qword [rsp + 0x70]
mov rcx, rax
call fcn.140001980
nop
mov rdx, qword [rsp + 0x78]
cmp rdx, 7
jbe 0x140002d2c
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x60]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140002d27
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140002d27
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1400061e8
mov rdx, r12
lea rcx, [rbp - 0x60]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_istream_wchar_t__struct_std::char_traits_wchar_t______ptr64___cdecl_std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__::operator___unsigned_int____ptr64____ptr64]
nop
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
mov qword [rbp + rcx - 0x60], rbx
mov rax, qword [rbp - 0x60]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x98]
mov dword [rbp + rcx - 0x64], edx
lea rcx, [rbp - 0x48]
call fcn.1400020f0
lea rcx, [rbp - 0x40]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__::destructor_void____ptr64]
lea rcx, [rbp + 0x38]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__::destructor_void____ptr64]
mov bl, 1
jmp 0x140002d7c
xor bl, bl
mov rcx, qword [rsp + 0x38]
cmp rcx, 7
jbe 0x140002dc1
lea rdx, [rcx*2 + 2]
mov rcx, qword [rsp + 0x20]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140002dbc
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140002dbc
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1400061e8
movzx eax, bl
mov rbx, qword [rsp + 0x1e8]
add rsp, 0x1a0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.1400032d0
nop
call fcn.1400031e0
int3
call fcn.140003290
nop
call fcn.1400032d0
nop
lea rcx, str.invalid_stoi_argument
call sub.MSVCP140.dll_void___cdecl_std::_Xinvalid_argument_char_const____ptr64_
int3
lea rcx, str.stoi_argument_out_of_range
call sub.MSVCP140.dll_void___cdecl_std::_Xout_of_range_char_const____ptr64_
int3