Function at 0x180039190
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
sub rsp, 0x20
mov eax, 0x80000000
mov rbp, rcx
test rax, r8
je 0x1800391f8
mov rbx, qword [rcx + 8]
mov rcx, qword [rbx]
mov rax, qword [rbx + 8]
cmp rcx, rax
je 0x1800391ea
cmp dword [rcx], edx
je 0x1800391d2
add rcx, 4
cmp rcx, rax
jne 0x1800391b7
or eax, 0xffffffff
mov rbx, qword [rsp + 0x48]
add rsp, 0x20
pop rbp
ret
lea rdx, [rcx + 4]
mov r8, rax
sub r8, rdx
and r8, 0xfffffffffffffffc
call fcn.1800b54c0
add qword [rbx + 8], 0xfffffffffffffffc
or eax, 0xffffffff
mov rbx, qword [rsp + 0x48]
add rsp, 0x20
pop rbp
ret
lea eax, [rdx - 0xa0]
mov dword [rsp + 0x40], edx
cmp eax, 1
jbe 0x180039219
lea eax, [rdx - 0xa2]
cmp eax, 1
ja 0x180039222
mov edx, 0x11
jmp 0x18003921e
mov edx, 0x10
mov dword [rsp + 0x40], edx
mov rcx, qword [rcx + 8]
mov rax, qword [rcx]
mov r8, qword [rcx + 8]
cmp rax, r8
je 0x18003923f
cmp dword [rax], edx
je 0x180039249
add rax, 4
cmp rax, r8
jne 0x180039232
lea rdx, [rsp + 0x40]
call fcn.180039d60
mov rax, qword [rbp + 8]
mov rbx, qword [rax]
cmp rbx, qword [rax + 8]
je 0x1800392ad
mov qword [rsp + 0x30], rsi
lea rsi, [rbx + 4]
mov qword [rsp + 0x38], rdi
mov ecx, dword [rbx]
call qword [sym.imp.USER32.dll_GetKeyState]
test al, al
js 0x180039291
mov rdi, qword [rbp + 8]
mov rdx, rsi
mov rcx, rbx
mov r8, qword [rdi + 8]
sub r8, rsi
and r8, 0xfffffffffffffffc
call fcn.1800b54c0
add qword [rdi + 8], 0xfffffffffffffffc
jmp 0x180039299
add rbx, 4
add rsi, 4
mov rax, qword [rbp + 8]
cmp rbx, qword [rax + 8]
jne 0x180039264
mov rdi, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x30]
mov rcx, rbp
mov rbx, qword [rsp + 0x48]
add rsp, 0x20
pop rbp
jmp 0x1800392c0
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r14
push r15
sub rsp, 0x20
mov rax, qword [rcx]
mov rbp, rcx
mov r15, qword [rax]
mov rdx, qword [r15]
cmp rdx, r15
je 0x180039416
nop dword [rax]
mov r14, qword [rdx + 0x40]
mov rcx, qword [r14]
mov rdi, qword [rcx + 8]
mov rcx, qword [rcx]
mov rax, rdi
sub rax, rcx
sar rax, 2
test eax, eax
jle 0x18003936e
movsxd rbx, eax
cmp rcx, rdi
je 0x1800393b6
mov rax, qword [rbp + 8]
mov rsi, qword [rax]
mov r10, qword [rax + 8]
nop word [rax + rax]
mov r9d, dword [rcx]
xor r11d, r11d
xor r8d, r8d
mov rax, rsi
cmp rsi, r10
je 0x18003935a
cmp dword [rax], r9d
je 0x180039354
add rax, 4
inc r8d
cmp rax, r10
jne 0x180039341
jmp 0x18003935a
mov r11d, 1
lea eax, [r9 - 0x10]
cmp eax, 1
ja 0x1800393a4
cmp rbx, 2
jne 0x18003939e
test r8d, r8d
jle 0x1800393a4
cmp byte [rdx + 0x19], 0
jne 0x18003940d
mov rax, qword [rdx + 0x10]
cmp byte [rax + 0x19], 0
jne 0x1800393ed
mov rdx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
jne 0x18003940d
nop
mov rdx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
je 0x180039390
jmp 0x18003940d
cmp rbx, 1
jle 0x18003936e
test r11d, r11d
je 0x18003936e
add rcx, 4
cmp rcx, rdi
jne 0x180039330
mov r9, qword [rbp + 0x20]
or ebx, 0xffffffff
test r9, r9
je 0x180039617
mov eax, dword [r14 + 8]
add eax, 0xffffff40
cmp eax, 0x21
ja case.0x1800393eb.200
lea rdx, [0x180000000]
cdqe
mov ecx, dword [rdx + rax*4 + 0x39620]
add rcx, rdx
jmp rcx
mov rax, qword [rdx + 8]
cmp byte [rax + 0x19], 0
jne 0x18003940a
cmp rdx, qword [rax + 0x10]
jne 0x18003940a
mov rdx, rax
mov rax, qword [rax + 8]
cmp byte [rax + 0x19], 0
je 0x1800393f7
mov rdx, rax
cmp rdx, r15
jne 0x1800392f0
or eax, 0xffffffff
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
add rsp, 0x20
pop r15
pop r14
pop rdi
ret
mov r8, qword [r9]
mov ebx, 0x100
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x304
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x400
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x402
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x405
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x403
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 1
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 3
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 2
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x420
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0xf
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x10
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x17
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x1e
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x150
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x13
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x12
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x11
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x18
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov r8, qword [r9]
mov ebx, 0x1f
mov rcx, r9
mov edx, ebx
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419
mov ebx, 0x719
mov r8, qword [r9]
mov edx, ebx
mov rcx, r9
call qword [r8 + 0x20]
mov eax, ebx
jmp 0x180039419