Function at 0x14003dc10
Capabilities:
Create thread
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0x50
mov rax, qword [0x14004f040]
xor rax, rsp
mov qword [rsp + 0x48], rax
xor ebx, ebx
lea ecx, [rbx + 6]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
cmp byte [0x14004f0e1], bl
je 0x14003dd73
test ax, ax
jns 0x14003dcf1
cmp byte [0x14004f0f5], bl
jne 0x14003de80
mov byte [0x14004f0f5], 1
mov eax, 1
xchg byte [0x14004f819], al
lea rcx, [0x14004f940]
call qword [sym.imp.MSVCP140.dll__Cnd_broadcast]
lea ecx, [rbx + 8]
call fcn.14003f414
lea rcx, [0x14003ce70]
mov qword [rax], rcx
mov qword [rsp + 0x40], rax
lea rcx, [rsp + 0x38]
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], ebx
mov r9, rax
lea r8, [0x14003eff0]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__beginthreadex]
mov qword [rsp + 0x30], rax
test rax, rax
je 0x14003dce1
cmp dword [0x14004f8c8], ebx
jne 0x14003dcda
movaps xmm1, xmmword [rsp + 0x30]
movups xmmword [0x14004f8c0], xmm1
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.14003f030
add rsp, 0x50
pop rbx
ret
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_terminate]
nop
mov dword [rsp + 0x38], ebx
mov ecx, 6
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
cmp byte [0x14004f0f5], bl
je 0x14003de80
mov byte [0x14004f0f5], bl
xchg byte [0x14004f819], bl
lea rcx, [0x14004f940]
call qword [sym.imp.MSVCP140.dll__Cnd_broadcast]
cmp dword [0x14004f8c8], 0
je 0x14003de80
call qword [sym.imp.MSVCP140.dll__Thrd_id]
cmp dword [0x14004f8c8], eax
je 0x14003de41
movups xmm0, xmmword [0x14004f8c0]
movaps xmmword [rsp + 0x30], xmm0
xor edx, edx
lea rcx, [rsp + 0x30]
call qword [sym.imp.MSVCP140.dll__Thrd_join]
test eax, eax
jne 0x14003de6e
xorps xmm0, xmm0
movups xmmword [0x14004f8c0], xmm0
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.14003f030
add rsp, 0x50
pop rbx
ret
test ax, ax
jns 0x14003de7a
cmp byte [0x14004f0f2], bl
jne 0x14003de80
mov byte [0x14004f0f2], 1
cmp byte [0x14004f0f5], bl
sete al
mov byte [0x14004f0f5], al
xchg byte [0x14004f819], al
movzx eax, byte [0x14004f819]
lea rcx, [0x14004f940]
test al, al
je 0x14003de25
call qword [sym.imp.MSVCP140.dll__Cnd_broadcast]
mov ecx, 8
call fcn.14003f414
lea rcx, [0x14003ce70]
mov qword [rax], rcx
mov qword [rsp + 0x40], rax
lea rcx, [rsp + 0x38]
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], ebx
mov r9, rax
lea r8, [0x14003eff0]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__beginthreadex]
mov qword [rsp + 0x30], rax
test rax, rax
je 0x14003de15
cmp dword [0x14004f8c8], 0
je 0x14003dcbb
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_terminate]
nop
mov dword [rsp + 0x38], ebx
mov ecx, 6
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
call qword [sym.imp.MSVCP140.dll__Cnd_broadcast]
cmp dword [0x14004f8c8], ebx
je 0x14003de80
call qword [sym.imp.MSVCP140.dll__Thrd_id]
cmp dword [0x14004f8c8], eax
jne 0x14003de4d
mov ecx, 5
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3
movups xmm0, xmmword [0x14004f8c0]
movaps xmmword [rsp + 0x30], xmm0
xor edx, edx
lea rcx, [rsp + 0x30]
call qword [sym.imp.MSVCP140.dll__Thrd_join]
test eax, eax
je 0x14003dd56
mov ecx, 2
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3
mov byte [0x14004f0f2], bl
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.14003f030
add rsp, 0x50
pop rbx
ret