Function at 0x180021f90
Capabilities:
Log keystrokes via polling

Disassembly:
push rdi
sub rsp, 0x40
movss xmm0, dword [0x1801d53d8]
mov edi, dword [0x1801d50e0]
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 0x180022032
call fcn.180016e10
mov rbx, rax
test rax, rax
je 0x18002202a
mov rax, qword gs:[0x58]
mov rcx, qword [rax + rdi*8]
mov eax, dword [r15 + rcx]
cmp dword [0x1801d5ce8], eax
jle 0x18002201e
lea rcx, [0x1801d5ce8]
call fcn.1800ebff8
cmp dword [0x1801d5ce8], 0xffffffff
jne 0x18002201e
mov ecx, 0xc566d10
call fcn.180010850
lea rcx, [0x1801d5ce8]
mov qword [0x1801d5b48], rax
call fcn.1800ebf8c
mov rax, qword [0x1801d5b48]
movss xmm6, dword [rax + rbx]
movss dword [0x1801d53d8], xmm6
call fcn.180016e10
mov rcx, rax
call fcn.180016d20
cmp byte [0x1801d5360], 0
mov rbx, rax
je 0x1800222bc
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x60], r14
test rax, rax
je 0x180022121
mov rcx, qword gs:[0x58]
mov rdx, qword [rcx + rdi*8]
mov ecx, dword [r15 + rdx]
cmp dword [0x1801d5bd8], ecx
jle 0x1800220ad
lea rcx, [0x1801d5bd8]
call fcn.1800ebff8
cmp dword [0x1801d5bd8], 0xffffffff
jne 0x1800220ad
mov ecx, 0x754c7fa7
call fcn.180010850
lea rcx, [0x1801d5bd8]
mov qword [0x1801d6348], rax
call fcn.1800ebf8c
mov rax, qword [0x1801d6348]
mov rsi, qword [rax + rbx]
test rsi, rsi
je 0x180022121
mov rax, qword gs:[0x58]
mov rcx, qword [rax + rdi*8]
mov eax, dword [r15 + rcx]
cmp dword [0x1801d5f58], eax
jle 0x180022108
lea rcx, [0x1801d5f58]
call fcn.1800ebff8
cmp dword [0x1801d5f58], 0xffffffff
jne 0x180022108
mov ecx, 0xcf6c2c0b
call fcn.180010850
lea rcx, [0x1801d5f58]
mov qword [0x1801d5ee8], rax
call fcn.1800ebf8c
mov rax, qword [0x1801d5ee8]
mov r14, r15
cmp dword [rsi + rax], 0x40547fde
je 0x1800221eb
jmp 0x180022124
mov r14, r15
test rbx, rbx
je 0x1800222b2
mov rax, qword gs:[0x58]
mov rdx, qword [rax + rdi*8]
mov eax, dword [r15 + rdx]
cmp dword [0x1801d5bd8], eax
jle 0x180022178
lea rcx, [0x1801d5bd8]
call fcn.1800ebff8
cmp dword [0x1801d5bd8], 0xffffffff
jne 0x180022178
mov ecx, 0x754c7fa7
call fcn.180010850
lea rcx, [0x1801d5bd8]
mov qword [0x1801d6348], rax
call fcn.1800ebf8c
mov rax, qword [0x1801d6348]
mov rbx, qword [rax + rbx]
test rbx, rbx
je 0x1800222b2
mov rax, qword gs:[0x58]
mov rdx, qword [rax + rdi*8]
mov eax, dword [r15 + rdx]
cmp dword [0x1801d5f58], eax
jle 0x1800221d7
lea rcx, [0x1801d5f58]
call fcn.1800ebff8
cmp dword [0x1801d5f58], 0xffffffff
jne 0x1800221d7
mov ecx, 0xcf6c2c0b
call fcn.180010850
lea rcx, [0x1801d5f58]
mov qword [0x1801d5ee8], rax
call fcn.1800ebf8c
mov rax, qword [0x1801d5ee8]
cmp dword [rbx + rax], 0x847b9bf0
jne 0x1800222b2
call fcn.180016e10
mov rbx, rax
test rax, rax
je 0x180022258
mov rcx, qword gs:[0x58]
mov rdx, qword [rcx + rdi*8]
mov ecx, dword [r14 + rdx]
cmp dword [0x1801d632c], ecx
jle 0x180022243
lea rcx, [0x1801d632c]
call fcn.1800ebff8
cmp dword [0x1801d632c], 0xffffffff
jne 0x180022243
mov ecx, 0x43f29029
call fcn.180010850
lea rcx, [0x1801d632c]
mov qword [0x1801d60a0], rax
call fcn.1800ebf8c
mov rax, qword [0x1801d60a0]
movss xmm0, dword [rbx + rax]
comiss xmm0, dword [0x18012f944]
jae 0x1800222b2
call fcn.180016e10
mov rcx, rax
call fcn.18004a990
mov rbx, rax
call fcn.180016e10
mov rcx, rax
call fcn.1800163c0
movss xmm0, dword [0x1801d53d8]
addss xmm0, dword [0x18012f6dc]
comiss xmm0, dword [rax]
jae 0x1800222b2
lea rdx, str.UseSelf
mov rcx, rbx
call fcn.1800148e0
call fcn.180016e10
mov rcx, rax
call fcn.1800163c0
movss xmm0, dword [rax]
movss dword [0x1801d53d8], xmm0
mov rsi, qword [rsp + 0x58]
mov r14, qword [rsp + 0x60]
cmp byte [0x1801d5302], 0
movd xmm7, dword [0x180172140]
mov r15, qword [rsp + 0x68]
cvtdq2ps xmm7, xmm7
je 0x180022312
mov ecx, dword [0x1801d5390]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180022312
call fcn.180014a40
movss xmm6, dword [rax]
call fcn.180014a40
movss xmm0, dword [0x18012f8c8]
subss xmm0, xmm6
mulss xmm0, dword [0x18012f674]
addss xmm0, xmm6
movss dword [rax], xmm0
jmp 0x180022334
call fcn.180014a40
movss xmm6, dword [rax]
call fcn.180014a40
subss xmm7, xmm6
mulss xmm7, dword [0x18012f674]
addss xmm7, xmm6
movss dword [rax], xmm7
movaps xmm7, xmmword [rsp + 0x20]
xor ebx, ebx
cmp byte [0x1801d5368], bl
movabs rdi, 0x7fffffff0000
movaps xmm6, xmmword [rsp + 0x30]
je 0x1800223ab
call fcn.180016e10
add rax, 0x4e8
cmp rax, 0x40000
jbe 0x1800223ab
lea rcx, [rax + 8]
cmp rcx, rdi
jae 0x1800223ab
mov rcx, qword [rax]
mov rdx, rcx
lea r8, [rcx + 0xc4]
cmp r8, 0x40000
jbe 0x180022390
lea rax, [r8 + 4]
cmp rax, rdi
jae 0x180022390
mov dword [r8], ebx
lea rcx, [rdx + 0xc8]
cmp rcx, 0x40000
jbe 0x1800223ab
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x1800223ab
mov dword [rcx], ebx
cmp byte [0x1801d536b], bl
je 0x1800223ec
call fcn.180016e10
lea rcx, [rax + 0x678]
cmp rcx, 0x40000
jbe 0x1800223ec
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x1800223d5
mov ebx, dword [rcx]
jmp 0x1800223e7
cmp rcx, 0x40000
jbe 0x1800223ec
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x1800223ec
or ebx, 4
mov dword [rcx], ebx
cmp byte [0x1801d535a], 0
mov rbx, qword [rsp + 0x50]
je 0x18002245f
call fcn.180016e10
mov rcx, qword [0x1801d5250]
add rcx, 0x31adef8
cmp rcx, 0x40000
jbe 0x18002245f
lea rax, [rcx + 8]
cmp rax, rdi
jae 0x18002245f
mov rcx, qword [rcx]
add rcx, 0xb8
cmp rcx, 0x40000
jbe 0x18002245f
lea rax, [rcx + 8]
cmp rax, rdi
jae 0x18002245f
mov rcx, qword [rcx]
cmp rcx, 0x40000
jbe 0x18002245f
lea rax, [rcx + 4]
cmp rax, rdi
jae 0x18002245f
movd xmm0, dword [0x180172034]
cvtdq2ps xmm0, xmm0
movss dword [rcx], xmm0
add rsp, 0x40
pop rdi
ret