Function at 0x180153ae0
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r14
sub rsp, 0x30
call fcn.180162880
mov rbx, rax
lea r14, [0x1804d90c0]
mov qword [rsp + 0x60], r14
mov rcx, r14
call fcn.18026701c
test eax, eax
jne 0x180153e89
cmp dword [0x1804d910c], 0x7fffffff
je 0x180153e74
cmp qword [0x1804d9130], 0
je 0x180153c31
mov rcx, qword [0x1804d9120]
dec rcx
and rcx, qword [0x1804d9128]
mov rax, qword [0x1804d9118]
mov rsi, qword [rax + rcx*8]
mov r8, qword [rsi + 8]
mov rdx, qword [rsi]
cmp rdx, r8
je 0x180153b77
nop word [rax + rax]
mov rcx, qword [rdx]
movzx eax, byte [rdx + 8]
mov byte [rcx + rbx + 0xb24], al
add rdx, 0x10
cmp rdx, r8
jne 0x180153b60
mov r8, qword [rsi + 0x20]
mov rdx, qword [rsi + 0x18]
cmp rdx, r8
je 0x180153ba7
nop dword [rax]
nop dword [rax + rax]
movsxd rcx, dword [rdx]
movzx eax, byte [rdx + 4]
mov byte [rcx + rbx + 0xe00], al
add rdx, 8
cmp rdx, r8
jne 0x180153b90
mov rbp, qword [rsi + 0x38]
mov rdi, qword [rsi + 0x30]
cmp rdi, rbp
je 0x180153bc8
movzx edx, word [rdi]
mov rcx, rbx
call fcn.18015a9c0
add rdi, 2
cmp rdi, rbp
jne 0x180153bb4
movss xmm0, dword [rsi + 0x48]
addss xmm0, dword [rbx + 0xe08]
movss dword [rbx + 0xe08], xmm0
movss xmm1, dword [rsi + 0x4c]
addss xmm1, dword [rbx + 0xe0c]
movss dword [rbx + 0xe0c], xmm1
mov rcx, qword [0x1804d9120]
dec rcx
and rcx, qword [0x1804d9128]
mov rax, qword [0x1804d9118]
mov rcx, qword [rax + rcx*8]
call fcn.180153880
sub qword [0x1804d9130], 1
jne 0x180153c2a
mov qword [0x1804d9128], 0
jmp 0x180153c31
inc qword [0x1804d9128]
mov rcx, r14
call fcn.18026707c
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x20], xmm0
lea rdx, [rsp + 0x20]
mov rcx, qword [0x1804d9138]
call qword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [rsp + 0x28]
sub eax, dword [rsp + 0x20]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
mov eax, dword [rsp + 0x2c]
sub eax, dword [rsp + 0x24]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [rbx + 8], xmm1
movss dword [rbx + 0xc], xmm0
mov qword [rsp + 0x68], 0
lea rcx, [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rax, qword [rsp + 0x68]
sub rax, qword [0x1804d9140]
xorps xmm1, xmm1
cvtsi2ss xmm1, rax
xorps xmm0, xmm0
cvtsi2ss xmm0, qword [0x1804d9148]
divss xmm1, xmm0
movss dword [rbx + 0x10], xmm1
mov rax, qword [rsp + 0x68]
mov qword [0x1804d9140], rax
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x180153cf4
cmp byte [rbx + 0xb35], 0
jne 0x180153cf4
cmp byte [rbx + 0xbc6], 0
jne 0x180153cf4
cmp byte [rbx + 0xbc7], 0
jne 0x180153cf4
xor al, al
jmp 0x180153cf6
mov al, 1
mov byte [rbx + 0xe14], al
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x180153d2b
cmp byte [rbx + 0xb34], 0
jne 0x180153d2b
cmp byte [rbx + 0xbc4], 0
jne 0x180153d2b
cmp byte [rbx + 0xbc5], 0
jne 0x180153d2b
xor al, al
jmp 0x180153d2d
mov al, 1
mov byte [rbx + 0xe15], al
mov ecx, 0x12
call qword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x180153d62
cmp byte [rbx + 0xb36], 0
jne 0x180153d62
cmp byte [rbx + 0xbc8], 0
jne 0x180153d62
cmp byte [rbx + 0xbc9], 0
jne 0x180153d62
xor al, al
jmp 0x180153d64
mov al, 1
mov byte [rbx + 0xe16], al
mov byte [rbx + 0xe17], 0
call fcn.180162880
mov rdi, rax
cmp byte [rax + 0xcf], 0
je 0x180153dbe
cvttss2si ecx, dword [rax + 0xdf8]
mov dword [rsp + 0x60], ecx
cvttss2si ecx, dword [rax + 0xdfc]
mov dword [rsp + 0x64], ecx
lea rdx, [rsp + 0x60]
mov rcx, qword [0x1804d9138]
call qword [sym.imp.USER32.dll_ClientToScreen]
test eax, eax
je 0x180153dbe
mov edx, dword [rsp + 0x64]
mov ecx, dword [rsp + 0x60]
call qword [sym.imp.USER32.dll_SetCursorPos]
mov dword [rdi + 0xdf8], 0xff7fffff
mov dword [rdi + 0xdfc], 0xff7fffff
call qword [sym.imp.USER32.dll_GetForegroundWindow]
test rax, rax
je 0x180153e3d
mov rdx, qword [0x1804d9138]
cmp rax, rdx
je 0x180153df6
mov rcx, rax
call qword [sym.imp.USER32.dll_IsChild]
test eax, eax
je 0x180153e3d
lea rcx, [rsp + 0x70]
call qword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x180153e3d
lea rdx, [rsp + 0x70]
mov rcx, qword [0x1804d9138]
call qword [sym.imp.USER32.dll_ScreenToClient]
test eax, eax
je 0x180153e3d
movd xmm0, dword [rsp + 0x70]
cvtdq2ps xmm0, xmm0
movd xmm1, dword [rsp + 0x74]
cvtdq2ps xmm1, xmm1
movss dword [rdi + 0xdf8], xmm0
movss dword [rdi + 0xdfc], xmm1
cmp byte [rbx + 0x50], 0
je 0x180153e4a
mov eax, 0xffffffff
jmp 0x180153e4f
call fcn.180162c40
cmp dword [0x1804c0a58], eax
je 0x180153e62
mov dword [0x1804c0a58], eax
call fcn.180153ed0
inc qword [0x1804d90b0]
add rsp, 0x30
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov dword [0x1804d910c], 0x7ffffffe
mov ecx, 6
call fcn.1802673a8
int3
mov ecx, 5
call fcn.1802673a8
int3