Function at 0x14000243b
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
push rsi
push rbx
sub rsp, 0x170
lea rbp, [rsp + 0x80]
mov dword [rbp + 0x110], ecx
mov qword [rbp + 0x118], rdx
mov qword [rbp + 0x120], r8
movzx eax, byte [0x140133100]
test al, al
sete al
test al, al
je 0x1400024ef
lea rax, [0x140133100]
mov rcx, rax
call sym.__cxa_guard_acquire
test eax, eax
setne al
test al, al
je 0x1400024ef
mov esi, 0
lea rax, [rbp + 0xc7]
mov qword [rbp + 0xd0], rax
nop
nop
lea rax, [rbp + 0xc7]
mov r8, rax
lea rax, str.stop_that
mov rdx, rax
lea rax, [0x1401330e0]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string_std.allocator_char____char_const__std::allocator_char__const_
lea rax, [sym.__tcf_0]
mov rcx, rax
call dbg.atexit
lea rax, [0x140133100]
mov rcx, rax
call sym.__cxa_guard_release
lea rax, [rbp + 0xc7]
mov rcx, rax
call method.std::__new_allocator_char_.__new_allocator__
nop
movzx eax, byte [0x140133118]
test al, al
sete al
test al, al
je 0x140002532
lea rax, [0x140133118]
mov rcx, rax
call sym.__cxa_guard_acquire
test eax, eax
setne al
test al, al
je 0x140002532
call method.std::chrono::_V2::steady_clock.now__
mov qword [0x140133110], rax
lea rax, [0x140133118]
mov rcx, rax
call sym.__cxa_guard_release
cmp dword [rbp + 0x110], 0
jne 0x1400027fc
cmp qword [rbp + 0x118], 0x100
je 0x14000255d
cmp qword [rbp + 0x118], 0x104
jne 0x1400027fc
mov rax, qword [rbp + 0x120]
mov qword [rbp + 0xe8], rax
mov rax, qword [rbp + 0xe8]
mov eax, dword [rax]
mov dword [rbp + 0xe4], eax
mov ecx, 0x11
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
shr ax, 0xf
mov byte [rbp + 0xe3], al
mov ecx, 0x12
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
shr ax, 0xf
mov byte [rbp + 0xe2], al
mov ecx, 0x10
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
shr ax, 0xf
mov byte [rbp + 0xe1], al
mov ecx, 0x5b
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
test ax, ax
js 0x1400025e8
mov ecx, 0x5c
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
test ax, ax
jns 0x1400025ef
mov eax, 1
jmp 0x1400025f4
mov eax, 0
mov byte [rbp + 0xe0], al
cmp byte [rbp + 0xe3], 0
jne 0x14000261e
cmp byte [rbp + 0xe2], 0
jne 0x14000261e
cmp byte [rbp + 0xe1], 0
jne 0x14000261e
cmp byte [rbp + 0xe0], 0
je 0x14000267c
movzx r9d, byte [rbp + 0xe0]
movzx r8d, byte [rbp + 0xe1]
movzx edx, byte [rbp + 0xe2]
movzx eax, byte [rbp + 0xe3]
mov ecx, dword [rbp + 0xe4]
mov dword [rsp + 0x20], ecx
mov ecx, eax
call sym.appendKeyCombo_bool__bool__bool__bool__unsigned_long_
mov rcx, qword [rbp + 0x120]
mov rdx, qword [rbp + 0x118]
mov eax, dword [rbp + 0x110]
mov r9, rcx
mov r8, rdx
mov edx, eax
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_CallNextHookEx]
call rax
jmp 0x14000285b
lea rax, [rbp - 0x50]
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_GetKeyboardState]
call rax
mov rax, qword [rbp + 0xe8]
mov edx, dword [rax + 4]
lea r8, [rbp + 0xc2]
lea rcx, [rbp - 0x50]
mov eax, dword [rbp + 0xe4]
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 2
mov r9, r8
mov r8, rcx
mov ecx, eax
mov rax, qword [sym.imp.USER32.dll_ToUnicode]
call rax
cmp eax, 1
sete al
test al, al
je 0x1400027fc
movzx eax, word [rbp + 0xc2]
mov byte [rbp + 0xdf], al
call method.std::chrono::_V2::steady_clock.now__
mov qword [rbp + 0xb8], rax
lea rax, [rbp + 0xb8]
lea rdx, [0x140133110]
mov rcx, rax
call sym._ZNSt6chronomiINS_3_V212steady_clockENS_8durationIxSt5ratioILx1ELx1000000000EEEES6_EENSt11common_typeIJT0_T1_EE4typeERKNS_10ti
mov qword [rbp + 0xc8], rax
lea rax, [rbp + 0xc8]
mov rcx, rax
call sym._ZNSt6chrono13duration_castINS_8durationIxSt5ratioILx1ELx1EEEExS2_ILx1ELx1000000000EEEENSt9enable_ifIXsrNS_13__is_durationIT_E
mov qword [rbp + 0xb0], rax
lea rax, [rbp + 0xb0]
mov rcx, rax
call method.std::chrono::duration_long_long__std::ratio_1ll__1ll___.count___const
cmp rax, 9
setg al
test al, al
je 0x140002755
lea rax, [0x1400fd0c6]
mov rdx, rax
lea rax, [0x140133040]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_char_const_
movsx eax, byte [rbp + 0xdf]
mov edx, eax
lea rax, [0x140133040]
mov rcx, rax
call fcn.1400d73b0
mov rax, qword [rbp + 0xb8]
mov qword [0x140133110], rax
mov eax, dword [0x140133108]
cdqe
mov rdx, rax
lea rax, [0x1401330e0]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator___unsigned_long_long_
movzx eax, byte [rax]
cmp byte [rbp + 0xdf], al
sete al
test al, al
je 0x1400027f2
mov eax, dword [0x140133108]
add eax, 1
mov dword [0x140133108], eax
mov eax, dword [0x140133108]
movsxd rbx, eax
lea rax, [0x1401330e0]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.size___const
cmp rbx, rax
sete al
test al, al
je 0x1400027fc
mov byte [0x1401330a0], 1
call sym.sendContent__
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_PostQuitMessage]
call rax
jmp 0x1400027fc
mov dword [0x140133108], 0
mov rcx, qword [rbp + 0x120]
mov rdx, qword [rbp + 0x118]
mov eax, dword [rbp + 0x110]
mov r9, rcx
mov r8, rdx
mov edx, eax
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_CallNextHookEx]
call rax
nop
jmp 0x14000285b
add rsp, 0x170
pop rbx
pop rsi
pop rbp
ret