Function at 0x18000a140
Capabilities:
Log keystrokes via polling

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r14
push r15
lea rbp, [rax - 0x5f]
sub rsp, 0xd8
mov r14, qword [0x180080a88]
mov rdi, r8
movaps xmmword [rax - 0x48], xmm7
movaps xmmword [rax - 0x58], xmm8
movaps xmmword [rax - 0x68], xmm9
movaps xmmword [rax - 0x78], xmm10
movaps xmmword [rax - 0x88], xmm11
mov rax, qword [r14 + 0x1af0]
movaps xmmword [rsp + 0x70], xmm12
mov qword [rbp - 0x69], r14
mov byte [rax + 0x80], 1
mov rbx, qword [r14 + 0x1af0]
cmp byte [rbx + 0x83], 0
jne 0x18000acd1
movsxd rax, dword [rbx + 0xc0]
lea rsi, str.clear_button
mov r8, qword [rbx + 0xc8]
xor edx, edx
mov rcx, rsi
mov r8d, dword [r8 + rax*4 - 4]
call fcn.180014b90
mov r15d, eax
mov dword [rbp + 0x6f], eax
cmp dword [r14 + 0x1b38], eax
jne 0x18000a1e9
mov dword [r14 + 0x1b3c], eax
cmp dword [r14 + 0x1b78], r15d
jne 0x18000a1fa
mov byte [r14 + 0x1b7c], 1
mov rcx, rsi
cmp rsi, 0xffffffffffffffff
jae 0x18000a220
movzx edx, byte [rcx]
test dl, dl
je 0x18000a220
lea rax, [rcx + 1]
cmp dl, 0x23
jne 0x18000a217
cmp byte [rax], dl
je 0x18000a220
mov rcx, rax
cmp rax, 0xffffffffffffffff
jb 0x18000a203
movss xmm1, dword [r14 + 0x19a8]
xorps xmm11, xmm11
cmp rsi, rcx
jne 0x18000a238
xorps xmm12, xmm12
jmp 0x18000a282
movss xmm0, dword [0x1800785a4]
lea rdx, [rbp + 0x67]
mov qword [rsp + 0x30], rcx
movaps xmm2, xmm1
mov rcx, qword [r14 + 0x19a0]
mov qword [rsp + 0x28], rsi
movss dword [rsp + 0x20], xmm0
call fcn.180033660
movss xmm0, dword [rbp + 0x67]
addss xmm0, dword [0x1800783fc]
movss xmm1, dword [rbp + 0x6b]
cvttss2si eax, xmm0
movd xmm12, eax
cvtdq2ps xmm12, xmm12
movss xmm3, dword [r14 + 0x1594]
addss xmm3, xmm3
addss xmm3, xmm1
call fcn.18001f2d0
mov rdx, qword [rdi]
lea rcx, [rbp + 0x67]
movaps xmm2, xmm0
call fcn.18001f340
movss xmm2, dword [rbx + 0xd0]
lea rcx, [rbp + 0x7f]
movss xmm7, dword [rbx + 0xd4]
movaps xmm9, xmm2
addss xmm9, dword [rbp + 0x67]
movss xmm1, dword [r14 + 0x1594]
movaps xmm10, xmm7
addss xmm10, dword [rbp + 0x6b]
movss dword [rbp - 0x61], xmm2
movaps xmm8, xmm12
addss xmm8, dword [r14 + 0x15a8]
movaps xmm0, xmm9
movss dword [rbp - 0x4d], xmm7
subss xmm0, xmm2
movss dword [rbp - 0x49], xmm9
movss dword [rbp - 0x45], xmm10
movss dword [rbp - 0x5d], xmm7
addss xmm8, xmm2
movss dword [rbp - 0x59], xmm9
movaps xmm2, xmm10
movss dword [rbp - 0x55], xmm10
subss xmm2, xmm7
movss dword [rbp + 0x7f], xmm0
movss dword [rbp - 0x51], xmm8
movss dword [rbp + 0x83], xmm2
call fcn.1800174b0
xor r8d, r8d
lea rcx, [rbp - 0x61]
mov edx, r15d
call fcn.1800175d0
test al, al
je 0x18000acd1
mov qword [rsp + 0x120], r12
mov rcx, rbx
mov qword [rsp + 0xd0], r13
xor r13d, r13d
cmp dword [r14 + 0x1b38], r15d
mov edx, r13d
sete dl
call fcn.180017940
mov edx, r15d
lea rcx, [rbp - 0x51]
movzx edi, al
call fcn.180017800
test al, al
je 0x18000a3cd
mov rcx, qword [0x180080a88]
mov dword [rcx + 0x1b24], r15d
mov byte [rcx + 0x1b28], r13b
test r15d, r15d
je 0x18000a3b5
cmp dword [rcx + 0x1b2c], r15d
je 0x18000a3b5
mov qword [rcx + 0x1b30], r13
mov dword [r14 + 0x1f78], 1
cmp byte [r14 + 0x420], r13b
je 0x18000a3cd
mov al, 1
jmp 0x18000a3cf
xor al, al
test dil, dil
jne 0x18000a3f1
test al, al
jne 0x18000a3f1
cmp byte [r14 + 0x420], r13b
je 0x18000a438
cmp dword [r14 + 0x1b38], r15d
jne 0x18000a438
call fcn.180017400
jmp 0x18000a438
cmp dword [r14 + 0x1b38], r15d
je 0x18000a425
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 [0x18008087c], r13d
mov rdx, rbx
mov ecx, r15d
call fcn.180017330
mov rcx, rbx
call fcn.18001ef20
mov ebx, dword [0x18008087c]
xor r12b, r12b
cmp dword [r14 + 0x1b38], r15d
jne 0x18000a691
lea rsi, [r14 + 0x138]
mov edi, r13d
mov r14d, 5
lea r15d, [r14 + 1]
cmp byte [rsi], r13b
jne 0x18000a48f
mov ecx, r14d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x18000a48f
mov ecx, r15d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x18000a48f
mov rdx, qword [0x180080a88]
jmp 0x18000a528
mov ecx, edi
test edi, edi
je 0x18000a4ab
sub ecx, 1
je 0x18000a4a4
cmp ecx, 1
jne 0x18000a4b0
lea ebx, [rcx + 3]
jmp 0x18000a4b0
mov ebx, 2
jmp 0x18000a4b0
mov ebx, 1
mov ecx, r15d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
mov ecx, r14d
cmovne ebx, r15d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov rdx, qword [0x180080a88]
mov r12b, 1
test ax, ax
cmovne ebx, r14d
mov ecx, dword [rdx + 0x1b38]
test ecx, ecx
setne al
mov byte [rdx + 0x1b44], al
test ecx, ecx
je 0x18000a4fe
mov dword [rdx + 0x1b40], r13d
mov word [rdx + 0x1b46], r13w
mov dword [rdx + 0x1b38], r13d
mov byte [rdx + 0x1b45], r13b
mov qword [rdx + 0x1b68], r13
mov byte [rdx + 0x1b48], r13b
mov qword [rdx + 0x1b4c], r13
mov qword [rdx + 0x1b58], r13
inc edi
inc rsi
cmp edi, r15d
jle 0x18000a462
mov r14, qword [rbp - 0x69]
mov r15d, dword [rbp + 0x6f]
test r12b, r12b
jne 0x18000a61d
mov r8d, 8
lea r9, [r14 + 0x155]
cmp byte [r9 - 1], r13b
je 0x18000a5ae
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 0x18000a584
mov dword [rdx + 0x1b40], r13d
mov word [rdx + 0x1b46], r13w
mov dword [rdx + 0x1b38], r13d
mov byte [rdx + 0x1b45], r13b
mov qword [rdx + 0x1b68], r13
mov byte [rdx + 0x1b48], r13b
mov qword [rdx + 0x1b4c], r13
mov qword [rdx + 0x1b58], r13
cmp byte [r9], r13b
je 0x18000a608
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 0x18000a5de
mov dword [rdx + 0x1b40], r13d
mov word [rdx + 0x1b46], r13w
mov dword [rdx + 0x1b38], r13d
mov byte [rdx + 0x1b45], r13b
mov qword [rdx + 0x1b68], r13
mov byte [rdx + 0x1b48], r13b
mov qword [rdx + 0x1b4c], r13
mov qword [rdx + 0x1b58], r13
add r8d, 2
add r9, 2
cmp r8d, 0xa5
jle 0x18000a554
movsxd rax, dword [rdx + 0x74]
test eax, eax
js 0x18000a68b
movss xmm0, dword [rdx + rax*4 + 0x4a0]
ucomiss xmm0, xmm11
jne 0x18000a68b
mov dword [0x18008087c], r13d
mov ecx, dword [rdx + 0x1b38]
test ecx, ecx
setne al
mov byte [rdx + 0x1b44], al
test ecx, ecx
je 0x18000a65f
mov dword [rdx + 0x1b40], r13d
mov word [rdx + 0x1b46], r13w
mov dword [rdx + 0x1b38], r13d
mov byte [rdx + 0x1b45], r13b
mov qword [rdx + 0x1b68], r13
mov byte [rdx + 0x1b48], r13b
mov qword [rdx + 0x1b4c], r13
mov qword [rdx + 0x1b58], r13
jmp 0x18000a691
mov dword [0x18008087c], ebx
movaps xmm0, xmmword [0x1800787e0]
lea rcx, [rbp - 0x51]
movups xmmword [rbp - 0x51], xmm0
lea rdi, str.None
call fcn.180015c40
movss xmm0, dword [r14 + 0x1598]
movaps xmm1, xmm9
movaps xmm2, xmm8
unpcklps xmm1, xmm10
unpcklps xmm2, xmm7
movq rdx, xmm1
movq rcx, xmm2
movss dword [rsp + 0x20], xmm0
mov r8d, eax
mov r9b, 1
call fcn.180016340
mov eax, dword [0x18008087c]
test eax, eax
je 0x18000aa54
cmp dword [r14 + 0x1b38], r15d
je 0x18000aa61
dec eax
cmp eax, 0x9f
ja case.0x18000a722.3
lea rdx, [0x180000000]
cdqe
movzx eax, byte [rdx + rax + 0xae18]
mov ecx, dword [rdx + rax*4 + 0xad08]
add rcx, rdx
jmp rcx
lea rdi, str.control
jmp 0x18000ab9c
lea rdi, str.shift
jmp 0x18000ab9c
lea rdi, [0x180050b68]
jmp 0x18000ab9c
lea rdi, [0x180050b6c]
jmp 0x18000ab9c
lea rdi, str.mouse_1
jmp 0x18000ab9c
lea rdi, str.mouse_2
jmp 0x18000ab9c
lea rdi, str.mouse_3
jmp 0x18000ab9c
lea rdi, str.mouse_4
jmp 0x18000ab9c
lea rdi, str.mouse_5
jmp 0x18000ab9c
lea rdi, str.page_up
jmp 0x18000ab9c
lea rdi, str.page_down
jmp 0x18000ab9c
lea rdi, [0x180050bac]
jmp 0x18000ab9c
lea rdi, str.home
jmp 0x18000ab9c
lea rdi, str.left_arrow
jmp 0x18000ab9c
lea rdi, str.up_arrow
jmp 0x18000ab9c
lea rdi, str.right_arrow
jmp 0x18000ab9c
lea rdi, str.down_arrow
jmp 0x18000ab9c
lea rdi, str.insert
jmp 0x18000ab9c
lea rdi, str.delete
jmp 0x18000ab9c
lea rdi, str.abcdefghijklmnopqrstuvwxyz
jmp 0x18000ab9c
lea rdi, [0x180050c08]
jmp 0x18000ab9c
lea rdi, [0x180050c0c]
jmp 0x18000ab9c
lea rdi, [0x180050c10]
jmp 0x18000ab9c
lea rdi, [0x180050c14]
jmp 0x18000ab9c
lea rdi, [0x180050c18]
jmp 0x18000ab9c
lea rdi, [0x180050c1c]
jmp 0x18000ab9c
lea rdi, [0x180050c20]
jmp 0x18000ab9c
lea rdi, [0x180050c24]
jmp 0x18000ab9c
lea rdi, [0x180050c28]
jmp 0x18000ab9c
lea rdi, [0x180050c2c]
jmp 0x18000ab9c
lea rdi, [0x180050c30]
jmp 0x18000ab9c
lea rdi, [0x180050c34]
jmp 0x18000ab9c
lea rdi, [0x180050c38]
jmp 0x18000ab9c
lea rdi, [0x180050c3c]
jmp 0x18000ab9c
lea rdi, [0x180050c40]
jmp 0x18000ab9c
lea rdi, [0x180050c44]
jmp 0x18000ab9c
lea rdi, [0x180050c48]
jmp 0x18000ab9c
lea rdi, [0x180050c4c]
jmp 0x18000ab9c
lea rdi, [0x180050c50]
jmp 0x18000ab9c
lea rdi, [0x180050c54]
jmp 0x18000ab9c
lea rdi, [0x180050c58]
jmp 0x18000ab9c
lea rdi, [0x180050c5c]
jmp 0x18000ab9c
lea rdi, [0x180050c60]
jmp 0x18000ab9c
lea rdi, [0x180050c64]
jmp 0x18000ab9c
lea rdi, [0x180050c68]
jmp 0x18000ab9c
lea rdi, str.numpad_0
jmp 0x18000ab9c
lea rdi, str.numpad_1
jmp 0x18000ab9c
lea rdi, str.numpad_2
jmp 0x18000ab9c
lea rdi, str.numpad_3
jmp 0x18000ab9c
lea rdi, str.numpad_4
jmp 0x18000ab9c
lea rdi, str.numpad_5
jmp 0x18000ab9c
lea rdi, str.numpad_6
jmp 0x18000ab9c
lea rdi, str.numpad_7
jmp 0x18000ab9c
lea rdi, str.numpad_8
jmp 0x18000ab9c
lea rdi, str.numpad_9
jmp 0x18000ab9c
lea rdi, [0x180050d0c]
jmp 0x18000ab9c
lea rdi, [0x180050d10]
jmp 0x18000ab9c
lea rdi, [0x180050d14]
jmp 0x18000ab9c
lea rdi, [0x180050d18]
jmp 0x18000ab9c
lea rdi, [0x180050d1c]
jmp 0x18000ab9c
lea rdi, [0x180050d20]
jmp 0x18000ab9c
lea rdi, [0x180050d24]
jmp 0x18000ab9c
lea rdi, [0x180050d28]
jmp 0x18000ab9c
lea rdi, [0x180050d2c]
jmp 0x18000ab9c
lea rdi, [0x180050d30]
jmp 0x18000ab9c
lea rdi, [0x180050d34]
jmp 0x18000ab9c
lea rdi, [0x180050d38]
jmp 0x18000ab9c
lea rdi, str.unknown
jmp 0x18000ab9c
cmp dword [r14 + 0x1b38], r15d
jne 0x18000ab9c
lea rcx, [rbp + 0x6f]
lea rdi, str.Press
call fcn.180001380
mov rbx, qword [rbp + 0x6f]
movabs rax, 0x7ffffffffb3b4bff
cmp rbx, rax
jge 0x18000aa8d
add rbx, 0x4c4b400
jmp 0x18000aa97
movabs rbx, 0x7fffffffffffffff
movabs r14, 0xb2f4fc0794908cf3
movabs r15, 0x4e94914f0000
movabs r13, 0x431bde82d7b634db
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rsi, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
mov rcx, rax
cmp rsi, 0x989680
jne 0x18000aad6
imul rax, rcx, 0x64
jmp 0x18000ab47
cmp rsi, 0x16e3600
jne 0x18000ab29
mov rax, r14
imul rcx
lea r8, [rcx + rdx]
sar r8, 0x18
mov rax, r8
shr rax, 0x3f
add r8, rax
imul rax, r8, 0x16e3600
sub rcx, rax
mov rax, r14
imul rcx, rcx, 0x3b9aca00
imul rcx
lea rax, [rcx + rdx]
sar rax, 0x18
mov rcx, rax
shr rcx, 0x3f
add rax, rcx
imul rcx, r8, 0x3b9aca00
jmp 0x18000ab44
cqo
idiv rsi
mov rcx, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rsi
imul rcx, rcx, 0x3b9aca00
add rax, rcx
cmp rax, rbx
jge 0x18000ab95
mov rcx, rbx
sub rcx, rax
cmp rcx, r15
jl 0x18000ab66
mov ecx, 0x5265c00
call sub.KERNEL32.dll_Sleep
jmp 0x18000aab5
mov rax, r13
imul rcx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
imul rax, rdx, 0xf4240
cmp rax, rcx
jge 0x18000ab89
inc rdx
mov ecx, edx
call sub.KERNEL32.dll_Sleep
jmp 0x18000aab5
mov r14, qword [rbp - 0x69]
xor r13d, r13d
movss dword [rbp - 0x51], xmm8
movaps xmm0, xmm8
movss dword [rbp - 0x4d], xmm7
movaps xmm1, xmm7
mov rsi, rdi
addss xmm0, dword [rbp + 0x67]
addss xmm1, dword [rbp + 0x6b]
movss dword [rbp - 0x49], xmm0
movss xmm0, dword [r14 + 0x1590]
movss dword [rbp - 0x45], xmm1
subss xmm9, xmm0
movss xmm1, dword [r14 + 0x1594]
addss xmm8, xmm0
subss xmm10, xmm1
movaps xmm0, xmm7
addss xmm0, xmm1
movss dword [rbp + 0x67], xmm9
movss dword [rbp + 0x6f], xmm8
movss dword [rbp + 0x6b], xmm10
movss dword [rbp + 0x73], xmm0
cmp rdi, 0xffffffffffffffff
jae 0x18000ac2d
nop word [rax + rax]
movzx ecx, byte [rsi]
test cl, cl
je 0x18000ac2d
lea rax, [rsi + 1]
cmp cl, 0x23
jne 0x18000ac24
cmp byte [rax], cl
je 0x18000ac2d
mov rsi, rax
cmp rax, 0xffffffffffffffff
jb 0x18000ac10
cmp esi, edi
je 0x18000ac8d
mov rbx, qword [0x180080a88]
lea rdx, [rbp - 0x51]
mov qword [rsp + 0x38], rdx
lea rax, [r14 + 0x15dc]
mov qword [rsp + 0x30], rax
lea r8, [rbp + 0x67]
mov qword [rsp + 0x28], r13
lea rdx, [rbp + 0x6f]
mov rcx, qword [rbx + 0x1af0]
mov r9, rdi
mov qword [rsp + 0x20], rsi
mov rcx, qword [rcx + 0x2b0]
call fcn.180015eb0
cmp byte [rbx + 0x3008], 0
je 0x18000ac8d
mov r8, rsi
lea rcx, [rbp + 0x6f]
mov rdx, rdi
call fcn.180024f10
comiss xmm12, xmm11
mov r13, qword [rsp + 0xd0]
jbe 0x18000acc3
addss xmm7, dword [r14 + 0x1594]
movss xmm0, dword [rbp - 0x61]
lea rdx, str.clear_button
mov r9b, 1
xor r8d, r8d
unpcklps xmm0, xmm7
movq rcx, xmm0
call fcn.180015d20
movzx eax, r12b
mov r12, qword [rsp + 0x120]
jmp 0x18000acd3
xor al, al
lea r11, [rsp + 0xd8]
movaps xmm7, xmmword [r11 - 0x18]
movaps xmm8, xmmword [r11 - 0x28]
movaps xmm9, xmmword [r11 - 0x38]
movaps xmm10, xmmword [r11 - 0x48]
movaps xmm11, xmmword [r11 - 0x58]
movaps xmm12, xmmword [r11 - 0x68]
mov rsp, r11
pop r15
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret