Function at 0x2f8aa3e5e
Capabilities:
Authenticate hmac
Log keystrokes via polling

Disassembly:
push rbp
mov rbp, rsp
add rsp, 0xffffffffffffff80
movzx eax, word [0x2f8ab4052]
add eax, 0x25
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4060]
sub eax, 0x46
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4058]
movzx eax, al
add eax, 0x679777d9
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4058]
movzx eax, al
sub eax, 0x55aff393
mov dword [0x2f8ab4054], eax
mov eax, dword [0x2f8ab405c]
and eax, 0x4452c20e
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab4060]
add eax, 0x1b
mov byte [0x2f8ab4059], al
movzx eax, byte [0x2f8ab4059]
movzx eax, al
or ax, 0x549f
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4058]
add eax, 0xe
mov byte [0x2f8ab4059], al
mov rax, qword [0x2f8ab53e0]
mov eax, dword [rax]
mov dword [rbp - 0x14], eax
mov eax, dword [0x2f8ab4060]
or eax, 0xffffffd8
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4050]
add eax, 0x5b
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4058]
movzx eax, al
sub eax, 0x6bdf6dd3
mov dword [0x2f8ab4054], eax
mov rax, qword [0x2f8ab54f0]
mov eax, dword [rax]
mov eax, eax
mov qword [rbp - 0x40], rax
movzx eax, byte [0x2f8ab4058]
movzx eax, al
and ax, 0x84ea
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4059]
movzx eax, al
imul eax, eax, 0xa9b7f2b8
mov dword [0x2f8ab4054], eax
movzx eax, word [0x2f8ab4052]
add eax, 0x69
mov byte [0x2f8ab4050], al
mov dword [rbp - 0x18], 0
movzx eax, byte [0x2f8ab4058]
shl eax, 5
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4060]
xor eax, 0x75
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4050]
movzx eax, al
add eax, 0x105f50c6
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4050]
movzx eax, al
add ax, 0x21c
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4059]
sub eax, 0x3c
mov byte [0x2f8ab4058], al
mov eax, dword [0x2f8ab405c]
or eax, 0xffffff87
mov byte [0x2f8ab4059], al
movzx eax, byte [0x2f8ab4059]
and eax, 0x27
mov byte [0x2f8ab4058], al
mov qword [rbp - 0x48], 0
mov eax, dword [0x2f8ab4054]
sub eax, 0x6a
mov byte [0x2f8ab4058], al
mov ecx, 0xe8
mov rax, qword [sym.imp.USER32.dll_GetDC]
call rax
movzx eax, byte [0x2f8ab4050]
or eax, 0x3e
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4059]
movzx eax, al
sub ax, 0x4f65
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4058]
or eax, 0x67
mov byte [0x2f8ab4058], al
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_GetKeyboardState]
call rax
mov eax, dword [0x2f8ab4054]
xor eax, 9
mov byte [0x2f8ab4050], al
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_GetKeyboardState]
call rax
lea rdx, [rbp - 0x40]
lea rax, [rbp - 0x48]
mov dword [rsp + 0x28], 0x40
mov dword [rsp + 0x20], 0x3000
mov r9, rdx
mov r8d, 0
mov rdx, rax
mov rcx, 0xffffffffffffffff
call fcn.2f8aad699
mov dword [rbp - 0x1c], eax
mov rcx, qword [rbp - 0x40]
mov rax, qword [0x2f8ab5500]
mov rdx, qword [rax]
mov rax, qword [rbp - 0x48]
mov qword [rsp + 0x20], 0
mov r9, rcx
mov r8, rdx
mov rdx, rax
mov rcx, 0xffffffffffffffff
call fcn.2f8aa34c4
mov dword [rbp - 0x1c], eax
mov eax, dword [rbp - 0x14]
mov ecx, eax
call fcn.2f8ab1085
mov eax, dword [0x2f8ab4060]
mov edx, 0x31
imul eax, edx
mov byte [0x2f8ab4059], al
movzx eax, word [0x2f8ab4052]
movzx eax, ax
imul eax, eax, 0x4d3c77b1
mov dword [0x2f8ab405c], eax
mov ecx, 0xf7
mov rax, qword [sym.imp.USER32.dll_IsWindow]
call rax
mov ecx, 0xa7
mov rax, qword [sym.imp.USER32.dll_GetDC]
call rax
movzx eax, byte [0x2f8ab4059]
sub eax, 0x2b
mov byte [0x2f8ab4050], al
mov dword [rbp - 4], 2
mov eax, dword [0x2f8ab4054]
xor eax, 0x9e90616f
mov dword [0x2f8ab4054], eax
mov ecx, 0xd2
mov rax, qword [sym.imp.USER32.dll_IsWindow]
call rax
movzx eax, word [0x2f8ab4052]
add eax, 0x23
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4054]
or eax, 0x65dd57b3
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab4060]
and eax, 0xc4ac2018
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab4054]
add eax, 0x39b1dd9a
mov dword [0x2f8ab4060], eax
movzx eax, word [0x2f8ab4052]
movzx eax, ax
imul eax, eax, 0xb57d991c
mov dword [0x2f8ab405c], eax
mov dword [rbp - 8], 1
movzx eax, byte [0x2f8ab4058]
movzx eax, al
xor eax, 0x1a5212ff
mov dword [0x2f8ab4060], eax
mov eax, dword [0x2f8ab4060]
sub eax, 0x11
mov byte [0x2f8ab4050], al
movzx eax, word [0x2f8ab4052]
or eax, 0xf
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4058]
movzx eax, al
add eax, 0x3a8fc79b
mov dword [0x2f8ab4060], eax
mov eax, dword [0x2f8ab4060]
imul eax, eax, 0x861dad27
mov dword [0x2f8ab405c], eax
mov rax, qword [rbp - 0x48]
mov qword [rbp - 0x28], rax
movzx eax, byte [0x2f8ab4059]
add eax, eax
mov byte [0x2f8ab4050], al
mov eax, dword [0x2f8ab4060]
xor eax, 0x8b2e1fc8
mov dword [0x2f8ab4054], eax
mov eax, dword [0x2f8ab405c]
and ax, 0xf87e
mov word [0x2f8ab4052], ax
mov eax, dword [0x2f8ab4054]
and eax, 0x13
mov byte [0x2f8ab4058], al
mov eax, dword [0x2f8ab4060]
mov edx, 0x6a
imul eax, edx
mov byte [0x2f8ab4050], al
mov eax, dword [0x2f8ab4060]
mov edx, 0xffffffae
imul eax, edx
mov byte [0x2f8ab4050], al
jmp 0x2f8aa4ec5
mov eax, dword [0x2f8ab405c]
sub eax, 0x4255a627
mov dword [0x2f8ab4054], eax
mov eax, dword [0x2f8ab4060]
add eax, 0x107fadaa
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab4054]
xor eax, 0xf8d1ca9a
mov dword [0x2f8ab4060], eax
movzx eax, byte [0x2f8ab4050]
movzx eax, al
imul eax, eax, 0x40f75970
mov dword [0x2f8ab4054], eax
mov eax, dword [0x2f8ab4060]
xor eax, 0x8378abf8
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4058]
movzx eax, al
xor eax, 0x24769a29
mov dword [0x2f8ab4060], eax
movzx eax, byte [0x2f8ab4059]
add eax, 0x33
mov byte [0x2f8ab4059], al
movzx eax, byte [0x2f8ab4050]
and eax, 0x45
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4060]
xor eax, 0xffffffca
mov byte [0x2f8ab4058], al
movzx eax, byte [0x2f8ab4059]
movzx eax, al
imul eax, eax, 0x8e3ce20c
mov dword [0x2f8ab405c], eax
movzx eax, word [0x2f8ab4052]
or eax, 7
mov byte [0x2f8ab4058], al
movzx eax, byte [0x2f8ab4050]
movzx eax, al
xor eax, 0x43fb121
mov dword [0x2f8ab4054], eax
movzx eax, word [0x2f8ab4052]
mov byte [0x2f8ab4059], al
movzx eax, byte [0x2f8ab4058]
add eax, 0x24
mov byte [0x2f8ab4058], al
mov eax, dword [0x2f8ab4060]
and eax, 0xae8b0460
mov dword [0x2f8ab4054], eax
call fcn.2f8ab228c
movzx eax, al
mov dword [rbp - 0x2c], eax
movzx eax, byte [0x2f8ab4058]
xor eax, 0xffffff86
mov byte [0x2f8ab4059], al
movzx eax, byte [0x2f8ab4058]
movzx eax, al
xor eax, 0x591b25b
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab405c]
or ax, 0x6501
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4059]
and eax, 0xffffffd0
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4060]
xor eax, 0x7a
mov byte [0x2f8ab4050], al
mov eax, dword [0x2f8ab4060]
and eax, 4
mov byte [0x2f8ab4059], al
call fcn.2f8ab228c
movzx eax, al
mov dword [rbp - 0x30], eax
movzx eax, byte [0x2f8ab4050]
xor eax, 0x14
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4059]
sub eax, 0x7e
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab405c]
and eax, 0x6b
mov byte [0x2f8ab4058], al
movzx eax, byte [0x2f8ab4058]
movzx eax, al
xor eax, 0xed479a35
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4058]
movzx eax, al
imul eax, eax, 0x6abc27f3
mov dword [0x2f8ab4060], eax
movzx edx, byte [0x2f8ab4050]
mov eax, edx
add eax, eax
add eax, edx
shl eax, 3
mov byte [0x2f8ab4058], al
mov dword [rbp - 0xc], 0
jmp 0x2f8aa482d
mov eax, dword [0x2f8ab4060]
or eax, 0xffffff8e
mov byte [0x2f8ab4050], al
movzx eax, word [0x2f8ab4052]
imul ax, ax, 0xce44
mov word [0x2f8ab4052], ax
mov eax, dword [0x2f8ab4060]
or eax, 0x54f23801
mov dword [0x2f8ab4060], eax
movzx eax, byte [0x2f8ab4059]
mov edx, 0xffffffd5
imul eax, edx
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4060]
sub eax, 0x8bd294f
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4058]
movzx eax, al
imul ax, ax, 0xf62b
mov word [0x2f8ab4052], ax
mov eax, dword [0x2f8ab4054]
and eax, 0xffffff92
mov byte [0x2f8ab4058], al
mov edx, dword [rbp - 4]
mov rax, qword [0x2f8ab54f0]
mov eax, dword [rax]
cmp edx, eax
jb 0x2f8aa45b7
movzx eax, word [0x2f8ab4052]
movzx eax, ax
xor eax, 0xad49efc
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab405c]
mov edx, 0x5b
imul eax, edx
mov byte [0x2f8ab4050], al
mov eax, dword [0x2f8ab4054]
mov edx, 0xffffffda
imul eax, edx
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4059]
movzx eax, al
sub ax, 0x66ed
mov word [0x2f8ab4052], ax
movzx eax, word [0x2f8ab4052]
and ax, 0xdb9d
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4058]
or eax, 0xffffff9e
mov byte [0x2f8ab4050], al
mov eax, dword [0x2f8ab405c]
xor eax, 0x75231e78
mov dword [0x2f8ab4060], eax
jmp 0x2f8aa4839
movzx eax, byte [0x2f8ab4058]
movzx eax, al
or ax, 0x15b1
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4058]
xor eax, 0xffffffa2
mov byte [0x2f8ab4059], al
movzx eax, byte [0x2f8ab4050]
movzx eax, al
sub eax, 0x49a30bcf
mov dword [0x2f8ab4054], eax
movzx eax, byte [0x2f8ab4058]
movzx eax, al
or eax, 0x59adeffc
mov dword [0x2f8ab4054], eax
movzx eax, byte [0x2f8ab4050]
xor eax, 0xd
mov byte [0x2f8ab4050], al
mov edx, 0
mov ecx, 6
mov rax, qword [sym.imp.USER32.dll_ReleaseDC]
call rax
movzx eax, byte [0x2f8ab4050]
movzx eax, al
xor eax, 0xf58e8a57
mov dword [0x2f8ab4054], eax
mov eax, dword [0x2f8ab4054]
add ax, 0xd76
mov word [0x2f8ab4052], ax
mov eax, dword [rbp - 4]
movsxd rdx, eax
mov rax, qword [rbp - 0x28]
add rax, rdx
mov edx, dword [rbp - 8]
movsxd rcx, edx
mov rdx, qword [rbp - 0x28]
add rdx, rcx
movzx eax, byte [rax]
mov byte [rdx], al
movzx eax, byte [0x2f8ab4050]
or eax, 0xffffff92
mov byte [0x2f8ab4058], al
mov eax, dword [0x2f8ab405c]
sub eax, 0x7a
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4058]
add eax, 0x61
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4058]
movzx eax, al
sub eax, 0x66d12367
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4058]
movzx eax, al
sub ax, 0x20e3
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4050]
movzx eax, al
sub eax, 0x111f73ad
mov dword [0x2f8ab4054], eax
cmp dword [rbp - 0x18], 0
jne 0x2f8aa4793
movzx eax, word [0x2f8ab4052]
movzx eax, ax
sub eax, 0x3f95bef9
mov dword [0x2f8ab4060], eax
mov eax, dword [0x2f8ab4060]
sub eax, 0x130f5ee7
mov dword [0x2f8ab4054], eax
mov eax, dword [0x2f8ab4054]
mov edx, 0x5c
imul eax, edx
mov byte [0x2f8ab4058], al
movzx eax, word [0x2f8ab4052]
or eax, 0xffffffba
mov byte [0x2f8ab4050], al
mov eax, dword [0x2f8ab4060]
add eax, 0x45
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab405c]
xor eax, 0x54746bc6
mov dword [0x2f8ab4054], eax
movzx eax, byte [0x2f8ab4059]
movzx eax, al
xor eax, 0x3a55544d
mov dword [0x2f8ab4054], eax
movzx eax, word [0x2f8ab4052]
or ax, 0x1be2
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4059]
movzx eax, al
add eax, 0x2680b5f1
mov dword [0x2f8ab4054], eax
mov dword [rbp - 0x34], 0x57
add dword [rbp - 4], 2
movzx eax, byte [0x2f8ab4059]
movzx eax, al
or eax, 0x1153ed9
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4059]
add eax, 0x64
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4059]
add eax, 0x49
mov byte [0x2f8ab4058], al
mov ecx, 0x28
mov rax, qword [sym.imp.USER32.dll_GetDC]
call rax
add dword [rbp - 8], 1
movzx eax, byte [0x2f8ab4058]
movzx eax, al
add eax, 0xdc5b99d
mov dword [0x2f8ab4060], eax
movzx eax, byte [0x2f8ab4059]
movzx eax, al
xor eax, 0xcbfc8510
mov dword [0x2f8ab4054], eax
movzx eax, byte [0x2f8ab4059]
movzx eax, al
and eax, 0x6d511024
mov dword [0x2f8ab405c], eax
mov rax, qword [rbp - 0x40]
sub rax, 1
mov qword [rbp - 0x40], rax
add dword [rbp - 0xc], 1
mov eax, dword [rbp - 0xc]
cmp eax, dword [rbp - 0x2c]
jl 0x2f8aa449b
mov eax, dword [0x2f8ab4054]
and eax, 0x7f
mov byte [0x2f8ab4059], al
movzx eax, byte [0x2f8ab4050]
sub eax, 0x65
mov byte [0x2f8ab4058], al
movzx eax, byte [0x2f8ab4050]
add eax, 0x6d
mov byte [0x2f8ab4050], al
movzx eax, word [0x2f8ab4052]
or eax, 0x75
mov byte [0x2f8ab4050], al
movzx eax, word [0x2f8ab4052]
movzx eax, ax
or eax, 0x6ada72b8
mov dword [0x2f8ab4054], eax
movzx eax, word [0x2f8ab4052]
movzx eax, ax
sub eax, 0x477c7ddb
mov dword [0x2f8ab405c], eax
movzx eax, word [0x2f8ab4052]
or eax, 0xffffff85
mov byte [0x2f8ab4050], al
sub dword [rbp - 4], 1
mov eax, dword [0x2f8ab4054]
sub eax, 0x6a
mov byte [0x2f8ab4058], al
movzx eax, byte [0x2f8ab4058]
movzx eax, al
add ax, 0x3932
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4059]
movzx eax, al
add ax, 0x2e62
mov word [0x2f8ab4052], ax
mov dword [rbp - 0x10], 0
jmp 0x2f8aa4d49
movzx eax, byte [0x2f8ab4050]
movzx eax, al
sub eax, 0x2a316b21
mov dword [0x2f8ab4054], eax
movzx edx, byte [0x2f8ab4058]
mov eax, edx
shl edx, 4
sub eax, edx
add eax, eax
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4059]
add eax, 0x1a
mov byte [0x2f8ab4050], al
mov eax, dword [0x2f8ab4054]
sub ax, 0x79cc
mov word [0x2f8ab4052], ax
mov eax, dword [0x2f8ab4054]
mov edx, eax
mov eax, 0
sub eax, edx
shl eax, 5
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4050]
mov edx, 0x42
imul eax, edx
mov byte [0x2f8ab4059], al
movzx eax, byte [0x2f8ab4050]
and eax, 0x58
mov byte [0x2f8ab4059], al
movzx eax, byte [0x2f8ab4058]
mov edx, 0xffffffb3
imul eax, edx
mov byte [0x2f8ab4058], al
movzx eax, word [0x2f8ab4052]
add eax, 0x46
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4054]
and eax, 0x57
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4059]
movzx eax, al
or eax, 0x45fff74c
mov dword [0x2f8ab4054], eax
mov edx, dword [rbp - 4]
mov rax, qword [0x2f8ab54f0]
mov eax, dword [rax]
cmp edx, eax
jb 0x2f8aa4a61
movzx eax, byte [0x2f8ab4050]
or eax, 0xffffff9a
mov byte [0x2f8ab4058], al
mov eax, dword [0x2f8ab4060]
xor eax, 0xe3b275e6
mov dword [0x2f8ab4054], eax
mov edx, 0
mov ecx, 0xc3
mov rax, qword [sym.imp.USER32.dll_GetIconInfo]
call rax
mov eax, dword [0x2f8ab4054]
xor eax, 0x4ff9f1e2
mov dword [0x2f8ab4060], eax
mov eax, dword [0x2f8ab405c]
xor ax, 0xcaef
mov word [0x2f8ab4052], ax
movzx eax, word [0x2f8ab4052]
and eax, 0xffffffdd
mov byte [0x2f8ab4058], al
movzx eax, byte [0x2f8ab4058]
mov edx, 0x6e
imul eax, edx
mov byte [0x2f8ab4059], al
jmp 0x2f8aa4d55
movzx eax, word [0x2f8ab4052]
or eax, 0x28
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4050]
and eax, 0xffffff9b
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4060]
or eax, 0xad97978d
mov dword [0x2f8ab4060], eax
mov r9d, 0
mov r8d, 0
mov edx, 0
mov ecx, 0x7a
mov rax, qword [sym.imp.USER32.dll_RedrawWindow]
call rax
mov eax, dword [0x2f8ab4060]
xor ax, 0x5fad
mov word [0x2f8ab4052], ax
mov eax, dword [0x2f8ab4060]
imul eax, eax, 0x684695cd
mov dword [0x2f8ab4054], eax
mov eax, dword [0x2f8ab4060]
imul ax, ax, 0xda06
mov word [0x2f8ab4052], ax
movzx eax, byte [0x2f8ab4059]
movzx eax, al
imul eax, eax, 0x78d0febf
mov dword [0x2f8ab405c], eax
mov eax, dword [rbp - 4]
movsxd rdx, eax
mov rax, qword [rbp - 0x28]
add rax, rdx
mov edx, dword [rbp - 8]
movsxd rcx, edx
mov rdx, qword [rbp - 0x28]
add rdx, rcx
movzx eax, byte [rax]
mov byte [rdx], al
movzx eax, word [0x2f8ab4052]
and eax, 0xfffffffe
mov byte [0x2f8ab4050], al
mov edx, 0
mov ecx, 0x97
mov rax, qword [sym.imp.USER32.dll_GetIconInfo]
call rax
mov eax, dword [0x2f8ab4060]
or eax, 0xffffffcf
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4054]
or eax, 0x3a2319ac
mov dword [0x2f8ab4060], eax
mov ecx, 0x12
mov rax, qword [sym.imp.USER32.dll_IsWindow]
call rax
cmp dword [rbp - 0x18], 0
jne 0x2f8aa4c38
mov eax, dword [0x2f8ab4060]
and eax, 0xa6fa349a
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab4054]
and ax, 0xba36
mov word [0x2f8ab4052], ax
mov eax, dword [0x2f8ab405c]
or eax, 0xe697e8a
mov dword [0x2f8ab4060], eax
mov eax, dword [0x2f8ab405c]
add eax, 8
mov byte [0x2f8ab4059], al
movzx eax, byte [0x2f8ab4050]
and eax, 0x32
mov byte [0x2f8ab4050], al
movzx eax, word [0x2f8ab4052]
or eax, 0x2b
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4058]
movzx eax, al
add eax, 0x437c154f
mov dword [0x2f8ab4054], eax
movzx eax, byte [0x2f8ab4050]
movzx eax, al
or eax, 0x5364206e
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab405c]
or eax, 0x61
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4060]
or eax, 0x9ce8324
mov dword [0x2f8ab4060], eax
mov eax, dword [0x2f8ab4054]
and eax, 0x23
mov byte [0x2f8ab4050], al
mov dword [rbp - 0x38], 0x57
mov eax, dword [0x2f8ab4054]
sub eax, 0x6b5bd484
mov dword [0x2f8ab405c], eax
movzx eax, word [0x2f8ab4052]
movzx eax, ax
xor eax, 0x3d52d8d8
mov dword [0x2f8ab4060], eax
movzx eax, byte [0x2f8ab4058]
movzx eax, al
and ax, 0x5a19
mov word [0x2f8ab4052], ax
mov eax, dword [0x2f8ab4054]
sub eax, 0x2d
mov byte [0x2f8ab4058], al
movzx eax, word [0x2f8ab4052]
movzx eax, ax
sub eax, 0x54035c8d
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4050]
movzx eax, al
or eax, 0x6d846b0d
mov dword [0x2f8ab4060], eax
add dword [rbp - 4], 1
movzx eax, byte [0x2f8ab4058]
movzx eax, al
add eax, 0x2663aa05
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab405c]
and eax, 0x496913b7
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab4060]
add eax, 0x4e
mov byte [0x2f8ab4058], al
movzx eax, word [0x2f8ab4052]
add eax, 0x7d
mov byte [0x2f8ab4050], al
add dword [rbp - 8], 1
mov eax, dword [0x2f8ab4060]
or ax, 0x79af
mov word [0x2f8ab4052], ax
mov eax, dword [0x2f8ab4054]
xor eax, 0xffffff90
mov byte [0x2f8ab4058], al
mov eax, dword [0x2f8ab4054]
and eax, 0x36
mov byte [0x2f8ab4050], al
mov eax, dword [0x2f8ab405c]
xor eax, 0xfb81091d
mov dword [0x2f8ab4060], eax
mov rax, qword [rbp - 0x40]
sub rax, 1
mov qword [rbp - 0x40], rax
add dword [rbp - 0x10], 1
mov eax, dword [rbp - 0x10]
cmp eax, dword [rbp - 0x30]
jl 0x2f8aa48fb
movzx eax, byte [0x2f8ab4058]
mov edx, 0x69
imul eax, edx
mov byte [0x2f8ab4058], al
mov eax, dword [0x2f8ab4054]
mov edx, eax
mov eax, 0
sub eax, edx
shl eax, 5
mov byte [0x2f8ab4059], al
mov eax, dword [0x2f8ab4054]
sub ax, 0x8fd
mov word [0x2f8ab4052], ax
mov eax, dword [0x2f8ab405c]
and eax, 0x13
mov byte [0x2f8ab4050], al
mov eax, dword [0x2f8ab4060]
and eax, 0x7a
mov byte [0x2f8ab4050], al
add dword [rbp - 4], 1
mov ecx, 0x8f
mov rax, qword [sym.imp.USER32.dll_IsWindow]
call rax
movzx eax, word [0x2f8ab4052]
or eax, 0xffffffb9
mov byte [0x2f8ab4059], al
movzx eax, word [0x2f8ab4052]
movzx eax, ax
xor eax, 0xfc72535d
mov dword [0x2f8ab4060], eax
mov ecx, 0
mov rax, qword [sym.imp.USER32.dll_GetKeyboardState]
call rax
mov eax, dword [0x2f8ab4060]
mov edx, 0xffffff98
imul eax, edx
mov byte [0x2f8ab4058], al
mov eax, dword [0x2f8ab4060]
xor eax, 0xf952cabe
mov dword [0x2f8ab405c], eax
mov eax, dword [0x2f8ab4060]
sub eax, 0x27
mov byte [0x2f8ab4050], al
movzx eax, byte [0x2f8ab4059]
movzx eax, al
xor eax, 0xd9036061
mov dword [0x2f8ab4060], eax
mov edx, dword [rbp - 4]
mov rax, qword [0x2f8ab54f0]
mov eax, dword [rax]
cmp edx, eax
jb 0x2f8aa4ec5
movzx eax, byte [0x2f8ab4050]
movzx eax, al
imul eax, eax, 0xff645888
mov dword [0x2f8ab4054], eax
mov eax, dword [0x2f8ab4054]
imul eax, eax, 0x5109abb
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4059]
movzx eax, al
sub eax, 0x3a6de0a4
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4059]
and eax, 0xffffffe7
mov byte [0x2f8ab4050], al
mov eax, dword [0x2f8ab4060]
xor eax, 0x2c083053
mov dword [0x2f8ab405c], eax
movzx eax, byte [0x2f8ab4059]
movzx eax, al
imul eax, eax, 0xa9ade2a
mov dword [0x2f8ab405c], eax
jmp 0x2f8aa4ed2
mov rax, qword [rbp - 0x40]
test rax, rax
jne 0x2f8aa429e
mov rax, qword [rbp - 0x48]
sub rsp, 0xffffffffffffff80
pop rbp
ret