Function at 0x1400badb0
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r14
push rbp
lea rbp, [rax - 0x1d8]
sub rsp, 0x2d0
movaps xmmword [rax - 0x18], xmm6
mov rax, qword [0x140197010]
xor rax, rsp
mov qword [rbp + 0x1b0], rax
cmp qword [0x140198640], 0
jne 0x1400badf6
call fcn.1400ae1b0
mov rcx, qword [0x140198660]
lea rdx, [rsp + 0x60]
mov rdi, qword [0x1401980c0]
call qword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [rsp + 0x68]
lea rcx, [rsp + 0x78]
sub eax, dword [rsp + 0x60]
movd xmm1, eax
mov eax, dword [rsp + 0x6c]
sub eax, dword [rsp + 0x64]
cvtdq2ps xmm1, xmm1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [rdi + 0x10], xmm1
movss dword [rdi + 0x14], xmm0
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rcx, qword [rsp + 0x78]
xorps xmm1, xmm1
mov rax, rcx
xorps xmm0, xmm0
sub rax, qword [0x140198668]
cvtsi2ss xmm0, qword [0x140198670]
cvtsi2ss xmm1, rax
divss xmm1, xmm0
movss dword [rdi + 0x18], xmm1
mov qword [0x140198668], rcx
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov ecx, 0x10
and al, 1
mov byte [rdi + 0x130], al
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov ecx, 0x12
and al, 1
mov byte [rdi + 0x131], al
call qword [sym.imp.USER32.dll_GetKeyState]
mov rcx, qword [0x1401980c0]
shr eax, 0xf
and al, 1
mov byte [rdi + 0x133], 0
mov byte [rdi + 0x132], al
cmp byte [rcx + 0x3af], 0
lea rbx, [rcx + 0x118]
je 0x1400baf09
cvttss2si eax, dword [rbx]
lea rdx, [rsp + 0x50]
mov dword [rsp + 0x50], eax
cvttss2si eax, dword [rcx + 0x11c]
mov rcx, qword [0x140198660]
mov dword [rsp + 0x54], eax
call qword [sym.imp.USER32.dll_ClientToScreen]
mov edx, dword [rsp + 0x54]
mov ecx, dword [rsp + 0x50]
call qword [sym.imp.USER32.dll_SetCursorPos]
mov dword [rbx], 0xff7fffff
mov dword [rbx + 4], 0xff7fffff
call qword [sym.imp.USER32.dll_GetActiveWindow]
cmp rax, qword [0x140198660]
jne 0x1400baf65
lea rcx, [rsp + 0x58]
call qword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x1400baf65
mov rcx, qword [0x140198660]
lea rdx, [rsp + 0x58]
call qword [sym.imp.USER32.dll_ScreenToClient]
test eax, eax
je 0x1400baf65
movd xmm0, dword [rsp + 0x58]
movd xmm1, dword [rsp + 0x5c]
cvtdq2ps xmm0, xmm0
cvtdq2ps xmm1, xmm1
movss dword [rbx], xmm0
movss dword [rbx + 4], xmm1
cmp byte [rdi + 0xd0], 0
mov rsi, 0xffffffffffffffff
je 0x1400baf79
mov eax, esi
jmp 0x1400baf86
mov rax, qword [0x1401980c0]
mov eax, dword [rax + 0x1d70]
cmp dword [0x1401977e0], eax
je 0x1400baf99
mov dword [0x1401977e0], eax
call fcn.1400af3b0
call fcn.140096770
call qword [sym.imp.USER32.dll_GetForegroundWindow]
xor r14d, r14d
cmp rax, qword [0x140198248]
jne 0x1400bafe5
lea edx, [r14 + 3]
mov rcx, rax
call qword [sym.imp.USER32.dll_GetWindow]
mov rcx, qword [0x140198240]
xor r9d, r9d
mov dword [rsp + 0x30], 3
mov rdx, rax
mov dword [rsp + 0x28], r14d
xor r8d, r8d
mov dword [rsp + 0x20], r14d
call qword [sym.imp.USER32.dll_SetWindowPos]
call fcn.1400bb760
xorps xmm1, xmm1
mov ecx, 3
xorps xmm6, xmm6
call fcn.14008f290
mov rbx, qword [0x1401980c0]
lea rdx, [rsp + 0x78]
mov dword [rsp + 0x78], 1
movss xmm1, dword [rbx + 0x1554]
lea rcx, [rbx + 0x1a88]
movss xmm0, dword [rbx + 0x1558]
movss dword [rsp + 0x7c], xmm1
movss dword [rbp - 0x80], xmm0
call fcn.140068c40
mov qword [rbx + 0x1554], r14
lea rdx, [rsp + 0x60]
mov rbx, qword [0x1401980c0]
mov dword [rsp + 0x60], 2
mov qword [rbx + 0x1ae4], r14
lea rcx, [rbx + 0x1a78]
mov qword [rbx + 0x1aec], r14
mov dword [rbx + 0x1ac8], 1
movups xmm0, xmmword [rbx + 0x1610]
movups xmmword [rsp + 0x64], xmm0
call fcn.140068d60
mov qword [rbx + 0x1610], r14
mov qword [rbx + 0x1618], r14
mov rax, qword [0x1401980c0]
mov rcx, qword [rax + 0x19f8]
movss xmm0, dword [rax + 0x10]
movss xmm1, dword [rax + 0x14]
mov eax, dword [rcx + 0xb0]
test al, 1
je 0x1400bb114
and eax, 0xfffffff1
comiss xmm0, xmm6
mov dword [rcx + 0xb0], eax
jbe 0x1400bb0d3
cvttss2si eax, xmm0
movd xmm0, eax
mov eax, r14d
cvtdq2ps xmm0, xmm0
movss dword [rcx + 0x20], xmm0
jmp 0x1400bb0df
mov byte [rcx + 0x98], r14b
mov eax, 2
comiss xmm1, xmm6
mov dword [rcx + 0x90], eax
jbe 0x1400bb103
cvttss2si eax, xmm1
mov dword [rcx + 0x94], r14d
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [rcx + 0x24], xmm0
jmp 0x1400bb114
mov dword [rcx + 0x94], 2
mov byte [rcx + 0x98], r14b
xor edx, edx
lea rcx, str.scene
mov r8d, 0xc0201
call fcn.14008fc90
mov rax, qword [0x1401980c0]
movss xmm0, dword [0x14015d298]
movss xmm1, dword [rax + 0x3b4]
comiss xmm0, xmm1
cvtps2pd xmm2, xmm1
jbe 0x1400bb2dc
movdqa xmm1, xmmword [0x14015d630]
mov dl, 0x3c
movd ecx, xmm1
movdqa xmm0, xmm1
movdqu xmmword [rsp + 0x78], xmm1
mov r8b, 0x70
mov r9b, 0x6a
xor dl, cl
psrldq xmm0, 1
xor byte [rsp + 0x7a], cl
xor r8b, cl
xor byte [rsp + 0x7b], cl
xor r9b, cl
xor byte [rsp + 0x7c], cl
mov r10b, 0x6f
xor byte [rsp + 0x7d], cl
xor r10b, cl
xor byte [rsp + 0x7e], cl
mov r11b, 0x7a
xor byte [rsp + 0x7f], cl
xor r11b, cl
xor byte [rbp - 0x80], cl
mov bl, 0x64
xor byte [rbp - 0x7f], cl
xor bl, cl
xor byte [rbp - 0x7e], cl
mov dil, 0x2c
xor byte [rbp - 0x7d], cl
xor dil, cl
xor byte [rbp - 0x7c], cl
xor byte [rbp - 0x7b], cl
xor byte [rbp - 0x7a], cl
xor byte [rbp - 0x79], cl
movd eax, xmm0
mov byte [rbp - 0x78], dl
lea rdx, [rsp + 0x79]
mov byte [rbp - 0x77], r8b
movq r8, xmm2
xor al, cl
mov byte [rbp - 0x76], r9b
lea rcx, [rbp - 0x70]
mov byte [rsp + 0x79], al
mov byte [rbp - 0x75], r10b
mov byte [rbp - 0x74], r11b
mov byte [rbp - 0x73], bl
mov byte [rbp - 0x72], dil
mov byte [rbp - 0x71], r14b
call fcn.14005bbd0
movsd xmm2, qword [0x14015d228]
lea rcx, [rsp + 0x60]
mov eax, dword [0x140197170]
xorps xmm1, xmm1
mov r8, qword [0x1401980c0]
xorps xmm0, xmm0
cvtsi2sd xmm0, rax
mov eax, dword [0x140197174]
cvtsi2sd xmm1, rax
mov eax, dword [0x140197178]
divsd xmm0, xmm2
divsd xmm1, xmm2
cvtpd2ps xmm0, xmm0
movss dword [rsp + 0x60], xmm0
cvtpd2ps xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, rax
mov eax, dword [0x14019717c]
movss dword [rsp + 0x64], xmm0
divsd xmm1, xmm2
cvtpd2ps xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, rax
movss dword [rsp + 0x68], xmm0
divsd xmm1, xmm2
cvtpd2ps xmm0, xmm1
movss dword [rsp + 0x6c], xmm0
call fcn.14009c640
movss xmm1, dword [0x14015d27c]
mov r10d, eax
test eax, 0xff000000
je 0x1400bb482
lea rax, [rbp - 0x70]
nop word [rax + rax]
inc rsi
cmp byte [rax + rsi], r14b
jne 0x1400bb2a0
lea r9, [rbp - 0x70]
add r9, rsi
lea rax, [rbp - 0x70]
cmp rax, r9
je 0x1400bb482
mov rcx, qword [r8 + 0x1d30]
movsxd rdx, dword [r8 + 0x1d28]
add rdx, rdx
movups xmm0, xmmword [rcx + rdx*8 - 0x10]
lea rcx, [rbp - 0x70]
jmp 0x1400bb42d
movdqa xmm1, xmmword [0x14015da90]
lea rdx, [rsp + 0x79]
movd ecx, xmm1
movdqa xmm0, xmm1
movdqu xmmword [rsp + 0x78], xmm1
mov byte [rbp - 0x78], r14b
psrldq xmm0, 1
movq r8, xmm2
xor byte [rsp + 0x7a], cl
xor byte [rsp + 0x7b], cl
xor byte [rsp + 0x7c], cl
xor byte [rsp + 0x7d], cl
xor byte [rsp + 0x7e], cl
xor byte [rsp + 0x7f], cl
xor byte [rbp - 0x80], cl
xor byte [rbp - 0x7f], cl
xor byte [rbp - 0x7e], cl
xor byte [rbp - 0x7d], cl
xor byte [rbp - 0x7c], cl
xor byte [rbp - 0x7b], cl
xor byte [rbp - 0x7a], cl
xor byte [rbp - 0x79], cl
movd eax, xmm0
xor al, cl
lea rcx, [rbp + 0xa0]
mov byte [rsp + 0x79], al
call fcn.14005bbd0
movsd xmm2, qword [0x14015d228]
lea rcx, [rsp + 0x60]
mov eax, dword [0x140197090]
xorps xmm1, xmm1
mov r8, qword [0x1401980c0]
xorps xmm0, xmm0
cvtsi2sd xmm0, rax
mov eax, dword [0x140197094]
cvtsi2sd xmm1, rax
mov eax, dword [0x140197098]
divsd xmm0, xmm2
divsd xmm1, xmm2
cvtpd2ps xmm0, xmm0
movss dword [rsp + 0x60], xmm0
cvtpd2ps xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, rax
mov eax, dword [0x14019709c]
movss dword [rsp + 0x64], xmm0
divsd xmm1, xmm2
cvtpd2ps xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, rax
movss dword [rsp + 0x68], xmm0
divsd xmm1, xmm2
cvtpd2ps xmm0, xmm1
movss dword [rsp + 0x6c], xmm0
call fcn.14009c640
movss xmm1, dword [0x14015d27c]
mov r10d, eax
test eax, 0xff000000
je 0x1400bb482
lea rax, [rbp + 0xa0]
inc rsi
cmp byte [rax + rsi], r14b
jne 0x1400bb3f1
lea r9, [rbp + 0xa0]
add r9, rsi
lea rax, [rbp + 0xa0]
cmp rax, r9
je 0x1400bb482
mov rcx, qword [r8 + 0x1d30]
movsxd rdx, dword [r8 + 0x1d28]
add rdx, rdx
movups xmm0, xmmword [rcx + rdx*8 - 0x10]
lea rcx, [rbp + 0xa0]
mov rax, qword [r8 + 0x1d00]
lea rdx, [r8 + 0x1cc8]
mov byte [rsp + 0x48], r14b
movss dword [rsp + 0x40], xmm6
mov qword [rsp + 0x38], r9
movss xmm2, dword [rax + 0x10]
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x60]
movups xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x28], rcx
movss xmm0, dword [0x14015d270]
mov rcx, qword [rax + 8]
unpcklps xmm0, xmm1
movq r9, xmm0
mov dword [rsp + 0x20], r10d
call fcn.14009ce70
cmp dword [0x14019760c], 0x32
jg 0x1400bb4a4
call fcn.14007b120
call fcn.140071600
call fcn.14007ed40
call fcn.140077280
call fcn.140076390
mov rcx, qword [0x1401980c0]
xor r9d, r9d
mov rax, qword [rcx + 0x19f8]
mov byte [rax + 0x7c], 1
mov rax, qword [rcx + 0x19f8]
mov rcx, qword [rax + 0x2a0]
mov rax, qword [rcx + 0x38]
movss xmm1, dword [rax + 0x24]
movss xmm0, dword [rax + 0x20]
movss xmm2, dword [rax + 0x1c]
unpcklps xmm0, xmm1
movss xmm1, dword [rax + 0x18]
movq r8, xmm0
unpcklps xmm1, xmm2
movq rdx, xmm1
call fcn.1400ac940
call fcn.14008fbc0
mov r8, qword [0x1401980c0]
lea r11, [0x140159160]
mov rcx, qword [r8 + 0x1a80]
movsxd rax, dword [r8 + 0x1a78]
lea rdx, [rax + rax*4]
movsxd rax, dword [rcx + rdx*4 - 0x14]
movups xmm0, xmmword [rcx + rdx*4 - 0x10]
add rax, 0x15f
add rax, rax
movups xmmword [r8 + rax*8], xmm0
dec dword [r8 + 0x1a78]
movsxd rax, dword [r8 + 0x1a88]
mov rdx, qword [r8 + 0x1a90]
lea rcx, [rax + rax*2]
movsxd rax, dword [rdx + rcx*4 - 0xc]
lea rax, [rax + rax*2]
cmp dword [r11 + rax*4], 4
mov r9d, dword [r11 + rax*4 + 8]
jne 0x1400bb594
mov eax, dword [r11 + rax*4 + 4]
cmp eax, 1
jne 0x1400bb577
mov eax, dword [rdx + rcx*4 - 8]
mov dword [r9 + r8 + 0x1550], eax
jmp 0x1400bb594
cmp eax, 2
jne 0x1400bb594
mov eax, dword [rdx + rcx*4 - 8]
mov dword [r9 + r8 + 0x1550], eax
mov eax, dword [rdx + rcx*4 - 4]
mov dword [r9 + r8 + 0x1554], eax
movsxd rcx, dword [r8 + 0x1a88]
lea eax, [rcx - 1]
mov dword [r8 + 0x1a88], eax
lea rax, [rcx - 2]
mov rdx, qword [r8 + 0x1a90]
lea rcx, [rax + rax*2]
movsxd rax, dword [rdx + rcx*4]
lea r10, [rax + rax*2]
cmp dword [r11 + r10*4], 4
mov r9d, dword [r11 + r10*4 + 8]
jne 0x1400bb5fd
mov eax, dword [r11 + r10*4 + 4]
cmp eax, 1
jne 0x1400bb5e0
mov eax, dword [rdx + rcx*4 + 4]
mov dword [r9 + r8 + 0x1550], eax
jmp 0x1400bb5fd
cmp eax, 2
jne 0x1400bb5fd
mov eax, dword [rdx + rcx*4 + 4]
mov dword [r9 + r8 + 0x1550], eax
mov eax, dword [rdx + rcx*4 + 8]
mov dword [r9 + r8 + 0x1554], eax
dec dword [r8 + 0x1a88]
call fcn.140095770
mov rcx, qword [0x140198110]
xor r8d, r8d
mov rax, qword [rcx]
lea edx, [r8 + 7]
call qword [rax + 0x1c8]
mov rcx, qword [0x140198110]
xor r8d, r8d
mov rax, qword [rcx]
lea edx, [r8 + 0x1b]
call qword [rax + 0x1c8]
mov rcx, qword [0x140198110]
xor r8d, r8d
mov edx, 0xae
mov rax, qword [rcx]
call qword [rax + 0x1c8]
mov rcx, qword [0x140198110]
mov r9d, 1
movss xmm0, dword [0x14015d1d0]
xor r8d, r8d
mov dword [rsp + 0x30], r14d
xor edx, edx
movss dword [rsp + 0x28], xmm0
mov rax, qword [rcx]
mov dword [rsp + 0x20], r14d
call qword [rax + 0x158]
mov rcx, qword [0x140198110]
mov rax, qword [rcx]
call qword [rax + 0x148]
test eax, eax
js 0x1400bb6c5
call fcn.1400953b0
mov rcx, qword [0x1401980c0]
add rcx, 0x1c70
cmp byte [rcx], r14b
cmove rcx, r14
call fcn.1400ae490
mov rcx, qword [0x140198110]
mov rax, qword [rcx]
call qword [rax + 0x150]
mov rcx, qword [0x140198110]
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x20], r14
xor edx, edx
mov rax, qword [rcx]
call qword [rax + 0x88]
cmp eax, 0x88760868
jne 0x1400bb71e
mov rcx, qword [0x140198110]
mov rax, qword [rcx]
call qword [rax + 0x18]
cmp eax, 0x88760869
jne 0x1400bb71e
call fcn.1400ae120
mov rcx, qword [0x140198110]
lea rdx, [0x1401980d0]
mov rax, qword [rcx]
call qword [rax + 0x80]
call fcn.1400ae1b0
mov rcx, qword [rbp + 0x1b0]
xor rcx, rsp
call fcn.14006f5c0
lea r11, [rsp + 0x2d0]
mov rbx, qword [r11 + 0x10]
mov rsi, qword [r11 + 0x18]
mov rdi, qword [r11 + 0x20]
mov r14, qword [r11 + 0x28]
movaps xmm6, xmmword [r11 - 0x10]
mov rsp, r11
pop rbp
ret