Function at 0x140108630
Capabilities:
Log keystrokes via polling

Disassembly:
push rdi
sub rsp, 0x50
mov r9d, edx
mov rdi, rcx
cmp edx, 0x28
ja 0x140108b48
movabs rcx, 0x15e00000000
bt rcx, r9
jae 0x140108b48
mov rax, qword [rdi + 0x130]
mov r8d, dword [rax]
test r8d, r8d
je 0x140108b40
mov qword [rsp + 0x40], r15
lea eax, [r9 - 0x21]
xor r15d, r15d
mov qword [rsp + 0x78], rsi
cmp eax, 7
ja case.0x140108697.37
lea rdx, [0x140000000]
mov ecx, dword [rdx + rax*4 + 0x108b50]
add rcx, rdx
jmp rcx
mov rax, qword [rdi + 0xa0]
test rax, rax
je case.0x140108697.36
mov esi, dword [rax + 0x2c]
test esi, esi
je case.0x140108697.36
dec esi
jmp 0x140108763
mov rsi, qword [rdi + 0xa0]
test rsi, rsi
je case.0x140108697.36
mov esi, dword [rsi + 0x2c]
inc esi
cmp esi, r8d
jb 0x140108763
lea esi, [r8 - 1]
jmp 0x140108763
mov rsi, qword [rdi + 0xa0]
test rsi, rsi
je 0x1401086ef
mov esi, dword [rsi + 0x2c]
jmp 0x1401086f2
mov esi, r15d
test byte [rdi + 0x40], 8
je 0x140108700
mov ecx, dword [rdi + 0x84]
jmp 0x140108703
mov ecx, r15d
mov eax, dword [rdi + 0x74]
sub eax, dword [rdi + 0x78]
sub eax, ecx
js 0x140108b36
cdq
idiv dword [rdi + 0x7c]
sub eax, 1
js 0x140108b36
mov ecx, dword [rdi + 0x88]
cmp r9d, 0x21
jne 0x14010873f
cmp esi, ecx
jbe 0x140108732
mov esi, ecx
jmp 0x140108763
cmp esi, eax
jb case.0x140108697.36
sub esi, eax
jmp 0x140108763
mov esi, r15d
jmp 0x140108763
add ecx, eax
cmp ecx, r8d
jb 0x14010874a
lea ecx, [r8 - 1]
cmp esi, ecx
jae 0x140108752
mov esi, ecx
jmp 0x140108763
add esi, eax
cmp esi, r8d
jb 0x140108763
lea esi, [r8 - 1]
jmp 0x140108763
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.1401078b0
shr bx, 0xf
test bl, bl
je 0x140108904
mov ecx, dword [rdi + 0xac]
cmp ecx, 0xffffffff
je 0x140108904
cmp esi, ecx
jbe 0x1401087da
mov edx, ecx
mov ecx, esi
jmp 0x1401087dc
mov edx, esi
mov rax, qword [rdi + 0x130]
mov r8d, dword [rax]
test r8d, r8d
je 0x140108a5d
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 0x140108856
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 0x14010884b
and eax, 0xfffffffd
cmp ebx, edx
mov dword [r10], eax
mov eax, edx
cmovbe eax, ebx
mov ebx, eax
cmp ebp, edx
jae 0x14010884b
mov ebp, edx
inc edx
add r9, 8
cmp edx, r8d
jb 0x140108820
cmp r8d, r11d
ja 0x140108896
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 0x14010888e
test al, 2
jne 0x14010888e
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 0x140108860
lea r8d, [r11 + 1]
cmp r8d, r14d
ja 0x1401088d7
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 0x1401088cf
and eax, 0xfffffffd
cmp ebx, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, ebx
mov ebx, eax
cmp ebp, r8d
jae 0x1401088cf
mov ebp, r8d
inc r8d
cmp r8d, r14d
jbe 0x1401088a0
cmp ebx, ebp
ja 0x140108a65
mov rax, qword [rdi + 0xc8]
xor r9d, r9d
mov rcx, qword [rdi]
xor r8d, r8d
mov edx, 0xb
mov qword [rsp + 0x20], rax
call qword [rdi + 0xc0]
jmp 0x140108a65
test bpl, bpl
jne 0x140108aee
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 0x140108a5d
lea r11d, [rcx - 1]
cmp esi, r11d
jbe 0x140108945
mov r8d, ecx
mov eax, r11d
mov ecx, r11d
jmp 0x140108949
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 0x1401089a6
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 0x14010899b
and eax, 0xfffffffd
cmp ebx, edx
mov dword [r10], eax
mov eax, edx
cmovbe eax, ebx
mov ebx, eax
cmp ebp, edx
jae 0x14010899b
mov ebp, edx
inc edx
add r9, 8
cmp edx, r8d
jb 0x140108970
cmp r8d, r14d
ja 0x1401089e9
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 0x1401089e1
test al, 2
jne 0x1401089e1
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 0x1401089b0
lea r8d, [r14 + 1]
cmp r8d, r11d
ja 0x140108a37
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 0x140108a2f
and eax, 0xfffffffd
cmp ebx, r8d
mov dword [r9], eax
mov eax, r8d
cmovbe eax, ebx
mov ebx, eax
cmp ebp, r8d
jae 0x140108a2f
mov ebp, r8d
inc r8d
cmp r8d, r11d
jbe 0x140108a00
cmp ebx, ebp
ja 0x140108a65
mov rax, qword [rdi + 0xc8]
xor r9d, r9d
mov rcx, qword [rdi]
xor r8d, r8d
mov edx, 0xb
mov qword [rsp + 0x20], rax
call qword [rdi + 0xc0]
jmp 0x140108a65
mov ebp, dword [rsp + 0x68]
mov ebx, dword [rsp + 0x68]
mov rax, qword [rdi + 0x130]
cmp ebp, dword [rax]
jae 0x140108aee
cmp ebx, ebp
ja 0x140108aee
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 0x140108ab7
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.1401080d0
mov rcx, qword [rdi + 0x38]
mov r14, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x70]
mov rbx, qword [rsp + 0x60]
test rcx, rcx
je 0x140108b36
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