Function at 0x180016db0
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbp
push rbx
push rdi
push r13
push r14
push r15
lea rbp, [rax - 0x38]
sub rsp, 0x108
mov r14, qword [0x1801afa68]
mov rdi, r8
movaps xmmword [rax - 0x48], xmm6
mov r13, rcx
movaps xmmword [rax - 0x58], xmm7
movaps xmmword [rax - 0x68], xmm8
movaps xmmword [rax - 0x78], xmm9
movaps xmmword [rax - 0x88], xmm10
movaps xmmword [rax - 0x98], xmm11
movaps xmmword [rax - 0xa8], xmm12
movaps xmmword [rax - 0xb8], xmm13
mov rax, qword [r14 + 0x1af0]
movaps xmmword [rsp + 0x70], xmm14
mov byte [rax + 0x80], 1
mov rbx, qword [r14 + 0x1af0]
cmp byte [rbx + 0x83], 0
jne 0x1800179a4
movsxd rax, dword [rbx + 0xc0]
xor edx, edx
mov r8, qword [rbx + 0xc8]
mov r8d, dword [r8 + rax*4 - 4]
call fcn.180026e00
mov r15d, eax
mov dword [rbp + 0x48], eax
cmp dword [r14 + 0x1b38], eax
jne 0x180016e66
mov dword [r14 + 0x1b3c], eax
cmp dword [r14 + 0x1b78], r15d
jne 0x180016e77
mov byte [r14 + 0x1b7c], 1
mov rcx, r13
cmp r13, 0xffffffffffffffff
jae 0x180016e9d
movzx edx, byte [rcx]
test dl, dl
je 0x180016e9d
lea rax, [rcx + 1]
cmp dl, 0x23
jne 0x180016e94
cmp byte [rax], dl
je 0x180016e9d
mov rcx, rax
cmp rax, 0xffffffffffffffff
jb 0x180016e80
movss xmm1, dword [r14 + 0x19a8]
xorps xmm12, xmm12
cmp r13, rcx
jne 0x180016eb5
xorps xmm14, xmm14
jmp 0x180016eff
movss xmm0, dword [0x18008da74]
lea rdx, [rbp + 0x58]
mov qword [rsp + 0x30], rcx
movaps xmm2, xmm1
mov rcx, qword [r14 + 0x19a0]
mov qword [rsp + 0x28], r13
movss dword [rsp + 0x20], xmm0
call fcn.180045fb0
movss xmm0, dword [rbp + 0x58]
addss xmm0, dword [0x18008d8c8]
movss xmm1, dword [rbp + 0x5c]
cvttss2si eax, xmm0
movd xmm14, eax
cvtdq2ps xmm14, xmm14
movss xmm3, dword [r14 + 0x1594]
mulss xmm3, dword [0x18008d938]
addss xmm3, xmm1
call fcn.180031760
mov rdx, qword [rdi]
lea rcx, [rbp + 0x58]
movaps xmm2, xmm0
call fcn.1800317d0
movss xmm6, dword [rbx + 0xd0]
lea rcx, [rsp + 0x60]
movss xmm10, dword [rbx + 0xd4]
movaps xmm13, xmm6
movaps xmm0, xmmword [0x18008dbc0]
movaps xmm11, xmm10
addss xmm13, dword [rbp + 0x58]
addss xmm11, dword [rbp + 0x5c]
movaps xmm9, xmm14
movss dword [rsp + 0x50], xmm6
addss xmm9, dword [r14 + 0x15a8]
movss dword [rsp + 0x54], xmm10
movss dword [rsp + 0x58], xmm13
movss dword [rsp + 0x5c], xmm11
movups xmmword [rsp + 0x60], xmm0
addss xmm9, xmm6
call fcn.180028090
movss xmm0, dword [r14 + 0x1598]
movaps xmm7, xmm13
unpcklps xmm7, xmm11
movaps xmm8, xmm9
unpcklps xmm8, xmm10
movq rdx, xmm7
movq rcx, xmm8
movss dword [rsp + 0x20], xmm0
mov r8d, eax
movsd qword [rsp + 0x68], xmm7
mov r9b, 1
movsd qword [rsp + 0x60], xmm8
call fcn.180028790
movaps xmm1, xmm11
lea rcx, [rsp + 0x40]
subss xmm1, xmm10
movaps xmm0, xmm13
subss xmm0, xmm6
movss dword [rsp + 0x44], xmm1
movss xmm1, dword [r14 + 0x1594]
movss dword [rsp + 0x40], xmm0
call fcn.180029930
xor r8d, r8d
lea rcx, [rsp + 0x50]
mov edx, r15d
call fcn.180029a60
test al, al
je 0x1800179a4
mov qword [rsp + 0x150], rsi
mov rcx, rbx
xor esi, esi
mov qword [rsp + 0x100], r12
cmp dword [r14 + 0x1b38], r15d
mov edx, esi
sete dl
call fcn.180029dd0
mov edx, r15d
lea rcx, [rsp + 0x60]
movzx edi, al
call fcn.180029c90
test al, al
je 0x180017098
mov rcx, qword [0x1801afa68]
mov dword [rcx + 0x1b24], r15d
mov byte [rcx + 0x1b28], sil
test r15d, r15d
je 0x18001707d
cmp dword [rcx + 0x1b2c], r15d
je 0x18001707d
mov qword [rcx + 0x1b30], rsi
lea rax, [r14 + 0x420]
mov dword [r14 + 0x1f78], 1
cmp byte [rax], sil
je 0x18001709f
mov cl, 1
jmp 0x1800170a1
lea rax, [r14 + 0x420]
xor cl, cl
test dil, dil
jne 0x1800170bf
test cl, cl
jne 0x1800170bf
cmp byte [rax], sil
je 0x180017105
cmp dword [r14 + 0x1b38], r15d
jne 0x180017105
call fcn.180029880
jmp 0x180017105
cmp dword [r14 + 0x1b38], r15d
je 0x1800170f2
xor eax, eax
lea rcx, [r14 + 0x14c]
mov dword [r14 + 0x138], eax
xor edx, edx
mov r8d, 0x200
mov byte [r14 + 0x13c], al
call sub.VCRUNTIME140.dll_memset
mov dword [0x1801ae6dc], esi
mov rdx, rbx
mov ecx, r15d
call fcn.1800297b0
mov rcx, rbx
call fcn.1800313b0
mov ebx, dword [0x1801ae6dc]
xor r12b, r12b
cmp dword [r14 + 0x1b38], r15d
jne 0x18001737e
mov r15d, 5
mov edi, esi
lea rsi, [r14 + 0x138]
lea r13d, [r15 + 1]
nop
cmp byte [rsi], 0
jne 0x180017160
mov ecx, r15d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x180017160
mov ecx, r13d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x180017160
mov rdx, qword [0x1801afa68]
xor r10d, r10d
jmp 0x180017200
mov ecx, edi
test edi, edi
je 0x18001717c
sub ecx, 1
je 0x180017175
cmp ecx, 1
jne 0x180017181
lea ebx, [rcx + 3]
jmp 0x180017181
mov ebx, 2
jmp 0x180017181
mov ebx, 1
mov ecx, r13d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
mov ecx, r15d
cmovne ebx, r13d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov rdx, qword [0x1801afa68]
mov r12b, 1
test ax, ax
cmovne ebx, r15d
mov ecx, dword [rdx + 0x1b38]
test ecx, ecx
setne al
xor r10d, r10d
mov byte [rdx + 0x1b44], al
test ecx, ecx
je 0x1800171d2
mov dword [rdx + 0x1b40], r10d
mov word [rdx + 0x1b46], r10w
mov dword [rdx + 0x1b38], r10d
mov byte [rdx + 0x1b45], 0
mov qword [rdx + 0x1b68], r10
mov byte [rdx + 0x1b48], 0
mov qword [rdx + 0x1b4c], 0
mov qword [rdx + 0x1b58], r10
inc edi
inc rsi
cmp edi, r13d
jle 0x180017130
mov r15d, dword [rbp + 0x48]
mov r13, qword [rbp + 0x40]
test r12b, r12b
jne 0x180017305
mov r8d, 8
lea r9, [r14 + 0x155]
nop dword [rax]
cmp byte [r9 - 1], 0
je 0x180017290
mov ecx, dword [rdx + 0x1b38]
mov ebx, r8d
test ecx, ecx
mov r12b, 1
setne al
mov byte [rdx + 0x1b44], al
test ecx, ecx
je 0x180017262
mov dword [rdx + 0x1b40], r10d
mov word [rdx + 0x1b46], 0
mov dword [rdx + 0x1b38], r10d
mov byte [rdx + 0x1b45], 0
mov qword [rdx + 0x1b68], r10
mov byte [rdx + 0x1b48], 0
mov qword [rdx + 0x1b4c], 0
mov qword [rdx + 0x1b58], r10
cmp byte [r9], 0
je 0x1800172f0
mov ecx, dword [rdx + 0x1b38]
lea ebx, [r8 + 1]
test ecx, ecx
mov r12b, 1
setne al
mov byte [rdx + 0x1b44], al
test ecx, ecx
je 0x1800172c2
mov dword [rdx + 0x1b40], r10d
mov word [rdx + 0x1b46], 0
mov dword [rdx + 0x1b38], r10d
mov byte [rdx + 0x1b45], 0
mov qword [rdx + 0x1b68], r10
mov byte [rdx + 0x1b48], 0
mov qword [rdx + 0x1b4c], 0
mov qword [rdx + 0x1b58], r10
add r8d, 2
add r9, 2
cmp r8d, 0xa5
jle 0x180017230
movsxd rax, dword [rdx + 0x74]
test eax, eax
js 0x180017378
movss xmm0, dword [rdx + rax*4 + 0x4a0]
ucomiss xmm0, xmm12
jne 0x180017378
mov dword [0x1801ae6dc], r10d
mov ecx, dword [rdx + 0x1b38]
test ecx, ecx
setne al
mov byte [rdx + 0x1b44], al
test ecx, ecx
je 0x180017348
mov dword [rdx + 0x1b40], r10d
mov word [rdx + 0x1b46], 0
mov dword [rdx + 0x1b38], r10d
mov byte [rdx + 0x1b45], 0
mov qword [rdx + 0x1b68], r10
mov byte [rdx + 0x1b48], 0
mov qword [rdx + 0x1b4c], 0
mov qword [rdx + 0x1b58], r10
jmp 0x18001737e
mov dword [0x1801ae6dc], ebx
movaps xmm0, xmmword [0x18008dbd0]
lea rcx, [rsp + 0x60]
movups xmmword [rsp + 0x60], xmm0
lea rsi, str.None
call fcn.180028090
movss xmm0, dword [r14 + 0x1598]
mov r8d, eax
mov r9b, 1
movss dword [rsp + 0x20], xmm0
movq rdx, xmm7
movq rcx, xmm8
call fcn.180028790
mov eax, dword [0x1801ae6dc]
test eax, eax
je 0x180017734
cmp dword [r14 + 0x1b38], r15d
je 0x180017741
dec eax
cmp eax, 0x9f
ja case.0x180017402.3
lea rdx, [0x180000000]
cdqe
movzx eax, byte [rdx + rax + 0x17afc]
mov ecx, dword [rdx + rax*4 + 0x179ec]
add rcx, rdx
jmp rcx
lea rsi, str.control
jmp 0x18001786f
lea rsi, str.shift
jmp 0x18001786f
lea rsi, [0x180061878]
jmp 0x18001786f
lea rsi, [0x18006187c]
jmp 0x18001786f
lea rsi, str.mouse_1
jmp 0x18001786f
lea rsi, str.mouse_2
jmp 0x18001786f
lea rsi, str.mouse_3
jmp 0x18001786f
lea rsi, str.mouse_4
jmp 0x18001786f
lea rsi, str.mouse_5
jmp 0x18001786f
lea rsi, str.page_up
jmp 0x18001786f
lea rsi, str.page_down
jmp 0x18001786f
lea rsi, [0x1800618bc]
jmp 0x18001786f
lea rsi, str.home
jmp 0x18001786f
lea rsi, str.left_arrow
jmp 0x18001786f
lea rsi, str.up_arrow
jmp 0x18001786f
lea rsi, str.right_arrow
jmp 0x18001786f
lea rsi, str.down_arrow
jmp 0x18001786f
lea rsi, str.insert
jmp 0x18001786f
lea rsi, str.delete
jmp 0x18001786f
lea rsi, str.abcdefghijklmnopqrstuvwxyz
jmp 0x18001786f
lea rsi, [0x180061918]
jmp 0x18001786f
lea rsi, [0x18006191c]
jmp 0x18001786f
lea rsi, [0x180061920]
jmp 0x18001786f
lea rsi, [0x180061924]
jmp 0x18001786f
lea rsi, [0x180061928]
jmp 0x18001786f
lea rsi, [0x18006192c]
jmp 0x18001786f
lea rsi, [0x180061930]
jmp 0x18001786f
lea rsi, [0x180061934]
jmp 0x18001786f
lea rsi, [0x180061938]
jmp 0x18001786f
lea rsi, [0x18006193c]
jmp 0x18001786f
lea rsi, [0x180061940]
jmp 0x18001786f
lea rsi, [0x180061944]
jmp 0x18001786f
lea rsi, [0x180061948]
jmp 0x18001786f
lea rsi, [0x18006194c]
jmp 0x18001786f
lea rsi, [0x180061950]
jmp 0x18001786f
lea rsi, [0x180061954]
jmp 0x18001786f
lea rsi, [0x180061958]
jmp 0x18001786f
lea rsi, [0x18006195c]
jmp 0x18001786f
lea rsi, [0x180061960]
jmp 0x18001786f
lea rsi, [0x180061964]
jmp 0x18001786f
lea rsi, [0x180061968]
jmp 0x18001786f
lea rsi, [0x18006196c]
jmp 0x18001786f
lea rsi, [0x180061970]
jmp 0x18001786f
lea rsi, [0x180061974]
jmp 0x18001786f
lea rsi, [0x180061978]
jmp 0x18001786f
lea rsi, str.numpad_0
jmp 0x18001786f
lea rsi, str.numpad_1
jmp 0x18001786f
lea rsi, str.numpad_2
jmp 0x18001786f
lea rsi, str.numpad_3
jmp 0x18001786f
lea rsi, str.numpad_4
jmp 0x18001786f
lea rsi, str.numpad_5
jmp 0x18001786f
lea rsi, str.numpad_6
jmp 0x18001786f
lea rsi, str.numpad_7
jmp 0x18001786f
lea rsi, str.numpad_8
jmp 0x18001786f
lea rsi, str.numpad_9
jmp 0x18001786f
lea rsi, [0x180061a1c]
jmp 0x18001786f
lea rsi, [0x180061a20]
jmp 0x18001786f
lea rsi, [0x180061a24]
jmp 0x18001786f
lea rsi, [0x180061a28]
jmp 0x18001786f
lea rsi, [0x180061a2c]
jmp 0x18001786f
lea rsi, [0x180061a30]
jmp 0x18001786f
lea rsi, [0x180061a34]
jmp 0x18001786f
lea rsi, [0x180061a38]
jmp 0x18001786f
lea rsi, [0x180061a3c]
jmp 0x18001786f
lea rsi, [0x180061a40]
jmp 0x18001786f
lea rsi, [0x180061a44]
jmp 0x18001786f
lea rsi, [0x180061a48]
jmp 0x18001786f
lea rsi, str.unknown
jmp 0x18001786f
cmp dword [r14 + 0x1b38], r15d
jne 0x18001786f
lea rsi, str.Press
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x180017766
imul rax, rax, 0x64
jmp 0x180017784
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
movabs rcx, 0x7ffffffffb3b4bff
lea rdi, [rax + 0x4c4b400]
cmp rax, rcx
jl 0x1800177a4
movabs rdi, 0x7fffffffffffffff
movsd xmm6, qword [0x18008d9e0]
movabs r15, 0x311cdad160000
movabs r13, 0x112e0be826d694b3
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x1800177de
imul rax, rax, 0x64
jmp 0x1800177fc
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
cmp rax, rdi
jge 0x18001786b
mov rbx, rdi
sub rbx, rax
call qword [sym.imp.MSVCP140.dll__Xtime_get_ticks]
imul rdx, rax, 0x64
xorps xmm0, xmm0
cvtsi2sd xmm0, rbx
comisd xmm0, xmm6
lea rcx, [rdx + r15]
ja 0x180017827
lea rcx, [rdx + rbx]
lea rax, [rdx + rbx]
add rdx, r15
comisd xmm0, xmm6
cmovbe rdx, rax
mov rax, r13
imul rdx
sar rdx, 0x1a
mov rax, rdx
shr rax, 0x3f
add rdx, rax
imul eax, edx, 0x3b9aca00
mov qword [rsp + 0x60], rdx
sub ecx, eax
mov dword [rsp + 0x68], ecx
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll__Thrd_sleep]
jmp 0x1800177c0
mov r13, qword [rbp + 0x40]
movss xmm1, dword [r14 + 0x1594]
movaps xmm0, xmm9
movss dword [rsp + 0x40], xmm9
mov rdi, rsi
movss dword [rsp + 0x4c], xmm11
subss xmm11, xmm1
movss dword [rsp + 0x44], xmm10
addss xmm0, dword [rbp + 0x58]
movss dword [rbp + 0x5c], xmm11
movss dword [rsp + 0x48], xmm0
movss xmm0, dword [r14 + 0x1590]
subss xmm13, xmm0
addss xmm9, xmm0
movaps xmm0, xmm10
addss xmm0, xmm1
movss dword [rbp + 0x58], xmm13
movss dword [rbp + 0x48], xmm9
movss dword [rbp + 0x4c], xmm0
cmp rsi, 0xffffffffffffffff
jae 0x1800178fd
nop dword [rax]
movzx ecx, byte [rdi]
test cl, cl
je 0x1800178fd
lea rax, [rdi + 1]
cmp cl, 0x23
jne 0x1800178f4
cmp byte [rax], cl
je 0x1800178fd
mov rdi, rax
cmp rax, 0xffffffffffffffff
jb 0x1800178e0
cmp edi, esi
je 0x180017962
mov rbx, qword [0x1801afa68]
lea rdx, [rsp + 0x40]
mov qword [rsp + 0x38], rdx
lea rax, [r14 + 0x15dc]
mov qword [rsp + 0x30], rax
lea r8, [rbp + 0x58]
mov qword [rsp + 0x28], 0
lea rdx, [rbp + 0x48]
mov rcx, qword [rbx + 0x1af0]
mov r9, rsi
mov qword [rsp + 0x20], rdi
mov rcx, qword [rcx + 0x2b0]
call fcn.180028300
cmp byte [rbx + 0x3008], 0
je 0x180017962
mov r8, rdi
lea rcx, [rbp + 0x48]
mov rdx, rsi
call fcn.1800376c0
comiss xmm14, xmm12
mov rsi, qword [rsp + 0x150]
jbe 0x180017996
addss xmm10, dword [r14 + 0x1594]
movss xmm0, dword [rsp + 0x50]
mov r9b, 1
xor r8d, r8d
mov rdx, r13
unpcklps xmm0, xmm10
movq rcx, xmm0
call fcn.180028170
movzx eax, r12b
mov r12, qword [rsp + 0x100]
jmp 0x1800179a6
xor al, al
movaps xmm14, xmmword [rsp + 0x70]
lea r11, [rsp + 0x108]
movaps xmm6, xmmword [r11 - 0x18]
movaps xmm7, xmmword [r11 - 0x28]
movaps xmm8, xmmword [r11 - 0x38]
movaps xmm9, xmmword [r11 - 0x48]
movaps xmm10, xmmword [r11 - 0x58]
movaps xmm11, xmmword [r11 - 0x68]
movaps xmm12, xmmword [r11 - 0x78]
movaps xmm13, xmmword [r11 - 0x88]
mov rsp, r11
pop r15
pop r14
pop r13
pop rdi
pop rbx
pop rbp
ret