Function at 0x180021d40
Capabilities:
Log keystrokes via polling

Disassembly:
push rdi
sub rsp, 0x40
movss xmm0, dword [0x18016bb48]
mov edi, dword [0x18016b860]
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 0x180021de2
call fcn.180016e80
mov rbx, rax
test rax, rax
je 0x180021dda
mov rax, qword gs:[0x58]
mov rcx, qword [rax + rdi*8]
mov eax, dword [r15 + rcx]
cmp dword [0x18016c458], eax
jle 0x180021dce
lea rcx, [0x18016c458]
call fcn.1800eb6d8
cmp dword [0x18016c458], 0xffffffff
jne 0x180021dce
mov ecx, 0xc566d10
call fcn.180010850
lea rcx, [0x18016c458]
mov qword [0x18016c2b8], rax
call fcn.1800eb66c
mov rax, qword [0x18016c2b8]
movss xmm6, dword [rax + rbx]
movss dword [0x18016bb48], xmm6
call fcn.180016e80
mov rcx, rax
call fcn.180016d90
cmp byte [0x18016bad8], 0
mov rbx, rax
je 0x18002206c
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x60], r14
test rax, rax
je 0x180021ed1
mov rcx, qword gs:[0x58]
mov rdx, qword [rcx + rdi*8]
mov ecx, dword [r15 + rdx]
cmp dword [0x18016c348], ecx
jle 0x180021e5d
lea rcx, [0x18016c348]
call fcn.1800eb6d8
cmp dword [0x18016c348], 0xffffffff
jne 0x180021e5d
mov ecx, 0x754c7fa7
call fcn.180010850
lea rcx, [0x18016c348]
mov qword [0x18016cab8], rax
call fcn.1800eb66c
mov rax, qword [0x18016cab8]
mov rsi, qword [rax + rbx]
test rsi, rsi
je 0x180021ed1
mov rax, qword gs:[0x58]
mov rcx, qword [rax + rdi*8]
mov eax, dword [r15 + rcx]
cmp dword [0x18016c6c8], eax
jle 0x180021eb8
lea rcx, [0x18016c6c8]
call fcn.1800eb6d8
cmp dword [0x18016c6c8], 0xffffffff
jne 0x180021eb8
mov ecx, 0xcf6c2c0b
call fcn.180010850
lea rcx, [0x18016c6c8]
mov qword [0x18016c658], rax
call fcn.1800eb66c
mov rax, qword [0x18016c658]
mov r14, r15
cmp dword [rsi + rax], 0x40547fde
je 0x180021f9b
jmp 0x180021ed4
mov r14, r15
test rbx, rbx
je 0x180022062
mov rax, qword gs:[0x58]
mov rdx, qword [rax + rdi*8]
mov eax, dword [r15 + rdx]
cmp dword [0x18016c348], eax
jle 0x180021f28
lea rcx, [0x18016c348]
call fcn.1800eb6d8
cmp dword [0x18016c348], 0xffffffff
jne 0x180021f28
mov ecx, 0x754c7fa7
call fcn.180010850
lea rcx, [0x18016c348]
mov qword [0x18016cab8], rax
call fcn.1800eb66c
mov rax, qword [0x18016cab8]
mov rbx, qword [rax + rbx]
test rbx, rbx
je 0x180022062
mov rax, qword gs:[0x58]
mov rdx, qword [rax + rdi*8]
mov eax, dword [r15 + rdx]
cmp dword [0x18016c6c8], eax
jle 0x180021f87
lea rcx, [0x18016c6c8]
call fcn.1800eb6d8
cmp dword [0x18016c6c8], 0xffffffff
jne 0x180021f87
mov ecx, 0xcf6c2c0b
call fcn.180010850
lea rcx, [0x18016c6c8]
mov qword [0x18016c658], rax
call fcn.1800eb66c
mov rax, qword [0x18016c658]
cmp dword [rbx + rax], 0x847b9bf0
jne 0x180022062
call fcn.180016e80
mov rbx, rax
test rax, rax
je 0x180022008
mov rcx, qword gs:[0x58]
mov rdx, qword [rcx + rdi*8]
mov ecx, dword [r14 + rdx]
cmp dword [0x18016ca9c], ecx
jle 0x180021ff3
lea rcx, [0x18016ca9c]
call fcn.1800eb6d8
cmp dword [0x18016ca9c], 0xffffffff
jne 0x180021ff3
mov ecx, 0x43f29029
call fcn.180010850
lea rcx, [0x18016ca9c]
mov qword [0x18016c810], rax
call fcn.1800eb66c
mov rax, qword [0x18016c810]
movss xmm0, dword [rbx + rax]
comiss xmm0, dword [0x18012e934]
jae 0x180022062
call fcn.180016e80
mov rcx, rax
call fcn.18004a070
mov rbx, rax
call fcn.180016e80
mov rcx, rax
call fcn.180016430
movss xmm0, dword [0x18016bb48]
addss xmm0, dword [0x18012e6ec]
comiss xmm0, dword [rax]
jae 0x180022062
lea rdx, str.UseSelf
mov rcx, rbx
call fcn.180014970
call fcn.180016e80
mov rcx, rax
call fcn.180016430
movss xmm0, dword [rax]
movss dword [0x18016bb48], xmm0
mov rsi, qword [rsp + 0x58]
mov r14, qword [rsp + 0x60]
cmp byte [0x18016ba7a], 0
movd xmm7, dword [0x18014e3c0]
mov r15, qword [rsp + 0x68]
cvtdq2ps xmm7, xmm7
je 0x1800220c2
mov ecx, dword [0x18016bb04]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1800220c2
call fcn.180014ad0
movss xmm6, dword [rax]
call fcn.180014ad0
movss xmm0, dword [0x18012e8b8]
subss xmm0, xmm6
mulss xmm0, dword [0x18012e684]
addss xmm0, xmm6
movss dword [rax], xmm0
jmp 0x1800220e4
call fcn.180014ad0
movss xmm6, dword [rax]
call fcn.180014ad0
subss xmm7, xmm6
mulss xmm7, dword [0x18012e684]
addss xmm7, xmm6
movss dword [rax], xmm7
movaps xmm7, xmmword [rsp + 0x20]
xor ebx, ebx
cmp byte [0x18016bae0], bl
movabs rdi, 0x7fffffff0000
movaps xmm6, xmmword [rsp + 0x30]
je 0x18002215b
call fcn.180016e80
add rax, 0x4e8
cmp rax, 0x40000
jbe 0x18002215b
lea rcx, [rax + 8]
cmp rcx, rdi
jae 0x18002215b
mov rcx, qword [rax]
mov rdx, rcx
lea r8, [rcx + 0xc4]
cmp r8, 0x40000
jbe 0x180022140
lea rax, [r8 + 4]
cmp rax, rdi
jae 0x180022140
mov dword [r8], ebx
lea rcx, [rdx + 0xc8]
cmp rcx, 0x40000
jbe 0x18002215b
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x18002215b
mov dword [rcx], ebx
cmp byte [0x18016bae3], bl
je 0x18002219c
call fcn.180016e80
lea rcx, [rax + 0x678]
cmp rcx, 0x40000
jbe 0x18002219c
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x180022185
mov ebx, dword [rcx]
jmp 0x180022197
cmp rcx, 0x40000
jbe 0x18002219c
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x18002219c
or ebx, 4
mov dword [rcx], ebx
cmp byte [0x18016bad2], 0
mov rbx, qword [rsp + 0x50]
je 0x18002220f
call fcn.180016e80
mov rcx, qword [0x18016b9c8]
add rcx, 0x31adef8
cmp rcx, 0x40000
jbe 0x18002220f
lea rax, [rcx + 8]
cmp rax, rdi
jae 0x18002220f
mov rcx, qword [rcx]
add rcx, 0xb8
cmp rcx, 0x40000
jbe 0x18002220f
lea rax, [rcx + 8]
cmp rax, rdi
jae 0x18002220f
mov rcx, qword [rcx]
cmp rcx, 0x40000
jbe 0x18002220f
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x18002220f
movd xmm0, dword [0x18014e2b4]
cvtdq2ps xmm0, xmm0
movss dword [rcx], xmm0
add rsp, 0x40
pop rdi
ret