Function at 0x14003f9f8
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push r12
push r14
push r15
sub rsp, 0x40
mov rsi, qword [0x1400a7a68]
mov rbp, r9
mov rbx, r8
mov r15, rcx
test rsi, rsi
je 0x14003fe6b
mov eax, 0x204
lea r14, [rsi + 8]
mov rsi, qword [rsi + 0x90]
mov r12d, 1
lea r9d, [rax + 1]
lea r8d, [rax + 8]
cmp edx, eax
ja 0x14003fd36
je 0x14003fbd2
mov ecx, 0x100
lea eax, [rcx + 4]
cmp edx, eax
ja 0x14003fb99
je 0x14003fb91
mov eax, edx
sub eax, 7
je 0x14003fb81
sub eax, r12d
je 0x14003fb81
sub eax, 0x18
je 0x14003fb62
sub eax, 0xe0
je 0x14003fac2
sub eax, r12d
je 0x14003fac2
cmp eax, r12d
jne 0x14003fe6b
lea rax, [rbx - 1]
cmp rax, 0xfffe
ja 0x14003fe6b
movzx edx, bx
mov rcx, r14
call fcn.140029528
jmp 0x14003fe6b
cmp edx, ecx
je 0x14003fb91
xor dil, dil
cmp rbx, rcx
jae 0x14003fe6b
call fcn.140040ac8
cmp rbx, 0xd
jne 0x14003faf2
shr rbp, 0x10
mov eax, 0x10d
bt bp, 8
cmovb ebx, eax
movsxd rcx, ebx
call fcn.14003fe94
test eax, eax
je 0x14003fb0b
mov r8d, ebx
mov dl, dil
mov ecx, eax
call fcn.140040c40
cmp ebx, 0x10
jne 0x14003fc84
mov ebx, 0xa0
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, r12b
cmp al, dil
jne 0x14003fb3c
mov r8d, ebx
mov dl, dil
mov ecx, 0x210
call fcn.140040c40
mov ebx, 0xa1
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, r12b
cmp al, dil
jne 0x14003fe6b
mov ecx, 0x214
jmp 0x14003fd26
cmp bp, r12w
jne 0x14003fe6b
call fcn.140040cb8
test al, al
je 0x14003fe6b
mov rax, r12
jmp 0x14003fe6d
cmp edx, 7
sete dl
call fcn.140029154
jmp 0x14003fe6b
mov dil, r12b
jmp 0x14003facd
mov eax, edx
sub eax, 0x105
je 0x14003faca
sub eax, 0xfb
je 0x14003fc32
sub eax, r12d
je 0x14003fbc8
sub eax, r12d
je 0x14003fe12
cmp eax, r12d
jne 0x14003fe6b
xor ebp, ebp
cmp edx, 0x206
jne 0x14003fbd5
mov ebp, r12d
lea eax, [rdx - 0x207]
mov ecx, 0xfffffffd
test ecx, eax
mov edi, 2
lea eax, [rdx - 0x20b]
cmove ebp, edi
test ecx, eax
jne 0x14003fc05
xor ebp, ebp
shr rbx, 0x10
cmp bx, r12w
setne bpl
add ebp, 3
cmp dword [rsi + 0x14], 0
jne 0x14003fc1f
call qword [sym.imp.USER32.dll_GetCapture]
test rax, rax
jne 0x14003fc1f
mov rcx, r15
call qword [sym.imp.USER32.dll_SetCapture]
mov eax, dword [rsi + 0x14]
mov r8b, r12b
bts eax, ebp
mov edx, ebp
mov dword [rsi + 0x14], eax
jmp 0x14003fe63
cmp byte [rsi + 0x10], 0
mov qword [rsi + 8], r15
jne 0x14003fc66
and dword [rsp + 0x30], 0
lea rcx, [rsp + 0x20]
mov edi, 2
mov dword [rsp + 0x20], 0x18
mov dword [rsp + 0x24], edi
mov qword [rsp + 0x28], r15
call qword [sym.imp.USER32.dll_TrackMouseEvent]
mov byte [rsi + 0x10], r12b
mov rax, rbp
shr rax, 0x10
cwde
movd xmm2, eax
movsx eax, bp
cvtdq2ps xmm2, xmm2
movd xmm1, eax
cvtdq2ps xmm1, xmm1
jmp 0x14003fde2
cmp ebx, 0x11
jne 0x14003fcd4
mov ebx, 0xa2
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, r12b
cmp al, dil
jne 0x14003fcb1
mov r8d, ebx
mov dl, dil
mov ecx, 0x20f
call fcn.140040c40
mov ebx, 0xa3
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, r12b
cmp al, dil
jne 0x14003fe6b
mov ecx, 0x213
jmp 0x14003fd26
cmp ebx, 0x12
jne 0x14003fe6b
mov ebx, 0xa4
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, r12b
cmp al, dil
jne 0x14003fd05
mov r8d, ebx
mov dl, dil
mov ecx, 0x211
call fcn.140040c40
mov ebx, 0xa5
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, r12b
cmp al, dil
jne 0x14003fe6b
mov ecx, 0x215
mov r8d, ebx
mov dl, dil
call fcn.140040c40
jmp 0x14003fe6b
mov eax, 0x20b
cmp edx, eax
ja 0x14003fda3
je 0x14003fbc8
mov eax, edx
sub eax, r9d
je 0x14003fe12
sub eax, r12d
je 0x14003fbc8
sub eax, r12d
je 0x14003fbc8
sub eax, r12d
je 0x14003fe12
sub eax, r12d
je 0x14003fbc8
cmp eax, r12d
jne 0x14003fe6b
shr rbx, 0x10
xorps xmm1, xmm1
movsx eax, bx
movd xmm2, eax
cvtdq2ps xmm2, xmm2
divss xmm2, dword [0x14005fe0c]
mov rcx, r14
call fcn.1400291a8
jmp 0x14003fe6b
mov eax, edx
sub eax, r8d
je 0x14003fe12
sub eax, r12d
je 0x14003fbc8
sub eax, r12d
je 0x14003fdf7
sub eax, 0xb
je 0x14003fdec
cmp eax, 0x8a
jne 0x14003fe6b
cmp qword [rsi + 8], r15
jne 0x14003fdd3
and qword [rsi + 8], 0
movss xmm1, dword [0x14005fef0]
movaps xmm2, xmm1
mov byte [rsi + 0x10], 0
mov rcx, r14
call fcn.1400292a8
jmp 0x14003fe6b
cmp ebx, 7
jne 0x14003fe6b
mov byte [rsi + 0x2d], r12b
jmp 0x14003fe6b
shr rbx, 0x10
xorps xmm2, xmm2
movsx eax, bx
movd xmm1, eax
cvtdq2ps xmm1, xmm1
divss xmm1, dword [0x14005fe0c]
jmp 0x14003fd96
xor edi, edi
cmp edx, r9d
sete dil
cmp edx, 0x208
jne 0x14003fe2a
mov edi, 2
jmp 0x14003fe40
cmp edx, r8d
jne 0x14003fe40
xor edi, edi
shr rbx, 0x10
cmp bx, r12w
setne dil
add edi, 3
mov eax, dword [rsi + 0x14]
btr eax, edi
mov dword [rsi + 0x14], eax
test eax, eax
jne 0x14003fe5e
call qword [sym.imp.USER32.dll_GetCapture]
cmp rax, r15
jne 0x14003fe5e
call qword [sym.imp.USER32.dll_ReleaseCapture]
xor r8d, r8d
mov edx, edi
mov rcx, r14
call fcn.140029234
xor eax, eax
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x78]
add rsp, 0x40
pop r15
pop r14
pop r12
ret