Function at 0x2f8ab1085
Capabilities:
Log keystrokes via polling

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x40
mov dword [rbp + 0x10], ecx
mov eax, dword [0x2f8ab4174]
sub eax, 0x237da49c
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
or eax, 0x5f91a5ae
mov dword [0x2f8ab4174], eax
mov edx, 0
mov ecx, 0x4c
mov rax, qword [sym.imp.USER32.dll_GetIconInfo]
call rax
movzx eax, byte [0x2f8ab4170]
movzx eax, al
imul eax, eax, 0x94996c43
mov dword [0x2f8ab4174], eax
movzx eax, byte [0x2f8ab4170]
movzx eax, al
and eax, 0xb717a876
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
sub eax, 0x75
mov byte [0x2f8ab4170], al
mov eax, dword [0x2f8ab4174]
imul eax, eax, 0x300da511
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
imul eax, eax, 0x663389f2
mov dword [0x2f8ab4174], eax
mov dword [rbp - 4], 0x1ec1
mov eax, dword [0x2f8ab4174]
imul eax, eax, 0x91d1288f
mov dword [0x2f8ab4174], eax
movzx eax, byte [0x2f8ab4170]
movzx eax, al
and eax, 0x5cf95a3d
mov dword [0x2f8ab4174], eax
movzx eax, byte [0x2f8ab4170]
add eax, 0x69
mov byte [0x2f8ab4170], al
movzx eax, byte [0x2f8ab4170]
movzx eax, al
xor eax, 0x80b7e7cb
mov dword [0x2f8ab4174], eax
mov eax, dword [rbp + 0x10]
mov dword [rbp - 0x14], eax
mov eax, dword [0x2f8ab4174]
add eax, 0x5b72720f
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
imul eax, eax, 0x5e01390b
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
xor eax, 0xffffffa3
mov byte [0x2f8ab4170], al
mov eax, dword [0x2f8ab4174]
mov edx, 0xffffffe5
imul eax, edx
mov byte [0x2f8ab4170], al
lea rax, [rbp - 0x14]
mov qword [rbp - 0x10], rax
movzx eax, byte [0x2f8ab4170]
movzx eax, al
xor eax, 0x87310f04
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
add eax, 0x1e
mov byte [0x2f8ab4170], al
movzx eax, byte [0x2f8ab4170]
sub eax, 0x38
mov byte [0x2f8ab4170], al
movzx eax, byte [0x2f8ab4170]
movzx eax, al
sub eax, 0x7ab339d7
mov dword [0x2f8ab4174], eax
movzx eax, byte [0x2f8ab4170]
movzx eax, al
and eax, 0x60458beb
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
add eax, 0x3ef83454
mov dword [0x2f8ab4174], eax
mov eax, dword [rbp - 4]
lea edx, [rax*8]
mov eax, dword [rbp - 4]
imul eax, edx
mov dword [rbp - 4], eax
mov eax, dword [0x2f8ab4174]
imul eax, eax, 0x6203d252
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
imul eax, eax, 0x41ce7d30
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
and eax, 0x861ba438
mov dword [0x2f8ab4174], eax
movzx eax, byte [0x2f8ab4170]
xor eax, 0x68
mov byte [0x2f8ab4170], al
mov edx, 0
mov ecx, 0x4b
mov rax, qword [sym.imp.USER32.dll_GetIconInfo]
call rax
mov eax, dword [0x2f8ab4174]
mov edx, eax
mov eax, 0
sub eax, edx
shl eax, 2
mov byte [0x2f8ab4170], al
mov eax, dword [0x2f8ab4174]
and eax, 0xe46d5b42
mov dword [0x2f8ab4174], eax
movzx eax, byte [0x2f8ab4170]
mov edx, 0x34
imul eax, edx
mov byte [0x2f8ab4170], al
mov rax, qword [rbp - 0x10]
movzx edx, byte [rax]
mov rax, qword [0x2f8ab5510]
mov byte [rax], dl
mov eax, dword [0x2f8ab4174]
or eax, 0xe33c463b
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
or eax, 0x6bf3f88d
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
and eax, 0x2d
mov byte [0x2f8ab4170], al
mov eax, dword [0x2f8ab4174]
imul eax, eax, 0x3c797079
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
and eax, 0xffffffa0
mov byte [0x2f8ab4170], al
mov eax, dword [rbp - 4]
lea edx, [rax*8]
mov eax, dword [rbp - 4]
imul eax, edx
mov dword [rbp - 4], eax
mov rax, qword [rbp - 0x10]
movzx edx, byte [rax + 1]
mov rax, qword [0x2f8ab5520]
mov byte [rax], dl
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_GetKeyboardState]
call rax
movzx eax, byte [0x2f8ab4170]
movzx eax, al
and eax, 0x6af0338d
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
or eax, 0x98e8d525
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
and eax, 0x61
mov byte [0x2f8ab4170], al
mov edx, 0
mov ecx, 0x73
mov rax, qword [sym.imp.USER32.dll_ReleaseDC]
call rax
movzx eax, byte [0x2f8ab4170]
sub eax, 0x59
mov byte [0x2f8ab4170], al
mov eax, dword [rbp - 4]
lea edx, [rax*8]
mov eax, dword [rbp - 4]
imul eax, edx
mov dword [rbp - 4], eax
mov rax, qword [rbp - 0x10]
movzx edx, byte [rax + 2]
mov rax, qword [0x2f8ab5530]
mov byte [rax], dl
movzx eax, byte [0x2f8ab4170]
movzx eax, al
imul eax, eax, 0xa1ea6752
mov dword [0x2f8ab4174], eax
movzx eax, byte [0x2f8ab4170]
movzx eax, al
xor eax, 0xdbe898ba
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
shl eax, 6
mov byte [0x2f8ab4170], al
mov eax, dword [0x2f8ab4174]
sub eax, 0x4f4b6214
mov dword [0x2f8ab4174], eax
mov eax, dword [0x2f8ab4174]
imul eax, eax, 0xdf59ec43
mov dword [0x2f8ab4174], eax
mov eax, dword [rbp - 4]
lea edx, [rax*8]
mov eax, dword [rbp - 4]
imul eax, edx
mov dword [rbp - 4], eax
mov rax, qword [0x2f8ab5520]
movzx eax, byte [rax]
not eax
mov edx, eax
mov rax, qword [0x2f8ab5520]
mov byte [rax], dl
mov eax, dword [0x2f8ab4174]
sub eax, 4
mov byte [0x2f8ab4170], al
mov eax, dword [0x2f8ab4174]
sub eax, 0x39
mov byte [0x2f8ab4170], al
mov eax, dword [0x2f8ab4174]
or eax, 0x6c
mov byte [0x2f8ab4170], al
movzx eax, byte [0x2f8ab4170]
movzx eax, al
or eax, 0x4709fa82
mov dword [0x2f8ab4174], eax
mov eax, dword [rbp - 4]
lea edx, [rax*8]
mov eax, dword [rbp - 4]
imul eax, edx
mov dword [rbp - 4], eax
nop
add rsp, 0x40
pop rbp
ret