Function at 0x1800205b0
Capabilities:
Log keystrokes via polling

Disassembly:
push rdi
sub rsp, 0x50
mov rax, qword [0x18021ed38]
mov rdi, qword [rax]
test rdi, rdi
je 0x1800208fb
mov rdi, qword [rdi + 8]
test rdi, rdi
je 0x1800208fb
mov rax, qword [0x18021ed70]
mov qword [rsp + 0x70], rbp
mov rbp, qword [rax + rdi]
test rbp, rbp
je 0x1800208f6
cmp byte [0x18021edc1], 0
movss xmm1, dword [0x1800b71d0]
mov qword [rsp + 0x68], rbx
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x40], r15
je 0x180020628
comiss xmm1, dword [rdi + 0x280]
jbe 0x180020628
movss xmm0, dword [rdi + 0x2a0]
movss dword [rdi + 0x280], xmm0
cmp byte [0x18021edc2], 0
je 0x18002064e
mov rax, qword [0x18021ed58]
comiss xmm1, dword [rax + rdi]
jbe 0x18002064e
movd xmm0, dword [0x180183508]
cvtdq2ps xmm0, xmm0
movss dword [rax + rdi], xmm0
movzx eax, byte [0x18021edd4]
test al, al
je 0x18002066a
mov edx, eax
movabs rcx, 0xfc18db55ae19e046
call fcn.180002550
xor r15d, r15d
mov qword [rsp + 0x78], rsi
cmp byte [0x18021edc9], r15b
movabs rsi, 0xd80958fc74e988a6
mov r14, rsi
mov ebx, r15d
jne 0x18002068f
lea ebx, [r15 + 1]
mov rcx, r14
call fcn.180001e20
mov edx, eax
mov r8d, ebx
movabs rcx, 0xebd76f2359f190ac
call fcn.180002620
mov ebx, r15d
mov rcx, r14
cmp byte [0x18021edc8], bl
sete bl
call fcn.180001e20
mov edx, eax
xor r9d, r9d
mov r8d, ebx
movabs rcx, 0xea1c610a04db6bbb
call fcn.180002710
cmp byte [0x18021edc0], r15b
setne al
mov byte [rdi + 0x189], al
movzx ecx, byte [0x18021edcc]
mov r14, qword [rsp + 0x48]
test cl, cl
jne 0x180020703
mov rax, qword [0x18021eda8]
cmp byte [rax + rdi], 0x40
jne 0x180020714
test cl, cl
mov eax, 0x20
cmovne eax, r15d
mov byte [rdi + 0x10b8], al
cmp byte [0x18021edc6], 0
mov r15, qword [rsp + 0x40]
je 0x18002072f
movd xmm0, dword [0x180183500]
cvtdq2ps xmm0, xmm0
jmp 0x180020737
movss xmm0, dword [0x1800b713c]
movss dword [rbp + 0xcf0], xmm0
cmp byte [0x18021edca], 0
je 0x180020776
mov rax, qword [0x18021ed48]
test rax, rax
je 0x180020759
mov rax, qword [rax]
jmp 0x18002075e
mov rax, qword [rsp + 0x60]
mov rax, qword [rax + 0x10]
movss xmm0, dword [0x18018351c]
movss dword [rax + 0x30], xmm0
mov byte [0x18021edca], 0
cmp byte [0x18021edcb], 0
je 0x1800207fb
mov rcx, rsi
call fcn.180001e20
mov edx, 8
movabs rcx, 0x1bede233e6cd2a1f
mov ebp, eax
call fcn.180001ec0
mov edx, eax
movabs rcx, 0xa6db27d19ecbb7da
mov ebx, eax
call fcn.180001ec0
test eax, eax
je 0x1800207f4
mov r8d, ebx
lea rcx, [rsp + 0x30]
movabs rdx, 0x586afe3ff72d996e
call fcn.180002460
movss xmm0, dword [rsp + 0x38]
mov edx, ebp
movss xmm3, dword [rsp + 0x34]
movabs rcx, 0x9afeff481a85ab2e
movss xmm2, dword [rsp + 0x30]
movss dword [rsp + 0x20], xmm0
call fcn.180002940
mov byte [0x18021edcb], 1
cmp byte [0x18021edd5], 0
mov rbx, qword [rsp + 0x68]
je 0x180020836
mov rcx, rsi
call fcn.180001e20
movzx ecx, byte [0x18021edd5]
mov r9d, 1
mov dword [rsp + 0x20], ecx
xor r8d, r8d
movabs rcx, 0xae4086104e067b1
mov edx, eax
call fcn.180002820
cmp byte [0x18021edc3], 0
mov rsi, qword [rsp + 0x78]
je 0x180020863
mov eax, dword [str.ddyzWS]
add eax, 0x64
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [rdi + 0x280], xmm0
mov byte [0x18021edc3], 0
cmp byte [0x18021edc4], 0
je 0x18002088a
movd xmm0, dword [0x180183508]
mov rax, qword [0x18021ed58]
cvtdq2ps xmm0, xmm0
movss dword [rax + rdi], xmm0
mov byte [0x18021edc4], 0
mov ecx, dword [0x18018350c]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x1800208a2
mov byte [0x18021edc3], 1
mov ecx, dword [0x180183510]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x1800208ba
mov byte [0x18021edc4], 1
mov ecx, dword [0x18021f164]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x1800208d8
cmp byte [0x18021edc7], 0
sete byte [0x18021edc7]
mov ecx, dword [0x18021f168]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x1800208f6
cmp byte [0x18021f160], 0
sete byte [0x18021f160]
mov rbp, qword [rsp + 0x70]
add rsp, 0x50
pop rdi
ret