Function at 0x14003ecf0
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0x20
mov ecx, 0xa0
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
lea rcx, [0x14015e248]
and al, 1
mov byte [0x14015e673], al
call qword [sym.imp.USER32.dll_GetCursorPos]
mov eax, dword [0x14015e248]
xor ecx, ecx
mov dword [0x14015e66c], eax
mov eax, dword [0x14015e24c]
mov dword [0x14015e640], eax
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, 1
mov dword [0x14015e364], eax
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov dword [0x14015e368], eax
call qword [sym.imp.USER32.dll_GetForegroundWindow]
mov rcx, rax
lea rdx, [0x14015e258]
call qword [sym.imp.USER32.dll_GetWindowRect]
mov ecx, dword [0x14015e314]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x14003ed84
cmp byte [0x14015e30a], 0
sete byte [0x14015e30a]
mov qword [rsp + 0x30], rdi
call qword [sym.imp.USER32.dll_GetDesktopWindow]
mov rbx, rax
call qword [sym.imp.USER32.dll_GetForegroundWindow]
cmp rax, rbx
je 0x14003efdc
mov eax, dword [0x14015e260]
sub eax, dword [0x14015e258]
cmp dword [0x14015e364], eax
jne 0x14003efdc
mov eax, dword [0x14015e264]
sub eax, dword [0x14015e25c]
cmp dword [0x14015e368], eax
jne 0x14003efdc
cmp byte [0x14015e309], 0
je 0x14003efdc
cmp byte [0x14015e30a], 0
je 0x14003efdc
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x14003efdc
movzx ecx, byte [0x14015e673]
xor eax, eax
cmp byte [0x14015e30b], al
cmove ecx, eax
cmp byte [0x14015e310], al
mov byte [0x14015e673], cl
jne 0x14003ee2a
mov byte [0x14015e669], 1
jmp 0x14003ee66
mov eax, dword [0x14015e364]
cdq
sub eax, edx
sar eax, 1
cmp dword [0x14015e66c], eax
jne 0x14003ee59
mov eax, dword [0x14015e368]
cdq
sub eax, edx
sar eax, 1
cmp dword [0x14015e640], eax
jne 0x14003ee59
mov byte [0x14015e669], 1
jmp 0x14003ee66
cmp byte [0x14015e669], 0
je 0x14003ef0b
test cl, cl
jne 0x14003ef0b
cmp byte [0x14015e311], cl
mov byte [0x14015e627], cl
jne 0x14003eed5
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x14015e36c]
cmp eax, 0x3e8
jbe 0x14003ef4b
call qword [sym.imp.USER32.dll_GetForegroundWindow]
xor r9d, r9d
xor r8d, r8d
mov rcx, rax
mov edx, 0x201
call qword [sym.imp.USER32.dll_PostMessageA]
call qword [sym.imp.USER32.dll_GetForegroundWindow]
xor r9d, r9d
xor r8d, r8d
mov rcx, rax
mov edx, 0x202
call qword [sym.imp.USER32.dll_PostMessageA]
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x14015e36c], eax
jmp 0x14003ef4b
call qword [sym.imp.USER32.dll_GetForegroundWindow]
xor r9d, r9d
xor r8d, r8d
mov rcx, rax
mov edx, 0x201
call qword [sym.imp.USER32.dll_PostMessageA]
call qword [sym.imp.USER32.dll_GetForegroundWindow]
xor r9d, r9d
xor r8d, r8d
mov rcx, rax
mov edx, 0x202
call qword [sym.imp.USER32.dll_PostMessageA]
jmp 0x14003ef4b
cmp byte [0x14015e627], 0
jne 0x14003ef4b
test cl, cl
je 0x14003ef4b
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x14003ef4b
call qword [sym.imp.USER32.dll_GetForegroundWindow]
xor r9d, r9d
xor r8d, r8d
mov rcx, rax
mov edx, 0x201
call qword [sym.imp.USER32.dll_PostMessageA]
mov byte [0x14015e627], 1
call qword [sym.imp.USER32.dll_GetDesktopWindow]
mov rbx, rax
call qword [sym.imp.USER32.dll_GetForegroundWindow]
cmp rax, rbx
je 0x14003efe3
mov eax, dword [0x14015e260]
sub eax, dword [0x14015e258]
cmp dword [0x14015e364], eax
jne 0x14003efe3
mov eax, dword [0x14015e264]
sub eax, dword [0x14015e25c]
cmp dword [0x14015e368], eax
jne 0x14003efe3
cmp byte [0x14015e30a], 0
jne 0x14003efe3
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x14003efe3
mov ecx, dword [0x14015e314]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x14003efe3
call qword [sym.imp.USER32.dll_GetForegroundWindow]
xor r9d, r9d
xor r8d, r8d
mov rcx, rax
mov edx, 0x201
mov rdi, qword [rsp + 0x30]
add rsp, 0x20
pop rbx
jmp qword [sym.imp.USER32.dll_PostMessageA]
mov byte [0x14015e669], 0
mov rdi, qword [rsp + 0x30]
add rsp, 0x20
pop rbx
ret