Function at 0x180027768
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
mov rax, qword [0x1801a5040]
xor rax, rsp
mov qword [rbp - 0x10], rax
mov r13, rcx
xor r10d, r10d
mov rcx, qword [0x1801a5b00]
mov r12, r9
mov rdi, r8
test rcx, rcx
je 0x180027dac
mov r14, qword [rcx + 0x90]
lea rbx, [rcx + 8]
mov eax, 0x204
lea r9d, [rax + 1]
lea r8d, [rax + 8]
cmp edx, eax
ja 0x180027be9
je 0x180027cd2
mov eax, 0x104
lea esi, [r10 + 1]
lea r15d, [rax - 4]
cmp edx, eax
ja 0x180027ab6
je 0x180027aae
mov eax, edx
sub eax, 7
je 0x180027a0b
sub eax, esi
je 0x180027a0b
sub eax, 0x18
je 0x1800279ec
sub eax, 0xe0
je 0x1800278c9
sub eax, esi
je 0x1800278c9
cmp eax, esi
jne 0x180027dac
lea rax, [rdi - 1]
cmp rax, 0xfffe
ja 0x180027dac
test di, di
jne 0x180027844
cmp word [rbx + 0x2b94], r10w
je 0x180027dac
cmp byte [rbx + 0x2b91], r10b
je 0x180027dac
mov ecx, 0xfc00
movzx eax, di
and ax, cx
mov edx, 0xd800
movzx ecx, word [rbx + 0x2b94]
cmp ax, dx
jne 0x18002788b
test cx, cx
je 0x18002787f
mov edx, 0xfffd
mov rcx, rbx
call fcn.1800023a0
mov word [rbx + 0x2b94], di
jmp 0x180027dac
test cx, cx
je 0x1800278b9
mov ecx, 0xdc00
cmp ax, cx
je 0x1800278ac
mov edx, 0xfffd
mov rcx, rbx
call fcn.1800023a0
xor r10d, r10d
jmp 0x1800278b1
mov edi, 0xfffd
mov word [rbx + 0x2b94], r10w
movzx edx, di
mov rcx, rbx
call fcn.1800023a0
jmp 0x180027dac
cmp edx, r15d
je 0x180027aae
mov r14b, r10b
cmp rdi, r15
jae 0x180027dac
lea rbx, [rcx + 8]
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov edx, 0x1000
and al, sil
mov rcx, rbx
mov r8b, al
call fcn.1800025fc
mov ecx, 0x10
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov edx, 0x2000
and al, sil
mov rcx, rbx
mov r8b, al
call fcn.1800025fc
mov ecx, 0x12
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov edx, 0x4000
and al, sil
mov rcx, rbx
mov r8b, al
call fcn.1800025fc
mov ecx, 0x5d
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov edx, 0x8000
and al, sil
mov rcx, rbx
mov r8b, al
call fcn.1800025fc
cmp rdi, 0xd
jne 0x18002797c
shr r12, 0x10
mov eax, 0x10d
test r15w, r12w
cmovne edi, eax
movsxd rcx, edi
call fcn.1800271d4
test eax, eax
je 0x180027995
mov r8d, edi
mov dl, r14b
mov ecx, eax
call fcn.180026a44
cmp edi, 0x10
jne 0x180027b37
mov ebx, 0xa0
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, sil
cmp al, r14b
jne 0x1800279c6
mov r8d, ebx
mov dl, r14b
mov ecx, 0x210
call fcn.180026a44
mov ebx, 0xa1
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, sil
cmp al, r14b
jne 0x180027dac
mov ecx, 0x214
jmp 0x180027bd9
cmp r12w, si
jne 0x180027dac
call fcn.180026998
test al, al
je 0x180027dac
mov rax, rsi
jmp 0x180027dae
mov rcx, qword [rbx + 0xf8]
cmp edx, 7
sete r9b
mov eax, dword [rcx + 0x3fe0]
sub eax, esi
js 0x180027a3f
movsxd r8, eax
imul rax, r8, 0x1c
add rax, qword [rcx + 0x3fe8]
cmp dword [rax], 6
je 0x180027aa3
sub rax, 0x1c
sub r8, rsi
jns 0x180027a31
cmp byte [rcx + 0x2b98], r10b
sete r8b
cmp r8b, r9b
je 0x180027dac
cmp byte [rbx + 0x73], r10b
je 0x180027a62
cmp edx, 7
jne 0x180027dac
xor eax, eax
lea rdx, [rbp - 0x30]
mov qword [rbp - 0x20], rax
xorps xmm0, xmm0
movups xmmword [rbp - 0x30], xmm0
mov dword [rbp - 0x18], eax
mov eax, dword [rcx + 0x4004]
mov dword [rbp - 0x28], eax
inc eax
mov dword [rcx + 0x4004], eax
add rcx, 0x3fe0
mov dword [rbp - 0x30], 6
mov byte [rbp - 0x24], r9b
call fcn.180018020
jmp 0x180027dac
test rax, rax
je 0x180027a3f
mov r8b, byte [rax + 0xc]
jmp 0x180027a4a
mov r14b, sil
jmp 0x1800278d5
mov eax, edx
sub eax, 0x105
je 0x1800278d2
sub eax, 0xfb
je 0x180027ae7
sub eax, esi
je 0x180027cd7
sub eax, esi
je 0x180027d4c
cmp eax, esi
je 0x180027cd7
jmp 0x180027dac
mov qword [r14 + 8], r13
cmp byte [r14 + 0x10], r10b
jne 0x180027b18
mov r15d, 2
mov dword [rbp - 0x30], 0x18
lea rcx, [rbp - 0x30]
mov dword [rbp - 0x2c], r15d
mov qword [rbp - 0x28], r13
mov dword [rbp - 0x20], r10d
call qword [sym.imp.USER32.dll_TrackMouseEvent]
mov byte [r14 + 0x10], sil
mov rax, r12
shr rax, 0x10
cwde
movd xmm2, eax
movsx eax, r12w
cvtdq2ps xmm2, xmm2
movd xmm1, eax
cvtdq2ps xmm1, xmm1
jmp 0x180027c94
cmp edi, 0x11
jne 0x180027b87
mov ebx, 0xa2
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, sil
cmp al, r14b
jne 0x180027b64
mov r8d, ebx
mov dl, r14b
mov ecx, 0x20f
call fcn.180026a44
mov ebx, 0xa3
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, sil
cmp al, r14b
jne 0x180027dac
mov ecx, 0x213
jmp 0x180027bd9
cmp edi, 0x12
jne 0x180027dac
mov ebx, 0xa4
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, sil
cmp al, r14b
jne 0x180027bb8
mov r8d, ebx
mov dl, r14b
mov ecx, 0x211
call fcn.180026a44
mov ebx, 0xa5
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, sil
cmp al, r14b
jne 0x180027dac
mov ecx, 0x215
mov r8d, ebx
mov dl, r14b
call fcn.180026a44
jmp 0x180027dac
mov eax, 0x20b
cmp edx, eax
ja 0x180027c56
je 0x180027cd2
mov eax, edx
sub eax, r9d
je 0x180027d47
sub eax, 1
je 0x180027cd2
sub eax, 1
je 0x180027cd2
sub eax, 1
je 0x180027d47
sub eax, 1
je 0x180027cd2
cmp eax, 1
jne 0x180027dac
shr rdi, 0x10
xorps xmm1, xmm1
movsx eax, di
movd xmm2, eax
cvtdq2ps xmm2, xmm2
divss xmm2, dword [0x18019f444]
mov rcx, rbx
call fcn.180002918
jmp 0x180027dac
mov eax, edx
sub eax, r8d
je 0x180027d47
sub eax, 1
je 0x180027cd2
sub eax, 1
je 0x180027cb4
sub eax, 0xb
je 0x180027ca1
cmp eax, 0x8a
jne 0x180027dac
cmp qword [r14 + 8], r13
jne 0x180027c85
mov qword [r14 + 8], r10
movss xmm1, dword [0x18019f4d4]
movaps xmm2, xmm1
mov byte [r14 + 0x10], r10b
mov rcx, rbx
call fcn.180002628
jmp 0x180027dac
cmp edi, 7
jne 0x180027dac
mov byte [r14 + 0x2d], 1
jmp 0x180027dac
shr rdi, 0x10
xorps xmm2, xmm2
movsx eax, di
movd xmm1, eax
cvtdq2ps xmm1, xmm1
divss xmm1, dword [0x18019f444]
jmp 0x180027c49
mov esi, 1
mov ecx, 0xfffffffd
lea eax, [rdx - 0x204]
test ecx, eax
mov r12d, r10d
lea eax, [rdx - 0x207]
mov r15d, 2
cmove r12d, esi
test ecx, eax
lea eax, [rdx - 0x20b]
cmove r12d, r15d
test ecx, eax
jne 0x180027d19
shr rdi, 0x10
mov r12d, r10d
cmp di, si
setne r12b
add r12d, 3
cmp dword [r14 + 0x14], r10d
jne 0x180027d33
call qword [sym.imp.USER32.dll_GetCapture]
test rax, rax
jne 0x180027d33
mov rcx, r13
call qword [sym.imp.USER32.dll_SetCapture]
mov eax, dword [r14 + 0x14]
mov r8b, sil
bts eax, r12d
mov edx, r12d
mov dword [r14 + 0x14], eax
jmp 0x180027da4
mov esi, 1
cmp edx, r9d
mov r15d, r10d
sete r15b
cmp edx, 0x208
jne 0x180027d66
mov r15d, 2
jmp 0x180027d7d
cmp edx, r8d
jne 0x180027d7d
shr rdi, 0x10
mov r15d, r10d
cmp di, si
setne r15b
add r15d, 3
mov eax, dword [r14 + 0x14]
btr eax, r15d
mov dword [r14 + 0x14], eax
test eax, eax
jne 0x180027d9e
call qword [sym.imp.USER32.dll_GetCapture]
cmp rax, r13
jne 0x180027d9e
call qword [sym.imp.USER32.dll_ReleaseCapture]
xor r8d, r8d
mov edx, r15d
mov rcx, rbx
call fcn.180002760
xor eax, eax
mov rcx, qword [rbp - 0x10]
xor rcx, rsp
call fcn.180043720
mov rbx, qword [rsp + 0x98]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret