Function at 0x2f8aa5571
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x60
mov qword [rbp + 0x10], rcx
movzx eax, word [0x2f8ab407a]
or eax, 0xfffffff6
mov byte [0x2f8ab4070], al
movzx eax, byte [0x2f8ab4078]
and eax, 7
mov byte [0x2f8ab4078], al
movzx eax, word [0x2f8ab407a]
mov edx, 0xffffffd8
imul eax, edx
mov byte [0x2f8ab4070], al
movzx eax, word [0x2f8ab407a]
mov edx, 0x2b
imul eax, edx
mov byte [0x2f8ab4070], al
mov eax, dword [0x2f8ab4074]
mov edx, eax
mov eax, edx
shl edx, 6
sub eax, edx
add eax, eax
mov byte [0x2f8ab4070], al
mov ecx, 0xf4
mov rax, qword [sym.imp.USER32.dll_GetDC]
call rax
movzx eax, byte [0x2f8ab4078]
movzx eax, al
add eax, 0x5a2b7150
mov dword [0x2f8ab4074], eax
mov eax, dword [0x2f8ab4074]
or eax, 0x8123bb95
mov dword [0x2f8ab4074], eax
mov dword [rbp - 4], 0x9112bcd7
mov eax, dword [0x2f8ab4074]
xor eax, 7
mov byte [0x2f8ab4078], al
movzx eax, byte [0x2f8ab4070]
sub eax, 0x17
mov byte [0x2f8ab4078], al
movzx eax, byte [0x2f8ab4070]
sub eax, 0x14
mov byte [0x2f8ab4078], al
mov dword [rbp - 8], 0x91112cd7
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_GetKeyboardState]
call rax
movzx eax, word [0x2f8ab407a]
sub eax, 0x15
mov byte [0x2f8ab4070], al
movzx eax, word [0x2f8ab407a]
add eax, 0x34
mov byte [0x2f8ab4070], al
movzx eax, word [0x2f8ab407a]
xor eax, 0xffffffa4
mov byte [0x2f8ab4070], al
mov dword [rbp - 0x14], 0xed12bcd7
mov eax, dword [0x2f8ab4074]
add ax, 0x4f4a
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4078]
movzx eax, al
add eax, 0x187d10ed
mov dword [0x2f8ab4074], eax
mov eax, dword [0x2f8ab4074]
or eax, 0xfffffff0
mov byte [0x2f8ab4070], al
mov dword [rbp - 0x18], 0x9112b7d7
movzx eax, byte [0x2f8ab4078]
movzx eax, al
sub eax, 0x30fe774
mov dword [0x2f8ab4074], eax
movzx eax, byte [0x2f8ab4070]
and eax, 0xffffff8a
mov byte [0x2f8ab4070], al
mov eax, dword [0x2f8ab4074]
sub eax, 0x63493dcc
mov dword [0x2f8ab4074], eax
mov eax, dword [0x2f8ab4074]
xor eax, 0x4e
mov byte [0x2f8ab4070], al
mov dword [rbp - 0x1c], 0x925abcd7
movzx eax, word [0x2f8ab407a]
and ax, 0x771c
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4078]
movzx eax, al
add ax, 0x11e4
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4078]
movzx eax, al
xor ax, 0x404b
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4070]
and eax, 0x6a
mov byte [0x2f8ab4078], al
movzx eax, word [0x2f8ab407a]
movzx eax, ax
or eax, 0xad72658c
mov dword [0x2f8ab4074], eax
mov dword [rbp - 0xc], 0
mov ecx, 0xe5
mov rax, qword [sym.imp.USER32.dll_GetDC]
call rax
movzx eax, word [0x2f8ab407a]
sub ax, 0x7e96
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4070]
movzx eax, al
and ax, 0x60e7
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4070]
movzx eax, al
xor eax, 0x2f360ef5
mov dword [0x2f8ab4074], eax
movzx eax, byte [0x2f8ab4078]
add eax, 0x24
mov byte [0x2f8ab4078], al
movzx eax, word [0x2f8ab407a]
add ax, 0x37c7
mov word [0x2f8ab407a], ax
mov dword [rbp - 0x10], 0x39534dee
mov ecx, 0x1f
mov rax, qword [sym.imp.USER32.dll_GetDC]
call rax
movzx eax, byte [0x2f8ab4070]
movzx eax, al
sub ax, 0x11f2
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4070]
movzx eax, al
sub eax, 0x6b55bfcd
mov dword [0x2f8ab4074], eax
movzx eax, word [0x2f8ab407a]
or eax, 0x54
mov byte [0x2f8ab4070], al
mov dword [rbp - 0x20], 0xbd063088
movzx eax, byte [0x2f8ab4070]
movzx eax, al
add eax, 0x7c90d10a
mov dword [0x2f8ab4074], eax
mov eax, dword [0x2f8ab4074]
imul ax, ax, 0x47ec
mov word [0x2f8ab407a], ax
movzx eax, word [0x2f8ab407a]
movzx eax, ax
imul eax, eax, 0x9d560c5f
mov dword [0x2f8ab4074], eax
movzx eax, byte [0x2f8ab4070]
xor eax, 0x47
mov byte [0x2f8ab4070], al
mov ecx, 0xdc
mov rax, qword [sym.imp.USER32.dll_GetSysColorBrush]
call rax
mov dword [rbp - 0x24], 0x9b4a014c
movzx eax, byte [0x2f8ab4070]
movzx eax, al
add ax, 0x1cbf
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4070]
movzx eax, al
imul ax, ax, 0xb893
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4070]
movzx eax, al
imul ax, ax, 0xd746
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4070]
movzx eax, al
xor eax, 0x94a70060
mov dword [0x2f8ab4074], eax
mov dword [rbp - 0x28], 0x9112bcd7
movzx eax, byte [0x2f8ab4078]
movzx eax, al
sub ax, 0x3d7d
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4078]
movzx eax, al
sub ax, 0x52be
mov word [0x2f8ab407a], ax
movzx eax, word [0x2f8ab407a]
xor eax, 0x19
mov byte [0x2f8ab4078], al
movzx eax, byte [0x2f8ab4078]
movzx eax, al
or ax, 0x9223
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4070]
mov ecx, eax
shl eax, 7
mov edx, eax
mov eax, ecx
sub eax, edx
mov byte [0x2f8ab4078], al
mov eax, dword [0x2f8ab4074]
xor eax, 0x63
mov byte [0x2f8ab4078], al
movzx eax, byte [0x2f8ab4078]
movzx eax, al
and ax, 0xd71f
mov word [0x2f8ab407a], ax
mov eax, dword [0x2f8ab4074]
add eax, 0x75
mov byte [0x2f8ab4070], al
mov dword [rbp - 0x2c], 0x281319b1
movzx eax, byte [0x2f8ab4078]
movzx eax, al
xor ax, 0xe69a
mov word [0x2f8ab407a], ax
mov r9d, 0
mov r8d, 0
mov edx, 0
mov ecx, 0xae
mov rax, qword [sym.imp.USER32.dll_RedrawWindow]
call rax
mov eax, dword [0x2f8ab4074]
sub ax, 0x3c19
mov word [0x2f8ab407a], ax
mov eax, dword [0x2f8ab4074]
and eax, 0xa44678d8
mov dword [0x2f8ab4074], eax
mov dword [rbp - 0x30], 0x1de6784d
movzx eax, byte [0x2f8ab4070]
movzx eax, al
sub ax, 0x1009
mov word [0x2f8ab407a], ax
movzx eax, word [0x2f8ab407a]
sub ax, 0x13d
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4078]
and eax, 0xffffffd0
mov byte [0x2f8ab4078], al
mov dword [rbp - 0x34], 0x49ad9b91
movzx eax, byte [0x2f8ab4078]
xor eax, 0x12
mov byte [0x2f8ab4070], al
movzx eax, byte [0x2f8ab4078]
movzx eax, al
add ax, 0xd66
mov word [0x2f8ab407a], ax
movzx eax, byte [0x2f8ab4070]
movzx eax, al
or eax, 0xc1562f61
mov dword [0x2f8ab4074], eax
mov ecx, 0x21
mov rax, qword [sym.imp.USER32.dll_GetDC]
call rax
movzx eax, byte [0x2f8ab4070]
movzx eax, al
or ax, 0x40fb
mov word [0x2f8ab407a], ax
movzx eax, word [0x2f8ab407a]
movzx eax, ax
imul eax, eax, 0x7dd9e0ae
mov dword [0x2f8ab4074], eax
movzx eax, byte [0x2f8ab4078]
movzx eax, al
xor eax, 0x11dffad9
mov dword [0x2f8ab4074], eax
jmp 0x2f8aa5cd9
mov eax, dword [0x2f8ab4074]
sub eax, 7
mov byte [0x2f8ab4070], al
movzx eax, byte [0x2f8ab4078]
and eax, 0xffffffdf
mov byte [0x2f8ab4070], al
mov ecx, 0xf
mov rax, qword [sym.imp.USER32.dll_IsWindow]
call rax
movzx eax, byte [0x2f8ab4078]
sub eax, 0x73
mov byte [0x2f8ab4070], al
movzx eax, byte [0x2f8ab4070]
movzx eax, al
or ax, 0xefa1
mov word [0x2f8ab407a], ax
movzx eax, word [0x2f8ab407a]
movzx eax, ax
or eax, 0xe306788a
mov dword [0x2f8ab4074], eax
movzx eax, word [0x2f8ab407a]
xor eax, 0xffffff8d
mov byte [0x2f8ab4070], al
movzx eax, word [0x2f8ab407a]
xor eax, 0x20
mov byte [0x2f8ab4078], al
movzx eax, byte [0x2f8ab4070]
movzx eax, al
add eax, 0x1a78212d
mov dword [0x2f8ab4074], eax
movzx eax, word [0x2f8ab407a]
movzx eax, ax
imul eax, eax, 0xdf503ed5
mov dword [0x2f8ab4074], eax
mov eax, dword [rbp - 0xc]
lea edx, [rax + 1]
mov dword [rbp - 0xc], edx
mov edx, eax
mov rax, qword [rbp + 0x10]
add rax, rdx
movzx eax, word [rax]
mov word [rbp - 0x36], ax
mov eax, dword [0x2f8ab4074]
xor eax, 0x79
mov byte [0x2f8ab4070], al
movzx eax, byte [0x2f8ab4070]
movzx eax, al
and eax, 0x226fcfdc
mov dword [0x2f8ab4074], eax
movzx eax, byte [0x2f8ab4078]
mov edx, 0xffffffe5
imul eax, edx
mov byte [0x2f8ab4070], al
movzx eax, byte [0x2f8ab4078]
add eax, eax
mov byte [0x2f8ab4070], al
mov eax, dword [rbp - 0x18]
imul eax, eax, 0xa5101
mov ecx, eax
mov edx, dword [rbp - 0x18]
mov eax, dword [rbp - 8]
add edx, eax
mov eax, dword [rbp - 0x18]
imul eax, edx
lea edx, [rcx + rax]
mov eax, dword [rbp - 0x14]
add eax, edx
sub eax, 0xa5101
mov dword [rbp - 8], eax
movzx eax, word [rbp - 0x36]
mov edx, dword [rbp - 0x10]
ror edx, 8
add eax, edx
xor dword [rbp - 0x10], eax
movzx eax, byte [0x2f8ab4078]
movzx eax, al
sub ax, 0x747
mov word [0x2f8ab407a], ax
movzx eax, word [0x2f8ab407a]
movzx eax, ax
and eax, 0x902e5abe
mov dword [0x2f8ab4074], eax
mov eax, dword [0x2f8ab4074]
and eax, 0xffffffe7
mov byte [0x2f8ab4070], al
movzx eax, word [0x2f8ab407a]
movzx eax, ax
xor eax, 0x5556cfff
mov dword [0x2f8ab4074], eax
mov eax, dword [0x2f8ab4074]
mov edx, eax
mov eax, edx
shl eax, 3
add eax, edx
lea edx, [rax*8]
add eax, edx
mov byte [0x2f8ab4070], al
movzx eax, word [0x2f8ab407a]
or eax, 0x59
mov byte [0x2f8ab4070], al
movzx eax, byte [0x2f8ab4078]
movzx eax, al
sub eax, 0x5270b27c
mov dword [0x2f8ab4074], eax
mov eax, 0x64c12
sub eax, dword [rbp - 0x1c]
imul eax, eax, 0x16252
mov edx, dword [rbp - 0x1c]
sub edx, 1
imul edx, edx, 0x37cab
add edx, 0x16252
sub eax, edx
imul eax, dword [rbp - 0x1c]
imul eax, eax, 0x90f5162e
mov dword [rbp - 4], eax
mov edx, dword [rbp - 0xc]
mov rax, qword [rbp + 0x10]
add rax, rdx
movzx eax, byte [rax]
test al, al
jne 0x2f8aa5ace
movzx eax, byte [0x2f8ab4070]
add eax, 0x4a
mov byte [0x2f8ab4070], al
movzx eax, word [0x2f8ab407a]
sub eax, 0x21
mov byte [0x2f8ab4078], al
movzx eax, byte [0x2f8ab4070]
xor eax, 0xffffffb7
mov byte [0x2f8ab4070], al
movzx eax, word [0x2f8ab407a]
and eax, 0x65
mov byte [0x2f8ab4070], al
mov eax, dword [rbp - 4]
imul edx, eax, 0xfff0b67f
mov eax, dword [rbp - 0x1c]
add eax, 1
imul eax, dword [rbp - 4]
mov ecx, eax
mov eax, dword [rbp - 0x1c]
add eax, ecx
sub edx, eax
lea eax, [rdx + 0xf4981]
mov dword [rbp - 4], eax
movzx eax, word [0x2f8ab407a]
and ax, 0x3592
mov word [0x2f8ab407a], ax
movzx eax, word [0x2f8ab407a]
xor eax, 0xffffffbc
mov byte [0x2f8ab4078], al
movzx eax, byte [0x2f8ab4078]
or eax, 0xffffffbe
mov byte [0x2f8ab4078], al
movzx eax, byte [0x2f8ab4078]
movzx eax, al
xor eax, 0x56fc93ce
mov dword [0x2f8ab4074], eax
mov eax, dword [0x2f8ab4074]
or eax, 0xc5969231
mov dword [0x2f8ab4074], eax
mov eax, dword [rbp - 0x10]
add rsp, 0x60
pop rbp
ret