Function at 0x14001bd30
Capabilities:
Log keystrokes via polling

Disassembly:
push rdi
sub rsp, 0x50
mov r9d, edx
mov rdi, rcx
cmp edx, 0x28
ja 0x14001c247
movabs rcx, 0x15e00000000
bt rcx, r9
jae 0x14001c247
mov rax, qword [rdi + 0x130]
mov r8d, dword [rax]
test r8d, r8d
je 0x14001c23f
mov qword [rsp + 0x40], r15
lea eax, [r9 - 0x21]
xor r15d, r15d
mov qword [rsp + 0x78], rsi
cmp eax, 7
ja case.0x14001bd97.37
lea rdx, [0x140000000]
mov ecx, dword [rdx + rax*4 + 0x1c250]
add rcx, rdx
jmp rcx
mov rax, qword [rdi + 0xa0]
test rax, rax
je case.0x14001bd97.36
mov esi, dword [rax + 0x2c]
test esi, esi
je case.0x14001bd97.36
dec esi
jmp 0x14001be63
mov rsi, qword [rdi + 0xa0]
test rsi, rsi
je case.0x14001bd97.36
mov esi, dword [rsi + 0x2c]
inc esi
cmp esi, r8d
jb 0x14001be63
lea esi, [r8 - 1]
jmp 0x14001be63
mov rsi, qword [rdi + 0xa0]
test rsi, rsi
je 0x14001bdef
mov esi, dword [rsi + 0x2c]
jmp 0x14001bdf2
mov esi, r15d
test byte [rdi + 0x40], 8
je 0x14001be00
mov ecx, dword [rdi + 0x84]
jmp 0x14001be03
mov ecx, r15d
mov eax, dword [rdi + 0x74]
sub eax, dword [rdi + 0x78]
sub eax, ecx
js 0x14001c235
cdq
idiv dword [rdi + 0x7c]
sub eax, 1
js 0x14001c235
mov ecx, dword [rdi + 0x88]
cmp r9d, 0x21
jne 0x14001be3f
cmp esi, ecx
jbe 0x14001be32
mov esi, ecx
jmp 0x14001be63
cmp esi, eax
jb case.0x14001bd97.36
sub esi, eax
jmp 0x14001be63
mov esi, r15d
jmp 0x14001be63
add ecx, eax
cmp ecx, r8d
jb 0x14001be4a
lea ecx, [r8 - 1]
cmp esi, ecx
jae 0x14001be52
mov esi, ecx
jmp 0x14001be63
add esi, eax
cmp esi, r8d
jb 0x14001be63
lea esi, [r8 - 1]
jmp 0x14001be63
mov esi, dword [rsp + 0x68]
mov qword [rsp + 0x60], rbx
mov ecx, 0x11
mov qword [rsp + 0x70], rbp
mov qword [rsp + 0x48], r14
call qword [sym.imp.USER32.dll_GetKeyState]
movzx ebp, ax
mov ecx, 0x10
shr bp, 0xf
call qword [sym.imp.USER32.dll_GetKeyState]
mov rcx, qword [rdi + 0x130]
xor r8d, r8d
mov edx, esi
movzx ebx, ax
mov rcx, qword [rcx + 8]
mov rdx, qword [rcx + rdx*8]
mov rcx, rdi
mov qword [rdi + 0xa0], rdx
call fcn.14001af50
shr bx, 0xf
test bl, bl
je 0x14001c003
mov ecx, dword [rdi + 0xac]
cmp ecx, 0xffffffff
je 0x14001c003
cmp esi, ecx
jbe 0x14001beda
mov edx, ecx
mov ecx, esi
jmp 0x14001bedc
mov edx, esi
mov rax, qword [rdi + 0x130]
mov r8d, dword [rax]
test r8d, r8d
je 0x14001c15c
lea r14d, [r8 - 1]
mov r11d, r15d
cmp ecx, r14d
mov eax, r14d
mov ebx, r14d
mov ebp, r15d
cmovbe eax, ecx
cmp edx, eax
cmovbe r8d, edx
cmovbe r11d, eax
mov edx, r15d
test r8d, r8d
je 0x14001bf56
mov r9, r15
nop word [rax + rax]
mov rax, qword [rdi + 0x130]
mov rcx, qword [rax + 8]
mov r10, qword [r9 + rcx]
mov eax, dword [r10]
test al, 2
je 0x14001bf4b
and eax, 0xfffffffd
cmp ebx, edx
mov dword [r10], eax
mov eax, edx
cmovbe eax, ebx
mov ebx, eax
cmp ebp, edx
jae 0x14001bf4b
mov ebp, edx
inc edx
add r9, 8
cmp edx, r8d
jb 0x14001bf20
cmp r8d, r11d
ja 0x14001bf96
nop dword [rax + rax]
mov rax, qword [rdi + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 0x20
jne 0x14001bf8e
test al, 2
jne 0x14001bf8e
xor eax, 2
cmp ebx, r8d
mov dword [r9], eax
cmova ebx, r8d
cmp ebp, r8d
cmovb ebp, r8d
inc r8d
cmp r8d, r11d
jbe 0x14001bf60
lea r8d, [r11 + 1]
cmp r8d, r14d
ja 0x14001bfd7
nop
mov rax, qword [rdi + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 2
je 0x14001bfcf
and eax, 0xfffffffd
cmp ebx, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, ebx
mov ebx, eax
cmp ebp, r8d
jae 0x14001bfcf
mov ebp, r8d
inc r8d
cmp r8d, r14d
jbe 0x14001bfa0
cmp ebx, ebp
ja 0x14001c164
mov rax, qword [rdi + 0xc8]
xor r9d, r9d
mov rcx, qword [rdi]
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0xb]
call qword [rdi + 0xc0]
jmp 0x14001c164
test bpl, bpl
jne 0x14001c1ed
mov rax, qword [rdi + 0xa0]
mov r8d, esi
mov ecx, dword [rax + 0x2c]
mov rax, qword [rdi + 0x130]
mov dword [rdi + 0xac], ecx
mov ecx, dword [rax]
test ecx, ecx
je 0x14001c15c
lea r11d, [rcx - 1]
cmp esi, r11d
jbe 0x14001c044
mov r8d, ecx
mov eax, r11d
mov ecx, r11d
jmp 0x14001c048
mov ecx, esi
mov eax, esi
cmp esi, eax
mov r14d, r15d
mov ebx, r11d
mov ebp, r15d
cmovbe r14d, ecx
mov edx, r15d
test r8d, r8d
je 0x14001c0a6
mov r9, r15
nop dword [rax]
nop word [rax + rax]
mov rax, qword [rdi + 0x130]
mov rcx, qword [rax + 8]
mov r10, qword [r9 + rcx]
mov eax, dword [r10]
test al, 2
je 0x14001c09b
and eax, 0xfffffffd
cmp ebx, edx
mov dword [r10], eax
mov eax, edx
cmovbe eax, ebx
mov ebx, eax
cmp ebp, edx
jae 0x14001c09b
mov ebp, edx
inc edx
add r9, 8
cmp edx, r8d
jb 0x14001c070
cmp r8d, r14d
ja 0x14001c0e9
nop dword [rax + rax]
mov rax, qword [rdi + 0x130]
mov edx, r8d
mov rcx, qword [rax + 8]
mov r9, qword [rcx + rdx*8]
mov eax, dword [r9]
test al, 0x20
jne 0x14001c0e1
test al, 2
jne 0x14001c0e1
xor eax, 2
cmp ebx, r8d
mov dword [r9], eax
cmova ebx, r8d
cmp ebp, r8d
cmovb ebp, r8d
inc r8d
cmp r8d, r14d
jbe 0x14001c0b0
lea r8d, [r14 + 1]
cmp r8d, r11d
ja 0x14001c137
nop dword [rax]
nop word [rax + rax]
mov rax, qword [rdi + 0x130]
mov rcx, qword [rax + 8]
mov r9, qword [rcx + r8*8]
mov eax, dword [r9]
test al, 2
je 0x14001c12f
and eax, 0xfffffffd
cmp ebx, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, ebx
mov ebx, eax
cmp ebp, r8d
jae 0x14001c12f
mov ebp, r8d
inc r8d
cmp r8d, r11d
jbe 0x14001c100
cmp ebx, ebp
ja 0x14001c164
mov rax, qword [rdi + 0xc8]
xor r9d, r9d
mov rcx, qword [rdi]
xor r8d, r8d
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0xb]
call qword [rdi + 0xc0]
jmp 0x14001c164
mov ebp, dword [rsp + 0x68]
mov ebx, dword [rsp + 0x68]
mov rax, qword [rdi + 0x130]
cmp ebp, dword [rax]
jae 0x14001c1ed
cmp ebx, ebp
ja 0x14001c1ed
mov eax, dword [rdi + 0x88]
sub ebp, eax
mov r9d, dword [rdi + 0x78]
inc ebp
imul ebp, dword [rdi + 0x7c]
sub ebx, eax
imul ebx, dword [rdi + 0x7c]
mov edx, dword [rdi + 0xf8]
sub edx, dword [rdi + 0x8c]
add edx, dword [rdi + 0x98]
add ebp, r9d
mov dword [rsp + 0x30], r15d
test byte [rdi + 0x40], 4
lea r8d, [rbx + r9]
je 0x14001c1b6
mov r15d, dword [rdi + 0x80]
mov eax, dword [rdi + 0x70]
mov rcx, qword [rdi]
sub eax, r15d
cmp edx, eax
cmovg edx, eax
cmp r8d, r9d
mov dword [rsp + 0x38], edx
lea rdx, [rsp + 0x30]
cmovl r8d, r9d
cmp ebp, dword [rdi + 0x74]
mov dword [rsp + 0x34], r8d
cmovg ebp, dword [rdi + 0x74]
xor r8d, r8d
mov dword [rsp + 0x3c], ebp
call qword [sym.imp.USER32.dll_InvalidateRect]
mov edx, esi
mov rcx, rdi
call fcn.14001b7e0
mov rcx, qword [rdi + 0x38]
mov r14, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x70]
mov rbx, qword [rsp + 0x60]
test rcx, rcx
je 0x14001c235
xor r9d, r9d
xor r8d, r8d
mov edx, 0x41c
call qword [sym.imp.USER32.dll_SendMessageW]
mov qword [rdi + 0x160], 0xffffffffffffffff
mov dword [rdi + 0x190], 0xffffffff
mov rsi, qword [rsp + 0x78]
mov r15, qword [rsp + 0x40]
mov al, 1
add rsp, 0x50
pop rdi
ret
xor al, al
add rsp, 0x50
pop rdi
ret