Function at 0x1400c5120
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov eax, dword [rsp + 0xb0]
mov rdi, rcx
mov ebp, 1
test eax, eax
mov r10d, ebp
mov ebx, r9d
cmovne r10d, eax
mov esi, r8d
mov r14, rdx
mov dword [rcx + 0x90], r10d
mov rcx, qword [rcx]
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x1400c5184
call fcn.1400dc5b0
mov r8, r14
mov rcx, rdi
mov rdx, rax
call fcn.1400c4f70
xor r13d, r13d
mov r12d, r13d
mov r15d, r13d
mov dword [rsp + 0xb0], r13d
test r14, r14
je 0x1400c51f8
mov rdx, qword [rdi]
test rdx, rdx
je 0x1400c51f8
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0xa8]
xor r8d, r8d
xor edx, edx
mov rcx, r14
mov r12d, eax
call fcn.1400aa8f0
bt eax, 0x19
jae 0x1400c51cd
mov dword [rsp + 0xb0], ebp
jmp 0x1400c51f8
test r12d, r12d
je 0x1400c51fb
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
bt eax, 0xc
jae 0x1400c51f8
call fcn.1400df0b0
test eax, eax
cmove r15d, ebp
mov dword [rsp + 0xb0], r15d
test r12d, r12d
sete r13b
test r13d, r13d
jne 0x1400c5226
test r14, r14
je 0x1400c521a
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
test al, 4
jne 0x1400c5223
cmp byte [rdi + 0xa0], 0
je 0x1400c5226
mov r13d, ebp
or r15d, 0xffffffff
xor r8d, r8d
mov dword [rdi + 0x88], esi
test ebx, ebx
je 0x1400c5265
mov eax, dword [rdi + 0x58]
test eax, eax
jns 0x1400c5243
mov edx, r15d
jmp 0x1400c524b
test eax, eax
mov edx, r8d
setg dl
test ebx, ebx
jns 0x1400c5254
mov ecx, r15d
jmp 0x1400c525c
test ebx, ebx
mov ecx, r8d
setg cl
cmp edx, ecx
cmovne eax, r8d
mov dword [rdi + 0x58], eax
mov esi, dword [rdi + 8]
cmp esi, ebp
jne 0x1400c5278
cmp qword [rdi + 0x40], 0
jne 0x1400c5289
mov esi, r8d
jmp 0x1400c5289
cmp esi, 3
jne 0x1400c5289
cmp qword [rdi + 0x40], 0
mov esi, r8d
setne sil
test byte [rdi + 0x34], 8
jne 0x1400c52bf
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x1400c52bf
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x1400c52bf
lea rcx, [0x1402707e0]
call fcn.1400844e0
test eax, eax
je 0x1400c52c3
xor eax, eax
mov esi, eax
mov ecx, dword [rdi + 0x34]
mov eax, 4
test cl, 0x40
cmovne esi, eax
mov eax, dword [rdi + 0x74]
test bpl, al
je 0x1400c52e6
test r12d, r12d
jne 0x1400c52e6
mov esi, eax
shr esi, 0xa
and esi, 4
bt ecx, 0x1a
cmovb esi, ebp
cmp byte [rdi + 0xa1], 0
je 0x1400c5300
cmp dword [rsp + 0xb8], 6
je 0x1400c5313
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aab30
bt eax, 0xf
jae 0x1400c5318
mov esi, 4
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
bt eax, 0xf
jb 0x1400c534a
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
bt eax, 0x12
jae 0x1400c534f
xor ecx, ecx
call fcn.1400dd550
cmp eax, 0xa
jne 0x1400c534f
mov esi, 4
test ebx, ebx
je 0x1400c53e0
mov r8d, dword [rdi + 0x90]
cmp r8d, ebp
je 0x1400c53e0
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp eax, r8d
jge 0x1400c53be
test r12d, r12d
cmovne eax, ebx
add dword [rdi + 0x94], eax
mov ecx, dword [rdi + 0x94]
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, r8d
jl 0x1400c545b
test r12d, r12d
je 0x1400c539a
mov ebx, ecx
jmp 0x1400c53e0
test ebx, ebx
jns 0x1400c53ac
mov eax, r15d
imul eax, ecx
cdq
idiv r8d
mov ebx, eax
jmp 0x1400c53e0
xor eax, eax
test ebx, ebx
setg al
imul eax, ecx
cdq
idiv r8d
mov ebx, eax
jmp 0x1400c53e0
test esi, esi
jne 0x1400c53c8
test byte [rdi + 0x34], 2
jne 0x1400c53e0
xor ecx, ecx
lea eax, [r8 - 1]
cmp dword [rdi + 0x94], eax
mov eax, ebx
setge cl
cdq
idiv r8d
lea ebx, [rax + rcx]
test r13d, r13d
mov r13d, dword [rsp + 0xb8]
mov dword [rsp + 0x90], ebx
je 0x1400c5403
mov r8d, r13d
mov edx, ebx
mov rcx, rdi
call fcn.1400c6870
mov ebx, eax
add dword [rdi + 0x58], ebx
cmp dword [rsp + 0xa8], 0
mov r9d, dword [rdi + 0x58]
je 0x1400c5465
mov eax, dword [rdi + 0x5c]
test eax, eax
je 0x1400c5465
cmp dword [rsp + 0xc0], 0
je 0x1400c545b
cdq
mov r8d, eax
mov eax, r9d
xor r8d, edx
sub r8d, edx
cdq
xor eax, edx
lea ecx, [r8 + r8]
sub eax, edx
cmp eax, ecx
jle 0x1400c545b
test r9d, r9d
js 0x1400c5450
xor eax, eax
test r9d, r9d
mov r15d, eax
setg r15b
imul r8d, r15d
add r8d, r8d
mov dword [rdi + 0x58], r8d
mov eax, 2
jmp 0x1400c5655
mov eax, dword [rsp + 0xd8]
mov r8d, dword [rsp + 0xd0]
mov r9d, 2
mov rdx, r14
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.1400c5d30
cmp eax, ebp
jne 0x1400c54b1
mov rbx, qword [r14 + 0x48]
mov rcx, r14
call fcn.1400aac00
mov rcx, rbx
mov edx, eax
call fcn.140026ec0
test eax, eax
je 0x1400c54bc
xor eax, eax
mov dword [rdi + 0x58], eax
jmp 0x1400c5653
test eax, 0xfffffffd
je 0x1400c5655
cmp dword [rdi + 0x34], 0
jne 0x1400c54ed
cmp dword [rdi + 0x84], 0
je 0x1400c54ed
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
xor r15d, r15d
bt eax, 0xe
jae 0x1400c54f0
cmp esi, 4
mov r12d, r15d
cmovne esi, r15d
jmp 0x1400c54f0
xor r15d, r15d
mov ebx, r15d
test r12d, r12d
jne 0x1400c5501
test dword [rdi + 0x34], 0x200000
je 0x1400c5516
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aab30
mov ebx, eax
and ebx, 0x10000
xor r8d, r8d
xor edx, edx
mov rcx, r14
call fcn.1400aa8f0
bt eax, 0x1d
jae 0x1400c5536
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x60]
movzx r15d, ax
xor eax, eax
mov r8d, eax
test esi, esi
je 0x1400c55e5
dec esi
je 0x1400c55ab
dec esi
je 0x1400c5588
sub esi, 2
je 0x1400c556c
dec esi
jne 0x1400c5641
mov r8, qword [rdi]
movzx edx, bpl
mov rcx, rdi
call fcn.1400c7180
jmp 0x1400c5621
mov r9d, r12d
movzx r8d, bpl
mov rdx, r14
mov rcx, rdi
mov dword [rsp + 0x20], r13d
call fcn.1400c7390
jmp 0x1400c5621
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x20]
mov r8, qword [rdi]
movzx edx, bpl
mov rcx, rdi
mov r9d, eax
mov word [rsp + 0x20], r15w
call fcn.1400c6ed0
jmp 0x1400c5621
test dword [rdi + 0x34], 0x400000
mov rax, qword [rsp + 0xc8]
mov r8, qword [rdi + 0x38]
mov dword [rsp + 0x28], ebp
movzx edx, bpl
mov rcx, rdi
mov qword [rsp + 0x20], rax
je 0x1400c55da
mov r9, qword [rdi]
call fcn.1400c6d50
jmp 0x1400c5621
mov r9, qword [rdi + 0x40]
call fcn.1400c6d50
jmp 0x1400c5621
mov eax, dword [rsp + 0xb0]
mov rcx, qword [rsp + 0xc8]
mov r8d, dword [rsp + 0xa0]
mov rdx, qword [rdi]
mov dword [rsp + 0x40], ebx
mov dword [rsp + 0x38], r13d
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], rcx
mov r9d, ebp
mov rcx, rdi
mov dword [rsp + 0x20], r12d
call fcn.1400c69d0
mov r8d, eax
test eax, eax
jle 0x1400c563f
mov eax, dword [rsp + 0x90]
cdq
xor eax, edx
sub eax, edx
cmp eax, ebp
jg 0x1400c563f
xor eax, eax
mov dword [rdi + 0x58], eax
jmp 0x1400c5641
xor eax, eax
mov dword [rdi + 0x5c], r8d
test r8d, r8d
jg 0x1400c5653
mov ebp, eax
sets bpl
add ebp, 2
mov eax, ebp
lea r11, [rsp + 0x50]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret