Function at 0x14003c480
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
push rdi
sub rsp, 0x110
movaps xmmword [rsp + 0xa0], xmm12
mov rax, qword [0x140125040]
xor rax, rsp
mov qword [rsp + 0x68], rax
mov ecx, dword [0x140125c30]
movaps xmm12, xmm2
mov ebx, dword [0x140127624]
mov edi, dword [0x140127614]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x14003c4e6
cmp byte [0x140129e68], 0
jne 0x14003c4ed
cmp byte [0x140127612], 0
mov byte [0x140129e68], 1
sete byte [0x140127612]
jmp 0x14003c4ed
mov byte [0x140129e68], 0
cmp byte [0x140129e90], 0
je 0x14003c78e
cmp byte [0x140127612], 0
je 0x14003c78e
lea rcx, [0x1401250c0]
call qword [sym.imp.MSVCP140.dll__Mtx_lock]
test eax, eax
je 0x14003c524
mov ecx, 5
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3
cmp dword [0x14012510c], 0x7fffffff
jne 0x14003c546
mov ecx, 6
mov dword [0x14012510c], 0x7ffffffe
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3
mov eax, dword [0x140125bd8]
xorps xmm1, xmm1
movaps xmmword [rsp + 0xf0], xmm7
xorps xmm0, xmm0
cvtsi2sd xmm0, dword [0x140125c54]
mov dword [0x140127620], eax
movaps xmmword [rsp + 0xd0], xmm9
xorps xmm7, xmm7
movaps xmmword [rsp + 0xc0], xmm10
xorps xmm9, xmm9
movaps xmmword [rsp + 0xb0], xmm11
xorps xmm10, xmm10
movsd xmm11, qword [0x14011bd20]
comisd xmm12, xmm11
cvtsi2sd xmm1, ebx
mov ebx, 1
movaps xmmword [rsp + 0x90], xmm13
xorps xmm13, xmm13
movaps xmmword [rsp + 0x80], xmm14
xorps xmm14, xmm14
movaps xmmword [rsp + 0x70], xmm15
xorps xmm15, xmm15
cvtsi2sd xmm15, edi
divsd xmm1, xmm12
divsd xmm15, xmm12
mulsd xmm1, xmm0
mulsd xmm15, xmm0
movsd qword [rsp + 0x40], xmm1
jb 0x14003c746
mov qword [rsp + 0x120], rsi
movaps xmm2, xmm11
movaps xmmword [rsp + 0x100], xmm6
xor esi, esi
movaps xmmword [rsp + 0xe0], xmm8
nop dword [rax]
divsd xmm1, xmm2
lea rdx, [rsp + 0x48]
cvttsd2si edi, xmm1
movaps xmm1, xmm15
divsd xmm1, xmm2
cvttsd2si eax, xmm1
movd xmm8, eax
cvtdq2pd xmm8, xmm8
movaps xmm0, xmm8
movsd qword [rsp + 0x48], xmm8
call qword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_modf]
addsd xmm9, xmm0
comisd xmm9, xmm11
jbe 0x14003c66a
lea rdx, [rsp + 0x50]
movsd qword [rsp + 0x50], xmm10
movaps xmm0, xmm9
call qword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_modf]
movaps xmm9, xmm0
movd xmm6, edi
lea rdx, [rsp + 0x50]
cvtdq2pd xmm6, xmm6
movaps xmm0, xmm6
movsd qword [rsp + 0x50], xmm6
call qword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_modf]
addsd xmm7, xmm0
comisd xmm7, xmm11
jbe 0x14003c6a9
lea rdx, [rsp + 0x48]
movsd qword [rsp + 0x48], xmm10
movaps xmm0, xmm7
call qword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_modf]
movaps xmm7, xmm0
mov rcx, qword [0x140125ba0]
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
ja 0x14003c70a
mov edx, dword [0x140125b98]
lea r8, [rsp + 0x58]
mov qword [rsp + 0x38], rsi
movaps xmm0, xmm8
subsd xmm0, xmm13
mov qword [rsp + 0x30], rsi
movaps xmm1, xmm6
mov dword [rsp + 0x28], esi
subsd xmm1, xmm14
mov word [rsp + 0x60], si
mov r9d, 0xc
mov qword [rsp + 0x20], rsi
cvttsd2si eax, xmm0
mov dword [rsp + 0x58], eax
cvttsd2si eax, xmm1
mov dword [rsp + 0x5c], eax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
movsd xmm1, qword [rsp + 0x40]
inc ebx
movaps xmm13, xmm8
movaps xmm14, xmm6
movd xmm2, ebx
cvtdq2pd xmm2, xmm2
comisd xmm12, xmm2
jae 0x14003c610
movaps xmm8, xmmword [rsp + 0xe0]
movaps xmm6, xmmword [rsp + 0x100]
mov rsi, qword [rsp + 0x120]
lea rcx, [0x1401250c0]
call qword [sym.imp.MSVCP140.dll__Mtx_unlock]
movaps xmm15, xmmword [rsp + 0x70]
movaps xmm14, xmmword [rsp + 0x80]
movaps xmm13, xmmword [rsp + 0x90]
movaps xmm11, xmmword [rsp + 0xb0]
movaps xmm10, xmmword [rsp + 0xc0]
movaps xmm9, xmmword [rsp + 0xd0]
movaps xmm7, xmmword [rsp + 0xf0]
mov rcx, qword [rsp + 0x68]
xor rcx, rsp
call fcn.140050ac0
lea r11, [rsp + 0x110]
mov rbx, qword [r11 + 0x18]
movaps xmm12, xmmword [r11 - 0x70]
mov rsp, r11
pop rdi
ret