Function at 0x140047a00
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
mov rcx, qword [rcx + 0x58]
test rcx, rcx
je 0x140047a15
add rcx, 0x98
jmp 0x140051ea0
ret
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x80
mov rax, qword [0x14032aa00]
xor rax, rsp
mov qword [rsp + 0x78], rax
mov byte [rsp + 0x20], r8b
mov r14d, edx
mov qword [rsp + 0x40], rcx
xor r15d, r15d
mov esi, 0xffffffff
movzx r13d, si
lea eax, [r14 - 0x60]
cmp eax, 0xf
jbe 0x140051f0f
cmp r14d, 0x90
je 0x140051f0f
cmp r14d, 0x2e
ja 0x140051f1e
movabs rdx, 0x61fe00000000
bt rdx, r14
jae 0x140051f1e
mov ecx, 0x90
call qword [sym.imp.USER32.dll_GetKeyState]
movzx r13d, ax
movzx r12d, si
lea ecx, [r14 - 0x41]
cmp ecx, 0x19
ja 0x140051f3a
mov ecx, setsockopt
call qword [sym.imp.USER32.dll_GetKeyState]
movzx r12d, ax
lea rcx, [rsp + 0x30]
call fcn.140058310
nop
mov ecx, 0x110
call fcn.1401ae1f0
mov rdi, rax
mov qword [rsp + 0x28], rax
test rax, rax
je 0x140051f92
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov dword [rax + 8], 1
mov dword [rax + 0xc], 1
lea rax, vtable.std::_Ref_count_obj2_class_tc::Message_.0
mov qword [rdi], rax
xor edx, edx
lea rcx, [rdi + 0x10]
call fcn.14015cf70
lea rax, vtable.tc::Message.0
mov qword [rdi + 0x10], rax
jmp 0x140051f95
mov rdi, r15
lea rbp, [rdi + 0x10]
mov qword [rsp + 0x48], rbp
mov qword [rsp + 0x50], rdi
mov dword [rbp + 0xf8], 0x32
mov ecx, 0x30
call fcn.1401ae1f0
mov rbx, rax
mov qword [rsp + 0x28], rax
test rax, rax
je 0x140051fda
xor edx, edx
mov rcx, rax
call fcn.14015cf20
lea rax, vtable.tc::KeyEvent.0
mov qword [rbx], rax
jmp 0x140051fdd
mov rbx, r15
movzx eax, byte [rsp + 0x20]
mov byte [rbx + 0x14], al
mov dword [rbx + 0x10], r14d
movsx eax, r13w
mov dword [rbx + 0x18], eax
movsx eax, r12w
mov dword [rbx + 0x1c], eax
cmp r13w, 0xffff
je 0x140052007
mov dword [rbx + 0x28], 1
jmp 0x140052019
mov eax, 2
cmp r12w, 0xffff
cmovne r15d, eax
mov dword [rbx + 0x28], r15d
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
mov qword [rbx + 0x20], rcx
mov rcx, rbp
call qword [sym.imp.libprotobuf.dll_public:_class_google::protobuf::Arena____ptr64___cdecl_google::protobuf::MessageLite::GetArena_void_const___ptr64]
mov r15, rax
test rax, rax
jne 0x140052054
mov r14, qword [rbp + 0x70]
test r14, r14
je 0x140052054
mov rcx, r14
call fcn.14015da00
mov edx, 0x30
mov rcx, r14
call fcn.1401ae118
mov rcx, rbx
call qword [sym.imp.libprotobuf.dll_public:_class_google::protobuf::Arena____ptr64___cdecl_google::protobuf::MessageLite::GetArena_void_const___ptr64]
cmp r15, rax
je 0x140052074
mov r8, rax
mov rdx, rbx
mov rcx, r15
call qword [sym.imp.libprotobuf.dll_class_google::protobuf::MessageLite____ptr64___cdecl_google::protobuf::internal::GetOwnedMessageInternal_class_google::protobuf::Arena____ptr64__class_google::protobuf::MessageLite____ptr64__class_google::protobuf::Arena____ptr64_]
mov rbx, rax
or dword [rbp + 0x10], 0x80
mov qword [rbp + 0x70], rbx
mov rbx, qword [rsp + 0x40]
mov rbx, qword [rbx + 0x80]
test rbx, rbx
je 0x1400520e9
lea rdx, [rsp + 0x58]
mov rcx, rbp
call qword [sym.imp.libprotobuf.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_google::protobuf::MessageLite::SerializeAsString_void____ptr64]
nop
mov rdx, rax
mov rcx, rbx
call fcn.14013fb70
nop
mov rdx, qword [rsp + 0x70]
cmp rdx, 0xf
jbe 0x1400520e9
inc rdx
mov rcx, qword [rsp + 0x58]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400520e3
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140052196
call fcn.1401ae118
nop
test rdi, rdi
je 0x140052116
mov eax, esi
lock xadd dword [rdi + 8], eax
cmp eax, 1
jne 0x140052116
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax]
lock xadd dword [rdi + 0xc], esi
cmp esi, 1
jne 0x140052116
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.WS2_32.dll_htonl]
nop
mov rcx, qword [rsp + 0x30]
mov rbx, qword [rcx + 8]
cmp byte [rbx + 0x19], 0
jne 0x14005215e
nop word [rax + rax]
mov r8, qword [rbx + 0x10]
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x30]
call fcn.140051130
mov rcx, rbx
mov rbx, qword [rbx]
mov edx, 0x28
call fcn.1401ae118
cmp byte [rbx + 0x19], 0
je 0x140052130
mov rcx, qword [rsp + 0x30]
mov edx, 0x28
call fcn.1401ae118
mov rcx, qword [rsp + 0x78]
xor rcx, rsp
call fcn.1401ae6a0
lea r11, [rsp + 0x80]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
call fcn.1401bc384
nop
int3