Function at 0x180021f10
Capabilities:
Log keystrokes via polling

Disassembly:
push rdi
sub rsp, 0x40
movss xmm0, dword [0x18014e3e0]
mov edi, dword [0x18014e100]
mov qword [rsp + 0x50], rbx
mov qword [rsp + 0x68], r15
movaps xmmword [rsp + 0x30], xmm6
xorps xmm6, xmm6
ucomiss xmm0, xmm6
mov r15d, 4
movaps xmmword [rsp + 0x20], xmm7
jne 0x180021fb2
call fcn.180017620
mov rbx, rax
test rax, rax
je 0x180021faa
mov rax, qword gs:[0x58]
mov rcx, qword [rax + rdi*8]
mov eax, dword [r15 + rcx]
cmp dword [0x18014ece8], eax
jle 0x180021f9e
lea rcx, [0x18014ece8]
call fcn.1800ea128
cmp dword [0x18014ece8], 0xffffffff
jne 0x180021f9e
mov ecx, 0xc566d10
call fcn.180011100
lea rcx, [0x18014ece8]
mov qword [0x18014eb50], rax
call fcn.1800ea0bc
mov rax, qword [0x18014eb50]
movss xmm6, dword [rax + rbx]
movss dword [0x18014e3e0], xmm6
call fcn.180017620
mov rcx, rax
call fcn.180017530
cmp byte [0x18014e36a], 0
mov rbx, rax
je 0x18002223c
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x60], r14
test rax, rax
je 0x1800220a1
mov rcx, qword gs:[0x58]
mov rdx, qword [rcx + rdi*8]
mov ecx, dword [r15 + rdx]
cmp dword [0x18014ebd8], ecx
jle 0x18002202d
lea rcx, [0x18014ebd8]
call fcn.1800ea128
cmp dword [0x18014ebd8], 0xffffffff
jne 0x18002202d
mov ecx, 0x754c7fa7
call fcn.180011100
lea rcx, [0x18014ebd8]
mov qword [0x18014f2f8], rax
call fcn.1800ea0bc
mov rax, qword [0x18014f2f8]
mov rsi, qword [rax + rbx]
test rsi, rsi
je 0x1800220a1
mov rax, qword gs:[0x58]
mov rcx, qword [rax + rdi*8]
mov eax, dword [r15 + rcx]
cmp dword [0x18014ef48], eax
jle 0x180022088
lea rcx, [0x18014ef48]
call fcn.1800ea128
cmp dword [0x18014ef48], 0xffffffff
jne 0x180022088
mov ecx, 0xcf6c2c0b
call fcn.180011100
lea rcx, [0x18014ef48]
mov qword [0x18014eed8], rax
call fcn.1800ea0bc
mov rax, qword [0x18014eed8]
mov r14, r15
cmp dword [rsi + rax], 0x40547fde
je 0x18002216b
jmp 0x1800220a4
mov r14, r15
test rbx, rbx
je 0x180022232
mov rax, qword gs:[0x58]
mov rdx, qword [rax + rdi*8]
mov eax, dword [r15 + rdx]
cmp dword [0x18014ebd8], eax
jle 0x1800220f8
lea rcx, [0x18014ebd8]
call fcn.1800ea128
cmp dword [0x18014ebd8], 0xffffffff
jne 0x1800220f8
mov ecx, 0x754c7fa7
call fcn.180011100
lea rcx, [0x18014ebd8]
mov qword [0x18014f2f8], rax
call fcn.1800ea0bc
mov rax, qword [0x18014f2f8]
mov rbx, qword [rax + rbx]
test rbx, rbx
je 0x180022232
mov rax, qword gs:[0x58]
mov rdx, qword [rax + rdi*8]
mov eax, dword [r15 + rdx]
cmp dword [0x18014ef48], eax
jle 0x180022157
lea rcx, [0x18014ef48]
call fcn.1800ea128
cmp dword [0x18014ef48], 0xffffffff
jne 0x180022157
mov ecx, 0xcf6c2c0b
call fcn.180011100
lea rcx, [0x18014ef48]
mov qword [0x18014eed8], rax
call fcn.1800ea0bc
mov rax, qword [0x18014eed8]
cmp dword [rbx + rax], 0x847b9bf0
jne 0x180022232
call fcn.180017620
mov rbx, rax
test rax, rax
je 0x1800221d8
mov rcx, qword gs:[0x58]
mov rdx, qword [rcx + rdi*8]
mov ecx, dword [r14 + rdx]
cmp dword [0x18014f2dc], ecx
jle 0x1800221c3
lea rcx, [0x18014f2dc]
call fcn.1800ea128
cmp dword [0x18014f2dc], 0xffffffff
jne 0x1800221c3
mov ecx, 0x43f29029
call fcn.180011100
lea rcx, [0x18014f2dc]
mov qword [0x18014f088], rax
call fcn.1800ea0bc
mov rax, qword [0x18014f088]
movss xmm0, dword [rbx + rax]
comiss xmm0, dword [0x18012dae0]
jae 0x180022232
call fcn.180017620
mov rcx, rax
call fcn.180048c80
mov rbx, rax
call fcn.180017620
mov rcx, rax
call fcn.180016c50
movss xmm0, dword [0x18014e3e0]
addss xmm0, dword [0x18012d5f0]
comiss xmm0, dword [rax]
jae 0x180022232
lea rdx, str.UseSelf
mov rcx, rbx
call fcn.180015190
call fcn.180017620
mov rcx, rax
call fcn.180016c50
movss xmm0, dword [rax]
movss dword [0x18014e3e0], xmm0
mov rsi, qword [rsp + 0x58]
mov r14, qword [rsp + 0x60]
cmp byte [0x18014e30f], 0
movd xmm7, dword [0x180143c04]
mov r15, qword [rsp + 0x68]
cvtdq2ps xmm7, xmm7
je 0x180022292
mov ecx, dword [0x18014e394]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180022292
call fcn.1800152f0
movss xmm6, dword [rax]
call fcn.1800152f0
movss xmm0, dword [0x18012da50]
subss xmm0, xmm6
mulss xmm0, dword [0x18012d514]
addss xmm0, xmm6
movss dword [rax], xmm0
jmp 0x1800222b4
call fcn.1800152f0
movss xmm6, dword [rax]
call fcn.1800152f0
subss xmm7, xmm6
mulss xmm7, dword [0x18012d514]
addss xmm7, xmm6
movss dword [rax], xmm7
movaps xmm7, xmmword [rsp + 0x20]
xor ebx, ebx
cmp byte [0x18014e372], bl
movabs rdi, 0x7fffffff0000
movaps xmm6, xmmword [rsp + 0x30]
je 0x18002232b
call fcn.180017620
add rax, 0x4e8
cmp rax, 0x40000
jbe 0x18002232b
lea rcx, [rax + 8]
cmp rcx, rdi
jae 0x18002232b
mov rcx, qword [rax]
mov rdx, rcx
lea r8, [rcx + 0xc4]
cmp r8, 0x40000
jbe 0x180022310
lea rax, [r8 + 4]
cmp rax, rdi
jae 0x180022310
mov dword [r8], ebx
lea rcx, [rdx + 0xc8]
cmp rcx, 0x40000
jbe 0x18002232b
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x18002232b
mov dword [rcx], ebx
cmp byte [0x18014e375], bl
je 0x18002236c
call fcn.180017620
lea rcx, [rax + 0x678]
cmp rcx, 0x40000
jbe 0x18002236c
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x180022355
mov ebx, dword [rcx]
jmp 0x180022367
cmp rcx, 0x40000
jbe 0x18002236c
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x18002236c
or ebx, 4
mov dword [rcx], ebx
cmp byte [0x18014e368], 0
mov rbx, qword [rsp + 0x50]
je 0x1800223df
call fcn.180017620
mov rcx, qword [0x18014e268]
add rcx, 0x31adef8
cmp rcx, 0x40000
jbe 0x1800223df
lea rax, [rcx + 8]
cmp rax, rdi
jae 0x1800223df
mov rcx, qword [rcx]
add rcx, 0xb8
cmp rcx, 0x40000
jbe 0x1800223df
lea rax, [rcx + 8]
cmp rax, rdi
jae 0x1800223df
mov rcx, qword [rcx]
cmp rcx, 0x40000
jbe 0x1800223df
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x1800223df
movd xmm0, dword [0x180143c00]
cvtdq2ps xmm0, xmm0
movss dword [rcx], xmm0
add rsp, 0x40
pop rdi
ret